{"version":3,"file":"static/js/main.71265145.js","mappings":"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AqL5BuC,EAAqB,CACrB,IAAO,MACP,IAAO,MACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,OACP,IAAO,WACP,IAAO,MACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,SACP,IAAO,iBACP,IAAO,iBACP,IAAO,KACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,IACP,IAAO,OACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,IACP,IAAO,SACP,IAAO,MACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,KACP,IAAO,IACP,IAAO,gBACP,IAAO,SACP,IAAO,MACP,IAAO,SACP,IAAO,OACP,IAAO,eACP,IAAO,MACP,IAAO,IACP,IAAO,UACP,IAAO,OACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,UACP,IAAO,MACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,OACP,IAAO,OACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,OACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,SACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,OACP,IAAO,KACP,IAAO,OACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,SACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,KACP,IAAO,SACP,IAAO,IACP,IAAO,OACP,IAAO,2BACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,OACP,IAAO,KACP,IAAO,KACP,IAAO,SACP,IAAO,KACP,IAAO,OACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,qBACP,IAAO,KACP,IAAO,SACP,IAAO,MACP,IAAO,qBACP,IAAO,SACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,eACP,IAAO,OACP,IAAO,IACP,IAAO,UACP,IAAO,SACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,SACP,IAAO,gBACP,IAAO,UACP,IAAO,sBACP,IAAO,qBACP,IAAO,SACP,IAAO,KACP,IAAO,SACP,IAAO,qBACP,IAAO,SACP,IAAO,QCpWX,SAAW3C,GACP,IAAI4C,EAAiB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAC7G,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,M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I,UAAUwlD,aAAc,EAC5Bl3C,EAAkBunC,GAKnB0P,EAAYpuD,GAJZouD,EAAYpuD,EAASwI,KAAKk2C,IAChB71C,UAAYxgB,OAAOqhB,OAAO1J,EAAS6I,WAK1CulD,CACX,CAEA,IAUInB,GAAY,CAAEpC,SAAS,IAVC,WACxB,SAASyD,IACT,CAMA,OAJAA,EAAOzlD,UAAUgiD,QAAU,SAAUkC,EAAgBrO,EAAQoM,GAEzD,YADe,IAAXpM,IAAqBA,EAAS,CAAC,GAC5B5J,GAAOiY,EAAgBrO,EAClC,EACO4P,CACX,CAT4B,KAUYzD,SC9KpC0D,GAAa,CACb,SACA,QACA,cACA,4BACA,kCACA,wCACA,oCACA,uBACA,0BACA,0BACA,2CAEAC,GAAc,CACd,CAAEC,UAAW,OAAQtsB,SAAU,yBAC/B,CAAEssB,UAAW,aAActsB,SAAU,+BACrC,CAAEssB,UAAW,QAAStsB,SAAU,0BAChC,CAAEssB,UAAW,QAAStsB,SAAU,0BAChC,CAAEssB,UAAW,OAAQtsB,SAAU,qCAE/BusB,GAAW,CAAC,WACZ,UACA,cACA,aACA,YACA,SACA,UACA,SACA,UACA,eACA,iBACA,UACA,WACA,eACA,iBACA,gBACA,YACA,mBACA,gBACA,aACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,UACA,eACA,cACA,cACA,UACA,YACA,aACA,eACA,mBACA,cACA,YACA,cACA,cACA,YACA,eACA,YACA,SACA,WACA,aACA,aACA,UACA,SACA,YACA,aACA,aACA,eACA,qBACA,SACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,YACA,eACA,SACA,WACA,iBACA,YACA,eACA,eACA,UACA,mBACA,SACA,WACA,eACA,gBACA,iBACA,iBACA,qBACA,gBACA,eACA,cACA,iBAEAC,GAAoC,WACpC,SAASA,IACT,CA0EA,OAzEAA,EAAmBC,eAAiB,WAChC,MAAO,CACHC,UAAW,CACPC,KAAMP,GACNvuB,WAAYwuB,IAGxB,EACAG,EAAmBI,SAAW,SAAUhoE,GACpC,IAAI6N,EAAO4U,KAAKolD,iB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AAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,UAEdrW,EAASkT,YAAc,CAWnB2E,MAAO,SAAUjpE,EAAQkpE,EAAUpW,EAAYC,GAK3C,OAJIA,IACA/yD,EAASoxD,EAASoW,iBAAiBxnE,GACnCkpE,EAAW9X,EAASoW,iBAAiB0B,IAErCpW,EACO1B,EAASj/F,YAAY6tC,KAAYoxD,EAASj/F,YAAY+2G,GAE1DlpE,IAAWkpE,CACtB,EAUAC,SAAU,SAAUnpE,EAAQkpE,EAAUpW,EAAYC,GAK9C,OAJIA,IACA/yD,EAASoxD,EAASoW,iBAAiBxnE,GACnCkpE,EAAW9X,EAASoW,iBAAiB0B,KAEjC9X,EAASkT,YAAY2E,MAAMjpE,EAAQkpE,EAAUpW,EACzD,EASAsW,SAAU,SAAUppE,EAAQkpE,EAAUpW,GAClC,OAAIA,EACO1B,EAASj/F,YAAY6tC,GAAUoxD,EAASj/F,YAAY+2G,KAE3DznF,EAAAA,EAAAA,IAAkBue,KAClBA,OAAShxC,GAENgxC,EAASkpE,EACpB,EASAG,YAAa,SAAUrpE,EAAQkpE,EAAUpW,GACrC,OAAIA,EACO1B,EAASj/F,YAAY6tC,GAAUoxD,EAASj/F,YAAY+2G,GAExDlpE,EAASkpE,CACpB,EASAI,gBAAiB,SAAUtpE,EAAQkpE,EAAUpW,GACzC,OAAIA,EACO1B,EAASj/F,YAAY6tC,IAAWoxD,EAASj/F,YAAY+2G,KAE5DznF,EAAAA,EAAAA,IAAkBue,KAClBA,OAAShxC,GAENgxC,GAAUkpE,EACrB,EASAK,mBAAoB,SAAUvpE,EAAQkpE,EAAUpW,GAC5C,OAAIA,EACO1B,EAASj/F,YAAY6tC,IAAWoxD,EAASj/F,YAAY+2G,GAEzDlpE,GAAUkpE,CACrB,EAUAl+D,SAAU,SAAUhL,EAAQkpE,EAAUpW,EAAYC,GAK9C,OAJIA,IACA/yD,EAASoxD,EAASoW,iBAAiBxnE,GACnCkpE,EAAW9X,EAASoW,iBAAiB0B,IAErCpW,IACQrxE,EAAAA,EAAAA,IAAkBue,MAAYve,EAAAA,EAAAA,IAAkBynF,KACsB,IAA1E9X,EAASj/F,YAAY6tC,GAAQ51B,QAAQgnF,EAASj/F,YAAY+2G,MAE1DznF,EAAAA,EAAAA,IAAkBue,MAAYve,EAAAA,EAAAA,IAAkBynF,KACX,IAAzClpE,EAAO9wC,WAAWkb,QAAQ8+F,EAClC,EAQAM,eAAgB,SAAUxpE,EAAQkpE,EAAUpW,EAAYC,GAKpD,OAJIA,IACA/yD,EAASoxD,EAASoW,iBAAiBxnE,GACnCkpE,EAAW9X,EAASoW,iBAAiB0B,IAErCpW,IACQrxE,EAAAA,EAAAA,IAAkBue,MAAYve,EAAAA,EAAAA,IAAkBynF,KACsB,IAA1E9X,EAASj/F,YAAY6tC,GAAQ51B,QAAQgnF,EAASj/F,YAAY+2G,MAE1DznF,EAAAA,EAAAA,IAAkBue,MAAYve,EAAAA,EAAAA,IAAkBynF,KACX,IAAzClpE,EAAO9wC,WAAWkb,QAAQ8+F,EAClC,EAOAO,UAAW,SAAUzpE,GACjB,OAAkB,OAAXA,QAA8BhxC,IAAXgxC,CAC9B,EAOA0pE,OAAQ,SAAU1pE,GACd,OAAkB,OAAXA,QAA8BhxC,IAAXgxC,CAC9B,EAUA2pE,WAAY,SAAU3pE,EAAQkpE,EAAUpW,EAAYC,GAKhD,OAJIA,IACA/yD,EAASoxD,EAASoW,iBAAiBxnE,GACnCkpE,EAAW9X,EAASoW,iBAAiB0B,IAErCpW,EACO9yD,GAAUkpE,GAAY9X,EAASnnF,WAAWmnF,EAASj/F,YAAY6tC,GAASoxD,EAASj/F,YAAY+2G,IAEjGlpE,GAAUkpE,GAAY9X,EAASnnF,WAAW+1B,EAAQkpE,EAC7D,EAQAU,iBAAkB,SAAU5pE,EAAQkpE,EAAUpW,EAAYC,GAKtD,OAJIA,IACA/yD,EAASoxD,EAASoW,iBAAiBxnE,GACnCkpE,EAAW9X,EAASoW,iBAAiB0B,IAErCpW,EACO9yD,GAAUkpE,GAAY9X,EAASwU,cAAcxU,EAASj/F,YAAY6tC,GAASoxD,EAASj/F,YAAY+2G,IAEpGlpE,GAAUkpE,GAAY9X,EAASwU,cAAc5lE,EAAQkpE,EAChE,EAQAlD,KAAM,SAAUhmE,EAAQkpE,EAAUpW,EAAYC,GAK1C,OAJIA,IACA/yD,EAASoxD,EAASoW,iBAAiBxnE,GACnCkpE,EAAW9X,EAASoW,iBAAiB0B,IAErCpW,EACO9yD,GAAUkpE,GAAY9X,EAAS4U,KAAK5U,EAASj/F,YAAY6tC,GAASoxD,EAASj/F,YAAY+2G,IAE3FlpE,GAAUkpE,GAAY9X,EAAS4U,KAAKhmE,EAAQkpE,EACvD,EAOAW,QAAS,SAAU7pE,GACf,YAAkBhxC,IAAXgxC,GAAmC,KAAXA,CACnC,EAOA8pE,WAAY,SAAU9pE,GAClB,YAAkBhxC,IAAXgxC,GAAmC,KAAXA,CACnC,EAQA+pE,SAAU,SAAU/pE,EAAQkpE,EAAUpW,EAAYC,GAK9C,OAJIA,IACA/yD,EAASoxD,EAASoW,iBAAiBxnE,GACnCkpE,EAAW9X,EAASoW,iBAAiB0B,IAErCpW,GACQ9yD,GAA4B,mBAAXA,IAAyBkpE,GAA8B,kBAAXlpE,GACjEoxD,EAASyU,SAASzU,EAASj/F,YAAY6tC,GAASoxD,EAASj/F,YAAY+2G,KAErElpE,GAA4B,mBAAXA,IAAyBkpE,GAAY9X,EAASyU,SAAS7lE,EAAQkpE,EAC5F,EAUAc,SAAU,SAAUhqE,EAAQkpE,EAAUpW,EAAYC,GAK9C,OAJIA,IACA/yD,EAASoxD,EAASoW,iBAAiBxnE,GACnCkpE,EAAW9X,EAASoW,iBAAiB0B,IAErCpW,EACO9yD,GAAUkpE,GAAY9X,EAASlnF,SAASknF,EAASj/F,YAAY6tC,GAASoxD,EAASj/F,YAAY+2G,IAE/FlpE,GAAUkpE,GAAY9X,EAASlnF,SAAS81B,EAAQkpE,EAC3D,EAQAe,eAAgB,SAAUjqE,EAAQkpE,EAAUpW,EAAYC,GAKpD,OAJIA,IACA/yD,EAASoxD,EAASoW,iBAAiBxnE,GACnCkpE,EAAW9X,EAASoW,iBAAiB0B,IAErCpW,EACO9yD,GAAUkpE,GAAY9X,EAASuU,YAAYvU,EAASj/F,YAAY6tC,GAASoxD,EAASj/F,YAAY+2G,IAElGlpE,GAAUkpE,GAAY9X,EAASuU,YAAY3lE,EAAQkpE,EAC9D,EAOAgB,eAAgB,SAAUxV,GACtB,IAAIgT,EAAStW,EAAS4X,gBAAgBtU,GACtC,OAAIgT,EACStW,EAASkT,YAAYoD,GAG3BtW,EAAS/sE,WAAW,8CAC/B,EAOA4gF,gBAAiB,SAAUvQ,GACvB,IAAInhF,EAAK69E,EAASkT,YAAY5P,GAC9B,OAAInhF,GAGG69E,EAASkT,YAAY4F,eAAexV,EAC/C,GAKJtD,EAAS/gF,MAAQ,CAMbmlF,UAAW,SAAU2U,GAUjB,MATwB,kBAAbA,EACPA,EAAW/5F,KAAKC,MAAM85F,EAAU/Y,EAAS/gF,MAAM+5F,aAE1CD,aAAoB5nF,MACzB6uE,EAAS/gF,MAAMg6F,sBAAsBF,GAEZ,kBAAbA,GAAsC,OAAbA,GACrC/Y,EAAS/gF,MAAMi6F,qBAAqBH,GAEjCA,CACX,EAOAE,sBAAuB,SAAUp3B,GAC7B,IAAK,IAAIh6D,EAAI,EAAGA,EAAIg6D,EAAMlnF,OAAQktB,IACN,kBAAbg6D,EAAMh6D,IAAgC,OAAbg6D,EAAMh6D,GACtCm4E,EAAS/gF,MAAMi6F,qBAAqBr3B,EAAMh6D,IAGjB,kBAAbg6D,EAAMh6D,IAAoB,6BAA6B2C,KAAKq3D,EAAMh6D,IAI9Eg6D,EAAMh6D,GAAKm4E,EAAS/gF,MAAMmlF,UAAUviB,EAAMh6D,IAH1Cg6D,EAAMh6D,GAAKm4E,EAAS/gF,MAAM+5F,YAAY,GAAIn3B,EAAMh6D,GAM5D,EAOAqxF,qBAAsB,SAAU9Z,GAG5B,IAFA,IAAIn/F,EAEKgxB,EAAK,EAAGwyE,EADNliG,OAAOC,KAAK49F,GACSnuE,EAAKwyE,EAAO9oG,OAAQs2B,IAAM,CACtD,IAAI4E,EAAO4tE,EAAOxyE,GACd+uE,EAASnnF,WAAWgd,EAAM,QAIT,kBADrB51B,EAAQm/F,EAAKvpE,IAEL51B,aAAiBkxB,MACjB6uE,EAAS/gF,MAAMg6F,sBAAsBh5G,GAEhCA,GACL+/F,EAAS/gF,MAAMi6F,qBAAqBj5G,GAIxCm/F,EAAKvpE,GAAQmqE,EAAS/gF,MAAM+5F,YAAY5Z,EAAKvpE,GAAO51B,GAE5D,CACJ,EAQA+4G,YAAa,SAAU10G,EAAOrE,GAC1B,GAAqB,kBAAVA,EAAoB,CAE3B,IAAIk5G,EAAK,6CAA6C/lE,KAAKnzC,GACvDm5G,EAASpZ,EAASmE,iBAAmBnE,EAAS3uB,qBAAuB,KACzE,GAAI8nC,EACA,OAAOnZ,EAASkJ,UAAUmQ,WAAW,IAAIr3G,KAAKJ,SAASu3G,EAAG,GAAI,KAAMC,GAAQ,GAG3E,GAAI,sEAAsE5uF,KAAKvqB,GAAQ,CACxF,IAAIq5G,EAAQr5G,EAAM+Y,QAAQ,MAAQ,GAAK/Y,EAAM+Y,QAAQ,MAAQ,EACzDkQ,EAAMjpB,EAAM0W,MAAM,WACtB,GAAI2iG,EAAO,CACP,GAAIpwF,EAAI,GAAGlQ,QAAQ,MAAQ,EAAG,CAC1B,IAAIugG,EAAYrwF,EAAI,GAAGvS,MAAM,KAC7BuS,EAAI,GAAKqwF,EAAU,GACnBrwF,EAAI,GAAK,IAAIlnB,KAAK/B,GAAOu5G,qBAAqB17G,UAClD,MAEIorB,EAAI,GAAK,KAEbjpB,EAAQ+/F,EAASkJ,UACZmQ,WAAW,IAAIr3G,KAAKJ,SAASsnB,EAAI,GAAI,IAAKtnB,SAASsnB,EAAI,GAAI,IAAM,EAAGtnB,SAASsnB,EAAI,GAAI,IAAKtnB,SAASsnB,EAAI,GAAI,IAAKtnB,SAASsnB,EAAI,GAAI,IAAKtnB,SAASsnB,EAAI,GAAKA,EAAI,GAAK,KAAM,IAAKtnB,SAASsnB,EAAI,GAAI,KAAM82E,EAAS3uB,sBAAsB,EAC3O,KACK,CACD,IAAIooC,EAAY,IAAIz3G,KAAKJ,SAASsnB,EAAI,GAAI,IAAKtnB,SAASsnB,EAAI,GAAI,IAAM,EAAGtnB,SAASsnB,EAAI,GAAI,IAAKtnB,SAASsnB,EAAI,GAAI,IAAKtnB,SAASsnB,EAAI,GAAI,IAAKtnB,SAASsnB,EAAI,GAAKA,EAAI,GAAK,KAAM,KACxKwwF,EAAM93G,SAASsnB,EAAI,GAAI,IACvBywF,EAAO/3G,SAASsnB,EAAI,GAAI,IAC5B,GAAIsT,MAAMk9E,IAAQl9E,MAAMm9E,GACpB,OAAOF,EAEPx5G,EAAM+Y,QAAQ,MAAQ,EACtBygG,EAAU3yE,SAAS2yE,EAAUn8E,WAAao8E,EAAKD,EAAUxyE,aAAe0yE,GAGxEF,EAAU3yE,SAAS2yE,EAAUn8E,WAAao8E,EAAKD,EAAUxyE,aAAe0yE,GAE5E15G,EAAQ+/F,EAASkJ,UACZmQ,WAAWI,EAAWzZ,EAAS3uB,sBAAsB,EAC9D,CACqC,MAAjC2uB,EAAS3uB,uBACTpxE,EAAQ+/F,EAASkJ,UAAU0Q,cAAc35G,GAEjD,MACK,GAAI,sBAAsBuqB,KAAKvqB,GAAQ,CACpCipB,EAAMjpB,EAAM0W,MAAM,WACtB,OAAO,IAAI3U,KAAKJ,SAASsnB,EAAI,GAAI,IAAKtnB,SAASsnB,EAAI,GAAI,IAAM,EAAGtnB,SAASsnB,EAAI,GAAI,IACrF,CACJ,CACA,OAAOjpB,CACX,EAMAiqC,OAAQ,SAAUkrE,GACd,MAA2B,kBAAhBA,EAAS,GACTA,EAEJpV,EAAS/gF,MAAMmlF,UAAUgR,EACpC,EAMAhO,OAAQ,SAAUnnG,GAId,OAAgB,MAFJ,wDACMmzC,KAAKnzC,EAE3B,EAQAinG,SAAU,SAAUjnG,EAAOof,GACvB,OAAI2gF,EAASsK,cAAcrqG,GAChB+/F,EAAS/gF,MAAM46F,aAAa55G,EAAOof,GAE1Cpf,aAAiBkxB,MACV6uE,EAAS/gF,MAAM66F,cAAc75G,GAEpCA,aAAiB+B,KACVg+F,EAAS/gF,MAAM46F,aAAa,CAAEx5F,IAAKpgB,GAASof,GAAWgB,IAE3DpgB,CACX,EASA45G,aAAc,SAAUx5F,EAAKhB,GAGzB,IAFA,IAAIpf,EAEKgxB,EAAK,EAAG8oF,EADNx4G,OAAOC,KAAK6e,GACS4Q,EAAK8oF,EAAOp/G,OAAQs2B,IAAM,CACtD,IAAI4E,EAAOkkF,EAAO9oF,GAElB,IADAhxB,EAAQogB,EAAIwV,cACW7zB,KAAvB,CAGA,IAAI42B,EAAI34B,EAC6B,MAAjC+/F,EAAS3uB,qBACThxD,EAAIwV,GAAQmqE,EAASkJ,UAAUmQ,WAAWzgF,EAAG,MAAMkxE,UAGnDlxE,EAAI,IAAI52B,MAAM42B,EAAoC,KAAhConE,EAAS3uB,sBAC3BhxD,EAAIwV,GAAQmqE,EAASkJ,UAAUmQ,WAAWrZ,EAASkJ,UAAU0Q,cAAchhF,GAAI,MAAMkxE,SAPzF,CASJ,CACA,OAAOzpF,CACX,EAQAy5F,cAAe,SAAUz5F,GACrB,IAAK,IAAIwH,EAAI,EAAGA,EAAIxH,EAAI1lB,OAAQktB,IACxBm4E,EAASsK,cAAcjqF,EAAIwH,IAC3BxH,EAAIwH,GAAKm4E,EAAS/gF,MAAM46F,aAAax5F,EAAIwH,IAEpCxH,EAAIwH,aAAc7lB,OACvBqe,EAAIwH,GAAKm4E,EAAS/gF,MAAM46F,aAAa,CAAE34F,KAAMb,EAAIwH,KAAM3G,MAG/D,OAAOb,CACX,EAUAqjF,iBAAkB,SAAUhiG,EAAKzB,GAE7B,GAAY,UAARyB,GAAmBzB,EAAO,CAC1B,GAAqB,kBAAVA,EAAoB,CAE3B,IAAIk5G,EAAK,6CAA6C/lE,KAAKnzC,GAC3D,GAAIk5G,EACAl5G,EAAQ+/F,EAASkJ,UAAUmQ,WAAW,IAAIr3G,KAAKJ,SAASu3G,EAAG,GAAI,KAAM,MAAM,QAG1E,GAAI,sEAAsE3uF,KAAKvqB,GAAQ,CACxF,IAAIipB,EAAMjpB,EAAM0W,MAAM,UACtB1W,EAAQ+/F,EAASkJ,UACZmQ,WAAW,IAAIr3G,KAAKJ,SAASsnB,EAAI,GAAI,IAAKtnB,SAASsnB,EAAI,GAAI,IAAM,EAAGtnB,SAASsnB,EAAI,GAAI,IAAKtnB,SAASsnB,EAAI,GAAI,IAAKtnB,SAASsnB,EAAI,GAAI,IAAKtnB,SAASsnB,EAAI,GAAI,KAAM,MAAM,EAC5K,CACJ,CACA,GAAIjpB,aAAiB+B,KAEjB,OADA/B,EAAQ+/F,EAASkJ,UAAU0Q,cAAc35G,GACH,OAAlC+/F,EAAS3uB,qBACF2uB,EAASkJ,UAAUmQ,WAAWrZ,EAASkJ,UAAU0Q,cAAc35G,GAAQ,MAAM6pG,UAGpF7pG,EAAQ+/F,EAASkJ,UAAUmQ,WAAWp5G,EAAUA,EAAMwG,oBAAsB,GAAM,EAC5Eu5F,EAAS3uB,sBAAuB,IACzBy4B,QAGzB,CACA,OAAO7pG,CACX,GAKJ+/F,EAASkJ,UAAY,CACjB0Q,cAAe,SAAUp+F,GACrB,OAAO,IAAIxZ,MAAMwZ,EAAqC,IAA5BA,EAAM/U,oBACpC,EACAuzG,MAAO,SAAUx+F,GACb,OAAO,IAAIxZ,MAAMwZ,EAAqC,IAA5BA,EAAM/U,oBACpC,EACA4yG,WAAY,SAAU79F,EAAOmqC,EAAQs0D,GACjC,GAAe,OAAXt0D,EACA,OAAOnqC,EAEX,IAAI0+F,EAAOD,EAAMja,EAASkJ,UAAU8Q,MAAMx+F,GAASA,EACnD,OAAO,IAAIxZ,MAAMk4G,EAAiB,KAATv0D,EAC7B,EACAwjD,YAAa,SAAU3tF,GACnB,IAAI2+F,EAAS3+F,EACT+gB,GAAY49E,EAAO1zG,oBACnB2zG,EAAmB79E,GAAY,EAAI,IAAM,IACzC89E,EAAc,SAAUjrF,GACxB,IAAIkrF,EAAO/1F,KAAKiU,MAAMjU,KAAK8Z,IAAIjP,IAC/B,OAAQkrF,EAAO,GAAK,IAAM,IAAMA,CACpC,EAOA,OANUH,EAAOl1G,cAAgB,IAAMo1G,EAAYF,EAAOj1G,WAAa,GAAK,IAAMm1G,EAAYF,EAAO/0G,WACjG,IAAMi1G,EAAYF,EAAO78E,YACzB,IAAM+8E,EAAYF,EAAOlzE,cACzB,IAAMozE,EAAYF,EAAOjoC,cACzBkoC,EAAmBC,EAAY99E,EAAW,IAC1C,IAAM89E,EAAY99E,EAAW,GAErC,GAEGyjE,CACX,CAt0E8B,sHCR9B,IAAI1/E,EAAc,GACdi6F,EAAa,GACbpyF,EAAU,GACVqyF,EAAc,WACdC,EAAgB,GAYb,SAASC,EAAkBh+C,EAASlwD,EAAOmuG,EAAejZ,EAAYkZ,GAKzE,IAAIpxG,EAEJ,GANA8W,GAAe4rC,OAAOC,aAAauQ,GACnC9pC,YAAW,WACPtS,EAAc,EAClB,GAAG,KAEHA,EAAcohF,EAAaphF,EAAYvf,cAAgBuf,EACnDm6F,IAAkBG,GAAaL,IAAej6F,EAAa,CAC3D,IAAK,IAAIuH,EAAI,EAAGA,EAAIM,EAAQxtB,OAAQktB,IAChC,GAAIM,EAAQN,GAAGyxB,UAAUM,SAAS4gE,GAAc,CAC5ChxG,EAAQqe,EACR,KACJ,CAGJ,OAAOM,EADP3e,GAAgB,GACQ2e,EAAQ3e,GAAS2e,EAAQ,EACrD,CAEI,IAAI7R,EAAY9J,EACZquG,EAAYv6F,EAAY3lB,OAExBmT,OAAO,EAEP+Z,EADJ8yF,EAAgBA,EAAgBA,EAAgB,EAAI,EAEpDxyF,EAAU,GACV,GACQN,IAAMvR,EAAU3b,SAChBktB,GAAK,GAQT/Z,EAAOwI,EALH9M,GADO,IAAPqe,EACQ,EAGAA,IAGL65E,EAAa5zF,EAAK+uE,UAAU97E,cAAgB+M,EAAK+uE,WAC/Cp4D,OAAO,EAAGo2F,KAAev6F,GAC9B6H,EAAQhmB,KAAKmU,EAAU9M,IAE3Bqe,UACKA,IAAM8yF,GAGf,OAFAJ,EAAaj6F,EACbm6F,EAAgBG,EACTzyF,EAAQ,EAEvB,CAUO,SAAS2yF,EAAOnuB,EAAUngF,EAAOuuG,EAAYrZ,EAAY3lG,EAAYwJ,EAAQvI,GAChF,IAAIsZ,EAAY9J,EAChBk1F,OAA4B9jG,IAAf8jG,GAA2C,OAAfA,GAAsBA,EAC/D,IAAIsZ,EAAW,CAAEltG,KAAM,KAAMtE,MAAO,MACpC,GAAImjF,GAAYA,EAAShyF,OAAQ,CAC7B,IAAIkgH,EAAYluB,EAAShyF,OACrBsgH,EAAWvZ,EAAa/U,EAASuuB,oBAAsBvuB,EAC3DsuB,EAA4BA,EAqCnB9hG,QAAQ,sBAAuB,QAZxC,IAxBA,IAAIsY,EAAU,SAAU5J,EAAGszF,GACvB,IAEIC,EAFAttG,EAAOqtG,EAAUtzF,GACjBptB,OAAO,EAEX,GAAI+R,GAASzQ,EAAY,CACrB,IAAIs/G,EAAevtG,EACfwtG,EAAe/1G,EAAO9K,KAAKkc,MAAM,KACrC5a,EAAW8E,QAAO,SAAU0H,GACxB4oB,MAAMpP,UAAUhC,MAAMqC,KAAKk5F,GAAc75G,SAAQ,SAAUxB,IAE1C,WAATjD,IAAuBuL,EAAKgzG,WAA0E,IAA9DF,EAAa7xC,YAAY1rE,WAAWkb,QAAQzQ,EAAKtI,KAAmBo7G,EAAav3D,aAAa,gBAAkBv7C,EAAKhD,EAAOtF,OAAOnC,YAAuB,WAATd,IAA4E,IAAvDq+G,EAAa7xC,YAAY1rE,WAAWkb,QAAQzQ,MAC1P6yG,EAAuB,WAATp+G,EAAoBuL,EAAKtI,GAASsI,EAExD,GACJ,GACJ,CAGA,GAFA9N,EAAOsB,GAAcq/G,GAAe1Z,EAAa0Z,EAAYF,oBAAsBE,GAAajiG,QAAQ,aAAc,KAAOuoF,EAAa5zF,EAAK07D,YAAY0xC,oBAAsBptG,EAAK07D,aAAarwD,QAAQ,aAAc,IAErM,UAAf4hG,GAA0BtgH,IAASwgH,GAA6B,eAAfF,GAA+BtgH,EAAKgqB,OAAO,EAAGo2F,KAAeI,GAA6B,aAAfF,GAA6BtgH,EAAKgqB,OAAOhqB,EAAKE,OAASsgH,EAAStgH,UAAYsgH,GAA6B,aAAfF,GAA6B,IAAIrvF,OAAOuvF,EAAU,KAAKzwF,KAAK/vB,GAGnR,OAFAugH,EAASltG,KAAOA,EAChBktG,EAASxxG,MAAQqe,EACV,CAAE5nB,MAAO,CAAE6N,KAAMA,EAAMtE,MAAOqe,GAE7C,EACSA,EAAI,EAAGszF,EAAY7kG,EAAWuR,EAAIszF,EAAUxgH,OAAQktB,IAAK,CAC9D,IAAI2zF,EAAU/pF,EAAQ5J,EAAGszF,GACzB,GAAuB,kBAAZK,EACP,OAAOA,EAAQv7G,KACvB,CACA,OAAO+6G,CAEX,CACA,OAAOA,CACX,CAKO,SAASS,EAA6Bb,GACrCH,IAAkBG,IAClBH,EAAgB,GAChBF,EAAa,GACbj6F,EAAc,GACd6H,EAAU,GAElB,4KChII85B,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAazCC,EAA0C,SAAUC,EAAYzB,EAAQn/C,EAAK6gD,GAC7E,IAA2H3pB,EAAvHD,EAAI5X,UAAUpmB,OAAQ4O,EAAIovB,EAAI,EAAIkoB,EAAkB,OAAT0B,EAAgBA,EAAOhhD,OAAOihD,yBAAyB3B,EAAQn/C,GAAO6gD,EACrH,GAAuB,kBAAZ/gC,SAAoD,oBAArBA,QAAQihC,SAAyBl5C,EAAIiY,QAAQihC,SAASH,EAAYzB,EAAQn/C,EAAK6gD,QACpH,IAAK,IAAI16B,EAAIy6B,EAAW3nD,OAAS,EAAGktB,GAAK,EAAGA,KAAS+Q,EAAI0pB,EAAWz6B,MAAIte,GAAKovB,EAAI,EAAIC,EAAErvB,GAAKovB,EAAI,EAAIC,EAAEioB,EAAQn/C,EAAK6H,GAAKqvB,EAAEioB,EAAQn/C,KAAS6H,GAChJ,OAAOovB,EAAI,GAAKpvB,GAAKhI,OAAOs1C,eAAegK,EAAQn/C,EAAK6H,GAAIA,CAChE,EAOImyG,EAA+B,SAAUvtF,GAEzC,SAASutF,IACL,OAAkB,OAAXvtF,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAgBA,OAnBAu/B,EAAUy5D,EAAevtF,GAIzBk0B,EAAW,EACPzB,EAAAA,EAAAA,OACD86D,EAAc35F,UAAW,YAAQ,GACpCsgC,EAAW,EACPzB,EAAAA,EAAAA,OACD86D,EAAc35F,UAAW,aAAS,GACrCsgC,EAAW,EACPzB,EAAAA,EAAAA,OACD86D,EAAc35F,UAAW,eAAW,GACvCsgC,EAAW,EACPzB,EAAAA,EAAAA,OACD86D,EAAc35F,UAAW,eAAW,GACvCsgC,EAAW,EACPzB,EAAAA,EAAAA,OACD86D,EAAc35F,UAAW,sBAAkB,GACvC25F,CACX,CArBmC,CAqBjC9yD,EAAAA,IAES+yD,EAAsB,CAC7Bt1C,KAAM,iBACNu1C,IAAK,QACL3yC,QAAS,YACT0hC,SAAU,WACVkR,MAAO,UACPC,OAAQ,WACRC,UAAW,eACX5nF,MAAO,eACPmhE,GAAI,cACJt1F,MAAO,oBACPvE,SAAU,aACVugH,SAAU,cAeVC,EAA8B,SAAU9tF,GASxC,SAAS8tF,EAAa74F,EAAS1d,GAC3B,IAAIgtB,EAAQvE,EAAO/L,KAAKM,KAAMU,EAAS1d,IAAYgd,KAQnD,OAPAgQ,EAAMmiD,eAAgB,EACtBniD,EAAMy7C,WAAY,EAClBz7C,EAAMwpF,iBAAkB,EACxBxpF,EAAMypF,qBAAsB,EAC5BzpF,EAAM0pF,cAAe,EACrB1pF,EAAM2pF,sBAAuB,EAC7B3pF,EAAM4pF,cAAe,EACd5pF,CACX,CAgvCA,OAlwCAuvB,EAAUg6D,EAAc9tF,GAmBxB8tF,EAAal6F,UAAUw6F,cAAgB,SAAU1mF,EAAMkvB,EAASC,GAC5D,IAAIw3D,EAAc,IAAIj7G,OAClBk7G,EAAc,IAAIl7G,OAItBi7G,EAAqB3mF,GAASkvB,EAAiBlvB,GAC/C4mF,EAAqB5mF,GAASmvB,EAAiBnvB,GAC/C,IAAIttB,EAAO,IAAIhH,OAGf,OAFAgH,EAAKi0G,YAAcA,EACnBj0G,EAAKk0G,YAAcA,EACZl0G,CACX,EACA0zG,EAAal6F,UAAU26F,eAAiB,SAAUjiH,EAAMinG,EAAYC,GAChE,IAAI1hG,EAAQ,KASZ,OARKowB,EAAAA,EAAAA,IAAkB3N,KAAKi6F,YAEpB18G,EADAyhG,EACQh/E,KAAKk6F,eAAeniH,GAAM,EAAMknG,GAGhCj/E,KAAKk6F,eAAeniH,GAAM,EAAOknG,IAG1C1hG,CACX,EACAg8G,EAAal6F,UAAU66F,eAAiB,SAAUniH,EAAMinG,EAAYC,EAAckb,GAC9E,IAAInqF,EAAQhQ,KACRziB,EAAQ,KACR48G,IACA58G,EAAQxF,GAEZ,IAAIsB,EAAa2mB,KAAKi6F,SAClBp3G,EAASmd,KAAKnd,OACdvI,EAAO0lB,KAAKo6F,WAAW/gH,GAAYghH,OACvC,GAAa,WAAT//G,GAA8B,WAATA,GAA8B,YAATA,EAC1C,IAAK,IAAIi0B,EAAK,EAAG+rF,EAAejhH,EAAYk1B,EAAK+rF,EAAariH,OAAQs2B,IAAM,CACxE,IAAInjB,EAAOkvG,EAAa/rF,IACnBZ,EAAAA,EAAAA,IAAkBviB,KACf6zF,EACA1hG,EAAQyiB,KAAKu6F,eAAe/wD,OAAOp+C,GAAOrT,EAAMinG,GAG5CA,EACIh/E,KAAKw6F,gBAAgBhxD,OAAOp+C,GAAOrT,KACnCwF,EAAQyiB,KAAKy6F,aAAajxD,OAAOp+C,GAAOrT,EAAMinG,IAI9Ch/E,KAAK06F,mBAAmBlxD,OAAOp+C,GAAOrT,KACtCwF,EAAQyiB,KAAKy6F,aAAajxD,OAAOp+C,GAAOrT,EAAMinG,EAAYmb,IAK9E,MAGA,GAAInb,EACA3lG,EAAW8E,QAAO,SAAUiN,GACxB,IAAIuvG,GAAYvtF,EAAAA,EAAAA,IAASvqB,EAAOtF,MAAO6N,KAClCuiB,EAAAA,EAAAA,IAAkBgtF,IAAc3qF,EAAMwqF,iBAAgBptF,EAAAA,EAAAA,IAASvqB,EAAO9K,KAAMqT,GAAMhQ,WAAYrD,KAC/FwF,GAAQ6vB,EAAAA,EAAAA,IAASvqB,EAAOtF,MAAO6N,GAEvC,SAGA,GAAI+uG,EAAe,CACf,IAAIS,EAAiB,KACrBA,EAAiBr9G,EACjBlE,EAAW8E,QAAO,SAAUiN,GACxB,IAAIuvG,GAAYvtF,EAAAA,EAAAA,IAASvqB,EAAOtF,MAAO6N,IAClCuiB,EAAAA,EAAAA,IAAkBgtF,KAAehtF,EAAAA,EAAAA,IAAkBpwB,IAAUo9G,EAAUv/G,aAAew/G,EAAex/G,aACtGmC,GAAQ6vB,EAAAA,EAAAA,IAASvqB,EAAO9K,KAAMqT,GAEtC,GACJ,MAEI/R,EAAW8E,QAAO,SAAUiN,GACpB4kB,EAAM0qF,oBAAmBttF,EAAAA,EAAAA,IAASvqB,EAAO9K,KAAMqT,GAAOrT,KACtDwF,GAAQ6vB,EAAAA,EAAAA,IAASvqB,EAAOtF,MAAO6N,GAEvC,IAIZ,OAAO7N,CACX,EACAg8G,EAAal6F,UAAUk7F,eAAiB,SAAUnvG,EAAMrT,EAAMinG,GAC1D,IAAI6b,EAAWvd,EAAAA,EAASoW,iBAAiBlqD,OAAOp+C,IAC5C0vG,EAAWxd,EAAAA,EAASoW,iBAAiB37G,EAAKqD,YAC1CmC,EAAQ,KAWZ,OAVIyhG,EACIh/E,KAAKw6F,gBAAgBK,EAAUC,KAC/Bv9G,EAAQyiB,KAAKy6F,aAAajxD,OAAOp+C,GAAOrT,EAAMinG,IAI9Ch/E,KAAK06F,mBAAmBlxD,OAAOp+C,GAAOrT,KACtCwF,EAAQyiB,KAAKy6F,aAAajxD,OAAOp+C,GAAOrT,EAAMinG,IAG/CzhG,CACX,EACAg8G,EAAal6F,UAAUm7F,gBAAkB,SAAUpvG,EAAMrT,GACrD,OAAOyxD,OAAOp+C,GAAM/M,gBAAkBtG,EAAKqD,WAAWiD,aAC1D,EACAk7G,EAAal6F,UAAUq7F,mBAAqB,SAAUtvG,EAAMrT,GACxD,OAAOyxD,OAAOp+C,KAAUrT,EAAKqD,UACjC,EACAm+G,EAAal6F,UAAUo7F,aAAe,SAAUI,EAAUE,EAAW/b,EAAYmb,GAC7E,IACI9gH,EAAa2mB,KAAKi6F,SAClB3/G,EAAO0lB,KAAKo6F,WAAW/gH,GAAYghH,OAYvC,OAXIF,EACQU,EAASz/G,WAGb4jG,EACiB,WAAT1kG,EAAoBkvD,OAAOqxD,GAAY76F,KAAKysE,kBAAkBjjC,OAAOqxD,IAG5D,WAATvgH,EAAoBygH,EAAY/6F,KAAKysE,kBAAkBsuB,EAI3E,EACAxB,EAAal6F,UAAU27F,iBAAmB,SAAUC,GAChD,IAAIC,GAAgB,EACpB,GAA4B,oBAAjBD,GAA+BA,EACtC,IACIC,KAAiBpiE,EAAAA,EAAAA,IAAUmiE,EAAcr4F,UAAU3qB,MACvD,CACA,MAAOkjH,GACHD,GAAgB,CACpB,CAEJ,OAAOA,CACX,EACA3B,EAAal6F,UAAU+7F,WAAa,SAAUC,GAC1C,IAAIvkE,EAA+B,YAAzB92B,KAAK47B,gBAAgC57B,KAAKs7F,UAAYt7F,KAAKi5B,KACrE,GAA+B,qBAA3Bj5B,KAAKu7F,mBAA2E,mBAA/Bv7F,KAAKw7F,sBAA4C,CAClG,IAAIhlG,EAAW6kG,EAAgBr7F,KAAKw7F,sBAAwBx7F,KAAKu7F,kBAC7DE,OAAiB,EACjB/3C,EAAa23C,EAAgBr7F,KAAK07F,wBAA0B17F,KAAK27F,oBACrE7kE,EAAIvlB,UAAY,GAChB,IAAIqqF,EAAgB57F,KAAKg7F,iBAAiBxkG,GAEtCilG,EADoB,oBAAbjlG,GAA2BolG,GACjBv6C,EAAAA,EAAAA,KAAQ3oB,EAAAA,EAAAA,IAAOliC,EAAUoM,UAAU2O,UAAU0pC,SAG7CoG,EAAAA,EAAAA,IAAQ7qD,GAE7B,IAAIy2C,EAAeouD,EAAgB,wBAA0B,oBAEzDQ,OAAgB,EAOpB,IALIA,EADC77F,KAAK87F,SAAgC,oBAAbtlG,EACTilG,EAAe,CAAC,EAAGz7F,KAAMitC,EAAcyW,EAAY1jD,KAAKwqC,iBAAkB,MAG1EixD,EAAe,CAAC,EAAGz7F,KAAMitC,EAAcyW,EAAY1jD,KAAKwqC,iBAAkB,KAAM1T,KAE/E+kE,EAAc5jH,OAAS,EACxC,IAAK,IAAIktB,EAAI,EAAGA,EAAI02F,EAAc5jH,OAAQktB,IAAK,CAC3C,GAA6B,YAAzBnF,KAAK47B,iBAAkD,sBAAjBqR,EACtC,GAAkC,UAA9B4uD,EAAc12F,GAAGulD,UACbqxC,EAAS/7F,KAAK4Q,cAAc,OACzBk2C,YAAc+0C,EAAc12F,GAAG2hD,YACtCi1C,EAAOnlE,UAAUzB,IAAI,cACrB4mE,EAAOzlE,aAAa,OAAQ,UAC5BQ,EAAI3lB,YAAY4qF,QAGhBF,EAAc12F,GAAGyxB,UAAUzB,IAAI,sBAC/B2B,EAAI3lB,YAAY0qF,EAAc12F,SAIlC2xB,EAAI3lB,YAAY0qF,EAAc12F,GAEtC,CAEJnF,KAAK+sC,sBACT,KACK,CACD,IACIivD,EAAkB,IAAIxgD,EAAAA,GAAKx7C,KAAKi8F,gBAAiB,CAAC,EAAGj8F,KAAKwpB,QACD,KAAzDwyE,EAAgB//C,YAAY,0BAAwF,KAArD+/C,EAAgB//C,YAAY,qBAC3Fj8C,KAAK+hE,KAAOi6B,EAGZh8F,KAAK+hE,KAAO,IAAIvmB,EAAAA,GAA8B,YAAzBx7C,KAAK47B,gBAAgC,UAC7B,YAAzB57B,KAAK47B,gBAAgC,UAAY,YAPxC,CAAE2/D,kBAAmB,mBAAoBC,sBAAuB,kBAOCx7F,KAAKwpB,QAEvF,IAGQuyE,EAHJx1C,EAAU80C,EACVr7F,KAAK+hE,KAAK9lB,YAAY,yBAA2Bj8C,KAAK+hE,KAAK9lB,YAAY,qBAC3E,GAA6B,YAAzBj8C,KAAK47B,iBACDmgE,EAAS/7F,KAAK4Q,cAAc,OACzBk2C,YAAcP,EACrBzvB,EAAI3lB,YAAY4qF,GAChBA,EAAOnlE,UAAUzB,IAAI,cACrB4mE,EAAOzlE,aAAa,OAAQ,eAGvB3oB,EAAAA,EAAAA,IAAkBmpB,KACnBA,EAAIvlB,UAAYg1C,EAG5B,CACJ,EACAgzC,EAAal6F,UAAU48F,cAAgB,WACnC,MAAO,gBACX,EACA1C,EAAal6F,UAAU68F,eAAiB,SAAU3+G,GAE9C,OADWyiB,KAAKk6F,eAAe38G,GAAO,GAAO,GAAO,EAExD,EACAg8G,EAAal6F,UAAUotE,kBAAoB,SAAUlvF,GACjD,GAAIyiB,KAAKi6F,UAAYj6F,KAAKi6F,SAAShiH,OAAQ,CACvC,IAAImT,OAAO,EAOX,GALIA,EADA4U,KAAKo2B,WAAW+lE,kBAAoBn8F,KAAKo2B,WAAW74C,OAASyiB,KAAKo2B,WAAW74C,iBAAiBkxB,OAASzO,KAAKo2B,WAAW74C,MAAMtF,OAAS,EAC/H+nB,KAAKo6F,WAAWp6F,KAAKo2B,WAAW74C,OAGhCyiB,KAAKo6F,WAAWp6F,KAAKi6F,UAEsD,kBAA3E7sF,EAAAA,EAAAA,IAAUpN,KAAKnd,OAAOtF,MAAQyiB,KAAKnd,OAAOtF,MAAQ,QAAU6N,EAAKA,OACrD,WAAhBA,EAAKivG,OACR,OAAOp0E,WAAW1oC,GAEtB,GAAsF,mBAA3E6vB,EAAAA,EAAAA,IAAUpN,KAAKnd,OAAOtF,MAAQyiB,KAAKnd,OAAOtF,MAAQ,QAAU6N,EAAKA,OACrD,YAAhBA,EAAKivG,OACR,MAAmB,SAAV98G,GAAsB,GAAKA,IAAU,MAEtD,CACA,OAAOA,CACX,EAMAg8G,EAAal6F,UAAUirE,aAAe,YAC7B38D,EAAAA,EAAAA,IAAkB3N,KAAKo8F,qBACpBp8F,KAAKi5B,MACLj5B,KAAKo8F,kBAAkB38G,KAAKugB,KAAKi5B,MAEjCj5B,KAAK2qC,WACLlU,EAAAA,EAAAA,IAASz2B,KAAKo8F,kBAAmBnD,EAAoBC,MAGrD/hE,EAAAA,EAAAA,IAAYn3B,KAAKo8F,kBAAmBnD,EAAoBC,KAGpE,EAMAK,EAAal6F,UAAUowC,WAAa,SAAUh0D,GAG1C,GAFAukB,KAAKq8F,WAAY,EACjBr8F,KAAK07F,wBAA+B17F,KAAKhd,QAAQ4B,GA9RpB,wBA+RA,OAAzBob,KAAKhd,QAAQmzC,QAAkB,CAC/B,IAAImmE,EAAc9wB,EAAAA,GAAS+wB,sBAAsBv8F,KAAKhd,SACtDgd,KAAK26B,cAAc,CAAE93C,OAAQ,CAAE9K,KAAM,OAAQwF,MAAO,UAAY,GAChEyiB,KAAKw8F,UAAUF,EAAat8F,KAAKnd,OACrC,MACK,GAA6B,WAAzBmd,KAAKhd,QAAQmzC,QAAsB,EACvBn2B,KAAK3mB,sBAAsBo1B,MAASzO,KAAK3mB,WAAWpB,OAAS,IACvE01B,EAAAA,EAAAA,IAAkB3N,KAAK3mB,aAIrB2mB,KAAKy5F,qBACVz5F,KAAKy8F,YAAYz8F,KAAK3mB,WAAY2mB,KAAKnd,OAAQmd,KAAKo8E,OAHpDp8E,KAAK08F,qBAKb,MAEI18F,KAAKy8F,YAAYz8F,KAAK3mB,WAAY2mB,KAAKnd,OAAQmd,KAAKo8E,MAAO3gG,EAEnE,EAMA89G,EAAal6F,UAAUytC,eAAiB,WACpC,OAAO9sC,KAAKotC,aAAa,GAC7B,EAOAmsD,EAAal6F,UAAUs9F,oBAAsB,SAAUp/G,GAGnD,IAFA,IAAIq/G,EAAc,CAAC,QAAS,QAAS,KAAM,OAAQ,gBAAiB,oBAAqB,iBACrF32C,EAAO,CAAC,EACHhnD,EAAI,EAAGA,EAAIe,KAAKhd,QAAQwzC,WAAWv+C,OAAQgnB,KACc,IAA1D29F,EAAYtmG,QAAQ0J,KAAKhd,QAAQwzC,WAAWv3B,GAAG7mB,OACpB,iBAAzB4nB,KAAK47B,iBAA0E,aAApC57B,KAAKhd,QAAQwzC,WAAWv3B,GAAG7mB,OACxE6tE,EAAKjmD,KAAKhd,QAAQwzC,WAAWv3B,GAAG7mB,MAAQ4nB,KAAKhd,QAAQo+C,aAAaphC,KAAKhd,QAAQwzC,WAAWv3B,GAAG7mB,QAGrGu2B,EAAAA,EAAAA,IAAOs3C,EAAM1oE,EAAO0oE,GACpBjmD,KAAK26B,cAAc,CAAE2vB,eAAgBrE,IAAQ,EACjD,EACAszC,EAAal6F,UAAUq9F,oBAAsB,WACzC,IAAI15G,EAAUgd,KAAKhd,QACfH,EAAS,CAAEtF,MAAO,QAASxF,KAAM,QACjCukH,EAAc,GACdh/G,EAAQ0F,EAAQ8tB,iBAAiB,mBACjCmH,EAASj1B,EAAQ8tB,iBAAiB,iBAEtC,GADA9Q,KAAK68F,kBAAkBP,EAAarkF,EAAQp1B,GACxCvF,EAAMrF,OAAQ,CACd,IAAK,IAAIktB,EAAI,EAAGA,EAAI7nB,EAAMrF,OAAQktB,IAAK,CACnC,IAAI/Z,EAAO9N,EAAM6nB,GACb23F,EAAc,CAAC,EACnBA,EAAYj6G,EAAO9K,MAAQqT,EAAKxS,MAChCkkH,EAAYjE,UAAW,EACvB,IAAIzoF,EAAQhlB,EAAK0lB,iBAAiB,UAClCwrF,EAAY78G,KAAKq9G,GACjB98F,KAAK68F,kBAAkBP,EAAalsF,EAAOvtB,EAC/C,CACAG,EAAQ8tB,iBAAiB,gBAC7B,CACA9Q,KAAK+8F,aAAal6G,EAAO9K,KAAM8K,EAAOtF,MAAOyiB,KAAKnd,OAAOm6G,QAASh9F,KAAKnd,OAAOynE,eAAgBtqD,KAAKnd,OAAO+jE,SAC1G5mD,KAAKw8F,UAAUF,EAAaz5G,EAChC,EACA02G,EAAal6F,UAAU09F,aAAe,SAAUhlH,EAAMwF,EAAOy/G,EAAS1yC,EAAgB1D,GAClF,IAAIhlE,EAAQ,CACR,OAAU,CACN7J,KAAMA,EACNwF,MAAOA,EACPy/G,SAAUrvF,EAAAA,EAAAA,IAAkBqvF,GAAqBh9F,KAAKnd,QAAUmd,KAAKnd,OAAOm6G,QAArCA,EACvC1yC,gBAAiB38C,EAAAA,EAAAA,IAAkB28C,GAAmCtqD,KAAKnd,QAAUmd,KAAKnd,OAAOynE,eAA5CA,EACrD1D,SAAUj5C,EAAAA,EAAAA,IAAkBi5C,GAAqB5mD,KAAKnd,QAAUmd,KAAKnd,OAAO+jE,QAArCA,IAG/C5mD,KAAK26B,cAAc/4C,GAAO,EAC9B,EACA23G,EAAal6F,UAAUw9F,kBAAoB,SAAU/yG,EAAO4W,EAAS7d,GACjE,IAAK,IAAI0rB,EAAK,EAAGif,EAAY9sB,EAAS6N,EAAKif,EAAUv1C,OAAQs2B,IAAM,CAC/D,IAAI0J,EAASuV,EAAUjf,GACnBmuE,EAAO,CAAC,EACZA,EAAK75F,EAAO9K,MAAQkgC,EAAOkiD,UAC3BuiB,EAAK75F,EAAOtF,QAAUowB,EAAAA,EAAAA,IAAkBsK,EAAOmpB,aAAav+C,EAAOtF,QAC3B06B,EAAOkiD,UAA3CliD,EAAOmpB,aAAav+C,EAAOtF,OAC/BuM,EAAMrK,KAAKi9F,EACf,CACJ,EAOA6c,EAAal6F,UAAU+rC,UAAY,WAE/BprC,KAAKi9F,aAAe,EACpBj9F,KAAKo8F,kBAAoB,GACzBp8F,KAAKk9F,aAAc,EACnBl9F,KAAKm9F,eAAgB,EACrBn9F,KAAKo9F,eAAsBp9F,KAAKhd,QAAQ4B,GA5YpB,eA6YpBob,KAAKq9F,kBAAyBr9F,KAAKhd,QAAQ4B,GA5YpB,kBA6YvBob,KAAKs9F,kBAAyBt9F,KAAKhd,QAAQ4B,GA5YpB,kBA6YvBob,KAAKu9F,gBAAuBv9F,KAAKhd,QAAQ4B,GA5YpB,gBA6YrBob,KAAKw9F,gBAAuBx9F,KAAKhd,QAAQ4B,GA5YpB,gBA6YrBob,KAAKy9F,iBAAwBz9F,KAAKhd,QAAQ4B,GA5YpB,iBA6YtBob,KAAK09F,iBAAwB19F,KAAKhd,QAAQ4B,GA5YpB,iBA6YtBob,KAAK27F,oBAA2B37F,KAAKhd,QAAQ4B,GA5YpB,mBA6Y7B,EASA20G,EAAal6F,UAAUo9F,YAAc,SAAUpjH,EAAYwJ,EAAQu5F,EAAOr6F,GACtE,IAEIu5G,EAFAtrF,EAAQhQ,KACZnd,EAASA,GAAkBmd,KAAKnd,OAEhCmd,KAAK29F,UAAW,EAChB,IAAI3uE,EAAY,CAAEznC,QAAQ,EAAO1B,KAAMxM,EAAY+iG,MAAOA,GAC1Dp8E,KAAKw5F,mBAAkBx5F,KAAKyrD,YAAazrD,KAAKmyD,gBAAuBnyD,KAAKw5F,gBACrEx5F,KAAK45F,cACN55F,KAAK81B,QAAQ,cAAe9G,GAAW,SAAUA,GAC7C,IAAKA,EAAUznC,OAGX,GAFAyoB,EAAM4pF,cAAe,EACrB5pF,EAAM4tF,cACFvkH,aAAsBuyG,EAAAA,EAAa,CAEnC,GADA57E,EAAMktF,aAAc,EAChBltF,EAAMmtF,cAEN,YADAntF,EAAM6tF,iBAAiBh7G,GAG3BmsC,EAAUnpC,KAAK0mG,aAAav8E,EAAMm6E,SAASn7D,EAAUotD,QAAQj1F,MAAK,SAAU1L,GACxEu0B,EAAMwpF,mBAAkBxpF,EAAMy7C,YAAaz7C,EAAMmiD,gBAAuBniD,EAAMwpF,gBAC9ExpF,EAAM8lB,QAAQ,iBAAkBr6C,GAAG,SAAUA,GACzC,IAAKA,EAAE8L,OAAQ,CACXyoB,EAAM4pF,cAAe,EACrB,IAAIhmG,EAAYnY,EAAE2D,OACO,IAArBwU,EAAU3b,SACV+3B,EAAMmtF,eAAgB,GAE1B7B,EAAYtrF,EAAM8tF,YAAYlqG,EAAW/Q,GACzCmtB,EAAM+tF,iBAAiBzC,EAAW1nG,EAAWnY,GACzCu0B,EAAMguF,eACNhuF,EAAMiuF,oBAAoB3C,GAE9BtrF,EAAMktF,aAAc,EACpBltF,EAAMkuF,eAAetqG,EAAW0nG,EAAWz4G,EAAQpH,EACvD,CACJ,GACJ,IAAG4L,OAAM,SAAU5L,GACfu0B,EAAMktF,aAAc,EACpBltF,EAAM4pF,cAAe,EACrB5pF,EAAMmuF,gBAAgB1iH,GACtBu0B,EAAMouF,aACV,GACJ,KACK,CACD,IAAI5hB,EAAc,IAAIoP,EAAAA,EAAY58D,EAAUnpC,MAExCw4G,EAAgB,CAAE92G,QAAQ,EAAOnI,OADpB4wB,EAAMm6E,SAASn7D,EAAUotD,OAAQiR,aAAa7Q,IAE/DxsE,EAAMwpF,mBAAkBxpF,EAAMy7C,YAAaz7C,EAAMmiD,gBAAuBniD,EAAMwpF,gBAC9ExpF,EAAM8lB,QAAQ,iBAAkBuoE,GAAe,SAAUA,GAChDA,EAAc92G,SACfyoB,EAAM4pF,cAAe,EACrB0B,EAAYtrF,EAAM8tF,YAAYO,EAAcj/G,OAAQyD,GACpDmtB,EAAM+tF,iBAAiBzC,EAAW+C,EAAcj/G,OAAQ2C,GACpDiuB,EAAMguF,eACNhuF,EAAMiuF,oBAAoB3C,GAE9BtrF,EAAMkuF,eAAeG,EAAcj/G,OAAQk8G,EAAWz4G,GACtDqtB,YAAW,WACuB,gBAA1BF,EAAM4rB,iBAA2D,MAAtB5rB,EAAMsuF,cAAyBhD,EAAUiD,kBAAoB,IAAMjD,EAAU1jH,SAAS,GAAG2mH,kBAAoB,GAAMvuF,EAAMntB,OAAOm6G,SAAW1B,EAAU1jH,SAAS,IAAM0jH,EAAU1jH,SAAS,GAAG2mH,kBAAoB,IACzPvuF,EAAMwuF,gBAEd,IAER,GACJ,CAER,GAER,EACAjF,EAAal6F,UAAU6+F,eAAiB,SAAUtqG,EAAW0nG,EAAWz4G,EAAQpH,GAC5E,IAAIu0B,EAAQhQ,KACRpM,EAAU3b,QAAU,KAAgC,iBAAzB+nB,KAAK47B,gBAChC1rB,YAAW,WACP,IAAIuuF,EAAYzuF,EAAM0uF,eAAe1uF,EAAM2uF,WAAY97G,IACvDs1C,EAAAA,EAAAA,IAAOsmE,EAAWnD,GAClBtrF,EAAM47D,cAAgB57D,EAAMipB,KAAKnoB,iBAAiB,IAAMmoF,EAAoBrmB,IAC5E5iE,EAAM4uF,mBACN5uF,EAAM6uF,eAAejrG,EAAWnY,EACpC,GAAG,GAGHukB,KAAK6+F,eAAejrG,EAAWnY,EAEvC,EACA89G,EAAal6F,UAAUu/F,iBAAmB,WACtC,EAEJrF,EAAal6F,UAAUy/F,gBAAkB,SAAU7lE,EAAM8lE,EAAU95C,EAAW1nE,GAC1E,IAAIyhH,EAAY,KAChB,GAAI/lE,EAEA,IADA,IAAIgmE,EAAU,GAAG5hG,MAAMqC,KAAKu5B,EAAKnoB,iBAAiBiuF,IACzCj4G,EAAQ,EAAGA,EAAQm4G,EAAQhnH,OAAQ6O,IACxC,GAAIm4G,EAAQn4G,GAAOs6C,aAAa6jB,KAAgB1nE,EAAQ,GAAK,CACzDyhH,EAAYC,EAAQn4G,GACpB,KACJ,CAGR,OAAOk4G,CACX,EACAzF,EAAal6F,UAAUw/F,eAAiB,SAAUjrG,EAAWnY,GACzDukB,KAAKo+F,cACL,IAAIc,EAAqB,CACrBp1G,MAAO8J,EACPnY,EAAGA,GAEPukB,KAAK81B,QAAQ,YAAaopE,EAC9B,EACA3F,EAAal6F,UAAUq/F,eAAiB,SAAUrlH,EAAYwJ,GAC1D,IAAIs8G,EAAa,IAAIvT,EAAAA,EAAYvyG,GAAYg0G,cAAa,IAAIrP,EAAAA,GAAQnC,KAAK,MAC3E,GAAI77E,KAAKs+F,aAAc,CACnB,IAAIc,EAAep/F,KAAKq/F,iBAAiBF,EAAYt8G,GACrD,MAAO,GAAGwa,MAAMqC,KAAK0/F,EAAat7C,WACtC,CACA,IAAIxpE,EAAO0lB,KAAKo6F,WAAW+E,GAAY9E,OACvC,MAAa,WAAT//G,GAA8B,WAATA,GAA8B,YAATA,EACnCkxF,EAAAA,GAAS8zB,wBAAwBt/F,KAAK4Q,cAAeuuF,GAAY,EAAMn/F,KAAKu/F,WAAWJ,EAAYt8G,GAASmd,MAEhHwrE,EAAAA,GAASg0B,uBAAuBx/F,KAAK4Q,cAAeuuF,EAAYn/F,KAAKu/F,WAAWJ,EAAYt8G,GAAS,GAAG,EAAMmd,KACzH,EACAu5F,EAAal6F,UAAUw+F,iBAAmB,SAAUh7G,GAChD,IAAI+Q,EAAY,GAChBoM,KAAK+9F,iBAAiB/9F,KAAK89F,YAAYlqG,EAAW/Q,GAAS+Q,GAC3DoM,KAAKk9F,aAAc,EACnBl9F,KAAKo+F,aACT,EACA7E,EAAal6F,UAAUu+F,YAAc,WACjC,EAEJrE,EAAal6F,UAAU++F,YAAc,WACjC,EAEJ7E,EAAal6F,UAAU8+F,gBAAkB,SAAU1iH,GAC/CukB,KAAK4rE,cAAgB,GACrB5rE,KAAK81B,QAAQ,gBAAiBr6C,GAC9BukB,KAAKo7F,YAAW,IACXztF,EAAAA,EAAAA,IAAkB3N,KAAKi5B,QACxBxC,EAAAA,EAAAA,IAAS,CAACz2B,KAAKi5B,MAAOggE,EAAoBG,OAElD,EAEAG,EAAal6F,UAAU0+F,iBAAmB,SAAUzC,EAAWriE,EAAMx9C,GAWjE,GATAukB,KAAKi6F,SAAWhhE,EACa,YAAzBj5B,KAAK47B,iBACL0/D,EAAUhlE,aAAa,WAAY,KAGnCt2B,KAAK87F,SACL97F,KAAKgtC,cAAc,CAAC,eAAgB,gBAAiB,wBAAyB,sBAElFhtC,KAAKy/F,oBAAqB9xF,EAAAA,EAAAA,IAAkB3N,KAAKy/F,oBAAsBz/F,KAAKy/F,mBAAqB,KACpE,gBAAzBz/F,KAAK47B,iBAAqC57B,KAAKo2B,WAAW+lE,kBAAoBn8F,KAAKnd,OAAOm6G,QAC1F,IAAK,IAAI73F,EAAI,EAAGA,EAAIm2F,EAAUiD,kBAAmBp5F,IACzCm2F,EAAU1jH,SAASutB,GAAGyxB,UAAUM,SAAS,wBACrCvpB,EAAAA,EAAAA,IAAkB2tF,EAAU1jH,SAASutB,GAAGoM,YAAiD,IAAnC+pF,EAAU1jH,SAASutB,GAAGoM,aAC5EklB,EAAAA,EAAAA,IAAS,CAAC6kE,EAAU1jH,SAASutB,IAhjBhC,wBAqjBRwI,EAAAA,EAAAA,IAAkB3N,KAAKi5B,QACxBj5B,KAAKi5B,KAAK1nB,UAAY,GACtBvR,KAAKi5B,KAAK9nB,YAAYmqF,GACtBt7F,KAAK4rE,cAAgB5rE,KAAKi5B,KAAKnoB,iBAAiB,IAAMmoF,EAAoBrmB,IAC1E5yE,KAAKs7F,UAAYt7F,KAAKi5B,KAAK1mB,cAAc,MACzCvS,KAAK0/F,WAAW1/F,KAAKi5B,KAAMA,EAAMj5B,KAAKq8F,WAE9C,EAEA9C,EAAal6F,UAAUqgG,WAAa,SAAUC,EAAa1mE,EAAMojE,GAE7D,IAAIuD,EAAYD,EAAYptF,cAAc,IAAM0mF,EAAoBrmB,IAChEitB,EAAeF,EAAYptF,cAAc,IAAM0mF,EAAoBhR,UACnE2X,IAAcC,GACdD,EAAUhpE,UAAUzB,IAAI8jE,EAAoBxnF,OAE5CwnB,EAAKhhD,QAAU,GACf+nB,KAAKo7F,cACL3kE,EAAAA,EAAAA,IAAS,CAACkpE,GAAc1G,EAAoBG,SAG5CuG,EAAY/oE,UAAUjB,OAAOsjE,EAAoBG,OAEzD,EAOAG,EAAal6F,UAAU8qF,SAAW,SAAU/N,GACxC,OAAOA,IAAgBp8E,KAAKo8E,MAAQp8E,KAAKo8E,MAAQ,IAAI4B,EAAAA,EACzD,EAOAub,EAAal6F,UAAU4+F,oBAAsB,SAAU6B,GACnD,GAA4B,OAAxB9/F,KAAKnd,OAAOm6G,SAAoBh9F,KAAK3mB,YAAc2mB,KAAKhd,QAAQuvB,cAAc,IAAM0mF,EAAoB37G,OAAQ,CAChH,IAAIjE,EAAa2mB,KAAK3mB,WAClB4+B,EAAS,CAAE8nF,gBAAiB//F,KAAKw9F,gBAAiBhzD,iBAAkBxqC,KAAKwqC,kBACzEw1D,EAAcF,EAAQhvF,iBAAiB,IAAMmoF,EAAoB37G,OACjE2iH,EAAajgG,KAAKg7F,iBAAiBh7F,KAAKg+F,eAC5C,GAAkC,oBAAvBh+F,KAAKg+F,eAAgCiC,EAAY,CACxD,IAAIC,GAAaxnE,EAAAA,EAAAA,IAAO14B,KAAKg+F,cAAep7F,UAAU2O,UAAU0pC,OAE5DklD,EAAc30B,EAAAA,GAASyyB,oBAAoBiC,EAAY7mH,EAAY2mB,KAAKnd,OAAOuzC,WAAY4pE,EAAa/nF,EAAQjY,MAEpH,GAAIA,KAAKogG,gBACL,IAAK,IAAIj7F,EAAI,EAAGA,EAAIg7F,EAAYloH,OAAQktB,IACpCnF,KAAK+mB,OAAO,UAAW,CAAEoe,OAAQ,oBAAqB/5C,KAAM+0G,EAAYh7F,IAGpF,KACK,CAEGg7F,EAAc30B,EAAAA,GAASyyB,oBAAoBj+F,KAAKg+F,cAAe3kH,EAAY2mB,KAAKnd,OAAOuzC,WAAY4pE,EAAa/nF,EAAQjY,MAE5H,GAAIA,KAAKogG,gBACL,IAASj7F,EAAI,EAAGA,EAAIg7F,EAAYloH,OAAQktB,IACpCnF,KAAK+mB,OAAO,UAAW,CAAEoe,OAAQ,oBAAqB/5C,KAAM+0G,EAAYh7F,IAGpF,CACAnF,KAAK+sC,sBACT,CACJ,EAQAwsD,EAAal6F,UAAU+rE,gBAAkB,SAAU/xF,EAAYwJ,GACvDxJ,GAAcwJ,EAAOm6G,SAAWh9F,KAAKhd,QAAQuvB,cAAc,aACvD1vB,EAAOm6G,UACgB,SAAnBh9F,KAAKqgG,YACLhnH,EAAa2mB,KAAKsgG,oBAAoBjnH,IAE1CA,EAAamyF,EAAAA,GAAS+0B,gBAAgBlnH,EAAYwJ,EAAOuzC,WAAYp2B,KAAKqgG,aAE9E5pE,EAAAA,EAAAA,IAAS,CAACz2B,KAAKi5B,MAAOggE,EAAoBK,WAG1CjgH,EAAa2mB,KAAKsgG,oBAAoBjnH,GAE1C,IAAIqnB,EAAUV,KAAKu/F,WAAWlmH,EAAYwJ,GACtCs8G,EAAc9lH,EAAWpB,OAAS,IAClC,IAAI2zG,EAAAA,EAAYvyG,GAAYg0G,cAAa,IAAIrP,EAAAA,GAAQlC,KAAK,MACxDziG,EAEN,OADA2mB,KAAK2+F,WAAatlH,EACXmyF,EAAAA,GAASC,WAAWzrE,KAAK4Q,cAAyC,iBAAzB5Q,KAAK47B,gBAAsCujE,EAAa9lH,EAAYqnB,GAAS,EAAMV,KACvI,EACAu5F,EAAal6F,UAAUkgG,WAAa,SAAUlmH,EAAYwJ,GACtD,IAAI+jE,IAAUj5C,EAAAA,EAAAA,IAAkB9qB,EAAO+jE,SACnC45C,GAAe7yF,EAAAA,EAAAA,IAAkB9qB,EAAOuzC,YACpBvzC,EAApBA,EAAOuzC,WACP11B,EAA2B,OAAhB7d,EAAO9K,MAAkC,OAAjB8K,EAAOtF,MAAkB,CAC5DsF,OAAQ29G,EACRC,SAAU75C,EAAS85C,eAAgB,CAAEC,cAAe,iBACpD,CAAE99G,OAAQ,CAAEtF,MAAO,SACvB,OAAOoxB,EAAAA,EAAAA,IAAO,CAAC,EAAGjO,EAAS7d,GAAQ,EACvC,EACA02G,EAAal6F,UAAUuhG,kBAAoB,SAAUnlH,IAC5CkyB,EAAAA,EAAAA,IAAkB3N,KAAKi5B,OAAUj5B,KAAKi5B,KAAKrC,UAAUM,SAAS+hE,EAAoBG,WAC/EzrF,EAAAA,EAAAA,IAAkB3N,KAAKy/F,sBACvBz/F,KAAKy/F,mBAAqBz/F,KAAK4Q,cAAc,MAAO,CAAE31B,UAAWg+G,EAAoBI,aAChF1rF,EAAAA,EAAAA,IAAkB3N,KAAKi5B,OAAUj5B,KAAKi5B,KAAK1mB,cAAc,MAAMqkB,UAAUM,SAAS+hE,EAAoB37G,SACvG0iB,KAAKy/F,mBAAmBloE,MAAMuiB,QAAU,SAEvCnsC,EAAAA,EAAAA,IAAkB3N,KAAKy/F,sBAAwB9xF,EAAAA,EAAAA,IAAkB3N,KAAKi5B,QACvEvB,EAAAA,EAAAA,IAAQ,CAAC13B,KAAKy/F,oBAAqBz/F,KAAKi5B,MAE5Cj5B,KAAK6gG,mBAEJlzF,EAAAA,EAAAA,IAAkB3N,KAAKy/F,qBAAgE,MAAzCz/F,KAAKy/F,mBAAmBloE,MAAMu9B,QAC7E90D,KAAK6gG,iBAET7gG,KAAK8gG,WAAWrlH,GAExB,EACA89G,EAAal6F,UAAUyhG,WAAa,SAAUrlH,GAK1C,IAJA,IAAI0iD,GAAUxwB,EAAAA,EAAAA,IAAkBlyB,GAAgBukB,KAAKi5B,KAAhBx9C,EAAE0iD,OACnC8yC,EAAW/xF,SAASglD,iBAAiBlkC,KAAK+gG,aAAc,MAAM58D,iBAAiB,UAAW,IAC1F68D,EAAWn/F,KAAKuvE,MAAMjzC,EAAOqF,UAAYytC,GACzCrF,EAAgB5rE,KAAKi5B,KAAKnoB,iBAAiB,4BACtC3L,EAAI67F,EAAU77F,GAAK,EAAGA,IAAK,CAChC,KAAKwI,EAAAA,EAAAA,IAAkBi+D,EAAczmE,KAAOymE,EAAczmE,GAAGyxB,UAAUM,SAAS+hE,EAAoB37G,OAAQ,CACxG,IAAIi2F,EAAY3H,EAAczmE,GAC9BnF,KAAKy/F,mBAAmBluF,UAAYgiE,EAAUhiE,UAC9CvR,KAAKy/F,mBAAmBloE,MAAMqM,IAAMzF,EAAOqF,UAAY,KACvDxjC,KAAKy/F,mBAAmBloE,MAAMuiB,QAAU,QACxC,KACJ,CAEI95C,KAAKy/F,mBAAmBloE,MAAMuiB,QAAU,OACxC95C,KAAKy/F,mBAAmBloE,MAAMqM,IAAM,MAE5C,CACJ,EACA21D,EAAal6F,UAAU0hG,WAAa,WAChC,OAAO/gG,KAAK4rE,cAAc,EAC9B,EAQA2tB,EAAal6F,UAAUy+F,YAAc,SAAU7D,EAAUp3G,GACrD,IAAIy4G,EACJ,GAAIt7F,KAAKs+F,cAAgBrE,EAAU,CAC/B,IAAI5gH,EAAa4gH,EACb5gH,GAAcwJ,EAAOm6G,SACE,SAAnBh9F,KAAKqgG,YACLhnH,EAAa2mB,KAAKsgG,oBAAoBjnH,IAE1CA,EAAamyF,EAAAA,GAAS+0B,gBAAgBlnH,EAAYwJ,EAAOuzC,WAAYp2B,KAAKqgG,YAG1EhnH,EAAa2mB,KAAKsgG,oBAAoBjnH,GAE1C2mB,KAAK2+F,WAAatlH,EAClB,IAAI8lH,EAAc9lH,EAAWpB,OAAS,IAClC,IAAI2zG,EAAAA,EAAYvyG,GAAYg0G,cAAa,IAAIrP,EAAAA,GAAQlC,KAAK,MACxDziG,EACNiiH,EAAYt7F,KAAKq/F,iBAA2C,iBAAzBr/F,KAAK47B,gBAAsCujE,EAAa9lH,EAAYwJ,EAC3G,MAEIy4G,EAAYt7F,KAAKorE,gBAAgB6uB,EAAUp3G,GAE/C,OAAOy4G,CACX,EACA/B,EAAal6F,UAAUggG,iBAAmB,SAAUhmH,EAAYwJ,GAC5D,IAAIo1B,EAASjY,KAAKu/F,WAAWlmH,EAAYwJ,GACzCo1B,EAAOgpF,WAAajhG,KAAKo9F,eACzBnlF,EAAOuyB,iBAAmBxqC,KAAKwqC,iBAC/B,IAAI02D,EAAYlhG,KAAKg7F,iBAAiBh7F,KAAKs+F,cAC3C,GAAiC,oBAAtBt+F,KAAKs+F,cAA+B4C,EAAW,CACtD,IAAIvG,GAAYjiE,EAAAA,EAAAA,IAAO14B,KAAKs+F,aAAc17F,UAAU2O,UAAU0pC,OAC9D,OAAOuwB,EAAAA,GAAS21B,sBAAsBnhG,KAAK4Q,cAAe+pF,EAAWthH,EAAYwJ,EAAOuzC,WAAYne,EAAQjY,KAChH,CAEI,OAAOwrE,EAAAA,GAAS21B,sBAAsBnhG,KAAK4Q,cAAe5Q,KAAKs+F,aAAcjlH,EAAYwJ,EAAOuzC,WAAYne,EAAQjY,KAE5H,EACAu5F,EAAal6F,UAAU+6F,WAAa,SAAUtwG,GAE1C,IADA,IAAIsB,EAAO,CAAEivG,OAAQ,KAAMjvG,KAAM,MACxB+Z,EAAI,IAAKwI,EAAAA,EAAAA,IAAkB7jB,IAAUqb,EAAIrb,EAAM7R,OAASktB,IAAK,CAClE,KAAKwI,EAAAA,EAAAA,IAAkB7jB,EAAMqb,IAKzB,KAJyC,kBAAdrb,EAAMqb,IACP,kBAAdrb,EAAMqb,IAA0C,mBAAdrb,EAAMqb,IACpBwI,EAAAA,EAAAA,IAAkB7jB,EAAMqb,KACpDwI,EAAAA,EAAAA,KAAkBP,EAAAA,EAAAA,IAAUpN,KAAKnd,OAAOtF,MAAQyiB,KAAKnd,OAAOtF,MAAQ,QAAUuM,EAAMqb,MAEpF,MAAc,CAAEk1F,cAAevwG,EAAMqb,GAAI/Z,KAAMtB,EAAMqb,GAGjE,CACA,OAAO/Z,CACX,EACAmuG,EAAal6F,UAAUwhG,eAAiB,YAC/BlzF,EAAAA,EAAAA,IAAkB3N,KAAKi5B,QACxBj5B,KAAKi5B,KAAKggB,cAAc1hB,MAAMuiB,QAAU,SAE5C,IAAIxL,EAAc,EACdtuC,KAAKi5B,MAAQj5B,KAAKi5B,KAAKggB,gBACvB3K,EAAcpvD,SAAS0jB,SAASC,YAAYqhC,iBAAiBlkC,KAAKi5B,KAAKggB,cAAe,MAAM9U,iBAAiB,gBAAiB,IAI1HrqB,MAAMw0B,KAKNA,EAJqBpvD,SAAS0jB,SAASC,YAAYqhC,iBAAiBlkC,KAAKi5B,KAAKggB,cAAe,MAAM9U,iBAAiB,oBAAqB,IACjHjlD,SAAS0jB,SAASC,YAAYqhC,iBAAiBlkC,KAAKi5B,KAAKggB,cAAe,MAAM9U,iBAAiB,uBAAwB,IACzHjlD,SAAS0jB,SAASC,YAAYqhC,iBAAiBlkC,KAAKi5B,KAAKggB,cAAe,MAAM9U,iBAAiB,qBAAsB,IACpHjlD,SAAS0jB,SAASC,YAAYqhC,iBAAiBlkC,KAAKi5B,KAAKggB,cAAe,MAAM9U,iBAAiB,sBAAuB,MAIrJ,KAAKx2B,EAAAA,EAAAA,IAAkB3N,KAAK4rE,eAAgB,CACxC,IAAIw1B,EAAUphG,KAAK+gG,aAAatpE,YAAc6W,EAC9CtuC,KAAKy/F,mBAAmBloE,MAAMwc,MAAQqtD,EAAQhmH,WAAa,IAC/D,EACAm+C,EAAAA,EAAAA,IAAkBv5B,KAAKy/F,mBAAoB,CAAE3qC,OAAQ,KACrD,IAAIusC,EAAUrhG,KAAKs7F,UAAU/oF,cAAc,IAAM0mF,EAAoB37G,MAAQ,0BAC7E0iB,KAAKy/F,mBAAmBluF,UAAY8vF,EAAQ9vF,SAChD,EACAgoF,EAAal6F,UAAUihG,oBAAsB,SAAUjnH,GACnD,GAAIA,GAAiC,SAAnB2mB,KAAKqgG,UAAsB,CACzC,IAAIiB,EAAYthG,KAAKnd,OAAO9K,KAAOioB,KAAKnd,OAAO9K,KAAO,OACX,WAAvCioB,KAAKo6F,WAAW/gH,GAAYghH,QAA8D,WAAvCr6F,KAAKo6F,WAAW/gH,GAAYghH,QACrC,YAAvCr6F,KAAKo6F,WAAW/gH,GAAYghH,SAC/BiH,EAAY,IAEhBjoH,EAAamyF,EAAAA,GAAS+1B,cAAcloH,EAAYmyF,EAAAA,GAASg2B,WAAWxhG,KAAKqgG,UAAWiB,GACxF,CACA,OAAOjoH,CACX,EAOAkgH,EAAal6F,UAAUoiG,gBAAkB,SAAUlkH,GAG/C,IAFA,IAAIuJ,EACA8M,EAAYoM,KAAK0hG,WACZv8F,EAAI,EAAGA,EAAIvR,EAAU3b,OAAQktB,IAClC,KAAKwI,EAAAA,EAAAA,IAAkBpwB,IAAUqW,EAAUuR,GAAGi8B,aAAa,gBAAkB7jD,EAAMnC,WAAY,CAC3F0L,EAAQqe,EACR,KACJ,CAEJ,OAAOre,CACX,EAQAyyG,EAAal6F,UAAU8rD,cAAgB,SAAUnoE,EAAS1I,GACtD,IAAIo1D,EAAM9sC,SAASqoD,YAAY,cAC/Bvb,EAAIwb,UAAU5wE,GAAM,GAAO,GACvB0I,GACAA,EAAQmoE,cAAczb,EAE9B,EAMA6pD,EAAal6F,UAAUsiG,UAAY,WAC3B3hG,KAAKnd,OAAOtF,QAAUyiB,KAAKnd,OAAO9K,KAClCioB,KAAK+8F,aAAa/8F,KAAKnd,OAAOtF,MAAOyiB,KAAKnd,OAAOtF,QAE3CyiB,KAAKnd,OAAOtF,OAASyiB,KAAKnd,OAAO9K,KACvCioB,KAAK+8F,aAAa/8F,KAAKnd,OAAO9K,KAAMioB,KAAKnd,OAAO9K,MAE1CioB,KAAKnd,OAAOtF,OAAUyiB,KAAKnd,OAAO9K,MACxCioB,KAAK+8F,aAAa,OAAQ,OAElC,EASAxD,EAAal6F,UAAUm9F,UAAY,SAAUnjH,EAAYwJ,EAAQu5F,EAAO3gG,GACpE,GAAIukB,KAAKi5B,KAAM,CACX,GAA8B,WAAzBj5B,KAAKhd,QAAQmzC,SAAwBn2B,KAAKhd,QAAQ0d,QAAQzoB,OAAS,GACvC,OAAzB+nB,KAAKhd,QAAQmzC,SAAoBn2B,KAAKhd,QAAQ8gE,WAAW7rE,OAAS,IAC3DoB,aAAsBo1B,MAASp1B,EAAWpB,OAAS,IACvD01B,EAAAA,EAAAA,IAAkBt0B,KACZ2mB,KAAK4hG,YAAc5hG,KAAK4hG,WAAW3pH,OAAS,IACrDoB,EAAa2mB,KAAK4hG,YAG1BvoH,EAAsC,aAAzB2mB,KAAK47B,iBAAkC57B,KAAK4hG,YAAcvoH,aAAsBo1B,OAASp1B,EAAWpB,OAAS+nB,KAAK4hG,WAAW3pH,QAAU+nB,KAAK05F,aAAe15F,KAAK4hG,WAAavoH,EAC1L2mB,KAAK05F,cAAe,EACpB15F,KAAKy8F,YAAYpjH,EAAYwJ,EAAQu5F,EAAO3gG,EAChD,CACJ,EACA89G,EAAal6F,UAAUwiG,wBAA0B,SAAUC,GACnDA,IAAen0F,EAAAA,EAAAA,IAAkB3N,KAAK4hG,aAAe5hG,KAAKi6F,UAAYj6F,KAAKi6F,SAAShiH,OAAS,IAC7F+nB,KAAK4hG,WAAa5hG,KAAKi6F,SAE/B,EACAV,EAAal6F,UAAU0iG,gBAAkB,WACrC,EAEJxI,EAAal6F,UAAU2iG,WAAa,WAEhChiG,KAAKsrC,QACT,EAEAiuD,EAAal6F,UAAU4iG,iBAAmB,SAAU9/G,GAChD6d,KAAKw8F,UAAUx8F,KAAK3mB,WACxB,EACAkgH,EAAal6F,UAAU6iG,iBAAmB,SAAU//G,EAAOkgD,GACvDriC,KAAKm9F,eAAgB,EAErB,IADA,IAAIgF,EAAa,CAAC,EACT3rF,EAAI,EAAGr0B,EAAMlK,OAASu+B,EAAGA,IAC1B6rB,EAAQlgD,EAAMq0B,KAAoB,WAAbr0B,EAAMq0B,IAC3BxW,KAAK2hG,YACLQ,EAAWhgH,EAAMq0B,IAAM6rB,EAAQlgD,EAAMq0B,KAEhC6rB,EAAQlgD,EAAMq0B,MACnB2rF,EAAWhgH,EAAMq0B,IAAM6rB,EAAQlgD,EAAMq0B,KAGzC33B,OAAOC,KAAKqjH,GAAYlqH,OAAS,KACsB,IAAnD4G,OAAOC,KAAKqjH,GAAY7rG,QAAQ,gBAChC6rG,EAAW9oH,WAAa2mB,KAAK3mB,YAEjC2mB,KAAKiiG,iBAAiBE,GAE9B,EAUA5I,EAAal6F,UAAUi8B,kBAAoB,SAAU+G,EAASC,GAC7B,iBAAzBtiC,KAAK47B,iBACL57B,KAAKkiG,iBAAiB,CAAC,SAAU,QAAS,cAAe7/D,GAE7DriC,KAAKkiG,iBAAiB,CAAC,YAAa,gBAAiB7/D,GACrD,IAAK,IAAI9zB,EAAK,EAAGvoB,EAAKnH,OAAOC,KAAKujD,GAAU9zB,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAE9D,OADWvoB,EAAGuoB,IAEV,IAAK,QACL,IAAK,YACL,IAAK,aACL,IAAK,eACD,MACJ,IAAK,YACDvO,KAAKsqE,eACL,MACJ,IAAK,gBAED,GADAtqE,KAAKi+F,oBAAoBj+F,KAAKi5B,MAC1Bj5B,KAAKs7F,WAAat7F,KAAKy/F,mBAAoB,CAC3C,IAAI4B,EAAUrhG,KAAKs7F,UAAU/oF,cAAc,IAAM0mF,EAAoB37G,OACrE0iB,KAAKy/F,mBAAmBluF,UAAY8vF,EAAQ9vF,SAChD,CACA,MACJ,IAAK,SACGvR,KAAKi5B,QAAUtrB,EAAAA,EAAAA,IAAkB3N,KAAK4rE,gBAAgD,IAA9B5rE,KAAK4rE,cAAc3zF,QAC3E+nB,KAAKo7F,aAET,MACJ,IAAK,SACDp7F,KAAK26B,cAAc,CAAEm6B,OAAQzyB,EAAQyyB,SAAU,GAC/C90D,KAAKw0E,YAGjB,CACJ,EAQA+kB,EAAal6F,UAAUisC,OAAS,SAAU7vD,EAAG2mH,GACZ,YAAzBpiG,KAAK47B,gBACL57B,KAAKi5B,KAAOj5B,KAAK4Q,cAAc,MAAO,CAAE31B,UAAWg+G,EAAoB1yC,QAAShwB,MAAO,CAAE,SAAY,OAGrGv2B,KAAKi5B,KAAOj5B,KAAK4Q,cAAc,MAAO,CAAE31B,UAAWg+G,EAAoB1yC,UAE3EvmD,KAAKi5B,KAAKrC,UAAUzB,IAAI8jE,EAAoBt1C,MAC5C3jD,KAAK2hG,YACL,IAAIl/D,EAAc,CAAEX,SAAU,IAAKnJ,SAAU,IAAMsgE,EAAoBrmB,IACvE5yE,KAAKqiG,WAAY9/D,EAAAA,EAAAA,IAAaviC,KAAKi5B,KAAMwJ,GACzC,IAAInlD,EAAQ0iB,KAAKhd,QAAQuvB,cAAc,mBAIvC,IAHKvS,KAAKnd,OAAOm6G,UAAYrvF,EAAAA,EAAAA,IAAkBrwB,IAAY0iB,KAAKogG,iBAC5DprE,EAAAA,GAAaG,IAAIn1B,KAAKi5B,KAAM,SAAUj5B,KAAK4gG,kBAAmB5gG,MAErC,iBAAzBA,KAAK47B,gBAAoC,CACrC57B,KAAKhd,QAAQo+C,aAAa,aAC1BphC,KAAKi5B,KAAK3C,aAAa,WAAYt2B,KAAKhd,QAAQo+C,aAAa,cAEjEjK,EAAAA,EAAAA,IAAY,CAACn3B,KAAKhd,SAAUi2G,EAAoBt1C,MAChD3jD,KAAKhd,QAAQu0C,MAAMuiB,QAAU,OAC7B,IAAIxN,EAAiBtsC,KAAK4Q,cAAc,OACxC5Q,KAAKhd,QAAQi2D,cAAcjhB,aAAasU,EAAgBtsC,KAAKhd,SAC7DspD,EAAen7B,YAAYnR,KAAKhd,SAChCspD,EAAen7B,YAAYnR,KAAKi5B,KACpC,CACAj5B,KAAKsqE,eACA83B,GACDpiG,KAAKyvC,WAAWh0D,EAExB,EAOA89G,EAAal6F,UAAUu8B,cAAgB,WACnC,MAAO,cACX,EAOA29D,EAAal6F,UAAUqiG,SAAW,WAC9B,OAAO1hG,KAAKs7F,UAAUxqF,iBAAiB,IAAMmoF,EAAoBrmB,GACrE,EAWA2mB,EAAal6F,UAAUijG,QAAU,SAAUx4G,EAAOy4G,GAI9C,KAHKviG,KAAKi5B,MAASj5B,KAAKi5B,KAAK6tB,cAAgB9mD,KAAKu7F,mBAA8C,YAAzBv7F,KAAK47B,kBACxE57B,KAAKgiG,aAEc,SAAnBhiG,KAAKqgG,YAAwB1yF,EAAAA,EAAAA,IAAkB40F,GAAY,CAC3D,IAAI30D,EAAU,GAAGvwC,MAAMqC,KAAKM,KAAKi6F,UACjCrsD,EAAQnuD,KAAKqK,GACb8jD,EAAU5tC,KAAKsgG,oBAAoB1yD,GAG/B20D,EAFAviG,KAAKnd,OAAOm6G,SACZpvD,EAAU49B,EAAAA,GAAS+0B,gBAAgB3yD,EAAS5tC,KAAKnd,OAAOuzC,WAAYp2B,KAAKqgG,YACrD/pG,QAAQxM,GAGhB8jD,EAAQt3C,QAAQxM,EAEpC,CACA,IAGIhD,EAHA07G,EAAaxiG,KAAK0hG,WAAWzpH,OAC7BwqH,EAAoBziG,KAAKi5B,KAAK1mB,cAAc,IAAM0mF,EAAoBhR,UAC1En+F,EAASA,aAAiB2kB,MAAQ3kB,EAAQ,CAACA,GAE3ChD,GAAS6mB,EAAAA,EAAAA,IAAkB40F,IAAcA,EAAY,GAAKA,EAAYC,EAAa,EAAKA,EAAaD,EACrG,IAAI1/G,EAASmd,KAAKnd,OACdiH,GAASjH,EAAOm6G,UAChBlzG,EAAQ0hF,EAAAA,GAAS+0B,gBAAgBz2G,EAAOjH,EAAOuzC,aAGnD,IADA,IAAIw1C,EAAgB,GACXzmE,EAAI,EAAGA,EAAIrb,EAAM7R,OAAQktB,IAAK,CACnC,IAAI/Z,EAAOtB,EAAMqb,GACb0zF,EAAWztG,EAAKytG,SAChBjmB,EAAK5yE,KAAK4Q,cAAc,KAAM,CAAE31B,UAAW49G,EAAWI,EAAoB37G,MAAQ27G,EAAoBrmB,GAAIhuF,GAAI,cAAgBugB,IAC9Hu9F,EAAWt3G,aAAgBvM,QAASuuB,EAAAA,EAAAA,IAASvqB,EAAO9K,KAAMqT,GAAQA,EAItE,GAHIytG,IACAjmB,EAAGzY,UAAYuoC,GAEf1iG,KAAKs+F,eAAiBzF,EAAU,CAChC,IAAI8J,EAAY3iG,KAAKg7F,iBAAiBh7F,KAAKs+F,cAIvCsE,GAH8C,oBAAtB5iG,KAAKs+F,cAC7BqE,GAAYthD,EAAAA,EAAAA,KAAQ3oB,EAAAA,EAAAA,IAAO14B,KAAKs+F,aAAc17F,UAAU2O,UAAU0pC,SAAUoG,EAAAA,EAAAA,IAAQrhD,KAAKs+F,eAExDlzG,EAAM4U,KAAM,eAAgBA,KAAKo9F,eAAgBp9F,KAAKwqC,iBAAkB,KAAMooC,GAC/GgwB,IACAzqE,EAAAA,EAAAA,IAAOyqE,EAAiBhwB,EAEhC,MACUimB,GACNjmB,EAAGzhE,YAAYvO,SAASigG,eAAeH,IAE3C9vB,EAAGt8C,aAAa,aAAclrC,aAAgBvM,QAASuuB,EAAAA,EAAAA,IAASvqB,EAAOtF,MAAO6N,GAAQA,GACtFwnF,EAAGt8C,aAAa,OAAQ,UACxBt2B,KAAK+mB,OAAO,UAAW,CAAEoe,OAAQ,oBAAqB/5C,KAAMwnF,IAC5DhH,EAAcnsF,KAAKmzF,GACnB5yE,KAAKi6F,SAASx6G,KAAK2L,GACI,SAAnB4U,KAAKqgG,YAAwB1yF,EAAAA,EAAAA,IAAkB40F,IAAwB,IAAVz7G,IAC7DA,EAAQ,MAEZkZ,KAAK8iG,yBAAyBlwB,EAAIxnF,EAAMtE,GAExCkZ,KAAK81B,QAAQ,mBAAoB,CAAE9yC,QAAS4vF,EAAIxnF,KAAMA,GAC1D,CACA,GAAmB,IAAfo3G,IAAoB70F,EAAAA,EAAAA,IAAkB3N,KAAKi5B,KAAK1mB,cAAc,QACzD5E,EAAAA,EAAAA,IAAkB3N,KAAKi5B,QACxBj5B,KAAKi5B,KAAK1nB,UAAY,GACtBvR,KAAKi5B,KAAKrC,UAAUjB,OAAOsjE,EAAoBG,QAC/Cp5F,KAAK25F,sBAAuB,GACvBhsF,EAAAA,EAAAA,IAAkB3N,KAAKs7F,YACxBt7F,KAAKi5B,KAAK9nB,YAAYnR,KAAKs7F,YAGnCt7F,KAAK4rE,cAAgBA,GAChBj+D,EAAAA,EAAAA,IAAkBi+D,KAAmBj+D,EAAAA,EAAAA,IAAkB3N,KAAKs7F,aAC7DnjE,EAAAA,EAAAA,IAAOyzC,EAAe5rE,KAAKs7F,WAE/Bt7F,KAAK+iG,kBAAkB/iG,KAAKi5B,KAAMupE,OAEjC,CAC4B,YAAzBxiG,KAAK47B,iBAAgD,IAAf4mE,IACtCxiG,KAAKs7F,UAAU/pF,UAAY,IAE/B,IAAI00C,EAAO,GACX,IAAS9gD,EAAI,EAAGA,EAAIrb,EAAM7R,OAAQktB,IAAK,CAEnC,IADA,IAAI69F,EAAgBhjG,KAAKs7F,UAAUxqF,iBAAiB,sBAC3C0F,EAAI,EAAGA,EAAIwsF,EAAc/qH,OAAQu+B,IACtCyvC,EAAKzvC,GAAKwsF,EAAcxsF,GAAG2jD,UAE/B,GAAIlU,EAAK3vD,QAAQs1E,EAAczmE,GAAGg1D,YAAc,GAAKt3E,EAAOm6G,SACxD,IAASxmF,EAAI,EAAGA,EAAIwsF,EAAc/qH,OAAQu+B,IACtC,GAAIyvC,EAAKzvC,KAAOo1D,EAAczmE,GAAGg1D,UAAW,CACjB,SAAnBn6D,KAAKqgG,UACLrgG,KAAKs7F,UAAUtjE,aAAa4zC,EAAczmE,EAAI,GAAI69F,EAAcxsF,EAAI,IAGpExW,KAAKs7F,UAAUtjE,aAAa4zC,EAAczmE,EAAI,GAAInF,KAAKs7F,UAAUx3C,WAAWy+C,IAEhFp9F,GAAQ,EACR,KACJ,OAIAnF,KAAK4rE,cAAc9kF,GACnBkZ,KAAK4rE,cAAc9kF,GAAOwpB,WAAW0nB,aAAa4zC,EAAczmE,GAAInF,KAAK4rE,cAAc9kF,IAGvFkZ,KAAKs7F,UAAUnqF,YAAYy6D,EAAczmE,IAGjD,IAAI89F,EAAS,GAAG5lG,MAAMqC,KAAKM,KAAK4rE,eAChCq3B,EAAOp8E,OAAO//B,EAAO,EAAG8kF,EAAczmE,IACtCnF,KAAK4rE,cAAgBq3B,EACrBn8G,GAAS,EACoB,gBAAzBkZ,KAAK47B,iBACL57B,KAAKw+F,gBAEb,CACJ,CAC6B,YAAzBx+F,KAAK47B,iBAAiC57B,KAAK87F,SAC3C97F,KAAK+sC,wBAEL01D,GAAmC,IAAdF,IACrBviG,KAAK+hG,kBAET/hG,KAAK05F,cAAe,CACxB,EACAH,EAAal6F,UAAU6pE,oBAAsB,SAAU/qC,EAAQ+kE,GAC3D,IAAI9qH,EAAO+lD,EAAOiD,aAAa,QAAUjD,EAAOiD,aAAa,QAAUjD,EAAOiD,aAAa,MAC3F8hE,EAAO5sE,aAAa,OAAQl+C,GAC5B+lD,EAAO+C,gBAAgB,QAEvB,IADA,IAAI1K,EAAa,CAAC,WAAY,gBAAiB,QACtCrxB,EAAI,EAAGA,EAAIqxB,EAAWv+C,OAAQktB,IACnC,GAAKg5B,EAAOiD,aAAa5K,EAAWrxB,IAApC,CAGA,IAAI8gD,EAAO9nB,EAAOiD,aAAa5K,EAAWrxB,IAC1C+9F,EAAO5sE,aAAaE,EAAWrxB,GAAI8gD,GACnC9nB,EAAO+C,gBAAgB1K,EAAWrxB,GAHlC,CAKR,EACAo0F,EAAal6F,UAAUm1E,UAAY,WAC/B,EAGJ+kB,EAAal6F,UAAUyjG,yBAA2B,SAAUlwB,EAAIxnF,EAAMtE,GAClE,EAGJyyG,EAAal6F,UAAU0jG,kBAAoB,SAAU9pE,EAAMkqE,GACvD,EAEJ5J,EAAal6F,UAAUm/F,eAAiB,WACpC,EASJjF,EAAal6F,UAAU+jG,eAAiB,SAAU7lH,GAC9C,KAAKowB,EAAAA,EAAAA,IAAkB3N,KAAKi6F,UAAW,CACnC,IAAI3/G,EAAO0lB,KAAKo6F,WAAWp6F,KAAKi6F,UAAUI,OAC1C,GAAa,WAAT//G,GAA8B,WAATA,GAA8B,YAATA,EAC1C,IAAK,IAAIi0B,EAAK,EAAGvoB,EAAKga,KAAKi6F,SAAU1rF,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CACvD,IAAInjB,EAAOpF,EAAGuoB,GACd,KAAKZ,EAAAA,EAAAA,IAAkBviB,IAASA,IAAS7N,EACrC,OAAO6N,CAEf,MAGA,IAAK,IAAI2rC,EAAK,EAAGssE,EAAKrjG,KAAKi6F,SAAUljE,EAAKssE,EAAGprH,OAAQ8+C,IAAM,CACnD3rC,EAAOi4G,EAAGtsE,GACd,KAAKppB,EAAAA,EAAAA,IAAkBviB,KAASgiB,EAAAA,EAAAA,IAAUpN,KAAKnd,OAAOtF,MAAQyiB,KAAKnd,OAAOtF,MAAQ,QAAU6N,KAAU7N,EAClG,OAAO6N,CAEf,CAER,CACA,OAAO,IACX,EAQAmuG,EAAal6F,UAAUqoB,QAAU,WACzB9kB,SAASuuB,KAAK+F,SAASl3B,KAAKi5B,QAC5BjE,EAAAA,GAAaW,OAAO31B,KAAKi5B,KAAM,SAAUj5B,KAAK4gG,oBACzCjzF,EAAAA,EAAAA,IAAkB3N,KAAKqiG,YACxBriG,KAAKqiG,aAET9pE,EAAAA,EAAAA,IAAOv4B,KAAKi5B,OAEhBj5B,KAAK4rE,cAAgB,KACrB5rE,KAAKs7F,UAAY,KACjBt7F,KAAKi5B,KAAO,KACZj5B,KAAKo8F,kBAAoB,KACzBp8F,KAAKqiG,UAAY,KACjB52F,EAAOpM,UAAUqoB,QAAQhoB,KAAKM,KAClC,EACA2/B,EAAW,EACPrB,EAAAA,EAAAA,IAAQ,CAAEvmD,KAAM,KAAMwF,MAAO,KAAMqpE,QAAS,KAAMo2C,QAAS,MAAQhE,IACpEO,EAAal6F,UAAW,cAAU,GACrCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACVq7D,EAAal6F,UAAW,oBAAgB,GAC3CsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACVq7D,EAAal6F,UAAW,qBAAiB,GAC5CsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,qBACVq7D,EAAal6F,UAAW,yBAAqB,GAChDsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,mBACVq7D,EAAal6F,UAAW,6BAAyB,GACpDsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,SACVq7D,EAAal6F,UAAW,iBAAa,GACxCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,KACVq7D,EAAal6F,UAAW,kBAAc,GACzCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACVq7D,EAAal6F,UAAW,aAAS,GACpCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,eACVq7D,EAAal6F,UAAW,kBAAc,GACzCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVq7D,EAAal6F,UAAW,kBAAc,GACzCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,MACVq7D,EAAal6F,UAAW,cAAU,GACrCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVq7D,EAAal6F,UAAW,oBAAgB,GAC3CsgC,EAAW,EACPzB,EAAAA,EAAAA,OACDq7D,EAAal6F,UAAW,cAAU,GACrCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACD+pF,EAAal6F,UAAW,mBAAe,GAC1CsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACD+pF,EAAal6F,UAAW,sBAAkB,GAC7CsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACD+pF,EAAal6F,UAAW,qBAAiB,GAC5CsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACD+pF,EAAal6F,UAAW,cAAU,GACrCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACD+pF,EAAal6F,UAAW,iBAAa,GACxCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACD+pF,EAAal6F,UAAW,eAAW,GACtCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACD+pF,EAAal6F,UAAW,iBAAa,GACxCk6F,EAAe55D,EAAW,CACtBhB,EAAAA,IACD46D,EAEP,CApwCkC,CAowChClvD,EAAAA,4LC/0CE9K,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAazCC,EAA0C,SAAUC,EAAYzB,EAAQn/C,EAAK6gD,GAC7E,IAA2H3pB,EAAvHD,EAAI5X,UAAUpmB,OAAQ4O,EAAIovB,EAAI,EAAIkoB,EAAkB,OAAT0B,EAAgBA,EAAOhhD,OAAOihD,yBAAyB3B,EAAQn/C,GAAO6gD,EACrH,GAAuB,kBAAZ/gC,SAAoD,oBAArBA,QAAQihC,SAAyBl5C,EAAIiY,QAAQihC,SAASH,EAAYzB,EAAQn/C,EAAK6gD,QACpH,IAAK,IAAI16B,EAAIy6B,EAAW3nD,OAAS,EAAGktB,GAAK,EAAGA,KAAS+Q,EAAI0pB,EAAWz6B,MAAIte,GAAKovB,EAAI,EAAIC,EAAErvB,GAAKovB,EAAI,EAAIC,EAAEioB,EAAQn/C,EAAK6H,GAAKqvB,EAAEioB,EAAQn/C,KAAS6H,GAChJ,OAAOovB,EAAI,GAAKpvB,GAAKhI,OAAOs1C,eAAegK,EAAQn/C,EAAK6H,GAAIA,CAChE,EAaWy8G,EAAsB,CAC7B3/C,KAAM,iBACNw1C,MAAOF,EAAAA,GAAoBE,MAC3BlR,SAAUgR,EAAAA,GAAoBhR,SAC9BiR,IAAKD,EAAAA,GAAoBC,IACzBtmB,GAAIqmB,EAAAA,GAAoBrmB,GACxB2wB,QAAStK,EAAAA,GAAoBlgH,SAC7B0qB,KAAMw1F,EAAAA,GAAoBt1C,KAC1BlyC,MAAOwnF,EAAAA,GAAoBxnF,MAC3B3Y,MAAO,gBACP0qG,WAAY,gBACZC,KAAM,gCACNC,cAAe,cACfnmH,MAAO,gBACP8e,OAAQ,eACRsnG,SAAU,yCACVC,mBAAoB,0CACpBC,YAAa,iBACbC,aAAc,kBACdC,aAAc,sBACdntC,OAAQ,eACRnmC,OAAQ,eACRuzE,UAAW,eACXC,cAAe,oBACfC,gBAAiB,oBACjBC,YAAa,qBACbC,cAAe,gBAEfC,EAAc,CACdrjC,UAAW,KACXC,QAAS,IAaT7nF,EAA8B,SAAUqyB,GASxC,SAASryB,EAAasnB,EAAS1d,GAC3B,IAAIgtB,EAAQvE,EAAO/L,KAAKM,KAAMU,EAAS1d,IAAYgd,KAInD,OAHAgQ,EAAMs0F,gBAAiB,EACvBt0F,EAAMmiD,eAAgB,EACtBniD,EAAMy7C,WAAY,EACXz7C,CACX,CAyyFA,OAvzFAuvB,EAAUnmD,EAAcqyB,GAqBxBryB,EAAaimB,UAAU+rC,UAAY,WAC/BprC,KAAKukG,iBAAmB,KACxBvkG,KAAKhd,QAAQu0C,MAAMgN,QAAU,IAC7BvkC,KAAKwkG,iBACL/4F,EAAOpM,UAAU+rC,UAAU1rC,KAAKM,MAChCA,KAAK8tE,YAAc9tE,KAAKlZ,MACxBkZ,KAAKpC,YAAc,EACvB,EACAxkB,EAAaimB,UAAUmlG,eAAiB,WACpCxkG,KAAK+xE,aAAc,EACnB/xE,KAAKykG,iBAAkB,EACvBzkG,KAAK/M,cAAe,EACpB+M,KAAK0kG,eAAgB,EACrB1kG,KAAK2kG,iBAAkB,EACvB3kG,KAAK4kG,SAAU,EACf5kG,KAAK6kG,kBAAmB,EACxB7kG,KAAK8kG,iBAAkB,EACvB9kG,KAAK+kG,SAAU,EACf/kG,KAAKglG,YAAa,EAClBhlG,KAAKilG,cAAe,EACpBjlG,KAAKklG,iBAAkB,EACvBllG,KAAKmlG,YAAa,EAClBnlG,KAAKolG,YAAc,GACnBplG,KAAKqlG,aAAc,EACnBrlG,KAAK4tE,eAAgB,EACrB5tE,KAAKslG,UAAW,EAChBtlG,KAAKulG,mBAAqB,CAAEC,WAAW,GACvCxlG,KAAKylG,WAAa,CAAED,WAAW,GAC/BxlG,KAAK0lG,iBAAmB,CAAC,EACzB1lG,KAAK2lG,gBAAiB,EACtB3lG,KAAK4lG,iBAAkB,EACvB5lG,KAAK6lG,cAAe,EACpB7lG,KAAK8lG,gBAAiB,EACtB9lG,KAAK+lG,eAAgB,EACrB/lG,KAAK2+D,cAAgB,KACrB3+D,KAAK+rE,aAAe,CAChBvC,IAAK,MACLF,MAAO,KACPD,OAAQ,KACRnhE,IAAK,KACL6rD,KAAM,KACNiY,KAAM,KACNC,GAAI,KACJjY,OAAQ,KACRC,SAAU,KACV1zE,KAAM,SACNixB,MAAO,YACPyzD,KAAM,SACN+gC,MAAO,KAEf,EACA5sH,EAAaimB,UAAUm1E,UAAY,WAC3Bx0E,KAAKukE,UACLvkE,KAAKukE,SAAS5pC,cAAc,CAAE,OAAU36B,KAAK80D,QAErD,EACA17E,EAAaimB,UAAU2iG,WAAa,SAAUvmH,EAAG2mH,GAC7C32F,EAAOpM,UAAUisC,OAAO5rC,KAAKM,KAAMvkB,EAAG2mH,GACtCpiG,KAAKwvE,mBACLxvE,KAAKqvE,gBACT,EACAj2F,EAAaimB,UAAU4mG,iBAAmB,WACtC,GAA6B,iBAAzBjmG,KAAK47B,iBAA8D,SAAxB57B,KAAK2gE,eAA2B,CAC3E,IAAIulC,EAAelmG,KAAK+gE,aAAaC,UAAUzuD,cAAc,iBAC7B,KAA5BvS,KAAK8gE,aAAavjF,OAAgByiB,KAAK/M,cACvC2jC,EAAAA,EAAAA,IAAUsvE,EAAc,CAAC,eAAgB,CAAC,oBAG1CtvE,EAAAA,EAAAA,IAAUsvE,EAAc,CAAC,kBAAmB,CAAC,eAErD,CACJ,EACA9sH,EAAaimB,UAAU6kE,aAAe,SAAUzoF,GAC5CA,EAAEi1D,iBACF1wC,KAAKmmG,SAAS1qH,EAClB,EACArC,EAAaimB,UAAU+mG,kBAAoB,WAKvC,GAJApmG,KAAK0zE,cACL1zE,KAAK20E,kBACL30E,KAAKqmG,cACLrmG,KAAKi5B,KAAKuK,UAAY,EACO,iBAAzBxjC,KAAK47B,mBAAuCjuB,EAAAA,EAAAA,IAAkB3N,KAAKs7F,WAAY,CAC/E,IAAI1oB,EAAK5yE,KAAKs7F,UAAU/oF,cAAc,IAAM+wF,EAAoB1wB,IAC5DA,GACAA,EAAGh8C,UAAUzB,IAAImuE,EAAoB7xF,MAE7C,CACJ,EACAr4B,EAAaimB,UAAU8mG,SAAW,SAAU1qH,EAAG26C,GAC3Cp2B,KAAKsmG,kBAAqB34F,EAAAA,EAAAA,IAAkB3N,KAAKs4F,UAA6B,KAAhBt4F,KAAKs4F,WAC/D3qF,EAAAA,EAAAA,IAAkByoB,MAAiBzoB,EAAAA,EAAAA,IAAkByoB,MACpDzoB,EAAAA,EAAAA,IAAkByoB,EAAW/8C,cACvB+8C,EAAW/8C,sBAAsBuyG,EAAAA,GAAiD,IAAjCx1D,EAAW/8C,WAAWpB,WAC9E+nB,KAAK29F,UAAW,EAChB39F,KAAKumG,eAAenwE,IAExB,IAAIykE,EAAW76F,KAAKwmG,cAChBxmG,KAAK2+D,gBAAkBk8B,EAASt9G,OAGpCyiB,KAAKymG,cAAchrH,EACvB,EACArC,EAAaimB,UAAUknG,eAAiB,SAAUnwE,GAC1Cp2B,KAAKi5B,QACCtrB,EAAAA,EAAAA,IAAkByoB,MACnBzoB,EAAAA,EAAAA,IAAkByoB,EAAW/8C,cACvB+8C,EAAW/8C,sBAAsBuyG,EAAAA,GAAiD,IAAjCx1D,EAAW/8C,WAAWpB,SAQ1E+nB,KAAK9W,gBAA2C,iBAAzB8W,KAAK47B,mBACxBjuB,EAAAA,EAAAA,IAAkB3N,KAAKulG,mBAAmBjK,cAAe3tF,EAAAA,EAAAA,IAAkB3N,KAAKulG,mBAAmBtsE,OACvGj5B,KAAKulG,mBAAmBtsE,KAAKhhD,OAAS,GACtC+nB,KAAK+9F,iBAAiB/9F,KAAKulG,mBAAmBjK,UAAUlqF,WAAU,GAAOpR,KAAKulG,mBAAmBtsE,MAErGj5B,KAAKomG,sBAZLpmG,KAAK0mG,WAAa,KAClB1mG,KAAKulG,mBAAmBC,WAAY,EACpCxlG,KAAKulG,mBAAmBjK,UAAY,KACpCt7F,KAAKulG,mBAAmBtsE,KAAO,KAC/Bj5B,KAAKw8F,UAAUpmE,EAAW/8C,eAW7Bs0B,EAAAA,EAAAA,IAAkB3N,KAAKokG,iBACxBpkG,KAAKokG,cAAc7yF,UAAY,KAE9B5D,EAAAA,EAAAA,IAAkB3N,KAAK8gE,gBACxB9gE,KAAK8gE,aAAavjF,MAAQ,IAE9ByiB,KAAKziB,MAAQ,KACbyiB,KAAKs4F,SAAW,KAChBt4F,KAAKjoB,KAAO,KACZioB,KAAKlZ,MAAQ,KACbkZ,KAAK8tE,YAAc,KACnB9tE,KAAK5U,KAAO,KACZ4U,KAAKpC,YAAc,GACfoC,KAAKukG,oBACLhsE,EAAAA,EAAAA,IAAOv4B,KAAKukG,kBACZvkG,KAAK8gE,aAAavpC,MAAMuiB,QAAU,QAClC95C,KAAKukG,iBAAmB,MAE5BvkG,KAAK6yE,aAAa,KAAM,MACxB7yE,KAAK2lG,gBAAiB,EACtB3lG,KAAKshE,kBACLthE,KAAK2mG,eACT,EACAvtH,EAAaimB,UAAUunG,kBAAoB,WACvC,GAAI/nH,OAAOC,KAAKkhB,KAAKsqD,gBAAgBryE,OACjC,IAAK,IAAIs2B,EAAK,EAAGvoB,EAAKnH,OAAOC,KAAKkhB,KAAKsqD,gBAAiB/7C,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAC1E,IAAIs4F,EAAW7gH,EAAGuoB,GAClB,GAAiB,UAAbs4F,EAAsB,CACtB,IAAIC,EAAqB9mG,KAAKsqD,eAAe,GAAKu8C,GAAUpwG,QAAQ,OAAQ,KAAMwkD,OACxD,KAAtB6rD,IACArwE,EAAAA,EAAAA,IAAS,CAACz2B,KAAK+gE,aAAaC,WAAY8lC,EAAkB7yG,MAAM,KAExE,MACK,GAAiB,aAAb4yG,GAAkE,aAAvC7mG,KAAKsqD,eAAe,GAAKu8C,GACzD7mG,KAAK9mB,SAAU,EACf8mB,KAAKuuD,iBAEJ,GAAiB,aAAbs4C,IAA4Bl5F,EAAAA,EAAAA,IAAkB3N,KAAKsqD,eAAe,GAAKu8C,IAI3E,GAAiB,UAAbA,EACL7mG,KAAK+gE,aAAaC,UAAU1qC,aAAa,QAASt2B,KAAKsqD,eAAe,GAAKu8C,SAE1E,GAAiB,eAAbA,EACwB,iBAAzB7mG,KAAK47B,iBAA+D,aAAzB57B,KAAK47B,gBAChD57B,KAAK8gE,aAAaxqC,aAAa,aAAct2B,KAAKsqD,eAAe,GAAKu8C,IAGtE7mG,KAAK+gE,aAAaC,UAAU1qC,aAAa,aAAct2B,KAAKsqD,eAAe,GAAKu8C,QAGnF,CACD,IAAIE,EAAc,CAAC,QAAS,KAAM,cAC9B,OAAQ,eAAgB,iBAAkB,aAAc,YAAa,aAE5C,iBAAzB/mG,KAAK47B,iBAA+D,aAAzB57B,KAAK47B,iBAChDmrE,EAAYtnH,KAAK,YAFF,CAAC,OAAQ,YAIX6W,QAAQuwG,IAAa,GAAkC,IAA7BA,EAASvwG,QAAQ,QACxD0J,KAAKokG,cAAc9tE,aAAauwE,EAAU7mG,KAAKsqD,eAAe,GAAKu8C,IAE9DE,EAAYzwG,QAAQuwG,IAAa,EACrB,gBAAbA,EACAjmC,EAAAA,EAAMwJ,eAAepqE,KAAKsqD,eAAe,GAAKu8C,GAAW7mG,KAAK8gE,cAG9D9gE,KAAK8gE,aAAaxqC,aAAauwE,EAAU7mG,KAAKsqD,eAAe,GAAKu8C,IAItE7mG,KAAK+gE,aAAaC,UAAU1qC,aAAauwE,EAAU7mG,KAAKsqD,eAAe,GAAKu8C,GAEpF,MAnCI7mG,KAAKqhE,UAAW,EAChBrhE,KAAK+6B,UAmCb,CAEyB,iBAAzB/6B,KAAK47B,iBAA+D,aAAzB57B,KAAK47B,iBAChD57B,KAAK+gE,aAAaC,UAAU9/B,gBAAgB,WAEpD,EACA9nD,EAAaimB,UAAU2nG,kBAAoB,WACvC,MAAO,CACH,gBAAiB,QACjB,KAAQ,WACR,gBAAiB,QACjB,YAAa,SACb,kBAAmBhnG,KAAKokG,cAAcx/G,GAE9C,EACAxL,EAAaimB,UAAUirE,aAAe,WAClC1J,EAAAA,EAAM0J,aAAatqE,KAAK2qC,UAAW,CAAC3qC,KAAK8gE,aAAa7nB,gBAClDj5C,KAAKukE,WACLvkE,KAAKukE,SAAS55B,UAAY3qC,KAAK2qC,UAC/B3qC,KAAKukE,SAASxpC,WAEtB,EACA3hD,EAAaimB,UAAUkvD,UAAY,WAC/BqS,EAAAA,EAAM7lF,WAAWilB,KAAK9mB,QAAS8mB,KAAK8gE,cAChC9gE,KAAK9mB,UACLi+C,EAAAA,EAAAA,IAAY,CAACn3B,KAAK+gE,aAAaC,WAAYsiC,EAAoBC,SAC/DvjG,KAAK8gE,aAAaxqC,aAAa,gBAAiB,SAChDt2B,KAAKinG,gBAAgB3wE,aAAa,WAAYt2B,KAAKozD,YAGnDpzD,KAAKknG,aACLzwE,EAAAA,EAAAA,IAAS,CAACz2B,KAAK+gE,aAAaC,WAAYsiC,EAAoBC,SAC5DvjG,KAAK8gE,aAAaxqC,aAAa,gBAAiB,QAChDt2B,KAAKinG,gBAAgB7zC,UAAY,EAEzC,EAMAh6E,EAAaimB,UAAUytC,eAAiB,WACpC,OAAO9sC,KAAKotC,aAAa,CAAC,SAC9B,EACAh0D,EAAaimB,UAAU48F,cAAgB,WACnC,MAAO,gBACX,EACA7iH,EAAaimB,UAAU8nG,gBAAkB,SAAUnkH,GAClB,iBAAzBgd,KAAK47B,kBACL54C,EAAQowE,UAAY,EAE5B,EACAh6E,EAAaimB,UAAU4nG,cAAgB,WACnC,OAAQt5F,EAAAA,EAAAA,IAAkB3N,KAAK+gE,cAA8C,KAA9B/gE,KAAK+gE,aAAaC,SACrE,EACA5nF,EAAaimB,UAAU+nG,eAAiB,WACpC,MAAO,kBACX,EACAhuH,EAAaimB,UAAUgoG,iBAAmB,SAAUtvH,GAChD,OAAOioB,KAAKsnG,kBAAkBtnG,KAAKg6F,eAAejiH,GACtD,EACAqB,EAAaimB,UAAUioG,kBAAoB,SAAU/pH,GAGjD,IAFA,IAAI6N,EAEKmjB,EAAK,EAAGg5F,EADDvnG,KAAK0hG,WACqBnzF,EAAKg5F,EAAYtvH,OAAQs2B,IAAM,CACrE,IAAIi5F,EAASD,EAAYh5F,GACzB,GAAIvO,KAAKysE,kBAAkB+6B,EAAOpmE,aAAa,iBAAmB7jD,EAAO,CACrE6N,EAAOo8G,EACP,KACJ,CACJ,CACA,OAAOp8G,CACX,EACAhS,EAAaimB,UAAUguE,UAAY,WAC/BrtE,KAAKgiG,aACDhiG,KAAK3mB,sBAAsBuyG,EAAAA,EAC3B5rF,KAAK6kG,kBAAmB,EAGxB7kG,KAAKynG,cAEb,EACAruH,EAAaimB,UAAUooG,aAAe,WAClC,IAAK95F,EAAAA,EAAAA,IAAkB3N,KAAKziB,OAGvB,GAAIyiB,KAAKjoB,OAAQ41B,EAAAA,EAAAA,IAAkB3N,KAAKziB,OAAQ,CACjD,IAAIyF,EAAUgd,KAAKqnG,iBAAiBrnG,KAAKjoB,MACzC,IAAI41B,EAAAA,EAAAA,IAAkB3qB,GAElB,YADAgd,KAAK26B,cAAc,CAAE5iD,KAAM,OAI3BioB,KAAK6yE,aAAa7vF,EAAS,KAEnC,MAEIgd,KAAK6yE,aAAa7yE,KAAK4rE,cAAc5rE,KAAK8tE,aAAc,WAbxD9tE,KAAK6yE,aAAa7yE,KAAKsnG,kBAAkBtnG,KAAKziB,OAAQ,MAe1DyiB,KAAK0nG,iBACL9mC,EAAAA,EAAM5+E,SAASge,KAAKjoB,KAAMioB,KAAK8gE,aAAc9gE,KAAK2gE,eAAgB3gE,KAAKoiE,gBAC3E,EACAhpF,EAAaimB,UAAUsoG,cAAgB,SAAUlsH,GAC7C,GAAKukB,KAAK9mB,QAAV,CAGA,IAAIilD,EAAS1iD,EAAEmsH,cACXj4D,EAAgBl0D,EAAE0iD,OAClByvC,EAAgB5tE,KAAK4tE,cACzB5tE,KAAK4tE,eAAgB,GAEjBA,GAAkB5tE,KAAKykG,kBAAmBzkG,KAAK+xE,cAAiBpkE,EAAAA,EAAAA,IAAkBgiC,KACjF3vC,KAAK6nG,oBAAoBl6F,EAAAA,EAAAA,IAAkBwwB,IAS5Cn+B,KAAKykG,mBAAqB92F,EAAAA,EAAAA,IAAkB3N,KAAKukE,WAC9C3hE,SAASuuB,KAAK+F,SAASl3B,KAAKukE,SAASvhF,UACxCgd,KAAKukE,SAASvhF,QAAQ4zC,UAAUM,SAASosE,EAAoBS,cACxD/jG,KAAK2kG,kBACN3kG,KAAKykG,iBAAkB,KAIA,iBAAzBzkG,KAAK47B,kBAAuC57B,KAAK0kG,eAAiBvmE,IAAWn+B,KAAK8gE,eAChFl+D,SAASmjE,gBAAkB5nC,GAAWv7B,SAASmjE,gBAAkB5nC,GACjEwR,EAAc/Y,UAAUM,SAASosE,EAAoBE,eACxD71F,EAAAA,EAAAA,IAAkBwwB,IAAoC,iBAAzBn+B,KAAK47B,iBAAsC57B,KAAK9W,gBAC1EymD,IAAkB3vC,KAAK+gE,aAAaC,WAAuC,iBAAzBhhE,KAAK47B,kBAC1D57B,KAAK+gE,aAAaC,UAAU9pC,SAASiH,IAAWn+B,KAAKslG,YACtDtlG,KAAKykG,kBAAkBzkG,KAAK+xE,YAC5B/xE,KAAK8nG,eAAersH,GACpBukB,KAAKslG,UAAW,IAEhBtlG,KAAKk9F,aAAgBl9F,KAAK+xE,aAAgB/xE,KAAK4tE,gBAC/C5tE,KAAK29F,UAAW,EAChB39F,KAAK2kG,iBAAkB,IA5BM,iBAAzB3kG,KAAK47B,iBAAsC57B,KAAK9W,gBAAkB8W,KAAK+xE,YACvE/xE,KAAK6jG,YAAYpyF,QAGjBzR,KAAKinG,gBAAgBx1F,OAZ7B,CAsCJ,EACAr4B,EAAaimB,UAAUyoG,eAAiB,SAAUrsH,GAC9CukB,KAAK/M,cAAe,EACpB+M,KAAKmmE,SAAS1qF,GACdukB,KAAK+nG,YACT,EACA3uH,EAAaimB,UAAU0oG,WAAa,WAC3B/nG,KAAK9mB,UAGN8mB,KAAKglG,aACLhlG,KAAK2lG,gBAAiB,EACtB3lG,KAAKymG,cAAc,OAEvBzmG,KAAKimG,mBACLjmG,KAAKmrD,cAAcnrD,KAAKokG,cAAe,UACV,iBAAzBpkG,KAAK47B,iBAA+D,UAAzB57B,KAAKhd,QAAQmzC,SACxDn2B,KAAKmrD,cAAcnrD,KAAK8gE,aAAc,QAEtC9gE,KAAK+gE,aAAakD,cAClBxtC,EAAAA,EAAAA,IAAS,CAACz2B,KAAK+gE,aAAakD,aAAcq/B,EAAoBW,eAElEjkG,KAAK81B,QAAQ,QACjB,EACA18C,EAAaimB,UAAU2oG,QAAU,SAAUvsH,GACvC,IAAKukB,KAAK/M,aAAc,CACpB+M,KAAK/M,cAAe,EACpB,IAAIhF,EAAO,CAAEgF,eAAcxX,EAAkBsG,MAAOtG,GACpDukB,KAAK81B,QAAQ,QAAS7nC,EAC1B,CACA+R,KAAKshE,iBACT,EACAloF,EAAaimB,UAAU4oG,kBAAoB,SAAUxsH,GACjD,IAAI0wE,GAAc/yB,EAAAA,EAAAA,IAAQp5B,KAAK8gE,aAAc,QAC7C,GAAI3U,GAAe1wE,EAAE0iD,SAAWguB,EAAa,CACzC,IAAIxuD,EAAOqC,KAAKhd,QAAQmzC,UAAYn2B,KAAKonG,iBAAoB,KAAOpnG,KAAK8gE,aAAa1/B,aAAa,SACnGphC,KAAKjoB,KAAO4lB,CAChB,CACJ,EACAvkB,EAAaimB,UAAU6oG,UAAY,WAC/BlzE,EAAAA,GAAaG,IAAIn1B,KAAK+gE,aAAaC,UAAW,YAAahhE,KAAKmoG,cAAenoG,MAC/Eg1B,EAAAA,GAAaG,IAAIn1B,KAAK+gE,aAAaC,UAAW,QAAShhE,KAAKqnD,QAASrnD,MACrEg1B,EAAAA,GAAaG,IAAIn1B,KAAK+gE,aAAaC,UAAW,WAAYhhE,KAAK4+E,SAAU5+E,MACzEg1B,EAAAA,GAAaG,IAAI70C,OAAQ,SAAU0f,KAAKooG,aAAcpoG,MACtDA,KAAKqoG,iBACT,EACAjvH,EAAaimB,UAAUgpG,gBAAkB,WACrCrzE,EAAAA,GAAaG,IAAIn1B,KAAKinG,gBAAiB,OAAQjnG,KAAK2nG,cAAe3nG,MACnE,IAAImsD,GAAc/yB,EAAAA,EAAAA,IAAQp5B,KAAK8gE,aAAc,QACzC3U,GACAn3B,EAAAA,GAAaG,IAAIg3B,EAAa,QAASnsD,KAAKioG,kBAAmBjoG,MAE9D4yB,EAAAA,GAAQY,SAMTxzB,KAAKg3D,eAAiB,IAAI/c,EAAAA,GAAej6C,KAAKinG,gBAAiB,CAC3D/rD,UAAWl7C,KAAKsoG,uBAAuBtpG,KAAKgB,MAAO26C,WAAY36C,KAAK+rE,aAAc32C,UAAW,YANjGp1B,KAAKg3D,eAAiB,IAAI/c,EAAAA,GAAej6C,KAAKinG,gBAAiB,CAC3D/rD,UAAWl7C,KAAKuoG,iBAAiBvpG,KAAKgB,MAAO26C,WAAY36C,KAAK+rE,aAAc32C,UAAW,YAQ/Fp1B,KAAK0kE,gBACT,EACAtrF,EAAaimB,UAAU+oG,aAAe,WAC9BpoG,KAAK+xE,aACL/xE,KAAKukE,SAASiE,gBAAgBxoE,KAAK+gE,aAAaC,UAExD,EACA5nF,EAAaimB,UAAUqlE,eAAiB,WAChC1kE,KAAKoiE,iBACLptC,EAAAA,GAAaG,IAAIn1B,KAAK+gE,aAAakD,YAAa,YAAajkE,KAAKkkE,aAAclkE,KAExF,EACA5mB,EAAaimB,UAAUmpG,kBAAoB,aAClC76F,EAAAA,EAAAA,IAAkB3N,KAAK+gE,eAAiB/gE,KAAKinG,iBAC9CjyE,EAAAA,GAAaW,OAAO31B,KAAKinG,gBAAiB,OAAQjnG,KAAK2nG,eAE3D,IAAIx7C,EAAcnsD,KAAK8gE,eAAgB1nC,EAAAA,EAAAA,IAAQp5B,KAAK8gE,aAAc,QAC9D3U,GACAn3B,EAAAA,GAAaW,OAAOw2B,EAAa,QAASnsD,KAAKioG,mBAE9Cr1E,EAAAA,GAAQY,UACTxzB,KAAKg3D,eAAetvC,UAEpB1nB,KAAKoiE,iBACLptC,EAAAA,GAAaW,OAAO31B,KAAK+gE,aAAakD,YAAa,YAAajkE,KAAKkkE,aAE7E,EACA9qF,EAAaimB,UAAUiiE,gBAAkB,WACjCthE,KAAKoiE,kBAC2B,KAA5BpiE,KAAK8gE,aAAavjF,OAAiByiB,KAAKqhE,UAIxC5qC,EAAAA,EAAAA,IAAS,CAACz2B,KAAK+gE,aAAakD,aAAcq/B,EAAoBW,gBAH9D9sE,EAAAA,EAAAA,IAAY,CAACn3B,KAAK+gE,aAAakD,aAAcq/B,EAAoBW,eAM7E,EAMA7qH,EAAaimB,UAAUgwE,eAAiB,YAC/B1hE,EAAAA,EAAAA,IAAkB3N,KAAKi5B,QACxBjE,EAAAA,GAAaG,IAAIn1B,KAAKi5B,KAAM,QAASj5B,KAAK2yE,aAAc3yE,MACxDg1B,EAAAA,GAAaG,IAAIn1B,KAAKi5B,KAAM,YAAaj5B,KAAKszE,YAAatzE,MAC3Dg1B,EAAAA,GAAaG,IAAIn1B,KAAKi5B,KAAM,WAAYj5B,KAAK2zE,aAAc3zE,MAEnE,EACA5mB,EAAaimB,UAAUu/E,SAAW,SAAUnjG,GACrB,KAAfA,EAAEgtH,UAAkC,KAAfhtH,EAAEgtH,gBACLvtH,IAAd8kB,KAAKi5B,MACLj5B,KAAKgiG,aAEThiG,KAAK0oG,eAAiBjtH,EACtBukB,KAAK2oG,0BAA0BltH,GAEvC,EACArC,EAAaimB,UAAUspG,0BAA4B,SAAUltH,GACpDukB,KAAKk9F,cAAgBvvF,EAAAA,EAAAA,IAAkB3N,KAAKi5B,QAC5CtrB,EAAAA,EAAAA,IAAkB3N,KAAKi5B,KAAK1mB,cAAc,SAAUvS,KAAK9mB,SAAY8mB,KAAKqhE,UAC3ErhE,KAAKg4F,kBAAkBv8G,EAE/B,EACArC,EAAaimB,UAAUszE,aAAe,SAAUl3F,GAC5C,IAAI0iD,EAAS1iD,EAAE0iD,OACXy0C,GAAKx5C,EAAAA,EAAAA,IAAQ+E,EAAQ,IAAM86D,EAAAA,GAAoBrmB,IACnD,GAAK5yE,KAAKyzE,UAAUb,GAIpB,GADA5yE,KAAK6yE,aAAaD,EAAIn3F,GAClBm3C,EAAAA,GAAQY,UAAYxzB,KAAK6nG,iBACzB7kG,QAAQ4lG,WAEP,CAED5oG,KAAKgyE,WADO,IACWv2F,EAC3B,CACJ,EACArC,EAAaimB,UAAUi0E,YAAc,SAAU73F,GAC3C,IAAI83F,GAAYn6C,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,IAAM86D,EAAAA,GAAoBrmB,IAC5D5yE,KAAKwzE,SAASD,EAClB,EACAn6F,EAAaimB,UAAUm0E,SAAW,SAAUZ,GACpC5yE,KAAK9mB,SAAW8mB,KAAKyzE,UAAUb,KAAQA,EAAGh8C,UAAUM,SAAS+hE,EAAAA,GAAoBE,SACjFn5F,KAAK0zE,eACLj9C,EAAAA,EAAAA,IAAS,CAACm8C,GAAKqmB,EAAAA,GAAoBE,OAE3C,EACA//G,EAAaimB,UAAUs0E,aAAe,WAClC3zE,KAAK0zE,aACT,EACAt6F,EAAaimB,UAAUq0E,YAAc,WACjC,GAAI1zE,KAAKi5B,KAAM,CACX,IAAI08C,EAAc31E,KAAKi5B,KAAKnoB,iBAAiB,IAAMmoF,EAAAA,GAAoBE,OACnExjB,GAAeA,EAAY19F,SAC3Bk/C,EAAAA,EAAAA,IAAYw+C,EAAasjB,EAAAA,GAAoBE,MAErD,CACJ,EACA//G,EAAaimB,UAAUo0E,UAAY,SAAUb,GACzC,OAAQA,GAAMA,EAAG1sB,aAAa,SAAuC,WAA5B0sB,EAAGxxC,aAAa,OAC7D,EACAhoD,EAAaimB,UAAU24F,kBAAoB,SAAUv8G,GACjD,GAAIukB,KAAK4rE,cAAc3zF,OAAS,EAAG,CAC/B,IAAI26F,GAAKolB,EAAAA,EAAAA,IAAkBv8G,EAAEgtH,SAAUzoG,KAAK4rE,cAAe5rE,KAAK8tE,aAAa,EAAM9tE,KAAKhd,QAAQ4B,KAC3F+oB,EAAAA,EAAAA,IAAkBilE,KACnB5yE,KAAK6yE,aAAaD,EAAIn3F,GACtBukB,KAAK4wE,oBAEb,CACJ,EAMAx3F,EAAaimB,UAAU++F,YAAc,YAC5BzwF,EAAAA,EAAAA,IAAkB3N,KAAK6oG,mBACxBzK,EAAAA,EAAAA,IAAYp+F,KAAK6oG,iBACjB1xE,EAAAA,EAAAA,IAAY,CAACn3B,KAAK6oG,gBAAiBvF,EAAoBa,aACvDnkG,KAAK6oG,eAAet3F,UAAY,GAChCvR,KAAK6oG,eAAiB,KAE9B,EAMAzvH,EAAaimB,UAAUu+F,YAAc,YAC7BjwF,EAAAA,EAAAA,IAAkB3N,KAAK6oG,kBACvB7oG,KAAK6oG,eAAiBj2E,EAAAA,GAAQY,YAAa7lB,EAAAA,EAAAA,IAAkB3N,KAAK8oG,iBAAmB9oG,KAAK8oG,eAAe7nC,QAAQ,MAC5GtzD,EAAAA,EAAAA,IAAkB3N,KAAK8oG,iBAAmB9oG,KAAK8oG,eAAe7nC,QAAQ,IAAMjhE,KAAK+gE,aAAaE,QAAQ,IAC3GxqC,EAAAA,EAAAA,IAAS,CAACz2B,KAAK6oG,gBAAiBvF,EAAoBa,cACpD4E,EAAAA,EAAAA,IAAc,CACV5qE,OAAQn+B,KAAK6oG,eACb90D,MAAOnhB,EAAAA,GAAQY,SAAW,OAAS,QACpCxzB,KAAK4Q,gBACRgtF,EAAAA,EAAAA,IAAY59F,KAAK6oG,gBAEzB,EACAzvH,EAAaimB,UAAUkpG,iBAAmB,SAAU9sH,GAChD,GAAKukB,KAAK9mB,QAAV,CAGA,IAAI8vH,EAA6B,WAAbvtH,EAAEwnB,QAAoC,aAAbxnB,EAAEwnB,OAC3CgmG,EAA0C,iBAAzBjpG,KAAK47B,kBAAoD,SAAbngD,EAAEwnB,QAAkC,QAAbxnB,EAAEwnB,QAC1FjD,KAAKqlG,YAA2B,WAAb5pH,EAAEwnB,OACrBjD,KAAKslG,UAAYtlG,KAAK+xE,aAA4B,QAAbt2F,EAAEwnB,OACvC,IAAIkwE,EAA6B,SAAb13F,EAAEwnB,QAAkC,OAAbxnB,EAAEwnB,QAAgC,WAAbxnB,EAAEwnB,QAAoC,aAAbxnB,EAAEwnB,QACvE,SAAbxnB,EAAEwnB,QAAkC,QAAbxnB,EAAEwnB,OAChC,MAAKjD,KAAKkpG,iBAAmBF,GAAiBC,IAAoBjpG,KAAK+xE,eAGlE/xE,KAAKqhE,SAAU,CAChB,IAAI8nC,EAA2B,QAAb1tH,EAAEwnB,QAAiC,UAAbxnB,EAAEwnB,OAK1C,KAJI0K,EAAAA,EAAAA,IAAkB3N,KAAKi5B,OAAUj5B,KAAKk9F,aAAgBiM,GAA4B,WAAb1tH,EAAEwnB,SACvEjD,KAAK0oG,eAAiBjtH,EACtBukB,KAAKgiG,WAAWvmH,KAEhBkyB,EAAAA,EAAAA,IAAkB3N,KAAKi5B,SAAWtrB,EAAAA,EAAAA,IAAkB3N,KAAK4rE,gBACzDuH,GAA8C,IAA9BnzE,KAAK4rE,cAAc3zF,QAAiB+nB,KAAKk9F,YACzD,OAQJ,QANKiM,GAAwC,iBAAzBnpG,KAAK47B,iBAAuC57B,KAAK+xE,aACjD,WAAbt2F,EAAEwnB,SACLxnB,EAAEi1D,iBAEN1wC,KAAKglG,WAA0B,WAAbvpH,EAAEwnB,QAA8BjD,KAAKglG,WACvDhlG,KAAK+kG,SAAW5xB,GAA6B,WAAb13F,EAAEwnB,QAA+BjD,KAAK+kG,QAC9DtpH,EAAEwnB,QACN,IAAK,OACL,IAAK,KACDjD,KAAKopG,mBAAmB3tH,GACxB,MACJ,IAAK,SACDukB,KAAKqpG,gBAAgBrpG,KAAK8tE,YAAc9tE,KAAKspG,eAAgB7tH,GAC7DA,EAAEi1D,iBACF,MACJ,IAAK,WACD1wC,KAAKupG,kBAAkBvpG,KAAK8tE,YAAc9tE,KAAKspG,eAAgB7tH,GAC/DA,EAAEi1D,iBACF,MACJ,IAAK,OAGL,IAAK,MACD1wC,KAAKwpG,oBAAoB/tH,GACzB,MACJ,IAAK,QAC4B,iBAAzBukB,KAAK47B,kBACA57B,KAAK2kG,iBACN3kG,KAAKypG,aAGb,MACJ,IAAK,OACDzpG,KAAKypG,UAAUhuH,GACf,MACJ,IAAK,OACDukB,KAAK6lG,aAAe7lG,KAAK+xE,YACzB/xE,KAAKknG,UAAUzrH,GACfukB,KAAK0pG,cAAcjuH,GACnB,MACJ,IAAK,QACDukB,KAAK2pG,kBAAkBluH,GACvB,MACJ,IAAK,MACDukB,KAAK4pG,wBAAwBnuH,GAC7B,MACJ,IAAK,SACL,IAAK,QACGukB,KAAK+xE,cACL/xE,KAAKknG,UAAUzrH,GACfukB,KAAK0pG,cAAcjuH,IAInC,CA1EA,CA2EJ,EACArC,EAAaimB,UAAU+pG,mBAAqB,SAAU3tH,GAClD,IAAIouH,EAAW7pG,KAAKi5B,KAAK1mB,cAAc,IAAM+wF,EAAoB7xF,OACjE,GAAIzR,KAAK8pG,kBAAkBD,GACvB7pG,KAAK6yE,aAAag3B,EAAUpuH,QAE3B,KAAKkyB,EAAAA,EAAAA,IAAkB3N,KAAK4rE,eAAgB,CAC7C,IAAI9kF,EAAqB,SAAbrL,EAAEwnB,OAAoBjD,KAAK8tE,YAAc,EAAI9tE,KAAK8tE,YAAc,EACxErkE,EAAa,EACY,iBAAzBzJ,KAAK47B,kBACLnyB,EAA0B,SAAbhuB,EAAEwnB,SAAqB0K,EAAAA,EAAAA,IAAkB3N,KAAK8tE,aAAe,EAAI9tE,KAAK4rE,cAAc3zF,OAAS,EAC1G6O,EAAQA,EAAQ,EAAIkZ,KAAK4rE,cAAc3zF,OAAS,EAAI6O,IAAUkZ,KAAK4rE,cAAc3zF,OAAS,EAAI6O,GAElG,IAAI2uF,OAAW,GACc,iBAAzBz1E,KAAK47B,iBAA+D,iBAAzB57B,KAAK47B,iBAAsC57B,KAAK+xE,eAC3F0D,GAAW9nE,EAAAA,EAAAA,IAAkB3N,KAAK8tE,aAAe9tE,KAAK4rE,cAAcniE,GAC9DzJ,KAAK4rE,cAAc9kF,KAExB6mB,EAAAA,EAAAA,IAAkB8nE,IACnBz1E,KAAK6yE,aAAa4C,EAAUh6F,EAEpC,CACAA,EAAEi1D,gBACN,EACAt3D,EAAaimB,UAAUmqG,oBAAsB,SAAU/tH,GACnD,GAA6B,iBAAzBukB,KAAK47B,gBAAoC,CACzC,IAAImuE,EAAS,EAQb,GANIA,EADa,SAAbtuH,EAAEwnB,OACO,EAGAjD,KAAK0hG,WAAWzpH,OAAS,EAEtCwD,EAAEi1D,iBACE1wC,KAAK8tE,cAAgBi8B,EACrB,OAEJ/pG,KAAK6yE,aAAa7yE,KAAK4rE,cAAcm+B,GAAStuH,EAClD,CACJ,EACArC,EAAaimB,UAAUuqG,wBAA0B,SAAUnuH,GAC1B,iBAAzBukB,KAAK47B,gBACL57B,KAAK2pG,kBAAkBluH,GAGnBukB,KAAK+xE,cACL/xE,KAAKknG,UAAUzrH,GACfukB,KAAK0pG,cAAcjuH,GAG/B,EACArC,EAAaimB,UAAUipG,uBAAyB,SAAU7sH,GACtD,GAAKukB,KAAK9mB,WAGL8mB,KAAKkpG,iBAAqBlpG,KAAK+xE,eAG/B/xE,KAAKqhE,SAAU,CAKhB,QAJkBnmF,IAAd8kB,KAAKi5B,MAAuBj5B,KAAKk9F,cACjCl9F,KAAK0oG,eAAiBjtH,EACtBukB,KAAKgiG,eAELr0F,EAAAA,EAAAA,IAAkB3N,KAAKi5B,SAAWtrB,EAAAA,EAAAA,IAAkB3N,KAAK4rE,gBAC3B,IAA9B5rE,KAAK4rE,cAAc3zF,QAAiB+nB,KAAKk9F,YACzC,OAEa,UAAbzhH,EAAEwnB,QACFjD,KAAK2pG,kBAAkBluH,EAE/B,CACJ,EACArC,EAAaimB,UAAUsqG,kBAAoB,SAAUluH,GACjD,GAAIukB,KAAK+xE,YAAa,CAClB,IAAIa,EAAK5yE,KAAKi5B,KAAK1mB,cAAc,IAAM+wF,EAAoB7xF,OACvDmhE,IACA5yE,KAAK6yE,aAAaD,EAAIn3F,GACtBukB,KAAK+kG,SAAU,GAEf/kG,KAAKglG,aACLhlG,KAAK2lG,gBAAiB,EACtB3lG,KAAKymG,cAAchrH,IAEvBukB,KAAKknG,UAAUzrH,GACfukB,KAAK0pG,cAAcjuH,EACvB,MAEIukB,KAAKypG,WAEb,EACArwH,EAAaimB,UAAUyqG,kBAAoB,SAAU9mH,GACjD,QAAQ2qB,EAAAA,EAAAA,IAAkB3qB,EAC9B,EACA5J,EAAaimB,UAAUiqG,aAAe,WAClC,IAAIr4B,EAAWjxE,KAAKi5B,KAAKrC,UAAUM,SAAS+hE,EAAAA,GAAoBG,QAAU,KACtEl1D,iBAAiBlkC,KAAK0hG,WAAW,GAAI,MAAMv9D,iBAAiB,UAChE,OAAOtiC,KAAKuvE,MAAMpxE,KAAKi5B,KAAKiK,wBAAwB8Q,OAAS90D,SAAS+xF,EAAU,IACpF,EACA73F,EAAaimB,UAAUgqG,gBAAkB,SAAUW,EAAOjoH,GACtD,IAAIkoH,EAAeD,GAAS,EAAIhqG,KAAK4rE,cAAco+B,EAAQ,GAAKhqG,KAAK4rE,cAAc,GACnF5rE,KAAK6yE,aAAao3B,EAAcloH,EACpC,EACA3I,EAAaimB,UAAUkqG,kBAAoB,SAAUS,EAAOjoH,GACxD,IAAIk3C,EAAOj5B,KAAK0hG,WACZuI,EAAeD,GAAS/wE,EAAKhhD,OAAS+nB,KAAK4rE,cAAco+B,EAAQ,GAAKhqG,KAAK4rE,cAAc3yC,EAAKhhD,OAAS,GAC3G+nB,KAAK6yE,aAAao3B,EAAcloH,EACpC,EACA3I,EAAaimB,UAAU6qG,YAAc,YAC5Bv8F,EAAAA,EAAAA,IAAkB3N,KAAK+gE,gBACxB/rC,EAAAA,GAAaW,OAAO31B,KAAK+gE,aAAaC,UAAW,YAAahhE,KAAKmoG,eACnEnzE,EAAAA,GAAaW,OAAO31B,KAAK+gE,aAAaC,UAAW,WAAYhhE,KAAK4+E,UAClE5pD,EAAAA,GAAaW,OAAO31B,KAAK+gE,aAAaC,UAAW,QAAShhE,KAAKqnD,SAC/DryB,EAAAA,GAAaW,OAAOr1C,OAAQ,SAAU0f,KAAKooG,eAE/CpoG,KAAKwoG,mBACT,EAMApvH,EAAaimB,UAAUmwE,iBAAmB,WAClCxvE,KAAKi5B,OACLjE,EAAAA,GAAaW,OAAO31B,KAAKi5B,KAAM,QAASj5B,KAAK2yE,cAC7C39C,EAAAA,GAAaW,OAAO31B,KAAKi5B,KAAM,YAAaj5B,KAAKszE,aACjDt+C,EAAAA,GAAaW,OAAO31B,KAAKi5B,KAAM,WAAYj5B,KAAK2zE,cAExD,EACAv6F,EAAaimB,UAAU8qG,cAAgB,SAAUvlH,GAC7C,MAAO,QAAUA,EAAG6R,QAAQ,8BAA+B,QAAU,IACzE,EACArd,EAAaimB,UAAU+qG,gBAAkB,SAAU3uH,GAC/C,IAAI0iD,EAAS1iD,EAAE0iD,OACf,KAAOxwB,EAAAA,EAAAA,IAAkB3N,KAAKukE,YAAanrC,EAAAA,EAAAA,IAAQ+E,EAAQn+B,KAAKmqG,cAAcnqG,KAAKukE,SAASvhF,QAAQ4B,OAC/F+oB,EAAAA,EAAAA,IAAkB3N,KAAK+gE,eAAkB/gE,KAAK+gE,aAAaC,UAAU9pC,SAASz7C,EAAE0iD,QAY5EA,IAAWn+B,KAAK8gE,cAAkB9gE,KAAK9W,gBAAkBi1C,IAAWn+B,KAAK6jG,aAChD,aAAzB7jG,KAAK47B,kBACL57B,KAAK9W,gBAAkB0pC,EAAAA,GAAQY,UAAY2K,IAAWn+B,KAAK+gE,aAAaE,QAAQ,KACrFjhE,KAAK4tE,eAAiBh7C,EAAAA,GAAQ6C,MAA8B,SAAtB7C,EAAAA,GAAQyB,KAAKj8C,QAAqBwqB,SAASmjE,gBAAkB/lE,KAAKinG,iBACpGrkG,SAASmjE,gBAAkB/lE,KAAK6jG,aACpCpoH,EAAEi1D,uBAhBF,GAAI1wC,KAAK+gE,aAAaC,UAAUpqC,UAAUM,SAASosE,EAAoBE,aAAexjG,KAAK+xE,YAAa,CACpG/xE,KAAKykG,iBAAkB,EACvB,IAAI9G,EAAW39F,KAAKk9F,YACpBl9F,KAAK/M,cAAe,EACpB+M,KAAKknG,UAAUzrH,GACVkiH,IACD39F,KAAK+nG,aACL/nG,KAAK+gE,aAAaC,UAAUpqC,UAAUjB,OAAO2tE,EAAoBE,YAEzE,CASR,EACApqH,EAAaimB,UAAUgrG,kBAAoB,WACnCrqG,KAAKykG,kBACLzkG,KAAKknG,YACLlnG,KAAK+nG,aACL/nG,KAAK+gE,aAAaC,UAAUpqC,UAAUjB,OAAO2tE,EAAoBE,YAEzE,EACApqH,EAAaimB,UAAUqqG,cAAgB,SAAUjuH,IACxCukB,KAAK4kG,SAAW5kG,KAAK6nG,kBACtB7nG,KAAKqnD,QAAQ5rE,EAErB,EACArC,EAAaimB,UAAU8oG,cAAgB,SAAU1sH,GAC7C,GAAgB,IAAZA,EAAEi/D,OAA4B,IAAbj/D,EAAE6uH,SAGnBtqG,KAAKinG,gBAAgBrwE,UAAUM,SAASosE,EAAoBC,UAAYvjG,KAAK+gE,aAAakD,cAAgBxoF,EAAE0iD,OAAhH,CAGA,IAAIA,EAAS1iD,EAAE0iD,OAIf,GAHIA,IAAWn+B,KAAK8gE,cAAkB9gE,KAAK9W,gBAAkBi1C,IAAWn+B,KAAK6jG,aAAyC,aAAzB7jG,KAAK47B,iBAC9FngD,EAAEi1D,iBAED1wC,KAAKqhE,SA0BNrhE,KAAKqnD,QAAQ5rE,OA1BG,CACZukB,KAAK+xE,aACL/xE,KAAKknG,UAAUzrH,GACXukB,KAAK6nG,kBACL7nG,KAAK0pG,cAAcjuH,KAIvBukB,KAAKqnD,QAAQ5rE,GACbukB,KAAKimG,mBACLjmG,KAAKpC,YAAiD,KAAnCoC,KAAK8gE,aAAavjF,MAAM09D,OAAgB,KAAOj7C,KAAK8gE,aAAavjF,MACpFyiB,KAAK4lG,iBAAkB,EACvB5lG,KAAKypG,UAAUhuH,IAGnB,IAAI8uH,EAAUvqG,KAEV8hC,EAAY9hC,KAAKhd,QAAQmzC,UAAYn2B,KAAKonG,kBAAoBpnG,KAAKs+F,aAAgB,IAAM,IACxFt+F,KAAK+lG,eACN71F,YAAW,WACPq6F,EAAQ5D,gBACR4D,EAAQxE,eAAgB,CAC5B,GAAGjkE,EAEX,CA7BA,CAiCJ,EACA1oD,EAAaimB,UAAUsnG,cAAgB,WACnC,GAAI3mG,KAAKi5B,KAAM,CACX,IAAIqiE,EAAYt7F,KAAKi5B,KAAK1mB,cAAc,MACpC+oF,IACAA,EAAYA,EAAUlqF,UAAYkqF,EAAUlqF,WAAU,GAAQkqF,EAC9Dt7F,KAAKulG,mBAAmBjK,UAAYA,EAE5C,CACJ,EACAliH,EAAaimB,UAAUmrG,mBAAqB,SAAU53B,EAAIn3F,EAAGgvH,EAAeC,GACxE,IAAI16F,EAAQhQ,KACZA,KAAK20E,kBACL/B,EAAGh8C,UAAUzB,IAAI8jE,EAAAA,GAAoBhR,UACrCjoF,KAAK0zE,cACL,IAAIn2F,EAA0C,SAAlCq1F,EAAGxxC,aAAa,cAA2BphC,KAAKysE,kBAAkBmG,EAAGxxC,aAAa,eAAiB,KAC3GupE,EAAe3qG,KAAKojG,eAAe7lH,GACvC,GAAKyiB,KAAK4kG,SAAY6F,IAAkB98F,EAAAA,EAAAA,IAAkBlyB,GAuBtDukB,KAAK4qG,oBAAoBh4B,EAAIn3F,EAAGgvH,EAAeE,EAAcptH,GACzDmtH,GACA1qG,KAAK6qG,iBAAiBj4B,EAAIn3F,OAzB4B,CAC1D,IAAIqO,EAAQkW,KAAK8qG,cAAcH,GAC/B3qG,KAAKglG,YAAa,EAClB,IAAIh2E,EAAY,CACZvzC,EAAGA,EACH2P,KAAMwnF,EACN0lB,SAAUxuG,EACVmJ,eAAcxX,EACd8L,QAAQ,GAEZyY,KAAK81B,QAAQ,SAAU9G,GAAW,SAAUA,GACpCA,EAAUznC,OACVqrF,EAAGh8C,UAAUjB,OAAOsjE,EAAAA,GAAoBhR,WAGxCj4E,EAAM46F,oBAAoBh4B,EAAIn3F,EAAGgvH,EAAeE,EAAcptH,GAC1DmtH,GACA16F,EAAM66F,iBAAiBj4B,EAAIn3F,GAGvC,GACJ,CAOJ,EACArC,EAAaimB,UAAUurG,oBAAsB,SAAUh4B,EAAIn3F,EAAGgvH,EAAeE,EAAcptH,GACvFyiB,KAAKsmG,kBAAqB34F,EAAAA,EAAAA,IAAkB3N,KAAKs4F,UAA6B,KAAhBt4F,KAAKs4F,SAC/Dt4F,KAAKs4F,UAAYqS,IACjB3qG,KAAK2+D,eAAkBhxD,EAAAA,EAAAA,IAAkB3N,KAAKs4F,UAAoI,KAA/F,iBAAjBt4F,KAAKs4F,SAAuBt4F,KAAK+qG,gBAAgB/qG,KAAKs4F,SAAUt4F,KAAKnd,OAAOtF,MAAM0W,MAAM,MAAQ+L,KAAKs4F,UAE3Kt4F,KAAK5U,KAAOwnF,EACZ5yE,KAAKs4F,SAAWqS,EAChB,IAAIK,EAAchrG,KAAKi5B,KAAK1mB,cAAc,IAAM0mF,EAAAA,GAAoBxnF,OAChEu5F,IACA7zE,EAAAA,EAAAA,IAAY,CAAC6zE,GAAc/R,EAAAA,GAAoBxnF,OAEnDmhE,EAAGt8C,aAAa,gBAAiB,QACjCt2B,KAAK8tE,YAAc9tE,KAAKyhG,gBAAgBlkH,EAC5C,EACAnE,EAAaimB,UAAU4rG,WAAa,SAAUr4B,GACtC5yE,KAAKyzE,UAAUb,KAAQA,EAAGh8C,UAAUM,SAAS+hE,EAAAA,GAAoBhR,YACjEjoF,KAAK20E,kBACL/B,EAAGh8C,UAAUzB,IAAI8jE,EAAAA,GAAoBhR,UACrCjoF,KAAK0zE,cACLd,EAAGt8C,aAAa,gBAAiB,QAEzC,EAEAl9C,EAAaimB,UAAUrd,SAAW,SAAUvG,GACxC,IAAIo/G,EAAW76F,KAAKwmG,cACG,OAAnB3L,EAASt9G,MACTqjF,EAAAA,EAAM5+E,SAAS,KAAMge,KAAK8gE,aAAc9gE,KAAK2gE,eAAgB3gE,KAAKoiE,iBAGlExB,EAAAA,EAAM5+E,SAAS64G,EAAS9iH,KAAMioB,KAAK8gE,aAAc9gE,KAAK2gE,eAAgB3gE,KAAKoiE,iBAE3EpiE,KAAKkrG,eAAmC,OAAlBlrG,KAAKs4F,SAC3Bt4F,KAAKmrG,oBAECx9F,EAAAA,EAAAA,IAAkB3N,KAAKukG,mBAAqBvkG,KAAK8gE,aAAasqC,kBAAoBprG,KAAKukG,oBAC7FhsE,EAAAA,EAAAA,IAAOv4B,KAAKukG,kBACZvkG,KAAK8gE,aAAavpC,MAAMuiB,QAAU,SAEtC,IAAIkqD,EAAYV,EAAoBU,UAEhCqH,EADkBrrG,KAAK8hG,eAAiB9hG,KAAK6jG,aAAyC,aAAzB7jG,KAAK47B,iBAChC57B,KAAK6jG,YAAY5qD,cAAc1mC,cAAc,IAAMyxF,GAIzF,OAHIhkG,KAAK8hG,eAAiBuJ,GACtBA,EAAa9zE,MAAM+zE,eAAe,cAElCtrG,KAAK2+D,gBAAkBk8B,EAASt9G,OAChCyiB,KAAKglG,YAAa,GACX,IAGPhlG,KAAKglG,YAAchlG,KAAK4kG,QACxB5kG,KAAK2lG,gBAAiB,EACO,iBAAzB3lG,KAAK47B,iBACL57B,KAAKshE,mBAEF,EAEf,EACAloF,EAAaimB,UAAUwzE,aAAe,SAAUD,EAAIn3F,GAC5CukB,KAAKyzE,UAAUb,MAASA,EAAGh8C,UAAUM,SAAS+hE,EAAAA,GAAoBhR,WAAcjoF,KAAK+xE,aAAe/xE,KAAKglG,YACtGpyB,EAAGh8C,UAAUM,SAAS+hE,EAAAA,GAAoBhR,WAC7CjoF,KAAKwqG,mBAAmB53B,EAAIn3F,GAAG,GAAO,GAGtCukB,KAAK6qG,iBAAiBj4B,EAAIn3F,EAElC,EACArC,EAAaimB,UAAUwrG,iBAAmB,SAAUj4B,EAAIn3F,GAChDukB,KAAKi5B,MACLj5B,KAAK0zE,cAET1zE,KAAKurG,oBAAuB59F,EAAAA,EAAAA,IAAkB3N,KAAK0mG,YAAiC,KAAlB1mG,KAAK0mG,WACvE1mG,KAAK0mG,WAAa9zB,EACd5yE,KAAKhe,SAASvG,OAGZukB,KAAK+xE,eAAgBpkE,EAAAA,EAAAA,IAAkBilE,IAAS5yE,KAAK+xE,eAAgBpkE,EAAAA,EAAAA,IAAkBlyB,KAC7E,YAAXA,EAAEnB,MAAiC,YAAXmB,EAAEnB,MAAmC,UAAbmB,EAAEwnB,WACnDjD,KAAK2lG,gBAAiB,EACtB3lG,KAAKymG,cAAchrH,KAEnBukB,KAAK+xE,cAAgBpkE,EAAAA,EAAAA,IAAkB3N,KAAK0mG,aAAiC,OAAlB1mG,KAAKs4F,UAAuB78G,GAAgB,UAAXA,EAAEnB,MAC9F0lB,KAAK4wE,kBAAkBn1F,GAED,YAAtBm3C,EAAAA,GAAQyB,KAAKj8C,MACT4nB,KAAKinG,mBACLzwE,EAAAA,EAAAA,IAAWx2B,KAAKinG,gBAAiB,CAAE,mBAA6C,KAAzBjnG,KAAK8gE,aAAal8E,GAAYob,KAAK8gE,aAAal8E,GAAKob,KAAKhd,QAAQ4B,KACzHob,KAAKinG,gBAAgB/lE,gBAAgB,eAGzClhC,KAAK+xE,cAAgBpkE,EAAAA,EAAAA,IAAkB3N,KAAKs7F,aAAe3tF,EAAAA,EAAAA,IAAkB3N,KAAKs7F,UAAU92D,uBAAuB,gBAAgB,KAG9HxkC,KAAK+xE,cAAgBpkE,EAAAA,EAAAA,IAAkB3N,KAAKs7F,aAAe3tF,EAAAA,EAAAA,IAAkB3N,KAAKs7F,UAAU92D,uBAAuB,YAAY,MACpIhO,EAAAA,EAAAA,IAAWx2B,KAAKinG,gBAAiB,CAAE,wBAAyBjnG,KAAKs7F,UAAU92D,uBAAuB,YAAY,GAAG5/C,MAHjH4xC,EAAAA,EAAAA,IAAWx2B,KAAKinG,gBAAiB,CAAE,wBAAyBjnG,KAAKs7F,UAAU92D,uBAAuB,gBAAgB,GAAG5/C,KAK7H,EACAxL,EAAaimB,UAAUmsG,iBAAmB,SAAUC,GAChD,IAAIvQ,GAAgB,EACpB,GAAgC,oBAArBuQ,GAAmCA,EAC1C,IACIvQ,IAAiBt4F,SAASkO,iBAAiB26F,GAAkBxzH,MACjE,CACA,MAAOkjH,GACHD,GAAgB,CACpB,CAEJ,OAAOA,CACX,EACA9hH,EAAaimB,UAAU8rG,iBAAmB,WAGlCnrG,KAAK87F,UACL97F,KAAKgtC,cAAc,CAAC,kBAChBhtC,KAAKukG,oBACLhsE,EAAAA,EAAAA,IAAOv4B,KAAKukG,kBACZvkG,KAAK8gE,aAAavpC,MAAMuiB,QAAU,QAClC95C,KAAKukG,iBAAmB,OAG3BvkG,KAAKukG,mBACNvkG,KAAKukG,iBAAmBvkG,KAAK4Q,cAAc,OAAQ,CAAE31B,UAAWqoH,EAAoB/lH,QACpFyiB,KAAK8gE,aAAa7nB,cAAcjhB,aAAah4B,KAAKukG,iBAAkBvkG,KAAK8gE,cACzE9gE,KAAK8gE,aAAavpC,MAAMuiB,QAAU,QAGjC95C,KAAK87F,UACN97F,KAAKukG,iBAAiBhzF,UAAY,IAEtC,IAAIm6F,EAAa1rG,KAAKwrG,iBAAiBxrG,KAAKkrG,eAQxCS,GAP8B,oBAAvB3rG,KAAKkrG,eAAgCQ,GAC3BrqD,EAAAA,EAAAA,IAAQz+C,SAAS2P,cAAcvS,KAAKkrG,eAAe35F,UAAU0pC,SAG7DoG,EAAAA,EAAAA,IAAQrhD,KAAKkrG,gBAGClrG,KAAKs4F,SAAUt4F,KAAM,gBAAiBA,KAAKu9F,gBAAiBv9F,KAAKwqC,iBAAkB,KAAMxqC,KAAKukG,kBAC7HoH,GAAiBA,EAAc1zH,OAAS,IACxCkgD,EAAAA,EAAAA,IAAOwzE,EAAe3rG,KAAKukG,kBAE/BvkG,KAAK+sC,sBACT,EACA3zD,EAAaimB,UAAUs1E,gBAAkB,WACrC,GAAI30E,KAAKi5B,KAAM,CACX,IAAI2yE,EAAgB5rG,KAAKi5B,KAAKnoB,iBAAiB,IAAMmoF,EAAAA,GAAoBhR,UACrE2jB,EAAc3zH,UACdk/C,EAAAA,EAAAA,IAAYy0E,EAAe3S,EAAAA,GAAoBhR,UAC/C2jB,EAAc,GAAG1qE,gBAAgB,iBAEzC,CACJ,EACA9nD,EAAaimB,UAAUmnG,YAAc,WACjC,IACI3L,EAEAgR,EACAC,EAJAjpH,EAASmd,KAAKnd,OAalB,OAXAg4G,EAAW76F,KAAKs4F,UAGX3qF,EAAAA,EAAAA,IAAkBktF,KACnBgR,GAAYz+F,EAAAA,EAAAA,IAASvqB,EAAOtF,MAAOs9G,GACnCiR,GAAW1+F,EAAAA,EAAAA,IAASvqB,EAAO9K,KAAM8iH,IAM9B,CAAEt9G,OAJKowB,EAAAA,EAAAA,IAAkBktF,KAC3BrtF,EAAAA,EAAAA,IAAYq+F,GAAyBhR,EAAZgR,EAGP9zH,MAFV41B,EAAAA,EAAAA,IAAkBktF,KAC1BrtF,EAAAA,EAAAA,IAAYq+F,GAAwBhR,EAAXiR,EAElC,EAOA1yH,EAAaimB,UAAUonG,cAAgB,SAAUp1C,GAC7C,IAAIwpC,EAAW76F,KAAKwmG,cAChB1/G,EAAQkZ,KAAK2lG,eAAiB,KAAO3lG,KAAK8tE,YAC9C9tE,KAAK26B,cAAc,CAAE,MAAS7zC,EAAO,KAAQ+zG,EAAS9iH,KAAM,MAAS8iH,EAASt9G,QAAS,GACvFyiB,KAAK+rG,kBAAkB16C,EAC3B,EACAj4E,EAAaimB,UAAUyrG,cAAgB,SAAUvtH,GAmB7C,MAjBqB,kBAAVA,GACU,mBAAVA,GACU,kBAAVA,EACCsB,OAAOmtH,iBAAiB,CAAC,EAAG,CAChCzuH,MAAO,CACHA,MAAOA,EACP4iB,YAAY,GAEhBpoB,KAAM,CACFwF,MAAOA,EACP4iB,YAAY,KAKZ5iB,CAGhB,EACAnE,EAAaimB,UAAU0sG,kBAAoB,SAAU16C,GAKjD,GAJArxD,KAAKglG,YAAa,EAClBhlG,KAAK2+D,cAAgB3+D,KAAKziB,MAC1ByiB,KAAK8tE,YAAc9tE,KAAKlZ,MACxBkZ,KAAKolG,aAAez3F,EAAAA,EAAAA,IAAkB3N,KAAKjoB,MAAoB,GAAZioB,KAAKjoB,MACnDioB,KAAK4kG,QAAS,CACf,IAAI96G,EAAQkW,KAAK8qG,cAAc9qG,KAAKs4F,UAChC2T,OAAW,EAIXA,EAHiC,kBAA1BjsG,KAAKsmG,kBACqB,mBAA1BtmG,KAAKsmG,kBACqB,kBAA1BtmG,KAAKsmG,iBACDznH,OAAOmtH,iBAAiB,CAAC,EAAG,CACnCzuH,MAAO,CACHA,MAAOyiB,KAAKsmG,iBACZnmG,YAAY,GAEhBpoB,KAAM,CACFwF,MAAOyiB,KAAKsmG,iBACZnmG,YAAY,KAKTH,KAAKsmG,iBAEpBtmG,KAAK0nG,iBACL,IAAI14E,EAAY,CACZvzC,EAAG41E,EACHjmE,KAAM4U,KAAK5U,KACXktG,SAAUxuG,EACVmgH,aAAcjqG,KAAKurG,mBACnBjF,iBAAkB2F,EAClBh5G,eAAco+D,EACd9zE,MAAOyiB,KAAKziB,MACZyF,QAASgd,KAAKhd,QACdjB,MAAOsvE,GAEPrxD,KAAKyrD,WAAazrD,KAAKmyD,cACvBnyD,KAAKmyD,eAAgB,EAGrBnyD,KAAK81B,QAAQ,SAAU9G,EAE/B,GACKrhB,EAAAA,EAAAA,IAAkB3N,KAAKziB,QAAyB,KAAfyiB,KAAKziB,OAAyC,WAAxByiB,KAAK2gE,iBAC7DxpC,EAAAA,EAAAA,IAAY,CAACn3B,KAAK+gE,aAAaC,WAAY,gBAEnD,EACA5nF,EAAaimB,UAAUqoG,eAAiB,WAG5B,IAOQhpC,GATX/wD,EAAAA,EAAAA,IAAkB3N,KAAKziB,OAexByiB,KAAKokG,cAAc7yF,UAAY,GAd3BvR,KAAKokG,cAAc7xF,cAAc,YAC7BmsD,EAAkB1+D,KAAKokG,cAAc7xF,cAAc,WACvCu0C,YAAc9mD,KAAKjoB,KACnC2mF,EAAgBpoC,aAAa,QAASt2B,KAAKziB,MAAMnC,cAG5CuyB,EAAAA,EAAAA,IAAkB3N,KAAKokG,iBACxBpkG,KAAKokG,cAAc7yF,UAAY,oBAAsBvR,KAAKjoB,KAAO,aAC7D2mF,EAAkB1+D,KAAKokG,cAAc7xF,cAAc,WACvC+jB,aAAa,QAASt2B,KAAKziB,MAAMnC,YAOjE,EAOAhC,EAAaimB,UAAU6sG,WAAa,SAAUzwH,GAC1C,GAAMA,EAAE6+D,SAAyB,KAAd7+D,EAAEu+D,UAAoBh6C,KAAKmlG,YAA4B,KAAd1pH,EAAEu+D,SAAgC,KAAdv+D,EAAEu+D,QAoD9Eh6C,KAAKmlG,YAAa,OAlDlB,OADAnlG,KAAKmlG,YAAa,EACV1pH,EAAEu+D,SACN,KAAK,GACL,KAAK,GAC4B,iBAAzBh6C,KAAK47B,iBAAuC57B,KAAK+xE,aAAgB/xE,KAAK6lG,cAAiB7lG,KAAKk9F,YAK5Fl9F,KAAKklG,iBAAkB,GAJvBllG,KAAKklG,iBAAkB,EACvBllG,KAAKmsG,YAAY1wH,IAKrBukB,KAAK6lG,cAAe,EACS,iBAAzB7lG,KAAK47B,kBAAuCjuB,EAAAA,EAAAA,IAAkB3N,KAAKs7F,aAAe3tF,EAAAA,EAAAA,IAAkB3N,KAAKs7F,UAAU92D,uBAAuB,gBAAgB,MAC1JhO,EAAAA,EAAAA,IAAWx2B,KAAKinG,gBAAiB,CAAE,wBAAyBjnG,KAAKs7F,UAAU92D,uBAAuB,gBAAgB,GAAG5/C,KAEzHnJ,EAAEi1D,iBACF,MACJ,KAAK,GACL,KAAK,EACD1wC,KAAKolG,YAAcplG,KAAK6jG,YAAYtmH,OAC/ByiB,KAAK+xE,aAAoC,KAArB/xE,KAAKolG,aAAsBplG,KAAK+xE,aAAe/xE,KAAKpC,YAAY3lB,OAAS,GAIpE,KAArB+nB,KAAKolG,aAA2C,KAArBplG,KAAKpC,aAA+C,iBAAzBoC,KAAK47B,iBAHhE57B,KAAKklG,iBAAkB,EACvBllG,KAAKmsG,YAAY1wH,IAMS,KAArBukB,KAAKolG,cACNplG,KAAKi5B,MACLj5B,KAAKomG,oBAETpmG,KAAK8tE,YAAc,KACU,iBAAzB9tE,KAAK47B,kBACL57B,KAAKklG,iBAAkB,EACvBllG,KAAKmsG,YAAY1wH,GACY,iBAAzBukB,KAAK47B,iBACL57B,KAAKknG,cAIjBzrH,EAAEi1D,iBACF,MACJ,QACI1wC,KAAKolG,YAAcplG,KAAK6jG,YAAYtmH,MACpCyiB,KAAKklG,iBAAkB,EACvBllG,KAAKmsG,YAAY1wH,GAOjC,EACArC,EAAaimB,UAAU+sG,aAAe,SAAU3wH,GAC5C,OAAQA,EAAEu+D,SACN,KAAK,GACD,MACJ,KAAK,GACL,KAAK,GACDh6C,KAAKpC,YAAcoC,KAAK6jG,YAAYtmH,MACpC9B,EAAEi1D,iBACF,MACJ,KAAK,EACG1wC,KAAK+xE,aAAwC,iBAAzB/xE,KAAK47B,iBACzBngD,EAAEi1D,iBAEN,MACJ,QACI1wC,KAAK0lG,iBAAmB1lG,KAAKqsG,qBAC7BrsG,KAAKpC,YAAcoC,KAAK6jG,YAAYtmH,MAGhD,EACAnE,EAAaimB,UAAUitG,oBAAsB,WACzC,GAAItsG,KAAK/M,aAAc,CACnB,IAAIs5G,EAAYvsG,KAAKqsG,qBACrBrsG,KAAK8gE,aAAawP,kBAAkBi8B,EAAUrkG,IAAKqkG,EAAUrkG,IACjE,CACJ,EACA9uB,EAAaimB,UAAU8qF,SAAW,SAAU/N,GACxC,IAAIowB,EACJ,IAAKxsG,KAAK8lG,gBAAkB9lG,KAAK9W,gBAAkB8W,KAAK6jG,YAAa,CACjE2I,EAAcpwB,EAAQA,EAAMltE,QAAUlP,KAAKo8E,MAAQp8E,KAAKo8E,MAAMltE,QAAU,IAAI8uE,EAAAA,EAC5E,IAAIyuB,EAAkC,KAArBzsG,KAAKolG,YAAqB,WAAaplG,KAAKysG,WACzDp8E,EAAWrwB,KAAKo6F,WAAWp6F,KAAK3mB,YAAYghH,OAChD,IAAMr6F,KAAK3mB,sBAAsBuyG,EAAAA,GAA6B,WAAbv7D,IAAsC,WAAbA,EAGrE,CACD,IAAIxtC,EAAUmd,KAAKnd,OAAO9K,KAAQioB,KAAKnd,OAAO9K,KAAO,GACrDy0H,EAAYzwB,MAAMl5F,EAAQ4pH,EAAYzsG,KAAKolG,YAAaplG,KAAKg/E,WAAYh/E,KAAKi/E,aAClF,MALIutB,EAAYzwB,MAAM,GAAI0wB,EAAYzsG,KAAKolG,YAAaplG,KAAKg/E,WAAYh/E,KAAKi/E,aAMlF,MAEIutB,EAAcpwB,EAAQA,EAAMltE,QAAUlP,KAAKo8E,MAAQp8E,KAAKo8E,MAAMltE,QAAU,IAAI8uE,EAAAA,EAEhF,OAAOwuB,CACX,EACApzH,EAAaimB,UAAUgtG,mBAAqB,WACxC,IAAIvzG,EAAQkH,KAAK8gE,aACjB,MAAO,CAAErzD,MAAO5L,KAAK8Z,IAAI7iB,EAAM2sE,gBAAiBv9D,IAAKrG,KAAK8Z,IAAI7iB,EAAM4sE,cACxE,EACAtsF,EAAaimB,UAAU8sG,YAAc,SAAU1wH,GAC3C,IAAIu0B,EAAQhQ,MACZA,KAAK+kG,SAAU,EACf/kG,KAAK8tE,YAAc,KACnB9tE,KAAKskG,gBAAiB,EAClBtkG,KAAK6jG,YAAY5qD,cAAc1mC,cAAc,IAAM+wF,EAAoBU,cACpDhkG,KAAK6jG,YAAY5qD,cAAc1mC,cAAc,IAAM+wF,EAAoBU,WAC7EzsE,MAAMC,WAAwC,KAA3Bx3B,KAAK6jG,YAAYtmH,MAAe,SAAW,WAG/E,GADAyiB,KAAKm9F,eAAgB,EACjBn9F,KAAK8hG,cAAe,CACpB,IAAI4K,EAAc,CACdC,sBAAsB,EACtB50H,KAAMioB,KAAK6jG,YAAYtmH,MACvB4kH,WAAY,SAAU9oH,EAAY+iG,EAAOv5F,GACjC6pH,EAAYnlH,SAGhByoB,EAAM81F,gBAAiB,EACvB91F,EAAM48F,gBAAgBvzH,EAAY+iG,EAAOv5F,GAC7C,EACAgqH,cAAepxH,EACf8L,QAAQ,GAEZyY,KAAK81B,QAAQ,YAAa42E,GAAa,SAAU19E,GACxCA,EAAUznC,QAAWyoB,EAAM81F,gBAAmB92E,EAAU29E,sBACzD38F,EAAM48F,gBAAgB58F,EAAM32B,WAAY,KAAM22B,EAAMntB,OAE5D,GACJ,CACJ,EAUAzJ,EAAaimB,UAAUlhB,OAAS,SAAU9E,EAAY+iG,EAAOv5F,GACzDmd,KAAK8lG,gBAAiB,EACtB9lG,KAAK4sG,gBAAgBvzH,EAAY+iG,EAAOv5F,EAC5C,EACAzJ,EAAaimB,UAAUutG,gBAAkB,SAAUvzH,EAAY+iG,EAAOv5F,IAC7D8qB,EAAAA,EAAAA,IAAkB3N,KAAK6jG,eACxB7jG,KAAK2kG,mBAAoB3kG,KAAK+xE,aAAwC,aAAzB/xE,KAAK47B,iBAA6D,KAA3B57B,KAAK6jG,YAAYtmH,OAE/D,KAAlCyiB,KAAK6jG,YAAYtmH,MAAM09D,QAAkBj7C,KAAKs+F,cAc9Ct+F,KAAK8kG,iBAAkB,EACvB1oB,EAA2C,KAAlCp8E,KAAK6jG,YAAYtmH,MAAM09D,OAAiB,KAAOmhC,EACxDp8E,KAAKw8F,UAAUnjH,EAAYwJ,EAAQu5F,KAfnCp8E,KAAKulG,mBAAmBC,WAAY,EACpCxlG,KAAK+kG,SAAU,GACVp3F,EAAAA,EAAAA,IAAkB3N,KAAKulG,mBAAmBjK,aAAe3tF,EAAAA,EAAAA,IAAkB3N,KAAKulG,mBAAmBtsE,OACpGj5B,KAAK+9F,iBAAiB/9F,KAAKulG,mBAAmBjK,UAAWt7F,KAAKulG,mBAAmBtsE,MAErFj5B,KAAK+kG,SAAU,GACVp3F,EAAAA,EAAAA,IAAkB3N,KAAKs4F,WAAsC,iBAAzBt4F,KAAK47B,kBAC1C57B,KAAK8sG,iBACL9sG,KAAK4wE,qBAET5wE,KAAK8kG,iBAAkB,GAO3B9kG,KAAK+sC,uBAEb,EACA3zD,EAAaimB,UAAU0tG,aAAe,SAAUn4C,GAC5C,GAAI50D,KAAK8hG,cAAe,CACpB,IAAI7oD,EAAgB2b,EAAariD,cAAc,IAAM+wF,EAAoBQ,cACrElvC,EAAariD,cAAc,IAAM+wF,EAAoBQ,cAAgB9jG,KAAK4Q,cAAc,OAAQ,CAChG31B,UAAWqoH,EAAoBQ,eAEnC9jG,KAAK6jG,YAAc7jG,KAAK4Q,cAAc,QAAS,CAC3C2lB,MAAO,CAAEj8C,KAAM,QACfW,UAAWqoH,EAAoBO,cAEnC7jG,KAAKhd,QAAQstB,WAAW0nB,aAAah4B,KAAK6jG,YAAa7jG,KAAKhd,SAC5D,IAAI2gH,GAAW,EAmDf,OAlDI/wE,EAAAA,GAAQY,WACRmwE,GAAW,GAEf3jG,KAAK8oG,eAAiBloC,EAAAA,EAAMa,YAAY,CACpCz+E,QAASgd,KAAK6jG,YACd5iC,QAAS0iC,EACL,CAACL,EAAoBK,SAAUL,EAAoBM,oBAAsB,CAACN,EAAoBM,oBAClGxtE,WAAY,CAAEsrC,YAAa1hE,KAAKgtG,uBACjChtG,KAAK4Q,gBACHjD,EAAAA,EAAAA,IAAkB3N,KAAK7f,aAC+B,IAAnD6f,KAAK7f,SAAS8T,MAAM,KAAKqC,QAAQ,cACjCmgC,EAAAA,EAAAA,IAAS,CAACz2B,KAAK8oG,eAAe9nC,WAAY,cAEa,IAAlDhhE,KAAK7f,SAAS8T,MAAM,KAAKqC,QAAQ,cACtCmgC,EAAAA,EAAAA,IAAS,CAACz2B,KAAK8oG,eAAe9nC,WAAY,cAGlD7oC,EAAAA,EAAAA,IAAO,CAACn4B,KAAK8oG,eAAe9nC,WAAY/nB,IACxCvhB,EAAAA,EAAAA,IAAQ,CAACuhB,GAAgB2b,IACzBp+B,EAAAA,EAAAA,IAAWx2B,KAAK6jG,YAAa,CACzB,gBAAiB,QACjB,KAAQ,WACR,aAAgB,MAChB,eAAkB,MAClB,WAAc,UAElB7jG,KAAKitG,iBAAmBjtG,KAAK6jG,YAAY5qD,cAAc1mC,cAAc,IAAM+wF,EAAoBU,YAC1FpxE,EAAAA,GAAQY,UAAYxzB,KAAKitG,mBAC1Bj4E,EAAAA,GAAaG,IAAIn1B,KAAKitG,iBAAkB,QAASjtG,KAAKktG,UAAWltG,MACjEA,KAAKitG,iBAAiB11E,MAAMC,WAAa,UAExC5E,EAAAA,GAAQY,SAQTxzB,KAAKmtG,gBAAkB,IAAIlzD,EAAAA,GAAej6C,KAAK6jG,YAAa,CACxD3oD,UAAWl7C,KAAKsoG,uBAAuBtpG,KAAKgB,MAC5C26C,WAAY36C,KAAK+rE,aACjB32C,UAAW,YAVfp1B,KAAKmtG,gBAAkB,IAAIlzD,EAAAA,GAAej6C,KAAK6jG,YAAa,CACxD3oD,UAAWl7C,KAAKuoG,iBAAiBvpG,KAAKgB,MACtC26C,WAAY36C,KAAK+rE,aACjB32C,UAAW,YAUnBJ,EAAAA,GAAaG,IAAIn1B,KAAK6jG,YAAa,QAAS7jG,KAAKotG,QAASptG,MAC1Dg1B,EAAAA,GAAaG,IAAIn1B,KAAK6jG,YAAa,QAAS7jG,KAAKksG,WAAYlsG,MAC7Dg1B,EAAAA,GAAaG,IAAIn1B,KAAK6jG,YAAa,UAAW7jG,KAAKosG,aAAcpsG,MACjEg1B,EAAAA,GAAaG,IAAIn1B,KAAK6jG,YAAa,OAAQ7jG,KAAK2nG,cAAe3nG,MAC/Dg1B,EAAAA,GAAaG,IAAIn1B,KAAK6jG,YAAa,QAAS7jG,KAAKqtG,aAAcrtG,MACxDA,KAAK8oG,cAChB,CAEI,OAAOzE,CAEf,EACAjrH,EAAaimB,UAAU+tG,QAAU,SAAU3xH,GACvCukB,KAAKmlG,YAAa,EACW,aAAzBnlG,KAAK47B,iBACL57B,KAAKshE,kBAGL1uC,EAAAA,GAAQY,UAAkC,YAAtBZ,EAAAA,GAAQyB,KAAKj8C,OACjC4nB,KAAKolG,YAAcplG,KAAK6jG,YAAYtmH,MACpCyiB,KAAKklG,iBAAkB,EACvBllG,KAAKmsG,YAAY1wH,GAEzB,EACArC,EAAaimB,UAAUguG,aAAe,SAAU5xH,GAC5C,IAAIu0B,EAAQhQ,KACZkQ,YAAW,WACPF,EAAMo1F,YAAcp1F,EAAM6zF,YAAYtmH,MACtCyyB,EAAMm8F,YAAY1wH,EACtB,GACJ,EACArC,EAAaimB,UAAU8+F,gBAAkB,SAAU1iH,GAC/CgwB,EAAOpM,UAAU8+F,gBAAgBz+F,KAAKM,KAAMvkB,GACxCukB,KAAK2kG,iBACL3kG,KAAKkvE,aAEb,EAEA91F,EAAaimB,UAAU0+F,iBAAmB,SAAUzC,EAAWriE,EAAMx9C,EAAG+pH,GACpE,IAAIx1F,EAAQhQ,KACZ,GAAIA,KAAK8kG,gBACL9kG,KAAK8kG,iBAAkB,OAG3B,GAAI9kG,KAAK29F,YAAahwF,EAAAA,EAAAA,IAAkB2tF,GAAY,CAChD,IAAIuE,EAAe7/F,KAAK0mG,WAAa1mG,KAAK0mG,WAAWt1F,WAAU,GAAQ,KAgBvE,GAfA3F,EAAOpM,UAAU0+F,iBAAiBr+F,KAAKM,KAAMs7F,EAAWriE,EAAMx9C,GAC9DukB,KAAK6hG,wBAAwB7hG,KAAK9W,gBAC9B8W,KAAKk9F,eAAgBvvF,EAAAA,EAAAA,IAAkB3N,KAAK0oG,iBAAgD,YAA7B1oG,KAAK0oG,eAAepuH,OACnF0lB,KAAKk9F,aAAc,EACnBl9F,KAAKuoG,iBAAiBvoG,KAAK0oG,gBAC3B1oG,KAAK0oG,eAAiB,MAEtB1oG,KAAKk9F,eAAgBvvF,EAAAA,EAAAA,IAAkB3N,KAAK0oG,kBAC5C1oG,KAAKg4F,kBAAkBh4F,KAAK0oG,gBAC5B1oG,KAAK0oG,eAAiB,MAE1B1oG,KAAKi5B,KAAKuK,UAAY,GACjB71B,EAAAA,EAAAA,IAAkB2tF,KACnB9kE,EAAAA,EAAAA,IAAW8kE,EAAW,CAAE,GAAMt7F,KAAKhd,QAAQ4B,GAAK,WAAY,KAAQ,UAAW,cAAe,UAE9Fob,KAAK6kG,iBAAkB,CAIvB,GAHA7kG,KAAK4kG,SAAU,EACf5kG,KAAK8tE,YAAc9tE,KAAKlZ,MACxBkZ,KAAK6kG,kBAAmB,EACpB7kG,KAAKziB,OAASyiB,KAAK3mB,sBAAsBuyG,EAAAA,EAAa,CACtD,IAAI+M,GAAehrF,EAAAA,EAAAA,IAAkB3N,KAAKnd,OAAOtF,OAASyiB,KAAKnd,OAAO9K,KAAOioB,KAAKnd,OAAOtF,MACrFq7G,EAAe54F,KAAKnd,OAAOtF,MAAM0W,MAAM,KAC5BglC,EAAKtxB,MAAK,SAAUilB,GAC/B,OAAOjf,EAAAA,EAAAA,IAAkBif,EAAE+rE,KAAkBC,EAAa3gH,OAAS,EAC/D+3B,EAAM+6F,gBAAgBn+E,EAAGgsE,KAAkB5oF,EAAMzyB,MAAQqvC,EAAE+rE,KAAkB3oF,EAAMzyB,KAC3F,IAcIyiB,KAAKynG,eAZLznG,KAAK3mB,WAAWkzG,aAAavsF,KAAKmqF,SAASnqF,KAAKo8E,OAAOL,MAAM,IAAIkH,EAAAA,EAAU0V,EAAc,QAAS34F,KAAKziB,SAClG4J,MAAK,SAAU1L,GACZA,EAAE2D,OAAOnH,OAAS,GAClB+3B,EAAMsyF,QAAQ7mH,EAAE2D,OAAQ65C,EAAKhhD,QAC7B+3B,EAAMy3F,gBAGNz3F,EAAMy3F,cAEd,GAKR,MAEIznG,KAAKynG,eAETznG,KAAK4kG,SAAU,CACnB,KACkC,iBAAzB5kG,KAAK47B,iBAAsC57B,KAAKziB,OACrDyiB,KAAKw5E,gBAEoB,iBAAzBx5E,KAAK47B,iBAAsC57B,KAAK8hG,gBAAkB9hG,KAAK+kG,YAClE/kG,KAAKulG,mBAAmBC,YAAgBxlG,KAAK8lG,iBAC1C9lG,KAAK0kG,gBAAmB/2F,EAAAA,EAAAA,IAAkB3N,KAAKs4F,WAAat4F,KAAK9W,iBAChE8W,KAAK3mB,sBAAsBuyG,EAAAA,KACvBj+E,EAAAA,EAAAA,IAAkB3N,KAAK3mB,eAAgBs0B,EAAAA,EAAAA,IAAkB3N,KAAK3mB,WAAWpB,SAC/C,IAA3B+nB,KAAK3mB,WAAWpB,WACpB+nB,KAAKs+F,cAAyC,iBAAzBt+F,KAAKhd,QAAQmzC,SAA8Bn2B,KAAK9W,eACrEgnB,YAAW,WACPF,EAAMs9F,+BAA+BhS,EAAWriE,EACpD,GAAG,GAGHj5B,KAAKstG,+BAA+BhS,EAAWriE,IAGvDj5B,KAAKutG,WAAWt0E,EAAM4mE,IACjBlyF,EAAAA,EAAAA,IAAkB3N,KAAKs4F,WACxBt4F,KAAK8sG,kBAGT9sG,KAAK2kG,iBACL3kG,KAAKkvE,YAAYzzF,EAEzB,CACJ,EAEArC,EAAaimB,UAAU0rG,gBAAkB,SAAU9xE,EAAMu0E,GAErD,IAAIC,EAAax0E,EAIjB,OAHAu0E,EAAWzuH,SAAQ,SAAUxB,GACzBkwH,EAAaA,EAAWlwH,EAC5B,IACOkwH,CACX,EACAr0H,EAAaimB,UAAUiuG,+BAAiC,SAAUhS,EAAWriE,GACzEj5B,KAAKulG,mBAAqB,CAAEjK,UAAWA,EAAUlqF,WAAU,GAAO6nB,KAAMA,EAAMusE,WAAW,GACrFxlG,KAAKylG,WAAWxsE,OAASj5B,KAAKulG,mBAAmBtsE,MAAQj5B,KAAKulG,mBAAmBjK,WAAat7F,KAAKulG,mBAAmBtsE,OACtHj5B,KAAKylG,WAAazlG,KAAKulG,mBAE/B,EACAnsH,EAAaimB,UAAUkuG,WAAa,SAAUtT,EAAUyT,GACpD,IAAI19F,EAAQhQ,KACZ,KAAK2N,EAAAA,EAAAA,IAAkB3N,KAAKs4F,aAAc3qF,EAAAA,EAAAA,IAAkB+/F,GAAa,CACrE,IAAI54B,EAAU90E,KAAKwmG,cAAcjpH,MACnB08G,EAAStyF,MAAK,SAAU9hB,GAClC,OAA0B,kBAATA,GAAqC,kBAATA,IAAsBA,IAASivF,IACvE1nE,EAAAA,EAAAA,IAAS4C,EAAMntB,OAAOtF,MAAOsI,KAAUivF,CAChD,KAEI90E,KAAKsiG,QAAQtiG,KAAKs4F,SAE1B,CACJ,EACAl/G,EAAaimB,UAAUyjG,yBAA2B,SAAUlwB,EAAIxnF,EAAMtE,GAClE,IAAIkpB,EAAQhQ,KACiB,iBAAzBA,KAAK47B,iBAAsC57B,KAAKulG,mBAAmBjK,YAC/Dt7F,KAAKs+F,cAAyC,iBAAzBt+F,KAAKhd,QAAQmzC,SAA8Bn2B,KAAK9W,eACrEgnB,YAAW,WACPF,EAAM29F,yBAAyB/6B,EAAIxnF,EAAMtE,EAC7C,GAAG,GAGHkZ,KAAK2tG,yBAAyB/6B,EAAIxnF,EAAMtE,GAGpD,EACA1N,EAAaimB,UAAUsuG,yBAA2B,SAAU/6B,EAAIxnF,EAAMtE,GACpD,OAAVA,EACAkZ,KAAKulG,mBAAmBjK,UACpBtjE,aAAa46C,EAAGxhE,WAAU,GAAOpR,KAAKulG,mBAAmBjK,UAAUx3C,WAAWh9D,IAGlFkZ,KAAKulG,mBAAmBjK,UAAUnqF,YAAYyhE,EAAGxhE,WAAU,IAE3DpR,KAAK8hG,eAAiB9hG,KAAKulG,mBAAmBtsE,KAAK3iC,QAAQlL,GAAQ,GACnE4U,KAAKulG,mBAAmBtsE,KAAKx5C,KAAK2L,EAE1C,EACAhS,EAAaimB,UAAUytG,eAAiB,WACpC,IAAIvvH,EAAQyiB,KAAKwmG,cAAcjpH,MAC/ByiB,KAAK8tE,YAAc9tE,KAAKyhG,gBAAgBlkH,GACxC,IAAIyF,EAAUgd,KAAK8+F,gBAAgB9+F,KAAKi5B,KAAM,KAAM,aAAc17C,GAClEyiB,KAAK0mG,WAAa1jH,EAClBgd,KAAKirG,WAAWjoH,GAChBgd,KAAKqmG,aACT,EACAjtH,EAAaimB,UAAU0iG,gBAAkB,WACrC,IAAIlC,EAAe7/F,KAAKi5B,KAAK1mB,cAAc,IAAM0mF,EAAAA,GAAoBhR,UACjE4X,GACA7/F,KAAK26B,cAAc,CAAE,MAAS36B,KAAKyhG,gBAAgB5B,EAAaz+D,aAAa,iBAC7EphC,KAAK8tE,YAAc9tE,KAAKlZ,QAGxBkZ,KAAKqmG,cACLrmG,KAAKi5B,KAAK1mB,cAAc,IAAM0mF,EAAAA,GAAoBrmB,IAAIh8C,UAAUzB,IAAImuE,EAAoB7xF,OAEhG,EACAr4B,EAAaimB,UAAUgnG,YAAc,WACjC,IAAIuH,EAAkB5tG,KAAKi5B,KAAKnoB,iBAAiB,IAAMwyF,EAAoB7xF,OACvEm8F,GAAmBA,EAAgB31H,SACnCk/C,EAAAA,EAAAA,IAAYy2E,EAAiBtK,EAAoB7xF,MAEzD,EACAr4B,EAAaimB,UAAU6vE,YAAc,SAAUzzF,GAC3C,IAAIu0B,EAAQhQ,KACZ,GAAIA,KAAKukE,UAAY3hE,SAASuuB,KAAK+F,SAASl3B,KAAKukE,SAASvhF,SACtDgd,KAAK6tG,mBADT,CAKA7tG,KAAK81B,QAAQ,aADF,CAAEvuC,QAAQ,IACY,SAAU0G,GACvC,GAAKA,EAAK1G,OAkHNyoB,EAAM20F,iBAAkB,MAlHV,CACd,IAAImJ,EAAW99F,EAAMY,cAAc,MAAO,CACtChsB,GAAIorB,EAAMhtB,QAAQ4B,GAAK,SAAU3J,UAAW,kBAAuC,OAAnB+0B,EAAM7vB,SAAoB6vB,EAAM7vB,SAAW,MAE3G4tH,EAAY/9F,EAAM+8F,aAAae,GAWnC,GAVA99F,EAAM+gE,YAAaj/D,EAAAA,EAAAA,IAAW9B,EAAMo/D,aAChCp/D,EAAMg+F,gBACNh+F,EAAMi+F,kBAAkBH,IAE5B31E,EAAAA,EAAAA,IAAO,CAACnoB,EAAMipB,MAAO60E,GACjB99F,EAAMk+F,gBACNl+F,EAAMm+F,kBAAkBL,GAE5BlrG,SAASuuB,KAAKhgB,YAAY28F,GAC1BA,EAASv2E,MAAMC,WAAa,SACF,SAAtBxnB,EAAMo/D,YAAwB,CAM9B,GALAp/D,EAAMo+F,gBAAkB,GACnBzgG,EAAAA,EAAAA,IAAkBogG,EAAU/sC,aAC7BhxD,EAAMo+F,gBAAmBL,EAAU/sC,UAAU/nB,cAAe/V,wBAAwB8Q,OACpFhkC,EAAM+gE,YAAc7xF,SAAS8wB,EAAM+gE,WAAY,IAAO/gE,EAAMo+F,iBAAkBhzH,WAAa,MAE3F40B,EAAMg+F,eAAgB,CACtBh+F,EAAMygB,OAASzgB,EAAMygB,OAASzgB,EAAMygB,OAASq9E,EAASv7F,cAAc,iBACpE,IAAIyhC,EAASnyC,KAAKuvE,MAAMphE,EAAMygB,OAAOyS,wBAAwB8Q,QAC7DhkC,EAAM+gE,YAAc7xF,SAAS8wB,EAAM+gE,WAAY,KAAO/8B,EAAShkC,EAAMo+F,kBAAkBhzH,WAAa,IACxG,CACA,GAAI40B,EAAMk+F,eAAgB,CACtBl+F,EAAM4mD,OAAS5mD,EAAM4mD,OAAS5mD,EAAM4mD,OAASk3C,EAASv7F,cAAc,iBAChEyhC,EAASnyC,KAAKuvE,MAAMphE,EAAM4mD,OAAO1zB,wBAAwB8Q,QAC7DhkC,EAAM+gE,YAAc7xF,SAAS8wB,EAAM+gE,WAAY,KAAO/8B,EAAShkC,EAAMo+F,kBAAkBhzH,WAAa,IACxG,CACA40B,EAAMipB,KAAK1B,MAAMk4C,WAAavwF,SAAS8wB,EAAM+gE,WAAY,IAAM,GAAG31F,WAAa,KAC/E0yH,EAASv2E,MAAMk4C,WAAY39D,EAAAA,EAAAA,IAAW9B,EAAMo/D,YAChD,MAEI0+B,EAASv2E,MAAMyc,OAAS,OAE5B,IAAIkb,EAAc,EACdxrB,OAAO,EAOX,KANK/1B,EAAAA,EAAAA,IAAkBqC,EAAM02F,eAAiB/4F,EAAAA,EAAAA,IAAkBqC,EAAM89D,cAAgB99D,EAAM89D,aAAe,EACvG99D,EAAM4gE,oBAGN5gE,EAAMipB,KAAKuK,UAAY,EAEvB5Q,EAAAA,GAAQY,WAAcxjB,EAAM9mB,iBAA6C,iBAA1B8mB,EAAM4rB,iBACpD5rB,EAAM41F,iBAA6C,aAA1B51F,EAAM4rB,iBAAmC,CACnEszB,EAAcl/C,EAAMq+F,eAAeP,GACnC,IAAIQ,EAAYt+F,EAAMu+F,cAAgBv+F,EAAMipB,KAAOjpB,EAAM47D,cAAc,IAClEj+D,EAAAA,EAAAA,IAAkBqC,EAAM8wD,gBACzBp9B,IAASxkD,SAASglD,iBAAiBoqE,GAAWE,WAAY,IACtDtvH,SAASglD,iBAAiBl0B,EAAM8wD,cAAc2tC,YAAa,IAC3DvvH,SAASglD,iBAAiBl0B,EAAM8wD,aAAa7nB,eAAey1D,gBAAiB,KAEzF,CACA1+F,EAAM2+F,kBACN3+F,EAAM4+F,YAAYd,EAAU5+C,EAAaxrB,GACzC1zB,EAAM6+F,eAAef,GACjBl7E,EAAAA,GAAQY,WACRxjB,EAAMu0D,SAASvhF,QAAQ4zC,UAAUzB,IAAImuE,EAAoBjnG,SAC3B,iBAA1B2T,EAAM4rB,iBAAiE,aAA1B5rB,EAAM4rB,kBAC/C5rB,EAAM9mB,gBAAkB8mB,EAAM41F,mBAClC51F,EAAMu0D,SAASyC,UAAY,CAAEH,EAAG,MAAOC,EAAG,QAE1C92D,EAAM63F,mBACN73F,EAAMu0D,SAASvhF,QAAQ4zC,UAAUzB,IAAImuE,EAAoBS,cACzD/zF,EAAMu0D,SAASpyB,SAAW,CAAE00B,EAAG,EAAGC,EAAG,GACrC92D,EAAMu0D,SAASxpC,YACfvE,EAAAA,EAAAA,IAAWxmB,EAAMu0D,SAASvhF,QAAS,CAAEu0C,MAAO,4CAC5Cd,EAAAA,EAAAA,IAAS,CAAC7zB,SAASuuB,KAAMnhB,EAAMu0D,SAASvhF,SAAUsgH,EAAoBY,iBACtEl0F,EAAM8+F,uBACN9+F,EAAM++F,gBAAkBhB,EAAU/sC,UAAUzuD,cAAc,gBAC1DvC,EAAMi9F,iBAAmBc,EAAU/sC,UAAUzuD,cAAc,IAAM+wF,EAAoBU,WACrFhvE,EAAAA,GAAaG,IAAInlB,EAAM++F,gBAAiB,QAAS/+F,EAAMg/F,gBAAiBh/F,GACxEglB,EAAAA,GAAaG,IAAInlB,EAAMi9F,iBAAkB,QAASj9F,EAAMk9F,UAAWl9F,KAG3E89F,EAASv2E,MAAMC,WAAa,WAC5Bf,EAAAA,EAAAA,IAAS,CAACq3E,GAAW,iBAErB,IADA,IACSv/F,EAAK,EAAG0gG,EADUj/F,EAAMu0D,SAASz0B,oBAAoB9/B,EAAM+wD,aAAaC,WACjBzyD,EAAK0gG,EAAuBh3H,OAAQs2B,IAAM,CACtG,IAAIvrB,EAAUisH,EAAuB1gG,GACrCymB,EAAAA,GAAaG,IAAInyC,EAAS,SAAUgtB,EAAM4jE,cAAe5jE,EAC7D,EACKrC,EAAAA,EAAAA,IAAkBqC,EAAMipB,QACzBjpB,EAAMw/D,mBACNx/D,EAAMq/D,kBAEVr/D,EAAMk/F,kBAAoBl/F,EAAM02F,WAAa12F,EAAM02F,WAAW9hH,GAAK,MACnE4xC,EAAAA,EAAAA,IAAWxmB,EAAMi3F,gBAAiB,CAAE,gBAAiB,OAAQ,YAAaj3F,EAAMhtB,QAAQ4B,GAAK,aAC7ForB,EAAM8wD,aAAaxqC,aAAa,gBAAiB,QACjD,IAAI64E,EAAcn/F,EAAM8xF,cAAgB9xF,EAAM6zF,YAAY5qD,cAAgBjpC,EAAM+wD,aAAaC,WAC7FvqC,EAAAA,EAAAA,IAAS,CAAC04E,GAAc,CAAC7L,EAAoBE,aAE7CxzF,EAAM20F,iBAAkB,EACxB,IACI31E,EAAY,CAAEu5C,MADEv4D,EAAMu0D,SACcxiF,MAAOtG,EAAG8L,QAAQ,EAAO05C,UAHjD,CAAE7oD,KAAM,SAAU0pD,SAAU,MAI5C9xB,EAAM8lB,QAAQ,OAAQ9G,GAAW,SAAUA,GAClCA,EAAUznC,QAUXyoB,EAAM20F,iBAAkB,EACxB30F,EAAMo/F,kBAVDzhG,EAAAA,EAAAA,IAAkBqC,EAAM+wD,gBACzBtqC,EAAAA,EAAAA,IAAS,CAACzmB,EAAM+wD,aAAaC,WAAY,CAACsiC,EAAoBI,gBAElE1zF,EAAM+8B,wBACDp/B,EAAAA,EAAAA,IAAkBqC,EAAMu0D,WACzBv0D,EAAMu0D,SAASW,KAAK,IAAIllC,EAAAA,GAAUhR,EAAUiS,WAA8B,MAAjBjxB,EAAM8kD,OAAmB9kD,EAAMhtB,QAAU,MAO9G,GACJ,CAIJ,GAvHA,CAwHJ,EACA5J,EAAaimB,UAAUwvG,eAAiB,SAAUf,KACzCl7E,EAAAA,GAAQY,UAAaZ,EAAAA,GAAQY,UAAuC,iBAAzBxzB,KAAK47B,kBAAsC57B,KAAK4lG,oBAC5EyJ,EAAAA,EAAAA,IAAUvB,GACZ71H,OAAS,IACnB61H,EAASv2E,MAAMoa,WAAazyD,SAASglD,iBAAiB4pE,GAAUn8D,UAAW,IAAM,MAErF3xC,KAAKukE,SAAS+qC,mBAEtB,EACAl2H,EAAaimB,UAAUgvG,eAAiB,SAAUP,GAC9C,IAAIyB,EAAcrrE,iBAAiB4pE,GAC/B0B,EAAYtwH,SAASqwH,EAAYE,eAAgB,IACjDC,EAAexwH,SAASqwH,EAAYI,kBAAmB,IAC3D,OAAO3vG,KAAK4vG,iBAAiBJ,EAAYE,EAC7C,EACAt2H,EAAaimB,UAAUuvG,YAAc,SAAU5rH,EAASksE,EAAaxrB,GACjE,IAAI1zB,EAAQhQ,KACZA,KAAKukE,SAAW,IAAIoC,EAAAA,GAAM3jF,EAAS,CAC/B+wD,MAAO/zC,KAAKsiE,WAAYyE,WAAY,WACpCH,SAAU5mE,KAAK+gE,aAAaC,UAAWgG,UAAW,CAAEH,EAAG,OAAQC,EAAG,QAAUxjC,QAAS4rB,EACrFvkB,UAAW3qC,KAAK2qC,UAAWxH,QAASO,EACpCyO,SAAUnyC,KAAK2qC,UAAY,CAAEk8B,EAAG,QAASC,EAAG,UAAa,CAAED,EAAG,OAAQC,EAAG,UACzEhS,OAAQ90D,KAAK80D,OACbtjD,MAAO,WACExB,EAAMy0F,iBACPz0F,EAAM05F,gBAGN15F,EAAM8rF,SACN9rF,EAAMg9B,cAAc,CAAC,iBAAkB,mBAE3Ch9B,EAAM80F,iBAAkB,EACxB90F,EAAMy0F,iBAAkB,EACxBz0F,EAAMo/F,eACFp/F,EAAM8xF,eAAiB9xF,EAAMu1F,mBAAmBtsE,MAAQjpB,EAAMu1F,mBAAmBtsE,KAAK,KACtFjpB,EAAM2tF,UAAW,EACjB3tF,EAAM+tF,iBAAiB/tF,EAAMu1F,mBAAmBjK,UAAWtrF,EAAMu1F,mBAAmBtsE,KAAM,MAAM,GAExG,EACA14C,KAAM,WACFy0C,EAAAA,GAAaG,IAAIvyB,SAAU,YAAaoN,EAAMo6F,gBAAiBp6F,GAC/DA,EAAM+hE,aAAc,EACpB,IAAI89B,EAAa7/F,EAAMu1F,oBAAsBv1F,EAAMu1F,mBAAmBjK,WAClEtrF,EAAMu1F,mBAAmBjK,UAAU/oF,cAAc,MACjD+oF,EAAYtrF,EAAMipB,KAAK1mB,cAAc,UACpC5E,EAAAA,EAAAA,IAAkBqC,EAAMsrF,aAAe3tF,EAAAA,EAAAA,IAAkBqC,EAAMsrF,UAAU92D,uBAAuB,gBAAgB,KAG3G72B,EAAAA,EAAAA,IAAkBqC,EAAMsrF,aAAe3tF,EAAAA,EAAAA,IAAkBqC,EAAMsrF,UAAU92D,uBAAuB,YAAY,MAClHhO,EAAAA,EAAAA,IAAWxmB,EAAMi3F,gBAAiB,CAAE,wBAAyBj3F,EAAMsrF,UAAU92D,uBAAuB,YAAY,GAAG5/C,MAHnH4xC,EAAAA,EAAAA,IAAWxmB,EAAMi3F,gBAAiB,CAAE,wBAAyBj3F,EAAMsrF,UAAU92D,uBAAuB,gBAAgB,GAAG5/C,KAKvHorB,EAAM8xF,eAAiB9xF,EAAMsuF,cAAiBtuF,EAAMhtB,QAAQmzC,UAAYnmB,EAAMo3F,kBAC7EyI,GAAcvU,GAAauU,EAAW/oD,cAAgBw0C,EAAUx0C,aACvC,iBAA1B92C,EAAMhtB,QAAQmzC,SACdnmB,EAAM22F,gBAEN32F,EAAM63F,oBACN1wE,EAAAA,EAAAA,IAAY,CAACnnB,EAAM+wD,aAAaC,WAAY,CAACsiC,EAAoBE,aACjExzF,EAAM00F,eAAgB,EACtB10F,EAAM6zF,YAAYpyF,QACdzB,EAAM+wD,aAAakD,cACnBxtC,EAAAA,EAAAA,IAAS,CAACzmB,EAAM+wD,aAAakD,aAAcq/B,EAAoBW,gBAGvEj0F,EAAMq6F,mBACV,EACA7iC,mBAAoB,WACX50C,EAAAA,GAAQY,UACTxjB,EAAMk3F,WAEd,GAER,EACA9tH,EAAaimB,UAAUkvG,YAAc,WACjC,QAAQ5gG,EAAAA,EAAAA,IAAkB3N,KAAK4rE,gBAAgD,IAA9B5rE,KAAK4rE,cAAc3zF,MACxE,EACAmB,EAAaimB,UAAUsvG,gBAAkB,WACrC,EAEJv1H,EAAaimB,UAAUwoG,eAAiB,WACpC,MAAgC,iBAAzB7nG,KAAK47B,iBAAsC57B,KAAK9W,cAC3D,EACA9P,EAAaimB,UAAUu0E,cAAgB,WAC/BhhD,EAAAA,GAAQY,WAAuC,iBAAzBxzB,KAAK47B,kBAC1B57B,KAAK6nG,kBAA+C,aAAzB7nG,KAAK47B,kBAAmC57B,KAAK9W,gBAAkB8W,KAAK4lG,kBAChG5lG,KAAKknG,WAEb,EACA9tH,EAAaimB,UAAUyvG,qBAAuB,WAC1C,IAAIV,EAAkBpuG,KAAK6jG,YAAY5qD,cAAc/V,wBAAwB8Q,OAC7Eh0C,KAAKukE,SAASvhF,QAAQu0C,MAAMk4C,UAAY,OACxCzvE,KAAKukE,SAASvhF,QAAQu0C,MAAMwc,MAAQ,OACpC/zC,KAAKi5B,KAAK1B,MAAMk4C,UAAanvF,OAAO8zD,YAAcg6D,EAAmB,KACrEpuG,KAAKi5B,KAAK1B,MAAMyc,OAAU1zD,OAAO8zD,YAAcg6D,EAAmB,KAClE,IAAI/C,EAAerrG,KAAK6jG,YAAY5qD,cAAc1mC,cAAc,IAAM+wF,EAAoBU,YAC1FzrE,EAAAA,EAAAA,IAAOv4B,KAAK6jG,aACZwH,EAAapyD,cAAcjhB,aAAah4B,KAAK6jG,YAAawH,EAC9D,EACAjyH,EAAaimB,UAAUuwG,iBAAmB,SAAUE,GAChD,IAAI5gD,EACA6gD,EAAcD,EACdpJ,EAAa1mG,KAAKi5B,KAAK1mB,cAAc,IAAM+wF,EAAoB7xF,QAAUzR,KAAK0mG,WAC9E4H,EAAYtuG,KAAKuuG,cAAgBvuG,KAAKi5B,KAAOj5B,KAAK4rE,cAAc,GAChEokC,EAAWhwG,KAAKuuG,cAAgBvuG,KAAKi5B,KAAOj5B,KAAK4rE,cAAc5rE,KAAK0hG,WAAWzpH,OAAS,GACxFg5F,EAAWq9B,EAAUprE,wBAAwB8Q,OAC7C+8B,EAAa/wE,KAAKi5B,KAAKgb,aAAe,EACtCD,GAASrmC,EAAAA,EAAAA,IAAkB+4F,GAAc4H,EAAUz6D,UAAY6yD,EAAW7yD,UAE9E,GAD0Bm8D,EAASn8D,UACTk9B,EAAa/8B,KAAWrmC,EAAAA,EAAAA,IAAkB3N,KAAK4rE,gBACrE5rE,KAAK4rE,cAAc3zF,OAAS,KAAM01B,EAAAA,EAAAA,IAAkB+4F,GAAa,CACjE,IAAIx1C,EAAQlxD,KAAKi5B,KAAKgb,aAAeg9B,EACjCg/B,EAAgB/wH,SAASglD,iBAAiBlkC,KAAKi5B,MAAMg3E,cAAe,IACxE/gD,GAAegC,GAASlxD,KAAK4rE,cAAc3zF,OAAS+nB,KAAK8tE,cAAgBmD,EAAW8+B,EAAcE,EAClGjwG,KAAKi5B,KAAKuK,UAAYkjE,EAAW7yD,SACrC,MACSG,EAAS+8B,GACd7hB,EAAc6hB,EAAaE,EAAW,EACtCjxE,KAAKi5B,KAAKuK,UAAYwQ,EAAS+8B,EAAaE,EAAW,GAGvD/hB,EAAclb,EAIlB,QADAkb,EAAcA,EAAc+hB,EAAW8+B,GAAgB9+B,EADrCjxE,KAAK+gE,aAAaC,UAAU/sB,cACmC,EAErF,EACA76D,EAAaimB,UAAUijE,SAAW,WAC9B,IAAIvuB,GAAQjiC,EAAAA,EAAAA,IAAW9R,KAAKkwG,YACxBn8D,EAAMz9C,QAAQ,MAAQ,IAEtBy9C,GADiB/zC,KAAK+gE,aAAaC,UAAUvpC,YAAcxR,WAAW8tB,GAAS,KAC5D34D,WAAa,MAEpC,GAAIw3C,EAAAA,GAAQY,WAAcxzB,KAAK9W,iBAA4C,iBAAzB8W,KAAK47B,iBAClD57B,KAAK4lG,iBAA4C,aAAzB5lG,KAAK47B,iBAAmC,CACjE,IAAI0yE,EAAYtuG,KAAKuuG,cAAgBvuG,KAAKi5B,KAAOj5B,KAAK4rE,cAAc,GACpE73B,EAAS70D,SAAS60D,EAAO,IAE8D,GAFvD70D,SAASglD,iBAAiBoqE,GAAWE,WAAY,IAC7EtvH,SAASglD,iBAAiBlkC,KAAK8gE,cAAc2tC,YAAa,IAC1DvvH,SAASglD,iBAAiBlkC,KAAK8gE,aAAa7nB,eAAey1D,gBAAiB,KAAY,IAChG,CACA,OAAO36D,CACX,EACA36D,EAAaimB,UAAU8wG,aAAe,SAAUC,GAC5C,KAAKziG,EAAAA,EAAAA,IAAkB3N,KAAK0mG,YAAa,CACrC,IAAI2J,EAAgBrwG,KAAKi5B,KAAKgb,aAC1Bq8D,EAAatwG,KAAK0mG,WAAW7yD,UAAY7zC,KAAK0mG,WAAWzyD,aAAej0C,KAAKi5B,KAAKuK,UAClF+sE,EAAavwG,KAAKi5B,KAAKuK,UAAY8sE,EAAaD,EACpDE,EAAaH,EAAYG,EAAoE,EAAvDrxH,SAASglD,iBAAiBlkC,KAAKi5B,MAAMu3E,WAAY,IAAUD,EACjG,IAAIE,EAAWzwG,KAAK0mG,WAAW7yD,UAAY7zC,KAAK0mG,WAAWzyD,aAAej0C,KAAKi5B,KAAKuK,UACpFitE,EAAWzwG,KAAKnd,OAAOm6G,WAAYrvF,EAAAA,EAAAA,IAAkB3N,KAAKy/F,oBACtDgR,EAAWzwG,KAAKy/F,mBAAmBxrD,aAAew8D,EAC7B,IAArBzwG,KAAK8tE,YACL9tE,KAAKi5B,KAAKuK,UAAY,GAEjB8sE,EAAaD,KAAmBI,EAAW,GAAKzwG,KAAKi5B,KAAKgb,aAAew8D,MAC9EzwG,KAAKi5B,KAAKuK,UAAY+sE,EAE9B,CACJ,EACAn3H,EAAaimB,UAAUmkC,UAAY,WAC/B,KAAK71B,EAAAA,EAAAA,IAAkB3N,KAAK0mG,YAAa,CACrC,IAAI6J,EAAavwG,KAAK0mG,WAAW7yD,UAAY7zC,KAAKi5B,KAAKuK,UACvD+sE,EAAavwG,KAAKnd,OAAOm6G,WAAYrvF,EAAAA,EAAAA,IAAkB3N,KAAKy/F,oBACxD8Q,EAAavwG,KAAKy/F,mBAAmBxrD,aAAes8D,EACxD,IAAIE,EAAYzwG,KAAK0mG,WAAW7yD,UAAY7zC,KAAK0mG,WAAWzyD,aAAej0C,KAAKi5B,KAAKuK,UAC5D,IAArBxjC,KAAK8tE,YACL9tE,KAAKi5B,KAAKuK,UAAY,EAEjB+sE,EAAa,EAClBvwG,KAAKi5B,KAAKuK,UAAYxjC,KAAKi5B,KAAKuK,UAAY+sE,EAErCE,EAAW,GAAKzwG,KAAKi5B,KAAKgb,aAAew8D,IAChDzwG,KAAKi5B,KAAKuK,UAAYxjC,KAAK0mG,WAAW7yD,WAAa7zC,KAAKnd,OAAOm6G,WAAYrvF,EAAAA,EAAAA,IAAkB3N,KAAKy/F,oBAC9Fz/F,KAAKy/F,mBAAmBxrD,aAAe,GAEnD,CACJ,EACA76D,EAAaimB,UAAU6pG,cAAgB,WACnC,OAAO,CACX,EACA9vH,EAAaimB,UAAUyiG,YAAc,WACjC,OAAO9hG,KAAK9W,cAChB,EACA9P,EAAaimB,UAAUqxG,cAAgB,WACnC,OAAO,CACX,EACAt3H,EAAaimB,UAAUuxE,kBAAoB,SAAUn1F,GACjD,IAAKkyB,EAAAA,EAAAA,IAAkBlyB,GAanBukB,KAAKmwG,cAAa,QAZlB,OAAQ10H,EAAEwnB,QACN,IAAK,WACL,IAAK,OACL,IAAK,MACDjD,KAAKmwG,eACL,MACJ,QACInwG,KAAKwjC,YAOrB,EACApqD,EAAaimB,UAAU6tG,UAAY,WAC/BltG,KAAK6jG,YAAYtmH,MAAQyiB,KAAKolG,YAAc,GAC5CplG,KAAKmsG,YAAY,KACrB,EACA/yH,EAAaimB,UAAUsxG,YAAc,SAAU58D,IACtCpmC,EAAAA,EAAAA,IAAkBomC,KACE,kBAAVA,EACP/zC,KAAK+gE,aAAaC,UAAUzpC,MAAMwc,OAAQjiC,EAAAA,EAAAA,IAAWiiC,GAE/B,kBAAVA,IACZ/zC,KAAK+gE,aAAaC,UAAUzpC,MAAMwc,MAASA,EAAM3rC,MAAM,WAAe2rC,GAAUjiC,EAAAA,EAAAA,IAAWiiC,IAGvG,EACA36D,EAAaimB,UAAU2yE,WAAa,SAAUliE,EAAOr0B,GACjD,IAAIu0B,EAAQhQ,KAEZ,GADAA,KAAK+kG,SAAU,EACT/kG,KAAKukE,UAAY3hE,SAASuuB,KAAK+F,SAASl3B,KAAKukE,SAASvhF,UAAYgd,KAAK2kG,gBAA7E,CAGA3vE,EAAAA,GAAaW,OAAO/yB,SAAU,YAAa5C,KAAKoqG,iBAChDpqG,KAAK29F,UAAW,EAChB39F,KAAK8oG,eAAiB,KACtB9oG,KAAK4lG,iBAAkB,EACvB5lG,KAAKklG,iBAAkB,EAEvB,IADA,IACS32F,EAAK,EAAGqiG,EADc5wG,KAAKukE,SAASz0B,oBAAoB9vC,KAAK+gE,aAAaC,WACXzyD,EAAKqiG,EAA2B34H,OAAQs2B,IAAM,CAClH,IAAIvrB,EAAU4tH,EAA2BriG,GACzCymB,EAAAA,GAAaW,OAAO3yC,EAAS,SAAUgd,KAAK4zE,cAChD,CACIhhD,EAAAA,GAAQY,UAAYxzB,KAAK6nG,mBACzB1wE,EAAAA,EAAAA,IAAY,CAACv0B,SAASuuB,KAAMnxB,KAAKukE,SAASvhF,SAAUsgH,EAAoBY,iBAExElkG,KAAK6nG,mBACAj1E,EAAAA,GAAQY,WACTxzB,KAAKmtG,gBAAgBzlF,UACjB1nB,KAAKitG,kBACLj4E,EAAAA,GAAaW,OAAO31B,KAAKitG,iBAAkB,QAASjtG,KAAKktG,YAG7DltG,KAAK+uG,kBACL/5E,EAAAA,GAAaW,OAAO31B,KAAK+uG,gBAAiB,QAAS/uG,KAAKgvG,iBACxDh6E,EAAAA,GAAaW,OAAO31B,KAAKitG,iBAAkB,QAASjtG,KAAKktG,aAExDv/F,EAAAA,EAAAA,IAAkB3N,KAAK6jG,eACxB7uE,EAAAA,GAAaW,OAAO31B,KAAK6jG,YAAa,QAAS7jG,KAAKotG,SACpDp4E,EAAAA,GAAaW,OAAO31B,KAAK6jG,YAAa,QAAS7jG,KAAKksG,YACpDl3E,EAAAA,GAAaW,OAAO31B,KAAK6jG,YAAa,UAAW7jG,KAAKosG,cACtDp3E,EAAAA,GAAaW,OAAO31B,KAAK6jG,YAAa,OAAQ7jG,KAAK2nG,eACnD3yE,EAAAA,GAAaW,OAAO31B,KAAK6jG,YAAa,QAAS7jG,KAAKqtG,eAExDrtG,KAAK6jG,YAAc,OAEvBrtE,EAAAA,EAAAA,IAAWx2B,KAAKinG,gBAAiB,CAAE,gBAAiB,UACpDjnG,KAAK8gE,aAAaxqC,aAAa,gBAAiB,SAChDt2B,KAAKinG,gBAAgB/lE,gBAAgB,aACrClhC,KAAKinG,gBAAgB/lE,gBAAgB,yBACrClhC,KAAK+gE,aAAaC,UAAUpqC,UAAUjB,OAAO2tE,EAAoBI,eAC7D1jG,KAAK8hG,gBACL9hG,KAAKulG,mBAAmBC,WAAY,GAExCxlG,KAAK2kG,iBAAkB,EACvB,IAAI7xB,EAAY,CACZ16F,KAAM,UACN0pD,SAAU,IACVhyB,MAAOA,GAAgB,GAGvBkf,EAAY,CAAEu5C,MADEvoE,KAAKukE,SACeh9E,QAAQ,EAAO05C,UAAW6xC,EAAW/wF,MAAOtG,GAAK,MACzFukB,KAAK81B,QAAQ,QAAS9G,GAAW,SAAUA,GACvC,KAAKrhB,EAAAA,EAAAA,IAAkBqC,EAAMu0D,aACxB52D,EAAAA,EAAAA,IAAkBqC,EAAMu0D,SAASvhF,QAAQuvB,cAAc,kBAAmB,CAC3E,IAAIs+F,EAAc7gG,EAAMu0D,SAASvhF,QAAQuvB,cAAc,iBACvDs+F,EAAYvgG,WAAWkoB,YAAYq4E,GACnC7gG,EAAMyvF,mBAAqB,IAC/B,CACKzwE,EAAUznC,SACmB,iBAA1ByoB,EAAM4rB,iBACN5rB,EAAMqyF,YAENryF,EAAM+hE,YACN/hE,EAAMu0D,SAASU,KAAK,IAAIjlC,EAAAA,GAAUhR,EAAUiS,YAG5CjxB,EAAMo/F,eAGlB,IACIpvG,KAAK87F,SAAW97F,KAAK8hG,eAAsC,MAArB9hG,KAAKs+F,eAC3Ct+F,KAAKulG,mBAAmBjK,UAAYt7F,KAAKs7F,UAAUlqF,WAAU,GAtEjE,CAwEJ,EACAh4B,EAAaimB,UAAU+vG,aAAe,WAClCpvG,KAAK+xE,aAAc,EACnB/xE,KAAK0kG,eAAgB,EACjB1kG,KAAKukE,WACLvkE,KAAKukE,SAAS78C,WACd6Q,EAAAA,EAAAA,IAAOv4B,KAAKukE,SAASvhF,SAE7B,EACA5J,EAAaimB,UAAU2vG,gBAAkB,WACrChvG,KAAKknG,YACLlnG,KAAKqnD,SACT,EAOAjuE,EAAaimB,UAAUisC,OAAS,WACC,UAAzBtrC,KAAKhd,QAAQmzC,SACbn2B,KAAK8gE,aAAe9gE,KAAKhd,SACrB2qB,EAAAA,EAAAA,IAAkB3N,KAAK8gE,aAAa1/B,aAAa,UACjDphC,KAAK8gE,aAAaxqC,aAAa,OAAQ,aAEvC3oB,EAAAA,EAAAA,IAAkB3N,KAAK8gE,aAAa1/B,aAAa,UACjDphC,KAAK8gE,aAAaxqC,aAAa,OAAQ,QAE3Ct2B,KAAK8gE,aAAaxqC,aAAa,gBAAiB,WAGhDt2B,KAAK8gE,aAAe9gE,KAAK4Q,cAAc,QAAS,CAAE2lB,MAAO,CAAEi0B,KAAM,WAAYlwE,KAAM,UAC/E0lB,KAAKhd,QAAQmzC,UAAYn2B,KAAKonG,mBAC9BpnG,KAAKhd,QAAQu0C,MAAMuiB,QAAU,QAEjC95C,KAAKhd,QAAQi2D,cAAcjhB,aAAah4B,KAAK8gE,aAAc9gE,KAAKhd,SAChEgd,KAAKmnG,gBAAgBnnG,KAAK8gE,eAE9B,IAAImB,EAAwBjiE,KAAK7f,UAC5BwtB,EAAAA,EAAAA,IAAkB3N,KAAK7f,WAA+B,KAAlB6f,KAAK7f,WAC1C8hF,EAAyBjiE,KAAK7f,SAASsW,QAAQ,OAAQ,KAAMwkD,UAE5DttC,EAAAA,EAAAA,KAAkByrB,EAAAA,EAAAA,IAAQp5B,KAAKhd,QAAS,eAAgBo2C,EAAAA,EAAAA,IAAQp5B,KAAKhd,QAAS,YAAYjK,WAC3FinB,KAAK9mB,SAAU,GAEnB8mB,KAAK+gE,aAAeH,EAAAA,EAAMa,YAAY,CAClCz+E,QAASgd,KAAK8gE,aACdG,QAASjhE,KAAK0wG,gBAAkB,CAACpN,EAAoBG,MAAQ,KAC7D9iC,eAAgB3gE,KAAK2gE,eACrBvqC,WAAY,CACRirC,SAAmC,iBAAzBrhE,KAAK47B,iBAA4C57B,KAAKqhE,SAChEK,YAAa1hE,KAAK0hE,YAClBvhF,SAAU8hF,EACV/oF,QAAS8mB,KAAK9mB,QACdyxD,UAAW3qC,KAAK2qC,UAChBy3B,gBAAiBpiE,KAAKoiE,kBAE3BpiE,KAAK4Q,eACJ5Q,KAAKhd,QAAQmzC,UAAYn2B,KAAKonG,iBAC9BpnG,KAAKhd,QAAQmuB,YAAYnR,KAAK+gE,aAAaC,WAG3ChhE,KAAK8gE,aAAa7nB,cAAcjhB,aAAah4B,KAAKhd,QAASgd,KAAK8gE,cAEpE9gE,KAAKokG,cAAgBpkG,KAAK4Q,cAAc,SAAU,CAC9C2lB,MAAO,CAAE,cAAe,OAAQ,SAAY,KAAM,MAAS+sE,EAAoBc,kBAEnF1sE,EAAAA,EAAAA,IAAQ,CAAC13B,KAAKokG,eAAgBpkG,KAAK+gE,aAAaC,WAChDhhE,KAAKkpE,oBAAoBlpE,KAAKhd,QAASgd,KAAKokG,eAC5CpkG,KAAK8wG,cACL9wG,KAAK2hG,YACL3hG,KAAK+gE,aAAaC,UAAUzpC,MAAMwc,OAAQjiC,EAAAA,EAAAA,IAAW9R,KAAK+zC,OAC1D/zC,KAAK+gE,aAAaC,UAAUpqC,UAAUzB,IAAI,SACd,SAAxBn1B,KAAK2gE,gBACLC,EAAAA,EAAMC,eAAe7gE,KAAK8gE,aAAc9gE,KAAK+gE,aAAaC,aAEzDrzD,EAAAA,EAAAA,IAAkB3N,KAAK+gE,aAAaE,QAAQ,KAAOjhE,KAAK+gE,aAAaC,UAAUx8B,uBAAuB,wBAAwB,IAA8B,UAAxBxkC,KAAK2gE,gBAC1I3gE,KAAK+gE,aAAaC,UAAUx8B,uBAAuB,wBAAwB,GAAG5N,UAAUzB,IAAI,UAEhGn1B,KAAKkoG,YACLloG,KAAKozD,SAAWpzD,KAAKhd,QAAQkjE,aAAa,YAAclmD,KAAKhd,QAAQo+C,aAAa,YAAc,IAChGphC,KAAKhd,QAAQk+C,gBAAgB,YAC7B,IAAIt8C,EAAKob,KAAKhd,QAAQo+C,aAAa,MAAQphC,KAAKhd,QAAQo+C,aAAa,OAAQ1xB,EAAAA,EAAAA,IAAY,oBAgBzF,GAfA1P,KAAKhd,QAAQ4B,GAAKA,EAClBob,KAAKokG,cAAcx/G,GAAKA,EAAK,UAC7Bob,KAAKinG,gBAAgB3wE,aAAa,WAAYt2B,KAAKozD,UACtB,iBAAzBpzD,KAAK47B,iBAA+D,aAAzB57B,KAAK47B,gBAChD57B,KAAK8gE,aAAaxqC,aAAa,aAAct2B,KAAK47B,kBAGlDpF,EAAAA,EAAAA,IAAWx2B,KAAKinG,gBAAiB,CAAE,aAAcjnG,KAAK47B,mBAE1DpF,EAAAA,EAAAA,IAAWx2B,KAAKinG,gBAAiBjnG,KAAKgnG,qBACtChnG,KAAK28F,oBAAoB38F,KAAKsqD,gBAC9BtqD,KAAK4mG,oBACD5mG,KAAKinG,kBAAoBjnG,KAAK8gE,cAC9B9gE,KAAK8gE,aAAa5/B,gBAAgB,mBAEnB,OAAflhC,KAAKziB,OAAuC,OAArByiB,KAAK8tE,aAAsC,OAAd9tE,KAAKjoB,KACzDioB,KAAKqtE,iBAEJ,GAA6B,WAAzBrtE,KAAKhd,QAAQmzC,SAAwBn2B,KAAKhd,QAAQ0d,QAAQ,GAAI,CACnE,IAAIqwG,EAAgB/wG,KAAKhd,QACzBgd,KAAKziB,MAAQwzH,EAAcrwG,QAAQqwG,EAAc9Y,eAAe16G,MAChEyiB,KAAKjoB,MAAO41B,EAAAA,EAAAA,IAAkB3N,KAAKziB,OAAS,KAAOwzH,EAAcrwG,QAAQqwG,EAAc9Y,eAAenxC,YACtG9mD,KAAKqtE,WACT,CACArtE,KAAKjlB,aACLilB,KAAKmnG,gBAAgBnnG,KAAKhd,SACrBgd,KAAK9mB,UACN8mB,KAAKinG,gBAAgB7zC,UAAY,GAErCpzD,KAAK4kG,SAAU,EACf5kG,KAAKhd,QAAQu0C,MAAMgN,QAAU,GAC7BvkC,KAAK8gE,aAAakwC,SAAW,SAAUv1H,GACnCA,EAAEw1H,0BACN,EACAjxG,KAAK8gE,aAAaowC,SAAW,SAAUz1H,GACnCA,EAAEw1H,0BACN,EACIjxG,KAAKhd,QAAQkjE,aAAa,cAC1BlmD,KAAKqnD,WAEJ15C,EAAAA,EAAAA,IAAkB3N,KAAKjoB,OACxBioB,KAAK8gE,aAAaxqC,aAAa,QAASt2B,KAAKjoB,MAE7CioB,KAAKhd,QAAQkjE,aAAa,aAC1BlmD,KAAKhd,QAAQszC,aAAa,WAAY,SAE1C,IAAI66E,EAAoBnxG,KAAK+gE,aAAaC,UAAUx8B,uBAAuB,gBAAgB,IACtF72B,EAAAA,EAAAA,IAAkB3N,KAAKhd,QAAQ4B,KAA2B,KAApBob,KAAKhd,QAAQ4B,KAAc+oB,EAAAA,EAAAA,IAAkBwjG,KACpFA,EAAkBvsH,GAAK,SAAWob,KAAKhd,QAAQ4B,GAAG6R,QAAQ,KAAM,MAChE+/B,EAAAA,EAAAA,IAAWx2B,KAAK8gE,aAAc,CAAE,kBAAmBqwC,EAAkBvsH,MAEzEob,KAAKqsC,gBACT,EACAjzD,EAAaimB,UAAU8uG,kBAAoB,SAAUL,GAE7C9tG,KAAK42D,OACD52D,KAAK87F,SAA0C,oBAAxB97F,KAAKkuG,eAC5BluG,KAAKgtC,cAAc,CAAC,mBAGpBhtC,KAAK42D,OAAOrlD,UAAY,IAI5BvR,KAAK42D,OAAS52D,KAAK4Q,cAAc,QACjC6lB,EAAAA,EAAAA,IAAS,CAACz2B,KAAK42D,QAAS0sC,EAAoB1sC,SAEhD,IAAIw6C,EAAcpxG,KAAKwrG,iBAAiBxrG,KAAKkuG,gBAQzCmD,GAP+B,oBAAxBrxG,KAAKkuG,gBAAiCkD,GAC5B/vD,EAAAA,EAAAA,KAAQ3oB,EAAAA,EAAAA,IAAO14B,KAAKkuG,eAAgBtrG,UAAU2O,UAAU0pC,SAGxDoG,EAAAA,EAAAA,IAAQrhD,KAAKkuG,iBAGE,CAAC,EAAGluG,KAAM,iBAAkBA,KAAK09F,iBAAkB19F,KAAKwqC,iBAAkB,KAAMxqC,KAAK42D,QACrHy6C,GAAkBA,EAAep5H,OAAS,IAC1CkgD,EAAAA,EAAAA,IAAOk5E,EAAgBrxG,KAAK42D,SAEhCz+B,EAAAA,EAAAA,IAAO,CAACn4B,KAAK42D,QAASk3C,EAC1B,EACA10H,EAAaimB,UAAU4uG,kBAAoB,SAAUH,GAE7C9tG,KAAKywB,OACLzwB,KAAKywB,OAAOlf,UAAY,IAGxBvR,KAAKywB,OAASzwB,KAAK4Q,cAAc,QACjC6lB,EAAAA,EAAAA,IAAS,CAACz2B,KAAKywB,QAAS6yE,EAAoB7yE,SAEhD,IAAI6gF,EAActxG,KAAKwrG,iBAAiBxrG,KAAKguG,gBAQzCuD,GAP+B,oBAAxBvxG,KAAKguG,gBAAiCsD,GAC5BjwD,EAAAA,EAAAA,KAAQ3oB,EAAAA,EAAAA,IAAO14B,KAAKguG,eAAgBprG,UAAU2O,UAAU0pC,SAGxDoG,EAAAA,EAAAA,IAAQrhD,KAAKguG,iBAGE,CAAC,EAAGhuG,KAAM,iBAAkBA,KAAKy9F,iBAAkBz9F,KAAKwqC,iBAAkB,KAAMxqC,KAAKywB,QACrH8gF,GAAkBA,EAAet5H,SACjCkgD,EAAAA,EAAAA,IAAOo5E,EAAgBvxG,KAAKywB,QAEhC,IAAI+gF,EAAa1D,EAASv7F,cAAc,iBACxCu7F,EAAS91E,aAAah4B,KAAKywB,OAAQ+gF,EACvC,EAMAp4H,EAAaimB,UAAUtkB,WAAa,WAChCilB,KAAKhd,QAAQszC,aAAa,gBAAkBt2B,KAAK9mB,QAAW,QAAU,OAC1E,EACAE,EAAaimB,UAAUoyG,WAAa,SAAU15H,GAC1CioB,KAAKjoB,KAAOA,CAChB,EACAqB,EAAaimB,UAAUqyG,YAAc,SAAUn0H,GAC3CyiB,KAAKziB,MAAQA,CACjB,EACAnE,EAAaimB,UAAUwuG,aAAe,YAC7BlgG,EAAAA,EAAAA,IAAkB3N,KAAKukE,YAAa3hE,SAASuuB,KAAK+F,SAASl3B,KAAKukE,SAASvhF,YACxEgd,KAAK9W,gBAAoB0pC,EAAAA,GAAQY,UAAYxzB,KAAK6nG,mBAA+C,iBAAzB7nG,KAAK47B,mBAC/EzE,EAAAA,EAAAA,IAAY,CAACn3B,KAAKukE,SAASvhF,SAAU,iBACrCgd,KAAKukE,SAASiE,gBAAgBxoE,KAAK+gE,aAAaC,WAChDhhE,KAAKukE,SAAS+qC,mBAEtB,EACAl2H,EAAaimB,UAAUsyG,UAAY,SAAUtvE,IACrCA,EAAQhpD,aAAes0B,EAAAA,EAAAA,IAAkB9uB,OAAOC,KAAKujD,EAAQhpD,eAAgB2mB,KAAKs+F,eAAgBt+F,KAAK9W,gBACrG8W,KAAKskG,gBAAmBjiE,EAAQhpD,sBAAsBuyG,EAAAA,IACxD5rF,KAAKi5B,KAAO,KACZj5B,KAAKulG,mBAAqB,CAAEjK,UAAW,KAAMriE,KAAM,KAAMusE,WAAW,IAExExlG,KAAKskG,gBAAiB,EACtB,IAAIsN,GAA2D,IAA3C/yH,OAAOC,KAAKujD,GAAS/rC,QAAQ,WAAmBqX,EAAAA,EAAAA,IAAkB00B,EAAQ9kD,OAC1Fs0H,GAAyD,IAA1ChzH,OAAOC,KAAKujD,GAAS/rC,QAAQ,UAAkBqX,EAAAA,EAAAA,IAAkB00B,EAAQtqD,MAC/D,iBAAzBioB,KAAK47B,iBAAsC57B,KAAK9W,iBAAmB0oH,GAAiBC,KACpF7xG,KAAKs4F,SAAW,MAEhBt4F,KAAK9W,gBAAkBm5C,EAAQhpD,cAAes0B,EAAAA,EAAAA,IAAkB9uB,OAAOC,KAAKujD,EAAQhpD,cACpF2mB,KAAKulG,mBAAqB,CAAEjK,UAAW,KAAMriE,KAAM,KAAMusE,WAAW,GACpExlG,KAAKylG,WAAazlG,KAAKulG,mBACvBvlG,KAAKs4F,SAAW,MAEXt4F,KAAK9W,gBAAkBm5C,EAAQ+5C,SAAUzuE,EAAAA,EAAAA,IAAkB9uB,OAAOC,KAAKujD,EAAQ+5C,UACpFp8E,KAAKulG,mBAA8C,aAAzBvlG,KAAK47B,gBAC3B,CAAE0/D,UAAW,KAAMriE,KAAM,KAAMusE,WAAW,GAAUxlG,KAAKulG,mBAC7DvlG,KAAKylG,WAAazlG,KAAKulG,mBAE/B,EACAnsH,EAAaimB,UAAU4iG,iBAAmB,SAAU9/G,GAChB,KAA5B6d,KAAK8gE,aAAavjF,SAAkBowB,EAAAA,EAAAA,IAAkBxrB,MAAWwrB,EAAAA,EAAAA,IAAkBxrB,EAAM9I,cACnF8I,EAAM9I,sBAAsBuyG,EAAAA,GAA4C,IAA5BzpG,EAAM9I,WAAWpB,UACnE+nB,KAAKmmG,SAAS,KAAMhkH,GAEnB6d,KAAKnd,OAAOm6G,SAAW76G,EAAMU,SAAYmd,KAAKogG,iBAAmBpgG,KAAKi5B,OACvEjE,EAAAA,GAAaW,OAAO31B,KAAKi5B,KAAM,SAAUj5B,KAAK4gG,mBAC9C5rE,EAAAA,GAAaG,IAAIn1B,KAAKi5B,KAAM,SAAUj5B,KAAK4gG,kBAAmB5gG,SAE3D2N,EAAAA,EAAAA,IAAkBxrB,MAAWwrB,EAAAA,EAAAA,IAAkBxrB,EAAM9I,cAClD8I,EAAM9I,sBAAsBuyG,EAAAA,GAA4C,IAA5BzpG,EAAM9I,WAAWpB,SAAqBkK,EAAM9I,aAAe,MAC7G2mB,KAAKolG,YAAc,GACnBplG,KAAKw8F,UAAUx8F,KAAK3mB,aAEnB2mB,KAAK8lG,gBAAmB9lG,KAAK0kG,eAAiB9hG,SAASmjE,gBAAkB/lE,KAAK6jG,aAC/E7jG,KAAK8xG,kBAEb,EACA14H,EAAaimB,UAAUyyG,iBAAmB,WACtC9xG,KAAKs4F,SAAWt4F,KAAKojG,eAAepjG,KAAKziB,OACzC,IAAIs9G,EAAW76F,KAAKwmG,cACpBxmG,KAAK26B,cAAc,CAAE,KAAQkgE,EAAS9iH,KAAM,MAAS8iH,EAASt9G,OAClE,EACAnE,EAAaimB,UAAU0yG,kBAAoB,WACV,iBAAzB/xG,KAAK47B,iBACLglC,EAAAA,EAAM5+E,SAASge,KAAKjoB,KAAMioB,KAAK8gE,aAAc9gE,KAAK2gE,eAAgB3gE,KAAKoiE,gBAE/E,EASAhpF,EAAaimB,UAAUi8B,kBAAoB,SAAU+G,EAASC,GAC1D,IAAItyB,EAAQhQ,KACiB,iBAAzBA,KAAK47B,kBACL57B,KAAK2xG,UAAUtvE,GACfriC,KAAKkiG,iBAAiB,CAAC,SAAU,QAAS,cAAe7/D,IAsM7D,IApMA,IAAItzB,EAAU,SAAUoE,GACpB,OAAQA,GACJ,IAAK,QACL,IAAK,aAAc,MACnB,IAAK,iBACD06B,EAAO+4D,oBACP,MACJ,IAAK,QACD/4D,EAAO8iE,YAAYtuE,EAAQ0R,OAC3B6sB,EAAAA,EAAMC,eAAehzB,EAAOizB,aAAcjzB,EAAOkzB,aAAaC,WAC9D,MACJ,IAAK,cACDJ,EAAAA,EAAMwJ,eAAe/nC,EAAQq/B,YAAa7zB,EAAOizB,cACjD,MACJ,IAAK,uBACGjzB,EAAOg2D,aACPjjC,EAAAA,EAAMwJ,eAAe/nC,EAAQ2qE,qBAAsBn/D,EAAOg2D,aAE9D,MACJ,IAAK,WAC8B,iBAA3Bh2D,EAAOjS,iBACPglC,EAAAA,EAAMyJ,YAAYhoC,EAAQg/B,SAAUxzB,EAAOizB,cAE/CjzB,EAAOijE,cACP,MACJ,IAAK,WACDjjE,EAAO03B,YAAYljC,EAAQliD,SAAUmiD,EAAQniD,UAC7CygF,EAAAA,EAAMC,eAAehzB,EAAOizB,aAAcjzB,EAAOkzB,aAAaC,WAC9D,MACJ,IAAK,YACDnzB,EAAOy8B,eACP,MACJ,IAAK,UACDz8B,EAAO0gB,YACP,MACJ,IAAK,OACD,GAAqB,OAAjBlsB,EAAQtqD,KAAe,CACvB81D,EAAOs4D,WACP,KACJ,CAOA,GANKt4D,EAAO5U,OACJ4U,EAAOx0D,sBAAsBuyG,EAAAA,IAC7B/9C,EAAOg3D,kBAAmB,GAE9Bh3D,EAAOm0D,eAENn0D,EAAOg3D,iBAAkB,CAC1B,IAAIjyB,EAAK/kC,EAAOw5D,iBAAiBhlE,EAAQtqD,MACzC,IAAK81D,EAAOmkE,aAAap/B,GACrB,GAAI/kC,EAAO+9B,eAAiD,MAAhC/9B,EAAO+9B,cAAc3zF,QAClB,iBAA3B41D,EAAOjS,iBAAsCiS,EAAOosD,SAAShiH,OAAS,IACtE41D,EAAOokE,iBAAiB5vE,EAAQtqD,KAAMuqD,EAAQvqD,KAAM,aAEnD,GAAIsqD,EAAQtqD,MAAQ81D,EAAOx0D,sBAAsBuyG,EAAAA,EAAa,CAC/D,IAAIsmB,EAAerkE,EAAO6zD,WAAWzpH,OACjCw1H,GAAa9/F,EAAAA,EAAAA,IAAkBkgC,EAAOhrD,OAAO9K,MAAQ81D,EAAOhrD,OAAOtF,MAAQswD,EAAOhrD,OAAO9K,KAC7F81D,EAAOu3D,YAAc,GACrBv3D,EAAOx0D,WAAWkzG,aAAa1+C,EAAOs8C,SAASt8C,EAAOuuC,OAAOL,MAAM,IAAIkH,EAAAA,EAAUwqB,EAAY,QAASprE,EAAQtqD,QACzGoP,MAAK,SAAU1L,GACZA,EAAE2D,OAAOnH,OAAS,GAClB+3B,EAAMsyF,QAAQ7mH,EAAE2D,OAAQ8yH,GACxBliG,EAAMy3F,gBAGNz3F,EAAMyhG,WAAWnvE,EAAQvqD,KAEjC,GACJ,KACoC,iBAA3B81D,EAAOjS,gBACZiS,EAAO2rC,cAAcn3C,EAASC,GAG9BuL,EAAO4jE,WAAWnvE,EAAQvqD,MAGlC81D,EAAOkkE,mBACX,CACA,MACJ,IAAK,QACD,GAAsB,OAAlB1vE,EAAQ9kD,MAAgB,CACxBswD,EAAOs4D,WACP,KACJ,CAQA,GAPAt4D,EAAO9mB,OAAO,oBAAqB,CAAEsb,QAASA,IACzCwL,EAAO5U,OACJ4U,EAAOx0D,sBAAsBuyG,EAAAA,IAC7B/9C,EAAOg3D,kBAAmB,GAE9Bh3D,EAAOm0D,eAENn0D,EAAOg3D,iBAAkB,CAC1B,IAAIz5G,EAAOyiD,EAAOy5D,kBAAkBjlE,EAAQ9kD,OAC5C,IAAKswD,EAAOmkE,aAAa5mH,GACrB,GAAIyiD,EAAO+9B,eAAiD,MAAhC/9B,EAAO+9B,cAAc3zF,QAClB,iBAA3B41D,EAAOjS,iBAAsCiS,EAAOosD,SAAShiH,OAAS,IACtE41D,EAAOokE,iBAAiB5vE,EAAQ9kD,MAAO+kD,EAAQ/kD,MAAO,cAErD,GAAI8kD,EAAQ9kD,OAASswD,EAAOx0D,sBAAsBuyG,EAAAA,EAAa,CAChE,IAAIumB,EAAetkE,EAAO6zD,WAAWzpH,OACjCw1H,GAAa9/F,EAAAA,EAAAA,IAAkBkgC,EAAOhrD,OAAOtF,OAASswD,EAAOhrD,OAAO9K,KAAO81D,EAAOhrD,OAAOtF,MAC7FswD,EAAOu3D,YAAc,GACrBv3D,EAAOx0D,WAAWkzG,aAAa1+C,EAAOs8C,SAASt8C,EAAOuuC,OAAOL,MAAM,IAAIkH,EAAAA,EAAUwqB,EAAY,QAASprE,EAAQ9kD,SACzG4J,MAAK,SAAU1L,GACZA,EAAE2D,OAAOnH,OAAS,GAClB+3B,EAAMsyF,QAAQ7mH,EAAE2D,OAAQ+yH,GACxBniG,EAAMy3F,gBAGNz3F,EAAM0hG,YAAYpvE,EAAQ/kD,MAElC,GACJ,KACoC,iBAA3BswD,EAAOjS,gBACZiS,EAAO2rC,cAAcn3C,EAASC,GAG9BuL,EAAO6jE,YAAYpvE,EAAQ/kD,OAGnCswD,EAAOkkE,oBACPlkE,EAAOskB,cAAgBtkB,EAAO4d,WAAa5d,EAAOskB,eAAiBtkB,EAAOskB,cAAgBtkB,EAAOskB,aACrG,CACA,MACJ,IAAK,QACD,GAAsB,OAAlB9vB,EAAQv7C,MAAgB,CACxB+mD,EAAOs4D,WACP,KACJ,CAOA,GANKt4D,EAAO5U,OACJ4U,EAAOx0D,sBAAsBuyG,EAAAA,IAC7B/9C,EAAOg3D,kBAAmB,GAE9Bh3D,EAAOm0D,eAENn0D,EAAOg3D,kBAAoBh3D,EAAO+9B,cAAe,CAClD,IAAI5oF,EAAU6qD,EAAO+9B,cAAcvpC,EAAQv7C,OACtC+mD,EAAOmkE,aAAahvH,KACjB6qD,EAAO+9B,eAAiD,MAAhC/9B,EAAO+9B,cAAc3zF,QAClB,iBAA3B41D,EAAOjS,iBAAsCiS,EAAOosD,SAAShiH,OAAS,IACtE41D,EAAOokE,iBAAiB5vE,EAAQv7C,MAAOw7C,EAAQx7C,MAAO,SAGtD+mD,EAAO/mD,MAAQw7C,EAAQx7C,OAG/B+mD,EAAOkkE,mBACX,CACA,MACJ,IAAK,iBACGlkE,EAAO02B,UACP12B,EAAOsgE,kBAAkBtgE,EAAO02B,SAASvhF,SAE7C,MACJ,IAAK,iBACG6qD,EAAO02B,UACP12B,EAAOogE,kBAAkBpgE,EAAO02B,SAASvhF,SAE7C,MACJ,IAAK,iBACI2qB,EAAAA,EAAAA,IAAkBkgC,EAAOyqD,WAAsC,OAAzBzqD,EAAOq9D,eAC9Cr9D,EAAOs9D,mBAEX,MACJ,IAAK,iBACGt9D,EAAO3kD,iBACP2kD,EAAO03D,mBAAqB,CACxBjK,UAAWztD,EAAOytD,UAClBriE,KAAM4U,EAAOosD,SAAUuL,WAAW,GAEtC33D,EAAO43D,WAAa53D,EAAO03D,mBAC3B13D,EAAOg0D,wBAAwBh0D,EAAO3kD,iBAE1C,MACJ,IAAK,iBACD03E,EAAAA,EAAM4J,eAAe38B,EAAOkzB,cAC5BH,EAAAA,EAAM6J,YAAY58B,EAAOizB,aAAcz+B,EAAQs+B,eAAgB9yB,EAAO6zB,YAAa7zB,EAAOj9B,iBACrFjD,EAAAA,EAAAA,IAAkBkgC,EAAOkzB,aAAaE,QAAQ,KAAOpzB,EAAOkzB,aAAaC,UAAUx8B,uBAAuB,yBAAyB,IAAgC,UAA1BqJ,EAAO8yB,gBACjJ9yB,EAAOkzB,aAAaC,UAAUx8B,uBAAuB,yBAAyB,GAAG5N,UAAUzB,IAAI,UAEnG,MACJ,IAAK,kBACI0Y,EAAOkzB,aAAakD,cACrBrD,EAAAA,EAAM2J,eAAeloC,EAAQ+/B,gBAAiBv0B,EAAOizB,aAAcjzB,EAAOkzB,aAAc,KAAMlzB,EAAOj9B,eACrGi9B,EAAO62B,kBAEX,MACJ,QAGQ,IAAI0tC,EAAWvkE,EAAOgsD,cAAc1mF,EAAMkvB,EAASC,GACnD72B,EAAOpM,UAAUi8B,kBAAkB57B,KAAKmuC,EAAQukE,EAAStY,YAAasY,EAASrY,aAI/F,EACIlsD,EAAS7tC,KACJuO,EAAK,EAAGvoB,EAAKnH,OAAOC,KAAKujD,GAAU9zB,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAE9DQ,EADW/oB,EAAGuoB,GAElB,CACJ,EACAn1B,EAAaimB,UAAU2yG,aAAe,SAAUhvH,GAC5C,QAAIgd,KAAKyzE,UAAUzwF,KACfgd,KAAK6yE,aAAa7vF,EAAS,OACpB,EAGf,EACA5J,EAAaimB,UAAU4yG,iBAAmB,SAAU5vE,EAASC,EAASnvB,GAClE,IACIy/D,EADA5iE,EAAQhQ,KAEZA,KAAK4+F,iBAAmB,WACP,SAATzrF,GACAy/D,EAAK5iE,EAAMq3F,iBAAiBhlE,GACvBryB,EAAMgiG,aAAap/B,IACpB5iE,EAAMyhG,WAAWnvE,IAGP,UAATnvB,GACLy/D,EAAK5iE,EAAMs3F,kBAAkBjlE,GACxBryB,EAAMgiG,aAAap/B,IACpB5iE,EAAM0hG,YAAYpvE,IAGR,UAATnvB,IACLy/D,EAAK5iE,EAAM47D,cAAcvpC,GACpBryB,EAAMgiG,aAAap/B,KACpB5iE,EAAMlpB,MAAQw7C,GAG1B,CACJ,EACAlpD,EAAaimB,UAAUyxG,YAAc,WAC7B9wG,KAAKqhE,UACL5qC,EAAAA,EAAAA,IAAS,CAACz2B,KAAK+gE,aAAaC,WAAY,CAAC,gBAGzC7pC,EAAAA,EAAAA,IAAY,CAACn3B,KAAK+gE,aAAaC,WAAY,CAAC,cAEpD,EAEA5nF,EAAaimB,UAAUm6E,cAAgB,SAAUn3C,EAASC,GAC1D,EACAlpD,EAAaimB,UAAUkmE,YAAc,SAAU8sC,EAAUC,IAChD3kG,EAAAA,EAAAA,IAAkB2kG,KACnBA,EAAYA,EAAS77G,QAAQ,OAAQ,KAAMwkD,SAE1CttC,EAAAA,EAAAA,IAAkB0kG,KACnBA,EAAYA,EAAS57G,QAAQ,OAAQ,KAAMwkD,QAE/C2lB,EAAAA,EAAM2E,YAAY8sC,EAAU,CAACryG,KAAK+gE,aAAaC,WAAYsxC,GACvDtyG,KAAKukE,UACL3D,EAAAA,EAAM2E,YAAY8sC,EAAU,CAACryG,KAAKukE,SAASvhF,SAAUsvH,EAE7D,EAOAl5H,EAAaimB,UAAUu8B,cAAgB,WACnC,MAAO,cACX,EAOAxiD,EAAaimB,UAAUoqG,UAAY,SAAUhuH,GAEpCukB,KAAK9mB,UAGN8mB,KAAK87F,SAAoC,aAAzB97F,KAAK47B,iBAAkC57B,KAAKs+F,cAAgBt+F,KAAK8lG,gBAAkB9lG,KAAK25F,uBACxG35F,KAAKgiG,aACLhiG,KAAK25F,sBAAuB,GAE5B35F,KAAK8hG,eAAiB9hG,KAAK3mB,sBAAsBuyG,EAAAA,GAAgB5rF,KAAKylG,WAAWxsE,OAASj5B,KAAKulG,mBAAmBtsE,MAClHj5B,KAAKylG,WAAWxsE,MAAQj5B,KAAKylG,WAAWnK,YACxCt7F,KAAKulG,mBAAqBvlG,KAAKylG,WAC/BzlG,KAAK+9F,iBAAiB/9F,KAAKulG,mBAAmBjK,UAAWt7F,KAAKulG,mBAAmBtsE,KAAM,MAAM,IAE7Fj5B,KAAK2kG,gBACL3kG,KAAK6tG,gBAGT7tG,KAAK2kG,iBAAkB,EACnB3kG,KAAK8hG,gBAAkB9hG,KAAK29F,UAAY39F,KAAKulG,mBAAmBtsE,MAAQj5B,KAAKulG,mBAAmBtsE,KAAK,IACrGj5B,KAAK29F,UAAW,EAChB39F,KAAK+9F,iBAAiB/9F,KAAKulG,mBAAmBjK,UAAWt7F,KAAKulG,mBAAmBtsE,KAAM,MAAM,MAExFtrB,EAAAA,EAAAA,IAAkB3N,KAAKi5B,SAAUzrB,EAAAA,EAAAA,IAAYxN,KAAKi5B,QAAUj5B,KAAKi5B,KAAKrC,UAAUM,SAAS+hE,EAAAA,GAAoBG,SAClHp5F,KAAKi5B,KAAKnoB,iBAAiB,IAAMmoF,EAAAA,GAAoBrmB,IAAI36F,QAAU,KACnE+nB,KAAKgiG,WAAWvmH,GAEpBukB,KAAKuyG,kBAAkB92H,IAC3B,EACArC,EAAaimB,UAAUkzG,kBAAoB,SAAU92H,GACjD,GAAIm3C,EAAAA,GAAQY,UAAYxzB,KAAK6nG,iBAAkB,CAE3C,IAAI2K,EAAUxyG,KACd1f,OAAOmyH,WAAa,WAChBD,EAAQtL,WACZ,EACAlkG,QAAQkB,UAAU,CAAC,EAAG,GAC1B,EACKyJ,EAAAA,EAAAA,IAAkB3N,KAAKi5B,QAAWtrB,EAAAA,EAAAA,IAAkB3N,KAAKi5B,KAAKrhD,SAAS,MACxEooB,KAAKi5B,KAAKrC,UAAUM,SAAS+hE,EAAAA,GAAoBG,SACjDp5F,KAAKkvE,YAAYzzF,EAEzB,EACArC,EAAaimB,UAAUqzG,kBAAoB,WACvC,EAQJt5H,EAAaimB,UAAU6nG,UAAY,SAAUzrH,GAEzC,GAAIukB,KAAKqlG,aAAwC,iBAAzBrlG,KAAK47B,gBAKzB,IAJKjuB,EAAAA,EAAAA,IAAkB3N,KAAK8gE,eACxBF,EAAAA,EAAM5+E,SAASge,KAAKjoB,KAAMioB,KAAK8gE,aAAc9gE,KAAK2gE,eAAgB3gE,KAAKoiE,iBAE3EpiE,KAAKqlG,aAAc,GACd13F,EAAAA,EAAAA,IAAkB3N,KAAKlZ,OAWxBkZ,KAAKumG,qBAX2B,CAChC,IAAIvjH,EAAUgd,KAAK8+F,gBAAgB9+F,KAAKs7F,UAAW,KAAM,aAAct7F,KAAKziB,OAC5EyiB,KAAK0mG,WAAa1mG,KAAK4rE,cAAc5rE,KAAKlZ,QAAU9D,EAChDgd,KAAK0mG,aACL1mG,KAAKwqG,mBAAmBxqG,KAAK0mG,WAAY,MAAM,GAC3C1mG,KAAKkrG,eAAmC,OAAlBlrG,KAAKs4F,UAC3Bt4F,KAAKmrG,mBAGjB,CAKJnrG,KAAKgyE,WAAW,EAAGv2F,GACnB,IAAIo/G,EAAW76F,KAAKwmG,cAChBmM,IAAehlG,EAAAA,EAAAA,IAAkB3N,KAAK0mG,YACtC1mG,KAAK8gE,cAAmD,KAAnC9gE,KAAK8gE,aAAavjF,MAAM09D,SAAkBj7C,KAAK/M,eAAiB+M,KAAK2lG,gBAC1FgN,GAAe3yG,KAAK8gE,aAAavjF,QAAUs9G,EAAS9iH,QACpDioB,KAAK2lG,gBAAiB,EACtB3lG,KAAKmmG,SAAS1qH,GAEtB,EAOArC,EAAaimB,UAAUgoD,QAAU,SAAU5rE,GACvC,GAAKukB,KAAK9mB,UAGN8mB,KAAKinG,gBAAgBrwE,UAAUM,SAASosE,EAAoBC,SAAhE,CAGA,IAAIt7C,GAAY,EACZjoD,KAAKilG,cAAgBryE,EAAAA,GAAQY,WAC7BxzB,KAAK+gE,aAAaC,UAAU5N,SAAW,EACvCpzD,KAAK+gE,aAAaC,UAAUvvD,QAC5BzR,KAAKilG,cAAe,EACpBh9C,GAAY,GAEXA,GACDjoD,KAAKinG,gBAAgBx1F,SAEzBglB,EAAAA,EAAAA,IAAS,CAACz2B,KAAK+gE,aAAaC,WAAY,CAACsiC,EAAoBE,aAC7DxjG,KAAKgoG,QAAQvsH,GACe,SAAxBukB,KAAK2gE,gBACLC,EAAAA,EAAMC,eAAe7gE,KAAK8gE,aAAc9gE,KAAK+gE,aAAaC,UAd9D,CAgBJ,EAMA5nF,EAAaimB,UAAU8mE,SAAW,SAAU1qF,GAEnCukB,KAAK9mB,UAGV8mB,KAAK+kG,SAAU,EACf/kG,KAAKknG,UAAUzrH,GACXukB,KAAKinG,iBACLjnG,KAAKinG,gBAAgBrkH,QAEzBu0C,EAAAA,EAAAA,IAAY,CAACn3B,KAAK+gE,aAAaC,WAAY,CAACsiC,EAAoBE,aACpC,SAAxBxjG,KAAK2gE,gBAAyD,KAA5B3gE,KAAK8gE,aAAavjF,OACpDqjF,EAAAA,EAAMC,eAAe7gE,KAAK8gE,aAAc9gE,KAAK+gE,aAAaC,WAElE,EAOA5nF,EAAaimB,UAAUqoB,QAAU,WAY7B,GAXA1nB,KAAK29F,UAAW,GAChB5E,EAAAA,EAAAA,GAA6B/4F,KAAKhd,QAAQ4B,IAEtCob,KAAK87F,SACL97F,KAAKgtC,gBAEThtC,KAAKknG,YACLlnG,KAAKkqG,cACDlqG,KAAKi5B,MACLj5B,KAAKwvE,oBAELxvE,KAAKhd,SAAYgd,KAAKhd,QAAQ4zC,UAAUM,SAAS,KAAOl3B,KAAK47B,iBAAjE,CAGA,GAAI57B,KAAK8gE,aAAc,CAInB,IAHA,IAAI8xC,EAAY,CAAC,WAAY,gBAAiB,cAAe,kBACzD,gBAAiB,eAAgB,gBAAiB,iBAClD,aAAc,oBAAqB,YAAa,mBAAoB,cAC/DztG,EAAI,EAAGA,EAAIytG,EAAU36H,OAAQktB,IAClCnF,KAAK8gE,aAAa5/B,gBAAgB0xE,EAAUztG,IAEhDnF,KAAK8gE,aAAaxqC,aAAa,WAAYt2B,KAAKozD,UAChDpzD,KAAK8gE,aAAalqC,UAAUjB,OAAO,WACnCirC,EAAAA,EAAM5+E,SAAS,GAAIge,KAAK8gE,aAAc9gE,KAAK2gE,eAAgB3gE,KAAKoiE,gBACpE,CACApiE,KAAKhd,QAAQu0C,MAAMuiB,QAAU,QACzB95C,KAAK+gE,aAAaC,UAAU/nB,cAAc9iB,UAAYn2B,KAAKonG,kBAI3DpnG,KAAK+gE,aAAaC,UAAU/nB,cAAcjhB,aAAah4B,KAAKhd,QAASgd,KAAK+gE,aAAaC,YAHvFzoC,EAAAA,EAAAA,IAAOv4B,KAAK+gE,aAAaC,WAM7BhhE,KAAKokG,cAAgB,KACrBpkG,KAAK+gE,aAAe,KACpB/gE,KAAKg3D,eAAiB,KACtBh3D,KAAKs7F,UAAY,KACjBt7F,KAAKi5B,KAAO,KACZj5B,KAAKukE,SAAW,KAChBvkE,KAAKqiG,UAAY,KACjBriG,KAAK0mG,WAAa,KAClB1mG,KAAK4rE,cAAgB,KACrB5rE,KAAK5U,KAAO,KACZ4U,KAAK+gE,aAAe,KACpB/gE,KAAK42D,OAAS,KACd52D,KAAKywB,OAAS,KACdzwB,KAAKurG,mBAAqB,KAC1BvrG,KAAKukG,iBAAmB,KACxBvkG,KAAKylG,WAAWnK,UAAY,KACxBt7F,KAAK8gE,gBAAiBnzD,EAAAA,EAAAA,IAAkB3N,KAAK8gE,aAAaowC,YAC1DlxG,KAAK8gE,aAAaowC,SAAW,MAE7BlxG,KAAKyrD,YACLzrD,KAAK8gE,aAAe,MAExBr1D,EAAOpM,UAAUqoB,QAAQhoB,KAAKM,KA1C9B,CA2CJ,EAOA5mB,EAAaimB,UAAUqiG,SAAW,WAO9B,OANK1hG,KAAKi5B,OACFj5B,KAAK3mB,sBAAsBuyG,EAAAA,IAC3B5rF,KAAK6kG,kBAAmB,GAE5B7kG,KAAKgiG,cAEFhiG,KAAKs7F,UAAY7vF,EAAOpM,UAAUqiG,SAAShiG,KAAKM,MAAQ,EACnE,EAOA5mB,EAAaimB,UAAU+jG,eAAiB,SAAU7lH,GAC9C,OAAOkuB,EAAOpM,UAAU+jG,eAAe1jG,KAAKM,KAAMziB,EACtD,EAOAnE,EAAaimB,UAAU/D,MAAQ,WAC3B0E,KAAKziB,MAAQ,IACjB,EACAoiD,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACV9kD,EAAaimB,UAAW,gBAAY,GACvCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,SACV9kD,EAAaimB,UAAW,aAAS,GACpCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV9kD,EAAaimB,UAAW,eAAW,GACtCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV9kD,EAAaimB,UAAW,yBAAqB,GAChDsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,UACV9kD,EAAaimB,UAAW,mBAAe,GAC1CsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,SACV9kD,EAAaimB,UAAW,kBAAc,GACzCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACV9kD,EAAaimB,UAAW,mBAAe,GAC1CsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACV9kD,EAAaimB,UAAW,4BAAwB,GACnDsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,CAAC,IACX9kD,EAAaimB,UAAW,sBAAkB,GAC7CsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACV9kD,EAAaimB,UAAW,aAAS,GACpCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACV9kD,EAAaimB,UAAW,qBAAiB,GAC5CsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACV9kD,EAAaimB,UAAW,sBAAkB,GAC7CsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACV9kD,EAAaimB,UAAW,sBAAkB,GAC7CsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV9kD,EAAaimB,UAAW,sBAAkB,GAC7CsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV9kD,EAAaimB,UAAW,gBAAY,GACvCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACV9kD,EAAaimB,UAAW,YAAQ,GACnCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACV9kD,EAAaimB,UAAW,aAAS,GACpCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACV9kD,EAAaimB,UAAW,aAAS,GACpCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,UACV9kD,EAAaimB,UAAW,sBAAkB,GAC7CsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV9kD,EAAaimB,UAAW,uBAAmB,GAC9CsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDp2B,EAAaimB,UAAW,iBAAa,GACxCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDp2B,EAAaimB,UAAW,cAAU,GACrCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDp2B,EAAaimB,UAAW,kBAAc,GACzCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDp2B,EAAaimB,UAAW,YAAQ,GACnCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDp2B,EAAaimB,UAAW,aAAS,GACpCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDp2B,EAAaimB,UAAW,YAAQ,GACnCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDp2B,EAAaimB,UAAW,aAAS,GACpCjmB,EAAeumD,EAAW,CACtBhB,EAAAA,IACDvlD,EAEP,CAzzFkC,CAyzFhCmgH,EAAAA,2JCx3FEsZ,EAAsB,WAQtB,SAASA,EAAKxiG,EAAQyiG,GAClB9yG,KAAK+yG,UAAY,CAAEC,WAAW,EAAOC,SAAU,KAAM31H,MAAO,IAC5D0iB,KAAKkzG,oBAAsB,CAAEF,WAAW,EAAOC,SAAU,MACzDjzG,KAAKqQ,OAASA,EACdrQ,KAAK8yG,eAAiBA,EACtB9yG,KAAKmzG,kBACDnzG,KAAKqQ,OAAOuqB,aAAwC,eAAzB56B,KAAK47B,kBAGpC57B,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAkBrzB,KAAKozG,QAASpzG,MAC/CA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAA2BrzB,KAAKqzG,YAAarzG,MAC5DA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAoBrzB,KAAKszG,WAAYtzG,MACpDA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAA2BrzB,KAAKmzG,gBAAiBnzG,MAChEA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAgBrzB,KAAK0nB,QAAS1nB,MAC7CA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAmBrzB,KAAKuzG,YAAavzG,MACpDA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAwBrzB,KAAK0pF,QAAS1pF,MACrDA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAgBrzB,KAAKwzG,oBAAqBxzG,MACzDA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAwBrzB,KAAKwzG,oBAAqBxzG,MACrE,CA0jBA,OAzjBA6yG,EAAKxzG,UAAUg0G,YAAc,SAAU53H,GACnCukB,KAAKw8E,YAAYnjG,WAAWqjG,KAAK71D,OAAOprC,EAAEg4H,QAAS,EAAGzzG,KAAKw8E,YAAYnjG,WAAWqjG,KAAK71D,OAAOprC,EAAEi4H,UAAW,GAAG,GAClH,EACAb,EAAKxzG,UAAUu8B,cAAgB,WAC3B,MAAO,MACX,EAMAi3E,EAAKxzG,UAAU8zG,gBAAkB,WAC7B,IAAIQ,EAAO3zG,KAAKqQ,OAChBrQ,KAAKw8E,YAAcm3B,EAAKt6H,sBAAsBuyG,EAAAA,EAAc+nB,EAAKt6H,YAC5Ds0B,EAAAA,EAAAA,IAAkBgmG,EAAKt6H,YAAc,IAAIuyG,EAAAA,EAAgB,IAAIA,EAAAA,EAAY+nB,EAAKt6H,aAC/Es6H,EAAKloD,WAAekoD,EAAKv3B,iBAAiB4B,EAAAA,GAI1Ch+E,KAAK4zG,wBAAyB,EAC9BD,EAAKv3B,MAAQu3B,EAAKv3B,iBAAiB4B,EAAAA,EAAQ21B,EAAKv3B,MAAQ,IAAI4B,EAAAA,GAJ5D21B,EAAKh5E,cAAc,CAAEyhD,MAAO,IAAI4B,EAAAA,IAAW,EAMnD,EASA60B,EAAKxzG,UAAUw0G,cAAgB,SAAUC,EAAUC,GAC/C,IACI33B,EADOp8E,KAAKqQ,OACC85E,WAAWj7E,QAC5B,GAAoC,kBAAhClP,KAAKqQ,OAAO2jG,gBACZ53B,EAAM1jD,OAAO14B,KAAKqQ,OAAO4jG,aAAa91H,QAAO,SAAUihF,GAAU,SAAiC,IAAxBA,EAAO80C,eAA4C,IAAnB90C,EAAOhxE,cAAsClT,IAAjBkkF,EAAOx9E,MAAsB,IAAG9B,KAAI,SAAUs/E,GAAU,OAAOA,EAAOx9E,KAAO,UAElN,GAAoC,WAAhCoe,KAAKqQ,OAAO2jG,gBAA8B,CAG/C,IAFA,IAAIG,EAAoB,GACpBC,EAAUp0G,KAAKqQ,OAAO+jG,QACjBjvG,EAAI,EAAGA,EAAIivG,EAAQn8H,OAAQktB,IAChCgvG,EAAkB10H,KAAK20H,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKwG,OAE/Dw6F,EAAM1jD,OAAOy7E,EACjB,CAcA,OAbAn0G,KAAKwsG,YAAYpwB,GACjBp8E,KAAKq0G,YAAYj4B,GACjBp8E,KAAKs0G,eAAel4B,GACpBp8E,KAAKu0G,UAAUn4B,IACXo4B,EAAAA,EAAAA,IAAgBx0G,KAAKqQ,QACrBrQ,KAAKy0G,sBAAsBr4B,GAG3Bp8E,KAAK00G,UAAUt4B,EAAO03B,KAEtBnmG,EAAAA,EAAAA,IAAkBomG,IAAwBA,GAC1C/zG,KAAKsjF,WAAWlH,GAEbA,CACX,EAMAy2B,EAAKxzG,UAAUi1G,eAAiB,SAAUl4B,GAEtC,IADA,IAAIjiG,EAAO6lB,KAAKqQ,OAAO2rE,WACd72E,EAAI,EAAGA,EAAIhrB,EAAKlC,OAAQktB,IAE7B,IADA,IAAI+2D,EAAM/hF,EAAK+E,SAASimB,EAAE/pB,WAAY,KAC7Bo7B,EAAI,EAAGA,EAAI0lD,EAAIk4C,QAAQn8H,OAAQu+B,IAGpC,IAFA,IAAIm+F,EAAOz4C,EAAIk4C,QAAQl1H,SAASs3B,EAAEp7B,WAAY,KAC1Cw5H,EAAQD,EAAKr6H,gBAAgBm0B,MAAQkmG,EAAKr6H,KAAO,CAACq6H,EAAKr6H,MAClD8uD,EAAI,EAAGA,EAAIwrE,EAAM38H,OAAQmxD,IAC9BgzC,EAAMgH,UAAUwxB,EAAM11H,SAASkqD,EAAEhuD,WAAY,KAAKiD,cAAes2H,EAAK/yH,OAIlF,OAAOw6F,CACX,EACAy2B,EAAKxzG,UAAUo1G,sBAAwB,SAAUr4B,GAE7C,GAAIA,EAAMW,QAAQ9kG,OACd,IAAK,IAAIktB,EAAI,EAAGA,EAAIi3E,EAAMW,QAAQ9kG,OAAQktB,IACwB,WAA1Di3E,EAAMW,QAAQ79F,SAASimB,EAAE/pB,WAAY,KAAe,IACpDghG,EAAMW,QAAQl2D,OAAO1hB,EAAG,GAIpC,OAAOi3E,CACX,EACAy2B,EAAKxzG,UAAUq1G,UAAY,SAAUt4B,EAAO03B,GACxC,IAAIH,EAAO3zG,KAAKqQ,OAEZpiB,EAAO,CAAEmuF,MAAOA,EAAO03B,UAAU,GAErC,GADAH,EAAK5sF,OAAOsM,EAAAA,IAA4BplC,GACpCA,EAAK6lH,SACL,OAAO13B,EAEX,IAAKu3B,EAAKkB,aAAelB,EAAKmB,sBAAwBnB,EAAKoB,2BAAyC,IAAbjB,EAAmB,CAQtG,GAPAH,EAAKqB,aAAaC,YAAcpzG,KAAK8e,IAAI,EAAGgzF,EAAKqB,aAAaC,aAC1DtB,EAAKqB,aAAaE,WAAa,IAC/BvB,EAAKqB,aAAaE,UAAY,GAE9BvB,EAAKqB,aAAaz1B,UAAY,IAC9Bo0B,EAAKqB,aAAaz1B,SAAW,IAE7BnD,EAAMW,QAAQ9kG,OACd,IAAK,IAAIktB,EAAI,EAAGA,EAAIi3E,EAAMW,QAAQ9kG,OAAQktB,IACwB,WAA1Di3E,EAAMW,QAAQ79F,SAASimB,EAAE/pB,WAAY,KAAe,IACpDghG,EAAMW,QAAQl2D,OAAO1hB,EAAG,KAI/BwI,EAAAA,EAAAA,IAAkBgmG,EAAKwB,uBAAyBxB,EAAKoB,wBACtD/0G,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAA0B+oD,GAG7CA,EAAMK,KAAKk3B,EAAKqB,aAAaC,cAAatB,EAAKkB,aAAelB,EAAKyB,aAC9DzB,EAAKyB,YAAYC,SAASC,YAAc3B,EAAK4B,iBAC5Cv1G,KAAKw8E,YAAYnjG,WAAW0yG,SAAa/rF,KAAKw8E,YAAYuO,mBAAmBlD,EAAAA,GACxE8rB,EAAKqB,aAAaz1B,SAAzB,KAEZ,CACA,OAAOnD,CACX,EACAy2B,EAAKxzG,UAAUikF,WAAa,SAAUlH,GAClC,IAAIu3B,EAAO3zG,KAAKqQ,OAChB,GAAIsjG,EAAK6B,eAAiB7B,EAAK8B,cAAcrB,QAAQn8H,OAAQ,CACrD+nB,KAAKqQ,OAAOolG,cAAcC,mBAC1Bt5B,EAAMQ,SAASn9F,KAAK,CAAET,IAAK,aAAczB,MAAOyiB,KAAKqQ,OAAOolG,cAAcC,oBAG9E,IADA,IAAItB,EAAUT,EAAK8B,cAAcrB,QACxBjvG,EAAI,EAAG8L,EAAMmjG,EAAQn8H,OAAQktB,EAAI8L,EAAK9L,IAAK,CAChD,IAAIi6D,EAASp/D,KAAK21G,iBAAiBvB,EAAQl1H,SAASimB,EAAE/pB,WAAY,MAC7DgkF,GACDp/D,KAAKqQ,OAAOulG,IAAI,iBAAkB,CAAE9+C,WAAY,QAAS++C,WAAYzB,EAAQl1H,SAASimB,EAAE/pB,WAAY,OAExG,IAAI06H,EAAW12C,EAAO22C,oBAClBv8H,EAAS4lF,EAAO5lF,OAChBs8H,EACA15B,EAAM9+F,MAAM82H,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAM4kB,KAAKg2G,kBAAkBh3G,KAAKgB,MAAOxmB,GAGpF4iG,EAAM9+F,MAAM82H,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAM,KAEzD,CACJ,CACA,OAAOghG,CACX,EACAy2B,EAAKxzG,UAAUk1G,UAAY,SAAUn4B,GACjC,IAAIu3B,EAAO3zG,KAAKqQ,OAChB,IAAKsjG,EAAK1qH,cAAgB0qH,EAAK6B,gBAAkB7B,EAAKsC,aAAa7B,QAAQn8H,OAAQ,CAG/E,IAFA,IAAIm8H,EAAUT,EAAKsC,aAAa7B,QAC5B8B,EAAU,GACL/wG,EAAIivG,EAAQn8H,OAAS,EAAGktB,GAAK,EAAGA,IAAK,CAE1C,KADIgxG,EAAMn2G,KAAK21G,iBAAiBvB,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKwG,QAMhE,OADAoe,KAAKqQ,OAAOulG,IAAI,iBAAkB,CAAE9+C,WAAY,OAAQ++C,WAAYzB,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKwG,QACjGw6F,EAJP+5B,EAAIC,iBAAiBhC,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKqsF,WAM7D,IAAIhoE,EAAK20G,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKqsF,UACzC0uC,EAAIE,eACJr2G,KAAKqQ,OAAOulG,IAAI,sBAChBn2G,EAAMO,KAAKs2G,WAA0ClC,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKqsF,UAAjE0uC,EAAIE,aAAar3G,KAAKm3G,KAEqC,IAAnFxC,EAAK8B,cAAcrB,QAAQ99G,QAAQ89G,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKwG,OACnEu0H,EAAII,mBAAqBJ,EAAIE,aAC7Bj6B,EAAMsU,iBAAiBylB,EAAIv0H,MAAO6d,OAAIvkB,EAAWk5H,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKqsF,UAAUppF,eAG/F+9F,EAAMR,OAAOu6B,EAAIv0H,MAAO6d,GAI5By2G,EAAQz2H,KAAK,CAAEgoF,UAAWhoE,EAAI7d,MAAOu0H,EAAIv0H,OAEjD,CACSujB,EAAI,EAAb,IAAK,IAAW8L,EAAMilG,EAAQj+H,OAAQktB,EAAI8L,EAAK9L,IAC3C,GAA6D,kBAAlD+wG,EAAQh3H,SAASimB,EAAE/pB,WAAY,KAAKqsF,UAC3C2U,EAAMR,OAAOs6B,EAAQh3H,SAASimB,EAAE/pB,WAAY,KAAKwG,MAAOs0H,EAAQh3H,SAASimB,EAAE/pB,WAAY,KAAKqsF,eAE3F,CACD,IAAI0uC,EAAMn2G,KAAK21G,iBAAiBO,EAAQh3H,SAASimB,EAAE/pB,WAAY,KAAKwG,OACpEw6F,EAAMsU,iBAAiBwlB,EAAQh3H,SAASimB,EAAE/pB,WAAY,KAAKwG,MAAOs0H,EAAQh3H,SAASimB,EAAE/pB,WAAY,KAAKqsF,eAAWvsF,EAAWi7H,EAAIK,mBAAmBn4H,cACvJ,CAER,CACA,OAAO+9F,CACX,EACAy2B,EAAKxzG,UAAUg1G,YAAc,SAAUj4B,EAAOq6B,EAASC,GACnD,IAAIC,EAAY32G,KAAKqQ,OAAOumG,eACxB/zH,EAAS8zH,EAAU9zH,OAAO5K,OAAS0+H,EAAU9zH,OAASmd,KAAK62G,4BAC3DriB,EAAgB,GAChBsiB,GAAuB,EAC3B,GAAI92G,KAAKqQ,OAAOumG,eAAe53H,IAAI/G,OAAQ,CACvC6+H,EAAuB92G,KAAKqQ,OAAO0mG,uBAAuBpvG,MAAK,SAAUwuG,GAAO,OAAOtzH,EAAOyT,QAAQ6/G,EAAIv0H,QAAU,CAAG,IACvH,IAAImpG,EAAW2rB,EAA0CD,EAAQp9H,WAAW0xG,QAA9C/qF,KAAKw8E,YAAYuO,QAC/C,GAAI+rB,GAAyB/rB,EAAQnvD,eACL,mBAA5BmvD,EAAQnvD,gBAAuC,CAC/C/4C,EAAS6zH,EAAe,CAACD,EAAQO,iBAAmBn0H,EACpD,IAAK,IAAIsiB,EAAI,EAAGA,EAAItiB,EAAO5K,OAAQktB,IAAK,CACpC,IAAIi6D,EAASs3C,EAAeD,EAAUz2G,KAAK21G,iBAAiB9yH,EAAO3D,SAASimB,EAAE/pB,WAAY,MACtFgkF,EAAOm3C,oBAAsBG,EAC7BliB,EAAgBx0F,KAAKi3G,mBAAmB73C,EAAQo1B,GAGhDA,EAAc/0G,KAAK,IAAIwjG,EAAAA,EAAUpgG,EAAO3D,SAASimB,EAAE/pB,WAAY,KAAMu7H,EAAU/1B,SAAU+1B,EAAU33H,IAAK23H,EAAU33B,WAAY23B,EAAU13B,cAEhJ,CACA,IAAIi4B,EAAWj0B,EAAAA,EAAUC,GAAGsR,GAC5B0iB,EAASl4H,IAAM23H,EAAU33H,IACzBo9F,EAAML,MAAMm7B,EAChB,MAEI96B,EAAMp7E,OAAO21G,EAAU33H,IAAK6D,EAAQ8zH,EAAU/1B,SAAU+1B,EAAU33B,WAAY23B,EAAU13B,aAEhG,CACA,OAAO7C,CACX,EACAy2B,EAAKxzG,UAAUmtG,YAAc,SAAUpwB,EAAOhd,EAAQ+3C,GAClD,IAIIC,EAJAzD,EAAO3zG,KAAKqQ,OACZmkF,EAAgB,GAChB6iB,EAAe,GACfC,EAAgBt3G,KAAKqQ,OAAO0mG,uBAEhC,GAAIpD,EAAKzqH,gBAAkByqH,EAAKxqH,eAAeirH,QAAQn8H,OAAQ,CAG3D,IAFA,IAAIm8H,EAAUh1C,GAAkBu0C,EAAKxqH,eAAeirH,QAChDmD,EAAU,CAAC,EACNhpG,EAAK,EAAGvoB,EAAK2tH,EAAKM,aAAc1lG,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAE3DgpG,GADIpB,EAAMnwH,EAAGuoB,IACD3sB,OAASu0H,EAAIh4H,OAAO7D,KAAO67H,EAAIh4H,OAAO7D,KAAOq5H,EAAKxqH,eAAe7O,IACjF,CAGA,IAFA,IAAIk9H,EAAc,GACdC,EAAkB,GACb1gF,EAAK,EAAG2gF,EAAYtD,EAASr9E,EAAK2gF,EAAUz/H,OAAQ8+C,IAAM,CAC/D,IACI4gF,GADAxB,EAAMuB,EAAU3gF,IACC2/E,aAAe/C,EAAKiE,eAAezB,EAAIjqG,KAAOynG,EAAKgC,iBAAiBQ,EAAIv0H,QACzF+rB,EAAAA,EAAAA,IAAkBwoG,EAAI77H,OAASq9H,IAAmC,SAApBA,EAAWr9H,MAAuC,aAApBq9H,EAAWr9H,MAA2C,aAApBq9H,EAAWr9H,QACzH67H,EAAI77H,KAAO67H,EAAIO,aAAe/C,EAAKiE,eAAezB,EAAIjqG,KAAK5xB,KAAOq5H,EAAKgC,iBAAiBQ,EAAIv0H,OAAOtH,MAEnG67H,EAAIO,aACJc,EAAY/3H,KAAK02H,GAGjBsB,EAAgBh4H,KAAK02H,EAE7B,CACA,GAAIsB,EAAgBx/H,OAAQ,CACxB,IAAK,IAAIktB,EAAI,EAAG8L,EAAMwmG,EAAgBx/H,OAAQktB,EAAI8L,EAAK9L,IACnDsyG,EAAgBv4H,SAASimB,EAAE/pB,WAAY,KAAK8wB,IAAMurG,EAAgBv4H,SAASimB,EAAE/pB,WAAY,KAAK8wB,KAC1FlM,KAAKqQ,OAAOwnG,6BAA6BJ,EAAgBv4H,SAASimB,EAAE/pB,WAAY,KAAKwG,OAAOsqB,IAGpG,IADA,IAAI4rG,EAAiBC,EAAAA,EAAmBtjB,aAAagjB,GAC5CpU,EAAK,EAAG2U,EAAKn5H,OAAOC,KAAKg5H,GAAiBzU,EAAK2U,EAAG//H,OAAQorH,IAAM,CACrE,IAAIlwF,EAAO6kG,EAAG3U,GACd7O,EAAc/0G,KAAKq4H,EAAe,GAAK3kG,GAC3C,CACJ,CACA,GAAIqkG,EAAYv/H,OACZ,IAAK,IAAIggI,EAAK,EAAGC,EAAgBV,EAAaS,EAAKC,EAAcjgI,OAAQggI,IAAM,CAC3E,IAAI9B,KAAM+B,EAAcD,IACpB/rG,IAAMiqG,EAAIjqG,KAAOlM,KAAKqQ,OAAOwnG,6BAA6B1B,EAAIv0H,OAAOsqB,IACzE,IAAIisG,EAAWn4G,KAAKqQ,OAAO+nG,2BAA2BjC,EAAIjqG,KAI1D,GAHKisG,GACDn4G,KAAKqQ,OAAOulG,IAAI,iBAAkB,CAAE9+C,WAAY,SAAU++C,WAAYM,EAAIv0H,QAE1Eu2H,EAAS5B,oBAAqB8B,EAAAA,EAAAA,IAA2BlC,EAAIv0H,MAAO01H,KAAmBH,EACvFE,EAAa53H,KAAK02H,GACbgC,EAASG,WAAWrgI,SACrBm/H,GAAkB,GAEtB5iB,EAAgBx0F,KAAKi3G,mBAAmBkB,EAAU3jB,OAGlD,CAAIsjB,EAAiBC,EAAAA,EAAmBtjB,aAAa2f,GACrD,IADA,IACSmE,EAAK,EAAGC,EAAK35H,OAAOC,KAAKg5H,GAAiBS,EAAKC,EAAGvgI,OAAQsgI,IAAM,CACjEplG,EAAOqlG,EAAGD,GACd/jB,EAAc/0G,KAAKq4H,EAAe,GAAK3kG,GAC3C,CAJ6D,CAMrE,CAEAqhF,EAAcv8G,SAAWm/H,EACzBh7B,EAAML,MAAMkH,EAAAA,EAAUkK,IAAIqH,IAG1Bx0F,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAsB,CAAC,EAElD,CACA,OAAO+oD,CACX,EACAy2B,EAAKxzG,UAAU43G,mBAAqB,SAAUd,EAAK3hB,GAC/C,IAAIikB,EAAa,CAAC,EAOlB,OANItC,IACAn2G,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAsB,CAAE8wD,UAAWs0B,EAAYr5C,OAAQ+2C,IACtEsC,EAAWt0B,UAAUc,WAAWhtG,QAChCu8G,EAAc/0G,KAAKg5H,EAAWt0B,YAG/BqQ,CACX,EAaAqe,EAAKxzG,UAAUqqF,QAAU,SAAUz7F,EAAMmuF,GACrC,IAAIpsE,EAAQhQ,UACC,IAAT/R,IAAmBA,EAAO,CAAE0tF,YAAa,KAC7C,IAAI38F,EAAMghB,KAAK6nC,OAAO55C,EAAKyqH,gBACvB75H,OAAOC,KAAKmP,EAAKyqH,gBAAgBzgI,OACjCgW,EAAKyqH,eAAiB14G,KAAKqQ,OAAOsoG,2BAEtC,GADA34G,KAAKqQ,OAAOulG,IAAI,6BAA8B,CAAE7C,UAAW/yG,KAAKqQ,SAC5DrQ,KAAKqQ,OAAOh3B,YAAc,WAAY2mB,KAAKqQ,OAAOh3B,WAElD,OADU2mB,KAAK44G,aAAa3qH,EAAMmuF,EAAOp9F,GAC9BkI,QAGX,IAAI2xH,OAAO,EACX,OAAQ5qH,EAAK0tF,aACT,IAAK,SAID,GAHAS,EAAQA,GAAgBp8E,KAAK6zG,gBAGjB,IADFh1H,OAAOC,KAAKmP,EAAKpI,MAAM5N,OAE7B4gI,EAAO74G,KAAKw8E,YAAY7mD,OAAO32C,EAAKiP,EAAKpI,KAAK,GAAIu2F,EAAMgF,UAAWhF,OAElE,CACD,IAAIiC,EAAU,CACVG,aAAc,GACdD,eAAgB,GAChBG,eAAgB,IAEpBL,EAAQE,eAAiBtwF,EAAKpI,KAC9BgzH,EAAO74G,KAAKw8E,YAAY/gD,YAAY4iD,EAASr/F,EAAKo9F,EAAMgF,UAAWhF,EAAM4U,gBAC7E,CACA,MACJ,IAAK,OACD5U,EAAQA,GAAgBp8E,KAAK6zG,gBAC7B5lH,EAAKnH,OAAQ6mB,EAAAA,EAAAA,IAAkB1f,EAAKnH,OAAS,EAAImH,EAAKnH,MACtD+xH,EAAO74G,KAAKw8E,YAAYiC,OAAOxwF,EAAKpI,KAAMu2F,EAAMgF,UAAWhF,EAAOnuF,EAAKnH,OAM/E,OAFAmH,EAAiB,QAAI4qH,GAEjBA,GAASpqG,MAAMC,QAAQmqG,IAAUA,EAAKppG,eAAe,kBAM9CzP,KAAKy+E,OAAOrC,EAAOnuF,GALnB4qH,EAAK1xH,MAAK,WACb,OAAO6oB,EAAMyuE,OAAOrC,EAAOnuF,EAC/B,GAMZ,EACA4kH,EAAKxzG,UAAUo/E,OAAS,SAAUrC,EAAOnuF,GAIrC,MAHyB,SAArBA,EAAK0tF,aACL37E,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAoBplC,GAEpC+R,KAAKusF,aAAanQ,EAC7B,EACAy2B,EAAKxzG,UAAUktF,aAAe,SAAUnQ,GACpC,IAAIpsE,EAAQhQ,KACZ,GAAIA,KAAKw8E,YAAY5qE,MAAO,CACxB,IAAIknG,EAAa,IAAIhrB,EAAAA,EASrB,OARY9tF,KAAKw8E,YAAY5qE,MACvBzqB,MAAK,WACP6oB,EAAMwsE,YAAY+P,aAAanQ,GAAOj1F,MAAK,SAAU/H,GACjD05H,EAAWp7G,QAAQte,EACvB,GACJ,IAAGiI,OAAM,SAAU5L,GACfq9H,EAAW19G,OAAO3f,EACtB,IACOq9H,EAAW5xH,OACtB,CAEI,OAAO8Y,KAAKw8E,YAAY+P,aAAanQ,EAE7C,EACAy2B,EAAKxzG,UAAU22G,kBAAoB,SAAUz4H,EAAOqE,GAChD,IAAIkxH,EAAiB9yG,KAAK8yG,eACtB1zC,EAASp/D,KAAK21G,iBAAiB/zH,GAC/B4c,EAAOjhB,EASX,OARK6hF,EAAO9kF,OACR8kF,EAAO9kF,KAAOkkB,EAAKic,OAAUjc,EAAKoc,WAAa,GAAKpc,EAAK+lB,aAAe,GACpE/lB,EAAKgxD,aAAe,GAAKhxD,EAAKixD,kBAAoB,EAAI,WAAa,cAAkBlyE,IAEzFowB,EAAAA,EAAAA,IAAkByxD,EAAO25C,kBACzBC,EAAAA,EAAAA,IAAalG,EAAgB1zC,GAEjB65C,EAAAA,EAAe55G,UAAU65G,OAAO37H,EAAO6hF,EAAO25C,eAElE,EACAlG,EAAKxzG,UAAUk0G,YAAc,SAAUtlH,GACnC,IAAImuF,EAAQp8E,KAAK6zG,gBACb3sH,EAAU,KACViyH,EAAK,UACLn6H,EAAMghB,KAAK6nC,OAAO55C,EAAKyqH,gBACvB75H,OAAOC,KAAKmP,EAAKyqH,gBAAgBzgI,OAASgW,EAAKyqH,eAC/C14G,KAAKqQ,OAAOsoG,2BAIhB,GAHI34G,KAAKqQ,OAAOh3B,YAAc,WAAY2mB,KAAKqQ,OAAOh3B,YAClD2mB,KAAK44G,aAAa3qH,EAAMmuF,EAAOp9F,GAG1B,SADDiP,EAAK0tF,YAELz0F,EAAU8Y,KAAKw8E,YAAYvqB,OAAOjzE,EAAKiP,EAAKpI,KAAMu2F,EAAMgF,UAAWhF,EAAOnuF,EAAKmrH,cAGvFnrH,EAAK,GAAKkrH,GAAMjyH,GAAoB+G,EAAK,GAAKkrH,GAC9Cn5G,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAmBplC,EAC1C,EASA4kH,EAAKxzG,UAAUo8B,YAAc,SAAU4iD,EAASr/F,EAAKmjG,EAAU/F,GAG3D,QAFc,IAAVA,IAAoBA,EAAQp8E,KAAK6zG,iBACrCz3B,EAAM4U,gBACF,WAAYhxF,KAAKqQ,OAAOh3B,WAAY,CACpC,IAAIggI,EAAO,IAAIvrB,EAAAA,EACX7/F,EAAO,CACP0tF,YAAa,YAAa0C,QAASA,EAASr/F,IAAKA,EAAKo9F,MAAOA,EAC7Dk9B,QAASD,EAAK37G,SAIlB,OAFAsC,KAAK9Z,SAAS,CAAE8sH,WAAW,EAAMC,SAAUoG,EAAK37G,UAChDsC,KAAKqQ,OAAOylB,QAAQzC,EAAAA,IAA0BplC,GACvCorH,EAAKnyH,OAChB,CAGI,OADc8Y,KAAKw8E,YAAY/gD,YAAY4iD,EAASr/F,EAAKo9F,EAAMgF,UAAWhF,EAAO+F,EAGzF,EACA0wB,EAAKxzG,UAAUwoC,OAAS,SAAU/oD,GAC9B,GAAIA,GAAQA,EAAK7G,OACb,OAAO6G,EAAK,EAGpB,EAKA+zH,EAAKxzG,UAAUi3G,SAAW,WACtB,OAA+C,IAAxCt2G,KAAKw8E,YAAYnjG,WAAW0yG,cAAwD7wG,IAApC8kB,KAAKw8E,YAAYnjG,WAAWmN,KAC3C,KAApCwZ,KAAKw8E,YAAYnjG,WAAWmN,GACpC,EACAqsH,EAAKxzG,UAAU+zG,QAAU,SAAU33H,GAC/B,IAAK,IAAI0pB,EAAI1pB,EAAEqiG,QAAQ7lG,OAAQktB,EAAI,EAAGA,IAClCnF,KAAKw8E,YAAYnjG,WAAWqjG,KAAK71D,OAAOprC,EAAEg4H,QAAS,EAAGh4H,EAAEqiG,QAAQ34E,EAAI,GAE5E,EACA0tG,EAAKxzG,UAAUi0G,WAAa,SAAU73H,GAClC,IAAIihG,EAAO18E,KAAKw8E,YAAYnjG,WAAWqjG,KACvC18E,KAAKw8E,YAAYnjG,WAAWqjG,KAAOA,EAAKv+F,QAAO,SAAUZ,GAAS,OAAqC,IAA9B9B,EAAEqiG,QAAQxnF,QAAQ/Y,EAAe,GAC9G,EACAs1H,EAAKxzG,UAAUs2G,iBAAmB,SAAU/zH,GACxC,IAAIu0H,EACJ,OAAQn2G,KAAKqQ,OAAOkpG,YAAa5xG,MAAK,SAAUy3D,GAE5C,OADA+2C,EAAM/2C,EACCA,EAAOx9E,QAAUA,CAC5B,KAAMu0H,CACV,EACAtD,EAAKxzG,UAAUqoB,QAAU,WACjB1nB,KAAKqQ,OAAOuqB,cAGhB56B,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAkBrzB,KAAKozG,SACvCpzG,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAoBrzB,KAAKszG,YACzCtzG,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAA2BrzB,KAAKmzG,iBAChDnzG,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAgBrzB,KAAK0nB,SACrC1nB,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAmBrzB,KAAKuzG,aACxCvzG,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAwBrzB,KAAK0pF,SAC7C1pF,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAgBrzB,KAAKwzG,qBACrCxzG,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAwBrzB,KAAKwzG,qBACjD,EACAX,EAAKxzG,UAAUm6G,SAAW,WACtB,OAAOx5G,KAAK+yG,SAChB,EACAF,EAAKxzG,UAAUnZ,SAAW,SAAUD,GAChC,OAAO+Z,KAAK+yG,UAAY9sH,CAC5B,EACA4sH,EAAKxzG,UAAUo6G,uBAAyB,WACpC,OAAOz5G,KAAKkzG,mBAChB,EACAL,EAAKxzG,UAAUq6G,uBAAyB,SAAUzzH,GAC9C+Z,KAAKkzG,oBAAsBjtH,CAC/B,EACA4sH,EAAKxzG,UAAUs6G,sBAAwB,SAAUv9B,GAC7C,IAAIw9B,EAAS,IAAI55B,EAAAA,GACb5B,EAAK,IAAIwN,EAAAA,EAAY,CAAEplG,IAAK,GAAIukG,QAAS,IAAI/K,EAAAA,KAC7C/5F,EAAQ2zH,EAAOr9B,aAAa6B,EAAIhC,GAChCv2F,EAAOyW,KAAKC,MAAMtW,EAAMJ,MAC5B,OAAO8oB,EAAAA,EAAAA,IAAO9oB,EAAMI,EAAMg7F,QAC9B,EACA4xB,EAAKxzG,UAAUu5G,aAAe,SAAU3qH,EAAMmuF,EAAOp9F,GACjD,IAAIgxB,EAAQhQ,KACR65G,EAAW5rH,EACXhI,EAAQ+Z,KAAK25G,sBAAsBv9B,GACnC09B,EAAM,IAAIhsB,EAAAA,EACVurB,EAAO,IAAIvrB,EAAAA,EACf,QAAyB5yG,IAArB+S,EAAK0tF,cAA8D,IAAjC37E,KAAK+yG,UAAUgH,cAEjD,GADA9zH,EAAMgd,OAAShV,EACU,SAArBA,EAAK0tF,aAA+C,WAArB1tF,EAAK0tF,YAA0B,CAC9D,IAAIq+B,EAAa/rH,EACjB+rH,EAAWh7H,IAAMA,EAEjBg7H,EAAuB,QAAIX,EAAKnyH,QAChC8yH,EAAW/zH,MAAQA,EACnB+Z,KAAK9Z,SAAS,CAAE8sH,WAAW,EAAMC,SAAUoG,EAAK37G,UAChDm8G,EAASP,QAAUD,EAAK37G,QACxBm8G,EAASI,WAAaZ,EAAKj+G,OAC3B4E,KAAKqQ,OAAOylB,QAAQzC,EAAAA,IAA0B2mF,GAC9CX,EAAKnyH,QAAQC,MAAK,WACd6oB,EAAM9pB,SAAS,CAAE8sH,WAAW,EAAMC,SAAU6G,EAAIp8G,QAASpgB,MAAO2I,EAAM3I,MAAO0+F,WAAY/1F,EAAM+1F,aAChE,SAA3Bg+B,EAAWr+B,aACX3rE,EAAMK,OAAO0W,OAAOsM,EAAAA,IAAoB2mF,GAE5ChqG,EAAMK,OAAOylB,QAAQzC,EAAAA,IAAwBptC,EACjD,IACKoB,OAAM,WAA6B,GAC5C,MAEI2Y,KAAK9Z,SAAS,CAAE8sH,WAAW,EAAMC,SAAU6G,EAAIp8G,QAASpgB,MAAO2I,EAAM3I,MAAO0+F,WAAY/1F,EAAM+1F,aAC9Fh8E,KAAKqQ,OAAOylB,QAAQzC,EAAAA,IAAwBptC,QAIhD+Z,KAAK9Z,SAAS,CAAC,GACf4zH,EAAIp8G,QAAQsC,KAAKqQ,OAAOh3B,YAE5B,OAAOygI,CACX,EAMAjH,EAAKxzG,UAAUw3G,0BAA4B,WAGvC,IAFA,IAAIqD,EAAgB,GAEX3rG,EAAK,EAAG4rG,EADHn6G,KAAKqQ,OAAO4jG,aACY1lG,EAAK4rG,EAAUliI,OAAQs2B,IAAM,CAC/D,IAAI4nG,EAAMgE,EAAU5rG,GAChB4nG,EAAIiE,kBAAmBzsG,EAAAA,EAAAA,IAAkBwoG,EAAIv0H,QAC7Cs4H,EAAcz6H,KAAK02H,EAAIv0H,MAE/B,CACA,OAAOs4H,CACX,EACArH,EAAKxzG,UAAUm0G,oBAAsB,WAC7BxzG,KAAKqQ,OAAOnnB,gBAAkB8W,KAAKqQ,OAAOlnB,eAAeirH,QAAQn8H,SACjEoiI,EAAAA,EAAAA,IAAuBr6G,KAAKqQ,OAAQrQ,KAAKqQ,OAAOlnB,eAAeirH,QAEvE,EACOvB,CACX,CArlB0B,2MCXtBtzE,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAyBzC46E,EAAoC,SAAU7uG,GAE9C,SAAS6uG,IACL,IAAItqG,EAAmB,OAAXvE,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,KAEhE,OADAgQ,EAAMhtB,QAAUgtB,EAAMK,OAAOO,cAAc,KAAM,CAAE31B,UAAW,oBACvD+0B,CACX,CA6MA,OAlNAuvB,EAAU+6E,EAAoB7uG,GAW9B6uG,EAAmBj7G,UAAUk7G,OAAS,WAClC,OAAOv6G,KAAKqQ,OAAOO,cAAc,MACrC,EAQA0pG,EAAmBj7G,UAAUisC,OAAS,SAAUkvE,EAAM30H,GAClD,IAGIiT,EAHA2hH,EAAKz6G,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,gBACvCkkC,EAAOz2C,KAAKhd,QAAQouB,YACpBspG,EAAW16G,KAAKu6G,SAEhBn7C,EAASo7C,EAAKp7C,OAGlB,GAFAq7C,EAAGtpG,YAAYslC,GACfA,EAAKngB,aAAa,eAAgB8oC,EAAOlzD,KACrCkzD,EAAOu7C,eAAgB,CACvB,IAAIC,EAAW,CAAC,EACZ/0H,IACA+0H,EAASx7C,EAAOx9E,OAASiE,EAAKu5E,EAAOx9E,QAIzC,GADAg5H,EAAiB,OAAIx7C,EACjBA,EAAOhxE,QAAS,CAChB,IAAIysH,EAAkB76G,KAAKqQ,OAAOyrF,SAA8C,kBAA3B18B,EAAOu7C,eACxDG,EAAe96G,KAAKqQ,OAAO0qG,eAAiB/6G,KAAKqQ,OAAO0qG,cAAcC,eACtEh7G,KAAKqQ,OAAO0qG,cAAcC,cAAclf,QACxCmf,EAASj7G,KAAKqQ,OAAOrtB,QAAQ4B,GAAKw6E,EAAOlzD,IAAM,iBACnD,GAAI2uG,GAAmBC,EACnB17C,EAAO87C,mBAAP97C,CAA2Bw7C,EAAU56G,KAAKqQ,OAAQ,iBAAkB4qG,EAAQ,KAAM,KAAMxkE,GACxFz2C,KAAKqQ,OAAO8qG,sBAEX,CACD,IAAIn4H,EAAUo8E,EAAO87C,mBAAP97C,CAA2Bw7C,EAAU56G,KAAKqQ,OAAQ,iBAAkB4qG,IAClFG,EAAAA,EAAAA,IAAe3kE,EAAMzzD,EACzB,CACJ,MAEIyzD,EAAK7f,UAAUzB,IAAI,SAE3B,MAEI,GAAoB,aAAhBiqC,EAAO9kF,KAAqB,CAC5B,KAAKqzB,EAAAA,EAAAA,IAAkByxD,EAAOl2E,kBAAmBk2E,EAAOl2E,iBAAoBykB,EAAAA,EAAAA,IAAkByxD,EAAOi8C,mBAgChG,EACD7kF,EAAAA,EAAAA,IAAWkkF,EAAU,CACjB,MAAS,+BAEb5hH,EAAQkH,KAAKqQ,OAAOO,cAAc,QAAS,CACvChsB,GAAIw6E,EAAOx9E,MAAQ,iBAAkB3G,UAAW,eAChDs7C,MAAO,CACHj8C,KAAM,SAAU+Y,MAAO+rE,EAAO51E,WAAagxH,EAAKhkF,WAAWnjC,MAC3D9V,MAAOsI,EAAK20H,EAAKp7C,OAAOx9E,OAASiE,EAAK20H,EAAKp7C,OAAOx9E,OAAS,GAAI4oE,KAAM,YAG7EkwD,EAASvpG,YAAYrY,GACjB7K,EAAO,CACPjL,QAAS8V,EAAO6nE,eAAgB,QAChCvqC,WAAY,CACRuU,UAAW3qC,KAAKqQ,OAAOs6B,UAAWy3B,iBAAiB,EAAMjiF,SAAU6f,KAAKqQ,OAAOlwB,WAGvFygF,EAAAA,EAAMa,YAAYxzE,EAAM+R,KAAKqQ,OAAOO,cACxC,MA9CI,GAJA6lC,EAAK7f,UAAUzB,IAAI,eACnBqB,EAAAA,EAAAA,IAAWkkF,EAAU,CACjB,MAAS,mBAET/sG,EAAAA,EAAAA,IAAkByxD,EAAOi8C,kBAAkBn7G,QAC3CpH,EAAQkH,KAAKqQ,OAAOO,cAAc,QAAS,CACvChsB,GAAIw6E,EAAOx9E,MAAQ,iBAAkB3G,UAAW,2CAChDs7C,MAAO,CAAEj8C,KAAM,SAAU+Y,MAAO+rE,EAAO51E,cAE3CkxH,EAASvpG,YAAYrY,OAEpB,CACD,IAAI7K,EAAO,CAAEmxE,OAAQA,EAAQ3oB,KAAM6kE,SAC/Bv8F,EAAOqgD,EAAOi8C,kBAAkBn7G,OAKpC,GAJoB,kBAAT6e,IACPA,GAAO3R,EAAAA,EAAAA,IAAS2R,EAAMz+B,SAGL,kBADrBwY,EAAQimB,EAAK9wB,IACkB,CAC3B,IAAI0iB,EAAM3Q,KAAKqQ,OAAOO,cAAc,OACpCD,EAAIY,UAAYzY,EAChBA,EAAQ6X,EAAI4qG,UAChB,EACA/kF,EAAAA,EAAAA,IAAWkkF,EAAU,CACjBc,MAAO,2CACPnoH,MAAO+rE,EAAO51E,WACd5E,GAAIw6E,EAAOx9E,MAAQ,mBAEvB84H,EAASvpG,YAAYrY,EACzB,GAuB0B,IAA1BsmE,EAAOl2E,gBAA6C,KAAjBk2E,EAAOx9E,QAAgB+rB,EAAAA,EAAAA,IAAkByxD,EAAOx9E,UACnFkX,EAAMw9B,aAAa,WAAY,QAC/Bx9B,EAAM89B,UAAUzB,IAAI,cAExB,IAAIsmF,EAAgBf,EAASnoG,cAAc,iBAa3C,GAZIkpG,GACAA,EAAcnlF,aAAa,QAASt2B,KAAKqQ,OAAOqrG,UAAUz/D,YAAY,gBAErEmjB,EAAOhxE,SACRqoD,EAAK7f,UAAUzB,IAAI,UAEvBn1B,KAAK27G,WAAWllE,EAAMikE,GAElB16G,KAAKqQ,OAAOlnB,eAAeyyH,uBAA6D,cAApC57G,KAAKqQ,OAAOlnB,eAAe7O,OAC9E0lB,KAAKqQ,OAAOwrG,aAAcluG,EAAAA,EAAAA,IAAkByxD,EAAOu7C,kBAAmBhtG,EAAAA,EAAAA,IAAkByxD,EAAOi8C,oBAChGr7G,KAAK87G,mBAAmBpB,EAAUt7C,EAAQo7C,KAEzC7sG,EAAAA,EAAAA,IAAkByxD,EAAOl2E,iBAAmBk2E,EAAOl2E,mBAAoBykB,EAAAA,EAAAA,IAAkByxD,EAAOi8C,mBAAoB,CACrH,IAAIU,EAAgB38C,EAAOi8C,kBAAkB/pG,MACzCrjB,EAAO,CAAEjL,QAAS8V,EAAOsmE,OAAQA,GACR,kBAAlB28C,IACPA,GAAgB3uG,EAAAA,EAAAA,IAAS2uG,EAAez7H,SAE5Cy7H,EAAcr8G,KAAKM,KAAM/R,EAC7B,CACJ,CAEJ,OAAOwoD,CACX,EAQA6jE,EAAmBj7G,UAAUs8G,WAAa,SAAUllE,EAAMulE,GAEtD,OADAvlE,EAAKtlC,YAAY6qG,GACVvlE,CACX,EACA6jE,EAAmBj7G,UAAUy8G,mBAAqB,SAAUpB,EAAUt7C,EAAQo7C,GAC1E,IACIyB,EADAtI,EAAO3zG,KAAKqQ,OAEZ6rG,EAASl8G,KAAKqQ,OAAOO,cAAc,QAAS,CAC5C31B,UAAW,6CACX2J,GAAI41H,EAAKp7C,OAAOlzD,MAGpB,GADAwuG,EAASnoG,cAAc,QAAQpB,YAAY+qG,GACvC98C,EAAOjhF,QAAUihF,EAAOjhF,OAAOyiG,SAC/Bq7B,EAAY78C,EAAOjhF,OAAOyiG,cAEzB,GAAI+yB,EAAKxqH,eAAeirH,QAAQn8H,OACjC,IAAK,IAAIktB,EAAI,EAAGlG,EAAI00G,EAAKxqH,eAAeirH,QAASjvG,EAAIlG,EAAEhnB,OAAQktB,IAAK,CAChE,IAAIgxG,EAAMl3G,EAAE/f,SAASimB,EAAE/pB,WAAY,KAE/B6gI,EADA9F,EAAIv0H,QAAUw9E,EAAOx9E,MACTu0H,EAAIv1B,SAGJ,OAEpB,MAGAq7B,EAAY,SAEXtuG,EAAAA,EAAAA,IAAkBgmG,EAAKwI,aAAaF,UAAU78C,EAAOx9E,UACtDq6H,EAAYtI,EAAKwI,aAAaF,UAAU78C,EAAOx9E,QAEnDoe,KAAKo8G,SAAW,IAAIhjI,EAAAA,EAAa,CAC7ByJ,OAAQ,CAAE9K,KAAM,OAAQwF,MAAO,SAC/B6xF,YAAa,OACb7xF,MAAO0+H,EACPloE,MAAO,MACP76D,QAASkmF,EAAOl2E,eAChBgnH,WAAY,OACZvlE,UAAW3qC,KAAKqQ,OAAOs6B,UACvBnvD,OAAQwkB,KAAKq8G,cAAcr9G,KAAKgB,MAChCs8G,WAAY,WACR,IAAI17B,EAAW+yB,EAAKwI,aAAaI,gBACjCv8G,KAAK3mB,WAAaunG,EAAS+yB,EAAKiE,eAAe53G,KAAKhd,QAAQ4B,IAAItK,KAAO,YACvE,IAAK,IAAI6qB,EAAI,EAAGA,EAAInF,KAAK3mB,WAAWpB,OAAQktB,IACpCi6D,EAAOjhF,QAAUihF,EAAOjhF,OAAOyiG,WAAYjzE,EAAAA,EAAAA,IAAkBgmG,EAAKwI,aAAaF,UAAU78C,EAAOx9E,SAChGoe,KAAK3mB,WAAW6F,SAASimB,EAAE/pB,WAAY,KAAKmC,QAAU6hF,EAAOjhF,OAAOyiG,WACpE5gF,KAAKziB,MAAQ6hF,EAAOjhF,OAAOyiG,SAGvC,EACAzgG,SAAU6f,KAAKqQ,OAAOlwB,SAAW,iBAAwB6f,KAAKqQ,OAAOlwB,SAAW,kBAEpF6f,KAAKo8G,SAASrxE,SAASmxE,GACvB,IAAIM,GAAWpjF,EAAAA,EAAAA,IAAQp5B,KAAKo8G,SAASp5H,QAAS,QAC9Cw5H,EAAS5lF,UAAUzB,IAAI,uBACvBqnF,EAASt7E,gBAAgB,WAC7B,EACAo5E,EAAmBj7G,UAAUg9G,cAAgB,SAAU5gI,GACnD,IAAIk4H,EAAO3zG,KAAKqQ,OACZ8lG,EAAMxC,EAAKiE,eAAen8H,EAAEuH,QAAQo+C,aAAa,OACrD3lD,EAAE2jF,OAAS+2C,EACXxC,EAAKwI,aAAaF,UAAU9F,EAAIv0H,OAASnG,EAAE8B,MAC3Co2H,EAAK5sF,OAAOsM,EAAAA,IAA6B53C,EAC7C,EACO6+H,CACX,CApNwC,CAoNtCmC,EAAAA,uBCnOEC,EAA8B,WAC9B,SAASA,EAAarsG,EAAQssG,EAAqB7J,EAAgB3pH,GAC/D6W,KAAK48G,OAAS58G,KAAK68G,aAAa79G,KAAKgB,MACrCA,KAAKqQ,OAASA,EACdrQ,KAAK8yG,eAAiBA,EACtB9yG,KAAK7W,eAAiBA,EACtB6W,KAAK88G,sBAAwBH,EACzB38G,KAAKqQ,SACLrQ,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAwBrzB,KAAK+8G,oBAAqB/8G,MACjEA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAgBrzB,KAAK+8G,oBAAqB/8G,MAEjE,CA+FA,OApFA08G,EAAar9G,UAAU29G,iBAAmB,SAAUC,EAAe9+E,EAAQihC,EAAQ89C,EAAQt8B,GACvF5gF,KAAKm9G,UAAYD,EACjB,IAAIE,EAAOh+C,EAAO9kF,KAAO,WACzB0lB,KAAKq9G,SAAWr9G,KAAKs9G,YAAc3vG,EAAAA,EAAAA,IAAkBizE,IAC/CjzE,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAOlnB,eAAe8yH,aAAetuG,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAOlnB,eAAe8yH,UAAU,GAAKmB,IACpEp9G,KAAK88G,sBAAsB,GAAKM,GAAlFp9G,KAAKqQ,OAAOlnB,eAAe8yH,UAAU,GAAKmB,GAFex8B,EAGjE,IAAI28B,EAAiBv9G,KAAKs9G,WACtBE,EAAgBx9G,KAAKy9G,gBAAgBr+C,EAAQg+C,GAC7CM,EAAU19G,KAAKqQ,OAAOO,cAAc,MAAO,CAAE31B,UAAW,kBAC5DgiI,EAAc9rG,YAAYusG,GAC1B,IAAIC,EAAY39G,KAAKqQ,OAAOO,cAAc,QAAS,CAAEhsB,GAAIw6E,EAAOlzD,IAAM,YACtEwxG,EAAQvsG,YAAYwsG,GACpB39G,KAAKo8G,SAAW,IAAIhjI,EAAAA,EAAa,CAC7BC,WAAYkkI,EACZ16H,OAAQ,CAAE9K,KAAM,OAAQwF,MAAO,SAC/B4C,SAAU6f,KAAKqQ,OAAOlwB,SAAW,kBAAyB6f,KAAKqQ,OAAOlwB,SAAW,iBACjFwqD,UAAW3qC,KAAKqQ,OAAOs6B,UACvB5yD,KAAMylI,EAENhiI,OAAQ,WACJ,IAAIoiI,EAAWh7G,SAAS2P,cAAc,sBAAsBA,cAAc,SACvD,YAAfvS,KAAKziB,OAAsC,eAAfyiB,KAAKziB,OAClB,WAAfyiB,KAAKziB,OAAqC,cAAfyiB,KAAKziB,MAChCqgI,EAAwB,cAAE,GAAY,SAAI,GAEpCjwG,EAAAA,EAAAA,IAAkBiwG,EAASx8E,aAAa,eAC9Cw8E,EAAwB,cAAE,GAAY,SAAI,EAElD,IAEJ59G,KAAKo8G,SAASv4G,iBAAiBg6G,EAAAA,GAAkB79G,KAAK48G,QACtD58G,KAAKo8G,SAASrxE,SAAS,IAAMq0B,EAAOlzD,IAAM,UAC9C,EACAwwG,EAAar9G,UAAUy+G,6BAA+B,SAAU7vH,GAC5DA,EAAKs6E,MAAMvlF,QAAQu0C,MAAMwc,MAAQ,MACrC,EACA2oE,EAAar9G,UAAUw9G,aAAe,SAAU5uH,GAC5CA,EAAKs6E,MAAMvlF,QAAQu0C,MAAMu9B,QAAU90D,KAAKm9G,UAAUroD,OAAS,GAAG15E,WAC1D4kB,KAAKqQ,OAAO0tG,kBACZ/9G,KAAK89G,6BAA6B7vH,EAE1C,EAEAyuH,EAAar9G,UAAUo+G,gBAAkB,SAAUtH,EAAKiH,GAGpD,IAFA,IAAIY,EAAW,GAENzvG,EAAK,EAAGmpG,EADH13G,KAAKqQ,OAAOlnB,eAAeirH,QACH7lG,EAAKmpG,EAAUz/H,OAAQs2B,IAAM,CAC/D,IAAI6wD,EAASs4C,EAAUnpG,GACvB,GAAI4nG,EAAIv0H,QAAUw9E,EAAOx9E,OAAUu0H,EAAII,mBAAqBJ,EAAIa,kBAAoB53C,EAAOx9E,MAAQ,CAC/F,IAAIq8H,EAAgB,IAAIryB,EAAAA,EAAY5rF,KAAKq9G,UAAUhwB,cAAa,IAAIrP,EAAAA,GAAQjC,MAAM,QAAS,QAAS3c,EAAOwhB,WAC3Go9B,GAAYrwG,EAAAA,EAAAA,IAAkBswG,EAAc,IAA8B,GAAxBA,EAAc,GAAGlmI,IACvE,CACJ,CACA,GAAiB,KAAbimI,EACA,GAAI7H,EAAIh4H,OAAOyiG,SAEX,IADA,IAAIs9B,EAAUr/H,OAAOC,KAAKkhB,KAAKq9G,UAAUplI,OAChCktB,EAAI,EAAGA,EAAI+4G,EAAS/4G,IACrBnF,KAAKq9G,SAASn+H,SAASimB,EAAE/pB,WAAY,KAAKmC,QAAU44H,EAAIh4H,OAAOyiG,WAC/Do9B,EAAWh+G,KAAKq9G,SAASn+H,SAASimB,EAAE/pB,WAAY,KAAKrD,WAK7DimI,EAAWh+G,KAAKq9G,SAAS,GAAGtlI,KAGpC,OAAOimI,CACX,EAKAtB,EAAar9G,UAAU8+G,cAAgB,WACnC,OAAOn+G,KAAKo8G,SAAS7+H,KACzB,EACAm/H,EAAar9G,UAAU09G,oBAAsB,WACrC/8G,KAAKo8G,SAASxhF,cAGlB56B,KAAKo8G,SAASt4G,oBAAoB+5G,EAAAA,GAAkB79G,KAAK48G,QACzD58G,KAAKo8G,SAAS10F,UACd1nB,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAwBrzB,KAAK+8G,qBAC7C/8G,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAgBrzB,KAAK+8G,qBACzC,EACOL,CACX,CA3GkC,uBCV9Bn9E,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAazCC,EAA0C,SAAUC,EAAYzB,EAAQn/C,EAAK6gD,GAC7E,IAA2H3pB,EAAvHD,EAAI5X,UAAUpmB,OAAQ4O,EAAIovB,EAAI,EAAIkoB,EAAkB,OAAT0B,EAAgBA,EAAOhhD,OAAOihD,yBAAyB3B,EAAQn/C,GAAO6gD,EACrH,GAAuB,kBAAZ/gC,SAAoD,oBAArBA,QAAQihC,SAAyBl5C,EAAIiY,QAAQihC,SAASH,EAAYzB,EAAQn/C,EAAK6gD,QACpH,IAAK,IAAI16B,EAAIy6B,EAAW3nD,OAAS,EAAGktB,GAAK,EAAGA,KAAS+Q,EAAI0pB,EAAWz6B,MAAIte,GAAKovB,EAAI,EAAIC,EAAErvB,GAAKovB,EAAI,EAAIC,EAAEioB,EAAQn/C,EAAK6H,GAAKqvB,EAAEioB,EAAQn/C,KAAS6H,GAChJ,OAAOovB,EAAI,GAAKpvB,GAAKhI,OAAOs1C,eAAegK,EAAQn/C,EAAK6H,GAAIA,CAChE,EASIu3H,EAAgB,qBACpB9a,EAAAA,EAAoB3/C,KAAO,aAC3B,IAAI0gD,EAAc,CACdrjC,UAAW,KACXC,QAAS,IAkBTo9C,EAA0B,SAAU5yG,GASpC,SAAS4yG,EAAS39G,EAAS1d,GACvB,OAAOyoB,EAAO/L,KAAKM,KAAMU,EAAS1d,IAAYgd,IAClD,CAiyBA,OA3yBAu/B,EAAU8+E,EAAU5yG,GAiBpB4yG,EAASh/G,UAAU+rC,UAAY,WAC3B3/B,EAAOpM,UAAU+rC,UAAU1rC,KAAKM,KACpC,EACAq+G,EAASh/G,UAAU48F,cAAgB,WAC/B,MAAO,WACX,EACAoiB,EAASh/G,UAAU6oG,UAAY,WACE,aAAzBloG,KAAK47B,kBACL5G,EAAAA,GAAaG,IAAIn1B,KAAK+gE,aAAaE,QAAQ,GAAI,YAAajhE,KAAKs+G,YAAat+G,MAC9Eg1B,EAAAA,GAAaG,IAAIn1B,KAAK+gE,aAAaC,UAAW,OAAQhhE,KAAK2nG,cAAe3nG,QAEzE2N,EAAAA,EAAAA,IAAkB3N,KAAK+gE,aAAaE,QAAQ,KAC7CjsC,EAAAA,GAAaG,IAAIn1B,KAAK+gE,aAAaE,QAAQ,GAAI,YAAajhE,KAAKmoG,cAAenoG,MAEpFg1B,EAAAA,GAAaG,IAAIn1B,KAAK8gE,aAAc,QAAS9gE,KAAKu+G,YAAav+G,MAC1DA,KAAKqhE,WACNrsC,EAAAA,GAAaG,IAAIn1B,KAAK8gE,aAAc,QAAS9gE,KAAKotG,QAASptG,MAC3Dg1B,EAAAA,GAAaG,IAAIn1B,KAAK8gE,aAAc,QAAS9gE,KAAKksG,WAAYlsG,MAC9Dg1B,EAAAA,GAAaG,IAAIn1B,KAAK8gE,aAAc,UAAW9gE,KAAKosG,aAAcpsG,MAClEg1B,EAAAA,GAAaG,IAAIn1B,KAAK8gE,aAAc,QAAS9gE,KAAKqtG,aAAcrtG,MAChEg1B,EAAAA,GAAaG,IAAI70C,OAAQ,SAAU0f,KAAKooG,aAAcpoG,OAE1DA,KAAKqoG,iBACT,EACAgW,EAASh/G,UAAUi/G,YAAc,SAAU7iI,IACjCukB,KAAK9W,gBAAkB0Z,SAASmjE,gBAAkB/lE,KAAK8gE,cACxDl+D,SAASmjE,cAAcnvC,UAAUM,SAASosE,EAAAA,EAAoBxqG,SAAU85B,EAAAA,GAAQY,WAAaZ,EAAAA,GAAQY,UACtG/3C,EAAEi1D,gBAEV,EACA2tE,EAASh/G,UAAUsoG,cAAgB,SAAUlsH,GACzC,IAAI+iI,EAAax+G,KAAK8gE,cAA4C,KAA5B9gE,KAAK8gE,aAAavjF,MACpD,KAAOyiB,KAAK8gE,cAAgB9gE,KAAK8gE,aAAavjF,OAC7CowB,EAAAA,EAAAA,IAAkB3N,KAAKi6F,YAActsF,EAAAA,EAAAA,IAAkB6wG,IAAeA,IAAex+G,KAAKjoB,MAC3FioB,KAAKy+G,YAAYhjI,GAErBgwB,EAAOpM,UAAUsoG,cAAcjoG,KAAKM,KAAMvkB,EAC9C,EACA4iI,EAASh/G,UAAU4nG,cAAgB,WAC/B,OAAOjnG,KAAK8gE,YAChB,EAEAu9C,EAASh/G,UAAUoyG,WAAa,SAAU15H,GACtC6oF,EAAAA,EAAM5+E,SAASge,KAAKjoB,KAAMioB,KAAK8gE,aAAc9gE,KAAK2gE,eAAgB3gE,KAAKoiE,iBACvEpiE,KAAKy+G,cACLz+G,KAAK20E,iBACT,EAEA0pC,EAASh/G,UAAUqyG,YAAc,SAAUn0H,GACnCyiB,KAAK0+G,YACL1+G,KAAK2+G,gBAAgB3+G,KAAKziB,OAG1ByiB,KAAK2+G,gBAAgB,MAEzB3+G,KAAK20E,kBACL30E,KAAK0nG,gBACT,EACA2W,EAASh/G,UAAUs/G,gBAAkB,SAAUphI,GAC3C,IAAIihI,GAAa7wG,EAAAA,EAAAA,IAAkBpwB,GAAS,KAAOA,EAAMnC,WACzDwlF,EAAAA,EAAM5+E,SAASw8H,EAAYx+G,KAAK8gE,aAAc9gE,KAAK2gE,eAAgB3gE,KAAKoiE,iBACxEpiE,KAAK26B,cAAc,CAAEp9C,MAAOA,EAAOxF,KAAMwF,EAAOuJ,MAAO,OAAQ,GAC/DkZ,KAAK8tE,YAAc9tE,KAAKlZ,MACxB,IAAIjE,EAASmd,KAAKnd,OACdg4G,EAAW,CAAC,EAChBA,EAASh4G,EAAO9K,OAAQ41B,EAAAA,EAAAA,IAAkBpwB,GAAS,KAAOA,EAAMnC,WAChEy/G,EAASh4G,EAAOtF,QAASowB,EAAAA,EAAAA,IAAkBpwB,GAAS,KAAOA,EAAMnC,WACjE4kB,KAAKs4F,SAAWuC,EAChB76F,KAAK5U,KAAO,KACR4U,KAAK2+D,gBAAkB3+D,KAAKziB,OAC5ByiB,KAAK+rG,kBAAkB,KAE/B,EACAsS,EAASh/G,UAAUooG,aAAe,WAC9B,IAAK95F,EAAAA,EAAAA,IAAkB3N,KAAKziB,OAYvB,GAAIyiB,KAAKjoB,OAAQ41B,EAAAA,EAAAA,IAAkB3N,KAAKziB,OAAQ,CACjD,IAAIq1F,KAAK5yE,KAAKqnG,iBAAiBrnG,KAAKjoB,OAEhCioB,KAAK6yE,aAAaD,EAAI,OAGtBhS,EAAAA,EAAM5+E,SAASge,KAAKjoB,KAAMioB,KAAK8gE,aAAc9gE,KAAK2gE,eAAgB3gE,KAAKoiE,iBACvEpiE,KAAKy+G,cAEb,MAEIz+G,KAAK6yE,aAAa7yE,KAAK4rE,cAAc5rE,KAAK8tE,aAAc,WAtBpD8E,EAAK5yE,KAAKsnG,kBAAkBtnG,KAAKziB,QAEjCyiB,KAAK6yE,aAAaD,EAAI,MAEjB5yE,KAAK0+G,YACV1+G,KAAK2+G,gBAAgB3+G,KAAKziB,OAG1ByiB,KAAK2+G,gBAAgB,MAgB7B3+G,KAAK0nG,iBACL9mC,EAAAA,EAAM5+E,SAASge,KAAKjoB,KAAMioB,KAAK8gE,aAAc9gE,KAAK2gE,eAAgB3gE,KAAKoiE,gBAC3E,EACAi8C,EAASh/G,UAAUiiE,gBAAkB,WAC7BthE,KAAKoiE,kBACDpiE,KAAK8gE,cAA4C,KAA5B9gE,KAAK8gE,aAAavjF,QAAiByiB,KAAKqhE,UAC7DlqC,EAAAA,EAAAA,IAAY,CAACn3B,KAAK+gE,aAAakD,aAAcq/B,EAAAA,EAAoBW,gBAGjExtE,EAAAA,EAAAA,IAAS,CAACz2B,KAAK+gE,aAAakD,aAAcq/B,EAAAA,EAAoBW,eAG1E,EACAoa,EAASh/G,UAAU2nG,kBAAoB,WAWnC,MAVqB,CACjB,KAAQ,WACR,oBAAqB,OACrB,kBAAmBhnG,KAAKokG,cAAcx/G,GACtC,gBAAiB,QACjB,gBAAiBob,KAAKqhE,SAASjmF,WAC/B,aAAgB,MAChB,eAAkB,MAClB,WAAc,QAGtB,EACAijI,EAASh/G,UAAU8sG,YAAc,SAAU1wH,GACvCukB,KAAK+kG,SAAU,EACX/kG,KAAK8hG,eACLr2F,EAAOpM,UAAU8sG,YAAYzsG,KAAKM,KAAMvkB,GACpCukB,KAAKs7F,WAA+C,KAAlCt7F,KAAK6jG,YAAYtmH,MAAM09D,QACzCj7C,KAAK4+G,aAAa5+G,KAAKs7F,UAAU/oF,cAAc,IAAM+wF,EAAAA,EAAoB1wB,OAIzE5yE,KAAKs7F,WAAyC,KAA5Bt7F,KAAK8gE,aAAavjF,OAAgByiB,KAAKklG,iBACzDllG,KAAK4+G,aAAa5+G,KAAKs7F,UAAU/oF,cAAc,IAAM+wF,EAAAA,EAAoB1wB,KAE7E5yE,KAAKg4F,kBAAkBv8G,GAE/B,EACA4iI,EAASh/G,UAAU+nG,eAAiB,WAChC,MAAO,cACX,EACAiX,EAASh/G,UAAU0tG,aAAe,WAG9B,OAFA/sG,KAAK6jG,YAAc7jG,KAAK8gE,aACE9gE,KAAK8hG,eAAkB9hG,KAAK87F,SAAoC,aAAzB97F,KAAK47B,gBAAmC57B,KAAK+gE,aAAesjC,CAEjI,EAEAga,EAASh/G,UAAU0+F,iBAAmB,SAAUzC,EAAWriE,EAAMx9C,EAAG+pH,GAChE,IAAIx1F,EAAQhQ,KACZyL,EAAOpM,UAAU0+F,iBAAiBr+F,KAAKM,KAAMs7F,EAAWriE,EAAMx9C,GAC1DukB,KAAK2lG,gBACL3lG,KAAK20E,mBAEJ30E,KAAKklG,iBAA4C,aAAzBllG,KAAK47B,iBAAkC57B,KAAK+kG,SACrE70F,YAAW,WACPF,EAAM6uG,cACV,GAER,EACAR,EAASh/G,UAAUsvG,gBAAkB,WACjC,IAAI9T,EAAW76F,KAAK2lG,eAAiB,CAAE5tH,KAAM,IAAOioB,KAAKwmG,cACrDve,GAAYt6E,EAAAA,EAAAA,IAAkB3N,KAAKi5B,MAAsEj5B,KAAKi5B,KAAnEj5B,KAAKi5B,KAAK1mB,cAAc,IAAM+wF,EAAAA,EAAoBrb,UAEjG,GADiB4S,EAAS9iH,OAASioB,KAAK8gE,aAAavjF,SAAUowB,EAAAA,EAAAA,IAAkBs6E,GAE7E,OAAOA,EAEX,IAAKr1D,EAAAA,GAAQY,WAAaxzB,KAAK4lG,kBAAoBhzE,EAAAA,GAAQY,aACtD7lB,EAAAA,EAAAA,IAAkB3N,KAAK4rE,gBAAkB5rE,KAAK4rE,cAAc3zF,OAAS,EAAG,CACzE,IAAIumI,EAAax+G,KAAK8gE,aAAavjF,MAC/BlE,EAAa2mB,KAAK2+F,WAClBrkH,EAAO0lB,KAAKo6F,WAAW/gH,GAAYghH,OAEnCt0B,GADaqyB,EAAAA,EAAAA,IAAOomB,EAAYx+G,KAAK4rE,cAAe5rE,KAAKysG,YAAY,EAAMpzH,EAAY2mB,KAAKnd,OAAQvI,GACzE8Q,KAC/B,IAAKuiB,EAAAA,EAAAA,IAAkBo4D,GAWf/lE,KAAK2lG,gBAAqD,KAAnC3lG,KAAK8gE,aAAavjF,MAAM09D,SAC/Cj7C,KAAKqmG,cACLrmG,KAAKi5B,KAAKuK,UAAY,OAbS,CACnC,IAAI0tB,EAAQlxD,KAAKyhG,gBAAgB17B,EAAc3kC,aAAa,eAAiB,EACzE4S,EAAS90D,SAASglD,iBAAiBlkC,KAAK4rE,cAAc,GAAI,MAAMznC,iBAAiB,UAAW,IAChG,IAAKrqB,MAAMk6B,IAAoC,iBAAzBh0C,KAAK47B,gBAAoC,CAC3D57B,KAAKqmG,cACL,IAAIhN,EAAYr5F,KAAKnd,OAAOm6G,QAAUh9F,KAAK4rE,cAAc,GAAG33B,aAAe,EAC3Ej0C,KAAKi5B,KAAKuK,UAAY0tB,EAAQld,EAASqlD,GACvC5iE,EAAAA,EAAAA,IAAS,CAACsvC,GAAgBu9B,EAAAA,EAAoB7xF,MAClD,CACJ,CAOA,OAAOs0D,CACX,CAEI,OAAO,IAEf,EACAs4C,EAASh/G,UAAUrd,SAAW,SAAUvG,GAIpC,OAHIA,GAAgB,YAAXA,EAAEnB,MAAmC,UAAbmB,EAAEwnB,QAC/BjD,KAAKssG,sBAELtsG,KAAK8+G,UAAqC,aAAzB9+G,KAAK47B,iBAAkCngD,GAAgB,YAAXA,EAAEnB,MAAmC,UAAbmB,EAAEwnB,QACvFjD,KAAKklG,iBAAkB,EACvBllG,KAAK6+G,aAAapjI,IACX,GAGAgwB,EAAOpM,UAAUrd,SAAS0d,KAAKM,KAAMvkB,EAEpD,EACA4iI,EAASh/G,UAAUyyG,iBAAmB,WAClC9xG,KAAKs4F,SAAWt4F,KAAKojG,eAAepjG,KAAKziB,OACzC,IAAIs9G,EAAW76F,KAAKwmG,cACdxmG,KAAK0+G,cAAe/wG,EAAAA,EAAAA,IAAkBktF,EAASt9G,SAAUowB,EAAAA,EAAAA,IAAkBktF,EAAS9iH,OACtFioB,KAAK26B,cAAc,CAAE,MAASkgE,EAASt9G,QAAUyiB,KAAK0+G,YAE9D,EAOAL,EAASh/G,UAAUu+F,YAAc,YACzBjwF,EAAAA,EAAAA,IAAkB3N,KAAK6oG,kBACvB7oG,KAAK6oG,eAA2C,iBAAzB7oG,KAAK47B,gBAAuC57B,KAAK+gE,aAAaE,QAAQ,IACzFjhE,KAAK+gE,aAAakD,aAClBrD,EAAAA,EAAMoX,WAAW,sBAAwBomC,EAAep+G,KAAK+gE,aAAaC,UAAWhhE,KAAK4Q,eACzF5Q,KAAK+gE,aAAaE,QAAQ,IAAMjhE,KAAK+gE,aAAakD,aACvDxtC,EAAAA,EAAAA,IAAS,CAACz2B,KAAK6oG,gBAAiBvF,EAAAA,EAAoBa,cACpD4E,EAAAA,EAAAA,IAAc,CACV5qE,OAAQn+B,KAAK6oG,eACb90D,MAAOnhB,EAAAA,GAAQY,SAAW,OAAS,QACpCxzB,KAAK4Q,gBACRgtF,EAAAA,EAAAA,IAAY59F,KAAK6oG,gBAEzB,EAOAwV,EAASh/G,UAAU++F,YAAc,YACxBzwF,EAAAA,EAAAA,IAAkB3N,KAAK6oG,mBACxBzK,EAAAA,EAAAA,IAAYp+F,KAAK6oG,iBACjB1xE,EAAAA,EAAAA,IAAY,CAACn3B,KAAK6oG,gBAAiBvF,EAAAA,EAAoBa,aACnDnkG,KAAK6oG,eAAejyE,UAAUM,SAASknF,IACvC7lF,EAAAA,EAAAA,IAAOv4B,KAAK6oG,gBAGZ7oG,KAAK6oG,eAAet3F,UAAY,GAEpCvR,KAAK6oG,eAAiB,KAE9B,EACAwV,EAASh/G,UAAU0/G,YAAc,SAAUh5C,EAAei5C,GAItD,GAHKA,GACDh/G,KAAK4+G,aAAa74C,GAElB/lE,KAAK8+G,WAAa9+G,KAAKklG,gBAAiB,CACxC,IAAIxhH,EAAesc,KAAKk8F,eAAen2B,EAAc3kC,aAAa,eAAehmD,WAC7E6jI,EAAmBj/G,KAAKysE,kBAAkB1G,EAAc3kC,aAAa,eAC5C,aAAzBphC,KAAK47B,kBACA57B,KAAKglG,YAAchlG,KAAK2+D,gBAAkBsgD,EAM3Cj/G,KAAKwqG,mBAAmBzkC,EAAe,MAAM,IAL7C/lE,KAAKwqG,mBAAmBzkC,EAAe,MACvC/lE,KAAKglG,YAAa,EAClBhlG,KAAK2+D,cAAgB3+D,KAAKysE,kBAAkB1G,EAAc3kC,aAAa,iBAM1EphC,KAAKk/G,kBAAkBx7H,IACxBsc,KAAKm/G,qBAAqBz7H,EAAcs7H,EAEhD,CACJ,EACAX,EAASh/G,UAAU6/G,kBAAoB,SAAU3hI,GAC7C,GAAIq1C,EAAAA,GAAQwsF,UAAW,CACnB,IAAIC,EAAgBr/G,KAAKqsG,qBACrBiT,EAAUt/G,KAAK0lG,iBAAiBx9F,IAChCq3G,EAASF,EAAcn3G,IACvBs3G,EAAYx/G,KAAK0lG,iBAAiBj4F,MAClCgyG,EAAWJ,EAAc5xG,MAC7B,OAAgB,IAAZ6xG,IAAmBA,IAAY/hI,EAAMtF,QAAUunI,IAAcjiI,EAAMtF,QAClEunI,EAAYC,GAAYH,EAAUC,GAAYD,IAAYC,GAAUC,IAAcC,EAM3F,CAEI,OAAO,CAEf,EACApB,EAASh/G,UAAU8mG,SAAW,SAAU1qH,EAAG+qC,KACnC7Y,EAAAA,EAAAA,IAAkB6Y,MAAe7Y,EAAAA,EAAAA,IAAkB6Y,KAAa7Y,EAAAA,EAAAA,IAAkB6Y,EAASntC,cAC3FoyB,EAAOpM,UAAU8mG,SAASzmG,KAAKM,KAAMvkB,GAErCukB,KAAK8hG,iBAAkBn0F,EAAAA,EAAAA,IAAkBlyB,IAAMA,EAAE0iD,SAAWn+B,KAAK+gE,aAAakD,aAC9EjkE,KAAKmsG,YAAY1wH,EAEzB,EACA4iI,EAASh/G,UAAUyqG,kBAAoB,SAAU9mH,GAC7C,QAAQ2qB,EAAAA,EAAAA,IAAkB3qB,EAC9B,EACAq7H,EAASh/G,UAAUw/G,aAAe,SAAUpjI,GACxC,IAAIikI,EAAiBjkI,IAAmB,SAAbA,EAAEwnB,QAAkC,OAAbxnB,EAAEwnB,QACnC,SAAbxnB,EAAEwnB,QAAkC,QAAbxnB,EAAEwnB,QAAiC,WAAbxnB,EAAEwnB,QAAoC,aAAbxnB,EAAEwnB,QACxE8iE,EAAgB25C,EAAgB1/G,KAAK4rE,cAAc5rE,KAAK8tE,aAAe9tE,KAAK2uG,kBAChF,IAAKhhG,EAAAA,EAAAA,IAAkBo4D,GASlB,GAAgC,KAA5B/lE,KAAK8gE,aAAavjF,OAEvB,GADAyiB,KAAK8tE,YAAc,OACdngE,EAAAA,EAAAA,IAAkB3N,KAAKi5B,MAAO,CAC/Bj5B,KAAKi5B,KAAKuK,UAAY,EACtB,IAAIo8D,EAAY5/F,KAAKi5B,KAAK1mB,cAAc,IAAM+wF,EAAAA,EAAoB1wB,IAClE5yE,KAAK4+G,aAAahf,EACtB,OAGA5/F,KAAK8tE,YAAc,KACnB9tE,KAAK20E,kBACD30E,KAAK4rE,eAAiB5rE,KAAK4rE,cAAc3zF,OAAS,IAAM+nB,KAAK8lG,gBAC7D9lG,KAAKqmG,kBArB0B,CACnC,IAAKqZ,EAAe,CAChB,IAAIniI,EAAQyiB,KAAKysE,kBAAkB1G,EAAc3kC,aAAa,eAC9DphC,KAAK8tE,YAAc9tE,KAAKyhG,gBAAgBlkH,GACxCyiB,KAAK8tE,aAAengE,EAAAA,EAAAA,IAAkB3N,KAAK8tE,aAAkC,KAAnB9tE,KAAK8tE,WACnE,CACA9tE,KAAKklG,gBAA8C,KAA5BllG,KAAK8gE,aAAavjF,OAAuByiB,KAAKklG,gBACrEllG,KAAK++G,YAAYh5C,EAAe25C,EACpC,CAgBJ,EACArB,EAASh/G,UAAU24F,kBAAoB,SAAUv8G,GAC7CukB,KAAKypG,UAAUhuH,IACVkyB,EAAAA,EAAAA,IAAkB3N,KAAKi6F,YACxBj6F,KAAK6+G,aAAapjI,GAClBA,EAAEi1D,iBAEV,EACA2tE,EAASh/G,UAAU8/G,qBAAuB,SAAUz7H,EAAcg8H,QACxC,IAAlBA,IAA4BA,GAAgB,GAChD,IAAInT,EAAYvsG,KAAKqsG,qBACjB9uH,EAAQyiB,KAAK8gE,aAAavjF,MAAMwkB,OAAO,EAAGwqG,EAAU9+F,OACxD,GAAIlwB,GAAUA,EAAMc,gBAAkBqF,EAAaqe,OAAO,EAAGwqG,EAAU9+F,OAAOpvB,cAAgB,CAC1F,IAAImgI,EAAajhI,EAAQmG,EAAaqe,OAAOxkB,EAAMtF,OAAQyL,EAAazL,QACxE2oF,EAAAA,EAAM5+E,SAASw8H,EAAYx+G,KAAK8gE,aAAc9gE,KAAK2gE,eAAgB3gE,KAAKoiE,iBACxEpiE,KAAK8gE,aAAawP,kBAAkBi8B,EAAU9+F,MAAOzN,KAAK8gE,aAAavjF,MAAMtF,OACjF,MACSynI,IACL9+C,EAAAA,EAAM5+E,SAAS0B,EAAcsc,KAAK8gE,aAAc9gE,KAAK2gE,eAAgB3gE,KAAKoiE,iBAC1EpiE,KAAK8gE,aAAawP,kBAAkB,EAAGtwE,KAAK8gE,aAAavjF,MAAMtF,QAEvE,EACAomI,EAASh/G,UAAU26F,eAAiB,SAAUjiH,GAC1C,OAAO0zB,EAAOpM,UAAU26F,eAAet6F,KAAKM,KAAMjoB,GAAM,EAAMioB,KAAKi/E,aACvE,EACAo/B,EAASh/G,UAAU6qG,YAAc,WACA,aAAzBlqG,KAAK47B,kBACL5G,EAAAA,GAAaW,OAAO31B,KAAK+gE,aAAaE,QAAQ,GAAI,YAAajhE,KAAKs+G,aACpEtpF,EAAAA,GAAaW,OAAO31B,KAAK+gE,aAAaC,UAAW,OAAQhhE,KAAK2nG,iBAE7Dh6F,EAAAA,EAAAA,IAAkB3N,KAAK+gE,aAAaE,QAAQ,KAC7CjsC,EAAAA,GAAaW,OAAO31B,KAAK+gE,aAAaE,QAAQ,GAAI,YAAajhE,KAAKmoG,eAEpEnoG,KAAK8gE,eACL9rC,EAAAA,GAAaW,OAAO31B,KAAK8gE,aAAc,QAAS9gE,KAAKu+G,aAChDv+G,KAAKqhE,WACNrsC,EAAAA,GAAaW,OAAO31B,KAAK8gE,aAAc,QAAS9gE,KAAKotG,SACrDp4E,EAAAA,GAAaW,OAAO31B,KAAK8gE,aAAc,QAAS9gE,KAAKksG,YACrDl3E,EAAAA,GAAaW,OAAO31B,KAAK8gE,aAAc,UAAW9gE,KAAKosG,cACvDp3E,EAAAA,GAAaW,OAAO31B,KAAK8gE,aAAc,QAAS9gE,KAAKqtG,cACrDr4E,EAAAA,GAAaW,OAAOr1C,OAAQ,SAAU0f,KAAKooG,gBAGnDpoG,KAAKwoG,mBACT,EACA6V,EAASh/G,UAAUwzE,aAAe,SAAUD,EAAIn3F,GAC5CgwB,EAAOpM,UAAUwzE,aAAanzE,KAAKM,KAAM4yE,EAAIn3F,IACxCkyB,EAAAA,EAAAA,IAAkBilE,IAAQ5yE,KAAK8+G,UAAa9+G,KAAK4lG,iBAClD5lG,KAAKqmG,aAEb,EACAgY,EAASh/G,UAAUsqG,kBAAoB,SAAUluH,GAC7C,IAAIm3F,EACA5yE,KAAK+xE,eAEDa,EADA5yE,KAAKglG,WACAhlG,KAAKi5B,KAAK1mB,cAAc,IAAM+wF,EAAAA,EAAoBrb,UAGlDjoF,KAAKi5B,KAAK1mB,cAAc,IAAM+wF,EAAAA,EAAoB7xF,UAGvDzR,KAAK6yE,aAAaD,EAAIn3F,GACtBukB,KAAK+kG,SAAU,GAEf/kG,KAAKglG,aACLhlG,KAAK2lG,gBAAiB,EACtB3lG,KAAKymG,cAAchrH,KAGV,UAAbA,EAAEwnB,QAAyD,KAAnCjD,KAAK8gE,aAAavjF,MAAM09D,OAChDj7C,KAAKmmG,SAAS1qH,GAETukB,KAAK+kG,UAAY/kG,KAAKglG,aAAcr3F,EAAAA,EAAAA,IAAkBilE,IAC3D5yE,KAAKy+G,YAAYhjI,GAErBukB,KAAKknG,UAAUzrH,EACnB,EACA4iI,EAASh/G,UAAUu/G,aAAe,SAAUhsC,GACxC5yE,KAAK20E,kBACD30E,KAAKyzE,UAAUb,KAAQA,EAAGh8C,UAAUM,SAASosE,EAAAA,EAAoBrb,YACjEjoF,KAAKqmG,cACLzzB,EAAGh8C,UAAUzB,IAAImuE,EAAAA,EAAoB7xF,OAE7C,EACA4sG,EAASh/G,UAAUk/G,YAAc,SAAU9iI,GACnCm3C,EAAAA,GAAQY,WAAaxzB,KAAK9W,iBAC1B8W,KAAKilG,cAAe,GAExBjlG,KAAKgoG,QAAQvsH,GACbmlF,EAAAA,EAAMC,eAAe7gE,KAAK8gE,aAAc9gE,KAAK+gE,aAAaC,UAC9D,EACAq9C,EAASh/G,UAAU8oG,cAAgB,SAAU1sH,GACzCA,EAAEi1D,iBACE9d,EAAAA,GAAQY,WAAaxzB,KAAK8hG,gBAC1B9hG,KAAKilG,cAAe,GAExBx5F,EAAOpM,UAAU8oG,cAAczoG,KAAKM,KAAMvkB,EAC9C,EACA4iI,EAASh/G,UAAUo/G,YAAc,SAAUhjI,GACvC,IAAIu0B,EAAQhQ,KACRziB,EAAQyiB,KAAKg6F,eAAeh6F,KAAK8gE,aAAavjF,OAClD,GAAKyiB,KAAK0+G,aAA2C,KAA5B1+G,KAAK8gE,aAAavjF,MAWtC,GAAuC,KAAnCyiB,KAAK8gE,aAAavjF,MAAM09D,OAAe,CAC5C,IAAI0kE,EAAkB3/G,KAAKziB,MAC3B,IAAIowB,EAAAA,EAAAA,IAAkBpwB,GAAQ,CAC1B,IAAIu3F,EAAsC,KAA5B90E,KAAK8gE,aAAavjF,MAAe,KAAOyiB,KAAK8gE,aAAavjF,MAEpEyxC,EAAY,CAAEj3C,KAAM+8F,EAAS1pF,KAAM,CAAC,GACnC4U,KAAK4kG,QAMN5kG,KAAK4/G,0BAA0B9qC,EAAS9lD,EAAW2wF,GALnD3/G,KAAK81B,QAAQ,uBAAwB9G,GAAW,SAAUA,GACtDhf,EAAM4vG,0BAA0B9qC,EAAS9lD,EAAW2wF,EAAiBlkI,EACzE,GAKR,MAEIukB,KAAK2lG,gBAAiB,EACtB3lG,KAAK26B,cAAc,CAAEp9C,MAAOA,IACxBoiI,IAAoB3/G,KAAKziB,OACzByiB,KAAKymG,cAAchrH,EAG/B,MACSukB,KAAK0+G,cACV1+G,KAAK2lG,gBAAiB,OAnC+B,CACrD,IAAIhnC,EAAgB3+D,KAAK2+D,cACrBj7E,EAAesc,KAAKziB,MACxByiB,KAAK26B,cAAc,CAAEp9C,MAAOA,KACxBowB,EAAAA,EAAAA,IAAkB3N,KAAKziB,QACvBqjF,EAAAA,EAAM5+E,SAAS,GAAIge,KAAK8gE,aAAc9gE,KAAK2gE,eAAgB3gE,KAAKoiE,iBAEhEpiE,KAAK8+G,UAAYngD,IAAkB3+D,KAAKziB,OAASmG,IAAiBsc,KAAKziB,OACvEyiB,KAAKymG,cAAc,KAE3B,CA2BJ,EACA4X,EAASh/G,UAAUugH,0BAA4B,SAAUriI,EAAOyxC,EAAW2vC,EAAeljF,GACtF,IAAIoH,EAASmd,KAAKnd,OACduI,EAAO4jC,EAAU5jC,KACjByvG,EAAW,CAAC,EACZzvG,IAAQgiB,EAAAA,EAAAA,IAASvqB,EAAO9K,KAAMqT,KAASgiB,EAAAA,EAAAA,IAASvqB,EAAOtF,MAAO6N,GAC9DyvG,EAAWzvG,IAGXpJ,EAAAA,EAAAA,IAASa,EAAO9K,KAAMwF,EAAOs9G,IAC7B74G,EAAAA,EAAAA,IAASa,EAAOtF,MAAOA,EAAOs9G,IAElC76F,KAAKs4F,SAAWuC,EAChB,IAAIglB,EAAa,CACb9nI,MAAMq1B,EAAAA,EAAAA,IAASvqB,EAAO9K,KAAMioB,KAAKs4F,UACjC/6G,OAAO6vB,EAAAA,EAAAA,IAASvqB,EAAOtF,MAAOyiB,KAAKs4F,UACnCxxG,MAAO,MAEXkZ,KAAK26B,cAAcklF,GAAY,GAC/B7/G,KAAK6yE,aAAa,KAAM,MACxB7yE,KAAK2lG,gBAAiB,EAClBhnC,IAAkB3+D,KAAKziB,OACvByiB,KAAKymG,cAAchrH,EAE3B,EASA4iI,EAASh/G,UAAUi8B,kBAAoB,SAAU+G,EAASC,GACzB,aAAzBtiC,KAAK47B,kBACL57B,KAAK2xG,UAAUtvE,GACfriC,KAAKkiG,iBAAiB,CAAC,SAAU,QAAS,cAAe7/D,IAE7D,IAAK,IAAI9zB,EAAK,EAAGvoB,EAAKnH,OAAOC,KAAKujD,GAAU9zB,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAC9D,IAAI4E,EAAOntB,EAAGuoB,GACd,OAAQ4E,GACJ,IAAK,WACDytD,EAAAA,EAAMyJ,YAAYrqE,KAAKqhE,SAAUrhE,KAAK8gE,cAClC9gE,KAAKqhE,UACLrsC,EAAAA,GAAaW,OAAO31B,KAAK8gE,aAAc,QAAS9gE,KAAKotG,SACrDp4E,EAAAA,GAAaW,OAAO31B,KAAK8gE,aAAc,QAAS9gE,KAAKksG,YACrDl3E,EAAAA,GAAaW,OAAO31B,KAAK8gE,aAAc,UAAW9gE,KAAKosG,gBAGvDp3E,EAAAA,GAAaG,IAAIn1B,KAAK8gE,aAAc,QAAS9gE,KAAKotG,QAASptG,MAC3Dg1B,EAAAA,GAAaG,IAAIn1B,KAAK8gE,aAAc,QAAS9gE,KAAKksG,WAAYlsG,MAC9Dg1B,EAAAA,GAAaG,IAAIn1B,KAAK8gE,aAAc,UAAW9gE,KAAKosG,aAAcpsG,OAEtEA,KAAK8wG,cACL,MACJ,IAAK,iBACD9wG,KAAK+sG,eACD/sG,KAAK8hG,eAA0C,aAAzB9hG,KAAK47B,kBAAkCjuB,EAAAA,EAAAA,IAAkB3N,KAAKi5B,OACpFxtB,EAAOpM,UAAU2iG,WAAWtiG,KAAKM,MAErC,MACJ,IAAK,cACD,MACJ,QAEI,IAAI8/G,EAAa9/G,KAAK65F,cAAc1mF,EAAMkvB,EAASC,GACnD72B,EAAOpM,UAAUi8B,kBAAkB57B,KAAKM,KAAM8/G,EAAWhmB,YAAagmB,EAAW/lB,aAC7E/5F,KAAK8hG,eAA0B,eAAT3uF,IAAyBxF,EAAAA,EAAAA,IAAkB3N,KAAKi5B,OAASj5B,KAAKs+F,cAC3D,aAAzBt+F,KAAK47B,iBACLnwB,EAAOpM,UAAU2iG,WAAWtiG,KAAKM,MAKjD,CACJ,EAOAq+G,EAASh/G,UAAUisC,OAAS,WACxB7/B,EAAOpM,UAAUisC,OAAO5rC,KAAKM,MAC7BA,KAAK+sG,eACD/sG,KAAK8hG,eAA0C,aAAzB9hG,KAAK47B,kBAAkCjuB,EAAAA,EAAAA,IAAkB3N,KAAKi5B,OACpFxtB,EAAOpM,UAAU2iG,WAAWtiG,KAAKM,MAErCA,KAAKqsC,gBACT,EAOAgyE,EAASh/G,UAAUu8B,cAAgB,WAC/B,MAAO,UACX,EAUAyiF,EAASh/G,UAAUijG,QAAU,SAAUx4G,EAAOy4G,GAC1C92F,EAAOpM,UAAUijG,QAAQ5iG,KAAKM,KAAMlW,EAAOy4G,EAC/C,EAUA8b,EAASh/G,UAAUlhB,OAAS,SAAU9E,EAAY+iG,EAAOv5F,GACrD4oB,EAAOpM,UAAUlhB,OAAOuhB,KAAKM,KAAM3mB,EAAY+iG,EAAOv5F,EAC1D,EAQAw7H,EAASh/G,UAAUoqG,UAAY,SAAUhuH,GAErCgwB,EAAOpM,UAAUoqG,UAAU/pG,KAAKM,KAAMvkB,EAC1C,EAQA4iI,EAASh/G,UAAU6nG,UAAY,SAAUzrH,GAErC,IAAI+iI,EAAax+G,KAAK8gE,cAA4C,KAA5B9gE,KAAK8gE,aAAavjF,MAAe,KACjEyiB,KAAK8gE,cAAgB9gE,KAAK8gE,aAAavjF,MAC7C,KAAKowB,EAAAA,EAAAA,IAAkB3N,KAAKi6F,UAAW,CACnC,IAAI8lB,EAAW//G,KAAKqlG,YAChBrlG,KAAKqlG,cACLzkC,EAAAA,EAAM5+E,SAASge,KAAKolG,YAAaplG,KAAK8gE,aAAc9gE,KAAK2gE,eAAgB3gE,KAAKoiE,iBAC9EpiE,KAAKqlG,aAAc,GAEnBrlG,KAAK8+G,UACL9+G,KAAKssG,sBAET,IAAIzR,EAAW76F,KAAK2lG,eAAiB,CAAE5tH,KAAM,IAAOioB,KAAKwmG,cACrDve,GAAYt6E,EAAAA,EAAAA,IAAkB3N,KAAKi5B,MAAsE,KAA9Dj5B,KAAKi5B,KAAK1mB,cAAc,IAAM+wF,EAAAA,EAAoBrb,UACjG,GAAIjoF,KAAK8gE,cAAgB+5B,EAAS9iH,OAASioB,KAAK8gE,aAAavjF,SAAUowB,EAAAA,EAAAA,IAAkBs6E,GAMrF,OALIjoF,KAAKglG,aACLhlG,KAAKymG,cAAchrH,GACnBukB,KAAK2lG,gBAAiB,QAE1Bl6F,EAAOpM,UAAU6nG,UAAUxnG,KAAKM,KAAMvkB,GAG1C,GAA6B,aAAzBukB,KAAK47B,iBAAqE,KAAnC57B,KAAK8gE,aAAavjF,MAAM09D,OAAe,CAC9E,IAAI5hE,EAAa2mB,KAAK2+F,WAClBrkH,EAAO0lB,KAAKo6F,WAAW/gH,GAAYghH,OACnC2lB,GAAa5nB,EAAAA,EAAAA,IAAOp4F,KAAK8gE,aAAavjF,MAAOyiB,KAAK4rE,cAAe,SAAS,EAAMvyF,EAAY2mB,KAAKnd,OAAQvI,GAC7G0lB,KAAK0mG,WAAasZ,EAAW50H,MACzBuiB,EAAAA,EAAAA,IAAkBqyG,EAAWl5H,SAC7Bk5H,EAAWl5H,OAAQsxG,EAAAA,EAAAA,IAAOp4F,KAAK8gE,aAAavjF,MAAOyiB,KAAK4rE,cAAe,cAAc,EAAMvyF,EAAY2mB,KAAKnd,OAAQvI,GAAMwM,OAE9HkZ,KAAK8tE,YAAckyC,EAAWl5H,OACzB6mB,EAAAA,EAAAA,IAAkB3N,KAAK0mG,YAGnBqZ,IACL//G,KAAK2lG,gBAAiB,EACtB3lG,KAAK20E,mBAJL30E,KAAKwqG,mBAAmBxqG,KAAK0mG,WAAY,MAAM,EAMvD,CACK1mG,KAAKqlG,cAAerlG,KAAK+kG,SAAY/kG,KAAK/M,cAC3C+M,KAAKy+G,YAAYhjI,EAEzB,EACIkyB,EAAAA,EAAAA,IAAkB3N,KAAKi6F,WAAaj6F,KAAK0+G,eAAgB/wG,EAAAA,EAAAA,IAAkB6wG,IAAeA,IAAex+G,KAAKziB,OAC9GyiB,KAAKy+G,cAEThzG,EAAOpM,UAAU6nG,UAAUxnG,KAAKM,KAAMvkB,EAC1C,EAMA4iI,EAASh/G,UAAUgoD,QAAU,WACpBrnD,KAAK9mB,UAGN05C,EAAAA,GAAQY,WAAaxzB,KAAK8hG,gBAC1B9hG,KAAKilG,cAAe,GAExBx5F,EAAOpM,UAAUgoD,QAAQ3nD,KAAKM,MAClC,EAOAq+G,EAASh/G,UAAU/D,MAAQ,WACvB0E,KAAKziB,MAAQ,IACjB,EAQA8gI,EAASh/G,UAAU8mE,SAAW,SAAU1qF,GAEpCgwB,EAAOpM,UAAU8mE,SAASzmE,KAAKM,KAAMvkB,EACzC,EAQA4iI,EAASh/G,UAAUqiG,SAAW,WAC1B,OAAOj2F,EAAOpM,UAAUqiG,SAAShiG,KAAKM,KAC1C,EAQAq+G,EAASh/G,UAAU+jG,eAAiB,SAAU7lH,GAC1C,OAAOkuB,EAAOpM,UAAU+jG,eAAe1jG,KAAKM,KAAMziB,EACtD,EAEA8gI,EAASh/G,UAAUqzG,kBAAoB,WACnC,EAEJ/yE,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVmgF,EAASh/G,UAAW,gBAAY,GACnCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVmgF,EAASh/G,UAAW,mBAAe,GACtCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,CAAC,IACXmgF,EAASh/G,UAAW,sBAAkB,GACzCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVmgF,EAASh/G,UAAW,sBAAkB,GACzCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACVmgF,EAASh/G,UAAW,aAAS,GAChCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACVmgF,EAASh/G,UAAW,aAAS,GAChCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVmgF,EAASh/G,UAAW,uBAAmB,GAC1CsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVmgF,EAASh/G,UAAW,iBAAa,GACpCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACD6uG,EAASh/G,UAAW,4BAAwB,GAC/CsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACD6uG,EAASh/G,UAAW,iBAAa,GACpCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACVmgF,EAASh/G,UAAW,qBAAiB,GACxCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,UACVmgF,EAASh/G,UAAW,sBAAkB,GACzCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACVmgF,EAASh/G,UAAW,4BAAwB,GAC/CsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACVmgF,EAASh/G,UAAW,gBAAY,GACnCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACVmgF,EAASh/G,UAAW,sBAAkB,GACzCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACVmgF,EAASh/G,UAAW,sBAAkB,GACzCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACVmgF,EAASh/G,UAAW,mBAAe,GACtCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,SACVmgF,EAASh/G,UAAW,aAAS,GAChCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,UACVmgF,EAASh/G,UAAW,mBAAe,GACtCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,SACVmgF,EAASh/G,UAAW,kBAAc,GACrCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVmgF,EAASh/G,UAAW,gBAAY,GACnCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACVmgF,EAASh/G,UAAW,YAAQ,GAC/BsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACVmgF,EAASh/G,UAAW,aAAS,GAChCg/G,EAAW1+E,EAAW,CAClBhB,EAAAA,IACD0/E,EAEP,CA7yB8B,CA6yB5BjlI,EAAAA,GCr1BK,SAAS6mI,EAAgBj9H,EAASo5F,EAAO4C,EAAY1kG,GACxD,GAAc,KAAV8hG,EAAJ,CAII,IAAI8jC,EAAclhC,EAAa,MAAQ,KAEvC5C,EAAQ,mBAAmBt0E,KAAKs0E,GAASA,EAAQA,EAAM3lF,QAAQ,sCAAuC,QAItG0pH,EAAan9H,EAAS,IAAIgmB,OAHE,eAAT1uB,EAAwB,KAAO8hG,EAAQ,IAAe,aAAT9hG,EAC5D,IAAM8hG,EAAQ,KAAO,IAAMA,EAAQ,IAEQ8jC,GACnD,CACJ,CAQA,SAASC,EAAan9H,EAASylB,GAC3B,IAAK,IAAI3hB,EAAQ,EAAG9D,EAAQ8gE,YAAeh9D,EAAQ9D,EAAQ8gE,WAAW7rE,OAAS6O,IAAS,CACpF,GAA2C,IAAvC9D,EAAQ8gE,WAAWh9D,GAAOwyC,UAAmE,KAAjDt2C,EAAQ8gE,WAAWh9D,GAAOggE,YAAY7L,OAAe,CACjG,IAAI19D,EAAQyF,EAAQ8gE,WAAWh9D,GAAO6jE,UAAU1P,OAAOxkD,QAAQgS,EAAS,uCACxEzlB,EAAQ8gE,WAAWh9D,GAAO6jE,UAAY,GACtC3nE,EAAQuuB,UAAYvuB,EAAQuuB,UAAU0pC,OAAS19D,EAC/C,KACJ,CAEI4iI,EAAan9H,EAAQ8gE,WAAWh9D,GAAQ2hB,EAEhD,CACJ,CAOO,SAAS23G,EAAsB75D,GAElC,IADA,IAAI8O,EAAiB9O,EAAQz1C,iBAAiB,gBACrC3L,EAAIkwD,EAAep9E,OAAS,EAAGktB,GAAK,EAAGA,IAAK,CACjD,IAAIwhC,EAAW0uB,EAAelwD,GAAGmL,WAC7Bv4B,EAAO6qB,SAASigG,eAAextC,EAAelwD,GAAG2hD,aACrDngB,EAAS05E,aAAatoI,EAAMs9E,EAAelwD,GAC/C,CACJ,eCxDIo6B,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAazCC,EAA0C,SAAUC,EAAYzB,EAAQn/C,EAAK6gD,GAC7E,IAA2H3pB,EAAvHD,EAAI5X,UAAUpmB,OAAQ4O,EAAIovB,EAAI,EAAIkoB,EAAkB,OAAT0B,EAAgBA,EAAOhhD,OAAOihD,yBAAyB3B,EAAQn/C,GAAO6gD,EACrH,GAAuB,kBAAZ/gC,SAAoD,oBAArBA,QAAQihC,SAAyBl5C,EAAIiY,QAAQihC,SAASH,EAAYzB,EAAQn/C,EAAK6gD,QACpH,IAAK,IAAI16B,EAAIy6B,EAAW3nD,OAAS,EAAGktB,GAAK,EAAGA,KAAS+Q,EAAI0pB,EAAWz6B,MAAIte,GAAKovB,EAAI,EAAIC,EAAErvB,GAAKovB,EAAI,EAAIC,EAAEioB,EAAQn/C,EAAK6H,GAAKqvB,EAAEioB,EAAQn/C,KAAS6H,GAChJ,OAAOovB,EAAI,GAAKpvB,GAAKhI,OAAOs1C,eAAegK,EAAQn/C,EAAK6H,GAAIA,CAChE,EAaAy8G,EAAAA,EAAoB3/C,KAAO,iBAC3B2/C,EAAAA,EAAoBG,KAAO,8CAY3B,IAAI6c,EAA8B,SAAU70G,GASxC,SAAS60G,EAAa5/G,EAAS1d,GAC3B,IAAIu9H,EAAU90G,EAAO/L,KAAKM,KAAMU,EAAS1d,IAAYgd,KAGrD,OAFAugH,EAAQC,YAAa,EACrBD,EAAQE,YAAa,EACdF,CACX,CA4XA,OAzYAhhF,EAAU+gF,EAAc70G,GAoBxB60G,EAAajhH,UAAU+rC,UAAY,WAC/B3/B,EAAOpM,UAAU+rC,UAAU1rC,KAAKM,KACpC,EACAsgH,EAAajhH,UAAU48F,cAAgB,WACnC,MAAO,eACX,EACAqkB,EAAajhH,UAAU+nG,eAAiB,WACpC,MAAO,kBACX,EACAkZ,EAAajhH,UAAU8qF,SAAW,SAAU/N,GACxC,IAAIowB,EAAcpwB,EAAQA,EAAMltE,QAAUlP,KAAKo8E,MAAQp8E,KAAKo8E,MAAMltE,QAAU,IAAI8uE,EAAAA,EAC5EyuB,EAAmC,KAArBzsG,KAAKpC,cAAuB+P,EAAAA,EAAAA,IAAkB3N,KAAKziB,OAAoByiB,KAAKysG,WAAf,QAC3E7uG,EAAoC,KAArBoC,KAAKpC,cAAuB+P,EAAAA,EAAAA,IAAkB3N,KAAKziB,OAAuByiB,KAAKpC,YAAlBoC,KAAKziB,MACrF,GAAIyiB,KAAKwgH,WACL,OAAOhU,EAEX,GAAyB,OAArBxsG,KAAKpC,aAA6C,KAArBoC,KAAKpC,YAAoB,CACtD,IAAIyyB,EAAWrwB,KAAKo6F,WAAWp6F,KAAK3mB,YAAYghH,OAChD,IAAMr6F,KAAK3mB,sBAAsBuyG,EAAAA,GAA6B,WAAbv7D,IAAsC,WAAbA,EAGrE,CACD,IAAIqwF,GAAW/yG,EAAAA,EAAAA,IAAkB3N,KAAKnd,OAAOtF,OAA6B,GAApByiB,KAAKnd,OAAOtF,MAClEivH,EAAYzwB,MAAM2kC,EAASjU,EAAY7uG,EAAaoC,KAAKg/E,WAAYh/E,KAAKi/E,aAC9E,MALIutB,EAAYzwB,MAAM,GAAI0wB,EAAY7uG,EAAaoC,KAAKg/E,WAAYh/E,KAAKi/E,aAM7E,CACA,KAAKtxE,EAAAA,EAAAA,IAAkB3N,KAAK2gH,iBAAkB,CAE1C,GAA6B,KAAzB3gH,KAAK2gH,gBACL,IAAK,IAAIC,EAAgB,EAAGA,EAAgBpU,EAAYzvB,QAAQ9kG,OAAQ2oI,IACtB,WAA1CpU,EAAYzvB,QAAQ6jC,GAAenhH,IACnC+sG,EAAYzvB,QAAQl2D,OAAO+5F,EAAe,GAItDpU,EAAY1wB,KAAK97E,KAAK2gH,gBAC1B,CACA,OAAOnU,CACX,EACA8T,EAAajhH,UAAU8sG,YAAc,SAAU1wH,GAC3C,IAAI8kI,EAAUvgH,KAOd,GANAA,KAAK+kG,SAAU,EACf/kG,KAAKm9F,cAAgBn9F,KAAK2lG,gBAAiB,GACvCh4F,EAAAA,EAAAA,IAAkB3N,KAAKi5B,OACvBxtB,EAAOpM,UAAU2iG,WAAWtiG,KAAKM,KAAMvkB,GAAG,GAE9CukB,KAAKpC,YAAcoC,KAAK6jG,YAAYtmH,MACrB,cAAX9B,EAAEnB,OAAuC,KAAdmB,EAAEu+D,SAAgC,KAAdv+D,EAAEu+D,SAIjD,OAHAh6C,KAAKpC,YAAmC,KAArBoC,KAAKpC,YAAqB,KAAOoC,KAAKpC,YACzDoC,KAAK2kG,iBAAkB,OACvB3kG,KAAKw8F,UAAUx8F,KAAK3mB,WAAY2mB,KAAKnd,OAAQ,KAAMpH,GAGvDukB,KAAKglG,YAAa,EAClBhlG,KAAK8tE,YAAc,KACnB,IAAI9+C,EAAY,CACZ29E,sBAAsB,EACtB50H,KAAMioB,KAAK6jG,YAAYtmH,MACvB4kH,WAAY,SAAU9oH,EAAY+iG,EAAOv5F,GACjCmsC,EAAUznC,SAGdg5H,EAAQC,YAAa,EACrBD,EAAQM,aAAaxnI,EAAY+iG,EAAOv5F,GAC5C,EACA0E,QAAQ,GAEZyY,KAAK81B,QAAQ,YAAa9G,GAAW,SAAUA,GACtCA,EAAUznC,QAAWg5H,EAAQC,YAAexxF,EAAU29E,uBACvD4T,EAAQE,YAAa,EACrBF,EAAQM,aAAaN,EAAQlnI,WAAY,KAAMknI,EAAQ19H,OAAQpH,GAEvE,GACJ,EAUA6kI,EAAajhH,UAAUlhB,OAAS,SAAU9E,EAAY+iG,EAAOv5F,GACzDmd,KAAKwgH,YAAa,EAClBxgH,KAAK6gH,aAAaxnI,EAAY+iG,EAAOv5F,EACzC,EACAy9H,EAAajhH,UAAUwhH,aAAe,SAAUxnI,EAAY+iG,EAAOv5F,EAAQpH,GACvEukB,KAAK2kG,iBAAkB,EACE,KAArB3kG,KAAKpC,aAAuBoC,KAAKpC,YAAY3lB,QAAU+nB,KAAK8gH,UAC5D9gH,KAAKw8F,UAAUnjH,EAAYwJ,EAAQu5F,EAAO3gG,IAG1CukB,KAAKknG,UAAUzrH,GACfukB,KAAK2kG,iBAAkB,GAE3B3kG,KAAK+sC,sBACT,EACAuzE,EAAajhH,UAAU8mG,SAAW,SAAU1qH,EAAG+qC,KACvC7Y,EAAAA,EAAAA,IAAkB6Y,MAAe7Y,EAAAA,EAAAA,IAAkB6Y,KAAa7Y,EAAAA,EAAAA,IAAkB6Y,EAASntC,cAC3FoyB,EAAOpM,UAAU8mG,SAASzmG,KAAKM,KAAMvkB,GAErCukB,KAAK2kG,iBACL3kG,KAAKknG,WAEb,EAEAoZ,EAAajhH,UAAU0+F,iBAAmB,SAAUzC,EAAWriE,EAAMx9C,EAAG+pH,GACpExlG,KAAKy/F,mBAAqB,KAC1Bh0F,EAAOpM,UAAU0+F,iBAAiBr+F,KAAKM,KAAMs7F,EAAWriE,EAAMx9C,GAC9D,IAAI2P,EAAO4U,KAAKi5B,KAAK1mB,cAAc,IAAM+wF,EAAAA,EAAoB1wB,KACxDjlE,EAAAA,EAAAA,IAAkBviB,KACnB+rC,EAAAA,EAAAA,IAAY,CAAC/rC,GAAOk4G,EAAAA,EAAoB7xF,OAE5CzR,KAAK+gH,gBACT,EACAT,EAAajhH,UAAU0hH,eAAiB,WACpC,GAAI/gH,KAAK8+G,YAAanxG,EAAAA,EAAAA,IAAkB3N,KAAK4rE,cAAc,KAAO5rE,KAAKygH,WAAY,CAC/E,IAAI32H,EAAQ,CAACkW,KAAK4rE,cAAc,IAC5BvyF,EAAa2mB,KAAKi6F,SAClB3/G,EAAO0lB,KAAKo6F,WAAW/gH,GAAYghH,OACnC2lB,GAAa5nB,EAAAA,EAAAA,IAAOp4F,KAAK8gE,aAAavjF,MAAOuM,EAAO,aAAckW,KAAKg/E,WAAY3lG,EAAY2mB,KAAKnd,OAAQvI,GAChH0lB,KAAKygH,YAAa,GACb9yG,EAAAA,EAAAA,IAAkBqyG,EAAW50H,OAC9BqgB,EAAOpM,UAAU0/G,YAAYr/G,KAAKM,KAAMA,KAAK4rE,cAAc,IAAI,EAEvE,CACJ,EACA00C,EAAajhH,UAAUwzE,aAAe,SAAUD,EAAIn3F,GAChD,GAAKukB,KAAKyzE,UAAUb,GAIpB,KAAKjlE,EAAAA,EAAAA,IAAkBlyB,IAAiB,YAAXA,EAAEnB,MAAmC,UAAbmB,EAAEwnB,QACnC,QAAbxnB,EAAEwnB,QAAoBjD,KAAKyzE,UAAUb,GAAK,CAC7C,IAAIr1F,EAAQyiB,KAAKysE,kBAAkBmG,EAAGxxC,aAAa,eAKnD,GAJAphC,KAAK8tE,YAAc9tE,KAAKyhG,gBAAgBlkH,GACxCyiB,KAAK4+G,aAAahsC,GAClB5yE,KAAK0mG,WAAa9zB,EAClB5yE,KAAK4wE,kBAAkBn1F,GACnBukB,KAAK8+G,UAAY9+G,KAAK+xE,YAAa,CACnC/xE,KAAKklG,iBAAkB,EACvB,IAAIwa,EAAiBjkI,GAAkB,SAAbA,EAAEwnB,QAAkC,OAAbxnB,EAAEwnB,QAClC,SAAbxnB,EAAEwnB,QAAkC,QAAbxnB,EAAEwnB,QAAiC,WAAbxnB,EAAEwnB,QAAoC,aAAbxnB,EAAEwnB,OAC5EwI,EAAOpM,UAAU0/G,YAAYr/G,KAAKM,KAAM4yE,EAAI8sC,EAChD,CACJ,MAEIj0G,EAAOpM,UAAUwzE,aAAanzE,KAAKM,KAAM4yE,EAAIn3F,QAlB7CukB,KAAK0mG,WAAa9zB,CAoB1B,EACA0tC,EAAajhH,UAAUkgG,WAAa,SAAUlmH,EAAY2nI,GACtD,IAAIT,EAAUvgH,KACVnd,EAAS4oB,EAAOpM,UAAUkgG,WAAW7/F,KAAKM,KAAM3mB,EAAY2nI,GAChE,IAAIrzG,EAAAA,EAAAA,IAAkB9qB,EAAOmzF,aACzBnzF,EAAOmzF,YAAc,SAAUv6F,GACvB8kI,EAAQU,YACJV,EAAQv9H,QAAQmzC,UAAYoqF,EAAQnZ,kBAAoBmZ,EAAQjiB,aAChEpuF,YAAW,WACP+vG,EAAgBxkI,EAAE2P,KAAMm1H,EAAQ3iH,YAAa2iH,EAAQvhC,WAAYuhC,EAAQ9T,WAC7E,GAAG,GAGHwT,EAAgBxkI,EAAE2P,KAAMm1H,EAAQ3iH,YAAa2iH,EAAQvhC,WAAYuhC,EAAQ9T,YAGrF,MAEC,CACD,IAAIyU,EAAgBr+H,EAAOmzF,YAC3BnzF,EAAOmzF,YAAc,SAAUv6F,GACvB8kI,EAAQU,WACRhB,EAAgBxkI,EAAE2P,KAAMm1H,EAAQ3iH,YAAa2iH,EAAQvhC,WAAYuhC,EAAQ9T,YAE7EyU,EAAchiH,MAAMqhH,EAAS,CAAC9kI,GAClC,CACJ,CACA,OAAOoH,CACX,EACAy9H,EAAajhH,UAAUyiG,YAAc,WACjC,OAAO,CACX,EACAwe,EAAajhH,UAAU6vE,YAAc,SAAUzzF,GAC3CukB,KAAKi5B,KAAKuK,UAAY,EACtB/3B,EAAOpM,UAAU6vE,YAAYxvE,KAAKM,KAAMvkB,EAC5C,EACA6kI,EAAajhH,UAAU6pG,cAAgB,WACnC,MAAkD,KAAnClpG,KAAK8gE,aAAavjF,MAAM09D,MAC3C,EACAqlE,EAAajhH,UAAUqxG,cAAgB,WACnC,OAAO1wG,KAAKmhH,eAChB,EAEAb,EAAajhH,UAAUyqG,kBAAoB,SAAU9mH,GACjD,OAAO,CACX,EACAs9H,EAAajhH,UAAUm6E,cAAgB,SAAUn3C,EAASC,GACtD,IAAI5G,EAAW4G,GAAWA,EAAQvqD,KAAOuqD,EAAQvqD,KAAOuqD,EAAUA,EAAQ/kD,MAAQ+kD,EAC9E/kD,EAAQ8kD,GAAWA,EAAQtqD,KAAOsqD,EAAQtqD,KAAOsqD,GAAWA,EAAQ9kD,MAAQ8kD,EAAQ9kD,MAAQyiB,KAAKziB,MACrG,IAAIA,GAA8B,KAArByiB,KAAKolG,aAAuBplG,KAAK0+G,aAAiB1+G,KAAK3mB,sBAAsBuyG,EAAAA,EAiBjFvpD,IACLA,EAAQtqD,KAAOioB,KAAKyxG,WAAW/1E,GAAY17B,KAAK0xG,YAAYh2E,QAlBwC,CACpG,IAAI0lF,EAA8D,WAA5CphH,KAAKo6F,WAAWp6F,KAAK3mB,YAAYghH,OAAsB,GAAKr6F,KAAKnd,OAAOtF,MAC1F20H,EAAelyG,KAAK0hG,WAAWzpH,OAC/BmkG,EAAQ,IAAI4B,EAAAA,EACZqjC,EAAUrhH,KACd,IAAI4rF,EAAAA,EAAY5rF,KAAK3mB,YAAYkzG,aAAanQ,EAAML,MAAM,IAAIkH,EAAAA,EAAUm+B,EAAiB,QAAS7jI,KAC7F4J,MAAK,SAAU1L,GACZA,EAAE2D,OAAOnH,OAAS,GAClBopI,EAAQ9jI,MAA4B,KAApB6jI,EAAyB3lI,EAAE2D,OAAO,GAAGiiI,EAAQx+H,OAAOtF,OAAOnC,WAAaK,EAAE2D,OAAO,GAAGhE,WACpGimI,EAAQ/e,QAAQ7mH,EAAE2D,OAAQ8yH,GAC1BmP,EAAQ5Z,gBAGRplE,GAAWA,EAAQtqD,KAAOspI,EAAQ5P,WAAW/1E,GAAY2G,GAAWA,EAAQ9kD,MAAQ8jI,EAAQ3P,YAAYh2E,GAAY2lF,EAAQ5Z,cAEpI,GACJ,CAIJ,EAOA6Y,EAAajhH,UAAUoqG,UAAY,SAAUhuH,GACpCukB,KAAK9mB,UAGN8mB,KAAK2kG,gBACL3kG,KAAK6tG,gBAGT7tG,KAAK2kG,iBAAkB,EACvB3kG,KAAKklG,iBAAkB,GACnBv3F,EAAAA,EAAAA,IAAkB3N,KAAKi5B,MACvBj5B,KAAKgiG,WAAWvmH,GAGhBukB,KAAKw8F,UAAUx8F,KAAK3mB,WAAY2mB,KAAKnd,OAAQ,KAAMpH,IAE3D,EAMA6kI,EAAajhH,UAAU6nG,UAAY,SAAUzrH,GACzCgwB,EAAOpM,UAAU6nG,UAAUxnG,KAAKM,KAAMvkB,GACtCukB,KAAK8tE,YAAc,IACvB,EASAwyC,EAAajhH,UAAUi8B,kBAAoB,SAAU+G,EAASC,GAC7B,iBAAzBtiC,KAAK47B,iBACL57B,KAAKkiG,iBAAiB,CAAC,SAAU,QAAS,cAAe7/D,GAE7D,IAAK,IAAI9zB,EAAK,EAAGvoB,EAAKnH,OAAOC,KAAKujD,GAAU9zB,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAC9D,IAAI4E,EAAOntB,EAAGuoB,GACd,GACS,oBADD4E,EAEA,GAAInT,KAAKmhH,gBAAiB,CACtB,IAAI7W,EAAS1pC,EAAAA,EAAMoX,WAAWsrB,EAAAA,EAAoBG,KAAMzjG,KAAK+gE,aAAaC,UAAWhhE,KAAK4Q,eAC1F5Q,KAAK+gE,aAAaE,QAAQ,GAAKqpC,EAC/B1pC,EAAAA,EAAMC,eAAe7gE,KAAK8gE,aAAc9gE,KAAK+gE,aAAaC,YACrDrzD,EAAAA,EAAAA,IAAkB3N,KAAK+gE,aAAaE,QAAQ,MAAQtzD,EAAAA,EAAAA,IAAkB3N,KAAK+gE,aAAaC,UAAUx8B,uBAAuB,yBAAyB,KAA+B,UAAxBxkC,KAAK2gE,gBAC/J3gE,KAAK+gE,aAAaC,UAAUx8B,uBAAuB,yBAAyB,GAAG5N,UAAUzB,IAAI,UAE7Fn1B,KAAK+gE,cAAgB/gE,KAAK+gE,aAAaE,SAAWjhE,KAAK+gE,aAAaE,QAAQ,IAC5EjsC,EAAAA,GAAaG,IAAIn1B,KAAK+gE,aAAaE,QAAQ,GAAI,QAASjhE,KAAKmoG,cAAenoG,KAEpF,MAEIu4B,EAAAA,EAAAA,IAAOv4B,KAAK+gE,aAAaE,QAAQ,IACjCjhE,KAAK+gE,aAAaE,QAAQ,GAAK,SAGvC,CAEI,IAAIqgD,EAAWthH,KAAK65F,cAAc1mF,EAAMkvB,EAASC,GACjD72B,EAAOpM,UAAUi8B,kBAAkB57B,KAAKM,KAAMshH,EAASxnB,YAAawnB,EAASvnB,YAEjF,CAER,CACJ,EACAumB,EAAajhH,UAAUqzG,kBAAoB,WACvC,GAAI1yG,KAAKihH,UACL,IAAK,IAAI97G,EAAI,EAAGA,EAAInF,KAAK4rE,cAAc3zF,OAAQktB,IAAK,CAC9BnF,KAAKs7F,UAAU/oF,cAAc,eAE3C6tG,EAAsBpgH,KAAK4rE,cAAczmE,IACzC86G,EAAgBjgH,KAAK4rE,cAAczmE,GAAInF,KAAKpC,YAAaoC,KAAKg/E,WAAYh/E,KAAKysG,YAEvF,CAER,EAOA6T,EAAajhH,UAAUu8B,cAAgB,WACnC,MAAO,cACX,EAOA0kF,EAAajhH,UAAUisC,OAAS,WAC5B7/B,EAAOpM,UAAUisC,OAAO5rC,KAAKM,KACjC,EACA2/B,EAAW,EACPrB,EAAAA,EAAAA,IAAQ,CAAE/gD,MAAO,KAAMqpE,QAAS,KAAMo2C,QAAS,MAAQhE,EAAAA,KACxDsnB,EAAajhH,UAAW,cAAU,GACrCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVoiF,EAAajhH,UAAW,kBAAc,GACzCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVoiF,EAAajhH,UAAW,uBAAmB,GAC9CsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVoiF,EAAajhH,UAAW,iBAAa,GACxCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,KACVoiF,EAAajhH,UAAW,uBAAmB,GAC9CsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,CAAC,IACXoiF,EAAajhH,UAAW,sBAAkB,GAC7CsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACVoiF,EAAajhH,UAAW,aAAS,GACpCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,IACVoiF,EAAajhH,UAAW,iBAAa,GACxCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,aACVoiF,EAAajhH,UAAW,kBAAc,GACzCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACD8wG,EAAajhH,UAAW,iBAAa,GACxCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACVoiF,EAAajhH,UAAW,aAAS,GACpCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,UACVoiF,EAAajhH,UAAW,sBAAkB,GAC7CsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACVoiF,EAAajhH,UAAW,qBAAiB,GAC5CsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACVoiF,EAAajhH,UAAW,4BAAwB,GACnDsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVoiF,EAAajhH,UAAW,sBAAkB,GAC7CsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACVoiF,EAAajhH,UAAW,YAAQ,GACnCihH,EAAe3gF,EAAW,CACtBhB,EAAAA,IACD2hF,EAEP,CA3YkC,CA2YhCjC,aC3aEkD,EAAgC,WAChC,SAASA,EAAelxG,EAAQyiG,EAAgB3pH,GAC5C6W,KAAKqQ,OAASA,EACdrQ,KAAKwhH,WAAa1O,EAClB9yG,KAAK7W,eAAiBA,EAClB6W,KAAKqQ,SACLrQ,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAwBrzB,KAAK0nB,QAAS1nB,MACrDA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAgBrzB,KAAK0nB,QAAS1nB,MAErD,CAkIA,OAjIAuhH,EAAeliH,UAAUa,OAAS,SAAUjS,GACxC+R,KAAKvf,SAAWuf,KAAKqQ,OAAOO,cAAc,QAAS,CAAE31B,UAAW,iBAAkB2J,GAAI,SAAWqJ,EAAKmxE,OAAOlzD,MAC7Gje,EAAKkwC,OAAOhtB,YAAYnR,KAAKvf,UAC7Buf,KAAKm9G,UAAYlvH,EAAKkvH,UACtBn9G,KAAKyhH,qBAAqBxzH,EAC9B,EACAszH,EAAeliH,UAAUoiH,qBAAuB,SAAUxzH,GACtD,IAAI+hB,EAAQhQ,KACR/R,EAAKmxE,OAAOm3C,kBACZv2G,KAAKqQ,OAAOqxG,gBAAgBllC,YAAY+P,aAAavsF,KAAKqQ,OAAOqxG,gBAAgB7N,eAAc,IAC1F1sH,MAAK,SAAU/H,GAAU4wB,EAAM2xG,uBAAuB1zH,EAAM7O,EAAS,IAG9E4gB,KAAK2hH,uBAAuB1zH,EAChC,EACAszH,EAAeliH,UAAUsiH,uBAAyB,SAAU1zH,EAAM7O,GAC9D,IACIwiI,EADArL,EAAkBtoH,EAAKmxE,OAAOm3C,kBAElC,GAAIA,EAAiB,CAIjB,IAHA,IAAIsL,EAAe9J,EAAAA,EAAmB+J,YAAY1iI,EAAOA,OAAQ6O,EAAKmxE,OAAOx9E,OACxEk8F,SAAW,GACZ0uB,OAAc,EACTrnG,EAAI,EAAGA,EAAI08G,EAAa5pI,OAAQktB,IAEjCqnG,EADAA,EACcA,EAAYtpB,GAAGj1F,EAAKmxE,OAAOx9E,MAAO,WAAYigI,EAAa3iI,SAASimB,EAAE/pB,WAAY,KAAK6S,EAAKmxE,OAAOx9E,OAAQoe,KAAKqQ,OACzHlnB,eAAe44H,sBAAuB/hH,KAAKqQ,OAAOlnB,eAAe81F,cAGxD,IAAIgE,EAAAA,EAAUh1F,EAAKmxE,OAAOx9E,MAAO,WAAYigI,EAAa3iI,SAASimB,EAAE/pB,WAAY,KAAK6S,EAAKmxE,OAAOx9E,OAAQoe,KAAKqQ,OACxHlnB,eAAe44H,sBAAuB/hH,KAAKqQ,OAAOlnB,eAAe81F,eAG9E2iC,GAAqB,IAAI5jC,EAAAA,GAAQjC,MAAMywB,IACpBlkG,OAAStI,KAAKqQ,OAAO+rE,MAAM9zE,MAClD,CACA,IAAIjvB,EAAak9H,EAAkBtoH,EAAKmxE,OAAO/lF,WAAa2mB,KAAKqQ,OAAOh3B,WACpEwJ,EAAS,CAAEtF,MAAOg5H,EAAkBtoH,EAAKmxE,OAAO43C,gBAAkB/oH,EAAKmxE,OAAOx9E,OAC9EogI,EAAe,IAAI1B,GAAa3xG,EAAAA,EAAAA,IAAO,CACvCt1B,WAAYA,aAAsBuyG,EAAAA,EAAcvyG,EAAa,IAAIuyG,EAAAA,EAAYvyG,GAC7EwJ,OAAQA,EACR2mC,OAAQxpB,KAAKqQ,OAAOmZ,OACpBmhB,UAAW3qC,KAAKqQ,OAAOs6B,UACvByxC,MAAOm6B,EAAkBqL,EAAqB5hH,KAAKqQ,OAAOqxG,gBAAgB7N,eAAc,GAAM,GAC9FxT,UAAW,YACXlgH,SAAU6f,KAAKqQ,OAAOlwB,SAAW,kBAAyB6f,KAAKqQ,OAAOlwB,SAAW,iBACjF2+H,UAAU,EACVp9C,YAAazzE,EAAKg0H,aAAahmE,YAAY,cAC3CimE,YAAa,WACT,GAAIliH,KAAKo8E,MAAMW,QAAQ9kG,QAAuC,YAA7B+nB,KAAKo8E,MAAMW,QAAQ,GAAGt9E,IAAoBO,KAAKo8E,MAAMW,QAAQ,GAAGthG,GAC1FukB,KAAKo8E,MAAMW,QAAQ,GAAGthG,EAAEwpG,WAAY,CACvC,IAAK,IAAI9/E,EAAI,EAAGA,EAAInF,KAAKo8E,MAAMW,QAAQ,GAAGthG,EAAEwpG,WAAWhtG,OAAQktB,IACvDnF,KAAKo2B,WAAWvzC,OAAOtF,QAAUyiB,KAAKo8E,MAAMW,QAAQ,GAAGthG,EAAEwpG,WAAW,GAAK9/E,GAAGvjB,QAC5Eoe,KAAKo8E,MAAMW,QAAQ,GAAGthG,EAAEwpG,WAAWp+D,OAAO1hB,EAAG,GAC7CA,GAAQ,GAGXnF,KAAKo8E,MAAMW,QAAQ,GAAGthG,EAAEwpG,WAAWhtG,QACpC+nB,KAAKo8E,MAAMW,QAAQl2D,OAAO,EAAG,EAErC,CACJ,GACD54B,EAAKmxE,OAAOjhF,OAAOmqB,SAOtB,GANAtI,KAAKmiH,QAAUniH,KAAKyR,MAAMuwG,EAAc/zH,GACxC+R,KAAKoiH,WAAapiH,KAAKqiH,eAAeL,GACtChiH,KAAKsiH,OAAStiH,KAAK84E,UAAU95E,KAAKgB,MAClCgiH,EAAan+G,iBAAiBg6G,EAAAA,GAAgB79G,KAAKmiH,SACnDH,EAAan+G,iBAAiBg6G,EAAAA,GAAkB79G,KAAKsiH,QACrDN,EAAan+G,iBAAiBwvB,EAAAA,IAAuBrzB,KAAKoiH,YACtD/oI,GAAc,WAAYA,EAAY,CACtC,IAAI+iG,EAAQp8E,KAAKqQ,OAAO85E,SAAWnqF,KAAKqQ,OAAO85E,WAAWj7E,QAAU,IAAI8uE,EAAAA,EACpEukC,GAAS3J,EAAAA,EAAAA,IAAa,CAAEj9B,YAAa,uBAAyBS,GAClEp8E,KAAKqQ,OAAOylB,QAAQzC,EAAAA,IAAwBkvF,EAAOt8H,OACzCs8H,EAAO10B,SACb3mG,QAAQC,MAAK,SAAU1L,GACvBumI,EAAa3oI,WAAa,IAAIuyG,EAAAA,EAAYnwG,EAC9C,GACJ,CACAukB,KAAKwiH,OAASR,EACdhiH,KAAKwiH,OAAOz3E,SAAS/qC,KAAKvf,UACtB81H,GACAv2G,KAAKqQ,OAAO8rG,aAAaA,aAAasG,qBAE9C,EACAlB,EAAeliH,UAAUiS,MAAQ,SAAUrjB,GACZ,KAAvBA,EAAKy0H,gBAAyB/0G,EAAAA,EAAAA,IAAkB1f,EAAKy0H,iBACtC9/G,SAAS2P,cAAc,UAAYtkB,EAAKmxE,OAAOlzD,KAAK2vB,cAAc,GACxEt+C,MAAQ0Q,EAAKy0H,cAE9B,EACAnB,EAAeliH,UAAUsjH,KAAO,SAAU3/H,EAASo8E,EAAQwjD,EAAYC,GACnE,IAAIC,EAAWlgH,SAAS2P,cAAc,UAAY6sD,EAAOlzD,KAAK2vB,cAAc,GACxEjJ,EAAAA,GAAQY,WACRsvF,EAAS5b,YACT4b,EAAS38C,YAEb,IAAIuyB,EAAcoqB,EAASvlI,QACvBowB,EAAAA,EAAAA,IAAkB+qF,IAAgC,KAAhBA,KAClCA,EAAc,MAElBmqB,EAAUE,eAAe3jD,EAAOx9E,MAAOghI,EAAYlqB,EAAa,MAAO14F,KAAKqQ,OAAOlnB,eAAe44H,sBACtG,EACAR,EAAeliH,UAAUy5E,UAAY,SAAU7qF,IAC3C+0H,EAAAA,EAAAA,IAAqB/0H,EAAM+R,KAAKm9G,UACpC,EACAoE,EAAeliH,UAAUoS,MAAQ,SAAU+wG,EAAQv0H,GAC/C,OAAO,WACHu0H,EAAO/V,WAAax+G,EAAKg1H,gBAAgB9E,eAC7C,CACJ,EACAoD,EAAeliH,UAAUgjH,eAAiB,SAAUG,GAChD,OAAO,SAAU/mI,GACbA,EAAE2D,OAAS3D,EAAE2D,OAAOjB,QAAO,SAAUmvB,EAAKxmB,EAAO0f,GAC7C,OAAOA,EAAI1mB,KAAI,SAAUojI,GACrB,OAAQ91G,EAAAA,EAAAA,IAASo1G,EAAO3/H,OAAOtF,MAAO2lI,EAC1C,IAAG5sH,SAAQ8W,EAAAA,EAAAA,IAAUo1G,EAAO3/H,OAAOtF,MAAQ+vB,MAAUxmB,CACzD,GACJ,CACJ,EACAy6H,EAAeliH,UAAUqoB,QAAU,WAC1B1nB,KAAKwiH,SAAUxiH,KAAKwiH,OAAO5nF,cAGhC56B,KAAKwiH,OAAO1+G,oBAAoB+5G,EAAAA,GAAgB79G,KAAKmiH,SACrDniH,KAAKwiH,OAAO1+G,oBAAoB+5G,EAAAA,GAAkB79G,KAAKsiH,QACvDtiH,KAAKwiH,OAAO1+G,oBAAoBuvB,EAAAA,IAAuBrzB,KAAKoiH,YAC5DpiH,KAAKwiH,OAAO96F,UACZ1nB,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAwBrzB,KAAK0nB,SAC7C1nB,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAgBrzB,KAAK0nB,SACzC,EACO65F,CACX,CA5IoC,aCJhC4B,EAAgC,WAChC,SAASA,EAAe9yG,EAAQyiG,EAAgB3pH,GAC5C6W,KAAK7W,eAAiBA,EACtB6W,KAAKqQ,OAASA,EACdrQ,KAAK8yG,eAAiBA,EAClB9yG,KAAKqQ,SACLrQ,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAwBrzB,KAAK0nB,QAAS1nB,MACrDA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAgBrzB,KAAK0nB,QAAS1nB,MAErD,CAwCA,OAvCAmjH,EAAe9jH,UAAU+jH,gBAAkB,SAAUn1H,GACjD,GAAqB,KAAjBA,EAAK+rD,SAAmC,IAAjB/rD,EAAK+rD,QAAe,CAC3C,IAAItK,EAAM9sC,SAASqoD,YAAY,cAC/Bvb,EAAIwb,UAAU,UAAU,GAAO,GAE/BlrD,KAAKmrD,cAAczb,EACvB,CACJ,EACAyzE,EAAe9jH,UAAUa,OAAS,SAAUjS,GACxC+R,KAAKvf,SAAWuf,KAAKqQ,OAAOO,cAAc,QAAS,CAAE31B,UAAW,iBAAkB2J,GAAI,YAAcqJ,EAAKmxE,OAAOlzD,MAChHje,EAAKkwC,OAAOhtB,YAAYnR,KAAKvf,UAC7Buf,KAAKqjH,cAAgB,IAAI9pI,EAAAA,GAAeo1B,EAAAA,EAAAA,IAAO,CAC3Cn1B,OAAwC,kBAAxByU,EAAKmxE,OAAO5lF,SAAwBg0B,EAAAA,EAAAA,IAAYvf,EAAKmxE,OAAO5lF,QAAUyU,EAAKmxE,OAAO5lF,OAC9FyU,EAAKmxE,OAAO5lF,OAAOA,OACvBgwC,OAAQxpB,KAAKqQ,OAAOmZ,OACpBrpC,SAAU6f,KAAKqQ,OAAOlwB,SAAW,kBAAyB6f,KAAKqQ,OAAOlwB,SAAW,iBACjFuhF,YAAazzE,EAAKg0H,aAAahmE,YAAY,cAC3CtR,UAAW3qC,KAAKqQ,OAAOs6B,WACxB18C,EAAKmxE,OAAOjhF,OAAOmqB,SACtBtI,KAAKqjH,cAAct4E,SAAS/qC,KAAKvf,SACrC,EACA0iI,EAAe9jH,UAAUiS,MAAQ,SAAUrjB,GACvC,IAAIq1H,EAAc1gH,SAAS2P,cAAc,aAAetkB,EAAKmxE,OAAOlzD,KAAK2vB,cAAc,GACvFynF,EAAYtgI,QAAQ6gB,iBAAiB,UAAW7D,KAAKojH,iBACrDE,EAAY/lI,MAAQ0Q,EAAKy0H,aAC7B,EACAS,EAAe9jH,UAAUsjH,KAAO,SAAU3/H,EAASo8E,EAAQwjD,EAAYC,GACnE,IACInqB,EADc91F,SAAS2P,cAAc,aAAe6sD,EAAOlzD,KAAK2vB,cAAc,GACpDt+C,MAC9BslI,EAAUE,eAAe3jD,EAAOx9E,MAAOghI,EAAYlqB,EAAa,OAAO,EAC3E,EACAyqB,EAAe9jH,UAAUqoB,QAAU,WAC1B1nB,KAAKqjH,gBAAiBrjH,KAAKqjH,cAAczoF,cAG9C56B,KAAKqjH,cAAc37F,UACnB1nB,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAwBrzB,KAAK0nB,SAC7C1nB,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAgBrzB,KAAK0nB,SACzC,EACOy7F,CACX,CAlDoC,GCGhCI,EAAiC,WACjC,SAASA,EAAgBlzG,EAAQyiG,EAAgB3pH,GAC7C6W,KAAKqQ,OAASA,EACdrQ,KAAK8yG,eAAiBA,EACtB9yG,KAAK7W,eAAiBA,EAClB6W,KAAKqQ,SACLrQ,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAwBrzB,KAAK0nB,QAAS1nB,MACrDA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAgBrzB,KAAK0nB,QAAS1nB,MAErD,CAqDA,OApDAujH,EAAgBlkH,UAAUa,OAAS,SAAUjS,GACzC,IAAIsoH,EAAkBtoH,EAAKmxE,OAAOm3C,kBAC9Bl9H,EAAak9H,EAAkBtoH,EAAKmxE,OAAO/lF,WAAa2mB,KAAKqQ,OAAOh3B,WACpEwJ,EAAS0zH,EAAkBtoH,EAAKmxE,OAAO43C,gBAAkB/oH,EAAKmxE,OAAOx9E,MACzEoe,KAAKsS,KAAOtS,KAAKqQ,OAAOO,cAAc,QAAS,CAAE31B,UAAW,iBAAkB2J,GAAI,WAAaqJ,EAAKmxE,OAAOlzD,MAC3Gje,EAAKkwC,OAAOhtB,YAAYnR,KAAKsS,MAC7BtS,KAAKm9G,UAAYlvH,EAAKkvH,UACtBn9G,KAAKwjH,aAAe,IAAIpqI,EAAAA,GAAau1B,EAAAA,EAAAA,IAAO,CACxCt1B,WAAYA,aAAsBuyG,EAAAA,EAC9BvyG,EAAa,IAAIuyG,EAAAA,EAAYvyG,GACjC+iG,OAAO,IAAI4B,EAAAA,GAAQtlD,OAAO71C,GAC1BA,OAAQ,CAAE9K,KAAM8K,EAAQtF,MAAOsF,GAC/B6+E,YAAazzE,EAAKg0H,aAAahmE,YAAY,eAC3C97D,SAAU6f,KAAKqQ,OAAOlwB,SAAW,kBAAyB6f,KAAKqQ,OAAOlwB,SAAW,iBACjFqpC,OAAQxpB,KAAKqQ,OAAOmZ,OACpBmhB,UAAW3qC,KAAKqQ,OAAOs6B,WACxB18C,EAAKmxE,OAAOjhF,OAAOmqB,SACtBtI,KAAK48G,OAAS58G,KAAK84E,UAAU95E,KAAKgB,MAClCA,KAAKyjH,WAAazjH,KAAKqiH,eAAex/H,GACtCmd,KAAKwjH,aAAa3/G,iBAAiBg6G,EAAAA,GAAkB79G,KAAK48G,QAC1D58G,KAAKwjH,aAAa3/G,iBAAiBwvB,EAAAA,IAAuBrzB,KAAKyjH,YAC/DzjH,KAAKwjH,aAAaz4E,SAAS/qC,KAAKsS,KACpC,EACAixG,EAAgBlkH,UAAUiS,MAAQ,SAAUrjB,GACxC,IAAIy1H,EAAW9gH,SAAS2P,cAAc,YAActkB,EAAKmxE,OAAOlzD,KAAK2vB,cAAc,IAC9EluB,EAAAA,EAAAA,IAAkB1f,EAAKy0H,iBACxBgB,EAASnmI,MAAQ0Q,EAAKy0H,cAE9B,EACAa,EAAgBlkH,UAAUsjH,KAAO,SAAU3/H,EAASo8E,EAAQwjD,EAAYC,GACpE,IACInqB,EADW91F,SAAS2P,cAAc,YAAc6sD,EAAOlzD,KAAK2vB,cAAc,GACnDt+C,MAC3BslI,EAAUE,eAAe3jD,EAAOx9E,MAAOghI,EAAYlqB,EAAa,OAAO,EAC3E,EACA6qB,EAAgBlkH,UAAUy5E,UAAY,SAAU7qF,IAC5C+0H,EAAAA,EAAAA,IAAqB/0H,EAAM+R,KAAKm9G,UACpC,EACAoG,EAAgBlkH,UAAUgjH,eAAiB,SAAUx/H,GACjD,OAAO,SAAUpH,GACbA,EAAE2D,OAASk+F,EAAAA,EAASgT,SAAS70G,EAAE2D,OAAQyD,GAAQ,EACnD,CACJ,EACA0gI,EAAgBlkH,UAAUqoB,QAAU,WAC3B1nB,KAAKwjH,eAAgBxjH,KAAKwjH,aAAa5oF,cAG5C56B,KAAKwjH,aAAa1/G,oBAAoB+5G,EAAAA,GAAkB79G,KAAK48G,QAC7D58G,KAAKwjH,aAAa1/G,oBAAoBuvB,EAAAA,IAAuBrzB,KAAKyjH,YAClEzjH,KAAKwjH,aAAa97F,UAClB1nB,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAwBrzB,KAAK0nB,SAC7C1nB,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAgBrzB,KAAK0nB,SACzC,EACO67F,CACX,CA/DqC,uBCDjCI,EAA8B,WAC9B,SAASA,EAAatzG,EAAQyiG,EAAgB3pH,GAC1C6W,KAAK4jH,OAAS5jH,KAAK84E,UAAU95E,KAAKgB,MAClCA,KAAKqQ,OAASA,EACdrQ,KAAK6jH,QAAU/Q,EACf9yG,KAAK8jH,aAAe36H,EAChB6W,KAAKqQ,SACLrQ,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAwBrzB,KAAK0nB,QAAS1nB,MACrDA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAgBrzB,KAAK0nB,QAAS1nB,MAErD,CAmDA,OAlDA2jH,EAAatkH,UAAUa,OAAS,SAAUjS,GACtC,IAAIzU,GAASuqI,EAAAA,EAAAA,IAAoB91H,EAAKmxE,OAAO5lF,OAAQyU,EAAKmxE,OAAO9kF,MACjE0lB,KAAKm9G,UAAYlvH,EAAKkvH,UACtBn9G,KAAKgkH,UAAYhkH,KAAKqQ,OAAOO,cAAc,QAAS,CAAE31B,UAAW,iBAAkB2J,GAAI,UAAYqJ,EAAKmxE,OAAOlzD,MAC/Gje,EAAKkwC,OAAOhtB,YAAYnR,KAAKgkH,WACJ,SAArB/1H,EAAKmxE,OAAO9kF,MAAwC,aAArB2T,EAAKmxE,OAAO9kF,KAC3C0lB,KAAKikH,cAAgB,IAAIhrI,EAAAA,GAAW01B,EAAAA,EAAAA,IAAO,CACvCn1B,OAAQA,EACR2G,SAAU6f,KAAKqQ,OAAOlwB,SAAW,kBAAyB6f,KAAKqQ,OAAOlwB,SAAW,iBACjFuhF,YAAazzE,EAAKg0H,aAAahmE,YAAY,cAC3ClI,MAAO,OACPvqB,OAAQxpB,KAAKqQ,OAAOmZ,OACpBmhB,UAAW3qC,KAAKqQ,OAAOs6B,WACxB18C,EAAKmxE,OAAOjhF,OAAOmqB,SAEI,aAArBra,EAAKmxE,OAAO9kF,OACjB0lB,KAAKikH,cAAgB,IAAIrtC,EAAAA,GAAejoE,EAAAA,EAAAA,IAAO,CAC3Cn1B,OAAQA,EACR2G,SAAU6f,KAAKqQ,OAAOlwB,SAAW,kBAAyB6f,KAAKqQ,OAAOlwB,SAAW,iBACjFuhF,YAAazzE,EAAKg0H,aAAahmE,YAAY,cAC3ClI,MAAO,OACPvqB,OAAQxpB,KAAKqQ,OAAOmZ,OACpBmhB,UAAW3qC,KAAKqQ,OAAOs6B,WACxB18C,EAAKmxE,OAAOjhF,OAAOmqB,UAE1BtI,KAAKikH,cAAcpgH,iBAAiBg6G,EAAAA,GAAkB79G,KAAK4jH,QAC3D5jH,KAAKikH,cAAcl5E,SAAS/qC,KAAKgkH,UACrC,EACAL,EAAatkH,UAAUiS,MAAQ,SAAUrjB,GACrB2U,SAAS2P,cAAc,WAAatkB,EAAKmxE,OAAOlzD,KAAK2vB,cAAc,GACzEt+C,OAASowB,EAAAA,EAAAA,IAAkB1f,EAAKy0H,eAAgD,KAA/B,IAAIpjI,KAAK2O,EAAKy0H,cAC7E,EACAiB,EAAatkH,UAAUsjH,KAAO,SAAU3/H,EAASo8E,EAAQwjD,EAAYC,GACjE,IACInqB,EADY91F,SAAS2P,cAAc,WAAa6sD,EAAOlzD,KAAK2vB,cAAc,GAClDt+C,MAC5Bm7G,GAAc/qF,EAAAA,EAAAA,IAAkB+qF,GAAe,KAAOA,EACtDmqB,EAAUE,eAAe3jD,EAAOx9E,MAAOghI,EAAYlqB,EAAa,OAAO,EAC3E,EACAirB,EAAatkH,UAAUy5E,UAAY,SAAU7qF,GACzCA,EAAKs6E,MAAMvlF,QAAQu0C,MAAMu9B,QAAU90D,KAAKm9G,UAAUroD,OAAS,GAAG15E,UAClE,EACAuoI,EAAatkH,UAAUqoB,QAAU,WAC7B1nB,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAwBrzB,KAAK0nB,SAC7C1nB,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAgBrzB,KAAK0nB,UACjC/Z,EAAAA,EAAAA,IAAkB3N,KAAKikH,gBAAkBjkH,KAAKikH,cAAcrpF,cAGhE56B,KAAKikH,cAAcngH,oBAAoB+5G,EAAAA,GAAkB79G,KAAK4jH,QAC9D5jH,KAAKikH,cAAcv8F,UACvB,EACOi8F,CACX,CA9DkC,GCM9BO,EAAoC,WACpC,SAASA,EAAmB7zG,EAAQlnB,EAAgB2pH,EAAgB6J,EAAqBwH,GACrFnkH,KAAKokH,cAAe,EACpBpkH,KAAKyvE,UAAY,QACjBzvE,KAAKqkH,aAAc,EACnBrkH,KAAKskH,SAAW,CACZ,OAAU/C,EAAgB,OAAU4B,EAAgB,KAAQQ,EAAc,SAAYA,EAAc,QAAWJ,EAAiB,SAAYI,GAEhJ3jH,KAAKqQ,OAASA,EACdrQ,KAAK7W,eAAiBA,EACtB6W,KAAK8yG,eAAiBA,EACtB9yG,KAAK88G,sBAAwBH,EAC7B38G,KAAK6iH,UAAYsB,EACjBnkH,KAAKukH,SAAW,IAAI7H,EAAa18G,KAAKqQ,OAAQrQ,KAAK88G,sBAAuB98G,KAAK8yG,gBAC/E9yG,KAAK+hE,KAAO/hE,KAAK8yG,eAAe0R,WAAW,gBAC3CxkH,KAAKykH,eAAiB,IAAI1M,EAAAA,EAAmB1nG,EACjD,CA+UA,OA9UA6zG,EAAmB7kH,UAAUqlH,kBAAoB,SAAUvO,GACvDn2G,KAAK2kH,cAAcxO,EACvB,EACA+N,EAAmB7kH,UAAUulH,kBAAoB,SAAU32H,GACvD+R,KAAK6kH,eAAe52H,EAAKkoH,IAC7B,EACA+N,EAAmB7kH,UAAUylH,WAAa,SAAU72H,GAChD+R,KAAKU,QAAUzS,EACf+R,KAAKm2G,IAAMn2G,KAAKqQ,OAAOslG,iBAAiB1nH,EAAKrM,SACzC+rB,EAAAA,EAAAA,IAAkB3N,KAAKm2G,IAAIh4H,UAAYwvB,EAAAA,EAAAA,IAAkB3N,KAAKm2G,IAAIh4H,OAAO7D,OAAkC,SAAzB0lB,KAAKm2G,IAAIh4H,OAAO7D,OAClG0lB,KAAK+kH,iBAAiB92H,EAAKkwC,OAAQn+B,KAAKm2G,IAEhD,EACA+N,EAAmB7kH,UAAU2lH,YAAc,SAAU7mF,GACjD,GAAKn+B,KAAKk9G,OAAV,EAGIl9G,KAAKqQ,OAAOyrF,SAAW97F,KAAKqQ,OAAOu4C,SACnCq8D,EAAAA,EAAAA,IAAuBjlH,KAAKqQ,OAAQ,CAAC,mBAEzC,IAAIiC,EAAO1P,SAASo5B,eAAeh8B,KAAKk9G,OAAOl6H,QAAQ4B,IACvD,GAAIob,KAAKk9G,SAAWl9G,KAAKk9G,OAAOtiF,aAAetoB,EAAM,CACjD,IAAI0U,EAAW,CAAEz/B,QAAQ,EAAO63E,OAAQp/D,KAAKm2G,IAAKh4E,OAAQA,EAAQn7C,QAASsvB,GAE3E,GADAtS,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAwBrM,GACvCA,EAASz/B,OACT,OAEJyY,KAAKokH,cAAe,EAChBpkH,KAAKqkH,cACLrkH,KAAKykH,eAAev9D,eACpBlnD,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAyBrzB,KAAKqiH,gBAC9CriH,KAAKqkH,aAAc,GAEvBrkH,KAAKk9G,OAAOx1F,WACZiO,EAAAA,EAAAA,IAAOrjB,EACX,CACAtS,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAA0B,CAAC,EApB9C,CAqBJ,EACA6wF,EAAmB7kH,UAAU0lH,iBAAmB,SAAU5mF,EAAQihC,GAC9D,IAAInxE,EAAO,CACP0tF,YAAatoD,EAAAA,IACbwiF,WAAYz2C,EAAOx9E,MAAOsjI,WAAY9lD,EAAO9kF,MAGjD2T,EAAqB,YAAI+R,KACzBA,KAAKqQ,OAAOylB,QAAQzC,EAAAA,IAAoBplC,GACxC,IAAIk3H,EAAUnlH,KAAKqQ,OAAOO,cAAc,MAAO,CAAE31B,UAAW,mBAAoB2J,GAAIw6E,EAAOlzD,IAAM,aACjGlM,KAAKolH,OAASplH,KAAKqQ,OAAOO,cAAc,MAAO,CAAE31B,UAAW,WAAY2J,GAAIw6E,EAAOlzD,IAAM,YACzFlM,KAAKolH,OAAO9uF,aAAa,aAAct2B,KAAK+hE,KAAK9lB,YAAY,yBACzDj8C,KAAKqQ,OAAO0tG,kBACQn7G,SAAS2P,cAAc,oDAC7BpB,YAAYnR,KAAKolH,QAG/BplH,KAAKqQ,OAAOrtB,QAAQmuB,YAAYnR,KAAKolH,QAEzCplH,KAAKk9G,OAAS,IAAImI,EAAAA,GAAO,CACrBC,eAAe,EACfC,eAAe,EACf/7F,OAAQxpB,KAAKqQ,OAAOmZ,OACpBp7B,SAAS,EACTu8C,UAAW3qC,KAAKqQ,OAAOs6B,UACvB66E,QAASxlH,KAAKylH,cAAczmH,KAAKgB,KAAMm+B,EAAQihC,GAC/CjtB,SAAUnyC,KAAKqQ,OAAOrtB,QAAQ4zC,UAAUM,SAAS,YAAc,CAAE2vC,EAAG,SAAUC,EAAG,UAAa,CAAED,EAAG,GAAIC,EAAG,IAC1G3oC,OAAQn+B,KAAKqQ,OAAOrtB,QAAQ4zC,UAAUM,SAAS,YAAct0B,SAASuuB,KAAOnxB,KAAKqQ,OAAOrtB,QACzFi+E,QAAS,CAAC,CACF7Z,MAAOpnD,KAAK6kH,eAAe7lH,KAAKgB,KAAMo/D,GACtCsmD,YAAa,CACTn/D,QAASvmD,KAAK+hE,KAAK9lB,YAAY,gBAAiBjjD,WAAW,EAC3D7Y,SAAU6f,KAAKqQ,OAAOlwB,SAAW,kBAAyB6f,KAAKqQ,OAAOlwB,SAAW,mBAGzF,CACIinE,MAAOpnD,KAAK2kH,cAAc3lH,KAAKgB,KAAMo/D,GACrCsmD,YAAa,CAAEn/D,QAASvmD,KAAK+hE,KAAK9lB,YAAY,eAC1C97D,SAAU6f,KAAKqQ,OAAOlwB,SAAW,sBAA6B6f,KAAKqQ,OAAOlwB,SAAW,wBAEjGomE,QAAS4+D,EACTpxE,QAASpmC,EAAAA,EAAAA,KAAkBg4G,EAAAA,EAAAA,IAAaxnF,EAAQ,cAAiBn+B,KAAKqQ,OAAOrtB,QAAQ4zC,UAAUM,SAAS,YAAc,IAAM,IAC5H0uF,kBAAmB,CAAE9zD,OAAQ,QAC7B3xE,SAAU6f,KAAKqQ,OAAOlwB,SAAW,kBAAyB6f,KAAKqQ,OAAOlwB,SAAW,mBAGrF6f,KAAKk9G,OAA4B,kBAAI,EACrCl9G,KAAK6lH,yBACL7lH,KAAKk9G,OAAOnyE,SAAS/qC,KAAKolH,OAC9B,EACAlB,EAAmB7kH,UAAUwmH,uBAAyB,WACvC7lH,KAAKqQ,OACP0tG,mBACL/9G,KAAKk9G,OAAO/qE,SAAW,CAAE00B,EAAG,GAAIC,EAAG,IACnC9mE,KAAKk9G,OAAO/+E,OAASv7B,SAAS2P,cAAc,oDAC5CvS,KAAKk9G,OAAOnpE,MAAQ,OACpB/zC,KAAKk9G,OAAO4I,SAAU,EACtB9lH,KAAKk9G,OAAOj8C,QAAU,CAAC,CAAC,GAEhC,EACAijD,EAAmB7kH,UAAUomH,cAAgB,SAAUtnF,EAAQihC,IACtDxsC,EAAAA,GAAQY,UAAY2K,IACrB4nF,EAAAA,EAAAA,IAAqB5nF,EAAQn+B,KAAKk9G,QAEtCl9G,KAAKgmH,2BAA6B5mD,EAClCp/D,KAAKimH,eAAe9nF,EAAQihC,GACtBA,EAAOm3C,qBAAwB5oG,EAAAA,EAAAA,IAAkByxD,EAAOjhF,UAAYwvB,EAAAA,EAAAA,IAAkByxD,EAAOjhF,OAAO+nI,MAClGv4G,EAAAA,EAAAA,IAAkByxD,EAAOjhF,OAAO+nI,GAAGhmH,UACvCF,KAAKyiH,qBAEb,EAOAyB,EAAmB7kH,UAAUojH,oBAAsB,WAC/C,IAAIrjD,EAASp/D,KAAKgmH,2BACd5mD,EAAO+mD,gBACPnmH,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAA4B,CAAC,GAEhDrzB,KAAKqQ,OAAO0tG,kBACZ/9G,KAAKk9G,OAAOl6H,QAAQu0C,MAAMmM,KAAO,MACjC1jC,KAAKk9G,OAAOl6H,QAAQu0C,MAAMk4C,UAAY,QAGtCzvE,KAAKk9G,OAAOl6H,QAAQu0C,MAAMk4C,UAAYzvE,KAAKyvE,UAE/CzvE,KAAKk9G,OAAOh4C,OACZ,IAAIy4C,EAAY39G,KAAKk9G,OAAOl6H,QAAQuvB,cAAc,kBAAkBA,cAAc,SAC9EqrG,EAAW59G,KAAKk9G,OAAOl6H,QAAQuvB,cAAc,sBAAsBA,cAAc,SAC7D,UAApBorG,EAAUpgI,OAAyC,cAApBogI,EAAUpgI,OACrB,SAApBogI,EAAUpgI,OAAwC,aAApBogI,EAAUpgI,MACxCqgI,EAAwB,cAAE,GAAY,SAAI,GAEpCjwG,EAAAA,EAAAA,IAAkBiwG,GAAYA,EAASx8E,aAAa,eAC1Dw8E,EAAwB,cAAE,GAAY,SAAI,GAEzCx+C,EAAOu7C,gBACR36G,KAAKomH,YAAYhnD,EAAQp/D,KAAKk9G,OAAOl6H,QAAQuvB,cAAc,IAAM6sD,EAAOlzD,IAAM,YAElF,IAAIje,EAAO,CACP0tF,YAAatoD,EAAAA,IACbwiF,WAAYz2C,EAAOx9E,MAAOsjI,WAAY9lD,EAAO9kF,MAGjD2T,EAAqB,YAAI+R,KACzBA,KAAKokH,cAAe,EACfpkH,KAAKqkH,aACNrkH,KAAKqQ,OAAOylB,QAAQzC,EAAAA,IAAuBplC,EAEnD,EACAi2H,EAAmB7kH,UAAU4mH,eAAiB,SAAU9nF,EAAQg4E,GAC5D,IAAI8G,EAAgBj9G,KAAKk9G,OAAOl6H,QAAQuvB,cAAc,qBACtDvS,KAAKqQ,OAAOulG,IAAI,sBAAuB,CAAEx2C,OAAQ+2C,IACjDn2G,KAAKg9G,iBAAiBC,EAAe9+E,EAAQg4E,GAC7Cn2G,KAAKqmH,gBAAgBpJ,EAAe9+E,EAAQg4E,EAChD,EACA+N,EAAmB7kH,UAAU29G,iBAAmB,SAAUC,EAAe9+E,EAAQihC,GAC7Ep/D,KAAKukH,SAASvH,iBAAiBC,EAAe9+E,EAAQihC,EAAQp/D,KAAKk9G,OAAQl9G,KAAK6iH,UAAUyD,aAC9F,EACApC,EAAmB7kH,UAAUgnH,gBAAkB,SAAUpJ,EAAe9+E,EAAQihC,GAC5E,IAAImnD,EAAWvmH,KAAKqQ,OAAOO,cAAc,MAAO,CAAE31B,UAAW,sBACzDurI,EAAOxmH,KAAK6iH,UAChB5F,EAAc9rG,YAAYo1G,GAC1B,IAAIE,EAAqB,IAAIzmH,KAAKskH,SAASllD,EAAO9kF,MAAM0lB,KAAKqQ,OAAQrQ,KAAK8yG,eAAgB9yG,KAAKqQ,OAAOlnB,gBACtG,GAAIi2E,EAAOu7C,eAAgB,CACvB,IAAIC,EAAW,CAAC,EAEhBA,EAASx7C,EAAOx9E,OAASg5H,EAA2B,MAAI4L,EAAK/nI,OAAO2gF,EAAOx9E,OACvEw9E,EAAO43C,kBACP4D,EAASx7C,EAAO43C,iBAAmBwP,EAAK/nI,OAAO2gF,EAAOx9E,OACtDg5H,EAASx7C,EAAOx9E,YAAS1G,GAG7B0/H,EAAiB,OAAIx7C,EACrB,IAAIy7C,EAAkB76G,KAAKqQ,OAAOyrF,SAA8C,kBAA3B18B,EAAOu7C,eACxDG,EAAe96G,KAAKqQ,OAAO0qG,eAAiB/6G,KAAKqQ,OAAO0qG,cAAcC,eACtEh7G,KAAKqQ,OAAO0qG,cAAcC,cAAclf,QACxCmf,EAASj7G,KAAKqQ,OAAOrtB,QAAQ4B,GAAKw6E,EAAOlzD,IAAM,iBACnD,GAAI2uG,GAAmBC,EACnB17C,EAAO87C,mBAAP97C,CAA2Bw7C,EAAU56G,KAAKqQ,OAAQ,iBAAkB4qG,EAAQ,KAAM,KAAMsL,GACxFvmH,KAAKqQ,OAAO8qG,sBAEX,CACD,IAAIuL,EAActnD,EAAO87C,mBAAP97C,CAA2Bw7C,EAAU56G,KAAKqQ,OAAQ,iBAAkB4qG,IACtFG,EAAAA,EAAAA,IAAemL,EAAUG,EAC7B,CACI1mH,KAAKqkH,cACLrkH,KAAKykH,eAAekC,KAAO3mH,KAAKk9G,OAAOl6H,QAAQuvB,cAAc,4BAC7DvS,KAAKykH,eAAelrE,aACpBv5C,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAyBrzB,KAAKqiH,eAAgBriH,MAC7DA,KAAKykH,eAAemC,aAE5B,MAEI,IAAKj5G,EAAAA,EAAAA,IAAkByxD,EAAOjhF,UAAYwvB,EAAAA,EAAAA,IAAkByxD,EAAOjhF,OAAO+nI,MAClEv4G,EAAAA,EAAAA,IAAkByxD,EAAOjhF,OAAO+nI,GAAGhmH,QAWvCumH,EAAmBvmH,OAAO,CACtBk/D,OAAQA,EAAQjhC,OAAQooF,EACxBtD,gBAAiBjjH,KAAKukH,SAAUtC,aAAcjiH,KAAK+hE,KAAMo7C,UAAWn9G,KAAKk9G,aAb7B,CAChD,IAAIn+F,EAAOqgD,EAAOjhF,OAAO+nI,GAAGhmH,OACR,kBAAT6e,IACPA,GAAO3R,EAAAA,EAAAA,IAAS2R,EAAMz+B,SAE1By+B,EAAK,CACDqgD,OAAQA,EAAQjhC,OAAQooF,EACxBtD,gBAAiBjjH,KAAKukH,SAAUpH,UAAWn9G,KAAKk9G,QAExD,CAQR,EACAgH,EAAmB7kH,UAAU+mH,YAAc,SAAUjQ,EAAK0Q,GAKtD,IAJA,IAAIC,EACA3oF,EAAS0oF,EAAct0G,cAAc,sBACrCk0G,EAAqB,IAAIzmH,KAAKskH,SAASnO,EAAI77H,MAAM0lB,KAAKqQ,OAAQrQ,KAAK8yG,eAAgB9yG,KAAKqQ,OAAOlnB,gBAE1FolB,EAAK,EAAGmpG,EADH13G,KAAK7W,eAAeirH,QACI7lG,EAAKmpG,EAAUz/H,OAAQs2B,IAAM,CAC/D,IAAI6wD,EAASs4C,EAAUnpG,GACnB4nG,EAAIjqG,MAAQkzD,EAAOlzD,MACnB46G,EAAU1nD,EAAO7hF,MAEzB,CACA,IAAKowB,EAAAA,EAAAA,IAAkBwoG,EAAIh4H,UAAYwvB,EAAAA,EAAAA,IAAkBwoG,EAAIh4H,OAAO+nI,MAC5Dv4G,EAAAA,EAAAA,IAAkBwoG,EAAIh4H,OAAO+nI,GAAG50G,OAQpCm1G,EAAmBn1G,MAAM,CAAE8tD,OAAQ+2C,EAAKh4E,OAAQA,EAAQ9tB,OAAQrQ,KAAKqQ,OAAQqyG,cAAeoE,QARhD,CAC5C,IAAI/nG,EAAOo3F,EAAIh4H,OAAO+nI,GAAG50G,MACL,kBAATyN,IACPA,GAAO3R,EAAAA,EAAAA,IAAS2R,EAAMz+B,SAE1By+B,EAAK,CAAEqgD,OAAQ+2C,EAAKh4E,OAAQA,EAAQ9tB,OAAQrQ,KAAKqQ,OAAQqyG,cAAeoE,GAC5E,CAIJ,EACA5C,EAAmB7kH,UAAUwlH,eAAiB,SAAU1O,GACpD,IACI4Q,EAAO/mH,KAAKk9G,OAAOl6H,QAAQuvB,cAAc,4BACzCy0G,EAAchnH,KAAKukH,SAASpG,gBAC5BsI,EAAqB,IAAIzmH,KAAKskH,SAASnO,EAAI77H,MAAM0lB,KAAKqQ,OAAQrQ,KAAK8yG,eAAgB9yG,KAAKqQ,OAAOlnB,gBACnG,GAAIgtH,EAAIwE,eAAgB,CACpB,IAAI33H,EAAUgd,KAAKolH,OAAO7yG,cAAc,sBACpC00G,OAAY,EAChB,GAAIjkI,EAAQpL,SAAS,GAAG2F,MACpB0pI,EAAYjkI,EAAQpL,SAAS,GAAG2F,WAGhC,IAAKowB,EAAAA,EAAAA,IAAkB3qB,EAAQpL,SAAS,GAAGikD,eAKtC,CACD,IAAIqrF,EAAWlkI,EAAQuvB,cAAc,eAChC5E,EAAAA,EAAAA,IAAkBu5G,KACnBD,EAAyB,YAAb9Q,EAAI77H,KAAqB4sI,EAASvrI,SACzCgyB,EAAAA,EAAAA,IAAkBu5G,EAASrrF,eAExBqrF,EAAS3pI,MADT2pI,EAASrrF,cAAc,GAAGt+C,MAG1C,MAXI0pI,GAAajnH,KAAKqQ,OAAOo7C,UAAYzoE,EAAQpL,SAAS,GAClDoL,EAAQuvB,cAAc,UAAUspB,cAAc,GAAGt+C,MAY7DyiB,KAAK6iH,UAAUE,eAAe5M,EAAIv0H,MAAOolI,EAAaC,EAC1D,MAEI,IAAKt5G,EAAAA,EAAAA,IAAkBwoG,EAAIh4H,UACtBwvB,EAAAA,EAAAA,IAAkBwoG,EAAIh4H,OAAO+nI,MAAQv4G,EAAAA,EAAAA,IAAkBwoG,EAAIh4H,OAAO+nI,GAAGvD,MAStE8D,EAAmB9D,KAAKoE,EAAM5Q,EAAK6Q,EAAahnH,KAAK6iH,eATwB,CAC7E,IAAI9jG,EAAOo3F,EAAIh4H,OAAO+nI,GAAGvD,KACL,kBAAT5jG,IACPA,GAAO3R,EAAAA,EAAAA,IAAS2R,EAAMz+B,SAGhBy+B,EAAK,CAAE/7B,QAAS+jI,EAAM3nD,OAAQ+2C,EAAKv1B,SAAUomC,EAAa7C,QAASnkH,KAAK6iH,WACtF,CAKJ7iH,KAAKglH,cACDhlH,KAAKqQ,OAAO81G,gBACZnmH,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAmC,CAAC,EAE/D,EACA6wF,EAAmB7kH,UAAU8nH,sBAAwB,WACjDnnH,KAAKglH,aACT,EACAd,EAAmB7kH,UAAUslH,cAAgB,SAAUvlD,GACnDp/D,KAAK6iH,UAAUuE,0BAA0BhoD,EAAOx9E,OAChDoe,KAAKglH,cACL,IAAIqC,EAAYrnH,KAAKqQ,OAAO81G,gBAAkB/mD,EAAO+mD,eAAiB,gBAAkB,iBAEpFmB,EADMtnH,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,kBAAoB6sD,EAAOlzD,IAAM,MAAM+sC,cAClE1mC,cAAc80G,GAC3BC,GACAA,EAAO1wF,UAAUjB,OAAO,aAEhC,EACAuuF,EAAmB7kH,UAAUqoB,QAAU,WACnC1nB,KAAKglH,aACT,EAKAd,EAAmB7kH,UAAUkoH,gBAAkB,WAC3C,MAAO,CAAE3lI,MAAOoe,KAAKm2G,IAAIv0H,MAAOg/F,SAAU5gF,KAAKukH,SAASpG,gBAC5D,EACA+F,EAAmB7kH,UAAUmoH,mBAAqB,WAoB9C,OAnBAxnH,KAAKqkH,aAAc,EACnBrkH,KAAKykH,eAAejpF,YAAYx7B,KAAKU,SACrCV,KAAKykH,eAAegD,iBAAiBznH,KAAKU,SAC1CV,KAAKk9G,OAAOj8C,QAAU,CAAC,CACf7Z,MAAOpnD,KAAKykH,eAAeiD,SAAS1oH,KAAKgB,KAAKykH,gBAC9CiB,YAAa,CACTn/D,QAASvmD,KAAKykH,eAAekD,kBAAkB,gBAC/CxnI,SAAU,YAAa6Y,WAAW,IAG1C,CACIouD,MAAOpnD,KAAKykH,eAAeiD,SAAS1oH,KAAKgB,KAAKykH,gBAC9CiB,YAAa,CAAEvlI,SAAU,SAAUomE,QAASvmD,KAAKykH,eAAekD,kBAAkB,kBAE1F3nH,KAAKykH,eAAetH,UAAYn9G,KAAKk9G,OACrCl9G,KAAKykH,eAAemD,IAAM5nH,KAAKk9G,OAAOl6H,QACtCgd,KAAKykH,eAAemD,IAAIhxF,UAAUzB,IAAI,kBACtCn1B,KAAKykH,eAAemD,IAAIhxF,UAAUjB,OAAO,oBACzC31B,KAAKyvE,UAAY,QACVzvE,KAAKykH,eAAeoD,KAAKt2G,SACpC,EACA2yG,EAAmB7kH,UAAUgjH,eAAiB,SAAUp0H,GAChD+R,KAAKqkH,aACLrkH,KAAKqQ,OAAOylB,QAAQzC,EAAAA,IAAuBplC,EAEnD,EACOi2H,CACX,CAhWwC,GCTpC4D,EAAgC,WAUhC,SAASA,EAAez3G,EAAQlnB,EAAgB2pH,GAC5C9yG,KAAKqQ,OAASA,EACdrQ,KAAK+nH,cAAe,EACpB/nH,KAAKgoH,aAAe,IAAIjQ,EAAAA,EAAmB1nG,GAC3CrQ,KAAK6D,kBACT,CAoEA,OA7DAikH,EAAezoH,UAAUqoB,QAAU,WAC/B1nB,KAAK8D,sBACL9D,KAAKgoH,aAAahD,aACtB,EACA8C,EAAezoH,UAAUylH,WAAa,SAAUpkH,GAC5CV,KAAKgoH,aAAalD,WAAWpkH,GAC7BV,KAAKqQ,OAAOulG,IAAI,sBAAuB,CAAEx2C,OAAQ1+D,EAAQ0+D,QAC7D,EACA0oD,EAAezoH,UAAU2lH,YAAc,WACnChlH,KAAK0nB,UACD1nB,KAAK+nH,cACL/nH,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAqB,CAAC,EAEjD,EACAy0F,EAAezoH,UAAU8nH,sBAAwB,WAC7CnnH,KAAKgoH,aAAahD,aACtB,EAOA8C,EAAezoH,UAAUu8B,cAAgB,WACrC,MAAO,gBACX,EACAksF,EAAezoH,UAAU6iH,YAAc,SAAUj0H,GAC7C+R,KAAKqQ,OAAOylB,QAAQzC,EAAAA,IAAoBplC,EAC5C,EACA65H,EAAezoH,UAAUgjH,eAAiB,SAAUp0H,GAChD+R,KAAKqQ,OAAOylB,QAAQzC,EAAAA,IAAuBplC,EAC/C,EACA65H,EAAezoH,UAAU4oH,cAAgB,SAAUh6H,IAC3Ci6H,EAAAA,EAAAA,IAAgBloH,KAAKqQ,UACrBrQ,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAqBplC,GACxCA,EAAK1G,QAAS,EAEtB,EACAugI,EAAezoH,UAAUqlH,kBAAoB,SAAUvO,GACnDn2G,KAAKgoH,aAAaG,YAAYhS,EAClC,EACA2R,EAAezoH,UAAUulH,kBAAoB,WACzC5kH,KAAKgoH,aAAaI,iBAClBpoH,KAAKgoH,aAAahD,aACtB,EACA8C,EAAezoH,UAAUwE,iBAAmB,WACpC7D,KAAKqQ,OAAOuqB,cAGhB56B,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAsBrzB,KAAKkiH,YAAaliH,MACvDA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAyBrzB,KAAKqiH,eAAgBriH,MAC7DA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAoBrzB,KAAKioH,cAAejoH,MAC3D,EACA8nH,EAAezoH,UAAUyE,oBAAsB,WACvC9D,KAAKqQ,OAAOuqB,cAGhB56B,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAsBrzB,KAAKkiH,aAC3CliH,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAyBrzB,KAAKqiH,gBAC9CriH,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAoBrzB,KAAKioH,eAC7C,EACOH,CACX,CApFoC,kFCQ7B,SAASO,EAAaz3G,EAAeowD,EAAWza,EAAS+hE,EAAY39E,EAAW1H,GACnF,IAAIslF,EACAC,EACAC,EAAaznD,EAAU/nB,cAS3B,GARmB,YAAfqvE,GACAC,EAAkBtlF,GAAU+9B,EAAU99B,wBAAwB8Q,OAC9Dw0E,EAAgBjiE,EAAQrjB,wBAAwB8Q,SAGhDu0E,EAAkBvnD,EAAU99B,wBAAwB6Q,MACpDy0E,EAAgBjiE,EAAQrjB,wBAAwB6Q,OAEhDw0E,EAAkBC,EAClB,OAAOE,GAAgB93G,EAAeowD,EAAWza,EAAS+hE,EAAY39E,EAAW1H,GAEhF,GAAIwlF,EAAY,CACjB,IAAI10E,EAAQ00E,EAAWvlF,wBAAwB6Q,MAC/C,OAAIA,EAAQw0E,GAAkC,YAAfD,GAC3BE,EAAgBz0E,EAChBitB,EAAUzpC,MAAMoxF,SAAW50E,EAAQ,KAC5B20E,GAAgB93G,EAAeowD,EAAWza,EAAS+hE,EAAY39E,EAAW1H,IAE9EsjB,CACX,CAEI,OAAOA,CAEf,CAaA,SAASmiE,GAAgB93G,EAAeowD,EAAWza,EAAS+hE,EAAY39E,EAAW1H,GAC/E,IAAI2lF,EAAYh4G,EAAc,MAAO,CAAE31B,UAAW,UAAYqtI,IAoB9D,OAnBAtnD,EAAU7vD,YAAYy3G,GACtBA,EAAUz3G,YAAYo1C,GAClBtjB,GACA2lF,EAAUrxF,MAAMwf,SAAW,SAC3B6xE,EAAUrxF,MAAMyc,OAAS/Q,EAAS,OAGlC2lF,EAAUrxF,MAAMk4C,UAAYzO,EAAUzpC,MAAMk4C,UAC5CzO,EAAUzpC,MAAMwf,SAAW,UAGZ,YAAfuxE,EACY,IAAIO,EAAAA,EAAQ,CAAEl+E,UAAWA,GAAai+E,GACxCE,YAAapwF,EAAAA,EAAAA,IAAO,MAAQ4vF,EAAa,OAAQtnD,GAAW/sB,aAAe,EAGzE,IAAI80E,EAAAA,EAAQ,CAAEp+E,UAAWA,GAAai+E,GACxCE,YAAapwF,EAAAA,EAAAA,IAAO,MAAQ4vF,EAAa,OAAQtnD,GAAWvpC,YAEnEmxF,CACX,CAUO,SAASI,GAAcC,EAAWjmI,EAASkmI,GAC9C,GAAID,EAAW,CACX,IAAIE,GAAOzwF,EAAAA,EAAAA,IAAO,iBAAkB11C,GAChCmmI,EACKD,GAAWA,IAAYC,IACxBF,EAAUvhG,UACV1kC,EAAQi2D,cAAc9nC,YAAYg4G,IAClC5wF,EAAAA,EAAAA,IAAOv1C,KAIXimI,EAAUvhG,WACV6Q,EAAAA,EAAAA,IAAOv1C,GAEf,CACJ,CCtGA,IAAIu8C,GAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAazCC,GAA0C,SAAUC,EAAYzB,EAAQn/C,EAAK6gD,GAC7E,IAA2H3pB,EAAvHD,EAAI5X,UAAUpmB,OAAQ4O,EAAIovB,EAAI,EAAIkoB,EAAkB,OAAT0B,EAAgBA,EAAOhhD,OAAOihD,yBAAyB3B,EAAQn/C,GAAO6gD,EACrH,GAAuB,kBAAZ/gC,SAAoD,oBAArBA,QAAQihC,SAAyBl5C,EAAIiY,QAAQihC,SAASH,EAAYzB,EAAQn/C,EAAK6gD,QACpH,IAAK,IAAI16B,EAAIy6B,EAAW3nD,OAAS,EAAGktB,GAAK,EAAGA,KAAS+Q,EAAI0pB,EAAWz6B,MAAIte,GAAKovB,EAAI,EAAIC,EAAErvB,GAAKovB,EAAI,EAAIC,EAAEioB,EAAQn/C,EAAK6H,GAAKqvB,EAAEioB,EAAQn/C,KAAS6H,GAChJ,OAAOovB,EAAI,GAAKpvB,GAAKhI,OAAOs1C,eAAegK,EAAQn/C,EAAK6H,GAAIA,CAChE,EAaIuiI,GAAQ,QACRC,GAAS,SACTC,GAAU,YACVC,GAAS,gBACTt8D,GAAW,aACXu8D,GAAY,cACZC,GAAU,UACVC,GAAY,YACZC,GAAY,YACZC,GAAa,aACbC,GAAO,OACPC,GAAM,MACNC,GAAM,MACNC,GAAQ,UACRC,GAAO,cACP1iE,GAAW,aACX2iE,GAAO,cACPC,GAAQ,UACRriE,GAAM,QACN4uB,GAAQ,eAKRsiB,GAA+B,SAAUvtF,GAEzC,SAASutF,IACL,OAAkB,OAAXvtF,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAsBA,OAzBAu/B,GAAUy5D,EAAevtF,GAIzBk0B,GAAW,EACPzB,EAAAA,EAAAA,IAAS,OACV86D,EAAc35F,UAAW,cAAU,GACtCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,aACV86D,EAAc35F,UAAW,gBAAY,GACxCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,SACV86D,EAAc35F,UAAW,YAAQ,GACpCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,YACV86D,EAAc35F,UAAW,eAAW,GACvCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,QACV86D,EAAc35F,UAAW,WAAO,GACnCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,cACV86D,EAAc35F,UAAW,iBAAa,GACzCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,UACV86D,EAAc35F,UAAW,gBAAY,GACjC25F,CACX,CA3BmC,CA2BjC9yD,EAAAA,IAKEkkF,GAA0B,SAAU3+G,GAEpC,SAAS2+G,IACL,OAAkB,OAAX3+G,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAmBA,OAtBAu/B,GAAU6qF,EAAU3+G,GAIpBk0B,GAAW,EACPzB,EAAAA,EAAAA,IAAS,OACVksF,EAAS/qH,UAAW,eAAW,GAClCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,KACVksF,EAAS/qH,UAAW,UAAM,GAC7BsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVksF,EAAS/qH,UAAW,iBAAa,GACpCsgC,GAAW,EACPpB,EAAAA,EAAAA,IAAW,GAAI6rF,IAChBA,EAAS/qH,UAAW,aAAS,GAChCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,KACVksF,EAAS/qH,UAAW,YAAQ,GAC/BsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,KACVksF,EAAS/qH,UAAW,WAAO,GACvB+qH,CACX,CAxB8B,CAwB5BlkF,EAAAA,IAKEmkF,GAAuC,SAAU5+G,GAEjD,SAAS4+G,IACL,OAAkB,OAAX5+G,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAUA,OAbAu/B,GAAU8qF,EAAuB5+G,GAIjCk0B,GAAW,EACPzB,EAAAA,EAAAA,IAAS,cACVmsF,EAAsBhrH,UAAW,cAAU,GAC9CsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,MACVmsF,EAAsBhrH,UAAW,gBAAY,GAChDsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,SACVmsF,EAAsBhrH,UAAW,cAAU,GACvCgrH,CACX,CAf2C,CAezCnkF,EAAAA,IAOEokF,GAA0B,SAAU7+G,GASpC,SAAS6+G,EAAS5pH,EAAS1d,GACvB,IAAIgtB,EAAQvE,EAAO/L,KAAKM,KAAMU,EAAS1d,IAAYgd,KAMnD,OALAgQ,EAAMu6G,OAAS,GACfv6G,EAAMixB,UAAY,IAAIjB,EAAAA,GAAU,CAAC,GACjChwB,EAAMw6G,WAAY,EAClBx6G,EAAMy6G,SAAW,GACjBz6G,EAAM06G,cAAgB,OACf16G,CACX,CAynEA,OAzoEAuvB,GAAU+qF,EAAU7+G,GAuBpB6+G,EAASjrH,UAAU+rC,UAAY,WAC3B,IAAKprC,KAAK2qH,OAAQ,CACd,IAAIC,OAAK,EACT,GAA6B,oBAAzB5qH,KAAKhd,QAAQmzC,QAA+B,CAC5Cy0F,EAAK5qH,KAAK4Q,cAAc,KAAM,CAC1BhsB,IAAI8qB,EAAAA,EAAAA,IAAY1P,KAAK47B,iBAAkB3gD,UAAW,qBAAuB+kB,KAAK47B,kBAElF,IAAIivF,GAASz9G,EAAAA,EAAAA,IAAS,gBAAiBpN,KAAKhd,UAC5Cm0C,EAAAA,EAAAA,IAAY,CAACn3B,KAAKhd,SAAU,CAAC,YAAa,QAAS,KAAOgd,KAAK47B,kBAC/D57B,KAAK8qH,cAAgB9qH,KAAKhd,QAC1Bgd,KAAKhd,QAAU4nI,GACf5oI,EAAAA,EAAAA,IAAS,gBAAiB6oI,EAAQ7qH,KAAKhd,QAC3C,KACK,CACD4nI,EAAK5qH,KAAK4Q,cAAc,KAAM,CAAEhsB,IAAI8qB,EAAAA,EAAAA,IAAY1P,KAAK47B,oBACrDzD,EAAAA,EAAAA,IAAO,GAAG96B,MAAMqC,KAAKM,KAAKhd,QAAQouB,WAAU,GAAMx5B,UAAWgzI,GAC7D,IAAIG,EAAS/qH,KAAKhd,QAAQgpE,mBACtB++D,EACA/qH,KAAKhd,QAAQi2D,cAAcjhB,aAAa4yF,EAAIG,GAG5C/qH,KAAKhd,QAAQi2D,cAAc9nC,YAAYy5G,GAE3C5qH,KAAK8qH,cAAgBF,CACzB,CACA5qH,KAAK8qH,cAAcvzF,MAAMuiB,QAAU,MACvC,CACA,GAA6B,aAAzB95C,KAAKhd,QAAQmzC,QAAwB,CAKrC,IAJA,IAAIW,EAAM92B,KAAKhd,QACXynE,GAAar9C,EAAAA,EAAAA,IAAS,gBAAiB0pB,GAEvCmyB,GADA2hE,EAAK5qH,KAAK4Q,cAAc,MACd5Q,KAAK4Q,cAAc,WAAY,CAAE31B,UAAW,KAAO+kB,KAAK47B,gBAAkB,cAC/El6B,EAAM,EAAGuP,EAAM6lB,EAAIN,WAAWv+C,OAAQypB,EAAMuP,EAAKvP,IACtDkpH,EAAGt0F,aAAaQ,EAAIN,WAAW90B,GAAKgpD,SAAU5zB,EAAIN,WAAW90B,GAAKipD,WAEtE7zB,EAAIxmB,WAAW0nB,aAAaixB,EAASnyB,IACrCyB,EAAAA,EAAAA,IAAOzB,GACPA,EAAM8zF,EACN3hE,EAAQ93C,YAAY2lB,IACpB90C,EAAAA,EAAAA,IAAS,gBAAiByoE,EAAY3zB,GACtC92B,KAAK8qH,cAAgB7hE,EACrBjpD,KAAKhd,QAAU8zC,EACV92B,KAAKhd,QAAQ4B,KACdob,KAAKhd,QAAQ4B,IAAK8qB,EAAAA,EAAAA,IAAY1P,KAAK47B,iBAE3C,CACJ,EAOA0uF,EAASjrH,UAAUisC,OAAS,WACxB,IAAIt7B,EAAQhQ,KACZA,KAAKyvC,aACLzvC,KAAK89F,cACL99F,KAAKu5C,aACLv5C,KAAKqsC,iBACL,IAAI4c,EAAUjpD,KAAKyoD,aAEfzoD,KAAKxJ,UAAYwJ,KAAKgrH,kBAAoBhrH,KAAK87F,SAAW97F,KAAKyrD,YAC/DtpB,uBAAsB,WAClBkmF,EAAar4G,EAAMY,cAAeq4C,EAASj5C,EAAMhtB,QAAS,UAAWgtB,EAAM26B,UAC/E,GAER,EACA2/E,EAASjrH,UAAUowC,WAAa,WAC5B,IAAIwZ,EAAUjpD,KAAKyoD,aACdQ,IACDA,EAAUjpD,KAAK4Q,cAAc,MAAO,CAAE31B,UAAW,KAAO+kB,KAAK47B,gBAAkB,aAC3E57B,KAAK2qH,OACL3qH,KAAKhd,QAAQi2D,cAAcjhB,aAAaixB,EAASjpD,KAAKhd,SAGtD4f,SAASuuB,KAAKhgB,YAAY83C,IAG9BjpD,KAAK7f,WACLs2C,EAAAA,EAAAA,IAAS,CAACwyB,GAAUjpD,KAAK7f,SAASsW,QAAQ,OAAQ,KAAKwkD,OAAOhnD,MAAM,MAEpE+L,KAAK2qC,WACLse,EAAQryB,UAAUzB,IAAI2yB,IAE1BmB,EAAQ93C,YAAYnR,KAAKhd,SACrBgd,KAAK2qH,QAAU3qH,KAAKirH,gBACfjrH,KAAKm+B,QACNn+B,KAAKkrH,sBAAsBjiE,IAGnCjpD,KAAKmrH,cAAgBnrH,KAAKorH,eAC9B,EACAd,EAASjrH,UAAUy+F,YAAc,WAC7B,IAAK99F,KAAKlW,MAAM7R,OAAQ,CACpB,IAAI6R,EAAQ0hF,EAAAA,GAAS+wB,sBAAsBv8F,KAAKhd,QAAS,CAAEH,OAAQ,CAAEutB,MAAO,WAC5EpQ,KAAK26B,cAAc,CAAE7wC,MAAOA,IAAS,IACjCylB,EAAAA,EAAAA,QAAevP,KAAK2qH,OACpB3qH,KAAKhd,QAAUgd,KAAKqrH,mBAAmBrrH,KAAKhd,SAG5Cgd,KAAKhd,QAAQuuB,UAAY,EAEjC,CACA,IAAIq5G,EAAK5qH,KAAKsrH,YAAYtrH,KAAKlW,OAG/B,IAFAquC,EAAAA,EAAAA,IAAO1pB,MAAMpP,UAAUhC,MAAMqC,KAAKkrH,EAAGhzI,UAAWooB,KAAKhd,SACrDgd,KAAKhd,QAAQ4zC,UAAUzB,IAAI,iBACvBn1B,KAAK2qH,UACA3qH,KAAKirH,eAAiBjrH,KAAKhd,QAAQ4zC,UAAUM,SAAS,eACvDl3B,KAAKurH,kBAAkBvrH,KAAKhd,SAE5Bgd,KAAKgrH,iBAAiB,CACtB,IAAI/hE,EAAUjpD,KAAKyoD,aACfzoD,KAAKhd,QAAQ4zC,UAAUM,SAAS,cAChCmxF,EAAaroH,KAAK4Q,cAAeq4C,EAASjpD,KAAKhd,QAAS,UAAWgd,KAAK2qC,WAGxE09E,EAAaroH,KAAK4Q,cAAeq4C,EAASjpD,KAAKhd,QAAS,UAAWgd,KAAK2qC,UAEhF,CAER,EACA2/E,EAASjrH,UAAUk6C,WAAa,WAC5B,IAAI0P,EAAUjpD,KAAKyoD,aACnB,GAAIzoD,KAAKm+B,OAAQ,CAGb,IAFA,IAAIA,OAAS,EACTqtF,GAAc1yF,EAAAA,EAAAA,IAAU94B,KAAKm+B,QACxBh5B,EAAI,EAAG8L,EAAMu6G,EAAYvzI,OAAQktB,EAAI8L,EAAK9L,IAC/Cg5B,EAASqtF,EAAYrmH,GACjBnF,KAAK2qH,OACL31F,EAAAA,GAAaG,IAAIgJ,EAAQ,QAASn+B,KAAKyrH,uBAAwBzrH,MAG3D4yB,EAAAA,GAAQmB,MACR,IAAIqoB,EAAAA,GAAMje,EAAQ,CAAEutF,QAAS1rH,KAAK2rH,aAAa3sH,KAAKgB,QAGpDg1B,EAAAA,GAAaG,IAAIgJ,EAAQ,cAAen+B,KAAK4rH,aAAc5rH,MAKvE,GADAA,KAAKinG,cAAgB9oE,GAChBn+B,KAAK2qH,OAAQ,CACd31F,EAAAA,GAAaG,IAAIn1B,KAAKinG,cAAe,SAAUjnG,KAAK4zE,cAAe5zE,MACnE,IAAK,IAAIuO,EAAK,EAAGvoB,GAAK8pD,EAAAA,EAAAA,IAAoB9vC,KAAKinG,eAAgB14F,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CACjF,IAAIo4B,EAAW3gD,EAAGuoB,GAClBymB,EAAAA,GAAaG,IAAIwR,EAAU,SAAU3mC,KAAK4zE,cAAe5zE,KAC7D,CACJ,CACJ,CACK4yB,EAAAA,GAAQY,WACTxzB,KAAK6rH,qBAAuB7rH,KAAK8rH,aAAa9sH,KAAKgB,MACnDA,KAAK+rH,yBAA2B/rH,KAAKiyE,iBAAiBjzE,KAAKgB,MAC3Dg1B,EAAAA,GAAaG,IAAIn1B,KAAK2qH,OAAS/nH,SAAWqmD,EAAS,YAAajpD,KAAK6rH,qBAAsB7rH,MAC3Fg1B,EAAAA,GAAaG,IAAIvyB,SAAU,YAAa5C,KAAK+rH,yBAA0B/rH,OAE3EA,KAAKgsH,qBAAuBhsH,KAAK2oD,aAAa3pD,KAAKgB,MACnDg1B,EAAAA,GAAaG,IAAIvyB,SAAU,QAAS5C,KAAKgsH,qBAAsBhsH,MAC/DA,KAAKisH,kBAAkBhjE,GACvBjpD,KAAK4uE,UAAWrsC,EAAAA,EAAAA,IAAa0mB,EAAS,CAAEtwB,SAAU,IAAMsxF,IAC5D,EACAK,EAASjrH,UAAU4sH,kBAAoB,SAAUjpI,GAC7C,IAAI23D,EAAa,CACbuxE,UAAWxC,GACXyC,QAAS1C,GACTngD,MAAO8/C,GACPgD,UAAWzC,GACX0C,WAAYzC,GACZvgD,OAAQggD,IAERrpH,KAAK2qH,SACLhwE,EAAWoZ,KAAO81D,GAClBlvE,EAAWzyC,IAAM4hH,GACjBnvE,EAAW6uB,IAAMugD,IAErB,IAAI9vE,EAAAA,GAAej3D,EAAS,CACxBk4D,UAAWl7C,KAAKssH,gBAAgBttH,KAAKgB,MACrC26C,WAAYA,GAEpB,EACA2vE,EAASjrH,UAAU4yE,iBAAmB,SAAUx2F,IACxC29C,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,MAAQn+B,KAAK47B,gBAAkB,cAAgB57B,KAAKyoD,eACjErvB,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,MAAQn+B,KAAK47B,gBAAkB,WACtD57B,KAAKusH,UAAUvsH,KAAK2qH,OAAS,KAAO3qH,KAAKuqH,OAAOtyI,OAAQwD,EAEhE,EACA6uI,EAASjrH,UAAUizE,WAAa,SAAU72F,GACpB,KAAdA,EAAEu+D,SAAgC,KAAdv+D,EAAEu+D,SAClBv+D,EAAE0iD,SAAW1iD,EAAE0iD,OAAOvH,UAAUM,SAAS,kBAAoBz7C,EAAE0iD,OAAOvH,UAAUM,SAAS,iBACzFz7C,EAAEi1D,gBAGd,EACA45E,EAASjrH,UAAUitH,gBAAkB,SAAU7wI,GAC3C,IAAI+wI,EAAa,GACbC,EAAOhxI,EAAE0iD,OACTuuF,EAAe1sH,KAAK2qH,SAAW3qH,KAAKirH,gBAAkBjrH,KAAKhd,QAAQ4zC,UAAUM,SAAS,eACnFl3B,KAAKuqH,OAAOtyI,OAAS,EAK5B,GAJAwD,EAAEi1D,iBACE1wC,KAAKgrH,iBAAiC,KAAdvvI,EAAEu+D,SAAkByyE,EAAK71F,UAAUM,SAAS,iBACpEl3B,KAAK2sH,qBAAqB,CAACrD,GAASr8D,IAAW,EAAC7zB,EAAAA,EAAAA,IAAQqzF,EAAM,MAAQzsH,KAAK47B,gBAAkB,cAE7F8wF,EACA,OAAQjxI,EAAEwnB,QACN,KAAK2mH,GACD4C,EAAa5C,GACbnuI,EAAEwnB,OAASymH,GACX,MACJ,KAAKC,GACD6C,EAAa7C,GACbluI,EAAEwnB,OAASwmH,GACX,MACJ,KAAKC,GACD8C,EAAa9C,GACbjuI,EAAEwnB,OAAS2mH,GACX,MACJ,KAAKH,GACD+C,EAAa/C,GACbhuI,EAAEwnB,OAAS,QAIlB,GAAIjD,KAAK2qC,UACV,OAAQlvD,EAAEwnB,QACN,KAAK0mH,GACD+C,GAAe,EACfF,EAAa7C,GACbluI,EAAEwnB,OAAS2mH,GACX,MACJ,KAAKA,GACD8C,GAAe,EACfF,EAAa5C,GACbnuI,EAAEwnB,OAAS0mH,GAIvB,OAAQluI,EAAEwnB,QACN,KAAKymH,GACL,KAAKD,GACL,KAAKK,GACL,KAAKD,GACL,KAAKE,GACD/pH,KAAK4sH,iBAAiBnxI,GACtB,MACJ,KAAKmuI,GACD5pH,KAAK6sH,qBAAqBpxI,GAC1B,MACJ,KAAKkuI,GACD3pH,KAAK8sH,kBAAkBrxI,GACvB,MACJ,KAAK2tI,GACGppH,KAAKirH,eAAkC,SAAjBwB,EAAKt2F,SAAsBs2F,EAAK71F,UAAUM,SAAS,eACzEl3B,KAAKyrH,uBAAuBhwI,GAG5BukB,KAAK6sH,qBAAqBpxI,GAE9B,MACJ,KAAK4tI,GACDrpH,KAAK8sH,kBAAkBrxI,GAG3BixI,IACAjxI,EAAEwnB,OAASupH,EAEnB,EACAlC,EAASjrH,UAAUutH,iBAAmB,SAAUnxI,GAC5C,IAAIsxI,EAAM/sH,KAAKgtH,gBACXC,EAAcxxI,EAAEwnB,SAAWymH,IAAajuI,EAAEwnB,SAAW4mH,IAAQpuI,EAAEwnB,SAAW8mH,GAAO,EAAIgD,EAAIxuB,kBAAoB,EAC7G2uB,EAASD,EACTE,EAAMntH,KAAKotH,aAAaL,EAAKzD,IAC7B6D,IACI1xI,EAAEwnB,SAAW6mH,IAAOruI,EAAEwnB,SAAW4mH,KACjCqD,EAASltH,KAAKqtH,OAAON,EAAKI,IAE9BA,EAAIv2F,UAAUjB,OAAO2zF,IACjB7tI,EAAEwnB,SAAW6mH,IAAOruI,EAAEwnB,SAAW4mH,KAC7BpuI,EAAEwnB,SAAWymH,GACbwD,IAGAA,IAEAA,KAAYzxI,EAAEwnB,SAAWymH,GAAYqD,EAAIxuB,mBAAqB,KAC9D2uB,EAASD,KAIrB,IAAIK,EAAMP,EAAIn1I,SAASs1I,GACvBA,EAASltH,KAAKyzE,UAAU65C,EAAKJ,EAAQzxI,EAAEwnB,QACvC8pH,EAAIn1I,SAASs1I,GAAQt2F,UAAUzB,IAAIm0F,IACnCyD,EAAIn1I,SAASs1I,GAAQz7G,OACzB,EACA64G,EAASjrH,UAAUo0E,UAAY,SAAU65C,EAAKxmI,EAAOmc,GACjD,IAAI8pH,EAAM/sH,KAAKgtH,gBACXC,EAAchqH,IAAWymH,IAAazmH,IAAW4mH,IAAQ5mH,IAAW8mH,GAAO,EAAIgD,EAAIxuB,kBAAoB,EAmB3G,OAlBI+uB,EAAI12F,UAAUM,SAASsyF,KAAc8D,EAAI12F,UAAUM,SAASqwB,KAAa+lE,EAAI12F,UAAUM,SAASgzF,OAC5FjnH,IAAWymH,IAAa5iI,IAAUimI,EAAIxuB,kBAAoB,GAGrDt7F,IAAWwmH,IAAqB,IAAV3iI,EAF3BA,EAAQmmI,EAKFhqH,IAAWymH,IAAezmH,IAAW2mH,GAC3C9iI,IAGAA,OAGRwmI,EAAMP,EAAIn1I,SAASkP,IACX8vC,UAAUM,SAASsyF,KAAc8D,EAAI12F,UAAUM,SAASqwB,KAAa+lE,EAAI12F,UAAUM,SAASgzF,OAChGpjI,EAAQkZ,KAAKyzE,UAAU65C,EAAKxmI,EAAOmc,IAEhCnc,CACX,EACAwjI,EAASjrH,UAAU2tH,cAAgB,SAAUO,GACzC,IAAIv9G,EAAQhQ,KAEZ,QADkB,IAAdutH,IAAwBA,EAAYvtH,KAAKuqH,OAAOtyI,QAChD+nB,KAAK2qH,OAAQ,CACb,IAAIpiD,EAAQ,CAACvoE,KAAKyoD,cAAc9nE,OAAO,GAAG0c,MAAMqC,MAAKo5B,EAAAA,EAAAA,IAAU,IAAM49C,MAAS62C,GAC1EC,EAAW,GAQf,OAPe10F,EAAAA,EAAAA,IAAU,IAAM49C,IACtB33F,SAAQ,SAAUuzB,IACnBtC,EAAMhtB,QAAQ4B,KAAO0tB,EAAK1tB,GAAGqP,MAAM,KAAK,IAAMqe,EAAK1tB,GAAGqP,MAAM,KAAK,GAAK,IAAMqe,EAAK1tB,GAAGqP,MAAM,KAAK,KAC/Fu5H,EAAS/tI,KAAK6yB,EAEtB,IACAi2D,EAAQ,CAACvoE,KAAKyoD,cAAc9nE,OAAO,GAAG0c,MAAMqC,KAAK8tH,IAAWD,IACrD5/G,EAAAA,EAAAA,IAAkB46D,GAAS,MAAO7vC,EAAAA,EAAAA,IAAO,iBAAkB6vC,EACtE,CAEI,OAAOvoE,KAAKyoD,aAAa7wE,SAAS21I,EAE1C,EACAjD,EAASjrH,UAAUwtH,qBAAuB,SAAUpxI,GAChD,IAAIuzC,EACA+9F,EAAM/sH,KAAKgtH,gBACXG,EAAMntH,KAAKotH,aAAaL,EAAKzD,IACjC,GAAI6D,EAAK,CACL,IAAID,EAASltH,KAAKqtH,OAAON,EAAKI,GAC1B5C,EAASvqH,KAAKuqH,OAAO5pI,OAAOusI,GAC5B9hI,EAAO4U,KAAK7D,QAAQouH,GACpBn/H,EAAKtB,MAAM7R,QACX+nB,KAAKuqH,OAAO9qI,KAAKytI,GACjBltH,KAAKytH,QAAU,QACfztH,KAAKiD,OAASxnB,EAAEwnB,OAChBjD,KAAK0tH,SAASP,EAAK/hI,GAAO,GAAI,EAAG3P,IAG7BA,EAAEwnB,SAAWmmH,KACTppH,KAAK2qH,QAAiC,IAAvB3qH,KAAKuqH,OAAOtyI,OAC3B+nB,KAAK2sH,qBAAqB,CAAC1/D,IAAW,CAACjtD,KAAKyoD,eAG5C0kE,EAAIv2F,UAAUjB,OAAO2zF,IAEzB6D,EAAIv2F,UAAUzB,IAAI83B,IAClBj+B,EAAY,CAAEhsC,QAASmqI,EAAK/hI,KAAMA,EAAMrJ,MAAOtG,GAC/CukB,KAAK81B,QAAQ,SAAU9G,GACvBhvB,KAAKusH,UAAU,KAAM9wI,GAGjC,CACJ,EACA6uI,EAASjrH,UAAUytH,kBAAoB,SAAUrxI,GACzCukB,KAAKuqH,OAAOtyI,QACZ+nB,KAAKytH,QAAU,OACfztH,KAAKusH,UAAUvsH,KAAKuqH,OAAOtyI,OAAQwD,IAG/BA,EAAEwnB,SAAWomH,IACbrpH,KAAKusH,UAAU,KAAM9wI,EAGjC,EACA6uI,EAASjrH,UAAUu0E,cAAgB,SAAUn4F,GACzCukB,KAAKusH,UAAU,KAAM9wI,EACzB,EACA6uI,EAASjrH,UAAUssH,aAAe,SAAUlwI,GACxCukB,KAAKwqH,WAAY,EACjBxqH,KAAK4rH,aAAanwI,EAAEmiE,cACxB,EACA0sE,EAASjrH,UAAUusH,aAAe,SAAUnwI,GACxCA,EAAEi1D,iBACF1wC,KAAK2vC,cAAgBl0D,EAAE0iD,OACvBn+B,KAAK2tH,SAAU,EACf3tH,KAAKojC,MAAQ3nD,EAAEk1D,eAAiBl1D,EAAEk1D,eAAe,GAAGvN,MAAQ,EAAI3nD,EAAE2nD,MAAQ,EAC1EpjC,KAAKujC,MAAQ9nD,EAAEk1D,eAAiBl1D,EAAEk1D,eAAe,GAAGpN,MAAQ,EAAI9nD,EAAE8nD,MAAQ,EAC1EvjC,KAAKusH,UAAU,KAAM9wI,GACjBukB,KAAK2tH,UACD3tH,KAAK4tH,QAAQnyI,EAAE0iD,SACfn+B,KAAK0tH,SAAS,KAAM,KAAM1tH,KAAKujC,MAAOvjC,KAAKojC,MAAO3nD,GAEtDukB,KAAK2tH,SAAU,EAEvB,EAEArD,EAASjrH,UAAUktH,UAAY,SAAUsB,EAASpyI,EAAGqyI,GACjD,IAAI99G,EAAQhQ,KAGZ,QAFgB,IAAZ6tH,IAAsBA,EAAU,QAC1B,IAANpyI,IAAgBA,EAAI,MACpBukB,KAAK+tH,gBAAiB,CACtB,IACIC,EAGAC,EAJAC,OAAM,EAENC,EAAYnuH,KAAKyoD,aACjB2lE,OAAkB,EAElBC,EAASruH,KAAKsuH,YACdC,GAAU,EACV1sE,EAAM7hD,KAAK2qH,OAAS0D,EAAOp2I,OAAS,EAAIk2I,EAAU5vB,kBAClDiwB,EAAOxuH,KAAK2qH,QAAkB,IAAR9oE,GAAYnpB,EAAAA,EAAAA,IAAO,QAAS21F,EAAOxsE,EAAM,KAC7D/oB,EAAAA,EAAAA,IAAU,iBAAkBq1F,GAAWtsE,EAAM,GAQnD,GAPI7hD,KAAK2qH,QAAU6D,EAAK53F,UAAUM,SAAS,aACvCg3F,EAAMluH,KAAKotH,aAAaoB,EAAMvhE,MAE1BihE,EAAIt3F,UAAUjB,OAAOs3B,IAEzBshE,GAAU,IAETA,EAAS,CACV,IAAIE,EAAWhzI,GAAKA,EAAE0iD,QAAUn+B,KAAK0uH,MAAMjzI,EAAE0iD,QAEzCn+B,KAAKstH,IADLmB,GAIWD,EAAK52I,SAAS,GAE7Bo2I,EAAShuH,KAAKuqH,OAAOtyI,OAAS+nB,KAAK7D,QAAQ6D,KAAKuqH,QAAU,KAC1D0D,EAAUD,EAASA,EAAOlkI,MAAQkW,KAAKlW,MACvCskI,EAAkB,CAAEprI,QAASwrI,EAAMG,WAAYX,EAAQlkI,MAAOmkI,EAASlsI,MAAOtG,EAAG8L,QAAQ,EAAO0gE,WAAW,GAC3GjoD,KAAK81B,QAAQ,cAAes4F,GAAiB,SAAUQ,GACnD,IAAI9gB,EACA+gB,EAEAtqD,EA+BAuqD,EACAC,EACAC,EAlCAC,EAAU,GAEVpkI,GAAU+jI,EAAkBrnI,QAC5BsD,GAAUmlB,EAAM29G,WACZ39G,EAAM26G,QACN7c,GAAW10E,EAAAA,EAAAA,IAAQo1F,EAAM,IAAM93C,IAC3B1mE,EAAMi7G,gBACNnd,EAAS70D,cAAc1hB,MAAM23F,UAAY,IACzC91F,EAAAA,EAAAA,IAAQo1F,EAAM,gBAAgBl4F,aAAa,gBAAiB,UAEhEtmB,EAAMm/G,oBAAoBrhB,GAC1Bkb,IAAc32G,EAAAA,EAAAA,IAAYy7F,EAASl2H,SAAS,GAAIixI,EAAAA,GAAU/a,EAASl2H,SAAS,KAC5E2sF,GAAWlyD,EAAAA,EAAAA,IAAYy7F,EAAUnnC,EAAAA,KACxB1B,OACTgqD,EAAUnhB,EAASlpH,GACnB2/E,EAAS78C,WACT6Q,EAAAA,EAAAA,IAAOu1E,IAGP99F,EAAMo/G,gBAAgBZ,GAAM,GAEhCK,EAAY,CAAE7rI,QAASwrI,EAAMG,WAAYX,EAAQlkI,MAAOmkI,GACxDj+G,EAAM8lB,QAAQ,UAAW+4F,GACzB7+G,EAAMu6G,OAAOz/G,MACRkF,EAAM26G,SACP31F,EAAAA,GAAaW,OAAO64F,EAAM,UAAWx+G,EAAMsiE,YACrB,UAAlBtiE,EAAMy9G,UACNz9G,EAAMy9G,QAAU,MAI5Bz9G,EAAMq/G,sBAIN,IAAIC,EAAYt/G,EAAMy4C,cAAgBz4C,EAAMg9G,gBACxCh9G,EAAM29G,UACF39G,EAAM49G,QAAQnyI,EAAE0iD,SAChBnuB,EAAM09G,SAAS,KAAM,KAAM19G,EAAMuzB,MAAOvzB,EAAMozB,MAAO3nD,GAEzDu0B,EAAM29G,SAAU,GAEhB39G,EAAM26G,QAAU2E,GAAaL,EAAQh3I,QAErC62I,EAAW,IAAI9lH,OAAO,gBAAkBgH,EAAMhtB,QAAQ4B,GAAK,UAAU8rC,KAAKu+F,GAAS,GACnFF,EAAWO,EAAU/8G,cAAc,QAAUu8G,EAAW,MACxDE,EAAUP,GAAYa,EAAU/8G,cAAc,QAAUk8G,EAAS7pI,GAAK,OAEjE0qI,IACLP,EAAWO,EAAU/8G,cAAc,2BACnCy8G,EAAUP,GAAYa,EAAU/8G,cAAc,QAAUk8G,EAAS7pI,GAAK,OAE1E,IAAI2qI,EAAWd,GAAYA,EAAS39G,iBAAiB,gBACrD,GAAIjmB,GAAUmlB,EAAMi7G,eAAiB4C,IAAa0B,EAASt3I,OACvD+3B,EAAMw/G,eAAe/zI,QAEpB,GAAIoP,IAAWmlB,EAAMi7G,eAAiB8D,IAAaC,GAA4B,SAAlBh/G,EAAMy9G,UAAuBz9G,EAAMu6G,OAAOtyI,SAAW+3B,EAAM26G,QAAkC,IAAxB36G,EAAMu6G,OAAOtyI,QAAe,CAC/J,IAAI6+C,EAAOr7C,GAAKA,EAAE0iD,OAAOvH,UAAUM,SAAS,cACtCkC,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,mBAAqB,KACzCrH,GACAA,EAAMA,EAAIvkB,cAAc,iBACpBvC,EAAMo7G,iBAAoBt0F,GAAO9mB,EAAM5M,SAAS0zB,EAAIlyC,IAAI,GAAM3M,QAAU+3B,EAAMu6G,OAAOtyI,SACrF+3B,EAAMu8G,UAAUv8G,EAAMu6G,OAAOv6G,EAAMu6G,OAAOtyI,OAAS,GAAIwD,GAAG,IAI9Du0B,EAAMu8G,UAAUv8G,EAAMu6G,OAAOv6G,EAAMu6G,OAAOtyI,OAAS,GAAIwD,EAE/D,MACK,GAAIoP,IAAWijI,IAAeD,IAAa79G,EAAMi7G,eAAiBj7G,EAAMu6G,OAAOtyI,QACxD,IAAxB+3B,EAAMu6G,OAAOtyI,QAAgBw2I,GAAYa,IAAcb,EAASx1E,eAChEjpC,EAAMu8G,UAAU,KAAM9wI,QAErB,GAAIoP,IAAU8iB,EAAAA,EAAAA,IAAkBkgH,IAAY79G,EAAMu6G,OAAOtyI,OAC1D+3B,EAAMu8G,UAAU,KAAM9wI,QAErB,IAAIoP,GAAWmlB,EAAM26G,QAAWkD,GAAmC,IAAxB79G,EAAMu6G,OAAOtyI,QAAiB+3B,EAAMy/G,cAI/E,GAAI5kI,GAAUmlB,EAAM26G,QAAUlvI,GAAKA,EAAE0iD,QACd,IAAxBnuB,EAAMu6G,OAAOtyI,SAAgBmhD,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,4BAC/CnuB,EAAMu8G,UAAU,EAAG9wI,QAElB,GAAIoP,IAAWmlB,EAAM26G,SAAU7xF,EAAAA,EAAAA,IAAU,iBAAkBq1F,GAAWN,EAAU,IAAkB,IAAZpyI,EAAEi/D,MACzF1qC,EAAMu8G,UAAU,KAAM9wI,OAErB,CACD,IAAIoP,GAA6B,UAAlBmlB,EAAMy9G,SAAyC,UAAlBz9G,EAAMy9G,QAG7C,CACD,IAAIV,EAAM/8G,EAAMg9G,gBACZ0C,EAAQ1/G,EAAMo9G,aAAaL,EAAK9/D,IAWpC,GAVIyiE,IACAA,EAAMp5F,aAAa,gBAAiB,SACpCo5F,EAAM94F,UAAUjB,OAAOs3B,KACnB2hE,EAAkB3mE,WAAawmE,GAA8B,SAAlBz+G,EAAMy9G,WACjDiC,EAAM94F,UAAUzB,IAAIm0F,IACf7tI,EAAE0iD,QAAW1iD,EAAE0iD,OAAOvH,UAAUM,SAAS,oBAC1Cw4F,EAAMj+G,WAIb5mB,GAAUmlB,EAAMi7G,eAAiBwD,GAAuD,UAA3CA,EAASrtF,aAAa,kBACzB,SAA3CqtF,EAASrtF,aAAa,iBAA6B,EAC/ChI,EAAAA,EAAAA,IAAQq1F,EAAU,4BAClBz+G,EAAMu6G,OAAS,GAGfv6G,EAAMu6G,OAAOz/G,MAEjBkF,EAAMu6G,OAAO9qI,KAAKuwB,EAAM2/G,QACxB,IAAIC,EAAS5/G,EAAM7T,QAAQ6T,EAAMu6G,QACjCkE,EAASn4F,aAAa,gBAAiB,QACvCtmB,EAAM09G,SAASe,EAAUmB,GAAS,GAAI,EAAGn0I,EAC7C,CACJ,MA5BIu0B,EAAMw/G,eAAe/zI,GA6BrBu0B,EAAMu6G,OAAOtyI,OAAS,IACM,UAAxB+3B,EAAM06G,eAAqD,UAAxB16G,EAAM06G,gBACzC16G,EAAMo7G,gBAAkBp7G,EAAMm7G,cAC9Bn7G,EAAM06G,cAAgB,QAGlC,MA/CI16G,EAAMy/G,eAAgB,EACtBz/G,EAAMu8G,UAAU,EAAG9wI,GA+CvBu0B,EAAM6/G,oBACV,GACJ,CACJ,CACJ,EACAvF,EAASjrH,UAAUgwH,oBAAsB,WAErC,GAAIrvH,KAAK87F,SAAW97F,KAAKxJ,UAAmC,IAAvBwJ,KAAKuqH,OAAOtyI,OAAc,CAE3D,IAAI63I,EAAU9vH,KAAK8vH,QAAQjpG,OAAO,EAAG7mB,KAAKlW,MAAM7R,QAChD+nB,KAAKgtC,cAAc,CAAC,aAEpBhtC,KAAK8vH,QAAUA,EACf9vH,KAAK+sC,sBACT,CACJ,EACAu9E,EAASjrH,UAAU0wH,iBAAmB,SAAU3kI,EAAMwyF,GAClD,IAAIjwE,EAAAA,EAAAA,IAAkBviB,GAClB,OAAO,MAEPuiB,EAAAA,EAAAA,IAAkBiwE,KAClBA,EAAQ,GAEZ,IAAI/6F,EAASmd,KAAKgwH,UAAUpyC,GAC5B,MAAO,CAAE7lG,KAAMqT,EAAKvI,EAAO9K,MAAO6M,GAAIwG,EAAKvI,EAAO+B,IAAKkF,MAAOsB,EAAKvI,EAAOutB,OAAQ6/G,UAAW7kI,EAAKvI,EAAOotI,WACrGrpE,QAASx7D,EAAKvI,EAAO+jE,SAAUpgE,IAAK4E,EAAKvI,EAAO2D,KACxD,EACA8jI,EAASjrH,UAAUivH,UAAY,WAC3B,IAAIt+G,EAAQhQ,KACRquH,EAAS,GAMb,MALA,GAAGhxH,MAAMqC,KAAKkD,SAASkO,iBAAiB,IAAM4lE,KAAQ33F,SAAQ,SAAUuzB,KAC/D3E,EAAAA,EAAAA,IAAkB2E,EAAKC,cAAc,IAAM03G,MAAUj6G,EAAM5M,SAASkP,EAAKC,cAAc,IAAM03G,IAAMrlI,IAAI,GAAM3M,QAC9Go2I,EAAO5uI,KAAK6yB,EAEpB,IACO+7G,CACX,EACA/D,EAASjrH,UAAU0uH,cAAgB,WAC/B,OAAQ/tH,KAAKuqH,OAAOtyI,OAAS,GAAM+nB,KAAKhd,QAAQ4zC,UAAUM,SAAS,mBAAoBI,EAAAA,EAAAA,IAAUt3B,KAAKhd,SAAS8vE,SACnH,EACAw3D,EAASjrH,UAAUuuH,QAAU,SAAUzvF,GACnC,IAAIyvF,GAAU,EACd,GAAI5tH,KAAK7hB,OAAQ,CACbyvI,GAAU,EAEV,IADA,IAAIzvI,EAAS6hB,KAAK7hB,OAAO8V,MAAM,KACtBkR,EAAI,EAAG8L,EAAM9yB,EAAOlG,OAAQktB,EAAI8L,EAAK9L,IAC1C,IAAIi0B,EAAAA,EAAAA,IAAQ+E,EAAQ,IAAMhgD,EAAOgnB,IAAK,CAClCyoH,GAAU,EACV,KACJ,CAER,CACA,OAAOA,CACX,EACAtD,EAASjrH,UAAUquH,SAAW,SAAU96C,EAAIxnF,EAAMw4C,EAAKF,EAAMjoD,EAAG0iD,GAC5D,IAAInuB,EAAQhQ,UACA,IAAR4jC,IAAkBA,EAAM,QACf,IAATF,IAAmBA,EAAO,QACpB,IAANjoD,IAAgBA,EAAI,WACT,IAAX0iD,IAAqBA,EAASn+B,KAAKinG,eACvC,IAAIh+C,EAAUjpD,KAAKyoD,aACnBzoD,KAAKkwH,MAAQt9C,EACb,IAAIu9C,EAA6B,KAApBnwH,KAAKhd,QAAQ4B,GAAYob,KAAKhd,QAAQ4B,GAAK,OAQxD,GAPAob,KAAKyvH,eAAgB,GACjB9hH,EAAAA,EAAAA,IAAkBi2B,KAClBA,GAAO,IAEPj2B,EAAAA,EAAAA,IAAkB+1B,KAClBA,GAAQ,GAERkvC,EAAI,CAEJ,GADA5yE,KAAKowH,MAAQpwH,KAAKsrH,YAAYlgI,EAAK4U,KAAKukF,SAAS,WAAYvkF,KAAKuqH,OAAOtyI,OAAS,MAC7E+nB,KAAK2qH,QAAU/3F,EAAAA,GAAQY,SAAU,CAClCy1B,EAAQonE,UAAU94F,MAAMuiB,QAAU,OAClC,IAAIj0D,EAAO,CACP9N,KAAMqT,EAAK4U,KAAKukF,SAAS,SAASnpG,WAAYwrE,QAASujE,GAAQ,eAE/DmG,EAAQ,IAAIlG,GAASpqH,KAAKlW,MAAM,GAAI,QAASjE,GAAM,GACnD0qI,EAAMvwH,KAAKsrH,YAAY,CAACgF,IAAQ14I,SAAS,GAC7C24I,EAAI35F,UAAUzB,IAAIo0F,IAClBvpH,KAAKowH,MAAMp4F,aAAau4F,EAAKvwH,KAAKowH,MAAMx4I,SAAS,GACrD,CACIooB,KAAK2qH,QACL3qH,KAAK20D,aAAe30D,KAAK4Q,cAAc,MAAO,CAC1C31B,UAAW,KAAO+kB,KAAK47B,gBAAkB,YAAc86C,GAAO9xF,GAAIguF,EAAGhuF,GAAK,YAAcurI,EAAS,WAEjGnwH,KAAKirH,eACLrnF,EAAMgvC,EAAG3+B,aACT2+B,EAAGzhE,YAAYnR,KAAK20D,eAGpB/xD,SAASuuB,KAAKhgB,YAAYnR,KAAK20D,cAEnC30D,KAAKwwH,mBAAqBxwH,KAAKhd,QAAQ4zC,UAAUM,SAAS,eAAwC,IAAvBl3B,KAAKuqH,OAAOtyI,OACvF+nB,KAAKukE,SAAWvkE,KAAKywH,cAAczwH,KAAK20D,aAAc30D,KAAKowH,MAAOx9C,EAAI5yE,KAAKwwH,oBACvExwH,KAAKxJ,UACLwJ,KAAK+sC,uBAEL/sC,KAAKirH,cACLjrH,KAAK0wH,oBAAoB1wH,KAAKowH,MAAOx9C,IAGjC5yE,KAAK7f,WACLs2C,EAAAA,EAAAA,IAAS,CAACz2B,KAAK20D,cAAe30D,KAAK7f,SAASsW,QAAQ,OAAQ,KAAKwkD,OAAOhnD,MAAM,MAElF+L,KAAKukE,SAASU,QAEbjlE,KAAKirH,eAAkBjrH,KAAKorH,kBAAmBprH,KAAK2wH,WAKrD3wH,KAAK4wH,kBAAkBh+C,EAAI5yE,KAAKowH,MAAOhlI,EAAM3P,EAAG,EAAG,EAAG,SAJtD6E,OAAOuxB,cAAc7R,KAAK6wH,OAC1B7wH,KAAK6wH,MAAQvwI,OAAO4vB,YAAW,WAAcF,EAAM4gH,kBAAkBh+C,EAAI5iE,EAAMogH,MAAOhlI,EAAM3P,EAAG,EAAG,EAAG,OAAS,GAAGukB,KAAK2wH,eAO1H3wH,KAAKowH,MAAM74F,MAAMu9B,OAAS90D,KAAKhd,QAAQu0C,MAAMu9B,OAC7C7L,EAAQ93C,YAAYnR,KAAKowH,QACpBpwH,KAAKorH,iBAAmBprH,KAAK2wH,YAC9BrwI,OAAOuxB,cAAc7R,KAAK6wH,OAC1B7wH,KAAK6wH,MAAQvwI,OAAO4vB,YAAW,WAAcF,EAAM4gH,kBAAkBh+C,EAAI5iE,EAAMogH,MAAOhlI,EAAM3P,EAAGmoD,EAAKF,EAAM,OAAS,GAAG1jC,KAAK2wH,aAG3H3wH,KAAK4wH,kBAAkBh+C,EAAI5yE,KAAKowH,MAAOhlI,EAAM3P,EAAGmoD,EAAKF,EAAM,QAGvE,MAII,GAFA1jC,KAAKowH,MAAQpwH,KAAKhd,QAClBgd,KAAKowH,MAAM74F,MAAMu9B,QAASg8D,EAAAA,EAAAA,IAAiB3yF,GAAkBn+B,KAAKhd,SAAS5H,YACvEuyB,EAAAA,EAAAA,IAAkBlyB,GAAI,CAEtB,IAAIs1I,EAAKnuH,SAASqoD,YAAY,eAC9B8lE,EAAG7lE,UAAU,SAAS,GAAM,GAE5B,IAAI8lE,EAAchxH,KAAKixH,WAAWF,EAAI,CAAC,GACvCC,EAAY7yF,OAAS6yF,EAAY14E,WAAana,EAC9C6yF,EAAYrhF,cAAgBxR,EAE5Bn+B,KAAK4wH,kBAAkBh+C,EAAI5yE,KAAKowH,MAAOhlI,EAAM4lI,EAAaptF,EAAKF,EAAM,OACzE,MAEI1jC,KAAK4wH,kBAAkBh+C,EAAI5yE,KAAKowH,MAAOhlI,EAAM3P,EAAGmoD,EAAKF,EAAM,OAGvE,EACA4mF,EAASjrH,UAAU4xH,WAAa,SAAU9qI,EAAQgoB,GAC9C,IAAK,IAAIgF,KAAQhtB,EACbgoB,EAAY,GAAKgF,GAAQhtB,EAAO,GAAKgtB,GAEzC,OAAOhF,CACX,EACAm8G,EAASjrH,UAAUqxH,oBAAsB,SAAU9F,EAAIh4C,GACnD,IAAIs+C,EAAUhtF,iBAAiB0uC,GAC3Bu+C,EAAWjyI,SAASgyI,EAAQ1iB,WAAY,IACxCxuG,KAAKuqH,OAAOtyI,OAAS,IAAM26F,EAAGh8C,UAAUM,SAAS,eACjDi6F,GAAY,EAGZA,GAAaA,EAAW,EAE5BvG,EAAGrzF,MAAMi3E,WAAa2iB,EAAW,KACjC,IAAIC,EAAgBxG,EAAG95G,iBAAiB,gBACxC,GAAIsgH,GAAiBA,EAAcn5I,OAI/B,IAHA,IAAIo5I,EAAezG,EAAGr4G,cAAc,gBAChC++G,EAAoBptF,iBAAiBmtF,GACrCE,EAAmBryI,SAASoyI,EAAkB1/E,YAAa,IAAMy/E,EAAa55F,YAAc05F,EACvFhsH,EAAI,EAAGA,EAAIisH,EAAcn5I,OAAQktB,IACtCisH,EAAcjsH,GAAGoyB,MAAMi3E,WAAa+iB,EAAkB,IAGlE,EACAjH,EAASjrH,UAAUoxH,cAAgB,SAAU97D,EAAci2D,EAAIh4C,EAAI49C,GAC/D,IAAIxgH,EAAQhQ,KACRukE,EAAW,IAAIoC,EAAAA,GAAMhS,EAAc,CACnC68D,eAAgBxxH,KAAKirH,cAAgB,OAAS,aAC9CrkD,SAAUgM,EACV5L,UAAWhnE,KAAKirH,cAAgB,CAAEpkD,EAAG,OAAQC,EAAG,QAAW,CAAED,EAAG2pD,GACxDxwH,KAAK2qC,UAAY,OAAS,OAAQm8B,EAAG,OAC7C30B,SAAWq+E,IAAuBxwH,KAAKirH,cAAiB,CAAEpkD,EAAG,QAASC,EAAG,OAAU,CAAED,EAAG,OAAQC,EAAG,UACnGC,WAAY,WACZp8B,UAAW3qC,KAAK2qC,UAChB4b,QAASqkE,EACTrqI,KAAM,WACF,IAAIqoI,GAAYlwF,EAAAA,EAAAA,IAAO,kBAAmB6rC,EAASvhF,SAC/C4lI,IACAA,EAAUrxF,MAAMyc,OAAS,UACzB40E,EAAUrxF,MAAMk4C,UAAY,IAEhC,IAAIm7C,GAAKlyF,EAAAA,EAAAA,IAAO,QAAS6rC,EAASvhF,SAClCuhF,EAASvhF,QAAQu0C,MAAMk4C,UAAY,GACnCm7C,EAAGn5G,QACHzB,EAAMyhH,YAAY7G,EACtB,IAEJ,OAAOrmD,CACX,EACA+lD,EAASjrH,UAAU6rH,sBAAwB,SAAUjiE,GACjDA,EAAUA,GAAWjpD,KAAKyoD,aAC1B,IAAIipE,EAAW1xH,KAAK4Q,cAAc,OAAQ,CAAE31B,UAAW,KAAO+kB,KAAK47B,gBAAkB,YACjF+1F,EAAa3xH,KAAKymD,oBAAuBtB,EAAAA,GAAmBI,SAASvlD,KAAK3M,OAAS2M,KAAK3M,MACxFu+H,EAAY5xH,KAAK4Q,cAAc,OAAQ,CACvC31B,UAAW,KAAO+kB,KAAK47B,gBAAkB,SAAUrqB,UAAWogH,IAE9DE,EAAW7xH,KAAK4Q,cAAc,OAAQ,CACtC31B,UAAW,aAAe+kB,KAAK47B,gBAAkB,QAASrF,MAAO,CAAE,SAAY,OAEnFm7F,EAASvgH,YAAYygH,GACrBF,EAASvgH,YAAY0gH,GACrB5oE,EAAQjxB,aAAa05F,EAAU1xH,KAAKhd,QACxC,EACAsnI,EAASjrH,UAAUyyH,kBAAoB,SAAUr2I,GACzCukB,KAAKirH,eACLjrH,KAAK4wH,kBAAkB,KAAM5wH,KAAKhd,QAAS,KAAMvH,EAAG,EAAG,EAAG,YAElE,EACA6uI,EAASjrH,UAAU0yH,mBAAqB,SAAUt2I,GAC9C,IAAIu0B,EAAQhQ,KACRouH,EAAkB,CAAEprI,QAASgd,KAAKhd,QAAS2rI,WAAY,KAAM5sI,MAAOtG,EACpEqO,MAAOkW,KAAKlW,MAAOvC,QAAQ,GAC/ByY,KAAK81B,QAAQ,cAAes4F,GAAiB,SAAU4D,GAC9CA,EAA2BzqI,SAC5ByoB,EAAMu8G,UAAU,KAAM9wI,GACtBu0B,EAAMhtB,QAAQ4zC,UAAUzB,IAAI,eAC5BnlB,EAAM8lB,QAAQ,UAAW,CAAE9yC,QAASgtB,EAAMhtB,QAAS2rI,WAAY,KAAM7kI,MAAOkmB,EAAMlmB,QAE1F,GACJ,EACAwgI,EAASjrH,UAAU4yH,QAAU,SAAUjvI,EAAS4pC,EAAG14B,EAAG0vC,EAAKF,GACvD,OAAOwuF,EAAAA,EAAAA,IAAIlvI,EAAS,KAAM,CAAE6jF,EAAGj6C,EAAGk6C,EAAG5yE,GAAK,CAAE0vC,IAAKA,EAAKF,KAAMA,GAChE,EACA4mF,EAASjrH,UAAUuxH,kBAAoB,SAAUh+C,EAAIg4C,EAAIx/H,EAAM3P,EAAGmoD,EAAKF,EAAMppD,GACzE,IAAI01B,EAAQhQ,KACRlW,EAAQ8oF,EAAKxnF,EAAK4U,KAAKukF,SAAS,WAAYvkF,KAAKuqH,OAAOtyI,OAAS,IAAM+nB,KAAKlW,MAC5EklC,EAAY,CACZhsC,QAAS4nI,EAAI9gI,MAAOA,EAAO6kI,WAAYvjI,EAAMrJ,MAAOtG,EAAG8L,QAAQ,EAAOq8C,IAAKA,EAAKF,KAAMA,EAAMgnF,cAAe,QAE3GyH,EAAW73I,EACf0lB,KAAK81B,QAAQ,aAAc9G,GAAW,SAAUojG,GAC5C,OAAQD,GACJ,IAAK,OACIniH,EAAMi7G,gBACgC,SAAnCmH,EAAiB1H,gBACjB16G,EAAMo7G,iBAAmBp7G,EAAMm7G,cAC/Bn7G,EAAM06G,cAAgB0H,EAAiB1H,eAE3C16G,EAAM4zB,IAAMwuF,EAAiBxuF,IAC7B5zB,EAAM0zB,KAAO0uF,EAAiB1uF,MAElC1zB,EAAM2kD,aAAap9B,MAAMuiB,QAAU,QAC9B9pC,EAAMi7G,gBACPj7G,EAAM2kD,aAAap9B,MAAMk4C,UAAYz/D,EAAM2kD,aAAazxB,wBAAwB8Q,OAAS,KACrFhkC,EAAMg7G,iBACN3C,EAAar4G,EAAMY,cAAeZ,EAAM2kD,aAAc3kD,EAAMogH,MAAO,UAAWpgH,EAAM26B,WAExF36B,EAAMqiH,kBAAkB52I,IAEvBu0B,EAAMi7G,eAAkBj7G,EAAM0zB,MAAS1zB,EAAM4zB,KAsB9C5zB,EAAMu0D,SAASyC,UAAY,CAAEH,EAAG,OAAQC,EAAG,QAC3C92D,EAAM2kD,aAAap9B,MAAMuiB,QAAU,KAtBnC9pC,EAAMu0D,SAASiE,gBAAgBx4D,EAAMkgH,OAAO,GAC5ClgH,EAAM0zB,KAAOxkD,SAAS8wB,EAAM2kD,aAAap9B,MAAMmM,KAAM,IACrD1zB,EAAM4zB,IAAM1kD,SAAS8wB,EAAM2kD,aAAap9B,MAAMqM,IAAK,IAC/C5zB,EAAM26B,YACN36B,EAAM0zB,KACF1zB,EAAMwgH,mBAAqBxgH,EAAM0zB,KAAO1zB,EAAM2kD,aAAal9B,YAAcznB,EAAMkgH,MAAMj3E,cAAcxhB,YAAc,EAC3GznB,EAAM0zB,KAAO1zB,EAAM2kD,aAAal9B,YAAcznB,EAAMkgH,MAAMz4F,aAGpEznB,EAAMxZ,WAAawZ,EAAM8rF,SAAW9rF,EAAMy7C,WAC1CtpB,uBAAsB,WAClBnyB,EAAMg3D,YACNh3D,EAAM2kD,aAAap9B,MAAMuiB,QAAU,EACvC,KAGA9pC,EAAMg3D,YACNh3D,EAAM2kD,aAAap9B,MAAMuiB,QAAU,KAO3C,MACJ,IAAK,OACD9pC,EAAM4zB,IAAMwuF,EAAiBxuF,IAC7B5zB,EAAM0zB,KAAO0uF,EAAiB1uF,KAC9B,MACJ,IAAK,YACI0uF,EAAiB7qI,SAClByoB,EAAMhtB,QAAQ4zC,UAAUjB,OAAO,eAC/B3lB,EAAMyhH,YAAYzhH,EAAMhtB,UAIpC,GAAiB,cAAbmvI,EACA,GAAIC,EAAiB7qI,OACbyoB,EAAM26G,QACN36G,EAAMu0D,SAAS78C,WACf6Q,EAAAA,EAAAA,IAAOvoB,EAAM2kD,eAERi2D,EAAG3vI,UAAUqb,QAAQ,SAAW,IACrCiiC,EAAAA,EAAAA,IAAOqyF,GAEX56G,EAAMu6G,OAAOz/G,WAGb,GAAIkF,EAAM26G,OACN,GAAI36G,EAAMi7G,cACNj7G,EAAM2kD,aAAap9B,MAAMqM,IAAM5zB,EAAM4zB,IAAM,KAC3C5zB,EAAM2kD,aAAap9B,MAAMmM,KAAO,MAChC1zB,EAAMo/G,gBAAgBp/G,EAAM2kD,kBAE3B,CACD3kD,EAAMu7G,kBAAkBv7G,EAAM2kD,cAC9B3kD,EAAMi8G,kBAAkBj8G,EAAM2kD,eAC9BpyB,EAAAA,EAAAA,IAAavyB,EAAM2kD,aAAc,CAAEh8B,SAAU,IAAMsxF,KACnDj6G,EAAM2kD,aAAap9B,MAAMmM,KAAO1zB,EAAM0zB,KAAO,KAC7C1zB,EAAM2kD,aAAap9B,MAAMqM,IAAM5zB,EAAM4zB,IAAM,KAC3C,IAAI0uF,EAAsD,SAAnCtiH,EAAM41G,kBAAkB9zD,OAAoB,CAC/D15E,KAAM43B,EAAM41G,kBAAkB9zD,OAAQhwB,SAAU9xB,EAAM41G,kBAAkB9jF,SACxEG,eAAgBjyB,EAAM41G,kBAAkB3lF,QACxC,KACJjwB,EAAMu0D,SAASW,KAAKotD,EAAkBtiH,EAAMkgH,MAChD,MAGAlgH,EAAMu7G,kBAAkBv7G,EAAMogH,OAC9BpgH,EAAMuiH,YAAYviH,EAAMkgH,MAAOlgH,EAAMogH,MAAOpgH,EAAM4zB,IAAK5zB,EAAM0zB,MAC7D1zB,EAAMo/G,gBAAgBp/G,EAAMogH,OAIxC,GAAsB,UAAlBpgH,EAAMy9G,QAAqB,CAC3B,IAAIV,EAAM/8G,EAAMg9G,gBAMhB,GALAp6C,EAAGh8C,UAAUjB,OAAO2zF,IAChBt5G,EAAM26G,QAAkC,IAAxB36G,EAAMu6G,OAAOtyI,QAC7B+3B,EAAM28G,qBAAqB,CAAC1/D,IAAW,CAACj9C,EAAMy4C,eAElDmqB,EAAGh8C,UAAUzB,IAAI83B,IACbj9C,EAAM/M,SAAWmmH,GAAO,CACxB,IAAI1c,EAAc,CAAE1pH,QAAS4vF,EAAIxnF,KAAMA,EAAMrJ,MAAOtG,GACpDu0B,EAAM8lB,QAAQ,SAAU42E,EAC5B,CACA95B,EAAGnhE,QACHs7G,EAAM/8G,EAAMg9G,gBACZ,IAAIlmI,EAAQkpB,EAAMyjE,UAAUs5C,EAAIn1I,SAAS,GAAI,EAAGo4B,EAAM/M,QACtD8pH,EAAIn1I,SAASkP,GAAO8vC,UAAUzB,IAAIm0F,IAClCyD,EAAIn1I,SAASkP,GAAO2qB,OACxB,CACJ,GACJ,EACA64G,EAASjrH,UAAU2nE,UAAY,WAC3B,IAAIwrD,EAEJ,GADAA,GAAUnjB,EAAAA,EAAAA,IAAUrvG,KAAK20D,aAAc,KAAM30D,KAAK0jC,KAAM1jC,KAAK4jC,MACxD5jC,KAAKwwH,oBAAsBxwH,KAAK2qC,aAAe6nF,EAAQl8H,QAAQ,UAAY,GACzEk8H,EAAQl8H,QAAQ,SAAW,GAAI,CAClC0J,KAAKukE,SAASyC,UAAUH,EAAI,OAC5B,IAAI4rD,GAAWr5F,EAAAA,EAAAA,IAAQp5B,KAAKkwH,MAAO,MAAQlwH,KAAK47B,gBAAkB,YAAYnE,YAC9Ez3B,KAAK0jC,KACD1jC,KAAK2qC,WAAY+nF,EAAAA,EAAAA,GAAkB1yH,KAAKkwH,MAAOlwH,KAAKwwH,mBAAqB,QAAU,OAAQ,OAAO9sF,KAC5F1jC,KAAK0jC,KAAO1jC,KAAK20D,aAAal9B,YAAcg7F,EAAW,CACrE,GACAD,GAAUnjB,EAAAA,EAAAA,IAAUrvG,KAAK20D,aAAc,KAAM30D,KAAK0jC,KAAM1jC,KAAK4jC,MACjDttC,QAAQ,SAAW,GAAKk8H,EAAQl8H,QAAQ,UAAY,KAC5D0J,KAAK0jC,KAAO1jC,KAAKiyH,QAAQjyH,KAAK20D,cAAc,GAAM,EAAO30D,KAAK4jC,IAAK5jC,KAAK0jC,MAAMA,MAElF1jC,KAAK20D,aAAap9B,MAAMmM,KAAO1jC,KAAK0jC,KAAO,IAC/C,EACA4mF,EAASjrH,UAAUksH,kBAAoB,SAAUpC,GAC7C,IAAIwJ,EAAgB,GAAGt1H,MAAMqC,KAAKypH,EAAK3kF,uBAAuB,gBAC9D,GAAKmuF,EAAc16I,OAAnB,CAGA,IAAI26I,EAASzJ,EAAK52G,cAAc,oDAChC,GAAKqgH,EAAL,CAGA,IAAInvB,EAAOmvB,EAAOrgH,cAAc,gBAChC,GAAKkxF,EAAL,CAGA,IAAIovB,EAAU7yH,KAAK2qC,UAAY,CAAE4D,QAAS,eAAgBkD,OAAQ,cAC9D,CAAElD,QAAS,cAAekD,OAAQ,eAClCqhF,EAAe5uF,iBAAiBu/D,GAChCsvB,EAAW7zI,SAAS4zI,EAAaE,SAAU,IACzC9zI,SAAS4zI,EAAa/+E,MAAO,KAAO70D,SAAS4zI,EAAa/+E,MAAO,IAAMg/E,IACzEA,EAAW7zI,SAAS4zI,EAAa/+E,MAAO,KAG5C,IAAIurC,EAAOyzC,EAAW7zI,SAEtB4zI,EAAaD,EAAQphF,QAAS,IAAMvyD,SAASglD,iBAAiB0uF,GAAQC,EAAQtkF,SAAU,IAAM,KAC9FokF,EAAc5zI,SAAQ,SAAU6zF,GAE5BA,EAAGr7C,MAAMs7F,EAAQtkF,SAAW+wC,CAChC,GAfA,CAJA,CAJA,CAyBJ,EACAgrC,EAASjrH,UAAUgzH,kBAAoB,SAAU52I,GAC7C,IAAIwtE,EAAUjpD,KAAKyoD,aACnB,GAAIQ,EAAQrxE,SAAS,GAAGg/C,UAAUM,SAAS,mBAA4C,IAAvBl3B,KAAKuqH,OAAOtyI,OAAc,CACtF,IAAIw0I,GAAO9+G,EAAAA,EAAAA,IAAkBlyB,GAAKukB,KAAKhd,SAAUo2C,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,IAAM8rF,IACrEgJ,GAAYv6F,EAAAA,EAAAA,IAAO,iBAAkBuwB,GACrCgqE,EAAU5vF,WAAaopF,EAAK34E,aAC5Bm/E,EAAU5vF,YAAe4vF,EAAU5vF,WAAaopF,EAAK34E,YAEzD,IAAIA,EAAam/E,EAAU5vF,WAAa4vF,EAAUx7F,YAC9Cy7F,EAAczG,EAAK34E,WAAa24E,EAAKh1F,YACrCqc,EAAao/E,IACbD,EAAU5vF,YAAe6vF,EAAcp/E,EAE/C,CACJ,EACAw2E,EAASjrH,UAAUkzH,YAAc,SAAU3/C,EAAIg4C,EAAIhnF,EAAKF,GACpD,IAAIyvF,EAAK,KAET,GADAnzH,KAAKozH,gBAAgBxI,GACjBA,IAAO5qH,KAAKhd,SAAY0gD,GAAQ,GAAKE,GAAO,EAAI,CAKhD,IAJI4uF,GAAUnjB,EAAAA,EAAAA,IAAUub,EAAI,KAAMlnF,EAAME,IAC5BttC,QAAQ,UAAY,IAC5BotC,GAAcknF,EAAGnzF,aAEjB+6F,EAAQl8H,QAAQ,WAAa,EAG7B,IADAstC,GADIX,EAASjjC,KAAKiyH,QAAQrH,GAAI,GAAO,EAAMhnF,EAAKF,IACnCE,IAAM,IACT,EAAG,CACT,IAAIyvF,EAAUn/E,YAActxC,SAAS6gC,gBAAgBoT,aAAgB+zE,EAAG1nF,wBAAwB8Q,OAC5Fq/E,GAAU,IACVzvF,EAAMyvF,EAEd,CAGJ,IADAb,GAAUnjB,EAAAA,EAAAA,IAAUub,EAAI,KAAMlnF,EAAME,IACxBttC,QAAQ,SAAW,EAE3BotC,GADIT,EAASjjC,KAAKiyH,QAAQrH,GAAI,GAAM,EAAOhnF,EAAKF,IAClCA,IAEtB,MAEI,GAAI9Q,EAAAA,GAAQY,SACRoQ,EAAMtqD,OAAO0mB,KAAKhd,QAAQu0C,MAAMqM,IAAIntC,QAAQ08H,EAAI,KAChDzvF,EAAOpqD,OAAO0mB,KAAKhd,QAAQu0C,MAAMmM,KAAKjtC,QAAQ08H,EAAI,SAEjD,CACD,IACIlwF,EADArW,EAAI5sB,KAAK2qC,UAAY,OAAS,QAElC/G,GADIX,GAASyvF,EAAAA,EAAAA,GAAkB9/C,EAAIhmD,EAAG,QACzBgX,IACbF,EAAOT,EAAOS,KACd,IAAI8uF,EACAc,GADAd,GAAUnjB,EAAAA,EAAAA,IAAUub,EAAI,KAAM5qH,KAAK2qC,UAAYjH,EAAOknF,EAAGnzF,YAAciM,EAAME,IACxDttC,QAAQ,SAAW,GAAKk8H,EAAQl8H,QAAQ,UAAY,EACzEg9H,IAEA5vF,GADAT,GAASyvF,EAAAA,EAAAA,GAAkB9/C,EAAI5yE,KAAK2qC,UAAY,QAAU,OAAQ,QACpDjH,OAEd1jC,KAAK2qC,WAAa2oF,KAClB5vF,EAAQ1jC,KAAK2qC,WAAa2oF,EAAc5vF,EAAOA,EAAOknF,EAAGnzF,aAEzD+6F,EAAQl8H,QAAQ,WAAa,IAE7BstC,GADAX,EAASjjC,KAAKiyH,QAAQrH,GAAI,GAAO,EAAMhnF,EAAKF,IAC/BE,IAErB,CAEJ5jC,KAAKozH,gBAAgBxI,GAAI,GACzBA,EAAGrzF,MAAMqM,IAAMA,EAAMuvF,EACrBvI,EAAGrzF,MAAMmM,KAAOA,EAAOyvF,CAC3B,EACA7I,EAASjrH,UAAU+zH,gBAAkB,SAAUxI,EAAItzF,QAC7B,IAAdA,IAAwBA,GAAY,GACxCszF,EAAGrzF,MAAMC,WAAaF,EAAY,SAAW,GAC7CszF,EAAGrzF,MAAMuiB,QAAUxiB,EAAY,QAAU,MAC7C,EACAgzF,EAASjrH,UAAUisH,YAAc,SAAUxhI,GACvC,IAAIkmB,EAAQhQ,KACR49E,EAAQ59E,KAAKuqH,OAASvqH,KAAKuqH,OAAOtyI,OAAS,EAC3C4K,EAASmd,KAAKgwH,UAAUpyC,GACxB6iB,EAAWzgG,KAAKuzH,SAASzpI,EAAOkW,KAAKukF,SAAS,UAAW3G,IACzD7H,EAAkB,CAClB0qB,SAAUA,EACV3pC,WAAY,OACZj0E,OAAQA,EACR2T,SAAUwJ,KAAKxJ,SACfg9H,eAAe,EACfC,aAAc,SAAUxlI,GACfA,EAAK2xB,QAAQ3xB,EAAKpL,OAAOA,EAAO+B,OACjCqJ,EAAK2xB,QAAQ3xB,EAAKpL,OAAOA,EAAO+B,MAAO8qB,EAAAA,EAAAA,IAAY,cAEnD/B,EAAAA,EAAAA,IAAkB1f,EAAK2xB,QAAQ0qC,kBAC/Br8D,EAAK2xB,QAAQ0qC,eAAiB,CAAC,GAE/B13B,EAAAA,GAAQ6C,MACRxnC,EAAK2xB,QAAQ0qC,eAAeE,KAAO,WACnCv8D,EAAK2xB,QAAQ0qC,eAAeopE,SAAW,MAGvC70I,OAAOulB,OAAOnW,EAAK2xB,QAAQ0qC,eAAgB,CAAEE,KAAM,WAAYkpE,SAAU,OAEzE1jH,EAAM26G,SAAW18H,EAAK2xB,QAAQ5P,EAAMu0E,SAAS,YAAa3G,MAC1D3vF,EAAK2xB,QAAQ0qC,eAAe,cAAgBr8D,EAAK2xB,QAAQ3xB,EAAKpL,OAAO9K,MACjEkW,EAAK2xB,QAAQ3xB,EAAKpL,OAAO9K,MAAQkW,EAAK2xB,QAAQ3xB,EAAKpL,OAAO+B,KAEhB,KAA9CqJ,EAAK2xB,QAAQ3xB,EAAKpL,OAAOA,EAAO+jE,YAChC34D,EAAK2xB,QAAQ3xB,EAAKpL,OAAOA,EAAO+jE,UAAY,KAEpD,EACAovB,YAAa,SAAU/nF,GASnB,GARIA,EAAK2xB,QAAQ5P,EAAMu0E,SAAS,YAAa3G,MACzC3vF,EAAK7C,KAAKwrC,UAAUzB,IAAIq0F,IACxBv7H,EAAK7C,KAAKkrC,aAAa,OAAQ,eAE/BmqE,GAAaxyG,EAAK2xB,QAAQ3xB,EAAKpL,OAAO+jE,UAClC34D,EAAK2xB,QAAQ5P,EAAMu0E,SAAS,YAAa3G,KAC7C3vF,EAAK7C,KAAKwrC,UAAUzB,IAAI,eAExBlnC,EAAK2xB,QAAQ3xB,EAAKpL,OAAOutB,QACtBniB,EAAK2xB,QAAQ3xB,EAAKpL,OAAOutB,OAAOn4B,OAAQ,CAC3C,IAAI4uE,EAAO72C,EAAMY,cAAc,OAAQ,CAAE31B,UAAWkvI,GAAQ,IAAMH,KAClE/7H,EAAK7C,KAAK+lB,YAAY01C,GACtB54D,EAAK7C,KAAKkrC,aAAa,gBAAiB,QACxCroC,EAAK7C,KAAKkrC,aAAa,gBAAiB,SACxCroC,EAAK7C,KAAKwrC,UAAUzB,IAAI,oBAC5B,CACInlB,EAAM26G,QAAU36G,EAAMxZ,WACtBvI,EAAK7C,KAAKkrC,aAAa,KAAMroC,EAAK2xB,QAAQ3xB,EAAKpL,OAAO+B,IAAIxJ,YAC1D6S,EAAK7C,KAAK81C,gBAAgB,YACtBjzC,EAAK7C,KAAKwrC,UAAUM,SAAS,cAC7BjpC,EAAK7C,KAAKwrC,UAAUjB,OAAO,aAE3B1nC,EAAK7C,KAAKwrC,UAAUM,SAAS,gBAC7BjpC,EAAK7C,KAAKwrC,UAAUjB,OAAO,eAE/B1nC,EAAK7C,KAAK81C,gBAAgB,eAE9B,IAAIlS,EAAY,CAAE5jC,KAAM6C,EAAK2xB,QAAS58B,QAASiL,EAAK7C,MACpD4kB,EAAM8lB,QAAQ,mBAAoB9G,EACtC,GAEJhvB,KAAK26B,cAAc,CAAE,MAAS36B,KAAKlW,QAAS,GACxCkW,KAAK2qH,SACL50C,EAAgBkrB,WAAajhG,KAAKhd,QAAQ4B,GAvrC9B,YAyrChB,IAAIgmI,EAAKp/C,EAAAA,GAASC,WAAWzrE,KAAK4Q,cAAe9mB,EAAOisF,GAAkB/1E,KAAKxJ,SAAUwJ,MAQzF,OAPA4qH,EAAGt0F,aAAa,WAAY,KACxBt2B,KAAK2qH,OACLC,EAAGt0F,aAAa,OAAQ,QAGxBs0F,EAAGt0F,aAAa,OAAQ,WAErBs0F,CACX,EACAN,EAASjrH,UAAUysH,aAAe,SAAUrwI,GACxC,IAAIgxI,EAAOhxI,EAAE0iD,OACbn+B,KAAK2zH,OAASlH,EACd,IAAIa,EAAMttH,KAAK0uH,MAAMjC,GACjBxjE,EAAUqkE,GAAMl0F,EAAAA,EAAAA,IAAQk0F,EAAK,MAAQttH,KAAK47B,gBAAkB,YAAc57B,KAAKyoD,aAC/EmrE,EAAa5zH,KAAKyoD,aAClB70C,EAAQ,IAAI5K,OAAO,uBAEnB6qH,GAAkB,EACtB,GAAK5qE,EAAL,CASA,IANmB,KAAfA,EAAQrkE,GACDgvB,EAAM8c,KAAKu4B,EAAQrkE,IAAI,GAGvBqkE,EAAQ12C,cAAc,MAAM3tB,MAE1Bob,KAAKhd,QAAQ4B,GAAI,CAE1B,GADAob,KAAK2sH,qBAAqB,CAACrD,GAASr8D,IAAW,CAACjtD,KAAKyoD,gBACjDzoD,KAAKuqH,OAAOtyI,OAIZ,OAHA47I,GAAkB,CAK1B,CACIvG,IAAOl0F,EAAAA,EAAAA,IAAQk0F,EAAK,MAAQttH,KAAK47B,gBAAkB,cAAgBi4F,GACnE7zH,KAAK2sH,qBAAqB,CAACrD,IAAUtpH,KAAK2qH,OAAS,CAAC1hE,GAAStoE,OAAOqf,KAAKsuH,aAAe,CAACrlE,IACzFjpD,KAAK2sH,qBAAqB,CAACrD,IAAUtpH,KAAK2qH,OAAS,CAACiJ,GAAYjzI,OAAOqf,KAAKsuH,aAAe,CAACsF,IAC5FtG,EAAI12F,UAAUzB,IAAIm0F,IACbtpH,KAAKorH,iBACNprH,KAAK2oD,aAAaltE,IAGjBukB,KAAK2qH,QAAU3qH,KAAKorH,kBAAoByI,GAC7C7zH,KAAK2sH,qBAAqB,CAACrD,IAAU,CAACrgE,GAAStoE,OAAOqf,KAAKsuH,cAE3DtuH,KAAK2qH,SACA3qH,KAAKorH,iBAAoBqB,EAAKxzE,gBAAkBgQ,IAAY7vB,EAAAA,EAAAA,IAAQqzF,EAAM,MAAQzsH,KAAK47B,gBAAkB,WACrG0xF,KAAQA,GAAQttH,KAAKoD,SAASkqH,EAAI1oI,IAAI,GAAM3M,SAAmC,UAAvB+nB,KAAK0qH,cAO7DmJ,IAAoB7zH,KAAKorH,iBAC1BprH,KAAKuqH,OAAOtyI,SACZ+nB,KAAK8zH,UAAW,EAChB9zH,KAAKusH,UAAU,KAAM9wI,KATzBukB,KAAK2sH,qBAAqB,CAACrD,IAAU,CAACrgE,IAClCjpD,KAAKuqH,OAAOtyI,SACZ+nB,KAAK8zH,UAAW,EAChB9zH,KAAKusH,UAAU,KAAM9wI,KASxBukB,KAAK8zH,UACN9zH,KAAK6vH,qBAET7vH,KAAK8zH,UAAW,EA7CpB,CA+CJ,EACAxJ,EAASjrH,UAAUwwH,mBAAqB,WACpC,GAAI7vH,KAAK2zH,OAAQ,CACb,IAAI1qE,GAAU7vB,EAAAA,EAAAA,IAAQp5B,KAAK2zH,OAAQ,mBACP,QAAxB3zH,KAAK2zH,OAAOx9F,SAAqB8yB,GACjCjpD,KAAK2sH,qBAAqB,CAACrD,GAASr8D,IAAW,CAAChE,GAExD,CACJ,EACAqhE,EAASjrH,UAAUstH,qBAAuB,SAAU/1F,EAAW5zC,GAU3D,IATA,IAAI4vF,EACA7jE,EAAU,SAAU5J,GACpByxB,EAAU73C,SAAQ,SAAU9D,IACxB23F,GAAKl6C,EAAAA,EAAAA,IAAO,IAAMz9C,EAAW+H,EAAQmiB,MAEjCytE,EAAGh8C,UAAUjB,OAAO16C,EAE5B,GACJ,EACSkqB,EAAI,EAAGA,EAAIniB,EAAQ/K,OAAQktB,IAChC4J,EAAQ5J,EAEhB,EACAmlH,EAASjrH,UAAUklF,SAAW,SAAU9mD,EAAUmgD,QAChC,IAAVA,IAAoBA,EAAQ,GAChC,IAAIP,EAAYr9E,KAAKnd,OAAO,GAAK46C,GACjC,MAA4B,kBAAd4/C,EAAyBA,EACjCA,EAAUO,GACNP,EAAUO,GAAOxiG,WADFiiG,EAAUA,EAAUplG,OAAS,GAAGmD,UAE7D,EACAkvI,EAASjrH,UAAU2wH,UAAY,SAAUpyC,GAErC,YADc,IAAVA,IAAoBA,EAAQ,GACzB,CACHh5F,GAAIob,KAAKukF,SAAS,SAAU3G,GAC5Bh3B,QAAS5mD,KAAKukF,SAAS,UAAW3G,GAClC7lG,KAAMioB,KAAKukF,SAAS,OAAQ3G,GAC5Bp3F,IAAKwZ,KAAKukF,SAAS,MAAO3G,GAC1BxtE,MAAOpQ,KAAKukF,SAAS,WAAY3G,GACjCqyC,UAAWjwH,KAAKukF,SAAS,YAAa3G,GAE9C,EACA0sC,EAASjrH,UAAUk0H,SAAW,SAAUzpI,EAAOlI,GAC3C,IAAK,IAAIujB,EAAI,EAAG8L,EAAMnnB,EAAM7R,OAAQktB,EAAI8L,EAAK9L,IACzC,GAAIrb,EAAMqb,GAAG,GAAKvjB,GACd,OAAO,EAGf,OAAO,CACX,EACA0oI,EAASjrH,UAAUosH,uBAAyB,SAAUhwI,IAC9C29C,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,mBAAmB5rB,cAAc,oBAAoB3tB,KAAOob,KAAKhd,QAAQ4B,KAG3Fob,KAAKhd,QAAQ/H,UAAUqb,QAAQ,gBAAkB,EACjD0J,KAAK8xH,kBAAkBr2I,GAGvBukB,KAAK+xH,mBAAmBt2I,GAEhC,EACA6uI,EAASjrH,UAAUspD,aAAe,SAAUltE,GACxC,GAAIukB,KAAKwqH,UACLxqH,KAAKwqH,WAAY,MAEhB,CACD,IAAIvhE,EAAUjpD,KAAKyoD,aACfgkE,EAAOhxI,EAAE0iD,OACTmvF,EAAMttH,KAAKstH,IAAMttH,KAAK0uH,MAAMjC,GAC5B74G,EAAQ,IAAI5K,OAAO,uBACnB+qH,EAAazG,GAAMl0F,EAAAA,EAAAA,IAAQk0F,EAAK,MAAQttH,KAAK47B,gBAAkB,YAAc,KAC7Eo4F,EAAW1G,GAAOyG,IAAe/zH,KAAK2qH,OAAS3qH,KAAKoD,SAASkqH,EAAI1oI,IAAI,GAAM3M,OAAS,EAClFgxE,EAAQhxB,kBAAkBrzC,KAAOmvI,EAAW97F,kBAAkBrzC,IAKpE,GAJIguC,EAAAA,GAAQY,UAAYxzB,KAAK2qH,SACzB3qH,KAAK2sH,qBAAqB,CAACrD,IAAU,CAACrgE,GAAStoE,OAAOqf,KAAKsuH,cAC3DtuH,KAAKiyE,iBAAiBx2F,IAEtB6xI,GAAOyG,GAAc/zH,KAAK2qH,OAAQ,CAClC,IAAIsJ,EAAeF,EAAWnvI,GAAKgvB,EAAM8c,KAAKqjG,EAAWnvI,IAAI,GAAKmvI,EAAWxhH,cAAc,kBAAkB3tB,GAC7G,GAAIob,KAAKhd,QAAQ4B,KAAOqvI,EACpB,MAER,CACA,GAAID,GAAuB,UAAXv4I,EAAEnB,OAAqBgzI,EAAI12F,UAAUM,SAASqyF,IAAS,CACnEvpH,KAAKk0H,cAAc5G,GACnB,IAAI/C,EAASvqH,KAAKoD,SAASkqH,EAAI1oI,IAAI,GAE/BoqC,EAAY,CAAEhsC,QAASsqI,EAAKliI,KADrB4U,KAAK7D,QAAQouH,GACoBxoI,MAAOtG,GACnDukB,KAAK81B,QAAQ,SAAU9G,EAC3B,CACA,GAAIglG,IAAwB,cAAXv4I,EAAEnB,MAAwBs4C,EAAAA,GAAQY,UAAYxzB,KAAKorH,iBAAkB,CAClF,IAAIR,OAAK,EACT,GAAI0C,EAAI12F,UAAUM,SAASqyF,IACvBqB,EAAK3hE,EAAQrxE,SAASooB,KAAKuqH,OAAOtyI,OAAS,GAC3C+nB,KAAKovH,gBAAgBxE,IACjBsD,EAAMluH,KAAKotH,aAAaxC,EAAI39D,MAE5BihE,EAAIt3F,UAAUjB,OAAOs3B,KAEzB10B,EAAAA,EAAAA,IAAO+0F,EAAIh9G,YACXtQ,KAAKuqH,OAAOz/G,WAGZ,IAAKwiH,EAAI12F,UAAUM,SAASsyF,IAAY,CACpCxpH,KAAKm0H,aAAc,EACnB,IAAIpH,EAAMO,EAAIh9G,WAEd,GADAtQ,KAAK2vH,OAAS3vH,KAAKqtH,OAAON,EAAKO,GAC3BttH,KAAK2qH,SAAW/3F,EAAAA,GAAQY,SAAU,CAClC,IAMQ06F,EANJkG,EAASp0H,KAAK2qH,OAASl8G,MAAMpP,UAAU/I,QAAQoJ,KAAK,CAACupD,GAAStoE,OAAOqf,KAAKsuH,cAAcl1F,EAAAA,EAAAA,IAAQ2zF,EAAK,MAAa/sH,KAAK47B,gBAAkB,aACvI57B,KAAKqtH,OAAOpkE,EAAS8jE,GAI3B,GAHI/sH,KAAKuqH,OAAO6J,KAAYp0H,KAAK2vH,SAC7B3vH,KAAKm0H,aAAc,GAEnBC,IAAWp0H,KAAKuqH,OAAOtyI,SAAsB,cAAXwD,EAAEnB,MAAwB0lB,KAAKm0H,cAC7DjG,EAAMluH,KAAKotH,aAAaL,EAAK9/D,MAE7BihE,EAAIt3F,UAAUjB,OAAOs3B,IAEzBjtD,KAAK8zH,UAAW,EAChB9zH,KAAKytH,QAAU,QACXztH,KAAKorH,iBACLprH,KAAKk0H,cAAc5G,GAEvBttH,KAAKusH,UAAU6H,EAAS,EAAG34I,GACvBukB,KAAKorH,iBACLprH,KAAKk0H,cAAc5G,EAG/B,CACKttH,KAAK8zH,UACN9zH,KAAKwvH,eAAe/zI,GAExBukB,KAAK8zH,UAAW,CACpB,CAER,MAEI,GAAI9zH,KAAK2qH,QAA2B,QAAjB8B,EAAKt2F,SAAqBn2B,KAAKuqH,OAAOtyI,SAAUmhD,EAAAA,EAAAA,IAAQqzF,EAAM,mBAAoB,CACjG,IAAI3e,GAAW10E,EAAAA,EAAAA,IAAQqzF,EAAM,IAAM/1C,IAC/B8Q,EAAO/4E,MAAMpP,UAAU/I,QAAQoJ,KAAKM,KAAKsuH,YAAaxgB,GAAY,EAClEtmB,EAAOxnF,KAAKuqH,OAAOtyI,SACnB+nB,KAAKusH,UAAU/kC,EAAO,EAAG/rG,GACrBqyH,GACA9tG,KAAK2sH,qBAAqB,CAACrD,GAASr8D,IAAW,CAAC6gD,IAG5D,MACS9tG,KAAK2qH,QAAU3qH,KAAKirH,eAAkC,SAAjBwB,EAAKt2F,SAC5Cs2F,EAAK71F,UAAUM,SAAS,eAC3Bl3B,KAAKyrH,uBAAuBhwI,GAGP,OAAjBgxI,EAAKt2F,UAAqBn2B,KAAK2qH,QAAS8B,EAAKxzE,cAAcriB,UAAUM,SAAS,mBAC7El3B,KAAKoD,SAASqpH,EAAKl6G,cAAc,IAAM03G,IAAMrlI,IAAI,GAAM3M,OAASw0I,EAAKxzE,gBAAkBgQ,KACnFqkE,GACDttH,KAAK2sH,qBAAqB,CAAC1/D,IAAW,CAAChE,IAEtCqkE,GAAQA,EAAI/6G,cAAc,IAAMy3G,KACjChqH,KAAKusH,UAAU,KAAM9wI,GAKzC,CACJ,EACA6uI,EAASjrH,UAAUmwH,eAAiB,SAAU/zI,GAC1C,KAAIkyB,EAAAA,EAAAA,IAAkBlyB,GAAtB,CAGA,IAAIo9G,EACJ,GAAI74F,KAAKm0H,YAAa,CAEdt7B,EADA74F,KAAKorH,iBAA0C,IAAvBprH,KAAKuqH,OAAOtyI,QACzBmhD,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,6BAGlB/E,EAAAA,EAAAA,IAAQp5B,KAAKhd,QAAS,4BAErC,IAAI0e,EAAM1B,KAAKuqH,OAAO5pI,OAAOqf,KAAK2vH,QAC9BvkI,EAAO4U,KAAK7D,QAAQuF,GAiBxB,GAhBItW,GAAQA,EAAK4U,KAAKukF,SAAS,WAAY7iF,EAAIzpB,OAAS,KACpDmT,EAAK4U,KAAKukF,SAAS,WAAY7iF,EAAIzpB,OAAS,IAAIA,SACjC,cAAXwD,EAAEnB,MAAyBs4C,EAAAA,GAAQY,UAAYxzB,KAAK2qH,SACpD3qH,KAAKk0H,cAAcl0H,KAAKstH,OAEtBttH,KAAKirH,eAAiBpyB,GAAc74F,KAAKirH,eAA4D,UAA3CjrH,KAAKstH,IAAIlsF,aAAa,oBAClFphC,KAAKstH,IAAIh3F,aAAa,gBAAiB,QACvCt2B,KAAKuqH,OAAO9qI,KAAKugB,KAAK2vH,QACtB3vH,KAAK0tH,SAAS1tH,KAAKstH,IAAKliI,EAAM,KAAM,KAAM3P,KAI/B,cAAXA,EAAEnB,MACF0lB,KAAKusH,UAAU,KAAM9wI,IAGxBo9G,EAAU,CACX,IAAIk0B,EAAM/sH,KAAKgtH,gBACXkB,EAAMluH,KAAKotH,aAAaL,EAAK9/D,IAC7BihE,IACAA,EAAI53F,aAAa,gBAAiB,SAClC43F,EAAIt3F,UAAUjB,OAAOs3B,IAE7B,CACJ,CACAjtD,KAAKytH,QAAU,EApCf,CAqCJ,EACAnD,EAASjrH,UAAU60H,cAAgB,SAAUthD,GACzC,IAAIs7C,EAAMluH,KAAKotH,aAAax6C,EAAG35B,cAAegU,IAC1CihE,GACAA,EAAIt3F,UAAUjB,OAAOs3B,IAEpBjtD,KAAK2qH,QACN/3C,EAAGh8C,UAAUjB,OAAO2zF,IAExB12C,EAAGh8C,UAAUzB,IAAI83B,GACrB,EACAq9D,EAASjrH,UAAU+tH,aAAe,SAAUxC,EAAIyJ,GAC5C,IAAK,IAAIlvH,EAAI,EAAG8L,EAAM25G,EAAGhzI,SAASK,OAAQktB,EAAI8L,EAAK9L,IAC/C,GAAIylH,EAAGhzI,SAASutB,GAAGyxB,UAAUM,SAASm9F,GAClC,OAAOzJ,EAAGhzI,SAASutB,GAG3B,OAAO,IACX,EAQAmlH,EAASjrH,UAAUi1H,aAAe,SAAUlpI,EAAMmpI,GAC9C,IAAI7yH,EAEAA,EADgB,kBAATtW,EACDA,EAGAA,EAAKxG,GAEf,IAAI4vI,GAAyB,IAAfD,EAEd,OADav0H,KAAKoD,SAAS1B,EAAK8yH,EAEpC,EASAlK,EAASjrH,UAAU5C,QAAU,SAAUrR,EAAMxG,EAAI2vI,GAC7C,IAAI7yH,EAEAA,EADA6yH,EACM3vI,GAAUwG,EAAKxG,GAGfA,GAAUwG,EAAKrT,KAEzB,IAAIwyI,EAASvqH,KAAKoD,SAAS1B,EAAK6yH,GAC5BE,EAAUz0H,KAAK7D,QAAQouH,GAC3B1rI,OAAOulB,OAAOqwH,EAASrpI,EAC3B,EACAk/H,EAASjrH,UAAUlD,QAAU,SAAUouH,GAEnC,IAAI7oH,GADJ6oH,EAASA,EAAOltH,SACCyN,MAEjB,OADY9K,KAAK0hG,SAAS6oB,GACb7oH,EACjB,EACA4oH,EAASjrH,UAAUqiG,SAAW,SAAU6oB,GAEpC,IADA,IAAIzgI,EAAQkW,KAAKlW,MACRqb,EAAI,EAAGA,EAAIolH,EAAOtyI,OAAQktB,IAC/Brb,EAAQA,EAAMygI,EAAOplH,IAAInF,KAAKukF,SAAS,WAAYp/E,IAEvD,OAAOrb,CACX,EACAwgI,EAASjrH,UAAUq1H,SAAW,SAAUC,EAAUpK,GAC9C,IAAIzgI,EAAQkW,KAAK0hG,SAAS6oB,GAC1BzgI,EAAM+8B,OAAO,EAAG/8B,EAAM7R,QACtB,IAAK,IAAIktB,EAAI,EAAGA,EAAIwvH,EAAS18I,OAAQktB,IACjCrb,EAAM+8B,OAAO1hB,EAAG,EAAGwvH,EAASxvH,GAEpC,EACAmlH,EAASjrH,UAAUguH,OAAS,SAAUzC,EAAIh4C,EAAIgiD,QAC1B,IAAZA,IAAsBA,GAAU,GACpC,IAAIlzH,EAAM+M,MAAMpP,UAAU/I,QAAQoJ,KAAKkrH,EAAGhzI,SAAUg7F,GAIpD,OAHIgiD,GAAWhK,EAAGhzI,SAAS,GAAGg/C,UAAUM,SAASqyF,KAC7C7nH,IAEGA,CACX,EACA4oH,EAASjrH,UAAUqvH,MAAQ,SAAUp8G,GACjC,MAAqB,OAAjBA,EAAK6jB,SAAoB7jB,EAAKskB,UAAUM,SAAS,eAC1C5kB,GAEJ8mB,EAAAA,EAAAA,IAAQ9mB,EAAM,iBACzB,EACAg4G,EAASjrH,UAAUw1H,oBAAsB,WAGrC,IAFA,IAAI/qI,EAAQkW,KAAKlW,MACbonE,EAAQ,EACHpqE,EAAQ,EAAGA,EAAQkZ,KAAKuqH,OAAOtyI,SACpC6R,EAAQA,EAAMhD,GAAOgD,OADuBhD,IAAS,CAKrDoqE,IACA,IAAI05D,EAAK5qH,KAAKgtH,cAAc97D,GAC5B,IAAK05D,EACD,MAEJ5qH,KAAK80H,WAAWlK,EAAI9gI,EACxB,CACJ,EACAwgI,EAASjrH,UAAUgsH,mBAAqB,SAAU/4G,GAC9C,KAAOA,EAAK2lB,mBACR3lB,EAAKkmB,YAAYlmB,EAAK2lB,mBAE1B,OAAO3lB,CACX,EASAg4G,EAASjrH,UAAUi8B,kBAAoB,SAAU+G,EAASC,GAgGtD,IA/FA,IAAItyB,EAAQhQ,KACRipD,EAAUjpD,KAAKyoD,aACfygC,EAAU,SAAU/1E,GACpB,OAAQA,GACJ,IAAK,WACGmvB,EAAQniD,WACRg3C,EAAAA,EAAAA,IAAY,CAAC8xB,GAAU3mB,EAAQniD,SAAS8T,MAAM,MAE9CouC,EAAQliD,WACRs2C,EAAAA,EAAAA,IAAS,CAACwyB,GAAU5mB,EAAQliD,SAASsW,QAAQ,OAAQ,KAAKwkD,OAAOhnD,MAAM,MAE3E,MACJ,IAAK,YACDg1D,EAAQryB,UAAU0hD,OAAOxwB,IACzB,MACJ,IAAK,kBACDja,EAAOqZ,eACPrZ,EAAOu9E,gBAAkB/oF,EAAQ+oF,gBACjCv9E,EAAO0L,aACP,MACJ,IAAK,kBACD,GAAIlX,EAAQ2oF,gBAAiB,CACzB,IAAI+J,EACAlnF,EAAO7qD,QAAQ4zC,UAAUM,SAAS,cAClCmxF,EAAax6E,EAAOj9B,cAAeq4C,EAASpb,EAAO7qD,QAAS,UAAW6qD,EAAOlD,WAG9E09E,EAAax6E,EAAOj9B,cAAeq4C,EAASpb,EAAO7qD,QAAS,UAAW6qD,EAAOlD,WAElFkD,EAAOygF,YAAYvvI,SAAQ,SAAUkqE,GACjC8rE,GAAOr8F,EAAAA,EAAAA,IAAO,QAASuwB,GACvBo/D,EAAar4G,EAAMY,cAAeq4C,EAAS8rE,EAAM,UAAW/kH,EAAM26B,UACtE,GACJ,KACK,CACD,IAAIqqF,EAAO/rE,EAAQrxE,SAAS,GACxBi2D,EAAO7qD,QAAQ4zC,UAAUM,SAAS,cAClC8xF,IAAc32G,EAAAA,EAAAA,IAAY2iH,EAAMnM,EAAAA,GAAUmM,GAG1ChM,IAAc32G,EAAAA,EAAAA,IAAY2iH,EAAMjM,EAAAA,GAAUiM,GAE9C/rE,EAAQ1xB,MAAMwf,SAAW,GACzBkS,EAAQ93C,YAAY08B,EAAO7qD,SAC3B6qD,EAAOygF,YAAYvvI,SAAQ,SAAUkqE,GACjC+rE,EAAO/rE,EAAQrxE,SAAS,GACxBoxI,IAAc32G,EAAAA,EAAAA,IAAY2iH,EAAMnM,EAAAA,GAAUmM,GAC1C/rE,EAAQ1xB,MAAMwf,SAAW,EAC7B,GACJ,CACA,MACJ,IAAK,QACD,IAAIr1C,OAAM,EACN6oH,OAAS,EACTn/H,OAAO,EAKX,GAHIyiD,EAAOiuD,SAAWjuD,EAAOr3C,UACzBq3C,EAAOb,cAAc,CAAC,aAErBnuD,OAAOC,KAAKwjD,EAAQx4C,OAAO7R,OAkB5B,KAAI6G,EAAOD,OAAOC,KAAKujD,EAAQv4C,OAC/B,IAASqb,EAAI,EAAGA,EAAIrmB,EAAK7G,OAAQktB,KAC7BolH,EAAS18E,EAAOonF,oBAAoB5yF,EAAS,GAAI/oD,OAAOwF,EAAKqmB,MAClDltB,QAAU41D,EAAO4a,aAAa7wE,SAASK,SAC9CypB,EAAM6oH,EAAOz/G,MACb1f,EAAOyiD,EAAO6zD,SAAS6oB,GACvB18E,EAAOqnF,YAAY,CAAC9pI,EAAKsW,IAAOtW,EAAKsW,GAAK3pB,MAC1C81D,EAAOhxC,WAAWzR,EAAMm/H,EAAQ7oH,GAChCmsC,EAAO6mF,SAAStpI,EAAMm/H,IAE1BA,EAAOtyI,OAAS,CAViB,KAlBD,CAUpC,GATA41D,EAAOinF,WAAWjnF,EAAO7qD,QAAS6qD,EAAO/jD,OACrC+jD,EAAOm9E,iBAAmBn9E,EAAO7qD,QAAQi2D,cAAcriB,UAAUM,SAAS,qBACtE2W,EAAO7qD,QAAQ4zC,UAAUM,SAAS,cAClCmxF,EAAax6E,EAAOj9B,cAAeq4C,EAASpb,EAAO7qD,QAAS,UAAW6qD,EAAOlD,WAG9E09E,EAAax6E,EAAOj9B,cAAeq4C,EAASpb,EAAO7qD,QAAS,UAAW6qD,EAAOlD,aAGjFkD,EAAOo9E,cACR,IAAK,IAAI9lH,EAAI,EAAG+rD,EAAQjI,EAAQs1C,kBAAmBp5F,EAAI+rD,EAAO/rD,KAC1DozB,EAAAA,EAAAA,IAAO0wB,EAAQksE,kBAGvBtnF,EAAO08E,OAAS,EACpB,EAkBZ,EACI18E,EAAS7tC,KACJuO,EAAK,EAAGvoB,EAAKnH,OAAOC,KAAKujD,GAAU9zB,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAE9D26E,EADWljG,EAAGuoB,GAElB,CACJ,EACA+7G,EAASjrH,UAAUy1H,WAAa,SAAUlK,EAAI9gI,GAC1C,IAAIylB,EAAAA,EAAAA,QAAevP,KAAK2qH,OACpBC,EAAK5qH,KAAKqrH,mBAAmBT,OAE5B,CACD,GAAI5qH,KAAKgrH,gBAAiB,CACtB,IACIoK,EADWp1H,KAAKyoD,aACD7wE,SAAS,GACxBooB,KAAKhd,QAAQ4zC,UAAUM,SAAS,cAChC8xF,IAAc32G,EAAAA,EAAAA,IAAY+iH,EAAKvM,EAAAA,GAAUuM,GAGzCpM,IAAc32G,EAAAA,EAAAA,IAAY+iH,EAAKrM,EAAAA,GAAUqM,EAEjD,CACAxK,EAAGr5G,UAAY,EACnB,CACU,GAAGlU,MAAMqC,KAAKM,KAAKsrH,YAAYxhI,GAAOlS,UAC5CmH,SAAQ,SAAU6zF,GAClBg4C,EAAGz5G,YAAYyhE,EACnB,GACJ,EACA03C,EAASjrH,UAAU41H,oBAAsB,SAAU5yF,EAASv7C,EAAO4a,GAC/D5a,EAAMrH,KAAKiiB,GACX,IAAI1iB,EAAMH,OAAOC,KAAKujD,EAAQv4C,MAAM4X,IAAMoJ,MAC1C,GAAY,UAAR9rB,EAAiB,CACjB,IAAIoM,EAAOi3C,EAAQv4C,MAAM4X,GACrB2zH,EAASx2I,OAAOC,KAAKsM,EAAKtB,OAAOghB,MACjCuqH,GACAr1H,KAAKi1H,oBAAoB7pI,EAAMtE,EAAOxN,OAAO+7I,GAErD,KAEgB,kBAARr2I,GAA2B8H,EAAM7O,OAAS,GAC1C6O,EAAMgkB,MAGd,OAAOhkB,CACX,EACAwjI,EAASjrH,UAAUxC,WAAa,SAAUzR,EAAMm/H,EAAQ7oH,GACpDtW,EAAKy7B,OAAOnlB,EAAK,GACjB,IAAI4zH,EAAMt1H,KAAKyoD,aAAa7wE,SACxB2yI,EAAOtyI,OAASq9I,EAAIr9I,SACpBsgD,EAAAA,EAAAA,IAAO+8F,EAAI/K,EAAOtyI,QAAQL,SAAS8pB,GAE3C,EAQA4oH,EAASjrH,UAAU6nD,aAAe,SAAUquE,QAClB,IAAlBA,IAA4BA,EAAgBv1H,KAAKm+B,QACrD,IAAI8qB,EAAUjpD,KAAKyoD,aACnB,GAAI8sE,EAAe,CAIf,IAHA,IAAIp3F,OAAS,EACT+oC,OAAc,EACdskD,GAAc1yF,EAAAA,EAAAA,IAAUy8F,GACnBpwH,EAAI,EAAG8L,EAAMu6G,EAAYvzI,OAAQktB,EAAI8L,EAAK9L,IAC/Cg5B,EAASqtF,EAAYrmH,GACjBnF,KAAK2qH,OACL31F,EAAAA,GAAaW,OAAOwI,EAAQ,QAASn+B,KAAKyrH,wBAGtC74F,EAAAA,GAAQmB,OACRmzC,GAAc70D,EAAAA,EAAAA,IAAY8rB,EAAQie,EAAAA,MAE9B8qB,EAAYx/C,UAIhBsN,EAAAA,GAAaW,OAAOwI,EAAQ,cAAen+B,KAAK4rH,cAI5D,IAAK5rH,KAAK2qH,OAAQ,CACd31F,EAAAA,GAAaW,OAAO31B,KAAKinG,cAAe,SAAUjnG,KAAK4zE,eACvD,IAAK,IAAIrlE,EAAK,EAAGvoB,GAAK8pD,EAAAA,EAAAA,IAAoB9vC,KAAKinG,eAAgB14F,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CACjF,IAAIinH,EAAWxvI,EAAGuoB,GAClBymB,EAAAA,GAAaW,OAAO6/F,EAAU,SAAUx1H,KAAK4zE,cACjD,CACJ,CACJ,CACKhhD,EAAAA,GAAQY,WACTwB,EAAAA,GAAaW,OAAO31B,KAAK2qH,OAAS/nH,SAAWqmD,EAAS,YAAajpD,KAAK6rH,sBACxE72F,EAAAA,GAAaW,OAAO/yB,SAAU,YAAa5C,KAAK+rH,2BAEpD/2F,EAAAA,GAAaW,OAAO/yB,SAAU,QAAS5C,KAAKgsH,sBAC5ChsH,KAAKmvH,oBAAoBlmE,GACzBjpD,KAAK4uE,UACT,EACA07C,EAASjrH,UAAU8vH,oBAAsB,SAAUnsI,GAC/C,IAAIg0E,GAAiB3kD,EAAAA,EAAAA,IAAYrvB,EAASi3D,EAAAA,IACtC+c,GACAA,EAAetvC,SAEvB,EACA4iG,EAASjrH,UAAU+vH,gBAAkB,SAAUxE,EAAI6K,GAC/C,IAEIC,EACAC,EAHA3lH,EAAQhQ,UACO,IAAfy1H,IAAyBA,GAAa,GAGJ,SAAlCz1H,KAAK4lH,kBAAkB9zD,QAAsB2jE,EAI7Cz1H,KAAKihC,UAAUN,QAAQiqF,EAAI,CACvBxyI,KAAM4nB,KAAK4lH,kBAAkB9zD,OAC7BhwB,SAAU9hC,KAAK4lH,kBAAkB9jF,SACjCG,eAAgBjiC,KAAK4lH,kBAAkB3lF,OACvCuB,MAAO,SAAU9gC,GACTsP,EAAMi7G,eACN0K,EAAWj1H,EAAQ1d,QAAQi2D,cAC3Bv4C,EAAQ1d,QAAQu0C,MAAM4a,SAAW,WACjCujF,EAAYC,EAAS1hF,aACrBvzC,EAAQ1d,QAAQu0C,MAAMk4C,UAAY/uE,EAAQ1d,QAAQixD,aAAe,KACjE0hF,EAASp+F,MAAMk4C,UAAY,KAG3B/uE,EAAQ1d,QAAQu0C,MAAMuiB,QAAU,QAChCp5C,EAAQ1d,QAAQu0C,MAAMk4C,UAAY/uE,EAAQ1d,QAAQkgD,wBAAwB8Q,OAAS,KAE3F,EACA9R,SAAU,SAAUxhC,GACZsP,EAAMi7G,gBACN0K,EAASp+F,MAAM23F,UAAawG,EAAYh1H,EAAQ1d,QAAQixD,aAAgB,KAEhF,EACA/rC,IAAK,SAAUxH,GACPsP,EAAMi7G,eACNvqH,EAAQ1d,QAAQu0C,MAAM4a,SAAW,GACjCzxC,EAAQ1d,QAAQu0C,MAAMk4C,UAAY,GAClCkmD,EAASp+F,MAAM23F,UAAY,GAC3BxuH,EAAQ1d,QAAQu0C,MAAMqM,IAAM,MAC5BljC,EAAQ1d,QAAQpL,SAAS,GAAG65B,QAC5BzB,EAAMyhH,YAAY/wH,EAAQ1d,QAAQpL,SAAS,KAG3Co4B,EAAM9H,IAAIxH,EAAQ1d,QAASyyI,EAEnC,IArCJz1H,KAAKkI,IAAI0iH,EAAI6K,EAwCrB,EACAnL,EAASjrH,UAAUoyH,YAAc,SAAU7G,GACvC,IAAIx/H,EAAO4U,KAAKuqH,OAAOtyI,OAAS+nB,KAAK7D,QAAQ6D,KAAKuqH,QAAU,KACxDv7F,EAAY,CACZhsC,QAAS4nI,EAAI+D,WAAYvjI,EAAMtB,MAAOsB,EAAOA,EAAKtB,MAAQkW,KAAKlW,OAEnEkW,KAAK81B,QAAQ,SAAU9G,GAClBhvB,KAAK2qH,QACN31F,EAAAA,GAAaG,IAAIy1F,EAAI,UAAW5qH,KAAKsyE,WAAYtyE,KAEzD,EACAsqH,EAASjrH,UAAU6I,IAAM,SAAU0iH,EAAI6K,GACnC,GAAIA,EAIA,GAHA7K,EAAGrzF,MAAMuiB,QAAU,QACnB8wE,EAAGrzF,MAAMk4C,UAAY,GACrBzvE,KAAKyxH,YAAY7G,GACbA,EAAGr4G,cAAc,IAAM+2G,IACvBsB,EAAGr4G,cAAc,IAAM+2G,IAAS73G,YAE/B,CACD,IAAIqlB,EAAM92B,KAAKyoD,aAAa7wE,SAASooB,KAAKqtH,OAAOrtH,KAAKyoD,aAAcmiE,GAAM,GACtE5qH,KAAK2vC,gBACC3vC,KAAK2vC,cAAc/Y,UAAUM,SAAS,qBAAuBl3B,KAAK2vC,cAAc/Y,UAAUM,SAAS,cAA+C,UAA/Bl3B,KAAK2vC,cAAcxZ,WAUxIW,EACAA,EAAIvkB,cAAc,IAAM06C,IAAUx7C,QAGlCzR,KAAKhd,QAAQyuB,QAGzB,MAGA,GAAIm5G,IAAO5qH,KAAKhd,QAAS,CACrB,IAAImqI,EAAMntH,KAAKotH,aAAaptH,KAAKhd,QAASsmI,IACtC6D,GACAA,EAAIv2F,UAAUjB,OAAO2zF,IAEzB,IAAI4E,EAAMluH,KAAKotH,aAAaptH,KAAKhd,QAASiqE,IACtCihE,GACAA,EAAIt3F,UAAUjB,OAAOs3B,IAEzB29D,EAAGrzF,MAAMuiB,QAAU,MACvB,MAEIvhB,EAAAA,EAAAA,IAAOqyF,EAGnB,EAMAN,EAASjrH,UAAUytC,eAAiB,WAChC,MAAO,EACX,EAOAw9E,EAASjrH,UAAUopD,WAAa,WAC5B,OAAOrvB,EAAAA,EAAAA,IAAQp5B,KAAKhd,QAAS,MAAQgd,KAAK47B,gBAAkB,WAChE,EACA0uF,EAASjrH,UAAU+D,SAAW,SAAUvd,EAAM0uI,EAAYzqI,EAAO8rI,EAAQC,EAAYj4C,GAKjF,IAAIxyF,OAJU,IAAVtB,IAAoBA,EAAQkW,KAAKlW,YACtB,IAAX8rI,IAAqBA,EAAS,SACf,IAAfC,IAAyBA,GAAa,QAC5B,IAAVj4C,IAAoBA,EAAQ,GAEhCA,EAAQi4C,EAAaj4C,EAAQ,EAAI,EACjC,IAAK,IAAIz4E,EAAI,EAAG8L,EAAMnnB,EAAM7R,OAAQktB,EAAI8L,EAAK9L,IAAK,CAE9C,GADA/Z,EAAOtB,EAAMqb,IACRovH,EAAanpI,EAAK4U,KAAKukF,SAAS,SAAU3G,IAAUxyF,EAAK4U,KAAKukF,SAAS,OAAQ3G,OAAa/3F,EAAM,CACnG+vI,EAAOn2I,KAAK0lB,GACZ,KACJ,CACK,GAAI/Z,EAAK4U,KAAKukF,SAAS,WAAY3G,KACjCxyF,EAAK4U,KAAKukF,SAAS,WAAY3G,IAAQ3lG,OAAQ,CAElD,IAAmC,KADnC29I,EAAS51H,KAAKoD,SAASvd,EAAM0uI,EAAYnpI,EAAK4U,KAAKukF,SAAS,WAAY3G,IAASg4C,GAAQ,EAAMh4C,IACpFg4C,EAAO39I,OAAS,GAKtB,CACD29I,EAAOt3H,QAAQ6G,GACf,KACJ,CAPQA,IAAM8L,EAAM,GACZ2kH,EAAO9qH,KAOnB,MAEQ3F,IAAM8L,EAAM,GACZ2kH,EAAOn2I,MAAM,EAGzB,CACA,OAASo2I,IAA6B,IAAfD,EAAO,GAAkBA,EAAL,EAC/C,EASAtL,EAASjrH,UAAUy2H,YAAc,SAAUhsI,EAAO8kE,EAAQ2lE,GAEtD,IAAI3J,EACAlpH,EACA6oH,OAHW,IAAX37D,IAAqBA,GAAS,GAMlC,IAFA,IACImnE,EADAh9I,EAAWwuE,GAENpiD,EAAI,EAAGA,EAAIrb,EAAM7R,OAAQktB,IAAK,CAEnC,GADAolH,EAASvqH,KAAKoD,SAAStZ,EAAMqb,GAAIovH,GAC7Bv0H,KAAKuqH,OAAOtyI,QACZ,GAAsB,IAAlBsyI,EAAOtyI,OAAc,CACrB89I,GAAW,EACX,IAAK,IAAIC,EAAM,EAAG/kH,EAAMs5G,EAAOtyI,OAAS,EAAG+9I,EAAM/kH,EAAK+kH,IAClD,GAAIzL,EAAOyL,KAASh2H,KAAKuqH,OAAOyL,GAAM,CAClCD,GAAW,EACX,KACJ,CAEJ,GAAIA,EACA,QAER,OAGA,GAAsB,IAAlBxL,EAAOtyI,OACP,SAGRypB,EAAM6oH,EAAOz/G,OACb8/G,EAAK5qH,KAAKgtH,cAAczC,EAAOtyI,YACpB01B,EAAAA,EAAAA,IAAkBjM,KACrBktD,EACI5uD,KAAK2qH,QACLC,EAAGhzI,SAAS8pB,GAAKk1B,UAAUjB,OAAO58C,GAClC6xI,EAAGhzI,SAAS8pB,GAAKw/B,gBAAgB,kBAG7BtO,EAAAA,GAAQY,WAAao3F,EAAGh0F,UAAUM,SAAS,iBAC3C0zF,EAAGhzI,SAAS8pB,EAAM,GAAGk1B,UAAUjB,OAAO58C,GAGtC6xI,EAAGhzI,SAAS8pB,GAAKk1B,UAAUjB,OAAO58C,GAKtCinB,KAAK2qH,QACLC,EAAGhzI,SAAS8pB,GAAKk1B,UAAUzB,IAAIp8C,GAC/B6xI,EAAGhzI,SAAS8pB,GAAK40B,aAAa,gBAAiB,SAG3C1D,EAAAA,GAAQY,WAAao3F,EAAGh0F,UAAUM,SAAS,iBAC3C0zF,EAAGhzI,SAAS8pB,EAAM,GAAGk1B,UAAUzB,IAAIp8C,GAGnC6xI,EAAGhzI,SAAS8pB,GAAKk1B,UAAUzB,IAAIp8C,GAKnD,CACJ,EAQAuxI,EAASjrH,UAAU42H,UAAY,SAAUnsI,EAAOyqI,GAC5Cv0H,KAAKk2H,cAAcpsI,GAAO,EAAOyqI,EACrC,EAQAjK,EAASjrH,UAAU82H,UAAY,SAAUrsI,EAAOyqI,GAC5Cv0H,KAAKk2H,cAAcpsI,GAAO,EAAMyqI,EACpC,EACAjK,EAASjrH,UAAU62H,cAAgB,SAAUpsI,EAAOssI,EAAQ7B,GAIxD,IAHA,IAAI3J,EACA9jI,EACAyjI,EACKplH,EAAI,EAAGA,EAAIrb,EAAM7R,OAAQktB,IAI9B,GAFAre,GADAyjI,EAASvqH,KAAKoD,SAAStZ,EAAMqb,GAAIovH,IAClBzpH,MACf8/G,EAAK5qH,KAAKgtH,cAAczC,EAAOtyI,QACvB,CACJ,IAAIo+I,EAAU9B,EAAa3J,EAAGhzI,SAASkP,GAAOlC,GAAKgmI,EAAGhzI,SAASkP,GAAOggE,YAClEsvE,GAAUC,IAAYvsI,EAAMqb,GAC5BylH,EAAGhzI,SAASkP,GAAO8vC,UAAUzB,IAAI+0F,IAGjCU,EAAGhzI,SAASkP,GAAO8vC,UAAUjB,OAAOu0F,GAE5C,CAER,EAQAI,EAASjrH,UAAUi3H,YAAc,SAAUxsI,EAAOyqI,GAI9C,IAHA,IAAI7yH,EACA6oH,EACAgM,EACKpxH,EAAI,EAAGA,EAAIrb,EAAM7R,OAAQktB,IAE9BzD,GADA6oH,EAASvqH,KAAKoD,SAAStZ,EAAMqb,GAAIovH,IACpBzpH,MACbyrH,EAASv2H,KAAK0hG,SAAS6oB,IAClB58G,EAAAA,EAAAA,IAAkBjM,IACnB1B,KAAKnD,WAAW05H,EAAQhM,EAAQ7oH,EAG5C,EASA4oH,EAASjrH,UAAU61H,YAAc,SAAUprI,EAAO/R,EAAMw8I,GACpDv0H,KAAKw2H,YAAY1sI,EAAO/R,EAAMw8I,EAClC,EASAjK,EAASjrH,UAAU24B,aAAe,SAAUluC,EAAO/R,EAAMw8I,GACrDv0H,KAAKw2H,YAAY1sI,EAAO/R,EAAMw8I,GAAY,EAC9C,EACAjK,EAASjrH,UAAUm3H,YAAc,SAAU1sI,EAAO/R,EAAMw8I,EAAYkC,GAEhE,IAAI7jD,EACAlxE,EACA6oH,EACAgM,EACAG,OALY,IAAZD,IAAsBA,GAAU,GAMpC,IAAK,IAAItxH,EAAI,EAAGA,EAAIrb,EAAM7R,OAAQktB,IAAK,CAEnCzD,GADA6oH,EAASvqH,KAAKoD,SAASrrB,EAAMw8I,IAChBzpH,MACbyrH,EAASv2H,KAAK0hG,SAAS6oB,GACvBmM,EAAW,IAAItM,GAASmM,EAAO,GAAI,QAASzsI,EAAMqb,IAAI,GACtDoxH,EAAO1vG,OAAO4vG,EAAU/0H,EAAM,EAAIA,EAAK,EAAGg1H,GAC1C,IAAIpB,EAAMt1H,KAAK2qH,OAAS,CAAC3qH,KAAKyoD,cAAc9nE,OAAOqf,KAAKsuH,aAAe,GAAGjxH,MAAMqC,KAAKM,KAAKyoD,aAAa7wE,UACvG,KAAK+1B,EAAAA,EAAAA,IAAkBjM,IAAQ6oH,EAAOtyI,OAASq9I,EAAIr9I,OAAQ,CACvDypB,EAAM+0H,EAAU/0H,EAAM,EAAIA,EAC1BkxE,EAAK5yE,KAAKsrH,YAAYiL,GAAQ3+I,SAAS8pB,GACvC,IAAIkpH,EAAK5qH,KAAK2qH,QAASjyF,EAAAA,EAAAA,IAAO,iBAAkB48F,EAAI/K,EAAOtyI,SAAWq9I,EAAI/K,EAAOtyI,QACjF2yI,EAAG5yF,aAAa46C,EAAIg4C,EAAGhzI,SAAS8pB,GACpC,CACJ,CACJ,EACA4oH,EAASjrH,UAAUwpE,iBAAmB,WAClC,IAAI74D,EAAQhQ,KACZ,CAAC,MAAO,OAAQ,UAAW,WAAWjhB,SAAQ,SAAUC,GACpDgxB,EAAMhtB,QAAQu0C,MAAM+zE,eAAetsH,EACvC,IACA,CAAC,OAAQ,WAAY,QAAS,SAASD,SAAQ,SAAUC,GACzC,UAARA,GAAmBgxB,EAAMhtB,QAAQ4zC,UAAUM,SAAS,kBACpDlnB,EAAMhtB,QAAQ4zC,UAAUjB,OAAO,kBAEM,IAArC,CAAC,QAAS,SAASr/B,QAAQtX,IAAgBgxB,EAAMhtB,QAAQo+C,aAAapiD,IACtEgxB,EAAMhtB,QAAQk+C,gBAAgBliD,GAE9BgxB,EAAM26G,QAAkB,UAAR3rI,GAAmBgxB,EAAMhtB,QAAQ4zC,UAAUM,SAAS,eACpElnB,EAAMhtB,QAAQ4zC,UAAUjB,OAAO,aAEvC,GACJ,EAMA20F,EAASjrH,UAAUqoB,QAAU,WACzB,IAAIuhC,EAAUjpD,KAAKyoD,aACnB,GAAIQ,EAAS,CAET,GADAjpD,KAAKknD,eACAlnD,KAAK2qH,OAgCN3qH,KAAKusH,aACDh9G,EAAAA,EAAAA,QAAevP,KAAK2qH,OACpB3qH,KAAKhd,QAAUgd,KAAKqrH,mBAAmBrrH,KAAKhd,SAG5Cgd,KAAKhd,QAAQuuB,UAAY,GAE7BvR,KAAK6oE,mBACL5f,EAAQ34C,WAAW0nB,aAAah4B,KAAKhd,QAASimE,GAC9CjpD,KAAK8qH,cAAgB,SAzCP,CAEd,GADA9qH,KAAK8qH,cAAcvzF,MAAMuiB,QAAU,GACA,oBAA/B95C,KAAK8qH,cAAc30F,SACnBM,EAAAA,EAAAA,IAAS,CAACz2B,KAAK8qH,eAAgB,CAAC,YAAa,QAAS,KAAO9qH,KAAK47B,kBAClE57B,KAAKhd,QAAUgd,KAAK8qH,mBAMpB,GAHI9qH,KAAKq6B,YAAcr6B,KAAK8qH,cAAcvsB,mBAAgE,OAA3Cv+F,KAAK8qH,cAAclzI,SAAS,GAAGu+C,SAC1Fn2B,KAAK26B,cAAc,CAAE,MAAS,KAAM,GAEpC/3B,SAASo5B,eAAeh8B,KAAK8qH,cAAclmI,IAAK,CAChD,IAAImmI,EAAS/qH,KAAK8qH,cAAc9+D,mBAC5B++D,GAAUA,IAAW9hE,EACrBjpD,KAAK8qH,cAAc7xE,cAAcjhB,aAAah4B,KAAKhd,QAAS+nI,GAG5D/qH,KAAK8qH,cAAc7xE,cAAc9nC,YAAYnR,KAAKhd,UAElDusB,EAAAA,EAAAA,QAAevP,KAAK2qH,OACpB3qH,KAAKhd,QAAUgd,KAAKqrH,mBAAmBrrH,KAAKhd,SAG5Cgd,KAAKhd,QAAQuuB,UAAY,IAE7B4mB,EAAAA,EAAAA,IAAO,GAAG96B,MAAMqC,KAAKM,KAAK8qH,cAAclzI,UAAWooB,KAAKhd,UACxDu1C,EAAAA,EAAAA,IAAOv4B,KAAK8qH,eACZ9qH,KAAK6oE,kBACT,CAEJ7oE,KAAK8qH,cAAgB,IACzB,CAaI9qH,KAAK2qH,QAAU3qH,KAAK8qH,gBACpBvyF,EAAAA,EAAAA,IAAOv4B,KAAKhd,SACZimE,EAAQ1xB,MAAMuiB,QAAU,GACxBmP,EAAQryB,UAAUjB,OAAO,KAAO31B,KAAK47B,gBAAkB,YACvDqtB,EAAQ/nB,gBAAgB,iBAGxB3I,EAAAA,EAAAA,IAAO0wB,GAEXx9C,EAAOpM,UAAUqoB,QAAQhoB,KAAKM,MAC1BA,KAAKxJ,UACLwJ,KAAKgtC,cAAc,CAAC,YAE5B,CACAhtC,KAAK4uE,SAAW,IACpB,EACAjvC,GAAW,EACPnwB,EAAAA,EAAAA,OACD86G,EAASjrH,UAAW,wBAAoB,GAC3CsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACD86G,EAASjrH,UAAW,kBAAc,GACrCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACD86G,EAASjrH,UAAW,cAAU,GACjCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACD86G,EAASjrH,UAAW,mBAAe,GACtCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACD86G,EAASjrH,UAAW,eAAW,GAClCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACD86G,EAASjrH,UAAW,cAAU,GACjCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACD86G,EAASjrH,UAAW,eAAW,GAClCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,KACVosF,EAASjrH,UAAW,gBAAY,GACnCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,IACVosF,EAASjrH,UAAW,kBAAc,GACrCsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVosF,EAASjrH,UAAW,uBAAmB,GAC1CsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,KACVosF,EAASjrH,UAAW,cAAU,GACjCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,KACVosF,EAASjrH,UAAW,cAAU,GACjCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,OACVosF,EAASjrH,UAAW,gBAAY,GACnCsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVosF,EAASjrH,UAAW,uBAAmB,GAC1CsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVosF,EAASjrH,UAAW,2BAAuB,GAC9CsgC,GAAW,EACPrB,EAAAA,EAAAA,IAAQ,CAAEq4F,OAAQ,KAAM5+I,KAAM,OAAQ6+I,SAAU,WAAYhwE,QAAS,UAAWpgE,IAAK,MAAOypI,UAAW,YAAar4I,SAAU,SAAWohH,KAC1IsxB,EAASjrH,UAAW,cAAU,GACjCsgC,GAAW,EACPpB,EAAAA,EAAAA,IAAW,GAAI6rF,KAChBE,EAASjrH,UAAW,aAAS,GAChCsgC,GAAW,EACPrB,EAAAA,EAAAA,IAAQ,CAAEwD,SAAU,IAAK7B,OAAQ,OAAQ6xB,OAAQ,aAAeu4D,KACjEC,EAASjrH,UAAW,yBAAqB,GAC5CirH,EAAW3qF,GAAW,CAClBhB,EAAAA,IACD2rF,EAEP,CA3oE8B,CA2oE5BjgF,EAAAA,ICrxEE9K,GAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAazCC,GAA0C,SAAUC,EAAYzB,EAAQn/C,EAAK6gD,GAC7E,IAA2H3pB,EAAvHD,EAAI5X,UAAUpmB,OAAQ4O,EAAIovB,EAAI,EAAIkoB,EAAkB,OAAT0B,EAAgBA,EAAOhhD,OAAOihD,yBAAyB3B,EAAQn/C,GAAO6gD,EACrH,GAAuB,kBAAZ/gC,SAAoD,oBAArBA,QAAQihC,SAAyBl5C,EAAIiY,QAAQihC,SAASH,EAAYzB,EAAQn/C,EAAK6gD,QACpH,IAAK,IAAI16B,EAAIy6B,EAAW3nD,OAAS,EAAGktB,GAAK,EAAGA,KAAS+Q,EAAI0pB,EAAWz6B,MAAIte,GAAKovB,EAAI,EAAIC,EAAErvB,GAAKovB,EAAI,EAAIC,EAAEioB,EAAQn/C,EAAK6H,GAAKqvB,EAAEioB,EAAQn/C,KAAS6H,GAChJ,OAAOovB,EAAI,GAAKpvB,GAAKhI,OAAOs1C,eAAegK,EAAQn/C,EAAK6H,GAAIA,CAChE,EAkBIgwI,GAA6B,SAAUprH,GASvC,SAASorH,EAAYn2H,EAAS1d,GAC1B,OAAOyoB,EAAO/L,KAAKM,KAAMU,EAAS1d,IAAYgd,IAClD,CAmFA,OA7FAu/B,GAAUs3F,EAAaprH,GAiBvBorH,EAAYx3H,UAAU+rC,UAAY,WAC9BprC,KAAK2qH,QAAS,EACd3qH,KAAKhd,QAAQ4B,GAAKob,KAAKhd,QAAQ4B,KAAM8qB,EAAAA,EAAAA,IAAY,mBACjDjE,EAAOpM,UAAU+rC,UAAU1rC,KAAKM,KACpC,EACA62H,EAAYx3H,UAAUowC,WAAa,WAC/BhkC,EAAOpM,UAAUowC,WAAW/vC,KAAKM,OACjCw2B,EAAAA,EAAAA,IAAWx2B,KAAKhd,QAAS,CAAE,KAAQ,UAAW,SAAY,MAC1Dgd,KAAKhd,QAAQu0C,MAAMu9B,QAASg8D,EAAAA,EAAAA,IAAiB9wH,KAAKhd,SAAS5H,UAC/D,EAUAy7I,EAAYx3H,UAAU9e,KAAO,SAAUqjD,EAAKF,EAAMvF,GAC9C1yB,EAAOpM,UAAUquH,SAAShuH,KAAKM,KAAM,KAAM,KAAM4jC,EAAKF,EAAM,KAAMvF,EACtE,EAOA04F,EAAYx3H,UAAUmS,MAAQ,WAC1B/F,EAAOpM,UAAUktH,UAAU7sH,KAAKM,KACpC,EASA62H,EAAYx3H,UAAUi8B,kBAAoB,SAAU+G,EAASC,GACzD72B,EAAOpM,UAAUi8B,kBAAkB57B,KAAKM,KAAMqiC,EAASC,GACvD,IAAK,IAAI/zB,EAAK,EAAGvoB,EAAKnH,OAAOC,KAAKujD,GAAU9zB,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAE9D,OADWvoB,EAAGuoB,IAEV,IAAK,SACDvO,KAAKwR,QACLxR,KAAK7hB,OAASkkD,EAAQlkD,OACtB,MACJ,IAAK,SACD6hB,KAAKknD,aAAa5kB,EAAQnE,QAC1Bn+B,KAAKu5C,aAGjB,CACJ,EAOAs9E,EAAYx3H,UAAUu8B,cAAgB,WAClC,MAAO,aACX,EACA+D,GAAW,EACPzB,EAAAA,EAAAA,IAAS,KACV24F,EAAYx3H,UAAW,cAAU,GACpCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,KACV24F,EAAYx3H,UAAW,cAAU,GACpCsgC,GAAW,EACPpB,EAAAA,EAAAA,IAAW,GAAI6rF,KAChByM,EAAYx3H,UAAW,aAAS,GACnCw3H,EAAcl3F,GAAW,CACrBhB,EAAAA,IACDk4F,EAEP,CA/FiC,CA+F/BvM,ICnIE/qF,GAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GA+BzCo3F,GAAiC,SAAUrrH,GAS3C,SAASqrH,EAAgBzmH,EAAQssG,GAC7B,IAAI3sG,EAAQvE,EAAO/L,KAAKM,KAAMqQ,IAAWrQ,KAMzC,OALAgQ,EAAM+mH,UAAY,GAClB/mH,EAAMgnH,cAAgB,CAAC,EACvBhnH,EAAMwjB,UAAW,EACjBxjB,EAAM8sG,sBAAwBH,EAC9B3sG,EAAMgZ,SAAU,EACThZ,CACX,CAi4BA,OAj5BAuvB,GAAUu3F,EAAiBrrH,GAiB3BqrH,EAAgBz3H,UAAU43H,WAAa,SAAU38I,EAAMsmG,GACnD,IAAIlgF,EAAU,CACVq3D,OAAQ,CAAC,QAAS,WAAY,GAAI,WAAY,kBAAmB,cAC7D,qBAAsB,UAAW,GAAI,gBACzCm/D,OAAQ,CAAC,QAAS,WAAY,GAAI,aAAc,WAAY,GAAI,WAAY,cAAe,GAAI,iBAEnGx2H,EAAQlC,KAAOkC,EAAQq3D,OACvBr3D,EAAQy2H,SAAWz2H,EAAQq3D,OAC3Br3D,EAAQ02H,SAAW12H,EAAQq3D,OAE3B,IADA,IAAIl6B,EAAQ,GACH14B,EAAI,EAAGA,EAAIzE,EAAQ,GAAKpmB,GAAMrC,OAAQktB,IACvCzE,EAAQ,GAAKpmB,GAAM4E,SAASimB,EAAE/pB,WAAY,KAAKnD,OAC3C2oG,EACA/iD,EAAMp+C,KAAK,CACP1H,KAAMioB,KAAK2nH,kBAAkBjnH,EAAQ,GAAKpmB,GAAM4E,SAASimB,EAAE/pB,WAAY,MAAQ,MAC/EwrE,QAAS,yBAA2Bg6B,IAAalgF,EAAQ,GAAKpmB,GAAM4E,SAASimB,EAAE/pB,WAAY,KAAKiD,cAAgB,GAAK,iBAIzHw/C,EAAMp+C,KAAK,CACP1H,KAAMioB,KAAK2nH,kBAAkBjnH,EAAQ,GAAKpmB,GAAM4E,SAASimB,EAAE/pB,WAAY,MAAQ,QAKvFyiD,EAAMp+C,KAAK,CAAEwwI,WAAW,IAGhC,OAAOpyF,CACX,EAOAi5F,EAAgBz3H,UAAUqoB,QAAU,WAKhC,GAJI1nB,KAAK4nH,MACL5nH,KAAKq3H,iBACL5rH,EAAOpM,UAAU2lH,YAAYtlH,KAAKM,QAEjCA,KAAKwzB,UAAYxzB,KAAKs3H,QAAS,CAChC,IAAI1kD,EAAK5yE,KAAKs3H,QAAQt0I,QAAQuvB,cAAc,gBACtCqgE,IAAM+yC,EAAAA,EAAAA,IAAa/yC,EAAI,iBACzB5yE,KAAKu3H,cAEb,CACIv3H,KAAKk9G,SAAWl9G,KAAKk9G,OAAOtiF,aAC5B56B,KAAKw3H,cAEb,EACAV,EAAgBz3H,UAAUo4H,WAAa,SAAUn9I,EAAMkmI,EAAYkX,EAAaC,GAE5E33H,KAAKmpH,KAAOnpH,KAAKqQ,OAAOO,cAAc,MAAO,CAAE31B,UAAW,0BACtD+kB,KAAKqQ,OAAOs6B,UACZ3qC,KAAKmpH,KAAKvyF,UAAUzB,IAAI,SAGxBn1B,KAAKmpH,KAAKvyF,UAAUjB,OAAO,SAE3B31B,KAAKqQ,OAAOlwB,UACZ6f,KAAKmpH,KAAKvyF,UAAUzB,IAAIn1B,KAAKqQ,OAAOlwB,UAExC,IAAIyqI,EAAK5qH,KAAKqQ,OAAOO,cAAc,MAC/B6yF,EAAO+c,EAAa,gCAAkC,qBAE1D,GAAIxgH,KAAKqQ,OAAOpnB,cAAgD,SAAhC+W,KAAKqQ,OAAOurB,kBACpC57B,KAAKU,QAAQk3H,mBAAoB,CACrC,IAAIC,EAAS73H,KAAKqQ,OAAOynH,qBAAqBH,EAAWzrH,KAAKk1B,aAAa,aACvE22F,EAAY/3H,KAAKqQ,OAAOslG,iBAAiBgiB,EAAW/1I,OAAOqH,aAC3D+uI,EAAUD,GAAwB,cAAXF,EAA2D,oBAAjC,+BACjDI,EAAWF,GAAwB,eAAXF,EAA6D,qBAAlC,gCACnDK,EAAoB,WAAT59I,EAAqB0lB,KAAK2nH,kBAAkB,YAAwB,aAATrtI,GAAgC,SAATA,EAC7F0lB,KAAK2nH,kBAAkB,gBAAkB3nH,KAAK2nH,kBAAkB,yBAChEwQ,EAAqB,WAAT79I,EAAqB0lB,KAAK2nH,kBAAkB,YAAwB,aAATrtI,GAAgC,SAATA,EAC9F0lB,KAAK2nH,kBAAkB,gBAAkB3nH,KAAK2nH,kBAAkB,yBACpEiD,EAAGz5G,YAAYnR,KAAKo4H,eAAeF,EAASF,EAAO,oBACnDpN,EAAGz5G,YAAYnR,KAAKo4H,eAAeD,EAAUF,EAAQ,qBACrD,IAAIhI,EAAYjwH,KAAKqQ,OAAOO,cAAc,KAAM,CAAE31B,UAAW,8CAC7D2vI,EAAGz5G,YAAY8+G,EACnB,CACKjwH,KAAKU,QAAQk3H,oBACdhN,EAAGz5G,YAAYnR,KAAKo4H,eAAep4H,KAAK2nH,kBAAkB,eAAgBnH,EAAa,GAAK,aAAc/c,IAEjG,YAATnpH,GACAswI,EAAGz5G,YAAYnR,KAAKo4H,eAAep4H,KAAK2nH,kBAjC9B,CAAEuP,OAAQ,aAAc14H,KAAM,aAAc44H,SAAU,aAAcD,SAAU,iBAAkBp/D,OAAQ,gBAiChD,GAAKz9E,IAAQ,YAAao9I,GAAe13H,KAAKq4H,mBAAqB,eAAiB50B,EAAO,gBAAgB,IAEjLzjG,KAAKmpH,KAAKh4G,YAAYy5G,GACtB5qH,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAA4B,CAAErwC,QAASgd,KAAKmpH,OAC/DnpH,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAoC,CAAEmtF,WAAYA,GACzE,EACAsW,EAAgBz3H,UAAU+4H,eAAiB,SAAUz6H,EAAK1iB,EAAWq9I,EAAUC,GAC3E,IAAI3lD,EAAK5yE,KAAKqQ,OAAOO,cAAc,KAAM,CAAE31B,UAAWA,EAAY,iBAMlE,OALA23F,EAAGrhE,UAAY5T,EACfi1E,EAAG56C,aAAah4B,KAAKqQ,OAAOO,cAAc,OAAQ,CAAE31B,UAAW,uBAAyBq9I,EAAU/hG,MAAO,CAAE,cAAe,UAAaq8C,EAAG2oC,YACtIgd,GACA3lD,EAAGzhE,YAAYnR,KAAKqQ,OAAOO,cAAc,OAAQ,CAAE31B,UAAW,qBAE3D23F,CACX,EACAkkD,EAAgBz3H,UAAUm5H,aAAe,WACrCxjG,EAAAA,GAAaG,IAAIn1B,KAAK4nH,IAAK,YAAa5nH,KAAKy4H,aAAcz4H,MAC3Dg1B,EAAAA,GAAaG,IAAIn1B,KAAK4nH,IAAK,QAAS5nH,KAAK04H,eAAgB14H,KAC7D,EACA82H,EAAgBz3H,UAAUg4H,eAAiB,WACvCriG,EAAAA,GAAaW,OAAO31B,KAAK4nH,IAAK,YAAa5nH,KAAKy4H,cAChDzjG,EAAAA,GAAaW,OAAO31B,KAAK4nH,IAAK,QAAS5nH,KAAK04H,eAChD,EACA5B,EAAgBz3H,UAAUq5H,eAAiB,SAAUj9I,GACjD,IACIk9I,GAAWhT,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,eAClCw6F,IACI34H,KAAK2nH,kBAAkB,iBAAmBgR,EAASx+D,UAAUlf,QAC7Dj7C,KAAKmoH,cACLnoH,KAAKglH,eAEAhlH,KAAKU,QAAQk3H,oBACf53H,KAAK2nH,kBARF,CAAEuP,OAAQ,aAAc14H,KAAM,aAAc24H,SAAU,iBAAkBp/D,OAAQ,gBAQpD/3D,KAAKU,QAAQpmB,SAAWq+I,EAASx+D,UAAUlf,QAC7Ej7C,KAAKy4H,aAAah9I,GAG9B,EACAq7I,EAAgBz3H,UAAUk4H,aAAe,WACrCv3H,KAAK44H,aAAc,EACf54H,KAAKs3H,UAAYt3H,KAAKs3H,QAAQ18F,cAC9B56B,KAAKs3H,QAAQ5vG,WACbiO,EAAAA,EAAAA,IAAO31B,KAAK64H,OACZ74H,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAA8B,CAAE8K,OAAQ,KAAM1N,OAAQ,GAAI5lC,QAAQ,EAAOsrH,IAAKn2G,KAAKU,QAAQ0+D,SAEtH,EACA03D,EAAgBz3H,UAAUo5H,aAAe,SAAUh9I,GAC/C,IAAIukB,KAAKU,QAAQk3H,oBAAiC,cAAXn8I,EAAEnB,KAAzC,CAGA,IAGIi+I,EAHAp6F,EAAS1iD,EAAE0iD,OAAO5rB,cAAc,kBAChCqgE,GAAK+yC,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,eAC5B26F,EAAU94H,KAAKmpH,KAAK52G,cAAc,cAStC,GAPIumH,GACAA,EAAQliG,UAAUjB,OAAO,aAEzBi9C,IACAA,EAAGh8C,UAAUzB,IAAI,aACjBojG,EAAY3lD,EAAGh8C,UAAUM,SAAS,eAElCiH,EAAJ,CAGA,IAAKo6F,EAAW,CACZ,IAAIQ,EAAU/4H,KAAKmpH,KAAK52G,cAAc,eACjC5E,EAAAA,EAAAA,IAAkBorH,IACnBA,EAAQniG,UAAUjB,OAAO,cAE7B31B,KAAKu3H,cACT,CACA,IAAIyB,EAAeh5H,KAAKq4H,mBACxB,IAAKr4H,KAAK44H,aAAeL,EAAW,CAChC3lD,EAAGh8C,UAAUzB,IAAI,cACjBn1B,KAAK44H,aAAc,EACnB,IAAIK,EAAc,CACdnvI,MAAOkW,KAAKi3H,WAAWj3H,KAAKU,QAAQpmB,KAAM0+I,EAAeA,EAAaviI,QAAQ,MAAO,SAAMvb,GAC3Fw9C,OAAQ14B,KAAKk5H,cAAcl6H,KAAKgB,MAChC3a,QAAS2a,KAAKu3H,aAAav4H,KAAKgB,MAChC2qC,UAAW3qC,KAAKqQ,OAAOs6B,UACvBi7E,kBAAmB,CAAE9zD,OAAQ,QAC7BqnE,YAAan5H,KAAKo5H,aAAap6H,KAAKgB,MACpC7f,SAAU6f,KAAKU,QAAQk3H,oBAAsB53H,KAAKqQ,OAAOlwB,SACrD,6BAAoC6f,KAAKqQ,OAAOlwB,SAAW6f,KAAKU,QAAQk3H,mBACxE,4BAA8B53H,KAAKqQ,OAAOlwB,SAAW6f,KAAKqQ,OAAOlwB,SAAW,IAEpF6f,KAAKqQ,OAAOrtB,QAAQmuB,YAAYnR,KAAK64H,OACrC74H,KAAKs3H,QAAU,IAAIT,GAAYoC,EAAaj5H,KAAK64H,OACjD,IAAIQ,EAASr5H,KAAKmpH,KAAK52G,cAAc,cAAc2wB,wBAC/C/f,EAAM,CAAEygB,IAAK,EAAGF,KAAM,GAC1B,GAAI1jC,KAAKU,QAAQk3H,mBAAoB,CACjC,IAEI5jF,EADUpxC,SAAS2P,cAAc,gDAChB0hC,aAAe,EACpCj0C,KAAKs3H,QAAQt0I,QAAQu0C,MAAMyc,OAAS,eAAiBA,EAAS,MAC9Dh0C,KAAKs3H,QAAc,KAAEtjF,EAAQ,EAAGpxC,SAASuuB,MACzC,IAAIV,EAASzwB,KAAK2nH,kBALJ,CAAEuP,OAAQ,aAAc14H,KAAM,aAAc24H,SAAU,iBAAkBp/D,OAAQ,gBAKlD/3D,KAAKU,QAAQpmB,OACzD0lB,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAA8B,CAC7C8K,OAAQn+B,KAAKs3H,QAAQt0I,QAAQi2D,cAAexoB,OAAQA,EAAQ5lC,QAAQ,GAE5E,KACK,CACD,GAAI+nC,EAAAA,GAAQY,SAAU,CAClBxzB,KAAKwzB,UAAW,EAChB,IAAI8lG,EAAct5H,KAAKu5H,mBACvBp2G,EAAIygB,KAAOtjD,OAAO8zD,YAAcklF,EAAYtlF,QAAU,EACtD7wB,EAAIugB,MAAQpjD,OAAO+zD,WAAailF,EAAYvlF,OAAS,EACrD/zC,KAAKglH,cACLhlH,KAAKwzB,UAAW,CACpB,MAEIrQ,EAAIygB,IAAMhR,EAAAA,GAAQ6C,KAAOn1C,OAAO4zD,YAAcmlF,EAAOz1F,IAAMtjD,OAAOk5I,QAAUH,EAAOz1F,IACnFzgB,EAAIugB,KAAO1jC,KAAKy5H,kBAAkBz5H,KAAK4nH,KAE3C5nH,KAAKs3H,QAAc,KAAEn0G,EAAIygB,IAAKzgB,EAAIugB,KAAMjoD,EAAE0iD,OAC9C,EACAu7F,EAAAA,EAAAA,IAAiB15H,KAAKqQ,OAAOrtB,QAASgd,KAAKs3H,QAAQt0I,QAAQi2D,cAC/D,CAtDA,CAdA,CAqEJ,EACA69E,EAAgBz3H,UAAUg5H,iBAAmB,WACzC,IAAIW,EACA/zC,EAAajlF,KAAK25H,kBAAkB35H,KAAKU,QAAQ9e,OAerD,OAdIqjG,GAAoC,IAAtBA,EAAWhtG,OAErB+gJ,EAD2B,uBAA3B/zC,EAAW,GAAGrE,UAAgE,oBAA3BqE,EAAW,GAAGrE,SAClD,UAGA,eAIfqE,GAAoC,IAAtBA,EAAWhtG,SACzB+nB,KAAKq9G,SAAWr9G,KAAK88G,sBAAsB98G,KAAKU,QAAQpmB,KAAO,YAC/D0+I,EAAe/zC,EAAW,GAAGrE,UAG9Bo4C,CACX,EACAlC,EAAgBz3H,UAAU+5H,aAAe,SAAUnrI,GAC/C,GAAI+R,KAAKU,SAAWV,KAAKU,QAAQk3H,oBAAsB3pI,EAAKlM,MAAO,CAC/D,IAAIo8C,EAASlwC,EAAKlM,MAAMo8C,OACpBy7F,EAAez7F,EAAOvH,UAAUM,SAAS,oBACtCiH,EAAOvH,UAAUM,SAAS,mBAAqBiH,EAAOvH,UAAUM,SAAS,eAChFjpC,EAAK1G,QAAUqyI,CACnB,MAEQ3rI,EAAKlM,iBAAiB83I,YAAc5rI,EAAKlM,MAAMo8C,OAAOvH,UAAUM,SAAS,eACzEjpC,EAAK1G,QAAS,EAG1B,EACAuvI,EAAgBz3H,UAAUk6H,iBAAmB,WAEzC,OADAv5H,KAAKs3H,QAAQt0I,QAAQu0C,MAAMuiB,QAAU,QAC9B95C,KAAKs3H,QAAQt0I,QAAQkgD,uBAChC,EACA4zF,EAAgBz3H,UAAUo6H,kBAAoB,SAAUt7F,GACpD,IAAI27F,EAAe95H,KAAKu5H,mBAAmBxlF,MACvCgmF,EAAiB57F,EAAO+E,wBACxB82F,EAAUD,EAAep2F,MAAQm2F,EAAe95H,KAAKqQ,OAAOrtB,QAAQy1D,YACpEwhF,EAAe97F,EAAO1G,YAAc0G,EAAOsa,YAE/C,OADAwhF,EAAeA,EAAeA,EAAe,EAAI,EACzCD,EAAU,EAAMD,EAAep2F,MAAQ,EAAIs2F,EAAiBF,EAAer2F,KAAOo2F,EAAe,EAAIG,CACjH,EACAnD,EAAgBz3H,UAAUylH,WAAa,SAAUpkH,GAC7C,IAAIsP,EAAQhQ,KAIZ,GAHAA,KAAKw7B,YAAY96B,GACjBV,KAAKynH,iBAAiB/mH,GACtBV,KAAKk6H,WAAWx5H,IACZA,EAAQnZ,OAAZ,CAGAyY,KAAKm9G,UAAUpiF,WACf,IAAIo/F,EAAgBn6H,KAAK25H,kBAAkBj5H,EAAQ9e,QAAUoe,KAAK25H,kBAAkBj5H,EAAQ9e,OAAO3J,QAC/F+nB,KAAKU,QAAQ05H,gBAAgBj8I,QAAO,SAAUg4H,GAC1C,OAAOnmG,EAAMtP,QAAQ9e,QAAUu0H,EAAIv0H,KACvC,IAAG3J,OACP+nB,KAAKy3H,WAAW/2H,EAAQpmB,KAAM6/I,EAAe,EAAqB,IAAjBA,GAAuC,IAAjBA,EAAqBz5H,GAC5FV,KAAK4nH,IAAI5vF,aAAah4B,KAAKmpH,KAAMnpH,KAAK4nH,IAAIrM,YAC1Cv7G,KAAK4nH,IAAIhxF,UAAUzB,IAAI,iBACnBn1B,KAAKqQ,OAAOs6B,WACZ3qC,KAAK4nH,IAAIhxF,UAAUzB,IAAI,SAE3Bn1B,KAAK4nH,IAAIhxF,UAAUjB,OAAO,oBAC1B31B,KAAK64H,MAAQ74H,KAAKqQ,OAAOO,cAAc,KAAM,CAAE31B,UAAW,iBACtDylB,EAAQ0+D,OAAO+mD,gBACfnmH,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAA4B,CAAC,GAEpDrzB,KAAKw4H,cAjBL,CAkBJ,EACA1B,EAAgBz3H,UAAU2lH,YAAc,WACpChlH,KAAK0nB,SACT,EACAovG,EAAgBz3H,UAAU65H,cAAgB,SAAUz9I,GAC5CA,EAAE2P,OACF4U,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAA0B,CAAC,GAC9CrzB,KAAK24H,SAAWl9I,EAAE2P,KAClB4U,KAAKq6H,eAAe5+I,GAE5B,EAMAq7I,EAAgBz3H,UAAUg7H,eAAiB,SAAU5+I,GACjD,IAAIu0B,EAAQhQ,KACRm+B,EAAS1iD,EAAIA,EAAEuH,aAAU9H,EACzBkkF,EAASp/D,KAAKU,QAAQ9e,MACtBwjG,IAAaz3E,EAAAA,EAAAA,IAAkByxD,KAAWk7D,EAAAA,EAAAA,IAAel7D,GACzDm7D,IAAoB5sH,EAAAA,EAAAA,IAAkByxD,KAAWo7D,EAAAA,EAAAA,IAAkBp7D,GACnE+lD,EAAUnlH,KAAKqQ,OAAOO,cAAc,MAAO,CAC3C31B,UAAW,iBACX2J,GAAIwgG,EAAYm1C,EAAmB,YAAcn7D,EAAS,eAE9Dp/D,KAAKolH,OAASplH,KAAKqQ,OAAOO,cAAc,MAAO,CAC3C31B,UAAW,aACX2J,GAAIwgG,EAAYm1C,EAAmB,WAAan7D,EAAS,aAEzDp/D,KAAKU,QAAQk3H,oBACOh1H,SAAS2P,cAAc,yDAC7BpB,YAAYnR,KAAKolH,QAG/BplH,KAAKqQ,OAAOrtB,QAAQmuB,YAAYnR,KAAKolH,QAEzCplH,KAAKk9G,OAAS,IAAImI,EAAAA,GAAO,CACrB50F,OAAQzwB,KAAK2nH,kBAAkB,gBAC/B7B,SAAS,EACT2U,aAAcz6H,KAAKw3H,aAAax4H,KAAKgB,MACrCslH,eAAe,EACf97F,OAAQxpB,KAAKqQ,OAAOmZ,OACpB+7F,eAAe,EACfpnF,OAAQv7B,SAASuuB,KAEjB/iC,SAAS,EACTu8C,UAAW3qC,KAAKqQ,OAAOs6B,UACvBpqD,KAAM,WACF,IAAI27E,EAAMlsD,EAAMktG,OAAOl6H,QAAQuvB,cAAc,yBAC7C,GAAIvC,EAAMtP,QAAQ0+D,OAAOu7C,eAAgB,CACrC,IAAI+f,GAAkBJ,EAAAA,EAAAA,IAAetqH,EAAMtP,QAAQ0+D,OAAOx9E,QACtD44I,EAAAA,EAAAA,IAAkBxqH,EAAMtP,QAAQ0+D,OAAOx9E,OAASouB,EAAMtP,QAAQ0+D,OAAOx9E,MACrEi5H,EAAkB7qG,EAAMK,OAAOyrF,SAA4D,kBAAzC9rF,EAAMtP,QAAQ0+D,OAAOu7C,eAEvEG,EAAe9qG,EAAMK,OAAO0qG,eAAiB/qG,EAAMK,OAAO0qG,cAAcC,eAExEhrG,EAAMK,OAAO0qG,cAAcC,cAAclf,QACzC+e,GAAmBC,EACnB9qG,EAAMK,OAAO8qG,iBAAgB,WACzBj/C,EAAI3pD,cAAc,IAAMmoH,EAAkB,mBAAmBjpH,OACjE,IAGAyqD,EAAI3pD,cAAc,IAAMmoH,EAAkB,mBAAmBjpH,OAErE,CAIJ,EACAD,MAAOxR,KAAKw3H,aAAax4H,KAAKgB,MAC9BwlH,QAASxlH,KAAK26H,cAAc37H,KAAKgB,KAAMm+B,EAAQihC,GAC/C6B,QAAS,CAAC,CACF7Z,MAAOpnD,KAAK6kH,eAAe7lH,KAAKgB,KAAMo/D,GACtCsmD,YAAa,CACTn/D,QAASvmD,KAAK2nH,kBAAkB,YAAa3uH,WAAW,EACxD7Y,SAAU6f,KAAKqQ,OAAOlwB,SAAW,gBAAuB6f,KAAKqQ,OAAOlwB,SAAW,iBAGvF,CACIinE,MAAOpnD,KAAKw3H,aAAax4H,KAAKgB,MAC9B0lH,YAAa,CAAEn/D,QAASvmD,KAAK2nH,kBAAkB,gBAC3CxnI,SAAU6f,KAAKqQ,OAAOlwB,SAAW,oBAA2B6f,KAAKqQ,OAAOlwB,SAAW,sBAE/FomE,QAAS4+D,EACTpxE,MAAO,IACP6xE,kBAAmB,CAAE9zD,OAAQ,QAC7B3xE,SAAU6f,KAAKqQ,OAAOlwB,SAAW6f,KAAKqQ,OAAOlwB,SAAW,KAG5D6f,KAAKk9G,OAA4B,kBAAI,EACrCl9G,KAAK6lH,yBACL7lH,KAAKolH,OAAO9uF,aAAa,aAAct2B,KAAK2nH,kBAAkB,2BAC9D3nH,KAAK+2H,UAAUt3I,KAAKugB,KAAKk9G,QACzBl9G,KAAKk9G,OAAOnyE,SAAS/qC,KAAKolH,OAC9B,EACA0R,EAAgBz3H,UAAUwmH,uBAAyB,WAC/C,GAAI7lH,KAAKU,QAAQk3H,mBAAoB,CACjC,IAAIgD,EAAmBh4H,SAAS2P,cAAc,4BAC1CqoH,GACAA,EAAiBhkG,UAAUjB,OAAO,2BAEtC31B,KAAKk9G,OAAOj8C,QAAU,CAAC,CAAC,GACxBjhE,KAAKk9G,OAAOzsF,YAASv1C,EACrB8kB,KAAKk9G,OAAO/qE,SAAW,CAAE00B,EAAG,GAAIC,EAAG,IACnC9mE,KAAKk9G,OAAO/+E,OAASv7B,SAAS2P,cAAc,yDAC5CvS,KAAKk9G,OAAOnpE,MAAQ,OACpB/zC,KAAKk9G,OAAO4I,SAAU,EACtB9lH,KAAKk9G,OAAOoI,eAAgB,CAChC,CACJ,EAKAwR,EAAgBz3H,UAAUm4H,aAAe,WACrCx3H,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAA0B,CAAC,IACzCrzB,KAAKqQ,OAAOyrF,SAAW97F,KAAKqQ,OAAOu4C,aAA0C1tE,IAAhC8kB,KAAKqQ,OAAOwqH,kBAC1D5V,EAAAA,EAAAA,IAAuBjlH,KAAKqQ,OAAQ,CAAC,mBAEzCrQ,KAAK86H,cAAc96H,KAAK+2H,YACxBphG,EAAAA,EAAAA,IAAO31B,KAAKolH,QACZplH,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAA0B,CAAC,EAClD,EACAyjG,EAAgBz3H,UAAUs7H,cAAgB,SAAUx8F,EAAQihC,GAGxD,GAFAp/D,KAAK+6H,mBAAmB58F,EAAQihC,GAChCp/D,KAAKk9G,OAAOl6H,QAAQu0C,MAAMmM,KAAO,MAC5B1jC,KAAKU,QAAQk3H,mBAGb,CACD,IACI5jF,EADUpxC,SAAS2P,cAAc,gDAChB0hC,aAAe,EACpCj0C,KAAKk9G,OAAOl6H,QAAQu0C,MAAMqM,IAAMoQ,EAAS,IAC7C,MANIh0C,KAAKk9G,OAAOl6H,QAAQu0C,MAAMqM,IAAM,OAO/B5jC,KAAKU,QAAQk3H,oBAAsBhlG,EAAAA,GAAQY,UAAYlzC,OAAO+zD,WAAa,MAC5Er0C,KAAKk9G,OAAOl6H,QAAQu0C,MAAMwc,MAAQ,OAEtC/zC,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAA+B,CAAE+rC,OAAQA,EAAQ47D,OAAQh7H,KAAKm9G,YACjFn9G,KAAKk9G,OAAOh4C,QACZw0D,EAAAA,EAAAA,IAAiB15H,KAAKqQ,OAAOrtB,QAASgd,KAAKk9G,OAAOl6H,QAAQi2D,cAC9D,EACA69E,EAAgBz3H,UAAU07H,mBAAqB,SAAU58F,EAAQihC,GAC7D,IAAI69C,EAAgBj9G,KAAKk9G,OAAOl6H,QAAQuvB,cAAc,mBAClD0oH,EAAYj7H,KAAKqQ,OAAOO,cAAc,MAAO,CAAEW,UAAWvR,KAAK2nH,kBAAkB,iBAAkB1sI,UAAW,qBAClHgiI,EAAc9rG,YAAY8pH,GAE1B,IAAIC,EAAWl7H,KAAKqQ,OAAOO,cAAc,MAAO,CAAEW,UAAWvR,KAAKU,QAAQy6H,YAAalgJ,UAAW,oBAClGgiI,EAAc9rG,YAAY+pH,GAC1Bl7H,KAAKimH,eAAe7mD,EAAQ69C,EAChC,EAMA6Z,EAAgBz3H,UAAUwlH,eAAiB,SAAU1O,GACjD,IAOIilB,EAPAh2C,IAAaz3E,EAAAA,EAAAA,IAAkBwoG,KAAQmkB,EAAAA,EAAAA,IAAenkB,GACtDokB,IAAoB5sH,EAAAA,EAAAA,IAAkBwoG,KAAQqkB,EAAAA,EAAAA,IAAkBrkB,GAChEklB,EAAWj2C,EAAYm1C,EAAmBpkB,EAC1Cr2F,EAAS9f,KAAKolH,OAAO7yG,cAAc,IAAM8oH,EAAW,mBAAmBx/F,cAAc,GACrFy/F,EAAYt7H,KAAKolH,OAAO7yG,cAAc,IAAM8oH,EAAW,kBAAkBx/F,cAAc,GACvF0/F,EAASv7H,KAAKolH,OAAO7yG,cAAc,IAAM8oH,EAAW,oBAAoBx/F,cAAc,GACtF2/F,EAAYx7H,KAAKolH,OAAO7yG,cAAc,IAAM8oH,EAAW,mBAAmBx/F,cAAc,GAElE,WAAtB77B,KAAKU,QAAQpmB,OAEb8gJ,EADep7H,KAAKolH,OAAO7yG,cAAc,IAAM8oH,EAAW,eAAex/F,cAAc,GAC9DlgD,SAE7B,IACIwoG,EADWnkF,KAAKolH,OAAO7yG,cAAc,IAAM8oH,EAAW,wBAAwBx/F,cAAc,GACtElgD,QAAU,MAAQ,KACvB,OAAjB4/I,EAAOh+I,QACP4mG,EAAY,MAEhBnkF,KAAK+iH,eAAe/iH,KAAKU,QAAQ9e,MAAO05I,EAAU/9I,MAAOuiC,EAAOviC,MAAO4mG,EAAWi3C,EAAep7H,KAAKU,QAAQu+E,aAAcu8C,EAAUj+I,MAAOg+I,EAAOh+I,OACpJyiB,KAAKw3H,cACT,EAgBAV,EAAgBz3H,UAAU0jH,eAAiB,SAAU1lC,EAAWo+C,EAAeC,EAAYv3C,EAAW+I,EAAWjO,EAAc08C,EAAgBC,GAC3I,IAGIC,EAHA1lB,EAAMn2G,KAAKqQ,OAAOslG,iBAAmB31G,KAAKqQ,OAAOslG,iBAAiBt4B,GAAar9E,KAAKU,QAAQ0+D,OAC5Fx9E,EAAQoe,KAAKu2G,gBAAgBJ,GAAOA,EAAIa,gBAAkB35B,EAC1Dy+C,EAAQ,GAER/1F,EAAM,CACNtlD,SAAUuf,KAAMwM,QAASxM,KAAK+iH,eAAgBgZ,KAAM1+C,EAAW2+C,KAAMP,EAAeQ,KAAMP,EAAYQ,KAAM/3C,EAC5Gg4C,KAAMjvC,EAAWkvC,KAAMn9C,EAAco9C,KAAMV,EAAgBW,KAAMV,EAAar0I,QAAQ,GAG1F,GADAyY,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAoB0S,IACnCA,EAAIx+C,OAAR,CAGAu0I,EAAMr8I,KAAK,CACPmC,MAAOA,EACPuiG,UAAWA,EACX+I,UAAWA,EACXjO,aAAcA,EACd2B,SAAU66C,EACVl+I,MAAOwoD,EAAIk2F,KACX3hJ,KAAM0lB,KAAKU,QAAQpmB,OAEvBuhJ,EAAa,IAAI54C,EAAAA,EAAUrhG,EAAO65I,EAAcp9I,cAAe0nD,EAAIk2F,MAAO/uC,EAAWjO,IAChFtxE,EAAAA,EAAAA,IAAkBiuH,KAAiBjuH,EAAAA,EAAAA,IAAkBguH,KACtDG,EAAMr8I,KAAK,CACPmC,MAAOA,EACPuiG,UAAWA,EACX+I,UAAWA,EACXjO,aAAcA,EACd2B,SAAU+6C,EACVp+I,MAAOwoD,EAAIu2F,KACXhiJ,KAAM0lB,KAAKU,QAAQpmB,OAEvBuhJ,EAAaA,EAAW,GAAK13C,GAAWviG,EAAO+5I,EAAet9I,cAAeu9I,GAAc1uC,EAAWjO,IAE1G,IAAIhxF,EAAO,CACPgV,OAAQ,YAAas5H,iBAAkBT,EAAOl6I,MAAOoe,KAAKU,QAAQ9e,MAClE46I,YAAaX,EAAYY,gBAAiBX,GAE1C97H,KAAKu2G,gBAAgBJ,GACrBn2G,KAAK08H,iBAAiBzuI,EAAM6tI,EAAOD,GAGnC77H,KAAKU,QAAQ8L,QAAQve,EA/BzB,CAiCJ,EAEA6oI,EAAgBz3H,UAAU29G,iBAAmB,SAAU59C,EAAQ9J,EAAOqnE,EAAW13C,EAAY23C,GACzF,IAAIC,EAAe78H,KAAKqQ,OAAOO,cAAc,KAAM,CAAE31B,UAAW,kBAChEq6E,EAAMnkD,YAAY0rH,GAClB,IAAIC,EAAW98H,KAAKqQ,OAAOO,cAAc,KAAM,CAAE31B,UAAW,gBAC5D4hJ,EAAa1rH,YAAY2rH,GACzB,IAAIpf,EAAU19G,KAAKqQ,OAAOO,cAAc,MAAO,CAAE31B,UAAW,mBACxDmqG,IAAaz3E,EAAAA,EAAAA,IAAkByxD,KAAWk7D,EAAAA,EAAAA,IAAel7D,GACzDm7D,IAAoB5sH,EAAAA,EAAAA,IAAkByxD,KAAWo7D,EAAAA,EAAAA,IAAkBp7D,GACnEu+C,EAAY39G,KAAKqQ,OAChBO,cAAc,QAAS,CAAEhsB,GAAIwgG,EAAYm1C,EAAmBoC,EAAYv9D,EAASu9D,IACtFjf,EAAQvsG,YAAYwsG,GACpBmf,EAAS3rH,YAAYusG,GACrB,IAAIN,EAAOp9G,KAAKU,QAAQpmB,KAAO,WAC3BijI,EAAiBv9G,KAAK88G,sBAAsB,GAAKM,GACrDp9G,KAAKq9G,SAAWE,EAChB,IAAIC,EAAgBx9G,KAAKy9G,gBAAgBz9G,KAAKU,QAAQ0+D,OAAQ6lB,EAAY23C,GAEtEG,EAAW,GACX/8H,KAAK24H,YACLoE,EAAW/8H,KAAK24H,SAAS5gJ,KAAKslB,MAAM,GAAI,MACvB2C,KAAK2nH,kBAAkB,kBACpCnK,EAAgBof,EAAUG,OAAW7hJ,GAErC6hJ,IAAa/8H,KAAK2nH,kBAAkB,aACpCnK,EAAgBx9G,KAAK2nH,kBAAkBiV,EAAU,qBAAuB,qBAGhF,IAAIzmB,EAAMn2G,KAAKU,QAAQ0+D,OACnBg9C,EAAW,IAAIhjI,EAAAA,GAAau1B,EAAAA,EAAAA,IAAO,CACnCt1B,WAAYkkI,EACZ16H,OAAQ,CAAE9K,KAAM,OAAQwF,MAAO,SAC/BxF,KAAMylI,EACN7yE,UAAW3qC,KAAKqQ,OAAOs6B,UACvBxqD,SAAU6f,KAAKqQ,OAAOlwB,SAAW6f,KAAKqQ,OAAOlwB,SAAW,MACzDg2H,EAAIh4H,OAAOmqB,SACdtI,KAAK+2H,UAAUt3I,KAAK28H,GACpB,IAAI1sE,EAAM,CAAE,KAAQ1vC,KAAK68G,aAAa79G,KAAKgB,MAAO,OAAUA,KAAKg9H,oBAAoBh+H,KAAKgB,OAM1F,OALAi9H,EAAAA,EAAAA,IAAsBtf,EAAU/4H,GAAI,CAACi5H,EAAAA,GAAeA,EAAAA,GAAkBnuE,EAAK1vC,MAC3Eo8G,EAASv4G,iBAAiBg6G,EAAAA,GAAkB79G,KAAKg3H,cAAcrZ,EAAU/4H,IAAIi5H,EAAAA,KAC7EzB,EAASv4G,iBAAiBg6G,EAAAA,EAAiB79G,KAAKg3H,cAAcrZ,EAAU/4H,IAAIi5H,EAAAA,IAC5EzB,EAASrxE,SAAS4yE,GAEX,CAAEkf,aAAcA,EAAcj8C,SADtB5gF,KAAK+rD,iBAAiByxD,GAEzC,EACAsZ,EAAgBz3H,UAAU69H,4BAA8B,SAAUj4I,GAC1DA,EAAUjC,QAAQ4zC,UAAUM,SAAS,mBACrCimG,EAAAA,EAAAA,IAAoBl4I,EAAW,CAAC44H,EAAAA,GAAeA,EAAAA,GAAkB79G,MAE5D/a,EAAUjC,QAAQ4zC,UAAUM,SAAS,oBAC1CimG,EAAAA,EAAAA,IAAoBl4I,EAAW,CAACouC,EAAAA,IAAuBwqF,EAAAA,IAAiB79G,KAEhF,EACA82H,EAAgBz3H,UAAUw9G,aAAe,SAAU5uH,GAC/CA,EAAKs6E,MAAMvlF,QAAQu0C,MAAMu9B,QAAU90D,KAAKm9G,UAAUroD,OAAS,GAAG15E,UAClE,EACA07I,EAAgBz3H,UAAU29H,oBAAsB,SAAU/uI,GAClDA,EAAKjL,QAAQ4B,GAAGtG,SAAS,kBACzB0hB,KAAKy7H,cAAgBxtI,EAAK1Q,MAAMnC,WAGhC4kB,KAAK27H,eAAiB1tI,EAAK1Q,MAAMnC,UAEzC,EAKA07I,EAAgBz3H,UAAUkoH,gBAAkB,WACxC,MAAO,CAAEkU,cAAez7H,KAAKy7H,cAAeE,eAAgB37H,KAAK27H,eAAgB/5I,MAAOoe,KAAKU,QAAQ9e,MACzG,EACAk1I,EAAgBz3H,UAAU0sD,iBAAmB,SAAUh0E,GACnD,IAAIkmI,EAAgB,IAAIryB,EAAAA,EAAY5rF,KAAKq9G,UAAUhwB,cAAa,IAAIrP,EAAAA,GAAQjC,MAAM,OAAQ,QAAShkG,IACnG,OAAQ41B,EAAAA,EAAAA,IAAkBswG,EAAc,IAA+B,GAAzBA,EAAc,GAAG1gI,KACnE,EACAu5I,EAAgBz3H,UAAUo+G,gBAAkB,SAAUtH,EAAKlxB,EAAY23C,GACnE,IAAIh8C,EAYJ,OAVIA,EADAqE,GAAcA,EAAWhtG,OAAS,EACD,IAAtBgtG,EAAWhtG,OACjB2kJ,EAAU33C,EAAW,GAAGrE,SAAWqE,EAAW,GAAGrE,SACjDg8C,EAAU33C,EAAW,GAAGrE,cAAW1lG,EAEnC0hJ,GAAwB,WAAbzmB,EAAI77H,OAAsB67H,EAAIh4H,OAAOyiG,SAC1C,aAGAg8C,EAAUzmB,EAAIh4H,OAAOyiG,UAAY,aAAU1lG,EAEnD8kB,KAAKo9H,gBAAgBx8C,EAChC,EACAk2C,EAAgBz3H,UAAU+9H,gBAAkB,SAAUx8C,GAClD,IAAIq9B,EAAgB,IAAIryB,EAAAA,EAAY5rF,KAAKq9G,UAAUhwB,cAAa,IAAIrP,EAAAA,GAAQjC,MAAM,QAAS,QAAS6E,IACpG,OAAQjzE,EAAAA,EAAAA,IAAkBswG,EAAc,IAA8B,GAAxBA,EAAc,GAAGlmI,IACnE,EACA++I,EAAgBz3H,UAAU4mH,eAAiB,SAAU7mD,EAAQ69C,GACzD,IAAIh4B,EAAajlF,KAAK25H,kBAAkB,GAAKv6D,GACzC9J,EAAQt1D,KAAKqQ,OAAOO,cAAc,QAAS,CAAE31B,UAAW,eAAgBs7C,MAAO,CAAEi0B,KAAM,UAC3FyyD,EAAc9rG,YAAYmkD,GAC1B,IAAI+nE,EAAWr9H,KAAKqQ,OAAOO,cAAcitG,EAAAA,IACzCwf,EAAS9rH,UAAY,+DACrB+jD,EAAMnkD,YAAYksH,GAElB,IAAIjgB,EAAOp9G,KAAKg9G,iBAAiB59C,EAAQ9J,EAAO,iBAAkB2vB,GAAY,GAC9EjlF,KAAKy7H,cAAgBre,EAAKx8B,SAE1B5gF,KAAKqmH,gBAAgBjnD,EAAQg+C,EAAM,kBAAmBn4B,GAAY,GAClE,IAAId,EAAYnkF,KAAKqQ,OAAOO,cAAc,KAAM,CAAE31B,UAAW,qBAC7Dq6E,EAAMnkD,YAAYgzE,GAElBnkF,KAAKs9H,kBAAkBl+D,EAAQ+kB,EAAWc,GAE1Cm4B,EAAOp9G,KAAKg9G,iBAAiB59C,EAAQ9J,EAAO,kBAAmB2vB,GAAY,GAC3EjlF,KAAK27H,eAAiBve,EAAKx8B,SAE3B5gF,KAAKqmH,gBAAgBjnD,EAAQg+C,EAAM,mBAAoBn4B,GAAY,EACvE,EACA6xC,EAAgBz3H,UAAUi+H,kBAAoB,SAAUl+D,EAAQq7C,EAAIx1B,GAChE,IAAIs4C,EAAKv9H,KAAKqQ,OAAOO,cAAc,KAAM,CAAE31B,UAAW,eAAgBs7C,MAAO,CAAE,QAAW,OAC1FkkF,EAAGtpG,YAAYosH,GACf,IAAIC,EAAWx9H,KAAKqQ,OACfO,cAAc,MAAO,CAAE31B,UAAW,kBAAmBs7C,MAAO,CAAE,MAAS,2BACxE6uD,IAAaz3E,EAAAA,EAAAA,IAAkByxD,KAAWk7D,EAAAA,EAAAA,IAAel7D,GACzDm7D,IAAoB5sH,EAAAA,EAAAA,IAAkByxD,KAAWo7D,EAAAA,EAAAA,IAAkBp7D,GACnEq+D,EAAgBz9H,KAAKqQ,OAAOO,cAAc,QAAS,CAAEhsB,GAAIwgG,EAAYm1C,EAAmB,uBAAyBn7D,EAAS,uBAAwB7oC,MAAO,CAAE,KAAQ,WACnKmnG,EAAiB19H,KAAKqQ,OAAOO,cAAc,QAAS,CAAEhsB,GAAIwgG,EAAYm1C,EAAmB,wBAA0Bn7D,EAAS,wBAAyB7oC,MAAO,CAAE,KAAQ,WAE1KinG,EAASrsH,YAAYssH,GACrBD,EAASrsH,YAAYusH,GACrBH,EAAGpsH,YAAYqsH,GACW,WAAtBx9H,KAAKU,QAAQpmB,MACb0lB,KAAK29H,gBAAgBv+D,EAAQq7C,EAAI8iB,EAAI,cAAet4C,GAGxD,IAAI24C,EAAW,IAAIryE,EAAAA,EAAY,CAC3B3yE,MAAOonB,KAAK2nH,kBAAkB,OAC9BvvI,KAAM,UAAWuD,SAAS,EAC1BgvD,UAAW3qC,KAAKqQ,OAAOs6B,UACvBxqD,SAAU6f,KAAKqQ,OAAOlwB,SAAW6f,KAAKqQ,OAAOlwB,SAAW,KAE5D6f,KAAK+2H,UAAUt3I,KAAKm+I,GAEpB,IAAIC,EAAU,IAAItyE,EAAAA,EAAY,CAC1B3yE,MAAOonB,KAAK2nH,kBAAkB,MAC9BvvI,KAAM,UACNuyD,UAAW3qC,KAAKqQ,OAAOs6B,UACvBxqD,SAAU6f,KAAKqQ,OAAOlwB,SAAW6f,KAAKqQ,OAAOlwB,SAAW,KAE5D6f,KAAK+2H,UAAUt3I,KAAKo+I,GAEJ,SADF54C,GAAoC,IAAtBA,EAAWhtG,OAAegtG,EAAW,GAAGd,UAAY,QAE5Ey5C,EAASjiJ,SAAU,EACnBkiJ,EAAQliJ,SAAU,IAGlBkiJ,EAAQliJ,SAAU,EAClBiiJ,EAASjiJ,SAAU,GAGvBiiJ,EAAS7yF,SAAS0yF,GAClBI,EAAQ9yF,SAAS2yF,GACjBE,EAAS56I,QAAQgpE,mBAAmBp1B,UAAUzB,IAAI,oBAClD0oG,EAAQ76I,QAAQgpE,mBAAmBp1B,UAAUzB,IAAI,kBACrD,EAEA2hG,EAAgBz3H,UAAUy7H,cAAgB,SAAUpkG,GAChD,IAAK,IAAInoB,EAAK,EAAGsyB,EAAanK,EAAUnoB,EAAKsyB,EAAW5oD,OAAQs2B,IAAM,CAClE,IAAIjB,EAAMuzB,EAAWtyB,GACjBjB,IAAQA,EAAIstB,cACZ56B,KAAKk9H,4BAA4B5vH,GACjCA,EAAIoa,UAEZ,CACJ,EAEAovG,EAAgBz3H,UAAUgnH,gBAAkB,SAAUjnD,EAAQg+C,EAAMllB,EAAWjT,EAAY23C,GACvF,IAAIr/I,EAAQyiB,KAAKqQ,OAAOO,cAAc,KAAM,CAAE31B,UAAW,iBACzDmiI,EAAKyf,aAAa1rH,YAAY5zB,GAC9B,IAAI6nG,IAAaz3E,EAAAA,EAAAA,IAAkByxD,KAAWk7D,EAAAA,EAAAA,IAAel7D,GACzDm7D,IAAoB5sH,EAAAA,EAAAA,IAAkByxD,KAAWo7D,EAAAA,EAAAA,IAAkBp7D,GACnEmnD,EAAWvmH,KAAKqQ,OAAOO,cAAc,MAAO,CAAE31B,UAAW,oBACzD6iJ,EAAgB99H,KAAKU,QAAQ05H,gBAAgBzyH,MAAK,SAAUwuG,GAAO,OAAO/2C,IAAW+2C,EAAIv0H,KAAO,IAChGm8I,EAAiB/9H,KAAKU,QAAQ05H,gBAAgBj8I,QAAO,SAAUg4H,GAAO,OAAOA,EAAIv0H,QAAUw9E,CAAQ,IACvG,GAAIp/D,KAAKU,QAAQ0+D,OAAOu7C,eAAgB,CACpC,IAAI90H,EAAO,CAAC,EACRm4I,EAAYh+H,KAAKU,QAAQ0+D,OACzB0+D,GAAiB5lC,IACjBryG,EAAOma,KAAKi+H,mBAAmB/lC,EAAWryG,EAAMm4I,EAAW/4C,EAAY84C,IAE3E,IAAIljB,EAAkB76G,KAAKqQ,OAAOyrF,SAA2D,kBAAxC97F,KAAKU,QAAQ0+D,OAAOu7C,eAErEG,EAAe96G,KAAKqQ,OAAO0qG,eAAiB/6G,KAAKqQ,OAAO0qG,cAAcC,eAEtEh7G,KAAKqQ,OAAO0qG,cAAcC,cAAclf,QACxCmf,EAASj7G,KAAKqQ,OAAOrtB,QAAQ4B,GAAKo5I,EAAU9xH,IAAM,iBACtD,GAAI2uG,GAAmBC,EACnB96G,KAAKU,QAAQ0+D,OAAO87C,mBAApBl7G,CAAwCna,EAAMma,KAAKqQ,OAAQ,iBAAkB4qG,EAAQ,KAAM,KAAMsL,OAEhG,CACD,IAAIvjI,EAAUgd,KAAKU,QAAQ0+D,OAAO87C,mBAApBl7G,CAAwCna,EAAMma,KAAKqQ,OAAQ,iBAAkB4qG,IAC3FG,EAAAA,EAAAA,IAAemL,EAAUvjI,EAC7B,CACI63H,GAAmBC,EACnB96G,KAAKqQ,OAAO8qG,iBAAgB,WACxBoL,EAASh0G,cAAc,SAAS3tB,GAAKwgG,EAAYm1C,EAAmBriC,EAAY94B,EAAS84B,EACzF36G,EAAM4zB,YAAYo1G,EACtB,MAICvmH,KAAKqQ,OAAOo7C,UAAY86D,EAAS3uI,SAAS,GAAK2uI,EAASh0G,cAAc,UAAU3tB,GAAKwgG,EAClFm1C,EAAmBriC,EAAY94B,EAAS84B,EAC5C36G,EAAM4zB,YAAYo1G,GAE1B,KACK,CACD,IAAI2X,EAAal+H,KAAKqQ,OACjBO,cAAc,QAAS,CAAEhsB,GAAIwgG,EAAYm1C,EAAmBriC,EAAY94B,EAAS84B,IACtFquB,EAASp1G,YAAY+sH,GACrB3gJ,EAAM4zB,YAAYo1G,GAClB,IAAIO,OAAU,EACV3iC,OAAY,EACZc,GAAcA,EAAWhtG,OAAS,IAIlC6uI,GAHA3iC,EAAkC,IAAtBc,EAAWhtG,OAClB2kJ,EAAU33C,EAAW,GAAKA,EAAW,GACrC23C,EAAU33C,EAAW,QAAK/pG,IACPipG,EAAUvD,WAAaw8B,EAAKx8B,SAAYuD,EAAU5mG,WAAQrC,GAC9EyyB,EAAAA,EAAAA,IAAkBm5G,KAClBA,OAAU5rI,IAGN,CACR,OAAU8kB,KAAKm+H,mBAAmBn/H,KAAKgB,MACvC,OAAUA,KAAKo+H,qBAAqBp/H,KAAKgB,MACzC,KAAQA,KAAKq+H,WAAWr/H,KAAKgB,MAC7B,SAAYA,KAAKq+H,WAAWr/H,KAAKgB,MACjC,SAAYA,KAAKs+H,eAAet/H,KAAKgB,OAEnCA,KAAKU,QAAQpmB,MAAM0lB,KAAKU,QAAS0+D,EAAQ8+D,EAAYpX,EAAS9mH,KAAKqQ,OAAOs6B,UACpF,CACJ,EACAmsF,EAAgBz3H,UAAU4+H,mBAAqB,SAAU/lC,EAAWryG,EAAMm4I,EAAW/4C,EAAY84C,GAC7F,IAAIQ,EAA0B,oBAAdrmC,EAAkC,EAAI,EACtD,GAAkB,oBAAdA,GAAmC6lC,EAAe9lJ,OAAS,EAAG,CAC9D4N,EAAO,CAAEu5E,OAAQ6lB,aAAsBx2E,MAAQw2E,EAAW/lG,SAASq/I,EAAUnjJ,WAAY,KAAO6pG,GAChG,IAAI0N,EAAO3yF,KAAKU,QAAQ0+D,OAAOk5C,YAAcylB,EAAe9lJ,OAAS,EACtB,IAA1C+nB,KAAKU,QAAQ0+D,OAAOk5C,WAAWrgI,OAAe,EAAI,EAAKsmJ,EAC5D14I,EAAKma,KAAKU,QAAQ9e,OAASo8I,EAAUhnB,gBACjCh3G,KAAKU,QAAQ0+D,OAAOk5C,WAAWp5H,SAASyzG,EAAKv3G,WAAY,KAAK4iJ,EAAUhnB,iBACxE+mB,EAAe7+I,SAASyzG,EAAKv3G,WAAY,KAAKmC,MAC9CyiB,KAAKU,QAAQs2G,kBACbnxH,EAAKma,KAAKU,QAAQs2G,iBAAmBh3G,KAAKU,QAAQ0+D,OAC7Ck5C,WAAWp5H,SAASyzG,EAAKv3G,WAAY,KAAK4iJ,EAAUhnB,iBAEjE,CACA,OAAOnxH,CACX,EAEAixI,EAAgBz3H,UAAUs+H,gBAAkB,SAAUv+D,EAAQq7C,EAAIvtB,EAAWgL,EAAWjT,GACpF,IAAIu5C,EAAex+H,KAAKqQ,OAAOO,cAAc,MAAO,CAAE31B,UAAW,sBAAuBs7C,MAAO,CAAE,MAAS,2BACtG6uD,IAAaz3E,EAAAA,EAAAA,IAAkByxD,KAAWk7D,EAAAA,EAAAA,IAAel7D,GACzDm7D,IAAoB5sH,EAAAA,EAAAA,IAAkByxD,KAAWo7D,EAAAA,EAAAA,IAAkBp7D,GACnEq/D,EAAiBz+H,KAAKqQ,OAAOO,cAAc,QAAS,CAAEhsB,GAAIwgG,EAAYm1C,EAAmBriC,EAAY94B,EAAS84B,EAAW3hE,MAAO,CAAE,KAAQ,cAC9IioG,EAAartH,YAAYstH,GACzBvxC,EAAU/7E,YAAYqtH,GACtB,IAAI1X,KAAU7hC,GAAcA,EAAWhtG,OAAS,KAC3CgtG,GAAoC,IAAtBA,EAAWhtG,OAAegtG,EAAW,GAAGiI,UAAYjI,EAAW,GAAGiI,WAGjFwxC,EAAW,IAAI5lJ,EAAAA,EAAS,CACxBF,MAAOonB,KAAK2nH,kBAAkB,aAC9Bh9E,UAAW3qC,KAAKqQ,OAAOs6B,UAAWhvD,QAASmrI,EAC3C3mI,SAAU6f,KAAKqQ,OAAOlwB,SAAW6f,KAAKqQ,OAAOlwB,SAAW,KAE5D6f,KAAK+2H,UAAUt3I,KAAKi/I,GAEpBA,EAAS3zF,SAAS0zF,EACtB,EAEA3H,EAAgBz3H,UAAUg/H,WAAa,SAAU39H,EAAS0+D,EAAQo/C,EAAY1+F,EAAQ6+G,GAClF,IAAInlJ,GAASuqI,EAAAA,EAAAA,IAAoBrjH,EAAQlnB,OAAQknB,EAAQpmB,OAASomB,EAAQlnB,OACtEolJ,EAAa,IAAI3lJ,EAAAA,GAAW01B,EAAAA,EAAAA,IAAO,CACnCn1B,OAAQA,EACR2G,SAAU6f,KAAKqQ,OAAOlwB,SAAW,kBAAyB6f,KAAKqQ,OAAOlwB,SAAW,iBACjFuhF,YAAa1hE,KAAK2nH,kBAAkB,+BACpC5zE,MAAO,OACPpJ,UAAWg0F,EACXphJ,MAAO,IAAI+B,KAAKwgC,GAChB0J,OAAQxpB,KAAKqQ,OAAOmZ,QACrB9oB,EAAQ0+D,OAAOjhF,OAAOmqB,SACzBtI,KAAK+2H,UAAUt3I,KAAKm/I,GACpBA,EAAW7zF,SAASyzE,EACxB,EAEAsY,EAAgBz3H,UAAUi/H,eAAiB,SAAU59H,EAAS0+D,EAAQo/C,EAAY1+F,EAAQ6+G,GACtF,IAAInlJ,GAASuqI,EAAAA,EAAAA,IAAoBrjH,EAAQlnB,OAAQknB,EAAQpmB,MACrDukJ,EAAiB,IAAIjoD,EAAAA,GAAejoE,EAAAA,EAAAA,IAAO,CAC3Cn1B,OAAQA,EACR2G,SAAU6f,KAAKqQ,OAAOlwB,SAAW,kBAAyB6f,KAAKqQ,OAAOlwB,SAAW,iBACjFuhF,YAAa1hE,KAAK2nH,kBAAkB,+BACpC5zE,MAAO,OACPpJ,UAAWg0F,EACXphJ,MAAO,IAAI+B,KAAKwgC,GAChB0J,OAAQxpB,KAAKqQ,OAAOmZ,QACrB9oB,EAAQ0+D,OAAOjhF,OAAOmqB,SACzBtI,KAAK+2H,UAAUt3I,KAAKo/I,GACpBA,EAAe9zF,SAASyzE,EAC5B,EACAsY,EAAgBz3H,UAAUy/H,eAAiB,SAAUrjJ,GACjDA,EAAE2D,QAAS2/I,EAAAA,EAAAA,IAAqBtjJ,EAAE2D,OACtC,EAEA03I,EAAgBz3H,UAAU++H,qBAAuB,SAAU19H,EAAS0+D,EAAQo/C,EAAY1+F,EAAQ6+G,GAC5F,IAAIK,EAAiB,IAAIzlJ,EAAAA,GAAeo1B,EAAAA,EAAAA,IAAO,CAC3Cn1B,OAAQknB,EAAQlnB,OAChBkoF,YAAa1hE,KAAK2nH,kBAAkB,2BACpCh9E,UAAWg0F,EACXphJ,MAAOuiC,EACP0J,OAAQxpB,KAAKqQ,OAAOmZ,OACpBrpC,SAAU6f,KAAKqQ,OAAOlwB,SAAW6f,KAAKqQ,OAAOlwB,SAAW,MACzDugB,EAAQ0+D,OAAOjhF,OAAOmqB,SACzBtI,KAAK+2H,UAAUt3I,KAAKu/I,GACpBA,EAAej0F,SAASyzE,EAC5B,EAEAsY,EAAgBz3H,UAAU8+H,mBAAqB,SAAUz9H,EAAS0+D,EAAQo/C,EAAY1+F,EAAQ6+G,GAC1F,IAAIM,EAASj/H,KAAKU,QAAQ0+D,OACtBm3C,EAAkBv2G,KAAKu2G,gBAAgB0oB,GACvC5lJ,EAAak9H,EAAkB0oB,EAAO5lJ,WAAaqnB,EAAQrnB,WAC3DwJ,EAAS,CAAEtF,MAAOg5H,EAAkB0oB,EAAOjoB,gBAAkB53C,GAC7DojD,EAAS,IAAIlC,GAAa3xG,EAAAA,EAAAA,IAAO,CACjCt1B,WAAYA,aAAsBuyG,EAAAA,EAAcvyG,EAAa,IAAIuyG,EAAAA,EAAYvyG,GAC7EwJ,OAAQA,EACRu5F,MAAOp8E,KAAKmqF,WACZkW,UAAW,YACX72E,OAAQxpB,KAAKqQ,OAAOmZ,OACpBrpC,SAAU6f,KAAKqQ,OAAOlwB,SAAW,kBAAyB6f,KAAKqQ,OAAOlwB,SAAW,iBACjF2+H,UAAU,EACVp9C,YAAa1hE,KAAK2nH,kBAAkB,2BACpCh9E,UAAWg0F,EACX5mJ,KAAM+nC,GACPm/G,EAAO9gJ,OAAOmqB,SACjB,GAAIjvB,GAAc,WAAYA,EAAY,CACtC,IAAIkpI,GAAS3J,EAAAA,EAAAA,IAAa,CAAEj9B,YAAa,uBAAyB37E,KAAKmqF,YACvEnqF,KAAKqQ,OAAOylB,QAAQzC,EAAAA,IAAwBkvF,EAAOt8H,OACzCs8H,EAAO10B,SACb3mG,QAAQC,MAAK,SAAU1L,GACvB+mI,EAAOnpI,WAAa,IAAIuyG,EAAAA,EAAYnwG,EACxC,GACJ,CACAukB,KAAK+2H,UAAUt3I,KAAK+iI,GACpB,IAAI9yE,EAAM,CAAE,eAAkB1vC,KAAKk/H,iBAAiB1c,EAAQpjD,GAAS,MAASp/D,KAAKmiH,QAAQK,EAAQpjD,EAAQ1+D,EAAS89G,KACpHye,EAAAA,EAAAA,IAAsBze,EAAW55H,GAAI,CAACyuC,EAAAA,IAAuBwqF,EAAAA,IAAiBnuE,EAAK1vC,MACnFwiH,EAAO3+G,iBAAiBg6G,EAAAA,GAAgB79G,KAAKg3H,cAAcxY,EAAW55H,IAAIi5H,EAAAA,KAC1E2E,EAAO3+G,iBAAiBwvB,EAAAA,IAAuBrzB,KAAKg3H,cAAcxY,EAAW55H,IAAIyuC,EAAAA,MACjFmvF,EAAOz3E,SAASyzE,EACpB,EACAsY,EAAgBz3H,UAAU6/H,iBAAmB,SAAU1c,EAAQpjD,GAC3D,OAAO,SAAU3jF,GACb,IAAI2pG,IAAaz3E,EAAAA,EAAAA,IAAkByxD,KAAWk7D,EAAAA,EAAAA,IAAel7D,GAC7D3jF,EAAE2D,OAAS3D,EAAE2D,OAAOjB,QAAO,SAAUmvB,EAAKxmB,EAAO0f,GAC7C,OAAOA,EAAI1mB,KAAI,SAAUq/I,GACrB,OAAO/5C,GAAYg6C,EAAAA,EAAAA,IAA4B5c,EAAO3/H,OAAOtF,MAAO4hJ,GAC9DA,EAAU3c,EAAO3/H,OAAOtF,MAClC,IAAG+Y,QAAQ8uF,GAAYg6C,EAAAA,EAAAA,IAA4B5c,EAAO3/H,OAAOtF,MAAO+vB,GACpEA,EAAIk1G,EAAO3/H,OAAOtF,UAAYuJ,CACtC,GACJ,CACJ,EACAgwI,EAAgBz3H,UAAU8iH,QAAU,SAAUK,EAAQpjD,EAAQ1+D,EAAS89G,GACnE,IAAIxuG,EAAQhQ,KACZ,OAAO,WACH,IAAIolF,IAAaz3E,EAAAA,EAAAA,IAAkByxD,KAAWk7D,EAAAA,EAAAA,IAAel7D,GACzDm7D,IAAoB5sH,EAAAA,EAAAA,IAAkByxD,KAAWo7D,EAAAA,EAAAA,IAAkBp7D,GACnEigE,EAAcj6C,EAAYm1C,EAAmBn7D,EACjDojD,EAAO/V,WAAaz8F,EAAMo1G,OAAO7yG,cAAc,IAAM8sH,GAChD7gB,EAAW55H,KAAQy6I,EAAc,kBAC9B,iBACA,oBAAoBxjG,cAAc,GAAGt+C,MAC7CilI,EAAOxjC,WAA8B,WAAjBt+E,EAAQpmB,OACvB01B,EAAMo1G,OAAO7yG,cAAc,IAAM8sH,EAAc,eAAexjG,cAAc,GAAGlgD,QAEpF6mI,EAAO/V,YAAc9+F,EAAAA,EAAAA,IAAkB60G,EAAO/V,YAC1C,QADwD+V,EAAO/V,UAEvE,CACJ,EACOqqB,CACX,CAn5BqC,CAm5BnC/e,EAAAA,GCl7BEx4E,GAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAoBzC4/F,GAA6B,SAAU7zH,GAWvC,SAAS6zH,EAAYjvH,EAAQlnB,EAAgB2pH,EAAgB6J,GACzD,IAAI3sG,EAAQvE,EAAO/L,KAAKM,KAAMqQ,EAAQlnB,EAAgB2pH,IAAmB9yG,KAIzE,OAHAgQ,EAAMK,OAASA,EACfL,EAAM+3G,cAAe,EACrB/3G,EAAMuvH,gBAAkB,IAAIzI,GAAgBzmH,EAAQssG,GAC7C3sG,CACX,CA0DA,OA1EAuvB,GAAU+/F,EAAa7zH,GAuBvB6zH,EAAYjgI,UAAUqoB,QAAU,WAC5B1nB,KAAKu/H,gBAAgBva,aACzB,EACAsa,EAAYjgI,UAAUylH,WAAa,SAAUpkH,GACzCV,KAAKu/H,gBAAgBza,WAAWpkH,EACpC,EACA4+H,EAAYjgI,UAAU2lH,YAAc,WAChChlH,KAAKu/H,gBAAgBva,cACjBhlH,KAAK+nH,cACL/nH,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAqB,CAAC,EAEjD,EACAisG,EAAYjgI,UAAUqlH,kBAAoB,SAAUvO,GAChDn2G,KAAKu/H,gBAAgBpX,YAAYhS,EACrC,EACAmpB,EAAYjgI,UAAU8nH,sBAAwB,SAAUrhB,GAChDA,EACA9lG,KAAKu/H,gBAAgB/H,eAGrBx3H,KAAKglH,aAEb,EACAsa,EAAYjgI,UAAUulH,kBAAoB,SAAU32H,GAC3CA,EAAK63G,eAKN9lG,KAAKu/H,gBAAgB1a,eAAe52H,EAAKkoH,IAAIv0H,QAJ7Coe,KAAKu/H,gBAAgBnX,iBACrBpoH,KAAKu/H,gBAAgBva,cAK7B,EACAsa,EAAYjgI,UAAU0jH,eAAiB,SAAU1lC,EAAWo+C,EAAeC,EAAYv3C,EAAW+I,EAAWjO,EAAc08C,EAAgBC,GACvI57H,KAAKu/H,gBAAgBxc,eAAe1lC,EAAWo+C,EAAeC,EAAYv3C,EAAW+I,EAAWjO,EAAc08C,EAAgBC,EAClI,EAKA0D,EAAYjgI,UAAUkoH,gBAAkB,WACpC,OAAOvnH,KAAKu/H,gBAAgBhY,iBAChC,EAOA+X,EAAYjgI,UAAUu8B,cAAgB,WAClC,MAAO,aACX,EACO0jG,CACX,CA5EiC,CA4E/BxX,GC5EEl+H,GAAwB,WASxB,SAASA,EAAOymB,EAAQlnB,EAAgB2pH,GACpC9yG,KAAKmkF,UAAY,MACjBnkF,KAAKw/H,gBAAiB,EACtBx/H,KAAKy/H,gBAAiB,EACtBz/H,KAAKmrC,SAAU,EACfnrC,KAAKvhB,OAAS,CAAC,EACfuhB,KAAKi8G,UAAY,CAAC,EAClBj8G,KAAK0/H,SAAW,CAAC,EACjB1/H,KAAK2/H,eAAiB,GACtB3/H,KAAK1lB,KAAO,CAAE,KAAQ4pI,EAAoB,SAAY4D,EAAgB,MAASwX,IAE/Et/H,KAAK4/H,gBAAkB,CACnB1oG,SAAU,WAAY9gC,SAAU,WAAY++F,MAAO,QAAS0qC,YAAa,cAAeC,mBAAoB,qBAC5GC,SAAU,WAAYC,gBAAiB,kBAAmBC,SAAU,WAAY9pI,WAAY,aAAc47F,SAAU,WACpHpR,OAAQ,SAAUu/C,QAAS,UAAWhuC,KAAM,QAEhDlyF,KAAKmgI,eAAiB,CAAEv+I,MAAO,GAAIiJ,QAAQ,GAE3CmV,KAAKogI,gBAAkB,CAAC,IAAK,IAAK,KAClCpgI,KAAKqgI,gBAAkB,CAAC,IAAK,IAAK,KAClCrgI,KAAKy8H,gBAAkB,CAAC,EACxBz8H,KAAKqQ,OAASA,EACdrQ,KAAK7W,eAAiBA,EACtB6W,KAAK8yG,eAAiBA,EACtB9yG,KAAK6D,mBACL7D,KAAKsgI,qBACT,CAquCA,OA7tCA12I,EAAOyV,UAAUisC,OAAS,SAAU7vD,GAChC,KAAI6hG,EAAAA,EAASrhD,UAAU,gBAAiBxgD,IAAOukB,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,IAC3EvgC,EAAAA,EAASrhD,UAAU,gCAAiCxgD,IADxD,CAIA,IAAIk4H,EAAO3zG,KAAKqQ,OAGhB,GAFArQ,KAAK+hE,KAAO/hE,KAAK8yG,eAAe0R,WAAW,gBAC3CxkH,KAAKwgI,8BACmC,cAApCxgI,KAAKqQ,OAAOlnB,eAAe7O,MACvBq5H,EAAKS,QAAQn8H,OAAQ,CACrB,IAAIwoJ,EAAWzgI,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,gBAC7CkuH,IACA9qG,EAAAA,EAAAA,IAAO8qG,GAEX,IAAIC,EAAc,IAAIC,EAAAA,EAAY3gI,KAAK8yG,eAAgB8tB,EAAAA,GAASh3I,OAAQ+pH,GACvD3zG,KAAK8yG,eAAe0R,WAAW,uBACrCqc,gBAAgBD,EAAAA,GAASh3I,OAAQ,IAAI0wH,EAAmBt6G,KAAKqQ,OAAQrQ,KAAK8yG,iBACrF9yG,KAAK8gI,eAAiB9gI,KAAK8yG,eAAe0R,WAAW,kBACrDkc,EAAY19I,QAAUgd,KAAKqQ,OAAOO,cAAc,KAAM,CAAE31B,UAAW,gBACnE,IAAIihF,EAAMl8D,KAAK+gI,cAEf,GADA7kE,EAAIr2E,KAAOma,KAAKvhB,OACa,UAAzBk1H,EAAK4sB,gBACO5sB,EAAKqtB,uBAAuBzuH,cAAc,SAChDpB,YAAYuvH,EAAY19I,cAG9Bgd,KAAKqQ,OAAO4wH,mBAAmB1uH,cAAc,8BAA8BpB,YAAYuvH,EAAY19I,SAEvG,IAAIk+I,EAAUlhI,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,oBAChDvS,KAAKhd,QAAU09I,EAAYp1F,OAAO4wB,EAAKy3C,EAAKM,aAAc,KAAM,KAAMysB,EAAY19I,SAClF,IAAIm+I,EAASnhI,KAAKhd,QAAQuvB,cAAc,uBACpC4uH,IACAA,EAAOlmJ,UAAY,gCAEnBimJ,IACAA,EAAQjmJ,UAAY,iCAExB,IAAImmJ,EAAS,GAAG/jI,MAAMqC,KAAKM,KAAKhd,QAAQwhD,uBAAuB,uBAC3D48F,EAAOnpJ,QACPmpJ,EAAOA,EAAOnpJ,OAAS,GAAG2+C,UAAUzB,IAAI,0BAE5Cn1B,KAAKu5C,aACLv5C,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAqB,CAAEguG,KAAM,UACpD,CAvCJ,CAyCJ,EAQAz3I,EAAOyV,UAAUiiI,iBAAmB,SAAU1yE,GAC1C5uD,KAAKuhI,yBAAyBC,eAAiB5yE,EAC/C5uD,KAAKuhI,yBAAyBE,qBAAqBzhI,KAAKo/D,OAC5D,EAQAx1E,EAAOyV,UAAUqiI,eAAiB,SAAUvrB,GACxC,IAAI77H,EAAO67H,EAAIh4H,OAAO7D,MAAQ0lB,KAAKqQ,OAAOlnB,eAAe7O,KACzD0lB,KAAKm8G,aAAe,IAAIn8G,KAAK1lB,KAAK,GAAKA,GAAM0lB,KAAKqQ,OAAQrQ,KAAKqQ,OAAOlnB,eAAgB6W,KAAK8yG,eAAgB9yG,KAAKu8G,gBAAiBv8G,KACrI,EAOApW,EAAOyV,UAAUqoB,QAAU,WACvB,IAAIh7B,EAAcsT,KAAKqQ,OAAOrtB,QAC9B,GAAK0J,IAAiBA,EAAY6lB,cAAc,IAAMsrG,EAAAA,KAAyBnxH,EAAY6lB,cAAc,IAAMsrG,EAAAA,KAA/G,CAaA,GAVI79G,KAAKm8G,cACLn8G,KAAKm8G,aAAaz0F,UAGjB1nB,KAAKqQ,OAAOgqB,aAAer6B,KAAKqQ,OAAOuqB,aAAgB56B,KAAKqQ,OAAOnnB,iBACpE8W,KAAK7W,eAAeirH,QAAU,IAElCp0G,KAAK2hI,kBACL3hI,KAAK8D,sBACL9D,KAAKknD,eAC4B,cAA7BlnD,KAAK7W,eAAe7O,MAAwB0lB,KAAK7W,eAAeyyH,sBAEhE,IADA,IAAIgmB,EAAe,GAAGvkI,MAAMqC,KAAKM,KAAKhd,QAAQwhD,uBAAuB,wBAC5Dr/B,EAAI,EAAGA,EAAIy8H,EAAa3pJ,OAAQktB,IACjCy8H,EAAa1iJ,SAASimB,EAAE/pB,WAAY,KAAKygD,cAAc,IACvD+lG,EAAa1iJ,SAASimB,EAAE/pB,WAAY,KAAKygD,cAAc,GAAGnU,UAItE,GAAI1nB,KAAKhd,QAAS,CACVgd,KAAKhd,QAAQi2D,gBACbtjB,EAAAA,EAAAA,IAAO31B,KAAKhd,SAEhB,IAAI6+I,EAAmB7hI,KAAKqQ,OAAO4wH,mBAAmB1uH,cAAc,gBAChEvS,KAAKqQ,OAAOyxH,gBAAkBD,IAC9BlsG,EAAAA,EAAAA,IAAOksG,EAEf,CA3BA,CA4BJ,EACAj4I,EAAOyV,UAAUihI,oBAAsB,WAC/BtgI,KAAK8yG,gBACL9yG,KAAK8yG,eAAeivB,wBAAwB/hI,KAAMA,KAAKqQ,OAAO0tG,iBAAkBikB,EAAAA,GAAuBC,SAE/G,EACAr4I,EAAOyV,UAAU0hI,YAAc,WAC3B,IACI7kE,EAAM,IAAIgmE,EAAAA,EADA,CAAC,GAGf,OADAhmE,EAAIimE,MAAQniI,KAAKoiI,gBACVlmE,CACX,EACAtyE,EAAOyV,UAAU+iI,cAAgB,WAE7B,IAAID,EAAQ,GACZ,GAAIniI,KAAKqQ,OAAOmlG,cACZ,IAAK,IAAIv/F,EAAI,EAAGhF,EAAMjR,KAAKqQ,OAAOolG,cAAcrB,QAAQn8H,OAAQg+B,EAAIhF,EAAKgF,IACrEksH,EAAM1iJ,KAAKugB,KAAKqiI,aAAa,CAAC,EAAGzB,EAAAA,GAAS0B,gBAG9CtiI,KAAKqQ,OAAOkyH,gBAAkBviI,KAAKqQ,OAAOmyH,YAC1CL,EAAM1iJ,KAAKugB,KAAKqiI,aAAa,CAAC,EAAGzB,EAAAA,GAAS6B,eAE1CziI,KAAKqQ,OAAOqyH,iBAAmD,UAAhC1iI,KAAKqQ,OAAOkwH,iBAC3C4B,EAAM1iJ,KAAKugB,KAAKqiI,aAAa,CAAC,EAAGzB,EAAAA,GAAS+B,eAE9C,IAAK,IAAIp0H,EAAK,EAAGvoB,EAAKga,KAAKqQ,OAAO4jG,aAAc1lG,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAClE,IAAIq0H,EAAQ58I,EAAGuoB,GACf4zH,EAAM1iJ,KAAKugB,KAAKqiI,aAAaO,GACjC,CAIA,MAHoC,UAAhC5iI,KAAKqQ,OAAOkwH,iBACZ4B,EAAM1iJ,KAAKugB,KAAKqiI,aAAa,CAAC,EAAGzB,EAAAA,GAAS+B,eAEvCR,CACX,EACAv4I,EAAOyV,UAAUgjI,aAAe,SAAUjjE,EAAQyjE,GAC9C,IAAI54C,EAAM,CACN,QAAW7qB,EAAOhxE,QAClB,YAAc,EACd,MAAS,GACT,OAAUgxE,EACV,SAAYyjE,GAAsBjC,EAAAA,GAASh3I,OAC3C,WAAc,CAAEyJ,MAAO2M,KAAK+hE,KAAK9lB,YAAY,oBAEjD,OAAO,IAAI6mF,EAAAA,EAAK74C,EACpB,EAOArgG,EAAOyV,UAAUm8B,YAAc,WAC3B,IAAI26E,EAAMn2G,KAAKo/D,OAAOm3C,kBAAoBv2G,KAAKqQ,OAAOunG,eAAe53G,KAAKo/D,OAAOlzD,KAC7ElM,KAAKqQ,OAAOslG,iBAAiB31G,KAAKq9E,WACtCr9E,KAAK+iI,eAAiB/iI,KAAKgjI,4BAA4B7sB,GACvDn2G,KAAKijI,iBAAmBjjI,KAAK7W,eAAeirH,QAAQp0G,KAAK+iI,gBAGzD,IAFA,IAAIG,EAAWz0H,MAAMC,QAAQ1O,KAAKziB,OAASyiB,KAAKziB,MAAQ,CAACyiB,KAAKziB,OAC1Du5E,EAAa92D,KAAKqQ,OAAOh3B,WAAW0xG,SAAW/qF,KAAKqQ,OAAOh3B,WAAW0xG,QAAQnvD,cAAgB57B,KAAKqQ,OAAOh3B,WAAW0xG,QAAQnvD,qBAAkB1gD,EAC1IiqB,EAAI,EAAG8L,EAAMiyH,EAASjrJ,OAAQktB,EAAI8L,EAAK9L,IAAK,CACjD,IAAIvjB,EAAQu0H,EAAII,kBAAoBJ,EAAIa,gBAAkBh3G,KAAKq9E,UAC3D8lD,EAAmC,aAAlBnjI,KAAK4gF,SAC1B5gF,KAAKojI,oBAAsB,CACvBxhJ,MAAOA,EAAOsqB,IAAKiqG,EAAIjqG,IAAKwqG,aAAcP,EAAII,kBAAmB31B,SAAU5gF,KAAK4gF,SAChFrjG,MAAO2lJ,EAAShkJ,SAASimB,EAAE/pB,WAAY,KAAM+oG,UAAWnkF,KAAKmkF,UAC7D+I,UAAWltF,KAAKktF,UAAWjO,aAAcj/E,KAAKi/E,aAAcokD,kBAAmB,CAAC,EAAGC,eAAgB,CAAC,GAExG,IAAIx8I,EAAQkZ,KAAKgjI,4BAA4B7sB,GAO7C,GANIrvH,GAAS,IAAM2nB,MAAMC,QAAQ1O,KAAKziB,OAClCyiB,KAAK7W,eAAeirH,QAAQl1H,SAAS4H,EAAM1L,WAAY,KAAO4kB,KAAKojI,oBAGnEpjI,KAAK7W,eAAeirH,QAAQ30H,KAAKugB,KAAKojI,sBAErCpjI,KAAKo/D,OAAOm3C,oBAAqB5oG,EAAAA,EAAAA,IAAkB3N,KAAKziB,SAA6B,UAAlByiB,KAAK4gF,UACvD,aAAlB5gF,KAAK4gF,WAA4C,iBAAf9pB,GAAgD,mBAAfA,EAAkC,CACrG,IAAK,IAAIk/D,EAAM,EAAGA,EAAMh2H,KAAK7W,eAAeirH,QAAQn8H,OAAQ+9I,IACpDh2H,KAAK7W,eAAeirH,QAAQ,GAAK4hB,GAAKp0I,QAAUA,GACI,UAAnDoe,KAAK7W,eAAeirH,QAAQ,GAAK4hB,GAAKp1C,UAA2E,aAAnD5gF,KAAK7W,eAAeirH,QAAQ,GAAK4hB,GAAKp1C,YAClGjzE,EAAAA,EAAAA,IAAkB3N,KAAK7W,eAAeirH,QAAQ,GAAK4hB,GAAKz4I,SAC3DyiB,KAAK7W,eAAeirH,QAAQvtF,OAAOmvG,EAAK,GACxCA,GAAY,GAGH,WAAb7f,EAAI77H,MACJ0lB,KAAK7W,eAAeirH,QAAQ30H,KAAK,CAC7BmC,MAAOA,EAAOq9F,aAAcj/E,KAAKi/E,aAAciO,UAAWltF,KAAKktF,UAC/DtM,SAAU5gF,KAAK4gF,SAAUuD,UAAWg/C,EAAiB,MAAQ,KAAM5lJ,MAAO,KAGlFyiB,KAAK7W,eAAeirH,QAAQ30H,KAAK,CAC7BmC,MAAOA,EAAOq9F,aAAcj/E,KAAKi/E,aAAciO,UAAWltF,KAAKktF,UAC/DtM,SAAU5gF,KAAK4gF,SAAUuD,UAAWg/C,EAAiB,MAAQ,KAAM5lJ,WAAOrC,IAE9E8kB,KAAK7W,eAAeirH,QAAQ30H,KAAK,CAC7BmC,MAAOA,EAAOq9F,aAAcj/E,KAAKi/E,aAAciO,UAAWltF,KAAKktF,UAC/DtM,SAAU5gF,KAAK4gF,SAAUuD,UAAWg/C,EAAiB,MAAQ,KAAM5lJ,MAAO,MAElF,CACJ,CAEAyiB,KAAK7W,eAAeirH,QAAUp0G,KAAK7W,eAAeirH,QAClDp0G,KAAKqQ,OAAO0qB,UAChB,EACAnxC,EAAOyV,UAAU2jI,4BAA8B,SAAU7sB,GAErD,IADA,IAAIxB,EAAO30G,KAAK7W,eAAeirH,QACtBjvG,EAAI,EAAG8L,EAAM0jG,EAAK18H,OAAQktB,EAAI8L,EAAK9L,IACxC,GAAIwvG,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAK8wB,MAAQiqG,EAAIjqG,KAAQiqG,EAAII,mBACtDv2G,KAAKqQ,OAAOunG,eAAezB,EAAIjqG,KAAKtqB,QAAUu0H,EAAIa,gBACrD,OAAO7xG,EAGf,OAAQ,CACZ,EAQAvb,EAAOyV,UAAU0+F,iBAAmB,SAAUtiH,GAC1C,IAAIwS,EAAQ+R,KAAKujI,SAMb,CACA5nD,YAAa,YAAarhG,KAAM+4C,EAAAA,KAPR,CACxB+vG,oBAAqBpjI,KAAKojI,oBAE1BI,wBAAyB71H,EAAAA,EAAAA,IAAkB3N,KAAKo/D,aAA8BlkF,EAApB8kB,KAAKo/D,OAAOx9E,MAEtEwyH,QAASp0G,KAAK7W,eAAeirH,QAASz4B,YAAa,YAAarhG,KAAM+4C,EAAAA,KAI1ErzB,KAAKqQ,OAAOylB,QAAQzC,EAAAA,KAAuB1kB,EAAAA,EAAAA,IAAOlzB,EAAGwS,IACrD+R,KAAKujI,UAAW,CACpB,EACA35I,EAAOyV,UAAUk6C,WAAa,WAC1BvkB,EAAAA,GAAaG,IAAIn1B,KAAKqQ,OAAO4wH,mBAAoB,QAASjhI,KAAKyjI,sBAAuBzjI,KAC1F,EACApW,EAAOyV,UAAU6nD,aAAe,WAC5BlyB,EAAAA,GAAaW,OAAO31B,KAAKqQ,OAAO4wH,mBAAoB,QAASjhI,KAAKyjI,sBACtE,EACA75I,EAAOyV,UAAUqkI,kBAAoB,SAAUjoJ,GACvCA,EAAE0pD,SAAWnlC,KAAK47B,iBAAmBngD,EAAEmzE,SACvC5uD,KAAKqQ,OAAOszH,iBAAiB/sG,UAAUzB,IAAI,gBAC3Cn1B,KAAKsrC,SAEb,EACA1hD,EAAOyV,UAAUukI,mBAAqB,WAClC5jI,KAAKqQ,OAAOvM,oBAAoBuvB,EAAAA,IAAwBrzB,KAAK6jI,sBAC5B,cAA7B7jI,KAAK7W,eAAe7O,MAAwB0lB,KAAK7W,eAAeirH,QAAQn8H,SACvE+nB,KAAKqQ,OAAOyzH,wBAAwB7rJ,QACrC+nB,KAAK+jI,YAEb,EACAn6I,EAAOyV,UAAU0kI,WAAa,WAE1B,GADA/jI,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAqBrzB,KAAK+jI,YACtC/jI,KAAKqQ,OAAO4jG,aAAah8H,QAAU+nB,KAAK7W,eAAeirH,QAAQn8H,OAAQ,CACvE,IAAI07H,EAAO3zG,KAAKqQ,OAChBrQ,KAAKw/H,gBAAiB,EACtBx/H,KAAKgkI,aAAc,EACnB,IAAK,IAAIz1H,EAAK,EAAGvoB,EAAK2tH,EAAKxqH,eAAeirH,QAAS7lG,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CACrE,IAAI4nG,EAAMnwH,EAAGuoB,GACbvO,KAAK+iH,eAAe5M,EAAIv0H,MAAOu0H,EAAIv1B,SAAUu1B,EAAI54H,MAAO44H,EAAIhyB,UAAWgyB,EAAIjpB,UAAWipB,EAAIl3B,aAAck3B,EAAIktB,kBAAmBltB,EAAImtB,eACvI,CACAtjI,KAAKgkI,aAAc,EACnBhkI,KAAK2hI,kBACL3hI,KAAKw/H,gBAAiB,CAC1B,CACJ,EAKA51I,EAAOyV,UAAUwE,iBAAmB,WAC5B7D,KAAKqQ,OAAOuqB,cAGhB56B,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAA4BrzB,KAAKsgI,oBAAqBtgI,MACrEA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAiBrzB,KAAK0jI,kBAAmB1jI,MACxDA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAuBrzB,KAAK+9F,iBAAkB/9F,MAC7DA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAA4BrzB,KAAKs7B,kBAAmBt7B,MACnEA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAmBrzB,KAAK0pD,aAAc1pD,MACrDA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAA8BrzB,KAAKikI,sBAAuBjkI,MACzEA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAwBrzB,KAAKsrC,OAAQtrC,MACpDA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAqBrzB,KAAK+jI,WAAY/jI,MACrDA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAwBrzB,KAAKkkI,gBAAiBlkI,MAC7DA,KAAKmkI,gBAAkBnkI,KAAK2oD,aAAa3pD,KAAKgB,MAC9Cg1B,EAAAA,GAAaG,IAAIvyB,SAAU,QAAS5C,KAAKmkI,gBAAiBnkI,MAC1Dg1B,EAAAA,GAAaG,IAAIn1B,KAAKqQ,OAAOrtB,QAAS,YAAagd,KAAKokI,iBAAkBpkI,MAC1EA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAmBrzB,KAAKqkI,iBAAkBrkI,MACzDA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAcrzB,KAAKskI,uBAAwBtkI,MAC1DA,KAAKqQ,OAAOkW,GAAG,uBAAwBvmB,KAAK+jI,WAAY/jI,MACxDA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAA0BrzB,KAAK2oD,aAAc3oD,MAC5DA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAgBrzB,KAAK0nB,QAAS1nB,MAC7CA,KAAK6jI,qBAAuB7jI,KAAK4jI,mBAAmB5kI,KAAKgB,MACzDA,KAAKqQ,OAAOxM,iBAAiBwvB,EAAAA,IAAwBrzB,KAAK6jI,sBAC9D,EAKAj6I,EAAOyV,UAAUyE,oBAAsB,WACnCkxB,EAAAA,GAAaW,OAAO/yB,SAAU,QAAS5C,KAAKmkI,iBAC5CnvG,EAAAA,GAAaW,OAAO31B,KAAKqQ,OAAOrtB,QAAS,YAAagd,KAAKokI,kBACvDpkI,KAAKqQ,OAAOuqB,cAGhB56B,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAA4BrzB,KAAKsgI,qBACjDtgI,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAiBrzB,KAAK0jI,mBACtC1jI,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAuBrzB,KAAK+9F,kBAC5C/9F,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAA4BrzB,KAAKs7B,mBACjDt7B,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAmBrzB,KAAK0pD,cACxC1pD,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAA8BrzB,KAAKikI,uBACnDjkI,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAwBrzB,KAAKsrC,QAC7CtrC,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAmBrzB,KAAKqkI,kBACxCrkI,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAwBrzB,KAAKkkI,iBAC7ClkI,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAcrzB,KAAKskI,wBACnCtkI,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAA0BrzB,KAAK2oD,cAC/C3oD,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAgBrzB,KAAK0nB,SACzC,EACA99B,EAAOyV,UAAU+kI,iBAAmB,SAAU3oJ,GAC1C,GAAIukB,KAAKqQ,OAAOnnB,gBAAsD,cAApC8W,KAAKqQ,OAAOlnB,eAAe7O,MACzDmB,EAAE0iD,OAAO/E,QAAQ,OAAS39C,EAAE0iD,OAAO/E,QAAQ,MAAMxC,UAAUM,SAAS,oBACpEz7C,EAAE0iD,OAAOvH,UAAUM,SAAS,gBAAiB,CAC7C,IAAIqtG,EAAa9oJ,EAAE0iD,OAAOqmG,uBAC1B5jE,EAAAA,EAAM5+E,SAAS,KAAMuiJ,EAAY,SAAS,GACT,cAA7BvkI,KAAK7W,eAAeC,MACpB4W,KAAKonH,0BAA0Bmd,EAAW3/I,GAAGyY,MAAM,GAAI,IAE/D,CACJ,EACAzT,EAAOyV,UAAU6kI,gBAAkB,WAC/BlkI,KAAKmgI,eAAet1I,QAAS,CACjC,EAeAjB,EAAOyV,UAAU0jH,eAAiB,SAAU1lC,EAAWonD,EAAgB/rC,EAAavU,EAAW+I,EAAWjO,EAAcokD,EAAmBC,GACvI,IAEIoB,EAFA10H,EAAQhQ,KACR2zG,EAAO3zG,KAAKqQ,OAUhB,GARArQ,KAAKo/D,OAASu0C,EAAKkE,6BAA6Bx6B,GACf,cAA7Br9E,KAAK7W,eAAe7O,MAAwB0lB,KAAK7W,eAAeyyH,wBAC7DjuG,EAAAA,EAAAA,IAAkB3N,KAAKo/D,OAAOi8C,qBAAsB1tG,EAAAA,EAAAA,IAAkB3N,KAAKo/D,OAAOu7C,kBACrF8pB,EAAiBzkI,KAAK2kI,gBAAgBtnD,IAEnB,SAAnBonD,IAA2D,IAA9B/rC,EAAYpiG,QAAQ,OACjDoiG,EAAc,IAAMA,EAAc,KAEjC14F,KAAKo/D,OAMV,GAHiC,cAA7Bp/D,KAAK7W,eAAe7O,OACpBoqJ,EAAa/wB,EAAKstB,mBAAmB1uH,cAAc,QAAWvS,KAAKo/D,OAAOx9E,MAAQ,sBAEjF+rB,EAAAA,EAAAA,IAAkB3N,KAAKo/D,OAAOl2E,iBAAoB8W,KAAKo/D,OAAOl2E,eAInE,IAAIg/H,EAAAA,EAAAA,IAAgBvU,GAChBA,EAAK5sF,OAAOsM,EAAAA,IAAqB,CAC7B5yC,SAAUuf,KAAMwM,QAASxM,KAAK+iH,eAAgBgZ,KAAM1+C,EAAW2+C,KAAMyI,EAAgBxI,KAAMvjC,EAAawjC,KAAM/3C,EAC9Gg4C,KAAMjvC,EAAWkvC,KAAMn9C,EAAco9C,KAAMgH,EAAmB/G,KAAMgH,QAH5E,CAqBA,GAdAtjI,KAAKmkF,UAAYA,IAAwB11E,MAAMC,QAAQgqF,GAAe,KAAO,OAC7E14F,KAAKziB,MAAQm7G,EACb14F,KAAKktF,UAAYA,IAAa,EAC9BltF,KAAKi/E,aAAej/E,KAAKi/E,cAAgBtxE,EAAAA,EAAAA,IAAkBsxE,GAA+Bj/E,KAAKqQ,OAAOlnB,eAAe81F,aAA1CA,EAC3Ej/E,KAAKq9E,UAAYA,EACjBr9E,KAAK4gF,SAAW6jD,EAEI,MADpB/rC,GAAe/qF,EAAAA,EAAAA,IAAkB+qF,GAAwCA,EAAzBA,EAAYt9G,cAExDs9G,EAAc,MAEO,WAArB14F,KAAKo/D,OAAO9kF,MAA0C,SAArB0lB,KAAKo/D,OAAO9kF,OAC7C0lB,KAAKktF,WAAY,GAErBymB,EAAKixB,uBAAuB5kI,KAAKo/D,OAAOm3C,kBAAoBv2G,KAAKo/D,OAAOx9E,MAAQy7F,GAAW/mD,aAAa,gBAAiB,QACrHouG,GAA2C,cAA7B1kI,KAAK7W,eAAe7O,KAAsB,CACxD,GAAKo+G,GAAeA,EAAYzgH,OAAS,IAAQ+nB,KAAKy/H,gBAClDz/H,KAAK6kI,kBAAkB7kI,KAAKo/D,OAAQs5B,GAGpC,OAFA14F,KAAK8kI,gBAAmBpsC,GAAeA,EAAYzgH,OAAS,EAAK,GAAK+nB,KAAK+hE,KAAK9lB,YAAY,6BAC5Fj8C,KAAK2hI,kBAGL+C,EAAWnnJ,QAAUm7G,IACrBgsC,EAAWnnJ,MAAQm7G,EAE3B,EACK/qF,EAAAA,EAAAA,IAAkB3N,KAAKo/D,OAAO5lF,QAO/BwmB,KAAKvhB,OAAOuhB,KAAKo/D,OAAOx9E,OAAS82G,GANjC14F,KAAK+kI,kBAAkBrsC,GACnB14F,KAAKgkI,aAA4C,cAA7BhkI,KAAK7W,eAAe7O,OACxCoqJ,EAAWnnJ,MAAQyiB,KAAKvhB,OAAOuhB,KAAKo/D,OAAOx9E,SAMnD,IAAIojJ,EAAU,CACVpjJ,MAAOoe,KAAKq9E,UACZ8G,UAAWA,EACX+I,UAAWA,EACXjO,aAAcA,EACd2B,SAAU5gF,KAAK4gF,SACfrjG,MAAOyiB,KAAKziB,MACZjD,KAAM0lB,KAAKo/D,OAAO9kF,MAEH0lB,KAAKqQ,OAAOlnB,eAAeirH,QAAQj2H,QAAO,SAAU8mJ,GACnE,OAAQA,EAAQrjJ,QAAUouB,EAAMqtE,SACpC,IACiBplG,OAAS,KAAM01B,EAAAA,EAAAA,IAAkB3N,KAAKy8H,gBAAgBz8H,KAAKq9E,YACxEr9E,KAAKy8H,gBAAgBz8H,KAAKq9E,WAAW59F,KAAKulJ,GAG1ChlI,KAAKy8H,gBAAgBz8H,KAAKq9E,WAAa,CAAC2nD,GAExChlI,KAAKklI,wBAAwBllI,KAAKo/D,OAAOx9E,QAG7Coe,KAAKw7B,aAxDL,MATIx7B,KAAKqQ,OAAOulG,IAAI,yBAA0B,CAAE9+C,WAAY92D,KAAK47B,gBAAiBi6E,WAAY71G,KAAKo/D,OAAO51E,YAkE9G,EACAI,EAAOyV,UAAU0lI,kBAAoB,SAAUrsC,GAC3C,IAAI1oF,EAAQhQ,KACRmlI,EAAmC,SAArBnlI,KAAKo/D,OAAO9kF,MAAwC,aAArB0lB,KAAKo/D,OAAO9kF,MAA4C,aAArB0lB,KAAKo/D,OAAO9kF,KAC5F,IAAIgF,KAAKo5G,GAAezyE,WAAWyyE,IACb,SAArB14F,KAAKo/D,OAAO9kF,MAAwC,aAArB0lB,KAAKo/D,OAAO9kF,MAA4C,aAArB0lB,KAAKo/D,OAAO9kF,OAAwBo+G,GACvGjqF,MAAMC,QAAQ1O,KAAKziB,QAAUm7G,EAAYzkG,MAAM,KAAKhc,OAAS,EAC7D+nB,KAAKvhB,OAAOuhB,KAAKo/D,OAAOx9E,OAAW82G,EAAazkG,MAAM,KAAMnU,KAAI,SAAU6d,GAItE,MAHY,KAARA,IACAA,EAAM,MAEHqS,EAAMo1H,qBAAqB,IAAI9lJ,KAAKqe,GAAMqS,EAAMovD,OAC3D,IAGAp/D,KAAKvhB,OAAOuhB,KAAKo/D,OAAOx9E,OAASoe,KAAKolI,qBAAqBD,EAAYnlI,KAAKo/D,OAEpF,EAEAx1E,EAAOyV,UAAUgmI,QAAU,SAAUlvB,GAGjC,IAFA,IAAIl1F,GAAO,EACPqkH,EAASzmJ,OAAOC,KAAMq3H,GACjBhxG,EAAI,EAAGA,EAAImgI,EAAOrtJ,OAAQktB,IAAK,CACpC,IAAInmB,EAAMH,OAAOC,KAAKq3H,EAAImvB,EAAOpmJ,SAASimB,EAAE/pB,WAAY,OACrC,IAAf4D,EAAI/G,QAA2B,QAAX+G,EAAI,KACxBiiC,GAAO,EAEf,CACA,OAAOA,CACX,EACAr3B,EAAOyV,UAAUi8B,kBAAoB,SAAU7/C,GAC3C,GAAIA,EAAE0pD,SAAWnlC,KAAK47B,gBAGtB,IAAK,IAAIrtB,EAAK,EAAGvoB,EAAKnH,OAAOC,KAAKrD,EAAE26C,YAAa7nB,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CACnE,IAAI4E,EAAOntB,EAAGuoB,GACd,OAAQ4E,GACJ,IAAK,UAED,IAEIllB,EAAO,CACPm1I,oBAAqBpjI,KAAKojI,oBAAqBI,uBAAwBxjI,KAAKo/D,OACxEp/D,KAAKo/D,OAAOx9E,WAAQ1G,EAAW+nB,OAAQ,SAAUmxG,QAASp0G,KAAK7W,eAAeirH,QAClFz4B,YAAa,YAAarhG,KAAM+4C,EAAAA,IAAoB9rC,QAAQ,GAEhE,GAAIyY,KAAKw/H,gBAAkBx/H,KAAKqlI,QAAQ5pJ,EAAE26C,WAAmB,SAAI,CAE7D,GADAp2B,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAqBplC,GACpCA,EAAK1G,OAOL,aANIomB,EAAAA,EAAAA,IAAkB3N,KAAKijI,kBACvBjjI,KAAK7W,eAAeirH,QAAQvtF,OAAO7mB,KAAK7W,eAAeirH,QAAQn8H,OAAS,EAAG,GAG3E+nB,KAAK7W,eAAeirH,QAAQp0G,KAAK+iI,gBAAkB/iI,KAAKijI,kBAIhEjjI,KAAKulI,mBACLvlI,KAAKwlI,wBACLxlI,KAAK2hI,kBACL3hI,KAAKylI,cACT,CACA,MACJ,IAAK,sBACGhqJ,EAAE26C,WAAW,GAAKjjB,GAClBnT,KAAK2hI,kBAEA3hI,KAAKqQ,OAAOwkG,aACjB70G,KAAKqQ,OAAOq1H,sBAAsB,IAEtC,MACJ,IAAK,wBACL,IAAK,OACD1lI,KAAKqQ,OAAOs1H,gBACZ3lI,KAAKwlI,wBAGjB,CACJ,EACA57I,EAAOyV,UAAUmmI,sBAAwB,WACrC,GAAiC,cAA7BxlI,KAAK7W,eAAe7O,KAAsB,CAC1C,IAAK,IAAI6qB,EAAI,EAAGA,EAAInF,KAAK7W,eAAeirH,QAAQn8H,OAAQktB,IAAK,CACzDnF,KAAKo/D,OAASp/D,KAAKqQ,OAAO+nG,2BAA2Bp4G,KAAK7W,eAAeirH,QAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK8wB,KAC7G,IAAIwsF,EAAc14F,KAAK7W,eAAeirH,QAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKmC,MAE1E,GADAm7G,IAAe/qF,EAAAA,EAAAA,IAAkB+qF,IAAgBA,EAAYt9G,YACxDuyB,EAAAA,EAAAA,IAAkB3N,KAAKo/D,OAAO5lF,QAG9B,CACD,IAAIwF,EAAMghB,KAAK7W,eAAeirH,QAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKwG,MAClEoe,KAAKvhB,OAAO,GAAKO,GAAOghB,KAAK7W,eAAeirH,QAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKmC,KACpF,MALIyiB,KAAK+kI,kBAAkBrsC,IAMvBktC,EAAgB5lI,KAAK6lI,oBAAoB7lI,KAAKo/D,OAAOx9E,UAEgC,KAAjFoe,KAAK0/H,SAAS1/H,KAAK7W,eAAeirH,QAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKwG,SAClE+rB,EAAAA,EAAAA,IAAkB3N,KAAK0/H,SAAS1/H,KAAK7W,eAAeirH,QAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKwG,QAI5FgkJ,EAAcroJ,MAAQyiB,KAAK7W,eAAeirH,QAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKmC,MAH9EqoJ,EAAcroJ,MAAQyiB,KAAK0/H,SAAS1/H,KAAKo/D,OAAOx9E,OAM5D,CACA,GAA2C,IAAvCoe,KAAK7W,eAAeirH,QAAQn8H,OAC5B,KAAIk+H,EAAMn2G,KAAKqQ,OAAO4jG,aACtB,IAAS9uG,EAAI,EAAGA,EAAIgxG,EAAIl+H,OAAQktB,IAAK,CACjC,IAAIygI,KAAgB5lI,KAAK6lI,oBAAoB1vB,EAAIj3H,SAASimB,EAAE/pB,WAAY,KAAKwG,SAChC,KAAxBgkJ,EAAcroJ,QAC/BqoJ,EAAcroJ,MAAQ,UACfyiB,KAAKvhB,OAAO03H,EAAIj3H,SAASimB,EAAE/pB,WAAY,KAAKwG,OAE3D,CAPkC,CAS1C,CACJ,EACAgI,EAAOyV,UAAUkmI,iBAAmB,WAChC,GAA2C,IAAvCvlI,KAAK7W,eAAeirH,QAAQn8H,QAAgB+nB,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,eAE9E,IADA,IAAIuzH,EAAkB,GAAGzoI,MAAMqC,KAAKM,KAAKqQ,OAAOrtB,QAAQwhD,uBAAuB,eACtEr/B,EAAI,EAAG8L,EAAM60H,EAAgB7tJ,OAAQktB,EAAI8L,EAAK9L,IACnD2gI,EAAgB5mJ,SAASimB,EAAE/pB,WAAY,KAAK8lD,gBAAgB,iBAC5D4kG,EAAgB5mJ,SAASimB,EAAE/pB,WAAY,KAAKw7C,UAAUjB,OAAO,aAGzE,EACA/rC,EAAOyV,UAAUwmI,oBAAsB,SAAU1vB,GAC7C,IACIyvB,EADAjtG,EAAW,QAAWw9E,EAAM,mBAKhC,OAHIx9E,KAAahrB,EAAAA,EAAAA,IAAkB3N,KAAKhd,WACpC4iJ,EAAgB5lI,KAAKhd,QAAQuvB,cAAcomB,IAExCitG,CACX,EAKAh8I,EAAOyV,UAAU0mI,cAAgB,WAC7B/lI,KAAKwlI,wBACLxlI,KAAK2hI,iBACT,EAOA/3I,EAAOyV,UAAU2mI,eAAiB,SAAUnjJ,GACxC,IAAImtB,EAAQhQ,KACR20G,GAAOsxB,EAAAA,EAAAA,IAAsBjmI,KAAK7W,eAAeirH,SACrD,KAAKzmG,EAAAA,EAAAA,IAAkB9qB,GAMnB,OALAmd,KAAKmrC,SAAU,EACftoD,EAAO9D,SAAQ,SAAU6C,GAASouB,EAAMo3G,0BAA0BxlI,GAAO,EAAQ,IACjFoe,KAAKqQ,OAAOsqB,cAAc,CAAExxC,eAAgB,CAAEirH,QAASp0G,KAAK7W,eAAeirH,WAAa,GACxFp0G,KAAKqQ,OAAO61H,aAAa/6F,eACzBnrC,KAAKmrC,SAAU,GAGnB,IAAI+8E,EAAAA,EAAAA,IAAgBloH,KAAKqQ,QACrBrQ,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAqB,CAAE5yC,SAAUuf,KAAMwM,QAASxM,KAAKgmI,qBAD5E,CAIA,IAAK,IAAI7gI,EAAI,EAAGA,EAAIwvG,EAAK18H,OAAQktB,IAC7BwvG,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAK8wB,IAAMyoG,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAK8wB,KACjElM,KAAKqQ,OAAOslG,iBAAiBhB,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKwG,OAAOsqB,IAEhF,IAAIi6H,EAASxxB,EAAK70H,KAAI,SAAU/B,GAAK,OAAOA,EAAEmuB,GAAK,IAC/Ck6H,EAAeD,EAAOhoJ,QAAO,SAAUiN,EAAM+3B,GAAO,OAAOgjH,EAAO7vI,QAAQlL,KAAU+3B,CAAK,IAC7FnjB,KAAKmrC,SAAU,EACNhmC,EAAI,EAAb,IAAK,IAAW8L,EAAMm1H,EAAanuJ,OAAQktB,EAAI8L,EAAK9L,IAChDnF,KAAKonH,0BAA0BpnH,KAAKqQ,OAAOunG,eAAewuB,EAAalnJ,SAASimB,EAAE/pB,WAAY,MAAMwG,OAAO,GAM/G,GAJAoe,KAAKmrC,SAAU,EACXi7F,EAAanuJ,QACb+nB,KAAKqQ,OAAO61H,aAAa/6F,UAEqB,IAA9CnrC,KAAKqQ,OAAOlnB,eAAeirH,QAAQn8H,QAAgB+nB,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,eACrF,KAAI8zH,EAAc,GAAGhpI,MAAMqC,KAAKM,KAAKqQ,OAAOrtB,QAAQwhD,uBAAuB,eAC3E,IAASr/B,EAAI,EAAG8L,EAAMo1H,EAAYpuJ,OAAQktB,EAAI8L,EAAK9L,IAC/CkhI,EAAY,GAAGnlG,gBAAgB,iBAC/BmlG,EAAY,GAAGzvG,UAAUjB,OAAO,aAHqD,CAM7F31B,KAAKujI,UAAW,EAChBvjI,KAAK8kI,gBAAkB,GACvB9kI,KAAK2hI,iBAxBL,CAyBJ,EACA/3I,EAAOyV,UAAU6lI,wBAA0B,SAAUtjJ,GAEjD,IADA,IACS2sB,EAAK,EAAGmpG,EADH13G,KAAK7W,eAAeirH,QACI7lG,EAAKmpG,EAAUz/H,OAAQs2B,IAAM,CAC/D,IAAI4nG,EAAMuB,EAAUnpG,GACpB,GAAI4nG,EAAIv0H,QAAUA,GAASu0H,EAAI54H,QAAUyiB,KAAKziB,OAC1C44H,EAAIv1B,WAAa5gF,KAAK4gF,UAAYu1B,EAAIhyB,YAAcnkF,KAAKmkF,UACzD,OAAO,CAEf,CACA,OAAO,CACX,EACAv6F,EAAOyV,UAAUglI,iBAAmB,SAAUp2I,GAC1C+R,KAAKo/D,OAASnxE,EAAKkoH,IACnB,IAAIr/E,GAAMsC,EAAAA,EAAAA,IAAQnrC,EAAKkwC,OAAQ,IAAMlwC,EAAKrJ,IACtCqJ,EAAKsgI,UAAYz3F,EACjB92B,KAAKm8G,aAAa6I,cAEbluF,GACL92B,KAAKsmI,iBAAiBtmI,KAAKo/D,OAAQnxE,EAAKkwC,OAEhD,EACAv0C,EAAOyV,UAAUinI,iBAAmB,SAAUnwB,EAAKh4E,EAAQuF,EAAME,GACzD5jC,KAAKm8G,cACLn8G,KAAKm8G,aAAa6I,cAEtBhlH,KAAK0hI,eAAevrB,GACpBn2G,KAAKm8G,aAAa2I,WAAW9kH,KAAKumI,cAAcpwB,EAAKh4E,EAAQuF,EAAME,GACvE,EAWAh6C,EAAOyV,UAAUknI,cAAgB,SAAUpwB,EAAKh4E,EAAQuF,EAAME,GAC1D,IAAI+vE,EAAO3zG,KAAKqQ,OACZh3B,EAAa88H,EAAIh4H,OAAO9E,YAAcs6H,EAAKt6H,YAAc,WAAYs6H,EAAKt6H,WAAas6H,EAAKt6H,WAC5Fs6H,EAAK+N,gBAAgBllC,YACrBliG,EAAO67H,EAAIh4H,OAAO7D,MAAQ0lB,KAAKqQ,OAAOlnB,eAAe7O,KAezD,MAdc,CACVA,KAAM67H,EAAI77H,KAAMsH,MAAOu0H,EAAIv0H,MAAOu5I,YAAahlB,EAAI3sH,WACnDnQ,WAAYA,EAAYG,OAAQ28H,EAAI38H,OAAQw6D,OAAQ,IAAKogE,QAAST,EAAKM,aACvEmmB,gBAAiBzmB,EAAKxqH,eAAeirH,QAASj2E,OAAQA,EAAQq+C,YAAam3B,EAAK+N,gBAAgBllC,YAChGgqD,SAAUrwB,EAAI4C,eAAgB95B,aAAc00B,EAAKxqH,eAAe81F,aAChEwnD,SAAUtwB,EAAIuwB,YAAatqD,MAAOu3B,EAAKv3B,MAAO5lF,SAAU2/G,EAAIwwB,wBAC5DC,gBAAej5H,EAAAA,EAAAA,IAAkBwoG,EAAIh4H,OAAOyoJ,gBAAyBzwB,EAAIh4H,OAAOyoJ,cAChFp6H,QAASxM,KAAK6mI,cAAc7nI,KAAKgB,MAAO8mI,iBAAkBnzB,EAAKozB,qBAC/D50F,SAAU,CAAE00B,EAAGnjC,EAAMojC,EAAGljC,GAAOw7B,OAAQ+2C,EAAKa,gBAAiBb,EAAIa,gBACjEylB,gBAAiBz8H,KAAKy8H,gBAAiB/gB,UAAW/H,EAAK+H,UACvDpF,SAAU3C,EAAK+N,gBAAgBpL,WAAY0wB,mBAAoBhnI,KAAK7W,eAAe44H,sBACnF6V,mBAAoB53H,KAAKqQ,OAAO0tG,iBAChCn9B,SAAU5gF,KAAKy8H,gBAAgBtmB,EAAIv0H,QAAmB,SAATtH,EAAkB0lB,KAAKy8H,gBAAgBtmB,EAAIv0H,OAAO,GAAGg/F,SAAW,QAGrH,EASAh3F,EAAOyV,UAAU+nH,0BAA4B,SAAUxlI,EAAOqlJ,GAC1D,IAAIC,EACAvyB,EAAO30G,KAAK7W,eAAeirH,QAC/B,IAAI8T,EAAAA,EAAAA,IAAgBloH,KAAKqQ,QAAzB,CACI,IAAIpiB,EAAO,CAAExN,SAAUuf,KAAMwM,QAASxM,KAAKonH,0BAA2B2U,KAAMn6I,EAAOo6I,KAAMiL,GACzFjnI,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAqBplC,EAE5C,KAJA,CAoDA,IA/CA,IAAIk4I,EAASxxB,EAAK70H,KAAI,SAAU/B,GAAK,OAAOA,EAAEmuB,GAAK,IAC/Ci7H,EAAkBhB,EAAOhoJ,QAAO,SAAUiN,EAAM+3B,GAAO,OAAOgjH,EAAO7vI,QAAQlL,KAAU+3B,CAAK,IAC5FpU,EAAU,SAAU5J,EAAG8L,GACvB0jG,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAK8wB,IAAMyoG,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAK8wB,KACjE2hC,EAAOx9B,OAAOslG,iBAAiBhB,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKwG,OAAOsqB,IAC9E,IAAIk7H,EAAQzyB,EAAK18H,OACbmnF,EAASvxB,EAAOx9B,OAAO+nG,2BAA2B+uB,EAAgBjoJ,SAASimB,EAAE/pB,WAAY,MAC7F,GAAIgkF,EAAOx9E,QAAUA,GAAUw9E,EAAOx9E,QAAUw9E,EAAO43C,iBAAmB53C,EAAOm3C,kBAAoB,CACjG,IAAI8wB,EAAcx5F,EAAO1kD,eAAeirH,QAAQj2H,QAAO,SAAU1C,GAC7D,OAAOA,EAAEywB,MAAQkzD,EAAOlzD,GAC5B,IAAG,GACH,GAAmC,cAA/B2hC,EAAO1kD,eAAe7O,OAAyB2sJ,EAAkB,CACjE,IAAItuG,EAAW,QAAWymC,EAAOx9E,MAAQ,oBACzCslJ,EAAQr5F,EAAOx9B,OAAO4wH,mBAAmB1uH,cAAcomB,MAEnDuuG,EAAM3pJ,MAAQ,UACPswD,EAAOpvD,OAAO,GAAKmD,GAElC,CACA,KAAOwlJ,KACCzyB,EAAKz1H,SAASkoJ,EAAMhsJ,WAAY,KAAK8wB,MAAQkzD,EAAOlzD,KACpDyoG,EAAK9tF,OAAOugH,EAAO,GAG3B,IAAIf,EAAcx4F,EAAOx9B,OAAOu0H,uBAAuBxlE,EAAOx9E,OAE9D,GADAykJ,EAAYnlG,gBAAgB,iBACO,cAA/B2M,EAAO1kD,eAAe7O,MAAwBuzD,EAAOx9B,OAAO81G,eAAgB,CAC5E,IAAIkB,EAAYx5E,EAAOx9B,OAAO81G,gBAAkB/mD,EAAO+mD,eAAiB,gBAAkB,iBAC1FkgB,EAAY9zH,cAAc80G,GAAWzwF,UAAUjB,OAAO,aAC1D,CAcA,OAbAkY,EAAO01F,UAAW,EACd11F,EAAO4uF,gBAAgB,GAAK76I,WACrBisD,EAAO4uF,gBAAgB,GAAK76I,GAEnCisD,EAAOpvD,OAAO,GAAKmD,WACZisD,EAAOpvD,OAAO,GAAKmD,GAE1BisD,EAAO1C,SACP0C,EAAOx9B,OAAO0W,OAAOsM,EAAAA,IAAqB,CACtCsoD,YAAa,YAAarhG,KAAM+4C,EAAAA,IAAoB+vG,oBAAqBiE,EACzEC,oBAAqBloE,EAAQn8D,OAAQ,gBAGtC,OACX,CACJ,EACI4qC,EAAS7tC,KACJmF,EAAI,EAAG8L,EAAMk2H,EAAgBlvJ,OAAQktB,EAAI8L,EAAK9L,IAAK,CAExD,GAAgB,UADF4J,EAAQ5J,GAElB,KACR,CACAnF,KAAK2hI,iBArDL,CAsDJ,EAOA/3I,EAAOyV,UAAUu8B,cAAgB,WAC7B,MAAO,QACX,EACAhyC,EAAOyV,UAAUokI,sBAAwB,SAAUhoJ,GAC7B,KAAdA,EAAEu+D,SACFh6C,KAAK0pD,aAAajuE,EAE1B,EACAmO,EAAOyV,UAAUqqD,aAAe,SAAUjuE,GACtC,IAAIk4H,EAAO3zG,KAAKqQ,OACZ8tB,EAAS1iD,EAAE0iD,OACf,GAAIA,IAAU14B,EAAAA,EAAAA,IAAQ04B,EAAQ,sBAAuB,CACjD,IAAIopG,GAAiBnuG,EAAAA,EAAAA,IAAQ+E,EAAQ,sBAErC,GADAn+B,KAAKo/D,OAASu0C,EAAKiE,eAAe2vB,EAAenmG,aAAa,kBACzDphC,KAAKo/D,OACN,OAEJ,GAAiB,iBAAb3jF,EAAEwnB,QAA6BjD,KAAKqQ,OAAOlnB,eAAeyyH,sBAAuB,CACjF,IAAI4rB,GAAoBpuG,EAAAA,EAAAA,IAAQ+E,EAAQ,QAAQ5rB,cAAc,wBAC9Di1H,EAAkB3rG,cAAc,GAAG4tE,YACnC+9B,EAAkB/1H,OACtB,CACkC,cAA7BzR,KAAK7W,eAAeC,OAAuC,KAAd3N,EAAEu+D,SAC/Cv+D,EAAE0iD,OAAOvH,UAAUM,SAAS,yBACZ,IAAdz7C,EAAEu+D,SAAkBh6C,KAAKo/D,OAAOu7C,iBACnC36G,KAAKziB,MAAQ4gD,EAAO5gD,MAAM09D,OAC1Bj7C,KAAKynI,cAAchsJ,GAE3B,CACA,GAAiB,iBAAbA,EAAEwnB,QAA0D,cAA7BjD,KAAK7W,eAAe7O,KAAsB,CACzE,IAAI0I,EAAU2wH,EAAK+zB,YAAYC,YAAY3kJ,QAC3C,GAAIA,GAAWA,EAAQ4zC,UAAUM,SAAS,gBAAiB,CACvD,IAAIkoC,EAASu0C,EAAKiE,eAAe50H,EAAQi1C,kBAAkBmJ,aAAa,iBACxEphC,KAAK4nI,gBAAgBxoE,EAAOx9E,OAC5Boe,KAAKqQ,OAAOq3H,YAAYG,gBAC5B,CACJ,CACiB,WAAbpsJ,EAAEwnB,QAAoD,SAA7BjD,KAAK7W,eAAe7O,MAAmB0lB,KAAKm8G,eACrEn8G,KAAKm8G,aAAa6I,cAClBrR,EAAK5sF,OAAOsM,EAAAA,IAAqB,CAAC,GAE1C,EACAzpC,EAAOyV,UAAUyoI,gBAAkB,SAAU9kJ,GACrCA,EAAQzF,MAAMtF,QACd+K,EAAQgpE,mBAAmBp1B,UAAUjB,OAAO,SAEpD,EACA/rC,EAAOyV,UAAUsiI,gBAAkB,WAC/B,GAAiC,cAA7B3hI,KAAK7W,eAAe7O,KAAsB,CAC1C,IAAIq5H,EAAO3zG,KAAKqQ,OACZ03H,OAAmB,EACnB3zB,EAAUp0G,KAAK7W,eAAeirH,QAC9Bh1C,OAAS,EACb,IAAKp/D,KAAK7W,eAAe6+I,oBACrB,OAEJ,GAAI5zB,EAAQn8H,OAAS,GAAK+nB,KAAK8kI,kBAAoB9kI,KAAK+hE,KAAK9lB,YAAY,wBAAyB,CAC9Fj8C,KAAK8kI,gBAAkB,GACvB,IAAK,IAAIh+I,EAAQ,EAAGA,EAAQstH,EAAQn8H,OAAQ6O,IAMxC,GALAs4E,EAASu0C,EAAKyE,2BAA2BhE,EAAQl1H,SAAS4H,EAAM1L,WAAY,KAAK8wB,MAC1EynG,EAAKkE,6BAA6BzD,EAAQl1H,SAAS4H,EAAM1L,WAAY,KAAKwG,OAC7EkF,IACAkZ,KAAK8kI,iBAAmB,SAEvBn3H,EAAAA,EAAAA,IAAkByxD,EAAO5lF,QAc1BwmB,KAAK8kI,iBAAmB1lE,EAAO51E,WAAa,KAAOwW,KAAKvhB,OAAO2gF,EAAOx9E,WAdnC,CACnC,IAAIklI,EAA2B,SAAhB1nD,EAAO9kF,MAAmC,aAAhB8kF,EAAO9kF,MAAuC,aAAhB8kF,EAAO9kF,KAC1E0lB,KAAK8gI,eAAemH,SAASjoI,KAAKvhB,OAAO2gF,EAAOx9E,OAAQw9E,EAAOsnE,YAA8B,aAAhBtnE,EAAO9kF,KAAsB,OAAS8kF,EAAO9kF,MAC1H0lB,KAAKvhB,OAAO2gF,EAAOx9E,OACvB,GAAsB,SAAhBw9E,EAAO9kF,MAAmC,aAAhB8kF,EAAO9kF,MAAuC,aAAhB8kF,EAAO9kF,KAEjEytJ,EADe/nI,KAAK8yG,eAAe0R,WAAW,kBAClBtL,OAAO4N,EAAS1nD,EAAOsnE,aAAatrJ,gBAGhE2sJ,EAAmB/nI,KAAKolI,qBAAqBte,EAAS1nD,GAE1Dp/D,KAAK8kI,iBAAmB1lE,EAAO51E,WAAa,KAAOu+I,CACvD,CAKR,CACIp0B,EAAKkB,aACLlB,EAAK+xB,sBAAsB1lI,KAAK8kI,iBAGpC9kI,KAAK8kI,gBAAkB,EAC3B,CACJ,EACAl7I,EAAOyV,UAAU+lI,qBAAuB,SAAU7nJ,EAAO6hF,GAErD,OADep/D,KAAK8yG,eAAe0R,WAAW,kBAC9BtL,OAAO37H,EAAO6hF,EAAO25C,gBAAgB39H,UACzD,EACAwO,EAAOyV,UAAUwlI,kBAAoB,SAAUzlE,EAAQ7hF,GACnD,IAAI2qJ,EACJ,GAAoB,WAAhB9oE,EAAO9kF,MACHgjG,EAAAA,EAAS4X,gBAAgB,GAAK33G,IAAUyiB,KAAKogI,gBAAgB9pI,QAAQ/Y,IAAU,KAC/E2qJ,GAAS,QAGZ,GAAoB,WAAhB9oE,EAAO9kF,KACZ,IAAK,IAAIi0B,EAAK,EAAGumE,EAAUv3F,EAAOgxB,EAAKumE,EAAQ78F,OAAQs2B,IAAM,CACzD,IAAI5Q,EAAMm3E,EAAQvmE,GACdvO,KAAKqgI,gBAAgB/pI,QAAQqH,IAAQ,IACrCuqI,GAAS,EAEjB,CAEJ,OAAOA,CACX,EACAt+I,EAAOyV,UAAUooI,cAAgB,SAAUhsJ,GACvCukB,KAAKmoI,YACLnoI,KAAKooI,WAAW3sJ,EACpB,EACAmO,EAAOyV,UAAU+oI,WAAa,SAAU3sJ,GACpC,IAAIu0B,EAAQhQ,KACZA,KAAK6wH,MAAQvwI,OAAOqxB,aAAY,WAAc3B,EAAMq4H,aAAe,GAAiB,KAAd5sJ,EAAEu+D,QAAiB,EAAIh6C,KAAK7W,eAAeE,mBACrH,EACAO,EAAOyV,UAAU8oI,UAAY,WACzB7nJ,OAAOuxB,cAAc7R,KAAK6wH,MAC9B,EACAjnI,EAAOyV,UAAUgpI,YAAc,WAC3B,IAKI3vC,EALA//D,EAAW,QAAW34B,KAAKo/D,OAAOx9E,MAAQ,mBAC1CgkJ,EAAgB5lI,KAAKhd,QAAQuvB,cAAcomB,GAO/C,IANKitG,GAAiB5lI,KAAKqQ,OAAOyxH,iBAC9B8D,EAAgB5lI,KAAKqQ,OAAO4wH,mBAAmB1uH,cAAcomB,IAGjE34B,KAAK0/H,SAAS1/H,KAAKo/D,OAAOx9E,OAASgkJ,EAAcroJ,MACjDyiB,KAAKmoI,aACAx6H,EAAAA,EAAAA,IAAkB3N,KAAKo/D,OAAOi8C,mBAU/B3iB,EAAcp8F,KAAKC,MAAMD,KAAKK,UAAUipI,EAAcroJ,YAVH,CACnD,IAAI+qJ,EAAetoI,KAAKo/D,OAAOi8C,kBAAkBsH,KACrB,kBAAjB2lB,IACPA,GAAel7H,EAAAA,EAAAA,IAASk7H,EAAchoJ,UAErCqtB,EAAAA,EAAAA,IAAkB26H,KACnBtoI,KAAKziB,MAAQ+qJ,EAAa5oI,KAAKM,KAAM4lI,GAE7C,EAIIj4H,EAAAA,EAAAA,IAAkB3N,KAAKziB,QAAyB,KAAfyiB,KAAKziB,MACtCyiB,KAAKonH,0BAA0BpnH,KAAKo/D,OAAOx9E,QAG/Coe,KAAKuoI,oBAAoBvoI,KAAKziB,OAC9ByiB,KAAKy/H,gBAAiB,EACtBz/H,KAAK+iH,eAAe/iH,KAAKo/D,OAAOx9E,MAAOoe,KAAK4gF,SAAU5gF,KAAKziB,MAAOyiB,KAAKmkF,UAAWnkF,KAAK7W,eAAe44H,sBAAuB/hH,KAAKi/E,cAClIj/E,KAAKy/H,gBAAiB,EACtBmG,EAAcroJ,MAAQm7G,EACtB14F,KAAK2hI,kBACT,EACA/3I,EAAOyV,UAAUkpI,oBAAsB,SAAUhrJ,GAC7C,IAAIirJ,EACA1hJ,EAEJ,OADAkZ,KAAKktF,UAAYltF,KAAK7W,eAAe44H,sBAC7B/hH,KAAKo/D,OAAO9kF,MAChB,IAAK,SACG0lB,KAAKo/D,OAAOjhF,OAAOyiG,SACnB5gF,KAAK4gF,SAAW5gF,KAAKo/D,OAAOjhF,OAAOyiG,SAGnC5gF,KAAK4gF,SAAW5gF,KAAK4/H,gBAAgBzqC,MAEzCqzC,EAAY,CAAC,IAAK,IAAK,IAAK,KAC5B,IAAK,IAAIrjI,EAAI,EAAGA,EAAI5nB,EAAMtF,OAAQktB,IAC9B,GAAIqjI,EAAUlyI,QAAQ/Y,EAAM2B,SAASimB,EAAE/pB,WAAY,OAAS,EAAG,CAC3D0L,EAAQqe,EACR,KACJ,CAEJnF,KAAKyoI,YAAYlrJ,EAAMsG,UAAUiD,IACnB,IAAVA,IACAkZ,KAAKziB,MAAQA,EAAMsG,UAAU,EAAGiD,IAEjB,KAAfkZ,KAAKziB,OAAgBA,EAAMtF,QAAU,IACrC+nB,KAAKziB,MAAQyiB,KAAK8gI,eAAemH,SAASjoI,KAAKziB,MAAOyiB,KAAKo/D,OAAOsnE,YAAa1mI,KAAKo/D,OAAO9kF,OAE3Fw/B,MAAM9Z,KAAKziB,SACXyiB,KAAK8kI,gBAAkB9kI,KAAK+hE,KAAK9lB,YAAY,yBAEjD,MACJ,IAAK,OACL,IAAK,WACDj8C,KAAK4gF,SAAW5gF,KAAK4/H,gBAAgBzqC,MAClB,KAAfn1F,KAAKziB,OAAkByiB,KAAKziB,iBAAiB+B,OAC7C0gB,KAAKyoI,YAAYlrJ,GACjByiB,KAAKziB,MAAQyiB,KAAK8gI,eAAemH,SAASjoI,KAAKziB,MAAOyiB,KAAKo/D,OAAOsnE,YAAa1mI,KAAKo/D,OAAO9kF,OACvFqzB,EAAAA,EAAAA,IAAkB3N,KAAKziB,SACvByiB,KAAK8kI,gBAAkB9kI,KAAK+hE,KAAK9lB,YAAY,0BAGrD,MACJ,IAAK,SACDj8C,KAAKktF,WAAY,EACbltF,KAAKo/D,OAAOjhF,OAAOyiG,SACnB5gF,KAAK4gF,SAAW5gF,KAAKo/D,OAAOjhF,OAAOyiG,UAGP,IAAxBrjG,EAAM+Y,QAAQ,OAAuC,IAAxB/Y,EAAM+Y,QAAQ,OAAyC,IAA1B/Y,EAAM+Y,QAAQ,OACxE0J,KAAK4gF,SAAW5gF,KAAK4/H,gBAAgB7tC,UAER,IAAxBx0G,EAAM+Y,QAAQ,KACnB0J,KAAK4gF,SAAW5gF,KAAK4/H,gBAAgB1tC,KAGrClyF,KAAK4gF,SAAW5gF,KAAK4/H,gBAAgBzpI,WAG7C,MACJ,IAAK,UAC2B,SAAxB5Y,EAAMc,eAAsC,MAAVd,EAClCyiB,KAAKziB,OAAQ,EAEgB,UAAxBA,EAAMc,eAAuC,MAAVd,EACxCyiB,KAAKziB,OAAQ,EAERA,EAAMtF,SACX+nB,KAAK8kI,gBAAkB9kI,KAAK+hE,KAAK9lB,YAAY,yBAEjDj8C,KAAK4gF,SAAW5gF,KAAK4/H,gBAAgBzqC,MACrC,MACJ,QACQn1F,KAAKo/D,OAAOjhF,OAAOyiG,SACnB5gF,KAAK4gF,SAAW5gF,KAAKo/D,OAAOjhF,OAAOyiG,SAGnC5gF,KAAK4gF,SAAW5gF,KAAK4/H,gBAAgBzqC,MAGrD,EACAvrG,EAAOyV,UAAUopI,YAAc,SAAUlrJ,GACrC,IAAImrJ,EAAWnrJ,EAAM4f,OAAO,GACxBwrI,EAAaprJ,EAAM8f,MAAM,EAAG,GAC5B4+G,GAAYttG,EAAAA,EAAAA,IAAO,CAAE,IAAK3O,KAAK4/H,gBAAgBzqC,MAAO,IAAKn1F,KAAK4/H,gBAAgBK,UAAY3iD,EAAAA,EAAS4X,kBAErG+mB,EAAUxsG,eAAei5H,IAAazsB,EAAUxsG,eAAek5H,MAC/D3oI,KAAK4gF,SAAWq7B,EAAU,GAAKysB,GAC/B1oI,KAAKziB,MAAQA,EAAMsG,UAAU,GACxBmc,KAAK4gF,WACN5gF,KAAK4gF,SAAWq7B,EAAU,GAAK0sB,GAC/B3oI,KAAKziB,MAAQA,EAAMsG,UAAU,KAGjCmc,KAAK4gF,WAAa5gF,KAAK4/H,gBAAgBG,UAAY//H,KAAK4gF,WAAa5gF,KAAK4/H,gBAAgBC,aAC7D,MAAzB7/H,KAAKziB,MAAM4f,OAAO,KAClB6C,KAAK4gF,SAAW5gF,KAAK4gF,SAAW,UAChC5gF,KAAKziB,MAAQyiB,KAAKziB,MAAMsG,UAAU,GAG9C,EACA+F,EAAOyV,UAAU4kI,sBAAwB,WACjCjkI,KAAKqQ,OAAOlnB,eAAe7O,IAGnC,EACAsP,EAAOyV,UAAUmhI,4BAA8B,WAC3C,IAAIoI,EAAU,CACV,CAAErrJ,MAAO,QAASxF,KAAMioB,KAAK+hE,KAAK9lB,YAAY,UAC9C,CAAE1+D,MAAO,cAAexF,KAAMioB,KAAK+hE,KAAK9lB,YAAY,gBACpD,CAAE1+D,MAAO,qBAAsBxF,KAAMioB,KAAK+hE,KAAK9lB,YAAY,uBAC3D,CAAE1+D,MAAO,WAAYxF,KAAMioB,KAAK+hE,KAAK9lB,YAAY,aACjD,CAAE1+D,MAAO,kBAAmBxF,KAAMioB,KAAK+hE,KAAK9lB,YAAY,oBACxD,CAAE1+D,MAAO,WAAYxF,KAAMioB,KAAK+hE,KAAK9lB,YAAY,aACjD,CAAE1+D,MAAO,SAAUxF,KAAMioB,KAAK+hE,KAAK9lB,YAAY,WAC/C,CAAE1+D,MAAO,YAAaxF,KAAMioB,KAAK+hE,KAAK9lB,YAAY,aAEtDj8C,KAAKu8G,gBAAkB,CACnBssB,eAAgB,CACZ,CAAEtrJ,MAAO,aAAcxF,KAAMioB,KAAK+hE,KAAK9lB,YAAY,eACnD,CAAE1+D,MAAO,WAAYxF,KAAMioB,KAAK+hE,KAAK9lB,YAAY,aACjD,CAAE1+D,MAAO,WAAYxF,KAAMioB,KAAK+hE,KAAK9lB,YAAY,aACjD,CAAE1+D,MAAO,QAASxF,KAAMioB,KAAK+hE,KAAK9lB,YAAY,UAC9C,CAAE1+D,MAAO,UAAWxF,KAAMioB,KAAK+hE,KAAK9lB,YAAY,YAChD,CAAE1+D,MAAO,mBAAoBxF,KAAMioB,KAAK+hE,KAAK9lB,YAAY,kBACzD,CAAE1+D,MAAO,iBAAkBxF,KAAMioB,KAAK+hE,KAAK9lB,YAAY,gBACvD,CAAE1+D,MAAO,iBAAkBxF,KAAMioB,KAAK+hE,KAAK9lB,YAAY,gBACvD,CAAE1+D,MAAO,WAAYxF,KAAMioB,KAAK+hE,KAAK9lB,YAAY,aACjD,CAAE1+D,MAAO,aAAcxF,KAAMioB,KAAK+hE,KAAK9lB,YAAY,eACnD,CAAE1+D,MAAO,OAAQxF,KAAMioB,KAAK+hE,KAAK9lB,YAAY,UAEjD6sF,eAAgBF,EAChBG,aAAcH,EACdI,iBAAkBJ,EAClBK,iBAAkBL,EAClBM,gBAAiB,CACb,CAAE3rJ,MAAO,QAASxF,KAAMioB,KAAK+hE,KAAK9lB,YAAY,UAC9C,CAAE1+D,MAAO,WAAYxF,KAAMioB,KAAK+hE,KAAK9lB,YAAY,cAG7D,EAMAryD,EAAOyV,UAAUuoI,gBAAkB,SAAUhmJ,GACzC,IAAI+xH,EAAO3zG,KAAKqQ,OAChB,GAAIsjG,EAAKoK,iBACL/9G,KAAKshI,kBAAiB,OAD1B,CAIA,IAAIliE,EAASu0C,EAAKgC,iBAAiB/zH,GAE/Bu8C,EADSw1E,EAAKixB,uBAAuBhjJ,GACrB2wB,cAAc,oBAClC,GAAK4rB,EAAL,CAGA,IAAIgrG,EAAUx1B,EAAK3wH,QAAQkgD,wBACvBkmG,EAAUjrG,EAAO+E,wBACrBljC,KAAKsmI,iBAAiBlnE,EAAQjhC,EAAQirG,EAAQzlG,MAAQwlG,EAAQzlG,KAAM0lG,EAAQvlG,OAASslG,EAAQvlG,IAH7F,CANA,CAUJ,EACAh6C,EAAOyV,UAAUilI,uBAAyB,SAAU7oJ,GAChD,IAAI0iD,EAAS1iD,EAAE0iD,OACf,GAAIA,EAAOvH,UAAUM,SAAS,qBAA2D,SAApCl3B,KAAKqQ,OAAOlnB,eAAe7O,MACxC,aAApC0lB,KAAKqQ,OAAOlnB,eAAe7O,MAA2D,UAApC0lB,KAAKqQ,OAAOlnB,eAAe7O,MAAmB,CAChG,IACI67H,EADOn2G,KAAKqQ,OACDunG,gBAAe+N,EAAAA,EAAAA,IAAaxnF,EAAQ,gBAAgBlG,kBAAkBmJ,aAAa,iBAElG,GADAphC,KAAKo/D,OAAS+2C,EACVn2G,KAAKmgI,eAAev+I,QAAUu0H,EAAIv0H,OAASoe,KAAKmgI,eAAet1I,OAC/D,OAEAmV,KAAKm8G,cACLn8G,KAAKm8G,aAAa6I,cAEtBhlH,KAAKmgI,eAAiB,CAAEv+I,MAAOu0H,EAAIv0H,MAAOiJ,QAAQ,GAClDmV,KAAK4nI,gBAAgBzxB,EAAIv0H,MAC7B,CACJ,EACAgI,EAAOyV,UAAUspD,aAAe,SAAUltE,GACtC,GAAiC,cAA7BukB,KAAK7W,eAAe7O,MAAwB0lB,KAAK7W,eAAeyyH,sBAAuB,CACvF,IAAI+J,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,oBACvB1iD,EAAE0iD,OAAOvH,UAAUM,SAAS,sBAAuB,CACnD,IAAImyG,GAAwBjwG,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,OAC1C5rB,cAAc,wBACd82H,EACAA,EAAsB53H,QAGtBh2B,EAAE0iD,OAAO1sB,OAEjB,CACA,GAAIh2B,EAAE0iD,OAAOvH,UAAUM,SAAS,eAAgB,CAC5C,IAAIoyG,EAAU1mI,SAAS2P,cAAc,iBAAiB6uB,aAAa,MAAM3qC,QAAQ,SAAU,KACnD,IAApC6yI,EAAQhzI,QAAQ,iBAChB8iC,EAAAA,EAAAA,IAAQx2B,SAASo5B,eAAestG,GAAU,OAAO/2H,cAAc,iBAAiBd,OAExF,CACJ,CACA,GAAiC,cAA7BzR,KAAK7W,eAAeC,MAA4D,SAApC4W,KAAKqQ,OAAOlnB,eAAe7O,MACnC,aAApC0lB,KAAKqQ,OAAOlnB,eAAe7O,MAA2D,UAApC0lB,KAAKqQ,OAAOlnB,eAAe7O,KAAkB,CAC/F,IAAI6jD,EAAS1iD,EAAE0iD,OACXorG,EAAgBprG,EAAOvH,UAAUM,SAAS,SAC1C8jG,GAASrV,EAAAA,EAAAA,IAAa3lH,KAAKqQ,OAAOrtB,QAAS,YAC3CwmJ,GAAY,EACZ17B,GAAW6X,EAAAA,EAAAA,IAAaxnF,EAAQ,WAChCsrG,EAAkBzpI,KAAKqQ,OAAOrtB,QAAQ4zC,UAAUM,SAAS,YAAct0B,SAAS2P,cAAc,mBAC5FvS,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,mBAQxC,GAPIyoH,GAAUltB,IACV07B,EAAYxO,EAAOp2I,KAAOkpH,EAASlpH,IAElC6kJ,KAAoB9jB,EAAAA,EAAAA,IAAaxnF,EAAQ,uBAC1CwnF,EAAAA,EAAAA,IAAaxnF,EAAQ,wBACrBn+B,KAAKm8G,aAAa6I,YAAY7mF,IAE9BwnF,EAAAA,EAAAA,IAAaxnF,EAAQ,mBAAqBA,EAAOvH,UAAUM,SAAS,mBACpE,QAEKl3B,KAAKm8G,eAAkBwJ,EAAAA,EAAAA,IAAaxnF,EAAQ,qBAC5C/E,EAAAA,EAAAA,IAAQ+E,EAAQ,+BAAoCorG,IACpDC,KAAe7jB,EAAAA,EAAAA,IAAaxnF,EAAQ,qBAChCwnF,EAAAA,EAAAA,IAAaxnF,EAAQ,oBAAyB2vE,GAAY27B,KAC/DzpI,KAAKm8G,aAAa4L,cAAepC,EAAAA,EAAAA,IAAaxnF,EAAQ,YAClDwnF,EAAAA,EAAAA,IAAaxnF,EAAQ,UAAUv5C,KAAOob,KAAKqQ,OAAOrtB,QAAQ4B,GAC9Dob,KAAKm8G,aAAa6I,YAAY7mF,GAG1C,CACJ,EACAv0C,EAAOyV,UAAUwnI,cAAgB,SAAU54I,GACvC+R,KAAKy8H,gBAAgBxuI,EAAKrM,OAASqM,EAAKwuI,gBAIxC,IAHA,IAAIjgD,EAAc,IAAIoP,EAAAA,EAAY5rF,KAAK7W,eAAeirH,SAClDh4B,GAAQ,IAAI4B,EAAAA,GAAQjC,MAAM,QAAS/7E,KAAK4/H,gBAAgBzqC,MAAOlnG,EAAKrM,OACpExC,EAASo9F,EAAY6Q,aAAajR,GAC7Bj3E,EAAI,EAAGA,EAAI/lB,EAAOnH,OAAQktB,IAAK,CAEpC,IADA,IAAIre,GAAS,EACJ0vB,EAAI,EAAGA,EAAIxW,KAAK7W,eAAeirH,QAAQn8H,OAAQu+B,IACpD,GAAIp3B,EAAOF,SAASimB,EAAE/pB,WAAY,KAAKwG,QAAUoe,KAAK7W,eAAeirH,QAAQl1H,SAASs3B,EAAEp7B,WAAY,KAAKwG,MAAO,CAC5GkF,EAAQ0vB,EACR,KACJ,EAEW,IAAX1vB,GACAkZ,KAAK7W,eAAeirH,QAAQvtF,OAAO//B,EAAO,EAElD,CACIkZ,KAAKvhB,OAAOwP,EAAKrM,eACVoe,KAAKvhB,OAAOwP,EAAKrM,OAE5B,IAAIu0H,EAAMn2G,KAAKqQ,OAAOslG,iBAAiB1nH,EAAKrM,OACxCylI,EAAYrnH,KAAKqQ,OAAO81G,gBAAkBhQ,EAAIgQ,eAAiB,gBAAkB,iBACjFujB,EAAoB1pI,KAAKqQ,OAAOu0H,uBAAuB32I,EAAKrM,OAAO2wB,cAAc80G,GACjE,cAAhBp5H,EAAKgV,QACLjD,KAAK7W,eAAeirH,QAAUp0G,KAAK7W,eAAeirH,QAAQzzH,OAAOsN,EAAKsuI,kBAClEv8H,KAAK7W,eAAeirH,QAAQn8H,QAAUyxJ,GACtCA,EAAkB9yG,UAAUzB,IAAI,gBAIhCu0G,GACAA,EAAkB9yG,UAAUjB,OAAO,cAEvC1nC,EAAK0tF,YAAc,YACnB37E,KAAKqQ,OAAO61H,aAAa/6F,QAAQl9C,IAErC+R,KAAKqQ,OAAO0qB,UAChB,EACAnxC,EAAOyV,UAAUomI,aAAe,WAC5B,IAAI9wB,EAAO30G,KAAK7W,eAAeirH,QAC/Bp0G,KAAKy8H,gBAAkB,CAAC,EACxB,IAAK,IAAIt3H,EAAI,EAAGA,EAAIwvG,EAAK18H,OAAQktB,IAAK,CAClCnF,KAAKo/D,OAASp/D,KAAKqQ,OAAOslG,iBAAiBhB,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKwG,SACxEy2H,EAAAA,EAAAA,IAA2B1D,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKwG,MAAOoe,KAAKqQ,OAAO0mG,wBACnF,IAAI15B,EAAYs3B,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKwG,MAC5Coe,KAAKqQ,OAAOslG,iBAAiBhB,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKwG,SAC/Dy7F,GAAYg7B,EAAAA,EAAAA,IAA2B1D,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKwG,MAAOoe,KAAKqQ,OAAO0mG,wBAAwBn1H,OAEvHoe,KAAK2pI,kBAAkBtsD,EAAWs3B,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKwlG,SAAU+zB,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKmC,MAAOo3H,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKd,KAAMq6H,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAK+oG,UAAWwwB,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAK8xG,UAAWynB,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAK6jG,aAAc01B,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAK8wB,IACxU,CACJ,EACAtiB,EAAOyV,UAAUsqI,kBAAoB,SAAUtsD,EAAWuD,EAAUrjG,EAAOjD,EAAM6pG,EAAW+I,EAAWjO,EAAc/yE,GACjH,IAAIoB,EAAM,CACN1rB,MAAOy7F,EACP8G,UAAWA,EACX+I,UAAWA,EACXjO,aAAcA,EACd2B,SAAUA,EACVrjG,MAAOA,EACPjD,KAAMA,GAEN0lB,KAAKy8H,gBAAgB,GAAKp/C,GAC1Br9E,KAAKy8H,gBAAgB,GAAKp/C,GAAW59F,KAAK6tB,GAG1CtN,KAAKy8H,gBAAgB,GAAKp/C,GAAa,CAAC/vE,GAE5C,IAAI1rB,EAAQsqB,EAAMlM,KAAKqQ,OAAO+nG,2BAA2BlsG,GAAKtqB,MAAQy7F,EACtEr9E,KAAK4pI,iBAAiBhoJ,EAC1B,EACAgI,EAAOyV,UAAUuqI,iBAAmB,SAAUvsD,GAC1C,IAAIqsD,EACAvzB,EAAMn2G,KAAKqQ,OAAOslG,iBAAiBt4B,GACnCr9E,KAAKqQ,OAAO81G,gBAAkBhQ,EAAIgQ,eAClCujB,EAAoB1pI,KAAKqQ,OAAOu0H,uBAAuBvnD,GAAW9qE,cAAc,iBAE3E4jG,IACLuzB,EAAoB1pI,KAAKqQ,OAAOu0H,uBAAuBvnD,GAAW9qE,cAAc,mBAEhFm3H,GACAA,EAAkB9yG,UAAUzB,IAAI,aAExC,EAKAvrC,EAAOyV,UAAUkoH,gBAAkB,WAC/B,OAAOvnH,KAAKm8G,aAAen8G,KAAKm8G,aAAaoL,kBAAoB,CAAC,CACtE,EAMA39H,EAAOyV,UAAUslI,gBAAkB,SAAU/iJ,GACzC,OAAOghB,SAASo5B,eAAeh8B,KAAKqQ,OAAOslG,iBAAiB/zH,GAAOsqB,KAAK2vB,cAAc,GAAGt+C,KAC7F,EAMAqM,EAAOyV,UAAUwqI,2BAA6B,WAC1C,OAAO7pI,KAAKm8G,aAAaqL,oBAC7B,EACO59H,CACX,CAzwC4B,sICE5B,IAAIkgJ,EAAuB,WAQvB,SAASA,EAAMz5H,EAAQ05H,GACnB/pI,KAAKgqI,cAAe,EACpBhqI,KAAKiqI,QAAU,IAAIn8C,EAAAA,EACnB9tF,KAAKqQ,OAASA,EACVrQ,KAAKqQ,OAAOuqB,cAGhB56B,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAqBrzB,KAAKkqI,iBAAkBlqI,MAC3DA,KAAKmqI,oBAAsBnqI,KAAKkiH,YAAYljH,KAAKgB,MACjDA,KAAKqQ,OAAOxM,iBAAiBwvB,EAAAA,IAAoBrzB,KAAKmqI,qBACtDnqI,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAgBrzB,KAAKoqI,QAAQprI,KAAKgB,OACjDA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAuBrzB,KAAKqqI,eAAgBrqI,MAC3DA,KAAK+pI,aAAeA,EACxB,CAwNA,OAvNAD,EAAMzqI,UAAU6qI,eAAiB,WAC7B,IAAIl6H,EAAQhQ,KACZ,OAAIA,KAAKsqI,eAAqD,SAAnCtqI,KAAKqQ,OAAOk6H,oBAAkCvqI,KAAKqQ,OAAOmyH,UAG9E,WACHxyH,EAAMi6H,QAAQ/iJ,QAAQC,MAAK,WACvB6oB,EAAMw6H,cACV,IACIx6H,EAAMs6H,eACNt6H,EAAMq6H,gBAEd,EATWrqI,KAAKwqI,YAUpB,EACAV,EAAMzqI,UAAUgrI,eAAiB,WAC7BrqI,KAAKyqI,eAAezqI,KAAKqQ,QACzB,IAAIq6H,EAAepqJ,OAAOoqJ,aACtBA,IAAiBA,EAAa1nJ,QAAQuvB,cAAc,oBACpDm4H,EAAaC,YAAYV,QAAQvsI,SAEzC,EAQAosI,EAAMzqI,UAAUoR,MAAQ,WACpBzQ,KAAK4qI,iBACT,EACAd,EAAMzqI,UAAU+qI,QAAU,WAClBpqI,KAAKsqI,eACLtqI,KAAKwqI,cAEb,EACAV,EAAMzqI,UAAU6iH,YAAc,WACtBliH,KAAKsqI,gBACLtqI,KAAKgqI,cAAe,EAE5B,EACAF,EAAMzqI,UAAUurI,gBAAkB,WAC9B,IAAIj3B,EAAO3zG,KAAKqQ,OACZrtB,GAAU4tB,EAAAA,EAAAA,IAAc,MAAO,CAC/BhsB,GAAIob,KAAKqQ,OAAOrtB,QAAQ4B,GAAK,SAAU3J,UAAW04H,EAAK3wH,QAAQ/H,UAAY,kBAE/E+H,EAAQ4zC,UAAUjB,OAAO,eACzB/yB,SAASuuB,KAAKhgB,YAAYnuB,GAE1B,IADA,IAAI6nJ,EAAY,IAAIC,EAAAA,IAAKC,EAAAA,EAAAA,IAAkBp3B,EAAMA,EAAK42B,qBAC7CplI,EAAI,EAAGA,EAAI0lI,EAAUz2B,QAAQn8H,OAAQktB,IAC1C0lI,EAAUz2B,QAAQl1H,SAASimB,EAAE/pB,WAAY,MAAOuzB,EAAAA,EAAAA,IAAO,CAAC,EAAGk8H,EAAUz2B,QAAQl1H,SAASimB,EAAE/pB,WAAY,MAChGu4H,EAAKmuB,iBAAmBnuB,EAAKq3B,qBAC7BH,EAAUz2B,QAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKse,YAASxe,GAI3D8kB,KAAKqQ,OAAOo7C,YAEZo/E,EAAUI,iBAAmBjrI,KAAKqQ,OAAO46H,kBAG7CJ,EAAU9uF,KAAO,WAAc,EAC/B8uF,EAAUzuD,MAAQu3B,EAAKxpB,WAAWj7E,QAClC5uB,OAAOoqJ,aAAeG,EACtBA,EAAUhvB,YAAa,EACvB,IAAIh2E,EAAUglG,EAAUr+F,qBACpB0+F,EAAiBv3B,EAAKnnE,qBACrB3G,GAAWA,EAAQ5tD,SAAWizJ,EAAejzJ,QAC9C4yJ,EAAUM,mBAAmBD,GAEjCv3B,EAAK5sF,OAAOsM,EAAAA,IAAsB,CAAErwC,QAASA,EAASooJ,UAAWP,IACjE7qI,KAAKqQ,OAAOulG,IAAI,kBAAmB51G,KAAK47B,iBACxCivG,EAAUQ,mBAAqBrrI,KAAKqQ,OAAOg7H,mBAC3CR,EAAUjiF,MAAQ5oD,KAAKqQ,OAAOu4C,MAC9BiiF,EAAU9/F,SAAS/nD,GACd2wH,EAAK23B,SACNT,EAAU/0G,QAAU69E,EAAK79E,QAEjC,EACAg0G,EAAMzqI,UAAUmrI,aAAe,WAC3B,GAAIxqI,KAAKsqI,cAAe,CACpB,IAAI32B,EAAO3zG,KAAKqQ,OAChB,GAAIrQ,KAAKgqI,aAEL,YADAhqI,KAAK6qI,YAGT,IAAI58I,EAAO,CACP0tF,YAAa,QACb34F,QAAS2wH,EAAK3wH,QACduoJ,aAAc53B,EAAK63B,kBAAkB16H,iBAAiB,4BACtDvpB,QAAQ,EACRgjJ,mBAAoB52B,EAAK42B,oBAK7B,GAHKvqI,KAAKgqI,cACNr2B,EAAK79E,QAAQzC,EAAAA,IAAoBplC,GAEjCA,EAAK1G,OAEL,YADAgxC,EAAAA,EAAAA,IAAOo7E,EAAK3wH,SAGXgd,KAAKgqI,cACNhqI,KAAK6qI,WAEb,CACJ,EACAf,EAAMzqI,UAAUwrI,UAAY,WACxB,IAAIl3B,EAAO3zG,KAAKqQ,OAEhB,GAAoB,SAAhBsjG,EAAK3/D,OAAmB,CACxB,IAAIy3F,EAAWzrI,KAAK+pI,aAAa2B,mBAC7BC,EAAah4B,EAAK3wH,QAAQuvB,cAAc,IAAMsrG,EAAAA,IAC9C+tB,EAAYj4B,EAAK3wH,QAAQuvB,cAAc,IAAMsrG,EAAAA,IACjD8tB,EAAWp0G,MAAMyc,OAAS,OAC1B23F,EAAWp0G,MAAMooB,UAAY,OAC7BisF,EAAUr0G,MAAMk0G,EAASl9F,SAAW,GACpCq9F,EAAU3zG,kBAAkBV,MAAMk0G,EAAS37B,QAAU,EACzD,CAEI6D,EAAK6B,gBACA7B,EAAK8B,cAAcrB,QAAQn8H,OAI5B+nB,KAAKyqI,eAAe92B,GAHpBA,EAAK3wH,QAAQuvB,cAAc,oBAAoBglB,MAAMuiB,QAAU,QAOvE,IAAK,IAAIvrC,EAAK,EAAGvoB,EAAK,GAAGqX,MAAMqC,KAAKi0G,EAAK3wH,QAAQwhD,uBAAuBq5E,EAAAA,KAAoBtvG,EAAKvoB,EAAG/N,OAAQs2B,IAAM,EAC1GvrB,EAAUgD,EAAGuoB,IACTgpB,MAAMmoB,UAAY,QAC9B,CAGA,IADA,IAAImsF,EAAa,GAAGxuI,MAAMqC,KAAKi0G,EAAK3wH,QAAQwhD,uBAAuB,gBAC1DzN,EAAK,EAAGssE,EAAK,GAAGhmG,MAAMqC,KAAKmsI,GAAa90G,EAAKssE,EAAGprH,OAAQ8+C,IAAM,CACnE,IAAI/zC,EAAUqgH,EAAGtsE,IACjBH,EAAAA,EAAAA,IAAU5zC,EAAS,CAAC,eAAgB,CAAC,eACzC,CACAgd,KAAK8rI,iBAAiBn4B,GACtBA,EAAKkI,YAAa,SACXv7H,OAAOoqJ,aACd,IAAIz8I,EAAO,CACPjL,QAAS2wH,EAAK3wH,SAElB2wH,EAAK79E,QAAQzC,EAAAA,IAAsBplC,GACnC0lH,EAAKjsF,UACL1nB,KAAKqQ,OAAOulG,IAAI,qBAAsB51G,KAAK47B,gBAC/C,EACAkuG,EAAMzqI,UAAUysI,iBAAmB,SAAUn4B,IACzC/8E,EAAAA,EAAAA,IAAU+8E,EAAK3wH,QAAS,CAAC,uBAAwB,CAAC,iBAC9C2wH,EAAKkI,aACLtjF,EAAAA,EAAAA,IAAOo7E,EAAK3wH,SAEhBgd,KAAK+rI,UAAYzrJ,OAAOC,KAAK,GAAI,QAAS,UAAYD,OAAO0rJ,YAAc,UAAY1rJ,OAAO2rJ,WAAa,cAC3GjsI,KAAK+rI,UAAUG,OAAO,EAAG,GACzBlsI,KAAK+rI,UAAUI,SAASC,OAAOC,WAAYD,OAAOE,aAClDtsI,KAAK+rI,WAAYr7H,EAAAA,EAAAA,IAAYijG,EAAK3wH,QAASgd,KAAK+rI,UACpD,EACAjC,EAAMzqI,UAAUorI,eAAiB,SAAU92B,GACvC,IAAIx8C,EAAQw8C,EAAK8B,cAAcrB,QAAQn8H,OACnC+K,EAAU2wH,EAAK3wH,QACf4B,EAAK,IAAM+uH,EAAK3wH,QAAQ4B,GAC5B,GAAKuyE,EAAL,CAKA,IAFA,IAAIo1E,GAAezzG,EAAAA,EAAAA,IAAU,kBAAmB91C,GAC5CwpJ,EAAUD,EAAap1E,EAAQ,GAAG/1B,aAAa,WAC1Cj8B,EAAI,EAAGA,EAAIonI,EAAat0J,OAAQktB,IACrConI,EAAartJ,SAASimB,EAAE/pB,WAAY,KAAKk7C,aAAa,UAAWk2G,GAErE,IAAIC,GAAY3zG,EAAAA,EAAAA,IAAU,WAAal0C,EAAK,WAAY5B,GACpD0pJ,GAAmB5zG,EAAAA,EAAAA,IAAU,sBAAuB91C,GACxDgd,KAAK2sI,aAAaF,EAAWt1E,GAC7Bn3D,KAAK2sI,aAAaD,EAAkBv1E,EATpC,CAUJ,EACA2yE,EAAMzqI,UAAUstI,aAAe,SAAUF,EAAWt1E,GAChD,IAAK,IAAIhyD,EAAI,EAAGA,EAAIsnI,EAAUx0J,OAAQktB,IAClC,IAAK,IAAIqR,EAAI,EAAGA,EAAI2gD,EAAO3gD,IACvBi2H,EAAUvtJ,SAASimB,EAAE/pB,WAAY,KAAKxD,SAASsH,SAASs3B,EAAEp7B,WAAY,KAAKm8C,MAAMuiB,QAAU,MAGvG,EAOAgwF,EAAMzqI,UAAUirI,YAAc,WAC1B,OAAOtqI,KAAKqQ,OAAOrtB,QAAQ4B,GAAG0R,QAAQ,UAAY,GAAK0J,KAAKqQ,OAAOwrG,UACvE,EAOAiuB,EAAMzqI,UAAUqoB,QAAU,WAClB1nB,KAAKqQ,OAAOuqB,cAGhB56B,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAqBrzB,KAAKwqI,aAAaxrI,KAAKgB,OAC5DA,KAAKqQ,OAAOvM,oBAAoBuvB,EAAAA,IAAoBrzB,KAAKmqI,qBACzDnqI,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAgBrzB,KAAKoqI,QAAQprI,KAAKgB,OAClDA,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAuBrzB,KAAKqqI,gBAChD,EAOAP,EAAMzqI,UAAUu8B,cAAgB,WAC5B,MAAO,OACX,EACAkuG,EAAM8C,cAvPC,CAAC,aAAc,gBAAiB,iBAAkB,oBAAqB,kBAAmB,eAC7F,gBAAiB,YAAa,UAAW,kBAAmB,aAAc,iBAAkB,eAC5F,6BAA8B,iBAAkB,YAChD,gBAAiB,SAAU,SAAU,eAAgB,YAAa,QAAS,cAAe,YAC1F,YAAa,cAAe,eAAgB,mBAAoB,cAAe,qBAAsB,iBACrG,gBAAiB,mBAkPsBjsJ,OAAO,CAAC0yC,EAAAA,IAAoBA,EAAAA,IAAsBA,EAAAA,MACtFy2G,CACX,CA9O2B,sICTvBngJ,EAAsB,WAUtB,SAASA,EAAK0mB,EAAQ4lG,EAAc/lB,EAAe2zB,GAC/C7jH,KAAKw/H,gBAAiB,EACtBx/H,KAAK6sI,gBAAiB,EACtB7sI,KAAK8sI,KAAO,IAAIC,EAAAA,EAChB/sI,KAAK2vC,cAAgB,KACrB3vC,KAAKqQ,OAASA,EACdrQ,KAAKi2G,aAAeA,EACpBj2G,KAAKkwF,cAAgBA,EACrBlwF,KAAK8yG,eAAiB+Q,EACtB7jH,KAAKyR,MAAQoyG,EAAQW,WAAW,SAChCxkH,KAAK6D,mBACL7D,KAAKsgI,qBACT,CAoeA,OA7dA32I,EAAK0V,UAAUm8B,YAAc,WACzB,IACI10C,EADAkmJ,EAAe,CAAEprJ,MAAOoe,KAAK61G,WAAYpuC,UAAWznE,KAAKynE,WAEzDwlE,EAAQjtI,KAAKqQ,OAAOolG,cAAcrB,QAClCnzF,GAAO,EACX,GAAKjhB,KAAKktI,aAwBNpmJ,EAAQkZ,KAAKmtI,0BAA0BntI,KAAK61G,cAC/B,GACT71G,KAAKi2G,aAAa7B,QAAQvtF,OAAO//B,EAAO,GAE5CkZ,KAAKi2G,aAAa7B,QAAQ30H,KAAKutJ,GAE/BhtI,KAAKi2G,aAAa7B,QAAUp0G,KAAKi2G,aAAa7B,aA7B9C,GAAK64B,EAAMh1J,OAGN,CAED,IADA,IAAIm1J,EAAa,GACRjoI,EAAI,EAAG8L,EAAMg8H,EAAMh1J,OAAQktB,EAAI8L,EAAK9L,IAEzC,GADAre,EAAQkZ,KAAKmtI,0BAA0BF,EAAM/tJ,SAASimB,EAAE/pB,WAAY,KAAMgyJ,GACtEptI,KAAK61G,aAAeo3B,EAAM/tJ,SAASimB,EAAE/pB,WAAY,KACjD6lC,GAAO,EACPmsH,EAAW3tJ,KAAKutJ,OAEf,CACD,IAAIK,EAAOrtI,KAAKstI,uBAAuBL,EAAM/tJ,SAASimB,EAAE/pB,WAAY,MACpEgyJ,EAAW3tJ,KAAK,CAAEmC,MAAOyrJ,EAAKzrJ,MAAO6lF,UAAW4lE,EAAK5lE,UAAWgpB,YAAa48C,EAAK58C,aACtF,CAECxvE,GACDmsH,EAAW3tJ,KAAKutJ,GAEpBhtI,KAAKi2G,aAAa7B,QAAUg5B,CAChC,MAnBIptI,KAAKi2G,aAAa7B,QAAU,CAAC44B,GA8BrChtI,KAAKqQ,OAAO0qB,WACZ/6B,KAAKutI,cAAgBvtI,KAAK61G,UAC9B,EAQAlsH,EAAK0V,UAAU0+F,iBAAmB,SAAUtiH,GACxC,IAAIwS,EAAQ+R,KAAKujI,SAEb,CAAE5nD,YAAa,UAAWrhG,KAAM+4C,EAAAA,KAFR,CACxBwiF,WAAY71G,KAAK61G,WAAYpuC,UAAWznE,KAAKynE,UAAWkU,YAAa,UAAWrhG,KAAM+4C,EAAAA,KAE1FrzB,KAAKujI,UAAW,EAChBvjI,KAAKqQ,OAAOylB,QAAQzC,EAAAA,KAAuB1kB,EAAAA,EAAAA,IAAOlzB,EAAGwS,GACzD,EASAtE,EAAK0V,UAAUmuI,WAAa,SAAU33B,EAAYpuC,EAAWylE,GACzD,IAAIv5B,EAAO3zG,KAAKqQ,QAC8C,IAA1DrQ,KAAKqQ,OAAOslG,iBAAiBE,GAAY5sH,cAA0B+W,KAAKqQ,OAAOo9H,oBAC/EztI,KAAKqQ,OAAOulG,IAAI,yBAA0B,CAAE9+C,WAAY92D,KAAK47B,gBAAiBi6E,WAAYA,KAGzFlC,EAAK+5B,oBACNR,EAAcv5B,EAAK+5B,mBAEnB1tI,KAAKkoH,kBACLvU,EAAK5sF,OAAOsM,EAAAA,IAAqB,CAC7B5yC,SAAUuf,KAAMwM,QAASxM,KAAKwtI,WAC9BzR,KAAMlmB,EAAYmmB,KAAMv0D,EAAWw0D,KAAMiR,KAIjDltI,KAAK2tI,iBACL3tI,KAAK61G,WAAaA,EAClB71G,KAAKynE,UAAYA,EACjBznE,KAAKktI,YAAcA,EACnBltI,KAAK4tI,kBACL5tI,KAAK6tI,iBAAiBh4B,EAAYq3B,GAClCltI,KAAKw7B,eACT,EACA7xC,EAAK0V,UAAUihI,oBAAsB,WAC7BtgI,KAAK8yG,gBACL9yG,KAAK8yG,eAAeivB,wBAAwB/hI,KAAMA,KAAKqQ,OAAO0tG,iBAAkBikB,EAAAA,GAAuB8L,OAE/G,EACAnkJ,EAAK0V,UAAUsuI,eAAiB,WAC5B3tI,KAAK+tI,gBAAiBC,EAAAA,EAAAA,IAAchuI,KAAKi2G,aAAa7B,SACtDp0G,KAAKiuI,SAAWjuI,KAAKkwF,aACzB,EACAvmG,EAAK0V,UAAU6uI,gBAAkB,WAC7BluI,KAAK6sI,gBAAiB,EACtB7sI,KAAKktI,aAAc,EACnBltI,KAAKqQ,OAAOsqB,cAAc,CAAEs7E,aAAc,CAAE7B,QAASp0G,KAAK+tI,kBAAoB,GAE9E/tI,KAAKkwF,cAAgBlwF,KAAKiuI,SAC1BjuI,KAAK6sI,gBAAiB,CAC1B,EACAljJ,EAAK0V,UAAUwuI,iBAAmB,SAAUh4B,EAAYq3B,GACpD,IAAKA,EACD,GAAIltI,KAAKqQ,OAAOmlG,cACZ,IAAK,IAAIrwG,EAAI,EAAG8L,EAAMjR,KAAKkwF,cAAcj4G,OAAQktB,EAAI8L,EAAK9L,IAClDnF,KAAKqQ,OAAOolG,cAAcrB,QAAQ99G,QAAQ0J,KAAKkwF,cAAchxG,SAASimB,EAAE/pB,WAAY,MAAQ,IAC5F4kB,KAAKkwF,cAAcrpE,OAAO1hB,EAAG,GAC7B8L,IACA9L,UAKRnF,KAAKkwF,cAAcrpE,OAAO,EAAG7mB,KAAKkwF,cAAcj4G,QAGpD+nB,KAAKkwF,cAAc55F,QAAQu/G,GAAc,GACzC71G,KAAKkwF,cAAczwG,KAAKo2H,EAEhC,EAMAlsH,EAAK0V,UAAUi8B,kBAAoB,SAAU7/C,GACzC,GAAIA,EAAE0pD,SAAWnlC,KAAK47B,gBAAtB,CAGA,GAAI57B,KAAKw/H,eAAgB,CACrB,IAAIvxI,EAAO+R,KAAKi2G,aAAa7B,QAAQn8H,OAAS,CAC1C49H,WAAY71G,KAAK61G,WAAYpuC,UAAWznE,KAAKynE,UAAWkU,YAAa,UACrErhG,KAAM+4C,EAAAA,IAAoB8K,OAAQn+B,KAAK2vC,cAAepoD,QAAQ,GAC9D,CACAo0F,YAAa,UAAWrhG,KAAM+4C,EAAAA,IAAoB9rC,QAAQ,EAC1D42C,OAAQn+B,KAAK2vC,eAEjB3vC,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAqBplC,EAC5C,CACA+R,KAAKmuI,sBACLnuI,KAAK4tI,kBACL5tI,KAAKouI,cAbL,CAcJ,EACAzkJ,EAAK0V,UAAU8uI,oBAAsB,WACjCnuI,KAAKkwF,cAAcj4G,OAAS,EAE5B,IADA,IAAIo2J,EAAcruI,KAAKi2G,aAAa7B,QAC3BjvG,EAAI,EAAGA,EAAIkpI,EAAYp2J,OAAQktB,IAC/BkpI,EAAYnvJ,SAASimB,EAAE/pB,WAAY,KAAKq1G,aACzCzwF,KAAKkwF,cAAczwG,KAAK4uJ,EAAYnvJ,SAASimB,EAAE/pB,WAAY,KAAKwG,MAG5E,EAMA+H,EAAK0V,UAAUivI,aAAe,WAC1B,IAAI35B,GAAOsxB,EAAAA,EAAAA,IAAsBjmI,KAAKi2G,aAAa7B,SACnD,GAAIp0G,KAAKkoH,kBACLloH,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAqB,CAAE5yC,SAAUuf,KAAMwM,QAASxM,KAAKsuI,oBAG5E,IAAK,IAAInpI,EAAI,EAAG8L,EAAM0jG,EAAK18H,OAAQktB,EAAI8L,EAAK9L,IACxCnF,KAAKuuI,iBAAiB55B,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKwG,MAE/D,EACA+H,EAAK0V,UAAU6oH,gBAAkB,WAC7B,OAAOA,EAAAA,EAAAA,IAAgBloH,KAAKqQ,OAChC,EAQA1mB,EAAK0V,UAAUkvI,iBAAmB,SAAU3sJ,GACxC,IAAI+xH,EAAO3zG,KAAKqQ,OACZskG,EAAO30G,KAAKi2G,aAAa7B,QAC7B,KAAoB,IAAhBO,EAAK18H,QAAgB+nB,KAAKkwF,cAAc55F,QAAQ1U,GAAS,GAG7D,GAAIoe,KAAKkoH,kBACLloH,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAqB,CAAE5yC,SAAUuf,KAAMwM,QAASxM,KAAKuuI,iBAAkBxS,KAAMn6I,QADpG,CAIAoe,KAAK2tI,iBACL3tI,KAAK4tI,kBAEL,IADA,IAAI3/I,EAAO,CAAE0tF,YAAa,UAAWrhG,KAAM+4C,EAAAA,IAAoB8K,OAAQn+B,KAAK2vC,eACnExqC,EAAI,EAAG8L,EAAM0jG,EAAK18H,OAAQktB,EAAI8L,EAAK9L,IACxC,GAAIwvG,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKwG,QAAUA,EAAO,CAClD,GAAI+xH,EAAK6B,eAAiB7B,EAAK8B,cAAcrB,QAAQ99G,QAAQq+G,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKwG,QAAU,EACpG,SAEJoe,KAAKkwF,cAAcrpE,OAAO7mB,KAAKkwF,cAAc55F,QAAQq+G,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKwG,OAAQ,GAC9F+yH,EAAK9tF,OAAO1hB,EAAG,GACfnF,KAAKujI,UAAW,EACZvjI,KAAK6sI,gBACL7sI,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAqBplC,GAE5C,KACJ,CAECA,EAAK1G,QACNyY,KAAKouI,cAnBT,CAqBJ,EACAzkJ,EAAK0V,UAAU8tI,0BAA4B,SAAUvrJ,EAAOsuG,GAExD,IADA,IAAIykB,EAAOzkB,GAAgClwF,KAAKi2G,aAAa7B,QACpDjvG,EAAI,EAAG8L,EAAM0jG,EAAK18H,OAAQktB,EAAI8L,EAAK9L,IACxC,GAAIwvG,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKwG,QAAUA,EAC3C,OAAOujB,EAGf,OAAQ,CACZ,EAOAxb,EAAK0V,UAAUu8B,cAAgB,WAC3B,MAAO,MACX,EACAjyC,EAAK0V,UAAU0kI,WAAa,WAExB,GADA/jI,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAqBrzB,KAAK+jI,YACtC/jI,KAAKqQ,OAAO4jG,aAAah8H,QAAU+nB,KAAKi2G,aAAa7B,QAAQn8H,OAAQ,CACrE,IAAI07H,EAAO3zG,KAAKqQ,OAChBrQ,KAAKw/H,gBAAiB,EACtBx/H,KAAKktI,YAAcltI,KAAKi2G,aAAa7B,QAAQn8H,OAAS,EACtD,IAAK,IAAIs2B,EAAK,EAAGvoB,EAAK2tH,EAAKsC,aAAa7B,QAAQ/2G,QAASkR,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAC3E,IAAI4nG,EAAMnwH,EAAGuoB,GACTvO,KAAKkwF,cAAc55F,QAAQ6/G,EAAIv0H,QAAU,GACzCoe,KAAKwtI,WAAWr3B,EAAIv0H,MAAOu0H,EAAI1uC,WAAW,EAElD,CACAznE,KAAKktI,aAAc,EACnBltI,KAAKw/H,gBAAiB,CAC1B,CACJ,EAKA71I,EAAK0V,UAAUwE,iBAAmB,WAC1B7D,KAAKqQ,OAAOuqB,cAGhB56B,KAAKwuI,YAAc,CAAC,CAAEzsJ,MAAOsxC,EAAAA,IAA4B7mB,QAASxM,KAAKsgI,qBACnE,CAAEv+I,MAAOsxC,EAAAA,IAAqB7mB,QAASxM,KAAK+jI,YAC5C,CAAEhiJ,MAAOsxC,EAAAA,IAAqB7mB,QAASxM,KAAK+9F,kBAC5C,CAAEh8G,MAAOsxC,EAAAA,IAA4B7mB,QAASxM,KAAKs7B,mBACnD,CAAEv5C,MAAOsxC,EAAAA,IAAc7mB,QAASxM,KAAK2oD,cACrC,CAAE5mE,MAAOsxC,EAAAA,IAAwB7mB,QAASxM,KAAKyuI,kBAC/C,CAAE1sJ,MAAOsxC,EAAAA,IAAmB7mB,QAASxM,KAAK0uI,YAC1C,CAAE3sJ,MAAOsxC,EAAAA,IAAoB7mB,QAASxM,KAAK2uI,kBAC3C,CAAE5sJ,MAAOsxC,EAAAA,IAAgB7mB,QAASxM,KAAK0nB,WAC3CknH,EAAAA,EAAAA,IAAuB5uI,KAAKqQ,OAAQrQ,KAAKwuI,aAAa,EAAMxuI,MAChE,EAKArW,EAAK0V,UAAUyE,oBAAsB,WAC7B9D,KAAKqQ,OAAOuqB,cAGhBg0G,EAAAA,EAAAA,IAAuB5uI,KAAKqQ,OAAQrQ,KAAKwuI,aAAa,EAC1D,EAOA7kJ,EAAK0V,UAAUqoB,QAAU,WACrB1nB,KAAK6sI,gBAAiB,EACtB,IAAIngJ,EAAcsT,KAAKqQ,OAAOrtB,QACzB0J,IAAiBA,EAAY6lB,cAAc,IAAMsrG,EAAAA,KAAyBnxH,EAAY6lB,cAAc,IAAMsrG,EAAAA,OAG3G79G,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,gBAAgBiyB,uBAAuB,gBAAgBvsD,SACzF+nB,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,gBAAgBglB,MAAMuiB,QAAU,QAGjE95C,KAAKqQ,OAAOgqB,aAAer6B,KAAKqQ,OAAOuqB,aAAgB56B,KAAKqQ,OAAOpnB,cACpE+W,KAAKsuI,eAETtuI,KAAK6sI,gBAAiB,EACtB7sI,KAAK8D,sBACT,EACAna,EAAK0V,UAAUsvI,iBAAmB,SAAUlzJ,GAClB,YAAlBA,EAAEkgG,cACF37E,KAAKkuI,kBACLluI,KAAKyuI,mBACLzuI,KAAKktI,aAAc,EAE3B,EACAvjJ,EAAK0V,UAAUspD,aAAe,SAAUltE,GACpC,IAAIk4H,EAAO3zG,KAAKqQ,OAChBrQ,KAAK2vC,cAAgB,KACrB3vC,KAAK6uI,kBAAkBpzJ,GACvB,IAAI0iD,GAAS/E,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,iBAC/B,GAAIA,IAAW1iD,EAAE0iD,OAAOvH,UAAUM,SAAS,oBACrCiH,EAAOvH,UAAUM,SAAS,eAC3Bz7C,EAAE0iD,OAAOvH,UAAUM,SAAS,gBAC5Bz7C,EAAE0iD,OAAOvH,UAAUM,SAAS,kBAC5Bz7C,EAAE0iD,OAAOvH,UAAUM,SAAS,sBAC5ByuF,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,0BACtBw1E,EAAKm7B,gBAAkBn7B,EAAKo7B,kBAAkBC,sBAC5CvzJ,EAAE0iD,OAAOvH,UAAUM,SAAS,iBAAkB,CAClD,IACI+nG,EADSj/H,KAAKqQ,OACEunG,eAAez5E,EAAO5rB,cAAc,oBAAoB6uB,aAAa,iBACrE,aAAhB69F,EAAO3kJ,OACP0lB,KAAKivI,aAAa9wG,EAAQ1iD,EAAGwjJ,GACzBrsG,EAAAA,GAAQY,UACRxzB,KAAKkvI,UAAUzzJ,GAG3B,CAIA,GAHI0iD,GACAA,EAAOvH,UAAUjB,OAAO,cAExBgwF,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,uBACvBwnF,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,sBAAuB,CAC9C,IAAIgoG,GAAS/sG,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,mBAAmBiD,aAAa,OAC3DqmC,GAAY95D,EAAAA,EAAAA,KAAkBg4G,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,uBACrD,YAAc,aAClBn+B,KAAKwtI,WAAW75B,EAAKiE,eAAeuuB,GAAQvkJ,MAAO6lF,GAAW,EAClE,CACJ,EACA99E,EAAK0V,UAAUqvI,WAAa,SAAUjzJ,GAClC,IAAIq7C,EAAMr7C,EAAE0iD,OACZ,IAAKn+B,KAAKqQ,OAAO8+H,SAAwB,UAAb1zJ,EAAEwnB,QAAmC,cAAbxnB,EAAEwnB,QAAuC,eAAbxnB,EAAEwnB,UAC3Em2B,EAAAA,EAAAA,IAAQtC,EAAK,iBAAkB,CAClC,IAAIqH,EAASn+B,KAAKyR,MAAM29H,oBACxB,IAAIzhI,EAAAA,EAAAA,IAAkBwwB,KAAYA,EAAOvH,UAAUM,SAAS,kBACpDiH,EAAO5rB,cAAc,oBACzB,OAEJ,IAAI4jG,EAAMn2G,KAAKqQ,OAAOunG,eAAez5E,EAAO5rB,cAAc,oBAAoB6uB,aAAa,iBAC3FphC,KAAKivI,aAAa9wG,EAAQ1iD,EAAG06H,EACjC,CACJ,EACAxsH,EAAK0V,UAAU4vI,aAAe,SAAU9wG,EAAQ1iD,EAAG2jF,GAC/C,IAAIu0C,EAAO3zG,KAAKqQ,OACZzuB,EAAQw9E,EAAOx9E,MACnBoe,KAAK2vC,cAAgBl0D,EAAE0iD,OACvB,IAAIspC,EAAatpC,EAAOqG,uBAAuB,eAAevsD,OAC1D,aADmE,YAEvE+nB,KAAKktI,YAAczxJ,EAAE6+D,SAAWt6C,KAAKqvI,uBACW,IAA3Cl8G,UAAUH,UAAU18B,QAAQ,WAAoB7a,EAAE6zJ,QACnD7zJ,EAAE++D,UAAax6C,KAAKi2G,aAAas5B,aAAepxG,EAAOqG,uBAAuB,gBAAgBvsD,UACzF07H,EAAK8B,cAAcrB,QAAQ99G,QAAQ1U,IAAU,GAClDoe,KAAKuuI,iBAAiB3sJ,GAGtBoe,KAAKwtI,WAAW5rJ,EAAO6lF,EAAWznE,KAAKktI,YAE/C,EACAvjJ,EAAK0V,UAAU6vI,UAAY,SAAUzzJ,GACjC,IAAI0iD,GAAS/E,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,kBAC3Bn+B,KAAKqQ,OAAOq9H,oBAAuB//H,EAAAA,EAAAA,IAAkBwwB,KAAWn+B,KAAKqQ,OAAOo9H,sBAC5E+B,EAAAA,EAAAA,IAAkBxvI,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,gBAAiB92B,EAAG,0CAA4CukB,KAAKkwF,cAAcj4G,OAAS,EAAI,iBAAmB,IAE/K,EACA0R,EAAK0V,UAAUwvI,kBAAoB,SAAUpzJ,GACzC,IAAI0iD,EAAS1iD,EAAE0iD,QACX/E,EAAAA,EAAAA,IAAQ+E,EAAQ,kBAAoB1iD,EAAE0iD,OAAOvH,UAAUM,SAAS2mF,EAAAA,MAChEzkF,EAAAA,EAAAA,IAAQ+E,EAAQ,gBACZA,EAAOvH,UAAUM,SAAS,kBACrBiH,EAAOvH,UAAUM,SAAS,kBAK3BiH,EAAOvH,UAAUjB,OAAO,iBACxB31B,KAAKqvI,sBAAuB,EAC5BrvI,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,gBAAgBglB,MAAMuiB,QAAU,SANlE3b,EAAOvH,UAAUzB,IAAI,iBACrBn1B,KAAKqvI,sBAAuB,IAUpCrvI,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,gBAAgBglB,MAAMuiB,QAAU,MAE1E,EACAnwD,EAAK0V,UAAU+uI,aAAe,WAM1B,IALA,IACI39G,EACAm1G,EAFAjyB,EAAO3zG,KAAKqQ,OAGZskG,EAAO30G,KAAKi2G,aAAa7B,QACzBv1B,EAAa7+E,KAAKqQ,OAAO4jG,aAAan0H,KAAI,SAAUm2B,GAAK,OAAOA,EAAEr0B,KAAO,IACpEujB,EAAI,EAAG8L,EAAM0jG,EAAK18H,OAAQktB,EAAI8L,EAAK9L,IACxCsrB,EAASkjF,EAAKixB,uBAAuBjwB,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKwG,QACF,IAAhEi9F,EAAWvoF,QAAQq+G,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKwG,SAAiB+rB,EAAAA,EAAAA,IAAkB8iB,KAG3FzwB,KAAK8sI,KAAK2C,QAAQh/G,EAASkkF,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKqsF,UAAWppF,eACnEs2H,EAAK18H,OAAS,GACdw4C,EAAOle,cAAc,oBAAoBylB,aAAah4B,KAAKqQ,OAAOO,cAAc,OAAQ,CAAE31B,UAAW,eAAgBs2B,WAAYpM,EAAI,GAAG/pB,aAAeq1C,EAAOle,cAAc,kBAEhLqzH,EAAgBn1G,EAAOle,cAAc,oBACc,cAA/CoiG,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKqsF,WACjC7wC,EAAAA,EAAAA,IAAUgvG,EAAe,CAAC,cAAe,oBAAqB,KAG9DhvG,EAAAA,EAAAA,IAAUgvG,EAAe,CAAC,eAAgB,qBAAsB,IAG5E,EACAj8I,EAAK0V,UAAUuuI,gBAAkB,SAAUz7F,GAKvC,IAJA,IACI1hB,EADAkjF,EAAO3zG,KAAKqQ,OAEZskG,EAAO30G,KAAKi2G,aAAa7B,QACzBv1B,EAAa7+E,KAAKqQ,OAAO4jG,aAAan0H,KAAI,SAAUm2B,GAAK,OAAOA,EAAEr0B,KAAO,IACpEujB,EAAIgtC,GAAsB,EAAGlhC,GAAOtD,EAAAA,EAAAA,IAAkBwkC,GAA2BwiE,EAAK18H,OAApBk6D,EAAW,EAAiBhtC,EAAI8L,EAAK9L,IAC5GsrB,EAASkjF,EAAKixB,uBAAuBjwB,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKwG,QAClE+rB,EAAAA,EAAAA,IAAkB8iB,IAAYkjF,EAAK6B,eAChC7B,EAAK8B,cAAcrB,QAAQ99G,QAAQq+G,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKwG,QAAU,IAC7E6uC,EAAOle,cAAc,sBAGuC,IAAhEssE,EAAWvoF,QAAQq+G,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKwG,SAGxDoe,KAAK8sI,KAAK2C,QAAQh/G,EAAQ,SAC1BmG,EAAAA,EAAAA,IAAUnG,EAAOle,cAAc,oBAAqB,GAAI,CAAC,eAAgB,oBAAqB,cAAe,qBACzGke,EAAOle,cAAc,kBACrBke,EAAOle,cAAc,oBAAoBimB,YAAY/H,EAAOle,cAAc,kBAGtF,EACA5oB,EAAK0V,UAAUiuI,uBAAyB,SAAU1rJ,GAC9C,IAAK,IAAIujB,EAAI,EAAG8L,EAAMjR,KAAKi2G,aAAa7B,QAAQn8H,OAAQktB,EAAI8L,EAAK9L,IAC7D,GAAInF,KAAKi2G,aAAa7B,QAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKwG,QAAUA,EAChE,OAAOoe,KAAKi2G,aAAa7B,QAAQl1H,SAASimB,EAAE/pB,WAAY,KAGhE,OAAO,CACX,EACAuO,EAAK0V,UAAUqwI,eAAiB,WAE5B,IADA,IAAI7wD,EAAa7+E,KAAKqQ,OAAO4jG,aAAan0H,KAAI,SAAUm2B,GAAK,OAAOA,EAAEr0B,KAAO,IACpE2sB,EAAK,EAAGvoB,EAAKga,KAAKkwF,cAAe3hF,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAC5D,IAAI4nG,EAAMnwH,EAAGuoB,GACb,IAAiC,IAA7BswE,EAAWvoF,QAAQ6/G,GAAvB,CAGA,IAAI1lF,EAASzwB,KAAKqQ,OAAOu0H,uBAAuBzuB,GAChDn2G,KAAK8sI,KAAK2C,QAAQh/G,EAAQzwB,KAAKstI,uBAAuBn3B,GAAK1uC,UAF3D,CAGJ,CACJ,EACA99E,EAAK0V,UAAUovI,iBAAmB,SAAUnmI,QACzB,IAAXA,IAAqBA,EAAS,CAAEra,KAAM,CAAE0hJ,UAAU,KACjDrnI,EAAOra,KAAK0hJ,WACb3vI,KAAK4tI,kBACL5tI,KAAKktI,aAAc,EACnBltI,KAAK4tI,kBACL5tI,KAAKouI,eACLpuI,KAAKktI,aAAc,EACnBltI,KAAK0vI,iBAEb,EAQA/lJ,EAAK0V,UAAUuwI,eAAiB,SAAUhhF,GACtC5uD,KAAKuhI,yBAAyBC,eAAiB5yE,EAC/C5uD,KAAKuhI,yBAAyBE,sBAClC,EACO93I,CACX,CA3f0B,qICFtB0E,EAAyB,WACzB,SAASA,EAAQgiB,EAAQyiG,GACrB9yG,KAAK6vI,gBAAkB,CAAC,EACxB7vI,KAAK8vI,YAAa,EAClB9vI,KAAKlW,MAAQ,CAAC,MAAO,OAAQ,SAAU,SAAU,SAAU,QAAS,SAChE,gBAAiB,YAAa,cAAe,YAAa,cAC9DkW,KAAKqQ,OAASA,EACdrQ,KAAK+vI,OAAS1/H,EAAOrtB,QAAQ4B,GAC7Bob,KAAK8yG,eAAiBA,EACtB9yG,KAAK6D,kBACT,CA8lBA,OA7lBAxV,EAAQgR,UAAUisC,OAAS,WACvBtrC,KAAK+hE,KAAO/hE,KAAK8yG,eAAe0R,WAAW,gBAK3C,IAJA,IAEIwrB,EAAahwI,KAAKqQ,OAAO0tG,iBACzBkyB,EAAiB,CAAC,OAAQ,SAAU,SAAU,UACzC1hI,EAAK,EAAG2hI,EAJF,CAAC,MAAO,OAAQ,SAAU,SAAU,SAAU,QACzD,YAAa,cAAe,aAAc,aAGN3hI,EAAK2hI,EAAWj4J,OAAQs2B,IAAM,CAClE,IAAInjB,EAAO8kJ,EAAW3hI,GAClB4hI,EAAU/kJ,EAAK/M,cACf+xJ,EAAaD,EAAQ,GAAG/yI,cAAgB+yI,EAAQ9yI,MAAM,GAC1D2C,KAAK6vI,gBAAgB,GAAKzkJ,GAAQ,CAC9BxG,GAAIob,KAAK+vI,OAAS,IAAMI,EAASpiJ,WAAY,KAAOoiJ,EACpDp4J,KAAMioB,KAAK+hE,KAAK9lB,YAAYm0F,GAAatiJ,YAAakS,KAAK+hE,KAAK9lB,YAAYm0F,IAE5EJ,IACAhwI,KAAK6vI,gBAAgB,GAAKzkJ,GAAMrT,KAAO,GACvCioB,KAAK6vI,gBAAgB,GAAKzkJ,GAAMgD,SAA4C,IAAlC6hJ,EAAe35I,QAAQlL,GAEzE,CACA4U,KAAK6vI,gBAAgBz3C,OAAS,CAC1BxzG,GAAIob,KAAK+vI,OAAS,UAClBjiJ,YAAakS,KAAK+hE,KAAK9lB,YAAY,UAAWo0F,MAAO,QAASlwJ,SAAU,mBACxE7F,KAAM,SAEV0lB,KAAK6vI,gBAAgBS,cAAgB,CACjC1rJ,GAAIob,KAAK+vI,OAAL/vI,iBAAqC7f,SAAU,4BAA6BowJ,WAAY,sBAC5Fx4J,KAAMi4J,EAAa,GAAKhwI,KAAK+hE,KAAK9lB,YAAY,iBAC9CnuD,YAAakS,KAAK+hE,KAAK9lB,YAAY,iBAAkBo0F,MAAO,SAE3B,aAAjCrwI,KAAKqQ,OAAOmgI,mBACRxwI,KAAKqQ,OAAOnnB,gBAAsD,cAApC8W,KAAKqQ,OAAOlnB,eAAe7O,OACzD0lB,KAAK6vI,gBAAgBY,iBAAmB,CACpC7rJ,GAAIob,KAAK+vI,OAAL/vI,oBAAwC7f,SAAU,gCACtDowJ,WAAY,mBAAyBziJ,YAAakS,KAAK+hE,KAAK9lB,YAAY,kBAG5Ej8C,KAAKqQ,OAAOpnB,eACZ+W,KAAK6vI,gBAAgBa,eAAiB,CAClC9rJ,GAAIob,KAAK+vI,OAAL/vI,kBAAsC7f,SAAU,gCACpDowJ,WAAY,iBAAuBziJ,YAAakS,KAAK+hE,KAAK9lB,YAAY,WAI9Ej8C,KAAKqQ,OAAO0tG,kBAAoB/9G,KAAKqQ,OAAOxiB,SAAWmS,KAAKqQ,OAAOxiB,QAAQyI,QAAQ,WAAa,IAChG0J,KAAK6vI,gBAAgBc,eAAiB,CAClC/rJ,GAAIob,KAAK+vI,OAAL/vI,kBAAsC7f,SAAU,gCACpDowJ,WAAY,iBAAuBniJ,SAAS,IAGpD4R,KAAK4wI,eACT,EAOAviJ,EAAQgR,UAAUwxI,WAAa,WAC3B,OAAO7wI,KAAKnS,QAAQ7K,OACxB,EAOAqL,EAAQgR,UAAUqoB,QAAU,WACpB1nB,KAAKnS,UAAYmS,KAAKnS,QAAQ+sC,cACzB56B,KAAKnS,QAAQ7K,SAOdgd,KAAKnS,QAAQ+4B,IAAI,gCAAiC5mB,KAAK8wI,wBACvD9wI,KAAKnS,QAAQ65B,YAPb1nB,KAAKqQ,OAAOwqH,gBAAgB,CAAC,oBACzB76H,KAAKqQ,OAAOyrF,SACZ97F,KAAKqQ,OAAO8qG,mBAOpBn7G,KAAKkqG,cACLlqG,KAAK8D,sBACD9D,KAAKhd,QAAQstB,aACbqlB,EAAAA,EAAAA,IAAO31B,KAAKhd,SAGxB,EACAqL,EAAQgR,UAAU0xI,iBAAmB,WACjC/wI,KAAKgxI,eAAgBt4G,EAAAA,EAAAA,IAAO,IAAM14B,KAAK+vI,OAAS,aAAc/vI,KAAKhd,SACnEgd,KAAKkoG,YACLloG,KAAKixI,sBACDjxI,KAAKqQ,OAAOumG,gBACZ52G,KAAKkxI,iBAEb,EACA7iJ,EAAQgR,UAAU8xI,eAAiB,SAAUC,GACzC,GAAIpxI,KAAKhd,QAAQuvB,cAAc,qBAC3B,IAAKvS,KAAKqQ,OAAO0tG,kBAAoBqzB,EAAU,CAC3C,IAAIx6G,EAAY52B,KAAKqQ,OAAOlwB,SAAW,0BAA4B6f,KAAKqQ,OAAOlwB,SACzE,yBACN6f,KAAKhd,QAAQuvB,cAAc,qBAAqBhB,UAAY,eAAiBqlB,EAAY,kDACtE52B,KAAK+vI,OAAS,qGACX/vI,KAAK+hE,KAAK9lB,YAAY,UAAY,oCACtCj8C,KAAK+vI,OAAS,6LAEd/vI,KAAK+vI,OAAS,4GACH/vI,KAAK+hE,KAAK9lB,YAAY,UAAY,0EAEnE,MAEIj8C,KAAKhd,QAAQuvB,cAAc,qBAAqBhB,UAAY,aAAevR,KAAK+vI,OAC1E,+KAEY/vI,KAAK+vI,OACjB,4GACuB/vI,KAAK+hE,KAAK9lB,YAAY,UAAY,4DAIvEj8C,KAAK+wI,kBACT,EACA1iJ,EAAQgR,UAAUuxI,cAAgB,WAC9B,IAAI9mJ,EAAQkW,KAAK0hG,WACjB1hG,KAAKnS,QAAU,IAAIwjJ,EAAAA,EAAK,CACpBvnJ,MAAOA,EACPwnJ,QAAStxI,KAAKuxI,oBAAoBvyI,KAAKgB,MACvCgrC,kBAAmBhrC,KAAKqQ,OAAO26B,kBAC/BL,UAAW3qC,KAAKqQ,OAAOs6B,UACvB66E,QAASxlH,KAAKmxI,eAAenyI,KAAKgB,MAClC7f,SAAU6f,KAAKqQ,OAAOlwB,SAAW6f,KAAKqQ,OAAOlwB,SAAW,KAE5D6f,KAAKnS,QAAQiuG,QAAU97F,KAAKqQ,OAAOyrF,QACnC97F,KAAKnS,QAAQ04B,GAAG,gCAAiCvmB,KAAK8wI,uBAAwB9wI,MAE9EA,KAAKnS,QAA6B,kBAAI,EACtC,IAAI2jJ,EAAU,mBAUd,GARIxxI,KAAKqQ,OAAO,GAAKmhI,KACjBxxI,KAAKnS,QAAyB,mBAAI,CAAC,EACnCmS,KAAKnS,QAAQ,GAAK2jJ,GAAWxxI,KAAKqQ,OAAO,GAAKmhI,IAElDxxI,KAAKhd,QAAUgd,KAAKqQ,OAAOO,cAAc,MAAO,CAAEhsB,GAAIob,KAAK+vI,OAAS,kBAChE/vI,KAAKqQ,OAAO0tG,kBACZ/9G,KAAKhd,QAAQ4zC,UAAUzB,IAAI,iBAE3Bn1B,KAAKqQ,OAAOohI,gBAAiB,CAC7B,GAA6C,kBAAjCzxI,KAAKqQ,OAAOohI,gBACpBzxI,KAAKnS,QAAQk9C,SAAS/qC,KAAKqQ,OAAOohI,iBAClCzxI,KAAKhd,QAAUgd,KAAKnS,QAAQ7K,YAE3B,CACD,IAAI63H,EAAkB76G,KAAKqQ,OAAOyrF,SAAoD,kBAAjC97F,KAAKqQ,OAAOohI,gBAC7D32B,EAAe96G,KAAKqQ,OAAO0qG,eAAiB/6G,KAAKqQ,OAAO0qG,cAAcC,eACtEh7G,KAAKqQ,OAAO0qG,cAAcC,cAAclf,QACxC41C,EAAK1xI,KAAKqQ,OAAOrtB,QAAQ4B,GAAK,kBAC9Bi2H,GAAmBC,IACnB9f,EAAAA,EAAAA,IAAiBh7F,KAAKqQ,OAAOohI,gBAA7Bz2C,CAA8C,CAAC,EAAGh7F,KAAKqQ,OAAQ,kBAAmBqhI,EAAI,KAAM,KAAM1xI,KAAKhd,SACvGgd,KAAKqQ,OAAO8qG,oBAGZC,EAAAA,EAAAA,IAAep7G,KAAKhd,SAASg4G,EAAAA,EAAAA,IAAiBh7F,KAAKqQ,OAAOohI,gBAA7Bz2C,CAA8C,CAAC,EAAGh7F,KAAKqQ,OAAQ,mBAEpG,CACArQ,KAAKhd,QAAQ4zC,UAAUzB,IAAI,iBAC/B,MAEIn1B,KAAKnS,QAAQk9C,SAAS/qC,KAAKhd,SAE/Bgd,KAAKqQ,OAAOrtB,QAAQg1C,aAAah4B,KAAKhd,QAASgd,KAAKqQ,OAAO4wH,oBAC3D,IAAI0Q,EAAkB3xI,KAAKhd,QAAQuvB,cAAc,mBAC7Cq/H,EAAoB5xI,KAAKhd,QAAQuvB,cAAc,qBAC/Cs/H,EAAmB7xI,KAAKhd,QAAQuvB,cAAc,oBAC9Cu/H,EAAY9xI,KAAKhd,QAAQuvB,cAAc,oBACvCw/H,EAAc/xI,KAAKhd,QACnBgvJ,EAAgBL,EAAkBA,EAAgBl5F,YAAc,EAChEw5F,EAAkBL,EAAoBA,EAAkBn5F,YAAc,EACtEy5F,EAAiBL,EAAmBA,EAAiBp5F,YAAc,EACnE05F,EAAiBL,EAAYA,EAAUr5F,YAAc,EACrD25F,EAAYL,EAAcA,EAAYt5F,YAAc,GACpDu5F,EAAgBI,GAAaH,EAAkBG,GAAaF,EAAiBE,GAAaD,EAAiBC,IAC3GpyI,KAAKnS,QAAQwkJ,iBAErB,EACAhkJ,EAAQgR,UAAUyxI,uBAAyB,SAAU7iJ,GAC7C+R,KAAKqQ,OAAOyrF,SAAW7tG,IACvB+R,KAAKqQ,OAAOy/G,QAAU9vH,KAAKqQ,OAAOy/G,QAAQnvI,OAAOsN,GACjD+R,KAAKqQ,OAAO8qG,kBAEpB,EACA9sH,EAAQgR,UAAUizI,uBAAyB,SAAUC,GAC7CA,GACAvyI,KAAKmxI,gBAAe,GACpBnxI,KAAKwyI,8BAA8BC,EAAAA,GAAwBC,UAC3D1yI,KAAKgxI,eAAgBt4G,EAAAA,EAAAA,IAAO,IAAM14B,KAAK+vI,OAAS,aAAc/vI,KAAKhd,UACvD2iI,EAAAA,EAAAA,IAAa3lH,KAAKgxI,cAAe,mBACvCp6G,UAAUzB,IAAI,sBAChBn1B,KAAKqQ,OAAOumG,gBACZ52G,KAAKkxI,kBAETlxI,KAAK2yI,aAAaC,YAAY,CAAEz0G,OAAQn+B,KAAKgxI,gBAC7ChxI,KAAKgxI,cAAcv/H,SAGnBzR,KAAKwyI,8BAA8BC,EAAAA,GAAwBriC,UAEnE,EACA/hH,EAAQgR,UAAUmzI,8BAAgC,SAAUvvI,GACxD,GAAIA,IAAWwvI,EAAAA,GAAwBriC,UAAW,CAK9C,IAJA,IAAIxrH,EAAKob,KAAKqQ,OAAOrtB,QAAQ4B,GACzBkF,EAAQ,CAAClF,EAAK,QAASA,EAAK,WAC5BiuJ,EAAkB7yI,KAAKqQ,OAAOyiI,wBAC9B7C,EAAiB,CAACrrJ,EAAK,kBAAmBA,EAAK,UAAWA,EAAK,WAC1D2pB,EAAK,EAAGvoB,EAAKga,KAAKnS,QAAQ/D,MAAOykB,EAAKvoB,EAAG/N,OAAQs2B,IAAM,EAExDwkI,GADA3nJ,EAAOpF,EAAGuoB,IACQ/X,SAASve,OAAS+nB,KAAKnS,QAAQ7K,QAAQuvB,cAAcnnB,EAAKoL,UAAYwJ,KAAKnS,QAAQ7K,QAAQuvB,cAAc,IAAMnnB,EAAKxG,OAElIkF,EAAMwM,QAAQlL,EAAKxG,KAAO,EACtBiuJ,EAAgB56J,OAChB86J,EAAW95F,cAAcriB,UAAUjB,OAAO,YAG1Co9G,EAAW95F,cAAcriB,UAAUzB,IAAI,aAIF,IAArC86G,EAAe35I,QAAQlL,EAAKxG,IAC5BmuJ,EAAW95F,cAAcriB,UAAUjB,OAAO,YAG1Co9G,EAAW95F,cAAcriB,UAAUzB,IAAI,YAIvD,CACA,GAAIn1B,KAAKgxI,eACOrrB,EAAAA,EAAAA,IAAa3lH,KAAKgxI,cAAe,mBACvCp6G,UAAUjB,OAAO,sBACvB31B,KAAKmxI,gBAAe,GACpBnxI,KAAKkqG,cACLlqG,KAAKgxI,mBAAgB91J,CAE7B,CACA,GAAI+nB,IAAWwvI,EAAAA,GAAwBC,SACnC,CAAI5oJ,EAAQ,CAACkW,KAAKqQ,OAAOrtB,QAAQ4B,GAAK,kBAAmBob,KAAKqQ,OAAOrtB,QAAQ4B,GAAK,WAClF,IADA,IACSmyC,EAAK,EAAGssE,EAAKrjG,KAAKnS,QAAQ/D,MAAOitC,EAAKssE,EAAGprH,OAAQ8+C,IAAM,CAC5D,IACIg8G,EADA3nJ,EAAOi4G,EAAGtsE,IACVg8G,EAAa/yI,KAAKnS,QAAQ7K,QAAQuvB,cAAc,IAAMnnB,EAAKxG,OAEvDkF,EAAMwM,QAAQlL,EAAKxG,KAAO,EAC1BmuJ,EAAW95F,cAAcriB,UAAUjB,OAAO,YAG1Co9G,EAAW95F,cAAcriB,UAAUzB,IAAI,YAGnD,CAZ4F,CAcpG,EAEA9mC,EAAQgR,UAAU4xI,oBAAsB,SAAUhjJ,GAC9C,IAAI0lH,EAAO3zG,KAAKqQ,OACZylH,EAAc,GACdkd,EAAe,GACfC,EAAOt/B,EAAKu/B,aACZC,EAAUx/B,EAAKy/B,iBAAmBz/B,EAAKy/B,gBAAgBn7J,OACvDg7J,EAAKI,YACLvd,EAAYr2I,KAAKugB,KAAK+vI,OAAS,QAG/BiD,EAAavzJ,KAAKugB,KAAK+vI,OAAS,QAEhCkD,EAAKK,cAAgBH,EACrBrd,EAAYr2I,KAAKugB,KAAK+vI,OAAS,SAG/BiD,EAAavzJ,KAAKugB,KAAK+vI,OAAS,SAEhCkD,EAAKM,eAAiBJ,EACtBrd,EAAYr2I,KAAKugB,KAAK+vI,OAAS,WAG/BiD,EAAavzJ,KAAKugB,KAAK+vI,OAAS,WAEL,UAA3Bp8B,EAAKu/B,aAAa9pJ,KACduqH,EAAK3wH,QAAQwhD,uBAAuB,eAAevsD,SAAWg7J,EAAKI,aAAeJ,EAAKK,eACvFxd,EAAYr2I,KAAKugB,KAAK+vI,OAAS,WAC/Bja,EAAYr2I,KAAKugB,KAAK+vI,OAAS,aAG/BiD,EAAavzJ,KAAKugB,KAAK+vI,OAAS,WAChCiD,EAAavzJ,KAAKugB,KAAK+vI,OAAS,YAIhCp8B,EAAKw7B,SAAW8D,EAAKI,aAAeJ,EAAKK,eACzCxd,EAAc,CAAC91H,KAAK+vI,OAAS,UAAW/vI,KAAK+vI,OAAS,WACtDiD,EAAe,CAAChzI,KAAK+vI,OAAS,OAAQ/vI,KAAK+vI,OAAS,QAAS/vI,KAAK+vI,OAAS,aAG3EiD,EAAavzJ,KAAKugB,KAAK+vI,OAAS,WAChCiD,EAAavzJ,KAAKugB,KAAK+vI,OAAS,YAGxC/vI,KAAK81H,YAAYA,GAAa,GAC9B91H,KAAK81H,YAAYkd,GAAc,EACnC,EACA3kJ,EAAQgR,UAAUqiG,SAAW,WACzB,IAAI53G,EAAQ,GACR0pJ,EAAexzI,KAAKqQ,OAAOxiB,SAAW,GAC1C,GAAqC,kBAAzBmS,KAAKqQ,OAAOxiB,QACpB,MAAO,GAE0B,aAAjCmS,KAAKqQ,OAAOmgI,mBACRxwI,KAAKqQ,OAAOnnB,gBAAsD,cAApC8W,KAAKqQ,OAAOlnB,eAAe7O,MACzDwP,EAAMrK,KAAKugB,KAAKyzI,cAAc,qBAE9BzzI,KAAKqQ,OAAOpnB,cACZa,EAAMrK,KAAKugB,KAAKyzI,cAAc,oBAGtC,IAAK,IAAIllI,EAAK,EAAGmlI,EAAiBF,EAAcjlI,EAAKmlI,EAAez7J,OAAQs2B,IAAM,CAC9E,IAAInjB,EAAOsoJ,EAAenlI,GAC1B,cAAenjB,GACX,IAAK,SACDtB,EAAMrK,KAAKugB,KAAKyzI,cAAczzI,KAAKlW,MAAMsB,KACzC,MACJ,IAAK,SACDtB,EAAMrK,KAAKugB,KAAKyzI,cAAcroJ,IAC9B,MACJ,QACItB,EAAMrK,KAAKugB,KAAK7D,QAAQ/Q,IAEpC,CAIA,OAHI4U,KAAKqQ,OAAO0tG,kBAAoB/9G,KAAKqQ,OAAOxiB,SAAWmS,KAAKqQ,OAAOxiB,QAAQyI,QAAQ,WAAa,GAChGxM,EAAMrK,KAAKugB,KAAKyzI,cAAc,mBAE3B3pJ,CACX,EACAuE,EAAQgR,UAAUlD,QAAU,SAAUw3I,GAClC,IAAIvoJ,EAAO4U,KAAK6vI,gBAAgB8D,EAAW57J,MAC3C,OAAOqT,GAAOujB,EAAAA,EAAAA,IAAOvjB,EAAMA,EAAMuoJ,GAAcA,CACnD,EACAtlJ,EAAQgR,UAAUo0I,cAAgB,SAAUG,GACxC,OAAO5zI,KAAK6vI,gBAAgB,GAAK+D,IAAa,CAAE77J,KAAM67J,EAAUhvJ,GAAIob,KAAK+vI,OAAS,IAAM6D,EAC5F,EASAvlJ,EAAQgR,UAAUy2H,YAAc,SAAUhsI,EAAO+pJ,GAC7C,IAAK,IAAItlI,EAAK,EAAG0/G,EAAUnkI,EAAOykB,EAAK0/G,EAAQh2I,OAAQs2B,IAAM,CACzD,IAAInjB,EAAO6iI,EAAQ1/G,GACfvrB,GAAU01C,EAAAA,EAAAA,IAAO,IAAMttC,EAAM4U,KAAKhd,SAClCA,GACAgd,KAAKnS,QAAQioI,YAAY9yI,EAAQi2D,cAAe46F,EAExD,CACJ,EACAxlJ,EAAQgR,UAAUkyI,oBAAsB,SAAUtjJ,GAC9C,IAAI+hB,EAAQhQ,KACR2zG,EAAO3zG,KAAKqQ,OACZyjI,EAAM9zI,KAAK+vI,QACfphI,EAAAA,EAAAA,IAAO1gB,EAAM,CAAE1G,QAAQ,IACvB,IAAIwsJ,EAAU9lJ,EACV2vD,EAAgB3vD,EAAK2vD,cACzB+1D,EAAK79E,QAAQzC,EAAAA,IAAqB0gH,GAAS,SAAUC,GAEjD,GADAA,EAAYp2F,cAAgBo2F,EAAYp2F,cAAgBo2F,EAAYp2F,cAAgBA,GAC/Eo2F,EAAYzsJ,OACb,SAASomB,EAAAA,EAAAA,IAAkBqmI,EAAY5oJ,OAAS4oJ,EAAY5oJ,KAAKxG,IAC7D,KAAKkvJ,EAAM,SACPngC,EAAKljG,QACL,MACJ,KAAKqjI,EAAM,QACPngC,EAAKsgC,YACL,MACJ,KAAKH,EAAM,UACPngC,EAAK2F,UACL,MACJ,KAAKw6B,EAAM,UACPngC,EAAKugC,YACL,MACJ,KAAKJ,EAAM,OACPngC,EAAKhqB,YACL,MACJ,KAAKmqD,EAAM,UACPngC,EAAK9pB,eACL,MACJ,KAAKiqD,EAAM,UACHE,EAAYp2F,cAAczf,OAAOv5C,KAAOkvJ,EAAM,iBAAmB9jI,EAAMghI,cACvEhhI,EAAMhP,UAED2yG,EAAKoK,kBAAqB/tG,EAAMghI,gBACjCgD,EAAYp2F,cAAczf,OAAOvH,UAAUM,SAAS,qBACjD88G,EAAYp2F,cAAczf,OAAOv5C,KAAOkvJ,EAAM,gBAGhDE,EAAYp2F,cAAczf,OAAOvH,UAAUM,SAAS,iBAAmB88G,EAAYp2F,cAAczf,OAAOv5C,KAAOkvJ,EAAM,gBAAkB9jI,EAAMghI,gBAClJhhI,EAAMghI,cAAczzJ,MAAQ,GACxByyB,EAAMghI,gBACNhhI,EAAMmkI,MAAQnkI,EAAMghI,cAAc/3F,cAAc1mC,cAAc,YAC9DvC,EAAMmkI,MAAMv9G,UAAUjB,OAAO,gBAC7B3lB,EAAMmkI,MAAMjzG,gBAAgB,SAC5BlxB,EAAMmkI,MAAM58G,MAAM68G,OAAS,YAE3BpkI,EAAM8/H,YAAc9/H,EAAMK,OAAOumG,eAAe53H,IAAI/G,UACpD+3B,EAAMK,OAAOrP,OAAOgP,EAAMghI,cAAczzJ,OACxCyyB,EAAM8/H,YAAa,IAZvB9/H,EAAMsiI,wBAAuB,GAejC,MACJ,KAAKwB,EAAM,iBAEP,IAAIO,EAAarkI,EAAMK,OAAOrtB,QAAQuvB,cAAc,YAChDre,EAAImgJ,EAAWnxG,wBAAwBU,IACvChX,EAAIynH,EAAWnxG,wBAAwBQ,KACvC4wG,EAAYN,EAAYp2F,cAAczf,OAE1CjqC,EAAImgJ,EAAWnxG,wBAAwBU,IAAMywG,EAAWxgG,UACxD8/D,EAAK4gC,oBAAoB3nH,EAAG14B,EAAGogJ,GAC/B,MACJ,KAAKR,EAAM,oBACPngC,EAAK6gC,6BACL,MACJ,KAAKV,EAAM,kBACPngC,EAAK8gC,2BACL,MACJ,KAAKX,EAAM,kBACP9jI,EAAMsiI,wBAAuB,GAI7C,GACJ,EACAjkJ,EAAQgR,UAAUq1I,aAAe,SAAUj5J,GACtB,SAAbA,EAAE0pD,QACFnlC,KAAKixI,qBAEb,EACA5iJ,EAAQgR,UAAUi8B,kBAAoB,SAAU7/C,GACxCA,EAAE0pD,SAAWnlC,KAAK47B,iBAAoB57B,KAAKqQ,OAAOxiB,UAGlDmS,KAAKhd,UACL2yC,EAAAA,EAAAA,IAAO31B,KAAKhd,SAEhBgd,KAAKsrC,SACT,EACAj9C,EAAQgR,UAAUqqD,aAAe,SAAUjuE,GACrB,KAAdA,EAAEu+D,SACFh6C,KAAKgB,SAELhB,KAAKgxI,gBACLhxI,KAAKm0I,MAAQn0I,KAAKgxI,cAAc/3F,cAAc1mC,cAAc,YACxDvS,KAAKgxI,cAAczzJ,MAAMtF,UAAW01B,EAAAA,EAAAA,IAAkB3N,KAAKm0I,QAC3Dn0I,KAAKm0I,MAAMv9G,UAAUzB,IAAI,gBACzBn1B,KAAKm0I,MAAM79G,aAAa,QAAS,SACjCt2B,KAAKm0I,MAAM58G,MAAM68G,OAAS,YAG1Bp0I,KAAKm0I,MAAMv9G,UAAUjB,OAAO,gBAC5B31B,KAAKm0I,MAAMjzG,gBAAgB,SAC3BlhC,KAAKm0I,MAAM58G,MAAM68G,OAAS,WAGtC,EACA/lJ,EAAQgR,UAAU2B,OAAS,WACvBhB,KAAK8vI,YAAa,EAClB9vI,KAAKqQ,OAAOrP,OAAOhB,KAAKgxI,cAAczzJ,MAC1C,EACA8Q,EAAQgR,UAAU6xI,gBAAkB,WAC5BlxI,KAAKgxI,gBACLhxI,KAAKgxI,cAAczzJ,MAAQyiB,KAAKqQ,OAAOumG,eAAe53H,IAE9D,EACAqP,EAAQgR,UAAU6oG,UAAY,WACtBloG,KAAKgxI,gBACLhxI,KAAK2yI,aAAe,IAAIgC,EAAAA,GAAU30I,KAAKgxI,eACvCh8G,EAAAA,GAAaG,IAAIn1B,KAAKgxI,cAAe,QAAShxI,KAAK0pD,aAAc1pD,MACjEA,KAAK2yI,aAAazqC,aAEtBlzE,EAAAA,GAAaG,IAAIn1B,KAAKhd,QAAS,UAAWgd,KAAK40I,UAAW50I,MAC1Dg1B,EAAAA,GAAaG,IAAIn1B,KAAKhd,QAAS,WAAYgd,KAAK+nG,WAAY/nG,KAChE,EACA3R,EAAQgR,UAAU6qG,YAAc,WACxBlqG,KAAKgxI,gBACLh8G,EAAAA,GAAaW,OAAO31B,KAAKgxI,cAAe,QAAShxI,KAAK0pD,cACtD1pD,KAAK2yI,aAAazoC,eAEtBl1E,EAAAA,GAAaW,OAAO31B,KAAKhd,QAAS,UAAWgd,KAAK40I,WAClD5/G,EAAAA,GAAaW,OAAO31B,KAAKhd,QAAS,WAAYgd,KAAK+nG,WACvD,EACA15G,EAAQgR,UAAUu1I,UAAY,SAAUn5J,GACpC,IAAIksJ,EAAc3nI,KAAKqQ,OAAOq3H,YAAYC,YACtCA,GAAeA,EAAY3kJ,WAC3Bm0C,EAAAA,EAAAA,IAAY,CAACwwG,EAAY3kJ,QAAS2kJ,EAAYkN,gBAAiB,CAAC,YAAa,YAC7ElN,EAAY3kJ,QAAQowE,UAAY,GAEpC33E,EAAE0iD,OAAOi1B,SAAW,CACxB,EACA/kE,EAAQgR,UAAU0oG,WAAa,SAAUtsH,GACrCA,EAAE0iD,OAAOi1B,UAAY,CACzB,EACA/kE,EAAQgR,UAAUy1I,oBAAsB,SAAU9xJ,GAC9C,IAAI6xJ,EAAiB7xJ,EAAQuvB,cAAc,0CACtCsiI,GAAkB70I,KAAKqQ,OAAO0tG,mBAAqB/9G,KAAKgxI,eACtDhuJ,EAAQ4zC,UAAUM,SAAS,sBAC9B29G,EAAiB7xJ,EAAQuvB,cAAc,IAAMvS,KAAK+vI,OAAS,kBAE/D8E,EAAepjI,OACnB,EACApjB,EAAQgR,UAAU01I,yBAA2B,WAGzC,IAFA,IAAIC,EAA0B,GAAG33I,MAAMqC,KAAKM,KAAKhd,QAAQ8tB,iBAAiB,mDACtEmkI,EAAuB,GAClB9vI,EAAI,EAAGA,EAAI6vI,EAAwB/8J,OAAQktB,KAC3CwI,EAAAA,EAAAA,IAAkBqnI,EAAwB91J,SAASimB,EAAE/pB,WAAY,KAAKm3B,cAAc,2CACrF0iI,EAAqBx1J,KAAKu1J,EAAwB91J,SAASimB,EAAE/pB,WAAY,MAGjF,OAAO65J,CACX,EACA5mJ,EAAQgR,UAAU61I,kBAAoB,SAAUz5J,GAC5C,GAAIA,EAAE0iD,SAAUwnF,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,kBAAmB,CACtD,IAAIg3G,GAAexvB,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,kBACtCi3G,EAAwBp1I,KAAK+0I,2BACjC,GAAiB,QAAbt5J,EAAEwnB,QAAiC,aAAbxnB,EAAEwnB,OAAuB,CAC/C,GAAkB,QAAbxnB,EAAEwnB,QAAoBkyI,IAAiBC,EAAsBA,EAAsBn9J,OAAS,IAC5E,aAAbwD,EAAEwnB,QAAyBkyI,IAAiBC,EAAsB,GACtE,OAEJ,IAAK,IAAIjwI,EAAI,EAAGA,EAAIiwI,EAAsBn9J,OAAQktB,IAC9C,GAAIgwI,IAAiBC,EAAsBl2J,SAASimB,EAAE/pB,WAAY,KAAM,CACpEK,EAAEi1D,iBACF,IAAI5pD,EAAqB,QAAbrL,EAAEwnB,OAAmBkC,EAAI,EAAIA,EAAI,EAE7C,YADAnF,KAAK80I,oBAAoBM,EAAsBl2J,SAAS4H,EAAM1L,WAAY,KAE9E,CAER,CACiB,UAAbK,EAAEwnB,QACEjD,KAAKqQ,OAAO0tG,mBAAqB/9G,KAAKgxI,eACnCv1J,EAAE0iD,OAAOv5C,KAAOob,KAAK+vI,OAAS,iBACjC/vI,KAAKsyI,wBAAuB,EAGxC,CACJ,EACAjkJ,EAAQgR,UAAUg2I,gBAAkB,WAC5Br1I,KAAKhd,UACL2yC,EAAAA,EAAAA,IAAO31B,KAAKhd,SAEhBgd,KAAKsrC,QACT,EACAj9C,EAAQgR,UAAUwE,iBAAmB,WAC7B7D,KAAKqQ,OAAOuqB,cAGhB56B,KAAKwuI,YAAc,CAAC,CAAEzsJ,MAAOsxC,EAAAA,IAA4B7mB,QAASxM,KAAKq1I,iBACnE,CAAEtzJ,MAAOsxC,EAAAA,IAAmB7mB,QAASxM,KAAKsrC,QAC1C,CAAEvpD,MAAOsxC,EAAAA,IAAiB7mB,QAASxM,KAAKs7B,mBACxC,CAAEv5C,MAAOsxC,EAAAA,IAA4B7mB,QAASxM,KAAKkxI,gBAAgBlyI,KAAKgB,OACxE,CAAEje,MAAOsxC,EAAAA,IAAqB7mB,QAASxM,KAAKixI,qBAC5C,CAAElvJ,MAAOsxC,EAAAA,IAAuB7mB,QAASxM,KAAKixI,qBAC9C,CAAElvJ,MAAOsxC,EAAAA,IAA4B7mB,QAASxM,KAAK00I,cACnD,CAAE3yJ,MAAOsxC,EAAAA,IAAkB7mB,QAASxM,KAAKixI,qBACzC,CAAElvJ,MAAOsxC,EAAAA,IAAc7mB,QAASxM,KAAKs1I,wBACrC,CAAEvzJ,MAAOsxC,EAAAA,IAAsB7mB,QAASxM,KAAKq1I,iBAC7C,CAAEtzJ,MAAOsxC,EAAAA,IAAgB7mB,QAASxM,KAAK0nB,SACvC,CAAE3lC,MAAOsxC,EAAAA,IAAmB7mB,QAASxM,KAAKk1I,qBAC9CtG,EAAAA,EAAAA,IAAuB5uI,KAAKqQ,OAAQrQ,KAAKwuI,aAAa,EAAMxuI,MAC5DA,KAAKu1I,oBAAsBv1I,KAAK9R,YAAY8Q,KAAKgB,MACjDA,KAAKw1I,sBAAwBx1I,KAAK9R,YAAY8Q,KAAKgB,MACnDA,KAAKqQ,OAAOxM,iBAAiBwvB,EAAAA,IAAoBrzB,KAAKu1I,qBACtDv1I,KAAKqQ,OAAOxM,iBAAiBwvB,EAAAA,IAAsBrzB,KAAKw1I,uBAC5D,EACAnnJ,EAAQgR,UAAUyE,oBAAsB,WAChC9D,KAAKqQ,OAAOuqB,eAGhBg0G,EAAAA,EAAAA,IAAuB5uI,KAAKqQ,OAAQrQ,KAAKwuI,aAAa,GACtDxuI,KAAKqQ,OAAOvM,oBAAoBuvB,EAAAA,IAAoBrzB,KAAKu1I,qBACzDv1I,KAAKqQ,OAAOvM,oBAAoBuvB,EAAAA,IAAsBrzB,KAAKw1I,uBAC/D,EACAnnJ,EAAQgR,UAAUi2I,uBAAyB,SAAU75J,GACjD,IAAI0iD,EAAS1iD,EAAE0iD,OACXu0G,EAAWv0G,EAAOvH,UAAUM,SAAS,kBAAoBiH,EAAOvH,UAAUM,SAAS,oBACnFl3B,KAAKqQ,OAAO0tG,mBAAqB20B,GAAY1yI,KAAKgxI,iBAC9CrrB,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,kBAC3Bn+B,KAAKsyI,wBAAuB,EAEpC,EACAjkJ,EAAQgR,UAAUnR,YAAc,WACxB8R,KAAKqQ,OAAO0tG,kBACZ/9G,KAAKwyI,8BAA8BC,EAAAA,GAAwBriC,UAEnE,EAMA/hH,EAAQgR,UAAUu8B,cAAgB,WAC9B,MAAO,SACX,EACOvtC,CACX,CAzmB6B,2qJCVtB,IAII0tD,EAAO,OAEP05F,EAAe,eAEfC,EAAgB,gBAEhBC,EAAiB,iBAEjBzzB,EAAc,cAEdG,EAAiB,iBAEjBhnB,EAAgB,gBAEhBu6C,EAAY,YAEZC,EAAe,eAEf3nJ,EAAc,cAEd4nJ,EAAiB,iBAEjBC,EAAgB,gBAEhBC,EAAgB,gBAEhBC,EAAe,eAEfC,EAAkB,kBAElBC,EAAiB,iBAEjBC,EAAkB,kBAElBC,EAAiB,iBAEjBC,EAAoB,oBAEpBC,EAAmB,mBAEnBC,EAAkB,kBAElBC,EAAa,aAEbC,EAAa,aAUbC,EAAc,cAEdC,EAAgB,gBAEhBC,EAAkB,kBAElB7oJ,EAAe,eAEf8oJ,EAAW,WAEXC,EAAc,cAEdC,EAAc,cAsBdC,EAAoB,oBAEpBC,EAAc,cAEdC,EAAkB,kBAIlBC,EAA2B,2BAE3BC,EAAc,cAEdC,EAAW,WAEXC,EAAa,aAEbC,EAAiB,iBAEjBC,EAAa,aAEbC,EAAc,cAEdC,EAAiB,iBAEjBC,EAAsB,sBAEtBC,EAAkB,kBAElBC,EAAmB,mBAEnBC,EAAoB,oBAIpBC,EAAqB,qBASrBhU,EAAc,eAEdD,EAAa,cAEbkU,EAAY,aAEZzN,EAAe,gBAEf0N,EAAW,YAEX9N,GAAU,WAEV+N,GAAsB,wBAEtBzD,GAAe,gBAEf0D,GAAkB,mBAElBC,GAAkB,mBAIlBC,GAAe,kBAIfC,GAAe,mBAIfC,GAAiB,qBAIjBC,GAAiB,qBAIjBC,GAAkB,mBAQlBC,GAAgB,oBAMhBC,GAAkB,mBAElBC,GAAwB,0BAExBC,GAAuB,yBAMvBC,GAAuB,cAQvBC,GAAwB,eAExBC,GAAoB,oBAEpBC,GAAc,cAEdxK,GAAa,cAEbtnF,GAAQ,QAER1/B,GAAU,UAEVyxH,GAA0B,yBAE1BC,GAAS,SAETC,GAAqB,uBAErBpV,GAAwB,0BAIxBqV,GAAY,aAEZC,GAAc,eAEdC,GAAiB,mBAEjBC,GAAa,cAEbC,GAAqB,sBAErBC,GAAkB,mBAIlBC,GAAW,WAEXC,GAAiB,kBAEjBC,GAAW,YAEXC,GAAU,WAEVC,GAAiB,kBAEjB73C,GAAa,cAgBb83C,GAAe,gBAIfC,GAAa,cAEbC,GAAkB,oBAIlBC,GAAY,aAEZC,GAAoB,oBAEpBC,GAAsB,sBAEtBC,GAAqB,qBAErBC,GAA2B,2BAE3BC,GAAwB,wBAcxBC,GAAe,eAUfC,GAAa,aAEbC,GAAsB,sBAEtB1W,GAAkB,oBAElB2W,GAAuB,uBAEvBC,GAAoB,oBAEpBjnC,GAAgB,gBAEhBknC,GAAgB,gBAEhBriC,GAAiB,iBAIjBsiC,GAAkB,kBAElBC,GAAoB,oBAEpBC,GAAa,cAEbC,GAAmB,mBAEnBC,GAAe,eAEfC,GAAkB,kBAElBC,GAAc,cAEdC,GAAc,eAEdC,GAAkB,kBAElBnR,GAAiB,iBAEjBoR,GAAkB,kBAElBC,GAAgB,iBAEhBC,GAAqB,sBAErBC,GAAkB,mBAElBC,GAAqB,uBAYrBC,GAAiB,kBAEjBC,GAAyB,yBAEzBC,GAAmB,qBAEnBC,GAAkB,mBAElBC,GAAgB,oBAEhBC,GAAmB,uBAEnBC,GAAc,iBAEdC,GAAsB,2BAItBC,GAAkB,oBAIlBC,GAAe,gBAIfC,GAAuB,yBAIvBC,GAAmB,qBAQnBC,GAAoB,sBAIpBC,GAAY,aAIZC,GAAiB,mBAEjBC,GAA4B,+BAE5BC,GAAsB,wBAEtBC,GAAwB,0BAExBC,GAAoB,sBAEpBC,GAAmB,qBAEnBC,GAAwB,0BAExBC,GAAqB,uBAErBC,GAAmB,qBAEnBC,GAAsB,wBAMtBC,GAAoB,sBAIpBC,GAAuB,yBAEvBC,GAAe,gBAIfC,GAA8B,8BAE9BC,GAAgB,cAEhBC,GAAwB,2BAExBC,GAAgB,iBAEhBC,GAAyB,yBAEzBC,GAAkB,wBAElBC,GAAuB,yBAEvBC,GAA+B,kCAI/BC,GAAqB,uBAMrBC,GAA4B,gCAE5BC,GAAuB,yBAIvBC,GAAmB,qBAMnBC,GAA6B,gCAI7BC,GAAiC,qCAIjCC,GAAoB,sBAEpBC,GAA2B,kCAE3BC,GAA8B,qCAE9BC,GAAwB,0BAExBC,GAAoB,sBAEpBC,GAAoB,sBAEpBte,GAAsB,wBAEtBue,GAA2B,8BAE3BC,GAAgB,kBAEhBC,GAAkB,oBAIlBC,GAAsB,yBAItBC,GAAe,gBAMf/K,GAAY,aAEZgL,GAAoB,sBAQpBC,GAA8B,iCAM9BC,GAAmB,qBAEnBC,GAAuB,yBAIvBC,GAAkC,qCAIlCC,GAA6B,iCAE7BC,GAA+B,+BAE/BC,GAAuB,uBAEvBC,GAAsB,oDCziB1B,IAAI9e,EA4CA+e,EAcAC,EAoBA5d,EAgBAyQ,2GA7FX,SAAW7R,GAEPA,EAASA,EAAe,KAAI,GAAK,OAEjCA,EAASA,EAAiB,OAAI,GAAK,SAEnCA,EAASA,EAAkB,QAAI,GAAK,UAEpCA,EAASA,EAAuB,aAAI,GAAK,eAEzCA,EAASA,EAAyB,eAAI,GAAK,iBAE3CA,EAASA,EAAiB,OAAI,GAAK,SAEnCA,EAASA,EAAiB,OAAI,GAAK,SAEnCA,EAASA,EAAuB,aAAI,GAAK,eAEzCA,EAASA,EAA4B,kBAAI,GAAK,oBAE9CA,EAASA,EAAiB,OAAI,GAAK,SAEnCA,EAASA,EAAuB,aAAI,IAAM,eAE1CA,EAASA,EAAwB,cAAI,IAAM,gBAE3CA,EAASA,EAAuB,aAAI,IAAM,eAE1CA,EAASA,EAAuB,aAAI,IAAM,eAE1CA,EAASA,EAAwB,cAAI,IAAM,gBAE3CA,EAASA,EAA6B,mBAAI,IAAM,qBAEhDA,EAASA,EAAsB,YAAI,IAAM,cAEzCA,EAASA,EAAuB,aAAI,IAAM,cAC7C,CArCD,CAqCGA,IAAaA,EAAW,CAAC,IAO5B,SAAW+e,GAEPA,EAAWA,EAAmB,OAAI,GAAK,SAEvCA,EAAWA,EAAoB,QAAI,GAAK,UAExCA,EAAWA,EAAoB,QAAI,GAAK,SAC3C,CAPD,CAOGA,IAAeA,EAAa,CAAC,IAOhC,SAAWC,GACPA,EAAYA,EAAiB,IAAI,GAAK,MACtCA,EAAYA,EAAkB,KAAI,GAAK,OACvCA,EAAYA,EAAoB,OAAI,GAAK,SACzCA,EAAYA,EAAoB,OAAI,GAAK,SACzCA,EAAYA,EAAoB,OAAI,GAAK,SACzCA,EAAYA,EAAmB,MAAI,GAAK,QACxCA,EAAYA,EAAoB,OAAI,GAAK,SACzCA,EAAYA,EAA2B,cAAI,GAAK,gBAChDA,EAAYA,EAAuB,UAAI,GAAK,YAC5CA,EAAYA,EAAyB,YAAI,GAAK,cAC9CA,EAAYA,EAAuB,UAAI,IAAM,YAC7CA,EAAYA,EAAwB,WAAI,IAAM,YACjD,CAbD,CAaGA,IAAgBA,EAAc,CAAC,IAOlC,SAAW5d,GAEPA,EAAuBA,EAA+B,OAAI,GAAK,SAE/DA,EAAuBA,EAA8B,MAAI,GAAK,QAE9DA,EAAuBA,EAA+B,OAAI,GAAK,SAE/DA,EAAuBA,EAAiC,SAAI,GAAK,UACpE,CATD,CASGA,IAA2BA,EAAyB,CAAC,IAOxD,SAAWyQ,GAEPA,EAAwBA,EAAmC,UAAI,GAAK,YAEpEA,EAAwBA,EAAkC,SAAI,GAAK,UACtE,CALD,CAKGA,IAA4BA,EAA0B,CAAC,yQCzGtDlzG,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAwBzCmgH,EAAqC,SAAUp0I,GAE/C,SAASo0I,EAAoBxvI,GACzB,IAAIL,EAAQvE,EAAO/L,KAAKM,KAAMqQ,IAAWrQ,KASzC,OARAgQ,EAAM71B,KAAO,GAEb61B,EAAMlpB,MAAQ,EACdkpB,EAAM8vI,mBAAqB,EAC3B9vI,EAAM+vI,mBAAoB,EAC1B/vI,EAAMK,OAASA,EACfL,EAAMgwI,gBAAkB,IAAIC,EAAAA,GAA2B5vI,GACvDL,EAAMkwI,gBAAkB,IAAIC,EAAAA,GAA6B9vI,GAClDL,CACX,CAqQA,OAjRAuvB,EAAUsgH,EAAqBp0I,GAa/Bo0I,EAAoBxgJ,UAAU+gJ,aAAe,SAAUv6J,EAAMoI,GACzD,GAAiD,IAA7C+R,KAAKqQ,OAAOolG,cAAcrB,QAAQn8H,OAClC,OAAOwzB,EAAOpM,UAAU+gJ,aAAa1gJ,KAAKM,KAAMna,EAAMoI,GAE1D+R,KAAKqgJ,iBAAyC,mBAArBpyJ,EAAK0tF,YAC9B37E,KAAK7lB,KAAO,GACZ6lB,KAAKlZ,MAAQkZ,KAAKqQ,OAAOykG,sBAAwB90G,KAAKqgJ,iBAAmBpyJ,EAAKwb,WAAa,EAC3F,IAAK,IAAItE,EAAI,EAAG8L,EAAMprB,EAAK5N,OAAQktB,EAAI8L,EAAK9L,IACxCnF,KAAK8/I,mBAAqB,EAC1B9/I,KAAK+/I,mBAAoB,EACzB//I,KAAKgiF,kBAAkB,EAAGn8F,EAAK3G,SAASimB,EAAE/pB,WAAY,KAAMyK,EAAK+3F,MAAOz4E,OAAGjqB,EAAW8kB,KAAK7lB,KAAKlC,QAMpG,OAJA+nB,KAAKlZ,MAAQ,EACTkZ,KAAKqQ,OAAOiwI,0BACZtgJ,KAAKugJ,sBAEFvgJ,KAAK7lB,IAChB,EACA0lK,EAAoBxgJ,UAAU2iF,kBAAoB,SAAUl7F,EAAOjB,EAAM26J,EAAKC,EAAUC,EAASC,EAAQC,GACrG,IAAI56J,EACA43F,EAAQ4iE,EACZ,IAAI7yI,EAAAA,EAAAA,IAAkB9nB,EAAKiE,OACvB,IAAI6jB,EAAAA,EAAAA,IAAkB9nB,EAAK21F,WACvBx7E,KAAK7lB,KAAO6lB,KAAK7lB,KAAKwG,OAAOqf,KAAK6gJ,iBAAiBh7J,EAAMiB,EAAO25J,EAAUzgJ,KAAK7lB,KAAKlC,OAAQ2oK,SAG5F,IAAK,IAAIpqI,EAAI,EAAGvF,EAAMprB,EAAK5N,OAAQu+B,EAAIvF,EAAKuF,IACxCxW,KAAKgiF,kBAAkBl7F,EAAOjB,EAAK3G,SAASs3B,EAAEp7B,WAAY,KAAMyK,EAAK+3F,MAAO6iE,EAAU35J,EAAOkZ,KAAK7lB,KAAKlC,OAAQ2oK,OAItH,CACD,IAAIE,OAAa,EACbC,EAAa/gJ,KAAKghJ,mBAAmBn7J,EAAMiB,EAAO25J,EAAUC,EAASC,EAAQC,GAajF,GAZI5gJ,KAAKqgJ,mBACLS,EAAa9gJ,KAAKihJ,cAAcn6J,EAAOi6J,EAAWl7J,KAAK7G,MAEtD8hK,EAIDC,EAAW70I,IAAM40I,EAAW50I,IAH5BlM,KAAK7lB,KAAO6lB,KAAK7lB,KAAKwG,OAAOogK,GAK7Bl7J,EAAKiE,OAASjE,EAAKiE,MAAM7R,QACzB+nB,KAAKgiF,kBAAkBl7F,EAAQ,EAAGjB,EAAKiE,MAAOjE,EAAKiE,MAAM8zF,MAAO6iE,EAAU35J,EAAQ,EAAGkZ,KAAK7lB,KAAKlC,OAAQ8oK,EAAW70I,KAElHlM,KAAKqQ,OAAO2rE,WAAW/jG,QAAU+nB,KAAKkhJ,kBAAkBH,GAAa,CACrE,IAAII,EAASnhJ,KAAK7lB,KAAKlC,QACtB+N,EAAKga,KAAK7lB,MAAMsF,KAAKyf,MAAMlZ,EAAIga,KAAKggJ,gBAAgBI,aAAav6J,EAAM,CAAE+3F,MAAOA,EAAOgjE,UAAWG,EAAW70I,OAC9G,IAAK,IAAI/G,EAAIg8I,EAAS,EAAGh8I,GAAK,EAAGA,IAC7B,GAAInF,KAAK7lB,KAAK+E,SAASimB,EAAE/pB,WAAY,KAAKgmK,aACtCphJ,KAAK7lB,KAAK+E,SAASimB,EAAE/pB,WAAY,KAAKimK,gBAAkBrhJ,KAAK7lB,KAAKlC,OAASkpK,OAE1E,IAAKnhJ,KAAK7lB,KAAK+E,SAASimB,EAAE/pB,WAAY,KAAKgmK,eAAiBphJ,KAAK7lB,KAAK+E,SAASimB,EAAE/pB,WAAY,KAAKkmK,UACnG,KAGZ,CACIR,GACA9gJ,KAAKuhJ,yBAAyBT,EAEtC,CACJ,EACAjB,EAAoBxgJ,UAAU6hJ,kBAAoB,SAAUr7J,GACxD,OAAIma,KAAKqQ,OAAO0kG,0BACP/0G,KAAK+/I,oBAGV//I,KAAKihJ,cAAcp7J,EAAK27J,OAAQ37J,EAAKA,KAAK7G,KAC1CghB,KAAK+/I,kBAAoBl6J,EAAKA,KAAKqrE,QAAUlxD,KAAK8/I,mBAC3C9/I,KAAK+/I,oBAER//I,KAAKqQ,OAAO0kG,uBACxB,EACA8qC,EAAoBxgJ,UAAU4hJ,cAAgB,SAAUO,EAAQxiK,GAC5D,IACIyiK,EADAC,EAAS1hJ,KAAKqQ,OAAOsxI,gBAAgBhhK,OAAOqf,KAAK7lB,MAErD6lB,KAAK8/I,mBAAqB,EAE1B,IADA,IAAI36I,EAAIu8I,EAAOzpK,OACRktB,MACCu8I,EAAOxiK,SAASimB,EAAE/pB,WAAY,KAAKgmK,cAAgBM,EAAOxiK,SAASimB,EAAE/pB,WAAY,KAAKomK,SAAWA,GAC9FE,EAAOxiK,SAASimB,EAAE/pB,WAAY,KAAKyK,KAAK7G,MAAQA,IACnDyiK,EAASC,EAAOxiK,SAASimB,EAAE/pB,WAAY,QAEvCsmK,EAAOxiK,SAASimB,EAAE/pB,WAAY,KAAKomK,SAAWA,GAAUE,EAAOxiK,SAASimB,EAAE/pB,WAAY,KAAKomK,OAASA,KAGpGE,EAAOxiK,SAASimB,EAAE/pB,WAAY,KAAKomK,SAAWA,EAAS,GACvDxhJ,KAAK8/I,qBAGb,OAAO2B,CACX,EACA5B,EAAoBxgJ,UAAUuiJ,mBAAqB,SAAUhgK,EAAO4/J,EAAQ37J,GACxE,IAAIs8I,EAAQ,GACR0f,EAAW,GACXziF,EAASp/D,KAAKqQ,OAAOslG,iBAAiB/zH,GACtCkgK,EAAU9hJ,KAAKqQ,OAAO0xI,yBACtB/hJ,KAAKqQ,OAAO2xI,6BACZ5iF,EAASp/D,KAAKqQ,OAAO+jG,QAAQj2H,QAAO,SAAU83B,GAAK,OAAOA,EAAEr0B,QAAUA,CAAO,IAAG,IAEpF,IAAIqgK,EAAajiJ,KAAKqQ,OAAOolG,cAAcrB,QAAQn8H,OAC/C07H,EAAO3zG,KAAKqQ,OAChB,IAAKrQ,KAAKqQ,OAAO2xI,6BAA2D,IAA7BF,EAAQxrJ,QAAQkrJ,GAAgB,CAC3E,IAAK,IAAIr8I,EAAI,EAAGA,EAAIq8I,EAAQr8I,IACxBg9H,EAAM1iJ,KAAKugB,KAAKkiJ,sBAEpB/f,EAAM1iJ,KAAKugB,KAAKqiI,aAAa,CAAC,EAAG,KAAMzB,EAAAA,GAASuhB,QACpD,CAKA,GAJAX,EAASxhJ,KAAKqQ,OAAO2xI,2BAA6B,EAC7ChiJ,KAAKqQ,OAAO+xI,oBAAoBnqK,OAASgqK,GAActuC,EAAK4uB,gBAAkB5uB,EAAK6uB,UAAY,EAAI,GAChGgf,GAAUxhJ,KAAKqQ,OAAO+xI,oBAAoBnqK,QAAU,EAAI,GAE5D+nB,KAAKqQ,OAAO2rE,WAAW/jG,SAAW+nB,KAAKkgJ,gBAAgBl8F,UAAW,CAClE,IAAIq+F,EAAeriJ,KAAKkgJ,gBAAgBE,aAAav6J,GAAM,IAC3D8oB,EAAAA,EAAAA,IAAO9oB,EAAMw8J,EAAax8J,MAC1B,IAAIy8J,EAAW,EACfD,EAAalgB,MAAMx6H,MAAK,SAAU6yG,EAAM1zH,GAA2B,OAAlBw7J,EAAWx7J,EAAc0zH,EAAKpsH,SAAWosH,EAAK+nC,UAAY,IAC3GV,EAAWQ,EAAalgB,MAAM9kI,MAAMilJ,GAAUnkK,QAAO,SAAUq8H,GAAQ,OAAOA,EAAKpsH,OAAS,IACxFi0J,EAAaj0J,SAAWyzJ,EAAS,GAAGziF,OAAOx9E,QAAUoe,KAAKqQ,OAAO+xI,oBAAoB,GAAGxgK,QACxFigK,EAAWA,EAASxkJ,MAAM,IAEiB,IAA3C2C,KAAKqQ,OAAO+xI,oBAAoBnqK,SAChC4pK,EAAW,IAEfL,GAAkBK,EAAS5pK,MAC/B,CAGA,IAFA,IAAI08H,EAAS30G,KAAKqQ,OAAO2xI,2BAAwChiJ,KAAKqQ,OAAO4jG,aAAvB,CAAC70C,GACnDojF,GAAQ,EACHhsI,EAAI,EAAGA,EAAIm+F,EAAK18H,OAAQu+B,IAAK,CAClC,IAAIisI,EAAUD,IAAsC,IAA7BV,EAAQxrJ,QAAQkrJ,GACnCiB,IACAD,GAAQ,GAEZ,IAAI3f,GAAY7iI,KAAKqQ,OAAO2xI,4BAA8BS,EACtD7hB,EAAAA,GAAS8hB,aAAe9hB,EAAAA,GAAS+hB,kBACrCnB,EAASxhJ,KAAKqQ,OAAO2xI,4BAA8Bnf,IAAajC,EAAAA,GAAS8hB,aAAelB,EAASS,EAAaT,EAC1G7tC,EAAK+uB,iBACL8e,IAEJrf,EAAM1iJ,KAAKugB,KAAKqiI,aAAajjE,EAAQ,KAAMyjE,EAAU2e,GACzD,CAEA,OADArf,EAAM1iJ,KAAKyf,MAAMijI,EAAO0f,GACjB1f,CACX,EAWA0d,EAAoBxgJ,UAAU2hJ,mBAAqB,SAAUn7J,EAAM27J,EAAQoB,EAAUC,EAASlC,EAAQC,GAClG,IAAIlgJ,EAAU,CAAC,EACXo9E,EAAU,UACVq4B,EAAMn2G,KAAKqQ,OAAOslG,iBAAiB9vH,EAAKjE,OAC5C8e,EAAQ7a,MAAO8oB,EAAAA,EAAAA,IAAO,CAAC,EAAG9oB,GACtBswH,IACAz1G,EAAQ7a,KAAKjE,MAAQiE,EAAKjE,OAE9B8e,EAAQ4gJ,WAAY,EACpB5gJ,EAAQmhF,UAAY7hF,KAAKqQ,OAAOolG,cAAcC,oBAAsB11G,KAAKqQ,OAAOiwI,yBAChF5/I,EAAQoiJ,UAAYF,EACpBliJ,EAAQqiJ,SAAWF,EACnBniJ,EAAQigJ,OAASA,EACjBjgJ,EAAQ0gJ,cAAe,EACvB1gJ,EAAQkgJ,UAAYA,EACpBlgJ,EAAQsiJ,UAAYr1I,EAAAA,EAAAA,IAAkB9nB,EAAKiE,MAAM,GAAKg0F,IAA8Cj4F,EAAKiE,MAAM7R,OAA7C4N,EAAKiE,MAAM,GAAKg0F,GAAS7lG,OAC3FyoB,EAAQwL,KAAM+2I,EAAAA,EAAAA,IAAO,YACrB,IAAI/mF,EAAM,IAAIgmE,EAAAA,EAAIxhI,GAIlB,OAHAw7D,EAAIslF,OAASA,EACbxhJ,KAAK86I,kBAAkB5+E,GACvBA,EAAIimE,MAAQniI,KAAK4hJ,mBAAmB/7J,EAAKjE,MAAO4/J,EAAQtlF,EAAIr2E,MACrDq2E,CACX,EACA2jF,EAAoBxgJ,UAAUy7I,kBAAoB,SAAU5+E,GACxD,IAAIr2E,EAAOq2E,EAAIr2E,KACXswH,EAAMn2G,KAAKqQ,OAAOslG,iBAAiB9vH,EAAKjE,OAC5C,GAAIu0H,GAAOA,EAAII,iBAAmBJ,EAAII,kBAAmB,CACrD,IAAI2sC,GAAWv1I,EAAAA,EAAAA,IAAkB9nB,EAAK7G,KAAO,GAAKm3H,EAAIgtC,cAAchtC,EAAIa,iBAAiBosC,EAAAA,EAAAA,IAAejtC,EAAK,CAAC,EAAGtwH,EAAK7G,KAAK,GAAIm3H,IAC/Hn0H,EAAAA,EAAAA,IAAS,aAAckhK,EAAShnF,EAAIr2E,KACxC,CACJ,EAUAg6J,EAAoBxgJ,UAAUwhJ,iBAAmB,SAAUh7J,EAAM27J,EAAQqB,EAASlC,EAAQC,GAGtF,IAFA,IAAIzmK,EAAO,GACP2nK,EAAU9hJ,KAAKqQ,OAAO0xI,yBACjB58I,EAAI,EAAG8L,EAAMprB,EAAK5N,OAAQktB,EAAI8L,EAAK9L,IAAKw7I,IAAU,CACvDxmK,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAO4kB,KAAK+gI,YAAYl7I,EAAK3G,SAASimB,EAAE/pB,WAAY,KAAM4kB,KAAKlZ,MAAOqe,OAAIjqB,EAAY,kBAAmBsmK,EAAQqB,EAASlC,EAAQC,GAC9J,IAAK,IAAIpqI,EAAI,EAAGA,EAAIgrI,EAAQhrI,IACpBxW,KAAKqQ,OAAO2xI,6BAA2D,IAA7BF,EAAQxrJ,QAAQkrJ,IAG9DrnK,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAK+mJ,MAAM7jI,QAAQ0B,KAAKkiJ,sBAExDliJ,KAAKlZ,OACT,CACA,OAAO3M,CACX,EACA0lK,EAAoBxgJ,UAAU6iJ,mBAAqB,WAC/C,OAAOliJ,KAAKqiI,aAAa,CAAC,EAAG,KAAMzB,EAAAA,GAASyiB,OAChD,EACAxD,EAAoBxgJ,UAAUikJ,YAAc,SAAUxqJ,GAElD,IADA,IAAIgpJ,EAAU9hJ,KAAKqQ,OAAO0xI,yBACjB58I,EAAI,EAAGA,EAAIrM,EAAM7gB,OAAQktB,IAC9B,GAAIrM,EAAM5Z,SAASimB,EAAE/pB,WAAY,KAAKkmK,UAAW,CAC7CxoJ,EAAM5Z,SAASimB,EAAE/pB,WAAY,KAAK+mJ,MAAQniI,KAAKoiI,cAActpI,EAAM5Z,SAASimB,EAAE/pB,WAAY,MAC1F,IAAK,IAAIo7B,EAAI,EAAGA,EAAI1d,EAAM5Z,SAASimB,EAAE/pB,WAAY,KAAKomK,OAAQhrI,IACtDxW,KAAKqQ,OAAO2xI,6BACsD,IAA/DF,EAAQxrJ,QAAQwC,EAAM5Z,SAASimB,EAAE/pB,WAAY,KAAKomK,SAGzD1oJ,EAAM5Z,SAASimB,EAAE/pB,WAAY,KAAK+mJ,MAAM7jI,QAAQ0B,KAAKkiJ,qBAE7D,KACK,CACD,IAAIqB,EAAOvjJ,KAAKghJ,mBAAmBloJ,EAAM5Z,SAASimB,EAAE/pB,WAAY,KAAKyK,KAAMiT,EAAM5Z,SAASimB,EAAE/pB,WAAY,KAAKomK,QAC7G1oJ,EAAM5Z,SAASimB,EAAE/pB,WAAY,KAAK+mJ,MAAQohB,EAAKphB,KACnD,CAEJ,OAAOrpI,CACX,EACA+mJ,EAAoBxgJ,UAAUkiJ,yBAA2B,SAAUiC,GAC/D,IAAKA,EAAQ3hE,WAAgC,IAApB2hE,EAAQp1J,QAC7B,IAAK,IAAImgB,EAAK,EAAGvoB,EAAKga,KAAK7lB,KAAMo0B,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CACnD,IAAI2tD,EAAMl2E,EAAGuoB,GACT2tD,EAAI0kF,YAAc4C,EAAQt3I,MAC1BgwD,EAAI9tE,SAAU,EACV8tE,EAAIklF,cACJphJ,KAAKuhJ,yBAAyBrlF,GAG1C,CAER,EACA2jF,EAAoBxgJ,UAAUkhJ,oBAAsB,WAChD,IAAK,IAAIp7I,EAAI,EAAGA,EAAInF,KAAK7lB,KAAKlC,OAAQktB,IAAK,CACvC,IAAI+2D,EAAMl8D,KAAK7lB,KAAK+E,SAASimB,EAAE/pB,WAAY,KAC3C,GAAK8gF,EAAIklF,aAGT,IAAK,IAAI5qI,EAAIrR,EAAI,EAAGqR,EAAIxW,KAAK7lB,KAAKlC,OAAQu+B,IAAK,CAC3C,IAAIitI,EAAWzjJ,KAAK7lB,KAAK+E,SAASs3B,EAAEp7B,WAAY,KAC5C8gF,EAAIhwD,MAAQu3I,EAAS7C,YACrB5gJ,KAAK7lB,KAAK+E,SAASs3B,EAAEp7B,WAAY,KAAKgT,QAAU8tE,EAAI2lB,SAE5D,CACJ,CACJ,EACOg+D,CACX,CAnRyC,CAmRvC6D,EAAAA,aC1REC,EAA+B,WAO/B,SAASA,EAActzI,EAAQyiG,GAC3B,IAAI9iG,EAAQhQ,KACZA,KAAK7lB,KAAO,GACZ6lB,KAAK4jJ,WAAa,GAClB5jJ,KAAK6jJ,YAAc,GACnB7jJ,KAAK8jJ,kBAAoB,GAEzB9jJ,KAAK2nI,YAAc,CAAC,EAEpB3nI,KAAK+jJ,gBAAkB,GACvB/jJ,KAAKgkJ,UAAW,EAChBhkJ,KAAKikJ,eAAiB,GACtBjkJ,KAAKk5C,KAAO,SAAUz9D,GAClBu0B,EAAMK,OAAO0W,OAAOsM,EAAAA,IAAmB,CAAE8K,OAAQ1iD,EAAE0iD,OAAQ0b,eAAgBp+D,EAAEo+D,kBAC7ElkB,EAAAA,EAAAA,IAAOl6C,EAAEo+D,eACb,EACA75C,KAAKkkJ,cAAgB,CAAC,EACtBlkJ,KAAKujI,UAAW,EAEhBvjI,KAAKmkJ,YAAc,GACnBnkJ,KAAKokJ,kBAAoB,GACzBpkJ,KAAKqkJ,gBAAkB,GACvBrkJ,KAAKskJ,WAAY,EACjBtkJ,KAAKukJ,kBAAmB,EACxBvkJ,KAAKwkJ,eAAgB,EAErBxkJ,KAAKykJ,eAAiB,GACtBzkJ,KAAK0kJ,YAAc,SAAUz2J,GACzB,IAAI83C,EAAM93C,EACV,OAAO,WACH,GAAI+hB,EAAMK,OAAOyxH,iBAAmB9xH,EAAMK,OAAOykG,sBAAwB9kG,EAAMK,OAAO0kG,yBAA0B,CAC5G,IAAIj1B,EAAY7xF,EAAK6xF,UAErB,GADA9vE,EAAMg0I,SAAWh0I,EAAMK,OAAOkwH,kBAAoB1iB,EAAAA,GAAmC,iBAAd/9B,EAA6C,YAAdA,EAClG9vE,EAAMK,OAAO2xI,4BAAmD,kBAArB/zJ,EAAK0tF,aAAmC3rE,EAAMg0I,SAAU,CACnG,IAAIW,EAAO,GAAGtnJ,MAAMqC,KAAKsQ,EAAMK,OAAOu0I,0BAA0BpgH,uBAAuBq5E,EAAAA,KACnFgnC,EAAO,GAAGxnJ,MAAMqC,KAAKsQ,EAAMK,OAAOy0I,yBAAyBtgH,uBAAuBq5E,EAAAA,KACtF7tG,EAAMg0I,SAAWW,EAAK1sK,SAAW4sK,EAAK5sK,MAC1C,CACJ,CAEA,GADA+3B,EAAM+0I,YAAYv0J,QAAQwf,EAAMg1I,WAAWzyI,cAAc,IAAMsrG,EAAAA,KAAmB,IAC9E7tG,EAAMK,OAAOuqB,YAAjB,CAGA,IAAIzgD,EAAO61B,EAAM71B,KAAKkjB,MAAM,GAC5B,GAAI2S,EAAMK,OAAO0kG,wBAAyB,CACtC,GAAI/kG,EAAMK,OAAOolG,cAAcC,kBAC3B,IAAK,IAAIvwG,EAAI,EAAGA,EAAI6K,EAAMm0I,YAAYlsK,OAAQktB,IAC1C6K,EAAMi1I,mBAAmBj1I,EAAMm0I,YAAYjlK,SAASimB,EAAE/pB,WAAY,KAAM+pB,GAGhFhrB,EAAO61B,EAAMK,OAAOsxI,gBACpB,IAAIuD,EAAWn/G,EAAIm/G,SACnB,GAAIl1I,EAAMK,OAAO80I,uBAAuBC,aAAeF,EAAU,CAC7D,IAAIG,EAAWr1I,EAAMK,OAAO80I,uBAAuBG,UACnDnrK,EAAO,GAGP,IAFA,IAAIorK,EAAUrmK,SAAS8wB,EAAMw1I,YAAY,GAAGpkH,aAAa,iBAAkB,IAAM,EAEjE8vB,GAAP/rD,EAAI,EADEtD,KAAKyf,KAAKikI,EAASv1I,EAAMK,OAAO2kG,aAAaz1B,WAC1Bp6E,EAAIkgJ,EAAUlgJ,IAAK+rD,IAC7ClhD,EAAMk0I,cAAchlK,SAASgyE,EAAM91E,WAAY,OAC/CjB,EAAOA,EAAKwG,OAAOqvB,EAAMk0I,cAAchlK,SAASgyE,EAAM91E,WAAY,MAG9E,CACJ,CAYA,GAXI40B,EAAMK,OAAOyxH,iBACb3nJ,EAAO8T,EAAK0hJ,SAAW3/H,EAAM4zI,WAAa31J,EAAKw3J,yBAA2Bz1I,EAAMK,OAAOq1I,2BACjF11I,EAAM6zI,aAEhB7zI,EAAMK,OAAO0W,OAAOsM,EAAAA,IAAqB,CAAEl5C,KAAMA,EAAM8T,KAAM83C,IACzD/1B,EAAMK,OAAOs1I,SACb31I,EAAMK,OAAOu1I,uBAEZ51I,EAAMK,OAAOy7E,eACd97E,EAAMK,OAAOq3H,YAAYme,4BAEzB71I,EAAMg0I,SAAU,CAChBh0I,EAAMK,OAAOklG,iBAAkB,EAC3BvlG,EAAMK,OAAO0kG,yBAA2B/kG,EAAMK,OAAOolG,cAAcC,mBAA0C,YAArBznH,EAAK0tF,cAC7F3rE,EAAMK,OAAO8kG,qBAAyC,wBAAIj6H,GAE9D,IAAI4/H,EAAe9qG,EAAMK,OAAO0qG,eAAiB/qG,EAAMK,OAAO0qG,cAAcC,eACxEhrG,EAAMK,OAAO0qG,cAAcC,cAAclf,QAC7C,IAAK9rF,EAAMK,OAAOyrF,SAAWgf,IAAiB9qG,EAAMK,OAAOrtB,QAAQ8tB,iBAAiB,mBAAmB74B,OAAQ,CAE3G,IAAI6tK,EAAY91I,EAChB81I,EAAUz1I,OAAO8qG,iBAAgB,WAC7B2qC,EAAUz1I,OAAOylB,QAAQzC,EAAAA,IAAkB,CAAC,GAAG,WACvCyyH,EAAUz1I,OAAO01I,eACjBD,EAAUz1I,OAAO0W,OAAOsM,EAAAA,IAAqB,CAAEguG,KAAM,YAE7D,GACJ,GACJ,MAEIrxH,EAAMK,OAAOylB,QAAQzC,EAAAA,IAAkB,CAAC,GAAG,WACnCrjB,EAAMK,OAAO01I,eACb/1I,EAAMK,OAAO0W,OAAOsM,EAAAA,IAAqB,CAAEguG,KAAM,YAEzD,IAEArxH,EAAMK,OAAO01I,eAAyC,SAAxB/1I,EAAMK,OAAO2jC,SACvChkC,EAAMK,OAAOm7H,kBAAkBv7F,aAAejgC,EAAMK,OAAO21I,aAAanvG,aACxE7mC,EAAMK,OAAO05H,aAAakc,aAG1Bj2I,EAAMK,OAAO05H,aAAamc,gBAGtC,CACA,GAAIngH,EAAK,CACL,IAAI9iC,GAAU8iC,EAAI41C,aAAe,IAAIt9F,cAAgB,YACrD2xB,EAAMK,OAAO0W,OAAO9jB,EAAQ8iC,GACH,cAArB93C,EAAK0tF,cACL1tF,EAAK1G,QAAS,EACdyoB,EAAMK,OAAOylB,QAAQzC,EAAAA,IAAuBplC,GAEpD,CACI+hB,EAAMg0I,UACNh0I,EAAMK,OAAO+tF,aA5EjB,CA8EJ,CACJ,EACAp+F,KAAKqQ,OAASA,EACdrQ,KAAK8yG,eAAiBA,EACtB9yG,KAAK+kJ,YAAc/kJ,KAAK8yG,eAAe0R,WAAW,eAClDxkH,KAAKqQ,OAAO81I,kBAAoBnmJ,KAAKqQ,OAAOqxG,gBAAgBpL,WAC5Dt2G,KAAKomJ,UAAYpmJ,KAAKqmJ,oBAClBrmJ,KAAKqQ,OAAOuqB,cAGX56B,KAAKqQ,OAAO2xI,4BAA+BhiJ,KAAKqQ,OAAOykG,sBACpD90G,KAAKqQ,OAAOolG,cAAcC,mBAC9B11G,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAgCrzB,KAAKsmJ,WAAYtmJ,MAEpEA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAwBrzB,KAAKo4I,gBAAiBp4I,MAC7DA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAiBrzB,KAAK0jI,kBAAmB1jI,MACxDA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAkCrzB,KAAKumJ,mBAAoBvmJ,MAC1EA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAA0BrzB,KAAKi5I,kBAAmBj5I,MACjEA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAgBrzB,KAAKwmJ,iBAAkBxmJ,MAC1D,CAspCA,OArpCA2jJ,EAActkJ,UAAU45I,kBAAoB,SAAUx9J,IAC9CA,EAAEgrK,OAA+B,YAArBhrK,EAAEirK,QAAQzjJ,QAA6C,cAArBxnB,EAAEirK,QAAQzjJ,OAIxDjD,KAAK2mJ,gBAAazrK,EAHlB8kB,KAAK2mJ,WAAalrK,EAAEirK,QAAQzjJ,MAKpC,EAMA0gJ,EAActkJ,UAAUunJ,YAAc,WAClC,IAAIjzC,EAAO3zG,KAAKqQ,OACZM,EAAM3Q,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,IAAMsrG,EAAAA,IAClD,GAAIltG,EAGA,OAFA3Q,KAAK+kJ,YAAY8B,WAAW7mJ,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,IAAMsrG,EAAAA,IAAmB,CAAEpmI,MAAM,SAC/FuoB,KAAK8mJ,SAASn2I,GAGlBA,EAAM3Q,KAAKqQ,OAAOO,cAAc,MAAO,CAAE31B,UAAW4iI,EAAAA,KACpD,IAAIkpC,EAAW/mJ,KAAKqQ,OAAOO,cAAc,MAAO,CAC5C31B,UAAW4iI,EAAAA,KAEf79G,KAAK+kJ,YAAY8B,WAAWE,EAAU,CAAEtvK,MAAM,IAC9Ck5B,EAAIQ,YAAY41I,GAChB/mJ,KAAK8mJ,SAASn2I,GACdgjG,EAAK3wH,QAAQmuB,YAAYR,EAC7B,EAMAgzI,EAActkJ,UAAU2nJ,YAAc,WAClC,IAAIrb,EAAa3rI,KAAKglJ,WAClBiC,EAAetb,EAAWp5H,cAAc,mBACxC20I,EAAevb,EAAWp5H,cAAc,oBACxCvS,KAAKqQ,OAAOykG,uBAAyBnnG,EAAAA,EAAAA,IAAkBs5I,KAAkBt5I,EAAAA,EAAAA,IAAkBu5I,MAC3FvxH,EAAAA,EAAAA,IAAOsxH,IACPtxH,EAAAA,EAAAA,IAAOuxH,IAEXvb,EAAWx6H,YAAYnR,KAAKmnJ,mBAAmB,mBAC/CnnJ,KAAKonJ,SAASzb,EAAWp5H,cAAc,IAAMsrG,EAAAA,KAC7C79G,KAAK+kJ,YAAY8B,WAAW7mJ,KAAKqnJ,WAAY,CACzCC,gBAAwD,aAAvCtnJ,KAAKqQ,OAAO0+H,kBAAkBz0J,OAEnD0lB,KAAKunJ,wBACDvnJ,KAAKqQ,OAAOm3I,YACZxnJ,KAAKqQ,OAAO4wH,mBAAmBrqG,UAAUzB,IAAI,kBAErD,EAQAwuH,EAActkJ,UAAU8nJ,mBAAqB,SAAUviK,GACnD,IAAImiK,EAAW/mJ,KAAKglJ,WAAW/sH,kBAC3Bj4B,KAAKqnJ,aACL1xH,EAAAA,EAAAA,IAAO31B,KAAKqnJ,YAEhB,IAAI/xF,EAAQyxF,EAASx0I,cAAc,IAAMsrG,EAAAA,IAAkBkpC,EAASx0I,cAAc,IAAMsrG,EAAAA,IACpF79G,KAAKqQ,OAAOO,cAAc,QAAS,CAC/B31B,UAAW4iI,EAAAA,GAAgBtnF,MAAO,CAC9BkxH,YAAa,SAAUj9F,KAAM,OAC7B5lE,GAAIob,KAAKqQ,OAAOrtB,QAAQ4B,GAAKA,KAOzC,OAJAob,KAAK0nJ,YAAY1nJ,KAAKqQ,OAAOszH,iBAAiBpxH,cAAcsrG,EAAAA,IAAmBzsG,WAAU,IACzFkkD,EAAMnkD,YAAYnR,KAAK2nJ,eACvBryF,EAAMnkD,YAAYnR,KAAKqQ,OAAOO,cAAcitG,EAAAA,GAAgB,CAAEtnF,MAAO,CAAEi0B,KAAM,eAC7Eu8F,EAAS51I,YAAYmkD,GACdyxF,CACX,EAQApD,EAActkJ,UAAUknJ,mBAAqB,SAAUt4J,GACnD,IAAI+hB,EAAQhQ,UACC,IAAT/R,IAAmBA,EAAO,CAAC,GAC/B,IAAI0lH,EAAO3zG,KAAKqQ,OAChB,GAAoC,IAAhCsjG,EAAKy/B,gBAAgBn7J,OAAzB,CAGA,IAAIoB,EAAa2mB,KAAK4nJ,oBAAsBj0C,EAAKy/B,gBAC7CyU,EAAgB7nJ,KAAKqQ,OAAOw3I,cAC5B/rD,EAAU6X,EAAK7X,WAAYnuF,EAAAA,EAAAA,IAAkBgmG,EAAKm0C,aAClDC,EAAOjsD,EAAU6X,EAAK/iG,cAAcitG,EAAAA,GAAgB,CAAEtnF,MAAO,CAAEi0B,KAAM,cAAkB5nD,SAASm1B,yBAC/F/3B,KAAKgoJ,qBACNhoJ,KAAKgoJ,oBAAqBr5I,EAAAA,EAAAA,IAAO,GAAIt1B,IAEzC,IACI4uK,EACAC,EAFAC,EAAUrsD,EAAU6X,EAAK/iG,cAAcitG,EAAAA,GAAgB,CAAEtnF,MAAO,CAAEi0B,KAAM,cAAkB5nD,SAASm1B,yBAGnG47E,EAAK7X,SAAW6X,EAAKm0C,cACrBG,EAAUF,EACVG,EAAaC,GAEjB,IACI1tC,EACA2tC,EAGAC,EALAj0C,EAAUT,EAAKM,aAGfq0C,EAAU30C,EAAKq3B,mBACflJ,EAAe9hI,KAAKqQ,OAAOyxH,eAE3B5lE,EAAM,IAAIykE,EAAAA,EAAY3gI,KAAK8yG,eAAgB,KAAM9yG,KAAKqQ,QACtDgwI,EAAmBrgJ,KAAKqQ,OAAO0kG,yBACP,mBAArB9mH,EAAK0tF,YACZg4B,EAAK5sF,OAAOsM,EAAAA,IAAyB,CAAC,GACtCrzB,KAAKwlJ,YAAc,GACnBxlJ,KAAK7lB,KAAO,GACZ6lB,KAAKykJ,eAAiB,GACtB,IAGI8D,EACAzoE,EAOA0oE,EAXAC,EAAQzoJ,KAAKglJ,WAAWzyI,cAAc,IAAMsrG,EAAAA,IAC5C6qC,EAAQ1oJ,KAAKglJ,WAAWzyI,cAAc,IAAMsrG,EAAAA,IAC5C8qC,EAAO3oJ,KAAKglJ,WAAWzyI,cAAc,IAAMsrG,EAAAA,KAG3CrJ,EAAAA,EAAAA,IAAgBb,IACZ,CAAC,UAAW,YAAa,YAAa,WAAY,aAAc,UAAW,OAAQ,UAClFhsG,MAAK,SAAUpqB,GAAS,OAAO0Q,EAAK0tF,cAAgBp+F,CAAO,KAC5DyiB,KAAK4oJ,cAIT5oJ,KAAKqQ,OAAOykG,sBAAwB90G,KAAKqQ,OAAOyxH,gBAC5C9hI,KAAKqQ,OAAO2xI,4BAAmD,kBAArB/zJ,EAAK0tF,aACL,MAAvC1tF,EAAK46J,YAAYC,aAAa/4G,OACjCy4G,EAAYxoJ,KAAKqQ,OAAOw3I,cAAczH,aAAa/mK,EAAY4U,GAC/DA,EAAK86J,sBAAuB,GAEhCP,EAAYxoJ,KAAKqQ,OAAOw3I,cAAczH,aAAa/mK,EAAY4U,KAG/Du6J,EAAYxoJ,KAAKgpJ,WAAWR,EAAWv6J,GAClC+R,KAAKskJ,WAActkJ,KAAKwkJ,gBACzBgE,EAAYxoJ,KAAKomJ,UAAUhG,aAAa/mK,EAAY4U,KAG5D+R,KAAK09I,cAAc8K,EAAWv6J,GAC9B+R,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAyB,CAAEgtH,iBAAkBA,EAAkBmI,UAAWA,EAAWv6J,KAAMA,IAC9G,IAAIyT,EAAM8mJ,EAAU,GAAGrmB,MAAM,GAAGr7I,MAC5Bg7I,IACAhiD,EAAY+nE,EAAcoB,SAAST,EAAWv6J,GAC9Cs6J,EAAOV,EAAcqB,SAASppE,IAElC,IAAIqpE,EAAenpJ,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,IAAsB/9B,IAAc+9B,EAAAA,GAEvF,IAA2B,mBAArB5vH,EAAK0tF,aAAqC37E,KAAKqQ,OAAO80I,uBAAuBC,cAAgBplJ,KAAKqQ,OAAOg7H,oBACxGrrI,KAAKqQ,OAAOg7H,mBAAmB70I,WAAavI,EAAK0hJ,WAAawZ,EAAc,CAE/E,IADA,IAAIC,EAAkB,GACbjkJ,EAAI,EAAGA,EAAInF,KAAKqQ,OAAOg7H,mBAAmB70I,SAASve,OAAQktB,IAChE,IAAK,IAAIqR,EAAI,EAAGA,EAAIxW,KAAKqQ,OAAOg7H,mBAAmB70I,SAAS2O,GAAGkkJ,UAAUpxK,OAAQu+B,KACzE7I,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAOg7H,mBAAmB70I,SAAS2O,GAAGkkJ,UAAU7yI,GAAGlG,aAC1E84I,EAAgB3pK,KAAKugB,KAAKqQ,OAAOg7H,mBAAmB70I,SAAS2O,IAKzEnF,KAAKqQ,OAAOwqH,gBAAgB,CAAC,YAAauuB,EAC9C,CACA,IAAKppJ,KAAKqQ,OAAOyrF,SAAW97F,KAAKqQ,OAAOu4C,SAAiC,mBAArB36D,EAAK0tF,aAAqC37E,KAAKqQ,OAAO80I,uBAAuBC,eAAiBn3J,EAAK0hJ,SAAU,CAC7J,IAAI2Z,EAAY,CACZtpJ,KAAKqQ,OAAOu4C,MAAQ,WAAa,iBAAkB,cAAe,iBAClE,kBAAmB,mBAAoB,sBAAuB,wBAEzC,mBAArB36D,EAAK0tF,aAAoC37E,KAAKqQ,OAAO80I,uBAAuBC,cAC5EkE,EAAY,CACRtpJ,KAAKqQ,OAAOu4C,MAAQ,WAAa,iBAAkB,sBAG3Dq8D,EAAAA,EAAAA,IAAuBjlH,KAAKqQ,OAAQi5I,EACxC,CACA,GAAItpJ,KAAKqQ,OAAO2xI,2BACI,IAAIuH,EAAAA,EAAgBvpJ,KAAK8yG,eAAgB9yG,KAAKqQ,QACpDm5I,mBAAmBhB,GAE5B1mB,IACD9hI,KAAKypJ,MAAQzpJ,KAAKqnJ,WAAW90I,cAAcsrG,EAAAA,KAE/C,IAAIp0G,EAAa,EACbigJ,GAAY,EAChB,IAAIl1C,EAAAA,EAAAA,IAAgBb,IAASA,EAAKg2C,OAAO1xK,OAAQ,CAC7C,IACIurD,GAAa71B,EAAAA,EAAAA,IAAkB1f,EAAK46J,YAAYe,UAC9Cj8I,EAAAA,EAAAA,IAAkB1f,EAAKu1C,WAA0C,EAA7Bv1C,EAAKu1C,UAAoB,IADJv1C,EAAK46J,YAAYe,QAAQhmH,IAExF,GAAkB,IAAdJ,EAAiB,CAIjB,IAHA,IAAIqmH,EAAYl2C,EAAKm2C,cACjBC,EAAQp2C,EAAKqB,aAAaz1B,SAAW,EACrC9gG,EAASI,OAAOC,KAAK+qK,GAAW/pK,KAAI,SAAUd,GAAO,OAAO6qK,EAAU,GAAK7qK,EAAM,IAC5E04B,EAAI,EAAGA,EAAIj5B,EAAOxG,OAAQy/B,IAC/B,GAAI8rB,EAAY/kD,EAAOS,SAASw4B,EAAEt8B,WAAY,KAAM,CAChD,IAAKuyB,EAAAA,EAAAA,IAAkB1f,EAAK46J,cAA+C,OAA/B56J,EAAK46J,YAAYphF,UAIxD,CACDh+D,EAAaiO,EAAIqyI,GACb/pJ,KAAKqQ,OAAOw3I,cAAcmC,WAAWtyI,IAAM1X,KAAKqQ,OAAOw3I,cAAcmC,WAAWtyI,EAAI,MACpFzpB,EAAK46J,YAAYoB,aAAe,CAACvyI,EAAGA,EAAI,IAE5C,KACJ,CATIjO,EAAaiO,EAAI,GAAMA,EAAI,GAAKqyI,EAAUryI,EAAIqyI,EAC9C,KASR,CAEAloJ,KAAKuvE,MAAM5tC,EAAYxjC,KAAKkqJ,aAAajyH,kBAAkBgc,eAC3Dj0C,KAAKkqJ,aAAajyH,kBAAkBgY,eAAiBhiD,EAAKk8J,YAC1DT,GAAY,EAEpB,CACJ,CACA,IAAIU,EAAiBz2C,EAAK6zC,aAAe7zC,EAAKmuB,gBAAkB9hI,KAAKqQ,OAAOykG,sBAChD,YAArB7mH,EAAK0tF,YACZ,GAAKg4B,EAAK6zC,YAAmC,kBAArBv5J,EAAK0tF,aAA0E,MAAvC1tF,EAAK46J,YAAYC,aAAa/4G,MAAiBq6G,EAAgB,CAC3H,IAAIC,EAASp8J,EAAK46J,YAAYoB,aAC1BxtE,EAAOxuF,EAAK46J,YAAYpsE,KAC5BxuF,EAAK46J,YAAYoB,aAAe,CAAC,EAAG,GAChCG,IACAn8J,EAAK46J,YAAYpsE,KAAO,GAE5B,IAAI52F,EAAOukK,EAAiBpqJ,KAAKgoJ,mBAAqB3uK,EAClDixK,EAAWtqJ,KAAKuqJ,WACfnK,aAAav6J,EAAMoI,GACxBq8J,EAASzjI,OAAO7mB,KAAKqQ,OAAOm3I,YAC5B,IAASriJ,EAAI,EAAGA,EAAInF,KAAKqQ,OAAOm3I,WAAYriJ,IACxCmlJ,EAASprK,SAASimB,EAAE/pB,WAAY,KAAK+mJ,MAAMt7G,OAAO,EAAG7mB,KAAKqQ,OAAO26H,oBACjEvwB,EAAKv+C,EAAI5wB,OAAOg/G,EAASprK,SAASimB,EAAE/pB,WAAY,KAAMg5H,GACtD+zC,EAAQh3I,YAAYspG,GAExBxsH,EAAK46J,YAAYoB,aAAeI,EAChCp8J,EAAK46J,YAAYpsE,KAAOA,EACpB2tE,GAA4C,IAA1Bn8J,EAAK46J,YAAYpsE,MACnC+rE,EAAU3hI,OAAO,EAAG7mB,KAAKqQ,OAAOm3I,WAExC,CACAxnJ,KAAKwqJ,wBAAwBrC,EAASK,EAAWtsF,EAAKjuE,EAAM5U,EAAY+6H,GACpEp0G,KAAKqQ,OAAOolG,cAAcC,oBAAsB11G,KAAKwkJ,eAAiBxkJ,KAAKqQ,OAAOolG,cAAcrB,QAAQn8H,UACvG+nB,KAAKqQ,OAAOykG,qBAAuB90G,KAAKqQ,OAAOo6I,eAC5CzqJ,KAAKqQ,OAAOw3I,eAAe6C,WAAW1qJ,KAAKqQ,OAAO2kG,aAAaC,aAAe,IAElFj1G,KAAKqQ,OAAO0kG,yBAA2B/0G,KAAKqQ,OAAOolG,cAAcC,mBAA0C,WAArBznH,EAAK0tF,cAC3F37E,KAAKmkJ,YAAc,IA8GvB,IA5GA,IAAIp1I,EAAU,SAAU5J,EAAG8L,GAKvB,GAJA48B,EAAO1zD,KAAKsF,KAAK+oK,EAAUtpK,SAASimB,EAAE/pB,WAAY,MAC9C0mJ,GACAj0F,EAAO42G,eAAehlK,KAAK+oK,EAAUtpK,SAASimB,EAAE/pB,WAAY,MAE5DyyD,EAAOx9B,OAAOolG,cAAcC,oBAAsB7nE,EAAO22G,eAAiB32G,EAAOx9B,OAAOolG,cAAcrB,QAAQn8H,UAC7G41D,EAAOx9B,OAAOykG,qBAAuBjnE,EAAOx9B,OAAOo6I,eAChD58G,EAAOx9B,OAAOw3I,eAAe6C,WAAW78G,EAAOx9B,OAAO2kG,aAAaC,aAAax1H,KAAK+oK,EAAUtpK,SAASimB,EAAE/pB,WAAY,MAC1HyyD,EAAOo3G,mBAAmBuD,EAAUtpK,SAASimB,EAAE/pB,WAAY,KAAM+pB,IAC7DwI,EAAAA,EAAAA,IAAkB66I,EAAUtpK,SAASimB,EAAE/pB,WAAY,KAAKomK,SACxD,MAAO,WAIf,GADA3zG,EAAO88G,uBAAuB18J,EAAMu6J,EAAUtpK,SAASimB,EAAE/pB,WAAY,KAAM0kG,IACvE00B,EAAAA,EAAAA,IAAgBb,IAAS1lH,EAAK46J,aAAe56J,EAAK46J,YAAYoB,cAC1Dp8G,EAAO23G,YAAYvtK,QAAWgW,EAAK46J,YAAYoB,aAAahyK,OAAS41D,EAAOx9B,OAAOw3I,cAAc+C,gBAClGlB,EAEH,OADA77G,EAAOx9B,OAAO+iI,gBAAyB,QAAIvlG,EAAO1zD,KAAK2F,KAAI,SAAU43B,GAAK,OAAOA,EAAE7xB,IAAM,IAClF,QAEX,GAAK8tH,EAAKm0C,YAcL,CACD,IAAI+C,EAAgBl3C,EAAK3wH,QAAQ4B,GAAK,cAClC8xC,OAAW,EACf,GAAIi9E,EAAK7X,QAAS,CACd,IAAIjD,EAAW8a,EAAK6zC,YAAcriJ,EAAIwuG,EAAK6zC,WACvC54I,GAASD,EAAAA,EAAAA,IAAO,CAAE7nB,MAAOqe,GAAK9rB,EAAW6F,SAASimB,EAAE/pB,WAAY,MAEpE,GADAu4H,EAAKm3C,gBAALn3C,CAAsB/kG,EAAQ+kG,EAAM,cAAek3C,EAAe,KAAM,KAAMhyD,EAAWsvD,EAAUJ,GAC/Fp0C,EAAKo3C,mBAAoB,CAEzB,IAAIC,EAAYn9G,EAuBhB,OAtBAm9G,EAAU36I,OAAO8qG,iBAAgB,WACzBxH,EAAK6zC,YAAcriJ,EAAIwuG,EAAK6zC,WAC5B/sC,EAAKytC,EAAWpkG,WAAW5kE,SAASimB,EAAE/pB,WAAY,KAGlDitK,EAAYJ,EAAQnkG,WAAW5kE,SAASimB,EAAE/pB,WAAY,KAE1D,IAAI2qD,EAAM,CAAElgD,KAAM2iK,EAAUtpK,SAASimB,EAAE/pB,WAAY,KAAKyK,KACpDq2E,IAAKmsF,GAAwB5tC,GACjCuwC,EAAU36I,OAAOylB,QAAQzC,EAAAA,IAAqB0S,IAC1CyiH,EAAUtpK,SAASimB,EAAE/pB,WAAY,KAAKkmK,WAAc0J,EAAU36I,OAAOykG,sBACrEk2C,EAAU36I,OAAOolG,cAAcC,oBAC/Bs1C,EAAUxF,YAAY/lK,KAAKg7H,GAE/BuwC,EAAUjG,YAAY8B,WAAWmE,EAAU3D,WAAY,CACnD4D,SAAUt3C,EAAKM,aAAah8H,OAAOmD,aAEnC+pB,IAAMqjJ,EAAUvwK,OAAS,IACzBgwK,EAAU,KACVC,EAAa,KAErB,IACO,UACX,CACJ,MAEIxxH,EAAWi9E,EAAKm3C,gBAALn3C,EAAsBhlG,EAAAA,EAAAA,IAAO,CAAE7nB,MAAOqe,GAAK9rB,EAAW6F,SAASimB,EAAE/pB,WAAY,MAAOu4H,EAAM,cAAek3C,OAAe3vK,OAAWA,OAAWA,EAAW2yD,EAAOx9B,OAAa,MAE5L,GAAKsjG,EAAK7X,SAAmC,UAAxBplE,EAAS,GAAGP,QAezBw9E,EAAK6zC,YAAcriJ,EAAIwuG,EAAK6zC,WAC5B/sC,EAAM9G,EAAK7X,QAA8CqsD,EAAQhzB,kBAA5C/Z,EAAAA,EAAAA,IAAe+sC,EAASzxH,IAIxCi9E,EAAK7X,UACN2e,GAAKW,EAAAA,EAAAA,IAAe2sC,EAAMrxH,IAE9B2xH,EAAY10C,EAAK7X,QAAUisD,EAAK5yB,iBAAmB1a,EAAG0a,sBAvBR,CAClD,IAAK,IAAI3+G,EAAI,EAAGA,EAAIkgB,EAASz+C,OAAQu+B,IAAK,CACtC,IAAI00I,EAAuE,OAAhEx0H,EAASx3C,SAASs3B,EAAEp7B,WAAY,KAAKsvE,SAASrsE,eACrD6sK,GAASx0H,EAASx3C,SAASs3B,EAAEp7B,WAAY,KAAK01B,kBAAoB4lB,EAASx3C,SAASs3B,EAAEp7B,WAAY,KAAK01B,iBAAiB,MAAM74B,UAC9HwiI,EAAKywC,EAAOx0H,EAASx3C,SAASs3B,EAAEp7B,WAAY,KAAOs7C,EAASx3C,SAASs3B,EAAEp7B,WAAY,KAAKm3B,cAAc,MAE9G,CACIohG,EAAK6zC,YAAcriJ,EAAIwuG,EAAK6zC,WAC5BW,EAAQh3I,YAAYspG,GAGpBstC,EAAK52I,YAAYspG,EAEzB,CAaA,IAAI10E,EAAM,CAAElgD,KAAM2iK,EAAUtpK,SAASimB,EAAE/pB,WAAY,KAAKyK,KAAMq2E,IAAKmsF,GAAwB5tC,GAC3F5sE,EAAOx9B,OAAOylB,QAAQzC,EAAAA,IAAqB0S,EAC/C,KAhFuB,CACnB00E,EAAKv+C,EAAI5wB,OAAOk9G,EAAUtpK,SAASimB,EAAE/pB,WAAY,KAAMg5H,GACvD,IAAI+2C,EAAct9G,EAAOu9G,yBAAyBn9J,GAC9C0lH,EAAK6zC,YAAcriJ,EAAIwuG,EAAK6zC,aAAenH,GAAyC,kBAArBpyJ,EAAK0tF,aAAmCwvE,GACpGt9G,EAAOw9G,gCAAgCp9J,GAC1Ck6J,EAAQh3I,YAAYspG,GAGpBstC,EAAK52I,YAAYspG,GAEjB+tC,EAAUtpK,SAASimB,EAAE/pB,WAAY,KAAKymG,UACtC8xB,EAAK5sF,OAAOsM,EAAAA,IAAwBonF,EAAG0nB,MAAMxuB,EAAK8B,cAAcrB,QAAQn8H,QAEhF,EAoEIuwK,EAAUtpK,SAASimB,EAAE/pB,WAAY,KAAKkmK,WAAczzG,EAAOx9B,OAAOykG,sBAClEjnE,EAAOx9B,OAAOolG,cAAcC,oBAC5B7nE,EAAO23G,YAAY/lK,KAAKg7H,GAE5B5sE,EAAOk3G,YAAY8B,WAAWh5G,EAAOw5G,WAAY,CAAE4D,SAAUt3C,EAAKM,aAAah8H,OAAOmD,YAC1F,EACIyyD,EAAS7tC,KACYiR,GAAhB9L,EAAIsE,EAAkB++I,EAAUvwK,QAAQktB,EAAI8L,EAAK9L,IAAK,CAE3D,GAAgB,UADF4J,EAAQ5J,GAElB,KACR,CACA,IAAI21G,EAAenH,EAAKoH,eAAiBpH,EAAKoH,cAAcC,eAAiBrH,EAAKoH,cAAcC,cAAclf,QAmB9G,IAlBK6X,EAAK7X,UAAWgf,GAAkBnH,EAAKo3C,oBACxCp3C,EAAKwH,kBAELn7G,KAAKqQ,OAAO0kG,yBAA2B/0G,KAAKqQ,OAAOolG,cAAcC,oBACjE11G,KAAKqQ,OAAOw3I,cAAc6C,WAAW1qJ,KAAKqQ,OAAO2kG,aAAaC,aAC1Dj1G,KAAKqQ,OAAOw3I,cAA0B,WAAE7nJ,KAAKqQ,OAAO2kG,aAAaC,cAErEj1G,KAAKqQ,OAAOolG,cAAcC,oBAAsB11G,KAAKwkJ,eAAiBxkJ,KAAKqQ,OAAOolG,cAAcrB,QAAQn8H,QACxG+nB,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAiC,CAChDl5C,MAAO6lB,KAAKqQ,OAAOykG,qBAAuB90G,KAAKqQ,OAAOo6I,eAClDzqJ,KAAKqQ,OAAOw3I,eAAe6C,WAAW1qJ,KAAKqQ,OAAO2kG,aAAaC,eAGvE6sB,GACA+lB,EAAcyD,UAAUxrE,GAE5B6zB,EAAK43C,gBACLvrJ,KAAKqQ,OAAO0W,OAAO,qBAAsB,CAAE40D,YAAa,gBACnDg4B,EAAK6zC,YAAmC,kBAArBv5J,EAAK0tF,cAAoC0kE,GAAoBrgJ,KAAKqrJ,gCAAgCp9J,IAC7F,kBAArBA,EAAK0tF,aAAmC1tF,EAAK46J,YAAYC,cAAuD,MAAvC76J,EAAK46J,YAAYC,aAAa/4G,KAE3G,GADAq4G,EAAWtmB,EAAe+lB,EAAc2D,gBAAgB1rE,GAAa6zB,EAAKgwB,iBAAiBpxH,cAAcsrG,EAAAA,IACrG/hB,EAAS,CACT,IAAI2vD,EAAcrD,EAASnvG,eAC3BtjB,EAAAA,EAAAA,IAAOyyH,GACPqD,EAAYt6I,YAAYg3I,EAC5B,MAEIC,EAAS72I,UAAY,GACrB62I,EAASj3I,YAAYg3I,IAGxBx0C,EAAKmB,sBAAwBnB,EAAK6zC,YAAsB,IAAR9lJ,GAAainJ,EAAK10G,eAAiB36D,OAAOq6H,EAAK3/D,UAChG20G,EAAKpxH,MAAMyc,OAAU20G,EAAK10G,aAAem0G,EAASn0G,aAAgB,MAEtEhmD,EAAK9T,KAAO6lB,KAAK7lB,KAAKkjB,MAAM,GACxBykI,GACA+lB,EAAc6D,YAAYz9J,EAAM6xF,GAEpC9/E,KAAKlZ,MAAQ4a,GACbiqJ,EAAAA,EAAAA,KAAkB,WACd37I,EAAMK,OAAO0W,OAAOsM,EAAAA,IAAyBplC,GAC7C,IAAI29J,EAAY57I,EAAMK,OAAOykG,sBAAwB9kG,EAAMK,OAAOyxH,eAmBlE,GAlBK9xH,EAAMK,OAAOykG,sBAAyBurC,IACnCrwI,EAAMK,OAAOyxH,iBACbnsG,EAAAA,EAAAA,IAAOkyH,EAAcqB,SAASppE,IAC9ByoE,EAAOv4I,EAAMK,OAAOO,cAAcitG,EAAAA,GAAgB,CAAEtnF,MAAO,CAAEi0B,KAAM,gBAG9DmpD,EAAK7X,UACN9rF,EAAMy5I,MAAMl4I,UAAY,KAEvB5D,EAAAA,EAAAA,IAAkBqC,EAAMy5I,MAAMxwG,gBAI/BtjB,EAAAA,EAAAA,IAAOg+E,EAAK63B,kBAAkBj5H,cAAcsrG,EAAAA,MAH5CloF,EAAAA,EAAAA,IAAO3lB,EAAMy5I,OAKjBz5I,EAAMy5I,MAAQz5I,EAAMK,OAAOO,cAAcitG,EAAAA,GAAgB,CAAEtnF,MAAO,CAAEi0B,KAAM,iBAG9Es3E,GAAiB8pB,GAAc57I,EAAMK,OAAO0kG,wBAO5C,GAHIpB,EAAKm0C,cACL/jG,EAAAA,EAAAA,IAAqB4vD,EAAK3wH,QAAQ4B,GAAK,cAAe,cAAe+uH,GAErEi4C,EAAW,CACX,GAAI39J,EAAKw3J,yBAA0B,CAC/B,IAAIoG,EAASl4C,EAAKqyC,aAAazzI,cAAc,2BAA2BA,cAAcsrG,EAAAA,IACtF7tG,EAAM87I,cAAcD,EAAQ9D,EAAM95J,EACtC,MACUA,EAAK86J,sBAIX/4I,EAAM87I,cAAcpD,EAAMn2I,cAAcsrG,EAAAA,IAAiBkqC,EAAM95J,GAC/DA,EAAK86J,sBAAuB,GAJ5B/4I,EAAM87I,cAAcrD,EAAMl2I,cAAcsrG,EAAAA,IAAiBkqC,EAAM95J,GAM9D+hB,EAAMK,OAAO26H,oBACd6c,EAAckE,sBAAsB99J,EAAM6xF,EAElD,OAESnyE,EAAAA,EAAAA,IAAkBqC,EAAMK,OAAO8kG,uBAAyBnlG,EAAMK,OAAO0kG,yBACtE/kG,EAAMs0I,WAAY,EAClBt0I,EAAMK,OAAO0W,OAAOsM,EAAAA,IAA2B,CAAEplC,KAAMA,IACvD+hB,EAAMK,OAAO0W,OAAOsM,EAAAA,IAA8B,CAC9Co2H,MAAOlB,GAAcv4I,EAAMy5I,MAAO1B,KAAMA,EAAM95J,KAAMA,EAAM9T,KAAM61B,EAAM71B,KACtEqrK,YAAax1I,EAAMw1I,YAAarB,YAAan0I,EAAMm0I,YACnDrkE,UAAWA,KAEVwoE,GAAWxmB,KACPnuB,EAAK4sB,kBAAoB1iB,EAAAA,IACtB/9B,IAAc+9B,EAAAA,IAAuB/9B,IAAc+9B,EAAAA,MACnDlK,EAAK4sB,kBAAoB1iB,EAAAA,IACrB/9B,IAAc+9B,EAAAA,IAAqC,YAAd/9B,IAC7C9vE,EAAMu2I,oBAAmB53I,EAAAA,EAAAA,IAAO,CAAC,EAAG1gB,OAK5C+hB,EAAMw0I,eAAgB,EACtBx0I,EAAM87I,cAAc97I,EAAMy5I,MAAO1B,EAAM95J,SA1C/C+hB,EAAM87I,cAAcvD,EAAMR,EAAM95J,EAAM6xF,GA8CtCwoE,GACAT,EAAckE,sBAAsB99J,EAAM6xF,GAE9CioE,EAAO,IACX,GAAG/nJ,KAAK0kJ,aAAY/1I,EAAAA,EAAAA,IAAO,CAAC,EAAG1gB,IA/X/B,CAgYJ,EACA01J,EAActkJ,UAAUupJ,YAAc,WAClC5oJ,KAAKqQ,OAAOs5I,OAAS,GACrB3pJ,KAAKqQ,OAAO27I,MAAQ,EACxB,EAEArI,EAActkJ,UAAUysJ,cAAgB,SAAUrC,EAAO1B,EAAM95J,EAAM6xF,GASjE,GARc9/E,KAAKqQ,OAAOyrF,WAAYnuF,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAOy3I,aAEhE9nJ,KAAKqnJ,WAAWl2I,YAAY42I,IAG5B0B,EAAMt4I,YAAY42I,GAClB/nJ,KAAKqnJ,WAAWl2I,YAAYs4I,IAEK,aAAjCzpJ,KAAKqQ,OAAOmgI,kBAAmCxwI,KAAKqQ,OAAO01I,gBAA4D,WAA1C/lJ,KAAKqQ,OAAO47I,iBAAiBC,UAC7D,SAA1ClsJ,KAAKqQ,OAAO47I,iBAAiBC,UAEhC,IADA,IAAI/pB,EAAQsnB,EAAM34I,iBAAiB,MAC1B3L,EAAI,EAAGA,EAAIg9H,EAAMlqJ,OAAQktB,IAAK,CACnC,IAAIgnJ,EAAmBlmI,WAAWrjB,SAASC,YAAYqhC,iBAAiBi+F,EAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAM,YAAY+oD,iBAAiB,WAEpIgoH,EADahqB,EAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAK64D,eAE/CkuF,EAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAKm8C,MAAMyc,OAASm4G,EAAmB,KACpEhqB,EAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAKm8C,MAAM60H,UAAY,cAE5D,CAER,EACAzI,EAActkJ,UAAU4lJ,mBAAqB,SAAU/oF,EAAKp1E,GACpDkZ,KAAKqQ,OAAOolG,cAAcC,oBAAsB11G,KAAKwkJ,eAAiBxkJ,KAAKqQ,OAAOolG,cAAcrB,QAAQn8H,SACvG+nB,KAAKqQ,OAAOykG,qBAAuB90G,KAAKqQ,OAAOo6I,eAC5CzqJ,KAAKqQ,OAAOw3I,eAAewE,aAAanwF,EAAKp1E,EAEzD,EACA68J,EAActkJ,UAAUq+I,cAAgB,SAAU73J,EAAMoI,IAC/C+R,KAAKwkJ,eAAiBxkJ,KAAKqQ,OAAOolG,cAAcC,mBACjD11G,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAsB,CAAEplC,KAAMA,EAAMpI,KAAMA,GAErE,EACA89J,EAActkJ,UAAU+rJ,yBAA2B,SAAUn9J,GACzD,QAAU+R,KAAKqQ,OAAOykG,uBACO,YAArB7mH,EAAK0tF,aAAkD,YAArB1tF,EAAK0tF,cAAgC37E,KAAKqQ,OAAO80I,uBAAuBC,aAC3GplJ,KAAKqQ,OAAOm3I,YAA+D,WAAjDxnJ,KAAKqQ,OAAO8kG,qBAAqBx5B,aAClB,IAAzC37E,KAAKqQ,OAAO2kG,aAAaC,YACpC,EACA0uC,EAActkJ,UAAUgsJ,gCAAkC,SAAUp9J,GAChE,QAAS+R,KAAKqQ,OAAOykG,sBAA6C,WAArB7mH,EAAK0tF,YACtD,EACAgoE,EAActkJ,UAAU2pJ,WAAa,SAAUR,EAAWv6J,GACtD,GAAI+R,KAAKqQ,OAAO80I,uBAAuBC,aAAoC,mBAArBn3J,EAAK0tF,YAAkC,CACzF,IAAI70F,EAAQmH,EAAK0hJ,SAAW,EAAI,EAC5B2c,EAAatsJ,KAAKqQ,OAAOyxH,eAM7B,GALA9hI,KAAKskJ,YAAa32I,EAAAA,EAAAA,IAAkB3N,KAAKkkJ,cAAclkJ,KAAKqQ,OAAO2kG,aAAaC,cAC5Eq3C,KAAe3+I,EAAAA,EAAAA,IAAkB3N,KAAKkkJ,cAAclkJ,KAAKqQ,OAAO2kG,aAAaC,gBAC7Ej1G,KAAKskJ,UACwD,IAD5CtkJ,KAAKkkJ,cAAclkJ,KAAKqQ,OAAO2kG,aAC3CC,aAAa/1H,SAAS4H,EAAM1L,WAAY,KAAKnD,QAElD+nB,KAAKskJ,UAAW,CAChB,IAAIz+J,EAAQymK,EACNtsJ,KAAKkkJ,cAAclkJ,KAAKqQ,OAAO2kG,aAAaC,aAAa/1H,SAAS4H,EAAM1L,WAAY,KADjE4kB,KAAKkkJ,cAAclkJ,KAAKqQ,OAAO2kG,aAAaC,aAErEuzC,EAAqD,IAAzCxoJ,KAAKqQ,OAAO2kG,aAAaC,YAAoBpvH,EAAKwX,MAAM2C,KAAKqQ,OAAOm3I,YAAc3hK,CAClG,CACA,OAAO2iK,CACX,CACA,OAAIxoJ,KAAKqQ,OAAOolG,cAAcC,mBAAqB11G,KAAKqQ,OAAOolG,cAAcrB,QAAQn8H,SAAgC,WAArBgW,EAAK0tF,aACzE,gBAArB1tF,EAAK0tF,aAAsD,YAArB1tF,EAAK0tF,aAAkD,kBAArB1tF,EAAK0tF,eAC5E37E,KAAKqQ,OAAOykG,qBAAuB90G,KAAKqQ,OAAOo6I,eAC/CzqJ,KAAKqQ,OAAOw3I,eAAe0E,gBAAgBvsJ,KAAKqQ,OAAO2kG,aAAaC,cACnEj1G,KAAKqQ,OAAOykG,uBACb90G,KAAKwkJ,eAAgB,GAElBxkJ,KAAKqQ,OAAOykG,qBAAuB90G,KAAKqQ,OAAOsxI,gBAClD3hJ,KAAKqQ,OAAOw3I,cAAc2E,iBAAsC,YAArBv+J,EAAK0tF,cAEjD,IACX,EACAgoE,EAActkJ,UAAUsrJ,uBAAyB,SAAU18J,EAAMpI,EAAMi6F,GACnE,IAAIwsE,EAAatsJ,KAAKqQ,OAAOyxH,eACzB9hI,KAAKqQ,OAAO0kG,0BAA4B/0G,KAAKqQ,OAAO80I,uBAAuBC,cACvEkH,EACIxsE,IAAc+9B,EAAAA,IAAwD,UAAhC79G,KAAKqQ,OAAOkwH,iBAA+BzgD,IAAc+9B,EAAAA,GAC/F79G,KAAKokJ,kBAAkB3kK,KAAKoG,GAET,YAAdi6F,EACL9/E,KAAKmkJ,YAAY1kK,KAAKoG,GAGtBma,KAAKqkJ,gBAAgB5kK,KAAKoG,GAGxBma,KAAKqQ,OAAO80I,uBAAuBC,aACzCplJ,KAAKmkJ,YAAY1kK,KAAKoG,GAGlC,EACA89J,EAActkJ,UAAUotJ,+BAAiC,SAAUC,GAC/D,IAAI7mK,EAAO,GACX,GAAIma,KAAKqQ,OAAO80I,uBAAuBC,YAAa,CAChD,IAAKvmK,OAAOC,KAAKkhB,KAAKkkJ,eAAejsK,OACjC,MAAO,GAEX,IAAIq0K,EAAatsJ,KAAKqQ,OAAOyxH,eACzB3nJ,EAAO6lB,KAAKqQ,OAAOs8I,UACnB7lK,EAAQ5H,SAAS/E,EAAK6lB,KAAKqQ,OAAOm3I,YAAYpmH,aAAay8E,EAAAA,IAAwB,IACnF/2G,EAAQjF,KAAKyf,MAAMx6B,EAAQ,GAAKkZ,KAAKqQ,OAAO2kG,aAAaz1B,UAC7Dz4F,EAAQ5H,SAAS/E,EAAKA,EAAKlC,OAAS,GAAGmpD,aAAay8E,EAAAA,IAAwB,IAC5E,IAAI+uC,EAAO/qJ,KAAKyf,MAAMx6B,GAAS3M,EAAKlC,OAAS,EAAI,IAAM+nB,KAAKqQ,OAAO2kG,aAAaz1B,UAChF,GAAI+sE,EAAY,CAEZ,IADA,IAAI5qJ,EAAMgrJ,EAAW,EAAI,EAChBvnJ,EAAI2B,EAAO3B,GAAKynJ,EAAMznJ,IAC3Btf,EAAQA,EAAK5N,OACP4N,EAAKlF,OAAOqf,KAAKkkJ,cAAchlK,SAASimB,EAAE/pB,WAAY,KAAK8D,SAASwiB,EAAItmB,WAAY,MADpE4kB,KAAKkkJ,cAAchlK,SAASimB,EAAE/pB,WAAY,KAAK8D,SAASwiB,EAAItmB,WAAY,KAG9F4kB,KAAKqQ,OAAOm3I,YAAcxnJ,KAAKqQ,OAAO2kG,aAAaC,YAAc,IACjEpvH,EAAOma,KAAKkkJ,cAAc,GAAGhlK,SAASwiB,EAAItmB,WAAY,KACjDiiB,MAAM,EAAG2C,KAAKqQ,OAAOm3I,YAAY7mK,OAAOkF,GAErD,KACK,CACD,IAASsf,EAAI2B,EAAO3B,GAAKynJ,EAAMznJ,IAC3Btf,EAAQA,EAAK5N,OACP4N,EAAKlF,OAAOqf,KAAKkkJ,cAAchlK,SAASimB,EAAE/pB,WAAY,MADtC4kB,KAAKkkJ,cAAchlK,SAASimB,EAAE/pB,WAAY,KAGhE4kB,KAAKqQ,OAAOm3I,YAAcxnJ,KAAKqQ,OAAO2kG,aAAaC,YAAc,IACjEpvH,EAAOma,KAAKkkJ,cAAc,GAAG7mJ,MAAM,EAAG2C,KAAKqQ,OAAOm3I,YAAY7mK,OAAOkF,GAE7E,CACJ,CACA,OAAOA,CACX,EACA89J,EAActkJ,UAAUwtJ,mBAAqB,SAAU5+J,GACnD,OAAO+R,KAAKqQ,OAAOw3I,cAAciF,uBAAuB7+J,EAC5D,EACA01J,EAActkJ,UAAU0tJ,iBAAmB,SAAU9+J,GACjD,OAAO+R,KAAKqQ,OAAOw3I,cAAciF,uBAAuB7+J,EAC5D,EACA01J,EAActkJ,UAAUmrJ,wBAA0B,SAAUrC,EAASK,EAAWtsF,EAAKjuE,EAAM5U,EAAY+6H,GACnG,GAAIp0G,KAAKqQ,OAAOm3I,YAAcxnJ,KAAKqQ,OAAOykG,uBACb,YAArB7mH,EAAK0tF,aAAkD,YAArB1tF,EAAK0tF,aAA4B,CACvE,IAAI8+B,OAAK,EACLuyC,EAAW,GACXhtJ,KAAKqQ,OAAOyxH,gBACZ9hI,KAAK4nJ,mBAAqBvuK,EAC1B2zK,EAAWhtJ,KAAK6sJ,mBAAmB5+J,IAGnC++J,EAAWhtJ,KAAK+sJ,iBAAiB9+J,GAErC,IAAK,IAAIkX,EAAI,EAAGA,EAAI6nJ,EAAS/0K,OAAQktB,IACjCs1G,EAAKv+C,EAAI5wB,OAAO0hH,EAAS9tK,SAASimB,EAAE/pB,WAAY,KAAMg5H,GACtD+zC,EAAQh3I,YAAYspG,GAEM,IAA1BxsH,EAAK46J,YAAYpsE,MACjB+rE,EAAU3hI,OAAO,EAAG7mB,KAAKqQ,OAAOm3I,YAEhCv5J,EAAK86J,uBACL/oJ,KAAKqQ,OAAO+iI,gBAAkBpzI,KAAK4nJ,mBACnC5nJ,KAAK4nJ,mBAAqB,KAElC,CACJ,EACAjE,EAActkJ,UAAU4tJ,gBAAkB,WACtC,IAAI9yK,EAAO,GACPmyK,EAAatsJ,KAAKqQ,OAAOyxH,eAC7B,GAAI9hI,KAAKqQ,OAAO0kG,wBACZ,GAAI/0G,KAAKqQ,OAAO80I,uBAAuBC,YAEnC,IADA,IAAItmK,EAAOD,OAAOC,KAAKkhB,KAAKkkJ,eACnB/+I,EAAI,EAAGA,EAAIrmB,EAAK7G,OAAQktB,IAC7BhrB,EAAQmyK,EAAiFnyK,EAAKwG,OAAOqf,KAAKkkJ,cAAcplK,EAAKI,SAASimB,EAAE/pB,WAAY,MAAM,IAArIjB,EAAKwG,OAAOqf,KAAKkkJ,cAAcplK,EAAKI,SAASimB,EAAE/pB,WAAY,YAIpFjB,EAAOmyK,EAAatsJ,KAAKokJ,kBAAoBpkJ,KAAKmkJ,YAG1D,OAAOhqK,CACX,EACAwpK,EAActkJ,UAAU6tJ,uBAAyB,WAC7C,IAAIC,EAAoBntJ,KAAKysJ,iCAG7B,OAFmBzsJ,KAAKqQ,OAAO0kG,wBAA0Bo4C,EAAkBl1K,OAASk1K,EAC9EntJ,KAAKmkJ,YAAc,EAE7B,EAMAR,EAActkJ,UAAU2lJ,SAAW,WAC/B,OAAOhlJ,KAAKkqJ,YAChB,EAOAvG,EAActkJ,UAAUynJ,SAAW,SAAUsG,GACzCptJ,KAAKkqJ,aAAekD,CACxB,EAMAzJ,EAActkJ,UAAUgoJ,SAAW,WAC/B,OAAOrnJ,KAAKqtJ,YAChB,EAOA1J,EAActkJ,UAAU+nJ,SAAW,SAAU9xF,GACzCt1D,KAAKqtJ,aAAe/3F,CACxB,EAMAquF,EAActkJ,UAAUstJ,QAAU,WAC9B,IAAIW,EAAettJ,KAAKitJ,kBACxB,OAAOK,EAAar1K,OAASq1K,EAAettJ,KAAKqQ,OAAO26H,mBAAqBhrI,KAAK4jJ,WAAa5jJ,KAAK7lB,IACxG,EAMAwpK,EAActkJ,UAAUkuJ,eAAiB,WACrC,IAAID,EAAettJ,KAAKktJ,yBACxB,OAAOI,EAAar1K,OAASq1K,EAAettJ,KAAK6jJ,WACrD,EAMAF,EAActkJ,UAAUmuJ,eAAiB,WACrC,OAAOxtJ,KAAKqQ,OAAO26H,mBAAqBhrI,KAAK8jJ,kBAAoB9jJ,KAAKwlJ,WAC1E,EAMA7B,EAActkJ,UAAUouJ,sBAAwB,WAC5C,OAAOztJ,KAAKwlJ,WAChB,EAOA7B,EAActkJ,UAAUquJ,eAAiB,SAAUh3H,GAC/C12B,KAAKwlJ,YAAc9uH,CACvB,EAMAitH,EAActkJ,UAAUsoJ,YAAc,WAClC,OAAO3nJ,KAAK2tJ,QAChB,EAOAhK,EAActkJ,UAAUqoJ,YAAc,SAAUrqB,GAI5C,OAHK1vH,EAAAA,EAAAA,IAAkB0vH,KACnBA,EAASz4I,GAAK,WAAay4I,EAASz4I,IAEjCob,KAAK2tJ,SAAWtwB,CAC3B,EAOAsmB,EAActkJ,UAAUinJ,WAAa,SAAUlyC,GAC3C,IA6BIw5C,EA7BAj6C,EAAO3zG,KAAKqQ,OACZyxH,EAAe9hI,KAAKqQ,OAAOyxH,eAC3BwmB,EAAU30C,EAAKq3B,mBACf7wJ,EAAO,GACX,GAAI2nJ,EAAc,CACd,IAAI+rB,EAAQ7tJ,KAAK4jJ,WACbkK,EAAQ9tJ,KAAK6jJ,YACbkK,EAASF,EAAM51K,OACf+1K,OAAU,EACVC,EAAY,GACZt6C,EAAK4sB,kBAAoB1iB,EAAAA,KACzBowC,EAAYt6C,EAAK+xC,4BAErB,IAAK,IAAIvgJ,EAAI,EAAG+2D,OAAM,EAAQ/2D,EAAI4oJ,EAAQ5oJ,IAAK,CAC3C6oJ,EAAUF,EAAM5uK,SAASimB,EAAE/pB,WAAY,KAAK+mJ,MAAMlqJ,OAClD,IAAIi2K,EAAWD,EAAUh2K,OAASg2K,EAAU/uK,SAASimB,EAAE/pB,WAAY,KAAK+mJ,MAAMlqJ,OAAS,EACvFikF,EAAM2xF,EAAM3uK,SAASimB,EAAE/pB,WAAY,KAAK8zB,QACxC,IAAK,IAAIsH,EAAI,EAAGA,EAAIw3I,EAASx3I,IACzB0lD,EAAIimE,MAAM1iJ,KAAKquK,EAAM5uK,SAASimB,EAAE/pB,WAAY,KAAK+mJ,MAAMjjJ,SAASs3B,EAAEp7B,WAAY,MAElF,IAAK,IAAIguD,EAAI,EAAGA,EAAI8kH,EAAU9kH,IAC1B8yB,EAAIimE,MAAM1iJ,KAAKwuK,EAAU/uK,SAASimB,EAAE/pB,WAAY,KAAK+mJ,MAAMjjJ,SAASkqD,EAAEhuD,WAAY,MAEtFjB,EAAKsF,KAAKy8E,EACd,CACJ,MAEI/hF,EAAO6lB,KAAK2sJ,UAGhBxyK,EAAKwtB,MAAK,SAAU9gB,GAElB,OAF2BA,EAAEy6J,YAC3BsM,EAAU/mK,GACLA,EAAEy6J,SAAW,IACtB,IAAI6M,GAAkB,GACjBx6C,EAAK8B,cAAcrB,QAAQn8H,QAAU21K,IACtCO,GAAkB,GAOtB,IALA,IAAI1zC,EAAK9G,EAAKy6C,cAEVC,EAAeruJ,KAAKsuJ,wBACpBC,EAAcF,GACZruJ,KAAK7lB,KAAKgE,QAAO,SAAU+9E,GAAO,OAAQA,EAAIsyF,WAAa,IACxDv4I,EAAI,EAAGw4I,EAAOr6C,EAAQn8H,OAAQg+B,EAAIw4I,EAAMx4I,IAAK,CAClD,IAAImpD,EAASg1C,EAAQl1H,SAAS+2B,EAAE76B,WAAY,KACxCsmB,EAAM1B,KAAKqQ,OAAOq+I,yBAAyBtvF,EAAOlzD,KAClDyiJ,EAAS3uJ,KAAKqQ,OAAOu+I,oBAAoBxvF,EAAOlzD,KAChD2iJ,GAAgC,IAAnBzvF,EAAOhxE,QAAmB,GAAK,OAChD,IAAa,IAATsT,GAAcksJ,GAAWlsJ,EAAMksJ,EAAQzrB,MAAMlqJ,OAC7C,GAAI6pJ,EACA,GAAoC,YAAhC1iE,EAAO0vF,qBACP,GAAI1vF,EAAO0vF,uBAAyBjxC,EAAAA,GAAsB,CAGtD8wC,EAASjtJ,GAFE1B,KAAKqQ,OAAO0+I,4BACT/uJ,KAAKqQ,OAAO2+I,yBAE1B,IAAIC,EAAOjvJ,KAAKqQ,OAAO21I,aAAazzI,cAAc,2BAA2BA,cAAcsrG,EAAAA,KAC3FtkF,EAAAA,EAAAA,IAAkB01H,EAAKnrG,WAAW5kE,SAASwiB,EAAItmB,WAAY,KAAM,CAAE,QAAWyzK,IAC9EN,EAAc56C,EAAK+xC,2BACnBjrC,EAAK9G,EAAKu7C,wBACd,KACK,EACD31H,EAAAA,EAAAA,IAAkBv5B,KAAK2nJ,cAAc7jG,WAAW5kE,SAASwiB,EAAItmB,WAAY,KAAM,CAAE,QAAWyzK,IAC5F,IAAIM,EAAqBnvJ,KAAKsuJ,uBAAsB,GACpDC,EAAcY,GAA0CnvJ,KAAK4jJ,WAC7DnpC,EAAK9G,EAAKy6C,aACd,KAEC,CACD,IAAIgB,EAASz7C,EAAKqyC,aAAazzI,cAAc,IAAMsrG,EAAAA,IAAyBtrG,cAAcsrG,EAAAA,IAC1F8wC,EAASjtJ,EAAMA,EAAM4mJ,EAAUtoJ,KAAKqQ,OAAO0+I,6BAC3Cx1H,EAAAA,EAAAA,IAAkB61H,EAAOtrG,WAAW5kE,SAASwiB,EAAItmB,WAAY,KAAM,CAAE,QAAWyzK,IAChFp0C,EAAK9G,EAAK07C,qBACV,IAAIC,EAAsBtvJ,KAAKsuJ,wBAC/BC,EAAce,GAA4CtvJ,KAAK6jJ,WACnE,MAGAtqH,EAAAA,EAAAA,IAAkBv5B,KAAK2nJ,cAAc7jG,WAAW5kE,SAASwiB,EAAItmB,WAAY,KAAM,CAAE,QAAWyzK,IAG/FV,IACDnuJ,KAAKuvJ,eAAe90C,EAAIk0C,EAAQE,EAAYN,GACxCzsB,GACA9hI,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAqB,CAAEguG,KAAM,gBAAiBmuB,WAAW,MAG/ExvJ,KAAKqQ,OAAOo/I,kBAAoBrwF,EAAOswF,aACxC1vJ,KAAKqQ,OAAOs/I,mBAAmBvwF,GAEnCp/D,KAAKqQ,OAAOo/I,kBAAmB,CACnC,CACItB,EACAnuJ,KAAKumJ,mBAAmB,CAAE5qE,YAAa,YAGlC37E,KAAKqQ,OAAO26H,oBAIbhrI,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAuB,CAAEl5C,KAAM6lB,KAAK4jJ,WAAY31J,KAAM,CAAE0hJ,UAAU,EAAMx1J,KAAM6lB,KAAK4jJ,cACtG5jJ,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAuB,CAAEl5C,KAAM6lB,KAAK6jJ,YAAa51J,KAAM,CAAE0hJ,UAAU,EAAOx1J,KAAM6lB,KAAK6jJ,gBAJxG7jJ,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAuB,CAAEl5C,KAAMo0K,EAAatgK,KAzD5D,CAAC,GAgEhB,EASA01J,EAActkJ,UAAUkwJ,eAAiB,SAAU90C,EAAI/4G,EAAKmtJ,EAAY10K,IACpEy1K,EAAAA,EAAAA,IAAgBn1C,EAAI/4G,EAAKmtJ,EAAY10K,EAAM6lB,KAAKqQ,OAAQrQ,KAAKqQ,OAAOqyH,iBACpE1iI,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAyB,CAAEjlC,QAASygK,EAAY/nK,MAAO4a,EAAKgrJ,SAAU1sJ,KAAKukJ,kBAClG,EACAZ,EAActkJ,UAAUivJ,sBAAwB,SAAU5B,GACtD,IAAI2B,EAUJ,OATIruJ,KAAKqQ,OAAO0kG,0BACZ/0G,KAAKukJ,iBAAmBmI,EAEpB2B,EADAruJ,KAAKqQ,OAAO80I,uBAAuBC,YACpBsH,EAAW1sJ,KAAKysJ,gCAA+B,GAAQzsJ,KAAKysJ,iCAG5DC,EAAW1sJ,KAAKokJ,kBAAoBpkJ,KAAKmkJ,aAGzDkK,CACX,EACA1K,EAActkJ,UAAU+4I,gBAAkB,WACtC,GAAIp4I,KAAK2nJ,cAAe,CACpB,IAAItqB,OAAW,EAGXA,EAFAr9H,KAAKqQ,OAAO2xI,4BAA8BhiJ,KAAKqQ,OAAO26H,oBACnDhrI,KAAKqQ,OAAOw3I,cAAcgI,UAClB7vJ,KAAKqQ,OAAOu0I,0BAClBryI,cAAcsrG,EAAAA,GAAoB,4BAA4BzsG,WAAU,GAGlEpR,KAAK8vJ,oBAEpB9vJ,KAAKqnJ,WAAWhnC,aAAagd,EAAUr9H,KAAK2nJ,eAC5C3nJ,KAAK0nJ,YAAYrqB,EACrB,CACJ,EACAsmB,EAActkJ,UAAUywJ,kBAAoB,WACxC,OAAO9vJ,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,IAAMsrG,EAAAA,IAC1CtrG,cAAcsrG,EAAAA,GAAoB,4BAA4BzsG,WAAU,EACjF,EACAuyI,EAActkJ,UAAUkoJ,sBAAwB,WAC5C,IAAI5zC,EAAO3zG,KAAKqQ,OAChBrQ,KAAK+vJ,UAAY,IAAI12G,EAAAA,GAAUs6D,EAAK3wH,QAAS,CACzCy2D,OAAQ,eACRP,KAAMl5C,KAAKk5C,MAEnB,EACAyqG,EAActkJ,UAAUmnJ,iBAAmB,WACnCxmJ,KAAK+vJ,YAAc/vJ,KAAK+vJ,UAAUn1H,aAClC56B,KAAK+vJ,UAAUroI,SAEvB,EACAi8H,EAActkJ,UAAU2wJ,QAAU,SAAU5wF,EAAQlD,EAAKp1E,GAOrD,OAAO6mB,EAAAA,EAAAA,IAAkBuuD,KACrBvuD,EAAAA,EAAAA,IAAkByxD,EAAOhxE,UACzB8tE,EAAIimE,MAAMjjJ,SAAS4H,EAAM1L,WAAY,KAAKgT,UAAYgxE,EAAOhxE,OACrE,EACAu1J,EAActkJ,UAAUgnJ,kBAAoB,WACxC,OAAOrmJ,KAAKomJ,UAAYpmJ,KAAKqQ,OAAOmlG,cAAgB,IAAIqqC,EAAoB7/I,KAAKqQ,QAAU,IAAIqzI,EAAAA,EAAkB1jJ,KAAKqQ,OAC1H,EACAszI,EAActkJ,UAAU4wJ,YAAc,SAAUxG,GAC5CzpJ,KAAKqnJ,WAAWl2I,YAAYs4I,GACxBzpJ,KAAKqQ,OAAOm3I,aACZxnJ,KAAKqQ,OAAO4wH,mBAAmB1uH,cAAcsrG,EAAAA,IAAgBtsG,UAAY,GAEjF,EACAoyI,EAActkJ,UAAUwzE,aAAe,SAAU3mE,EAAKrM,EAAKsmG,GACvDnmG,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAA2B,CAAEnnB,IAAKA,EAAKrM,IAAKA,EAAKsmG,SAAUA,IAC9E,IAAIwpC,EAAW3vI,KAAKqQ,OAAOyxH,eAC3B,IAAI6N,IAAY3vI,KAAKqQ,OAAOykG,qBAA5B,CAGA,GAAI66B,EAEA,IADA,IAAIx1J,EAAO6lB,KAAKutJ,iBAAiBpvK,QAAO,SAAU+9E,GAAO,OAAOiqC,GAAYj6F,IAAQgwD,EAAIhwD,GAAK,IACpF/G,EAAI,EAAGA,EAAIhrB,EAAKlC,OAAQktB,IAC7BhrB,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAK4pH,WAAanlG,EAItD,IADA,IAAIq8D,EAAMl8D,KAAK2sJ,UAAUxuK,QAAO,SAAU+9E,GAAO,OAAOiqC,GAAYj6F,IAAQgwD,EAAIhwD,GAAK,IAC5EsK,EAAI,EAAGA,EAAI0lD,EAAIjkF,OAAQu+B,IAAK,CACjC0lD,EAAIh9E,SAASs3B,EAAEp7B,WAAY,KAAK4pH,WAAanlG,EAE7C,IADA,IAAIsiI,EAAQjmE,EAAIh9E,SAASs3B,EAAEp7B,WAAY,KAAK+mJ,MACnC/4F,EAAI,EAAGA,EAAI+4F,EAAMlqJ,OAAQmxD,IAC9B+4F,EAAMjjJ,SAASkqD,EAAEhuD,WAAY,KAAK4pH,WAAanlG,CAEvD,CAdA,CAeJ,EACA8jJ,EAActkJ,UAAU6wJ,cAAgB,SAAUppK,GAE9C,OADAA,EAAQkZ,KAAKmwJ,oBAAoBrpK,IACzB6mB,EAAAA,EAAAA,IAAkB7mB,QAAqE5L,EAA5D8kB,KAAKqQ,OAAO+9I,cAAclvK,SAAS4H,EAAM1L,WAAY,IAC5F,EACAuoK,EAActkJ,UAAU8wJ,oBAAsB,SAAUrpK,GACpD,GAAIkZ,KAAKqQ,OAAO80I,uBAAuBC,eAAgBz3I,EAAAA,EAAAA,IAAkB7mB,GAAQ,CAC7E,IAAI+mK,EAAQ7tJ,KAAKqQ,OAAOm3I,WACpB9lJ,EAAMmsJ,EAAQ/mK,EAAQ,EAAI+mK,EAC1BuC,EAAgBlxK,SAAS8gB,KAAKqQ,OAAOs8I,UAAUztK,SAASwiB,EAAItmB,WAAY,KACvEgmD,aAAay8E,EAAAA,IAAwB,IAC1C/2H,EAAQ+mK,EAAQ/mK,EAAQA,EAASA,EAAQspK,EAAiBvC,CAC9D,CACA,OAAO/mK,CACX,EACA68J,EAActkJ,UAAUgxJ,mBAAqB,SAAUvpK,GACnD,OAAOA,CACX,EACA68J,EAActkJ,UAAUixJ,qBAAuB,SAAUxpK,GAErD,OADAA,EAAQkZ,KAAKmwJ,oBAAoBrpK,IACzB6mB,EAAAA,EAAAA,IAAkB7mB,QAA4E5L,EAAnE8kB,KAAKqQ,OAAOg/I,qBAAqBnwK,SAAS4H,EAAM1L,WAAY,IACnG,EACAuoK,EAActkJ,UAAUqkI,kBAAoB,SAAUjoJ,GACjC,UAAbA,EAAE0pD,QAAsB1pD,EAAEmzE,SAC1B5uD,KAAKomJ,UAAYpmJ,KAAKqmJ,oBAE9B,EACA1C,EAActkJ,UAAUkxJ,cAAgB,SAAUp2K,GAC9C6lB,KAAK7lB,KAAOA,CAChB,EAMAwpK,EAActkJ,UAAUmxJ,uBAAyB,SAAUviK,GACvD,IAAI+hB,EAAQhQ,UACC,IAAT/R,IAAmBA,EAAO,CAAC,GAC/B,IAAI0lH,EAAO3zG,KAAKqQ,OAChBsjG,EAAKvV,cACL,IAAIp/G,EAAM20H,EAAKgF,0BAA0B,GACrC83C,EAAU,CAAC,EACXC,EAAU,CAAC,EACXC,EAAa,GACbC,EAAa,CAAC,EACdC,EAAal9C,EAAKguC,gBAAgBtkJ,QAClCyzJ,EAAkB9wJ,KAAK+wJ,sBAAsB/xK,EAAK6xK,GAClDG,EAAa,CAAC,EACdC,EAAmD,IAAxCpyK,OAAOC,KAAKgyK,GAAiB74K,OAC5C,GAAI07H,EAAKqyC,aAAazzI,cAAc,gBAAuC,YAArBtkB,EAAK0tF,aACpD37E,KAAKqQ,OAAOolG,cAAcrB,QAAQn8H,OACrC+nB,KAAKumJ,mBAAmBt4J,OAEvB,CACD,GAAoC,IAAhC0lH,EAAKy/B,gBAAgBn7J,OACrB,OAEJ,IAAIi5K,EAAiB,CAAC,EAClBzH,EAAQ91C,EAAK/iG,cAAcitG,EAAAA,GAAgB,CAAEtnF,MAAO,CAAEi0B,KAAM,cAC5DnxE,EAAas6H,EAAKy/B,gBAClB+d,EAAM,GAAG9zJ,MAAMqC,KAAKM,KAAKqnJ,WAAW90I,cAAcsrG,EAAAA,IAAgBjmI,UACtE,GAAIooB,KAAK+jJ,gBAAgB9rK,OAAQ,CAC7B,IAAIm5K,EAAUpxJ,KAAK+jJ,gBAAgB9rK,OAC/Bo5K,EAAah4K,EAAWpB,OAC5B,GAAIm5K,IAAYC,EACZ,IAAK,IAAIlsJ,EAAI,EAAGA,EAAIksJ,EAAYlsJ,IACU,UAAlCnF,KAAKqQ,OAAO6iI,aAAa9pJ,MACtB+nK,EAAIjyK,SAASimB,EAAE/pB,WAAY,KAAKw7C,UAAUM,SAAS,kBACtDi6H,EAAItqI,OAAO1hB,EAAG,KACZA,IAGNurJ,EAAQr3K,EAAW6F,SAASimB,EAAE/pB,WAAY,KAAK,GAAK4D,IAAQyxK,EAAQzwJ,KAAK+jJ,gBAAgB7kK,SAASimB,EAAE/pB,WAAY,KAAK,GAAK4D,IAAQmmB,EAClI6rJ,EAAW9xK,SAASimB,EAAE/pB,WAAY,KAAO/B,EAAW6F,SAASimB,EAAE/pB,WAAY,KAAK,GAAK4D,GACrFkyK,EAAeL,EAAW3xK,SAASimB,EAAE/pB,WAAY,KAAK8wB,KAAOilJ,EAAIjyK,SAASimB,EAAE/pB,WAAY,KACxFw1K,EAAW1xK,SAASimB,EAAE/pB,WAAY,KAAO4kB,KAAK+jJ,gBAAgB7kK,SAASimB,EAAE/pB,WAAY,KAAK,GAAK4D,QAGlG,CACD,IAASmmB,EAAI,EAAGA,EAAIksJ,EAAYlsJ,IAC5BurJ,EAAQr3K,EAAW6F,SAASimB,EAAE/pB,WAAY,KAAK,GAAK4D,IAAQmmB,EAC5D6rJ,EAAW9xK,SAASimB,EAAE/pB,WAAY,KAAO/B,EAAW6F,SAASimB,EAAE/pB,WAAY,KAAK,GAAK4D,GAEzF,IAASmmB,EAAI,EAAGA,EAAIisJ,EAASjsJ,IACa,UAAlCnF,KAAKqQ,OAAO6iI,aAAa9pJ,MACtB+nK,EAAIjyK,SAASimB,EAAE/pB,WAAY,KAAKw7C,UAAUM,SAAS,kBACtDi6H,EAAItqI,OAAO1hB,EAAG,KACZA,IAGN+rJ,EAAeL,EAAW3xK,SAASimB,EAAE/pB,WAAY,KAAK8wB,KAAOilJ,EAAIjyK,SAASimB,EAAE/pB,WAAY,KACxFq1K,EAAQzwJ,KAAK+jJ,gBAAgB7kK,SAASimB,EAAE/pB,WAAY,KAAK,GAAK4D,IAAQmmB,EACtEyrJ,EAAW1xK,SAASimB,EAAE/pB,WAAY,KAAO4kB,KAAK+jJ,gBAAgB7kK,SAASimB,EAAE/pB,WAAY,KAAK,GAAK4D,GAEvG,CACJ,CACA,IAASmmB,EAAI,EAAGA,EAAI9rB,EAAWpB,OAAQktB,IAAK,CACxC,IAAImsJ,EAAWb,EAAQp3K,EAAW6F,SAASimB,EAAE/pB,WAAY,KAAK,GAAK4D,IACnE,IAAK2uB,EAAAA,EAAAA,IAAkB2jJ,GA2BlB,CACD,IAAIp1F,EAAM,IAAIykE,EAAAA,EAAY3gI,KAAK8yG,eAAgB,KAAMa,GACjD49C,EAAS,CAAE9nJ,WAAYtE,GACvBqjJ,EAAYxoJ,KAAKomJ,UAAUhG,aAAa,CAAC/mK,EAAW6F,SAASimB,EAAE/pB,WAAY,MAAOm2K,GACtFZ,EAAWlxK,KAAK+oK,EAAU,IACtB/tC,EAAKv+C,EAAI5wB,OAAOk9G,EAAU,GAAI70C,EAAKM,cACvCw1C,EAAMt4I,YAAYspG,GAClBz6G,KAAKwxJ,wBAAwBrsJ,EAAGs1G,EAAIk2C,EAAWzxK,SAASimB,EAAE/pB,WAAY,KAC1E,KAnCkC,CAC9B,IAAIq2K,GAAU,EACVzxJ,KAAKqQ,OAAO81I,oBACZsL,EAAUzxJ,KAAK0xJ,sBAAsB1xJ,KAAK+jJ,gBAAgB7kK,SAASoyK,EAASl2K,WAAY,KAAM/B,EAAW6F,SAASimB,EAAE/pB,WAAY,OAEpI,IAAIq/H,EAAKy2C,EAAeL,EAAW3xK,SAASoyK,EAASl2K,WAAY,KAC5D8wB,KAEL,GADAykJ,EAAWlxK,KAAKoxK,EAAW3xK,SAASoyK,EAASl2K,WAAY,MACrD4kB,KAAKwlJ,YAAYtmK,SAASoyK,EAASl2K,WAAY,MAAQ4kB,KAAKwlJ,YAAYtmK,SAASoyK,EAASl2K,WAAY,KAAKgmD,aAAa,cAAgBuvH,EAAWzxK,SAASimB,EAAE/pB,WAAY,KAAK8wB,MAC1K+kJ,IAAYtjJ,EAAAA,EAAAA,IAAkBmjJ,EAAgBE,EAAW9xK,SAASimB,EAAE/pB,WAAY,SAC5E61K,IAAaQ,GACXzxJ,KAAK+jJ,gBAAgB7kK,SAASoyK,EAASl2K,WAAY,OAAS/B,EAAW6F,SAASimB,EAAE/pB,WAAY,OAAS,CAC9Gk2K,IAAansJ,GACbnF,KAAKwxJ,wBAAwBrsJ,EAAGs1G,EAAIk2C,EAAWzxK,SAASimB,EAAE/pB,WAAY,MAE1EquK,EAAMt4I,YAAYspG,GAClB,QACJ,EACKw2C,KAAatjJ,EAAAA,EAAAA,IAAkBmjJ,EAAgBE,EAAW9xK,SAASimB,EAAE/pB,WAAY,SAC7E4kB,KAAKqQ,OAAO81I,mBACV9sK,EAAW6F,SAASimB,EAAE/pB,WAAY,OAAS4kB,KAAK+jJ,gBAAgB7kK,SAASoyK,EAASl2K,WAAY,MACjG4kB,KAAKqQ,OAAO81I,oBAAsBsL,IACtCZ,EAAW3xK,SAASoyK,EAASl2K,WAAY,KAAKu2K,YAAYt4K,EAAW6F,SAASimB,EAAE/pB,WAAY,MAEhGquK,EAAMt4I,YAAYspG,GAClBz6G,KAAKwxJ,wBAAwBrsJ,EAAGs1G,EAAIk2C,EAAWzxK,SAASimB,EAAE/pB,WAAY,KAC1E,CAUJ,CAUA,GATA4kB,KAAK7lB,KAAOw2K,EACZ3wJ,KAAKwlJ,YAAc,GAAGnoJ,MAAMqC,KAAK+pJ,EAAM7xK,WACvC+9C,EAAAA,EAAAA,IAAO31B,KAAKqnJ,WAAW90I,cAAcsrG,EAAAA,KACrC79G,KAAKqnJ,WAAWl2I,YAAYs4I,GAC5BzpJ,KAAKqQ,OAAOylB,QAAQzC,EAAAA,IAAkB,CAAC,GAAG,WAClCrjB,EAAMK,OAAO01I,eACb/1I,EAAMK,OAAO0W,OAAOsM,EAAAA,IAAqB,CAAEguG,KAAM,YAEzD,IACIpzI,EAAM,CACN,IAAIgV,GAAUhV,EAAK0tF,aAAe,IAAIt9F,cAAgB,YACtD2hB,KAAKqQ,OAAO0W,OAAO9jB,EAAQhV,EAC/B,CACJ,CACJ,EACA01J,EAActkJ,UAAUqyJ,sBAAwB,SAAUE,EAAK9zF,GAG3D,IAFA,IAAIh/E,EAAOD,OAAOC,KAAK8yK,GACnBH,GAAU,EACLtsJ,EAAI,EAAGA,EAAIrmB,EAAK7G,OAAQktB,IAAK,CAClC,GAAIysJ,EAAI9yK,EAAKI,SAASimB,EAAE/pB,WAAY,QAAU0iF,EAAKh/E,EAAKI,SAASimB,EAAE/pB,WAAY,MAG3E,KAFaw2K,EAAI9yK,EAAKI,SAASimB,EAAE/pB,WAAY,gBAAiBkE,MACvDw+E,EAAKh/E,EAAKI,SAASimB,EAAE/pB,WAAY,gBAAiBkE,OACzCsyK,EAAI9yK,EAAKI,SAASimB,EAAE/pB,WAAY,MAC3C0I,YAAcg6E,EAAKh/E,EAAKI,SAASimB,EAAE/pB,WAAY,MAAM0I,UAAY,CAClE2tK,GAAU,EACV,KACJ,CAER,CACA,OAAOA,CACX,EACA9N,EAActkJ,UAAU0xJ,sBAAwB,SAAUc,EAAY13K,GAClE,IAAI2E,EAAO,CAAC,EACRu/F,EAAUr+E,KAAKqQ,OAAOyhJ,kBACtBpzE,EAAiB,GACjBF,EAAe,GACf3/F,OAAOC,KAAKu/F,GAASpmG,SACrBymG,EAAiBL,EAAQK,eACzBF,EAAeH,EAAQG,cAE3B,IAAIvwF,EAAO,CAAE1G,QAAQ,GACrByY,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAA6B,CAAEl5C,KAAMA,EAAM8T,KAAMA,IAChEuwF,EAAavmG,SACmC,WAA5C+nB,KAAKqQ,OAAO6iI,aAAa6e,eACzB53K,EAAK0sC,OAAO1sC,EAAKlC,OAAS,EAAGumG,EAAavmG,QAGrCgW,EAAK1G,QACNpN,EAAK0sC,OAAO,EAAG23D,EAAavmG,SAIxC,IAAK,IAAIktB,EAAI,EAAGA,EAAIu5E,EAAezmG,OAAQktB,IACvCrmB,EAAK4/F,EAAex/F,SAASimB,EAAE/pB,WAAY,KAAK,GAAKy2K,IAAe1sJ,EAExE,OAAOrmB,CACX,EACA6kK,EAActkJ,UAAUmyJ,wBAA0B,SAAU1qK,EAAO2zH,EAAIv+C,GACnEA,EAAI81F,WAAWhyJ,KAAKqQ,OAAO4hJ,cAAenrK,EAAQ,IAAM,EACpDo1E,EAAI81F,SACJv3C,EAAG7jF,UAAUzB,IAAI,YAGjBslF,EAAG7jF,UAAUjB,OAAO,YAExBumC,EAAIp1E,MAAQA,EACZo1E,EAAI+2E,UAAO/3J,EACXghF,EAAIg2F,SAAU,EACdz3C,EAAGnkF,aAAaunF,EAAAA,GAAuB/2H,EAAM1L,YAC7Cq/H,EAAGnkF,aAAaunF,EAAAA,IAAwB/2H,EAAQ,GAAG1L,YACnD4kB,KAAKmyJ,gBAAgB13C,EAAI3zH,EAC7B,EACA68J,EAActkJ,UAAU8yJ,gBAAkB,SAAUC,EAAQtrK,GACxD,IAAK,IAAIqe,EAAI,EAAGA,EAAIitJ,EAAOjwB,MAAMlqJ,OAAQktB,IACrCitJ,EAAOjwB,MAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAKk7C,aAAa,QAASxvC,EAAM1L,WAE7E,EACOuoK,CACX,CAzyCmC,aCC/B0O,EAA8B,WAO9B,SAASA,EAAahiJ,EAAQyiG,GAC1B,IAAI9iG,EAAQhQ,KACZA,KAAKsyJ,OAAS,EACdtyJ,KAAKuyJ,UAAY,EACjBvyJ,KAAKwyJ,YAAa,EAClBxyJ,KAAKgyC,kBAAmB,EAExBhyC,KAAKk1C,OAAS,SAAUz5D,GACpB,IAAIk4H,EAAO3jG,EAAMK,OACb8tB,EAASnuB,EAAM6oC,UAAUvI,mBACzBmiH,GAAY9sC,EAAAA,EAAAA,IAAaxnF,EAAQ,gBACrC,IAAMw1E,EAAK++C,kBAAmB/+C,EAAK6B,iBAAoB7nG,EAAAA,EAAAA,IAAkB8kJ,IAClEA,EAAUjuH,uBAAuB,oBAAoBvsD,OAAS,EACjE,OAAO,EAEX,IAAI06K,EAAgB3iJ,EAAMK,OAAOO,cAAc,MAAO,CAAE31B,UAAW,gDAC/D+H,EAAUm7C,EAAOvH,UAAUM,SAAS,gBAAkBiH,EAASs0H,EACnE,IAAKzvK,IAAa2wH,EAAK++C,iBAAmB1vK,EAAQ4zC,UAAUM,SAAS,uBACjE,OAAO,EAEX,IAEIi/E,EAFAniE,EAAShxD,EAAQixD,aACjB2+G,EAAgB5vK,EAAQuvB,cAAc,qBAAuBvvB,EAAQuvB,cAAc,2BAEvF,GAAIqgJ,EAAe,CAQf,GANIz8C,EADAnzH,EAAQuvB,cAAc,2BAChBohG,EAAKk/C,mCAAmCD,EAAcz4F,UAAUlf,OAAQ04D,EAAKS,SAG7ET,EAAKiE,eAAeg7C,EAAcxxH,aAAa,iBAEzDpxB,EAAMovD,OAAS+2C,EACXnmG,EAAMovD,OAAO0zF,WACb,OAAO,EAEXH,EAAcr8H,aAAa,eAAgBtmB,EAAMovD,OAAOlzD,IAC5D,CACA,GAAIiqG,KAAQxoG,EAAAA,EAAAA,IAAkBwoG,EAAInI,gBAC9B,IAAKrgG,EAAAA,EAAAA,IAAkBwoG,EAAInI,gBAMvB2kD,EAAcphJ,UAAY4kG,EAAInI,mBANU,CACxC,IAAI+kD,EAAWp/C,EAAKq/C,sBAAsB78C,EAAIv0H,OAC1CxC,EAAS+2H,EAAI88C,mBAAJ98C,EAAwBxnG,EAAAA,EAAAA,IAAO,CAAE,MAASokJ,GAAY58C,GAAMxC,EAAM,mBAC/EyH,EAAAA,EAAAA,IAAeu3C,EAAevzK,EAClC,MAMAuzK,EAAcphJ,UAAYqhJ,EACtBz8C,EAAI3sH,WAAaxG,EAAQi1C,kBAAkB1mB,UAMnD,OAJAohJ,EAAcp7H,MAAMwc,MAAQ/wD,EAAQy0C,YAAc,KAClDk7H,EAAcp7H,MAAMyc,OAAShxD,EAAQixD,aAAe,KACpD0+G,EAAcp7H,MAAMmiD,YAAc1lC,EAAS,GAAG54D,WAAa,KAC3Du4H,EAAK3wH,QAAQmuB,YAAYwhJ,GAClBA,CACX,EACA3yJ,KAAK4yC,UAAY,SAAUn3D,GACvB,IAAIk4H,EAAO3jG,EAAMK,OACjBsjG,EAAK3wH,QAAQuvB,cAAc,gBAAgBglB,MAAMuiB,QAAU,OAC3D65D,EAAK5sF,OAAOsM,EAAAA,IAAwB,CAAE8K,OAAQnuB,EAAM6oC,UAAUvI,mBAAoB8uB,OAAQpvD,EAAMovD,OAAQr9E,MAAOtG,EAAEsG,OACrH,EACAie,KAAK20C,KAAO,SAAUl5D,GAClB,IAAIk4H,EAAO3jG,EAAMK,OACb8tB,EAAS1iD,EAAE0iD,OACf,GAAIA,EAAQ,CACR,IAAI/E,GAAU85H,EAAAA,EAAAA,IAAW/0H,EAAQ,WAC7B+tC,EAAel8D,EAAMK,OAAOrtB,QAAQuvB,cAAc,sBACtD,KAAK6mB,GAAWA,EAAQgI,aAAa,QAAUuyE,EAAK3wH,QAAQo+C,aAAa,UACrExK,EAAAA,EAAAA,IAAUs1C,EAAc,CAAC,mBAAoB,CAAC,iBAC1CynC,EAAK++C,kBACL/+C,EAAK3wH,QAAQuvB,cAAc,qBAAqBglB,MAAMuiB,QAAU,OAChE65D,EAAK3wH,QAAQuvB,cAAc,uBAAuBglB,MAAMuiB,QAAU,SAEjE65D,EAAK8B,cAAci9C,iBACpB,OAGR/+C,EAAK5sF,OAAOsM,EAAAA,IAAmB,CAAE8K,OAAQ1iD,EAAE0iD,OAAQihC,OAAQpvD,EAAMovD,OAAQr9E,MAAOtG,EAAEsG,OACtF,CACJ,EACAie,KAAKu3C,SAAW,SAAU97D,GACtB,IACI8L,EADAosH,EAAO3jG,EAAMK,OAEjBsjG,EAAK3wH,QAAQuvB,cAAc,gBAAgBglB,MAAMuiB,QAAU,UACrD6rE,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,mBAAoBwnF,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,qBAClEw1E,EAAK++C,kBAAmB/sC,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,kBAC/C1iD,EAAEy5D,OAAO9T,aAAa,kBAAmBukF,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,uBAClExI,EAAAA,EAAAA,IAAOl6C,EAAEy5D,QACT3tD,GAAS,GAEbosH,EAAK5sF,OAAOsM,EAAAA,IAAuB,CAAE8K,OAAQ1iD,EAAE0iD,OAAQp8C,MAAOtG,EAAEsG,MAAOq9E,OAAQpvD,EAAMovD,OAAQ73E,OAAQA,GACzG,EACAyY,KAAKk5C,KAAO,SAAUz9D,GAClB,IAAIk4H,EAAO3jG,EAAMK,OACbnE,EAAMzwB,EAAEo+D,eAAezY,aAAa,gBACpChI,GAAU85H,EAAAA,EAAAA,IAAWz3K,EAAE0iD,OAAQ,YACnCxI,EAAAA,EAAAA,IAAOl6C,EAAEo+D,gBACLzgB,GAAWA,EAAQgI,aAAa,QAAUuyE,EAAK3wH,QAAQo+C,aAAa,QAClEuyE,EAAK++C,kBAAmB/+C,EAAK6B,eAGnC7B,EAAK5sF,OAAOsM,EAAAA,IAAmB,CAAE8K,OAAQ1iD,EAAE0iD,OAAQjyB,IAAKA,EAAK2tC,eAAgBp+D,EAAEo+D,gBACnF,EACA75C,KAAKqQ,OAASA,EACdrQ,KAAK8yG,eAAiBA,EACtB9yG,KAAK+kJ,YAAc/kJ,KAAK8yG,eAAe0R,WAAW,eAClDxkH,KAAKmzJ,aAAenzJ,KAAK8yG,eAAe0R,WAAW,gBAC/CxkH,KAAKqQ,OAAOuqB,cAGX56B,KAAKqQ,OAAO2xI,4BACThiJ,KAAKqQ,OAAO0+I,6BAAgC/uJ,KAAKqQ,OAAO+iJ,8BAC5DpzJ,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAgCrzB,KAAKsmJ,WAAYtmJ,MAEpEA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAA8BrzB,KAAKqzJ,cAAerzJ,MACjEA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAmBrzB,KAAKszJ,oBAAqBtzJ,MACvB,aAAjCA,KAAKqQ,OAAOmgI,kBACZxwI,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAiBrzB,KAAKuzJ,8BAA+BvzJ,MAE5E,CA4oBA,OAtoBAqyJ,EAAahzJ,UAAUunJ,YAAc,WACjC,IAAIj2I,EAAM3Q,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,IAAMsrG,EAAAA,IAC9C/jF,EAAqB,MAAPnpB,EAClBA,EAAMmpB,EAAanpB,EAAM3Q,KAAKqQ,OAAOO,cAAc,MAAO,CAAE31B,UAAW,iBACvE,IAAI8rK,EAAWjtH,EAAanpB,EAAI4B,cAAc,IAAMsrG,EAAAA,IAChD79G,KAAKqQ,OAAOO,cAAc,MAAO,CAAE31B,UAAW4iI,EAAAA,KAClD79G,KAAKwzJ,iBAAiB7iJ,GACtBA,EAAIQ,YAAY41I,GAChB/mJ,KAAK8mJ,SAASn2I,GACTmpB,GACD95B,KAAKqQ,OAAOrtB,QAAQmuB,YAAYR,EAExC,EAMA0hJ,EAAahzJ,UAAU2nJ,YAAc,WACjC,IAAIpb,EAAY5rI,KAAKglJ,WACrBpZ,EAAUz6H,YAAYnR,KAAKyzJ,qBAC3BzzJ,KAAKonJ,SAASxb,EAAUr5H,cAAc,IAAMsrG,EAAAA,KACvC79G,KAAKqQ,OAAO26H,oBAAuBhrI,KAAKqQ,OAAO+iJ,8BAAiCpzJ,KAAKqQ,OAAO0+I,8BAC7F/uJ,KAAK0zJ,uBACL1zJ,KAAK2zJ,wBAET3zJ,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAwB,CAAEl5C,KAAM6lB,KAAK7lB,KAAM8T,KAAM,CAAE0hJ,SAAU3vI,KAAKqQ,OAAOyxH,iBAChG,EAMAuwB,EAAahzJ,UAAU2lJ,SAAW,WAC9B,OAAOhlJ,KAAK4zJ,WAChB,EAOAvB,EAAahzJ,UAAUynJ,SAAW,SAAUsG,GACxCptJ,KAAK4zJ,YAAcxG,CACvB,EAMAiF,EAAahzJ,UAAUgoJ,SAAW,WAC9B,OAAOrnJ,KAAK6zJ,WAChB,EAOAxB,EAAahzJ,UAAU+nJ,SAAW,SAAU9xF,GACxCt1D,KAAK6zJ,YAAcv+F,CACvB,EAMA+8F,EAAahzJ,UAAUsoJ,YAAc,WACjC,OAAO3nJ,KAAK2tJ,QAChB,EAOA0E,EAAahzJ,UAAUqoJ,YAAc,SAAUrqB,GAC3C,OAAOr9H,KAAK2tJ,SAAWtwB,CAC3B,EAMAg1B,EAAahzJ,UAAUstJ,QAAU,WAE7B,OADY3sJ,KAAKqnJ,WACJyM,MAAM35K,IACvB,EAOAk4K,EAAahzJ,UAAUo0J,kBAAoB,WACvC,IAAIn+F,EAAQt1D,KAAK+zJ,cACbhN,EAAW/mJ,KAAKglJ,WAAWzyI,cAAc,IAAMsrG,EAAAA,IAEnD,OADAkpC,EAAS51I,YAAYmkD,GACdyxF,CACX,EAUAsL,EAAahzJ,UAAUi0D,aAAe,SAAU0gG,EAAUl0E,QACrC,IAAbk0E,IAAuBA,EAAW,MACtC,IAAIrgD,EAAO3zG,KAAKqQ,OACZs/H,EAAWh8B,EAAKmuB,eAChB9hI,KAAKqnJ,aAAe1X,IACpBh6G,EAAAA,EAAAA,IAAO31B,KAAKqnJ,YAEhB,IAAI/xF,EAAQt1D,KAAKqQ,OAAOO,cAAc,QAAS,CAAE31B,UAAW4iI,EAAAA,GAAgBtnF,MAAO,CAAEkxH,YAAa,SAAUj9F,KAAM,UAC9GypG,EAAUn0E,IAAwB6zB,EAAKugD,qBAAuB,cAAgB,gBAC9EC,EAAgBn0J,KAAKo0J,oBAAoBH,GACzCI,EAAQF,EAAcE,MACtB5K,EAAQzpJ,KAAKqQ,OAAOO,cAAcitG,EAAAA,GAAgB,CAAE5iI,UAAW+kB,KAAKqQ,OAAOm3I,WAAa,GAAK,SAAUjxH,MAAO,CAAEi0B,KAAM,cAC1HxqD,KAAKwjJ,QAAUxjJ,KAAKqQ,OAAOO,cAAc,UAAW,CAAEW,UAAWvR,KAAKqQ,OAAOrtB,QAAQ4B,GAAK,gBAAiB3J,UAAW,WAKtH,IAJA,IAEIq5K,EAFAj3B,EAAWr9H,KAAKqQ,OAAOO,cAAcitG,EAAAA,IACrC02C,EAAUv0J,KAAKqQ,OAAOO,cAAc,MAEpCz2B,EAAO6lB,KAAK7lB,KAAOg6K,EAAch6K,KAC5BgrB,EAAI,EAAG8L,EAAM92B,EAAKlC,OAAQktB,EAAI8L,EAAK9L,IACxC,IAAK,IAAIqR,EAAI,EAAG4wH,EAAQjtJ,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAK+mJ,MAAMlqJ,OAAQu+B,EAAI4wH,EAAO5wH,IAC9E89I,EAAWt0J,KAAKqQ,OAAOO,cAAc,MACrC2jJ,EAAQpjJ,YAAYmjJ,GAM5B,IAHI3gD,EAAKzqH,gBAAkByqH,EAAK1qH,cAAgB0qH,EAAK6B,gBACjDlgD,EAAM1+B,UAAUzB,IAAI,gBAEpBw6G,GAAYh8B,EAAK6gD,cAAe,CAChC,IAAIC,EAAiBz0J,KAAKqQ,OAAO21I,aAAazzI,cAAc,IAAMsrG,EAAAA,IAAyBtrG,cAAc,IAAMsrG,EAAAA,IAC7F,YAAd/9B,IAA4BnyE,EAAAA,EAAAA,IAAkB8mJ,KAC9Cn/F,EAAM/9B,MAAMwc,MAAQ0gH,EAAel9H,MAAMwc,MAEjD,CAQA,OAPA/zC,KAAK00J,eAAer3B,GACpBosB,EAAMt4I,YAAYojJ,GAClBj/F,EAAMnkD,YAAYnR,KAAK0nJ,YAAYrqB,IACnC/nE,EAAMnkD,YAAYkjJ,GAClB/+F,EAAMnkD,YAAYs4I,GAClBn0F,EAAMnkD,YAAYnR,KAAKwjJ,SACvBxjJ,KAAK+kJ,YAAY8B,WAAWvxF,EAAO,CAAE21F,SAAUt3C,EAAKM,aAAah8H,OAAOmD,aACjEk6E,CACX,EAMA+8F,EAAahzJ,UAAU00J,YAAc,SAAUC,GAE3C,YADiB,IAAbA,IAAuBA,EAAW,MAC/Bh0J,KAAKszD,aAAa0gG,EAC7B,EACA3B,EAAahzJ,UAAU+0J,oBAAsB,SAAUt0E,GACnD,IAAI6zB,EAAO3zG,KAAKqQ,OACZvpB,EAAQ,EACR6tK,EAAahhD,EAAK4sB,gBAClBnsB,EAAUT,EAAKM,aACfogD,EAAQr0J,KAAKqQ,OAAOO,cAAc,QAAS,CAAE2lB,MAAO,CAAE,KAAQ,cAC9Dq+H,EAAY50J,KAAKqQ,OAAOO,cAAc,KAAM,CAAE31B,UAAW,mBACzDylJ,EAAc,IAAIC,EAAAA,EAAY3gI,KAAK8yG,eAAgB8tB,EAAAA,GAASi0B,OAAQlhD,GACxE+sB,EAAY19I,QAAU4xK,EACtB,IACIE,EADA36K,EAAO,GAEX6lB,KAAK+0J,UAAWC,EAAAA,EAAAA,IAAmBrhD,EAAKS,SACxC,IAAK,IAAIjvG,EAAI,EAAG8L,EAAMjR,KAAK+0J,SAAU5vJ,EAAI8L,EAAK9L,IAC1ChrB,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAO4kB,KAAK+gI,YAAY57H,GACpDhrB,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAK+mJ,MAAQ,GAE1B,UAAfwyB,IACAx6K,EAAO6lB,KAAKi1J,cAAc96K,IAE9BA,EAAO6lB,KAAKk1J,eAAe/6K,EAAM2lG,GACd,UAAf60E,IACA7tK,EAAQ,EACR3M,EAAO6lB,KAAKi1J,cAAc96K,IAE9B,IAAImuK,EAAUtoJ,KAAKqQ,OAAO26H,mBAC1B,GAAIhrI,KAAKqQ,OAAOqyH,iBAAmB1iI,KAAKqQ,OAAOyxH,gBAAkB3nJ,EAAK,GAAGgoJ,MAAMjjJ,SAAS4H,EAAM1L,WAAY,KAAM,CAC5G,IAAI+5K,EAAgBh7K,EAAK,GAAGgoJ,MAAMjjJ,SAAS4H,EAAM1L,WAAY,KAAKgkF,OAAO0vF,qBACzE,GAAkB,YAAdhvE,GAA2B9/E,KAAKo1J,wBAAwBn9K,OACnD,KAAIu+B,EAAI,EAAb,IAAgBvF,EAAM92B,EAAKlC,OAAQu+B,EAAIvF,EAAKuF,IACrB,UAAfm+I,EACAx6K,EAAK+E,SAASs3B,EAAEp7B,WAAY,KAAK+mJ,MAAMr3H,MAGvC3wB,EAAK+E,SAASs3B,EAAEp7B,WAAY,KAAK+mJ,MAAM13H,OALpBxyB,KASH,YAAlBk9K,GAAgCR,IAAe92C,EAAAA,IACrDs3C,IAAkBt3C,EAAAA,GACC,UAAf82C,EACAx6K,EAAK,GAAGgoJ,MAAMr3H,MAGd3wB,EAAK,GAAGgoJ,MAAM13H,QAGZ69I,GAAW6M,IAAkBt3C,EAAAA,GAGf,UAAf82C,GAA0BQ,IAAkBt3C,EAAAA,KACjD1jI,EAAK,GAAGgoJ,MAAMhoJ,EAAK,GAAGgoJ,MAAMlqJ,OAAS,GAAGmnF,OAAO1lE,OAAS,SAHxDvf,EAAK,GAAGgoJ,MAAM,GAAG/iE,OAAO1lE,OAASy7J,IAAkBt3C,EAAAA,GAAsB,OAAS,OAK1F,CACA,IAAS14G,EAAI,EAAG8L,EAAMjR,KAAK+0J,SAAU5vJ,EAAI8L,EAAK9L,IAC1C2vJ,EAAYp0B,EAAYp1F,OAAOnxD,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAMg5H,GAC7Dp0G,KAAKqQ,OAAOglJ,WAAaP,EAAUviJ,cAAc,mBACjDuiJ,EAAUv9H,MAAMyc,OAASh0C,KAAKqQ,OAAOglJ,UAAY,MAErDhB,EAAMljJ,YAAY2jJ,GAMtB,MAJoB,CAChBT,MAAOA,EACPl6K,KAAMA,EAGd,EACAk4K,EAAahzJ,UAAUq1J,eAAiB,SAAUr3B,GAC9C,IACIlnB,EADAxB,EAAO30G,KAAKqQ,OAAO4jG,aAEnB6tC,EAAU9hJ,KAAKqQ,OAAO0xI,yBAO1B,GANI/hJ,KAAKqQ,OAAO2xI,4BAA8BhiJ,KAAKqQ,OAAO26H,oBACnDhrI,KAAKqQ,OAAOw3I,cAAcgI,YAC7Bl7C,GAAOhmG,EAAAA,EAAAA,IAAO,GAAI3O,KAAKqQ,OAAO4jG,eACzBptF,OAAO,EAAG7mB,KAAKqQ,OAAO26H,oBAE/B3N,EAASz4I,GAAKob,KAAKqQ,OAAOrtB,QAAQ4B,GAAKi5H,EAAAA,GACnC79G,KAAKqQ,OAAOmlG,cACZ,IAAK,IAAIrwG,EAAI,EAAG8L,EAAMjR,KAAKqQ,OAAOolG,cAAcrB,QAAQn8H,OAAQktB,EAAI8L,EAAK9L,IACjEnF,KAAKqQ,OAAO2xI,6BAAsD,IAAxBF,EAAQxrJ,QAAQ6O,KAG9DgxG,EAAMn2G,KAAKqQ,OAAOO,cAAc,MAAO,CAAE31B,UAAW,mBACpDoiJ,EAASlsH,YAAYglG,KAGzBn2G,KAAKqQ,OAAOkyH,gBAAkBviI,KAAKqQ,OAAOmyH,aAC1CrsB,EAAMn2G,KAAKqQ,OAAOO,cAAc,MAAO,CAAE31B,UAAW,oBACpDoiJ,EAASlsH,YAAYglG,IAErBn2G,KAAKqQ,OAAOqyH,iBAAmD,UAAhC1iI,KAAKqQ,OAAOkwH,kBAC3CpqB,EAAMn2G,KAAKqQ,OAAOO,cAAc,MAAO,CAAE31B,UAAW,kBACpDoiJ,EAASlsH,YAAYglG,IAEzB,IAAShxG,EAAI,EAAG8L,EAAM0jG,EAAK18H,OAAQktB,EAAI8L,EAAK9L,IACxCgxG,EAAMn2G,KAAKqQ,OAAOO,cAAc,QACiB,IAA7C+jG,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKgT,UACjCmrC,EAAAA,EAAAA,IAAkB48E,EAAK,CAAE,QAAW,SAExCknB,EAASlsH,YAAYglG,GAMzB,OAJIn2G,KAAKqQ,OAAOqyH,iBAAmD,UAAhC1iI,KAAKqQ,OAAOkwH,kBAC3CpqB,EAAMn2G,KAAKqQ,OAAOO,cAAc,MAAO,CAAE31B,UAAW,kBACpDoiJ,EAASlsH,YAAYglG,IAElBknB,CACX,EACAg1B,EAAahzJ,UAAU41J,cAAgB,SAAU96K,GAI7C,IAFA,IAAIw5H,EAAO3zG,KAAKqQ,OACZyxI,EAAU9hJ,KAAKqQ,OAAO0xI,yBACjB58I,EAAI,EAAG8L,EAAM92B,EAAKlC,OAAQktB,EAAI8L,EAAK9L,IAAK,CAC7C,GAAIwuG,EAAK6B,cACL,IAAK,IAAIv/F,EAAI,EAAGq/I,EAAQ3hD,EAAK8B,cAAcrB,QAAQn8H,OAAQg+B,EAAIq/I,EAAOr/I,IAC9DjW,KAAKqQ,OAAO2xI,6BAAsD,IAAxBF,EAAQxrJ,QAAQ2f,IAG9D97B,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAK+mJ,MAAM1iJ,KAAKugB,KAAKqiI,aAAa,CAAC,EAAGzB,EAAAA,GAAS0B,eAGnF,GAAI3uB,EAAK4uB,gBAAkB5uB,EAAK6uB,UAAW,CACvC,IAAIv0I,EAAO,CAAC,EACZ+R,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAA6BplC,GAChD9T,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAK+mJ,MAAM1iJ,KAAKugB,KAAKqiI,aAAap0I,EAAM2yI,EAAAA,GAAS6B,cACjF,CACI9uB,EAAK+uB,iBACLvoJ,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAK+mJ,MAAM1iJ,KAAKugB,KAAKqiI,aAAa,CAAC,EAAGzB,EAAAA,GAAS+B,cAEnF,CACA,OAAOxoJ,CACX,EACAk4K,EAAahzJ,UAAU61J,eAAiB,SAAU/6K,EAAM2lG,GACpD,IAAIu0E,EAAQr0J,KAAKqQ,OAAOszH,kBAAoB3jI,KAAKqQ,OAAOszH,iBAAiBpxH,cAAc,SACnFoiG,EAAO30G,KAAKqQ,OAAO2xI,2BACnBhiJ,KAAKqQ,OAAO4jG,WAAWj0G,KAAKqQ,OAAO26B,mBAAqBhrC,KAAKqQ,OAAO+jG,QAGxE,GAFAp0G,KAAKsyJ,OAAS,EACdtyJ,KAAKuyJ,UAAY,EACbvyJ,KAAKqQ,OAAOklJ,qBACZ,IAAK,IAAIpwJ,EAAI,EAAGA,EAAIwvG,EAAK18H,OAAQktB,IAC7BnF,KAAKw1J,kBAAmB,EACxBr7K,EAAO6lB,KAAKy1J,YAAY9gD,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAMjB,EAAM,EAAS,IAANgrB,GAAS,EAAOA,IAAOwvG,EAAK18H,OAAS,EAAIo8K,EAAOv0E,GAAW,GAG7H36E,EAAI,EAAb,IAAK,IAAW8L,EAAM0jG,EAAK18H,OAAQktB,EAAI8L,EAAK9L,IACxCnF,KAAKuyJ,UAAY,EACjBvyJ,KAAKw1J,kBAAmB,EACxBr7K,EAAO6lB,KAAKy1J,YAAY9gD,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAMjB,EAAM,EAAS,IAANgrB,GAAS,EAAOA,IAAO8L,EAAM,EAAIojJ,EAAOv0E,GAAW,GAE1H,OAAO3lG,CACX,EACAk4K,EAAahzJ,UAAUo2J,YAAc,SAAU9gD,EAAMx6H,EAAM2M,EAAO4uK,EAAYlD,EAAYmD,EAAWC,EAAW91E,EAAW+1E,GACvH,IAOInyH,EAPAoyH,EAAUH,EAAYE,EAAiB,kBAAoB,aAAe,GAC1ElmB,EAAW3vI,KAAKqQ,OAAOyxH,eACvBi0B,GAAgB/1J,KAAKqQ,OAAOklJ,sBACxB5gD,EAAKm+C,aAAe9yJ,KAAKw1J,mBAAuB7gD,EAAKm+C,YAAc9yJ,KAAKw1J,iBAC5EQ,GAAsBh2J,KAAKqQ,OAAOklJ,sBAAyB5gD,EAAKm+C,aAAe9yJ,KAAKw1J,mBAC/E7gD,EAAKm+C,YAAc9yJ,KAAKw1J,iBAC7BS,EAAYj2J,KAAKqQ,OAAO21I,aAAazzI,cAAc,uBAKvD,GAHIo9H,GAAYsmB,GAAaj2J,KAAKqQ,OAAO2xI,6BACrCt+G,EAAOuyH,EAAU5yH,YAEhBsxE,EAAKP,QAuBL,CACDp0G,KAAKwyJ,YAAa,EAClB,IAAIhmB,EAAUxsI,KAAKk2J,WAAWvhD,EAAM,GACpC,GAAI63B,EAAS,CACT,IAAI2pB,EAAuBn2J,KAAKo1J,wBAAwBzgD,EAAM,GAC1DyhD,EAA2D,IAArCp2J,KAAKqQ,OAAOklJ,uBAC7Bv1J,KAAKw1J,kBAA6C,IAAzBW,GAC1Bn2J,KAAKw1J,kBAAqBhpB,EAAU2pB,IAA0B,EAClEE,EAAgB1mB,GAAY3vI,KAAKs2J,oBAAoB3hD,EAAKP,QAASt0B,GAAW,KAC5E6vD,GAAYymB,GAAwBC,IACtCl8K,EAAK+E,SAAS4H,EAAM1L,WAAY,KAAK+mJ,MAAM1iJ,KAAK,IAAIqjJ,EAAAA,EAAK,CACrDD,SAAUjC,EAAAA,GAAS21B,cAAen3F,OAAQu1C,EAC1C63B,QAASxsI,KAAKw2J,WAAWhqB,EAAS2pB,EAAsBxhD,EAAKP,QAASt0B,EAAW6vD,GACjF10J,UAAWy6K,EAAa,GAAMlD,EAAa,cAAgB,KAGvE,CACA,GAAIxyJ,KAAKqQ,OAAOklJ,uBAAyBv1J,KAAKw1J,iBAC1C,IAAK,IAAIrwJ,EAAI,EAAGA,EAAIwvG,EAAKP,QAAQn8H,OAAQktB,IACrChrB,EAAO6lB,KAAKy1J,YAAY9gD,EAAKP,QAAQl1H,SAASimB,EAAE/pB,WAAY,KAAMjB,EAAM2M,EAAQ,EAAG4uK,EAAkB,IAANvwJ,EAASA,IAAOwvG,EAAKP,QAAQn8H,OAAS,GAAM09K,EAAWC,EAAW91E,GAAW,GAGpL,GAAI9/E,KAAKw1J,iBACA,CAAIrwJ,EAAI,EAAb,IAAK,IAAW8L,EAAM0jG,EAAKP,QAAQn8H,OAAQktB,EAAI8L,EAAK9L,IAAK,CACrDuwJ,EAAaA,GAAoB,IAANvwJ,EAC3B,IAAIsxJ,EAAez2J,KAAKwyJ,WAAa79C,EAAKP,QAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKgT,UACtEsnK,EACJgB,EAAmBvxJ,IAAO8L,EAAM,GAAM0kJ,EAC1Cx7K,EAAO6lB,KAAKy1J,YAAY9gD,EAAKP,QAAQl1H,SAASimB,EAAE/pB,WAAY,KAAMjB,EAAM2M,EAAQ,EAAG4uK,EAAYe,IAAiBC,EAAkBA,EAAkBd,EAAW91E,GAAW,EAC9K,CANmC7nG,CAQ3C,MArDQyrD,GAAQA,EAAO,GAAK1jC,KAAKqQ,OAAOw3I,cAAcgI,WACV,IAAjC7vJ,KAAKqQ,OAAOsmJ,cAAc,IAA0C,YAA9BhiD,EAAKm6C,uBAIxCnf,GAAYomB,GAAkBpmB,GAAYh7B,EAAKm6C,uBAAyBhvE,GAAak2E,IAH3F77K,EAAK+E,SAAS4H,EAAM1L,WAAY,KAAK+mJ,MAAM1iJ,KAAKugB,KAAKqiI,aAAa1tB,EAAMisB,EAAAA,GAASi0B,OAAQ70J,KAAK+0J,SAAWjuK,GAAQ4uK,EAAa,GAAMlD,EAAa,cAAgB,IAAOsD,EAAShvK,EAAOkZ,KAAKqQ,OAAOu+I,oBAAoBj6C,EAAKzoG,OAO7NlM,KAAKqQ,OAAOklJ,qBACPv1J,KAAKsyJ,OAAStyJ,KAAKuyJ,UAAYvyJ,KAAKqQ,OAAOumJ,gBAC1CjiD,EAAKm+C,aAAe9yJ,KAAKw1J,mBAAuB7gD,EAAKm+C,YAAc9yJ,KAAKw1J,kBAC1Ex1J,KAAKsyJ,SAGLtyJ,KAAKuyJ,YAITvyJ,KAAKsyJ,SAmCb,OAAOn4K,CACX,EACAk4K,EAAahzJ,UAAUi3J,oBAAsB,SAAUliD,EAASt0B,EAAW+2E,GAEvE,IADA,IAAI5+K,EAASm8H,EAAQn8H,OACZktB,EAAI,EAAGA,EAAIltB,EAAQktB,IACxB,GAAIivG,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKg5H,QACpCyiD,EAAS72J,KAAKs2J,oBAAoBliD,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKg5H,QAASt0B,EAAW+2E,QAEzF,GAAIziD,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK0zK,uBAAyBhvE,EAAW,CAC7E+2E,GAAS,EACT,KACJ,CAEJ,OAAOA,CACX,EACAxE,EAAahzJ,UAAU+1J,wBAA0B,SAAUj/C,EAAK2gD,GAC5D,GAAI3gD,EAAI/B,QACJ,IAAK,IAAIjvG,EAAI,EAAGA,EAAIgxG,EAAI/B,QAAQn8H,OAAQktB,IACpC2xJ,EAAgB92J,KAAKo1J,wBAAwBj/C,EAAI/B,QAAQl1H,SAASimB,EAAE/pB,WAAY,KAAM07K,QAGrF3gD,EAAI28C,YACTgE,IAEJ,OAAOA,CACX,EACAzE,EAAahzJ,UAAUm3J,WAAa,SAAUhqB,EAAS2pB,EAAsB/hD,EAASt0B,EAAW6vD,GAO7F,OANIA,EACAnD,EAAUxsI,KAAK+2J,iBAAiB3iD,EAASt0B,EAAW,GAE/C9/E,KAAKqQ,OAAOklJ,uBACjB/oB,EAAWxsI,KAAKw1J,iBAA0ChpB,EAAU2pB,EAAjCA,GAEhC3pB,CACX,EACA6lB,EAAahzJ,UAAU03J,iBAAmB,SAAU3iD,EAASt0B,EAAW5uB,GAEpE,IADA,IAAIj5E,EAASm8H,EAAQn8H,OACZktB,EAAI,EAAGA,EAAIltB,EAAQktB,IACpBivG,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKg5H,QACpCljD,EAAQlxD,KAAK+2J,iBAAiB3iD,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKg5H,QAASt0B,EAAW5uB,GAEjFkjD,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK0zK,uBAAyBhvE,GAC/Ds0B,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKgT,SACvC8iE,IAGR,OAAOA,CACX,EAEAmhG,EAAahzJ,UAAU0hI,YAAc,SAAUj6I,GAC3C,OAAO,IAAIo7I,EAAAA,EAAI,CAAC,EACpB,EACAmwB,EAAahzJ,UAAUgjI,aAAe,SAAUjjE,EAAQyjE,EAAUm0B,EAAS/7K,EAAWg8K,EAAUlE,GAC5F,IAAI9oE,EAAM,CACN,QAAW7qB,EAAOhxE,QAClB,YAAc,EACd,aAAeuf,EAAAA,EAAAA,IAAkByxD,EAAO4uC,gBACxC,MAAS,GACT,OAAU5uC,EACV,SAAYyjE,EACZ,QAAWm0B,EACX,UAAa/7K,EACb,MAASg8K,EACT,SAAYlE,GAKhB,QAHK9oE,EAAI+sE,SAAW/sE,EAAI+sE,QAAU,WACvB/sE,EAAI+sE,QAER,IAAIl0B,EAAAA,EAAK74C,EACpB,EAOAooE,EAAahzJ,UAAUinJ,WAAa,SAAUlyC,GAK1C,IAJA,IACIy6C,EACAntJ,EAFAiyG,EAAO3zG,KAAKqQ,OAGZi4I,EAAU30C,EAAKq3B,mBACV/0H,EAAI,EAAGw4I,EAAOr6C,EAAQn8H,OAAQg+B,EAAIw4I,EAAMx4I,IAAK,CAClD,IAAImpD,EAASg1C,EAAQl1H,SAAS+2B,EAAE76B,WAAY,KAG5C,GAFAsmB,EAAMiyG,EAAK+6C,yBAAyBtvF,EAAOlzD,KAC3C2iJ,EAAazvF,EAAOhxE,QAAU,GAAK,OAC/Bk6J,EAAS,CACT,IAAI4O,EAAoBl3J,KAAKqQ,OAAOqyH,gBAAkB4lB,EAAU,EAAIA,EACpE,GAAI5mJ,EAAMw1J,GACN39H,EAAAA,EAAAA,IAAkBv5B,KAAK2nJ,cAAc/vK,SAASsH,SAASwiB,EAAItmB,WAAY,KAAM,CAAE,QAAWyzK,QAEzF,CACD,IAAIsI,EAAaxjD,EAAKstB,mBAAmB1uH,cAAc,IAAMsrG,EAAAA,IAAwBtrG,cAAcsrG,EAAAA,KACnGtkF,EAAAA,EAAAA,IAAkB49H,EAAWv/K,SAAS8pB,EAAMw1J,GAAoB,CAAE,QAAWrI,GACjF,CACJ,MAEIt1H,EAAAA,EAAAA,IAAkBv5B,KAAK2nJ,cAAc/vK,SAASsH,SAASwiB,EAAItmB,WAAY,KAAM,CAAE,QAAWyzK,GAElG,CACA7uJ,KAAKo3J,WACT,EACA/E,EAAahzJ,UAAUg0J,cAAgB,WACnCrzJ,KAAKo3J,WACT,EAMA/E,EAAahzJ,UAAU+3J,UAAY,WAC/B,IAAI9O,EAAUtoJ,KAAKqQ,OAAOyxH,eACtB8pB,EAAY5rJ,KAAKqQ,OAAO2xI,4BAA8BsG,EACtD1c,EAAY5rI,KAAKglJ,WACrBhlJ,KAAKwzJ,iBAAiB5nB,GACtB,IAAIt2E,EAAQt1D,KAAKq3J,cAAgBr3J,KAAK4zJ,YAAYrhJ,cAAc,IAAMsrG,EAAAA,IAAwBtrG,cAAc,IAAMsrG,EAAAA,IAC5G79G,KAAKqnJ,WACPvnE,EAAY9/E,KAAKqQ,OAAOyxH,eAAiB9hI,KAAKqQ,OAAO6jJ,qBAAuB,cAC1E,oBAAiBh5K,EAKvB,GAJI0wK,IACAt2F,EAAQt1D,KAAKqQ,OAAOw3I,cAAcyP,yBAClCx3E,EAAY9/E,KAAKqQ,OAAOw3I,cAAcgI,UAAY,UAAY/vE,GAE9DxqB,EAAO,EACP3/B,EAAAA,EAAAA,IAAO2/B,GACPA,EAAM98B,YAAY88B,EAAMimD,YACxBjmD,EAAM98B,YAAY88B,EAAMxR,WAAW,IACnC,IAAIu5E,EAAWr9H,KAAKqQ,OAAOO,cAAcitG,EAAAA,IACrCs2C,EAAgBn0J,KAAKo0J,oBAAoBt0E,GAC7C9/E,KAAK7lB,KAAOg6K,EAAch6K,KAC1Bm7E,EAAMt9B,aAAam8H,EAAcE,MAAO/+F,EAAMimD,YAC9Cv7G,KAAK00J,eAAer3B,GACpB/nE,EAAMt9B,aAAah4B,KAAK0nJ,YAAYrqB,GAAW/nE,EAAMimD,YAChDqwC,GACD5rJ,KAAKonJ,SAAS9xF,GAElBt1D,KAAK8rJ,cAAcx2F,GACnBt1D,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAwB,CAAC,GAC5CrzB,KAAKmzJ,aAAaoE,oBAClBv3J,KAAKqQ,OAAOmnJ,wBACPlP,GAAYtoJ,KAAKqQ,OAAO2xI,4BAA8BsG,IACvDtoJ,KAAK0zJ,uBAGT,IADA,IAAIv5K,EAAO,GAAGkjB,MAAMqC,KAAKksI,EAAU96H,iBAAiB,sBAC3CvC,EAAK,EAAGkpJ,EAASt9K,EAAMo0B,EAAKkpJ,EAAOx/K,OAAQs2B,IAAM,CACtD,IAAI2tD,EAAMu7F,EAAOlpJ,GACb6yH,EAAS,GAAG/jI,MAAMqC,KAAKw8D,EAAI13B,uBAAuB,uBAClD48F,EAAOnpJ,QACPmpJ,EAAOA,EAAOnpJ,OAAS,GAAG2+C,UAAUzB,IAAI,yBAEhD,CACAn1B,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAwB,CAAEl5C,KAAM6lB,KAAK7lB,KAAM8T,KAAM,CAAE0hJ,SAAU2Y,KAC5EtoJ,KAAKqQ,OAAO2xI,6BAA8Br8B,EAAAA,EAAAA,IAAarwD,EAAOuoD,EAAAA,KAC9D79G,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAwB,CAAEl5C,KAAM6lB,KAAK7lB,KAAM8T,KAAM,CAAE0hJ,UAAU,EAAOkgB,SAAS,KAEhG7vJ,KAAKqQ,OAAO01I,eAA2D,WAA1C/lJ,KAAKqQ,OAAO47I,iBAAiBC,WAC1D7gG,EAAAA,EAAAA,IAAKlxE,GAAM,EAEnB,CACJ,EACAk4K,EAAahzJ,UAAUm0J,iBAAmB,SAAU7iJ,GACnC3Q,KAAKqQ,OAAO+jG,QACDzsG,MAAK,SAAUy3D,GAAU,QAAQzxD,EAAAA,EAAAA,IAAkByxD,EAAOg1C,QAAU,IAExFzjG,EAAIimB,UAAUzB,IAAI,mBAGlBxkB,EAAIimB,UAAUjB,OAAO,kBAE7B,EACA08H,EAAahzJ,UAAUysJ,cAAgB,SAAUx2F,GAC7Ct1D,KAAKglJ,WAAWzyI,cAAc,IAAMsrG,EAAAA,IAAwB1sG,YAAYmkD,EAC5E,EACA+8F,EAAahzJ,UAAU62J,WAAa,SAAU//C,EAAKt0D,GAC/C,GAAIs0D,EAAI/B,QACJ,IAAK,IAAIjvG,EAAI,EAAG8L,EAAMklG,EAAI/B,QAAQn8H,OAAQktB,EAAI8L,EAAK9L,IAC/C08C,EAAM7hD,KAAKk2J,WAAW//C,EAAI/B,QAAQl1H,SAASimB,EAAE/pB,WAAY,KAAMymE,QAI/Ds0D,EAAI/nH,SACJyzD,IAGR,OAAOA,CACX,EACAwwG,EAAahzJ,UAAUq0J,qBAAuB,WAC1C,IAAI//C,EAAO3zG,KAAKqQ,QACVrQ,KAAKqQ,OAAOqiJ,iBAAoB1yJ,KAAKqQ,OAAOmlG,eAAiBx1G,KAAKqQ,OAAOolG,cAAciiD,gBAG7F13J,KAAK64C,UAAY,IAAI3K,EAAAA,GAAUylE,EAAKstB,mBAAoB,CACpDnvF,WAAY,gBACZQ,SAAU,EACV4C,OAAQl1C,KAAKk1C,OACbtC,UAAW5yC,KAAK4yC,UAChB+B,KAAM30C,KAAK20C,KACX4C,SAAUv3C,KAAKu3C,SACf/G,MAAO,cACPwB,iBAAkBhyC,KAAKgyC,mBAE3BhyC,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAgBrzB,KAAKwmJ,iBAAkBxmJ,MAC1D,EACAqyJ,EAAahzJ,UAAUs0J,qBAAuB,WAC1C,IAAIhgD,EAAO3zG,KAAKqQ,OAChBrQ,KAAK+vJ,UAAY,IAAI12G,EAAAA,GAAUs6D,EAAKstB,mBAAoB,CACpDxnF,OAAQ,eACRP,KAAMl5C,KAAKk5C,OAEfl5C,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAgBrzB,KAAKwmJ,iBAAkBxmJ,KAC1D,EACAqyJ,EAAahzJ,UAAUmnJ,iBAAmB,WAClCxmJ,KAAK+vJ,YAAc/vJ,KAAK+vJ,UAAUn1H,aAClC56B,KAAK+vJ,UAAUroI,UAEf1nB,KAAK64C,YAAc74C,KAAK64C,UAAUje,aAClC56B,KAAK64C,UAAUnxB,SAEvB,EACA2qI,EAAahzJ,UAAUi0J,oBAAsB,WACzC,IAAItjJ,EAAQhQ,KACR2zG,EAAO3zG,KAAKqQ,OAChB,GAA8B,aAA1BsjG,EAAK68B,mBAAoC78B,EAAK9lH,UAC1C8lH,EAAK1qH,cAAiB0qH,EAAKzqH,gBAA+C,cAA7ByqH,EAAKxqH,eAAe7O,MAAwB,CAK7F,IAJA,IAAIq2B,EAAMgjG,EAAK/iG,cAAc,MAAO,CAAE31B,UAAW,4BAC7Cu4J,EAAe7/B,EAAK/iG,cAAc,MAAO,CAAE31B,UAAW,oBACtD08K,EAAchkD,EAAK/iG,cAAc,MAAO,CAAE31B,UAAW,mBACrDi2E,EAAQlxD,KAAKqQ,OAAOnnB,gBAAkB8W,KAAKqQ,OAAOpnB,aAAe,EAAI,EAChEkc,EAAI,EAAGA,EAAI+rD,EAAO/rD,IAAK,CAC5B,IAAIyyJ,EAAcjkD,EAAK/iG,cAAc,MAAO,CAAE31B,UAAW,8DACrD48K,EAAgB,IAAV3mG,EAAclxD,KAAKqQ,OAAOpnB,aAAe,OAC7C,SAAiB,IAANkc,EAAU,OAAS,SAChCmlG,EAASqJ,EAAK/iG,cAAc,SAAU,CAAE31B,UAAW,gDACnD4rE,EAAO8sD,EAAK/iG,cAAc,OAAQ,CAAE31B,UAAW,mBAAqB48K,EAAM,kBAC9EvtD,EAAOn5F,YAAY01C,GACN,IAAIR,EAAAA,GAAO,CACpBlmE,SAAU6f,KAAKqQ,OAAOlwB,SAAW6f,KAAKqQ,OAAOlwB,SAAW,KAErD4qD,SAASu/D,GAChBA,EAAOwtD,QAAU,SAAUr8K,GACnBA,EAAE0iD,OAAOvH,UAAUM,SAAS,kBACzBz7C,EAAE0iD,OAAOvH,UAAUM,SAAS,kBAC/BlnB,EAAMK,OAAOokI,2BAGbzkI,EAAMK,OAAOmkI,4BAErB,EACAojB,EAAYzmJ,YAAYm5F,GACxBqtD,EAAYxmJ,YAAYymJ,EAC5B,CACApkB,EAAariI,YAAYwmJ,GACzBhnJ,EAAIQ,YAAYqiI,GAChB7/B,EAAK3wH,QAAQg1C,aAAarnB,EAAK3Q,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,IAAMsrG,EAAAA,IAC3E,MAEQlK,EAAKoK,mBAAqBpK,EAAK9lH,SAC/B8lH,EAAKqyC,aAAapvH,UAAUzB,IAAI,sBAG5C,EACAk9H,EAAahzJ,UAAUk0J,8BAAgC,SAAUtlK,GAC7D,IAAI8pK,EAAa/3J,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,yBAC/B,YAAhBtkB,EAAKk3C,SACD4yH,GACApiI,EAAAA,EAAAA,IAAOoiI,GAGP/3J,KAAKszJ,sBAGjB,EACOjB,CACX,CA3wBkC,iCClB9B9yH,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAyBzCs4H,EAAoC,SAAUvsJ,GAE9C,SAASusJ,IACL,IAAIhoJ,EAAmB,OAAXvE,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,KAQhE,OAPAgQ,EAAMhtB,QAAUgtB,EAAMK,OACjBO,cAAc,KAAM,CAAE31B,UAAW,eAAgBs7C,MAAO,CAAEm9F,SAAU,QACzE1jH,EAAM+0I,YAAc,IAAIhY,EAAAA,EACxB/8H,EAAMioJ,QAAUjoJ,EAAMK,OAAOO,cAAc,OAAQ,CAAE31B,UAAW,iBAChE+0B,EAAMkoJ,QAAUloJ,EAAMK,OAAOO,cAAc,MAAO,CAAE31B,UAAW,0BAA2Bs7C,MAAO,CAAE,cAAe,UAClHvmB,EAAMmoJ,IAAMnoJ,EAAMK,OAAOO,cAAc,OACvCZ,EAAMooJ,UAAYpoJ,EAAMK,OAAOO,cAAc,QAAS,CAAE31B,UAAW,mBAAoBs7C,MAAO,CAAE,KAAQ,WAAY,aAAcvmB,EAAMqoJ,UAAUp8G,YAAY,oBACvJjsC,CACX,CA+NA,OA1OAuvB,EAAUy4H,EAAoBvsJ,GAiB9BusJ,EAAmB34J,UAAUk7G,OAAS,WAClC,OAAOv6G,KAAKm4J,IAAI/mJ,WACpB,EAUA4mJ,EAAmB34J,UAAUisC,OAAS,SAAUkvE,EAAM30H,EAAM2wC,GACxD,IAAIigB,EAAOz2C,KAAKhd,QAAQouB,YACpBknJ,EAAct4J,KAAKqQ,OAAOO,cAAc,MAAO,CAAE31B,UAAW,wCAAyCs7C,MAAO,CAAE,cAAe,UACjI,OAAOv2B,KAAKu4J,cAAc/9C,EAAM/jE,EAAM6hH,EAC1C,EAQAN,EAAmB34J,UAAU8rC,QAAU,SAAUqvE,EAAM/jE,GACnDz2C,KAAK4lC,MAAM6Q,GACX,IAAI6hH,EAAct4J,KAAKqQ,OAAOO,cAAc,MAAO,CAAE31B,UAAW,wCAAyCs7C,MAAO,CAAE,cAAe,UACjI,OAAOv2B,KAAKu4J,cAAc/9C,EAAM/jE,EAAM6hH,EAC1C,EACAN,EAAmB34J,UAAUumC,MAAQ,SAAU6Q,GAC3CA,EAAKllC,UAAY,EACrB,EAEAymJ,EAAmB34J,UAAUk5J,cAAgB,SAAU/9C,EAAM/jE,EAAM6hH,GAC/D,IAKIE,EA0EAp5K,EA/EAggF,EAASo7C,EAAKp7C,OACdq5F,EAAW,CAAC,EACZC,EAAc,GAEdh+C,EAAW16G,KAAKu6G,SASpB,IAPA/jF,EAAAA,EAAAA,IAAWkkF,EAAU,CACjB,eAAgBt7C,EAAOlzD,IACvB,MAAS,qBAERyB,EAAAA,EAAAA,IAAkByxD,EAAOu5F,uBAC1BH,EAAcx4J,KAAKoN,SAASgyD,EAAO51E,WAAY41E,IAE/B,aAAhBA,EAAO9kF,KAAqB,CAC5B,IAAIiD,EAAQ6hF,EAAO51E,YACdmkB,EAAAA,EAAAA,IAAkB6qJ,KACnBj7K,EAAQi7K,GAEZ,IAAIhvK,EAAawW,KAAKi4J,QAAQ7mJ,YAC9B5nB,EAAW41E,EAAOw5F,gBAAkB54J,KAAKqQ,OAAOk1C,SAAShoE,GACzDm9H,EAASvpG,YAAY3nB,EACzB,KACK,CACD41E,EAAOy5F,SAAW,cAClB,IAAIC,GAAejuG,EAAAA,EAAAA,IAAe7qD,KAAKqQ,OAAOO,eAAe,EAAO,CAAEj1B,SAAS,EAAO/C,MAAO,MAC7FonB,KAAKo4J,UAAUxzK,GAAK,YAAcw6E,EAAOlzD,IACzC4sJ,EAAa9gI,aAAah4B,KAAKo4J,UAAUhnJ,YAAa0nJ,EAAav9C,YAC/Dv7G,KAAKqQ,OAAOlwB,WACZs2C,EAAAA,EAAAA,IAAS,CAACqiI,GAAe,CAAC94J,KAAKqQ,OAAOlwB,WAE1Cu6H,EAASvpG,YAAY2nJ,GACrBp+C,EAAS9jF,UAAUzB,IAAI,qBAC3B,CAIA,GAHAn1B,KAAK+4J,uBAAuBtiH,EAAM+jE,GAClCx6G,KAAK27G,WAAWllE,EAAMikE,GACtBjkE,EAAKtlC,YAAYnR,KAAKk4J,QAAQ9mJ,aACzBpR,KAAKqQ,OAAOnnB,gBAAsD,cAApC8W,KAAKqQ,OAAOlnB,eAAe7O,MACzD8kF,EAAOl2E,kBAAmBykB,EAAAA,EAAAA,IAAkByxD,EAAOx9E,UAClDoe,KAAKqQ,OAAO81G,iBAAkB/mD,EAAO+mD,gBAAiB,EACxD3vF,EAAAA,EAAAA,IAAW8hI,EAAa,CACpB,eAAgB,YAAcl5F,EAAOlzD,MAEzCwsJ,EAAcA,EAAYzgL,OAASygL,EAAc,KAAO14J,KAAKq4J,UAAUp8G,YAAY,qBAAuBj8C,KAAKq4J,UAAUp8G,YAAY,qBACrIxF,EAAK7f,UAAUzB,IAAI,eACnB,IAAI6jI,EAAiB,GACrB,GAAIh5J,KAAKqQ,OAAOlnB,eAAeirH,QAAQn8H,QAAU+nB,KAAKqQ,OAAOlnB,eAAeirH,QAAQn8H,SAAW+gL,EAAe/gL,OAE1G,IADA,IAAIq/H,EAAgBt3G,KAAKqQ,OAAO0mG,uBACvBjwH,EAAQ,EAAGA,EAAQkZ,KAAKqQ,OAAO+jG,QAAQn8H,OAAQ6O,IACpD,IAAK,IAAIoqE,EAAQ,EAAGA,EAAQlxD,KAAKqQ,OAAOlnB,eAAeirH,QAAQn8H,OAAQi5E,IACnE,GAAIlxD,KAAKqQ,OAAOlnB,eAAeirH,QAAQl1H,SAASgyE,EAAM91E,WAAY,KAAKwG,QAAUw9E,EAAOx9E,OAChF01H,EAAcr/H,QACXmnF,EAAO43C,kBAAoBh3G,KAAKqQ,OAAOlnB,eAAeirH,QAAQl1H,SAASgyE,EAAM91E,WAAY,KAAKwG,MAAQ,CAC7G02K,EAAY1hI,UAAUzB,IAAI,cAC1B6jI,EAAev5K,KAAK2/E,EAAOx9E,OAC3B,KACJ,CAIZ60D,EAAKtlC,YAAYmnJ,EAAYlnJ,YACjC,CACIopG,EAAKv/H,WACLw7D,EAAK7f,UAAUzB,IAAIqlF,EAAKv/H,WAExBmkF,EAAO65F,mBACPC,EAAAA,EAAAA,IAAsBziH,EAAM2oB,EAAO65F,kBAEnCj5J,KAAKqQ,OAAOpnB,cAAgBm2E,EAAOn2E,eACnCwvK,EAAS1zJ,KAAO,OAChB2zJ,EAAcA,EAAYzgL,OAASygL,EAAc,KAAO14J,KAAKq4J,UAAUp8G,YAAY,mBAAqBj8C,KAAKq4J,UAAUp8G,YAAY,qBAElIj8C,KAAKqQ,OAAOmlG,eAAiBp2C,EAAOo2C,eAAkBx1G,KAAKqQ,OAAOqiJ,iBAAmBtzF,EAAOszF,mBAC7F+F,EAASU,SAAU,EACnBT,EAAcA,EAAYzgL,OAASygL,EAAc,KAAO14J,KAAKq4J,UAAUp8G,YAAY,oBAAsBj8C,KAAKq4J,UAAUp8G,YAAY,qBAEpIj8C,KAAKqQ,OAAO81G,iBACZuyC,EAAcA,EAAYzgL,OAASygL,EAAc,KAAO14J,KAAKq4J,UAAUp8G,YAAY,yBAA2Bj8C,KAAKq4J,UAAUp8G,YAAY,0BAE7IxF,EAAOz2C,KAAKo5J,oBAAoBh6F,EAAQ3oB,GAExC,IAAI4iH,EAAUr5J,KAAKqQ,OACf0iJ,EAAWsG,EAAQrG,sBAAsB5zF,EAAOx9E,OACpD,KAAK+rB,EAAAA,EAAAA,IAAkByxD,EAAO4uC,gBAAiB,CAE3C,IAAIsrD,EAAeD,EAAQr2K,QAAQ4B,GAAKw6E,EAAOlzD,IAAM,iBACjDqH,EAAM,mBACN4iG,EAAM/2C,EACNy7C,EAAkB76G,KAAKqQ,OAAOyrF,SAA8C,kBAA3B18B,EAAO4uC,eACxDurD,EAAiBv5J,KAAKqQ,OAAO0qG,eAAiB/6G,KAAKqQ,OAAO0qG,cAAcC,eACxEh7G,KAAKqQ,OAAO0qG,cAAcC,cAAclf,QAC5C,GAAI+e,GAAmB0+C,EAAgB,CACnC,IAAI3qJ,EAAS,CAAE,MAASmkJ,GACxBt8G,EAAKxe,kBAAkB1mB,UAAY,GACnC6tD,EAAO6zF,mBAAP7zF,EAA2BzwD,EAAAA,EAAAA,IAAOC,EAAQunG,GAAMkjD,EAAS,iBAAkBC,EAAct5J,KAAKqQ,OAAO,GAAKkD,GAAM,KAAMkjC,EAAKxe,mBAC3Hj4B,KAAKqQ,OAAO8qG,iBAChB,MAEI/7H,EAASggF,EAAO6zF,mBAAP7zF,EAA2BzwD,EAAAA,EAAAA,IAAO,CAAE,MAASokJ,GAAY58C,GAAMkjD,EAAS,iBAAkBC,EAAct5J,KAAKqQ,OAAO,GAAKkD,QAAMr4B,OAAWA,EAAW8kB,KAAKqQ,OAAa,MAChLomC,EAAKxe,kBAAkB1mB,UAAY,IACnC6pG,EAAAA,EAAAA,IAAe3kE,EAAKxe,kBAAmB74C,EAE/C,CAEA,GADA4gB,KAAK+kJ,YAAY8B,WAAWpwG,EAAMgiH,KAC7B9qJ,EAAAA,EAAAA,IAAkByxD,EAAOo6F,oBAAqB7rJ,EAAAA,EAAAA,IAAkByxD,EAAOq6F,WAAY,CACpF,IAAIC,EAAYt6F,EAAOo6F,iBAAmBp6F,EAAOq6F,UACjD/+C,EAASnjF,MAAMkiI,UAAYC,EACT,UAAdA,GAAuC,SAAdA,EACzBjjH,EAAK7f,UAAUzB,IAAkB,UAAdukI,EAAwB,eAAiB,eAEzC,WAAdA,GACLjjH,EAAK7f,UAAUzB,IAAI,gBAE3B,CACwB,SAApBiqC,EAAOu6F,WAAyBv6F,EAAOu6F,UAAqC,SAAzB35J,KAAKqQ,OAAOspJ,SAC/DljH,EAAK7f,UAAUzB,IAAI,cAEO,wBAApBiqC,EAAOu6F,WAAwCv6F,EAAOu6F,UAAqC,wBAAzB35J,KAAKqQ,OAAOspJ,WAC/EN,EAAQtT,gBAAwD,WAAtCsT,EAAQpN,iBAAiBC,UACX,SAAtCmN,EAAQpN,iBAAiBC,WACZ,aAAhB9sF,EAAO9kF,MACPm8D,EAAK7f,UAAUzB,IAAI,qBAGvBujI,GACAjiH,EAAKngB,aAAa,mBAAoBoiI,GAE1CjiH,EAAKngB,aAAa,iBAAkB3oB,EAAAA,EAAAA,IAAkB6sG,EAAKw8C,SAA0B,EAAfx8C,EAAKw8C,SAAa57K,YACxFq7D,EAAKngB,aAAa,eAAgB,KAClC,IAAIwkF,EAAe96G,KAAKqQ,OAAO0qG,eAAiB/6G,KAAKqQ,OAAO0qG,cAAcC,eACtEh7G,KAAKqQ,OAAO0qG,cAAcC,cAAclf,QAC5C,IAAM97F,KAAKqQ,OAAOyrF,SAAW97F,KAAKqQ,OAAO06I,oBACjCjwC,GAAgB96G,KAAKqQ,OAAO0qG,cAAcC,cAAc+vC,uBACxDp9I,EAAAA,EAAAA,IAAkByxD,EAAO4uC,gBAAiB,CAE9C,IAAI83C,EAAY9lJ,KAChB8lJ,EAAUz1I,OAAO8qG,iBAAgB,WAC7B2qC,EAAUz1I,OAAOylB,QAAQ6/G,EAAAA,IAAgB,CAAEn7B,KAAMA,EAAM/jE,KAAMA,GACjE,GACJ,MAEIz2C,KAAKqQ,OAAOylB,QAAQ6/G,EAAAA,IAAgB,CAAEn7B,KAAMA,EAAM/jE,KAAMA,IAE5D,OAAOA,CACX,EACAuhH,EAAmB34J,UAAU+N,SAAW,SAAUxrB,EAAOw9E,GACrD,OAAOA,EAAOu5F,oBAAoB/2K,EAAOw9E,EAC7C,EACA44F,EAAmB34J,UAAU+5J,oBAAsB,SAAUh6F,EAAQ3oB,GACjE,GAAIz2C,KAAKqQ,OAAO81G,gBAAkB/mD,EAAO+mD,kBAAmBx4G,EAAAA,EAAAA,IAAkByxD,EAAOx9E,OAAQ,CACzF,IAAIoB,EAAWgd,KAAKqQ,OAAOO,cAAc,MAAO,CAAE31B,UAAW,uBAAwBs7C,MAAO,CAAE,cAAe,UACzGqjI,EAAuB,GAC3B,GAAI55J,KAAKqQ,OAAOlnB,eAAeirH,QAAQn8H,QAAU+nB,KAAKqQ,OAAOlnB,eAAeirH,QAAQn8H,SAAW2hL,EAAqB3hL,OAChH,IAAK,IAAIktB,EAAI,EAAGA,EAAInF,KAAKqQ,OAAO+jG,QAAQn8H,OAAQktB,IAC5C,IAAK,IAAIqR,EAAI,EAAGA,EAAIxW,KAAKqQ,OAAOlnB,eAAeirH,QAAQn8H,OAAQu+B,IAC3D,GAAIxW,KAAKqQ,OAAOlnB,eAAeirH,QAAQl1H,SAASs3B,EAAEp7B,WAAY,KAAKwG,QAAUw9E,EAAOx9E,MAAO,CACvFoB,EAAQ4zC,UAAUzB,IAAI,cACtBykI,EAAqBn6K,KAAK2/E,EAAOx9E,OACjC,KACJ,CAIZ60D,EAAK7f,UAAUzB,IAAI,eACnBshB,EAAKtlC,YAAYnuB,EACrB,CACA,GAAIgd,KAAKqQ,OAAOmkJ,cAAe,CAC3B,IAAIhoJ,EAAUxM,KAAKqQ,OAAOO,cAAc,OACxCpE,EAAQvxB,UAAYmkF,EAAOo1F,cAAgB,uBAAyB,cACpE/9G,EAAKtlC,YAAY3E,EACrB,CACA,OAAOiqC,CACX,EAQAuhH,EAAmB34J,UAAUs8G,WAAa,SAAUllE,EAAMulE,GAEtD,OADAvlE,EAAKtlC,YAAY6qG,GACVvlE,CACX,EACOuhH,CACX,CA5OwC,CA4OtCv7C,EAAAA,GCrQEl9E,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAsBzCm6H,EAA2C,SAAUpuJ,GAErD,SAASouJ,IACL,IAAI7pJ,EAAmB,OAAXvE,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,KAMhE,OALAgQ,EAAMhtB,QAAUgtB,EAAMK,OAAOO,cAAc,KAAM,CAC7C31B,UAAW,mCAAoCs7C,MAAO,CAClDm9F,SAAU,QAGX1jH,CACX,CAqDA,OA9DAuvB,EAAUs6H,EAA2BpuJ,GAmBrCouJ,EAA0Bx6J,UAAUisC,OAAS,SAAUkvE,EAAM30H,EAAM2wC,GAC/D,IAAIigB,EAAOz2C,KAAKhd,QAAQouB,YACpBT,EAAM3Q,KAAKqQ,OAAOO,cAAc,MAAO,CACvC31B,UAAW,yBACXs7C,MAAO,CAAE,eAAgBikF,EAAKp7C,OAAOlzD,OAErCkzD,EAASo7C,EAAKp7C,OA0BlB,GAzBA3oB,EAAKtlC,YAAYR,IACZhD,EAAAA,EAAAA,IAAkByxD,EAAO4uC,gBAI1BhuG,KAAK27G,WAAWhrG,EAAK3Q,KAAKqQ,OAAOk1C,SAAS6Z,EAAO51E,YAAa41E,EAAOw5F,iBAHrEx9C,EAAAA,EAAAA,IAAezqG,EAAKyuD,EAAO6zF,mBAAP7zF,CAA2BA,EAAQp/D,KAAKqQ,OAAQ,mBAKpEmqG,EAAKp7C,OAAO06F,SACZrjH,EAAKngB,aAAa,QAASkkF,EAAKp7C,OAAO06F,SAEnB,SAApB16F,EAAOu6F,WAAyBv6F,EAAOu6F,UAAqC,SAAzB35J,KAAKqQ,OAAOspJ,SAC/DljH,EAAK7f,UAAUzB,IAAI,eAEM,wBAApBiqC,EAAOu6F,WAAwCv6F,EAAOu6F,UAAqC,wBAAzB35J,KAAKqQ,OAAOspJ,WACnFljH,EAAK7f,UAAUzB,IAAI,sBAElBxnB,EAAAA,EAAAA,IAAkB6sG,EAAKp7C,OAAOq6F,aAC/B9oJ,EAAI4mB,MAAMkiI,UAAYj/C,EAAKp7C,OAAOq6F,WAElCj/C,EAAKp7C,OAAO65F,mBACZC,EAAAA,EAAAA,IAAsBziH,EAAM+jE,EAAKp7C,OAAO65F,kBAE5CxiH,EAAKngB,aAAa,UAAWkkF,EAAKgyB,QAAQpxJ,YAC1Cq7D,EAAKngB,aAAa,eAAgBkkF,EAAKgyB,QAAQpxJ,YAC/Cq7D,EAAKngB,aAAa,eAAgB,KAC9Bt2B,KAAKqQ,OAAOmkJ,cAAe,CAC3B,IAAIhoJ,EAAUxM,KAAKqQ,OAAOO,cAAc,OACxCpE,EAAQvxB,UAAYu/H,EAAKp7C,OAAOo1F,cAAgB,uBAAyB,cACzE/9G,EAAKtlC,YAAY3E,EACrB,CAKA,OAJIguG,EAAKv/H,WACLw7D,EAAK7f,UAAUzB,IAAIqlF,EAAKv/H,WAE5B+kB,KAAKqQ,OAAOylB,QAAQ6/G,EAAAA,IAAgB,CAAEn7B,KAAMA,EAAM/jE,KAAMA,IACjDA,CACX,EACOojH,CACX,CAhE+C,CAgE7Cp9C,EAAAA,GCtFEl9E,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAoBzCq6H,EAAoC,SAAUtuJ,GAE9C,SAASsuJ,IACL,IAAI/pJ,EAAmB,OAAXvE,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,KAEhE,OADAgQ,EAAMhtB,QAAUgtB,EAAMK,OAAOO,cAAc,KAAM,CAAE31B,UAAW,iBACvD+0B,CACX,CAcA,OAnBAuvB,EAAUw6H,EAAoBtuJ,GAc9BsuJ,EAAmB16J,UAAUisC,OAAS,SAAUkvE,EAAM30H,GAClD,IAAI4wD,EAAOz2C,KAAKhd,QAAQouB,YAExB,OADA8nJ,EAAAA,EAAAA,IAAsBziH,EAAM+jE,EAAKhkF,YAC1BigB,CACX,EACOsjH,CACX,CArBwC,CAqBtCt9C,EAAAA,GCzCEl9E,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAqBzCs6H,EAA0C,SAAUvuJ,GAEpD,SAASuuJ,IACL,IAAIhqJ,EAAmB,OAAXvE,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,KAKhE,OAJAgQ,EAAMiqJ,QAAU,EAChBjqJ,EAAMhtB,QAAUgtB,EAAMK,OACjBO,cAAc,KAAM,CAAE31B,UAAW,iBAClCs7C,MAAO,CAAE3xC,GAAIorB,EAAMK,OAAOrtB,QAAQ4B,GAAK,cAAe8uI,SAAU,QAC7D1jH,CACX,CA4EA,OApFAuvB,EAAUy6H,EAA0BvuJ,GAgBpCuuJ,EAAyB36J,UAAUisC,OAAS,SAAUkvE,EAAM30H,GACxDma,KAAKhd,QAAQ4B,GAAKob,KAAKqQ,OAAOrtB,QAAQ4B,GAAK,cAAgBob,KAAKi6J,UAChE,IAII76K,EACA86K,EACAC,EANA1jH,EAAOz2C,KAAKhd,QAAQouB,YACpBuiG,EAAO3zG,KAAKqQ,OACZ+uD,EAASo7C,EAAKp7C,OACdg7F,EAAYh7F,EAAOw5F,aAAex5F,EAAOw5F,eAAiB,YAI9D/yK,EAAK2D,WAAagxH,EAAKp7C,OAAO51E,WAC1BgxH,EAAK9D,eACLwjD,EAAYl6J,KAAKxmB,OAAOghI,EAAKp7C,OAAQo7C,EAAKp7C,OAAO+jF,cAAc,aAAct9J,EAAM20H,EAAKp7C,UAI5F,IAFA,IAAI7hF,EAAQi9H,EAAK9D,aAAewjD,EAAY1/C,EAAKp7C,OAAO22C,oBAAsBlwH,EAAK7G,IAC/EghB,KAAKxmB,OAAOghI,EAAKp7C,OAAQo7C,EAAKp7C,OAAO+jF,cAAc,MAAOt9J,EAAM20H,EAAKp7C,SAChE5oD,EAAI,EAAGA,EAAIm9F,EAAK33B,WAAW/jG,OAAQu+B,IACxC,IAAK,IAAIrR,EAAI,EAAGA,EAAIwuG,EAAK33B,WAAW98F,SAASs3B,EAAEp7B,WAAY,KAAKg5H,QAAQn8H,OAAQktB,IAC5E,GAAIwuG,EAAKyuC,oBAAoB,GAAGxgK,QAAU+xH,EAAK33B,WAAW98F,SAASs3B,EAAEp7B,WAAY,KAAKg5H,QAAQl1H,SAASimB,EAAE/pB,WAAY,KAChHwG,OAAS+xH,EAAK33B,WAAW98F,SAASs3B,EAAEp7B,WAAY,KAAKg5H,QAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKi/K,qBAAsB,CAE5GF,EADAxmD,EAAK33B,WAAW98F,SAASs3B,EAAEp7B,WAAY,KAAKg5H,QAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKi/K,qBAAqB/7K,SAAS,KAC7Fq1H,EAAK33B,WAAW98F,SAASs3B,EAAEp7B,WAAY,KAAKg5H,QAAQl1H,SAASimB,EAAE/pB,WAAY,KACvFi/K,qBAAqBpmK,MAAM,KAAK,GAAKpO,EAAK8tH,EAAKyuC,oBAAoB,GAAGxgK,OAAO+xH,EAC7E33B,WAAW98F,SAASs3B,EAAEp7B,WAAY,KAAKg5H,QAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKd,MAC5Eq5H,EAAK33B,WAAW98F,SAASs3B,EAAEp7B,WAAY,KAAKg5H,QAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKi/K,qBAAqBpmK,MAAM,KAAK,GAGnG0/G,EAAK33B,WAAW98F,SAASs3B,EAAEp7B,WAAY,KACnDg5H,QAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKi/K,qBAE7C,KACJ,CAGR,IAAK1sJ,EAAAA,EAAAA,IAAkBgmG,EAAK8B,cAAc6kD,iBAoBlC3mD,EAAK8B,cAAcC,kBACnBj/D,EAAK,GAAK2jH,GAAap6J,KAAKqQ,OAAOk1C,SAASi1D,EAAKp7C,OAAO51E,YAAc,KAAOwW,KAAKqQ,OAAOk1C,SAAShoE,IAC7F48K,EAAiB,MAAQA,EAAiB,IAG/C1jH,EAAK,GAAK2jH,GAAap6J,KAAKqQ,OAAOk1C,SAASi1D,EAAKp7C,OAAO51E,YAAc,KAAOwW,KAAKqQ,OAAOk1C,SAAShoE,GAC9F,MAAQsI,EAAKqrE,MAAQ,KAAOrrE,EAAKqrE,MAAQ,EAAIlxD,KAAKq4J,UAAUp8G,YAAY,QAAUj8C,KAAKq4J,UAAUp8G,YAAY,WAC1Gk+G,EAAiB,MAAQA,EAAiB,QA3BG,CACxD,IAAIt/C,EAAkB76G,KAAKqQ,OAAOyrF,SAA2D,kBAAxC6X,EAAK8B,cAAc6kD,gBACpEx/C,EAAe96G,KAAKqQ,OAAO0qG,eAAiB/6G,KAAKqQ,OAAO0qG,cAAcC,eACtEh7G,KAAKqQ,OAAO0qG,cAAcC,cAAclf,QAC5C,GAAI+e,GAAmBC,EAAc,CACjC,IAAIG,EAAStH,EAAK3wH,QAAQ4B,GAAK,mBAC/Bo2G,EAAAA,EAAAA,IAAiB2Y,EAAK8B,cAAc6kD,gBAApCt/D,CAAqDn1G,EAAMma,KAAKqQ,OAAQ,kBAAmB4qG,EAAQ,KAAM,KAAMxkE,GAC/Gz2C,KAAKqQ,OAAO8qG,iBAChB,MAEI/7H,EADK4gB,KAAKqQ,OAAOu4C,OACRoyC,EAAAA,EAAAA,IAAiB2Y,EAAK8B,cAAc6kD,gBAApCt/D,CAAqDn1G,EAAMma,KAAKqQ,SAGhE2qF,EAAAA,EAAAA,IAAiB2Y,EAAK8B,cAAc6kD,gBAApCt/D,CAAqDn1G,GAE7Dg1H,GAAoBC,IACrBM,EAAAA,EAAAA,IAAe3kE,EAAMr3D,EAE7B,CAeA,OAHAq3D,EAAKngB,aAAa,UAAWkkF,EAAKgyB,QAAQpxJ,YAC1Cq7D,EAAKngB,aAAa,aAAcmgB,EAAKllC,UAAYvR,KAAKq4J,UAAUp8G,YAAY,iBAC5ExF,EAAKngB,aAAa,QAASmgB,EAAKqQ,aACzBrQ,CACX,EACOujH,CACX,CAtF8C,CAsF5Cv9C,EAAAA,GAOE89C,EAA+C,SAAU9uJ,GAEzD,SAAS8uJ,IACL,IAAIvqJ,EAAmB,OAAXvE,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,KAEhE,OADAgQ,EAAMhtB,QAAUgtB,EAAMK,OAAOO,cAAc,KAAM,CAAE31B,UAAW,mBACvD+0B,CACX,CAkBA,OAvBAuvB,EAAUg7H,EAA+B9uJ,GAiBzC8uJ,EAA8Bl7J,UAAUisC,OAAS,SAAUkvE,EAAM30H,GAC7D,IAAI4wD,EAAOz2C,KAAKhd,QAAQouB,YAGxB,OAFAqlC,EAAKllC,UAAY,SACjBklC,EAAKngB,aAAa,UAAWkkF,EAAKgyB,QAAQpxJ,YACnCq7D,CACX,EACO8jH,CACX,CAzBmD,CAyBjD99C,EAAAA,GC3IEl9E,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAoBzC86H,EAAoC,SAAU/uJ,GAE9C,SAAS+uJ,IACL,OAAkB,OAAX/uJ,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CA+BA,OAlCAu/B,EAAUi7H,EAAoB/uJ,GAe9B+uJ,EAAmBn7J,UAAUisC,OAAS,SAAUkvE,EAAM30H,EAAMogE,EAAM47B,GAC9D,IAAIprC,EAAOz2C,KAAKhd,QAAQouB,YAgBxB,OAfAqlC,EAAKngB,aAAa,iBAAkBzwC,EAAKjE,OACzC60D,EAAKngB,aAAa,kBAAmBzwC,EAAK7G,KAC1Cy3D,EAAKngB,aAAa,gBAAiBurD,EAAW,OAAS,SACvDprC,EAAKngB,aAAa,WAAY,MAC1Bt2B,KAAKqQ,OAAO80I,wBAA0BnlJ,KAAKqQ,OAAO80I,uBAAuBC,aACzE5qC,EAAKqoB,SAAWjC,EAAAA,GAASyiB,OACzB5sG,EAAKx7D,UAAY4mG,EAAW,sCAAwC,0CAGpEprC,EAAKx7D,UAAY4mG,EAAW,qBAAuB,uBACnDprC,EAAKtlC,YAAYnR,KAAKqQ,OAAOO,cAAc,IAAK,CAC5C31B,UAAW4mG,EAAW,4CAA8C,4CACpEtrD,MAAO,CAAE/6B,KAAM,IAAK,MAASqmF,EAAW,WAAa,iBAGtDprC,CACX,EACO+jH,CACX,CApCwC,CAoCtCT,GCxDEx6H,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAmBzC+6H,EAA0C,SAAUhvJ,GAEpD,SAASgvJ,IACL,IAAIzqJ,EAAmB,OAAXvE,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,KAEhE,OADAgQ,EAAMhtB,QAAUgtB,EAAMK,OAAOO,cAAc,KAAM,CAAE31B,UAAW,uBACvD+0B,CACX,CAcA,OAnBAuvB,EAAUk7H,EAA0BhvJ,GAcpCgvJ,EAAyBp7J,UAAUisC,OAAS,SAAUkvE,EAAM30H,GACxD,IAAI4wD,EAAOz2C,KAAKhd,QAAQouB,YAExB,OADAqlC,EAAKtlC,YAAYnR,KAAKqQ,OAAOO,cAAc,MAAO,CAAE31B,UAAW,8BAA+Bs2B,UAAW,MAClGklC,CACX,EACOgkH,CACX,CArB8C,CAqB5Ch+C,EAAAA,GCxCEl9E,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAmBzCg7H,EAAgD,SAAUjvJ,GAE1D,SAASivJ,IACL,IAAI1qJ,EAAmB,OAAXvE,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,KAEhE,OADAgQ,EAAMhtB,QAAUgtB,EAAMK,OAAOO,cAAc,KAAM,CAAE31B,UAAW,uBACvD+0B,CACX,CAcA,OAnBAuvB,EAAUm7H,EAAgCjvJ,GAc1CivJ,EAA+Br7J,UAAUisC,OAAS,SAAUkvE,EAAM30H,GAC9D,IAAI4wD,EAAOz2C,KAAKhd,QAAQouB,YAExB,OADAqlC,EAAKtlC,YAAYnR,KAAKqQ,OAAOO,cAAc,MAAO,CAAE31B,UAAW,iBACxDw7D,CACX,EACOikH,CACX,CArBoD,CAqBlDj+C,EAAAA,GCxCEl9E,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAoBzCi7H,EAA0C,SAAUlvJ,GAEpD,SAASkvJ,IACL,IAAI3qJ,EAAmB,OAAXvE,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,KAKhE,OAJAgQ,EAAMhtB,QAAUgtB,EAAMK,OAAOO,cAAc,KAAM,CAC7C31B,UAAW,sBACXs7C,MAAO,CAAE,gBAAiB,QAASm9F,SAAU,QAE1C1jH,CACX,CAyBA,OAjCAuvB,EAAUo7H,EAA0BlvJ,GAiBpCkvJ,EAAyBt7J,UAAUisC,OAAS,SAAUkvE,EAAM30H,EAAM2wC,GAC9D,IAAIigB,EAAOz2C,KAAKhd,QAAQouB,YAaxB,OAZIolB,KAAe7oB,EAAAA,EAAAA,IAAkB6oB,EAAkB,QACnDigB,EAAKx7D,UAAY,GACjBw7D,EAAKx7D,UAAYu7C,EAAkB,MACnCigB,EAAKtlC,YAAYnR,KAAKqQ,OAAOO,cAAc,IAAK,CAAE31B,UAAW,6CAA8Cs7C,MAAO,CAC1G/6B,KAAM,IAAK,MAASwE,KAAKq4J,UAAUp8G,YAAY,iBAIvDxF,EAAKtlC,YAAYnR,KAAKqQ,OAAOO,cAAc,IAAK,CAAE31B,UAAW,+CAAgDs7C,MAAO,CAC5G/6B,KAAM,IAAK,MAASwE,KAAKq4J,UAAUp8G,YAAY,iBAGpDxF,CACX,EACOkkH,CACX,CAnC8C,CAmC5Cl+C,EAAAA,GCvDEl9E,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAmBzCk7H,EAAqC,SAAUnvJ,GAE/C,SAASmvJ,IACL,IAAI5qJ,EAAmB,OAAXvE,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,KAKhE,OAJAgQ,EAAMhtB,QAAUgtB,EAAMK,OAAOO,cAAc,KAAM,CAC7C31B,UAAW,kCACXs7C,MAAO,CAAEm9F,SAAU,QAEhB1jH,CACX,CAqBA,OA7BAuvB,EAAUq7H,EAAqBnvJ,GAiB/BmvJ,EAAoBv7J,UAAUisC,OAAS,SAAUkvE,EAAM30H,GACnD,IAAIg1K,EAAc76J,KAAKhd,QAAQouB,YAS/B,OARAypJ,EAAY1pJ,YAAYnR,KAAKqQ,OAAOO,cAAc,MAAO,CACrD31B,UAAW,6DACXs7C,MAAO,CAAE,cAAe,WAExBikF,EAAKxV,aACL61D,EAAYjkI,UAAUzB,IAAI,yBAC1B0lI,EAAYjkI,UAAUzB,IAAI,aAEvB0lI,CACX,EACOD,CACX,CA/ByC,CA+BvCn+C,EAAAA,GClDEl9E,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAoBzCo7H,EAA2C,SAAUrvJ,GAErD,SAASqvJ,IACL,IAAI9qJ,EAAmB,OAAXvE,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,KAEhE,OADAgQ,EAAMhtB,QAAUgtB,EAAMK,OAAOO,cAAc,KAAM,CAAE31B,UAAW,oBACvD+0B,CACX,CAcA,OAnBAuvB,EAAUu7H,EAA2BrvJ,GAcrCqvJ,EAA0Bz7J,UAAUisC,OAAS,SAAUkvE,EAAM30H,GACzD,IAAI4wD,EAAOz2C,KAAKhd,QAAQouB,YAExB,OADAqlC,EAAKtlC,aAAYP,EAAAA,EAAAA,IAAc,MAAO,CAAE31B,UAAW,iBAC5Cw7D,CACX,EACOqkH,CACX,CArB+C,CAqB7Cr+C,EAAAA,GCXEs+C,EAAwB,WAOxB,SAASA,EAAO1qJ,EAAQwzG,GACpB7jH,KAAKg7J,WAAY,EACjBh7J,KAAKi7J,QAAU,EACfj7J,KAAKqQ,OAASA,EACdrQ,KAAK6jH,QAAUA,EACf7jH,KAAKna,KAAO,IAAIgtH,EAAAA,EAAKxiG,EAAQwzG,GAC7B7jH,KAAK+hE,KAAO8hD,EAAQW,WAAW,gBAC/BxkH,KAAK+kJ,YAAc/kJ,KAAK6jH,QAAQW,WAAW,eAC3CxkH,KAAKk7J,SAAWl7J,KAAK6jH,QAAQW,WAAW,mBACxCxkH,KAAK6D,kBACT,CAgqBA,OA1pBAk3J,EAAO17J,UAAUisC,OAAS,WACtB,IAAIqoE,EAAO3zG,KAAKqQ,OAChBrQ,KAAKm7J,eAAiBn7J,KAAKk7J,SAASE,YAAYzb,EAAAA,GAAWkV,QAC3D70J,KAAKq7J,gBAAkBr7J,KAAKk7J,SAASE,YAAYzb,EAAAA,GAAW2b,SAC5Dt7J,KAAKm7J,eAAevU,cACpB5mJ,KAAKq7J,gBAAgBzU,cACjBjzC,EAAKM,aAAah8H,SAClB+nB,KAAKu7J,kBAAmB,EACxBv7J,KAAKm7J,eAAenU,cACpBhnJ,KAAKq7J,gBAAgBrU,cACrBhnJ,KAAKw7J,UAAS,IAElBx7J,KAAKqQ,OAAO05H,aAAaznE,WACzBtiE,KAAKqQ,OAAO05H,aAAa0xB,YACE,SAAvBz7J,KAAKqQ,OAAO2jC,QACZh0C,KAAKqQ,OAAO05H,aAAakc,aAE7BjmJ,KAAK07J,oBACT,EAOAX,EAAO17J,UAAU8rC,QAAU,SAAU1vD,GACjC,IAAIu0B,EAAQhQ,UACF,IAANvkB,IAAgBA,EAAI,CAAEkgG,YAAa,YACvC,IAAIg4B,EAAO3zG,KAAKqQ,OAChBsjG,EAAK5sF,OAAOtrC,EAAEkgG,YAAc,SAAUlgG,GACtCk4H,EAAK79E,QAAQzC,EAAAA,IAAoB53C,GAAG,SAAUwS,GAE1C,QADa,IAATA,IAAmBA,EAAO,CAAE0tF,YAAa,YACzC1tF,EAAK1G,OACLosH,EAAK5sF,OAAOsM,EAAAA,IAAoBplC,OADpC,CAYA,GARI0lH,EAAKm7B,iBAAmC,gBAAhB7gJ,EAAKgV,QAAkD,cAArBhV,EAAK0tF,aAAqD,KAAtB1tF,EAAK0tK,cACnF,QAAhB1tK,EAAKgV,UACL0wG,EAAKioD,gBAAoC,oBAAI,GAE7CjoD,EAAKkB,aAAelB,EAAKqB,aAAa6mD,WAAaloD,EAAKyB,YAAYC,SAASC,WAC5D,QAAhBrnH,EAAKgV,QAAyC,SAArBhV,EAAK0tF,aAA2Bg4B,EAAKyB,YAAYC,SAASymD,UACpFnoD,EAAKh5E,cAAc,CAAEq6E,aAAc,CAAEz1B,SAAUo0B,EAAKqB,aAAaz1B,SAAW,KAAO,GAE9D,WAArBtxF,EAAK0tF,aAA4Bg4B,EAAKkB,YAAa,CACnD,IAAIknD,EAAa9tK,EAAKpI,KAAK5N,OACvBi5E,EAAQyiD,EAAKqB,aAAagnD,kBAAoBD,EAC5BpoD,EAAKmwB,wBAAwB7rJ,OAE3B8jL,IAAe7qG,IAAWyiD,EAAKqB,aAAaC,YAAc,GAAKtB,EAAKqB,aAAaz1B,WAAcruB,IACnHyiD,EAAKsoD,gBAAiB,EACtBtoD,EAAKh5E,cAAc,CACfq6E,aAAc,CACVgnD,kBAAmB9qG,EAAO+jD,YAAapzG,KAAKyf,KAAK4vC,EAAQyiD,EAAKqB,aAAaz1B,aAEhF,GACHo0B,EAAKyB,YAAYC,SAAS2mD,kBAAoB9qG,EAEtD,CACyB,YAArBjjE,EAAK0tF,aAA6B3rE,EAAMK,OAAOh3B,YAAc,WAAY22B,EAAMK,OAAOh3B,aAG3D,WAArB4U,EAAK0tF,aAAiD,gBAArB1tF,EAAK0tF,aAAsD,YAArB1tF,EAAK0tF,cAC/E3rE,EAAMK,OAAOolG,cAAcC,mBAAqB1lG,EAAMK,OAAOolG,cAAcrB,QAAQn8H,SAClF+3B,EAAMK,OAAOykG,qBAAuB9kG,EAAMK,OAAOo6I,eACjDz6I,EAAMK,OAAOw3I,eAAe0E,gBAAgBv8I,EAAMK,OAAO2kG,aAAaC,aAL1EjlG,EAAMqrJ,gBAAgB9U,mBAAmBt4J,GASzC+hB,EAAM0rJ,mBAAmBztK,EAlC7B,CAoCJ,GACJ,EAKA8sK,EAAO17J,UAAU68J,eAAiB,WAC9B,IAAIvoD,EAAO3zG,KAAKqQ,OACZ8rJ,EAAcxoD,EAAKM,aACvB,GAAIN,EAAK4uB,eAAgB,CACrB,IAAI65B,EAAmBzoD,EAAK3wH,QAAQ4B,GAAK,iBACzCy+D,EAAAA,GAAgB,GAAK+4G,GAAoB,IACzCj4G,EAAAA,EAAAA,IAAoBi4G,EAAkB,iBAC1C,CACIzoD,EAAK8B,cAAc6kD,kBACnBn2G,EAAAA,EAAAA,IAAoBwvD,EAAK3wH,QAAQ4B,GAAK,kBAAmB,mBAEzD+uH,EAAKm0C,cACL3jG,EAAAA,EAAAA,IAAoBwvD,EAAK3wH,QAAQ4B,GAAK,cAAe,eAErD+uH,EAAK89B,kBACLttF,EAAAA,EAAAA,IAAoBwvD,EAAK3wH,QAAQ4B,GAAK,kBAAmB,mBAEzD+uH,EAAKqB,aAAax+G,WAClB2tD,EAAAA,EAAAA,IAAoBwvD,EAAK3wH,QAAQ4B,GAAK,YAAa,gBAEvD,IAAK,IAAIugB,EAAI,EAAGA,EAAIg3J,EAAYlkL,OAAQktB,IAChCg3J,EAAYj9K,SAASimB,EAAE/pB,WAAY,KAAKob,WACxC6sD,EAAAA,GAAgBswD,EAAK3wH,QAAQ4B,GAAKu3K,EAAYj9K,SAASimB,EAAE/pB,WAAY,KAAK8wB,KAAO,IACjFi4C,EAAAA,EAAAA,IAAoBwvD,EAAK3wH,QAAQ4B,GAAKu3K,EAAYj9K,SAASimB,EAAE/pB,WAAY,KAAK8wB,IAAK,aAEnFiwJ,EAAYj9K,SAASimB,EAAE/pB,WAAY,KAAK4yH,iBACxC7pD,EAAAA,EAAAA,IAAoBwvD,EAAK3wH,QAAQ4B,GAAKu3K,EAAYj9K,SAASimB,EAAE/pB,WAAY,KAAK8wB,IAAM,iBAAkB,kBAEtGiwJ,EAAYj9K,SAASimB,EAAE/pB,WAAY,KAAKu/H,iBACxCx2D,EAAAA,EAAAA,IAAoBwvD,EAAK3wH,QAAQ4B,GAAKu3K,EAAYj9K,SAASimB,EAAE/pB,WAAY,KAAK8wB,IAAM,iBAAkB,kBAI9G,IADA,IAAIm4E,EAAO,OACFj7C,EAAI,EAAGA,EAAIuqE,EAAK33B,WAAW/jG,OAAQmxD,IACxC,IAAK,IAAI5yB,EAAI,EAAGA,EAAIm9F,EAAK33B,WAAW98F,SAASkqD,EAAEhuD,WAAY,KAAKg5H,QAAQn8H,OAAQu+B,IAAK,CACjF,GAAIm9F,EAAK33B,WAAW98F,SAASkqD,EAAEhuD,WAAY,KAAKg5H,QAAQl1H,SAASs3B,EAAEp7B,WAAY,KAAK8yH,eAAgB,CAChG,IAAI+M,EAAStH,EAAK3wH,QAAQ4B,GAAK+uH,EAAK33B,WAAW98F,SAASkqD,EAAEhuD,WAAY,KAAKg5H,QAAQl1H,SAASs3B,EAAEp7B,WAAY,KAAK,GAAKipG,GAAQ,kBAC5HlgC,EAAAA,EAAAA,IAAoB82D,EAAQ,iBAChC,CACA,GAAItH,EAAK33B,WAAW98F,SAASkqD,EAAEhuD,WAAY,KAAKg5H,QAAQl1H,SAASs3B,EAAEp7B,WAAY,KAAKihL,oBAAqB,CACjGphD,EAAStH,EAAK3wH,QAAQ4B,GAAK+uH,EAAK33B,WAAW98F,SAASkqD,EAAEhuD,WAAY,KAAKg5H,QAAQl1H,SAASs3B,EAAEp7B,WAAY,KAAK,GAAKipG,GAAQ,uBAC5HlgC,EAAAA,EAAAA,IAAoB82D,EAAQ,sBAChC,CACA,GAAItH,EAAK33B,WAAW98F,SAASkqD,EAAEhuD,WAAY,KAAKg5H,QAAQl1H,SAASs3B,EAAEp7B,WAAY,KAAKi/K,qBAAsB,CAClGp/C,EAAStH,EAAK3wH,QAAQ4B,GAAK+uH,EAAK33B,WAAW98F,SAASkqD,EAAEhuD,WAAY,KAAKg5H,QAAQl1H,SAASs3B,EAAEp7B,WAAY,KAAK,GAAKipG,GAAQ,wBAC5HlgC,EAAAA,EAAAA,IAAoB82D,EAAQ,uBAChC,CACJ,CAER,EACA8/C,EAAO17J,UAAUs6I,gBAAkB,SAAUl+J,GACzCukB,KAAKqQ,OAAOylB,QAAQzC,EAAAA,IAAuB53C,EAC/C,EAOAs/K,EAAO17J,UAAUq8J,mBAAqB,SAAUztK,GAC5C,IAAI+hB,EAAQhQ,UACC,IAAT/R,IAAmBA,EAAO,CAAC,GAC/B,IAaIuuF,EAbAm3B,EAAO3zG,KAAKqQ,OACZisJ,EAAmD,YAAxC3oD,EAAK4oD,iBAAiBC,eAAoD,kBAArBvuK,EAAK0tF,aAC7C,mBAArB1tF,EAAK0tF,cAA4D,kBAArB1tF,EAAK0tF,aAAwD,mBAArB1tF,EAAK0tF,cACzFg4B,EAAK8oD,qBACa,kBAArBxuK,EAAK0tF,aAAoC1tF,EAAKyuK,mBAAsBJ,GACpEt8J,KAAKqQ,OAAOutF,cAEZ0+D,GACA3oD,EAAKgpD,YAAiC,kBAArB1uK,EAAK0tF,YAAkC1tF,EAAK46J,YAAYC,aAAa/4G,KAC3D,mBAArB9hD,EAAK0tF,YAAmC1tF,EAAKw5E,eAAYvsF,GAEnE8kB,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAA4BplC,GAC/C+R,KAAKg7J,WAAY,EAEjB,IAAI4B,EAAW58J,KAAK68J,sBAEpB,GADA78J,KAAK+kJ,YAAYv0J,QAAQwP,KAAKqQ,OAAO21I,aAAazzI,cAAc,IAAMsrG,EAAAA,KAAmB,GACrF++C,EAAU,CACV,IAAI/uE,EAAW,IAAIC,EAAAA,EACnBtR,EAAcx8E,KAAK88J,SAASjvE,EAAU5/F,EAC1C,CAgBA,GAVIuuF,EALCA,EAKaA,EAAYr1F,MAAK,SAAU1L,GACrC,IAAI2gG,EAAQpsE,EAAMnqB,KAAKguH,gBAAgB7iB,gBACvC,GAAIhhF,EAAMgrJ,UAAW,CACjB,IAAIlhD,EAAM,IAAIhsB,EAAAA,EAEd,OADAgsB,EAAIp8G,QAAQ,CAAEte,OAAQ,GAAI8xE,MAAO,IAC1B4oD,EAAI5yH,OACf,CACA,OAAO8oB,EAAMnqB,KAAK6jG,QAAQz7F,EAAMmuF,EACpC,IAZcp8E,KAAKna,KAAK6jG,QAAQz7F,EAAM+R,KAAKna,KAAKguH,gBAAgB7iB,iBAchEhxF,KAAKqQ,OAAO0mG,uBAAuB9+H,UAAY2kL,GAAY58J,KAAKqQ,OAAOumG,eAAe53H,IAAI/G,QAAS,CACnG,IAAI8kL,EAAa,IAAIjvE,EAAAA,EACrBtR,EAAcA,EAAYr1F,MAAK,SAAU1L,GAErC,OADAu0B,EAAMK,OAAO0W,OAAOsM,EAAAA,IAA0B,CAAEmpD,YAAaA,EAAap9F,OAAQ3D,EAAGyL,QAAS61K,EAAY95J,OAAQhV,IAC3G8uK,EAAW71K,OACtB,GACJ,CACI8Y,KAAKqQ,OAAOolG,cAAcunD,2BAA6Bh9J,KAAKqQ,OAAOolG,cAAcrB,QAAQn8H,SACzFukG,EAAcA,EAAYr1F,MAAK,SAAU1L,GAAK,OAAOu0B,EAAMitJ,qBAAqBxhL,EAAI,KAExF+gG,EAAYr1F,MAAK,SAAU1L,GAAK,OAAOu0B,EAAMktJ,mBAAmBzhL,EAAGwS,EAAO,IACrE5G,OAAM,SAAU5L,GAAK,OAAOu0B,EAAMmtJ,mBAAmB1hL,EAAGwS,EAAO,GACxE,EACA8sK,EAAO17J,UAAUy9J,SAAW,SAAUM,EAAUnvK,GAE5C,OADA+R,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAA0B,CAAE+xD,WAAW,EAAMl+F,QAASk2K,EAAUn6J,OAAQhV,IACpFmvK,EAASl2K,OACpB,EACA6zK,EAAO17J,UAAUw9J,oBAAsB,WACnC,IAAIlpD,EAAO3zG,KAAKqQ,OAChB,SAAWsjG,EAAKzqH,gBAAkByqH,EAAKxqH,eAAeirH,QAAQn8H,QACzD07H,EAAKiD,eAAe53H,IAAI/G,SAAY+nB,KAAK+wF,WAAW/wF,KAAKqQ,OAAO0mG,uBACzE,EACAgkD,EAAO17J,UAAU0xF,WAAa,SAAUqjB,GACpC,IAAIpkG,EAAQhQ,KACZ,OAAOo0G,EAAQzsG,MAAK,SAAUwuG,GAK1B,SAHQnmG,EAAMK,OAAOlnB,eAAeirH,QAAQzsG,MAAK,SAAUpqB,GACvD,OAAO44H,EAAIjqG,MAAQ3uB,EAAM2uB,GAC7B,MACmB8D,EAAMK,OAAOumG,eAAe53H,IAAI/G,OACvD,GACJ,EACA8iL,EAAO17J,UAAUg+J,gBAAkB,SAAUpvK,GACzC,IAAI+hB,EAAQhQ,KACZ/R,EAAK0tF,YAAc,YACnB,IAAIg4B,EAAO3zG,KAAKqQ,OAChB,GAAIsjG,EAAKkB,aAAelB,EAAKqB,aAAa6mD,WAAaloD,EAAKyB,YAAYC,SAASC,WAAa3B,EAAKyB,YAAYC,SAASymD,SAAU,CAC9H,IAAIC,EAAa9tK,EAAc,QAAEuwF,aAAavmG,OAC1C8jL,GACApoD,EAAKh5E,cAAc,CAAEq6E,aAAc,CAAEz1B,SAAUo0B,EAAKqB,aAAaz1B,SAAWw8E,KAAgB,EAEpG,CACA,IAAI70K,EAAU8Y,KAAKna,KAAK41C,YAAYxtC,EAAKowF,QAASr+E,KAAKqQ,OAAOsoG,0BAA0B,GAAI1qH,EAAKk0F,UAC7F/F,EAAQp8E,KAAKna,KAAKguH,gBAAgB7iB,gBAClChxF,KAAKna,KAAK22F,YAAYnjG,WAAW0yG,QACjC/rF,KAAK07J,mBAAmB,CAAE//E,YAAa,cAKvCz0F,EAAQC,MAAK,SAAU1L,GACnBu0B,EAAMnqB,KAAK6jG,QAAQz7F,EAAMmuF,GACpBj1F,MAAK,SAAU1L,GAAK,OAAOu0B,EAAMstJ,UAAU7hL,EAAGwS,EAAO,IACrD5G,OAAM,SAAU5L,GAAK,OAAOu0B,EAAMutJ,UAAU9hL,EAAGwS,EAAO,GAC/D,IACK5G,OAAM,SAAU5L,GAAK,OAAOu0B,EAAMutJ,UAAU9hL,EAAGwS,EAAO,GAEnE,EACA8sK,EAAO17J,UAAUi+J,UAAY,SAAU7hL,EAAGwS,GACtC+R,KAAKk9J,mBAAmBzhL,EAAGwS,EAC/B,EACA8sK,EAAO17J,UAAUk+J,UAAY,SAAU9hL,EAAGwS,GACtC+R,KAAKm9J,mBAAmB1hL,EAAGwS,EAC/B,EAOA8sK,EAAO17J,UAAUm+J,eAAiB,WAC9Bx9J,KAAKw7J,UAAS,EAClB,EACAT,EAAO17J,UAAUm8J,SAAW,SAAUl0I,GAClC,IAAIqsF,EAAO3zG,KAAKqQ,OACZo5I,EAAQzpJ,KAAKq7J,gBAAgBhU,WAAW90I,cAAcsrG,EAAAA,KACrDlwG,EAAAA,EAAAA,IAAkB87I,KACnB9zH,EAAAA,EAAAA,IAAO8zH,GAEXA,EAAQzpJ,KAAKqQ,OAAOO,cAAcitG,EAAAA,GAAgB,CAAEtnF,MAAO,CAAEi0B,KAAM,cACnE,IAAIizG,EAAY,GACZ9pD,EAAK4uB,gBAAkB5uB,EAAK6uB,cAC1Bi7B,EAEN,IAAIhjD,EAAKz6G,KAAKqQ,OAAOO,cAAc,KAAM,CAAE31B,UAAW,eACtDw/H,EAAGtpG,YAAYnR,KAAKqQ,OAAOO,cAAc,KAAM,CAC3CW,UAAWvR,KAAK+hE,KAAK9lB,YAAY,eACjC1lB,MAAO,CAAEmnI,SAAU/pD,EAAKyuC,oBAAoBnqK,OAASwlL,EAAY9pD,EAAK8B,cAAcrB,QAAQn8H,QAAQmD,eAExGquK,EAAMt4I,YAAYspG,GAClBz6G,KAAKq7J,gBAAgBpL,YAAYxG,GAC7BniI,IACAtnB,KAAKqQ,OAAOylB,QAAQzC,EAAAA,IAAkB,CAAC,GACvCrzB,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAgB,CAAEl5C,KAAM,CAAC,IAAI+nJ,EAAAA,EAAI,CAAEof,WAAW,EAAMnf,MAAO,CAAC,IAAIW,EAAAA,EAAK,CAAEyf,YAAY,EAAMn0J,SAAS,UAE7H,EACA2sK,EAAO17J,UAAUs+J,oBAAsB,WAC/B39J,KAAKqQ,OAAOyzH,wBAAwB7rJ,QACpC+nB,KAAK49J,iBAAiB59J,KAAKqQ,OAAOyzH,wBAAwB,GAElE,EACAi3B,EAAO17J,UAAUu+J,iBAAmB,SAAUhuE,GAO1C,IANA,IACIryG,EADA62H,EAAUp0G,KAAKqQ,OAAO4jG,aAEtB4pD,EAAU,eACVC,EAAU,UACVj4K,EAAO+pG,GAAUA,EAAO9lG,MAAQ8lG,EAAO9lG,MAAM,GAAK8lG,EAClDmuE,EAAO/9J,KAAK6jH,QAAQW,WAAW,kBAC1Br/G,EAAI,EAAG8L,EAAMmjG,EAAQn8H,OAAQktB,EAAI8L,EAAK9L,IAAK,CAChD5nB,GAAQ0+C,EAAAA,EAAAA,IAAUm4E,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKwG,OAAS,GAAIiE,IAC9D8nB,EAAAA,EAAAA,IAAkBymG,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK,GAAKyiL,MAC5DzpD,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK5B,OAAS46H,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK,GAAKyiL,KAErFlwJ,EAAAA,EAAAA,IAAkBymG,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK4iL,mBACnDrwJ,EAAAA,EAAAA,IAAkBymG,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK4iL,gBAAgB,GAAKF,MAC/E1pD,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK4iL,gBAAgB,GAAKF,GAAS,GAAK99J,KAAKqQ,OAAOrtB,QAAQ4B,GAAKwvH,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK4iL,gBAAgB,GAAKF,GAAS,IAElK1pD,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKm7H,mBAAqBnC,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKk9H,aAC7F/6H,GAAQ0+C,EAAAA,EAAAA,IAAUm4E,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK47H,iBAAmB,GAAI5C,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKk9H,WAAW,MAE3H3qG,EAAAA,EAAAA,IAAkBpwB,GAQnB62H,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKd,KAAO85H,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKd,MAAQ,MAPvF0lB,KAAKi+J,cAAe,EACf7pD,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKd,OACrC85H,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKd,KAAOiD,EAAMk9B,OAAUl9B,EAAMq9B,WAAa,GAAKr9B,EAAMgnC,aAAe,GACpGhnC,EAAMiyE,aAAe,GAAKjyE,EAAMkyE,kBAAoB,EAAI,WAAa,cAAkBlyE,IAMnG,IAAIujJ,EAAiB,IAAI7nB,EAAAA,EACrB7E,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK5B,SAAW46H,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK5B,OAAOu/B,UACtFq7F,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK5B,OAAOA,QACkB,kBAAtD46H,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK5B,OAAOA,UACtD46H,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK49H,aAAa8nB,EAAeo9B,mBAAkBvvJ,EAAAA,EAAAA,IAAO,CAAC,EAAGylG,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK5B,UACjI46H,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK+iL,UAAUr9B,EAAes9B,kBAAkBhqD,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK5B,UAE3D,kBAAhD46H,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK5B,QAC5Cw/H,EAAAA,EAAAA,IAAah5G,KAAK6jH,QAASzP,EAAQl1H,SAASimB,EAAE/pB,WAAY,MAEpDg5H,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK5B,QAAuD,WAA7C46H,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKd,MACxF85H,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK+iL,UAAUJ,EAAKK,kBAAkB,CAAE5kL,OAAQ,QAElC,aAA7C46H,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKd,MAAwB85H,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK5B,SAChG46H,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK5B,OAAS,OAC7Cw/H,EAAAA,EAAAA,IAAah5G,KAAK6jH,QAASzP,EAAQl1H,SAASimB,EAAE/pB,WAAY,MAElE,CACJ,EAQA2/K,EAAO17J,UAAU69J,mBAAqB,SAAUzhL,EAAGwS,GAC/C,IAAI+hB,EAAQhQ,KACR2zG,EAAO3zG,KAAKqQ,OAChBrQ,KAAKq7J,gBAAkBr7J,KAAKk7J,SAASE,YAAYzb,EAAAA,GAAW2b,SAC5Dt7J,KAAKm7J,eAAiBn7J,KAAKk7J,SAASE,YAAYzb,EAAAA,GAAWkV,QAC3Dp5K,EAAE4iL,WAAapwK,EACf,IAAIqwK,EAAmBt+J,KAAKqQ,OAAO0kG,0BAA4B/0G,KAAKqQ,OAAO80I,uBAAuBC,cAC7FzxC,EAAK8B,cAAcC,oBAA2C,WAArBznH,EAAK0tF,aAAkD,SAArB1tF,EAAK0tF,aAChC,QAAjD37E,KAAKqQ,OAAO8kG,qBAAqBx5B,eAA2Bg4B,EAAKsC,aAAa7B,QAAQn8H,QACtF07H,EAAKxqH,eAAeirH,QAAQn8H,QAAU+nB,KAAKqQ,OAAOolG,cAAcrB,QAAQn8H,QAAU07H,EAAKiD,eAAe53H,MAE1G20H,EAAK79E,QAAQzC,EAAAA,IAAwB53C,GAAG,SAAUo+H,GAC9C,IAAIA,EAAStyH,OAAb,CAGAsyH,EAASz6H,QAASuuB,EAAAA,EAAAA,IAAkBksG,EAASz6H,QAAU,GAAKy6H,EAASz6H,OACrE,IAAI6xB,EAAMpyB,OAAOC,KAAK+6H,EAASz6H,QAAQnH,OACvC,IAAI+3B,EAAMK,OAAOuqB,YAGjB,GAAM+4E,EAAKM,aAAah8H,QAAWg5B,GAAU0iG,EAAKS,QAAQn8H,QAAU07H,EAAKS,QAAQ,aAAcmqD,EAAAA,GAI/F,IAAIvuJ,EAAMwuJ,cAAcvwK,IAAUgjB,EAAlC,CAgBA,GAZAjB,EAAMK,OAAO8+H,QAAS,EACtBn/H,EAAMK,OAAO0W,OAAOsM,EAAAA,IAAkB,CAAC,GACvCrjB,EAAMK,OAAO0W,OAAOsM,EAAAA,IAAuB,CAAC,GACxCplC,GAA6B,mBAArBA,EAAK0tF,aACb3rE,EAAMK,OAAO0W,OAAOsM,EAAAA,IAA6B,CAAE/4C,KAAM,yBAE7D01B,EAAMqrJ,gBAAgBtX,gBAAkB/zI,EAAMK,OAAO+iI,gBAAgB/1I,QACrEs2G,EAAKy/B,gBAAkBv5B,EAASz6H,OAChCu0H,EAAK5sF,OAAOsM,EAAAA,IAAuC,CAAEplC,KAAMA,EAAMpI,KAAMg0H,EAASz6H,SAC5Ey6H,EAAS3oD,QAAUyiD,EAAKkB,cAAgBlB,EAAKmB,sBAAwBnB,EAAKoB,2BAC1EpB,EAAK8qD,sBAAwB5kD,EAAS3oD,QAErCjgD,GAAO4oG,EAAS3oD,OAASyiD,EAAKkB,aAAe5mH,GAA6B,WAArBA,EAAK0tF,YAW3D,OAVI3rE,EAAMK,OAAOolG,cAAcC,mBACF,aAArBznH,EAAK0tF,aAAmD,eAArB1tF,EAAK0tF,aAC5C3rE,EAAMK,OAAO0W,OAAOsM,EAAAA,IAAsBplC,GAE9C0lH,EAAKsoD,gBAAiB,EACtBtoD,EAAKqB,aAAagnD,kBAAoBniD,EAAS3oD,MACtB,WAArBjjE,EAAK0tF,cACLg4B,EAAKqB,aAAaC,YAAcpzG,KAAKyf,KAAKu4F,EAAS3oD,MAAQyiD,EAAKqB,aAAaz1B,gBAEjFo0B,EAAK54E,WA+BT,IA5BM44E,EAAKM,aAAah8H,SAAUg5B,IAAQjB,EAAMurJ,mBAAsB/mD,EAAAA,EAAAA,IAAgBb,KAClFA,EAAK43C,gBACLv7I,EAAM0uJ,uBAAuB7kD,KAE5B7pG,EAAMiuJ,cAAgBtqD,EAAKmwB,0BACxB9zH,EAAMnqB,KAAK22F,YAAYnjG,WAAW0yG,SAAW4nB,EAAKt6H,YAAcs6H,EAAKt6H,WAAWpB,OAChF+3B,EAAM4tJ,iBAAiBjqD,EAAKt6H,WAAW,IAGvC22B,EAAM4tJ,iBAAiBjqD,EAAKmwB,wBAAwB,KAGvD9zH,EAAMK,OAAOy7E,gBAAiB97E,EAAMK,OAAOolG,cAAcunD,2BACzDhtJ,EAAMK,OAAOolG,cAAcrB,QAAQn8H,SACpC4hI,EAASz6H,OAAS4wB,EAAMK,OAAOh3B,sBAAsBo1B,MAAQuB,EAAMK,OAAOh3B,WAAa22B,EAAMK,OAAO+iI,kBAEnGpjI,EAAMK,OAAOyrF,UAAW9rF,EAAMK,OAAOu4C,QAAWj7C,EAAAA,EAAAA,IAAkB1f,IAA8B,mBAArBA,EAAK0tF,aAAqC1tF,EAAK0hJ,WAC3H1qB,EAAAA,EAAAA,IAAuBj1G,EAAMK,OAAQ,CAAC,mBAEtCL,EAAMK,OAAOo7C,WAAaz7C,EAAMK,OAAOmlG,eAAiBxlG,EAAMK,OAAOolG,cAAc6kD,mBAC7E3sJ,EAAAA,EAAAA,IAAkB1f,IAA8B,mBAArBA,EAAK0tF,cACtC3rE,EAAMK,OAAOwqH,gBAAgB,CAAC,kCAElC7qH,EAAMK,OAAO0W,OAAOsM,EAAAA,KAAkB1kB,EAAAA,EAAAA,IAAO,CAAEuiD,MAAO2oD,EAAS3oD,MAAO9xE,OAAQy6H,EAASz6H,OAAQ48F,WAAY69B,EAAS79B,YAAc/tF,KAC7H0lH,EAAK8B,cAAcrB,QAAQn8H,QAAWgW,GAA6B,eAArBA,EAAK0tF,cAChD1tF,GAA6B,cAArBA,EAAK0tF,aACjB3rE,EAAMmrJ,eAAe/D,YAErBnmJ,EAAK,CACL,IAAIujG,EAAAA,EAAAA,IAAgBb,GAAO,CAEvB1lH,EAAKu1C,UAAY,CAAEI,IAAK5zB,EAAMqrJ,gBAA4B,QAAE73H,UAChE,CACK86H,EASDtuJ,EAAMK,OAAO0W,OAAOsM,EAAAA,IAA4B,CAAE53C,EAAGwS,EAAM7O,OAAQ3D,EAAE2D,OAAQ8xE,MAAOz1E,EAAEy1E,MAAO4rB,IAAKrhG,EAAEugG,aARhGhsE,EAAMK,OAAOsuJ,oBACb3uJ,EAAMqrJ,gBAAgB7K,uBAAuBviK,GAG7C+hB,EAAMqrJ,gBAAgB9U,mBAAmBt4J,EAMrD,KACK,CACD,GAAIA,GAAQA,EAAKyuK,kBACb,OAEJ,IAAK/oD,EAAKM,aAAah8H,OAGnB,OAFA07H,EAAK3wH,QAAQuuB,UAAY,QACzBqtJ,MAAM5uJ,EAAM+xD,KAAK9lB,YAAY,yBAWjC,GARAjsC,EAAMqrJ,gBAAgB3N,eAAe,IACrC19I,EAAMqrJ,gBAAgB9K,cAAc,IACpCvgJ,EAAM+0I,YAAYv0J,QAAQwf,EAAMK,OAAO21I,aAAazzI,cAAc,IAAMsrG,EAAAA,KAAmB,GAC3FlK,EAAK43C,gBACLv7I,EAAMwtJ,iBACF7pD,EAAKquC,6BAA+B/wI,GACpCjB,EAAMK,OAAO0W,OAAOsM,EAAAA,IAAqB,CAAEl5C,KAAMw5H,EAAKguC,gBAAiB1zJ,KAAM,CAAC,IAE9EA,EAAM,CACN,IAAIgV,GAAUhV,EAAK0tF,aAAe,IAAIt9F,cAAgB,YACtD2xB,EAAMK,OAAO0W,OAAO9jB,EAAQhV,GACH,cAArBA,EAAK0tF,cACL1tF,EAAK1G,QAAS,EACd0G,EAAK9T,KAAO,GACZ8T,EAAK0hJ,SAA+C,IAApC3/H,EAAMK,OAAO26H,qBAA6B/8I,EAAK0hJ,SAC/D3/H,EAAMK,OAAOylB,QAAQzC,EAAAA,IAAuBplC,GAEpD,CACI+hB,EAAMK,OAAOs1I,SACb31I,EAAMK,OAAOu1I,uBAEjB51I,EAAMK,OAAO+tF,aACjB,CACApuF,EAAMK,OAAO0W,OAAOsM,EAAAA,IAAuB,CAAC,GAC5CrjB,EAAM6uJ,YAAY7uJ,EAAMK,OAAOyzH,wBAAwB7rJ,QACnD,UAAWwD,IACXu0B,EAAMK,OAAOqxG,gBAAgB9N,wBAAyB,EA1G1D,MAFI5jG,EAAMK,OAAO0W,OAAOsM,EAAAA,IAA4B,CAAE53C,EAAGwS,EAAM7O,OAAQ3D,EAAE2D,OAAQ8xE,MAAOz1E,EAAEy1E,MAAO4rB,IAAKrhG,EAAEugG,kBAJpG23B,EAAKvV,aAPT,CAyHJ,GACJ,EAQA28D,EAAO17J,UAAU89J,mBAAqB,SAAU1hL,EAAGwS,IAC1C0f,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAOw3I,iBAC/B7nJ,KAAK+kJ,YAAY8B,WAAW7mJ,KAAKqQ,OAAO21I,aAAazzI,cAAc,IAAMsrG,EAAAA,IAAmB,CAAEpmI,MAAM,EAAO6rF,SAAS,IACpHtjE,KAAK6+J,YAAY,IAErB7+J,KAAKqQ,OAAOylB,QAAQzC,EAAAA,IAAsB,CAAEjyC,MAAO3F,IACnDukB,KAAKqQ,OAAO+tF,cACZp+F,KAAKqQ,OAAOk7I,gBACa,SAArBt9J,EAAK0tF,aAA+C,WAArB1tF,EAAK0tF,aACnB,cAAd1tF,EAAK7V,OAGZ4nB,KAAKqQ,OAAO+iI,gBAAkB,GAC9BpzI,KAAKw9J,iBACAx9J,KAAKqQ,OAAOy7E,eACb9rF,KAAKqQ,OAAOq3H,YAAYme,4BAE5B7lJ,KAAKqQ,OAAOulG,IAAI,gBAAiB,CAAEx0H,MAAO3F,IAC9C,EACAs/K,EAAO17J,UAAUw/J,YAAc,SAAUC,GACrC9+J,KAAK+kJ,YAAY8B,WAAW7mJ,KAAKqQ,OAAOszH,iBAAkB,CACtDo7B,SAAUD,EAAeA,EAAa1jL,WAAa,KAE3D,EACA2/K,EAAO17J,UAAUm/J,cAAgB,SAAUvwK,GACvC,OAAO+R,KAAKqQ,OAAO0kG,0BAA4B/0G,KAAKqQ,OAAO80I,uBAAuBC,aAAoC,WAArBn3J,EAAK0tF,WAC1G,EACAo/E,EAAO17J,UAAUq/J,uBAAyB,SAAUjjL,GAChDukB,KAAKu7J,kBAAmB,EACpBv7J,KAAKqQ,OAAO+jG,QAAQn8H,OAAS,GAC7B+nB,KAAKg/J,aAAavjL,EAAE2D,OAAO,KAE/B6/K,EAAAA,EAAAA,IAAej/J,KAAKqQ,OAAO+jG,QAAS,KAAMp0G,KAAKqQ,QAC/CrQ,KAAKm7J,eAAenU,cACpBhnJ,KAAKq7J,gBAAgBrU,cACrBhnJ,KAAKqQ,OAAO6uJ,WAAY,EACxBl/J,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAgB,CAAC,EACxC,EACA0nI,EAAO17J,UAAU8/J,sBAAwB,SAAU7xJ,EAAK1rB,EAAOqS,GAE3D,IADA,IAAInV,EAAOD,OAAOC,KAAKwuB,GACdnI,EAAI,EAAGA,EAAIrmB,EAAK7G,OAAQktB,IAAK,EAC+B,kBAA1CmI,EAAIxuB,EAAKI,SAASimB,EAAE/pB,WAAY,QAChDkyB,EAAIxuB,EAAKI,SAASimB,EAAE/pB,WAAY,OAAWkyB,EAAIxuB,EAAKI,SAASimB,EAAE/pB,WAAY,gBAAiBkE,KAC1C,GAArDT,OAAOC,KAAKwuB,EAAIxuB,EAAKI,SAASimB,EAAE/pB,WAAY,QAClCnD,OACV+nB,KAAKm/J,sBAAsB7xJ,EAAIxuB,EAAKI,SAASimB,EAAE/pB,WAAY,MAAOwG,GAAS9C,EAAKI,SAASimB,EAAE/pB,WAAY,KAAO,KAAM6Y,IAGpHA,EAAM+L,KAAKi7J,SAAWr5K,EAAQ9C,EAAKI,SAASimB,EAAE/pB,WAAY,KAC1D4kB,KAAKi7J,UAEb,CACJ,EACAF,EAAO17J,UAAU2/J,aAAe,SAAUpvE,GACtC,IAAI+kB,EAAO,GACPyqD,EAAc,CAAC,EACnBp/J,KAAKm/J,sBAAsBvvE,EAAQ,GAAIwvE,GAGvC,IAFA,IAAIhrD,EAAUv1H,OAAOC,KAAKsgL,GAAajhL,QAAO,SAAU1C,GAAK,MAA+B,WAAxB2jL,EAAY,GAAK3jL,EAAiB,IAClGqE,KAAI,SAAU8B,GAAS,OAAOw9K,EAAY,GAAKx9K,EAAQ,IAClDujB,EAAI,EAAG8L,EAAMmjG,EAAQn8H,OAAQktB,EAAI8L,EAAK9L,IAC3CwvG,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAO,CAAE,MAASg5H,EAAQl1H,SAASimB,EAAE/pB,WAAY,MACzE4kB,KAAKqQ,OAAO2xI,6BACZrtC,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAK24D,OAASpmC,EAAAA,EAAAA,IAAkBgnG,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAK24D,OAChD,IAAzC4gE,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAK24D,OAG7C/zC,KAAKqQ,OAAOsqB,cAAc,CAAE,QAAWg6E,IAAQ,EACnD,EACAomD,EAAO17J,UAAUggK,oBAAsB,WACnCr/J,KAAKk7J,SAASoE,YAAY3f,EAAAA,GAAWkV,OAAQ,IAAIxC,EAAaryJ,KAAKqQ,OAAQrQ,KAAK6jH,UAChF7jH,KAAKk7J,SAASoE,YAAY3f,EAAAA,GAAW2b,QAAS,IAAI3X,EAAc3jJ,KAAKqQ,OAAQrQ,KAAK6jH,UAClF,IAAI07C,EAAav/J,KAAK6jH,QAAQW,WAAW,uBACzC+6C,EAAW1+B,gBAAgBD,EAAAA,GAASi0B,OAAQ,IAAImD,EAAmBh4J,KAAKqQ,OAAQrQ,KAAK6jH,UACrF07C,EAAW1+B,gBAAgBD,EAAAA,GAAS/tB,KAAM,IAAI4J,EAAAA,EAAaz8G,KAAKqQ,OAAQrQ,KAAK6jH,UAC7E07C,EAAW1+B,gBAAgBD,EAAAA,GAAS21B,cAAe,IAAIsD,EAA0B75J,KAAKqQ,OAAQrQ,KAAK6jH,UACnG07C,EAAW1+B,gBAAgBD,EAAAA,GAASyiB,OAAQ,IAAI0W,EAAmB/5J,KAAKqQ,OAAQrQ,KAAK6jH,UACrF07C,EAAW1+B,gBAAgBD,EAAAA,GAAS8hB,aAAc,IAAIsX,EAAyBh6J,KAAKqQ,OAAQrQ,KAAK6jH,UACjG07C,EAAW1+B,gBAAgBD,EAAAA,GAAS+hB,kBAAmB,IAAI4X,EAA8Bv6J,KAAKqQ,OAAQrQ,KAAK6jH,UAC3G07C,EAAW1+B,gBAAgBD,EAAAA,GAASuhB,OAAQ,IAAIqY,EAAmBx6J,KAAKqQ,OAAQrQ,KAAK6jH,UACrF07C,EAAW1+B,gBAAgBD,EAAAA,GAAS0B,aAAc,IAAIm4B,EAAyBz6J,KAAKqQ,OAAQrQ,KAAK6jH,UACjG07C,EAAW1+B,gBAAgBD,EAAAA,GAAS21B,cAAe,IAAIsD,EAA0B75J,KAAKqQ,OAAQrQ,KAAK6jH,UACnG07C,EAAW1+B,gBAAgBD,EAAAA,GAAS6B,aAAc,IAAIi4B,EAA+B16J,KAAKqQ,OAAQrQ,KAAK6jH,UACvG07C,EAAW1+B,gBAAgBD,EAAAA,GAAS+B,aAAc,IAAIm4B,EAA0B96J,KAAKqQ,OAAQrQ,KAAK6jH,UAClG07C,EAAW1+B,gBAAgBD,EAAAA,GAAS4+B,aAAc,IAAI7E,EAAyB36J,KAAKqQ,OAAQrQ,KAAK6jH,UACjG07C,EAAW1+B,gBAAgBD,EAAAA,GAAS6+B,mBAAoB,IAAI1F,EAAmB/5J,KAAKqQ,OAAQrQ,KAAK6jH,UACjG07C,EAAW1+B,gBAAgBD,EAAAA,GAAS8+B,YAAa,IAAI9E,EAAoB56J,KAAKqQ,OAAQrQ,KAAK6jH,SAC/F,EACAk3C,EAAO17J,UAAUwE,iBAAmB,WAChC,IAAImM,EAAQhQ,KACRA,KAAKqQ,OAAOuqB,cAGhB56B,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAoBrzB,KAAKq/J,oBAAqBr/J,MAC7DA,KAAKqQ,OAAOkW,GAAG,oBAAqBvmB,KAAKk9J,mBAAoBl9J,MAC7DA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAqBrzB,KAAKmrC,QAASnrC,MAClDA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAwBrzB,KAAK25I,gBAAiB35I,MAC7DA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAiBrzB,KAAKq9J,gBAAiBr9J,MACtDA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,KAAsB,WAAcrjB,EAAMgrJ,WAAY,CAAM,GAAGh7J,MAC9EA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAgBrzB,KAAK29J,oBAAqB39J,MAC7D,EAMA+6J,EAAO17J,UAAU49J,qBAAuB,SAAUxhL,GAC9C,IAAIu0B,EAAQhQ,KACRlZ,EAAQrL,EAAE2D,OAAOnH,OAAS,EAC9B,GAAI6O,EAAQ,EACR,OAAOqU,QAAQuC,QAAQjiB,GAE3B,IAAIkkL,EAASlkL,EAAE2D,OAAO,GAClBwgL,EAASnkL,EAAE2D,OAAOF,SAAS4H,EAAM1L,WAAY,KAC7C+oG,EAAY,GACZ07E,EAAW,SAAU/mK,GAErB,IADA,IAAI/c,EAAS,CAAC4jL,EAAQC,GACbz6J,EAAI,EAAGA,EAAIppB,EAAO9D,OAAQktB,IAC/Bg/E,EAAU1kG,KAAK,IAAIwjG,EAAAA,EAAU,QAAS,KAAMlnG,EAAOmD,SAASimB,EAAE/pB,WAAY,KAAKwG,OAAOurG,IAAIn9E,EAAMykF,aAAa,MAAO,QAAS14G,EAAOmD,SAASimB,EAAE/pB,WAAY,KAAK4D,OAEpK8Z,EAAMijF,MAAMkH,EAAAA,EAAUC,GAAGiB,GAC7B,EACI/H,EAAQ,IAAI4B,EAAAA,EAChB6hF,EAASzjF,GACT,IACI0jF,EADQ,IAAIl0E,EAAAA,EAAYnwG,EAAE2D,QACRiuG,aAAajR,GAC/BqP,EAAWzrF,KAAKna,KAAKguH,eAAc,GACnCksD,EAAa,GACjB,GAAI//J,KAAKna,KAAKywH,WAAY,CAEtB,IADA,IAAIv6H,EAAS,CAAC4jL,EAAQC,GACbz6J,EAAI,EAAGA,EAAIppB,EAAO9D,OAAQktB,IAC/B46J,EAAWtgL,KAAKugB,KAAKy0F,aAAa14G,EAAOmD,SAASimB,EAAE/pB,WAAY,KAAKwG,MAAO,QAAS7F,EAAOmD,SAASimB,EAAE/pB,WAAY,KAAK4D,MAE5HysG,EAAS1P,MAAMkH,EAAAA,EAAUC,GAAG68E,GAChC,MAEIF,EAASp0E,GAEb,IAAI2xE,EAAW,IAAItvE,EAAAA,EAKnB,OAJA9tF,KAAKna,KAAK6jG,QAAQ,CAAC,EAAG+B,GAAUtkG,MAAK,SAAUN,GAC3CmpB,EAAMgwJ,gBAAgBF,EAAWj5K,EAAEzH,QACnCg+K,EAAS1/J,QAAQjiB,EACrB,IAAG4L,OAAM,SAAU5L,GAAK,OAAO2hL,EAAShiK,OAAO3f,EAAI,IAC5C2hL,EAASl2K,OACpB,EACA6zK,EAAO17J,UAAUo1F,aAAe,SAAUz1G,EAAK4hG,EAAUrjG,GACrD,OAAIA,aAAiB+B,MACV2gL,EAAAA,EAAAA,IAAiB,CAAEr+K,MAAO5C,EAAK4hG,SAAUA,EAAUrjG,MAAOA,IAE9D,IAAI0lG,EAAAA,EAAUjkG,EAAK4hG,EAAUrjG,EACxC,EACAw9K,EAAO17J,UAAU2gK,gBAAkB,SAAU78K,EAAS+8K,GAGlD,IAFA,IAAI9hF,EAAK,IAAIwN,EAAAA,EAAYs0E,GACrBxpI,EAAWvzC,EACNgiB,EAAI,EAAGA,EAAIuxB,EAASz+C,OAAQktB,IAAK,CACtC,IAAIg7J,EAAS/hF,EAAGiP,cAAa,IAAIrP,EAAAA,GAC5BjC,MAAM,IAAIkH,EAAAA,EAAU,QAAS,KAAMvsD,EAASx3C,SAASimB,EAAE/pB,WAAY,KAAKwG,OAAOurG,IAAIntF,KAAKy0F,aAAa,MAAO,QAAS/9D,EAASx3C,SAASimB,EAAE/pB,WAAY,KAAK4D,QAAQ,GACvK03C,EAASx3C,SAASimB,EAAE/pB,WAAY,KAAK81E,MAAQivG,EAAOjvG,MACpD,IAAIkvG,EAAY1pI,EAASx3C,SAASimB,EAAE/pB,WAAY,KAAK0O,MACjDu2K,EAAaF,EAAOr2K,MACpBs2K,EAAU5kF,YACV9kD,EAASx3C,SAASimB,EAAE/pB,WAAY,KAAK0O,MACjCkW,KAAKggK,gBAAgBtpI,EAASx3C,SAASimB,EAAE/pB,WAAY,KAAK0O,MAAOq2K,EAAOr2K,QAGhF,IADA,IAAI3P,EAAO6lB,KAAKqQ,OAAO2rE,WACdxlE,EAAI,EAAGA,EAAIr8B,EAAKlC,OAAQu+B,IAE7B,IADA,IAAI0lD,EAAM/hF,EAAK+E,SAASs3B,EAAEp7B,WAAY,KAC7BguD,EAAI,EAAGA,EAAI8yB,EAAIk4C,QAAQn8H,OAAQmxD,IAIpC,IAHA,IAAIwrE,EAAQ14C,EAAIk4C,QAAQl1H,SAASkqD,EAAEhuD,WAAY,KAAKd,gBAAgBm0B,MAC/DytD,EAAIk4C,QAAQl1H,SAASkqD,EAAEhuD,WAAY,KAAKd,KACzC,CAAE4hF,EAAIk4C,QAAQl1H,SAASkqD,EAAEhuD,WAAY,KAAKd,MACrC02B,EAAI,EAAGA,EAAI4jG,EAAM38H,OAAQ+4B,IAAK,CACnC,IAAIhyB,EAAMk9E,EAAIk4C,QAAQl1H,SAASkqD,EAAEhuD,WAAY,KAAKwG,MAAQ,MAAQgzH,EAAM11H,SAAS8xB,EAAE51B,WAAY,KAAKiD,cAChGwH,EAAOu6K,EAAUxiF,MAAQyiF,EAAWviF,QAAUqiF,EAAOr2K,MACrDhJ,EAAUkf,KAAKqQ,OACnB,GAA0C,WAAtCukG,EAAM11H,SAAS8xB,EAAE51B,WAAY,KAAmB,CAChD,IAAIkuC,EAAS82I,EAAUxiF,MAAQyiF,EAAaF,EACxCphJ,EAAOm9C,EAAIk4C,QAAQl1H,SAASkqD,EAAEhuD,WAAY,KACzCklL,gBACe,kBAATvhJ,IACPA,GAAO3R,EAAAA,EAAAA,IAAS2R,EAAMz+B,SAE1Bo2C,EAASx3C,SAASimB,EAAE/pB,WAAY,KAAK4gG,WAAW,GAAKh9F,GAAO+/B,EAAOA,EAAKrf,KAAK5e,EAASwoC,EAAQ4yC,EAAIk4C,QAAQl1H,SAASkqD,EAAEhuD,WAAY,MAAQ,EAC7I,MAEIs7C,EAASx3C,SAASimB,EAAE/pB,WAAY,KAAK4gG,WAAW,GAAKh9F,GAAOs+F,EAAAA,EAAStB,WAAW44B,EAAM11H,SAAS8xB,EAAE51B,WAAY,KAAKiD,eAAewH,EAAMq2E,EAAIk4C,QAAQl1H,SAASkqD,EAAEhuD,WAAY,KAAKwG,MAEvL,CAGZ,CACA,OAAOuB,CACX,EACO43K,CACX,CAlrB4B,GCvBxBwF,EAAqC,WACrC,SAASA,IACLvgK,KAAKwgK,cAAgB,CAAC,CAC1B,CAiBA,OAhBAD,EAAoBlhK,UAAUwhI,gBAAkB,SAAUzoJ,EAAMkC,GAC5DlC,EAAuB,kBAATA,EAAoBA,GAAO21B,EAAAA,EAAAA,IAAa6yH,EAAAA,GAAUxoJ,IAC5Du1B,EAAAA,EAAAA,IAAkB3N,KAAKwgK,cAAc,GAAKpoL,MAC1C4nB,KAAKwgK,cAAc,GAAKpoL,GAAQkC,EAExC,EACAimL,EAAoBlhK,UAAUohK,gBAAkB,SAAUroL,GAEtD,GADAA,EAAuB,kBAATA,EAAoBA,GAAO21B,EAAAA,EAAAA,IAAa6yH,EAAAA,GAAUxoJ,IAC5Du1B,EAAAA,EAAAA,IAAkB3N,KAAKwgK,cAAc,GAAKpoL,IAE1C,KAAM,oBAAsBA,EAAO,gBAGnC,OAAO4nB,KAAKwgK,cAAc,GAAKpoL,EAEvC,EACOmoL,CACX,CArByC,cCGrCG,GAA0C,WAC1C,SAASA,EAAyBrwJ,EAAQyiG,GACtC9yG,KAAKotI,WAAa,GAClBptI,KAAK2gK,cAAgB,GAErB3gK,KAAKwhI,gBAAiB,EACtBxhI,KAAKqQ,OAASA,EACdrQ,KAAK8yG,eAAiBA,EACtB9yG,KAAK6D,kBACT,CAikBA,OAhkBA68J,EAAyBrhK,UAAUwE,iBAAmB,WAClD7D,KAAKwuI,YAAc,CAAC,CAAEzsJ,MAAOsxC,EAAAA,IAA0B7mB,QAASxM,KAAK4gK,mBACjE,CAAE7+K,MAAOsxC,EAAAA,IAAiC7mB,QAASxM,KAAKw+I,0BACxD,CAAEz8J,MAAOsxC,EAAAA,IAA8B7mB,QAASxM,KAAK6gK,6BACrD,CAAE9+K,MAAOsxC,EAAAA,IAA0B7mB,QAASxM,KAAK8gK,uBACjD,CAAE/+K,MAAOsxC,EAAAA,IAA0B7mB,QAASxM,KAAK+gK,qBACjD,CAAEh/K,MAAOsxC,EAAAA,IAAoC7mB,QAASxM,KAAKy+I,+BAC/D7P,EAAAA,EAAAA,IAAuB5uI,KAAKqQ,OAAQrQ,KAAKwuI,aAAa,EAAMxuI,MAC5DA,KAAKghK,mBAAqBhhK,KAAKihK,aAAajiK,KAAKgB,MACjDA,KAAKqQ,OAAOxM,iBAAiBwvB,EAAAA,IAAuBrzB,KAAKghK,mBAC7D,EACAN,EAAyBrhK,UAAU0hK,oBAAsB,WACrD/gK,KAAKkhK,mBAAoB,CAC7B,EACAR,EAAyBrhK,UAAUyhK,sBAAwB,WACvD,IAAIrwI,EAASzwB,KAAKmhK,oBAAoBn+K,QAAQuvB,cAAc,yBACxDlf,EAAQo9B,EAAOle,cAAc,wBAC7B6uJ,EAAW3wI,EAAOle,cAAc,wBACpCvS,KAAKkhK,mBAAoB,EACzBlhK,KAAKqQ,OAAO8rG,aAAaA,aAAa6I,cACtChlH,KAAKqhK,QAAQr+K,QAAQu0C,MAAMuiB,QAAU,GACrC95C,KAAKw+I,yBAAyB,CAAEzlK,UAAU,IAC1CinB,KAAKshK,QAAQt+K,QAAQu0C,MAAMuiB,QAAU,OACrCsnH,EAAS7pI,MAAMuiB,QAAU,GACzBzmD,EAAMke,UAAYvR,KAAKqQ,OAAOqrG,UAAUz/D,YAAY,gBACpD,IAAIsK,EAAUvmD,KAAKmhK,oBAAoBn+K,QAAQuvB,cAAc,kBAC7DvS,KAAKuhK,wBAA0BvhK,KAAKqQ,OAAOO,cAAc,MAAO,CAAE31B,UAAW,0CAC7EsrE,EAAQp1C,YAAYnR,KAAKuhK,wBAC7B,EACAb,EAAyBrhK,UAAUwhK,4BAA8B,SAAU5yK,GACvE,GAAI+R,KAAKiD,SAAW++H,EAAAA,GAAuBC,SAAU,CACjD,IAAI17E,EAAUvmD,KAAKmhK,oBAAoBn+K,QAAQuvB,cAAc,kBACzDke,EAASzwB,KAAKmhK,oBAAoBn+K,QAAQuvB,cAAc,yBACxD6uJ,EAAW3wI,EAAOle,cAAc,wBAChCx6B,EAAO04C,EAAOle,cAAc,wBAChC,GAAItkB,EAAKpD,OAAQ,CACb07D,EAAQg1D,WAAWhkF,MAAMuiB,QAAU,OACnCyM,EAAQp1C,YAAYljB,EAAKkwC,QACzBijI,EAAS7pI,MAAMuiB,QAAU,OACzB95C,KAAKqhK,QAAQr+K,QAAQu0C,MAAMuiB,QAAU,OACrC95C,KAAKwhK,eAAex+K,QAAQu0C,MAAMuiB,QAAU,OAC5C/hE,EAAKw5B,UAAYtjB,EAAKwiC,OACtB,IAAI6wI,EAAUthK,KAAKqQ,OAAOO,cAAc,UACpCi2C,EAAO7mD,KAAKqQ,OAAOO,cAAc,OAAQ,CAAE31B,UAAW,uCAC1DqmL,EAAQnwJ,YAAY01C,GACpB7mD,KAAKshK,QAAU,IAAIj7G,EAAAA,GAAO,CACtBlmE,SAAU6f,KAAKqQ,OAAOlwB,SAAW,kBAAyB6f,KAAKqQ,OAAOlwB,SAAW,mBAErF6f,KAAKshK,QAAQv2H,SAASu2H,GACtBvpL,EAAKkhE,cAAcjhB,aAAaspI,EAASvpL,EAC7C,MACSioB,KAAKshK,UAAYthK,KAAKkhK,oBAC3B36G,EAAQg1D,WAAWhkF,MAAMuiB,QAAU,IACnCnkB,EAAAA,EAAAA,IAAO31B,KAAKshK,QAAQt+K,SACpBo+K,EAAS7pI,MAAMuiB,QAAU,GACzB95C,KAAKqhK,QAAQr+K,QAAQu0C,MAAMuiB,QAAU,GACjC95C,KAAKwgH,aACLxgH,KAAKwhK,eAAex+K,QAAQu0C,MAAMuiB,QAAU,IAEhD/hE,EAAKw5B,UAAYvR,KAAKyhK,eAAe,CAAEx+J,OAAQ++H,EAAAA,GAAuBC,UAAYh0I,EAAKkoH,KAE/F,CACJ,EACAuqD,EAAyBrhK,UAAUo/I,4BAA8B,SAAUxwJ,GACnE+R,KAAKwhK,iBACLxhK,KAAKwgH,WAAavyH,EAAKuyH,WACvBxgH,KAAKwhK,eAAex+K,QAAQu0C,MAAMuiB,QAAU7rD,EAAKuyH,WAAa,GAAK,OAE3E,EACAkgD,EAAyBrhK,UAAUm/I,yBAA2B,SAAUvwJ,GAChE+R,KAAKqhK,UACLrhK,KAAKqhK,QAAQtoL,SAAWkV,EAAKlV,SAErC,EACA2nL,EAAyBrhK,UAAUqiK,wBAA0B,SAAUvrD,GACnE,IAAInmG,EAAQhQ,KACR2zG,EAAO3zG,KAAKqQ,OAChB,GAAI8lG,EAEA,OADAn2G,KAAK8jG,aAAe9jG,KAAKqQ,OAAOO,cAAc,MAAO,CAAE31B,UAAW,mCAAoC2J,GAAIuxH,EAAIjqG,IAAM,iBAC7GlM,KAAK8jG,aAGZ,IAAI6Q,EAAOhB,EAAKM,aAChBj0G,KAAK2hK,gBAAkBhuD,EAAK/iG,cAAc,MAAO,CAAE31B,UAAW,YAAaiG,OAAQ,gBACnF,IAAI0gL,EAAgBjuD,EAAK/iG,cAAc,MAAO,CAAE31B,UAAW,2BACvD4mL,EAAe,GACf/zB,EAAS9tI,KAAKiD,SAAW++H,EAAAA,GAAuB8L,OAChD7L,EAAWjiI,KAAKiD,SAAW++H,EAAAA,GAAuBC,SACtD,GAAIA,EACA,IAAK,IAAI98H,EAAI,EAAGA,EAAIwuG,EAAKxqH,eAAeirH,QAAQn8H,OAAQktB,IACpD08J,EAAapiL,KAAKk0H,EAAKxqH,eAAeirH,QAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKwG,OAGlF,IAASujB,EAAI,EAAGA,EAAIwvG,EAAK18H,OAAQktB,IAC7B,MAAKwvG,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKgT,UAAaumH,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAK6N,cAAgB6kJ,IAC3Fn5B,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAK8N,gBAAkB+4I,GAD5D,CAIA,IAAI6/B,EAAOnuD,EAAK/iG,cAAc,MAAO,CAAE31B,UAAW,uBAClD6mL,EAAKxrI,aAAa,qBAAsBq+E,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKwG,OACzEkgL,EAAKxrI,aAAa,oBAAqBq+E,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAK8wB,KACxE,IAAI26C,EAAO8sD,EAAK/iG,cAAc,OAAQ,CAAEW,UAAWojG,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKoO,WAAYvO,UAAW,sBAG3G,GAFA6mL,EAAK3wJ,YAAY01C,GACjB7mD,KAAK2hK,gBAAgBxwJ,YAAY2wJ,GAC7Bh0B,EAAQ,CACR,IACIhnJ,EADSkZ,KAAK+hK,6BAA6B,SAC5BzrK,QAAQq+G,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKwG,OACxD0oH,EAASqJ,EAAK/iG,cAAc,SAAU,CAAEhsB,GAAI+uH,EAAK3wH,QAAQ4B,GAAK+vH,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKwG,MAAQ,eACvGstB,EAAQ0yJ,EAAcxwJ,YAC1BlC,EAAMiC,YAAYm5F,GAClBw3D,EAAK3wJ,YAAYjC,GACJ,IAAIm3C,EAAAA,GAAO,CACpBlmE,SAAU6f,KAAKqQ,OAAOlwB,SAAW,mBAA0B6f,KAAKqQ,OAAOlwB,SAAW,oBAE/E4qD,SAASu/D,GAChB,IAAI03D,OAAkB,GAChBr0J,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAO4lG,aAAa7B,QAAQl1H,SAAS4H,EAAM1L,WAAY,QAChF4mL,EAAkG,cAA/EhiK,KAAKqQ,OAAO4lG,aAAa7B,QAAQl1H,SAAS4H,EAAM1L,WAAY,KAAKqsF,UAChFznE,KAAKqQ,OAAOqrG,UAAUz/D,YAAY,iBAAmBj8C,KAAKqQ,OAAOqrG,UAAUz/D,YAAY,mBAE/FquD,EAAO/4F,UAAYzqB,GAAS,EAAIk7K,EAAkBhiK,KAAKqQ,OAAOqrG,UAAUz/D,YAAY,YACpFquD,EAAOwtD,QAAU,SAAUr8K,GACvBu0B,EAAMiyJ,uBAAuBxmL,EAAE0iD,OACnC,CACJ,CACA,GAAI8jG,GAAY4/B,EAAavrK,QAAQq+G,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKwG,QAAU,EAAG,CAC/E,IAAIsgL,EAAUvuD,EAAK/iG,cAAc,MAAO,CAAE31B,UAAW,sCACjDknL,EAAWxuD,EAAK/iG,cAAc,OAAQ,CAAE31B,UAAW,mCACvDknL,EAAS7rI,aAAa,UAAWq+E,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKd,MAClE4nL,EAAQ/wJ,YAAYgxJ,GACpBL,EAAK3wJ,YAAY+wJ,EACrB,CAlCA,CAqCJ,OADAltI,EAAAA,GAAaG,IAAIn1B,KAAK2hK,gBAAiB,QAAS3hK,KAAKoiK,+BAAgCpiK,MAC9EA,KAAK2hK,eAEpB,EACAjB,EAAyBrhK,UAAU0iK,6BAA+B,SAAU3pL,GAExE,IADA,IAAIyK,EAAS,GACJsiB,EAAI,EAAGA,EAAInF,KAAKqQ,OAAO4lG,aAAa7B,QAAQn8H,OAAQktB,IACzDtiB,EAAOpD,KAAKugB,KAAKqQ,OAAO4lG,aAAa7B,QAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK,GAAKhD,IAElF,OAAOyK,CACX,EACA69K,EAAyBrhK,UAAU4iK,uBAAyB,SAAU9jI,GAClE,GAAIA,EAAQ,CACR,IACIv8C,GADY+jI,EAAAA,EAAAA,IAAaxnF,EAAQ,sBACfiD,aAAa,sBAC9BphC,KAAKqQ,OAAOq9H,oBACb1tI,KAAK2gK,cAAgB,GACrB3gK,KAAKotI,WAAa,GAClBptI,KAAKqiK,eAAgB,EACrBriK,KAAKsiK,iBAAiBnkI,IAE1B,IAAIokI,EAAMpkI,EAAO2oB,YACb07G,EAAeD,IAAQviK,KAAKqQ,OAAOqrG,UAAUz/D,YAAY,YAAcj8C,KAAKqQ,OAAOqrG,UAAUz/D,YAAY,iBACvGsmH,IAAQviK,KAAKqQ,OAAOqrG,UAAUz/D,YAAY,iBAAmBj8C,KAAKqQ,OAAOqrG,UAAUz/D,YAAY,kBAC3Fj8C,KAAKqQ,OAAOqrG,UAAUz/D,YAAY,YACxCwrB,EAAY+6F,IAAiBxiK,KAAKqQ,OAAOqrG,UAAUz/D,YAAY,iBAAmB,YAChFumH,IAAiBxiK,KAAKqQ,OAAOqrG,UAAUz/D,YAAY,kBAAoB,aAAe,OAC5F9d,EAAO5sB,UAAYixJ,EACnBxiK,KAAKyiK,cAAc7gL,EAAO6lF,EAC9B,CACJ,EACAi5F,EAAyBrhK,UAAUijK,iBAAmB,SAAUnkI,GAE5D,IADA,IAAI8iC,EAAU,GAAG5jE,MAAMqC,KAAKM,KAAK2hK,gBAAgBn9H,uBAAuB,oBAC/Dr/B,EAAI,EAAGA,EAAI87D,EAAQhpF,OAAQktB,IAC5B87D,EAAQ/hF,SAASimB,EAAE/pB,WAAY,OAAS+iD,IACxC8iC,EAAQ/hF,SAASimB,EAAE/pB,WAAY,KAAKm2B,UAAY,OAG5D,EACAmvJ,EAAyBrhK,UAAUojK,cAAgB,SAAU7gL,EAAO6lF,GAChE,IACI3gF,EADSkZ,KAAK0iK,yBACCpsK,QAAQ1U,GACvBoe,KAAKqQ,OAAOq9H,mBAAqB5mJ,GAAS,IAC1CkZ,KAAKotI,WAAWvmH,OAAO//B,EAAO,GAC9BkZ,KAAK2gK,cAAc95I,OAAO//B,EAAO,IAErCkZ,KAAKqiK,eAAgB,EACH,SAAd56F,IACAznE,KAAKotI,WAAW3tJ,KAAKmC,GACrBoe,KAAK2gK,cAAclhL,KAAK,CAAEmC,MAAOA,EAAO6lF,UAAWA,IAE3D,EACAi5F,EAAyBrhK,UAAUqjK,uBAAyB,WAExD,IADA,IAAI7/K,EAAS,GACJsiB,EAAI,EAAGA,EAAInF,KAAKotI,WAAWn1J,OAAQktB,IACxCtiB,EAAOpD,KAAKugB,KAAKotI,WAAWluJ,SAASimB,EAAE/pB,WAAY,MAEvD,OAAOyH,CACX,EACA69K,EAAyBrhK,UAAU+iK,+BAAiC,SAAU3mL,GAC1E,GAAIukB,KAAKiD,SAAW++H,EAAAA,GAAuBC,SAA3C,CAGA,IAAItuB,EAAO3zG,KAAKqQ,OACZ8tB,EAAS1iD,EAAE0iD,OACf,GAAiC,cAA7Bw1E,EAAKxqH,eAAe7O,KACpB,GAAI6jD,EAAOvH,UAAUM,SAAS,uBAAyBiH,EAAO8a,cAAcriB,UAAUM,SAAS,uBAK3F,IAJIt1C,EAAQu8C,EAAOiD,aAAa,yBAE5Bx/C,EAAQu8C,EAAO8a,cAAc7X,aAAa,uBAE1Cx/C,EAAO,CACP,IAAIu0H,EAAMxC,EAAKgC,iBAAiB/zH,GAChCoe,KAAK2iK,iBAAkB,EACvB3iK,KAAKyhI,qBAAqBtrB,EAC9B,OAEC,GAAIh4E,EAAOvH,UAAUM,SAAS,gBAAkBiH,EAAO8a,cAAcriB,UAAUM,SAAS,kBAAmB,CAC5G,IAAI0rI,GAASj9C,EAAAA,EAAAA,IAAaxnF,EAAQ,sBAClC,GAAIykI,EAAQ,CACR,IAAIhhL,EAAQghL,EAAOxhI,aAAa,uBAER,UADpB+0E,EAAMxC,EAAKgC,iBAAiB/zH,IACxBzD,OAAO7D,OAAqB67H,EAAIh4H,OAAO7D,MAAqC,SAA7Bq5H,EAAKxqH,eAAe7O,QACvE0lB,KAAK6iK,eAAgB,GAEzB7iK,KAAKqQ,OAAO8rG,aAAaA,aAAauI,kBAAkBvO,GACxDn2G,KAAK8iK,yBAAyB3kI,EAClC,CACJ,CA1BJ,CA4BJ,EAOAuiI,EAAyBrhK,UAAUoiI,qBAAuB,SAAUtrB,GAChE,GAAIn2G,KAAKwhI,gBAAkBxhI,KAAKiD,SAAW++H,EAAAA,GAAuBC,WAAajiI,KAAK2iK,gBAChF3iK,KAAK+iK,+BAEJ,CAOD,GANA/iK,KAAKgjK,YAAc7sD,EACnBn2G,KAAK6lH,uBAAuB1P,GACxBn2G,KAAKqQ,OAAO0tG,kBAAoB5H,IAChCn2G,KAAKqQ,OAAO8rG,aAAaulB,eAAevrB,GACxCn2G,KAAKqQ,OAAO8rG,aAAaA,aAAa2I,WAAW9kH,KAAKqQ,OAAO8rG,aAAaoqB,cAAcpwB,OAAKj7H,KAE7F8kB,KAAKiD,SAAW++H,EAAAA,GAAuB8L,OAAQ,CAC/C,IAAI7/I,EAAO,CACP1G,QAAQ,EAAO41H,UAAWn9G,KAAKmhK,oBAAqBxlF,YAAa,8BAGrE,GADA37E,KAAKqQ,OAAOylB,QAAQzC,EAAAA,IAAiCplC,GACjDA,EAAK1G,OACL,MAER,CACAyY,KAAKmhK,oBAAoBj8F,MAAK,GAC9BllE,KAAKmhK,oBAAoBn+K,QAAQu0C,MAAMk4C,UAAY,OACnDzvE,KAAKijK,oBAAoBjjK,KAAKmhK,oBAAoBn+K,QACtD,CACJ,EACA09K,EAAyBrhK,UAAU4jK,oBAAsB,SAAUC,GAC/D,IAAI9yJ,EAAQ8yJ,EAAU3wJ,cAAc,aACpC,GAAInC,EAAO,CACP,IAAI+yJ,EAAQD,EAAU3wJ,cAAc,yBAAyB2wB,wBAAwB8Q,OACrF5jC,EAAMmnB,MAAMqM,IAAMu/H,EAAQ,IAC9B,CACJ,EACAzC,EAAyBrhK,UAAU0jK,yBAA2B,SAAU5sD,GACpE,IAAIxC,EAAO3zG,KAAKqQ,OAChB,GAAIrQ,KAAKiD,SAAW++H,EAAAA,GAAuBC,UAAyC,cAA7BtuB,EAAKxqH,eAAe7O,KAA3E,CAGA,IAAI8oL,EAAWpjK,KAAKqQ,OAAOO,cAAc,MAAO,CAC5ChsB,GAAI+uH,EAAK3wH,QAAQ4B,GAAK,eACtB3J,UAAW+kB,KAAKqQ,OAAOlwB,SACnB,yCAA2C6f,KAAKqQ,OAAOlwB,SAAW,0CAE1E6f,KAAKqQ,OAAOrtB,QAAQmuB,YAAYiyJ,GAChCpjK,KAAKqjK,gBAAkBrjK,KAAKsjK,iBAAiBntD,GAAK,GAClD,IAAIloH,EAAO,CACP1G,QAAQ,EAAO41H,UAAWn9G,KAAKqjK,gBAAiB1nF,YAAa,gCAEjE37E,KAAKqQ,OAAOylB,QAAQzC,EAAAA,IAAiCplC,GACjDA,EAAK1G,SAGTyY,KAAKqjK,gBAAgBt4H,SAASq4H,GAC9BpjK,KAAKqjK,gBAAgBn+F,MAAK,GAC1BllE,KAAKqjK,gBAAgBrgL,QAAQu0C,MAAMk4C,UAAY,OAjB/C,CAkBJ,EACAixF,EAAyBrhK,UAAUikK,iBAAmB,SAAUntD,EAAKrQ,EAAgBlhH,GACjF,IAAI8b,EAAU,IAAI2kH,GAAAA,GAAO,CACrBS,SAAS,EACTR,eAAe,EACfC,eAAe,EACf/7F,OAAQxpB,KAAKqQ,OAAOmZ,OACpB2U,OAAQn+B,KAAKqQ,OAAOkzJ,kBAAoBvjK,KAAKqQ,OAAOkzJ,kBAAoB3gK,SAASuuB,KACjF/iC,SAAS,EACTu8C,UAAW3qC,KAAKqQ,OAAOs6B,UACvB4b,QAASvmD,KAAK0hK,wBAAwBvrD,GACtC51H,KAAMyf,KAAKwjK,WAAWxkK,KAAKgB,MAC3BwlH,QAASxlH,KAAKylH,cAAczmH,KAAKgB,MACjCwR,MAAOxR,KAAKyjK,kBAAkBzkK,KAAKgB,MACnC+zC,MAAO,OACPC,OAAQ,OACR4xE,kBAAmB,CAAE9zD,OAAQ,QAC7B3xE,SAAU6f,KAAKqQ,OAAOlwB,SAAW6f,KAAKqQ,OAAOlwB,SAAW,KAa5D,OAVAugB,EAA6B,kBAAI,EAC7BolG,GACAplG,EAAQ+vB,OAASzwB,KAAK0jK,uBAAuBvtD,OAAKj7H,GAAW,GAC7DwlB,EAAQvgB,SAAW,mBAGnBugB,EAAQ+vB,OAASzwB,KAAK0jK,uBAAuBvtD,GAC7Cz1G,EAAQvgB,SAA4C,aAAjC6f,KAAKqQ,OAAOmgI,kBAAmCxwI,KAAKiD,SAAW++H,EAAAA,GAAuBC,SACnG,QAAUr9I,EAAK,2BAA6B,QAAUA,GAEzD8b,CACX,EACAggK,EAAyBrhK,UAAUwmH,uBAAyB,SAAU1P,GAClE,IAAIxC,EAAO3zG,KAAKqQ,OAChB,GAAIrQ,KAAKiD,SAAW++H,EAAAA,GAAuBC,UAAyC,cAA7BtuB,EAAKxqH,eAAe7O,KAA3E,CAGA,IAAIsK,EAAKob,KAAKiD,SAAW++H,EAAAA,GAAuBC,SAAW,SAAW,OAClEmhC,EAAWpjK,KAAKqQ,OAAOO,cAAc,MAAO,CAC5ChsB,GAAI+uH,EAAK3wH,QAAQ4B,GAAK,aAAeA,EACrC3J,UAAW+kB,KAAKqQ,OAAOlwB,SACnB,QAAUyE,EAAK,2BAA6Bob,KAAKqQ,OAAOlwB,SAAW,QAAUyE,EAAK,4BAE1Fob,KAAKqQ,OAAOrtB,QAAQmuB,YAAYiyJ,GAChCpjK,KAAKmhK,oBAAsBnhK,KAAKsjK,iBAAiBntD,GAAK,EAAOvxH,GAC7Dob,KAAKmhK,oBAAoBp2H,SAASq4H,EATlC,CAUJ,EACA1C,EAAyBrhK,UAAUomH,cAAgB,YAC/Ck+C,EAAAA,EAAAA,IAAgB3jK,KAAKqQ,OACzB,EACAqwJ,EAAyBrhK,UAAUmkK,WAAa,WAC5C,GAAIxjK,KAAKiD,SAAW++H,EAAAA,GAAuB8L,QAAU9tI,KAAKqQ,OAAOq9H,kBAC7D,IAAK,IAAIvoI,EAAI,EAAGA,EAAInF,KAAKqQ,OAAO4lG,aAAa7B,QAAQn8H,OAAQktB,IAAK,CAC9DnF,KAAKotI,WAAW3tJ,KAAKugB,KAAKqQ,OAAO4lG,aAAa7B,QAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKwG,OAClF,IAAIgiL,EAAY5jK,KAAKqQ,OAAO4lG,aAAa7B,QAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKwG,MACzEiiL,EAAgB7jK,KAAKqQ,OAAO4lG,aAAa7B,QAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKqsF,UACjFznE,KAAK2gK,cAAclhL,KAAK,CAAEmC,MAAOgiL,EAAWn8F,UAAWo8F,GAC3D,CAER,EACAnD,EAAyBrhK,UAAUokK,kBAAoB,SAAUx1K,GAC7D+R,KAAK6iK,cAAgB50K,EAAKjL,UAAYiL,EAAKjL,QAAQuvB,cAAc,0BAC1DtkB,EAAKjL,QAAQ4zC,UAAUM,SAAS,kBACnCl3B,KAAKiD,SAAW++H,EAAAA,GAAuBC,SACnCh0I,EAAKjL,QAAQ4zC,UAAUM,SAAS,kBAChCl3B,KAAKqQ,OAAO8rG,aAAaA,aAAagL,sBAAsBnnH,KAAKkhK,mBAE5DjzK,EAAKjL,QAAQ4zC,UAAUM,SAAS,sBACrCl3B,KAAK8jK,oBAGJ9jK,KAAKiD,SAAW++H,EAAAA,GAAuB8L,QAC5C9tI,KAAK4gK,oBAET5gK,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAwBrzB,KAAKsyE,WACjD,EACAouF,EAAyBrhK,UAAUmuI,WAAa,WAC5C,GAAKxtI,KAAKqiK,cAAV,CAIIriK,KAAK2gK,cAAc1oL,QACnB+nB,KAAKqQ,OAAOsqB,cAAc,CAAEs7E,aAAc,CAAE7B,QAAS,MAAQ,GAEjE,IAAK,IAAIjvG,EAAI,EAAGA,EAAInF,KAAK2gK,cAAc1oL,OAAQktB,IAC3CnF,KAAKqQ,OAAOm9H,WAAWxtI,KAAK2gK,cAAczhL,SAASimB,EAAE/pB,WAAY,KAAKwG,MAAOoe,KAAK2gK,cAAczhL,SAASimB,EAAE/pB,WAAY,KAAKqsF,UAAWznE,KAAKqQ,OAAOq9H,mBAElJ1tI,KAAK2gK,cAAc1oL,QACpB+nB,KAAKqQ,OAAOi+H,eAEhBtuI,KAAK4gK,mBAVL,MAFI5gK,KAAK4gK,mBAab,EACAF,EAAyBrhK,UAAUoiK,eAAiB,SAAUxzK,EAAMkoH,GAChE,IACI9iH,EADAsgH,EAAO3zG,KAAKqQ,OAchB,OAZIrQ,KAAKiD,SAAW++H,EAAAA,GAAuBmN,OACvC97I,EAAQsgH,EAAK+H,UAAUz/D,YAAY,iBAAmBhuD,EAAK81K,gBAAgB,GAEtE/jK,KAAKiD,SAAW++H,EAAAA,GAAuBgiC,MAC5C3wK,EAAQsgH,EAAK+H,UAAUz/D,YAAY,gBAE9Bj8C,KAAKiD,SAAW++H,EAAAA,GAAuBC,SAC5C5uI,EAAQ8iH,EAAMA,EAAI3sH,YAAc2sH,EAAIv0H,MAAQ+xH,EAAK+H,UAAUz/D,YAAY,gBAElEj8C,KAAKiD,SAAW++H,EAAAA,GAAuB8L,SAC5Cz6I,EAAQsgH,EAAK+H,UAAUz/D,YAAY,SAEhC5oD,CACX,EACAqtK,EAAyBrhK,UAAU4kK,cAAgB,SAAUhhK,GACzD,IAAI7qB,EAOJ,OANI6qB,IAAW++H,EAAAA,GAAuBgiC,OAAS/gK,IAAW++H,EAAAA,GAAuBmN,OAC7E/2J,EAAO,2BAEF6qB,IAAW++H,EAAAA,GAAuBC,WACvC7pJ,EAAO,oCAEJA,CACX,EACAsoL,EAAyBrhK,UAAU6kK,cAAgB,SAAUjhK,GACzD,IAAIlrB,EAOJ,OANIkrB,IAAW++H,EAAAA,GAAuBgiC,OAAS/gK,IAAW++H,EAAAA,GAAuBmN,OAC7Ep3J,EAAO,OAEFkrB,IAAW++H,EAAAA,GAAuBC,UAAYjiI,KAAKiD,SAAW++H,EAAAA,GAAuB8L,SAC1F/1J,EAAO,YAEJA,CACX,EASA2oL,EAAyBrhK,UAAUqkK,uBAAyB,SAAUvtD,EAAKloH,EAAM63G,GAC7E,IAAI91F,EAAQhQ,KACR2zG,EAAO3zG,KAAKqQ,OAChBsjG,EAAKptF,GAAG8M,EAAAA,IAAwBrzB,KAAKsyE,WAAYtyE,MACjD,IAAIpb,EAAK+uH,EAAK3wH,QAAQ4B,GAAKob,KAAKikK,cAAcjkK,KAAKiD,QAC/CwtB,EAASkjF,EAAK/iG,cAAc,MAAO,CAAE31B,UAAW,yBAChDkpL,EAAWxwD,EAAK/iG,cAAc,MAAO,CAAE31B,UAAW,sBAAuB2J,GAAIA,IACjFu/K,EAAS5yJ,UAAYvR,KAAKyhK,eAAexzK,EAAMkoH,GAC/C1lF,EAAOtf,YAAYgzJ,GACnB,IAAI9C,EAAU1tD,EAAK/iG,cAAc,UAC5Bk1F,IACD9lG,KAAKqhK,QAAU,IAAIh7G,EAAAA,GAAO,CACtBlmE,SAAU6f,KAAKqQ,OAAOlwB,SAClB,oCAA2C6f,KAAKqQ,OAAOlwB,SAAW,qCAE1EkhL,EAAQ9vJ,UAAYoiG,EAAK+H,UAAUz/D,YAAYj8C,KAAKkkK,cAAclkK,KAAKiD,SACvEjD,KAAKqhK,QAAQt2H,SAASs2H,GAEtBA,EAAQvJ,QAAU,SAAUr8K,GACxBu0B,EAAMo0J,0BACV,GAEJ,IAAIt2B,EAAS9tI,KAAKiD,SAAW++H,EAAAA,GAAuB8L,OAChD7L,EAAWjiI,KAAKiD,SAAW++H,EAAAA,GAAuBC,SACtD,GAAIA,GAAY6L,EAAQ,CACpB,IAAIu2B,EAAOv2B,EAAS,OAAS,SACzBw2B,EAAW3wD,EAAK/iG,cAAc,UAKlC,GAJA5Q,KAAKwhK,eAAiB,IAAIn7G,EAAAA,GAAO,CAC7BlmE,SAAU6f,KAAKqQ,OAAOlwB,SAAW,0BAA4BkkL,EAA5B,cAAwDrkK,KAAKqQ,OAAOlwB,SAC/F,0BAA4BkkL,EAAO,eAEzCpiC,EAAU,CACV,IAAIp7E,EAAO8sD,EAAK/iG,cAAc,OAAQ,CAAE31B,UAAW,2CACnDqpL,EAASnzJ,YAAY01C,EACzB,MAEIy9G,EAAS/yJ,UAAYoiG,EAAK+H,UAAUz/D,YAAY,SAEpDxrB,EAAOtf,YAAYmzJ,GACnBtkK,KAAKwhK,eAAez2H,SAASu5H,GAC7BA,EAASxM,QAAU,SAAUr8K,IACpBkqI,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,mBACxBnuB,EAAMK,OAAO8rG,aAAa6pB,iBAC1Bh2H,EAAM8yJ,4BAGF7gC,EACAjyH,EAAMu0J,eAGNv0J,EAAMsyJ,mBACNtyJ,EAAMo9H,WAAa,GACnBp9H,EAAM2wJ,cAAgB,GACtB3wJ,EAAMqyJ,eAAgB,EAGlC,EACA5xI,EAAOtf,YAAYmzJ,EACvB,CAIA,OAHKx+D,GACDr1E,EAAOtf,YAAYkwJ,GAEhB5wI,CACX,EACAiwI,EAAyBrhK,UAAUklK,YAAc,WAC7CvkK,KAAKqQ,OAAO8rG,aAAaA,aAAauI,kBAAkB1kH,KAAKgjK,aAC7DhjK,KAAKqQ,OAAO8rG,aAAaA,aAAagL,uBAC1C,EACAu5C,EAAyBrhK,UAAU+kK,yBAA2B,WACtDpkK,KAAKiD,SAAW++H,EAAAA,GAAuBmN,QAAUnvI,KAAKiD,SAAW++H,EAAAA,GAAuBgiC,MACxFhkK,KAAKqQ,OAAOipG,UAEPt5G,KAAKiD,SAAW++H,EAAAA,GAAuBC,SAC5CjiI,KAAKqQ,OAAO8rG,aAAaA,aAAayI,kBAAkB,CAAEzO,IAAKn2G,KAAKgjK,YAAal9D,eAAgB9lG,KAAKkhK,oBAEjGlhK,KAAKiD,SAAW++H,EAAAA,GAAuB8L,QAC5C9tI,KAAKwtI,YAEb,EACAkzB,EAAyBrhK,UAAUuhK,kBAAoB,WACnD,GAAI5gK,KAAKkhK,kBAAT,CACI,IAAIsD,EAAgBxkK,KAAKmhK,oBAAoBn+K,QAAQuvB,cAAc,qBACnEojB,EAAAA,EAAAA,IAAO6uI,EAEX,MACAxkK,KAAK2iK,iBAAkB,EACvB3iK,KAAKkhK,mBAAoB,EACzBlhK,KAAKykK,2BACT,EACA/D,EAAyBrhK,UAAUolK,0BAA4B,WAC3D,GAAKzkK,KAAKmhK,oBAAV,CAGA,IAAI7uJ,EAAO1P,SAASo5B,eAAeh8B,KAAKmhK,oBAAoBn+K,QAAQ4B,IAChEob,KAAKmhK,sBAAwBnhK,KAAKmhK,oBAAoBvmI,aAAetoB,IACrEtS,KAAKmhK,oBAAoBz5I,WACzBiO,EAAAA,EAAAA,IAAOrjB,IAEXtS,KAAK8jK,oBACD9jK,KAAKiD,SAAW++H,EAAAA,GAAuB8L,SACvC9tI,KAAK2gK,cAAgB,GACrB3gK,KAAKotI,WAAa,GAClBptI,KAAKqiK,eAAgB,EAVzB,CAYJ,EACA3B,EAAyBrhK,UAAUykK,kBAAoB,WACnD,IAAK9jK,KAAK6iK,eAAiB7iK,KAAKqjK,gBAAiB,CAC7C,IAAIqB,EAAY9hK,SAASo5B,eAAeh8B,KAAKqjK,gBAAgBrgL,QAAQ4B,IACjEob,KAAKqjK,kBAAoBrjK,KAAKqjK,gBAAgBzoI,aAAe8pI,IAC7D1kK,KAAKqjK,gBAAgB37I,WACrBiO,EAAAA,EAAAA,IAAO+uI,GAEf,CACA1kK,KAAKwhI,gBAAiB,EACtBxhI,KAAK6iK,eAAgB,CACzB,EACAnC,EAAyBrhK,UAAUyjK,yBAA2B,SAAU3kI,GACpE,GAAIA,EACIA,EAAO8a,cAAcriB,UAAUM,SAAS,mBACxCvB,EAAAA,EAAAA,IAAOwI,EAAO8a,gBAGdtjB,EAAAA,EAAAA,IAAOwI,QAKX,IADA,IAAI/tB,EAAQpQ,KAAK2hK,gBAAgB/pL,SACxButB,EAAI,EAAGA,EAAIiL,EAAMn4B,OAAQktB,KAC9Bg5B,EAAS/tB,EAAMlxB,SAASimB,EAAE/pB,WAAY,KAAKm3B,cAAc,uBAErDojB,EAAAA,EAAAA,IAAOwI,GACPh5B,IAIhB,EACAu7J,EAAyBrhK,UAAUizE,WAAa,SAAU72F,GACpC,KAAdA,EAAEu+D,UAAoBh6C,KAAKiD,SAAW++H,EAAAA,GAAuBC,UAC1DxmJ,EAAE0iD,OAAOvH,UAAUM,SAAS,kBAC3Bl3B,KAAKiD,SAAW++H,EAAAA,GAAuBmN,QAAUnvI,KAAKiD,SAAW++H,EAAAA,GAAuBgiC,QAC5FhkK,KAAKokK,0BAEb,EACA1D,EAAyBrhK,UAAU4hK,aAAe,SAAUhzK,GAC/B,SAArBA,EAAK0tF,aAA+C,WAArB1tF,EAAK0tF,aACpC37E,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAwBrzB,KAAKsyE,WAErD,EACAouF,EAAyBrhK,UAAUyE,oBAAsB,WACjD9D,KAAK2hK,iBACL3sI,EAAAA,GAAaW,OAAO31B,KAAK2hK,gBAAiB,QAAS3hK,KAAKoiK,iCAE5DxzB,EAAAA,EAAAA,IAAuB5uI,KAAKqQ,OAAQrQ,KAAKwuI,aAAa,EAAMxuI,MAC5DA,KAAKqQ,OAAOvM,oBAAoBuvB,EAAAA,IAAuBrzB,KAAKghK,mBAChE,EACON,CACX,CA3kB8C,GCH1CiE,GAAgC,WAChC,SAASA,IACL3kK,KAAKtW,SAAW,CAAC,CACrB,CAyBA,OAxBAi7K,EAAetlK,UAAUulK,SAAW,SAAUxsL,EAAMkC,IAC5CqzB,EAAAA,EAAAA,IAAkB3N,KAAKtW,SAAS,GAAKtR,MACrC4nB,KAAKtW,SAAS,GAAKtR,GAAQkC,EAEnC,EACAqqL,EAAetlK,UAAUmlH,WAAa,SAAUpsI,GAC5C,IAAIu1B,EAAAA,EAAAA,IAAkB3N,KAAKtW,SAAS,GAAKtR,IAErC,KAAM,eAAiBA,EAAO,qBAElC,OAAO4nB,KAAKtW,SAAS,GAAKtR,EAC9B,EACAusL,EAAetlK,UAAU0iI,wBAA0B,SAAUznJ,EAAMuqL,EAAc5hK,GACzE4hK,GACAvqL,EAAKinJ,yBAA2B,IAAIm/B,GAAyBpmL,EAAK+1B,OAAQ/1B,EAAKw4H,gBAC/Ex4H,EAAKinJ,yBAAyBt+H,OAASA,GAGnC3oB,EAAKinJ,2BACLjnJ,EAAKinJ,yBAAyBz9H,sBAC9BxpB,EAAKinJ,8BAA2BrmJ,EAG5C,EACOypL,CACX,CA7BoC,GCAhCG,GAAiC,WACjC,SAASA,IACL9kK,KAAK+kK,YAAc,CAAC,CACxB,CAiBA,OAhBAD,EAAgBzlK,UAAUigK,YAAc,SAAUlnL,EAAMkC,GACpD,IAAI0qL,GAAQj3J,EAAAA,EAAAA,IAAa4xI,EAAAA,GAAYvnK,IACjCu1B,EAAAA,EAAAA,IAAkB3N,KAAK+kK,YAAY,GAAKC,MACxChlK,KAAK+kK,YAAY,GAAKC,GAAS1qL,EAEvC,EACAwqL,EAAgBzlK,UAAU+7J,YAAc,SAAUhjL,GAC9C,IAAI4sL,GAAQj3J,EAAAA,EAAAA,IAAa4xI,EAAAA,GAAYvnK,GACrC,IAAIu1B,EAAAA,EAAAA,IAAkB3N,KAAK+kK,YAAY,GAAKC,IAExC,KAAM,gBAAkBA,EAAQ,gBAGhC,OAAOhlK,KAAK+kK,YAAY,GAAKC,EAErC,EACOF,CACX,CArBqC,yBCPjCvlI,GAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAazCC,GAA0C,SAAUC,EAAYzB,EAAQn/C,EAAK6gD,GAC7E,IAA2H3pB,EAAvHD,EAAI5X,UAAUpmB,OAAQ4O,EAAIovB,EAAI,EAAIkoB,EAAkB,OAAT0B,EAAgBA,EAAOhhD,OAAOihD,yBAAyB3B,EAAQn/C,GAAO6gD,EACrH,GAAuB,kBAAZ/gC,SAAoD,oBAArBA,QAAQihC,SAAyBl5C,EAAIiY,QAAQihC,SAASH,EAAYzB,EAAQn/C,EAAK6gD,QACpH,IAAK,IAAI16B,EAAIy6B,EAAW3nD,OAAS,EAAGktB,GAAK,EAAGA,KAAS+Q,EAAI0pB,EAAWz6B,MAAIte,GAAKovB,EAAI,EAAIC,EAAErvB,GAAKovB,EAAI,EAAIC,EAAEioB,EAAQn/C,EAAK6H,GAAKqvB,EAAEioB,EAAQn/C,KAAS6H,GAChJ,OAAOovB,EAAI,GAAKpvB,GAAKhI,OAAOs1C,eAAegK,EAAQn/C,EAAK6H,GAAIA,CAChE,EAKIo+K,GAA8B,SAAUx5J,GAExC,SAASw5J,IACL,OAAkB,OAAXx5J,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAsBA,OAzBAu/B,GAAU0lI,EAAcx5J,GAIxBk0B,GAAW,EACPzB,EAAAA,EAAAA,IAAS,KACV+mI,EAAa5lK,UAAW,gBAAY,GACvCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,IACV+mI,EAAa5lK,UAAW,iBAAa,GACxCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,IACV+mI,EAAa5lK,UAAW,mBAAe,GAC1CsgC,GAAW,EACPzB,EAAAA,EAAAA,OACD+mI,EAAa5lK,UAAW,yBAAqB,GAChDsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV+mI,EAAa5lK,UAAW,yBAAqB,GAChDsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV+mI,EAAa5lK,UAAW,iBAAa,GACxCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,OACV+mI,EAAa5lK,UAAW,gBAAY,GAChC4lK,CACX,CA3BkC,CA2BhC/+H,EAAAA,IClDE3G,GAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAazCC,GAA0C,SAAUC,EAAYzB,EAAQn/C,EAAK6gD,GAC7E,IAA2H3pB,EAAvHD,EAAI5X,UAAUpmB,OAAQ4O,EAAIovB,EAAI,EAAIkoB,EAAkB,OAAT0B,EAAgBA,EAAOhhD,OAAOihD,yBAAyB3B,EAAQn/C,GAAO6gD,EACrH,GAAuB,kBAAZ/gC,SAAoD,oBAArBA,QAAQihC,SAAyBl5C,EAAIiY,QAAQihC,SAASH,EAAYzB,EAAQn/C,EAAK6gD,QACpH,IAAK,IAAI16B,EAAIy6B,EAAW3nD,OAAS,EAAGktB,GAAK,EAAGA,KAAS+Q,EAAI0pB,EAAWz6B,MAAIte,GAAKovB,EAAI,EAAIC,EAAErvB,GAAKovB,EAAI,EAAIC,EAAEioB,EAAQn/C,EAAK6H,GAAKqvB,EAAEioB,EAAQn/C,KAAS6H,GAChJ,OAAOovB,EAAI,GAAKpvB,GAAKhI,OAAOs1C,eAAegK,EAAQn/C,EAAK6H,GAAIA,CAChE,EAKIq+K,GAAuC,SAAUz5J,GAEjD,SAASy5J,IACL,OAAkB,OAAXz5J,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAOA,OAVAu/B,GAAU2lI,EAAuBz5J,GAIjCk0B,GAAW,EACPzB,EAAAA,EAAAA,IAAS,eACVgnI,EAAsB7lK,UAAW,gBAAY,GAChDsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVgnI,EAAsB7lK,UAAW,oBAAgB,GAC7C6lK,CACX,CAZ2C,CAYzCh/H,EAAAA,ICnCEi/H,GAAsC,WAStC,OARAA,GAAWtmL,OAAOulB,QAAU,SAASghK,GACjC,IAAK,IAAIloL,EAAGioB,EAAI,EAAGhoB,EAAIkhB,UAAUpmB,OAAQktB,EAAIhoB,EAAGgoB,IAE5C,IAAK,IAAI0Z,KADT3hC,EAAImhB,UAAU8G,GACOtmB,OAAOwgB,UAAUoQ,eAAe/P,KAAKxiB,EAAG2hC,KACzDumJ,EAAEvmJ,GAAK3hC,EAAE2hC,IAEjB,OAAOumJ,CACX,EACOD,GAASjmK,MAAMc,KAAM3B,UAChC,EAeIgnK,GAA2B,WAS3B,SAASA,EAAUh1J,EAAQ0+H,EAAmBlrB,GAK1C7jH,KAAKslK,mBAAqB,GAI1BtlK,KAAKulK,uBAAyB,GAI9BvlK,KAAK6yI,gBAAkB,GAIvB7yI,KAAKilG,cAAe,EAIpBjlG,KAAKwlK,uBAAyB,GAC9BxlK,KAAKylK,eAAgB,EACrBzlK,KAAK0lK,qBAAsB,EAC3B1lK,KAAK2lK,oBAAqB,EAC1B3lK,KAAK4lK,wBAAyB,EAC9B5lK,KAAK6lK,eAAgB,EACrB7lK,KAAK8lK,gBAAiB,EACtB9lK,KAAK+lK,iBAAmB,CAAC,EACzB/lK,KAAKgmK,mBAAqB,CAAC,EAC3BhmK,KAAKg8J,kBAAoB,EACzBh8J,KAAKimK,aAAe,GACpBjmK,KAAKkmK,gBAAiB,EACtBlmK,KAAKmmK,oBAAsB,GAC3BnmK,KAAKomK,eAAiB,GACtBpmK,KAAKqmK,uBAAwB,EAC7BrmK,KAAKsmK,qBAAsB,EAC3BtmK,KAAKumK,kBAAmB,EACxBvmK,KAAKwmK,qBAAsB,EAC3BxmK,KAAKymK,WAAY,EACjBzmK,KAAK0mK,aAAc,EACnB1mK,KAAK2mK,eAAgB,EACrB3mK,KAAK4mK,cAAe,EACpB5mK,KAAK6tD,kBAAmB,EACxB7tD,KAAK6mK,sBAAuB,EAC5B7mK,KAAK8mK,qBAAsB,EAC3B9mK,KAAK+mK,oBAAqB,EAC1B/mK,KAAKygE,aAAc,EACnBzgE,KAAKgnK,mBAAoB,EACzBhnK,KAAKinK,oBAAqB,EAC1BjnK,KAAKknK,oBAAqB,EAC1BlnK,KAAKmnK,iBAAkB,EAIvBnnK,KAAKonK,qBAAsB,EAC3BpnK,KAAK6jC,OAAS,YACd7jC,KAAK4jC,IAAM,YAEX5jC,KAAKqnK,aAAe,cACpBrnK,KAAKsnK,YAAc,cACnBtnK,KAAKunK,UAAY,cACjBvnK,KAAKwnK,SAAW,cAChBxnK,KAAKynK,WAAa,cAClBznK,KAAK0nK,iBAAmB,gBACxB1nK,KAAK2nK,gBAAkB,gBACvB3nK,KAAK4nK,eAAiB,gBACtB5nK,KAAK6nK,kBAAoB,gBACzB7nK,KAAK8nK,WAAa,MAClB9nK,KAAKqQ,OAASA,EACdrQ,KAAK+uI,kBAAoBA,EACzB/uI,KAAK+nK,QAAUlkD,EAAQW,WAAW,mBAClCxkH,KAAKyR,MAAQoyG,EAAQW,WAAW,SAChCxkH,KAAK6D,mBACL7D,KAAKu5C,YACT,CAyyHA,OAxyHA8rH,EAAUhmK,UAAU2oK,oBAAsB,WACtChoK,KAAKqQ,OAAOulG,IAAI,yBAChB51G,KAAKsrC,QACT,EASA+5H,EAAUhmK,UAAU4oK,cAAgB,SAAUh6K,EAAM3T,GAChD0lB,KAAKqQ,OAAOylB,QAAQx7C,EAAM0lB,KAAKkoK,YAAYj6K,GAC/C,EACAo3K,EAAUhmK,UAAU6oK,YAAc,SAAUj6K,GACxC,IAAK+R,KAAK6tD,qBAAsBlgD,EAAAA,EAAAA,IAAkB1f,EAAKk6K,cAAex6J,EAAAA,EAAAA,IAAkB1f,EAAKgpK,WAAY,CACrG,IAAIvV,EAAS1hJ,KAAKooK,WAAUz6J,EAAAA,EAAAA,IAAkB1f,EAAKgpK,WAAYtpJ,EAAAA,EAAAA,IAAkB1f,EAAKk6K,WAClFnoK,KAAKqoK,aAAep6K,EAAKk6K,UAAUlR,SAAWhpK,EAAKgpK,UACvDhpK,EAAKyqH,eAAiBgpC,EAAOhpC,cACjC,CACA,OAAOzqH,CACX,EASAo3K,EAAUhmK,UAAU0+F,iBAAmB,SAAU9vG,EAAM3T,GACnD0lB,KAAKqQ,OAAOylB,QAAQx7C,EAAM0lB,KAAKkoK,YAAYj6K,IAC3C+R,KAAK6tD,kBAAmB,CAC5B,EAOAw3G,EAAUhmK,UAAUu8B,cAAgB,WAChC,MAAO,WACX,EAOAypI,EAAUhmK,UAAUqoB,QAAU,WAC1B,IAAIh7B,EAAcsT,KAAKqQ,OAAOrtB,QACzB0J,IAAiBA,EAAY6lB,cAAc,IAAMsrG,EAAAA,KAAyBnxH,EAAY6lB,cAAc,IAAMsrG,EAAAA,OAG/G79G,KAAKsoK,YACLtoK,KAAKuoK,iBACLvoK,KAAK8D,sBACL9D,KAAKknD,eACLlyB,EAAAA,GAAaW,OAAO31B,KAAKqQ,OAAO21I,aAAc,YAAahmJ,KAAKiyE,kBAChEj9C,EAAAA,GAAaW,OAAO31B,KAAKqQ,OAAO4wH,mBAAoB,YAAajhI,KAAKiyE,kBAC1E,EACAozF,EAAUhmK,UAAUmpK,UAAY,WAC5B,OAA0C,WAAlCxoK,KAAKqQ,OAAO6iI,aAAa9pJ,MAAwD,UAAlC4W,KAAKqQ,OAAO6iI,aAAa9pJ,MAAoB4W,KAAKqQ,OAAOo4J,YAC5GzoK,KAAKqQ,OAAOo4J,WAAWC,UAAY1oK,KAAKqQ,OAAOo4J,WAAWC,QAAQpnL,aAClE0e,KAAKqQ,OAAO8+H,SAAWnvI,KAAKqQ,OAAOs4J,kBAC3C,EACAtD,EAAUhmK,UAAUupK,sBAAwB,SAAU9hL,GAClD,IAAI6sH,EAAO3zG,KAAKqQ,OAChB,OAAIsjG,EAAKmuB,gBAAkB9hI,KAAKqQ,OAAO21I,aAAazzI,cAAc,IAAMsrG,EAAAA,IAC7DlK,EAAK28C,qBAAqBxpK,GAE9B,IACX,EACAu+K,EAAUhmK,UAAUwpK,0BAA4B,SAAU/hL,GACtD,IAAI6sH,EAAO3zG,KAAKqQ,OAChB,OAAIsjG,EAAKmuB,gBAAkBnuB,EAAK4sB,kBAAoB1iB,EAAAA,IAAsBlK,EAAKm1D,wBACpEn1D,EAAKo1D,yBAAyBjiL,GAElC,IACX,EACAu+K,EAAUhmK,UAAU2pK,6BAA+B,WAC/C,IAAIr1D,EAAO3zG,KAAKqQ,OAChB,GAA+B,UAA3BsjG,EAAKu/B,aAAa9pJ,MAAoBuqH,EAAK80D,WAAY,CACvD,IAAIQ,GAAiBj7B,EAAAA,EAAAA,IAAchuI,KAAKqQ,OAAOyzH,yBAC/CmlC,EAAsD,WAArCt1D,EAAKu/B,aAAa6e,eAC/BkX,EAAetoL,OAAOqf,KAAKqQ,OAAOo4J,WAAW3W,kBAAkBj0C,EAAAA,KAC/D79G,KAAKqQ,OAAOo4J,WAAW3W,kBAAkBj0C,EAAAA,IAAuBl9H,OAAOsoL,GAG3E,IAFA,IAAI1qF,EAAiBv+E,KAAKqQ,OAAOo4J,WAAW3W,kBAAkBj0C,EAAAA,IAC1Dg0C,EAAa7xJ,KAAKqQ,OAAOsoG,0BAA0B,GAC9CxzG,EAAI,EAAGA,EAAKo5E,EAAetmG,OAASktB,IACzC,IAAK,IAAIqR,EAAI,EAAGA,EAAIyyJ,EAAehxL,OAAQu+B,IACvC,GAAI+nE,EAAer/F,SAASimB,EAAE/pB,WAAY,KAAK,GAAKy2K,KAAgBoX,EAAe/pL,SAASs3B,EAAEp7B,WAAY,KAAK,GAAKy2K,GAAa,CAC7HoX,EAAepiJ,OAAOrQ,EAAG,GACzB,KACJ,CAGR,OAAOyyJ,CACX,CAEI,OAAOt1D,EAAKmwB,uBAEpB,EAQAuhC,EAAUhmK,UAAU6pK,UAAY,SAAUpiL,EAAOkgE,GAC7C,GAAIhnD,KAAKslK,mBAAmBrtL,QAAU+nB,KAAK+uI,kBAAkBo6B,8BACzDnpK,KAAKopK,mBAAmB,CAACtiL,QAD7B,CAIA,IAAI6sH,EAAO3zG,KAAKqQ,OACZg5J,EAAc11D,EAAKu8C,cAAcppK,GACjC46J,EAAS2nB,GAAe11D,EAAK21D,oBAAoBD,EAAYjoI,aAAa,aAC9E,KAAIphC,KAAKinK,oBAAsBvlB,GAAUA,EAAOJ,YAAcI,EAAO6nB,aAArE,CAGA,IAEI3nE,EAFA4nE,EAAqBxpK,KAAK4oK,sBAAsB9hL,GAChD2iL,EAAyBzpK,KAAK6oK,0BAA0B/hL,GAG5D,GAAI6sH,EAAKmB,sBAAwBhuH,GAAS,EAAG,CACzC,IAAIrL,EAAI,CAAEw8G,cAAenxG,EAAO4iL,aAAa,GAC7C1pK,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAyB53C,GAC5C,IAAIkuL,EAAah2D,EAAKmuB,eAAiBnuB,EAAKk0C,cAAc+hB,oBAAoB9iL,GACxE,KACN,IAAIuiL,IAAgB11D,EAAK21D,oBAAoBD,EAAYjoI,aAAa,eAAgBuoI,EAGjF,CACD,GAAIluL,EAAEiuL,cAAgB/1D,EAAKo7B,kBAAkB86B,iBAClB7pK,KAAKqQ,OAAOy5J,qBACd7xL,OAAS,GAC1B+nB,KAAK+pK,oBAGb,MACJ,CAVInoE,EAAa+nE,GAA0Bh2D,EAAK21D,oBAAoBD,EAAYjoI,aAAa,aAAav7C,IAW9G,MAEI+7G,EAAa5hG,KAAKooK,UAAUthL,GAAOjB,KAEvC,GAAKma,KAAKgqK,aAAgBX,IAAerpK,KAAKwoK,YAA9C,CAMA,IAOIv6K,EAPAg8K,EAAgBZ,EAAYnjH,aAAa,iBAC7ClmD,KAAKkqK,eACLljH,EAAYA,IACPhnD,KAAKslK,mBAAmBrtL,SACe,IAAnC+nB,KAAKslK,mBAAmBrtL,WAAgB+nB,KAAKygE,cAAezgE,KAAKqQ,OAAO85J,sBAC7DrjL,IAAUkZ,KAAKslK,mBAAmB,KAH/Bt+G,EAIvBhnD,KAAKygE,aAAc,EAEnB,IAAI2pG,EAAM,SACLpjH,EAYDhnD,KAAKqqK,qBAAqBp8K,EAAM+4D,EAAUlgE,EAAO86G,EAjDrC,MAiD4DqoE,EAAeG,EAAvFpqK,CAA4F/R,IAX5FA,EAAO,CACHpI,KAAM+7G,EAAYq1D,SAAUnwK,EAAOwjL,cAAetqK,KAAK2lK,mBACvD4E,eAAgBvqK,KAAK0lK,oBAAqBxpG,IAAKmtG,EAC/CmB,YAAa72D,EAAKu8C,cAAclwJ,KAAKyqK,cACrCC,iBAAkB1qK,KAAKyqK,aAActsI,OAAQn+B,KAAK2qK,aAAcpjL,QAAQ,EAAO0L,aAAc+M,KAAK/M,aAClG23K,wBAAyB5qK,KAAK4qK,yBAElC38K,EAAO+R,KAAK6qK,eAAe58K,EAAMu7K,EAAoBC,GACrDzpK,KAAKqQ,OAAOylB,QAAQzC,EAAAA,IAAqBrzB,KAAKkoK,YAAYj6K,GAAO+R,KAAKqqK,qBAAqBp8K,EAAM+4D,EAAUlgE,EAAO86G,EA9CtG,MA8C6HqoE,EAAeG,IAnB5J,CA/BA,CANA,CA6DJ,EACA/E,EAAUhmK,UAAUgrK,qBAAuB,SAAUp8K,EAAM+4D,EAAUlgE,EAAO86G,EAAYkpE,EAAWb,EAAeG,GAC9G,IAAIp6J,EAAQhQ,KACZ,OAAO,SAAU/R,IACR0f,EAAAA,EAAAA,IAAkB1f,KAA4B,IAAnBA,EAAK,GAAKm8K,IAI1Cp6J,EAAMlpB,MAAQA,EACdkpB,EAAMsoE,OAAStxB,EACfh3C,EAAMnqB,KAAO+7G,EACb5xF,EAAM+6J,QAAUD,EACZb,GAAiBj6J,EAAM++H,kBAAkB86B,kBAA+D,oBAAzC75J,EAAM++H,kBAAkBi8B,cACvFh7J,EAAMi7J,iBAAiBnkL,GACvBkpB,EAAMk7J,sBAEAjB,GAAiBj6J,EAAM++H,kBAAkB86B,kBACN,oBAAzC75J,EAAM++H,kBAAkBi8B,cACxBh7J,EAAMk7J,oBAEmC,oBAAzCl7J,EAAM++H,kBAAkBi8B,eACxBh7J,EAAMm3J,iBAAkB,EACxBn3J,EAAMu4J,oBAELv4J,EAAM++H,kBAAkB86B,kBAA6D,oBAAzC75J,EAAM++H,kBAAkBi8B,eACnEh7J,EAAMK,OAAO85J,qBAAuBn6J,EAAM++H,kBAAkB86B,oBAC9D75J,EAAM81J,gBAAiB,EACvB91J,EAAMm7J,aAtBNn7J,EAAMo7J,mBAwBd,CACJ,EACA/F,EAAUhmK,UAAU6rK,kBAAoB,WACpC,IACIj9K,EADA0lH,EAAO3zG,KAAKqQ,OAEZvpB,EAAQkZ,KAAKlZ,MACbkgE,EAAWhnD,KAAKs4E,OAChBspB,EAAa5hG,KAAKna,KAClBilL,EAAY9qK,KAAK+qK,QACjB1B,EAAc11D,EAAKu8C,cAAcppK,GACjC0iL,EAAqBxpK,KAAK4oK,sBAAsB9hL,GAChD2iL,EAAyBzpK,KAAK6oK,0BAA0B/hL,GACvDkgE,GAAa8jH,IACV9qK,KAAKslK,mBAAmBhvK,QAAQxP,KAAW,IAC3CkZ,KAAKqrK,mBAAmBhC,EAAaviL,GACrCkZ,KAAKsrK,iBAAiB9B,EAAoBC,EAAwB3iL,IAEtEkZ,KAAKurK,eAAezkL,IAEnBkgE,IACD/4D,EAAO,CACHpI,KAAM+7G,EAAYq1D,SAAUnwK,EAC5Bo1E,IAAKmtG,EAAamB,YAAa72D,EAAKu8C,cAAclwJ,KAAKyqK,cACvDC,iBAAkB1qK,KAAKyqK,aAActsI,OAAQn+B,KAAK2qK,aAAc13K,aAAc+M,KAAK/M,aACnFu4K,wBAAyBxrK,KAAK4qK,wBAAyBa,WAAY3kL,GAEvEmH,EAAO+R,KAAK6qK,eAAe58K,EAAMu7K,EAAoBC,GACrDzpK,KAAK+9F,iBAAiB9vG,EAAMolC,EAAAA,MAEhCrzB,KAAK/M,cAAe,EACpB+M,KAAK0rK,eAAe5kL,EACxB,EACAu+K,EAAUhmK,UAAUisK,iBAAmB,SAAU9B,EAAoBC,EAAwB3iL,GACrFkZ,KAAKqQ,OAAOyxH,iBACZ9hI,KAAKqrK,mBAAmB7B,EAAoB1iL,GACxCkZ,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,IAAsB4rD,GACtDzpK,KAAKqrK,mBAAmB5B,EAAwB3iL,GAG5D,EACAu+K,EAAUhmK,UAAUwrK,eAAiB,SAAUc,EAAWC,EAAMC,GAC5D,GAAI7rK,KAAKqQ,OAAOyxH,eAAgB,CAC5B,IAAIgqC,EAAO,CAAEF,KAAMA,EAAMG,eAAgB/rK,KAAKqQ,OAAOk9I,iBAAiBvtJ,KAAKyqK,eAGvEzqK,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,IAAsBguD,IACtDC,EAAwB,eAAID,EAC5BC,EAAgC,uBAAI9rK,KAAKqQ,OAAO6+I,yBAAyBlvJ,KAAKyqK,eAElFkB,EAAYxG,GAAS,CAAC,EAAGwG,EAAWG,EACxC,CACA,OAAOH,CACX,EAQAtG,EAAUhmK,UAAU2sK,kBAAoB,SAAUviK,EAAYwiK,GAC1DjsK,KAAKksK,WAAWlsK,KAAKmsK,yBAAyB1iK,EAAYwiK,IAC1DjsK,KAAKurK,eAAeU,EACxB,EACA5G,EAAUhmK,UAAU+sK,mBAAqB,SAAUzhE,EAAc+N,EAAgB6yB,EAAckgC,EAAYY,GACvG,IAAK,IAAIlnK,EAAI,EAAG8L,EAAMw6J,EAAWxzL,OAAQktB,EAAI8L,EAAK9L,IAAK,CACnD,IAAImnK,EAAatsK,KAAKqQ,OAAO+9I,cAAcqd,EAAWvsL,SAASimB,EAAE/pB,WAAY,MACzE4kB,KAAKqQ,OAAOykG,uBACZw3D,EAAatsK,KAAKqQ,OAAO6/I,cAAcub,EAAWvsL,SAASimB,EAAE/pB,WAAY,OAE7E,IAAIsmK,EAAS1hJ,KAAKooK,UAAUkE,GACxB5qB,GAAUA,EAAOJ,WAAaI,EAAO6nB,cACrC5+D,EAAalrH,KAAKiiK,EAAO77J,MACzB0lJ,EAAa9rJ,KAAK6sL,GAClB5zD,EAAej5H,KAAKiiK,EAAOhpC,iBAGvB14G,KAAKinK,oBAAsBoF,GAC3BA,EAAmBxlJ,OAAOwlJ,EAAmB/1K,QAAQm1K,EAAWvsL,SAASimB,EAAE/pB,WAAY,MAAO,EAG1G,CACJ,EAOAiqL,EAAUhmK,UAAU6sK,WAAa,SAAUT,GACvC,IAAIz7J,EAAQhQ,KACR2zG,EAAO3zG,KAAKqQ,OACZg8J,EAAqBZ,EAAWpuK,QAChC45J,EAAYj3J,KAAKusK,cAAgCd,EAAWA,EAAWxzL,OAAS,GAA/CwzL,EAAW,GAChDzrK,KAAK6tD,kBAAmB,EACxB,IAAI09E,EAAe,GACf7yB,EAAiB,GACjB8wD,EAAqBxpK,KAAK4oK,sBAAsB3R,GAChDwS,EAAyBzpK,KAAK6oK,0BAA0B5R,GAExDtsD,EAAe,GACnB,GAAK3qG,KAAKgqK,cAAehqK,KAAKwoK,YAA9B,CAGAxoK,KAAKosK,mBAAmBzhE,EAAc+N,EAAgB6yB,EAAckgC,EAAYY,GAChFrsK,KAAKkqK,eACL,IAAIj8K,EAAO,CACP1G,QAAQ,EACRkkL,WAAYY,EAAoBnwG,IAAKqvE,EAAc0rB,SAAUA,EAAU94H,OAAQn+B,KAAK2qK,aACpF6B,QAAS74D,EAAKg5C,UAAU3sJ,KAAKyqK,cAAeC,iBAAkB1qK,KAAKyqK,aACnEx3K,aAAc+M,KAAK/M,aAAcq3K,cAAetqK,KAAK2lK,mBAAoB4E,eAAgBvqK,KAAK0lK,oBAC9F7/K,KAAM8kH,EAAcigE,wBAAyB5qK,KAAK4qK,wBAAyBlyD,eAAgBA,GAE/FzqH,EAAO+R,KAAK6qK,eAAe58K,EAAMu7K,EAAoBC,GACrDzpK,KAAKqQ,OAAOylB,QAAQzC,EAAAA,IAAqBrzB,KAAKkoK,YAAYj6K,IAAO,SAAUA,GACvE,IAAK0f,EAAAA,EAAAA,IAAkB1f,KAA4B,IAAnBA,EAAa,OAA7C,CAIA+hB,EAAMm7J,WACNn7J,EAAMu7J,eAAec,EAAmBhvK,OAAO,GAAG,IAClD,IAAIovK,EAAc,SAAU3lL,EAAOm+G,GAE/B,GADAj1F,EAAMq7J,mBAAmB13D,EAAKu8C,cAAcppK,GAAQA,EAAOm+G,GACvD0O,EAAKmuB,eAAgB,CACrB,IAAI4qC,EAAW18J,EAAMK,OAAOkwH,kBAAoB1iB,EAAAA,GAAqBlK,EAAKo1D,yBAAyBjiL,QAC7F5L,EACN80B,EAAMs7J,iBAAiB33D,EAAK28C,qBAAqBxpK,GAAQ4lL,EAAU5lL,EACvE,CACAkpB,EAAM07J,eAAezU,EACzB,EACA,GAAKjnJ,EAAMu8J,cAOPE,EAAYxV,QANZ,IAAK,IAAI1oJ,EAAK,EAAGo+J,EAAuBN,EAAoB99J,EAAKo+J,EAAqB10L,OAAQs2B,IAAM,CAEhGk+J,EADaE,EAAqBp+J,KACdolG,EAAKmB,qBAC7B,CAKJ7mH,EAAO,CACHw9K,WAAYY,EAAoBnwG,IAAKqvE,EAAc0rB,SAAUA,EAAU94H,OAAQnuB,EAAM26J,aACrF6B,QAAS74D,EAAKg5C,UAAU38I,EAAMy6J,cAAeC,iBAAkB16J,EAAMy6J,aACrE5kL,KAAMmqB,EAAM85J,qBAAsB72K,aAAc+c,EAAM/c,aACtD23K,wBAAyB56J,EAAM46J,wBAAyBlyD,eAAgBA,GAE5EzqH,EAAO+hB,EAAM66J,eAAe58K,EAAMu7K,EAAoBC,GAClDz5J,EAAMi6J,eACNj6J,EAAM+tF,iBAAiB9vG,EAAMolC,EAAAA,KAEjCrjB,EAAM/c,cAAe,CA/BrB,MAFI+c,EAAMo7J,mBAkCd,GA/CA,CAgDJ,EAQA/F,EAAUhmK,UAAU+pK,mBAAqB,SAAUqC,GAC/C,IAAI93D,EAAO3zG,KAAKqQ,OAEZ8tB,EAASn+B,KAAKm+B,OAClBn+B,KAAK6tD,kBAAmB,EACxB,IAAI09E,EAAe,GACf7yB,EAAiB,GACjB/N,EAAe,GACfm3C,EAAUnuC,EAAKm/B,wBAAwBnyJ,OAAO8qL,GAC9CpC,EAAerpK,KAAKusK,cACpB54D,EAAKu8C,cAAcub,EAAWA,EAAWxzL,OAAS,IADd07H,EAAKu8C,cAAcub,EAAW,IAElEjC,EAAsBxpK,KAAKusK,cAC3BvsK,KAAK4oK,sBAAsB6C,EAAWA,EAAWxzL,OAAS,IADf+nB,KAAK4oK,sBAAsB6C,EAAW,IAEjFhC,EAA0BzpK,KAAKusK,cAC/BvsK,KAAK6oK,0BAA0B4C,EAAWA,EAAWxzL,OAAS,IADf+nB,KAAK6oK,0BAA0B4C,EAAW,IAE7F,GAAMzrK,KAAKgqK,cAAehqK,KAAKwoK,aAAiBxoK,KAAK+uI,kBAAkB69B,aAAvE,CAGA,IAAI3+K,EACA4+K,EAAiB7sK,KAAKqQ,OAAO4jG,aAAa91H,QAAO,SAAUg4H,GAAO,MAAoB,aAAbA,EAAI77H,IAAqB,IAClG0lB,KAAK2lK,qBAAuBkH,EAAe50L,QAC3C+nB,KAAKosK,mBAAmBzhE,EAAc+N,EAAgB6yB,EAAcuW,GAExE,IAAK,IAAIvzI,EAAK,EAAGu+J,EAAerB,EAAYl9J,EAAKu+J,EAAa70L,OAAQs2B,IAAM,CACxE,IAAI0oJ,EAAW6V,EAAav+J,GACxBmzI,EAAS1hJ,KAAKooK,UAAUnR,GACxB8V,EAAe/sK,KAAKslK,mBAAmBhvK,QAAQ2gK,IAAa,EAChE,KAAIj3J,KAAKinK,oBAAsBvlB,GAAUA,EAAOJ,YAAcI,EAAO6nB,aAArE,CAIA,GADAvpK,KAAKurK,eAAetU,GAChB8V,IAAkBF,EAAe50L,QAAgB+nB,KAAK+uI,kBAAkBi+B,cAAiBhtK,KAAK2lK,oBAAqB,CAGnH,GAFA3lK,KAAK6mK,sBAAuB,EAC5B7mK,KAAKitK,YAAY55I,EAAAA,IAAuB,CAAC4jI,GAAW,CAACvV,EAAO77J,MAAO,CAACwjL,GAAc,CAAC3nB,EAAOhpC,gBAAiBv6E,GACvGn+B,KAAKumK,iBACL,OAEJvmK,KAAKslK,mBAAmBz+I,OAAO7mB,KAAKslK,mBAAmBhvK,QAAQ2gK,GAAW,GAC1Ej3J,KAAK6yI,gBAAgBhsH,OAAO7mB,KAAK6yI,gBAAgBv8I,QAAQ+yK,GAAc,GACvErpK,KAAKurK,eAAevrK,KAAKslK,mBAAmBrtL,OAAS+nB,KAAKslK,mBAAmBtlK,KAAKslK,mBAAmBrtL,OAAS,IAAM,GACpHoxL,EAAYnoI,gBAAgB,iBAC5BlhC,KAAKktK,uBAAuB7D,GAAa,EAAO,KAAM,wBAAyB,YAC3EG,IACAxpK,KAAK6yI,gBAAgBhsH,OAAO7mB,KAAK6yI,gBAAgBv8I,QAAQkzK,GAAqB,GAC9EA,EAAmBtoI,gBAAgB,iBACnClhC,KAAKktK,uBAAuB1D,GAAoB,EAAO,KAAM,wBAAyB,aAEtFC,IACAzpK,KAAK6yI,gBAAgBhsH,OAAO7mB,KAAK6yI,gBAAgBv8I,QAAQmzK,GAAyB,GAClFA,EAAuBvoI,gBAAgB,iBACvClhC,KAAKktK,uBAAuBzD,GAAwB,EAAO,KAAM,wBAAyB,aAE9FzpK,KAAKitK,YAAY55I,EAAAA,IAAsB,CAAC4jI,GAAW,CAACvV,EAAO77J,MAAO,CAACwjL,GAAc,CAAC3nB,EAAOhpC,gBAAiBv6E,EAAQ,CAACqrI,QAAqBtuL,EAAW,CAACuuL,IACpJzpK,KAAK/M,cAAe,EACpB+M,KAAK6tD,kBAAmB,EACxB7tD,KAAK6mK,sBAAuB,EAC5B7mK,KAAKqmK,uBAAwB,CACjC,KACK,CAYD,GAXArmK,KAAKkqK,eACLj8K,EAAO,CACH1G,QAAQ,EACR1B,KAAM8kH,EAAa1yH,OAAS0yH,EAAe+2C,EAAO77J,KAAMoxK,SAAUA,EAAU/6F,IAAKqvE,EAAatzJ,OAASszJ,EACnG89B,EAAalrI,OAAQn+B,KAAK2qK,aAAc6B,QAAS74D,EAAKg5C,UAAU3sJ,KAAKyqK,cACzEC,iBAAkB1qK,KAAKyqK,aAAcH,cAAetqK,KAAK2lK,mBAAoB4E,eAAgBvqK,KAAK0lK,oBAClGhtD,eAAgBA,EAAezgI,OAASygI,EAAiBgpC,EAAOhpC,eAAgBzlH,aAAc+M,KAAK/M,aACnG23K,wBAAyB5qK,KAAK4qK,wBAAyBa,WAAY3pB,GAEvE7zJ,EAAO+R,KAAK6qK,eAAe58K,EAAMu7K,EAAoBC,GACrDzpK,KAAKqQ,OAAOylB,QAAQzC,EAAAA,IAAqBrzB,KAAKkoK,YAAYj6K,MACrD0f,EAAAA,EAAAA,IAAkB1f,KAA4B,IAAnBA,EAAa,OAEzC,YADA+R,KAAKorK,oBAGLprK,KAAKusK,eACLvsK,KAAKmrK,WAETnrK,KAAKqrK,mBAAmBhC,EAAapS,GACrCj3J,KAAKsrK,iBAAiB9B,EAAoBC,EAAwBxS,EACtE,CAaA,GAZK8V,IACD9+K,EAAO,CACHpI,KAAM8kH,EAAa1yH,OAAS0yH,EAAe+2C,EAAO77J,KAAMoxK,SAAUA,EAAU/6F,IAAKqvE,EAAatzJ,OAASszJ,EACnG89B,EAAalrI,OAAQn+B,KAAK2qK,aAAc6B,QAAS74D,EAAKg5C,UAAU3sJ,KAAKyqK,cACzEC,iBAAkB1qK,KAAKyqK,aAAc/xD,eAAgBA,EAAezgI,OAASygI,EAAiBgpC,EAAOhpC,eACrGzlH,aAAc+M,KAAK/M,aAAc23K,wBAAyB5qK,KAAK4qK,wBAAyBa,WAAY3pB,GAExG7zJ,EAAO+R,KAAK6qK,eAAe58K,EAAMu7K,EAAoBC,GACrDzpK,KAAK+9F,iBAAiB9vG,EAAMolC,EAAAA,MAEhCrzB,KAAK/M,cAAe,EACpB+M,KAAK0rK,eAAezU,GAChBj3J,KAAKusK,cACL,KAhEJ,CAkEJ,CA9EA,CA+EJ,EACAlH,EAAUhmK,UAAU8sK,yBAA2B,SAAU1iK,EAAYwiK,GAKjE,IAJA,IAAInqB,EAAU,GAEV97J,EAAMyjB,GAAcwiK,EACpB,CAAE9mK,EAAGsE,EAAYkX,IAAKsrJ,GAAa,CAAE9mK,EAAG8mK,EAAUtrJ,IAAKlX,GAActE,EAAInf,EAAGmf,EAAGwb,EAAM36B,EAAG26B,IACrFxb,GAAKwb,EAAKxb,IACb28I,EAAQriK,KAAK0lB,GAKjB,OAHIsE,EAAawiK,GACbnqB,EAAQprG,UAELorG,CACX,EACAujB,EAAUhmK,UAAU8rK,SAAW,WAC3BnrK,KAAK6lK,eAAgB,EACrB7lK,KAAK+pK,mBACT,EACA1E,EAAUhmK,UAAU8tK,iBAAmB,WAC/BntK,KAAKumK,kBAAiD,UAA7BvmK,KAAKqQ,OAAO+8J,eAGzCptK,KAAKslK,mBAAqB,GAC1BtlK,KAAK6yI,gBAAkB,GACvB7yI,KAAKurK,gBAAgB,GACjBvrK,KAAKusK,eAAiBvsK,KAAKqQ,OAAOs4J,qBAClC3oK,KAAK+lK,iBAAmB,CAAC,GAEjC,EACAV,EAAUhmK,UAAU4rK,iBAAmB,SAAUnkL,GAC7C,GAAIkZ,KAAKs4E,OAAQ,CACb,IAAIjb,EAAcr9D,KAAKqQ,OAAO6/I,cAAcppK,GACvCkZ,KAAKymK,YACNppG,EAAYn8B,gBAAgB,iBAC5BlhC,KAAKktK,uBAAuB7vG,GAAa,GAAO,EAAM,wBAAyB,aAEnFr9D,KAAK+qK,SAAU,EACf/qK,KAAKqtK,wBAAwBhwG,GAAa,GAC1Cr9D,KAAKstK,iBAAiBjwG,GACtBr9D,KAAKslK,mBAAmBz+I,OAAO7mB,KAAKslK,mBAAmBhvK,QAAQxP,GAAQ,GACvEkZ,KAAK6yI,gBAAgBhsH,OAAO7mB,KAAK6yI,gBAAgBv8I,QAAQ0J,KAAKqQ,OAAO6/I,cAAcppK,IAAS,EAChG,CACJ,EACAu+K,EAAUhmK,UAAUqsK,eAAiB,SAAUjiK,GAC3CzJ,KAAKyqK,aAAehhK,EACpBzJ,KAAKiqK,cAAgBjqK,KAAKslK,mBAAmBrtL,SAAU,CAC3D,EACAotL,EAAUhmK,UAAUkuK,WAAa,SAAUC,EAAS3nL,GAChD,OAAO2nL,IAAUlzC,EAAAA,EAAAA,IAAekzC,IAAWvxI,EAAAA,EAAAA,IAAUuxI,EAAS3nL,GAA6BA,EAAK,GAAK2nL,EACzG,EACAnI,EAAUhmK,UAAUguK,wBAA0B,SAAUhE,EAAaoE,GACjE,IAAIz9J,EAAQhQ,KACZ,IAAKA,KAAKqQ,OAAOs4J,oBAAsB3oK,KAAKqQ,OAAO0+H,kBAAkB86B,kBACjE7pK,KAAKqQ,OAAOsoG,0BAA0B1gI,OAAS,MAAO01B,EAAAA,EAAAA,IAAkB07J,GAAc,CACjFrpK,KAAKqQ,OAAOs4J,oBACb3oK,KAAK0tK,+BAET,IAAIhsB,EAAS1hJ,KAAKooK,UAAUiB,GACxBsE,EAASjsB,EAAO77J,KAAOma,KAAKutK,WAAWvtK,KAAK6xJ,WAAYnQ,EAAO77J,MAAQ,KAC3E,GAAe,OAAX8nL,EACA,OAEJjsB,EAAO18C,WAAayoE,EACfA,IAAaztK,KAAKinK,oBAAwBjnK,KAAKinK,oBAAsBvlB,EAAO6nB,cAAgB7nB,EAAO18C,YACpGhlG,KAAK+lK,iBAAiB,GAAK4H,GAAUF,SAC7BztK,KAAKgmK,mBAAmB,GAAK2H,GAChC3tK,KAAKmmK,oBAAoBx+J,MAAK,SAAU9hB,GAAQ,OAAOmqB,EAAMu9J,WAAWv9J,EAAM6hJ,WAAYhsK,KAAU8nL,CAAQ,KAC7G3tK,KAAKmmK,oBAAoB1mL,KAAKiiK,EAAO77J,OAIzCma,KAAK4tK,oBAAoBD,EAEjC,CACJ,EACAtI,EAAUhmK,UAAUuuK,oBAAsB,SAAU7qF,EAAMkkF,GACtD,IAKIngL,EALAkpB,EAAQhQ,YACJA,KAAK+lK,iBAAiB,GAAKhjF,GAC/B/iF,KAAKknK,qBACLlnK,KAAKgmK,mBAAmB,GAAKjjF,IAAQ,GAGzC,IAAI8qF,EAAY7tK,KAAKmmK,oBAAoBx+J,MAAK,SAAU9hB,EAAMsf,GAE1D,OADAre,EAAQqe,EACD6K,EAAMu9J,WAAWv9J,EAAM6hJ,WAAYhsK,KAAUk9F,CACxD,IACI8qF,IACA7tK,KAAKmmK,oBAAoBt/I,OAAO//B,EAAO,GACnCmgL,GACAjnK,KAAKqQ,OAAOy9J,uBAAuBjnJ,OAAO//B,EAAO,GAG7D,EACAu+K,EAAUhmK,UAAUiuK,iBAAmB,SAAUpxG,EAAKuxG,EAAUxW,GAC5D,KAAKtpJ,EAAAA,EAAAA,IAAkBuuD,GAAM,CACzB,IAAI6xG,EAAS7xG,EAAI3pD,cAAc,mBAC1B5E,EAAAA,EAAAA,IAAkBogK,MACnBC,EAAAA,EAAAA,IAAqBD,EAAO/hH,mBAAoByhH,IAChDQ,EAAAA,EAAAA,IAAWF,EAAQN,KACf9/J,EAAAA,EAAAA,IAAkB3N,KAAKkuK,kBAAoBvgK,EAAAA,EAAAA,IAAkB3N,KAAKkuK,iBAC9DluK,KAAKkuK,cAAct3I,UAAUM,SAAS,sBAC1Cl3B,KAAKmuK,iBAAiBlX,GAGlC,CACJ,EACAoO,EAAUhmK,UAAUgsK,mBAAqB,SAAUhC,EAAa5/J,EAAYw7F,GACxE,GAAKokE,EAAL,CAGArpK,KAAKslK,mBAAmB7lL,KAAKgqB,GAC7B,IAAIwH,EAAMjR,KAAKslK,mBAAmBrtL,OAWlC,GAVI+nB,KAAKqQ,OAAOyxH,gBAAkB7wH,EAAM,GAC/BjR,KAAKslK,mBAAmBr0J,EAAM,KAAOjR,KAAKslK,mBAAmBr0J,EAAM,IACpEjR,KAAKslK,mBAAmBx6J,MAGhC9K,KAAK6yI,gBAAgBpzJ,KAAK4pL,GAC1BA,EAAY/yI,aAAa,gBAAiB,QAC1Ct2B,KAAKqtK,wBAAwBhE,GAAa,GAC1CrpK,KAAKstK,iBAAiBjE,GAAa,GACnCrpK,KAAKktK,uBAAuB7D,GAAa,EAAM,KAAM,wBAAyB,aACzErpK,KAAKilG,aAAc,CACpB,IAAI9mE,EAASn+B,KAAKyR,MAAM28J,iBAAiBjG,UACrCkB,EAAYlnC,MAAMniI,KAAKyR,MAAM28J,iBAAiBjG,WAC9CkB,EAAY92J,cAAc,yFAI9B,GAHIvS,KAAKqQ,OAAOg+J,mBAA0C,IAArBruK,KAAKsuK,cACtCnwI,EAASn+B,KAAKqQ,OAAOg+J,kBAAkB7zD,OAEtCr8E,GAAU8mE,EACX,OAEJjlG,KAAKyR,MAAMrxB,QAAQ,CAAE+9C,OAAQA,IAAU,EAC3C,CAxBA,CAyBJ,EAMAknI,EAAUhmK,UAAUkpK,eAAiB,WAKjC,GAJAvoK,KAAKuuK,uBAAwB,EACzBvuK,KAAK+uI,kBAAkB86B,kBAAoB7pK,KAAKmmK,oBAAoBluL,SACpE+nB,KAAKomK,gBAAiBp4B,EAAAA,EAAAA,IAAchuI,KAAKmmK,uBAExCnmK,KAAKqQ,OAAOs4J,oBAAuB3oK,KAAKqQ,OAAOs4J,qBAAuB3oK,KAAKqQ,OAAO8+H,UACjFxhI,EAAAA,EAAAA,IAAkB3N,KAAKkuK,gBAAkBluK,KAAKkuK,cAAct3I,UAAUM,SAAS,oBAAsB,CACvG,IAAI2vB,EAAO7mD,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,gBAAgBA,cAAc,QACvEs0C,EAAKjwB,UAAUM,SAAS,gBACxB2vB,EAAKjwB,UAAUjB,OAAO,iBAEtB31B,KAAKqQ,OAAOs4J,qBACZ3oK,KAAKmmK,oBAAsB,GAC3BnmK,KAAK+lK,iBAAmB,CAAC,GAE7B/lK,KAAK+pK,oBACL/pK,KAAKwuK,qBACLxuK,KAAKyuK,uBACLzuK,KAAKyqK,kBAAevvL,EACpB8kB,KAAK0uK,eAAYxzL,EACjB8kB,KAAK2uK,gBAAazzL,EAClB8kB,KAAK4lK,wBAAyB,EAC9B5lK,KAAK/M,cAAe,EACpB+M,KAAKuuK,uBAAwB,EAC7BvuK,KAAKqmK,uBAAwB,CACjC,CACJ,EAMAhB,EAAUhmK,UAAU0qK,kBAAoB,WACpC,IAAI/5J,EAAQhQ,KACZ,GAAIA,KAAKiqK,cAAe,CAUpB,IATA,IAAIt2D,EAAO3zG,KAAKqQ,OACZonJ,EAASz3J,KAAKqQ,OAAO+9I,cACrB9kI,EAAS,GACTslJ,EAAQ,GACRC,EAAS,GACTC,EAAc,GACdC,EAAa,GACbC,EAAmB,GACnBC,EAAWjvK,KAAKm+B,OACXh5B,EAAI,EAAG8L,EAAMjR,KAAKslK,mBAAmBrtL,OAAQktB,EAAI8L,EAAK9L,IAAK,CAChE,IAAImnK,EAA+C,UAAlCtsK,KAAKqQ,OAAO6iI,aAAa9pJ,KACtC4W,KAAKqQ,OAAOs8I,UAAU3sJ,KAAKslK,mBAAmBpmL,SAASimB,EAAE/pB,WAAY,MACnE4kB,KAAKqQ,OAAO+9I,cAAcpuJ,KAAKslK,mBAAmBpmL,SAASimB,EAAE/pB,WAAY,MAC3EsmK,EAAS1hJ,KAAKooK,UAAUkE,GAO5B,GANI5qB,IACAp4H,EAAO7pC,KAAKiiK,EAAO77J,MACnB+oL,EAAMnvL,KAAK6sL,GACXyC,EAAWtvL,KAAKugB,KAAKslK,mBAAmBpmL,SAASimB,EAAE/pB,WAAY,MAC/D4zL,EAAiBvvL,KAAKiiK,EAAOhpC,iBAE7B/E,EAAKmuB,eAAgB,CACrB,IAAIgsB,EAAQn6C,EAAK45C,iBAIjB,GAHIO,GAASA,EAAM71K,QACf42L,EAAOpvL,KAAKquK,EAAM9tJ,KAAKslK,mBAAmBpmL,SAASimB,EAAE/pB,WAAY,OAEjEu4H,EAAK4sB,kBAAoB1iB,EAAAA,GAAoB,CAC7C,IAAIqxD,EAASv7D,EAAKw7D,qBACdD,GAAUA,EAAOj3L,QACjB62L,EAAYrvL,KAAKyvL,EAAOlvK,KAAKslK,mBAAmBpmL,SAASimB,EAAE/pB,WAAY,MAE/E,CACJ,CACJ,CACI4kB,KAAK+uI,kBAAkB86B,kBAA4D,oBAAxC7pK,KAAK+uI,kBAAkBi8B,eAClEhrK,KAAKovK,eAAepvK,KAAKuuK,uBAE7BvuK,KAAKitK,YAAY55I,EAAAA,IAAuB07I,EAAYzlJ,EAAQslJ,EAAOI,EAAkBC,EAAUJ,GAAQ,WACnG,GAAI7+J,EAAMu2J,mBAAqBv2J,EAAMo/J,cAAgBp/J,EAAMu+J,uBAA0Bv+J,EAAM/c,eACtF+c,EAAMK,OAAOs4J,oBADlB,CAEI,GAAI34J,EAAMK,OAAOs4J,mBACb,GAAyF,iBAArF34J,EAAMq/J,kBAAkBr/J,EAAMK,OAAOrtB,QAAQuvB,cAAc,sBAC3D,IAAK,IAAIpN,EAAI,EAAGA,EAAI6K,EAAM6iI,gBAAgB56J,OAAQktB,IAC9C6K,EAAMq9J,wBAAwBr9J,EAAM6iI,gBAAgB3zJ,SAASimB,EAAE/pB,WAAY,MAAM,QAIrF40B,EAAMK,OAAO+8J,aAAe,QAC5Bp9J,EAAMs/J,2BAA0B,GAGpCt/J,EAAM61J,gBACN71J,EAAMm9J,mBACNn9J,EAAM61J,eAAgB,EAClB71J,EAAM81J,iBACN91J,EAAMk7J,oBACNl7J,EAAM81J,gBAAiB,GAInC,KAtBA,CAwBA,IADA,IAAI9iL,EAAU,GAAGqa,MAAMqC,KAAK+3J,EAAOt5K,QAAO,SAAUyxG,GAAU,OAAOA,EAAO1pC,aAAa,gBAAkB,KAClG1vC,EAAI,EAAGA,EAAIxzB,EAAQ/K,OAAQu+B,IAC3BxG,EAAMy2J,YACPzjL,EAAQ9D,SAASs3B,EAAEp7B,WAAY,KAAK8lD,gBAAgB,iBACpDlxB,EAAMk9J,uBAAuBlqL,EAAQ9D,SAASs3B,EAAEp7B,WAAY,MAAM,GAAO,EAAM,wBAAyB,aAGvG40B,EAAM+2J,oBACP/2J,EAAMq9J,wBAAwBrqL,EAAQ9D,SAASs3B,EAAEp7B,WAAY,MAAM,GAEvE40B,EAAMs9J,iBAAiBtqL,EAAQ9D,SAASs3B,EAAEp7B,WAAY,MAEjD+pB,EAAI,EAAb,IAAK,IAAW8L,EAAMjB,EAAMs1J,mBAAmBrtL,OAAQktB,EAAI8L,EAAK9L,IAAK,CACjE,IAAIoqK,EAAav/J,EAAM44J,sBAAsB54J,EAAMs1J,mBAAmBpmL,SAASimB,EAAE/pB,WAAY,MACzFm0L,IACKv/J,EAAMy2J,YACP8I,EAAWruI,gBAAgB,iBAC3BlxB,EAAMk9J,uBAAuBqC,GAAY,GAAO,EAAM,wBAAyB,aAEnFv/J,EAAMs9J,iBAAiBiC,GAClBv/J,EAAM+2J,oBACP/2J,EAAMq9J,wBAAwBkC,GAAY,IAGlD,IAAI1D,EAAQ77J,EAAM64J,0BAA0B74J,EAAMs1J,mBAAmBpmL,SAASimB,EAAE/pB,WAAY,MACxFywL,IACK77J,EAAMy2J,YACPoF,EAAM3qI,gBAAgB,iBACtBlxB,EAAMk9J,uBAAuBrB,GAAO,GAAO,EAAM,wBAAyB,aAE9E77J,EAAMs9J,iBAAiBzB,GAClB77J,EAAM+2J,oBACP/2J,EAAMq9J,wBAAwBxB,GAAO,GAGjD,CACA77J,EAAMs1J,mBAAqB,GAC3Bt1J,EAAM6iI,gBAAkB,GACxB7iI,EAAMi6J,eAAgB,EACtBj6J,EAAMu7J,gBAAgB,GACtBv7J,EAAM+2J,oBAAqB,EAC3B/2J,EAAMi9J,YAAY55I,EAAAA,IAAsB07I,EAAYzlJ,EAAQslJ,EAAOI,EAAkBC,EAAUJ,OAAQ3zL,EAAW4zL,GAC9G9+J,EAAM61J,gBACN71J,EAAMm9J,mBACNn9J,EAAM61J,eAAgB,EAClB71J,EAAM81J,iBACN91J,EAAMk7J,oBACNl7J,EAAM81J,gBAAiB,GAhD/B,CAmDJ,GAAGgJ,EACP,MAEQ9uK,KAAK6lK,gBACL7lK,KAAKmtK,mBACLntK,KAAK6lK,eAAgB,EACjB7lK,KAAK8lK,iBACL9lK,KAAKkrK,oBACLlrK,KAAK8lK,gBAAiB,GAItC,EACAT,EAAUhmK,UAAU4tK,YAAc,SAAU3yL,EAAM28K,EAAUpxK,EAAMq2E,EAAKw8C,EAAgBv6E,EAAQytI,EAAM4D,EAAqBC,GACtH,IAAIz/J,EAAQhQ,KACZ,GAAKA,KAAK+uI,kBAAkB86B,mBAAqB7pK,KAAKovK,cAAgBpvK,KAAKuuK,uBAA0BvuK,KAAKyR,MAAiB,WACvHzR,KAAKyR,MAAMk2H,YAAY3kJ,QAAQ4zC,UAAUM,SAAS,iBAA+C,UAA5Bl3B,KAAKyR,MAAiB,aAC1FzR,KAAK+uI,kBAAkB86B,iBAAkB,CAC1C,IACI6F,EAAoC,IAApBzY,EAASh/K,QAA+C,IAA/B+nB,KAAKomK,eAAenuL,OAC7D03L,EAAiB,CACjB1Y,SAAUA,EAAS,GAAIpxK,KAAMma,KAAK+uI,kBAAkB86B,kBAAkD,YAA7B7pK,KAAKqQ,OAAO+8J,eAChFsC,GAA0D,oBAAxC1vK,KAAK+uI,kBAAkBi8B,aAAqChrK,KAAKomK,eAAiBvgL,EACzG6yH,eAAgBA,EAAgBnxH,QAAQ,EAAO0L,aAAc+M,KAAK/M,aAClE23K,wBAAyB5qK,KAAK4qK,yBAErB,kBAATtwL,UACOq1L,EAAepoL,OAE1B,IAAIqoL,EAAc,MAGdC,EAAW,aACXC,EAAU,OACV/+E,EAAa,iBACjB4+E,EAAe,GAAKC,GAAe1zG,EACnCyzG,EAA4B,OAAI3vK,KAAK2qK,aACV3qK,KAAK2qK,gBAAiBh9J,EAAAA,EAAAA,KAAkByrB,EAAAA,EAAAA,IAAQp5B,KAAK2qK,aAAc,WAClE1T,EAASh/K,OAAS,GAC1C03L,EAA0B,SAAI1Y,EAAS,GACvC0Y,EAAe,GAAKE,GAAY5Y,GAEP,IAApBA,EAASh/K,SACd03L,EAAe,GAAKG,GAAWH,EAAe,GAAKG,GAAS,GAC5DH,EAAe,GAAKC,GAAeD,EAAe,GAAKC,GAAa,GACpED,EAAe,GAAK5+E,GAAc4+E,EAAe,GAAK5+E,GAAY,GAC9D/wF,KAAK6mK,uBACL8I,EAAe,GAAKE,GAAY5Y,IAGxCj3J,KAAKqQ,OAAOylB,QAAQx7C,EAAM0lB,KAAKqQ,OAAOyxH,eAAiBqjC,GAAS,CAAC,EAAGwK,EAAgB,CAAE/D,KAAMA,EAAM6D,eAAgBA,IAAoBE,GAAgB,SAAU1hL,GAC5J+hB,EAAMu2J,iBAAmBt4K,EAAiB,OACrC+hB,EAAMu2J,mBAAsBv2J,EAAMo/J,cAAiBp/J,EAAM/c,cAAiB+c,EAAMu+J,yBACjFv+J,EAAMq9J,wBAAwBnxG,EAAI,IAAI,GACtClsD,EAAMs9J,iBAAiBpxG,EAAI,QAAIhhF,EAAW+7K,EAAS,IAC/C2U,GACA57J,EAAMs9J,iBAAiB1B,EAAK,QAAI1wL,EAAW+7K,EAAS,IAEpDwY,GACAz/J,EAAMs9J,iBAAiBmC,EAAe,QAAIv0L,EAAW+7K,EAAS,UAG1C/7K,IAAxBs0L,GACAA,GAER,GACJ,MACSxvK,KAAK+uI,kBAAkB86B,mBAAqB7pK,KAAK/M,mBAC1B/X,IAAxBs0L,GACAA,GAGZ,EACAnK,EAAUhmK,UAAU+oK,UAAY,SAAUlsG,GAEtC,YADY,IAARA,IAAkBA,EAAMl8D,KAAKqoK,eAC7B16J,EAAAA,EAAAA,IAAkBuuD,GACX,CAAC,GAEO,kBAARA,IACPA,EAAMl8D,KAAKqQ,OAAO6/I,cAAch0F,IAEhCA,GACOl8D,KAAKqQ,OAAOi5J,oBAAoBptG,EAAI96B,aAAa,cAErD,CAAC,EACZ,EACAikI,EAAUhmK,UAAU0wK,uBAAyB,SAAU5H,GACnD,IAAIx0D,EAAO3zG,KAAKqQ,OACZ8lG,EAAMxC,EAAKq8D,iBAAiB7H,EAAUA,WAE1C,OADcx0D,EAAKmuB,gBAEkB,YAA7B3rB,EAAI24C,qBACGn7C,EAAKs8D,wBAAwB9H,EAAUlR,SAAUj3J,KAAKkwK,YAAY/H,EAAUlR,SAAUkR,EAAUA,YAIxG,IACX,EAQA9C,EAAUhmK,UAAU8wK,WAAa,SAAUhI,EAAWnhH,GAClD,GAAKhnD,KAAKowK,aAAV,CAGA,IAEIniL,EAFA0lH,EAAO3zG,KAAKqQ,OACZggK,EAAerwK,KAAK+vK,uBAAuB5H,GAE1CkI,IACDA,EAAe18D,EAAK28D,iBAAiBnI,EAAUlR,SAAUj3J,KAAKkwK,YAAY/H,EAAUlR,SAAUkR,EAAUA,aAE5GnoK,KAAKqoK,aAAeF,EAAUlR,SAC9B,IAAItsD,EAAe3qG,KAAKgpK,+BAA+BhpK,KAAKqoK,cAC5D,GAAKroK,KAAKowK,cAAiBC,IAAgBrwK,KAAKwoK,YAAhD,CAGA,IAAI+H,EAAiBF,EAAaz5I,UAAUM,SAAS,6BAIrD,GAHA8vB,EAAYA,IAAwBx5C,EAAAA,EAAAA,IAAYxN,KAAK0uK,YACjDvG,EAAUlR,WAAaj3J,KAAK0uK,UAAUzX,UAAYkR,EAAUA,YAAcnoK,KAAK0uK,UAAUvG,WACzFoI,EAFmBvpH,EAmBnBhnD,KAAKwwK,gBAAgBviL,EAAM+4D,EAAUmhH,EAAWkI,EAAc1lE,EAA9D3qG,CAA4E/R,OAhBjE,EACXA,EAAO,CACHpI,KAAM8kH,EAAcw9D,UAAWA,EAC/BmC,cAAetqK,KAAK2lK,mBAAoB4E,eAAgBvqK,KAAK0lK,oBAC7D+K,gBAAiBzwK,KAAK2uK,WAClB3uK,KAAK0wK,aAAa1wK,KAAK2uK,WAAW1X,SAAUj3J,KAAK2uK,WAAWxG,gBAAajtL,EAC7EqM,QAAQ,IAGS,YAAI8oL,EAEzBpiL,EAA8B,qBAAI+R,KAAK2uK,WACvC3uK,KAAKqQ,OAAOylB,QAAQzC,EAAAA,IAAsBrzB,KAAKkoK,YAAYj6K,GAAO+R,KAAKwwK,gBAAgBviL,EAAM+4D,EAAUmhH,EAAWkI,EAAc1lE,IAChI3qG,KAAK4mK,cAAe,CACxB,CAnBA,CAXA,CAkCJ,EACAvB,EAAUhmK,UAAUmxK,gBAAkB,SAAUG,EAAmB3pH,EAAUmhH,EAAWkI,EAAc1lE,GAClG,IAAI36F,EAAQhQ,KACZ,OAAO,SAAU2wK,GACb,IACIC,EAAc,cAClB,KAAKjjK,EAAAA,EAAAA,IAAkBgjK,KAAuD,IAAjCA,EAA2B,UAGnE3pH,IACD2pH,EAAkB,GAAKC,GAAeD,EAAkB,GAAKC,GAAeD,EAAkB,GAAKC,GAAeP,GAEtHrgK,EAAM6gK,YACD7pH,GACDh3C,EAAM8gK,oBAAoBT,EAAclI,EAAUlR,SAAUkR,EAAUA,YAErEnhH,GAAU,CACX,IAAI/4D,EAAO,CACPpI,KAAM8kH,EAAcw9D,UAAWA,EAAWyI,YAAaP,EACvDU,qBAAsB/gK,EAAMu1J,uBAC5BkL,gBAAiBzgK,EAAM2+J,WACnB3+J,EAAM0gK,aAAa1gK,EAAM2+J,WAAW1X,SAAUjnJ,EAAM2+J,WAAWxG,gBAAajtL,GAGpF+S,EAA8B,qBAAI+hB,EAAM2+J,WACxC3+J,EAAMghK,gBAAgB7I,EAAWA,GACjCn4J,EAAM+tF,iBAAiB9vG,EAAMolC,EAAAA,IACjC,CACJ,CACJ,EACAgyI,EAAUhmK,UAAUqxK,aAAe,SAAUO,EAAMzpF,GAC/C,OAAQxnF,KAAKqQ,OAAO26H,oBAAsBxjD,GAAQxnF,KAAKqQ,OAAO26H,mBAAqBhrI,KAAKqQ,OAAO4/J,wBAAwBgB,EAAMzpF,GAC3ExnF,KAAKqQ,OAAOigK,iBAAiBW,EAAMzpF,EACzF,EAQA69E,EAAUhmK,UAAU6xK,mBAAqB,SAAUznK,EAAYwiK,GAC3D,IAAIj8J,EAAQhQ,KACZ,GAAKA,KAAKowK,aAAV,CAGA,IAMI1vJ,EACAC,EAPAgzF,EAAO3zG,KAAKqQ,OACZggK,EAAerwK,KAAK+vK,uBAAuBtmK,GAC3C6+I,EAAU30C,EAAKq3B,mBACdqlC,IACDA,EAAe18D,EAAK28D,iBAAiB7mK,EAAWwtJ,SAAUxtJ,EAAW0+J,YAIzE,IAEIgJ,EAFAC,EAAU3nK,EACV4nK,EAAUpF,EAAWA,GAAsBxiK,EAE/CzJ,KAAKqoK,aAAe5+J,EAAWwtJ,SAC/B,IACItsD,EAAe3qG,KAAKgpK,+BAA+BhpK,KAAKqoK,cAC5D,IAAIroK,KAAKusK,eAAkBvsK,KAAKowK,eAAgBpwK,KAAKwoK,YAArD,CAGA,IAAIv6K,EAAO,CACPpI,KAAM8kH,EAAcw9D,UAAW1+J,EAAYmnK,YAAaP,EACxD/F,cAAetqK,KAAK2lK,mBAAoB4E,eAAgBvqK,KAAK0lK,oBAC7D+K,gBAAiBzwK,KAAK2uK,WAAa3uK,KAAK0wK,aAAa1wK,KAAK2uK,WAAW1X,SAAUj3J,KAAK2uK,WAAWxG,gBAAajtL,GAGhH+S,EAA8B,qBAAI+R,KAAK2uK,WACvC3uK,KAAKqQ,OAAOylB,QAAQzC,EAAAA,IAAsBrzB,KAAKkoK,YAAYj6K,IAAO,SAAU0iL,GACxE,IAAKhjK,EAAAA,EAAAA,IAAkBgjK,KAAuD,IAAjCA,EAA2B,OAAxE,CAIA,GADA3gK,EAAM6gK,YACFpnK,EAAWwtJ,SAAWgV,EAAShV,SAAU,CACzC,IAAIl4I,EAAOtV,EACXA,EAAawiK,EACbA,EAAWltJ,CACf,CACA,IAAK,IAAI5Z,EAAIsE,EAAWwtJ,SAAU9xJ,GAAK8mK,EAAShV,SAAU9xJ,IAAK,CACvD6K,EAAM++H,kBAAkBuiC,kBAAkBh7K,QAAQ,OAAS,GAC3DoqB,EAAMvb,IAAMsE,EAAWwtJ,SAAYxtJ,EAAW0+J,UAAa,EAC3DxnJ,EAAMxb,IAAM8mK,EAAShV,SAAYgV,EAAS9D,UAAan4J,EAAMuhK,gBAAgBpsK,KAG7Eub,EAAMjX,EAAW0+J,UACjBxnJ,EAAMsrJ,EAAS9D,WAEnBgJ,EAAc,GACd,IAAK,IAAI36J,EAAIkK,EAAMC,EAAMD,EAAMC,EAAK1P,EAAMyP,EAAMC,EAAMD,EAAMC,EAAKnK,GAAKvF,EAAKuF,KAG/D65J,EAFJ/nB,EACI9xI,EAAI8xI,EACW30C,EAAK28D,iBAAiBnrK,EAAGqR,GAGzBm9F,EAAKs8D,wBAAwB9qK,EAAGqR,GAIpCm9F,EAAK28D,iBAAiBnrK,EAAGqR,MAK5C26J,EAAY1xL,KAAK+2B,GACjBxG,EAAM8gK,oBAAoBT,GAC1BrgK,EAAMwhK,aAAanB,IAEvBrgK,EAAMu1J,uBAAuB9lL,KAAK,CAAEw3K,SAAU9xJ,EAAGgsK,YAAaA,GAClE,CACA,IAAIM,EAAmB,CACnB5rL,KAAM8kH,EAAcw9D,UAAWkJ,EAAST,YAAaj9D,EAAK28D,iBAAiBe,EAAQpa,SAAUoa,EAAQlJ,WACrG4I,qBAAsB/gK,EAAMu1J,uBAC5BkL,gBAAiBzgK,EAAM2+J,WAAa3+J,EAAM0gK,aAAa1gK,EAAM2+J,WAAW1X,SAAUjnJ,EAAM2+J,WAAWxG,gBAAajtL,GAGpHu2L,EAA0C,qBAAIzhK,EAAM2+J,WAC/C3+J,EAAMg+B,YACPh+B,EAAM+tF,iBAAiB0zE,EAAkBp+I,EAAAA,KACzCrjB,EAAM42J,cAAe,GAEzB52J,EAAMghK,gBAAgBI,EAASC,EAjD/B,CAkDJ,GA7DA,CAjBA,CA+EJ,EAOAhM,EAAUhmK,UAAUqyK,YAAc,SAAUC,GACxC,GAAK3xK,KAAKowK,aAAV,CAGA,IAAIz8D,EAAO3zG,KAAKqQ,OACZggK,EAAerwK,KAAK+vK,uBAAuB4B,EAAe,IAC1DrpB,EAAU30C,EAAKq3B,mBACdqlC,IACDA,EAAe18D,EAAK28D,iBAAiBqB,EAAe,GAAG1a,SAAU0a,EAAe,GAAGR,YAAY,KAEnGnxK,KAAKqoK,aAAesJ,EAAe,GAAG1a,SACtC,IAAItsD,EAAe3qG,KAAKgpK,+BAA+BhpK,KAAKqoK,cAC5D,IAAIroK,KAAKusK,eAAkBvsK,KAAKowK,eAAgBpwK,KAAKwoK,YAArD,CAGA,IAAIoJ,EAAiB,CACjB/rL,KAAM8kH,EAAcw9D,UAAWwJ,EAAe,GAAGR,YAAY,GAC7DP,YAAaP,EAAc/F,cAAetqK,KAAK2lK,mBAC/C4E,eAAgBvqK,KAAK0lK,oBACrB+K,gBAAiBzwK,KAAK2uK,WAAa3uK,KAAK0wK,aAAa1wK,KAAK2uK,WAAW1X,SAAUj3J,KAAK2uK,WAAWxG,gBAAajtL,GAGhH02L,EAAwC,qBAAI5xK,KAAK2uK,WACjD3uK,KAAKioK,cAAc2J,EAAgBv+I,EAAAA,KACnC,IAAK,IAAIluB,EAAI,EAAG8L,EAAM0gK,EAAe15L,OAAQktB,EAAI8L,EAAK9L,IAClD,IAAK,IAAIqR,EAAI,EAAGw3I,EAAU2jB,EAAezyL,SAASimB,EAAE/pB,WAAY,KAAK+1L,YAAYl5L,OAAQu+B,EAAIw3I,EAASx3I,KAG1F65J,EAFJ/nB,EACIqpB,EAAezyL,SAASimB,EAAE/pB,WAAY,KAAK+1L,YAAYjyL,SAASs3B,EAAEp7B,WAAY,KAAOktK,EACtE30C,EAAK28D,iBAAiBqB,EAAezyL,SAASimB,EAAE/pB,WAAY,KAAK67K,SAAU0a,EAAezyL,SAASimB,EAAE/pB,WAAY,KAAK+1L,YAAYjyL,SAASs3B,EAAEp7B,WAAY,MAGzJu4H,EAAKs8D,wBAAwB0B,EAAezyL,SAASimB,EAAE/pB,WAAY,KAAK67K,SAAU0a,EAAezyL,SAASimB,EAAE/pB,WAAY,KAAK+1L,YAAYjyL,SAASs3B,EAAEp7B,WAAY,MAIpKu4H,EAAK28D,iBAAiBqB,EAAezyL,SAASimB,EAAE/pB,WAAY,KAAK67K,SAAU0a,EAAezyL,SAASimB,EAAE/pB,WAAY,KAAK+1L,YAAYjyL,SAASs3B,EAAEp7B,WAAY,SAK5K4kB,KAAK8wK,oBAAoBT,GACzBrwK,KAAKwxK,aAAanB,GAClBrwK,KAAK6xK,gBAAgB,CAAE5a,SAAU0a,EAAezyL,SAASimB,EAAE/pB,WAAY,KAAK67K,SACxEkR,UAAWwJ,EAAezyL,SAASimB,EAAE/pB,WAAY,KAAK+1L,YAAYjyL,SAASs3B,EAAEp7B,WAAY,QAGrG4kB,KAAKgxK,gBAAgB,CAAE/Z,SAAU0a,EAAe,GAAG1a,SAAUkR,UAAWwJ,EAAe,GAAGR,YAAY,IAAM,CAAEla,SAAU0a,EAAe,GAAG1a,SAAUkR,UAAWwJ,EAAe,GAAGR,YAAY,KAC7L,IAAIM,EAAmB,CACnB5rL,KAAM8kH,EAAcw9D,UAAWwJ,EAAe,GAAGR,YAAY,GAC7DP,YAAaP,EAAcU,qBAAsB/wK,KAAKulK,uBACtDkL,gBAAiBzwK,KAAK2uK,WAAa3uK,KAAK0wK,aAAa1wK,KAAK2uK,WAAW1X,SAAUj3J,KAAK2uK,WAAWxG,gBAAajtL,GAGhHu2L,EAAqC,qBAAIzxK,KAAK2uK,WAC9C3uK,KAAK+9F,iBAAiB0zE,EAAkBp+I,EAAAA,IAxCxC,CAXA,CAoDJ,EAQAgyI,EAAUhmK,UAAUyyK,oBAAsB,SAAUX,GAChD,GAAKnxK,KAAKowK,aAAV,CAGA,IACIC,EACAvpL,EAFA6sH,EAAO3zG,KAAKqQ,OAGhBrQ,KAAKqoK,aAAe8I,EAAY,GAAGla,SACnC,IACItsD,EAAe3qG,KAAKgpK,+BAA+BhpK,KAAKqoK,cACxD3kI,EAAOiwE,EAAKugD,qBACZ6d,EAAUp+D,EAAKq7C,yBACnB,IAAIhvJ,KAAKusK,eAAkBvsK,KAAKowK,eAAgBpwK,KAAKwoK,YAArD,CAGAxoK,KAAKgyK,eACL,IACItwB,EADAvrC,EAAMxC,EAAKq8D,iBAAiBmB,EAAY,GAAGhJ,YAE/C8J,EAAAA,EAAAA,IAAkBjyK,KAAKqQ,QAAQ,SAAUyvE,EAAW3lG,GAChDunK,EAASvnK,EAAKg3L,EAAY,GAAGla,SACjC,GAAG,CACE9gD,EAAI24C,sBAAwB34C,EAAI24C,uBAAyBjxC,EAAAA,GAA6C,GAAvBlK,EAAKguC,gBACxD,YAA7BxrC,EAAI24C,qBAAqCn7C,EAAKu+D,uBAAyB,GACvE/7D,EAAI24C,uBAAyBjxC,EAAAA,GAAuBlK,EAAK+xC,2BAA6B,KAEtF/xC,EAAK8B,cAAcrB,QAAQn8H,OAAS,IACpCypK,EAAS/tC,EAAK21D,oBAAoBtpK,KAAKm+B,OAAO8a,cAAc7X,aAAa,cAG7E,IADA,IAAIs3E,EAAiB,GACZnqG,EAAK,EAAG4jK,EAAgBhB,EAAa5iK,EAAK4jK,EAAcl6L,OAAQs2B,IAAM,CAE3E,IADA,IAAI45J,EAAYgK,EAAc5jK,GACrBpJ,EAAI,EAAG8L,EAAMjR,KAAKulK,uBAAuBttL,OAAQktB,EAAI8L,EAAK9L,IAC/D,GAAInF,KAAKulK,uBAAuBrmL,SAASimB,EAAE/pB,WAAY,KAAK67K,WAAakR,EAAUlR,SAAU,CACzFnwK,EAAQqe,EACR,KACJ,EAEJkrK,EAAerwK,KAAK+vK,uBAAuB5H,MAEvCkI,EAAe18D,EAAK28D,iBAAiBnI,EAAUlR,SAAUj3J,KAAKkwK,YAAY/H,EAAUlR,SAAUkR,EAAUA,aAE5G,IAAIzmK,EAAmC,YAA7By0G,EAAI24C,qBAAqCqZ,EAAUA,UAAYzkI,EACnEyyE,EAAI24C,uBAAyBjxC,EAAAA,GAAuBsqD,EAAUA,WAAazkI,EAAOquI,GAAW5J,EAAUA,UACzGx0D,EAAK8B,cAAcrB,QAAQn8H,OAAS,EACpCygI,EAAej5H,KAAKiiK,EAAOvf,MAAMzgI,EAAMiyG,EAAK8B,cAAcrB,QAAQn8H,QAAQygI,gBAG1EA,EAAej5H,KAAKiiK,EAAOvf,MAAMjjJ,SAASwiB,EAAItmB,WAAY,KAAKs9H,gBAEnE,IAAIzqH,EAAO,CACP1G,QAAQ,EAAO1B,KAAM8kH,EAAcw9D,UAAWgJ,EAAY,GAC1D5G,eAAgBvqK,KAAK0lK,oBACrBkL,YAAaP,EAAc/F,cAAetqK,KAAK2lK,mBAC/C8K,gBAAiBzwK,KAAK2uK,WAClBh7D,EAAK28D,iBAAiBtwK,KAAK2uK,WAAW1X,SAAUj3J,KAAK2uK,WAAWxG,gBAAajtL,GAEjFk3L,EAAkB,uBACtBnkL,EAAK,GAAKmkL,GAAmBpyK,KAAK2uK,WAClC,IAAI5B,EAAejmL,GAAS,EAC5B,GAAIimL,EAAc,CACd,IAAIsF,EAAkBryK,KAAKulK,uBAAuBrmL,SAAS4H,EAAM1L,WAAY,KAAK+1L,YAC9EkB,EAAgB/7K,QAAQ6xK,EAAUA,YAAc,GAChDnoK,KAAKsyK,aAAaj/I,EAAAA,IAAwB,CAAC,CAAE4jI,SAAUkR,EAAUlR,SAAUka,YAAa,CAAChJ,EAAUA,aAAex9D,EAAc,CAAC0lE,GAAe33D,GAChJ25D,EAAgBxrJ,OAAOwrJ,EAAgB/7K,QAAQ6xK,EAAUA,WAAY,GACtC,IAA3BkK,EAAgBp6L,QAChB+nB,KAAKulK,uBAAuB1+I,OAAO//B,EAAO,GAE9CupL,EAAaz5I,UAAUjB,OAAO,6BAC9B06I,EAAanvI,gBAAgB,iBAC7BlhC,KAAKsyK,aAAaj/I,EAAAA,IAAuB,CAAC,CAAE4jI,SAAUkR,EAAUlR,SAAUka,YAAa,CAAChJ,EAAUA,aAAex9D,EAAc,CAAC0lE,GAAe33D,KAG/Iq0D,GAAe,EACf/sK,KAAKioK,cAAch6K,EAAMolC,EAAAA,KACzBrzB,KAAK6xK,gBAAgB,CAAE5a,SAAUkR,EAAUlR,SAAUkR,UAAWA,EAAUA,YAC1EnoK,KAAK8wK,oBAAoBT,GACzBrwK,KAAKwxK,aAAanB,GAE1B,KACK,CAED,GADArwK,KAAKioK,cAAch6K,EAAMolC,EAAAA,OACpB1lB,EAAAA,EAAAA,IAAkB1f,KAA6B,IAApBA,EAAc,OAC1C,OAEJ+R,KAAK8wK,oBAAoBT,EAAclI,EAAUlR,SAAUkR,EAAUA,UACzE,CACA,IAAK4E,EAAc,CACf,IAAI0E,EAAmB,CACnB5rL,KAAM8kH,EAAcw9D,UAAWgJ,EAAY,GAAIP,YAAaP,EAC5DI,gBAAiBzwK,KAAK2uK,WAAa3uK,KAAK0wK,aAAa1wK,KAAK2uK,WAAW1X,SAAUj3J,KAAK2uK,WAAWxG,gBAC3FjtL,EAAW61L,qBAAsB/wK,KAAKulK,wBAE9CkM,EAAiB,GAAKW,GAAmBpyK,KAAK2uK,WAC9C3uK,KAAK+9F,iBAAiB0zE,EAAkBp+I,EAAAA,KACxCrzB,KAAK4mK,cAAe,CACxB,CACA5mK,KAAKgxK,gBAAgB7I,EAAWA,EACpC,CAnFA,CAXA,CA+FJ,EACA9C,EAAUhmK,UAAU6wK,YAAc,SAAUjZ,EAAUnwK,GAClD,IAAIwhK,EAAUtoJ,KAAKqQ,OAAOyxH,eACtB3rB,EAAMn2G,KAAKqQ,OAAO2/J,iBAAiBlpL,GACnCq7I,GAAQowC,EAAAA,EAAAA,IAAoBvyK,KAAKqQ,OAAQ8lG,EAAK8gD,GAClD,GAAI90B,EACA,IAAK,IAAIzqH,EAAI,EAAGA,EAAIyqH,EAAMlqJ,OAAQy/B,IAAK,CAEnC,GADex4B,SAASijJ,EAAMjjJ,SAASw4B,EAAEt8B,WAAY,KAAKgmD,aAAay8E,EAAAA,IAAwB,MAC9E/2H,EASb,OARIwhK,IACiC,YAA7BnyC,EAAI24C,qBACJp3I,GAAK1X,KAAKqQ,OAAO6jJ,qBAEZ/9C,EAAI24C,uBAAyBjxC,EAAAA,KAClCnmG,GAAM1X,KAAKqQ,OAAO0+I,4BAA8B/uJ,KAAKqQ,OAAO2+I,2BAG7Dt3I,CAEf,CAEJ,OAAQ,CACZ,EACA2tJ,EAAUhmK,UAAUkyK,gBAAkB,SAAUta,GAC5C,IAAI90B,EAAQniI,KAAKqQ,OAAO26H,mBAAqBhrI,KAAKqQ,OAAOg/I,qBAAqBnwK,SAAS+3K,EAAS77K,WAAY,KAAK01B,iBAAiB,gBAC5H9Q,KAAKqQ,OAAO+9I,cAAclvK,SAAS+3K,EAAS77K,WAAY,KAAK01B,iBAAiB,gBACpF,OAAO5xB,SAASijJ,EAAMA,EAAMlqJ,OAAS,GAAGmpD,aAAay8E,EAAAA,IAAwB,GACjF,EACAwnD,EAAUhmK,UAAUwxK,UAAY,WAC5B7wK,KAAKwuK,oBACT,EACAnJ,EAAUhmK,UAAUizK,aAAe,SAAUh4L,EAAM62L,EAAatrL,EAAMs8I,EAAOzpB,GAErEypB,EAAM,IAAMA,EAAM,GAAGvrG,UAAUM,SAAS2mF,EAAAA,KACxC79G,KAAKstK,kBAAiBl0I,EAAAA,EAAAA,IAAQ+oG,EAAM,GAAI,OAE5C,IAAIl0I,EAAO,CACPk0I,MAAOA,EAAOt8I,KAAMA,EAAMsrL,YAAaA,EAAaz4D,eAAgBA,EAAgBnxH,QAAQ,GAEhGyY,KAAKqQ,OAAOylB,QAAQx7C,EAAM2T,GAC1B+R,KAAKwmK,oBAAsBv4K,EAAe,MAC9C,EACAo3K,EAAUhmK,UAAUyxK,oBAAsB,SAAUT,EAAcpZ,EAAUkR,IACnEx6J,EAAAA,EAAAA,IAAkBspJ,IACnBj3J,KAAK6xK,gBAAgB,CAAE5a,SAAUA,EAAUkR,UAAWA,IAE1DkI,EAAaz5I,UAAUzB,IAAI,6BACvBk7I,EAAaz5I,UAAUM,SAAS2mF,EAAAA,KAChC79G,KAAKstK,kBAAiBl0I,EAAAA,EAAAA,IAAQi3I,EAAc,OAAO,GAEvDrwK,KAAKwxK,aAAanB,EACtB,EACAhL,EAAUhmK,UAAUmyK,aAAe,SAAUh3D,GACzCx6G,KAAKm+B,OAASq8E,GACT7sG,EAAAA,EAAAA,IAAkB6sG,KACnBA,EAAKlkF,aAAa,gBAAiB,QAC9Bt2B,KAAKilG,cACNjlG,KAAKyR,MAAMrxB,QAAQ,CAAE+9C,OAAQq8E,IAAQ,GAGjD,EACA6qD,EAAUhmK,UAAU2xK,gBAAkB,SAAUvnK,EAAYwiK,GACxDjsK,KAAK0uK,UAAYjlK,EACjBzJ,KAAK2uK,WAAa1C,EAClBjsK,KAAKuwK,eAAiBvwK,KAAKulK,uBAAuBttL,SAAU,CAChE,EACAotL,EAAUhmK,UAAUwyK,gBAAkB,SAAUW,GAG5C,IAFA,IAAIC,EACA3rL,EACKqe,EAAI,EAAG8L,EAAMjR,KAAKulK,uBAAuBttL,OAAQktB,EAAI8L,EAAK9L,IAC/D,GAAInF,KAAKulK,uBAAuBrmL,SAASimB,EAAE/pB,WAAY,KAAK67K,WAAaub,EAAavb,SAAU,CAC5Fwb,GAAa,EACb3rL,EAAQqe,EACR,KACJ,CAEAstK,EACIzyK,KAAKulK,uBAAuBrmL,SAAS4H,EAAM1L,WAAY,KAAK+1L,YAAY76K,QAAQk8K,EAAarK,WAAa,GAC1GnoK,KAAKulK,uBAAuBrmL,SAAS4H,EAAM1L,WAAY,KAAK+1L,YAAY1xL,KAAK+yL,EAAarK,WAI9FnoK,KAAKulK,uBAAuB9lL,KAAK,CAAEw3K,SAAUub,EAAavb,SAAUka,YAAa,CAACqB,EAAarK,YAEvG,EAMA9C,EAAUhmK,UAAUmvK,mBAAqB,WACrC,GAAIxuK,KAAKuwK,eAAgB,CACrB,IAAI58D,EAAO3zG,KAAKqQ,OACZqiK,EAAgB1yK,KAAK2yK,0BACrBC,EAAU5yK,KAAKulK,uBACf1/K,EAAO,GACPs8I,EAAQ,GACRzpB,EAAiB,GACjB06B,EAAkBpzI,KAAKgpK,+BACvB1gB,EAAU30C,EAAKmuB,eACnB9hI,KAAKgyK,eACL,IAAK,IAAI7sK,EAAI,EAAG8L,EAAM2hK,EAAQ36L,OAAQktB,EAAI8L,EAAK9L,IAAK,CAChDtf,EAAKpG,KAAK2zJ,EAAgBw/B,EAAQ1zL,SAASimB,EAAE/pB,WAAY,KAAK67K,WAE9D,IADA,IAAIvV,EAAS1hJ,KAAKooK,UAAUwK,EAAQ1zL,SAASimB,EAAE/pB,WAAY,KAAK67K,UACvDzgJ,EAAI,EAAGq8J,EAAOD,EAAQ1zL,SAASimB,EAAE/pB,WAAY,KAAK+1L,YAAYl5L,OAAQu+B,EAAIq8J,EAAMr8J,IACrF,GAAI8xI,EAAS,CACT,IAAInyC,EAAMxC,EAAKq8D,iBAAiB4C,EAAQ1zL,SAASimB,EAAE/pB,WAAY,KAC1D+1L,YAAYjyL,SAASs3B,EAAEp7B,WAAY,MACxC+mJ,EAAM1iJ,MAAKqzL,EAAAA,EAAAA,IAAwB9yK,KAAKqQ,OAAQ8lG,EAAKy8D,EAAQ1zL,SAASimB,EAAE/pB,WAAY,KAAK67K,SAAU2b,EAAQ1zL,SAASimB,EAAE/pB,WAAY,KAAK+1L,YAAYjyL,SAASs3B,EAAEp7B,WAAY,MAC9K,MAEQsmK,EAAOvf,OACPzpB,EAAej5H,KAAKiiK,EAAOvf,MAAMywC,EAAQ1zL,SAASimB,EAAE/pB,WAAY,KAC3D+1L,YAAYjyL,SAASs3B,EAAEp7B,WAAY,MAAMs9H,gBAElDypB,EAAM1iJ,KAAKk0H,EAAK28D,iBAAiBsC,EAAQ1zL,SAASimB,EAAE/pB,WAAY,KAAK67K,SAAU2b,EAAQ1zL,SAASimB,EAAE/pB,WAAY,KAAK+1L,YAAYjyL,SAASs3B,EAAEp7B,WAAY,MAGlK,CAEA,GADA4kB,KAAKsyK,aAAaj/I,EAAAA,IAAwBu/I,EAAS/sL,EAAMs8I,EAAOzpB,IAC/B,IAA7B14G,KAAKwmK,oBACL,OAEJ,IAASrhK,EAAI,EAAG8L,EAAMyhK,EAAcz6L,OAAQktB,EAAI8L,EAAK9L,IACjDutK,EAAcxzL,SAASimB,EAAE/pB,WAAY,KAAKw7C,UAAUjB,OAAO,6BAC3D+8I,EAAcxzL,SAASimB,EAAE/pB,WAAY,KAAK8lD,gBAAgB,iBAE1DlhC,KAAK+yK,YACL/yK,KAAKgzK,gBAAgB,QAEzBhzK,KAAKulK,uBAAyB,GAC9BvlK,KAAKuwK,gBAAiB,GACjBvwK,KAAKguC,WAAahuC,KAAK4mK,cACxB5mK,KAAKsyK,aAAaj/I,EAAAA,IAAuBu/I,EAAS/sL,EAAMs8I,EAAOzpB,EAEvE,CACJ,EACA2sD,EAAUhmK,UAAUszK,wBAA0B,WAC1C,IAEI7kB,EAFAn6C,EAAO3zG,KAAKqQ,OACZl2B,EAAOw5H,EAAKy6C,cAEZz6C,EAAKmuB,iBACLgsB,EAAQn6C,EAAK07C,qBACbl1K,EAAOw5H,EAAKs/D,eAAe94L,EAAM2zK,GAC7Bn6C,EAAK4sB,kBAAoB1iB,EAAAA,KACzB1jI,EAAOw5H,EAAKs/D,eAAe94L,EAAMw5H,EAAKu7C,4BAI9C,IADA,IAAI/sB,EAAQ,GACHh9H,EAAI,EAAG8L,EAAM92B,EAAKlC,OAAQktB,EAAI8L,EAAK9L,IACxCg9H,EAAQA,EAAMxhJ,OAAO,GAAG0c,MAAMqC,KAAKvlB,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAKopD,uBAAuB,+BAE/F,OAAO29F,CACX,EACAkjC,EAAUhmK,UAAU6zK,iBAAmB,SAAUz3L,GAC7CA,EAAEi1D,iBACF,IAMIwtC,EANAi1F,EAASnzK,KAAKqQ,OAAOrtB,QAAQkgD,wBAC7BkwI,EAAKpzK,KAAK4sB,EACVymJ,EAAKrzK,KAAK9L,EACVi+C,GAAWmhI,EAAAA,EAAAA,IAAY73L,GACvB83L,EAAKphI,EAASvlB,EAAIumJ,EAAOzvI,KACzB8vI,EAAKrhI,EAASj+C,EAAIi/K,EAAOvvI,IAEzBzF,GAAS/E,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,MAqB/B,GApBAn+B,KAAKguC,WAAY,EACZhuC,KAAKyzK,aACDt1I,IACDA,GAAS/E,EAAAA,EAAAA,IAAQx2B,SAASs1C,iBAAiBl4C,KAAKqQ,OAAOrtB,QAAQ8wD,WAAa,EAAGr4D,EAAEu1D,SAAU,OAE3FoiI,EAAKG,IACLr1F,EAAMq1F,EACNA,EAAKH,EACLA,EAAKl1F,GAELm1F,EAAKG,IACLt1F,EAAMs1F,EACNA,EAAKH,EACLA,EAAKn1F,GAETl+E,KAAKhd,QAAQu0C,MAAMmM,KAAO0vI,EAAK,KAC/BpzK,KAAKhd,QAAQu0C,MAAMqM,IAAMyvI,EAAK,KAC9BrzK,KAAKhd,QAAQu0C,MAAMwc,MAAQw/H,EAAKH,EAAK,KACrCpzK,KAAKhd,QAAQu0C,MAAMyc,OAASw/H,EAAKH,EAAK,MAEtCl1I,IAAW1iD,EAAE6+D,UAAY7+D,EAAE++D,SAAU,CACrC,IAAIy8G,EAAW/3K,SAASi/C,EAAOiD,aAAay8E,EAAAA,IAAwB,IACpE,GAAK79G,KAAKyzK,WAKL,CACD,IAAIl2C,GAAK5X,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ0/E,EAAAA,IAC5B0f,IACAv9H,KAAK0zK,YAAc1zK,KAAK2zK,UACxB3zK,KAAK4zK,WAAYjuD,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ0/E,EAAAA,IACxC79G,KAAK6zK,gBAAgBp4L,EAAGw7K,EAAU/3K,SAASq+I,EAAGn8F,aAAay8E,EAAAA,IAAwB,KAE3F,MAXI79G,KAAKgyK,eACLhyK,KAAKgsK,kBAAkBhsK,KAAK8zK,YAAa7c,GACzCj3J,KAAKgnK,mBAAoB,CAUjC,CACJ,EACA3B,EAAUhmK,UAAUw0K,gBAAkB,SAAUp4L,EAAGw7K,EAAUkR,GACpDnoK,KAAK+zK,eAMN/zK,KAAKg0K,gBACLh0K,KAAKi0K,mBAAmBx4L,KANxBukB,KAAKwuK,qBACLxuK,KAAKkxK,mBAAmB,CAAEja,SAAUj3J,KAAK8zK,YAAa3L,UAAWnoK,KAAKk0K,iBAAmB,CAAEjd,SAAUA,EAAUkR,UAAWA,IAC1HnoK,KAAKm0K,cAMb,EACA9O,EAAUhmK,UAAU80K,YAAc,WACmB,kBAA7Cn0K,KAAK+uI,kBAAkBuiC,mBAAyCtxK,KAAKulK,uBAAuBttL,SAAW+nB,KAAKqQ,OAAO8+H,QACnHnvI,KAAKqQ,OAAOrtB,QAAQ4zC,UAAUzB,IAAI,mBAC7Bn1B,KAAK+yK,YACN/yK,KAAKo0K,gBAETp0K,KAAKq0K,mBAGLr0K,KAAKgzK,gBAAgB,OAE7B,EACA3N,EAAUhmK,UAAUi1K,WAAa,SAAU95D,GACvC,IAAI2nB,EAAQ,GAAG9kI,MAAMqC,KAAK86G,EAAKvhE,cAAcnoC,iBAAiB,4BAC9D,OAAOqxH,EAAMA,EAAMlqJ,OAAS,KAAOuiI,CACvC,EACA6qD,EAAUhmK,UAAUk1K,UAAY,SAAU/5D,GACtC,IAAIrgI,EAAO,GAAGkjB,MAAMqC,MAAK05B,EAAAA,EAAAA,IAAQohF,EAAMqD,EAAAA,IAAgB/sG,iBAAiB,6BACxE,OAAO0pG,EAAKvhE,gBAAkB9+D,EAAKA,EAAKlC,OAAS,EACrD,EACAotL,EAAUhmK,UAAUm1K,WAAa,SAAUh6D,GACvC,IAAIrgI,EAAO,GAAGkjB,MAAMqC,MAAK05B,EAAAA,EAAAA,IAAQohF,EAAMqD,EAAAA,IAAgB/sG,iBAAiB,6BACxE,OAAO0pG,EAAKvhE,gBAAkB9+D,EAAK,EACvC,EACAkrL,EAAUhmK,UAAUo1K,YAAc,SAAUj6D,GAExC,MADY,GAAGn9G,MAAMqC,KAAK86G,EAAKvhE,cAAcnoC,iBAAiB,4BACjD,KAAO0pG,CACxB,EACA6qD,EAAUhmK,UAAUq1K,WAAa,SAAUjiB,EAAW3iD,EAAQ6kE,GAC1D,IAAIxyC,EAAQ,GAAG9kI,MAAMqC,KAAK+yJ,EAAUjuH,uBAAuB,8BACvDrmD,QAAO,SAAU24C,GAAO,MAA6B,KAAtBA,EAAIS,MAAMuiB,OAAgB,IAC7D,GAAIqoF,EAAMlqJ,OAAQ,CACd,IAAI03J,EAAW3vI,KAAKqQ,OAAOyxH,eACvBr0H,EAAQ00H,EAAM,GACdj6H,EAAMi6H,EAAMA,EAAMlqJ,OAAS,GAC3B28L,EAAQnnK,EAAMy1B,wBACd2xI,EAAS3sK,EAAIg7B,wBACb4xI,EAAYrnK,EAAMklC,aAAazP,wBAC/BmyH,GAAYr1J,KAAKu0K,UAAUrsK,IAAoB,MAAXysK,GAA6B,MAAXA,GAA6B,MAAXA,EAAsB,EAAJ,EAC1FI,EAAY/0K,KAAKqQ,OAAOm3I,aAA0B,MAAXmtB,GAA6B,MAAXA,IACzD30K,KAAKw0K,WAAW/mK,GAAS,IAAM,EAC/BunK,EAAarlC,IAAwB,MAAXglC,GAA6B,MAAXA,IAAmB30K,KAAKy0K,YAAYhnK,GAAS,EAAI,EAC7FwnK,GAAgD,UAAhCj1K,KAAKqQ,OAAOkwH,iBAA2C,MAAXo0C,GAA6B,MAAXA,KAC1E30K,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,IAAkC,MAAX82D,GAA6B,MAAXA,KAC1E30K,KAAKy0K,YAAYhnK,GAAa,EAAJ,EAC7BzN,KAAKqQ,OAAOs6B,WACZmlE,EAAOv4E,MAAMoM,MAAQmxI,EAAUnxI,MAAQixI,EAAMjxI,MAAQqxI,EAAa,KAClEllE,EAAOv4E,MAAMwc,MAAQ6gI,EAAMjxI,MAAQkxI,EAAOnxI,KAAOsxI,EAAa,EAAI,OAGlEllE,EAAOv4E,MAAMmM,KAAOkxI,EAAMlxI,KAAOoxI,EAAUpxI,KAAOsxI,EAAaC,EAAc,KAC7EnlE,EAAOv4E,MAAMwc,MAAQ8gI,EAAOlxI,MAAQixI,EAAMlxI,KAAOsxI,EAAaC,EAAc,EAAI,MAEpFnlE,EAAOv4E,MAAMqM,IAAMgxI,EAAMhxI,IAAMkxI,EAAUlxI,IAAMmxI,EAAY,KAC3DjlE,EAAOv4E,MAAMyc,OAAS6gI,EAAOjxI,IAAMgxI,EAAMhxI,IAAM,EAC1CixI,EAAOjxI,IAAMkxI,EAAUlxI,IAAMixI,EAAO7gI,OAAS,GAAM4gI,EAAMhxI,IAAMkxI,EAAUlxI,KAAOyxH,EAAY0f,EAAY,KACzGF,EAAO7gI,OAAS+gI,EAAY1f,EAAY,EAAI,KAChDr1J,KAAKk1K,iBAAmBP,CAC5B,MAEI7kE,EAAOv4E,MAAMuiB,QAAU,MAE/B,EACAurH,EAAUhmK,UAAUg1K,gBAAkB,WAClCr0K,KAAKm1K,sBACAn1K,KAAK2zK,WAAc3zK,KAAK+yK,YAAe/yK,KAAKulK,uBAAuBttL,SAGxE+nB,KAAKk1K,gBAAkB,GACvBl1K,KAAKgzK,gBAAgB,IACrBhzK,KAAK00K,WAAW10K,KAAKqQ,OAAOm7H,kBAAmBxrI,KAAK+yK,WAAY,KAC5D/yK,KAAKqQ,OAAOyxH,iBACZ9hI,KAAK00K,WAAW10K,KAAKqQ,OAAOw3I,cAAcutB,oBAAqBp1K,KAAKq1K,aAAc,KAC9Er1K,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,IAChC79G,KAAK00K,WAAW10K,KAAKqQ,OAAOw3I,cAAcihB,wBAAyB9oK,KAAKs1K,cAAe,MAG3Ft1K,KAAKqQ,OAAOm3I,aACZxnJ,KAAK00K,WAAW10K,KAAKqQ,OAAOszH,iBAAkB3jI,KAAKu1K,aAAc,KAC7Dv1K,KAAKqQ,OAAOyxH,iBACZ9hI,KAAK00K,WAAW10K,KAAKqQ,OAAOmlK,aAAaC,mBAAoBz1K,KAAK01K,aAAc,KAC5E11K,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,IAChC79G,KAAK00K,WAAW10K,KAAKqQ,OAAOmlK,aAAax0C,uBAAwBhhI,KAAK21K,cAAe,OAIjG31K,KAAK41K,aAAa51K,KAAKk1K,iBAC3B,EAEA7P,EAAUhmK,UAAUw2K,uBAAyB,SAAUtiK,GACnD,IAAI2lF,EAAMl5F,KAAKqQ,OAAOs6B,UACtB,OAAQp3B,EAAIt7B,QACR,KAAK,EAEG+nB,KAAK+yK,WAAWx7I,MAAM+W,YAAc4qD,EAAMl5F,KAAKqnK,aAAernK,KAAKsnK,YACnEtnK,KAAKq1K,aAAa99I,MAAM+W,YAActuC,KAAK6jC,OAC3C7jC,KAAKu1K,aAAah+I,MAAM+W,YAAc4qD,EAAMl5F,KAAKunK,UAAYvnK,KAAKwnK,SAClExnK,KAAK01K,aAAan+I,MAAM+W,YAActuC,KAAK4jC,IAC3C5jC,KAAKs1K,cAAc/9I,MAAM+W,YAAc4qD,EAAMl5F,KAAKsnK,YAActnK,KAAKqnK,aACrErnK,KAAK21K,cAAcp+I,MAAM+W,YAAc4qD,EAAMl5F,KAAKwnK,SAAWxnK,KAAKunK,UAEtE,MACJ,KAAK,EAEOh0J,EAAIj1B,SAAS,MAAQi1B,EAAIj1B,SAAS,MAAQi1B,EAAIj1B,SAAS,MAAQi1B,EAAIj1B,SAAS,OAC5E0hB,KAAKu1K,aAAah+I,MAAM+W,YAAc4qD,EAAMl5F,KAAKunK,UAAYvnK,KAAKwnK,SAClExnK,KAAK01K,aAAan+I,MAAM+W,YAAc4qD,EAAMl5F,KAAKwnK,SAAWxnK,KAAKunK,UACjEvnK,KAAK+yK,WAAWx7I,MAAM+W,YAAc4qD,EAAMl5F,KAAKqnK,aAAernK,KAAKsnK,YACnEtnK,KAAKq1K,aAAa99I,MAAM+W,YAAc4qD,EAAMl5F,KAAKsnK,YAActnK,KAAKqnK,cAEpE9zJ,EAAIj1B,SAAS,MAAQi1B,EAAIj1B,SAAS,MAAQi1B,EAAIj1B,SAAS,MAAQi1B,EAAIj1B,SAAS,OAC5E0hB,KAAKq1K,aAAa99I,MAAM+W,YAAc4qD,EAAMl5F,KAAKqnK,aAAernK,KAAKsnK,YACrEtnK,KAAK01K,aAAan+I,MAAM+W,YAAc4qD,EAAMl5F,KAAKunK,UAAYvnK,KAAKwnK,SAClExnK,KAAKs1K,cAAc/9I,MAAM+W,YAAc4qD,EAAMl5F,KAAKsnK,YAActnK,KAAKqnK,aACrErnK,KAAK21K,cAAcp+I,MAAM+W,YAAc4qD,EAAMl5F,KAAKwnK,SAAWxnK,KAAKunK,WAG1E,MACJ,KAAK,EAEGvnK,KAAK+yK,WAAWx7I,MAAM+W,YAAc4qD,EAAMl5F,KAAK0nK,iBAAmB1nK,KAAK2nK,gBACvE3nK,KAAKq1K,aAAa99I,MAAM+W,YAActuC,KAAKynK,WAC3CznK,KAAKs1K,cAAc/9I,MAAM+W,YAAc4qD,EAAMl5F,KAAK2nK,gBAAkB3nK,KAAK0nK,iBACrE1nK,KAAKqQ,OAAOm3I,aACZxnJ,KAAKu1K,aAAah+I,MAAM+W,YAAc4qD,EAAMl5F,KAAK0nK,iBAAmB1nK,KAAK2nK,gBACzE3nK,KAAK01K,aAAan+I,MAAM+W,YAActuC,KAAKynK,WAC3CznK,KAAKs1K,cAAc/9I,MAAM+W,YAAc4qD,EAAMl5F,KAAK2nK,gBAAkB3nK,KAAK0nK,kBAGjF,MACJ,KAAK,EAEOn0J,EAAIj1B,SAAS,OACb0hB,KAAKq1K,aAAa99I,MAAM+W,YAAc4qD,EAAMl5F,KAAK2nK,gBAAkB3nK,KAAK0nK,iBACpE1nK,KAAKqQ,OAAOm3I,aACZxnJ,KAAKu1K,aAAah+I,MAAM+W,YAActuC,KAAK4nK,iBAG/Cr0J,EAAIj1B,SAAS,OACb0hB,KAAK+yK,WAAWx7I,MAAM+W,YAAc4qD,EAAMl5F,KAAK0nK,iBAAmB1nK,KAAK2nK,gBACvE3nK,KAAKs1K,cAAc/9I,MAAM+W,YAAc4qD,EAAMl5F,KAAK2nK,gBAAkB3nK,KAAK0nK,iBACrE1nK,KAAKqQ,OAAOm3I,aACZxnJ,KAAK01K,aAAan+I,MAAM+W,YAActuC,KAAK4nK,iBAG/Cr0J,EAAIj1B,SAAS,OACb0hB,KAAK01K,aAAan+I,MAAM+W,YAAc4qD,EAAMl5F,KAAK2nK,gBAAkB3nK,KAAK0nK,iBACxE1nK,KAAK+yK,WAAWx7I,MAAM+W,YAActuC,KAAK6nK,mBAEzCt0J,EAAIj1B,SAAS,OACb0hB,KAAKu1K,aAAah+I,MAAM+W,YAAc4qD,EAAMl5F,KAAK0nK,iBAAmB1nK,KAAK2nK,gBACzE3nK,KAAK21K,cAAcp+I,MAAM+W,YAAc4qD,EAAMl5F,KAAK2nK,gBAAkB3nK,KAAK0nK,iBACzE1nK,KAAKq1K,aAAa99I,MAAM+W,YAActuC,KAAK6nK,mBAE3Ct0J,EAAIj1B,SAAS,OACb0hB,KAAKq1K,aAAa99I,MAAM+W,YAAc4qD,EAAMl5F,KAAK0nK,iBAAmB1nK,KAAK2nK,gBACrE3nK,KAAKqQ,OAAOm3I,aACZxnJ,KAAK21K,cAAcp+I,MAAM+W,YAActuC,KAAK4nK,iBAGhDr0J,EAAIj1B,SAAS,OACb0hB,KAAK01K,aAAan+I,MAAM+W,YAAc4qD,EAAMl5F,KAAK0nK,iBAAmB1nK,KAAK2nK,gBACzE3nK,KAAKs1K,cAAc/9I,MAAM+W,YAActuC,KAAK6nK,mBAGpD,MACJ,QACI7nK,KAAK+yK,WAAWx7I,MAAM+W,YAActuC,KAAK8nK,WACzC9nK,KAAKq1K,aAAa99I,MAAM+W,YAActuC,KAAK8nK,WAC3C9nK,KAAKs1K,cAAc/9I,MAAM+W,YAActuC,KAAK8nK,WACxC9nK,KAAKqQ,OAAOm3I,aACZxnJ,KAAKu1K,aAAah+I,MAAM+W,YAActuC,KAAK8nK,WAC3C9nK,KAAK01K,aAAan+I,MAAM+W,YAActuC,KAAK8nK,WAC3C9nK,KAAK21K,cAAcp+I,MAAM+W,YAActuC,KAAK8nK,YAI5D,EACAzC,EAAUhmK,UAAUu2K,aAAe,SAAUriK,GACzC,IAAI2lF,EAAMl5F,KAAKqQ,OAAOs6B,UACtB,GAAI3qC,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,GAChC79G,KAAK61K,uBAAuBtiK,QAG5B,OAAQA,EAAIt7B,QACR,KAAK,EAEuC,UAAhC+nB,KAAKqQ,OAAOkwH,iBACZvgI,KAAK+yK,WAAWx7I,MAAM+W,YAAc4qD,EAAMl5F,KAAKsnK,YAActnK,KAAKqnK,aAClErnK,KAAKq1K,aAAa99I,MAAM+W,YAAc4qD,EAAMl5F,KAAKqnK,aAAernK,KAAKsnK,YACrEtnK,KAAKu1K,aAAah+I,MAAM+W,YAAc4qD,EAAMl5F,KAAKwnK,SAAWxnK,KAAKunK,UACjEvnK,KAAK01K,aAAan+I,MAAM+W,YAAc4qD,EAAMl5F,KAAKunK,UAAYvnK,KAAKwnK,WAGlExnK,KAAK+yK,WAAWx7I,MAAM+W,YAAc4qD,EAAMl5F,KAAKqnK,aAAernK,KAAKsnK,YACnEtnK,KAAKq1K,aAAa99I,MAAM+W,YAAc4qD,EAAMl5F,KAAKsnK,YAActnK,KAAKqnK,aACpErnK,KAAKu1K,aAAah+I,MAAM+W,YAAc4qD,EAAMl5F,KAAKunK,UAAYvnK,KAAKwnK,SAClExnK,KAAK01K,aAAan+I,MAAM+W,YAAc4qD,EAAMl5F,KAAKwnK,SAAWxnK,KAAKunK,WAGzE,MACJ,KAAK,EAEuC,UAAhCvnK,KAAKqQ,OAAOkwH,iBACZvgI,KAAK+yK,WAAWx7I,MAAM+W,YAAc/6B,EAAIj1B,SAAS,KAAO46G,EAAMl5F,KAAK2nK,gBAC7D3nK,KAAK0nK,iBAAmB1nK,KAAK6nK,kBACnC7nK,KAAKq1K,aAAa99I,MAAM+W,YAAc/6B,EAAIj1B,SAAS,KAAO46G,EAAMl5F,KAAK0nK,iBAC/D1nK,KAAK2nK,gBAAkB3nK,KAAK6nK,kBAC9B7nK,KAAKqQ,OAAOm3I,aACZxnJ,KAAKu1K,aAAah+I,MAAM+W,YAAc/6B,EAAIj1B,SAAS,KAAO0hB,KAAK4nK,eACzD1uE,EAAMl5F,KAAK2nK,gBAAkB3nK,KAAK0nK,iBACxC1nK,KAAK01K,aAAan+I,MAAM+W,YAAc/6B,EAAIj1B,SAAS,KAAO0hB,KAAK4nK,eACzD1uE,EAAMl5F,KAAK0nK,iBAAmB1nK,KAAK2nK,mBAI7C3nK,KAAK+yK,WAAWx7I,MAAM+W,YAAc/6B,EAAIj1B,SAAS,KAAO46G,EAAMl5F,KAAK0nK,iBAC7D1nK,KAAK2nK,gBAAkB3nK,KAAK6nK,kBAC9B7nK,KAAKqQ,OAAOyxH,iBACZ9hI,KAAKq1K,aAAa99I,MAAM+W,YAAc/6B,EAAIj1B,SAAS,KAAO46G,EAAMl5F,KAAK2nK,gBAC/D3nK,KAAK0nK,iBAAmB1nK,KAAK6nK,mBAEnC7nK,KAAKqQ,OAAOm3I,aACZxnJ,KAAKu1K,aAAah+I,MAAM+W,YAAc/6B,EAAIj1B,SAAS,KAAO0hB,KAAK4nK,eACzD1uE,EAAMl5F,KAAK0nK,iBAAmB1nK,KAAK2nK,gBACrC3nK,KAAKqQ,OAAOyxH,iBACZ9hI,KAAK01K,aAAan+I,MAAM+W,YAAc/6B,EAAIj1B,SAAS,KAAO0hB,KAAK4nK,eACzD1uE,EAAMl5F,KAAK2nK,gBAAkB3nK,KAAK0nK,oBAKxD,MACJ,QACI1nK,KAAK+yK,WAAWx7I,MAAM+W,YAActuC,KAAK8nK,WACrC9nK,KAAKqQ,OAAOyxH,iBACZ9hI,KAAKq1K,aAAa99I,MAAM+W,YAActuC,KAAK8nK,YAE3C9nK,KAAKqQ,OAAOm3I,aACZxnJ,KAAKu1K,aAAah+I,MAAM+W,YAActuC,KAAK8nK,WACvC9nK,KAAKqQ,OAAOyxH,iBACZ9hI,KAAK01K,aAAan+I,MAAM+W,YAActuC,KAAK8nK,aAMnE,EACAzC,EAAUhmK,UAAU+0K,cAAgB,WAC3Bp0K,KAAK+yK,aACN/yK,KAAK+yK,WAAa/yK,KAAKqQ,OAAOm7H,kBAAkBvyF,cAAc9nC,aAAYP,EAAAA,EAAAA,IAAc,MAAO,CAC3F31B,UAAW,UAAW2J,GAAIob,KAAKqQ,OAAOrtB,QAAQ4B,GAAK,OACnD1D,OAAQ,kCAER8e,KAAKqQ,OAAOyxH,iBACZ9hI,KAAKq1K,aAAer1K,KAAKqQ,OAAOw3I,cAAcutB,oBAAoBjkK,aAAYP,EAAAA,EAAAA,IAAc,MAAO,CAC/F31B,UAAW,UAAW2J,GAAIob,KAAKqQ,OAAOrtB,QAAQ4B,GAAK,SACnD1D,OAAQ,mCAER8e,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,KAChC79G,KAAKs1K,cAAgBt1K,KAAKqQ,OAAOw3I,cAAcihB,wBAAwB33J,aAAYP,EAAAA,EAAAA,IAAc,MAAO,CACpG31B,UAAW,UAAW2J,GAAIob,KAAKqQ,OAAOrtB,QAAQ4B,GAAK,UACnD1D,OAAQ,qCAIhB8e,KAAKqQ,OAAOm3I,aACZxnJ,KAAKu1K,aAAev1K,KAAKqQ,OAAOszH,iBAAiB1qF,cAAc9nC,aAAYP,EAAAA,EAAAA,IAAc,MAAO,CAAE31B,UAAW,UAAW2J,GAAIob,KAAKqQ,OAAOrtB,QAAQ4B,GAAK,SAAU1D,OAAQ,mBAEvK8e,KAAKqQ,OAAOm3I,YAAcxnJ,KAAKqQ,OAAOyxH,iBACtC9hI,KAAK01K,aAAe11K,KAAKqQ,OAAOmlK,aAAaC,mBAAmBtkK,aAAYP,EAAAA,EAAAA,IAAc,MAAO,CAAE31B,UAAW,UAAW2J,GAAIob,KAAKqQ,OAAOrtB,QAAQ4B,GAAK,SAAU1D,OAAQ,kBACpK8e,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,KAChC79G,KAAK21K,cAAgB31K,KAAKqQ,OAAOmlK,aAAax0C,uBAAuB7vH,aAAYP,EAAAA,EAAAA,IAAc,MAAO,CAAE31B,UAAW,UAAW2J,GAAIob,KAAKqQ,OAAOrtB,QAAQ4B,GAAK,UAAW1D,OAAQ,oBAI9L,EACAmkL,EAAUhmK,UAAU2zK,gBAAkB,SAAUl5H,GACxC95C,KAAK+yK,aACL/yK,KAAK+yK,WAAWx7I,MAAMuiB,QAAUA,EAC5B95C,KAAKqQ,OAAOyxH,iBACZ9hI,KAAKq1K,aAAa99I,MAAMuiB,QAAUA,EAC9B95C,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,KAChC79G,KAAKs1K,cAAc/9I,MAAMuiB,QAAUA,IAGvC95C,KAAKqQ,OAAOm3I,aACZxnJ,KAAKu1K,aAAah+I,MAAMuiB,QAAUA,GAElC95C,KAAKqQ,OAAOm3I,YAAcxnJ,KAAKqQ,OAAOyxH,iBACtC9hI,KAAK01K,aAAan+I,MAAMuiB,QAAUA,EAC9B95C,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,KAChC79G,KAAK21K,cAAcp+I,MAAMuiB,QAAUA,IAInD,EACAurH,EAAUhmK,UAAUy2K,cAAgB,WAC3B91K,KAAK+1K,aACN/1K,KAAKg2K,kBAETh2K,KAAKi2K,mBACT,EACA5Q,EAAUhmK,UAAU42K,kBAAoB,WACpC,GAAKj2K,KAAK2zK,WAAc3zK,KAAKk2K,UAA7B,CAGA,IAAItB,EAAQ50K,KAAK0zK,YAAYxwI,wBACzB2xI,EAAS70K,KAAK4zK,UAAU1wI,wBACxBU,EAAMixI,EAAOjxI,IAAMgxI,EAAMhxI,IAAM,EAAI,EAAI,EACvCuyI,EAAetB,EAAOjxI,IAAMgxI,EAAMhxI,KAAO,KAAM+hF,EAAAA,EAAAA,IAAa3lH,KAAK0zK,YAAa71D,EAAAA,MAC9E8H,EAAAA,EAAAA,IAAa3lH,KAAK0zK,YAAa,qBAAuB1zK,KAAKw0K,WAAWx0K,KAAK0zK,aAAe,IAAM,EAChG0C,IAAiBzwD,EAAAA,EAAAA,IAAa3lH,KAAK0zK,YAAa71D,EAAAA,MAChD8H,EAAAA,EAAAA,IAAa3lH,KAAK0zK,YAAa71D,EAAAA,MAA4B79G,KAAKy0K,YAAYz0K,KAAK0zK,aAAe,EAAI,EACpGre,EAAYr1J,KAAKu0K,UAAUv0K,KAAK4zK,cAAejuD,EAAAA,EAAAA,IAAa3lH,KAAK4zK,UAAW/1D,EAAAA,MAC5E8H,EAAAA,EAAAA,IAAa3lH,KAAK4zK,UAAW,oBAAsB,EAAI,EACvDkB,EAAY90K,KAAK0zK,YAAY/gI,aAAazP,wBAC1CmzI,EAAar2K,KAAKqQ,OAAOrtB,QAAQkgD,wBACjCozI,EAAOt2K,KAAK0zK,YAAY/gI,aAAasG,cAAczV,UACnD+yI,EAAQv2K,KAAK0zK,YAAY/gI,aAAasG,cAAc5V,WACpDG,EAAY8yI,EAAOt2K,KAAK0zK,YAAY7/H,UACpCxQ,EAAakzI,EAAQv2K,KAAK0zK,YAAY5/H,WACtC0iI,EAAcx2K,KAAKqQ,OAAOrtB,QAAQ6zD,aAClC4/H,EAAaz2K,KAAKqQ,OAAOrtB,QAAQy1D,YACrCjV,EAAYA,EAAY,EAAI3hC,KAAKiU,MAAM0tB,GAAa,EAAI,EACxDH,EAAaA,EAAa,EAAIA,EAAa,EAC3C,IAAIK,EAAOkxI,EAAMlxI,KAAO2yI,EAAW3yI,KACnC,GAAK1jC,KAAKqQ,OAAOs6B,UAYZ,CACD,IAAI+rI,GAAgB/wD,EAAAA,EAAAA,IAAa3lH,KAAK0zK,YAAa71D,EAAAA,MAC/C8H,EAAAA,EAAAA,IAAa3lH,KAAK0zK,YAAa71D,EAAAA,IAA2B+2D,EAAMjxI,MAChE3jC,KAAK0zK,YAAY/gI,aAAasG,cAAc/V,wBAAwB6Q,MACpEsiI,EAAW3yI,KAAO,EACtB1jC,KAAKk2K,UAAU3+I,MAAMoM,MAAQ0yI,EAAW1yI,MAAQkxI,EAAOlxI,MAAQ,EAAIkxI,EAAO9gI,MAAQ,KAClF/zC,KAAKk2K,UAAU3+I,MAAMwc,MAAQ0iI,GAAcv3L,SAAS8gB,KAAKk2K,UAAU3+I,MAAMoM,MAAO,IAAM,MAAQ,MAC9F3jC,KAAK22K,WAAWp/I,MAAMoM,MAAQ0yI,EAAW1yI,MAAQixI,EAAMjxI,MAAQyyI,EAAgBM,EAAe,EAAI,KAClG12K,KAAK42K,SAASr/I,MAAMmM,KAAOmxI,EAAOnxI,KAAO2yI,EAAW3yI,KAAO,GAAM,KACjE1jC,KAAK42K,SAASr/I,MAAMwc,MAAQ70D,SAAS8gB,KAAKk2K,UAAU3+I,MAAMoM,MAAO,IAAMzkD,SAAS8gB,KAAK22K,WAAWp/I,MAAMoM,MAAO,IACvGyyI,EAAgB,EAAI,KACtBl3L,SAAS8gB,KAAK42K,SAASr/I,MAAMmM,KAAM,IAAM,IACzC1jC,KAAK42K,SAASr/I,MAAMwc,MAAQ70D,SAAS8gB,KAAK42K,SAASr/I,MAAMwc,MAAO,IAAM70D,SAAS8gB,KAAK42K,SAASr/I,MAAMmM,KAAM,IAAM,KAC/G1jC,KAAK42K,SAASr/I,MAAMmM,KAAO,MAEnC,MApBI,GANA1jC,KAAKk2K,UAAU3+I,MAAMmM,KAAOA,EAAO0yI,EAAgB/yI,EAAa,EAAI,KACpErjC,KAAK22K,WAAWp/I,MAAMmM,KAAOmxI,EAAOnxI,KAAO2yI,EAAW3yI,KAAO,EAAImxI,EAAO9gI,MAAQ,KAChF/zC,KAAK22K,WAAWp/I,MAAMwc,MAAQ0iI,GAAcv3L,SAAS8gB,KAAK22K,WAAWp/I,MAAMmM,KAAM,IAAM,MAAQ,MAC/F1jC,KAAK42K,SAASr/I,MAAMmM,KAAOA,EAAOL,EAAa,GAAM,KACrDrjC,KAAK42K,SAASr/I,MAAMwc,MAAQ70D,SAAS8gB,KAAK22K,WAAWp/I,MAAMmM,KAAM,IAAMxkD,SAAS8gB,KAAKk2K,UAAU3+I,MAAMmM,KAAM,IACrG0yI,EAAgB,EAAI,KACtBK,GAAev3L,SAAS8gB,KAAK42K,SAASr/I,MAAMwc,MAAO,IAAM70D,SAAS8gB,KAAK42K,SAASr/I,MAAMmM,KAAM,IAAM,CAClG,IAAImzI,EAAc33L,SAAS8gB,KAAK42K,SAASr/I,MAAMwc,MAAO,IAAM70D,SAAS8gB,KAAK42K,SAASr/I,MAAMmM,KAAM,IAAO+yI,EACtGz2K,KAAK42K,SAASr/I,MAAMwc,MAAQ70D,SAAS8gB,KAAK42K,SAASr/I,MAAMwc,MAAO,IAAM8iI,EAAa,IACvF,CA4BJ,GAVA72K,KAAKk2K,UAAU3+I,MAAMqM,IAAMgxI,EAAMhxI,IAAMyyI,EAAWzyI,IAAMuyI,EAAe3yI,EAAY,KACnFxjC,KAAKk2K,UAAU3+I,MAAMyc,OAAS6gI,EAAOjxI,IAAMgxI,EAAMhxI,IAAM,EAClDixI,EAAOjxI,IAAMkxI,EAAUlxI,IAAMixI,EAAO7gI,OAAS,GAAM4gI,EAAMhxI,IAAMkxI,EAAUlxI,KAAOuyI,EAAe9gB,EAAY7xH,EAAY,KACxHqxI,EAAO7gI,OAASmiI,EAAe9gB,EAAY7xH,EAAY,KAC3DxjC,KAAK22K,WAAWp/I,MAAMqM,IAAM5jC,KAAKk2K,UAAU3+I,MAAMqM,IACjD5jC,KAAK22K,WAAWp/I,MAAMyc,OAAS90D,SAAS8gB,KAAKk2K,UAAU3+I,MAAMyc,OAAQ,IAAM,KAC3Eh0C,KAAK42K,SAASr/I,MAAMqM,IAAM5jC,KAAK22K,WAAWp/I,MAAMqM,IAChD5jC,KAAK+1K,YAAYx+I,MAAMmM,KAAO1jC,KAAK42K,SAASr/I,MAAMmM,KAClD1jC,KAAK+1K,YAAYx+I,MAAMqM,IAAM3d,WAAWjmB,KAAKk2K,UAAU3+I,MAAMqM,KAAO3d,WAAWjmB,KAAKk2K,UAAU3+I,MAAMyc,QAAUpQ,EAAM,EAAI,KACxH5jC,KAAK+1K,YAAYx+I,MAAMwc,MAAQyiI,GAAevwJ,WAAWjmB,KAAK+1K,YAAYx+I,MAAMqM,KAAO,MAAQ5jC,KAAK42K,SAASr/I,MAAMwc,MAC/GyiI,GAAgBt3L,SAAS8gB,KAAKk2K,UAAU3+I,MAAMyc,OAAQ,IAAM90D,SAAS8gB,KAAKk2K,UAAU3+I,MAAMqM,IAAK,IAAM,CACrG,IAAIkzI,EAAY53L,SAAS8gB,KAAKk2K,UAAU3+I,MAAMyc,OAAQ,IAAM90D,SAAS8gB,KAAKk2K,UAAU3+I,MAAMqM,IAAK,IAAM4yI,EACrGx2K,KAAKk2K,UAAU3+I,MAAMyc,OAAS90D,SAAS8gB,KAAKk2K,UAAU3+I,MAAMyc,OAAQ,IAAM8iI,EAAY,KACtF92K,KAAK22K,WAAWp/I,MAAMyc,OAAS90D,SAAS8gB,KAAKk2K,UAAU3+I,MAAMyc,OAAQ,IAAM,IAC/E,CA/DA,CAgEJ,EACAqxH,EAAUhmK,UAAU22K,gBAAkB,WAC7Bh2K,KAAKk2K,YACNl2K,KAAKk2K,UAAYl2K,KAAKqQ,OAAOrtB,QAAQmuB,aAAYP,EAAAA,EAAAA,IAAc,MAAO,CAAE31B,UAAW,YAAa2J,GAAIob,KAAKqQ,OAAOrtB,QAAQ4B,GAAK,aAAc1D,OAAQ,iBACnJ8e,KAAK22K,WAAa32K,KAAKqQ,OAAOrtB,QAAQmuB,aAAYP,EAAAA,EAAAA,IAAc,MAAO,CAAE31B,UAAW,YAAa2J,GAAIob,KAAKqQ,OAAOrtB,QAAQ4B,GAAK,cAAe1D,OAAQ,iBACrJ8e,KAAK+1K,YAAc/1K,KAAKqQ,OAAOrtB,QAAQmuB,aAAYP,EAAAA,EAAAA,IAAc,MAAO,CAAE31B,UAAW,YAAa2J,GAAIob,KAAKqQ,OAAOrtB,QAAQ4B,GAAK,eAAgB1D,OAAQ,kBACvJ8e,KAAK42K,SAAW52K,KAAKqQ,OAAOrtB,QAAQmuB,aAAYP,EAAAA,EAAAA,IAAc,MAAO,CAAE31B,UAAW,YAAa2J,GAAIob,KAAKqQ,OAAOrtB,QAAQ4B,GAAK,YAAa1D,OAAQ,kBAEzJ,EACAmkL,EAAUhmK,UAAU20K,cAAgB,WAC5Bh0K,KAAKk2K,YACLl2K,KAAKk2K,UAAU3+I,MAAMuiB,QAAU,GAC/B95C,KAAK22K,WAAWp/I,MAAMuiB,QAAU,GAChC95C,KAAK+1K,YAAYx+I,MAAMuiB,QAAU,GACjC95C,KAAK42K,SAASr/I,MAAMuiB,QAAU,GAEtC,EACAurH,EAAUhmK,UAAU03K,cAAgB,WAC5B/2K,KAAKk2K,YACLl2K,KAAKk2K,UAAU3+I,MAAMuiB,QAAU,OAC/B95C,KAAK22K,WAAWp/I,MAAMuiB,QAAU,OAChC95C,KAAK+1K,YAAYx+I,MAAMuiB,QAAU,OACjC95C,KAAK42K,SAASr/I,MAAMuiB,QAAU,OAEtC,EACAurH,EAAUhmK,UAAUkzE,YAAc,SAAU0+F,EAAMzpF,EAAMgzB,GACpD,IAAIvsH,EAAO+R,KAAKg3K,qBAAqB/F,EAAMzpF,EAAMgzB,GACjD,IAAKvsH,EAAK1G,OAAQ,CACd,IAAI4uH,EAAMn2G,KAAKqQ,OAAO2/J,iBAAiBxoF,GACnCxnF,KAAKqQ,OAAOo4J,YAAcjuD,IACT,WAAbrE,EAAI77H,KACJ0lB,KAAKqQ,OAAOo4J,WAAWwO,WAAWhG,EAAM96D,EAAIv0H,MAAOqkC,WAAWh4B,EAAK1Q,QAGnEyiB,KAAKqQ,OAAOo4J,WAAWwO,WAAWhG,EAAM96D,EAAIv0H,MAAOqM,EAAK1Q,OAGpE,CACJ,EACA8nL,EAAUhmK,UAAU23K,qBAAuB,SAAU/f,EAAUlE,EAAUv4C,GACrE,IACIvsH,EAAO,CACPmxE,OAFMp/D,KAAKqQ,OAAO2/J,iBAAiBjd,GAGnCx1K,MAAOi9H,EAAKrgD,WAGhB,OADAn6D,KAAKqQ,OAAOylB,QAAQzC,EAAAA,IAAuBplC,GACpCA,CACX,EAEAo3K,EAAUhmK,UAAU63K,iBAAmB,SAAUjgB,EAAUkgB,GACvD,IAAItf,EAAM,6BACN11B,EAAQ,GAAG9kI,MAAMqC,KAAKM,KAAKqQ,OAAO+9I,cAAclvK,SAAS+3K,EAAS77K,WAAY,KAAK01B,iBAAiB+mJ,IAQxG,OAPI73J,KAAKqQ,OAAOyxH,iBACZK,EAAQA,EAAMxhJ,OAAO,GAAG0c,MAAMqC,KAAKM,KAAKqQ,OAAOg/I,qBAAqBnwK,SAAS+3K,EAAS77K,WAAY,KAAK01B,iBAAiB+mJ,KACpH73J,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,KAChCskB,EAAQA,EAAMxhJ,OAAO,GAAG0c,MAAMqC,KAAKM,KAAKqQ,OAAO6+I,yBAAyBhwK,SAAS+3K,EAAS77K,WAAY,KACjG01B,iBAAiB+mJ,OAGvB11B,CACX,EACAkjC,EAAUhmK,UAAU40K,mBAAqB,SAAUx4L,EAAG27L,GAClD,IAAIC,EAAcn4L,UAASymI,EAAAA,EAAAA,IAAa3lH,KAAK0zK,YAAa71D,EAAAA,IAAcz8E,aAAay8E,EAAAA,IAAwB,IACzGs5D,EAAej4L,SAAS8gB,KAAK0zK,YAAYtyI,aAAay8E,EAAAA,IAAwB,IAC9Ey5D,EAAYp4L,UAASymI,EAAAA,EAAAA,IAAa3lH,KAAK4zK,UAAW/1D,EAAAA,IAAcz8E,aAAay8E,EAAAA,IAAwB,IACrG05D,EAAar4L,SAAS8gB,KAAK4zK,UAAUxyI,aAAay8E,EAAAA,IAAwB,IAC1EkwC,EAAS/tJ,KAAKulK,uBAAuBttL,OAAS,EAC9CqtJ,EAAStlI,KAAKulK,uBAAuB,GAAG4L,YAAYl5L,OAAS,EACjE,QAAQ,GACJ,KAAMm/L,GAAWp3K,KAAK4zK,UAAUh9I,UAAUM,SAAS,iCAC7CyuF,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ0/E,EAAAA,IACzB79G,KAAK0zK,YAAc1zK,KAAKqQ,OAAOigK,iBAAiB+G,EAAaF,GAC7Dn3K,KAAK4zK,UAAY5zK,KAAKqQ,OAAOigK,iBAAiB+G,EAActpB,EAAQopB,EAAe7xC,GACnFtlI,KAAK81K,gBACL,MACJ,KAAK91K,KAAKonK,qBAAuB+P,EAAe7xC,EAASiyC,GACrDA,EAAaJ,EAAe7xC,EAAS,EAAIgyC,EAAYD,EAActpB,GAChEwpB,EAAaJ,EAAe7xC,EAAS,EAAI+xC,EAAcC,EAI1D,GAHAt3K,KAAK4zK,UAAY5zK,KAAKqQ,OAAOigK,iBAAiB+G,EAActpB,EAAQwpB,GACpED,EAAYp4L,UAASymI,EAAAA,EAAAA,IAAa3lH,KAAK4zK,UAAW/1D,EAAAA,IAAcz8E,aAAay8E,EAAAA,IAAwB,IACrG05D,EAAar4L,SAAS8gB,KAAK4zK,UAAUxyI,aAAay8E,EAAAA,IAAwB,IACrEu5D,EAGA,CAED,IADA,IAAII,EAAUt4L,SAAS8gB,KAAKy3K,QAAQr2I,aAAay8E,EAAAA,IAAwB,IAChE14G,EAAIkyK,EAAalyK,GAAKmyK,EAAWnyK,IAGtC,IAFA,IAAIg9H,EAAQniI,KAAKk3K,iBAAiB/xK,EAAGgyK,GACjClhK,EAAI,EACCO,EAAIghK,EAAU,EAAGhhK,GAAK+gK,EAAY/gK,IACnCP,EAAIqvH,IACJrvH,EAAI,GAERjW,KAAKuyE,YAAYptE,EAAGqR,EAAG2rH,EAAMjjJ,SAAS+2B,EAAE76B,WAAY,MACpD66B,IAGRjW,KAAKkxK,mBAAmB,CAAEja,SAAUogB,EAAalP,UAAWnoK,KAAK03K,gBAAkB,CAAEzgB,SAAUqgB,EAAWnP,UAAWoP,GACzH,MAhBIv3K,KAAK81K,gBAiBT,MACJ,KAAK91K,KAAKonK,qBAAuB+P,EAAeI,GAC5CJ,EAAeI,EAAa,EAAID,EAAYD,EAActpB,GAC1DopB,EAAeI,EAAa,EAAIF,EAAcC,EAG9C,GAFAt3K,KAAK0zK,YAAc1zK,KAAKqQ,OAAOigK,iBAAiB+G,EAAaE,GAC7Dv3K,KAAK4zK,UAAY5zK,KAAKy3K,QACjBL,EAGA,CACD,IAASjyK,EAAIkyK,EAAalyK,GAAKkyK,EAActpB,EAAQ5oJ,IAAK,EAClDg9H,EAAQniI,KAAKk3K,iBAAiB/xK,EAAGgyK,IAC/BzgI,UAEN,IADIzgC,EAAI,EACCO,EAAIxW,KAAK03K,eAAiB,EAAGlhK,GAAK+gK,EAAY/gK,IAC/CP,EAAIqvH,IACJrvH,EAAI,GAERjW,KAAKuyE,YAAYptE,EAAGqR,EAAG2rH,EAAMjjJ,SAAS+2B,EAAE76B,WAAY,MACpD66B,GAER,CACAjW,KAAKkxK,mBAAmB,CAAEja,SAAUogB,EAAalP,UAAWoP,GAAc,CAAEtgB,SAAUogB,EAActpB,EAAQoa,UAAWnoK,KAAK03K,eAAiBpyC,GACjJ,MAhBItlI,KAAK81K,gBAiBT,MACJ,KAAKuB,EAAcC,EAGf,GAFAt3K,KAAK0zK,YAAc1zK,KAAKqQ,OAAOigK,iBAAiBgH,EAAWH,GAC3Dn3K,KAAK4zK,UAAY5zK,KAAKy3K,QACjBL,EAGA,CACD,IACIvwL,EADA8wL,EAAQz4L,SAAS8gB,KAAKy3K,QAAQx+H,cAAc7X,aAAay8E,EAAAA,IAAwB,IAErF,IAAS14G,EAAIkyK,EAAc,EAAGlyK,GAAKmyK,EAAWnyK,IAAK,CAC3Cte,IAAMmZ,KAAKyJ,WAAa,IACxB5iB,EAAI8wL,GAEJx1C,EAAQniI,KAAKk3K,iBAAiBrwL,EAAGswL,GACjClhK,EAAI,EACRpvB,IACA,IAAS2vB,EAAIxW,KAAK03K,eAAgBlhK,GAAKxW,KAAK03K,eAAiBpyC,EAAQ9uH,IACjExW,KAAKuyE,YAAYptE,EAAGqR,EAAG2rH,EAAMjjJ,SAAS+2B,EAAE76B,WAAY,MACpD66B,GAER,CACAjW,KAAKkxK,mBAAmB,CAAEja,SAAUqgB,EAAWnP,UAAWgP,EAAe7xC,GAAU,CAAE2xB,SAAUogB,EAActpB,EAAQoa,UAAWgP,GACpI,MAlBIn3K,KAAK81K,gBAmBT,MACJ,QAEI,GADA91K,KAAK4zK,UAAY5zK,KAAKqQ,OAAOigK,iBAAiBgH,EAAWH,EAAe7xC,GACnE8xC,EAGA,CACD,IAAIO,EAAQz4L,SAAS8gB,KAAKy3K,QAAQx+H,cAAc7X,aAAay8E,EAAAA,IAAwB,IAErF,IADIh3H,EAAImZ,KAAKyJ,WACJtE,EAAIwyK,EAAQ,EAAGxyK,GAAKmyK,EAAWnyK,IAAK,CACrCte,IAAM8wL,EAAQ,IACd9wL,EAAImZ,KAAKyJ,YAET04H,EAAQniI,KAAKk3K,iBAAiBrwL,EAAGswL,GACrCtwL,IACIovB,EAAI,EACR,IADA,IACSyB,EAAI1X,KAAK03K,eAAgBhgK,GAAK1X,KAAK03K,eAAiBpyC,EAAQ5tH,IACjE1X,KAAKuyE,YAAYptE,EAAGuS,EAAGyqH,EAAMjjJ,SAAS+2B,EAAE76B,WAAY,MACpD66B,GAER,CACAjW,KAAKkxK,mBAAmB,CAAEja,SAAU0gB,EAAQ5pB,EAAQoa,UAAWgP,GAAgB,CAAElgB,SAAUqgB,EAAWnP,UAAWgP,EAAe7xC,GACpI,MAlBItlI,KAAK81K,gBAqBrB,EACAzQ,EAAUhmK,UAAUskE,eAAiB,SAAUloF,GAC3CmnB,SAASuuB,KAAKyF,UAAUjB,OAAO,uBAC3B31B,KAAKhd,UACL2yC,EAAAA,EAAAA,IAAO31B,KAAKhd,SAEZgd,KAAKguC,WAAoD,IAAvChuC,KAAKulK,uBAAuBttL,QAAsE,IAAtD+nB,KAAKulK,uBAAuB,GAAG4L,YAAYl5L,OACzG+nB,KAAK43K,WAAYjyD,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ0/E,EAAAA,IAGxC79G,KAAK43K,UAAY,KAErB,IAAIC,GAAez+I,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,cACrC,GAAIn+B,KAAKguC,YAAchuC,KAAK+zK,eAAiD,SAAhC/zK,KAAK+uI,kBAAkB3lJ,MAChEyuL,GAAgBA,EAAajhJ,UAAUM,SAAS2mF,EAAAA,IAAmB,CACnE,IAAIo5C,EAAW/3K,SAAS24L,EAAa5+H,cAAc7X,aAAay8E,EAAAA,IAAwB,IACpFsqD,EAAYjpL,SAAS24L,EAAaz2I,aAAay8E,EAAAA,IAAwB,IAC3E79G,KAAKguC,WAAY,EACjBhuC,KAAKwuK,qBACLxuK,KAAKkxK,mBAAmB,CAAEja,SAAUj3J,KAAK8zK,YAAa3L,UAAWnoK,KAAKk0K,iBAAmB,CAAEjd,SAAUA,EAAUkR,UAAWA,GAC9H,CAGA,GAFAnoK,KAAKguC,WAAY,EACjBhuC,KAAK83K,yBACD93K,KAAK+zK,cAAe,CACpB,IAAIgE,GAAWpyD,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ0/E,EAAAA,IACtC79G,KAAK4zK,UAAYmE,IAAsB/3K,KAAKy3K,UAAYz3K,KAAK4zK,UAAY5zK,KAAK0zK,YAAc1zK,KAAK4zK,WACjG5zK,KAAK0zK,YAAc1zK,KAAK2zK,UACxB3zK,KAAKg4K,wBACLh4K,KAAKi0K,mBAAmBx4L,GAAG,GAC3BukB,KAAK83K,yBACL93K,KAAK+2K,gBACL/2K,KAAKq0K,kBACLr0K,KAAK+zK,eAAgB,CACzB,CACA/+I,EAAAA,GAAaW,OAAO31B,KAAKqQ,OAAO21I,aAAc,YAAahmJ,KAAKkzK,kBAC5DlzK,KAAKqQ,OAAOm3I,YACZxyH,EAAAA,GAAaW,OAAO31B,KAAKqQ,OAAO4wH,mBAAoB,YAAajhI,KAAKkzK,kBAE1El+I,EAAAA,GAAaW,OAAO/yB,SAAU,UAAW5C,KAAK2jE,eAClD,EACA0hG,EAAUhmK,UAAU2yK,aAAe,WAC3BhyK,KAAK8+G,WACL9+G,KAAK8+G,SAASvnF,MAAMuiB,QAAU,OAEtC,EAKAurH,EAAUhmK,UAAUy4K,uBAAyB,WACzC,GAAI93K,KAAKqQ,OAAO4nK,iBAAmBj4K,KAAKqQ,OAAO8+H,QAC3CnvI,KAAK+uI,kBAAkBuiC,kBAAkBh7K,QAAQ,QAAU,IAAM0J,KAAKgqK,cAAgBhqK,KAAKusK,eACxFvsK,KAAKulK,uBAAuBttL,OAAQ,CACvC,IAAI6O,EAAQ5H,SAAS8gB,KAAKm+B,OAAOiD,aAAay8E,EAAAA,IAAwB,IAClEq6D,EAASh5L,SAAS8gB,KAAKm+B,OAAOiD,aAAa,SAAU,IACrD61H,EAAWj3J,KAAKulK,uBAAuBvlK,KAAKulK,uBAAuBttL,OAAS,GAAGg/K,SAC/E90B,EAAQniI,KAAKk3K,iBAAiBjgB,EAAUnwK,GAAO3I,QAAO,SAAU24C,GAAO,MAA6B,KAAtBA,EAAIS,MAAMuiB,OAAgB,IACxGq8D,EAAMn2G,KAAKqQ,OAAO2/J,iBAAiBlpL,GACnCqxL,EAA2C,YAA7BhiE,EAAI24C,qBAClBspB,EAAcF,EAASl4K,KAAKqQ,OAAOm3I,WACnC6wB,EAAgBr4K,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,IAC7C1H,EAAI24C,uBAAyBjxC,EAAAA,IAC/BnlF,EAAAA,EAAAA,IAAO,IAAM14B,KAAKqQ,OAAOrtB,QAAQ4B,GAAK,aAAa+gI,EAAAA,EAAAA,IAAa3lH,KAAKm+B,OAAQ0/E,EAAAA,QAC1EnlF,EAAAA,EAAAA,IAAO,IAAM14B,KAAKqQ,OAAOrtB,QAAQ4B,GAAK,YAAaob,KAAKqQ,OAAOrtB,WAC/D01C,EAAAA,EAAAA,IAAO,IAAM14B,KAAKqQ,OAAOrtB,QAAQ4B,GAAK,YAAaob,KAAKqQ,OAAOrtB,SAAS2yC,SAE5E31B,KAAK8+G,UAAWluG,EAAAA,EAAAA,IAAc,MAAO,CAAE31B,UAAW,aAAc2J,GAAIob,KAAKqQ,OAAOrtB,QAAQ4B,GAAK,cAC7Fob,KAAK8+G,SAASvnF,MAAMuiB,QAAU,OACzBs+H,EASID,EAIDn4K,KAAKqQ,OAAOmlK,aAAaC,mBAAmBtkK,YAAYnR,KAAK8+G,UAH7D9+G,KAAKqQ,OAAOszH,iBAAiB1qF,cAAc9nC,YAAYnR,KAAK8+G,UAT3Dq5D,EAIDn4K,KAAKqQ,OAAOw3I,cAAcutB,oBAAoBjkK,YAAYnR,KAAK8+G,UAH/D9+G,KAAKqQ,OAAOm7H,kBAAkBvyF,cAAc9nC,YAAYnR,KAAK8+G,UAcjEu5D,IACID,EACAp4K,KAAKqQ,OAAO2wH,uBAAuB7vH,YAAYnR,KAAK8+G,UAGpD9+G,KAAKqQ,OAAOy4J,wBAAwB33J,YAAYnR,KAAK8+G,YAIjE,IAAItE,EAAO2nB,EAAMA,EAAMlqJ,OAAS,GAChC,GAAIuiI,GAAQA,EAAK7nE,aAAc,CAC3B,IAAI2lI,EAAa99D,EAAKt3E,wBAClB4xI,EAAYt6D,EAAK7nE,aAAazP,wBAC9Bq1I,EAAWv4K,KAAKs0K,WAAW95D,GAAQ,EAAI,EACvC66C,EAAYr1J,KAAKu0K,UAAU/5D,GAAQ,EAAI,EACtCx6G,KAAKqQ,OAAOs6B,UAIb3qC,KAAK8+G,SAASvnF,MAAMoM,MAAQmxI,EAAUnxI,MAAQ20I,EAAW30I,MAAQ20I,EAAWvkI,MAAQ,EAAIwkI,EAAW,KAHnGv4K,KAAK8+G,SAASvnF,MAAMmM,KAAO40I,EAAW50I,KAAOoxI,EAAUpxI,KAAO40I,EAAWvkI,MAAQ,EAAIwkI,EAAW,KAKpGv4K,KAAK8+G,SAASvnF,MAAMqM,IAAM00I,EAAW10I,IAAMkxI,EAAUlxI,IAAM00I,EAAWtkI,OAAS,EAAIqhH,EAAY,IACnG,CACAr1J,KAAK8+G,SAASvnF,MAAMuiB,QAAU,EAClC,MAEI95C,KAAKgyK,cAEb,EACA3M,EAAUhmK,UAAU4yE,iBAAmB,SAAUx2F,GAC7CukB,KAAKsuK,YAAc7yL,EAAE6uH,OACrB,IAEI5wD,EAFAvb,EAAS1iD,EAAE0iD,OACXw1E,EAAO3zG,KAAKqQ,OAEZ3jB,GAAci5H,EAAAA,EAAAA,IAAaxnF,EAAQ,UACvC,KAAIzxC,GAAeA,EAAY9H,KAAO+uH,EAAK3wH,QAAQ4B,KAAM+gI,EAAAA,EAAAA,IAAaxnF,EAAQ0/E,EAAAA,MAA4B79G,KAAKqQ,OAAOm3I,aAClH7hC,EAAAA,EAAAA,IAAaxnF,EAAQ,uBAAwBwnF,EAAAA,EAAAA,IAAaxnF,EAAQ0/E,EAAAA,KADtE,CAOA,IAHIpiI,EAAE++D,UAAY/+D,EAAE6+D,UAChB7+D,EAAEi1D,kBAEFi1E,EAAAA,EAAAA,IAAaxnF,EAAQ0/E,EAAAA,MAAsBpiI,EAAE++D,WAAa/+D,EAAE6+D,QAAS,CACrE,GAAIq5D,EAAKo7B,kBAAkBuiC,kBAAkBh7K,QAAQ,QAAU,IAAM0J,KAAKgqK,cAAgBhqK,KAAKusK,cAC3FvsK,KAAKyzK,YAAa,EAClB/5H,GAAS,OAER,GAAIi6D,EAAK6kE,sBAAwB7kE,EAAKw7B,SAAWnvI,KAAKqQ,OAAO0+H,kBAAkB69B,aAAc,CAE9F,GADA5sK,KAAKgnK,mBAAoB,GACpBhnK,KAAKgqK,aAAehqK,KAAKusK,gBAAiBnzI,EAAAA,EAAAA,IAAQ+E,EAAQ,MAAMvH,UAAUM,SAAS,yBAEpF,YADAl3B,KAAKguC,WAAY,GAGrB0L,GAAS,EACT15C,KAAKhd,QAAUgd,KAAKqQ,OAAOO,cAAc,MAAO,CAAE31B,UAAW,mBAC7D04H,EAAKqyC,aAAa70I,YAAYnR,KAAKhd,QACvC,CACI02D,GACA15C,KAAKy4K,WAAWh9L,GAAG,EAE3B,CACAukB,KAAKm1K,uBACDh3I,EAAOvH,UAAUM,SAAS,eAAiBiH,EAAOvH,UAAUM,SAAS,cACrEl3B,KAAKyzK,YAAa,EAClBzzK,KAAK+zK,eAAgB,EACrB/zK,KAAKy4K,WAAWh9L,GA3BpB,CA6BJ,EACA4pL,EAAUhmK,UAAU81K,oBAAsB,WACtC,IAAIhzC,EAAQ,GAAG9kI,MAAMqC,KAAKM,KAAKqQ,OAAOrtB,QAAQwhD,uBAAuB,8BACrExkC,KAAK2zK,UAAYxxC,EAAM,GACvBniI,KAAKy3K,QAAUt1C,EAAMA,EAAMlqJ,OAAS,GAChC+nB,KAAK2zK,YACL3zK,KAAKyJ,WAAavqB,SAAS8gB,KAAK2zK,UAAU16H,cAAc7X,aAAay8E,EAAAA,IAAwB,IAC7F79G,KAAK03K,eAAiBx4L,UAASymI,EAAAA,EAAAA,IAAa3lH,KAAK2zK,UAAW91D,EAAAA,IAAkBz8E,aAAay8E,EAAAA,IAAwB,IAE3H,EACAwnD,EAAUhmK,UAAU24K,sBAAwB,WACpCh4K,KAAK2zK,YACL3zK,KAAKyJ,WAAavqB,SAAS8gB,KAAK2zK,UAAU16H,cAAc7X,aAAay8E,EAAAA,IAAwB,IAC7F79G,KAAK03K,eAAiBx4L,UAASymI,EAAAA,EAAAA,IAAa3lH,KAAK2zK,UAAW91D,EAAAA,IAAkBz8E,aAAay8E,EAAAA,IAAwB,IAE3H,EACAwnD,EAAUhmK,UAAUo5K,WAAa,SAAUh9L,EAAGi6F,GAC1C,IAAIi+B,EAAO3zG,KAAKqQ,OAChB,GAAIqlE,EAAU,CACV,IAAI+kC,GAAKrhF,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,MAC3Bn+B,KAAK8zK,YAAc50L,SAASu7H,EAAGr5E,aAAay8E,EAAAA,IAAwB,IACpE79G,KAAKk0K,gBAAkBh1L,UAASymI,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ0/E,EAAAA,IAAkBz8E,aAAay8E,EAAAA,IAAwB,GAClH,CACAj7G,SAASuuB,KAAKyF,UAAUzB,IAAI,uBAC5B,IAAIg+I,EAASx/D,EAAK3wH,QAAQkgD,wBACtBw1I,GAAUpF,EAAAA,EAAAA,IAAY73L,GAC1BukB,KAAK4sB,EAAI8rJ,EAAQ9rJ,EAAIumJ,EAAOzvI,KAC5B1jC,KAAK9L,EAAIwkL,EAAQxkL,EAAIi/K,EAAOvvI,IAC5B5O,EAAAA,GAAaG,IAAIw+E,EAAKqyC,aAAc,YAAahmJ,KAAKkzK,iBAAkBlzK,MACpEA,KAAKqQ,OAAOm3I,YACZxyH,EAAAA,GAAaG,IAAIw+E,EAAKstB,mBAAoB,YAAajhI,KAAKkzK,iBAAkBlzK,MAElFg1B,EAAAA,GAAaG,IAAIvyB,SAAU,UAAW5C,KAAK2jE,eAAgB3jE,KAC/D,EACAqlK,EAAUhmK,UAAUs5K,qBAAuB,SAAUl9L,GACjD,IAAI4kK,EAAmBrgJ,KAAKqQ,OAAO0kG,yBAA6C,mBAAlBt5H,EAAEkgG,YAIhE,GAHsB,kBAAlBlgG,EAAEkgG,aAAoC37E,KAAKqQ,OAAOs4J,oBAAuBtoB,GACzErgJ,KAAKuoK,kBAEc,kBAAlB9sL,EAAEkgG,aAAmC0kE,IAAqBrgJ,KAAKqQ,OAAOs4J,oBAAsB3oK,KAAKinK,oBAC/FjnK,KAAKqmK,sBAAuB,CAC/B,IAAI3kB,EAAS1hJ,KAAKqQ,OAAOsxI,gBAAgBxjK,QAAO,SAAU1C,GAAK,OAAOA,EAAE8tL,YAAc,IAClFznB,EAAU,GACd9hJ,KAAK+lK,iBAAmB,CAAC,EACzB/lK,KAAKmmK,oBAAsB,GAC3B,IAAK,IAAIhhK,EAAI,EAAGA,EAAIu8I,EAAOzpK,OAAQktB,IAAK,CACpC28I,EAAQriK,KAAKiiK,EAAOxiK,SAASimB,EAAE/pB,WAAY,KAAK0L,OAChD,IAAI8xL,EAAU54K,KAAKutK,WAAWvtK,KAAK6xJ,WAAYnQ,EAAOxiK,SAASimB,EAAE/pB,WAAY,KAAKyK,MAClFma,KAAK+lK,iBAAiB,GAAK6S,IAAW,EACtC54K,KAAKmmK,oBAAoB1mL,KAAKiiK,EAAOxiK,SAASimB,EAAE/pB,WAAY,KAAKyK,KACrE,CACAma,KAAKslK,mBAAqBxjB,CAC9B,CACJ,EAKAujB,EAAUhmK,UAAUwE,iBAAmB,WAC/B7D,KAAKqQ,OAAOuqB,cAGhB56B,KAAKwuI,YAAc,CAAC,CAAEzsJ,MAAOsxC,EAAAA,IAAiB7mB,QAASxM,KAAK0jI,mBACxD,CAAE3hJ,MAAOsxC,EAAAA,IAAmB7mB,QAASxM,KAAKgoK,qBAC1C,CAAEjmL,MAAOsxC,EAAAA,IAA6B7mB,QAASxM,KAAK+9F,kBACpD,CAAEh8G,MAAOsxC,EAAAA,IAA8B7mB,QAASxM,KAAK+9F,kBACrD,CAAEh8G,MAAOsxC,EAAAA,IAA4B7mB,QAASxM,KAAKs7B,mBACnD,CAAEv5C,MAAOsxC,EAAAA,IAAoB7mB,QAASxM,KAAK64K,eAC3C,CAAE92L,MAAOsxC,EAAAA,IAAyB7mB,QAASxM,KAAK24K,sBAChD,CAAE52L,MAAOsxC,EAAAA,IAA8B7mB,QAASxM,KAAKikI,uBACrD,CAAEliJ,MAAOsxC,EAAAA,IAAqB7mB,QAASxM,KAAK+jI,YAC5C,CAAEhiJ,MAAOsxC,EAAAA,IAAoB7mB,QAASxM,KAAKu5I,aAC3C,CAAEx3J,MAAOsxC,EAAAA,IAAwB7mB,QAASxM,KAAK2lI,eAC/C,CAAE5jJ,MAAOsxC,EAAAA,IAAgB7mB,QAASxM,KAAK0nB,WAC3CknH,EAAAA,EAAAA,IAAuB5uI,KAAKqQ,OAAQrQ,KAAKwuI,aAAa,EAAMxuI,MAC5DA,KAAKmqI,oBAAsBnqI,KAAKkiH,YAAYljH,KAAKgB,MACjDA,KAAK84K,uBAAyB94K,KAAKqiH,eAAerjH,KAAKgB,MACvDA,KAAKqQ,OAAOxM,iBAAiBwvB,EAAAA,IAAoBrzB,KAAKmqI,qBACtDnqI,KAAKqQ,OAAOxM,iBAAiBwvB,EAAAA,IAAuBrzB,KAAK84K,wBACzD94K,KAAK+4K,4BACT,EAKA1T,EAAUhmK,UAAUyE,oBAAsB,WAClC9D,KAAKqQ,OAAOuqB,cAGhB5F,EAAAA,GAAaW,OAAO/yB,SAAU,UAAW5C,KAAK2jE,gBAC9C3uC,EAAAA,GAAaW,OAAO31B,KAAKqQ,OAAO21I,aAAc,YAAahmJ,KAAKiyE,kBAChEj9C,EAAAA,GAAaW,OAAO31B,KAAKqQ,OAAO4wH,mBAAoB,YAAajhI,KAAKiyE,mBACtE28D,EAAAA,EAAAA,IAAuB5uI,KAAKqQ,OAAQrQ,KAAKwuI,aAAa,GACtDxuI,KAAKqQ,OAAOvM,oBAAoBuvB,EAAAA,IAAoBrzB,KAAKmqI,qBACzDnqI,KAAKqQ,OAAOvM,oBAAoBuvB,EAAAA,IAAuBrzB,KAAK84K,wBAC5D94K,KAAKg5K,+BACT,EACA3T,EAAUhmK,UAAUk6C,WAAa,WAC7Bv5C,KAAKi5K,SAAqD,IAA3C9lJ,UAAUH,UAAU18B,QAAQ,UACvC0J,KAAKi5K,SACLjkJ,EAAAA,GAAaG,IAAIn1B,KAAKqQ,OAAOrtB,QAAS,UAAWgd,KAAKk5K,eAAgBl5K,MACtEg1B,EAAAA,GAAaG,IAAIn1B,KAAKqQ,OAAOrtB,QAAS,QAASgd,KAAK0pD,aAAc1pD,OAG7DA,KAAKqQ,OAAO8oK,eACbnkJ,EAAAA,GAAaG,IAAIn1B,KAAKqQ,OAAOrtB,QAAS,UAAWgd,KAAKk5K,eAAgBl5K,KAGlF,EACAqlK,EAAUhmK,UAAU6nD,aAAe,WAC3BlnD,KAAKi5K,SACLjkJ,EAAAA,GAAaW,OAAO31B,KAAKqQ,OAAOrtB,QAAS,UAAWgd,KAAKk5K,gBACzDlkJ,EAAAA,GAAaW,OAAO31B,KAAKqQ,OAAOrtB,QAAS,QAASgd,KAAK0pD,eAGlD1pD,KAAKqQ,OAAO8oK,eACbnkJ,EAAAA,GAAaW,OAAO31B,KAAKqQ,OAAOrtB,QAAS,UAAWgd,KAAKk5K,eAGrE,EACA7T,EAAUhmK,UAAU4kI,sBAAwB,WACnCjkI,KAAKqQ,OAAOs4J,oBACb3oK,KAAKuoK,gBAEb,EACAlD,EAAUhmK,UAAUsmI,cAAgB,WAChC3lI,KAAKmuK,kBACT,EACA9I,EAAUhmK,UAAUk6I,YAAc,SAAU99J,GACxC,IAAK,IAAI0pB,EAAI,EAAGA,EAAI1pB,EAAEqiG,QAAQ7lG,OAAQktB,IAAK,CACvC,IAAIyzK,EAAU54K,KAAKutK,WAAWvtK,KAAK6xJ,WAAYp2K,EAAEqiG,QAAQ5+F,SAASimB,EAAE/pB,WAAY,aACxE4kB,KAAK+lK,iBAAiB,GAAK6S,KACjC54K,KAAKg8J,iBACX,CACAh8J,KAAKmuK,kBACT,EACA9I,EAAUhmK,UAAU87I,iBAAmB,SAAU1/J,GACvB,kBAAlBA,EAAEkgG,aAAoC37E,KAAKqQ,OAAOs4J,oBAClD3oK,KAAKuoK,gBAEb,EACAlD,EAAUhmK,UAAU+5K,eAAiB,WACjC,OAAOp5K,KAAKqQ,OAAO4wH,mBAAmB1uH,cAAc,oBACxD,EACA8yJ,EAAUhmK,UAAUqkI,kBAAoB,SAAUjoJ,GAC1CA,EAAE0pD,SAAWnlC,KAAK47B,iBAAmBngD,EAAEmzE,SACvC5uD,KAAKsrC,SACLtrC,KAAKq5K,wBAEb,EAEAhU,EAAUhmK,UAAUisC,OAAS,SAAU7vD,GACnCu5C,EAAAA,GAAaG,IAAIn1B,KAAKqQ,OAAO21I,aAAc,YAAahmJ,KAAKiyE,iBAAkBjyE,MAC/Eg1B,EAAAA,GAAaG,IAAIn1B,KAAKqQ,OAAO4wH,mBAAoB,YAAajhI,KAAKiyE,iBAAkBjyE,KACzF,EACAqlK,EAAUhmK,UAAUi8B,kBAAoB,SAAU7/C,GAC9C,GAAIA,EAAE0pD,SAAWnlC,KAAK47B,gBAAtB,CAGA,IAAI+3E,EAAO3zG,KAAKqQ,QACX1C,EAAAA,EAAAA,IAAkBlyB,EAAE26C,WAAW97C,OAAyC,WAAhC0lB,KAAK+uI,kBAAkBz0J,OAC5D0lB,KAAKulK,uBAAuBttL,OAAS,IACrC+nB,KAAKwuK,qBACLxuK,KAAK0uK,eAAYxzL,GAEjB8kB,KAAKslK,mBAAmBrtL,OAAS,IACjC+nB,KAAK+pK,oBACL/pK,KAAKyqK,kBAAevvL,GAEpB8kB,KAAKwlK,uBAAuBvtL,OAAS,IACrC+nB,KAAKyuK,uBACLzuK,KAAKs5K,kBAAep+L,GAExB8kB,KAAK4lK,wBAAyB,EAC9B5lK,KAAKsoK,cAEJ36J,EAAAA,EAAAA,IAAkBlyB,EAAE26C,WAAWhtC,QAC/BukB,EAAAA,EAAAA,IAAkBlyB,EAAE26C,WAAWk7I,qBAChCtxK,KAAKuoK,iBACLvoK,KAAKyqK,kBAAevvL,EACpB8kB,KAAK0uK,eAAYxzL,EACjB8kB,KAAKs5K,kBAAep+L,GAExB8kB,KAAK0mK,aAAc,EACnB1mK,KAAKu5K,2BACLv5K,KAAK0mK,aAAc,EACd1mK,KAAKqQ,OAAO85J,qBACbnqK,KAAKq5K,wBAEYr5K,KAAKqQ,OAAO4jG,aAAa91H,QAAO,SAAUg4H,GAAO,MAAoB,aAAbA,EAAI77H,IAAqB,IACnFrC,SACf07H,EAAKw2D,sBAAgE,oBAAxCnqK,KAAK+uI,kBAAkBi8B,eAExDhrK,KAAKm0K,aAnCL,CAoCJ,EACA9O,EAAUhmK,UAAUipK,UAAY,WACxBtoK,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,gBAAgBiyB,uBAAuB,eAAevsD,SACxF+nB,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,gBAAgBglB,MAAMuiB,QAAU,OAE1E,EACAurH,EAAUhmK,UAAU0kI,WAAa,SAAUtoJ,GACvC,IAAIk0J,EAAW3vI,KAAKqQ,OAAOyxH,eACvB03C,EAAoBx5K,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,KAClD8xB,GAAaA,IAAc6pC,IAAsB/9L,EAAEwS,KAAK0hJ,UACtD6pC,GAAqB/9L,EAAEwS,KAAKw3J,4BAAgCzlJ,KAAKslK,mBAAmBrtL,SACxF+nB,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAqBrzB,KAAK+jI,YAC1C/jI,KAAKkpK,UAAUlpK,KAAKqQ,OAAOopK,kBAEnC,EACApU,EAAUhmK,UAAUk6K,yBAA2B,WAC3C,IAAIG,EAAO15K,KAAKqQ,OAChBqpK,EAAK9yJ,IAAIyM,EAAAA,IAAqBrzB,KAAKu5K,0BACnC,IAAI1M,EAAiB6M,EAAKzlE,aAAa91H,QAAO,SAAUg4H,GAAO,MAAoB,aAAbA,EAAI77H,IAAqB,IAC3FuyL,EAAe50L,OAAS,IACxByhM,EAAKvP,qBAAsB,EAC3BnqK,KAAK25K,SAAW9M,EAAe,GAAGjrL,MAClCoe,KAAKg8J,kBAAoBh8J,KAAKqQ,OAAO2kG,aAAagnD,mBAC9CruJ,EAAAA,EAAAA,IAAkB3N,KAAKg8J,qBACvBh8J,KAAKg8J,kBAAoBh8J,KAAKgpK,+BAA+B/wL,QAE7D+nB,KAAKusK,eACLmN,EAAK3qC,kBAAkBz0J,KAAO,WAC9Bo/L,EAAK3+I,YAGL/6B,KAAKq5K,yBAGRK,EAAKvP,qBAAwBnqK,KAAK0mK,cACnC1mK,KAAK25K,SAAW,KAChB35K,KAAKq5K,wBAEb,EACAhU,EAAUhmK,UAAUg6K,sBAAwB,WACxC,IAAIK,EAAO15K,KAAKqQ,OACZrQ,KAAKqQ,OAAO0+H,kBAAkB86B,kBAAoB7pK,KAAKqQ,OAAOsoG,0BAA0B1gI,OAAS,GACjGyhM,EAAK/Q,oBAAqB,EAC1B3oK,KAAK0tK,gCAEA1tK,KAAKqQ,OAAOsoG,0BAA0B1gI,OAAS,GACpDyhM,EAAK/Q,oBAAqB,EAC1B3oK,KAAK0tK,iCAGLgM,EAAK/Q,oBAAqB,EAC1B3oK,KAAK+lK,iBAAmB,CAAC,EAEjC,EACAV,EAAUhmK,UAAUquK,6BAA+B,WAC/C,IAAIgM,EAAO15K,KAAKqQ,OAEhB,GADArQ,KAAK6xJ,WAAa7xJ,KAAKqQ,OAAOsoG,0BAA0B,IACnD+gE,EAAK5kE,sBAAwB90G,KAAK25K,WAC9BD,EAAK/Q,oBAAoE,IAA9C9pL,OAAOC,KAAKkhB,KAAK+lK,kBAAkB9tL,SAC9DyhM,EAAK/Q,oBAAqB,CAC/B,IAAI9iL,EAAOma,KAAKqQ,OAAOqxG,gBACnBtlC,GAAQ,IAAI4B,EAAAA,GAAQjC,MAAM/7E,KAAK25K,SAAU,SAAS,GACjDv9F,EAAM9zE,SACP8zE,EAAM9zE,OAAStI,KAAKqQ,OAAO+rE,MAAM9zE,QAErC,IAAIk0E,EAAc32F,EAAK6jG,QAAQ,CAAC,EAAGtN,GAE/BmuB,EAAUvqG,KACdA,KAAKqQ,OAAOutF,cACZphB,EAAYr1F,MAAK,SAAU1L,GACvB8uH,EAAQqvE,YAAYn+L,EAAE2D,QACtBmrH,EAAQsvE,0BACRtvE,EAAQl6F,OAAO+tF,aACnB,GACJ,CACJ,EACAinE,EAAUhmK,UAAUu6K,YAAc,SAAUrnL,GAExC,IADA,IAAI1M,EAAQma,KAAKqQ,OAAOqxG,gBAAgBpL,WAAc/jH,EAAY,OAAIA,EAC7D4S,EAAI,EAAGA,EAAItf,EAAK5N,OAAQktB,IAAK,CAClC,IAAIyzK,EAAU54K,KAAKutK,WAAWvtK,KAAK6xJ,WAAYhsK,EAAK3G,SAASimB,EAAE/pB,WAAY,OACvEuyB,EAAAA,EAAAA,IAAkB3N,KAAK+lK,iBAAiB,GAAK6S,KAAa/yL,EAAK3G,SAASimB,EAAE/pB,WAAY,KAAK4kB,KAAK25K,YAChG35K,KAAK+lK,iBAAiB,GAAK6S,GAAW/yL,EAAK3G,SAASimB,EAAE/pB,WAAY,KAAK4kB,KAAK25K,UAEpF,CACA35K,KAAKmmK,oBAAsBtgL,CAC/B,EACAw/K,EAAUhmK,UAAUy6K,gBAAkB,SAAU7zL,GAC5C,GAAM+Z,KAAKqQ,OAAOqxG,gBAAgBpL,cAAgB3oG,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAOh3B,aACzE2mB,KAAKqQ,OAAOh3B,WAAW+F,OAiC1B,GAAI6G,EAAO,CACP,IAAI8zL,EAAoBl7L,OAAOC,KAAKkhB,KAAK+lK,kBACrCiU,EAAyBn7L,OAAOC,KAAKkhB,KAAKgmK,oBAC9C,IAAKhmK,KAAKmnK,gBACN,IAAK,IAAInvD,EAAK,EAAGC,EAAKj4G,KAAKqQ,OAAO+iI,gBAAiBp7B,EAAKC,EAAGhgI,OAAQ+/H,IAAM,CACjEnyH,EAAOoyH,EAAGD,GACd,KAAKrqG,EAAAA,EAAAA,IAAkB9nB,EAAKma,KAAK6xJ,aAAc,CAC3C,IAAI7yK,EAAM6G,EAAKma,KAAK6xJ,YAAYz2K,YACQ,IAApC2+L,EAAkBzjL,QAAQtX,KAAwD,IAAzCg7L,EAAuB1jL,QAAQtX,KACxEghB,KAAK+lK,iBAAiBlgL,EAAKma,KAAK6xJ,cAAe,EAEvD,CACJ,CAER,MAEI7xJ,KAAK+lK,iBAAmB,CAAC,EACzB/lK,KAAKgmK,mBAAqB,CAAC,EAC3BhmK,KAAKknK,oBAAqB,OAlD9B,GAAIjhL,EACA,GAAI+Z,KAAKinK,qBAAuBjnK,KAAKqQ,OAAOykG,sBAAwB90G,KAAKqQ,OAAO0kG,yBAE5E,IADA,IACSxmG,EAAK,EAAG0rK,EADJj6K,KAAKqQ,OAAOsxI,gBAAgBxjK,QAAO,SAAU1C,GAAK,OAAOA,EAAE8tL,YAAc,IAClDh7J,EAAK0rK,EAAShiM,OAAQs2B,IAAM,CAC5D,IAAI2tD,EAAM+9G,EAAS1rK,GACnBvO,KAAK+lK,iBAAiB/lK,KAAKutK,WAAWvtK,KAAK6xJ,WAAY31F,EAAIr2E,QAAS,CACxE,KAEC,CACD,IAAI8kH,EAAe3qG,KAAKinK,mBAAqBjnK,KAAKqQ,OAAOy9J,uBAAyB9tK,KAAK0pF,UACvF,GAAI1pF,KAAKqQ,OAAOolG,cAAcrB,QAAQn8H,OAClC,IAAK,IAAI+N,EAAK,EAAG+wC,EAAK/2B,KAAKinK,mBAAqBt8D,EAAeA,EAAa7sB,QAAS93F,EAAK+wC,EAAG9+C,OAAQ+N,IAAM,CACvG,IAAIH,EAAOkxC,EAAG/wC,GACdga,KAAK+lK,iBAAiB/lK,KAAKutK,WAAWvtK,KAAK6xJ,WAAYhsK,KAAS,CACpE,MAGA,IAAK,IAAIw9G,EAAK,EAAG62E,EAAiBvvE,EAActH,EAAK62E,EAAejiM,OAAQorH,IAAM,CAC9E,IAAIx9G,EAAOq0L,EAAe72E,GAC1BrjG,KAAK+lK,iBAAiB/lK,KAAKutK,WAAWvtK,KAAK6xJ,WAAYhsK,KAAS,CACpE,CAER,MAGAma,KAAK+lK,iBAAmB,CAAC,CA4BrC,EACAV,EAAUhmK,UAAUqqF,QAAU,WAC1B,OAAO1pF,KAAKqQ,OAAOqxG,gBAAgBllC,YAAY6Q,aAAartF,KAAKqQ,OAAOqxG,gBAAgB7N,eAAc,GAC1G,EACAwxD,EAAUhmK,UAAU86K,yBAA2B,WAC3C,IAAIC,EAA+B,IAAIxuF,EAAAA,EAAY5rF,KAAKmmK,qBACnD94E,aAAartF,KAAKqQ,OAAOqxG,gBAAgB7N,eAAc,IAK5D,OAJI7zG,KAAKqQ,OAAOolG,cAAcrB,QAAQn8H,QAAUmiM,GAC5CA,EAA6Bt8F,UAC7Bs8F,EAA+BA,EAA6Bt8F,QAAQzgF,SAEjE+8K,CACX,EACA/U,EAAUhmK,UAAUw6K,wBAA0B,WAC1C,IAAI1/L,EAAO6lB,KAAKqQ,OAAOs8I,UACnB3sJ,KAAKqQ,OAAO85J,qBAAuBnqK,KAAKqQ,OAAOyxH,iBAClC9hI,KAAKqQ,OAAOgqK,yBACd9nK,cAAc,oBACrBp4B,EAAO6lB,KAAKqQ,OAAOk9I,kBAEnBvtJ,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,IAClB79G,KAAKqQ,OAAOiqK,6BACd/nK,cAAc,oBACtBp4B,EAAO6lB,KAAKqQ,OAAO8+J,uBAQ/B,GAJAnvK,KAAKg8J,kBAAoBh8J,KAAKqQ,OAAOyzH,wBAAwB7rJ,OACzD+nB,KAAKqQ,OAAOwkG,cACZ70G,KAAKg8J,kBAAoBh8J,KAAKqQ,OAAO2kG,aAAagnD,qBAEjDruJ,EAAAA,EAAAA,IAAkBxzB,IAASA,EAAKlC,OAAS,IAAM+nB,KAAKqQ,OAAOs4J,oBAAsB3oK,KAAK25K,UAAW,CAElG,IADA,IAAI73B,EAAU,GACLtrI,EAAI,EAAGA,EAAIr8B,EAAKlC,OAAQu+B,IAAK,CAClC,IAAIkrI,EAAS1hJ,KAAKooK,UAAUjuL,EAAK+E,SAASs3B,EAAEp7B,WAAY,MACpD2nG,EAAO2+D,GAASA,EAAO77J,KAAOma,KAAKutK,WAAWvtK,KAAK6xJ,WAAYnQ,EAAO77J,MAAe,KACzF,GAAa,OAATk9F,EACA,OAEJ,IAAI/iF,KAAKinK,oBAAuBvlB,EAAO6nB,aAAvC,CAGA,IAAIgR,OAAa,EACbxM,EAAS5zL,EAAK+E,SAASs3B,EAAEp7B,WAAY,KAAKm3B,cAAc,kBACxDvS,KAAK+lK,iBAAiB,GAAKhjF,IAAuC,UAA7B/iF,KAAKqQ,OAAO+8J,cAA4BptK,KAAK+lK,iBAAiB,GAAKhjF,IACxG/iF,KAAKg8J,oBAAsBn9K,OAAOC,KAAKkhB,KAAK+lK,kBAAkB9tL,QAAU+nB,KAAKimK,aAAa3vK,QAAQysF,GAAQ,GACzE,YAA7B/iF,KAAKqQ,OAAO+8J,cAA8BptK,KAAKimK,aAAa3vK,QAAQysF,GAAQ,IAAM/iF,KAAKqQ,OAAOopK,kBACjE,iBAA7Bz5K,KAAKqQ,OAAO+8J,gBAAoCz/J,EAAAA,EAAAA,IAAkB3N,KAAK25K,WAAaj4B,EAAO77J,KAAKma,KAAK25K,WACzG73B,EAAQriK,KAAKP,SAAS/E,EAAK+E,SAASs3B,EAAEp7B,WAAY,KAAKgmD,aAAay8E,EAAAA,IAAwB,KAC5F08D,GAAa,IAGbA,GAAa,EACTv6K,KAAKkuK,gBAAkBH,GAAU/tK,KAAKqQ,OAAO85J,qBAAuB4D,IACpEC,EAAAA,EAAAA,IAAqBD,EAAO/hH,mBAAoBuuH,IAGxDv6K,KAAKqtK,wBAAwBlzL,EAAK+E,SAASs3B,EAAEp7B,WAAY,KAAMm/L,EAhB/D,CAiBJ,CACIv6K,KAAKusK,eAAiBzqB,EAAQ7pK,OAAS,EACvC+nB,KAAKkpK,UAAUpnB,EAAQ,IAAI,GAG3B9hJ,KAAKksK,WAAWpqB,EAExB,EACK9hJ,KAAKqQ,OAAO85J,qBAAsE,oBAA/CnqK,KAAKqQ,OAAO0+H,kBAAkBi8B,eAAuChrK,KAAKgpK,+BAA+B/wL,OAAS,GACtJ+nB,KAAKmuK,kBAEb,EACA9I,EAAUhmK,UAAU6iH,YAAc,SAAUzmI,GACxC,GAAsB,SAAlBA,EAAEkgG,aAA0B37E,KAAKqQ,OAAOs4J,mBAAoB,CAC5D,IAAI6R,EAAax6K,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,uBACnD,KAAK5E,EAAAA,EAAAA,IAAkB6sK,GAAa,CAChC,IAAIt+G,GAAM9iC,EAAAA,EAAAA,IAAQohJ,EAAY,IAAM38D,EAAAA,IACpC,GAAI3hD,EAAK,CACiC,WAAlCl8D,KAAKqQ,OAAO6iI,aAAa9pJ,OACzB8yE,EAAMl8D,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,kBAE5C,IAAImvI,EAAS1hJ,KAAKooK,UAAUlsG,GAC5B,IAAKwlF,EACD,OAEJ1hJ,KAAK+lK,iBAAiB/lK,KAAKutK,WAAWvtK,KAAK6xJ,WAAYnQ,EAAO77J,OAAS67J,EAAO18C,WAAaw1E,EAAW7+L,OAC1G,MAEIqkB,KAAKkmK,eAAiBsU,EAAW7+L,OAEzC,CACJ,CACIqkB,KAAKqQ,OAAOs4J,oBAAsB3oK,KAAKinK,qBACjB,WAAlBxrL,EAAEkgG,cAA6B37E,KAAKqQ,OAAOqxG,gBAAgBpL,cACtD3oG,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAOh3B,aAAe2mB,KAAKqQ,OAAOh3B,WAAW+F,UACzE4gB,KAAKslK,mBAAqB,IAER,cAAlB7pL,EAAEkgG,aAAiD,cAAlBlgG,EAAEkgG,cACnC37E,KAAKqQ,OAAOy9J,uBAAyB,GACrC9tK,KAAKqQ,OAAOoqK,uBAAyB,IAGjD,EACApV,EAAUhmK,UAAUgjH,eAAiB,SAAU5mI,GAC3C,GAAsB,SAAlBA,EAAEkgG,aAA0B37E,KAAKqQ,OAAOs4J,mBAAoB,CAC5D,GAAiB,QAAbltL,EAAEwnB,OAAkB,CACpB,GAAIjD,KAAKkmK,eAAgB,CACrB,IAAIxkB,EAAS1hJ,KAAKqQ,OAAOi5J,oBAAoBtpK,KAAKqQ,OAAOs8I,UAAUlxK,EAAE4tL,aAAajoI,aAAa,aAC/FphC,KAAK+lK,iBAAiB/lK,KAAKutK,WAAWvtK,KAAK6xJ,WAAYnQ,EAAO77J,OAAS67J,EAAO18C,WAAahlG,KAAKkmK,cACpG,CACAlmK,KAAKqmK,uBAAwB,EAC7BrmK,KAAKmuK,kBACT,CACAnuK,KAAK65K,yBACT,CACA,GAAsB,WAAlBp+L,EAAEkgG,aAA4B37E,KAAKqQ,OAAOs4J,mBAAoB,CAG9D,IAFA,IACI9iL,EADUpK,EAAEoK,KACGwX,QACV8H,EAAI,EAAGA,EAAItf,EAAK5N,OAAQktB,IAAK,CAClC,IAAIyzK,EAAU54K,KAAKutK,WAAWvtK,KAAK6xJ,WAAYhsK,EAAK3G,SAASimB,EAAE/pB,WAAY,OACtEuyB,EAAAA,EAAAA,IAAkBirK,IACnB54K,KAAK4tK,oBAAoBgL,EAAS54K,KAAKinK,mBAE/C,CACAjnK,KAAKqmK,uBAAwB,EAC7BrmK,KAAKmuK,mBACLnuK,KAAKg8J,kBAAoBh8J,KAAKqQ,OAAO2kG,aAAagnD,iBACtD,CACA,GAAsB,WAAlBvgL,EAAEkgG,YAA0B,CAC5B,GAAI37E,KAAKqQ,OAAOs4J,oBAAsB3oK,KAAKinK,oBAAsBjnK,KAAKqmK,sBAAuB,CACzF,IAAIlsL,EAAO6lB,KAAKqQ,OAAOsxI,gBACnBG,EAAU,GACd,IAAS38I,EAAI,EAAGA,EAAIhrB,EAAKlC,OAAQktB,IACzBhrB,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAKmuL,cACjCznB,EAAQriK,KAAKtF,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAK0L,OAGlDg7J,EAAQ7pK,QACR+nB,KAAKksK,WAAWpqB,EAExB,CACA9hJ,KAAKyqK,kBAAevvL,EACpB8kB,KAAK0uK,eAAYxzL,EACjB8kB,KAAK2uK,gBAAazzL,CACtB,CACJ,EACAmqL,EAAUhmK,UAAUq7K,YAAc,WAuB9B,IAtBK16K,KAAKqQ,OAAOykG,sBAAwB90G,KAAKqQ,OAAOs4J,oBAC7C3oK,KAAK6yI,gBAAgB56J,SACrB+nB,KAAK+mK,oBAAqB,IAG7B/mK,KAAKqQ,OAAOqxG,gBAAgBpL,cAAgB3oG,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAOh3B,aACxE2mB,KAAKqQ,OAAOh3B,WAAW+F,SAAY4gB,KAAKknK,qBACV,iBAA7BlnK,KAAKqQ,OAAO+8J,aACZptK,KAAK85K,iBAAgB,GAEa,YAA7B95K,KAAKqQ,OAAO+8J,cACjBptK,KAAK85K,iBAAgB,IAGzB95K,KAAKqQ,OAAOykG,sBACZ90G,KAAKmuK,mBAELnuK,KAAKqQ,OAAOs4J,oBACZ3oK,KAAK65K,0BAET75K,KAAK8mK,uBAAsB9mK,KAAKgqK,aAAehqK,KAAKqQ,OAAOrtB,QAAQ8tB,iBAAiB,2BAChF9Q,KAAKqQ,OAAOsqK,kBAAkB1iM,QAC9B+nB,KAAKqQ,OAAO85J,sBAAwBnqK,KAAK8mK,oBAAqB,CAG9D,IAFA,IAAI8T,EAAe56K,KAAKqQ,OAAOsxI,gBAC3BG,EAAU,GACL38I,EAAI,EAAGA,EAAIy1K,EAAa3iM,OAAQktB,IACjCy1K,EAAa17L,SAASimB,EAAE/pB,WAAY,KAAK4pH,YACzC88C,EAAQriK,KAAK0lB,GAGjB28I,EAAQ7pK,QACR+nB,KAAKksK,WAAWpqB,GAEpB9hJ,KAAK8mK,qBAAsB,CAC/B,CACJ,EACAzB,EAAUhmK,UAAUiwK,0BAA4B,SAAUiL,GACtD,GAAIv6K,KAAKqQ,OAAOs4J,mBAAoB,CAEhC,IADA,IAAIxuL,EAAO6lB,KAAKqQ,OAAOs8I,UACdxnJ,EAAI,EAAGA,EAAIhrB,EAAKlC,OAAQktB,IAC7BnF,KAAKqtK,wBAAwBlzL,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAMm/L,GAElC,YAA7Bv6K,KAAKqQ,OAAO+8J,cACZptK,KAAK85K,iBAAgB,GACrB95K,KAAKmmK,oBAAuBnmK,KAAKqQ,OAAOqxG,gBAAgBpL,cAC/C3oG,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAOh3B,aAAe2mB,KAAKqQ,OAAOh3B,WAAW+F,OACvE4gB,KAAKmmK,oBAAsB,IAEC,UAA7BnmK,KAAKqQ,OAAO+8J,eACjBptK,KAAK85K,iBAAgB,GACrB95K,KAAKmmK,oBAAwBnmK,KAAKqQ,OAAOqxG,gBAAgBpL,cAChD3oG,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAOh3B,aAAe2mB,KAAKqQ,OAAOh3B,WAAW+F,QACrE4gB,KAAKinK,mBAEoBjnK,KAAKmmK,oBADlCnmK,KAAKqQ,OAAOolG,cAAcrB,QAAQn8H,OAAS+nB,KAAK0pF,UAAU5L,QAAQzgF,QAC9D2C,KAAK0pF,UAAUrsF,QAE/B,CACJ,EACAgoK,EAAUhmK,UAAUw7K,qBAAuB,SAAUN,GACjD,IAAIO,EAAY96K,KAAKo7J,cACjB2f,EAAW/6K,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,eAajD,GAZAvS,KAAKkuK,cAAgBluK,KAAKo5K,iBACtBmB,GAAcv6K,KAAKgpK,+BAA+B/wL,QAClD+nB,KAAKqQ,OAAO+8J,aAAe,QAC3BptK,KAAKsvK,0BAA0BiL,GAC/Bv6K,KAAKgsK,kBAAkB8O,EAAUzqB,mBAAmB,GAAIyqB,EAAUzqB,mBAAmBrwJ,KAAKgpK,+BAA+B/wL,OAAS,MAGlI+nB,KAAKqQ,OAAO+8J,aAAe,UAC3BptK,KAAKsvK,0BAA0BiL,GAC/Bv6K,KAAKuoK,kBAETvoK,KAAKimK,aAAe,KACft4J,EAAAA,EAAAA,IAAkBotK,GAAW,CAC9B,IAAIP,EAAaO,EAASxoK,cAAc,wBACnC5E,EAAAA,EAAAA,IAAkB6sK,KACnBxM,EAAAA,EAAAA,IAAqBwM,EAAWxuH,mBAAoBuuH,EAE5D,CACJ,EACAlV,EAAUhmK,UAAU27K,eAAiB,SAAUC,GAC3C,IAAIjrK,EAAQhQ,KACRk7K,EAAWl7K,KAAKqvK,kBAAkB4L,GAClCh1L,EAAqB,UAAbi1L,EAcZ,GAbAl7K,KAAK4qK,yBAA0B,GAC1B5qK,KAAKqQ,OAAOqxG,gBAAgBpL,cAAgB3oG,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAOh3B,aACxE2mB,KAAKqQ,OAAOh3B,WAAW+F,UAA2B,YAAb87L,GAA0Bl7K,KAAKmnK,iBACtEnnK,KAAKqQ,OAAOqxG,gBAAgBpL,YAA2B,iBAAb4kE,GAA+Bl7K,KAAKqQ,OAAOs4J,oBACtF3oK,KAAKknK,oBAAqB,EAG1BlnK,KAAKknK,oBAAqB,EAE1BlnK,KAAKknK,oBAAsBlnK,KAAKmnK,kBAChCnnK,KAAKgmK,mBAAqB,CAAC,GAE/BhmK,KAAKmnK,iBAAkB,EACN,iBAAb+T,IACKl7K,KAAK25K,UAAa35K,KAAKqQ,OAAOs4J,qBAC/B1iL,EAAQ+Z,KAAKgpK,+BAA+BrhK,MAAK,SAAU9hB,GACvD,OAAOmqB,EAAMu9J,WAAWv9J,EAAM6hJ,WAAYhsK,KAASmqB,EAAM+1J,gBAC7D,KAEA/lK,KAAKqQ,OAAOqxG,gBAAgBpL,YAAct2G,KAAKqQ,OAAOs4J,oBACtD,IAAK,IAAIxjK,EAAI,EAAGA,EAAInF,KAAKgpK,+BAA+B/wL,OAAQktB,IAAK,CACjE,IAAItmB,OAAOC,KAAKkhB,KAAK+lK,kBAAkBznL,SAAU0hB,KAAKutK,WAAWvtK,KAAK6xJ,WAAY7xJ,KAAKgpK,+BAA+B,GAAK7jK,IAAK/pB,YAG3H,CACD6K,GAAQ,EACR,KACJ,CALIA,GAAQ,CAMhB,CAGJ+Z,KAAKqQ,OAAOs4J,oBAAsB3oK,KAAKqQ,OAAOwkG,cAC9C70G,KAAKg8J,kBAAoBh8J,KAAKqQ,OAAO2kG,aAAagnD,mBAEtDh8J,KAAK66K,sBAAsB50L,GAC3B+Z,KAAKm+B,OAAS,KACVn+B,KAAKgpK,+BAA+B/wL,OAAS,IAC7C+nB,KAAKmuK,mBACLnuK,KAAKm7K,4BAETn7K,KAAKo7K,sBAAsBH,GAAWh1L,EAC1C,EACAo/K,EAAUhmK,UAAUgwK,kBAAoB,SAAUv4I,GAC9C,IAAIH,EAAUG,EAAMA,EAAIk1B,mBAAmBp1B,UACvC52B,KAAKo5K,iBAAiBptH,mBAAmBp1B,UAc7C,OAZID,EAAQO,SAAS,WACR,QAEJP,EAAQO,SAAS,aACb,UAEJP,EAAQO,SAAS,UACb,eAGA,MAGjB,EACAmuI,EAAUhmK,UAAUg8K,YAAc,SAAUJ,GACxC,IAAI98I,GAAS/E,EAAAA,EAAAA,IAAQp5B,KAAKkuK,cAAe,IAAMrwD,EAAAA,IAC3ClK,EAAO3zG,KAAKqQ,OAChBrQ,KAAK2lK,oBAAqB,EAC1B,IAAI2V,EAAS,EAEb,GADAt7K,KAAK4qK,yBAA0B,GAC3Bp2D,EAAAA,EAAAA,IAAgBb,GAAO,CACvB,IAAIznG,EAAMiyB,EAAO8a,cAAc7X,aAAa,YAC5Ck6I,EAAS3nE,EAAKg5C,UAAU7sK,KAAI,SAAU43B,GAAK,OAAOA,EAAE0pB,aAAa,WAAa,IAAG9qC,QAAQ4V,EAC7F,MAEIovK,EAASp8L,SAASi/C,EAAO8a,cAAc7X,aAAay8E,EAAAA,IAAwB,IAE5E79G,KAAKqQ,OAAOs4J,oBAAsB3oK,KAAKqQ,OAAOrtB,QAAQwhD,uBAAuBq5E,EAAAA,IAAmB5lI,OAAS,GAC7D,QAA5C+nB,KAAKqQ,OAAO6iI,aAAa6e,kBACvBupB,EAENt7K,KAAKu7K,wBAAwBD,EAAQp8L,SAASi/C,EAAOiD,aAAay8E,EAAAA,IAAwB,KAC1F79G,KAAKw7K,2BAA0BpiJ,EAAAA,EAAAA,IAAQ+E,EAAQ,IAAM0/E,EAAAA,KACrD79G,KAAKmuK,mBACLnuK,KAAK2lK,oBAAqB,EAC1B3lK,KAAKo7K,sBAAsBH,EAAUA,EAASjvH,mBAAmBp1B,UAAUM,SAAS,WACxF,EACAmuI,EAAUhmK,UAAUm8K,0BAA4B,SAAUt/G,GACtD,GAAiC,UAA7Bl8D,KAAKqQ,OAAO+8J,cAAyD,YAA7BptK,KAAKqQ,OAAO+8J,aAA4B,CAChF,IAAI1rB,EAAS1hJ,KAAKooK,UAAUlsG,GACxB6mB,EAAO2+D,GAAUA,EAAO77J,KAAOma,KAAKutK,WAAWvtK,KAAK6xJ,WAAYnQ,EAAO77J,MAAQ,KACnF,IAAKk9F,EACD,OAEA/iF,KAAKimK,aAAa3vK,QAAQysF,GAAQ,EAClC/iF,KAAKimK,aAAaxmL,KAAKsjG,GAGvB/iF,KAAKimK,aAAap/I,OAAO7mB,KAAKimK,aAAa3vK,QAAQysF,GAAO,EAElE,CACJ,EACAsiF,EAAUhmK,UAAU+7K,sBAAwB,SAAUH,EAAUV,GAC5Dv6K,KAAKqQ,OAAOylB,QAAQzC,EAAAA,IAAuB,CACvC13C,QAAS4+L,EAAYjV,mBAAoBtlK,KAAKqQ,OAAOyiI,wBACrD30G,OAAQ88I,IAEPj7K,KAAKqQ,OAAO8+H,SACbnvI,KAAKkuK,cAAgB,KAE7B,EACA7I,EAAUhmK,UAAU87K,yBAA2B,WAC3C,GAAIn7K,KAAKqQ,OAAO85J,sBAAwBnqK,KAAKqQ,OAAOykG,sBAAwB90G,KAAKqQ,OAAO0kG,0BACpF/0G,KAAKinK,sBAAwBjnK,KAAKqQ,OAAOqxG,gBAAgBpL,cAAgB3oG,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAOh3B,aACpG2mB,KAAKqQ,OAAOh3B,WAAW+F,SACvB4gB,KAAKqQ,OAAO0+H,kBAAkB86B,kBACA,YAA7B7pK,KAAKqQ,OAAO+8J,aAEZ,IADA,IACS7+J,EAAK,EAAGktK,EADJz7K,KAAKqQ,OAAOsxI,gBAAgBxjK,QAAO,SAAU1C,GAAK,OAAOA,EAAE8tL,YAAc,IAClDh7J,EAAKktK,EAASxjM,OAAQs2B,IAAM,CAC5D,IAAI2tD,EAAMu/G,EAASltK,GACnBvO,KAAKslK,mBAAmB7lL,KAAKy8E,EAAIp1E,MACrC,CAGZ,EACAu+K,EAAUhmK,UAAUq8K,uBAAyB,SAAU50L,GACnD,GAAIkZ,KAAKqQ,OAAO85J,sBAAwBnqK,KAAKqQ,OAAOykG,sBAAwB90G,KAAKqQ,OAAO0kG,4BAC/E/0G,KAAKqQ,OAAOqxG,gBAAgBpL,cAAgB3oG,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAOh3B,aACxE2mB,KAAKqQ,OAAOh3B,WAAW+F,UAC1B4gB,KAAKinK,mBACT,GAAiC,UAA7BjnK,KAAKqQ,OAAO+8J,aAA0B,CACtCptK,KAAKslK,mBAAqB,GAE1B,IADA,IAAIvJ,EAAa/7J,KAAK0pF,UAAUzxG,OACvB4N,EAAO,EAAGA,EAAOk2K,EAAYl2K,IAClCma,KAAKslK,mBAAmB7lL,KAAKoG,EAErC,MACK,GAAiC,YAA7Bma,KAAKqQ,OAAO+8J,aACjBptK,KAAKslK,mBAAqB,OAEzB,CACD,IAAIppG,EAAMl8D,KAAKqQ,OAAO6/I,cAAcppK,GACpC,GAAIA,GAASo1E,GAA6C,UAAtCA,EAAI96B,aAAa,iBAA8B,CAC/D,IAAIu6I,EAAc37K,KAAKslK,mBAAmBhvK,QAAQxP,GAClDkZ,KAAKslK,mBAAmBz+I,OAAO80J,EAAa,EAChD,CACJ,CAER,EACAtW,EAAUhmK,UAAUu8K,cAAgB,SAAU1qH,GAC1C,GAAIlxD,KAAKqQ,OAAOqxG,gBAAgBpL,cACvB3oG,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAOh3B,aAAe2mB,KAAKqQ,OAAOh3B,WAAW+F,OACzE,OAAO4gB,KAAKm6K,2BAA2BliM,UAAY+nB,KAAKqQ,OAAOykG,sBAAwB90G,KAAKqQ,OAAO0kG,wBAC7F/0G,KAAKqQ,OAAOouJ,sBAAwBz+J,KAAKg8J,mBAG/C,GAAIh8J,KAAKinK,mBAAoB,CACzB,GAAIjnK,KAAKqQ,OAAOwkG,aAAe70G,KAAKqQ,OAAO2kG,aAAaz1B,SAAWv/E,KAAKqQ,OAAO2kG,aAAagnD,kBAAmB,CAE3G,IADA,IAAIn2K,EAAOma,KAAKqQ,OAAOy9J,uBACd3oK,EAAI,EAAGA,EAAItf,EAAK5N,OAAQktB,IAAK,CAClC,IAAI49E,EAAO/iF,KAAKutK,WAAWvtK,KAAK6xJ,WAAYhsK,EAAK3G,SAASimB,EAAE/pB,WAAY,MACxE,IAAK4kB,KAAK+lK,iBAAiB,GAAKhjF,GAC5B,OAAO,CAEf,CACA,OAAO,CACX,CAEI,OAAO/iF,KAAK67K,oBAAoB3qH,EAExC,CAGI,IADIrrE,EAAOma,KAAK0pF,UACPvkF,EAAI,EAAGA,EAAItf,EAAK5N,OAAQktB,IAAK,CAC9B49E,EAAO/iF,KAAKutK,WAAWvtK,KAAK6xJ,WAAYhsK,EAAK3G,SAASimB,EAAE/pB,WAAY,MACxE,IAAK4kB,KAAK+lK,iBAAiB,GAAKhjF,GAC5B,OAAO,CAEf,CACA,OAAO,CAGnB,EACAsiF,EAAUhmK,UAAUy8K,iBAAmB,WACnC,IAAK97K,KAAKqQ,OAAOqxG,gBAAgBpL,cAAgB3oG,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAOh3B,aACxE2mB,KAAKqQ,OAAOh3B,WAAW+F,UACtB4gB,KAAKqQ,OAAOumG,eAAe53H,IAAI/G,QAAU+nB,KAAKqQ,OAAOlnB,eAAeirH,QAAQn8H,QAEhF,IADA,IAAImiM,EAA+Bp6K,KAAKm6K,2BAC/Bh1K,EAAI,EAAGA,EAAIi1K,EAA6BniM,OAAQktB,IAAK,CAC1D,IAAI49E,EAAO/iF,KAAKutK,WAAWvtK,KAAK6xJ,WAAYuoB,EAA6Bl7L,SAASimB,EAAE/pB,WAAY,MAChG,GAAI4kB,KAAK+lK,iBAAiB,GAAKhjF,GAC3B,OAAO,CAEf,CAEJ,IAAIl9F,EAAOma,KAAKinK,mBAAqBjnK,KAAKqQ,OAAOy9J,uBAC1C9tK,KAAKqQ,OAAOqxG,gBAAgBpL,cAAgB3oG,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAOh3B,aACtE2mB,KAAKqQ,OAAOh3B,WAAW+F,OAAW,GAAK4gB,KAAK0pF,UACvD,IAASvkF,EAAI,EAAGA,EAAItf,EAAK5N,OAAQktB,IAAK,CAC9B49E,EAAO/iF,KAAKutK,WAAWvtK,KAAK6xJ,WAAYhsK,EAAK3G,SAASimB,EAAE/pB,WAAY,MACxE,GAAI4kB,KAAK+lK,iBAAiB,GAAKhjF,GAC3B,OAAO,CAEf,CACA,OAAO,CACX,EACAsiF,EAAUhmK,UAAU8uK,iBAAmB,SAAUrnL,EAAOi1L,GACpD,GAAI/7K,KAAKqQ,OAAO85J,qBAAsE,oBAA/CnqK,KAAKqQ,OAAO0+H,kBAAkBi8B,aAAoC,CACrG,IAAIgR,GAAmB,EACnBx7D,GAAa,EACby7D,EAAap9L,OAAOC,KAAKkhB,KAAK+lK,kBAAkB9tL,OAC/C+nB,KAAKqQ,OAAOs4J,qBACbsT,EAAaj8K,KAAKslK,mBAAmBrtL,OACrC+nB,KAAKg8J,kBAAoBh8J,KAAKgpK,+BAA+B/wL,SAE7D+nB,KAAKqQ,OAAOs4J,qBAAyB3oK,KAAKqQ,OAAOqxG,gBAAgBpL,cAC5D3oG,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAOh3B,aAAe2mB,KAAKqQ,OAAOh3B,WAAW+F,SACtE4gB,KAAKinK,qBAAwBjnK,KAAKqQ,OAAOumG,eAAe53H,IAAI/G,SAC5D+nB,KAAKqQ,OAAOlnB,eAAeirH,QAAQn8H,SACtCuoI,GAAa,EACbw7D,EAAmBh8K,KAAK47K,cAAcK,IAE1C,IAAInjL,EAAQkH,KAAKo5K,iBACjB,GAAItgL,EAAO,CACP,IAAIojL,EAAUpjL,EAAMkzD,mBAgDpB,IA/CA70B,EAAAA,EAAAA,IAAY,CAAC+kJ,GAAU,CAAC,UAAW,SAAU,eAC7CjO,EAAAA,EAAAA,IAAWn1K,GAAO,GAClBA,EAAM4vD,eAAgB,EACjBszH,GAAoBx7D,IAAexgH,KAAKqQ,OAAOqxG,gBAAgBpL,cAC9D3oG,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAOh3B,aAAe2mB,KAAKqQ,OAAOh3B,WAAW+F,QACtE4gB,KAAK0pF,UAAUzxG,UAAcuoI,IAAgBy7D,IAAej8K,KAAKg8J,mBAAqBh8J,KAAKg8J,oBACvFh8J,KAAKinK,uBAAyBjnK,KAAKqQ,OAAOqxG,gBAAgBpL,cACzD3oG,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAOh3B,aAAe2mB,KAAKqQ,OAAOh3B,WAAW+F,SACtE4gB,KAAKqQ,OAAOwkG,eACb70G,KAAKqQ,OAAOykG,uBAAyB90G,KAAKqQ,OAAO0kG,yBAC5C/0G,KAAKinK,qBAAuBjnK,KAAK67K,oBAAoBI,IAAej8K,KAAKqmK,yBAC3ErmK,KAAKqQ,OAAOykG,sBAAwB90G,KAAKqQ,OAAO0kG,2BAC7C/0G,KAAKqQ,OAAOwkG,gBAAmB70G,KAAKqQ,OAAOqxG,gBAAgBpL,cAC1D3oG,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAOh3B,aAAe2mB,KAAKqQ,OAAOh3B,WAAW+F,SACzE4gB,KAAK0pF,UAAUzxG,QAAUgkM,IAAej8K,KAAK0pF,UAAUzxG,SAAa+nB,KAAKqQ,OAAOqxG,gBAAgBpL,cAC3F3oG,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAOh3B,aAAe2mB,KAAKqQ,OAAOh3B,WAAW+F,UACxE4gB,KAAKinK,qBAAwBgV,IAAej8K,KAAKqQ,OAAOouJ,uBAA2Bz+J,KAAK67K,oBAAoBI,KAC5Gj8K,KAAKqQ,OAAOs4J,qBACZ3oK,KAAKinK,qBAAuBjnK,KAAKqmK,uBAAyBrmK,KAAK67K,oBAAoBI,QACxFxlJ,EAAAA,EAAAA,IAAS,CAACylJ,GAAU,CAAC,aACrBjO,EAAAA,EAAAA,IAAWn1K,GAAO,GACdijL,GACA/7K,KAAKo7J,cAAcvoF,aAAa,MAAM,GAAM,GAEhD7yE,KAAKqQ,OAAO+8J,aAAe,WAEnBptK,KAAKslK,mBAAmBrtL,UAAY+nB,KAAKqQ,OAAOykG,uBACtD90G,KAAKmmK,oBAAoBluL,SAAWuoI,GAAgBA,GAAcxgH,KAAK87K,qBAC1D,IAAfG,GAAmE,IAA/Cj8K,KAAKgpK,+BAA+B/wL,UAAkB+nB,KAAKqQ,OAAOwkG,aACrF70G,KAAKqQ,OAAOwkG,cAA+B,IAAfonE,GAAqBA,GAAcz7D,GAAcxgH,KAAK87K,sBACnFrlJ,EAAAA,EAAAA,IAAS,CAACylJ,GAAU,CAAC,cACjBH,GACA/7K,KAAKo7J,cAAcvoF,aAAa,MAAM,GAAO,GAEjD7yE,KAAKqQ,OAAO+8J,aAAe,aAG3B32I,EAAAA,EAAAA,IAAS,CAACylJ,GAAU,CAAC,WACrBl8K,KAAKqQ,OAAO+8J,aAAe,eAC3Bt0K,EAAM4vD,eAAgB,GAEP,IAAfuzH,GAAmE,IAA/Cj8K,KAAKgpK,+BAA+B/wL,QACxDw+C,EAAAA,EAAAA,IAAS,CAACylJ,EAAQjjI,eAAgB,CAAC,yBAGnC9hB,EAAAA,EAAAA,IAAY,CAAC+kJ,EAAQjjI,eAAgB,CAAC,wBAEtCj5C,KAAKinK,mBAEY,IADFjnK,KAAKqQ,OAAOsxI,gBAAgBxjK,QAAO,SAAU1C,GAAK,OAAOA,EAAE8tL,YAAc,IAAGtxL,QACrEikM,EAAQjjI,cAAc1mC,cAAc,YAAYqkB,UAAUM,SAAS,cACrFT,EAAAA,EAAAA,IAAS,CAACylJ,EAAQjjI,eAAgB,CAAC,yBAGnC9hB,EAAAA,EAAAA,IAAY,CAAC+kJ,EAAQjjI,eAAgB,CAAC,yBAGzCj5C,KAAKqQ,OAAOykG,uBAAwB90G,KAAKqQ,OAAO0kG,yBAC7C/0G,KAAKqQ,OAAOwkG,aAAiB70G,KAAKqQ,OAAOqxG,gBAAgBpL,cACxD3oG,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAOh3B,aAAe2mB,KAAKqQ,OAAOh3B,WAAW+F,QACzE4gB,KAAK07K,uBAAuB50L,EAEpC,CACJ,CACJ,EACAu+K,EAAUhmK,UAAUw8K,oBAAsB,SAAU3qH,GAChD,IAAIirH,EAAW,EACXz6B,EAAS1hJ,KAAKqQ,OAAOsxI,gBACzB,OAAI3hJ,KAAKqQ,OAAO0+H,kBAAkB86B,mBAAqB7pK,KAAKqQ,OAAOykG,sBAAwB90G,KAAKqQ,OAAO0kG,0BACpF/0G,KAAKqQ,OAAOqxG,gBAAgBpL,cAAgB3oG,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAOh3B,aAClF2mB,KAAKqQ,OAAOh3B,WAAW+F,OAC1B4gB,KAAKqQ,OAAOouJ,sBAAwBz+J,KAAK0pF,WAAa1pF,KAAK0pF,UAAUzxG,UACzDypK,EAAOzpK,UACnBkkM,EAAWz6B,EAAOvjK,QAAO,SAAU1C,GAAK,OAAOA,EAAE8tL,YAAc,IAAGtxL,SAC/Ci5E,IAAUirH,GAO7Bn8K,KAAKqQ,OAAOwkG,aAAe70G,KAAKqQ,OAAO0+H,kBAAkB86B,kBACzDsS,EAAWn8K,KAAKqQ,OAAOy9J,uBAAuB71L,OAAS+nB,KAAKqQ,OAAOoqK,uBAAuBxiM,UACzE+nB,KAAKg8J,oBACXh8J,KAAKqQ,OAAOy9J,uBAAuB71L,QAAUi5E,IAAUlxD,KAAKqQ,OAAOy9J,uBAAuB71L,SAOrGkkM,EAAWz6B,EAAOvjK,QAAO,SAAU1C,GAAK,OAAOA,EAAE8tL,YAAc,IAAGtxL,SAC/Ci5E,IAAUirH,CAGzC,EACA9W,EAAUhmK,UAAU65K,eAAiB,SAAUz9L,KAEd,WAAtBm3C,EAAAA,GAAQyB,KAAKj8C,MAA6C,WAAtBw6C,EAAAA,GAAQyB,KAAKj8C,QAAsC,KAAdqD,EAAEu+D,SAAgC,KAAdv+D,EAAEu+D,UAC3E,UAAtBpnB,EAAAA,GAAQyB,KAAKj8C,MAAkC,KAAdqD,EAAEu+D,SAA0C,YAAtBpnB,EAAAA,GAAQyB,KAAKj8C,MAAoC,MAAdqD,EAAEu+D,WAC7Fh6C,KAAK2mK,eAAgB,GAEzB,IAAIyV,GAAiBz2D,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,gBACxCk+I,GAAgB12D,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ0/E,EAAAA,KAC1Bu+D,EAAiBA,EAAexkM,SAAS,GAAGg/C,UAAUM,SAAS,wBAC5EmlJ,GAAgBA,EAAczlJ,UAAUM,SAAS,mBAClCl3B,KAAKqQ,OAAO8oK,eAA+B,KAAd19L,EAAEu+D,SAC9Cv+D,EAAEi1D,gBAEV,EACA20H,EAAUhmK,UAAUqqD,aAAe,SAAUjuE,KACZ,WAAtBm3C,EAAAA,GAAQyB,KAAKj8C,MAA6C,WAAtBw6C,EAAAA,GAAQyB,KAAKj8C,QAAsC,KAAdqD,EAAEu+D,SAAgC,KAAdv+D,EAAEu+D,UAC3E,UAAtBpnB,EAAAA,GAAQyB,KAAKj8C,MAAkC,KAAdqD,EAAEu+D,SAA0C,YAAtBpnB,EAAAA,GAAQyB,KAAKj8C,MAAoC,MAAdqD,EAAEu+D,WAC7Fh6C,KAAK2mK,eAAgB,EAE7B,EACAtB,EAAUhmK,UAAUspD,aAAe,SAAUltE,GACzC,IAAI0iD,EAAS1iD,EAAE0iD,OACfn+B,KAAK2qK,aAAexsI,EAChBn+B,KAAK+uI,kBAAkB86B,mBACvB7pK,KAAKomK,gBAAiBp4B,EAAAA,EAAAA,IAAchuI,KAAKmmK,wBAEzCxgD,EAAAA,EAAAA,IAAaxnF,EAAQ0/E,EAAAA,MAAiB8H,EAAAA,EAAAA,IAAaxnF,EAAQ,uBAC1Dn+B,KAAK+uI,kBAAkBC,sBAAwB7wG,EAAOvH,UAAUM,SAAS,mBAC1El3B,KAAK/M,cAAe,GAExB+M,KAAK2lK,mBAAqBlqL,EAAE6+D,SAAWt6C,KAAK4lK,wBACvC5lK,KAAKi5K,SAAWj5K,KAAK2mK,cACrB3mK,KAAKqQ,OAAO8oK,cAKbn5K,KAAK0lK,oBAAsBjqL,EAAE++D,UAJ7Bx6C,KAAK0lK,qBAAsB,EAC3B1lK,KAAK2lK,oBAAqB,GAK9B3lK,KAAK6uI,kBAAkBpzJ,GACvB,IAEIw/L,EAFAqB,GAAY,EAChBt8K,KAAKilG,cAAe,EAEpB,IAAIs3E,GAAY52D,EAAAA,EAAAA,IAAaxnF,EAAQ,sBAiBrC,GAhBAn+B,KAAKuuK,yBAAwBgO,GAAaA,EAAU/3I,uBAAuB,qBACtExkC,KAAK+uI,kBAAkB86B,mBAAoBlkD,EAAAA,EAAAA,IAAaxnF,EAAQ0/E,EAAAA,KACjE79G,KAAK+uI,kBAAkB86B,kBAAoB7pK,KAAKinK,qBAAsBthD,EAAAA,EAAAA,IAAaxnF,EAAQ,wBACvFA,EAAO5rB,cAAc,0BACzBvS,KAAKqmK,uBAAwB,GAE7BkW,GAAaA,EAAUzrK,iBAAiB,oCAAoC74B,OAAS,IACrFgjM,EAAWsB,EAAUhqK,cAAc,0BACnC+pK,GAAY,GAEhBt8K,KAAKm0K,cACLn0K,KAAK83K,yBACL35I,GAASwnF,EAAAA,EAAAA,IAAaxnF,EAAQ0/E,EAAAA,IAC1B79G,KAAKqQ,OAAOyrF,SAAY39D,IAAWA,EAAO8a,eAAiB9a,EAAOvH,UAAUM,SAAS,eACrFiH,EAASn+B,KAAKqQ,OAAOigK,iBAAiBpxL,SAASi/C,EAAOiD,aAAa,SAAU,IAAKliD,SAASi/C,EAAOiD,aAAa,iBAAkB,OAE/HjD,GAAUA,EAAO8a,cAAcriB,UAAUM,SAAS2mF,EAAAA,MAAkB79G,KAAKqQ,OAAO0+H,kBAAkB69B,cAAiB0P,KACjHt8K,KAAKgnK,kBAAmB,CAK5B,GAJIhnK,KAAKqQ,OAAO85J,sBACZnqK,KAAK2lK,oBAAqB,GAE9B3lK,KAAKm+B,OAASA,GACTxwB,EAAAA,EAAAA,IAAkBstK,GASlB,CACD,IAAItnE,EAAO3zG,KAAKqQ,OACZirK,EAAS,EACb,IAAI9mE,EAAAA,EAAAA,IAAgBb,GAAO,CACvB,IAAIznG,EAAMiyB,EAAO8a,cAAc7X,aAAa,YAC5Ck6I,EAAS3nE,EAAKg5C,UAAU7sK,KAAI,SAAU43B,GAAK,OAAOA,EAAE0pB,aAAa,WAAa,IAAG9qC,QAAQ4V,EAC7F,MAEIovK,EAASp8L,SAASi/C,EAAO8a,cAAc7X,aAAay8E,EAAAA,IAAwB,IAE5E79G,KAAKqQ,OAAOs4J,oBAAsB3oK,KAAKqQ,OAAOrtB,QAAQwhD,uBAAuBq5E,EAAAA,IAAmB5lI,OAAS,KACvGqjM,EAEDt7K,KAAK43K,WAAc53K,KAAK43K,UAAU4E,YAAYr+I,IAC/Cn+B,KAAKu7K,wBAAwBD,EAAQp8L,SAASi/C,EAAOiD,aAAay8E,EAAAA,IAAwB,KAE9F79G,KAAKqQ,OAAOosK,gBAAgBhhM,GACxBukB,KAAKqQ,OAAO85J,sBACZnqK,KAAKw7K,2BAA0BpiJ,EAAAA,EAAAA,IAAQ+E,EAAQ,IAAM0/E,EAAAA,KACrD79G,KAAKmuK,mBAEb,MA7BInuK,KAAKkuK,cAAgB+M,EACjBA,EAASrkJ,UAAUM,SAAS,oBAC5Bl3B,KAAKg7K,eAAeC,GAGpBj7K,KAAKq7K,YAAYJ,GAyBpBj7K,KAAKqQ,OAAO85J,sBAAuBv3I,EAAAA,GAAQY,UAAaxzB,KAAKusK,eAC9DvsK,KAAKypG,UAAUhuH,EAEvB,MACK,GAAIA,EAAE0iD,OAAOvH,UAAUM,SAAS,kBAChCz7C,EAAE0iD,OAAOvH,UAAUM,SAAS,uBAAwB,CACjDhrB,EAAMzwB,EAAE0iD,OAAO5rB,cAAc,oBAAoB6uB,aAAa,gBAClEphC,KAAK08K,uBAAuB18K,KAAKqQ,OAAOu+I,oBAAoB1iJ,GAChE,CACAlM,KAAK2lK,oBAAqB,EAC1B3lK,KAAK0lK,qBAAsB,GACvB/3J,EAAAA,EAAAA,KAAkByrB,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,qBACpCn+B,KAAKilG,cAAe,EAE5B,EACAogE,EAAUhmK,UAAUwvI,kBAAoB,SAAUpzJ,GAC9C,IAAI0iD,EAAS1iD,EAAE0iD,QACX/E,EAAAA,EAAAA,IAAQ+E,EAAQ,kBAAoB1iD,EAAE0iD,OAAOvH,UAAUM,SAAS2mF,EAAAA,MAChEzkF,EAAAA,EAAAA,IAAQ+E,EAAQ,gBACZA,EAAOvH,UAAUM,SAAS,iBACrBiH,EAAOvH,UAAUM,SAAS,kBAK3BiH,EAAOvH,UAAUjB,OAAO,iBACxB31B,KAAK4lK,wBAAyB,EAC9B5lK,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,gBAAgBglB,MAAMuiB,QAAU,SANlE3b,EAAOvH,UAAUzB,IAAI,iBACrBn1B,KAAK4lK,wBAAyB,IAUtC5lK,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,gBAAgBglB,MAAMuiB,QAAU,MAE1E,EACAurH,EAAUhmK,UAAUoqG,UAAY,SAAUhuH,GACjCukB,KAAK+uI,kBAAkBo6B,gCACxB35B,EAAAA,EAAAA,IAAkBxvI,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,gBAAiB92B,EAAG,yCAClEukB,KAAKusK,gBAAkBvsK,KAAK6yI,gBAAgB56J,QAAU+nB,KAAKqQ,OAAO26H,mBAAqB,EAAI,IACtFhrI,KAAKulK,uBAAuBttL,OAAS,GAAK,iBAAmB,IAEhF,EACAotL,EAAUhmK,UAAUk8K,wBAA0B,SAAUtkB,EAAUkR,IACxDnoK,KAAK2lK,qBAAuB3lK,KAAK0lK,qBAAwB1lK,KAAKusK,eAC3DvsK,KAAKguC,WACNhuC,KAAKkpK,UAAUjS,EAAUj3J,KAAK+uI,kBAAkBi+B,cAEpDhtK,KAAKmwK,WAAW,CAAElZ,SAAUA,EAAUkR,UAAWA,GAAanoK,KAAK+uI,kBAAkBi+B,cACjFhtK,KAAKulK,uBAAuBttL,QAC5B+nB,KAAK83K,yBAET93K,KAAKm0K,eAEAn0K,KAAK0lK,qBACN1lK,KAAKqQ,OAAO85J,sBAAyBnqK,KAAKqQ,OAAO85J,uBAChD/wI,EAAAA,EAAAA,IAAQp5B,KAAKm+B,OAAQ,IAAM0/E,EAAAA,IAAkBjnF,UAAUM,SAAS2mF,EAAAA,IACjE79G,KAAKgsK,mBAAkBx+J,EAAAA,EAAAA,IAAYxN,KAAKyqK,cAAgBxT,EAAWj3J,KAAKyqK,aAAcxT,GAGtFj3J,KAAKopK,mBAAmB,CAACnS,IAE7Bj3J,KAAKkxK,oBAAmB1jK,EAAAA,EAAAA,IAAYxN,KAAK0uK,WAAa,CAAEzX,SAAUA,EAAUkR,UAAWA,GAAcnoK,KAAK0uK,UAAW,CAAEzX,SAAUA,EAAUkR,UAAWA,IACtJnoK,KAAK83K,yBACL93K,KAAKm0K,gBAGLn0K,KAAKopK,mBAAmB,CAACnS,IACzBj3J,KAAK8xK,oBAAoB,CAAC,CAAE7a,SAAUA,EAAUkR,UAAWA,KAC3DnoK,KAAKgzK,gBAAgB,SAEzBhzK,KAAKguC,WAAY,CACrB,EACAq3H,EAAUhmK,UAAUw5K,cAAgB,SAAUp9L,GAC1C,GAAIukB,KAAKqQ,OAAOm3I,YAAc/rK,EAAEulF,UAAU63B,UAAYp9G,EAAEgrK,MACpD,GAAyB,YAArBhrK,EAAEirK,QAAQzjJ,OACNjD,KAAKqQ,OAAOnnB,eACZzN,EAAEkhM,OAA+B,UAAtBlhM,EAAEuH,QAAQmzC,QAGrB16C,EAAEkhM,OAA+B,OAAtBlhM,EAAEuH,QAAQmzC,aAIzB,GAAyB,cAArB16C,EAAEirK,QAAQzjJ,OAAwB,CAClC,IAAIguK,EAAO33L,OAAOmC,EAAEuH,QAAQi2D,cAAc7X,aAAay8E,EAAAA,KACvDpiI,EAAEkhM,OAAkB,IAAT1L,CACf,KAE6B,aAArBx1L,EAAEirK,QAAQzjJ,SACVxnB,EAAEkhM,QAAS,GAK3B,IAAIrhL,EAAQ0E,KAAKqQ,OAAOyxH,gBAAoBrmJ,EAAEulF,UAAU63B,UAAkC,OAAtBp9G,EAAEuH,QAAQmzC,SAAoB16C,EAAEkhM,SAC/F38K,KAAK+uI,kBAAkBC,uBACtBvzJ,EAAEulF,UAAU47G,WAAmC,OAAtBnhM,EAAEuH,QAAQmzC,YAAuB16C,EAAEulF,UAAUuoG,cAAsC,OAAtB9tL,EAAEuH,QAAQmzC,aAC7F16C,EAAEgrK,OAA8B,UAArBhrK,EAAEirK,QAAQzjJ,SAAyBxnB,EAAEulF,UAAU63B,UAAYp9G,EAAEkhM,QAC5ElhM,EAAEulF,UAAU47G,YAAcnhM,EAAEulF,UAAUuoG,iBAAoB9tL,EAAEgrK,OAA8B,UAArBhrK,EAAEirK,QAAQzjJ,WAC3ExnB,EAAEuH,QAAQ4zC,UAAUM,SAAS,sBAAwBz7C,EAAEuH,QAAQ4zC,UAAUM,SAAS,wBACvF2lJ,EAAgBphM,EAAEulF,UAAU63B,UAAkC,OAAtBp9G,EAAEuH,QAAQmzC,WAAqBiD,EAAAA,EAAAA,IAAQ39C,EAAEuH,QAAS,IAAM66H,EAAAA,OAC3FpiI,EAAEgrK,OAA8B,UAArBhrK,EAAEirK,QAAQzjJ,QAC9B,GAAKxnB,EAAEgrK,QAASnrJ,EAAhB,CAMA,IAAItV,EAAKvK,EAAEulF,UAAU47G,UAAYnhM,EAAEulF,UAAU8gF,QAAUrmK,EAAEqmK,QAASmV,EAAWjxK,EAAG,GAAImiL,EAAYniL,EAAG,GAC/F82L,EAAO98K,KAAKyR,MAAM28J,iBACtB,GAAIpuK,KAAKqQ,OAAOm3I,WACZ,GAAI/rK,EAAEulF,UAAU63B,WAAmC,OAAtBp9G,EAAEuH,QAAQmzC,UAAoBiD,EAAAA,EAAAA,IAAQ39C,EAAEuH,QAAS,IAAM66H,EAAAA,KAAoB,CACpG,IAAIk/D,EAAQ/8K,KAAKqQ,OAAOszH,iBAAiBpxH,cAAc,SAASgsF,kBAChE04D,GAAY8lB,EACZD,EAAK7lB,UAAYtpJ,EAAAA,EAAAA,IAAkBmvK,EAAK7lB,UAAoC,KAAxB6lB,EAAK7lB,SAAW8lB,CACxE,MAEI9lB,GAAYj3J,KAAKqQ,OAAOm3I,WACxBs1B,EAAK7lB,SAA6B,IAAlB6lB,EAAK7lB,WAAmBtpJ,EAAAA,EAAAA,IAAkBmvK,EAAK7lB,UAAqD,KAAzC6lB,EAAK7lB,SAAWj3J,KAAKqQ,OAAOm3I,WAG/G,GAAIxnJ,KAAKqQ,OAAOyxH,eAAgB,CAC5B,IAAIt6C,EAAOluG,OAAOmC,EAAEuH,QAAQo+C,aAAay8E,EAAAA,KACrCm/D,EAAkBh9K,KAAKqQ,OAAO4sK,4BAC9BD,EAAgB/kM,QAA6B,IAAnB6kM,EAAK3U,YAC/B2U,EAAK3U,UAAY6U,EAAgBA,EAAgB/kM,OAAS,GAAGk5L,YAAY,IAE7E2L,EAAK3U,WAAax6J,EAAAA,EAAAA,IAAkBmvK,EAAK3U,WAAgE,KAAlD2U,EAAK3U,YAAcA,EAAY3gF,EAAOA,EAAO,EACpG2gF,EAAY3gF,CAChB,CAIA,GAHIxnF,KAAKqQ,OAAO0kG,yBAA2B/0G,KAAKqQ,OAAO80I,uBAAuBC,cAC1E6R,EAAW/3K,SAASzD,EAAEuH,QAAQi2D,cAAc7X,aAAa,iBAAkB,OAE1Ey7I,IAAwE,IAAvD,CAAC,YAAa,UAAUvmL,QAAQ7a,EAAEirK,QAAQzjJ,SACvC,UAArBxnB,EAAEirK,QAAQzjJ,QAAsBg0J,IAAa6lB,EAAK7lB,UAAYkR,IAAc2U,EAAK3U,YAChFnoK,KAAK+uI,kBAAkBC,qBAF5B,CAKAhvI,KAAKilG,cAAe,EACpB,IAAIi4E,EAAcl9K,KAAKm9K,eAAe1hM,GAItC,GAHIukB,KAAKsmK,sBACL6B,EAAY+U,GAEZl9K,KAAKqQ,OAAOrtB,QAAQ4zC,UAAUM,SAAS,qBAA4C,QAArBz7C,EAAEirK,QAAQzjJ,QAAyC,aAArBxnB,EAAEirK,QAAQzjJ,QAC9E,eAArBxnB,EAAEirK,QAAQzjJ,QAAgD,cAArBxnB,EAAEirK,QAAQzjJ,QAAyB,CAC3E,IAAIm6K,EAAcp9K,KAAKm+B,OAAOiD,aAAa,cAC3Cg8I,EAAcp9K,KAAKm+B,OAAO5sB,UAAY,kBAAoBvR,KAAKqQ,OAAO2/J,iBAAiB7H,GAAWvmL,MAClGoe,KAAKm+B,OAAO7H,aAAa,aAAc8mJ,EAC3C,CACA,OAAQ3hM,EAAEirK,QAAQzjJ,QACd,IAAK,YACL,IAAK,UACL,IAAK,QACL,IAAK,aACDjD,KAAKm+B,OAAS1iD,EAAEuH,QAChBgd,KAAKygE,aAAc,EACnBzgE,KAAKq9K,eAAepmB,EAAUkR,GAC9B,MACJ,IAAK,aACL,IAAK,YACDnoK,KAAKs9K,kBAAkBrmB,EAAUkR,GACjC,MACJ,IAAK,YACL,IAAK,UACDnoK,KAAKu9K,aAAatmB,EAAUkR,GAC5B,MACJ,IAAK,YACL,IAAK,aACDnoK,KAAKw9K,uBAAuBvmB,EAAUkR,GACtC,MACJ,IAAK,OACL,IAAK,MACDA,EAAiC,QAArB1sL,EAAEirK,QAAQzjJ,OAAmBjD,KAAKuxK,gBAAgBta,GAAY,EAC1Ej3J,KAAKy9K,gBAAgBxmB,EAAUkR,GAC/B,MACJ,IAAK,WACL,IAAK,UACDnoK,KAAK09K,oBAAoBzmB,EAAUkR,GACnC,MACJ,IAAK,SACDnoK,KAAKuoK,iBACL,MACJ,IAAK,YACDvoK,KAAK29K,YACL,MACJ,IAAK,QACD39K,KAAK49K,oBAAoBniM,EAAEuH,SAC3B,MACJ,IAAK,MACGgd,KAAKqQ,OAAO6iI,aAAa2qC,kBACzB79K,KAAKkpK,UAAUjS,GAI3Bj3J,KAAKsmK,qBAAsB,EAC3BtmK,KAAKilG,cAAe,EACpBjlG,KAAKq0K,kBACLr0K,KAAK83K,wBA5DL,CA9BA,MAJQx8K,IAAU0E,KAAKqQ,OAAO85J,qBACtBnqK,KAAKuoK,gBA8FjB,EACAlD,EAAUhmK,UAAU89K,eAAiB,SAAU1hM,GAC3C,IAAIywB,EACAplB,EAAQ,KACRg3L,EAAgBriM,EAAEuH,QAAQuvB,cAAc,2BAC5C,GAAIvS,KAAK+uI,kBAAkBC,uBAAwBrpB,EAAAA,EAAAA,IAAalqI,EAAEuH,QAAS,kBAEvE,GADAgd,KAAKsmK,sBAAsB7qL,EAAEulF,UAAU63B,SACnCilF,EAAe,CACf,GAAyB,eAArBriM,EAAEirK,QAAQzjJ,QAAgD,cAArBxnB,EAAEirK,QAAQzjJ,OAC/C,OAAOnc,EAEXolB,EAAM4xK,EAAc18I,aAAa,gBACjC,IAAI28I,EAAc/9K,KAAKg+K,kBAAkBh+K,KAAKqQ,OAAOunG,eAAe1rG,GAAKkoG,SACrE6pE,EAAYj+K,KAAKqQ,OAAOu+I,oBAAoBmvB,EAAYA,EAAY9lM,OAAS,GAAGi0B,KAChFgyK,EAAal+K,KAAKqQ,OAAOu+I,oBAAoBmvB,EAAY,GAAG7xK,KAChEplB,EAAQkZ,KAAKs5K,cAAgB2E,EAAYC,EAAaD,CAC1D,MAEIn3L,EAAQkZ,KAAKqQ,OAAOu+I,oBAAoBnzK,EAAEuH,QACrCuvB,cAAc,oBAAoB6uB,aAAa,iBAG5D,OAAOt6C,CACX,EAOAu+K,EAAUhmK,UAAUs+K,UAAY,WACxB39K,KAAKgqK,cAAgBhqK,KAAKusK,eAC1BvsK,KAAKgsK,kBAAkB,EAAGhsK,KAAKgpK,+BAA+B/wL,OAAS,GAEvE+nB,KAAKowK,eAAiBpwK,KAAKusK,eAC3BvsK,KAAKkxK,mBAAmB,CAAEja,SAAU,EAAGkR,UAAW,GAAK,CAAElR,SAAUj3J,KAAKqQ,OAAOs8I,UAAU10K,OAAS,EAAGkwL,UAAWnoK,KAAKqQ,OAAO4jG,aAAah8H,OAAS,GAE1J,EACAotL,EAAUhmK,UAAUu+K,oBAAsB,SAAUz/I,GAC5CA,EAAOvH,UAAUM,SAAS,qBAC1Bl3B,KAAKkuK,cAAgB/vI,EACrBn+B,KAAKg7K,eAAeh7K,KAAKkuK,gBAGrB/vI,EAAOvH,UAAUM,SAAS,mBAC1Bl3B,KAAKkuK,cAAgB/vI,EACrBn+B,KAAKq7K,YAAYr7K,KAAKkuK,eAGlC,EACA7I,EAAUhmK,UAAUg+K,eAAiB,SAAUpmB,EAAUkR,GACrD,IAAIx0D,EAAO3zG,KAAKqQ,QACZrQ,KAAKqQ,OAAO85J,qBAAoD,UAA7BnqK,KAAKqQ,OAAO+8J,cAA6BptK,KAAK+uI,kBAAkB86B,kBAClG7pK,KAAK+uI,kBAAkB69B,eACxB5sK,KAAK66K,sBAAqB,GAC1B76K,KAAKkuK,cAAgB,MAErBluK,KAAKgqK,cAAgBhqK,KAAK+uI,kBAAkB69B,eACxC5sK,KAAKqQ,OAAOm3I,WACZxnJ,KAAKkpK,UAAUjS,GAAU,GACzBj3J,KAAKm+K,YAAYxqE,EAAK8lE,mBAO1Bz5K,KAAKowK,cACLpwK,KAAKmwK,WAAW,CAAElZ,SAAUA,EAAUkR,UAAWA,IAAa,GAE9DnoK,KAAK+uI,kBAAkBC,sBAAwBhvI,KAAKsmK,qBACpDtmK,KAAKo+K,aAAajW,EAE1B,EACA9C,EAAUhmK,UAAU8+K,YAAc,SAAUlnB,GACxC,KAAIA,EAAW,GAAf,CAGKj3J,KAAKm+B,SACNn+B,KAAKm+B,OAASn+B,KAAKqQ,OAAOs8I,UAAU,GAAG/0K,SAASooB,KAAKqQ,OAAOolG,cAAcrB,QAAQn8H,QAAU,IAEhG,IAAIomM,EAASn/L,SAAS8gB,KAAKm+B,OAAOiD,aAAay8E,EAAAA,IAAwB,IACnEyqC,EAAUtoJ,KAAKqQ,OAAO26H,mBAC1B,GAAIsd,EAEItoJ,KAAKm+B,OADLkgJ,GAAU/1B,EAENtoJ,KAAKq7J,gBAAgB/K,qBAAqB2G,GAAUzyH,uBAAuBq5E,EAAAA,IAAkBwgE,EAAS/1B,GAG5FtoJ,KAAKq7J,gBAAgBnL,cAAc+G,GAC5CzyH,uBAAuBq5E,EAAAA,IAAkB3+H,SAASm/L,EAAOjjM,WAAY,SAG7E,CACD,IAAI8gF,EAAMl8D,KAAKq7J,gBAAgBnL,cAAc+G,GACzC/6F,IACAl8D,KAAKm+B,OAAS+9B,EAAI13B,uBAAuBq5E,EAAAA,IAAkB3+H,SAASm/L,EAAOjjM,WAAY,KAE/F,CAEA,GADA4kB,KAAKwxK,aAAaxxK,KAAKm+B,QACnBn+B,KAAKqQ,OAAOrtB,QAAQ4zC,UAAUM,SAAS,mBAAoB,CAC3D,IAAIkmJ,EAAcp9K,KAAKm+B,OAAOiD,aAAa,cAC3Cg8I,EAAcp9K,KAAKm+B,OAAO5sB,UAC1BvR,KAAKm+B,OAAO7H,aAAa,aAAc8mJ,EAC3C,CA3BA,CA4BJ,EACA/X,EAAUhmK,UAAUi+K,kBAAoB,SAAUrmB,EAAUkR,GACpDnoK,KAAK+uI,kBAAkBC,sBAAwBhvI,KAAKsmK,oBACpDtmK,KAAKo+K,aAAajW,GAEbnoK,KAAKowK,eACVpwK,KAAKmwK,WAAW,CAAElZ,SAAUA,EAAUkR,UAAWA,IAAa,GAC9DnoK,KAAKwxK,aAAaxxK,KAAKm+B,QAE/B,EACAknI,EAAUhmK,UAAUo+K,gBAAkB,SAAUxmB,EAAUkR,GAClDnoK,KAAKowK,aACLpwK,KAAKmwK,WAAW,CAAElZ,SAAUA,EAAUkR,UAAWA,IAAa,GAG9DnoK,KAAKwxK,aAAaxxK,KAAKqQ,OAAOigK,iBAAiBrZ,EAAUkR,GAEjE,EASA9C,EAAUhmK,UAAUk+K,aAAe,SAAUtmB,EAAUkR,GACnDnoK,KAAK0lK,qBAAsB,EACvB1lK,KAAKgqK,cAAgBhqK,KAAKusK,iBACrB/+J,EAAAA,EAAAA,IAAYxN,KAAKyqK,cAIbzqK,KAAKinK,mBACVjnK,KAAKkpK,UAAUjS,GAAU,GAGzBj3J,KAAKkpK,UAAU,GAAG,IAPlBlpK,KAAKgsK,kBAAkBhsK,KAAKyqK,aAAcxT,GAC1Cj3J,KAAKm+K,YAAYlnB,KASrBj3J,KAAKowK,eAAiBpwK,KAAKusK,eAC3BvsK,KAAKkxK,mBAAmBlxK,KAAK0uK,WAAa,CAAEzX,SAAU,EAAGkR,UAAW,GAAK,CAAElR,SAAUA,EAAUkR,UAAWA,IAE9GnoK,KAAK0lK,qBAAsB,CAC/B,EACAL,EAAUhmK,UAAUm+K,uBAAyB,SAAUvmB,EAAUkR,GAC7DnoK,KAAK0lK,qBAAsB,EACvB1lK,KAAK+uI,kBAAkBC,sBAAwBhvI,KAAKsmK,oBACpDtmK,KAAKs+K,qBAAqBt+K,KAAKs5K,aAAcnR,GAG7CnoK,KAAKkxK,mBAAmBlxK,KAAK0uK,UAAW,CAAEzX,SAAUA,EAAUkR,UAAWA,IAE7EnoK,KAAK0lK,qBAAsB,CAC/B,EACAL,EAAUhmK,UAAU2+K,kBAAoB,SAAU5+G,GAE9C,IADA,IAAIm/G,EAAqB,GAChBp5K,EAAI,EAAG8L,EAAMmuD,EAAOnnF,OAAQktB,EAAI8L,EAAK9L,IACtCi6D,EAAOlgF,SAASimB,EAAE/pB,WAAY,KAAKg5H,QACnCp0G,KAAKg+K,kBAAkB5+G,EAAOlgF,SAASimB,EAAE/pB,WAAY,KAAKg5H,SAG1DmqE,EAAmB9+L,KAAK2/E,EAAOlgF,SAASimB,EAAE/pB,WAAY,MAG9D,OAAOmjM,CACX,EACAlZ,EAAUhmK,UAAUq+K,oBAAsB,SAAUzmB,EAAUkR,GACtDnoK,KAAKgqK,cACLhqK,KAAKkpK,UAAUjS,GAAU,GACzBj3J,KAAKwxK,aAAaxxK,KAAKqQ,OAAOigK,iBAAiBrZ,EAAUkR,KAEzDnoK,KAAKowK,cACLpwK,KAAKmwK,WAAW,CAAElZ,SAAUA,EAAUkR,UAAWA,IAAa,EAEtE,EACA9C,EAAUhmK,UAAU6tK,uBAAyB,SAAUhxG,EAAK8nG,EAAO79D,GAE/D,IADA,IAAIl4G,EAAO,GACFsgB,EAAK,EAAGA,EAAKlQ,UAAUpmB,OAAQs2B,IACpCtgB,EAAKsgB,EAAK,GAAKlQ,UAAUkQ,GAE7B,GAAI2tD,EAAK,CACL,IAAIimE,EAAQ,GAAG9kI,MAAMqC,KAAKw8D,EAAI13B,uBAAuBq5E,EAAAA,KACjD2gE,EAAmBtiH,EAAI3pD,cAAc,yBAA2B2pD,EAAI3pD,cAAc,sBAClFksK,EAAqBviH,EAAI3pD,cAAc,kBACvCisK,GACAr8C,EAAM1iJ,KAAK++L,GAEXC,GACAt8C,EAAM1iJ,KAAKg/L,GAEfC,EAAAA,GAAuBx/K,WAAM,EAAQ,CAACijI,EAAO6hC,GAAOrjL,OAAOsN,GAC/D,CACA+R,KAAKo7J,cAAcvoF,aAAa3W,EAAMA,EAAI96B,aAAa,YAAc,KAAM4iI,EAAO79D,EACtF,EACAk/D,EAAUhmK,UAAU2qK,UAAY,WAC5B,MAAuC,QAAhChqK,KAAK+uI,kBAAkB3lJ,MAAkD,SAAhC4W,KAAK+uI,kBAAkB3lJ,IAC3E,EACAi8K,EAAUhmK,UAAU+wK,WAAa,WAC7B,MAAuC,SAAhCpwK,KAAK+uI,kBAAkB3lJ,MAAmD,SAAhC4W,KAAK+uI,kBAAkB3lJ,IAC5E,EACAi8K,EAAUhmK,UAAUktK,YAAc,WAC9B,MAAuC,WAAhCvsK,KAAK+uI,kBAAkBz0J,IAClC,EACA+qL,EAAUhmK,UAAU+7J,YAAc,WAI9B,OAHIztJ,EAAAA,EAAAA,IAAkB3N,KAAKq7J,mBACvBr7J,KAAKq7J,gBAAkBr7J,KAAK+nK,QAAQ3M,YAAYzb,EAAAA,GAAW2b,UAExDt7J,KAAKq7J,eAChB,EAMAgK,EAAUhmK,UAAUyqK,mBAAqB,WASrC,OAPK9pK,KAAK+uI,kBAAkB86B,kBAAoB7pK,KAAK6yI,gBAAgB56J,OAClD+nB,KAAKqQ,OAAOsxI,gBAAgBxjK,QAAO,SAAU+9E,GAAO,OAAOA,EAAI8oC,UAAY,IACrFllH,KAAI,SAAU43B,GAAK,OAAOA,EAAE7xB,IAAM,IAGxBma,KAAKmmK,mBAG5B,EAOAd,EAAUhmK,UAAU++K,aAAe,SAAUt3L,GACzC,IAAI6sH,EAAO3zG,KAAKqQ,OAChB,KAAI1C,EAAAA,EAAAA,IAAkBgmG,EAAKM,aAAa/0H,SAAS4H,EAAM1L,WAAY,MAAnE,CAGA,IAAIgkF,EAASu0C,EAAKq8D,iBAAiBlpL,GAC/B63L,EAAchrE,EAAKmkB,qBAAqB14D,EAAOlzD,KAC/C0yK,EAAgBD,EAAY/nJ,UAAUM,SAAS,qBACnD,GAAMy8E,EAAKo7B,kBAAkBC,qBAA7B,CAGA,IAAI6vC,EAAiB7+K,KAAKwlK,uBAAuBvtL,OAAS,GACtD+nB,KAAKwlK,uBAAuBlvK,QAAQxP,IAAU,EAElD,GADAkZ,KAAK8+K,sBACAF,IAAkB5+K,KAAK+uI,kBAAkBi+B,cAAgB6R,EAAgB,CAC1E,IAAI5wL,EAAO,CACPivL,YAAap2L,EAAOi4L,WAAYJ,EAChCv/G,OAAQA,EACR73E,QAAQ,EAAO42C,OAAQn+B,KAAK2qK,aAC5B13K,aAAc+M,KAAK/M,aAAc+rL,oBAAqBh/K,KAAKs5K,aAC3DhP,cAAetqK,KAAK2lK,mBAAoB4E,eAAgBvqK,KAAK0lK,qBAGjE,GADA1lK,KAAKioK,cAAch6K,EAAMolC,EAAAA,KACrBplC,EAAK1G,OAEL,YADAyY,KAAKorK,oBAGHz3D,EAAKo7B,kBAAkBi+B,cAAgBlmL,IAAUkZ,KAAKs5K,cAAgBsF,IAAkBC,GAC1F7+K,KAAKi/K,mBAAmBN,EAAa73L,GAEzC,IAAIo4L,EAAe,CACfhC,YAAap2L,EAAOi4L,WAAYJ,EAChCv/G,OAAQA,EACRjhC,OAAQn+B,KAAK2qK,aACb13K,aAAc+M,KAAK/M,aAAc+rL,oBAAqBh/K,KAAKs5K,cAE/Dt5K,KAAK+9F,iBAAiBmhF,EAAc7rJ,EAAAA,IACxC,CACArzB,KAAKm/K,eAAer4L,EA5BpB,CANA,CAmCJ,EAQAu+K,EAAUhmK,UAAUi/K,qBAAuB,SAAU70K,EAAYwiK,GAC7D,IAAIt4D,EAAO3zG,KAAKqQ,OAChB,KAAI1C,EAAAA,EAAAA,IAAkBgmG,EAAKM,aAAa/0H,SAASuqB,EAAWruB,WAAY,MAAxE,CAGA,IAAI0mK,EAAU,GACd,GAAoC,WAAhCnuC,EAAKo7B,kBAAkBz0J,OAAqBqzB,EAAAA,EAAAA,IAAkBs+J,GAC9DnqB,EAAQ,GAAKr4I,OAIb,IADA,IAAIiX,EAAMjX,EAAawiK,EACd9mK,EAAIsE,EAAYiX,EAAMvb,GAAK8mK,EAAW9mK,GAAK8mK,EAAUvrJ,EAAMvb,IAAMA,IACtE28I,EAAQriK,KAAK0lB,GAGrBnF,KAAKo/K,cAAct9B,EAXnB,CAYJ,EAOAujB,EAAUhmK,UAAU+/K,cAAgB,SAAUC,GAC1C,IAAI1rE,EAAO3zG,KAAKqQ,OACZsuK,EAAc3+K,KAAKs/K,kBAIvB,GAHoC,WAAhC3rE,EAAKo7B,kBAAkBz0J,OACvB+kM,EAAgB,CAACA,EAAc,KAE9B1rE,EAAKo7B,kBAAkBC,qBAA5B,CAGAhvI,KAAK8+K,qBACL,IAAIS,EAAgB,CAChBrC,YAAamC,EAAc,GAAIN,WAAYJ,EAC3CU,cAAeA,EACfjgH,OAAQu0C,EAAKq8D,iBAAiBqP,EAAc,IAC5C93L,QAAQ,EAAO42C,OAAQn+B,KAAK2qK,aAC5B13K,aAAc+M,KAAK/M,aAAc+rL,oBAAqBh/K,KAAKs5K,aAC3DhP,cAAetqK,KAAK2lK,mBAAoB4E,eAAgBvqK,KAAK0lK,qBAGjE,GADA1lK,KAAKioK,cAAcsX,EAAelsJ,EAAAA,KAC9BksJ,EAAch4L,OACdyY,KAAKorK,wBADT,CAIA,IAAK,IAAIjmK,EAAI,EAAG8L,EAAMouK,EAAcpnM,OAAQktB,EAAI8L,EAAK9L,IACjDnF,KAAKi/K,mBAAmBtrE,EAAKmkB,qBAAqBnkB,EAAKq8D,iBAAiBqP,EAAcngM,SAASimB,EAAE/pB,WAAY,MAAM8wB,KAAMmzK,EAAcngM,SAASimB,EAAE/pB,WAAY,MAElKujM,EAAc3+K,KAAKs/K,kBACnB,IAAIJ,EAAe,CACfhC,YAAamC,EAAc,GAAIN,WAAYJ,EAC3CU,cAAeA,EACfjgH,OAAQu0C,EAAKq8D,iBAAiBqP,EAAc,IAC5ClhJ,OAAQn+B,KAAK2qK,aACb13K,aAAc+M,KAAK/M,aAAc+rL,oBAAqBh/K,KAAKs5K,cAE/Dt5K,KAAK+9F,iBAAiBmhF,EAAc7rJ,EAAAA,KACpCrzB,KAAKm/K,eAAeE,EAAc,GAblC,CAdA,CA4BJ,EAOAha,EAAUhmK,UAAUmgL,yBAA2B,SAAU/1K,GACrD,IAAIkqG,EAAO3zG,KAAKqQ,OAChB,KAAI1C,EAAAA,EAAAA,IAAkBgmG,EAAKM,aAAa/0H,SAASuqB,EAAWruB,WAAY,MAAxE,CAGA,IAAIqkM,EAAS9rE,EAAKmkB,qBAAqBnkB,EAAKq8D,iBAAiBvmK,GAAYyC,KACrEyyK,EAAc3+K,KAAKs/K,kBAIvB,GAHoC,WAAhC3rE,EAAKo7B,kBAAkBz0J,MACvB0lB,KAAK8+K,qBAEJnrE,EAAKo7B,kBAAkBC,qBAA5B,CAGA,GAAIhvI,KAAKwlK,uBAAuBlvK,QAAQmT,IAAe,EACnDzJ,KAAKyuK,qBAAqBhlK,OAEzB,CACD,IAAI81K,EAAgB,CAChBrC,YAAazzK,EAAYs1K,WAAYJ,EACrCU,cAAer/K,KAAKwlK,uBACpBpmG,OAAQu0C,EAAKq8D,iBAAiBvmK,GAC9BliB,QAAQ,EAAO42C,OAAQn+B,KAAK2qK,aAC5B13K,aAAc+M,KAAK/M,aAAc+rL,oBAAqBh/K,KAAKs5K,aAC3DhP,cAAetqK,KAAK2lK,mBAAoB4E,eAAgBvqK,KAAK0lK,qBAGjE,GADA1lK,KAAKioK,cAAcsX,EAAelsJ,EAAAA,KAC9BksJ,EAAch4L,OAEd,YADAyY,KAAKorK,oBAGTprK,KAAKi/K,mBAAmBQ,EAAQh2K,GAEhC,IAAIy1K,EAAe,CACfhC,YAAazzK,EAAYs1K,WAF7BJ,EAAc3+K,KAAKs/K,kBAGflgH,OAAQu0C,EAAKq8D,iBAAiBvmK,GAC9B41K,cAAer/K,KAAKwlK,uBACpBrnI,OAAQn+B,KAAK2qK,aACb13K,aAAc+M,KAAK/M,aAAc+rL,oBAAqBh/K,KAAKs5K,cAE/Dt5K,KAAK+9F,iBAAiBmhF,EAAc7rJ,EAAAA,IACxC,CACArzB,KAAKm/K,eAAe11K,EA7BpB,CARA,CAsCJ,EAOA47J,EAAUhmK,UAAUovK,qBAAuB,SAAUiR,GACjD,GAAI1/K,KAAK2/K,iBAAkB,CACvB,IAAIhsE,EAAO3zG,KAAKqQ,OAChB,KAAK1C,EAAAA,EAAAA,IAAkB+xK,KAAoE,IAArD1/K,KAAKwlK,uBAAuBlvK,QAAQopL,GACtE,OAEJ,IAAI54L,GAAS6mB,EAAAA,EAAAA,IAAkB+xK,GAC3B1/K,KAAKwlK,uBAAuBxlK,KAAKwlK,uBAAuBvtL,OAAS,GADxBynM,EAEzCvpE,EAAMxC,EAAKq8D,iBAAiBlpL,GAC5B63L,OAAc,EACdv/G,EAASu0C,EAAKq8D,iBAAiBlpL,GAU/B84L,EAAiB,CACjB1C,YAAap2L,EAAOi4L,WATpBJ,EADAxoE,EAAI24C,uBAAyBjxC,EAAAA,GACflK,EAAKksE,kCAAkC/4L,GAEnB,YAA7BqvH,EAAI24C,qBACKn7C,EAAKmsE,8BAA8Bh5L,GAGnC6sH,EAAKmkB,qBAAqB14D,EAAOlzD,KAI/CmzK,cAAer/K,KAAKwlK,uBACpBpmG,OAAQA,EACR73E,QAAQ,EAAO42C,OAAQn+B,KAAK2qK,aAC5B13K,aAAc+M,KAAK/M,cAGvB,GADiB+M,KAAK+/K,eAAeH,EAAgBvsJ,EAAAA,KAGjD,YADArzB,KAAKorK,oBAMT,IAHA,IAAI4U,GAAkBryK,EAAAA,EAAAA,IAAkB+xK,GACpC,GAAGriL,MAAMqC,KAAKi0G,EAAKstB,mBAAmBz8F,uBAAuB,sBADX,CAACm6I,GAEnDjM,EAAgB1yK,KAAKigL,uBAAuBP,GACvCv6K,EAAI,EAAG8L,EAAM+uK,EAAe/nM,OAAQktB,EAAI8L,EAAK9L,KAClDu5K,EAAAA,EAAAA,IAAuB,CAACsB,EAAe9gM,SAASimB,EAAE/pB,WAAY,OAAO,EAAO,qBAEhF,IAAS+pB,EAAI,EAAG8L,EAAMyhK,EAAcz6L,OAAQktB,EAAI8L,EAAK9L,KACjDu5K,EAAAA,EAAAA,IAAuB,CAAChM,EAAcxzL,SAASimB,EAAE/pB,WAAY,OAAO,EAAO,sBAE1EuyB,EAAAA,EAAAA,IAAkB+xK,IAKnB1/K,KAAK+/K,eAAeH,EAAgBvsJ,EAAAA,KACpCrzB,KAAKwlK,uBAAyB,GAC9BxlK,KAAK2/K,kBAAmB,EACxB3/K,KAAKqQ,OAAO4jG,aAAa91H,QAAO,SAAUg4H,GAAO,OAAOA,EAAInR,YAAa,CAAO,MAPhFhlG,KAAKwlK,uBAAuB3+I,OAAO7mB,KAAKwlK,uBAAuBlvK,QAAQopL,GAAa,GACpF1/K,KAAKqQ,OAAO4jG,aAAa/0H,SAASwgM,EAAWtkM,WAAY,KAAK4pH,YAAa,EAQnF,CACJ,EACAqgE,EAAUhmK,UAAUigL,gBAAkB,WAClC,IACIX,EADAhrE,EAAO3zG,KAAKqQ,OAEhB,GAAIrQ,KAAKwlK,uBAAuBvtL,OAAS,EAAG,CACxC0mM,EAAc,GACd,IAAK,IAAIx5K,EAAI,EAAGA,EAAInF,KAAKwlK,uBAAuBvtL,OAAQktB,IACnDw5K,EAAal/L,KAAKk0H,EAAKmkB,qBAAqBnkB,EAAKq8D,iBAAiBhwK,KAAKwlK,uBAAuBtmL,SAASimB,EAAE/pB,WAAY,MAAM8wB,KAEpI,MAEIyyK,EAAchrE,EAAKmkB,qBAAqBnkB,EAAKq8D,iBAAiBhwK,KAAKwlK,uBAAuB,IAAIt5J,KAElG,OAAOyyK,CACX,EACAtZ,EAAUhmK,UAAU4gL,uBAAyB,SAAUP,GACnD,IAGI77B,EACAqrB,EAJAv7D,EAAO3zG,KAAKqQ,OACZ6vK,IAAiBvyK,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAOy3I,aAC/C3tK,EAAO+lM,EAAgBvsE,EAAKg5C,UAAYh5C,EAAKy6C,cAG7Cz6C,EAAKmuB,gBAAkBnuB,EAAKqyC,aAAazzI,cAAc,IAAMsrG,EAAAA,MAC7DgmC,EAAcq8B,EAAgBvsE,EAAK45C,iBAAmB55C,EAAK07C,qBAC3Dl1K,EAAOw5H,EAAKs/D,eAAe94L,EAAM0pK,GAC7BlwC,EAAK4sB,kBAAoB1iB,EAAAA,KACzBqxD,EAASgR,EAAgBvsE,EAAKw7D,qBAAuBx7D,EAAKu7C,yBAC1D/0K,EAAOw5H,EAAKs/D,eAAe94L,EAAM+0L,KAKzC,IAFA,IAAIiR,EAAe,GACfC,GAAmBzyK,EAAAA,EAAAA,IAAkB+xK,GAAuD,qBAAzC,mBAAqBA,EAAa,KAChFv6K,EAAI,EAAG8L,EAAM92B,EAAKlC,OAAQktB,EAAI8L,EAAK9L,IACxCg7K,EAAeA,EAAax/L,OAAO,GAAG0c,MAAMqC,KAAKvlB,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAK01B,iBAAiBsvK,KAEvG,OAAOD,CACX,EACA9a,EAAUhmK,UAAU0gL,eAAiB,SAAU9xL,EAAMlM,GAKjD,MAJc,qBAAVA,UACOkM,EAAK1G,OAEhByY,KAAK+9F,iBAAiB9vG,EAAMlM,GACrBkM,EAAK1G,MAChB,EACA89K,EAAUhmK,UAAU8/K,eAAiB,SAAU11K,GAC3CzJ,KAAKs5K,aAAe7vK,EACpBzJ,KAAK2/K,iBAAmB3/K,KAAKwlK,uBAAuBvtL,SAAU,CAClE,EACAotL,EAAUhmK,UAAUy/K,mBAAqB,WACrC9+K,KAAKyuK,uBACLzuK,KAAKwlK,uBAAyB,EAClC,EACAH,EAAUhmK,UAAU4/K,mBAAqB,SAAUN,EAAal1K,GAC5D,KAAIkE,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAO4jG,aAAa/0H,SAASuqB,EAAWruB,WAAY,MAA/E,CAGA,IAIIjB,EAJAupD,EAAO1jC,KAAKqQ,OAAO6jJ,qBACnB6d,EAAU/xK,KAAKqQ,OAAO2+I,yBACtB74C,EAAMn2G,KAAKqQ,OAAO2/J,iBAAiBvmK,GACnCy2K,IAAiBvyK,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAOy3I,aAEnD9nJ,KAAKwlK,uBAAuB/lL,KAAKgqB,GACjCzJ,KAAKqQ,OAAO4jG,aAAa/0H,SAASuqB,EAAWruB,WAAY,KAAK4pH,YAAa,EACvEmR,EAAI24C,uBAAyBjxC,EAAAA,IAC7Bp0G,GAA2Bi6B,EAAOquI,EAClC53L,EAAO+lM,EAAgBlgL,KAAKqQ,OAAO8+J,qBAAuBnvK,KAAKqQ,OAAO6+I,0BAEpC,YAA7B/4C,EAAI24C,sBACTrlJ,GAA0Bi6B,EAC1BvpD,EAAO+lM,EAAgBlgL,KAAKqQ,OAAOk9I,iBAAmBvtJ,KAAKqQ,OAAOg/I,uBAGlE5lJ,GAA0BzJ,KAAKqQ,OAAOgwK,iBACtClmM,EAAO+lM,EAAgBlgL,KAAKqQ,OAAOs8I,UAAY3sJ,KAAKqQ,OAAO+9I,gBAE/DswB,EAAAA,EAAAA,IAAuB,CAACC,IAAc,EAAM,qBAC5C,IAAK,IAAInoK,EAAI,EAAGvF,EAAM92B,EAAKlC,OAAQu+B,EAAIvF,EAAKuF,IACpCr8B,EAAK+E,SAASs3B,EAAEp7B,WAAY,KAAKw7C,UAAUM,SAAS2mF,EAAAA,OAC/C1jI,EAAK+E,SAASs3B,EAAEp7B,WAAY,KAAKw7C,UAAUM,SAAS2mF,EAAAA,MAClD1jI,EAAK+E,SAASs3B,EAAEp7B,WAAY,KAAKw7C,UAAUM,SAAS2mF,EAAAA,KAClB,WAAlC79G,KAAKqQ,OAAO6iI,aAAa9pJ,OACxBukB,EAAAA,EAAAA,IAAkBxzB,EAAK+E,SAASs3B,EAAEp7B,WAAY,KAAKm3B,cAAc,MAAMuxC,WAAW5kE,SAASuqB,EAAWruB,WAAY,OAGhHuyB,EAAAA,EAAAA,IAAkBxzB,EAAK+E,SAASs3B,EAAEp7B,WAAY,KAAK0oE,WAAW5kE,SAASuqB,EAAWruB,WAAY,QACpGsjM,EAAAA,EAAAA,IAAuB,CAACvkM,EAAK+E,SAASs3B,EAAEp7B,WAAY,KAAK0oE,WAAW5kE,SAASuqB,EAAWruB,WAAY,OAAO,EAAM,sBAHjHsjM,EAAAA,EAAAA,IAAuB,CAACvkM,EAAK+E,SAASs3B,EAAEp7B,WAAY,KAAKm3B,cAAc,MAAMuxC,WAAW5kE,SAASuqB,EAAWruB,WAAY,OAAO,EAAM,qBA3BjJ,CAkCJ,EACAiqL,EAAUhmK,UAAUq9K,uBAAyB,SAAU3pB,IAC7C/yJ,KAAK2lK,qBAAuB3lK,KAAK0lK,qBAAwB1lK,KAAKusK,cAChEvsK,KAAKo+K,aAAarrB,GAEb/yJ,KAAK0lK,oBACV1lK,KAAKs+K,sBAAqB9wK,EAAAA,EAAAA,IAAYxN,KAAKs5K,cAAgBvmB,EAAW/yJ,KAAKs5K,aAAcvmB,GAGzF/yJ,KAAKw/K,yBAAyBzsB,EAEtC,EAEAsS,EAAUhmK,UAAU05K,0BAA4B,WAC5C,IAAI/oK,EAAQhQ,KACZA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAkBrzB,KAAKi4I,UAAWj4I,MACjDA,KAAKsgL,oBAAsBtgL,KAAK06K,YAAY17K,KAAKgB,MACjDA,KAAKqQ,OAAOxM,iBAAiBwvB,EAAAA,IAAkBrzB,KAAKsgL,qBACpDtgL,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAwCrzB,KAAKsgL,qBAC5DtgL,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAqBrzB,KAAKu5K,yBAA0Bv5K,MACnEA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAkCrzB,KAAKq5K,sBAAuBr5K,MAC7EA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAgBrzB,KAAKugL,wBAAyBvgL,MAC7DA,KAAKwgL,mBAAqBxgL,KAAKygL,sBAAsBzhL,KAAKgB,MAC1DA,KAAKqQ,OAAOxM,iBAAiBwvB,EAAAA,IAAuBrzB,KAAKwgL,oBACzDxgL,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAcrzB,KAAK2oD,aAAc3oD,MAChDA,KAAK0gL,YAAc,WACf1wK,EAAM8nK,yBACN9nK,EAAMmkK,aACV,EACAn0K,KAAK0gL,YAAY1hL,KAAKgB,MACtBA,KAAKqQ,OAAOxM,iBAAiBwvB,EAAAA,IAAmBrzB,KAAK0gL,YACzD,EAEArb,EAAUhmK,UAAU25K,6BAA+B,WAC/Ch5K,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAkBrzB,KAAKi4I,WACvCj4I,KAAKqQ,OAAOvM,oBAAoBuvB,EAAAA,IAAkBrzB,KAAKsgL,qBACvDtgL,KAAKqQ,OAAOvM,oBAAoBuvB,EAAAA,IAAuBrzB,KAAKwgL,oBAC5DxgL,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAwCrzB,KAAKsgL,qBAC7DtgL,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAgBrzB,KAAKugL,yBACrCvgL,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAcrzB,KAAK2oD,cACnC3oD,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAkCrzB,KAAKq5K,sBAC3D,EACAhU,EAAUhmK,UAAUkhL,wBAA0B,WAC1C,IAAII,EAAc3gL,KAAKo5K,iBACvB,GAAIuH,EAAa,CACb3gL,KAAKqQ,OAAO85J,qBAAsB,EAClC,IAAI+R,EAAUyE,EAAY30H,oBAC1B70B,EAAAA,EAAAA,IAAY,CAAC+kJ,GAAU,CAAC,UAAW,SAAU,eAC7CzlJ,EAAAA,EAAAA,IAAS,CAACylJ,EAAQjjI,eAAgB,CAAC,uBACvC,CACJ,EACAosH,EAAUhmK,UAAU44I,UAAY,SAAUx8J,GACtCukB,KAAK4qK,yBAA0B,EAC/B,IAAIgW,EAAkB5gL,KAAKqQ,OAAO0kG,yBAA6C,mBAAlBt5H,EAAEkgG,YACzC,kBAAlBlgG,EAAEkgG,aAAoC37E,KAAKqQ,OAAOs4J,oBAAuBiY,IACzE5gL,KAAKymK,WAAazmK,KAAKqQ,OAAOsuJ,uBAA0C,QAAjBljL,EAAEkgG,aAAwC,OAAflgG,EAAU,QAC5FukB,KAAKuoK,iBACLvoK,KAAKmuK,mBACLnuK,KAAKymK,WAAY,EAEzB,EACApB,EAAUhmK,UAAUohL,sBAAwB,SAAUhlM,GAC5B,SAAlBA,EAAEkgG,aAA0B37E,KAAKqQ,OAAOs4J,oBACxC3oK,KAAK65K,yBAEb,EACAxU,EAAUhmK,UAAUksK,eAAiB,SAAUzkL,GAC3CkZ,KAAKqQ,OAAOwwK,4BAA6B,GACpClzK,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAOopK,oBAAuD,IAAlCz5K,KAAKqQ,OAAOopK,mBAA6Bz5K,KAAKqQ,OAAO26B,kBACzGhrC,KAAKqQ,OAAOopK,iBAAmB3yL,EAG/BkZ,KAAKqQ,OAAOopK,kBAAoB,CAExC,EACApU,EAAUhmK,UAAU+rK,kBAAoB,WACpCprK,KAAK/M,cAAe,CACxB,EACAoyK,EAAUhmK,UAAU6qK,aAAe,WAC/BlqK,KAAK2qK,aAAe3qK,KAAK/M,aAAe+M,KAAK2qK,aAAe,IAChE,EACOtF,CACX,CA93H+B,GCnB3BjtE,GAAwB,WAOxB,SAASA,EAAO/nF,GACZrQ,KAAKqQ,OAASA,EACdrQ,KAAK6D,kBACT,CAsHA,OA7GAu0F,EAAO/4F,UAAU2B,OAAS,SAAU26J,GAChC,IAAIhoD,EAAO3zG,KAAKqQ,OAChBsrJ,GAAehuJ,EAAAA,EAAAA,IAAkBguJ,GAAgB,GAAKA,GAClDzzC,EAAAA,EAAAA,IAAgBvU,GAChBA,EAAK5sF,OAAOsM,EAAAA,IAAqB,CAAE5yC,SAAUuf,KAAMwM,QAASxM,KAAKgB,OAAQ+6H,KAAM4/B,IAG/EA,IAAiBhoD,EAAKiD,eAAe53H,KACrC20H,EAAKiD,eAAe53H,IAAM28K,EAAavgL,WACvCu4H,EAAK54E,YAEA/6B,KAAK8gL,eACVntE,EAAKxoE,SAEb,EAKAitD,EAAO/4F,UAAUwE,iBAAmB,WAC5B7D,KAAKqQ,OAAOuqB,cAGhB56B,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAA4BrzB,KAAKs7B,kBAAmBt7B,MACnEA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAuBrzB,KAAK+gL,iBAAkB/gL,MAC7DA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAgBrzB,KAAK0nB,QAAS1nB,MAC7CA,KAAKwgL,mBAAqBxgL,KAAK+9F,iBAAiB/+F,KAAKgB,MACrDA,KAAKqQ,OAAOxM,iBAAiBwvB,EAAAA,IAAuBrzB,KAAKwgL,oBACzDxgL,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAoBrzB,KAAK2uI,iBAAkB3uI,MAC9D,EAKAo4F,EAAO/4F,UAAUyE,oBAAsB,WAC/B9D,KAAKqQ,OAAOuqB,cAGhB56B,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAA4BrzB,KAAKs7B,mBACjDt7B,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAuBrzB,KAAK+gL,kBAC5C/gL,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAgBrzB,KAAK0nB,SACrC1nB,KAAKqQ,OAAOvM,oBAAoBuvB,EAAAA,IAAuBrzB,KAAKwgL,oBAC5DxgL,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAoBrzB,KAAK2uI,kBAC7C,EAOAv2C,EAAO/4F,UAAUqoB,QAAU,WACvB1nB,KAAK8D,qBACT,EAMAs0F,EAAO/4F,UAAUi8B,kBAAoB,SAAU7/C,GACvCA,EAAE0pD,SAAWnlC,KAAK47B,mBAGjBjuB,EAAAA,EAAAA,IAAkBlyB,EAAE26C,WAAWp3C,KAMhCghB,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAqB,CACpCsoD,YAAa,YAAarhG,KAAM+4C,EAAAA,MANpCrzB,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAqB,CACpCsoD,YAAa,YAAarhG,KAAM+4C,EAAAA,IAAoBsoI,aAAc37J,KAAKqQ,OAAOumG,eAAe53H,MAQzG,EAQAo5G,EAAO/4F,UAAU0hL,iBAAmB,SAAUtlM,GAC1CukB,KAAKqQ,OAAOylB,QAAQzC,EAAAA,KAAuB1kB,EAAAA,EAAAA,IAAOlzB,EAAG,CACjDkgL,aAAc37J,KAAKqQ,OAAOumG,eAAe53H,IAAK28F,YAAa,YAAarhG,KAAM+4C,EAAAA,MAEtF,EAQA+kE,EAAO/4F,UAAU0+F,iBAAmB,SAAUtiH,GAC1CukB,KAAK8gL,cAAkC,cAAlBrlM,EAAEkgG,WAC3B,EACAyc,EAAO/4F,UAAUsvI,iBAAmB,SAAUlzJ,GACpB,cAAlBA,EAAEkgG,aACF37E,KAAKqQ,OAAOsqB,cAAc,CAAEi8E,eAAgB,CAAE53H,IAAK,MAAQ,EAEnE,EAOAo5G,EAAO/4F,UAAUu8B,cAAgB,WAC7B,MAAO,QACX,EACOw8D,CACX,CAjI4B,GCAxB4oF,GAA0B,WAO1B,SAASA,EAAS3wK,GACdrQ,KAAKihL,QAAU,GACfjhL,KAAKkhL,YAAa,EAClBlhL,KAAKqQ,OAASA,EACdrQ,KAAK6D,kBACT,CAmKA,OAlKAm9K,EAAS3hL,UAAUwE,iBAAmB,WAC9B7D,KAAKqQ,OAAOuqB,cAGhB56B,KAAKwuI,YAAc,CAAC,CAAEzsJ,MAAOsxC,EAAAA,IAAoB7mB,QAASxM,KAAKmhL,cAC3D,CAAEp/L,MAAOsxC,EAAAA,IAA4B7mB,QAASxM,KAAKohL,oBAEvDxyC,EAAAA,EAAAA,IAAuB5uI,KAAKqQ,OAAQrQ,KAAKwuI,aAAa,EAAMxuI,MAChE,EAKAghL,EAAS3hL,UAAUyE,oBAAsB,WACjC9D,KAAKqQ,OAAOuqB,cAGhBg0G,EAAAA,EAAAA,IAAuB5uI,KAAKqQ,OAAQrQ,KAAKwuI,aAAa,EAC1D,EACAwyC,EAAS3hL,UAAU8hL,aAAe,WAC1BnhL,KAAKkhL,aACLlhL,KAAKkhL,YAAa,EAClBlhL,KAAKsmJ,WAAWtmJ,KAAKihL,QAASjhL,KAAKqhL,YACnCrhL,KAAKqhL,WAAarhL,KAAKihL,QAAU,GAEzC,EAQAD,EAAS3hL,UAAU6lE,KAAO,SAAU2wC,EAAYyrE,GAC5C,IAAIxiM,EAAOkhB,KAAKuhL,gBAAgB1rE,GAC5BzB,EAAUp0G,KAAKi0G,WAAWn1H,EAAMwiM,GACpCthL,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAuB,CAAE8R,OAAQ,SACpD,IAAK,IAAIhgC,EAAI,EAAGA,EAAIivG,EAAQn8H,OAAQktB,IAChCivG,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKgT,SAAU,EAElD4R,KAAKsmJ,WAAWlyC,EACpB,EAQA4sE,EAAS3hL,UAAU4lE,KAAO,SAAU4wC,EAAY2rE,GAC5C,IAAI1iM,EAAOkhB,KAAKuhL,gBAAgB1rE,GAC5BzB,EAAUp0G,KAAKi0G,WAAWn1H,EAAM0iM,GACpCxhL,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAuB,CAAE8R,OAAQ,SACpD,IAAK,IAAIhgC,EAAI,EAAGA,EAAIivG,EAAQn8H,OAAQktB,IAChCivG,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKgT,SAAU,EAElD4R,KAAKsmJ,WAAWlyC,EACpB,EACA4sE,EAAS3hL,UAAUkiL,gBAAkB,SAAUviM,GAQ3C,MANmB,kBAARA,EACK,CAACA,GAGDA,CAGpB,EACAgiM,EAAS3hL,UAAU40G,WAAa,SAAUn1H,EAAM2iM,GAC5C,IAAIzxK,EAAQhQ,KASZ,OARc0hL,EAAAA,EAAAA,IAAqB5iM,GAAM,SAAUE,GAC/C,OAAO0iM,EAAAA,EAAAA,IAAqB1xK,EAAMK,OAAOkpG,aAAa,SAAUnuH,GAC5D,GAAIA,EAAK,GAAKq2L,KAAcziM,EACxB,OAAOoM,CAGf,IAAG,EACP,GAEJ,EACA41L,EAAS3hL,UAAUsiL,mBAAqB,SAAUvtE,EAASwtE,GAEvD,YAD4B,IAAxBA,IAAkCA,EAAsB,MACxD15D,EAAAA,EAAAA,IAAgBloH,KAAKqQ,UACrBrQ,KAAKihL,QAAU7sE,EACfp0G,KAAKqhL,WAAaO,EAClB5hL,KAAKqQ,OAAO6jI,aACL,EAGf,EACA8sC,EAAS3hL,UAAU+hL,iBAAmB,WAClC,GAAIphL,KAAKkhL,WACL,IAAK,IAAI/7K,EAAI,EAAGA,EAAInF,KAAKihL,QAAQhpM,OAAQktB,IACrCnF,KAAKihL,QAAQ/hM,SAASimB,EAAE/pB,WAAY,KAAKgT,SAAW4R,KAAKihL,QAAQ/hM,SAASimB,EAAE/pB,WAAY,KAAKgT,OAGzG,EASA4yL,EAAS3hL,UAAUinJ,WAAa,SAAUlyC,EAASwtE,GAC/C,IAAI5xK,EAAQhQ,KAGZ,QAF4B,IAAxB4hL,IAAkCA,EAAsB,IAC5D5hL,KAAKkhL,YAAa,EACblhL,KAAK2hL,mBAAmBvtE,EAASwtE,GAAtC,CAIA,IAAI3zL,EAAO,CACP0tF,YAAa,cACbp0F,QAAQ,EACR6sH,QAJJwtE,EAAuBA,EAAoB3pM,OAAS,EAAK2pM,EAAsBxtE,GAO3Ep0G,KAAKqQ,OAAO0kG,yBAA2B/0G,KAAKqQ,OAAOmlG,eAChDx1G,KAAKqQ,OAAOwxK,YAAYpsE,cAAcrB,QAAQn8H,OAAS,IAC1D+nB,KAAKqQ,OAAOw3I,cAAc1D,YAAc,IAE5CnkJ,KAAKqQ,OAAOylB,QAAQzC,EAAAA,IAAoBplC,GAAM,SAAU6zL,GACpD,IAAIC,EAAkB/xK,EAAMK,OAAO4jG,aAEnC,GADAG,GAAUzmG,EAAAA,EAAAA,IAAkBymG,GAAW2tE,EAAkB3tE,EACrD0tE,EAAwB,OAKxB,OAJA9xK,EAAMK,OAAO0W,OAAOsM,EAAAA,IAAqB,CAAEyuJ,aAAcA,SACrD1tE,EAAQn8H,OAAS,IACjBm8H,EAAQ,GAAGhmH,SAAU,MAIzBomH,EAAAA,EAAAA,IAAgBxkG,EAAMK,SACtBL,EAAMK,OAAOw3I,cAAce,cAE3B54I,EAAMK,OAAOy+H,gBAAkB9+H,EAAMK,OAAOy5J,qBAAqB7xL,SAChE+3B,EAAMK,OAAO0+H,kBAAkB86B,kBAChC75J,EAAMK,OAAOk4J,iBAEbv4J,EAAMK,OAAO2xI,4BACW5tC,EAAQj2H,QAAO,SAAU6jM,GAAQ,OAAQD,EAAgBp6K,MAAK,SAAUs6K,GAAQ,OAAOD,EAAKpgM,QAAUqgM,EAAKrgM,KAAO,GAAK,IACzH3J,QAClB+3B,EAAMK,OAAO0W,OAAOsM,EAAAA,IAAgC+gF,GAIxDpkG,EAAMK,OAAO0W,OAAOsM,EAAAA,IAAgC+gF,GAExD,IAAI9rG,EAAS,CACTqzE,YAAa,cACby4B,QAASwtE,GAEb5xK,EAAMK,OAAOylB,QAAQzC,EAAAA,IAAuB/qB,GACP,QAAjC0H,EAAMK,OAAO2jG,iBACbhkG,EAAMK,OAAO86B,SAErB,IACInrC,KAAKqQ,OAAOs1I,UAAY3lJ,KAAKqQ,OAAOolG,cAAcrB,QAAQn8H,QAC1D+nB,KAAKqQ,OAAOu1I,sBAhDhB,CAkDJ,EACOo7B,CACX,CAhL8B,GCM1BkB,GAAwB,WAOxB,SAASA,EAAO7xK,GAEZrQ,KAAKouD,eAAiB,CAAExqB,IAAK,EAAGF,KAAM,GACtC1jC,KAAKmiL,cAAe,EACpBniL,KAAKqQ,OAASA,EACdrQ,KAAKmzJ,aAAe,IAAIivB,GAAAA,EAAmB/xK,GAC3CrQ,KAAK6D,kBACT,CA+kBA,OAxkBAq+K,EAAO7iL,UAAUu8B,cAAgB,WAC7B,MAAO,QACX,EAMAsmJ,EAAO7iL,UAAUijE,SAAW,SAAU+/G,GAKlC,GAJAriL,KAAKqQ,OAAOrtB,QAAQu0C,MAAMwc,OAAQjiC,EAAAA,EAAAA,IAAW9R,KAAKqQ,OAAO0jC,OACrDsuI,GACAriL,KAAKmzJ,aAAaoE,oBAElBv3J,KAAKqQ,OAAOiyK,eAAiBtiL,KAAKqQ,OAAOiyK,cAAcz0L,SACvDmS,KAAKqQ,OAAOiyK,cAAcz0L,QAAQ7K,QAAS,CAC3C,IAAI+uJ,EAAc/xI,KAAKqQ,OAAOiyK,cAAcz0L,QAAQ7K,QAChD2uJ,EAAkBI,EAAYx/H,cAAc,mBAC5Cq/H,EAAoBG,EAAYx/H,cAAc,qBAC9Cs/H,EAAmBE,EAAYx/H,cAAc,oBAC7Cu/H,EAAYC,EAAYx/H,cAAc,oBACtCy/H,EAAgBL,EAAkBA,EAAgBl5F,YAAc,EAChEw5F,EAAkBL,EAAoBA,EAAkBn5F,YAAc,EACtEy5F,EAAiBL,EAAmBA,EAAiBp5F,YAAc,EACnE05F,EAAiBL,EAAYA,EAAUr5F,YAAc,EACrD25F,EAAYL,EAAcA,EAAYt5F,YAAc,IACnDz4C,KAAKqQ,OAAO0tG,kBAAoBi0B,EAAgBI,GAAaH,EAAkBG,GAAaF,EAAiBE,GAC9GD,EAAiBC,IACjBpyI,KAAKqQ,OAAOiyK,cAAcz0L,QAAQwkJ,iBAE1C,CACJ,EAKA6vC,EAAO7iL,UAAUo8J,UAAY,WACzB,IAAI8mB,EAAa,EACbh8H,EAAUvmD,KAAKqQ,OAAO21I,aAAazzI,cAAc,IAAMsrG,EAAAA,IACvD7pE,EAASh0C,KAAKqQ,OAAO2jC,OAIzB,GAHIh0C,KAAKqQ,OAAOyxH,gBAAyC,SAAvB9hI,KAAKqQ,OAAO2jC,QAAqBh0C,KAAKqQ,OAAO2jC,OAAO54D,WAAWkb,QAAQ,KAAO,IAC5G09C,EAAS90D,SAAS80D,EAAQ,IAAMkuI,EAAOM,sBAEtCxiL,KAAKqQ,OAAOykG,sBAAwB90G,KAAKqQ,OAAOm3I,YAAqC,SAAvBxnJ,KAAKqQ,OAAO2jC,OAAmB,CAC9F,IAAIy1G,EAAQzpJ,KAAKqQ,OAAO4wH,mBACnB1uH,cAAcsrG,EAAAA,GAAiB,yBAEpC,GADA0kE,EAAa94B,EAAQA,EAAMx1G,aAAe,EACtCw1G,GAAS84B,EAGTA,GAFU94B,EAAMjlH,uBAAuBq5E,EAAAA,IAAmB5lI,OACrC+nB,KAAKqQ,OAAOoyK,oBAG3BziL,KAAKqQ,OAAOy7E,eAAgE,YAA/C9rF,KAAKqQ,OAAOksJ,iBAAiBC,eAC7Dx8J,KAAKqQ,OAAO4wH,mBAAmB1uH,cAAc,qBAChDyhC,EAAS90D,SAAS80D,EAAQ,IAAOh0C,KAAKqQ,OAAOm3I,WAAaxnJ,KAAKqQ,OAAOoyK,gBAE1El8H,EAAQhvB,MAAMyc,QAASliC,EAAAA,EAAAA,IAAWkiC,EAASuuI,EAC/C,MAEIh8H,EAAQhvB,MAAMyc,QAASliC,EAAAA,EAAAA,IAAWkiC,GAEtCh0C,KAAK0iL,eAAen8H,GAChBvmD,KAAKqQ,OAAOyxH,gBACZ9hI,KAAKmrC,SAEb,EAKA+2I,EAAO7iL,UAAU4mJ,WAAa,WAC1B,IAAI1/F,EAAUvmD,KAAKqQ,OAAO4wH,mBACtB9wF,EAAc+xI,EAAOM,oBAAsBxiL,KAAK2iL,eAChDl3C,EAAWzrI,KAAK0rI,mBAChBn9F,EAA0C,UAAhCvuC,KAAKqQ,OAAOkwH,iBAA+BvgI,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,GAAqB,QAAU,MACxHt3D,EAAQh0C,cAAc,IAAMsrG,EAAAA,IAAwBtmF,MAAMk0G,EAAS37B,QAAU3/D,EAAc,EAAI5B,EAAU,MACzGgY,EAAQhvB,MAAMk0G,EAASl9F,SAAW4B,EAAc,EAAIA,EAAc,KAAO,KAC7E,EAMA+xI,EAAO7iL,UAAU6mJ,cAAgB,SAAUhtD,GACvC,IAAIuyC,EAAWzrI,KAAK0rI,iBAAiBxyC,GACjC0pF,EAAO5iL,KAAKqQ,OAAO4wH,mBAAmB1uH,cAAc,IAAMsrG,EAAAA,IAC9D+kE,EAAKrrJ,MAAMk0G,EAAS37B,QAAU,GAC9B8yE,EAAK3pI,cAAc1hB,MAAMk0G,EAASl9F,SAAW,GAC7C,IAAIs0I,EAAY7iL,KAAKqQ,OAAOyyK,mBACxBD,GAAaA,EAAUjsJ,UAAUM,SAAS,oBAC1C2rJ,EAAUjsJ,UAAUjB,OAAO,kBAEnC,EAQAusJ,EAAO7iL,UAAU8rC,QAAU,WACvB,GAA2B,SAAvBnrC,KAAKqQ,OAAO2jC,OAAhB,CAGA,IAAIuS,EAAUvmD,KAAKqQ,OAAO21I,aAC1BhmJ,KAAKqQ,OAAOrtB,QAAQu0C,MAAMyc,OAAS,OACnC,IAAIA,EAASh0C,KAAKmzJ,aAAa4vB,kBAAkBx8H,GACjDA,EAAQhvB,MAAMyc,OAAS,eAAiBA,EAAS,MAC7Ch0C,KAAKqQ,OAAOyxH,iBACZv7E,EAAQtuB,kBAAkBV,MAAMyc,OAAS,gBAAiBwuI,EAAAA,EAAAA,MAAsB,MANpF,CAQJ,EACAN,EAAO7iL,UAAUsjL,aAAe,WAI5B,MAAgB,YADF/vJ,EAAAA,GAAQyB,KAAKj8C,KAEhB,GAEJ,CACX,EAKA8pM,EAAO7iL,UAAUwE,iBAAmB,WAC5B7D,KAAKqQ,OAAOuqB,cAGhB56B,KAAKqQ,OAAOkW,GAAG6jH,EAAAA,IAASpqI,KAAKu5C,WAAYv5C,MACzCA,KAAKqQ,OAAOkW,GAAGikH,EAAAA,IAAcxqI,KAAKu5C,WAAYv5C,MAC9CA,KAAKqQ,OAAOkW,GAAG2xH,EAAAA,IAAUl4I,KAAKs7B,kBAAmBt7B,MACjDA,KAAKqQ,OAAOkW,GAAG80H,EAAAA,IAAiBr7I,KAAKu5C,WAAYv5C,MACjDA,KAAKqQ,OAAOkW,GAAG8xH,EAAAA,IAAiBr4I,KAAKgjL,cAAehjL,MACxD,EAKAkiL,EAAO7iL,UAAUyE,oBAAsB,WAC/B9D,KAAKqQ,OAAOuqB,cAGhB56B,KAAKqQ,OAAOuW,IAAIwjH,EAAAA,IAASpqI,KAAKu5C,YAC9Bv5C,KAAKqQ,OAAOuW,IAAI4jH,EAAAA,IAAcxqI,KAAKu5C,YACnCv5C,KAAKqQ,OAAOuW,IAAIsxH,EAAAA,IAAUl4I,KAAKs7B,mBAC/Bt7B,KAAKqQ,OAAOuW,IAAIy0H,EAAAA,IAAiBr7I,KAAKu5C,YACtCv5C,KAAKqQ,OAAOuW,IAAIyxH,EAAAA,IAAiBr4I,KAAKgjL,eACtChjL,KAAKm7C,eACT,EACA+mI,EAAO7iL,UAAU87C,aAAe,WAC5B,IACIutG,EACA/D,EAFA2D,EAAUtoJ,KAAKqQ,OAAOyxH,eAGtB9hI,KAAKumD,UACLmiG,EAAQ1oJ,KAAKumD,QAAQh0C,cAAc,IAAMsrG,EAAAA,KAEzC79G,KAAKywB,SACLk0H,EAAO3kJ,KAAKywB,OAAOle,cAAc,IAAMsrG,EAAAA,KAE3C,IAAIolE,EAAajjL,KAAKqQ,OAAO21I,aAAehmJ,KAAKqQ,OAAO21I,aAAazzI,cAAc,uBAAyB,KACxGvS,KAAKqQ,OAAOm3I,aAAgBxnJ,KAAKywB,SAAW63H,GAAaA,GAAW3D,KACpE3vH,EAAAA,GAAaW,OAAO2yH,EAAU3D,EAAO3kJ,KAAKywB,OAAQ,yBAA0BzwB,KAAKkjL,WACjFluJ,EAAAA,GAAaW,OAAO2yH,EAAU3D,EAAO3kJ,KAAKywB,OAAQ,wBAAyBzwB,KAAKmjL,gBAEhFnjL,KAAKqQ,OAAOyxH,gBACRmhD,GACAjuJ,EAAAA,GAAaW,OAAOstJ,EAAY,SAAUjjL,KAAKojL,yBAE/C16B,IACA1zH,EAAAA,GAAaW,OAAO+yH,EAAO,SAAU1oJ,KAAKojL,yBAC1CpuJ,EAAAA,GAAaW,OAAO+yH,EAAO,yBAA0B1oJ,KAAKkjL,WACpD,iBAAiBp7K,KAAK8qB,EAAAA,GAAQI,UAAU30C,gBAAkBu0C,EAAAA,GAAQY,UACpEwB,EAAAA,GAAaW,OAAO+yH,EAAO,wBAAyB1oJ,KAAKmjL,gBAG7Dx+B,IACA3vH,EAAAA,GAAaW,OAAOgvH,EAAM,SAAU3kJ,KAAKojL,yBACzCpuJ,EAAAA,GAAaW,OAAOgvH,EAAM,yBAA0B3kJ,KAAKkjL,WACzDluJ,EAAAA,GAAaW,OAAOgvH,EAAM,wBAAyB3kJ,KAAKmjL,gBAExDnjL,KAAKumD,SACLvxB,EAAAA,GAAaW,OAAO31B,KAAKumD,QAAS,SAAUvmD,KAAKqjL,yBAIjDrjL,KAAKumD,SACLvxB,EAAAA,GAAaW,OAAO31B,KAAKumD,QAAS,SAAUvmD,KAAKsjL,sBAEjDtjL,KAAKywB,QACLuE,EAAAA,GAAaW,OAAO31B,KAAKywB,OAAQ,SAAUzwB,KAAKujL,qBAEpDvjL,KAAKsjL,qBAAuB,KAC5BtjL,KAAKujL,oBAAsB,MAE3BvjL,KAAKqQ,OAAO2rE,WAAW/jG,QAAU+nB,KAAKqQ,OAAOyyK,oBAC7C9tJ,EAAAA,GAAaW,OAAO31B,KAAKqQ,OAAOyyK,mBAAmBvnE,WAAY,SAAUv7G,KAAKwjL,gBAEtF,EACAtB,EAAO7iL,UAAU2jL,cAAgB,WACzBhjL,KAAKqQ,OAAOyxH,eACZ9hI,KAAKqQ,OAAOmlK,aAAaC,mBAAmBpyI,WAAarjC,KAAKouD,eAAe1qB,KAG7E1jC,KAAKqQ,OAAO4wH,mBAAmB1uH,cAAc,IAAMsrG,EAAAA,IAAwBx6E,WAAarjC,KAAKouD,eAAe1qB,IAEpH,EACAw+I,EAAO7iL,UAAUgkL,sBAAwB,WACrC,IAAIrzK,EAAQhQ,KACZ,OAAO,SAAUvkB,GACuC,OAAhDu0B,EAAMu2C,QAAQh0C,cAAcsrG,EAAAA,KAA4B7tG,EAAMK,OAAOozK,yBAGpE91K,EAAAA,EAAAA,IAAkBqC,EAAMK,OAAO8kG,uBAAyBnlG,EAAMK,OAAO0kG,yBACtE/kG,EAAMK,OAAO0W,OAAOg2H,EAAAA,IAAuBthK,GAE/Cu0B,EAAMo+C,eAAexqB,IAAMnoD,EAAE0iD,OAAOqF,UACxC,CACJ,EACA0+I,EAAO7iL,UAAUmkL,gBAAkB,SAAUE,GACzC,IAAI1zK,EAAQhQ,KACRhd,EAAU0gM,EACV7qF,EAAW71G,EAAQ4zC,UAAUM,SAAS2mF,EAAAA,IAC1C,OAAO,SAAUpiI,GACb,GAAoD,OAAhDu0B,EAAMu2C,QAAQh0C,cAAcsrG,EAAAA,MAA4B7tG,EAAMK,OAAOozK,qBAAzE,CAGA,IAAItlJ,EAAS1iD,EAAE0iD,OACXuF,EAAOvF,EAAOkF,WAIlB,IAHK11B,EAAAA,EAAAA,IAAkBqC,EAAMK,OAAO8kG,wBAAyBnlG,EAAMK,OAAO0kG,yBAA4B/kG,EAAMK,OAAO8+H,QAC/Gn/H,EAAMK,OAAO0W,OAAOg2H,EAAAA,IAAuB,CAAE5+G,OAAQ1iD,EAAE0iD,OAAQwlJ,OAAQ3zK,EAAMo+C,eAAe1qB,OAASA,IAErG1zB,EAAMK,OAAOolG,cAAcrB,QAAQn8H,QAAU+3B,EAAMK,OAAOolG,cAAcC,kBAAmB,CAC3F,IAAIkuE,EAAS5zK,EAAMo+C,eAAexqB,IAAM5zB,EAAMK,OAAO21I,aAAa/tH,kBAAkBuL,UACpFxzB,EAAMK,OAAO0W,OAAO42H,EAAAA,IAAuB,CAAEkmC,WAAYD,GAC7D,CACA5zK,EAAMK,OAAO0W,OAAO21H,EAAAA,IAAmB,CAAC,GACxC,IAAIonC,EAAW3lJ,EAAOvH,UAAUM,SAAS,oBACrClnB,EAAMo+C,eAAe1qB,OAASA,GAIlC1zB,EAAMK,OAAO0W,OAAOu2H,EAAAA,IAAmB7hK,GACvCuH,EAAQqgD,WAAaK,EACjBogJ,IACA9zK,EAAMygB,OAAO4S,WAAaK,GAE9B1zB,EAAMo+C,eAAe1qB,KAAOA,EAC5B1zB,EAAMK,OAAO0W,OAAOqyH,EAAAA,IAAQ,CAAE11G,KAAMA,KAThC1zB,EAAMo+C,eAAexqB,IAAOi1D,EAAsC16D,EAAOqF,UAAlCxzB,EAAMo+C,eAAexqB,GAbhE,CAuBJ,CACJ,EACAs+I,EAAO7iL,UAAU+jL,wBAA0B,SAAU16B,EAAO/D,GACxD,IAAI30I,EAAQhQ,KACRumD,EAAUmiG,EACVj4H,EAASk0H,EACb,OAAO,SAAUlpK,GACb,GAAoD,OAAhDu0B,EAAMu2C,QAAQh0C,cAAcsrG,EAAAA,IAAhC,CAGA,IACIn6E,EADSjoD,EAAE0iD,OACGkF,WACdrzB,EAAMo+C,eAAe1qB,OAASA,IAGlC6iB,EAAQljB,WAAaK,EACrBjT,EAAO4S,WAAaK,EACpB1zB,EAAMo+C,eAAe1qB,KAAOA,EAC5B1zB,EAAMK,OAAO0W,OAAOqyH,EAAAA,IAAQ,CAAE11G,KAAMA,IAChC1zB,EAAMK,OAAOuqB,YAVjB,CAaJ,CACJ,EACAsnJ,EAAO7iL,UAAU8jL,cAAgB,SAAUO,GACvC,IAAI1zK,EAAQhQ,KACRhd,EAAU0gM,EACd,OAAO,SAAUjoM,GACb,GAAsB,UAAlBA,EAAEsoM,YAAN,CAGA,IAAIp0C,EAAW3/H,EAAMK,OAAOyxH,eACxBkiD,EAASh0K,EAAMi0K,WAAWxoM,GAC1BioD,EAAO1gD,EAAQqgD,YAAcrzB,EAAMg0K,OAAOp3J,EAAIo3J,EAAOp3J,GACrD+3H,EAAOhV,EACP3/H,EAAMK,OAAO4wH,mBAAmB1uH,cAAc,IAAMsrG,EAAAA,IACpD7tG,EAAMK,OAAO4wH,mBAAmB1uH,cAAc,IAAMsrG,EAAAA,IACpD6qC,EAAQ/Y,EACR3/H,EAAMK,OAAO21I,aAAazzI,cAAc,IAAMsrG,EAAAA,IAC9C7tG,EAAMK,OAAO21I,aAAazzI,cAAc,IAAMsrG,EAAAA,IAClD,KAAI7tG,EAAMo+C,eAAe1qB,OAASA,GAASA,EAAO,GAAMihH,EAAKx0G,YAAcw0G,EAAKlsG,YAAe/U,GAA/F,CAMA,GAHAjoD,EAAEi1D,iBACFi0G,EAAKthH,WAAaK,EAClBglH,EAAMrlH,WAAaK,EACfisG,EACgB3/H,EAAMK,OAAO21I,aAAazzI,cAAc,uBAC9C8wB,WAAaK,EAE3B1zB,EAAMg0K,OAAOp3J,EAAIo3J,EAAOp3J,EACxB5c,EAAMo+C,eAAe1qB,KAAOA,CAT5B,CAZA,CAsBJ,CACJ,EACAw+I,EAAO7iL,UAAU6jL,UAAY,WACzB,IAAIlzK,EAAQhQ,KACZ,OAAO,SAAUvkB,GACS,UAAlBA,EAAEsoM,cAGN/zK,EAAMg0K,OAASh0K,EAAMi0K,WAAWxoM,GACpC,CACJ,EACAymM,EAAO7iL,UAAU4kL,WAAa,SAAUxoM,GACpC,IAAIuoM,EAAS,CAAEp3J,EAAG,EAAG14B,EAAG,GASxB,OARIzY,EAAEyoM,SAAWzoM,EAAEyoM,QAAQjsM,QACvB+rM,EAAOp3J,EAAInxC,EAAEyoM,QAAQ,GAAG9gJ,MACxB4gJ,EAAO9vL,EAAIzY,EAAEyoM,QAAQ,GAAG3gJ,QAGxBygJ,EAAOp3J,EAAInxC,EAAE2nD,MACb4gJ,EAAO9vL,EAAIzY,EAAE8nD,OAEVygJ,CACX,EACA9B,EAAO7iL,UAAU8kL,mBAAqB,SAAU1tI,GAC5C,GAAa,OAATA,EACA,OAAO,KAGX,IAAIpmC,GAAS1C,EAAAA,EAAAA,IAAkB8oC,EAAKtgB,SAAWsgB,EAAKK,iBAAmBL,EACnEkJ,EAAY/8C,SAASC,YAAYqhC,iBAAiB7zB,EAAQ,MAAMsvC,UACpE,OAAItvC,EAAO4/B,aAAe5/B,EAAOwmC,cAA8B,WAAd8I,GAC5B,YAAdA,GAA4C,SAAjBlJ,EAAKtgB,SAAuC,SAAjBsgB,EAAKtgB,QACvDsgB,EAGAz2C,KAAKmkL,mBAAmB1tI,EAAKnmC,WAE5C,EAMA4xK,EAAO7iL,UAAU+kL,kBAAoB,SAAUpgB,GAC3ChkK,KAAKi5C,cAAgBj5C,KAAKmkL,mBAAmBnkL,KAAKqQ,OAAOrtB,QAAQi2D,eAC7D+qH,GAAShkK,KAAKi5C,eACdj5C,KAAKqkL,aAA8C,SAA/BrkL,KAAKi5C,cAAc9iB,SAAqD,SAA/Bn2B,KAAKi5C,cAAc9iB,QAAqBvzB,SACjG5C,KAAKi5C,cACTjkB,EAAAA,GAAaG,IAAIn1B,KAAKqkL,aAAc,SAAUrkL,KAAKskL,iBAAkBtkL,OAEhEA,KAAKqkL,eACVrvJ,EAAAA,GAAaW,OAAO31B,KAAKqkL,aAAc,SAAUrkL,KAAKskL,kBACtDtkL,KAAKqkL,aAAe,KAE5B,EACAnC,EAAO7iL,UAAUk6C,WAAa,WAC1B,IAAIvpC,EAAQhQ,KACZ,GAAIA,KAAKmiL,aAAc,CACnB,IAAI75B,EAAUtoJ,KAAKqQ,OAAOyxH,eAC1B9hI,KAAKumD,QAAUvmD,KAAKqQ,OAAO21I,aAAazzI,cAAc,IAAMsrG,EAAAA,IAC5D79G,KAAKywB,OAASzwB,KAAKqQ,OAAO4wH,mBAAmB1uH,cAAc,IAAMsrG,EAAAA,IACjE,IAAI6qC,EAAQ1oJ,KAAKumD,QAAQh0C,cAAc,IAAMsrG,EAAAA,IACzC8mC,EAAO3kJ,KAAKywB,OAAOle,cAAc,IAAMsrG,EAAAA,IACvColE,EAAajjL,KAAKqQ,OAAO21I,aAAazzI,cAAc,uBACpDvS,KAAKqQ,OAAOm3I,aACZxyH,EAAAA,GAAaG,IAAImzH,EAAU3D,EAAO3kJ,KAAKywB,OAAQ,yBAA0BzwB,KAAKkjL,YAAaljL,MAC3Fg1B,EAAAA,GAAaG,IAAImzH,EAAU3D,EAAO3kJ,KAAKywB,OAAQ,wBAAyBzwB,KAAKmjL,cAAc76B,EAAUI,EAAQ1oJ,KAAKumD,SAAUvmD,OAE5HA,KAAKqQ,OAAOyxH,gBACZ9sG,EAAAA,GAAaG,IAAI8tJ,EAAY,SAAUjjL,KAAKojL,wBAAwB16B,EAAO/D,GAAO3kJ,MAClFg1B,EAAAA,GAAaG,IAAIuzH,EAAO,SAAU1oJ,KAAKojL,wBAAwBH,EAAYt+B,GAAO3kJ,MAClFg1B,EAAAA,GAAaG,IAAIwvH,EAAM,SAAU3kJ,KAAKojL,wBAAwBH,EAAYv6B,GAAQ1oJ,MAClFg1B,EAAAA,GAAaG,IAAIn1B,KAAKumD,QAAS,SAAUvmD,KAAKqjL,wBAAyBrjL,MACvEg1B,EAAAA,GAAaG,IAAIwvH,EAAM,yBAA0B3kJ,KAAKkjL,YAAaljL,MACnEg1B,EAAAA,GAAaG,IAAIwvH,EAAM,wBAAyB3kJ,KAAKmjL,cAAcz6B,GAAQ1oJ,MAC3Eg1B,EAAAA,GAAaG,IAAIuzH,EAAO,yBAA0B1oJ,KAAKkjL,YAAaljL,MAC9D,iBAAiB8H,KAAK8qB,EAAAA,GAAQI,UAAU30C,gBAAkBu0C,EAAAA,GAAQY,UACpEwB,EAAAA,GAAaG,IAAIuzH,EAAO,wBAAyB1oJ,KAAKmjL,cAAcx+B,GAAO3kJ,QAI/EA,KAAKsjL,qBAAuBtjL,KAAKwjL,gBAAgBxjL,KAAKywB,QACtDzwB,KAAKujL,oBAAsBvjL,KAAKwjL,gBAAgBxjL,KAAKumD,SACrDvxB,EAAAA,GAAaG,IAAIn1B,KAAKumD,QAAS,SAAUvmD,KAAKsjL,qBAAsBtjL,MACpEg1B,EAAAA,GAAaG,IAAIn1B,KAAKywB,OAAQ,SAAUzwB,KAAKujL,oBAAqBvjL,OAElEA,KAAKqQ,OAAO2rE,WAAW/jG,QACvB+8C,EAAAA,GAAaG,IAAIn1B,KAAKqQ,OAAOyyK,mBAAmBvnE,WAAY,SAAUv7G,KAAKwjL,gBAAgBxjL,KAAKumD,SAAUvmD,MAE1GA,KAAKqQ,OAAOk0K,oBACZvkL,KAAKokL,mBAAkB,GAE3BpkL,KAAKmrC,UACLnrC,KAAKmiL,cAAe,CACxB,CACA,IACI5L,EACAiO,EACA3tI,EAHAye,EAAQt1D,KAAKqQ,OAAOm7H,mBAIxBmgB,EAAAA,EAAAA,KAAkB,WACd4qB,EAAQvmK,EAAMygB,OAAO4S,WACrBmhJ,EAAUlvH,EAAMrlB,aAChB4G,EAAe7mC,EAAMK,OAAO21I,aAAanvG,YAC7C,IAAG,WACC,IAAI5oD,EAAO,CAAE1G,QAAQ,GACrByoB,EAAMK,OAAO0W,OAAOq3H,EAAAA,IAAkBnwJ,GAClCu2L,EAAU3tI,GACV7mC,EAAMy0K,iBAELz0K,EAAMK,OAAOykG,sBAAyB9kG,EAAMK,OAAO0kG,yBAC/C9mH,EAAK1G,UACDyoB,EAAMK,OAAOm3I,WAAa,GAAKx3I,EAAMK,OAAOyxH,iBAAmB9xH,EAAMygB,OAAOle,cAAc,IAAMsrG,EAAAA,IACjG7tG,EAAMygB,OAAOle,cAAc,IAAMsrG,EAAAA,IAAwBx6E,WAAarzB,EAAMo+C,eAAe1qB,KAG3F1zB,EAAMygB,OAAO4S,WAAarzB,EAAMo+C,eAAe1qB,KAEnD1zB,EAAMu2C,QAAQljB,WAAarzB,EAAMo+C,eAAe1qB,KAChD1zB,EAAMu2C,QAAQ/iB,UAAYxzB,EAAMo+C,eAAexqB,KAGlD5zB,EAAMK,OAAO2xI,6BACdhyI,EAAMu2C,QAAQljB,WAAakzI,GAE3BvmK,EAAMK,OAAOyxH,gBAAkB9xH,EAAMygB,OAAOle,cAAc,IAAMsrG,EAAAA,MAChE7tG,EAAMygB,OAAOle,cAAc,IAAMsrG,EAAAA,IAAwBx6E,WACrDrzB,EAAMu2C,QAAQh0C,cAAc,IAAMsrG,EAAAA,IAAyBx6E,WAEvE,IACArjC,KAAKqQ,OAAOozK,sBAAuB,CACvC,EAKAvB,EAAO7iL,UAAUolL,eAAiB,WAC9B,IAAInvH,EAAQt1D,KAAKqQ,OAAOm7H,kBAKxB,GAJIl2E,EAAM/iD,cAAc,0BACpB4kB,EAAAA,EAAAA,IAAYm+B,EAAM/iD,cAAc,wBAAwBzB,iBAAiB,MAAO,kBAEpF2lB,EAAAA,EAAAA,IAAS6+B,EAAMxkD,iBAAiB,oBAAqB,iBACjD9Q,KAAKqQ,OAAOyxH,eAAgB,CAC5B,IAAIstB,EAASpvJ,KAAKqQ,OAAO21I,aAAazzI,cAAc,IAAMsrG,EAAAA,IAK1D,GAJIuxC,EAAO78I,cAAc,0BACrB4kB,EAAAA,EAAAA,IAAYi4H,EAAO78I,cAAc,wBAAwBzB,iBAAiB,MAAO,kBAErF2lB,EAAAA,EAAAA,IAAS24H,EAAOt+I,iBAAiB,oBAAqB,iBAClD9Q,KAAKqQ,OAAO+iJ,6BAA8B,CAC1C,IAAIsxB,EAAU1kL,KAAKqQ,OAAO21I,aAAazzI,cAAc,2BACjDmyK,EAAQnyK,cAAc,0BACtB4kB,EAAAA,EAAAA,IAAYutJ,EAAQnyK,cAAc,wBAAwBzB,iBAAiB,MAAO,kBAEtF2lB,EAAAA,EAAAA,IAASiuJ,EAAQ5zK,iBAAiB,oBAAqB,gBAC3D,CACJ,CACJ,EAMAoxK,EAAO7iL,UAAUqsI,iBAAmB,SAAUxyC,GAC1C,IAAIyrF,EAAM,CAAC,EACPh6I,GAAYh9B,EAAAA,EAAAA,IAAkBurF,GAAOl5F,KAAKqQ,OAAOs6B,UAAYuuD,EAGjE,OAFAyrF,EAAI70E,OAASnlE,EAAY,kBAAoB,mBAC7Cg6I,EAAIp2I,QAAU5D,EAAY,cAAgB,eACnCg6I,CACX,EACAzC,EAAO7iL,UAAUqjL,eAAiB,SAAUn8H,GACxCA,EAAQhvB,MAAMooB,UAAmC,SAAvB3/C,KAAKqQ,OAAO2jC,OAAoB,OAAS,QACvE,EACAkuI,EAAO7iL,UAAUi8B,kBAAoB,SAAU7/C,GAC3C,GAAIA,EAAE0pD,SAAWnlC,KAAK47B,gBAAtB,CAGA57B,KAAKimJ,aACLjmJ,KAAKmiL,cAAe,EACO,SAAvBniL,KAAKqQ,OAAO2jC,QACZh0C,KAAKkmJ,gBAETlmJ,KAAKu5C,aACLv5C,KAAKy7J,YAELz7J,KAAKsiE,WAAU30D,EAAAA,EAAAA,IAAkBlyB,EAAE26C,WAAqB,OATxD,CAUJ,EACA8rJ,EAAO7iL,UAAUilL,iBAAmB,WAChC,GAAItkL,KAAKqQ,OAAOk0K,oBAAsBvkL,KAAKqQ,OAAOrtB,SAAWgd,KAAKqQ,OAAO21I,aAAc,CACnF,IAAI4+B,EAAc5kL,KAAKqQ,OAAO21I,aAAa6+B,iBAAiB,GAC5D,GAAID,EAAa,CACb,IAAIE,EAAY9kL,KAAKqQ,OAAO4wH,mBACxB8R,EAAa/yI,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,cAC/CwyK,EAAiB/kL,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,oBACnDyhC,EAAS8wI,EAAU7wI,cAAgB8+F,EAAaA,EAAW9+F,aAAe,IACzE8wI,EAAiBA,EAAe9wI,aAAe,GAChD+wI,EAAYhlL,KAAKi5C,cAAc4rI,iBAAiB,GAAGjhJ,IACnDu/H,EAAQyhB,EAAYhhJ,KAAOohJ,EAAY,EAAI,EAAIA,GAC/CthJ,EAAOkhJ,EAAYlhJ,KACnBuhJ,EAAariL,SAASuuB,KAAK5e,cAAc,IAAMvS,KAAKqQ,OAAOrtB,QAAQ4B,GAAK,eAC5E,GAAIu+K,EAAQnvH,GAAU4wI,EAAY/gJ,OAAS,EAAG,CAC1CihJ,EAAUluJ,UAAUzB,IAAI,YACxB,IAAI+vJ,EAAU,EACVH,GAAkB/kL,KAAKqQ,OAAOolG,cAAciiD,eAC5C13J,KAAKmlL,UAAUJ,EAAgBG,EAASN,EAAY7wI,MAAOrQ,GAAM,GACjEwhJ,GAAWH,EAAeF,iBAAiB,GAAG7wI,QAE9C++F,IACA/yI,KAAKmlL,UAAUpyC,EAAYmyC,EAASN,EAAY7wI,MAAOrQ,GAAM,GAC7DwhJ,GAAWnyC,EAAW8xC,iBAAiB,GAAG7wI,QAE9Ch0C,KAAKmlL,UAAUL,EAAWI,EAASN,EAAY7wI,MAAOrQ,GAAM,IACvD/1B,EAAAA,EAAAA,IAAkBs3K,KACnBA,EAAW1tJ,MAAM4a,SAAW,QAC5B8yI,EAAW1tJ,MAAMqM,IAAMoQ,EAAS,KAExC,MAEI,GAAI8wI,EAAUluJ,UAAUM,SAAS,YAAa,CAC1Cl3B,KAAKmlL,UAAUL,EAAW,KAAM,KAAM,MAAM,GACxC/xC,GACA/yI,KAAKmlL,UAAUpyC,EAAY,KAAM,KAAM,MAAM,GAE7CgyC,GACA/kL,KAAKmlL,UAAUJ,EAAgB,KAAM,KAAM,MAAM,GAErD,IAAIK,EAAQplL,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,YAI9C,GAHI6yK,GACAA,EAAMxuJ,UAAUjB,OAAO,cAEtBhoB,EAAAA,EAAAA,IAAkBs3K,GAAa,CAChCA,EAAW1tJ,MAAM4a,SAAW,WAC5B,IAAIkzI,EAAWT,EAAYhhJ,IAAMohJ,EACjCC,EAAW1tJ,MAAMqM,IAAMyhJ,EAAW,IACtC,CACJ,CAEJrlL,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAA6B,CAAC,EACrD,CACJ,CACJ,EACA6uJ,EAAO7iL,UAAU8lL,UAAY,SAAUruJ,EAAK8M,EAAKmQ,EAAOrQ,EAAMsgI,GACtDA,GACAltI,EAAIS,MAAMwc,MAAQA,EAAQ,KAC1Bjd,EAAIF,UAAUzB,IAAI,aAGlB2B,EAAIF,UAAUjB,OAAO,YAEzBmB,EAAIS,MAAMqM,IAAa,MAAPA,EAAcA,EAAM,KAAO,GAC3C9M,EAAIS,MAAMmM,KAAgB,OAATA,EAAgBxkD,SAAS43C,EAAIS,MAAMmM,KAAM,MAAQA,EAAOA,EAAO,KAAO5M,EAAIS,MAAMmM,KAAO,EAC5G,EAKAw+I,EAAO7iL,UAAUqoB,QAAU,WACvB,IAAIh7B,EAAcsT,KAAKqQ,OAAOrtB,QAC9B,GAAK0J,IAAiBA,EAAY6lB,cAAc,IAAMsrG,EAAAA,KAAyBnxH,EAAY6lB,cAAc,IAAMsrG,EAAAA,KAA/G,CAGA79G,KAAK8D,sBAEL,IAAI6kJ,EAAO3oJ,KAAKqQ,OAAO21I,aAAazzI,cAAc,IAAMsrG,EAAAA,IACxD7oF,EAAAA,GAAaW,OAAOgzH,EAAM,SAAU3oJ,KAAKwjL,iBACrCxjL,KAAKqQ,OAAOk0K,oBACZvkL,KAAKokL,mBAAkB,GAG3BpkL,KAAKkmJ,iBACL/uH,EAAAA,EAAAA,IAAY,CAACn3B,KAAKqQ,OAAO4wH,mBAAmB1uH,cAAc,IAAMsrG,EAAAA,KAA0BA,EAAAA,KAC1F1mF,EAAAA,EAAAA,IAAY,CAACwxH,GAAO9qC,EAAAA,IAEpB8qC,EAAKpxH,MAAMyc,OAAS,GAEpBh0C,KAAKqQ,OAAOrtB,QAAQu0C,MAAMwc,MAAQ,EAflC,CAgBJ,EAOAmuI,EAAOM,kBAAoB,WACvB,OAAOA,EAAAA,EAAAA,KACX,EACON,CACX,CA9lB4B,cCZxB3iJ,GAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAazCC,GAA0C,SAAUC,EAAYzB,EAAQn/C,EAAK6gD,GAC7E,IAA2H3pB,EAAvHD,EAAI5X,UAAUpmB,OAAQ4O,EAAIovB,EAAI,EAAIkoB,EAAkB,OAAT0B,EAAgBA,EAAOhhD,OAAOihD,yBAAyB3B,EAAQn/C,GAAO6gD,EACrH,GAAuB,kBAAZ/gC,SAAoD,oBAArBA,QAAQihC,SAAyBl5C,EAAIiY,QAAQihC,SAASH,EAAYzB,EAAQn/C,EAAK6gD,QACpH,IAAK,IAAI16B,EAAIy6B,EAAW3nD,OAAS,EAAGktB,GAAK,EAAGA,KAAS+Q,EAAI0pB,EAAWz6B,MAAIte,GAAKovB,EAAI,EAAIC,EAAErvB,GAAKovB,EAAI,EAAIC,EAAEioB,EAAQn/C,EAAK6H,GAAKqvB,EAAEioB,EAAQn/C,KAAS6H,GAChJ,OAAOovB,EAAI,GAAKpvB,GAAKhI,OAAOs1C,eAAegK,EAAQn/C,EAAK6H,GAAIA,CAChE,EAQIy+L,GAAiC,SAAU75K,GAE3C,SAAS65K,IACL,IAAIt1K,EAAmB,OAAXvE,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,KAEhE,OADAgQ,EAAMu1K,WAAa,CAAC,EACbv1K,CACX,CA4EA,OAjFAuvB,GAAU+lJ,EAAiB75K,GAW3B65K,EAAgBjmL,UAAU25G,aAAe,SAAUz7H,GAC/CyiB,KAAKwmI,SAAWjpJ,CACpB,EAKA+nM,EAAgBjmL,UAAU05G,aAAe,WACrC,OAAO/4G,KAAKwmI,QAChB,EAMA8+C,EAAgBjmL,UAAUmmL,YAAc,SAAUtwI,QAC/B,IAAXA,IAAqBA,EAAS,CAAC,QACPh6D,IAAxB8kB,KAAKkuG,iBACLluG,KAAKulL,YAAWx3K,EAAAA,EAAAA,IAAa6yH,EAAAA,GAAUA,EAAAA,GAAS6kD,UAAY,CAAEhmL,IAAI4hD,EAAAA,EAAAA,IAAQrhD,KAAKkuG,eAAgBh5D,GAC3F1uB,SAAU,wBAEetrC,IAA7B8kB,KAAKq8J,sBACLr8J,KAAKulL,YAAWx3K,EAAAA,EAAAA,IAAa6yH,EAAAA,GAAUA,EAAAA,GAAS8kD,eAAiB,CAAEjmL,IAAI4hD,EAAAA,EAAAA,IAAQrhD,KAAKq8J,oBAAqBnnH,GACrG1uB,SAAU,6BAEgBtrC,IAA9B8kB,KAAKq6J,uBACLr6J,KAAKulL,YAAWx3K,EAAAA,EAAAA,IAAa6yH,EAAAA,GAAUA,EAAAA,GAAS+kD,iBAAmB,CAAElmL,IAAI4hD,EAAAA,EAAAA,IAAQrhD,KAAKq6J,qBAAsBnlH,GACxG1uB,SAAU,wBAEtB,EAMA8+J,EAAgBjmL,UAAUumL,YAAc,SAAUtrM,GAC9C,OAAO0lB,KAAKulL,YAAWx3K,EAAAA,EAAAA,IAAa6yH,EAAAA,GAAUtmJ,GAClD,EAMAgrM,EAAgBjmL,UAAUwmL,oBAAsB,SAAU1yK,GACtDnT,KAAK26B,cAAcxnB,GAAM,EAC7B,EACAwsB,GAAW,EACPzB,EAAAA,EAAAA,OACDonJ,EAAgBjmL,UAAW,YAAQ,GACtCsgC,GAAW,EACPzB,EAAAA,EAAAA,OACDonJ,EAAgBjmL,UAAW,aAAS,GACvCsgC,GAAW,EACPzB,EAAAA,EAAAA,OACDonJ,EAAgBjmL,UAAW,kBAAc,GAC5CsgC,GAAW,EACPzB,EAAAA,EAAAA,OACDonJ,EAAgBjmL,UAAW,cAAU,GACxCsgC,GAAW,EACPzB,EAAAA,EAAAA,OACDonJ,EAAgBjmL,UAAW,sBAAkB,GAChDsgC,GAAW,EACPzB,EAAAA,EAAAA,OACDonJ,EAAgBjmL,UAAW,2BAAuB,GACrDsgC,GAAW,EACPzB,EAAAA,EAAAA,OACDonJ,EAAgBjmL,UAAW,4BAAwB,GACtDsgC,GAAW,EACPzB,EAAAA,EAAAA,OACDonJ,EAAgBjmL,UAAW,uBAAmB,GAC1CimL,CACX,CAnFqC,CAmFnCp/I,EAAAA,IAKE4/I,GAA8B,SAAUr6K,GAExC,SAASq6K,IACL,OAAkB,OAAXr6K,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAIA,OAPAu/B,GAAUumJ,EAAcr6K,GAIxBk0B,GAAW,EACPpB,EAAAA,EAAAA,IAAW,GAAI+mJ,KAChBQ,EAAazmL,UAAW,eAAW,GAC/BymL,CACX,CATkC,CAShC5/I,EAAAA,ICpHE6/I,GAA2B,WAQ3B,SAASA,EAAU11K,EAAQyiG,GACvB9yG,KAAKgmL,YAAc,GACnBhmL,KAAKimL,UAAW,EAChBjmL,KAAKqQ,OAASA,EACdrQ,KAAK8yG,eAAiBA,EACtB9yG,KAAK6D,kBACT,CAmWA,OA9VAkiL,EAAU1mL,UAAUwE,iBAAmB,WAC/B7D,KAAKqQ,OAAOuqB,cAGhB56B,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAqBrzB,KAAK+jI,WAAY/jI,MACrDA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAmBrzB,KAAKk5K,eAAgBl5K,MACvDA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAcrzB,KAAK2oD,aAAc3oD,MAChDA,KAAKqQ,OAAOkW,GAAG8M,EAAAA,IAAgBrzB,KAAK+jI,WAAY/jI,MAChDg1B,EAAAA,GAAaG,IAAIn1B,KAAKqQ,OAAOrtB,QAAS,UAAWgd,KAAKqtG,aAAcrtG,MACxE,EAKA+lL,EAAU1mL,UAAUyE,oBAAsB,WAClC9D,KAAKqQ,OAAOuqB,cAGhB56B,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAmBrzB,KAAKk5K,gBACxCl5K,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAqBrzB,KAAK+jI,YAC1C/jI,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAcrzB,KAAK2oD,cACnC3oD,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAgBrzB,KAAK+jI,YACrC/uG,EAAAA,GAAaW,OAAO31B,KAAKqQ,OAAOrtB,QAAS,UAAWgd,KAAKqtG,cAC7D,EACA04E,EAAU1mL,UAAUspD,aAAe,SAAUltE,GACzC,IAAI0iD,EAAS1iD,EAAE0iD,OAEfA,GAASwnF,EAAAA,EAAAA,IAAaxnF,EAAQ,YAClC,EACA4nJ,EAAU1mL,UAAUguG,aAAe,SAAU5xH,GACzC,IAAIu0B,EAAQhQ,KACRkmL,EAAOlmL,KAAKqQ,OACZ81K,EAAY,SAASr+K,KAAKqrB,UAAUc,UAIxC,GAHkB,KAAdx4C,EAAEu+D,SAAkBmsI,GAAa1qM,EAAE6zJ,UAAY42C,EAAK/2C,QACpDnvI,KAAKoP,OAES,KAAd3zB,EAAEu+D,UAAmBv+D,EAAE6+D,SAAY6rI,GAAa1qM,EAAE6zJ,WAAc42C,EAAK/2C,OAAQ,CAE7E,KADa/1G,EAAAA,EAAAA,IAAQx2B,SAASmjE,cAAe,IAAM83C,EAAAA,MACnCqoE,EAAKhzC,aAAaI,cAA2C,UAA3B4yC,EAAKhzC,aAAa9pJ,MAChC,SAAhC88L,EAAKn3C,kBAAkB3lJ,MAAgE,SAA7C88L,EAAKn3C,kBAAkBuiC,oBAAiCtxK,KAAKomL,kBACvG,OAEJpmL,KAAK+lE,cAAgBnjE,SAASmjE,cAC9B/lE,KAAKomL,kBAAkB7oM,MAAQ,GAC/B,IAAI8oM,EAAM/lM,OAAOgmM,QACbC,EAAMjmM,OAAOk5I,QACjBx5H,KAAKomL,kBAAkB30K,QACvBvB,YAAW,WACPF,EAAM+1D,cAAct0D,QACpBnxB,OAAOktF,SAAS64G,EAAKE,GACrBv2K,EAAMw2K,MAAMx2K,EAAMo2K,kBAAkB7oM,MAAOyyB,EAAMK,OAAO4sK,4BAA4B,GAAGhmB,SAAUjnJ,EAAMK,OAAO4sK,4BAA4B,GAAG9L,YAAY,GAC7J,GAAG,GACP,CACJ,EASA4U,EAAU1mL,UAAUmnL,MAAQ,SAAU3gM,EAAMoxK,EAAUlE,GAClD,IAGI58C,EACA54H,EACAkpM,EALAP,EAAOlmL,KAAKqQ,OACZm3E,EAAOurE,EACPke,EAAOha,EAIX,GAAKivB,EAAKhzC,aAAaI,cAA2C,UAA3B4yC,EAAKhzC,aAAa9pJ,MACrB,SAAhC88L,EAAKn3C,kBAAkB3lJ,MAAgE,SAA7C88L,EAAKn3C,kBAAkBuiC,kBADrE,CAIA,IACI38D,EAEAm5C,EACAohB,EAJA/0L,EAAO0L,EAAKoO,MAAM,MAElByyL,EAAWR,EAAK93B,cAGhBze,EAAW3vI,KAAKqQ,OAAOyxH,eACvB6N,IACAme,EAAQo4B,EAAK72B,qBACT62B,EAAK9yB,+BACL8b,EAASgX,EAAKh3B,2BAGtB,IAAK,IAAIroK,EAAI,EAAGA,EAAI1M,EAAKlC,OAAQ4O,IAAK,CAGlC,GAFA8tH,EAAOx6H,EAAK+E,SAAS2H,EAAEzL,WAAY,KAAK6Y,MAAM,MAC9CuzF,EAAOurE,EACFlsK,IAAM1M,EAAKlC,OAAS,GAA0C,KAArCkC,EAAK+E,SAAS2H,EAAEzL,WAAY,OAAgBoyB,EAAAA,EAAAA,IAAY04K,EAAKh2B,cAAc+gB,IAAQ,CAC7GzpF,IACA,KACJ,CACA,IAAK,IAAIvxE,EAAI,EAAGA,EAAI0+F,EAAK18H,OAAQg+B,IAAK,CAElC,GADAwwK,EAAUP,EAAK5V,iBAAiBW,EAAMzpF,GAClCmoD,EAAU,CACV,IAAIg3C,EAAMD,EAASxnM,SAAS+xL,EAAK71L,WAAY,KACzCwrM,EAAM94B,EAAM5uK,SAAS+xL,EAAK71L,WAAY,KAG1C,GAFAqrM,IAAWE,EAAIp0K,cAAc,mBAAqBi1E,EAAO,OACrDo/F,EAAIr0K,cAAc,mBAAqBi1E,EAAO,MAC9C0nF,IAAWuX,EAEXA,EADWvX,EAAOhwL,SAAS+xL,EAAK71L,WAAY,KAC7Bm3B,cAAc,mBAAqBi1E,EAAO,KAEjE,CACA,IAAKi/F,EAAS,CACVj/F,IACA,KACJ,CAGA,GADAjqG,GADA44H,EAAM+vE,EAAKlW,iBAAiBxoF,IAChBk/C,YAAcvwB,EAAIuwB,WAAJvwB,CAAgBxB,EAAKz1H,SAAS+2B,EAAE76B,WAAY,MAAQu5H,EAAKz1H,SAAS+2B,EAAE76B,WAAY,KACtG+6H,EAAIm9B,eAAiBn9B,EAAIjC,eAAiBiC,EAAI3/G,SAAU,CACxD,IAAIvI,EAAO,CACPmxE,OAAQ+2C,EACRtwH,KAAMtI,EACN05K,SAAUga,GAEdjxK,KAAKqQ,OAAOylB,QAAQzC,EAAAA,IAAoBplC,GACxCgjL,EAAOhjL,EAAKgpK,SACPhpK,EAAK1G,QACF2+L,EAAKzd,aACY,WAAbtyD,EAAI77H,KACJ0lB,KAAKqQ,OAAOo4J,WAAWwO,WAAWhG,EAAM96D,EAAIv0H,MAAOqkC,WAAWh4B,EAAKpI,OAGnEqgM,EAAKzd,WAAWwO,WAAWhG,EAAM96D,EAAIv0H,MAAOqM,EAAKpI,MAIjE,CACA2hG,GACJ,CACAypF,GACJ,CACAiV,EAAKtqB,gBAAgBsV,mBAAmB,CAAEja,SAAUA,EAAUkR,UAAWpV,GAAY,CAAEkE,SAAUga,EAAO,EAAG9I,UAAW3gF,EAAO,IAC7H,IAAIgzB,EAAOx6G,KAAKqQ,OAAOigK,iBAAiBW,EAAO,EAAGzpF,EAAO,GACrDgzB,IACA5jF,EAAAA,EAAAA,IAAU4jF,EAAM,CAAC,UAAW,aAAc,GAhE9C,CAkEJ,EACAurE,EAAU1mL,UAAU0kI,WAAa,WAC7B/jI,KAAK+hE,KAAO/hE,KAAK8yG,eAAe0R,WAAW,gBAC3CxkH,KAAKqQ,OAAOuW,IAAIyM,EAAAA,IAAqBrzB,KAAK+jI,YAC1C/jI,KAAKomL,kBAAoBpmL,KAAKqQ,OAAOO,cAAc,WAAY,CAC3D31B,UAAW,cACXiG,OAAQ,aACRq1C,MAAO,CAAEm9F,SAAU,KAAM,aAAc1zH,KAAK+hE,KAAK9lB,YAAY,gBAEjEj8C,KAAKqQ,OAAOrtB,QAAQmuB,YAAYnR,KAAKomL,kBACzC,EACAL,EAAU1mL,UAAU65K,eAAiB,SAAUz9L,GAC1B,cAAbA,EAAEwnB,OACFjD,KAAKoP,OAEa,mBAAb3zB,EAAEwnB,QACPjD,KAAKoP,MAAK,EAElB,EACA22K,EAAU1mL,UAAUwnL,YAAc,SAAUC,GACxC,GAAyC,KAArCxmM,OAAOymM,eAAe3rM,WAAmB,CACzC,IAAIu0J,EAAW3vI,KAAKqQ,OAAOyxH,eAC3B9hI,KAAKomL,kBAAkB7oM,MAAQyiB,KAAKgmL,YAAc,GAClD,IAAIl4B,OAAQ,EACRohB,OAAS,EACT/0L,EAAO6lB,KAAKqQ,OAAO+9I,cAOvB,GANIze,IACAme,EAAQ9tJ,KAAKqQ,OAAOg/I,qBAChBrvJ,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,IAAsD,UAAhC79G,KAAKqQ,OAAOkwH,kBAClE2uC,EAASlvK,KAAKqQ,OAAO8+J,uBAGc,SAAvCnvK,KAAKqQ,OAAO0+H,kBAAkB3lJ,KAAiB,CAC/C,IAAI4zL,EAAkBh9K,KAAKqQ,OAAOyiI,wBAAwB/tI,MAAK,SAAU9F,EAAG+F,GAAK,OAAO/F,EAAI+F,CAAG,IAC/F,GAAI8hL,EAAY,CAEZ,IADA,IAAIE,EAAkB,GACb7hL,EAAI,EAAGA,EAAInF,KAAKqQ,OAAO+xI,oBAAoBnqK,OAAQktB,IACxD6hL,EAAgB9nM,SAASimB,EAAE/pB,WAAY,KAAO4kB,KAAKqQ,OAC9C+xI,oBAAoBljK,SAASimB,EAAE/pB,WAAY,KAAKoO,WAEzDwW,KAAKinL,YAAYD,GAAiB,EAAO,KAAMF,GAC/C9mL,KAAKgmL,aAAe,IACxB,CACA,IAAS7gL,EAAI,EAAGA,EAAI63K,EAAgB/kM,OAAQktB,IAAK,CACzCA,EAAI,IACJnF,KAAKgmL,aAAe,MAExB,IAAIkB,EAAW,GACXC,EAAY,GACZC,EAAc,GAClB,GAAIz3C,EACAy3C,EAAY3nM,KAAKyf,MAAMkoL,EAAa,GAAG/pL,MAAMqC,KAAKouJ,EAAMkvB,EAAgB99L,SAASimB,EAAE/pB,WAAY,MAC3F01B,iBAAiB,6BACe,UAAhC9Q,KAAKqQ,OAAOkwH,iBAA+BvgI,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,IAC3EspE,EAAU1nM,KAAKyf,MAAMioL,EAAW,GAAG9pL,MAAMqC,KAAKwvK,EAAO8N,EAAgB99L,SAASimB,EAAE/pB,WAAY,MACxF01B,iBAAiB,8BAEW,SAAhC9Q,KAAKqQ,OAAOkwH,iBAA8BvgI,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,IACzE79G,KAAKqQ,OAAOyxH,iBAAmB9hI,KAAKqQ,OAAOkwH,kBAC5C2mD,EAASznM,KAAKyf,MAAMgoL,EAAU,GAAG7pL,MAAMqC,KAAKvlB,EAAK6iM,EAAgB99L,SAASimB,EAAE/pB,WAAY,MACpF01B,iBAAiB,iCAGxB,CACD,IAAIpP,EAAMs7K,EAAgB99L,SAASimB,EAAE/pB,WAAY,OAC5Co5H,EAAAA,EAAAA,IAAgBx0G,KAAKqQ,UAAYrQ,KAAKqQ,OAAOykG,sBAC7C90G,KAAKqQ,OAAO0kG,yBAA2B/0G,KAAKqQ,OAAO80I,uBAAuBC,aAC1EplJ,KAAKqQ,OAAOolG,cAAcrB,QAAQn8H,QAAU+nB,KAAKqQ,OAAOolG,cAAcC,qBACvEh0G,EAAMvnB,EAAK2F,KAAI,SAAU43B,GAAK,OAAOA,EAAE0pB,aAAa,gBAAkB,IAAG9qC,QAAQ0mL,EAAgB99L,SAASimB,EAAE/pB,WAAY,KAAKA,aAEjI8rM,EAASznM,KAAKyf,MAAMgoL,EAAU,GAAG7pL,MAAMqC,KAAKvlB,EAAK+E,SAASwiB,EAAItmB,WAAY,KAAK01B,iBAAiB,4BACpG,CACA,IAAIqxH,EAAQ+kD,EAASvmM,OAAOymM,GAAazmM,OAAOwmM,GAChDnnL,KAAKinL,YAAY9kD,GAAO,EAAO,KAAM2kD,EACzC,CACJ,KACK,CACD,IAAIx5K,EAAMtN,KAAKqnL,oBACf,GAAI/5K,EAAIjS,OAAQ,CACZ,GAAIyrL,EAAY,CACZ,IAAIvsL,EAAU,GACd,IAAS4K,EAAI,EAAGA,EAAImI,EAAIg6K,WAAWrvM,OAAQktB,IACvC5K,EAAQ9a,KAAKugB,KAAKqQ,OAAOk3K,uBAAuBj6K,EAAIg6K,WAAWpoM,SAASimB,EAAE/pB,WAAY,OAE1F4kB,KAAKinL,YAAY1sL,GAAS,EAAO,KAAMusL,GACvC9mL,KAAKgmL,aAAe,IACxB,CACA,IAAS7gL,EAAI,EAAGA,EAAImI,EAAIm+J,WAAWxzL,OAAQktB,IAAK,CACxCA,EAAI,IACJnF,KAAKgmL,aAAe,MAEpB7jD,EAAQ,GAAG9kI,MAAMqC,KAAKvlB,EAAKmzB,EAAIm+J,WAAWvsL,SAASimB,EAAE/pB,WAAY,MACjEopD,uBAAuB,8BACvBmrG,IACAxN,EAAM1iJ,KAAKyf,MAAMijI,EAAO,GAAG9kI,MAAMqC,KAAKouJ,EAAMxgJ,EAAIm+J,WAAWvsL,SAASimB,EAAE/pB,WAAY,MAC7EopD,uBAAuB,+BACxB0qI,GACA/sC,EAAM1iJ,KAAKyf,MAAMijI,EAAO,GAAG9kI,MAAMqC,KAAKwvK,EAAO5hK,EAAIm+J,WAAWvsL,SAASimB,EAAE/pB,WAAY,MAC9EopD,uBAAuB,gCAGpCxkC,KAAKinL,YAAY9kD,GAAO,EAAO,KAAM2kD,EACzC,CACJ,MAEI9mL,KAAKinL,YAAY,GAAG5pL,MAAMqC,KAAKM,KAAKqQ,OAAOrtB,QAAQwhD,uBAAuB,+BAA+B,EAAM,KAAMsiJ,EAE7H,CACA,IAAI74L,EAAO,CACPpI,KAAMma,KAAKgmL,YACXz+L,QAAQ,GAGZ,GADAyY,KAAKqQ,OAAOylB,QAAQzC,EAAAA,IAAmBplC,GACnCA,EAAK1G,OACL,OAEJyY,KAAKomL,kBAAkB7oM,MAAQyiB,KAAKgmL,YAAc/3L,EAAKpI,KAClD+sC,EAAAA,GAAQI,UAAU5qB,MAAM,qBAIzBpI,KAAKomL,kBAAkB91G,kBAAkB,EAAGtwE,KAAKomL,kBAAkB7oM,MAAMtF,QAHzE+nB,KAAKomL,kBAAkB1tJ,SAK3B14B,KAAKimL,UAAW,CACpB,CACJ,EACAF,EAAU1mL,UAAU4nL,YAAc,SAAU9kD,EAAOqlD,EAAQC,EAAUX,GAEjE,IADA,IAAIY,EAAgC,kBAAbvlD,EAAM,GACpB3rH,EAAI,EAAGA,EAAI2rH,EAAMlqJ,OAAQu+B,IAAK,CACnC,GAAIswK,GAAcU,EAAQ,CACtB,IAAI74B,EAASzvK,SAASijJ,EAAMjjJ,SAASs3B,EAAEp7B,WAAY,KAAKgmD,aAAay8E,EAAAA,IAAwB,IAC7F79G,KAAKgmL,aAAehmL,KAAKqQ,OAAO4jG,aAAa/0H,SAASyvK,EAAOvzK,WAAY,KAAKoO,WAAa,IAC/F,CACIk+L,EACKvlD,EAAMjjJ,SAASs3B,EAAEp7B,WAAY,KAAKw7C,UAAUM,SAAS,YACtDl3B,KAAKgmL,aAAe7jD,EAAMjjJ,SAASs3B,EAAEp7B,WAAY,KAAK++E,WAI1Dn6D,KAAKgmL,aAAe7jD,EAAMjjJ,SAASs3B,EAAEp7B,WAAY,KAEjDo7B,EAAI2rH,EAAMlqJ,OAAS,IACnB+nB,KAAKgmL,aAAeyB,EAE5B,CACJ,EAOA1B,EAAU1mL,UAAU+P,KAAO,SAAU03K,GAC7BlkL,SAAS+kL,sBAAsB,SAAW3nL,KAAKomL,oBAC/CpmL,KAAK6mL,YAAYC,GACjBlkL,SAASglL,YAAY,QACrB5nL,KAAKomL,kBAAkBxjM,QAEvBod,KAAKimL,WACL3lM,OAAOymM,eAAec,kBACtB7nL,KAAKimL,UAAW,EAExB,EAOAF,EAAU1mL,UAAUu8B,cAAgB,WAChC,MAAO,WACX,EAOAmqJ,EAAU1mL,UAAUqoB,QAAU,WAC1B1nB,KAAK8D,sBACD9D,KAAKomL,oBACLzwJ,EAAAA,EAAAA,IAAO31B,KAAKomL,kBAEpB,EACAL,EAAU1mL,UAAUgoL,kBAAoB,WACpC,IAAIhuB,EAAUr5J,KAAKqQ,OACf/C,EAAM,CAAEjS,QAAQ,GACpB,GAAuC,SAAnCg+J,EAAQtqB,kBAAkB3lJ,KAAiB,CAC3C,IAAI0+L,EAAgBzuB,EAAQ4jB,4BACxB1pK,OAAM,EACNk4J,EAAa,GACbtmK,OAAI,EACR,IAAKA,EAAI,EAAGA,EAAI2iL,EAAc7vM,SACtB6vM,EAAc5oM,SAASimB,EAAE/pB,WAAY,KAAK+1L,YAAYl5L,QACtDwzL,EAAWhsL,KAAKqoM,EAAc5oM,SAASimB,EAAE/pB,WAAY,KAAK67K,WAE1D6wB,EAAc5oM,SAASimB,EAAE/pB,WAAY,KAAK+1L,YAAYl5L,SACjDs7B,IACDA,EAAMjX,KAAKK,UAAUmrL,EAAc5oM,SAASimB,EAAE/pB,WAAY,KAAK+1L,YAAYpsK,SAE3EwO,IAAQjX,KAAKK,UAAUmrL,EAAc5oM,SAASimB,EAAE/pB,WAAY,KAAK+1L,YAAYpsK,UARnDI,KAatCsmK,EAAW1mK,MAAK,SAAU9F,EAAG+F,GAAK,OAAO/F,EAAI+F,CAAG,IAC5CG,IAAM2iL,EAAc7vM,SACpBq1B,EAAM,CAAEjS,QAAQ,EAAMowK,WAAYA,EAAY6b,WAAYQ,EAAc,GAAG3W,aAEnF,CACA,OAAO7jK,CACX,EACOy4K,CACX,CAlX+B,GCP3BxmJ,GAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAazCC,GAA0C,SAAUC,EAAYzB,EAAQn/C,EAAK6gD,GAC7E,IAA2H3pB,EAAvHD,EAAI5X,UAAUpmB,OAAQ4O,EAAIovB,EAAI,EAAIkoB,EAAkB,OAAT0B,EAAgBA,EAAOhhD,OAAOihD,yBAAyB3B,EAAQn/C,GAAO6gD,EACrH,GAAuB,kBAAZ/gC,SAAoD,oBAArBA,QAAQihC,SAAyBl5C,EAAIiY,QAAQihC,SAASH,EAAYzB,EAAQn/C,EAAK6gD,QACpH,IAAK,IAAI16B,EAAIy6B,EAAW3nD,OAAS,EAAGktB,GAAK,EAAGA,KAAS+Q,EAAI0pB,EAAWz6B,MAAIte,GAAKovB,EAAI,EAAIC,EAAErvB,GAAKovB,EAAI,EAAIC,EAAEioB,EAAQn/C,EAAK6H,GAAKqvB,EAAEioB,EAAQn/C,KAAS6H,GAChJ,OAAOovB,EAAI,GAAKpvB,GAAKhI,OAAOs1C,eAAegK,EAAQn/C,EAAK6H,GAAIA,CAChE,EAuCIkhM,GAAgC,SAAUt8K,GAE1C,SAASs8K,IACL,OAAkB,OAAXt8K,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAUA,OAbAu/B,GAAUwoJ,EAAgBt8K,GAI1Bk0B,GAAW,EACPzB,EAAAA,EAAAA,OACD6pJ,EAAe1oL,UAAW,aAAS,GACtCsgC,GAAW,EACPzB,EAAAA,EAAAA,OACD6pJ,EAAe1oL,UAAW,iBAAa,GAC1CsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV6pJ,EAAe1oL,UAAW,mBAAe,GACrC0oL,CACX,CAfoC,CAelC7hJ,EAAAA,IAKE8hJ,GAA8B,SAAUv8K,GAExC,SAASu8K,IACL,OAAkB,OAAXv8K,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAOA,OAVAu/B,GAAUyoJ,EAAcv8K,GAIxBk0B,GAAW,EACPpB,EAAAA,EAAAA,IAAW,GAAIwpJ,KAChBC,EAAa3oL,UAAW,eAAW,GACtCsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV8pJ,EAAa3oL,UAAW,mBAAe,GACnC2oL,CACX,CAZkC,CAYhC9hJ,EAAAA,IAKE+8C,GAA2B,SAAUx3E,GAErC,SAASw3E,IACL,OAAkB,OAAXx3E,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAwCA,OA3CAu/B,GAAU0jD,EAAWx3E,GAIrBk0B,GAAW,EACPzB,EAAAA,EAAAA,OACD+kD,EAAU5jF,UAAW,aAAS,GACjCsgC,GAAW,EACPzB,EAAAA,EAAAA,OACD+kD,EAAU5jF,UAAW,gBAAY,GACpCsgC,GAAW,EACPzB,EAAAA,EAAAA,OACD+kD,EAAU5jF,UAAW,aAAS,GACjCsgC,GAAW,EACPzB,EAAAA,EAAAA,OACD+kD,EAAU5jF,UAAW,iBAAa,GACrCsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV+kD,EAAU5jF,UAAW,oBAAgB,GACxCsgC,GAAW,EACPzB,EAAAA,EAAAA,OACD+kD,EAAU5jF,UAAW,iBAAa,GACrCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,CAAC,IACX+kD,EAAU5jF,UAAW,yBAAqB,GAC7CsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,CAAC,IACX+kD,EAAU5jF,UAAW,sBAAkB,GAC1CsgC,GAAW,EACPzB,EAAAA,EAAAA,OACD+kD,EAAU5jF,UAAW,YAAQ,GAChCsgC,GAAW,EACPzB,EAAAA,EAAAA,OACD+kD,EAAU5jF,UAAW,mBAAe,GACvCsgC,GAAW,EACPzB,EAAAA,EAAAA,OACD+kD,EAAU5jF,UAAW,WAAO,GAC/BsgC,GAAW,EACPzB,EAAAA,EAAAA,OACD+kD,EAAU5jF,UAAW,oBAAgB,GACxCsgC,GAAW,EACPzB,EAAAA,EAAAA,OACD+kD,EAAU5jF,UAAW,iBAAa,GAC9B4jF,CACX,CA7C+B,CA6C7B/8C,EAAAA,IAKE+hJ,GAAwC,SAAUx8K,GAElD,SAASw8K,IACL,OAAkB,OAAXx8K,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAUA,OAbAu/B,GAAU0oJ,EAAwBx8K,GAIlCk0B,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV+pJ,EAAuB5oL,UAAW,mBAAe,GACpDsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,IACV+pJ,EAAuB5oL,UAAW,iBAAa,GAClDsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,IACV+pJ,EAAuB5oL,UAAW,qBAAiB,GAC/C4oL,CACX,CAf4C,CAe1C/hJ,EAAAA,IAKEgiJ,GAAgC,SAAUz8K,GAE1C,SAASy8K,IACL,OAAkB,OAAXz8K,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CA4BA,OA/BAu/B,GAAU2oJ,EAAgBz8K,GAI1Bk0B,GAAW,EACPpB,EAAAA,EAAAA,IAAW,GAAI0kD,KAChBilG,EAAe7oL,UAAW,eAAW,GACxCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,cACVgqJ,EAAe7oL,UAAW,YAAQ,GACrCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,YACVgqJ,EAAe7oL,UAAW,YAAQ,GACrCsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVgqJ,EAAe7oL,UAAW,2BAAuB,GACpDsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,OACVgqJ,EAAe7oL,UAAW,0BAAsB,GACnDsgC,GAAW,EACPzB,EAAAA,EAAAA,OACDgqJ,EAAe7oL,UAAW,iBAAa,GAC1CsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVgqJ,EAAe7oL,UAAW,oBAAgB,GAC7CsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVgqJ,EAAe7oL,UAAW,6BAAyB,GACtDsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVgqJ,EAAe7oL,UAAW,6BAAyB,GAC/C6oL,CACX,CAjCoC,CAiClChiJ,EAAAA,IAKEiiJ,GAAmC,SAAU18K,GAE7C,SAAS08K,IACL,OAAkB,OAAX18K,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CA4BA,OA/BAu/B,GAAU4oJ,EAAmB18K,GAI7Bk0B,GAAW,EACPzB,EAAAA,EAAAA,IAAS,QACViqJ,EAAkB9oL,UAAW,YAAQ,GACxCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,SACViqJ,EAAkB9oL,UAAW,yBAAqB,GACrDsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,WACViqJ,EAAkB9oL,UAAW,YAAQ,GACxCsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACViqJ,EAAkB9oL,UAAW,oBAAgB,GAChDsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACViqJ,EAAkB9oL,UAAW,wBAAoB,GACpDsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,YACViqJ,EAAkB9oL,UAAW,oBAAgB,GAChDsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACViqJ,EAAkB9oL,UAAW,qCAAiC,GACjEsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACViqJ,EAAkB9oL,UAAW,oBAAgB,GAChDsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACViqJ,EAAkB9oL,UAAW,4BAAwB,GACjD8oL,CACX,CAjCuC,CAiCrCjiJ,EAAAA,IAKEkiJ,GAAgC,SAAU38K,GAE1C,SAAS28K,IACL,OAAkB,OAAX38K,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAgBA,OAnBAu/B,GAAU6oJ,EAAgB38K,GAI1Bk0B,GAAW,EACPzB,EAAAA,EAAAA,IAAS,KACVkqJ,EAAe/oL,UAAW,cAAU,GACvCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,KACVkqJ,EAAe/oL,UAAW,WAAO,GACpCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,aACVkqJ,EAAe/oL,UAAW,gBAAY,GACzCsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVkqJ,EAAe/oL,UAAW,kBAAc,GAC3CsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVkqJ,EAAe/oL,UAAW,oBAAgB,GACtC+oL,CACX,CArBoC,CAqBlCliJ,EAAAA,IAKEmiJ,GAAiC,SAAU58K,GAE3C,SAAS48K,IACL,OAAkB,OAAX58K,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAIA,OAPAu/B,GAAU8oJ,EAAiB58K,GAI3Bk0B,GAAW,EACPzB,EAAAA,EAAAA,OACDmqJ,EAAgBhpL,UAAW,gBAAY,GACnCgpL,CACX,CATqC,CASnCniJ,EAAAA,IAKEoiJ,GAAkC,SAAU78K,GAE5C,SAAS68K,IACL,OAAkB,OAAX78K,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAIA,OAPAu/B,GAAU+oJ,EAAkB78K,GAI5Bk0B,GAAW,EACPzB,EAAAA,EAAAA,IAAS,SACVoqJ,EAAiBjpL,UAAW,gBAAY,GACpCipL,CACX,CATsC,CASpCpiJ,EAAAA,IAKEqiJ,GAAgC,SAAU98K,GAE1C,SAAS88K,IACL,OAAkB,OAAX98K,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAIA,OAPAu/B,GAAUgpJ,EAAgB98K,GAI1Bk0B,GAAW,EACPzB,EAAAA,EAAAA,IAAS,WACVqqJ,EAAelpL,UAAW,YAAQ,GAC9BkpL,CACX,CAToC,CASlCriJ,EAAAA,IAKEsiJ,GAA+B,SAAU/8K,GAEzC,SAAS+8K,IACL,OAAkB,OAAX/8K,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CA4BA,OA/BAu/B,GAAUipJ,EAAe/8K,GAIzBk0B,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVsqJ,EAAcnpL,UAAW,oBAAgB,GAC5CsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVsqJ,EAAcnpL,UAAW,uBAAmB,GAC/CsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVsqJ,EAAcnpL,UAAW,wBAAoB,GAChDsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVsqJ,EAAcnpL,UAAW,yBAAqB,GACjDsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVsqJ,EAAcnpL,UAAW,yBAAqB,GACjDsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVsqJ,EAAcnpL,UAAW,iCAA6B,GACzDsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,KACVsqJ,EAAcnpL,UAAW,eAAW,GACvCsgC,GAAW,EACPzB,EAAAA,EAAAA,OACDsqJ,EAAcnpL,UAAW,uBAAmB,GAC/CsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVsqJ,EAAcnpL,UAAW,yBAAqB,GAC1CmpL,CACX,CAjCmC,CAiCjCtiJ,EAAAA,IAKEuiJ,GAA8B,SAAUh9K,GAExC,SAASg9K,IACL,OAAkB,OAAXh9K,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAwCA,OA3CAu/B,GAAUkpJ,EAAch9K,GAIxBk0B,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVuqJ,EAAappL,UAAW,mBAAe,GAC1CsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVuqJ,EAAappL,UAAW,oBAAgB,GAC3CsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVuqJ,EAAappL,UAAW,qBAAiB,GAC5CsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,WACVuqJ,EAAappL,UAAW,YAAQ,GACnCsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVuqJ,EAAappL,UAAW,2BAAuB,GAClDsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVuqJ,EAAappL,UAAW,yBAAqB,GAChDsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVuqJ,EAAappL,UAAW,+BAA2B,GACtDsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,KACVuqJ,EAAappL,UAAW,gBAAY,GACvCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,KACVuqJ,EAAappL,UAAW,sBAAkB,GAC7CsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,KACVuqJ,EAAappL,UAAW,sBAAkB,GAC7CsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,QACVuqJ,EAAappL,UAAW,sBAAkB,GAC7CsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,CAAC,IACXuqJ,EAAappL,UAAW,cAAU,GACrCsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVuqJ,EAAappL,UAAW,wBAAoB,GACxCopL,CACX,CA7CkC,CA6ChCviJ,EAAAA,IAKEwiJ,GAAkC,SAAUj9K,GAE5C,SAASi9K,IACL,OAAkB,OAAXj9K,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAIA,OAPAu/B,GAAUmpJ,EAAkBj9K,GAI5Bk0B,GAAW,EACPzB,EAAAA,EAAAA,IAAS,YACVwqJ,EAAiBrpL,UAAW,qBAAiB,GACzCqpL,CACX,CATsC,CASpCxiJ,EAAAA,IAYE4kG,GAAsB,SAAUr/H,GAShC,SAASq/H,EAAKpqI,EAAS1d,GACnB,IAAIgtB,EAAQvE,EAAO/L,KAAKM,KAAMU,EAAS1d,IAAYgd,KAwEnD,OAvEAgQ,EAAMyzK,sBAAuB,EAC7BzzK,EAAM2mJ,cAAgB,GACtB3mJ,EAAM24K,MAAO,EACb34K,EAAM44K,iBAAmB,EACzB54K,EAAM64K,gBAAkB,EACxB74K,EAAM84K,YAAc,EACpB94K,EAAM+4K,aAAe,EACrB/4K,EAAMg5K,kBAAoB,EAC1Bh5K,EAAMi5K,mBAAqB,EAC3Bj5K,EAAMk5K,eAAiB,EACvBl5K,EAAMm5K,kBAAoB,GAC1Bn5K,EAAMo5K,mBAAqB,GAC3Bp5K,EAAMq5K,eAAiB,GACvBr5K,EAAMs5K,MAAQ,CAAC,EACft5K,EAAMu5K,iBAAkB,EAExBv5K,EAAMw5K,WAAa,EACnBx5K,EAAMy5K,iBAAmBp/I,EAAAA,GAAUhrC,UAAU8rC,QAE7Cn7B,EAAM05K,mBAAoB,EAS1B15K,EAAM+6I,oBAAqB,EAE3B/6I,EAAMg8I,MAAQ,GAEdh8I,EAAM25I,OAAS,GAEf35I,EAAM85I,cAAgB,CAAC,EAEvB95I,EAAM25K,OAAS,EAEf35K,EAAMulG,iBAAkB,EAExBvlG,EAAM45K,kBAAmB,EAEzB55K,EAAMm2I,mBAAoB,EAE1Bn2I,EAAMyuJ,sBAAwB,EAE9BzuJ,EAAMyqK,uBAAyB,GAE/BzqK,EAAM89J,uBAAyB,GAE/B99J,EAAM65K,mBAAoB,EAE1B75K,EAAMulJ,qBAAuB,EAE7BvlJ,EAAMisJ,gBAAiB,EAEvBjsJ,EAAM85K,oBAAqB,EAE3B95K,EAAMkvJ,WAAY,EAClBlvJ,EAAM+5K,kBAAoB,CAAC,EAE3B/5K,EAAMg6K,qBAAkB9uM,EAExB80B,EAAMi6K,aAAe,GAErBj6K,EAAMk6K,cAAe,EAErBl6K,EAAMm6K,cAAe,EACrBn6K,EAAMy6B,SAAU,EAChB2/I,EAAO3gM,OAAO47K,KACdrjL,EAAAA,EAAAA,IAAS,mBAAoBguB,EAAMq6K,qBAAsBr6K,GAClDA,CACX,CA0+KA,IAAIo6K,EAycJ,OArgMA7qJ,GAAUurG,EAAMr/H,GAmFhB2+K,EAASt/C,EAMTA,EAAKzrI,UAAUytC,eAAiB,WAW5B,IAVA,IAAIw9I,EAAY,CAAC,eAAgB,eAC7B,iBAAkB,gBAAiB,UAAW,iBAAkB,mBAAoB,kBACpF98I,EAAkB,CAClBwnE,aAAc,CAAC,WAAY,YAAa,oBAAqB,oBAAqB,aAClF7rH,eAAgB,CAAC,OAAQ,OAAQ,sBAAuB,qBAAsB,gBAC9EssH,cAAe,CAAC,eAAgB,mBAAoB,oBAAqB,oBACrE,4BAA6B,oBACjCmB,eAAgB,CAAC,SAAU,WAAY,cACvCX,aAAc,GAAI7B,QAAS,GAAIqlE,iBAAkB,GAAI8Q,eAAgB,IAEhEplL,EAAI,EAAGA,EAAImlL,EAAUryM,OAAQktB,IAElC,IADA,IAAIqlL,EAAgBxqL,KAAKsqL,EAAUprM,SAASimB,EAAE/pB,WAAY,MACjDmzB,EAAK,EAAGvoB,EAAKwnD,EAAgB88I,EAAUprM,SAASimB,EAAE/pB,WAAY,MAAOmzB,EAAKvoB,EAAG/N,OAAQs2B,IAAM,QAEzFi8K,EAAc,GADXxkM,EAAGuoB,GAEjB,CAEJ,IAAIwQ,EAAO/e,KAAKg1G,aAAax+G,SACzBgvF,EAAW3mG,OAAOulB,OAAO,CAAE5N,cAAUtb,GAAa8kB,KAAKg1G,cAC3Dh1G,KAAK26B,cAAc,CAAEq6E,aAAcxvB,IAAY,GAE3CxlF,KAAKyrD,kBACEzrD,KAAKy1G,cAA0B,WAAmB,gBAE7Dz1G,KAAK8pL,qBAAsBn8K,EAAAA,EAAAA,IAAkB3N,KAAKyqL,eAClD,IAAI/9F,EAAc1sF,KAAKotC,aAAak9I,GAGpC,OAFA9kG,EAAShvF,SAAWuoB,EACpB/e,KAAK26B,cAAc,CAAEq6E,aAAcxvB,IAAY,GACxCkH,CACX,EAOAo+C,EAAKzrI,UAAUwlC,gBAAkB,WAC7B7kC,KAAK0qL,iBACL1qL,KAAK2qL,yBACL,IAAI9kJ,EAAU,GACd,OAAI7lC,KAAK46B,cAGL56B,KAAK9W,gBACL28C,EAAQpmD,KAAK,CACT4lD,OAAQ,SACRp3C,KAAM,CAAC+R,KAAMA,KAAK7W,eAAgB6W,KAAK8yG,kBAG3C9yG,KAAK4qL,kBACL/kJ,EAAQpmD,KAAK,CACT4lD,OAAQ,cACRp3C,KAAM,CAAC+R,KAAMA,KAAK8yG,kBAGtB9yG,KAAK6qL,gBACLhlJ,EAAQpmD,KAAK,CACT4lD,OAAQ,YACRp3C,KAAM,CAAC+R,QAGXA,KAAK/W,cACL48C,EAAQpmD,KAAK,CACT4lD,OAAQ,OACRp3C,KAAM,CAAC+R,KAAMA,KAAKi2G,aAAcj2G,KAAKkwF,cAAelwF,KAAK8yG,kBAG7D9yG,KAAK60G,aACLhvE,EAAQpmD,KAAK,CACT4lD,OAAQ,QACRp3C,KAAM,CAAC+R,KAAMA,KAAKg1G,gBAGtBh1G,KAAK8uI,gBACLjpG,EAAQpmD,KAAK,CACT4lD,OAAQ,YACRp3C,KAAM,CAAC+R,KAAMA,KAAK+uI,kBAAmB/uI,KAAK8yG,kBAGlDjtE,EAAQpmD,KAAK,CACT4lD,OAAQ,SACRp3C,KAAM,CAAC+R,QAEPA,KAAK0yJ,iBACL7sH,EAAQpmD,KAAK,CACT4lD,OAAQ,UACRp3C,KAAM,CAAC+R,QAGXA,KAAKw4K,qBACL3yI,EAAQpmD,KAAK,CACT4lD,OAAQ,iBACRp3C,KAAM,CAAC+R,QAGXA,KAAKw1G,eACL3vE,EAAQpmD,KAAK,CACT4lD,OAAQ,QACRp3C,KAAM,CAAC+R,KAAMA,KAAKy1G,cAAez1G,KAAKkwF,cAAelwF,KAAK8yG,kBAG9D9yG,KAAKg8E,WAAW/jG,QAChB4tD,EAAQpmD,KAAK,CAAE4lD,OAAQ,YAAap3C,KAAM,CAAC+R,KAAMA,KAAK8yG,kBAEtD9yG,KAAK8qL,YACLjlJ,EAAQpmD,KAAK,CACT4lD,OAAQ,YACRp3C,KAAM,CAAC+R,KAAMA,KAAK8yG,mBAGtB9yG,KAAKnS,SAAWmS,KAAKyxI,kBACrB5rG,EAAQpmD,KAAK,CACT4lD,OAAQ,UACRp3C,KAAM,CAAC+R,KAAMA,KAAK8yG,mBAGtB9yG,KAAK80G,sBAAwB90G,KAAKgiJ,6BAClCn8G,EAAQpmD,KAAK,CACT4lD,OAAQ,gBACRp3C,KAAM,CAAC+R,KAAMA,KAAK8yG,mBAGtB9yG,KAAKgrI,oBAAsBhrI,KAAKwnJ,YAAcxnJ,KAAK4oL,kBAAoB5oL,KAAK6oL,kBAC5EhjJ,EAAQpmD,KAAK,CAAE4lD,OAAQ,SAAUp3C,KAAM,CAAC+R,KAAMA,KAAK8yG,kBAEnD9yG,KAAK+qL,gBAAgB/qL,KAAKo0G,UAC1BvuE,EAAQpmD,KAAK,CACT4lD,OAAQ,gBACRp3C,KAAM,CAAC+R,KAAMA,KAAK8yG,mBAGtB9yG,KAAKkzI,aAAaG,aAAerzI,KAAKkzI,aAAaK,eAAiBvzI,KAAKkzI,aAAaI,eACtFztG,EAAQpmD,KAAK,CACT4lD,OAAQ,OACRp3C,KAAM,CAAC+R,KAAMA,KAAK8yG,kBAG1B9yG,KAAKgrL,sBAAsBnlJ,IAhGhBA,CAkGf,EACAilG,EAAKzrI,UAAU2rL,sBAAwB,SAAUnlJ,GACzC7lC,KAAK+0G,yBACLlvE,EAAQpmD,KAAK,CACT4lD,OAAQ,iBACRp3C,KAAM,CAAC+R,KAAMA,KAAK8yG,kBAGtB9yG,KAAKy1G,cAAcC,mBACnB7vE,EAAQpmD,KAAK,CACT4lD,OAAQ,gBACRp3C,KAAM,CAAC+R,KAAMA,KAAK8yG,kBAGtB9yG,KAAKirL,kBACLplJ,EAAQpmD,KAAK,CACT4lD,OAAQ,cACRp3C,KAAM,CAAC+R,KAAMA,KAAK8yG,kBAGtB9yG,KAAKmmH,gBACLtgF,EAAQpmD,KAAK,CACT4lD,OAAQ,aACRp3C,KAAM,CAAC+R,KAAMA,KAAK8yG,kBAGtB9yG,KAAKkrL,mBACLrlJ,EAAQpmD,KAAK,CACT4lD,OAAQ,gBACRp3C,KAAM,CAAC+R,KAAMA,KAAK8yG,kBAGtB9yG,KAAKmrL,oBAAoBnrL,KAAKo0G,UAC9BvuE,EAAQpmD,KAAK,CAAE4lD,OAAQ,aAAcp3C,KAAM,CAAC+R,KAAMA,KAAK8yG,kBAEvD9yG,KAAKmqL,cACLtkJ,EAAQpmD,KAAK,CAAE4lD,OAAQ,SAAUp3C,KAAM,CAAC+R,OAEhD,EAOA8qI,EAAKzrI,UAAU+rC,UAAY,WACvBprC,KAAK8yG,eAAiB,IAAI6xD,GAC1B3kK,KAAKorL,iBACLprL,KAAKqrL,oBACT,EACAvgD,EAAKzrI,UAAU+rL,eAAiB,WAC5BprL,KAAKowG,WAAY,EACjBpwG,KAAKkwF,cAAgB,GACrBlwF,KAAK22J,cAAgB,GACrB32J,KAAKsrL,SAAW,GAChBtrL,KAAK8rF,eAAgB,EACrB9rF,KAAKg6B,wBAAyB,EAC9Bh6B,KAAKs6B,uBAAwB,EAC7Bt6B,KAAKurL,WAAa,CAAC,EACnBvrL,KAAKmvI,QAAS,EACdnvI,KAAKotK,aAAe,OACpBptK,KAAKmqK,qBAAsB,EAC3BnqK,KAAK2oK,oBAAqB,EAC1B3oK,KAAKypL,iBAAmBp/I,EAAAA,GAAUhrC,UAAU8rC,QAC5CnrC,KAAK4/H,gBAAkB,CACnB1oG,SAAU,WAAY9gC,SAAU,WAAY++F,MAAO,QAAS0qC,YAAa,cAAeC,mBAAoB,qBAC5GC,SAAU,WAAYC,gBAAiB,kBAAmBC,SAAU,WAAY9pI,WAAY,aAAc47F,SAAU,WACpHpR,OAAQ,SAAUu/C,QAAS,UAAWhuC,KAAM,QAEhDlyF,KAAKwrL,cAAgB,CACjBC,YAAa,wBACbC,KAAM,OACNC,MAAO,QACPC,qBAAsB,sBACtBC,cAAe,gDACfC,QAAS,wBACTC,cAAe,wBACfC,aAAc,uCACdC,eAAgB,qBAChBC,qBAAsB,uHAEtBC,IAAK,MACLC,KAAM,OACNC,OAAQ,SACRC,OAAQ,SACRC,OAAQ,SACRziD,MAAO,QACP0iD,UAAW,aACXC,YAAa,eACbC,WAAY,cACZC,UAAW,aACXv0F,OAAQ,SACRw0F,cAAe,UACfC,KAAM,OACNC,KAAM,OACNzjG,MAAO,QACP0jG,mBAAoB,yCACpBC,qBAAsB,2CACtBC,WAAY,OACZC,SAAU,KACVlpM,aAAc,SACdmpM,cAAe,cACfC,aAAc,iBACdC,iBAAkB,yCAClBC,qBAAsB,mEACtBC,cAAe,0CACfC,WAAY,+CACZC,cAAe,gBACfC,cAAe,iBACfC,OAAQ,mBACRC,aAAc,SACdC,YAAa,QACbC,WAAY,cACZC,cAAe,sBACfC,KAAM,OACNC,SAAU,YACVC,YAAa,oBACbC,SAAU,WACVC,YAAa,mBACbC,OAAQ,OACRC,QAAS,WACTC,QAAS,QACTC,WAAY,YACZC,MAAO,QACPC,SAAU,YACVC,SAAU,YACVC,gBAAiB,qBACjBC,YAAa,eACbC,mBAAoB,wBACpBC,WAAY,gBACZC,WAAY,kBACZC,KAAM,OACNC,MAAO,uBACPC,QAAS,yBACTC,YAAa,eACbC,YAAa,iBACbC,eAAgB,oCAChBC,YAAa,8BACbC,gBAAiB,2BACjBC,YAAa,0BACb/sC,aAAc,wBACdgtC,cAAe,WACfC,WAAY,sBACZhqC,QAAS,sBACTiqC,WAAY,sBACZC,QAAS,sBACTC,OAAQ,SACRC,UAAW,aACXC,SAAU,YACVC,aAAc,gBACdC,SAAU,YACVC,cAAe,iBACfC,eAAgB,kBAChBC,WAAY,cACZC,aAAc,gBACdC,WAAY,SACZC,UAAW,aACXC,oBAAqB,kCACrBC,OAAQ,SACRC,WAAY,OACZC,YAAa,QACbC,SAAU,mBACVC,YAAa,eACbC,MAAO,QACPC,aAAc,iBACdC,WAAY,eACZC,WAAY,eACZC,eAAgB,mBAChBC,UAAW,aACXC,QAAS,UACTC,aAAc,gBACdC,wBAAyB,kBACzBC,4BAA6B,gBAC7BC,IAAK,MACLC,GAAI,KACJC,cAAe,mBACfC,qBAAsB,qBACtBC,sBAAuB,sBACvBC,eAAgB,cAChBC,wBAAyB,iBACzBC,qBAAsB,qBACtBC,uBAAwB,yBACxBC,SAAU,cACVC,SAAU,cACVC,aAAc,iBACdC,aAAc,iBACdC,sBAAuB,2BACvBC,sBAAuB,2BACvB5oM,KAAM,OACN6oM,kBAAmB,qCACnBC,gBAAiB,sBACjBC,sBAAuB,qCACvBC,iBAAkB,4BAClBC,aAAc,kBACdC,aAAc,oBACdC,kBAAmB,mCACnBC,WAAY,cACZC,UAAW,YACXC,cAAe,YACfC,eAAgB,aAChBC,SAAU,OACVC,SAAU,WACVC,UAAW,aAEfrzL,KAAK26C,WAAa,CACd24I,UAAW,YACXC,QAAS,UACTC,WAAY,aACZC,UAAW,YACXC,UAAW,kBACXC,QAAS,gBACTC,WAAY,mBACZC,UAAW,kBACX9/H,KAAM,OACN7rD,IAAK,MACLmhE,OAAQ,SACRyqH,SAAU,YACVC,QAAS,WACT//H,OAAQ,SACRC,SAAU,WACV+/H,cAAe,kBACfC,gBAAiB,oBACjBC,UAAW,aACXC,YAAa,eACb/qH,aAAc,gBACd9U,WAAY,cACZ8/H,cAAe,iBACfC,YAAa,eACb1W,UAAW,SACX2W,UAAW,SACX71G,OAAQ,SACR7tF,OAAQ,SACR2jM,GAAI,KACJjrH,MAAO,QACPkrH,UAAW,aACXC,WAAY,cACZjrH,IAAK,MACLD,SAAU,YACVy8B,MAAO,QACP0uF,UAAW,SACXC,eAAgB,eAChBC,UAAW,aACXC,cAAe,iBACfC,eAAgB,kBAExB,EAOAhqD,EAAKzrI,UAAUisC,OAAS,WAWpB,GAVAtrC,KAAK41G,IAAI,CAAC,iBAAkB,kBAAmB,iBAAkB,6BACjE51G,KAAK+kJ,YAAY8B,WAAW7mJ,KAAKhd,QAAS,CAAE+xM,SAAU,UACtDhsF,EAAAA,EAAAA,IAAc,CAAE5qE,OAAQn+B,KAAKhd,QAAS7C,SAAU6f,KAAK7f,SAAW6f,KAAK7f,SAAW,MAAQ6f,KAAK4Q,eAC7F5Q,KAAKkmI,aAAe,IAAI60B,EAAO/6J,KAAMA,KAAK8yG,gBAC1C9yG,KAAKg1L,aAAe,IAAI58F,GAAOp4F,MAC/BA,KAAK+pI,aAAe,IAAIm4C,GAAOliL,MAC/BA,KAAK+mB,OAAOsM,EAAAA,IAAoB,CAAC,IAC2B,IAAxDrzB,KAAK0hH,gBAAgBllC,YAAYnjG,WAAW0yG,cAAwE7wG,IAApD8kB,KAAK0hH,gBAAgBllC,YAAYnjG,WAAWmN,MAC5GwZ,KAAK0pL,mBAAoB,GAEzB1pL,KAAK87F,QAAS,CACd,IAAI7tG,EAAO,CAAE88J,mBAAoB/qJ,KAAK+qJ,oBACtC/qJ,KAAK81B,QAAQzC,EAAAA,IAAaplC,GACrBA,EAAK88J,qBACN/qJ,KAAK+qJ,mBAAqB98J,EAAK88J,mBAEvC,MAEI/qJ,KAAK81B,QAAQzC,EAAAA,MAEjB4rI,EAAAA,EAAAA,IAAej/J,KAAKo0G,QAASp0G,KAAKgiJ,2BAA4BhiJ,MAC1DA,KAAKgrC,mBACLhrC,KAAK+mB,OAAOsM,EAAAA,IAAwB,CAAC,GAEzCrzB,KAAKi1L,mBACLC,EAAAA,EAAAA,IAAel1L,KAAKo0G,SACpBp0G,KAAKm1L,iBAAiBn1L,KAAKo0G,SAC3Bp0G,KAAKi0G,aACLj0G,KAAKo1L,eACLp1L,KAAKq1L,aACLr1L,KAAKu5C,aACLv5C,KAAKs1L,cACLt1L,KAAKw3J,sBACLx3J,KAAKu1L,sBACuC,YAAxCv1L,KAAKu8J,iBAAiBC,eACtBx8J,KAAK49F,cAET59F,KAAK+mB,OAAOsM,EAAAA,IAAmB,CAAC,GACY,YAAxCrzB,KAAKu8J,iBAAiBC,eACtBx8J,KAAKw1L,iBAELx1L,KAAKq6B,YACLr6B,KAAK81B,QAAQ,UAErB,EAMAg1G,EAAKzrI,UAAUu+F,YAAc,WACpB59F,KAAKkqL,eACNtsF,EAAAA,EAAAA,IAAY59F,KAAKhd,QAEzB,EAMA8nJ,EAAKzrI,UAAU++F,YAAc,WACpBp+F,KAAKkqL,eACN9rF,EAAAA,EAAAA,IAAYp+F,KAAKhd,QAEzB,EACA8nJ,EAAKzrI,UAAUs9J,YAAc,SAAU84B,EAAeC,GAClD,KAAI/nL,EAAAA,EAAAA,IAAkB3N,KAAKw1K,iBAAiB7nK,EAAAA,EAAAA,IAAkB3N,KAAK6nJ,eAAnE,CAGA,IAAI8tC,EAAa31L,KAAKihI,mBAAmB1lB,WACrCq6E,EAAc51L,KAAKgmJ,aAAazqC,WAChCs6E,EAAa71L,KAAK8iL,mBACtB,GAAI4S,EAAJ,CACI,IAAII,EAAeJ,EAAcnjL,cAAc,mBAC3CwjL,EAAel0L,KAAKiU,MAAMggL,EAAa5yJ,wBAAwB8Q,OAASh0C,KAAKyiL,gBAC7EuT,EAAe,6IAEbh2L,KAAKi2L,qBAAuBj2L,KAAKi2L,qBAAuB,eAC9DH,EAAavkL,UAAY,GACzB,IAAK,IAAIpM,EAAI,EAAGA,EAAI4wL,EAAc5wL,IAAK,CACnC2wL,EAAavkL,WAAaykL,EAC1B,IAAIE,EAAW,GAAG74L,MAAMqC,KAAKo2L,EACxBhlL,iBAAiB,yFACtBolL,EAAS,GAAGt/J,UAAUzB,IAAI,iCAC1B+gK,EAAS,GAAGt/J,UAAUzB,IAAI,qCAC9B,CAEJ,KAfA,CAoBA,KAJMn1B,KAAK2qC,YAAc3qC,KAAKihI,mBAAmB1pG,MAAM4+J,cAC/Cn2L,KAAK2qC,YAAc3qC,KAAKihI,mBAAmB1pG,MAAMk3E,eACrDmnF,EAAYr+J,MAAMooB,UAAY,WAE7B3/C,KAAK8rF,gBAAkB9rF,KAAKi0G,aAAah8H,OAAQ,CAClD,IACIm+M,EAAoC,KADpCC,EAAgBT,EAAY1yJ,wBAAwB8Q,QACZh0C,KAAK60G,YAAc70G,KAAKg1G,aAAaz1B,SAAWv/E,KAAKyiL,eAC3FniM,OAAO8zD,YAAciiJ,EACvBC,EAAkBz0L,KAAKyf,KAAK80K,EAAkBp2L,KAAKyiL,gBAKvD,MAJ8B,aAA1BziL,KAAKwwI,mBACLxwI,KAAKu2L,gBAAkBv2L,KAAKw2L,qBAAqBb,EAAY,SAEjE31L,KAAKy2L,iBAAmBz2L,KAAKw2L,qBAAqBZ,EAAaU,GAEnE,CAEA,GADAt2L,KAAK02L,wBAAuB12L,KAAK80G,uBAAwB2gF,IACpDz1L,KAAKy2L,oBAAsBz2L,KAAK8hI,iBAAkB9hI,KAAKgiJ,4BAAgD,MAAlByzC,GAAwB,CAC9G,IAAIlvI,EAAUqvI,EACd,GAAI51L,KAAK8hI,eAAgB,CACrB,IAAK9hI,KAAK8rF,gBAAkB9rF,KAAK80G,sBAAwB90G,KAAKwnJ,YAA8B,SAAhBxnJ,KAAKg0C,OAAmB,CAChG,IAAIqiJ,EAAgB9vI,EAAQrjB,wBAAwB8Q,OAAUh0C,KAAKwnJ,WAAaxnJ,KAAKyiL,eACrFl8H,EAAQhvB,MAAMyc,OAASqiJ,EAAgB,IAC3C,CACA9vI,EAAUA,EAAQh0C,cAAc,kDACpC,MACSvS,KAAK80G,uBACVvuD,EAAUA,EAAQh0C,cAAc,qBAE/B5E,EAAAA,EAAAA,IAAkB44C,EAAQh0C,cAAc,YACzCvS,KAAKy2L,iBAAmBz2L,KAAK22L,gBAAgBpwI,EAASvmD,KAAK42L,wBAAyBnB,GAE5F,CACA,IAAKz1L,KAAKu2L,kBAAoBv2L,KAAK8hI,gBAAmB9hI,KAAKgiJ,4BAAgD,MAAlByzC,MAC/Ez1L,KAAK8hI,kBAAoB9hI,KAAK80G,sBAA0C,MAAlB2gF,GACpDz1L,KAAKgiJ,4BAAgD,MAAlByzC,GACnCz1L,KAAK+0G,yBAA6C,SAAlB0gF,IAA8B,CAClElvI,EAAUovI,EACV31L,KAAK8hI,eACLv7E,EAAUA,EAAQh0C,cAAc,iDAE3BvS,KAAKgiJ,4BAAgD,MAAlByzC,IACxClvI,EAAUA,EAAQh0C,cAAc,oBAEpCvS,KAAKu2L,gBAAkBv2L,KAAK22L,gBAAgBpwI,EAASvmD,KAAK42L,wBAAyBnB,EACvF,CACA,IAAKz1L,KAAK62L,wBAA0B72L,KAAK8hI,kBAAqB9hI,KAAK80G,sBAA0C,MAAlB2gF,GACnFz1L,KAAK+0G,yBAA6C,SAAlB0gF,GAA4B,CAC5DlvI,EAAUovI,EAAWpjL,cAAc,oBACnCvS,KAAKgiJ,6BACLz7F,EAAUA,EAAQh0C,cAAc,oBAEpCvS,KAAK62L,uBAAyB72L,KAAK22L,gBAAgBpwI,EAASvmD,KAAK82L,+BAAgCrB,EACrG,CAMA,GALKz1L,KAAK+2L,uBAAwB/2L,KAAK8hI,gBAA2C,eAAzB9hI,KAAKugI,iBACpDvgI,KAAK80G,sBAA0C,MAAlB2gF,GAA2Bz1L,KAAK+0G,yBAA6C,SAAlB0gF,IAC9Fz1L,KAAK+2L,qBAAuB/2L,KAAK22L,gBAAgBhB,EAC5CpjL,cAAc,0BAA2BvS,KAAKg3L,6BAA8BvB,KAEhFz1L,KAAKi3L,yBAA2Bj3L,KAAK8hI,eAAgB,CAClDv7E,EAAUqvI,EAAYrjL,cAAc,qBACpCvS,KAAKgiJ,6BACLz7F,EAAUA,EAAQh0C,cAAc,qBAE/B5E,EAAAA,EAAAA,IAAkB44C,EAAQh0C,cAAc,YACzCvS,KAAKi3L,wBAA0Bj3L,KAAK22L,gBAAgBpwI,EAASvmD,KAAK82L,+BAAgCrB,GAE1G,CAKA,IAJKz1L,KAAKk3L,uBAAyBl3L,KAAK8hI,gBAA2C,eAAzB9hI,KAAKugI,kBAC3DvgI,KAAKk3L,sBAAwBl3L,KAAK22L,gBAAgBf,EAC7CrjL,cAAc,2BAA4BvS,KAAKg3L,6BAA8BvB,IAElFI,GAAcA,EAAWtjL,cAAc,iBAAkB,CACzD,IAAI4kL,EAAoBtB,EAAWt6E,WACnC,IAAKv7G,KAAKo3L,uBAAwB,CAC9B,IAAIC,EAAgBF,EAChBn3L,KAAK8hI,iBACLu1D,EAAgBA,EAAc9kL,cAAc,gEAEhDvS,KAAKo3L,uBAAyBp3L,KAAK22L,gBAAgBU,EACvD,CACIr3L,KAAK8hI,iBACA9hI,KAAKs3L,gCACNt3L,KAAKs3L,8BAAgCt3L,KAAK22L,gBAAgBQ,EACrD5kL,cAAc,6BAEM,eAAzBvS,KAAKugI,iBAAqCvgI,KAAKu3L,8BAC/Cv3L,KAAKu3L,4BAA8Bv3L,KAAK22L,gBAAgBQ,EACnD5kL,cAAc,mCAG/B,CACMvS,KAAK80G,sBAAwB2gF,GAC/BzgK,EAAAA,GAAaG,IAAIygK,EAAa,SAAU51L,KAAKw3L,iBAAkBx3L,KA7FnE,CAnBA,CAkHJ,EACA8qI,EAAKzrI,UAAUu3L,sBAAwB,WACnC,IAAIxiF,EAAUp0G,KAAKi0G,aASnB,OARIj0G,KAAK8hI,iBACwB,SAAzB9hI,KAAKugI,iBAAuD,eAAzBvgI,KAAKugI,gBACxCnsB,EAAUp0G,KAAK42J,cAAgBxiD,EAAQ/2G,MAAM,EAAG2C,KAAK42J,eAAiB52J,KAAKy3L,uBAE7C,UAAzBz3L,KAAKugI,kBACVnsB,EAAUp0G,KAAK03L,0BAGhBtjF,CACX,EACA02B,EAAKzrI,UAAUy3L,6BAA+B,WAC1C,IAAI36B,EAAcn8J,KAAKi0G,aAGvB,OAFcj0G,KAAK42J,cAAgBuF,EAAY9+J,MAAM2C,KAAK42J,cAAeuF,EAAYlkL,QAC/E+nB,KAAK23L,mBAEf,EACA7sD,EAAKzrI,UAAU23L,2BAA6B,WACxC,OAAOh3L,KAAK03L,uBAChB,EACA5sD,EAAKzrI,UAAUm3L,qBAAuB,SAAUoB,EAAazb,GACzD,IAAI7mH,EAAQt1D,KAAK4Q,cAAc,QAAS,CAAE31B,UAAW,2BACjDwuK,EAAQzpJ,KAAK4Q,cAAc,QAAS,CAAE31B,UAAW,mBACjDihF,EAAMl8D,KAAK4Q,cAAc,KAAM,CAAE31B,UAAW,qBAAsBs7C,MAAO,CACrEgB,MAAO,WAAav3B,KAAKyiL,eAAiB,SAE9CjoE,EAAOx6G,KAAK4Q,cAAc,KAAM,CAAE31B,UAAW,4BACjDu/H,EAAKjpG,UAAYvR,KAAKi2L,qBACtB/5H,EAAI/qD,YAAYqpG,GAChB,IAAK,IAAIr1G,EAAI,EAAGA,EAAIg3K,EAAUh3K,IAC1BskJ,EAAMt4I,YAAY+qD,EAAI9qD,WAAU,IAIpC,OAFAkkD,EAAMnkD,YAAYs4I,GAClBmuC,EAAYzmL,YAAYmkD,GACjBA,CACX,EACAw1E,EAAKzrI,UAAUs3L,gBAAkB,SAAU3zM,EAASoxH,EAASqhF,GACzD,IAAIx8I,EAAgBj2D,EAChBytC,KAAS2I,EAAAA,EAAAA,IAAQ6f,EAAe,iBAChCsN,KAAUntB,EAAAA,EAAAA,IAAQ6f,EAAe,kBACjC2d,KAASx9B,EAAAA,EAAAA,IAAQ6f,EAAe,iBAChC28I,EAAc51L,KAAKgmJ,aAAazqC,WAChCs8E,EAA0BjC,EAAY3lJ,aACtCqlB,EAAQrc,EAAc1mC,cAAc,SACpCvS,KAAK8hI,iBACDv7E,IACAtN,EAAc1hB,MAAMwf,SAAW,UAEnCkC,EAAc1hB,MAAM4a,SAAW,YAEnC,IAAI2lJ,EAAYxiI,EAAMlkD,YACtB0mL,EAAU52J,gBAAgB,QAC1B42J,EAAU52J,gBAAgB,MAC1B42J,EAAU52J,gBAAgB,wBAC1B42J,EAAU52J,gBAAgB,iBAC1B42J,EAAU52J,gBAAgB,iBAC1B42J,EAAUvgK,MAAM4a,SAAW,WAC3B2lJ,EAAUvgK,MAAMu9B,OAAS,IACzBgjI,EAAUvgK,MAAMwc,MAAQuhB,EAAMpyB,wBAAwB6Q,MAAQ,MAC1DtjB,GAAYzwB,KAAKgiJ,4BAAgD,MAAlByzC,IAC/CqC,EAAUvgK,MAAM6M,UAAY,iBACtBkxB,EAAM/iD,cAAc,SAAS2wB,wBAAwB8Q,OAAS,OAExE8jJ,EAAUxhK,aAAa,QAAS,0BAChC,IAAIyhK,EAAeziI,EAAM/iD,cAAc,YAAYnB,WAAU,GAI7D,GAHA2mL,EAAa72J,gBAAgB,MAC7B62J,EAAazhK,aAAa,QAAS,qBACnCwhK,EAAU3mL,YAAY4mL,GAClBtnK,GAAUzwB,KAAKgiJ,4BAAgD,MAAlByzC,EAAuB,CACpE,IAAIv5H,EAAMl8D,KAAKg4L,cAAcD,EAAc3jF,GACvCigD,EAAQ/+F,EAAM/iD,cAAc,SAC5Bp4B,EAAO,GAAGkjB,MAAMqC,KAAK20J,EAAMvjJ,iBAAiB,OAC5CmnL,EAAY5jC,EAAMjjJ,YACtB6mL,EAAU/2J,gBAAgB,QAC1B+2J,EAAU3hK,aAAa,QAAS,kBAEhC,IADA,IAAI6lJ,EAAWhiM,EAAKlC,OACXktB,EAAI,EAAGA,EAAIg3K,EAAUh3K,IAC1B8yL,EAAU9mL,YAAY+qD,EAAI9qD,WAAU,IACpC6mL,EAAUn0I,WAAW5kE,SAASimB,EAAE/pB,WAAY,KAAKm8C,MAC5Cyc,OAAS75D,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAK8nD,wBAAwB8Q,OAAS,KAEpF8jJ,EAAU3mL,YAAY8mL,EAC1B,CACA,IAAIC,EAAY5iI,EAAM/iD,cAAc,SAASnB,YAC7C8mL,EAAUh3J,gBAAgB,QAC1Bg3J,EAAU5hK,aAAa,QAAS,kBAChC,IAAImzH,EAAQn0F,EAAM/iD,cAAc,SAChC,GAAIg0C,GAAY91B,GAAUzwB,KAAK8hI,eAAiB,CAC5C,IAAIq2D,EAAkBvC,EAClBzZ,EAAW1rJ,GAAUzwB,KAAK8hI,eAAiB9hI,KAAKwnJ,WAC9C3lJ,KAAKyf,KAAK62K,EAAgBj1J,wBAAwB8Q,OAASh0C,KAAKyiL,gBACtE,GAAIh5B,EAAMl3I,cAAc,iBAAmBk3I,EAAM3lG,WAAW7rE,QAAWsuE,GAAWvmD,KAAKwiI,UAAY,CAC/F,IACI41D,GADAl8H,EAAMl8D,KAAKg4L,cAAcD,EAAc3jF,IAC1BhjG,WAAU,GAC3BgnL,EAAOxhK,UAAUzB,IAAI,YACrB,IAAShwB,EAAI,EAAGA,EAAIg3K,EAAUh3K,IAAK,CAC/B,IAAIkzL,EAAY9xI,GAAWvmD,KAAK8hI,gBAAkB9hI,KAAKwnJ,WAAaxnJ,KAAKwnJ,WAAa,EAAI,EAC1F0wC,EAAU/mL,aAAahM,EAAIkzL,GAAa,IAAM,EAAID,EAAOhnL,WAAU,GAAQ8qD,EAAI9qD,WAAU,GAC7F,CACJ,KACK,CAEGj3B,EAAO,GAAGkjB,MAAMqC,KAAK+pJ,EAAM34I,iBADf,kEAAhB,IAEIwnL,EAAa7uC,EAAMl3I,cAAc,6BACjCgmL,OAAkB,EAClBD,IACAC,EAAkBp+M,EAAKmc,QAAQgiM,GAC3BA,EAAW1hK,UAAUM,SAAS,cAC9B/8C,EAAK0sC,OAAO0xK,EAAiB,GAG7Bp+M,EAAK0sC,OAAO0xK,EAAiB,IAGrCpc,EAAY1rJ,GAAUzwB,KAAK8hI,gBAAoB9hI,KAAK80G,sBAAwB2gF,EAAiBt7M,EAAKlC,OAC5FkkM,GAAYhiM,EAAKlC,OAASkkM,EAAWhiM,EAAKlC,OAChD,IAASktB,EAAI,EAAGA,EAAIg3K,EAAUh3K,IAC1B+yL,EAAU/mL,YAAYnR,KAAKw4L,aAAar+M,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAKg2B,WAAU,GAAOj3B,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAK8nD,wBAAwB8Q,SAEvJ,GAAIskJ,GAAcA,EAAW1hK,UAAUM,SAAS,gBAAkBqhK,EAAkBpc,EAAU,CAC1F,IAAIsc,EAAiBP,EAAUp0I,WAAW5kE,SAASq5M,EAAgBn9M,WAAY,KAC/Eq9M,EAAelhK,MAAMyc,OAASh0C,KAAKyiL,eAAiB,KACpDgW,EAAe7hK,UAAUzB,IAAI,SACzBmjK,EAAW1hK,UAAUM,SAAS,aAC9BuhK,EAAe7hK,UAAUzB,IAAI,WAErC,CACJ,CACJ,CAEA,GADA2iK,EAAU3mL,YAAY+mL,GAClBthI,EAAQ,CACR,IAAI8hI,EAAQpjI,EAAM/iD,cAAc,SAC5BomL,EAAYD,EAAMtnL,YACtBunL,EAAUriK,aAAa,QAAS,kBAEhC,IADIn8C,EAAO,GAAGkjB,MAAMqC,KAAKg5L,EAAM5nL,iBAAiB,OACvC3L,EAAI,EAAGA,EAAIhrB,EAAKlC,OAAQktB,IAC7BwzL,EAAUxnL,YAAYnR,KAAKw4L,aAAar+M,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAKg2B,WAAU,GAAOj3B,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAK8nD,wBAAwB8Q,SAEvJ8jJ,EAAU3mL,YAAYwnL,EAC1B,CAEA,GADA1/I,EAAcjhB,aAAa8/J,EAAW7+I,EAAcsiE,YAChD9qF,GAAUzwB,KAAK8hI,gBAAkB2nB,EAChCvmH,wBAAwB8Q,OAAS8jJ,EAAUvlL,cAAc,SAAS2wB,wBAAwB8Q,OAAQ,CACnG,IAAI4kJ,EAAwBd,EAAUvlL,cAAc,SAC/C2wB,wBAAwB8Q,OAASy1G,EAAMvmH,wBAAwB8Q,OAChE6kJ,EAAkB74L,KAAK4Q,cAAc,MAAO,CAAE31B,UAAW,wBAAyBs7C,MAAO,CACrFgB,MAAO,WAAaqhK,EAAwB,SAEpD3/I,EAAc9nC,YAAY0nL,EAC9B,MACSpoK,IAAUzwB,KAAK8hI,gBAAoB9hI,KAAKgiJ,4BAAgD,MAAlByzC,IAC3EqC,EAAUvgK,MAAMyc,OAASiF,EACpB/V,wBAAwB8Q,OAASshB,EAAM/iD,cAAc,SAAS2wB,wBAAwB8Q,OAAS,MAExG,GAAIuS,KAAavmD,KAAK80G,uBAAwB2gF,GAAgB,CAC1D,IAAIqD,EAAejB,EAA0BC,EAAU50J,wBAAwB8Q,OAC/E8kJ,EAAeA,EAAe,EAAI,EAAIA,EACtC,IAAIt1J,EAAYoyJ,EAAYpyJ,WAAas1J,EAAelD,EAAYpyJ,UAAYs1J,EAC5E94L,KAAK80G,uBACLtxE,IAAau1J,EAAAA,EAAAA,KAAmB3/J,EAAAA,EAAAA,IAAQ6f,EAAe,oBAAoBjF,QAE/E8jJ,EAAUvgK,MAAM6M,UAAY,iBAAmBZ,EAAY,KAC/D,CACA,OAAOs0J,CACX,EACAhtD,EAAKzrI,UAAUm5L,aAAe,SAAUt8H,EAAKm5F,GACzC,IAAIiH,EAAUpgG,EACdogG,EAAQp7H,gBAAgB,QACxBo7H,EAAQp7H,gBAAgB,iBACxBo7H,EAAQp7H,gBAAgB,iBACxBo7H,EAAQp7H,gBAAgB,YACxBo7H,EAAQ1lI,UAAUzB,IAAI,gBACtBmnI,EAAQ/kI,MAAMyc,OAASqhH,EAAY,KAEnC,IADA,IAAI2jC,EAAY,GAAG37L,MAAMqC,KAAK48J,EAAQx4G,YAC7B3+C,EAAI,EAAGA,EAAI6zL,EAAU/gN,OAAQktB,IAAK,CACvC,IAAI8zL,EAAWD,EAAU95M,SAASimB,EAAE/pB,WAAY,KAC5C89M,EAAwBD,EAAS19E,YAAc09E,EAAS19E,WAAW3kF,WAChEqiK,EAAS19E,WAAW3kF,UAAUM,SAAS,sBAC9C+hK,EAAS/3J,gBAAgB,QACzB+3J,EAAS/3J,gBAAgB,YACzB+3J,EAAS/3J,gBAAgB,cACzB+3J,EAAS/3J,gBAAgB,iBACzB+3J,EAAS/3J,gBAAgB,iBACzB+3J,EAAS/3J,gBAAgB,SACzB+3J,EAAS/3J,gBAAgB,kBACzB+3J,EAAS/3J,gBAAgB,mBACzB+3J,EAAS/3J,gBAAgB,gBACzB+3J,EAAS/3J,gBAAgB,iBACzB+3J,EAASriK,UAAUzB,IAAI,iBACvB8jK,EAAS1nL,UAAYvR,KAAKi2L,qBACtBgD,EAASriK,UAAUM,SAAS,uBAAyB+hK,EAASriK,UAAUM,SAAS,wBACjF+hK,EAAS19E,WAAW3kF,UAAUzB,IAAI,uBAE7B8jK,EAASriK,UAAUM,SAAS,iBAAmBgiK,EACpDD,EAAS19E,WAAW3kF,UAAUzB,IAAI,0BAE7B8jK,EAASriK,UAAUM,SAAS,iBACjC+hK,EAAS19E,WAAW3kF,UAAUzB,IAAI,sBAE7B8jK,EAASriK,UAAUM,SAAS,kBACjC+hK,EAAS1nL,UAAY,GAE7B,CACA,OAAO+qJ,CACX,EACAxxB,EAAKzrI,UAAU24L,cAAgB,SAAUmB,EAAaC,GAClD,IAAIzrC,EAAWwrC,EACX/kF,EAAUglF,EACVl9H,EAAMl8D,KAAK4Q,cAAc,KAAM,CAAE31B,UAAW,uBAClB,aAA1B+kB,KAAKwwI,mBACLt0E,EAAI3kC,MAAMyc,OAASh0C,KAAKyiL,eAAiB,MAG7C,IADA,IAAIllD,EAAKv9H,KAAK4Q,cAAc,KAAM,CAAE31B,UAAW,4BACtCkqB,EAAI,EAAG4tJ,EAAW,EAAG5tJ,EAAIwoJ,EAAS7pG,WAAW7rE,OAAQktB,IAAK,CAC/D,IAAIgxG,EAAMw3C,EAAS7pG,WAAW5kE,SAASimB,EAAE/pB,WAAY,KACjDi+M,EAAU97D,EAAGnsH,YACjBioL,EAAQ9nL,UAAYvR,KAAKi2L,qBACnB9/E,EAAIv/E,UAAUM,SAAS,mBAAqBi/E,EAAIv/E,UAAUM,SAAS,oBAClEi/E,EAAIv/E,UAAUM,SAAS,iBAqBtBi/E,EAAIv/E,UAAUM,SAAS,kBACvBmiK,EAAQ99E,WAAW3kF,UAAUzB,IAAI,uBAE5BghF,EAAIv/E,UAAUM,SAAS,mBAC5BmiK,EAAQ99E,WAAW3kF,UAAUzB,IAAI,wBAE5BghF,EAAIv/E,UAAUM,SAAS,kBAC5BmiK,EAAQ99E,WAAW3kF,UAAUzB,IAAI,uBA3BP,aAA1Bn1B,KAAKwwI,kBAAmCp8B,EAAQl1H,SAAS6zK,EAAS33K,WAAY,MAC9Ei+M,EAAQ/iK,aAAa,YAAa89E,EAAQl1H,SAAS6zK,EAAS33K,WAAY,KAAKoO,WACzE4qH,EAAQl1H,SAAS6zK,EAAS33K,WAAY,KAAKoO,WAAa4qH,EAAQl1H,SAAS6zK,EAAS33K,WAAY,KAAKwG,OAEjF,SAAtBu0H,EAAI5+E,MAAMuiB,QACVu/I,EAAQziK,UAAUzB,IAAI,WAGtBkkK,EAAQ9hK,MAAMkiI,UAAYrlD,EAAQl1H,SAAS6zK,EAAS33K,WAAY,MACzDg5H,EAAQl1H,SAAS6zK,EAAS33K,WAAY,KAAKq+K,UAC9CrlD,EAAQl1H,SAAS6zK,EAAS33K,WAAY,KAAKq+K,UAAUp7K,cACnD2hB,KAAK2qC,UAAY,QAAU,OAC7BypE,EAAQl1H,SAAS6zK,EAAS33K,WAAY,OAA6D,aAApDg5H,EAAQl1H,SAAS6zK,EAAS33K,WAAY,KAAKd,MACvF85H,EAAQl1H,SAAS6zK,EAAS33K,WAAY,KAAKk+M,oBAC9CD,EAAQ99E,WAAW3kF,UAAUzB,IAAI,2BAGzC49H,KAaJ72F,EAAI/qD,YAAYkoL,EACpB,CACA,OAAOn9H,CACX,EACA4uE,EAAKzrI,UAAU42L,mBAAqB,WAChC,OAAIj2L,KAAK02L,qBACE,0DAEJ,wEACX,EACA5rD,EAAKzrI,UAAUk6L,iBAAmB,WAC9Bv5L,KAAK02L,sBAAuB,EAE5B,IADA,IAAIR,EAAW,GAAG74L,MAAMqC,KAAKM,KAAKhd,QAAQ8tB,iBAAiB,iCAClD3L,EAAI,EAAGA,EAAI+wL,EAASj+M,OAAQktB,IAC7B+wL,EAASh3M,SAASimB,EAAE/pB,WAAY,MAChC86M,EAASh3M,SAASimB,EAAE/pB,WAAY,KAAKw7C,UAAUzB,IAAI,iBAG/D,EACA21G,EAAKzrI,UAAUm4L,iBAAmB,SAAU/7M,GAGxC,IAFA,IAAI0iD,EAAS1iD,EAAE0iD,OACXq7J,EAAar7J,EAAOrtB,iBAAiB,mBAChC3L,EAAI,EAAGA,EAAIq0L,EAAWvhN,OAAQktB,IAAK,CACxC,IAAI2yL,EAAY0B,EAAWt6M,SAASimB,EAAE/pB,WAAY,KAClD,GAAI08M,EAAW,CACX,IAAIgB,EAAe36J,EAAO8R,aAAe6nJ,EAAU50J,wBAAwB8Q,OAC3E8kJ,EAAeA,EAAe,EAAI,EAAIA,EACtC,IAAIt1J,EAAYrF,EAAOqF,WAAas1J,EAAe36J,EAAOqF,UAAYs1J,EAClE94L,KAAK80G,uBACLtxE,IAAau1J,EAAAA,EAAAA,KAAmB3/J,EAAAA,EAAAA,IAAQ0+J,EAAW,oBAAoB9jJ,QAE3E8jJ,EAAUvgK,MAAM6M,UAAY,iBAAmBZ,EAAY,KAC/D,CACJ,CACJ,EACAsnG,EAAKzrI,UAAUksJ,cAAgB,WAC3B,KAAK59I,EAAAA,EAAAA,IAAkB3N,KAAK6nJ,eAAgB,CACxC,IAAI+tC,EAAc51L,KAAKgmJ,aAAazqC,WACpCvmF,EAAAA,GAAaW,OAAOigK,EAAa,SAAU51L,KAAKw3L,iBACpD,CAIA,IAHA,IAAIgC,EAAa,CAACx5L,KAAKu2L,gBAAiBv2L,KAAK62L,uBAAwB72L,KAAK+2L,qBACtE/2L,KAAKy2L,iBAAkBz2L,KAAKi3L,wBAAyBj3L,KAAKk3L,sBAAuBl3L,KAAKo3L,uBACtFp3L,KAAKs3L,8BAA+Bt3L,KAAKu3L,6BACpCpyL,EAAI,EAAGA,EAAIq0L,EAAWvhN,OAAQktB,IAAK,CACxC,IAAI2yL,EAAY0B,EAAWt6M,SAASimB,EAAE/pB,WAAY,KAClD,GAAI08M,EAAW,CACX,GAAI93L,KAAK8hI,kBAAmB1oG,EAAAA,EAAAA,IAAQ0+J,EAAW,iBAAkB,CAC7D,IAAInxJ,EAAWmxJ,EAAU7+I,cAGzB,GAFAtS,EAASpP,MAAMwf,SAAW,GAC1BpQ,EAASpP,MAAM4a,SAAW,IACtB/Y,EAAAA,EAAAA,IAAQ0+J,EAAW,2BAA4B1+J,EAAAA,EAAAA,IAAQ0+J,EAAW,sBAC/D1+J,EAAAA,EAAAA,IAAQ0+J,EAAW,0BAA2B,CACjD,IAAIe,EAAkBlyJ,EAASp0B,cAAc,0BACzCsmL,IACAljK,EAAAA,EAAAA,IAAOkjK,EAEf,CACJ,EACAljK,EAAAA,EAAAA,IAAOmiK,EACX,CACJ,CACA93L,KAAKu2L,gBAAkB,KACvBv2L,KAAK62L,uBAAyB,KAC9B72L,KAAK+2L,qBAAuB,KAC5B/2L,KAAKy2L,iBAAmB,KACxBz2L,KAAKi3L,wBAA0B,KAC/Bj3L,KAAKk3L,sBAAwB,KAC7Bl3L,KAAKo3L,uBAAyB,KAC9Bp3L,KAAKs3L,8BAAgC,KACrCt3L,KAAKu3L,4BAA8B,IACvC,EACAzsD,EAAKzrI,UAAUm2L,eAAiB,WAC5B,IAAIG,EAAa31L,KAAKihI,mBAAmB1lB,WACrCq6E,EAAc51L,KAAKgmJ,aAAazqC,WACpC,GAAKv7G,KAAK8rF,eAAkB9rF,KAAKi0G,aAAah8H,OAA9C,CAGA,GAAI+nB,KAAKy2L,kBAAoBb,EAAYrjL,cAAc,mBAAoB,CACvE,IAAIg0C,EAAUqvI,EACV51L,KAAK8hI,eACLv7E,EAAUA,EAAQh0C,cAAc,mDAE3BvS,KAAK80G,uBACVvuD,EAAUA,EAAQh0C,cAAc,oBAEpCvS,KAAKy5L,4BAA4BlzI,EACrC,CAIA,GAHIvmD,KAAKu2L,iBAAmBv2L,KAAK8hI,gBAC7B9hI,KAAKy5L,4BAA4B9D,EAAWpjL,cAAc,kDAE1DvS,KAAK62L,wBAA0B72L,KAAK8hI,eAAgB,CAChDv7E,EAAUovI,EAAWpjL,cAAc,oBACnCvS,KAAKgiJ,6BACLz7F,EAAUA,EAAQh0C,cAAc,oBAEpCvS,KAAKy5L,4BAA4BlzI,EACrC,CAIA,GAHIvmD,KAAK+2L,sBAAwB/2L,KAAK8hI,gBAA2C,eAAzB9hI,KAAKugI,iBACzDvgI,KAAKy5L,4BAA4B9D,EAAWpjL,cAAc,2BAE1DvS,KAAKi3L,yBAA2Bj3L,KAAK8hI,eAAgB,CACjDv7E,EAAUqvI,EAAYrjL,cAAc,qBACpCvS,KAAKgiJ,6BACLz7F,EAAUA,EAAQh0C,cAAc,oBAEpCvS,KAAKy5L,4BAA4BlzI,EACrC,CACIvmD,KAAKk3L,uBAAyBl3L,KAAK8hI,gBAA2C,eAAzB9hI,KAAKugI,iBAC1DvgI,KAAKy5L,4BAA4B7D,EAAYrjL,cAAc,2BAhC/D,CAkCJ,EACAu4H,EAAKzrI,UAAUo6L,4BAA8B,SAAUlzI,GACnD,IAAI+O,EAAQ/O,EAAQh0C,cAAc,8BAC9Bo7I,EAAWr4F,EAAM/iD,cAAcsrG,EAAAA,IAAmBzsG,WAAU,GAC5D0mL,EAAYvxI,EAAQh0C,cAAc,mBACtCo7I,EAASzsH,gBAAgB,MACzBysH,EAASr3H,aAAa,QAAS,qBAC/B,IAAK,IAAInxB,EAAI,EAAGA,EAAIwoJ,EAAS7pG,WAAW7rE,OAAQktB,IAC5CwoJ,EAAS7pG,WAAW5kE,SAASimB,EAAE/pB,WAAY,KAAK8lD,gBAAgB,UAEpEvL,EAAAA,EAAAA,IAAOmiK,EAAUvlL,cAAc,uBAC/BulL,EAAU9/J,aAAa21H,EAAUmqC,EAAUv8E,YAC3Cu8E,EAAUvgK,MAAMwc,MAAQuhB,EAAMpyB,wBAAwB6Q,MAAQ,IAClE,EACA+2F,EAAKzrI,UAAUk2L,oBAAsB,WAC7Bv1L,KAAK9W,gBAA+C,cAA7B8W,KAAK7W,eAAe7O,MAC3C0lB,KAAKihI,mBAAmBz8F,uBAAuB,uBAAuBvsD,OACtE+nB,KAAKihI,mBAAmBrqG,UAAUzB,IAAI,mBAGtCn1B,KAAKihI,mBAAmBrqG,UAAUjB,OAAO,kBAEjD,EACAm1G,EAAKzrI,UAAU41L,gBAAkB,WAC7B,IAAKj1L,KAAKgiJ,2BAA4B,CAClC,IAAI03C,EAAO15L,KAAKi0G,aAEhB,GADAj0G,KAAK25L,mBAAqB35L,KAAK8yG,eAAe0R,WAAW,qBACpD72G,EAAAA,EAAAA,IAAkB+rL,GACnB,IAAK,IAAI5yM,EAAQ,EAAGA,EAAQ4yM,EAAKzhN,OAAQ6O,KAChC6mB,EAAAA,EAAAA,IAAkB+rL,EAAKx6M,SAAS4H,EAAM1L,WAAY,KAAKs0K,gBACpD/hJ,EAAAA,EAAAA,IAAkB+rL,EAAKx6M,SAAS4H,EAAM1L,WAAY,KAAKgT,WACpDsrM,EAAKx6M,SAAS4H,EAAM1L,WAAY,KAAKgT,SAC5C4R,KAAK45L,gBAAgBF,EAAKx6M,SAAS4H,EAAM1L,WAAY,KAAM0L,EAI3E,CACJ,EACAgkJ,EAAKzrI,UAAUu6L,gBAAkB,SAAUzjF,EAAKrvH,GAC5CkZ,KAAKsrL,SAAS7rM,KAAK02H,GACnBn2G,KAAKspL,MAAMnzE,EAAIjqG,KAAO5rB,OAAOu5M,WAAW1jF,EAAIu5C,aAC5C1vJ,KAAK85L,iBAAiBhzM,EAAOkZ,KAAKspL,MAAMnzE,EAAIjqG,MAC5ClM,KAAK+pL,kBAAkB7qM,SAAS4H,EAAM1L,WAAY,KAAO4kB,KAAK85L,iBAAiB96L,KAAKgB,KAAMlZ,GAC1FkZ,KAAKspL,MAAMnzE,EAAIjqG,KAAKopL,YAAYt1L,KAAK+pL,kBAAkB7qM,SAAS4H,EAAM1L,WAAY,KACtF,EAMA0vJ,EAAKzrI,UAAUswJ,mBAAqB,SAAUx5C,GAC1C,IAAKn2G,KAAKgiJ,2BAA4B,CAElC,IADA,IAAIl7J,EAAQkZ,KAAK4uJ,oBAAoBz4C,EAAIjqG,KAChC/G,EAAI,EAAGA,EAAInF,KAAKsrL,SAASrzM,OAAQktB,IACtC,GAAIgxG,EAAIjqG,MAAQlM,KAAKsrL,SAASpsM,SAASimB,EAAE/pB,WAAY,KAAK8wB,IAEtD,YADAlM,KAAKsrL,SAASzkK,OAAO1hB,EAAG,GAIhCnF,KAAK45L,gBAAgBzjF,EAAKrvH,EAC9B,CACJ,EAOAgkJ,EAAKzrI,UAAUy6L,iBAAmB,SAAU5c,EAAazhM,GACrD,IAAI06H,EAAMn2G,KAAKi0G,aAAa/0H,SAASg+L,EAAY9hM,WAAY,KACzD4kB,KAAKsrL,SAAS3jL,MAAK,SAAUoyL,GAAe,OAAOA,EAAY7tL,MAAQiqG,EAAIjqG,GAAK,MAChFiqG,EAAI/nH,QAAU3S,EAAEgqB,QACZzF,KAAK8rF,gBACL9rF,KAAKyvJ,kBAAmB,EACpBt5C,EAAI/nH,QACJ4R,KAAKg6L,UAAU90H,KAAKixC,EAAI3sH,WAAY,cAGpCwW,KAAKg6L,UAAU/0H,KAAKkxC,EAAI3sH,WAAY,eAIpD,EACAshJ,EAAKzrI,UAAU46L,gBAAkB,WAC7Bj6L,KAAK8rF,eAAgB,EACrB,IAAIurG,EAAgBr3L,KAAKhd,QAAQuvB,cAAc,IAAMsrG,EAAAA,IACjD79G,KAAKg8E,WAAW/jG,QAAU+nB,KAAKhd,QAAQitD,aAAejwC,KAAKg0C,QAAUqjJ,IACrE5gK,EAAAA,EAAAA,IAAS,CAAC4gK,GAAgB,CAAC,oBAEVr3L,KAAKi0G,aAAa91H,QAAO,SAAUg4H,GAAO,MAAoB,aAAbA,EAAI77H,IAAqB,IAC5ErC,QAAkD,oBAAxC+nB,KAAK+uI,kBAAkBi8B,eAChDhrK,KAAKmqK,qBAAsB,GAED,aAA1BnqK,KAAKwwI,kBACDxwI,KAAKk6L,cACLl6L,KAAK26B,cAAc,CAAEojF,kBAAkB,EAAMm8E,aAAa,IAAS,IACnE/iK,EAAAA,EAAAA,IAAY,CAACn3B,KAAKhd,SAAU,gBAGhCgd,KAAK+9G,kBAAoB/9G,KAAK+pI,cAC9B/pI,KAAK+pI,aAAa5+F,SAE1B,EACA2/F,EAAKzrI,UAAU86L,oBAAsB,WACjC,IAAK,IAAIh1L,EAAI,EAAGA,EAAInF,KAAKsrL,SAASrzM,OAAQktB,IACtCnF,KAAKspL,MAAMtpL,KAAKsrL,SAASpsM,SAASimB,EAAE/pB,WAAY,KAAK8wB,KAChDkuL,eAAep6L,KAAK+pL,kBAAkB/pL,KAAKsrL,SAASpsM,SAASimB,EAAE/pB,WAAY,KAAK0L,OAE7F,EAOAgkJ,EAAKzrI,UAAUg7L,iBAAmB,WAC9B,EAQJvvD,EAAKzrI,UAAUqoB,QAAU,WACrB,IAAIh7B,EAAcsT,KAAKhd,QACvB,GAAK0J,EAAL,CAGA,IAAI4tM,KAAe5tM,EAAY6lB,cAAc,IAAMsrG,EAAAA,MAC/CnxH,EAAY6lB,cAAc,IAAMsrG,EAAAA,KAChCy8E,GACAt6L,KAAKm7C,eAETn7C,KAAKo6L,iBACLp6L,KAAKm6L,sBACLn6L,KAAK+mB,OAAOsM,EAAAA,IAAgB,CAAC,GAC7BrzB,KAAKu6L,2BACDv6L,KAAK87F,SAAW97F,KAAK4oD,QACrB5oD,KAAK66H,gBAAgB,CAAC,aAEtBy/D,GACA7uL,EAAOpM,UAAUqoB,QAAQhoB,KAAKM,MAElCA,KAAKw6L,WAAW9yK,UACZ1nB,KAAK87F,UAAYlpE,EAAAA,GAAQ6C,OACzBz1B,KAAKhd,QAAQuuB,UAAY,IAK7B,IAHA,IAAIs0B,EAAU,CAAC,eAAgB,eAAgB,gBAAiB,wBAC5D,iBAAkB,cAAe,iBAAkB,eAAgB,eAAgB,YACnF,eAAgB,cAAe,kBAAmB,eAC7C1gC,EAAI,EAAGA,EAAI0gC,EAAQ5tD,OAAQktB,IAC5BnF,KAAK6lC,EAAQ3mD,SAASimB,EAAE/pB,WAAY,QACpC4kB,KAAK6lC,EAAQ3mD,SAASimB,EAAE/pB,WAAY,MAAQ,MAGpD4kB,KAAKhd,QAAQuuB,UAAY,IACzBqlB,EAAAA,EAAAA,IAAU52B,KAAKhd,QAAS,GAAI,CAAC,QAAS,cAAe,eAAgB,YAAa,WAAY,sBAC9Fgd,KAAKupL,iBAAkB,CA9BvB,CA+BJ,EACAz+C,EAAKzrI,UAAUk7L,wBAA0B,WACrC,IAAI7tM,EAAcsT,KAAKhd,QAClB0J,IAAiBA,EAAY6lB,cAAc,IAAMsrG,EAAAA,KAAyBnxH,EAAY6lB,cAAc,IAAMsrG,EAAAA,OAG/G79G,KAAK+pI,aAAariH,UAClB1nB,KAAKg3D,eAAetvC,UACpB1nB,KAAK0nI,YAAYhgH,UACjB1nB,KAAKy6L,gBAAgB/yK,UACrB1nB,KAAK2qI,YAAYjjH,UACrB,EAOAojH,EAAKzrI,UAAUu8B,cAAgB,WAC3B,MAAO,MACX,EACAkvG,EAAKzrI,UAAUq7L,mBAAqB,WAC5B16L,KAAKi4K,gBACLj4K,KAAK+uI,kBAAkBuiC,kBAAoB,gBAC3CtxK,KAAKhd,QAAQ4zC,UAAUzB,IAAI,gBAG3Bn1B,KAAKhd,QAAQ4zC,UAAUjB,OAAO,cAEtC,EACAm1G,EAAKzrI,UAAUs7L,YAAc,SAAUC,GAC/B56L,KAAK7f,WACLs2C,EAAAA,EAAAA,IAAS,CAACz2B,KAAKhd,SAAUgd,KAAK7f,SAAS8T,MAAM,MAE7C2mM,IACAzjK,EAAAA,EAAAA,IAAY,CAACn3B,KAAKhd,SAAU43M,EAAY3mM,MAAM,KAEtD,EASA62I,EAAKzrI,UAAUi8B,kBAAoB,SAAU+G,EAASC,GAClD,IAGIu4J,EAHAC,GAAiB,EACjBC,GAAqB,EACrBC,GAAgB,EAGhBC,EAAkB,KAClBC,EAAiB,KACrB,IAAIl7L,KAAK46B,YAAT,CAGA56B,KAAK41G,IAAI,kBACL51G,KAAKm7L,qBACLn7L,KAAKw6L,WAAWhpL,QAEpB,IAAI4kB,EAAav3C,OAAOC,KAAKujD,GACzBjM,EAAW9/B,QAAQ,YAAc,IAC7B0J,KAAKgiJ,6BACLhiJ,KAAKu5G,YAAc,IAEvBv5G,KAAKo7L,qBACLL,GAAqB,GAEzB,IAAK,IAAIxsL,EAAK,EAAG8sL,EAAejlK,EAAY7nB,EAAK8sL,EAAapjN,OAAQs2B,IAAM,CACxE,IAAI4E,EAAOkoL,EAAa9sL,GACxB,OAAQ4E,GACJ,IAAK,cACDnT,KAAK+mB,OAAOsM,EAAAA,IAAiB,CAAE8R,OAAQ,QAASypB,OAAQ5uD,KAAK60G,cAC7DimF,GAAiB,EACjB,MACJ,IAAK,eACD,GAAI96L,KAAK8pL,mBAAoB,CACzB9pL,KAAK8pL,oBAAqB,EAC1B9pL,KAAK+mB,OAAOsM,EAAAA,IAA4B,CAAE8R,OAAQ,QAAS/O,WAAYiM,EAAQ2yE,eAC/E,KACJ,CACAh1G,KAAK+mB,OAAOsM,EAAAA,IAA4B,CAAE8R,OAAQ,QAAS/O,WAAYiM,EAAQ2yE,iBAC3ErnG,EAAAA,EAAAA,IAAkB00B,EAAQ2yE,aAAaC,eAAgBtnG,EAAAA,EAAAA,IAAkB00B,EAAQ2yE,aAAaz1B,YAC3F5xE,EAAAA,EAAAA,IAAkB00B,EAAQ2yE,aAAagnD,sBACtCruJ,EAAAA,EAAAA,IAAkB20B,EAAQ0yE,eACxB3yE,EAAQ2yE,aAAaC,cAAgB3yE,EAAQ0yE,aAAaC,cACpDj1G,KAAKgiJ,6BAA+BhiJ,KAAK80G,sBAC1C90G,KAAKg1G,aAAagnD,mBAAqBh8J,KAAKg1G,aAAaz1B,YACpEu7G,GAAiB,GAErB,MACJ,IAAK,eACD96L,KAAK+mB,OAAOsM,EAAAA,IAAiB,CAAE8R,OAAQ,OAAQypB,OAAQ5uD,KAAK/W,eAC5D6xM,GAAiB,EACjBD,GAAc,EACd,MACJ,IAAK,iBACD76L,KAAKu1L,sBACLv1L,KAAK+mB,OAAOsM,EAAAA,IAAiB,CAAE8R,OAAQ,SAAUypB,OAAQ5uD,KAAK9W,iBAC9D4xM,GAAiB,EACgB,cAA7B96L,KAAK7W,eAAe7O,MACpB0lB,KAAK2lI,gBAET,MACJ,IAAK,SACL,IAAK,QACD3lI,KAAK+mB,OAAOsM,EAAAA,IAAiB,CAAE8R,OAAQ,SAAU/O,WAAY,CAAE2d,MAAO1R,EAAQ0R,MAAOC,OAAQ3R,EAAQ2R,UACjGh0C,KAAK60G,aACL70G,KAAKo1G,YAAYjqE,UAErB,MACJ,IAAK,kBACDnrC,KAAKw1K,aAAape,YAClByjC,GAAc,EACd,MACJ,IAAK,sBACD76L,KAAK+mB,OAAOsM,EAAAA,IAAiB,CAAE8R,OAAQ,iBAAkBypB,OAAQ5uD,KAAKw4K,sBACtEx4K,KAAKkmI,aAAa/6F,UAClBnrC,KAAKw1K,aAAape,YAClB,MACJ,IAAK,iBACDp3J,KAAK+mB,OAAOsM,EAAAA,IAAiB,CAAE8R,OAAQ,YAAaypB,OAAQ5uD,KAAK8uI,iBACjE,MACJ,IAAK,WACD9uI,KAAK26L,YAAYr4J,EAAQniD,UACzB,MACJ,IAAK,iBACG6f,KAAK47J,kBACL57J,KAAK06L,qBACL16L,KAAK47J,gBAAgBkc,0BAEzB,MACJ,IAAK,cACD93K,KAAKs7L,eAAgBtgG,EAAAA,EAAAA,IAAiBh7F,KAAK8nJ,aAC3CgzC,GAAiB,EACjB,MACJ,IAAK,iBACD96L,KAAKu7L,kBAAmBvgG,EAAAA,EAAAA,IAAiBh7F,KAAKuiI,gBAC9Cu4D,GAAiB,EACjB,MACJ,IAAK,gBACD96L,KAAK+mB,OAAOsM,EAAAA,IAAiB,CAAE8R,OAAQ,QAASypB,OAAQ5uD,KAAKw1G,gBAC7Dx1G,KAAKw1K,aAAape,YAClB0jC,GAAiB,EACjBD,GAAc,EACd,MACJ,IAAK,0BACL,IAAK,YAID,GAHAC,GAAiB,EAEjBI,GADAD,EAAkBj7L,KAAK+6G,cAAgBn4G,SAAS2P,cAAc,IAAMvS,KAAK+6G,cAAc6nC,UAAY,MAChEq4C,EAAgBp/J,cAAc,GAAK,KAClE77B,KAAKwiI,WAAa04D,IAAkBvtL,EAAAA,EAAAA,IAAkButL,EAAe14D,UAAUA,WAAY,CAC3F,IAAIg5D,EAAkB38M,OAAOulB,OAAO,CAAC,EAAG82L,EAAe14D,UAAW,CAAEA,UAAWngG,EAAQmgG,YAEvF,IADA04D,EAAevgK,cAAc,CAAE6nG,UAAWg5D,IAAmB,KACrD7tL,EAAAA,EAAAA,IAAkButL,EAAengF,gBAAgB,CACrD,IAAI0gF,EAAgB74L,SAAS2P,cAAc,IAAM2oL,EAAengF,cAAc6nC,UAC1E84C,EAAwBD,EAAgBA,EAAc5/J,cAAc,GAAK,KAC7E,GAAI6/J,EAAuB,CACvB,IAAIC,EAAqB98M,OAAOulB,OAAO,CAAC,EAAGs3L,EAAsBl5D,WACjEm5D,EAAmBn5D,UAAY04D,EAAe14D,UAC9Ck5D,EAAsB/gK,cAAc,CAAE6nG,UAAWm5D,IAAsB,EAC3E,CACAT,EAAiBQ,CACrB,CACJ,CACA,MACJ,IAAK,UACD17L,KAAK+mB,OAAOsM,EAAAA,IAAiB,CAAE8R,OAAQ,YACvC,MACJ,IAAK,gBACDnlC,KAAK+mB,OAAOsM,EAAAA,IAA4B,CACpC8R,OAAQ,QAAS/O,WAAYiM,EAAQozE,cACrCt7E,cAAemI,EAAQmzE,gBAE3B,MACJ,IAAK,cACIz1G,KAAKg8E,WAAW/jG,QAAU+nB,KAAKw1G,eAAiBx1G,KAAKy1G,cAAcrB,QAAQn8H,SAC5E6iN,GAAiB,GAErB96L,KAAK+mB,OAAOsM,EAAAA,IAAiB,CAAE8R,OAAQ,YAAa/O,WAAYiM,IAChE,MACJ,IAAK,gBACL,IAAK,aACL,IAAK,uBACL,IAAK,eACL,IAAK,SACDriC,KAAK41G,IAAI,uBACTolF,GAAgB,EAChBD,GAAqB,EACrB,MACJ,IAAK,QACI/6L,KAAK0hH,gBAAgB9N,yBACtBknF,GAAiB,GAErB96L,KAAK0hH,gBAAgB9N,wBAAyB,EAC9C,MACJ,IAAK,UACG5zG,KAAK2lJ,QACL3lJ,KAAK4lJ,uBAGL5lJ,KAAK47L,uBAET,MACJ,QACI57L,KAAK67L,uBAAuB1oL,EAAMkvB,EAAS04J,GAEvD,CACIF,GACA76L,KAAKw3J,sBAELujC,EACIC,GAAiBh7L,KAAKgrI,oBAAsBhrI,KAAKwnJ,WACjDxnJ,KAAKg7L,gBAGLh7L,KAAKmrC,UAGJ2vJ,IACL96L,KAAK+mB,OAAOsM,EAAAA,IA1KL,CAAEsoD,YAAa,YA2KtBm/G,GAAiB,EACjB96L,KAAK87L,kBAAkBz5J,EAAQo3I,kBAvKnC,CAyKJ,EACA3uC,EAAKzrI,UAAUw8L,uBAAyB,SAAU1oL,EAAMkvB,EAAS04J,GAC7D,OAAQ5nL,GACJ,IAAK,YACDnT,KAAK+7L,YACD/7L,KAAK60G,cACL70G,KAAKhd,QAAQuvB,cAAc,gBAAgBspB,cAAc,GAAG8O,UAAYtI,EAAQsI,UAChF3qC,KAAKhd,QAAQuvB,cAAc,gBAAgBspB,cAAc,GAAGd,YAE5C,SAAhB/6B,KAAKg0C,SACLh0C,KAAK+pI,aAAamc,eAAe7jH,EAAQsI,WACzC3qC,KAAK+pI,aAAakc,cAElBjmJ,KAAKnS,SAAWmS,KAAKsiL,gBACrBtiL,KAAKsiL,cAAczxC,aAAah1G,cAAc,GAAG8O,UAAYtI,EAAQsI,UACrE3qC,KAAKsiL,cAAczxC,aAAah1G,cAAc,GAAGd,YAEjD/6B,KAAKirL,kBAAoBjrL,KAAKquK,oBAC9BruK,KAAKquK,kBAAkB2tB,iBAAiBngK,cAAc,GAAG8O,UAAYtI,EAAQsI,UAC7E3qC,KAAKquK,kBAAkB2tB,iBAAiBngK,cAAc,GAAGd,YAEzD/6B,KAAKmmH,gBAAkBnmH,KAAKi8L,mBAC5Bj8L,KAAKi8L,iBAAiBC,gBAAgBrgK,cAAc,GAAG8O,UAAYtI,EAAQsI,UAC3E3qC,KAAKi8L,iBAAiBC,gBAAgBrgK,cAAc,GAAGd,YAE1B,cAA7B/6B,KAAK7W,eAAe7O,MAAwB0lB,KAAK7W,eAAeyyH,uBAChE57G,KAAK2lI,gBAET3lI,KAAK+mB,OAAOsM,EAAAA,IAAmB,CAAC,GAChC,MACJ,IAAK,eACDrzB,KAAKkmI,aAAa/6F,UAClB,MACJ,IAAK,gBACDnrC,KAAKw1K,aAAape,YAClBp3J,KAAKm8L,oBACL,MACJ,IAAK,YACGn8L,KAAKq1J,WACL5+H,EAAAA,EAAAA,IAAS,CAACz2B,KAAKhd,SAAU,sBAGzBm0C,EAAAA,EAAAA,IAAY,CAACn3B,KAAKhd,SAAU,qBAEhCgd,KAAKkmI,aAAa/6F,UAClBnrC,KAAKw1K,aAAape,YAClB,MACJ,IAAK,YACDp3J,KAAKo8L,kBACL,MACJ,IAAK,iBACDp8L,KAAKw1K,aAAape,YAClBp3J,KAAK+mB,OAAOsM,EAAAA,IAAiB,CAAE8R,OAAQ,aAAcypB,QAAQ,IAC7D,MACJ,IAAK,kBACD5uD,KAAK+mB,OAAOsM,EAAAA,IAAiB,CAAE8R,OAAQ,aAAcypB,OAAQ5uD,KAAKq8L,kBAClE,MACJ,IAAK,mBACDr8L,KAAK+mB,OAAOsM,EAAAA,IAAiB,CAAE8R,OAAQ,cAAeypB,OAAQ5uD,KAAKirL,mBACnE,MACJ,IAAK,oBACDjrL,KAAK+mB,OAAOsM,EAAAA,IAAiB,CAAE8R,OAAQ,gBAAiBypB,OAAQ5uD,KAAKkrL,oBACrE,MACJ,IAAK,iBACDlrL,KAAKu1L,sBACLv1L,KAAK+mB,OAAOsM,EAAAA,IAA4B,CAAE8R,OAAQ,SAAU/O,WAAYiM,EAAQl5C,iBAChF,MACJ,IAAK,iBACD6W,KAAK+mB,OAAOsM,EAAAA,IAA4B,CAAE8R,OAAQ,SAAU/O,WAAYiM,EAAQu0E,iBAChF,MACJ,IAAK,eACD52G,KAAK+mB,OAAOsM,EAAAA,IAA4B,CAAE8R,OAAQ,SAClD,MACJ,IAAK,oBACDnlC,KAAK+mB,OAAOsM,EAAAA,IAA4B,CAAE8R,OAAQ,YAAa/O,WAAYiM,EAAQ0sG,oBACnF,MACJ,IAAK,eACD/uI,KAAK+mB,OAAOsM,EAAAA,IAA4B,CAAE8R,OAAQ,OAAQ/O,WAAYiM,EAAQ6wG,eAC9E,MACJ,IAAK,gBACL,IAAK,mBACGlzI,KAAK+lJ,cACL/lJ,KAAKs8L,gBAGLt8L,KAAKu8L,iBAETv8L,KAAK+mB,OAAOsM,EAAAA,IAAqB,CAAEguG,KAAM,WAAYmuB,UAAqB,qBAATr8I,IACjE,MACJ,IAAK,aAED,IAAIqpL,EAAYx8L,KAAK0hH,gBAAgBlI,WACrC,GAAI36H,OAAOkhB,eAAesiC,GAASo6J,UAE/B,IADA,IAAIC,EAAY18L,KAAK24G,0BAA0B,GACtCxzG,EAAI,EAAGhjB,EAAQtD,OAAOC,KAAKujD,EAAQhpD,YAAa8rB,EAAIhjB,EAAMlK,OAAQktB,IACvEnF,KAAK28L,YAAWvvL,EAAAA,EAAAA,IAASsvL,EAAW18L,KAAK3mB,WAAW8I,EAAMjD,SAASimB,EAAE/pB,WAAY,OAAQ4kB,KAAK3mB,WAAW8I,EAAMjD,SAASimB,EAAE/pB,WAAY,YAGzI,GAAIohN,EAAUxpF,UAAW,CAC1B,IAAI4pF,GAAWjvL,EAAAA,EAAAA,IAAkB3N,KAAK3mB,YAAuC,GAAzB2mB,KAAK3mB,WAAW+F,OAChEy9M,EAASL,EAAUl/M,OAAS,GAChC,IAAS6nB,EAAI,EAAGA,EAAI03L,EAAM5kN,OAAQktB,IAC9By3L,EAAUt/G,EAAAA,EAAShgG,MAAMs/M,EAASC,EAAM39M,SAASimB,EAAE/pB,WAAY,KAAMohN,EAAUxgH,YAAc,IAEjGh8E,KAAK3mB,WAAa,CACd+F,OAAQw9M,EAAS1rI,MAAOlxD,KAAK3mB,WAAW63E,MACxC8qB,WAAYh8E,KAAK3mB,WAAW2iG,YAEhCh8E,KAAK0hH,gBAAgBx7H,SAAS,CAAC,GAC/Bs2M,EAAUvpF,SAASjzG,KAAK3mB,WAC5B,MAEI2mB,KAAK0hH,gBAAgBx7H,SAAS,CAAE6zH,eAAe,IAC/C/5G,KAAK+mB,OAAOsM,EAAAA,IAA2B,CAAC,GACnC0nK,IACD/6L,KAAKkmI,aAAa/6F,UACdnrC,KAAKmqK,qBACLnqK,KAAK+mB,OAAOsM,EAAAA,IAAkC,CAAC,IAI3DrzB,KAAK88L,gBACL,MACJ,IAAK,eAEYz6J,EAAQ63J,YAAczjK,EAAAA,GAAWU,EAAAA,IACvC,CAACn3B,KAAKhd,SAAU,eACvB,MACJ,IAAK,mBACIgd,KAAK6gL,4BACN7gL,KAAKkpK,UAAU7mI,EAAQo3I,kBAE3Bz5K,KAAK6gL,4BAA6B,EAClC,MACJ,IAAK,iBACD7gL,KAAKmzJ,aAAa4pC,kBAClB,MACJ,IAAK,mBACD/8L,KAAK+mB,OAAOsM,EAAAA,IAA4B,CAAC,GACzC,MACJ,IAAK,mBACDrzB,KAAKg9L,0BACLh9L,KAAK+mB,OAAOsM,EAAAA,IAAsB,CAAC,GACnCrzB,KAAKmrC,UACL,MACJ,IAAK,qBACDnrC,KAAK+pI,aAAaq6C,kBAAkB/hJ,EAAQkiJ,oBAGxD,EACAz5C,EAAKzrI,UAAUy8L,kBAAoB,SAAUh1M,GACzC,IAAIkpB,EAAQhQ,KACZ,IAAe,IAAXlZ,EAAc,CAKdkZ,KAAKumB,GAAG8M,EAAAA,KAJG,SAAP4pK,IACAjtL,EAAMk5J,UAAUpiL,GAChBkpB,EAAM4W,IAAIyM,EAAAA,IAAqB4pK,EACnC,GACmCj9L,KACvC,CACJ,EAOA8qI,EAAKzrI,UAAUs7B,cAAgB,SAAUxnB,EAAM0nB,GAC3CpvB,EAAOpM,UAAUs7B,cAAcj7B,KAAKM,KAAMmT,EAAM0nB,GAE5C1nB,EAAwB,gBAAKnT,KAAKm8G,cAAgBthF,GAClD76B,KAAKm8G,aAAa4pB,eAE1B,EAKA+E,EAAKzrI,UAAU69L,eAAiB,WAC5B,IAAI5wC,EAAatsJ,KAAKgrI,mBAClBmyD,EAAan9L,KAAK+uJ,4BAClBquC,EAAcp9L,KAAKozJ,8BACnB9G,GAAe6wC,GAAeC,EAGxB9wC,IAAe6wC,IAAcC,IAC9BD,IAAeC,GAAiBA,IAAgBD,EACjDn9L,KAAK8oL,YAAc,EAEdqU,GAAcC,IACnBp9L,KAAK8oL,YAAc,IAPvB9oL,KAAK8oL,YAAc,CAU3B,EAKAh+C,EAAKzrI,UAAUg+L,eAAiB,WAC5B,OAAOr9L,KAAK8oL,WAChB,EAKAh+C,EAAKzrI,UAAUm4J,oBAAsB,WACjC,IAAI8lC,EAAc,GAAGjgM,MAAMqC,KAAKM,KAAKihI,mBAAmBnwH,iBAAiB,4CACrEysL,EAAa,GAAGlgM,MAAMqC,KAAKM,KAAKihI,mBAAmBz8F,uBAAuB,wBAC1EmwE,EAAO30G,KAAKi0G,aAChB,GAAIj0G,KAAKgiJ,4BAA8BhiJ,KAAKgrI,mBAAoB,CAC5D,IAAI7I,EAAQniI,KAAK6nJ,cAAcqN,iBAC/BooC,EAAcn7D,EAAMlqJ,OAASkqJ,EAAQm7D,CACzC,CACA,IAAK,IAAIn4L,EAAI,EAAGA,EAAIm4L,EAAYrlN,OAAQktB,IAAK,CACzC,IAAIq1G,EAAO8iF,EAAYp+M,SAASimB,EAAE/pB,WAAY,MAC1C4kB,KAAKw1G,eAAiBx1G,KAAK0yJ,iBAAmB1yJ,KAAK/W,gBAC9C0rH,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKs3K,iBAAoB/9C,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAK6N,cACnF0rH,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKo6H,cAIrCgF,EAAK5jF,UAAUzB,IAAI,kBAHnBqlF,EAAK5jF,UAAUzB,IAAI,mBAM/B,CACA,IAAK,IAAI+7B,EAAQ,EAAGA,EAAQqsI,EAAWtlN,OAAQi5E,IACvClxD,KAAK0yJ,iBACL6qC,EAAWr+M,SAASgyE,EAAM91E,WAAY,KAAKw7C,UAAUzB,IAAI,iBAGrE,EACA21G,EAAKzrI,UAAUm+L,kBAAoB,SAAUppF,EAASqpF,GAClD,IAAK,IAAIt4L,EAAI,EAAG8L,EAAMmjG,EAAQn8H,OAAQktB,EAAI8L,EAAK9L,IACvCivG,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKg5H,QACpCp0G,KAAKw9L,kBAAkBppF,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKg5H,SAAS,GAGpEp0G,KAAKu5G,YAAY95H,KAAK20H,EAAQl1H,SAASimB,EAAE/pB,WAAY,QAGzDuyB,EAAAA,EAAAA,IAAkB8vL,IAAiBA,IACnCz9L,KAAK09L,0BACL19L,KAAK29L,sBACL39L,KAAK49L,wBAEb,EACA9yD,EAAKzrI,UAAUq+L,wBAA0B,WACrC,IAAI/oF,EAAO30G,KAAKu5G,YACZ2tE,EAAW,GACXC,EAAY,GACZC,EAAc,GAClB,GAAIpnL,KAAK6oL,iBAAmB7oL,KAAK4oL,iBAAkB,CAC/C,IAAK,IAAIzjL,EAAI,EAAG8L,EAAM0jG,EAAK18H,OAAQktB,EAAI8L,EAAK9L,IAAK,CAE7C,IAAIgxG,EAAMxB,EAAKz1H,SAASimB,EAAE/pB,WAAY,KACnB,SAAf+6H,EAAIz8G,QACJy8G,EAAI0nF,YAAchgF,EAAAA,GAClBqpE,EAASznM,KAAK02H,IAEM,UAAfA,EAAIz8G,QACTy8G,EAAI0nF,YAAchgF,EAAAA,GAClBspE,EAAU1nM,KAAK02H,KAGfA,EAAI0nF,YAAc,UAClBzW,EAAY3nM,KAAK02H,GAEzB,CACAn2G,KAAKu5G,YAAc2tE,EAASvmM,OAAOymM,GAAazmM,OAAOwmM,EAC3D,CACJ,EACAr8C,EAAKzrI,UAAUs+L,oBAAsB,WACjC,IAAI39L,KAAK6oL,kBAAmB7oL,KAAK4oL,iBAOjC,IAJA,IAAIj0E,EAAO30G,KAAKu5G,YACZukF,EAAoB99L,KAAK42J,cACzBmnC,EAAmB/9L,KAAKgrI,mBACxB95E,EAAQ,EACH/rD,EAAI,EAAG8L,EAAM0jG,EAAK18H,OAAQktB,EAAI8L,EAAK9L,IAAK,CAE7C,IAAIgxG,EAAMxB,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAClC0iN,IAEI3nF,EAAI0nF,YADJ14L,EAAI24L,EACcjgF,EAAAA,GAGA,WAGtB1H,EAAIw5B,UAAYxqI,GAAK24L,GACrB3nF,EAAI0nF,YAAchgF,EAAAA,GAClBlJ,EAAK9tF,OAAO7mB,KAAK42J,cAAgB1lG,EAAO,EAAGyjD,EAAK9tF,OAAO1hB,EAAG,GAAG,IAC7D+rD,KAEK6sI,IAAqBD,IAC1B3nF,EAAI0nF,YAAc,WAEjBE,GAAqBD,IAAsBnwL,EAAAA,EAAAA,IAAkBwoG,EAAI0nF,eAClE1nF,EAAI0nF,iBAAc3iN,EAE1B,CACJ,EACA4vJ,EAAKzrI,UAAU60J,mBAAqB,WAChC,OAAOl0J,KAAKgrI,oBAAsBhrI,KAAK+uJ,2BAC3C,EACAjkB,EAAKzrI,UAAUyiI,aAAe,WAC1B,OAAmC,IAA5B9hI,KAAKgrI,oBAAiE,IAArChrI,KAAK+uJ,6BAA2E,IAAtC/uJ,KAAKozJ,4BAC3F,EACAtoB,EAAKzrI,UAAUkhI,cAAgB,WAC3B,OAAOvgI,KAAKg+L,UAChB,EACAlzD,EAAKzrI,UAAUu+L,sBAAwB,WAKnC,IAJA,IAAIjpF,EAAO30G,KAAKu5G,YACZ0kF,EAAc,EACdlV,EAAe,EACfnyB,EAAgB52J,KAAKgrI,mBAChB7lI,EAAI,EAAGA,EAAIwvG,EAAK18H,OAAQktB,IACzBwvG,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAK03K,aAC7B3tJ,EAAIyxJ,GACJjiD,EAAK9tF,OAAOo3K,EAAa,EAAGtpF,EAAK9tF,OAAO1hB,EAAG,GAAG,IAC9C84L,MAGAtpF,EAAK9tF,OAAO+vI,EAAgBmyB,EAAc,EAAGp0E,EAAK9tF,OAAO1hB,EAAG,GAAG,IAC/D4jL,KAIhB,EACAj+C,EAAKzrI,UAAU81L,iBAAmB,SAAUxgF,GACxC,IAAK,IAAIxvG,EAAI,EAAGA,EAAIwvG,EAAK18H,OAAQktB,IACzBwvG,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKg5H,QACjCp0G,KAAKm1L,iBAAiBxgF,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKg5H,SAElDO,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAK03K,YACtC9yJ,KAAKu1J,sBAGjB,EAOAzqB,EAAKzrI,UAAU40G,WAAa,SAAUiqF,GAClC,IAAIluL,EAAQhQ,KACRm+L,EAASn+L,KAAK22J,cAAc72K,KAAI,SAAUs+M,GAAK,OAAOA,EAAIpuL,EAAMylG,cAAcrB,QAAQn8H,MAAQ,IAAGkG,QAAO,SAAUigN,GAAK,OAAOA,GAAK,CAAG,IACtIC,EAAOF,EAAOlmN,SACb+nB,KAAKgiJ,6BAA8Br0I,EAAAA,EAAAA,IAAkB3N,KAAKu5G,cAA4C,IAA5Bv5G,KAAKu5G,YAAYthI,QAAgBimN,KAC5Gl+L,KAAKu5G,YAAc,GACnBv5G,KAAKw9L,kBAAkBx9L,KAAKo0G,UAEhC,IAAIA,EAAmB,IAATiqF,EAAar+L,KAAKu5G,YAC5Bv5G,KAAKu5G,YAAYl8G,MAAM8gM,EAAO,GAAIA,EAAOE,EAAO,GAAK,GACrDr+L,KAAK6nJ,eAAiB7nJ,KAAKgiJ,4BAA8BhiJ,KAAK8hI,gBAAkBq8D,EAAOlmN,QACpFkmN,EAAO,GAAK,IAEf/pF,EADiBp0G,KAAK6nJ,cAAcy2C,iBAAiBlqF,IAGzD,OAAOA,CACX,EAOA02B,EAAKzrI,UAAUwzJ,mCAAqC,SAAUirB,EAAe3nE,GACzE,IAAK,IAAIhxG,EAAI,EAAGA,EAAIgxG,EAAIl+H,OAAQktB,IAAK,CACjC,IAAIo5L,EAAmBpoF,EAAIj3H,SAASimB,EAAE/pB,WAAY,KAClD,GAAImjN,EAAiB38M,QAAUk8L,GAAiBygB,EAAiB/0M,aAAes0L,EAAe,CAC3F99K,KAAKw+L,cAAgBD,EACrB,KACJ,CACSA,EAAiBnqF,SACtBp0G,KAAK6yJ,mCAAmCirB,EAAeygB,EAAiBnqF,QAEhF,CACA,OAAOp0G,KAAKw+L,aAChB,EAKA1zD,EAAKzrI,UAAU0iJ,uBAAyB,WACpC,OAAO/hJ,KAAK22J,aAChB,EAKA7rB,EAAKzrI,UAAU8qF,SAAW,WACtB,OAAOnqF,KAAKo8E,KAChB,EAKA0uD,EAAKzrI,UAAU0nI,mBAAqB,WAChC,OAAO/mI,KAAKwrL,aAChB,EAMA1gD,EAAKzrI,UAAUo/L,uBAAyB,SAAU38C,GAC9C9hJ,KAAK22J,cAAgB7U,CACzB,EAMAhX,EAAKzrI,UAAU+iJ,kBAAoB,WAC/B,OAAOpiJ,KAAK0+L,0BAChB,EAMA5zD,EAAKzrI,UAAU4hI,iBAAmB,WAC9B,OAAOjhI,KAAKw1K,aAAaxwB,UAC7B,EAQAla,EAAKzrI,UAAUs/L,qBAAuB,SAAU37M,GAC5Cgd,KAAKw1K,aAAa1uB,SAAS9jK,EAC/B,EAMA8nJ,EAAKzrI,UAAUmsI,gBAAkB,WAC7B,OAAOxrI,KAAK6nJ,cAAcR,UAC9B,EAQAvc,EAAKzrI,UAAUu/L,oBAAsB,SAAU57M,GAC3Cgd,KAAK6nJ,cAAcT,SAASpkK,EAChC,EAMA8nJ,EAAKzrI,UAAU2mJ,WAAa,WACxB,OAAOhmJ,KAAK6nJ,cAAc7C,UAC9B,EAQAla,EAAKzrI,UAAUw/L,eAAiB,SAAU77M,GACtCgd,KAAK6nJ,cAAcf,SAAS9jK,EAChC,EAMA8nJ,EAAKzrI,UAAUskI,eAAiB,WAC5B,OAAO3jI,KAAKw1K,aAAanuB,UAC7B,EAQAvc,EAAKzrI,UAAUy/L,mBAAqB,SAAU97M,GAC1Cgd,KAAKw1K,aAAapuB,SAASpkK,EAC/B,EAMA8nJ,EAAKzrI,UAAUyjL,iBAAmB,WAE9B,OADA9iL,KAAK++L,cAAgB/+L,KAAKhd,QAAQwhD,uBAAuBq5E,EAAAA,IAAqB,GACvE79G,KAAK++L,aAChB,EAMAj0D,EAAKzrI,UAAU2/L,sBAAwB,WAEnC,OADAh/L,KAAK++L,cAAgB/+L,KAAKhd,QAAQwhD,uBAAuBq5E,EAAAA,IAAqB,GACvE79G,KAAK++L,cAAcxjF,WAAWA,UACzC,EAMAuvB,EAAKzrI,UAAU4/L,SAAW,WACtB,OAAOj/L,KAAKk/L,SAChB,EAQAp0D,EAAKzrI,UAAU8/L,aAAe,SAAUn8M,GACpCgd,KAAKk/L,UAAYl8M,CACrB,EAQA8nJ,EAAKzrI,UAAU6wJ,cAAgB,SAAUppK,GACrC,OAAIkZ,KAAK80G,sBAAwB90G,KAAKy1G,cAAcC,kBACzC11G,KAAKyqJ,eAAeyF,cAAcppK,GAGlCkZ,KAAK6nJ,cAAcqI,cAAcppK,EAEhD,EAQAgkJ,EAAKzrI,UAAUixJ,qBAAuB,SAAUxpK,GAC5C,OAAOkZ,KAAK6nJ,cAAcyI,qBAAqBxpK,EACnD,EAOAgkJ,EAAKzrI,UAAU+/L,oBAAsB,SAAUt4M,GAC3C,OAAOkZ,KAAKq/L,oBAAoBngN,SAAS4H,EAAM1L,WAAY,IAC/D,EAMA0vJ,EAAKzrI,UAAUstJ,QAAU,WACrB,OAAO3sJ,KAAK6nJ,cAAc2F,gBAC9B,EAOA1iB,EAAKzrI,UAAU0pK,yBAA2B,SAAUjiL,GAChD,OAAOkZ,KAAK6nJ,cAAckhB,yBAAyBjiL,EACvD,EAQAgkJ,EAAKzrI,UAAUigM,WAAa,SAAUnhK,GAClC,IAAIrH,EAAMqH,EACNlwC,EAAO,CAAEkwC,OAAQA,GACrB,KAAKxwB,EAAAA,EAAAA,IAAkBwwB,KAAWxwB,EAAAA,EAAAA,KAAkBg4G,EAAAA,EAAAA,IAAa7uF,EAAK,yBAC/DnpB,EAAAA,EAAAA,KAAkBg4G,EAAAA,EAAAA,IAAa7uF,EAAK,wBAAyB,CAChE,IAAI0jF,GAAOphF,EAAAA,EAAAA,IAAQtC,EAAK,IAAM+mF,EAAAA,IAC9B,IAAKrD,EAAM,CACP,IAAIt+C,GAAM9iC,EAAAA,EAAAA,IAAQtC,EAAK,IAAM+mF,EAAAA,IAC7B,KAAKlwG,EAAAA,EAAAA,IAAkBuuD,KAASA,EAAItlC,UAAUM,SAAS,cAAe,CAClE,IAAIwqH,EAAS1hJ,KAAKspK,oBAAoBptG,EAAI96B,aAAa,aACnD61H,EAAW/3K,SAASg9E,EAAI96B,aAAay8E,EAAAA,IAAwB,IACjE5vH,EAAO,CAAEiuE,IAAKA,EAAKqjI,QAAS79C,EAAO77J,KAAMoxK,SAAUA,EACvD,CACA,OAAOhpK,CACX,CACA,IAAIk6K,EAAYjpL,SAASs7H,EAAKp5E,aAAay8E,EAAAA,IAAwB,IACnE,KAAKlwG,EAAAA,EAAAA,IAAkB6sG,KAAU1gG,MAAMquJ,GAAY,CAC/C,IAAIyG,GAAQx1I,EAAAA,EAAAA,IAAQohF,EAAM,IAAMqD,EAAAA,IAE5ByqC,GADA2O,EAAW/3K,SAAS0vL,EAAMxtI,aAAay8E,EAAAA,IAAwB,IACrD79G,KAAKgrI,oBACflrD,EAAY9/E,KAAKu5G,YAAYr6H,SAASipL,EAAU/sL,WAAY,KAAK0zK,qBACjE30K,EAAO6lB,KAAK6nJ,cAAc8E,UAC1B7lK,EAAQqhL,EAAYnoK,KAAKqgL,iBACzBrgL,KAAK8hI,iBACDhiD,IAAc+9B,EAAAA,GACd1jI,EAAO6lB,KAAK6nJ,cAAc8E,UAEP,YAAd7sE,GACLh5F,EAAQqhL,EAAY7f,EAAUtoJ,KAAK6oL,gBACnC1uM,EAAO6lB,KAAK6nJ,cAAc0F,kBAErBztE,IAAc+9B,EAAAA,KACnB/2H,EAAQqhL,GAAanoK,KAAK6oL,gBAAkB7oL,KAAK+oL,cACjD5uM,EAAO6lB,KAAK6nJ,cAAcsnB,uBAGlC,IAAIqwB,EAAarlN,EAAKgE,QAAO,SAAU0I,GAAK,OAAOA,EAAEqlB,MAAQ0iK,EAAMxtI,aAAa,WAAa,IACzFm+J,EAAU,CAAC,EACXngI,OAAS,EACTvgF,OAAOC,KAAK0gN,GAAYvnN,SACxBsnN,EAAUC,EAAW,GAAG35M,KACxBu5E,EAASogI,EAAW,GAAGr9D,MAAMjjJ,SAAS4H,EAAM1L,WAAY,KAAKgkF,QAEjEnxE,EAAO,CAAEusH,KAAMA,EAAM2tD,UAAWA,EAAWjsG,IAAK0yG,EAAO3X,SAAUA,EAAUsoC,QAASA,EAASngI,OAAQA,EAAQjhC,OAAQA,EACzH,CACJ,CACA,OAAOlwC,CACX,EAMA68I,EAAKzrI,UAAUkuJ,eAAiB,WAC5B,OAAOvtJ,KAAK6nJ,cAAc4F,uBAC9B,EAMA3iB,EAAKzrI,UAAU8vK,mBAAqB,WAChC,OAAOnvK,KAAK6nJ,cAAc43C,2BAC9B,EAMA30D,EAAKzrI,UAAU+uJ,YAAc,WACzB,OAAOpuJ,KAAK0/L,gBAChB,EAMA50D,EAAKzrI,UAAUqgM,eAAiB,SAAUC,GACtC,IAAIhyL,EAAAA,EAAAA,IAAkB3N,KAAKwrI,kBAAkBj5H,cAAcsrG,EAAAA,KACvD,MAAO,GAEX,IAAI4rC,EAAQzpJ,KAAK8hI,eAAiB9hI,KAAK4/L,4BACjC5/L,KAAKwrI,kBAAkBj5H,cAAcsrG,EAAAA,IACvC1jI,EAAO,GAAGkjB,MAAMqC,KAAK+pJ,EAAM7xK,UAC/B,GAAIooB,KAAKwnJ,WAAY,CACjB,IAAIY,EAAWpoJ,KAAK8hI,eAAiB9hI,KAAKihI,mBAAmB1uH,cAAc,IAAMsrG,EAAAA,IAAuBtrG,cAAcsrG,EAAAA,IAChH79G,KAAK2jI,iBAAiBpxH,cAAcsrG,EAAAA,IACtC+lC,EAAa,GAAGvmJ,MAAMqC,KAAK0oJ,EAASxwK,UACxCuC,EAAO6lB,KAAKizK,eAAervB,EAAYzpK,EAC3C,CAEA,OADe6lB,KAAK6gJ,iBAAiB1mK,EAAMwlN,EAE/C,EAOA70D,EAAKzrI,UAAU4zK,eAAiB,SAAUplB,EAAOgyC,GAC7C,IAAK,IAAI16L,EAAI,EAAG8L,EAAM4uL,EAAM5nN,OAAQktB,EAAI8L,EAAK9L,IACzC0oJ,EAAMpuK,KAAKogN,EAAM3gN,SAASimB,EAAE/pB,WAAY,MAE5C,OAAOyyK,CACX,EACA/iB,EAAKzrI,UAAUwhJ,iBAAmB,SAAU1mK,EAAM2lN,GAE9C,IADA,IAAIC,EAAQ,GACH56L,EAAI,EAAG8L,EAAM92B,EAAKlC,OAAQktB,EAAI8L,EAAK9L,KACpChrB,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAKw7C,UAAUM,SAAS2mF,EAAAA,KAC/C1jI,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAKw7C,UAAUM,SAAS,iBAAkB4oK,IACvE9/L,KAAKsgJ,yBACLy/C,EAAM7gN,SAAS/E,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAKgmD,aAAa,iBAAkB,KAAOjnD,EAAK+E,SAASimB,EAAE/pB,WAAY,KAGlH2kN,EAAMtgN,KAAKtF,EAAK+E,SAASimB,EAAE/pB,WAAY,OAInD,OAAO2kN,CACX,EAMAj1D,EAAKzrI,UAAUgwJ,mBAAqB,WAChC,OAAOrvJ,KAAKggM,uBAChB,EAMAl1D,EAAKzrI,UAAU2gM,sBAAwB,SAAUL,GAC7C,IAAK3/L,KAAK8hI,eACN,MAAO,GAEX,IAAI3nJ,EAAO,GAAGkjB,MAAMqC,KAAKM,KAAKgmJ,aAAazzI,cAAc,IAAMsrG,EAAAA,IAAyBtrG,cAAcsrG,EAAAA,IAAgBjmI,UACtH,GAAIooB,KAAKwnJ,WAAY,CACjB,IAAI5D,EAAa,GAAGvmJ,MAAMqC,KAAKM,KAAKihI,mBAAmB1uH,cAAc,IAAMsrG,EAAAA,IAAwBtrG,cAAcsrG,EAAAA,IAAgBjmI,UACjIuC,EAAO6lB,KAAKizK,eAAervB,EAAYzpK,EAC3C,CAEA,OADe6lB,KAAK6gJ,iBAAiB1mK,EAAMwlN,EAE/C,EAMA70D,EAAKzrI,UAAUggM,kBAAoB,WAC/B,OAAOr/L,KAAKigM,sBAChB,EAMAn1D,EAAKzrI,UAAU4gM,qBAAuB,SAAUN,GAC5C,IAAIxlN,EAAO,GAAGkjB,MAAMqC,KAAKM,KAAKgmJ,aAAazzI,cAAc,IAAMsrG,EAAAA,IAAwBtrG,cAAcsrG,EAAAA,IAAgBjmI,UACrH,GAAIooB,KAAKwnJ,WAAY,CACjB,IAAI5D,EAAa,GAAGvmJ,MAAMqC,KAAKM,KAAKihI,mBAAmB1uH,cAAc,IAAMsrG,EAAAA,IAAuBtrG,cAAcsrG,EAAAA,IAAgBjmI,UAChIuC,EAAO6lB,KAAKizK,eAAervB,EAAYzpK,EAC3C,CAEA,OADe6lB,KAAK6gJ,iBAAiB1mK,EAAMwlN,EAE/C,EAMA70D,EAAKzrI,UAAU6vJ,uBAAyB,WACpC,OAAOlvJ,KAAKkgM,2BAChB,EAMAp1D,EAAKzrI,UAAU6gM,0BAA4B,SAAUP,GACjD,GAA6B,UAAzB3/L,KAAKugI,iBAAwD,eAAzBvgI,KAAKugI,gBACzC,MAAO,GAEX,IAAIpmJ,EAAO,GAAGkjB,MAAMqC,KAAKM,KAAKgmJ,aAAazzI,cAAc,2BAA2BA,cAAcsrG,EAAAA,IAAgBjmI,UAClH,GAAIooB,KAAKwnJ,WAAY,CACjB,IAAI5D,EAAa,GAAGvmJ,MAAMqC,KAAKM,KAAKihI,mBAAmB1uH,cAAc,0BAA0BA,cAAcsrG,EAAAA,IAAgBjmI,UAC7HuC,EAAO6lB,KAAKizK,eAAervB,EAAYzpK,EAC3C,CAEA,OADe6lB,KAAK6gJ,iBAAiB1mK,EAAMwlN,EAE/C,EAWA70D,EAAKzrI,UAAU8gM,aAAe,SAAUnhN,EAAK4C,EAAOrE,GAChD,IACIgiN,EAAU,OACVh6C,EAAS,QAET66C,EAAmC,UAAzBpgM,KAAKugI,gBACf8/D,EAASrgM,KAAK24G,0BAA0B,GACxC6B,EAAO,IAAIiC,EAAAA,EAAaz8G,KAAMA,KAAK8yG,gBACnCwtF,EAAWtgM,KAAKgzJ,sBAAsBpxK,GACtCu0H,EAAMn2G,KAAK21G,iBAAiB/zH,GAG5BynL,GAF0C,YAA7BlzD,EAAI24C,qBAAqC9uJ,KAAK6nJ,cAAc0F,iBAC5C,iBAA7Bp3C,EAAI24C,qBAA0C9uJ,KAAK0lJ,2BAA6B1lJ,KAAK6nJ,cAAc8E,WAC1ExuK,QAAO,SAAU0I,GAC1C,OAAOumB,EAAAA,EAAAA,IAASizL,EAAQx5M,EAAEhB,QAAU7G,CACxC,IAAG,GACCy7H,EAAK4uD,EAAcrpK,KAAKhd,QAAQuvB,cAAc,aAAe82J,EAAuB,IAAI,KAAO,KACnG,KAAK17J,EAAAA,EAAAA,IAAkB8sG,GAAvB,CACyB,kBAAVl9H,IACPA,EAAQyiB,KAAKulD,SAAShoE,KAE1ByE,EAAAA,EAAAA,IAASJ,EAAOrE,EAAO8rL,EAAY,GAAKk2B,IACxC,IAAI77J,EAAO1jC,KAAK+uJ,6BAA+B/uJ,KAAKgrI,mBAChD+mC,EAAU/xK,KAAKgvJ,yBACfhvJ,KAAK0iI,kBAAoB09D,GACzB18J,IAEJ,IAAI68J,EAAQ78J,EAAOquI,EACfx0C,EAAKv9H,KAAK80G,qBAAuB2F,EAAG7iI,SAASsH,SAASohN,EAASllN,WAAY,KACzE4kB,KAAKswK,iBAAiBjH,EAAY,GAAK9jB,GAAS+6C,GACtD,KAAK3yL,EAAAA,EAAAA,IAAkB4vH,GAAK,CACxB,IAAIijE,EAAmC,YAA7BrqF,EAAI24C,qBAAqCprH,EAAoC,iBAA7ByyE,EAAI24C,qBAA0CyxC,EAAQ,EAC5GvgM,KAAKy1G,cAAcrB,QAAQn8H,SAC3BqoN,GAAsBtgM,KAAKy1G,cAAcrB,QAAQn8H,SAEjD+nB,KAAKwiI,WAAaxiI,KAAKuiI,iBACvB+9D,IAEAtgM,KAAK0iI,kBAAoB09D,GACzBE,IAEJ,IAAIG,EAAOp3B,EAAsB,MAAEi3B,EAAWE,GAC9ChmF,EAAKkmF,UAAUnjE,EAAIkjE,EAAMp3B,EAAY,GAAKk2B,GAAU,CAAEz4M,MAAOuiL,EAAY,GAAK9jB,KAC1EvlJ,KAAK87F,UACLyhC,EAAKv9H,KAAK80G,qBAAuB2F,EAAG7iI,SAASsH,SAASohN,EAASllN,WAAY,KACrE4kB,KAAKswK,iBAAiBjH,EAAY,GAAK9jB,GAAS+6C,IAEtDtgM,KAAKg8E,WAAW/jG,OAAS,IACzB+nB,KAAK+mB,OAAOsM,EAAAA,IAA8B,CAAC,GACvCrzB,KAAKy1G,cAAcrB,QAAQn8H,OAAS,GACpC+nB,KAAK+mB,OAAOsM,EAAAA,IAAwB,CAAC,KAIxC1lB,EAAAA,EAAAA,IAAkB07J,KAAiB17J,EAAAA,EAAAA,IAAkB07J,EAAqB,WAC3EA,EAAqB,QAAE,GAAKznL,GAASrE,GAGzCyiB,KAAK81B,QAAQzC,EAAAA,IAAsB,CAC/BmnF,KAAM+iB,EAAIn+D,OAAQ+2C,EAAKtwH,KAAMwjL,EAAY,GAAKk2B,KAE9Cv/L,KAAK87F,SAA2C,MAAhCyhC,EAAGn8F,aAAa,aAAuBm8F,EAAG3mG,UAAUM,SAAS,cAC7EqmG,EAAG9rH,OAEX,CAIJ,CACJ,EAOAq5H,EAAKzrI,UAAUshM,gCAAkC,SAAUC,EAAWzlF,GAClE,IAAInrG,EAAQhQ,KACRA,KAAK87F,SAEL97F,KAAKgtC,cAAc,CAAC,uBAAmB9xD,GAAW,WAC9C,IAAI2lN,KAAc7wL,EAAMwyH,YAAaxyH,EAAMhtB,QAAQ8tB,iBAAiB,gBAAgB74B,QAChFkC,EAAO0mN,EAAc7wL,EAAMw7H,kBAAkB16H,iBAAiB,UAC9Dd,EAAMo+I,cACVp+I,EAAM8wL,uBAAuB3mN,EAAM0mN,GACnC,IAAIn4C,EAAQ14I,EAAMg2I,aAAazzI,cAAc,IAAMsrG,EAAAA,IAC/CguC,EAAS77I,EAAMg2I,aAAazzI,cAAc,2BAC1Cm2I,GAASA,EAAM53I,iBAAiB,mBAAmB74B,QACnD+3B,EAAM8wL,uBAAuB9wL,EAAMq/I,qBAAsBwxC,GAAa,GAEtEh1C,GAAUA,EAAO/6I,iBAAiB,mBAAmB74B,QACrD+3B,EAAM8wL,uBAAuB9wL,EAAMk/I,yBAA0B2xC,GAAa,GAE1E1lF,GACAnrG,EAAMmrG,iBAEd,GAER,EAQA2vB,EAAKzrI,UAAUyhM,uBAAyB,SAAU3mN,EAAM0mN,EAAalxD,GAMjE,IALA,IAAIxN,EAAQ,QAERqf,EAASxhJ,KAAKqgL,iBACd0gB,EAAc,EACdC,GAAa,EACRxqL,EAAI,EAAGA,EAAIr8B,EAAKlC,OAAQu+B,IAAK,CAClC,IAAIyqL,EAAUjhM,KAAKspK,oBAAoBnvL,EAAK+E,SAASs3B,EAAEp7B,WAAY,KAAKgmD,aAAa,aACrF,GAAIy/J,IAAgBI,IAAWt7E,EAAAA,EAAAA,IAAaxrI,EAAK+E,SAASs3B,EAAEp7B,WAAY,KAAM,eAAgB,CAC1F,IAAIi+K,GAAU1zC,EAAAA,EAAAA,IAAaxrI,EAAK+E,SAASs3B,EAAEp7B,WAAY,KAAM,eAAeygD,cAAc,GAC1FolK,EAAU5nC,EAAQiQ,oBAAoBnvL,EAAK+E,SAASs3B,EAAEp7B,WAAY,KAAKgmD,aAAa,aACpF2/J,EAAc1nC,EAAQgnB,iBACtB2gB,GAAa,CACjB,CACA,GAAIC,GAAWA,EAAQ3/C,aAAc3zI,EAAAA,EAAAA,IAAkBszL,EAAQn6M,SAC1D3M,EAAK+E,SAASs3B,EAAEp7B,WAAY,KAAKw7C,UAAUM,SAAS,eACrD,IAAK,IAAI/xB,EAAI,EAAGA,EAAI87L,EAAQ,GAAK9+D,GAAOlqJ,OAAQktB,IAAK,CACjD,IAAIq1G,EAAOymF,EAAQ,GAAK9+D,GAAOjjJ,SAASimB,EAAE/pB,WAAY,KACtD,GAAIo/H,EAAK0mF,WAAY,CACjB,IAAIC,EAAe,IAAI1kF,EAAAA,EAAaz8G,KAAMA,KAAK8yG,gBAC3CyqB,EAAKsjE,EAAc1mN,EAAK+E,SAASs3B,EAAEp7B,WAAY,KAC9CxD,SAAS4iI,EAAK1zH,OAASk6M,EAAaD,EAAcv/C,IAAWxhJ,KAAKswK,iBAAiB95J,EAAGm5H,EAAWn1B,EAAK1zH,MAAQqe,EAAIq8I,GACvH2/C,EAAaT,UAAUnjE,EAAI/iB,EAAMymF,EAAQp7M,KAAM,CAAEiB,MAAOm6M,EAAmB,OAC/E,CACJ,CAEJD,GAAa,CACjB,CACJ,EAKAl2D,EAAKzrI,UAAU+hM,kCAAoC,WAG/C,IAFA,IAAIP,KAAc7gM,KAAKwiI,YAAaxiI,KAAKhd,QAAQ8tB,iBAAiB,gBAAgB74B,QAC9EkC,EAAO6lB,KAAKwrI,kBAAkB16H,iBAAiB,yCAC1C3L,EAAI,EAAGA,EAAIhrB,EAAKlC,OAAQktB,IAAK,CAElC,IAAIk0J,EAAUr5J,KACVihM,EAAUjhM,KAAKspK,oBAAoBnvL,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAKgmD,aAAa,aAKrF,GAJIy/J,IAAgBI,IAAWt7E,EAAAA,EAAAA,IAAaxrI,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAM,iBAE1E6lN,GADA5nC,GAAU1zC,EAAAA,EAAAA,IAAaxrI,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAM,eAAeygD,cAAc,IACpEytI,oBAAoBnvL,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAKgmD,aAAa,cAEpF6/J,EAAS,CACT,IAAI9+D,EAAQ8+D,EAAQ9+D,MAAMhkJ,QAAO,SAAUq8H,GAAQ,OAAOA,EAAK+nC,UAAY,IACvEt0J,EAAO,CAAEk0I,MAAOA,EAAOt8I,KAAMo7M,EAAQp7M,KAAMw7M,QAASJ,EAAQ/0L,KAChEmtJ,EAAQtyI,OAAOsM,EAAAA,GAA6BplC,EAChD,CACJ,CACJ,EAMA68I,EAAKzrI,UAAUiiM,gCAAkC,SAAUV,GACvD,GAAI5gM,KAAK87F,QAIL,IAHA,IACImlG,EAAUjhM,KAAKw1K,aAAar7L,KAC5BguL,EAAYnoK,KAAK0uJ,yBAAyBkyC,GACrCpqL,EAAI,EAAGA,EAAIyqL,EAAQhpN,OAAQu+B,IAAK,CACrC,IAAIgkG,EAAOymF,EAAQ/hN,SAASs3B,EAAEp7B,WAAY,KAAe,MAAE8D,SAASipL,EAAU/sL,WAAY,KAC1F,GAAIo/H,GAAQA,EAAKp7C,OAAOlzD,MAAQ00L,EAAW,CACvC,IAAIW,EAAqB,IAAIvpC,EAAmBh4J,KAAMA,KAAK8yG,gBACvDyqB,GAAK5X,EAAAA,EAAAA,IAAa3lH,KAAKhd,QAAQ8tB,iBAAiB,iBAAmB8vL,EAAY,KAAK,GAAI,kBAC5FW,EAAmBp2J,QAAQqvE,EAAM+iB,EACrC,CACJ,CAER,EAUAuN,EAAKzrI,UAAUs9L,WAAa,SAAU39M,EAAKugN,GACvC,IACIiC,EAAaxhM,KAAK6nJ,cAAc8E,UAChC0zC,EAASrgM,KAAK24G,0BAA0B,GACxC34G,KAAKy1G,cAAcrB,QAAQn8H,OAAS,GAAK+nB,KAAKg8E,WAAW/jG,OAAS,IAClEupN,EAAaA,EAAWrjN,QAAO,SAAU+9E,GAAO,OAAOA,EAAIolF,SAAW,KAE1E,IAAI+nB,EAAcm4B,EAAWrjN,QAAO,SAAU0I,GAC1C,OAAOumB,EAAAA,EAAAA,IAASizL,EAAQx5M,EAAEhB,QAAU7G,CACxC,IAAG,GACCyiN,EAAep4B,EAAc,GAAGhsK,MAAMqC,KAAKM,KAAKhd,QAAQ8tB,iBAAiB,aAAeu4J,EAAuB,IAAI,WAAQnuL,EAC/H,KAAKyyB,EAAAA,EAAAA,IAAkB07J,IAAgBo4B,EAAaxpN,OAApD,CAEI,GADAoxL,EAAYhrF,QAAUkhH,EAClBv/L,KAAK8hI,eAAgB,CACrB,IAAI4/D,GAAa/7E,EAAAA,EAAAA,IAAa87E,EAAa,GAAI,WAC3CE,EAAiBD,EAAWzoJ,cAAcxzC,QAAQ,gDAAkD,OAClGi8L,EAAWzoJ,cAAcxzC,QAAQ,kDAAoD,QAAU,UACjGmhL,EAAM5mL,KAAKkyK,uBAAuB7I,EAAYviL,OAElD,GADAkZ,KAAK4hM,iBAAiBhb,EAAK2Y,GACJ,SAAnBoC,EAA2B,CAC3B,IAAIE,EAAM7hM,KAAK2hJ,gBAAgB0nB,EAAYviL,OAC3CkZ,KAAK4hM,iBAAiBC,EAAKtC,EAC/B,CACA,GAAuB,UAAnBoC,GAA8B3hM,KAAKopL,mBAAmBnxM,OAAS,EAAG,CAClE,IAAI6pN,EAAM9hM,KAAK0lJ,2BAA2B2jB,EAAYviL,OACtDkZ,KAAK4hM,iBAAiBE,EAAKvC,EAC/B,CACJ,MACK,GAAIv/L,KAAKwnJ,WAAY,CACtB,IAAIu6C,EAAS/hM,KAAK2hJ,gBAAgB0nB,EAAYviL,OAC9CkZ,KAAK4hM,iBAAiBG,EAAQxC,EAClC,MAEIv/L,KAAK4hM,iBAAiBv4B,EAAak2B,GAEnCv/L,KAAKg8E,WAAW/jG,OAAS,IACzB+nB,KAAK+mB,OAAOsM,EAAAA,IAA8B,CAAC,GACvCrzB,KAAKy1G,cAAcrB,QAAQn8H,OAAS,GACpC+nB,KAAK+mB,OAAOsM,EAAAA,IAAwB,CAAC,GAMjD,CACJ,EACAy3G,EAAKzrI,UAAUuiM,iBAAmB,SAAUjb,EAAK4Y,GAC7C,IAAI7+D,EAAc,IAAIC,EAAAA,EAAY3gI,KAAK8yG,eAAgB,KAAM9yG,MAC7D2mL,EAAItoG,QAAUkhH,GACdyC,EAAAA,EAAAA,IAAmBrb,EAAK3mL,KAAK+2G,uBAAwB4vE,EAAItoG,SACzDqiD,EAAYv1F,QAAQw7I,EAAK3mL,KAAKi0G,cAAc,EAChD,EASA62B,EAAKzrI,UAAUixK,iBAAmB,SAAUrZ,EAAUimB,GAClD,IAAI/mE,EAAMn2G,KAAKgwK,iBAAiBkN,GAChC,OAAOpK,EAAAA,EAAAA,IAAwB9yK,KAAMm2G,EAAK8gD,EAAUimB,EACxD,EASApyC,EAAKzrI,UAAU4wK,wBAA0B,SAAUhZ,EAAUimB,GACzD,KAAwB,eAApBl9K,KAAKg+L,YAA+B9gB,GAAel9K,KAAK+oL,cAA5D,CAGA,IAAIjiM,EAAQkZ,KAAKgrI,oBAAsBhrI,KAAK+uJ,4BAC5C,OAAO/uJ,KAAKqvJ,qBAAqBnwK,SAAS+3K,EAAS77K,WAAY,MAC3D4kB,KAAKqvJ,qBAAqBnwK,SAAS+3K,EAAS77K,WAAY,KAAKopD,uBAAuBq5E,EAAAA,IAAkBq/D,EAAcp2L,EAHxH,CAIJ,EAQAgkJ,EAAKzrI,UAAU4iM,4BAA8B,SAAUhrC,EAAUimB,GAC7D,IAAIp2L,EAAQkZ,KAAK+uJ,4BAA8B/uJ,KAAKgvJ,yBAChD70K,EAAO6lB,KAAKkvJ,yBAChB,OAAO/0K,EAAK+E,SAAS+3K,EAAS77K,WAAY,MAAQjB,EAAK+E,SAAS+3K,EAAS77K,WAAY,KAChFopD,uBAAuBq5E,EAAAA,IAAkBq/D,EAAcp2L,EAChE,EAQAgkJ,EAAKzrI,UAAUkoL,uBAAyB,SAAUzgM,GAC9C,OAAOkZ,KAAK2jI,iBAAiBn/F,uBAAuB,gBAAgBtlD,SAAS4H,EAAM1L,WAAY,IACnG,EAOA0vJ,EAAKzrI,UAAUygL,8BAAgC,SAAUh5L,GACrD,IAAI48C,EAAO1jC,KAAKgrI,oBAAsBhrI,KAAK+uJ,4BAC3C,OAAO/uJ,KAAK4kJ,0BAA0BpgH,uBAAuB,gBAAgB19C,EAAQ48C,EACzF,EAOAonG,EAAKzrI,UAAUwgL,kCAAoC,SAAU/4L,GACzD,IAAI48C,EAAO1jC,KAAK+uJ,4BAA8B/uJ,KAAKgvJ,yBACnD,OAAOhvJ,KAAKghI,uBAAuBx8F,uBAAuB,gBAAgB19C,EAAQ48C,EACtF,EAOAonG,EAAKzrI,UAAU6iM,iCAAmC,SAAUp7M,GACxD,OAAOkZ,KAAK8kJ,yBAAyBtgH,uBAAuB,gBAAgBtlD,SAAS4H,EAAM1L,WAAY,IAC3G,EAQA0vJ,EAAKzrI,UAAUiqK,oBAAsB,SAAUp9J,EAAK0pJ,EAAWyiB,GAC3D,IAAIl+L,EAAO6lB,KAAK6nJ,cAAc8E,UAC1BzwF,EAAMl8D,KAAKmqJ,UAAUhwK,EAAM+xB,GAC/B,OAAIlM,KAAK8hI,kBACA5lE,GAAO05F,GAAayiB,OACrBn8G,EAAMl8D,KAAKmqJ,UAAUnqJ,KAAK6nJ,cAAc0F,iBAAkBrhJ,KACpB,eAAzBlM,KAAKugI,iBAAqC83C,KACnDn8G,EAAMl8D,KAAKmqJ,UAAUnqJ,KAAK6nJ,cAAcsnB,qBAAsBjjK,IAE3DgwD,IAGXvuD,EAAAA,EAAAA,IAAkBuuD,IAAQl8D,KAAK80G,sBAAwB90G,KAAKy1G,cAAcrB,QAAQn8H,OAAS,EAC3FikF,EAAMl8D,KAAKmqJ,UAAUnqJ,KAAKgsJ,MAAO9/I,GAG9BgwD,CACX,EACA4uE,EAAKzrI,UAAU8qJ,UAAY,SAAUhwK,EAAM+xB,GACvC,GAAI/xB,EACA,IAAK,IAAIo0B,EAAK,EAAGkpJ,EAASt9K,EAAMo0B,EAAKkpJ,EAAOx/K,OAAQs2B,IAAM,CACtD,IAAI2tD,EAAMu7F,EAAOlpJ,GACjB,GAAI2tD,EAAIhwD,MAAQA,EACZ,OAAOgwD,CAEf,CAEJ,OAAO,IACX,EAKA4uE,EAAKzrI,UAAUsiJ,cAAgB,WAC3B,OAAO3hJ,KAAK6nJ,cAAc8E,SAC9B,EAKA7hB,EAAKzrI,UAAU6yK,qBAAuB,WAClC,IAAI/3L,EAAO,GAIX,OAHI6lB,KAAK8hI,iBACL3nJ,EAAO6lB,KAAK6nJ,cAAc0F,kBAEvBpzK,CACX,EAKA2wJ,EAAKzrI,UAAUqmJ,yBAA2B,WACtC,IAAIvrK,EAAO,GAIX,MAH6B,UAAzB6lB,KAAKugI,iBAAwD,eAAzBvgI,KAAKugI,kBACzCpmJ,EAAO6lB,KAAK6nJ,cAAcsnB,sBAEvBh1L,CACX,EAQA2wJ,EAAKzrI,UAAUulI,uBAAyB,SAAUhjJ,GAC9C,IAAIw9E,EAASp/D,KAAK21G,iBAAiB/zH,GACnC,OAAOw9E,EAASp/D,KAAK83H,qBAAqB14D,EAAOlzD,UAAOhxB,CAC5D,EAQA4vJ,EAAKzrI,UAAUy4H,qBAAuB,SAAU5rH,GAC5C,IAAIlpB,EAAUgd,KAAKihI,mBAAmB1uH,cAAc,iBAAmBrG,EAAM,KAC7E,OAAOlpB,EAAUA,EAAQi2D,mBAAgB/9D,CAC7C,EAMA4vJ,EAAKzrI,UAAU2wK,iBAAmB,SAAUlpL,GACxC,IAAIs4E,EAKJ,OAJAp/D,KAAKi0G,aAAatsG,MAAK,SAAUwuG,EAAKhxG,GAElC,OADAi6D,EAAS+2C,EACFhxG,IAAMre,CACjB,IACOs4E,CACX,EAQA0rE,EAAKzrI,UAAUs2G,iBAAmB,SAAU/zH,GACxC,OAAO8/L,EAAAA,EAAAA,IAAqB1hL,KAAKi0G,cAAc,SAAU7oH,GACrD,GAAIA,EAAKxJ,QAAUA,EACf,OAAOwJ,CAGf,IAAG,EACP,EAQA0/I,EAAKzrI,UAAU2zJ,sBAAwB,SAAUpxK,GAE7C,IADA,IAAI+yH,EAAO30G,KAAKi0G,aACP9uG,EAAI,EAAGA,EAAIwvG,EAAK18H,OAAQktB,IAC7B,GAAIwvG,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKwG,QAAUA,EAC3C,OAAOujB,EAGf,OAAQ,CACZ,EAQA2lI,EAAKzrI,UAAUu4G,eAAiB,SAAU1rG,GACtC,OAAOw1K,EAAAA,EAAAA,IAAqB1hL,KAAKi0G,aAAatzH,OAAOqf,KAAKmiM,kBAAkBniM,KAAKo0G,WAAW,SAAUhpH,GAClG,GAAIA,EAAK8gB,MAAQA,EACb,OAAO9gB,CAGf,IAAG,EACP,EAOA0/I,EAAKzrI,UAAU8iM,kBAAoB,SAAU/tF,EAASoqF,QAC5B,IAAlBA,IAA4BA,EAAgB,IAChD,IAAK,IAAIjwL,EAAK,EAAGmpG,EAAYtD,EAAS7lG,EAAKmpG,EAAUz/H,OAAQs2B,IAAM,CAC/D,IAAI6wD,EAASs4C,EAAUnpG,GACnB6wD,EAAOg1C,UACPoqF,EAAc/+M,KAAK2/E,GACnBp/D,KAAKmiM,kBAAkB/iI,EAAOg1C,QAASoqF,GAE/C,CACA,OAAOA,CACX,EAQA1zD,EAAKzrI,UAAUuvJ,oBAAsB,SAAU1iJ,GAC3C,IAAIplB,GAAQ46L,EAAAA,EAAAA,IAAqB1hL,KAAKi0G,cAAc,SAAU7oH,EAAMtE,GAChE,GAAIsE,EAAK8gB,MAAQA,EACb,OAAOplB,CAGf,IAAG,GACH,OAAQ6mB,EAAAA,EAAAA,IAAkB7mB,IAAkB,EAATA,CACvC,EAQAgkJ,EAAKzrI,UAAU+iM,oBAAsB,SAAUxgN,GAC3C,OAAO8/L,EAAAA,EAAAA,IAAqB1hL,KAAKi0G,cAAc,SAAU7oH,GACrD,GAAIA,EAAKxJ,QAAUA,EACf,OAAOwJ,EAAK8gB,GAGpB,IAAG,EACP,EAQA4+H,EAAKzrI,UAAUqvJ,yBAA2B,SAAUxiJ,GAEhD,OADYlM,KAAK4uJ,oBAAoB1iJ,GACtBlM,KAAKqgL,gBACxB,EAOAv1C,EAAKzrI,UAAUghL,eAAiB,WAC5B,IAAIv5L,EAAQ,EAcZ,OAbIkZ,KAAKw1G,gBACL1uH,GAASkZ,KAAKy1G,cAAcrB,QAAQn8H,QAEpC+nB,KAAK8qL,YACLhkM,IAEAkZ,KAAK0iI,kBAAmB/0H,EAAAA,EAAAA,IAAkB3N,KAAKqiM,gBAAgBC,WAC/Dx7M,IAMGA,CACX,EAMAgkJ,EAAKzrI,UAAUkjM,oBAAsB,WAGjC,IAFA,IACInjI,EADAojI,EAAc,GAETr9L,EAAI,EAAG8L,EAAMjR,KAAKi0G,aAAah8H,OAAQktB,EAAI8L,EAAK9L,KACrDi6D,EAASp/D,KAAKi0G,aAAa/0H,SAASimB,EAAE/pB,WAAY,MACvCgT,SACPo0M,EAAY/iN,KAAK2/E,EAAOx9E,OAGhC,OAAO4gN,CACX,EAOA13D,EAAKzrI,UAAUyrJ,eAAiB,WAC5B,OAAO9qJ,KAAKs7L,aAChB,EAOAxwD,EAAKzrI,UAAUojM,kBAAoB,WAC/B,OAAOziM,KAAKu7L,gBAChB,EAOAzwD,EAAKzrI,UAAUqjM,gBAAkB,WAC7B,OAAO1iM,KAAK2iM,cAChB,EAOA73D,EAAKzrI,UAAUujM,sBAAwB,WACnC,OAAO5iM,KAAK6iM,oBAChB,EAOA/3D,EAAKzrI,UAAUyjM,sBAAwB,WACnC,OAAO9iM,KAAK+iM,oBAChB,EAMAj4D,EAAKzrI,UAAUs5G,wBAA0B,WAErC,IADA,IAAI75H,EAAO,GACFsqD,EAAI,EAAGA,EAAIppC,KAAKu5G,YAAYthI,OAAQmxD,IACrCppC,KAAKu5G,YAAYr6H,SAASkqD,EAAEhuD,WAAY,KAAK84H,cAC7Cp1H,EAAKW,KAAKugB,KAAKu5G,YAAYr6H,SAASkqD,EAAEhuD,WAAY,KAAKwG,OAG/D,OAAO9C,CACX,EAMAgsJ,EAAKzrI,UAAU8rC,QAAU,WAChBnrC,KAAK46B,cACN56B,KAAKu1G,iBAAkB,EACvBv1G,KAAKw1K,aAAape,YAClBp3J,KAAKu1L,sBACLv1L,KAAKkmI,aAAa/6F,UAE1B,EAMA2/F,EAAKzrI,UAAUsmI,cAAgB,WAC3B3lI,KAAKw1K,aAAape,WACtB,EAMAtsB,EAAKzrI,UAAUs7K,gBAAkB,WAC7B,OAAO36K,KAAK47J,gBAAkB57J,KAAK47J,gBAAgB/oB,gBAAkB,EACzE,EAMA/H,EAAKzrI,UAAUyzI,sBAAwB,WACnC,OAAO9yI,KAAK47J,gBAAkB57J,KAAK47J,gBAAgB0J,mBAAqB,EAC5E,EAMAx6B,EAAKzrI,UAAU49K,0BAA4B,WACvC,OAAOj9K,KAAK47J,gBAAkB57J,KAAK47J,gBAAgB2J,uBAAyB,EAChF,EAOAz6B,EAAKzrI,UAAUyqK,mBAAqB,WAChC,OAAO9pK,KAAK47J,gBAAkB57J,KAAK47J,gBAAgBkO,qBAAuB,EAC9E,EAOAh/B,EAAKzrI,UAAU2jM,sBAAwB,WACnC,IAAIhzL,EAAQhQ,KACRkM,EAAM,GAIV,OAHIlM,KAAK47J,iBACL57J,KAAK47J,gBAAgB4J,uBAAuBrnL,QAAO,SAAUgnB,GAAK,OAAO+G,EAAIzsB,KAAKuwB,EAAMikG,aAAa/0H,SAASimB,EAAE/pB,WAAY,KAAK8wB,IAAM,IAEpIA,CACX,EAMA4+H,EAAKzrI,UAAUqiH,cAAgB,WAC3B,OAAO1hH,KAAKkmI,aAAargJ,IAC7B,EASAilJ,EAAKzrI,UAAU4jM,YAAc,SAAUnkN,EAAMwiM,GACzCA,EAASA,GAAkB,aAC3BthL,KAAKg6L,UAAU90H,KAAKpmF,EAAMwiM,EAC9B,EASAx2C,EAAKzrI,UAAU6jM,YAAc,SAAUpkN,EAAM0iM,GACzCA,EAASA,GAAkB,aAC3BxhL,KAAKg6L,UAAU/0H,KAAKnmF,EAAM0iM,EAC9B,EAKA12C,EAAKzrI,UAAU2rI,iBAAmB,WAC9B,OAAOhrI,KAAK42J,cAAgB52J,KAAKmjM,eAAenjM,KAAKo0G,QAAS,EAAG,EACrE,EAKA02B,EAAKzrI,UAAU+zJ,2BAA6B,WACxC,OAAOpzJ,KAAK4oL,gBAChB,EAKA99C,EAAKzrI,UAAU0vJ,0BAA4B,WACvC,OAAO/uJ,KAAK6oL,eAChB,EAKA/9C,EAAKzrI,UAAU2vJ,uBAAyB,WACpC,OAAOhvJ,KAAK+oL,YAChB,EAKAj+C,EAAKzrI,UAAUqrL,eAAiB,WAC5B1qL,KAAK6oL,gBAAkB7oL,KAAK4oL,iBAAmB5oL,KAAK+oL,aAAe,EACnE/oL,KAAKgpL,kBAAoBhpL,KAAKipL,mBAAqBjpL,KAAKkpL,eAAiB,EACzElpL,KAAKmpL,kBAAoB,GACzBnpL,KAAKopL,mBAAqB,GAC1BppL,KAAKqpL,eAAiB,GACtBrpL,KAAKojM,iBAAiBpjM,KAAKo0G,SACvBp0G,KAAK42J,gBAAkB52J,KAAK6oL,iBAAmB7oL,KAAK4oL,mBACpD5oL,KAAK26B,cAAc,CAAEi8H,cAAe,IAAK,GAE7C52J,KAAKk9L,iBACDl9L,KAAK6oL,kBAAoB7oL,KAAK4oL,iBAC9B5oL,KAAKg+L,WAAa,OAEbh+L,KAAK4oL,mBAAqB5oL,KAAK6oL,gBACpC7oL,KAAKg+L,WAAa,QAEbh+L,KAAK6oL,iBAAmB7oL,KAAK4oL,iBAClC5oL,KAAKg+L,WAAa,aAEbh+L,KAAK42J,eAAiB52J,KAAKwnJ,WAChCxnJ,KAAKg+L,WAAa,OAGlBh+L,KAAKg+L,gBAAa9iN,CAE1B,EAKA4vJ,EAAKzrI,UAAUgkM,0BAA4B,WACvC,OAAOrjM,KAAKgpL,iBAChB,EAKAl+C,EAAKzrI,UAAUikM,2BAA6B,WACxC,OAAOtjM,KAAKipL,kBAChB,EAKAn+C,EAAKzrI,UAAUkkM,uBAAyB,WACpC,OAAOvjM,KAAKkpL,cAChB,EAKAp+C,EAAKzrI,UAAUq4L,sBAAwB,WACnC,OAAO13L,KAAKopL,kBAChB,EAKAt+C,EAAKzrI,UAAUo4L,qBAAuB,WAClC,OAAOz3L,KAAKmpL,iBAChB,EAKAr+C,EAAKzrI,UAAUs4L,kBAAoB,WAC/B,OAAO33L,KAAKqpL,cAChB,EACAv+C,EAAKzrI,UAAU+jM,iBAAmB,SAAUhvF,GACxC,IAAK,IAAIjvG,EAAI,EAAGA,EAAIivG,EAAQn8H,OAAQktB,IAC5BivG,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKg5H,QACpCp0G,KAAKojM,iBAAiBhvF,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKg5H,SAGP,UAA/CA,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKse,SACgB,IAAhD06G,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKgT,SACpC4R,KAAKipL,qBAETjpL,KAAKopL,mBAAmB3pM,KAAK20H,EAAQl1H,SAASimB,EAAE/pB,WAAY,MAC5D4kB,KAAK4oL,oBAE+C,SAA/Cx0E,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKse,SACW,IAAhD06G,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKgT,SACpC4R,KAAKgpL,oBAEThpL,KAAKmpL,kBAAkB1pM,KAAK20H,EAAQl1H,SAASimB,EAAE/pB,WAAY,MAC3D4kB,KAAK6oL,qBAG+C,IAAhDz0E,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKgT,SACpC4R,KAAKkpL,iBAETlpL,KAAKqpL,eAAe5pM,KAAK20H,EAAQl1H,SAASimB,EAAE/pB,WAAY,MACxD4kB,KAAK+oL,eAIrB,EAKAj+C,EAAKzrI,UAAUmkM,wBAA0B,WACrC,OAAOxjM,KAAKyjM,+BAAiCzjM,KAAK0jM,sBAAsB1jM,KAAKo0G,QAAS,EAC1F,EAMA02B,EAAKzrI,UAAUkoH,gBAAkB,WAC7B,OAAOvnH,KAAKm8G,aAAen8G,KAAKm8G,aAAaoL,kBAAoB,CAAC,CACtE,EACAujB,EAAKzrI,UAAUokM,6BAA+B,WAG1C,IAFA,IAAIE,EAAuB,EACvBvvF,EAAUp0G,KAAKu5G,YACVp0G,EAAI,EAAGA,EAAInF,KAAK42J,cAAezxJ,IAChCivG,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKgT,SACpCu1M,IAGR,GAAI3jM,KAAK6oL,iBAAmB7oL,KAAK4oL,iBAC7B,IAASzjL,EAAI,EAAGA,EAAIivG,EAAQn8H,OAAQktB,KAC5BivG,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKgT,SAA2D,SAA/CgmH,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKse,QAClC,UAA/C06G,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKse,QACvCiqM,IAIZ,OAAOA,CACX,EACA74D,EAAKzrI,UAAUqkM,sBAAwB,SAAU/uF,EAAM9yD,GACnD,IAAK7hD,KAAK6oL,kBAAoB7oL,KAAK4oL,iBAC/B,IAAK,IAAIzjL,EAAI,EAAG8L,EAAM0jG,EAAK18H,OAAQktB,EAAI8L,EAAK9L,IACpCwvG,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKg5H,QACjCvyD,EAAM7hD,KAAK0jM,sBAAsB/uF,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKg5H,QAASvyD,GAGvE8yD,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKu0J,UAAYh7B,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKgT,SAC9EyzD,IAKhB,OAAOA,CACX,EACAipF,EAAKzrI,UAAU8jM,eAAiB,SAAUxuF,EAAM9yD,EAAK/6D,GACjD,IAAK,IAAIqe,EAAI,EAAG8L,EAAM0jG,EAAK18H,OAAQktB,EAAI8L,EAAK9L,IACpCwvG,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKg5H,QACjCvyD,EAAM7hD,KAAKmjM,eAAexuF,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKg5H,QAASvyD,EAAK/6D,IAGrE6tH,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKu0J,UAAY7oJ,EAAQkZ,KAAK42J,cAAgB,GAC1E/0G,IAEJ/6D,KAGR,OAAO+6D,CACX,EAQAipF,EAAKzrI,UAAUukM,SAAW,SAAUC,GAC5B7jM,KAAKo1G,aACLp1G,KAAKo1G,YAAYwuF,SAASC,EAElC,EAQA/4D,EAAKzrI,UAAUqmI,sBAAwB,SAAUpyI,GACzC0M,KAAKo1G,aACLp1G,KAAKo1G,YAAYswB,sBAAsBpyI,EAE/C,EAUAw3I,EAAKzrI,UAAUmuI,WAAa,SAAU33B,EAAYpuC,EAAWylE,GACrDltI,KAAK8jM,YACL9jM,KAAK8jM,WAAWt2D,WAAW33B,EAAYpuC,EAAWylE,EAE1D,EA+BApC,EAAKzrI,UAAU0kM,iBAAmB,SAAU1qN,EAAY+6H,GACpDp0G,KAAK26B,cAAc,CAAEs7E,aAAc,CAAE7B,QAAS,MAAQ,GACtDp0G,KAAK26B,cAAc,CAAExxC,eAAgB,CAAEirH,QAAS,MAAQ,GACxDp0G,KAAK26B,cAAc,CAAEi8E,eAAgB,CAAE53H,IAAK,MAAQ,GAChDghB,KAAKw1G,eACLx1G,KAAK26B,cAAc,CAAE86E,cAAe,CAAErB,QAAS,MAAQ,GAEvDA,GAAWA,EAAQn8H,QACnB+nB,KAAK26B,cAAc,CAAEy5E,QAASA,IAAW,GAEzC/6H,KACIs0B,EAAAA,EAAAA,IAAkBymG,IAClBp0G,KAAK26B,cAAc,CAAEy5E,QAAS,KAAM,GAExCp0G,KAAK26B,cAAc,CAAEthD,WAAYA,IAAc,IAEnD2mB,KAAKg7L,eACT,EAMAlwD,EAAKzrI,UAAUivI,aAAe,WACtBtuI,KAAK8jM,YACL9jM,KAAK8jM,WAAWx1D,cAExB,EAQAxD,EAAKzrI,UAAUkvI,iBAAmB,SAAU3sJ,GACpCoe,KAAK8jM,YACL9jM,KAAK8jM,WAAWv1D,iBAAiB3sJ,EAEzC,EAKAkpJ,EAAKzrI,UAAU2kM,iBAAmB,WAC9BhkM,KAAK26B,cAAc,CAAEs7E,aAAc,CAAE7B,QAAS,MAAQ,GACtDp0G,KAAK26B,cAAc,CAAExxC,eAAgB,CAAEirH,QAAS,MAAQ,GACxDp0G,KAAK26B,cAAc,CAAEi8E,eAAgB,CAAE53H,IAAK,MAAQ,GAChDghB,KAAKw1G,cACLx1G,KAAK26B,cAAc,CAAE86E,cAAe,CAAErB,QAAS,MAAQ,GAGvDp0G,KAAKg7L,eAEb,EAiBAlwD,EAAKzrI,UAAU0jH,eAAiB,SAAU1lC,EAAWonD,EAAgB/rC,EAAavU,EAAW+I,EAAWjO,EAAcokD,EAAmBC,GACjItjI,KAAKm8G,cACLn8G,KAAKm8G,aAAa4G,eAAe1lC,EAAWonD,EAAgB/rC,EAAavU,EAAW+I,EAAWjO,EAAcokD,EAAmBC,EAExI,EAOAwH,EAAKzrI,UAAU2mI,eAAiB,SAAUnjJ,GAClCmd,KAAKm8G,cACLn8G,KAAKm8G,aAAa6pB,eAAenjJ,EAEzC,EASAioJ,EAAKzrI,UAAU+nH,0BAA4B,SAAUxlI,EAAOqlJ,GACpDjnI,KAAKm8G,cACLn8G,KAAKm8G,aAAaiL,0BAA0BxlI,EAAOqlJ,EAE3D,EASA6D,EAAKzrI,UAAU6pK,UAAY,SAAUpiL,EAAOkgE,GACpChnD,KAAK47J,iBACL57J,KAAK47J,gBAAgBsN,UAAUpiL,EAAOkgE,EAE9C,EAQA8jF,EAAKzrI,UAAU6sK,WAAa,SAAUT,GAC9BzrK,KAAK47J,iBACL57J,KAAK47J,gBAAgBsQ,WAAWT,EAExC,EAMA3gC,EAAKzrI,UAAUkpK,eAAiB,WACxBvoK,KAAK47J,iBACL57J,KAAK47J,gBAAgB2M,gBAE7B,EASAz9B,EAAKzrI,UAAU8wK,WAAa,SAAUhI,EAAWnhH,GACzChnD,KAAK47J,iBACL57J,KAAK47J,gBAAgBuU,WAAWhI,EAAWnhH,EAEnD,EASA8jF,EAAKzrI,UAAU6xK,mBAAqB,SAAUznK,EAAYwiK,GACtDjsK,KAAK47J,gBAAgBsV,mBAAmBznK,EAAYwiK,EACxD,EAUAnhC,EAAKzrI,UAAU2B,OAAS,SAAU26J,GAC1B37J,KAAKg1L,cACLh1L,KAAKg1L,aAAah0L,OAAO26J,EAEjC,EAQA7wB,EAAKzrI,UAAUoR,MAAQ,WACfzQ,KAAK2qI,aACL3qI,KAAK2qI,YAAYl6H,OAEzB,EASAq6H,EAAKzrI,UAAUwqF,aAAe,SAAUo6G,EAAWp+M,GAC3Cma,KAAKyoK,YACLzoK,KAAKyoK,WAAW5+E,aAAao6G,EAAWp+M,EAEhD,EAQAilJ,EAAKzrI,UAAU40I,UAAY,WACnBj0I,KAAKyoK,YACLzoK,KAAKyoK,WAAWx0B,WAExB,EAMAnJ,EAAKzrI,UAAUi6G,QAAU,WACjBt5G,KAAKyoK,YACLzoK,KAAKyoK,WAAWnvD,SAExB,EAMAwxB,EAAKzrI,UAAU60I,UAAY,WACnBl0I,KAAKyoK,YACLzoK,KAAKyoK,WAAWv0B,WAExB,EASApJ,EAAKzrI,UAAUsqF,UAAY,SAAU9jG,EAAMiB,GACnCkZ,KAAKyoK,YACLzoK,KAAKyoK,WAAW9+E,UAAU9jG,EAAMiB,EAExC,EAOAgkJ,EAAKzrI,UAAU6kM,UAAY,SAAUzpF,GAC7Bz6G,KAAKyoK,YACLzoK,KAAKyoK,WAAWy7B,UAAUzpF,EAElC,EASAqwB,EAAKzrI,UAAU8kM,SAAW,SAAUr9M,EAAOlF,GACnCoe,KAAKyoK,YACLzoK,KAAKyoK,WAAW07B,SAASr9M,EAAOlF,EAExC,EAOAkpJ,EAAKzrI,UAAU+kM,SAAW,WAClBpkM,KAAKyoK,YACLzoK,KAAKyoK,WAAW27B,UAExB,EAUAt5D,EAAKzrI,UAAU43K,WAAa,SAAUhgB,EAAUr1K,EAAOrE,GAC/CyiB,KAAKyoK,YACLzoK,KAAKyoK,WAAWwO,WAAWhgB,EAAUr1K,EAAOrE,EAEpD,EAWAutJ,EAAKzrI,UAAUglM,UAAY,SAAUv9M,EAAOjB,GACpCma,KAAKyoK,YACLzoK,KAAKyoK,WAAW47B,UAAUv9M,EAAOjB,EAEzC,EAMAilJ,EAAKzrI,UAAUyyJ,gBAAkB,WAC7B,OAAI9xJ,KAAKyoK,WACEzoK,KAAKyoK,WAAW3W,kBAEpB,CAAC,CACZ,EASAhnB,EAAKzrI,UAAUilM,mBAAqB,SAAUx6M,EAAO+pJ,GAC7C7zI,KAAKsiL,eACLtiL,KAAKsiL,cAAcxsD,YAAYhsI,EAAO+pJ,EAE9C,EAOA/I,EAAKzrI,UAAU+P,KAAO,SAAU03K,GACxB9mL,KAAKy6L,iBACLz6L,KAAKy6L,gBAAgBrrL,KAAK03K,EAElC,EAKAh8C,EAAKzrI,UAAUklM,kBAAoB,WAC/B,IAAIv0L,EAAQhQ,KACZ,GAAKA,KAAK2jI,iBAAiBpxH,cAAc,kBAGnCvS,KAAKy1G,cAAcrB,QAAQn8H,QAAW+nB,KAAK8qL,YAAe9qL,KAAK0iI,mBACjE1iI,KAAK2jI,iBAAiBpxH,cAAc,gBAAgB6uB,aAAa,oBAChEphC,KAAKwrI,kBAFV,CAKA,IAAIg5D,EAAcxkM,KAAK2jI,iBAAiBpxH,cAAc,gBAAgB0mC,cAAcxhB,YAChFgtK,EAAY,GAAGpnM,MAAMqC,KAAKM,KAAK2jI,iBAAiBpxH,cAAcsrG,EAAAA,IAAmB/5D,YACjF4gJ,EAAa,GAAGrnM,MAAMqC,KAAKM,KAAKwrI,kBAAkBj5H,cAAcsrG,EAAAA,IAAmB/5D,YACnF6gJ,EAAWH,EAAc,GACzBr/L,EAA6B,UAAzBnF,KAAKugI,gBAA8BvgI,KAAK4oL,iBAAmB,EAC/Dgc,EAAe5kM,KAAKhd,QAAQy0C,YAC5BotK,EAAa,SAAU/9M,EAAOitD,GAC9B,IAAI+wJ,EAAAA,EAAAA,IAAkB90L,GAAQ,CAC1B,IAAI+0L,GAAYhxJ,EAAQ6wJ,EAAe,KAAKzjL,QAAQ,GAAK,IACzDsjL,EAAUvlN,SAAS4H,EAAM1L,WAAY,KAAKm8C,MAAMwc,MAAQgxJ,EACxDL,EAAWxlN,SAAS4H,EAAM1L,WAAY,KAAKm8C,MAAMwc,MAAQgxJ,CAC7D,MAEIN,EAAUvlN,SAAS4H,EAAM1L,WAAY,KAAKm8C,MAAMwc,MAAQA,EAAQ,KAChE2wJ,EAAWxlN,SAAS4H,EAAM1L,WAAY,KAAKm8C,MAAMwc,MAAQA,EAAQ,KAErE/jC,EAAM+W,OAAOsM,EAAAA,IAA2B,CAAEvsC,MAAOA,EAAOitD,MAAOA,GACnE,EAUA,IATI4wJ,GAAY,IACZH,EAAe,GAAKG,GAEpBH,EAAc,IACdA,EAAc,IAEdxkM,KAAKgiJ,4BAA8BhiJ,KAAKk/J,WAAcl/J,KAAKo0G,QAAQn8H,SAAW+nB,KAAKy1G,cAAcrB,QAAQn8H,UACzGusN,EAAc,IAEXr/L,EAAInF,KAAKy1G,cAAcrB,QAAQn8H,QAClC4sN,EAAW1/L,EAAGq/L,GACdr/L,IAEAnF,KAAK8qL,aACL+Z,EAAW1/L,EAAGq/L,GACdr/L,KAEAnF,KAAK0iI,iBACLmiE,EAAW1/L,EAAGq/L,GAElBxkM,KAAKk/J,WAAY,EACjBl/J,KAAK2jI,iBAAiBpxH,cAAc,gBAAgB+jB,aAAa,kBAAmB,OAxCpF,CAyCJ,EAKAw0G,EAAKzrI,UAAU2lM,iBAAmB,WAS9B,IARIF,EAAAA,EAAAA,IAAkB9kM,QAClBA,KAAK2jI,iBAAiBpxH,cAAc,gBAAgB2uB,gBAAgB,mBACpElhC,KAAKmzJ,aAAaoE,oBAClBv3J,KAAKukM,oBACDvkM,KAAK2lJ,SACL3lJ,KAAK4lJ,yBAGO,SAAf5lJ,KAAK+zC,OAA4C,kBAAhB/zC,KAAK+zC,QAAoD,IAA7B/zC,KAAK+zC,MAAMz9C,QAAQ,OAC9E0J,KAAKi0G,aAAa91H,QAAO,SAAUg4H,GAAO,QAASA,EAAIpiE,OAAuB,SAAdoiE,EAAIpiE,QAAqBoiE,EAAI8uF,QAAU,IAAGhtN,OAAS,EAAG,CACzH,IAAIitN,EAAallM,KAAKmzJ,aAAagyC,cAAcnlM,KAAKi0G,cACtDj0G,KAAKmzJ,aAAaiyC,yBAAyBF,EAC/C,CACIllM,KAAK8hI,gBAAkB9hI,KAAKmzJ,cAC5BnzJ,KAAKmzJ,aAAakyC,yBAElBrlM,KAAK+lJ,eAAoD,YAAnC/lJ,KAAKisJ,iBAAiBC,UAC5ClsJ,KAAK+mB,OAAOsM,EAAAA,IAAwB,CAAC,EAE7C,EAKAy3G,EAAKzrI,UAAUqjI,cAAgB,WAC3B,OAAO1iI,KAAKw4K,sBAAwBx4K,KAAKqiM,gBAAgBC,QAC7D,EASAx3D,EAAKzrI,UAAUimM,eAAiB,SAAUC,EAAWC,GAC7CxlM,KAAKylM,eACLzlM,KAAKylM,cAAcH,eAAeC,EAAWC,EAErD,EAUA16D,EAAKzrI,UAAUqmM,qBAAuB,SAAUhyF,EAAWD,GACnDzzG,KAAKylM,eACLzlM,KAAKylM,cAAcC,qBAAqBhyF,EAAWD,EAE3D,EAUAq3B,EAAKzrI,UAAUsmM,2BAA6B,SAAUtoH,EAAWo2B,GACzDzzG,KAAKylM,eACLzlM,KAAKylM,cAAcE,2BAA2BtoH,EAAWo2B,EAEjE,EASAq3B,EAAKzrI,UAAUg0G,YAAc,SAAUuyF,EAAanyF,GAC5CzzG,KAAK6lM,sBACL7lM,KAAK6lM,qBAAqBxyF,YAAYuyF,EAAanyF,EAE3D,EAMAq3B,EAAKzrI,UAAUymM,kBAAoB,SAAUrqN,GACzCukB,KAAK+mB,OAAO,oBAAqBtrC,EACrC,EAMAqvJ,EAAKzrI,UAAU0mM,aAAe,SAAUn3I,GACpC,IAAIilG,EAAc7zJ,KAAK2jI,iBACnB0pB,EAAertJ,KAAKwrI,kBACpBw6D,EAAanyC,EAAY/iJ,iBAAiB,uCAC1C32B,EAAO6lB,KAAK2sJ,UACZs5C,EAAWr3I,EAAS,OAAS,IACjCr1B,EAAAA,EAAAA,IAAkBs6H,EAAYthJ,cAAcsrG,EAAAA,IAAmB/5D,WAAW,GAAI,CAAE,QAAWmiJ,KAC3F1sK,EAAAA,EAAAA,IAAkB8zH,EAAa96I,cAAcsrG,EAAAA,IAAmB/5D,WAAW,GAAI,CAAE,QAAWmiJ,IAC5F,IAAK,IAAI9gM,EAAI,EAAGA,EAAInF,KAAK2sJ,UAAU10K,OAAQktB,IAAK,CAC5C,IAAI2xB,EAAM38C,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAK68C,kBACvC22B,GACAn4B,EAAAA,EAAAA,IAAS,CAACK,GAAM,WAGhBK,EAAAA,EAAAA,IAAY,CAACL,GAAM,CAAC,UAE5B,CACA,IAAK,IAAItgB,EAAI,EAAGA,EAAIq9I,EAAY/iJ,iBAAiB,uCAAuC74B,OAAQu+B,IAAK,CAC7FsgB,EAAMkvK,EAAW9mN,SAASs3B,EAAEp7B,WAAY,KACxCwzE,GACAn4B,EAAAA,EAAAA,IAAS,CAACK,GAAM,WAGhBK,EAAAA,EAAAA,IAAY,CAACL,GAAM,CAAC,UAE5B,CACJ,EAyBAg0G,EAAKzrI,UAAU6mM,eAAiB,SAAUrnH,GAClC7+E,KAAKmmM,cACLnmM,KAAKmmM,aAAaD,eAAernH,EAEzC,EAKAisD,EAAKzrI,UAAUumJ,qBAAuB,WAClC,KAAI5lJ,KAAK8hI,gBAAmB9hI,KAAK+9G,kBAA8C,aAA1B/9G,KAAKwwI,kBAClDxwI,KAAKw0J,eAA8C,SAA7Bx0J,KAAKomM,eAAeh9M,MADlD,CAOA,IAHA,IAAIgrH,EAAUp0G,KAAKi0G,aACf4/C,EAAc7zJ,KAAK2jI,iBACnB0iE,EAAa,EACRlhM,EAAI,EAAGA,EAAIivG,EAAQn8H,OAAQktB,IAChC,GAAIivG,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKgT,QAAS,CAC7C,GAAI4R,KAAKy1G,cAAcrB,QAAQn8H,QACxB+nB,KAAKy1G,cAAcrB,QAAQ99G,QAAQ89G,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKwG,QAAU,EAGpF,GAA4D,SAF5C,GAAGyb,MAAMqC,KAAKm0J,EAAYthJ,cAAc,YACnDzB,iBAAiB,oEACR5xB,SAASimB,EAAE/pB,WAAY,KAAKm8C,MAAMuiB,QAC5C,SAGR,IAAIs6D,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK24D,MAGnC,CACDsyJ,EAAa,EACb,KACJ,CALIA,GAAcpgL,WAAWmuF,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK24D,MAAM34D,WAM3E,CAEJ,GAAIirN,EAAY,CACZ,IAAIC,EAAkBtmM,KAAKumM,wBACvBC,EAAOxmM,KAAKymM,UAAUH,GACtBj5C,EAAertJ,KAAKwrI,kBACxB,GAAIxrI,KAAKy1G,cAAcrB,QAAQn8H,QAAU+nB,KAAK8qL,YAAc9qL,KAAK0iI,gBAC7D,KAAI8hE,EAAcxkM,KAAK0mM,mBAAmBJ,GACtCK,EAAwBnC,EAAYppN,WAAaorN,EACjDI,EAAkB,GAAGvpM,MAAMqC,KAAKm0J,EAAYthJ,cAAc,YACzDzB,iBAAiB,sDAClB+1L,EAAmB,GAAGxpM,MAAMqC,KAAK2tJ,EAAa96I,cAAc,YAC3DzB,iBAAiB,sDACtB,IAAS3L,EAAI,EAAGA,EAAIyhM,EAAgB3uN,OAAQktB,IACxCyhM,EAAgB1nN,SAASimB,EAAE/pB,WAAY,KAAKm8C,MAAMuvK,YAAY,QAASH,GACvEE,EAAiB3nN,SAASimB,EAAE/pB,WAAY,KAAKm8C,MAAMuvK,YAAY,QAASH,GACxEN,GAAc7B,CATwC,EAYzD8B,GAAmBD,EAAa,MAC5BC,GAAmBD,EAAah5C,EAAap0G,cAAcR,eAChEhiB,EAAAA,EAAAA,IAAS,CAACo9H,EAAaxG,GAAe,CAAC,kBAE3C,IAAI05C,EAAuBV,EAAWjrN,WAAaorN,EACnD3yC,EAAYt8H,MAAMuvK,YAAY,QAASC,GACvC15C,EAAa91H,MAAMuvK,YAAY,QAASC,EAC5C,MAEI/mM,KAAK47L,sBAjDT,CAmDJ,EACA9wD,EAAKzrI,UAAUu8L,qBAAuB,WAClC,KAAI57L,KAAK8hI,gBAAmB9hI,KAAK+9G,kBAA8C,aAA1B/9G,KAAKwwI,kBAClDxwI,KAAKw0J,eAA8C,SAA7Bx0J,KAAKomM,eAAeh9M,MADlD,CAIA,IAAIyqK,EAAc7zJ,KAAK2jI,iBACnB0pB,EAAertJ,KAAKwrI,kBAIxB,IAHAr0G,EAAAA,EAAAA,IAAY,CAAC08H,EAAaxG,GAAe,CAAC,kBAC1CwG,EAAYt8H,MAAM+zE,eAAe,SACjC+hD,EAAa91H,MAAM+zE,eAAe,SAC9BtrG,KAAKy1G,cAAcrB,QAAQn8H,QAAU+nB,KAAK8qL,YAAc9qL,KAAK0iI,gBAAiB,CAC9E,IAAI4jE,EAAkBtmM,KAAKumM,wBACvBS,EAA0BhnM,KAAK0mM,mBAAmBJ,GAAiBlrN,WAAa4kB,KAAKymM,UAAUH,GAC7E,GAAGjpM,MAAMqC,KAAKm0J,EAAYthJ,cAAc,YACzDzB,iBAAiB,sDACN/xB,SAAQ,SAAUiE,GAC9BA,EAAQu0C,MAAMuvK,YAAY,QAASE,EACvC,IACAnzC,EAAYthJ,cAAc,gBAAgB2uB,gBAAgB,mBAC1DlhC,KAAKukM,mBACT,CAhBA,CAiBJ,EACAz5D,EAAKzrI,UAAUonM,UAAY,SAAUH,GACjC,OAAOA,EAAkB,IAAM,IACnC,EACAx7D,EAAKzrI,UAAUqnM,mBAAqB,SAAUJ,GAC1C,OAAOA,EAAkBrgL,YAAY,GAAKjmB,KAAKhd,QAAQy0C,YAAc,KAAKtW,QAAQ,IAAM,EAC5F,EACA2pH,EAAKzrI,UAAUknM,sBAAwB,WACnC,OAAOvmM,KAAKi0G,aAAa,GAAGlgE,MAAM34D,WAAWkb,QAAQ,MAAQ,CACjE,EAQAw0I,EAAKzrI,UAAUk1I,oBAAsB,SAAU3nH,EAAG14B,EAAGiqC,GAC7Cn+B,KAAKinM,qBACLjnM,KAAKinM,oBAAoBC,oBAAoBt6K,EAAG14B,EAAGiqC,EAE3D,EACA2sG,EAAKzrI,UAAUgsL,mBAAqB,WAChCrrL,KAAK8yG,eAAe8xD,SAAS,eAAgB5kK,KAAKmzJ,aAAe,IAAIivB,GAAAA,EAAmBpiL,OACxFA,KAAK8yG,eAAe8xD,SAAS,sBAAuB,IAAIrE,GACxDvgK,KAAK8yG,eAAe8xD,SAAS,kBAAmB,IAAIE,IACpD9kK,KAAK8yG,eAAe8xD,SAAS,eAAgB5kK,KAAK07G,UAAY,IAAIlgE,EAAAA,GAAKx7C,KAAK47B,gBAAiB57B,KAAKwrL,cAAexrL,KAAKwpB,SACtHxpB,KAAK8yG,eAAe8xD,SAAS,iBAAkB5kK,KAAKmnM,sBAAwB,IAAIluF,EAAAA,EAAej5G,KAAKwpB,SACpGxpB,KAAK8yG,eAAe8xD,SAAS,kBAAmB5kK,KAAKg6L,UAAY,IAAIhZ,GAAShhL,OAC9EA,KAAK8yG,eAAe8xD,SAAS,cAAe5kK,KAAK+kJ,YAAc,IAAIhY,EAAAA,GACnE/sI,KAAK8yG,eAAe8xD,SAAS,QAAS5kK,KAAK0nI,YAAc,IAAI0/D,GAAAA,GAAcpnM,MAC/E,EACA8qI,EAAKzrI,UAAU+1L,aAAe,WAC1B,IAEIn0K,EACAzK,EAHAy2H,EAAQjtI,KAAKy1G,cAAcrB,QAC3BizF,EAAQrnM,KAAKi2G,aAAa7B,QAG9B,GAAIp0G,KAAKw1G,cAiCL,IAhCA,IAAIzmG,EAAU,SAAU5J,EAAG8L,GACvBuF,EAAI,EACJ,IAAK,IAAI8wL,EAAOD,EAAMpvN,OAAQu+B,EAAI8wL,EAAM9wL,IACpC,GAAI6wL,EAAMnoN,SAASs3B,EAAEp7B,WAAY,KAAKwG,QAAUqrJ,EAAM/tJ,SAASimB,EAAE/pB,WAAY,KAAM,CAC/E6lC,GAAO,EACP,KACJ,CAaJ,GAXKA,EAIG4sB,EAAO5kD,aACP4kD,EAAOqiD,cAAczwG,KAAK4nN,EAAMnoN,SAASs3B,EAAEp7B,WAAY,KAAKwG,OAG5DylN,EAAMnoN,SAASs3B,EAAEp7B,WAAY,KAAKqsF,UAAY,YAPlD4/H,EAAM5nN,KAAK,CAAEmC,MAAOqrJ,EAAM/tJ,SAASimB,EAAE/pB,WAAY,KAAMqsF,UAAW,YAAagpB,aAAa,KAU3F5iD,EAAO4nE,cAAc8xF,kBAAmB,CACzC,IAAInoI,EAASvxB,EAAOm0G,2BAChBn0G,EAAOumE,QAAQj2H,QAAO,SAAU83B,GAAK,OAAOA,EAAEr0B,QAAUqrJ,EAAM/tJ,SAASimB,EAAE/pB,WAAY,IAAM,IAAG,GAC5FyyD,EAAO8nE,iBAAiBs3B,EAAM/tJ,SAASimB,EAAE/pB,WAAY,MACvDgkF,EACAA,EAAOhxE,SAAU,EAGjBy/C,EAAO+nE,IAAI,iBAAkB,CAAE9+C,WAAY,QAAS++C,WAAYo3B,EAAM/tJ,SAASimB,EAAE/pB,WAAY,MAErG,CACJ,EACIyyD,EAAS7tC,KACJmF,EAAI,EAAG8L,EAAMg8H,EAAMh1J,OAAQktB,EAAI8L,EAAK9L,IACzC4J,EAAQ5J,GAGhB,IAAK8nI,EAAMh1J,OACP,IAASktB,EAAI,EAAGA,EAAIkiM,EAAMpvN,OAAQktB,IAC9BnF,KAAKkwF,cAAczwG,KAAK4nN,EAAMnoN,SAASimB,EAAE/pB,WAAY,KAAKwG,OAQlE,GALAoe,KAAKs7L,eAAgBtgG,EAAAA,EAAAA,IAAiBh7F,KAAK8nJ,aAC3C9nJ,KAAKu7L,kBAAmBvgG,EAAAA,EAAAA,IAAiBh7F,KAAKuiI,gBAC9CviI,KAAK2iM,gBAAiB3nG,EAAAA,EAAAA,IAAiBh7F,KAAKkzI,aAAa18I,UACzDwJ,KAAK6iM,sBAAuB7nG,EAAAA,EAAAA,IAAiBh7F,KAAKkzI,aAAallC,gBAC/DhuG,KAAK+iM,sBAAuB/nG,EAAAA,EAAAA,IAAiBh7F,KAAKkzI,aAAahlC,kBAC1DvgG,EAAAA,EAAAA,IAAkB3N,KAAK+6G,eAAgB,CACxC,IAAIx9H,GAAQowB,EAAAA,EAAAA,IAAkB3N,KAAK+6G,cAAcysF,qBAAuB,YACpExnM,KAAK+6G,cAAcysF,oBACvBxnM,KAAKo8E,MAAML,MAAM/7E,KAAKpC,YAAa,QAASrgB,GAAO,EACvD,CACAyiB,KAAKynM,mBACT,EACA38D,EAAKzrI,UAAUooM,kBAAoB,WAC3BznM,KAAKmrL,oBAAoBnrL,KAAKi0G,eAC9Bj0G,KAAK+mB,OAAOsM,EAAAA,IAA6BrzB,KAAK+2G,uBAEtD,EACA+zB,EAAKzrI,UAAU29L,wBAA0B,WACP,aAA1Bh9L,KAAKwwI,iBACLxwI,KAAKhd,QAAQ4zC,UAAUzB,IAAI,oBAG3Bn1B,KAAKhd,QAAQ4zC,UAAUjB,OAAO,mBAEtC,EACAm1G,EAAKzrI,UAAUg2L,WAAa,WACxB,IAAIrvM,EACJga,KAAK+7L,YACyB,aAA1B/7L,KAAKwwI,kBACLxwI,KAAKhd,QAAQ4zC,UAAUzB,IAAI,oBAE3Bn1B,KAAKk6L,aACLl6L,KAAKhd,QAAQ4zC,UAAUzB,IAAI,eAE3BvC,EAAAA,GAAQY,UACRxzB,KAAKhd,QAAQ4zC,UAAUzB,IAAI,YAE3Bn1B,KAAKq1J,WACLr1J,KAAKhd,QAAQ4zC,UAAUzB,IAAI,qBAE3Bn1B,KAAK7f,YAC+B,IAAhC6f,KAAK7f,SAASmW,QAAQ,MACrBtQ,EAAKga,KAAKhd,QAAQ4zC,WAAWzB,IAAIj2B,MAAMlZ,EAAIga,KAAK7f,SAAS8T,MAAM,MAGhE+L,KAAKhd,QAAQ4zC,UAAUzB,IAAIn1B,KAAK7f,WAIpC6f,KAAKw4K,qBAAuBx4K,KAAKqiM,gBAAgBC,UAAkC,YAAtB1vK,EAAAA,GAAQyB,KAAKj8C,MAC1E4nB,KAAKhd,QAAQ4zC,UAAUzB,IAAI,wBAE/ByB,EAAAA,EAAAA,IAAU52B,KAAKhd,QAAS,CAAC,eAAgB,aAAc,IACvD,IAAI0kN,EAAkB1nM,KAAK8yG,eAAe0R,WAAW,mBACrDxkH,KAAKw1K,aAAekyB,EAAgBtsC,YAAYzb,EAAAA,GAAWkV,QAC3D70J,KAAK6nJ,cAAgB6/C,EAAgBtsC,YAAYzb,EAAAA,GAAW2b,SAC5Dt7J,KAAK2qI,YAAc,IAAIb,GAAAA,EAAM9pI,KAAMA,KAAK+pI,cACxC/pI,KAAKy6L,gBAAkB,IAAI1U,GAAU/lL,KAAMA,KAAK8yG,gBAChD9yG,KAAKkmI,aAAa56F,SAClBtrC,KAAKq6L,mBACLr6L,KAAK2nM,yBACL3nM,KAAKmzJ,aAAaoE,oBAClBv3J,KAAKo8L,kBACLp8L,KAAKs8L,gBACLt8L,KAAK4nM,gBACL5nM,KAAK06L,oBACT,EACA5vD,EAAKzrI,UAAU44I,UAAY,WACvBj4I,KAAK+pI,aAAaznE,WAClBtiE,KAAK+pI,aAAa0xB,YACE,SAAhBz7J,KAAKg0C,QACLh0C,KAAK+pI,aAAakc,YAE1B,EACAnb,EAAKzrI,UAAU08L,UAAY,WACnB/7L,KAAK2qC,UACL3qC,KAAKhd,QAAQ4zC,UAAUzB,IAAI,SAG3Bn1B,KAAKhd,QAAQ4zC,UAAUjB,OAAO,QAEtC,EACAm1G,EAAKzrI,UAAUsoM,uBAAyB,WACpC,IAAIp/H,EAAQvoE,KAAK4Q,cAAc,MAAO,CAAE31B,UAAW,cAAeiG,OAAQ,kBACtEqlE,EAAUvmD,KAAK4Q,cAAc,MAAO,CAAE31B,UAAW4iI,EAAAA,GAAkBtnF,MAAO,CAAE68B,SAAU,SAC1Fj7B,EAAAA,EAAAA,IAAO,CAACouB,EAASvmD,KAAK4Q,cAAc,MAAO,CAAE31B,UAAW,qBAAuBstF,GAC/EhiB,EAAQp1C,YAAYnR,KAAK4Q,cAAc,UACvCunB,EAAAA,EAAAA,IAAO,CAACouB,EAASvmD,KAAK4Q,cAAc,MAAO,CAAE31B,UAAW,uBAAyBstF,GACjFvoE,KAAKhd,QAAQmuB,YAAYo3D,EAC7B,EACAuiE,EAAKzrI,UAAU+8L,gBAAkB,WAE7B,QADAxlK,EAAAA,EAAAA,IAAU52B,KAAKhd,QAAS,GAAI,CAAC,kBAAmB,oBAAqB,cAAe,gBAC5Egd,KAAK6nM,WACT,IAAK,aACD7nM,KAAKhd,QAAQ4zC,UAAUzB,IAAI,qBAC3B,MACJ,IAAK,WACDn1B,KAAKhd,QAAQ4zC,UAAUzB,IAAI,mBAC3B,MACJ,IAAK,OACDn1B,KAAKhd,QAAQ4zC,UAAUzB,IAAI,eAC3B,MACJ,IAAK,OACDn1B,KAAKhd,QAAQ4zC,UAAUzB,IAAI,eAGnCn1B,KAAKm8L,mBACT,EACArxD,EAAKzrI,UAAU88L,kBAAoB,WAC3Bn8L,KAAKw0J,eACgB,aAAnBx0J,KAAK6nM,WAA+C,SAAnB7nM,KAAK6nM,UACxC7nM,KAAKhd,QAAQ4zC,UAAUzB,IAAI,kBAG3Bn1B,KAAKhd,QAAQ4zC,UAAUjB,OAAO,iBAEtC,EAOAm1G,EAAKzrI,UAAUi9L,cAAgB,WAC3B,GAAIt8L,KAAK+lJ,cAAe,CACpB,IAAIigD,EAAa,GAAG3oM,MAAMqC,KAAKM,KAAKhd,QAAQwhD,uBAAuB,mBACnE,OAAQxkC,KAAKisJ,iBAAiBC,UAC1B,IAAK,UACD7gG,EAAAA,EAAAA,IAAKrrD,KAAKhd,SAAS,IACnBqoE,EAAAA,EAAAA,IAAKrrD,KAAKgmJ,cAAc,IACxB36F,EAAAA,EAAAA,IAAK26I,GAAY,GACjB,MACJ,IAAK,WACD36I,EAAAA,EAAAA,IAAKrrD,KAAKgmJ,cAAc,IACxB36F,EAAAA,EAAAA,IAAKrrD,KAAKhd,SAAS,IACnBqoE,EAAAA,EAAAA,IAAK26I,GAAY,GACjB,MACJ,SACI36I,EAAAA,EAAAA,IAAKrrD,KAAKhd,SAAS,IACnBqoE,EAAAA,EAAAA,IAAKrrD,KAAKgmJ,cAAc,IACxB36F,EAAAA,EAAAA,IAAK26I,GAAY,GAEc,YAAnChmM,KAAKisJ,iBAAiBC,UACtBlsJ,KAAK+mB,OAAOsM,EAAAA,IAAwB,CAAC,EAE7C,CACJ,EAOAy3G,EAAKzrI,UAAUk9L,eAAiB,YAC5BlxI,EAAAA,EAAAA,IAAKrrD,KAAKhd,SAAS,GACnB,IAAIgjN,EAAa,GAAG3oM,MAAMqC,KAAKM,KAAKhd,QAAQwhD,uBAAuB,oBACnE6mB,EAAAA,EAAAA,IAAK26I,GAAY,IACjB36I,EAAAA,EAAAA,IAAKrrD,KAAKgmJ,cAAc,GACe,YAAnChmJ,KAAKisJ,iBAAiBC,UACtBlsJ,KAAK+mB,OAAOsM,EAAAA,IAAwB,CAAC,EAE7C,EAOAy3G,EAAKzrI,UAAUuoM,cAAgB,WAC3B5nM,KAAKw6L,WAAa,IAAIsN,EAAAA,EAAQ,CAC1BC,QAAS,SACTxhJ,QAAS,GACTpmE,SAAU6f,KAAK7f,SAAW6f,KAAK7f,SAAW,MAC3C6f,KAAKhd,QACZ,EAIA8nJ,EAAKzrI,UAAU27L,cAAgB,WAC3Bh7L,KAAKupL,iBAAkB,GACnBvpL,KAAK80G,sBAAwB90G,KAAK+0G,2BAClC/0G,KAAKg1G,aAAaC,YAAc,GAEpCj1G,KAAKypL,kBACT,EACA3+C,EAAKzrI,UAAU2oM,iBAAmB,SAAUhlN,GACxC,IAAI6wK,EAAc7zJ,KAAK2jI,iBACnBskE,EAAe,eACfC,EAASloM,KAAK+zJ,YAAYF,EAAao0C,EAAc,UACrDE,EAASnoM,KAAK+zJ,YAAYF,EAAao0C,EAAc,WACrD3yI,EAAQtyE,EAAQ4zC,UAAUM,SAAS,gBAAkBgxK,EAASC,EAC9DrxK,EAAM9zC,EAAQ4zC,UAAUM,SAAS,gBAAkB,KAAO,KAC9Do+B,EAAM/iD,cAAcukB,GAAK77C,UAAY+H,EAAQ/H,UAC7Cq6E,EAAM/iD,cAAcukB,GAAKvlB,UAAYvuB,EAAQuuB,UAC7C,IAAIwiC,EAAQuhB,EAAM/iD,cAAcukB,GAAKoM,wBAAwB6Q,MAG7D,OAFAnxC,SAASuuB,KAAKqH,YAAY0vK,GAC1BtlM,SAASuuB,KAAKqH,YAAY2vK,GACtBp0J,EAAQ/wD,EAAQkgD,wBAAwB6Q,KAIhD,EACA+2F,EAAKzrI,UAAU6zK,iBAAmB,SAAUz3L,GACxC,GAAIukB,KAAKm7L,oBAAqB,CAC1B,IAAIn4M,GAAU2iI,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,qBACjCn+B,KAAKooM,cAAgBplN,GAAsB,aAAXvH,EAAEnB,MAClC0lB,KAAKw6L,WAAWhpL,QAEpB,IAAI2kB,EAAU16C,EAAE0iD,OAAOhI,QAEvB,GAAInzC,GAAsB,aAAXvH,EAAEnB,QAAyBs4C,EAAAA,GAAQY,WAA4C,IAD9E,CAAC,IAAK,SAAU,SACwCl9B,QAAQ6/B,IAAkB,CAC9F,GAAInzC,EAAQo+C,aAAa,mBACrB,OAEJ,GAAIphC,KAAKgoM,iBAAiBhlN,GAAU,CAChC,IAAImzH,EAAMn2G,KAAKi0G,aAAa/0H,SAAS8D,EAAQo+C,aAAay8E,EAAAA,IAAwB,KAC9Eu8C,EAAYjkD,EAAInrD,kBAAoB,YAAc,YAClD2gF,EAAa3rI,KAAK4Q,cAAc,OACpC,GAAI5tB,EAAQwhD,uBAAuB,gBAAgBvsD,OAAQ,CACvD,IAAIowN,EAAerlN,EAAQwhD,uBAAuB,gBAAgB,GAClEmnG,EAAW,GAAKyuB,GAAap6J,KAAKulD,SAAS8iJ,EAAaluI,WACxDn6D,KAAKw6L,WAAWj0I,QAAUolF,CAC9B,MAEIA,EAAW,GAAKyuB,GAAap6J,KAAKulD,SAASviE,EAAQm3E,WACnDn6D,KAAKw6L,WAAWj0I,QAAUolF,EAE9B3rI,KAAKooM,YAAcplN,EACfgd,KAAKymD,sBACLzmD,KAAKw6L,WAAW/zI,qBAAsB,GAEtC0vD,EAAInrD,oBACJhrD,KAAKw6L,WAAW8N,iBAAkB,GAEtCtoM,KAAKw6L,WAAiB,KAAEx3M,EAC5B,CACJ,CACJ,CACAgd,KAAKy8K,gBAAgBhhM,EACzB,EAMAqvJ,EAAKzrI,UAAUo9K,gBAAkB,SAAUhhM,GACvC,GAAIukB,KAAK8hI,eAAgB,CACrB,IAAI5lE,GAAMypD,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ0/E,EAAAA,IACjC,GAAI,GAAGxgH,MAAMqC,KAAKM,KAAKhd,QAAQwhD,uBAAuB,kBAAkBvsD,QAAqB,aAAXwD,EAAEnB,KAEhF,IADA,IAAIH,EAAO,GAAGkjB,MAAMqC,KAAKM,KAAKhd,QAAQwhD,uBAAuB,kBACpDr/B,EAAI,EAAGA,EAAIhrB,EAAKlC,OAAQktB,IAC7BhrB,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAKw7C,UAAUjB,OAAO,sBAGrD,GAAIumC,EAAK,EACN/hF,EAAO,GAAGkjB,MAAMqC,KAAKM,KAAKhd,QAAQ8tB,iBAAiB,qBAAuBorD,EAAI96B,aAAay8E,EAAAA,IAAyB,QACnHh3F,OAAO1sC,EAAKmc,QAAQ4lE,GAAM,GAC/B,IAAS/2D,EAAI,EAAGA,EAAIhrB,EAAKlC,OAAQktB,IACa,SAAtC+2D,EAAI96B,aAAa,kBAA+BjnD,EAAK+E,SAASimB,EAAE/pB,WAAY,KAC5EjB,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAKw7C,UAAUzB,IAAI,iBAE1Ch7C,EAAK+E,SAASimB,EAAE/pB,WAAY,MACjCjB,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAKw7C,UAAUjB,OAAO,gBAG9D,CACJ,CACJ,EACAm1G,EAAKzrI,UAAU87L,kBAAoB,WAC/B,IAAIxmF,EAAO30G,KAAKi0G,aAChB,GAAsB,wBAAlBj0G,KAAK25J,SACL,OAAO,EAEX,IAAK,IAAIx0J,EAAI,EAAGA,EAAIwvG,EAAK18H,OAAQktB,IAC7B,GAAkD,wBAA9CwvG,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKu+K,SACjC,OAAO,EAGf,OAAO,CACX,EACA7uB,EAAKzrI,UAAUu0E,cAAgB,WACvB5zE,KAAKm7L,qBACLn7L,KAAKw6L,WAAWhpL,OAExB,EAUAs5H,EAAKzrI,UAAU00J,YAAc,SAAUz+F,EAAO/K,EAAKjwE,GAC/C,IAAIiuN,EAAavoM,KAAK4Q,cAAc,OACpC23L,EAAWttN,UAAY+kB,KAAKhd,QAAQ/H,UACpCstN,EAAWhxK,MAAMixK,QAAU,4DAC3B,IAAIC,EAAWzoM,KAAK4Q,cAAc,OAClC63L,EAASxtN,UAAYsvE,EACrB,IAAIm+I,EAAU1oM,KAAK4Q,cAAc,QAAS,CAAE2lB,MAAO,CAAEi0B,KAAM,UAC3Dk+I,EAAQztN,UAAYq6E,EAAMr6E,UAC1BytN,EAAQnxK,MAAMixK,QAAU,iCACxB,IAAI1xK,EAAgB,WAATx8C,EAAqB,KAAO,KACnCquN,EAAO3oM,KAAK4Q,cAAc,MAC1Bg4L,EAAO5oM,KAAK4Q,cAAckmB,GAM9B,OALA6xK,EAAKx3L,YAAYy3L,GACjBF,EAAQv3L,YAAYw3L,GACpBF,EAASt3L,YAAYu3L,GACrBH,EAAWp3L,YAAYs3L,GACvB7lM,SAASuuB,KAAKhgB,YAAYo3L,GACnBA,CACX,EACAz9D,EAAKzrI,UAAUwpM,aAAe,SAAUptN,GACnB,QAAbA,EAAEwnB,QAAiC,aAAbxnB,EAAEwnB,QACxBjD,KAAKw6L,WAAWhpL,OAExB,EAOAs5H,EAAKzrI,UAAUk6C,WAAa,WACxBvkB,EAAAA,GAAaG,IAAIn1B,KAAKhd,QAAS,QAASgd,KAAK8oM,kBAAmB9oM,MAChEg1B,EAAAA,GAAaG,IAAIn1B,KAAKhd,QAAS,WAAYgd,KAAK8oM,kBAAmB9oM,MACnEg1B,EAAAA,GAAaG,IAAIn1B,KAAKhd,QAAS,WAAYgd,KAAK6oD,gBAAiB7oD,MACjEg1B,EAAAA,GAAaG,IAAIn1B,KAAKhd,QAAS,WAAYgd,KAAK+oM,gBAAiB/oM,MACjEg1B,EAAAA,GAAaG,IAAIn1B,KAAKhd,QAAS,UAAWgd,KAAKk6C,gBAAiBl6C,MAEhEg1B,EAAAA,GAAaG,IAAI70C,OAAQ,SAAU0f,KAAKglM,iBAAkBhlM,MACtDA,KAAKm5K,gBACLn5K,KAAKhd,QAAQowE,UAAsC,IAA3BpzD,KAAKhd,QAAQowE,SAAkB,EAAIpzD,KAAKhd,QAAQowE,UAE5EpzD,KAAKg3D,eAAiB,IAAI/c,EAAAA,GAAej6C,KAAKhd,QAAS,CACnDk4D,UAAWl7C,KAAKuoG,iBAAiBvpG,KAAKgB,MACtC26C,WAAY36C,KAAK26C,WACjBvlB,UAAW,YAEfJ,EAAAA,GAAaG,IAAIn1B,KAAKgmJ,aAAa/tH,kBAAmB,SAAUj4B,KAAK4zE,cAAe5zE,MACpFg1B,EAAAA,GAAaG,IAAIn1B,KAAKhd,QAAS,YAAagd,KAAKkzK,iBAAkBlzK,MACnEg1B,EAAAA,GAAaG,IAAIn1B,KAAKhd,QAAS,WAAYgd,KAAKkzK,iBAAkBlzK,MAClEg1B,EAAAA,GAAaG,IAAIn1B,KAAKgmJ,aAAc,aAAchmJ,KAAKgpM,SAAUhpM,MACjEg1B,EAAAA,GAAaG,IAAIvyB,SAASuuB,KAAM,UAAWnxB,KAAKk5K,eAAgBl5K,KACpE,EAOA8qI,EAAKzrI,UAAU87C,aAAe,WAC1BnmB,EAAAA,GAAaW,OAAO31B,KAAKhd,QAAS,QAASgd,KAAK8oM,mBAChD9zK,EAAAA,GAAaW,OAAO31B,KAAKhd,QAAS,WAAYgd,KAAK8oM,mBACnD9zK,EAAAA,GAAaW,OAAO31B,KAAKhd,QAAS,WAAYgd,KAAK6oD,iBACnD7zB,EAAAA,GAAaW,OAAO31B,KAAKhd,QAAS,WAAYgd,KAAK+oM,iBACnD/zK,EAAAA,GAAaW,OAAO31B,KAAKgmJ,aAAa/tH,kBAAmB,SAAUj4B,KAAK4zE,eACxE5+C,EAAAA,GAAaW,OAAO31B,KAAKhd,QAAS,YAAagd,KAAKkzK,kBACpDl+I,EAAAA,GAAaW,OAAO31B,KAAKhd,QAAS,WAAYgd,KAAKkzK,kBACnDl+I,EAAAA,GAAaW,OAAO31B,KAAKhd,QAAS,UAAWgd,KAAKk6C,iBAClDllB,EAAAA,GAAaW,OAAO31B,KAAKgmJ,aAAc,aAAchmJ,KAAKgpM,UAC1Dh0K,EAAAA,GAAaW,OAAO/yB,SAASuuB,KAAM,UAAWnxB,KAAKk5K,gBAEnDlkJ,EAAAA,GAAaW,OAAOr1C,OAAQ,SAAU0f,KAAKglM,iBAC/C,EAKAl6D,EAAKzrI,UAAUi2L,YAAc,WACrBt1L,KAAK46B,cAGT56B,KAAKumB,GAAG8M,EAAAA,IAAkBrzB,KAAKi4I,UAAWj4I,MAC1CA,KAAKumB,GAAG8M,EAAAA,IAAqBrzB,KAAKukM,kBAAmBvkM,MACrDA,KAAKumB,GAAG8M,EAAAA,IAAwBrzB,KAAKukM,kBAAmBvkM,MACxDA,KAAKipM,kBAAoBjpM,KAAKi6L,gBAAgBj7L,KAAKgB,MACnDA,KAAK6D,iBAAiBwvB,EAAAA,IAAkBrzB,KAAKipM,mBAC7CjpM,KAAKumB,GAAG8M,EAAAA,IAAmBrzB,KAAK6oM,aAAc7oM,MAClD,EAKA8qI,EAAKzrI,UAAU+6L,eAAiB,WACxBp6L,KAAK46B,cAGT56B,KAAK4mB,IAAIyM,EAAAA,IAAkBrzB,KAAKi4I,WAChCj4I,KAAK4mB,IAAIyM,EAAAA,IAAqBrzB,KAAKukM,mBACnCvkM,KAAK4mB,IAAIyM,EAAAA,IAAwBrzB,KAAKukM,mBACtCvkM,KAAK8D,oBAAoBuvB,EAAAA,IAAkBrzB,KAAKipM,mBAChDjpM,KAAK4mB,IAAIyM,EAAAA,IAAmBrzB,KAAK6oM,cACrC,EAQA/9D,EAAKzrI,UAAUykI,sBAAwB,WACnC,OAAItvB,EAAAA,EAAAA,IAAgBx0G,OACT2N,EAAAA,EAAAA,IAAkB3N,KAAKozI,gBAAgBt1D,SAC1C99E,KAAKozI,gBAAkBpzI,KAAKozI,gBAAgBt1D,QAEhD99E,KAAKy1G,cAAcC,kBACZ11G,KAAKozI,gBAERpzI,KAAKw1G,eAAiBx1G,KAAKy1G,cAAcrB,QAAQn8H,QAAU+nB,KAAKozI,gBAAgBn7J,QACjF+nB,KAAKozI,gBAAgBt1D,QAAW99E,KAAKozI,gBAAgBt1D,QACtD99E,KAAKozI,eACf,EACAtI,EAAKzrI,UAAUypM,kBAAoB,SAAUrtN,GACzC,KAAIukB,KAAK6gM,YAAYplN,KAAOkqI,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,gBAAkB1iD,EAAEyoM,SACnElkL,KAAKhd,QAAQwhD,uBAAuB,qBAAqBvsD,QAAU+nB,KAAKkpM,UAAUztN,OAG/EukB,KAAKw4K,uBAAwB7yD,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ0/E,EAAAA,KAClC,OAArBpiI,EAAE0iD,OAAOhI,WAAyBn2B,KAAKw1G,eAAiBx1G,KAAK0yJ,mBAC7D/sC,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,mBAAqB1iD,EAAEyoM,SAFlD,EAKIv+D,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,iBAAmBn+B,KAAKw4K,uBAC7C7yD,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,oBAAwB1iD,EAAE0iD,SACK,IAAxD,CAAC,IAAK,SAAU,SAAS7nC,QAAQ7a,EAAE0iD,OAAOhI,UAC1C16C,EAAEi1D,iBAEN,IAAIziD,EAAO+R,KAAKs/L,WAAW7jN,EAAE0iD,QAE7BlwC,EAAgB,QAAI,EACpB,IAAIqzJ,GAAY,EACZ7mC,GAAKrhF,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,MAC3B,GAAIs8E,GAAMA,EAAGr5E,aAAa,YAAa,CACnC,IAAIsgH,EAAS1hJ,KAAKspK,oBAAoB7uD,EAAGr5E,aAAa,aACtDkgH,IAAYI,GAASA,EAAOJ,SAChC,CACIA,GACAthJ,KAAK81B,QAAQzC,EAAAA,IAAoBplC,GAErC+R,KAAK+mB,OAAOsM,EAAAA,IAAc53C,EAlB1B,CAmBJ,EACAqvJ,EAAKzrI,UAAU6pM,UAAY,SAAUztN,GACjC,IAAIg/H,GAAKkL,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ0/E,EAAAA,IAC5BsxB,EAAoC,UAA3BnvI,KAAKkzI,aAAa9pJ,MAC3B4W,KAAKmvI,QAAU10B,IAAOA,EAAG7jF,UAAUM,SAAS2mF,EAAAA,KAAuBpD,EAAG7jF,UAAUM,SAAS2mF,EAAAA,KAC7F,QAAQ8H,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,sBAAwBgxG,IAAWxpB,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ0/E,EAAAA,MACrF8H,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ0/E,EAAAA,IAAkBjnF,UAAUM,SAAS,qBACpE,EACA4zG,EAAKzrI,UAAU0pM,gBAAkB,SAAUttN,GACvC,IAAIyqM,GAAOvgE,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,UAClC,KAAIxwB,EAAAA,EAAAA,IAAkBu4K,IAASA,EAAKthM,KAAOob,KAAKhd,QAAQ4B,MAAMw0C,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,qBAAhF,CAGA,IAAIgrK,GAAU,EACV1uF,GAAKrhF,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,MAC3B,GAAIs8E,GAAMA,EAAGr5E,aAAa,YAAa,CACnC,IAAIsgH,EAAS1hJ,KAAKspK,oBAAoB7uD,EAAGr5E,aAAa,aACtD+nK,IAAUznD,GAASA,EAAOJ,SAC9B,CACA,IAAIrzJ,EAAO+R,KAAKs/L,WAAW7jN,EAAE0iD,QAC7BlwC,EAAKkwC,OAAS1iD,EAAE0iD,OACZgrK,GACAnpM,KAAK81B,QAAQzC,EAAAA,IAA0BplC,GAE3C+R,KAAK+mB,OAAOsM,EAAAA,IAAiB53C,EAZ7B,CAaJ,EACAqvJ,EAAKzrI,UAAUwpD,gBAAkB,SAAUptE,GACvC,IAAIukB,KAAK6gM,YAAYplN,GAArB,EAGKkqI,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,YACxBn+B,KAAKhd,QAAQuvB,cAAc,gBAAgBglB,MAAMuiB,QAAU,QAE/D,IAAIyqH,EAAcvkK,KAAKhd,QAAQuvB,cAAc,0BACzCgyJ,IAAgBA,EAAYtrH,cAAcriB,UAAUM,SAAS,eAC7DqtI,EAAY3tI,UAAUzB,IAAI,UAE9B,IAAIyyE,EAAgBnsH,EAAEmsH,cAClBwhG,EAAWxhG,EAAgBA,EAAcxmE,aAAa,aAAe,KACnEwmE,KAAmB+d,EAAAA,EAAAA,IAAa/d,EAAe,cAC/Cj6F,EAAAA,EAAAA,IAAkBy7L,IACfA,KAAe3tN,EAAE0iD,OAAOiD,aAAa,eACtCphC,KAAKqpM,WAAYrpM,KAAKmvI,QAAWv8G,EAAAA,GAAQY,WACd,UAA3BxzB,KAAKkzI,aAAa9pJ,QAAuBu8H,EAAAA,EAAAA,IAAa/d,EAAe,WAAY+d,EAAAA,EAAAA,IAAa/d,EAAe,YAC7G+d,EAAAA,EAAAA,IAAa/d,EAAe,oBAAsB+d,EAAAA,EAAAA,IAAa/d,EAAe,gBAAkBj6F,EAAAA,EAAAA,KAAkBg4G,EAAAA,EAAAA,IAAa/d,EAAe,oBAC9I5nG,KAAKyoK,WAAW27B,WAChBpkM,KAAK+mB,OAAOsM,EAAAA,IAAwB,CAAC,IAEV,WAA3BrzB,KAAKkzI,aAAa9pJ,MAClB4W,KAAKyoK,WAAW6gC,oBAGxBtpM,KAAKqpM,UAAW,CAvBhB,CAwBJ,EACAv+D,EAAKzrI,UAAUwhM,YAAc,SAAUplN,GACnC,IAAIiR,GAAci5H,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,UACzC,SAAKzxC,GAAeA,EAAY9H,KAAOob,KAAKhd,QAAQ4B,KAAQ+gI,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,sBAC/ExwB,EAAAA,EAAAA,IAAkBjhB,GAI1B,EAMAo+I,EAAKzrI,UAAUgrL,qBAAuB,SAAU59F,GAC5C,IAAI5mG,EAAOma,KAAK2rC,eAChB,KAAMh+B,EAAAA,EAAAA,IAAkB9nB,IAAmB,KAATA,KAAkB8nB,EAAAA,EAAAA,IAAkB8+E,GAAgB,CAClF,IAAI88G,GAAW57L,EAAAA,EAAAA,IAAkB8+E,GAAiCnwF,KAAKC,MAAM1W,GAA3B4mG,EAC9CzsF,KAAK80G,sBAAwBy0F,EAAQv0F,eACrCu0F,EAAQv0F,aAAaC,YAAc,GAEvC,IAAIn2H,EAAOD,OAAOC,KAAKyqN,GACvBvpM,KAAKi6B,qBAAsB,EAC3B,IAAK,IAAI1rB,EAAK,EAAGC,EAAS1vB,EAAMyvB,EAAKC,EAAOv2B,OAAQs2B,IAAM,CACtD,IAAIvvB,EAAMwvB,EAAOD,GACc,kBAAnBvO,KAAK,GAAKhhB,KAAuB2uB,EAAAA,EAAAA,IAAkB3N,KAAK,GAAKhhB,IAWrEghB,KAAK,GAAKhhB,GAAOuqN,EAAQ,GAAKvqN,GAV1ByvB,MAAMC,QAAQ1O,KAAK,GAAKhhB,KAAiB,YAARA,IACjCk2M,EAAAA,EAAAA,IAAel1L,KAAK,GAAKhhB,IACzBghB,KAAKwpM,aAAaD,EAAQ,GAAKvqN,GAAMghB,KAAK,GAAKhhB,IAC/CghB,KAAK,GAAKhhB,GAAOuqN,EAAQ,GAAKvqN,KAG9B2vB,EAAAA,EAAAA,IAAO3O,KAAK,GAAKhhB,GAAMuqN,EAAQ,GAAKvqN,GAMhD,CACAghB,KAAKi6B,qBAAsB,CAC/B,CACJ,EACA6wG,EAAKzrI,UAAUmqM,aAAe,SAAUC,EAAcr1F,GAelD,IAdA,IAAIs1F,EAAgBD,EAChBvgH,EAAU,SAAU/jF,GACpB,IAAIwkM,EAAWv1F,EAAQj2H,QAAO,SAAUyrN,GAAQ,OAAOA,EAAK9iN,QAAU4iN,EAAcxqN,SAASimB,EAAE/pB,WAAY,KAAK0L,KAAO,IAAG,IACrH6mB,EAAAA,EAAAA,IAAkBg8L,KACfA,EAASv1F,SAAWu1F,EAASv1F,QAAQn8H,QACrC86G,EAAOy2G,aAAaE,EAAcxqN,SAASimB,EAAE/pB,WAAY,KAAKg5H,QAASu1F,EAASv1F,SAChFs1F,EAAcxqN,SAASimB,EAAE/pB,WAAY,MAAOuzB,EAAAA,EAAAA,IAAOg7L,EAAUD,EAAcxqN,SAASimB,EAAE/pB,WAAY,KAAM,CAAC,GAAG,IAG5GsuN,EAAcxqN,SAASimB,EAAE/pB,WAAY,MAAOuzB,EAAAA,EAAAA,IAAOg7L,EAAUD,EAAcxqN,SAASimB,EAAE/pB,WAAY,KAAM,CAAC,GAAG,GAGxH,EACI23G,EAAS/yF,KACJmF,EAAI,EAAGA,EAAIukM,EAAczxN,OAAQktB,IACtC+jF,EAAQ/jF,EAEhB,EAKA2lI,EAAKzrI,UAAUyrL,SAAW,WACtB,QAAQn9K,EAAAA,EAAAA,IAAkB3N,KAAKuiI,mBAAoB50H,EAAAA,EAAAA,IAAkB3N,KAAKwiI,UAC9E,EACAsI,EAAKzrI,UAAU0rL,gBAAkB,SAAU32E,GACvC,IAAIpkG,EAAQhQ,KACZ,OAAOo0G,EAAQzsG,MAAK,SAAUwuG,GAC1B,OAAIA,EAAI/B,QACGpkG,EAAM+6K,gBAAgB50E,EAAI/B,YAE3B+B,EAAI0zF,WAAY1zF,EAAI2zF,iBAClC,GACJ,EACAh/D,EAAKzrI,UAAU8rL,oBAAsB,SAAU/2E,GAC3C,IAAIpkG,EAAQhQ,KACZ,OAAOo0G,EAAQzsG,MAAK,SAAUwuG,GAC1B,OAAIA,EAAI/B,QACGpkG,EAAMm7K,oBAAoBh1E,EAAI/B,YAE/B+B,EAAI98H,aAAc88H,EAAIa,gBACpC,GACJ,EACA8zB,EAAKzrI,UAAU66C,gBAAkB,SAAUz+D,GACvC,IAAIsuN,GAAWp7L,EAAAA,EAAAA,IAAOlzB,EAAG,CAAE8L,QAAQ,IACnCyY,KAAK81B,QAAQ,aAAci0K,IACH,IAApBA,EAASxiN,QACT9L,EAAEw1H,0BAEV,EACA65B,EAAKzrI,UAAU65K,eAAiB,SAAUz9L,GACtC,GAAIA,EAAE2+D,OAAQ,CAgBV,GAfkB,KAAd3+D,EAAEu+D,UACEh6C,KAAK2oL,MACL3oL,KAAK+mB,OAAOsM,EAAAA,IAAsB,CAAE8K,OAAQ1iD,EAAE0iD,OAAQ6rK,UAAU,IAChEhqM,KAAK2oL,MAAO,IAGR3oL,KAAK0nI,aAAe1nI,KAAK0nI,YAAYC,aAAe3nI,KAAK0nI,YAAYC,YAAY3kJ,WACjFm0C,EAAAA,EAAAA,IAAY,CAACn3B,KAAK0nI,YAAYC,YAAY3kJ,QAASgd,KAAK0nI,YAAYC,YAAYkN,gBAAiB,CAAC,YAAa,YAC/G70I,KAAK0nI,YAAYC,YAAY3kJ,QAAQowE,UAAY,GAEhDpzD,KAAKhd,QAAQ4zC,UAAUM,SAAS,gBACjCl3B,KAAKhd,QAAQyuB,UAIP,KAAdh2B,EAAEu+D,QAAgB,CAClB,IAAI0tF,EAAc1nI,KAAK0nI,YACvB,GAAIA,EAAa,CACb,IAAK1nI,KAAKozI,gBAAgBn7J,OACtB,OAEJyvJ,EAAYuiE,eACZviE,EAAYwiE,YAChB,CACJ,CACkB,KAAdzuN,EAAEu+D,UACFh6C,KAAK2oL,MAAO,GAEE,KAAdltM,EAAEu+D,SAAkBh6C,KAAK2oL,OACzB3oL,KAAK+mB,OAAOsM,EAAAA,IAAsB,CAAE8K,OAAQ1iD,EAAE0iD,OAAQ6rK,UAAU,IAChEhqM,KAAK2oL,MAAO,EAEpB,CACkB,KAAdltM,EAAEu+D,SACFh6C,KAAK+mB,OAAOsM,EAAAA,IAAwB53C,EAE5C,EACAqvJ,EAAKzrI,UAAUkpG,iBAAmB,SAAU9sH,GACpCukB,KAAK6gM,YAAYplN,IAChBukB,KAAKmvI,QAAuB,WAAb1zJ,EAAEwnB,QAAoC,UAAbxnB,EAAEwnB,QAAmC,eAAbxnB,EAAEwnB,QAC/C,QAAbxnB,EAAEwnB,QAAiC,aAAbxnB,EAAEwnB,SAI/BjD,KAAKqpM,UAAW,EAEhBrpM,KAAKm5K,gBACY,cAAb19L,EAAEwnB,SACFxnB,EAAEi1D,iBACF1wC,KAAKyQ,SAETzQ,KAAK+mB,OAAOsM,EAAAA,IAAmB53C,IAEvC,EAMAqvJ,EAAKzrI,UAAU8rI,mBAAqB,SAAUtlG,GAC1C7lC,KAAKysC,gBAAkB5G,CAC3B,EACAilG,EAAKzrI,UAAU+7L,mBAAqB,YAChCn8B,EAAAA,EAAAA,IAAej/J,KAAKo0G,QAASp0G,KAAKgiJ,2BAA4BhiJ,OAC9Dk1L,EAAAA,EAAAA,IAAel1L,KAAKo0G,SACpBp0G,KAAKynM,oBACLznM,KAAK+mB,OAAOsM,EAAAA,IAAgB,CAAC,EACjC,EAMAy3G,EAAKzrI,UAAU03G,qBAAuB,WAClC,OAAO/2G,KAAKi0G,aAAa91H,QAAO,SAAUg4H,GACtC,OAAOA,EAAII,iBACf,GACJ,EAKAu0B,EAAKzrI,UAAUojL,aAAe,WAC1B,OAAOziL,KAAKq1J,UAAYr1J,KAAKq1J,WAAYotB,EAAAA,EAAAA,IAAaziL,KAAKhd,QAC/D,EAMA8nJ,EAAKzrI,UAAU8qM,eAAiB,WAC5BnqM,KAAK0qL,iBACL,IAAI0f,EAAOpqM,KAAKgmJ,aAAazzI,cAAc,0BACvC83L,EAAQrqM,KAAKgmJ,aAAazzI,cAAc,2BACxC+3L,GAAetqM,KAAK4oL,mBAAqB5oL,KAAK6oL,gBAElD,KAD2C,IAA5B7oL,KAAKgrI,uBACAo/D,GAAQpqM,KAAK6oL,kBAAsBwhB,GAASrqM,KAAK4oL,kBAAsBwhB,IAASpqM,KAAK6oL,iBACjGwhB,IAAUrqM,KAAK4oL,kBACnB5oL,KAAKwpL,WAAa,EAClBxpL,KAAK8oL,YAAc,EACf9oL,KAAKgiJ,6BACLhiJ,KAAKu5G,YAAc,GACnBv5G,KAAKw9L,kBAAkBx9L,KAAKo0G,UAEhCp0G,KAAKg7L,qBAEJ,GAAIsP,IAA6C,IAA5BtqM,KAAKgrI,qBAA6Bo/D,GAAsC,IAA5BpqM,KAAKgrI,oBAA4Bo/D,GACnGpqM,KAAKwpL,WAAa,EAClBxpL,KAAK8oL,YAAc,EACf9oL,KAAKgiJ,6BACLhiJ,KAAKu5G,YAAc,GACnBv5G,KAAKw9L,kBAAkBx9L,KAAKo0G,UAEhCp0G,KAAKg7L,qBAOL,GAJAh7L,KAAKyjL,sBAAuB,EAC5BzjL,KAAKo7L,qBACLp7L,KAAKm1L,iBAAiBn1L,KAAKi0G,cAC3Bj0G,KAAKmrC,UACDnrC,KAAK8hI,eAAgB,CACrB,IAAIyoE,EAAOvqM,KAAK6nJ,cAAcutB,oBAAoB7iK,cAAc,IAAMsrG,EAAAA,KACtEloF,EAAAA,EAAAA,IAAO40K,EAAKh4L,cAAcsrG,EAAAA,KAC1B,IAAIwf,EAAar9H,KAAKihI,mBACjB1uH,cAAc,IAAMsrG,EAAAA,IAAwBtrG,cAAcsrG,EAAAA,IAAoBzsG,WAAU,GAE7F,GADAm5L,EAAKvyK,aAAaqlG,EAAUktE,EAAKh4L,cAAcsrG,EAAAA,KAClB,eAAzB79G,KAAKugI,gBAAkC,CACvC,IAAIiqE,EAAQxqM,KAAK6nJ,cAAcihB,wBAAwBv2J,cAAc,IAAMsrG,EAAAA,KAC3EloF,EAAAA,EAAAA,IAAO60K,EAAMj4L,cAAcsrG,EAAAA,KAC3B,IAAI4sF,EAAWzqM,KAAKihI,mBACf1uH,cAAc,0BAA0BA,cAAcsrG,EAAAA,IAAoBzsG,WAAU,GACzFo5L,EAAMxyK,aAAayyK,EAAQD,EAAMj4L,cAAcsrG,EAAAA,IACnD,CACJ,CAEJ,GAAI79G,KAAK8hI,eAAgB,CACrB,IAAIp+F,EAAO1jC,KAAKgmJ,aAAazzI,cAAc,uBAAuB8wB,WAClErjC,KAAKw1K,aAAaC,mBAAmBpyI,WAAaK,EAClD1jC,KAAK6nJ,cAAcutB,oBAAoB/xI,WAAaK,CACxD,CACJ,EAUAonG,EAAKzrI,UAAUqrM,YAAc,SAAUC,EAAuBC,EAE9DC,EAAUC,GACN,OAAO9qM,KAAK+qM,kBACR/qM,KAAK+qM,kBAAkBvrM,IAAIQ,KAAM2qM,EAAuBC,EAAkBC,GAAU,EAAOC,GAAU,IAC7G,EAUAhgE,EAAKzrI,UAAU2rM,UAAY,SAAUL,EAErCC,EAAkBC,EAAUC,GACxB,OAAO9qM,KAAK+qM,kBACR/qM,KAAK+qM,kBAAkBvrM,IAAIQ,KAAM2qM,EAAuBC,EAAkBC,GAAU,EAAMC,GAAU,IAC5G,EAWAhgE,EAAKzrI,UAAU4rM,UAAY,SAAUC,EAAqBN,EAAkBO,EAAQL,GAChF,OAAO9qM,KAAKorM,gBAAkBprM,KAAKorM,gBAAgB5rM,IAAIQ,KAAMkrM,EAAqBN,EAAkBO,EAAQL,GAAU,IAC1H,EAQAhgE,EAAKzrI,UAAUgsM,YAAc,SAAUx1F,GAC/B71G,KAAK6hL,aACL7hL,KAAK6hL,YAAYwpB,YAAYx1F,EAErC,EAMAi1B,EAAKzrI,UAAUisM,eAAiB,WACxBtrM,KAAK6hL,aACL7hL,KAAK6hL,YAAY0pB,WAEzB,EAMAzgE,EAAKzrI,UAAUmsM,iBAAmB,WAC1BxrM,KAAK6hL,aACL7hL,KAAK6hL,YAAY4pB,aAEzB,EAiBA3gE,EAAKzrI,UAAUqsM,cAAgB,WACvB1rM,KAAK6hL,aACL7hL,KAAK6hL,YAAY6pB,eAEzB,EAUA5gE,EAAKzrI,UAAUssM,cAAgB,SAAU91F,GACjC71G,KAAK6hL,aACL7hL,KAAK6hL,YAAY8pB,cAAc91F,EAEvC,EASAi1B,EAAKzrI,UAAUusM,kBAAoB,SAAUh/K,EAAG14B,GACxC8L,KAAKinM,qBACLjnM,KAAKinM,oBAAoB2E,kBAAkBh/K,EAAG14B,EAEtD,EACA42I,EAAKzrI,UAAUy9L,cAAgB,WAC3B,IAAI9sL,EAAQhQ,KAKZA,KAAKumB,GAAG8M,EAAAA,KAJM,SAAV8X,IACAn7B,EAAM+5H,aAAa5+F,UACnBn7B,EAAM4W,IAAIyM,EAAAA,IAAqB8X,EACnC,GACsCnrC,KAC1C,EAiBA8qI,EAAKzrI,UAAUwsM,kBAAoB,WAC3B7rM,KAAK8rM,iBACL9rM,KAAK8rM,gBAAgBL,aAE7B,EAiBA3gE,EAAKzrI,UAAU0sM,gBAAkB,WACzB/rM,KAAK8rM,iBACL9rM,KAAK8rM,gBAAgBP,WAE7B,EAMAzgE,EAAKzrI,UAAUmvK,mBAAqB,WAC5BxuK,KAAK47J,iBACL57J,KAAK47J,gBAAgB4S,oBAE7B,EAMA1jC,EAAKzrI,UAAU0qK,kBAAoB,WAC3B/pK,KAAK47J,iBACL57J,KAAK47J,gBAAgBmO,mBAE7B,EAQAj/B,EAAKzrI,UAAUqyK,YAAc,SAAUC,GAC/B3xK,KAAK47J,iBACL57J,KAAK47J,gBAAgB8V,YAAYC,EAEzC,EASA7mC,EAAKzrI,UAAU2sK,kBAAoB,SAAUviK,EAAYwiK,GACjDjsK,KAAK47J,iBACL57J,KAAK47J,gBAAgBoQ,kBAAkBviK,EAAYwiK,EAE3D,EAKAnhC,EAAKzrI,UAAUouI,kBAAoB,WAC/B,OAAOztI,KAAKquK,mBAAqBruK,KAAKquK,kBAAkBxjL,MAC5D,EAMAigJ,EAAKzrI,UAAU2sM,qBAAuB,SAAU7mK,GAC5C,OAAOnlC,KAAKwsC,qBAAqBl2C,QAAQ6uC,IAAW,CACxD,EAUA2lG,EAAKzrI,UAAUw7H,gBAAkB,SAAUoxE,EAAenlN,GACtDkZ,KAAKgtC,cAAci/J,EAAenlN,EACtC,EAQAgkJ,EAAKzrI,UAAUu2G,IAAM,SAAUt7H,EAAM2T,GAEjC+R,KAAKksM,cAAelsM,KAAKksM,aAAat2F,IAAIt7H,EAAM2T,EACpD,EAMA68I,EAAKzrI,UAAUq6H,iBAAmB,SAAU12I,GACpCgd,KAAKhd,QAAQ4zC,UAAUM,SAAS,aAChCl0C,EAAQ4zC,UAAUzB,IAAI,WAE9B,EAKA21G,EAAKzrI,UAAU8sM,mBAAqB,WAEhC,OADsBnsM,KAAK2hJ,gBAAgB3hJ,KAAK2sJ,UAAU10K,OAAS,GAAG4N,IAE1E,EAMAilJ,EAAKzrI,UAAU+sM,WAAa,WACxB,IAAI7lJ,EAAUvmD,KAAKgmJ,aAAazzI,cAAc,IAAMsrG,EAAAA,IAChDwuF,EAAYrsM,KAAKgmJ,aAAazzI,cAAc,gBAKhD,GAJIg0C,EAAQtW,cAAgBsW,EAAQ1P,eAChC72C,KAAK+pI,aAAamc,gBAClB3/F,EAAQhvB,MAAMooB,UAAY,QAE1B3/C,KAAK8hI,gBAAkBuqE,EAAW,CAClC,IAAIC,EAAgBtsM,KAAKgmJ,aAAazzI,cAAc,uBAChDg6L,EAAYvsM,KAAKgmJ,aAAazzI,cAAc,mBAChD85L,EAAU90K,MAAMuiB,QAAU,OACtBwyJ,EAAc70K,aAAe80K,EAAU90K,cACvC40K,EAAU90K,MAAMuiB,QAAU,OAC1B95C,KAAK+mB,OAAOsM,EAAAA,IAAqB,GAEzC,CACJ,EAQAy3G,EAAKzrI,UAAUmtM,wBAA0B,SAAUjvN,GAC/C,IAAI8iN,EAASrgM,KAAK24G,0BAA0B,GAC5Cp7H,EAAyB,kBAAVA,EAAqBA,EAAM,GAAK8iN,GAAU9iN,EAEzD,IADA,IAAIpD,EAAO6lB,KAAK2hJ,gBACPx8I,EAAI,EAAGA,EAAIhrB,EAAKlC,OAAQktB,IAC7B,IAAIhrB,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAKozK,cAAer0K,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAKgmK,aAArF,CAGA,IAAIqrD,EAAUtyN,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAKyK,KAAK,GAAKw6M,GAIzD,GAHIA,EAAOpsM,MAAM,KAAKhc,OAAS,IAC3Bw0N,GAAUrtE,EAAAA,EAAAA,IAA4BihE,EAAQlmN,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAKyK,OAE/E4mN,IAAYlvN,EACZ,OAAOpD,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAK0L,KAN5C,CASJ,OAAQ,CACZ,EAOAgkJ,EAAKzrI,UAAUw4G,6BAA+B,SAAUj2H,GACpD,IAAIw9E,EACJp/D,KAAKu5G,YAAc,GACnBv5G,KAAKw9L,kBAAkBx9L,KAAKo0G,SAE5B,IADA,IAAI64B,EAAQjtI,KAAKu5G,YACRp0G,EAAI,EAAGA,EAAI8nI,EAAMh1J,OAAQktB,KAC1BvjB,IAAUqrJ,EAAM/tJ,SAASimB,EAAE/pB,WAAY,KAAKwG,OAAUqrJ,EAAM/tJ,SAASimB,EAAE/pB,WAAY,KAAKm7H,mBACxF30H,IAAUqrJ,EAAM/tJ,SAASimB,EAAE/pB,WAAY,KAAK47H,mBAC5C53C,EAAS6tE,EAAM/tJ,SAASimB,EAAE/pB,WAAY,MAG9C,OAAOgkF,CACX,EAOA0rE,EAAKzrI,UAAU+4G,2BAA6B,SAAUlsG,GAClD,IAAIkzD,EACJp/D,KAAKu5G,YAAc,GACnBv5G,KAAKw9L,kBAAkBx9L,KAAKo0G,SAE5B,IADA,IAAI64B,EAAQjtI,KAAKu5G,YACRp0G,EAAI,EAAGA,EAAI8nI,EAAMh1J,OAAQktB,IAC1B+G,IAAQ+gI,EAAM/tJ,SAASimB,EAAE/pB,WAAY,KAAK8wB,MAC1CkzD,EAAS6tE,EAAM/tJ,SAASimB,EAAE/pB,WAAY,MAG9C,OAAOgkF,CACX,EAMA0rE,EAAKzrI,UAAUqtM,mBAAqB,WAChC,GAAI1sM,KAAK9W,gBAAkB8W,KAAK7W,eAAeirH,QAAQn8H,OAAQ,CAC3D,IAAImkG,EAAQp8E,KAAKkmI,aAAargJ,KAAKguH,eAAc,GACjD,OAAI7zG,KAAK3mB,YAAc2mB,KAAKkmI,aAAargJ,KAAKywH,YAAct2G,KAAK3mB,sBAAsBuyG,EAAAA,EAC5E5rF,KAAKkmI,aAAargJ,KAAK6jG,QAAQ1pF,KAAK3mB,WAAY+iG,GAGnDp8E,KAAK3mB,sBAAsBuyG,EAAAA,EACpB5rF,KAAK3mB,WAAWg0G,aAAajR,GAG7B,IAAIwP,EAAAA,EAAY5rF,KAAK3mB,WAAY+iG,GAAOiR,aAAajR,EAGxE,CACA,MAAO,EACX,EACA0uD,EAAKzrI,UAAUstM,aAAe,WAC1B,IAAI35K,EAAYJ,EAAAA,GAAQI,UAAU30C,cAClC,MAAO,6BAA6BypB,KAAKkrB,EAC7C,EAQA83G,EAAKzrI,UAAU2pM,SAAW,SAAUvtN,GAC5BukB,KAAK2sM,iBACAC,EAAAA,GAAO/7E,OAMR5gH,aAAa28L,EAAAA,GAAO/7E,OACpB+7E,EAAAA,GAAO/7E,MAAQ,KACf7wH,KAAK+oM,gBAAgBttN,GACrBukB,KAAK+mB,OAAOsM,EAAAA,IAAkB53C,IAR9BmxN,EAAAA,GAAO/7E,MAAQ3gH,YAAW,WACtB08L,EAAAA,GAAO/7E,MAAQ,IACnB,GAAG,KASf,EAMAia,EAAKzrI,UAAUwtM,UAAY,SAAU3rL,GACjC,MAAO,GAAKA,EAASlhB,KAAK2pL,QAC9B,EAKA7+C,EAAKzrI,UAAUytM,yBAA2B,WACtC,OAAO9sM,KAAKgmJ,aAAazzI,cAAc,IAAMsrG,EAAAA,GACjD,EAKAitB,EAAKzrI,UAAU0tM,wBAA0B,WACrC,OAAO/sM,KAAKgmJ,aAAazzI,cAAc,IAAMsrG,EAAAA,GACjD,EAKAitB,EAAKzrI,UAAUulJ,wBAA0B,WACrC,OAAO5kJ,KAAKihI,mBAAmB1uH,cAAc,IAAMsrG,EAAAA,GACvD,EAKAitB,EAAKzrI,UAAUylJ,uBAAyB,WACpC,OAAO9kJ,KAAKihI,mBAAmB1uH,cAAc,IAAMsrG,EAAAA,GACvD,EAMAitB,EAAKzrI,UAAU2tM,mBAAqB,SAAU9gM,GAC1C,IAAIkmJ,EACAj4K,EAAO,GACX,GAAI6lB,KAAK8hI,eAAgB,CACrB,IAAI+rB,EAAQ,GAAGxwJ,MAAMqC,KAAKM,KAAK+sM,0BAA0Bx6L,cAAcsrG,EAAAA,IAAgBjmI,UACnFk2K,EAAQ,GAAGzwJ,MAAMqC,KAAKM,KAAK8sM,2BAA2Bv6L,cAAcsrG,EAAAA,IAAgBjmI,UACpFq1N,EAAiB,GAIrB,GAHyB,IAArBjtM,KAAK8oL,cACLmkB,EAAiB,GAAG5vM,MAAMqC,KAAKM,KAAKgmJ,aAAazzI,cAAc,2BAA2BA,cAAcsrG,EAAAA,IAAgBjmI,WAExHooB,KAAKwnJ,WAAY,CAGjB,GADArtK,GADAA,EAAO,GAAGkjB,MAAMqC,KAAKM,KAAK8kJ,yBAAyBvyI,cAAcsrG,EAAAA,IAAgBjmI,WACrE+I,OAAO,GAAG0c,MAAMqC,KAAKM,KAAK4kJ,0BAA0BryI,cAAcsrG,EAAAA,IAAgBjmI,WACrE,IAArBooB,KAAK8oL,YAAmB,CACxB,IAAIokB,EAAQltM,KAAKihI,mBAAmB1uH,cAAc,0BAClDp4B,EAAOA,EAAKwG,OAAO,GAAG0c,MAAMqC,KAAKwtM,EAAM36L,cAAcsrG,EAAAA,IAAgBjmI,WAAW+I,OAAOssN,EAC3F,CACA9yN,EAAOA,EAAKwG,OAAOktK,GAAOltK,OAAOmtK,EACrC,MAEI3zK,EAAO0zK,EAAMltK,OAAOmtK,GAAOntK,OAAOssN,EAE1C,KACK,CACD,IAAIE,EAAU,GAAG9vM,MAAMqC,KAAKM,KAAKgmJ,aAAazzI,cAAcsrG,EAAAA,IAAgBjmI,UAGxEuC,EAFA6lB,KAAKwnJ,YACLrtK,EAAO,GAAGkjB,MAAMqC,KAAKM,KAAKihI,mBAAmB1uH,cAAcsrG,EAAAA,IAAgBjmI,WAC/D+I,OAAOwsN,GAGZA,CAEf,CACA,IAAK,IAAI5+L,EAAK,EAAG6+L,EAASjzN,EAAMo0B,EAAK6+L,EAAOn1N,OAAQs2B,IAAM,CACtD,IAAI2tD,EAAMkxI,EAAO7+L,GACjB,GAAI2tD,EAAI96B,aAAa,cAAgBl1B,EAAK,CACtCkmJ,EAASl2F,EACT,KACJ,CACJ,CACA,OAAOk2F,CACX,EAMAtnB,EAAKzrI,UAAUguM,iBAAmB,WAE9B,IADA,IAAI14F,EAAO,GACFpmG,EAAK,EAAGvoB,EAAKga,KAAKu5G,YAAahrG,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAC1D,IAAI4nG,EAAMnwH,EAAGuoB,IACO,IAAhB4nG,EAAI/nH,SACJumH,EAAKl1H,KAAK02H,EAElB,CACA,OAAOxB,CACX,EAOAm2B,EAAKzrI,UAAUiuM,gCAAkC,SAAUC,GACvD,GAAIvtM,KAAK60G,cACA70G,KAAK+lJ,eAAoD,WAAnC/lJ,KAAKisJ,iBAAiBC,WAA4BlsJ,KAAK+lJ,eAAgB,CAC9F,IAAIynD,EAAW,EAKf,IAJsC,IAAlCD,EAAgBj3M,QAAQ,OACxBi3M,EAAkBruN,SAASquN,EAAiB,IAAM,IAAMvtM,KAAKhd,QAAQ6zD,cAGrE02J,EADmBvtM,KAAKytM,sBAAwBztM,KAAKyiL,eACjB,CAGpC+qB,GADgBD,EAAkBvtM,KAAKytM,uBACXztM,KAAKyiL,cACrC,CACA,GAAI+qB,EAAW,EACX,OAAO3rM,KAAKiU,MAAM03L,EAE1B,CAEJ,OAAO,CACX,EACA1iE,EAAKzrI,UAAUouM,oBAAsB,WACjC,IAAIz5J,EAAS,EAgBb,IAfKrmC,EAAAA,EAAAA,IAAkB3N,KAAKihI,mBAAmBpqF,gBAC3C7C,GAAUh0C,KAAKihI,mBAAmBpqF,cAElC72C,KAAKnS,WAAY8f,EAAAA,EAAAA,IAAkB3N,KAAKhd,QAAQuvB,cAAc,cAAcskC,gBAC5E7C,GAAUh0C,KAAKhd,QAAQuvB,cAAc,cAAcskC,cAEnD72C,KAAK60G,eAAgBlnG,EAAAA,EAAAA,IAAkB3N,KAAKhd,QAAQuvB,cAAc,gBAAgBskC,gBAClF7C,GAAUh0C,KAAKhd,QAAQuvB,cAAc,gBAAgBskC,cAErD72C,KAAKkrL,qBAAsBv9K,EAAAA,EAAAA,IAAkB3N,KAAKhd,QAAQuvB,cAAc,mBAAmBskC,gBAC3F7C,GAAUh0C,KAAKhd,QAAQuvB,cAAc,mBAAmBskC,cAExD72C,KAAKw1G,eAAiBx1G,KAAKy1G,cAAciiD,gBAAiB/pJ,EAAAA,EAAAA,IAAkB3N,KAAKhd,QAAQuvB,cAAc,oBAAoBskC,gBAC3H7C,GAAUh0C,KAAKhd,QAAQuvB,cAAc,oBAAoBskC,cAEzD72C,KAAKg8E,WAAW/jG,OAAS,KAAM01B,EAAAA,EAAAA,IAAkB3N,KAAKhd,QAAQuvB,cAAc,iBAAiBskC,cAC7F,IAAK,IAAI1xC,EAAI,EAAGA,EAAInF,KAAKhd,QAAQwhD,uBAAuB,gBAAgBvsD,OAAQktB,IAC5E6uC,GAAUh0C,KAAKhd,QAAQwhD,uBAAuB,gBAAgBtlD,SAASimB,EAAE/pB,WAAY,KAAKy7D,aAGlG,OAAO7C,CACX,EASA82F,EAAKzrI,UAAUquM,iBAAmB,SAAUC,EAAYC,GACpD,OAAOtwH,EAAAA,EAAStB,WAAW2xH,EAAWrzN,KAAK+D,eAAeuvN,EAAaD,EAAW/rN,MACtF,EAQAkpJ,EAAKzrI,UAAUwuM,kBAAoB,SAAUrnN,GACzCwZ,KAAKgpB,SAAU,EACfhpB,KAAK8tM,WAAWtnN,EACpB,EAQAskJ,EAAKzrI,UAAU0uM,gBAAkB,SAAUvnN,GACvCwZ,KAAKgpB,SAAU,EACfhpB,KAAK8tM,WAAWtnN,EACpB,EAQAskJ,EAAKzrI,UAAU2uM,gBAAkB,SAAUxnN,GACvCwZ,KAAKgpB,SAAU,EACfhpB,KAAK8tM,WAAWtnN,EACpB,EAMAskJ,EAAKzrI,UAAUyuM,WAAa,SAAUtnN,GAElC,IACI41F,EADOp8E,KACM0hH,gBAAgB7N,eAAc,GAC3C5tH,GAAQ,IAAI+5F,EAAAA,IAAazD,aAAa,IAAIqP,EAAAA,EAAY,CAAEplG,IAAK,KAAO41F,GACpEW,EAAUzgF,KAAKC,MAAMtW,EAAMJ,MAE3BooN,EAAY3xM,KAAKC,MAAMyD,KAAKotC,aAAa,CAAC,gBAAiB,cAAe,eAAgB,eAAgB,iBAAkB,mBAAoB,aAChJ,iBAAkB,gBAAiB,UAAW,SAAU,oBAG5D6gK,EAAU9kN,eAAeirH,QAAUr3B,EAAQhB,MAC3CkyH,EAAUr3F,eAAe/zH,OAASk6F,EAAQ/7E,QAAU+7E,EAAQ/7E,OAAO,GAAW,QAAK,GACnFitM,EAAUh4F,aAAa7B,QAAUr3B,EAAQ2X,OACzCu5G,EAAU75F,QAAUp0G,KAAKkuM,cAAcD,EAAU75F,QALnC,CAAC,QAAS,aAAc,OAAQ,SAAU,UAAW,kBAAmB,kBAClF,WAAY,QAAS,QAAS,YAAa,kBAAmB,YAKlE,IAAI3lD,EAAOzuD,KAAK4Q,cAAc,OAAQ,CAAEhsB,GAAI,aAAc1D,OAAQ,kBAC9DitN,EAAYnuM,KAAK4Q,cAAc,QAAS,CAAEhsB,GAAI,YAAa2xC,MAAO,CAAEn+C,KAAM,eAC9E+1N,EAAU5wN,MAAQ+e,KAAKK,UAAUsxM,GACjCx/I,EAAKv9B,OAAS,OACdu9B,EAAKxrD,OAASzc,EACdioE,EAAKt9C,YAAYg9L,GACjBvrM,SAASuuB,KAAKhgB,YAAYs9C,GAC1BA,EAAK2/I,SACL3/I,EAAK94B,QACT,EAOAm1G,EAAKzrI,UAAU6uM,cAAgB,SAAU95F,EAASi6F,GAC9C,IAAK,IAAIlpM,EAAI,EAAGA,EAAIivG,EAAQn8H,OAAQktB,IAAK,CACrC,IAAIi6D,EAASp/D,KAAK43G,eAAexD,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK8wB,KACrEkoG,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKoO,WAAa41E,EAAO51E,YACnDmkB,EAAAA,EAAAA,IAAkByxD,EAAO5oE,YAC1B49G,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKob,SAAW,QAE/C49G,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK5B,SACpC46H,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK5B,QAAS4uC,EAAAA,EAAAA,IAAgBpoB,KAAKsuM,UAAUl6F,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK5B,QAAS46H,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKd,KAAM0lB,KAAKgpB,QAAShpB,KAAK0rB,eAEtL0oF,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKg5H,SACpCp0G,KAAKkuM,cAAc95F,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKg5H,QAASi6F,GAGpE,IADA,IAAIvvN,EAAOD,OAAOC,KAAKs1H,EAAQl1H,SAASimB,EAAE/pB,WAAY,MAC7Co7B,EAAI,EAAGA,EAAI13B,EAAK7G,OAAQu+B,IACzB63L,EAAQ/3M,QAAQxX,EAAKI,SAASs3B,EAAEp7B,WAAY,MAAQ,UAC7Cg5H,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK0D,EAAKI,SAASs3B,EAAEp7B,WAAY,KAGnF,CACA,OAAOg5H,CACX,EACA02B,EAAKzrI,UAAUivM,UAAY,SAAU90N,GACjC,MAA2B,kBAAZA,GAAwBm0B,EAAAA,EAAAA,IAAkBn0B,EAAOA,QAC5CA,EAAOu/B,SAAvBv/B,EAAOA,OAA2BA,CAC1C,EAKAsxJ,EAAKzrI,UAAUihJ,uBAAyB,WAEpC,OAAiC,IAA1BtgJ,KAAoB,UAC/B,EAMA8qI,EAAKzrI,UAAUkvM,eAAiB,SAAUvvN,EAAKugN,GAC3C,IAAItxM,EAAO,CACP0tF,YAAa,OAAQ91F,KAAM05M,GAE/Bv/L,KAAK49F,cACL59F,KAAK+mB,OAAOsM,EAAAA,IAAmBplC,GAC/B+R,KAAKmrC,SACT,EAKA2/F,EAAKzrI,UAAUmvM,kBAAoB,WAC/BxuM,KAAK+6B,WACL,IAAI0zK,EAAazuM,KAAK0hH,gBAAgBjI,yBAClCg1F,EAAWz7F,WACXhzG,KAAK0hH,gBAAgBhI,uBAAuB,CAAC,GAC7C+0F,EAAWx7F,aAGXjzG,KAAK0hH,gBAAgBhI,uBAAuB,CAAEK,eAAe,KACzD/5G,KAAK6nJ,eAAiB7nJ,KAAKw1K,eAC3Bx1K,KAAKkmI,aAAa56F,SAG9B,EAMAw/F,EAAKzrI,UAAUqvM,uBAAyB,SAAU9sN,GAC9C,IAAI6uC,EAASzwB,KAAK4kI,uBAAuBhjJ,GACzC,GAAI6uC,EAAQ,CACR,IAAI0N,EAAS1N,EAAOle,cAAc,oBAC9Bo8L,EAAY3uM,KAAKhd,QAAQuvB,cAAc,mBAC3C,GAAI4rB,GAAUwwK,EAAW,CACrB,IAAIxlE,EAAUnpI,KAAKhd,QAAQkgD,wBACvBkmG,EAAUjrG,EAAO+E,wBACjByrK,IACKA,EAAUl3K,YAAc2xG,EAAQzlG,MAASwlG,EAAQxlG,MAClDgrK,EAAUp3K,MAAMmM,MAAS0lG,EAAQzlG,MAAQgrK,EAAUl3K,YAAe0xG,EAAQzlG,MAAMtoD,WAAa,KAG7FuzN,EAAUp3K,MAAMmM,MAAQ0lG,EAAQzlG,MAAQwlG,EAAQzlG,MAAMtoD,WAAa,KAG/E,CACJ,CACJ,EAOA0vJ,EAAKzrI,UAAU87G,gBAAkB,SAAUl3D,GAEvC,GADmBjkD,KAAK+6G,eAAiB/6G,KAAK+6G,cAAcC,eAAiBh7G,KAAK+6G,cAAcC,cAAclf,SAC1F97F,KAAc,QAC9BA,KAAK+6G,cAAcC,cAAuB,QAAIh7G,KAAK+6G,cAAcC,cAAuB,QACnFr6H,OAAOqf,KAAc,SAC1BA,KAAK+6G,cAAcC,cAAcG,gBAAgBl3D,GACjDjkD,KAAc,aAAI9kB,MAEjB,CAED8kB,KAAK+mB,OAAO,sBAAuB/mB,KAAiB,SACpDA,KAAK+sC,qBAAqBkX,EAC9B,CACJ,EAOA6mF,EAAKzrI,UAAUyqF,YAAc,SAAUzL,GACnCr+E,KAAK4uM,kBAAkBvwH,EAC3B,EAOAysD,EAAKzrI,UAAUwvM,iBAAmB,SAAUxwH,GACxCr+E,KAAK8uM,sBAAsBzwH,EAC/B,EACAysD,EAAKzrI,UAAUyvM,sBAAwB,SAAUzwH,GAC7C,IAAIruE,EAAQhQ,KACZ,GAAKA,KAAK+uM,gBAUN,IAFA,IAAIC,EAAa,CAACnxF,EAAAA,GAAuBA,EAAAA,GAAyBA,EAAAA,IAC9D99B,EAAW//E,KAAK24G,0BAA0B,GACrCxzG,EAAI,EAAGA,EAAI6pM,EAAW/2N,OAAQktB,IAC/Bk5E,EAAQ2wH,EAAW9vN,SAASimB,EAAE/pB,WAAY,QAC1C6zN,EAAAA,EAAAA,IAAejvM,KAAMq+E,EAAS2wH,EAAW9vN,SAASimB,EAAE/pB,WAAY,KAAM2kG,QAX9E//E,KAAK+uM,gBAAkBlwN,OAAOulB,OAAO,CAAEo6E,aAAc,GAAIE,eAAgB,GAAIH,eAAgB,IAAMF,GACnGnuE,YAAW,WACPF,EAAM4+L,kBAAkB5+L,EAAM++L,iBAC9B/+L,EAAM++L,gBAAkB,IAC5B,GAAG/uM,KAAKiqL,aAWhB,EACAn/C,EAAKzrI,UAAUuvM,kBAAoB,SAAUvwH,GACzC,IAAIruE,EAAQhQ,KACR+/E,EAAW//E,KAAK24G,0BAA0B,GAC9Ct6B,EAAUx/F,OAAOulB,OAAO,CAAEo6E,aAAc,GAAIE,eAAgB,GAAIH,eAAgB,IAAMF,GACtF,IAAIn3F,EAAU8Y,KAAK0hH,gBAAgBjmF,YAAY4iD,EAAS0B,EAAU,CAAC,EAAG//E,KAAK0hH,gBAAgB7N,gBAAgB7iB,iBACvGhxF,KAAK0hH,gBAAgBpL,WACrBpvH,EAAQC,MAAK,WACT6oB,EAAMk/L,YACV,IAGAlvM,KAAKkvM,YAEb,EACApkE,EAAKzrI,UAAU6vM,WAAa,WACxB,IAAIl/L,EAAQhQ,KACRmvM,EAAY7yM,KAAKC,MAAMD,KAAKK,UAAUqD,KAAK8jI,0BACjC9jI,KAAK0hH,gBAAgBh4B,QAAQ,CAAC,EAAG1pF,KAAK0hH,gBAAgB7N,gBAAgB7iB,iBAC5E7pG,MAAK,SAAU1L,GACnBu0B,EAAMo/L,YAAY3zN,EAAE2D,OAAQ+vN,EAAW1zN,EAAEy1E,MAC7C,GACJ,EACA45E,EAAKzrI,UAAUgwM,iBAAmB,SAAUnzI,GACxC,IAAIu+C,EAAKz6G,KAAKgtM,mBAAmB9wI,EAAIhwD,KACjCplB,EAAQ5H,SAASu7H,EAAGr5E,aAAay8E,EAAAA,IAAwB,IAE7D,IADAloF,EAAAA,EAAAA,IAAO8kF,GACHz6G,KAAKgrI,mBAAoB,CACzB,IAAIskE,EAAMtvM,KAAKutJ,iBAAiBruK,SAAS4H,EAAM1L,WAAY,MAC3Du6C,EAAAA,EAAAA,IAAO25K,EACX,CACJ,EACAxkE,EAAKzrI,UAAU+vM,YAAc,SAAUhwN,EAAQ+vN,EAAWj+I,GAatD,IAZA,IAWmBq+I,EAXfv/L,EAAQhQ,KACR0hJ,EAAS1hJ,KAAK2hJ,gBACd5hE,EAAW//E,KAAK24G,0BAA0B,GAC1CxvB,EAAU,SAAUhkF,GACf/lB,EAAOjB,QAAO,SAAU1C,GAAK,OAAOA,EAAE,GAAKskG,KAAc2hE,EAAOxiK,SAASimB,EAAE/pB,WAAY,KAAKyK,KAAK,GAAKk6F,EAAW,IAAG9nG,SACrHu3N,EAAOH,iBAAiB3tD,EAAOxiK,SAASimB,EAAE/pB,WAAY,MACtDsmK,EAAO76H,OAAO1hB,EAAG,GACjBA,KAEJoqM,EAAUpqM,CACd,EACIqqM,EAASxvM,KACJmF,EAAI,EAAGA,EAAIu8I,EAAOzpK,OAAQktB,IAC/BgkF,EAAQhkF,GACRA,EAAIoqM,EAER,IAAIE,EAAU,SAAUtqM,GACpB,IAAIuqM,EACJP,EAAUhxN,QAAO,SAAU1C,GACnBA,EAAE,GAAKskG,KAAc3gG,EAAOF,SAASimB,EAAE/pB,WAAY,KAAK,GAAK2kG,KACzDtkG,IAAM2D,EAAOF,SAASimB,EAAE/pB,WAAY,MACpC40B,EAAM2sL,WAAWv9M,EAAOF,SAASimB,EAAE/pB,WAAY,KAAK,GAAK2kG,GAAW3gG,EAAOF,SAASimB,EAAE/pB,WAAY,MAEtGs0N,GAAa,EAErB,IACKA,GACDC,EAAOC,iBAAiBxwN,EAAOF,SAASimB,EAAE/pB,WAAY,KAAM+pB,EAEpE,EACIwqM,EAAS3vM,KACb,IAASmF,EAAI,EAAGA,EAAI/lB,EAAOnH,OAAQktB,IAC/BsqM,EAAQtqM,GAEZnF,KAAKozI,gBAAkBh0J,EACvB,IAAIjF,EAAO,GAAGkjB,MAAMqC,KAAKM,KAAKwrI,kBAAkBhnG,uBAAuBq5E,EAAAA,MACvEgyF,EAAAA,EAAAA,IAAc7vM,KAAMA,KAAK2hJ,gBAAiBxnK,IAC1CuzK,EAAAA,EAAAA,IAAe1tJ,MACXA,KAAK60G,aACL70G,KAAK+mB,OAAOsM,EAAAA,IAA4B,CAAE8R,OAAQ,QAAS/O,WAAY,CAAE4lI,kBAAmB9qG,IAEpG,EACA45E,EAAKzrI,UAAUuwM,iBAAmB,SAAU/pN,EAAMiB,GAC9C,IAII8/L,EAJA1qH,EAAM,IAAIykE,EAAAA,EAAY3gI,KAAK8yG,eAAgB,KAAM9yG,MAEjDwoJ,EADQ,IAAI9E,EAAAA,EAAkB1jJ,MACZogJ,aAAa,CAACv6J,IAChC40H,EAAKv+C,EAAI5wB,OAAOk9G,EAAU,GAAIxoJ,KAAKi0G,cAGvCj0G,KAAK8vM,aAAatnD,EAAU,GAAI1hK,GAChC,IAAI2iK,EAAQzpJ,KAAKwrI,kBAAkBj5H,cAAcsrG,EAAAA,IACjD,GAAI4rC,EAAMl3I,cAAc,eAAgB,CACpC,IAAIipJ,EAAW/R,EAAMl3I,cAAc,eAEnC,GADAipJ,EAASlrJ,WAAWkoB,YAAYgjI,GAC5Bx7J,KAAKgrI,mBAAoB,CACzB,IAAI+kE,EAAY/vM,KAAKgmJ,aAAazzI,cAAc,IAAMsrG,EAAAA,IAAyBtrG,cAAcsrG,EAAAA,IAC5FkyF,EAAU93K,kBAAmB3nB,WAAWkoB,YAAYu3K,EAAU93K,kBACnE,CACJ,CACIj4B,KAAKgrI,qBACL47C,GAAMopB,EAAAA,EAAAA,IAAcv1F,EAAIz6G,KAAKgrI,mBAAoBhrI,OAC7CA,KAAKwnJ,YAAc1gK,EAAQkZ,KAAKwnJ,WACvBxnJ,KAAKihI,mBAAmB1uH,cAAc,IAAMsrG,EAAAA,IAAwBtrG,cAAcsrG,EAAAA,IAGlF79G,KAAKgmJ,aAAazzI,cAAc,IAAMsrG,EAAAA,IAAyBtrG,cAAcsrG,EAAAA,KAEnF1sG,YAAYy1K,GACC,SAAhB5mL,KAAKg0C,QACLh0C,KAAK+mB,OAAOsM,EAAAA,IAAqB,CAAC,IAItCo2H,EADAzpJ,KAAKwnJ,YAAc1gK,EAAQkZ,KAAKwnJ,WACxBxnJ,KAAKihI,mBAAmB1uH,cAAcsrG,EAAAA,IAGtC79G,KAAKgmJ,aAAazzI,cAAcsrG,EAAAA,KAE5C4rC,EAAQzpJ,KAAKgmJ,aAAazzI,cAAcsrG,EAAAA,KAClC1sG,YAAYspG,EACtB,EACAqwB,EAAKzrI,UAAUywM,aAAe,SAAU5zI,EAAKp1E,GACzC,IAAIwhK,EAAUtoJ,KAAKgrI,mBACnB,GAAIsd,EAAS,CACT,IAAIwF,EAAQ9tJ,KAAKkyK,uBACbtG,EAAO1vG,EAAIhtD,QACf08J,EAAKzpC,MAAQypC,EAAKzpC,MAAM9kI,MAAMirJ,GAC9BpsF,EAAIimE,MAAQjmE,EAAIimE,MAAM9kI,MAAM,EAAGirJ,GAC/BwF,EAAMjnI,OAAO//B,EAAO,EAAG8kL,EAC3B,CACA5rK,KAAK2hJ,gBAAgB96H,OAAO//B,EAAO,EAAGo1E,EAC1C,EAKA4uE,EAAKzrI,UAAU4wM,gCAAkC,WAE7C,IADA,IAAI91N,EAAO6lB,KAAK2hJ,gBACPx8I,EAAI,EAAG8L,EAAM92B,EAAKlC,OAAQktB,EAAI8L,EAAK9L,KACnChrB,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAKkmK,WAAannK,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAK80N,iBACG,SAAhFlwM,KAAKgtM,mBAAmB7yN,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAK8wB,KAAKqrB,MAAMuiB,QACvE3/D,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAKgT,SAAU,EAG3CjU,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAKgT,SAAU,CAGvD,EAQA08I,EAAKzrI,UAAUkmD,SAAW,SAAUhoE,GAChC,OAAIyiB,KAAKymD,oBACEtB,EAAAA,GAAmBI,SAAShoE,GAEhCA,CACX,EAMAutJ,EAAKzrI,UAAU8wM,UAAY,SAAUn8J,GAUjC,OAFIA,EAPC16D,OAAO82N,UAAUp8J,KAAoC,IAAzBA,EAAO19C,QAAQ,KAGtChd,OAAO82N,UAAUp8J,IAA2B,SAAhBh0C,KAAKg0C,OAI9Bh0C,KAAKg0C,OAHL90D,SAAS80D,EAAQ,IAHjB90D,SAAS80D,EAAQ,IAAM,IAAMh0C,KAAKhd,QAAQ6zD,YAS3D,EAKAi0F,EAAKzrI,UAAUypK,sBAAwB,WACnC,OAAO9oK,KAAKgmJ,aAAazzI,cAAc,0BAC3C,EAKAu4H,EAAKzrI,UAAU2hI,qBAAuB,WAClC,OAAOhhI,KAAKihI,mBAAmB1uH,cAAc,yBACjD,EAKAu4H,EAAKzrI,UAAUgxM,sBAAwB,WACnC,OAAOrwM,KAAK4kJ,0BAA0BryI,cAAcsrG,EAAAA,GACxD,EAKAitB,EAAKzrI,UAAUg7K,uBAAyB,WACpC,OAAOr6K,KAAK8sM,2BAA2Bv6L,cAAcsrG,EAAAA,GACzD,EAKAitB,EAAKzrI,UAAUixM,qBAAuB,WAClC,OAAOtwM,KAAK8kJ,yBAAyBvyI,cAAcsrG,EAAAA,GACvD,EAKAitB,EAAKzrI,UAAUugM,0BAA4B,WACvC,OAAO5/L,KAAK+sM,0BAA0Bx6L,cAAcsrG,EAAAA,GACxD,EAKAitB,EAAKzrI,UAAUkxM,0BAA4B,WACvC,OAAOvwM,KAAKghI,uBAAuBzuH,cAAcsrG,EAAAA,GACrD,EAKAitB,EAAKzrI,UAAUi7K,2BAA6B,WACxC,IACI7wB,EAIJ,OALUzpJ,KAAK8oK,0BAGXrf,EAAQzpJ,KAAK8oK,wBAAwBv2J,cAAcsrG,EAAAA,KAEhD4rC,CACX,EAMA3e,EAAKzrI,UAAUm1I,2BAA6B,SAAUg8D,GAC9CxwM,KAAKm8G,cACLn8G,KAAKm8G,aAAamlB,iBAAiBkvE,GAAsC,aAA1BxwM,KAAKwwI,iBAE5D,EAMA1F,EAAKzrI,UAAUo1I,yBAA2B,SAAU+7D,GAC5CxwM,KAAK8jM,YACL9jM,KAAK8jM,WAAWl0D,eAAe4gE,GAAsC,aAA1BxwM,KAAKwwI,iBAExD,EAMA1F,EAAKzrI,UAAUoxM,yBAA2B,WAClCzwM,KAAK+9G,kBACL/9G,KAAKw0I,4BAA2B,EAExC,EAMA1J,EAAKzrI,UAAUqxM,uBAAyB,WAChC1wM,KAAK+9G,kBACL/9G,KAAKy0I,0BAAyB,EAEtC,EAMA3J,EAAKzrI,UAAUq/L,yBAA2B,SAAUiS,GAGhD,IAFA,IAAIh8F,EAAO,GAEFpmG,EAAK,EAAGqiM,EADFD,EAAsB3wM,KAAKi0G,aAAej0G,KAAKu5G,YACtBhrG,EAAKqiM,EAAW34N,OAAQs2B,IAAM,CAClE,IAAI4nG,EAAMy6F,EAAWriM,GACjB4nG,EAAI/nH,SACJumH,EAAKl1H,KAAK02H,EAElB,CACA,OAAOxB,CACX,EACAm2B,EAAKzrI,UAAUsrL,uBAAyB,WAChC3qL,KAAK+0G,yBAA2B/0G,KAAKy1G,cAAcrB,QAAQn8H,SAAW+nB,KAAKy1G,cAAcunD,4BACrFh9J,KAAKy1G,cAAcC,mBACvB11G,KAAK26B,cAAc,CAAE86E,cAAe,CAAEunD,2BAA2B,KAAU,EAEnF,EAEAr9H,GAAW,EACPzB,EAAAA,EAAAA,IAAS,KACV4sG,EAAKzrI,UAAW,uBAAmB,GACtCsgC,GAAW,EACPzB,EAAAA,EAAAA,OACD4sG,EAAKzrI,UAAW,qBAAiB,GACpCsgC,GAAW,EACPzB,EAAAA,EAAAA,OACD4sG,EAAKzrI,UAAW,iBAAa,GAChCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,KACV4sG,EAAKzrI,UAAW,eAAW,GAC9BsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4sG,EAAKzrI,UAAW,oBAAgB,GACnCsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4sG,EAAKzrI,UAAW,mBAAe,GAClCsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4sG,EAAKzrI,UAAW,sBAAkB,GACrCsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4sG,EAAKzrI,UAAW,qBAAiB,GACpCsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4sG,EAAKzrI,UAAW,0BAAsB,GACzCsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4sG,EAAKzrI,UAAW,2BAAuB,GAC1CsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4sG,EAAKzrI,UAAW,qBAAiB,GACpCsgC,GAAW,EACPrB,EAAAA,EAAAA,IAAQ,CAAC,EAAGgqJ,KACbx9C,EAAKzrI,UAAW,wBAAoB,GACvCsgC,GAAW,EACPrB,EAAAA,EAAAA,IAAQ,CAAC,EAAGiqJ,KACbz9C,EAAKzrI,UAAW,sBAAkB,GACrCsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4sG,EAAKzrI,UAAW,mBAAe,GAClCsgC,GAAW,EACPrB,EAAAA,EAAAA,IAAQ,CAAC,EAAG2mI,KACbn6B,EAAKzrI,UAAW,oBAAgB,GACnCsgC,GAAW,EACPrB,EAAAA,EAAAA,IAAQ,CAAC,EAAGoqJ,KACb59C,EAAKzrI,UAAW,wBAAoB,GACvCsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4sG,EAAKzrI,UAAW,4BAAwB,GAC3CsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4sG,EAAKzrI,UAAW,4BAAwB,GAC3CsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4sG,EAAKzrI,UAAW,kCAA8B,GACjDsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4sG,EAAKzrI,UAAW,+BAA2B,GAC9CsgC,GAAW,EACPrB,EAAAA,EAAAA,IAAQ,CAAC,EAAG8pJ,KACbt9C,EAAKzrI,UAAW,sBAAkB,GACrCsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4sG,EAAKzrI,UAAW,oBAAgB,GACnCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,aACV4sG,EAAKzrI,UAAW,gBAAY,GAC/BsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4sG,EAAKzrI,UAAW,yBAAqB,GACxCsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4sG,EAAKzrI,UAAW,wBAAoB,GACvCsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4sG,EAAKzrI,UAAW,sBAAkB,GACrCsgC,GAAW,EACPrB,EAAAA,EAAAA,IAAQ,CAAC,EAAG0pJ,KACbl9C,EAAKzrI,UAAW,oBAAgB,GACnCsgC,GAAW,EACPrB,EAAAA,EAAAA,IAAQ,CAAC,EAAG2pJ,KACbn9C,EAAKzrI,UAAW,8BAA0B,GAC7CsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4sG,EAAKzrI,UAAW,sBAAkB,GACrCsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAU,IACX4sG,EAAKzrI,UAAW,wBAAoB,GACvCsgC,GAAW,EACPrB,EAAAA,EAAAA,IAAQ,CAAC,EAAG6pJ,KACbr9C,EAAKzrI,UAAW,yBAAqB,GACxCsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4sG,EAAKzrI,UAAW,sBAAkB,GACrCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,eACV4sG,EAAKzrI,UAAW,wBAAoB,GACvCsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4sG,EAAKzrI,UAAW,wBAAoB,GACvCsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4sG,EAAKzrI,UAAW,uBAAmB,GACtCsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4sG,EAAKzrI,UAAW,qBAAiB,GACpCsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4sG,EAAKzrI,UAAW,2BAAuB,GAC1CsgC,GAAW,EACPrB,EAAAA,EAAAA,IAAQ,CAAC,EAAG+pJ,KACbv9C,EAAKzrI,UAAW,uBAAmB,GACtCsgC,GAAW,EACPrB,EAAAA,EAAAA,IAAQ,CAAC,EAAG4pJ,KACbp9C,EAAKzrI,UAAW,sBAAkB,GACrCsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4sG,EAAKzrI,UAAW,qBAAiB,GACpCsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4sG,EAAKzrI,UAAW,2BAAuB,GAC1CsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4sG,EAAKzrI,UAAW,sBAAkB,GACrCsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4sG,EAAKzrI,UAAW,eAAW,GAC9BsgC,GAAW,EACPrB,EAAAA,EAAAA,IAAQ,CAAC,EAAGkqJ,KACb19C,EAAKzrI,UAAW,qBAAiB,GACpCsgC,GAAW,EACPrB,EAAAA,EAAAA,IAAQ,CAAC,EAAGmqJ,KACb39C,EAAKzrI,UAAW,oBAAgB,GACnCsgC,GAAW,EACPpB,EAAAA,EAAAA,IAAW,GAAIunJ,KAChBh7C,EAAKzrI,UAAW,kBAAc,GACjCsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4sG,EAAKzrI,UAAW,yBAAqB,GACxCsgC,GAAW,EACPrB,EAAAA,EAAAA,IAAQ,CAAC,EAAG4mI,KACbp6B,EAAKzrI,UAAW,6BAAyB,GAC5CsgC,GAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4sG,EAAKzrI,UAAW,yBAAqB,GACxCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,SACV4sG,EAAKzrI,UAAW,cAAU,GAC7BsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,SACV4sG,EAAKzrI,UAAW,aAAS,GAC5BsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,YACV4sG,EAAKzrI,UAAW,iBAAa,GAChCsgC,GAAW,EACPzB,EAAAA,EAAAA,OACD4sG,EAAKzrI,UAAW,mBAAe,GAClCsgC,GAAW,EACPzB,EAAAA,EAAAA,OACD4sG,EAAKzrI,UAAW,sBAAkB,GACrCsgC,GAAW,EACPzB,EAAAA,EAAAA,OACD4sG,EAAKzrI,UAAW,iBAAa,GAChCsgC,GAAW,EACPzB,EAAAA,EAAAA,OACD4sG,EAAKzrI,UAAW,mBAAe,GAClCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,aACV4sG,EAAKzrI,UAAW,iBAAa,GAChCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,aACV4sG,EAAKzrI,UAAW,0BAAsB,GACzCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,KACV4sG,EAAKzrI,UAAW,kBAAc,GACjCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,OACV4sG,EAAKzrI,UAAW,iBAAa,GAChCsgC,GAAW,EACPzB,EAAAA,EAAAA,OACD4sG,EAAKzrI,UAAW,aAAS,GAC5BsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,QACV4sG,EAAKzrI,UAAW,oBAAgB,GACnCsgC,GAAW,EACPzB,EAAAA,EAAAA,OACD4sG,EAAKzrI,UAAW,eAAW,GAC9BsgC,GAAW,EACPzB,EAAAA,EAAAA,OACD4sG,EAAKzrI,UAAW,wBAAoB,GACvCsgC,GAAW,EACPzB,EAAAA,EAAAA,OACD4sG,EAAKzrI,UAAW,uBAAmB,GACtCsgC,GAAW,EACPzB,EAAAA,EAAAA,OACD4sG,EAAKzrI,UAAW,uBAAmB,GACtCsgC,GAAW,EACPzB,EAAAA,EAAAA,OACD4sG,EAAKzrI,UAAW,qBAAiB,GACpCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,IACV4sG,EAAKzrI,UAAW,kBAAc,GACjCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,IACV4sG,EAAKzrI,UAAW,qBAAiB,GACpCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,KACV4sG,EAAKzrI,UAAW,gBAAY,GAC/BsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,QACV4sG,EAAKzrI,UAAW,uBAAmB,GACtCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,CAAC,IACX4sG,EAAKzrI,UAAW,qBAAiB,GACpCsgC,GAAW,EACPzB,EAAAA,EAAAA,IAAS,YACV4sG,EAAKzrI,UAAW,kCAA8B,GACjDsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,eAAW,GAC9BsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,iBAAa,GAChCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,YAAQ,GAC3BsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,oBAAgB,GACnCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,qBAAiB,GACpCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,sBAAkB,GACrCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,mBAAe,GAClCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,sBAAkB,GACrCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,qBAAiB,GACpCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,iBAAa,GAChCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,yBAAqB,GACxCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,mBAAe,GAClCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,oBAAgB,GACnCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,mBAAe,GAClCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,sBAAkB,GACrCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,qBAAiB,GACpCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,qBAAiB,GACpCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,oBAAgB,GACnCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,uBAAmB,GACtCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,sBAAkB,GACrCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,uBAAmB,GACtCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,sBAAkB,GACrCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,yBAAqB,GACxCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,wBAAoB,GACvCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,uBAAmB,GACtCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,kBAAc,GACjCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,kBAAc,GACjCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,qBAAiB,GACpCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,mBAAe,GAClCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,wBAAoB,GACvCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,8BAA0B,GAC7CsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,iCAA6B,GAChDsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,mCAA+B,GAClDsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,6BAAyB,GAC5CsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,0BAAsB,GACzCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,gCAA4B,GAC/CsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,yBAAqB,GACxCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,2BAAuB,GAC1CsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,uBAAmB,GACtCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,yBAAqB,GACxCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,0BAAsB,GACzCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,uBAAmB,GACtCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,oBAAgB,GACnCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,eAAW,GAC9BsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,eAAW,GAC9BsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,oBAAgB,GACnCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,+BAA2B,GAC9CsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,gCAA4B,GAC/CsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,gBAAY,GAC/BsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,mBAAe,GAClCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,mBAAe,GAClCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,sBAAkB,GACrCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,yBAAqB,GACxCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,uBAAmB,GACtCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,iBAAa,GAChCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,oBAAgB,GACnCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,gBAAY,GAC/BsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,gBAAY,GAC/BsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,iBAAa,GAChCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,mBAAe,GAClCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,gBAAY,GAC/BsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,kBAAc,GACjCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,kBAAc,GACjCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,uBAAmB,GACtCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,uBAAmB,GACtCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,wBAAoB,GACvCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,sBAAkB,GACrCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,uBAAmB,GACtCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,sBAAkB,GACrCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,kBAAc,GACjCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,mBAAe,GAClCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,sBAAkB,GACrCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,6BAAyB,GAC5CsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,uBAAmB,GACtCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,yBAAqB,GACxCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,0BAAsB,GACzCsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,2BAAuB,GAC1CsgC,GAAW,EACPnwB,EAAAA,EAAAA,OACDs7H,EAAKzrI,UAAW,6BAAyB,GAC5CyrI,EAAOs/C,EAASzqJ,GAAW,CACvBhB,EAAAA,IACDmsG,EAEP,CAvgM0B,CAugMxBzgG,EAAAA,uxBCp6MK,IAAIuoI,EAAU,YAEV+iB,EAAa,eAEbC,EAAc,gBAEdC,EAAa,eAEbgb,EAAgB,kBAEhBp8C,EAAiB,mBAEjBq8C,EAAgB,kBAEhBC,EAAgB,kBAEhBC,EAAe,iBAEfzqJ,EAAU,YAEV+O,EAAQ,UAER4G,EAAM,QAEN+0I,EAAa,eAEbC,EAAY,cAEZC,EAAW,aAKXzyH,EAAiB,iBAEjBF,EAAe,eAEfD,EAAiB,iBAEjB6yH,EAAY,aAEZhU,EAAc,eAEdD,EAAa,cAEbkU,EAAe,gBAEfC,EAAe,gBAEfC,EAAe,gBAEfC,EAAe,gBAEf/nD,EAAQ,QAERpsB,EAAW,WAEX98I,EAAO,OAEP/E,EAAS,SAETi2B,EAAQ,QAERvR,EAAS,o0DChDb,SAASuxM,EAAuBtzK,EAAQuzK,GAE3C,OAAOvzK,EAAO9+B,WAAaqyM,KAAYvzK,EAAO9+B,SAClD,CAWO,SAAS8jJ,EAAcvhK,EAAOiE,EAAMu5E,GACvC,OAAQzxD,EAAAA,EAAAA,IAAkB/rB,IAAoB,KAAVA,EAAgB,GAAK07F,EAAAA,EAASrhD,UAAUr6C,EAAOiE,EACvF,CAqBO,SAAS8lK,EAAkBgmD,EAAgB1tJ,GAC9C9hB,uBAAsB,WAClB,IACI8hB,EAAS,KAAM0tJ,IACnB,CACA,MAAOl2N,GACHwoE,EAASxoE,EACb,CACJ,GACJ,CAMO,SAASm2N,EAAgBC,GAC5B,QAAQlkM,EAAAA,EAAAA,IAAkBkkM,MACrBlkM,EAAAA,EAAAA,IAAkBkkM,EAAiBz9F,UAAYy9F,EAAiBz9F,QAAQn8H,OAAS,CAC1F,CAOO,SAAS65N,EAAiCD,EAAkBl+F,GAG/D,IAFA,IAAIo+F,EAAgBF,EAAiBz9F,QACjC+nD,EAAcxoD,EAAKS,QACdjvG,EAAI,EAAGA,EAAI4sM,EAAc95N,OAAQktB,IACtC,GAAIg3J,EAAYlkL,OAAS,GAAKktB,EAC1B,GAAIg3J,EAAYj9K,SAASimB,EAAE/pB,WAAY,KAAKg5H,QACxC,IAAK,IAAI59F,EAAI,EAAGA,EAAI2lJ,EAAYj9K,SAASimB,EAAE/pB,WAAY,KAAKg5H,QAAQn8H,OAAQu+B,IACxEu7L,EAAc7yN,SAASimB,EAAE/pB,WAAY,KAAKg5H,QAAQl1H,SAASs3B,EAAEp7B,WAAY,KACpEd,KAAO6hL,EAAYj9K,SAASimB,EAAE/pB,WAAY,KAAKg5H,QAAQl1H,SAASs3B,EAAEp7B,WAAY,KAAKd,UAI5Fy3N,EAAc7yN,SAASimB,EAAE/pB,WAAY,KAAKd,KAAO6hL,EAAYj9K,SAASimB,EAAE/pB,WAAY,KAAKd,IAIzG,CAqGO,SAASonM,EAAqB7lH,EAAYsoB,GAE7C,IADA,IAAI/kG,EAAS,GACJ+lB,EAAI,EAAG8L,EAAM4qD,EAAW5jF,OAAQktB,EAAI8L,EAAK9L,IAAK,CACnD,IAAIusF,EAAOvN,EAAUtoB,EAAW38E,SAASimB,EAAE/pB,WAAY,KAAM+pB,IACxDwI,EAAAA,EAAAA,IAAkB+jF,IACnBtyG,EAAOK,KAAKiyG,EAEpB,CACA,OAAOtyG,CACX,CAMO,SAAS4uJ,EAAc7uE,GAE1B,IADA,IAAI7xD,EAAM,GACDnI,EAAI,EAAGA,EAAIg6D,EAAMlnF,OAAQktB,IAC9BmI,EAAI7tB,MAAKuyN,EAAAA,EAAAA,IAAW,CAAC,EAAGzkK,EAAoB4xB,EAAMjgF,SAASimB,EAAE/pB,WAAY,MAAO,CAAC,GAAG,IAExF,OAAOkyB,CACX,CAMO,SAAS0tF,EAAiBxkG,GAC7B,GAAIA,EACA,IACI,IAAIy7M,EAAgC,MAAhBz7M,EAAS,GAC7B,MAAwB,oBAAbA,GACA07M,EAAAA,EAAAA,IAAqB17M,GAEvBy7M,GAAiBrvM,SAASkO,iBAAiBta,GAAUve,QACnDi6N,EAAAA,EAAAA,IAAqBtvM,SAAS2P,cAAc/b,GAAU+a,UAAU0pC,SAGhEi3J,EAAAA,EAAAA,IAAqB17M,EAEpC,CACA,MAAO/a,GACH,OAAOy2N,EAAAA,EAAAA,IAAqB17M,EAChC,CAGR,CAOO,SAAS0iK,EAAsBziH,EAAMwiH,GACxC,IAAIk5C,EAAW,CAAC,EACZt0F,EAAW,CAAC,QAAS,UAEzBm0F,EAAAA,EAAAA,IAAWG,EAAUl5C,EAAkB,CAAC,GACpC,UAAWk5C,KACX54K,EAAAA,EAAAA,IAAkBkd,EAAM07J,EAASt0F,EAAS,YACnCs0F,EAASt0F,EAAS,KAEzB,UAAWs0F,KACX17K,EAAAA,EAAAA,IAAS,CAACggB,GAAO07J,EAASt0F,EAAS,YAC5Bs0F,EAASt0F,EAAS,MAE7BrnF,EAAAA,EAAAA,IAAWigB,EAAM07J,EACrB,CASO,SAASxjM,EAAOC,EAAQ9H,EAAO+H,EAAQujM,GAG1C,IAFA,IAAI/yJ,GAAQ2yJ,EAAAA,EAAAA,IAAWpjM,EAAQ9H,EAAO+H,GAClCpwB,EAASI,OAAOC,KAAKugE,GAChBl6C,EAAI,EAAGA,EAAI1mB,EAAOxG,OAAQktB,IAC3BitM,IAAoE,IAAzDA,EAAQ97M,QAAQ7X,EAAOS,SAASimB,EAAE/pB,WAAY,cAClDikE,EAAM5gE,EAAOS,SAASimB,EAAE/pB,WAAY,MAGnD,OAAOikE,CACX,CAOO,SAAS61I,EAAe37E,EAAa84F,QAC5B,IAARA,IAAkBA,EAAM,GAC5B,IAAK,IAAIltM,EAAI,EAAG8L,EAAMsoG,EAAYthI,OAAQktB,EAAI8L,EAAK9L,IAC3Co0G,EAAYr6H,SAASimB,EAAE/pB,WAAY,KAAKg5H,SACxCmF,EAAYr6H,SAASimB,EAAE/pB,WAAY,KAAK0L,OAAQ6mB,EAAAA,EAAAA,IAAkB4rG,EAAYr6H,SAASimB,EAAE/pB,WAAY,KAAK0L,OAASurN,EAC7G94F,EAAYr6H,SAASimB,EAAE/pB,WAAY,KAAK0L,MAC9CurN,IACAA,EAAMnd,EAAe37E,EAAYr6H,SAASimB,EAAE/pB,WAAY,KAAKg5H,QAASi+F,KAGtE94F,EAAYr6H,SAASimB,EAAE/pB,WAAY,KAAK0L,OAAQ6mB,EAAAA,EAAAA,IAAkB4rG,EAAYr6H,SAASimB,EAAE/pB,WAAY,KAAK0L,OAASurN,EAC7G94F,EAAYr6H,SAASimB,EAAE/pB,WAAY,KAAK0L,MAC9CurN,KAGR,OAAOA,CACX,CAQO,SAASpzC,EAAe7qD,EAASk+F,EAAW3+F,GAC/C,IAAK,IAAI19F,EAAI,EAAGhF,EAAMmjG,EAAQn8H,OAAQg+B,EAAIhF,EAAKgF,IAAK,CAChD,IAAImpD,OAAS,EACsC,kBAAxCg1C,EAAQl1H,SAAS+2B,EAAE76B,WAAY,KACtCgkF,EAAS,IAAIm/F,EAAAA,GAAO,CAAE38K,MAAOwyH,EAAQl1H,SAAS+2B,EAAE76B,WAAY,MAAQu4H,GAE7DS,EAAQl1H,SAAS+2B,EAAE76B,WAAY,eAAgBmjL,EAAAA,KAAWnqD,EAAQl1H,SAAS+2B,EAAE76B,WAAY,KAAKg5H,QAUrGh1C,EAASg1C,EAAQl1H,SAAS+2B,EAAE76B,WAAY,KATnCg5H,EAAQl1H,SAAS+2B,EAAE76B,WAAY,KAAKg5H,SAIrCA,EAAQl1H,SAAS+2B,EAAE76B,WAAY,KAAKg5H,QAAU6qD,EAAe7qD,EAAQl1H,SAAS+2B,EAAE76B,WAAY,KAAKg5H,QAAS,KAAMT,GAChHv0C,EAAS,IAAIm/F,EAAAA,GAAOnqD,EAAQl1H,SAAS+2B,EAAE76B,WAAY,KAAMu4H,IAJzDv0C,EAAS,IAAIm/F,EAAAA,GAAOnqD,EAAQl1H,SAAS+2B,EAAE76B,WAAY,KAAMu4H,GAU7Dv0C,EAAO9kF,MAAsC,aAA9B8kF,EAAO9kF,KAAK+D,gBAC3B+gF,EAAOszF,iBAAkB,GAE7BtzF,EAAO51E,YAAamkB,EAAAA,EAAAA,IAAkByxD,EAAO51E,YAAc41E,EAAO43C,iBAAmB53C,EAAOx9E,OAAS,GAAKw9E,EAAO51E,WACjH41E,EAAOmzI,gBAAkBnzI,EAAOmzI,iBAAmBnzI,EAAOx9E,MAC1Dw9E,EAAO+jF,eAAiD,kBAAzB/jF,EAAO+jF,eAA6B/1I,EAAAA,EAAAA,IAASgyD,EAAO+jF,cAAe7iK,QAC5F8+E,EAAO+jF,gBAAkBA,EAC/B/jF,EAAOrrB,MAAQu+J,IAAa3kM,EAAAA,EAAAA,IAAkByxD,EAAOrrB,OAAS,IAAMqrB,EAAOrrB,OACvEpmC,EAAAA,EAAAA,IAAkByxD,EAAOhxE,WACzBgxE,EAAOhxE,SAAU,GAErBgmH,EAAQl1H,SAAS+2B,EAAE76B,WAAY,KAAOgkF,CAC1C,CACA,OAAOg1C,CACX,CAQO,SAASo7B,EAAkBgjE,EAAO/2N,EAAGR,GACxC,IAAIw3N,EAAYD,EAAMjgM,cAAc,QAChC4/B,EAAWqgK,EAAMv5J,cAAc/V,wBAC/B62F,EAAiBt+I,EAAE0iD,OAAO+E,wBAC9BuvK,EAAUx3N,UAAYA,EACtBu3N,EAAMj7K,MAAMuiB,QAAU,GACtB,IAAI44J,IAAgB/kM,EAAAA,EAAAA,IAAkBlyB,EAAEu1D,SAAWv1D,EAAEk1D,eAAe,GAAGK,QACnEv1D,EAAEu1D,SAAWwhK,EAAMv+J,aAAe,GACtCu+J,EAAMj7K,MAAMqM,IAAMm2F,EAAen2F,IAAMuO,EAASvO,KAC3C8uK,IAAiBF,EAAMv+J,aAAe,IAAMu+J,EAAMv+J,aAAe,IAAM,KAC5Eu+J,EAAMj7K,MAAMmM,KAqBhB,SAA8B6kC,EAAO9sF,EAAGs+I,EAAgBr2F,GACpD,IAAIqQ,EAAQw0B,EAAM9wC,YAAc,EAC5B7K,EAAI0mJ,EAAY73L,GAAGmxC,EACvB,OAAIA,EAAImtG,EAAer2F,KAAOqQ,EACnBgmF,EAAer2F,KAAOA,EAExBq2F,EAAep2F,MAAQ/W,EAAImnB,EACzBgmF,EAAep2F,MAAQD,EAAe,EAARqQ,EAG9BnnB,EAAI8W,EAAOqQ,CAE1B,CAjCuB4+J,CAAqBH,EAAO/2N,EAAGs+I,EAAgB5nF,EAASzO,MAAQ,KAC/EgvK,GACAF,EAAMjgM,cAAc,eAAeglB,MAAMuiB,QAAU,GACnD04J,EAAMjgM,cAAc,aAAaglB,MAAMuiB,QAAU,SAGjD04J,EAAMjgM,cAAc,eAAeglB,MAAMuiB,QAAU,OACnD04J,EAAMjgM,cAAc,aAAaglB,MAAMuiB,QAAU,GAEzD,CA8BO,SAASvM,EAAoBjgC,GAChC,OAAIA,aAAe44B,EAAAA,IACR94B,EAAAA,EAAAA,IAAS,aAAcE,GAGvBA,CAEf,CAQO,SAASq4G,EAAarzG,EAAMqmB,EAAUi6K,GAEzC,IADA,IAAIviM,EAASiC,EACNjC,KACCuiM,EAAOviM,EAAOzrB,KAAO+zC,EAAWtoB,EAAOumB,UAAUM,SAASyB,KAG9DtoB,EAASA,EAAO4oC,cAEpB,OAAO5oC,CACX,CAOO,SAASwiM,EAAgB7vN,EAAS0zC,GAErC,IADA,IAAI5vC,GAAS,EACJqe,EAAI,EAAG8L,EAAMylB,EAASz+C,OAAQktB,EAAI8L,EAAK9L,IAC5C,GAAIuxB,EAASx3C,SAASimB,EAAE/pB,WAAY,KAAKohM,YAAYx5L,GAAU,CAC3D8D,EAAQqe,EACR,KACJ,CAEJ,OAAOre,CACX,CAOO,SAASgsN,EAAQv1N,EAAOs+E,GAC3B,IAAK,IAAI12D,EAAI,EAAG8L,EAAM4qD,EAAW5jF,OAAQktB,EAAI8L,EAAK9L,IAC9C,GAAI02D,EAAW38E,SAASimB,EAAE/pB,WAAY,OAASmC,EAC3C,OAAO4nB,EAGf,OAAQ,CACZ,CAMO,SAAS8gI,EAAsBpqE,GAElC,IADA,IAAIk3I,EAAO,GACF5tM,EAAI,EAAG8L,EAAM4qD,EAAW5jF,OAAQktB,EAAI8L,EAAK9L,IAE1C02D,EAAW38E,SAASimB,EAAE/pB,WAAY,KAAKq0B,eAAe,cACtDsjM,EAAKtzN,KAAKo8E,EAAW38E,SAASimB,EAAE/pB,WAAY,KAAKg7C,YAGjD28K,EAAKtzN,KAAKo8E,EAAW38E,SAASimB,EAAE/pB,WAAY,MAGpD,OAAO23N,CACX,CAkBO,SAASz/B,EAAY73L,GACxB,IAAI02D,EAAW,CAAC,EAKhB,OAJAA,EAASvlB,GAAKjf,EAAAA,EAAAA,IAAkBlyB,EAAEs1D,SAAWt1D,EAAEk1D,eAAe,GAAGI,QAC7Dt1D,EAAEs1D,QACNoB,EAASj+C,GAAKyZ,EAAAA,EAAAA,IAAkBlyB,EAAEu1D,SAAWv1D,EAAEk1D,eAAe,GAAGK,QAC7Dv1D,EAAEu1D,QACCmB,CACX,CACA,IAAIjmC,EAAM,EAMH,SAAS+2I,EAAO/hI,GACnB,OAAOA,EAAShV,GACpB,CAOO,SAASkvG,EAAe9oG,EAAM16B,GACjC,IAAK,IAAIutB,EAAI,EAAG8L,EAAMr5B,EAASK,OAAQktB,EAAI8L,EAAK9L,IACxC8L,IAAQr5B,EAASK,OACjBq6B,EAAKnB,YAAYv5B,EAASsH,SAASimB,EAAE/pB,WAAY,MAGjDk3B,EAAKnB,YAAYv5B,EAAS,IAGlC,OAAO06B,CACX,CA2BO,SAAS0gM,EAAmB14N,EAAMuL,EAAMu5E,EAAQt+E,GACnD,GAAa,WAATxG,EAAmB,CACnB,IAAIykC,EAAOqgD,EAAOkhG,gBAIlB,MAHoB,kBAATvhJ,IACPA,GAAO3R,EAAAA,EAAAA,IAAS2R,EAAMz+B,SAEnBy+B,EAAOA,EAAKrf,KAAK5e,EAAS+E,EAAMu5E,GAAU,EACrD,CACA,OAAQA,EAAOx9E,SAASiE,GAAQA,aAAgB4oB,MAAS6uE,EAAAA,EAAStB,WAAW1hG,EAAK+D,eAAewH,EAAMu5E,EAAOx9E,OAAS,IAC3H,CAEA,IAiBIyzK,EAwpBOu3C,EAzqBPz8J,EAAc,KAIX,SAASqyI,IACZ,GAAoB,OAAhBryI,EACA,OAAOA,EAEX,IACI5yD,EADA01N,EAAUrwM,SAASgO,cAAc,OAMrC,OAJAqiM,EAAQ17K,MAAMixK,QAAU,8EACxB5lM,SAASuuB,KAAKhgB,YAAY8hM,GAC1B11N,EAAS01N,EAAQx7K,YAAcw7K,EAAQx6J,YAAe,EACtD71C,SAASuuB,KAAKqH,YAAYy6K,GACnB9iK,EAAc5yD,CACzB,CAQO,SAASklM,EAAaz/L,GACzB,QAAkB9H,IAAdm6K,EACA,OAAOA,EAEX,IAAI//F,GAAQ1kD,EAAAA,EAAAA,IAAc,QAAS,CAAE31B,UAAW4iI,EAAAA,GAAgB38H,OAAQ,qBAAsBq1C,MAAO,CAAEi0B,KAAM,UAC7G8K,EAAM/jD,UAAY,uCAClBvuB,EAAQmuB,YAAYmkD,GACpB,IAAI/gB,EAAO+gB,EAAM/iD,cAAc,MAAM2wB,wBAGrC,OAFAlgD,EAAQw1C,YAAY88B,GACpB+/F,EAAYxzJ,KAAKyf,KAAKizB,EAAKP,OAE/B,CAwBO,SAASsmF,EAAe14I,GAC3B,OAAOA,EAAMqS,MAAM,KAAKhc,OAAS,CACrC,CAMO,SAASuiJ,EAAkB54I,GAE9B,YADc,IAAVA,IAAoBA,EAAQ,IACzBA,EAAM6U,QAAQ,MAAO,MAChC,CAkDO,SAASyxH,EAAgB11G,GAC5B,IAAIo1G,GAAMlvF,EAAAA,EAAAA,IAAO,IAAMlmB,EAAKxvB,QAAQ4B,GAAK,cAAe4tB,EAAKxvB,SAC7D,MAAkC,UAA3BwvB,EAAK0gI,aAAa9pJ,OACpB0vC,EAAAA,EAAAA,IAAU,eAAgBtmB,EAAKxvB,SAAS/K,QAAWu6B,EAAK0gI,aAAaggE,qBACrEtrF,GAAMA,EAAIhxF,UAAUM,SAAS,iBACtC,CAQO,SAASm0B,EAAK/4C,EAAMrP,GACvB,IAAIkwM,EAAS,SACb7gM,EAAOA,aAAgB7D,MAAQ6D,EAAO,CAACA,GACvC,IAAK,IAAInN,EAAI,EAAGA,EAAImN,EAAKr6B,OAAQktB,IACzBlC,EACAqP,EAAKpzB,SAASimB,EAAE/pB,WAAY,KAAKw7C,UAAUzB,IAAIg+K,GAG/C7gM,EAAKpzB,SAASimB,EAAE/pB,WAAY,KAAKw7C,UAAUjB,OAAOw9K,EAG9D,CAOO,SAASn6F,EAAalG,EAAgB1zC,GACzC,IAEInxE,EAFA8vK,EAAOjrD,EAAe0R,WAAW,kBASrC,OANoB,SAAhBplD,EAAO9kF,MAAmC,aAAhB8kF,EAAO9kF,MAAuC,aAAhB8kF,EAAO9kF,OAC/D2T,EAAO,CAAE3T,KAAsB,aAAhB8kF,EAAO9kF,KAAsB,OAAS8kF,EAAO9kF,KAAMy+B,SAAUqmD,EAAO5lF,QACnD,kBAAnB4lF,EAAO5lF,QAA2C,QAAlB4lF,EAAO5lF,SAChDyU,EAAgB,OAAImxE,EAAO5lF,SAG3B4lF,EAAO9kF,MACX,IAAK,OAIL,IAAK,WAIL,IAAK,WACD8kF,EAAO45C,aAAa+kD,EAAKG,kBAAkBjwK,IAC3CmxE,EAAO++F,UAAUJ,EAAKK,kBAAkBnwK,IACxC,MACJ,IAAK,SACDmxE,EAAO45C,aAAa+kD,EAAKG,kBAAkB,CAAE1kL,OAAQ4lF,EAAO5lF,UAC5D4lF,EAAO++F,UAAUJ,EAAKK,kBAAkB,CAAE5kL,OAAQ4lF,EAAO5lF,UAGrE,CAQO,SAASklM,EAAuBv8C,EAAOhtG,GAE1C,IADA,IAAIlnC,EAAO,GACFsgB,EAAK,EAAGA,EAAKlQ,UAAUpmB,OAAQs2B,IACpCtgB,EAAKsgB,EAAK,GAAKlQ,UAAUkQ,GAE7B,IAAK,IAAIpJ,EAAI,EAAG8L,EAAMkxH,EAAMlqJ,OAAQktB,EAAI8L,EAAK9L,IACrCgwB,IACAyB,EAAAA,EAAAA,IAAUurG,EAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAM6S,EAAKoP,QAAS,IAC3D8kI,EAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAKk7C,aAAa,gBAAiB,WAGhEM,EAAAA,EAAAA,IAAUurG,EAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAM,GAAI6S,EAAKoP,SACtD8kI,EAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAK8lD,gBAAgB,iBAG9D,CAMO,SAAS69F,EAAqB3/I,GAGjC,IAFA,IAAI2/B,EAAO,CAAC,EACRxsB,EAAM,GACD4S,EAAI,EAAGA,EAAI/lB,EAAOnH,OAAQktB,IACzB/lB,EAAOF,SAASimB,EAAE/pB,WAAY,OAAQ2jC,IACxCxsB,EAAI9S,KAAKL,EAAOF,SAASimB,EAAE/pB,WAAY,KAAKA,YAC5C2jC,EAAK3/B,EAAOF,SAASimB,EAAE/pB,WAAY,MAAQ,GAGnD,OAAOmX,CACX,CAOO,SAASwzH,EAAqB5nF,EAAQg/E,GACzC,IAAIi2F,EAAiBj2F,EAAUn6H,QAAQu0C,MAAMuiB,QAC7CqjE,EAAUn6H,QAAQu0C,MAAMuiB,QAAU,QAClC,IAAIu5J,EAAWl2F,EAAUppE,MACrBu/J,GAASC,EAAAA,EAAAA,GAA+Bp1K,EAAQg/E,EAAUn6H,SAC9Dm6H,EAAUn6H,QAAQu0C,MAAMuiB,QAAUs5J,EAClCj2F,EAAUn6H,QAAQu0C,MAAMqM,IAAO0vK,EAAO1vK,IAAMzF,EAAO+E,wBAAwB8Q,OAAU,EAAI,KACzF,IAAIgmF,EAAYs5E,EAAO5vK,KAAO2vK,EAAYl1K,EAAOsa,YAE7C0kE,EAAUn6H,QAAQu0C,MAAMmM,KADxBs2F,EAAU,EACsBq5E,EAAWr5E,EAAW,GAAK,KAG5BA,GAAW,EAAI,IAEtD,CAQO,SAAShX,EAAqB/0H,EAAMkvH,GACvClvH,EAAKs6E,MAAMvlF,QAAQu0C,MAAMu9B,QAAUqoD,EAAUroD,OAAS,GAAG15E,UAC7D,CAMO,SAASo4N,EAAelhM,GAC3B,IAAIu0C,EAAOv0C,EAAKC,cAAc,YAC1BzZ,EAAQ+tD,EAAKukD,gBACbvkD,EAAKjwB,UAAUM,SAAS,YACxBp+B,EAAMnd,SAAU,GAChBi7C,EAAAA,EAAAA,IAAUiwB,EAAM,CAAC,aAAc,CAAC,cAGhC/tD,EAAMnd,SAAU,GAChBi7C,EAAAA,EAAAA,IAAUiwB,EAAM,CAAC,WAAY,CAAC,cAEtC,CAOO,SAASonH,EAAW37J,EAAM32B,GAC7B22B,EAAK32B,QAAUA,CACnB,CAQO,SAAS83N,EAAmBvnM,EAAKoG,EAAMr3B,GAC1C,IAAI01B,GAAMC,EAAAA,EAAAA,IAAc,MAAO,CAAE31B,UAAWA,IAG5C,OAFA01B,EAAIQ,YAAYmB,GAChB3B,EAAI2lB,aAAa,MAAOpqB,GACjByE,CACX,CAOO,SAASq9J,EAAqB17J,EAAM32B,IACvCw7C,EAAAA,EAAAA,IAAY,CAAC7kB,GAAO,CAAC,UAAW,SAAU,cACtC32B,EACA22B,EAAKskB,UAAUzB,IAAI,WAGnB7iB,EAAKskB,UAAUzB,IAAI,YAE3B,CAUO,SAAS6sK,EAAmB9lI,EAAKk4C,EAASvuH,GAC7C,IAAK,IAAIsf,EAAI,EAAGA,EAAIivG,EAAQn8H,OAAQktB,KAChCnjB,EAAAA,EAAAA,IAASoyH,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKwG,MAAOwhK,GAAehvC,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAMyK,GAAOq2E,EAAIw8C,gBAEvH,IAAIypB,EAAQjmE,EAAIimE,MAChB,IAASh9H,EAAI,EAAGA,EAAIg9H,EAAMlqJ,OAAQktB,IAC1Bg9H,EAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAKs7H,eAClC10H,EAAAA,EAAAA,IAAS,kBAAkBorB,EAAAA,EAAAA,IAAS+0H,EAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAKgkF,OAAOx9E,MAAOs6E,EAAIw8C,gBAAiBypB,EAAMjjJ,SAASimB,EAAE/pB,WAAY,KAGlJ,CAWO,SAASgoK,GAAehkF,EAAQv5E,EAAM6tN,EAAQh7F,GACjD,IAAIi7F,EAASv0I,EAAOmzI,gBAChBvzN,GAAQ2uB,EAAAA,EAAAA,IAAkB+lM,GAAmBvwD,EAAc/jF,EAAOx9E,MAAOiE,GAArC6tN,EACxC10N,GAAM2uB,EAAAA,EAAAA,IAAkB3uB,GAAO,GAAKA,EACpC,IAAIo9F,EAAQ,IAAI4B,EAAAA,EACZ41H,EAAQl7F,IAAoBt5C,EAAO/lF,sBAAsBuyG,EAAAA,GAAgBxsB,EAAO/lF,WAAWA,WAAWqjG,KAAKzkG,OAC3GmnF,EAAO/lF,WAAWA,WAAWqjG,KAAOtd,EAAOk5C,YAO/C,OANIt5H,EAAIy7B,OACJ2hE,EAAML,MAAMkkF,GAAiB,CAAEr+K,MAAO+xN,EAAQ/yH,SAAU,QAASrjG,MAAOyB,EAAKkuG,WAAW,KAGxF9Q,EAAML,MAAM43H,EAAQ,KAAM30N,GAAK,GAE5B,IAAI4sG,EAAAA,EAAYgoH,GAAOvmH,aAAajR,EAC/C,CASO,SAASi8B,GAA2BrB,EAAiB5C,GACxD,IAAIh1C,EACJ,OAAOg1C,EAAQzsG,MAAK,SAAUwuG,GAE1B,OADA/2C,EAAS+2C,EACFA,EAAIa,kBAAoBA,CACnC,KAAM53C,CACV,CAMO,SAASy0I,GAAQt2N,GACpB,OAAIA,EAAQ,GACD,IAAMA,EAEVisD,OAAOjsD,EAClB,CAQO,SAAS0iL,GAAiB6zC,EAAcx5N,EAAMy5N,GACjD,IAAIC,EACAhmI,EACAimI,EACAC,GAAUlC,EAAAA,EAAAA,IAAW,CAAC,EAAGzkK,EAAoBumK,IAC7CK,GAAUnC,EAAAA,EAAAA,IAAW,CAAC,EAAGzkK,EAAoBumK,IACjD,IAAInmM,EAAAA,EAAAA,IAAkBmmM,EAAav2N,QAAiC,KAAvBu2N,EAAav2N,MAEtD,OADAy2N,EAAgB,IAAI/wH,EAAAA,EAAUixH,EAAQtyN,MAAOsyN,EAAQtzH,SAAUszH,EAAQ32N,OAAO,GAGlF,IAAIA,EAAQ,IAAI+B,KAAKw0N,EAAav2N,OAClC,GAAa,aAATjD,GAAwBy5N,EASxB,GAA8B,UAA1BD,EAAalzH,UAAkD,aAA1BkzH,EAAalzH,SAAyB,CAC9D,aAATtmG,GACA0zF,EAAW,IAAI1uF,KAAK/B,EAAMgyE,WAAWhyE,EAAMiyE,aAAe,IAC1DykJ,EAAW,IAAI30N,KAAK/B,EAAMgyE,WAAWhyE,EAAMiyE,aAAe,IAC1DskJ,EAAav2N,MAAQ,IAAI+B,KAAK/B,EAAMgyE,WAAW0kJ,EAASzkJ,aAAe,MAGvEwe,EAAW,IAAI1uF,KAAK/B,EAAM6mC,SAAS,GAAK,GACxC6vL,EAAW,IAAI30N,KAAK/B,EAAM6mC,SAAS,MAEvC8vL,EAAQ32N,MAAQywF,EAChBmmI,EAAQ52N,MAAQ02N,EACc,UAA1BH,EAAalzH,UACbszH,EAAQtzH,SAAW,cACnBuzH,EAAQvzH,SAAW,YAEY,aAA1BkzH,EAAalzH,WAClBszH,EAAQtzH,SAAW,kBACnBuzH,EAAQvzH,SAAW,sBAEvB,IAAIwzH,EAAc,IAAInxH,EAAAA,EAAUixH,EAAQtyN,MAAOsyN,EAAQtzH,SAAUszH,EAAQ32N,OAAO,GAC5E82N,EAAe,IAAIpxH,EAAAA,EAAUkxH,EAAQvyN,MAAOuyN,EAAQvzH,SAAUuzH,EAAQ52N,OAAO,GACjFy2N,EAA0C,UAA1BF,EAAalzH,SAAuBwzH,EAAYjnH,IAAIknH,GAAgBD,EAAYlxH,GAAGmxH,EACvG,KACK,CACY,SAAT/5N,GAA8C,oBAA1Bw5N,EAAalzH,UAA4D,gBAA1BkzH,EAAalzH,WAChFszH,EAAQ32N,MAAQ,IAAI+B,KAAK/B,EAAM6mC,SAAS,IAAM,IAEnB,kBAAnB8vL,EAAQ32N,QAChB22N,EAAQ32N,MAAQ,IAAI+B,KAAK40N,EAAQ32N,QAGrCy2N,EADiB,IAAI/wH,EAAAA,EAAUixH,EAAQtyN,MAAOsyN,EAAQtzH,SAAUszH,EAAQ32N,OAAO,EAEnF,KA1CwC,CACT,kBAAnB22N,EAAQ32N,QAChB22N,EAAQ32N,MAAQ,IAAI+B,KAAK40N,EAAQ32N,QAErC,IAAI+2N,EAAiBJ,EAAQ32N,MAAMgF,cAAgB,IAAMsxN,GAAQK,EAAQ32N,MAAMiF,WAAa,GAAK,IAAMqxN,GAAQK,EAAQ32N,MAAMmF,WAE7HsxN,EADiB,IAAI/wH,EAAAA,EAAUixH,EAAQtyN,MAAOsyN,EAAQtzH,SAAU0zH,GAAgB,EAEpF,CA2CA,OANIR,EAAan5K,cACbm5K,EAAan5K,cAAc,CAAE6hG,YAAaw3E,IAAiB,GAG3DF,EAAat3E,YAAcw3E,EAExBA,CACX,CAQO,SAAShE,GAAcl5K,EAAKwxH,EAAS30C,GACxC20C,EAAUA,GAAW30C,GAAQA,EAAK+uB,gBAAkB4lB,EAAU,EAAIA,EAElE,IADA,IAAIisD,EAAOz9K,EAAI1lB,WAAU,GAChBjM,EAAI,EAAGA,EAAImjJ,EAASnjJ,IACzBovM,EAAK/7K,YAAY+7K,EAAK38N,SAAS,IAE1ButB,EAAImjJ,EAAb,IAAK,IAAiBr3I,EAAM6lB,EAAIynE,kBAAmBp5F,EAAI8L,EAAK9L,IACxD2xB,EAAI0B,YAAY1B,EAAIl/C,SAASk/C,EAAIynE,kBAAoB,IAEzD,OAAOg2G,CACX,CAMO,SAAS//F,GAAgB0xE,GAC5B,OAAOA,EAAKpxE,sBAAwBoxE,EAAKzwE,cAAcrB,QAAQn8H,OAAS,GAAKiuM,EAAKwD,oBAC7ExD,EAAKzwE,cAAcC,iBAC5B,CAQO,SAASz5E,GAAUr6C,EAAO4yN,GAE7B,QADc,IAAV5yN,IAAoBA,EAAQ,IAC5BA,EAAO,CAGP,IAFA,IAAIrE,EAAQi3N,EACRjnM,EAAS3rB,EAAMqS,MAAM,KAChBkR,EAAI,EAAGA,EAAIoI,EAAOt1B,UAAW01B,EAAAA,EAAAA,IAAkBpwB,GAAQ4nB,IAE5D,GADA5nB,EAAQA,EAAMgwB,EAAOruB,SAASimB,EAAE/pB,WAAY,OACxCoyB,EAAAA,EAAAA,IAAYjwB,GAAQ,CACpB,IAAIk3N,EAAUlnM,EAAOruB,SAASimB,EAAE/pB,WAAY,KAAK+hB,OAAO,GAAGC,cACrDmQ,EAAOruB,SAASimB,EAAE/pB,WAAY,KAAKiiB,MAAM,GAC/C9f,EAAQi3N,EAAO,GAAKC,IAAYD,GAAQ,GAAKC,GAASt3M,OAAO,GAAG9e,eAAiB,GAAKo2N,GAASp3M,MAAM,GACzG,CAEJ,OAAO9f,CACX,CACJ,CAOO,SAASwmI,GAAoBvqI,EAAQ+9H,GACxC,IAAIm9F,EAAO,IAAI1sL,EAAAA,GAEX2sL,EAAY,SACZr6N,EAAO,OAWX,MAVgB,SAAZi9H,EACkC,kBAAZ/9H,EAClBk7N,EAAK/rL,eAAe,CAAEruC,KAAMd,EAAO,GAAKc,GAAQd,EAAO,GAAKc,GAAQ,OAAQd,OAAQA,EAAO,GAAKm7N,KAAc,GAC9GD,EAAK/rL,eAAe,CAAEruC,KAAM,WAAYy+B,SAAUv/B,IAAU,GAG9B,kBAAZA,EAClBk7N,EAAK/rL,eAAe,CAAEruC,KAAMd,EAAO,GAAKc,GAAQd,EAAO,GAAKc,GAAQ,WAAYd,OAAQA,EAAO,GAAKm7N,KAAc,GAClHD,EAAK/rL,eAAe,CAAEruC,KAAM,WAAYy+B,SAAUv/B,IAAU,EAGxE,CA6BO,SAASuxJ,GAAkBp3B,EAAM42B,QACT,IAAvBA,IAAiCA,EAAqB,YAC1D,IAAIqqE,EAAiB,CAAC,EACtB,IAAKjhG,EACD,OAAOihG,EAGX,IADA,IAAIjlE,EAAWh8B,EAAKmuB,iBAAmBnuB,EAAKq3B,mBACnCz8H,EAAK,EAAGvoB,EAAK8jJ,EAAAA,EAAM8C,cAAer+H,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAC7D,IAAIvvB,EAAMgH,EAAGuoB,GAETqmM,EAAe,GAAK51N,GADZ,YAARA,EAC2BinJ,EAAsB0J,EAAWh8B,EAAKM,aAAeN,EAAK,GAAK30H,IAE7E,gBAARA,EACyC,gBAAnB20H,EAAKkhG,UAGLtnK,EAAoBomE,EAAK,GAAK30H,GAEjE,CAKA,OAJA41N,EAA4B,aAAI,EAC5BjhG,EAAK6uB,WAAoC,SAAvB+H,IAClBqqE,EAAeE,aA3ChB,SAA0BnhG,EAAM42B,GAGnC,IAFA,IACIj9H,EAAM,CAAC,EACFiB,EAAK,EAAGkpJ,EAFN9jD,EAAKguC,gBAEgBpzI,EAAKkpJ,EAAOx/K,OAAQs2B,IAAM,CACtD,IAAI2tD,EAAMu7F,EAAOlpJ,GACjB,GAAI2tD,EAAI2lB,WAAa3lB,EAAIsyF,YAAa,CAClC,IAAI1nK,EAAQ6sH,EAAKkB,aAAkC,aAAnBlB,EAAKkhG,UAA2B34I,EAAIp1E,MAC/D6sH,EAAKqB,aAAaC,YAActB,EAAKqB,aAAaz1B,SAAYo0B,EAAKqB,aAAaz1B,SAAWrjB,EAAIp1E,MACpGwmB,EAAIpuB,SAAS4H,EAAM1L,WAAY,KAAO,CAAC,EACvCkyB,EAAIpuB,SAAS4H,EAAM1L,WAAY,KAAKymG,UAAW,EAC/Cv0E,EAAIpuB,SAAS4H,EAAM1L,WAAY,KAAK6yN,UAAYljE,GAAkB7uE,EAAIsmE,UAAW+H,GACjFj9H,EAAIpuB,SAAS4H,EAAM1L,WAAY,KAAK6yN,UAAU7xH,MAAQu3B,EAAK6uB,UAAUpmD,KACzE,CACJ,CACA,OAAO9uE,CACX,CA4BsCynM,CAAiBphG,EAAM42B,IAElDqqE,CACX,CASO,SAASI,GAAgBpmM,EAAQ9H,EAAO+H,EAAQC,GACnD,IAAIvc,EAAMqc,GAAU,CAAC,EACjBqC,EAAM5S,UAAUpmB,OAChB62B,IACAmC,GAAY,GAEhB,IAAK,IAAI9L,EAAI,EAAGA,EAAI8L,EAAK9L,IAErB,GAAK9G,UAAUnf,SAASimB,EAAE/pB,WAAY,KAOtC,IAHA,IAAI6zB,EAAO5Q,UAAUnf,SAASimB,EAAE/pB,WAAY,KACxC0D,EAAOD,OAAOC,KAAKD,OAAOkhB,eAAekP,IAAOh3B,OAChD4G,OAAOC,KAAKmwB,GAAMtuB,OAAOs0N,GAAmBhmM,IAASpwB,OAAOC,KAAKmwB,GAC5D+mH,EAAM,EAAGA,EAAMl3I,EAAK7G,OAAQ+9I,IAAO,CACxC,IAAI7vI,EAASoM,EAAIzT,EAAKI,SAAS82I,EAAI56I,WAAY,MAC3C85N,EAAMjmM,EAAKnwB,EAAKI,SAAS82I,EAAI56I,WAAY,MACzC+5N,OAAM,EACNrmM,KAAShB,EAAAA,EAAAA,IAASonM,IAAQzmM,MAAMC,QAAQwmM,KACpCpnM,EAAAA,EAAAA,IAASonM,IACTC,EAAMhvN,GAAkB,CAAC,EACzBoM,EAAIzT,EAAKI,SAAS82I,EAAI56I,WAAY,OAAQ42N,EAAAA,EAAAA,IAAW,CAAC,EAAGmD,EAAKD,EAAKpmM,KAGnEqmM,EAAMhvN,GAAkB,GACxBoM,EAAIzT,EAAKI,SAAS82I,EAAI56I,WAAY,OAAQ42N,EAAAA,EAAAA,IAAW,GAAImD,EAAKD,EAAKpmM,IAIvEvc,EAAIzT,EAAKI,SAAS82I,EAAI56I,WAAY,MAAQ85N,CAElD,CAEJ,OAAO3iN,CACX,CAMA,SAAS0iN,GAAmB3nM,GAExB,IADA,IAAIxuB,EAAO,GACJD,OAAOkhB,eAAeuN,IAAQzuB,OAAOC,KAAKD,OAAOkhB,eAAeuN,IAAMr1B,QACzE6G,EAAOA,EAAK6B,OAAO9B,OAAOC,KAAKD,OAAOkhB,eAAeuN,KACrDA,EAAMzuB,OAAOkhB,eAAeuN,GAEhC,OAAOxuB,CACX,CAMO,SAASk2K,GAAmB51F,GAE/B,IADA,IAAIz+C,EAAM,EACDxb,EAAI,EAAGA,EAAIi6D,EAAOnnF,OAAQktB,IAAK,CACpC,IAAIgyD,EAAQi+I,GAAWh2I,EAAOlgF,SAASimB,EAAE/pB,WAAY,KAAM,GACvDulC,EAAMw2C,IACNx2C,EAAMw2C,EAEd,CACA,OAAOx2C,EAAM,CACjB,CAOO,SAASy0L,GAAWj/F,EAAKrvH,GAC5B,IAAI65B,EAAM75B,EACNuuN,EAAU,GACd,GAAIl/F,EAAI/B,QAAS,CACbttH,IACA,IAAK,IAAIqe,EAAI,EAAGA,EAAIgxG,EAAI/B,QAAQn8H,OAAQktB,IACpCkwM,EAAQn2N,SAASimB,EAAE/pB,WAAY,KAAOg6N,GAAWj/F,EAAI/B,QAAQl1H,SAASimB,EAAE/pB,WAAY,KAAM0L,GAE9F,IAAK,IAAI0vB,EAAI,EAAGA,EAAI6+L,EAAQp9N,OAAQu+B,IAC5BmK,EAAM00L,EAAQn2N,SAASs3B,EAAEp7B,WAAY,OACrCulC,EAAM00L,EAAQn2N,SAASs3B,EAAEp7B,WAAY,MAG7C0L,EAAQ65B,CACZ,CACA,OAAO75B,CACX,CAOO,SAASuzH,GAAuB1G,EAAMkuD,GACzC,IAAK,IAAI18J,EAAI,EAAGA,EAAI08J,EAAa5pL,OAAQktB,IACrC08J,EAAa3iL,SAASimB,EAAE/pB,WAAY,KAAK8wB,IAAM21J,EAAa3iL,SAASimB,EAAE/pB,WAAY,KAAKs7H,aACpF2B,GAA2BwpD,EAAa3iL,SAASimB,EAAE/pB,WAAY,KAAKwG,MAAO+xH,EAAKoD,wBAAwB7qG,IACtGynG,EAAKquC,2BAA6BszD,GAA0B3hG,EAAMkuD,EAAa3iL,SAASimB,EAAE/pB,WAAY,KAAKwG,OAAOsqB,IAC9GynG,EAAKgC,iBAAiBksD,EAAa3iL,SAASimB,EAAE/pB,WAAY,KAAKwG,OAAOsqB,GAExF,CAaO,SAAS6sL,GAAmB/1M,GAC/B,IAEIuyN,EAFQ3yM,SAASC,YAAYqhC,iBAAiBlhD,EAAS,MACpCmhD,iBAAiB,aACZ1tC,QAAQ,KAAM,IAG1C,MAAO,CAAEs9C,MAFQ9tB,WAAYsvL,EAAYthN,MAAM,KAAK,IAExB+/C,OADX/tB,WAAYsvL,EAAYthN,MAAM,KAAK,IAExD,CAOO,SAASylI,GAAiB87E,EAAaxyN,GACtCwyN,EAAY5+K,UAAUM,SAAS,aAC/Bl0C,EAAQ4zC,UAAUzB,IAAI,WAE9B,CAiFO,SAASyjF,GAAa3qH,EAAMmuF,GAC/B,IAAIn2F,EAWD,SAA+Bm2F,GAClC,IAAIw9B,EAAS,IAAI55B,EAAAA,GACb5B,EAAK,IAAIwN,EAAAA,EAAY,CAAEplG,IAAK,GAAIukG,QAAS,IAAI/K,EAAAA,KAC7C/5F,EAAQ2zH,EAAOr9B,aAAa6B,EAAIhC,GAChCv2F,EAAOyW,KAAKC,MAAMtW,EAAMJ,MAC5B,OAAOA,CACX,CAjBgB8zH,CAAsBv9B,GAC9B09B,EAAM,IAAIhsB,EAAAA,EAGd,OAFA7nG,EAAM5M,WAAaygI,EAAIp8G,QACvBzX,EAAMgd,OAAShV,EACR,CAAEhI,MAAOA,EAAO4nG,SAAUisB,EACrC,CAkBO,SAASgrF,GAAkBnxF,GAI9B,IAHA,IAAIS,EAAUT,EAAKyuC,oBACfqzD,EAAgB,EAChBC,EAAoB,EACfvwM,EAAI,EAAGA,EAAIivG,EAAQn8H,OAAQktB,KAC5BqI,EAAAA,EAAAA,IAAY4mG,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK24D,OAChD2hK,KAE4E,IAAvEthG,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK24D,MAAM34D,WAAWkb,QAAQ,MAClEm/M,IAGR,OAAuB,SAAf9hG,EAAK5/D,OAA4C,kBAAhB4/D,EAAK5/D,QAAoD,IAA7B4/D,EAAK5/D,MAAMz9C,QAAQ,QACnFq9G,EAAK8B,cAAc8xF,mBAAqB5zF,EAAK8B,cAAcrB,QAAQn8H,QACjEw9N,IAAkBC,CAC7B,CAUO,SAAS7F,GAAcl8F,EAAMx5H,EAAMw7N,EAAS7uN,EAAO8uN,GAEtD,IADA,IAAInsM,EAAa3iB,GAAgB,EACxBqe,EAAIywM,GAAgC,EAAGzwM,EAAIhrB,EAAKlC,OAAQktB,IAC7D,GAAIhrB,EAAK+E,SAASimB,EAAE/pB,WAAY,MAAQjB,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAKkmK,UAAW,CAChFnnK,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAK0L,MAAQ2iB,EACzCtvB,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAK42K,WAAWr+C,EAAKs+C,cAAexoJ,EAAa,IAAM,EACnFksM,EAAQz2N,SAASimB,EAAE/pB,WAAY,KAAKk7C,aAAaunF,EAAAA,GAAuBp0G,EAAWruB,YACnFu6N,EAAQz2N,SAASimB,EAAE/pB,WAAY,KAAKk7C,aAAaunF,EAAAA,IAAwBp0G,EAAa,GAAGruB,YACrFjB,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAK42K,SACjC2jD,EAAQz2N,SAASimB,EAAE/pB,WAAY,KAAKw7C,UAAUzB,IAAI,YAGlDwgL,EAAQz2N,SAASimB,EAAE/pB,WAAY,KAAKw7C,UAAUjB,OAAO,YAEzD,IAAK,IAAInf,EAAI,EAAGA,EAAIm/L,EAAQz2N,SAASimB,EAAE/pB,WAAY,KAAK+mJ,MAAMlqJ,OAAQu+B,IAClEm/L,EAAQz2N,SAASimB,EAAE/pB,WAAY,KAAK+mJ,MAAMjjJ,SAASs3B,EAAEp7B,WAAY,KAAKk7C,aAAa,QAAS7sB,EAAWruB,YAE3GquB,GACJ,CAECtvB,EAAKlC,QACN07H,EAAKuyB,aAAas1B,UAAS,EAEnC,CASO,SAASyzC,GAAet7F,EAAMt1B,EAAS/jG,EAAMylG,GAChD,IAAI81H,EAAWliG,EAAKo7F,gBAAgB,GAAKz0N,GAAMqG,OAAO09F,EAAQ,GAAK/jG,IAAOstB,QAAO,SAAU/gB,EAAG0gG,GAE1F,OADA1gG,EAAE0gG,EAAE,GAAKxH,SAAqC7kG,IAAxB2L,EAAE0gG,EAAE,GAAKxH,IAA2BwH,EAAI1oG,OAAOulB,OAAOvd,EAAE0gG,EAAE,GAAKxH,IAAYwH,GAC1F1gG,CACX,GAAG,CAAC,GACJ8sH,EAAKo7F,gBAAgB,GAAKz0N,GAAQuE,OAAOC,KAAK+2N,GAAU/1N,KAAI,SAAUspD,GAAK,OAAOysK,EAAS,GAAKzsK,EAAI,GACxG,CAMO,SAASskH,GAAe/5C,GAC3B,GAAIA,EAAKmuB,eAAgB,CACpBnuB,EAAMk0C,cAAcrC,YACjB,GAAGnoJ,MAAMqC,KAAKi0G,EAAK3wH,QAAQ8tB,iBAAiB,sDAChD,IAAI+mJ,EAAMlkD,EAAK4sB,kBAAoB1iB,EAAAA,GAAqB,8DAClD,kDACLlK,EAAMk0C,cAAc/D,kBACjB,GAAGzmJ,MAAMqC,KAAKi0G,EAAK3wH,QAAQ8tB,iBAAiB+mJ,IAC5ClkD,EAAK4sB,kBAAoB1iB,EAAAA,KACzBlK,EAAKk0C,cAAciuD,uBACf,GAAGz4M,MAAMqC,KAAKi0G,EAAK3wH,QAAQ8tB,iBAAiB,kEAExD,MAEK6iG,EAAMk0C,cAAcrC,YACjB,GAAGnoJ,MAAMqC,KAAKi0G,EAAK3wH,QAAQ8tB,iBAAiB,2BAExD,CAmCO,SAASilM,GAA4BpiG,EAAMqiG,GAK9C,IAJA,IAAIz8F,EAAc5F,EAAKM,aACnBo1E,EAAiB,GACjBF,EAAoB,GACpBC,EAAqB,GAChBjkL,EAAI,EAAGA,EAAIo0G,EAAYthI,OAAQktB,MAChCwI,EAAAA,EAAAA,IAAkBqoM,IAAiBA,GAAeA,IAAgBz8F,EAAYr6H,SAASimB,EAAE/pB,WAAY,KAAKgT,UACnD,SAAnDmrH,EAAYr6H,SAASimB,EAAE/pB,WAAY,KAAKse,QAA6E,gBAAxD6/G,EAAYr6H,SAASimB,EAAE/pB,WAAY,KAAKyiN,YACrG1U,EAAkB1pM,KAAK85H,EAAYr6H,SAASimB,EAAE/pB,WAAY,MAEF,UAAnDm+H,EAAYr6H,SAASimB,EAAE/pB,WAAY,KAAKse,QAA8E,iBAAxD6/G,EAAYr6H,SAASimB,EAAE/pB,WAAY,KAAKyiN,YAC3GzU,EAAmB3pM,KAAK85H,EAAYr6H,SAASimB,EAAE/pB,WAAY,MAG3DiuM,EAAe5pM,KAAK85H,EAAYr6H,SAASimB,EAAE/pB,WAAY,OAInE,MAAO,CAAE+hN,WAAYhU,EAAmBpX,QAASsX,EAAgB+T,YAAahU,EAClF,CAGO,SAASnX,GAAkBt+D,EAAM1vD,EAAU9pE,EAAM87N,EAAOv0D,IACvDvnK,EAAK,GAAGlC,QAAUg+N,KACdv0D,EACAz9F,EAAS45D,EAAAA,GAAqB1jI,EAAK,GAAIunK,EAAO,IAG9Cz9F,EAAS45D,EAAAA,GAAqB1jI,EAAK,KAGvCw5H,EAAKmuB,iBAAmB3nJ,EAAK,GAAGlC,QAAUg+N,KACtCv0D,EACAz9F,EAAS,UAAW9pE,EAAK,GAAIunK,EAAO,IAGpCz9F,EAAS,UAAW9pE,EAAK,KAG5Bw5H,EAAK4sB,kBAAoB1iB,EAAAA,IAA+C,UAAzBlK,EAAK4sB,kBAAiCpmJ,EAAK,GAAGlC,SAAUg+N,IACpGv0D,EACAz9F,EAAS45D,EAAAA,GAAsB1jI,EAAK,GAAIunK,EAAO,IAG/Cz9F,EAAS45D,EAAAA,GAAsB1jI,EAAK,IAGhD,CA8CO,SAASo4L,GAAoB5+D,EAAMwC,EAAK8gD,GAC3C,MAAiC,YAA7B9gD,EAAI24C,qBACG,GAAGzxJ,MAAMqC,KAAKi0G,EAAK07C,qBAAqBnwK,SAAS+3K,EAAS77K,WAAY,KAAKopD,uBAAuBq5E,EAAAA,KAEpG1H,EAAI24C,uBAAyBjxC,EAAAA,GAC3B,GAAGxgH,MAAMqC,KAAKi0G,EAAKu7C,yBAAyBhwK,SAAS+3K,EAAS77K,WAAY,KAAKopD,uBAAuBq5E,EAAAA,KAGtG,GAAGxgH,MAAMqC,KAAKi0G,EAAKy6C,cAAclvK,SAAS+3K,EAAS77K,WAAY,KAAKopD,uBAAuBq5E,EAAAA,IAE1G,CASO,SAASi1D,GAAwBn/D,EAAMwC,EAAK8gD,EAAUnwK,GACzD,IAAI48C,EAAOiwE,EAAKugD,qBACZ6d,EAAUp+D,EAAKq7C,yBAGnB,OAFAloK,EAAqC,YAA7BqvH,EAAI24C,qBAAqChoK,EAAQ48C,EAAOyyE,EAAI24C,uBAAyBjxC,EAAAA,GACvF/2H,GAAS48C,EAAOquI,GAAWjrL,EAC1ByrL,GAAoB5+D,EAAMwC,EAAK8gD,GAAU/3K,SAAS4H,EAAM1L,WAAY,IAC/E,CAqFO,SAASgtC,GAAgB8tL,EAAc57N,EAAM0uC,EAAS0C,GACzD,IAAIlyC,EACAk7N,EAAO,IAAI1sL,EAAAA,GACf,GAAa,WAAT1tC,EACA,IACId,EAASk7N,EAAK3rL,iBAAiB,CAAEvvC,OAAQ08N,EAAc15L,SAAUkP,EAAc9N,aAAa,IAAQ,EACxG,CACA,MAAOx8B,GACH5H,EAAS08N,CACb,MAEC,GAAa,SAAT57N,GAA4B,SAATA,GAA4B,aAATA,EAC3C,IAEI,GADAd,EAASk7N,EAAK/rL,eAAe,CAAE5P,SAAUm9L,EAAc57N,KAAMA,GAAQ0uC,IACjErb,EAAAA,EAAAA,IAAkBn0B,GAElB,KAAM,OAEd,CACA,MAAO4H,GACH,IACI5H,EAASk7N,EAAK/rL,eAAe,CAAEnvC,OAAQ08N,EAAc57N,KAAMA,GAAQ0uC,EACvE,CACA,MAAO5nC,GACH5H,EAAS08N,CACb,CACJ,MAGA18N,EAAS08N,EAEb,GAAa,WAAT57N,EAAmB,CACnB,IACI67N,EAAS,CAAE,EAAK,GAAI,EAAK,IAAK,EAAK,IAAK,IAAM,IAAK,KAAM,SAAU,GAAM,KAAM,EAAK,OAAQ,KAAQ,OAAQ,EAAK,OACrH38N,EAASA,EAAOid,QAFG,2BAEmB,SAAUgS,GAE5C,OAAO0tM,EAAO,GAAK1tM,EACvB,GACJ,CACA,OAAOjvB,CACX,CAMO,SAASmqL,GAAgBhwD,GAC5B,GAAIA,EAAKoK,iBAEL,IADA,IAAIq4F,EAAUxzM,SAAS4hC,uBAAuB,uBACrCr/B,EAAI,EAAGA,EAAIixM,EAAQn+N,OAAQktB,IAChCixM,EAAQl3N,SAASimB,EAAE/pB,WAAY,KAAKw7C,UAAUzB,IAAI,WAG9D,CAOO,SAASiqG,GAA4B7hJ,EAAO4hJ,GAK/C,IAJA,IAAIk3E,EACAp+N,EAASsF,EAAM0W,MAAM,KAAKhc,OAC1Bs1B,EAAShwB,EAAM0W,MAAM,KACrBqiN,EAAen3E,EACVh6H,EAAI,EAAGA,EAAIltB,EAAQktB,IAExBmxM,EADAD,EAAYC,EAAa/oM,EAAOruB,SAASimB,EAAE/pB,WAAY,MAG3D,OAAOi7N,CACX,CAWO,SAASzmD,GAAgBn1C,EAAI/4G,EAAKmtJ,EAAY10K,EAAMk2B,EAAQusK,GAG/D,IAFA,IAAIzrB,EAAMtyK,OAAOC,KAAK27H,GAClB87F,EAAc70M,EACTyD,EAAI,EAAGA,EAAIgsJ,EAAIl5K,OAAQktB,IAAK,CACjC,IAAIo4H,EAAK9iB,EAAG02C,EAAIjyK,SAASimB,EAAE/pB,WAAY,MAAM01B,iBAAiB,gBAAgB5xB,SAASwiB,EAAItmB,WAAY,KACvG,GAAIi1B,IAAWA,EAAOyxH,iBAAmBzxH,EAAOqyH,gBAAiB,CAG7D,GAFAnF,GAAO5vH,EAAAA,EAAAA,IAAkB4vH,IAAQr+I,SAASq+I,EAAGn8F,aAAa,iBAAkB,MAAQ1/B,EACzE+4G,EAAGv7H,SAASimB,EAAE/pB,WAAY,KAAKm3B,cAAc,qBAAwB7Q,EAAM,MAAhF67H,GACF5vH,EAAAA,EAAAA,IAAkB4vH,GAClB,SAGA77H,EAAM67H,EAAG4qC,SAEjB,CACA,GAAI1tD,EAAG02C,EAAIjyK,SAASimB,EAAE/pB,WAAY,MAAM01B,iBAAiB,gBAAgB74B,QAAUslJ,EAAI,CAKnF,IAJAhkG,EAAAA,EAAAA,IAAkBkhF,EAAG02C,EAAIjyK,SAASimB,EAAE/pB,WAAY,MAAM01B,iBAAiB,gBAAgB5xB,SAASwiB,EAAItmB,WAAY,KAAM,CAAE,QAAWyzK,IAC/Hp0C,EAAG02C,EAAIjyK,SAASimB,EAAE/pB,WAAY,MAAM01B,iBAAiB,gBAAgB5xB,SAASwiB,EAAItmB,WAAY,KAAKw7C,UAAUM,SAAS,YACtHC,EAAAA,EAAAA,IAAY,CAACsjF,EAAG02C,EAAIjyK,SAASimB,EAAE/pB,WAAY,MAAM01B,iBAAiB,gBAAgB5xB,SAASwiB,EAAItmB,WAAY,MAAO,CAAC,WAEnHwhM,GAAavsK,EAAOqyH,gBAAiB,CACrC,IAAI57I,EAAQupB,EAAO26H,mBAAqBtpI,EAAMA,EAAM,EACpDvnB,EAAKg3K,EAAIjyK,SAASimB,EAAE/pB,WAAY,MAAM+mJ,MAAMjjJ,SAAS4H,EAAM1L,WAAY,KAAKgT,QAAyB,KAAfygK,CAC1F,MAEI10K,EAAKg3K,EAAIjyK,SAASimB,EAAE/pB,WAAY,MAAM+mJ,MAAMjjJ,SAASwiB,EAAItmB,WAAY,KAAKgT,QAAyB,KAAfygK,GACM,IAAtF10K,EAAKg3K,EAAIjyK,SAASimB,EAAE/pB,WAAY,MAAM+mJ,MAAMjjJ,SAASwiB,EAAItmB,WAAY,KAAKgT,SAC1EqsH,EAAG02C,EAAIjyK,SAASimB,EAAE/pB,WAAY,MAAM01B,iBAAiB,gBAAgB5xB,SAASwiB,EAAItmB,WAAY,KAAKw7C,UAAUzB,IAAI,UAGzHzzB,EAAM60M,CACV,CACJ,CACJ,CAGO,SAAS3nE,GAAuBv+H,EAAQq/B,EAAK8mK,EAAMrxK,GACtD,IAAK,IAAI52B,EAAK,EAAGkoM,EAAQ/mK,EAAKnhC,EAAKkoM,EAAMx+N,OAAQs2B,IAAM,CACnD,IAAIiE,EAAOikM,EAAMloM,GACbioM,EACAnmM,EAAOkW,GAAG/T,EAAKzwB,MAAOywB,EAAKhG,QAAS24B,GAGpC90B,EAAOuW,IAAIpU,EAAKzwB,MAAOywB,EAAKhG,QAEpC,CACJ,CAoCO,SAAS8oM,GAA0B3hG,EAAM/xH,GAC5C,IAAIw9E,EACCu0C,EAAK4F,aACN5F,EAAKM,aAET,IAAK,IAAI1lG,EAAK,EAAGvoB,EAAM2tH,EAAK4F,YAAchrG,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAC5D,IAAI4nG,EAAMnwH,EAAGuoB,GACb,GAAI4nG,EAAIv0H,QAAUA,EAAO,CACrBw9E,EAAS+2C,EACT,KACJ,CACJ,CACA,OAAO/2C,CACX,CAUO,SAAS69D,GAAsBr4I,EAAI8xN,EAAMC,EAAUl2N,GACtDA,EAASu2I,cAAc,GAAKpyI,GAAM,CAAC,EACnC,IAAK,IAAIugB,EAAI,EAAGA,EAAIuxM,EAAKz+N,OAAQktB,IAC7B1kB,EAASu2I,cAAc,GAAKpyI,GAAI8xN,EAAKx3N,SAASimB,EAAE/pB,WAAY,MAAQu7N,EAASD,EAAKx3N,SAASimB,EAAE/pB,WAAY,KAEjH,CASO,SAAS+hJ,GAAoBl4I,EAAWyxN,EAAMj2N,GACjD,IAAK,IAAI0kB,EAAI,EAAGA,EAAIuxM,EAAKz+N,SACjBgN,EAAU21C,YADez1B,IAI7BlgB,EAAU6e,oBAAoB4yM,EAAKx3N,SAASimB,EAAE/pB,WAAY,KAAMqF,EAASu2I,cAAc/xI,EAAUjC,QAAQ4B,IAAI8xN,EAAKx3N,SAASimB,EAAE/pB,WAAY,MAEjJ,CAOO,SAAS6pI,GAAuB50G,EAAQi5I,GAC3Cj5I,EAAOwqH,gBAAgByuB,GACnBj5I,EAAOyrF,SACPzrF,EAAO8qG,iBAEf,CA8EO,SAASy7F,GAAcC,EAAmBC,EAAgBh5I,GAC7D,IAAIi5I,EAAeF,EACf1uC,EAAY2uC,EACZE,GAAuB,EAC3B,GAAIl5I,EACA,IAAK,IAAI34D,EAAIgjK,EAAU,GAAIhjK,EAAI4xM,EAAa9+N,OAAQktB,IAEhD,IADA,IAAIytK,EAAUmkC,EAAa73N,SAASimB,EAAE/pB,WAAY,KACzCo7B,EAAI,EAAGA,EAAIo8J,EAAQ36L,OAAQu+B,IAAK,CACrC,GAAIwgM,GAAiG,IAAzED,EAAa73N,SAASimB,EAAE/pB,WAAY,KAAK8D,SAASs3B,EAAEp7B,WAAY,KAExF,OADA+sL,EAAY,CAAChjK,EAAGqR,GAGfwgM,GAAwB7uC,EAAU/sL,aAAe,CAAC+pB,EAAGqR,GAAGp7B,aACzD47N,GAAuB,EAE/B,MAIJ,IAAS7xM,EAAIgjK,EAAU,GAAIhjK,GAAK,EAAGA,IAE/B,IAASqR,GADLo8J,EAAUmkC,EAAa73N,SAASimB,EAAE/pB,WAAY,MAC7BnD,OAAS,EAAGu+B,GAAK,EAAGA,IAAK,CAC1C,GAAIwgM,GAAiG,IAAzED,EAAa73N,SAASimB,EAAE/pB,WAAY,KAAK8D,SAASs3B,EAAEp7B,WAAY,KAExF,OADA+sL,EAAY,CAAChjK,EAAGqR,GAGfwgM,GAAwB7uC,EAAU/sL,aAAe,CAAC+pB,EAAGqR,GAAGp7B,aACzD47N,GAAuB,EAE/B,CAGR,OAAO7uC,CACX,EAlxBA,SAAWykC,GAEPA,EAAO/7E,MAAQ,IAClB,CAHD,CAGG+7E,IAAWA,EAAS,CAAC,yLChtCpB70F,EAAoC,WAOpC,SAASA,EAAmB1nG,GACxBrQ,KAAK+zM,gBAAiB,EACtB/zM,KAAK25H,kBAAoB,CAAC,EAC1B35H,KAAKi3M,gBAAkB,IAAIj5H,EAAAA,EAE3Bh+E,KAAKk3M,aAAc,EACnBl3M,KAAKvhB,OAAS,CAAC,EACfuhB,KAAKiwJ,aAAc,EACnBjwJ,KAAKm3M,0BAA2B,EAChCn3M,KAAKqQ,OAASA,EACdrQ,KAAKpb,GAAKob,KAAKqQ,OAAOrtB,QAAQ4B,GAC9Bob,KAAK8gI,eAAiB,IAAI7nB,EAAAA,EAAej5G,KAAKqQ,OAAOmZ,QACrDxpB,KAAKo3M,UAAWvsJ,EAAAA,EAAAA,IAAe7qD,KAAKqQ,OAAOO,eAAe,EAAO,CAAEj1B,SAAS,EAAM/C,MAAO,MACzFonB,KAAKq3M,WAAYxsJ,EAAAA,EAAAA,IAAe7qD,KAAKqQ,OAAOO,eAAe,EAAO,CAAEj1B,SAAS,EAAO/C,MAAO,MAC3FonB,KAAKo3M,SAASp/K,aAAah4B,KAAKqQ,OAAOO,cAAc,QAAS,CAC1D31B,UAAW,eAAgBs7C,MAAO,CAAEj8C,KAAM,cAC1C0lB,KAAKo3M,SAAS77F,YAClBv7G,KAAKq3M,UAAUr/K,aAAah4B,KAAKqQ,OAAOO,cAAc,QAAS,CAC3D31B,UAAW,eAAgBs7C,MAAO,CAAE,KAAQ,cAC5Cv2B,KAAKq3M,UAAU97F,YACnBv7G,KAAKq3M,UAAU9kM,cAAc,YAAYqkB,UAAUzB,IAAI,aACnDn1B,KAAKqQ,OAAOs6B,YACZlU,EAAAA,EAAAA,IAAS,CAACz2B,KAAKo3M,SAAUp3M,KAAKq3M,WAAY,CAAC,UAE3Cr3M,KAAKqQ,OAAOlwB,YAC+B,IAAvC6f,KAAKqQ,OAAOlwB,SAASmW,QAAQ,MAC7BmgC,EAAAA,EAAAA,IAAS,CAACz2B,KAAKo3M,SAAUp3M,KAAKq3M,WAAYr3M,KAAKqQ,OAAOlwB,SAAS8T,MAAM,OAGrEwiC,EAAAA,EAAAA,IAAS,CAACz2B,KAAKo3M,SAAUp3M,KAAKq3M,WAAY,CAACr3M,KAAKqQ,OAAOlwB,WAGnE,CA4mCA,OAvmCA43H,EAAmB14G,UAAUqoB,QAAU,WACnC1nB,KAAKglH,aACT,EACAjN,EAAmB14G,UAAUk6C,WAAa,WACtCvkB,EAAAA,GAAaG,IAAIn1B,KAAK4nH,IAAK,QAAS5nH,KAAK2oD,aAAc3oD,MACvDg1B,EAAAA,GAAaG,IAAIn1B,KAAK4nH,IAAK,QAAS5nH,KAAK8jE,aAAc9jE,MACvDA,KAAKs3M,eAAgB1nM,EAAAA,EAAAA,IAAS5P,KAAKu3M,eAAgB,KACnD,IAAIjlM,EAAOtS,KAAKm9G,UAAUn6H,QAAQuvB,cAAc,kBAC5CD,GACA0iB,EAAAA,GAAaG,IAAI7iB,EAAM,QAAStS,KAAKs3M,cAAet3M,KAE5D,EACA+3G,EAAmB14G,UAAU6nD,aAAe,WACxClyB,EAAAA,GAAaW,OAAO31B,KAAK4nH,IAAK,QAAS5nH,KAAK2oD,cAC5C3zB,EAAAA,GAAaW,OAAO31B,KAAK4nH,IAAK,QAAS5nH,KAAK8jE,cAC5C,IAAIxxD,EAAOtS,KAAKm9G,UAAUn6H,QAAQuvB,cAAc,kBAC5CD,GACA0iB,EAAAA,GAAaW,OAAOrjB,EAAM,QAAStS,KAAKs3M,cAEhD,EACAv/F,EAAmB14G,UAAUq9H,iBAAmB,SAAUzuI,EAAM6tI,EAAOD,GACnE,IAAI7rH,EAAQhQ,KACRy4G,EAAa,CAAC,EACd8jB,EAAmB,GACnBngD,EAAQp8E,KAAKi3M,gBAAgB/nM,QACjClP,KAAKU,QAAQ0+D,OAAO/lF,WAChBkzG,aAAanQ,EAAML,MAAM8/C,IAAa10I,MAAK,SAAU1L,GACrDu0B,EAAMtP,QAAQ0+D,OAAOk5C,WAAa78H,EAAE2D,OACpC4wB,EAAMK,OAAO0W,OAAOsM,EAAAA,IAAsB,CAAE8wD,UAAWs0B,EAAYr5C,OAAQpvD,EAAMtP,QAAQ0+D,SACzFnxE,EAAKuuI,YAAc/jB,EAAWt0B,UAAUc,WAExC,IADA,IAAIuyH,EAAQ/+F,EAAWt0B,UAAUc,WACxB9/E,EAAI,EAAGA,EAAIqyM,EAAMv/N,OAAQktB,IAC9Bo3H,EAAiB98I,KAAK,CAClBmC,MAAO41N,EAAMt4N,SAASimB,EAAE/pB,WAAY,KAAKwG,MACzCuiG,UAAW,KACX+I,UAAWsqH,EAAMt4N,SAASimB,EAAE/pB,WAAY,KAAK4jG,WAC7CC,aAAcu4H,EAAMt4N,SAASimB,EAAE/pB,WAAY,KAAK6jG,aAChD2B,SAAU42H,EAAMt4N,SAASimB,EAAE/pB,WAAY,KAAKwlG,SAC5CrjG,MAAOi6N,EAAMt4N,SAASimB,EAAE/pB,WAAY,KAAKmC,MACzCjD,KAAM01B,EAAMtP,QAAQpmB,OAG5B2T,EAAKsuI,iBAAmBA,EAAiBtkJ,OAASskJ,EAC9CT,EAAM39I,QAAO,SAAUg4H,GAAO,OAAOA,EAAIv0H,MAAQouB,EAAMtP,QAAQ9e,KAAO,IAC1EouB,EAAMtP,QAAQ8L,QAAQve,EAC1B,GACJ,EACA8pH,EAAmB14G,UAAUo4M,cAAgB,SAAUxpN,EAAM1Q,GACzD,IAAIqjG,EAAW5gF,KAAKU,QAAQ41G,SACM,WAA7Bt2G,KAAKU,QAAQ0+D,OAAO9kF,KAAoB,WAAa,QAAY0lB,KAAKU,QAAQ0+D,OAAO9kF,KAAO,WAAa,QAC1Go9N,EAAkB,IAAIz0H,EAAAA,EAAUjjF,KAAKU,QAAQ0+D,OAAO43C,gBAAiBp2B,EAAUrjG,GAAO,EAAMyiB,KAAKU,QAAQu+E,cAC7Gj/E,KAAK08H,iBAAiBzuI,EAAM,CAACA,EAAKsuI,kBAAmBm7E,EACzD,EACA3/F,EAAmB14G,UAAUs4M,eAAiB,SAAUl8N,GACpD,IAAI0iD,EAAS1iD,EAAE0iD,OACXA,EAAOvH,UAAUM,SAAS,mBAC1Bl3B,KAAK43M,OAAOr6N,MAAQ4gD,EAAOvH,UAAUM,SAAS,oBAAsB,GAAKl3B,KAAK43M,OAAOr6N,MACjFyiB,KAAKm3M,yBACLn3M,KAAKqQ,OAAO0W,OAAO,kBAAmB,CAAEhlC,MAAOtG,IAG/CukB,KAAK63M,oBAET73M,KAAK83M,mBACL93M,KAAK43M,OAAOnmM,QAEpB,EACAsmG,EAAmB14G,UAAUk4M,eAAiB,SAAU97N,IAC/CkyB,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAOksJ,mBAAoE,YAA/Cv8J,KAAKqQ,OAAOksJ,iBAAiBC,eACjFx8J,KAAKqQ,OAAOssJ,iBAAYzhL,EAAW8kB,KAAKm9G,UAAUn6H,SAElDgd,KAAKm3M,yBACLn3M,KAAKqQ,OAAO0W,OAAO,kBAAmB,CAAEhlC,MAAOtG,IAG/CukB,KAAK63M,oBAET73M,KAAK83M,kBACT,EACA//F,EAAmB14G,UAAUy4M,iBAAmB,WACxC93M,KAAK43M,OAAOr6N,MAAMtF,SAClB2+C,EAAAA,EAAAA,IAAU52B,KAAKm0I,MAAO,CAAC,oBAAqB,CAAC,kBAC7CvxI,SAASuuB,KAAK5e,cAAc,qBAAqB+jB,aAAa,QAASt2B,KAAK07G,UAAUz/D,YAAY,aAGlGrlB,EAAAA,EAAAA,IAAU52B,KAAKm0I,MAAO,CAAC,iBAAkB,CAAC,qBAC1CvxI,SAASuuB,KAAK5e,cAAc,kBAAkB+jB,aAAa,QAASt2B,KAAK07G,UAAUz/D,YAAY,WAEvG,EAOA87D,EAAmB14G,UAAUsoH,kBAAoB,SAAU3oI,GACvD,OAAOghB,KAAK07G,UAAUz/D,YAAYj9D,EACtC,EACA+4H,EAAmB14G,UAAU4iG,iBAAmB,WAC5C,IAAI5oH,EAAa2mB,KAAKU,QAAQrnB,WAE9B,KAAMA,aAAsBuyG,EAAAA,GACxB,IAAK,IAAIzmF,EAAI,EAAGA,EAAI9rB,EAAWpB,OAAQktB,IAEnC,GAJE,kBAIS9rB,EAAoB,CAC3B,IAAIi0B,EAAM,CAAC,EACXA,EAAItN,KAAKU,QAAQ9e,OAASvI,EAAW6F,SAASimB,EAAE/pB,WAAY,KAC5D/B,EAAW6F,SAASimB,EAAE/pB,WAAY,KAAOkyB,CAC7C,CAGZ,EACAyqG,EAAmB14G,UAAUm8B,YAAc,SAAU96B,GACjDV,KAAKU,QAAUA,EACfV,KAAK25H,kBAAoBj5H,EAAQ+7H,iBAAmB,CAAC,EACrDz8H,KAAKU,QAAQrnB,WAAaqnB,EAAQrnB,WAClC2mB,KAAKU,QAAQ87E,YAAc97E,EAAQ87E,YAAc97E,EAAQ87E,YAAc97E,EAAQrnB,WAC/E2mB,KAAKiiG,mBACLjiG,KAAKU,QAAQpmB,KAAOomB,EAAQpmB,KAC5B0lB,KAAKU,QAAQlnB,OAASknB,EAAQlnB,QAAU,GACxCwmB,KAAKU,QAAQu+E,aAAev+E,EAAQu+E,eAAgB,EACpDj/E,KAAKU,QAAQ05H,gBAAkB15H,EAAQ05H,iBAAmBp6H,KAAKqQ,OAAOlnB,eAAeirH,QACrFp0G,KAAKU,QAAQ07E,MAAQ17E,EAAQ07E,OAAS,IAAI4B,EAAAA,EAC1Ch+E,KAAKU,QAAQsmI,mBAAqBtmI,EAAQsmI,qBAAsB,EAChEhnI,KAAKU,QAAQwL,IAAMxL,EAAQ0+D,OAAOlzD,IAClClM,KAAKU,QAAQsqD,kBAAoBtqD,EAAQ0+D,OAAOpU,oBAAqB,EACrEhrD,KAAKvhB,OAAS,CAAC,EACfuhB,KAAK07G,UAAYh7G,EAAQg7G,UACzB17G,KAAKwgH,WAAa9/G,EAAQ05H,gBAAgBniJ,MAC9C,EACA8/H,EAAmB14G,UAAUooH,iBAAmB,SAAU/mH,GAOtD,GANAV,KAAK4nH,IAAM5nH,KAAKqQ,OAAOO,cAAc,MAAO,CACxChsB,GAAIob,KAAKpb,GAAKob,KAAKU,QAAQpmB,KAAO,YAClCi8C,MAAO,CAAErqB,IAAKlM,KAAKU,QAAQ0+D,OAAOlzD,KAClCjxB,UAAW,oCAEf+kB,KAAK6nH,KAAO7nH,KAAKqQ,OAAOO,cAAc,MAAO,CAAE31B,UAAW,uBACrDylB,EAAQkmI,cAAe,CACxB5mI,KAAK43M,OAAS53M,KAAKqQ,OAAOO,cAAc,QAAS,CAC7ChsB,GAAIob,KAAKpb,GAAK,aACd3J,UAAW,kBAEf+kB,KAAKm0I,MAAQn0I,KAAKqQ,OAAOO,cAAc,OAAQ,CAC3C31B,UAAW,yDAA0Ds7C,MAAO,CACxEj8C,KAAM,OAAQ+Y,MAAO2M,KAAK2nH,kBAAkB,aAGpD3nH,KAAK+tG,UAAY/tG,KAAKqQ,OAAOO,cAAc,OAAQ,CAAE31B,UAAW,yBAChE+kB,KAAK+tG,UAAU58F,YAAYnR,KAAK43M,QAChC53M,KAAK6nH,KAAK12G,YAAYnR,KAAK+tG,WAC3B,IAAIgqG,EAAY,CACZ/0N,QAASgd,KAAK43M,OAAQj3I,eAAgB,QAASvqC,WAAY,CACvDsrC,YAAa1hE,KAAK2nH,kBAAkB,UACpCxnI,SAAU6f,KAAKqQ,OAAOlwB,WAG9BygF,EAAAA,EAAMa,YAAYs2I,EAAW/3M,KAAKqQ,OAAOO,eACzC5Q,KAAK+tG,UAAUx7F,cAAc,kBAAkBpB,YAAYnR,KAAKm0I,MACpE,CAQA,OAPAn0I,KAAKg4M,QAAUh4M,KAAKqQ,OAAOO,cAAc,MAAO,CAAE31B,UAAW,cAC7D+kB,KAAK2mH,KAAO3mH,KAAKqQ,OAAOO,cAAc,MAAO,CACzChsB,GAAIob,KAAKpb,GAAKob,KAAKU,QAAQpmB,KAAO,gBAClCW,UAAW,4BAEf+kB,KAAKg4M,QAAQ7mM,YAAYnR,KAAK2mH,MAC9B3mH,KAAK6nH,KAAK12G,YAAYnR,KAAKg4M,SACpBh4M,KAAK6nH,IAChB,EACA9P,EAAmB14G,UAAU66H,WAAa,SAAUx5H,GAChD,IAAIzS,EAAO,CACP0tF,YAAatoD,EAAAA,IACbwiF,WAAY71G,KAAKU,QAAQ9e,MAAOsjI,WAAYllH,KAAKU,QAAQpmB,KAAMiN,QAAQ,GAK3E,GAFA0G,EAAqB,YAAI+R,KACzBA,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAsBplC,GACrCA,EAAK1G,OACLmZ,EAAQnZ,OAAS0G,EAAK1G,WAD1B,CAIAyY,KAAKm9G,UAAY,IAAIkI,EAAAA,GAAO,CACxBj3H,SAAS,EAAOm4D,QAASvmD,KAAK6nH,KAC9Br2G,MAAOxR,KAAKglH,YAAYhmH,KAAKgB,MAC7B2qC,UAAW3qC,KAAKqQ,OAAOs6B,UACvBoJ,QAASpmC,EAAAA,EAAAA,KAAkBg4G,EAAAA,EAAAA,IAAajlH,EAAQy9B,OAAQ,cACjDn+B,KAAKqQ,OAAOrtB,QAAQ4zC,UAAUM,SAAS,YAAc,IAAM,IAClEiH,OAAQn+B,KAAKqQ,OAAOrtB,QAAS4iI,kBAAmB,CAAE9zD,OAAQ,QAC1DmP,QAAS,CAAC,CACF7Z,MAAOpnD,KAAK0nH,SAAS1oH,KAAKgB,MAC1B0lH,YAAa,CACTn/D,QAASvmD,KAAK2nH,kBAAkB3nH,KAAKgpB,QAAU,WAAa,gBAC5D7oC,SAAU6f,KAAKqQ,OAAOlwB,SAAW,aAAoB6f,KAAKqQ,OAAOlwB,SAAW,YAC5E6Y,WAAW,IAGnB,CACIouD,MAAOpnD,KAAK0nH,SAAS1oH,KAAKgB,MAC1B0lH,YAAa,CAAEvlI,SAAU6f,KAAKqQ,OAAOlwB,SAAW,UAAiB6f,KAAKqQ,OAAOlwB,SAAW,SACpFomE,QAASvmD,KAAK2nH,kBAAkB3nH,KAAKgpB,QAAU,eAAiB,kBAE5Ew8F,QAASxlH,KAAKylH,cAAczmH,KAAKgB,MACjCzf,KAAMyf,KAAKwjK,WAAWxkK,KAAKgB,MAC3B7f,SAAU6f,KAAKqQ,OAAOlwB,SAAW6f,KAAKqQ,OAAOlwB,SAAW,KAM5D,GAHA6f,KAAKm9G,UAA+B,kBAAI,EACxCn9G,KAAKi4M,uBAAuBv3M,GAC5BV,KAAK4nH,IAAItxF,aAAa,aAAct2B,KAAK2nH,kBAAkB,0BACvDjnH,EAAQk3H,mBACYh1H,SAAS2P,cAAc,4DAC7BpB,YAAYnR,KAAK4nH,UAG/B5nH,KAAKqQ,OAAOrtB,QAAQmuB,YAAYnR,KAAK4nH,KAEzC5nH,KAAKm9G,UAAUpyE,SAAS/qC,KAAK4nH,KAC7B5nH,KAAKm9G,UAAUn6H,QAAQu0C,MAAMk4C,UAAY/uE,EAAQk3H,mBAAqB,OAAS53H,KAAKU,QAAQszC,OAAS,KACrGh0C,KAAKm9G,UAAUj4C,OACDllE,KAAKm9G,UAAUn6H,QAAQuvB,cAAc,kBAC3CpB,YAAYnR,KAAK6nH,MACzB7nH,KAAKu5C,cACA5rC,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAOksJ,mBAAoE,YAA/Cv8J,KAAKqQ,OAAOksJ,iBAAiBC,gBAIjFzzD,EAAAA,EAAAA,IAAc,CAAE5qE,OAAQn+B,KAAKg4M,QAAS73N,SAAU6f,KAAKqQ,OAAOlwB,SAAW6f,KAAKqQ,OAAOlwB,SAAW,MAAQ6f,KAAKqQ,OAAOO,gBAClHgtF,EAAAA,EAAAA,IAAY59F,KAAKg4M,UAJjBh4M,KAAKqQ,OAAOssJ,iBAAYzhL,EAAW8kB,KAAKm9G,UAAUn6H,SAMtDgd,KAAK4mH,YAjDL,CAkDJ,EACA7O,EAAmB14G,UAAU44M,uBAAyB,SAAUv3M,GACxDA,EAAQk3H,qBACR53H,KAAKm9G,UAAUl8C,QAAU,CAAC,CAAC,GAC3BjhE,KAAKm9G,UAAUhrE,SAAW,CAAE00B,EAAG,GAAIC,EAAG,IACtC9mE,KAAKm9G,UAAUh/E,OAASv7B,SAAS2P,cAAc,oDAC/CvS,KAAKm9G,UAAUppE,MAAQ,OAE/B,EACAgkE,EAAmB14G,UAAUomH,cAAgB,SAAUhqI,GAC/CukB,KAAKU,QAAQk3H,mBACb53H,KAAKm9G,UAAUn6H,QAAQu0C,MAAMmM,KAAO,MAG/B9Q,EAAAA,GAAQY,SAITxzB,KAAKm9G,UAAUhrE,SAAW,CAAE00B,EAAG,SAAUC,EAAG,WAH5Ci/C,EAAAA,EAAAA,IAAqB/lH,KAAKU,QAAQy9B,OAAQn+B,KAAKm9G,WAMnDn9G,KAAKU,QAAQ0+D,OAAO+mD,gBACpBnmH,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAA4B53C,EAEvD,EACAs8H,EAAmB14G,UAAUylH,WAAa,SAAUpkH,GAChDV,KAAKw7B,YAAY96B,GACjBV,KAAKynH,iBAAiB/mH,GACtBV,KAAKk6H,WAAWx5H,EACpB,EACAq3G,EAAmB14G,UAAU2lH,YAAc,WACvC,GAAIhlH,KAAKm9G,YAAcn9G,KAAKm9G,UAAUviF,YAAa,CAC/C56B,KAAKk4M,UAAW,EAChB,IAAIC,EAAoBn4M,KAAKU,QAAQ0zG,QAAQj2H,QAAO,SAAUg4H,GAAO,OAAOA,EAAIwwB,uBAAyB,IAErG0E,EAAqBrrI,KAAKqQ,OAAOg7H,mBACjC8sE,EAAkBlgO,UAAW01B,EAAAA,EAAAA,IAAkB09H,IAAuBA,EAAmB+sE,oBACzFp4M,KAAKqQ,OAAOwqH,gBAAgB,CAAC,wBAE5B76H,KAAKqQ,OAAOyrF,SAAW97F,KAAKqQ,OAAOu4C,aAA0C1tE,IAAhC8kB,KAAKqQ,OAAOwqH,kBAC1D5V,EAAAA,EAAAA,IAAuBjlH,KAAKqQ,OAAQ,CAAC,uBAEzCrQ,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAwB,CAAEzxC,MAAOoe,KAAKU,QAAQ9e,QACjEoe,KAAKm9G,UAAUz1F,UACf1nB,KAAKknD,gBACLvxB,EAAAA,EAAAA,IAAO31B,KAAK4nH,KACZ5nH,KAAK4nH,IAAM,KACX5nH,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAA0B,CAAC,EAClD,CACJ,EAMA0kF,EAAmB14G,UAAU8oH,YAAc,SAAUhS,GAEjD,IAAIloH,EAAO,CAAExN,SAAUuf,KAAMwM,QAASxM,KAAKmoH,YAAa5gI,QAAQ,GAChEyY,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAoBplC,GACnCA,EAAK1G,QAGTyY,KAAKU,QAAQ8L,QAAQ,CAAEvJ,OAAQ,eAAgBrhB,MAAOu0H,EAAMA,EAAIv0H,MAAQoe,KAAKU,QAAQ9e,OACzF,EACAm2H,EAAmB14G,UAAUqoH,SAAW,SAAUjsI,GAC9C,GAAIukB,KAAKk3M,YAAa,CAClB,GAAwC,UAAnCz7N,EAAE0iD,OAAOhI,QAAQ93C,eAA6B5C,EAAE0iD,OAAOvH,UAAUM,SAAS,kBAC7D,KAAdz7C,EAAEu+D,QACGh6C,KAAKm3M,0BACNn3M,KAAKooH,qBAGR,CACD,IAAIrwI,EAAO0D,EAAE0iD,OAAOo9E,WAAWz0D,YAAYzoE,cACvC2hB,KAAK2nH,kBAAkB3nH,KAAKgpB,QAAU,WAAa,gBAAgB3qC,gBAAkBtG,EAChFioB,KAAKm3M,0BACNn3M,KAAKooH,iBAGJpoH,KAAK2nH,kBAAkB,eAAetpI,gBAAkBtG,GAC7DioB,KAAKmoH,aAEb,CACAnoH,KAAKglH,aACT,KAC8C,UAAnCvpI,EAAE0iD,OAAOhI,QAAQ93C,gBACxB2hB,KAAKmoH,cACLnoH,KAAKglH,eAELhlH,KAAKU,QAAQ0+D,OAAO+mD,gBACpBnmH,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAmC,CAAC,EAE/D,EAKA0kF,EAAmB14G,UAAU+oH,eAAiB,WAC1C,IASIiwF,EATAroM,EAAQhQ,KACRrkB,EAAU,GAAG0hB,MAAMqC,KAAKM,KAAK2mH,KAAK71G,iBAAiB,mDACnDwnM,EAAQ38N,EACRyhI,EAAO,QACPm7F,EAAWv4M,KAAKm9G,UAAUn6H,QAAQuvB,cAAc,mBAChDgmM,IACAv4M,KAAKU,QAAQkgF,SAAWw8B,EAAOm7F,EAAS18K,cAAc,GAAGt+C,OAE7DyiB,KAAKmjI,eAA2C,aAA1BnjI,KAAKU,QAAQkgF,SAE9B5gF,KAAKU,QAAQkmI,gBACdyxE,EAAcr4M,KAAK+tG,UAAUx7F,cAAc,mBAE/C,IAYIh1B,EACAogB,EACA1lB,EACAuuI,EAfAgyF,EAAUx4M,KAAKU,QAAQsmI,mBACvB1sI,EAAW,CACX1Y,MAAOoe,KAAKU,QAAQ9e,MAAOuiG,UAAWnkF,KAAKmjI,eAAiB,MAAQ,KAAMj3H,IAAKlM,KAAKU,QAAQwL,IAC5F00E,SAAUw8B,EAAM9iI,KAAM0lB,KAAKU,QAAQpmB,KAAM4yG,UAAWsrH,EAASv5H,aAAcj/E,KAAKU,QAAQu+E,cAExFw5H,EAAaz4M,KAAK04M,WAAa/8N,EAAQ1D,QAAU+nB,KAAK04M,SAAW/8N,EAAQ1D,OAAS0D,EAAQ1D,OAC1FwgO,GAAcJ,GAAqC,KAAtBA,EAAY96N,QACzC6/H,EAAOp9G,KAAKmjI,eAAiB,QAAU,WACvCxnJ,EAAU,GAAG0hB,MAAMqC,KAAKM,KAAK2mH,KAAK71G,iBAAiB,iCACnDxW,EAAS6pF,UAAYnkF,KAAKmjI,eAAiB,KAAO,MAClD7oI,EAASsmF,SAAWw8B,GAMxB,IAAI21F,EAAO,GACX,GAAIp3N,EAAQ1D,SAAW+nB,KAAK04M,UAAaL,GAAeA,EAAY96N,OAA+B,KAAtB86N,EAAY96N,MAAe,CACpG,IAAK,IAAI4nB,EAAI,EAAGA,EAAIxpB,EAAQ1D,OAAQktB,IAAK,CACrC5nB,EAAQyiB,KAAKvhB,QAAOknI,EAAAA,EAAAA,IAAahqI,EAAQuD,SAASimB,EAAE/pB,WAAY,KAAM,YAAYgmD,aAAa,QAC/FolF,GAAO73G,EAAAA,EAAAA,IAAO,CAAC,EAAG,CAAEpxB,MAAOA,GAAS+c,GAChC/c,IAAUA,EAAMnC,WAAWnD,SAC3BuuI,EAAK5lC,SAAW63H,EAAa,WAAa,SAEhC,KAAVl7N,IAAgBowB,EAAAA,EAAAA,IAAkBpwB,GAClCw1N,EAAOA,EAAKpyN,OAAOo3H,EAAmB4gG,4BAA4Br+M,IAGlEy4M,EAAKtzN,KAAK+mI,GAEd,IAAIv4H,EAAO,CACPxN,SAAUuf,KAAMwM,QAASxM,KAAKooH,eAAgB2T,KAAMvV,EAAK5kI,MAAOo6I,KAAMxV,EAAKriC,UAAW83C,KAAMzV,EAAK5lC,SACjGs7C,KAAM1V,EAAKt5B,UAAWivC,KAAM3V,EAAKvnC,aAAcm9C,KAAM5V,EAAKjpI,MAAOgK,QAAQ,GAG7E,GADAyY,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAoBplC,GACnCA,EAAK1G,OACL,MAER,CAWA,GAV2B,SAAtByY,KAAKU,QAAQpmB,MAAyC,aAAtB0lB,KAAKU,QAAQpmB,OAAwBg+N,EAAMrgO,SAC5EA,EAASqgO,EAAMrgO,OAAS,EACxB0lB,EAAMqC,KAAKvhB,QAAOknI,EAAAA,EAAAA,IAAa2yF,EAAMp5N,SAASjH,EAAOmD,WAAY,KAAM,YAAYgmD,aAAa,SAC5FzzB,EAAAA,EAAAA,IAAkBhQ,IAAQ86M,GAC1B1F,EAAKtzN,KAAK,CACNmC,MAAO0Y,EAAS1Y,MAAOsrG,UAAW5yF,EAAS4yF,UAAWtM,SAAU,QAChEuD,UAAW,MAAO5mG,MAAO,QAIjCyiB,KAAK2mH,KAAKp0G,cAAc,mBAAqBvS,KAAK2mH,KAAKp0G,cAAc,kBAAkBqkB,UAAUM,SAAS,WAAY,CACtH,IAAI0hL,EAAsB54M,KAAK25H,kBAAkB35H,KAAKU,QAAQ9e,OAC9D,IAAIg3N,EAcA,OALA,IARA,IAAI7pM,EAAU,SAAUyH,GACfu8L,EAAKprM,MAAK,SAAU9hB,GACrB,OAAOA,EACFtI,QAAUq7N,EAAoB15N,SAASs3B,EAAEp7B,WAAY,KAAKmC,KACnE,KACIw1N,EAAKtzN,KAAKm5N,EAAoB15N,SAASs3B,EAAEp7B,WAAY,KAE7D,EACSo7B,EAAI,EAAGA,EAAIoiM,EAAoB3gO,OAAQu+B,IAC5CzH,EAAQyH,EAMpB,CACAxW,KAAK64M,eAAe9F,EACxB,KACK,CACD,IAAI+F,EAAgB94M,KAAKU,QAAQ05H,gBAAgBzyH,MAAK,SAAUpqB,GAC5D,OAAOyyB,EAAMtP,QAAQ9e,QAAUrE,EAAMqE,KACzC,IACIk3N,GACA94M,KAAKmoH,aAEb,CACJ,EAGApQ,EAAmB4gG,4BAA8B,SAAUr+M,GACvD,IAAIy4M,EAAO,GAeX,MAdsB,WAAlBz4M,EAAShgB,MACTy4N,EAAKtzN,KAAK,CACNmC,MAAO0Y,EAAS1Y,MAAOq9F,aAAc3kF,EAAS2kF,aAAciO,UAAW5yF,EAAS4yF,UAChFtM,SAAUtmF,EAASsmF,SAAUuD,UAAW7pF,EAAS6pF,UAAW5mG,MAAO,KAG3Ew1N,EAAKtzN,KAAK,CACNmC,MAAO0Y,EAAS1Y,MAChBsrG,UAAW5yF,EAAS4yF,UAAWtM,SAAUtmF,EAASsmF,SAAUuD,UAAW7pF,EAAS6pF,UAAW5mG,MAAO,OAEtGw1N,EAAKtzN,KAAK,CACNmC,MAAO0Y,EAAS1Y,MAAOsrG,UAAW5yF,EAAS4yF,UAAWtM,SAAUtmF,EAASsmF,SACzEuD,UAAW7pF,EAAS6pF,UAAW5mG,WAAOrC,IAEnC63N,CACX,EAGAh7F,EAAmB14G,UAAUw5M,eAAiB,SAAU/8E,GACpD,IACI33C,EADA40H,EAAWj9E,EAAM,GAErB,KAAKnuH,EAAAA,EAAAA,IAAkBorM,GAAW,CAC9B50H,EAAY40H,EAASv8E,YAAcu8E,EAASv8E,YACxC,IAAIv5C,EAAAA,EAAU81H,EAASn3N,MAAOm3N,EAASn4H,SAAUm4H,EAASx7N,OAAQw7N,EAAS7rH,UAAW6rH,EAAS95H,cACnG,IAAK,IAAIzoE,EAAI,EAAGA,EAAIslH,EAAM7jJ,OAAQu+B,IAC9B2tE,OAA8DjpG,IAAlD4gJ,EAAM58I,SAASs3B,EAAEp7B,WAAY,KAAKohJ,YAC1Cr4C,EAAU23C,EAAM58I,SAASs3B,EAAEp7B,WAAY,KAAK+oG,WAAW23C,EAAM58I,SAASs3B,EAAEp7B,WAAY,KAAKohJ,aACzFr4C,EAAU23C,EAAM58I,SAASs3B,EAAEp7B,WAAY,KAAK+oG,WAAW23C,EAAM58I,SAASs3B,EAAEp7B,WAAY,KAAKwG,MAAOk6I,EAAM58I,SAASs3B,EAAEp7B,WAAY,KAAKwlG,SAAUk7C,EAAM58I,SAASs3B,EAAEp7B,WAAY,KAAKmC,OAAQu+I,EAAM58I,SAASs3B,EAAEp7B,WAAY,KAAK8xG,UAAW4uC,EAAM58I,SAASs3B,EAAEp7B,WAAY,KAAK6jG,cAE7Q,IAAIhxF,EAAO,CACPgV,OAAQ,YAAas5H,iBAAkBT,EAAOl6I,MAAOoe,KAAKU,QAAQ9e,MAClE46I,YAAav5C,EAAAA,EAAUC,GAAGiB,IAE9BnkF,KAAKU,QAAQ8L,QAAQve,EACzB,CACJ,EACA8pH,EAAmB14G,UAAUk3G,gBAAkB,SAAUJ,GACrD,QAAOA,EAAII,iBAAkBJ,EAAII,iBACrC,EACAwB,EAAmB14G,UAAUw4M,kBAAoB,WAC7C,IAAI7nM,EAAQhQ,KACRrC,EAAMqC,KAAK43M,OAAOr6N,MAClB6hF,EAASp/D,KAAKU,QAAQ0+D,OACtBgd,EAAQp8E,KAAKu2G,gBAAgBn3C,GAAUp/D,KAAKi3M,gBAAgB/nM,QAAUlP,KAAKU,QAAQ07E,MAAMltE,QACzF8pM,EAAeh5M,KAAKU,QAAQ07E,MAAMltE,QAClCwiF,EAAOtV,EAAMW,QAAQ5+F,QAAO,SAAU1C,GAAK,OAAOA,GAAc,YAATA,EAAEgkB,EAAkB,IAAG,GAClF28E,EAAMW,QAAU,GAChBi8H,EAAaj8H,QAAU,GACvB,IAAI8N,EAAgC,WAAtB7qF,KAAKU,QAAQpmB,MAAqB2rC,WAAWtoB,GAAQsoB,WAAWtoB,GAAOA,EACjFijF,EAAW5gF,KAAKU,QAAQ41G,SACD,WAAtBt2G,KAAKU,QAAQpmB,KAAoB,WAAa,QAAY0lB,KAAKU,QAAQpmB,KAAO,WAAa,QAC5F4yG,GAAY,EACZjO,EAAej/E,KAAKU,QAAQu+E,aAC5Br9F,EAAQoe,KAAKu2G,gBAAgBn3C,GAAUA,EAAO43C,gBAAkB53C,EAAOx9E,MAC3EipG,EAAqB,KAAXA,QAA4B3vG,IAAX2vG,OAAwB3vG,EAAY2vG,EAC/D,IAKIouH,EALAlG,EAAO,GACPz4M,EAAW,CACX1Y,MAAOA,EAAOuiG,UAAW,KAAMj4E,IAAKlM,KAAKU,QAAQwL,IACjD00E,SAAU,QAAStmG,KAAM0lB,KAAKU,QAAQpmB,KAAM4yG,UAAWA,EAAWjO,aAAcA,GAGhFnoB,EAAa92D,KAAKU,QAAQ87E,YAAYuO,QAAQnvD,cAsBlD,GArB0B,YAAtB57B,KAAKU,QAAQpmB,YACEY,IAAX2vG,IACsF,IAAtF7qF,KAAK2nH,kBAAkB,cAActpI,cAAciY,QAAQu0F,EAAOxsG,eAClEwsG,EAAS,YAEO3vG,IAAX2vG,IACkF,IAAvF7qF,KAAK2nH,kBAAkB,eAAetpI,cAAciY,QAAQu0F,EAAOxsG,iBACnEwsG,EAAS,cAEE3vG,IAAX2vG,IACsF,IAAtF7qF,KAAK2nH,kBAAkB,cAActpI,cAAciY,QAAQu0F,EAAOxsG,gBAAyBy4E,GAEjFA,IAAV+zB,GAAiE,QAEjD3vG,IAAX2vG,IACkF,IAAvF7qF,KAAK2nH,kBAAkB,eAAetpI,cAAciY,QAAQu0F,EAAOxsG,gBAAyBy4E,IAElFA,IAAV+zB,GAAiE,GAErEjK,EAAW,UAEY,SAAtB5gF,KAAKU,QAAQpmB,MAAyC,aAAtB0lB,KAAKU,QAAQpmB,MAA6C,aAAtB0lB,KAAKU,QAAQpmB,OAAwB0lB,KAAKU,QAAQlnB,OAAQ,CAC/H,IAAIk7N,EAAO,IAAI1sL,EAAAA,GACXxuC,EAA0C,kBAAzBwmB,KAAKU,QAAQlnB,OAAuBwmB,KAAKU,QAAQlnB,OAClEwmB,KAAKU,QAAQlnB,OAAOA,OAEpBqxG,EADArxG,GACSk7N,EAAKjsL,UAAU9qB,EAAK,CAAEnkB,OAAQA,KAG9B,IAAI8F,KAAKqe,GAEI,aAAtBqC,KAAKU,QAAQpmB,OACbuwG,EAASA,EAAOtoG,cAAgB,KAAMsxN,EAAAA,EAAAA,IAAQhpH,EAAOroG,WAAa,GAAK,KAAMqxN,EAAAA,EAAAA,IAAQhpH,EAAOnoG,WAEpG,CACAsd,KAAKk5M,YAAY98H,GACjB,IAAInuF,EAAO,CACP0tF,YAAatoD,EAAAA,IACb8lL,YAAan5M,KAAM61G,WAAYj0H,EAAOw9E,OAAQA,EAC9CwhB,SAAUA,EAAUsM,UAAWA,EAAWjO,aAAcA,EAAcm6H,kBAAmB,KACzFh9H,MAAOA,EAAO7+F,MAAOstG,GAEzB7qF,KAAKqQ,OAAOylB,QAAQzC,EAAAA,IAAoBplC,GAAM,SAAUorN,GAIpD,GAFAA,EAAWz4H,SAAWy4H,EAAWz4H,SACjCq4H,EAAW,IAAIh2H,EAAAA,EAAUrhG,EAAOy3N,EAAWz4H,SAAU3yF,EAAK1Q,MAAO87N,EAAWnsH,UAAWmsH,EAAWp6H,cACvE,SAAvBjvE,EAAMtP,QAAQpmB,MAA0C,aAAvB01B,EAAMtP,QAAQpmB,MAA8C,aAAvB01B,EAAMtP,QAAQpmB,KAAqB,CAEzG,IAAIuoI,EAAY,CACZjhI,MAAOA,EAAOg/F,SAFlBA,EAAW,QAE2BrjG,MAAOstG,EAAQqC,UAAWA,EAC5DjO,aAAcA,IAEbtxE,EAAAA,EAAAA,IAAkBk9E,KACnBouH,GAAWh5C,EAAAA,EAAAA,IAAiBp9C,EAAW7yG,EAAMtP,QAAQpmB,MAE7D,CACA,GAAIqjB,GAAsB,kBAARA,GAAoBqS,EAAMkoM,UACxCloM,EAAM23G,kBAAkB,UAAUtpI,cAAciY,QAAQqH,EAAItf,gBAAkB,EAAG,CACjF00N,EAAOA,EAAKpyN,OAAOo3H,EAAmB4gG,4BAA4Br+M,IAClE,IAAIg/M,EAAmBvhG,EAAmBwhG,kBAAkBxG,GAC5DuG,EAAiBr0H,WAAWxlG,KAAKw5N,GACjC78H,EAAML,MAAMu9H,EAChB,MACS37M,EAAI1lB,QACTghO,GAAYtrM,EAAAA,EAAAA,IAAkB+jF,GAA+BunH,EAAvBA,EAAS9rH,IAAIuE,EAAKj2G,GACxD2gG,EAAML,MAAMk9H,KAENtrM,EAAAA,EAAAA,IAAkB+jF,IACxBtV,EAAML,MAAM2V,EAAKj2G,GAErB49N,EAAWD,mBAAqBzrM,EAAAA,EAAAA,IAAkB0rM,EAAWD,mBAAoD,IAA/BC,EAAWD,kBAC7F,IAAI3gG,EAAa,CAAC,IAClB7a,EAAAA,EAAAA,IAAY5tF,EAAMgoM,SAClBhoM,EAAMigJ,aAAc,EAChBjgJ,EAAMumG,gBAAgBn3C,IAAWzhE,EAAI1lB,SACtB,WAAYmnF,EAAO/lF,WAAc,IAAIuyG,EAAAA,EAAYxsB,EAAO/lF,WAAW+F,QAC9EggF,EAAO/lF,YAEHkzG,aAAanQ,GAAOj1F,MAAK,SAAU1L,GACvC,IAAI68H,EAAatoG,EAAMtP,QAAQ0+D,OAAOk5C,WACtCtoG,EAAMtP,QAAQ0+D,OAAOk5C,WAAa78H,EAAE2D,OACpC4wB,EAAMK,OAAO0W,OAAOsM,EAAAA,IAAsB,CAAE8wD,UAAWs0B,EAAYr5C,OAAQA,IACvEq5C,EAAWt0B,UAAUc,WAAWhtG,OAChC+gO,EAAaj9H,MAAM08B,EAAWt0B,WAG9Bn0E,EAAMigJ,aAAc,EAExBjgJ,EAAMtP,QAAQ0+D,OAAOk5C,WAAaA,EAClC0gG,EAAal9H,KAAKu9H,EAAWD,mBAC7BppM,EAAMhP,OAAOq4M,EAAYL,EAC7B,KAGA58H,EAAMN,KAAKu9H,EAAWD,mBACtBppM,EAAMhP,OAAOq4M,EAAYj9H,GAEjC,GACJ,EACA27B,EAAmB14G,UAAU2B,OAAS,SAAU/S,EAAMmuF,GAC9Cp8E,KAAKqQ,OAAOh3B,YAAc,WAAY2mB,KAAKqQ,OAAOh3B,WAClD2mB,KAAKw5M,YAAYvrN,EAAMmuF,GAGvBp8E,KAAKy5M,cAAcr9H,EAE3B,EACA27B,EAAmB14G,UAAUq6M,qBAAuB,SAAUtlG,EAAS2/F,GAMnE,IALA,IAAI9uH,EAAa8yB,EAAmBtjB,aAAa2f,EAAS2/F,GACtDv/G,EAAgB,GAChBikB,EAAa,CAAC,EACdkhG,OAA8Cz+N,IAArC8kB,KAAKqQ,OAAO0mG,qBACrBO,EAAgBqiG,EAAS35M,KAAKqQ,OAAO0mG,uBAAyB,GACzDxoG,EAAK,EAAGvoB,EAAKnH,OAAOC,KAAKmmG,GAAa12E,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CACjE,IAAI4E,EAAOntB,EAAGuoB,GACV4nG,OAAM,EACNwjG,IAAW35M,KAAKqQ,OAAOslG,iBAAiBxiG,KACxCgjG,GAAMkC,EAAAA,EAAAA,IAA2BllG,EAAMmkG,IAEvCnB,GACAn2G,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAsB,CAAE8wD,UAAWs0B,EAAYr5C,OAAQ+2C,IACtEsC,EAAWt0B,UAAUc,WAAWhtG,QAChCu8G,EAAc/0G,KAAKwjG,EAAAA,EAAUC,GAAGu1B,EAAWt0B,UAAUc,cAIzDuP,EAAc/0G,KAAKwlG,EAAW,GAAK9xE,GAE3C,CACA,OAAOqhF,EAAcv8G,QAAUgrG,EAAAA,EAAUkK,IAAIqH,EACjD,EACAujB,EAAmB14G,UAAU8qF,SAAW,WACpC,OAAOnqF,KAAKqQ,OAAO85E,SAAWnqF,KAAKqQ,OAAO85E,WAAWj7E,QAAU,IAAI8uE,EAAAA,CACvE,EACA+5B,EAAmB14G,UAAUunH,WAAa,WACtC,IAAI52G,EAAQhQ,KACZA,KAAK45M,aAAc,EACnB,IAAIx9H,EAAQp8E,KAAKmqF,WACjB/N,EAAM4U,gBACNhxF,KAAKk5M,YAAY98H,GACjB,IAAInuF,EAAO,CACP0tF,YAAatoD,EAAAA,IAA4B+oD,MAAOA,EAAOg9H,kBAAmB,MAG9EnrN,EAAqB,YAAI+R,KACzBA,KAAKqQ,OAAOylB,QAAQzC,EAAAA,IAAoBplC,GAAM,SAAUA,GACpDA,EAAKmrN,mBAAqBzrM,EAAAA,EAAAA,IAAkB1f,EAAKmrN,mBAA8C,IAAzBnrN,EAAKmrN,kBAC3Eh9H,EAAMN,KAAK7tF,EAAKmrN,mBACXnrN,EAAKmuF,MAAMiF,UAAUppG,SACtB+3B,EAAM4pM,aAAc,EACpB5pM,EAAM6pM,cAAcz9H,IAEpBpsE,EAAMK,OAAOh3B,YAAc,WAAY22B,EAAMK,OAAOh3B,WACpD22B,EAAMwpM,YAAYvrN,EAAMmuF,GAGxBpsE,EAAMyxG,qBAAqBrlC,GAAO,EAE1C,GACJ,EACA27B,EAAmB14G,UAAU65M,YAAc,SAAU98H,GACjD,IAAI09H,EAAiBx8H,EAAAA,EAASgT,SAAStwF,KAAKU,QAAQ05H,gBAAiB,SAKrE,OAJI0/E,EAAexjN,QAAQ0J,KAAKU,QAAQ0+D,OAAOx9E,SAAW,IACtDk4N,EAAiBA,EAAen5N,OAAOqf,KAAKU,QAAQ0+D,OAAOx9E,QAE/Dw6F,EAAMkU,SAASwpH,GACR19H,CACX,EACA27B,EAAmB14G,UAAUm6M,YAAc,SAAUvrN,EAAMmuF,GACvD,IAAIpsE,EAAQhQ,KACRuiH,GAAS3J,EAAAA,EAAAA,IAAa3qH,EAAMmuF,GAChCp8E,KAAKqQ,OAAOylB,QAAQzC,EAAAA,IAAwBkvF,EAAOt8H,OACzCs8H,EAAO10B,SACb3mG,QAAQC,MAAK,SAAU1L,GACvBu0B,EAAM4pK,YAAYn+L,EACtB,GACJ,EACAs8H,EAAmB14G,UAAUoiH,qBAAuB,SAAUrlC,EAAOg0B,GACjE,IAAIpgG,EAAQhQ,KACZA,KAAKU,QAAQrnB,WAAa2mB,KAAKU,QAAQrnB,sBAAsBuyG,EAAAA,EACzD5rF,KAAKU,QAAQrnB,WAAa,IAAIuyG,EAAAA,EAAY5rF,KAAKU,QAAQrnB,YAC3D,IAAI0gO,EAAa,GACbC,EAAW,GACf,GAAIh6M,KAAKu2G,gBAAgBv2G,KAAKU,QAAQ0+D,SAAWgxC,EAAW,CACxD,IAAI6pG,EAAW,WAAYj6M,KAAKU,QAAQ0+D,OAAO/lF,WAC3C,IAAIuyG,EAAAA,EAAY5rF,KAAKU,QAAQ0+D,OAAO/lF,WAAW+F,QAC/C4gB,KAAKU,QAAQ0+D,OAAO/lF,WACxB2mB,KAAKi3M,gBAAgB3uM,OAAS8zE,EAAM9zE,OACpCyxM,EAAWt6N,KAAKw6N,EAAQ1tH,aAAavsF,KAAKi3M,kBAC1C+C,EAASv6N,MAAK,SAAUoG,GAAQ,OAAOmqB,EAAM0oG,eAAiB7yH,CAAM,GACxE,CACAk0N,EAAWt6N,KAAKugB,KAAKU,QAAQrnB,WAAWkzG,aAAanQ,IACrD49H,EAASv6N,KAAKugB,KAAK45K,YAAY56K,KAAKgB,OACpC,IAAImF,EAAI,EACRhK,QAAQ5U,IAAIwzN,GAAY5yN,MAAK,SAAU1L,GACnC,IAAK,IAAI+6B,EAAI,EAAGA,EAAI/6B,EAAExD,OAAQu+B,IAC1BwjM,EAAS70M,KAAK1pB,EAAEyD,SAASs3B,EAAEp7B,WAAY,KAAKgE,OAEpD,GACJ,EACA24H,EAAmB14G,UAAUu6K,YAAc,SAAUn+L,GACjDukB,KAAKk6M,SAAWz+N,EAChB,IAAI0+N,EAAQ,CAAE9gO,WAAY2mB,KAAKk6M,SAAU3tH,cAAc,EAAM3qG,MAAOoe,KAAKU,QAAQ9e,OAEjF,GADAoe,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAA+B8mL,GAC9CA,EAAM5tH,aAAc,CACpB,IAAInQ,EAAQ,IAAI4B,EAAAA,EACXh+E,KAAK45M,cACN55M,KAAK+zM,gBAAiB,EACtB/zM,KAAK65M,cAAcz9H,GACnBp8E,KAAK+zM,gBAAiB,GAG1B,IAAI30N,EAAS,IAAIwsG,EAAAA,EAAYuuH,EAAM9gO,YAAYg0G,aAAajR,GACxD+5B,EAAMn2G,KAAKU,QAAQ0+D,OACvBp/D,KAAK6hH,aAAe9J,EAAmB+J,YAAY1iI,EAAQ4gB,KAAKU,QAAQ9e,MAAOu0H,EAAKn2G,KAAK04G,eAAgB14G,MAAM89E,SAAW,EAC9H,CACA,IAAIj4F,EAAOs0N,EAAM5tH,aAAevsF,KAAK6hH,aAAes4F,EAAM9gO,WAC1D2mB,KAAKo6M,kBAAkB,MAAM,EAAMv0N,EAAMs0N,GACrCn6M,KAAK43M,QACL53M,KAAK43M,OAAOnmM,QAEhB,IAAIxjB,EAAO,CACP0tF,YAAatoD,EAAAA,IACbwiF,WAAY71G,KAAKU,QAAQ9e,MAAOsjI,WAAYllH,KAAKU,QAAQpmB,MAG7D2T,EAAqB,YAAI+R,KACzBA,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAyBplC,GACxC+R,KAAKm3M,2BACL/4G,EAAAA,EAAAA,IAAYp+F,KAAKg4M,QAEzB,EACAjgG,EAAmB14G,UAAUw6M,cAAgB,SAAUz9H,GACnD,GAAIp8E,KAAKqQ,OAAOumG,gBAAkB52G,KAAKqQ,OAAOumG,eAAe53H,IAAI/G,OAAQ,CACrE,IAAI0+H,EAAY32G,KAAKqQ,OAAOumG,eACxB/zH,EAAS8zH,EAAU9zH,OAAO5K,OAAS0+H,EAAU9zH,OAASmd,KAAKU,QAAQ0zG,QAAQt0H,KAAI,SAAU/B,GAAK,OAAOA,EAAE6D,KAAO,IAClHw6F,EAAMp7E,OAAO21G,EAAU33H,IAAK6D,EAAQ8zH,EAAU/1B,SAAU+1B,EAAU33B,WAAY23B,EAAU13B,aAC5F,CACA,GAAKj/E,KAAKU,QAAQ05H,gBAAgBniJ,OAAS,CAEvC,IADA,IAAI08H,EAAO,GACFxvG,EAAI,EAAGA,EAAInF,KAAKU,QAAQ05H,gBAAgBniJ,OAAQktB,IAAK,CAC1D,IAAIk1M,EAAer6M,KAAKU,QAAQ05H,gBAAgBl7I,SAASimB,EAAE/pB,WAAY,KACnE4kB,KAAKU,QAAQwL,KACbmuM,EAAanuM,IAAMmuM,EAAanuM,KAAOlM,KAAKqQ,OAAOslG,iBAAiB0kG,EAAaz4N,OAAOsqB,IACpFmuM,EAAanuM,MAAQlM,KAAKU,QAAQwL,KAClCyoG,EAAKl1H,KAAKugB,KAAKU,QAAQ05H,gBAAgBl7I,SAASimB,EAAE/pB,WAAY,OAI9Di/N,EAAaz4N,QAAUoe,KAAKU,QAAQ9e,OACpC+yH,EAAKl1H,KAAKugB,KAAKU,QAAQ05H,gBAAgBl7I,SAASimB,EAAE/pB,WAAY,KAG1E,CACA,IAAI+oG,EAAYnkF,KAAK05M,qBAAqB/kG,EAAM30G,KAAK+zM,gBACjD5vH,GACA/H,EAAML,MAAMoI,EAEpB,CACJ,EACA4zB,EAAmB14G,UAAU+6M,kBAAoB,SAAUh+H,EAAOg0B,EAAW/2H,EAAY4U,IACrF2vG,EAAAA,EAAAA,IAAY59F,KAAKg4M,SAKjBh4M,KAAK+zM,gBAAiB,EACtB/zM,KAAKs6M,eACLt6M,KAAK+zM,gBAAiB,EACtB,IAAIoG,EAAQ,CAAE9gO,WAAY2mB,KAAKk6M,SAAU/C,0BAA0B,EAAO/3I,OAAQp/D,KAAKU,QAAQ0+D,OAC3Fp8E,QAASgd,KAAK2mH,KAAMrsI,KAAM0lB,KAAKU,QAAQpmB,KAAMd,OAAQwmB,KAAKU,QAAQpmB,KAAMigO,OAAQv6M,KAAKU,QAAQk3H,mBAAqB,KAC9G53H,KAAKm9G,UAAUo9F,OAAO,GAAIxsG,UAAW/tG,KAAK+tG,WAClD/tG,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAqC8mL,GACxDn6M,KAAKm3M,yBAA2BgD,EAAMhD,yBACjCn3M,KAAKm3M,0BACNn3M,KAAKw6M,kBAAkBnhO,EAAY+2H,EAAWniH,EAEtD,EACA8pH,EAAmB14G,UAAUo6M,cAAgB,SAAUr9H,GACnDp8E,KAAKyhH,qBAAqBrlC,EAC9B,EACA27B,EAAmB14G,UAAUi7M,aAAe,WACxCt6M,KAAK5gB,OAAS,CAAC,EACf,IAAI+kG,EAAYnkF,KAAK05M,qBAAqB15M,KAAKU,QAAQ05H,gBAAiBp6H,KAAK+zM,gBACzE33H,EAAQ,IAAI4B,EAAAA,EACZmG,GACA/H,EAAML,MAAMoI,GAEhBnkF,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAoC,CAAE+oD,MAAOA,IAEhE,IADA,IACS7tE,EAAK,EAAG45B,EADJ,IAAIyjD,EAAAA,EAAY5rF,KAAKk6M,UAAU7sH,aAAajR,GACrB7tE,EAAK45B,EAASlwD,OAAQs2B,IAAM,CAC5D,IAAIhc,EAAM41C,EAAS55B,GACnBvO,KAAK5gB,QAAO68C,EAAAA,EAAAA,IAAUj8B,KAAKU,QAAQ9e,MAAO2Q,KAAQ,CACtD,CACJ,EACAwlH,EAAmB14G,UAAUspD,aAAe,SAAUltE,GAClD,IAAI0iD,EAAS1iD,EAAE0iD,OACf,IAAKxwB,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAOksJ,mBAAoE,YAA/Cv8J,KAAKqQ,OAAOksJ,iBAAiBC,iBAC9E72C,EAAAA,EAAAA,IAAaxnF,EAAQ,iBAD5B,CAIA,IAAI7rB,GAAOqzG,EAAAA,EAAAA,IAAaxnF,EAAQ,sBAIhC,IAHIwnF,EAAAA,EAAAA,IAAaxnF,EAAQ,gBACrBn+B,KAAK23M,eAAel8N,GAEpB62B,IAAStS,KAAKm3M,yBAA0B,CACxC,IAAIr+K,EAAYxmB,EAAKC,cAAc,gBAC/BumB,EACA94B,KAAKy6M,iBAAiB3hL,EAAUlC,UAAUM,SAAS,aAGnDs8K,EAAAA,EAAAA,IAAelhM,EAAK2mC,eAExBj5C,KAAK06M,0BACLpoM,EAAKC,cAAc,iBAAiBd,OACxC,CACAzR,KAAK26M,UAASh1F,EAAAA,EAAAA,IAAarzG,EAAM,YAhBjC,CAiBJ,EACAylG,EAAmB14G,UAAUykE,aAAe,SAAUroF,GAClDukB,KAAK26M,UAASh1F,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,YACzC,EACA45E,EAAmB14G,UAAUs7M,SAAW,SAAUroM,GAC9C,IAAIsoM,EAAW56M,KAAK4nH,IAAIr1G,cAAc,eAClCqoM,GACAA,EAAShkL,UAAUjB,OAAO,cAE1BrjB,GACAA,EAAKskB,UAAUzB,IAAI,aAE3B,EACA4iF,EAAmB14G,UAAUo7M,gBAAkB,SAAU9+N,GAErD,IADA,IACS4yB,EAAK,EAAGssM,EADJ,GAAGx9M,MAAMqC,KAAKM,KAAK2mH,KAAK71G,iBAAiB,iCAClBvC,EAAKssM,EAAS5iO,OAAQs2B,IAAM,CAC5D,IAAIo4G,EAAOk0F,EAAStsM,IACpBy/J,EAAAA,EAAAA,IAAqBrnD,EAAMhrI,IAC3BsyL,EAAAA,EAAAA,IAAWtnD,EAAKvb,gBAAiBzvH,EACrC,CACJ,EACAo8H,EAAmB14G,UAAUmkK,WAAa,WAClCxjK,KAAKqQ,OAAOrtB,QAAQ4zC,UAAUM,SAAS,cACvCl3B,KAAKm9G,UAAUn6H,QAAQuvB,cAAc,kBAAkBqkB,UAAUjB,OAAO,iBACnE31B,KAAKU,QAAQk3H,oBACd53H,KAAKm9G,UAAUn6H,QAAQuvB,cAAc,UAAUd,QAG3D,EACAsmG,EAAmB14G,UAAUy7M,eAAiB,SAAUv9N,EAAO5B,EAASkK,GACpE,IAAIysB,EAAO32B,EAAUqkB,KAAKo3M,SAAShmM,WAAU,GACzCpR,KAAKq3M,UAAUjmM,WAAU,IAC7B68J,EAAAA,EAAAA,IAAW37J,EAAKC,cAAc,SAAU52B,GACxC,IAAI/C,EAAQ05B,EAAKC,cAAc,YAC3BwoM,GAAY/F,EAAAA,EAAAA,IAAgB,CAAC,EAAGnvN,EAAM,CAAEu5E,OAAQp/D,KAAKU,QAAQ0+D,OAAQ/uD,OAAQrQ,KAAKqQ,SAWtF,GATAz3B,EAAM,IADUonB,KAAKU,QAAQsqD,kBAAoB,cAAgB,gBACxCr9C,EAAAA,EAAAA,IAAkBpwB,IAAUA,EAAMnC,WAAWnD,OAClE+nB,KAAKqQ,OAAOo2C,oBAAsBtB,EAAAA,GAAmBI,SAAShoE,GAASA,EAAQyiB,KAAK2nH,kBAAkB,UACtG/uI,EAAM24B,YAAcvR,KAAK2nH,kBAAkB,YAC3C3nH,KAAKk4M,UAAW,GAEC,mBAAV36N,IACP3E,EAAM24B,WAAsB,IAAVh0B,EAAiByiB,KAAK2nH,kBAAkB,cAAgB3nH,KAAK2nH,kBAAkB,iBAErGlxF,EAAAA,EAAAA,IAAS,CAAC79C,GAAQ,CAAC,yBACfonB,KAAKU,QAAQlK,UAAY3Q,EAAKma,KAAKU,QAAQ0+D,OAAOx9E,SAAWoe,KAAK2nH,kBAAkB,cACjF9hI,EAAKma,KAAKU,QAAQ0+D,OAAOx9E,SAAWoe,KAAK2nH,kBAAkB,uBAAwB,CACtF/uI,EAAM24B,UAAY,GAClB,IAAIspG,EAAkB76G,KAAKqQ,OAAOyrF,SAAW97F,KAAKU,QAAQ0+D,OAAOjhF,QACL,kBAA7C6hB,KAAKU,QAAQ0+D,OAAOjhF,OAAOmgH,aAEtCwc,EAAe96G,KAAKqQ,OAAO0qG,eAAiB/6G,KAAKqQ,OAAO0qG,cAAcC,eAEtEh7G,KAAKqQ,OAAO0qG,cAAcC,cAAclf,QACxC+e,GAAmBC,GACnB96G,KAAKU,QAAQlK,SAASukN,EAAW/6M,KAAKqQ,OAAQ,qBAAsB,KAAM,KAAM,KAAMz3B,GACtFonB,KAAKqQ,OAAO8qG,oBAGZC,EAAAA,EAAAA,IAAexiI,EAAOonB,KAAKU,QAAQlK,SAASukN,EAAW/6M,KAAKqQ,OAAQ,sBAE5E,CACA,OAAOiC,CACX,EACAylG,EAAmB14G,UAAUq7M,wBAA0B,WACnD,IAQIM,EARAn5J,EAAM7hD,KAAK2mH,KAAK/uI,SAASK,OAAS,EAClCgD,EAAY,GACZlC,GAAW,EACXu5B,EAAOtS,KAAK2mH,KAAKp0G,cAAc,gBAC/B01E,EAAWjoF,KAAK2mH,KAAK71G,iBAAiB,kDAAkD74B,OACxF+nB,KAAK2mH,KAAKp0G,cAAc,oBACxBsvC,GAAO,GAGN7hD,KAAKU,QAAQk3H,sBACdojF,EAAMh7M,KAAKm9G,UAAUo9F,OAAO,IACxBxhO,UAAW,GAEnB,IAAI+f,EAAQwZ,EAAK84F,iBACjB6iE,EAAAA,EAAAA,IAAWn1K,GAAO,GAClBA,EAAM4vD,eAAgB,EAClB7G,IAAQomC,GACRhtG,EAAY,CAAC,YACbgzL,EAAAA,EAAAA,IAAWn1K,GAAO,IAEbmvF,GACLhtG,EAAY,CAAC,UACb6d,EAAM4vD,eAAgB,IAGtBztE,EAAY,CAAC,aACblC,GAAW,EACPiiO,IACAA,EAAIjiO,UAAW,IAGnBiiO,IACAh7M,KAAKk3M,aAAe8D,EAAIjiO,SACxBiiO,EAAIjgL,aAER5D,EAAAA,EAAAA,IAAY,CAAC7kB,GAAO,CAAC,UAAW,SAAU,eAC1CmkB,EAAAA,EAAAA,IAAS,CAACnkB,GAAOr3B,GACjB+kB,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAiC,CAAEt6C,SAAUA,GACpE,EACAg/H,EAAmB14G,UAAUm7M,kBAAoB,SAAU30N,EAAMuqH,EAAW+pG,GACxE,IAAIn0N,EAAI+wC,EAEJikL,EADAC,EAASj7M,KAAKqQ,OAAOO,cAAc,OAEnC73B,GAAW,EACVinB,KAAKU,QAAQk3H,qBACdojF,EAAMh7M,KAAKm9G,UAAUo9F,OAAO,IAEhC,IAAIW,GAAe,EACfl8N,EAAM,UACLm7N,EAAM5tH,eACPvtG,EAAMm7N,EAAMv4N,OAEhB,IAAK,IAAIujB,EAAI,EAAGA,EAAItf,EAAK5N,OAAQktB,IAAK,CAClC,IAAIxH,GAAMyP,EAAAA,EAAAA,IAASpuB,EAAK6G,EAAK3G,SAASimB,EAAE/pB,WAAY,OACxC,KAARuiB,IAAcgQ,EAAAA,EAAAA,IAAkBhQ,MAChCu9M,GAA4B,EAEpC,CAEA,GADAl7M,KAAK04M,UAA4B,IAAjBwC,EAAqBr1N,EAAK5N,OAASijO,EAAcr1N,EAAK5N,OAClE4N,EAAK5N,SAAW+nB,KAAKiwJ,YAAa,CAClC,IAAIkrD,EAAiBn7M,KAAK2nH,kBAAkB,aACxCo/B,EAAW/mJ,KAAK2mH,KAAKp0G,cAAc,qBACnCw0I,GACAA,EAASnwH,UAAUjB,OAAO,oBAE9B,IAAIslJ,EAAWj7K,KAAK86M,eAAeK,GAAgB,IAAQn1N,EAAK,CAAC,GAAMga,KAAKU,QAAQ9e,OAASu5N,EAAgBn1N,IACzGga,KAAKqQ,OAAOlwB,YAC+B,IAAvC6f,KAAKqQ,OAAOlwB,SAASmW,QAAQ,MAC7BmgC,EAAAA,EAAAA,IAAS,CAACwkJ,GAAWj7K,KAAKqQ,OAAOlwB,SAAS8T,MAAM,OAGhDwiC,EAAAA,EAAAA,IAAS,CAACwkJ,GAAW,CAACj7K,KAAKqQ,OAAOlwB,YAG1C,IAAI24C,GAAY26K,EAAAA,EAAAA,KAAmBxwD,EAAAA,EAAAA,IAAO,QAASg4B,EAAU,YAC7DniJ,EAAUvmB,cAAc,YAAYqkB,UAAUzB,IAAI,eAClD8lL,EAAO9pM,YAAY2nB,GACnB,IAAIqrD,EAAY,IAAIlB,EAAAA,EAAU,QAAS,QAASjjF,KAAKU,QAAQ9e,OACzDoe,KAAKU,QAAQs2G,kBACb7yB,EAAYA,EAAUjB,GAAG,QAAS,QAASljF,KAAKU,QAAQs2G,kBAE5D,IAAIokG,EAAgB,IAAIxvH,EAAAA,EAAY5rF,KAAKU,QAAQ05H,iBAAiB/sC,cAAa,IAAIrP,EAAAA,GAAQjC,MAAMoI,IAAYlsG,OAC7G,GAAI+nB,KAAK43M,OAAOr6N,MAAO,CACnB,IAAI89N,EAAoBr7M,KAAK86M,eAAe96M,KAAK2nH,kBAAkB,wBAAwB,IAAQ5wF,EAAK,CAAC,GAClG/2B,KAAKU,QAAQ9e,OAASoe,KAAK2nH,kBAAkB,uBAChD5wF,IACA/2B,KAAKqQ,OAAOlwB,YAC+B,IAAvC6f,KAAKqQ,OAAOlwB,SAASmW,QAAQ,MAC7BmgC,EAAAA,EAAAA,IAAS,CAAC4kL,GAAoBr7M,KAAKqQ,OAAOlwB,SAAS8T,MAAM,OAGzDwiC,EAAAA,EAAAA,IAAS,CAAC4kL,GAAoB,CAACr7M,KAAKqQ,OAAOlwB,YAGnD,IAAIm7N,GAAmB7H,EAAAA,EAAAA,KAAmBxwD,EAAAA,EAAAA,IAAO,QAASo4D,EAAmB,YAC7EC,EAAiB/oM,cAAc,YAAYqkB,UAAUzB,IAAI,iBACzD8lL,EAAO9pM,YAAYmqM,EACvB,CACA,IAAIC,OAAW,EACf,IAASp2M,EAAI,EAAGA,EAAItf,EAAK5N,OAAQktB,IAAK,CAClC,IAAI+G,GAAM+2I,EAAAA,EAAAA,IAAO,QACjBjjJ,KAAKvhB,OAAO,GAAKytB,IAAOkB,EAAAA,EAAAA,IAASpuB,EAAK6G,EAAK3G,SAASimB,EAAE/pB,WAAY,MAClE,IAAImC,GAAQ6vB,EAAAA,EAAAA,IAASpN,KAAKU,QAAQ9e,MAAOiE,EAAK3G,SAASimB,EAAE/pB,WAAY,MACjE4kB,KAAKU,QAAQ8lI,WACbjpJ,EAAQyiB,KAAK8gI,eAAe5nB,OAAO37H,EAAOyiB,KAAKU,QAAQ8lI,WAE3D,IAAI+qB,EAAS,CAAEh0K,MAAOA,EAAO6hF,OAAQp/D,KAAKU,QAAQ0+D,OAAQv5E,KAAMA,EAAK3G,SAASimB,EAAE/pB,WAAY,MAG5F,GAFA4kB,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAwBk+H,GAE5B,MADfh0K,EAAQg0K,EAAOh0K,SACMowB,EAAAA,EAAAA,IAAkBpwB,GAAS,CAC5C,GAAIg+N,EACA,SAEJA,GAAW,CACf,CACA,IAAI78E,EAAW1+H,KAAK86M,eAAev9N,EAAOyiB,KAAKw7M,gBAAgBJ,EAAep7M,KAAKvhB,OAAO,GAAKytB,KAAOkB,EAAAA,EAAAA,IAAS,UAAWvnB,EAAK3G,SAASimB,EAAE/pB,WAAY,OACtJ6/N,EAAO9pM,aAAYsiM,EAAAA,EAAAA,IAAmBvnM,EAAKwyH,EAAU,YACzD,CACA1+H,KAAK2mH,KAAKp1G,UAAY,IACtB6pG,EAAAA,EAAAA,IAAep7G,KAAK2mH,KAAM,GAAGtpH,MAAMqC,KAAKu7M,EAAOrjO,WAC/CooB,KAAK06M,0BACDM,IACAA,EAAIjiO,UAAW,GAEnBA,GAAW,CACf,MAEIkiO,EAAO9pM,YAAYnR,KAAKqQ,OAAOO,cAAc,OAAQ,CAAEW,UAAWvR,KAAK2nH,kBAAkB,eACzF3nH,KAAK2mH,KAAKp1G,UAAY,GACtBvR,KAAK2mH,KAAKx1G,YAAYnR,KAAKqQ,OAAOO,cAAc,MAAO,CAAE31B,UAAW,uBACpEmgI,EAAAA,EAAAA,IAAep7G,KAAK2mH,KAAK/uI,SAAS,GAAI,GAAGylB,MAAMqC,KAAKu7M,EAAOrjO,WACvDojO,IACAA,EAAIjiO,UAAW,GAEnBA,GAAW,EAEXiiO,GAAOn1N,EAAK5N,SACZ+nB,KAAKk3M,aAAe8D,EAAIjiO,SACxBiiO,EAAIjgL,YAER,IAAI9sC,EAAO,CAAE0tF,YAAatoD,EAAAA,IAA4Bh6C,WAAY2mB,KAAKiwJ,YAAc,GAAKpqK,GAE1FoI,EAAqB,YAAI+R,KACzBA,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAyBplC,GAC5C+R,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAAiC,CAAEt6C,SAAUA,KAChEqlH,EAAAA,EAAAA,IAAYp+F,KAAKg4M,QACrB,EACAjgG,EAAmB14G,UAAUm8M,gBAAkB,SAAUJ,EAAe79N,GACpE,GAAKyiB,KAAKwgH,YAAe46F,EAGpB,CACD,IAAI7gC,IAAav6K,KAAK43M,OAAOr6N,OAAeyiB,KAAK5gB,OAAO,GAAK7B,GAC7D,MAAiC,aAA1ByiB,KAAKU,QAAQkgF,UAA2B25F,EAAaA,CAChE,CALI,OAAO,CAMf,EACAxiE,EAAmB+J,YAAc,SAAUplC,EAAM96F,EAAOw9E,EAAQs5C,EAAgB+iG,GAO5E,IANA,IAEIl+N,EAFA0zB,EAAMyrE,EAAKzkG,OACXmH,EAAS,GAGTmuG,EAAS,CAAC,EACVmpB,KAAet3C,IAAUA,EAAOm3C,kBAAkBn3C,EAAOm3C,kBACtDtlG,KAAO,CACV1zB,EAAQm/F,EAAKx9F,SAAS+xB,EAAI71B,WAAY,KAEtC,IAAIsgO,EAAuC,kBAD3Cn+N,GAAQ0+C,EAAAA,EAAAA,IAAUr6C,EAAOrE,MACiCowB,EAAAA,EAAAA,IAAkB8tM,KAEtE9tM,EAAAA,EAAAA,IAAkB8tM,EAAeprM,UAAc1C,EAAAA,EAAAA,IAAkB8tM,EAAeprM,OAAOlnB,kBAEvFwkB,EAAAA,EAAAA,IAAkB8tM,EAAeprM,OAAOlnB,eAAe44H,uBAAgDxkI,EAAtBA,EAAMc,cAC7F,KAAMq9N,KAAsBnuH,GAAS,CACjC,IAAIjgF,EAAM,CAAC,EAGX,GAFAA,EAAgB,QAAI/vB,EACpBgwG,EAAO,GAAKmuH,IAAsB,EAC9BhlG,EAAc,CACd,IAAIilG,GAAiBv4D,EAAAA,EAAAA,IAAehkF,EAAQ,CAAC,EAAG7hF,EAAOm7H,GAAgB,IACvE12H,EAAAA,EAAAA,IAASqxC,EAAAA,IAAuBsoL,EAAgBj/H,EAAKx9F,SAAS+xB,EAAI71B,WAAY,MAC9EmC,GAAQ6vB,EAAAA,EAAAA,IAASgyD,EAAO43C,gBAAiB2kG,EAC7C,EACA35N,EAAAA,EAAAA,IAASJ,GAAO+rB,EAAAA,EAAAA,IAAkBpwB,GAAS,KAAOA,EAAO+vB,IACzDtrB,EAAAA,EAAAA,IAAS,UAAW06F,EAAKx9F,SAAS+xB,EAAI71B,WAAY,KAAMkyB,GACxDluB,EAAOK,KAAK6tB,EAChB,CACJ,CACA,OAAOgwE,EAAAA,EAAShgG,MAAMggG,EAAAA,EAASv4E,KAAK3lB,EAAQwC,EAAO07F,EAAAA,EAAS6U,aAAc,UAC9E,EACA4lB,EAAmBtjB,aAAe,SAAU2f,EAAS2/F,GAIjD,IAHA,IAAIp/F,EAAOr3B,EAAAA,EAASgT,SAAS8jB,EAAS,SAAS,IAAS,GACpDv4C,EAAa,GACb61B,EAAO,CAAC,EACHvsF,EAAI,EAAGA,EAAIwvG,EAAK18H,OAAQktB,IAEH,KAD1B02D,EAAa,IAAI+vB,EAAAA,EAAYwoB,GAAS/mB,cAAa,IAAIrP,EAAAA,GAAQjC,MAAM,QAAS,QAAS44B,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKwG,SACzG3J,SACXy5G,EAAKijB,EAAKz1H,SAASimB,EAAE/pB,WAAY,KAAKwG,OAASm2H,EAAmBwhG,kBAAkB19I,EAAYk4I,IAGxG,OAAOriH,CACX,EACAqmB,EAAmBwhG,kBAAoB,SAAU5kG,EAAMo/F,GACnD,IACI5vH,EADAlzE,EAAM0jG,EAAOA,EAAK18H,OAAS,EAG3B6uB,EAAQixG,EAAmB6jG,iBAAiBjnG,EAAK,IACrD7tG,EAAMm4E,eAAgBtxE,EAAAA,EAAAA,IAAkB7G,EAAMm4E,eAAgBn4E,EAAMm4E,aAEhEkF,EADe,SAAfr9E,EAAMxsB,MAAkC,aAAfwsB,EAAMxsB,MAAsC,aAAfwsB,EAAMxsB,MAChD2lL,EAAAA,EAAAA,IAAiBn5J,EAAOA,EAAMxsB,KAAMy5N,GAGpCjtM,EAAM01H,YAAc11H,EAAM01H,YAClC,IAAIv5C,EAAAA,EAAUn8E,EAAMllB,MAAOklB,EAAM85E,SAAU95E,EAAMvpB,OAAQw6H,EAAmB8jG,aAAa/0M,GAAQA,EAAMm4E,cAE/G,IAAK,IAAIpgE,EAAI,EAAGA,EAAI5N,EAAK4N,IACrB81F,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KAAO28H,EAAmB6jG,iBAAiBjnG,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,MAC/F61B,EAAM,GAAK4N,EAAI,GAAoD,OAA/C81F,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KAAK+oG,UACP,SAA1CwwB,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KAAKd,MAA6D,aAA1Cq6H,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KAAKd,MAAiE,aAA1Cq6H,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KAAKd,KAC7I6pG,EAAUc,WAAWxlG,MAAKwgL,EAAAA,EAAAA,IAAiBtrD,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KAAMu5H,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KAAKd,KAAMy5N,IAGpH5vH,EAAUc,WAAWxlG,KAAK,IAAIwjG,EAAAA,EAAU0xB,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KAAKwG,MAAO+yH,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KAAKwlG,SAAU+zB,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KAAKmC,OAAQw6H,EAAmB8jG,aAAalnG,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,MAAOu5H,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KAAK6jG,eAMpQkF,EAFsC,SAA1CwwB,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KAAKd,MAA6D,aAA1Cq6H,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KAAKd,MAAiE,aAA1Cq6H,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KAAKd,KAC1F,QAA/Cq6H,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KAAK+oG,WAAqE,UAA9CwwB,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KAAKwlG,SAC7EuD,EAAsB,IAAE87E,EAAAA,EAAAA,IAAiBtrD,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KAAMu5H,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KAAKd,KAAMy5N,GAAiBp/F,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KAAKd,KAAMq6H,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KAAK6jG,cAG3MkF,EAAWwwB,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KAAK+oG,YAAY87E,EAAAA,EAAAA,IAAiBtrD,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KAAMu5H,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KAAKd,KAAMy5N,GAAiBp/F,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KAAKd,KAAMq6H,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KAAK6jG,cAI/O01B,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KAAKohJ,YACzCr4C,EAAUwwB,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KACjC+oG,WAAWwwB,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KAAKohJ,aACjDr4C,EAAWwwB,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KAAK+oG,WAAYwwB,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KAAKwG,MAAO+yH,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KAAKwlG,SAAU+zB,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KAAKmC,OAAQw6H,EAAmB8jG,aAAalnG,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,MAAOu5H,EAAKz1H,SAAS2/B,EAAEzjC,WAAY,KAAK6jG,cAIxS,OAAOkF,GAAa,IACxB,EACA4zB,EAAmB8jG,aAAe,SAAU19N,GACxC,OAAIwvB,EAAAA,EAAAA,IAAkBxvB,EAAO+uG,aACL,WAAhB/uG,EAAO7D,OAAqBqzB,EAAAA,EAAAA,IAAkBxvB,EAAO7D,OAAmC,kBAAlB6D,EAAOZ,OAQ1EY,EAAO+uG,SAEtB,EACA6qB,EAAmB6jG,iBAAmB,SAAUz9N,GAI5C,OAHqB,SAAhBA,EAAO7D,MAAmC,aAAhB6D,EAAO7D,MAAuC,aAAhB6D,EAAO7D,MAAuB6D,EAAOZ,iBAAiB+B,QAC/GnB,EAAO7D,KAAO6D,EAAO7D,MAAQ,QAE1B6D,CACX,EACO45H,CACX,CAppCwC,oFCXpC+qB,EAAsB,WACtB,SAASA,EAAKpiI,GACVV,KAAK87M,WAAY,EACjB97M,KAAK+7M,cAAe,GACpB7tM,EAAAA,EAAAA,IAAMlO,KAAMU,EAChB,CAMA,OALAoiI,EAAKzjI,UAAU6P,MAAQ,WACnB,IAAIsrG,EAAO,IAAIsoB,EAAK,CAAC,GAErB,OADA50H,EAAAA,EAAAA,IAAMssG,EAAMx6G,MACLw6G,CACX,EACOsoB,CACX,CAZ0B,6HCNtBvjG,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAazCC,EAA0C,SAAUC,EAAYzB,EAAQn/C,EAAK6gD,GAC7E,IAA2H3pB,EAAvHD,EAAI5X,UAAUpmB,OAAQ4O,EAAIovB,EAAI,EAAIkoB,EAAkB,OAAT0B,EAAgBA,EAAOhhD,OAAOihD,yBAAyB3B,EAAQn/C,GAAO6gD,EACrH,GAAuB,kBAAZ/gC,SAAoD,oBAArBA,QAAQihC,SAAyBl5C,EAAIiY,QAAQihC,SAASH,EAAYzB,EAAQn/C,EAAK6gD,QACpH,IAAK,IAAI16B,EAAIy6B,EAAW3nD,OAAS,EAAGktB,GAAK,EAAGA,KAAS+Q,EAAI0pB,EAAWz6B,MAAIte,GAAKovB,EAAI,EAAIC,EAAErvB,GAAKovB,EAAI,EAAIC,EAAEioB,EAAQn/C,EAAK6H,GAAKqvB,EAAEioB,EAAQn/C,KAAS6H,GAChJ,OAAOovB,EAAI,GAAKpvB,GAAKhI,OAAOs1C,eAAegK,EAAQn/C,EAAK6H,GAAIA,CAChE,EAQI03K,EAAwB,WACxB,SAASA,EAAO79J,EAAS2P,GACrB,IAAIL,EAAQhQ,KAMZA,KAAKgrD,mBAAoB,EAOzBhrD,KAAK/W,cAAe,EAOpB+W,KAAKw0J,eAAgB,EAOrBx0J,KAAK9W,gBAAiB,EAOtB8W,KAAKw1G,eAAgB,EAOrBx1G,KAAK0yJ,iBAAkB,EAOvB1yJ,KAAKmmH,gBAAiB,EAMtBnmH,KAAK+1G,qBAAsB,EAO3B/1G,KAAKszI,cAAe,EAcpBtzI,KAAK7hB,OAAS,CAAC,EAOf6hB,KAAKg8M,qBAAsB,EAM3Bh8M,KAAKizI,KAAO,CAAC,EAObjzI,KAAKo6G,gBAAiB,EAQtBp6G,KAAK2lJ,SAAU,EACf3lJ,KAAK6jK,cAAgB,aAIrB7jK,KAAK0iM,gBAAkB,WAAc,OAAO1yL,EAAM2yL,cAAgB,EAIlE3iM,KAAKk7G,kBAAoB,WAAc,OAAOlrG,EAAMisM,gBAAkB,GACtE/tM,EAAAA,EAAAA,IAAMlO,KAAMU,GACZV,KAAKqQ,OAASA,EACI,SAAdrQ,KAAK1lB,KACL0lB,KAAK1lB,KAAO,KAEP0lB,KAAK1lB,OACV0lB,KAAK1lB,KAA8B,kBAAf0lB,KAAK1lB,KAAqB0lB,KAAK1lB,KAAK+D,mBAAgBnD,GAExE8kB,KAAK64J,WACL74J,KAAK64J,SAAW74J,KAAK64J,SAASx6K,gBAE9BsvB,EAAAA,EAAAA,IAAkB3N,KAAKkM,OACvBlM,KAAKkM,KAAM+2I,EAAAA,EAAAA,IAAO,gBAEtB,IAAIniB,EAAiB,IAAI7nB,EAAAA,EA+DzB,GA9DIv4G,EAAQlnB,SAAWknB,EAAQlnB,OAAOu/B,UAAarY,EAAQlnB,OAAOA,QAC7B,kBAA1BknB,EAAQlnB,OAAOA,UACtBwmB,KAAKg5G,aAAa8nB,EAAeo9B,mBAAkBvvJ,EAAAA,EAAAA,IAAO,CAAC,EAAGjO,EAAQlnB,UACtEwmB,KAAKm+J,UAAUr9B,EAAes9B,kBAAkB19J,EAAQlnB,UAE5DwmB,KAAKonF,OAAS,WAKV,IAJA,IAAI+uB,EAAM,CAAC,EACPt6B,EAAO,CAAC,SAAU,aAAc,aAAc,WAAY,iBAAkB,OAC5E,eAAgB,iBAAkB,mBAAoB,UACtD/8F,EAAOD,OAAOC,KAAKkxB,GACd7K,EAAI,EAAGA,EAAIrmB,EAAK7G,OAAQktB,IAC7B,GAAyC,YAArCrmB,EAAKI,SAASimB,EAAE/pB,WAAY,KAAoB,CAChD+6H,EAAIr3H,EAAKI,SAASimB,EAAE/pB,WAAY,MAAQ,GACxC,IAAK,IAAIo7B,EAAI,EAAGA,EAAIxG,EAAMlxB,EAAKI,SAASimB,EAAE/pB,WAAY,MAAMnD,OAAQu+B,IAChE2/F,EAAIr3H,EAAKI,SAASimB,EAAE/pB,WAAY,MAAMqE,KAAKuwB,EAAMlxB,EAAKI,SAASimB,EAAE/pB,WAAY,MAAM8D,SAASs3B,EAAEp7B,WAAY,KAAKgsG,SAEvH,MACSvL,EAAKvlF,QAAQxX,EAAKI,SAASimB,EAAE/pB,WAAY,MAAQ,IACtD+6H,EAAIr3H,EAAKI,SAASimB,EAAE/pB,WAAY,MAAQ40B,EAAMlxB,EAAKI,SAASimB,EAAE/pB,WAAY,OAGlF,OAAO+6H,CACX,EACKn2G,KAAKpe,QACNoe,KAAK9W,gBAAiB,EACtB8W,KAAKw1G,eAAgB,EACrBx1G,KAAK/W,cAAe,EAChB+W,KAAKo0G,UACLp0G,KAAKw0J,cAAgBx0J,KAAKo0G,QAAQzsG,MAAK,SAAUwuG,GAC7C,OAAOA,EAAIq+C,aACf,MAGJx0J,KAAK6pM,WAAa7pM,KAAKy5J,YACvBz5J,KAAKy5J,UAAY,UAEjBz5J,KAAKxJ,UAAYwJ,KAAK8pM,oBACtB9pM,KAAKulL,YAAavqF,EAAAA,EAAAA,IAAiBh7F,KAAKxJ,UAAYwJ,KAAK8pM,mBAEzD9pM,KAAKguG,iBACLhuG,KAAKk8M,kBAAmBlhH,EAAAA,EAAAA,IAAiBh7F,KAAKguG,mBAE7CrgG,EAAAA,EAAAA,IAAkB3N,KAAK7hB,SAAW6hB,KAAK7hB,OAAOmgH,eAC/Ct+F,KAAKm8M,gBAAiBnhH,EAAAA,EAAAA,IAAiBh7F,KAAK7hB,OAAOmgH,eAEnDt+F,KAAKo8M,eACLp8M,KAAK2iM,gBAAiB3nG,EAAAA,EAAAA,IAAiBh7F,KAAKo8M,eAE5Cp8M,KAAK26G,iBACL36G,KAAKi8M,kBAAmBjhH,EAAAA,EAAAA,IAAiBh7F,KAAK26G,iBAE9C36G,KAAKu2G,qBACJ5oG,EAAAA,EAAAA,IAAkB3N,KAAK64J,WAA+B,iBAAlB74J,KAAK64J,UAAiD,gBAAlB74J,KAAK64J,YAC9E74J,KAAK64J,SAAW,eACZ74J,KAAKizI,KAAK3qI,QAAUtI,KAAKizI,KAAK3qI,OAAOjvB,aACrC2mB,KAAKizI,KAAK3qI,OAAO+zM,cAAe,GAEpCr8M,KAAKizI,KAAK3qI,QAASqG,EAAAA,EAAAA,IAAO,CACtBt1B,WAAY2mB,KAAK3mB,WACjB+iG,MAAO,IAAI4B,EAAAA,EAASn7F,OAAQ,CAAEtF,MAAOyiB,KAAKuyM,iBAAmBvyM,KAAKpe,MAAO7J,KAAMioB,KAAKg3G,kBACrFh3G,KAAKizI,KAAK3qI,SAEbtI,KAAKq2G,aAAc,CACnB,IAAIimG,EAAMt8M,KAAKq2G,aACfr2G,KAAKq2G,aAAe,SAAUzpF,EAAG14B,EAAGqoN,EAAMC,GAItC,GAHmB,kBAARF,IACPA,GAAMrgL,EAAAA,EAAAA,IAAUqgL,EAAKh8N,SAEG,eAAxB0vB,EAAM6zJ,cAAgC,CACtC,IAAIvtJ,EAAIsW,EACRA,EAAI14B,EACJA,EAAIoiB,EACJ,IAAIhJ,EAAMivM,EACVA,EAAOC,EACPA,EAAOlvM,CACX,CACA,OAAOgvM,EAAI1vL,EAAG14B,EAAGqoN,EAAMC,EAC3B,CACJ,EACKx8M,KAAKq2G,cAAgBr2G,KAAKu2G,oBAC3Bv2G,KAAKq2G,aAAe,SAAUzpF,EAAG14B,GAG7B,OAFA04B,GAAIqP,EAAAA,EAAAA,IAAUjsB,EAAMgnG,iBAAiBosC,EAAAA,EAAAA,IAAepzI,EAAO,CAAC,EAAG4c,GAAG,IAClE14B,GAAI+nC,EAAAA,EAAAA,IAAUjsB,EAAMgnG,iBAAiBosC,EAAAA,EAAAA,IAAepzI,EAAO,CAAC,EAAG9b,GAAG,IACnC,eAAxB8b,EAAM6zJ,cAAiCvmF,EAAAA,EAAS8U,aAAaxlE,EAAG14B,GAAKopF,EAAAA,EAAS6U,YAAYvlE,EAAG14B,EACxG,EAER,CA4GA,OAxGAqqK,EAAOl/J,UAAUm3G,iBAAmB,WAChC,OAAOx2G,KAAK6jK,aAChB,EAMAtF,EAAOl/J,UAAU+2G,iBAAmB,SAAU3uC,GAC1CznE,KAAK6jK,cAAgBp8F,CACzB,EAIA82F,EAAOl/J,UAAUyvJ,mBAAqB,WAClC,OAAO9uJ,KAAK69L,WAChB,EAMAt/B,EAAOl/J,UAAUs7B,cAAgB,SAAUykC,GAGvC,IADA,IAAItgF,EAAOD,OAAOC,KAAKsgF,GACdj6D,EAAI,EAAGA,EAAIrmB,EAAK7G,OAAQktB,IAC7BnF,KAAKlhB,EAAKI,SAASimB,EAAE/pB,WAAY,MAAQgkF,EAAOtgF,EAAKI,SAASimB,EAAE/pB,WAAY,MAExE4kB,KAAKqQ,QAAUrQ,KAAKqQ,OAAOyrF,UACc,aAArCh9G,EAAKI,SAASimB,EAAE/pB,WAAY,MAC5B4kB,KAAKulL,YAAavqF,EAAAA,EAAAA,IAAiB57B,EAAOtgF,EAAKI,SAASimB,EAAE/pB,WAAY,OACtE4kB,KAAKqQ,OAAOswL,gCAAgC3gM,KAAKkM,KAAK,IAEZ,mBAArCptB,EAAKI,SAASimB,EAAE/pB,WAAY,MACjC4kB,KAAKk8M,kBAAmBlhH,EAAAA,EAAAA,IAAiB57B,EAAOtgF,EAAKI,SAASimB,EAAE/pB,WAAY,OAC5E4kB,KAAKqQ,OAAOixL,gCAAgCthM,KAAKkM,MAEP,iBAArCptB,EAAKI,SAASimB,EAAE/pB,WAAY,OACjC4kB,KAAK2iM,gBAAiB3nG,EAAAA,EAAAA,IAAiB57B,EAAOtgF,EAAKI,SAASimB,EAAE/pB,WAAY,QAI1F,EAMAmjL,EAAOl/J,UAAUk3G,gBAAkB,WAC/B,SAAUv2G,KAAK3mB,aAAc2mB,KAAKg3G,gBACtC,EAKAunD,EAAOl/J,UAAU05G,aAAe,WAC5B,OAAO/4G,KAAKwmI,QAChB,EAMA+3B,EAAOl/J,UAAU25G,aAAe,SAAUz7H,GACtCyiB,KAAKwmI,SAAWjpJ,CACpB,EAIAghL,EAAOl/J,UAAUqnI,UAAY,WACzB,OAAO1mI,KAAKymI,QAChB,EAMA83B,EAAOl/J,UAAU8+J,UAAY,SAAU5gL,GACnCyiB,KAAKymI,SAAWlpJ,CACpB,EAIAghL,EAAOl/J,UAAUo9M,kBAAoB,WACjC,OAAOz8M,KAAKulL,UAChB,EAIAhnB,EAAOl/J,UAAU4zJ,kBAAoB,WACjC,OAAOjzJ,KAAKk8M,gBAChB,EAIA39C,EAAOl/J,UAAUsnI,sBAAwB,WACrC,OAAO3mI,KAAKm8M,cAChB,EAIA59C,EAAOl/J,UAAUu5J,aAAe,WAC5B,OAAO54J,KAAKgrD,kBAAoB,cAAgB,WACpD,EACOuzG,CACX,CArU4B,GA4VxBm+C,GAlBoC,WACpC,SAASC,IACT,CACAh9K,EAAW,EACPzB,EAAAA,EAAAA,OACDy+K,EAAmBt9M,UAAW,aAAS,GAC1CsgC,EAAW,EACPzB,EAAAA,EAAAA,OACDy+K,EAAmBt9M,UAAW,YAAQ,GACzCsgC,EAAW,EACPzB,EAAAA,EAAAA,OACDy+K,EAAmBt9M,UAAW,oBAAgB,EAErD,CAbwC,GAkBR,SAAUoM,GAEtC,SAASixM,IACL,OAAkB,OAAXjxM,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAIA,OAPAu/B,EAAUm9K,EAAYjxM,GAItBk0B,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACVw+K,EAAWr9M,UAAW,eAAW,GAC7Bq9M,CACX,CATgC,CAS9Bn+C,KAKiC,SAAU9yJ,GAEzC,SAASmxM,IACL,OAAkB,OAAXnxM,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAHAu/B,EAAUq9K,EAAenxM,EAK7B,CANmC,CAMjCixM,mFCpYEx6E,EAAqB,WACrB,SAASA,EAAIxhI,EAAS2P,IAClBnC,EAAAA,EAAAA,IAAMlO,KAAMU,GACZV,KAAKqQ,OAASA,CAClB,CAkDA,OAjDA6xH,EAAI7iI,UAAU6P,MAAQ,WAClB,IAAIgtD,EAAM,IAAIgmE,EAAI,CAAC,GAGnB,OAFAh0H,EAAAA,EAAAA,IAAMguD,EAAKl8D,MACXk8D,EAAIimE,MAAQniI,KAAKmiI,MAAMriJ,KAAI,SAAU06H,GAAQ,OAAOA,EAAKtrG,OAAS,IAC3DgtD,CACX,EAOAgmE,EAAI7iI,UAAUsyJ,YAAc,SAAU9rK,GAClC,GAAKma,KAAKqQ,OAAV,CAGA,IAAIrxB,EAAMghB,KAAKna,KAAKma,KAAKqQ,OAAOsoG,0BAA0B,IAC1D34G,KAAKqQ,OAAOssL,WAAW39M,EAAK6G,EAF5B,CAGJ,EAQAq8I,EAAI7iI,UAAU8gM,aAAe,SAAUv+M,EAAOrE,GAC1C,GAAKyiB,KAAKqQ,UAGQrQ,KAAKna,KAAK,GAAKjE,GAAOxG,aAAemC,EAAMnC,YAC7D,CACI,IAAIshN,EAAY18L,KAAKqQ,OAAOsoG,0BAA0B,GAClD35H,EAAMghB,KAAKna,KAAK,GAAK62M,GACzB18L,KAAKqQ,OAAO8vL,aAAanhN,EAAK4C,EAAOrE,GACrCyiB,KAAK68M,YAAYngB,EAAW18L,KAAKna,KAIrC,CACJ,EACAq8I,EAAI7iI,UAAUw9M,YAAc,SAAU79N,EAAK6G,GAClCma,KAAKqQ,QAGCrQ,KAAKqQ,OACOqxG,gBAAgBllC,YAC3BvqB,OAAOjzE,EAAK6G,EAC5B,EACOq8I,CACX,CAvDyB,wGCErBqnB,EAAiC,WACjC,SAASA,EAAgBz2C,EAAgBziG,GACrCrQ,KAAK8yG,eAAiBA,EACtB9yG,KAAKqQ,OAASA,CAClB,CAiHA,OAhHAk5I,EAAgBlqJ,UAAUisC,OAAS,SAAUwxK,EAAU5gJ,EAAK/2D,EAAGo4H,GAC3D,IAOIw/E,EANA5b,EADmBnhM,KAAK8yG,eAAe0R,WAAW,uBAClBi8C,gBAAgBvkG,EAAIimE,MAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAKynJ,UACnFjC,EAAAA,GAAS/tB,MACZ25B,EAAUtwE,EAAIimE,MAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAK4hO,SAAW9gJ,EAAIimE,MAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAK4hO,SAChGF,EAAStwE,QAAUrnI,GAAM+2D,EAAIimE,MAAMlqJ,OAAS6kO,EAAStwE,QAAUtwE,EAAIimE,MAAMlqJ,OAASktB,EACnF6xJ,EAAU8lD,EAAS9lD,QACnB5oK,EAAU,EAEd,GAAI8tE,EAAIp1E,MAAQ,EAAG,CACf,IAAI04M,EAAax/L,KAAKqQ,OAAOyxH,eACzB9hI,KAAKqQ,OAAOw3I,cAAcpD,eAAiBzkJ,KAAKqQ,OAAOsxI,gBACvDxf,EAAQniI,KAAKqQ,OAAOolG,cAAcrB,QAAQn8H,OAAS,IAClDunN,EAAWtjI,EAAIp1E,MAAQ,GAAGw6J,UAAYk+C,EAAWtjI,EAAIp1E,OAAOq7I,MAAQq9D,EAAWtjI,EAAIp1E,MAAQ,GAAGq7I,MAC/F86E,EAAe/gJ,EAAIimE,MAAMjjJ,SAASimB,EAAE/pB,WAAY,KAEpD2hO,EAAc56E,EAAMhkJ,QAAO,SAAUq8H,GAAQ,OAAOA,EAAKp7C,OAAOlzD,MAAQ+wM,EAAa79I,OAAiB,GAAG,IAAG,EAChH,CAGA,IAFA,IAAI89I,EAAaH,GAAeA,EAAYI,aAAe,GAAKJ,EAAYK,aAAe,EACvFL,EAAYI,aAAe3wE,EACtBh2H,EAAIrR,EAAI,EAAGqR,EAAIrR,EAAI+3M,GAAc1mM,EAAI0lD,EAAIimE,MAAMlqJ,OAAQu+B,KACN,IAAlD0lD,EAAIimE,MAAMjjJ,SAASs3B,EAAEp7B,WAAY,KAAKgT,QACtCA,IAGA8tE,EAAIimE,MAAMjjJ,SAASs3B,EAAEp7B,WAAY,KAAK0gO,WAAY,EAG1D,GAAI1tN,EAAU,EAAG,CACb,IAASooB,EAAIrR,EAAIqnI,EAASh2H,EAAIrR,EAAIqnI,EAAUp+I,GAAWooB,EAAI0lD,EAAIimE,MAAMlqJ,OAAQu+B,IACzE0lD,EAAIimE,MAAMjjJ,SAASs3B,EAAEp7B,WAAY,KAAK0gO,WAAY,EAElD32M,EAAIqnI,EAAUp+I,GAAW8tE,EAAIimE,MAAMlqJ,SACnCu0J,GAAYrnI,EAAIqnI,EAAUp+I,EAAW8tE,EAAIimE,MAAMlqJ,OAEvD,CAyBA,OAxBIikF,EAAIimE,MAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAK4hO,WACtC9gJ,EAAIr2E,KAAKi3N,EAAS19I,OAAOx9E,OAASs6E,EAAIimE,MAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAKiiO,SACxE9/E,EAAK4jE,EAAa71J,OAAO4wB,EAAIimE,MAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAM8gF,EAAIr2E,KAAM,CAAE,OAAU8nB,EAAAA,EAAAA,IAAkBuuD,EAAIp1E,OAAgC,GAAvBo1E,EAAIp1E,MAAM1L,cAE/HoxJ,EAAU,IACVh2G,EAAAA,EAAAA,IAAW+mG,EAAI,CAAE,QAAWiP,EAAQpxJ,WAAY,eAAgBoxJ,EAAQpxJ,aAExE47K,EAAU,KACVxgI,EAAAA,EAAAA,IAAW+mG,EAAI,CAAE,QAAWy5B,EAAQ57K,WAAY,eAAgB47K,EAAQ57K,aACxE8gF,EAAIimE,MAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAK2gO,cAAe,EACrD7/I,EAAIimE,MAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAKgiO,aAAe9jO,OAAO09K,GACxDxqB,EAAU,IACVtwE,EAAIimE,MAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAK+hO,aAAe7jO,OAAOkzJ,KAGhEtwE,EAAIp1E,MAAQ,GAAMi2N,EAAYK,aAAe,IAC7ClhJ,EAAIimE,MAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAK0gO,WAAY,EAClD5/I,EAAIimE,MAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAKgiO,aAAe9jO,OAAOyjO,EAAYK,aAAe,GACvFlhJ,EAAIimE,MAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAK+hO,aAAeJ,EAAYK,aAAe,EAAIL,EAAYI,aAAe,IAE/Gn9M,KAAKqQ,OAAO2xI,4BAA+B9lF,EAAIimE,MAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAK4hO,UAChFh9M,KAAKs9M,YAAYR,EAAS19I,OAAOx9E,MAAOk7N,EAASj3N,KAAKi3N,EAAS19I,OAAOx9E,SACvEoe,KAAKu9M,iBAAiBT,EAAS19I,OAAOx9E,MAAOk7N,EAASj3N,KAAKi3N,EAAS19I,OAAOx9E,OAAQk7N,EAAStwE,SAEzFjP,CACX,EACAgsB,EAAgBlqJ,UAAUk+M,iBAAmB,SAAUC,EAAO33N,EAAMghE,GAChE7mD,KAAKy9M,cAAcz9M,KAAK09M,WAAWF,EAAO33N,GAAOghE,EACrD,EACA0iG,EAAgBlqJ,UAAUq+M,WAAa,SAAUC,EAAO93N,GACpD,OAAO83N,EAAQ,KAAO93N,EAAKzK,UAC/B,EACAmuK,EAAgBlqJ,UAAUooL,SAAW,SAAUzoM,GAC3C,OAAOA,EAAIiV,MAAM,KACrB,EACAs1J,EAAgBlqJ,UAAUi+M,YAAc,SAAUK,EAAO93N,GAErD,OAAOma,KAAK49M,gBAAgBnuM,eAAezP,KAAK09M,WAAWC,EAAO93N,GACtE,EACA0jK,EAAgBlqJ,UAAUu+M,cAAgB,WACtC,OAAO59M,KAAKqQ,OAAOk7K,UACvB,EACAhiC,EAAgBlqJ,UAAUo+M,cAAgB,SAAUz+N,EAAK6nE,GACrD7mD,KAAKqQ,OAAOk7K,WAAW,GAAKvsM,GAAO6nE,CACvC,EACA0iG,EAAgBlqJ,UAAUmqJ,mBAAqB,SAAUrvK,GAErD,IADA,IAAI0jO,EAAS79M,KAAK49M,gBACTrvM,EAAK,EAAGvoB,EAAKnH,OAAOC,KAAK++N,GAAStvM,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAC7D,IAAIvvB,EAAMgH,EAAGuoB,GACThxB,EAAQsgO,EAAO,GAAK7+N,GACpBkvB,EAAQlO,KAAKynL,SAASzoM,GACtBk+L,EAAcl9K,KAAK89M,uBAAuB5vM,EAAM,IAChD6vM,EAAiB/9M,KAAKqQ,OAAO0xI,yBAC7Bl7F,EAAOtpE,GAASwgO,EAAe,GAAK7gC,GACxC,GAAIA,EAAc6gC,EAAe,IAAMl3J,EAAO,EAC1C,IAAK,IAAI9vB,EAAK,EAAG0gI,EAASt9K,EAAM48C,EAAK0gI,EAAOx/K,OAAQ8+C,IAAM,CACtD,IAAImlC,EAAMu7F,EAAO1gI,GACjB,GAAImlC,EAAIr2E,KAAKqoB,EAAM,IAAI9yB,aAAe8yB,EAAM,GAAG9yB,WAAY,CACvD8gF,EAAIimE,MAAM,GAAG66E,SAAWn2J,EACxBqV,EAAIimE,MAAM,GAAGk7E,SAAWnvM,EAAM,GAC9B,KACJ,CACJ,CAER,CACA,OAAO/zB,CACX,EACAovK,EAAgBlqJ,UAAUy+M,uBAAyB,SAAUl8N,GAOzD,OANY8/L,EAAAA,EAAAA,IAAqB1hL,KAAKqQ,OAAO+xI,qBAAqB,SAAUh3J,EAAMtE,GAC9E,GAAIsE,EAAKxJ,QAAUA,EACf,OAAOkF,CAGf,IAAG,EAEP,EACOyiK,CACX,CAtHqC,sICIjC9sC,EAA8B,WAC9B,SAASA,EAAapsG,EAAQwzG,GAC1B7jH,KAAKq4J,UAAYx0C,EAAQW,WAAW,gBACpCxkH,KAAK20M,UAAY9wF,EAAQW,WAAW,kBACpCxkH,KAAKqQ,OAASA,EACdrQ,KAAKhd,QAAUgd,KAAKqQ,OAAOO,cAAc,KAAM,CAAE31B,UAAW4iI,EAAAA,GAAkBtnF,MAAO,CAAEm9F,SAAU,QACjG1zH,KAAKg+M,UAAYh+M,KAAKqQ,OAAOO,cAAc,QAAS,CAAE31B,UAAW,gBAAiBs7C,MAAO,CAAE,KAAQ,WAC3F,aAAcv2B,KAAKq4J,UAAUp8G,YAAY,mBACrD,CA+RA,OAzRAwgE,EAAap9G,UAAUk7G,OAAS,WAC5B,MAAO,EACX,EAUAkC,EAAap9G,UAAU7lB,OAAS,SAAU4lF,EAAQ7hF,EAAOsI,GAOrD,OANK8nB,EAAAA,EAAAA,IAAkByxD,EAAO5lF,UACN,WAAhB4lF,EAAO9kF,MAAqBw/B,MAAM56B,SAAS3B,EAAO,OAClDA,EAAQ,MAEZA,EAAQyiB,KAAK20M,UAAUz7F,OAAO37H,EAAO6hF,EAAO25C,kBAEzCprG,EAAAA,EAAAA,IAAkBpwB,GAAS,GAAKA,EAAMnC,UACjD,EAEAqhI,EAAap9G,UAAUxH,SAAW,SAAU4+C,EAAM+jE,EAAM30H,EAAM2wC,EAAYynL,EAAO9uE,GAC7E,IAAInpJ,EACA5G,EACJ,GAAIo7H,EAAKp7C,OAAO5oE,SAAU,CACtB,IAAIqkH,EAAkB76G,KAAKqQ,OAAOyrF,SAA6C,kBAA1B0e,EAAKp7C,OAAO5oE,UAA0BgkH,EAAKp7C,OAAO5oE,SAAS6I,YAAem7G,EAAKp7C,OAAO5oE,SAAS6I,UAAWwlD,YAC3Ji2D,EAAe96G,KAAKqQ,OAAO0qG,eAAiB/6G,KAAKqQ,OAAO0qG,cAAcC,eACtEh7G,KAAKqQ,OAAO0qG,cAAcC,cAAclf,QACxCoiH,EAAa,CAAC,SACdnD,GAAY/F,EAAAA,EAAAA,IAAgB,CAAC,EAAGnvN,IAAOG,EAAK,CAAC,GAAM0yH,EAAAA,KAAkBulG,EAAOj4N,EAAGo5E,OAASo7C,EAAKp7C,OAAQp5E,IACrGi7G,EAAajhG,KAAKqQ,OAAOrtB,QAAQ4B,GAAK41H,EAAKp7C,OAAOlzD,IAClDqH,EAAM,mBACV,GAAIsnG,GAAmBC,EAAc,CACjC,IAAIlsG,EAAS,CAAE,MAAS4nB,EAAW0nL,EAAW,KAC9C1jG,EAAKp7C,OAAOq9I,mBAAZjiG,EAAgC7rG,EAAAA,EAAAA,IAAOC,EAAQmsM,GAAY/6M,KAAKqQ,OAAQ,iBAAkB4wF,EAAYjhG,KAAKqQ,OAAO,GAAKkD,GAAM,KAAMkjC,EACvI,MAEIr3D,EAASo7H,EAAKp7C,OAAOq9I,mBAAZjiG,EAAgC7rG,EAAAA,EAAAA,IAAO,CAAE,MAAS6nB,EAAW0nL,EAAW,KAAOnD,GAAY/6M,KAAKqQ,OAAQ,WAAY4wF,EAAYjhG,KAAKqQ,OAAO,GAAKkD,QAAMr4B,OAAWA,EAAW8kB,KAAKqQ,OAAa,MAS5M,OAPKwqG,GAAoBC,IACrBM,EAAAA,EAAAA,IAAe3kE,EAAMr3D,GAEzB4gB,KAAKqQ,OAAO0W,OAAO,kBAAmB,CAAEvwB,SAAUpX,IAClDA,EAAS,KACTq3D,EAAKngB,aAAa,aAAcmgB,EAAK0jB,UAAYn6D,KAAKq4J,UAAUp8G,YAAY,gBACxEj8C,KAAKq4J,UAAUp8G,YAAY,gBAAkBu+D,EAAKp7C,OAAO51E,aACtD,CACX,CACA,OAAO,CACX,EASAizH,EAAap9G,UAAU8+M,gBAAkB,SAAU/+I,EAAQ7hF,EAAOsI,IACzD8nB,EAAAA,EAAAA,IAAkByxD,EAAOu1I,aAGtBp3N,GAFAk0N,EAAAA,EAAAA,IAAuBryI,EAAOu1I,UAAW,aAEjC,IAAIA,EADIv1I,EAAOu1I,YACCvnM,SAASgyD,EAAQv5E,GAER,oBAArBu5E,EAAOu1I,UACXv1I,EAAOu1I,UAAUv1I,EAAQv5E,GAGzBu5E,EAAOu1I,UAAUvnM,SAASgyD,EAAQv5E,IAGlD,OAAOtI,CACX,EAWAk/H,EAAap9G,UAAUisC,OAAS,SAAUkvE,EAAM30H,EAAM2wC,EAAYqrD,EAAUstD,GACxE,OAAOnvI,KAAKo+M,YAAY5jG,EAAM30H,EAAM2wC,EAAY24G,EACpD,EAUA1yB,EAAap9G,UAAUqhM,UAAY,SAAUnjE,EAAI/iB,EAAM30H,EAAM2wC,GACzD,IAAI24G,EAA2C,UAAlCnvI,KAAKqQ,OAAO6iI,aAAa9pJ,MAAoBm0I,EAAG3mG,UAAUM,SAAS,qBAChF,GAAIl3B,KAAKqQ,OAAOyrF,QAAS,CACrB,IAAIqsE,EAAY5qC,EAAG4qC,UACfk2C,EAAY9gF,EAAGtkF,eACnBtjB,EAAAA,EAAAA,IAAO4nG,GACP,IAAI+gF,EAAQt+M,KAAKo+M,YAAY5jG,EAAM30H,EAAM2wC,EAAY24G,GACrDnvI,KAAKu+M,gBAAgBD,EAAO/gF,GACxB8gF,EAAUl8E,MAAMlqJ,SAAWkwL,EAAY,EACvCk2C,EAAUrmL,aAAasmL,EAAOD,EAAUl8E,MAAMjjJ,SAASipL,EAAU/sL,WAAY,MAG7EijO,EAAUltM,YAAYmtM,EAE9B,KACK,CACD,IAAI7nK,EAAOz2C,KAAKo+M,YAAY5jG,EAAM30H,EAAM2wC,EAAY24G,GACpD5R,EAAGhsH,UAAY,GACfgsH,EAAGjnG,aAAa,aAAcmgB,EAAKrV,aAAa,eAEhD,IADA,IACS7yB,EAAK,EAAGsyB,EADF,GAAGxjC,MAAMqC,KAAK+2C,EAAKqN,YACMv1C,EAAKsyB,EAAW5oD,OAAQs2B,IAAM,CAClE,IAAI+D,EAAOuuB,EAAWtyB,GACtBgvH,EAAGpsH,YAAYmB,EACnB,CACJ,CACJ,EAEAmqG,EAAap9G,UAAUk/M,gBAAkB,SAAUpgL,EAAQh4C,GAOvD,IALA,IAII8/D,EAJA1vB,EAAQpwC,EAAOqwC,WAEfrxB,EAAIoxB,EAAMt+C,OAGPktB,KACH8gD,EAAO1vB,EAAMr3C,SAASimB,EAAE/pB,WAAY,KACpC+iD,EAAO7H,aAAa2vB,EAAK7tE,KAAM6tE,EAAK1oE,MAE5C,EACAk/H,EAAap9G,UAAU++M,YAAc,SAAU5jG,EAAM30H,EAAM2wC,EAAY24G,GACnE,IAAInpJ,EAGAi4N,EAFAxnK,EAAOz2C,KAAKhd,QAAQouB,YACpBguD,EAASo7C,EAAKp7C,OAEdo7C,EAAK9D,eACLunG,EAAQzjG,EAAK9B,eAAe,MAAO1yH,EAAK,CAAC,GAAMo5E,EAAO43C,iBAAmB53C,EAAO5lF,OAAS,KAAO,GAAIwM,IAGxG,IAAIg2H,EAAYh8G,KAAKu6G,SACjBh9H,EAAQi9H,EAAK9D,aAAe12G,KAAKoN,SAASgyD,EAAO43C,gBAAiBinG,EAAO7+I,GACzEp/D,KAAKoN,SAASgyD,EAAOx9E,MAAOiE,EAAMu5E,GAMtC,GALqB,SAAhBA,EAAO9kF,MAAmC,aAAhB8kF,EAAO9kF,MAAuC,aAAhB8kF,EAAO9kF,OAAyBqzB,EAAAA,EAAAA,IAAkBpwB,KAC3GA,EAAQ,IAAI+B,KAAK/B,IAGrBy+H,GADAz+H,EAAQyiB,KAAKxmB,OAAO4lF,EAAQ7hF,EAAOsI,IACjBzK,WACE,YAAhBgkF,EAAO9kF,OAAuB8kF,EAAOk6H,kBAAmB,CACxD,IAAIklB,EAAuB,SAAVjhO,GAA8B,UAAVA,EAAqB,KAAiB,SAAVA,EAAmB,OAAS,QAC7Fy+H,EAAYwiG,EAAYx+M,KAAKq4J,UAAUp8G,YAAYuiK,GAAaxiG,CACpE,CACA,IAAIyiG,EAAgBz+M,KAAKm+M,gBAAgB/+I,EAAQ7hF,EAAOsI,GAGxD,GAFAm2H,GAAaruG,EAAAA,EAAAA,IAAkByxD,EAAOu1I,WAAgF34F,GAAnEruG,EAAAA,EAAAA,IAAkB8wM,GAAiB,GAAKA,EAAcrjO,WACzGq7D,EAAKngB,aAAa,aAAc0lF,EAAYh8G,KAAKq4J,UAAUp8G,YAAY,gBAAkBu+D,EAAKp7C,OAAO51E,YACjGwW,KAAKnI,SAAS4+C,EAAM+jE,EAAM30H,EAAM2wC,EAAYynL,EAAO9uE,IAA2B,aAAhB/vE,EAAO9kF,KACrE0lB,KAAK27G,WAAWllE,EAAMz2C,KAAKqQ,OAAOk1C,SAASy2D,GAAY58C,EAAOw5F,aAAex5F,EAAOw5F,eAAiB,kBAEpG,GAAoB,aAAhBx5F,EAAO9kF,KAAqB,CACjCm8D,EAAK7f,UAAUzB,IAAI0oF,EAAAA,IACnBpnE,EAAKngB,aAAa,aAAct2B,KAAKq4J,UAAUp8G,YAAY,kBAEvD1+D,IADAyiB,KAAKqQ,OAAO0+H,kBAAkB86B,kBACZ,SAAVtsL,EAKZ,IAAIg/L,GAAY1xH,EAAAA,EAAAA,IAAe7qD,KAAKqQ,OAAOO,eAAe,EAAO,CAAEj1B,QAAS4B,EAAO3E,MAAO,MACtFonB,KAAKqQ,OAAOlwB,WACZs2C,EAAAA,EAAAA,IAAS,CAAC8lJ,GAAY,CAACv8K,KAAKqQ,OAAOlwB,WAEvC6f,KAAKg+M,UAAUp5N,GAAK,YAAc41H,EAAKkkG,MACvCniC,EAAUvkJ,aAAah4B,KAAKg+M,UAAU5sM,YAAamrK,EAAUhhE,YAC7D9kE,EAAKtlC,YAAYorK,EACrB,CAKA,GAJiC,UAA7Bv8K,KAAKqQ,OAAO+8J,cAA4BptK,KAAKqQ,OAAOykG,uBACpD0F,EAAKxV,YAAa,GAEtBhlG,KAAK2+M,cAAcloK,EAAM+jE,EAAMhkF,GACX,YAAhB4oC,EAAO9kF,MAAsB8kF,EAAOk6H,kBAAmB,CACvD,IAAI39M,EAAUm+B,MAAM56B,SAAS3B,EAAMnC,WAAY,KAAiB,SAAVmC,EAAmB2B,SAAS3B,EAAMnC,WAAY,IAAM,EACtGmhM,GAAY1xH,EAAAA,EAAAA,IAAe7qD,KAAKqQ,OAAOO,eAAe,EAAO,CAAEj1B,QAASA,EAAS/C,MAAO,MAC5F69D,EAAKllC,UAAY,GACjBklC,EAAK7f,UAAUzB,IAAI,qBACnBonJ,EAAU3lJ,UAAUzB,IAAI,uBACpBn1B,KAAKqQ,OAAOlwB,WACZs2C,EAAAA,EAAAA,IAAS,CAAC8lJ,GAAY,CAACv8K,KAAKqQ,OAAOlwB,WAEvCs2D,EAAKtlC,YAAYorK,GACjB9lI,EAAKngB,aAAa,aAAc36C,EAAUqkB,KAAKq4J,UAAUp8G,YAAY,gBAAkBu+D,EAAKp7C,OAAO51E,WACvG,CACA,OAAOitD,CACX,EASAgmE,EAAap9G,UAAUs8G,WAAa,SAAUllE,EAAMulE,EAAWx1F,GAG3D,YAFiB,IAAbA,IAAuBA,EAAW,aACtCiwB,EAAK,GAAKjwB,GAAYw1F,EACfvlE,CACX,EAQAgmE,EAAap9G,UAAUs/M,cAAgB,SAAUloK,EAAM+jE,EAAMhkF,GACzD,IAAI4oC,EAASo7C,EAAKp7C,OAClBp/D,KAAK+4J,uBAAuBtiH,EAAM+jE,EAAsB,aAAhBp7C,EAAO9kF,OAC/C4+K,EAAAA,EAAAA,IAAsBziH,EAAMjgB,IAC5B0iI,EAAAA,EAAAA,IAAsBziH,EAAM+jE,EAAKhkF,YAC7B4oC,EAAO65F,mBACPC,EAAAA,EAAAA,IAAsBziH,EAAM2oB,EAAO65F,kBAEF,aAAjCj5J,KAAKqQ,OAAOmgI,mBACZ0oB,EAAAA,EAAAA,IAAsBziH,EAAM,CAAE,YAAa2oB,EAAO51E,aAElD41E,EAAOq6F,YACPhjH,EAAKlf,MAAMkiI,UAAYr6F,EAAOq6F,WAEV,SAApBr6F,EAAOu6F,WAAyBv6F,EAAOu6F,UAAqC,SAAzB35J,KAAKqQ,OAAOspJ,SAC/DljH,EAAK7f,UAAUzB,IAAI,cAEM,wBAApBiqC,EAAOu6F,WAAwCv6F,EAAOu6F,UAAqC,wBAAzB35J,KAAKqQ,OAAOspJ,UAC9E35J,KAAKqQ,OAAO01I,gBAA4D,YAA1C/lJ,KAAKqQ,OAAO47I,iBAAiBC,UACf,SAA1ClsJ,KAAKqQ,OAAO47I,iBAAiBC,YAChB,aAAhB9sF,EAAO9kF,MACPm8D,EAAK7f,UAAUzB,IAAI,oBAG/B,EACAsnF,EAAap9G,UAAU05J,uBAAyB,SAAUtiH,EAAM+jE,EAAMokG,GAClE,IAAI34J,EAAO,CAAC,EACR9yC,EAAqB0qG,EAAAA,GACrBlnF,EAAU,GACV6jF,EAAKgyB,UACLvmF,EAAKumF,QAAUhyB,EAAKgyB,SAEpBhyB,EAAKw8C,UACL/wG,EAAK+wG,QAAUx8C,EAAKw8C,SAEpBx8C,EAAK0mF,YACLvqK,EAAQl3C,KAAK,kBAEb+6H,EAAKxV,aACLruE,EAAQl3C,KAAKyf,MAAMy3B,EAAS,CAAC,wBAAyB,aAClDioL,GACAnoK,EAAKlkC,cAAc,YAAYqkB,UAAUzB,IAAI,YAGjDqlF,EAAKmlE,kBACLhpJ,EAAQl3C,KAAKyf,MAAMy3B,EAAS,CAAC,sBAE7B6jF,EAAKqoB,WAAajC,EAAAA,GAASi0B,QAC3B5uG,EAAK9yC,GAAiBqnG,EAAKu4C,SAC3B9sG,EAAK43D,EAAAA,IAAyBrD,EAAKu4C,SAAW,IAExCplJ,EAAAA,EAAAA,IAAkB6sG,EAAK1zH,SAC7Bm/D,EAAK9yC,GAAiBqnG,EAAK1zH,MAC3Bm/D,EAAK43D,EAAAA,IAAyBrD,EAAK1zH,MAAQ,GAE1C0zH,EAAKpsH,SACNuoC,EAAQl3C,KAAK,UAEjBwmE,EAAKu1D,MAAQ7kF,GACbuiI,EAAAA,EAAAA,IAAsBziH,EAAMwP,EAChC,EACAw2D,EAAap9G,UAAU+N,SAAW,SAAUxrB,EAAOiE,EAAMu5E,GACrD,OAAOA,EAAO+jF,cAAcvhK,EAAOiE,EAAMu5E,EAC7C,EACOq9C,CACX,CAxSkC,sICA9BkkB,EAA6B,WAC7B,SAASA,EAAY7tB,EAAgB+vB,EAAUxyH,GAC3CrQ,KAAK6+M,QAAS,EACd7+M,KAAK6iI,SAAWA,EAChB7iI,KAAK8yG,eAAiBA,EACtB9yG,KAAKqQ,OAASA,EACdrQ,KAAKhd,QAAUgd,KAAKqQ,OAAOO,cAAc,KAC7C,CA4SA,OA/RA+vH,EAAYthI,UAAUisC,OAAS,SAAU4wB,EAAKk4C,EAAS59E,EAAYsxH,EAAa12I,GAC5E,OAAOpR,KAAK8+M,WAAW5iJ,EAAKk4C,EAAS59E,EAAYsxH,EAAa12I,EAClE,EAaAuvH,EAAYthI,UAAU8rC,QAAU,SAAU+wB,EAAKk4C,EAAS2qG,EAAWvoL,EAAYsxH,GAC3E,IAAI93I,EAAQhQ,KACR++M,IACA7iJ,EAAIr2E,MAAOmvN,EAAAA,EAAAA,IAAgB,CAAC,EAAG94I,EAAImiB,SACnCr+E,KAAKg/M,kBAAkB9iJ,IAE3B,IAAIzlB,EAAOz2C,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,aAAe2pD,EAAIhwD,IAAM,KAClEuuG,EAAKz6G,KAAK8+M,WAAW5iJ,EAAKk4C,EAAS59E,EAAYsxH,EAAa,KAAMi3D,GAClE58E,EAAQ,GAAG9kI,MAAMqC,KAAK+6G,EAAG0nB,OACzB88E,EAAY,GAAG5hN,MAAMqC,KAAK+2C,EAAK3lC,iBAAiB,oBACpD,GAAI9Q,KAAKqQ,OAAOyrF,SAAWmjH,EAAUhnO,OASjC,IARA,IAAI82B,EAAU,SAAUonG,GACpB,GAAIA,EAAI3/G,SAIJ,OAHA0Z,YAAW,WACPF,EAAMK,OAAOswL,gCAAgCxqF,EAAIjqG,KAAK,EAC1D,GAAG,GACI,OAEf,EACSqC,EAAK,EAAGmpG,EAAYtD,EAAS7lG,EAAKmpG,EAAUz/H,OAAQs2B,IAAM,CAG/D,GAAgB,UADFQ,EADJ2oG,EAAUnpG,IAGhB,KACR,CAEO,GAAGlR,MAAMqC,KAAK+6G,EAAGjkF,YACvB12C,KAAI,SAAUsL,GACfqrD,EAAKngB,aAAalrC,EAAW,KAAGA,EAAY,MAChD,IACAqrD,EAAKllC,UAAY,GACjB,IAAK,IAAIvrB,EAAK,EAAGk5N,EAAU/8E,EAAOn8I,EAAKk5N,EAAQjnO,OAAQ+N,IAAM,CACzD,IAAIw0H,EAAO0kG,EAAQl5N,GACnBywD,EAAKtlC,YAAYqpG,EACrB,CACJ,EAEAmmB,EAAYthI,UAAUy/M,WAAa,SAAU5iJ,EAAKk4C,EAAS59E,EAAYsxH,EAAa12I,EAAW+9H,GAC3F,IAAI10B,GAAM9sG,EAAAA,EAAAA,IAAkByD,GAAyBpR,KAAKhd,QAAQouB,YAAzBA,EACrC+tM,EAAU,CAAEt5N,KAAMq2E,EAAIr2E,MACtBi3N,EAAW,CAAEj3N,KAAMq2E,EAAIr2E,MACvBu5N,EAAgBp/M,KAAKqQ,OAAO4jG,aAAa91H,QAAO,SAAUg4H,GAAO,MAAoB,aAAbA,EAAI77H,MAAuB67H,EAAIv0H,KAAO,IAAG,GACjHrE,GAAQ,EACR6hO,IACA7hO,GAAQ0+C,EAAAA,EAAAA,IAAUmjL,EAAcx9N,MAAOu9N,EAAQt5N,OAEnD,IAAIw5N,EAAWr/M,KAAKqQ,OAAOyiI,wBACvB52E,EAAIolF,YACJplF,EAAI8oC,WAAaq6G,EAAS/oN,QAAQ4lE,EAAIp1E,QAAU,GAAKvJ,GAErD2+E,EAAIolF,WAAathJ,KAAKqQ,OAAO85J,qBACG,UAA7BnqK,KAAKqQ,OAAO+8J,cAA4BptK,KAAKqQ,OAAOykG,uBACvD54C,EAAI8oC,YAAa,GACoB,IAAjCq6G,EAAS/oN,QAAQ4lE,EAAIp1E,QACrBu4N,EAAS5/N,KAAKy8E,EAAIp1E,QAG1BkZ,KAAKs/M,sBAAsB7kG,EAAIv+C,IAC/B94E,EAAAA,EAAAA,IAAcq3H,GAAI9rG,EAAAA,EAAAA,IAAO,CAAC,EAAG6nB,EAAY,CAAC,KAC1C0iI,EAAAA,EAAAA,IAAsBz+C,EAAIv+C,EAAI1lC,YAgE9B,IA/DA,IAAI+oL,EAAmBv/M,KAAK8yG,eAAe0R,WAAW,uBAClDt7B,EAAU,SAAU/jF,EAAG8L,GACvB,IAAIupG,EAAOt+C,EAAIimE,MAAMjjJ,SAASimB,EAAE/pB,WAAY,KAC5Co/H,EAAKxV,WAAa9oC,EAAI8oC,WACtBwV,EAAKmlE,iBAAmBnlE,EAAKp7C,OAAO4lC,WACpC,IAAIm8F,EAAeoe,EAAiB9+C,gBAAgBvkG,EAAIimE,MAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAKynJ,UACnFjC,EAAAA,GAAS/tB,MACZt8E,EAAQ,CAAE,OAAU5oB,EAAAA,EAAAA,IAAkBuuD,EAAIp1E,OAAgC,GAAvBo1E,EAAIp1E,MAAM1L,YAC7D8gF,EAAI2lB,UAAY3lB,EAAIimE,MAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAKynJ,WAAajC,EAAAA,GAAS4+B,eAC5EjpI,EAAa,MAAIsX,EAAOx9B,OAAOwrG,WAAa,sBAAwB,qBAExE,IAAI0hB,EAAK4jE,EAAa71J,OAAO4wB,EAAIimE,MAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAM8gF,EAAIr2E,KAAM0wC,EAAO2lC,EAAI2lB,SAAUstD,GACnG,GAAIjzE,EAAIimE,MAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAKynJ,WAAajC,EAAAA,GAASh3I,OAAQ,CACpE,GAAIsyE,EAAIimE,MAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAKynJ,WAAajC,EAAAA,GAAS/tB,MACzD32C,EAAIimE,MAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAKynJ,WAAajC,EAAAA,GAAS4+E,cAAe,CAC9E,IAAI1kG,EAAejtE,EAAOx9B,OAAO0qG,eAAiBltE,EAAOx9B,OAAO0qG,cAAcC,eAC1EntE,EAAOx9B,OAAO0qG,cAAcC,cAAclf,QAC9C,IAAMjuD,EAAOx9B,OAAOyrF,SAAWjuD,EAAOx9B,OAAO06I,oBAAwBjwC,GACjEjtE,EAAOx9B,OAAO0qG,cAAcC,cAAc+vC,qBAAwBvwC,EAAK0mF,WAAY,CAEnF,IAAIp7C,EAAYj4G,EAChBi4G,EAAUz1I,OAAO8qG,iBAAgB,WAC7B,IAAIs9C,EAAWl7B,EAAGn8F,aAAa,cAC/Bm8F,EAAGjnG,aAAa,aAAcinG,EAAGpjE,UAAYs+F,GAC7C3S,EAAUz1I,OAAOylB,QAAQ4/G,EAAAA,KAAe/mI,EAAAA,EAAAA,IAAOmuM,EAAU,CACrDtiG,KAAM+iB,EAAIn+D,OAAQo7C,EAAKp7C,OAAQotE,QAAS,EACxCwqB,QAAS,EAAGt+C,eAAgBx8C,EAAIimE,MAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAKs9H,eAClE/8B,YAAamqE,EAAUz1I,OAAOovM,oBAEtC,GACJ,MAEI5xK,EAAOx9B,OAAOylB,QAAQ4/G,EAAAA,KAAe/mI,EAAAA,EAAAA,IAAOmuM,EAAU,CAClDtiG,KAAM+iB,EAAIn+D,OAAQo7C,EAAKp7C,OAAQotE,QAAS,EACxCwqB,QAAS,EAAGt+C,eAAgBx8C,EAAIimE,MAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAKs9H,eAClE/8B,YAAa9tC,EAAOx9B,OAAOovM,qBAGnC,IAAI1D,GAAe,EACnB,GAAI7/I,EAAIp1E,MAAQ,GAAK+mD,EAAOgxK,OAAQ,CAChC,IAAIrf,EAAa3xJ,EAAOx9B,OAAOyxH,eAC3Bj0F,EAAOx9B,OAAOw3I,cAAcpD,eAAiB52G,EAAOx9B,OAAOsxI,gBAC3D+9D,EAAe7xK,EAAOx9B,OAAOolG,cAAcrB,QAAQn8H,OAAS,IAC3DunN,EAAWtjI,EAAIp1E,MAAQ,GAAGw6J,UAAYk+C,EAAWtjI,EAAIp1E,OAAOq7I,MAAQq9D,EAAWtjI,EAAIp1E,MAAQ,GAAGq7I,MAE/Fw9E,EAAcD,EAAavhO,QAAO,SAAUq8H,GAC5C,OAAOA,EAAKp7C,OAAOlzD,MAAQgwD,EAAIimE,MAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAKgkF,OAAiB,GACtF,IAAG,GACH28I,EAAe4D,EAAY5D,aAAe4D,EAAY5D,aAAe4D,EAAYvC,aAAe,CACpG,CACA,GAAIN,EAAStwE,QAAU,GAAKtwE,EAAIimE,MAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAK4hO,SAAW,GAAKF,EAAS9lD,QAAU,GAC9F+kD,EAAc,CACjBluK,EAAOgxK,QAAS,EAChB,IAAIe,EAAY,IAAIr2D,EAAAA,EAAgB17G,EAAOilE,eAAgBjlE,EAAOx9B,QAClEktH,EAAKqiF,EAAUt0K,OAAOwxK,EAAU5gJ,EAAK/2D,EAAGo4H,EAC5C,CACJ,CACKrhE,EAAIimE,MAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAK0gO,WACvCrhG,EAAGtpG,YAAYosH,EAEvB,CACJ,EACI1vF,EAAS7tC,KACJmF,EAAI,EAAG8L,EAAMirD,EAAIimE,MAAMlqJ,OAAQktB,EAAI8L,EAAK9L,IAC7C+jF,EAAQ/jF,GAEZ,IAAIlX,EAAO,CAAEiuE,IAAKu+C,EAAI46C,UAAWr1J,KAAKqQ,OAAOglJ,WAC7C,GAAIn5F,EAAIolF,UAAW,CACf,IAAIu+D,GAAalxM,EAAAA,EAAAA,IAAOwwM,EAASlxN,GACjC4xN,EAAWt2C,cAAe,EAC1B,IAAIzuD,EAAe96G,KAAKqQ,OAAO0qG,eAAiB/6G,KAAKqQ,OAAO0qG,cAAcC,eACtEh7G,KAAKqQ,OAAO0qG,cAAcC,cAAclf,QACxCgkH,EAAeD,EAAW3jJ,IAAIprD,iBAAiB,mBACnD,IAAM9Q,KAAKqQ,OAAOyrF,SAAW97F,KAAKqQ,OAAO06I,oBAAwBjwC,GAC7D96G,KAAKqQ,OAAO0qG,cAAcC,cAAc+vC,qBAAwB+0D,EAAa7nO,OAAQ,CAErF,IAAI+yK,EAAYhrJ,KAChBgrJ,EAAU36I,OAAO8qG,iBAAgB,WAC7B6vC,EAAU36I,OAAOylB,QAAQ2/G,EAAAA,IAAcoqE,EAC3C,GACJ,MAEI7/M,KAAKqQ,OAAOylB,QAAQ2/G,EAAAA,IAAcoqE,GAEtC3jJ,EAAIqtG,aAAes2C,EAAWt2C,aAC9B,IAAIw2C,EAAc//M,KAAKqQ,OAAOqyH,gBAC9B,GAAI1iI,KAAKqQ,OAAOwkG,aAAe70G,KAAKqQ,OAAO0+H,kBAAkB86B,iBAAkB,CAC3E,IAAIm2C,EAAehgN,KAAKqQ,OAAOsoG,0BAA0B,GACrDg1D,EAASzxG,EAAIr2E,KAAOq2E,EAAIr2E,KAAK,GAAKm6N,GAAgB,KAClDC,EAAkBJ,EAAWt2C,aAAevpK,KAAKqQ,OAAOy9J,uBACxD9tK,KAAKqQ,OAAOoqK,uBACXwlC,EAAgBt4M,MAAK,SAAU9hB,GAAQ,OAAOA,EAAK,GAAKm6N,KAAkBryC,CAAQ,KACnFsyC,EAAgBxgO,KAAKy8E,EAAIr2E,KAEjC,CACA,IAAKg6N,EAAWt2C,aAAc,CAC1BvpK,KAAKqQ,OAAOurJ,gBAAgBqL,oBAAqB,EACjD/qG,EAAI8oC,YAAa,EACjB,IAAI+oE,EAAS9/K,EAAKiuE,IAAIprD,iBAAiB,2BACnC4oC,EAASmmK,EAAW3jJ,IAAI3pD,cAAc,kBACtCilK,EAAUx3K,KAAKqQ,OAAOolG,cAAcrB,QAAQn8H,QAAUyhE,GAAU15C,KAAKqQ,OAAOy6K,WAAa,EAAI,GACjG,IAAS3lL,EAAI,EAAGA,EAAI4oK,EAAO91L,OAAQktB,IAC/B4oK,EAAO7uL,SAASimB,EAAE/pB,WAAY,KAAK68C,kBAAkBrB,UAAUzB,IAAI,uBACnE44I,EAAO7uL,SAASimB,EAAE/pB,WAAY,KAAKm3B,cAAc,YAAYqkB,UAAUjB,OAAO,WAElF,GAAIumC,EAAIimE,MAAMlqJ,OACV,IAASktB,EAAIqyK,EAASryK,EAAI+2D,EAAIimE,MAAMlqJ,OAAQktB,IAAK,CAC7C,IAAIq1G,EAAOqlG,EAAW3jJ,IAAI3pD,cAAc,6BAA+B2pD,EAAIimE,MAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAK0L,MAAQ,MACjH0zH,IACArjF,EAAAA,EAAAA,IAAY,CAACqjF,GAAO,CAAC,wBAAyB,YAEtD,CAEA9gE,IACAviB,EAAAA,EAAAA,IAAY,CAACuiB,GAAS,CAAC,wBAAyB,YAExD,CACA,GAAI15C,KAAKqQ,OAAOmyH,WAAau9E,GAAe//M,KAAKqQ,OAAOkyH,eAAgB,CACpE,IAAIhF,EAAK9iB,EAAG3pG,iBAAiB,2BAA2B,GACpDysH,GACAA,EAAG3mG,UAAUzB,IAAI,qBAEzB,CACJ,CAqBA,GApBIn1B,KAAKqQ,OAAOykG,uBACZqqG,EAAQ9pD,UAAYr1J,KAAKqQ,OAAOglJ,WAEhC8pD,EAAQ9pD,UACR56C,EAAGljF,MAAMyc,OAASmrK,EAAQ9pD,UAAY,KAEjCr1J,KAAKqQ,OAAOglJ,YAAc56C,EAAGloG,cAAc,kBAAoBkoG,EAAGloG,cAAc,sBACrFkoG,EAAGljF,MAAMyc,OAASh0C,KAAKqQ,OAAOglJ,UAAY,MAE1Cn5F,EAAI/7E,UACJs6H,EAAG7jF,UAAUzB,IAAI+mC,EAAI/7E,UAErB+7E,EAAIgkJ,kBACJzlG,EAAG7jF,UAAUzB,IAAI+mC,EAAIgkJ,kBAEY,aAAjClgN,KAAKqQ,OAAOmgI,mBAAmCxwI,KAAKqQ,OAAO01I,eAA4D,WAA1C/lJ,KAAKqQ,OAAO47I,iBAAiBC,UAC7D,SAA1ClsJ,KAAKqQ,OAAO47I,iBAAiBC,UAChCzxC,EAAG7jF,UAAUzB,IAAI,oBAEPn1B,KAAKqQ,OAAO2xI,4BAA4D,IAA9BhiJ,KAAKqQ,OAAOumJ,gBACpD52J,KAAKqQ,OAAO2rE,WAAW/jG,QAAU+nB,KAAKqQ,OAAOrtB,QAAQitD,aAAejwC,KAAKqQ,OAAO2jC,OAC5F,IAAS7uC,EAAI,EAAGA,EAAInF,KAAKqQ,OAAO2rE,WAAW/jG,OAAQktB,IAAK,CAGpD,GAAInF,KAAKqQ,OAAO2rE,WAAW98F,SAASimB,EAAE/pB,WAAY,KAAkB,WAAa,QAAE,GAAG8yH,eAAgB,CAClG,IAAIiyG,EAAc,GAAG9iN,MAAMqC,KAAK+6G,EAAGj2E,uBAAuB,kBAC1D,GAAI27K,EAAYloO,OAAQ,CACpB,IAAImoO,EAAmBD,EAAYA,EAAYloO,OAAS,IACxDw+C,EAAAA,EAAAA,IAAS,CAAC2pL,GAAkB,CAAC,sBAC7B,IAAIC,EAAoBF,EAAY,IACpC1pL,EAAAA,EAAAA,IAAS,CAAC4pL,GAAmB,CAAC,sBAClC,CACJ,CACJ,CAEJ,OAAO5lG,CACX,EACAkmB,EAAYthI,UAAU2/M,kBAAoB,SAAU9iJ,GAChD,IAAK,IAAI3tD,EAAK,EAAGvoB,EAAKk2E,EAAIimE,MAAO5zH,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CACxCvoB,EAAGuoB,GACTutM,WAAY,CACrB,CACA,OAAO5/I,CACX,EAUAykE,EAAYthI,UAAUigN,sBAAwB,SAAU7kG,EAAIv+C,GACxD,IAAIjW,EAAO,CAAC,EACR9yC,EAAqB0qG,EAAAA,GAArB1qG,EAAuD,WAAvDA,EAAmF,gBACnFwjB,EAAU,GACVulC,EAAIolF,WACJ3qH,EAAQl3C,KAAKo+H,EAAAA,IAEb3hD,EAAI81F,UACJr7H,EAAQl3C,KAAK,YAEby8E,EAAIklF,cACJzqH,EAAQl3C,KAAK,qBAEby8E,EAAIg0I,gBAAkBh0I,EAAI0kF,WAC1BjqH,EAAQl3C,KAAK,qBAEZkuB,EAAAA,EAAAA,IAAkBuuD,EAAIp1E,SACvBm/D,EAAK43D,EAAAA,IAAyB3hD,EAAIp1E,MAAQ,EAC1Cm/D,EAAK9yC,GAAiB+oD,EAAIp1E,OAE1Bo1E,EAAI86F,UACJ/wG,EAAK+wG,QAAU96F,EAAI86F,SAEnB96F,EAAIhwD,MACJ+5C,EAAK9yC,GAAgB+oD,EAAIhwD,KAEzBgwD,EAAI8oC,aACJ/+C,EAAK9yC,IAAqB,IAEV,IAAhB+oD,EAAI9tE,SACJuoC,EAAQl3C,KAAK,UAEjBwmE,EAAKu1D,MAAQ7kF,GACbuiI,EAAAA,EAAAA,IAAsBz+C,EAAIx0D,EAC9B,EACO06E,CACX,CApTiC,sECPjC,IAAIoM,EAA6B,WAC7B,SAASA,IACT,CAuBA,OAtBAA,EAAY1tI,UAAUwnJ,WAAa,SAAU1oH,EAAQz9B,GAEjD,IADA,IAAIve,EAAQtD,OAAOC,KAAK4hB,GACfyE,EAAI,EAAGA,EAAIhjB,EAAMlK,OAAQktB,IAC9Bm7M,EAAsBniL,EAAQp4C,EAAO5D,EAAMjD,SAASimB,EAAE/pB,WAAY,MAAOslB,EAAQve,EAAMjD,SAASimB,EAAE/pB,WAAY,MAEtH,EACA2xJ,EAAY1tI,UAAUkhN,UAAY,SAAUpiL,EAAQ89C,GAChDqkI,EAAsBniL,EAAQp4C,EAAOk2F,OAAQA,EACjD,EACA8wD,EAAY1tI,UAAUowI,QAAU,SAAUtxG,EAAQspC,GAC9C64I,EAAsBniL,EAAQp4C,EAAOgf,KAAM0iE,EAAgC,mBAAdA,EACjE,EACAslE,EAAY1tI,UAAU7O,QAAU,SAAU2tC,EAAQqiL,GAC9CF,EAAsBniL,EAAQp4C,EAAOtO,KAAM+oO,GAC3CF,EAAsBniL,EAAQp4C,EAAOu9E,QAAS,MAAM,EACxD,EACAypE,EAAY1tI,UAAUohN,WAAa,SAAUtiL,EAAQuiL,EAAW/qL,GAC5D2qL,EAAsBniL,EAAQp4C,EAAOozK,QAASunD,EAAW/qL,EAC7D,EACAo3G,EAAY1tI,UAAUshN,cAAgB,SAAUxiL,EAAQyiL,GACpDN,EAAsBniL,EAAQp4C,EAAO86N,WAAY,QAASD,EAC9D,EACO7zE,CACX,CA1BiC,GAoCjC,SAASuzE,EAAsBniL,EAAQ8mB,EAAW1nE,EAAOo4C,GACjDA,GAAUwI,EACVA,EAAO+C,gBAAgB+jB,GAGvB9mB,GACAA,EAAO7H,aAAa2uB,EAAW1nE,EAEvC,CACA,IAAIwI,EAAS,CACTk2F,OAAQ,gBACRzxB,KAAM,OACNuqI,SAAU,YACV9sG,SAAU,gBACVq/D,gBAAiB,uBACjBviJ,KAAM,YACNttB,KAAM,YACN6rF,QAAS,eACT61F,QAAS,eACT0nD,WAAY,kBACZC,SAAU,gBACVljI,MAAO,aACPqtE,SAAU,gBACV8T,SAAU,sLChEVx/H,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GA0BzC0nK,EAA+B,WAC/B,SAASA,EAAc/2L,GACnBrQ,KAAK2nI,YAAc,CAAC,EACpB3nI,KAAK+gN,SAAU,EACf/gN,KAAKghN,KAAO,CAAC,EAEbhhN,KAAKqgJ,kBAAmB,EACxBrgJ,KAAKihN,QAAS,EACdjhN,KAAKkhN,WAAY,EACjBlhN,KAAKmhN,cAAe,EACpBnhN,KAAKohN,sBAAuB,EAC5BphN,KAAKqhN,YAAc,CAAC,EACpBrhN,KAAKshN,UAAYthN,KAAKuhN,eAAc,GACpCvhN,KAAKwhN,QAAU,CAAC,YAAa,WAC7BxhN,KAAKyhN,iBAAkB,EACvBzhN,KAAKqQ,OAASA,EACdrQ,KAAK0hN,YAAc,IAAIh+D,EAAAA,EAAkB1jJ,KAAKqQ,QAC9CrQ,KAAK6D,kBACT,CAslCA,OArlCAujM,EAAc/nM,UAAUsiN,WAAa,SAAUlmO,GAC3C,IAAI0iD,EAAS1iD,EAAE0iD,OACfn+B,KAAKmhN,cAAe,EACpBnhN,KAAKohN,sBAAuB,EAC5BphN,KAAKkhN,UAAY/iL,EAAOvH,UAAUM,SAAS,SAC/C,EACAkwK,EAAc/nM,UAAU2oG,QAAU,SAAUvsH,GACxC,KAAIukB,KAAKqQ,OAAOuqB,aAAehI,EAAAA,GAAQY,UAAYxzB,KAAKqQ,OAAOykG,sBACxD90G,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,qBAAwBvS,KAAKqQ,OAAOy7E,eAAiBrwG,GACvFA,EAAE0iD,SAAWn+B,KAAKqQ,OAAOrtB,SAAWgd,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,iBAF7E,CAKAvS,KAAK4hN,WAAW5hN,KAAKqQ,OAAOwxM,mBAAgD,IAA3B7hN,KAAKqQ,OAAOm3I,WAAkBxnJ,KAAKqQ,OAAOyxH,gBACtF9hI,KAAKqQ,OAAOwxM,mBAAsB7hN,KAAKqQ,OAAOyzH,wBAAwB7rJ,QAA8C,UAAlC+nB,KAAKqQ,OAAO6iI,aAAa9pJ,OACtE,UAAlC4W,KAAKqQ,OAAO6iI,aAAa9pJ,OAAoB4W,KAAKqQ,OAAOo4J,YAAezoK,KAAKqQ,OAAOo4J,WAAW3W,kBAAkBj0C,EAAAA,IAAuB5lI,SAC5I+nB,KAAKgmJ,aAAa87D,OACdC,SAAS/hN,KAAK0hN,YAAYthE,aAAa,CAAEjmK,KAAM,CAAC,IAAI+nJ,EAAAA,EAAI,CAAEof,WAAW,OAAathJ,KAAKgmJ,aAAartH,UAAU,GAEtH,IAAIx1C,EAAU6c,KAAKgmJ,aAAa87D,OAAOphO,IAAI,GAAI,EAAG,CAAC,EAAG,GAAI,KAAMsf,KAAKgmJ,aAAag8D,aAClFhiN,KAAKgmJ,aAAa87D,OAAOppL,OAAOv1C,EAAQ,GAAIA,EAAQ,KAChD6c,KAAKkhN,WAAezlO,GAAKA,EAAE0iD,SAAWn+B,KAAKqQ,OAAOrtB,UAClDgd,KAAKyR,MAAMh2B,GACXukB,KAAKkhN,WAAY,EAXrB,CAaJ,EACA9Z,EAAc/nM,UAAU4iN,aAAe,SAAUxmO,GAC7C,IAAIukB,KAAKqQ,OAAOuqB,YAAhB,CAGA,IAAIsnL,EAAkBliN,KAAKqQ,OAAO4wH,mBAAmB1uH,cAAc,iBAC/D4vM,EAAcniN,KAAKqQ,OAAOm7H,kBAAkBj5H,cAAc,+BACzD92B,EAAE0iD,SAAW+jL,IAAmBC,IAAgB1mO,EAAEmsH,gBAAkB+d,EAAAA,EAAAA,IAAalqI,EAAEmsH,cAAe,WAC/F5nG,KAAKohN,uBACTphN,KAAK2nI,YAAY3kJ,QAAUvH,EAAE0iD,OAC7Bn+B,KAAK2nI,YAAYkN,eAAiBp5J,EAAE0iD,QACpC1H,EAAAA,EAAAA,IAAS,CAACz2B,KAAK2nI,YAAY3kJ,SAAU,CAAC,YAAa,aAEvDgd,KAAKohN,sBAAuB,EACxB3lO,EAAE0iD,QAAU1iD,EAAE0iD,OAAOvH,UAAUM,SAAS,kBACxCl3B,KAAK2nI,YAAYy6E,YAAa,GAC9B3rL,EAAAA,EAAAA,IAAS,CAACz2B,KAAK2nI,YAAY3kJ,SAAU,CAAC,YAAa,YAZvD,CAcJ,EACAokN,EAAc/nM,UAAUpd,OAAS,SAAUxG,GAEvC,IAAI4mO,MAAU18F,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,aAAc1iD,EAAE0iD,OAAOvH,UAAUM,SAAS,eACtEvpB,EAAAA,EAAAA,IAAkBlyB,EAAE0iD,OAAO6tB,sBACzBvwE,EAAE0iD,OAAO6tB,mBAAmBp1B,UAAUM,SAAS,gBACrDl3B,KAAKqQ,OAAO8+H,UAAU1zJ,GAAOA,EAAEmsH,iBAAiBxuE,EAAAA,EAAAA,IAAQ39C,EAAEmsH,cAAe,YACrE5nG,KAAKqQ,OAAOrtB,QAAQ4zC,UAAUM,SAAS,iBAAmBl3B,KAAKqQ,OAAOrtB,QAAQyiB,QAAQ,oBACrF48M,IAAW10M,EAAAA,EAAAA,IAAkBlyB,EAAEmsH,gBAA2E,IAAzD1oH,SAASzD,EAAE0iD,OAAOiD,aAAa,iBAAkB,KAChD,IAAjDliD,SAASzD,EAAE0iD,OAAOiD,aAAa,SAAU,MAAiBihL,IAAW10M,EAAAA,EAAAA,IAAkBlyB,EAAEmsH,kBAC5FxuE,EAAAA,EAAAA,IAAQx2B,SAASmjE,cAAe,cAAep4D,EAAAA,EAAAA,IAAkBlyB,EAAsB,uBAG/FukB,KAAKqmG,cACLrmG,KAAKkhN,WAAY,EACjBlhN,KAAK2nI,YAAYy6E,YAAa,EAC9BpiN,KAAKsiN,6BACLtiN,KAAK6lJ,4BACL7lJ,KAAKohN,sBAAuB,EAChC,EAIAha,EAAc/nM,UAAUwmJ,0BAA4B,WAChD,IAAIlyC,EAAO3zG,KAAKqQ,OAEhB,GADAsjG,EAAK3wH,QAAQowE,UAAY,EACrBugD,EAAK6B,eAAiB7B,EAAK8B,cAAciiD,aAA7C,CACI,IAAImqB,EAAcluE,EAAKkuE,YACnB0gC,EAAwB1gC,EAAY2gC,2BACpCD,EAAsBtqO,OAAS,GAC/B4pM,EAAY7+L,QAAQowE,UAAY,EAChCmvJ,EAAsB,GAAGnvJ,SAAW,GAGpCyuH,EAAY7+L,QAAQowE,SAAW,CAGvC,MACA,GAAIugD,EAAK9lH,SAAW8lH,EAAK89B,gBAAzB,CACI,IAAIgxE,EAAiB9uG,EAAK2uE,cAAct/L,QACpCoyJ,EAAwBp1I,KAAKqQ,OAAOiyK,cAAcvtC,2BAClDK,EAAsBn9J,OAAS,GAAKm9J,EAAsB,GAAG7iI,cAAc,0CAC3EkwM,EAAervJ,UAAY,EAC3BgiF,EAAsB,GAAG7iI,cAAc,yCAAyC6gD,SAAW,GAG3FqvJ,EAAervJ,SAAW,CAGlC,KAXA,CAYA,GAAIugD,EAAKM,aAAah8H,QAUlB,GATsB07H,EAAKstB,mBAAmB1uH,cAAc,iBAC5C6gD,SAAW,GACvBpzD,KAAKqQ,OAAOyxH,gBAAmD,SAAhC9hI,KAAKqQ,OAAOkwH,iBACxCvgI,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,GAInC79G,KAAK4hN,WAAU,GAHf5hN,KAAK4hN,WAAU,GAAO,KAKrBj0M,EAAAA,EAAAA,IAAkB3N,KAAKzT,WAAYohB,EAAAA,EAAAA,IAAkB3N,KAAKzT,OAAO4xC,UAAYn+B,KAAKzT,OAAO4xC,OAAOvH,UAAUM,SAAS,iBAAkB,CACtI,IAAIwrL,EAAuB,CAAC,EAAG,GACqD,IAAhF1iN,KAAKzT,OAAOu1N,OAAOA,OAAOY,EAAqB,IAAIA,EAAqB,MACxEA,GAAuB9L,EAAAA,EAAAA,IAAc52M,KAAKzT,OAAOu1N,OAAOA,OAAQY,GAAsB,IAE1F1iN,KAAKzT,OAAOu1N,OAAO3+N,QAAUu/N,CACjC,OAjBJ,CAoBJ,EACAtb,EAAc/nM,UAAUijN,2BAA6B,WACjD,IAAIj1D,EAAertJ,KAAKqQ,OAAOm7H,kBAC3B6hB,EAAalzK,KAAKkzK,EAAalzK,KAAKlC,OAAS,KAC9Bo1K,EAAalzK,KAAKkzK,EAAalzK,KAAKlC,OAAS,GAAGk9I,iBACtD/hE,SAAW,EAE5B,EACAg0I,EAAc/nM,UAAUjf,QAAU,SAAU3E,EAAGw6N,GAC3C,KAAItwF,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,sBAAuBwnF,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,mBACrE1iD,EAAE0iD,OAAOvH,UAAUM,SAAS,sBADhC,CAIA,IAAI0lJ,IAAajvK,EAAAA,EAAAA,KAAkByrB,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,IAAM0/E,EAAAA,KACvDhlB,IAAYlrF,EAAAA,EAAAA,KAAkByrB,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,IAAM0/E,EAAAA,KAC1D++D,EAAYA,GAAa/jF,GAAY+jF,EAAYA,EACjD,IAAIjtC,IAAYhiI,EAAAA,EAAAA,KAAkByrB,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,IAAM0/E,EAAAA,QACrDlwG,EAAAA,EAAAA,KAAkByrB,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,IAAM0/E,EAAAA,KAC3Cw6D,GAAgB,EAMpB,GALIr4K,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,KAChCw6D,IAAiB1qK,EAAAA,EAAAA,KAAkByrB,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,+BAChDxwB,EAAAA,EAAAA,KAAkByrB,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,2BACzCwxG,EAAWA,IAAa0oC,MAEvBuE,IAAajvK,EAAAA,EAAAA,KAAkByrB,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,IAAM0/E,EAAAA,MACxDpiI,EAAE0iD,OAAOvH,UAAUM,SAAS2mF,EAAAA,OAC3BlwG,EAAAA,EAAAA,KAAkByrB,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,mBAIzC,GADAn+B,KAAK4hN,UAAUhlC,EAAWjtC,EAAU0oC,GAC/BuE,KAAajvK,EAAAA,EAAAA,KAAkByrB,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,IAAM0/E,EAAAA,KAA5D,CAIA,IAAI8kG,EAAa,CAAEp7N,QAAQ,EAAOk/J,OAAO,EAAOm8D,UAAUj1M,EAAAA,EAAAA,IAAkBlyB,EAAE0iD,QAAS0kL,UAAWpnO,GAElG,GADAukB,KAAKqQ,OAAO0W,OAAOhlC,EAAAA,IAAyB4gO,IACxCA,EAAWp7N,UAAU6xC,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,oBAG3Cn+B,KAAK4hN,UAAUhlC,EAAWjtC,EAAU0oC,GAChCr4K,KAAKgmJ,cAAc,CAEnB,IAAkB,IADFhmJ,KAAKgmJ,aAAa5lK,QAAQ3E,EAAGw6N,GAEzC,OAEAj2M,KAAKqQ,OAAOyxH,gBAAkBjpC,GAAYp9G,EAAE0iD,SAAWn+B,KAAKqQ,OAAO4wH,mBAAmB1lB,aAChD,IAAnCv7G,KAAKzT,OAAOu1N,OAAO3+N,QAAQ,IAAa6c,KAAKzT,OAAOu1N,OAAO3+N,QAAQ,KAAO6c,KAAKzT,OAAOu1N,OAAO1tG,UAChGp0G,KAAKzT,OAAOu1N,OAAO3+N,QAAU,CAAC,EAAG,IAErC6c,KAAKyR,QACDzR,KAAK2nI,YAAY3kJ,QAAQ4zC,UAAUM,SAAS,eAC5CT,EAAAA,EAAAA,IAAS,CAACz2B,KAAK2nI,YAAY3kJ,SAAU,CAAC,YAAa,WAE3D,CApBA,MAFIgd,KAAK8iN,cAnBT,CA0CJ,EACA1b,EAAc/nM,UAAU0jN,WAAa,SAAUtnO,GAC3C,IAAIqmJ,EAAe9hI,KAAKqQ,OAAOyxH,eAC/B,GAAI9hI,KAAKqQ,OAAOwkG,YAAa,CACzB,IAAImuG,EAAehjN,KAAKqQ,OAAO+kG,YAAYC,SAASryH,QAChDigO,EAAyBjjN,KAAKqQ,OAAO+kG,YAAYC,SAAS6tG,0BAA0BF,EAAc,IAItG,GAHIhjN,KAAKqQ,OAAOmyH,WAAaxiI,KAAKmjN,cAAc1nO,IAAMwnO,EAAuBhrO,SACzEgrO,EAAuB,GAAG7vJ,SAAW,GAErCpzD,KAAKqQ,OAAO+kG,YAAYC,SAAS+tG,qBAAsB,CACvD,GAAiB,aAAb3nO,EAAEwnB,QAAyBggN,EAAuBhrO,QAAUgrO,EAAuB,KAAOxnO,EAAE0iD,OAAQ,CACpGn+B,KAAK4hN,WAAU,GACf,IAAIyB,EAAsB,CAACrjN,KAAKzT,OAAOu1N,OAAOA,OAAO7pO,OAAS,EAC1D+nB,KAAKzT,OAAOu1N,OAAOA,OAAO9hN,KAAKzT,OAAOu1N,OAAOA,OAAO7pO,OAAS,GAAGA,OAAS,GAS7E,OARkF,IAA9E+nB,KAAKzT,OAAOu1N,OAAOA,OAAOuB,EAAoB,IAAIA,EAAoB,MACtEA,GAAsBzM,EAAAA,EAAAA,IAAc52M,KAAKzT,OAAOu1N,OAAOA,OAAQuB,GAAqB,IAExFrjN,KAAKzT,OAAOu1N,OAAO3+N,QAA4C,UAAlC6c,KAAKqQ,OAAO6iI,aAAa9pJ,KAClD4W,KAAKsjN,qBAAqBD,GAAuBA,EAC7CrjN,KAAKujN,kBAAkBF,GAAqB,GAASA,EAC7D5nO,EAAEi1D,sBACF1wC,KAAKyR,MAAMh2B,EAEf,CACA,GAAmB,QAAbA,EAAEwnB,SAAoBjD,KAAKqQ,OAAOrtB,QAAQ4zC,UAAUM,SAAS,iBACzDl3B,KAAKqQ,OAAO2kG,aAAa6mD,YAAaonD,EAAuBhrO,QAC5DgrO,EAAuBA,EAAuBhrO,OAAS,KAAOwD,EAAE0iD,SAC/Dn+B,KAAKqQ,OAAO+kG,YAAYC,SAASmuG,oBAAsB/nO,EAAE0iD,OAEjE,YADAn+B,KAAKqQ,OAAO+kG,YAAYC,SAASouG,iBAAiBhoO,GAIlD,IAAIioO,GAAa/9F,EAAAA,EAAAA,IAAa3lH,KAAKqQ,OAAOrtB,QAAS,iBACnDm0C,EAAAA,EAAAA,IAAY,CAACn3B,KAAKqQ,OAAOrtB,SAAU,CAAC,aACpCm0C,EAAAA,EAAAA,IAAY,CAACusL,GAAa,CAAC,cAC3BA,EAAWtwJ,UAAY,CAE/B,CACA,GAA0D,IAAtDpzD,KAAKqQ,OAAO+kG,YAAYC,SAASryH,QAAQowE,WAAiC,KAAd33E,EAAEu+D,SAAmBv+D,EAAE++D,UAA0B,IAAd/+D,EAAEu+D,SAGjG,OAFAv+D,EAAEi1D,sBACF1wC,KAAKyR,MAAMh2B,GAGV,GAA0D,IAAtDukB,KAAKqQ,OAAO+kG,YAAYC,SAASryH,QAAQowE,UAAgC,IAAd33E,EAAEu+D,QAGlE,OAFAv+D,EAAEi1D,sBACF1wC,KAAKqQ,OAAO+kG,YAAYC,SAASsuG,gBAGrC,GAAI3jN,KAAKqQ,OAAO+kG,YAAYC,SAASuuG,uBAAwB,CACzD,IAAIC,EAAU7jN,KAAKgmJ,aAAa87D,OAAO3nO,KACnC2pO,EAAa9jN,KAAKgmJ,aAAa87D,OAAO1tG,QAC1Cp0G,KAAKgmJ,aAAa87D,OAAO3+N,QAAU,CAAC0gO,EAASC,EACjD,CACJ,CACA,IAAI9jN,KAAK+jN,OAAOtoO,GAAhB,CAGA,GAAIA,EAAE0iD,SAAUwnF,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,mBAAqB2jG,EAAc,CACtE,IAAI3nJ,EAAO,GAAGkjB,MAAMqC,KAAKM,KAAKqQ,OAAOm7H,kBAAkBrxJ,MACnD49L,EAAW59L,EAAKA,EAAKlC,OAAS,GAAGk9I,iBACjC15I,EAAE0iD,SAAW45I,IACb/3K,KAAK4hN,WAAU,GACf5hN,KAAKgkN,2BAEb,CACA,GAAiB,aAAbvoO,EAAEwnB,QAAyBxnB,EAAE0iD,SAAW1iD,EAAE0iD,SAAWn+B,KAAKqQ,OAAOrtB,UAAW2iI,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,eAChGwnF,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,oBAAqB,CAC/C,GAAI1iD,EAAE0iD,SAAWn+B,KAAKqQ,OAAOrtB,QAIzB,YAHIgd,KAAKqQ,OAAOrtB,QAAQ4zC,UAAUM,SAAS,gBACvCl3B,KAAKikN,sBAAsBxoO,IAInC,IAAIkqI,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,mBAKvB,YAJIn+B,KAAKqQ,OAAOrtB,QAAQ4zC,UAAUM,SAAS,iBACvCz7C,EAAEi1D,iBACF1wC,KAAKqQ,OAAOrtB,QAAQyuB,UAI5B,IAAIk0G,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,aAAc,CACrC,GAAIn+B,KAAKqQ,OAAOmlG,eAAiBx1G,KAAKqQ,OAAOolG,cAAciiD,aAAc,CACrE,IACI6qD,GADA1gC,EAAc7hL,KAAKqQ,OAAOwxK,aACU2gC,2BACxC/mO,EAAEi1D,iBACE6xK,EAAsBtqO,OAAS,EAC/BsqO,EAAsBA,EAAsBtqO,OAAS,GAAGw5B,QAGxDowK,EAAY7+L,QAAQyuB,OAE5B,MACSzR,KAAKqQ,OAAOrtB,QAAQ4zC,UAAUM,SAAS,iBAC5Cz7C,EAAEi1D,iBACF1wC,KAAKqQ,OAAOrtB,QAAQyuB,SAExB,MACJ,CACJ,CACA,IAAIyyM,GAAuB,EAC3B,GAAiB,QAAbzoO,EAAEwnB,QAAoBxnB,EAAE0iD,SAAW1iD,EAAE0iD,SAAWn+B,KAAKqQ,OAAOrtB,UAAW2iI,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,eAC3FwnF,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,oBAAqB,CAC/C,GAAIn+B,KAAKqQ,OAAOmlG,eAAiBx1G,KAAKqQ,OAAOolG,cAAciiD,eACnDj8K,EAAE0iD,SAAWn+B,KAAKqQ,OAAOrtB,SAAWvH,EAAE0iD,OAAOvH,UAAUM,SAAS,oBAAqB,CACzF,IAAI2qJ,EAEJ,IADI0gC,GADA1gC,EAAc7hL,KAAKqQ,OAAOwxK,aACU2gC,4BACdvqO,OAAS,EAG/B,OAFAwD,EAAEi1D,sBACF6xK,EAAsB,GAAG9wM,QAG7B,IAAKh2B,EAAE0iD,OAAOvH,UAAUM,SAAS,mBAG7B,OAFAz7C,EAAEi1D,sBACFmxI,EAAY7+L,QAAQyuB,OAG5B,CACA,IAAKzR,KAAKqQ,OAAOxiB,SAAWmS,KAAKqQ,OAAOohI,mBAAqBh2J,EAAE0iD,SAAWn+B,KAAKqQ,OAAOrtB,UAC/E2iI,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,oBACvB1iD,EAAE0iD,OAAOvH,UAAUM,SAAS,cAAe,CAC9C,IAAIurL,EAAiBziN,KAAKqQ,OAAOiyK,cAAct/L,QAC3CoyJ,EAAwBp1I,KAAKqQ,OAAOiyK,cAAcvtC,2BACtD,GAAIK,EAAsBn9J,OAAS,EAG/B,OAFAwD,EAAEi1D,sBACF0kG,EAAsB,GAAG7iI,cAAc,yCAAyCd,QAGpF,IAAKh2B,EAAE0iD,OAAOvH,UAAUM,SAAS,aAG7B,OAFAz7C,EAAEi1D,sBACF+xK,EAAehxM,OAGvB,EACIh2B,EAAE0iD,SAAWn+B,KAAKqQ,OAAOrtB,UAAW2iI,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,eACxDwnF,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,sBAC1B+lL,GAAuB,EAE/B,CACIA,KACIpiF,GAAiD,SAAhC9hI,KAAKqQ,OAAOkwH,iBAC1BvgI,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,GAG9B79G,KAAKqQ,OAAOmlG,eAAiBx1G,KAAKqQ,OAAOolG,cAAcrB,QAAQn8H,SAAW+nB,KAAKqQ,OAAO+jG,QAAQn8H,OACnG+nB,KAAK4hN,WAAU,GAGf5hN,KAAK4hN,WAAU,GANf5hN,KAAK4hN,WAAU,GAAO,GAQ1B5hN,KAAKzT,OAAOu1N,OAAO3+N,QAAU,CAAC,GAAI,IAEtC6c,KAAKmkN,UAAY1oO,EAAEwnB,OACnB,IAAI0/M,EAAa,CAAEp7N,QAAQ,EAAOk/J,OAAO,EAAMm8D,SAAS,EAAOl8D,QAASjrK,GAExE,GADAukB,KAAKqQ,OAAO0W,OAAOhlC,EAAAA,IAAyB4gO,IACxCA,EAAWp7N,OAAf,CAGA,IAAI68N,EAASpkN,KAAKgmJ,aAAa87D,OAAO3+N,QAClCkhO,EAAiBrkN,KAAKskN,gBACtBC,EAAiBvkN,KAAKzT,QAAUyT,KAAKzT,OAAOu1N,OAAO3+N,QACnD,CAAC6c,KAAKzT,OAAOu1N,OAAO3+N,QAAQ,GAAI6c,KAAKzT,OAAOu1N,OAAO3+N,QAAQ,SAAMjI,EACrE8kB,KAAK2nI,YAAY68E,SAAU,EAC3B,IAAIC,EAAWzkN,KAAKgmJ,aAAa0+D,KAAKjpO,EAAEwnB,OAAQmhN,GAChDpkN,KAAKghN,KAAOyD,EACRA,EAASzD,QAAUl/E,GAAkD,UAAlC9hI,KAAKqQ,OAAO6iI,aAAa9pJ,MAC3C,QAAb3N,EAAEwnB,QAAiC,aAAbxnB,EAAEwnB,UAC5BjD,KAAK4hN,WAAW6C,EAASE,SAAUF,EAASG,SAAUH,EAASI,eAC/D7kN,KAAKgmJ,aAAa87D,OAAO3+N,QAAU6c,KAAKgmJ,aAAa8+D,eAAeV,EAAQK,EAAUzkN,KAAKzT,OAAQ9Q,EAAEwnB,QACrGjD,KAAKqhN,YAAc,CAAC,GAExBrhN,KAAK+kN,eAAetpO,EAAEwnB,OAAQjD,KAAKgmJ,cACnC,IAAIv0H,EAAYqwG,GAAkD,UAAlC9hI,KAAKqQ,OAAO6iI,aAAa9pJ,MAAoB3N,EAAE0iD,SAAwB,QAAb1iD,EAAEwnB,QACxE,aAAbxnB,EAAEwnB,WAA2B0iH,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,kBACpDwnF,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,uBAAoBjjD,GAC5C8kB,KAAKumD,QAAQy+J,aAAsBhlN,KAAKgmJ,aAAa+8D,WAAWtnO,GACtE,GAAIA,EAAE0iD,SAAUwnF,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,gBACnC,GAAK2jG,GAuCD,GAHsC,UAAlC9hI,KAAKqQ,OAAO6iI,aAAa9pJ,MAAkC,QAAb3N,EAAEwnB,QAAiC,aAAbxnB,EAAEwnB,QACtEjD,KAAKilN,uBAAuBZ,EAAgBE,EAA6B,QAAb9oO,EAAEwnB,QAEjD,aAAbxnB,EAAEwnB,QAAyBmhN,EAAOhpO,aAAe4kB,KAAKzT,OAAOu1N,OAAO3+N,QAAQ/H,aAAeqpO,EAASzD,OAC7D,UAAlChhN,KAAKqQ,OAAO6iI,aAAa9pJ,MAAsB4W,KAAKskN,kBAAoBD,GAE7E,YADArkN,KAAKklN,mBAAmBzpO,OAzCb,CACf,GAAiB,QAAbA,EAAEwnB,QAAoBmhN,EAAOhpO,aAAe4kB,KAAKzT,OAAOu1N,OAAO3+N,QAAQ/H,WAAY,CACnF,IAAI+pO,GAAsBvO,EAAAA,EAAAA,IAAc52M,KAAKzT,OAAOu1N,OAAOA,OAAQ9hN,KAAKzT,OAAOu1N,OAAO3+N,SAAS,GAC3FkgO,EAAsB,CAACrjN,KAAKzT,OAAOu1N,OAAOA,OAAO7pO,OAAS,EAC1D+nB,KAAKzT,OAAOu1N,OAAOA,OAAO9hN,KAAKzT,OAAOu1N,OAAOA,OAAO7pO,OAAS,GAAGA,OAAS,GAI7E,GAHkF,IAA9E+nB,KAAKzT,OAAOu1N,OAAOA,OAAOuB,EAAoB,IAAIA,EAAoB,MACtEA,GAAsBzM,EAAAA,EAAAA,IAAc52M,KAAKzT,OAAOu1N,OAAOA,OAAQuB,GAAqB,IAEpFrjN,KAAKzT,OAAOu1N,OAAO3+N,QAAQ/H,aAAeioO,EAAoBjoO,WAAY,CAC1Eq2C,GAAY,EACZzxB,KAAK4hN,WAAU,GACf,IAAIwD,EAAwB,CAAC,EAAG,GACsD,IAAlFplN,KAAKzT,OAAOu1N,OAAOA,OAAOsD,EAAsB,IAAIA,EAAsB,MAC1EA,GAAwBxO,EAAAA,EAAAA,IAAc52M,KAAKzT,OAAOu1N,OAAOA,OAAQ,CAAC,EAAG,IAAI,IAE7E9hN,KAAKzT,OAAOu1N,OAAO3+N,QAA4C,UAAlC6c,KAAKqQ,OAAO6iI,aAAa9pJ,KAClD4W,KAAKsjN,qBAAqB8B,GAAyBA,EAC/CplN,KAAKujN,kBAAkB6B,GAAuB,GAAQA,CAClE,MACSplN,KAAKzT,OAAOu1N,OAAO3+N,QAAQ/H,aAAe+pO,EAAoB/pO,aACnE4kB,KAAKzT,OAAOu1N,OAAO3+N,QAAUgiO,EAErC,CACA,GAAiB,aAAb1pO,EAAEwnB,QAAyBmhN,EAAOhpO,aAAe4kB,KAAKzT,OAAOu1N,OAAO3+N,QAAQ/H,WAAY,CACxF,IAAIiqO,GAAoBzO,EAAAA,EAAAA,IAAc52M,KAAKzT,OAAOu1N,OAAOA,OAAQ9hN,KAAKzT,OAAOu1N,OAAO3+N,SAAS,GAC7F,GAAIkiO,EAAkBjqO,aAAe4kB,KAAKzT,OAAOu1N,OAAO3+N,QAAQ/H,WAE5D,YADA4kB,KAAKklN,mBAAmBzpO,GAGxBukB,KAAKzT,OAAOu1N,OAAO3+N,QAAQ/H,aAAeiqO,EAAkBjqO,YAAeq2C,IAC3EA,GAAY,EACZzxB,KAAKzT,OAAOu1N,OAAO3+N,QAAUkiO,EAErC,CACJ,CAYJ,GAAI5pO,EAAE0iD,SAAUwnF,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,iBACnC,GAAK2jG,EA0BqC,UAAlC9hI,KAAKqQ,OAAO6iI,aAAa9pJ,MAAkC,QAAb3N,EAAEwnB,QAAiC,aAAbxnB,EAAEwnB,SACtEjD,KAAKilN,uBAAuBZ,EAAgBE,EAA6B,QAAb9oO,EAAEwnB,QAC7C,QAAbxnB,EAAEwnB,QAAoBshN,EAAenpO,aAAe4kB,KAAKzT,OAAOu1N,OAAO3+N,QAAQ/H,YAC5E4kB,KAAKskN,kBAAoBD,IAC5BrkN,KAAKqQ,OAAOo4J,WAAWA,WAAW68C,aAAc,SAvBxD,GANsC,UAAlCtlN,KAAKqQ,OAAO6iI,aAAa9pJ,MAAkC,QAAb3N,EAAEwnB,QAAiC,aAAbxnB,EAAEwnB,SACtEjD,KAAKzT,OAAOu1N,OAAO3+N,QAAU6c,KAAKujN,kBAAkBgB,EAA6B,QAAb9oO,EAAEwnB,QACrD,QAAbxnB,EAAEwnB,QAAoBshN,EAAenpO,aAAe4kB,KAAKzT,OAAOu1N,OAAO3+N,QAAQ/H,aAC/E4kB,KAAKqQ,OAAOo4J,WAAWA,WAAW68C,aAAc,IAGvC,aAAb7pO,EAAEwnB,QAAyBmhN,EAAOhpO,aAAe4kB,KAAKzT,OAAOu1N,OAAO3+N,QAAQ/H,WAAY,CACxF,GAAI4kB,KAAKqQ,OAAOmlG,eAAiBx1G,KAAKqQ,OAAOolG,cAAcrB,QAAQn8H,SAAW+nB,KAAKqQ,OAAO+jG,QAAQn8H,OAE9F,YADA+nB,KAAKklN,mBAAmBzpO,GAGxB2pO,EAAwB,CAAC,EAAG,GACsD,IAAlFplN,KAAKzT,OAAOu1N,OAAOA,OAAOsD,EAAsB,IAAIA,EAAsB,MAC1EA,GAAwBxO,EAAAA,EAAAA,IAAc52M,KAAKzT,OAAOu1N,OAAOA,OAAQ,CAAC,EAAG,IAAI,IAExErwL,GAAc2zL,EAAsBhqO,aAAe4kB,KAAKzT,OAAOu1N,OAAO3+N,QAAQ/H,aACzC,UAAlC4kB,KAAKqQ,OAAO6iI,aAAa9pJ,MACtBm7N,EAAenpO,aAAe4kB,KAAKzT,OAAOu1N,OAAO3+N,QAAQ/H,cAChEq2C,GAAY,EACZzxB,KAAK4hN,WAAU,GACf5hN,KAAKgkN,2BAEb,CAYR,IAAkB,IAAdvyL,EAsBJh2C,EAAEi1D,iBACF1wC,KAAKyR,MAAMh2B,OAvBX,CAKI,GAJAukB,KAAK6nI,iBACY,aAAbpsJ,EAAEwnB,QAAyBmhN,EAAOhpO,aAAe,CAAC,EAAG,GAAGA,aACxD4kB,KAAKqQ,OAAOrtB,QAAQowE,UAAY,GAEhCpzD,KAAKqQ,OAAOwkG,cAAgB70G,KAAKqQ,OAAO+kG,YAAYC,SAAS+tG,sBAAwBpjN,KAAKmjN,cAAc1nO,IACrG2oO,EAAOhpO,aAAe,CAAC,EAAG,GAAGA,WAAY,CAE5C,GADAK,EAAEi1D,iBACgB,KAAdj1D,EAAEu+D,QAEF,YADAh6C,KAAKqQ,OAAO+kG,YAAYC,SAASkwG,yBAGhC,GAAkB,IAAd9pO,EAAEu+D,QAEP,YADAh6C,KAAKqQ,OAAO+kG,YAAYC,SAASsuG,eAGzC,CACI3jN,KAAKqQ,OAAOrtB,QAAQ4zC,UAAUM,SAAS,gBACvCl3B,KAAKikN,sBAAsBxoO,EAGnC,CA3HA,CApGA,CAkOJ,EACA2rN,EAAc/nM,UAAUikN,qBAAuB,SAAUn7C,GACrD,IAAI3tD,EAAOx6G,KAAKzT,OAAO86J,WAAWltK,KAAKguL,EAAU,IAAIhmC,MAAMgmC,EAAU,IACjE1tD,GAAKrhF,EAAAA,EAAAA,IAAQohF,EAAM,MACnBgrG,EAAetmO,SAASs7H,EAAKp5E,aAAa,iBAAkB,IAC5DqkL,EAAUzlN,KAAKqQ,OAAO4jG,aAAa/0H,SAASsmO,EAAapqO,WAAY,KACzE,QAA8D,IAA1D4kB,KAAKzT,OAAOu1N,OAAOA,OAAO35C,EAAU,IAAIA,EAAU,KAC7C1tD,EAAG7jF,UAAUM,SAAS,YAAaujF,EAAG7jF,UAAUM,SAAS,kBAAqBuuL,EAAQvxG,eAAiBuxG,EAAQnyE,cAI5H,EACA8zD,EAAc/nM,UAAUkkN,kBAAoB,SAAUmC,EAAkB5nJ,EAAM6nJ,GAI1E,IAHA,IAAIx9C,EAAYu9C,EACZE,EAAgBF,EAChBG,GAAkB,GACdA,GAAiB,CACrB,IAAIC,EAAoBF,EACxBA,GAAgBhP,EAAAA,EAAAA,IAAc52M,KAAKzT,OAAOu1N,OAAOA,OAAQ8D,EAAe9nJ,GACnEgoJ,EAAkB1qO,aAAewqO,EAAcxqO,YAC5CuqO,GAAYG,EAAkB,KAAOF,EAAc,GACvDC,GAAkB,EAGlB7lN,KAAKsjN,qBAAqBsC,KAC1Bz9C,EAAYy9C,EACZC,GAAkB,EAE1B,CACA,OAAO19C,CACX,EACAi/B,EAAc/nM,UAAU4lN,uBAAyB,SAAUc,EAAmBL,EAAkB5nJ,EAAMkoJ,GAClG,IACIC,EADAtyG,EAAO3zG,KAAKqQ,OAEZ61M,GAAc,EAOlB,GALID,OADY/qO,IAAZ8qO,EACW,CAACA,EAASloJ,EAAO,EAAI99D,KAAKzT,OAAOu1N,OAAOA,OAAO5iO,SAAS8mO,EAAQ5qO,WAAY,KAAKnD,OAAS,GAG1F6lF,EAAO,CAAC4nJ,EAAiB,GAAIA,EAAiB,GAAK,GAAK,CAACA,EAAiB,GAAIA,EAAiB,GAAK,GAE/G1lN,KAAKzT,OAAOu1N,OAAOA,OAAOmE,EAAS,KAAOjmN,KAAKzT,OAAOu1N,OAAOA,OAAOmE,EAAS,IAAIA,EAAS,IAC1F,GAAIjmN,KAAKsjN,qBAAqB2C,GAC1BjmN,KAAKzT,OAAOu1N,OAAO3+N,QAAU8iO,MAE5B,CACD,IAAIE,EAAeF,EACnBA,EAAWjmN,KAAKujN,kBAAkB0C,EAAUnoJ,GAAM,GAC9CqoJ,EAAa/qO,aAAe6qO,EAAS7qO,WACrC8qO,GAAc,EAGdlmN,KAAKzT,OAAOu1N,OAAO3+N,QAAU8iO,CAErC,MAGAC,GAAc,EAElB,GAAIA,EAAa,CACb,IAAIE,EAAapmN,KAAKskN,gBAClB3vD,EAAahhD,EAAK4sB,gBAClB02B,EAAWgvD,EAAS,GACpBI,EAASpvD,EAAW,EACpBqvD,EAASrvD,EAAW,EACpBsvD,GAAWzoJ,IAAoB,IAAZuoJ,EACnBG,EAAU1oJ,GAAQwoJ,EAAStmN,KAAKzT,OAAOu1N,OAAOA,OAAO7pO,OAAS,EAIlE,IAH+C,qBAAfmuO,GAAqD,kBAAfA,GAChD,UAAfzxD,IAA4B4xD,IAA6B,uBAAfH,GAAuD,mBAAfA,GACnE,SAAfzxD,IAA2B6xD,EAE9BxmN,KAAKymN,gBAAgBV,GACrB/lN,KAAKzT,OAAOu1N,OAAO3+N,QAAUuiO,MAE5B,CACD,IACIgB,EAAqC,eAAf/xD,GAA+B72F,EACrD6oJ,EAAmC,SAAfhyD,GAAyB6xD,EAC7CI,EAAgC,SAAfjyD,GAAyB72F,EAC1C+oJ,EAAiC,UAAflyD,IAA2B72F,EAC7CgpJ,EAAoC,UAAfnyD,GAA0B4xD,EAC/ChgK,EAA0B,kBAAf6/J,GAAkCO,GAAsC,sBAAfP,GACjEI,GAA4B,sBAAfJ,IAAuCG,GAA4B,mBAAfH,IAChEU,GAAsC,uBAAfV,EAC3BrV,GAAiC,kBAAfqV,GAAiD,mBAAfA,KAChDM,IAAyC,sBAAfN,GAAqD,uBAAfA,IACjEM,EACHK,GAAsC,qBAAfX,GAAoD,sBAAfA,KAZvB,eAAfzxD,IAAgC72F,KAaV,kBAAfsoJ,GAAiD,mBAAfA,IAC5DM,EACP1mN,KAAK4hN,UAAUr7J,EAASwqJ,EAAegW,GACvC,IAAIzjN,EAA4B,kBAAf8iN,GAAkCO,GAC5B,sBAAfP,GAAsCI,EAAW,GAClC,kBAAfJ,GAAiD,mBAAfA,IAAoCQ,IAClD,sBAAfR,GAAqD,uBAAfA,IAAwCtoJ,EAAQwoJ,EACzE,sBAAfF,GAAsCG,GAClB,mBAAfH,GAAmCU,EAAsB9mN,KAAKzT,OAAOu1N,OAAOA,OAAO7pO,OAAS,GAC7E,qBAAfmuO,GAAoD,sBAAfA,KAAwCtoJ,IACzD,kBAAfsoJ,GAAiD,mBAAfA,IAAoCS,EAAmBR,EAC5FpvD,EAClBj3J,KAAKilN,uBAAuBc,EAAmBL,EAAkB5nJ,EAAMx6D,EAC3E,CACJ,CACJ,EACA8jM,EAAc/nM,UAAUilN,cAAgB,WACpC,IAAI8B,EACJ,GAAIpmN,KAAKzT,OAAQ,CACb,IAAIy6N,EAAchnN,KAAKzT,OAAO86J,WAC9B++D,GAAazgG,EAAAA,EAAAA,IAAaqhG,EAAa,wBAA0B,oBAC7DrhG,EAAAA,EAAAA,IAAaqhG,EAAa,mBAAqB,iBAC3CrhG,EAAAA,EAAAA,IAAaqhG,EAAa,yBAA2B,qBACjDrhG,EAAAA,EAAAA,IAAaqhG,EAAa,yBAA2B,qBACjDrhG,EAAAA,EAAAA,IAAaqhG,EAAa,oBAAsB,kBAC5CrhG,EAAAA,EAAAA,IAAaqhG,EAAa,0BAA4B,0BAClD9rO,CAC5B,CACA,OAAOkrO,CACX,EACAhf,EAAc/nM,UAAUonN,gBAAkB,SAAUL,GAChD,IAAIzxD,EAAa30J,KAAKqQ,OAAOkwH,gBAC7B,OAAQ6lF,GACJ,IAAK,mBACDpmN,KAAK4hN,WAAU,GAAO,GACtB,MACJ,IAAK,gBACD5hN,KAAK4hN,WAAU,GACf,MACJ,IAAK,oBACD5hN,KAAK4hN,WAAU,EAAsB,UAAfjtD,EAAsD,UAAfA,GAC7D,MACJ,IAAK,oBACD30J,KAAK4hN,WAAU,GAAM,GACrB,MACJ,IAAK,iBACD5hN,KAAK4hN,WAAU,GACf,MACJ,IAAK,qBACD5hN,KAAK4hN,WAAU,EAAqB,UAAfjtD,EAAsD,UAAfA,GAGxE,EACAyyC,EAAc/nM,UAAU2kN,yBAA2B,WAC/C,IAAIiD,EAAuB,CAACjnN,KAAKzT,OAAOu1N,OAAOA,OAAO7pO,OAAS,EAC3D+nB,KAAKzT,OAAOu1N,OAAOA,OAAO9hN,KAAKzT,OAAOu1N,OAAOA,OAAO7pO,OAAS,GAAGA,OAAS,GACO,IAAhF+nB,KAAKzT,OAAOu1N,OAAOA,OAAOmF,EAAqB,IAAIA,EAAqB,MACxEA,GAAuBrQ,EAAAA,EAAAA,IAAc52M,KAAKzT,OAAOu1N,OAAOA,OAAQmF,GAAsB,IAE1FjnN,KAAKzT,OAAOu1N,OAAO3+N,QAAU8jO,CACjC,EACA7f,EAAc/nM,UAAU4kN,sBAAwB,SAAUxoO,GACtD,IAAIgwK,GAAc9lC,EAAAA,EAAAA,IAAa3lH,KAAKqQ,OAAOrtB,QAAS,WAChDkkO,GAAavhG,EAAAA,EAAAA,IAAa8lC,EAAa,UAAU5vH,cAAc,GAC/D6nL,GAAa/9F,EAAAA,EAAAA,IAAa3lH,KAAKqQ,OAAOrtB,QAAS,gBAC/CkpB,GAAMy5G,EAAAA,EAAAA,IAAa3lH,KAAKqQ,OAAOrtB,QAAS,eAAeo+C,aAAa,YACpE+lL,EAAa,GAAG9pN,MAAMqC,KAAKwnN,EAAW17E,kBAAkBrxJ,MACxDitO,EAAiBD,EAAWrnO,KAAI,SAAU43B,GAAK,OAAOA,EAAE0pB,aAAa,WAAa,IAAG9qC,QAAQ4V,GACjG,KAAiB,QAAbzwB,EAAEwnB,QAAoBmkN,GAAkBD,EAAWlvO,OAAS,GAAhE,CAOA,IAAIovO,EAEJ,IANAlwL,EAAAA,EAAAA,IAAY,CAACn3B,KAAKqQ,OAAOrtB,SAAU,CAAC,aACpCm0C,EAAAA,EAAAA,IAAY,CAACusL,GAAa,CAAC,cAC3BA,EAAWtwJ,UAAY,EACvB33E,EAAEi1D,iBAEFw2K,EAAWx/E,YAAYrhC,cACN,aAAb5qH,EAAEwnB,QAGF,IAFA,IACIqkN,EADcH,EAAWC,EAAiB,GACnBjlF,MAClBh9H,EAAImiN,EAASrvO,OAAS,EAAGktB,GAAK,EAAGA,IAEtC,KADAkiN,EAAgBC,EAASpoO,SAASimB,EAAE/pB,WAAY,MAC7Bw7C,UAAUM,SAAS,UAAW,CAC7CgwL,EAAWx/E,YAAYn7I,OAAOu1N,OAAO3+N,QAAU,CAACikO,EAAiB,EAAGjiN,GACpE,KACJ,OAIJkiN,EAAgBF,EAAWC,EAAiB,GAAGjlF,MAAM,GACrD+kF,EAAWx/E,YAAYn7I,OAAOu1N,OAAO3+N,QAAU,CAACikO,EAAiB,EAAG,GAExEF,EAAWx/E,YAAYC,YAAY3kJ,QAAUqkO,EAC7CH,EAAWx/E,YAAYC,YAAYkN,eAAiBwyE,GACpD5wL,EAAAA,EAAAA,IAAS,CAAC4wL,GAAgB,CAAC,YAAa,YACxCA,EAAcj0J,SAAW,EACzBi0J,EAAc51M,OA1Bd,CA2BJ,EACA21L,EAAc/nM,UAAU6lN,mBAAqB,SAAUzpO,GAEnD,GADAukB,KAAKqmG,cACDrmG,KAAKqQ,OAAOxiB,SAAWmS,KAAKqQ,OAAOohI,gBAAiB,CACpD,IAAIgxE,EAAiBziN,KAAKqQ,OAAOiyK,cAAct/L,QAC3CoyJ,EAAwBp1I,KAAKqQ,OAAOiyK,cAAcvtC,2BAQtD,OAPAt5J,EAAEi1D,sBACE0kG,EAAsBn9J,OAAS,EAC/Bm9J,EAAsBA,EAAsBn9J,OAAS,GAAGs6B,cAAc,yCAAyCd,QAG/GgxM,EAAehxM,QAGvB,CACA,GAAIzR,KAAKqQ,OAAOmlG,eAAiBx1G,KAAKqQ,OAAOolG,cAAciiD,aAAc,CACrE,IAAImqB,EAAc7hL,KAAKqQ,OAAOwxK,YAC1B0gC,EAAwB1gC,EAAY2gC,2BAQxC,OAPA/mO,EAAEi1D,sBACE6xK,EAAsBtqO,OAAS,EAC/BsqO,EAAsBA,EAAsBtqO,OAAS,GAAGw5B,QAGxDowK,EAAY7+L,QAAQyuB,QAG5B,CACIzR,KAAKqQ,OAAOrtB,QAAQ4zC,UAAUM,SAAS,iBACvCz7C,EAAEi1D,iBACF1wC,KAAKqQ,OAAOrtB,QAAQyuB,QAE5B,EACA21L,EAAc/nM,UAAU8jN,cAAgB,SAAU1nO,GAC9C,MAAsC,UAAlCukB,KAAKqQ,OAAO6iI,aAAa9pJ,OAAoB4W,KAAKqQ,OAAO6iI,aAAaG,aAA6B,KAAd53J,EAAEu+D,OAI/F,EACAotJ,EAAc/nM,UAAU0kN,OAAS,SAAUtoO,GACvC,IAAI0iD,EAAS1iD,EAAE0iD,OACf,IAAKA,EACD,OAAO,EAEX,GAAIn+B,KAAK2nI,YAAYy6E,WAEjB,OADApiN,KAAK6nI,kBACE,EAEX,GAAI,CAAC,SAAU,WAAY,gBAAgBvxI,QAAQ7a,EAAEwnB,SAAW,EAE5D,OADAjD,KAAK6nI,kBACE,EAEX,GAAI7nI,KAAKqQ,OAAOmlG,cAAe,CAC3B,IAAI+sG,EAAwBviN,KAAKqQ,OAAOwxK,YAAY2gC,2BACpD,IAAI78F,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,wBACjB1iD,EAAE0iD,SAAWokL,EAAsB,IAAmB,aAAb9mO,EAAEwnB,QACzCxnB,EAAE0iD,SAAWokL,EAAsBA,EAAsBtqO,OAAS,IAAmB,QAAbwD,EAAEwnB,QAClF,OAAO,CAEf,CACA,GAAIjD,KAAKqQ,OAAOxiB,SAAWmS,KAAKqQ,OAAOohI,gBAAiB,CACpD,IACI2D,EADiBp1I,KAAKqQ,OAAOiyK,cAAct/L,QAE1C8tB,iBAAiB,kDACtB,IAAI60G,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,qBAClBi3G,EAAsBn9J,OAAS,KAAO0tI,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,oBAAsBi3G,EAAsB,IAAmB,aAAb35J,EAAEwnB,SAC9G0iH,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,oBAAsBi3G,EAAsBA,EAAsBn9J,OAAS,IAAmB,QAAbwD,EAAEwnB,SAClH,OAAO,CAEf,CACA,IAAIskN,GAAKnuL,EAAAA,EAAAA,IAAQ+E,EAAQ,SAAU/E,EAAAA,EAAAA,IAAQ+E,EAAQ,MAAMi1B,UACrD33E,EAAE0iD,OAAOvH,UAAUM,SAAS,wBAAyC,KAAdz7C,EAAEu+D,SAAgC,KAAdv+D,EAAEu+D,UAC3D5gB,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,oBACxB5rB,cAAc,SAASd,QAEnC81M,GAA8D,QAAxDnuL,EAAAA,EAAAA,IAAQx2B,SAASmjE,cAAe,qBACtC/lE,KAAKqmG,cAET,IAAIq+B,EAAqE,QAAxDtrG,EAAAA,EAAAA,IAAQx2B,SAASmjE,cAAe,oBACjD,GAAI/lE,KAAKqQ,OAAOwxM,mBAAqBn9E,EAAY,CAC7C,IAAIo9E,EAAS9hN,KAAKzT,OAAOu1N,OACrB3+N,EAAU2+N,EAAO3+N,QACrBuhJ,EAAao9E,EAAOA,OAAO3+N,EAAQ,IAAI27B,YAAY,KAAO37B,EAAQ,EACtE,CACA,MAAqB,WAAb1H,EAAEwnB,QACgC,UAAlCjD,KAAKqQ,OAAO6iI,aAAa9pJ,OAAqB4W,KAAKqQ,OAAO8+H,QAAU,CAAC,SAAU,MAAM74I,QAAQ7a,EAAEwnB,SAAW,IACzGyhI,GAAc1kI,KAAKqQ,OAAOwxM,mBAAuBn9E,GAA2B,QAAbjpJ,EAAEwnB,QAAiC,aAAbxnB,EAAEwnB,QACP,QAAjFm2B,EAAAA,EAAAA,IAAQx2B,SAASmjE,cAAe,IAAM/lE,KAAKqQ,OAAOrtB,QAAQ4B,GAAK,eACxD,CAAC,QAAS,YAAa,aACtB,YAAa,aAAc,aAAa0R,QAAQ7a,EAAEwnB,SAAW,GACrB,QAAhDm2B,EAAAA,EAAAA,IAAQ+E,EAAQ,IAAM0/E,EAAAA,KAAiF,QAA/CzkF,EAAAA,EAAAA,IAAQ+E,EAAQ,IAAM0/E,EAAAA,OACzEpiI,EAAE0iD,SAAWn+B,KAAKqQ,OAAOrtB,UAAW2iI,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,eACzDwnF,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,qBACjB,UAAb1iD,EAAEwnB,SAAwBk7B,EAAOvH,UAAUM,SAAS2mF,EAAAA,KAAuE,QAA/CzkF,EAAAA,EAAAA,IAAQ+E,EAAQ,IAAM0/E,EAAAA,KACpD,QAA3CzkF,EAAAA,EAAAA,IAAQ+E,EAAQ,wBAA6E,QAAvC/E,EAAAA,EAAAA,IAAQ+E,EAAQ,kBACrF,EACAipK,EAAc/nM,UAAUmoN,oBAAsB,SAAU/rO,GACpD,IAAIu0B,EAAQhQ,KACZ,GAAIA,KAAKqQ,OAAOykG,sBAAwB90G,KAAKqQ,OAAO0kG,wBAAyB,CACzE,IAAIlvH,EAAO,CAAE4hO,YAAa,CAAC,EAAGzjD,OAAO,EAAO0jD,UAAU,GACtD1nN,KAAKqQ,OAAO0W,OAAOhlC,EAAAA,IAAsB8D,GACzC,IAAI8hO,EAAa3nN,KAAKwhN,QAAQ75M,MAAK,SAAUpqB,GAAS,OAAOA,IAAUyyB,EAAMm0M,SAAW,IACpFn/G,IAAahlG,KAAKqQ,OAAOw3I,eACzB7nJ,KAAKqQ,OAAOw3I,cAAc4xB,kBAAoB,EAC9C5zL,EAAKm+K,OAASnlL,OAAOC,KAAK+G,EAAK4hO,aAAaxvO,QAAU0vO,GAAc9hO,EAAK6hO,UAAY1iH,GACrFhlG,KAAKqQ,OAAO0W,OAAOhlC,EAAAA,IAAyB,CAAE2lO,UAAU,IACxD7hO,EAAK6hO,UAAW,EAChB1nN,KAAKqQ,OAAOw3I,cAAc4xB,kBAAoB,EAC1CkuC,IACA3nN,KAAKmkN,UAAYnkN,KAAK4nN,MACtB5nN,KAAKqQ,OAAO0W,OAAO,sBAAuBtrC,IAG9CukB,KAAK2nI,YAAYkN,eAAepjI,MAAM,CAAEo2M,eAAe,KAGnD7nN,KAAKyhN,iBAAmBzhN,KAAKqgJ,iBAE7BrgJ,KAAK2nI,YAAYkN,eAAepjI,MAAM,CAAEo2M,eAAe,IAGvD7nN,KAAK2nI,YAAYkN,eAAepjI,OAG5C,CACAzR,KAAKyhN,gBAAkBzhN,KAAKqgJ,kBAAmB,CACnD,EACA+mD,EAAc/nM,UAAU+vI,kBAAoB,WACxC,OAAOpvI,KAAK2nI,YAAYkN,cAC5B,EACAuyD,EAAc/nM,UAAU2mJ,WAAa,WACjC,OAAOhmJ,KAAKzT,QAAUyT,KAAKumD,OAC/B,EACA6gJ,EAAc/nM,UAAUuiN,UAAY,SAAUr7J,EAASopF,EAAU0oC,GAC7Dr4K,KAAKzT,OAASg6D,EAAUopF,EAAW3vI,KAAK8nN,SAAWzvC,EAAgBr4K,KAAK+nN,UAAY/nN,KAAKumD,QACrFopF,EAAW3vI,KAAKgoN,QAAU3vC,EAAgBr4K,KAAKioN,SAAWjoN,KAAKywB,MACvE,EACA22K,EAAc/nM,UAAU6oN,kBAAoB,SAAUllO,EAASvH,GAC3D,IAAIu0B,EAAQhQ,KACZA,KAAK2nI,YAAYkN,eAAiB7xJ,EAClCktB,YAAW,YACFvC,EAAAA,EAAAA,IAAkBqC,EAAM23H,YAAYkN,kBACjC7kI,EAAMK,OAAOykG,sBAAwB9kG,EAAMK,OAAO0kG,wBAClD/kG,EAAMw3M,oBAAoB/rO,GAG1Bu0B,EAAM23H,YAAYkN,eAAepjI,QAG7C,GAAG,EACP,EACA21L,EAAc/nM,UAAUoS,MAAQ,SAAUh2B,GACtCukB,KAAKqQ,OAAO0W,OAAOhlC,EAAAA,IAAwBtG,GAC3CukB,KAAKqmG,cACLrmG,KAAKmoN,SAASnoN,KAAKgmJ,aAAaoiE,eAAgB3sO,EACpD,EAEA2rN,EAAc/nM,UAAUgnG,YAAc,SAAU5qH,GACvCukB,KAAK2nI,YAAY3kJ,UAGlBgd,KAAKqQ,OAAOyrF,SAAW97F,KAAK2nI,YAAY3kJ,QAAQ4zC,UAAUM,SAAS,eAAiBl3B,KAAK2nI,YAAY3kJ,QAAQi2D,gBAC7Gj5C,KAAK2nI,YAAY3kJ,QAAUgd,KAAKqQ,OAAOigK,iBAAiBtwK,KAAKqhN,YAAYpqD,SAAUj3J,KAAKqhN,YAAYl5C,aAExGhxI,EAAAA,EAAAA,IAAY,CAACn3B,KAAK2nI,YAAY3kJ,QAASgd,KAAK2nI,YAAYkN,gBAAiB,CAAC,YAAa,YACvF70I,KAAK2nI,YAAY3kJ,QAAQowE,UAAY,EACzC,EAIAg0I,EAAc/nM,UAAU6qM,WAAa,WACjC,IAAI71K,EAAOr0B,KAAKgmJ,aAAaoiE,eACzB/zL,EAAKrxC,WACLyzC,EAAAA,EAAAA,IAAS,CAACpC,EAAKrxC,SAAU,CAAC,eAC1ByzC,EAAAA,EAAAA,IAAS,CAACpC,EAAKwgH,gBAAiB,CAAC,YAEzC,EAIAuyD,EAAc/nM,UAAUgpN,YAAc,WAClCroN,KAAK4hN,WAAU,EAAO5hN,KAAKqQ,OAAOyxH,gBAClC9hI,KAAKsoN,YACT,EAIAlhB,EAAc/nM,UAAU4qM,aAAe,WACnCjqM,KAAK4hN,WAAU,EAAM5hN,KAAKqQ,OAAOyxH,gBACjC9hI,KAAKsoN,YACT,EACAlhB,EAAc/nM,UAAUipN,WAAa,WACjC,IAAInlO,EAAU6c,KAAKgmJ,aAAa87D,OAAOphO,IAAI,GAAI,EAAG,CAAC,EAAG,GAAI,KAAMsf,KAAKgmJ,aAAag8D,aAClFhiN,KAAKgmJ,aAAa87D,OAAOppL,OAAOv1C,EAAQ,GAAIA,EAAQ,IACpD6c,KAAKyR,OACT,EACA21L,EAAc/nM,UAAU8oN,SAAW,SAAU9zL,EAAM54C,GAM/C,GALAukB,KAAK2nI,YAActzG,EACnBr0B,KAAK2nI,YAAY68E,QAAUnwL,EAAKmwL,YAAa72M,EAAAA,EAAAA,IAAkBlyB,IAAMukB,KAAKyhN,iBACtEzhN,KAAKqgJ,mBACLrgJ,KAAK2nI,YAAY68E,SAAU,GAE1BnwL,EAAKrxC,QAAV,CAGA,IAAIilE,EAAY5zB,EAAKwgH,eAAej+G,UAAUM,SAAS,WACvD,IAAI+wB,EAAJ,CAGIjoD,KAAK2nI,YAAY68E,UACjB/tL,EAAAA,EAAAA,IAAS,CAACpC,EAAKrxC,SAAU,CAAC,eAE9ByzC,EAAAA,EAAAA,IAAS,CAACpC,EAAKwgH,gBAAiB,CAAC,YACjCxgH,EAAKrxC,QAAQowE,SAAW,EACnBnL,GACDjoD,KAAKkoN,kBAAkB7zL,EAAKwgH,eAAgBp5J,GAEhDukB,KAAKqQ,OAAO0W,OAAOhlC,EAAAA,IAAmB,CAClCiB,QAASqxC,EAAKwgH,eACdxkI,OAAQgkB,EAAKrxC,QACb8+J,QAAS9hJ,KAAKgmJ,aAAa87D,OAAO3+N,QAClCsjK,QAAQ94I,EAAAA,EAAAA,IAAkBlyB,GAC1BmnO,SAASj1M,EAAAA,EAAAA,IAAkBlyB,GAC3BirK,QAASjrK,EACTkhM,OAAQ38K,KAAKghN,KAAKA,KAClBhgJ,UAAWhhE,KAAKgmJ,aAAauiE,QAAQ9sO,GACrC+oO,UAAU72M,EAAAA,EAAAA,IAAkBlyB,GAC5BgpO,SAAUzkN,KAAKghN,OAEnB,IAAIh7N,EAAKga,KAAKgmJ,aAAa87D,OAAO3+N,QAAS8zK,EAAWjxK,EAAG,GAAImiL,EAAYniL,EAAG,GAC5Ega,KAAKqhN,YAAc,CAAEpqD,SAAUA,EAAUkR,UAAWA,GACpDnoK,KAAKwoN,iBAAmBxoN,KAAKqQ,OAAO2/J,iBAAiB7H,GAAWj8J,IAChElM,KAAKmhN,cAAe,CAxBpB,CAJA,CA6BJ,EACA/Z,EAAc/nM,UAAUkiN,cAAgB,SAAUh7J,GAC9C,IAAIv2C,EAAQhQ,KACZ,OAAO,SAAUvkB,GACT8qE,GAAY9qE,EAAEwS,MAAQxS,EAAEwS,KAAK0hJ,WAAc3/H,EAAM83M,SACjD93M,EAAM83M,SAAW,IAAIW,EAAkBz4M,EAAMK,QAExCk2C,IAAYv2C,EAAM+3M,WAActsO,EAAEwS,MAAQxS,EAAEwS,KAAKw3J,yBACtDz1I,EAAM+3M,UAAY,IAAIW,EAAuB14M,EAAMK,QAE9Ck2C,IAAYv2C,EAAMu2C,UACvBv2C,EAAMu2C,QAAU,IAAIoiK,EAAa34M,EAAMK,UAEtCk2C,GAAY9qE,EAAEwS,MAAQxS,EAAEwS,KAAK0hJ,WAAc3/H,EAAMg4M,QAClDh4M,EAAMg4M,QAAU,IAAIY,EAAiB54M,EAAMK,SAErCk2C,GAAY9qE,EAAEwS,MAAQxS,EAAEwS,KAAKw3J,2BAA8Bz1I,EAAMi4M,SACvEj4M,EAAMi4M,SAAW,IAAIY,EAAsB74M,EAAMK,QAE3Ck2C,GAAYv2C,EAAMygB,SACxBzgB,EAAMygB,OAAS,IAAIq4L,EAAY94M,EAAMK,SAEzC,IAAI04M,EAASxiK,EAAW9qE,EAAEwS,MAAQxS,EAAEwS,KAAK0hJ,SAAY3/H,EAAM83M,SAAYrsO,EAAEwS,MAAQxS,EAAEwS,KAAKw3J,yBAClFz1I,EAAM+3M,UAAY/3M,EAAMu2C,QAAW9qE,EAAEwS,MAAQxS,EAAEwS,KAAK0hJ,SAAY3/H,EAAMg4M,QAAWvsO,EAAEwS,MAAQxS,EAAEwS,KAAKw3J,yBAClGz1I,EAAMi4M,SAAWj4M,EAAMygB,OACzBt2C,EAAOosE,EAAU9qE,EAAEtB,KAAKkjB,MAAM2S,EAAMK,OAAOm3I,YAAc/rK,EAAEtB,KAC3DkqN,EAAY99I,EAAU9qE,EAAEtB,KAAKkjB,MAAM,EAAG2S,EAAMK,OAAOm3I,YAAc/rK,EAAEtB,KACnE61B,EAAMK,OAAOiwI,0BAA4B/5F,IACzCpsE,EAAOA,EAAKgE,QAAO,SAAUyuC,GAAK,OAAqB,IAAdA,EAAEx+B,OAAmB,KAElE,IAoCY46N,EApCR9oC,IAAiBvyK,EAAAA,EAAAA,IAAkBqC,EAAMK,OAAOy3I,aAChDg6D,EAASiH,EAAOjH,OAAOC,SAAS1d,EAAW0kB,EAAOpwL,SAAUunJ,GAChE,GAAe,aAAXzkM,EAAErD,MAAuB43B,EAAMK,OAAOyxH,eAAgB,CACtD,IACImnF,EADQj5M,EAAMK,OAAO6hK,uBAAuB70K,MAAM2S,EAAMK,OAAOm3I,YACxC1nK,KAAI,SAAUo8E,GAAO,OAAOA,EAAIhtD,OAAS,IAChEg6M,EAAgB/uO,EAAK2F,KAAI,SAAUo8E,GAAO,OAAOA,EAAIhtD,OAAS,IAGlE,GAFAc,EAAM83M,SAAShG,OAAOC,SAASmH,EAAel5M,EAAM83M,SAASnvL,SAAUunJ,GACvElwK,EAAMu2C,QAAQu7J,OAAOC,SAASkH,EAAgBj5M,EAAMu2C,QAAQ5tB,SAAUunJ,GAClElwK,EAAMK,OAAOkwH,kBAAoB1iB,EAAAA,GAAoB,CACrD,IACIsrG,EADSn5M,EAAMK,OAAOq1I,2BAA2BroJ,MAAM2S,EAAMK,OAAOm3I,YACjD1nK,KAAI,SAAUo8E,GAAO,OAAOA,EAAIhtD,OAAS,IAChEc,EAAM+3M,UAAUjG,OAAOC,SAASoH,EAAWn5M,EAAM+3M,UAAUpvL,SAAUunJ,EACzE,CACJ,MAEI6oC,EAAOjH,OAAOC,SAAS5nO,EAAM4uO,EAAOpwL,SAAUunJ,GAmBlD,GAjBMlwK,EAAMK,OAAOyxH,iBAAoBrmJ,EAAEwS,OAAgC,YAAvBxS,EAAEwS,KAAK0tF,aAC3B,cAAvBlgG,EAAEwS,KAAK0tF,aAAsD,WAAvBlgG,EAAEwS,KAAK0tF,cAClC,aAAXlgG,EAAErD,MAAkC,gBAAXqD,EAAErD,OAC9B2wO,EAAO3oE,aAAaikD,EAAW,CAC3Byd,OAAQA,EAAQsH,gBAAkB3tO,EAAEwS,MAAQxS,EAAEwS,KAAK0hJ,SAAY3/H,EAAMg4M,QAC9DvsO,EAAEwS,MAAQxS,EAAEwS,KAAKw3J,yBAA4Bz1I,EAAMi4M,SAAWj4M,EAAMygB,UAG9EmC,EAAAA,GAAQY,UAAY/3C,GAAKA,EAAEwS,OACvB+hB,EAAMmxM,cAAuC,WAAvB1lO,EAAEwS,KAAK0tF,aAA6B3rE,EAAMK,OAAO+kG,YAAYC,SAAS+tG,uBAC7FpzM,EAAMkxM,WAAY,EAClBlxM,EAAMK,OAAOrtB,QAAQyuB,SAEE,aAAvBh2B,EAAEwS,KAAK0tF,cACP3rE,EAAMkxM,WAAY,IAGtBzlO,GAAKA,EAAEwS,MAA+B,kBAAvBxS,EAAEwS,KAAK0tF,YACtB,GAAI3rE,EAAM23H,YAAYz7H,KAMlB,GAJWzwB,EAAEtB,KAAKwtB,MAAK,SAAUu0D,EAAK/2D,GAElC,OADA6jN,EAAU7jN,EACH+2D,EAAIhwD,MAAQ8D,EAAM23H,YAAYz7H,GACzC,MAEI8D,EAAMu2C,QAAQu7J,OAAO3+N,QAAQ,GAAK6lO,EAClCh5M,EAAMu2C,QAAQu7J,OAAO3+N,QAAQ,GAAK6sB,EAAMK,OAAOu+I,oBAAoB5+I,EAAMw4M,mBAAqB,EAC1Fa,EAAer5M,EAAMg2I,aAAaoiE,eAAevzE,gBACnC,CACd,IAAIy0E,EAAeD,EAAanmL,wBAC5BqmL,EAAev5M,EAAMK,OAAOrtB,QAAQkgD,wBACpComL,EAAa1lL,KAAO,GAAK0lL,EAAa5lL,MAAQ,GAC9C4lL,EAAa3lL,OAAS9hC,KAAK6e,IAAI6oM,EAAa5lL,MAAOrjD,OAAO+zD,YACtDzxC,SAAS6gC,gBAAgBgV,cAC7B6wK,EAAazlL,QAAUhiC,KAAK6e,IAAI6oM,EAAa1lL,OAAQvjD,OAAO8zD,aACxDxxC,SAAS6gC,gBAAgBoT,gBAC7B7mC,EAAMyxM,iBAAkB,EACxBzxM,EAAMyB,QAEd,OAGH,GAAIh2B,EAAEwS,KAAKo7N,cAAgB5tO,EAAEwS,KAAKo7N,aAAazyL,UAAUM,SAAS,gBAAiB,CACpF,IAAImyL,KAAer5M,EAAMK,OAAOrtB,QAAQuvB,cAAc,IAAM92B,EAAEwS,KAAKo7N,aAAazkO,MAE5EykO,EAAa53M,OAErB,CAEAh2B,GAAKA,EAAEwS,MAA+B,mBAAvBxS,EAAEwS,KAAK0tF,cACtB3rE,EAAMqwI,kBAAmB,EAEjC,CACJ,EACA+mD,EAAc/nM,UAAUwE,iBAAmB,WACvC,IAAImM,EAAQhQ,KACRA,KAAKqQ,OAAOuqB,cAGhB5F,EAAAA,GAAaG,IAAIn1B,KAAKqQ,OAAOrtB,QAAS,YAAagd,KAAK2hN,WAAY3hN,MACpEg1B,EAAAA,GAAaG,IAAIn1B,KAAKqQ,OAAOrtB,QAAS,aAAcgd,KAAK2hN,WAAY3hN,MACrEg1B,EAAAA,GAAaG,IAAIn1B,KAAKqQ,OAAOrtB,QAAS,QAASgd,KAAKgoG,QAAShoG,MAC7DA,KAAKqQ,OAAOrtB,QAAQ6gB,iBAAiB,QAAS7D,KAAKwpN,eAAiB,SAAU/tO,GAAK,OAAOu0B,EAAMiyM,aAAaxmO,EAAI,GAAG,GACpHu5C,EAAAA,GAAaG,IAAIn1B,KAAKqQ,OAAOrtB,QAAS,WAAYgd,KAAK/d,OAAQ+d,MAC/DA,KAAKwuI,YAAc,CAAC,CAAEzsJ,MAAOA,EAAAA,IAAkByqB,QAASxM,KAAK+iN,YACzD,CAAEhhO,MAAOA,EAAAA,IAAayqB,QAASxM,KAAK5f,SACpC,CAAE2B,MAAOA,EAAAA,IAAoByqB,QAASxM,KAAKshN,WAC3C,CAAEv/N,MAAOA,EAAAA,IAAsByqB,QAASxM,KAAKshN,WAC7C,CAAEv/N,MAAOA,EAAAA,IAAgCyqB,QAASxM,KAAKshN,WACvD,CAAEv/N,MAAOA,EAAAA,IAAuByqB,QAASxM,KAAKuhN,iBAC9C,CAAEx/N,MAAOA,EAAAA,IAAiByqB,QAASxM,KAAKu8I,cACxC,CAAEx6J,MAAOA,EAAAA,IAAoByqB,QAASxM,KAAKu8I,cAC3C,CAAEx6J,MAAO,aAAcyqB,QAASxM,KAAK6nI,gBACrC,CAAE9lJ,MAAO,YAAayqB,QAASxM,KAAK6nI,gBACpC,CAAE9lJ,MAAO,mBAAoByqB,QAASxM,KAAKu8I,cAC3C,CAAEx6J,MAAO,qBAAsByqB,QAASxM,KAAKypN,aAC7C,CAAE1nO,MAAO,oBAAqByqB,QAASxM,KAAK0pN,wBAC5C,CAAE3nO,MAAO,sBAAuByqB,QAASxM,KAAK0pN,wBAC9C,CAAE3nO,MAAOA,EAAAA,IAAgByqB,QAASxM,KAAKshN,WACvC,CAAEv/N,MAAOA,EAAAA,IAAmByqB,QAASxM,KAAKshN,WAC1C,CAAEv/N,MAAOA,EAAAA,IAAmByqB,QAASxM,KAAKshN,WAC1C,CAAEv/N,MAAOA,EAAAA,IAAuByqB,QAASxM,KAAKshN,WAC9C,CAAEv/N,MAAOA,EAAAA,IAAeyqB,QAASxM,KAAKshN,WACtC,CAAEv/N,MAAOA,EAAAA,IAAmByqB,QAASxM,KAAK2pN,qBAC9C/6E,EAAAA,EAAAA,IAAuB5uI,KAAKqQ,OAAQrQ,KAAKwuI,aAAa,EAAMxuI,MAChE,EACAonM,EAAc/nM,UAAUoqN,YAAc,WACM,cAApCzpN,KAAKqQ,OAAOlnB,eAAe7O,MAC3B0lB,KAAKu8I,cAEb,EACA6qD,EAAc/nM,UAAUyE,oBAAsB,WACtC9D,KAAKqQ,OAAOuqB,cAGhB5F,EAAAA,GAAaW,OAAO31B,KAAKqQ,OAAOrtB,QAAS,YAAagd,KAAK2hN,YAC3D3sL,EAAAA,GAAaW,OAAO31B,KAAKqQ,OAAOrtB,QAAS,aAAcgd,KAAK2hN,YAC5D3sL,EAAAA,GAAaW,OAAO31B,KAAKqQ,OAAOrtB,QAAS,QAASgd,KAAKgoG,SACvDhzE,EAAAA,GAAaW,OAAO31B,KAAKqQ,OAAOrtB,QAAS,WAAYgd,KAAK/d,QAC1D+d,KAAKqQ,OAAOrtB,QAAQ8gB,oBAAoB,QAAS9D,KAAKwpN,gBAAgB,IACtE56E,EAAAA,EAAAA,IAAuB5uI,KAAKqQ,OAAQrQ,KAAKwuI,aAAa,GAC1D,EACA44D,EAAc/nM,UAAUqoB,QAAU,WAC9B1nB,KAAK8D,qBACT,EACAsjM,EAAc/nM,UAAUk9I,aAAe,WACnC,IAAIslC,EAAc7hL,KAAKqQ,OAAOwxK,YAC9B,GAAI7hL,KAAKqQ,OAAOmlG,eAAiBqsE,IAAgBA,EAAY+nC,gBAAkB/nC,EAAYgoC,gBAGvF,OAFAhoC,EAAY+nC,gBAAiB,OAC7B/nC,EAAYgoC,gBAAiB,GAGjC7pN,KAAKohN,sBAAuB,EAC5BphN,KAAKmoN,SAASnoN,KAAKgmJ,aAAaoiE,eACpC,EACAhhB,EAAc/nM,UAAUqqN,uBAAyB,SAAUjuO,GACvD,IAAKukB,KAAKqQ,OAAO0kG,wBAAyB,CACtC,IAAI+sG,EAAS9hN,KAAKgmJ,aAAa87D,OAC3B3+N,EAAU2+N,EAAO3+N,QACrB,OAAQ1H,EAAEkgG,aACN,IAAK,WACL,IAAK,aACDx4F,EAAQ,IAAKA,EAAQlL,QAChB+nB,KAAKqQ,OAAOolG,cAAc8xF,oBAAsB55L,EAAAA,EAAAA,IAAkBm0M,EAAOA,OAAO3+N,EAAQ,KAChC,aAAlB1H,EAAEkgG,YAA6Bx4F,EAAQ,GAAK,EAAIA,EAAQ,GAAK,EAApG2+N,EAAOA,OAAO3+N,EAAQ,IAAImT,QAAQ,GAG9C0J,KAAKgmJ,aAAa87D,OAAO3+N,QAAUA,EACnC,IAAI0+L,EAAc7hL,KAAKqQ,OAAOwxK,YAC9B,GAAI7hL,KAAKqQ,OAAOmlG,eAAiBqsE,GAAeA,EAAYioC,iBAAkB,CAC1E,IAAIvH,EAAwB1gC,EAAY2gC,2BAaxC,OAZID,EAAsBtqO,OAClBsqO,EAAsB,GAAGtpK,cAAc7X,aAAa,oBAAsB3lD,EAAEo6H,WAC5E0sG,EAAsB,GAAG9wM,QAGzB8wM,EAAsB,GAAG9wM,QAI7BowK,EAAY7+L,QAAQyuB,aAExBowK,EAAYioC,kBAAmB,EAEnC,CACA9pN,KAAKmoN,SAASnoN,KAAKgmJ,aAAaoiE,eACpC,CACJ,EACAhhB,EAAc/nM,UAAUyjN,aAAe,WACnC9iN,KAAKgmJ,aAAa87D,OAAO3+N,QAAU6c,KAAKgmJ,aAAa87D,OAAOphO,IAAI,GAAI,EAAG,CAAC,EAAG,GAAI,YAAasf,KAAKgmJ,aAAag8D,aAC9GhiN,KAAK6nI,gBACT,EACAu/D,EAAc/nM,UAAUwoI,eAAiB,WAChC7nI,KAAK2nI,YAAY3kJ,SAAYgd,KAAK2nI,YAAYkN,iBAGnD19G,EAAAA,EAAAA,IAAY,CAACn3B,KAAK2nI,YAAY3kJ,QAASgd,KAAK2nI,YAAYkN,gBAAiB,CAAC,UAAW,aACzF,EACAuyD,EAAc/nM,UAAU+uK,eAAiB,WACrC,IAAI6yC,EAASjhN,KAAKihN,OAElB,OADAjhN,KAAKihN,QAAS,EACPA,IAAWpiO,OAAOC,KAAKkhB,KAAKqhN,aAAappO,OAAS,CAAEg/K,SAAU,KAAMkR,UAAW,MAASnoK,KAAKqhN,WACxG,EACAja,EAAc/nM,UAAU0qN,eAAiB,WACrC/pN,KAAKihN,QAAS,CAClB,EACA7Z,EAAc/nM,UAAU0lN,eAAiB,SAAU9hN,EAAQ1W,GACvD,IAAIyjB,EAAQhQ,KACZ,GAAKA,KAAKqQ,OAAOyxH,gBAA6C,IAA3B9hI,KAAKqQ,OAAOm3I,WAA/C,CAIA,IAAInzH,EACAmtL,EAAU,CACV,KAAQ,WAAc,MAAQ,CAAEmD,UAAWtwL,EAAKuoJ,UAAWgoC,UAAU,EAAS,EAC9E,IAAO,WAAc,MAAQ,CAAED,UAAWtwL,EAAKuoJ,UAAWgoC,UAAU,EAAU,EAC9E,SAAY,WAAc,MAAQ,CAAED,UAAU,EAAMC,SAAU50M,EAAMK,OAAOyxH,eAAmB,EAC9F,QAAW,WAAc,MAAQ,CAAE6iF,UAAU,EAAOC,UAAU,EAAU,GAE5E,GAAM3hN,KAAUu+M,EAAhB,CAGAntL,EAAO9nC,EAAOg8N,UACd,IAAIvH,EAAOQ,EAAQ,GAAKv+M,KACxBjD,KAAK4hN,WAAWZ,EAAK2D,SAAU3D,EAAK4D,UACpC5kN,KAAKgmJ,aAAa87D,OAAO3+N,QAAUoJ,EAAOu1N,OAAO3+N,OAJjD,CAXA,CAgBJ,EACAikN,EAAc/nM,UAAUsqN,kBAAoB,SAAUluO,GAClD,GAAMA,EAAEgrK,OAAShrK,EAAEulF,UAAU47G,WAAkC,UAArBnhM,EAAEirK,QAAQzjJ,SAC5CxnB,EAAE40B,OAAOumB,UAAUM,SAAS,iBAC5Bz7C,EAAE40B,OAAOumB,UAAUM,SAAS,kBAFpC,CAKAl3B,KAAK6nI,iBACL,IAAIh+B,EAAW7pG,KAAKgmJ,aAAagkE,aAAahqN,KAAKovI,qBACnDpvI,KAAKkoN,kBAAkBr+G,GACvB7pG,KAAK2nI,YAAYy6E,YAAa,CAJ9B,CAKJ,EACOhb,CACX,CAzmCmC,GAgnC/B6iB,EAAwB,WACxB,SAASA,IACLjqN,KAAK8hN,OAAS,GACd9hN,KAAK7c,QAAU,EACnB,CA6FA,OA5FA8mO,EAAO5qN,UAAUQ,IAAM,SAAUo3J,EAAUimB,EAAagtC,GACpDjzD,EAAWp1J,KAAK8e,IAAI,EAAG9e,KAAK6e,IAAIu2I,EAAUj3J,KAAK7lB,OAC/C+iM,EAAcr7K,KAAK8e,IAAI,EAAG9e,KAAK6e,IAAIw8J,EAAal9K,KAAKo0G,UACrDp0G,KAAK8hN,OAAO5iO,SAAS+3K,EAAS77K,WAAY,KAAO4kB,KAAK8hN,OAAO5iO,SAAS+3K,EAAS77K,WAAY,MAAQ,GACnG4kB,KAAK8hN,OAAO5iO,SAAS+3K,EAAS77K,WAAY,KAAK8D,SAASg+L,EAAY9hM,WAAY,KAAO8uO,EAAQ,EAAI,CACvG,EACAD,EAAO5qN,UAAU3e,IAAM,SAAUu2K,EAAUimB,EAAa/pJ,EAAWlwB,EAAQ++M,GACvE,IAAI9jI,EAAMg/F,EACV,GAAIjmB,EAAW9jI,EAAU,GAAK,EAC1B,MAAO,CAAC8jI,EAAUimB,GAEtBjmB,EAAWp1J,KAAK8e,IAAI,EAAG9e,KAAK6e,IAAIu2I,EAAW9jI,EAAU,GAAInzB,KAAK7lB,OAC9D,IAAIgwO,GAAa,EACjB,IAAIx8M,EAAAA,EAAAA,IAAkB3N,KAAK8hN,OAAO5iO,SAAS+3K,EAAS77K,WAAY,MAC5D,OAAO,KAGX,GADA8hM,EAAcr7K,KAAK8e,IAAI,EAAG9e,KAAK6e,IAAIw8J,EAAc/pJ,EAAU,GAAInzB,KAAK8hN,OAAO5iO,SAAS+3K,EAAS77K,WAAY,KAAKnD,OAAS,IACnHimG,EAAM/qD,EAAU,GAAKnzB,KAAK8hN,OAAO5iO,SAAS+3K,EAAS77K,WAAY,KAAKnD,OAAS,GAC1E+pO,EAAU/qD,EAAUimB,EAAaj6K,GACpC,MAAO,CAACg0J,EAAU/4E,GAEtB,IAAIp3E,EAAQ9G,KAAK8G,MAAM9G,KAAK8hN,OAAO5iO,SAAS+3K,EAAS77K,WAAY,KAAM8hM,EAAa/pJ,GAAW,EAAMlwB,GACrGi6K,EAAwB,OAAVp2K,EAAiBo3E,EAAMp3E,EACrC,IAAInJ,GAAMyP,EAAAA,EAAAA,IAAS6pJ,EAAW,IAAMimB,EAAal9K,KAAK8hN,QAItD,GAHI7qD,IAAaj3J,KAAK7lB,MAAoB,cAAX8oB,GAAqC,UAAXA,IACrDkwB,EAAU,IAAM,GAEN,OAAVrsB,EAAgB,CAChB,IAAK,IAAI3B,EAAI,EAAGA,EAAInF,KAAK7lB,KAAMgrB,IAC3B,GAAInF,KAAK8hN,OAAO5iO,SAASimB,EAAE/pB,WAAY,KAAKusB,MAAK,SAAUy2L,GAAK,OAAa,IAANA,CAAS,IAAI,CAChF+rB,GAAa,EACb,KACJ,CAEJ,GAAIA,EAEA,MAAO,CADPlzD,EAAWj3J,KAAK7c,QAAQlL,OAAS+nB,KAAK7c,QAAQ,GAAK,EACjC+5L,EAE1B,CACA,OAAOl9K,KAAKoqN,QAAQzsN,KAASqkN,EAAU/qD,EAAUimB,EAAaj6K,GAC1DjD,KAAKtf,IAAIu2K,EAAU/4E,EAAK/qD,EAAWlwB,EAAQ++M,GAAa,CAAC/qD,EAAUimB,EAC3E,EACA+sC,EAAO5qN,UAAUyH,MAAQ,SAAUujN,EAAQvjO,EAAOqsC,EAAW+4G,EAAQjpI,GACjE,OAAMnc,EAAQ,GAAKA,IAAUujO,EAAOpyO,SAAW+nB,KAAKoqN,QAAQC,EAAOnrO,SAAS4H,EAAM1L,WAAY,OAC3E,YAAX6nB,GAAmC,cAAXA,IAA6BonN,EAAO1iN,MAAK,SAAUy2L,GAAK,OAAa,IAANA,CAAS,IAC7F,KAEHp+L,KAAKoqN,QAAQC,EAAOnrO,SAAS4H,EAAM1L,WAAY,MACnD4kB,KAAK8G,MAAMujN,GAA+E,IAAtE,CAAC,UAAW,YAAa,UAAW,aAAa/zN,QAAQ2M,GAAkBipI,EAAS,IAAMplJ,EAAQA,EAAQqsC,EAAU,GAAIA,GAAW,EAAOlwB,GADnGnc,CAEnE,EACAmjO,EAAO5qN,UAAUq5B,OAAS,SAAUu+H,EAAUimB,GAC1CjmB,EAAWp1J,KAAK8e,IAAI,EAAG9e,KAAK6e,IAAIu2I,EAAUj3J,KAAK7lB,OAC/C+iM,EAAcr7K,KAAK8e,IAAI,EAAG9e,KAAK6e,IAAIw8J,EAAal9K,KAAK8hN,OAAO5iO,SAAS+3K,EAAS77K,WAAY,KAAKnD,OAAS,IACxG+nB,KAAK7c,QAAU,CAAC8zK,EAAUimB,EAC9B,EACA+sC,EAAO5qN,UAAU0iN,SAAW,SAAU5nO,EAAMw+C,EAAUunJ,GAClDlgL,KAAK7lB,KAAOA,EAAKlC,OAAS,EAC1B+nB,KAAK8hN,OAAS,GACd,IAAK,IAAI38M,EAAI,EAAGA,EAAIhrB,EAAKlC,OAAQktB,IAAK,CAClC,IAAIg9H,EAAQhoJ,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAK+mJ,MAAMhkJ,QAAO,SAAU83B,GAAK,OAAuB,IAAhBA,EAAE6lM,SAAoB,IACtG97M,KAAKo0G,QAAUvyG,KAAK8e,IAAIwhH,EAAMlqJ,OAAS,EAAkB,EAAf+nB,KAAKo0G,SAE/C,IADA,IAAIk2G,EAAkB,EACb9zM,EAAI,EAAGA,EAAI2rH,EAAMlqJ,OAAQu+B,IAC1B2rH,EAAMjjJ,SAASs3B,EAAEp7B,WAAY,KAAKgkF,QAAU+iE,EAAMjjJ,SAASs3B,EAAEp7B,WAAY,KAAKgkF,OAAOg1C,QACrFk2G,EAAkBtqN,KAAKuqN,aAAapoF,EAAMjjJ,SAASs3B,EAAEp7B,WAAY,KAAKgkF,OAAOg1C,QAASk2G,GAGtFA,IAEJtqN,KAAKH,IAAIsF,EAAGqR,GAAgD,IAA7Cr8B,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAKgT,SACpCuqC,EAASx+C,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAM+mJ,EAAMjjJ,SAASs3B,EAAEp7B,WAAY,KAAM8kM,IAE9FlgL,KAAKo0G,QAAUvyG,KAAK8e,IAAI2pM,EAAkB,EAAkB,EAAftqN,KAAKo0G,QACtD,CACA,OAAOp0G,KAAK8hN,MAChB,EACAmI,EAAO5qN,UAAUkrN,aAAe,SAAUC,EAAYC,GAGlD,IAFA,IAAIr2G,EAAUo2G,EACVF,EAAkBG,EACbtlN,EAAI,EAAGA,EAAIivG,EAAQn8H,OAAQktB,IAC5BivG,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKg5H,QACpCk2G,EAAkBtqN,KAAKuqN,aAAan2G,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKg5H,QAASk2G,GAGjFA,IAGR,OAAOA,CACX,EACAL,EAAO5qN,UAAU+qN,QAAU,SAAU7sO,GACjC,OAAiB,IAAVA,QAAyBrC,IAAVqC,CAC1B,EACO0sO,CACX,CAlG4B,GAuGxBtB,EAA8B,WAC9B,SAASA,EAAat4M,GAClB,IAAIL,EAAQhQ,KACZA,KAAK8hN,OAAS,IAAImI,EAClBjqN,KAAKglN,aAAc,EACnBhlN,KAAKqQ,OAASA,EACdrQ,KAAK0qN,WAAa,CACd,WAAc,CAAC,EAAG,GAClB,IAAO,CAAC,EAAG,GACX,UAAa,CAAC,GAAI,GAClB,SAAY,CAAC,GAAI,GACjB,QAAW,EAAE,EAAG,GAChB,UAAa,CAAC,EAAG,GACjB,QAAW,EAAE,EAAG,GAChB,UAAa,CAAC,EAAG,GACjB,WAAc,CAAC,EAAG,GAClB,UAAa,CAAC,GAAI,GAClB,MAAS,CAAC,EAAG,GACb,WAAc,EAAE,EAAG,IAEvB1qN,KAAK2qN,aAAe,SAAU1nN,GAO1B,MANU,CACN,KAAQ,CAAC+M,EAAM8xM,OAAO3+N,QAAQ,IAAK,EAAG,EAAG,GACzC,IAAO,CAAC6sB,EAAM8xM,OAAO3+N,QAAQ,GAAI6sB,EAAM8xM,OAAO1tG,QAAU,EAAG,GAAI,GAC/D,SAAY,CAAC,GAAI,EAAG,EAAG,GACvB,QAAW,CAACpkG,EAAM8xM,OAAO3nO,KAAM61B,EAAM8xM,OAAO1tG,QAAU,EAAG,GAAI,IAEtD,GAAKnxG,IAAW,IAC/B,CACJ,CAmUA,OAlUA0lN,EAAatpN,UAAUgoJ,SAAW,WAC9B,OAAQrnJ,KAAKqQ,OAAOyxH,eAChB9hI,KAAKqQ,OAAO21I,aAAazzI,cAAc,8BACvCvS,KAAKqQ,OAAOm7H,iBACpB,EACAm9E,EAAatpN,UAAU0jN,WAAa,SAAUtnO,GAC1C,IAAI03C,EAAYnzB,KAAK0qN,WAAWjvO,EAAEwnB,QAC9B9f,EAAU6c,KAAK4qN,qBAAqBnvO,EAAEwnB,OAAQkwB,EAAW13C,EAAEwnB,UAAUjD,KAAK0qN,WAAYjvO,GAC1F,GAAK0H,EAAL,CAGA,IAAM,CAAC,MAAO,YAAYmT,QAAQ7a,EAAEwnB,SAAW,GAAKjD,KAAK8hN,OAAO3+N,SAAW,IAAI/H,aAAe+H,EAAQ/H,YAC9F4kB,KAAKqQ,OAAOwkG,cAAgB70G,KAAKqQ,OAAO+kG,YAAYC,SAAS+tG,sBAC1DpjN,KAAK8hN,OAAO3+N,QAAQ,KAAO6c,KAAK8hN,OAAO3nO,OAA4C,UAAlC6lB,KAAKqQ,OAAO6iI,aAAa9pJ,MAC1E4W,KAAKqQ,OAAO6iI,aAAaG,aAA6B,KAAd53J,EAAEu+D,SAAkC,KAAdv+D,EAAEu+D,SAAmB,CAC1F,GAAI72D,EAAQ/H,aAAe,CAAC4kB,KAAK8hN,OAAO3nO,KAAM6lB,KAAK8hN,OAAO1tG,SAASh5H,YAC/D+H,EAAQ/H,aAAe,CAAC,EAAG,GAAGA,YAAe4kB,KAAK8hN,OAAO3+N,QAAQ,KAAO6c,KAAK8hN,OAAO3nO,MACpF6lB,KAAK8hN,OAAO3+N,QAAQ/H,aAAe+H,EAAQ/H,YAAgB4kB,KAAKqQ,OAAOmlG,eACvEx1G,KAAKqQ,OAAO80I,uBAAuBC,aAAejiK,EAAQ/H,aAAe,CAAC,EAAG,GAAGA,WAChF,OAAO,EAGP+H,EAAU6c,KAAK6qN,YAAY1nO,EAAQ,GAAIA,EAAQ,GAAI1H,EAAEwnB,OAE7D,CACAjD,KAAK8hN,OAAOppL,OAAOv1C,EAAQ,GAAIA,EAAQ,GAfvC,CAgBJ,EACAwlO,EAAatpN,UAAUwrN,YAAc,SAAU5zD,EAAUkR,EAAWllK,GAChE,IAAI0wG,EAAO3zG,KAAKqQ,OACZw6M,EAAcl3G,EAAKu/B,aAAa2qC,mBAAqBlqE,EAAKw7B,QAAUx7B,EAAKm3G,sBACzEC,EAAep3G,EAAKq/C,sBAAsBr/C,EAAKyuC,oBAAoB,GAAGxgK,OACtE44H,EAAOx6G,KAAKqnJ,WAAWltK,KAAK+E,SAAS+3K,EAAS77K,WAAY,KAAK+mJ,MAAMjjJ,SAASipL,EAAU/sL,WAAY,KACzF,QAAX6nB,GAAoB4nN,IACpB5zD,IAGAkR,EAAY4iD,GAFC/qN,KAAKqnJ,WAAWltK,KAAK+E,SAAS+3K,EAAS77K,WAAY,KAAKopD,uBAAuB,gBAAgBvsD,OACxG+nB,KAAKqnJ,WAAWltK,KAAK+E,SAAS+3K,EAAS77K,WAAY,KAAKopD,uBAAuB,uBAAuBvsD,SAO9G,MAJe,aAAXgrB,GAAyB4nN,IACzB5zD,IACAkR,EAAYx0D,EAAKq/C,sBAAsBr/C,EAAKyuC,oBAAoBzuC,EAAKyuC,oBAAoBnqK,OAAS,GAAG2J,QAEjG44H,EAAK5jF,UAAUM,SAAS2mF,EAAAA,KAAsBrD,EAAK5jF,UAAUM,SAAS,iBACzEsjF,EAAK5jF,UAAUM,SAAS,mBAAsBsjF,EAAK5jF,UAAUM,SAAS,mBACvB,CAAC+/H,EAAUkR,GAA3DnoK,KAAK6qN,YAAY5zD,EAAUkR,EAAWllK,EAC9C,EACA0lN,EAAatpN,UAAUurN,qBAAuB,SAAU3nN,EAAQkwB,EAAW06I,EAAWpyL,GAElF,QADkB,IAAd03C,IAAwBA,EAAY,CAAC,EAAG,KACvC06I,IAAc7tK,KAAK2qN,aAAa1nN,IAA2C,IAA/BjD,KAAK8hN,OAAO3+N,QAAQlL,OACjE,OAAO,KAEX,IAAK+nB,KAAKgrN,kBAAkBvvO,GACxB,OAAOukB,KAAK8hN,OAAO3+N,QAGvB,IAAI6C,EAAKga,KAAK2qN,aAAa1nN,IAAWjD,KAAK8hN,OAAO3+N,QAAQxC,OAAOwyC,GAAY8jI,EAAWjxK,EAAG,GAAImiL,EAAYniL,EAAG,GAAIilO,EAAKjlO,EAAG,GAAIklO,EAAKllO,EAAG,GACtI,GAAIga,KAAKqQ,OAAOmlG,eAAiBx1G,KAAKqQ,OAAOolG,cAAcrB,QAAQn8H,QAAU+nB,KAAKqQ,OAAO2rE,WAAW/jG,QAAqB,UAAXgrB,EAC1G,IAAK,IAAIkC,EAAI8xJ,EAAU9xJ,EAAInF,KAAK8hN,OAAOA,OAAO7pO,OAAQktB,IAAK,CACvD,IAAI+2D,EAAMl8D,KAAKqnJ,WAAWltK,KAAKgrB,EAAI,GACnC,GAAI+2D,GAAOA,EAAIimE,MAAMjjJ,SAASipL,EAAU/sL,WAAY,MAAQ8gF,EAAIimE,MAAMjjJ,SAASipL,EAAU/sL,WAAY,KAAKw7C,UAAUM,SAAS,aACzH,MAAO,CAAC/xB,EAAI,EAAGgjK,GAEnB,GAAIhjK,IAAMnF,KAAK8hN,OAAOA,OAAO7pO,OAAS,EAClC,MAAO,CAACg/K,EAAUkR,EAE1B,CAEJ,GAAe,YAAXllK,GAAmC,QAAXA,EAAkB,CAC1C,IAAIgkN,EAAuB,CAACjnN,KAAK8hN,OAAOA,OAAO7pO,OAAS,EACpD+nB,KAAK8hN,OAAOA,OAAO9hN,KAAK8hN,OAAOA,OAAO7pO,OAAS,GAAGA,OAAS,GAChD,QAAXgrB,IACAgkN,EAAuB,CAAChwD,EAAUj3J,KAAK8hN,OAAOA,OAAO5iO,SAAS+3K,EAAS77K,WAAY,KAAKnD,OAAS,IAExB,IAAzE+nB,KAAK8hN,OAAOA,OAAOmF,EAAqB,IAAIA,EAAqB,MACjEA,GAAuBrQ,EAAAA,EAAAA,IAAc52M,KAAK8hN,OAAOA,OAAQmF,GAAsB,IAEnFhwD,EAAWgwD,EAAqB,GAChC9+C,EAAY8+C,EAAqB,GAAK,CAC1C,CAEA,OADcjnN,KAAK8hN,OAAOphO,IAAIu2K,EAAUkR,EAAW,CAAC8iD,EAAIC,GAAKjoN,EAAQjD,KAAKgiN,YAE9E,EACA2G,EAAatpN,UAAUjf,QAAU,SAAU3E,EAAGw6N,GAC1C,IAAI93K,EAAS1iD,EAAE0iD,OAQf,GAPAn+B,KAAKm+B,OAASA,EAEdA,GADAA,EAAUA,EAAOvH,UAAUM,SAAS2mF,EAAAA,IAAoB1/E,GAAS/E,EAAAA,EAAAA,IAAQ+E,EAAQ,UACtD/E,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,4BACtC/E,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,2BAGzBA,GAFAA,GAAS/E,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,qBACvBxwB,EAAAA,EAAAA,KAAkByrB,EAAAA,EAAAA,KAAQA,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,WAAY,oBAAsB,KAAgBA,KAC/E/E,EAAAA,EAAAA,IAAQ+E,EAAQ,SAASvH,UAAUM,SAAS2mF,EAAAA,IAAkB1/E,EAAS,MAEtF,OAAO,EAEX,IAAIn4C,EAAK,CAACm4C,EAAO8a,cAAcg+G,SAAU94H,EAAOgqI,WAAYlR,EAAWjxK,EAAG,GAAImiL,EAAYniL,EAAG,GACzF+wC,EAAK/2B,KAAK8hN,OAAO3+N,QAASgoO,EAAYp0L,EAAG,GAAIq0L,EAAar0L,EAAG,GAC7Dp5B,GAAMyP,EAAAA,EAAAA,IAAS6pJ,EAAW,IAAMkR,EAAWnoK,KAAK8hN,OAAOA,QAC3D,GAAI9hN,KAAK8hN,OAAOsI,QAAQzsN,KAAUs4M,GAASkV,IAAcl0D,GAAYm0D,IAAejjD,KAC9ExiD,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ0/E,EAAAA,OAAsB8H,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,qBAC9DwnF,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,2BAA4BwnF,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,yBAC1EwnF,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,0BAA2BwnF,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,wBACzEwnF,EAAAA,EAAAA,IAAalqI,EAAE0iD,OAAQ,kBAC/B,OAAO,EAEXn+B,KAAK8hN,OAAOppL,OAAOu+H,EAAUkR,EACjC,EACAwgD,EAAatpN,UAAU+oN,aAAe,WAClC,IAAI/zL,EAAO,CAAC,EACRruC,EAAKga,KAAK8hN,OAAO3+N,QAAS4zC,EAAK/wC,EAAG,GAAIixK,OAAkB,IAAPlgI,EAAgB,EAAIA,EAAIssE,EAAKr9G,EAAG,GAAImiL,OAAmB,IAAP9kE,EAAgB,EAAIA,EAIzH,OAHArjG,KAAK8hN,OAAO3+N,QAAU,CAAC8zK,EAAUkR,GACjC9zI,EAAKrxC,SAAW2qB,EAAAA,EAAAA,IAAkB3N,KAAKqnJ,WAAWltK,KAAK+E,SAAS+3K,EAAS77K,WAAY,MACmB,KAApG4kB,KAAKqnJ,WAAWltK,KAAK+E,SAAS+3K,EAAS77K,WAAY,KAAK+mJ,MAAMjjJ,SAASipL,EAAU/sL,WAAY,KAC5Fi5C,EAAKrxC,SAGVqxC,EAAKwgH,eAAkBxgH,EAAKrxC,QAAQ4zC,UAAUM,SAAS,kBAAqB7C,EAAKrxC,QAAQ4zC,UAAUM,SAAS,gBACpE7C,EAAKrxC,QAAvCgd,KAAKgqN,aAAa31L,EAAKrxC,SAC7BqxC,EAAKwgH,eAAiBxgH,EAAKrxC,QAAQ4zC,UAAUM,SAAS,iBAAmB7C,EAAKrxC,QAAQuvB,cAAc,gBAC9F8hB,EAAKrxC,QAAQuvB,cAAc,gBAAkB8hB,EAAKwgH,eACxDxgH,EAAKmwL,SAAU,EACfnwL,EAAKnoB,IAAMmoB,EAAKrxC,QAAQi2D,cAAc7X,aAAa,YAC5C/M,GARIA,CASf,EACAs0L,EAAatpN,UAAU2qN,aAAe,SAAUhnO,GAC5C,IAAIo5F,EAAQ,gGACR8kH,IAAcvzL,EAAAA,EAAAA,KAAkByrB,EAAAA,EAAAA,IAAQp2C,EAAS,oBACjDgd,KAAKqQ,OAAO8+H,SACZ/yD,EAAQ,0EAEZ,IAAIhsE,EAAQ,GAAG/S,MAAMqC,KAAK1c,EAAQ8tB,iBAAiBsrE,IAKnD,OAAOhsE,EAAMn4B,OAASipN,GAAc9wL,EAAMn4B,OAAS,EAAI+nB,KAAKm+B,OAASn+B,KAAKm+B,OAASn7C,EAAUotB,EAAM,GAAKptB,CAC5G,EACA2lO,EAAatpN,UAAUs5B,SAAW,SAAUujC,EAAKs+C,EAAM0lE,GACnD,IAAItrE,EAAQ,CAACgsB,EAAAA,GAASuhB,OAAQvhB,EAAAA,GAAS8hB,aAAc9hB,EAAAA,GAAS+kD,eAAgB/kD,EAAAA,GAAS8kD,cACvF,OAASxpH,EAAIolF,WAAa9mC,EAAKpsH,UAAYosH,EAAK+nC,YAAc/nC,EAAK0mF,aAC3DhlI,EAAIolF,WAAa9mC,EAAKqoB,WAAajC,EAAAA,GAAS4+B,eAAgB7xJ,EAAAA,EAAAA,IAAkB6sG,EAAKpsH,WAClF8tE,EAAIolF,WAAa1sC,EAAMt+G,QAAQkkH,EAAKqoB,WAAa,MAC5CroB,EAAKqoB,WAAajC,EAAAA,GAAS8kD,cAAgBlrE,EAAKqoB,WAAajC,EAAAA,GAAS+kD,mBACnEnrE,EAAK+nC,aAAc/nC,EAAKpsH,WACjCosH,EAAKp7C,QAAUo7C,EAAKpsH,SAAgC,aAArBosH,EAAKp7C,OAAO9kF,MAC3CkgI,EAAKqoB,WAAajC,EAAAA,GAAS4+E,eAC3BtjJ,EAAIolF,WAAa4+B,MACH,WAAbhkH,EAAI+2E,MAAqB/2E,EAAIg2F,QAC1C,EACAy2D,EAAatpN,UAAUgsN,qBAAuB,SAAUvkO,GAEpD,IADA,IAAIm3L,EAAYn3L,EACPqe,EAAIre,EAAOmqB,EAAMjR,KAAK8hN,OAAO3nO,KAAMgrB,GAAK8L,EAAK9L,IAAK,CACvD,IAAuE,IAAnEnF,KAAK8hN,OAAOA,OAAO5iO,SAAS4H,EAAM1L,WAAY,KAAKkb,QAAQ,GAI3D,OAAOxP,EAHPA,GAAgB,CAKxB,CAEA,OADAkZ,KAAKglN,aAAc,EACZ/mC,CACX,EACA0qC,EAAatpN,UAAUisN,yBAA2B,SAAUxkO,GAExD,IADA,IAAIo3L,EAAap3L,EACRqe,EAAIre,EAAgBqe,GAAH,EAAaA,IAAK,CACxC,IAAuE,IAAnEnF,KAAK8hN,OAAOA,OAAO5iO,SAAS4H,EAAM1L,WAAY,KAAKkb,QAAQ,GAQ3D,OAAOxP,EANP,IADAA,GAAgB,GACJ,EAER,OADAkZ,KAAKglN,aAAc,EACZ9mC,CAMnB,CACA,OAAOA,CACX,EACAyqC,EAAatpN,UAAUqlN,KAAO,SAAUzhN,EAAQ9f,GAC5C,IAAIooO,EAAcvrN,KAAKqQ,OAAO6jJ,uBACb,cAAXjxJ,GAAqC,aAAXA,IAAyC,IAAf9f,EAAQ,IAC1DA,EAAQ,GAAK6c,KAAK8hN,OAAOA,OAAO7pO,OAAS,GAAgB,QAAXgrB,GAAoD,SAAhCjD,KAAKqQ,OAAOkwH,iBAC3Ep9I,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAI27B,YAAY,GACjE6kB,GAAqB,eAAX1gC,GAAsC,QAAXA,IAClC9f,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAI27B,YAAY,IAC9C,aAAX7b,GAAyD,UAAhCjD,KAAKqQ,OAAOkwH,iBAClCp9I,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAImT,QAAQ,GAC7Dk1N,EAASxrN,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,IAAsBl6E,EAC/B,UAAhC3jC,KAAKqQ,OAAOkwH,kBACZgrF,EAAa5nL,GAEjB3jC,KAAKglN,aAAc,EACnB,IAAIyG,EAAyC,IAA3BzrN,KAAKqQ,OAAOm3I,YAA+B,eAAXvkJ,EAC9CyoN,GAA0B,YAAXzoN,GAAwBwoN,IAA+B,IAAftoO,EAAQ,IAChD,aAAX8f,GAAyD,UAAhCjD,KAAKqQ,OAAOkwH,iBAA8C,IAAfp9I,EAAQ,IACzEA,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAImT,QAAQ,GAC5D0J,KAAKqQ,OAAOyxH,gBAA6B,QAAX7+H,GAC/B9f,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAI27B,YAAY,IAAM9e,KAAK8hN,OAAOA,OAAO7pO,OAAS,IAAMkL,EAAQ,KAC1G6c,KAAK8hN,OAAO3+N,QAAQ,GAAK6c,KAAKqrN,qBAAqBrrN,KAAK8hN,OAAO3+N,QAAQ,GAAK,GAC5E6c,KAAK8hN,OAAO3+N,QAAQ,IAAM,EAC1BooO,EAAavrN,KAAKqQ,OAAOyxH,gBAExB9hI,KAAKqQ,OAAOyxH,gBAA6B,aAAX7+H,GAChB,IAAf9f,EAAQ,IAAY6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAImT,QAAQ,KAAOnT,EAAQ,KAC1E6c,KAAK8hN,OAAO3+N,QAAQ,GAAK6c,KAAKsrN,yBAAyBtrN,KAAK8hN,OAAO3+N,QAAQ,GAAK,GAChF6c,KAAK8hN,OAAO3+N,QAAQ,GAAK6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAIlL,QAE5D,IAAI0zO,GAAgB,EAChBzvJ,EAAMt5D,SAASmjE,cAAc9sB,eAC5Bj5C,KAAKqQ,OAAOykG,sBAAwB90G,KAAKqQ,OAAO80I,uBAAuBC,cACrElpF,EAAItlC,UAAUM,SAAS2mF,EAAAA,MAE1B8tG,EADezsO,SAASg9E,EAAI96B,aAAay8E,EAAAA,IAAwB,IACtC,GAY/B,MAVe,aAAX56G,GAAyD,UAAhCjD,KAAKqQ,OAAOkwH,iBAA8C,IAAfp9I,EAAQ,IACzEA,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAImT,QAAQ,KACzD0J,KAAK8hN,OAAO3+N,QAAQ,IAAM,GAEnB,CACP69N,MAAO2K,KAA6B,YAAX1oN,GAAwBwoN,IAA+B,IAAftoO,EAAQ,IAAaooO,GAAcC,GACpG7G,SAAU+G,EACV9G,SAAU2G,EACV1G,cAAe2G,EAGvB,EACA7C,EAAatpN,UAAUylN,eAAiB,SAAUlnJ,EAAUojJ,EAAMz0N,EAAQ0W,QACrD,IAAb26D,IAAuBA,EAAW,IACtC,IAAIz6E,EAAU,GA2Bd,MA1BoC,UAAhC6c,KAAKqQ,OAAOkwH,iBAA+BvgI,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,IAC5D,cAAX56G,GAAqC,aAAXA,IAC1B9f,EAAQ,GAAKy6E,EAAS,GACtBz6E,EAAQ,GAAK6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAIlL,QAE5C+nB,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,IAAkC,eAAX56G,GAAsC,QAAXA,IAClF9f,EAAQ,GAAKy6E,EAAS,GACtBz6E,EAAQ,IAAM,GAEkB,UAAhC6c,KAAKqQ,OAAOkwH,iBAA0C,QAAXt9H,IAC3C9f,EAAQ,GAAKy6E,EAAS,GAAK,EAC3Bz6E,EAAQ,IAAM,IAGF,eAAX8f,GAAsC,QAAXA,IAChC9f,EAAQ,GAAKy6E,EAAS,GACtBz6E,EAAQ,IAAM,GAEH,cAAX8f,GAAqC,UAAXA,IAC1B9f,EAAQ,IAAM,EACdA,EAAQ,GAAKy6E,EAAS,IAEX,aAAX36D,GAAyD,SAAhCjD,KAAKqQ,OAAOkwH,kBACrCp9I,EAAQ,GAAKy6E,EAAS,GAAK,EAC3Bz6E,EAAQ,GAAK6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAIlL,QAEzCkL,CACX,EACAwlO,EAAatpN,UAAU+gJ,aAAe,SAAUjmK,EAAMyxO,GAClD,IAAI5lO,EACA87N,EAAS8J,EAAU9J,OAAQsH,EAAkBwC,EAAUxC,gBACvDn4M,EAAMm4M,EAAgBtH,OAAOA,OAAO7pO,OACpC4zO,EAAa7rN,KAAKqQ,OAAOnnB,gBAAsD,cAApC8W,KAAKqQ,OAAOlnB,eAAe7O,KAAuB22B,EAAM,EAAIA,EAC3Gm4M,EAAgBtH,OAAOA,OAASsH,EAAgBtH,OAAOA,OAAOzkN,MAAM,EAAGwuN,GACvEzC,EAAgBtH,OAAO3nO,KAAO0xO,GAC7B7lO,EAAKojO,EAAgBtH,OAAOA,QAAQriO,KAAKyf,MAAMlZ,EAAI87N,GACpDsH,EAAgBtH,OAAO3nO,MAAQ2nO,EAAO7pO,MAC1C,EACA0wO,EAAatpN,UAAUkpN,QAAU,SAAU9sO,GACvC,IAAI44C,EAAOr0B,KAAKooN,eACZpiO,EAAKga,KAAK8hN,OAAO3+N,QAASm4L,EAASt1L,EAAG,GAAIq4L,EAASr4L,EAAG,GACtD8lO,EAASz3L,EAAKrxC,QAAQ4zC,UAAUM,SAAS2mF,EAAAA,IACzC0rD,EAAeuiD,GAAWrwO,GAAkB,UAAbA,EAAEwnB,SAAuBoxB,EAAKrxC,QAAQ4zC,UAAUM,SAAS,wBACrF7C,EAAKrxC,QAAQ4zC,UAAUM,SAAS,sBAEnCH,EAAK,CAACl1B,KAAK6e,IAAIxhC,SAASm1C,EAAKrxC,QAAQi2D,cAAc7X,aAAay8E,EAAAA,IAAwB,IAAKy9D,GAC7Fz5K,KAAK6e,IAAIxhC,SAASm1C,EAAKrxC,QAAQo+C,aAAay8E,EAAAA,IAAwB,IAAKwgE,IAAUpnB,EAAWlgI,EAAG,GAAIoxI,EAAYpxI,EAAG,GAIxH,OAHI/2B,KAAKqQ,OAAOmlG,eAAiBx1G,KAAKqQ,OAAOolG,cAAcC,mBAAqBo2G,IAC5E70D,EAAWj3J,KAAKqQ,OAAO+9I,cAAc93J,QAAQ+9B,EAAKrxC,QAAQi2D,gBAEvD,CAAE2jI,WAAW,EAAMr6B,WAAYupE,EAAQhqE,QAAS,CAACmV,EAAUkR,GAAYoB,aAAcA,EAChG,EACAo/C,EAAatpN,UAAU2iN,UAAY,WAC/B,IAAI1sJ,EAAQt1D,KAAKqnJ,WACjB,OAAO,SAAU4P,EAAUkR,EAAWllK,GAClC,KAAK0K,EAAAA,EAAAA,IAAkB2nD,EAAMn7E,KAAK+E,SAAS+3K,EAAS77K,WAAY,MAAO,CACnE,IAAIo/H,OAAO,EACX2tD,EAAY7yG,EAAM/iD,cAAc,eAAiB,EAAI41J,EAOrD,IAAI4jD,EAAqD,KALrDvxG,EADAllD,EAAMn7E,KAAK+E,SAAS+3K,EAAS77K,WAAY,KAAK+mJ,MAAM,GAAGvrG,UAAUM,SAAS,cACnEo+B,EAAMn7E,KAAK+E,SAAS+3K,EAAS77K,WAAY,KAAK+mJ,MAAM,GAAGrxH,iBAAiB,MAAM5xB,SAASipL,EAAU/sL,WAAY,KAG7Gk6E,EAAMn7E,KAAK+E,SAAS+3K,EAAS77K,WAAY,KAAK+mJ,MAAMjjJ,SAASipL,EAAU/sL,WAAY,MAEvE8nD,wBAAwB6Q,MAC/C,GAAe,UAAX9wC,GAAiC,eAAXA,EACtB,OAAO8oN,GAAevxG,EAAK5jF,UAAUM,SAAS2mF,EAAAA,IAElD,IAAgB,YAAX56G,GAAmC,cAAXA,IAA2Bu3G,EAAK5jF,UAAUM,SAAS2mF,EAAAA,IAC5E,OAAOkuG,EAEN,GAAe,YAAX9oN,GAAmC,cAAXA,EAC7B,OAAO8oN,CAEf,CACA,OAAO,CACX,CACJ,EACApD,EAAatpN,UAAU2rN,kBAAoB,SAAUvvO,GACjD,IAAIuK,EAAKga,KAAK8hN,OAAO3+N,QAAS4zC,EAAK/wC,EAAG,GAAIs1L,OAAgB,IAAPvkJ,GAAiB,EAAIA,EAAIssE,EAAKr9G,EAAG,GAAIq4L,OAAgB,IAAPh7E,GAAiB,EAAIA,EACtH,GAAIi4E,EAAS,GAAK+C,EAAS,EACvB,OAAO,EAEX,IAAI7jE,GAAOptG,EAAAA,EAAAA,IAASkuK,EAAS,UAAY+C,EAAQr+K,KAAKqnJ,WAAWltK,MACjE,OAAKqgI,IAGe,UAAb/+H,EAAEwnB,QAAmC,eAAbxnB,EAAEwnB,SAC7Bu3G,EAAK5jF,UAAUM,SAAS2mF,EAAAA,MAAsBrD,EAAK5jF,UAAUM,SAAS,kBAC/DsjF,EAAK5jF,UAAUM,SAAS,uBAAyBsjF,EAAK5jF,UAAUM,SAAS,iBACxF,EACAyxL,EAAatpN,UAAU2sN,gBAAkB,WACrC,OAAOhsN,KAAKqQ,OAAOy+H,gBAAkB9uI,KAAKqQ,OAAO0+H,kBAAkBC,oBACvE,EACO25E,CACX,CAjWkC,GAsW9BG,EAA6B,SAAUr9M,GAEvC,SAASq9M,EAAYz4M,GACjB,OAAO5E,EAAO/L,KAAKM,KAAMqQ,IAAWrQ,IACxC,CAsLA,OAzLAu/B,EAAUupL,EAAar9M,GAIvBq9M,EAAYzpN,UAAUgoJ,SAAW,WAC7B,OAAQrnJ,KAAKqQ,OAAOyxH,eAChB9hI,KAAKqQ,OAAO4wH,mBAAmB1uH,cAAc,6BAC7CvS,KAAKqQ,OAAOszH,gBACpB,EACAmlF,EAAYzpN,UAAUjf,QAAU,SAAU3E,GACtC,IAAI0iD,EAAS1iD,EAAE0iD,OAOf,GANAn+B,KAAKm+B,OAASA,GACdA,EAAUA,EAAOvH,UAAUM,SAAS,gBAAkBiH,GAAS/E,EAAAA,EAAAA,IAAQ+E,EAAQ,QACrC,IAA3Bn+B,KAAKqQ,OAAOm3I,aACvBrpH,EAAU1iD,EAAE0iD,OAAOvH,UAAUM,SAAS2mF,EAAAA,IAAoBpiI,EAAE0iD,QACxD/E,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,OAEtB1iD,EAAE0iD,OAAOvH,UAAUM,SAAS,mBAC5Bz7C,EAAE0iD,OAAO5rB,cAAc,wBACvB,OAAO,EAEX,GAAK4rB,EAAL,CAGA,IAAIn4C,EAAK,CAACm4C,EAAO8a,cAAcg+G,SAAU94H,EAAOgqI,WAAYlR,EAAWjxK,EAAG,GAAImiL,EAAYniL,EAAG,GACzF2X,GAAMyP,EAAAA,EAAAA,IAAS6pJ,EAAW,IAAMkR,EAAWnoK,KAAK8hN,OAAOA,QAC3D,GAAI9hN,KAAK8hN,OAAOsI,QAAQzsN,GACpB,OAAO,EAEXqC,KAAK8hN,OAAOppL,OAAOyF,EAAO8a,cAAcg+G,SAAU94H,EAAOgqI,UANzD,CAOJ,EACA2gD,EAAYzpN,UAAU+oN,aAAe,WACjC,IAAI/zL,EAAO,CAAC,EACRruC,EAAKga,KAAK8hN,OAAO3+N,QAAS4zC,EAAK/wC,EAAG,GAAIixK,OAAkB,IAAPlgI,EAAgB,EAAIA,EAAIssE,EAAKr9G,EAAG,GAAImiL,OAAmB,IAAP9kE,EAAgB,EAAIA,EAMzH,OALAhvE,EAAKrxC,QAAUgd,KAAKqnJ,WAAWltK,KAAK+E,SAAS+3K,EAAS77K,WAAY,KAAK+mJ,MAAMjjJ,SAASipL,EAAU/sL,WAAY,MACvGuyB,EAAAA,EAAAA,IAAkB0mB,EAAKrxC,WACxBqxC,EAAKwgH,eAAiB70I,KAAKgqN,aAAa31L,EAAKrxC,SAC7CqxC,EAAKmwL,SAAWnwL,EAAKrxC,QAAQ4zC,UAAUM,SAAS,oBAE7C7C,CACX,EACAy0L,EAAYzpN,UAAUs5B,SAAW,SAAUujC,EAAKs+C,GAC5C,OAAQA,EAAKpsH,eAAkClT,IAAtBs/H,EAAKp7C,OAAOx9E,OAAuB44H,EAAK0mF,cAAevzL,EAAAA,EAAAA,IAAkB6sG,EAAKp7C,OAAO5oE,aACtGmX,EAAAA,EAAAA,IAAkB6sG,EAAKp7C,OAAOyqI,YAAoC,aAArBrvF,EAAKp7C,OAAO9kF,MAAuBkgI,EAAKqoB,WAAajC,EAAAA,GAAS21B,aACvH,EACAuyD,EAAYzpN,UAAUqlN,KAAO,SAAUzhN,EAAQ9f,GAC3C,IAAIooO,EAAcvrN,KAAKqQ,OAAO6jJ,uBACd,cAAXjxJ,GAAsC,cAAXA,GAA0BjD,KAAKgsN,mBAAiC,aAAX/oN,KAA0C,IAAf9f,EAAQ,IACjHA,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAImT,QAAQ,KAAyC,SAAhC0J,KAAKqQ,OAAOkwH,iBAAyC,QAAXt9H,GACzG9f,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAI27B,YAAY,GAC7D6kB,GAAqB,eAAX1gC,GAAuC,eAAXA,GAA2BjD,KAAKgsN,mBACxD,QAAX/oN,KAAsB9f,EAAQ,KAAO6c,KAAK8hN,OAAO1tG,SAAWjxH,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAI27B,YAAY,KACrH37B,EAAQ,GAAK,GAAgB,aAAX8f,GAAyD,UAAhCjD,KAAKqQ,OAAOkwH,iBACpDp9I,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAImT,QAAQ,GAC7Dk1N,EAASxrN,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,IAAsBl6E,EAC/B,UAAhC3jC,KAAKqQ,OAAOkwH,kBACZgrF,EAAa5nL,GAEjB,IACI2wI,EACAuvC,EAFA4H,EAAyC,IAA3BzrN,KAAKqQ,OAAOm3I,YAA+B,UAAXvkJ,EAG9CyoN,EAAaH,KAAgD,SAAhCvrN,KAAKqQ,OAAOkwH,iBAAyC,QAAXt9H,GACpE9f,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO7pO,OAAS,IAAMuzO,EACpDS,EAAUjsN,KAAKqQ,OAAOq3H,YAAYsgF,SAAWhoN,KAAKqQ,OAAOq3H,YAAYsgF,QAAQlG,OAAOA,OACpFj0C,EAAYo+C,KAAYt+M,EAAAA,EAAAA,IAAkBs+M,EAAQ9oO,EAAQ,KAsB9D,OArBI6c,KAAKqQ,OAAOwxM,mBAAgC,QAAX5+M,IACjC4gN,EAAU7jN,KAAK8hN,OAAOA,OAAO7pO,OAAS,IAAMkL,EAAQ,IACpDmxL,EAAanxL,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAI27B,YAAY,MAM/D9e,KAAK8hN,OAAO3+N,QAAQ,GAJnB0gO,EAIwB,EAHA7jN,KAAK8hN,OAAO3+N,QAAQ,GAAK,EAKtD6c,KAAK8hN,OAAO3+N,QAAQ,IAAM,GAE1B6c,KAAKqQ,OAAOyxH,gBAAkB+hF,GAAWvvC,IACzCi3C,GAAa,EACbG,GAAa,IAGN,QAAXzoN,GAAoD,SAAhCjD,KAAKqQ,OAAOkwH,iBAA8Bp9I,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO7pO,OAAS,GACtGkL,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAI27B,YAAY,KAC7D9e,KAAK8hN,OAAO3+N,QAAQ,IAAM,GAEvB,CACH69N,MAAmB,cAAX/9M,GAA0BwoN,IAAgBtoO,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO7pO,OAAS,GACxF41L,IAAc09C,GAAcC,IAAwB,QAAXvoN,GAAoB4gN,GAAWvvC,EAC7EqwC,SAAU+G,EACV9G,SAAU2G,EACV1G,cAAe2G,EAEvB,EACA1C,EAAYzpN,UAAUylN,eAAiB,SAAUlnJ,EAAUojJ,EAAMz0N,EAAQ0W,QACpD,IAAb26D,IAAuBA,EAAW,IACtC,IAAIsuJ,EAAW,GA4Bf,MA3BoC,UAAhClsN,KAAKqQ,OAAOkwH,iBAA+BvgI,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,KAC5D,cAAX56G,GAAsC,cAAXA,GAA0BjD,KAAKgsN,mBAAiC,aAAX/oN,KAChFipN,EAAS,GAAKtuJ,EAAS,GACvBsuJ,EAAS,GAAKlsN,KAAK8hN,OAAOA,OAAOoK,EAAS,IAAIj0O,QAE9C+nB,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,KACjB,eAAX56G,GAAuC,eAAXA,GAA2BjD,KAAKgsN,mBAAiC,QAAX/oN,KACtFipN,EAAS,GAAKtuJ,EAAS,GACvBsuJ,EAAS,IAAM,KAGH,eAAXjpN,GAAuC,eAAXA,GAA2BjD,KAAKgsN,mBAAiC,QAAX/oN,KACvFipN,EAAS,GAAKtuJ,EAAS,GACvBsuJ,EAAS,IAAM,GAEJ,YAAXjpN,GAAmC,eAAXA,IACxBipN,EAAS,GAAKlsN,KAAK8hN,OAAOA,OAAO7pO,OACjCi0O,EAAS,GAAKtuJ,EAAS,IAES,SAAhC59D,KAAKqQ,OAAOkwH,iBAAyC,aAAXt9H,IAC1CipN,EAAS,IAAsB,IAAjBtuJ,EAAS,GAAY59D,KAAK8hN,OAAOA,OAAO7pO,OAAS,EAAI2lF,EAAS,GAAK,EACjFsuJ,EAAS,GAAKlsN,KAAK8hN,OAAOA,OAAOoK,EAAS,IAAIj0O,QAEd,UAAhC+nB,KAAKqQ,OAAOkwH,iBAA0C,QAAXt9H,IAC3CipN,EAAS,GAAKtuJ,EAAS,GAAK,EAC5BsuJ,EAAS,IAAM,GAEZA,CACX,EACApD,EAAYzpN,UAAU+gJ,aAAe,SAAUjmK,GAC3C,IAAIlC,EAAS+nB,KAAK8hN,OAAOA,OAAO7pO,OAChC,GAAI+nB,KAAKqQ,OAAOnnB,gBAAsD,cAApC8W,KAAKqQ,OAAOlnB,eAAe7O,KAAsB,CAC/E0lB,KAAK8hN,OAAO3nO,OAAS6lB,KAAK8hN,OAAO3nO,KAKjC,IAJA,IAAIgoJ,EAAQhoJ,EAAK,GAAGgoJ,MAChBmoF,EAAkB,EAClBz2D,EAAuC,qBAAzB7zJ,KAAKmsN,iBAA0E,UAAhCnsN,KAAKqQ,OAAOkwH,gBAA8B1iB,EAAAA,GAC9E,qBAAzB79G,KAAKmsN,iBAAmE,0BAAzBnsN,KAAKmsN,gBAA8CtuG,EAAAA,GAAuB,UACpH14G,EAAI,EAAGA,EAAIg9H,EAAMlqJ,OAAQktB,IAC1Bg9H,EAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAKgkF,QAAU+iE,EAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAKgkF,OAAOg1C,QACrFk2G,EAAkBtqN,KAAKosN,kBAAkBjqF,EAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAKgkF,OAAOg1C,QAASn8H,EAAQqyO,EAAiBz2D,KAG/G7zJ,KAAKqQ,OAAOyxH,gBAAmB9hI,KAAKqQ,OAAOyxH,gBACzCK,EAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAKgkF,OAAOy+H,cAAgBhqC,KAC5D7zJ,KAAK8hN,OAAOjiN,IAAI5nB,EAAQqyO,EAAiBnoF,EAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAKgT,UAAuE,IAA5D+zI,EAAMjjJ,SAASimB,EAAE/pB,WAAY,KAAKgkF,OAAOl2E,gBAC/HohO,IAIhB,CACJ,EACAxB,EAAYzpN,UAAU+sN,kBAAoB,SAAU5B,EAAYvzD,EAAUimB,EAAarpB,GAGnF,IAFA,IAAIz/C,EAAUo2G,EACVF,EAAkBptC,EACb/3K,EAAI,EAAGA,EAAIivG,EAAQn8H,OAAQktB,IAC5BivG,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKg5H,QACpCk2G,EAAkBtqN,KAAKosN,kBAAkBh4G,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKg5H,QAAS6iD,EAAUqzD,EAAiBz2D,KAG5G7zJ,KAAKqQ,OAAOyxH,gBAAmB9hI,KAAKqQ,OAAOyxH,gBACzC1tB,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKyiN,cAAgBhqC,KACvD7zJ,KAAK8hN,OAAOjiN,IAAIo3J,EAAUqzD,EAAiBl2G,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAKgT,UAAkE,IAAvDgmH,EAAQl1H,SAASimB,EAAE/pB,WAAY,KAAK8N,gBAC9HohO,KAIZ,OAAOA,CACX,EACAxB,EAAYzpN,UAAUkpN,QAAU,SAAU9sO,GACtC,OAAOkzB,EAAAA,EAAAA,IAAOlD,EAAOpM,UAAUkpN,QAAQ7oN,KAAKM,KAAMvkB,GAAI,CAAEmhM,WAAW,EAAO/jF,UAAU,GACxF,EACAiwH,EAAYzpN,UAAU2iN,UAAY,WAC9B,OAAO,WAAc,OAAO,CAAM,CACtC,EACA8G,EAAYzpN,UAAU2rN,kBAAoB,SAAUvvO,GAChD,IAAIuK,EAAKga,KAAK8hN,OAAO3+N,QAAS8zK,EAAWjxK,EAAG,GAAIk3L,EAAcl3L,EAAG,GACjE,GAAIixK,EAAW,GAAKimB,EAAc,EAC9B,OAAO,EAEX,IAAI1iE,GAAOptG,EAAAA,EAAAA,IAAS6pJ,EAAW,UAAYimB,EAAal9K,KAAKqnJ,WAAWltK,MACxE,OAAKqgI,IAGe,UAAb/+H,EAAEwnB,QAAmC,iBAAbxnB,EAAEwnB,SAA6Bu3G,EAAK5jF,UAAUM,SAAS,gBAC1F,EACA4xL,EAAYzpN,UAAU8sN,cAAgB,WAClC,MAAO,aACX,EACOrD,CACX,CA3LiC,CA2L/BH,GAEEF,EAAmC,SAAUh9M,GAE7C,SAASg9M,IACL,OAAkB,OAAXh9M,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CA+DA,OAlEAu/B,EAAUkpL,EAAmBh9M,GAI7Bg9M,EAAkBppN,UAAUgoJ,SAAW,WACnC,OAAOrnJ,KAAKqQ,OAAO21I,aAAazzI,cAAc,4BAClD,EACAk2M,EAAkBppN,UAAUqlN,KAAO,SAAUzhN,EAAQ9f,GACjD,IAAIsoO,EAAyC,IAA3BzrN,KAAKqQ,OAAOm3I,YAA+B,eAAXvkJ,EAC9C0hN,GAAwB,YAAX1hN,GAAwBwoN,IAA+B,IAAftoO,EAAQ,IAC9C,aAAX8f,GAAyD,UAAhCjD,KAAKqQ,OAAOkwH,iBACnB,IAAfp9I,EAAQ,IAAYA,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAImT,QAAQ,GACjF+1N,GAAoB,YAAXppN,GAAwBwoN,IAA+B,IAAftoO,EAAQ,GACzDqoO,EAAoB,aAAXvoN,GAAyBjD,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,IAC/D16H,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAImT,QAAQ,GAC7D,MAAoC,UAAhC0J,KAAKqQ,OAAOkwH,gBAIL,CAAEygF,KAHE2D,IAAyB,aAAX1hN,GAAoC,cAAXA,IAA0C,IAAf9f,EAAQ,IAClE,QAAX8f,GAAoB9f,EAAQ,GAAK6c,KAAK8hN,OAAOA,OAAO7pO,OAAS,GAC1DkL,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAI27B,YAAY,GAChD6lM,SAAUA,EAAUC,SAAUyH,IAExC,aAAXppN,GAAwC,IAAf9f,EAAQ,IAAYA,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAImT,QAAQ,KACnG0J,KAAK8hN,OAAO3+N,QAAQ,IAAM,GAEvB,CACH69N,KAAM2D,IAAyB,QAAX1hN,GAA+B,eAAXA,IACjC9f,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAI27B,YAAY,IAC9C,aAAX7b,GAAyB9f,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAImT,QAAQ,GACvFquN,SAAUA,EACVC,SAAUyH,EACVxH,cAAe2G,GAEvB,EACA/C,EAAkBppN,UAAUylN,eAAiB,SAAUlnJ,EAAUojJ,EAAMz0N,EAAQ0W,QAC1D,IAAb26D,IAAuBA,EAAW,IACtC,IAAI0uJ,EAAW,GA6Bf,MA5BoC,UAAhCtsN,KAAKqQ,OAAOkwH,iBACG,eAAXt9H,GAAsC,QAAXA,IAC3BqpN,EAAS,GAAK1uJ,EAAS,GACvB0uJ,EAAS,IAAM,GAEJ,aAAXrpN,IACAqpN,EAAS,GAAK1uJ,EAAS,GAAK,EAC5B0uJ,EAAS,GAAKtsN,KAAK8hN,OAAOA,OAAOwK,EAAS,IAAIr0O,UAInC,QAAXgrB,GAAoBjD,KAAKqQ,OAAOwxM,oBAChCyK,EAAS,GAAK1uJ,EAAS,GACvB0uJ,EAAS,IAAM,GAEJ,cAAXrpN,GAAqC,aAAXA,IAC1BqpN,EAAS,GAAK1uJ,EAAS,GACvB0uJ,EAAS,GAAKtsN,KAAK8hN,OAAOA,OAAOlkJ,EAAS,IAAI3lF,SAGvC,cAAXgrB,GAAqC,UAAXA,IAC1BqpN,EAAS,IAAM,EACfA,EAAS,GAAK1uJ,EAAS,IAEZ,QAAX36D,GAAoD,UAAhCjD,KAAKqQ,OAAOkwH,kBAChC+rF,EAAS,GAAK1uJ,EAAS,GAAK,EAC5B0uJ,EAAS,IAAM,GAEZA,CACX,EACO7D,CACX,CApEuC,CAoErCE,GAEEC,EAAkC,SAAUn9M,GAE5C,SAASm9M,IACL,OAAkB,OAAXn9M,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAuEA,OA1EAu/B,EAAUqpL,EAAkBn9M,GAI5Bm9M,EAAiBvpN,UAAUqlN,KAAO,SAAUzhN,EAAQ9f,GAChD,IAAIsoO,EAAyC,IAA3BzrN,KAAKqQ,OAAOm3I,YAA+B,UAAXvkJ,EAC9CspN,EAAUvsN,KAAKqQ,OAAOq3H,YAAYj3G,QAAUzwB,KAAKqQ,OAAOq3H,YAAYj3G,OAAOqxL,OAAOA,OAClFj0C,EAAY0+C,KAAY5+M,EAAAA,EAAAA,IAAkB4+M,EAAQppO,EAAQ,KAC9D,GAAoC,UAAhC6c,KAAKqQ,OAAOkwH,gBAA6B,CACzC,IAAIisF,GAAwB,cAAXvpN,GAAsC,cAAXA,GAA0BjD,KAAKgsN,mBACzD,aAAX/oN,KAA0C,IAAf9f,EAAQ,IAAYA,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAImT,QAAQ,KACpGnT,EAAQ,GAAK6c,KAAK8hN,OAAOA,OAAO7pO,OAAS,GAAgB,QAAXgrB,GAC3C9f,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAI27B,YAAY,GACjEkiM,GAAoB,cAAX/9M,GAA0BwoN,GAA2B,QAAXxoN,GAChD9f,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAI27B,YAAY,KAAQ37B,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO7pO,OAAS,GAC/G41L,GAAa2+C,EACd5H,GAAuB,cAAX3hN,GAA0BwoN,IAAgBtoO,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO7pO,OAAS,EAKrG,MAJe,QAAXgrB,GAAoB9f,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO7pO,OAAS,GAC5DkL,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAI27B,YAAY,KAC7D9e,KAAK8hN,OAAO3+N,QAAQ,IAAM,GAEvB,CAAE69N,KAAMA,EAAM2D,SAAU6H,EAAU5H,SAAUA,EACvD,CACA,IAAI4G,EAASroO,EAAQ,GAAK,GAAgB,aAAX8f,GAAyBjD,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,IACjF16H,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAImT,QAAQ,GAC7D,MAAO,CACH0qN,MAAkB,cAAX/9M,GAA0BwoN,IAAgBtoO,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO7pO,OAAS,IAAkB,eAAXgrB,GACnF,eAAXA,GAA2BjD,KAAKgsN,mBAAiC,QAAX/oN,KACtD9f,EAAQ,KAAO6c,KAAK8hN,OAAO1tG,SAAWjxH,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAI27B,YAAY,KAAO+uJ,GACzF,QAAX5qK,GAAoB9f,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAI27B,YAAY,IACnE,aAAX7b,GAAyB9f,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAImT,QAAQ,IAAMnT,EAAQ,GAAK,EAC1GwhO,UAAsB,eAAX1hN,GAAuC,eAAXA,GAA2BjD,KAAKgsN,mBAAiC,QAAX/oN,KACxF9f,EAAQ,KAAO6c,KAAK8hN,OAAO1tG,SAAWjxH,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAI27B,YAAY,KAClF,QAAX7b,GAAoB9f,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAI27B,YAAY,IACnE,aAAX7b,GAAyB9f,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAImT,QAAQ,IAAMnT,EAAQ,GAAK,EAC1GyhO,UAAsB,cAAX3hN,GAA0BwoN,IAAgBtoO,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO7pO,OAAS,EAChG4sO,cAAe2G,EAEvB,EACA5C,EAAiBvpN,UAAUgoJ,SAAW,WAClC,OAAQrnJ,KAAKqQ,OAAO4wH,mBAAmB1uH,cAAc,2BACzD,EACAq2M,EAAiBvpN,UAAUylN,eAAiB,SAAUlnJ,EAAUojJ,EAAMz0N,EAAQ0W,QACzD,IAAb26D,IAAuBA,EAAW,IACtC,IAAI6uJ,EAAW,GAyBf,MAxBoC,UAAhCzsN,KAAKqQ,OAAOkwH,kBACG,eAAXt9H,GAAuC,eAAXA,GAA2BjD,KAAKgsN,mBAAiC,QAAX/oN,KAClFwpN,EAAS,GAAK7uJ,EAAS,GACvB6uJ,EAAS,IAAM,GAEJ,aAAXxpN,IACAwpN,EAAS,IAAsB,IAAjB7uJ,EAAS,GAAY59D,KAAK8hN,OAAOA,OAAO7pO,OAAS,EAAI2lF,EAAS,GAAK,EACjF6uJ,EAAS,GAAKzsN,KAAK8hN,OAAOA,OAAO2K,EAAS,IAAIx0O,UAInC,cAAXgrB,GAAsC,cAAXA,GAA0BjD,KAAKgsN,mBAAiC,aAAX/oN,KAChFwpN,EAAS,GAAK7uJ,EAAS,GACvB6uJ,EAAS,GAAKzsN,KAAK8hN,OAAOA,OAAO2K,EAAS,IAAIx0O,QAGvC,YAAXgrB,GAAmC,eAAXA,IACxBwpN,EAAS,GAAKzsN,KAAK8hN,OAAOA,OAAO7pO,OACjCw0O,EAAS,GAAK7uJ,EAAS,IAEZ,QAAX36D,GAAoD,UAAhCjD,KAAKqQ,OAAOkwH,kBAChCksF,EAAS,GAAK7uJ,EAAS,GAAK,EAC5B6uJ,EAAS,IAAM,GAEZA,CACX,EACA7D,EAAiBvpN,UAAU8sN,cAAgB,WACvC,MAAO,kBACX,EACOvD,CACX,CA5EsC,CA4EpCE,GAGEn0E,EAA2B,WAC3B,SAASA,EAAU5mC,GACf/tG,KAAK+tG,UAAYA,CACrB,CAwCA,OAvCA4mC,EAAUt1I,UAAUuzI,YAAc,SAAU3kJ,GAExC,GADAA,EAAKkwC,OAAO8a,cAAcriB,UAAUzB,IAAI,iBACpClnC,EAAKkwC,OAAOvH,UAAUM,SAAS,YAAcjpC,EAAKkwC,OAAOvH,UAAUM,SAAS,aAAejpC,EAAKkwC,OAAO5gD,MAAO,CAC9G,IAAI42J,EAAQlmJ,EAAKkwC,OAAO8a,cAAc1mC,cAAc,YACpD4hI,EAAMv9G,UAAUzB,IAAI,gBACpBg/G,EAAM79G,aAAa,QAAS,SAC3B69G,EAAO58G,MAAM68G,OAAS,SAC3B,CACJ,EACAO,EAAUt1I,UAAUqtN,WAAa,SAAUz+N,GACvC,IAAI25G,EAAgB35G,EAAK25G,cAAgB35G,EAAK25G,cAAgB,KAS9D,GARIA,GAAiBA,EAAchxE,UAAUM,SAAS,WAC9C0wE,EAAchxE,UAAUM,SAAS,iBACjCjpC,EAAKkwC,OAAO8a,cAAcriB,UAAUjB,OAAO,iBAI/C1nC,EAAKkwC,OAAO8a,cAAcriB,UAAUjB,OAAO,iBAE3C1nC,EAAKkwC,OAAOvH,UAAUM,SAAS,aAAe0wE,IAAmBA,EAAchxE,UAAUM,SAAS,0BAC7F0wE,EAAchxE,UAAUM,SAAS,WAAa,CACnD,IAAIi9G,EAAQlmJ,EAAKkwC,OAAO8a,cAAc1mC,cAAc,YACpD4hI,EAAMv9G,UAAUjB,OAAO,gBACvBw+G,EAAMjzG,gBAAgB,SACtBizG,EAAM58G,MAAM68G,OAAS,SACzB,CACJ,EACAO,EAAUt1I,UAAU6oG,UAAY,WACxBloG,KAAK+tG,YACL/4E,EAAAA,GAAaG,IAAIn1B,KAAK+tG,UAAW,QAAS/tG,KAAK4yI,YAAa5yI,MAC5Dg1B,EAAAA,GAAaG,IAAIn1B,KAAK+tG,UAAW,OAAQ/tG,KAAK0sN,WAAY1sN,MAElE,EACA20I,EAAUt1I,UAAU6qG,YAAc,WAC1BlqG,KAAK+tG,YACL/4E,EAAAA,GAAaW,OAAO31B,KAAK+tG,UAAW,QAAS/tG,KAAK4yI,aAClD59G,EAAAA,GAAaW,OAAO31B,KAAK+tG,UAAW,OAAQ/tG,KAAK0sN,YAEzD,EACO/3E,CACX,CA5C+B,GA8C3B+zE,EAAwC,SAAUj9M,GAElD,SAASi9M,IACL,OAAkB,OAAXj9M,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAmCA,OAtCAu/B,EAAUmpL,EAAwBj9M,GAIlCi9M,EAAuBrpN,UAAUgoJ,SAAW,WACxC,OAAOrnJ,KAAKqQ,OAAO21I,aAAazzI,cAAc,mCAClD,EACAm2M,EAAuBrpN,UAAUqlN,KAAO,SAAUzhN,EAAQ9f,GACtD,IAAIsoO,EAAyC,IAA3BzrN,KAAKqQ,OAAOm3I,YAA+B,eAAXvkJ,EAC9C0hN,GAAuB,YAAX1hN,GAAwBwoN,IAA+B,IAAftoO,EAAQ,GAC5DwpO,EAAe3sN,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,IAAiC,QAAX56G,GAClE9f,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAI27B,YAAY,GACjE,MAAO,CACHkiM,KAAM2D,IAAyB,aAAX1hN,GAAoC,cAAXA,IAA0C,IAAf9f,EAAQ,IAC7D,QAAX8f,GAAoB9f,EAAQ,GAAK6c,KAAK8hN,OAAOA,OAAO7pO,OAAS,GAC1DkL,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAI27B,YAAY,GACrE6lM,SAAUA,EACVE,cAAeF,EACfC,SAAU+H,EAElB,EACAjE,EAAuBrpN,UAAUylN,eAAiB,SAAUlnJ,EAAUojJ,EAAMz0N,EAAQ0W,QAC/D,IAAb26D,IAAuBA,EAAW,IACtC,IAAI0uJ,EAAW,GAaf,MAZe,eAAXrpN,GAAsC,QAAXA,IAC3BqpN,EAAS,GAAK1uJ,EAAS,GACvB0uJ,EAAS,IAAM,GAEJ,cAAXrpN,GAAqC,UAAXA,IAC1BqpN,EAAS,IAAM,EACfA,EAAS,GAAK1uJ,EAAS,IAEZ,aAAX36D,IACAqpN,EAAS,GAAK1uJ,EAAS,GAAK,EAC5B0uJ,EAAS,GAAKtsN,KAAK8hN,OAAOA,OAAOwK,EAAS,IAAIr0O,QAE3Cq0O,CACX,EACO5D,CACX,CAxC4C,CAwC1CC,GAEEE,EAAuC,SAAUp9M,GAEjD,SAASo9M,IACL,OAAkB,OAAXp9M,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CA2CA,OA9CAu/B,EAAUspL,EAAuBp9M,GAIjCo9M,EAAsBxpN,UAAUqlN,KAAO,SAAUzhN,EAAQ9f,GACrD,IAAIypO,EAAY5sN,KAAKqQ,OAAOq3H,YAAYj3G,QAAUzwB,KAAKqQ,OAAOq3H,YAAYj3G,OAAOqxL,OAAOA,OACpFj0C,EAAY++C,KAAcj/M,EAAAA,EAAAA,IAAkBi/M,EAAUzpO,EAAQ,KAC9DsoO,EAAyC,IAA3BzrN,KAAKqQ,OAAOm3I,YAA+B,UAAXvkJ,EAC9CsoN,GAAyB,cAAXtoN,GAAsC,cAAXA,GAA0BjD,KAAKgsN,mBAC1D,aAAX/oN,KAA0C,IAAf9f,EAAQ,IAAYA,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAImT,QAAQ,KACpGnT,EAAQ,GAAK6c,KAAK8hN,OAAOA,OAAO7pO,OAAS,GAAgB,QAAXgrB,GAC3C9f,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAI27B,YAAY,GACjEkiM,GAAoB,cAAX/9M,GAA0BwoN,GAA2B,QAAXxoN,GAChD9f,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAI27B,YAAY,KAAQ37B,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO7pO,OAAS,GAC/G41L,GAAa09C,EACdc,EAAmB,QAAXppN,GAAoB9f,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAI27B,YAAY,GACtF0sM,GAAqB,cAAXvoN,GAA0BwoN,IAAgBtoO,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO7pO,OAAS,EAKnG,MAJe,QAAXgrB,GAAoB9f,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO7pO,OAAS,GAC5DkL,EAAQ,KAAO6c,KAAK8hN,OAAOA,OAAO3+N,EAAQ,IAAI27B,YAAY,KAC7D9e,KAAK8hN,OAAO3+N,QAAQ,IAAM,GAEvB,CAAE69N,KAAMA,EAAM2D,SAAU4G,EAAY3G,SAAUyH,EAAOxH,cAAe2G,EAC/E,EACA3C,EAAsBxpN,UAAUgoJ,SAAW,WACvC,OAAQrnJ,KAAKqQ,OAAO4wH,mBAAmB1uH,cAAc,kCACzD,EACAs2M,EAAsBxpN,UAAUylN,eAAiB,SAAUlnJ,EAAUojJ,EAAMz0N,EAAQ0W,QAC9D,IAAb26D,IAAuBA,EAAW,IACtC,IAAI6uJ,EAAW,GAaf,OAZe,eAAXxpN,GAAuC,eAAXA,GAA2BjD,KAAKgsN,mBAAiC,QAAX/oN,KAClFwpN,EAAS,GAAK7uJ,EAAS,GACvB6uJ,EAAS,IAAM,GAEJ,YAAXxpN,GAAmC,eAAXA,IACxBwpN,EAAS,GAAKzsN,KAAK8hN,OAAOA,OAAO7pO,OACjCw0O,EAAS,GAAK7uJ,EAAS,IAEZ,aAAX36D,IACAwpN,EAAS,IAAsB,IAAjB7uJ,EAAS,GAAY59D,KAAK8hN,OAAOA,OAAO7pO,OAAS,EAAI2lF,EAAS,GAAK,EACjF6uJ,EAAS,GAAKzsN,KAAK8hN,OAAOA,OAAO2K,EAAS,IAAIx0O,QAE3Cw0O,CACX,EACA5D,EAAsBxpN,UAAU8sN,cAAgB,WAC5C,MAAO,uBACX,EACOtD,CACX,CAhD2C,CAgDzCC,qICriEEplE,EAAmC,WAMnC,SAASA,EAAkBrzI,GACvBrQ,KAAKqQ,OAASA,CAClB,CA8GA,OA7GAqzI,EAAkBrkJ,UAAU+gJ,aAAe,SAAUv6J,EAAMoI,GACvD,IAAI9T,EAAO,GACPsvB,EAAazJ,KAAKqQ,OAAOykG,sBAAwB7mH,EAAOA,EAAKwb,WAAa,EAC9EA,EAAazJ,KAAKqQ,OAAO0kG,yBAA2B9mH,EAAO+R,KAAK6sN,iBAAiB5+N,GAAQwb,EACrFzJ,KAAKqQ,OAAOsuJ,qBAAuB1wK,GAAQA,EAAKwb,aAChDA,EAAaxb,EAAKwb,YAEtB,IAAK,IAAItE,EAAI,EAAG8L,EAAMpyB,OAAOC,KAAK+G,GAAM5N,OAAQktB,EAAI8L,EAAK9L,IAAKsE,IAC1DtvB,EAAK+E,SAASimB,EAAE/pB,WAAY,KAAO4kB,KAAK+gI,YAAYl7I,EAAK3G,SAASimB,EAAE/pB,WAAY,KAAMquB,GAE1F,OAAOtvB,CACX,EACAupK,EAAkBrkJ,UAAU41J,cAAgB,WAExC,IAAItgD,EAAO,GACX,GAAI30G,KAAKqQ,OAAOkyH,gBAAkBviI,KAAKqQ,OAAOmyH,UAAW,CACrD,IAAIv0I,EAAO,CAAC,EACZ+R,KAAKqQ,OAAO0W,OAAOsM,EAAAA,IAA6BplC,GAChD0mH,EAAKl1H,KAAKugB,KAAKqiI,aAAap0I,EAAM,KAAM2yI,EAAAA,GAAS4+B,cACrD,CAIA,OAHIx/J,KAAKqQ,OAAOqyH,iBACZ/tB,EAAKl1H,KAAKugB,KAAKqiI,aAAa,CAAC,EAAG,KAAMzB,EAAAA,GAAS8+B,cAE5C/qD,CACX,EACA+uC,EAAkBrkJ,UAAU0hI,YAAc,SAAUl7I,EAAMiB,EAAO3G,EAAUqhK,EAAQsrE,EAAKnsE,EAAQC,GAC5F,IAAIlgJ,EAAU,CACdA,eAAyB,CAAC,GAC1BA,EAAQwL,KAAM+2I,EAAAA,EAAAA,IAAO,YACrBviJ,EAAQ7a,KAAOA,EACf6a,EAAQ5Z,MAAQA,EAChB4Z,EAAQ8gJ,OAASA,EACjB9gJ,EAAQigJ,OAASA,EACjBjgJ,EAAQ4gJ,WAAY,EACpB5gJ,EAAQoiJ,UAAYgqE,EACpBpsN,EAAQkgJ,UAAYA,EAChB5gJ,KAAKqQ,OAAOwrG,aAC2B,QAAnC77G,KAAKqQ,OAAOk6H,mBACZ7pI,EAAQmhF,UAAW,EAEqB,aAAnC7hF,KAAKqQ,OAAOk6H,oBAAqCvqI,KAAKqQ,OAAOykM,cAAgB90M,KAAKqQ,OAAOykM,aAAa51N,SAAS4H,EAAM1L,WAAY,OACtIslB,EAAQmhF,SAAW7hF,KAAKqQ,OAAOykM,aAAa51N,SAAS4H,EAAM1L,WAAY,KAAKymG,WAGpFnhF,EAAQvgB,SAAWA,EACnBugB,EAAQsxJ,WAAWhyJ,KAAKqQ,OAAO4hJ,cAAenrK,EAAQ,IAAM,EAC5D4Z,EAAQsxJ,WAAWhyJ,KAAKqQ,OAAO4hJ,cAAenrK,EAAQ,IAAM,EAC5D4Z,EAAQskG,WAAahlG,KAAKqQ,OAAOyiI,wBAAwBx8I,QAAQxP,IAAU,EAC3EkZ,KAAK+sN,qBAAqBrsN,GAC1B,IAAIyhI,EAAQniI,KAAKi1J,gBACb/4F,EAAM,IAAIgmE,EAAAA,EAAIxhI,EAASV,KAAKqQ,QAGhC,OAFA6rD,EAAIimE,MAAwC,UAAhCniI,KAAKqQ,OAAOkwH,gBAA8BvgI,KAAKoiI,cAAc1hI,GAAS/f,OAAOwhJ,GACnFA,EAAMxhJ,OAAOqf,KAAKoiI,cAAc1hI,IAC/Bw7D,CACX,EACAwnF,EAAkBrkJ,UAAU0tN,qBAAuB,SAAUrsN,GAEzD,IADA,IAAIssN,EAAoBhtN,KAAKqQ,OAAO0mG,uBAC3B5xG,EAAI,EAAGA,EAAI6nN,EAAkB/0O,OAAQktB,KAC1CnjB,EAAAA,EAAAA,IAASgrO,EAAkB9tO,SAASimB,EAAE/pB,WAAY,KAAKwG,OAAOwhK,EAAAA,EAAAA,IAAe4pE,EAAkB9tO,SAASimB,EAAE/pB,WAAY,KAAMslB,EAAQ7a,MAAO6a,EAAQg4G,eAE3J,EACAgrC,EAAkBrkJ,UAAU+iI,cAAgB,SAAU1hI,GAGlD,IAFA,IAAIusN,EAAUjtN,KAAKqQ,OAAO4jG,aACtB/1B,EAAM,GACD/4E,EAAI,EAAGA,EAAI8nN,EAAQh1O,OAAQktB,IAChC+4E,EAAIz+F,KAAKugB,KAAKqiI,aAAa4qF,EAAQ/tO,SAASimB,EAAE/pB,WAAY,KAAMslB,EAAQwL,KAAKyB,EAAAA,EAAAA,IAAkBs/M,EAAQ/tO,SAASimB,EAAE/pB,WAAY,KAAKyuN,eAAY3uN,EAAY0lJ,EAAAA,GAAS4+E,cAAe,KAAMr6M,EAAGzE,EAAQg4G,iBAExM,OAAOx6B,CACX,EAYAwlE,EAAkBrkJ,UAAUgjI,aAAe,SAAUjjE,EAAQ8tJ,EAAOrqF,EAAU2J,EAAS2gF,EAAQz0G,GAC3F,IAAIzuB,EAAM,CACN,QAAW7qB,EAAOhxE,QAClB,aAAeuf,EAAAA,EAAAA,IAAkByxD,EAAOx9E,OAASw9E,EAAO5oE,UACxD,aAAemX,EAAAA,EAAAA,IAAkByxD,EAAO5oE,UACxC,MAAS02N,EACT,OAAU9tJ,EACV,UAAazxD,EAAAA,EAAAA,IAAkBk1H,GAAuBjC,EAAAA,GAAS/tB,KAApBgwB,EAC3C,QAAW2J,EACX,SAAYptE,EAAOyqI,SACnB,aAAgBzqI,EAAOm3C,iBAAmBn3C,EAAOm3C,kBACjD,eAAkBn3C,EAAOm3C,iBAAmBn3C,EAAOm3C,oBAAqBnpG,EAAAA,EAAAA,IAASgyD,EAAOx9E,MAAO82H,IAKnG,OAHIzuB,EAAIs4D,YAAkC,aAApBt4D,EAAI7qB,OAAO9kF,MAAuB2vG,EAAI4/G,YACxD5/G,EAAInjG,MAAQqmO,GAET,IAAIrqF,EAAAA,EAAK74C,EACpB,EACAy5D,EAAkBrkJ,UAAUikJ,YAAc,SAAUxqJ,GAChD,IAAK,IAAIqM,EAAI,EAAGA,EAAIrM,EAAM7gB,OAAQktB,IAC9BnF,KAAK+sN,qBAAqBj0N,EAAM5Z,SAASimB,EAAE/pB,WAAY,MACvD0d,EAAM5Z,SAASimB,EAAE/pB,WAAY,KAAK+mJ,MAAQniI,KAAKoiI,cAActpI,EAAM5Z,SAASimB,EAAE/pB,WAAY,MAE9F,OAAO0d,CACX,EACA4qJ,EAAkBrkJ,UAAUwtN,iBAAmB,SAAU5+N,GACrD,MAA4B,mBAArBA,EAAK0tF,aAAyD,WAArB1tF,EAAK0tF,aAA4C,QAAhB1tF,EAAKgV,QAC/E0K,EAAAA,EAAAA,IAAkB1f,EAAKwb,YAAcxb,EAAY,MAAIA,EAAKwb,WAAc,CACnF,EACOi6I,CACX,CAvHuC,sLCZnCnkH,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAwBzC0tL,EAAuC,WAMvC,SAASA,EAAsB/8M,GAC3BrQ,KAAKqQ,OAASA,CAClB,CAgJA,OA/IA+8M,EAAsB/tN,UAAUqqF,QAAU,WAItC,IAHA,IAAI15E,EAAQhQ,KACR7lB,EAAO,GACP+hF,EAAMl8D,KAAKqQ,OAAO2rE,WAAW3+E,QACxB8H,EAAI,EAAGA,EAAI+2D,EAAIjkF,OAAQktB,IAAK,CACjC,IAAIivG,EAAUl4C,EAAIh9E,SAASimB,EAAE/pB,WAAY,KAAKg5H,QAAQj2H,QAAO,SAAUihF,GACnE,QAASA,EAAO8uC,gBAAkB9uC,EAAOi9F,qBAAuBj9F,EAAOi7F,uBAChErqJ,EAAMq9M,eAAejuJ,EAChC,IACIg1C,EAAQn8H,QACRkC,EAAKsF,KAAK,CAAE20H,QAASA,GAE7B,CACA,OAAOj6H,CACX,EACAizO,EAAsB/tN,UAAUguN,eAAiB,SAAUjuJ,GACvD,YAAiClkF,IAA1BkkF,EAAO8uC,cAClB,EACAk/G,EAAsB/tN,UAAU40G,WAAa,SAAUxmG,EAAOvF,GAC1D,IAAIksG,EAAU,GAId,IAHIp0G,KAAKqQ,OAAOkyH,iBAAmB50H,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAOmyH,YAC7DpuB,EAAQ30H,KAAK,IAAI8+K,EAAAA,GAAO,CAAC,IAEzBv+J,KAAKqQ,OAAOmlG,cACZ,IAAK,IAAIrwG,EAAI,EAAGA,EAAInF,KAAKqQ,OAAOolG,cAAcrB,QAAQn8H,OAAQktB,IAC1DivG,EAAQ30H,KAAK,IAAI8+K,EAAAA,GAAO,CAAC,IAQjC,OALIv+J,KAAKqQ,OAAOqyH,kBAAoBj1H,GAChC2mG,EAAQ30H,KAAK,IAAI8+K,EAAAA,GAAO,CAAC,IAE7BnqD,EAAQ30H,KAAKyf,MAAMk1G,EAASp0G,KAAKqQ,OAAO4jG,cACxC/rG,EAAMA,IAAQuF,EAAQvF,EAAMlI,KAAKqQ,OAAOgwK,iBAAmBn4K,GACpDyF,EAAAA,EAAAA,IAAkBF,GAAS2mG,EAAUA,EAAQ/2G,MAAMoQ,EAAOvF,EACrE,EACAklN,EAAsB/tN,UAAU+gJ,aAAe,SAAUtnJ,EAAO7K,EAAMwf,EAAOvF,EAAKksG,GAC9E,GAAqB,IAAjBt7G,EAAM7gB,cACOiD,IAAT+S,IAAuBA,EAAKijE,OAC5B,MAAO,GAMf,IAHA,IAAIrrE,EAAOma,KAAKstN,iBAAiBx0N,EAAO7K,GACpC9T,EAAO,GACP+hF,EAAMl8D,KAAK0pF,UACNvkF,EAAI,EAAGA,EAAI+2D,EAAIjkF,OAAQktB,IAC5BhrB,EAAKsF,KAAKugB,KAAKutN,gBAAgBrxJ,EAAIh9E,SAASimB,EAAE/pB,WAAY,KAAMyK,EAAK3G,SAASimB,EAAE/pB,WAAY,KAAM6S,EAAOA,EAAK2vF,WAAQ1iG,EAAWuyB,EAAOvF,EAAKja,EAAOA,EAAK2yJ,eAAY1lK,EAAWk5H,IAEpL,OAAOj6H,CACX,EACAizO,EAAsB/tN,UAAUkuN,gBAAkB,SAAUC,EAAY3nO,EAAM26J,EAAK/yI,EAAOvF,EAAK04I,EAAWxsC,GACtG,IAAIl2B,EAAM,GACNuvI,EAAUztN,KAAK0tN,mBACfC,IAAqBhgN,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAOmyH,WACnDorF,EAAgBngN,EAAuC,EAA/BzN,KAAKqQ,OAAOgwK,iBACpCrgL,KAAKqQ,OAAOolG,cAAcrB,QAAQn8H,QAAU+nB,KAAKqQ,OAAOmoK,oBACxDi1C,EAAQhuO,KAAK,mBAERugB,KAAKqQ,OAAOqyH,kBAAoBj1H,IACrCggN,EAAU,CAAC,oBAGf,IADA,IAAIhvO,EAAS21H,GAAoBp0G,KAAKi0G,WAAWxmG,EAAOvF,GAC/C/C,EAAI,EAAGA,EAAI1mB,EAAOxG,OAAQktB,IAC/B+4E,EAAIz+F,KAAKugB,KAAK6tN,iBAAiBpvO,EAAOS,SAASimB,EAAE/pB,WAAY,KAAMoyO,EAAYroN,GAAKyoN,EAAe5tN,KAAK8tN,cAC9F,IAAN3oN,GAAWnF,KAAKqQ,OAAOmyH,UAAY5B,EAAAA,GAAS6+B,mBAAqB7+B,EAAAA,GAASyiB,OAAQoqE,EAAQvuO,SAASimB,EAAE/pB,WAAY,KAAMuyO,IAE/H,IAAIzxJ,EAAM,IAAIgmE,EAAAA,EAAI,CAAEr8I,KAAMA,EAAM2wC,WAAY,CAAEglF,MAAO,kBAMrD,OALAt/C,EAAIimE,MAAQjkD,EACZhiB,EAAIhwD,KAAM+2I,EAAAA,EAAAA,IAAO,YACjB/mF,EAAI0kF,UAAYA,EAChB1kF,EAAIg0I,gBAAiB,EACrBh0I,EAAI9tE,QAAU8vF,EAAIv2E,MAAK,SAAU6yG,GAAQ,OAAOA,EAAK+nC,YAAc/nC,EAAKpsH,OAAS,IAC1E8tE,CACX,EACAkxJ,EAAsB/tN,UAAUwuN,iBAAmB,SAAUzuJ,EAAQouJ,EAAY3qF,EAAU2e,EAAQmsE,GAE/F,IAAII,EAAUP,EAAWp5G,QAAQj2H,QAAO,SAAU6vO,GAAW,OAAOA,EAAQn4G,aAAez2C,EAAOx9E,KAAO,IAAG,GACxG20C,EAAQ,CACR,MAAS,CAAE,UAAa6oC,EAAOq6F,WAC/B,eAAgBr6F,EAAOlzD,IAAKplB,MAAOs4E,EAAOt4E,OAE1C06J,IACAjrH,EAAMilF,MAAQgmC,IAEd7zI,EAAAA,EAAAA,IAAkB6zI,IAAWmsE,IAC7Bp3L,EAAMilF,MAAQ,yBAElB,IAAIvxB,EAAM,CACN,QAAW7qB,EAAOhxE,QAClB,aAAeuf,EAAAA,EAAAA,IAAkBogN,GACjC,WAAcA,KAAYpgN,EAAAA,EAAAA,IAAkBogN,EAAQ7/G,gBAC7C6/G,EAAQ1xD,qBAAuB0xD,EAAQ1zD,sBAC9C,OAAU0zD,GAAW,CAAC,EACtB,WAAcx3L,EACd,SAAYssG,GAGhB,OADA54C,EAAI7qB,OAAO51E,WAAa41E,EAAO51E,WACxB,IAAIs5I,EAAAA,EAAK74C,EACpB,EACAmjI,EAAsB/tN,UAAUiuN,iBAAmB,SAAUznO,EAAMoI,GAI/D,IAHA,IAAI20I,EAAQ,GACRqrF,EAAcjuN,KAAK0pF,UACnBwkI,EAAS,CAAC,EACL/oN,EAAI,EAAGA,EAAI8oN,EAAYh2O,OAAQktB,IAAK,CACzC+oN,EAAS,CAAC,EAEV,IADA,IAAI9uJ,EAAS6uJ,EAAY/uO,SAASimB,EAAE/pB,WAAY,KAAKg5H,QAC5C59F,EAAI,EAAGA,EAAI4oD,EAAOnnF,OAAQu+B,IAC/B03M,EAASluN,KAAKwlL,YAAYpmH,EAAOlgF,SAASs3B,EAAEp7B,WAAY,KAAO6S,GAAQA,EAAK+tF,WAAc/tF,EAAOpI,EAAMqoO,GAE3GtrF,EAAMnjJ,KAAKyuO,EACf,CACA,OAAOtrF,CACX,EACAwqF,EAAsB/tN,UAAUquN,iBAAmB,WAC/C,OAAO1tN,KAAKqQ,OAAOolG,cAAcrB,QAAQt0H,KAAI,WAAc,MAAO,iBAAmB,GACzF,EACAstO,EAAsB/tN,UAAUmmL,YAAc,SAAUpmH,EAAQv5E,EAAMqoO,GAClE,IAAIt5G,EAAQx1C,EAAO9kF,KACf46D,EAAS,CAAC,EACVsxF,EAAWpnE,EAAO25C,gBAAwC,SAAU95G,GAAK,OAAOA,CAAG,EACnF3hB,EAAQuI,EACN+uH,aAAiBnmG,QACnBmmG,EAAQ,CAACx1C,EAAO9kF,OAEpB,IAAK,IAAI6qB,EAAI,EAAGA,EAAIyvG,EAAM38H,OAAQktB,IAAK,CACnC,IAAInmB,EAAMogF,EAAOx9E,MAAQ,MAAQgzH,EAAM11H,SAASimB,EAAE/pB,WAAY,KAAKiD,cAC/D8vO,EAAO/uJ,EAAOy2C,WACdl4G,EAA4C,WAAtCi3G,EAAM11H,SAASimB,EAAE/pB,WAAY,MAAqBkC,EAAM0+F,YAAch9F,KAAO1B,EAAM0+F,WAAa1+F,EAAM0+F,WAAW,GAAKh9F,IAC5Hg0N,EAAAA,EAAAA,IAAmBp+F,EAAM11H,SAASimB,EAAE/pB,WAAY,KAAMkC,EAAM0+F,WAAa1+F,EAAQuI,EAAMu5E,EAAQp/D,KAAKqQ,QACxG69M,EAAO,GAAKC,GAAQD,EAAO,GAAKC,IAAS,CAAC,EAC1CD,EAAO,GAAKC,GAAM,GAAKnvO,GAAO2e,EAC9BuwN,EAAO,GAAKC,GAAMv5G,EAAM11H,SAASimB,EAAE/pB,WAAY,OAASuyB,EAAAA,EAAAA,IAAkBhQ,GAAuB,IAAhB6oI,EAAS7oI,GACtFrgB,EAAMsE,QACNssO,EAAO,GAAKC,GAAMvsO,MAAQtE,EAAMsE,MAChCssO,EAAO,GAAKC,GAAMnvO,IAAM1B,EAAM0B,IAEtC,CAGA,OAFAk2D,EAAO17D,OAAS4lF,EAAO25C,eACvB35C,EAAOomH,YAAYtwI,GACZg5K,CACX,EACAd,EAAsB/tN,UAAUyuN,YAAc,WAC1C,OAAOltF,EAAAA,GAAS6kD,OACpB,EACO2nC,CACX,CAzJ2C,GA2JvCntE,EAA4C,SAAUx0I,GAEtD,SAASw0I,IACL,OAAkB,OAAXx0I,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAcA,OAjBAu/B,EAAU0gH,EAA4Bx0I,GAItCw0I,EAA2B5gJ,UAAUguN,eAAiB,SAAUjuJ,GAC5D,YAAsClkF,IAA/BkkF,EAAOi9F,mBAClB,EACApc,EAA2B5gJ,UAAUquN,iBAAmB,SAAU9vI,GAK9D,YAJc,IAAVA,IAAoBA,EAAQ59E,KAAKqQ,OAAOolG,cAAcrB,QAAQn8H,QAC9D+nB,KAAKqQ,OAAOmoK,qBAAuBx4K,KAAKqQ,OAAOolG,cAAcrB,QAAQn8H,SACrE2lG,GAAS,GAEN59E,KAAKqQ,OAAOolG,cAAcrB,QAAQt0H,KAAI,SAAUs+M,EAAGzrG,GAAQ,OAAOA,GAAQ/U,EAAQ,EAAI,GAAK,iBAAmB,GACzH,EACAqiE,EAA2B5gJ,UAAUyuN,YAAc,WAC/C,OAAOltF,EAAAA,GAAS8kD,YACpB,EACOzlC,CACX,CAnBgD,CAmB9CmtE,GAEEjtE,EAA8C,SAAU10I,GAExD,SAAS00I,IACL,OAAkB,OAAX10I,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAiBA,OApBAu/B,EAAU4gH,EAA8B10I,GAIxC00I,EAA6B9gJ,UAAUguN,eAAiB,SAAUjuJ,GAC9D,YAAuClkF,IAAhCkkF,EAAOi7F,oBAClB,EACAla,EAA6B9gJ,UAAUqqF,QAAU,WAE7C,MAAO,CAACj+E,EAAOpM,UAAUqqF,QAAQhqF,KAAKM,MAAM4H,QAAO,SAAUk1K,EAAM1oK,GAE3D,OADA0oK,EAAK1oE,QAAU0oE,EAAK1oE,QAAQzzH,OAAOyzB,EAAIggG,SAChC0oE,CACX,GAJU,CAAE1oE,QAAS,KAK7B,EACA+rC,EAA6B9gJ,UAAU2kD,QAAU,WAC7C,OAAoD,KAA5ChkD,KAAK0pF,UAAU,GAAG0qB,SAAW,IAAIn8H,MAC7C,EACAkoK,EAA6B9gJ,UAAUyuN,YAAc,WACjD,OAAOltF,EAAAA,GAAS+kD,cACpB,EACOxlC,CACX,CAtBkD,CAsBhDitE,oFCvNEn0G,EAAgC,WAChC,SAASA,EAAehxF,GACpBjoB,KAAK00M,KAAO,IAAI1sL,EAAAA,IACXra,EAAAA,EAAAA,IAAkBsa,KACnBjoB,KAAK00M,KAAK18L,QAAUiQ,EAE5B,CAqCA,OApCAgxF,EAAe55G,UAAU6+J,kBAAoB,SAAU1kL,GACnD,OAAIA,EAAOc,KACA0lB,KAAK00M,KAAKxsL,cAAc1uC,GAGxBwmB,KAAK00M,KAAKtsL,gBAAgB5uC,EAEzC,EACAy/H,EAAe55G,UAAU++J,kBAAoB,SAAU5kL,GACnD,OAAIA,EAAOc,KACA0lB,KAAK00M,KAAKrsL,cAAc7uC,GAGxBwmB,KAAK00M,KAAKpsL,gBAAgB9uC,EAEzC,EACAy/H,EAAe55G,UAAU4oI,SAAW,SAAU1qJ,EAAO/D,EAAQc,GACzD,MAAc,SAATA,GAA4B,aAATA,GAAgC,WAATA,IAAwBqzB,EAAAA,EAAAA,IAAkBn0B,GAI9E+D,EAHA/D,EAAO+D,EAKtB,EACA07H,EAAe55G,UAAU65G,OAAS,SAAU37H,EAAO/D,GAC/C,IAAI4F,EAAS7B,EAIb,OAHKowB,EAAAA,EAAAA,IAAkBn0B,KAAYm0B,EAAAA,EAAAA,IAAkBpwB,KACjD6B,EAAS5F,EAAO+D,IAEb6B,CACX,EACA65H,EAAe55G,UAAU+pB,WAAa,SAAUnB,IACvCta,EAAAA,EAAAA,IAAkBsa,KACnBmB,EAAAA,EAAAA,IAAWnB,EAEnB,EACOgxF,CACX,CA5CoC,4HCIhCmpE,EAAoC,WACpC,SAASA,EAAmB/xK,GACxBrQ,KAAKqQ,OAASA,CAClB,CA2bA,OA1bA+xK,EAAmB/iL,UAAUk4J,kBAAoB,WAC7C,IAGI62D,EAHAjpN,EAAI,EACJ28I,EAAU9hJ,KAAKqQ,OAAO0xI,yBACtBS,GAAQ,EAEZ,GAAIxiJ,KAAKqQ,OAAOmlG,cACZ,IAAK,IAAIvkG,EAAMjR,KAAKqQ,OAAOolG,cAAcrB,QAAQn8H,OAAQktB,EAAI8L,EAAK9L,IAC1DnF,KAAKqQ,OAAO2xI,6BAAsD,IAAxBF,EAAQxrJ,QAAQ6O,GAC1Dq9I,GAAQ,EAGZxiJ,KAAKquN,eAAe,IAAI9vD,EAAAA,GAAO,CAAExqH,MAAO,SAAW5uC,IAGvDnF,KAAKqQ,OAAOkyH,gBAAkBviI,KAAKqQ,OAAOmyH,aAC1CxiI,KAAKquN,eAAe,IAAI9vD,EAAAA,GAAO,CAAExqH,MAAO,SAAW5uC,GACnDA,KAEAnF,KAAKqQ,OAAOqyH,iBAAmD,UAAhC1iI,KAAKqQ,OAAOkwH,kBAC3CvgI,KAAKquN,eAAe,IAAI9vD,EAAAA,GAAO,CAAExqH,MAAO,SAAW5uC,GACnDA,KAGJ,IADA,IAAIivG,EAAUp0G,KAAKqQ,OAAO4jG,aACjBz9F,EAAI,EAAGA,EAAI49F,EAAQn8H,OAAQu+B,IAChCxW,KAAKquN,eAAej6G,EAAQl1H,SAASs3B,EAAEp7B,WAAY,KAAMonK,GAASxiJ,KAAKqQ,OAAO2xI,gCAA6B9mK,EAAYs7B,EAAIrR,GAE3HnF,KAAKqQ,OAAOqyH,iBAAmD,UAAhC1iI,KAAKqQ,OAAOkwH,iBAC3CvgI,KAAKquN,eAAe,IAAI9vD,EAAAA,GAAO,CAAExqH,MAAO,SAAWqgE,EAAQn8H,QAE/Dm2O,EAAoBpuN,KAAKmlM,cAAcnlM,KAAKqQ,OAAO4jG,cACzB,SAAtBj0G,KAAKqQ,OAAO0jC,QAAmE,IAA/C/zC,KAAKqQ,OAAO0jC,MAAM34D,WAAWkb,QAAQ,MACrE0J,KAAKolM,yBAAyBgpB,EAEtC,EACAhsC,EAAmB/iL,UAAU+lM,yBAA2B,SAAUkpB,GAC9D,IAAIC,EAAa,EACb1yJ,EAAa77D,KAAKqQ,OAAO4jG,aAAa91H,QAAO,SAAU8gB,GACvD,OAAO0O,EAAAA,EAAAA,IAAkB1O,EAAE80C,QAAsB,SAAZ90C,EAAE80C,KAC3C,IACA,GAAI8nB,EAAW5jF,OAAQ,CAMfs2O,GALC5gN,EAAAA,EAAAA,IAAkB3N,KAAKqQ,OAAO0jC,QAAgC,SAAtB/zC,KAAKqQ,OAAO0jC,OACtB,kBAAvB/zC,KAAKqQ,OAAO0jC,QAA2D,IAApC/zC,KAAKqQ,OAAO0jC,MAAMz9C,QAAQ,KAIxD0J,KAAKqQ,OAAOrtB,QAAQkgD,wBAAwB6Q,MAAQu6K,GAHtB,kBAAtBtuN,KAAKqQ,OAAO0jC,MAAqB70D,SAAS8gB,KAAKqQ,OAAO0jC,MAAO,IAAM/zC,KAAKqQ,OAAO0jC,OAASu6K,EAMjH,IADA,IAAIE,EAAU,EACLjgN,EAAK,EAAGkgN,EAAe5yJ,EAAYttD,EAAKkgN,EAAax2O,OAAQs2B,IAAM,CACxE,IAAIomG,EAAO85G,EAAalgN,GACxBigN,IAAY7gN,EAAAA,EAAAA,IAAkBgnG,EAAKswF,UACuD,EAA3D,kBAAlBtwF,EAAKswF,SAAwB/lN,SAASy1H,EAAKswF,SAAU,IAAMtwF,EAAKswF,QACjF,CACA,IAAK,IAAI9/L,EAAI,EAAGA,EAAI02D,EAAW5jF,OAAQktB,IAAK,CACzB,IAAXmpN,GAAgBtuN,KAAKqQ,OAAOmkJ,eAAiBx0J,KAAK0uN,oBAAuBvpN,IAAM02D,EAAW5jF,OAAS,GACnG+nB,KAAK2uN,wBAAwB9yJ,GAEjC,IAAI/0E,EAAQkZ,KAAKqQ,OAAO2iJ,sBAAsBn3F,EAAW38E,SAASimB,EAAE/pB,WAAY,KAAKwG,OAASoe,KAAKqQ,OAAOgwK,iBAC3F,IAAXiuC,GAAgBC,EAAaC,EAC7BxuN,KAAKsiE,SAASzG,EAAW38E,SAASimB,EAAE/pB,WAAY,KAAK6pN,SAAUn+M,GAE/C,IAAXwnO,GAAgBC,EAAaC,GAClCxuN,KAAKsiE,SAAS,GAAIx7E,GAAO,EAEjC,CACJ,CACJ,EACAs7L,EAAmB/iL,UAAUsvN,wBAA0B,SAAU9yJ,GAC7D,IAAK,IAAIzyB,EAAI,EAAGA,EAAIyyB,EAAW5jF,OAAQmxD,IAC/BA,IAAMyyB,EAAW5jF,OAAS,IAC1B4jF,EAAW38E,SAASkqD,EAAEhuD,WAAY,KAAK24D,MAAQ,IAC/C/zC,KAAKsiE,SAAS,IAAKtiE,KAAKqQ,OAAO2iJ,sBAAsBn3F,EAAW38E,SAASkqD,EAAEhuD,WAAY,KAAKwG,QAGxG,EACAwgM,EAAmB/iL,UAAUgvN,eAAiB,SAAUjvJ,EAAQt4E,EAAOq+C,GACnE,KAAInlC,KAAKqQ,OAAO4jG,aAAah8H,OAAS,GAAtC,CAGA,IAAIilM,GAAcvvK,EAAAA,EAAAA,IAAkB7mB,GAASkZ,KAAKqQ,OAAOq+I,yBAAyBtvF,EAAOlzD,KAAOplB,EAC5F8nO,EAAS5uN,KAAK6uN,SAASzvJ,GACvB8lI,EAAallM,KAAKmlM,cAAcnlM,KAAKqQ,OAAO4jG,cACjC,OAAX26G,IACA5uN,KAAKsiE,SAASssJ,EAAQ1xC,GACI,SAAtBl9K,KAAKqQ,OAAO0jC,QAAmE,IAA/C/zC,KAAKqQ,OAAO0jC,MAAM34D,WAAWkb,QAAQ,MACrE0J,KAAKolM,yBAAyBF,IAE7BllM,KAAKqQ,OAAOmkJ,eAA4B,WAAXrvH,GAAyBnlC,KAAKqQ,OAAO26H,oBAAsBhrI,KAAKqQ,OAAOmkJ,gBACrGx0J,KAAK+8L,kBAET/8L,KAAKqQ,OAAO0W,OAAOsyH,EAAAA,IAAoB,CAAEvyJ,MAAOo2L,EAAanpI,MAAO66K,EAAQxvJ,OAAQA,EAAQj6B,OAAQA,IAZxG,CAcJ,EACAi9I,EAAmB/iL,UAAUijE,SAAW,SAAUvuB,EAAOjtD,EAAOwU,GACxD0E,KAAKqQ,OAAOolG,cAAcrB,QAAQn8H,OAAS6O,IAASg+M,EAAAA,EAAAA,IAAkB9kM,KAAKqQ,UAE3E0jC,GAAS,GADU/zC,KAAKqQ,OAAOrtB,QAAQy0C,YACV,KAAKtW,QAAQ,GAAK,KAEnD,IAGIsjL,EAHAh0K,EAASzwB,KAAKqQ,OAAOszH,iBACrBp9E,EAAUvmD,KAAKqQ,OAAOm7H,kBACtBsjF,GAASh9M,EAAAA,EAAAA,IAAWiiC,GAEpBu0G,EAAUtoJ,KAAKqQ,OAAO26H,mBACtB+0E,EAAc//M,KAAKqQ,OAAOqyH,gBAC9B4lB,EAAUA,GAAWy3D,EAAcz3D,EAAU,EAAIA,EACjD,IA8CIo8C,EA9CA//C,EAAO3kJ,KAAKqQ,OAAO4wH,mBAAmB1uH,cAAc,IAAMsrG,EAAAA,IAC1D6qC,EAAQ1oJ,KAAKqQ,OAAO21I,aAAazzI,cAAc,IAAMsrG,EAAAA,IACrDkxG,EAAa/uN,KAAKqQ,OAAO0+I,4BACzBigE,EAAchvN,KAAKqQ,OAAO+iJ,6BAC1B21B,EAAe/oL,KAAKqQ,OAAO2+I,yBAC3Bs7C,EAA6B,IAAfykB,GAAoC,IAAhBC,EACtC,GAAI1mE,GAAWxhK,GAASwhK,EAAS,CAC7B,IAAK3D,IAASA,EAAKpyI,cAAcsrG,EAAAA,IAC7B,OAEJ4mF,EAAY9/C,EACPpyI,cAAcsrG,EAAAA,GAAoB,4BAA4BjmI,SAASkP,EAAQwhK,EACxF,MACK,GAAItoJ,KAAKqQ,OAAO2xI,4BAA8BsG,GAAWtoJ,KAAKqQ,OAAOw3I,cAAcgI,WACjFlL,EAAKthH,WAAa,EAAG,CAExBohK,GADIpnE,EAAWsnB,EAAKpyI,cAAcsrG,EAAAA,KACbjmI,SAAUylJ,EAASzlJ,SAASK,OAAS,EAAK6O,EACnE,MACK,GAAIwjN,EAAa,CAClB,IAAInsK,OAAS,EACb,GAAI4wL,IAAeC,EAEf7wL,GADAr3C,EAAQi5N,EAAcj5N,EAAQ,EAAIA,GACjBioO,EAAat+L,EAASk0H,OAEtC,IAAKoqE,GAAcC,EACpB7wL,EAASr3C,GAASiiM,EAAet4J,EAASk0H,OAEzC,GAAIoqE,GAAcC,EAAa,CAChCloO,EAAQi5N,EAAcj5N,EAAQ,EAAIA,EAClC,IAAIomN,EAAQltM,KAAKqQ,OAAO2wH,uBACxB7iG,EAASr3C,EAAQioO,EAAat+L,EAAS3pC,EAASioO,EAAahmC,EAAgBpkC,EAAOuoD,CACxF,CAEA,KADAzI,EAAYzkM,KAAKivN,6BAA6BnoO,EAAOioO,EAAYhmC,EAAc5qJ,IAE3E,MAER,MAEIsmK,EAAYh0K,EAAOle,cAAcsrG,EAAAA,IAAmBjmI,SAASsH,SAAS4H,EAAM1L,WAAY,KAS5F,GAPIqpN,IAAcnpM,EACdmpM,EAAUltK,MAAMwc,MAAQ+6K,EAEnBrqB,GAAanpM,IAClBmpM,EAAUltK,MAAMwc,MAAQ,IAGxBu0G,GAAWxhK,GAASwhK,EACpBo8C,EAAa1kM,KAAKqQ,OAAO21I,aAAazzI,cAAc,IAAMsrG,EAAAA,IACrDtrG,cAAcsrG,EAAAA,GAAoB,4BAA4BjmI,SAASkP,EAAQwhK,QAEnF,GAAItoJ,KAAKqQ,OAAO2xI,4BAA8BsG,GAAWtoJ,KAAKqQ,OAAOw3I,cAAcgI,WACjFnH,EAAMrlH,WAAa,EAAG,CACzB,IAAIg6F,EAEJqnE,GAFIrnE,EAAWr9H,KAAKqQ,OAAO21I,aAAazzI,cAAc,IAAMsrG,EAAAA,IACvDtrG,cAAcsrG,EAAAA,KACGjmI,SAAUylJ,EAASzlJ,SAASK,OAAS,EAAK6O,EACpE,MACK,GAAIwjN,EAAa,CACdnsK,OAAS,EAOb,GANI4wL,IAAeC,IACf7wL,EAASr3C,EAAQioO,EAAaxoK,EAAUmiG,IAEvCqmE,GAAcC,IACf7wL,EAASr3C,GAASiiM,EAAexiI,EAAUmiG,GAE3CqmE,GAAcC,EAAa,CAC3B,IAAInjE,EAAS7rJ,KAAKqQ,OAAO21I,aAAazzI,cAAc,2BACpD4rB,EAASr3C,EAAQioO,EAAaxoK,EAAUz/D,EAASioO,EAAahmC,EAAgBrgC,EAAQmD,CAC1F,CACA64C,EAAa1kM,KAAKivN,6BAA6BnoO,EAAOioO,EAAYhmC,EAAc5qJ,EACpF,MAEIumK,EAAan+I,EAAQh0C,cAAcsrG,EAAAA,IAAmBjmI,SAASsH,SAAS4H,EAAM1L,WAAY,KAY9F,GAVIspN,IAAeppM,GACXopM,EAAWntK,MAAMwc,QAAU0wJ,EAAUltK,MAAMwc,OAAS/zC,KAAKqQ,OAAOyxH,gBAAkB9hI,KAAKqQ,OAAsB,eAC7GrQ,KAAKqQ,OAAsB,cAAErtB,SAAWgd,KAAKqQ,OAAsB,cAAE6+M,cACrExqB,EAAWntK,MAAMuiB,QAAU95C,KAAKqQ,OAAO2/J,iBAAiBlpL,GAAOsH,QAAU,GAAK,QAElFs2M,EAAWntK,MAAMwc,MAAQ+6K,GAEpBpqB,GAAcppM,IACnBopM,EAAWntK,MAAMwc,MAAQ,KAExB/zC,KAAKqQ,OAAO2xI,2BAA4B,CAGzC,IAFA,IAAI/O,EAAOjzI,KAAKqQ,OAAOrtB,QAAQ8tB,iBAAiB,0BAC5Cq+M,EAAe,GACVhqN,EAAI,EAAGA,EAAI8tI,EAAKh7J,OAAQktB,IAC7B,IAAIwgH,EAAAA,EAAAA,IAAastB,EAAK/zJ,SAASimB,EAAE/pB,WAAY,KAAM,UAAUwJ,KAAOob,KAAKqQ,OAAOrtB,QAAQ4B,GACpF,IAAK,IAAI4xB,EAAI,EAAGA,EAAIy8H,EAAK/zJ,SAASimB,EAAE/pB,WAAY,KAAKm3B,cAAc,YAAY36B,SAASK,OAAQu+B,IAC5F24M,EAAa1vO,KAAKwzJ,EAAK/zJ,SAASimB,EAAE/pB,WAAY,KAAKm3B,cAAc,YAAY36B,SAASsH,SAASs3B,EAAEp7B,WAAY,MAIrH63J,EAAKh7J,QAAUk3O,EAAal3O,SAC5Bk3O,EAAajwO,SAAS4H,EAAM1L,WAAY,KAAKm8C,MAAMwc,MAAQ+6K,EAEnE,CACI9uN,KAAKqQ,OAAOyxH,gBACZ9hI,KAAKqlM,wBAEb,EACAjjB,EAAmB/iL,UAAU4vN,6BAA+B,SAAUnoO,EAAO48C,EAAMquI,EAASj7I,GACxF,IAAKA,IAAQA,EAAIvkB,cAAcsrG,EAAAA,IAC3B,OAAO,KAEX,IAAIzJ,EAAUp0G,KAAKqQ,OAAO4jG,aACtBv6D,EAAS15C,KAAKqQ,OAAOqyH,gBACrB0sF,EAAUpvN,KAAKqQ,OAAOkwH,gBAEtBlD,EAAW,GAAGhgI,MAAMqC,KAAKo3B,EAAIvkB,cAAcsrG,EAAAA,GAAoB,4BAA4BjmI,UAgB/F,MAfgB,UAAZw3O,GAAuB11K,GAAU5yD,IAAWirL,EAAU/xK,KAAKqQ,OAAO+iJ,6BACtD/1B,EAASA,EAASplJ,OAAS,GAElCyhE,IAAqB,IAAX5yD,EACHu2I,EAAS,GAEmC,SAAnDjpB,EAAQl1H,SAAS4H,EAAM1L,WAAY,KAAKse,OACjC2jI,EAAS3jF,EAAU5yD,EAAQ,EAAKA,GAEY,UAAnDstH,EAAQl1H,SAAS4H,EAAM1L,WAAY,KAAKse,OACjC2jI,EAASv2I,GAAS48C,EAAOquI,IAGzB10C,EAASv2I,EAAQ48C,EAGrC,EAKA0+I,EAAmB/iL,UAAUgmM,uBAAyB,WAClD,IAAIp3M,EAAO,CAAE1G,QAAQ,GAErB,GADAyY,KAAKqQ,OAAO0W,OAAOs3H,EAAAA,IAA4BpwJ,IAC3CA,EAAK1G,OAAT,CAGA,IAAI4oD,GAAcqyI,EAAAA,EAAAA,MACd6sC,EAAkBrvN,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,sBACpD+8M,EAAmBtvN,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,uBACrDg9M,EAAgBvvN,KAAKqQ,OAAO21I,aAAazzI,cAAc,IAAMsrG,EAAAA,IAC7D42C,EAAiBz0J,KAAKqQ,OAAO21I,aAAazzI,cAAc,IAAMsrG,EAAAA,IAC9D2xG,EAAcD,EAAct3L,kBAAkBiL,wBAAwB6Q,MACtE07K,EAAeh7D,EAAex8H,kBAAkBiL,wBAAwB6Q,MAK5E,GAJoC,UAAhC/zC,KAAKqQ,OAAOkwH,kBACZivF,GAA4Br/K,GAEhCk/K,EAAgB93L,MAAMwc,MAAQy7K,EAAc,KACxCxvN,KAAKqQ,OAAOkwH,kBAAoB1iB,EAAAA,GAAoB,CACpD,IAAI6xG,EAAuB1vN,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,6BACzDo9M,EAAmB3vN,KAAKqQ,OAAO21I,aAAazzI,cAAc,2BACzD0lB,kBAAkBiL,wBAAwB6Q,MACpB,SAAvB/zC,KAAKqQ,OAAO2jC,SACZ27K,GAAsCx/K,GAE1Cu/K,EAAqBn4L,MAAMwc,MAAQ47K,EAAmB,IAC1D,KACK,CACD,GAAI3vN,KAAKqQ,OAAO2xI,2BAA4B,CACxC,IAAI4tE,EAAc5vN,KAAKqQ,OAAOy8L,2BAA2Bv6L,cAAc,mBACnEq9M,IACAH,EAAeG,EAAYz/K,YAEnC,CACoC,UAAhCnwC,KAAKqQ,OAAOkwH,iBAAsD,SAAvBvgI,KAAKqQ,OAAO2jC,SACvDy7K,GAA8Bt/K,EAEtC,CACAm/K,EAAiBr3L,kBAAkBV,MAAMwc,MAAQ07K,EAAe,IAhChE,CAiCJ,EACArtC,EAAmB/iL,UAAU0jL,kBAAoB,SAAU//L,GAGvD,OAFegd,KAAK6vN,uBAAuB7sO,EAAS,YACzCgd,KAAK6vN,uBAAuB7sO,EAAS,OAEpD,EACAo/L,EAAmB/iL,UAAUwwN,uBAAyB,SAAU7sO,EAASykF,GAIrE,IAHA,IAAIqoJ,EAAU9sO,EAAQykF,EAAY,kBAC9BroF,EAAS,EACTw3C,EAAY,CAACinF,EAAAA,GAAqBA,EAAAA,GAAqB,kBAAmB,cAAe,YAAa,kBACnGiyG,GACCl5L,EAAUjvB,MAAK,SAAUpqB,GAAS,OAAOuyO,EAAQl5L,UAAUM,SAAS35C,EAAQ,MAC5E6B,GAAU0wO,EAAQ77K,cAEtB67K,EAAUA,EAAQroJ,EAAY,kBAElC,OAAOroF,CACX,EACAgjM,EAAmB/iL,UAAUqvN,iBAAmB,WAC5C,IAAIqB,EAAkB/vN,KAAKqQ,OAAO4jG,aAAa91H,QAAO,SAAUg4H,GAC5D,OAAOxoG,EAAAA,EAAAA,IAAkBwoG,EAAIpiE,SAAUpmC,EAAAA,EAAAA,IAAkBwoG,EAAI8uF,SACjE,IAAGhtN,OACH,OAAQ+nB,KAAKqQ,OAAO4jG,aAAah8H,SAAW83O,CAChD,EACA3tC,EAAmB/iL,UAAUwvN,SAAW,SAAUzvJ,GAS9C,IARIzxD,EAAAA,EAAAA,IAAkByxD,EAAOrrB,QAAU/zC,KAAKqQ,OAAOmkJ,gBAC5C7mJ,EAAAA,EAAAA,IAAkByxD,EAAO6lI,YAAcjlM,KAAK0uN,qBAC/CtvJ,EAAOrrB,MAAQ,KAEf/zC,KAAKqQ,OAAOyxH,iBAAkBn0H,EAAAA,EAAAA,IAAkByxD,EAAOrrB,SACtDqrB,EAAO0vF,uBAAyBjxC,EAAAA,IAAuBz+C,EAAO0vF,uBAAyBjxC,EAAAA,MACxFz+C,EAAOrrB,MAAQ,MAEdqrB,EAAOrrB,MACR,OAAO,KAEX,IAAIA,EAAQ70D,SAASkgF,EAAOrrB,MAAM34D,WAAY,IAC9C,OAAIgkF,EAAO6lI,UAAYlxJ,EAAQ70D,SAASkgF,EAAO6lI,SAAS7pN,WAAY,IACzDgkF,EAAO6lI,SAER7lI,EAAOupD,UAAY50E,EAAQ70D,SAASkgF,EAAOupD,SAASvtI,WAAY,IAC/DgkF,EAAOupD,SAGPvpD,EAAOrrB,KAEtB,EACAquI,EAAmB/iL,UAAU8lM,cAAgB,SAAU/wF,GAEnD,IADA,IAAIk6G,EAAS,EACJ//M,EAAK,EAAGmpG,EAAYtD,EAAS7lG,EAAKmpG,EAAUz/H,OAAQs2B,IAAM,CAC/D,IAAI6wD,EAASs4C,EAAUnpG,GACnBqgN,EAAS5uN,KAAK6uN,SAASzvJ,GACN,SAAjBA,EAAOrrB,QACP66K,EAAS,IAEU,IAAnBxvJ,EAAOhxE,SAAgC,OAAXwgO,IAC5BN,GAAUpvO,SAAS0vO,EAAOxzO,WAAY,IAE9C,CACA,OAAOkzO,CACX,EACAlsC,EAAmB/iL,UAAU2wN,4BAA8B,SAAUC,GACjE,IAAI77G,EAAUp0G,KAAKqQ,OAAO4jG,aAAa52G,QACnCqmC,EAAO1jC,KAAKqQ,OAAO0+I,6BAA+B/uJ,KAAKqQ,OAAO26H,mBAC9D+mC,EAAU/xK,KAAKqQ,OAAO2+I,yBACtBrrH,EAAQ3jC,KAAKqQ,OAAO+iJ,6BAexB,MAdkB,YAAd68D,GACItsL,GACAywE,EAAQvtF,OAAO6c,EAAOquI,EAAS39D,EAAQn8H,QAEvCyrD,GACA0wE,EAAQvtF,OAAO,EAAG6c,IAGH,gBAAdusL,EACL77G,EAAQvtF,OAAO6c,EAAM0wE,EAAQn8H,QAEV,iBAAdg4O,GACL77G,EAAQvtF,OAAO,EAAG6c,EAAOquI,IAEtBjgK,EAAAA,EAAAA,IAAW9R,KAAKmlM,cAAc/wF,GACzC,EACAguE,EAAmB/iL,UAAU6wN,2BAA6B,WACtD,IAAIC,EAAcnwN,KAAKgwN,4BAA4B,gBACnDG,EAAcnwN,KAAKowN,eAAiB,OAASD,EAC7C,IAAIE,EAAYrwN,KAAKqQ,OAAO4wH,mBAAmB1uH,cAAc,0BACxDA,cAAc,IAAMsrG,EAAAA,GAAiB,yBACtCyyG,EAAStwN,KAAKqQ,OAAO21I,aAAazzI,cAAc,2BAC/CA,cAAc,IAAMsrG,EAAAA,GAAiB,yBAC1CwyG,EAAU94L,MAAMwc,MAAQo8K,EACxBG,EAAO/4L,MAAMwc,MAAQo8K,CACzB,EACA/tC,EAAmB/iL,UAAUkxN,0BAA4B,WACrD,IAAIJ,EAAcnwN,KAAKgwN,4BAA4B,eACnDG,EAAcnwN,KAAKowN,eAAiB,OAASD,EAC7CnwN,KAAKqQ,OAAOszH,iBAAiBpsG,MAAMwc,MAAQo8K,EAC3CnwN,KAAKqQ,OAAOm7H,kBAAkBj0G,MAAMwc,MAAQo8K,CAChD,EACA/tC,EAAmB/iL,UAAUmxN,uBAAyB,WAClD,IAAIf,EAAe,GACfgB,EAAiBzwN,KAAKqQ,OAAO4jG,aAAa91H,QAAO,SAAU8gB,GAAK,OAAO0O,EAAAA,EAAAA,IAAkB1O,EAAE80C,MAAQ,IAAG97D,QAAU,EAChHy4O,EAAc1wN,KAAKqQ,OAAO4jG,aAAa91H,QAAO,SAAU8gB,GAAK,MAAoB,SAAZA,EAAE80C,KAAmB,IAAG97D,QAAU,EACvG64N,EAAgB9wM,KAAKqQ,OAAO4wH,mBAAmB1uH,cAAc,IAAMsrG,EAAAA,IACnE42C,EAAiBz0J,KAAKqQ,OAAO21I,aAAazzI,cAAc,IAAMsrG,EAAAA,IACjC,kBAAtB79G,KAAKqQ,OAAO0jC,OAAuB08K,GAAmBC,GAAgB1wN,KAAKqQ,OAAO81L,aAAawqB,cAGhGF,GAAmBC,IACzBjB,EAAezvN,KAAKgwN,4BAA4B,YAHhDP,GAAe39M,EAAAA,EAAAA,IAAW9R,KAAKqQ,OAAO0jC,MAAQ70D,SAAS8gB,KAAKgwN,4BAA4B,UAAU/7N,MAAM,MAAM,GAAI,IAAM,GAK5Hw7N,EAAezvN,KAAKowN,eAAiB,OAASX,EAC1C3e,EAAc74K,oBACV64K,EAAc74K,kBAAkBrB,UAAUM,SAAS,kBACnD45K,EAAchtJ,WAAW,GAAGvsB,MAAMwc,MAAQ07K,EAG1C3e,EAAc74K,kBAAkBV,MAAMwc,MAAQ07K,GAGlDh7D,EAAex8H,kBAAkBrB,UAAUM,SAAS,kBACpDu9H,EAAe3wG,WAAW,GAAGvsB,MAAMwc,MAAQ07K,EAG3Ch7D,EAAex8H,kBAAkBV,MAAMwc,MAAQ07K,CAEvD,EACArtC,EAAmB/iL,UAAUuxN,0BAA4B,WACrD,IAAIT,EAAcnwN,KAAKgwN,4BAA4B,UACnDG,EAAcnwN,KAAKowN,eAAiB,OAASD,EAC7CnwN,KAAKqQ,OAAOrtB,QAAQ8tB,iBAAiB,0BAA0B,GAAGymB,MAAMwc,MAAQo8K,CACpF,EACA/tC,EAAmB/iL,UAAUwxN,2BAA6B,WACtD,IAAIpB,EAAezvN,KAAKgwN,4BAA4B,WACpDP,EAAezvN,KAAKowN,eAAiB,OAASX,EAC9CzvN,KAAKqQ,OAAOrtB,QAAQ8tB,iBAAiB,0BAA0B,GAAGymB,MAAMwc,MAAQ07K,CACpF,EACArtC,EAAmB/iL,UAAU09L,gBAAkB,WAC3C,IAAIuxB,GAASx8M,EAAAA,EAAAA,IAAW9R,KAAKmlM,cAAcnlM,KAAKqQ,OAAO4jG,eACnDj0G,KAAKqQ,OAAOyxH,iBACR9hI,KAAKqQ,OAAO26H,oBAAsBhrI,KAAKqQ,OAAO0+I,8BAC9C/uJ,KAAKuwN,4BAETvwN,KAAKwwN,yBACDxwN,KAAKqQ,OAAO+iJ,8BACZpzJ,KAAKkwN,gCAILlwN,KAAKqQ,OAAOkyH,gBAAkBviI,KAAKqQ,OAAOmyH,YAC1CxiI,KAAKquN,eAAe,IAAI9vD,EAAAA,GAAO,CAAExqH,MAAO,UAE5Cu6K,EAAStuN,KAAKowN,eAAiB,OAAS9B,EACxCtuN,KAAKqQ,OAAOszH,iBAAiBpsG,MAAMwc,MAAQu6K,EAC3CtuN,KAAKqQ,OAAOm7H,kBAAkBj0G,MAAMwc,MAAQu6K,GAEhD,IAAIr7E,EAAOjzI,KAAKqQ,OAAOrtB,QAAQuvB,cAAc,0BACzC0gI,GAAQjzI,KAAKqQ,OAAO26H,oBACpBhrI,KAAK4wN,4BACL5wN,KAAK6wN,8BAEA59E,IACLA,EAAK17G,MAAMwc,MAAQu6K,EAE3B,EACAlsC,EAAmB/iL,UAAU+wN,aAAe,WACxC,OAAOpwN,KAAKqQ,OAAOmkJ,eAAqD,SAApCx0J,KAAKqQ,OAAO+1L,eAAeh9M,IACnE,EACOg5L,CACX,CA/bwC,0ECc7BxhH,YAtBPkwJ,EACK,QADLA,EAES,aAFTA,EAGO,UAHPA,EAIU,qBAJVA,EAKY,gBALZA,EAMY,gBANZA,EAOW,eAPXA,EAQW,eARXA,EASkB,uBATlBA,EAUW,eAVXA,EAWe,oBAXfA,EAYU,cAZVA,EAaa,iBAbbA,EAcc,mBAddA,EAegB,qBAfhBA,EAgBgB,sBAOpB,SAAWlwJ,GACP,IAKImwJ,EACA7uJ,GAAoB,EA+CxB,SAAS8uJ,EAAiB/iO,GACtBgjO,EAAgBhjO,EAAK0yE,eAAgB1yE,EAAKjL,SAC1CiL,EAAKjL,QAAQ6gB,iBAAiB,SAAS,WACnC,IAAIwM,EAAS6gN,EAAclxN,OACvBqQ,EAAOumB,UAAUM,SAAS,kBAAoB7mB,EAAOumB,UAAUM,SAAS,cACrE7mB,EAAOumB,UAAUM,SAAS,cAC7B7mB,EAAOumB,UAAUzB,IAAI,iBAEG,SAAxBlnC,EAAK0yE,gBACLzwD,YAAW,WACP0wD,EAAMC,eAAe5yE,EAAKjL,QAASqtB,EACvC,GAAG,GAEX,IACApiB,EAAKjL,QAAQ6gB,iBAAiB,QAAQ,WAClC,IAAIwM,EAAS6gN,EAAclxN,OACvBqQ,EAAOumB,UAAUM,SAAS,kBAAoB7mB,EAAOumB,UAAUM,SAAS,cACrE7mB,EAAOumB,UAAUM,SAAS,cAC7B7mB,EAAOumB,UAAUjB,OAAO,iBAEA,SAAxB1nC,EAAK0yE,gBAAoD,KAAvB1yE,EAAKjL,QAAQzF,OAC/C2yB,YAAW,WACP0wD,EAAMC,eAAe5yE,EAAKjL,QAASqtB,EACvC,GAAG,GAEX,IACApiB,EAAKjL,QAAQ6gB,iBAAiB,SAAS,WACnCotN,EAAgBF,EAAW9iO,EAAKjL,QACpC,GACJ,CAEA,SAASiuO,EAAgBtwJ,EAAgBG,GACrC,IAAI09C,EAAa19C,EAAavjF,MAC1B4xH,EAAcruC,EAAa7nB,cAC3Bk4K,EAAchiH,EAAYl2D,cACX,KAAfulE,IAAsB7wG,EAAAA,EAAAA,IAAkB6wG,GAQhB,WAAnB79C,IACDwuC,GAAeA,EAAYv4E,UAAUM,SAAS,iBAC9Ci4E,EAAYv4E,UAAUjB,OAAO,iBAExBw7L,GAAeA,EAAYv6L,UAAUM,SAAS,kBACnDi6L,EAAYv6L,UAAUjB,OAAO,kBAZ7Bw5E,GAAeA,EAAYv4E,UAAUM,SAAS,iBAC9Ci4E,EAAYv4E,UAAUzB,IAAI,iBAErBg8L,GAAeA,EAAYv6L,UAAUM,SAAS,kBACnDi6L,EAAYv6L,UAAUzB,IAAI,gBAWtC,CACA,SAASi8L,IACL,IAAIx4O,EAAQs4O,EAAclxN,MAAMwkC,uBAAuB,gBAAgB,IAClE72B,EAAAA,EAAAA,IAAkB/0B,MACnB69C,EAAAA,EAAAA,IAAS,CAAC79C,GAAQk4O,GACdl4O,EAAMg+C,UAAUM,SAAS45L,KACzB35L,EAAAA,EAAAA,IAAY,CAACv+C,GAAQk4O,GAGjC,CACA,SAASO,IACL,IAAIhhN,EAAS6gN,EAAclxN,MAC3B,GAAKqQ,EAAOQ,qBAAqB,YAAY,GAA2D,KAArDR,EAAOQ,qBAAqB,YAAY,GAAGtzB,MACxC,KAAlD8yB,EAAOQ,qBAAqB,SAAS,GAAGtzB,MAAc,CACtD,IAAI3E,EAAQy3B,EAAOm0B,uBAAuB,gBAAgB,IACrD72B,EAAAA,EAAAA,IAAkB/0B,KACfA,EAAMg+C,UAAUM,SAAS45L,KACzB35L,EAAAA,EAAAA,IAAY,CAACv+C,GAAQk4O,IAEzBr6L,EAAAA,EAAAA,IAAS,CAAC79C,GAAQk4O,GAE1B,CACJ,CACA,SAASQ,EAAmBtuO,GACxBA,EAAQ6gB,iBAAiB,QAASutN,GAClCpuO,EAAQ6gB,iBAAiB,OAAQwtN,EACrC,CAMA,SAASE,EAAoBtjO,EAAMo2G,EAAamtH,GAC5C,IAAIC,GAAe9jN,EAAAA,EAAAA,IAAkB6jN,GAAiD5gN,EAAAA,GAAxB4gN,EAClC,SAAxBvjO,EAAK0yE,gBACL2wJ,EAAmBrjO,EAAKjL,UAExB2qB,EAAAA,EAAAA,IAAkB02F,EAAYrjC,YAC9BqjC,EAAYrjC,UAAY0wJ,EAAqBzjO,EAAM6iO,EAAuBA,EAA2B,MAAOW,GAC5GptH,EAAYrjC,UAAUpqC,UAAUzB,IAAI27L,GAChC7iO,EAAKjL,QAAQstB,YACbriB,EAAKjL,QAAQstB,WAAW0nB,aAAaqsE,EAAYrjC,UAAW/yE,EAAKjL,YAIhE2qB,EAAAA,EAAAA,IAAkB1f,EAAK0jO,YACxBttH,EAAYrjC,UAAUpqC,UAAUzB,IAAI27L,GAExCzsH,EAAYrjC,UAAUpqC,UAAUzB,IAAI27L,IAExC,IAAIc,EAAkBH,EAAY,OAAQ,CAAEx2O,UAAW61O,IACnD3/G,EAAoBsgH,EAAY,QAAS,CAAEx2O,UAAW61O,IAgB1D,IAfKnjN,EAAAA,EAAAA,IAAkB1f,EAAKjL,QAAQ4B,KAA2B,KAApBqJ,EAAKjL,QAAQ4B,KACpDusH,EAAkBvsH,GAAK,SAAWqJ,EAAKjL,QAAQ4B,GAAG6R,QAAQ,KAAM,MAChE+/B,EAAAA,EAAAA,IAAWvoC,EAAKjL,QAAS,CAAE,kBAAmBmuH,EAAkBvsH,OAE/D+oB,EAAAA,EAAAA,IAAkB1f,EAAKjL,QAAQ0+E,cAA6C,KAA7BzzE,EAAKjL,QAAQ0+E,cAC7DyvC,EAAkBh3C,UAAY03J,EAAkB5jO,EAAKjL,QAAQ0+E,aAC7DzzE,EAAKjL,QAAQk+C,gBAAgB,iBAE5BvzB,EAAAA,EAAAA,IAAkB1f,EAAKmoC,cAAgBzoB,EAAAA,EAAAA,IAAkB1f,EAAKmoC,WAAWsrC,cAC1C,KAAhCzzE,EAAKmoC,WAAWsrC,cAChByvC,EAAkBh3C,UAAY03J,EAAkB5jO,EAAKmoC,WAAWsrC,cAE/DyvC,EAAkBh3C,WACnBkqC,EAAYrjC,UAAUpqC,UAAUzB,IAAI27L,GAEpCzsH,EAAYrjC,UAAUpqC,UAAUM,SAAS,qBAAsB,CAC/D,IAAI46L,EAAYztH,EAAYrjC,UAAUzuD,cAAc,oBACpDu/M,EAAU3gN,YAAYljB,EAAKjL,SAC3B8uO,EAAU3gN,YAAYygN,GACtBE,EAAU3gN,YAAYggG,EAC1B,MAEI9M,EAAYrjC,UAAU7vD,YAAYljB,EAAKjL,SACvCqhH,EAAYrjC,UAAU7vD,YAAYygN,GAClCvtH,EAAYrjC,UAAU7vD,YAAYggG,GAEtC4gH,EAAiB9jO,EAAKjL,QAAQzF,MAAO4zH,GACT,WAAxBljH,EAAK0yE,iBACDwwC,EAAkBv6E,UAAUM,SAAS45L,KACrC35L,EAAAA,EAAAA,IAAY,CAACg6E,GAAoB2/G,IAErCr6L,EAAAA,EAAAA,IAAS,CAAC06E,GAAoB2/G,IAEN,SAAxB7iO,EAAK0yE,iBAEL1yE,EAAKjL,QAAQ6gB,iBAAiB,SAAS,SAAU9hB,GAC7CgwO,EAAiB9jO,EAAKjL,QAAQzF,MAAO4zH,EAAmBljH,EAAKjL,QACjE,IAEAiL,EAAKjL,QAAQ6gB,iBAAiB,QAAQ,SAAU9hB,GAC5CgwO,EAAiB9jO,EAAKjL,QAAQzF,MAAO4zH,EACzC,MAECxjG,EAAAA,EAAAA,IAAkB1f,EAAKjL,QAAQo+C,aAAa,QAC7C+vE,EAAkB76E,aAAa,MAAOroC,EAAKjL,QAAQo+C,aAAa,MAExE,CACA,SAAS4wL,EAAoB13O,EAAM0mF,GAClB,WAAT1mF,GAAqB0mF,EAAUpqC,UAAUM,SAAS,cAClD8pC,EAAUpqC,UAAUzB,IAAI,gBAEhC,CA2BA,SAASmsC,EAAgB/jF,EAAO+sH,EAAQjpC,IAC/B1zD,EAAAA,EAAAA,IAAkB28F,KACf/sH,IAAU8jF,GACVlqC,EAAAA,EAAAA,IAAY,CAACmzE,GAASwmH,IAGtBr6L,EAAAA,EAAAA,IAAS,CAAC6zE,GAASwmH,GAG/B,CACA,SAASiB,EAAiBx0O,EAAO3E,EAAOoK,SACpB,IAAZA,IAAsBA,EAAU,MAChCzF,KACAk5C,EAAAA,EAAAA,IAAS,CAAC79C,GAAQk4O,GACdl4O,EAAMg+C,UAAUM,SAAS45L,KACzB35L,EAAAA,EAAAA,IAAY,CAACv+C,GAAQk4O,KAIK,MAAX9tO,GAAkBA,IAAY4f,SAASmjE,iBAElDntF,EAAMg+C,UAAUM,SAAS45L,KACzB35L,EAAAA,EAAAA,IAAY,CAACv+C,GAAQk4O,IAEzBr6L,EAAAA,EAAAA,IAAS,CAAC79C,GAAQk4O,GAG9B,CACA,SAASI,EAAcluO,GACnB,IAAIstB,GAAa3C,EAAAA,EAAAA,IAAkB3qB,EAAQstB,YAActtB,EACnDA,EAAQstB,WAId,OAHIA,GAAcA,EAAWsmB,UAAUM,SAAS,qBAC5C5mB,EAAaA,EAAWA,YAErBA,CACX,CAsBA,SAAS2hN,EAAmBjvO,EAASsnH,EAAQtpC,SACf9lF,IAAtBgnF,GAAmCA,IACnCooC,EAAOzmG,iBAAiB,SAAS,SAAU9hB,GACjCiB,EAAQ4zC,UAAUM,SAAS45L,IAAuB9tO,EAAQkvO,WAC5DnwO,EAAM2uD,iBACF1tD,IAAY4f,SAASmjE,eACrB/iF,EAAQyuB,QAEZzuB,EAAQzF,MAAQ,IAChBk5C,EAAAA,EAAAA,IAAS,CAAC6zE,GAASwmH,GAE3B,IAGJ9tO,EAAQ6gB,iBAAiB,SAAS,SAAU9hB,GACxCu/E,EAAgBt+E,EAAQzF,MAAO+sH,EACnC,IAEAtnH,EAAQ6gB,iBAAiB,SAAS,SAAU9hB,GACxCu/E,EAAgBt+E,EAAQzF,MAAO+sH,EAAQtnH,EAAQkvO,SACnD,IAEAlvO,EAAQ6gB,iBAAiB,QAAQ,SAAU9hB,GACvCmuB,YAAW,YACFvC,EAAAA,EAAAA,IAAkB28F,MACnB7zE,EAAAA,EAAAA,IAAS,CAAC6zE,GAASwmH,GACnBxmH,IAAU38F,EAAAA,EAAAA,IAAkB3qB,IAAYA,EAAQ4zC,UAAUM,SAAS,cAAgB,KAAOozE,EAElG,GAAG,IACP,GACJ,CAMA,SAAS6nH,EAAcnvO,EAAS29E,GAE5B,GADauwJ,EAAcluO,GAChB4zC,UAAUM,SAAS45L,IAA6C,SAAnBnwJ,EAA2B,CAC/E,IAAI/nF,EAAQs4O,EAAcluO,GAASwhD,uBAAuB,gBAAgB,GAC1EutL,EAAiB/uO,EAAQzF,MAAO3E,EAAOoK,EAC3C,CACJ,CAIA,SAAS0uO,EAAqBzjO,EAAMhT,EAAWm3O,EAAU7nK,EAAKinK,GAC1D,IACIxwJ,EADAywJ,GAAe9jN,EAAAA,EAAAA,IAAkB6jN,GAAiD5gN,EAAAA,GAAxB4gN,EAU9D,OARK7jN,EAAAA,EAAAA,IAAkB1f,EAAK0jO,WAKxB3wJ,EAAYywJ,EAAYlnK,EAAK,CAAEtvE,UAAWA,KAJ1C+lF,EAAYywJ,EAAYxjO,EAAK0jO,UAAW,CAAE12O,UAAWA,KAC3C27C,UAAUzB,IAAIi9L,GAK5BpxJ,EAAUpqC,UAAUzB,IAAI,qBACjB6rC,CACX,CACA,SAAS6wJ,EAAkBnwJ,GACvB,IAAItiF,EAAS,GACb,KAAKuuB,EAAAA,EAAAA,IAAkB+zD,IAAgC,KAAhBA,EAAoB,CACvD,IAAIw6G,EAAUt5K,SAASgO,cAAc,QACrCsrK,EAAQ3qK,UAAY,wBAA0BmwD,EAAc,MAE5DtiF,EADmB88L,EAAQtkM,SAAS,GACf8pF,WACzB,CACA,OAAOtiF,CACX,CAgDA,SAASmmF,EAAYplF,EAAUu2C,EAAU47E,IAChC3kG,EAAAA,EAAAA,IAAkB2kG,IAA0B,KAAbA,IAChCn7E,EAAAA,EAAAA,IAAYT,EAAU47E,EAASr+G,MAAM,OAEpC0Z,EAAAA,EAAAA,IAAkBxtB,IAA0B,KAAbA,IAChCs2C,EAAAA,EAAAA,IAASC,EAAUv2C,EAAS8T,MAAM,KAE1C,CAWA,SAAS4sE,EAAe79E,EAASg+E,EAAWlK,GACxC,IAAIu7J,EAA8B,gBAAfv7J,EAA+B9zE,EAAUA,EAAQy1D,YAAcv5D,SAASglD,iBAAiBlhD,EAAS,MAAMmhD,iBAAiB,gBAAiB,KACxJx2B,EAAAA,EAAAA,IAAkBqzD,EAAUx8B,uBAAuB,wBAAwB,MACxEw8B,EAAUx8B,uBAAuB,wBAAwB,GAAG5N,UAAUM,SAAS,0BAC/E8pC,EAAUx8B,uBAAuB,wBAAwB,GAAG5N,UAAUjB,OAAO,0BAE7E08L,EAAerxJ,EAAUx8B,uBAAuB,wBAAwB,GAAGiU,aAAe45K,IAAiBrxJ,EAAUx8B,uBAAuB,wBAAwB,GAAGiU,cACvKuoB,EAAUx8B,uBAAuB,wBAAwB,GAAG5N,UAAUzB,IAAI,yBAGtF,CA8BA,SAASi1C,EAAe1I,EAAa1+E,GACjC0+E,EAAcmwJ,EAAkBnwJ,GAChC,IAAIzoB,EAAgBi4K,EAAcluO,GAC9Bi2D,EAAcriB,UAAUM,SAAS45L,IAC5BnjN,EAAAA,EAAAA,IAAkB+zD,IAAgC,KAAhBA,GAMnCzoB,EAAcriB,UAAUzB,IAAI27L,GAC5B73K,EAAczU,uBAAuB,wBAAwB,GAAKyU,EAAczU,uBAAuBssL,GAAsB,GAAGl5O,SAAS,GAAGkvE,YAAc,GAAK7N,EAAczU,uBAAuBssL,GAAsB,GAAGhqK,YAAc,KAN3O7N,EAAczU,uBAAuB,wBAAwB,GAAKyU,EAAczU,uBAAuBssL,GAAsB,GAAGl5O,SAAS,GAAGkvE,YAAc4a,EAAczoB,EAAczU,uBAAuBssL,GAAsB,GAAGhqK,YAAc4a,EACpPzoB,EAAcriB,UAAUjB,OAAOm7L,GAC/B9tO,EAAQk+C,gBAAgB,iBAQvBvzB,EAAAA,EAAAA,IAAkB+zD,IAAgC,KAAhBA,EAInC1+E,EAAQk+C,gBAAgB,gBAHxB1K,EAAAA,EAAAA,IAAWxzC,EAAS,CAAE,YAAe0+E,GAMjD,CAaA,SAAS2I,EAAYioJ,EAAYtvO,EAAS29E,GAClC2xJ,GACA97L,EAAAA,EAAAA,IAAWxzC,EAAS,CAAEq+E,SAAU,KAGhCr+E,EAAQk+C,gBAAgB,aAEvBvzB,EAAAA,EAAAA,IAAkBgzD,IACnBwxJ,EAAcnvO,EAAS29E,EAE/B,CAaA,SAAS2J,EAAaq0D,EAAOjoG,GACrBioG,GACAloG,EAAAA,EAAAA,IAASC,EAAUo6L,IAGnB35L,EAAAA,EAAAA,IAAYT,EAAUo6L,EAE9B,CAaA,SAAS/1O,EAAW84J,EAAU7wJ,EAAS29E,EAAgB4xJ,GACnD,IAAIC,EAAgB,CAAE,SAAY,WAAY,gBAAiB,QAC3DC,IAAkB9kN,EAAAA,EAAAA,IAAkB4kN,GACpC1+E,GACA7wJ,EAAQ4zC,UAAUjB,OAAOm7L,GACzBjoJ,EAAiB2pJ,EAAexvO,GAC5ByvO,IACAt7L,EAAAA,EAAAA,IAAY,CAACo7L,GAAiBzB,KAIlC9tO,EAAQ4zC,UAAUzB,IAAI27L,GACtB1tO,EAAcovO,EAAexvO,GACzByvO,IACAh8L,EAAAA,EAAAA,IAAS,CAAC87L,GAAiBzB,KAG9BnjN,EAAAA,EAAAA,IAAkBgzD,IACnBwxJ,EAAcnvO,EAAS29E,EAE/B,CAEA,SAAS4J,EAAemoJ,EAAS1vO,EAASqhH,EAAaO,EAAS4sH,GAC5D,IAAIC,GAAe9jN,EAAAA,EAAAA,IAAkB6jN,GAAiD5gN,EAAAA,GAAxB4gN,EAC1DkB,EACAruH,EAAYpgC,YAvSpB,SAA2BjhF,EAASqhH,EAAaO,EAAS4sH,GACtD,IACIlnH,IADe38F,EAAAA,EAAAA,IAAkB6jN,GAAiD5gN,EAAAA,GAAxB4gN,GACrC,OAAQ,CAAEv2O,UAAW61O,IAC1C9vJ,EAAYqjC,EAAYrjC,UAY5B,OAXKrzD,EAAAA,EAAAA,IAAkBi3F,IAIDP,EAAYrjC,UAAUpqC,UAAUM,SAAS45L,GACvDzsH,EAAYrjC,UAAUzuD,cAAc,IAAMu+M,GAAwB9tO,GAC1DimF,sBAAsB,WAAYqhC,GAL9CtpC,EAAU7vD,YAAYm5F,IAO1B7zE,EAAAA,EAAAA,IAAS,CAAC6zE,GAASwmH,GACnBmB,EAAmBjvO,EAASsnH,GAC5BA,EAAOh0E,aAAa,aAAc,SAC3Bg0E,CACX,CAuRkCqoH,CAAkB3vO,EAASqhH,EAAaO,EAAS6sH,KAG3E97L,EAAAA,EAAAA,IAAO0uE,EAAYpgC,aACnBogC,EAAYpgC,YAAc,KAElC,CAaA,SAAS4E,EAAiBtyC,EAAOvzC,GAC7B,IAAK,IAAIurB,EAAK,EAAGvoB,EAAKnH,OAAOC,KAAKy3C,GAAQhoB,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAC5D,IAAIvvB,EAAMgH,EAAGuoB,GACT0qC,EAAgBi4K,EAAcluO,GACtB,aAARhE,GACAgE,EAAQ4zC,UAAUjB,OAAOm7L,GAEjB,aAAR9xO,GAAsBi6D,EAAcriB,UAAUM,SAAS45L,IACvD73K,EAAcriB,UAAUjB,OAAOm7L,GAEvB,gBAAR9xO,GAAyBi6D,EAAcriB,UAAUM,SAAS45L,GAC1D73K,EAAczU,uBAAuBssL,GAAsB,GAAGhqK,YAAc,GAG5E9jE,EAAQk+C,gBAAgBliD,EAEhC,CACJ,CAaA,SAASoE,EAAcmzC,EAAOvzC,GAC1B,IAAK,IAAIurB,EAAK,EAAGvoB,EAAKnH,OAAOC,KAAKy3C,GAAQhoB,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAC5D,IAAIvvB,EAAMgH,EAAGuoB,GACT0qC,EAAgBi4K,EAAcluO,GACtB,aAARhE,GACAgE,EAAQ4zC,UAAUzB,IAAI27L,GAEd,aAAR9xO,GAAsBi6D,EAAcriB,UAAUM,SAAS45L,IACvD73K,EAAcriB,UAAUzB,IAAI27L,GAEpB,gBAAR9xO,GAAyBi6D,EAAcriB,UAAUM,SAAS45L,GAC1D73K,EAAczU,uBAAuBssL,GAAsB,GAAGhqK,YAAcvwB,EAAM,GAAKv3C,GAGvFgE,EAAQszC,aAAat3C,EAAKu3C,EAAM,GAAKv3C,GAE7C,CACJ,CA0EA,SAAS4zO,EAAkBvuH,EAAaotH,GACpC,GAAIptH,EAAYztE,UAAUM,SAAS,cAAgBmtE,EAAY7/D,uBAAuB,gBAAgB,GAAI,CACtG,IAAIquL,EAAmBpB,EAAY,OAAQ,CAAEx2O,UAAW61O,IACxD+B,EAAiBthN,UAAY8yF,EAAY7/D,uBAAuB,gBAAgB,GAAGjzB,UACnF8yF,EAAY7/D,uBAAuB,gBAAgB,GAAGjzB,UAAY,GAClE8yF,EAAY7/D,uBAAuB,gBAAgB,GAAGrzB,YAAY0hN,EACtE,CACJ,CAmBA,SAASC,EAAgBC,EAAU/xJ,EAAWspC,GAC1C,IAAI0oH,EAAa,GACjBA,EAAWvzO,KAAK6qH,GAChB,IAAIrpC,GAAUtzD,EAAAA,EAAAA,IAAkB28F,GAC5BtpC,EAAUlwD,iBAAiB,uBAAyBkiN,EACxD,GAAID,GAAY9xJ,EAAQhpF,OAAS,EAC7B,IAAK,IAAI6O,EAAQ,EAAGA,EAAQm6E,EAAQhpF,OAAQ6O,IACxCm6E,EAAQ/hF,SAAS4H,EAAM1L,aAAayoB,iBAAiB,YAAaovN,GAAoB,GACtFhyJ,EAAQ/hF,SAAS4H,EAAM1L,aAAayoB,iBAAiB,UAAWqvN,GAAkB,QAGrF,GAAIjyJ,EAAQhpF,OAAS,EACtB,IAAS6O,EAAQ,EAAGA,EAAQm6E,EAAQhpF,OAAQ6O,IACxCm6E,EAAQ/hF,SAAS4H,EAAM1L,aAAa0oB,oBAAoB,YAAamvN,EAAoBjzN,MACzFihE,EAAQ/hF,SAAS4H,EAAM1L,aAAa0oB,oBAAoB,UAAWovN,EAAkBlzN,KAGjG,CAMA,SAASizN,IAIL,IAFA,IAPoBjyJ,EAAWspC,EAQ3BmoD,EAAYzyJ,KAAKi5C,eACbw5G,EAAU77H,UAAUM,SAAS,kBACjCu7H,EAAYA,EAAUx5G,cAVKqxD,EAOrBtqG,MAPUghE,EAYLyxF,GAXA77H,UAAUM,SAAS,eAAkB8pC,EAAUzuD,cAAc,SAAS2/M,UACjF5nH,EAAO1zE,UAAUzB,IAAI,qBAW7B,CACA,SAAS+9L,IAEL,IAAIp8L,EAAM92B,KACVkQ,YAAW,WACP4mB,EAAIF,UAAUjB,OAAO,qBACzB,GAAG,IACP,CACA,SAASw9L,EAAc9rG,EAAWoqG,GAC9B,IAAInnH,EAASmnH,EAAY,OAAQ,CAAEx2O,UAAWosI,IAE9C,OADA/c,EAAO1zE,UAAUzB,IAAI,sBACdm1E,CACX,CA+CA,SAAS8oH,EAAY/rG,EAAWrmD,EAAWF,EAAc0wJ,GAErD,IAAIC,GAAe9jN,EAAAA,EAAAA,IAAkB6jN,GAAiD5gN,EAAAA,GAAxB4gN,EAC1DlnH,EAAS6oH,EAAc9rG,EAAWoqG,GACtCzwJ,EAAUpqC,UAAUzB,IAAI,qBACxB,IAAIk+L,EAAeryJ,EAAUzuD,cAAc,oBAC3C,IAAI5E,EAAAA,EAAAA,IAAkB0lN,GAAe,CACjCA,EAAe5B,EAAY,OAAQ,CAAEx2O,UAAW,oBAChD6lF,EAAaxwD,WAAW0nB,aAAaq7L,EAAcvyJ,GACnD,IAAI1hF,EAAS4hF,EAAUlwD,iBAAiBgwD,EAAa3qC,QAAU,QAC/Dk9L,EAAaliN,YAAY2vD,GACzB,IAAK,IAAI37D,EAAI,EAAGA,EAAI/lB,EAAOnH,OAAQktB,IAAK,CACpC,IAAIniB,EAAU5D,EAAOF,SAASimB,EAAE/pB,aAC5B69D,EAAgBo6K,EAAap6K,cAC3Bj2D,EAAQ4zC,UAAUM,SAAS,kBAAuB+hB,GAAiBA,EAAcriB,UAAUM,SAAS,cAAgB+hB,IACtHo6K,EAAaliN,YAAYnuB,EAEjC,CACJ,CAGA,OAFAqwO,EAAa/iN,WAAW0nB,aAAasyE,EAAQ+oH,GAC7CP,GAAgB,EAAM9xJ,EAAWspC,GAC1BA,CACX,CAYA,SAAStyB,EAAWqvC,EAAWrmD,EAAWwwJ,GACtC,IACIlnH,EAAS6oH,EAAc9rG,GADR15G,EAAAA,EAAAA,IAAkB6jN,GAAiD5gN,EAAAA,GAAxB4gN,GAM9D,OAJYxwJ,EAAUpqC,UAAUM,SAAS,qBAAwB8pC,EAAUzuD,cAAc,oBACrFyuD,GACC7vD,YAAYm5F,GACjBwoH,GAAgB,EAAM9xJ,EAAWspC,GAC1BA,CACX,CAEA,SAASgpH,EAAkBC,EAAkBz6N,GACtB,WAAfA,EAAMxe,KACNi5O,EAAiB38L,UAAUzB,IAAI,YAE1Bo+L,EAAiB38L,UAAUM,SAAS,aACzCq8L,EAAiB38L,UAAUjB,OAAO,WAE1C,CAvzBAirC,EAAMa,YAtCN,SAAqBxzE,EAAMujO,GACvB,IAAIC,GAAe9jN,EAAAA,EAAAA,IAAkB6jN,GAAiD5gN,EAAAA,GAAxB4gN,EAC1DntH,EAAc,CAAErjC,UAAW,KAAMC,QAAS,GAAIgD,YAAa,MAqB/D,GApBA8sJ,EAAY9iO,EAAK0yE,eACjBuB,EAAoBj0E,EAAKk0E,iBACrBx0D,EAAAA,EAAAA,IAAkB1f,EAAK0yE,iBAA2C,UAAxB1yE,EAAK0yE,gBAC/C0jC,EAAYrjC,UAAY0wJ,EAAqBzjO,EAAM6iO,EAAuBA,EAA2B,OAAQW,GAC7GxjO,EAAKjL,QAAQstB,WAAW0nB,aAAaqsE,EAAYrjC,UAAW/yE,EAAKjL,UACjEyzC,EAAAA,EAAAA,IAAS,CAACxoC,EAAKjL,SAAU8tO,GACzBzsH,EAAYrjC,UAAU7vD,YAAYljB,EAAKjL,UAGvCuuO,EAAoBtjO,EAAMo2G,EAAaotH,GAE3CT,EAAiB/iO,IACZ0f,EAAAA,EAAAA,IAAkB1f,EAAKmoC,cAAgBzoB,EAAAA,EAAAA,IAAkB1f,EAAKmoC,WAAWgsC,mBAC1En0E,EAAKmoC,WAAWgsC,kBAChBmI,EAAet8E,EAAKmoC,WAAWgsC,gBAAiBn0E,EAAKjL,QAASqhH,GAAa,EAAMotH,GACjFptH,EAAYpgC,YAAY3tC,aAAa,OAAQ,UACzC+tE,EAAYrjC,UAAUpqC,UAAUM,SAAS45L,KACzCr6L,EAAAA,EAAAA,IAAS,CAAC4tE,EAAYrjC,WAAY8vJ,MAGrCnjN,EAAAA,EAAAA,IAAkB1f,EAAKgzE,SACxB,IAAK,IAAI97D,EAAI,EAAGA,EAAIlX,EAAKgzE,QAAQhpF,OAAQktB,IACrCk/F,EAAYpjC,QAAQxhF,KAAKu4F,EAAW/pF,EAAKgzE,QAAQ97D,GAAIk/F,EAAYrjC,UAAWywJ,IAWpF,OARK9jN,EAAAA,EAAAA,IAAkB1f,EAAKjL,UAAqC,aAAzBiL,EAAKjL,QAAQmzC,UACjDM,EAAAA,EAAAA,IAAS,CAAC4tE,EAAYrjC,WAAY8vJ,GAEtCwC,EAAkBjvH,EAAYrjC,UAAW/yE,EAAKjL,SAE9C4vO,GADAvuH,EAkKJ,SAA0Bp2G,EAAMo2G,GAC5B,KAAK12F,EAAAA,EAAAA,IAAkB1f,EAAKmoC,YACxB,IAAK,IAAI7nB,EAAK,EAAGvoB,EAAKnH,OAAOC,KAAKmP,EAAKmoC,YAAa7nB,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAEtE,OADWvoB,EAAGuoB,IAEV,IAAK,WACDg3D,EAAYt3E,EAAKmoC,WAAWj2C,SAAU,CAACkkH,EAAYrjC,YACnDgxJ,EAAoB/jO,EAAK0yE,eAAgB0jC,EAAYrjC,WACrD,MACJ,IAAK,UACDjmF,EAAWkT,EAAKmoC,WAAWl9C,QAAS+U,EAAKjL,QAASiL,EAAK0yE,eAAgB0jC,EAAYrjC,WACnF,MACJ,IAAK,YACDsJ,EAAar8E,EAAKmoC,WAAWuU,UAAW,CAAC05D,EAAYrjC,YACrD,MACJ,IAAK,cACDoJ,EAAen8E,EAAKmoC,WAAWsrC,YAAazzE,EAAKjL,SACjD,MACJ,IAAK,WACDqnF,EAAYp8E,EAAKmoC,WAAWirC,SAAUpzE,EAAKjL,SAGvD,CAEJ,OAAOqhH,CACX,CA3LkBmvH,CAAiBvlO,EAAMo2G,IACPrjC,UAAWywJ,GAEvBptH,EACXA,CACX,EAgCAzjC,EAAMowJ,iBAAmBA,EAgDzBpwJ,EAAM0wJ,mBAAqBA,EA+L3B1wJ,EAAMqxJ,mBAAqBA,EAI3BrxJ,EAAMl5C,QAHN,WACsB,IACtB,EAsEAk5C,EAAM5+E,SAxBN,SAAkBzE,EAAOyF,EAAS29E,EAAgBsD,GAQ9C,GAPAjhF,EAAQzF,MAAQA,EACO,SAAnBojF,GAAuC,KAAVpjF,GAC7BsjF,EAAe79E,EAASA,EAAQi2D,gBAE9BtrC,EAAAA,EAAAA,IAAkBgzD,IAAuC,SAAnBA,GACxCwxJ,EAAcnvO,EAAS29E,KAEtBhzD,EAAAA,EAAAA,IAAkBs2D,IAAgBA,EAAa,CAChD,IAAIhrB,EAAgBi4K,EAAcluO,GAClC,KAAK2qB,EAAAA,EAAAA,IAAkBsrC,GAAgB,CACnC,IAAIqxD,EAASrxD,EAAczU,uBAAuBssL,GAAsB,IACnEnjN,EAAAA,EAAAA,IAAkB28F,KACftnH,EAAQzF,SAAUowB,EAAAA,EAAAA,IAAkBsrC,IAAkBA,EAAcriB,UAAUM,SAAS,kBACvFC,EAAAA,EAAAA,IAAY,CAACmzE,GAASwmH,IAGtBr6L,EAAAA,EAAAA,IAAS,CAAC6zE,GAASwmH,GAG/B,CACJ,CACAG,EAAgBtwJ,EAAgB39E,EACpC,EAqBA49E,EAAM2E,YAAcA,EAqBpB3E,EAAMC,eAAiBA,EAmBvBD,EAAM0B,SATN,SAAkBvuB,EAAOitB,GACA,kBAAVjtB,EACPitB,EAAUzpC,MAAMwc,OAAQjiC,EAAAA,EAAAA,IAAWiiC,GAEb,kBAAVA,IACZitB,EAAUzpC,MAAMwc,MAASA,EAAM3rC,MAAM,WAAe2rC,GAAUjiC,EAAAA,EAAAA,IAAWiiC,IAE7E8sB,EAAeG,EAAUu6C,WAAYv6C,EACzC,EAkCAJ,EAAMwJ,eAAiBA,EAuBvBxJ,EAAMyJ,YAAcA,EAoBpBzJ,EAAM0J,aAAeA,EAiCrB1J,EAAM7lF,WAAaA,EAWnB6lF,EAAM2J,eAAiBA,EA8BvB3J,EAAMiI,iBAAmBA,EA8BzBjI,EAAMx9E,cAAgBA,EAmBtBw9E,EAAM4J,eAlBN,SAAwB1xE,GACpB,IAzf0B9V,EAyftBg+E,EAAYloE,EAAMkoE,UACtB,KAAKrzD,EAAAA,EAAAA,IAAkBqzD,IAAcA,EAAUpqC,UAAUM,SAAS45L,GAAwB,CACtF,IAAI2C,EAAWzyJ,EAAUzuD,cAAc,YAAcyuD,EAAUzuD,cAAc,YACzEyuD,EAAUzuD,cAAc,SACxBmvD,EAAcV,EAAUzuD,cAAc,IAAMu+M,GAAsBhqK,YAClEmd,EAA2D,OAA7CjD,EAAUzuD,cAAc,kBAC1CgmB,EAAAA,EAAAA,IAAOyoC,EAAUzuD,cAAc,IAAMu+M,KACrCv4L,EAAAA,EAAAA,IAAOyoC,EAAUzuD,cAAc,IAAMu+M,KACrCl6L,EAAAA,EAAAA,IAAUoqC,EAAW,CAAC8vJ,GAAwB,CAACA,KAjgBzB9tO,EAkgBDywO,GAjgBjB3vN,oBAAoB,QAASstN,GACrCpuO,EAAQ8gB,oBAAoB,OAAQutN,IAigBhC76L,EAAAA,EAAAA,IAAWi9L,EAAU,CAAE,YAAe/xJ,IACtC+xJ,EAAS78L,UAAUzB,IAAI27L,GAClB7sJ,GAAoC,UAArBwvJ,EAASt9L,SACzBs9L,EAASvyL,gBAAgB,WAEjC,CACJ,EA2CA0/B,EAAM6J,YAzCN,SAAqB3xE,EAAOxe,EAAMonF,EAAa8vJ,GAC3C,IAAIC,GAAe9jN,EAAAA,EAAAA,IAAkB6jN,GAAiD5gN,EAAAA,GAAxB4gN,EAC1DxwJ,GAAY5nC,EAAAA,EAAAA,IAAQtgC,EAAO,IAAMg4N,GAErC,GADAC,EAAYz2O,EACC,UAATA,EAAkB,CAClB,IAAIq3O,EAAY3wJ,EAAU7qC,QAEtBloC,EAAO,CAAEjL,QAAS8V,EAAO6nE,eAAgBrmF,EACzCq3O,UAFJA,EAA0B,QAAdA,GAAqC,SAAdA,EAAuBA,EAAY,KAE5Cv7L,WAAY,CAAEsrC,YAAaA,IACjDgyJ,EAAU1yJ,EAAUzuD,cAAc,iBAClCohN,EAAW,CAAE3yJ,UAAWA,GAC5BloE,EAAM89B,UAAUjB,OAAOm7L,GACvBS,EAAoBtjO,EAAM0lO,EAAUlC,GACpCmB,EAAkBe,EAAS3yJ,UAAWywJ,GACtC5wJ,EAAe5yE,EAAKjL,QAAS2wO,EAAS3yJ,WACtC,IAAI4yJ,EAAgB5yJ,EAAUpqC,UAAUM,SAAS,qBACjD,IAAIvpB,EAAAA,EAAAA,IAAkB+lN,GAClB,GAAIE,EAEAF,EADgB1yJ,EAAUzuD,cAAc,oBACpBA,cAAc,4BAGlCmhN,EAAU1yJ,EAAUzuD,cAAc,uBAG1C,IAAI5E,EAAAA,EAAAA,IAAkB+lN,GACdE,IACAF,EAAU1yJ,EAAUzuD,cAAc,4BAGrC,CACD,IAAIshN,EAAY7yJ,EAAUzuD,cAAc,IAAMu+M,GAC1CgD,EAAY9yJ,EAAUzuD,cAAc,IAAMu+M,GAC1C7nK,EAAU2qK,EAAgB5yJ,EAAUzuD,cAAc,oBAAsByuD,EAC5E/X,EAAQjxB,aAAal/B,EAAO46N,GAC5BzqK,EAAQjxB,aAAa67L,EAAWH,GAChCzqK,EAAQjxB,aAAa87L,EAAWJ,EACpC,CACJ,CACA1B,EAAoB13O,EAAMwe,EAAMmgD,cACpC,EAqBA2nB,EAAMgyJ,kBAAoBA,EAiB1BhyJ,EAAMmzJ,UALN,SAAmBhB,EAAUY,GACzB,IAAK,IAAIxuN,EAAI,EAAGA,EAAIwuN,EAAS17O,OAAQktB,IACjC2tN,EAAgBC,EAAUY,EAASz0O,SAASimB,EAAE/pB,aAAa4lF,UAEnE,EA+EAJ,EAAMozJ,QApBN,SAAiB7hL,EAAU8hL,EAAOjzJ,EAAWloE,EAAOo7N,GAEhD,IAAI90O,EAA4B,kBAAX60O,EAAsBA,EAAMhgO,MAAM,KACjDggO,EACN,GAA+B,WAA3B9hL,EAAS9zD,cACT,IAAK,IAAIkwB,EAAK,EAAG45B,EAAW/oD,EAAQmvB,EAAK45B,EAASlwD,OAAQs2B,IAAM,CAE5DypE,EADW7vC,EAAS55B,GACHyyD,EAAWkzJ,EAChC,MAGA,IAAK,IAAIluO,EAAK,EAAGmuO,EAAW/0O,EAAQ4G,EAAKmuO,EAASl8O,OAAQ+N,IAAM,CAE5DotO,EADWe,EAASnuO,GACFg7E,EAAWloE,EAAOo7N,EACxC,CAEAlzJ,EAAUx8B,uBAAuB,sBAAsB,IAAMw8B,EAAUx8B,uBAAuB,yBAAyB,IACvHw8B,EAAUx8B,uBAAuB,yBAAyB,GAAG5N,UAAUzB,IAAI,SAEnF,EAqCAyrC,EAAMwyJ,YAAcA,EAoBpBxyJ,EAAMoX,WAAaA,EASnBpX,EAAM0yJ,kBAAoBA,CAC7B,CA92BD,CA82BG1yJ,IAAUA,EAAQ,CAAC,+FCx4BlBrhC,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAazCC,EAA0C,SAAUC,EAAYzB,EAAQn/C,EAAK6gD,GAC7E,IAA2H3pB,EAAvHD,EAAI5X,UAAUpmB,OAAQ4O,EAAIovB,EAAI,EAAIkoB,EAAkB,OAAT0B,EAAgBA,EAAOhhD,OAAOihD,yBAAyB3B,EAAQn/C,GAAO6gD,EACrH,GAAuB,kBAAZ/gC,SAAoD,oBAArBA,QAAQihC,SAAyBl5C,EAAIiY,QAAQihC,SAASH,EAAYzB,EAAQn/C,EAAK6gD,QACpH,IAAK,IAAI16B,EAAIy6B,EAAW3nD,OAAS,EAAGktB,GAAK,EAAGA,KAAS+Q,EAAI0pB,EAAWz6B,MAAIte,GAAKovB,EAAI,EAAIC,EAAErvB,GAAKovB,EAAI,EAAIC,EAAEioB,EAAQn/C,EAAK6H,GAAKqvB,EAAEioB,EAAQn/C,KAAS6H,GAChJ,OAAOovB,EAAI,GAAKpvB,GAAKhI,OAAOs1C,eAAegK,EAAQn/C,EAAK6H,GAAIA,CAChE,EAQIutO,EAAW,qBACXC,EAAS,YAETx0J,EAAQ,UACRy0J,EAAY,YACZC,EAAY,YACZC,EAAY,IAAIxrN,OAAO,gBAIvByrN,EAAgB,gBAEhBtpJ,EAAoB,CAAC,QAAS,QAAS,SACvCupJ,EAAmB,EAanBn7O,EAAgC,SAAUkyB,GAQ1C,SAASlyB,EAAemnB,EAAS1d,GAC7B,IAAIgtB,EAAQvE,EAAO/L,KAAKM,KAAMU,EAAS1d,IAAYgd,KAMnD,OALAgQ,EAAM44C,OAAQ,EACd54C,EAAMmiD,eAAgB,EACtBniD,EAAMy7C,WAAY,EAClBz7C,EAAM2kN,iBAAkB,EACxB3kN,EAAM4kN,eAAiBl0N,EAChBsP,CACX,CA+yCA,OA9zCAuvB,EAAUhmD,EAAgBkyB,GAgB1BlyB,EAAe8lB,UAAU+rC,UAAY,WACjCprC,KAAK60N,eAAgB,EACrB70N,KAAK80N,iBAAmB,IAExB90N,KAAK+0N,UAAY,IAAI/rN,OAAO,gBAC5BhJ,KAAKg1N,UAAW,EAChB,IAAIvqK,GAAar9C,EAAAA,EAAAA,IAAS,gBAAiBpN,KAAKhd,SAKhD,GAJAgd,KAAKksE,aAAelsE,KAAKhd,QAAQouB,WAAU,IAC3C+lB,EAAAA,EAAAA,IAAY,CAACn3B,KAAKksE,cAAe,CA1C3B,YADE,mBA2C8C,UACtDlsE,KAAKi1N,eAAiB,KACtBj1N,KAAKk1N,SAAU97L,EAAAA,EAAAA,IAAQp5B,KAAKhd,QAAS,QACR,uBAAzBgd,KAAKhd,QAAQmzC,QAAkC,CAC/Cn2B,KAAKi1N,eAAiBj1N,KAAKhd,QAAQmzC,QAGnC,IAFA,IAAIr9B,EAAQkH,KAAK4Q,cAAc,SAC3B9pB,EAAQ,EACAA,EAAQkZ,KAAKhd,QAAQwzC,WAAWv+C,OAAQ6O,IAAS,CACzD,IAAIquO,EAAgBn1N,KAAKhd,QAAQwzC,WAAW1vC,GAAO4jE,SAC7B,OAAlByqK,GAA4C,UAAlBA,GAC1Br8N,EAAMw9B,aAAat2B,KAAKhd,QAAQwzC,WAAW1vC,GAAO4jE,SAAU1qD,KAAKhd,QAAQwzC,WAAW1vC,GAAO6jE,WAC3F7xD,EAAMyY,UAAYvR,KAAKhd,QAAQuuB,WAER,UAAlB4jN,GACLr8N,EAAMw9B,aAAa6+L,EAAen1N,KAAKhd,QAAQ/H,UAAUgZ,MAAM,KAAK9V,QAAO,SAAUiN,GAAQ,OAA+B,IAAxBA,EAAKkL,QAAQ,MAAc,IAAG2Q,KAAK,KAE/I,CACIjH,KAAKhd,QAAQkjE,aAAa,SAC1BlmD,KAAKhd,QAAQk+C,gBAAgB,QAEjClhC,KAAKhd,QAAQ4zC,UAAUjB,OAAO,YAAa,oBAC3C31B,KAAKhd,QAAQmuB,YAAYrY,GACzBkH,KAAKhd,QAAU8V,GACf9W,EAAAA,EAAAA,IAAS,gBAAiByoE,EAAYzqD,KAAKhd,QAC/C,EACAwzC,EAAAA,EAAAA,IAAWx2B,KAAKhd,QAAS,CAAE,KAAQ,aAAc,SAAY,IAAK,aAAgB,QAClF,IAAI0qF,EAAa,CACb0nJ,eAAgB,kBAAmBC,eAAgB,kBAAmB3zJ,YAAa1hE,KAAK0hE,aAE5F1hE,KAAK+hE,KAAO,IAAIvmB,EAAAA,GAAK,iBAAkBkyB,EAAY1tE,KAAKwpB,QACX,KAAzCxpB,KAAK+hE,KAAK9lB,YAAY,gBACtBj8C,KAAK26B,cAAc,CAAE+mC,YAAa1hE,KAAK0hE,aAAe1hE,KAAK+hE,KAAK9lB,YAAY,iBAAkB,GAE7Fj8C,KAAKhd,QAAQkjE,aAAa,OAC3BlmD,KAAKhd,QAAQszC,aAAa,MAAM5mB,EAAAA,EAAAA,IAAY,mBAEhD1P,KAAK63E,cAAe,EACpB73E,KAAKmuE,WAAa,KAClBnuE,KAAKs1N,UAAY,KACjBt1N,KAAKu1N,YAAc,CAAC,EACpBv1N,KAAKw1N,kBACLx1N,KAAKy1N,kBACLz1N,KAAKqzE,UAAYrzE,KAAKziB,MACtByiB,KAAK01N,0BACL11N,KAAKytE,iBAAgB,GACjBztE,KAAKk1N,UACLl1N,KAAK4sE,cAAgB5sE,KAAKziB,OAE9ByiB,KAAK2xE,iBACL3xE,KAAK21N,eACoB,OAArB31N,KAAK0hE,aACL1hE,KAAK41N,mBAEb,EAOAr8O,EAAe8lB,UAAUisC,OAAS,WACa,UAAvCtrC,KAAKhd,QAAQmzC,QAAQ93C,gBACrB2hB,KAAK61N,gBACD71N,KAAK81N,gBACL91N,KAAK+1N,kBAET/1N,KAAKg2N,gBAAgBh2N,KAAK+zC,OACrB/zC,KAAKghE,UAAUpqC,UAAUM,SAAS,kBACnCl3B,KAAKghE,UAAUpqC,UAAUzB,IAAI,iBAEjCn1B,KAAKi2N,YAA2B,OAAfj2N,KAAKziB,OAAkBu8B,MAAM9Z,KAAKziB,OAC/C,KAAOyiB,KAAK0iE,WAAa1iE,KAAKk2N,UAAUl2N,KAAKziB,OAASyiB,KAAKziB,OAC/DyiB,KAAKu5C,aACc,OAAfv5C,KAAKziB,OAAmBu8B,MAAM9Z,KAAKziB,QAC/ByiB,KAAKm2N,UACLn2N,KAAK26B,cAAc,CAAEp9C,MAAOyiB,KAAKo2N,YAAYp2N,KAAKziB,MAAOyiB,KAAKm2N,YAAa,IAG/En2N,KAAKhd,QAAQo+C,aAAa,UAAYphC,KAAKziB,SAC3CyiB,KAAKhd,QAAQszC,aAAa,QAASt2B,KAAKhd,QAAQzF,OAChDyiB,KAAKq2N,YAAY//L,aAAa,QAASt2B,KAAKq2N,YAAY94O,QAE5DyiB,KAAKs2N,iBAAmBt2N,KAAKhd,QAAQzF,MACjCyiB,KAAKhd,QAAQkjE,aAAa,aAC1BlmD,KAAKhd,QAAQszC,aAAa,WAAY,WAErC3oB,EAAAA,EAAAA,KAAkByrB,EAAAA,EAAAA,IAAQp5B,KAAKhd,QAAS,eAAgBo2C,EAAAA,EAAAA,IAAQp5B,KAAKhd,QAAS,YAAYjK,WAC3FinB,KAAK9mB,SAAU,GAEnB8mB,KAAKqsC,iBAEb,EACA9yD,EAAe8lB,UAAUouE,gBAAkB,SAAUlL,GAGjD,IAFA,IAESh0D,EAAK,EAAGs7D,EAFAtH,GAAY50D,EAAAA,EAAAA,IAAkB3N,KAAKsqD,gBAAkB,GAAKzrE,OAAOC,KAAKkhB,KAAKsqD,gBACxF,CAAC,QAAS,MAAO,MAAO,OAAQ,WAAY,WAAY,QAAS,OAAQ,eACjC/7C,EAAKs7D,EAAa5xF,OAAQs2B,IAAM,CACxE,IAAI4E,EAAO02D,EAAat7D,GACxB,KAAKZ,EAAAA,EAAAA,IAAkB3N,KAAKhd,QAAQo+C,aAAajuB,IAC7C,OAAQA,GACJ,IAAK,WACD,IAAKxF,EAAAA,EAAAA,IAAkB3N,KAAK40N,sBAAuD15O,IAAnC8kB,KAAK40N,eAAwB,SAAqBryJ,EAAW,CACzG,IAAIrpF,EAA8C,aAApC8mB,KAAKhd,QAAQo+C,aAAajuB,IAA4D,KAApCnT,KAAKhd,QAAQo+C,aAAajuB,IAC/C,SAApCnT,KAAKhd,QAAQo+C,aAAajuB,GACjCnT,KAAK26B,cAAc,CAAEzhD,QAASA,IAAYqpF,EAC9C,CACA,MACJ,IAAK,WACD,IAAK50D,EAAAA,EAAAA,IAAkB3N,KAAK40N,sBAAwD15O,IAApC8kB,KAAK40N,eAAyB,UAAqBryJ,EAAW,CAC1G,IAAIlB,EAA+C,aAApCrhE,KAAKhd,QAAQo+C,aAAajuB,IAA4D,KAApCnT,KAAKhd,QAAQo+C,aAAajuB,IAChD,SAApCnT,KAAKhd,QAAQo+C,aAAajuB,GACjCnT,KAAK26B,cAAc,CAAE0mC,SAAUA,IAAakB,EAChD,CACA,MACJ,IAAK,gBACI50D,EAAAA,EAAAA,IAAkB3N,KAAK40N,sBAA2D15O,IAAvC8kB,KAAK40N,eAA4B,aAAqBryJ,IAClGviE,KAAK26B,cAAc,CAAE+mC,YAAa1hE,KAAKhd,QAAQ0+E,cAAgBa,GAEnE,MACJ,IAAK,QACD,IAAK50D,EAAAA,EAAAA,IAAkB3N,KAAK40N,sBAAqD15O,IAAjC8kB,KAAK40N,eAAsB,OAAqBryJ,EAAW,CACvG,IAAIg0J,EAAYv2N,KAAKvf,SAAS6nC,gBAAgB,CAAE9uC,OAAQ,KAAxCwmB,CAA+CA,KAAKhd,QAAQo+C,aAAajuB,IACzFnT,KAAK26B,eAAc34C,EAAAA,EAAAA,IAASmxB,EAAMojN,EAAW,CAAC,IAAKh0J,EACvD,CACA,MACJ,IAAK,MACD,IAAK50D,EAAAA,EAAAA,IAAkB3N,KAAK40N,sBAAmD15O,IAA/B8kB,KAAK40N,eAAoB,KAAqBryJ,EAAW,CACrG,IAAI2R,EAAWl0E,KAAKvf,SAAS6nC,gBAAgB,CAAE9uC,OAAQ,KAAxCwmB,CAA+CA,KAAKhd,QAAQo+C,aAAajuB,IACvE,OAAb+gE,GAAsBp6D,MAAMo6D,IAC5Bl0E,KAAK26B,eAAc34C,EAAAA,EAAAA,IAASmxB,EAAM+gE,EAAU,CAAC,IAAK3R,EAE1D,CACA,MACJ,IAAK,MACD,IAAK50D,EAAAA,EAAAA,IAAkB3N,KAAK40N,sBAAmD15O,IAA/B8kB,KAAK40N,eAAoB,KAAqBryJ,EAAW,CACrG,IAAI0R,EAAWj0E,KAAKvf,SAAS6nC,gBAAgB,CAAE9uC,OAAQ,KAAxCwmB,CAA+CA,KAAKhd,QAAQo+C,aAAajuB,IACvE,OAAb8gE,GAAsBn6D,MAAMm6D,IAC5Bj0E,KAAK26B,eAAc34C,EAAAA,EAAAA,IAASmxB,EAAM8gE,EAAU,CAAC,IAAK1R,EAE1D,CACA,MACJ,IAAK,OACD,IAAK50D,EAAAA,EAAAA,IAAkB3N,KAAK40N,sBAAoD15O,IAAhC8kB,KAAK40N,eAAqB,MAAqBryJ,EAAW,CACtG,IAAIi0J,EAAYx2N,KAAKvf,SAAS6nC,gBAAgB,CAAE9uC,OAAQ,KAAxCwmB,CAA+CA,KAAKhd,QAAQo+C,aAAajuB,IACvE,OAAdqjN,GAAuB18M,MAAM08M,IAC7Bx2N,KAAK26B,eAAc34C,EAAAA,EAAAA,IAASmxB,EAAMqjN,EAAW,CAAC,IAAKj0J,EAE3D,CACA,MACJ,IAAK,QACDviE,KAAKmuE,WAAanuE,KAAKhd,QAAQo+C,aAAajuB,GAC5C,MACJ,IAAK,OACDnT,KAAKs1N,UAAYt1N,KAAKhd,QAAQo+C,aAAajuB,GAC3C,MACJ,QAEQ,IAAI51B,EAAQyiB,KAAKvf,SAAS6nC,gBAAgB,CAAE9uC,OAAQ,KAAxCwmB,CAA+CA,KAAKhd,QAAQo+C,aAAajuB,KACtE,OAAV51B,IAAmBu8B,MAAMv8B,IAAqB,UAAT41B,IACtCnT,KAAK26B,eAAc34C,EAAAA,EAAAA,IAASmxB,EAAM51B,EAAO,CAAC,IAAI,GAMtE,CACJ,EACAhE,EAAe8lB,UAAUu2N,kBAAoB,WACzC51N,KAAK26B,cAAc,CAAE+mC,YAAa1hE,KAAK+hE,KAAK9lB,YAAY,iBAAkB,EAC9E,EACA1iE,EAAe8lB,UAAUo2N,gBAAkB,WACvCz1N,KAAKvf,SAAW,IAAIunC,EAAAA,GAAqBhoB,KAAKwpB,OAClD,EACAjwC,EAAe8lB,UAAUm2N,gBAAkB,WACvCx1N,KAAKu1N,YAAY/7O,OAASwmB,KAAKxmB,OACI,QAA/B4zB,EAAAA,EAAAA,IAAS,WAAYpN,SACrBhe,EAAAA,EAAAA,IAAS,WAAYge,KAAKwc,SAAUxc,KAAKu1N,aACzCv1N,KAAK26B,cAAc,CAAEjP,aAAc1rB,KAAKwc,WAAY,GAE5D,EAEAjjC,EAAe8lB,UAAUw2N,cAAgB,WACrC,IAAIY,EAAuBz2N,KAAK7f,UAC3BwtB,EAAAA,EAAAA,IAAkB3N,KAAK7f,WAA+B,KAAlB6f,KAAK7f,WAC1Cs2O,EAAuBz2N,KAAK02N,yBAAyB12N,KAAK7f,WAE9D,IAAIwzO,EAAW/yJ,EAAAA,EAAMa,YAAY,CAC7Bz+E,QAASgd,KAAKhd,QACd29E,eAAgB3gE,KAAK2gE,eACrBvqC,WAAY,CACRirC,SAAUrhE,KAAKqhE,SACfK,YAAa1hE,KAAK0hE,YAClBvhF,SAAUs2O,EACV9rL,UAAW3qC,KAAK2qC,UAChBy3B,gBAAiBpiE,KAAKoiE,gBACtBlpF,QAAS8mB,KAAK9mB,UAEnB8mB,KAAK4Q,eACR5Q,KAAK+gE,aAAe4yJ,EACpB3zN,KAAKghE,UAAY2yJ,EAAS3yJ,UAC1BhhE,KAAKghE,UAAU1qC,aAAa,QAASm2B,+BAAazsD,KAAKghE,UAAU5/B,aAAa,UAC9EphC,KAAK22N,0BACD32N,KAAKqhE,WACL7qC,EAAAA,EAAAA,IAAWx2B,KAAKhd,QAAS,CAAE,gBAAiB,SAEhDgd,KAAKq2N,YAAer2N,KAAK4Q,cAAc,QAAS,CAAE2lB,MAAO,CAAEj8C,KAAM,OACzD,eAAkB,OAAQ,MArPtB,sBAsPZ0lB,KAAKs1N,UAA+B,OAAnBt1N,KAAKs1N,UAAqBt1N,KAAKs1N,UAAYt1N,KAAKhd,QAAQ4B,GACzEob,KAAKhd,QAAQk+C,gBAAgB,QACzBlhC,KAAKyrD,WAAqC,uBAAxBzrD,KAAKi1N,gBAA2Cj1N,KAAKksE,aAAatnF,GAAG3M,OAAS,GAChGu+C,EAAAA,EAAAA,IAAWx2B,KAAKq2N,YAAa,CAAE,KAAQr2N,KAAKksE,aAAatnF,MAGzD4xC,EAAAA,EAAAA,IAAWx2B,KAAKq2N,YAAa,CAAE,KAAQr2N,KAAKs1N,YAEhDt1N,KAAKghE,UAAUhpC,aAAah4B,KAAKq2N,YAAar2N,KAAKghE,UAAUld,WAAW,IACxE9jD,KAAK28F,qBAAoB,GACD,OAApB38F,KAAKmuE,aACL33C,EAAAA,EAAAA,IAAWx2B,KAAKghE,UAAW,CAAE,MAAShhE,KAAKmuE,YAEnD,EACA50F,EAAe8lB,UAAUs9F,oBAAsB,SAAUp6B,GACrD,IAAItc,EAAO,CAAC,EACZ,GAAKsc,EAMDtc,EAAOjmD,KAAKsqD,oBALZ,IAAK,IAAIrrD,EAAI,EAAGA,EAAIe,KAAKhd,QAAQwzC,WAAWv+C,OAAQgnB,IAChDgnD,EAAKjmD,KAAKhd,QAAQwzC,WAAWv3B,GAAG7mB,MAAQ4nB,KAAKhd,QAAQo+C,aAAaphC,KAAKhd,QAAQwzC,WAAWv3B,GAAG7mB,MAMrG,IAAK,IAAIm2B,EAAK,EAAGvoB,EAAKnH,OAAOC,KAAKmnE,GAAO13C,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAC3D,IAAIvvB,EAAMgH,EAAGuoB,GACe,IAAxBvvB,EAAIsX,QAAQ,SACZ0J,KAAKq2N,YAAY//L,aAAat3C,EAAKinE,EAAK,GAAKjnE,GAErD,CACJ,EACAzF,EAAe8lB,UAAUq2N,wBAA0B,WAC/C,KAAK/nN,EAAAA,EAAAA,IAAkB3N,KAAKsqD,gBACxB,IAAK,IAAI/7C,EAAK,EAAGvoB,EAAKnH,OAAOC,KAAKkhB,KAAKsqD,gBAAiB/7C,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAC1E,IAAIqoN,EAAM5wO,EAAGuoB,GACT48D,EAAkB70E,QAAQsgO,GAAO,GACjC52N,KAAKhd,QAAQszC,aAAasgM,EAAK52N,KAAKsqD,eAAe,GAAKssK,GAEhE,CAER,EACAr9O,EAAe8lB,UAAUimE,eAAiB,SAAU+sC,EAAUC,GAC1D1xC,EAAAA,EAAM2E,YAAYvlE,KAAK02N,yBAAyBrkH,GAAW,CAACryG,KAAKghE,WAAYhhE,KAAK02N,yBAAyBpkH,GAC/G,EACA/4H,EAAe8lB,UAAUq3N,yBAA2B,SAAUG,GAC1D,IAAIz3O,EAASy3O,EAIb,OAHKlpN,EAAAA,EAAAA,IAAkBkpN,IAA0C,KAArBA,IACxCz3O,EAAUy3O,EAAiBpgO,QAAQ,OAAQ,KAAMwkD,QAE9C77D,CACX,EACA7F,EAAe8lB,UAAUs3N,wBAA0B,WAC/C,KAAKhpN,EAAAA,EAAAA,IAAkB3N,KAAKsqD,gBACxB,IAAK,IAAI/7C,EAAK,EAAGvoB,EAAKnH,OAAOC,KAAKkhB,KAAKsqD,gBAAiB/7C,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAC1E,IAAIqoN,EAAM5wO,EAAGuoB,GACb,GAAI48D,EAAkB70E,QAAQsgO,IAAQ,EAClC,GAAY,UAARA,EAAiB,CACjB,IAAI9vH,EAAoB9mG,KAAK02N,yBAAyB12N,KAAKsqD,eAAe,GAAKssK,IACrD,KAAtB9vH,IACArwE,EAAAA,EAAAA,IAAS,CAACz2B,KAAKghE,WAAY8lC,EAAkB7yG,MAAM,KAE3D,MACK,GAAY,UAAR2iO,EAAiB,CACtB,IAAIE,EAAe92N,KAAKghE,UAAU5/B,aAAaw1L,GAC/CE,GAAgBnpN,EAAAA,EAAAA,IAAkBmpN,GAC9B92N,KAAKsqD,eAAe,GAAKssK,GADsBE,EAAe92N,KAAKsqD,eAAe,GAAKssK,GAE3F52N,KAAKghE,UAAU1qC,aAAasgM,EAAKE,EACrC,MAEI92N,KAAKghE,UAAU1qC,aAAasgM,EAAK52N,KAAKsqD,eAAe,GAAKssK,GAGtE,CAER,EACAr9O,EAAe8lB,UAAU22N,gBAAkB,SAAUjiL,IAC5CpmC,EAAAA,EAAAA,IAAkBomC,KACE,kBAAVA,EACP/zC,KAAKghE,UAAUzpC,MAAMwc,OAAQjiC,EAAAA,EAAAA,IAAWiiC,GAElB,kBAAVA,IACZ/zC,KAAKghE,UAAUzpC,MAAMwc,MAASA,EAAM3rC,MAAM,WAAe2rC,GAAUjiC,EAAAA,EAAAA,IAAWiiC,IAG1F,EAEAx6D,EAAe8lB,UAAU02N,gBAAkB,WACvC/1N,KAAK+2N,SAAWn2J,EAAAA,EAAMoX,WAAWo8I,iBAA2Bp0N,KAAKghE,UAAWhhE,KAAK4Q,gBACjF4lB,EAAAA,EAAAA,IAAWx2B,KAAK+2N,SAAU,CACtB,MAAS/2N,KAAK+hE,KAAK9lB,YAAY,oBAEnCj8C,KAAKg3N,OAASp2J,EAAAA,EAAMoX,WAAWo8I,EAAW,IAAMC,EAAQr0N,KAAKghE,UAAWhhE,KAAK4Q,gBAC7E4lB,EAAAA,EAAAA,IAAWx2B,KAAKg3N,OAAQ,CACpB,MAASh3N,KAAK+hE,KAAK9lB,YAAY,oBAEnCj8C,KAAKi3N,mBACT,EACA19O,EAAe8lB,UAAUsyE,eAAiB,YACV,kBAAd3xE,KAAK0gB,KAAsB5G,MAAM9Z,KAAK0gB,OAChD1gB,KAAK26B,cAAc,CAAEja,KAAOpnC,OAAO49O,YAAc,IAEzB,kBAAdl3N,KAAK2gB,KAAsB7G,MAAM9Z,KAAK2gB,OAChD3gB,KAAK26B,cAAc,CAAEha,IAAKrnC,OAAO49O,YAAa,GAE5B,OAAlBl3N,KAAKm2N,WACDn2N,KAAK0gB,OAAUpnC,OAAO49O,WACtBl3N,KAAK26B,cAAc,CAAEja,IAAK1gB,KAAKvf,SAAS6nC,gBAAgB,CAAE9uC,OAAQ,KAAxCwmB,CAA+CA,KAAKm3N,eAAen3N,KAAKm2N,SAAUn2N,KAAK0gB,QAAS,GAE1H1gB,KAAK2gB,MAASrnC,OAAO49O,WACrBl3N,KAAK26B,cAAc,CAAEha,IAAK3gB,KAAKvf,SAAS6nC,gBAAgB,CAAE9uC,OAAQ,KAAxCwmB,CAA+CA,KAAKm3N,eAAen3N,KAAKm2N,SAAUn2N,KAAK2gB,QAAS,IAGlI3gB,KAAK26B,cAAc,CAAEja,IAAK1gB,KAAK0gB,IAAM1gB,KAAK2gB,IAAM3gB,KAAK2gB,IAAM3gB,KAAK0gB,MAAO,GACnE1gB,KAAK0gB,OAAUpnC,OAAO49O,YACtB1gM,EAAAA,EAAAA,IAAWx2B,KAAKhd,QAAS,CAAE,gBAAiBgd,KAAK0gB,IAAItlC,aAErD4kB,KAAK2gB,MAASrnC,OAAO49O,YACrB1gM,EAAAA,EAAAA,IAAWx2B,KAAKhd,QAAS,CAAE,gBAAiBgd,KAAK2gB,IAAIvlC,YAE7D,EACA7B,EAAe8lB,UAAU83N,eAAiB,SAAUhB,EAAU54O,GAC1D,OAAOyiB,KAAKvf,SAAS2nC,gBAAgB,CACjC3K,sBAAuB04M,EACvBz4M,sBAAuBy4M,EAAUv4M,aAAa,GAF3C5d,CAGJziB,EACP,EACAhE,EAAe8lB,UAAUs2N,aAAe,WACd,OAAlB31N,KAAKm2N,UACLn2N,KAAK26B,cAAc,CAAEgH,KAAM3hC,KAAKvf,SAAS6nC,gBAAgB,CAAE9uC,OAAQ,KAAxCwmB,CAA+CA,KAAKm3N,eAAen3N,KAAKm2N,SAAUn2N,KAAK2hC,SAAU,EAEpI,EACApoD,EAAe8lB,UAAU4D,OAAS,SAAUm0N,EAAWr1O,GACnDie,KAAKq3N,YAAa,EAClB,IAAI95O,EAAQyiB,KAAKioD,UAAYjoD,KAAKvf,SAAS6nC,gBAAgB,CAAE9uC,OAAQ,KAAxCwmB,CAA+CA,KAAKhd,QAAQzF,OAASyiB,KAAKziB,MACvGyiB,KAAKi2N,YAAYj2N,KAAKs3N,cAAc/5O,EAAOyiB,KAAK2hC,KAAMy1L,IACtDp3N,KAAKu3N,iBAAiBx1O,EAC1B,EACAxI,EAAe8lB,UAAUm4N,gBAAkB,WACnCx3N,KAAK63E,cACL1gD,EAAAA,EAAAA,IAAY,CAACn3B,KAAKghE,WAAYnB,IAG9BppC,EAAAA,EAAAA,IAAS,CAACz2B,KAAKghE,WAAYnB,IAE/BrpC,EAAAA,EAAAA,IAAWx2B,KAAKhd,QAAS,CAAE,eAAgBgd,KAAK63E,aAAe,QAAU,QAC7E,EACAt+F,EAAe8lB,UAAUqlE,eAAiB,WAClC1kE,KAAKoiE,iBACLptC,EAAAA,GAAaG,IAAIn1B,KAAK+gE,aAAakD,YAAa,uBAAwBjkE,KAAKkkE,aAAclkE,KAEnG,EACAzmB,EAAe8lB,UAAU6kE,aAAe,SAAUzoF,GAC9CA,EAAEi1D,iBACI1wC,KAAK+gE,aAAakD,YAAYrtC,UAAUM,SAAS,uBAAyBl3B,KAAK+gE,aAAaC,UAAUpqC,UAAUM,SAAS,mBAC3Hl3B,KAAK1E,MAAM7f,GAEfukB,KAAKq3N,YAAa,EAClBr3N,KAAKu3N,iBAAiB97O,EAC1B,EAEAlC,EAAe8lB,UAAU/D,MAAQ,SAAUvZ,GAKvC,GAJAie,KAAK26B,cAAc,CAAEp9C,MAAO,OAAQ,GACpCyiB,KAAKy3N,gBAAgB,IACrBz3N,KAAKq2N,YAAY94O,MAAQ,IACP67C,EAAAA,EAAAA,IAAQp5B,KAAKhd,QAAS,QACvB,CACb,IAAIA,EAAUgd,KAAKhd,QAAQgpE,mBACvB6Y,EAAajiE,SAASqoD,YAAY,iBACtC4Z,EAAW3Z,UAAU,SAAS,GAAO,GACrCloE,EAAQmoE,cAAc0Z,EAC1B,CACJ,EACAtrF,EAAe8lB,UAAU8kE,iBAAmB,WACX,uBAAzBnkE,KAAKhd,QAAQmzC,QACbn2B,KAAKuyE,YAAY,MAGjBvyE,KAAKuyE,YAAYvyE,KAAK4sE,cAE9B,EACArzF,EAAe8lB,UAAUq4N,cAAgB,YAChC/pN,EAAAA,EAAAA,IAAkB3N,KAAK+2N,YACxBvgM,EAAAA,EAAAA,IAAWx2B,KAAK+2N,SAAU,CACtB,MAAS/2N,KAAK+hE,KAAK9lB,YAAY,kBAC/B,aAAcj8C,KAAK+hE,KAAK9lB,YAAY,qBAGvCtuC,EAAAA,EAAAA,IAAkB3N,KAAKg3N,UACxBxgM,EAAAA,EAAAA,IAAWx2B,KAAKg3N,OAAQ,CACpB,MAASh3N,KAAK+hE,KAAK9lB,YAAY,kBAC/B,aAAcj8C,KAAK+hE,KAAK9lB,YAAY,mBAGhD,EACA1iE,EAAe8lB,UAAUk6C,WAAa,WAClCvkB,EAAAA,GAAaG,IAAIn1B,KAAKhd,QAAS,QAASgd,KAAKkpD,aAAclpD,MAC3Dg1B,EAAAA,GAAaG,IAAIn1B,KAAKhd,QAAS,OAAQgd,KAAK6oD,gBAAiB7oD,MAC7Dg1B,EAAAA,GAAaG,IAAIn1B,KAAKhd,QAAS,UAAWgd,KAAKk5K,eAAgBl5K,MAC/Dg1B,EAAAA,GAAaG,IAAIn1B,KAAKhd,QAAS,QAASgd,KAAK0pD,aAAc1pD,MAC3Dg1B,EAAAA,GAAaG,IAAIn1B,KAAKhd,QAAS,QAASgd,KAAKyjE,aAAczjE,MAC3Dg1B,EAAAA,GAAaG,IAAIn1B,KAAKhd,QAAS,WAAYgd,KAAKk6C,gBAAiBl6C,MACjEg1B,EAAAA,GAAaG,IAAIn1B,KAAKhd,QAAS,SAAUgd,KAAKkqD,cAAelqD,MAC7Dg1B,EAAAA,GAAaG,IAAIn1B,KAAKhd,QAAS,QAASgd,KAAKqtG,aAAcrtG,MACvDA,KAAK9mB,UACL8mB,KAAK0kE,iBACD1kE,KAAKk1N,SACLlgM,EAAAA,GAAaG,IAAIn1B,KAAKk1N,QAAS,QAASl1N,KAAKmkE,iBAAkBnkE,MAG3E,EACAzmB,EAAe8lB,UAAU43N,kBAAoB,WAEzCjiM,EAAAA,GAAaG,IAAIn1B,KAAKg3N,OAAQpkM,EAAAA,GAAQgC,gBAAiB50B,KAAK23N,mBAAoB33N,MAChFg1B,EAAAA,GAAaG,IAAIn1B,KAAK+2N,SAAUnkM,EAAAA,GAAQgC,gBAAiB50B,KAAK23N,mBAAoB33N,MAClFg1B,EAAAA,GAAaG,IAAIn1B,KAAKg3N,OAAQpkM,EAAAA,GAAQkC,cAAe90B,KAAK43N,iBAAkB53N,MAC5Eg1B,EAAAA,GAAaG,IAAIn1B,KAAK+2N,SAAUnkM,EAAAA,GAAQkC,cAAe90B,KAAK43N,iBAAkB53N,MAC9Eg1B,EAAAA,GAAaG,IAAIn1B,KAAKg3N,OAAQpkM,EAAAA,GAAQiC,eAAgB70B,KAAK63N,mBAAoB73N,MAC/Eg1B,EAAAA,GAAaG,IAAIn1B,KAAK+2N,SAAUnkM,EAAAA,GAAQiC,eAAgB70B,KAAK63N,mBAAoB73N,KACrF,EACAzmB,EAAe8lB,UAAU87C,aAAe,WACpCnmB,EAAAA,GAAaW,OAAO31B,KAAKhd,QAAS,QAASgd,KAAKkpD,cAChDl0B,EAAAA,GAAaW,OAAO31B,KAAKhd,QAAS,OAAQgd,KAAK6oD,iBAC/C7zB,EAAAA,GAAaW,OAAO31B,KAAKhd,QAAS,QAASgd,KAAK0pD,cAChD10B,EAAAA,GAAaW,OAAO31B,KAAKhd,QAAS,QAASgd,KAAKyjE,cAChDzuC,EAAAA,GAAaW,OAAO31B,KAAKhd,QAAS,UAAWgd,KAAKk5K,gBAClDlkJ,EAAAA,GAAaW,OAAO31B,KAAKhd,QAAS,WAAYgd,KAAKk6C,iBACnDllB,EAAAA,GAAaW,OAAO31B,KAAKhd,QAAS,SAAUgd,KAAKkqD,eACjDl1B,EAAAA,GAAaW,OAAO31B,KAAKhd,QAAS,QAASgd,KAAKqtG,cAC5CrtG,KAAKk1N,SACLlgM,EAAAA,GAAaW,OAAO31B,KAAKk1N,QAAS,QAASl1N,KAAKmkE,iBAExD,EACA5qF,EAAe8lB,UAAUy4N,oBAAsB,WAE3C9iM,EAAAA,GAAaW,OAAO31B,KAAKg3N,OAAQpkM,EAAAA,GAAQgC,gBAAiB50B,KAAK23N,oBAC/D3iM,EAAAA,GAAaW,OAAO31B,KAAK+2N,SAAUnkM,EAAAA,GAAQgC,gBAAiB50B,KAAK23N,oBACjE3iM,EAAAA,GAAaW,OAAO31B,KAAKg3N,OAAQpkM,EAAAA,GAAQkC,cAAe90B,KAAK43N,kBAC7D5iM,EAAAA,GAAaW,OAAO31B,KAAK+2N,SAAUnkM,EAAAA,GAAQkC,cAAe90B,KAAK43N,kBAC/D5iM,EAAAA,GAAaW,OAAO31B,KAAKg3N,OAAQpkM,EAAAA,GAAQiC,eAAgB70B,KAAK63N,oBAC9D7iM,EAAAA,GAAaW,OAAO31B,KAAK+2N,SAAUnkM,EAAAA,GAAQiC,eAAgB70B,KAAK63N,mBACpE,EACAt+O,EAAe8lB,UAAU6qD,cAAgB,SAAUnoE,GAC/CA,EAAMinE,kBACDhpD,KAAKhd,QAAQzF,MAAMtF,QACpB+nB,KAAK26B,cAAc,CAAEp9C,MAAO,OAAQ,GAExC,IAAIw6O,EAAc/3N,KAAKvf,SAAS6nC,gBAAgB,CAAE9uC,OAAQ,KAAxCwmB,CAA+CA,KAAKhd,QAAQzF,OAC9EyiB,KAAKuyE,YAAYwlJ,EAAah2O,EAClC,EACAxI,EAAe8lB,UAAUk4N,iBAAmB,SAAUx1O,GAClD,GAAIie,KAAKqzE,YAAcrzE,KAAKziB,OAASyiB,KAAKqzE,YAAcrzE,KAAKw+G,WAAY,CACrE,IAAIxvF,EAAY,CAAC,EACjBhvB,KAAK8oD,gBAAkB,CAAEvrE,MAAOyiB,KAAKziB,MAAOohF,cAAe3+D,KAAKqzE,UAAWpgF,aAAc+M,KAAKq3N,WAC1Ft7C,cAAe/7K,KAAKq3N,WAAYt1O,MAAOA,GACvCA,IACAie,KAAK8oD,gBAAgB/mE,MAAQA,QAEE7G,IAA/B8kB,KAAK8oD,gBAAgB/mE,QACrBie,KAAK8oD,gBAAgB71D,cAAe,EACpC+M,KAAK8oD,gBAAgBizH,eAAgB,IAEzC7tK,EAAAA,EAAAA,IAAM8gB,EAAWhvB,KAAK8oD,iBACtB9oD,KAAKqzE,UAAYrzE,KAAKziB,MACtByiB,KAAKq3N,YAAa,EAClBr3N,KAAKs2N,iBAAmBt2N,KAAKhd,QAAQzF,MACrCyiB,KAAKmyD,eAAgB,EACrBnyD,KAAK81B,QAAQ,SAAU9G,EAC3B,CACJ,EACAz1C,EAAe8lB,UAAUguG,aAAe,WACpC,IAAIr9F,EAAQhQ,KACZ,GAAKA,KAAK9mB,UAAW8mB,KAAKqhE,SAA1B,CAGA,IAAI22J,EAAeh4N,KAAKhd,QAAQzF,MAChC2yB,YAAW,WACFF,EAAMyE,eAAe3M,KAAKkI,EAAMhtB,QAAQzF,QACzCyyB,EAAMynN,gBAAgBO,EAE9B,GANA,CAOJ,EACAz+O,EAAe8lB,UAAU44N,eAAiB,WACtC,IAAIjoN,EAAQhQ,KACRk4N,IAAQ/kM,UAAUc,UAAY,mBAAmBnsB,KAAKqrB,UAAUc,UACpE/jB,YAAW,WACP,GAAIF,EAAMhtB,QAAQyiF,eAAiB,EAAG,CAClC,IAAI0yJ,EAAanoN,EAAMhtB,QAAQyiF,eAC3B2yJ,EAAUpoN,EAAMhtB,QAAQyiF,eAAiB,EAEzC4yJ,EAAWroN,EAAMhtB,QAAQzF,MAAM0W,MAAM,IACrCmoB,GAAgBmN,EAAAA,EAAAA,IAAiBvZ,EAAMwZ,QACvCsrM,GAAmB1nN,EAAAA,EAAAA,IAAS,UAAWgP,GACvCk8M,EAAgBxD,EAAiBvrL,WAAW,GACX,MAAjCv5B,EAAMhtB,QAAQzF,MAAM66O,IAAoBpoN,EAAMhtB,QAAQyiF,eAAiB,IAAMyyJ,IACzEvqN,EAAAA,EAAAA,IAAkBqC,EAAMuoN,SACxBvoN,EAAMhtB,QAAQzF,MAAQyyB,EAAMhtB,QAAQzF,MAAM09D,OAEzB,IAAZm9K,EACLpoN,EAAMhtB,QAAQzF,MAAQyyB,EAAMuoN,QAEX,IAAZH,IACLpoN,EAAMhtB,QAAQzF,MAAQyyB,EAAMhtB,QAAQzF,MAAM09D,QAE9CjrC,EAAMhtB,QAAQstF,kBAAkB8nJ,EAASA,IAEpCt+M,MAAMmM,WAAWjW,EAAMhtB,QAAQzF,MAAMyyB,EAAMhtB,QAAQyiF,eAAiB,MACD,KAAxEz1D,EAAMhtB,QAAQzF,MAAMyyB,EAAMhtB,QAAQyiF,eAAiB,GAAGl8B,WAAW,IAC5D8uL,EAAS/hO,QAAQ0Z,EAAMhtB,QAAQzF,MAAMyyB,EAAMhtB,QAAQyiF,eAAiB,MACrE4yJ,EAASv5M,YAAY9O,EAAMhtB,QAAQzF,MAAMyyB,EAAMhtB,QAAQyiF,eAAiB,KACxEz1D,EAAMhtB,QAAQzF,MAAMyyB,EAAMhtB,QAAQyiF,eAAiB,GAAGl8B,WAAW,KAAO+uL,GACxEtoN,EAAMhtB,QAAQzF,MAAMyyB,EAAMhtB,QAAQyiF,eAAiB,GAAGl8B,WAAW,KAAO+uL,KACxEtoN,EAAMhtB,QAAQzF,MAAQyyB,EAAMhtB,QAAQzF,MAAMsG,UAAU,EAAGu0O,GACnDpoN,EAAMhtB,QAAQzF,MAAMsG,UAAUs0O,EAAYnoN,EAAMhtB,QAAQzF,MAAMtF,QAClE+3B,EAAMhtB,QAAQstF,kBAAkB8nJ,EAASA,GACrCt+M,MAAMmM,WAAWjW,EAAMhtB,QAAQzF,MAAMyyB,EAAMhtB,QAAQyiF,eAAiB,MAAQz1D,EAAMhtB,QAAQyiF,eAAiB,GACxGz1D,EAAMhtB,QAAQzF,MAAMtF,QACvB+3B,EAAMioN,kBAITn+M,MAAMmM,WAAWjW,EAAMhtB,QAAQzF,MAAMyyB,EAAMhtB,QAAQyiF,eAAiB,MAAQz1D,EAAMhtB,QAAQyiF,eAAiB,GACxC,KAAxEz1D,EAAMhtB,QAAQzF,MAAMyyB,EAAMhtB,QAAQyiF,eAAiB,GAAGl8B,WAAW,KAC5D8uL,EAAS/hO,QAAQ0Z,EAAMhtB,QAAQzF,MAAMyyB,EAAMhtB,QAAQyiF,eAAiB,MACrE4yJ,EAASv5M,YAAY9O,EAAMhtB,QAAQzF,MAAMyyB,EAAMhtB,QAAQyiF,eAAiB,KACxEz1D,EAAMhtB,QAAQzF,MAAMyyB,EAAMhtB,QAAQyiF,eAAiB,GAAGl8B,WAAW,KAAO+uL,GACxEtoN,EAAMhtB,QAAQzF,MAAMyyB,EAAMhtB,QAAQyiF,eAAiB,GAAGl8B,WAAW,KAAO+uL,KACxEtoN,EAAMhtB,QAAQstF,kBAAkB8nJ,EAASA,GACzCpoN,EAAMghE,QAAUhhE,EAAMhtB,QAAQzF,MAAMyyB,EAAMhtB,QAAQyiF,gBAClDz1D,EAAMwoN,kBAAmB,EACzBxoN,EAAMioN,mBAGiB,IAA3BjoN,EAAMwoN,kBAA6BxoN,EAAMhtB,QAAQzF,MAAMyyB,EAAMhtB,QAAQyiF,kBAAoBz1D,EAAMghE,SAC/Fl3D,MAAMmM,WAAWjW,EAAMhtB,QAAQzF,MAAMyyB,EAAMhtB,QAAQyiF,eAAiB,OACpEz1D,EAAMhtB,QAAQstF,kBAAkBtgE,EAAMhtB,QAAQyiF,eAAiB,EAAGz1D,EAAMhtB,QAAQyiF,eAAiB,GACjGz1D,EAAMwoN,kBAAmB,EACzBxoN,EAAMghE,QAAU,MAEe,KAA/BhhE,EAAMhtB,QAAQzF,MAAM09D,QACpBjrC,EAAMhtB,QAAQstF,kBAnDN,KAqDRtgE,EAAMhtB,QAAQyiF,eAAiB,IAC8C,KAAxEz1D,EAAMhtB,QAAQzF,MAAMyyB,EAAMhtB,QAAQyiF,eAAiB,GAAGl8B,WAAW,IAAcv5B,EAAMhtB,QAAQyiF,eAAiB,KAC3G93D,EAAAA,EAAAA,IAAkBqC,EAAMuoN,SAExBvoN,EAAMhtB,QAAQzF,MAAQyyB,EAAMhtB,QAAQzF,MAGpCyyB,EAAMhtB,QAAQzF,MAAQyyB,EAAMuoN,QAEhCvoN,EAAMhtB,QAAQstF,kBAAkBtgE,EAAMhtB,QAAQyiF,eAAgBz1D,EAAMhtB,QAAQyiF,iBAE5Ez1D,EAAMhtB,QAAQzF,MAAMyyB,EAAMhtB,QAAQyiF,eAAiB,KAAOqvJ,GAAuC,IAAnB9kN,EAAMmmN,UAAkBnmN,EAAMyoN,wBAC5GzoN,EAAMhtB,QAAQzF,MAAQyyB,EAAMhtB,QAAQzF,MAAMsG,UAAU,EAAGu0O,GACnDpoN,EAAMhtB,QAAQzF,MAAMsG,UAAUs0O,EAAYnoN,EAAMhtB,QAAQzF,MAAMtF,UAG1E+3B,EAAMuoN,QAAUvoN,EAAMhtB,QAAQzF,KAClC,CACJ,GACJ,EACAhE,EAAe8lB,UAAUqqD,aAAe,WACpC,GAAK1pD,KAAK9mB,UAAW8mB,KAAKqhE,SAA1B,KAGYluC,UAAUc,UAAY,mBAAmBnsB,KAAKqrB,UAAUc,YACxDrB,EAAAA,GAAQY,UAChBxzB,KAAKi4N,iBAET,IAAIS,EAAa14N,KAAKvf,SAAS6nC,gBAAgB,CAAE9uC,OAAQ,KAAxCwmB,CAA+CA,KAAKhd,QAAQzF,OAI7E,GAHAm7O,EAA4B,OAAfA,GAAuB5+M,MAAM4+M,GAAc,KAAOA,EAC/D14N,KAAKq2N,YAAY94O,MAAQm7O,GAA6B,IAAfA,EAAmBA,EAAWt9O,WAAa,MAChEg+C,EAAAA,EAAAA,IAAQp5B,KAAKhd,QAAS,QACvB,CACb,IAAIA,EAAUgd,KAAKhd,QAAQgpE,mBACvB6Y,EAAajiE,SAASqoD,YAAY,iBACtC4Z,EAAW3Z,UAAU,SAAS,GAAO,GACrCloE,EAAQmoE,cAAc0Z,EAC1B,CAdA,CAeJ,EACAtrF,EAAe8lB,UAAUokE,aAAe,SAAU1hF,GAG9C,GAAKie,KAAK9mB,UAAW8mB,KAAKqhE,SAA1B,CAGA,IAAI62J,IAAQ/kM,UAAUc,UAAY,mBAAmBnsB,KAAKqrB,UAAUc,UAMpE,IALcd,UAAUH,UAAU30C,cAAciY,QAAQ,YAAc,GACtD4hO,IAAQtlM,EAAAA,GAAQY,UAC5BxzB,KAAKi4N,iBAGLj4N,KAAKyrD,WACFzrD,KAAKhd,QAAQzF,SAAU6vB,EAAAA,EAAAA,IAAS,WAAWmc,EAAAA,EAAAA,IAAiBvpB,KAAKwpB,UACjExpB,KAAKhd,QAAQzF,SAAU6vB,EAAAA,EAAAA,IAAS,aAAamc,EAAAA,EAAAA,IAAiBvpB,KAAKwpB,SAAU,CAChF,IAAImvM,EAAc34N,KAAKvf,SAAS6nC,gBAAgB,CAAE9uC,OAAQ,KAAxCwmB,CAA+CA,KAAKhd,QAAQzF,OAC9Eo7O,EAAc7+M,MAAM6+M,GAAe,KAAOA,EAdtB34N,KAeF44N,YAAY,CAAEr7O,MAAOo7O,IACvC34N,KAAKmyD,eAAgB,CACzB,CACA,GAAInyD,KAAK4oD,MAAO,CACZ,IAAIzlE,EAAU6c,KAAKvf,SAAS6nC,gBAAgB,CAAE9uC,OAAQ,KAAxCwmB,CAA+CA,KAAKhd,QAAQzF,OACtEqgF,EAAW59D,KAAKvf,SAAS6nC,gBAAgB,CAAE9uC,OAAQ,KAAxCwmB,CAA+CA,KAAKs2N,mBAEhD,IAAIttN,OAAO,YACblB,KAAK9H,KAAKhd,QAAQzF,UAAoD,IAAxCyiB,KAAKs2N,iBAAiBhgO,QAAQ,OAAuD,IAAxC0J,KAAKs2N,iBAAiBhgO,QAAQ,OAAsE,MAAtD0J,KAAKhd,QAAQzF,MAAMyiB,KAAKhd,QAAQzF,MAAMtF,OAAS,MACrLkL,EAAU6c,KAAKziB,OAEnB,IAAIyxC,EAAY,CACZjtC,MAAOA,EACPxE,MAAoB,OAAZ4F,GAAoB22B,MAAM32B,GAAW,KAAOA,EACpDw7E,cAA6B,OAAbf,GAAqB9jD,MAAM8jD,GAAY,KAAOA,GAElE59D,KAAKmyD,eAAgB,EACrBnyD,KAAKs2N,iBAAmBt2N,KAAKhd,QAAQzF,MACrCyiB,KAAK81B,QAAQ,QAAS9G,EAC1B,CA/BA,CAgCJ,EACAz1C,EAAe8lB,UAAU65K,eAAiB,SAAUn3L,GAChD,IAAKie,KAAKqhE,SACN,OAAQt/E,EAAMi4D,SACV,KAAK,GACDj4D,EAAM2uD,iBACN1wC,KAAKiD,OAAOqxN,EAAWvyO,GACvB,MACJ,KAAK,GACDA,EAAM2uD,iBACN1wC,KAAKiD,OAAOsxN,EAAWxyO,GAKvC,EACAxI,EAAe8lB,UAAUi4N,cAAgB,SAAU/5O,EAAOokD,EAAMy1L,IAC9C,OAAV75O,GAAkBu8B,MAAMv8B,MACxBA,EAAQ,GAEZ,IAAIs7O,EAAezB,IAAc9C,EAAY/2O,EAAQokD,EAAOpkD,EAAQokD,EAEpE,OADAk3L,EAAe74N,KAAK84N,gBAAgBv7O,EAAOokD,EAAMk3L,GAC1C74N,KAAK0iE,WAAa1iE,KAAKk2N,UAAU2C,GAAgBA,CAC5D,EACAt/O,EAAe8lB,UAAUy5N,gBAAkB,SAAUv7O,EAAOokD,EAAMviD,GAC9D,IAAI25O,EAAW,IAAI/vN,OAAO,YACtBgwN,EAAaD,EAASjxN,KAAKvqB,EAAMnC,YACjC69O,EAAYF,EAASjxN,KAAK65B,EAAKvmD,YACnC,GAAI49O,GAAcC,EAAW,CACzB,IAAIC,EAAaF,EAAaD,EAASroM,KAAKnzC,EAAMnC,YAAY,GAAGnD,OAAS,EACtEkhP,EAAYF,EAAYF,EAASroM,KAAKiR,EAAKvmD,YAAY,GAAGnD,OAAS,EACnE0oC,EAAM9e,KAAK8e,IAAIu4M,EAAYC,GAC/B,OAAen5N,KAAKo5N,WAAWh6O,EAAQuhC,EAC3C,CACA,OAAOvhC,CACX,EACA7F,EAAe8lB,UAAU+5N,WAAa,SAAUh6O,EAAQi6O,GACpDA,EAAYA,GAAa,EACzB,IAAIC,EAASz3N,KAAK03N,IAAI,GAAIF,GAC1B,OAAOj6O,GAAUk6O,EAAiBz3N,KAAKuvE,MAAMhyF,GAAUk6O,CAC3D,EACA//O,EAAe8lB,UAAUkzE,YAAc,SAAUh1F,EAAOwE,GAChDA,IACAie,KAAKq3N,YAAa,GAER,OAAV95O,GAAmBu8B,MAAMv8B,IACrByiB,KAAKm2N,WACL54O,EAAQyiB,KAAKo2N,YAAY74O,EAAOyiB,KAAKm2N,WAG7Cn2N,KAAKw+G,WAAajhI,EAClByiB,KAAKi2N,YAAsB,OAAV14O,GAAkBu8B,MAAMv8B,GAAS,KAAOyiB,KAAK0iE,WAAa1iE,KAAKk2N,UAAU34O,GAASA,GAE9FyiB,KAAK20N,iBACN30N,KAAKu3N,iBAAiBx1O,EAE9B,EACAxI,EAAe8lB,UAAUm6N,eAAiB,SAAUrmN,EAAMsmN,IACtDz3O,EAAAA,EAAAA,IAASmxB,EAAMsmN,EAASz5N,KAAKu1N,aAC7Bv1N,KAAKuyE,YAAYvyE,KAAKziB,MAC1B,EACAhE,EAAe8lB,UAAU42N,YAAc,SAAU14O,GAC7C,GAAMA,GAAmB,IAAVA,EAIV,CACD,IAAIm8O,EAAmB15N,KAAK25N,oBAAoBp8O,GAChDyiB,KAAK26B,cAAc,CAAEp9C,MAAOyiB,KAAKo2N,YAAY74O,EAAOm8O,KAAqB,EAC7E,MANIn8O,EAAQ,KACRyiB,KAAK26B,cAAc,CAAEp9C,MAAOA,IAAS,GAMzCyiB,KAAK45N,aACA55N,KAAK0iE,YACN1iE,KAAKkwE,eAEb,EACA32F,EAAe8lB,UAAUu6N,WAAa,WAClC,GAAI55N,KAAKziB,OAAwB,IAAfyiB,KAAKziB,MAAa,CAChC,IAAIA,EAAQyiB,KAAKuoB,eACb8sD,EAAer1E,KAAKioD,UAAY1qE,EAAQyiB,KAAKvf,SAAS2nC,gBAAgBpoB,KAAKu1N,YAAnCv1N,CAAgDA,KAAKziB,OACjGyiB,KAAKy3N,gBAAgBpiJ,IACrB7+C,EAAAA,EAAAA,IAAWx2B,KAAKhd,QAAS,CAAE,gBAAiBzF,IAC5CyiB,KAAKq2N,YAAY94O,MAAQyiB,KAAKziB,MAAMnC,WACjB,OAAf4kB,KAAKziB,OAAkByiB,KAAK65N,yBAC5B75N,KAAKq2N,YAAY94O,MAAQyiB,KAAKq2N,YAAY94O,MAAMkZ,QAAQ,IAAKuJ,KAAK65N,wBAE1E,MAEI75N,KAAKy3N,gBAAgB,IACrBz3N,KAAKhd,QAAQk+C,gBAAgB,iBAC7BlhC,KAAKq2N,YAAY94O,MAAQ,IAEjC,EACAhE,EAAe8lB,UAAUo4N,gBAAkB,SAAU95N,EAAK3a,GACtD49E,EAAAA,EAAM5+E,SAAS2b,EAAM3a,GAAoBgd,KAAKhd,QAAUgd,KAAK2gE,eAAgB3gE,KAAKoiE,gBACtF,EACA7oF,EAAe8lB,UAAU6wE,cAAgB,WACrClwE,KAAK63E,cAAe,GAChB73E,KAAKziB,OAAwB,IAAfyiB,KAAKziB,SACnByiB,KAAK63E,eAAiB73E,KAAKziB,MAAQyiB,KAAK2gB,KAAO3gB,KAAKziB,MAAQyiB,KAAK0gB,MAErE1gB,KAAKw3N,iBACT,EACAj+O,EAAe8lB,UAAUs6N,oBAAsB,SAAUp8O,GACrD,IAAIm8O,EAEAI,EAAY,IAAI9wN,OAAO,qBACvBq6D,EAAc9lF,EAAMnC,WACxB,GAAI0+O,EAAUhyN,KAAKu7D,GAAc,CAC7B,IAAIjkF,EAAS06O,EAAUppM,KAAK2yC,IACvB11D,EAAAA,EAAAA,IAAkBvuB,KACnBikF,EAAc9lF,EAAM4jC,QAAQtf,KAAK6e,IAAIxhC,SAASE,EAAO,GAAI,IAAK,KAEtE,CACA,IAAIghC,EAAcijD,EAAYpvE,MAAM,KAAK,GAKzC,OAJAylO,EAAoBt5M,GAAgBA,EAAYnoC,OAAamoC,EAAYnoC,OAAhB,EACnC,OAAlB+nB,KAAKm2N,WACLuD,EAAmBA,EAAmB15N,KAAKm2N,SAAWuD,EAAmB15N,KAAKm2N,UAE3EuD,CACX,EACAngP,EAAe8lB,UAAUkpB,aAAe,WACpC,IAAImxM,EAAmB15N,KAAK25N,oBAAoB35N,KAAKziB,OACrD,OAAOyiB,KAAKvf,SAAS2nC,gBAAgB,CACjC3K,sBAAuBi8M,EACvBh8M,sBAAuBg8M,EAAkB97M,aAAa,GAFnD5d,CAGJA,KAAKziB,MACZ,EACAhE,EAAe8lB,UAAU62N,UAAY,SAAU34O,GAC3C,OAAIA,EAAQyiB,KAAK2gB,IACN3gB,KAAK2gB,IAEZpjC,EAAQyiB,KAAK0gB,IACN1gB,KAAK0gB,IAETnjC,CACX,EACAhE,EAAe8lB,UAAU+2N,YAAc,SAAU74O,EAAO87O,GACpD,IAAIj6O,EAAS7B,EACT44O,EAAWkD,GAAa,EACxBU,EAAU36O,EAAOhE,WAAW6Y,MAAM,KAElC+lO,GADJ56O,EAASyiB,KAAKuvE,MAAM93F,OAAOygP,EAAQ,GAAK,KAAOA,EAAQ,GAAMzgP,OAAOygP,EAAQ,IAAM5D,EAAYA,MACzE/6O,WAAW6Y,MAAM,KAEtC,OADA7U,EAAS9F,OAAO0gP,EAAQ,GAAK,KAAOA,EAAQ,GAAM1gP,OAAO0gP,EAAQ,IAAM7D,GAAaA,IAC7E78O,OAAO8F,EAAO+hC,QAAQg1M,GACjC,EACA58O,EAAe8lB,UAAUk+C,YAAc,SAAUx7D,GAE7C,OADAA,EAAM2uD,kBACC,CACX,EACAn3D,EAAe8lB,UAAU66C,gBAAkB,SAAUn4D,GACjD,IAAKie,KAAK9mB,SAAW8mB,KAAKqhE,SACtB,OAAO,EAEX,IAAKzuC,EAAAA,GAAQY,UAAqC,SAAzBZ,EAAAA,GAAQyB,KAAKpB,SAAwC,KAAlBlxC,EAAMi4D,QAAgB,CAC9E,IAAI+9K,EAAc/3N,KAAKvf,SAAS6nC,gBAAgB,CAAE9uC,OAAQ,KAAxCwmB,CAA+CA,KAAKhd,QAAQzF,OAE9E,OADAyiB,KAAKuyE,YAAYwlJ,EAAah2O,IACvB,CACX,CACA,GAAoB,IAAhBA,EAAM24D,OAAe34D,EAAMutJ,SAAWvtJ,EAAMu4D,SAA6B,IAAlBv4D,EAAMi4D,SAAmC,KAAlBj4D,EAAMi4D,QACpF,OAAO,EAEX,IAAIigL,EAAczwL,OAAOC,aAAa1nD,EAAM24D,OACxCo6K,GAAmB1nN,EAAAA,EAAAA,IAAS,WAAWmc,EAAAA,EAAAA,IAAiBvpB,KAAKwpB,SAC7D0wM,EAA0C,kBAAfn4O,EAAMuiF,MAA4B21J,IAAgBnF,EAE7EoF,IACAD,EAAcnF,GAElB,IAAI/8O,EAAOioB,KAAKhd,QAAQzF,MAExB,GADAxF,EAAOA,EAAK8L,UAAU,EAAGmc,KAAKhd,QAAQyiF,gBAAkBw0J,EAAcliP,EAAK8L,UAAUmc,KAAKhd,QAAQ0iF,cAC7F1lE,KAAKyU,eAAe3M,KAAK/vB,GAKzB,CAED,GAAImiP,EAA0B,CAC1B,IAAIzsN,EAAQzN,KAAKhd,QAAQyiF,eAAiB,EAC1CzlE,KAAKhd,QAAQzF,MAAQxF,EACrBioB,KAAKhd,QAAQstF,kBAAkB7iE,EAAOA,GACtC1rB,EAAM2uD,iBACN3uD,EAAMinE,iBACV,CACA,OAAO,CACX,CAZI,OAFAjnE,EAAM2uD,iBACN3uD,EAAMinE,mBACC,CAaf,EACAzvE,EAAe8lB,UAAUoV,aAAe,WACpC,IAAI2H,GAAgBmN,EAAAA,EAAAA,IAAiBvpB,KAAKwpB,QACtCsrM,GAAmB1nN,EAAAA,EAAAA,IAAS,UAAWgP,GACvC+9M,EAAe,IAInB,MA71Be,MA01BXrF,IACAA,EAAmB,KAAOA,GAER,IAAlB90N,KAAKm2N,UAAkBn2N,KAAKy4N,sBACrBjE,GAEPx0N,KAAKm2N,UAAYn2N,KAAKy4N,wBACtB0B,EAAe,MAAQn6N,KAAKm2N,SAAW,KAGpC,IAAIntN,OAAO,gBAAkB8rN,EAAmB,MAAQqF,EAC3D,QAAUrF,EAAmB,MAAQqF,EAAe,SAC5D,EACA5gP,EAAe8lB,UAAU+6N,WAAa,SAAUr4O,GAE5C,IAAIwhB,EADJxhB,EAAM2uD,iBAGN,IAAI2pL,EAAWt4O,EACXs4O,EAASC,WACT/2N,EAAQ82N,EAASC,WAAa,IAEzBD,EAASl5F,SACd59H,GAAS82N,EAASl5F,OAAS,GAE3B59H,EAAQ,EACRvD,KAAKiD,OAAOqxN,EAAWvyO,GAElBwhB,EAAQ,GACbvD,KAAKiD,OAAOsxN,EAAWxyO,GAE3Bie,KAAKu9C,YAAYx7D,EACrB,EACAxI,EAAe8lB,UAAU6pD,aAAe,SAAUnnE,GAC9C,IAAIiuB,EAAQhQ,KAIZ,GAHAiQ,aAAaykN,GACb10N,KAAKu6N,eAAiB,CAAEx4O,MAAOA,EAAOxE,MAAOyiB,KAAKziB,MAAOyjF,UAAWhhE,KAAKghE,WACzEhhE,KAAK81B,QAAQ,QAAS91B,KAAKu6N,gBACtBv6N,KAAK9mB,UAAW8mB,KAAKqhE,SAA1B,CAMA,GAHArhE,KAAKioD,WAAY,GACjB9wB,EAAAA,EAAAA,IAAY,CAACn3B,KAAKghE,WAAYnB,GAC9B7/D,KAAKqzE,UAAYrzE,KAAKziB,MACjByiB,KAAKziB,OAAwB,IAAfyiB,KAAKziB,MAAc,CAClC,IAAIi9O,EAAgBx6N,KAAKuoB,eAEzB,GADAvoB,KAAKy3N,gBAAgB+C,IAChBx6N,KAAK60N,cACN,GAAKjiM,EAAAA,GAAQY,UAAqC,SAAzBZ,EAAAA,GAAQyB,KAAKpB,QAGjC,CACD,IAAInjB,EAAS8iB,EAAAA,GAAQY,UAAYZ,EAAAA,GAAQmB,MAAS,IAAM,EACxD2gM,EAAmBxkN,YAAW,WAC1BF,EAAMhtB,QAAQstF,kBAAkB,EAAGkqJ,EAAcviP,OACrD,GAAG63B,EACP,MAPI9P,KAAKhd,QAAQstF,kBAAkB,EAAGkqJ,EAAcviP,OAS5D,CACK26C,EAAAA,GAAQY,UACTwB,EAAAA,GAAaG,IAAIn1B,KAAKhd,QAAS,4BAA6Bgd,KAAKo6N,WAAYp6N,KApBjF,CAsBJ,EACAzmB,EAAe8lB,UAAUwpD,gBAAkB,SAAU9mE,GACjD,IAAIiuB,EAAQhQ,KAGZ,GAFAA,KAAKy6N,cAAgB,CAAE14O,MAAOA,EAAOxE,MAAOyiB,KAAKziB,MAAOyjF,UAAWhhE,KAAKghE,WACxEhhE,KAAK81B,QAAQ,OAAQ91B,KAAKy6N,eACrBz6N,KAAK9mB,UAAW8mB,KAAKqhE,SAA1B,CAGA,GAAIrhE,KAAK60N,eAEL,GADA9yO,EAAM2uD,iBACF9d,EAAAA,GAAQY,SAAU,CAClB,IAAIshD,EAAU90E,KAAKhd,QAAQzF,MAC3ByiB,KAAKhd,QAAQyuB,QACbzR,KAAK60N,eAAgB,EACrB,IAAI6F,EAAQ16N,KAAKhd,QACjBktB,YAAW,WACPF,EAAMynN,gBAAgB3iJ,EAAS4lJ,EACnC,GAAG,IACP,MAEC,CACD16N,KAAKioD,WAAY,EACZjoD,KAAKhd,QAAQzF,MAAMtF,QACpB+nB,KAAK26B,cAAc,CAAEp9C,MAAO,OAAQ,GAExC,IAAIw6O,EAAc/3N,KAAKvf,SAAS6nC,gBAAgB,CAAE9uC,OAAQ,KAAxCwmB,CAA+CA,KAAKhd,QAAQzF,OAC9EyiB,KAAKuyE,YAAYwlJ,GACZnlM,EAAAA,GAAQY,UACTwB,EAAAA,GAAaW,OAAO31B,KAAKhd,QAAS,4BAA6Bgd,KAAKo6N,WAE5E,CAEA,IADkBhhM,EAAAA,EAAAA,IAAQp5B,KAAKhd,QAAS,QACvB,CACb,IAAIA,EAAUgd,KAAKhd,QAAQgpE,mBACvB2uK,EAAa/3N,SAASqoD,YAAY,cACtC0vK,EAAWzvK,UAAU,YAAY,GAAO,GACxCloE,EAAQmoE,cAAcwvK,EAC1B,CA9BA,CA+BJ,EACAphP,EAAe8lB,UAAUs4N,mBAAqB,SAAU51O,GACpD,IAAIiuB,EAAQhQ,KAKZ,GAJIA,KAAKioD,YACLjoD,KAAK60N,eAAgB,EACrB9yO,EAAM2uD,kBAEL1wC,KAAK46N,eAAe74O,GAAzB,CAIaie,KAAK46N,eAAe74O,GAAjC,IACIo8C,EAASp8C,EAAM4tD,cACf1sC,EAAUk7B,EAAOvH,UAAUM,SAASm9L,GAAWC,EAAYC,EAC/Dv/L,EAAAA,GAAaG,IAAIgJ,EAAQ,aAAcn+B,KAAK66N,aAAc76N,MAC1DA,KAAK86N,QAAUnpN,aAAY,WACvB3B,EAAMglN,UAAW,EACjBhlN,EAAM/M,OAAOA,EAAQlhB,EACzB,GAAG,KACHizC,EAAAA,GAAaG,IAAIvyB,SAAU,UAAW5C,KAAK66N,aAAc76N,KAVzD,CAWJ,EACAzmB,EAAe8lB,UAAUw4N,mBAAqB,SAAU91O,GACpD,IAAIo8C,EACJ,GAAmB,cAAfp8C,EAAMzH,KAAsB,CAC5B,IAAIygP,EAAah5O,EAAMmiM,QACvB/lJ,EAAS48L,EAAW9iP,QAAU2qB,SAASs1C,iBAAiB6iL,EAAW,GAAG33L,MAAO23L,EAAW,GAAGx3L,MAC/F,MAEIpF,EAASv7B,SAASs1C,iBAAiBn2D,EAAMgvD,QAAShvD,EAAMivD,SAEtD7S,EAAOvH,UAAUM,SAASk9L,IAC5BviN,cAAc7R,KAAK86N,QAE3B,EACAvhP,EAAe8lB,UAAUu4N,iBAAmB,SAAU71O,GAWlD,GAVAie,KAAKqzE,UAAYrzE,KAAKziB,MAClByiB,KAAK60N,gBACL70N,KAAKhd,QAAQyuB,QACRmhB,EAAAA,GAAQY,WACTxzB,KAAK60N,eAAgB,IAGxBjiM,EAAAA,GAAQY,UACTzxC,EAAM2uD,iBAEL1wC,KAAK46N,eAAe74O,GAAzB,CAGA,IAAIo8C,EAASp8C,EAAM4tD,cACf1sC,EAAUk7B,EAAOvH,UAAUM,SAASm9L,GAAWC,EAAYC,EAQ/D,GAPAv/L,EAAAA,GAAaW,OAAOwI,EAAQ,aAAcn+B,KAAK66N,cAC1C76N,KAAKg1N,UACNh1N,KAAKiD,OAAOA,EAAQlhB,GAExBie,KAAKg1N,UAAW,EAChBhgM,EAAAA,GAAaW,OAAO/yB,SAAU,UAAW5C,KAAK66N,eAC5BzhM,EAAAA,EAAAA,IAAQp5B,KAAKhd,QAAS,QACvB,CACb,IAAIA,EAAUgd,KAAKhd,QAAQgpE,mBACvB6Y,EAAajiE,SAASqoD,YAAY,iBACtC4Z,EAAW3Z,UAAU,SAAS,GAAO,GACrCloE,EAAQmoE,cAAc0Z,EAC1B,CAfA,CAgBJ,EACAtrF,EAAe8lB,UAAUu7N,eAAiB,SAAU74O,GAChD,QAAKA,EAAM24D,OAAyB,IAAhB34D,EAAM24D,OAAiB34D,EAAMuoH,QAA2B,IAAjBvoH,EAAMuoH,SACzDtqG,KAAK9mB,SAAW8mB,KAAKqhE,YAG7BxvD,cAAc7R,KAAK86N,UACZ,EACX,EACAvhP,EAAe8lB,UAAU27N,qBAAuB,WAC5Cp6J,EAAAA,EAAM4J,eAAexqE,KAAK+gE,cAC1B,IAAIs1J,EAAcr2N,KAAKq2N,YACvBr2N,KAAKq2N,YAAY1gM,SACjBirC,EAAAA,EAAM6J,YAAYzqE,KAAKhd,QAASgd,KAAK2gE,eAAgB3gE,KAAK0hE,YAAa1hE,KAAK4Q,eAC5E5Q,KAAKghE,UAAUhpC,aAAaq+L,EAAar2N,KAAKghE,UAAUld,WAAW,GACvE,EACAvqE,EAAe8lB,UAAUw7N,aAAe,SAAU94O,GAC9CA,EAAMinE,kBACNn3C,cAAc7R,KAAK86N,SACnB96N,KAAKg1N,UAAW,EACZh1N,KAAKg3N,QACLhiM,EAAAA,GAAaW,OAAO31B,KAAKg3N,OAAQ,aAAch3N,KAAK66N,cAEpD76N,KAAK+2N,UACL/hM,EAAAA,GAAaW,OAAO31B,KAAK+2N,SAAU,aAAc/2N,KAAK66N,aAE9D,EAQAthP,EAAe8lB,UAAU47N,UAAY,SAAUt5L,QAC9B,IAATA,IAAmBA,EAAO3hC,KAAK2hC,MACnC3hC,KAAKq3N,YAAa,EAClBr3N,KAAKi2N,YAAYj2N,KAAKs3N,cAAct3N,KAAKziB,MAAOokD,EAAM2yL,IACtDt0N,KAAKu3N,kBACT,EAQAh+O,EAAe8lB,UAAU67N,UAAY,SAAUv5L,QAC9B,IAATA,IAAmBA,EAAO3hC,KAAK2hC,MACnC3hC,KAAKq3N,YAAa,EAClBr3N,KAAKi2N,YAAYj2N,KAAKs3N,cAAct3N,KAAKziB,MAAOokD,EAAM4yL,IACtDv0N,KAAKu3N,kBACT,EAQAh+O,EAAe8lB,UAAUqoB,QAAU,WAC/B1nB,KAAKm7C,gBACL5iB,EAAAA,EAAAA,IAAOv4B,KAAKq2N,aACRr2N,KAAK81N,iBACL91N,KAAK83N,uBACLv/L,EAAAA,EAAAA,IAAOv4B,KAAKg3N,SACZz+L,EAAAA,EAAAA,IAAOv4B,KAAK+2N,WAKhB,IAHA,IAAInkH,EAAY,CAAC,kBAAmB,OAAQ,eAAgB,gBACxD,gBAAiB,iBAAkB,aAAc,oBAAqB,WACtE,gBAAiB,gBAAiB,gBAAiB,gBAC9CztG,EAAI,EAAGA,EAAIytG,EAAU36H,OAAQktB,IAClCnF,KAAKhd,QAAQk+C,gBAAgB0xE,EAAUztG,IAE3CnF,KAAKhd,QAAQ4zC,UAAUjB,OAAO,WAC9B31B,KAAKghE,UAAUiI,sBAAsB,WAAYjpE,KAAKhd,UACtDu1C,EAAAA,EAAAA,IAAOv4B,KAAKghE,WACZhhE,KAAKg3N,OAAS,KACdh3N,KAAK+2N,SAAW,KAChB/2N,KAAKghE,UAAY,KACjBhhE,KAAKq2N,YAAc,KACnBr2N,KAAK8oD,gBAAkB,KACvB9oD,KAAKy6N,cAAgB,KACrBz6N,KAAKu6N,eAAiB,KACtBv6N,KAAK+gE,aAAe,KACpBH,EAAAA,EAAMl5C,UACNjc,EAAOpM,UAAUqoB,QAAQhoB,KAAKM,KAClC,EAMAzmB,EAAe8lB,UAAUgyE,QAAU,WAC/B,OAAOrxE,KAAKhd,QAAQzF,KACxB,EAOAhE,EAAe8lB,UAAUgoD,QAAU,WAC3BzkD,SAASmjE,gBAAkB/lE,KAAKhd,SAAWgd,KAAK9mB,UAChD8mB,KAAKhd,QAAQyuB,SACbglB,EAAAA,EAAAA,IAAS,CAACz2B,KAAKghE,WAAY,CAACyzJ,IAEpC,EAMAl7O,EAAe8lB,UAAU8mE,SAAW,WAC5BvjE,SAASmjE,gBAAkB/lE,KAAKhd,SAAWgd,KAAK9mB,UAChD8mB,KAAKhd,QAAQJ,QACbu0C,EAAAA,EAAAA,IAAY,CAACn3B,KAAKghE,WAAY,CAACyzJ,IAEvC,EAOAl7O,EAAe8lB,UAAUytC,eAAiB,WAEtC,OAAO9sC,KAAKotC,aADI,CAAC,SAErB,EAUA7zD,EAAe8lB,UAAUi8B,kBAAoB,SAAU+G,EAASC,GAC5D,IAAK,IAAI/zB,EAAK,EAAGvoB,EAAKnH,OAAOC,KAAKujD,GAAU9zB,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAC9D,IAAI4E,EAAOntB,EAAGuoB,GACd,OAAQ4E,GACJ,IAAK,QACDnT,KAAKg2N,gBAAgB3zL,EAAQ0R,OAC7B6sB,EAAAA,EAAMC,eAAe7gE,KAAKhd,QAASgd,KAAKghE,WACxC,MACJ,IAAK,WACDhhE,KAAKslE,eAAejjC,EAAQliD,SAAUmiD,EAAQniD,UAC9C,MACJ,IAAK,UACDygF,EAAAA,EAAM7lF,WAAWsnD,EAAQnpD,QAAS8mB,KAAKhd,SACvCgd,KAAK0kE,iBACL,MACJ,IAAK,YACD9D,EAAAA,EAAM0J,aAAajoC,EAAQsI,UAAW,CAAC3qC,KAAKghE,YAC5C,MACJ,IAAK,WACDJ,EAAAA,EAAMyJ,YAAYhoC,EAAQg/B,SAAUrhE,KAAKhd,SACrCgd,KAAKqhE,UACL7qC,EAAAA,EAAAA,IAAWx2B,KAAKhd,QAAS,CAAE,gBAAiB,SAG5Cgd,KAAKhd,QAAQk+C,gBAAgB,iBAEjC,MACJ,IAAK,iBACDlhC,KAAK01N,0BACL11N,KAAK22N,0BACL32N,KAAK28F,qBAAoB,GACzB38F,KAAKytE,iBAAgB,GACrB7M,EAAAA,EAAM0yJ,kBAAkBtzN,KAAKghE,UAAWhhE,KAAKhd,SAC7C,MACJ,IAAK,cACD49E,EAAAA,EAAMwJ,eAAe/nC,EAAQq/B,YAAa1hE,KAAKhd,SAC/C49E,EAAAA,EAAMC,eAAe7gE,KAAKhd,QAASgd,KAAKghE,WACxC,MACJ,IAAK,OACDhhE,KAAK2hC,KAAOU,EAAQV,KACpB3hC,KAAK21N,eACL,MACJ,IAAK,iBACD31N,KAAKm7N,iBAAiB94L,GACtB,MACJ,IAAK,kBACDriC,KAAKo7N,kBAAkB/4L,GACvB,MACJ,IAAK,iBACDriC,KAAK2gE,eAAiBt+B,EAAQs+B,eAC9B3gE,KAAKg7N,uBACL,MACJ,IAAK,QACDh7N,KAAK20N,iBAAmB30N,KAAKyrD,WAAazrD,KAAK4oD,QAAU5oD,KAAKmyD,cAC9DnyD,KAAKuyE,YAAYlwC,EAAQ9kD,OACrByiB,KAAK20N,kBACL30N,KAAKmyD,eAAgB,EACrBnyD,KAAK20N,iBAAkB,GAE3B,MACJ,IAAK,MACL,IAAK,OACD3yO,EAAAA,EAAAA,IAASmxB,GAAM/F,EAAAA,EAAAA,IAAS+F,EAAMkvB,GAAUriC,MACxCA,KAAK2xE,iBACL3xE,KAAKuyE,YAAYvyE,KAAKziB,OACtB,MACJ,IAAK,aACDyiB,KAAK0iE,WAAargC,EAAQqgC,WAC1B1iE,KAAKuyE,YAAYvyE,KAAKziB,OACtByiB,KAAKkwE,gBACL,MACJ,IAAK,SACDlwE,KAAKy1N,kBACLz1N,KAAK+hE,KAAKpmB,UAAU37C,KAAKwpB,QACzBxpB,KAAK03N,gBACL13N,KAAK41N,oBACLh1J,EAAAA,EAAMwJ,eAAepqE,KAAK0hE,YAAa1hE,KAAKhd,SAC5Cgd,KAAKuyE,YAAYvyE,KAAKziB,OACtB,MACJ,IAAK,WAEG,IAAIk8O,GAAUrsN,EAAAA,EAAAA,IAAS+F,EAAMkvB,GAC7BriC,KAAK26B,cAAc,CAAEjP,aAAc+tM,IAAW,GAC9Cz5N,KAAKw5N,eAAermN,EAAMsmN,GAE9B,MACJ,IAAK,eAEG,IAAI4B,GAAYjuN,EAAAA,EAAAA,IAAS+F,EAAMkvB,GAC/BriC,KAAK26B,cAAc,CAAEne,SAAU6+M,IAAa,GAC5Cr7N,KAAKw5N,eAAe,WAAY6B,GAEpC,MACJ,IAAK,UACDr5O,EAAAA,EAAAA,IAASmxB,GAAM/F,EAAAA,EAAAA,IAAS+F,EAAMkvB,GAAUriC,MACxCA,KAAKw1N,kBACLx1N,KAAKuyE,YAAYvyE,KAAKziB,OACtB,MACJ,IAAK,WACDyiB,KAAKm2N,SAAW9zL,EAAQ8zL,SACxBn2N,KAAKuyE,YAAYvyE,KAAKziB,OAElC,CACJ,EACAhE,EAAe8lB,UAAU+7N,kBAAoB,SAAU/4L,GACnDu+B,EAAAA,EAAM2J,eAAeloC,EAAQ+/B,gBAAiBpiE,KAAKhd,QAASgd,KAAK+gE,kBAAc7lF,EAAW8kB,KAAK4Q,eAC/F5Q,KAAK0kE,gBACT,EACAnrF,EAAe8lB,UAAU87N,iBAAmB,SAAU94L,GAC9CA,EAAQyzL,eACR91N,KAAK+1N,oBAGLx9L,EAAAA,EAAAA,IAAOv4B,KAAKg3N,SACZz+L,EAAAA,EAAAA,IAAOv4B,KAAK+2N,UAEpB,EAOAx9O,EAAe8lB,UAAUu8B,cAAgB,WACrC,MAAO,gBACX,EACA+D,EAAW,EACPzB,EAAAA,EAAAA,IAAS,KACV3kD,EAAe8lB,UAAW,gBAAY,GACzCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACV3kD,EAAe8lB,UAAW,aAAS,GACtCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAW5kD,OAAO49O,YACnB39O,EAAe8lB,UAAW,WAAO,GACpCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS5kD,OAAO49O,YACjB39O,EAAe8lB,UAAW,WAAO,GACpCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,IACV3kD,EAAe8lB,UAAW,YAAQ,GACrCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACV3kD,EAAe8lB,UAAW,aAAS,GACtCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACV3kD,EAAe8lB,UAAW,mBAAe,GAC5CsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,CAAC,IACX3kD,EAAe8lB,UAAW,sBAAkB,GAC/CsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV3kD,EAAe8lB,UAAW,sBAAkB,GAC/CsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV3kD,EAAe8lB,UAAW,gBAAY,GACzCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV3kD,EAAe8lB,UAAW,eAAW,GACxCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV3kD,EAAe8lB,UAAW,uBAAmB,GAChDsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV3kD,EAAe8lB,UAAW,yBAAqB,GAClDsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACV3kD,EAAe8lB,UAAW,cAAU,GACvCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACV3kD,EAAe8lB,UAAW,gBAAY,GACzCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACV3kD,EAAe8lB,UAAW,gBAAY,GACzCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACV3kD,EAAe8lB,UAAW,oBAAgB,GAC7CsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV3kD,EAAe8lB,UAAW,kBAAc,GAC3CsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV3kD,EAAe8lB,UAAW,6BAAyB,GACtDsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,UACV3kD,EAAe8lB,UAAW,sBAAkB,GAC/CsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDj2B,EAAe8lB,UAAW,eAAW,GACxCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDj2B,EAAe8lB,UAAW,iBAAa,GAC1CsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDj2B,EAAe8lB,UAAW,cAAU,GACvCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDj2B,EAAe8lB,UAAW,aAAS,GACtCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDj2B,EAAe8lB,UAAW,YAAQ,GACrC9lB,EAAiBomD,EAAW,CACxBhB,EAAAA,IACDplD,EAEP,CAh0CoC,CAg0ClC8wD,EAAAA,oGCt1CSmhC,gCAzBArrF,EAAW,CAClByyF,GAAI,cACJg4C,GAAI,qBACJttI,MAAO,oBACPmmH,KAAM,cACN1rH,KAAM,cACNugO,MAAO,eACP38N,QAAS,YACTssG,SAAU,aACVC,SAAU,aACVphC,YAAa,iBACbw0K,SAAU,cACV19I,MAAO,UACPp3F,IAAK,aACL+0O,YAAa,qBACbxiP,SAAU,aACVyiP,MAAO,aACPC,YAAa,iBACbC,WAAY,gBACZC,UAAW,eA28BR,SAASC,EAAe/gI,EAAUh4G,GACrC,IAAIg5O,EAAY,CAAC,EACjB,IAAIluN,EAAAA,EAAAA,IAAkBktF,IAAmC,kBAAdA,GAAgD,kBAAdA,KACrEltF,EAAAA,EAAAA,IAAkBktF,EAAShC,UAC/B,OAAOgC,EAGP,IAAK,IAAItsF,EAAK,EAAGvoB,EAAKnH,OAAOC,KAAK+D,GAAS0rB,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAC7D,IACIutN,EAAYj5O,EAAO,GADXmD,EAAGuoB,IAEXhxB,GAASowB,EAAAA,EAAAA,IAAkBmuN,IACJ,kBAAfA,OAA0D5gP,GAAhCkyB,EAAAA,EAAAA,IAAS0uN,EAAWjhI,IACrDltF,EAAAA,EAAAA,IAAkBpwB,KACnBs+O,EAAU,GAAKC,GAAav+O,EAEpC,CAEJ,OAAOs+O,CACX,CACA,SAASE,EAAgBvlO,GACrB,GAAIA,EACA,IACI,MAAwB,oBAAbA,GAA2BoM,SAAS2P,cAAc/b,IAClD6qD,EAAAA,EAAAA,IAAQz+C,SAAS2P,cAAc/b,GAAU+a,UAAU0pC,SAGnDoG,EAAAA,EAAAA,IAAQ7qD,EAEvB,CACA,MAAO/a,GACH,OAAO4lE,EAAAA,EAAAA,IAAQ7qD,EACnB,CAGR,EAt+BA,SAAWg1E,GAKPA,EAASwwJ,oBAAsB,CAC3Bp3O,GAAI,KACJ7M,KAAM,OACNyO,IAAK,MACLjJ,MAAO,QACP0+O,UAAW,YACX/iP,QAAS,UACTgvG,SAAU,WACVD,SAAU,WACVrhC,QAAS,UACTx2C,MAAO,QACPknB,UAAW,YACX4kM,YAAa,cACbC,QAAS,UACT7xK,eAAgB,iBAChB8xK,cAAe,gBACfC,gBAAiB,kBACjBC,SAAU,WACVt/H,QAAS,KACTphB,OAAQ,MAEZ,IAAI2gJ,EAAwB,CACxB3+I,MAAO,EACP4+I,SAAU,eACVC,SAAU,eACV97H,cAAe,QACf+B,SAAU,YACVg6H,YAAa,gBAEbC,EAAyB,CACzBC,cAAc,EACdn8H,UAAU,EACVh6C,qBAAqB,EACrBo2K,gBAAgB,EAChBh6O,OAAQ2oF,EAASwwJ,oBACjBt7H,eAAgB67H,EAChBO,UAAW,GACXC,UAAW,GACXC,iBAAiB,EACjB38H,UAAW,OACX7pG,SAAU,KACVwnG,cAAe,KACfgQ,eAAgB,KAChBivH,gBAAiB,qBACjBnmK,WAAY,OACZomK,mBAAoB,QACpB1pG,eAAe,GA8CnB,SAAS2pG,EAAoBvsN,EAAev3B,EAG5C+jP,EAAe18N,EAAS28N,GAEpB,OAAOC,EAAW1sN,EADH0uF,EAAwB1uF,EAAev3B,EAAY+jP,EAAe18N,EAAS28N,GAC/C,KAAM38N,EACrD,CAiBA,SAAS4+F,EAAwB1uF,EAAev3B,EAEhD+jP,EAAe18N,EAAS28N,GACpB,IAAIE,EAAW,GACXC,GAAS7uN,EAAAA,EAAAA,IAAO,CAAC,EAAGguN,EAAwBj8N,GAChDvgB,EAAWs9O,EAAeD,EAAO1mK,YAEjC,IADA,IAAIlyE,EAAK84O,IACAv4N,EAAI,EAAGA,EAAI9rB,EAAWpB,OAAQktB,IACnC,KAAIwI,EAAAA,EAAAA,IAAkBt0B,EAAW8rB,IAAjC,CAGA,IAAIytE,OAAK,EACT,GAAI4qJ,EAAO/pG,cAA+C,oBAAxB+pG,EAAO/pG,aAA6B,CAClE,IAAI7zG,EAAU,CACVvmC,WAAYA,EACZumC,QAASvmC,EAAW8rB,GACpBptB,KAAMsB,EAAW8rB,GACjBzE,QAAS88N,GAEbA,EAAO/pG,aAAa7zG,EACxB,CAOA,GALIgzD,EADAwqJ,EACKO,EAAsB/sN,EAAev3B,EAAW8rB,QAAIjqB,EAAW,KAAM,KAAM,GAAI,KAAM0J,EAAIugB,EAAGzE,GAG5Fk9N,EAAWhtN,EAAev3B,EAAW8rB,QAAIjqB,EAAW,KAAM,KAAMwlB,EAAS28N,GAE9EG,EAAOxnJ,aAA6C,oBAAvBwnJ,EAAOxnJ,YAA4B,CAC5Dp2D,EAAU,CACVvmC,WAAYA,EACZumC,QAASvmC,EAAW8rB,GACpBptB,KAAMsB,EAAW8rB,GACjB/Z,KAAMwnF,EACNlyE,QAAS88N,GAEbA,EAAOxnJ,YAAYp2D,EACvB,CACA29M,EAAS99O,KAAKmzF,EA3Bd,CA6BJ,OAAO2qJ,CACX,CAmBA,SAAS/9H,EAAuB5uF,EAAev3B,EAE/CqnB,EAASk9E,EAAOw/I,EAAeC,GAC3B,IAAIG,GAAS7uN,EAAAA,EAAAA,IAAO,CAAC,EAAGguN,EAAwBj8N,GAChDvgB,EAAWs9O,EAAeD,EAAO1mK,YACjC,IAIIlyE,EAJA/B,GAAUw6O,GAC6B,aAAtCA,EAAkBzhM,iBAAwE,gBAAtCyhM,EAAkBzhM,iBACrDjtB,EAAAA,EAAAA,IAAO,CAAC,EAAG68D,EAASwwJ,oBAAqBwB,EAAO36O,QAAhE26O,EAAO36O,OACT69G,GAAiB/xF,EAAAA,EAAAA,IAAO,CAAC,EAAG4tN,EAAuBiB,EAAO98H,gBAE1Dm9H,EAAkB,GAClBjgJ,IACA8iB,EAAe9iB,MAAQA,GAE3B,IACIhL,EACAkrJ,EAFA1tN,EAAQ,GAGR/2B,GAAcA,EAAWpB,UAAW01B,EAAAA,EAAAA,IAAkBowN,EAAW1kP,GAAY+R,QAE5E2yO,EAAW1kP,GAAY+R,KAAKqkB,eAAe5sB,EAAO+B,MACnDA,EAAK84O,KAET,IAAK,IAAIv4N,EAAI,EAAGA,EAAI9rB,EAAWpB,OAAQktB,IAAK,CACxC,IAAI02N,EAAYD,EAAeviP,EAAW8rB,GAAItiB,GAC9C,KAAI8qB,EAAAA,EAAAA,IAAkBt0B,EAAW8rB,IAAjC,CAGA,GAAIq4N,EAAO/pG,cAA+C,oBAAxB+pG,EAAO/pG,aAA6B,CAClE,IAAI7zG,EAAU,CACVvmC,WAAYA,EACZumC,QAASvmC,EAAW8rB,GACpBptB,KAAM8jP,EAAUh5O,EAAO9K,MACvB2oB,QAAS88N,EACT36O,OAAQA,GAEZ26O,EAAO/pG,aAAa7zG,EACxB,CACA,IAAIo+M,EAAU3kP,EAAW8rB,GACrBq4N,EAAO/pG,cAA+C,oBAAxB+pG,EAAO/pG,eACrCooG,EAAYD,EAAeviP,EAAW8rB,GAAItiB,IAG1Cg5O,EAAUpsN,eAAe5sB,EAAO+B,OAAQ+oB,EAAAA,EAAAA,IAAkBkuN,EAAUh5O,EAAO+B,OAC3EA,EAAKi3O,EAAUh5O,EAAO+B,KAE1B,IAAIq5O,EAAW,GASf,GARIT,EAAOZ,eACHY,EAAOhqG,gBAAkBqoG,EAAUh5O,EAAO2D,MAAQq1O,EAAUh5O,EAAOu5O,gBACnEyB,EAAgBp+O,KAAKmxB,EAAc,QAAS,CAAE31B,UAAWkF,EAASm4N,MAAO/hL,MAAO,CAAEj8C,KAAM,eAGxF2jP,EAASx+O,KAAKmxB,EAAc,QAAS,CAAE31B,UAAWkF,EAASm4N,MAAO/hL,MAAO,CAAEj8C,KAAM,iBAGnE,IAAlB8iP,EAEII,EAAO/8H,UAAYo7H,EAAUpsN,eAAe5sB,EAAO+jE,YAAaj5C,EAAAA,EAAAA,IAAkBkuN,EAAUh5O,EAAO+jE,WACnGq3K,EAASx+O,KAAKmxB,EAAc,OAAQ,CAAE31B,UAAWkF,EAASsjH,KAAO,IAAMo4H,EAAUh5O,EAAO+jE,YAM5Fk3K,GAJAlrJ,EAAK+qJ,EAAsB/sN,EAAeotN,EAASnC,EAAWh5O,EAAQ26O,EAAOT,UAAWkB,KAEvFD,EAAQvuN,eAAe,cACpBuuN,EAAQnlI,UAA0Bj0G,EAAIugB,EAAGzE,IAC1B6R,cAAc,IAAMpyB,EAASu7O,YAC5C8B,EAAOhqG,eAAiBqqG,EAAgB5lP,SACxCy/C,EAAAA,EAAAA,IAAQmmM,EAAiBjrJ,EAAG36C,uBAG/B,CAyBD,IAxBA26C,EAAKgrJ,EAAWhtN,EAAeotN,EAASnC,EAAWh5O,EAAQ26O,EAAOT,UAAWr8N,EAAS28N,IACnFzmM,UAAUzB,IAAIh1C,EAASy9F,MAAQ,IAAM8iB,EAAe9iB,OACvDhL,EAAGt8C,aAAa,aAAcoqE,EAAe9iB,MAAMxiG,YACf,gBAAhCslH,EAAeC,eACf/tB,EAAG1xC,gBAAgB,cAEvB48L,EAAgBlrJ,EAAGrgE,cAAc,IAAMpyB,EAASu7O,YAE5CG,EAAUpsN,eAAe5sB,EAAOs5O,UAChCvpJ,EAAGt8C,aAAa,QAASulM,EAAUh5O,EAAOs5O,UAG1CN,EAAUpsN,eAAe5sB,EAAOynE,iBAAmBuxK,EAAUh5O,EAAOynE,iBACpEh0B,EAAas8C,EAAIipJ,EAAUh5O,EAAOynE,iBAGlCuxK,EAAUpsN,eAAe5sB,EAAO3J,WAA0C,IAA9B2iP,EAAUh5O,EAAO3J,UAC7D05F,EAAGh8C,UAAUzB,IAAIh1C,EAASpH,UAG1B8iP,EAAUpsN,eAAe5sB,EAAOy0C,aAA8C,IAAhCukM,EAAUh5O,EAAOy0C,aAC/Ds7C,EAAGr7C,MAAMuiB,QAAU,QAGnB+hL,EAAUpsN,eAAe5sB,EAAOy5O,aAAc3uN,EAAAA,EAAAA,IAAkBkuN,EAAUh5O,EAAOy5O,aAC7EkB,EAAOhnO,SAAU,CACrB,IAAIyvD,EAAO,CAAE92C,IAAK0sN,EAAUh5O,EAAOy5O,YACnCpuN,EAAAA,EAAAA,IAAM+3C,EAAM41K,EAAUh5O,EAAOw5O,kBAC7B,IAAI6B,EAActtN,EAAc,MAAO,CAAE31B,UAAWkF,EAASq7O,MAAOjlM,MAAO0vB,IACvE63K,EACAA,EAAc70J,sBAAsB,aAAci1J,IAGlDxmM,EAAAA,EAAAA,IAAQ,CAACwmM,GAActrJ,EAAG36C,kBAElC,CAEA,GAAIulM,EAAO/8H,UAAYo7H,EAAUpsN,eAAe5sB,EAAO+jE,YAClDj5C,EAAAA,EAAAA,IAAkBkuN,EAAUh5O,EAAO+jE,YAAc42K,EAAOhnO,SAAU,CACnE,IAAI2nO,EAAcvtN,EAAc,MAAO,CAAE31B,UAAWkF,EAASsjH,KAAO,IAAMo4H,EAAUh5O,EAAO+jE,WACvFk3K,EACAA,EAAc70J,sBAAsB,aAAck1J,IAGlDzmM,EAAAA,EAAAA,IAAQ,CAACymM,GAAcvrJ,EAAG36C,kBAElC,CACIgmM,EAAShmP,SACTy/C,EAAAA,EAAAA,IAAQumM,EAAUrrJ,EAAG36C,mBAErBulM,EAAOhqG,eAAiBqqG,EAAgB5lP,SACxCy/C,EAAAA,EAAAA,IAAQmmM,EAAiBjrJ,EAAG36C,mBAEhC+kM,EAAgBpsN,EAAeirN,EAAWh5O,EAAQxJ,EAAYmkP,EAAQ5qJ,EAAI8tB,EAAe9iB,MAC7F,CAIA,GAHIkgJ,IACArnM,EAAAA,EAAAA,IAAS,CAACm8C,GAAK,CAACzyF,EAASw7O,YAEzB6B,EAAOxnJ,aAA6C,oBAAvBwnJ,EAAOxnJ,YAA4B,CAC5Dp2D,EAAU,CACVvmC,WAAYA,EACZumC,QAASvmC,EAAW8rB,GACpBptB,KAAM8jP,EAAUh5O,EAAO9K,MACvBqT,KAAMwnF,EACNlyE,QAAS88N,EACT36O,OAAQA,GAEZ26O,EAAOxnJ,YAAYp2D,EACvB,CACAi+M,EAAkB,GAClBztN,EAAM3wB,KAAKmzF,EAjHX,CAkHJ,CACA,OAAOxiE,CACX,CAmBA,SAASguN,EAAmBxtN,EAAev3B,EAE3CqnB,EAASk9E,EAAOw/I,EAAeC,GAC3B,IAAIG,GAAS7uN,EAAAA,EAAAA,IAAO,CAAC,EAAGguN,EAAwBj8N,GAEhD,OAAO48N,EAAW1sN,EADT4uF,EAAuB5uF,EAAev3B,EAAYqnB,EAASk9E,EAAOw/I,EAAeC,GACrDG,EAAOV,UAAWp8N,EAC3D,CAqCA,SAASpK,EAAQlL,EAAMizO,GACnB,GAAKA,GAAiBjzO,EAGjB,CAGD,OADgBqjB,MAAMpP,UAAUhC,MAAMqC,KAAK2+N,GACtB/nO,QAAQlL,EACjC,CACJ,CA8CA,SAASo2G,EAAWnB,EAAWzkB,EAAQQ,GAEnC,QADc,IAAVA,IAAoBA,EAAQ,IAAI4B,EAAAA,GAClB,cAAdqiB,EACAjkB,EAAMR,OAAOA,EAAQ,aAAa,QAEjC,GAAkB,eAAdykB,EACLjkB,EAAMR,OAAOA,EAAQ,cAAc,QAGnC,IAAK,IAAIz2E,EAAI,EAAGA,EAAIi3E,EAAMW,QAAQ9kG,OAAQktB,IACV,aAAxBi3E,EAAMW,QAAQ53E,GAAG1F,IACjB28E,EAAMW,QAAQl2D,OAAO1hB,EAAG,GAIpC,OAAOi3E,CACX,CASA,SAASmlB,EAAcloH,EAAY+iG,GAE/B,OAAO,IAAIwP,EAAAA,EAAYvyG,GAClBg0G,aAAajR,EACtB,CAuDA,SAAS2hJ,EAAWl4O,GAEhB,IADA,IAAIuiB,EAAQ,CAAEiyF,OAAQ,KAAMjvG,KAAM,MACzB+Z,EAAI,EAAGA,EAAItf,EAAK5N,OAAQktB,IAC7B,KAAKwI,EAAAA,EAAAA,IAAkB9nB,EAAKsf,IACxB,MAAe,CAAEk1F,cAAex0G,EAAKsf,GAAI/Z,KAAMvF,EAAKsf,IAG5D,OAAOiD,CACX,CACA,SAASkuB,EAAatzC,EAASs7O,GAC3B,IAAIr4K,EAAO,CAAC,GACZ/3C,EAAAA,EAAAA,IAAM+3C,EAAMq4K,GACRr4K,EAAKu1D,SACL/kF,EAAAA,EAAAA,IAAS,CAACzzC,GAAUijE,EAAKu1D,MAAMvnH,MAAM,aAC9BgyD,EAAKu1D,QAEhBhlF,EAAAA,EAAAA,IAAWxzC,EAASijE,EACxB,CACA,SAASs4K,EAAiBv7O,GAGtB,IAFA,IAAIwzC,EAAa,CAAC,EACdyvB,EAAOjjE,EAAQwzC,WACV1vC,EAAQ,EAAGA,EAAQm/D,EAAKhuE,OAAQ6O,IACrC0vC,EAAWyvB,EAAKn/D,GAAO4jE,UAAYzE,EAAKn/D,GAAO6jE,UAEnD,OAAOn0B,CACX,CAkJA,SAASknM,IACL,OAAO77N,KAAKiU,MAA4B,OAArB,EAAIjU,KAAKC,WACvB1mB,SAAS,IACTyI,UAAU,EACnB,CAEA,SAASm5O,EAAgBpsN,EAAeirN,EAAWh5O,EAAQ64F,EAAIh7E,EAAS1d,EAAS46F,GAE7E,IAAI4gJ,EAAQ3C,EAAUh5O,EAAOutB,QAAU,GACnC8rN,EAAcL,EAAUh5O,EAAOq5O,aAEnC,GAAIsC,EAAMvmP,SACNikP,GAAc,EACdl5O,EAAQ4zC,UAAUzB,IAAIh1C,EAASm7O,UAC3B56N,EAAQs8N,iBAAiB,CACzB,IAAIyB,EAAQL,EAAmBxtN,EAAe4tN,EAAO99N,IAAWk9E,GAChE56F,EAAQmuB,YAAYstN,EACxB,CAGE/9N,EAAQm8N,gBAAkBX,IAAgBx7N,EAAQlK,WACpDxT,EAAQi1C,kBAAkBrB,UAAUzB,IAAIh1C,EAASs7O,cAEE,SAA/B/6N,EAAQw8N,mBAAgCxlM,EAAAA,GAAUS,EAAAA,IACxD,CAACvnB,EAAc,MAAO,CAAE31B,UAAW,WAAaylB,EAAQu8N,mBAAqBj6O,EAAQuvB,cAAc,IAAMpyB,EAAS2mE,cAExI,CACA,SAAS62K,EAAsB/sN,EAAexlB,EAAMywO,EAAWh5O,EAAQ5H,EAAWyjP,EAAeC,EAAO/5O,EAAIkC,EAAO4Z,GAC/G,IAIIrnB,EAOAsjJ,EAXA6gG,GAAS7uN,EAAAA,EAAAA,IAAO,CAAC,EAAGguN,EAAwBj8N,GAC5CggG,GAAiB/xF,EAAAA,EAAAA,IAAO,CAAC,EAAG4tN,EAAuBiB,EAAO98H,gBAC1D3oH,EAAOqT,EACP7N,EAAQ6N,EAEQ,kBAATA,GAAqC,kBAATA,GAAqC,mBAATA,IAC/D/R,EAAa+R,EACbrT,EAA0C,mBAA3B8jP,EAAUh5O,EAAO9K,OAAyD,kBAA3B8jP,EAAUh5O,EAAO9K,MAC3E8jP,EAAUh5O,EAAO9K,MAAS8jP,EAAUh5O,EAAO9K,OAAS,GACxDwF,EAAQs+O,EAAUh5O,EAAOtF,QAQzBo/I,GALChvH,EAAAA,EAAAA,IAAkBt0B,KAAgBs0B,EAAAA,EAAAA,IAAkBkuN,EAAUh5O,EAAO+B,MAC1C,KAAzBi3O,EAAUh5O,EAAO+B,IAIRA,EAAK,IAAMkC,EAHXlC,EAKhB,IAAIguF,EAAKhiE,EAAc,KAAM,CACzB31B,YAAsB,IAAV0jP,EAAiBx+O,EAAS7C,MAAQ6C,EAASyyF,IAAM,MAAOjlE,EAAAA,EAAAA,IAAkB1yB,GAAa,GAAKA,GACxG2J,GAAI+3I,EAAWpmG,MAAyC,KAAjCmqE,EAAeC,eAAoD,KAA5BD,EAAe+7H,SACzE,CAAEjyK,MAAiB,IAAVm0K,EAAiBj+H,EAAeC,cAAgBD,EAAe+7H,UAAc,CAAC,IA8B/F,OA3BIpjP,GAAcwiP,EAAUpsN,eAAe5sB,EAAO3J,UAAqD,UAAzC2iP,EAAUh5O,EAAO3J,SAASkC,YACpFw3F,EAAGh8C,UAAUzB,IAAIh1C,EAASpH,UAE1B4lP,EACA/rJ,EAAGzY,UAAYpiF,GAGf66F,EAAGt8C,aAAa,cAAc3oB,EAAAA,EAAAA,IAAkBpwB,GAAS,OAASA,GAClEq1F,EAAGt8C,aAAa,OAAQ,UAEpBj9C,GAAcwiP,EAAUpsN,eAAe5sB,EAAOynE,iBAAmBuxK,EAAUh5O,EAAOynE,iBAClFh0B,EAAas8C,EAAIipJ,EAAUh5O,EAAOynE,iBAElCo0K,EAAczmP,SAAWulP,EAAOhqG,gBAChCr7F,EAAAA,EAAAA,IAAOumM,EAAe9rJ,GAEtBv5F,IAAewiP,EAAUh5O,EAAO2D,MAASq1O,EAAUh5O,EAAOu5O,gBAC1DP,EAAUh5O,EAAOu5O,eAAe5gO,MAChCo3E,EAAGzhE,YAAYytN,EAAUhuN,EAAev3B,EAAYwJ,EAAQ9K,EAAM2mP,EAAelB,EAAOhqG,iBAGpFkrG,EAAczmP,QAAUulP,EAAOhqG,gBAC/Br7F,EAAAA,EAAAA,IAAOumM,EAAe9rJ,GAE1BA,EAAGzhE,YAAYvO,SAASigG,eAAe9qH,MAGxC66F,CACX,CACA,SAAS6qJ,EAAe3mK,GAGpB,MAAqB,CACjB8b,GAAI,KAAO9b,EAAa,QACxB8zD,GAAI,KAAO9zD,EAAa,eACxBx5E,MAAO,KAAOw5E,EAAa,cAC3B2sC,KAAM,KAAO3sC,EAAa,QAC1B/+E,KAAM,KAAO++E,EAAa,QAC1BwhJ,MAAO,KAAOxhJ,EAAa,SAC3Bn7E,QAAS,YACTssG,SAAU,aACVC,SAAU,aACVphC,YAAa,iBACbw0K,SAAU,cACV19I,MAAO,UACPp3F,IAAK,KAAOswE,EAAa,OACzBykK,YAAa,qBACbxiP,SAAU,aACVyiP,MAAO,KAAO1kK,EAAa,OAC3B2kK,YAAa,iBACbC,WAAY,gBACZC,UAAW,cAEnB,CACA,SAASiD,EAAUhuN,EAAev3B,EAAYwJ,EAAQ9K,EAAM2mP,EAAeG,GACvE,IAQID,EARA/C,EAAYD,EAAeviP,EAAYwJ,GACvCojE,EAAO,CAAEzqD,KAAMqgO,EAAUh5O,EAAO2D,MAQpC,GANIq1O,EAAUpsN,eAAe5sB,EAAOu5O,gBAAkBP,EAAUh5O,EAAOu5O,kBACnEluN,EAAAA,EAAAA,IAAM+3C,EAAM41K,EAAUh5O,EAAOu5O,gBAC7Bn2K,EAAKzqD,KAAOqgO,EAAUh5O,EAAO2D,KAAOq1O,EAAUh5O,EAAO2D,KACjDq1O,EAAUh5O,EAAOu5O,eAAe5gO,MAGnCqjO,EAGA,CACDD,EAAYhuN,EAAc,IAAK,CAAE31B,UAAWkF,EAASpI,KAAO,IAAMoI,EAASqG,MAC3E,IAAIs4O,EAAgBluN,EAAc,MAAO,CAAE31B,UAAWkF,EAASu7O,aAC3DgD,GAAiBA,EAAczmP,SAC/BkgD,EAAAA,EAAAA,IAAOumM,EAAeI,GAE1BA,EAAc3tN,YAAYvO,SAASigG,eAAe9qH,KAClDogD,EAAAA,EAAAA,IAAO,CAAC2mM,GAAgBF,EAC5B,MAVIA,EAAYhuN,EAAc,IAAK,CAAE31B,UAAWkF,EAASpI,KAAO,IAAMoI,EAASqG,IAAK+qB,UAAWx5B,IAY/F,OADAu+C,EAAasoM,EAAW34K,GACjB24K,CACX,CAGA,SAAShB,EAAWhtN,EAAexlB,EAAMywO,EAEzCh5O,EAAQ5H,EAAWylB,EAAS28N,GACxB,IAGI0B,EACAJ,EACAtlP,EALAmkP,GAAS7uN,EAAAA,EAAAA,IAAO,CAAC,EAAGguN,EAAwBj8N,GAC5CggG,GAAiB/xF,EAAAA,EAAAA,IAAO,CAAC,EAAG4tN,EAAuBiB,EAAO98H,gBAC1D3oH,EAAOqT,EAIS,kBAATA,GAAqC,kBAATA,IACnC/R,EAAa+R,EACbrT,EAAO8jP,EAAUh5O,EAAO9K,OAAS,GAEjCgnP,GAAOpxN,EAAAA,EAAAA,IAAkBkuN,EAAe,KAAMA,EAAUh5O,EAAO+B,IAAMi3O,EAAe,IAEpF8C,KAASvzO,EAAKqkB,eAAe,cAAerkB,EAAKytG,WAGjDn4F,GAAWA,EAAQ+lD,oBAIvB,IAAImsB,EAAKhiE,EAAc,KAAM,CACzB31B,YAAsB,IAAV0jP,EAAiBx+O,EAAS7C,MAAQ6C,EAASyyF,IAAM,MAAOjlE,EAAAA,EAAAA,IAAkB1yB,GAAa,GAAKA,GACxGs7C,MAAyC,KAAjCmqE,EAAeC,eAAoD,KAA5BD,EAAe+7H,SAC1D,CAAEjyK,MAAiB,IAAVm0K,EAAiBj+H,EAAeC,cAAgBD,EAAe+7H,UAAc,CAAC,IAQ/F,IANgC,MAA3B9uN,EAAAA,EAAAA,IAAkBoxN,GACnBnsJ,EAAGt8C,aAAa,WAAYyoM,GAG5BnsJ,EAAGt8C,aAAa,WAAYonM,KAE5BiB,GAASj+N,GAAWA,EAAQs9F,cAAe,CAE3C,IAAIvC,EAAiBsgI,EAAgBr7N,EAAQs9F,eAC7C,GAAIq/H,GAA2D,aAAtCA,EAAkBzhM,iBAEnCojM,EAAkBvjI,EAAerwG,EAAMiyO,EAAmB,gBAAiBG,EAAOz9H,kBAAmBy9H,EAAOhzL,iBAAkB,KAAMooC,MAEpIz6C,EAAAA,EAAAA,IAAO6mM,EAAiBpsJ,QAI5Bz6C,EAAAA,EAAAA,IAAOsjE,EAAerwG,EAAMiyO,EAAmB,gBAAiBG,EAAOz9H,kBAAmBy9H,EAAOhzL,kBAAmBooC,EAE5H,MACK,IAAK+rJ,GAASj+N,GAAWA,EAAQlK,SAAU,CAE5C,IAGQwoO,EAHJvjI,EAAiBsgI,EAAgBr7N,EAAQlK,UAC7C,GAAI6mO,GAA2D,aAAtCA,EAAkBzhM,iBAEnCojM,EAAkBvjI,EAAerwG,EAAMiyO,EAAmB,WAAYG,EAAOv8H,aAAcu8H,EAAOhzL,iBAAkB,KAAMooC,MAE1Hz6C,EAAAA,EAAAA,IAAO6mM,EAAiBpsJ,QAI5Bz6C,EAAAA,EAAAA,IAAOsjE,EAAerwG,EAAMiyO,EAAmB,WAAYG,EAAOv8H,aAAcu8H,EAAOhzL,kBAAmBooC,EAElH,KACK,CACD,IAAIm0E,EAAWn2I,EAAc,MAAO,CAChC31B,UAAWkF,EAAS2mE,YACpBvwB,MAAuC,KAA/BmqE,EAAeg8H,YAAqB,CAAElyK,KAAMk2C,EAAeg8H,aAAgB,CAAC,IAExF,GAAIrjP,IAAewiP,EAAUh5O,EAAO2D,MAASq1O,EAAUh5O,EAAOu5O,gBAC1DP,EAAUh5O,EAAOu5O,eAAe5gO,MAChCurJ,EAAS51I,YAAYytN,EAAUhuN,EAAev3B,EAAYwJ,EAAQ9K,EAAM,KAAMylP,EAAOhqG,oBAEpF,CACD,IAAIxwI,EAAU4tB,EAAc,OAAQ,CAChC31B,UAAWkF,EAASpI,KACpBw+C,MAAoC,KAA5BmqE,EAAegC,SAAkB,CAAEl4C,KAAMk2C,EAAegC,UAAa,CAAC,IAE9EhiG,GAAWA,EAAQ+lD,oBACnBzjE,EAAQm3E,UAAYhV,EAAAA,GAAmBI,SAASxtE,GAGhDiL,EAAQuuB,UAAYx5B,EAExBgvK,EAAS51I,YAAYnuB,EACzB,CACA4vF,EAAGzhE,YAAY41I,EACnB,CACA,OAAOn0E,CACX,CAUA,SAAS0qJ,EAAW1sN,EAAeouF,EAAW/jH,EAAWylB,GACrD,IAAI88N,GAAS7uN,EAAAA,EAAAA,IAAO,CAAC,EAAGguN,EAAwBj8N,GAC5CggG,GAAiB/xF,EAAAA,EAAAA,IAAO,CAAC,EAAG4tN,EAAuBiB,EAAO98H,gBAE1DpF,EAAY1qF,EAAc,KAAM,CAChC31B,WAFJkF,EAAWs9O,EAAeD,EAAO1mK,aAET8zD,GAAK,MAAOj9G,EAAAA,EAAAA,IAAkB1yB,GAAa,GAAKA,GACpEs7C,MAAoC,KAA5BmqE,EAAe87H,SAAkB,CAAEhyK,KAAMk2C,EAAe87H,UAAa,CAAC,IAGlF,OADArkM,EAAAA,EAAAA,IAAO6mE,EAAW1D,GACXA,CACX,CAp1BA9vB,EAASC,WAbT,SAAoB76D,EAAev3B,EAEnCqnB,EAAS08N,EAAeC,GACpB,IAAIG,GAAS7uN,EAAAA,EAAAA,IAAO,CAAC,EAAGguN,EAAwBj8N,GAC5CggG,GAAiB/xF,EAAAA,EAAAA,IAAO,CAAC,EAAG4tN,EAAuBiB,EAAO98H,gBAC1DpmH,EAAOyjP,EAAW1kP,GAAYghH,OAClC,MAAa,WAAT//G,GAA8B,WAATA,EACd6iP,EAAoBvsN,EAAev3B,EAAY+jP,EAAe18N,EAAS28N,GAGvEe,EAAmBxtN,EAAev3B,EAAYqnB,EAASggG,EAAe9iB,MAAOw/I,EAAeC,EAE3G,EAwBA7xJ,EAAS2xJ,oBAAsBA,EAyD/B3xJ,EAAS8zB,wBAA0BA,EAiKnC9zB,EAASg0B,uBAAyBA,EAyBlCh0B,EAAS4yJ,mBAAqBA,EA6B9B5yJ,EAASyzJ,aArBT,SAAsBZ,EAAcr7O,EAASk8O,GAEzC,GADA/+O,EAAWs9O,EAAed,EAAuB7lK,YAC5CunK,GAAiBA,EAAapmP,OAAnC,CAGA,IAAIknP,EACAC,EACAxzJ,EAAgBn9D,MAAMpP,UAAUhC,MAAMqC,KAAK2+N,GAQ/C,IADAc,EAAYvzJ,GALRwzJ,EADAp8O,EACUsT,EAAQtT,EAAS4oF,IAGD,IAAfszJ,EAAsBtzJ,EAAc3zF,QAAU,KAET,IAAfinP,GAAuB,EAAI,IACzDC,MAAe7nM,EAAAA,EAAAA,IAAU6nM,IAAcA,EAAUvoM,UAAUM,SAAS/2C,EAASpH,YAEhFomP,EAAYvzJ,EADZwzJ,IAAoC,IAAfF,GAAuB,EAAI,GAGpD,OAAOC,CAfP,CAgBJ,EAkBA3zJ,EAASl1E,QAAUA,EAqCnBk1E,EAAS+0B,gBA7BT,SAAyBlnH,EAAYwJ,EAAQw9G,QACvB,IAAdA,IAAwBA,EAAY,QACxC,IAAIg/H,GAAY1wN,EAAAA,EAAAA,IAAO,CAAC,EAAG68D,EAASwwJ,oBAAqBn5O,GACrDy8O,GAAW,IAAIthJ,EAAAA,GAAQ1gG,MAAM+hP,EAAUriI,SAGvCthB,EAAK6lB,EAAcloH,EADvBimP,EAAW99H,EAAWnB,EAAW,MAAOi/H,IAExCjmP,EAAa,GACb,IAAK,IAAIm9B,EAAI,EAAGA,EAAIklE,EAAGzjG,OAAQu+B,IAAK,CAChC,IAAI+oN,EAAU7jJ,EAAGllE,GAAG1sB,MAChB01O,EAAU,CAAC,EAEfA,EAAQH,EAAUtnP,MAAQ2jG,EAAGllE,GAAGx3B,IAChCwgP,EAAgB,UAAI,EACpB,IAAIC,EAAUJ,EAAUtnP,KACR,OAAZ0nP,IAEAD,EAAQ,IADRC,EAAU,SACc/jJ,EAAGllE,GAAGx3B,KAElCwgP,EAAQE,IAAM,oBAAsBhkJ,EAAGllE,GAAGx3B,IACtC08F,EAAGllE,GAAGx3B,IAAI5D,WAAW6/D,OAAS,aAClCukL,EAAQ11O,MAAQy1O,EAChBlmP,EAAWoG,KAAK+/O,GAChB,IAAK,IAAIp2L,EAAI,EAAGA,EAAIm2L,EAAQtnP,OAAQmxD,IAChC/vD,EAAWoG,KAAK8/O,EAAQn2L,GAEhC,CACA,OAAO/vD,CACX,EA0BAmyF,EAASg2B,WAAaA,EAatBh2B,EAAS+1B,cAAgBA,EAqDzB/1B,EAAS+wB,sBA9CT,SAASA,EAAsBv5G,EAAS0d,GACpC,IAAI88N,GAAS7uN,EAAAA,EAAAA,IAAO,CAAC,EAAGguN,EAAwBj8N,GAC5C7d,GAAS8rB,EAAAA,EAAAA,IAAO,CAAC,EAAG68D,EAASwwJ,oBAAqBwB,EAAO36O,QACzD88O,EAAS38O,EAAQouB,WAAU,GAE3BwuN,EAAS,GACbD,EAAO/oM,UAAUzB,IAAI,eACrB,IAAI0qM,EAASF,EAAO7uN,iBAAiB,mBACrC6uN,EAAO/oM,UAAUjB,OAAO,eACxB,IAAK,IAAIxwB,EAAI,EAAGA,EAAI06N,EAAO5nP,OAAQktB,IAAK,CAQpC,IAPA,IAAIytE,EAAKitJ,EAAO16N,GACZwnE,EAASiG,EAAGrgE,cAAc,KAC1Bq4G,EAAKh4C,EAAGrgE,cAAc,MAEtBmqE,EAAO,CAAC,EACR54B,EAAa6oB,EAASA,EAAO7oB,WAAa8uB,EAAG9uB,WAC7ChlE,EAAOD,OAAOC,KAAKglE,GACdkyE,EAAM,EAAGA,EAAMlyE,EAAW7rE,OAAQ+9I,IACjClyE,EAAWxqE,OAAOwF,EAAKk3I,KAAQ8pG,kBACjCpjJ,EAAK75F,EAAO9K,MAAQ+rE,EAAWxqE,OAAOwF,EAAKk3I,KAAOlvE,aAG1D,IAAI+iB,EAAe00J,EAAiB3rJ,GAChC/I,EAAajlF,IACb83F,EAAK75F,EAAO+B,IAAMilF,EAAajlF,UACxBilF,EAAajlF,IAGpB83F,EAAK75F,EAAO+B,IAAM84O,IAElB7+O,OAAOC,KAAK+qF,GAAc5xF,SAC1BykG,EAAK75F,EAAOynE,gBAAkBuf,GAE9B8C,IACA9C,EAAe00J,EAAiB5xJ,GAC5B9tF,OAAOC,KAAK+qF,GAAc5xF,SAC1BykG,EAAK75F,EAAOu5O,eAAiBvyJ,IAGjC+gD,IACAluC,EAAK75F,EAAOutB,OAASmsF,EAAsBquB,EAAIlqH,IAEnDk/N,EAAOngP,KAAKi9F,EAChB,CACA,OAAOkjJ,CACX,EAqIAp0J,EAAS21B,sBAlGT,SAA+BvwF,EAAepa,EAAUnd,EAExDwJ,EAAQ6d,EAAS28N,GAUb,IARA,IAMI9/O,EANA+9G,EAAY1qF,EAAc,KAAM,CAAE31B,WADtCkF,EAAWs9O,EAAed,EAAuB7lK,aACS8zD,GAAIr0F,MAAO,CAAEi0B,KAAM,kBACzEgzK,GAAS7uN,EAAAA,EAAAA,IAAO,CAAC,EAAGguN,EAAwBj8N,GAC5C2+N,GAAY1wN,EAAAA,EAAAA,IAAO,CAAC,EAAG68D,EAASwwJ,oBAAqBn5O,GAErD44G,EAAiBsgI,EAAgBvlO,GACjCupO,EAAe,GAEfn7O,EAAK84O,IACAv4N,EAAI,EAAGA,EAAI9rB,EAAWpB,OAAQktB,IAAK,CACxC,IAAI02N,EAAYD,EAAeviP,EAAW8rB,GAAIk6N,GAC1CrB,EAAU3kP,EAAW8rB,GACrB0zF,EAAWmlI,EAAQnlI,SAOvB,GALIt7G,EADyB,kBAAlBlE,EAAW8rB,IAA4C,kBAAlB9rB,EAAW8rB,GAC/C64N,EAGAnC,EAAUwD,EAAU9hP,OAE5BigP,EAAO/pG,cAA+C,oBAAxB+pG,EAAO/pG,aAA6B,CAClE,IAAI7zG,EAAU,CACVvmC,WAAYA,EACZumC,QAASo+M,EACTjmP,KAAMwF,EACNmjB,QAAS88N,EACT36O,OAAQw8O,GAEZ7B,EAAO/pG,aAAa7zG,EACxB,CACI49M,EAAO/pG,cAA+C,oBAAxB+pG,EAAO/pG,eACrCooG,EAAYD,EAAeviP,EAAW8rB,GAAIk6N,GAEtC9hP,EADyB,kBAAlBlE,EAAW8rB,IAA4C,kBAAlB9rB,EAAW8rB,GAC/C64N,EAGAnC,EAAUwD,EAAU9hP,QAGpC,IAAIq1F,EAAKhiE,EAAc,KAAM,CACzBhsB,GAAIA,EAAK,IAAMugB,EACflqB,UAAW49G,EAAW14G,EAAS7C,MAAQ6C,EAASyyF,GAAIr8C,MAAO,CAAEi0B,KAAM,kBAEvE,GAAIquC,EAC6B,kBAAlBx/G,EAAW8rB,IAA4C,kBAAlB9rB,EAAW8rB,GACvDytE,EAAGzY,UAAY6jK,EAGfprJ,EAAGzY,UAAY0hK,EAAUwD,EAAUtnP,UAGtC,CACD,IAgBYinP,EAhBRgB,EAAYnnI,EAAW2kI,EAAOz9H,gBAAkBy9H,EAAOv8H,WAC3D,GAAIpI,EACA,GAAIwkI,GAA0D,YAArCA,EAAkBzhM,iBAEnCojM,EAAkBvjI,EAAeuiI,EAASX,EAAmB,iBAAkB2C,IAAaxC,EAAOhzL,iBAAkB,KAAMooC,MAE3Hz6C,EAAAA,EAAAA,IAAO6mM,EAAiBpsJ,QAI5Bz6C,EAAAA,EAAAA,IAAOsjE,EAAeuiI,EAASX,EAAmB,iBAAkB2C,IAAaxC,EAAOhzL,kBAAmBooC,QAI/G,GAAIyqJ,GAA2D,aAAtCA,EAAkBzhM,iBAEnCojM,EAAkBvjI,EAAeuiI,EAASX,EAAmB,WAAY2C,IAAaxC,EAAOhzL,iBAAkB,KAAMooC,MAErHz6C,EAAAA,EAAAA,IAAO6mM,EAAiBpsJ,QAI5Bz6C,EAAAA,EAAAA,IAAOsjE,EAAeuiI,EAASX,EAAmB,WAAY2C,IAAaxC,EAAOhzL,kBAAmBooC,GAG7GA,EAAGt8C,aAAa,cAAc3oB,EAAAA,EAAAA,IAAkBpwB,GAAS,OAASA,GAClEq1F,EAAGt8C,aAAa,OAAQ,SAC5B,CACA,GAAIknM,EAAOxnJ,aAA6C,oBAAvBwnJ,EAAOxnJ,YAA4B,CAC5Dp2D,EAAU,CACVvmC,WAAYA,EACZumC,QAASo+M,EACTjmP,KAAMwF,EACN6N,KAAMwnF,EACNlyE,QAAS88N,EACT36O,OAAQw8O,GAEZ7B,EAAOxnJ,YAAYp2D,EACvB,CACAmgN,EAAatgP,KAAKmzF,EACtB,CAEA,OADAz6C,EAAAA,EAAAA,IAAO4nM,EAAczkI,GACdA,CACX,EAwCA9vB,EAASyyB,oBA1BT,SAA6BD,EAAeuC,EAAiB19G,EAE7Dm9G,EAAat/F,EAAS28N,GAMlB,IAJA,IAAI5hI,EAAiBsgI,EAAgB/9H,GACjCqhI,GAAY1wN,EAAAA,EAAAA,IAAO,CAAC,EAAG68D,EAASwwJ,oBAAqBn5O,GACrD26O,GAAS7uN,EAAAA,EAAAA,IAAO,CAAC,EAAGguN,EAAwBj8N,GAC5Cu/N,EAAWZ,EAAUriI,QAChBzuF,EAAK,EAAG2xN,EAAgBlgI,EAAazxF,EAAK2xN,EAAcjoP,OAAQs2B,IAAM,CAC3E,IAAIkiB,EAASyvM,EAAc3xN,GACvB4xN,EAAa,CAAC,EAGlB,GAFAA,EAAW,GAAKF,GAAYxvM,EAAOq2B,YACnCr2B,EAAOlf,UAAY,GACf8rN,GAA2D,aAAtCA,EAAkBzhM,gBAAgC,CAEvE,IAAIojM,EAAkBvjI,EAAe0kI,EAAY9C,EAAmB,gBAAiBG,EAAOz9H,kBAAmBy9H,EAAOhzL,iBAAkB,KAAM/Z,GAC1IuuM,IACA7mM,EAAAA,EAAAA,IAAO6mM,EAAiBvuM,EAEhC,MAEI0H,EAAAA,EAAAA,IAAOsjE,EAAe0kI,EAAY9C,EAAmB,gBAAiBG,EAAOz9H,kBAAmBy9H,EAAOhzL,kBAAmB/Z,EAElI,CACA,OAAOuvE,CACX,EAOAx0B,EAASkyJ,WAAaA,EA4OtBlyJ,EAAS8xJ,WAAaA,EAqBtB9xJ,EAAS40J,aAXT,SAAsBxvN,EAAeouF,EAAW/jH,EAAWylB,GACvD,IAAI88N,GAAS7uN,EAAAA,EAAAA,IAAO,CAAC,EAAGguN,EAAwBj8N,GAQhD,OAPAvgB,EAAWs9O,EAAeD,EAAO1mK,aAEiB,SAA9B0mK,EAAON,mBAAgCxlM,EAAAA,GAAUS,EAAAA,IACvD,CAACvnB,EAAc,MAAO,CAC5B31B,UAAW,WAAauiP,EAAOP,gBAAkB,MAC5CtvN,EAAAA,EAAAA,IAAkB1yB,GAAa,GAAKA,MACxC+jH,EAAUzsF,cAAc,IAAMpyB,EAAS2mE,cACzCk4C,CACX,CAEH,CA57BD,CA47BGxzB,IAAaA,EAAW,CAAC,qFC39BxBjsC,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAazCC,EAA0C,SAAUC,EAAYzB,EAAQn/C,EAAK6gD,GAC7E,IAA2H3pB,EAAvHD,EAAI5X,UAAUpmB,OAAQ4O,EAAIovB,EAAI,EAAIkoB,EAAkB,OAAT0B,EAAgBA,EAAOhhD,OAAOihD,yBAAyB3B,EAAQn/C,GAAO6gD,EACrH,GAAuB,kBAAZ/gC,SAAoD,oBAArBA,QAAQihC,SAAyBl5C,EAAIiY,QAAQihC,SAASH,EAAYzB,EAAQn/C,EAAK6gD,QACpH,IAAK,IAAI16B,EAAIy6B,EAAW3nD,OAAS,EAAGktB,GAAK,EAAGA,KAAS+Q,EAAI0pB,EAAWz6B,MAAIte,GAAKovB,EAAI,EAAIC,EAAErvB,GAAKovB,EAAI,EAAIC,EAAEioB,EAAQn/C,EAAK6H,GAAKqvB,EAAEioB,EAAQn/C,KAAS6H,GAChJ,OAAOovB,EAAI,GAAKpvB,GAAKhI,OAAOs1C,eAAegK,EAAQn/C,EAAK6H,GAAIA,CAChE,EAKIw5O,EAAU,QACVC,EAAc,YAGdC,EAAe,cACfC,EAAoB,oBACpBC,EAAmB,mBACnBC,EAAiB,eACjBC,EAAsB,qBACtBC,EAAqB,oBACrBC,EAAa,kBACbC,EAAc,mBACdC,EAAmB,yBACnBC,EAAkB,wBAclBj4G,EAAyB,SAAUt9G,GAQnC,SAASs9G,EAAQroH,EAAS1d,GACtB,OAAOyoB,EAAO/L,KAAKM,KAAMU,EAAS1d,IAAYgd,IAClD,CAobA,OA7bAu/B,EAAUwpF,EAASt9G,GAgBnBs9G,EAAQ1pH,UAAU+rC,UAAY,WAC1BprC,KAAKihO,QAAUruM,EAAAA,GAAQyB,KAAKj8C,KAC5B4nB,KAAKkhO,aAAgC,YAAjBlhO,KAAKihO,QACzBjhO,KAAKwzB,SAAWZ,EAAAA,GAAQY,SACxBxzB,KAAKmhO,YAAa,EAClB,IAAIn+O,EAAUgd,KAAKhd,QACnBgd,KAAKohO,QAA2B,SAAjBphO,KAAKihO,SAAuC,SAAjBjhO,KAAKihO,QAC/CjhO,KAAKyvC,aACc,KAAfzsD,EAAQ4B,KACR5B,EAAQ4B,IAAK8qB,EAAAA,EAAAA,IAAY,WACzB1P,KAAKqhO,UAAW,GAEpBr+O,EAAQu0C,MAAMuiB,QAAU,QACpB95C,KAAK2qC,WACL3nD,EAAQ4zC,UAAUzB,IAAIkrM,EAE9B,EAOAt3G,EAAQ1pH,UAAUisC,OAAS,WACvBtrC,KAAKknE,YAAc,IAAI9qB,EAAAA,GAAMp8C,KAAKhd,QAAS,CAAEo2J,OAAQp5I,KAAK2rH,aAAa3sH,KAAKgB,MAAOmnE,MAAOnnE,KAAKshO,aAAatiO,KAAKgB,QACjHg1B,EAAAA,GAAaG,IAAIn1B,KAAK4oH,UAAW,SAAU5oH,KAAK4zE,cAAe5zE,MAC1DA,KAAKwzB,UAINxzB,KAAKhd,QAAQ4zC,UAAUzB,IAAI0rM,GAC3B7gO,KAAKuhO,cAAcvhO,KAAKhd,UAJxBgd,KAAKwhO,cAAcxhO,KAAKhd,SAM5Bgd,KAAKyhO,gBACT,EACA14G,EAAQ1pH,UAAUoiO,eAAiB,YAC3B9zN,EAAAA,EAAAA,IAAkB3N,KAAK8oH,aAAe9oH,KAAK8oH,WAAa,GACxD9oH,KAAK8oH,WAAa9oH,KAAK4oH,UAAUnxF,YACjCz3B,KAAKmhO,YAAa,GAGlBnhO,KAAKmhO,YAAa,CAE1B,EACAp4G,EAAQ1pH,UAAUowC,WAAa,WAC3B,IAAIm5E,EAAY5oH,KAAK4Q,cAAc,MAAO,CAAE31B,UAtF/B,sBAuFTymP,EAAY1hO,KAAK4Q,cAAc,MAAO,CAAE31B,UAxF/B,kBAyFbymP,EAAUprM,aAAa,WAAY,MAGnC,IAFA,IAAIQ,EAAM92B,KAAKhd,QAENurB,EAAK,EAAGozN,EADF,GAAGtkO,MAAMqC,KAAKo3B,EAAIl/C,UACO22B,EAAKozN,EAAW1pP,OAAQs2B,IAAM,CAClE,IAAImsN,EAAQiH,EAAWpzN,GACvBq6G,EAAUz3G,YAAYupN,EAC1B,CACAgH,EAAUvwN,YAAYy3G,GACtB9xF,EAAI3lB,YAAYuwN,GAChBA,EAAUnqM,MAAMmoB,UAAY,SAC5B1/C,KAAK4oH,UAAY84G,EACjB1hO,KAAK4hO,YAAch5G,CACvB,EACAG,EAAQ1pH,UAAUytC,eAAiB,WAE/B,OAAO9sC,KAAKotC,aADI,CAAC,cAErB,EAOA27E,EAAQ1pH,UAAUu8B,cAAgB,WAC9B,MAAO,SACX,EAMAmtF,EAAQ1pH,UAAUqoB,QAAU,WACxB,IAAIoP,EAAM92B,KAAKhd,QACf8zC,EAAIS,MAAMuiB,QAAU,GACpBhjB,EAAIF,UAAUjB,OA9HP,aA+HPmB,EAAIF,UAAUjB,OAAOkrM,GACrB/pM,EAAIF,UAAUjB,OAAO0qM,GACrB,IAAIwB,GAAM/oM,EAAAA,EAAAA,IAAU,MAAQhC,EAAIlyC,GAAK,QAAU87O,EAAgB5pM,GAC3DgrM,GAAUhpM,EAAAA,EAAAA,IAAU,IAAMgoM,EAAahqM,GAC3C,GAAGz5B,MAAMqC,KAAKoiO,GAAS/iP,SAAQ,SAAU+3C,IACrCyB,EAAAA,EAAAA,IAAOzB,EACX,IACA,IAAK,IAAIvoB,EAAK,EAAGvoB,EAAK,GAAGqX,MAAMqC,KAAKM,KAAK4hO,YAAYhqP,UAAW22B,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAClF,IAAI+D,EAAOtsB,EAAGuoB,GACduoB,EAAI3lB,YAAYmB,EACpB,CACItS,KAAKqhO,UACLrhO,KAAKhd,QAAQk+C,gBAAgB,OAEjC3I,EAAAA,EAAAA,IAAOv4B,KAAK4oH,WACRi5G,EAAI5pP,OAAS,KACbsgD,EAAAA,EAAAA,IAAOspM,EAAI,KACNl0N,EAAAA,EAAAA,IAAkBk0N,EAAI,MACvBtpM,EAAAA,EAAAA,IAAOspM,EAAI,KAGnB7sM,EAAAA,GAAaW,OAAO31B,KAAK4oH,UAAW,SAAU5oH,KAAK4zE,eACnD5zE,KAAKknE,YAAYx/C,UACjB1nB,KAAKknE,YAAc,KACnBz7D,EAAOpM,UAAUqoB,QAAQhoB,KAAKM,KAClC,EAQA+oH,EAAQ1pH,UAAUkkG,QAAU,SAAUhmH,GAClC,IAAIwkP,GAAUjpM,EAAAA,EAAAA,IAAU,sBAAwBwnM,EAAc,IAAKtgO,KAAKhd,SACpEzF,EACAyiB,KAAKhd,QAAQ4zC,UAAUzB,IAAImrM,GAG3BtgO,KAAKhd,QAAQ4zC,UAAUjB,OAAO2qM,GAElC,GAAGjjO,MAAMqC,KAAKqiO,GAAShjP,SAAQ,SAAUs6C,GACrCA,EAAG/C,aAAa,WAAa/4C,EAAc,KAAN,IACzC,GACJ,EACAwrI,EAAQ1pH,UAAUkiO,cAAgB,SAAUv+O,GACxC,IAAI4B,EAAK5B,EAAQ4B,GAAGjE,OAAO,QACvBqhP,EAAkBhiO,KAAK4Q,cAAc,MAAO,CAAE31B,UAAW6lP,EAAc,IAAMC,IAC7EkB,EAAW,KAAOj/O,EAAQ4B,GAAGjE,OAAO,QAAU+/O,EAAiB,IAAMC,GACrEj0D,EAAW1sK,KAAK4Q,cAAc,MAAO,CAAEhsB,GAAIA,EAAGjE,OAAO,UAAW1F,UAAWgnP,IAC3EC,EAAUliO,KAAK4Q,cAAc,MAAO,CAAE31B,UAAWulP,EAAoB,IAAMD,EAAe,aAC9F7zD,EAASv7J,YAAY+wN,GACrB,IAAIC,EAAUniO,KAAK4Q,cAAc,MAAO,CAAE31B,UAAW6lP,EAAc,IAAME,IACrEhhO,KAAKohO,SACL10D,EAAS91I,UAAUzB,IAAI,cAE3BnyC,EAAQmuB,YAAY6wN,GACpBh/O,EAAQmuB,YAAYu7J,GACpB1pL,EAAQg1C,aAAamqM,EAASn/O,EAAQu4H,YACtCv7G,KAAKoiO,aAAa,CAAC11D,GACvB,EACA3jD,EAAQ1pH,UAAUmiO,cAAgB,SAAUx+O,GACxC,IAAI4B,EAAK5B,EAAQ4B,GAAGjE,OAAO,QACvBshP,EAAW,KAAOj/O,EAAQ4B,GAAGjE,OAAO,QAAU+/O,EAAiB,IAAMC,GACrE0B,EAAkB,CAAE,KAAQ,SAAU,GAAMz9O,EAAGjE,OAAO,UAAW,aAAc,gBAC/EkhP,EAAM7hO,KAAK4Q,cAAc,MAAO,CAAE31B,UAAWgnP,EAAU1rM,MAAO8rM,IAClER,EAAIvrM,aAAa,gBAAiB,SAClC,IAAI4rM,EAAUliO,KAAK4Q,cAAc,MAAO,CAAE31B,UAAWulP,EAAoB,IAAMD,EAAe,aAC1F+B,EAAU,KAAOt/O,EAAQ4B,GAAGjE,OAAO,QAAU+/O,EAAiB,IAAME,GACpE2B,EAAiB,CAAE,KAAQ,SAAU,GAAM39O,EAAGjE,OAAO,SAAU,aAAc,eAC7E6hP,EAASxiO,KAAK4Q,cAAc,MAAO,CAAE31B,UAAWqnP,EAAU,IAAMhC,EAAa/pM,MAAOgsM,IACxFC,EAAOlsM,aAAa,gBAAiB,QACrC,IAAImsM,EAAcziO,KAAK4Q,cAAc,MAAO,CAAE31B,UAAWwlP,EAAmB,IAAMF,EAAe,aACjGiC,EAAOrxN,YAAYsxN,GACnBZ,EAAI1wN,YAAY+wN,GAChBl/O,EAAQmuB,YAAY0wN,GACpB7+O,EAAQg1C,aAAawqM,EAAQx/O,EAAQu4H,YACjCv7G,KAAKohO,UACLS,EAAIjrM,UAAUzB,IAAI,cAClBqtM,EAAO5rM,UAAUzB,IAAI,eAEzBn1B,KAAKoiO,aAAa,CAACP,EAAKW,GAC5B,EACAz5G,EAAQ1pH,UAAU0jN,WAAa,SAAUtnO,GACrC,IAAIu0B,EAAQhQ,KACZ,GAAc,UAAVvkB,EAAEuD,IAAiB,CAKnBghB,KAAK0iO,SAAWpiP,OAAO4vB,YAAW,WAH9BF,EAAM2yN,YAAa,EACnB3yN,EAAM4yN,aAAa,GAAInnP,EAAE0iD,QAAQ,EAIrC,GAAG,IACP,CACJ,EACA4qF,EAAQ1pH,UAAUwjO,QAAU,SAAUpnP,GACpB,UAAVA,EAAEuD,MAGFghB,KAAK2iO,WACL3iO,KAAK2iO,YAAa,EAGlBlnP,EAAE0iD,OAAOipB,QAEbn3C,aAAajQ,KAAK0iO,UACtB,EACA35G,EAAQ1pH,UAAU+iO,aAAe,SAAUtrM,GACvC,IAAI9mB,EAAQhQ,KACZ,GAAG3C,MAAMqC,KAAKo3B,GAAK/3C,SAAQ,SAAUs6C,GACjC,IAAI+iB,EAAAA,GAAM/iB,EAAI,CAAEqyF,QAAS17G,EAAM8yN,eAAe9jO,KAAKgR,GAAQ6/B,iBAAkB,MAC7ExW,EAAGx1B,iBAAiB,UAAWmM,EAAM+yM,WAAW/jN,KAAKgR,IACrDqpB,EAAGx1B,iBAAiB,QAASmM,EAAM6yN,QAAQ7jO,KAAKgR,IAChDqpB,EAAGx1B,iBAAiB,UAAWmM,EAAM+yN,aAAa/jO,KAAKgR,IACvDqpB,EAAGx1B,iBAAiB,WAAYmM,EAAM+yN,aAAa/jO,KAAKgR,IACxDqpB,EAAGx1B,iBAAiB,eAAe,SAAUpoB,GACzCA,EAAEi1D,gBACN,IACA1b,EAAAA,GAAaG,IAAIkE,EAAI,QAASrpB,EAAMgzN,kBAAmBhzN,EAC3D,GACJ,EACA+4G,EAAQ1pH,UAAU0jO,aAAe,WAC7BlxN,cAAc7R,KAAKijO,QACvB,EACAl6G,EAAQ1pH,UAAUyjO,eAAiB,SAAUrnP,GACzC,IAAIu0B,EAAQhQ,KACRysH,EAAOhxI,EAAEmiE,cAAczf,OAC3BsuF,EAAOzsH,KAAKk3B,SAASu1F,EAAMi0G,GAAkBj0G,EAAKx0F,kBAAoBw0F,EAKtEzsH,KAAKijO,QAAU3iP,OAAOqxB,aAAY,WAF9B3B,EAAM4yN,aAFM,GAEkBn2G,GAAM,EAIxC,GAAG,GACP,EACA1D,EAAQ1pH,UAAU63B,SAAW,SAAUJ,EAAK77C,GACxC,OAAO67C,EAAIF,UAAUM,SAASj8C,EAClC,EACA8tI,EAAQ1pH,UAAUujO,aAAe,SAAUM,EAAWz2G,EAAM02G,GACxD,IAAIC,EAAUpjO,KAAKhd,QACf4zC,EAAY61F,EAAK71F,UACjBA,EAAUM,SAASwpM,KACnB9pM,EAAY61F,EAAKl6G,cAAc,IAAMguN,GAAc3pM,WAEnD52B,KAAKk3B,SAASksM,EAAS/C,IAAYrgO,KAAKkhO,eACxCgC,GAAaA,IAEXljO,KAAKk3B,SAASksM,EAAS/C,IAAYrgO,KAAKkhO,cAAiBlhO,KAAKohO,QAC5DxqM,EAAUM,SAASspM,GACnBxgO,KAAKqjO,mBAAmBH,EAAW,MAAOC,GAG1CnjO,KAAKqjO,mBAAmBH,EAAW,GAAIC,GAIvCvsM,EAAUM,SAASupM,GACnBzgO,KAAKqjO,mBAAmBH,EAAW,MAAOC,GAG1CnjO,KAAKqjO,mBAAmBH,EAAW,GAAIC,EAGnD,EACAp6G,EAAQ1pH,UAAU2jO,kBAAoB,SAAUvnP,GAC5CukB,KAAK4iO,aAAa5iO,KAAK8oH,WAAYrtI,EAAE0iD,QAAQ,EACjD,EACA4qF,EAAQ1pH,UAAUiiO,aAAe,SAAU7lP,GACvC,IACI62D,EADAgxL,EAAWtjO,KAAK4oH,UAGhBt2E,EADA72D,EAAEyiE,UAAY,EACHziE,EAAEsiE,WAA0B,GAAbtiE,EAAEyiE,UAGjBziE,EAAEsiE,UAAYtiE,EAAEyiE,SAE/B,IAAIzwC,EAAQ,IACE,SAAVkzB,IACA,IAAIgB,EAAO9/B,KAAK0hO,IAAI91N,GAChBk0B,GAAQ,EACRrhD,OAAOghD,qBAAqBK,IAGH,SAArBlmD,EAAEmjE,eACF0kL,EAASjgM,YAAciP,EAAW3Q,EAER,UAArBlmD,EAAEmjE,iBACP0kL,EAASjgM,YAAciP,EAAW3Q,GAEtCl0B,GAAS,GACTntB,OAAO6hD,sBAAsBxB,GAErC,CACAA,EACJ,EACAooF,EAAQ1pH,UAAUmkO,eAAiB,SAAUC,EAAWxgO,GACrC,QAAXA,EACAjD,KAAK4oH,UAAUvlF,YAAcogM,EAG7BzjO,KAAK4oH,UAAUvlF,YAAcogM,EAE7BzjO,KAAK2qC,WAAa3qC,KAAK4oH,UAAUvlF,WAAa,IAC9CrjC,KAAK4oH,UAAUvlF,WAAa,EAEpC,EACA0lF,EAAQ1pH,UAAUgkO,mBAAqB,SAAUI,EAAWxgO,EAAQkgO,GAChE,IAAInzN,EAAQhQ,KAEZ,GAAImjO,EACAnjO,KAAKwjO,eAAeC,EAAWxgO,OADnC,CAIKjD,KAAKmhO,YACN,GAAG9jO,MAAMqC,MAAKo5B,EAAAA,EAAAA,IAAU,IAAMgoM,EAAa9gO,KAAKhd,UAAUjE,SAAQ,SAAUs6C,GACxEoqM,GAAapqM,EAAG5B,WACpB,KAEU,SAAVkJ,IACA,IAAI+iM,EACA56G,EACA94G,EAAMknB,SAASlnB,EAAMhtB,QAASq9O,IAAYrwN,EAAMkxN,cAChDwC,GAAeD,EACf36G,GAfG,KAkBH46G,EAAcD,EACd36G,EAnBG,IAqBH46G,EArBG,GAsBHpjP,OAAOghD,qBAAqBwnF,IAG5B94G,EAAMwzN,eAAe16G,EAAY7lH,GACjCwgO,GAAa36G,EACbxoI,OAAO6hD,sBAAsBxB,GAErC,CACAA,EA1BA,CA2BJ,EACAooF,EAAQ1pH,UAAUssH,aAAe,SAAUlwI,GACvC,IAAIq7C,EAAM92B,KAAK4oH,UACXt2E,EAAW72D,EAAEsiE,UACZ/9C,KAAKohO,SAAYphO,KAAKk3B,SAASl3B,KAAKhd,QAASq9O,KAC9C/tL,GAAYA,GAEU,SAAtB72D,EAAEwiE,gBACFnnB,EAAIuM,WAAavM,EAAIuM,WAAaiP,EAEP,UAAtB72D,EAAEwiE,kBACPnnB,EAAIuM,WAAavM,EAAIuM,WAAaiP,EAE1C,EACAy2E,EAAQ1pH,UAAUskO,eAAiB,SAAUC,EAAYC,GACrD,GAAI7jO,KAAKwzB,SAAU,CACf,IACIswM,IADWn2N,EAAAA,EAAAA,IAAkBi2N,GAAcC,EAAgBD,GACtCrxN,cAAc,IAAMguN,IACzC5yN,EAAAA,EAAAA,IAAkBi2N,IAClBhtM,EAAAA,EAAAA,IAAUktM,EAAW,CAACtD,GAAoB,CAACC,KAG3C7pM,EAAAA,EAAAA,IAAUktM,EAAW,CAACrD,GAAmB,CAACD,GAElD,MACSoD,GAAcC,IACnBD,EAAWhtM,UAAUzB,IAAImrM,GACzBsD,EAAWttM,aAAa,gBAAiB,QACzCstM,EAAW1iM,gBAAgB,YAC3B2iM,EAAcjtM,UAAUjB,OAAO2qM,GAC/BuD,EAAcvtM,aAAa,gBAAiB,SAC5CutM,EAAcvtM,aAAa,WAAY,MAE3Ct2B,KAAK+iO,cACT,EACAh6G,EAAQ1pH,UAAUu0E,cAAgB,SAAUn4F,GACxC,IAAI0iD,EAAS1iD,EAAE0iD,OACX4V,EAAQ5V,EAAO1G,YAEfssM,GADU/jO,KAAKhd,QACFgd,KAAKhd,QAAQuvB,cAAc,IAAMquN,IAC9CoD,EAAchkO,KAAKhd,QAAQuvB,cAAc,IAAMouN,GAC/CsD,EAAcjkO,KAAKhd,QAAQuvB,cAAc,IAAMyuN,GAC/CkD,EAAelkO,KAAKhd,QAAQuvB,cAAc,IAAMwuN,GAChD19L,EAAalF,EAAOkF,WAsBxB,GArBIA,GAAc,IACdA,GAAcA,GAEdrjC,KAAKwzB,YACDxzB,KAAK2qC,WAAe3qC,KAAKkhO,cAAgBlhO,KAAKohO,UAC9C6C,EAAcjkO,KAAKhd,QAAQuvB,cAAc,IAAMwuN,GAC/CmD,EAAelkO,KAAKhd,QAAQuvB,cAAc,IAAMyuN,IAGhDiD,EAAY1sM,MAAMwc,MADlB1Q,EApZK,GAqZqBA,EAAa,KAGb,OAEzBlF,EAAOgS,YAActuC,KAAKyf,KAAKyyB,EAAQ1Q,GA1ZnC,GA2ZL6gM,EAAa3sM,MAAMwc,MAAS5V,EAAOgS,YAActuC,KAAKyf,KAAKyyB,EAAQ1Q,GAAe,KAGlF6gM,EAAa3sM,MAAMwc,MAAQ,QAGhB,IAAf1Q,EACArjC,KAAK2jO,eAAeI,EAAYC,QAE/B,GAAIniO,KAAKyf,KAAKyyB,EAAQ1Q,EAAa,KAAOlF,EAAOgS,YAClDnwC,KAAK2jO,eAAeK,EAAaD,OAEhC,CACD,IAAII,EAASnkO,KAAKhd,QAAQuvB,cAAc,IAAMmuN,EAAiB,IAAMJ,GACjE6D,IACAA,EAAOvtM,UAAUjB,OAAO2qM,GACxB6D,EAAO7tM,aAAa,gBAAiB,SACrC6tM,EAAO7tM,aAAa,WAAY,KAExC,CACJ,EASAyyF,EAAQ1pH,UAAUi8B,kBAAoB,SAAU+G,EAASC,GACrD,IAAK,IAAI/zB,EAAK,EAAGvoB,EAAKnH,OAAOC,KAAKujD,GAAU9zB,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAE9D,OADWvoB,EAAGuoB,IAEV,IAAK,aACDvO,KAAKyhO,iBACL,MACJ,IAAK,YACDp/L,EAAQsI,UAAY3qC,KAAKhd,QAAQ4zC,UAAUzB,IAAIkrM,GAAWrgO,KAAKhd,QAAQ4zC,UAAUjB,OAAO0qM,GAGpG,CACJ,EACA1gM,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACV6qF,EAAQ1pH,UAAW,kBAAc,GACpC0pH,EAAUppF,EAAW,CACjBhB,EAAAA,IACDoqF,EAEP,CA/b6B,CA+b3B1+E,EAAAA,oFCjfE9K,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAazCC,EAA0C,SAAUC,EAAYzB,EAAQn/C,EAAK6gD,GAC7E,IAA2H3pB,EAAvHD,EAAI5X,UAAUpmB,OAAQ4O,EAAIovB,EAAI,EAAIkoB,EAAkB,OAAT0B,EAAgBA,EAAOhhD,OAAOihD,yBAAyB3B,EAAQn/C,GAAO6gD,EACrH,GAAuB,kBAAZ/gC,SAAoD,oBAArBA,QAAQihC,SAAyBl5C,EAAIiY,QAAQihC,SAASH,EAAYzB,EAAQn/C,EAAK6gD,QACpH,IAAK,IAAI16B,EAAIy6B,EAAW3nD,OAAS,EAAGktB,GAAK,EAAGA,KAAS+Q,EAAI0pB,EAAWz6B,MAAIte,GAAKovB,EAAI,EAAIC,EAAErvB,GAAKovB,EAAI,EAAIC,EAAEioB,EAAQn/C,EAAK6H,GAAKqvB,EAAEioB,EAAQn/C,KAAS6H,GAChJ,OAAOovB,EAAI,GAAKpvB,GAAKhI,OAAOs1C,eAAegK,EAAQn/C,EAAK6H,GAAIA,CAChE,EAKIw5O,EAAU,QACVC,EAAc,YAGdC,EAAe,cACf6D,EAAiB,iBACjBC,EAAmB,mBACnBC,EAAiB,eACjBC,EAAmB,kBACnBC,EAAqB,oBACrB3D,EAAa,kBACbC,EAAc,mBACd2D,EAAgB,sBAChBC,EAAkB,wBAclB77G,EAAyB,SAAUp9G,GAQnC,SAASo9G,EAAQnoH,EAAS1d,GACtB,OAAOyoB,EAAO/L,KAAKM,KAAMU,EAAS1d,IAAYgd,IAClD,CAwZA,OAjaAu/B,EAAUspF,EAASp9G,GAgBnBo9G,EAAQxpH,UAAU+rC,UAAY,WAC1BprC,KAAKihO,QAAUruM,EAAAA,GAAQyB,KAAKj8C,KAC5B4nB,KAAKkhO,aAAgC,YAAjBlhO,KAAKihO,QACzBjhO,KAAKwzB,SAAWZ,EAAAA,GAAQY,SACxBxzB,KAAKmhO,YAAa,EAClB,IAAIrqM,EAAM92B,KAAKhd,QACfgd,KAAKohO,QAA2B,SAAjBphO,KAAKihO,SAAuC,SAAjBjhO,KAAKihO,QAC/CjhO,KAAKyvC,aACU,KAAX3Y,EAAIlyC,KACJkyC,EAAIlyC,IAAK8qB,EAAAA,EAAAA,IAAY,WACrB1P,KAAKqhO,UAAW,GAEpBvqM,EAAIS,MAAMuiB,QAAU,QAChB95C,KAAK2qC,WACL7T,EAAIF,UAAUzB,IAAIkrM,EAE1B,EAOAx3G,EAAQxpH,UAAUisC,OAAS,WACvBtrC,KAAKknE,YAAc,IAAI9qB,EAAAA,GAAMp8C,KAAKhd,QAAS,CAAEo2J,OAAQp5I,KAAK2rH,aAAa3sH,KAAKgB,MAAOmnE,MAAOnnE,KAAKshO,aAAatiO,KAAKgB,QACjHg1B,EAAAA,GAAaG,IAAIn1B,KAAK4oH,UAAW,SAAU5oH,KAAK2kO,mBAAoB3kO,MAC/DA,KAAKwzB,UAINxzB,KAAKhd,QAAQ4zC,UAAUzB,IAAI0rM,GAC3B7gO,KAAK4kO,qBAAqB5kO,KAAKhd,UAJ/Bgd,KAAKwhO,cAAcxhO,KAAKhd,SAM5Bgd,KAAKyhO,iBACLzsM,EAAAA,GAAaG,IAAIn1B,KAAKhd,QAAS,QAASgd,KAAK6kO,kBAAmB7kO,KACpE,EACA6oH,EAAQxpH,UAAUoiO,eAAiB,YAC3B9zN,EAAAA,EAAAA,IAAkB3N,KAAK8oH,aAAe9oH,KAAK8oH,WAAa,GACxD9oH,KAAK8oH,WAAa9oH,KAAK4oH,UAAU30E,aACjCj0C,KAAKmhO,YAAa,GAGlBnhO,KAAKmhO,YAAa,CAE1B,EACAt4G,EAAQxpH,UAAUowC,WAAa,WAC3B,IAAIq1L,GAAYC,EAAAA,EAAAA,IAAS,MAAO,CAAE9pP,UAvFrB,sBAwFToxN,GAAY04B,EAAAA,EAAAA,IAAS,MAAO,CAAE9pP,UAzFrB,kBA0FboxN,EAAU/1K,aAAa,WAAY,MAGnC,IAFA,IAAIQ,EAAM92B,KAAKhd,QAENurB,EAAK,EAAGozN,EADF,GAAGtkO,MAAMqC,KAAKo3B,EAAIl/C,UACO22B,EAAKozN,EAAW1pP,OAAQs2B,IAAM,CAClE,IAAImsN,EAAQiH,EAAWpzN,GACvBu2N,EAAU3zN,YAAYupN,EAC1B,CACAruB,EAAUl7L,YAAY2zN,GACtBhuM,EAAI3lB,YAAYk7L,GAChBA,EAAU90K,MAAMwf,SAAW,SAC3B/2C,KAAK4oH,UAAYyjF,EACjBrsM,KAAK4hO,YAAckD,CACvB,EACAj8G,EAAQxpH,UAAUytC,eAAiB,WAE/B,OAAO9sC,KAAKotC,aADI,CAAC,cAErB,EAOAy7E,EAAQxpH,UAAUu8B,cAAgB,WAC9B,MAAO,SACX,EAMAitF,EAAQxpH,UAAUqoB,QAAU,WACxB,IAAI2R,EAAKr5B,KAAKhd,QACdq2C,EAAG9B,MAAMuiB,QAAU,IACnB3iB,EAAAA,EAAAA,IAAY,CAACn3B,KAAKhd,SAAU,CA/HrB,YA+HgC69O,EAAYR,IACnD,IAAI2E,GAAOlsM,EAAAA,EAAAA,IAAU,MAAQO,EAAGz0C,GAAK,QAAU0/O,EAAgBjrM,GAC3D4rM,GAAWnsM,EAAAA,EAAAA,IAAU,IAAMgoM,EAAaznM,GAC5C,GAAGh8B,MAAMqC,KAAKulO,GAAUlmP,SAAQ,SAAU+3C,IACtCyB,EAAAA,EAAAA,IAAOzB,EACX,IACA,IAAK,IAAIvoB,EAAK,EAAGvoB,EAAK,GAAGqX,MAAMqC,KAAKM,KAAK4hO,YAAYhqP,UAAW22B,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAClF,IAAI+D,EAAOtsB,EAAGuoB,GACd8qB,EAAGloB,YAAYmB,EACnB,CACItS,KAAKqhO,UACLrhO,KAAKhd,QAAQk+C,gBAAgB,OAEjC3I,EAAAA,EAAAA,IAAOv4B,KAAK4oH,WACRo8G,EAAK/sP,OAAS,KACdsgD,EAAAA,EAAAA,IAAOysM,EAAK,KACPr3N,EAAAA,EAAAA,IAAkBq3N,EAAK,MACxBzsM,EAAAA,EAAAA,IAAOysM,EAAK,KAGpBhwM,EAAAA,GAAaW,OAAO31B,KAAK4oH,UAAW,SAAU5oH,KAAK2kO,oBACnD3kO,KAAKknE,YAAYx/C,UACjB1nB,KAAKknE,YAAc,KACnBz7D,EAAOpM,UAAUqoB,QAAQhoB,KAAKM,KAClC,EAQA6oH,EAAQxpH,UAAUkkG,QAAU,SAAUhmH,GAClC,IAAIilP,GAAS1pM,EAAAA,EAAAA,IAAU,sBAAwBwnM,EAAc,IAAKtgO,KAAKhd,SACnEzF,EACAyiB,KAAKhd,QAAQ4zC,UAAUzB,IAAImrM,GAG3BtgO,KAAKhd,QAAQ4zC,UAAUjB,OAAO2qM,GAElC,GAAGjjO,MAAMqC,KAAK8iO,GAAQzjP,SAAQ,SAAUs6C,GACpCA,EAAG/C,aAAa,WAAa/4C,EAAc,KAAN,IACzC,GACJ,EACAsrI,EAAQxpH,UAAUulO,qBAAuB,SAAU5hP,GAC/C,IAAI4B,EAAK5B,EAAQ4B,GAAGjE,OAAO,QACvBukP,GAAiBH,EAAAA,EAAAA,IAAS,MAAO,CAAE9pP,UAAW6lP,EAAc,IAAM4D,IAClES,EAAU,KAAOniP,EAAQ4B,GAAGjE,OAAO,QAAU2jP,EAAiB,IAAME,GACpEY,GAAUL,EAAAA,EAAAA,IAAS,MAAO,CAAEngP,GAAIA,EAAGjE,OAAO,QAAS1F,UAAWkqP,IAC9DjD,GAAU6C,EAAAA,EAAAA,IAAS,MAAO,CAAE9pP,UAAWopP,EAAmB,IAAM9D,EAAe,aACnF6E,EAAQj0N,YAAY+wN,GACpB,IAAImD,GAAQN,EAAAA,EAAAA,IAAS,MAAO,CAAE9pP,UAAW6lP,EAAc,IAAM2D,IACzDzkO,KAAKohO,SACLgE,EAAQxuM,UAAUzB,IAAI,cAE1BnyC,EAAQmuB,YAAY+zN,GACpBliP,EAAQmuB,YAAYi0N,GACpBpiP,EAAQg1C,aAAaqtM,EAAOriP,EAAQu4H,YACpCv7G,KAAKoiO,aAAa,CAACgD,GACvB,EACAv8G,EAAQxpH,UAAUmiO,cAAgB,SAAUx+O,GACxC,IAAI4B,EAAK5B,EAAQ4B,GAAGjE,OAAO,QACvBwkP,EAAU,KAAOniP,EAAQ4B,GAAGjE,OAAO,QAAU2jP,EAAiB,IAAME,GACpE3C,GAAMkD,EAAAA,EAAAA,IAAS,MAAO,CAAEngP,GAAIA,EAAGjE,OAAO,SAAU1F,UAAWkqP,IAC/DtD,EAAIvrM,aAAa,gBAAiB,SAClC,IAAI4rM,GAAU6C,EAAAA,EAAAA,IAAS,MAAO,CAAE9pP,UAAWopP,EAAmB,IAAM9D,EAAe,aAC/E+E,EAAQ,KAAOtiP,EAAQ4B,GAAGjE,OAAO,QAAU2jP,EAAiB,IAAMC,GAClEgB,GAAaR,EAAAA,EAAAA,IAAS,MAAO,CAAEngP,GAAIA,EAAGjE,OAAO,OAAQ1F,UAAWqqP,EAAQ,IAAMhF,IAClFiF,EAAWjvM,aAAa,gBAAiB,QACzC,IAAIkvM,GAAYT,EAAAA,EAAAA,IAAS,MAAO,CAAE9pP,UAAWmpP,EAAiB,IAAM7D,EAAe,aACnFgF,EAAWp0N,YAAYq0N,GACvB3D,EAAI1wN,YAAY+wN,GAChBL,EAAIvrM,aAAa,WAAY,KAC7BtzC,EAAQmuB,YAAY0wN,GACpB7+O,EAAQg1C,aAAautM,EAAYviP,EAAQu4H,YACrCv7G,KAAKohO,UACLS,EAAIjrM,UAAUzB,IAAI,cAClBowM,EAAW3uM,UAAUzB,IAAI,eAE7Bn1B,KAAKoiO,aAAa,CAACP,EAAK0D,GAC5B,EACA18G,EAAQxpH,UAAU0jN,WAAa,SAAUhyF,GACrC,IAAI/gH,EAAQhQ,KACZ,GAAe,UAAX+wH,EAAG/xI,IAAiB,CAKpBghB,KAAK0iO,SAAWpiP,OAAO4vB,YAAW,WAH9BF,EAAM2yN,YAAa,EACnB3yN,EAAM4yN,aAAa,GAAI7xG,EAAG5yF,QAAQ,EAItC,GAAG,IACP,CACJ,EACA0qF,EAAQxpH,UAAUwjO,QAAU,SAAU9xG,GACnB,UAAXA,EAAG/xI,MAGHghB,KAAK2iO,WACL3iO,KAAK2iO,YAAa,EAGlB5xG,EAAG5yF,OAAOipB,QAEdn3C,aAAajQ,KAAK0iO,UACtB,EACA75G,EAAQxpH,UAAU+iO,aAAe,SAAUp/O,GACvC,IAAIgtB,EAAQhQ,KACZ,GAAG3C,MAAMqC,KAAK1c,GAASjE,SAAQ,SAAU+3C,GACrC,IAAIslB,EAAAA,GAAMtlB,EAAK,CAAE40F,QAAS17G,EAAM8yN,eAAe9jO,KAAKgR,GAAQ6/B,iBAAkB,MAC9E/Y,EAAIjzB,iBAAiB,UAAWmM,EAAM+yM,WAAW/jN,KAAKgR,IACtD8mB,EAAIjzB,iBAAiB,QAASmM,EAAM6yN,QAAQ7jO,KAAKgR,IACjD8mB,EAAIjzB,iBAAiB,UAAWmM,EAAM+yN,aAAa/jO,KAAKgR,IACxD8mB,EAAIjzB,iBAAiB,WAAYmM,EAAM+yN,aAAa/jO,KAAKgR,IACzD8mB,EAAIjzB,iBAAiB,eAAe,SAAUpoB,GAC1CA,EAAEi1D,gBACN,IACA1b,EAAAA,GAAaG,IAAI2B,EAAK,QAAS9mB,EAAMgzN,kBAAmBhzN,EAC5D,GACJ,EACA64G,EAAQxpH,UAAU0jO,aAAe,WAC7BlxN,cAAc7R,KAAKijO,QACvB,EACAp6G,EAAQxpH,UAAUyjO,eAAiB,SAAU/xG,GACzC,IAAI/gH,EAAQhQ,KACRysH,EAAOsE,EAAGnzE,cAAczf,OAC5BsuF,EAAOzsH,KAAKk3B,SAASu1F,EAAM63G,GAAkB73G,EAAKx0F,kBAAoBw0F,EAKtEzsH,KAAKijO,QAAU3iP,OAAOqxB,aAAY,WAF9B3B,EAAM4yN,aAFW,GAEkBn2G,GAAM,EAI7C,GAAG,GACP,EACA5D,EAAQxpH,UAAU63B,SAAW,SAAUl0C,EAAS/H,GAC5C,OAAO+H,EAAQ4zC,UAAUM,SAASj8C,EACtC,EACA4tI,EAAQxpH,UAAUujO,aAAe,SAAUM,EAAWz2G,EAAM02G,GACxD,IAAIvsM,EAAY61F,EAAK71F,UACjBA,EAAUM,SAASotM,KACnB1tM,EAAY61F,EAAKl6G,cAAc,IAAMguN,GAAc3pM,WAEnDA,EAAUM,SAASmtM,GACnBrkO,KAAKqjO,mBAAmBH,EAAW,MAAOC,GAErCvsM,EAAUM,SAASktM,IACxBpkO,KAAKqjO,mBAAmBH,EAAW,GAAIC,EAE/C,EACAt6G,EAAQxpH,UAAU2jO,kBAAoB,SAAUjhP,GAC5Cie,KAAK4iO,aAAa5iO,KAAK8oH,WAAY/mI,EAAMo8C,QAAQ,EACrD,EACA0qF,EAAQxpH,UAAUwlO,kBAAoB,SAAUppP,GAC5CA,EAAEi1D,iBACF1wC,KAAKqjO,mBAAmBrjO,KAAK8oH,WAAartI,EAAEgqP,OAAS,EAAI,MAAQ,IAAK,EAC1E,EACA58G,EAAQxpH,UAAUiiO,aAAe,SAAU7lP,GACvC,IACI62D,EADAozL,EAAe1lO,KAAK4oH,UAGpBt2E,EADA72D,EAAEyiE,UAAY,EACHziE,EAAEuiE,WAA0B,GAAbviE,EAAEyiE,UAGjBziE,EAAEuiE,UAAYviE,EAAEyiE,SAE/B,IAAIzwC,EAAQ,IACE,SAAVkzB,IACA,IAAIgB,EAAO9/B,KAAK0hO,IAAI91N,GAChBk0B,GAAQ,EACRrhD,OAAOghD,qBAAqBK,IAGH,OAArBlmD,EAAEmjE,eACF8mL,EAAaliM,WAAa8O,EAAW3Q,EAEX,SAArBlmD,EAAEmjE,iBACP8mL,EAAaliM,WAAa8O,EAAW3Q,GAEzCl0B,GAAS,IACTntB,OAAO6hD,sBAAsBxB,GAErC,CACAA,EACJ,EACAkoF,EAAQxpH,UAAUmkO,eAAiB,SAAUC,EAAWxgO,GACrC,QAAXA,EACAjD,KAAK4oH,UAAUplF,WAAaigM,EAG5BzjO,KAAK4oH,UAAUplF,WAAaigM,CAEpC,EACA56G,EAAQxpH,UAAUgkO,mBAAqB,SAAUK,EAAazgO,EAAQkgO,GAClE,IAAInzN,EAAQhQ,KAEZ,GAAImjO,EACAnjO,KAAKwjO,eAAeE,EAAazgO,OADrC,CAIKjD,KAAKmhO,YACN,GAAG9jO,MAAMqC,MAAKo5B,EAAAA,EAAAA,IAAU,IAAMgoM,EAAa9gO,KAAKhd,UAAUjE,SAAQ,SAAUs6C,GACxEqqM,GAAerqM,EAAG4a,YACtB,KAEU,SAAVtT,IACI+iM,EAXG,GAYHpjP,OAAOghD,qBAZJ,KAeHtxB,EAAMwzN,eAfH,GAewBvgO,GAC3BygO,GAhBG,GAiBHpjP,OAAO6hD,sBAAsBxB,GAErC,CACAA,EAhBA,CAiBJ,EACAkoF,EAAQxpH,UAAUssH,aAAe,SAAUlwI,GACvC,IAAI49C,EAAKr5B,KAAK4oH,UACVt2E,EAAW72D,EAAEuiE,UACS,OAAtBviE,EAAEwiE,gBACF5kB,EAAGmK,UAAYnK,EAAGmK,UAAY8O,EAEH,SAAtB72D,EAAEwiE,kBACP5kB,EAAGmK,UAAYnK,EAAGmK,UAAY8O,EAEtC,EACAu2E,EAAQxpH,UAAUskO,eAAiB,SAAUgC,EAAeC,GACxD,GAAI5lO,KAAKwzB,SAAU,CACf,IACIswM,IADWn2N,EAAAA,EAAAA,IAAkBg4N,GAAiBC,EAAmBD,GAC5CpzN,cAAc,IAAMguN,IACzC5yN,EAAAA,EAAAA,IAAkBg4N,IAClB/uM,EAAAA,EAAAA,IAAUktM,EAAW,CAACO,GAAmB,CAACD,KAG1CxtM,EAAAA,EAAAA,IAAUktM,EAAW,CAACM,GAAiB,CAACC,GAEhD,MAEIsB,EAAc/uM,UAAUzB,IAAImrM,GAC5BqF,EAAcrvM,aAAa,gBAAiB,QAC5CqvM,EAAczkM,gBAAgB,YAC9B0kM,EAAiBhvM,UAAUjB,OAAO2qM,GAClCsF,EAAiBtvM,aAAa,gBAAiB,SAC/CsvM,EAAiBtvM,aAAa,WAAY,KAE9Ct2B,KAAK+iO,cACT,EACAl6G,EAAQxpH,UAAUslO,mBAAqB,SAAUlpP,GAC7C,IAAI0iD,EAAS1iD,EAAE0iD,OACX6V,EAAS7V,EAAO8V,aAChB4xL,EAAW7lO,KAAKhd,QAAQuvB,cAAc,IAAMgyN,GAC5CuB,EAAa9lO,KAAKhd,QAAQuvB,cAAc,IAAMiyN,GAC9CuB,EAAY/lO,KAAKhd,QAAQuvB,cAAc,IAAMkyN,GAC7CuB,EAAchmO,KAAKhd,QAAQuvB,cAAc,IAAMmyN,GAC/ClhM,EAAYrF,EAAOqF,UAkBvB,GAjBIA,GAAa,IACbA,GAAaA,GAEbxjC,KAAKwzB,WAEDuyM,EAAUxuM,MAAMyc,OADhBxQ,EAnXK,GAoXoBA,EAAY,KAGZ,OAExBrF,EAAO8R,aAAepuC,KAAKyf,KAAK0yB,EAASxQ,GAzXrC,GA0XLwiM,EAAYzuM,MAAMyc,OAAU7V,EAAO8R,aAAepuC,KAAKyf,KAAK0yB,EAASxQ,GAAc,KAGnFwiM,EAAYzuM,MAAMyc,OAAS,QAGjB,IAAdxQ,EACAxjC,KAAK2jO,eAAekC,EAAUC,QAE7B,GAAIjkO,KAAKyf,KAAK0yB,EAASxQ,EAAY,KAAOrF,EAAO8R,aAClDjwC,KAAK2jO,eAAemC,EAAYD,OAE/B,CACD,IAAI1B,EAASnkO,KAAKhd,QAAQuvB,cAAc,IAAM+xN,EAAiB,IAAMhE,GACjE6D,IACAA,EAAOvtM,UAAUjB,OAAO2qM,GACxB6D,EAAO7tM,aAAa,gBAAiB,SACrC6tM,EAAO7tM,aAAa,WAAY,KAExC,CACJ,EASAuyF,EAAQxpH,UAAUi8B,kBAAoB,SAAU+G,EAASC,GACrD,IAAK,IAAI/zB,EAAK,EAAGvoB,EAAKnH,OAAOC,KAAKujD,GAAU9zB,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAE9D,OADWvoB,EAAGuoB,IAEV,IAAK,aACDvO,KAAKyhO,iBACL,MACJ,IAAK,YACGp/L,EAAQsI,UACR3qC,KAAKhd,QAAQ4zC,UAAUzB,IAAIkrM,GAG3BrgO,KAAKhd,QAAQ4zC,UAAUjB,OAAO0qM,GAI9C,CACJ,EACA1gM,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACV2qF,EAAQxpH,UAAW,kBAAc,GACpCwpH,EAAUlpF,EAAW,CACjBhB,EAAAA,IACDkqF,EAEP,CAna6B,CAma3Bx+E,EAAAA,qICrdE9K,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAazCC,EAA0C,SAAUC,EAAYzB,EAAQn/C,EAAK6gD,GAC7E,IAA2H3pB,EAAvHD,EAAI5X,UAAUpmB,OAAQ4O,EAAIovB,EAAI,EAAIkoB,EAAkB,OAAT0B,EAAgBA,EAAOhhD,OAAOihD,yBAAyB3B,EAAQn/C,GAAO6gD,EACrH,GAAuB,kBAAZ/gC,SAAoD,oBAArBA,QAAQihC,SAAyBl5C,EAAIiY,QAAQihC,SAASH,EAAYzB,EAAQn/C,EAAK6gD,QACpH,IAAK,IAAI16B,EAAIy6B,EAAW3nD,OAAS,EAAGktB,GAAK,EAAGA,KAAS+Q,EAAI0pB,EAAWz6B,MAAIte,GAAKovB,EAAI,EAAIC,EAAErvB,GAAKovB,EAAI,EAAIC,EAAEioB,EAAQn/C,EAAK6H,GAAKqvB,EAAEioB,EAAQn/C,KAAS6H,GAChJ,OAAOovB,EAAI,GAAKpvB,GAAKhI,OAAOs1C,eAAegK,EAAQn/C,EAAK6H,GAAIA,CAChE,EAYIo/O,EAAe,aACfC,EAAY,kBACZC,EAAW,iBACX9F,EAAU,QACV+F,EAAgB,cAChBC,EAAgB,kBAChBC,EAAgB,oBAChBC,EAAgB,eAChBC,EAAe,aACflG,EAAc,YACdmG,EAAgB,iBAChBC,EAAe,eACfC,EAAmB,kBACnBC,EAAkB,kBAElBC,EAAc,YACdC,EAAkB,eAGlBC,EAAiB,mBACjBC,EAAc,aAGdC,EAAiB,gBAEjBC,EAAiB,gBACjBC,EAAY,kBAEZC,EAAiB,eACjBC,EAAiB,WACjBC,EAAa,gBACbC,EAAa,WACbC,EAAe,qBACfC,EAAkB,iBAClBC,EAAyB,uBACzBC,EAA2B,uBAC3BC,EAA0B,qBAC1BC,EAAsB,qBAEtBC,EAAsB,kBAItBh7C,EAAsB,SAAUrhL,GAEhC,SAASqhL,IACL,OAAkB,OAAXrhL,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAuDA,OA1DAu/B,EAAUutJ,EAAMrhL,GAIhBk0B,EAAW,EACPzB,EAAAA,EAAAA,IAAS,KACV4uJ,EAAKztL,UAAW,UAAM,GACzBsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,KACV4uJ,EAAKztL,UAAW,YAAQ,GAC3BsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,SACV4uJ,EAAKztL,UAAW,aAAS,GAC5BsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,KACV4uJ,EAAKztL,UAAW,gBAAY,GAC/BsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4uJ,EAAKztL,UAAW,yBAAqB,GACxCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4uJ,EAAKztL,UAAW,gBAAY,GAC/BsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,KACV4uJ,EAAKztL,UAAW,kBAAc,GACjCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,KACV4uJ,EAAKztL,UAAW,kBAAc,GACjCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4uJ,EAAKztL,UAAW,eAAW,GAC9BsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,SACV4uJ,EAAKztL,UAAW,gBAAY,GAC/BsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,KACV4uJ,EAAKztL,UAAW,gBAAY,GAC/BsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,WACV4uJ,EAAKztL,UAAW,YAAQ,GAC3BsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,SACV4uJ,EAAKztL,UAAW,kBAAc,GACjCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACV4uJ,EAAKztL,UAAW,sBAAkB,GACrCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,KACV4uJ,EAAKztL,UAAW,mBAAe,GAClCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,SACV4uJ,EAAKztL,UAAW,aAAS,GAC5BsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDs9K,EAAKztL,UAAW,aAAS,GAC5BsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAU,IACX4uJ,EAAKztL,UAAW,gBAAY,GACxBytL,CACX,CA5D0B,CA4DxB5mJ,EAAAA,IAYE73C,EAAyB,SAAUod,GAQnC,SAASpd,EAAQqS,EAAS1d,GACtB,IAAIgtB,EAAQvE,EAAO/L,KAAKM,KAAMU,EAAS1d,IAAYgd,KAiBnD,OAhBAgQ,EAAM+3N,cAAgB/3N,EAAMg4N,OAAOhpO,KAAKgR,GACxCA,EAAMi4N,yBAA2Bj4N,EAAMk4N,kBAAkBlpO,KAAKgR,GAI9DA,EAAM2qC,WAAa,CACfkZ,SAAU,YACVC,UAAW,aACXF,OAAQ,UACRD,SAAU,YACVw0K,UAAW,QACXC,WAAY,SACZ5+J,IAAK,MACLzV,KAAM,OACN7rD,IAAK,OAEF8H,CACX,CAyoEA,OAnqEAuvB,EAAUlxC,EAASod,GAgCnBpd,EAAQgR,UAAUqoB,QAAU,WACxB,IAAI1X,EAAQhQ,MACRA,KAAK87F,SAAW97F,KAAKyrD,YACrBzrD,KAAKgtC,gBAET,IAAIq7L,EAAWroO,KAAKhd,QAAQ8tB,iBAAiB,oBAa7C,IAZA,GAAGzT,MAAMqC,KAAK2oO,GAAUtpP,SAAQ,SAAUs6C,IACjCvI,EAAAA,EAAAA,IAAMuI,KAAQvI,EAAAA,EAAAA,IAAMuI,EAAGwC,iBAAmB/K,EAAAA,EAAAA,IAAMuI,EAAGwC,cAAc,KAASxC,EAAGwC,cAAc,GAAGjB,aAC/FvB,EAAGwC,cAAc,GAAGnU,SAE5B,IACA1nB,KAAKm7C,eACLn7C,KAAKskD,OAAOvlE,SAAQ,SAAU+3C,IACrBhG,EAAAA,EAAAA,IAAM9gB,EAAMhtB,QAAQuvB,cAAcukB,MACnCl0B,SAASuuB,KAAKhgB,YAAYnB,EAAMhtB,QAAQuvB,cAAcukB,IAAMS,MAAMuiB,QAAU,OAEpF,IACA95C,KAAKsoO,eACEtoO,KAAKhd,QAAQmyI,kBAChBn1H,KAAKhd,QAAQw1C,YAAYx4B,KAAKhd,QAAQmyI,kBAEtCn1H,KAAKuoO,UACLvoO,KAAKhd,QAAQmuB,YAAYnR,KAAKwoO,SAC9BxoO,KAAKuoO,QAAU,KACfvoO,KAAKwoO,QAAU,MAEfxoO,KAAKyoO,SACLzoO,KAAKyoO,OAAO/gN,WACZ6Q,EAAAA,EAAAA,IAAOv4B,KAAKyoO,OAAOzlP,UAEnBgd,KAAK0oO,YACL1oO,KAAK0oO,UAAY,MAErB1oO,KAAKyoO,OAAS,KACdzoO,KAAK2oO,UAAY,KACjB3oO,KAAK4oO,aAAe,GACpB5oO,KAAK21B,OAAO31B,KAAKhd,QAAS,aACtBgd,KAAK7f,WACLg3C,EAAAA,EAAAA,IAAY,CAACn3B,KAAKhd,SAAUgd,KAAK7f,SAAS8T,MAAM,MAEpD+L,KAAKhd,QAAQk+C,gBAAgB,SAC7B,CAAC,gBAAiB,mBAAoB,QAAQniD,SAAQ,SAAU8pP,GAC5D,OAAO74N,EAAMhtB,QAAQk+C,gBAAgB2nM,EACzC,IACAp9N,EAAOpM,UAAUqoB,QAAQhoB,KAAKM,KAClC,EAOA3R,EAAQgR,UAAU+rC,UAAY,WAC1B,IAAIpc,EAAY,CAAE85M,gBAAiB9oO,KAAK8oO,gBAAiBhgH,WAAY9oH,KAAK8oH,YAC1E9oH,KAAK81B,QAAQ,eAAgB9G,GAC7BhvB,KAAK8oO,gBAAkB95M,EAAU85M,gBACjC9oO,KAAK8oH,WAAa95F,EAAU85F,WAC5B9oH,KAAK+pI,aAAe,KACpB/pI,KAAKyoO,OAAS,KACdzoO,KAAKskD,OAAS,GACdtkD,KAAK4oO,aAAe5oO,KAAKlW,MACzBkW,KAAK+oO,aAAa/oO,KAAKhd,QAAQ4zC,UAAUM,SAAS+uM,GAClDjmO,KAAKgpO,gBAAiB,EACtBhpO,KAAKipO,cAAgB,EACjBjpO,KAAK2qC,WACL3qC,KAAKm1B,IAAIn1B,KAAKhd,QAASq9O,EAE/B,EACAhyO,EAAQgR,UAAUk6C,WAAa,WAC3BvkB,EAAAA,GAAaG,IAAIn1B,KAAKhd,QAAS,QAASgd,KAAK2oD,aAAc3oD,MAC3D1f,OAAOujB,iBAAiB,SAAU7D,KAAK+nO,eACvCznP,OAAOujB,iBAAiB,oBAAqB7D,KAAKioO,0BAC9CjoO,KAAKm5K,eACLn5K,KAAKisH,mBAEb,EACA59H,EAAQgR,UAAU4sH,kBAAoB,WAClCjsH,KAAKkpO,UAAY,IAAIjvL,EAAAA,GAAej6C,KAAKhd,QAAS,CAC9Ck4D,UAAWl7C,KAAKuoG,iBAAiBvpG,KAAKgB,MACtC26C,WAAY36C,KAAK26C,aAErB3lB,EAAAA,GAAaG,IAAIn1B,KAAKhd,QAAS,UAAWgd,KAAKmpO,WAAYnpO,MAC3DA,KAAKopO,eAAe,IACxB,EACA/6O,EAAQgR,UAAU+pO,eAAiB,SAAUh2K,GACzC,IAAIt8B,EAAM92B,KAAKhd,QAAQuvB,cAAc,IAAM4zN,EAAW,SAAW7F,EAAc,WAAa8F,EAAgB,WAAamB,EAAa,MACtI,KAAKz2M,EAAAA,EAAAA,IAAMgG,MAAShG,EAAAA,EAAAA,IAAMgG,EAAImB,mBAAoB,CAC9C,IAAIoxM,EAAevyM,EAAImB,kBAAkBmJ,aAAa,iBAClDioM,GAAiC,OAAjBA,GAA2D,UAAlCvyM,EAAImB,kBAAkB9B,SAC/DW,EAAImB,kBAAkB3B,aAAa,WAAY88B,EAEvD,CACJ,EACA/kE,EAAQgR,UAAUiqO,oBAAsB,WAChCtpO,KAAKkpO,YACLl0M,EAAAA,GAAaW,OAAO31B,KAAKhd,QAAS,UAAWgd,KAAKmpO,YAClDnpO,KAAKkpO,UAAUxhN,UACf1nB,KAAKkpO,UAAY,KAEzB,EACA76O,EAAQgR,UAAU8pO,WAAa,SAAU1tP,GACrC,GAAyB,UAArBA,EAAE0iD,OAAOhI,QAAb,CAGA,IAAIozM,IAAYz4M,EAAAA,EAAAA,IAAM9wB,KAAKyoO,UAAWnxM,EAAAA,EAAAA,IAAUt3B,KAAKyoO,OAAOzlP,UAAkC,aAAtBgd,KAAKwpO,aAC3D,IAAd/tP,EAAEu+D,UAA8D,IAA7Cv+D,EAAE0iD,OAAOvH,UAAUM,SAAS,cAAyBqyM,GACxEvpO,KAAKyoO,OAAOxjK,KAAK,CAAE7sF,KAAM,UAAW0pD,SAAU,OAEpB,KAAdrmD,EAAEu+D,SAAgC,KAAdv+D,EAAEu+D,SAAgC,KAAdv+D,EAAEu+D,SAAgC,KAAdv+D,EAAEu+D,UAE1Ev+D,EAAEi1D,gBAPN,CASJ,EACAriD,EAAQgR,UAAU87C,aAAe,WAC7BnmB,EAAAA,GAAaW,OAAO31B,KAAKhd,QAAS,QAASgd,KAAK2oD,cAChD3oD,KAAKgpH,gBACLhpH,KAAKspO,sBACLhpP,OAAOwjB,oBAAoB,SAAU9D,KAAK+nO,eAC1CznP,OAAOwjB,oBAAoB,oBAAqB9D,KAAKioO,0BACrDjzM,EAAAA,GAAaW,OAAO/yB,SAAU,SAAU5C,KAAKypO,UAC7Cz0M,EAAAA,GAAaW,OAAO/yB,SAAU,QAAS5C,KAAKypO,SAChD,EACAp7O,EAAQgR,UAAUqqO,cAAgB,WAC9B1pO,KAAK2pO,QAAU,GACf3pO,KAAK4pO,WAAa,CAAEC,MAAO,GAAIC,QAAS,GAAIC,OAAQ,GACxD,EACA17O,EAAQgR,UAAUoqO,SAAW,SAAUhuP,GACnC,IAAIuuP,GAAS5wM,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,YAC3Bn+B,KAAKyoO,SAAUnxM,EAAAA,EAAAA,IAAUt3B,KAAKyoO,OAAOzlP,WAAagnP,GAAgC,UAAtBhqO,KAAKwpO,cACjExpO,KAAKyoO,OAAOxjK,KAAK,CAAE7sF,KAAM,UAAW0pD,SAAU,KAEtD,EACAzzC,EAAQgR,UAAU2pH,cAAgB,WAC1BhpH,KAAK+pI,eACD/pI,KAAK2oO,WACL3oO,KAAKm1B,IAAIn1B,KAAK+pI,aAAa/mJ,QAASgkP,GAExChnO,KAAK+pI,aAAariH,UAClB1nB,KAAK+pI,aAAe,KAE5B,EACA17I,EAAQgR,UAAUipO,aAAe,WAI7B,GAHItoO,KAAKhd,SACL,GAAGqa,MAAMqC,KAAKM,KAAKhd,QAAQ8tB,iBAAiB,IAAMq1N,IAAWpnP,SAAQ,SAAUs6C,IAAMd,EAAAA,EAAAA,IAAOc,EAAK,IAEjGr5B,KAAK2oO,UAAW,CAChB,IAAIsB,EAAYjqO,KAAKhd,QAAQuvB,cAAc,IAAM2zN,GACjD,GAAG7oO,MAAMqC,KAAKuqO,EAAUryP,UAAUmH,SAAQ,SAAUs6C,IAChDd,EAAAA,EAAAA,IAAOc,EACX,IACAr5B,KAAK2oO,WAAY,EACjB3oO,KAAK21B,OAAOs0M,EAAWjD,EAC3B,CACAhnO,KAAK0pO,eACT,EACAr7O,EAAQgR,UAAU6qO,YAAc,WACxBlqO,KAAK+pI,eACL/pI,KAAK21B,OAAO31B,KAAK+pI,aAAa/mJ,QAASq9O,GACvCrgO,KAAKgpH,iBAEThpH,KAAK21B,OAAO31B,KAAKhd,QAAS8kP,GAC1B9nO,KAAK21B,OAAO31B,KAAKhd,QAAS4kP,GAC1B,IAAIuC,EAAUnqO,KAAKhd,QAAQuvB,cAAc,uBACrC43N,GACAnqO,KAAK21B,OAAOw0M,EAAS3C,GAErBxnO,KAAKyoO,QACLzoO,KAAKoqO,aAAapqO,KAAKyoO,OAAOzlP,SAAS,EAE/C,EACAqL,EAAQgR,UAAU81B,IAAM,SAAU2B,EAAKn5B,GACnCm5B,EAAIF,UAAUzB,IAAIx3B,EACtB,EACAtP,EAAQgR,UAAUs2B,OAAS,SAAUmB,EAAKn5B,GACtCm5B,EAAIF,UAAUjB,OAAOh4B,EACzB,EACAtP,EAAQgR,UAAUgrO,aAAe,SAAUvzM,GACvC,IAAIwzM,EAASxzM,EAAImB,kBACbqyM,GACAA,EAAO74N,QACPzR,KAAKuqO,gBAAgBzzM,IAGrBA,EAAIrlB,OAEZ,EACApjB,EAAQgR,UAAUmrO,YAAc,SAAUC,EAAWh+G,GAWjD,OATIg+G,GAAazqO,KAAKyoO,SAAUnxM,EAAAA,EAAAA,IAAUt3B,KAAKyoO,OAAOzlP,SAC3Cgd,KAAKyoO,OAAOzlP,QAAQuvB,cAAc,IAAM4zN,GAE1CnmO,KAAKhd,UAAYypI,GAAQg+G,EACvBzqO,KAAKhd,QAAQuvB,cAAc,IAAM4zN,EAAW,SAAW7F,EAAc,WAAa8F,EAAgB,WAAamB,EAAa,OAG5HnuM,EAAAA,EAAAA,IAAQqzF,EAAM,IAAM05G,EAGnC,EACA93O,EAAQgR,UAAUqrO,YAAc,SAAUC,EAAMlvP,EAAGgxI,EAAMm+G,EAAQC,GAC7D,IAII/zM,EACAivB,EALA0iL,EAASzoO,KAAKyoO,OACdrF,EAAUpjO,KAAKhd,QACf8nP,EAAa,CAAE1yP,KAAM,UAAW0pD,SAAU,KAC1CvkD,EAAqB,WAAb9B,EAAEwnB,OAAsB,WAAa,OAGjD,OAAQxnB,EAAEwnB,QACN,IAAK,YACD,GAAIjD,KAAK+oO,WACL,OAEA3F,IAAY32G,EACZzsH,KAAKqqO,aAAaM,GAEZC,GACN5qO,KAAK+qO,SAASJ,EAAM,QAExB,MACJ,IAAK,WACD,GAAI3qO,KAAK+oO,WACL,OAEC6B,GACD5qO,KAAK+qO,SAASJ,EAAM,YAExB,MACJ,IAAK,OACL,IAAK,MACD,GAAIA,EAAM,CACN,IAAIK,GAAa5xM,EAAAA,EAAAA,IAAQuxM,EAAM,YAC3BM,EAAgBjrO,KAAKhd,QAAQuvB,cAAc,IAAMs1N,GAC3B,aAAtB7nO,KAAKwpO,cAA+ByB,GAAiBA,EAAcr0M,UAAUM,SAAS,kBACtF8zM,EAA0B,QAAbvvP,EAAEwnB,OAAmBgoO,EAAgB,MAElDD,GACI1zM,EAAAA,EAAAA,IAAUt3B,KAAKyoO,OAAOzlP,WACtB+iE,EAAQ,GAAG1oD,MAAMqC,KAAKsrO,EAAWpzP,UAE7Bk/C,EADa,SAAbr7C,EAAEwnB,OACIjD,KAAKkrO,qBAAqBnlL,GAG1B/lD,KAAKmrO,oBAAoBplL,KAKvCA,EAAQ/lD,KAAKhd,QAAQ8tB,iBAAiB,IAAMo1N,EAAY,KAAOC,EAAW,SAAWC,EAAgB,KAEjGtvM,EADa,SAAbr7C,EAAEwnB,OACIjD,KAAKkrO,qBAAqBnlL,GAG1B/lD,KAAKmrO,oBAAoBplL,IAGnCjvB,GACA92B,KAAKqqO,aAAavzM,EAE1B,CACA,MACJ,IAAK,SACL,IAAK,WACD,GAAK92B,KAAK+oO,WAmBW,WAAbttP,EAAEwnB,OACFjD,KAAK+qO,SAASJ,EAAM,YAGpB3qO,KAAK+qO,SAASJ,EAAM,aAtBxB,GAAIlC,IAAUrvM,EAAAA,EAAAA,IAAQqzF,EAAM,YAAa,CACrC,IAAIu9G,EAASvB,EAAOzlP,QAChBooP,EAAapB,EAAO/xM,kBACT,aAAV16C,GAAwB6tP,IAAeT,EACxCX,EAAO70G,iBAAiB5Z,WAAW9pG,QAEpB,SAAVl0B,GAAoBysP,EAAO70G,mBAAqBw1G,EACrDS,EAAW7vH,WAAW9pG,QAGtBzR,KAAK+qO,SAASJ,EAAMptP,EAE5B,KACsB,aAAb9B,EAAEwnB,QAAyBwlO,IAAUnxM,EAAAA,EAAAA,IAAUmxM,EAAOzlP,UAC3Dgd,KAAKqqO,aAAaM,GAW1B,MACJ,IAAK,MACD,IAAKE,IAAcD,EAAQ,CACvB,IAAIlQ,EAAQiQ,EAAK1yM,kBACbmrM,IAAY32G,IACRzsH,KAAK0oO,UACL1oO,KAAK0oO,UAAUj3N,SAGfzR,KAAKqrO,gBAAgB3Q,GACrBA,EAAMjpN,SAGlB,CACA,MACJ,IAAK,aACGg3N,GAAgC,aAAtBzoO,KAAKwpO,cACff,EAAOxjK,KAAK6lK,GAEhB,MACJ,IAAK,YACD,IAAKF,EACD,OAEAnC,KAAWnxM,EAAAA,EAAAA,IAAUmxM,EAAOzlP,UAC5BylP,EAAOzlP,QAAQu0C,MAAMqM,IAAMw/L,EAAQnvL,aAAe,KAClDw0L,EAAOvjK,KAAK,CAAE9sF,KAAM,SAAU0pD,SAAU,OAGxC2mM,EAAOxjK,KAAK6lK,GAI5B,EACAz8O,EAAQgR,UAAUkpG,iBAAmB,SAAU9sH,GAC3C,IAAIgxI,EAAOhxI,EAAE0iD,OACb,GAAqB,UAAjBsuF,EAAKt2F,SAAwC,aAAjBs2F,EAAKt2F,UAA0Bn2B,KAAKhd,QAAQ4zC,UAAUM,SAASopM,GAA/F,CAGA7kP,EAAEi1D,iBACF,IAAI+5L,EAAYh+G,EAAK71F,UAAUM,SAAS2vM,GACpCyE,EAAgB7+G,EAAK71F,UAAUM,SAAS4vM,GACxC6D,EAAO3qO,KAAKwqO,YAAYC,EAAWh+G,IACnCk+G,GAAQW,IACRtrO,KAAK0qO,YAAYC,EAAMlvP,EAAGgxI,EAAMg+G,EAAWa,EAN/C,CAQJ,EAQAj9O,EAAQgR,UAAUkkG,QAAU,SAAUhmH,GAClC,IAAI6lP,EAAUpjO,KAAKhd,QACfzF,EACA6lP,EAAQxsM,UAAUzB,IAAImrM,GAGtB8C,EAAQxsM,UAAUjB,OAAO2qM,GAEzBtgO,KAAK0oO,WACL1oO,KAAK0oO,UAAUpyM,aAAa,WAAYt2B,KAAK0oO,UAAUtnM,aAAa,kBAEpEphC,KAAK+pI,cACL/pI,KAAK+pI,aAAaxmC,QAAQhmH,GAE1ByiB,KAAKyoO,UACDnxM,EAAAA,EAAAA,IAAUt3B,KAAKyoO,OAAOzlP,UAAkC,aAAtBgd,KAAKwpO,cACvCxpO,KAAKyoO,OAAOxjK,OAEhBm+J,EAAQ7wN,cAAc,IAAM6wN,EAAQx+O,GAAK,QAAQ0xC,aAAa,WAAa/4C,EAAc,KAAN,KAE3F,EACA8Q,EAAQgR,UAAUksO,YAAc,SAAUlyM,GACtC,OAAOA,EAAGzC,UAAUM,SAASkvM,IAAkB/sM,EAAGzC,UAAUM,SAASopM,IAAgBjnM,EAAG+H,aAAa,aAAe/H,EAAGzC,UAAUM,SAASqwM,MAAgBjwM,EAAAA,EAAAA,IAAU+B,KAAQA,EAAGzC,UAAUM,SAASivM,EACtM,EACA93O,EAAQgR,UAAU6rO,qBAAuB,SAAUnlL,GAG/C,IAFA,IACIj/D,EAAQ,EACLA,EAAQi/D,EAAM9tE,QAAQ,CACzB,IAAI6+C,EAAMivB,EAAM7mE,SAAS4H,EAAM1L,WAAY,KAC3C,IAAK07C,EAAIF,UAAUM,SAASqwM,KAAgBzwM,EAAIF,UAAUM,SAASopM,GAC/D,OAAOxpM,EAEXhwC,GACJ,CAEJ,EACAuH,EAAQgR,UAAU8rO,oBAAsB,SAAUplL,GAG9C,IAFA,IACIj/D,EAAQi/D,EAAM9tE,OAAS,EACpB6O,GAAS,GAAG,CACf,IAAIgwC,EAAMivB,EAAM7mE,SAAS4H,EAAM1L,WAAY,KAC3C,IAAK07C,EAAIF,UAAUM,SAASqwM,KAAgBzwM,EAAIF,UAAUM,SAASopM,GAC/D,OAAOxpM,EAEXhwC,GACJ,CAEJ,EACAuH,EAAQgR,UAAU0rO,SAAW,SAAU3xM,EAASjW,GAC5C,IAAIqoN,EAAM3sP,OAAOu6C,GAASjW,EAAM,kBAChC,GAAIqoN,EAAK,CAEL,GADcxrO,KAAKurO,YAAYC,GAG3B,YADAxrO,KAAK+qO,SAASS,EAAKroN,GAGvBnjB,KAAKqqO,aAAamB,EACtB,MACK,GAAIxrO,KAAK2oO,UAAW,CACrB,IAAIr2N,EAAOzzB,OAAOu6C,EAAQ6f,eAAe91B,EAAM,kBAI/C,IAHK2N,EAAAA,EAAAA,IAAMxe,IAAkC,IAAzBA,EAAK16B,SAASK,SAC9Bq6B,EAAOzzB,OAAOyzB,GAAM6Q,EAAM,qBAEzB2N,EAAAA,EAAAA,IAAMxe,IAASA,EAAK16B,SAASK,OAAS,EACvC,GAAY,SAARkrC,EAAgB,CAChB,IAAIkW,EAAK/mB,EAAKC,cAAc,IAAM4zN,GAC9BnmO,KAAKurO,YAAYlyM,GACjBr5B,KAAK+qO,SAAS1xM,EAAIlW,IAGlBkW,EAAGpB,kBAAkBxmB,QACrBzR,KAAKuqO,gBAAgBlxM,GAE7B,KACK,CACGA,EAAK/mB,EAAK6iH,iBACVn1H,KAAKurO,YAAYlyM,GACjBr5B,KAAK+qO,SAAS1xM,EAAIlW,GAGlBnjB,KAAKqqO,aAAahxM,EAE1B,CAER,MACK,KAAKvI,EAAAA,EAAAA,IAAMsI,GAAU,CACtB,IAAIqyM,EAAWzrO,KAAKhd,QAAQ8tB,iBAAiB,IAAMo1N,EAAY,KAAOC,EAAW,SAAWC,EAA/C,UAAgF9F,EAAhF,UAA+GiH,EAAa,KAC7J,SAARpkN,GAAkBsoN,EAClBzrO,KAAKqqO,aAAaoB,EAAS,IAEd,aAARtoN,GAAsBsoN,GAC3BzrO,KAAKqqO,aAAaoB,EAASA,EAASxzP,OAAS,GAErD,CACJ,EACAoW,EAAQgR,UAAUspD,aAAe,SAAUltE,GACvC,IAgBI8jP,EAhBAvvN,EAAQhQ,KACRysH,EAAOhxI,EAAE0iD,OACTrH,EAAM92B,KAAKhd,QACX0oP,IAAkB56M,EAAAA,EAAAA,KAAMsI,EAAAA,EAAAA,IAAQqzF,EAAM,IAAMy6G,IAC5CyE,EAAUl/G,EAAK71F,UACfg1M,GAAWxyM,EAAAA,EAAAA,IAAQqzF,EAAO,IAAMo6G,GAC/B+E,IACDA,EAAWn/G,GAEV31F,EAAIl/C,SAAS,GAAGg/C,UAAUM,SAAS,cAAiBJ,EAAIl/C,SAAS,GAAGg/C,UAAUM,SAAS,eACpFy0M,EAAQz0M,SAAS2vM,KACrB8E,EAAUl/G,EAAKl6G,cAAc,YAAYqkB,YAEzC+0M,EAAQz0M,SAASmvM,IAAkBsF,EAAQz0M,SAASovM,KACpDtmO,KAAK6rO,kBAAkB/0M,EAAK80M,EAAUvL,GAG1C,IAAIsK,GAAOvxM,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,IAAMgoM,GACnC,KAAKr1M,EAAAA,EAAAA,IAAM65M,KAASA,EAAK/zM,UAAUM,SAASopM,IAAkBsL,EAASh1M,UAAUM,SAAS2vM,GAA1F,CAGA,GAAI8D,EAEApL,EADev/N,KAAKlW,MAAMkW,KAAK2pO,QAAQrzO,QAAQq0O,IAGnD,IAAI37M,EAAY,CAAE4uB,cAAeniE,EAAG2P,KAAMm0O,GACtCA,KAAYzuM,EAAAA,EAAAA,IAAMyuM,EAAQn4K,QAC1BpnD,KAAK81B,QAAQ,SAAW91B,KAAK2pO,QAAQrzO,QAAQq0O,GAAQ,UAAW37M,GAE/DA,EAAUznC,QACXyY,KAAK81B,QAAQ,UAAW9G,GAAW,SAAU88M,KACpCh7M,EAAAA,EAAAA,IAAM9gB,EAAMy4N,SAAWiD,IAAmBI,EAAYvkP,QAAiC,UAAvByoB,EAAMw5N,cACvEsC,EAAY1gP,MAAkC,UAA1B0gP,EAAY1gP,KAAK9Q,MACrC01B,EAAMy4N,OAAOxjK,KAAK,CAAE7sF,KAAM,UAAW0pD,SAAU,KAEvD,GAfJ,CAiBJ,EACAzzC,EAAQgR,UAAUwsO,kBAAoB,SAAU/0M,EAAK80M,EAAUvL,GAC3D,IAAIoI,EAASzoO,KAAKyoO,QACdnxM,EAAAA,EAAAA,IAAUmxM,EAAOzlP,UACjB4oP,EAASh1M,UAAUjB,OAAOyxM,GAC1BqB,EAAOxjK,KAAK,CAAE7sF,KAAM,UAAW0pD,SAAU,QAGrChL,EAAIF,UAAUM,SAASmpM,KACvBoI,EAAO99L,WAAY,EACnB89L,EAAOt2L,SAAW,CAAE00B,EAAG,OAAQC,EAAG,QAEf,IAAnB2hK,EAAOtlM,SAAkBrM,EAAIF,UAAUM,SAASmpM,KAChDoI,EAAO99L,WAAY,EACnB89L,EAAOt2L,SAAW,CAAE00B,EAAG,QAASC,EAAG,QAEvC2hK,EAAO1tM,WACP0tM,EAAOjgK,kBACPigK,EAAOzlP,QAAQu0C,MAAMqM,IAAM5jC,KAAK+rO,oBAAsB,KAC5B,aAAtB/rO,KAAKwpO,eACLf,EAAOzlP,QAAQu0C,MAAM23F,UAAY,OAErC08G,EAASh1M,UAAUzB,IAAIiyM,GACvBqB,EAAOvjK,KAAK,CAAE9sF,KAAM,SAAU0pD,SAAU,MAEhD,EAOAzzC,EAAQgR,UAAUisC,OAAS,WACvBtrC,KAAKyvC,aACLzvC,KAAKgsO,gBACLhsO,KAAKu5C,aACLv5C,KAAKqsC,gBACT,EACAh+C,EAAQgR,UAAUowC,WAAa,WAC3B,IAAIsE,GAAQjiC,EAAAA,EAAAA,IAAW9R,KAAK+zC,OACxBC,GAASliC,EAAAA,EAAAA,IAAW9R,KAAKg0C,QACH,SAAtBphB,EAAAA,GAAQyB,KAAKj8C,MAAmC,SAAhB4nB,KAAKg0C,QAA2C,aAAtBh0C,KAAKwpO,eAC/DpkK,EAAAA,EAAAA,IAASplE,KAAKhd,QAAS,CAAE,OAAUgxD,KAEvCoxB,EAAAA,EAAAA,IAASplE,KAAKhd,QAAS,CAAE,MAAS+wD,IAClC,IAAI0kH,EAAW,CACX,KAAQ,UAAW,gBAAiB,QACpC,mBAAqBz4J,KAAK+oO,WAA4B,WAAf,eAE3CvyM,EAAAA,EAAAA,IAAWx2B,KAAKhd,QAASy1K,GACrBz4J,KAAK7f,WACLs2C,EAAAA,EAAAA,IAAS,CAACz2B,KAAKhd,SAAUgd,KAAK7f,SAAS8T,MAAM,KAErD,EACA5F,EAAQgR,UAAU2sO,cAAgB,WAC9B,IAAIl1M,EAAM92B,KAAKhd,QACfgd,KAAKuoO,QAAWzxM,EAAIl/C,SAASK,OAAS,EAAK6+C,EAAIvkB,cAAc,OAAS,KACtEvS,KAAK4pO,WAAa,CAAEC,MAAO,GAAIC,QAAS,GAAIC,OAAQ,IACpD/pO,KAAK89F,cACL99F,KAAKisO,cACT,EACA59O,EAAQgR,UAAU4sO,aAAe,WAC7BjsO,KAAKksO,qBACDlsO,KAAK2oO,WACL3oO,KAAKmsO,kBAELnsO,KAAKyoO,QAAUzoO,KAAKyoO,OAAOzlP,QAAQu7G,kBAAoB,GAAKv+F,KAAKosO,kBAAkBpsO,KAAKhd,QAASgd,KAAKyoO,OAAOzlP,UAC7Ggd,KAAKoqO,aAAapqO,KAAKyoO,OAAOzlP,SAAS,GAE3Cgd,KAAKiwH,WACT,EACA5hI,EAAQgR,UAAUgtO,WAAa,SAAUviP,EAAOwiP,GAC5C,IAAIC,EACAC,EACCxsO,KAAK2pO,UACN3pO,KAAK2pO,QAAU,IAEnB,IAAK,IAAIxkO,EAAI,EAAGA,EAAIrb,EAAM7R,OAAQktB,IAC9BonO,EAAYvsO,KAAKysO,mBAAmB3iP,EAAM5K,SAASimB,EAAE/pB,WAAY,KAAM+pB,IAC9B,IAArCnF,KAAK2pO,QAAQrzO,QAAQi2O,IACrBvsO,KAAK2pO,QAAQlqP,KAAK8sP,GAEjBvsO,KAAK2oO,WACN3oO,KAAK0sO,cAAc5iP,EAAM5K,SAASimB,EAAE/pB,WAAY,KAAMkxP,EAAYnnO,IAEtEqnO,EAAWF,EAAW/5N,cAAc,cAAgBzoB,EAAM5K,SAASimB,EAAE/pB,WAAY,KAAKi1J,MAAMhyJ,iBAElFyL,EAAM5K,SAASimB,EAAE/pB,WAAY,KAAKuxP,mBAAoE,SAA/C7iP,EAAM5K,SAASimB,EAAE/pB,WAAY,KAAK27D,UAC3F/2C,KAAK4pO,YAAY9/O,EAAM5K,SAASimB,EAAE/pB,WAAY,KAAKi1J,MAAQ,KAAKhyJ,eAAeoB,KAAK8sP,GAExFC,EAASr7N,YAAYo7N,IAGrBD,EAAWn7N,YAAYo7N,GAG/B,GAAIvsO,KAAK87F,QAAS,CAEd97F,KAAK+mB,OAAO,gCAAiC/mB,KAAiB,SAC9DA,KAAK+sC,sBACT,CACJ,EAKA1+C,EAAQgR,UAAUutO,kBAAoB,WAClC,IAAI91M,EAAM92B,KAAKhd,QACXgd,KAAK+oO,YACLjyM,EAAIF,UAAUjB,OAAOswM,GACrBjmO,KAAK+oO,YAAa,EACE,SAAhB/oO,KAAKg0C,QAAqC,SAAhBh0C,KAAKg0C,SAC/Bld,EAAIS,MAAMyc,OAASh0C,KAAKg0C,QAE5Bld,EAAIR,aAAa,mBAAoB,gBAGrCQ,EAAIF,UAAUzB,IAAI8wM,GAClBjmO,KAAK+oO,YAAa,EAClBjyM,EAAIR,aAAa,mBAAoB,aACrC8uC,EAAAA,EAAAA,IAASplE,KAAKhd,QAAS,CAAE,QAAU8uB,EAAAA,EAAAA,IAAW9R,KAAKg0C,QAAS,OAASliC,EAAAA,EAAAA,IAAW9R,KAAK+zC,UAEzF/zC,KAAKkqO,cACLlqO,KAAKqyI,iBACT,EACAhkJ,EAAQgR,UAAUwtO,WAAa,SAAU7pP,EAAS8pP,IACzC9sO,KAAK+pI,cAAgB/pI,KAAK+sO,cAAc/pP,EAAS8pP,EAAW,MACzD9sO,KAAK2oO,WACL3oO,KAAKhd,QAAQuvB,cAAc,IAAM2zN,EAAY,KAAOa,GAAgB7lM,gBAAgB,SAEpFlhC,KAAK+oO,WACL/oO,KAAK+pI,aAAe,IAAIlhB,EAAAA,EAAQ,CAAEC,WAAY9oH,KAAK8oH,WAAYn+E,UAAW3qC,KAAK2qC,WAAamiM,EAAW,IAGvG9sO,KAAK+pI,aAAe,IAAIhhB,EAAAA,EAAQ,CAAED,WAAY9oH,KAAK8oH,WAAYn+E,UAAW3qC,KAAK2qC,WAAamiM,EAAW,IAEvG9sO,KAAK7f,WACLs2C,EAAAA,EAAAA,IAAS,CAACq2M,EAAW,IAAK9sO,KAAK7f,SAAS8T,MAAM,MAElD+L,KAAK21B,OAAO31B,KAAK+pI,aAAa/mJ,QAASgkP,IACvC5hK,EAAAA,EAAAA,IAASplE,KAAKhd,QAAS,CAAE+zD,SAAU,WAE3C,EACA1oD,EAAQgR,UAAU2tO,aAAe,SAAUljP,GACvC,IAEIytC,EAFAvnB,EAAQhQ,KACR+zC,EAAQ,EAUZ,MARA,GAAG12C,MAAMqC,MAAKo5B,EAAAA,EAAAA,IAAU,IAAMqtM,EAAUr8O,IAAQ/K,SAAQ,SAAUs6C,IAC1D/B,EAAAA,EAAAA,IAAU+B,KACV9B,EAAQj3C,OAAO4jD,iBAAiB7K,GAChC0a,GAAS/jC,EAAM+4N,WAAa1vM,EAAG4a,aAAe5a,EAAG5B,YACjDsc,GAAS9tB,WAAWjW,EAAM+4N,WAAaxxM,EAAMoa,UAAYpa,EAAMqa,aAC/DmC,GAAS9tB,WAAWjW,EAAM+4N,WAAaxxM,EAAMsa,aAAeta,EAAMma,YAE1E,IACOqC,CACX,EACA1lD,EAAQgR,UAAU4tO,gBAAkB,SAAUV,GAC1C,IAAIW,EAAYltO,KAAK+oO,WAAc,qBAAuB,qBAC1D,OAAOwD,EAAUh6N,cAAc26N,EACnC,EACA7+O,EAAQgR,UAAU0tO,cAAgB,SAAU/pP,EAASupP,GACjD,IAAIz7M,EAAAA,EAAAA,IAAM9tC,KAAY8tC,EAAAA,EAAAA,IAAMy7M,MAAej1M,EAAAA,EAAAA,IAAUt0C,GACjD,OAAO,EAEX,IAAImqP,EAAWntO,KAAK+oO,WAAa/lP,EAAQixD,aAAejxD,EAAQy0C,YAC5D21M,EAAYptO,KAAK+oO,WAAawD,EAAUt4L,aAAes4L,EAAU90M,aACjEz3B,KAAK2oO,WAAa3oO,KAAK+pI,cAAiBojG,IAAaC,KACrDA,EAAYptO,KAAKgtO,aAAahtO,KAAK+pI,aAAe/pI,KAAKitO,gBAAgBV,GAAaA,IAExF,IAAIc,EAASrqP,EAAQuvB,cAAc,IAAMs0N,GACrCyG,EAAYtqP,EAAQuvB,cAAc,IAAMu0N,GACxCyG,EAAc,EAOlB,OANIF,EACAE,EAAcvtO,KAAK+oO,WAAasE,EAAOp5L,aAAeo5L,EAAO51M,YAExD61M,IACLC,EAAcvtO,KAAK+oO,WAAwC,EAA1BuE,EAAUr5L,aAA+C,EAAxBq5L,EAAU71M,aAE5E21M,EAAYD,EAAWI,CAM/B,EAQAl/O,EAAQgR,UAAUgzI,gBAAkB,WAChCryI,KAAKgoO,QACT,EACA35O,EAAQgR,UAAUmuO,aAAe,SAAUV,GACnC9sO,KAAK2oO,YACL3oO,KAAKm1B,IAAI23M,EAAY9F,GACrBhnO,KAAKmsO,kBAEb,EACA99O,EAAQgR,UAAU6sO,mBAAqB,WACnC,IAAIp1M,EAAM92B,KAAKhd,QACX8pP,EAAah2M,EAAIvkB,cAAc,IAAM2zN,GACrCuH,EAAgBztO,KAAKipO,cAAgB,EACzC,GAAInyM,GAAOA,EAAIl/C,SAASK,OAAS,EAM7B,OALA+nB,KAAK0tO,UAAY52M,EAAIW,YACrBz3B,KAAK21B,OAAO31B,KAAKhd,QAAS,aACA,SAAtB4vC,EAAAA,GAAQyB,KAAKj8C,MAAmC,SAAhB4nB,KAAKg0C,SACrCld,EAAIS,MAAMyc,OAAS,IAEfh0C,KAAKwpO,cACT,IAAK,cACG14M,EAAAA,EAAAA,IAAM9wB,KAAK+pI,eACX/pI,KAAK6sO,WAAW/1M,EAAK,GAAGz5B,MAAMqC,KAAKo3B,EAAI0N,uBAAuB0hM,KAElE,MACJ,IAAK,QACDlmO,KAAKm1B,IAAIn1B,KAAKhd,QAAS,aACnBgd,KAAK2oO,WACL3oO,KAAK2tO,qBAEL3tO,KAAK+sO,cAAcj2M,EAAKg2M,IAAeW,IACvCztO,KAAK4tO,sBAAsB92M,GAE/B92B,KAAKwtO,aAAaV,GAClB,MACJ,IAAK,WACD9sO,KAAKm1B,IAAI23M,EAAYtF,GACjBxnO,KAAK+sO,cAAcj2M,EAAKg2M,IAAe9sO,KAAK2oO,YAC5C3oO,KAAK2tO,oBACL3tO,KAAKm1B,IAAI23M,EAAYrF,IAEE,WAAvB3wM,EAAIS,MAAMwf,WACVjgB,EAAIS,MAAMwf,SAAW,IAEC,SAAtBnkB,EAAAA,GAAQyB,KAAKj8C,MAAwC,SAArB0+C,EAAIS,MAAMyc,SAC1Cld,EAAIS,MAAMyc,OAAS,QAEvB,MACJ,IAAK,WACDh0C,KAAKm1B,IAAIn1B,KAAKhd,QAAS4kP,IACnB5nO,KAAK+sO,cAAcj2M,EAAKg2M,IAAeW,KACnCztO,KAAK2oO,WACL3oO,KAAK2tO,oBAET3tO,KAAK4tO,sBAAsB92M,IAE/B92B,KAAKwtO,aAAaV,GAGlC,EACAz+O,EAAQgR,UAAUuuO,sBAAwB,SAAU92M,GAChD92B,KAAK6tO,eAAe/2M,EAAK,GAAGz5B,MAAMqC,MAAKo5B,EAAAA,EAAAA,IAAU,IAAMotM,EAAY,KAAOC,EAAUrvM,MAKpFN,EAAAA,EAAAA,IAAWx2B,KAAKhd,QAAQuvB,cAAc,IAAMs0N,GAJ7B,CACX,SAAY,IAAK,KAAQ,SAAU,gBAAiB,OACpD,aAAc,YAGtB,EACAx4O,EAAQgR,UAAU4wH,UAAY,WAC1B,IAAIjtI,EAAUgd,KAAKhd,QACf8qP,EAAU,GAAGzwO,MAAMqC,KAAK1c,EAAQ8tB,iBAAiB,IAAMs1N,IACvD2H,EAAW/qP,EAAQuvB,cAAc,IAAMm1N,GACvCsG,EAAYhrP,EAAQuvB,cAAc,IAAMo1N,GACxCsG,EAAsC,aAAtBjuO,KAAKwpO,aAA8BuE,EAAWC,EAC5C,OAAlBC,IAC0B,aAAtBjuO,KAAKwpO,aACLyE,EAAcr3M,UAAUjB,OAAO+xM,GAEJ,aAAtB1nO,KAAKwpO,cACVyE,EAAcr3M,UAAUjB,OAAOgyM,IAGvC,IAAK,IAAIxiO,EAAI,EAAGA,GAAK2oO,EAAQ71P,OAAS,EAAGktB,IACjC2oO,EAAQ5uP,SAASimB,EAAE/pB,WAAY,KAAK04D,WAAa,IAAyD,IAAnDg6L,EAAQ5uP,SAASimB,EAAE/pB,WAAY,KAAK04D,aACjE,aAAtB9zC,KAAKwpO,aACLsE,EAAQ5uP,SAASimB,EAAE/pB,WAAY,KAAKw7C,UAAUzB,IAAIuyM,GAEvB,aAAtB1nO,KAAKwpO,cACVsE,EAAQ5uP,SAASimB,EAAE/pB,WAAY,KAAKw7C,UAAUzB,IAAIwyM,GAIlE,EACAt5O,EAAQgR,UAAUwuO,eAAiB,SAAU/2M,EAAKmnM,GAC9C,IAAIiQ,EAAWp3M,EAAIvkB,cAAc,IAAMs0N,GACnCsH,EAAWnuO,KAAK+oO,WACfmF,GACDluO,KAAKouO,gBAAgBt3M,GAEzBo3M,EAAWp3M,EAAIvkB,cAAc,IAAMs0N,GACnC,IAAIwH,EAAeF,EAAWD,EAASj6L,aAAei6L,EAASz2M,YAC3D01M,GAAagB,EAAWr3M,EAAImd,aAAend,EAAIW,aAAgB42M,EACnEruO,KAAKhd,QAAQ4zC,UAAUjB,OAAO,UAC9ByvC,EAAAA,EAAAA,IAASplE,KAAKhd,QAAS,CAAEykF,UAAW,YACpCznE,KAAKsuO,cAAcx3M,EAAKmnM,EAAUkP,GAAU,GACxCntO,KAAK2qC,WACL3qC,KAAKhd,QAAQ4zC,UAAUzB,IAAI,SAE/Bn1B,KAAKhd,QAAQu0C,MAAM+zE,eAAe,aAClCtrG,KAAK4uG,aACT,EACAvgH,EAAQgR,UAAUkvO,iBAAmB,SAAUC,EAASC,EAAU33M,EAAK43M,EAAWC,GAC9E,IAAI3rP,EAAUwrP,EAAQxrP,QAClB4rP,EAAY,GAAGvxO,MAAMqC,MAAKo5B,EAAAA,EAAAA,IAAU,IAAMquM,EAAWnkP,EAAQuvB,cAAc,IAAM2zN,KACjFngL,GAAQjtB,EAAAA,EAAAA,IAAU,IAAM6tM,EAAkB7vM,GAC1C+3M,EAAY,EACZC,EAAU,EACdF,EAAU7vP,SAAQ,SAAUs6C,EAAIvyC,GAC5Bi/D,GAAQjtB,EAAAA,EAAAA,IAAU,IAAM6tM,EAAkB7vM,GACtCuC,EAAGzC,UAAUM,SAASyvM,IAAqB5gL,EAAM9tE,OAAS,EACtDu2P,EAAQO,UAAYhpL,EAAM9tE,OAAS6O,GACnCgwC,EAAIkB,aAAaqB,EAAI0sB,EAAM7mE,SAAS4H,EAAM1L,WAAY,QACpD0zP,IAGFh4M,EAAIkB,aAAaqB,EAAIvC,EAAIl/C,SAASmuE,EAAM9tE,WACtC62P,GAGDz1M,EAAGzC,UAAUM,SAASyvM,IAItB6H,EAAQO,UAAY11M,EAAGzC,UAAUM,SAAS0vM,IAAoB9vM,EAAIl/C,SAASK,OAAS,GAAsB,IAAjB8tE,EAAM9tE,QAHpG6+C,EAAIkB,aAAaqB,EAAIvC,EAAIykF,cACvBuzH,GAMGz1M,EAAGzC,UAAUM,SAAS0vM,GAC3B6H,EAAShvP,KAAK45C,GAETm1M,EAAQO,UACbj4M,EAAIkB,aAAaqB,EAAIvC,EAAIgtB,WAAW+qL,EAAYC,MAC9CD,GAGF/3M,EAAI3lB,YAAYkoB,GAEhBA,EAAGzC,UAAUM,SAASkvM,IACtBhhK,EAAAA,EAAAA,IAAS/rC,EAAI,CAAEygB,QAAS,GAAI9F,OAAQ26L,EAAY,QAGhDvpK,EAAAA,EAAAA,IAAS/rC,EAAI,CAAEygB,QAAS,GAAI9F,OAAQ06L,EAAY,MAExD,IACAD,EAAS1vP,SAAQ,SAAUs6C,GACvBvC,EAAI3lB,YAAYkoB,EACpB,IAEA,IADA,IAAIswM,GAAU7wM,EAAAA,EAAAA,IAAU,IAAMqtM,EAAUnjP,EAAQuvB,cAAc,IAAM2zN,IAC3D/gO,EAAIwkO,EAAQ1xP,OAAS,EAAGktB,GAAK,EAAGA,IAAK,CAC1C,IAAI6pO,EAAcrF,EAAQzqP,SAASimB,EAAE/pB,WAAY,KACjD,IAAI4zP,EAAYp4M,UAAUM,SAASkvM,IAAwC,aAAtBpmO,KAAKwpO,aAItD,OAHApkK,EAAAA,EAAAA,IAAS4pK,EAAa,CAAEl1L,QAAS,QAKzC,CACJ,EACAzrD,EAAQgR,UAAUuvG,YAAc,WAC5B,IACI+/H,EACAM,EAFAjsP,EAAUgd,KAAKhd,QAGO,aAAtBgd,KAAKwpO,eACLyF,EAAUjsP,EAAQuvB,cAAc,IAAM6zN,GACtCuI,EAC8B,SAAzB3rP,EAAQu0C,MAAMyc,QAA8C,KAAzBhxD,EAAQu0C,MAAMyc,OAAiB,KAAQi7L,GAAWA,EAAQh7L,cAEtG,IAEInd,EAFAg3M,EAAU9qP,EAAQuvB,cAAc,IAAM4zN,EAAW,SAAWC,EAAgB,UAAYe,EAAY,KACpGuH,EAAsC,SAAzB1rP,EAAQu0C,MAAMyc,QAA8C,KAAzBhxD,EAAQu0C,MAAMyc,OAAiB,KAAQ85L,GAAWA,EAAQ75L,aAG9G,IAAIvb,EAAAA,EAAAA,IAAO,IAAM11C,EAAQ4B,GAAK,UAAYsiP,EAAgBlkP,GACtD8zC,GAAM4B,EAAAA,EAAAA,IAAO,IAAM11C,EAAQ4B,GAAK,UAAYsiP,EAAgBlkP,OAE3D,CACD,IAAIksP,EAAYlvO,KAAK4Q,cAAc,MAAO,CACtChsB,GAAI5B,EAAQ4B,GAAK,SAAU3J,UAAWisP,EAAiB,IAAMW,IAE7D/5H,EAAW9tG,KAAK4Q,cAAc,MAAO,CAAEhsB,GAAI5B,EAAQ4B,GAAK,SAAU3J,UAAWisP,IACjFpwM,EAA4B,aAAtB92B,KAAKwpO,aAA8B0F,EAAYphI,CACzD,CACA9tG,KAAKuuO,iBAAiBvuO,KAXP,GAWuB82B,EAAK43M,EAAWC,GACtD3uO,KAAKmvO,UAAUnsP,EAAS8zC,EAC5B,EACAzoC,EAAQgR,UAAU0sO,kBAAoB,WAClC,MAA8B,aAAtB/rO,KAAKwpO,cAAwG,eAAzElpP,OAAO4jD,iBAAiBlkC,KAAKhd,SAASmhD,iBAAiB,cAC/FnkC,KAAKhd,QAAQ6zD,aAAe72C,KAAKhd,QAAQixD,YACjD,EACA5lD,EAAQgR,UAAU8vO,UAAY,SAAUnsP,EAAS8zC,GAC7C,GAAK92B,KAAKyoO,OAsCL,CACD,IAAI36H,EAAW9tG,KAAKyoO,OAAOzlP,SAC3BoiF,EAAAA,EAAAA,IAAS0oC,EAAU,CAAEr+B,UAAW,GAAI31B,QAAS,WAC7CsrB,EAAAA,EAAAA,IAAS0oC,EAAU,CAAEr+B,UAAWq+B,EAAS75D,aAAe,KAAM6F,QAAS,IAC3E,KA1CkB,CACd92D,EAAQmuB,YAAY2lB,GAChB92B,KAAK7f,WACLs2C,EAAAA,EAAAA,IAAS,CAACK,GAAM92B,KAAK7f,SAAS8T,MAAM,OAExCmxE,EAAAA,EAAAA,IAASplE,KAAKhd,QAAS,CAAE+zD,SAAU,KACnC,IAAIq4L,EAAY9uP,OAAO4jD,iBAAiBlkC,KAAKhd,SACzCulF,EAAQ,IAAI5B,EAAAA,GAAM,KAAM,CACxBC,SAAU5mE,KAAKhd,QACfsgD,QAAUtjC,KAAK+oO,WAAc,EAAI/oO,KAAK+rO,oBACtCphM,UAAW3qC,KAAK2qC,UAChBpqD,KAAMyf,KAAKmoO,UAAUnpO,KAAKgB,MAC1BwR,MAAOxR,KAAKooO,WAAWppO,KAAKgB,MAC5BgnE,UAAW,CAAEF,EAAG9mE,KAAK8oO,gBAAkB,OAAS,QAChD32L,SAAUnyC,KAAK2qC,UAAY,CAAEk8B,EAAG,OAAQC,EAAG,OAAU,CAAED,EAAG,QAASC,EAAG,SAa1E,GAX0B,aAAtB9mE,KAAKwpO,eACLjhK,EAAMx0B,MAAQ9tB,WAAWmpN,EAAUr7L,OAAqD,EAA1C9tB,WAAWmpN,EAAUC,kBACnE9mK,EAAMplC,QAAU,GAEpBolC,EAAMx9B,SAASjU,GACf9B,EAAAA,GAAaG,IAAIvyB,SAAU,SAAU5C,KAAKypO,SAASzqO,KAAKgB,OACxDg1B,EAAAA,GAAaG,IAAIvyB,SAAU,SAAU5C,KAAKypO,SAASzqO,KAAKgB,OACxDuoE,EAAMvlF,QAAQu0C,MAAMk4C,UAAYlH,EAAMvlF,QAAQixD,aAAe,KACzDj0C,KAAK+oO,aACLxgK,EAAMvlF,QAAQu0C,MAAMC,WAAa,UAEjCx3B,KAAKgpO,eAAgB,CACrB,IAAI4C,EAAW5rO,KAAKhd,QAAQuvB,cAAc,IAAMs0N,GAChD+E,EAASh1M,UAAUzB,IAAIiyM,IACvBxwM,EAAAA,EAAAA,IAAUg1M,EAAS3zM,kBAAmB,CAACouM,GAAgB,CAACC,IACxDtmO,KAAKhd,QAAQuvB,cAAc,IAAMs1N,GAAqBjxM,UAAUzB,IAAIoxM,EACxE,MAEIh+J,EAAMtD,OAEVjlE,KAAKyoO,OAASlgK,CAClB,CAMJ,EACAl6E,EAAQgR,UAAUiwO,iBAAmB,SAAUzkP,GACjB,aAAtBmV,KAAKwpO,eACD3+O,EACAmV,KAAKm1B,IAAIn1B,KAAKhd,QAAS8kP,GAGvB9nO,KAAK21B,OAAO31B,KAAKhd,QAAS8kP,GAGtC,EAEAz5O,EAAQgR,UAAU8oO,UAAY,SAAU1sP,GACpC,IAAIgtP,EAASzoO,KAAKyoO,OACbzoO,KAAK+oO,aACNN,EAAOnlM,QAAUtjC,KAAK+rO,oBACtBtD,EAAO1tM,YAEX,IAAI+yE,EAAW9tG,KAAKyoO,OAAOzlP,QACvBusP,EAAUvvO,KAAKyoO,OAAOzlP,QAAQi2D,cAC9B2yL,EAAW2D,EAAQh9N,cAAc,IAAMs0N,GAC3C+E,EAASt1M,aAAa,gBAAiB,SACvC8uC,EAAAA,EAAAA,IAASqjK,EAAOzlP,QAAS,CAAEgxD,OAAQ,OAAQy7B,UAAW,KACtDg5J,EAAOzlP,QAAQu0C,MAAMk4C,UAAYg5J,EAAOzlP,QAAQixD,aAAe,KACrC,aAAtBj0C,KAAKwpO,eACLf,EAAOzlP,QAAQu0C,MAAM23F,UAAY,IAErC,IAAIsgH,EAAc1hI,EAASj6D,UAAYi6D,EAAS75D,cAAey+E,EAAAA,EAAAA,GAAkB68G,GAAS3rM,IACtF6rM,EAAU7D,EAAS3zM,kBACvB2zM,EAASh1M,UAAUzB,IAAIiyM,IACvBxwM,EAAAA,EAAAA,IAAU64M,EAAS,CAACpJ,GAAgB,CAACC,IACrCtmO,KAAKsvO,kBAAiB,GACtB,IAAI7L,GAAY3yM,EAAAA,EAAAA,IAAMxwC,OAAOk5I,SAAW,EAAIl5I,OAAOk5I,QACnD,IAAKx5H,KAAK+oO,YAAgBzoP,OAAO8zD,YAAcqvL,EAAa+L,GAAiBxvO,KAAKhd,QAAQ6wD,UAAYi6D,EAAS75D,aAAe,CAC1H,IAAIy7L,EAAkB5hI,EAAS75D,cAAiBu7L,EAAclvP,OAAO8zD,YAAcqvL,EAAa,GAChGgF,EAAOz0L,OAAS07L,EAAiB,KACjC,IAAK,IAAIvqO,EAAI,EAAGA,GAAK2oG,EAASvP,kBAAmBp5F,IAAK,CAClD,IAAI2xB,EAAMg3E,EAASl2H,SAASsH,SAASimB,EAAE/pB,WAAY,KACnD,GAAI07C,EAAI+c,UAAY/c,EAAImd,aAAey7L,EAAgB,CACnDA,EAAiB54M,EAAI+c,UACrB,KACJ,CACJ,EACAuxB,EAAAA,EAAAA,IAASqjK,EAAOzlP,QAAS,CAAEysF,UAAWigK,EAAiB,MAC3D,MACK,GAAI1vO,KAAK+oO,WAAY,CACtB,IAAI4G,EAAY3vO,KAAKhd,QAAQkgD,yBAC7BkiC,EAAAA,EAAAA,IAASqjK,EAAOzlP,QAAS,CAAEysF,UAAYkgK,EAAU/rM,IAAM5jC,KAAKhd,QAAQixD,aAAgB,KAAMpQ,OAAQ,EAAGrM,WAAY,IACrH,CACA,GAAIixM,EAAQ,CACR,IAAI14H,EAAcjC,EAAS5qE,wBACvB6sE,EAAYpsE,MAAQ/gC,SAAS6gC,gBAAgBgV,aAAes3D,EAAYh8D,MAAQw7L,EAAQrsM,wBAAwB6Q,QAChH00L,EAAOzhK,UAAY,CAAEF,EAAG,QACxB2hK,EAAO1tM,YAEX0tM,EAAOjgK,iBACX,CACJ,EAEAn6E,EAAQgR,UAAU+oO,WAAa,SAAU3sP,GACrC,IACImwP,EADU5rO,KAAKhd,QACIuvB,cAAc,IAAMs0N,GAC3C+E,EAASt1M,aAAa,gBAAiB,SACvC,IAAIm5M,EAAU7D,EAAS3zM,kBACvB2zM,EAASh1M,UAAUjB,OAAOyxM,IAC1BxwM,EAAAA,EAAAA,IAAU64M,EAAS,CAACnJ,GAAgB,CAACD,IACrCrmO,KAAKsvO,kBAAiB,EAC1B,EACAjhP,EAAQgR,UAAUivO,cAAgB,SAAUx3M,EAAK84M,EAAOzC,EAAU0C,GAkB9D,IAjBA,IAGIC,EAHAC,EAAc/vO,KAAKipO,cAAgB,EAEnC+G,EAAS7C,EAGT8C,EAAW,EACX9sI,EAAY,EACZ+sI,EAAe,EACfC,EAAa,SAAUr5M,EAAKn5B,GAC5B,IAAIyyO,GAAO,EAMX,OALAzyO,EAAI5e,SAAQ,SAAU84K,GACd/gI,EAAIF,UAAUM,SAAS2gI,KACvBu4E,GAAO,EAEf,IACOA,CACX,EACSjrO,EAhBCyqO,EAAM33P,OAgBG,EAAGktB,GAAK,EAAGA,IAAK,CAC/B,IAAIkrO,OAAO,EACPC,EAAahwP,OAAO4jD,iBAAiB0rM,EAAM1wP,SAASimB,EAAE/pB,WAAY,MAClE4kB,KAAK+oO,YACLsH,EAAOpqN,WAAYqqN,EAAY3+L,WAC/B0+L,GAAQpqN,WAAYqqN,EAAYz+L,gBAGhCw+L,EAAOpqN,WAAYqqN,EAAY1+L,aAC/By+L,GAAQpqN,WAAYqqN,EAAY5+L,aAEpC,IAAI6+L,EAAcX,EAAM1wP,SAASimB,EAAE/pB,WAAY,OAAS4kB,KAAK2pO,QAAQ,GACjE4G,IACAvwO,KAAKwwO,YAAcH,GAEvBP,EAAY9vO,KAAK+oO,WAAa6G,EAAM1wP,SAASimB,EAAE/pB,WAAY,KAAK64D,aAAe27L,EAAM1wP,SAASimB,EAAE/pB,WAAY,KAAKq8C,YACjH,IAAIg5M,EAAWF,EAAeT,EAAYO,EAAQP,EAmBlD,GAlBIK,EAAWP,EAAM1wP,SAASimB,EAAE/pB,WAAY,KAAM,CAACksP,KAAgByI,IAC/DH,EAAM1wP,SAASimB,EAAE/pB,WAAY,KAAKw7C,UAAUzB,IAAIgyM,GAC5CnnO,KAAK+oO,YACL3jK,EAAAA,EAAAA,IAASwqK,EAAM1wP,SAASimB,EAAE/pB,WAAY,KAAM,CAAE0+D,QAAS,OAAQo1E,UAAWuhH,EAAW,QAGrFrrK,EAAAA,EAAAA,IAASwqK,EAAM1wP,SAASimB,EAAE/pB,WAAY,KAAM,CAAE0+D,QAAS,OAAQmrJ,SAAUwrC,EAAW,OAExFP,KAEAlwO,KAAK+oO,WAEA6G,EAAM1wP,SAASimB,EAAE/pB,WAAY,KAAKy4D,UAAY+7L,EAAM1wP,SAASimB,EAAE/pB,WAAY,KAAK64D,aAAeo8L,EAAQlD,EAIvGyC,EAAM1wP,SAASimB,EAAE/pB,WAAY,KAAK04D,WAAa87L,EAAM1wP,SAASimB,EAAE/pB,WAAY,KAAKq8C,YAAc44M,EAAQlD,EAE/F,CACb,GAAIyC,EAAM1wP,SAASimB,EAAE/pB,WAAY,KAAKw7C,UAAUM,SAASkvM,IACrD,GAA0B,aAAtBpmO,KAAKwpO,aAED2G,EADAO,EAASd,EAAM1wP,SAASimB,EAAE/pB,WAAY,KACnB,CAACgrP,EAAeiB,MACnCuI,EAAM1wP,SAASimB,EAAE/pB,WAAY,KAAKw7C,UAAUzB,IAAIgyM,GAChD+I,KAEJ/sI,SAEC,GAA0B,UAAtBnjG,KAAKwpO,aAA0B,CAEhC,IAAIkH,EADR,GAAIT,EAAW,GAAK9sI,IAAc+sI,EAE1BC,EADAO,EAASd,EAAMzqO,EAAIg+F,GAAa8sI,EAAW,IACxB,CAAC7J,EAAeiB,MACnCjiK,EAAAA,EAAAA,IAASsrK,EAAQ,CAAE52L,QAAS,SAGpCm2L,IACA9sI,EAAY,EACZ+sI,EAAe,CACnB,OAGA/sI,IAEAysI,EAAM1wP,SAASimB,EAAE/pB,WAAY,KAAKw7C,UAAUM,SAASyvM,IAAqBkJ,GAIpEM,EAAWP,EAAM1wP,SAASimB,EAAE/pB,WAAY,KAAM,CAACgrP,EAAeiB,IAHpE8F,IAAcntO,KAAK+oO,WAAa6G,EAAM1wP,SAASimB,EAAE/pB,WAAY,KAAK64D,aAC9D27L,EAAM1wP,SAASimB,EAAE/pB,WAAY,KAAKq8C,aAAgB44M,GAGtDT,EAAM1wP,SAASimB,EAAE/pB,WAAY,KAAKw7C,UAAUzB,IAAIgyM,GAC5CnnO,KAAK+oO,YACL3jK,EAAAA,EAAAA,IAASwqK,EAAM1wP,SAASimB,EAAE/pB,WAAY,KAAM,CAAE0+D,QAAS,OAAQo1E,UAAWuhH,EAAW,QAGrFrrK,EAAAA,EAAAA,IAASwqK,EAAM1wP,SAASimB,EAAE/pB,WAAY,KAAM,CAAE0+D,QAAS,OAAQmrJ,SAAUwrC,EAAW,OAExFP,IAMR,CACJ,CACA,GAAIL,EAAK,CACL,IAAIc,GAAW73M,EAAAA,EAAAA,IAAU,IAAMqtM,EAAW,SAAWgB,EAAY,IAAKnnO,KAAKhd,SAC3Egd,KAAKsuO,cAAcx3M,EAAK65M,EAAUX,GAAQ,EAC9C,CACJ,EACA3hP,EAAQgR,UAAU+uO,gBAAkB,SAAUprP,GAC1C,IAAI4B,EAAK5B,EAAQ4B,GAAGjE,OAAO,QACvB1F,EAAY,KAAO+H,EAAQ4B,GAAGjE,OAAO,kBACzC1F,EAAkC,aAAtB+kB,KAAKwpO,aAA8BvuP,oBAAoCA,EACnF,IAAI4mP,EAAM7hO,KAAK4Q,cAAc,MAAO,CAAEhsB,GAAIA,EAAI3J,UAAWA,IAC/B,SAAtB23C,EAAAA,GAAQyB,KAAKj8C,MAAyC,SAAtBw6C,EAAAA,GAAQyB,KAAKj8C,MAC7CypP,EAAIjrM,UAAUzB,IAAI,cAEtB,IAAI+sM,EAAUliO,KAAK4Q,cAAc,MAAO,CAAE31B,UAAWqrP,EAAgB,aACrEzE,EAAI1wN,YAAY+wN,GAChBL,EAAIvrM,aAAa,WAAY,KAC7BurM,EAAIvrM,aAAa,OAAQ,UACzBtzC,EAAQmuB,YAAY0wN,EACxB,EACAxzO,EAAQgR,UAAUuxO,WAAa,SAAUhB,EAAOj9I,EAAMk+I,EAAQx3M,EAAIy3M,EAAKC,EAAOC,EAAKC,EAAI7B,GACnF,IAAI8B,EAAcD,EACdjH,EAAShqO,KAAKyoO,OAAOzlP,QACrBo5F,EAAQ,IAAM+pJ,EAAW,SAAWC,EAAgB,UAAYO,EAAmB,IACnFwK,GAAYr4M,EAAAA,EAAAA,IAAU,IAAMquM,EAAY,SAAWR,EAAmB,IAAKqD,GAAQ/xP,OACnFk4P,EAAa,SAAUr5M,EAAKn5B,GAC5B,OAAOm5B,EAAIF,UAAUM,SAASv5B,EAClC,EACA,GAAuC,KAAnCm7B,EAAAA,EAAAA,IAAUsjD,EAAOwzJ,GAAO33P,OAAc,CACtC,IAAIm5P,EAASxB,EAAMh4P,SAAS+6G,GAAQA,EAAOk+I,GAAU,GACjDQ,IAAgBvgN,EAAAA,EAAAA,IAAMsgN,IAAWjB,EAAWiB,EAAQ/J,GACxD,KAAMv2M,EAAAA,EAAAA,IAAMsgN,IAAWjB,EAAWiB,EAAQhL,MAAmB9uM,EAAAA,EAAAA,IAAU85M,IAAYC,EAAa,CAC5FD,EAAO75M,MAAMuiB,QAAU,QACvB,IAAIw3L,EAAcF,EAAO35M,YAAyE,EAA1DxR,WAAW3lC,OAAO4jD,iBAAiBktM,GAAQx/L,aAC/E2/L,EAAUH,EAAO5sG,uBAChBusG,EAAQO,EAAeN,GAAOF,GAC/BlB,EAAM53M,aAAaqB,EAAIu2M,EAAMh4P,SAAU+6G,EAAOu+I,GAAgBv+I,EAAOk+I,MAChE//M,EAAAA,EAAAA,IAAMygN,KACPA,EAAQh6M,MAAMuiB,QAAU,OAI5BsrB,EAAAA,EAAAA,IAAS/rC,EAAI+1M,GACTmC,EAAQ36M,UAAUM,SAASkvM,KAC3BmL,EAAQh6M,MAAMuiB,QAAU,SAGhCs3L,EAAO75M,MAAMuiB,QAAU,EAC3B,MAEI81L,EAAM53M,aAAaqB,EAAIu2M,EAAMh4P,SAAU+6G,EAAOu+I,GAAgBv+I,EAAOk+I,IAE7E,MAEIjB,EAAM53M,aAAaqB,EAAIu2M,EAAMh4P,SAAU+6G,EAAOu+I,EAAeC,GAErE,EACA9iP,EAAQgR,UAAU+qO,aAAe,SAAUt8H,EAAUpmF,GACjD,IAAI1X,EAAQhQ,KACR82B,EAAM92B,KAAKhd,QACXwuP,EAAQxxO,KAAK+oO,WACb9K,EAAWnnM,EAAIvkB,cAAc,IAAM2zN,GACnCmH,EAASv2M,EAAIvkB,cAAc,IAAMs0N,GACrC,KAAI/1M,EAAAA,EAAAA,IAAMu8M,GAAV,CAKA,IAAIoE,EAFJxT,EAAS/8L,gBAAgB,SACzB4sE,EAASv2E,MAAMuiB,QAAU,QAGrB23L,EADAD,EACY16M,EAAImd,cAAgBo5L,EAAOp5L,aAAegqL,EAAShqL,cAGnDnd,EAAIW,aAAe41M,EAAO51M,YAAcwmM,EAASxmM,aAEjE,IAAIi6M,EAAgB,EACpB,GAAGr0O,MAAMqC,KAAKouG,EAASl2H,UAAUmH,SAAQ,SAAUs6C,GAC/Cq4M,GAAiB1hO,EAAM0hO,cAAcr4M,IACrC+rC,EAAAA,EAAAA,IAAS/rC,EAAI,CAAE,SAAY,IAC/B,IACKo4M,GAAaD,EAAQnE,EAAOp5L,aAAeo5L,EAAO51M,aAAiBi6M,GAAyC,IAAvB1xO,KAAKipO,gBAC3FvhN,GAAU,GAEd1nB,KAAK2xO,gBAAgBF,EAAW3jI,EAAUpmF,GAC1ComF,EAASv2E,MAAMuiB,QAAU,GACQ,IAA7Bg0D,EAASl2H,SAASK,QAAgBo1P,GAAUrtO,KAAKyoO,UACjDlwM,EAAAA,EAAAA,IAAO80M,GACPA,EAAS,KACTrtO,KAAKyoO,OAAO/gN,WACZ6Q,EAAAA,EAAAA,IAAOv4B,KAAKyoO,OAAOzlP,SACnBgd,KAAKyoO,OAAS,KAzBlB,CA2BJ,EACAp6O,EAAQgR,UAAUuyO,eAAiB,SAAU9qP,EAAOm3O,GAChD,IAAI4T,EAAY,GAAGx0O,MAAMqC,KAAKu+N,EAASntN,iBAAiB,IAAMu2N,IAC1DyK,EAAY,GACZ5gL,EAAQ,EACZ,OAAI2gL,EAAU55P,OAAS,GACnB45P,EAAU9yP,SAAQ,SAAU+3C,GACxBg7M,EAAUryP,KAAK,GAAG4d,MAAMqC,KAAKu+N,EAASrmP,UAAU0e,QAAQwgC,GAC5D,IAKJg7M,EAAU/yP,SAAQ,SAAU4e,GACpBA,GAAO7W,GACPoqE,GAER,IACOA,GAPI,CAQf,EACA7iE,EAAQgR,UAAU+sO,kBAAoB,SAAUzoL,EAAMqmL,GAClDA,EAAOzyM,MAAMuiB,QAAU,QACvB,IAAIi3L,EAAQ/wO,KAAK0xO,cAAc1H,EAAO/xM,mBACtC+xM,EAAO/xM,kBAAkBV,MAAM+zE,eAAe,YAC9C,IAAIymI,EAAYpuL,EAAKlsB,YAAcksB,EAAKpxC,cAAc,IAAMs0N,GAAapvM,YACrEu6M,EAAeruL,EAAKpxC,cAAc,IAAM2zN,GAAWzuM,YAEvD,OADAuyM,EAAOzyM,MAAM+zE,eAAe,WACxBymI,EAAahB,EAAQiB,CAI7B,EACA3jP,EAAQgR,UAAUqyO,cAAgB,SAAUr4M,GACxCA,EAAG9B,MAAM4a,SAAW,WACpB,IAAI8/L,EAAUjyO,KAAK+oO,WAAa1vM,EAAG4a,aAAe5a,EAAG5B,YACjDy6M,EAAU74M,EAAG9mB,cAAc,oBAC/B,GAAI8mB,EAAGzC,UAAUM,SAAS,iBAAmBmC,EAAGzC,UAAUM,SAASwvM,GAAe,CAC9E,IAAI1rB,EAAM3hL,EAAGzhD,SAAS,KACjBk5C,EAAAA,EAAAA,IAAMohN,IAAY74M,EAAGzC,UAAUM,SAASwvM,GACzCwL,EAAQ36M,MAAMuiB,QAAU,SAElBhpB,EAAAA,EAAAA,IAAMohN,IAAY74M,EAAGzC,UAAUM,SAASuvM,KAC9CyL,EAAQ36M,MAAMuiB,QAAU,SAE5BkhK,EAAIzjL,MAAM0tK,SAAW,KACrBgtC,EAAUhsN,WAAYjmB,KAAK+oO,WAAiC1vM,EAAG9B,MAAM23F,UAA7B71F,EAAG9B,MAAM0tK,UACjD+V,EAAIzjL,MAAM0tK,SAAW,GACrB+V,EAAIzjL,MAAM23F,UAAY,IACjBp+F,EAAAA,EAAAA,IAAMohN,KACPA,EAAQ36M,MAAMuiB,QAAU,GAEhC,CACA,OAAOm4L,CACX,EACA5jP,EAAQgR,UAAUsyO,gBAAkB,SAAU59L,EAAO+5D,EAAUpmF,GA8D3D,IA7DA,IAEIypN,EACArqP,EAHAipP,EAAc/vO,KAAKipO,cAAgB,EACnCkJ,EAAYnyO,KAAK2pO,QAGjB1L,EAAWj+N,KAAKhd,QAAQuvB,cAAc,IAAM2zN,GAC5CgL,EAAc,EACdniO,EAAU,SAAUsqB,GACpB,GAAIA,EAAGzC,UAAUM,SAASowM,IAAeyI,IAAgBroN,EACrD,MAAO,WAEX,IAAIuqN,EAAUpkM,EAAO6jM,cAAcr4M,GAKnC,GAJIA,IAAOwU,EAAO87L,QAAQ,KACtBsI,GAAWpkM,EAAO2iM,aAEtBn3M,EAAG9B,MAAM4a,SAAW,KAChB8/L,EAAUl+L,GAASrsB,GA0CnB,MAAO,QAzCP,IAAI0qN,EAAe,CAAEntC,SAAU5rK,EAAG9B,MAAM0tK,SAAUjxJ,OAAQ3a,EAAG9B,MAAMyc,OAAQk7E,UAAW71F,EAAG9B,MAAM23F,WAM/F,IALA9pD,EAAAA,EAAAA,IAAS/rC,EAAI,CAAE4rK,SAAU,GAAIjxJ,OAAQ,GAAIk7E,UAAW,KAC/C71F,EAAGzC,UAAUM,SAAS0vM,IACvBvtM,EAAGzC,UAAUjB,OAAOwxM,GAExBrgP,EAAQ+mD,EAAO87L,QAAQrzO,QAAQ+iC,GAC3BwU,EAAO86L,UAAW,CAClB,IAAIxlN,EAAM0qB,EAAO/jD,MAAM5K,SAAS4H,EAAM1L,WAAY,KAAKi1J,MACvDvpJ,EAAQ+mD,EAAO+7L,YAAYzmN,EAAM,KAAK9kC,eAAeiY,QAAQ+iC,GAC7D84M,EAAYtkM,EAAO+7L,YAAYzmN,EAAM,KAAK9kC,eAC1C4/O,EAAWpwL,EAAO7qD,QAAQuvB,cAAc,IAAM2zN,EAAN,eAAwC/iN,EAAI9kC,cACxF,CACA,IAAIg0P,EAAiB,EACO,aAAxBxkM,EAAO27L,cACP2I,EAAU90O,MAAM,EAAGvW,GAAO/H,SAAQ,SAAUs6C,IACpCA,EAAGzC,UAAUM,SAASyvM,IAAqBttM,EAAGzC,UAAUM,SAASkvM,MAC7D/sM,EAAGzC,UAAUM,SAASkvM,KACtB/sM,EAAG9B,MAAMuiB,QAAU,GACnB/F,GAAS1a,EAAG5B,aAEhB46M,IAER,IAEJnB,EAAcrjM,EAAO+jM,eAAe9qP,EAAOm3O,GACvC5kM,EAAGzC,UAAUM,SAASyvM,IACtB94L,EAAO+iM,WAAW3S,EAAUn3O,EAAOurP,EAAgBh5M,EAAI3R,EAASuqN,EAASl+L,EAAOm9L,EAAakB,GAC7Fr+L,GAAS1a,EAAG5B,aAEG,IAAV3wC,GACLm3O,EAASjmM,aAAaqB,EAAI4kM,EAAS1iH,YACnCxnE,GAAS1a,EAAG5B,cAGZ05M,GAAYr4M,EAAAA,EAAAA,IAAU,IAAM6tM,EAAkB94L,EAAO46L,OAAOzlP,SAAS/K,OACrEgmP,EAASjmM,aAAaqB,EAAI4kM,EAASrmP,SAAUkP,EAAQoqP,EAAeC,IACpEp9L,GAAS1a,EAAG5B,aAEhB4B,EAAG9B,MAAMyc,OAAS,EAK1B,EACInG,EAAS7tC,KACJuO,EAAK,EAAGvoB,EAAK,GAAGqX,MAAMqC,KAAKouG,EAASl2H,UAAW22B,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAG1E,GAAgB,UADFQ,EADL/oB,EAAGuoB,IAGR,KACR,CACoBvO,KAAK+sO,cAAc/sO,KAAKhd,QAASgd,KAAKhd,QAAQwhD,uBAAuB0hM,GAAW,MAC9Ex+M,GAClB1nB,KAAKksO,oBAEb,EACA79O,EAAQgR,UAAUsuO,kBAAoB,WAClC,IAAIviP,EAAO4U,KAAKhd,QAAQuvB,cAAc,IAAM2zN,GAC5C,KAAIp1M,EAAAA,EAAAA,IAAM1lC,IAAUA,EAAKwrC,UAAUM,SAAS8vM,GAA5C,CAGAhnO,KAAK21B,OAAOvqC,EAAM47O,GAClB,IAAIuF,EAAY,GAAGlvO,MAAMqC,KAAKtU,EAAK04D,YACnCyoL,EAAU,GAAGrrM,gBAAgB,SAC7BqrM,EAAU,GAAGrrM,gBAAgB,QAJ7B,CAKJ,EACA7yC,EAAQgR,UAAUizO,mBAAqB,WACnC,IAAIlnP,EAAO4U,KAAKhd,QAAQuvB,cAAc,IAAM2zN,GAC5ClmO,KAAKm1B,IAAI/pC,EAAM47O,GACfhnO,KAAKmsO,iBACT,EACA99O,EAAQgR,UAAU8sO,gBAAkB,WAChC,IACI16L,EADArmD,EAAO4U,KAAKhd,QAAQuvB,cAAc,IAAM2zN,GAE5C,KAAIp1M,EAAAA,EAAAA,IAAM1lC,IAAUA,EAAKwrC,UAAUM,SAAS8vM,GAA5C,CAGA,IACIuF,EADAX,EAAW5rO,KAAKhd,QAAQuvB,cAAc,IAAMs0N,GAEhD,GAAI7mO,KAAK+pI,aAAc,CACnB,IAAImjG,EAAYltO,KAAK+oO,WAn6CZ,oBADA,oBAq6CTwD,EAAY,GAAGlvO,MAAMqC,KAAKtU,EAAKmnB,cAAc,IAAM26N,GAAUt1P,SACjE,MAEI20P,EAAY,GAAGlvO,MAAMqC,KAAKtU,EAAK04D,YAG/BrS,EADAzxC,KAAK+oO,WACIwD,EAAU,GAAGt4L,aAAes4L,EAAU,GAAGt4L,aAGzCs4L,EAAU,GAAG90M,YAAc80M,EAAU,GAAG90M,YAErD,IAAI86M,EAAUvyO,KAAK+oO,WAAa/oO,KAAKhd,QAAQixD,aAAej0C,KAAKhd,QAAQy0C,YACzE,GAAIm0M,EAAU,CACV2G,GAAYvyO,KAAK+oO,WAAa6C,EAAS33L,aAAe23L,EAASn0M,YAC/D,IAAI+6M,GAAUxyO,KAAK+oO,WAAa6C,EAAS33L,aAAe23L,EAASn0M,aAAe,KAChF80M,EAAU,GAAGrrM,gBAAgB,SACzBlhC,KAAK+oO,WACD/oO,KAAK2qC,UACL4hM,EAAU,GAAGh1M,MAAMqM,IAAM4uM,EAGzBjG,EAAU,GAAGh1M,MAAMsM,OAAS2uM,EAI5BxyO,KAAK2qC,UACL4hM,EAAU,GAAGh1M,MAAMmM,KAAO8uM,EAG1BjG,EAAU,GAAGh1M,MAAMoM,MAAQ6uM,CAGvC,CACA,KAAID,GAAW9gM,GAAf,CAGA,IAAIl0D,GAAWg1P,EAAU9gM,GAAazxC,KAAK+oO,WAAwCwD,EAAU,GAAGt4L,aAAxCs4L,EAAU,GAAG90M,cAA4C,EACjH80M,EAAU,GAAGrrM,gBAAgB,SAC7B,IAAImvM,GAAUrwO,KAAK+oO,WAAwCwD,EAAU,GAAGt4L,aAAxCs4L,EAAU,GAAG90M,aAA2Cl6C,EAAS,KAC7FyiB,KAAK+oO,WACD/oO,KAAK2qC,UACL4hM,EAAU,GAAGh1M,MAAMsa,aAAew+L,EAGlC9D,EAAU,GAAGh1M,MAAMoa,UAAY0+L,EAI/BrwO,KAAK2qC,UACL4hM,EAAU,GAAGh1M,MAAMqa,YAAcy+L,EAGjC9D,EAAU,GAAGh1M,MAAMma,WAAa2+L,CAjBxC,CAxCA,CA4DJ,EACAhiP,EAAQgR,UAAUqtO,cAAgB,SAAUthP,EAAMqnP,EAAStvN,GACvD,IAAInT,EAAQhQ,KACZ,IAAI5U,EAAKuhP,mBAAuC,SAAlBvhP,EAAK2rD,SAAnC,CAGA,IAAI27L,EAAW,GAIf,GAHAA,EAASjzP,KAAKugB,KAAK4Q,cAAc,MAAO,CAAE31B,UAt+C/B,oBAu+CXy3P,EAASjzP,KAAKugB,KAAK4Q,cAAc,MAAO,CAAE31B,UAAW8rP,KACrD2L,EAASjzP,KAAKugB,KAAK4Q,cAAc,MAAO,CAAE31B,UAz+C9B,qBA0+CA,IAARkoC,GAA4B,SAAf/3B,EAAKilJ,MAClBqiG,EAAS3zP,SAAQ,SAAU+3C,GACvB27M,EAAQthO,YAAY2lB,EACxB,IACA92B,KAAK2oO,WAAY,EACjB3oO,KAAKm1B,IAAIs9M,EAASzL,QAEjB,GAAmB,SAAf57O,EAAKilJ,MAAkB,CAC5B,IAAIsiG,EAAWF,EAAQ3uL,WACnB8uL,EAAcF,EAAS,GAC3B,GAAGr1O,MAAMqC,KAAKizO,GAAU5zP,SAAQ,SAAUs6C,GACtCrpB,EAAM45N,WAAWC,MAAMpqP,KAAK45C,GAC5Bu5M,EAAYzhO,YAAYkoB,EAC5B,IACAo5M,EAAQthO,YAAYyhO,GACpBH,EAAQthO,YAAYuhO,EAAS,IAC7BD,EAAQthO,YAAYuhO,EAAS,IAC7B1yO,KAAK2oO,WAAY,EACjB3oO,KAAKm1B,IAAIs9M,EAASzL,EACtB,CAxBA,CAyBJ,EACA34O,EAAQgR,UAAUwzO,aAAe,WAC7B,IAAI7iO,EAAQhQ,KACZA,KAAKwoO,QAAUxoO,KAAKuoO,QAAQn3N,WAAU,GACtCpR,KAAKm1B,IAAIn1B,KAAKuoO,QAASrC,GACvBlmO,KAAK2pO,QAAU,GACA,GAAGtsO,MAAMqC,KAAKM,KAAKuoO,QAAQ3wP,UACjCmH,SAAQ,SAAU+3C,GACH,QAAhBA,EAAIX,UACJnmB,EAAM25N,QAAQlqP,KAAKq3C,IACdhG,EAAAA,EAAAA,IAAMgG,EAAImB,oBACXnB,EAAImB,kBAAkB3B,aAAa,gBAAiB,SAExDtmB,EAAMmlB,IAAI2B,EAAKqvM,GAEvB,GACJ,EACA93O,EAAQgR,UAAUy+F,YAAc,WAC5B,IAAIhnE,EAAM92B,KAAKhd,QACX8G,EAAQkW,KAAKlW,MACjB,GAAoB,MAAhBkW,KAAKuoO,QACLvoO,KAAK6yO,oBAEJ,GAAI/7M,GAAOhtC,EAAM7R,OAAS,EAAG,CAC9B,IAAIq0P,OAAa,EACbx1M,GAAOA,EAAIl/C,SAASK,OAAS,IAC7Bq0P,EAAax1M,EAAIvkB,cAAc,IAAM2zN,IAEpCoG,IACDA,EAAatsO,KAAK4Q,cAAc,MAAO,CAAE31B,UAAWirP,KAExDlmO,KAAKqsO,WAAWviP,EAAOwiP,GACvBx1M,EAAI3lB,YAAYm7N,EACpB,CACJ,EACAj+O,EAAQgR,UAAUyzO,QAAU,SAAU7sL,EAAMjjE,GAGxC,IAFA,IACIu4D,EADAv8D,EAAMH,OAAOC,KAAKmnE,GAEb9gD,EAAI,EAAGA,EAAInmB,EAAI/G,OAAQktB,IAEb,WADfo2C,EAASv8D,EAAIE,SAASimB,EAAE/pB,WAAY,MAEhC4kB,KAAKm1B,IAAInyC,EAASijE,EAAK,GAAK1K,IAG5Bv4D,EAAQszC,aAAailB,EAAQ0K,EAAK,GAAK1K,GAGnD,EASAltD,EAAQgR,UAAUy2H,YAAc,SAAUhsI,EAAO+pJ,GAC7C,IAEI/8G,EAFAJ,EAAW5sC,EACXmnB,EAAMylB,EAASz+C,QAEf64C,EAAAA,EAAAA,IAAM+iH,KACNA,GAAW,GAEf,IAAIjlF,EAAS,SAAUilF,EAAU/8G,GACzB+8G,GACA/8G,EAAIF,UAAUjB,OAAO2qM,IAChBxvM,EAAAA,EAAAA,IAAMgG,EAAImB,oBACXnB,EAAImB,kBAAkB3B,aAAa,gBAAiB,WAIxDQ,EAAIF,UAAUzB,IAAImrM,IACbxvM,EAAAA,EAAAA,IAAMgG,EAAImB,oBACXnB,EAAImB,kBAAkB3B,aAAa,gBAAiB,QAGhE,EACA,KAAKxF,EAAAA,EAAAA,IAAM7f,IAAQA,GAAO,EAAG,CACzB,IAAK,IAAIhS,EAAI,EAAGjc,EAAU,GAAGqa,MAAMqC,KAAKg3B,GAAWz3B,EAAIgS,EAAKhS,IAAK,CAC7D,IAAI8zO,EAAc/vP,EAAQ9D,SAAS+f,EAAE7jB,WAAY,KACjD,GAA6B,kBAAjB23P,EAA2B,CAEnC,GADAj8M,EAAM92B,KAAKgzO,kBAAkBD,IACzBjiN,EAAAA,EAAAA,IAAMgG,GACN,OAGAJ,EAASx3C,SAAS+f,EAAE7jB,WAAY,KAAO07C,CAE/C,MAEIA,EAAMi8M,EAEVnkL,EAAOilF,EAAU/8G,EACrB,CACI+8G,GACA18G,EAAAA,EAAAA,IAAYT,EAAU4pM,IAGtB7pM,EAAAA,EAAAA,IAASC,EAAU4pM,EAE3B,KACK,CACD,GAA0B,kBAAd5pM,GAER,GADAI,EAAM92B,KAAKgzO,kBAAkBt8M,IACzB5F,EAAAA,EAAAA,IAAMgG,GACN,YAIJA,EAAMhtC,EAEV8kE,EAAOilF,EAAU/8G,EACrB,CACJ,EACAzoC,EAAQgR,UAAU2zO,kBAAoB,SAAUlsP,GAC5C,OAAIkZ,KAAK2pO,QAAQzqP,SAAS4H,EAAM1L,WAAY,KACjC4kB,KAAK2pO,QAAQzqP,SAAS4H,EAAM1L,WAAY,KAE5C,IACX,EAQAiT,EAAQgR,UAAU4zO,SAAW,SAAUnpP,EAAOhD,GAC1C,IAAIgmP,EACJ9sO,KAAKkzO,eACL,IAAIC,EAAWnzO,KAAKhd,QAAQuvB,cAAc,IAAM2zN,GAChD,IAAIp1M,EAAAA,EAAAA,IAAMqiN,GACNnzO,KAAKozO,cAActpP,OADvB,CAIA,IAAIm0O,EACAoV,EAAU,QACVviN,EAAAA,EAAAA,IAAMhqC,KACNA,EAAQ,GAEZgD,EAAM/K,SAAQ,SAAUtD,IACfq1C,EAAAA,EAAAA,IAAMr1C,EAAE40J,QAAsB,SAAZ50J,EAAE40J,OAAgC,SAAZgjG,IACzCA,EAAU53P,EAAE40J,MAEpB,IACA,IAAK,IAAI9hI,EAAK,EAAG0/G,EAAUnkI,EAAOykB,EAAK0/G,EAAQh2I,OAAQs2B,IAAM,CACzD,IAAInjB,EAAO6iI,EAAQ1/G,GAOnB,IANIuiB,EAAAA,EAAAA,IAAM1lC,EAAK9Q,QACX8Q,EAAK9Q,KAAO,UAEhBwyP,GAAah0M,EAAAA,EAAAA,IAAU,IAAMqtM,EAAUnmO,KAAKhd,SAC5CoI,EAAKilJ,MAAQgjG,EACbpV,EAAWj+N,KAAKysO,mBAAmBrhP,EAAMtE,GACrCkZ,KAAK2pO,QAAQ1xP,QAAU6O,GAASgmP,EAAW70P,QAAU,EAAG,EACpD64C,EAAAA,EAAAA,IAAM9wB,KAAK+pI,eACX/pI,KAAKkqO,cAET,IAAIoJ,EAA6B,MAAlBloP,EAAKilJ,MAAM,GAAa,EAAsB,MAAlBjlJ,EAAKilJ,MAAM,GAAa,EAAI,EACnEv5G,OAAM,EACL92B,KAAK2oO,WAAyB,SAAZ0K,EAQdrzO,KAAK2oO,YACV7xM,GAAMsC,EAAAA,EAAAA,IAAQ0zM,EAAW,GAAI,IAAM5G,GAAWtuP,SAASsH,SAASo0P,EAASl4P,WAAY,MACjF48C,aAAaimM,EAAUnnM,EAAIl/C,SAASsH,SAAS4H,EAAM1L,WAAY,MACnE4kB,KAAK4pO,YAAYx+O,EAAKilJ,MAAQ,KAAKhyJ,eAAewoC,OAAO//B,EAAO,EAAGm3O,GACnEj+N,KAAKsyO,sBAEsB,IAAtBxF,EAAW70P,QAChB60P,GAAah0M,EAAAA,EAAAA,IAAU,IAAMotM,EAAWlmO,KAAKhd,UAClC,GAAGmuB,YAAY8sN,GAG1B6O,EAAW,GAAGx8N,WAAW0nB,aAAaimM,EAAU6O,EAAW5tP,SAAS4H,EAAM1L,WAAY,OAlBtF4kB,KAAK0sO,cAActhP,EAAM+nP,EAAU,GACnCnzO,KAAK2oO,WAAY,GACjB7xM,GAAMsC,EAAAA,EAAAA,IAAQ0zM,EAAW,GAAI,IAAM5G,GAAWtuP,SAASsH,SAASo0P,EAASl4P,WAAY,MACjF+1B,YAAY8sN,GAChBj+N,KAAK4pO,YAAYx+O,EAAKilJ,MAAQ,KAAKhyJ,eAAeoB,KAAKw+O,GACvDj+N,KAAKsyO,sBAeTtyO,KAAKlW,MAAM+8B,OAAO//B,EAAO,EAAGsE,GACxBA,EAAKoL,UACLwJ,KAAK2pO,QAAQ9iN,OAAO7mB,KAAK2pO,QAAQ1xP,OAAS,EAAG,GAEjD+nB,KAAK2pO,QAAQ9iN,OAAO//B,EAAO,EAAGm3O,GAC9Bn3O,IACAkZ,KAAK0tO,UAAYyF,EAAS17M,WAC9B,CACJ,CACA07M,EAAS57M,MAAMwc,MAAQ,GACvB/zC,KAAKksO,qBACDlsO,KAAK87F,SACL97F,KAAK+sC,sBA1DT,CA4DJ,EAQA1+C,EAAQgR,UAAUi3H,YAAc,SAAUroI,GACtC,IACInH,EADA4vC,EAAWzoC,EAEX6+O,EAAa,GAAGzvO,MAAMqC,MAAKo5B,EAAAA,EAAAA,IAAU,IAAMqtM,EAAUnmO,KAAKhd,UAC9D,GAA0B,kBAAd0zC,EACR5vC,EAAQ5H,SAAS+O,EAAK7S,WAAY,IAClC4kB,KAAKuzO,kBAAkBzsP,EAAOgmP,QAG9B,GAAIp2M,GAAYA,EAASz+C,OAAS,EAC9B,IAAK,IAAIs2B,EAAK,EAAGvoB,EAAK,GAAGqX,MAAMqC,KAAKg3B,GAAWnoB,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CACjE,IAAIuoB,EAAM9wC,EAAGuoB,GACbznB,EAAQkZ,KAAK2pO,QAAQrzO,QAAQwgC,GAC7B92B,KAAKuzO,kBAAkBzsP,EAAOgmP,GAC9BA,GAAah0M,EAAAA,EAAAA,IAAU,IAAMqtM,EAAUnmO,KAAKhd,QAChD,KAEC,CACG8zC,EAAOJ,GAAYA,EAASz+C,QAA8B,IAApBy+C,EAASz+C,OAAgBy+C,EAAS,GAAKzoC,EACjFnH,EAAQgmP,EAAWx2O,QAAQwgC,GAC3B92B,KAAKuzO,kBAAkBzsP,EAAOgmP,EAClC,CAEJ9sO,KAAKgoO,QACT,EACA35O,EAAQgR,UAAUk0O,kBAAoB,SAAUzsP,EAAOgmP,GACnD,GAAI9sO,KAAK2pO,QAAQzqP,SAAS4H,EAAM1L,WAAY,MAAQ0xP,EAAW5tP,SAAS4H,EAAM1L,WAAY,KAAM,CAC5F,IAAIo4P,EAASxzO,KAAK2pO,QAAQrzO,QAAQw2O,EAAW5tP,SAAS4H,EAAM1L,WAAY,MACxE,GAAI4kB,KAAK2oO,UAAW,CAChB,IAAI8K,EAAWzzO,KAAK4pO,YAAY5pO,KAAKlW,MAAM5K,SAASs0P,EAAOp4P,WAAY,KAAKi1J,MAAQ,KAAKhyJ,eAAeiY,QAAQ0J,KAAK2pO,QAAQzqP,SAASs0P,EAAOp4P,WAAY,MACzJ4kB,KAAK4pO,YAAY5pO,KAAKlW,MAAM5K,SAASs0P,EAAOp4P,WAAY,KAAKi1J,MAAQ,KAAKhyJ,eAAewoC,OAAO3nC,SAASu0P,EAASr4P,WAAY,IAAK,EACvI,CACI4kB,KAAK87F,SACL97F,KAAK0zO,qBAAqB5G,EAAW5tP,SAAS4H,EAAM1L,WAAY,MAEpE,IAAIu4P,EAAU7G,EAAW5tP,SAAS4H,EAAM1L,WAAY,KAAKm3B,cAAc,qBAClEue,EAAAA,EAAAA,IAAM6iN,KAAa7iN,EAAAA,EAAAA,IAAM6iN,EAAQ93M,cAAc,KAAS83M,EAAQ93M,cAAc,GAAGjB,aAClF+4M,EAAQ93M,cAAc,GAAGnU,WAE7B6Q,EAAAA,EAAAA,IAAOu0M,EAAW5tP,SAAS4H,EAAM1L,WAAY,MAC7C4kB,KAAKlW,MAAM+8B,OAAO2sN,EAAQ,GAC1BxzO,KAAK2pO,QAAQ9iN,OAAO2sN,EAAQ,EAChC,CACJ,EACAnlP,EAAQgR,UAAUu0O,eAAiB,SAAUC,EAAc5V,EAAU7yO,EAAMtE,GACvE,IAEIgtP,EAFAC,EAAW3oP,EAAK9Q,KAChBs6D,EAASi/L,EAKb,GAH8B,kBAAlBA,IACRC,EAA2C,oBAArBl/L,EAAO7J,UAEH,kBAAlB8oM,GAA+BC,GA0CtC,GAAiB,UAAbC,EAAsB,CACvBj9M,EAAM92B,KAAK4Q,cAAc,SACzBxlB,EAAKxG,GACLkyC,EAAIlyC,GAAKwG,EAAKxG,GAGdkyC,EAAIlyC,IAAK8qB,EAAAA,EAAAA,IAAY,WAEzBuuN,EAAS9sN,YAAY2lB,GACrB8d,EAAO7J,SAASjU,EACpB,MApDwD,CACpD,IACIn5B,EADA4nL,OAAa,EAEbyuD,EAAQ,IAAIhrO,OAAO,uEACvBrL,EAAiC,kBAAlBk2O,EAA8BA,EAAa54L,OAAS44L,EACnE,IACI,GAA8B,kBAAlBA,IAA+B/iN,EAAAA,EAAAA,IAAM+iN,EAAa19M,SAGzD,GAA8B,kBAAlB09M,GAA8BG,EAAMlsO,KAAKnK,GACtDsgO,EAAS1sN,UAAY5T,OAEpB,GAAIiF,SAASkO,iBAAiBnT,GAAK1lB,OAAQ,CAC5C,IAAI6+C,EACAisB,GADAjsB,EAAMl0B,SAAS2P,cAAc5U,IACf0T,UAAU4pC,OAC5BgjL,EAAS9sN,YAAY2lB,GACrBA,EAAIS,MAAMuiB,QAAU,IACfhpB,EAAAA,EAAAA,IAAMiyB,IACP/iD,KAAKskD,OAAO7kE,KAAKke,EAEzB,MAEI4nL,GAAavqF,EAAAA,EAAAA,IAAiBr9F,QAf9BsgO,EAAS9sN,YAAY0iO,EAiB7B,CACA,MAAOp4P,GACH8pM,GAAavqF,EAAAA,EAAAA,IAAiBr9F,EAClC,CACA,IAAIs2O,OAAY,EAChB,KAAKnjN,EAAAA,EAAAA,IAAMy0J,GAEP0uD,EAAY1uD,EAAW,CAAC,EAAGvlL,KAAM,WADTA,KAAKhd,QAAQ4B,GAAKkC,EAAQ,YACckZ,KAAKwqC,oBAEpE1Z,EAAAA,EAAAA,IAAMmjN,IAAcA,EAAUh8P,OAAS,GACxC,GAAGolB,MAAMqC,KAAKu0O,GAAWl1P,SAAQ,SAAU+3C,IAClChG,EAAAA,EAAAA,IAAMgG,EAAIX,WACXW,EAAIS,MAAMuiB,QAAU,IAExBmkL,EAAS9sN,YAAY2lB,EACzB,GAER,CAYA92B,KAAKm1B,IAAI8oM,EAAUuI,GACnBxmO,KAAK2pO,QAAQlqP,KAAKw+O,EACtB,EACA5vO,EAAQgR,UAAU60O,gBAAkB,SAAU9oP,EAAM6yO,GAChD,IAAIkW,EAAMn0O,KAAK4Q,cAAc,SAAU,CAAE31B,UAvzD/B,eAwzDVk5P,EAAI79M,aAAa,OAAQ,UACzB,IACIswB,EACAwtL,EAFAC,EAAUjpP,EAAKrT,KAGfqT,EAAKxG,GACLuvP,EAAIvvP,GAAKwG,EAAKxG,GAGduvP,EAAIvvP,IAAK8qB,EAAAA,EAAAA,IAAY,aAEzB,IAAI4kO,EAASt0O,KAAK4Q,cAAc,OAAQ,CAAE31B,UAAW,oBACjDo5P,GACAC,EAAO/iO,UAAYvR,KAAKymD,oBAAsBtB,EAAAA,GAAmBI,SAAS8uL,GAAWA,EACrFF,EAAIhjO,YAAYmjO,GAChBH,EAAIv9M,UAAUzB,IAAI,eAGlBn1B,KAAKm1B,IAAI8oM,EAAU,iBAEnB7yO,EAAK2C,YAAc3C,EAAKmlJ,cACnBnlJ,EAAK2C,YAAc3C,EAAKmlJ,YAAenlJ,EAAK2C,YAC7C64D,EAAUx7D,EAAK2C,WAAa,WAC5BqmP,EAAU,SAGVxtL,EAAUx7D,EAAKmlJ,WAAa,WAC5B6jG,EAAU,UAGlB,IAAI75B,EAAS,IAAIl0J,EAAAA,GAAO,CAAEO,QAASA,EAASG,aAAcqtL,IAM1D,OALA75B,EAAO3pM,cAAgB5Q,KAAK4Q,cAC5B2pM,EAAOxvK,SAASopM,GACZ/oP,EAAK2oD,QACLqxB,EAAAA,EAAAA,IAAS+uK,EAAK,CAAE,OAASriO,EAAAA,EAAAA,IAAW1mB,EAAK2oD,SAEtCogM,CACX,EACA9lP,EAAQgR,UAAUotO,mBAAqB,SAAUrhP,EAAMtE,GACnD,IAAIqtP,EACAlW,EAAWj+N,KAAK4Q,cAAc,MAAO,CAAE31B,UAAWkrP,IAClDoO,EAAUv0O,KAAK4Q,cAAc,MAAO,CACpCW,UAAWvR,KAAKymD,oBAAsBtB,EAAAA,GAAmBI,SAASn6D,EAAK0C,aAAe1C,EAAK0C,cAc/F,GAZKkS,KAAK2pO,UACN3pO,KAAK2pO,QAAU,IAEfv+O,EAAKk/D,gBACLtqD,KAAK8yO,QAAQ1nP,EAAKk/D,eAAgB2zK,GAElC7yO,EAAK0C,aACLmwO,EAAS3nM,aAAa,QAASi+M,EAAQztL,aAEvC17D,EAAKjL,WACL89O,EAAShjP,UAAYgjP,EAAShjP,UAAY,IAAMmQ,EAAKjL,UAErDiL,EAAKoL,SACLwJ,KAAK4zO,eAAexoP,EAAKoL,SAAUynO,EAAU7yO,EAAMtE,QAGnD,OAAQsE,EAAK9Q,MACT,IAAK,UACD65P,EAAMn0O,KAAKk0O,gBAAgB9oP,EAAM6yO,IAC7B3nM,aAAa,YAAYxF,EAAAA,EAAAA,IAAM1lC,EAAKgoE,UAAY,KAAOhoE,EAAKgoE,SAASh4E,YACzE+4P,EAAI79M,aAAa,iBAAiBxF,EAAAA,EAAAA,IAAM1lC,EAAKgoE,UAAY,KAAOhoE,EAAKgoE,SAASh4E,YAC9E+4P,EAAI79M,aAAa,aAAelrC,EAAKrT,MAAQqT,EAAK0C,aAClDqmP,EAAI79M,aAAa,gBAAiB,SAClC2nM,EAAS9sN,YAAYgjO,GACrBlW,EAASp6N,iBAAiB,QAAS7D,KAAKw0O,UAAUx1O,KAAKgB,OACvD,MACJ,IAAK,YACDA,KAAKm1B,IAAI8oM,EAAUmI,GAI/B,GAAIh7O,EAAKqpP,WAAY,CACjB,IAAIC,EAAOtpP,EAAKqpP,WACH,YAATC,GACA10O,KAAKm1B,IAAI8oM,EAAUwI,GACnBzmO,KAAKm1B,IAAI8oM,EAAU,iBAEL,aAATyW,GACL10O,KAAKm1B,IAAI8oM,EAAUyI,EAE3B,CACA,GAAIt7O,EAAK2rD,SAAU,CACf,IAAIA,EAAW3rD,EAAK2rD,SACH,SAAbA,EACA/2C,KAAKm1B,IAAI8oM,EAAU0I,GAED,SAAb5vL,IACAknL,EAASrnM,UAAUM,SAASkvM,IAC7BpmO,KAAKm1B,IAAI8oM,EAAU2I,GAG/B,CAWA,MAVsB,SAAlBx7O,EAAK2rD,UAAuB3rD,EAAKuhP,oBAAsB1O,EAASrnM,UAAUM,SAASkvM,KACnFpmO,KAAKm1B,IAAI8oM,EAAUqJ,GACnBtnO,KAAKipO,iBAEL79O,EAAKrS,UACLinB,KAAKm1B,IAAI8oM,EAAUqC,IAEF,IAAjBl1O,EAAKgD,SACL4R,KAAKm1B,IAAI8oM,EAAUsJ,GAEhBtJ,CACX,EACA5vO,EAAQgR,UAAUs1O,gBAAkB,SAAU79M,GAC1C,OAAOhG,EAAAA,EAAAA,IAAMgG,EAAIsK,aAAa,kBAAoB,KAAOtK,EAAIsK,aAAa,gBAC9E,EACA/yC,EAAQgR,UAAUm1O,UAAY,SAAU/4P,GACpCukB,KAAKuqO,gBAAgB9uP,EAAEk0D,cAC3B,EACAthD,EAAQgR,UAAUkrO,gBAAkB,SAAUzzM,GAC1C92B,KAAKqrO,gBAAgBv0M,EAAImB,mBACzBj4B,KAAK0oO,UAAUj3N,OACnB,EACApjB,EAAQgR,UAAUgsO,gBAAkB,SAAU1L,IACrC7uM,EAAAA,EAAAA,IAAM9wB,KAAK0oO,YACZ1oO,KAAK0oO,UAAUpyM,aAAa,WAAYt2B,KAAK20O,gBAAgB30O,KAAK0oO,YAEtE1oO,KAAK0oO,UAAY/I,EAC4B,OAAzC3/N,KAAK20O,gBAAgB30O,KAAK0oO,cACtB53M,EAAAA,EAAAA,IAAM9wB,KAAKuoO,WAAa5I,EAAO1mL,cAAcriB,UAAUM,SAASsvM,IAChExmO,KAAKopO,eAAe,MACpBzJ,EAAOz+L,gBAAgB,aAGvBlhC,KAAK0oO,UAAUpyM,aAAa,WAAYt2B,KAAK20O,gBAAgB30O,KAAK0oO,YAG9E,EACAr6O,EAAQgR,UAAUytC,eAAiB,WAC/B,OAAO9sC,KAAKotC,aAAa,GAC7B,EAOA/+C,EAAQgR,UAAUu8B,cAAgB,WAC9B,MAAO,SACX,EACAvtC,EAAQgR,UAAU+zO,cAAgB,SAAU/wM,GACxCriC,KAAKlW,MAAQkW,KAAK4oO,cACd5oO,KAAK87F,SAAW97F,KAAKyrD,YACrBzrD,KAAKgtC,gBAEThtC,KAAKkqO,cACLlqO,KAAKsoO,eACLtoO,KAAKlW,MAAQu4C,EACbriC,KAAK4oO,aAAe5oO,KAAKlW,MACzBkW,KAAK89F,cACL99F,KAAKksO,qBACDlsO,KAAK87F,SACL97F,KAAK+sC,sBAEb,EACA1+C,EAAQgR,UAAU2oO,OAAS,WACvB,IAAIlxM,EAAM92B,KAAKhd,QACfgd,KAAK+uO,UAAW,EACZ/uO,KAAK2oO,WACL3oO,KAAKmsO,kBAELnsO,KAAKyoO,QAAgC,UAAtBzoO,KAAKwpO,cACpBxpO,KAAKyoO,OAAOxjK,OAEhB,IAAI8nK,EAAgB/sO,KAAK+sO,cAAcj2M,EAAKA,EAAI0N,uBAAuB0hM,GAAW,IAClF,IAAK6G,EAAe,CAChB/sO,KAAKgpH,gBACL,IAAI4rH,EAAc99M,EAAIvkB,cAAc,IAAM2zN,IACrCp1M,EAAAA,EAAAA,IAAM8jN,KACP50O,KAAK21B,OAAOi/M,EAAanN,GACrBznO,KAAK2oO,WACL3oO,KAAKm1B,IAAIy/M,EAAa5N,GAGlC,CACA,IAAI+F,IAAiB/sO,KAAK+pI,cAAiB/pI,KAAK0tO,YAAc52M,EAAIW,YAAlE,CAMA,IAHIz3B,KAAK0tO,UAAY52M,EAAIW,aAAes1M,IACpC/sO,KAAKksO,qBAELlsO,KAAKyoO,OAAQ,CACb,GAA0B,aAAtBzoO,KAAKwpO,aAA6B,CAClC,IAAI4F,EAAY9uP,OAAO4jD,iBAAiBlkC,KAAKhd,SAC7Cgd,KAAKyoO,OAAO10L,MAAQ9tB,WAAWmpN,EAAUr7L,OAAqD,EAA1C9tB,WAAWmpN,EAAUC,iBAC7E,CACIrvO,KAAK2oO,WACL3oO,KAAK2tO,oBAET3tO,KAAKoqO,aAAapqO,KAAKyoO,OAAOzlP,SAAS,GACnCgd,KAAK2oO,WACL3oO,KAAKsyO,oBAEb,CACItyO,KAAKhd,QAAQuvB,cAAc,IAAM00N,KACjCjnO,KAAK8oH,WAAa9oH,KAAKhd,QAAQuvB,cAAc,IAAM00N,GAAgBxvM,aAEvEz3B,KAAK0tO,UAAY52M,EAAIW,YACrBz3B,KAAK+uO,UAAW,EAChB/uO,KAAKiwH,WAtBL,CAuBJ,EACA5hI,EAAQgR,UAAU6oO,kBAAoB,WAClC,IAAIl4N,EAAQhQ,KACZkQ,YAAW,WACPF,EAAMg4N,QACV,GAAG,IACP,EACA35O,EAAQgR,UAAU6zO,aAAe,WAC7B,IAAI1H,EAAMxrO,KAAKhd,QAAQuvB,cAAc,IAAMs1N,GACjB,aAAtB7nO,KAAKwpO,cAA+BgC,IACpCxrO,KAAKgpO,eAAiBwC,EAAI50M,UAAUM,SAASqvM,GAErD,EACAl4O,EAAQgR,UAAUw1O,sBAAwB,SAAU/9M,EAAKg+M,EAAUptD,EAAWqtD,EAAUjI,GAChFplD,IACAqtD,EAAWjI,EAAWx2O,QAAQwgC,IAGlC,IADA,IAAIk6C,EAAU87J,IAAaiI,GACpB/jK,GAAS,CAEZ,IADchxE,KAAKurO,YAAYv6J,GACjB,CACV,IAAIq4J,EAAer4J,EAAQ/4C,kBAAkBmJ,aAAa,iBACtD0zM,GAA6B,OAAjBzL,EACZr4J,EAAQ/4C,kBAAkB3B,aAAa,WAAY,KAE9C+yM,IAAiBr4J,EAAQ/4C,kBAAkBmJ,aAAa,aAC7D4vC,EAAQ/4C,kBAAkB3B,aAAa,WAAY+yM,GAEvD,KACJ,CACAr4J,EAAU87J,IAAaiI,EAC3B,CACJ,EACA1mP,EAAQgR,UAAUq0O,qBAAuB,SAAUsB,GAC/C,GAAIh1O,KAAKqrI,oBAAsBrrI,KAAKqrI,mBAAkC,SAElE,IADA,IAAI4pG,EAAsBj1O,KAAKqrI,mBACtBvkJ,EAAQ,EAAGA,EAAQmuP,EAAmC,SAAEh9P,OAAQ6O,IAAS,CAC9E,IAAIouP,EAAiBD,EAAmC,SAAE/1P,SAAS4H,EAAM1L,WAAY,KAAKiuK,UAAU,GAChG8rF,GAAc/7M,EAAAA,EAAAA,IAAQ87M,EAAgB,IAAM/O,GAChD,KAAKr1M,EAAAA,EAAAA,IAAMqkN,IAAgBA,IAAgBH,EAAa,CACpDh1O,KAAKgtC,cAAc,CAAC,YAAa,CAACioM,EAAmC,SAAE/1P,SAAS4H,EAAM1L,WAAY,OAClG,KACJ,CACJ,MAEC,GAAI4kB,KAAK8vH,SAAW9vH,KAAK8vH,QAAQ73I,OAAS,EAC3C,KAAI63I,EAAU9vH,KAAK8vH,QACnB,IAAShpI,EAAQ,EAAGA,EAAQgpI,EAAQ73I,OAAQ6O,IAAS,CACjD,IAAIsuP,EAAatlH,EAAQ5wI,SAAS4H,EAAM1L,WAAY,KAChD+5P,GAAc/7M,EAAAA,EAAAA,IAAQg8M,EAAWC,cAAe,IAAMlP,GAC1D,KAAKr1M,EAAAA,EAAAA,IAAMqkN,IAAgBA,IAAgBH,EAAa,CACpDh1O,KAAKgtC,cAAc,CAAC,YAAalmD,GACjC,KACJ,CACJ,CAR0B,CAUlC,EASAuH,EAAQgR,UAAUi8B,kBAAoB,SAAU+G,EAASC,GACrD,IAAIgzM,EAAOt1O,KAAKhd,QACNsyP,EAAK79M,YACfz3B,KAAKkzO,eACL,IAAK,IAAI3kO,EAAK,EAAGvoB,EAAKnH,OAAOC,KAAKujD,GAAU9zB,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAE9D,OADWvoB,EAAGuoB,IAEV,IAAK,QACD,GAAM8zB,EAAQv4C,iBAAiB2kB,OAAS6zB,EAAQx4C,iBAAiB2kB,MAiC7DzO,KAAKozO,cAAc/wM,EAAQv4C,YA/B3B,IADA,IAAIyrP,EAAc12P,OAAOC,KAAKujD,EAAQv4C,OAC7Bqb,EAAI,EAAGA,EAAIowO,EAAYt9P,OAAQktB,IAAK,CACzC,IAAIre,EAAQ5H,SAASL,OAAOC,KAAKujD,EAAQv4C,OAAO5K,SAASimB,EAAE/pB,WAAY,KAAM,IACzEorC,EAAW3nC,OAAOC,KAAKujD,EAAQv4C,MAAM5K,SAAS4H,EAAM1L,WAAY,MAAM,GACtE0+G,EAAcj7G,OAAOwjD,EAAQv4C,MAAM5K,SAAS4H,EAAM1L,WAAY,MAAM,GAAKorC,GAC7E,GAAIxmB,KAAK2oO,WAA0B,UAAbniN,EAAsB,CACxCxmB,KAAKmrC,UACLnrC,KAAK81B,QAAQ,WACb,KACJ,CACA,IAAI0/M,EAA6B,sBAAbhvN,IAAqCszE,EACrD27I,EAA4B,aAAbjvN,GAAkD,IAAvBxmB,KAAKipO,eAC9CuM,GAAmBx1O,KAAKlW,MAAM5K,SAAS4H,EAAM1L,WAAY,KAAKuxP,mBAAsB8I,MACnFz1O,KAAKipO,eAEPn4M,EAAAA,EAAAA,IAAM9wB,KAAK+pI,eACX/pI,KAAKkqO,cAET,IAAIwL,EAAU,GAAGr4O,MAAMqC,MAAKo5B,EAAAA,EAAAA,IAAU,IAAMotM,EAAY,KAAOC,EAAUmP,IACrEt1O,KAAK87F,SAAW97F,KAAKlW,MAAM5K,SAAS4H,EAAM1L,WAAY,KAAKob,UAC3DwJ,KAAK0zO,qBAAqBgC,EAAQx2P,SAAS4H,EAAM1L,WAAY,OAEjEm9C,EAAAA,EAAAA,IAAOm9M,EAAQx2P,SAAS4H,EAAM1L,WAAY,MAC1C4kB,KAAK2pO,QAAQ9iN,OAAO//B,EAAO,GAC3BkZ,KAAKizO,SAAS,CAACjzO,KAAKlW,MAAM5K,SAAS4H,EAAM1L,WAAY,MAAO0L,GAC5DkZ,KAAKlW,MAAM+8B,OAAO//B,EAAO,GACrBkZ,KAAKlW,MAAM5K,SAAS4H,EAAM1L,WAAY,KAAKob,UAC3CwJ,KAAK2pO,QAAQ9iN,OAAO7mB,KAAKlW,MAAM7R,OAAQ,EAE/C,CAKJ,MACJ,IAAK,SACDmtF,EAAAA,EAAAA,IAASkwK,EAAM,CAAE,OAASxjO,EAAAA,EAAAA,IAAWuwB,EAAQ0R,SAC7C/zC,KAAKqyI,kBACL,MACJ,IAAK,UACDjtE,EAAAA,EAAAA,IAASplE,KAAKhd,QAAS,CAAE,QAAU8uB,EAAAA,EAAAA,IAAWuwB,EAAQ2R,UACtD,MACJ,IAAK,eACDh0C,KAAKkqO,cACLlqO,KAAKksO,qBACDlsO,KAAK2qC,WACL3qC,KAAKm1B,IAAImgN,EAAMjV,GAEnBrgO,KAAKqyI,kBACL,MACJ,IAAK,YACGhwG,EAAQsI,UACR3qC,KAAKm1B,IAAImgN,EAAMjV,GAGfrgO,KAAK21B,OAAO2/M,EAAMjV,IAEjBvvM,EAAAA,EAAAA,IAAM9wB,KAAK+pI,gBACR1nG,EAAQsI,UACR3qC,KAAKm1B,IAAIn1B,KAAK+pI,aAAa/mJ,QAASq9O,GAGpCrgO,KAAK21B,OAAO31B,KAAK+pI,aAAa/mJ,QAASq9O,KAG1CvvM,EAAAA,EAAAA,IAAM9wB,KAAKyoO,UACRpmM,EAAQsI,UACR3qC,KAAKm1B,IAAIn1B,KAAKyoO,OAAOzlP,QAASq9O,GAG9BrgO,KAAK21B,OAAO31B,KAAKyoO,OAAOzlP,QAASq9O,IAGrCrgO,KAAK2oO,WACL3oO,KAAKmsO,kBAET,MACJ,IAAK,aACGnsO,KAAK+pI,eACL/pI,KAAK+pI,aAAajhB,WAAa9oH,KAAK8oH,YAExC,MACJ,IAAK,kBACG9oH,KAAKyoO,SACLzoO,KAAKyoO,OAAOzhK,UAAY,CAAEF,EAAG9mE,KAAK8oO,gBAAkB,OAAS,SAEjE,MACJ,IAAK,WACGxmM,EAAQniD,WACRg3C,EAAAA,EAAAA,IAAY,CAACn3B,KAAKhd,SAAUs/C,EAAQniD,SAAS8T,MAAM,MAEnDouC,EAAQliD,WACRs2C,EAAAA,EAAAA,IAAS,CAACz2B,KAAKhd,SAAUq/C,EAAQliD,SAAS8T,MAAM,MAEpD,MACJ,IAAK,gBACD+L,KAAKspO,sBACDjnM,EAAQ82I,eACRn5K,KAAKisH,oBAIrB,CACJ,EAQA59H,EAAQgR,UAAUs2O,SAAW,SAAU7uP,EAAOvJ,GAC1C,IAEIu5C,EAFA4wJ,EAAgC,kBAAX5gM,EACrBiuP,EAAWjuP,EAEf,GAAK4gM,KAAa52J,EAAAA,EAAAA,IAAMikN,GAAxB,CAGA,IAAIjI,EAAa,GAAGzvO,MAAMqC,MAAKo5B,EAAAA,EAAAA,IAAU,IAAMqtM,EAAUnmO,KAAKhd,UAC9D,GAAI0kM,EACA5wJ,EAAMhwC,OAEL,GAAIkZ,KAAK2pO,QAAQzqP,SAAS61P,EAAS35P,WAAY,KAAM,CAEtD07C,EADmB,GAAGz5B,MAAMqC,MAAKo5B,EAAAA,EAAAA,IAAU,IAAMqtM,EAAUnmO,KAAKhd,UAC7C9D,SAAS61P,EAAS35P,WAAY,IACrD,CACI07C,IACIv5C,GACAu5C,EAAIF,UAAUzB,IAAIoyM,GACbzwM,EAAIF,UAAUM,SAASkvM,MACpBt1M,EAAAA,EAAAA,IAAMgG,EAAImB,kBAAkBmJ,aAAa,cACU,OAAnDtK,EAAImB,kBAAkBmJ,aAAa,cACnCphC,KAAK60O,sBAAsB/9M,EAAKv5C,EAAOmqM,EAAWqtD,EAAUjI,KAKpEh2M,EAAIF,UAAUjB,OAAO4xM,GAChBzwM,EAAIF,UAAUM,SAASkvM,IACxBpmO,KAAK60O,sBAAsB/9M,EAAKv5C,EAAOmqM,EAAWqtD,EAAUjI,IAGpE9sO,KAAKqyI,kBAzBT,CA2BJ,EACA1yG,EAAW,EACPpB,EAAAA,EAAAA,IAAW,GAAIuuJ,IAChBz+L,EAAQgR,UAAW,aAAS,GAC/BsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,SACV7vC,EAAQgR,UAAW,aAAS,GAC/BsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,SACV7vC,EAAQgR,UAAW,cAAU,GAChCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,KACV7vC,EAAQgR,UAAW,gBAAY,GAClCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,eACV7vC,EAAQgR,UAAW,oBAAgB,GACtCsgC,EAAW,EACPzB,EAAAA,EAAAA,OACD7vC,EAAQgR,UAAW,kBAAc,GACpCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV7vC,EAAQgR,UAAW,uBAAmB,GACzCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV7vC,EAAQgR,UAAW,2BAAuB,GAC7CsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV7vC,EAAQgR,UAAW,qBAAiB,GACvCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDnhB,EAAQgR,UAAW,eAAW,GACjCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDnhB,EAAQgR,UAAW,eAAW,GACjCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDnhB,EAAQgR,UAAW,iBAAa,GACnCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDnhB,EAAQgR,UAAW,oBAAgB,GACtChR,EAAUsxC,EAAW,CACjBhB,EAAAA,IACDtwC,EAEP,CArqE6B,CAqqE3Bg8C,EAAAA,4HCjzEEurM,EACAC,sBASG,SAAS3jH,EAAIlvI,EAAS8yP,EAAiB/lM,EAAMoC,GAGhD,QAFwB,IAApB2jM,IAA8BA,EAAkB,WACvC,IAAT/lM,IAAmBA,EAAO,CAAE82B,GAAG,EAAOC,GAAG,KACxC/2B,EAAK+2B,IAAM/2B,EAAK82B,EACjB,MAAO,CAAEnjC,KAAM,EAAGE,IAAK,GAE3B,IAAImyM,EAAW/yP,EAAQkgD,wBACvB2yM,EAAkBC,EAClBF,EAAiB5yP,EAAQgzP,cACpB7jM,IACDA,GAAWugF,EAAAA,EAAAA,GAAkB1vI,EAAS,OAAQ,QAElD,IAAIizP,EAAgB,EAChBC,EAAsBlzP,EAAQo2C,QAAQ,mBAI1C,GAHI88M,IACAD,EAAgBhwN,WAAWie,iBAAiBgyM,GAAqBC,OAEjEpmM,EAAK82B,EAAG,CACR,IAAIuvK,EAAiBP,EAAkBQ,IAA4BC,IAC/DC,EAAgBC,IAAkBP,EAClCQ,EAAiBC,IAAmBT,EACpCU,EAAWJ,EAAgBpkM,EAASzO,KACpCkzM,EAAYzkM,EAASzO,KAAOqyM,EAAShiM,MAAQ0iM,EAC7CV,EAAShiM,MAAQqiM,EAEbjkM,EAASzO,KADTizM,EAAW,GAAKC,GAAa,EACbH,EAAiBV,EAAShiM,MAErC6iM,EAAY,GAAKD,GAAY,EAClBJ,EAGAI,EAAWC,EAAaH,EAAiBV,EAAShiM,MAASwiM,EAG1EI,EAAW,EAChBxkM,EAASzO,MAAQizM,EAEZC,EAAY,IACjBzkM,EAASzO,MAAQkzM,EAEzB,CACA,GAAI7mM,EAAK+2B,EAAG,CACR,IAAIymI,EAAkBsoC,EAAkBgB,IAA6BC,IACjEC,EAAeC,IAAiBf,EAChCgB,EAAkBC,IAAoBjB,EACtCkB,EAAUJ,EAAe5kM,EAASvO,IAClCwzM,EAAajlM,EAASvO,IAAMmyM,EAAS/hM,OAASijM,EAC9ClB,EAAS/hM,OAASu5J,EAEdp7J,EAASvO,IADTuzM,EAAU,GAAKC,GAAc,EACdH,EAAkBlB,EAAS/hM,OAErCojM,EAAa,GAAKD,GAAW,EACnBJ,EAGAI,EAAUC,EAAcH,EAAkBlB,EAAS/hM,OAAU+iM,EAG3EI,EAAU,EACfhlM,EAASvO,KAAOuzM,EAEXC,EAAa,IAClBjlM,EAASvO,KAAOwzM,EAExB,CACA,OAAOjlM,CACX,CASO,SAASk9D,EAAUrsH,EAAS8yP,EAAiBlpN,EAAG14B,QAC3B,IAApB4hP,IAA8BA,EAAkB,MACpD,IAAIuB,GAAa3kH,EAAAA,EAAAA,GAAkB1vI,EAAS,OAAQ,OAChD4pC,IACAyqN,EAAW3zM,KAAO9W,GAElB14B,IACAmjP,EAAWzzM,IAAM1vC,GAErB,IAAIrO,EAAO,GACXgwP,EAAkBC,EAClBF,EAAiB5yP,EAAQgzP,cACzB,IAAIsB,EAAct0P,EAAQkgD,wBACtBU,EAAMyzM,EAAWzzM,IACjBF,EAAO2zM,EAAW3zM,KAClBC,EAAQ0zM,EAAW3zM,KAAO4zM,EAAYvjM,MAItCwjM,EAAQC,EAAgB5zM,EAHfyzM,EAAWzzM,IAAM0zM,EAAYtjM,QAItCyjM,EAAQC,EAAiBh0M,EAAMC,GAanC,OAZI4zM,EAAMI,SACN9xP,EAAKpG,KAAK,OAEVg4P,EAAMG,WACN/xP,EAAKpG,KAAK,SAEVg4P,EAAMI,UACNhyP,EAAKpG,KAAK,QAEV83P,EAAMO,YACNjyP,EAAKpG,KAAK,UAEPoG,CACX,CAcO,SAASkyP,EAAK/0P,EAASm7C,EAAQgF,EAASG,EAAS00M,EAAWC,EAAWnC,EAE9E/lM,EAAMmoM,GAGF,QAFwB,IAApBpC,IAA8BA,EAAkB,WACvC,IAAT/lM,IAAmBA,EAAO,CAAE82B,GAAG,EAAMC,GAAG,IACvC3oC,GAAWn7C,GAAYg1P,GAAcC,IAAeloM,EAAK82B,GAAM92B,EAAK+2B,GAAzE,CAGA,IAWIwwK,EAXAa,EAAQ,CAAEC,GAAI,KACdC,GAAI,KACJC,GAAI,KACJC,GAAI,MACLC,EAAQ,CACPJ,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,MAIR,GAAiD,SAA7Cj4P,OAAO4jD,iBAAiBlhD,GAAS82D,QAAoB,CACrD,IAAI2+L,EAAgBz1P,EAAQu0C,MAAMC,WAClCx0C,EAAQu0C,MAAMC,WAAa,SAC3Bx0C,EAAQu0C,MAAMuiB,QAAU,QACxBw9L,EAAct0P,EAAQkgD,wBACtBlgD,EAAQu0C,MAAM+zE,eAAe,WAC7BtoH,EAAQu0C,MAAMC,WAAaihN,CAC/B,MAEInB,EAAct0P,EAAQkgD,wBAE1B,IAAI/f,EAAM,CACNu1N,KAAMV,EAAWW,KAAMV,EAAW90M,QAASA,EAASG,QAASA,EAAS6O,SAAU,CAAEzO,KAAM,EAAGE,IAAK,IAEpGiyM,EAAkBC,EAClBF,EAAiBz3M,EAAO63M,cAkD5B,SAA2B73M,EAAQy6M,EAAMz1N,EAAK+0N,EAAaZ,GACvDn0N,EAAIgvB,UAAWugF,EAAAA,EAAAA,GAAkBv0F,EAAQhb,EAAIu1N,KAAMv1N,EAAIw1N,KAAMT,EAAaZ,GAC1EsB,EAAKR,IAAK1lH,EAAAA,EAAAA,GAAkBv0F,EAAQ,OAAQ,MAAO+5M,EAAaZ,GAChEsB,EAAKP,IAAK3lH,EAAAA,EAAAA,GAAkBv0F,EAAQ,QAAS,MAAO+5M,EAAaZ,GACjEsB,EAAKL,IAAK7lH,EAAAA,EAAAA,GAAkBv0F,EAAQ,OAAQ,SAAU+5M,EAAaZ,GACnEsB,EAAKN,IAAK5lH,EAAAA,EAAAA,GAAkBv0F,EAAQ,QAAS,SAAU+5M,EAAaZ,EACxE,CAvDIuB,CAAkB16M,EAAQg6M,EAAOh1N,EAAK+0N,EAAaZ,GACnD/kH,EAAYimH,EAAOr1N,EAAKm0N,GACpBvnM,EAAK82B,GACLiyK,EAAS36M,EAAQq6M,EAAOL,EAAOh1N,EAAKm0N,GAAa,GAEjDvnM,EAAK+2B,GAAKqxK,EAAMC,GAAGx0M,KAAO,GAC1Bm1M,EAAQ56M,EAAQq6M,EAAOL,EAAOh1N,EAAKm0N,GAAa,GAWxD,SAAkBt0P,EAASmgC,EAAKm0N,GAE5B,IAAI5zM,EAAO,EAAGE,EAAM,EACpB,GAA4B,MAAxB5gD,EAAQ2vD,eACgD,aAApDzO,iBAAiBlhD,EAAQ2vD,cAAcR,UACa,aAApDjO,iBAAiBlhD,EAAQ2vD,cAAcR,UAA0B,CACrE,IAAItsD,GAAO6sI,EAAAA,EAAAA,GAAkB1vI,EAAQ2vD,aAAc,OAAQ,OAAO,EAAO2kM,GACzE5zM,EAAO79C,EAAK69C,KACZE,EAAM/9C,EAAK+9C,GACf,CACA,IAAIo1M,EAAS,EACTC,EAAS,EACb,GAAIj2P,EAAQ2vD,aAAc,CACtB,IAAIumM,EAAiBh1M,iBAAiBlhD,EAAQ2vD,cAAcvO,UAC5D,GAAuB,SAAnB80M,EAA2B,CAC3B,IAAIp3B,EAAS,IAAIq3B,UAAUD,GAC3BF,EAASl3B,EAAO7iN,EAChBg6O,EAASn3B,EAAO5rM,CACpB,CACJ,CACAlzB,EAAQu0C,MAAMqM,IAAQzgB,EAAIgvB,SAASvO,IAAMq1M,EAAU91N,EAAImgB,QAAWM,EAAQ,KAC1E5gD,EAAQu0C,MAAMmM,KAASvgB,EAAIgvB,SAASzO,KAAOs1M,EAAU71N,EAAIggB,QAAWO,EAAS,IACjF,CA/BI01M,CAASp2P,EAASmgC,EAAKm0N,EArCvB,CAsCJ,CAsDA,SAAS/kH,EAAY8mH,EAASl2N,EAAKm0N,GAC/B+B,EAAQjB,GAAK,CAAEx0M,IAAKzgB,EAAIgvB,SAASvO,IAAMzgB,EAAImgB,QAASI,KAAMvgB,EAAIgvB,SAASzO,KAAOvgB,EAAIggB,SAClFk2M,EAAQhB,GAAK,CAAEz0M,IAAKy1M,EAAQjB,GAAGx0M,IAAKF,KAAM21M,EAAQjB,GAAG10M,KAAO4zM,EAAYvjM,OACxEslM,EAAQf,GAAK,CAAE10M,IAAKy1M,EAAQjB,GAAGx0M,IAAM0zM,EAAYtjM,OAC7CtQ,KAAM21M,EAAQjB,GAAG10M,MACrB21M,EAAQd,GAAK,CAAE30M,IAAKy1M,EAAQjB,GAAGx0M,IAAM0zM,EAAYtjM,OAC7CtQ,KAAM21M,EAAQjB,GAAG10M,KAAO4zM,EAAYvjM,MAC5C,CAOA,SAAS2jM,EAAiBh0M,EAAMC,GAE5B,IAAIk0M,GAAW,EAAOD,GAAY,EAOlC,OANMl0M,EAAO41M,IAAuB9C,MAChCqB,GAAW,GAEXl0M,EAAQ+yM,MACRkB,GAAY,GAET,CAAEC,SAAUA,EAAUD,UAAWA,EAC5C,CAWA,SAASkB,EAAS36M,EAAQy6M,EAAMT,EAAOh1N,EAAKm0N,EAAaiC,GACrD,IAAIC,EAAc9B,EAAiBkB,EAAKR,GAAG10M,KAAMk1M,EAAKP,GAAG30M,MACpDy0M,EAAMC,GAAG10M,KAAO41M,KAAwB9C,MACzCgD,EAAY3B,UAAW,GAEvBM,EAAME,GAAG30M,KAAOgzM,MAChB8C,EAAY5B,WAAY,IAEvB4B,EAAY3B,WAAa2B,EAAY5B,YAAgB4B,EAAY3B,UAAY2B,EAAY5B,aACzE,UAAbz0N,EAAIu1N,KACJv1N,EAAIu1N,KAAO,OAGXv1N,EAAIu1N,KAAO,QAEfv1N,EAAIggB,QAAUhgB,EAAIggB,QAAUm0M,EAAYvjM,MACxC5wB,EAAIggB,SAAW,EAAIhgB,EAAIggB,QACvBhgB,EAAIgvB,UAAWugF,EAAAA,EAAAA,GAAkBv0F,EAAQhb,EAAIu1N,KAAMv1N,EAAIw1N,MAAM,GAC7DpmH,EAAYqmH,EAAMz1N,EAAKm0N,GACnBiC,GACAT,EAAS36M,EAAQy6M,EAAMT,EAAOh1N,EAAKm0N,GAAa,GAG5D,CAWA,SAASyB,EAAQ56M,EAAQy6M,EAAMT,EAAOh1N,EAAKm0N,EAAaiC,GACpD,IAAIC,EAAchC,EAAgBoB,EAAKR,GAAGx0M,IAAKg1M,EAAKN,GAAG10M,KAClDu0M,EAAMC,GAAGx0M,IAAM61M,KAAuBzC,MACvCwC,EAAY7B,SAAU,GAEtBQ,EAAMG,GAAG10M,KAAOszM,KAAqB/4M,EAAO+E,wBAAwBW,OAASvjD,OAAO8zD,cACpFolM,EAAY1B,YAAa,IAExB0B,EAAY7B,UAAY6B,EAAY1B,aAAiB0B,EAAY7B,SAAW6B,EAAY1B,cACxE,QAAb30N,EAAIw1N,KACJx1N,EAAIw1N,KAAO,SAGXx1N,EAAIw1N,KAAO,MAEfx1N,EAAImgB,QAAUngB,EAAImgB,QAAUg0M,EAAYtjM,OACxC7wB,EAAImgB,SAAW,EAAIngB,EAAImgB,QACvBngB,EAAIgvB,UAAWugF,EAAAA,EAAAA,GAAkBv0F,EAAQhb,EAAIu1N,KAAMv1N,EAAIw1N,MAAM,EAAOrB,GACpE/kH,EAAYqmH,EAAMz1N,EAAKm0N,GACnBiC,GACAR,EAAQ56M,EAAQy6M,EAAMT,EAAOh1N,EAAKm0N,GAAa,GAG3D,CAOA,SAASE,EAAgB5zM,EAAKC,GAE1B,IAAI8zM,GAAU,EAAOG,GAAa,EAOlC,OANKl0M,EAAM61M,IAAsBzC,MAC7BW,GAAU,GAEV9zM,EAASqzM,MACTY,GAAa,GAEV,CAAEH,QAASA,EAASG,WAAYA,EAC3C,CAIA,SAASzB,IACL,OAAOR,EAAgB3yM,wBAAwB6Q,KACnD,CAIA,SAAS8iM,IACL,OAAOhB,EAAgB3yM,wBAAwB8Q,MACnD,CAIA,SAAS0lM,IACL,OAAO7D,EAAgB3yM,wBAAwBQ,IACnD,CAIA,SAASi2M,IACL,OAAO9D,EAAgB3yM,wBAAwBU,GACnD,CAEA,SAASozM,IACL,OAAInB,EACO8D,IAEJ,CACX,CAEA,SAASnD,IACL,OAAIX,EACO6D,IAEJ,CACX,CAEA,SAAShD,IACL,OAAIb,EACQyD,IAAsBI,IAA2BrD,IAErDiD,IAAsBhD,GAClC,CAEA,SAASY,IACL,OAAIrB,EACQ4D,IAAqBE,IAA0B9C,IAEnD4C,IAAqB3C,GACjC,CAIA,SAAS2C,IAGL,OAAO7D,EAAenyM,gBAAgBD,WAAaoyM,EAAezkN,KAAKqS,SAC3E,CAIA,SAAS81M,IAGL,OAAO1D,EAAenyM,gBAAgBJ,YAAcuyM,EAAezkN,KAAKkS,UAC5E,CAIA,SAASyzM,IACL,OAAOx2P,OAAO8zD,WAClB,CAIA,SAASkiM,IACL,IAAIsD,EAAct5P,OAAO+zD,WACrBwlM,EAAgBj3O,SAAS6gC,gBAAgBP,wBAE7C,OAAO02M,GAAeA,IADHjsO,EAAAA,EAAAA,IAAkB/K,SAAS6gC,iBAAoB,EAAIo2M,EAAc9lM,OAExF,gGCzaIujM,EACAwC,EACA92P,EACA4yP,YACAsC,GAAc,EAOX,SAAS3kC,EAA+B5mI,EAAQ3pF,GACnD,IAAI+2P,GAAe,EACfC,EAAY,CAAEt2M,KAAM,EAAGE,IAAK,GAC5Bq2M,EAAattK,EACjB,IAAKA,IAAW3pF,EACZ,OAAOg3P,EAKX,KAHIrsO,EAAAA,EAAAA,IAAkB3qB,EAAQ2vD,eAA4C,UAA3B3vD,EAAQu0C,MAAM4a,WACzD4nM,GAAe,IAEX/2P,EAAQ2vD,cAAgBonM,IAAiBptK,GAAU3pF,EAAQ2vD,eAAiBg6B,GAChFqtK,EAAUt2M,MAAQipC,EAAO74B,WACzBkmM,EAAUp2M,KAAO+oC,EAAO94B,UACxB84B,EAASA,EAAOh6B,aAGpB,IADAg6B,EAASstK,GACDj3P,EAAQ2vD,cAAgBonM,IAAiBptK,GAAU3pF,EAAQ2vD,eAAiBg6B,GAChFqtK,EAAUt2M,MAAQipC,EAAOtpC,WACzB22M,EAAUp2M,KAAO+oC,EAAOnpC,UACxBmpC,EAASA,EAAO1zB,cAEpB,OAAO+gM,CACX,CAUO,SAAStnH,EAAkBwnH,EAAgBlC,EAAWC,EAAWh/L,EAAekhM,GAInF,GAHAL,OAAY5+P,EACZ4+P,EAAYK,EACZjC,IAAcj/L,GACTihM,EACD,MAAO,CAAEx2M,KAAM,EAAGE,IAAK,GAEtBo0M,IACDA,EAAY,QAEXC,IACDA,EAAY,OAEhBrC,EAAiBsE,EAAelE,cAChChzP,EAAUk3P,EAEV,OA2BJ,SAAwBxB,EAAMC,EAAMx1N,GAEhC,OADAm0N,EAAct0P,EAAQkgD,wBACdy1M,EAAOD,GACX,IAAK,YACD0B,EAAQC,IAAqBl3N,GAC7Bm3N,EAAQC,IAAiBp3N,GACzB,MACJ,IAAK,WACDi3N,EAAQI,IAAmBr3N,GAC3Bm3N,EAAQC,IAAiBp3N,GACzB,MACJ,IAAK,eACDi3N,EAAQC,IAAqBl3N,GAC7Bm3N,EAAQG,IAAqBt3N,GAC7B,MACJ,IAAK,cACDi3N,EAAQI,IAAmBr3N,GAC3Bm3N,EAAQG,IAAqBt3N,GAC7B,MACJ,IAAK,aACDi3N,EAAQM,IAAkBv3N,GAC1Bm3N,EAAQG,IAAqBt3N,GAC7B,MACJ,IAAK,eACDi3N,EAAQC,IAAqBl3N,GAC7Bm3N,EAAQK,IAAoBx3N,GAC5B,MACJ,IAAK,cACDi3N,EAAQI,IAAmBr3N,GAC3Bm3N,EAAQK,IAAoBx3N,GAC5B,MACJ,IAAK,aACDi3N,EAAQM,IAAkBv3N,GAC1Bm3N,EAAQK,IAAoBx3N,GAC5B,MACJ,QAEIi3N,EAAQM,IAAkBv3N,GAC1Bm3N,EAAQC,IAAiBp3N,GAIjC,OADAngC,EAAU,KACHmgC,CACX,CAtEWy3N,CAAe5C,EAAU35P,cAAe45P,EAAU55P,cAD/C,CAAEqlD,KAAM,EAAGE,IAAK,GAE9B,CAOA,SAASw2M,EAAQ78P,EAAO4lC,GACpBA,EAAIugB,KAAOnmD,CACf,CAOA,SAAS+8P,EAAQ/8P,EAAO4lC,GACpBA,EAAIygB,IAAMrmD,CACd,CAuDA,SAASk8P,IACL,OAAO7D,EAAenyM,gBAAgBD,WAAaoyM,EAAezkN,KAAKqS,SAC3E,CAIA,SAAS81M,IACL,OAAO1D,EAAenyM,gBAAgBJ,YAAcuyM,EAAezkN,KAAKkS,UAC5E,CAIA,SAASs3M,IACL,OAAOzC,EAAcZ,EAAYzzM,OAASyzM,EAAYzzM,OAAS41M,GACnE,CAIA,SAASgB,IACL,OAAOF,IAAmBjD,EAAYtjM,OAAS,CACnD,CAIA,SAASumM,IACL,OAAOrC,EAAcZ,EAAY1zM,IAAM0zM,EAAY1zM,IAAM61M,GAC7D,CAIA,SAASiB,IACL,OAAOpD,EAAY5zM,KAAO41M,GAC9B,CAIA,SAASkB,IACL,IAAItqI,EAAcltH,IAAYA,EAAQ4zC,UAAUM,SAAS,mBAAqBl0C,EAAQ4zC,UAAUM,SAAS,uBAAyBl0C,EAAQ4zC,UAAUM,SAAS,yBAA2Bl0C,EAAQ4zC,UAAUM,SAAS,UAAYl0C,EAAQ4zC,UAAUM,SAAS,kBAAsB4iN,EAAYA,EAAU/lM,MAAQ,EACzS+lM,GAAcxC,EAAYvjM,OAAS+lM,EAAU/lM,MAAS+lM,EAAU/lM,MAAQ,EAC7E,OAAOujM,EAAY3zM,MAAQ21M,IAAsBppI,CACrD,CAIA,SAASmqI,IACL,OAAOK,IAAoBpD,EAAYvjM,MAAQ,CACnD,2EC3KIkzD,EACA4zI,EAOA3rH,EACAz/C,EACAw1H,EACAt8E,EACA4qG,EAKAunB,gCAxBAC,EAAe,CAAC,aAAc,QAAS,aAAc,OAAQ,OAAQ,aAAc,QAAS,cAC5FC,EAAiB,kBACjBC,EAAkB,mBAClBC,EAAmB,kBACnBC,EAAgB,CAAC,mBACjBC,EAAyB,oBACzBC,EAAqB,CAAC,QAAS,OAAQ,OAAQ,SAG/CC,EAAgB,EAChBC,EAAiB,EACjBC,EAAY,EACZC,EAAY,EACZC,EAAiB,EACjBC,EAAiB,EAMjBtkG,EAAc,KACd2wF,EAAS,KACT4T,EAAY,KAGZC,GAAU,EACVC,EAAgB,EAChBx5K,GAAW,EAwCf,SAASy5K,EAAmBt0K,GACxBu0K,IACA,IAAItsI,GAAe9+F,EAAAA,EAAAA,IAAc,OAAQ,CACrC2lB,MAAO,CACH,aAAgB,KAAM,gBAAmB,WAGjDm5E,EAAap5E,aAAa,QAAS,4BAA8BmxC,GAC/C,UAAdA,IACAioC,EAAan4E,MAAMyc,OAAS,MAC5B07D,EAAan4E,MAAMwc,MAAQ,OAC3B27D,EAAan4E,MAAMsM,OAAS,MAC5B6rE,EAAan4E,MAAMmM,KAAO,OAEZ,UAAd+jC,IACAioC,EAAan4E,MAAMyc,OAAS,MAC5B07D,EAAan4E,MAAMwc,MAAQ,OAC3B27D,EAAan4E,MAAMqM,IAAM,MACzB8rE,EAAan4E,MAAMmM,KAAO,OAEZ,SAAd+jC,IACAioC,EAAan4E,MAAMyc,OAAS,OAC5B07D,EAAan4E,MAAMwc,MAAQ,MAC3B27D,EAAan4E,MAAMoM,MAAQ,MAC3B+rE,EAAan4E,MAAMqM,IAAM,OAEX,SAAd6jC,IACAioC,EAAan4E,MAAMyc,OAAS,OAC5B07D,EAAan4E,MAAMwc,MAAQ,MAC3B27D,EAAan4E,MAAMmM,KAAO,MAC1BgsE,EAAan4E,MAAMqM,IAAM,OAE7BqjE,EAAc91F,YAAYu+F,EAC9B,CAMA,SAASusI,EAAcj5P,GACnB,IAAIk5P,EASJ,OARKprN,EAAAA,EAAAA,IAAM9tC,KAEHk5P,EADqB,kBAAbl5P,EACK4f,SAAS2P,cAAcvvB,GAGvBA,GAGdk5P,CACX,CAEA,SAAS3iM,EAAWtrD,IACZ6iC,EAAAA,EAAAA,IAAM7iC,KACNA,EAAO+R,MAGX,IADA,IAAIm8O,EAAWl1I,EAAcn2F,iBAAiB,IAAMkqO,GAC3C71O,EAAI,EAAGA,EAAIg3O,EAASlkQ,OAAQktB,IAAK,CACtC01O,EAAkBsB,EAASh3O,GAC3B6vB,EAAAA,GAAaG,IAAI0lN,EAAiB,YAAauB,EAAanuP,GAC5D,IAAImnC,EAAmC,SAAtBxC,EAAAA,GAAQyB,KAAKj8C,KAAmB,cAAgB,aACjE48C,EAAAA,GAAaG,IAAI0lN,EAAiBzlN,EAAWinN,EAAcpuP,EAC/D,CACA,IAAIquP,EAAiBr1I,EAAcn2F,iBAAiB,2BACpD,KAAKggB,EAAAA,EAAAA,IAAMwrN,GACP,IAASn3O,EAAI,EAAGA,EAAIm3O,EAAerkQ,OAAQktB,IAAK,CAC5C01O,EAAkByB,EAAen3O,GACjC6vB,EAAAA,GAAaG,IAAI0lN,EAAiB,YAAauB,EAAanuP,GACxDmnC,EAAmC,SAAtBxC,EAAAA,GAAQyB,KAAKj8C,KAAmB,cAAgB,aACjE48C,EAAAA,GAAaG,IAAI0lN,EAAiBzlN,EAAWinN,EAAcpuP,EAC/D,CAER,CAOA,SAASsuP,EAAa9gQ,GAClB,OAAQA,EAAE6a,QAAQ,UAAY,EAAK,QAAU,OACjD,CAOA,SAAS8lP,EAAY3gQ,GAOjB,GANAA,EAAEi1D,iBACFu2D,EAAgBxrH,EAAE0iD,OAAO8a,cACzB+iM,IACAN,EAAiBjgQ,EAAE2nD,MACnBu4M,EAAiBlgQ,EAAE8nD,MACnB9nD,EAAE0iD,OAAOvH,UAAUzB,IAAI8lN,IAClBnqN,EAAAA,EAAAA,IAAMumH,KAEuB,IAA1BA,EAAY57J,EADRukB,MADZ,CAMIA,KAAKs0I,WAAartC,GAAiBA,EAAc10F,cAAc,IAAM2oO,KACrE3nB,EAAoC,SAAjBvzN,KAAKm+B,OAA0D,KAAOn+B,KAAKs0I,UAC9F3rB,EAAW3oH,KAAKs0I,UAAU77F,YAC1Bg3B,EAAYzvE,KAAKs0I,UAAUz9F,cAE/B,IAAI1Y,GAAUrN,EAAAA,EAAAA,IAAMyiM,GAAqB3wN,SAAW2wN,EACpDv+L,EAAAA,GAAaG,IAAIgJ,EAAQ,YAAaq+M,EAAax8O,MACnDg1B,EAAAA,GAAaG,IAAIvyB,SAAU,UAAW65O,EAAWz8O,MACjD,IAAK,IAAImF,EAAI,EAAGA,EAAIg2O,EAAcljQ,OAAQktB,IAElC02O,GADA50I,EAAcrwE,UAAUM,SAASikN,EAAch2O,GAVvD,CAiBJ,CAOA,SAASs3O,EAAUhhQ,GACf,IAAIo5C,EAAwC,SAAtBjC,EAAAA,GAAQyB,KAAKj8C,KAAmB,cAAgB,YAClE08C,EAAuC,SAAtBlC,EAAAA,GAAQyB,KAAKj8C,KAAmB,YAAc,WAC/D+lD,GAAUrN,EAAAA,EAAAA,IAAMyiM,GAAqB3wN,SAAW2wN,EAChDn+L,EAAmC,SAAtBxC,EAAAA,GAAQyB,KAAKj8C,KAAmB,cAAgB,aACjE48C,EAAAA,GAAaW,OAAOwI,EAAQ,YAAaq+M,GACzCxnN,EAAAA,GAAaW,OAAOwI,EAAQtJ,EAAgB2nN,GAC5CxnN,EAAAA,GAAaW,OAAOwI,EAAQ/I,EAAWonN,IAClC1rN,EAAAA,EAAAA,IAAMluB,SAASuuB,KAAK5e,cAAc,IAAM0oO,KACzCr4O,SAASuuB,KAAK5e,cAAc,IAAM0oO,GAAiBrkN,UAAUjB,OAAOslN,IAEnEnqN,EAAAA,EAAAA,IAAM8qN,IAEPA,EAAUngQ,EADFukB,MAGZg1B,EAAAA,GAAaW,OAAO/yB,SAAU,UAAW65O,GACzCznN,EAAAA,GAAaW,OAAO/yB,SAAUkyB,EAAe2nN,EACjD,CAKA,SAAST,IACLV,EAAgBr1N,WAAWie,iBAAiB+iE,EAAe,MAAM9iE,iBAAiB,SAAS1tC,QAAQ,KAAM,KACzG8kP,EAAiBt1N,WAAWie,iBAAiB+iE,EAAe,MAAM9iE,iBAAiB,UAAU1tC,QAAQ,KAAM,KAC3G+kP,EAAYv0I,EAAc/jE,wBAAwBQ,KAClD+3M,EAAYx0I,EAAc/jE,wBAAwBU,GACtD,CAOA,SAASy4M,EAAa5gQ,GAClBwrH,EAAgBxrH,EAAE0iD,OAAO8a,cACzB+iM,IACA,IAAIU,EAAsBz1I,EAAcrwE,UAAUM,SAAS,aACtDz7C,EAAE0iD,OAAOvH,UAAUM,SAAS8jN,IAAmBv/P,EAAE0iD,OAAOvH,UAAUM,SAAS,4BAA8BwlN,GAC1GjhQ,EAAE0iD,OAAOvH,UAAUzB,IAAI8lN,GAE3B,IAAI0B,EAAclhQ,EAAEyoM,QAAUzoM,EAAEk1D,eAAe,GAAKl1D,EAGpD,GAFAigQ,EAAiBiB,EAAYv5M,MAC7Bu4M,EAAiBgB,EAAYp5M,OACxBzS,EAAAA,EAAAA,IAAMumH,KAEuB,IAA1BA,EAAY57J,EADRukB,MADZ,CAMA,IAAI60B,EAAwC,SAAtBjC,EAAAA,GAAQyB,KAAKj8C,KAAmB,cAAgB,YAClE08C,EAAuC,SAAtBlC,EAAAA,GAAQyB,KAAKj8C,KAAmB,YAAc,WAC/D+lD,GAAUrN,EAAAA,EAAAA,IAAMyiM,GAAqB3wN,SAAW2wN,EACpDv+L,EAAAA,GAAaG,IAAIgJ,EAAQtJ,EAAgB2nN,EAAax8O,MACtDg1B,EAAAA,GAAaG,IAAIvyB,SAAUkyB,EAAe2nN,EAAWz8O,KALrD,CAMJ,CAOA,SAASw8O,EAAY/gQ,GAOjB,GANIA,EAAE0iD,OAAOvH,UAAUM,SAAS8jN,IAAmBv/P,EAAE0iD,OAAOvH,UAAUM,SAAS+jN,GAC3EJ,EAAkBp/P,EAAE0iD,QAEdrN,EAAAA,EAAAA,IAAMluB,SAASuuB,KAAK5e,cAAc,IAAM0oO,MAC9CJ,EAAkBj4O,SAASuuB,KAAK5e,cAAc,IAAM0oO,MAEnDnqN,EAAAA,EAAAA,IAAM+pN,GAAkB,CAEzB,IADA,IAAI+B,EAAgB,GACXz3O,EAAI,EAAGA,EAAI41O,EAAa9iQ,OAAQktB,IACjC01O,EAAgBjkN,UAAUM,SAAS,KAAO6jN,EAAa51O,MACvDy3O,EAAgB7B,EAAa51O,IAOrC,QAJK2rB,EAAAA,EAAAA,IAAMk3M,IAEPA,EAAOvsP,EADCukB,MAGJ48O,GACJ,IAAK,QACDC,EAAYphQ,GACZ,MACJ,IAAK,QACDqhQ,EAAYrhQ,GACZ,MACJ,IAAK,OACDshQ,EAAWthQ,GACX,MACJ,IAAK,OACDuhQ,EAAWvhQ,GACX,MACJ,IAAK,aACDohQ,EAAYphQ,GACZuhQ,EAAWvhQ,GACX,MACJ,IAAK,aACDohQ,EAAYphQ,GACZshQ,EAAWthQ,GACX,MACJ,IAAK,aACDqhQ,EAAYrhQ,GACZuhQ,EAAWvhQ,GACX,MACJ,IAAK,aACDqhQ,EAAYrhQ,GACZshQ,EAAWthQ,GAIvB,CACJ,CAOA,SAASwhQ,EAAoBj6P,GACzB,OAAOA,EAAQkgD,uBACnB,CAGA,SAAS25M,EAAYphQ,GACjB,IAKIyhQ,EALAC,EAAiBv6O,SAAS6gC,gBAAgBoT,aAC1CumM,GAAiB,EAEjBC,GADc5hQ,EAAEyoM,QAAUzoM,EAAEk1D,eAAe,GAAKl1D,GACrB8nD,MAC3B+5M,EAAmBL,EAAoBh2I,IAEtCn2E,EAAAA,EAAAA,IAAMyiM,KACP2pB,EAAsBD,EAAoB1pB,KAEzCziM,EAAAA,EAAAA,IAAMyiM,IAGFziM,EAAAA,EAAAA,IAAMyiM,KAAuB4pB,EAAiBE,GAAiB,GAAMC,EAAiB15M,IAAM,KACjGw5M,GAAiB,GAHjBA,GAAiB,EAKrB,IAAIG,EAAmBhC,GAAkB8B,EAAe1B,GACxD4B,EAAoBA,EAAmBruH,EAAaquH,EAAmBruH,EACvE,IAAI6nH,EAAe,GACdjmN,EAAAA,EAAAA,IAAMyiM,KACPwjB,EAAemG,EAAoBt5M,KAEvC,IAAI45M,GAAc1sN,EAAAA,EAAAA,IAAMyiM,GAAoB,EAAIA,EAAiBt/K,aAAes/K,EAAiB18K,aAC7F4mM,EAAoBH,EAAiB15M,IAAMmzM,EAAiByG,EAAc,EAE9E,GADAC,EAAoBA,EAAmB,EAAK,EAAIA,EAC5CH,EAAiB15M,IAAM,GAAM65M,EAAmBF,EAAoB9tK,EAAxE,CAEI,GADA2tK,GAAiB,EACbn2I,EAAcrwE,UAAUM,SAASkkN,GACjC,OAEJn0I,EAAc1vE,MAAMyc,OAAUy7B,EAAYvwF,SAASu+P,EAAiBriQ,WAAY,IAAO,IAE3F,KAPA,CAQA,IAAIsiQ,EAAY,EAChB,GAAIN,EAAgB,CACZE,EAAiB15M,IAAM,GAAMu5M,GAAkBG,EAAiBtpM,OAASspM,EAAiB15M,KAAO,GAE5F25M,GADLG,EAAYJ,EAAiB15M,MACS,KAClC25M,EAAoBD,EAAiBtpM,QAAUspM,EAAiBtpM,OAASspM,EAAiB15M,KAAQ,IAGpG25M,EAAmBD,EAAiB15M,KAAQ6rC,IAC9Cw3B,EAAc1vE,MAAMyc,OAASspM,EAAiBtpM,QACzCmpM,GAAkBG,EAAiBtpM,OAASspM,EAAiB15M,MAAQ,MAE9E,IAAI+5M,GAAiB7sN,EAAAA,EAAAA,IAAMyiM,GAAqBmqB,EAAYD,EACxDF,GAAoBruH,GAAequH,EAAmBI,GAAkBluK,IACxEw3B,EAAc1vE,MAAMyc,OAASupM,EAAmB,KAExD,CAjBA,CAkBJ,CAGA,SAAST,EAAYrhQ,GACjB,IACImiQ,EADAR,GAAiB,EAEjB75M,EAAkC,UAAzBg5M,EAAa9gQ,EAAEnB,MAAqBmB,EAAE8nD,MAAQ9nD,EAAEyoM,QAAQ,GAAG3gJ,MACpE+5M,EAAmBL,EAAoBh2I,IACtCn2E,EAAAA,EAAAA,IAAMyiM,KACPqqB,EAAqBX,EAAoB1pB,OAExCziM,EAAAA,EAAAA,IAAMyiM,IAAsB+pB,EAAiB15M,IAAMg6M,EAAmBh6M,IAAO,IAGzE9S,EAAAA,EAAAA,IAAMyiM,IAAqBhwL,EAAQ,KAFxC65M,GAAiB,GAKrB,IAAIS,EAAgBtC,GAAkBh4M,EAAQo4M,GAC9C,GAAIyB,GACIS,GAAiB3uH,GAAa2uH,GAAiBpuK,EAAW,CAC1D,IAAIsnK,EAAe,GACdjmN,EAAAA,EAAAA,IAAMyiM,KACPwjB,EAAe6G,EAAmBh6M,KAEtC,IAAIu/H,EAASs4E,EAAY1E,GAAiBxzM,EAAQo4M,GAClDx4E,EAAQA,EAAQ,EAAIA,EAAQ,EAC5Bl8D,EAAc1vE,MAAMyc,OAAS6pM,EAAgB,KAC7C52I,EAAc1vE,MAAMqM,IAAMu/H,EAAQ,IACtC,CAER,CAGA,SAAS45E,EAAWthQ,GAChB,IAEIqiQ,EAFAC,EAAgBn7O,SAAS6gC,gBAAgBgV,YACzC2kM,GAAiB,GAEhBtsN,EAAAA,EAAAA,IAAMyiM,KACPuqB,EAAab,EAAoB1pB,IAErC,IAAInwL,EAAkC,UAAzBm5M,EAAa9gQ,EAAEnB,MAAqBmB,EAAE2nD,MAAQ3nD,EAAEyoM,QAAQ,GAAG9gJ,MACpEk6M,EAAmBL,EAAoBh2I,GACvCu2I,GAAc1sN,EAAAA,EAAAA,IAAMyiM,GAAoB,EAAIA,EAAiB97L,YAAc87L,EAAiB96K,YAE5F/U,GAAO5S,EAAAA,EAAAA,IAAMyiM,GAAoB,EAAIuqB,EAAWp6M,KAChD0yM,GAAiBtlN,EAAAA,EAAAA,IAAMyiM,GAAoB,EAAIuqB,EAAW/pM,OAE1DjjB,EAAAA,EAAAA,IAAMgqN,MACDhqN,EAAAA,EAAAA,IAAMyiM,GAKPunB,EAAkBiD,GAJlBjD,EAAqBwC,EAAiB55M,KAAOA,EAAQ85M,EAAc,EAAMF,EAAiBvpM,MAC1F+mM,GAAqC1E,EAAiBoH,EAAc1C,OAMvEhqN,EAAAA,EAAAA,IAAMyiM,IACN1xN,KAAKiU,MAAOwnO,EAAiB55M,KAAOo6M,EAAWp6M,KAAQ45M,EAAiBvpM,OACpE+pM,EAAWn6M,MAAQ25M,EAAiB35M,QAAU65M,GAAgB70H,IAG9D73F,EAAAA,EAAAA,IAAMyiM,IAAqBnwL,GAAS,KAFzCg6M,GAAiB,GAKrB,IAAIY,EAAkB1C,GAAiBl4M,EAAQs4M,GAI/C,GAHIG,IACAmC,EAAmBA,EAAkBlD,EAAmBA,EAAkBkD,GAE1EZ,GACIY,GAAmB/4C,GAAY+4C,GAAmBr1H,EAAU,CAC5D,IAAI4tH,EAAgB,GACfzlN,EAAAA,EAAAA,IAAMyiM,KACPgjB,EAAgBuH,EAAWp6M,MAE/B,IAAIu6M,EAAUzC,EAAYjF,GAAkBnzM,EAAQs4M,GACpDuC,EAAUA,EAAS,EAAKA,EAAS,EAC7BD,IAAoBlC,GAAiBx5K,IACrC2kC,EAAc1vE,MAAMwc,MAAQiqM,EAAkB,MAE9CnC,IACA50I,EAAc1vE,MAAMmM,KAAOu6M,EAAS,KAEhC37K,EADW,IAAX27K,EAOZ,CAEJnC,EAAgBkC,CACpB,CAGA,SAAShB,EAAWvhQ,GAChB,IAEIyhQ,EAFAa,EAAgBn7O,SAAS6gC,gBAAgBgV,YACzC2kM,GAAiB,GAEhBtsN,EAAAA,EAAAA,IAAMyiM,KACP2pB,EAAsBD,EAAoB1pB,IAE9C,IACInwL,GADc3nD,EAAEyoM,QAAUzoM,EAAEk1D,eAAe,GAAKl1D,GAC5B2nD,MACpBk6M,EAAmBL,EAAoBh2I,MACtCn2E,EAAAA,EAAAA,IAAMyiM,KAAwB+pB,EAAiB55M,KAAOw5M,EAAoBx5M,KAAQ45M,EAAiBvpM,OAAU40E,GAC1G20H,EAAiB35M,MAAQu5M,EAAoBx5M,MAAS45M,EAAiBvpM,SAGtEjjB,EAAAA,EAAAA,IAAMyiM,IAAsBwqB,EAAgB36M,EAAS,KAF1Dg6M,GAAiB,GAKrB,IAAIY,EAAkB1C,GAAiBl4M,EAAQs4M,GAC3CnF,EAAgB,EAIpB,IAHKzlN,EAAAA,EAAAA,IAAMyiM,KACPgjB,EAAgB2G,EAAoBx5M,MAElC45M,EAAiB55M,KAAO6yM,EAAiByH,EAAmBr1H,EAAU,CAExE,GADAy0H,GAAiB,EACbn2I,EAAcrwE,UAAUM,SAASkkN,GACjC,OAEJn0I,EAAc1vE,MAAMwc,MAAQ40E,GAAY20H,EAAiB55M,KAAO6yM,GAAiB,IACrF,CACI6G,GACIY,GAAmB/4C,GAAY+4C,GAAmBr1H,IAClD1hB,EAAc1vE,MAAMwc,MAAQiqM,EAAkB,KAG1D,CA6BO,SAASE,IAEZ,IADA,IAAIvnC,EAAW1vG,EAAcn2F,iBAAiB,IAAMkqO,GAC3C71O,EAAI,EAAGA,EAAIwxM,EAAS1+N,OAAQktB,KACjCozB,EAAAA,EAAAA,IAAOo+K,EAASxxM,IAEpB,IAAIm3O,EAAiBr1I,EAAcn2F,iBAAiB,2BACpD,KAAKggB,EAAAA,EAAAA,IAAMwrN,GACP,IAASn3O,EAAI,EAAGA,EAAIm3O,EAAerkQ,OAAQktB,KACvCozB,EAAAA,EAAAA,IAAO+jN,EAAen3O,GAGlC,CC1hBA,IA2pDWg5O,EA3pDP5+M,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAazCC,EAA0C,SAAUC,EAAYzB,EAAQn/C,EAAK6gD,GAC7E,IAA2H3pB,EAAvHD,EAAI5X,UAAUpmB,OAAQ4O,EAAIovB,EAAI,EAAIkoB,EAAkB,OAAT0B,EAAgBA,EAAOhhD,OAAOihD,yBAAyB3B,EAAQn/C,GAAO6gD,EACrH,GAAuB,kBAAZ/gC,SAAoD,oBAArBA,QAAQihC,SAAyBl5C,EAAIiY,QAAQihC,SAASH,EAAYzB,EAAQn/C,EAAK6gD,QACpH,IAAK,IAAI16B,EAAIy6B,EAAW3nD,OAAS,EAAGktB,GAAK,EAAGA,KAAS+Q,EAAI0pB,EAAWz6B,MAAIte,GAAKovB,EAAI,EAAIC,EAAErvB,GAAKovB,EAAI,EAAIC,EAAEioB,EAAQn/C,EAAK6H,GAAKqvB,EAAEioB,EAAQn/C,KAAS6H,GAChJ,OAAOovB,EAAI,GAAKpvB,GAAKhI,OAAOs1C,eAAegK,EAAQn/C,EAAK6H,GAAIA,CAChE,EASIu3P,EAA6B,SAAU3yO,GAEvC,SAAS2yO,IACL,OAAkB,OAAX3yO,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAaA,OAhBAu/B,EAAU6+M,EAAa3yO,GAIvBk0B,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVkgN,EAAY/+O,UAAW,cAAU,GACpCsgC,EAAW,EACPzB,EAAAA,EAAAA,OACDkgN,EAAY/+O,UAAW,mBAAe,GACzCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,WACVkgN,EAAY/+O,UAAW,YAAQ,GAClCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACD4uO,EAAY/+O,UAAW,aAAS,GAC5B++O,CACX,CAlBiC,CAkB/Bl4M,EAAAA,IAKEm4M,EAAmC,SAAU5yO,GAE7C,SAAS4yO,IACL,OAAkB,OAAX5yO,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAUA,OAbAu/B,EAAU8+M,EAAmB5yO,GAI7Bk0B,EAAW,EACPzB,EAAAA,EAAAA,IAAS,SACVmgN,EAAkBh/O,UAAW,cAAU,GAC1CsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,MACVmgN,EAAkBh/O,UAAW,gBAAY,GAC5CsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,IACVmgN,EAAkBh/O,UAAW,aAAS,GAClCg/O,CACX,CAfuC,CAerCn4M,EAAAA,IAEEumB,EAAO,WACP3E,GAAM,QACNw2L,GAAqB,uBACrBC,GAAa,eACbC,GAAqB,mBACrBC,GAAY,cAEZC,GAAiB,mBAEjBC,GAAa,eAEbC,GAAkB,oBAIlBlyL,GAAS,WACTmyL,GAAa,mBACbC,GAAqB,sBAErBC,GAAW,eACXC,GAAyB,cACzBC,GAAgB,oBAChBC,GAAiB,iBACjBC,GAAmB,mBACnBC,GAAgB,kBAChBC,GAA0B,kBAC1BC,GAA2B,oBAE3BC,GAAyB,cAkBzBl6H,GAAwB,SAAU55G,GASlC,SAAS45G,EAAO3kH,EAAS1d,GACrB,IAAIgtB,EAAQvE,EAAO/L,KAAKM,KAAMU,EAAS1d,IAAYgd,KAEnD,OADAgQ,EAAMy6B,SAAU,EACTz6B,CACX,CAshDA,OAliDAuvB,EAAU8lF,EAAQ55G,GAmBlB45G,EAAOhmH,UAAUisC,OAAS,WACtBtrC,KAAKyvC,aACLzvC,KAAKw/O,aACLx/O,KAAKu5C,aACc,SAAfv5C,KAAK+zC,QACL/zC,KAAKhd,QAAQu0C,MAAMwc,MAAQ,IAER,KAAnB/zC,KAAKkvH,YACLlvH,KAAKhd,QAAQu0C,MAAM23F,WAAYp9G,EAAAA,EAAAA,IAAW9R,KAAKkvH,YAE/ClvH,KAAKy/O,eACLz/O,KAAK0/O,YACiC,SAAlC1/O,KAAK4lH,kBAAkB9zD,QACvB9xD,KAAK2/O,gBAGb3/O,KAAKqsC,gBACT,EACAg5E,EAAOhmH,UAAUugP,gBAAkB,WAC/B5/O,KAAK6/O,YAAcN,EACvB,EAOAl6H,EAAOhmH,UAAU+rC,UAAY,WACzB,IAAIp7B,EAAQhQ,KACZA,KAAK4/O,kBACL5/O,KAAK6wM,cAAgB,KACrB7wM,KAAK8/O,gBAAiB,EACtB9/O,KAAK+/O,mBAAoB,EACzB//O,KAAKggP,UAAYhgP,KAAKhd,QAAQouB,WAAU,GACxCpR,KAAKigP,2BAA6B,SAAUl+P,GACxCiuB,EAAM6vO,YAxEU,aAyEhB7vO,EAAMi1D,KAAKljF,EACf,EACAie,KAAKkgP,4BAA8B,SAAUn+P,GACzCiuB,EAAM6vO,YA1EY,eA2ElB99P,EAAMkjH,cAAe,EACrBj1F,EAAM8lB,QAAQ,eAAgB/zC,GAAO,SAAUo+P,GACtCA,EAAsBl7I,cACvBj1F,EAAMi6L,eAEVj6L,EAAM6vO,YAAcN,EACxB,GACJ,EAIA,GAFAv/O,KAAK+hE,KAAO,IAAIvmB,EAAAA,GAAK,SADJ,CAAEhqC,MAAO,SACiBxR,KAAKwpB,QAChDxpB,KAAKogP,qBACDzyO,EAAAA,EAAAA,IAAkB3N,KAAKm+B,QAAS,CAChC,IAAIkiN,EAAergP,KAAKi6B,oBACxBj6B,KAAKi6B,qBAAsB,EAC3Bj6B,KAAKm+B,OAASv7B,SAASuuB,KACvBnxB,KAAKi6B,oBAAsBomN,CAC/B,CACJ,EACAh7H,EAAOhmH,UAAUihP,kBAAoB,WAC7BtgP,KAAKgrC,mBACLhrC,KAAK26B,cAAc,CAAEoZ,MAAO9tB,WAAWjmB,KAAKhd,QAAQu0C,MAAMwc,OAAQC,OAAQ/tB,WAAWjmB,KAAKhd,QAAQu0C,MAAMyc,QACpG7B,SAAU,CAAE00B,EAAG5gD,WAAWjmB,KAAKugP,QAAQv9P,QAAQu0C,MAAMmM,MAAOojC,EAAG7gD,WAAWjmB,KAAKugP,QAAQv9P,QAAQu0C,MAAMqM,QAAU,EAE3H,EACAyhF,EAAOhmH,UAAUmhP,cAAgB,SAAUjjQ,GAEvC,MADe,mBAAmBuqB,KAAKvqB,EAE3C,EACA8nI,EAAOhmH,UAAU+gP,kBAAoB,WACjC,KAAKzyO,EAAAA,EAAAA,IAAkB3N,KAAKmyC,UAAW,CACnC,KAAKxkC,EAAAA,EAAAA,IAAkB3N,KAAKmyC,SAAS00B,IAAoC,kBAArB7mE,KAAKmyC,SAAS00B,EAE9D,GADe7mE,KAAKwgP,cAAcxgP,KAAKmyC,SAAS00B,GAClC,CACV,IAAIw5K,EAAergP,KAAKi6B,oBACxBj6B,KAAKi6B,qBAAsB,EAC3Bj6B,KAAKmyC,SAAS00B,EAAI5gD,WAAWjmB,KAAKmyC,SAAS00B,GAC3C7mE,KAAKi6B,oBAAsBomN,CAC/B,CAEJ,KAAK1yO,EAAAA,EAAAA,IAAkB3N,KAAKmyC,SAAS20B,IAAoC,kBAArB9mE,KAAKmyC,SAAS20B,EAE9D,GADe9mE,KAAKwgP,cAAcxgP,KAAKmyC,SAAS20B,GAClC,CACNu5K,EAAergP,KAAKi6B,oBACxBj6B,KAAKi6B,qBAAsB,EAC3Bj6B,KAAKmyC,SAAS20B,EAAI7gD,WAAWjmB,KAAKmyC,SAAS20B,GAC3C9mE,KAAKi6B,oBAAsBomN,CAC/B,CAER,CACJ,EACAh7H,EAAOhmH,UAAUohP,OAAS,SAAUxnN,EAAMN,GAEtC,IADA,IAAI31C,OAAU9H,EACLiqB,EAAI,EAAGA,EAAI8zB,EAAKhhD,OAAQktB,IAC7B,GAAI8zB,EAAK9zB,GAAGyxB,UAAUM,SAASyB,GAAW,CACtC31C,EAAUi2C,EAAK9zB,GACf,KACJ,CAEJ,OAAOniB,CACX,EAEAqiI,EAAOhmH,UAAUsgP,aAAe,WAC5B,IAAIe,EAAuB,MACvBC,EAAuB,OACtBhzO,EAAAA,EAAAA,IAAkB3N,KAAKhd,QAAQuvB,cAAc,IAAM+rO,OACpDoC,EAAuBx8M,iBAAiBlkC,KAAK6wM,eAAe78J,QAEhE,IAAI4sM,EAAY5gP,KAAKygP,OAAOzgP,KAAKhd,QAAQpL,SAAU4mQ,KAC9C7wO,EAAAA,EAAAA,IAAkBizO,KACnBD,EAAuBz8M,iBAAiB08M,GAAW5sM,QAEvD,IDqQqB6sM,ECrQjBC,EAAe5hQ,SAASwhQ,EAAqBrjP,MAAM,EAAGqjP,EAAqBpqP,QAAQ,MAAO,IAC1FyqP,EAAe7hQ,SAASyhQ,EAAqBtjP,MAAM,EAAGsjP,EAAqBrqP,QAAQ,MAAO,IAE9F,ODkQqBuqP,ECnQRC,EAAe,IAAMhnO,MAAMinO,GAAgB,EAAIA,GDoQhE7xH,EAAY2xH,ECnQAC,EAAe,GAAKC,CAChC,EACA17H,EAAOhmH,UAAU2hP,cAAgB,SAAU/yP,EAAMkvH,GAE7C,OADAA,EAAUrnF,QAAQ,cAAe7nC,GAC1BA,EAAK1G,MAChB,EACA89H,EAAOhmH,UAAU4hP,WAAa,SAAUhzP,EAAMkvH,GAC1CA,EAAUrnF,QAAQ,WAAY7nC,EAClC,EACAo3H,EAAOhmH,UAAU6hP,iBAAmB,SAAUjzP,EAAMkvH,GAChDA,EAAUrnF,QAAQ,aAAc7nC,GAChC+R,KAAKsgP,mBACT,EACAj7H,EAAOhmH,UAAUqgP,UAAY,WACzB,GAAI1/O,KAAKy/O,aAAc,CACnB,GAAIz/O,KAAKmhP,0BAA2BxzO,EAAAA,EAAAA,IAAkB3N,KAAKhd,QAAQuvB,cAAc,6BAC7E,OAEJvS,KAAKhd,QAAQ4zC,UAAUzB,IAAIiqN,IAI3B,IAHA,IAAIgC,EAAiBl9M,iBAAiBlkC,KAAKhd,SAASksI,UAChDmyH,EAAgBn9M,iBAAiBlkC,KAAKhd,SAASiiN,SAC/Cx9H,EAAY,GACPtiE,EAAI,EAAGA,EAAInF,KAAKshP,cAAcrpQ,OAAQktB,IAAK,CAChD,GAA8B,QAA1BnF,KAAKshP,cAAcn8O,GAAc,CACjCsiE,EAAY,oEACZ,KACJ,CAEI,IAAI85K,EAAiB,GACrB,OAAQvhP,KAAKshP,cAAcn8O,GAAG/pB,YAC1B,IAAK,YACDmmQ,EAAiB,aACjB,MACJ,IAAK,YACDA,EAAiB,aACjB,MACJ,IAAK,YACDA,EAAiB,aACjB,MACJ,IAAK,YACDA,EAAiB,aACjB,MACJ,QACIA,EAAiBvhP,KAAKshP,cAAcn8O,GAAG/pB,WAG/CqsF,GAAa85K,EAAe/oJ,oBAAsB,GAE1D,CACIx4F,KAAK2qC,WAAkC,eAArB88B,EAAUxsB,OAC5BwsB,EAAY,aAEPznE,KAAK2qC,WAAkC,eAArB88B,EAAUxsB,SACjCwsB,EAAY,cAEZznE,KAAK8lH,SAAW9lH,KAAK2qC,UACrB3qC,KAAKhd,QAAQ4zC,UAAUzB,IAAIkqN,IAEtBr/O,KAAK8lH,SAAW9lH,KAAKm+B,SAAWv7B,SAASuuB,MAC9CnxB,KAAKhd,QAAQ4zC,UAAUzB,IAAImqN,ID1QpC,SAAsBrxP,GACzBopJ,EAAcppJ,EAAKuzP,YACnBxZ,EAAS/5O,EAAKwzP,SACd7F,EAAY3tP,EAAKyzP,eACjBz6I,EAAgBg1I,EAAchuP,EAAKjL,SACnCuwO,EAAmB0oB,EAAchuP,EAAK0zP,UAEtC,IADA,IAAIC,EAAa3zP,EAAKw5E,UAAUxzE,MAAM,KAC7BkR,EAAI,EAAGA,EAAIy8O,EAAW3pQ,OAAQktB,IACnC,GAAIk2O,EAAmB/kP,QAAQsrP,EAAWz8O,KAAO,GAAKy8O,EAAWz8O,GAC7D42O,EAAmB6F,EAAWz8O,SAE7B,GAA6B,KAAzBy8O,EAAWz8O,GAAG81C,OAAe,CAClC,IAAI4mM,GAAgBjxO,EAAAA,EAAAA,IAAc,MAAO,CAAE31B,UAAW,WAAa+/P,EAAb,MAA2C4G,EAAWz8O,KAC5G8hG,EAAc91F,YAAY0wO,EAC9B,CAEJ3yH,EAAYjhI,EAAKihI,UACjB+1E,EAAWh3M,EAAKg3M,SAChBt8E,EAAW16H,EAAK06H,SAChBl5C,EAAYxhF,EAAKwhF,UACbxhF,EAAKm9D,OAASn9D,EAAKm9D,MAAMpoE,SAAWiL,EAAKm9D,MAAMpoE,QAAQ4zC,UAAUM,SAAS,YAC1EqiB,EAAWtrD,EAAKm9D,OAGhB7R,GAER,CCkPYuoM,CAAa,CACT9+P,QAASgd,KAAKhd,QACdykF,UAAWA,EACXynD,UAAWhwI,SAASkiQ,EAAe/jP,MAAM,EAAGgkP,EAAc/qP,QAAQ,MAAO,IACzEm5E,UAAWzvE,KAAKs0I,UAAUz9F,aAC1BouJ,SAAU/lN,SAASmiQ,EAAchkP,MAAM,EAAGgkP,EAAc/qP,QAAQ,MAAO,IACvEqyH,SAAU3oH,KAAKs0I,UAAU77F,YACzBkpM,SAAU3hP,KAAKm+B,SAAWv7B,SAASuuB,KAAO,KAAOnxB,KAAKs0I,UACtDktG,YAAaxhP,KAAKghP,cAAchiP,KAAKgB,MACrC0hP,eAAgB1hP,KAAKkhP,iBAAiBliP,KAAKgB,MAC3CyhP,SAAUzhP,KAAKihP,WAAWjiP,KAAKgB,MAC/BorD,MAAOprD,OAEXA,KAAK+hP,uBACT,MAEI7D,IACAl+O,KAAKgiP,0BACDhiP,KAAK8lH,QACL9lH,KAAKhd,QAAQ4zC,UAAUjB,OAAO0pN,IAG9Br/O,KAAKhd,QAAQ4zC,UAAUjB,OAAO2pN,IAElCt/O,KAAKhd,QAAQ4zC,UAAUjB,OAAOypN,GAEtC,EACA/5H,EAAOhmH,UAAUsvG,gBAAkB,SAAUxwE,GACzC,IACIr0C,EAAQq0C,EAAOrtB,iBADP,8EAEZ,MAAO,CAAE9tB,QAAS8G,EAAMA,EAAM7R,OAAS,GAC3C,EAEAotI,EAAOhmH,UAAU4iP,QAAU,SAAUlgQ,GACjC,IAAIiuB,EAAQhQ,KACZ,GAAsB,IAAlBje,EAAMi4D,SACFh6C,KAAK8lH,QAAS,CACd,IAAIo8H,OAAY,GACXv0O,EAAAA,EAAAA,IAAkB3N,KAAKu6M,UACxB2nC,EAAYliP,KAAKu6M,OAAOv6M,KAAKu6M,OAAOtiO,OAAS,KAE5C01B,EAAAA,EAAAA,IAAkB3N,KAAKu6M,WAAc5sM,EAAAA,EAAAA,IAAkB3N,KAAKmiP,sBAC7DD,EAAYliP,KAAK2uG,gBAAgB3uG,KAAKmiP,sBAEtCx0O,EAAAA,EAAAA,IAAkB3N,KAAKu6M,UAAW5sM,EAAAA,EAAAA,IAAkB3N,KAAKmiP,uBAAwBx0O,EAAAA,EAAAA,IAAkB3N,KAAKwxG,cACxG0wI,EAAYliP,KAAK2uG,gBAAgB3uG,KAAKwxG,cAErC7jG,EAAAA,EAAAA,IAAkBu0O,IAAct/O,SAASmjE,gBAAkBm8K,EAAUl/P,SAAYjB,EAAMy4D,WACxFz4D,EAAM2uD,iBACN1wC,KAAKoiP,kBAAkBpiP,KAAKhd,SAASyuB,SAErC7O,SAASmjE,gBAAkB/lE,KAAKoiP,kBAAkBpiP,KAAKhd,UAAYjB,EAAMy4D,WACzEz4D,EAAM2uD,kBACD/iC,EAAAA,EAAAA,IAAkBu0O,IACnBA,EAAUl/P,QAAQyuB,QAG9B,CAEJ,IAkBQ4wO,EAlBJr/P,EAAU4f,SAASmjE,cACnBu8K,EAAa,CAAC,QAAS,YAAYhsP,QAAQtT,EAAQmzC,QAAQ93C,gBAAkB,EAC7EkkQ,GAAgB,EAIpB,GAHKD,IACDC,EAAgBv/P,EAAQkjE,aAAa,oBAAkE,SAA5CljE,EAAQo+C,aAAa,oBAE9D,KAAlBr/C,EAAMi4D,SAAkBh6C,KAAKulH,cAAe,CAC5CvlH,KAAK6/O,YArRO,SAsRZ,IAAIzjK,EAAQx5E,SAAS2P,cAAc,kCAE5B5E,EAAAA,EAAAA,IAAkByuE,IAAWA,EAAMxlD,UAAUM,SAAS,mBACzDl3B,KAAKilE,KAAKljF,EAElB,EACuB,KAAlBA,EAAMi4D,UAAmBj4D,EAAMu4D,SAA6C,aAAlCt3D,EAAQmzC,QAAQ93C,eAC3DikQ,KAAc30O,EAAAA,EAAAA,IAAkB3N,KAAKwiP,mBAClB,KAAlBzgQ,EAAMi4D,SAAkBj4D,EAAMu4D,UAA8C,aAAlCt3D,EAAQmzC,QAAQ93C,eACvDkkQ,MAAoB50O,EAAAA,EAAAA,IAAkB3N,KAAKwiP,qBAE5BxiP,KAAKihE,QAAQt5D,MAAK,SAAU9hB,EAAMiB,GACjDu7P,EAAgBv7P,EAEhB,IAAI4+H,EAAc7/H,EAAK6/H,YACvB,QAAQ/3G,EAAAA,EAAAA,IAAkB+3G,KAA0C,IAA1BA,EAAY1sH,SAC1D,KACmE,oBAAvCgH,KAAKihE,QAAQohL,GAAej7L,OACpDl3C,YAAW,WACPF,EAAMixD,QAAQohL,GAAej7L,MAAM1nD,KAAKsQ,EAAOjuB,EACnD,IAGZ,EAOAsjI,EAAOhmH,UAAUowC,WAAa,YACrB9hC,EAAAA,EAAAA,IAAkB3N,KAAKm+B,UACxBn+B,KAAKs0I,UAAsC,kBAAjBt0I,KAAKm+B,OAC3Bv7B,SAAS2P,cAAcvS,KAAKm+B,QAAUn+B,KAAKm+B,QAE9Cn+B,KAAKmhP,yBACN1qN,EAAAA,EAAAA,IAAS,CAACz2B,KAAKhd,SAAUypE,GAEzB75B,EAAAA,GAAQY,WACRiD,EAAAA,EAAAA,IAAS,CAACz2B,KAAKhd,SAAU0pE,IAExB1sD,KAAKmhP,wBACNnhP,KAAK26L,cAET36L,KAAKyiP,cACT,EAOAp9H,EAAOhmH,UAAUmgP,WAAa,WAC1B,IAAIxvO,EAAQhQ,KA8CZ,GA7CAA,KAAK0iP,eAAgB,EAChB1iP,KAAKmhP,yBACN3qN,EAAAA,EAAAA,IAAWx2B,KAAKhd,QAAS,CAAEwnE,KAAM,WAEjB,MAAhBxqD,KAAK80D,QACL90D,KAAK2iP,UAAU3iP,KAAKhd,SAAS,GAC7Bgd,KAAK4iP,iBAAkB,GAGvB5iP,KAAK4iP,iBAAkB,EAEvB5iP,KAAKmhP,yBAA0BxzO,EAAAA,EAAAA,IAAkB3N,KAAK6wM,iBACtD7wM,KAAK6wM,cAAgB7wM,KAAKhd,QAAQwhD,uBAAuB,wBAAwB,IAEjFxkC,KAAKmhP,yBAA0BxzO,EAAAA,EAAAA,IAAkB3N,KAAKwxG,cACtDxxG,KAAKwxG,WAAaxxG,KAAKhd,QAAQuvB,cAAc,IAAMvS,KAAKhd,QAAQ4B,GAAK,oBAEpEob,KAAKmhP,yBACNnhP,KAAK6iP,mBACe,KAAhB7iP,KAAKywB,SAAkB9iB,EAAAA,EAAAA,IAAkB3N,KAAKywB,SAC9CzwB,KAAK8iP,YAET9iP,KAAK+iP,kBACL/iP,KAAKgjP,aACuB,KAAxBhjP,KAAKkuG,iBAA0BvgG,EAAAA,EAAAA,IAAkB3N,KAAKkuG,iBAGhDvgG,EAAAA,EAAAA,IAAkB3N,KAAKihE,QAAQ,GAAGykD,cACxC1lH,KAAKijP,YAHLjjP,KAAKmuG,qBAMTnuG,KAAKmhP,0BACAxzO,EAAAA,EAAAA,IAAkB3N,KAAKihE,QAAQ,GAAGykD,cAAwC,KAAxB1lH,KAAKkuG,gBACxDluG,KAAKijP,aAGTjjP,KAAKkjP,iBAAmBv1O,EAAAA,EAAAA,IAAkB3N,KAAK6wM,gBAC/C7wM,KAAKmjP,mBAEJnjP,KAAKmhP,0BACN3qN,EAAAA,EAAAA,IAAWx2B,KAAKhd,QAAS,CAAE,aAAegd,KAAK8lH,QAAU,OAAS,UAC9D9lH,KAAK8lH,SACL9lH,KAAKojP,cAGTpjP,KAAKmhP,yBAA0BxzO,EAAAA,EAAAA,IAAkB3N,KAAKqjP,cAAe,CACrErjP,KAAKqjP,aAAerjP,KAAKhd,QAAQi2D,cACjC,IAAK,IAAI9zC,EAAI,EAAG2+C,EAAa9jD,KAAKqjP,aAAazrQ,SAAUutB,EAAI2+C,EAAW7rE,OAAQktB,IACxE2+C,EAAW3+C,GAAGyxB,UAAUM,SAAS,mBACjCl3B,KAAKsjP,WAAax/L,EAAW3+C,GAGzC,CACA,IAAwD,IAApDnF,KAAKhd,QAAQ4zC,UAAUM,SAASgoN,MAAkF,IAAtDl/O,KAAKhd,QAAQ4zC,UAAUM,SAASioN,OACxFxxO,EAAAA,EAAAA,IAAkB3N,KAAKhd,QAAQi2D,eAAgB,CACnD,IAAIw5G,EAAYzyJ,KAAK8lH,QAAU9lH,KAAKqjP,aAAapqM,cAAgBj5C,KAAKhd,QAAQi2D,cAC9Ej5C,KAAKujP,WAAavjP,KAAK4Q,cAAc,MAAO,CAAE31B,UAvYpC,sBAwYVw3K,EAAUz6H,aAAah4B,KAAKujP,WAAavjP,KAAK8lH,QAAU9lH,KAAKqjP,aAAerjP,KAAKhd,QACrF,EACK2qB,EAAAA,EAAAA,IAAkB3N,KAAKs0I,aAExBt0I,KAAK8lH,QAAU9lH,KAAKs0I,UAAUnjI,YAAYnR,KAAKqjP,cAAgBrjP,KAAKs0I,UAAUnjI,YAAYnR,KAAKhd,UAEnGgd,KAAKukE,SAAW,IAAIoC,EAAAA,GAAM3mE,KAAKhd,QAAS,CACpCgxD,OAAQh0C,KAAKg0C,OACbD,MAAO/zC,KAAK+zC,MACZ+gB,OAAQ90D,KAAK80D,OACb8R,SAAU5mE,KAAKm+B,OACfqzF,eAAgB,OAChB7mF,UAAW3qC,KAAK2qC,UAEhBpqD,KAAM,SAAUwB,GACZ,IAAIitC,EAAY,CACZgyC,UAAWhxD,EAAM81G,QAAU91G,EAAMqzO,aAAerzO,EAAMhtB,QACtDA,QAASgtB,EAAMhtB,QACfm7C,OAAQnuB,EAAMmuB,OACd8mE,cAAc,GAEdj1F,EAAMyvO,cACNzvO,EAAMwzO,kBAEVxzO,EAAM8lB,QAAQ,OAAQ9G,GAAW,SAAUy0N,GAClCA,EAAcx+I,cACfj1F,EAAMi6L,cAEd,GACJ,EAEAz4L,MAAO,SAAUzvB,GACTiuB,EAAM81G,UACNrvF,EAAAA,EAAAA,IAAS,CAACzmB,EAAMszO,YAAa,UAEjCtzO,EAAM0zO,YAAY1zO,EAAMhtB,SACpBgtB,EAAM81G,UACN91G,EAAMqzO,aAAa9rN,MAAMuiB,QAAU,QAEvC9pC,EAAM8lB,QAAQ,QAAS9lB,EAAM6+G,WAC7B,IAAI65G,EAAY9lO,SAASmjE,eACpBp4D,EAAAA,EAAAA,IAAkB+6N,KAAe/6N,EAAAA,EAAAA,IAAmB+6N,EAAW9lP,OAChE8lP,EAAU9lP,QAET+qB,EAAAA,EAAAA,IAAkBqC,EAAM2zO,sBAAwBh2O,EAAAA,EAAAA,IAAkBqC,EAAM2zO,mBAAmBlyO,QAC5FzB,EAAM2zO,mBAAmBlyO,OAEjC,IAEJzR,KAAK4jP,iBACL5jP,KAAK6jP,eACA7jP,KAAKmhP,0BACN1qN,EAAAA,EAAAA,IAAS,CAACz2B,KAAKhd,SArcZ,iBAscCgd,KAAK8lH,SACL9lH,KAAK8jP,oBAGT9jP,KAAK5R,QACL4R,KAAKklE,OAGDllE,KAAK8lH,UACL9lH,KAAKsjP,WAAW/rN,MAAMuiB,QAAU,QAGxC95C,KAAK0iP,eAAgB,CACzB,EACAr9H,EAAOhmH,UAAUmkP,gBAAkB,WAC/B,IAAIO,EAAkB/jP,KAAK2/O,eAC3B,GAAI3/O,KAAKs0I,UAAUrgG,aAAe8vM,EAAiB,CAC/C,IAAI9oQ,EAAY+kB,KAAK2qC,UAAY,eAAiB,eAC9Cq5M,EAAahkP,KAAKhd,QAAQuvB,cAAc,IAAMt3B,IAC7C0yB,EAAAA,EAAAA,IAAkBq2O,KACnBA,EAAWzsN,MAAMsM,OAAS,IAAMkgN,EAAgB3oQ,WAAa,KAErE,CACJ,EACAiqI,EAAOhmH,UAAUykP,iBAAmB,SAAUG,GAC1C,IAAInvL,EAEAA,GADAnnD,EAAAA,EAAAA,IAAkBs2O,GACT/kQ,SAAS8gB,KAAKhd,QAAQu0C,MAAMu9B,OAAQ,IAAM51E,SAAS8gB,KAAKhd,QAAQu0C,MAAMu9B,OAAQ,IAAM90D,KAAK80D,OAGzFmvL,EAEbjkP,KAAKsjP,WAAW/rN,MAAMu9B,QAAUA,EAAS,GAAG15E,WAC5C4kB,KAAKqjP,aAAa9rN,MAAMu9B,OAASA,EAAO15E,UAC5C,EACAiqI,EAAOhmH,UAAUukP,eAAiB,WAC1B5jP,KAAK8lH,UACAhsG,MAAMmM,WAAWjmB,KAAKmyC,SAAS00B,KAAQ/sD,MAAMmM,WAAWjmB,KAAKmyC,SAAS20B,MAGhEhtD,MAAMmM,WAAWjmB,KAAKmyC,SAAS00B,KAAO/sD,MAAMmM,WAAWjmB,KAAKmyC,SAAS20B,KACxEhtD,MAAMmM,WAAWjmB,KAAKmyC,SAAS00B,MAAQ/sD,MAAMmM,WAAWjmB,KAAKmyC,SAAS20B,IAC1E9mE,KAAK4vG,oBAGL5vG,KAAKhd,QAAQu0C,MAAMqM,IAAM,MACzB5jC,KAAKhd,QAAQu0C,MAAMmM,KAAO,MAC1B1jC,KAAKqjP,aAAazsN,UAAUzB,IAAI,SAAWn1B,KAAKmyC,SAAS00B,EAAI,IAAM7mE,KAAKmyC,SAAS20B,IAIrF9mE,KAAK4vG,kBAEb,EACAyV,EAAOhmH,UAAUuwG,iBAAmB,WAChC5vG,KAAKukE,SAAS5pC,cAAc,CACxBwX,SAAU,CACN00B,EAAG7mE,KAAKmyC,SAAS00B,EAAGC,EAAG9mE,KAAKmyC,SAAS20B,IAGjD,EACAu+C,EAAOhmH,UAAU8jP,iBAAmB,WAChC,IAAInzO,EAAQhQ,KACRkkP,EAAgB,IAAM5F,GACrBt+O,KAAKhd,QAAQ4zC,UAAUM,SAxfrB,iBAyfHl3B,KAAKugP,QAAU,IAAIryM,EAAAA,GAAUluC,KAAKhd,QAAS,CACvCksB,OAAO,EACPmjC,cAAc,EACd7B,MAAO,uBACPlB,OAAQ40M,EACRtxM,UAAW,SAAU7wD,GACjBiuB,EAAM8lB,QAAQ,YAAa/zC,GAAO,SAAUoiQ,IACpC50O,EAAAA,EAAAA,OACA40O,EAAcrxM,WAAW/wD,EAAMixD,YAEvC,GACJ,EACAuE,SAAU,SAAUx1D,GACZiuB,EAAM81G,WACDn4G,EAAAA,EAAAA,IAAkBqC,EAAMmiC,WACzBniC,EAAMqzO,aAAazsN,UAAUjB,OAAO,SAAW3lB,EAAMmiC,SAAS00B,EAAI,IAAM72D,EAAMmiC,SAAS20B,GAG3F92D,EAAMhtB,QAAQu0C,MAAM4a,SAAW,YAEnCniC,EAAM8lB,QAAQ,WAAY/zC,GAC1BiuB,EAAMhtB,QAAQ4zC,UAAUjB,OAAO0pN,IAC/BrvO,EAAMswO,mBACV,EACA3rM,KAAM,SAAU5yD,GACZiuB,EAAM8lB,QAAQ,OAAQ/zC,EAC1B,KAEC4rB,EAAAA,EAAAA,IAAkB3N,KAAKs0I,aACxBt0I,KAAKugP,QAAQttM,SAAWjzC,KAAKs0I,WAGzC,EACAjvB,EAAOhmH,UAAU4jP,UAAY,WACzB,IAAKjjP,KAAKmhP,uBAAwB,CAC9BnhP,KAAKokP,cAAgB,GACrBpkP,KAAKu6M,OAAS,GAGd,IADA,IACSp1M,EAAI,EAAGA,EAAInF,KAAKihE,QAAQhpF,OAAQktB,IAAK,CAC1C,IAAIk/O,GAAc12O,EAAAA,EAAAA,IAAkB3N,KAAKihE,QAAQ97D,GAAG7qB,MAA6C,SAArC0lB,KAAKihE,QAAQ97D,GAAG7qB,KAAK+D,cAC7E28N,EAAMh7M,KAAK4Q,cAAc,SAAU,CAAE31B,UAAW+kB,KAAK7f,SAAUo2C,MAAO,CAAEj8C,KAAM+pQ,KAClFrkP,KAAKokP,cAAc3kQ,KAAKu7N,EAAI3pM,UAChC,CACArR,KAAKmuG,mBACT,CAEShpG,EAAI,EAAb,IADA,IAAIm/O,EACYxgM,EAAa9jD,KAAKhd,QAAQpL,SAAUutB,EAAI2+C,EAAW7rE,OAAQktB,IACnE2+C,EAAW3+C,GAAGyxB,UAAUM,SAASsnN,MACjC8F,EAAYxgM,EAAW3+C,GAAG2L,iBAAiB,WAGnD,IAAS3L,EAAI,EAAGA,EAAInF,KAAKihE,QAAQhpF,OAAQktB,IAChCnF,KAAKmhP,yBACNnhP,KAAKu6M,OAAOp1M,GAAK,IAAIkhD,EAAAA,GAAOrmD,KAAKihE,QAAQ97D,GAAGugH,cAE5C1lH,KAAKmhP,yBACLnhP,KAAKmiP,mBAAqBniP,KAAKhd,QAAQuvB,cAAc,IAAMisO,OAE1D7wO,EAAAA,EAAAA,IAAkB3N,KAAKmiP,qBAAuBmC,EAAUrsQ,OAAS,IAC3B,oBAA3B+nB,KAAKihE,QAAQ97D,GAAGiiD,OACxBpyB,EAAAA,GAAaG,IAAImvN,EAAUn/O,GAAI,QAASnF,KAAKihE,QAAQ97D,GAAGiiD,MAAOpnD,MAE5B,kBAA3BA,KAAKihE,QAAQ97D,GAAGiiD,OACxBpyB,EAAAA,GAAaG,IAAImvN,EAAUn/O,GAAI,QAASnF,KAAKukP,mBAAmBvlP,KAAKgB,KAAMmF,GAAInF,OAGlFA,KAAKmhP,yBAA2BxzO,EAAAA,EAAAA,IAAkB3N,KAAKmiP,sBACxDniP,KAAKu6M,OAAOp1M,GAAG4lC,SAAS/qC,KAAKmiP,mBAAmBvqQ,SAASutB,IACrDnF,KAAKihE,QAAQ97D,GAAGq/O,QAChBxkP,KAAKu6M,OAAOp1M,GAAGniB,QAAQ4zC,UAAUzB,IAAI,UAEzCn1B,KAAKwiP,iBAAmBxiP,KAAKhd,QAAQwhD,uBAAuB,aAAa,GAGrF,EACA6gF,EAAOhmH,UAAUklP,mBAAqB,SAAUz9P,GAC5CkZ,KAAK81B,QAAQ,WAAahvC,EAAQ,UAAW,CAAC,EAClD,EACAu+H,EAAOhmH,UAAU2jP,WAAa,WAE1B,GADAhjP,KAAKwxG,WAAaxxG,KAAK4Q,cAAc,MAAO,CAAE31B,UAnmBpC,gBAmmB4D2J,GAAIob,KAAKhd,QAAQ4B,GAAK,oBACxFob,KAAKykP,oBACLzkP,KAAKwxG,WAAWrgG,YAAYnR,KAAKykP,0BAEhC,KAAK92O,EAAAA,EAAAA,IAAkB3N,KAAKumD,UAA6B,KAAjBvmD,KAAKumD,UAAmBvmD,KAAK0iP,cAAe,CAEjE7jQ,OAAOC,KAAKwB,SACF,kBAAlB0f,KAAKumD,UAA0Bh3C,EAAAA,EAAAA,QAGlCvP,KAAKumD,mBAAmBm+L,YAC7B1kP,KAAKwxG,WAAWrgG,YAAYnR,KAAKumD,SAHjCvmD,KAAKwlL,YAAYxlL,KAAKumD,QAASvmD,KAAKwxG,WAAY,UAQxD,EACK7jG,EAAAA,EAAAA,IAAkB3N,KAAK6wM,eAIxB7wM,KAAKhd,QAAQg1C,aAAah4B,KAAKwxG,WAAYxxG,KAAKhd,QAAQpL,SAAS,IAHjEooB,KAAKhd,QAAQg1C,aAAah4B,KAAKwxG,WAAYxxG,KAAKhd,QAAQpL,SAAS,IAKjD,SAAhBooB,KAAKg0C,SACAh0C,KAAKmhP,yBAA0BvuN,EAAAA,GAAQ6C,MAAqC,KAA7Bz1B,KAAKhd,QAAQu0C,MAAMwc,QAAiBpmC,EAAAA,EAAAA,IAAkB3N,KAAK+zC,SAC3G/zC,KAAKhd,QAAQu0C,MAAMwc,OAAQjiC,EAAAA,EAAAA,IAAW9R,KAAK+zC,QAE/C/zC,KAAKyiP,eAEb,EACAp9H,EAAOhmH,UAAUmmL,YAAc,SAAUhvL,EAAUohC,EAAWzkB,GAC1D,IAAIoyK,EACAo/D,EAYAC,EAVgB/lQ,OAAOC,KAAKwB,QAE5BqkQ,EADA/sN,EAAUhB,UAAUM,SAASqnN,IACbv+O,KAAKhd,QAAQ4B,GAAK,SAE7BgzC,EAAUhB,UAAUM,SAASsnN,IAClBx+O,KAAKhd,QAAQ4B,GAAK,iBAGlBob,KAAKhd,QAAQ4B,GAAK,WAGjC+oB,EAAAA,EAAAA,IAAkBnX,EAAS6a,YAGF,kBAAb7a,GAA+C,kBAAbA,IAA2B+Y,EAAAA,EAAAA,QAAevP,KAAKwqC,oBACrE,kBAAbh0C,IACRA,EAAWwJ,KAAK6kP,eAAeruP,IAE/BwJ,KAAK4oD,OAA6B,kBAAbpyD,GACrB+uL,GAAalkI,EAAAA,EAAAA,IAAQ7qD,GACrBouP,EAAgBpuP,GAGhBohC,EAAUrmB,UAAY/a,GAX1BohC,EAAUzmB,YAAY3a,GAc1B,IAAImhC,EAAe,GACnB,KAAKhqB,EAAAA,EAAAA,IAAkB43K,GAAa,CAIhC,IAHA,IAGSh3K,EAAK,EAAGvoB,EAAKu/L,EAAW,CAAC,EAAGvlL,KAAMmT,EAAMwxO,KAHjCp1O,EAAAA,EAAAA,QACXvP,KAAKwqC,kBAA+D,IAA1Co6M,EAAetuP,QAAQ,iBAClD0J,KAAKwqC,kBACkEj8B,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAC7F,IAAInjB,EAAOpF,EAAGuoB,GACdopB,EAAal4C,KAAK2L,EACtB,EACA+sC,EAAAA,EAAAA,IAAO,GAAG96B,MAAMqC,KAAKi4B,GAAeC,EACxC,CACJ,EAMAytF,EAAOhmH,UAAUwlP,eAAiB,SAAUtnQ,GACxC,GAAIyiB,KAAKymD,oBAAqB,CAC1B,IAAIq+L,EAAa3/L,EAAAA,GAAmBC,kBAKpCz2C,EAAAA,EAAAA,IAAOm2O,EAAYA,EAJD,CACdv9P,QAAQ,EACR2tD,OAAQ,OAGZl1C,KAAK81B,QAAQ,qBAAsBgvN,GAC/BA,EAAWv9P,UAAWomB,EAAAA,EAAAA,IAAkBm3O,EAAW5vM,QACnD33D,EAAQunQ,EAAW5vM,OAAO33D,GAEpBunQ,EAAWv9P,SACjBhK,EAAQ4nE,EAAAA,GAAmBK,eAAes/L,EAAYvnQ,GAE9D,CACA,OAAOA,CACX,EACA8nI,EAAOhmH,UAAUojP,aAAe,WAC5B,GAAKziP,KAAK8/O,eAAV,CAGA,IAAIhmM,EAAU95C,KAAKhd,QAAQu0C,MAAMuiB,QACjC95C,KAAKhd,QAAQu0C,MAAMuiB,QAAU,OAC7B95C,KAAKhd,QAAQu0C,MAAMk4C,YAAc9hE,EAAAA,EAAAA,IAAkB3N,KAAKm+B,SAAan+B,KAAKs0I,UAAUrgG,aAAe3zD,OAAO8zD,YACrGp0C,KAAKs0I,UAAUrgG,aAAe,GAAM,KAAQ3zD,OAAO8zD,YAAc,GAAM,KAC5Ep0C,KAAKhd,QAAQu0C,MAAMuiB,QAAUA,EACzBlnB,EAAAA,GAAQ6C,MAAwB,SAAhBz1B,KAAKg0C,UAAsBrmC,EAAAA,EAAAA,IAAkB3N,KAAKwxG,aAC/DxxG,KAAKhd,QAAQixD,aAAej0C,KAAKwxG,WAAWv9D,eAC/Cj0C,KAAKhd,QAAQu0C,MAAMyc,OAAS,UARhC,CAUJ,EACAqxE,EAAOhmH,UAAUwkP,aAAe,WACvB7jP,KAAKmhP,yBAENnhP,KAAK2qC,WAAYlU,EAAAA,EAAAA,IAAS,CAACz2B,KAAKhd,SAAU8kE,KAAO3wB,EAAAA,EAAAA,IAAY,CAACn3B,KAAKhd,SAAU8kE,MAE5En6C,EAAAA,EAAAA,IAAkB3N,KAAKhd,QAAQuvB,cAAc,uBAC9C2rO,IACAl+O,KAAK0/O,YAEb,EACAr6H,EAAOhmH,UAAUwjP,iBAAmB,WAChC,IAAI7yO,EAAQhQ,KACZ,IAAI2N,EAAAA,EAAAA,IAAkB3N,KAAKumD,UAA6B,KAAjBvmD,KAAKumD,QAAgB,CACxD,IAAIq2H,EAA8E,KAAlE58K,KAAKhd,QAAQuuB,UAAU9a,QAAQ,0BAA2B,KACtEuJ,KAAKhd,QAAQpL,SAASK,OAAS,GAAK2kM,KACpC58K,KAAKykP,oBAAsB7hP,SAASm1B,yBACpC,GAAG16B,MAAMqC,KAAKM,KAAKhd,QAAQ8gE,YAAY/kE,SAAQ,SAAUs6C,GACjC,IAAhBA,EAAGC,UACHtpB,EAAMy0O,oBAAoBtzO,YAAYkoB,EAE9C,IAER,CACJ,EACAgsF,EAAOhmH,UAAUyjP,UAAY,WACrB9iP,KAAK8kL,UACL9kL,KAAK8kL,UAAUvzK,UAAY,GAG3BvR,KAAK8kL,UAAY9kL,KAAK4Q,cAAc,MAAO,CAAEhsB,GAAIob,KAAKhd,QAAQ4B,GAAK,SAAU3J,UAAWsjQ,KAE5Fv+O,KAAKo0J,sBACLp0J,KAAK6wM,cAAc1/L,YAAYnR,KAAK8kL,WACpC9kL,KAAKwlL,YAAYxlL,KAAKywB,OAAQzwB,KAAK8kL,UAAW,WAC9CtuJ,EAAAA,EAAAA,IAAWx2B,KAAKhd,QAAS,CAAE,kBAAmBgd,KAAKhd,QAAQ4B,GAAK,WAChEob,KAAKhd,QAAQg1C,aAAah4B,KAAK6wM,cAAe7wM,KAAKhd,QAAQpL,SAAS,IAChEooB,KAAKkjP,iBAAmBv1O,EAAAA,EAAAA,IAAkB3N,KAAK6wM,gBAC/C7wM,KAAKmjP,kBAEb,EACA99H,EAAOhmH,UAAU8uG,kBAAoB,WAC7BnuG,KAAKmiP,mBACLniP,KAAKmiP,mBAAmB5wO,UAAY,GAGpCvR,KAAKmiP,mBAAqBniP,KAAK4Q,cAAc,MAAO,CAChD31B,UAAWujQ,KAGS,KAAxBx+O,KAAKkuG,iBAA0BvgG,EAAAA,EAAAA,IAAkB3N,KAAKkuG,gBAItDluG,KAAKmiP,mBAAmB5wO,UAAYvR,KAAKokP,cAAcn9O,KAAK,IAH5DjH,KAAKwlL,YAAYxlL,KAAKkuG,eAAgBluG,KAAKmiP,mBAAoB,kBAKnEniP,KAAKhd,QAAQmuB,YAAYnR,KAAKmiP,mBAClC,EACA98H,EAAOhmH,UAAU+0J,oBAAsB,YAC/BzmJ,EAAAA,EAAAA,IAAkB3N,KAAK6wM,iBACvB7wM,KAAK6wM,cAAgB7wM,KAAK4Q,cAAc,MAAO,CAAEhsB,GAAIob,KAAKhd,QAAQ4B,GAAK,iBAAkB3J,UAAWqjQ,KAE5G,EACAj5H,EAAOhmH,UAAU0jP,gBAAkB,WAC3B/iP,KAAKslH,gBACLtlH,KAAK+kP,UAAY/kP,KAAK4Q,cAAc,SAAU,CAAE31B,UAAW6jQ,GAAoBvoN,MAAO,CAAEj8C,KAAM,YAC9F0lB,KAAKglP,gBAAkB,IAAI3+L,EAAAA,GAAO,CAAElmE,SAAU,SAAUymE,QAAS83L,gBACjE1+O,KAAKilP,kBACAt3O,EAAAA,EAAAA,IAAkB3N,KAAK6wM,gBAIxB7wM,KAAKo0J,uBACL18H,EAAAA,EAAAA,IAAQ,CAAC13B,KAAK+kP,WAAY/kP,KAAK6wM,eAC/B7wM,KAAKhd,QAAQg1C,aAAah4B,KAAK6wM,cAAe7wM,KAAKhd,QAAQpL,SAAS,MALpE8/C,EAAAA,EAAAA,IAAQ,CAAC13B,KAAK+kP,WAAY/kP,KAAK6wM,eAOnC7wM,KAAKglP,gBAAgBj6M,SAAS/qC,KAAK+kP,WAE3C,EACA1/H,EAAOhmH,UAAU4lP,eAAiB,WAC9BjlP,KAAK+hE,KAAKpmB,UAAU37C,KAAKwpB,QACzB,IAAIy7N,EAAiBjlP,KAAK+hE,KAAK9lB,YAAY,SAC3Cj8C,KAAK+kP,UAAUzuN,aAAa,QAAS2uN,GACrCjlP,KAAK+kP,UAAUzuN,aAAa,aAAc2uN,EAC9C,EACA5/H,EAAOhmH,UAAUs7L,YAAc,SAAUC,GACjCA,KACAzjK,EAAAA,EAAAA,IAAY,CAACn3B,KAAKhd,SAAU43M,EAAY3mM,MAAM,MAC1C+L,KAAK8lH,WAAYn4G,EAAAA,EAAAA,IAAkB3N,KAAKqjP,gBACxClsN,EAAAA,EAAAA,IAAY,CAACn3B,KAAKqjP,cAAezoD,EAAY3mM,MAAM,OAGvD+L,KAAK7f,YACLs2C,EAAAA,EAAAA,IAAS,CAACz2B,KAAKhd,SAAUgd,KAAK7f,SAAS8T,MAAM,MACzC+L,KAAK8lH,WAAYn4G,EAAAA,EAAAA,IAAkB3N,KAAKqjP,gBACxC5sN,EAAAA,EAAAA,IAAS,CAACz2B,KAAKqjP,cAAerjP,KAAK7f,SAAS8T,MAAM,MAG9D,EACAoxH,EAAOhmH,UAAU+jP,WAAa,WAC1BpjP,KAAKqjP,aAAerjP,KAAK4Q,cAAc,MAAO,CAAE31B,UA/yBpC,oBAgzBZ+kB,KAAK26L,cACL36L,KAAKhd,QAAQ4zC,UAAUjB,OAAOopN,IAC9B/+O,KAAKhd,QAAQstB,WAAW0nB,aAAah4B,KAAKqjP,aAAcrjP,KAAKhd,SAC7Dgd,KAAKqjP,aAAalyO,YAAYnR,KAAKhd,UACnCyzC,EAAAA,EAAAA,IAAS,CAACz2B,KAAKhd,SAAUy7P,IACzBz+O,KAAKsjP,WAAatjP,KAAK4Q,cAAc,MAAO,CAAE31B,UAvzBpC,kBAwzBV+kB,KAAKsjP,WAAW/rN,MAAMu9B,QAAU90D,KAAK80D,OAAS,GAAG15E,WACjD4kB,KAAKqjP,aAAalyO,YAAYnR,KAAKsjP,WACvC,EACAj+H,EAAOhmH,UAAU6lP,kBAAoB,SAAUp7P,GAE3C,IADA,IAAI2sD,EACK0uM,EAAI,EAAGA,EAAIr7P,EAAM7R,OAAQktQ,IAAK,CAEnC,KADA1uM,EAAO3sD,EAAMq7P,IACHtuM,aAAe,GAAqC,MAA/BJ,EAAKtgB,QAAQ93C,eAAyBo4D,EAAKyP,aAAa,UAAazP,EAAK2c,UAAY,IAChH3c,EAAK19D,WAAainB,KAAKowE,eAAe35B,EAAM,qDAC7C,OAAOA,EAGPA,EAAO,IAEf,CACA,OAAOA,CACX,EACA4uE,EAAOhmH,UAAU+iP,kBAAoB,SAAU77L,GAC3C,KAAK54C,EAAAA,EAAAA,IAAkB44C,GAAU,CAC7B,IACIz8D,EAAQy8D,EAAQz1C,iBADR,sEAEZ,OAAO9Q,KAAKklP,kBAAkBp7P,EAClC,CACA,OAAO,IACX,EACAu7H,EAAOhmH,UAAU+lP,iBAAmB,SAAUpkL,GAC1C,IAAIvqB,EAAOuqB,EAAUzuD,cAAc,IAAMusO,IAErCh1P,EAAQk3E,EAAUlwD,iBADV,eAERu0O,EAAYrlP,KAAKklP,kBAAkBp7P,GAIvC,IAHIylB,EAAAA,EAAAA,QACAvP,KAAKwiP,iBAAmBxiP,KAAKhd,QAAQwhD,uBAAuB,aAAa,KAExE72B,EAAAA,EAAAA,IAAkB03O,GAGlB,CAED,GADAA,EAAYrlP,KAAKoiP,kBAAkBpiP,KAAKwxG,cACnC7jG,EAAAA,EAAAA,IAAkB03O,GACnB,OAAcA,EAEb,KAAK13O,EAAAA,EAAAA,IAAkB3N,KAAKwiP,kBAC7B,OAAOxiP,KAAKhd,QAAQuvB,cAAc,aAE1C,MAVIkkC,EAAO4uM,EAWX,OAAO5uM,CACX,EACA4uE,EAAOhmH,UAAU+wE,eAAiB,SAAUptF,EAASoiL,GACjD,IAAIkgF,EAAetiQ,EAAUA,EAAQyiB,SAAWziB,EAAQ22C,uBAAyB32C,EAAQuiQ,mBAAqB,KAC9G,GAAID,EACA,KAAOtiQ,EAASA,EAAUA,EAAQstB,WAC9B,GAAIttB,aAAmBs4H,SAAWgqI,EAAa5lP,KAAK1c,EAASoiL,GAEzD,OAAOpiL,EAInB,OAAO,IACX,EACAqiI,EAAOhmH,UAAU4qM,aAAe,WAC5B,IAAIjnN,EAAUgd,KAAKolP,iBAAiBplP,KAAKhd,SACrCyzD,GAAQ9oC,EAAAA,EAAAA,IAAkB3qB,GAAqBgd,KAAKhd,QAAfA,EACrCgwC,EAAYJ,EAAAA,GAAQI,WACpBA,EAAU18B,QAAQ,SAAW,GAAK08B,EAAU18B,QAAQ,YAAc,IAClE0J,KAAKhd,QAAQyuB,QAEjBglC,EAAKhlC,QACLzR,KAAK0jP,YAAY1jP,KAAKhd,SACtBgd,KAAKq8F,UAAUr8F,KAAKhd,QACxB,EACAqiI,EAAOhmH,UAAUg9F,UAAY,SAAUr5G,GACnCgyC,EAAAA,GAAaG,IAAInyC,EAAS,UAAWgd,KAAKiiP,QAASjiP,KACvD,EACAqlH,EAAOhmH,UAAUqkP,YAAc,SAAU1gQ,GACrCgyC,EAAAA,GAAaW,OAAO3yC,EAAS,UAAWgd,KAAKiiP,QACjD,EACA58H,EAAOhmH,UAAUmmP,sBAAwB,WAChCxlP,KAAKmhP,yBACNnhP,KAAKwxG,WAAWjgG,UAAYvR,KAAK6kP,eAAe7kP,KAAKumD,SAE7D,EACA8+D,EAAOhmH,UAAU8hP,qBAAuB,WACpC,OAAO5xO,EAAAA,EAAAA,OAAcvP,KAAK2Y,gBAC9B,EAOA0sG,EAAOhmH,UAAUu8B,cAAgB,WAC7B,MAAO,QACX,EASAypF,EAAOhmH,UAAUi8B,kBAAoB,SAAU+G,EAASC,GACpD,GAAKtiC,KAAKhd,QAAQ4zC,UAAUM,SAASu1B,GAGrC,IAAK,IAAIl+C,EAAK,EAAGvoB,EAAKnH,OAAOC,KAAKujD,GAAU9zB,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAE9D,OADWvoB,EAAGuoB,IAEV,IAAK,WACIZ,EAAAA,EAAAA,IAAkB3N,KAAKumD,UAA6B,KAAjBvmD,KAAKumD,SA6BnC54C,EAAAA,EAAAA,IAAkB3N,KAAKwxG,eAC7Bj5E,EAAAA,EAAAA,IAAOv4B,KAAKwxG,YACZxxG,KAAKwxG,WAAa,OA9BdxxG,KAAKmhP,yBACLnhP,KAAKwxG,WAAaxxG,KAAKhd,QAAQuvB,cAAc,oBAE5C5E,EAAAA,EAAAA,IAAkB3N,KAAKwxG,aAAwD,WAAzCxxG,KAAKwxG,WAAWpwE,aAAa,QAmB/DphC,KAAKmhP,0BACNxzO,EAAAA,EAAAA,IAAkB3N,KAAKhd,QAAQuvB,cAAc,oBAC7CvS,KAAKgjP,cApBJhjP,KAAKmhP,yBACNnhP,KAAKwxG,WAAWjgG,UAAY,IAEF,oBAAlBvR,KAAKumD,SACbvmD,KAAKgtC,cAAc,CAAC,aACpBzU,EAAAA,EAAAA,IAAOv4B,KAAKwxG,YACZxxG,KAAKwxG,WAAa,KAClBxxG,KAAKgjP,cAIqB,kBAAlBhjP,KAAKumD,QAAyBvmD,KAAKmhP,wBAAyD,KAA9BnhP,KAAKwxG,WAAWr3C,UAClFn6D,KAAKwxG,WAAWi0I,mBAAmB,YAAazlP,KAAK6kP,eAAe7kP,KAAKumD,UACzEvmD,KAAKwlP,wBAA0BxlP,KAAKwxG,WAAWrgG,YAAYnR,KAAKumD,SAExEvmD,KAAKyiP,iBAab,MACJ,IAAK,SACmB,KAAhBziP,KAAKywB,SAAiB9iB,EAAAA,EAAAA,IAAkB3N,KAAKywB,QACzCzwB,KAAK8kL,aACLvsJ,EAAAA,EAAAA,IAAOv4B,KAAK8kL,WACZ9kL,KAAK8kL,UAAY,MAIhB9kL,KAAKmhP,0BACNxzO,EAAAA,EAAAA,IAAkB3N,KAAKhd,QAAQuvB,cAAc,2BAC7CvS,KAAK8iP,YAGb,MACJ,IAAK,iBACD,GAA4B,KAAxB9iP,KAAKkuG,iBAAyBvgG,EAAAA,EAAAA,IAAkB3N,KAAKkuG,gBAAiB,CACtE,IAAKluG,KAAKmiP,mBACN,QAEJ5pN,EAAAA,EAAAA,IAAOv4B,KAAKmiP,oBACZniP,KAAKmiP,mBAAqB,KAC1BniP,KAAKihE,QAAU,CAAC,CAAC,EACrB,MAESjhE,KAAKmhP,0BACNxzO,EAAAA,EAAAA,IAAkB3N,KAAKhd,QAAQuvB,cAAc,uBAC7CvS,KAAKmuG,oBAETnuG,KAAKihE,QAAU,CAAC,CAAC,GAErB,MACJ,IAAK,gBACGjhE,KAAKhd,QAAQwhD,uBAAuBk6M,IAAgBzmQ,OAAS,EACxD+nB,KAAKslH,eAAkC,KAAhBtlH,KAAKywB,UAAiB9iB,EAAAA,EAAAA,IAAkB3N,KAAKywB,QAI/DzwB,KAAKslH,cAIPtlH,KAAKmhP,wBACLnhP,KAAKu5C,cAJThhB,EAAAA,EAAAA,IAAOv4B,KAAK+kP,aAJZxsN,EAAAA,EAAAA,IAAOv4B,KAAK6wM,eACZ7wM,KAAK6wM,cAAgB,OAYpB7wM,KAAKmhP,wBACNnhP,KAAK+iP,kBAET/iP,KAAKu5C,cAET,MACJ,IAAK,SACGv5C,KAAKslH,eACLtlH,KAAKilP,iBAET,MACJ,IAAK,UAEDjlP,KAAK5R,QAAU4R,KAAKklE,OAASllE,KAAKilE,OAClC,MACJ,IAAK,UACDjlE,KAAK0lP,gBACL,MACJ,IAAK,UACDnsN,EAAAA,EAAAA,IAAkBv5B,KAAKhd,QAAS,CAAE,QAAU8uB,EAAAA,EAAAA,IAAWuwB,EAAQ2R,UAC/Dh0C,KAAKsgP,oBACL,MACJ,IAAK,SACD/mN,EAAAA,EAAAA,IAAkBv5B,KAAKhd,QAAS,CAAE,OAAS8uB,EAAAA,EAAAA,IAAWuwB,EAAQ0R,SAC9D/zC,KAAKsgP,oBACL,MACJ,IAAK,SACDtgP,KAAKukE,SAASzP,OAAS90D,KAAK80D,OACxB90D,KAAK8lH,SACL9lH,KAAK8jP,iBAAiB9jP,KAAK80D,QAE3B90D,KAAKhd,QAAQu0C,MAAMu9B,SAAW90D,KAAK80D,OAAO15E,aAC1C4kB,KAAK4iP,iBAAkB,GAE3B,MACJ,IAAK,WACD5iP,KAAK26L,YAAYr4J,EAAQniD,UACzB,MACJ,IAAK,UACD,IAAIwlQ,EAAc3lP,KAAKihE,QAAQhpF,QAC1B01B,EAAAA,EAAAA,IAAkB3N,KAAKmiP,qBAAwBniP,KAAKmhP,0BACrD5oN,EAAAA,EAAAA,IAAOv4B,KAAKmiP,oBACZniP,KAAKmiP,mBAAqB,MAE9B,IAAK,IAAIh9O,EAAI,EAAGA,EAAIwgP,EAAaxgP,KACxBwI,EAAAA,EAAAA,IAAkB3N,KAAKihE,QAAQ97D,GAAGugH,eACnC1lH,KAAKkuG,eAAiB,GACtBluG,KAAKijP,aAGb,MAEJ,IAAK,gBACGjjP,KAAKkjP,iBAAmBv1O,EAAAA,EAAAA,IAAkB3N,KAAK6wM,eAC/C7wM,KAAKmjP,mBAGLnjP,KAAKugP,QAAQ74N,UAEjB,MACJ,IAAK,SACD1nB,KAAK4lP,UAAUvjN,EAAQlE,QACvB,MACJ,IAAK,WAED,GADAn+B,KAAKogP,oBACDpgP,KAAK8lH,QAAS,CACd,IAAIkyH,GAAarqO,EAAAA,EAAAA,IAAkB20B,EAAQ6P,YAAcxkC,EAAAA,EAAAA,IAAkB20B,EAAQ6P,SAAS00B,GAA0B7mE,KAAKmyC,SAAS00B,EAAnCvkC,EAAQ6P,SAAS00B,EAC9GoxK,GAAatqO,EAAAA,EAAAA,IAAkB20B,EAAQ6P,YAAcxkC,EAAAA,EAAAA,IAAkB20B,EAAQ6P,SAAS20B,GAA0B9mE,KAAKmyC,SAAS20B,EAAnCxkC,EAAQ6P,SAAS20B,EAC9G9mE,KAAKqjP,aAAazsN,UAAUM,SAAS,SAAW8gN,EAAY,IAAMC,IAClEj4O,KAAKqjP,aAAazsN,UAAUjB,OAAO,SAAWqiN,EAAY,IAAMC,EAExE,CACAj4O,KAAK4jP,iBACL5jP,KAAKsgP,oBACL,MACJ,IAAK,YACDtgP,KAAK6jP,eACL,MACJ,IAAK,eACD7jP,KAAK0/O,YACL,MACJ,IAAK,YACsB,KAAnB1/O,KAAKkvH,YACLlvH,KAAKhd,QAAQu0C,MAAM23F,WAAYp9G,EAAAA,EAAAA,IAAW9R,KAAKkvH,YAI/D,CACJ,EACA7J,EAAOhmH,UAAUumP,UAAY,SAAUznN,GACnCn+B,KAAKukE,SAASqC,SAAWzoC,EACzBn+B,KAAKm+B,OAASA,EACdn+B,KAAKs0I,UAAsC,kBAAjBt0I,KAAKm+B,OAC3Bv7B,SAAS2P,cAAcvS,KAAKm+B,QAAUn+B,KAAKm+B,OAC3Cn+B,KAAKugP,UACLvgP,KAAKugP,QAAQttM,SAAWjzC,KAAKs0I,WAEjCt0I,KAAKyiP,eACDziP,KAAK8lH,SACL9lH,KAAK0lP,gBAEL1lP,KAAKy/O,cACLz/O,KAAK0/O,WAEb,EACAr6H,EAAOhmH,UAAUqmP,cAAgB,WAE7B,GADA1lP,KAAKhd,QAAQszC,aAAa,aAAct2B,KAAK8lH,QAAU,OAAS,SAC5D9lH,KAAK8lH,SACDn4G,EAAAA,EAAAA,IAAkB3N,KAAKsjP,cACvBtjP,KAAKojP,aACLpjP,KAAKhd,QAAQu0C,MAAMqM,IAAM,MACzB5jC,KAAKhd,QAAQu0C,MAAMmM,KAAO,OACrB/1B,EAAAA,EAAAA,IAAkB3N,KAAKs0I,YACxBt0I,KAAKs0I,UAAUnjI,YAAYnR,KAAKqjP,mBAIvC,CAID,KAHAlsN,EAAAA,EAAAA,IAAY,CAACn3B,KAAKhd,SAAUy7P,KAC5BtnN,EAAAA,EAAAA,IAAY,CAACv0B,SAASuuB,MAAO,CAACwtN,GAAYC,MAC1CrmN,EAAAA,EAAAA,IAAOv4B,KAAKsjP,YACLtjP,KAAKqjP,aAAa9nI,YACrBv7G,KAAKqjP,aAAapqM,cAAcjhB,aAAah4B,KAAKqjP,aAAa9nI,WAAYv7G,KAAKqjP,cAEpFrjP,KAAKqjP,aAAapqM,cAAczgB,YAAYx4B,KAAKqjP,aACrD,CACIrjP,KAAK5R,SACL4R,KAAKklE,OAETllE,KAAK4jP,iBACD5jP,KAAK8lH,SAAW9lH,KAAKsjP,YACrBtuN,EAAAA,GAAaG,IAAIn1B,KAAKsjP,WAAY,QAAStjP,KAAKkgP,4BAA6BlgP,KAErF,EACAqlH,EAAOhmH,UAAUsjP,UAAY,SAAUkD,EAAeC,GAClD,IAAIzF,EAAergP,KAAKi6B,oBACxBj6B,KAAKi6B,qBAAsB,EAC3B,IAAI8rN,GAAgBj1H,EAAAA,EAAAA,IAAiB+0H,GACrC7lP,KAAK80D,OAASixL,EAAgB/lP,KAAK80D,OAASixL,EAAgB/lP,KAAK80D,OACjE90D,KAAKi6B,oBAAsBomN,EACvByF,IACA9lP,KAAKukE,SAASzP,OAAS90D,KAAK80D,OAEpC,EACAuwD,EAAOhmH,UAAU2mP,oBAAsB,WDhtBpC,IAAqBzoQ,ICitBRyiB,KAAKs0I,UAAU77F,YDhtB/BkwE,EAAWprI,EAOR,SAAsBA,GACzBkyF,EAAYlyF,CAChB,CCwsBQklQ,CAAaziP,KAAKs0I,UAAUz9F,cAC5B72C,KAAKyiP,cACT,EAOAp9H,EAAOhmH,UAAUytC,eAAiB,WAC9B,OAAO9sC,KAAKotC,aAAa,CAAC,QAAS,SAAU,YACjD,EAMAi4E,EAAOhmH,UAAUqoB,QAAU,WACvB,IAAI1nB,KAAK46B,YAAT,CAGA,IAAIqrN,EAAa,CAACn+L,GAAK22L,GAAWW,GAAeC,GAAyBR,GAAYnyL,IAClFn2B,EAAQ,CAAC,OAAQ,aAAc,kBAAmB,mBAAoB,eAAgB,WAAY,SAStG,IARAY,EAAAA,EAAAA,IAAY,CAACn3B,KAAKs0I,WAAY,CAACqqG,GAAYC,OACtCjxO,EAAAA,EAAAA,IAAkB3N,KAAKhd,UAAYgd,KAAKhd,QAAQ4zC,UAAUM,SAAS2nN,MACpE1nN,EAAAA,EAAAA,IAAY,CAACv0B,SAASuuB,MAAO,CAACwtN,GAAYC,KAE1C5+O,KAAK8lH,UACL3uF,EAAAA,EAAAA,IAAY,EAAGxpB,EAAAA,EAAAA,IAAkB3N,KAAKs0I,WAA8B1xI,SAASuuB,KAA1BnxB,KAAKs0I,WAA6BsqG,IAEzF5+O,KAAKknD,iBACAv5C,EAAAA,EAAAA,IAAkB3N,KAAKu6M,QACxB,IAAK,IAAIp1M,EAAI,EAAGA,EAAInF,KAAKu6M,OAAOtiO,OAAQktB,IACpCnF,KAAKu6M,OAAOp1M,GAAGuiB,UA6BvB,IA1BK/Z,EAAAA,EAAAA,IAAkB3N,KAAKglP,kBACxBhlP,KAAKglP,gBAAgBt9N,WAEpB/Z,EAAAA,EAAAA,IAAkB3N,KAAKugP,UACxBvgP,KAAKugP,QAAQ74N,YAEZ/Z,EAAAA,EAAAA,IAAkB3N,KAAKukE,SAASvhF,UAAYgd,KAAKukE,SAASvhF,QAAQ4zC,UAAUM,SA5qCxE,YA6qCLl3B,KAAKukE,SAAS78C,WAElByP,EAAAA,EAAAA,IAAY,CAACn3B,KAAKhd,SAAUijQ,IACvBt4O,EAAAA,EAAAA,IAAkB3N,KAAK7f,WAA+B,KAAlB6f,KAAK7f,WAC1Cg3C,EAAAA,EAAAA,IAAY,CAACn3B,KAAKhd,SAAUgd,KAAK7f,SAAS8T,MAAM,OAE/C0Z,EAAAA,EAAAA,IAAkB3N,KAAKujP,cAAgB51O,EAAAA,EAAAA,IAAkB3N,KAAKujP,WAAWtqM,iBAC1Ej5C,KAAKujP,WAAWtqM,cAAcjhB,aAAch4B,KAAK8lH,QAAU9lH,KAAKqjP,aAAerjP,KAAKhd,QAAUgd,KAAKujP,aACnGhrN,EAAAA,EAAAA,IAAOv4B,KAAKujP,YACZvjP,KAAKujP,gBAAaroQ,GAElB8kB,KAAK8lH,UAAY9lH,KAAKmhP,0BACtB5oN,EAAAA,EAAAA,IAAOv4B,KAAKsjP,YACZtjP,KAAKqjP,aAAa/yO,WAAW0nB,aAAah4B,KAAKhd,QAASgd,KAAKqjP,eAC7D9qN,EAAAA,EAAAA,IAAOv4B,KAAKqjP,eAEXrjP,KAAKmhP,yBACNnhP,KAAKhd,QAAQuuB,UAAYvR,KAAKggP,UAAUzuO,WAExCvR,KAAKmhP,0BACAxzO,EAAAA,EAAAA,IAAkB3N,KAAKhd,QAAQpL,UAChC,IAASutB,EAAI,EAAGA,GAAKnF,KAAKhd,QAAQpL,SAASK,OAAQktB,IAC/CA,GAAQA,GACRozB,EAAAA,EAAAA,IAAOv4B,KAAKhd,QAAQpL,SAASutB,IAIzC,IAASA,EAAI,EAAGA,EAAIoxB,EAAMt+C,OAAQktB,IAC9BnF,KAAKhd,QAAQk+C,gBAAgB3K,EAAMpxB,IAEvCnF,KAAKmiP,mBAAqB,KAC1BniP,KAAK6wM,cAAgB,KACrB7wM,KAAKwxG,WAAa,KACbxxG,KAAKmhP,uBAINnhP,KAAK46B,aAAc,EAHnBnvB,EAAOpM,UAAUqoB,QAAQhoB,KAAKM,MAM9BA,KAAK87F,SACL97F,KAAKgtC,eAhET,CAkEJ,EACAq4E,EAAOhmH,UAAU0iP,sBAAwB,WACrCzhQ,OAAOujB,iBAAiB,SAAU7D,KAAKgmP,oBAAoBhnP,KAAKgB,MACpE,EACAqlH,EAAOhmH,UAAU2iP,wBAA0B,WACvC1hQ,OAAOwjB,oBAAoB,SAAU9D,KAAKgmP,oBAAoBhnP,KAAKgB,MACvE,EAOAqlH,EAAOhmH,UAAUk6C,WAAa,WACtBv5C,KAAKmhP,wBAA0BnhP,KAAKslH,gBACpCtlH,KAAK+kP,UAAY/kP,KAAKhd,QAAQwhD,uBAAuB,uBAAuB,IAE5ExkC,KAAKslH,eACLtwF,EAAAA,GAAaG,IAAIn1B,KAAK+kP,UAAW,QAAS/kP,KAAKigP,2BAA4BjgP,MAE3EA,KAAK8lH,SAAW9lH,KAAKsjP,YACrBtuN,EAAAA,GAAaG,IAAIn1B,KAAKsjP,WAAY,QAAStjP,KAAKkgP,4BAA6BlgP,KAErF,EAOAqlH,EAAOhmH,UAAU6nD,aAAe,WAO5B,GANIlnD,KAAKslH,eACLtwF,EAAAA,GAAaW,OAAO31B,KAAK+kP,UAAW,QAAS/kP,KAAKigP,4BAElDjgP,KAAK8lH,SACL9wF,EAAAA,GAAaW,OAAO31B,KAAKsjP,WAAY,QAAStjP,KAAKkgP,6BAEnDlgP,KAAKihE,QAAQhpF,OAAS,KAAM01B,EAAAA,EAAAA,IAAkB3N,KAAKihE,QAAQ,GAAGykD,cAAwC,KAAxB1lH,KAAKkuG,eACnF,IAAK,IAAI/oG,EAAI,EAAGA,EAAInF,KAAKihE,QAAQhpF,OAAQktB,IACE,oBAA3BnF,KAAKihE,QAAQ97D,GAAGiiD,OACxBpyB,EAAAA,GAAaW,OAAO31B,KAAKmiP,mBAAmBvqQ,SAASutB,GAAI,QAASnF,KAAKihE,QAAQ97D,GAAGiiD,MAIlG,EAMAi+D,EAAOhmH,UAAUmpE,gBAAkB,WAC/BxoE,KAAKukE,SAASiE,kBACVxoE,KAAKhd,QAAQ4zC,UAAUM,SAASunN,KAChCz+O,KAAK4jP,gBAEb,EAOAv+H,EAAOhmH,UAAU6mP,aAAe,WAG5B,MAAO,CAAEnyM,MAFS/zC,KAAKhd,QAAQy0C,YAEFuc,OADVh0C,KAAKhd,QAAQixD,aAEpC,EAQAoxE,EAAOhmH,UAAU6lE,KAAO,SAAUihL,GAC9B,IAAIn2O,EAAQhQ,KACZ,GAAKA,KAAKhd,QAAQ4zC,UAAUM,SAASu1B,GAArC,CAGA,IAAKzsD,KAAKhd,QAAQ4zC,UAAUM,SAAS6nN,OAAepxO,EAAAA,EAAAA,IAAkBw4O,GAAgB,EAC7Ex4O,EAAAA,EAAAA,IAAkBw4O,IACnBnmP,KAAK/e,WAAWklQ,GAEpB,IAAIz5I,GAAcn9F,EAAAA,EAAAA,MAAa,CAC3BhoB,QAAQ,EACRvE,QAASgd,KAAKhd,QACdg+E,UAAWhhE,KAAK8lH,QAAU9lH,KAAKqjP,aAAerjP,KAAKhd,QACnDysF,UAAWzvE,KAAKhd,QAAQu0C,MAAMk4C,WAC9B,CACAloF,QAAQ,EACRvE,QAASgd,KAAKhd,QACdg+E,UAAWhhE,KAAK8lH,QAAU9lH,KAAKqjP,aAAerjP,KAAKhd,QACnDm7C,OAAQn+B,KAAKm+B,OACbsxC,UAAWzvE,KAAKhd,QAAQu0C,MAAMk4C,WAElCzvE,KAAK81B,QAAQ,aAAc42E,GAAa,SAAU05I,GAC9C,IAAKA,EAAe7+P,OAAQ,CACpByoB,EAAMhtB,QAAQu0C,MAAMk4C,YAAci9B,EAAYj9B,YAC9Cz/D,EAAM8vO,gBAAiB,EACvB9vO,EAAMhtB,QAAQu0C,MAAMk4C,UAAYi9B,EAAYj9B,WAEhDz/D,EAAM2zO,mBAAqB/gP,SAASmjE,cACpC/1D,EAAMhtB,QAAQowE,UAAY,EACtBpjD,EAAM81G,WAAan4G,EAAAA,EAAAA,IAAkBqC,EAAMszO,cAC3CtzO,EAAMszO,WAAW/rN,MAAMuiB,QAAU,QACjC9pC,EAAMqzO,aAAa9rN,MAAMuiB,QAAU,QACnC3iB,EAAAA,EAAAA,IAAY,CAACnnB,EAAMszO,YAAa,WAC3B31O,EAAAA,EAAAA,IAAkBqC,EAAMskI,YAYzB79G,EAAAA,EAAAA,IAAS,CAAC7zB,SAASuuB,MAAO,CAACwtN,GAAYC,MAXnC5uO,EAAMskI,YAAc1xI,SAASuuB,KAC7BnhB,EAAMqzO,aAAa9rN,MAAM4a,SAAW,QAGpCniC,EAAMqzO,aAAa9rN,MAAM4a,SAAW,WAExCniC,EAAMszO,WAAW/rN,MAAM4a,SAAW,WAClCniC,EAAMhtB,QAAQu0C,MAAM4a,SAAW,YAC/B1b,EAAAA,EAAAA,IAAS,CAACzmB,EAAMskI,WAAY,CAACqqG,GAAYC,OAMjD,IAAIn2K,EAAgB,CAChBrwF,KAAM43B,EAAM41G,kBAAkB9zD,OAAS,KACvChwB,SAAU9xB,EAAM41G,kBAAkB9jF,SAClChyB,MAAOE,EAAM41G,kBAAkB91G,OAE/B+1O,EAAiB71O,EAAM81G,QAAW91G,EAAMhtB,QAAQi2D,cAAgBjpC,EAAMhtB,QACtEgtB,EAAM4yO,kBACN5yO,EAAM2yO,UAAUkD,GAAe,IAC/BtsN,EAAAA,EAAAA,IAAkBvpB,EAAMhtB,QAAS,CAAE,OAAUgtB,EAAM8kD,SAC/C9kD,EAAM81G,SACN91G,EAAM8zO,iBAAiB9zO,EAAM8kD,SAIF,SAAnC9kD,EAAM41G,kBAAkB9zD,OAAoB9hD,EAAMu0D,SAASW,OAASl1D,EAAMu0D,SAASW,KAAKuD,GACxFz4D,EAAMwzJ,YAAa,EACnB,IAAI68E,EAAerwO,EAAMiqB,oBACzBjqB,EAAMiqB,qBAAsB,EAC5BjqB,EAAM5hB,SAAU,EAChB4hB,EAAM+vO,mBAAoB,EAC1B/vO,EAAMiqB,oBAAsBomN,CAChC,CACJ,GACJ,CAEIrgP,KAAK87F,SACL97F,KAAK+sC,sBAtET,CAwEJ,EAOAs4E,EAAOhmH,UAAU4lE,KAAO,SAAUljF,GAC9B,IAAIiuB,EAAQhQ,KACZ,GAAKA,KAAKhd,QAAQ4zC,UAAUM,SAASu1B,IAGjCzsD,KAAK+/O,kBAAmB,CACxB,IAAI/wN,GAAYzf,EAAAA,EAAAA,MAAa,CACzBhoB,QAAQ,EACR0L,eAAclR,EACdiB,QAASgd,KAAKhd,QACdg+E,UAAWhhE,KAAK8lH,QAAU9lH,KAAKqjP,aAAerjP,KAAKhd,QACnDjB,MAAOA,GACP,CACAwF,QAAQ,EACR0L,eAAclR,EACdiB,QAASgd,KAAKhd,QACdm7C,OAAQn+B,KAAKm+B,OACb6iC,UAAWhhE,KAAK8lH,QAAU9lH,KAAKqjP,aAAerjP,KAAKhd,QACnDjB,MAAOA,EACPskQ,SAAUrmP,KAAK6/O,aAEnB7/O,KAAK6uH,UAAY7/F,EACjBhvB,KAAK81B,QAAQ,cAAe9G,GAAW,SAAUo/F,GAC7C,IAAKA,EAAgB7mI,OAAQ,CACrByoB,EAAM81G,WACDn4G,EAAAA,EAAAA,IAAkBqC,EAAMskI,aACzBn9G,EAAAA,EAAAA,IAAY,CAACnnB,EAAMskI,WAAY,CAACqqG,GAAYC,MAGhDh8O,SAASuuB,KAAKyF,UAAUM,SAASynN,KACjC/7O,SAASuuB,KAAKyF,UAAUM,SAAS0nN,MACjCznN,EAAAA,EAAAA,IAAY,CAACv0B,SAASuuB,MAAO,CAACwtN,GAAYC,KAE9C,IAAI0H,EAAiB,CACjBluQ,KAAM43B,EAAM41G,kBAAkB9zD,OAAS,MACvChwB,SAAU9xB,EAAM41G,kBAAkB9jF,SAClChyB,MAAOE,EAAM41G,kBAAkB91G,OAGA,SAAnCE,EAAM41G,kBAAkB9zD,OAAoB9hD,EAAMu0D,SAASU,OAASj1D,EAAMu0D,SAASU,KAAKqhL,GACxFt2O,EAAMwzJ,YAAa,EACnB,IAAI68E,EAAerwO,EAAMiqB,oBACzBjqB,EAAMiqB,qBAAsB,EAC5BjqB,EAAM5hB,SAAU,EAChB4hB,EAAM+vO,mBAAoB,EAC1B/vO,EAAMiqB,oBAAsBomN,CAChC,CACArwO,EAAM6vO,YAAcN,EACxB,GACJ,CACJ,EAQAl6H,EAAOhmH,UAAUpe,WAAa,SAAUgN,GAE1B+R,KAAKhd,QAAQ6wD,UACZ7zC,KAAKhd,QAAQ8wD,WAExB,GAAI7lD,EAAM,CACN+R,KAAKhd,QAAQu0C,MAAMqM,IAAMhhC,SAASk0C,iBAAiBtT,UAAY,MAC/D/M,EAAAA,EAAAA,IAAS,CAACz2B,KAAKhd,SAAU67P,IACzB,IAAI/kM,EAAU95C,KAAKhd,QAAQu0C,MAAMuiB,QACjC95C,KAAKhd,QAAQu0C,MAAMuiB,QAAU,OAC7B95C,KAAKhd,QAAQu0C,MAAMk4C,WAAc9hE,EAAAA,EAAAA,IAAkB3N,KAAKm+B,QACZ79C,OAAO8zD,YAAe,KAA7Dp0C,KAAKs0I,UAAUrgG,aAAgB,KACpCj0C,KAAKhd,QAAQu0C,MAAMuiB,QAAUA,GAC7BrjB,EAAAA,EAAAA,IAAS,CAAC7zB,SAASuuB,MAAO,CAACwtN,GAAYC,KACnC5+O,KAAKkjP,iBAAkBv1O,EAAAA,EAAAA,IAAkB3N,KAAKugP,UAC9CvgP,KAAKugP,QAAQ74N,SAErB,MAEIyP,EAAAA,EAAAA,IAAY,CAACn3B,KAAKhd,SAAU67P,KAC5B1nN,EAAAA,EAAAA,IAAY,CAACv0B,SAASuuB,MAAO,CAACwtN,GAAYC,KACtC5+O,KAAKkjP,iBAAmBv1O,EAAAA,EAAAA,IAAkB3N,KAAK6wM,gBAC/C7wM,KAAKmjP,mBAGb,OAAOl1P,CACX,EAQAo3H,EAAOhmH,UAAUknP,WAAa,SAAUz/P,GACpC,OAAK6mB,EAAAA,EAAAA,IAAkB7mB,GAGhBkZ,KAAKu6M,OAFDv6M,KAAKu6M,OAAOzzN,EAG3B,EACA64C,EAAW,EACPzB,EAAAA,EAAAA,IAAS,KACVmnF,EAAOhmH,UAAW,eAAW,GAChCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVmnF,EAAOhmH,UAAW,2BAAuB,GAC5CsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVmnF,EAAOhmH,UAAW,yBAAqB,GAC1CsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVmnF,EAAOhmH,UAAW,qBAAiB,GACtCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVmnF,EAAOhmH,UAAW,eAAW,GAChCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,KACVmnF,EAAOhmH,UAAW,cAAU,GAC/BsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVmnF,EAAOhmH,UAAW,eAAW,GAChCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVmnF,EAAOhmH,UAAW,oBAAgB,GACrCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,CAAC,gBACXmnF,EAAOhmH,UAAW,qBAAiB,GACtCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,SACVmnF,EAAOhmH,UAAW,cAAU,GAC/BsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,KACVmnF,EAAOhmH,UAAW,iBAAa,GAClCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,SACVmnF,EAAOhmH,UAAW,aAAS,GAC9BsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,KACVmnF,EAAOhmH,UAAW,gBAAY,GACjCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,MACVmnF,EAAOhmH,UAAW,cAAU,GAC/BsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACVmnF,EAAOhmH,UAAW,cAAU,GAC/BsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,KACVmnF,EAAOhmH,UAAW,sBAAkB,GACvCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVmnF,EAAOhmH,UAAW,qBAAiB,GACtCsgC,EAAW,EACPpB,EAAAA,EAAAA,IAAW,CAAC,CAAC,GAAI6/M,IAClB/4H,EAAOhmH,UAAW,eAAW,GAChCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVmnF,EAAOhmH,UAAW,qBAAiB,GACtCsgC,EAAW,EACPrB,EAAAA,EAAAA,IAAQ,CAAC,EAAG+/M,IACbh5H,EAAOhmH,UAAW,yBAAqB,GAC1CsgC,EAAW,EACPrB,EAAAA,EAAAA,IAAQ,CAAEuoC,EAAG,SAAUC,EAAG,UAAY0/K,EAAAA,KACvCnhI,EAAOhmH,UAAW,gBAAY,GACjCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACD61G,EAAOhmH,UAAW,eAAW,GAChCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACD61G,EAAOhmH,UAAW,YAAQ,GAC7BsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACD61G,EAAOhmH,UAAW,0BAAsB,GAC3CsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACD61G,EAAOhmH,UAAW,kBAAc,GACnCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACD61G,EAAOhmH,UAAW,aAAS,GAC9BsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACD61G,EAAOhmH,UAAW,mBAAe,GACpCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACD61G,EAAOhmH,UAAW,iBAAa,GAClCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACD61G,EAAOhmH,UAAW,gBAAY,GACjCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACD61G,EAAOhmH,UAAW,YAAQ,GAC7BsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACD61G,EAAOhmH,UAAW,oBAAgB,GACrCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACD61G,EAAOhmH,UAAW,mBAAe,GACpCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACD61G,EAAOhmH,UAAW,gBAAY,GACjCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACD61G,EAAOhmH,UAAW,kBAAc,GACnCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACD61G,EAAOhmH,UAAW,iBAAa,GAClCgmH,EAAS1lF,EAAW,CAChBhB,EAAAA,IACD0mF,EAEP,CApiD4B,CAoiD1Bh7E,EAAAA,KAOF,SAAW8zM,GA0GP,SAASsI,EAAa/lP,EAAS1d,GAC3B,IAAI0jQ,EAAe,IAAIrhI,GAAO3kH,GAE9B,OADAgmP,EAAa37M,SAAS/nD,GACf0jQ,CACX,CAkBA,SAASC,EAAYjmP,EAASuX,GAe1B,OAdAvX,EAAQ+vB,QAAU9iB,EAAAA,EAAAA,IAAkBsK,EAAO5kB,OAAwB,KAAf4kB,EAAO5kB,MAC3DqN,EAAQ6lD,SAAW54C,EAAAA,EAAAA,IAAkBsK,EAAOsuC,SAA4B,GAAjBtuC,EAAOsuC,QAC9D7lD,EAAQolH,WAAWn4G,EAAAA,EAAAA,IAAkBsK,EAAO6tG,UAAW7tG,EAAO6tG,QAC9DplH,EAAQ4kH,gBAAiB33G,EAAAA,EAAAA,IAAkBsK,EAAOqtG,gBAAiBrtG,EAAOqtG,cAC1E5kH,EAAQwiP,gBAAiBv1O,EAAAA,EAAAA,IAAkBsK,EAAO8nM,cAAe9nM,EAAO8nM,YACxEr/M,EAAQ6kH,gBAAiB53G,EAAAA,EAAAA,IAAkBsK,EAAOstG,gBAAiBttG,EAAOstG,cAC1E7kH,EAAQyxC,UAAYxkC,EAAAA,EAAAA,IAAkBsK,EAAOk6B,UAA8B,CAAE00B,EAAG,SAAUC,EAAG,OAApC7uD,EAAOk6B,SAChEzxC,EAAQklH,mBAAqBj4G,EAAAA,EAAAA,IAAkBsK,EAAO2tG,mBAClD,CAAE9zD,OAAQ,OAAQhwB,SAAU,IAAKhyB,MAAO,GAD+BmI,EAAO2tG,kBAElFllH,EAAQvgB,UAAYwtB,EAAAA,EAAAA,IAAkBsK,EAAO93B,UAA8B,GAAlB83B,EAAO93B,SAChEugB,EAAQo0D,QAAUnnD,EAAAA,EAAAA,IAAkBsK,EAAO68C,QAA0B,IAAhB78C,EAAO68C,OAC5Dp0D,EAAQngB,MAAQotB,EAAAA,EAAAA,IAAkBsK,EAAO13B,MAAsB,KAAd03B,EAAO13B,KACxDmgB,EAAQqzC,OAASpmC,EAAAA,EAAAA,IAAkBsK,EAAO87B,OAAwB,OAAf97B,EAAO87B,MAC1DrzC,EAAQszC,QAAUrmC,EAAAA,EAAAA,IAAkBsK,EAAO+7B,QAA0B,OAAhB/7B,EAAO+7B,OACrDtzC,CACX,CA8CA,SAASkmP,EAAgBlhI,EAAaztG,EAAQ4uO,GAC1C,IAAIC,EAAcD,EAalB,OAZKl5O,EAAAA,EAAAA,IAAkBsK,EAAOlgC,QAC1B+uQ,EAAYphI,YAAYn/D,QAAUtuC,EAAOlgC,OAExC41B,EAAAA,EAAAA,IAAkBsK,EAAOwrF,QAC1BqjJ,EAAYphI,YAAY9+D,QAAU3uC,EAAOwrF,OAExC91F,EAAAA,EAAAA,IAAkBsK,EAAO93B,YAC1B2mQ,EAAYphI,YAAYvlI,SAAW83B,EAAO93B,WAEzCwtB,EAAAA,EAAAA,IAAkBsK,EAAOmvC,SAC1B0/L,EAAY1/L,MAAQnvC,EAAOmvC,OAExB0/L,CACX,CA3JA3I,EAAcv/E,MApCd,SAAe3wK,GAEX,IAGI84P,EAFArxD,GAAgB9kL,EAAAA,EAAAA,IAAc,MAAO,CAAE,UAAasuO,KA+BxD,OA9BAt8O,SAASuuB,KAAKhgB,YAAYukL,IAStBqxD,EAAiBN,EADC,kBAAVx4P,EACsB,CAAEs4D,QAASt4D,EACrCkkD,SAAU,CAAE00B,EAAG,SAAUC,EAAG,OAC5Bg/C,SAAS,EAAMr1F,OAAQuuN,GACvB/9K,QAVY,CAAC,CACbykD,YAAa,CAAE1sH,WAAW,EAAMutD,QAAS,MACzCa,MAAO,WACHpnD,KAAKilE,MACT,KAwFZ,SAAsBhtD,GAClB,IAAIvX,EAAU,CACdA,QAAkB,IAGlB,OADAA,EA8BJ,SAA6BA,EAASuX,GAClC,IAAI+uO,EAAmB,CAAC,CAChBthI,YAAa,CAAE1sH,WAAW,EAAMutD,QAAS,MACzCa,MAAO,WACHpnD,KAAKilE,MACT,KAEHt3D,EAAAA,EAAAA,IAAkBsK,EAAOgvO,UAI1BvmP,EAAQugE,QAAU+lL,EAHlBtmP,EAAQugE,QAAQ,GAAK2lL,EAAgBlmP,EAAQugE,QAAQ,GAAIhpD,EAAOgvO,SAAUD,EAAiB,IAK/F,OAAOtmP,CACX,CA5CcwmP,CADVxmP,EAAUimP,EAAYjmP,EAASuX,GACQA,EAE3C,CArFsCkvO,CAAal5P,GAHbynM,IAKnBlkL,MAAQ,WACfvjB,GAAQA,EAAKujB,OACbvjB,EAAKujB,MAAMtS,MAAM6nP,GAErBA,EAAer/N,UACXq/N,EAAe/jQ,QAAQ4zC,UAAUM,SAAS,gBAC1C6vN,EAAe/jQ,QAAQi2D,cAActjB,SACrCoxN,EAAe5oN,OAAOvH,UAAUjB,OAAOspN,KAGvC8H,EAAe/jQ,QAAQ2yC,QAE/B,EACOoxN,CACX,EAuDA5I,EAAciJ,QAxCd,SAAiBn5P,GAEb,IAGIo5P,EAFA3xD,GAAgB9kL,EAAAA,EAAAA,IAAc,MAAO,CAAE,UAAauuO,KAmCxD,OAlCAv8O,SAASuuB,KAAKhgB,YAAYukL,IActB2xD,EAAmBZ,EADD,kBAAVx4P,EACwB,CAAEkkD,SAAU,CAAE00B,EAAG,SAAUC,EAAG,OAASvgB,QAASt4D,EAAM63H,SAAS,EAC3Fr1F,OAAQuuN,GAAwB/9K,QAbd,CAAC,CACnBykD,YAAa,CAAE1sH,WAAW,EAAMutD,QAAS,MACzCa,MAAO,WACHpnD,KAAKilE,MACT,GACD,CACCygD,YAAa,CAAEn/D,QAAS,UACxBa,MAAO,WACHpnD,KAAKilE,MACT,KAyCZ,SAAwBhtD,GACpB,IAAIvX,EAAU,CACdA,QAAkB,IAGlB,OADAA,EAsCJ,SAA+BA,EAASuX,GACpC,IAAIqvO,EAAgB,CAChB5hI,YAAa,CAAE1sH,WAAW,EAAMutD,QAAS,MACzCa,MAAO,WACHpnD,KAAKilE,MACT,GAEAsiL,EAAoB,CACpB7hI,YAAa,CAAEn/D,QAAS,UACxBa,MAAO,WACHpnD,KAAKilE,MACT,IAECt3D,EAAAA,EAAAA,IAAkBsK,EAAOgvO,UAI1BvmP,EAAQugE,QAAQ,GAAKqmL,EAHrB5mP,EAAQugE,QAAQ,GAAK2lL,EAAgBlmP,EAAQugE,QAAQ,GAAIhpD,EAAOgvO,SAAUK,IAKzE35O,EAAAA,EAAAA,IAAkBsK,EAAOuvO,cAI1B9mP,EAAQugE,QAAQ,GAAKsmL,EAHrB7mP,EAAQugE,QAAQ,GAAK2lL,EAAgBlmP,EAAQugE,QAAQ,GAAIhpD,EAAOuvO,aAAcD,GAKlF,OAAO7mP,CACX,CAhEc+mP,CADV/mP,EAAUimP,EAAYjmP,EAASuX,GACUA,EAE7C,CAvCwCyvO,CAAez5P,GAH5CynM,IAKUlkL,MAAQ,WACjBvjB,GAAQA,EAAKujB,OACbvjB,EAAKujB,MAAMtS,MAAMmoP,GAErBA,EAAiB3/N,UACb2/N,EAAiBrkQ,QAAQ4zC,UAAUM,SAAS,gBAC5CmwN,EAAiBrkQ,QAAQi2D,cAActjB,SACvC0xN,EAAiBlpN,OAAOvH,UAAUjB,OAAOspN,KAGzCoI,EAAiBrkQ,QAAQ2yC,QAEjC,EACO0xN,CACX,CAuGH,CA9MD,CA8MGlJ,IAAkBA,EAAgB,CAAC,kLC12DlC5+M,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAazCC,EAA0C,SAAUC,EAAYzB,EAAQn/C,EAAK6gD,GAC7E,IAA2H3pB,EAAvHD,EAAI5X,UAAUpmB,OAAQ4O,EAAIovB,EAAI,EAAIkoB,EAAkB,OAAT0B,EAAgBA,EAAOhhD,OAAOihD,yBAAyB3B,EAAQn/C,GAAO6gD,EACrH,GAAuB,kBAAZ/gC,SAAoD,oBAArBA,QAAQihC,SAAyBl5C,EAAIiY,QAAQihC,SAASH,EAAYzB,EAAQn/C,EAAK6gD,QACpH,IAAK,IAAI16B,EAAIy6B,EAAW3nD,OAAS,EAAGktB,GAAK,EAAGA,KAAS+Q,EAAI0pB,EAAWz6B,MAAIte,GAAKovB,EAAI,EAAIC,EAAErvB,GAAKovB,EAAI,EAAIC,EAAEioB,EAAQn/C,EAAK6H,GAAKqvB,EAAEioB,EAAQn/C,KAAS6H,GAChJ,OAAOovB,EAAI,GAAKpvB,GAAKhI,OAAOs1C,eAAegK,EAAQn/C,EAAK6H,GAAIA,CAChE,EAYI2/P,EAA8B,SAAU/6O,GAExC,SAAS+6O,IACL,OAAkB,OAAX/6O,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAOA,OAVAu/B,EAAUinN,EAAc/6O,GAIxBk0B,EAAW,EACPzB,EAAAA,EAAAA,IAAS,SACVsoN,EAAannP,UAAW,SAAK,GAChCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,QACVsoN,EAAannP,UAAW,SAAK,GACzBmnP,CACX,CAZkC,CAYhCtgN,EAAAA,IAGE4qL,EACM,UADNA,EAEK,QAFLA,EAGM,eAHNA,EAIO,gBAePnqJ,EAAuB,SAAUl7D,GAEjC,SAASk7D,EAAM3jF,EAAS0d,GACpB,OAAO+K,EAAO/L,KAAKM,KAAMU,EAAS1d,IAAYgd,IAClD,CA6oBA,OAhpBAu/B,EAAUonC,EAAOl7D,GAYjBk7D,EAAMtnE,UAAUi8B,kBAAoB,SAAU+G,EAASC,GACnD,IAAK,IAAI/zB,EAAK,EAAGvoB,EAAKnH,OAAOC,KAAKujD,GAAU9zB,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAE9D,OADWvoB,EAAGuoB,IAEV,IAAK,SACDgrB,EAAAA,EAAAA,IAAkBv5B,KAAKhd,QAAS,CAAE,OAAS8uB,EAAAA,EAAAA,IAAWuwB,EAAQ0R,SAC9D,MACJ,IAAK,UACDxa,EAAAA,EAAAA,IAAkBv5B,KAAKhd,QAAS,CAAE,QAAU8uB,EAAAA,EAAAA,IAAWuwB,EAAQ2R,UAC/D,MACJ,IAAK,UACDza,EAAAA,EAAAA,IAAkBv5B,KAAKhd,QAAS,CAAE,OAAUq/C,EAAQyyB,SACpD,MACJ,IAAK,YACD90D,KAAKsqE,eACL,MACJ,IAAK,WACL,IAAK,WACDtqE,KAAKwoE,kBACL,MACJ,IAAK,UAED,IAAI57C,EAAIyV,EAAQc,QAAUb,EAAQa,QAClCnjC,KAAKhd,QAAQu0C,MAAMmM,MAAQxkD,SAAS8gB,KAAKhd,QAAQu0C,MAAMmM,KAAM,IAAO9W,GAAIxxC,WAAa,KACrF,MACJ,IAAK,UAED,IAAI8Y,EAAImuC,EAAQiB,QAAUhB,EAAQgB,QAClCtjC,KAAKhd,QAAQu0C,MAAMqM,KAAO1kD,SAAS8gB,KAAKhd,QAAQu0C,MAAMqM,IAAK,IAAO1vC,GAAI9Y,WAAa,KACnF,MACJ,IAAK,UACD4kB,KAAKgjP,aACL,MACJ,IAAK,iBAC8B,SAA3B3gN,EAAQmvF,eACRxxH,KAAK2nP,mBAGL3nP,KAAK4nP,qBAIrB,CACJ,EAOAjhL,EAAMtnE,UAAUu8B,cAAgB,WAC5B,MAAO,OACX,EAMA+qC,EAAMtnE,UAAUiwG,iBAAmB,WAC/BtvG,KAAK6uG,gBACT,EAMAloC,EAAMtnE,UAAUytC,eAAiB,WAC7B,OAAO9sC,KAAKotC,aAAa,GAC7B,EAMAu5B,EAAMtnE,UAAUqoB,QAAU,WAClB1nB,KAAKhd,QAAQ4zC,UAAUM,SAAS,iBAChCl3B,KAAKm7C,eAETn7C,KAAKhd,QAAQ4zC,UAAUjB,OAAOm7L,EAAiBA,EAAgBA,EAAiBA,GAChF9wN,KAAKumD,QAAU,KACfvmD,KAAK4mE,SAAW,KAChBn7D,EAAOpM,UAAUqoB,QAAQhoB,KAAKM,KAClC,EAOA2mE,EAAMtnE,UAAUisC,OAAS,WACrBtrC,KAAKhd,QAAQ4zC,UAAUzB,IAAI27L,GAC3B,IAAI5vO,EAAS,CAAC,EACM,MAAhB8e,KAAK80D,SACL5zE,EAAO4zE,OAAS90D,KAAK80D,QAEN,SAAf90D,KAAK+zC,QACL7yD,EAAO6yD,OAAQjiC,EAAAA,EAAAA,IAAW9R,KAAK+zC,QAEf,SAAhB/zC,KAAKg0C,SACL9yD,EAAO8yD,QAASliC,EAAAA,EAAAA,IAAW9R,KAAKg0C,UAEpCza,EAAAA,EAAAA,IAAkBv5B,KAAKhd,QAAS9B,GAChC8e,KAAKk4O,aAAc,EACnBl4O,KAAKsqE,eACLtqE,KAAKgjP,YACT,EACAr8K,EAAMtnE,UAAUk6C,WAAa,WACrB3mB,EAAAA,GAAQY,UACRwB,EAAAA,GAAaG,IAAI70C,OAAQ,oBAAqB0f,KAAK6nP,oBAAqB7nP,MAEhD,SAAxBA,KAAKwxH,gBACLxxH,KAAK2nP,kBAEb,EACAhhL,EAAMtnE,UAAUsoP,iBAAmB,WAC/B,GAAI3nP,KAAK8nP,qBACL,IAAK,IAAIv5O,EAAK,EAAGvoB,EAAKga,KAAK8vC,oBAAoB9vC,KAAK8nP,sBAAuBv5O,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAC7F,IAAIo4B,EAAW3gD,EAAGuoB,GAClBymB,EAAAA,GAAaG,IAAIwR,EAAU,SAAU3mC,KAAK88L,cAAe98L,KAC7D,CAER,EACA2mE,EAAMtnE,UAAU87C,aAAe,WACvBvoB,EAAAA,GAAQY,UACRwB,EAAAA,GAAaW,OAAOr1C,OAAQ,oBAAqB0f,KAAK6nP,qBAE9B,SAAxB7nP,KAAKwxH,gBACLxxH,KAAK4nP,oBAEb,EACAjhL,EAAMtnE,UAAUuoP,mBAAqB,WACjC,GAAI5nP,KAAK8nP,qBACL,IAAK,IAAIv5O,EAAK,EAAGvoB,EAAKga,KAAK8vC,oBAAoB9vC,KAAK8nP,sBAAuBv5O,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAC7F,IAAIinH,EAAWxvI,EAAGuoB,GAClBymB,EAAAA,GAAaW,OAAO6/F,EAAU,SAAUx1H,KAAK88L,cACjD,CAER,EACAn2H,EAAMtnE,UAAUyoP,mBAAqB,WACjC,IAAIC,EAAoC,KAAlB/nP,KAAK4mE,WAAmBj5D,EAAAA,EAAAA,IAAkB3N,KAAK4mE,UACjEhkE,SAASuuB,KAAOnxB,KAAK4mE,SAEzB,OADA5mE,KAAK26B,cAAc,CAAEisC,SAAUmhL,IAAmB,GACf,kBAAnB/nP,KAAK4mE,SACjBhkE,SAAS2P,cAAcvS,KAAK4mE,UAAY5mE,KAAK4mE,QACrD,EACAD,EAAMtnE,UAAUy9L,cAAgB,SAAUrhN,GAWtC,GAV4B,eAAxBukB,KAAKwxH,gBACA7jH,EAAAA,EAAAA,IAAkB3N,KAAKhd,UAAcgd,KAAKhd,QAAQ2vD,eAAiBl3D,EAAE0iD,QACrEn+B,KAAKhd,QAAQ2vD,cAAsD,SAAtC3yC,KAAKhd,QAAQ2vD,aAAaxc,SAC1B,MAA1B16C,EAAE0iD,OAAO8a,eACbj5C,KAAKwoE,kBAGoB,SAAxBxoE,KAAKwxH,gBACVxxH,KAAKilE,OAEmB,SAAxBjlE,KAAKwxH,gBACDxxH,KAAK8nP,qBAAsB,CAC3B,IAAIE,EAAgBhoP,KAAKioP,oBAAoBjoP,KAAK8nP,qBAAsBrsQ,EAAE0iD,QACrE6pN,GAAkBhoP,KAAKkoP,sBAInBF,IACLhoP,KAAKkoP,uBAAwB,IAJ7BloP,KAAK81B,QAAQ,sBACb91B,KAAKkoP,uBAAwB,EAKrC,CAER,EAWAvhL,EAAMtnE,UAAU4oP,oBAAsB,SAAUF,EAAiBI,GAE7D,IADA,IAAIC,EAAgBpoP,KAAK8vC,oBAAoBi4M,GACpCM,EAAW,EAAGA,EAAWD,EAAcnwQ,OAAQowQ,IACpD,IAAIroP,KAAKsoP,iBAAiBP,EAAiBK,EAAcC,IAIrD,OAAO,EAGf,OAAO,CACX,EACA1hL,EAAMtnE,UAAUipP,iBAAmB,SAAUP,EAAiBI,GAC1D,IAAI5zM,EAAOv0C,KAAKuoP,2BAA2BR,GAC3C,IAAKxzM,EAAKP,SAAWO,EAAKR,MACtB,OAAO,EAEX,IAAKpmC,EAAAA,EAAAA,IAAkB3N,KAAKuoP,2BAA2BJ,IAOlD,CACD,IAAIK,EAAMloQ,OACNmoQ,EAAa,CACb7kN,IAAK4kN,EAAIhvH,QACT91F,KAAM8kN,EAAIliE,QACV3iJ,MAAO6kN,EAAIliE,QAAUkiE,EAAIv8G,WACzBpoG,OAAQ2kN,EAAIhvH,QAAUgvH,EAAIx8G,aAE1BplH,GAAM8rG,EAAAA,EAAAA,GAAkBq1H,GACxBjxN,EAAM,CACN8M,IAAKhd,EAAIgd,IACTF,KAAM9c,EAAI8c,KACVC,MAAO/c,EAAI8c,KAAO6Q,EAAKR,MACvBlQ,OAAQjd,EAAIgd,IAAM2Q,EAAKP,QAEvB00M,EAAc,CACd9kN,IAAK6kN,EAAW5kN,OAAS/M,EAAI8M,IAC7BF,KAAM+kN,EAAW9kN,MAAQ7M,EAAI4M,KAC7BG,OAAQ/M,EAAI+M,OAAS4kN,EAAW7kN,IAChCD,MAAO7M,EAAI6M,MAAQ8kN,EAAW/kN,MAElC,OAAOglN,EAAY9kN,IAAM,GAClB8kN,EAAYhlN,KAAO,GACnBglN,EAAY/kN,MAAQ,GACpB+kN,EAAY7kN,OAAS,CAChC,CA/BI,IAAI8kN,EAAWR,EAAcjlN,wBAC7B,QAASqR,EAAK1Q,OAAS8kN,EAAS/kN,QACzB2Q,EAAK1Q,OAAS8kN,EAAS9kN,WACnB0Q,EAAK5Q,MAAQglN,EAAShlN,UACnB4Q,EAAK7Q,KAAOilN,EAASjlN,KA4B3C,EAOAijC,EAAMtnE,UAAU+rC,UAAY,WACxB,EAEJu7B,EAAMtnE,UAAUirE,aAAe,WAC3BtqE,KAAK4oP,aAEL5oP,KAAK2qC,UAAY3qC,KAAKhd,QAAQ4zC,UAAUzB,IAAI27L,GAAkB9wN,KAAKhd,QAAQ4zC,UAAUjB,OAAOm7L,EAChG,EACAnqJ,EAAMtnE,UAAU2jP,WAAa,WACzB,KAAKr1O,EAAAA,EAAAA,IAAkB3N,KAAKumD,SAExB,GADAvmD,KAAKhd,QAAQuuB,UAAY,GACK,kBAAlBvR,KAAKumD,QACbvmD,KAAKhd,QAAQ8jE,YAAc9mD,KAAKumD,YAE/B,CACD,IAAIsiM,EAAe7oP,KAAK8nP,qBAEpB3lQ,EAAQ6d,KAAKumD,QAAQpkE,MACpB0mQ,EAAajyN,UAAUM,SAAS,qBAAqBvpB,EAAAA,EAAAA,IAAkBxrB,IACxE6d,KAAKhd,QAAQmuB,YAAYnR,KAAKumD,QAEtC,CAER,EACAogB,EAAMtnE,UAAUwoP,oBAAsB,WAClC,IAAI73O,EAAQhQ,KACZkQ,YAAW,WACPF,EAAMw4D,iBACV,GAAG,IACP,EAOA7B,EAAMtnE,UAAUmpE,gBAAkB,SAAUrqC,EAAQ6oC,IAC3Cr5D,EAAAA,EAAAA,IAAkBwwB,IACnBn+B,KAAK8oP,iBAAiB3qN,GAE1Bn+B,KAAK4oP,aACA5hL,GACDhnE,KAAK6uG,gBAEb,EACAloC,EAAMtnE,UAAUupP,WAAa,WACzB,IAAIzlO,EACAgvB,EACA41M,EAAkB/nP,KAAK8nP,qBAC3B,GAA+B,kBAApB9nP,KAAKmyC,SAAS00B,GAA6C,kBAApB7mE,KAAKmyC,SAAS20B,EAC5D3jD,EAAM,CAAEugB,KAAM1jC,KAAKmyC,SAAS00B,EAAGjjC,IAAK5jC,KAAKmyC,SAAS20B,QAEjD,GAAgC,kBAApB9mE,KAAKmyC,SAAS00B,GAA6C,kBAApB7mE,KAAKmyC,SAAS20B,GACtC,kBAApB9mE,KAAKmyC,SAAS00B,GAA6C,kBAApB7mE,KAAKmyC,SAAS20B,EAAiB,CAC9E,IAAIiiL,OAAgB,EAChBjvM,EAAU95C,KAAKhd,QAAQu0C,MAAMuiB,QACjC95C,KAAKhd,QAAQu0C,MAAMuiB,QAAU,QACzB95C,KAAKhd,QAAQ4zC,UAAUM,SAAS,iBAChC6xN,EAAgB/oP,KAAKhd,QAAQi2D,cAAc1hB,MAAMuiB,QACjD95C,KAAKhd,QAAQi2D,cAAc1hB,MAAMuiB,QAAU,SAE/C3H,EAAWnyC,KAAKgpP,kBAAkBjB,EAAiB/nP,KAAKhd,QAASgd,KAAKmyC,SAAUnyC,KAAKmjC,QAASnjC,KAAKsjC,SAE/FngB,EAD2B,kBAApBnjB,KAAKmyC,SAAS00B,EACf,CAAEnjC,KAAMyO,EAASzO,KAAME,IAAK5jC,KAAKmyC,SAAS20B,GAG1C,CAAEpjC,KAAM1jC,KAAKmyC,SAAS00B,EAAGjjC,IAAKuO,EAASvO,KAEjD5jC,KAAKhd,QAAQu0C,MAAMuiB,QAAUA,EACzB95C,KAAKhd,QAAQ4zC,UAAUM,SAAS,iBAChCl3B,KAAKhd,QAAQi2D,cAAc1hB,MAAMuiB,QAAUivM,EAEnD,MACK,GAAIhB,EAAiB,CACtB,IAAI/zM,EAASh0C,KAAKhd,QAAQ6zD,aACtBiD,EAAU95C,KAAKhd,QAAQu0C,MAAMuiB,QACjC95C,KAAKhd,QAAQu0C,MAAMuiB,QAAU,QAC7B32B,EAAMnjB,KAAKgpP,kBAAkBjB,EAAiB/nP,KAAKhd,QAASgd,KAAKmyC,SAAUnyC,KAAKmjC,QAASnjC,KAAKsjC,QAAS0Q,GACvGh0C,KAAKhd,QAAQu0C,MAAMuiB,QAAUA,CACjC,MAEI32B,EAAM,CAAEugB,KAAM,EAAGE,IAAK,IAErBj2B,EAAAA,EAAAA,IAAkBwV,KACnBnjB,KAAKhd,QAAQu0C,MAAMmM,KAAOvgB,EAAIugB,KAAO,KACrC1jC,KAAKhd,QAAQu0C,MAAMqM,IAAMzgB,EAAIygB,IAAM,KAE3C,EACA+iC,EAAMtnE,UAAUkpP,2BAA6B,SAAUzxN,GAEnD,IAEI,OADUA,EAAIoM,uBAElB,CACA,MAAO9hD,GACH,OAAO,IACX,CACJ,EACAulF,EAAMtnE,UAAU2pP,kBAAoB,SAAUC,EAAWnyN,EAAKqb,EAAUhP,EAASG,EAAS0Q,QACvE,IAAXA,IAAqBA,EAAS,GAClC,IAAIk1M,EAAUlpP,KAAKuoP,2BAA2BzxN,GAC1CqyN,EAAanpP,KAAKuoP,2BAA2BU,GACjD,IAAIt7O,EAAAA,EAAAA,IAAkBu7O,KAAYv7O,EAAAA,EAAAA,IAAkBw7O,GAChD,OAAO,KAEX,IAAIx8K,EAASs8K,EACTjP,EAAY,CAAEt2M,KAAM,EAAGE,IAAK,GAUhC,OATI9M,EAAI6b,cAA6C,SAA7B7b,EAAI6b,aAAaxc,SAA4C,SAAtB8yN,EAAU9yN,QACrE6jN,GAAYtnH,EAAAA,EAAAA,GAAkBu2H,IAGzBnyN,EAAIF,UAAUM,SAAS,gBAAqC,SAAnBy1C,EAAOx2C,UACjDW,EAAMA,EAAImiB,eAEd+gM,GAAYzmC,EAAAA,EAAAA,GAA+B5mI,EAAQ71C,IAE/Cqb,EAAS00B,GACb,QACA,IAAK,OACD,MACJ,IAAK,SACI/vC,EAAIF,UAAUM,SAAS,gBAAqC,SAAnBy1C,EAAOx2C,SAA0C,cAApBn2B,KAAK+mE,WAC5EizK,EAAUt2M,MAASpjD,OAAO+zD,WAAa,EAAI60M,EAAQn1M,MAAQ,EAElC,cAApB/zC,KAAK+mE,WACVizK,EAAUt2M,MAASylN,EAAWp1M,MAAQ,EAAIm1M,EAAQn1M,MAAQ,EAG1DimM,EAAUt2M,MAASylN,EAAWp1M,MAAQ,EAE1C,MACJ,IAAK,QACIjd,EAAIF,UAAUM,SAAS,gBAAqC,SAAnBy1C,EAAOx2C,SAA0C,cAApBn2B,KAAK+mE,WAC5EizK,EAAUt2M,MAASpjD,OAAO+zD,WAAa60M,EAAQn1M,MAEtB,cAApB/zC,KAAK+mE,WACVizK,EAAUt2M,MAASylN,EAAWp1M,MAAQm1M,EAAQn1M,MAG9CimM,EAAUt2M,MAASylN,EAAWp1M,MAI1C,OAAQ5B,EAAS20B,GACb,QACA,IAAK,MACD,MACJ,IAAK,SACIhwC,EAAIF,UAAUM,SAAS,gBAAqC,SAAnBy1C,EAAOx2C,SAA0C,cAApBn2B,KAAK+mE,WAC5EizK,EAAUp2M,KAAQtjD,OAAO8zD,YAAc,EAAI80M,EAAQl1M,OAAS,EAEnC,cAApBh0C,KAAK+mE,WACVizK,EAAUp2M,KAAQulN,EAAWn1M,OAAS,EAAIk1M,EAAQl1M,OAAS,EAG3DgmM,EAAUp2M,KAAQulN,EAAWn1M,OAAS,EAE1C,MACJ,IAAK,SACIld,EAAIF,UAAUM,SAAS,gBAAqC,SAAnBy1C,EAAOx2C,SAA0C,cAApBn2B,KAAK+mE,WAC5EizK,EAAUp2M,KAAQtjD,OAAO8zD,YAAc80M,EAAQl1M,OAEtB,cAApBh0C,KAAK+mE,YAA+BjwC,EAAIF,UAAUM,SAAS,YAGvC,cAApBl3B,KAAK+mE,YAA8BjwC,EAAIF,UAAUM,SAAS,YAC/D8iN,EAAUp2M,KAAQulN,EAAWn1M,OAASA,EAGtCgmM,EAAUp2M,KAAQulN,EAAWn1M,OAN7BgmM,EAAUp2M,KAAQulN,EAAWn1M,OAASk1M,EAAQl1M,OAY1D,OAFAgmM,EAAUt2M,MAAQP,EAClB62M,EAAUp2M,KAAON,EACV02M,CACX,EACArzK,EAAMtnE,UAAU+pP,SAAW,SAAU7/J,GACjC,IAAIw+J,EAAkB/nP,KAAK8nP,sBAC3B/P,EAAAA,EAAAA,IAAK/3O,KAAKhd,QAAS+kQ,EAAiB/nP,KAAKmjC,QAASnjC,KAAKsjC,QAAStjC,KAAKmyC,SAAS00B,EAAG7mE,KAAKmyC,SAAS20B,EAAG9mE,KAAK81O,gBAAiBvsJ,EAAOvpF,KAAKk4O,YACxI,EACAvxK,EAAMtnE,UAAU4yH,QAAU,SAAU1oC,GAChC,GAA6D,KAAzD8lB,EAAAA,EAAAA,IAAUrvG,KAAKhd,QAASgd,KAAK81O,iBAAiB79P,OAC9C,IAAI01B,EAAAA,EAAAA,IAAkB3N,KAAK81O,iBAAkB,CACzC,IAAIjwP,GAAOqsI,EAAAA,EAAAA,IAAIlyH,KAAKhd,QAASgd,KAAK81O,gBAAiBvsJ,GAC/CA,EAAM1iB,IACN7mE,KAAKhd,QAAQu0C,MAAMmM,KAAO79C,EAAK69C,KAAO,MAEtC6lD,EAAMziB,IACN9mE,KAAKhd,QAAQu0C,MAAMqM,IAAM/9C,EAAK+9C,IAAM,KAE5C,KACK,CACD,IAAI0zM,EAAct3O,KAAKuoP,2BAA2BvoP,KAAKhd,SACnDqmQ,EAAerpP,KAAKuoP,2BAA2BvoP,KAAK81O,iBACxD,IAAInoO,EAAAA,EAAAA,IAAkB2pO,KAAgB3pO,EAAAA,EAAAA,IAAkB07O,GACpD,OAAO,KAEP9/J,IAAqB,IAAZA,EAAMziB,IACXuiL,EAAazlN,IAAM0zM,EAAY1zM,IAC/B5jC,KAAKhd,QAAQu0C,MAAMqM,IAAM,MAEpBylN,EAAaxlN,OAASyzM,EAAYzzM,SACvC7jC,KAAKhd,QAAQu0C,MAAMqM,IAAM1kD,SAAS8gB,KAAKhd,QAAQu0C,MAAMqM,IAAK,KAAO0zM,EAAYzzM,OAASwlN,EAAaxlN,QAAU,OAGjH0lD,IAAqB,IAAZA,EAAM1iB,IACXwiL,EAAa1lN,MAAQ2zM,EAAY3zM,MACjC3jC,KAAKhd,QAAQu0C,MAAMmM,KAAOxkD,SAAS8gB,KAAKhd,QAAQu0C,MAAMmM,KAAM,KAAO4zM,EAAY3zM,MAAQ0lN,EAAa1lN,OAAS,KAExG0lN,EAAa3lN,KAAO4zM,EAAY5zM,OACrC1jC,KAAKhd,QAAQu0C,MAAMmM,KAAOxkD,SAAS8gB,KAAKhd,QAAQu0C,MAAMmM,KAAM,KAAO2lN,EAAa3lN,KAAO4zM,EAAY5zM,MAAQ,MAGvH,CAER,EACAijC,EAAMtnE,UAAUwvG,eAAiB,WAC7B,IAAIy6I,EAAOtpP,KAAKgnE,UAAUH,EACtB0iL,EAAOvpP,KAAKgnE,UAAUF,EACb,SAATwiL,GAA4B,SAATC,IAGV,SAATD,GAA4B,SAATC,EACnBvpP,KAAKopP,SAAS,CAAEviL,GAAG,EAAMC,GAAG,IAEd,QAATwiL,GAA2B,QAATC,EACvBvpP,KAAKiyH,QAAQ,CAAEprD,GAAG,EAAMC,GAAG,KAGd,SAATwiL,EACAtpP,KAAKopP,SAAS,CAAEviL,GAAG,EAAMC,GAAG,IAEd,SAATyiL,GACLvpP,KAAKopP,SAAS,CAAEtiL,GAAG,EAAMD,GAAG,IAEnB,QAATyiL,EACAtpP,KAAKiyH,QAAQ,CAAEprD,GAAG,EAAMC,GAAG,IAEb,QAATyiL,GACLvpP,KAAKiyH,QAAQ,CAAEprD,GAAG,EAAOC,GAAG,KAGxC,EAQAH,EAAMtnE,UAAU6lE,KAAO,SAAUotD,EAAkBk3H,GAC/C,IAAIx5O,EAAQhQ,KASZ,GARsBA,KAAK8nP,qBACPlxN,UAAUM,SAAS,mBACnCl3B,KAAKypP,kBAAoBzpP,KAAKhd,QAAQwhD,uBAAuB,sBAAsB,IAEvFxkC,KAAKu5C,eACA5rC,EAAAA,EAAAA,IAAkB3N,KAAKypP,oBAAsB72N,EAAAA,GAAQmB,QACtD/zB,KAAKypP,kBAAkBlyN,MAAMuiB,QAAU,SAEvB,MAAhB95C,KAAK80D,UAAoBnnD,EAAAA,EAAAA,IAAkB67O,GAAkB,CAC7D,IAAI3D,GAAiBl4O,EAAAA,EAAAA,IAAkB67O,GAAoBxpP,KAAKhd,QAAUwmQ,EAC1ExpP,KAAK80D,OAASg8D,EAAiB+0H,IAC/BtsN,EAAAA,EAAAA,IAAkBv5B,KAAKhd,QAAS,CAAE,OAAUgd,KAAK80D,QACrD,CACAw9D,GAAqB3kH,EAAAA,EAAAA,IAAkB2kH,IAAiD,kBAArBA,EAC5CtyH,KAAK0pP,cAAxBp3H,EACqB,SAArBtyH,KAAKgnE,UAAUH,GAAqC,SAArB7mE,KAAKgnE,UAAUF,KAC9C3vC,EAAAA,EAAAA,IAAY,CAACn3B,KAAKhd,SAAU8tO,IAC5Br6L,EAAAA,EAAAA,IAAS,CAACz2B,KAAKhd,SAAU8tO,GACzB9wN,KAAK6uG,kBACL13E,EAAAA,EAAAA,IAAY,CAACn3B,KAAKhd,SAAU8tO,IAC5Br6L,EAAAA,EAAAA,IAAS,CAACz2B,KAAKhd,SAAU8tO,KAExBnjN,EAAAA,EAAAA,IAAkB2kH,KAenBn7F,EAAAA,EAAAA,IAAY,CAACn3B,KAAKhd,SAAU8tO,IAC5Br6L,EAAAA,EAAAA,IAAS,CAACz2B,KAAKhd,SAAU8tO,GACzB9wN,KAAK81B,QAAQ,UAhBbw8F,EAAiB9wF,MAAQ,WAChBxxB,EAAM4qB,eACPzD,EAAAA,EAAAA,IAAY,CAACnnB,EAAMhtB,SAAU8tO,IAC7Br6L,EAAAA,EAAAA,IAAS,CAACzmB,EAAMhtB,SAAU8tO,GAElC,EACAx+F,EAAiBpqH,IAAM,WACd8H,EAAM4qB,aACP5qB,EAAM8lB,QAAQ,OAEtB,EACA,IAAIkK,EAAAA,GAAUsyF,GAAkB3xF,QAAQ3gC,KAAKhd,SAOrD,EAOA2jF,EAAMtnE,UAAU4lE,KAAO,SAAUqtD,GAC7B,IAAItiH,EAAQhQ,KACZsyH,GAAqB3kH,EAAAA,EAAAA,IAAkB2kH,IAAiD,kBAArBA,EAC5CtyH,KAAK2pP,cAAxBr3H,GACC3kH,EAAAA,EAAAA,IAAkB2kH,KAWnBn7F,EAAAA,EAAAA,IAAY,CAACn3B,KAAKhd,SAAU8tO,IAC5Br6L,EAAAA,EAAAA,IAAS,CAACz2B,KAAKhd,SAAU8tO,GACzB9wN,KAAK81B,QAAQ,WAZbw8F,EAAiBpqH,IAAM,WACd8H,EAAM4qB,eACPzD,EAAAA,EAAAA,IAAY,CAACnnB,EAAMhtB,SAAU8tO,IAC7Br6L,EAAAA,EAAAA,IAAS,CAACzmB,EAAMhtB,SAAU8tO,GAC1B9gN,EAAM8lB,QAAQ,SAEtB,EACA,IAAIkK,EAAAA,GAAUsyF,GAAkB3xF,QAAQ3gC,KAAKhd,UAOjDgd,KAAKm7C,cACT,EAOAwrB,EAAMtnE,UAAUywC,oBAAsB,SAAU9sD,GAE5C,OADAgd,KAAK8oP,iBAAiB9lQ,GACf8sD,EAAoB9sD,EAASgd,KAAKk4O,YAC7C,EACAvxK,EAAMtnE,UAAUypP,iBAAmB,SAAU9lQ,GAEzC,IADA,IAAIqtB,EAASrtB,EAAQi2D,cACd5oC,GAA6B,SAAnBA,EAAO8lB,SAAoB,CACxC,IAAIyzN,EAAc1lN,iBAAiB7zB,GACN,UAAzBu5O,EAAYz3M,YAAyBxkC,EAAAA,EAAAA,IAAkB3N,KAAKhd,UAAYgd,KAAKhd,QAAQ2vD,cAC/C,SAAtC3yC,KAAKhd,QAAQ2vD,aAAaxc,SAA+E,WAAzD+N,iBAAiBlkC,KAAKhd,QAAQ2vD,cAAcoE,WAC5F/2C,KAAKhd,QAAQu0C,MAAMqM,IAAMtjD,OAAOk5I,QAAUt6I,SAAS8gB,KAAKhd,QAAQu0C,MAAMqM,IAAK,KACvE9xB,EAAAA,EAAAA,IAAWxxB,OAAOk5I,QAAUt6I,SAAS8gB,KAAKhd,QAAQu0C,MAAMqM,IAAK,MAC3D9xB,EAAAA,EAAAA,IAAW5yB,SAAS8gB,KAAKhd,QAAQu0C,MAAMqM,IAAK,IAAMtjD,OAAOk5I,SAC/Dx5H,KAAKhd,QAAQu0C,MAAM4a,SAAW,QAC9BnyC,KAAKk4O,aAAc,GAEvB7nO,EAASA,EAAO4oC,gBACXtrC,EAAAA,EAAAA,IAAkB3N,KAAKhd,WAAY2qB,EAAAA,EAAAA,IAAkB3N,KAAKhd,QAAQ2vD,eAA0C,UAAzBi3M,EAAYz3M,UAC7D,UAAhCnyC,KAAKhd,QAAQu0C,MAAM4a,WACtBnyC,KAAKk4O,aAAc,EAE3B,CACJ,EACAv4M,EAAW,EACPzB,EAAAA,EAAAA,IAAS,SACVyoC,EAAMtnE,UAAW,cAAU,GAC9BsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,SACVyoC,EAAMtnE,UAAW,aAAS,GAC7BsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACVyoC,EAAMtnE,UAAW,eAAW,GAC/BsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,cACVyoC,EAAMtnE,UAAW,kBAAc,GAClCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACVyoC,EAAMtnE,UAAW,uBAAmB,GACvCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,CAAE2oC,EAAG,OAAQC,EAAG,UAC1BH,EAAMtnE,UAAW,iBAAa,GACjCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,KACVyoC,EAAMtnE,UAAW,gBAAY,GAChCsgC,EAAW,EACPrB,EAAAA,EAAAA,IAAQ,CAAC,EAAGkoN,IACb7/K,EAAMtnE,UAAW,gBAAY,GAChCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,IACVyoC,EAAMtnE,UAAW,eAAW,GAC/BsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,IACVyoC,EAAMtnE,UAAW,eAAW,GAC/BsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,MACVyoC,EAAMtnE,UAAW,cAAU,GAC9BsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVyoC,EAAMtnE,UAAW,iBAAa,GACjCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,eACVyoC,EAAMtnE,UAAW,sBAAkB,GACtCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACVyoC,EAAMtnE,UAAW,qBAAiB,GACrCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACVyoC,EAAMtnE,UAAW,qBAAiB,GACrCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDm3D,EAAMtnE,UAAW,YAAQ,GAC5BsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDm3D,EAAMtnE,UAAW,aAAS,GAC7BsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDm3D,EAAMtnE,UAAW,0BAAsB,GAC1CsnE,EAAQhnC,EAAW,CACfhB,EAAAA,IACDgoC,EAEP,CAlpB2B,CAkpBzBt8B,EAAAA,IAUK,SAASyF,EAAoB9sD,EAASk1P,GAKzC,IAJA,IAAIz4L,EAAWvb,iBAAiBlhD,GAC5BolQ,EAAgB,GAChByB,EAAgB,gBAChBx5O,EAASrtB,EAAQi2D,cACd5oC,GAA6B,SAAnBA,EAAO8lB,SAAoB,CACxC,IAAIyzN,EAAc1lN,iBAAiB7zB,GACP,aAAtBovC,EAAStN,UAAoD,WAAzBy3M,EAAYz3M,WAC/C03M,EAAc/hP,KAAK8hP,EAAY7yM,SAAW6yM,EAAYjqM,UAAYiqM,EAAYlqM,YACjF0oM,EAAc3oQ,KAAK4wB,GAEvBA,EAASA,EAAO4oC,aACpB,CAIA,OAHKi/L,GACDkQ,EAAc3oQ,KAAKmjB,UAEhBwlP,CACX,CAQO,SAASt3H,EAAiB9tI,GAI7B,IAFA,IAAIqtB,EAASrtB,EAAQi2D,cACjB6wM,EAAe,GACZz5O,GACoB,SAAnBA,EAAO8lB,SADA,CAEP,IAAIrvC,EAAQ8b,SAASC,YAAYqhC,iBAAiB7zB,EAAQ,MAAM8zB,iBAAiB,WAC7EgO,EAAWvvC,SAASC,YAAYqhC,iBAAiB7zB,EAAQ,MAAM8zB,iBAAiB,YACtE,SAAVr9C,GAAiC,WAAbqrD,GACpB23M,EAAarqQ,KAAKqH,GAEtBupB,EAASA,EAAO4oC,aAKxB,CAEA,IADA,IAAI8wM,EAAiB,GACZ5kP,EAAI,EAAGA,EAAIvC,SAASuuB,KAAKv5C,SAASK,OAAQktB,IAC/C,IAAKniB,EAAQw5L,YAAY55K,SAASuuB,KAAKv5C,SAASutB,IAAK,CAC7Cre,EAAQ8b,SAASC,YAAYqhC,iBAAiBthC,SAASuuB,KAAKv5C,SAASutB,GAAI,MAAMg/B,iBAAiB,WAChGgO,EAAWvvC,SAASC,YAAYqhC,iBAAiBthC,SAASuuB,KAAKv5C,SAASutB,GAAI,MAAMg/B,iBAAiB,YACzF,SAAVr9C,GAAiC,WAAbqrD,GACpB43M,EAAetqQ,KAAKqH,EAE5B,CAEJijQ,EAAetqQ,KAAK,OACpB,IAAIuqQ,EAAiB,GACrB,KAAKr8O,EAAAA,EAAAA,IAAkB3qB,EAAQi2D,gBAAoD,SAAlCj2D,EAAQi2D,cAAc9iB,QACnE,KAAI2tB,EAAa,GAAGzmD,MAAMqC,KAAK1c,EAAQi2D,cAAcrhE,UACrD,IAASutB,EAAI,EAAGA,EAAI2+C,EAAW7rE,OAAQktB,IACnC,IAAKniB,EAAQw5L,YAAY14H,EAAW3+C,IAAK,CACjCre,EAAQ8b,SAASC,YAAYqhC,iBAAiB4f,EAAW3+C,GAAI,MAAMg/B,iBAAiB,WACpFgO,EAAWvvC,SAASC,YAAYqhC,iBAAiB4f,EAAW3+C,GAAI,MAAMg/B,iBAAiB,YAC7E,SAAVr9C,GAAiC,WAAbqrD,GACpB63M,EAAevqQ,KAAKqH,EAE5B,CAR0D,CAWlE,IAAImjQ,EAAaH,EAAanpQ,OAAOopQ,EAAgBC,GAEjDE,EAAqBroP,KAAK8e,IAAIzhB,MAAM2C,KAAMooP,GAAc,EAC5D,OAAOC,EAAqB,WAAa,WAAaA,CAC1D,oICjyBIC,EAAgB,CAAC,EACjBC,EAAiB,GACjBC,EAAkB,GAClBC,EAAiB,GACjBC,EAAoB,GACpBC,EAAkB,GAClBC,EAAmB,GACnBC,EAAmB,GACnBC,EAAe,cACfC,EAAe,cACfC,EAAmB,kBACnBC,EAAoB,mBACpBC,EAAiB,gBACjBC,EAAiB,gBACjBC,EAAmB,kBACnBC,EAAe,mBACfC,EAAgB,oBAChBC,EAAgB,oBAChBC,EAAuB,uBACvBC,EAAe,iBACfC,EAAiB,kBACjBC,EAAiB,gBACjBC,EAAc,aACdC,EAAgB,eAChBC,EAAmB,kBACnBC,EAAe,KACfC,EAAe,KAiDZ,SAAS9iJ,EAAc96G,EAAMujO,GAChC,IAAIxrO,EACJ,GAAKiI,EAAKkwC,OAAV,CAGA,IAAI2F,EACA2tL,GAAe9jN,EAAAA,EAAAA,IAAkB6jN,GAAiD5gN,EAAAA,GAAxB4gN,EAE1DxwJ,EA8dR,SAAkC7iC,EAAQszL,GACtC,IAAIq6B,EAAmBr6B,EAAY,MAAO,CAAC,GACvCs6B,EAAwBt6B,EAAY,MAAO,CAAC,GAMhD,OALAq6B,EAAiBl1N,UAAUzB,IAAIm2N,GAC/BS,EAAsBn1N,UAAUzB,IAAIo2N,GACpCptN,EAAOhtB,YAAY26O,GACnBA,EAAiB36O,YAAY46O,GAEtB,CAAE1gM,KAAMygM,EAAkBE,WAAYD,EACjD,CAveoBE,CAAyBh+P,EAAKkwC,OAAQszL,GACtD,KAAK9jN,EAAAA,EAAAA,IAAkB1f,EAAK9N,UAAW,CACnC,IAAI+rQ,EAAaj+P,EAAK9N,SAAS8T,MAAM,KAAK9V,QAAO,SAAUlD,GAAa,MAA4B,KAArBA,EAAUggE,MAAe,KACvGj1D,EAAKg7E,EAAU3V,KAAKz0B,WAAWzB,IAAIj2B,MAAMlZ,EAAIkmQ,EAClD,CACA,IAAKv+O,EAAAA,EAAAA,IAAkB1f,EAAKuI,YAAcmX,EAAAA,EAAAA,IAAkBi+O,GAKvD,CACD,IAAIO,GAASx+O,EAAAA,EAAAA,IAAkB1f,EAAK3T,MAsJ5C,SAAkB0mF,GACd,IAAImrL,EAAQ7rQ,OAAO4jD,iBAAiB88B,EAAW,UAAU78B,iBAAiB,WAC1E,OAAOgoN,EAAM11P,QAAQ,SAAU,GACnC,CAzJgE21P,CAASprL,EAAU3V,MAA/Bp9D,EAAK3T,KAEjDwpD,EAyWR,SAAyBiQ,EAAOo4M,GAC5B,IAAIE,EACJ,OAAQF,GACJ,IAAK,WACDE,EAAcjC,EACd,MACJ,IAAK,YACDiC,EAAchC,EACd,MACJ,IAAK,SAGL,IAAK,WACL,IAAK,gBACDgC,EAAc/B,EACd,MACJ,IAAK,SACD+B,EAAc9B,EACd,MACJ,IAAK,aACD8B,EAAc5B,EACd,MACJ,IAAK,aACD4B,EAAc3B,EACd,MACJ,QACI2B,EAAc7B,EAGtB,OADAz2M,EAAQA,EAAQ9tB,WAAW8tB,EAAQ,IAAMs4M,EACxB,cAAVF,EAAwBp4M,EAAQA,EAAQ,CACnD,CAvYiBu4M,EADI3+O,EAAAA,EAAAA,IAAkB1f,EAAK8lD,YAAsB74D,EAAb+S,EAAK8lD,MAClBo4M,GAChCI,EAASJ,EAAOnrL,EAAU3V,KAAMvnB,EAAQ2tL,IACnC9jN,EAAAA,EAAAA,IAAkB1f,EAAKrV,QAcpC,SAAqBooF,EAAWpoF,EAAO64O,GACnC,IAAI+6B,EAAW/6B,EAAY,MAAO,CAAC,GACnC+6B,EAAS51N,UAAUzB,IAAIu2N,GACvBc,EAASj7O,UAAY34B,EACrBooF,EAAU7vD,YAAYq7O,EAE1B,CAnBYC,CAAYzrL,EAAUgrL,WAAY/9P,EAAKrV,MAAO64O,EAEtD,KAb2E,CACvE,IAAIj7N,GAAYmX,EAAAA,EAAAA,IAAkB1f,EAAKuI,UAA4Bo1P,EAAhB39P,EAAKuI,SACxDwqE,EAAU3V,KAAKz0B,UAAUzB,IAAIw2N,GAC7Be,EAAe1rL,EAAU3V,KAAM70D,EAAUq1P,EAC7C,CAUA7qL,EAAU3V,KAAKz0B,UAAUzB,IAAIy1N,GAC7B5pL,EAAY,IAxBZ,CAyBJ,CAwJA,SAASurL,EAASJ,EAAOnrL,EAAWl9B,EAAQ2tL,GACxC,IAAIk7B,EAAiB3rL,EAAUzuD,cAAc,IAAMg5O,GAC/CqB,EAAMD,EAAep6O,cAAc,OAIvC,QAHK5E,EAAAA,EAAAA,IAAkBi/O,IACnBD,EAAen0N,YAAYo0N,GAEvBT,GACJ,IAAK,YAzIb,SAA+BnrL,EAAWl9B,EAAQ2tL,GAC9C,IAAIlnL,EAAWsiN,IACf1C,EAAc,GAAK5/M,GAAY,CAAEuwL,QAAS,EAAGxgP,KAAM,WAAYwpD,OAAQA,GACvEgpN,EAAwB9rL,EAAWz2B,EAAUknL,EAAao5B,GAC1DkC,EAAyBjpN,EAAQk9B,EAAW,WAAY6pL,EAC5D,CAqIYmC,CAAsBL,EAAgB7oN,EAAQ2tL,GAC9C,MACJ,IAAK,aA/Hb,SAAgCzwJ,EAAWl9B,EAAQ2tL,GAC/C,IAAIlnL,EAAWsiN,IACf1C,EAAc,GAAK5/M,GAAY,CAAEuwL,QAAS,EAAGxgP,KAAM,YAAawpD,OAAQA,GACxEgpN,EAAwB9rL,EAAWz2B,EAAUknL,EAAaq5B,GAC1DiC,EAAyBjpN,EAAQk9B,EAAW,YAAa8pL,EAC7D,CA2HYmC,CAAuBN,EAAgB7oN,EAAQ2tL,GAC/C,MACJ,IAAK,UA3Eb,SAA6BzwJ,EAAWl9B,EAAQ2tL,GAC5C,IAAIlnL,EAAWsiN,IACf1C,EAAc,GAAK5/M,GAAY,CAAEuwL,QAAS,EAAGxgP,KAAM,SAAUwpD,OAAQA,GACrEopN,EAAsBlsL,EAAWz2B,EAAUwgN,EAAgBt5B,GAC3D07B,EAAwBrpN,EAAQk9B,EAAW+pL,EAC/C,CAuEYqC,CAAoBT,EAAgB7oN,EAAQ2tL,GAC5C,MACJ,IAAK,UAjEb,SAA4BzwJ,EAAWl9B,EAAQ2tL,GAC3C,IAAIlnL,EAAWsiN,IACf1C,EAAc,GAAK5/M,GAAY,CAAEuwL,QAAS,EAAGxgP,KAAM,SAAUwpD,OAAQA,GACrEopN,EAAsBlsL,EAAWz2B,EAAUygN,EAAgBv5B,GAC3D07B,EAAwBrpN,EAAQk9B,EAAWgqL,EAC/C,CA6DYqC,CAAmBV,EAAgB7oN,EAAQ2tL,GAC3C,MACJ,IAAK,aAyBb,SAAgCk7B,EAAgB7oN,EAAQ2tL,GACpD,IAAIlnL,EAAWsiN,IACf1C,EAAc,GAAK5/M,GAAY,CAAEuwL,QAAS,EAAGxgP,KAAM,YAAawpD,OAAQA,GAY5E,SAAkC6oN,EAAgBpiN,EAAUknL,GACxD,IAAI67B,EAAU1qP,SAASyzB,gBAAgB,6BAA8B,OACjEk3N,EAAe,GACfC,EAAQ,GACRC,EAAgB,EACpBH,EAAQh3N,aAAa,KAAMiU,GAC3B+iN,EAAQh3N,aAAa,QAAS40N,GAC9BoC,EAAQh3N,aAAa,UAAW,OAASi3N,EAAe,IAAMA,GAC9DZ,EAAe30N,aAAas1N,EAASX,EAAepxI,YACpD,IAAK,IAAInwH,EAAO,EAAGA,GAAQ,EAAGA,IAAQ,CAClC,IAAIsiQ,EAAa9qP,SAASyzB,gBAAgB,6BAA8B,UACxEq3N,EAAWp3N,aAAa,QAASk1N,EAAiB,IAAMpgQ,GACxDsiQ,EAAWp3N,aAAa,IAAKm3N,EAAgB,IAC7CC,EAAWp3N,aAAa,YAAa,aAAek3N,EAAQ,IAAMA,EAAQ,KAC1EF,EAAQn8O,YAAYu8O,EACxB,CACJ,CA3BIC,CAAyBhB,EAAgBpiN,GAmC7C,SAAmCoiN,EAAgB7oN,GAC/C,IAAI8oN,EAAMD,EAAep6O,cAAc,wBACnCqa,EAAI,EACJ14B,EAAI,EACJ05P,EAAM,GACVhB,EAAIr1N,MAAMwc,MAAQ64M,EAAIr1N,MAAMyc,OAASlQ,EAAS,KAE9C,IADA,IAAI+pN,EAAW,GACNziQ,EAAO,EAAGA,GAAQ,EAAGA,IAAQ,CAClC,IAAIqiB,EAAQqgP,EAAgBlhO,EAAG14B,EAAG05P,EAAKC,GACnCE,EAAYnB,EAAIr6O,cAAc,IAAMi5O,EAAiB,IAAMpgQ,GAC/D2iQ,EAAUz3N,aAAa,KAAM7oB,EAAMmf,EAAI,IACvCmhO,EAAUz3N,aAAa,KAAM7oB,EAAMvZ,EAAI,IACvC25P,EAAWA,GAAY,IAAM,EAAIA,EACjCA,GAAsB,EAC1B,CACJ,CAjDIG,CAA0BrB,EAAgB7oN,EAC9C,CA7BYmqN,CAAuBtB,EAAgB7oN,GACvC,MACJ,IAAK,gBA7Cb,SAAmCk9B,EAAWl9B,EAAQ2tL,GAClD,IAAIlnL,EAAWsiN,IACf1C,EAAc,GAAK5/M,GAAY,CAAEuwL,QAAS,EAAGxgP,KAAM,eAAgBwpD,OAAQA,GAC3EopN,EAAsBlsL,EAAWz2B,EAAU8gN,EAAsB55B,GACjE07B,EAAwBrpN,EAAQk9B,EAAWqqL,EAC/C,CAyCY6C,CAA0BvB,EAAgB7oN,EAAQ2tL,GAClD,MACJ,IAAK,cAjIb,SAAiCzwJ,EAAWl9B,EAAQ2tL,GAChD,IAAIlnL,EAAWsiN,IACf1C,EAAc,GAAK5/M,GAAY,CAAEuwL,QAAS,EAAGxgP,KAAM,aAAcwpD,OAAQA,GACzEgpN,EAAwB9rL,EAAWz2B,EAAUknL,EAAa05B,GAC1D4B,EAAyBjpN,EAAQk9B,EAAW,aAAcmqL,EAC9D,CA6HYgD,CAAwBxB,EAAgB7oN,EAAQ2tL,GAChD,MACJ,IAAK,cAvHb,SAAiCzwJ,EAAWl9B,EAAQ2tL,GAChD,IAAIlnL,EAAWsiN,IACf1C,EAAc,GAAK5/M,GAAY,CAAEuwL,QAAS,EAAGxgP,KAAM,aAAcwpD,OAAQA,GACzEgpN,EAAwB9rL,EAAWz2B,EAAUknL,EAAa25B,GAC1D2B,EAAyBjpN,EAAQk9B,EAAW,aAAcoqL,EAC9D,CAmHYgD,CAAwBzB,EAAgB7oN,EAAQ2tL,GAChD,MACJ,IAAK,WACL,IAAK,iBApEb,SAA+BzwJ,EAAWl9B,EAAQ2tL,GAC9C,IAAIlnL,EAAWsiN,IACf1C,EAAc,GAAK5/M,GAAY,CAAEuwL,QAAS,EAAGxgP,KAAM,WAAYwpD,OAAQA,GACvEopN,EAAsBlsL,EAAWz2B,EAAU0gN,EAAkBx5B,GAC7D07B,EAAwBrpN,EAAQk9B,EAAWiqL,EAC/C,CAgEYoD,CAAsB1B,EAAgB7oN,EAAQ2tL,GAG1D,CAoEA,SAAS68B,EAAe9sN,EAAOR,GAC3B,IAAIutN,EAAS,GACT9gP,EAAQ+zB,EACRt5B,EAAM84B,EAENi6L,GAAY,EAAO/pK,EAAQ,EA+B/B,OAxBA,SAASs9L,EAAWrpP,GAChBopP,EAAO9uQ,KAAK0lB,IACRA,IAAM+C,GAAiB,IAAVgpD,KACT/rD,GAAKsI,GAAStI,EAAI,IAAM81N,EACxB91N,EAAI8gB,YAAY9gB,EAAI,IAAKgc,QAAQ,IAEtB,IAANhc,GACLA,EAAI,EACJA,EAAI8gB,YAAY9gB,EAAI,IAAKgc,QAAQ,IACjC85M,GAAY,GAEP91N,EAAI,GAAK81N,EAEJ,KADV91N,EAAI8gB,YAAY9gB,EAAI,IAAKgc,QAAQ,OAE7B85M,GAAY,GAGX91N,GAAK,IAAM81N,IAChB91N,EAAI8gB,YAAY9gB,EAAI,IAAKgc,QAAQ,OAEnC+vC,EACFs9L,EAAWrpP,GAEnB,CA7BAqpP,CAAW/gP,GA8BJ8gP,CACX,CA+CA,SAAS7B,EAAe1rL,EAAWxqE,EAAUrW,IACpCwtB,EAAAA,EAAAA,IAAkBxtB,IACnB6gF,EAAUpqC,UAAUzB,IAAIh1C,GAEhB6gF,EAAUzuD,cAAc,oBAC9BhB,UAAY/a,CACtB,CAyDA,SAASq2P,IAGL,IAFA,IAAI/qP,EAAS,GACTuvF,EAAU,iEACLlsF,EAAI,EAAGA,EAAI,EAAGA,IACnBrD,GAAUuvF,EAAQl0F,OAAO0E,KAAKiU,MAAsBu7E,GAAhBxvF,KAAKC,WAE7C,OAAOA,CACX,CAUA,SAASorP,EAAsBuB,EAAUlkN,EAAUmkN,EAAYj9B,GAC3D,IAAIk9B,EAAY/rP,SAASyzB,gBAAgB,6BAA8B,OACvEs4N,EAAUr4N,aAAa,KAAMiU,GAC7BokN,EAAUr4N,aAAa,QAASo4N,GAChC,IAAIE,EAAmBhsP,SAASyzB,gBAAgB,6BAA8B,QAC9Eu4N,EAAiBt4N,aAAa,QAASk1N,GACvC,IAAIqD,EAAkBjsP,SAASyzB,gBAAgB,6BAA8B,QAC7Ew4N,EAAgBv4N,aAAa,QAASm1N,GACtCgD,EAASz2N,aAAa22N,EAAWF,EAASlzI,YAC1CozI,EAAUx9O,YAAYy9O,GACtBD,EAAUx9O,YAAY09O,EAC1B,CAUA,SAAS/B,EAAwBH,EAAgBpiN,EAAUknL,EAAa55D,GACpE,IAAIi3F,EAAclsP,SAASyzB,gBAAgB,6BAA8B,OACrE04N,EAAgBnsP,SAASyzB,gBAAgB,6BAA8B,QAC3Ey4N,EAAYx4N,aAAa,QAASuhI,GAClCi3F,EAAYx4N,aAAa,KAAMiU,GAC/BwkN,EAAcz4N,aAAa,QAASk1N,GACpCmB,EAAe30N,aAAa82N,EAAanC,EAAepxI,YACxDuzI,EAAY39O,YAAY49O,EAC5B,CAuBA,SAASC,EAAgBC,IAmBzB,SAAsBxhP,EAAOvF,EAAK+3B,EAAQ6B,EAAUovB,EAAOvwC,EAAKsuO,GAC5D,IAAIrqQ,IAAOqqQ,EAAYC,WAAWD,EAAY1kN,UAAU4kN,WACpD32K,GAAY,IAAIl5F,MAAOwE,UACvBtI,EAAS0sB,EAAMuF,EACfu2B,GAqESzmD,EArEiE,EAAtD0xQ,EAAYC,WAAWD,EAAY1kN,UAAUzG,OAAc,GAsEtE7d,WAAW1oC,IArEpB6xQ,EAAaC,EAAcrrN,GAC3BsrN,GAAU,IAAML,EAAYC,WAAWD,EAAY1kN,UAAU2mB,OAAS,GAmE9E,IAAiB3zE,EAhEb,SAASgyQ,EAAcN,GACnB,IAAI5jK,EAAcxpF,KAAK8e,IAAI,EAAG9e,KAAK6e,KAAI,IAAIphC,MAAOwE,UAAY00F,EAAW12C,IACzE0tN,EAAWvvN,EAAOorD,EAAa59E,EAAOjyB,EAAQsmD,GAAWmtN,EAAYjuL,WACjEp8E,IAAOqqQ,EAAYC,WAAWD,EAAY1kN,UAAU4kN,YAAc9jK,EAAcvpD,EAEhFqoN,EAAc8E,EAAY1kN,UAAUuwL,QAAU5qN,WAAWq/O,EAAcvwP,KAAK,KAAMiwP,GAAc,GAGhGD,EAAgBC,EAExB,CAOA,SAASO,EAAWjyQ,EAAOyjF,GACvB,KAAKrzD,EAAAA,EAAAA,IAAkBqzD,EAAUzuD,cAAc,2BAA4B5E,EAAAA,EAAAA,IAAkBqzD,EAAUzuD,cAAc,yBAA0B,CAC3I,IAAIq6O,OAAM,EAOV,IANKj/O,EAAAA,EAAAA,IAAkBqzD,EAAUzuD,cAAc,0BAA4B5E,EAAAA,EAAAA,IAAkBqzD,EAAUzuD,cAAc,uBAAuBA,cAAc,wBAGhJ5E,EAAAA,EAAAA,IAAkBqzD,EAAUzuD,cAAc,2BAA6B5E,EAAAA,EAAAA,IAAkBqzD,EAAUzuD,cAAc,wBAAwBA,cAAc,yBAC7Jq6O,EAAM5rL,EAAUzuD,cAAc,yBAH9Bq6O,EAAM5rL,EAAUzuD,cAAc,yBAK7B5E,EAAAA,EAAAA,IAAkBi/O,GAAM,CACzB,IAAIzqP,EAAOyqP,EAAIr6O,cAAc,sBAC7BpQ,EAAKm0B,aAAa,oBAAqBm5N,EAAczrN,EAAUorN,EAAY7xQ,EAAOojC,GAAO,IACzFxe,EAAKm0B,aAAa,YAAa,UAAag5N,EAAU,IAAMtrN,EAAW,EAAI,IAAMA,EAAW,EAAI,IACpG,CACJ,CACJ,CAlCAurN,EAAcN,EAmClB,CAxDIS,CAJY,EACF,IAGeC,EAFV,KAEmCV,EAAYC,WAAWD,EAAY1kN,UAAU2mB,MADrF,GACiG+9L,GAC3GA,EAAYC,WAAWD,EAAY1kN,UAAU2mB,QAAU+9L,EAAYC,WAAWD,EAAY1kN,UAAU2mB,MAAQ,CAChH,CAgEA,SAAS67L,EAAyBjpN,EAAQk9B,EAAW1mF,EAAMu9K,GACvD,IAAI7zH,EAAoB,EAATF,EACX8oN,EAAM5rL,EAAUzuD,cAAc,OAASslJ,GACvC11J,EAAOyqP,EAAIr6O,cAAc,sBACzB68O,EAAaC,EAAcrrN,GAC3B4rN,EAAmB5rN,EAAW,EAAK,KACvC4oN,EAAIt2N,aAAa,UAAW,OAAS0N,EAAW,IAAMA,GACtD4oN,EAAIr1N,MAAMwc,MAAQ64M,EAAIr1N,MAAMyc,OAAShQ,EAAW,KAChD4oN,EAAIr1N,MAAMq4N,gBAAkBA,EAAkB,IAAMA,EAAkB,IAAMA,EAC5EztP,EAAKm0B,aAAa,IAsBtB,SAAiB0N,EAAUorN,GACvB,IAAItrN,EAASE,EAAW,EACpBf,EAASmsN,EAAa,EAC1B,MAAO,IAAMtrN,EAAS,IAAMb,EACtB,KAAOa,EAASb,GAAU,KAAOa,EAASb,GAAU,UAAYA,EAAS,IAAMa,CACzF,CA3B2B+rN,CAAQ7rN,EAAUorN,IAC5B,aAAT90Q,GAAgC,cAATA,IACvB6nB,EAAKm0B,aAAa,eAAgB84N,EAAa,IAC/CjtP,EAAKm0B,aAAa,oBAAsB0N,EAAWorN,GAAcvtP,KAAKiuP,GAAK,IAAQ,IACnF3tP,EAAKm0B,aAAa,oBAAqBm5N,EAAczrN,EAAUorN,EAAY,EAAG,IAAM,IAE5F,CA2BA,SAASC,EAAcrrN,GACnB,MAAO,GAAWA,CACtB,CASA,SAASyrN,EAAczrN,EAAUorN,EAAY7xQ,EAAOojC,GAChD,OAAQqjB,EAAWorN,GAAcvtP,KAAKiuP,IAAO,EAAKnvO,EAAO,IAAQpjC,EAAQ,IAC7E,CASA,SAASoyQ,EAAcxsQ,EAASsqB,EAAOjyB,EAAQsmD,GAC3C,IAAIiuN,GAAa5sQ,GAAW2+C,GAAY3+C,EACpC6sQ,EAAYD,EAAY5sQ,EAC5B,OAAOsqB,EAAQjyB,GAAU,EAAIw0Q,EAAYD,GAAa,GAAKA,EAAYA,EAAY,GAAKC,EAC5F,CASA,SAAS7C,EAAwBrpN,EAAQmsN,EAAe/iB,GACpD,IAAIgjB,EAAUpsN,EACVqsN,EAAUrsN,EACVE,EAAoB,EAATF,EAGX8oN,EAAMqD,EAAc19O,cAAc,IAAM26N,GACxCkjB,EAASxD,EAAIr6O,cAAc,kBAC3BpQ,EAAOyqP,EAAIr6O,cAAc,eACzBq9O,EAAmB5rN,EAAW,EAAK,KACvCosN,EAAO95N,aAAa,IA8CxB,SAAsB1J,EAAG14B,EAAG4vC,GACxB,IAAI5tB,EAAI,CACJ,IAAK0W,EAAG14B,EACR,KAAM4vC,EAAQ,EACd,IAAKA,EAAQA,EAAQ,EAAG,EAAG,EAAY,EAATA,EAAY,EAC1C,IAAKA,EAAQA,EAAQ,EAAG,EAAG,EAAa,GAATA,EAAY,GAC7C78B,KAAK,KACP,OAAOiP,CACX,CAtD6Bm6O,CAAaH,EAASC,EAASrsN,IACxD3hC,EAAKm0B,aAAa,IA6BtB,SAAmB1J,EAAG14B,EAAG4vC,EAAQ+pN,EAAUyC,GACvC,IAAI7iP,EAAQqgP,EAAgBlhO,EAAG14B,EAAG4vC,EAAQwsN,GACtCpoP,EAAM4lP,EAAgBlhO,EAAG14B,EAAG4vC,EAAQ+pN,GACpC33O,EAAI,CACJ,IAAKzI,EAAMmf,EAAGnf,EAAMvZ,EACpB,IAAK4vC,EAAQA,EAAQ,EAAG,EAAG,EAAG57B,EAAI0kB,EAAG1kB,EAAIhU,GAC3C+S,KAAK,KACP,OAAOiP,CACX,CArC2Bq6O,CAAUL,EAASC,EAASrsN,EANpC,IAAc,KAO7B8oN,EAAIt2N,aAAa,UAAW,OAAS0N,EAAW,IAAMA,GACtD4oN,EAAIr1N,MAAMq4N,gBAAkBA,EAAkB,IAAMA,EAAkB,IAAMA,EAC5EhD,EAAIr1N,MAAMwc,MAAQ64M,EAAIr1N,MAAMyc,OAAShQ,EAAW,IACpD,CASA,SAAS8pN,EAAgBoC,EAASC,EAASrsN,EAAQ0sN,GAC/C,IAAIC,GAAWD,EAAQ,IAAM3uP,KAAKiuP,GAAK,IACvC,MAAO,CACHljO,EAAGsjO,EAAWpsN,EAASjiC,KAAK6uP,IAAID,GAChCv8P,EAAGi8P,EAAWrsN,EAASjiC,KAAK0hO,IAAIktB,GAExC,CA0CO,SAAS7yJ,EAAY58B,GACxB2vL,EAAgB3vL,GAAW,GAC3BA,EAAY,IAChB,CAOA,SAAS2vL,EAAgB3vL,EAAW4vL,GAChC,IAAIC,EACJ,GAAI7vL,EACA,GAAIA,EAAUpqC,UAAUM,SAASo0N,GAC7BuF,EAAc7vL,MAEb,CACD,IAAI8vL,EAAqB9vL,EAAUlwD,iBAAiB,IAAMw6O,GAC1D,GAAI14N,EAAAA,GAAQ6C,MACR,IAAK,IAAItwB,EAAI,EAAGA,EAAI2rP,EAAmB74Q,OAAQktB,IAE3C,GAAI2rP,EAAmB3rP,GAAG8zC,eAAiB63M,EAAmB3rP,GAAG8zC,gBAAkB+nB,EAAW,CAE1F6vL,EAAcC,EAAmB3rP,GACjC,KACJ,OAIJ0rP,EAAcpiP,MAAMrE,KAAK0mP,GAAoBhoQ,MAAK,SAAUuiE,GAAQ,OAAOA,EAAKpS,gBAAkB+nB,CAAW,KAAM,IAE3H,CAEJ,GAAIA,GAAa6vL,EAAa,CAC1B,IAAIE,EAAQF,EAAYt+O,cAAc,IAAMg5O,GAK5C,GAFYqF,GAAUC,EAAYj6N,UAAUM,SAASy0N,KAAsBkF,EAAYj6N,UAAUM,SAAS0zN,IACrGiG,EAAYj6N,UAAUM,SAASy0N,KAAsBkF,EAAYj6N,UAAUM,SAASyzN,GAC1E,CACX,IAAIqG,EAASH,EAAYt+O,cAAc,OACvC,IAAI5E,EAAAA,EAAAA,IAAkBqjP,GAClB,OAEJ,IAAIpsQ,EAAKosQ,EAAO5vN,aAAa,MAE7B,OADA+oN,EAAc,GAAKvlQ,GAAIqsQ,WAAaL,EAC5BzG,EAAc,GAAKvlQ,GAAItK,MAC3B,IAAK,WACL,IAAK,YAEDs2Q,EAAS3gP,aAAak6O,EAAcvlQ,GAAIk2O,SA5pB5D,SAAyB95J,EAAWz2B,EAAUzG,GAC1C,IAAIotN,EAAe,CAAC,EAEpB/G,EAAc,GAAK5/M,GAAUuwL,QAAU,EACvCo2B,EAAa,GAAK3mN,GA0TtB,SAAyB3lD,EAAIk/C,EAAQotB,EAAOi+L,GACxC,MAAO,CACHrrN,OAAQA,EACRotB,MA7T4D,EA8T5Di+L,WA9T+D,EAgUvE,CAhUkCgC,CAAgB5mN,EAAUzG,GAGxDkrN,EADkB,CAAEzkN,SAAUA,EAAUy2B,UAAWA,EAAWkuL,WAAYgC,EAAcE,WAJvE,GAMrB,CAopBuEC,CAAgBN,EAAOnsQ,EAAIulQ,EAAcvlQ,GAAIk/C,QAChG,MACJ,IAAK,YAED8sN,EAAS3gP,aAAak6O,EAAcvlQ,GAAIk2O,SA/b5D,SAA0B6xB,GAGtB,IAFA,IACI/nQ,EADM+nQ,EAAep6O,cAAc,wBAC1B6uB,aAAa,MACjBj8B,EAAI,EAAGA,GAAK,EAAGA,IAGpBmsP,EAFiB3E,EAAenoN,uBAAuB,kBAC5C,IAANr/B,EAAU,EAAIA,IAAI,GACHA,EAAGA,EAAGmpP,EAAenpP,EAAGA,GAAIvgB,GAWpD,SAAS0sQ,EAASlB,EAAQ3iP,EAAOvF,EAAKqmP,EAAQ3pQ,GAC1C,IAAIssE,EAAQ,GAGZ,SAASqgM,EAAaztN,GACdqmN,EAAc,GAAKvlQ,GAAIqsQ,cACrB//L,EACFk/L,EAAO95N,aAAa,IAAKwN,EAAS,IAC9BotB,GAASq9L,EAAOt2Q,SAChBi5E,EAAQ,GAGZi5L,EAAcvlQ,GAAIk2O,QAAU5qN,WAAWqhP,EAAavyP,KAAK,KAAMuvP,EAAOr9L,IAAS,IAEvF,CAZAqgM,CAAa9jP,EAajB,CACJ,CA8ZuE+jP,CAAiBT,GAGhF,CAEAH,GAASh6N,EAAAA,EAAAA,IAAUi6N,EAAa,CAACjG,GAAe,CAACD,KAAiB/zN,EAAAA,EAAAA,IAAUi6N,EAAa,CAAClG,GAAe,CAACC,IAC1G5pL,EAAY,IAChB,CACJ,CAQO,SAASo9B,EAAYp9B,GACxB2vL,EAAgB3vL,GAAW,GAC3BA,EAAY,IAChB,gHCt2BIzhC,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAazCC,EAA0C,SAAUC,EAAYzB,EAAQn/C,EAAK6gD,GAC7E,IAA2H3pB,EAAvHD,EAAI5X,UAAUpmB,OAAQ4O,EAAIovB,EAAI,EAAIkoB,EAAkB,OAAT0B,EAAgBA,EAAOhhD,OAAOihD,yBAAyB3B,EAAQn/C,GAAO6gD,EACrH,GAAuB,kBAAZ/gC,SAAoD,oBAArBA,QAAQihC,SAAyBl5C,EAAIiY,QAAQihC,SAASH,EAAYzB,EAAQn/C,EAAK6gD,QACpH,IAAK,IAAI16B,EAAIy6B,EAAW3nD,OAAS,EAAGktB,GAAK,EAAGA,KAAS+Q,EAAI0pB,EAAWz6B,MAAIte,GAAKovB,EAAI,EAAIC,EAAErvB,GAAKovB,EAAI,EAAIC,EAAEioB,EAAQn/C,EAAK6H,GAAKqvB,EAAEioB,EAAQn/C,KAAS6H,GAChJ,OAAOovB,EAAI,GAAKpvB,GAAKhI,OAAOs1C,eAAegK,EAAQn/C,EAAK6H,GAAIA,CAChE,EAeI4lE,EAAO,YACP3E,EAAM,QAIN2pM,EAAe,iBACfC,EAAU,gBACVC,EAAY,cACZC,EAAkB,oBAClBC,EAAkB,oBAClBC,EAAa,eACbC,EAAU,YACVC,EAAW,aACXC,EAAY,cACZC,EAAa,UACbC,EAAa,eACbC,EAAc,gBACdC,EAAY,QAEZC,EAAkB,4BAClBtyN,EAA2B,SAAUv0B,GAErC,SAASu0B,IACL,OAAkB,OAAXv0B,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAOA,OAVAu/B,EAAUS,EAAWv0B,GAIrBk0B,EAAW,EACPzB,EAAAA,EAAAA,IAAS,CAAE4zB,OAAQ,SAAUhwB,SAAU,IAAKhyB,MAAO,KACpDkwB,EAAU3gC,UAAW,YAAQ,GAChCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,CAAE4zB,OAAQ,UAAWhwB,SAAU,IAAKhyB,MAAO,KACrDkwB,EAAU3gC,UAAW,aAAS,GAC1B2gC,CACX,CAZ+B,CAY7BkG,EAAAA,IAcE4hK,EAAyB,SAAUr8L,GAUnC,SAASq8L,EAAQpnM,EAAS1d,GACtB,IAAIgtB,EAAQvE,EAAO/L,KAAKM,KAAMU,EAAS1d,IAAYgd,KAKnD,OAJAgQ,EAAMuiP,eAAiB,KACvBviP,EAAMwiP,gBAAkB,KACxBxiP,EAAMujN,iBAAmB,KACzBvjN,EAAMyiP,iBAAkB,EACjBziP,CACX,CAqwCA,OArxCAuvB,EAAUuoK,EAASr8L,GAiBnBq8L,EAAQzoM,UAAUowC,WAAa,WAC3BzvC,KAAK0yP,kBACLj8N,EAAAA,EAAAA,IAAS,CAACz2B,KAAKhd,SAAUypE,EAC7B,EACAq7I,EAAQzoM,UAAUqzP,eAAiB,WAC/B,IAAI1sQ,EAAI+wC,EAC6B,IAAjC/2B,KAAKmyC,SAAS77C,QAAQ,QAAoD,IAApC0J,KAAKmyC,SAAS77C,QAAQ,WAC5DtQ,EAAKga,KAAKmyC,SAASl+C,MAAM,aAAc+L,KAAK2yP,iBAAmB3sQ,EAAG,GAAIga,KAAK4yP,iBAAmB5sQ,EAAG,KAGjG+wC,EAAK/2B,KAAKmyC,SAASl+C,MAAM,aAAc+L,KAAK4yP,iBAAmB77N,EAAG,GAAI/2B,KAAK2yP,iBAAmB57N,EAAG,GAEzG,EACA+wK,EAAQzoM,UAAUwzP,YAAc,WAC5B7yP,KAAK8yP,YAAY9yP,KAAKmyC,UACtB,IAAI4gN,EAAM/yP,KAAK4Q,cAAc,MAAO,CAAE31B,UAAW02Q,EAAY,IAAM3xP,KAAKgzP,WACxED,EAAI5hP,YAAYnR,KAAK4Q,cAAc,MAAO,CAAE31B,UAAW22Q,EAAkB,IAAM5xP,KAAKgzP,YACpFD,EAAI5hP,YAAYnR,KAAK4Q,cAAc,MAAO,CAAE31B,UAAW42Q,EAAkB,IAAM7xP,KAAKgzP,YACpFhzP,KAAKizP,WAAW9hP,YAAY4hP,EAChC,EACAjrD,EAAQzoM,UAAUyzP,YAAc,SAAU3gN,GACJ,IAA9BA,EAAS77C,QAAQ,SACjB0J,KAAKgzP,SAAWhB,EAEoB,IAA/B7/M,EAAS77C,QAAQ,UACtB0J,KAAKgzP,SAAWjB,EAEkB,IAA7B5/M,EAAS77C,QAAQ,QACtB0J,KAAKgzP,SAAWf,EAGhBjyP,KAAKgzP,SAAWlB,CAExB,EACAhqD,EAAQzoM,UAAU6vE,YAAc,SAAU/wC,GACtC,IAAI+0N,EAASlzP,KAAKmzP,WAAa,CAAEvvN,IAAK,EAAGF,KAAM,GAAM1jC,KAAKozP,mBAAmBj1N,GAC7En+B,KAAKizP,WAAWr8N,UAAUjB,OAAO08N,GACjCryP,KAAKukE,SAAW,IAAIoC,EAAAA,GAAM3mE,KAAKizP,WAAY,CACvCj/M,OAAQh0C,KAAKg0C,OACbD,MAAO/zC,KAAK+zC,MACZ5B,SAAU,CAAE00B,EAAGqsL,EAAOxvN,KAAMojC,EAAGosL,EAAOtvN,KACtC+G,UAAW3qC,KAAK2qC,UAChBpqD,KAAMyf,KAAKqzP,iBAAiBr0P,KAAKgB,MACjCwR,MAAOxR,KAAKszP,kBAAkBt0P,KAAKgB,OAE3C,EACA8nM,EAAQzoM,UAAUk0P,iBAAmB,WACjC,IAAIrK,EAAUlpP,KAAKizP,WAAW/vN,wBAC1BswN,EAAkB3xP,KAAKuvE,MAAM83K,EAAQn1M,OAAS/zC,KAAKizP,WAAWx7N,aAAgB,EAC9Eg8N,EAAkB5xP,KAAKuvE,MAAM83K,EAAQl1M,QAAUh0C,KAAKizP,WAAWh/M,cAAiB,EACpF,MAAO,CACHrnB,EAAGlO,SAAS80O,GAAkBA,EAAiB,EAC/Ct/P,EAAGwqB,SAAS+0O,GAAkBA,EAAiB,EAEvD,EACA3rD,EAAQzoM,UAAU+zP,mBAAqB,SAAUj1N,GAC7Cn+B,KAAKizP,WAAW17N,MAAMuiB,QAAU,QAChC,IAAIo8L,EAAsBl2O,KAAKhd,QAAQo2C,QAAQ,mBAC3C88M,IACKA,EAAoBh/M,SAASl3B,KAAKizP,cACnCjzP,KAAKizP,WAAW17N,MAAM4+M,KAAOjyM,iBAAiBgyM,GAAqBC,OAG3E,IAAIhzN,GAAMuvG,EAAAA,EAAAA,GAAkBv0F,EAAQn+B,KAAK4yP,iBAAkB5yP,KAAK2yP,kBAAmB3yP,KAAKyyP,gBAAiBzyP,KAAKyyP,gBAAkB,KAAOzyP,KAAKuzN,iBAAiBrwL,yBACzJwwN,EAAiB1zP,KAAKuzP,mBACtBI,EAAY3zP,KAAK4zP,uBAAuB5zP,KAAKmyC,SAAUuhN,EAAe9mO,EAAG8mO,EAAex/P,GACxF2/P,EAAoB7zP,KAAK8zP,yBAAyB3wO,EAAKwwO,GACvDI,EAAgBF,EAAkB,GAClCG,EAAeH,EAAkB,GACjCX,EAASlzP,KAAKi0P,iBAAiB91N,EAAQ41N,EAAeC,GAI1D,OAHAd,EAAOxvN,KAAOwvN,EAAOxvN,KAAOgwN,EAAe9mO,EAC3CsmO,EAAOtvN,IAAMsvN,EAAOtvN,IAAM8vN,EAAex/P,EACzC8L,KAAKizP,WAAW17N,MAAMuiB,QAAU,GACzBo5M,CACX,EACAprD,EAAQzoM,UAAU+oG,aAAe,WAC7BpoG,KAAK4oP,WAAW5oP,KAAKk0P,aACzB,EACApsD,EAAQzoM,UAAUupP,WAAa,SAAUzqN,GACrC,GAAIn+B,KAAKukE,UAAYpmC,EAAQ,CACzB,IAAI+0N,EAASlzP,KAAKozP,mBAAmBj1N,GACrCn+B,KAAKukE,SAASpyB,SAAW,CAAE00B,EAAGqsL,EAAOxvN,KAAMojC,EAAGosL,EAAOtvN,KACrD5jC,KAAKukE,SAASxpC,UAClB,CACJ,EACA+sK,EAAQzoM,UAAUg0P,iBAAmB,YAC5BrzP,KAAKmzP,YAAcnzP,KAAKm0P,0BACzBn0P,KAAK4oP,WAAW5oP,KAAKk0P,cAEzBl0P,KAAK81B,QAAQ,YAAa91B,KAAKo0P,kBAC/Bp0P,KAAKo0P,iBAAmB,IAC5B,EACAtsD,EAAQzoM,UAAUi0P,kBAAoB,YAC9BtzP,KAAK87F,SAA8B,UAAjB97F,KAAK+nM,SAAiD,oBAAlB/nM,KAAKumD,SAC3DvmD,KAAKgtC,cAAc,CAAC,YAExBhtC,KAAK1E,QACL0E,KAAK81B,QAAQ,aAAc91B,KAAKo0P,kBAChCp0P,KAAKo0P,iBAAmB,IAC5B,EACAtsD,EAAQzoM,UAAUu0P,uBAAyB,SAAUzhN,EAAUqhN,EAAgBC,QACpD,IAAnBD,IAA6BA,EAAiB,QAC3B,IAAnBC,IAA6BA,EAAiB,GAClD,IACIY,EAAUC,EAAWC,EAAiBC,EAAkBC,EACxDC,EAAWC,EAAiBC,EAF5BzxO,EAAM,CAAEygB,IAAK,EAAGF,KAAM,GAG1B,GAAsB,GAAlB8vN,GAAyC,GAAlBC,EAAqB,CAC5C,IAAIoB,EAAiB70P,KAAKizP,WAAW/vN,wBACjC4xN,OAAe,EACnBP,EAAkB1yP,KAAKuvE,MAAMyjL,EAAe9gN,OAC5CygN,EAAmB3yP,KAAKuvE,MAAMyjL,EAAe7gN,SAC7CygN,GAAW/7N,EAAAA,EAAAA,IAAO,IAAMi5N,EAAW3xP,KAAKizP,eAEpC6B,EAAeL,EAASvxN,yBAE5BmxN,EAAWI,EAAW5yP,KAAKuvE,MAAM0jL,EAAa/gN,OAAS,EACvDugN,EAAYG,EAAW5yP,KAAKuvE,MAAM0jL,EAAa9gN,QAAU,EACzD0gN,EAAa10P,KAAK+0P,eAzLH,EACA,EAyLfJ,EAAmBL,EAAY,EAvLtB,GAuL6CE,EAAoBx0P,KAAKizP,WAAWp8M,aAAe48M,GACzGmB,EAAkBP,EAAW,EAxLpB,GAwL2CE,EAAmBv0P,KAAKizP,WAAWx6M,YAAc+6M,EACzG,MAEIe,EAAkBv0P,KAAKizP,WAAWx7N,YAClC+8N,EAAmBx0P,KAAKizP,WAAWh/M,aAEnCogN,GADAI,GAAW/7N,EAAAA,EAAAA,IAAO,IAAMi5N,EAAW3xP,KAAKizP,aAClBwB,EAASh9N,YAAc,EAC7C68N,EAAYG,EAAWA,EAASxgN,aAAe,EAC/CygN,EAAa10P,KAAK+0P,eAnMH,EACA,EAmMfJ,EAAmBL,EAAY,EAjMtB,GAiM6Ct0P,KAAKizP,WAAWh/M,aAAej0C,KAAKizP,WAAWp8M,cACrG+9M,EAAkBP,EAAW,EAlMpB,GAkM2Cr0P,KAAKizP,WAAWx7N,YAAcz3B,KAAKizP,WAAWx6M,aAKtG,OAHIz4C,KAAKmzP,aACLuB,GAtMU,GAwMNviN,GACJ,IAAK,WACDhvB,EAAIugB,MAAQ2wN,EAAWK,EACvBvxO,EAAIygB,KAAO4wN,EAAmBG,EAC9B,MACJ,IAAK,cACDxxO,EAAIugB,MAAQ2wN,EAAWK,EACvBvxO,EAAIygB,KAAQ4wN,EAAmB,EAC/B,MACJ,IAAK,cACDrxO,EAAIugB,MAAQ2wN,EAAWK,EACvBvxO,EAAIygB,KAAQ+wN,EACZ,MACJ,IAAK,cACDxxO,EAAIygB,KAAQ0wN,EAAYI,EACxBvxO,EAAIugB,MAASkxN,EACb,MACJ,IAAK,eACDzxO,EAAIygB,KAAQ0wN,EAAYI,EACxBvxO,EAAIugB,MAAS6wN,EAAkB,EAC/B,MACJ,IAAK,aACDpxO,EAAIygB,KAAQ0wN,EAAYI,EACxBvxO,EAAIugB,MAAS6wN,EAAkBK,EAC/B,MACJ,IAAK,aACDzxO,EAAIugB,MAAS2wN,EAAWE,EAAkBG,EAC1CvxO,EAAIygB,KAAQ+wN,EACZ,MACJ,IAAK,aACDxxO,EAAIugB,MAAS2wN,EAAWE,EAAkBG,EAC1CvxO,EAAIygB,KAAQ4wN,EAAmB,EAC/B,MACJ,IAAK,UACDrxO,EAAIugB,MAAS2wN,EAAWE,EAAkBG,EAC1CvxO,EAAIygB,KAAQ4wN,EAAmBG,EAC/B,MACJ,IAAK,UACDxxO,EAAIygB,KAAQ4wN,EAAmBF,EAAYI,EAC3CvxO,EAAIugB,MAAS6wN,EAAkBK,EAC/B,MACJ,IAAK,WACDzxO,EAAIygB,KAAQ4wN,EAAmBF,EAAYI,EAC3CvxO,EAAIugB,MAASkxN,EACb,MACJ,QACIzxO,EAAIygB,KAAQ4wN,EAAmBF,EAAYI,EAC3CvxO,EAAIugB,MAAS6wN,EAAkB,EAKvC,OAFApxO,EAAIugB,MAAQ1jC,KAAKmjC,QACjBhgB,EAAIygB,KAAO5jC,KAAKsjC,QACTngB,CACX,EACA2kL,EAAQzoM,UAAU21P,kBAAoB,SAAU7iN,GAC5C,IAAI8iN,GAASn8N,EAAAA,EAAAA,IAAU,IAAM64N,EAAY,KAAOC,EAAkB,KAAOC,EAAiB7xP,KAAKizP,YAC3FiC,EAAa,CAACpD,EAAYC,EAASC,EAAUC,IACjD96N,EAAAA,EAAAA,IAAY89N,EAAQC,GACpBl1P,KAAK8yP,YAAY3gN,IACjB1b,EAAAA,EAAAA,IAASw+N,EAAQj1P,KAAKgzP,SAC1B,EACAlrD,EAAQzoM,UAAU81P,YAAc,SAAUh3N,EAAQgU,EAAUygN,EAAkBD,GAC1E,IAA4B,IAAxB3yP,KAAK+0P,eAAT,CAIA,IAAIK,EACAC,EAFJr1P,KAAKg1P,kBAAkB7iN,GAGvBnyC,KAAKizP,WAAW17N,MAAMuiB,QAAU,QAChC,IA8CQw7M,EA9CJC,EAAev1P,KAAKizP,WAAWx6M,YAC/B+8M,EAAgBx1P,KAAKizP,WAAWp8M,aAChC49M,GAAW/7N,EAAAA,EAAAA,IAAO,IAAMi5N,EAAW3xP,KAAKizP,YACxCwC,GAAgB/8N,EAAAA,EAAAA,IAAO,IAAMm5N,EAAiB7xP,KAAKizP,YACnDoB,EAAWI,EAASh9N,YACpB68N,EAAYG,EAASxgN,aAEzB,GADAj0C,KAAKizP,WAAW17N,MAAMuiB,QAAU,GAC5B95C,KAAKgzP,WAAalB,GAAc9xP,KAAKgzP,WAAajB,GAWlD,GAVI/xP,KAAKgzP,WAAalB,GAClBuD,EAAW,QAEXI,EAAcl+N,MAAMqM,IAAM,KAAO0wN,EAAY,GAAK,OAGlDe,IAAaf,EAAY,GAAK,KAE9BmB,EAAcl+N,MAAMqM,IAAM,KAAO0wN,EAAY,GAAK,MAElDn2N,EAGIi3N,GAFAE,EAAqC,WAArB1C,GAAkC2C,EAAep3N,EAAO1G,aAAgBz3B,KAAKmzP,aACtD,SAArBP,IAAkC0C,GAA6C,QAA5Bt1P,KAAK01P,mBAC7DH,EAAelB,EAjS3B,EAiSwD,KAEnDiB,GAAsC,UAArB1C,IAAmC0C,GAA6C,UAA5Bt1P,KAAK01P,mBACpEC,OAENL,GAA+C,QAA5Bt1P,KAAK01P,oBAA4D,UAA5B11P,KAAK01P,mBAKrDH,EAAe,EAAMlB,EAAW,EAAM,KAJX,QAA5Br0P,KAAK01P,mBAAkCv3N,EAAO1G,aAAgBz3B,KAAKizP,WAAWx7N,YAAc0G,EAAO1G,aAAe,EAAO48N,EAAW,EAvShJ,EAuSuK,MAChKr0P,KAAKizP,WAAWx7N,YAAc0G,EAAO1G,aAAe,EAAM48N,EAAW,EAxS5E,EAwSkG,UAQvGr0P,KAAKgzP,WAAaf,GAClBmD,EAAY,QAEZK,EAAcl+N,MAAMmM,KAAO,KAAO2wN,EAAW,GAAK,OAGlDe,IAAcf,EAAW,GAAK,KAE9BoB,EAAcl+N,MAAMmM,KAAuB2wN,EAAW,EAAxBA,EAA8B,MAI5DgB,GAFAC,EAAqC,WAArB3C,GAAkC6C,EAAgBr3N,EAAO8V,cAAiBj0C,KAAKmzP,aACxD,QAArBR,IAAiC2C,GAA6C,QAA5Bt1P,KAAK01P,mBAC7DF,EAAgBlB,EA5TvB,EA4TqD,KAEpDgB,GAAsC,WAArB3C,IAAoC2C,GAA6C,UAA5Bt1P,KAAK01P,mBACtEC,MAGEH,EAAgB,EAAMlB,EAAY,EAAM,KAG7DG,EAASl9N,MAAMqM,IAAMyxN,EACrBZ,EAASl9N,MAAMmM,KAAO0xN,CA/DtB,CAgEJ,EACAttD,EAAQzoM,UAAUu2P,cAAgB,SAAUz3N,GACxC,IAAI03N,GAAiBn9N,EAAAA,EAAAA,IAAO,IAAMg5N,EAAS1xP,KAAKizP,YAQhD,GAPIjzP,KAAK7f,WACLs2C,EAAAA,EAAAA,IAAS,CAACz2B,KAAKizP,YAAajzP,KAAK7f,SAAS8T,MAAM,MAEhDkqC,KAAWxwB,EAAAA,EAAAA,IAAkBwwB,EAAOiD,aAAa,YACjDjD,EAAO7H,aAAa,eAAgB6H,EAAOiD,aAAa,UACxDjD,EAAO+C,gBAAgB,WAEtBvzB,EAAAA,EAAAA,IAAkB3N,KAAKumD,SAiCpBpoB,KAAWxwB,EAAAA,EAAAA,IAAkBwwB,EAAOiD,aAAa,mBACjDy0N,EAAetkP,UAAY4sB,EAAOiD,aAAa,sBAhCnD,GADAy0N,EAAetkP,UAAY,GACvBvR,KAAKumD,mBAAmBm+L,YACxBmR,EAAe1kP,YAAYnR,KAAKumD,cAE/B,GAA4B,kBAAjBvmD,KAAKumD,QAAsB,CAMvC,GALIvmD,KAAKymD,qBACLzmD,KAAK26B,cAAc,CAAE4rB,QAASpB,EAAAA,GAAmBI,SAASvlD,KAAKumD,WAAY,GAG3EuvM,GADez0M,EAAAA,EAAAA,IAAQrhD,KAAKumD,QAClBwvM,CAAa,CAAC,EAAG/1P,KAAM,UAAWA,KAAKhd,QAAQ4B,GAAK,eAAW1J,OAAWA,EAAW26Q,GAE/F,GAAI71P,KAAKsoM,gBAEL,IADA,IAAI0tD,EAAWF,EAAQ79Q,OACdktB,EAAI,EAAGA,EAAI6wP,EAAU7wP,IAC1B0wP,IAAe19N,EAAAA,EAAAA,IAAO29N,EAASD,GAAiB,cAAe71P,KAAKumD,aAIxEsvM,EAA4B,YAAI71P,KAAKumD,OAGjD,KACK,CACD,IACIuvM,MADmBz0M,EAAAA,EAAAA,IAAQrhD,KAAKumD,QACtB0vM,CAAiB,CAAC,EAAGj2P,KAAM,UAAWA,KAAKhd,QAAQ4B,GAAK,eAAW1J,OAAWA,EAAW26Q,MAEnG19N,EAAAA,EAAAA,IAAO29N,EAASD,GAEpB71P,KAAK+sC,sBACT,CAOR,EACA+6J,EAAQzoM,UAAU0jP,gBAAkB,WAChC,GAAK/iP,KAAKk2P,SAAV,CAGA,IAAIC,EAAWn2P,KAAK4Q,cAAc,MAAO,CAAE31B,UAAW6xE,4BACtD9sD,KAAKizP,WAAW9hP,YAAYglP,GAC5BnhO,EAAAA,GAAaG,IAAIghO,EAAUvjO,EAAAA,GAAQgC,gBAAiB50B,KAAKo2P,cAAep2P,KAHxE,CAIJ,EACA8nM,EAAQzoM,UAAUg3P,iBAAmB,SAAUl4N,EAAQv5C,IACnD4xC,EAAAA,EAAAA,IAAW2H,EAAQ,CAAE,kBAAmBv5C,GAC5C,EACAkjN,EAAQzoM,UAAUi3P,oBAAsB,SAAUn4N,GAC9CA,EAAO+C,gBAAgB,kBAC3B,EACA4mK,EAAQzoM,UAAUk3P,eAAiB,SAAU7mN,GACzCz/B,aAAajQ,KAAKw2P,gBAClBx2P,KAAKy2P,YAAY/mN,EAAIkO,cACzB,EACAkqJ,EAAQzoM,UAAUq3P,gBAAkB,SAAUj7Q,GAC1C,IAAIu0B,EAAQhQ,KACZ,IAAIA,KAAKk2P,SAAT,CAMAl2P,KAAKw2P,eAAiBtmP,YAHV,WACRF,EAAMwB,OACV,GArZkB,KAkZlB,CAKJ,EACAs2L,EAAQzoM,UAAUs3P,YAAc,SAAUl7Q,GACtC,IAAI0iD,EAEAA,EADAn+B,KAAKm+B,QACI/E,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQn+B,KAAKm+B,QAGvBn+B,KAAKhd,SAEd2qB,EAAAA,EAAAA,IAAkBwwB,KAGyB,OAA3CA,EAAOiD,aAAa,mBACpBphC,KAAKy2P,YAAYh7Q,GAEXukB,KAAKk2P,UACXl2P,KAAK42P,YAAY52P,KAAKihC,UAAUzvB,MAAO/1B,EAAG0iD,GAElD,EACA2pK,EAAQzoM,UAAUo3P,YAAc,SAAUh7Q,GACtC,IAAI0iD,EAOJ,GALIA,EADAn+B,KAAKm+B,QACI/E,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQn+B,KAAKm+B,QAGvBn+B,KAAKhd,WAEd2qB,EAAAA,EAAAA,IAAkBwwB,IAAuD,OAA3CA,EAAOiD,aAAa,oBAAmD,IAApBphC,KAAK62P,YAA1F,CAIA,IADA,IACStoP,EAAK,EAAGuoP,EADA,GAAGz5P,MAAMqC,MAAKo5B,EAAAA,EAAAA,IAAU,sBAAwB94B,KAAK+2P,OAAS,aAAcn0P,WACjD2L,EAAKuoP,EAAa7+Q,OAAQs2B,IAAM,CACxE,IAAI0gK,EAAW6nF,EAAavoP,GAC5BvO,KAAKg3P,eAAe/nF,EACxB,CACAjvK,KAAKi3P,YAAY94N,EAAQn+B,KAAKihC,UAAU1gD,KAAM9E,EAN9C,CAOJ,EACAqsN,EAAQzoM,UAAU63P,oBAAsB,SAAUz7Q,GAC9CukB,KAAKuyP,eAAiB92Q,CAC1B,EACAqsN,EAAQzoM,UAAU83P,sBAAwB,WAClCn3P,KAAKwyP,iBACLx9N,EAAAA,GAAaW,OAAO31B,KAAKwyP,gBAAiB,uBAAwBxyP,KAAKk3P,oBAE/E,EACApvD,EAAQzoM,UAAU43P,YAAc,SAAU94N,EAAQurN,EAAejuQ,GAC7D,IAAIu0B,EAAQhQ,KACZiQ,aAAajQ,KAAKo3P,WAClBnnP,aAAajQ,KAAKq3P,WACdr3P,KAAKs3P,WAAat3P,KAAKmzP,aACvBnzP,KAAKm3P,wBACLn3P,KAAKwyP,gBAAkBr0N,EACvBnJ,EAAAA,GAAaG,IAAIn1B,KAAKwyP,gBAAiB,uBAAwBxyP,KAAKk3P,oBAAqBl3P,OAE7FA,KAAKo0P,iBAAmB,CACpB95Q,KAAMmB,EAAIA,EAAEnB,KAAO,KAAMiN,QAAQ,EAAO42C,OAAQA,EAAQp8C,MAAOtG,GAAQ,KACvEuH,QAASgd,KAAKizP,WAAYhgQ,eAAe0a,EAAAA,EAAAA,IAAkBlyB,IAK/DukB,KAAK81B,QAAQ,eAAgB91B,KAAKo0P,iBAHZ,SAAUmD,GAC5BvnP,EAAMwnP,qBAAqBD,EAAkBp5N,EAAQ1iD,EAAGiuQ,EAC5D,EACoE1qP,KAAKgB,MAC7E,EACA8nM,EAAQzoM,UAAUm4P,qBAAuB,SAAUD,EAAkBp5N,EAAQ1iD,EAAGiuQ,GAC5E,GAAI6N,EAAiBhwQ,OACjByY,KAAK80O,UAAW,EAChB90O,KAAK1E,QACL0E,KAAKm3P,6BAIL,GADAn3P,KAAK80O,UAAW,GACZnnO,EAAAA,EAAAA,IAAkB3N,KAAKizP,YAAa,CASpC,GARAjzP,KAAK+2P,OAAS/2P,KAAKhd,QAAQo+C,aAAa,OACpC1xB,EAAAA,EAAAA,IAAY1P,KAAKhd,QAAQo+C,aAAa,QAAS1xB,EAAAA,EAAAA,IAAY,WAC/D1P,KAAKizP,WAAajzP,KAAK4Q,cAAc,MAAO,CACxC31B,UAAWw2Q,EAAe,IAAMS,EAAa,IAAMG,EAAW97N,MAAO,CACjEi0B,KAAM,UAAW,cAAe,QAAS,GAAMxqD,KAAK+2P,OAAS,YAC9D71Q,OAAQ,UACP4wB,EAAAA,EAAAA,IAAW9R,KAAK+zC,OAAS,YAAajiC,EAAAA,EAAAA,IAAW9R,KAAKg0C,QAAU,wBAExB,IAA5Cn1D,OAAOC,KAAKkhB,KAAKsqD,gBAAgBryE,OACjC,IAAK,IAAIguE,KAAQjmD,KAAKsqD,eACL,UAATrE,EACAjmD,KAAKizP,WAAWr8N,UAAUzB,IAAIn1B,KAAKsqD,eAAe,GAAKrE,IAGvDjmD,KAAKizP,WAAW38N,aAAa2vB,EAAMjmD,KAAKsqD,eAAe,GAAKrE,IAIxEjmD,KAAKy3P,oBAAoBt5N,EAAQn+B,MACjCA,KAAK03P,mBAAmBv5N,EAAQ1iD,EAAGiuQ,EAAe1pP,KACtD,MAEQm+B,IACAn+B,KAAKm1P,YAAYh3N,EAAQn+B,KAAKmyC,SAAUnyC,KAAK4yP,iBAAkB5yP,KAAK2yP,kBACpE3yP,KAAKq2P,iBAAiBl4N,EAAQn+B,KAAK+2P,OAAS,YAC5C/2P,KAAK41P,cAAcz3N,GACnBw5N,EAAAA,GAAe32N,KAAKhhC,KAAKizP,YACzBjzP,KAAK4oP,WAAWzqN,GAChBn+B,KAAK03P,mBAAmBv5N,EAAQ1iD,EAAGiuQ,EAAe1pP,MAIlE,EACA8nM,EAAQzoM,UAAUu4P,gBAAkB,SAAUC,GACb,iBAAlB73P,KAAKghE,UACW,SAAnBhhE,KAAKghE,UACLhhE,KAAKuzN,iBAAmB3wN,SAASuuB,MAGjCnxB,KAAKyyP,iBAAkB,EACvBzyP,KAAKuzN,kBAAmB76L,EAAAA,EAAAA,IAAO14B,KAAKghE,UAAWp+D,WAG9C5C,KAAKghE,qBAAqB0jL,cAC/B1kP,KAAKuzN,iBAAmBvzN,KAAKghE,UAC7BhhE,KAAKyyP,gBAAoD,SAAlCzyP,KAAKuzN,iBAAiBp9L,SAE5Cn2B,KAAKyyP,kBACNh8N,EAAAA,EAAAA,IAAS,CAACz2B,KAAKuzN,kBAAmB++B,GAEtCtyP,KAAKuzN,iBAAiBpiN,YAAY0mP,EAAQ5E,WAC9C,EACAnrD,EAAQzoM,UAAUo4P,oBAAsB,SAAUt5N,EAAQ05N,GAClD15N,IACIvL,EAAAA,GAAQY,WACRiD,EAAAA,EAAAA,IAAS,CAACohO,EAAQ5E,YA9gBrB,YAghBqB,SAAlB4E,EAAQ9jN,QACR8jN,EAAQ5E,WAAW17N,MAAMoxF,UAAW72G,EAAAA,EAAAA,IAAW+lP,EAAQ9jN,QAE3D8jN,EAAQ5E,WAAW9hP,YAAY0mP,EAAQjnP,cAAc,MAAO,CAAE31B,UAAWy2Q,KACzE1xP,KAAK43P,gBAAgBC,IACrB1gO,EAAAA,EAAAA,IAAY,CAAC0gO,EAAQ5E,YArgBhB,YAsgBL4E,EAAQxB,iBAAiBl4N,EAAQ05N,EAAQd,OAAS,YAClDc,EAAQjC,cAAcz3N,IACtB1H,EAAAA,EAAAA,IAAS,CAACohO,EAAQ5E,YAAad,GAC3B0F,EAAQ9C,gBACR8C,EAAQhF,cAEZgF,EAAQ9U,kBACR8U,EAAQ3oL,YAAY/wC,GACpB05N,EAAQ1C,YAAYh3N,EAAQ05N,EAAQ1lN,SAAU0lN,EAAQjF,iBAAkBiF,EAAQlF,kBAChFgF,EAAAA,GAAe32N,KAAK62N,EAAQ5E,YAC5B4E,EAAQjP,WAAWzqN,GAE3B,EACA2pK,EAAQzoM,UAAUq4P,mBAAqB,SAAUv5N,EAAQ1iD,EAAGiuQ,EAAemO,GACvE,GAAI15N,EAAQ,EACRhH,EAAAA,EAAAA,IAAY,CAAC0gO,EAAQ5E,YAAad,IAClC17N,EAAAA,EAAAA,IAAS,CAACohO,EAAQ5E,YAAab,GAC/ByF,EAAQzD,iBAAmB,CACvB95Q,KAAMmB,EAAIA,EAAEnB,KAAO,KAAMiN,QAAQ,EAAO42C,OAAQA,EAAQp8C,MAAOtG,GAAQ,KACvEuH,QAAS60Q,EAAQ5E,WAAYhgQ,eAAe0a,EAAAA,EAAAA,IAAkBlyB,IAE9Do8Q,EAAQ1D,2BAA6B0D,EAAQ1E,aAC7C0E,EAAQ5E,WAAW17N,MAAMuiB,QAAU,QAKvC+9M,EAAQ/hO,QAAQ,aAAc+hO,EAAQzD,iBAHhB,SAAU0D,GAC5BD,EAAQE,mBAAmBD,EAAc35N,EAAQurN,EAAejuQ,EACpE,EACwEujB,KAAK64P,GACjF,CACJ,EACA/vD,EAAQzoM,UAAU04P,mBAAqB,SAAUD,EAAc35N,EAAQurN,EAAejuQ,GAClF,IAAIu0B,EAAQhQ,KACZ,GAAI83P,EAAavwQ,OACbyY,KAAK80O,UAAW,EAChB90O,KAAK1E,QACL0E,KAAKm3P,wBACLn3P,KAAKg3P,eAAe74N,OAEnB,CACD,IAAI65N,EAAkB,CAClB5/Q,KAAMsxQ,EAAc53L,OACpBhwB,SAAU4nN,EAAc5nN,SACxBhyB,MAAO45O,EAAc55O,MACrBmyB,eAAgB,WAKpB,GAH6B,SAAzBynN,EAAc53L,SACdkmM,OAAkB98Q,GAElB8kB,KAAKs3P,UAAY,EAAG,CAYpBt3P,KAAKo3P,UAAYlnP,YAXN,WACHF,EAAMmjP,YACNn+N,EAAAA,GAAaG,IAAIgJ,EAAQ,kCAAmCnuB,EAAMwsO,YAAaxsO,GAE/EA,EAAMu0D,WACNv0D,EAAMu0D,SAASW,KAAK8yL,EAAiB75N,GACjCnuB,EAAMuiP,gBAAkBviP,EAAMmjP,YAC9BnjP,EAAMwsO,YAAYxsO,EAAMuiP,gBAGpC,GACkCvyP,KAAKs3P,UAC3C,MAEQt3P,KAAKukE,UACLvkE,KAAKukE,SAASW,KAAK8yL,EAAiB75N,EAGhD,CACI1iD,GACAukB,KAAKi4P,gBAAgBx8Q,EAAG0iD,EAEhC,EACA2pK,EAAQzoM,UAAU80P,uBAAyB,WAGvC,QAAQxmP,EAAAA,EAAAA,IADM3N,KACoBirI,mBACS,kBAF7BjrI,KAEQirI,gBAC1B,EACA68D,EAAQzoM,UAAUwvG,eAAiB,SAAU1wE,EAAQvR,EAAG14B,GACpD,IAAIg/P,EAAS,CACTxvN,KAAM9W,EAAGgX,IAAK1vC,EAAGi+C,SAAUnyC,KAAKmyC,SAChC+lN,WAAYl4P,KAAK4yP,iBAAkBzkB,SAAUnuO,KAAK2yP,kBAElDwF,GAAc9oJ,EAAAA,EAAAA,IAAUrvG,KAAKizP,WAAYjzP,KAAKo4P,qBAAsBxrO,EAAG14B,GAO3E,OANIikQ,EAAYlgR,OAAS,IACrBi7Q,EAAOgF,WAAaC,EAAY7hQ,QAAQ,SAAW,EAAI,QAAU6hQ,EAAY7hQ,QAAQ,UAAY,EAAI,OACjG0J,KAAK4yP,iBACTM,EAAO/kB,SAAWgqB,EAAY7hQ,QAAQ,QAAU,EAAI,SAAW6hQ,EAAY7hQ,QAAQ,WAAa,EAAI,MAChG0J,KAAK2yP,kBAENO,CACX,EACAprD,EAAQzoM,UAAUy0P,yBAA2B,SAAU3wO,EAAKwwO,GACxD,MAAO,CAAC3zP,KAAKyyP,gBAAkBtvO,EAAIugB,KAAOiwN,EAAUjwN,KAC3CvgB,EAAIugB,KAAO1jC,KAAKuzN,iBAAiBz/K,WAAc6/M,EAAUjwN,KAAOpjD,OAAO6zD,YAAcn0C,KAAKuzN,iBAAiBlwL,WAChHrjC,KAAKyyP,gBAAkBtvO,EAAIygB,IAAM+vN,EAAU/vN,IACtCzgB,EAAIygB,IAAM5jC,KAAKuzN,iBAAiB1/K,UAAa8/M,EAAU/vN,IAAMtjD,OAAO4zD,YAAcl0C,KAAKuzN,iBAAiB/vL,UACrH,EACAskK,EAAQzoM,UAAU40P,iBAAmB,SAAU91N,EAAQvR,EAAG14B,GACtD,IAAIg/P,EAASlzP,KAAK6uG,eAAe1wE,EAAQvR,EAAG14B,GACxCo/M,EAAS4/C,EAAO/gN,SAqBpB,GApBInyC,KAAK2yP,mBAAqBO,EAAO/kB,WACjC76B,EAA+C,IAApCtzM,KAAKmyC,SAAS77C,QAAQ,WAAoD,IAAjC0J,KAAKmyC,SAAS77C,QAAQ,OACtE48P,EAAO/kB,SAAWnuO,KAAK4yP,iBAAmB5yP,KAAK4yP,iBAAmBM,EAAO/kB,UAE7EnuO,KAAK4yP,mBAAqBM,EAAOgF,aACF,IAA3B5kD,EAAOh9M,QAAQ,UACf48P,EAAO/kB,SAAuB,YAAX76B,GAAmC,eAAXA,EAA2B,MAAQ,SAC9EA,EAAU4/C,EAAO/kB,SAAW,QAEA,IAA5B76B,EAAOh9M,QAAQ,WACf48P,EAAO/kB,SAAuB,aAAX76B,GAAoC,gBAAXA,EAA4B,MAAQ,SAChFA,EAAU4/C,EAAO/kB,SAAW,SAEhC+kB,EAAOgF,WAAal4P,KAAK4yP,kBAE7B5yP,KAAKo0P,iBAAmB,CACpB95Q,KAAM,KAAMiN,QAAQ,EAAO42C,OAAQA,EAAQp8C,MAAO,KAClDiB,QAASgd,KAAKizP,WAAYoF,iBAAkB/kD,GAEhDtzM,KAAK81B,QAAQ,kBAAmB91B,KAAKo0P,kBACjCp0P,KAAKo0P,iBAAiB7sQ,OACtB+rN,EAAStzM,KAAKmyC,aAEb,CACD,IAAImmN,EAAiBpF,EAAO/kB,SACxBoqB,EAAmBrF,EAAOgF,WAC9B,GAAIhF,EAAO/gN,WAAamhK,EAAQ,CAC5B,IAAInwL,GAAMuvG,EAAAA,EAAAA,GAAkBv0F,EAAQo6N,EAAkBD,GAAiBt4P,KAAKyyP,gBAAiBzyP,KAAKyyP,gBAAkB,KAAOzyP,KAAKuzN,iBAAiBrwL,yBACjJljC,KAAKm1P,YAAYh3N,EAAQm1K,EAAQilD,EAAkBD,GACnD,IAAI5E,EAAiB1zP,KAAKuzP,mBACtBI,EAAY3zP,KAAK4zP,uBAAuBtgD,EAAQogD,EAAe9mO,EAAG8mO,EAAex/P,GACrFy/P,EAAU/vN,KAAO5jC,KAAKw4P,kBAAkB,YAAallD,EAAQtzM,KAAKsjC,SAClEqwN,EAAUjwN,MAAQ1jC,KAAKw4P,kBAAkB,YAAallD,EAAQtzM,KAAKmjC,SACnE+vN,EAAO/gN,SAAWmhK,EAClB,IAAImlD,EAAcz4P,KAAK8zP,yBAAyB3wO,EAAKwwO,GACrDT,EAAOxvN,KAAO+0N,EAAY,GAC1BvF,EAAOtvN,IAAM60N,EAAY,EAC7B,MAEIz4P,KAAKm1P,YAAYh3N,EAAQm1K,EAAQilD,EAAkBD,EAE3D,CACA,IAAIxoB,EAAY,CAAEpsM,KAAMwvN,EAAOxvN,KAAME,IAAKsvN,EAAOtvN,KAC7CuO,EAAWnyC,KAAKyyP,iBAChBvgI,EAAAA,EAAAA,IAAIlyH,KAAKizP,WAAYjzP,KAAKo4P,qBAAsB,CAAEvxL,GAAG,EAAMC,EAAG9mE,KAAK04P,iBAAmB5oB,GAAaA,EAEvG,GADA9vO,KAAKizP,WAAW17N,MAAMuiB,QAAU,QAC5B95C,KAAK+0P,iBAAgD,IAA7BzhD,EAAOh9M,QAAQ,WAA6C,IAA1Bg9M,EAAOh9M,QAAQ,QAAe,CACxF,IAAIm+P,GAAW/7N,EAAAA,EAAAA,IAAO,IAAMi5N,EAAW3xP,KAAKizP,YACxC0F,EAAYz5Q,SAASu1Q,EAASl9N,MAAMmM,KAAM,KAAOyO,EAASzO,KAAOwvN,EAAOxvN,MACxEi1N,EAAY,EACZA,EAAY,EAENA,EAAYlE,EAASh9N,YAAez3B,KAAKizP,WAAWx6M,cAC1DkgN,EAAY34P,KAAKizP,WAAWx6M,YAAcg8M,EAASh9N,aAEvDg9N,EAASl9N,MAAMmM,KAAOi1N,EAAUv9Q,WAAa,IACjD,CAIA,OAHA4kB,KAAKizP,WAAW17N,MAAMuiB,QAAU,GAChCg2L,EAAUpsM,KAAOyO,EAASzO,KAC1BosM,EAAUlsM,IAAMuO,EAASvO,IAClBksM,CACX,EACAhoC,EAAQzoM,UAAUm5P,kBAAoB,SAAUI,EAAgBC,EAAQC,GACpE,OAA0E,IAAjEF,EAAetiQ,QAAQ0J,KAAKmyC,SAASl+C,MAAM,aAAa,MACF,IAA1D2kQ,EAAetiQ,QAAQuiQ,EAAO5kQ,MAAM,aAAa,IAAgB,EAAI6kQ,EAAc,CAC5F,EACAhxD,EAAQzoM,UAAU+4P,mBAAqB,WACnC,OAAQp4P,KAAK04P,iBAAmB14P,KAAKm+B,OAASn+B,KAAKhd,QAAU,IACjE,EACA8kN,EAAQzoM,UAAUu3P,YAAc,SAAUjN,EAAeluQ,EAAGwrH,GACxD,IAAIj3F,EAAQhQ,KACZ,GAAIA,KAAK62P,WAAa,EAAG,CACrB5mP,aAAajQ,KAAKq3P,WAClBpnP,aAAajQ,KAAKo3P,WAOlBp3P,KAAKq3P,UAAYnnP,YANN,WACHF,EAAM6mP,YAAc7mP,EAAMijP,YAAcjjP,EAAM+oP,eAGlD/oP,EAAMgpP,YAAYrP,EAAeluQ,EAAGwrH,EACxC,GACkCjnG,KAAK62P,WAC3C,MAEI72P,KAAKg5P,YAAYrP,EAAeluQ,EAAGwrH,EAE3C,EACA6gG,EAAQzoM,UAAU25P,YAAc,SAAUrP,EAAeluQ,EAAGwrH,GACxD,IACI9oE,EADAnuB,EAAQhQ,KAGRm+B,EADA1iD,EACSukB,KAAKm+B,OAAU8oE,GAAiBxrH,EAAE0iD,OAAUn+B,KAAKhd,SAGjD01C,EAAAA,EAAAA,IAAO,sBAAwB14B,KAAK+2P,OAAS,aAAcn0P,UAExE5C,KAAKo0P,iBAAmB,CACpB95Q,KAAMmB,EAAIA,EAAEnB,KAAO,KAAMiN,QAAQ,EAAO42C,OAAQA,EAAQp8C,MAAOtG,GAAQ,KACvEuH,QAASgd,KAAKizP,WAAYhgQ,eAAe0a,EAAAA,EAAAA,IAAkBlyB,IAI/DukB,KAAK81B,QAAQ,cAAe91B,KAAKo0P,kBAAkB,SAAU0D,GACpDA,EAAavwQ,OAKdyoB,EAAM8kO,UAAW,GAJjB9kO,EAAMmnP,wBACNnnP,EAAMipP,UAAUtP,EAAexrN,GAKvC,IACAn+B,KAAKo0P,iBAAmB,IAC5B,EACAtsD,EAAQzoM,UAAU45P,UAAY,SAAUtP,EAAexrN,GAC/CA,GACAn+B,KAAKg3P,eAAe74N,GAExBn+B,KAAK80O,UAAW,EAChB,IAAIwR,EAAiB,CACjBluQ,KAAMuxQ,EAAc73L,OACpBhwB,SAAU6nN,EAAc7nN,SACxBhyB,MAAO65O,EAAc75O,MACrBmyB,eAAgB,UAES,SAAzB0nN,EAAc73L,SACdw0L,OAAiBprQ,GAEjB8kB,KAAKukE,UACLvkE,KAAKukE,SAASU,KAAKqhL,EAE3B,EACAx+C,EAAQzoM,UAAU23P,eAAiB,SAAU74N,GACzCn+B,KAAKk5P,kBAAkB/6N,IAClBxwB,EAAAA,EAAAA,IAAkBwwB,EAAOiD,aAAa,mBACvCjD,EAAO7H,aAAa,QAAS6H,EAAOiD,aAAa,iBACjDjD,EAAO+C,gBAAgB,iBAE3BlhC,KAAKs2P,oBAAoBn4N,EAC7B,EACA2pK,EAAQzoM,UAAU/D,MAAQ,WAClB0E,KAAKizP,cACL97N,EAAAA,EAAAA,IAAY,CAACn3B,KAAKizP,YAAab,IAC/B37N,EAAAA,EAAAA,IAAS,CAACz2B,KAAKizP,YAAad,IAE5BnyP,KAAK80O,WACD90O,KAAKukE,UACLvkE,KAAKukE,SAAS78C,UAEd1nB,KAAKizP,aACLt9N,EAAAA,EAAAA,IAAO31B,KAAKizP,YAEhBjzP,KAAKizP,WAAa,KAClBjzP,KAAKukE,SAAW,KAExB,EACAujI,EAAQzoM,UAAU85P,aAAe,SAAU19Q,GACnCukB,KAAKizP,aACLjzP,KAAK+4P,eAAgB,EAE7B,EACAjxD,EAAQzoM,UAAU+5P,gBAAkB,SAAU39Q,GAC1CukB,KAAK+4P,eAAgB,EACrB/4P,KAAK42P,YAAY52P,KAAKihC,UAAUzvB,MAAO/1B,EAAGukB,KAAKk0P,aACnD,EACApsD,EAAQzoM,UAAUg6P,WAAa,SAAU59Q,GACrC,IAAI69Q,EAAiB79Q,EAAEmsH,cAEvB,GAAI0xJ,IAAmBt5P,KAAKmzP,WAAY,CACpC,IAAIoG,GAAyBngO,EAAAA,EAAAA,IAAQkgO,EAAgB,IAAM7H,EAAe,IAAMY,EAAY,IAAMH,GAC9FqH,EACAvkO,EAAAA,GAAaG,IAAIokO,EAAwB,aAAcv5P,KAAKw5P,uBAAwBx5P,OAGpFA,KAAK42P,YAAY52P,KAAKihC,UAAUzvB,MAAO/1B,EAAGukB,KAAKk0P,cACvB,IAApBl0P,KAAK62P,YACL72P,KAAK1E,QAGjB,MAEI0E,KAAK42P,YAAY52P,KAAKihC,UAAUzvB,MAAO/1B,EAAGukB,KAAKk0P,cAC/Cl0P,KAAK1E,OAEb,EACAwsM,EAAQzoM,UAAUm6P,uBAAyB,SAAU/9Q,GACjDukB,KAAK42P,YAAY52P,KAAKihC,UAAUzvB,MAAO/1B,EAAGukB,KAAKk0P,cAC/Cl/N,EAAAA,GAAaW,OAAO31B,KAAKhd,QAAS,aAAcgd,KAAKw5P,wBACrDx5P,KAAK1E,OACT,EACAwsM,EAAQzoM,UAAU+2P,cAAgB,SAAU36Q,GACxCukB,KAAKwR,OACT,EACAs2L,EAAQzoM,UAAUm9O,YAAc,SAAUz6P,GACtC,IAAI03Q,EAAa,EACbC,EAAa,EACb33Q,EAAMzH,KAAKgc,QAAQ,UAAY,GAC/BvU,EAAM2uD,iBACN+oN,EAAa13Q,EAAMmiM,QAAQ,GAAG9gJ,MAC9Bs2N,EAAa33Q,EAAMmiM,QAAQ,GAAG3gJ,QAG9Bk2N,EAAa13Q,EAAMqhD,MACnBs2N,EAAa33Q,EAAMwhD,OAEvBo0N,EAAAA,GAAe32N,KAAKhhC,KAAKizP,aACzB97N,EAAAA,EAAAA,IAAY,CAACn3B,KAAKizP,YAAab,IAC/B37N,EAAAA,EAAAA,IAAS,CAACz2B,KAAKizP,YAAad,GAC5BnyP,KAAKm1P,YAAYpzQ,EAAMo8C,OAAQn+B,KAAKmyC,SAAUnyC,KAAK4yP,iBAAkB5yP,KAAK2yP,kBAC1E,IAAIe,EAAiB1zP,KAAKuzP,mBACtBpwO,EAAMnjB,KAAK4zP,uBAAuB5zP,KAAKmyC,SAAUuhN,EAAe9mO,EAAG8mO,EAAex/P,GAClF04B,EAAI6sO,EAAat2O,EAAIugB,KAAO1jC,KAAKmjC,QACjCjvC,EAAIwlQ,EAAav2O,EAAIygB,IAAM5jC,KAAKsjC,QAChC4vN,EAASlzP,KAAK6uG,eAAe9sH,EAAMo8C,OAAQvR,EAAG14B,GAClD,GAAI8L,KAAK4yP,mBAAqBM,EAAOgF,YAAcl4P,KAAK2yP,mBAAqBO,EAAO/kB,SAAU,CAC1F,IAAI76B,EAA8C,IAApCtzM,KAAKmyC,SAAS77C,QAAQ,WAAoD,IAAjC0J,KAAKmyC,SAAS77C,QAAQ,OACzE48P,EAAO/kB,SAAW+kB,EAAOgF,WAAahF,EAAOgF,WAAahF,EAAO/kB,SACrE+kB,EAAO/gN,SAAWmhK,EAClBtzM,KAAKm1P,YAAYpzQ,EAAMo8C,OAAQ+0N,EAAO/gN,SAAU+gN,EAAOgF,WAAYhF,EAAO/kB,UAC1E,IAAIwrB,EAAS35P,KAAK4zP,uBAAuBV,EAAO/gN,SAAUuhN,EAAe9mO,EAAG8mO,EAAex/P,GAC3Fg/P,EAAOxvN,KAAO+1N,EAAaE,EAAOj2N,KAAO1jC,KAAKmjC,QAC9C+vN,EAAOtvN,IAAM81N,EAAaC,EAAO/1N,IAAM5jC,KAAKsjC,OAChD,CACAtjC,KAAKizP,WAAW17N,MAAMmM,KAAOwvN,EAAOxvN,KAAO,KAC3C1jC,KAAKizP,WAAW17N,MAAMqM,IAAMsvN,EAAOtvN,IAAM,IAC7C,EACAkkK,EAAQzoM,UAAU4iP,QAAU,SAAUlgQ,IAC7B4rB,EAAAA,EAAAA,IAAkB3N,KAAK45P,eAAiBjsP,EAAAA,EAAAA,IAAkB3N,KAAKm+B,SACnD,GAAG9gC,MAAMqC,MAAKo5B,EAAAA,EAAAA,IAAU94B,KAAKm+B,OAAQn+B,KAAKhd,UAC5C/K,SAAW+nB,KAAK45P,YAAY3hR,SACnC+nB,KAAKm7C,aAAan7C,KAAK+nM,SACvB/nM,KAAKu5C,WAAWv5C,KAAK+nM,UAGzB/nM,KAAKizP,YAAgC,KAAlBlxQ,EAAMi4D,SACzBh6C,KAAKwR,OAEb,EACAs2L,EAAQzoM,UAAUw6P,SAAW,SAAUp+Q,GAC/BukB,KAAKizP,YAAgD,QAAlC75N,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,IAAMsuB,KAAmBzsD,KAAKk2P,UACnEl2P,KAAKwR,OAEb,EACAs2L,EAAQzoM,UAAUu0E,cAAgB,SAAUn4F,GACpCukB,KAAKizP,aAAejzP,KAAKk2P,YACnB98N,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,IAAMszN,EAAe,IAAMY,EAAY,IAAMH,IACjElyP,KAAKwR,QAGjB,EAOAs2L,EAAQzoM,UAAUisC,OAAS,WACvBtrC,KAAKyvC,aACLzvC,KAAKu5C,WAAWv5C,KAAK+nM,SACrB/nM,KAAKqsC,gBACT,EAOAy7J,EAAQzoM,UAAU+rC,UAAY,WAC1BprC,KAAKgzP,SAAWlB,EAChB9xP,KAAK4yP,iBAAmB,SACxB5yP,KAAK2yP,iBAAmB,MACxB3yP,KAAK80O,UAAW,CACpB,EASAhtC,EAAQzoM,UAAUk6C,WAAa,SAAUzjB,GAErC,IADA,IACSvnB,EAAK,EAAGurP,EADC95P,KAAK+5P,eAAejkO,GACQvnB,EAAKurP,EAAc7hR,OAAQs2B,IAAM,CAC3E,IAAIw5L,EAAU+xD,EAAcvrP,GAC5B,GAAgB,WAAZw5L,EACA,OAEY,UAAZA,GACA/nM,KAAKg6P,kBAEO,UAAZjyD,GACA/yK,EAAAA,GAAaG,IAAIn1B,KAAKhd,QAAS4vC,EAAAA,GAAQgC,gBAAiB50B,KAAK22P,YAAa32P,MAE9D,UAAZ+nM,IACIn1K,EAAAA,GAAQY,UACRxzB,KAAKknE,YAAc,IAAI9qB,EAAAA,GAAMp8C,KAAKhd,QAAS,CACvC6sD,iBAz6BA,IA06BA67E,QAAS1rH,KAAKu2P,eAAev3P,KAAKgB,QAEtCg1B,EAAAA,GAAaG,IAAIn1B,KAAKhd,QAAS4vC,EAAAA,GAAQkC,cAAe90B,KAAK02P,gBAAiB12P,OAG5Eg1B,EAAAA,GAAaG,IAAIn1B,KAAKhd,QAAS,YAAagd,KAAKy2P,YAAaz2P,MAG1E,CACAg1B,EAAAA,GAAaG,IAAIvyB,SAAU,WAAY5C,KAAK65P,SAAU75P,MACtDg1B,EAAAA,GAAaG,IAAIvyB,SAAU,eAAgB5C,KAAK4zE,cAAe5zE,MAC/Dg1B,EAAAA,GAAaG,IAAI70C,OAAQ,SAAU0f,KAAKooG,aAAcpoG,MACtDg1B,EAAAA,GAAaG,IAAIvyB,SAAU,UAAW5C,KAAKiiP,QAASjiP,KACxD,EACA8nM,EAAQzoM,UAAU06P,eAAiB,SAAUjkO,GAIzC,MAHgB,SAAZA,IACAA,EAAWlD,EAAAA,GAAQY,SAAY,QAAU,eAEtCsC,EAAQ7hC,MAAM,IACzB,EACA6zM,EAAQzoM,UAAU26P,gBAAkB,WAChC,IAAKrsP,EAAAA,EAAAA,IAAkB3N,KAAKm+B,QAcxBnJ,EAAAA,GAAaG,IAAIn1B,KAAKhd,QAAS,QAASgd,KAAKy2P,YAAaz2P,WAb1D,GAA8B,SAA1BA,KAAKhd,QAAQ0nE,SACb11B,EAAAA,GAAaG,IAAIn1B,KAAKhd,QAAS,UAAWgd,KAAKy2P,YAAaz2P,UAE3D,CACD,IAAIi6P,EAAa,GAAG58P,MAAMqC,MAAKo5B,EAAAA,EAAAA,IAAU94B,KAAKm+B,OAAQn+B,KAAKhd,UAC3Dgd,KAAK45P,YAAcK,EACnB,IAAK,IAAI1rP,EAAK,EAAG2rP,EAAeD,EAAY1rP,EAAK2rP,EAAajiR,OAAQs2B,IAAM,CACxE,IAAI4vB,EAAS+7N,EAAa3rP,GAC1BymB,EAAAA,GAAaG,IAAIgJ,EAAQ,QAASn+B,KAAKy2P,YAAaz2P,KACxD,CACJ,CAKR,EACA8nM,EAAQzoM,UAAU44P,gBAAkB,SAAUx8Q,EAAG0iD,GACzCn+B,KAAKizP,aACAjzP,KAAKk2P,WACS,UAAXz6Q,EAAEnB,MACF06C,EAAAA,GAAaG,IAAIgJ,EAAQ,OAAQn+B,KAAKq5P,WAAYr5P,MAEvC,YAAXvkB,EAAEnB,MACF06C,EAAAA,GAAaG,IAAIgJ,EAAQ,WAAYn+B,KAAKq5P,WAAYr5P,MAE3C,cAAXvkB,EAAEnB,MACF06C,EAAAA,GAAaG,IAAIgJ,EAAQ,aAAcn+B,KAAKq5P,WAAYr5P,MAExDA,KAAK62P,aACL7hO,EAAAA,GAAaG,IAAIn1B,KAAKizP,WAAY,aAAcjzP,KAAKm5P,aAAcn5P,MACnEg1B,EAAAA,GAAaG,IAAIn1B,KAAKizP,WAAY,aAAcjzP,KAAKo5P,gBAAiBp5P,QAG1EA,KAAKmzP,YAAiC,IAAnBnzP,KAAKs3P,WACxBtiO,EAAAA,GAAaG,IAAIgJ,EAAQ,kCAAmCn+B,KAAKw8O,YAAax8O,MAG1F,EAUA8nM,EAAQzoM,UAAU87C,aAAe,SAAUrlB,GAEvC,IADA,IACSvnB,EAAK,EAAG4rP,EADCn6P,KAAK+5P,eAAejkO,GACQvnB,EAAK4rP,EAAcliR,OAAQs2B,IAAM,CAC3E,IAAIw5L,EAAUoyD,EAAc5rP,GAC5B,GAAgB,WAAZw5L,EACA,OAEY,UAAZA,GACA/nM,KAAKo6P,oBAEO,UAAZryD,GACA/yK,EAAAA,GAAaW,OAAO31B,KAAKhd,QAAS4vC,EAAAA,GAAQgC,gBAAiB50B,KAAK22P,aAEpD,UAAZ5uD,IACIn1K,EAAAA,GAAQY,UACJxzB,KAAKknE,aACLlnE,KAAKknE,YAAYx/C,UAErBsN,EAAAA,GAAaW,OAAO31B,KAAKhd,QAAS4vC,EAAAA,GAAQkC,cAAe90B,KAAK02P,kBAG9D1hO,EAAAA,GAAaW,OAAO31B,KAAKhd,QAAS,YAAagd,KAAKy2P,aAGhE,CACAzhO,EAAAA,GAAaW,OAAO/yB,SAAU,WAAY5C,KAAK65P,UAC/C7kO,EAAAA,GAAaW,OAAO/yB,SAAU,eAAgB5C,KAAK4zE,eACnD5+C,EAAAA,GAAaW,OAAOr1C,OAAQ,SAAU0f,KAAKooG,cAC3CpzE,EAAAA,GAAaW,OAAO/yB,SAAU,UAAW5C,KAAKiiP,QAClD,EACAn6C,EAAQzoM,UAAU+6P,kBAAoB,WAClC,IAAKzsP,EAAAA,EAAAA,IAAkB3N,KAAKm+B,QAaxBnJ,EAAAA,GAAaW,OAAO31B,KAAKhd,QAAS,QAASgd,KAAKy2P,kBAZhD,GAA8B,SAA1Bz2P,KAAKhd,QAAQ0nE,SACb11B,EAAAA,GAAaW,OAAO31B,KAAKhd,QAAS,UAAWgd,KAAKy2P,kBAIlD,IADA,IACSloP,EAAK,EAAG8rP,EADA,GAAGh9P,MAAMqC,MAAKo5B,EAAAA,EAAAA,IAAU94B,KAAKm+B,OAAQn+B,KAAKhd,UACfurB,EAAK8rP,EAAapiR,OAAQs2B,IAAM,CACxE,IAAI4vB,EAASk8N,EAAa9rP,GAC1BymB,EAAAA,GAAaW,OAAOwI,EAAQ,QAASn+B,KAAKy2P,YAC9C,CAMZ,EACA3uD,EAAQzoM,UAAU65P,kBAAoB,SAAU/6N,GAC5C,IAAKn+B,KAAKk2P,SAAU,CAEhB,IADA,IACS3nP,EAAK,EAAG+rP,EADCt6P,KAAK+5P,eAAe/5P,KAAK+nM,SACGx5L,EAAK+rP,EAAcriR,OAAQs2B,IAAM,CAC3E,IAAIw5L,EAAUuyD,EAAc/rP,GACZ,UAAZw5L,IACA/yK,EAAAA,GAAaW,OAAOwI,EAAQ,OAAQn+B,KAAKq5P,YACzCrkO,EAAAA,GAAaW,OAAOwI,EAAQ,WAAYn+B,KAAKq5P,aAEjC,UAAZtxD,GAAwBn1K,EAAAA,GAAQY,UAChCwB,EAAAA,GAAaW,OAAOwI,EAAQ,aAAcn+B,KAAKq5P,WAEvD,CACIr5P,KAAK62P,aACL7hO,EAAAA,GAAaW,OAAOwI,EAAQ,aAAcn+B,KAAKm5P,cAC/CnkO,EAAAA,GAAaW,OAAOwI,EAAQ,aAAcn+B,KAAKo5P,iBAEvD,CACIp5P,KAAKmzP,YACLn+N,EAAAA,GAAaW,OAAOwI,EAAQ,kCAAmCn+B,KAAKw8O,YAE5E,EACA10C,EAAQzoM,UAAU60P,WAAa,WAE3B,OADax7N,EAAAA,EAAAA,IAAO,sBAAwB14B,KAAK+2P,OAAS,aAAcn0P,SAE5E,EAQAklM,EAAQzoM,UAAUu8B,cAAgB,WAC9B,MAAO,SACX,EAQAksK,EAAQzoM,UAAUytC,eAAiB,WAC/B,OAAO9sC,KAAKotC,aAAa,GAC7B,EAWA06J,EAAQzoM,UAAUi8B,kBAAoB,SAAU+G,EAASC,GAErD,IADA,IAAI2kE,EAAgBjnG,KAAKk0P,aAChB3lP,EAAK,EAAGvoB,EAAKnH,OAAOC,KAAKujD,GAAU9zB,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAE9D,OADWvoB,EAAGuoB,IAEV,IAAK,QACGvO,KAAKizP,YAAchsJ,IACnBjnG,KAAKizP,WAAW17N,MAAMwc,MAAQ/zC,KAAKizP,WAAW17N,MAAMoxF,UAAW72G,EAAAA,EAAAA,IAAWuwB,EAAQ0R,OAClF/zC,KAAK4oP,WAAW3hJ,IAEpB,MACJ,IAAK,SACGjnG,KAAKizP,YAAchsJ,IACnBjnG,KAAKizP,WAAW17N,MAAMyc,QAASliC,EAAAA,EAAAA,IAAWuwB,EAAQ2R,QAClDh0C,KAAK4oP,WAAW3hJ,IAEpB,MACJ,IAAK,UACGjnG,KAAKizP,YACLjzP,KAAK41P,gBAET,MACJ,IAAK,UACD51P,KAAKm7C,aAAa7Y,EAAQylK,SAC1B/nM,KAAKu5C,WAAWlX,EAAQ0lK,SACxB,MACJ,IAAK,WAED,GADA/nM,KAAK0yP,iBACD1yP,KAAKizP,YAAchsJ,EAAe,CAClC,IAAIwuJ,GAAgB/8N,EAAAA,EAAAA,IAAO,IAAMm5N,EAAiB7xP,KAAKizP,YACvDwC,EAAcl+N,MAAMqM,IAAM6xN,EAAcl+N,MAAMmM,KAAO,KACrD1jC,KAAK4oP,WAAW3hJ,EACpB,CACA,MACJ,IAAK,qBACGjnG,KAAKizP,YAAchsJ,GACnBjnG,KAAK4oP,WAAW3hJ,GAEpB,MACJ,IAAK,UACD,GAAIjnG,KAAKizP,WAAY,CACjB,IAAIrmO,EAAIyV,EAAQc,QAAUb,EAAQa,QAClCnjC,KAAKizP,WAAW17N,MAAMmM,MAAQxkD,SAAS8gB,KAAKizP,WAAW17N,MAAMmM,KAAM,IAAO9W,GAAIxxC,WAAa,IAC/F,CACA,MACJ,IAAK,UACD,GAAI4kB,KAAKizP,WAAY,CACjB,IAAI/+P,EAAImuC,EAAQiB,QAAUhB,EAAQgB,QAClCtjC,KAAKizP,WAAW17N,MAAMqM,KAAO1kD,SAAS8gB,KAAKizP,WAAW17N,MAAMqM,IAAK,IAAO1vC,GAAI9Y,WAAa,IAC7F,CACA,MACJ,IAAK,WACG4kB,KAAKizP,aACD3wN,EAAQniD,WACRg3C,EAAAA,EAAAA,IAAY,CAACn3B,KAAKizP,YAAa3wN,EAAQniD,SAAS8T,MAAM,MAEtDouC,EAAQliD,WACRs2C,EAAAA,EAAAA,IAAS,CAACz2B,KAAKizP,YAAa5wN,EAAQliD,SAAS8T,MAAM,OAG3D,MACJ,IAAK,YACG+L,KAAKizP,aACDjzP,KAAK2qC,WACLlU,EAAAA,EAAAA,IAAS,CAACz2B,KAAKizP,YAAanrM,IAG5B3wB,EAAAA,EAAAA,IAAY,CAACn3B,KAAKizP,YAAanrM,IAGvC,MACJ,IAAK,aACIn6C,EAAAA,EAAAA,IAAkB3N,KAAKuzN,oBACxBp8L,EAAAA,EAAAA,IAAY,CAACn3B,KAAKuzN,kBAAmB++B,GAEzCtyP,KAAKghE,UAAY3+B,EAAQ2+B,UACrBhhE,KAAKizP,YAAchsJ,IACnBjnG,KAAK43P,gBAAgB53P,MACrBA,KAAK4oP,WAAW3hJ,IAGhC,CACJ,EAQA6gG,EAAQzoM,UAAU9e,KAAO,SAAUyC,EAASi+C,IACpCtzB,EAAAA,EAAAA,IAAkBszB,KAClBA,EAAYjhC,KAAKihC,UAAU1gD,OAE3BotB,EAAAA,EAAAA,IAAkB3qB,KAClBA,EAAUgd,KAAKhd,SAEW,SAA1BA,EAAQu0C,MAAMuiB,SAGlB95C,KAAKi3P,YAAYj0Q,EAASi+C,EAC9B,EAOA6mK,EAAQzoM,UAAUmS,MAAQ,SAAUyvB,GAC3BA,IACDA,EAAYjhC,KAAKihC,UAAUzvB,OAE/BxR,KAAK42P,YAAY31N,EACrB,EAOA6mK,EAAQzoM,UAAU8rC,QAAU,SAAUhN,GAC9Bn+B,KAAKizP,YACLjzP,KAAK41P,cAAcz3N,GAEnBn+B,KAAKukE,UAAYpmC,GACjBn+B,KAAK4oP,WAAWzqN,EAExB,EAOA2pK,EAAQzoM,UAAUqoB,QAAU,WACxBjc,EAAOpM,UAAUqoB,QAAQhoB,KAAKM,MAC1BA,KAAKizP,aACLt9N,EAAAA,EAAAA,IAAO31B,KAAKizP,YAEZjzP,KAAKukE,UACLvkE,KAAKukE,SAAS78C,WAElByP,EAAAA,EAAAA,IAAY,CAACn3B,KAAKhd,SAAUypE,GAC5BzsD,KAAKm7C,aAAan7C,KAAK+nM,SACvB/nM,KAAKk5P,kBAAkBl5P,KAAKhd,SAC5Bgd,KAAKizP,WAAa,KAClBjzP,KAAKukE,SAAW,KAEhB,IADA,IACSh2D,EAAK,EAAGgsP,GADGzhO,EAAAA,EAAAA,IAAU,sBAAwB94B,KAAK+2P,OAAS,aAAc/2P,KAAKhd,SACrCurB,EAAKgsP,EAAgBtiR,OAAQs2B,IAAM,CACjF,IAAI4vB,EAASo8N,EAAgBhsP,GAC7BvO,KAAKg3P,eAAe74N,EACxB,CACJ,EACAwB,EAAW,EACPzB,EAAAA,EAAAA,IAAS,SACV4pK,EAAQzoM,UAAW,aAAS,GAC/BsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,SACV4pK,EAAQzoM,UAAW,cAAU,GAChCsgC,EAAW,EACPzB,EAAAA,EAAAA,OACD4pK,EAAQzoM,UAAW,eAAW,GACjCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,SACV4pK,EAAQzoM,UAAW,iBAAa,GACnCsgC,EAAW,EACPzB,EAAAA,EAAAA,OACD4pK,EAAQzoM,UAAW,cAAU,GAChCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,cACV4pK,EAAQzoM,UAAW,gBAAY,GAClCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,IACV4pK,EAAQzoM,UAAW,eAAW,GACjCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,IACV4pK,EAAQzoM,UAAW,eAAW,GACjCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4pK,EAAQzoM,UAAW,sBAAkB,GACxCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4pK,EAAQzoM,UAAW,uBAAmB,GACzCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4pK,EAAQzoM,UAAW,uBAAmB,GACzCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,SACV4pK,EAAQzoM,UAAW,0BAAsB,GAC5CsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,SACV4pK,EAAQzoM,UAAW,eAAW,GACjCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4pK,EAAQzoM,UAAW,kBAAc,GACpCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4pK,EAAQzoM,UAAW,gBAAY,GAClCsgC,EAAW,EACPrB,EAAAA,EAAAA,IAAQ,CAAC,EAAG0B,IACb8nK,EAAQzoM,UAAW,iBAAa,GACnCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,IACV4pK,EAAQzoM,UAAW,iBAAa,GACnCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,IACV4pK,EAAQzoM,UAAW,kBAAc,GACpCsgC,EAAW,EACPzB,EAAAA,EAAAA,OACD4pK,EAAQzoM,UAAW,gBAAY,GAClCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV4pK,EAAQzoM,UAAW,2BAAuB,GAC7CsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,KACV4pK,EAAQzoM,UAAW,sBAAkB,GACxCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDs4L,EAAQzoM,UAAW,oBAAgB,GACtCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDs4L,EAAQzoM,UAAW,kBAAc,GACpCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDs4L,EAAQzoM,UAAW,iBAAa,GACnCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDs4L,EAAQzoM,UAAW,mBAAe,GACrCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDs4L,EAAQzoM,UAAW,kBAAc,GACpCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDs4L,EAAQzoM,UAAW,uBAAmB,GACzCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDs4L,EAAQzoM,UAAW,eAAW,GACjCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDs4L,EAAQzoM,UAAW,iBAAa,GACnCyoM,EAAUnoK,EAAW,CACjBhB,EAAAA,IACDmpK,EAEP,CAvxC6B,CAuxC3Bz9J,EAAAA,kLCt2CE9K,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAmBzC86N,EAAkB,CAAC,MAAO,YAAa,WAAY,OAAQ,KAC3D,WAAY,QAAS,WAAY,QAAS,OAAQ,OAClD,UAAW,UAAW,UACtBC,EAAc,CAAC,YAAa,MAAO,YAEnC7gO,EAAa,IAAI5wB,OAAO,KAGxB0xP,EAA+B,SAAUjvP,GAEzC,SAASivP,IACL,IAAI1qP,EAAmB,OAAXvE,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,KAUhE,OATAgQ,EAAM2qP,eAAgB,EACtB3qP,EAAM4qP,SAAW,GACjB5qP,EAAM6qP,cAAgB,EACtB7qP,EAAM8qP,gBAAiB,EACvB9qP,EAAM+qP,kBAAmB,EACzB/qP,EAAMgrP,qBAAsB,EAC5BhrP,EAAM8rF,SAAU,EAChB9rF,EAAMirP,+BAAgC,EACtCjrP,EAAMkrP,WAAY,EACXlrP,CACX,CAgiBA,OA7iBAuvB,EAAUm7N,EAAejvP,GAiBzBivP,EAAcr7P,UAAU87P,kBAAoB,WACxCn7P,KAAKo7P,cAAa,GAClBp7P,KAAKq7P,gBAAgE,IAA/CZ,EAAYnkQ,QAAQ0J,KAAK47B,iBAI/C57B,KAAKs7P,uBACDt7P,KAAK8vH,SAAW9vH,KAAK8vH,QAAQ73I,SAC7B+nB,KAAK26P,eAAgB,EACrB36P,KAAK+sC,uBACL/sC,KAAK26P,eAAgB,EAE7B,EACAD,EAAcr7P,UAAUk8P,mBAAqB,SAAUz+E,GAC9C98K,KAAKi7P,gCAAiCj7P,KAAK+6P,kBAAqB/6P,KAAKg7P,qBAClEl+E,IAAS98K,KAAK7d,QACd6d,KAAKi7P,+BAAgC,EACrCj7P,KAAKw7P,kBAAkBx7P,KAAK7d,MAAO6d,KAAK7d,OAGpD,EACAu4Q,EAAcr7P,UAAUi8P,qBAAuB,WAC3C,IAAIxkO,EAAM92B,KAAKy7P,aACX3kO,IAAQ92B,KAAK86P,iBACb96P,KAAK86P,gBAAiB,EACtB96P,KAAK+qC,SAASjU,GAEtB,EAOA4jO,EAAcr7P,UAAUq8P,sBAAwB,SAAUC,GAEtD,OADA37P,KAAKi7P,+BAAgC,EAChCj7P,KAAK+6P,kBAIL/6P,KAAK86P,iBACN7qP,aAAajQ,KAAK66P,eAClB76P,KAAK86P,gBAAiB,EACtB96P,KAAK+qC,SAAS/qC,KAAKy7P,eAEvBz7P,KAAK47P,iBAAiBD,IACf,IATH37P,KAAK47P,iBAAiBD,GAAW,IAC1B,EASf,EAIAjB,EAAcr7P,UAAUu8P,iBAAmB,SAAUD,EAAWE,GAO5D,IANA,IAAI7rP,EAAQhQ,KACR87P,GAASntP,EAAAA,EAAAA,IAAO,CAAC,EAAGgtP,GACpB78Q,EAAOD,OAAOC,KAAK68Q,GAEnBI,GAAsBpuP,EAAAA,EAAAA,IAAkB3N,KAAK7d,MAA0B,qBACrEwrB,EAAAA,EAAAA,IAAkB3N,KAA6B,wBAAsC,GAAjCA,KAA6B,uBADPA,KAAK7d,MAA0B,mBAEtGosB,EAAK,EAAGC,EAAS1vB,EAAMyvB,EAAKC,EAAOv2B,OAAQs2B,IAAM,CACtD,IAAIytP,EAAUxtP,EAAOD,GACjB0tP,EAA0B,cAAZD,EAClB,GAAgB,aAAZA,EAOJ,GAJKC,IAAgBtuP,EAAAA,EAAAA,IAAkB3N,KAAKk8P,eAAe,GAAKF,KAC5Dh8P,KAAKk8P,eAAe,GAAKF,KAAaF,EAAO,GAAKE,KAClDh8P,KAAKk8P,eAAe,GAAKF,GAAWF,EAAO,GAAKE,IAEhDh8P,KAAKm8P,cAAcn8P,KAAK7d,MAAM,GAAK65Q,GAAUL,EAAU,GAAKK,WACrDF,EAAO,GAAKE,QAElB,IAAwC,IAApCh8P,KAAK46P,SAAStkQ,QAAQ0lQ,GAC3B,GAAIC,EAAa,CACbj8P,KAAKo8P,SAAU,EAEf,IADA,IAAIC,EAAer8P,KAAK7d,MAAM,GAAK65Q,GAAS/nQ,MAAM,KACzCkR,EAAI,EAAGA,EAAIk3P,EAAapkR,OAAQktB,IACrCnF,KAAKhd,QAAQ4zC,UAAUjB,OAAO0mO,EAAan9Q,SAASimB,EAAE/pB,WAAY,MAGtE,IADA,IAAIkhR,EAAgBR,EAAO,GAAKE,GAAS/nQ,MAAM,KACtCuiB,EAAI,EAAGA,EAAI8lP,EAAcrkR,OAAQu+B,IACtCxW,KAAKhd,QAAQ4zC,UAAUzB,IAAImnO,EAAcp9Q,SAASs3B,EAAEp7B,WAAY,KAExE,KACqB,aAAZ4gR,GAA2Bh8P,KAAKo2B,WAAW3mB,eAAeusP,WACxDF,EAAO,GAAKE,QAGN,UAAZA,GAAuBL,EAAU,GAAKK,KAAah8P,KAAK,GAAKg8P,IAG7DD,EAAmBzlQ,QAAQ0lQ,IAAY,IAAmB,YAAZA,GAAyD,oBAAzBF,EAAO,GAAKE,IAA6BL,EAAU,GAAKK,GAAS5gR,aAAe4kB,KAAK,GAAKg8P,GAAS5gR,qBAF/K0gR,EAAO,GAAKE,EAK3B,CACIF,EAAiB,iBACVA,EAAiB,SAGxB97P,KAAK+6P,mBAAqB/6P,KAAKq7P,gBAAkBr7P,KAAK7d,MAAMs4Q,aAC5DvqP,YAAW,WACPF,EAAMwrP,kBAAkBM,EAAQH,EAAWE,EAC/C,IAGA77P,KAAKw7P,kBAAkBM,EAAQH,EAAWE,EAElD,EACAnB,EAAcr7P,UAAUm8P,kBAAoB,SAAUM,EAAQH,EAAWE,GACrE,IAAIE,GAAsBpuP,EAAAA,EAAAA,IAAkB3N,KAAK7d,MAA0B,oBAAwC,GAAnC6d,KAAK7d,MAA0B,mBAC3GtD,OAAOC,KAAKg9Q,GAAQ7jR,SACf4jR,GAED77P,KAAKu8P,uBAAuBT,EAAQ97P,MAExCA,KAAK26B,cAAcmhO,EAAQD,KAE2B,IAAtDE,EAAmBzlQ,QAAQ,uBAC3B0J,KAAKo7P,aAAaS,EAAQF,EAElC,EACAjB,EAAcr7P,UAAUk9P,uBAAyB,SAAU73O,EAAW5jC,GAClE,IAAI07Q,EAAe17Q,EAAQ27Q,gBAC3B,GAAID,EACA,IAAK,IAAIrpP,KAAQqpP,EAAc,CAC3B,IAAIE,EAAUF,EAAa,GAAKrpP,GAC5BuR,EAAU,GAAKvR,KACfnxB,EAAAA,EAAAA,IAAS06Q,GAAStvP,EAAAA,EAAAA,IAAS+F,EAAMuR,GAAYA,EAErD,CAER,EACAg2O,EAAcr7P,UAAUs9P,qBAAuB,WAC3C,IAAI3sP,EAAQhQ,KACZA,KAAK87F,SAAU,EACf,IAAI8gK,EAAW/9Q,OAAOC,KAAKkhB,KAAK7d,OAK3B6d,KAAKk8P,iBACNl8P,KAAKk8P,eAAiB,CAAC,GAE3Bl8P,KAAK46P,SAAWJ,EAAgB75Q,OAAOqf,KAAK68P,mBAAqB,IACjE,IAAK,IAAItuP,EAAK,EAAG6E,EAAawpP,EAAUruP,EAAK6E,EAAWn7B,OAAQs2B,IAAM,CAClE,IAAI4E,EAAOC,EAAW7E,IACS,IAA3B4E,EAAK7c,QAAQ,WAA8C,IAA3B6c,EAAK7c,QAAQ,WAAoD,IAAjC0J,KAAK46P,SAAStkQ,QAAQ6c,IAClFnT,KAAKk8P,eAAe,GAAK/oP,KAAUnT,KAAK7d,MAAM,GAAKgxB,KACnDnT,KAAKk8P,eAAe,GAAK/oP,GAAQnT,KAAK7d,MAAM,GAAKgxB,GAG7D,CACA,IAAKnT,KAAKk8P,eAAe74Q,IAAK,CAE1B2c,KAAKk8P,eAAe74Q,IAAM,SAAUyzC,GAChC9mB,EAAMyrP,aAAe3kO,CACzB,GAIqD,IAHjC,CAAC,eAAgB,WAAY,eAAgB,eAAgB,cAC7E,UAAW,cAAe,iBAAkB,UAC5C,WAAY,gBAAiB,SAAU,aAAc,iBAAkB,kBAAmB,aAAc,WAAY,SAAU,SAChHxgC,QAAQ0J,KAAK47B,mBAC3B57B,KAAKk8P,eAAel9Q,IAAM,GAAK07Q,EAAcoC,SAC7CpC,EAAcoC,WAEtB,CACA,GAAI98P,KAAKo8P,QAAS,CAGd,IAFA,IAAIzwB,EAAU3rO,KAAKhd,QAAQ4zC,UACvB37C,EAAY+kB,KAAKk8P,eAA0B,UACtC/2P,EAAI,EAAGA,EAAIwmO,EAAQ1zP,OAAQktB,KACiC,IAA5DlqB,EAAUqb,QAAQq1O,EAAQzsP,SAASimB,EAAE/pB,WAAY,QAClD4kB,KAAKk8P,eAA0B,UAAIl8P,KAAKk8P,eAA0B,UAAI,IAAMvwB,EAAQzsP,SAASimB,EAAE/pB,WAAY,MAGnH4kB,KAAKo8P,SAAU,CACnB,CACA,OAAOp8P,KAAKk8P,cAChB,EAEAxB,EAAcr7P,UAAUy2B,QAAU,SAAUV,EAAWW,EAAW9O,GAC9D,IAAIjX,EAAQhQ,KACZ,IAAyB,IAArBA,KAAK46B,aAAwB56B,KAAKy6B,cAAe,CACjD,GAAIb,EAAW9xB,KAAKstB,GAAY,CAC5B,IAAI5oB,GAAUY,EAAAA,EAAAA,IAASgoB,EAAWp1B,MAC9BwM,GACAA,EAAQ9M,KAAKM,KAAM+1B,GACf9O,GACAA,EAAevnB,KAAKM,KAAM+1B,IAGzB9O,GACLA,EAAevnB,KAAKM,KAAM+1B,EAElC,CACmB,WAAdX,GAAwC,UAAdA,GACvBp1B,KAAK7d,MAAM46Q,UAAYhnO,EAAUh0C,OACjCie,KAAK7d,MAAM46Q,SAASr9P,UAAKxkB,EAAW,CAChC8hR,eAAgBjnO,EAAUh0C,MAC1Bk7Q,YAAa,CAAEllR,KAAMg+C,EAAUx4C,OAC/BA,MAAOw4C,EAAUx4C,MACjB4gD,OAAQn+B,OAIpB,IAAI86B,EAAgB96B,KAAKi6B,oBACzBj6B,KAAKi6B,qBAAsB,EACT,YAAd7E,EACAllB,YAAW,WACPF,EAAMkrP,WAAY,EACblrP,EAAM4qB,aACP5qB,EAAMyqB,cAAc1T,OAAOqO,EAAWW,EAAW9O,EAEzD,GAAG,IAGHjnB,KAAKy6B,cAAc1T,OAAOqO,EAAWW,EAAW9O,GAEpDjnB,KAAKi6B,oBAAsBa,CAC/B,CACJ,EACA4/N,EAAcr7P,UAAU88P,cAAgB,SAAU7+P,EAAQC,GAGtD,UAFqBD,WACCC,EACI,CACtB,GAAID,IAAWC,EACX,OAAO,EAEX,MAAMoQ,EAAAA,EAAAA,IAAkBrQ,IAAWA,EAAO2C,kBAAmB0N,EAAAA,EAAAA,IAAkBpQ,IAAWA,EAAO0C,aAC7F,OAAO,EAEX,GAAI3C,aAAkBhe,MAClBge,aAAkB0L,QAClB1L,aAAkBksC,QAClBlsC,aAAkBhkB,OAClB,OAAOgkB,EAAOliB,aAAemiB,EAAOniB,WAExC,IAAI0yB,EAAAA,EAAAA,IAASxQ,IAAWmR,MAAMC,QAAQpR,GAAS,CAC3C,IAAIs8E,EAAUt8E,EACV4/P,EAAW3/P,EAKf,OAJIuQ,EAAAA,EAAAA,IAAS8rE,KACTA,EAAU,CAACt8E,GACX4/P,EAAW,CAAC3/P,IAETyC,KAAKm9P,eAAevjL,EAASsjL,GAAU7hQ,MAClD,CACA,GAAIiC,EAAO2C,aACP3C,EAAO2C,YAAY7nB,OAASmlB,EAAO0C,YAAY7nB,OAClB,UAA5BklB,EAAO2C,YAAY7nB,MACY,gBAA5BklB,EAAO2C,YAAY7nB,OACnBkkB,KAAKK,UAAUW,KAAYhB,KAAKK,UAAUY,GAC1C,OAAO,CAGnB,CACA,OAAO,CACX,EACAm9P,EAAcr7P,UAAU89P,eAAiB,SAAUC,EAAUC,EAAU5/N,GACnE,IAAIpiC,GAAS,EACTiiQ,EAAiBF,EAASnlR,SAAWolR,EAASplR,OAC9CslR,EAAY,GACZ5Y,GAAiBh3O,EAAAA,EAAAA,IAAkB3N,KAAoB,eAA6B,GAAxBA,KAAoB,cACpF,GAAIs9P,EACA,IAAK,IAAIn4P,EAAI,EAAG8L,EAAMosP,EAASplR,OAAQktB,EAAI8L,EAAK9L,IAAK,CACjD,IAAI6O,EAAS,CAAC,EACVsuB,EAAU86N,EAASl+Q,SAASimB,EAAE/pB,WAAY,KAC1CinD,EAAUg7N,EAASn+Q,SAASimB,EAAE/pB,WAAY,KAC1C0D,EAAOD,OAAOC,KAAKujD,GACvB,GAAoB,IAAhBvjD,EAAK7G,OACL,IAAK,IAAIs2B,EAAK,EAAGwyE,EAASjiG,EAAMyvB,EAAKwyE,EAAO9oG,OAAQs2B,IAAM,CACtD,IAAIvvB,EAAM+hG,EAAOxyE,GACbmtB,EAAW4G,EAAQ,GAAKtjD,GACxByE,EAAW4+C,EAAQ,GAAKrjD,GAC5B,GAAY,UAARA,EACA,IAAK,IAAIw+Q,EAAK,EAAGA,EAAK/5Q,EAASxL,OAAQulR,IACnC,GAA6B,mBAAzBx9P,KAAK47B,iBAA2F,kBAA3Cn4C,EAASvE,SAASs+Q,EAAGpiR,WAAY,KACtF,MAAO,CAAEigB,QAAQ,GAO7B,GAH6B,SAAzB2E,KAAK47B,iBAAsC,UAAR58C,IACnCg1B,EAAO,GAAKh1B,GAAOyE,IAElB6+C,EAAQ7yB,eAAezwB,MAAW2lQ,EAAc1sQ,OAAS,IAA0C,IAArC0sQ,EAAcruP,QAAQ,GAAKtX,IAAqC,oBAAdyE,EAA4Buc,KAAKm8P,cAAczgO,EAAStgD,WAAYqI,EAASrI,YAAc4kB,KAAKm8P,cAAczgO,EAAUj4C,IAAY,CACrP,IAAKg6C,EACD,MAAO,CAAEpiC,QAAQ,GAErBA,GAAS,EACT2Y,EAAO,GAAKh1B,GAAOyE,CACvB,CACJ,MAEC,GAAI45Q,EAASn+Q,SAASimB,EAAE/pB,WAAY,OAASgiR,EAASl+Q,SAASimB,EAAE/pB,WAAY,KAC9EigB,GAAS,MAER,CACD,IAAKoiC,EACD,MAAO,CAAEpiC,QAAQ,GAErBA,GAAS,CACb,CAC6B,SAAzB2E,KAAK47B,iBAA2C,YAAb6B,IAA0B9vB,EAAAA,EAAAA,IAAkBqG,EAAc,SAC7FA,EAAc,WAAI94B,GAElB2D,OAAOC,KAAKk1B,GAAQ/7B,QACpBslR,EAAU99Q,KAAK,CAAEqH,MAAOqe,EAAG5nB,MAAOy2B,EAAQh1B,IAAKy+C,GAEvD,MAGApiC,GAAS,EAEb,MAAO,CAAEA,OAAQA,EAAQ6+B,kBAAmBqjO,EAChD,EACA7C,EAAcr7P,UAAU+7P,aAAe,SAAUS,EAAQ15Q,GACrD,GAAI6d,KAAKy9P,qBAAsB,CAG3B,IAFA,IAAIC,EAAa19P,KAAKwsC,sBAAwB,GAErCj+B,EAAK,EAAGovP,EADD39P,KAAK49P,uBAAyB,GACJrvP,EAAKovP,EAAY1lR,OAAQs2B,IAAM,CACrE,IAAI03B,EAAM03N,EAAYpvP,IACW,IAA7BmvP,EAAWpnQ,QAAQ2vC,IACnBy3N,EAAWj+Q,KAAKwmD,EAExB,CACAjmC,KAAKysC,gBAAkBixN,CAC3B,CACA,GAAI19P,KAAK69P,cAAe,CACpB,IAAIC,EAAe,GACfC,EAAiB/9P,KAAKg+P,iBAAiB,CAAC,EAAGh+P,KAAK69P,cAAgB17Q,GAAS6d,KAAK7d,OAClF,GAAI47Q,GAAkBl/Q,OAAOC,KAAKi/Q,GAAgB9lR,OAAQ,CACtD,IAAK4jR,GAAU77P,KAAKi+P,YAChB,IAAK,IAAIj4Q,EAAK,EAAG+wC,EAAK/2B,KAAKi+P,YAAaj4Q,EAAK+wC,EAAG9+C,OAAQ+N,IAAM,QAEnD+3Q,EAAe,GADThnO,EAAG/wC,GAEpB,CAEJ,GAAIga,KAAKk+P,eAEL,IADA,IAAIC,EAAQt/Q,OAAOC,KAAKkhB,KAAKk+P,gBACpB/4P,EAAI,EAAGA,EAAIg5P,EAAMlmR,OAAQktB,IAAK,CACnC,IAAInmB,EAAMm/Q,EAAMj/Q,SAASimB,EAAE/pB,WAAY,KACvC,GAAK2iR,EAAetuP,eAAezwB,GAAnC,CAGA,IAAIo/Q,EAAgBp+P,KAAKm9P,eAAen9P,KAAKk+P,eAAe,GAAKl/Q,GAAM++Q,EAAe,GAAK/+Q,GAAMA,GACjG,GAAIo/Q,EAAc/iQ,cACP0iQ,EAAe,GAAK/+Q,OAE1B,CACGo/Q,EAAclkO,kBAAkBjiD,SAChC6lR,EAAeA,EAAan9Q,OAAOy9Q,EAAclkO,oBAErD,IAAI5sB,EAAM,CAAC,EACXA,EAAI,GAAKtuB,GAAO++Q,EAAe,GAAK/+Q,GACpCghB,KAAKk+P,gBAAiBvvP,EAAAA,EAAAA,IAAO3O,KAAKk+P,eAAgB5wP,EACtD,CAZA,CAaJ,MAGAtN,KAAKk+P,gBAAiBvvP,EAAAA,EAAAA,IAAO,CAAC,EAAGovP,EAAgB,CAAC,GAAG,GAEzD,GAAID,EAAa7lR,OACb,GAA6B,SAAzB+nB,KAAK47B,iBAAsC,YAAR58C,EACnC,IAAK,IAAIq/Q,EAAM,EAAGC,EAAat+P,KAAKo0G,QAASiqJ,EAAMC,EAAWrmR,OAAQomR,IAAO,CAGzE,IAFoBjxP,EAAAA,EAAAA,IAAS,QAASkxP,EAAWp/Q,SAASm/Q,EAAIjjR,WAAY,SACtDgyB,EAAAA,EAAAA,IAASixP,EAAM,eAAgBP,GACd,CACjC,IAAIS,GAAenxP,EAAAA,EAAAA,IAAS0wP,EAAa5+Q,SAASm/Q,EAAIjjR,WAAY,KAAK4D,IAAM,IAAM8+Q,EAAa5+Q,SAASm/Q,EAAIjjR,WAAY,KAAK0L,MAAOkZ,MACjIu+P,GAAgBA,EAAa5jO,cAC7B4jO,EAAa5jO,cAAcmjO,EAAa5+Q,SAASm/Q,EAAIjjR,WAAY,KAAKmC,QAGtEoxB,EAAAA,EAAAA,IAAO4vP,EAAcT,EAAa5+Q,SAASm/Q,EAAIjjR,WAAY,KAAKmC,MAExE,MAEIyiB,KAAK26B,cAAcojO,EAAgBlC,EAE3C,MAGA,IAAK,IAAIx4J,EAAK,EAAGm7J,EAAiBV,EAAcz6J,EAAKm7J,EAAevmR,OAAQorH,IAAM,CAC9E,IAAIhlB,EAAUmgL,EAAen7J,GACzBo7J,GAAiBrxP,EAAAA,EAAAA,IAASixE,EAAQr/F,IAAM,IAAMq/F,EAAQv3F,MAAOkZ,MAC7Dy+P,GAAkBA,EAAe9jO,cACjC8jO,EAAe9jO,cAAc0jD,EAAQ9gG,QAGrCoxB,EAAAA,EAAAA,IAAO8vP,EAAgBpgL,EAAQ9gG,MAEvC,MAIJyiB,KAAK26B,cAAcojO,EAAgBlC,EAE3C,CACJ,CACJ,EACAnB,EAAcr7P,UAAUq/P,qBAAuB,WAC3CzuP,aAAajQ,KAAK66P,eAGd76P,KAAK+6P,kBAAoB/6P,KAAK86P,gBAAkB96P,KAAKhd,UAFvC,CAAC,eAAgB,YAEgDsT,QAAQ0J,KAAK47B,kBAAoBh5B,SAASuuB,KAAK+F,SAASl3B,KAAKhd,YAAqBgd,KAAK46B,aAAe56B,KAAKk7P,WAC1Ll7P,KAAK0nB,SAEb,EAEAgzO,EAAcr7P,UAAUs/P,mBAAqB,SAAU37Q,EAASg+E,GAC5D,IAAI49L,EAASC,EAAAA,aAAsB77Q,EAASg+E,GACvChhE,KAAK8vH,QAIN9vH,KAAK8vH,QAAQrwI,KAAKm/Q,GAHlB5+P,KAAK8vH,QAAU,CAAC8uI,EAKxB,EAEAlE,EAAcr7P,UAAU0tC,qBAAuB,SAAUrb,GACrD1xB,KAAKg7P,qBAAsB,EACvBtpO,EACA1xB,KAAK8+P,YAAYptO,GAGjB1xB,KAAK8+P,cAET9+P,KAAKg7P,qBAAsB,CAC/B,EAEAN,EAAcr7P,UAAU2tC,cAAgB,SAAU+xN,EAAej4Q,EAAO4qC,GACpE,IAAI1hB,EAAQhQ,KACRg/P,EAAa,GACbD,GAAiBA,EAAc9mR,OAC/Bw2B,MAAMpP,UAAUtgB,QAAQ2gB,KAAKq/P,GAAe,SAAUthO,GAClD,IACIwhO,EAAiB,EAOrB,GANAjvP,EAAM8/G,QAAQ/wI,SAAQ,SAAU6/Q,GACxBA,EAAOnhO,WAAaA,IACpBuhO,EAAWv/Q,KAAKw/Q,GAChBA,IAER,MACKtxP,EAAAA,EAAAA,IAAkB7mB,IAAUkpB,EAAM8/G,QAAQhpI,IAAUkpB,EAAM8/G,QAAQhpI,GAAO22C,WAAaA,EACvFztB,EAAM8/G,QAAQjpG,OAAO//B,EAAO,QAI5B,IAAK,IAAIqe,EAAI,EAAGA,EAAI6K,EAAM8/G,QAAQ73I,OAAQktB,IAClC6K,EAAM8/G,QAAQ5wI,SAASimB,EAAE/pB,WAAY,KAAKqiD,WAAaA,IACvDztB,EAAM8/G,QAAQjpG,OAAO1hB,EAAG,GACxBA,IAIhB,IAGAnF,KAAK8vH,QAAU,GAEnB9vH,KAAK+sC,qBAAqBrb,EAC9B,EAEAgpO,EAAcr7P,UAAU2+P,iBAAmB,SAAUkB,EAAYpqP,EAAQ3yB,GAGrE,IAFA,IAAI8+B,GAAO,EAEF1S,EAAK,EAAG4wP,EADJC,EAAAA,SAAeC,QAAQl9Q,EAAMvK,UACN22B,EAAK4wP,EAASlnR,OAAQs2B,IAAM,CAC5D,IAAI6B,EAAQ+uP,EAAS5wP,GACjB+wP,EAASt/P,KAAKu/P,aAAanvP,GAC3BpxB,EAAM81B,EAAO,GAAKwqP,GACtB,GAAIA,GAAUxqP,EAAQ,CAElB,IAAI0qP,EAAax/P,KAAKy/P,cAAcL,EAAAA,SAAeC,QAAQjvP,EAAMjuB,MAAMvK,UAAWoH,GAC9EwgR,EAAWvnR,SACXgpC,GAAO,EAEPi+O,EAAW9uP,EAAM91B,KAAK+kD,cAAgBigO,GAAUE,EAExD,CACJ,CACA,OAAIv+O,EACOi+O,EAEJ,IACX,EAEAxE,EAAcr7P,UAAUkgQ,aAAe,SAAUnvP,GAC7C,OAAIA,EAAM91B,MAAQ81B,EAAM91B,KAAKolR,aAClBtvP,EAAM91B,KAAKw8E,YAEf,EACX,EACA4jM,EAAcr7P,UAAUogQ,cAAgB,SAAUliC,EAAUx0N,GAExD,IADA,IAAIiE,EAAM,GACDuB,EAAK,EAAGoxP,EAAapiC,EAAUhvN,EAAKoxP,EAAW1nR,OAAQs2B,IAAM,CAClE,IAAI6B,EAAQuvP,EAAWpxP,GACnBqxP,GAAa,EACb5gR,OAAM,EACa,kBAAZ+pB,GACP62P,GAAa,EACb5gR,EAAM+pB,GAGN/pB,EAAMH,OAAOC,KAAKiqB,GAAS,GAE/B,IAAIoK,EAAO/C,EAAMjuB,MAGjB,GADY6d,KAAKu/P,aAAanvP,KAChBpxB,EACV,GAAI4gR,IAAezsP,EAAKv7B,SAAU,CAE9B,IAAIioR,GAAWlxP,EAAAA,EAAAA,IAAO,CAAC,EAAGwE,EAAM,CAAC,GAAG,GAEpCnT,KAAKu8P,uBAAuBsD,EAAUzvP,EAAM91B,MAC5C0yB,EAAIvtB,KAAKogR,EACb,KACK,CACD,IAAIC,EAAc9/P,KAAKg+P,kBAAiBrvP,EAAAA,EAAAA,IAAO,CAAC,EAAGwE,GAAOpK,EAAQ,GAAK/pB,GAAMm0B,IAASA,EAClF2sP,EAAsB,iBACfA,EAAsB,SAGjC9/P,KAAKu8P,uBAAuBuD,EAAa1vP,EAAM91B,MAC/C0yB,EAAIvtB,KAAKqgR,EACb,CAER,CACA,OAAO9yP,CACX,EAEA0tP,EAAcr7P,UAAUu+P,oBAAsB,WAE1C,IADA,IACSrvP,EAAK,EAAGwxP,EADJX,EAAAA,SAAeC,QAAQr/P,KAAK7d,MAAMvK,UACX22B,EAAKwxP,EAAS9nR,OAAQs2B,IAAM,CAC5D,IAAI6B,EAAQ2vP,EAASxxP,GAErB,GAAI6B,EAAM91B,KAAK0lR,UACX,OAAO5vP,EAAMjuB,MAAMuH,QAE3B,CACA,MAAO,EACX,EAIAgxQ,EAAcoC,SAAW,EAClBpC,CACX,CA/iBmC,CA+iBjC0E,EAAAA,WCzkBK,SAASa,EAAYC,EAAcC,GAEtCA,EAAUphR,SAAQ,SAAUohR,GACxBthR,OAAOs8C,oBAAoBglO,EAAU9gQ,WAAWtgB,SAAQ,SAAU3G,GACjD,cAATA,GAAiC,iBAATA,IACxB8nR,EAAa7gQ,UAAU,GAAKjnB,GAAQ+nR,EAAU9gQ,UAAU,GAAKjnB,GAErE,GACJ,GACJ,CCVA,IAAImnD,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAiBzC0gO,EAA6B,SAAU30P,GAEvC,SAAS20P,IACL,OAAkB,OAAX30P,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAKA,OARAu/B,EAAU6gO,EAAa30P,GAIvB20P,EAAY/gQ,UAAUisC,OAAS,WAC3B,OAAO,IACX,EACA80N,EAAYV,aAAc,EACnBU,CACX,CAViC,CAU/BhB,EAAAA,eC3BE7/N,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAiBzCj2C,EAAwB,SAAUgiB,GAElC,SAAShiB,IACL,OAAkB,OAAXgiB,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAMA,OATAu/B,EAAU91C,EAAQgiB,GAKlBhiB,EAAO4V,UAAUisC,OAAS,WACtB,OAAO,IACX,EACA7hD,EAAOu2Q,WAAY,EACZv2Q,CACX,CAX4B,CAW1B21Q,EAAAA,eCrBEiB,GAAiB37M,EAAAA,EAAAA,OAoCrBF,EAAAA,EAAAA,IAAkB,CAAEnD,QAlCb,SAAiBi/M,EAAiBprN,GACrC,MAA+B,kBAApBorN,GAAiCA,EAAgBjhQ,WAAaihQ,EAAgBjhQ,UAAUwlD,aAA0C,oBAApBy7M,EAC9GD,EAAeC,EAAiBprN,GAGhC,SAAUrvD,EAAMZ,EAAWkuB,EAAMnwB,GACpC,IAMIu9Q,EANAC,EAAcF,EACdG,EAAU56Q,EACa,kBAAhB26Q,IACPA,EAAcF,EAAgB9pQ,SAC9BiqQ,GAAU9xP,EAAAA,EAAAA,IAAO,CAAC,EAAG9oB,EAAMy6Q,EAAgBz6Q,MAAQ,CAAC,IAIpD06Q,EADAv9Q,GAIO4f,SAASgO,cAAc,OAElC,IAAI8vP,EAAOtB,EAAAA,cAAoBoB,EAAaC,GACxC7B,EAASC,EAAAA,aAAsB6B,EAAMH,GAQzC,GAPA3B,EAAOnhO,SAAWtqB,EACbluB,EAAU6qI,QAIX7qI,EAAU6qI,QAAQrwI,KAAKm/Q,GAHvB35Q,EAAU6qI,QAAU,CAAC8uI,IAKpB57Q,EACD,MAAO,CAACu9Q,EAEhB,CAER,yGC1CIhhO,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAsBzCr/C,EAAiC,SAAUorB,GAE3C,SAASprB,EAAgB8B,GACrB,IAAI6tB,EAAQvE,EAAO/L,KAAKM,KAAM7d,IAAU6d,KAOxC,OANAgQ,EAAM+qP,kBAAmB,EACzB/qP,EAAMytP,sBAAuB,EAC7BztP,EAAM2wP,uBAAyB,KAC/B3wP,EAAM20O,cAAgB,KACtB30O,EAAMluB,iBAAkB,EACxBkuB,EAAM8/G,QAAU,GACT9/G,CACX,CAUA,OApBAuvB,EAAUl/C,EAAiBorB,GAW3BprB,EAAgBgf,UAAUisC,OAAS,WAC/B,KAAMtrC,KAAKhd,UAAYgd,KAAK+6P,kBAAqB/6P,KAAKq6B,aAAgBr6B,KAAKg7P,oBAKvE,OAAOoE,EAAAA,cAAoB,SAAUp/P,KAAK28P,uBAAwB,GAAGh8Q,OAAOqf,KAAK7d,MAAMvK,SAAUooB,KAAK8vH,UAJtGrkH,EAAOpM,UAAUisC,OAAO5rC,KAAKM,MAC7BA,KAAK+6P,kBAAmB,CAKhC,EACO16Q,CACX,CAtBqC,CAsBnCgmE,EAAAA,KAEF45M,EAAAA,EAAAA,IAAY5/Q,EAAiB,CAACq6Q,EAAAA,GAAe0E,EAAAA,iHC9CzC7/N,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAsBzCnkD,EAAmC,SAAUkwB,GAE7C,SAASlwB,EAAkB4G,GACvB,IAAI6tB,EAAQvE,EAAO/L,KAAKM,KAAM7d,IAAU6d,KAOxC,OANAgQ,EAAM+qP,kBAAmB,EACzB/qP,EAAMytP,sBAAuB,EAC7BztP,EAAM2wP,uBAAyB,KAC/B3wP,EAAM20O,cAAgB,KACtB30O,EAAMluB,iBAAkB,EACxBkuB,EAAM8/G,QAAU,GACT9/G,CACX,CAUA,OApBAuvB,EAAUhkD,EAAmBkwB,GAW7BlwB,EAAkB8jB,UAAUisC,OAAS,WACjC,KAAMtrC,KAAKhd,UAAYgd,KAAK+6P,kBAAqB/6P,KAAKq6B,aAAgBr6B,KAAKg7P,oBAKvE,OAAOoE,EAAAA,cAAoBA,EAAAA,SAAgB,KAAM,GAAGz+Q,OAAOy+Q,EAAAA,cAAoB,QAASp/P,KAAK28P,wBAAyB38P,KAAK8vH,UAJ3HrkH,EAAOpM,UAAUisC,OAAO5rC,KAAKM,MAC7BA,KAAK+6P,kBAAmB,CAKhC,EACOx/Q,CACX,CAtBuC,CAsBrCzC,EAAAA,IAEFmnR,EAAAA,EAAAA,IAAY1kR,EAAmB,CAACm/Q,EAAAA,GAAe0E,EAAAA,iHC9C3C7/N,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAsBzCt9C,EAAqC,SAAUqpB,GAE/C,SAASrpB,EAAoBD,GACzB,IAAI6tB,EAAQvE,EAAO/L,KAAKM,KAAM7d,IAAU6d,KAOxC,OANAgQ,EAAM+qP,kBAAmB,EACzB/qP,EAAMytP,sBAAuB,EAC7BztP,EAAM2wP,uBAAyB,KAC/B3wP,EAAM20O,cAAgB,KACtB30O,EAAMluB,iBAAkB,EACxBkuB,EAAM8/G,QAAU,GACT9/G,CACX,CAUA,OApBAuvB,EAAUn9C,EAAqBqpB,GAW/BrpB,EAAoBid,UAAUisC,OAAS,WACnC,KAAMtrC,KAAKhd,UAAYgd,KAAK+6P,kBAAqB/6P,KAAKq6B,aAAgBr6B,KAAKg7P,oBAKvE,OAAOoE,EAAAA,cAAoBA,EAAAA,SAAgB,KAAM,GAAGz+Q,OAAOy+Q,EAAAA,cAAoB,QAASp/P,KAAK28P,wBAAyB38P,KAAK8vH,UAJ3HrkH,EAAOpM,UAAUisC,OAAO5rC,KAAKM,MAC7BA,KAAK+6P,kBAAmB,CAKhC,EACO34Q,CACX,CAtByC,CAsBvCnJ,EAAAA,IAEFgnR,EAAAA,EAAAA,IAAY79Q,EAAqB,CAACs4Q,EAAAA,GAAe0E,EAAAA,iHC9C7C7/N,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAsBzC/8C,EAAuC,SAAU8oB,GAEjD,SAAS9oB,EAAsBR,GAC3B,IAAI6tB,EAAQvE,EAAO/L,KAAKM,KAAM7d,IAAU6d,KAOxC,OANAgQ,EAAM+qP,kBAAmB,EACzB/qP,EAAMytP,sBAAuB,EAC7BztP,EAAM2wP,uBAAyB,CAAC,iBAAkB,gBAAiB,gBACnE3wP,EAAM20O,cAAgB,KACtB30O,EAAMluB,iBAAkB,EACxBkuB,EAAM8/G,QAAU,GACT9/G,CACX,CAUA,OApBAuvB,EAAU58C,EAAuB8oB,GAWjC9oB,EAAsB0c,UAAUisC,OAAS,WACrC,KAAMtrC,KAAKhd,UAAYgd,KAAK+6P,kBAAqB/6P,KAAKq6B,aAAgBr6B,KAAKg7P,oBAKvE,OAAOoE,EAAAA,cAAoBA,EAAAA,SAAgB,KAAM,GAAGz+Q,OAAOy+Q,EAAAA,cAAoB,QAASp/P,KAAK28P,wBAAyB38P,KAAK8vH,UAJ3HrkH,EAAOpM,UAAUisC,OAAO5rC,KAAKM,MAC7BA,KAAK+6P,kBAAmB,CAKhC,EACOp4Q,CACX,CAtB2C,CAsBzCvJ,EAAAA,IAEF6mR,EAAAA,EAAAA,IAAYt9Q,EAAuB,CAAC+3Q,EAAAA,GAAe0E,EAAAA,oHC9C/C7/N,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GA0BzCn2C,EAAiC,SAAUkiB,GAE3C,SAASliB,IACL,OAAkB,OAAXkiB,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAGA,OANAu/B,EAAUh2C,EAAiBkiB,GAI3BliB,EAAgButE,WAAa,SAC7BvtE,EAAgBkzQ,gBAAkB,CAAE,sBAAuB,uBACpDlzQ,CACX,CARqC,CAQnC62Q,EAAAA,IAEE92Q,EAAkC,SAAUmiB,GAE5C,SAASniB,IACL,OAAkB,OAAXmiB,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAGA,OANAu/B,EAAUj2C,EAAkBmiB,GAI5BniB,EAAiB+1C,aAAe,UAChC/1C,EAAiBwtE,WAAa,UACvBxtE,CACX,CARsC,CAQpC82Q,EAAAA,yGC5CE7gO,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAsBzC12C,EAA+B,SAAUyiB,GAEzC,SAASziB,EAAc7G,GACnB,IAAI6tB,EAAQvE,EAAO/L,KAAKM,KAAM7d,IAAU6d,KAQxC,OAPAgQ,EAAM+qP,kBAAmB,EACzB/qP,EAAMytP,sBAAuB,EAC7BztP,EAAM6tP,cAAgB,CAAE,QAAW,CAAE,OAAU,CAAE,eAAkB,kBAAqB,WAAc,CAAE,UAAa,CAAE,iBAAoB,qBAC3I7tP,EAAM2wP,uBAAyB,KAC/B3wP,EAAM20O,cAAgB,CAAC,WAAY,iBAAkB,mBAAoB,sBAAuB,eAAgB,kBAChH30O,EAAMluB,iBAAkB,EACxBkuB,EAAM8/G,QAAU,GACT9/G,CACX,CAUA,OArBAuvB,EAAUv2C,EAAeyiB,GAYzBziB,EAAcqW,UAAUisC,OAAS,WAC7B,KAAMtrC,KAAKhd,UAAYgd,KAAK+6P,kBAAqB/6P,KAAKq6B,aAAgBr6B,KAAKg7P,oBAKvE,OAAOoE,EAAAA,cAAoB,MAAOp/P,KAAK28P,uBAAwB,GAAGh8Q,OAAOqf,KAAK7d,MAAMvK,SAAUooB,KAAK8vH,UAJnGrkH,EAAOpM,UAAUisC,OAAO5rC,KAAKM,MAC7BA,KAAK+6P,kBAAmB,CAKhC,EACO/xQ,CACX,CAvBmC,CAuBjC8hJ,EAAAA,KAEFm1H,EAAAA,EAAAA,IAAYj3Q,EAAe,CAAC0xQ,EAAAA,GAAe0E,EAAAA,iHC/CvC7/N,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAsBzCp8C,EAAyC,SAAUmoB,GAEnD,SAASnoB,EAAwBnB,GAC7B,IAAI6tB,EAAQvE,EAAO/L,KAAKM,KAAM7d,IAAU6d,KAOxC,OANAgQ,EAAM+qP,kBAAmB,EACzB/qP,EAAMytP,sBAAuB,EAC7BztP,EAAM2wP,uBAAyB,KAC/B3wP,EAAM20O,cAAgB,KACtB30O,EAAMluB,iBAAkB,EACxBkuB,EAAM8/G,QAAU,GACT9/G,CACX,CAUA,OApBAuvB,EAAUj8C,EAAyBmoB,GAWnCnoB,EAAwB+b,UAAUisC,OAAS,WACvC,KAAMtrC,KAAKhd,UAAYgd,KAAK+6P,kBAAqB/6P,KAAKq6B,aAAgBr6B,KAAKg7P,oBAKvE,OAAOoE,EAAAA,cAAoBA,EAAAA,SAAgB,KAAM,GAAGz+Q,OAAOy+Q,EAAAA,cAAoB,QAASp/P,KAAK28P,wBAAyB38P,KAAK8vH,UAJ3HrkH,EAAOpM,UAAUisC,OAAO5rC,KAAKM,MAC7BA,KAAK+6P,kBAAmB,CAKhC,EACOz3Q,CACX,CAtB6C,CAsB3C/J,EAAAA,IAEF0mR,EAAAA,EAAAA,IAAY38Q,EAAyB,CAACo3Q,EAAAA,GAAe0E,EAAAA,iHC9CjD7/N,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAazCC,EAA0C,SAAUC,EAAYzB,EAAQn/C,EAAK6gD,GAC7E,IAA2H3pB,EAAvHD,EAAI5X,UAAUpmB,OAAQ4O,EAAIovB,EAAI,EAAIkoB,EAAkB,OAAT0B,EAAgBA,EAAOhhD,OAAOihD,yBAAyB3B,EAAQn/C,GAAO6gD,EACrH,GAAuB,kBAAZ/gC,SAAoD,oBAArBA,QAAQihC,SAAyBl5C,EAAIiY,QAAQihC,SAASH,EAAYzB,EAAQn/C,EAAK6gD,QACpH,IAAK,IAAI16B,EAAIy6B,EAAW3nD,OAAS,EAAGktB,GAAK,EAAGA,KAAS+Q,EAAI0pB,EAAWz6B,MAAIte,GAAKovB,EAAI,EAAIC,EAAErvB,GAAKovB,EAAI,EAAIC,EAAEioB,EAAQn/C,EAAK6H,GAAKqvB,EAAEioB,EAAQn/C,KAAS6H,GAChJ,OAAOovB,EAAI,GAAKpvB,GAAKhI,OAAOs1C,eAAegK,EAAQn/C,EAAK6H,GAAIA,CAChE,EAMI+5Q,EAAgB,gBAChB54M,EAAgB,CAAC,QAAS,QAAS,SAanCjuE,EAAyB,SAAU0xB,GAQnC,SAAS1xB,EAAQ2mB,EAAS1d,GACtB,IAAIgtB,EAAQvE,EAAO/L,KAAKM,KAAMU,EAAS1d,IAAYgd,KAQnD,OAPAgQ,EAAM2uD,cAAgB,KACtB3uD,EAAMy7C,WAAY,EAClBz7C,EAAM6wP,eAAgB,EACtB7wP,EAAM8wP,QAAS,EACf9wP,EAAM+wP,mBAAqB,KAC3B/wP,EAAM44C,OAAQ,EACd54C,EAAMgxP,eAAiBtgQ,EAChBsP,CACX,CA+rBA,OAhtBAuvB,EAAUxlD,EAAS0xB,GA0BnB1xB,EAAQslB,UAAUi8B,kBAAoB,SAAU+G,EAASC,GACrD,IAAK,IAAI/zB,EAAK,EAAGvoB,EAAKnH,OAAOC,KAAKujD,GAAU9zB,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAE9D,OADWvoB,EAAGuoB,IAEV,IAAK,iBACDqyD,EAAAA,EAAM4J,eAAexqE,KAAKihQ,gBAC1BrgM,EAAAA,EAAM6J,YAAYzqE,KAAKkhQ,kBAAmBlhQ,KAAK2gE,eAAgB3gE,KAAK0hE,aACpE,MACJ,IAAK,UACDd,EAAAA,EAAM7lF,WAAWilB,KAAK9mB,QAAS8mB,KAAKkhQ,kBAAmBlhQ,KAAK2gE,eAAgB3gE,KAAKihQ,eAAejgM,WAChGhhE,KAAK0kE,iBACL,MACJ,IAAK,QACD9D,EAAAA,EAAM0B,SAASjgC,EAAQ0R,MAAO/zC,KAAKihQ,eAAejgM,WAClD,MACJ,IAAK,QAEG,IAAIq/K,EAAergP,KAAKi6B,oBACxBj6B,KAAKi6B,qBAAsB,EACtBj6B,KAAKmhQ,QAAQnhQ,KAAKziB,SACnByiB,KAAKziB,MAAQyiB,KAAKziB,MAAMnC,YAE5B4kB,KAAKi6B,oBAAsBomN,EAC3Bz/K,EAAAA,EAAM5+E,SAASge,KAAKziB,MAAOyiB,KAAKkhQ,kBAAmBlhQ,KAAK2gE,eAAgB3gE,KAAKoiE,iBACzEpiE,KAAK6gQ,gBACL7gQ,KAAKhd,QAAQzF,MAAQyiB,KAAKkhQ,kBAAkB3jR,OAEhDyiB,KAAK+gQ,mBAAqB/gQ,KAAKkhQ,kBAAkB3jR,OAE5CyiB,KAAKyrD,WAAazrD,KAAK4oD,SAAiC,IAAvB5oD,KAAKmyD,eACvCnyD,KAAK2+D,cAAgB3+D,KAAKyrD,UAAYzrD,KAAKziB,MAAQyiB,KAAK2+D,cACxD3+D,KAAKmyD,eAAgB,KAEhBxkD,EAAAA,EAAAA,IAAkB3N,KAAKyrD,aAAezrD,KAAKyrD,WAC5CzrD,KAAKyrD,YAAczrD,KAAKmyD,eAAmBnyD,KAAKyrD,YAAa99C,EAAAA,EAAAA,IAAkB3N,KAAKmyD,iBACxFnyD,KAAKu3N,mBAGb,MACJ,IAAK,iBAEGv3N,KAAK01N,0BACL11N,KAAK22N,0BACL32N,KAAKytE,iBAAgB,GACrBztE,KAAK1nB,aAAcq1B,EAAAA,EAAAA,IAAkB3N,KAAKohQ,UAAYxgM,EAAAA,EAAM0yJ,kBAAkBtzN,KAAKihQ,eAAejgM,UAAWhhE,KAAKohQ,UAAYxgM,EAAAA,EAAM0yJ,kBAAkBtzN,KAAKihQ,eAAejgM,UAAWhhE,KAAKhd,SAE9L,MACJ,IAAK,WACD49E,EAAAA,EAAMyJ,YAAYrqE,KAAKqhE,SAAUrhE,KAAKkhQ,mBACtC,MACJ,IAAK,OACsC,aAAnClhQ,KAAKkhQ,kBAAkB/qO,UACvBn2B,KAAKkhQ,kBAAkB5qO,aAAa,OAAQt2B,KAAK1lB,MACjDsmF,EAAAA,EAAM0yJ,kBAAkBtzN,KAAKihQ,eAAejgM,UAAWhhE,KAAKhd,SAC5Dgd,KAAKu3N,oBAET,MACJ,IAAK,kBACD32J,EAAAA,EAAM2J,eAAevqE,KAAKoiE,gBAAiBpiE,KAAKkhQ,kBAAmBlhQ,KAAKihQ,gBACxEjhQ,KAAK0kE,iBACL,MACJ,IAAK,YACD9D,EAAAA,EAAM0J,aAAatqE,KAAK2qC,UAAW,CAAC3qC,KAAKihQ,eAAejgM,YACxD,MACJ,IAAK,cACDJ,EAAAA,EAAMwJ,eAAepqE,KAAK0hE,YAAa1hE,KAAKkhQ,mBAC5CtgM,EAAAA,EAAMC,eAAe7gE,KAAKkhQ,kBAAmBlhQ,KAAKihQ,eAAejgM,WACjE,MACJ,IAAK,eACyB,OAAtBhhE,KAAKqhQ,cAA+C,KAAtBrhQ,KAAKqhQ,aACnCrhQ,KAAKkhQ,kBAAkBG,aAAerhQ,KAAKqhQ,aAG3CrhQ,KAAK6oE,iBAAiB,CAAC,iBAE3B,MACJ,IAAK,WACD7oE,KAAKslE,eAAejjC,EAAQliD,SAAUmiD,EAAQniD,UAC9C,MACJ,IAAK,SACD6f,KAAKizD,UAAY,IAAIjrC,EAAAA,GAAqBhoB,KAAKwpB,QAC/CxpB,KAAK+hE,KAAKpmB,UAAU37C,KAAKwpB,QACzBxpB,KAAK26B,cAAc,CAAE+mC,YAAa1hE,KAAK+hE,KAAK9lB,YAAY,iBAAkB,GAC1E2kB,EAAAA,EAAMwJ,eAAepqE,KAAK0hE,YAAa1hE,KAAKkhQ,mBAGxD,CACJ,EAOAnnR,EAAQslB,UAAUu8B,cAAgB,WAC9B,MAAO,SACX,EACA7hD,EAAQslB,UAAU8hQ,QAAU,SAAU5tP,GAClC,OAASA,GAAO,QAAQzL,KAAKyL,EACjC,EACAx5B,EAAQslB,UAAU+rC,UAAY,WAO1B,GANAprC,KAAKksE,aAAelsE,KAAKhd,QAAQouB,WAAU,GAC3CpR,KAAKmsD,aAAc/yB,EAAAA,EAAAA,IAAQp5B,KAAKhd,QAAS,SACpC2qB,EAAAA,EAAAA,IAAkB3N,KAAKmsD,eACxBnsD,KAAK8gQ,QAAS,GAGW,gBAAzB9gQ,KAAKhd,QAAQmzC,QAA2B,CAMxC,IALA,IAAIs0B,GAAar9C,EAAAA,EAAAA,IAAS,gBAAiBpN,KAAKhd,SAC5C89E,EAAe9gE,KAAK1nB,UACpB0nB,KAAK4Q,cAAc,YACnB5Q,KAAK4Q,cAAc,SACnB9pB,EAAQ,EACAA,EAAQkZ,KAAKhd,QAAQwzC,WAAWv+C,OAAQ6O,IAAS,CAEnC,QADlBquO,EAAgBn1N,KAAKhd,QAAQwzC,WAAW1vC,GAAO4jE,WACH,UAAlByqK,GAC1Br0J,EAAaxqC,aAAa6+L,EAAen1N,KAAKhd,QAAQwzC,WAAW1vC,GAAO6jE,WACxEmW,EAAavvD,UAAYvR,KAAKhd,QAAQuuB,UAChB,SAAlB4jN,GACAn1N,KAAKhd,QAAQk+C,gBAAgB,SAGV,UAAlBi0L,GACLr0J,EAAaxqC,aAAa6+L,EAAen1N,KAAKhd,QAAQ/H,UAAUgZ,MAAM,KAAK9V,QAAO,SAAUiN,GAAQ,OAA+B,IAAxBA,EAAKkL,QAAQ,MAAc,IAAG2Q,KAAK,KAEtJ,CACAjH,KAAKhd,QAAQmuB,YAAY2vD,GACzB9gE,KAAKhd,QAAU89E,GACf9+E,EAAAA,EAAAA,IAAS,gBAAiByoE,EAAYzqD,KAAKhd,QAC/C,CACAgd,KAAK01N,0BACL11N,KAAKytE,iBAAgB,KAChB9/D,EAAAA,EAAAA,IAAkB3N,KAAKghQ,sBAAqD9lR,IAAjC8kB,KAAKghQ,eAAsB,OAA4C,KAAvBhhQ,KAAKhd,QAAQzF,OACzGyiB,KAAK26B,cAAc,CAAEp9C,MAAOyiB,KAAKhd,QAAQzF,QAAS,GAEzB,aAAzByiB,KAAKhd,QAAQmzC,SACbn2B,KAAKhd,QAAQszC,aAAa,OAAQt2B,KAAK1lB,MAEzB,SAAd0lB,KAAK1lB,MACL0lB,KAAKhd,QAAQszC,aAAa,OAAQ,WAEtCt2B,KAAKizD,UAAY,IAAIjrC,EAAAA,GAAqBhoB,KAAKwpB,QAC/C,IAAIkkD,EAAa,CAAEhM,YAAa1hE,KAAK0hE,aAWrC,GAVA1hE,KAAK+hE,KAAO,IAAIvmB,EAAAA,GAAK,UAAWkyB,EAAY1tE,KAAKwpB,QACJ,KAAzCxpB,KAAK+hE,KAAK9lB,YAAY,gBACtBj8C,KAAK26B,cAAc,CAAE+mC,YAAa1hE,KAAK0hE,aAAe1hE,KAAK+hE,KAAK9lB,YAAY,iBAAkB,GAE7Fj8C,KAAKhd,QAAQkjE,aAAa,OAC3BlmD,KAAKhd,QAAQszC,aAAa,MAAM5mB,EAAAA,EAAAA,IAAY,YAE3C1P,KAAKhd,QAAQkjE,aAAa,SAC3BlmD,KAAKhd,QAAQszC,aAAa,OAAQt2B,KAAKhd,QAAQo+C,aAAa,OAEnC,UAAzBphC,KAAKhd,QAAQmzC,SAAuBn2B,KAAK1nB,UAAW,CACpD0nB,KAAK6gQ,eAAgB,EACrB7gQ,KAAKohQ,SAAWphQ,KAAK4Q,cAAc,YACnC5Q,KAAKhd,QAAQstB,WAAW0nB,aAAah4B,KAAKohQ,SAAUphQ,KAAKhd,SACzDgd,KAAKhd,QAAQszC,aAAa,OAAQ,UAClCt2B,KAAKohQ,SAAS9qO,aAAa,OAAQt2B,KAAKhd,QAAQo+C,aAAa,SAC7DphC,KAAKhd,QAAQk+C,gBAAgB,QAC7BlhC,KAAKohQ,SAAS9qO,aAAa,OAAQt2B,KAAKhd,QAAQo+C,aAAa,SAC7DphC,KAAKhd,QAAQk+C,gBAAgB,QAC7BlhC,KAAKohQ,SAAS9qO,aAAa,MAAM5mB,EAAAA,EAAAA,IAAY,aAC7C,IAAI4xP,EAAgB,CAAC,cAAe,WAAY,QAAS,WAAY,OAAQ,gBAC7E,IAASx6Q,EAAQ,EAAGA,EAAQkZ,KAAKhd,QAAQwzC,WAAWv+C,OAAQ6O,IAAS,CACjE,IAAIquO,EAAgBn1N,KAAKhd,QAAQwzC,WAAW1vC,GAAO4jE,SAC/C1qD,KAAKhd,QAAQkjE,aAAaivK,IAAkBntK,EAAc1xD,QAAQ6+N,GAAiB,GAC/D,OAAlBA,GAA4C,SAAlBA,GAA8C,iBAAlBA,IAExDn1N,KAAKohQ,SAAS9qO,aAAa6+L,EAAen1N,KAAKhd,QAAQwzC,WAAW1vC,GAAO6jE,WACrE22M,EAAchrQ,QAAQ6+N,GAAiB,IACvCn1N,KAAKhd,QAAQk+C,gBAAgBi0L,GAC7BruO,KAGZ,CACJ,CACJ,EACA/M,EAAQslB,UAAUouE,gBAAkB,SAAUlL,GAG1C,IAFA,IAESh0D,EAAK,EAAGgzP,EAFLh/L,GAAY50D,EAAAA,EAAAA,IAAkB3N,KAAKsqD,gBAAkB,GAAKzrE,OAAOC,KAAKkhB,KAAKsqD,gBACnF,CAAC,cAAe,WAAY,QAAS,WAAY,OAAQ,gBAC3B/7C,EAAKgzP,EAAQtpR,OAAQs2B,IAAM,CACzD,IAAIvvB,EAAMuiR,EAAQhzP,GAClB,KAAKZ,EAAAA,EAAAA,IAAkB3N,KAAKhd,QAAQo+C,aAAapiD,IAC7C,OAAQA,GACJ,IAAK,WACD,IAAK2uB,EAAAA,EAAAA,IAAkB3N,KAAKghQ,sBAAuD9lR,IAAnC8kB,KAAKghQ,eAAwB,SAAqBz+L,EAAW,CACzG,IAAIrpF,EAA6C,aAAnC8mB,KAAKhd,QAAQo+C,aAAapiD,IAA0D,KAAnCghB,KAAKhd,QAAQo+C,aAAapiD,IAClD,SAAnCghB,KAAKhd,QAAQo+C,aAAapiD,GAC9BghB,KAAK26B,cAAc,CAAEzhD,QAASA,IAAYqpF,EAC9C,CACA,MACJ,IAAK,WACD,IAAK50D,EAAAA,EAAAA,IAAkB3N,KAAKghQ,sBAAwD9lR,IAApC8kB,KAAKghQ,eAAyB,UAAqBz+L,EAAW,CAC1G,IAAIlB,EAA8C,aAAnCrhE,KAAKhd,QAAQo+C,aAAapiD,IAA0D,KAAnCghB,KAAKhd,QAAQo+C,aAAapiD,IAChD,SAAnCghB,KAAKhd,QAAQo+C,aAAapiD,GACjCghB,KAAK26B,cAAc,CAAE0mC,SAAUA,IAAakB,EAChD,CACA,MACJ,IAAK,gBACI50D,EAAAA,EAAAA,IAAkB3N,KAAKghQ,sBAA2D9lR,IAAvC8kB,KAAKghQ,eAA4B,aAAqBz+L,IAClGviE,KAAK26B,cAAc,CAAE+mC,YAAa1hE,KAAKhd,QAAQ0+E,cAAgBa,GAEnE,MACJ,IAAK,eACD,IAAK50D,EAAAA,EAAAA,IAAkB3N,KAAKghQ,sBAA4D9lR,IAAxC8kB,KAAKghQ,eAA6B,cAAqBz+L,EAAW,CAC9G,IAAIi/L,EAAgD,QAA9BxhQ,KAAKhd,QAAQq+Q,aAAyB,MAAQ,KACpErhQ,KAAK26B,cAAc,CAAE0mO,aAAcG,IAAoBj/L,EAC3D,CACA,MACJ,IAAK,UACK50D,EAAAA,EAAAA,IAAkB3N,KAAKghQ,sBAAqD9lR,IAAjC8kB,KAAKghQ,eAAsB,OAAqBz+L,IAAqC,KAAvBviE,KAAKhd,QAAQzF,OACxHyiB,KAAK26B,cAAc,CAAEp9C,MAAOyiB,KAAKhd,QAAQzF,QAAUglF,GAEvD,MACJ,IAAK,SACI50D,EAAAA,EAAAA,IAAkB3N,KAAKghQ,sBAAoD9lR,IAAhC8kB,KAAKghQ,eAAqB,MAAqBz+L,IAC3FviE,KAAK26B,cAAc,CAAErgD,KAAM0lB,KAAKhd,QAAQ1I,OAASioF,GAKrE,CACJ,EAOAxoF,EAAQslB,UAAUisC,OAAS,WACvB,IAAImrL,EAAuBz2N,KAAK7f,UAC3BwtB,EAAAA,EAAAA,IAAkB3N,KAAK7f,WAA+B,KAAlB6f,KAAK7f,WAC1Cs2O,EAAuBz2N,KAAKyhQ,uBAAuBzhQ,KAAK7f,WAE5D6f,KAAKkhQ,kBAAqBlhQ,KAAK6gQ,cAAiB7gQ,KAAKohQ,SAAWphQ,KAAKhd,QACrEgd,KAAKihQ,eAAiBrgM,EAAAA,EAAMa,YAAY,CACpCz+E,QAASgd,KAAKkhQ,kBACdvgM,eAAgB3gE,KAAK2gE,eACrBvqC,WAAY,CACRl9C,QAAS8mB,KAAK9mB,QACdyxD,UAAW3qC,KAAK2qC,UAChBxqD,SAAUs2O,EACVp1J,SAAUrhE,KAAKqhE,SACfK,YAAa1hE,KAAK0hE,YAClBU,gBAAiBpiE,KAAKoiE,mBAG9BpiE,KAAK22N,0BACD32N,KAAK6gQ,eACL7gQ,KAAKkhQ,kBAAkB5wP,WAAW0nB,aAAah4B,KAAKhd,QAASgd,KAAKkhQ,mBAEtElhQ,KAAKu5C,cACA5rC,EAAAA,EAAAA,IAAkB3N,KAAKziB,SACxBqjF,EAAAA,EAAM5+E,SAASge,KAAKziB,MAAOyiB,KAAKkhQ,kBAAmBlhQ,KAAK2gE,eAAgB3gE,KAAKoiE,iBACzEpiE,KAAK6gQ,gBACL7gQ,KAAKhd,QAAQzF,MAAQyiB,KAAKkhQ,kBAAkB3jR,SAG/CowB,EAAAA,EAAAA,IAAkB3N,KAAKziB,SACxByiB,KAAK0hQ,aAAe1hQ,KAAKziB,MACzByiB,KAAK2hQ,mBAEiB,OAAtB3hQ,KAAKqhQ,cAA+C,KAAtBrhQ,KAAKqhQ,aACnCrhQ,KAAKkhQ,kBAAkBG,aAAerhQ,KAAKqhQ,cAErC1zP,EAAAA,EAAAA,IAAkB3N,KAAKghQ,sBAA4D9lR,IAAxC8kB,KAAKghQ,eAA6B,cACnFhhQ,KAAK6oE,iBAAiB,CAAC,iBAE3B7oE,KAAK2+D,cAAgB3+D,KAAKziB,MAC1ByiB,KAAK+gQ,mBAAqB/gQ,KAAKziB,MAC/ByiB,KAAKkhQ,kBAAkB/kO,aAAen8B,KAAKkhQ,kBAAkB3jR,MAC7DqjF,EAAAA,EAAM0B,SAAStiE,KAAK+zC,MAAO/zC,KAAKihQ,eAAejgM,aAC1CrzD,EAAAA,EAAAA,KAAkByrB,EAAAA,EAAAA,IAAQp5B,KAAKhd,QAAS,eAAgBo2C,EAAAA,EAAAA,IAAQp5B,KAAKhd,QAAS,YAAYjK,WAC3FinB,KAAK9mB,SAAU,GAEnB8mB,KAAKqsC,gBACT,EACAtyD,EAAQslB,UAAUs3N,wBAA0B,WACxC,KAAKhpN,EAAAA,EAAAA,IAAkB3N,KAAKsqD,gBACxB,IAAK,IAAI/7C,EAAK,EAAGvoB,EAAKnH,OAAOC,KAAKkhB,KAAKsqD,gBAAiB/7C,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAC1E,IAAIvvB,EAAMgH,EAAGuoB,GACb,GAAIy5C,EAAc1xD,QAAQtX,IAAQ,EAC9B,GAAY,UAARA,EAAiB,CACjB,IAAImmF,EAAqBnlE,KAAKyhQ,uBAAuBzhQ,KAAKsqD,eAAe,GAAKtrE,IACnD,KAAvBmmF,IACA1uC,EAAAA,EAAAA,IAAS,CAACz2B,KAAKihQ,eAAejgM,WAAYmE,EAAmBlxE,MAAM,KAE3E,MACK,GAAY,UAARjV,EAAiB,CACtB,IAAIomF,EAAWplE,KAAKihQ,eAAejgM,UAAU5/B,aAAapiD,GAC1DomF,GAAYz3D,EAAAA,EAAAA,IAAkBy3D,GAC1BplE,KAAKsqD,eAAe,GAAKtrE,GADcomF,EAAWplE,KAAKsqD,eAAe,GAAKtrE,GAE/EghB,KAAKihQ,eAAejgM,UAAU1qC,aAAat3C,EAAKomF,EACpD,MAEIplE,KAAKihQ,eAAejgM,UAAU1qC,aAAat3C,EAAKghB,KAAKsqD,eAAe,GAAKtrE,GAGrF,CAER,EACAjF,EAAQslB,UAAUq2N,wBAA0B,WACxC,KAAK/nN,EAAAA,EAAAA,IAAkB3N,KAAKsqD,gBACxB,IAAK,IAAI/7C,EAAK,EAAGvoB,EAAKnH,OAAOC,KAAKkhB,KAAKsqD,gBAAiB/7C,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAC1E,IAAIvvB,EAAMgH,EAAGuoB,GACTy5C,EAAc1xD,QAAQtX,GAAO,IAC7BghB,KAAK1nB,aAAcq1B,EAAAA,EAAAA,IAAkB3N,KAAKohQ,UAAYphQ,KAAKohQ,SAAS9qO,aAAat3C,EAAKghB,KAAKsqD,eAAe,GAAKtrE,IAAQghB,KAAKhd,QAAQszC,aAAat3C,EAAKghB,KAAKsqD,eAAe,GAAKtrE,IAEvL,CAER,EACAjF,EAAQslB,UAAUimE,eAAiB,SAAU+sC,EAAUC,GACnD1xC,EAAAA,EAAM2E,YAAYvlE,KAAKyhQ,uBAAuBpvJ,GAAW,CAACryG,KAAKihQ,eAAejgM,WAAYhhE,KAAKyhQ,uBAAuBnvJ,GAC1H,EACAv4H,EAAQslB,UAAUoiQ,uBAAyB,SAAUG,GACjD,IAAIxiR,EAASwiR,EAIb,OAHKj0P,EAAAA,EAAAA,IAAkBi0P,IAAsC,KAAnBA,IACtCxiR,EAAUwiR,EAAenrQ,QAAQ,OAAQ,KAAMwkD,QAE5C77D,CACX,EACArF,EAAQslB,UAAUsiQ,gBAAkB,WAC3B3hQ,KAAKyrD,WACNzrD,KAAKkhQ,kBAAkB5qO,aAAa,QAASt2B,KAAK0hQ,aAE1D,EACA3nR,EAAQslB,UAAUk6C,WAAa,WAC3BvkB,EAAAA,GAAaG,IAAIn1B,KAAKkhQ,kBAAmB,QAASlhQ,KAAKkpD,aAAclpD,MACrEg1B,EAAAA,GAAaG,IAAIn1B,KAAKkhQ,kBAAmB,OAAQlhQ,KAAK6oD,gBAAiB7oD,MACvEg1B,EAAAA,GAAaG,IAAIn1B,KAAKkhQ,kBAAmB,UAAWlhQ,KAAK+jE,eAAgB/jE,MACzEg1B,EAAAA,GAAaG,IAAIn1B,KAAKkhQ,kBAAmB,QAASlhQ,KAAKyjE,aAAczjE,MACrEg1B,EAAAA,GAAaG,IAAIn1B,KAAKkhQ,kBAAmB,SAAUlhQ,KAAKkqD,cAAelqD,MACnEA,KAAK8gQ,QACL9rO,EAAAA,GAAaG,IAAIn1B,KAAKmsD,YAAa,QAASnsD,KAAK3b,UAAW2b,MAEhEA,KAAK0kE,mBACA/2D,EAAAA,EAAAA,IAAkB3N,KAAKihQ,eAAejgM,UAAUzuD,cAAc,mBAA6C,SAAxBvS,KAAK2gE,gBACtF3gE,KAAKihQ,eAAejgM,UAAUpqC,UAAUM,SAAS,eACpDl3B,KAAKihQ,eAAejgM,UAAUpqC,UAAUM,SAAS,cACjDlC,EAAAA,GAAaG,IAAKn1B,KAAKihQ,eAAejgM,UAAUzuD,cAAc,iBAAmB,iBAAkBvS,KAAK6hQ,iBAAkB7hQ,KAElI,EACAjmB,EAAQslB,UAAUwiQ,iBAAmB,WACjC7hQ,KAAKihQ,eAAejgM,UAAUpqC,UAAUzB,IAAI,iBAC5C,IAAIv8C,EAAQonB,KAAKihQ,eAAejgM,UAAUzuD,cAAc,kBACnD5E,EAAAA,EAAAA,IAAkB/0B,KACnBA,EAAMg+C,UAAUzB,IAAI,eAChBv8C,EAAMg+C,UAAUM,SAAS,mBACzBt+C,EAAMg+C,UAAUjB,OAAO,kBAGnC,EACA57C,EAAQslB,UAAUyiQ,WAAa,SAAUvkR,GACrC,IAAI8iQ,EAAergP,KAAKi6B,oBACxBj6B,KAAKi6B,qBAAsB,EAC3Bj6B,KAAKziB,MAAQA,EACbyiB,KAAKi6B,oBAAsBomN,CAC/B,EACAtmQ,EAAQslB,UAAUhb,UAAY,WAO1B,GANI2b,KAAKyrD,UACLzrD,KAAK8hQ,WAAW,IAGhB9hQ,KAAK8hQ,WAAW9hQ,KAAK0hQ,gBAEpB/zP,EAAAA,EAAAA,IAAkB3N,KAAKihQ,gBAAiB,CACzC,IAAIroR,EAAQonB,KAAKihQ,eAAejgM,UAAUzuD,cAAc,kBACnD5E,EAAAA,EAAAA,IAAkB/0B,IAAkC,WAAxBonB,KAAK2gE,kBAC7BhzD,EAAAA,EAAAA,IAAkB3N,KAAK0hQ,eAAuC,KAAtB1hQ,KAAK0hQ,cAC9C9oR,EAAMg+C,UAAUzB,IAAI,kBACpBv8C,EAAMg+C,UAAUjB,OAAO,gBAEI,KAAtB31B,KAAK0hQ,eACV9oR,EAAMg+C,UAAUzB,IAAI,eACpBv8C,EAAMg+C,UAAUjB,OAAO,mBAGnC,CACJ,EACA57C,EAAQslB,UAAU6pD,aAAe,SAAUj7D,GACvC,IAAI+gC,EAAY,CACZgyC,UAAWhhE,KAAKihQ,eAAejgM,UAC/Bj/E,MAAOkM,EACP1Q,MAAOyiB,KAAKziB,OAEhByiB,KAAK81B,QAAQ,QAAS9G,EAC1B,EACAj1C,EAAQslB,UAAUwpD,gBAAkB,SAAU56D,GACb,OAAvB+R,KAAK2+D,eAAyC,OAAf3+D,KAAKziB,OAAmD,KAAjCyiB,KAAKkhQ,kBAAkB3jR,OAC9EyiB,KAAK2+D,gBAAkB3+D,KAAKziB,OAC7ByiB,KAAKu3N,iBAAiBtpO,GAAM,GAEhC,IAAI+gC,EAAY,CACZgyC,UAAWhhE,KAAKihQ,eAAejgM,UAC/Bj/E,MAAOkM,EACP1Q,MAAOyiB,KAAKziB,OAEhByiB,KAAK81B,QAAQ,OAAQ9G,EACzB,EACAj1C,EAAQslB,UAAU0kE,eAAiB,SAAU91E,GACnB,KAAjBA,EAAK+rD,SAAmC,IAAjB/rD,EAAK+rD,WAA4C,OAAvBh6C,KAAK2+D,eAAiD,KAAvB3+D,KAAK2+D,eAAyC,OAAf3+D,KAAKziB,OAAiC,KAAfyiB,KAAKziB,OAAkD,KAAjCyiB,KAAKkhQ,kBAAkB3jR,QACpLyiB,KAAK26B,cAAc,CAAEp9C,MAAOyiB,KAAKkhQ,kBAAkB3jR,QAAS,EAEpE,EACAxD,EAAQslB,UAAUokE,aAAe,SAAUx1E,GAEvC,IACI+gC,EAAY,CACZjtC,MAAOkM,EACP1Q,MAAOyiB,KAAKkhQ,kBAAkB3jR,MAC9BohF,cAAe3+D,KAAK+gQ,mBACpB//L,UAAWhhE,KAAKihQ,eAAejgM,WAEnChhE,KAAK+gQ,mBAAqB/gQ,KAAKkhQ,kBAAkB3jR,MAE7CyiB,KAAKyrD,YATQzrD,KAUF44N,YAAY,CAAEr7O,MAAOyiB,KAAKkhQ,kBAAkB3jR,QACvDyiB,KAAKmyD,eAAgB,GAErBnyD,KAAK4oD,QACL5oD,KAAKmyD,eAAgB,GAEzBnyD,KAAK81B,QAAQ,QAAS9G,GACtB/gC,EAAK+6D,iBACT,EACAjvE,EAAQslB,UAAU6qD,cAAgB,SAAUj8D,GACxC+R,KAAK26B,cAAc,CAAEp9C,MAAOyiB,KAAKkhQ,kBAAkB3jR,QAAS,GACxDyiB,KAAK2+D,eAAiB3+D,KAAKziB,OAC3ByiB,KAAKu3N,iBAAiBtpO,GAAM,GAEhCA,EAAK+6D,iBACT,EACAjvE,EAAQslB,UAAUk4N,iBAAmB,SAAUx1O,EAAOggR,GAClD,IAAI/yO,EAAY,CACZjtC,MAAOA,EACPxE,MAAOyiB,KAAKziB,MACZohF,cAAe3+D,KAAK2+D,cACpBqC,UAAWhhE,KAAKihQ,eAAejgM,UAC/B+6G,cAAegmF,IAA4B,EAC3C9uQ,aAAc8uQ,IAA4B,GAE9C/hQ,KAAKmyD,eAAgB,EACrBnyD,KAAK81B,QAAQ,SAAU9G,GACvBhvB,KAAK2+D,cAAgB3+D,KAAKziB,MAEG,UAAzByiB,KAAKhd,QAAQmzC,SAAuBn2B,KAAK1nB,WAAmC,YAAtBs6C,EAAAA,GAAQyB,KAAKj8C,OACnE4nB,KAAKhd,QAAQzF,MAAQyiB,KAAKkhQ,kBAAkB3jR,MAEpD,EACAxD,EAAQslB,UAAUqlE,eAAiB,WAC3B1kE,KAAKoiE,kBACDpiE,KAAK9mB,QACL87C,EAAAA,GAAaG,IAAIn1B,KAAKihQ,eAAeh9L,YAAa,uBAAwBjkE,KAAKgiQ,kBAAmBhiQ,MAGlGg1B,EAAAA,GAAaW,OAAO31B,KAAKihQ,eAAeh9L,YAAa,uBAAwBjkE,KAAKgiQ,mBAG9F,EACAjoR,EAAQslB,UAAU2iQ,kBAAoB,SAAUjgR,GAE5C,GADAA,EAAM2uD,kBACA1wC,KAAKihQ,eAAeh9L,YAAYrtC,UAAUM,SAxfvC,sBAwfgEl3B,KAAKihQ,eAAejgM,UAAUpqC,UAAUM,SAAS,kBAAmB,CACzI0pC,EAAAA,EAAM5+E,SAAS,GAAIge,KAAKkhQ,kBAAmBlhQ,KAAK2gE,eAAgB3gE,KAAKoiE,iBACjEpiE,KAAK6gQ,gBACL7gQ,KAAKhd,QAAQzF,MAAQyiB,KAAKkhQ,kBAAkB3jR,OAEhDyiB,KAAK26B,cAAc,CAAEp9C,MAAOyiB,KAAKkhQ,kBAAkB3jR,QAAS,GAC5D,IAAIyxC,EAAY,CACZjtC,MAAOA,EACPxE,MAAOyiB,KAAKkhQ,kBAAkB3jR,MAC9BohF,cAAe3+D,KAAK+gQ,mBACpB//L,UAAWhhE,KAAKihQ,eAAejgM,WAKnC,GAHAhhE,KAAK81B,QAAQ,QAAS9G,GACtBhvB,KAAK+gQ,mBAAqB/gQ,KAAKkhQ,kBAAkB3jR,MACjDyiB,KAAKu3N,iBAAiBx1O,GAAO,IACzBq3C,EAAAA,EAAAA,IAAQp5B,KAAKhd,QAAS,QAAS,CAC/B,IAAIA,EAAUgd,KAAKhd,QACf6hF,EAAajiE,SAASqoD,YAAY,iBACtC4Z,EAAW3Z,UAAU,SAAS,GAAO,GACrCloE,EAAQmoE,cAAc0Z,EAC1B,CACJ,CACJ,EACA9qF,EAAQslB,UAAU6nD,aAAe,WAC7BlyB,EAAAA,GAAaW,OAAO31B,KAAKkhQ,kBAAmB,QAASlhQ,KAAKkpD,cAC1Dl0B,EAAAA,GAAaW,OAAO31B,KAAKkhQ,kBAAmB,OAAQlhQ,KAAK6oD,iBACzD7zB,EAAAA,GAAaW,OAAO31B,KAAKkhQ,kBAAmB,UAAWlhQ,KAAK+jE,gBAC5D/uC,EAAAA,GAAaW,OAAO31B,KAAKkhQ,kBAAmB,QAASlhQ,KAAKyjE,cAC1DzuC,EAAAA,GAAaW,OAAO31B,KAAKkhQ,kBAAmB,SAAUlhQ,KAAKkqD,eACvDlqD,KAAK8gQ,QACL9rO,EAAAA,GAAaW,OAAO31B,KAAKmsD,YAAa,QAASnsD,KAAK3b,aAEnDspB,EAAAA,EAAAA,IAAkB3N,KAAKihQ,eAAejgM,UAAUzuD,cAAc,mBAA6C,SAAxBvS,KAAK2gE,gBACtF3gE,KAAKihQ,eAAejgM,UAAUpqC,UAAUM,SAAS,cACpDl3B,KAAKihQ,eAAejgM,UAAUpqC,UAAUM,SAAS,eACjDlC,EAAAA,GAAaW,OAAQ31B,KAAKihQ,eAAejgM,UAAUzuD,cAAc,iBAAmB,iBAAkBvS,KAAK6hQ,iBAEnH,EAQA9nR,EAAQslB,UAAUqoB,QAAU,WACxB1nB,KAAKknD,eACwB,UAAzBlnD,KAAKhd,QAAQmzC,SAAuBn2B,KAAK1nB,aACzCigD,EAAAA,EAAAA,IAAOv4B,KAAKihQ,eAAejgM,UAAUnwD,qBAAqB,YAAY,IACtE7Q,KAAKkhQ,kBAAoBlhQ,KAAKhd,QAC9Bgd,KAAKhd,QAAQk+C,gBAAgB,SAEjClhC,KAAKkhQ,kBAAkB3jR,MAAQyiB,KAAKkhQ,kBAAkB/kO,aACtDn8B,KAAKkhQ,kBAAkBtqO,UAAUjB,OAAO,WACxC31B,KAAK6oE,iBAAiB,CAAC,gBAAiB,gBAAiB,qBACpDl7D,EAAAA,EAAAA,IAAkB3N,KAAKihQ,kBACxBjhQ,KAAKihQ,eAAejgM,UAAUiI,sBAAsB,WAAYjpE,KAAKkhQ,oBACrE3oO,EAAAA,EAAAA,IAAOv4B,KAAKihQ,eAAejgM,YAE/BhhE,KAAKihQ,eAAiB,KACtBrgM,EAAAA,EAAMl5C,UACNjc,EAAOpM,UAAUqoB,QAAQhoB,KAAKM,KAClC,EASAjmB,EAAQslB,UAAU20N,QAAU,SAAU7hL,EAAU8hL,GAC5CrzJ,EAAAA,EAAMozJ,QAAQ7hL,EAAU8hL,EAAOj0N,KAAKihQ,eAAejgM,UAAWhhE,KAAKkhQ,kBAAmBlhQ,KAAK4Q,cAC/F,EAMA72B,EAAQslB,UAAUytC,eAAiB,WAE/B,OAAO9sC,KAAKotC,aADI,CAAC,SAErB,EAQArzD,EAAQslB,UAAUjc,cAAgB,SAAUozC,GACxC,IAAK,IAAIjoB,EAAK,EAAGvoB,EAAKnH,OAAOC,KAAK03C,GAAajoB,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CACjE,IAAIvvB,EAAMgH,EAAGuoB,GACD,aAARvvB,GACAghB,KAAK26B,cAAc,CAAEzhD,SAAS,IAAS,GACvC0nF,EAAAA,EAAM7lF,WAAWilB,KAAK9mB,QAAS8mB,KAAKkhQ,kBAAmBlhQ,KAAK2gE,eAAgB3gE,KAAKihQ,eAAejgM,YAEnF,aAARhiF,GACLghB,KAAK26B,cAAc,CAAE0mC,UAAU,IAAQ,GACvCT,EAAAA,EAAMyJ,YAAYrqE,KAAKqhE,SAAUrhE,KAAKkhQ,oBAEzB,UAARliR,EACLghB,KAAKkhQ,kBAAkBtqO,UAAUzB,IAAIqB,EAAW,GAAKx3C,IAExC,gBAARA,GACLghB,KAAK26B,cAAc,CAAE+mC,YAAalrC,EAAW,GAAKx3C,KAAQ,GAC1D4hF,EAAAA,EAAMwJ,eAAepqE,KAAK0hE,YAAa1hE,KAAKkhQ,qBAE/B,SAARliR,GAAkBghB,KAAKkhQ,kBAAkB/qO,QAC9Cn2B,KAAKkhQ,kBAAkB5qO,aAAat3C,EAAKw3C,EAAW,GAAKx3C,IAKjE,CACJ,EAOAjF,EAAQslB,UAAUwpE,iBAAmB,SAAUryC,GAC3C,IAAK,IAAIjoB,EAAK,EAAGs7D,EAAerzC,EAAYjoB,EAAKs7D,EAAa5xF,OAAQs2B,IAAM,CACxE,IAAIvvB,EAAM6qF,EAAat7D,GACX,aAARvvB,GACAghB,KAAK26B,cAAc,CAAEzhD,SAAS,IAAQ,GACtC0nF,EAAAA,EAAM7lF,WAAWilB,KAAK9mB,QAAS8mB,KAAKkhQ,kBAAmBlhQ,KAAK2gE,eAAgB3gE,KAAKihQ,eAAejgM,YAEnF,aAARhiF,GACLghB,KAAK26B,cAAc,CAAE0mC,UAAU,IAAS,GACxCT,EAAAA,EAAMyJ,YAAYrqE,KAAKqhE,SAAUrhE,KAAKkhQ,oBAEzB,gBAARliR,GACLghB,KAAK26B,cAAc,CAAE+mC,YAAa,OAAQ,GAC1Cd,EAAAA,EAAMwJ,eAAepqE,KAAK0hE,YAAa1hE,KAAKkhQ,oBAG5ClhQ,KAAKkhQ,kBAAkBhgO,gBAAgBliD,EAE/C,CACJ,EAMAjF,EAAQslB,UAAUgoD,QAAU,WACpBzkD,SAASmjE,gBAAkB/lE,KAAKkhQ,mBAAqBlhQ,KAAK9mB,UAC1D8mB,KAAKkhQ,kBAAkBzvP,SACnBzR,KAAKihQ,eAAejgM,UAAUpqC,UAAUM,SAAS,kBAC9Cl3B,KAAKihQ,eAAejgM,UAAUpqC,UAAUM,SAAS,cACjDl3B,KAAKihQ,eAAejgM,UAAUpqC,UAAUM,SAAS,eACpDT,EAAAA,EAAAA,IAAS,CAACz2B,KAAKihQ,eAAejgM,WAAY,CAAC4/L,IAGvD,EAMA7mR,EAAQslB,UAAU8mE,SAAW,WACrBvjE,SAASmjE,gBAAkB/lE,KAAKkhQ,mBAAqBlhQ,KAAK9mB,UAC1D8mB,KAAKkhQ,kBAAkBt+Q,QACnBod,KAAKihQ,eAAejgM,UAAUpqC,UAAUM,SAAS,kBAC9Cl3B,KAAKihQ,eAAejgM,UAAUpqC,UAAUM,SAAS,cACjDl3B,KAAKihQ,eAAejgM,UAAUpqC,UAAUM,SAAS,eACpDC,EAAAA,EAAAA,IAAY,CAACn3B,KAAKihQ,eAAejgM,WAAY,CAAC4/L,IAG1D,EACAjhO,EAAW,EACPzB,EAAAA,EAAAA,IAAS,SACVnkD,EAAQslB,UAAW,YAAQ,GAC9BsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVnkD,EAAQslB,UAAW,gBAAY,GAClCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACVnkD,EAAQslB,UAAW,aAAS,GAC/BsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,UACVnkD,EAAQslB,UAAW,sBAAkB,GACxCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,KACVnkD,EAAQslB,UAAW,gBAAY,GAClCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACVnkD,EAAQslB,UAAW,mBAAe,GACrCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACVnkD,EAAQslB,UAAW,oBAAgB,GACtCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,CAAC,IACXnkD,EAAQslB,UAAW,sBAAkB,GACxCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVnkD,EAAQslB,UAAW,iBAAa,GACnCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVnkD,EAAQslB,UAAW,eAAW,GACjCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVnkD,EAAQslB,UAAW,uBAAmB,GACzCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACVnkD,EAAQslB,UAAW,yBAAqB,GAC3CsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACVnkD,EAAQslB,UAAW,aAAS,GAC/BsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDz1B,EAAQslB,UAAW,eAAW,GACjCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDz1B,EAAQslB,UAAW,iBAAa,GACnCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDz1B,EAAQslB,UAAW,cAAU,GAChCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDz1B,EAAQslB,UAAW,YAAQ,GAC9BsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDz1B,EAAQslB,UAAW,aAAS,GAC/BsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDz1B,EAAQslB,UAAW,aAAS,GAC/BtlB,EAAU4lD,EAAW,CACjBhB,EAAAA,IACD5kD,EAEP,CAltB6B,CAktB3BswD,EAAAA,cCxvBE9K,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAsBzC58C,EAAkC,SAAU2oB,GAE5C,SAAS3oB,EAAiBX,GACtB,IAAI6tB,EAAQvE,EAAO/L,KAAKM,KAAM7d,IAAU6d,KAOxC,OANAgQ,EAAM+qP,kBAAmB,EACzB/qP,EAAMytP,sBAAuB,EAC7BztP,EAAM2wP,uBAAyB,KAC/B3wP,EAAM20O,cAAgB,KACtB30O,EAAMluB,iBAAkB,EACxBkuB,EAAM8/G,QAAU,GACT9/G,CACX,CAUA,OApBAuvB,EAAUz8C,EAAkB2oB,GAW5B3oB,EAAiBuc,UAAUisC,OAAS,WAChC,KAAMtrC,KAAKhd,UAAYgd,KAAK+6P,kBAAqB/6P,KAAKq6B,aAAgBr6B,KAAKg7P,oBAKvE,OAAOoE,EAAAA,cAAoBA,EAAAA,SAAgB,KAAM,GAAGz+Q,OAAOy+Q,EAAAA,cAAoB,QAASp/P,KAAK28P,wBAAyB38P,KAAK8vH,UAJ3HrkH,EAAOpM,UAAUisC,OAAO5rC,KAAKM,MAC7BA,KAAK+6P,kBAAmB,CAKhC,EACOj4Q,CACX,CAtBsC,CAsBpC/I,IAEFkmR,EAAAA,EAAAA,IAAYn9Q,EAAkB,CAAC43Q,EAAAA,GAAe0E,EAAAA,gHC9C1C7/N,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAazCC,EAA0C,SAAUC,EAAYzB,EAAQn/C,EAAK6gD,GAC7E,IAA2H3pB,EAAvHD,EAAI5X,UAAUpmB,OAAQ4O,EAAIovB,EAAI,EAAIkoB,EAAkB,OAAT0B,EAAgBA,EAAOhhD,OAAOihD,yBAAyB3B,EAAQn/C,GAAO6gD,EACrH,GAAuB,kBAAZ/gC,SAAoD,oBAArBA,QAAQihC,SAAyBl5C,EAAIiY,QAAQihC,SAASH,EAAYzB,EAAQn/C,EAAK6gD,QACpH,IAAK,IAAI16B,EAAIy6B,EAAW3nD,OAAS,EAAGktB,GAAK,EAAGA,KAAS+Q,EAAI0pB,EAAWz6B,MAAIte,GAAKovB,EAAI,EAAIC,EAAErvB,GAAKovB,EAAI,EAAIC,EAAEioB,EAAQn/C,EAAK6H,GAAKqvB,EAAEioB,EAAQn/C,KAAS6H,GAChJ,OAAOovB,EAAI,GAAKpvB,GAAKhI,OAAOs1C,eAAegK,EAAQn/C,EAAK6H,GAAIA,CAChE,EAQIo7Q,EAAU,QACVC,EAAa,eAEbC,EAAc,YACdC,EAAW,WAEXj8B,EAAW,SACXK,EAAe,aACfnG,EAAU,QACVgiC,EAAa,WACb/hC,EAAc,YACdiH,EAAa,WACb+6B,EAAY,YACZC,EAAY,UACZC,EAAW,SACXC,EAAe,aACfC,EAAiB,eACjBC,EAAiB,eACjBC,EAAW,aACXC,EAAgB,cAChBC,EAAW,aACXC,EAAgB,cAChBC,EAAe,aACfC,EAAe,kBACfC,EAAc,iBACdC,EAAa,gBACbC,EAAe,kBAIfC,EAAe,aAEfviC,EAAc,YAGdwiC,EAAW,iBACXr9B,EAAe,aACfs9B,EAAY,kBACZC,EAAa,mBACbC,EAAc,sBACdC,EAAW,cACXC,EAAgB,WAChBC,EAA0B,wBAI1BC,EAAmC,SAAUp4P,GAE7C,SAASo4P,IACL,OAAkB,OAAXp4P,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAUA,OAbAu/B,EAAUskO,EAAmBp4P,GAI7Bk0B,EAAW,EACPzB,EAAAA,EAAAA,IAAS,gBACV2lO,EAAkBxkQ,UAAW,cAAU,GAC1CsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,MACV2lO,EAAkBxkQ,UAAW,gBAAY,GAC5CsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,SACV2lO,EAAkBxkQ,UAAW,cAAU,GACnCwkQ,CACX,CAfuC,CAerC39N,EAAAA,IAKE49N,EAAsC,SAAUr4P,GAEhD,SAASq4P,IACL,OAAkB,OAAXr4P,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAOA,OAVAu/B,EAAUukO,EAAsBr4P,GAIhCk0B,EAAW,EACPrB,EAAAA,EAAAA,IAAQ,CAAEwzB,OAAQ,cAAehwB,SAAU,IAAK7B,OAAQ,QAAU4jO,IACnEC,EAAqBzkQ,UAAW,gBAAY,GAC/CsgC,EAAW,EACPrB,EAAAA,EAAAA,IAAQ,CAAEwzB,OAAQ,eAAgBhwB,SAAU,IAAK7B,OAAQ,QAAU4jO,IACpEC,EAAqBzkQ,UAAW,YAAQ,GACpCykQ,CACX,CAZ0C,CAYxC59N,EAAAA,IAKE2uH,EAAwB,SAAUppJ,GAElC,SAASopJ,IACL,OAAkB,OAAXppJ,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAUA,OAbAu/B,EAAUs1H,EAAQppJ,GAIlBk0B,EAAW,EACPzB,EAAAA,EAAAA,IAAS,KACV22H,EAAOx1J,UAAW,YAAQ,GAC7BsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,KACV22H,EAAOx1J,UAAW,eAAW,GAChCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,SACV22H,EAAOx1J,UAAW,oBAAgB,GAC9Bw1J,CACX,CAf4B,CAe1B3uH,EAAAA,IAKE69N,EAAyB,SAAUt4P,GAEnC,SAASs4P,IACL,OAAkB,OAAXt4P,GAAmBA,EAAOvM,MAAMc,KAAM3B,YAAc2B,IAC/D,CAyBA,OA5BAu/B,EAAUwkO,EAASt4P,GAInBk0B,EAAW,EACPrB,EAAAA,EAAAA,IAAQ,CAAC,EAAGu2H,IACbkvG,EAAQ1kQ,UAAW,cAAU,GAChCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,OACV6lO,EAAQ1kQ,UAAW,sBAAkB,GACxCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,KACV6lO,EAAQ1kQ,UAAW,eAAW,GACjCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,KACV6lO,EAAQ1kQ,UAAW,gBAAY,GAClCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV6lO,EAAQ1kQ,UAAW,gBAAY,GAClCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV6lO,EAAQ1kQ,UAAW,eAAW,GACjCsgC,EAAW,EACPzB,EAAAA,EAAAA,OACD6lO,EAAQ1kQ,UAAW,UAAM,GAC5BsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAU,IACX6lO,EAAQ1kQ,UAAW,gBAAY,GAC3B0kQ,CACX,CA9B6B,CA8B3B79N,EAAAA,IAaE89N,EAAqB,SAAUv4P,GAQ/B,SAASu4P,EAAItjQ,EAAS1d,GAClB,IAAIgtB,EAAQvE,EAAO/L,KAAKM,KAAMU,EAAS1d,IAAYgd,KA0BnD,OAzBAgQ,EAAMk1D,KAAO,CAAC,EACdl1D,EAAMi1D,KAAO,CAAC,EACdj1D,EAAMy/D,UAAY,EAClBz/D,EAAM3c,MAAQ,QACd2c,EAAM/c,cAAe,EACrB+c,EAAMiuK,UAAY,EAClBjuK,EAAMg0J,OAAQ,EACdh0J,EAAMi0P,aAAc,EACpBj0P,EAAMk0P,eAAiB,GACvBl0P,EAAM+3N,cAAgB/3N,EAAMm0P,uBAAuBnlQ,KAAKgR,GAIxDA,EAAM2qC,WAAa,CACf6uB,IAAK,MACLzV,KAAM,OACN7rD,IAAK,MACLohE,MAAO,QACP08B,MAAO,QACPp1G,OAAQ,SACRijE,SAAU,YACVC,UAAW,aACXF,OAAQ,UACRD,SAAU,aAEP3jD,CACX,CA2rEA,OA9tEAuvB,EAAUykO,EAAKv4P,GAyCfu4P,EAAI3kQ,UAAUqoB,QAAU,WAWpB,IAVI1nB,KAAK87F,SAAW97F,KAAKyrD,YACrBzrD,KAAKgtC,iBAEJlc,EAAAA,EAAAA,IAAM9wB,KAAKokQ,SACZpkQ,KAAKokQ,MAAM18O,UACX1nB,KAAKokQ,MAAQ,MAEjBpkQ,KAAKknD,eACLlnD,KAAKhd,QAAQk+C,gBAAgB,iBAC7BlhC,KAAKqkQ,qBACArkQ,KAAKkhM,WAKL,CACD,IAAIojE,GAAS5rO,EAAAA,EAAAA,IAAO,aAAyBypO,EAAaniQ,KAAKhd,SAC/Dgd,KAAKhd,QAAQ4zC,UAAUjB,OAAO6wM,IACzB11M,EAAAA,EAAAA,IAAMwzO,KACPA,EAAO/yP,UAAYvR,KAAK6hD,IAEhC,MAVI,KAAO7hD,KAAKhd,QAAQi1C,oBAChBtC,EAAAA,EAAAA,IAAO31B,KAAKhd,QAAQi1C,mBAyB5B,GAfIj4B,KAAKukQ,SACLvkQ,KAAKukQ,OAAS,MAElBvkQ,KAAKwkQ,OAAS,KACdxkQ,KAAKskQ,OAAS,KACdtkQ,KAAKykQ,QAAU,KACfzkQ,KAAK0kQ,OAAS,KACd1kQ,KAAK2kQ,MAAQ,KACb3kQ,KAAK4kQ,SAAW,KAChB5kQ,KAAKgqO,OAAS,KACdhqO,KAAK6kQ,QAAU,KACf7kQ,KAAKumD,QAAU,KACfvmD,KAAK8kQ,SAAW,KAChB9kQ,KAAKksE,aAAe,KACpBlsE,KAAK+kQ,cAAgB,GACjB/kQ,KAAKkkQ,gBAAkBlkQ,KAAKkkQ,eAAejsR,OAAS,EAAG,CACvD,IAAK,IAAIktB,EAAI,EAAGA,EAAInF,KAAKkkQ,eAAejsR,OAAQktB,IAC5CnF,KAAKkkQ,eAAe/+P,GAAGuiB,UACvB1nB,KAAKkkQ,eAAe/+P,GAAK,KAE7BnF,KAAKkkQ,eAAiB,EAC1B,CACAz4P,EAAOpM,UAAUqoB,QAAQhoB,KAAKM,MAC9BA,KAAK81B,QAAQ,YACjB,EAMAkuO,EAAI3kQ,UAAU8rC,QAAU,WAChBnrC,KAAK87F,SACL97F,KAAKgtC,gBAETvhC,EAAOpM,UAAU8rC,QAAQzrC,KAAKM,MAC1BA,KAAK87F,SACL97F,KAAK+sC,sBAEb,EAOAi3N,EAAI3kQ,UAAU+rC,UAAY,WACtB,IAAI45N,GAAS5rO,EAAAA,EAAAA,IAAQp5B,KAAKhd,QAAS,IAAMm/Q,GACzCniQ,KAAKilQ,UAAY,EACjBjlQ,KAAKklQ,UAAW,EAChBllQ,KAAKmlQ,SAAU,EACfnlQ,KAAKw/O,YAAa,EAClBx/O,KAAKolQ,UAAW,EAChBplQ,KAAKqlQ,eAAiB,GACtBrlQ,KAAKg1O,YAAc,GACfh1O,KAAKslQ,mBACLtlQ,KAAKizC,UAAYniB,EAAAA,EAAAA,IAAM9wB,KAAKizC,UAA4B,IAAMjzC,KAAKhd,QAAQ4B,GAAnB,KAAqCs9Q,EAArDliQ,KAAKizC,WAE5CniB,EAAAA,EAAAA,IAAMk0O,KACPA,EAAO/rN,cAAcriB,UAAUzB,IAAIitO,GACnCpiQ,KAAKklQ,UAAW,GAEpB,IAAI9sR,EAAOw6C,EAAAA,GAAQyB,KAAKj8C,KACpBusM,EAAgB,SAATvsM,EAAmB,OAAmB,SAATA,EAAmB,SAAqB,WAATA,EAAqB,WAAa,IACzGgtF,EAAAA,EAAAA,IAASplE,KAAKhd,QAAS,CAAE,OAAS8uB,EAAAA,EAAAA,IAAW9R,KAAK+zC,OAAQ,QAAUjiC,EAAAA,EAAAA,IAAW9R,KAAKg0C,UACpFh0C,KAAKulE,YAAYvlE,KAAKhd,QAASgd,KAAK7f,UAAU,IAC9Cq2C,EAAAA,EAAAA,IAAWx2B,KAAKhd,QAAS,CAAE,gBAAiB,UAC5Cgd,KAAKulE,YAAYvlE,KAAKhd,QAAS2hM,GAAK,GACpC3kL,KAAKulQ,0BACT,EAOAvB,EAAI3kQ,UAAUisC,OAAS,WACnBtrC,KAAKukQ,OAASvkQ,KAAK4Q,cAAc,OAAQ,CAAE31B,UAAWsnR,EAAY,IAAMG,EAAgBnsO,MAAO,CAAEljC,MAAO2M,KAAK3M,SAC7G2M,KAAKwlQ,MAAQxlQ,KAAKhd,QAAQ4B,GAAG3M,OAAS,EAAK,IAAM+nB,KAAKhd,QAAQ4B,IAAM0+D,EAAAA,EAAAA,MACpEtjD,KAAKylQ,kBACLzlQ,KAAKu5C,aACLv5C,KAAKw/O,YAAa,EACdx/O,KAAK87F,SAAW97F,KAAK8vH,SAAW9vH,KAAK8vH,QAAQ73I,OAAS,GACtD+nB,KAAK+sC,sBAAqB,WACtB/sC,KAAK0lQ,qBACT,GAER,EACA1B,EAAI3kQ,UAAUomQ,gBAAkB,WAC5B,IAAI3uO,EAAM92B,KAAKhd,QAMf,GALAgd,KAAKlW,MAAM/K,SAAQ,SAAUqM,EAAMtE,IAC3BgqC,EAAAA,EAAAA,IAAM1lC,EAAKxG,OAAQksC,EAAAA,EAAAA,IAAM1lC,EAAKuvC,gBAC9BvvC,EAAKuvC,cAAc,CAAE/1C,GAAI++Q,EAAgB78Q,EAAM1L,aAAc,EAErE,IACI4kB,KAAKlW,MAAM7R,OAAS,GAA6B,IAAxB6+C,EAAIl/C,SAASK,OACtC6+C,EAAI3lB,YAAYnR,KAAK4Q,cAAc,MAAO,CAAE31B,UAAWknR,KACvDniQ,KAAK2lQ,eAAe3lQ,KAAK4lQ,gBAAiB5lQ,KAAK4Q,cAAc,MAAO,CAAE31B,UAAWinR,KACjFliQ,KAAKkhM,YAAa,OAEjB,GAAIlhM,KAAKhd,QAAQpL,SAASK,OAAS,EAAG,CACvC+nB,KAAKkhM,YAAa,EAClBpqK,EAAIF,UAAUzB,IAAIqxM,GAClB,IAAI/1M,EAASqG,EAAIvkB,cAAc,IAAM2vP,GACjCzxO,GAAmC,WAAzBzwB,KAAK4lQ,iBACf5lQ,KAAK2lQ,eAAe3lQ,KAAK4lQ,gBAAiBn1O,EAElD,CACA,KAAKK,EAAAA,EAAAA,KAAM4H,EAAAA,EAAAA,IAAO,IAAMwpO,EAAYliQ,KAAKhd,aAAc8tC,EAAAA,EAAAA,KAAM4H,EAAAA,EAAAA,IAAO,IAAMypO,EAAaniQ,KAAKhd,UAAW,CAOnG,GANAgd,KAAK6lQ,eACL7lQ,KAAKykQ,SAAU/rO,EAAAA,EAAAA,IAAO,IAAMwpO,EAAa,KAAOe,EAAcjjQ,KAAKhd,UAC9D8tC,EAAAA,EAAAA,IAAM9wB,KAAKykQ,WACZliO,EAAAA,EAAAA,IAAaviC,KAAKykQ,QAAS,CAAE9rO,SAAU,gBAE3C34B,KAAK41P,iBACD98N,EAAAA,EAAAA,IAAU,IAAMoqO,EAAaljQ,KAAKhd,SAAS/K,OAAS,EAAG,CACvD+nB,KAAKykQ,SAAU/rO,EAAAA,EAAAA,IAAO,IAAMwpO,EAAa,KAAOe,EAAcjjQ,KAAKhd,SACnEgd,KAAK6kQ,QAAU7kQ,KAAK4Q,cAAc,MAAO,CAAE31B,UAAW4nR,EAAgB,IAAMt7B,EAAtBs7B,cACtD,IAAIiD,GAASptO,EAAAA,EAAAA,IAAO,IAAM14B,KAAK+lQ,YAAa/lQ,KAAKykQ,UAC5C3zO,EAAAA,EAAAA,IAAMg1O,GAIP9lQ,KAAKykQ,QAAQzsO,aAAah4B,KAAK6kQ,QAAS7kQ,KAAKykQ,QAAQlpJ,YAHrDuqJ,EAAO9tO,aAAah4B,KAAK6kQ,QAASiB,EAAOvqJ,YAK7Cv7G,KAAKgmQ,kBAAiB,GACtBhmQ,KAAK04B,OAAO14B,KAAK6/F,aACrB,CACA7/F,KAAKimQ,OAAOjmQ,KAAK2qC,UACrB,CACJ,EACAq5N,EAAI3kQ,UAAUwmQ,aAAe,WACzB,IAAI71P,EAAQhQ,KACRkmQ,EAAWlmQ,KAAK4lQ,gBAChBO,EAAW,GAGf,GAFAnmQ,KAAKwkQ,OAASxkQ,KAAKomQ,eACnBpmQ,KAAKqmQ,mBACArmQ,KAAKkhM,WAGL,CACGlhM,KAAKhd,QAAQpL,SAASK,OAAS,GAAK+nB,KAAKhd,QAAQpL,SAAS,GAAGg/C,UAAUM,SAASgrO,IAChFliQ,KAAK26B,cAAc,CAAEirO,gBAAiB,WAAY,GAItD,IAFA,IAAI10M,EAAQlxD,KAAKwkQ,OAAO5sR,SAASK,OAC7BquR,EAAW,GACNnhQ,EAAI,EAAGA,EAAI+rD,EAAO/rD,IACvBmhQ,EAAS7mR,KAAKugB,KAAKwkQ,OAAO5sR,SAASwT,KAAK+Z,IAE5C,GAAI+rD,EAAQ,EAAG,CACX,IAAIq1M,EAAavmQ,KAAK4Q,cAAc,MAAO,CAAE31B,UAnW7C,YAoWA+kB,KAAKwkQ,OAAOrzP,YAAYo1P,GACxBD,EAASvnR,SAAQ,SAAUqM,EAAMtE,GAC7BkpB,EAAMiuK,UAAYn3L,EAClB,IAAIm/D,EAAO,CACPhrE,UAAWkrP,EAAUvhP,GAAIuhP,EAAWn2N,EAAMw1P,MAAQ,IAAM1+Q,GAExDy7K,EAAMvyJ,EAAMY,cAAc,OAAQ,CAClC31B,UAAW2nR,EAAUrsO,MAAO,CAAE,KAAQ,kBACvCllB,UACCs3I,EAAO34I,EAAMY,cAAc,MAAO,CAClC31B,UAAW8nR,EAAexxP,UAAWgxJ,EAAMvyJ,EAAMu0P,OAAOlzP,YACzDA,UACCg6C,EAAOr7C,EAAMY,cAAc,MAAO,CAClC31B,UAAW6nR,EAAUvxP,UAAWo3I,EAChCpyH,MAAO,CAAEi0B,KAAM,MAAO4I,SAAU,KAAM,gBAAiB,QAAS,gBAAiB+uM,EAAcnyP,EAAMw1P,MAAQ,IAAM1+Q,EAAO,gBAAiB,WAE/IukE,EAAK94C,cAAc,IAAMqwP,GAAUzxP,YAAY/lB,GAC/Cm7Q,EAAWp1P,YAAYnB,EAAMY,cAAc,MAAOq1C,KAClDntB,EAAAA,EAAAA,IAAU,IAAMqtM,EAAUogC,GAAYz/Q,GAAOqqB,YAAYk6C,EAC7D,GACJ,CACJ,MAlCI86M,EAAWnmQ,KAAKwmQ,YAAYxmQ,KAAKlW,MAAO,GAmC5CkW,KAAKokQ,MAAQ,IAAI/1Q,EAAAA,EAAQ,CACrB0lD,MAAqB,SAAbmyN,GAAoC,UAAbA,EAAwB,OAAS,OAChElyN,OAAsB,SAAbkyN,GAAoC,UAAbA,EAAwB,OAAS,OACjE18B,aAAcxpO,KAAKwpO,aACnB1/O,MAA4B,IAApBq8Q,EAASluR,OAAgBkuR,EAAW,GAC5C70H,QAAStxI,KAAK2oD,aAAa3pD,KAAKgB,MAChC8oH,WAAY9oH,KAAK8oH,WACjBriE,oBAAqBzmD,KAAKymD,oBAC1BtmE,SAAU6f,KAAK7f,WAEnB6f,KAAKokQ,MAAM55N,kBAAmB,EAC9BxqC,KAAKokQ,MAAMxzP,cAAgB5Q,KAAK4Q,cAChC5Q,KAAKokQ,MAAMr5N,SAAS/qC,KAAKwkQ,SACzBhuO,EAAAA,EAAAA,IAAWx2B,KAAKwkQ,OAAQ,CAAEh6M,KAAM,aAC3B15B,EAAAA,EAAAA,IAAM9wB,KAAKhd,QAAQo+C,aAAa,gBAI3BtQ,EAAAA,EAAAA,IAAM9wB,KAAKhd,QAAQo+C,aAAa,sBACtCphC,KAAKwkQ,OAAOluO,aAAa,kBAAmBt2B,KAAKhd,QAAQo+C,aAAa,oBACtEphC,KAAKhd,QAAQk+C,gBAAgB,qBAL7BlhC,KAAKwkQ,OAAOluO,aAAa,aAAct2B,KAAKhd,QAAQo+C,aAAa,eACjEphC,KAAKhd,QAAQk+C,gBAAgB,eAMjClhC,KAAKymQ,eAAezmQ,KAAK0mQ,iBACzB,IAAIC,EAAgB3mQ,KAAKokQ,MAAMphR,QAAQuvB,cAAc,IAAM0wP,IACtDnyO,EAAAA,EAAAA,IAAM61O,MACH71O,EAAAA,EAAAA,IAAM61O,EAAc/hR,KAA4B,KAArB+hR,EAAc/hR,MACzC+hR,EAAc/hR,GAAKob,KAAKhd,QAAQ4B,GAAbob,oBAG/B,EACAgkQ,EAAI3kQ,UAAUu2P,cAAgB,WAC1B51P,KAAKskQ,QAAS5rO,EAAAA,EAAAA,IAAO,IAAMypO,EAAaniQ,KAAKhd,SAC7C,IAAI4jR,GAAU9tO,EAAAA,EAAAA,IAAU,IAAMoqO,EAAaljQ,KAAKhd,SAChD,GAAIgd,KAAKkhM,WAAY,CACjBlhM,KAAK6hD,IAAO7hD,KAAKskQ,OAAO1sR,SAASK,OAAS,EAAK+nB,KAAKskQ,OAAO/yP,UAAY,GAEvE,IADA,IAAIs1P,EAAW7mQ,KAAKskQ,OAAO1sR,SAClButB,EAAI,EAAGA,EAAIyhQ,EAAQ3uR,OAAQktB,IAC5B0hQ,EAAS5uR,OAAS,GAAKktB,KACvBsxB,EAAAA,EAAAA,IAAS,CAACowO,EAASz7Q,KAAK+Z,IAAKghO,IAC7B3vM,EAAAA,EAAAA,IAAWqwO,EAASz7Q,KAAK+Z,GAAI,CAAE,KAAQ,WAAY,kBAAmBghO,EAAWnmO,KAAKwlQ,MAAQ,IAAMrgQ,IACpG0hQ,EAASz7Q,KAAK+Z,GAAGvgB,GAAKu9Q,EAAcniQ,KAAKwlQ,MAAQ,IAAMrgQ,EAGnE,CACJ,EACA6+P,EAAI3kQ,UAAUynQ,cAAgB,WAC1B9mQ,KAAKylQ,mBACA30O,EAAAA,EAAAA,IAAM9wB,KAAKskQ,UACZtkQ,KAAKknE,YAAc,IAAI9qB,EAAAA,GAAMp8C,KAAKskQ,OAAQ,CAAEn9L,MAAOnnE,KAAKshO,aAAatiO,KAAKgB,QAElF,EACAgkQ,EAAI3kQ,UAAUmnQ,YAAc,SAAU18Q,EAAOhD,GACzC,IAAIkpB,EAAQhQ,KACRykQ,EAAUh2P,MAAMpP,UAAUhC,MAAMqC,MAAKo5B,EAAAA,EAAAA,IAAU,kBAAoBoqO,EAAaljQ,KAAKhd,UACrF+jR,EAAQ/mQ,KAAKi+K,UACjB,IAAKj+K,KAAKgnQ,WAAavC,EAAQxsR,OAAS,EAAG,CACvC,IAAIgvR,EAAW,GACfxC,EAAQ1lR,SAAQ,SAAUqM,GACtB67Q,EAASxnR,KAAKuwB,EAAMk3P,gBAAgB97Q,EAAKxG,IAC7C,IACAmiR,EAAQllQ,KAAK8e,IAAIzhB,MAAM2C,KAAMolQ,EACjC,CACA,IACIE,EADAC,EAAS,GAETC,EAAc,GA4FlB,OA1FAv9Q,EAAM/K,SAAQ,SAAUqM,EAAM+Z,GAC1B,IAAIge,GAAO2N,EAAAA,EAAAA,IAAM1lC,EAAKqlC,UAAWK,EAAAA,EAAAA,IAAM1lC,EAAKqlC,OAAOs2B,cAAiB,GAAK37D,EAAKqlC,OAAOs2B,aACjF49H,GAAO7zJ,EAAAA,EAAAA,IAAM1lC,EAAKqlC,UAAWK,EAAAA,EAAAA,IAAM1lC,EAAKqlC,OAAOm2B,SAAY,GAAKx7D,EAAKqlC,OAAOm2B,QAChF,IAAK91B,EAAAA,EAAAA,IAAM1lC,EAAK4iH,mBAAqBl9E,EAAAA,EAAAA,IAAM1lC,EAAKqlC,UAAWK,EAAAA,EAAAA,IAAM1lC,EAAKqlC,OAAO14C,OAC3C,IAA5BqT,EAAKqlC,OAAO14C,KAAKE,QAA2B,KAAR0sM,GACtC0iF,EAAY5nR,KAAK0lB,OAFrB,CAKA,IAIIo9F,EAJAggE,EAAMn3K,EAAK4iH,gBAAkB5iH,EAAKqlC,OAAO14C,KAC1B,kBAARwqL,GAAoBvyJ,EAAMy2C,sBACjC87G,EAAMp9G,EAAAA,GAAmBI,SAASg9G,IAGlCvyJ,EAAMg3P,aAAcl2O,EAAAA,EAAAA,IAAM9gB,EAAMs3P,OAAwB,KAAft3P,EAAMs3P,MAC/C/kK,EAAYrjH,SAAS8wB,EAAMs3P,KAAKzjR,UAAUmsB,EAAMs3P,KAAKxoP,YAAY,KAAO,GAAI,IAC5E9O,EAAMs3P,KAAO,IAGb/kK,EAAYz7G,EAAQqe,EAExB6K,EAAMiuK,UAAiC,IAAnBwmF,EAAQxsR,OAAgBktB,EAAM6K,EAAMg3P,UAAczkK,EAAcwkK,EAAQ,EAAI5hQ,EAChG,IAAIpsB,EAAYqS,EAAKrS,SAAY,IAAMunP,EAAc,IAAMQ,EAAc,GACrE59H,GAA2B,IAAjB93G,EAAKgD,QAAqB,IAAMm5O,EAAa,GAC3D4/B,EAAan3P,EAAMY,cAAc,MAAO,CAAE31B,UAAW2nR,EAAUrsO,MAAO,CAAE,KAAQ,kBAChF,IAAIgxO,EAAUhlG,aAAe1jL,OAAU0jL,EAAIlxJ,UAAYkxJ,EACnDilG,IAAa12O,EAAAA,EAAAA,IAAMy2O,IAAoB,KAAVA,GAC5Bz2O,EAAAA,EAAAA,IAAMyxI,EAAIpsI,SAIXnmB,EAAMy3P,kBAAkBN,EAAY5kG,EAAKp9J,GAHzCgiQ,EAAWh2P,YAAYoxJ,GAM3B,IAAI9+D,EAAOzzF,EAAMY,cAAc,OAAQ,CACnC31B,UAAWsnR,EAAY,IAAMS,EAAe,IAAMR,EAAW,IAAMr/O,EAAM,IAAMwhK,IAE/E+iF,EAAQ13P,EAAMY,cAAc,MAAO,CAAE31B,UAAW8nR,IACpD2E,EAAMv2P,YAAYg2P,GACL,KAAR5kG,QAAsBrnL,IAARqnL,GAA8B,KAARoiB,GACxB,SAARxhK,GAA0B,QAARA,EACnBukP,EAAM1vO,aAAayrE,EAAMikK,EAAMzvO,mBAG/ByvO,EAAMv2P,YAAYsyF,GAEf0jK,EACPn3P,EAAMi0P,aAAc,IAGH,KAARt/E,EAAcwiF,EAAa1jK,KACvBA,KACTlrE,EAAAA,EAAAA,IAAO4uO,GACPO,EAAMv2P,YAAYsyF,GAClBzzF,EAAMi0P,aAAc,GAG5B,IAAI7wM,GAAWtiC,EAAAA,EAAAA,IAAM1lC,EAAKgoE,UAAY,KAAOhoE,EAAKgoE,SAASh4E,WACvDusR,EAAav8Q,EAAKrS,SAAY,CAAC,EAAI,CAAEq6E,SAAUA,EAAU,gBAAiBA,EAAU5I,KAAM,MAAO,gBAAiB,QAAS,gBAAiB,SAChJk9M,EAAMv2P,YAAYnB,EAAMu0P,OAAOnzP,WAAU,IACzC,IAAIi6C,EAAOr7C,EAAMY,cAAc,MAAO,CAAE31B,UAAW6nR,EAAUvsO,MAAOoxO,IACpEt8M,EAAKl6C,YAAYu2P,GACb13P,EAAMq1P,iBAAmB,GACzBr1P,EAAMq1P,eAAe5lR,KAAK0mP,EAAWn2N,EAAMw1P,MAAQ,IAAMx1P,EAAMiuK,WAG/DjuK,EAAMq1P,eAAex+O,OAAQ//B,EAAQqe,EAAI,EAAGghO,EAAWn2N,EAAMw1P,MAAQ,IAAMx1P,EAAMiuK,WAErF,IAGI2pF,EAAQ,CAAEt9M,eAHA,CACV1lE,GAAIuhP,EAAWn2N,EAAMw1P,MAAQ,IAAMx1P,EAAMiuK,UAAW,UAAW7yL,EAAKxG,IAEjC4R,SAAU60D,GACjDu8M,EAAMznR,eAA+BjF,IAAlBkQ,EAAKjL,SAA0BiL,EAAKjL,SAAW,KAAO,IAAMpH,EAAW,IAAMmqH,EAAS,KACzF,KAARyhF,EAAc,MAAQxhK,EAAM,IAAM,KAASqkP,EAAuB,GAAXhF,GACnD,QAARr/O,GAAyB,WAARA,GACjBnT,EAAMhtB,QAAQ4zC,UAAUzB,IAAI,mBAEhCiyO,EAAO3nR,KAAKmoR,GACZziQ,GAtEA,CAuEJ,IACKnF,KAAKgkK,OACNqjG,EAAYtoR,SAAQ,SAAU8oR,GAC1B73P,EAAMlmB,MAAM+8B,OAAOghP,EAAiB,EACxC,IAEA7nQ,KAAKikQ,YACLjkQ,KAAKhd,QAAQ4zC,UAAUzB,IAAIstO,GAG3BziQ,KAAKhd,QAAQ4zC,UAAUjB,OAAO8sO,GAE3B2E,CACX,EACApD,EAAI3kQ,UAAUyoQ,kBAAoB,WAC9B,IAAIC,EAAY/nQ,KAAKomQ,eACrB,GAAI2B,EAAW,CACX,IAAI5B,GAAWrtO,EAAAA,EAAAA,IAAU,IAAMoqO,EAAc,IAAMb,EAAY0F,GAC/D,GAAG1qQ,MAAMqC,KAAKymQ,GAAUpnR,SAAQ,SAAU03D,GAAQ,OAAOA,EAAK7f,UAAUjB,OAAO0sO,EAAa,IAC5F,GAAGhlQ,MAAMqC,KAAKymQ,GAAUpnR,SAAQ,SAAU03D,GAAQ,OAAOA,EAAKxe,kBAAkB3B,aAAa,gBAAiB,QAAU,GAC5H,CACJ,EACA0tO,EAAI3kQ,UAAU2oQ,mBAAqB,SAAUlxO,GACzC92B,KAAK2kQ,OAAQjsO,EAAAA,EAAAA,IAAO,IAAMyqO,EAAYnjQ,KAAKhd,SAC3C,IAAIysP,GAAU/2M,EAAAA,EAAAA,IAAO,aAAc14B,KAAKhd,SACpCyoP,GAAW/yM,EAAAA,EAAAA,IAAO,IAAMuqO,EAAcjjQ,KAAKhd,SAC3CqtI,EAAYo7G,EAASp7G,UACrB43I,GAAa,EAYjB,QAXKjoQ,KAAK+oO,eAAkB/oO,KAAK2qC,WAAe8kM,EAAQ37L,WAAa27L,EAAQh4M,YAAeg0M,EAAS33L,aAC5F9zC,KAAK2qC,WAAa8kM,EAAQ37L,WAAa23L,EAASh0M,cAGhDz3B,KAAK+oO,cAAiB0G,EAAQ57L,UAAYw8E,EAAUx8E,UAAYw8E,EAAUp8E,gBAF/Eg0N,GAAa,GAKbA,IACAnxO,EAAIF,UAAUzB,IAAIiuO,GAClBpjQ,KAAK2kQ,MAAM3sO,aAAalB,GAAKgC,EAAAA,EAAAA,IAAU,IAAMsqO,EAAcpjQ,KAAK2kQ,OAAO,MAEpE,CACX,EACAX,EAAI3kQ,UAAUyyE,aAAe,SAAU3zC,GACnC,IAAI+pO,EAAS/pO,EAAO5rB,cAAc,sBAC7Bue,EAAAA,EAAAA,IAAMo3O,KACPA,EAAO72P,UAAY,GACnB8sB,EAAO5rB,cAAc,IAAMuwP,GAAUlsO,UAAUjB,OAAO,aAE1D31B,KAAK0kQ,QAAS5rO,EAAAA,EAAAA,IAAU,IAAMmqO,EAAe,KAAOC,EAAaljQ,KAAKwkQ,QACtE,IAAIn0I,EAAYrwH,KAAK0kQ,OAAO1kQ,KAAK0kQ,OAAOzsR,OAAS,GACjD,GAA2B,IAAvB+nB,KAAK0kQ,OAAOzsR,OAAc,CAK1B,GAJAkmD,EAAOvH,UAAUjB,OAAOytO,GACxBjlO,EAAO+C,gBAAgB,SACvBlhC,KAAKykQ,QAAQtzP,YAAYgtB,GACzBn+B,KAAKmoQ,SAAWhqO,EAAOv5C,GACnBob,KAAKgoQ,mBAAmB33I,GAAY,CACpC,IAAI+3I,EAAUpoQ,KAAKykQ,QAAQp0I,UAAUmU,uBACrCxkI,KAAKgoQ,mBAAmBI,EAC5B,CACApoQ,KAAKmlQ,SAAU,CACnB,CACA,OAAOrsO,EAAAA,EAAAA,IAAU,IAAMoqO,EAAaljQ,KAAKykQ,SAASxsR,OAAS,CAC/D,EACA+rR,EAAI3kQ,UAAUonQ,eAAiB,SAAU9oQ,GACrC,IAAI0qQ,GAAM3vO,EAAAA,EAAAA,IAAO,IAAMwpO,EAAYliQ,KAAKhd,UAC5B,IAAR2a,EACA0qQ,EAAIzxO,UAAUzB,IAAIwtO,GAGlB0F,EAAIzxO,UAAUjB,OAAOgtO,GAEzB3iQ,KAAKokQ,MAAM/xH,kBACXryI,KAAKmkQ,wBACT,EACAH,EAAI3kQ,UAAUipQ,iBAAmB,SAAUxrF,EAAM35L,GAE9B6c,KAAK2qC,WAAa3qC,KAAKhd,QAAQ4zC,UAAUM,SAASmpM,GAuBjE,OAtBIrgO,KAAKmlQ,SAAWroF,GAAQ35L,EACe,gBAAnC6c,KAAKihC,UAAU28B,SAAS9L,OACZ,CACR15E,KAAM,eACN0pD,SAAU9hC,KAAKihC,UAAU28B,SAAS97B,SAAUG,eAAgBjiC,KAAKihC,UAAU28B,SAAS39B,QAI5E,KAImB,iBAA/BjgC,KAAKihC,UAAU68B,KAAKhM,OACR,CACR15E,KAAM,gBACN0pD,SAAU9hC,KAAKihC,UAAU68B,KAAKh8B,SAAUG,eAAgBjiC,KAAKihC,UAAU68B,KAAK79B,QAIpE,IAIxB,EACA+jO,EAAI3kQ,UAAUkpQ,qBAAuB,SAAUC,EAAQvD,GACnD,IAAIj1P,EAAQhQ,KACRyoQ,EAAazoQ,KAAKsoQ,iBAAiBrD,EAAWjlQ,KAAK6/F,eAClD/uE,EAAAA,EAAAA,IAAM23O,GAmBPD,EAAO5xO,UAAUjB,OAAO0sO,IAlBxBoG,EAAWjnO,MAAQ,YACf4jC,EAAAA,EAAAA,IAASojM,EAAQ,CAAE,SAAY,aAC/BA,EAAO5xO,UAAUzB,IAAIkuO,GACrBmF,EAAO5xO,UAAUzB,IAAI,SACzB,EACAszO,EAAWvgQ,IAAM,WACbsgQ,EAAOjxO,MAAMuiB,QAAU,OACvB0uN,EAAO5xO,UAAUjB,OAAO0sO,GACxBmG,EAAO5xO,UAAUjB,OAAO0tO,GACxBmF,EAAO5xO,UAAUjB,OAAO,WACxByvC,EAAAA,EAAAA,IAASojM,EAAQ,CAAE,QAAW,GAAI,SAAY,KACb,IAA7BA,EAAO1kN,WAAW7rE,QAAiB+3B,EAAMkxL,aACzC3oK,EAAAA,EAAAA,IAAOiwO,EAEf,EACA,IAAIxoO,EAAAA,GAAUyoO,GAAY9nO,QAAQ6nO,GAK1C,EACAxE,EAAI3kQ,UAAUqpQ,iBAAmB,SAAU9jR,EAAIrH,GAC3C,IAEIirR,EAFAx4P,EAAQhQ,KACRilQ,EAAYjlQ,KAAKilQ,UAEA,GAAG5nQ,MAAMqC,KAAKM,KAAKhd,QAAQuvB,cAAc,IAAM4vP,GAAavqR,UAClEmH,SAAQ,SAAUqM,GACzBA,EAAKxG,KAAOorB,EAAM24P,gBAClBH,EAASp9Q,EAEjB,IACA,IAAIg9Q,EAAUpoQ,KAAK0kQ,OAAOO,GACtB2D,EAAS5oQ,KAAK6oQ,cAAc7oQ,KAAKskQ,OAAQtkQ,KAAK8oQ,SAASlkR,IAC3D,IAAIksC,EAAAA,EAAAA,IAAM03O,MAAY13O,EAAAA,EAAAA,IAAMs3O,GAAU,CAClC,IAAIW,EAAO/oQ,KAAK8oQ,SAASV,EAAQxjR,IACjC4jR,EAASxoQ,KAAK6oQ,cAAc7oQ,KAAKskQ,OAAQyE,EAC7C,EACKj4O,EAAAA,EAAAA,IAAM83O,KACP5oQ,KAAK2oQ,cAAgBC,EAAOhkR,IAEhC,IAAIokR,GAAYl4O,EAAAA,EAAAA,IAAM9wB,KAAKihC,YAAcjhC,KAAKihC,UAAU68B,OAAS,CAAC,GAAK99D,KAAKihC,UAAU28B,WAAa,CAAC,IAC7F9sC,EAAAA,EAAAA,IAAM9wB,KAAKihC,UAAU68B,KAAKhM,UAAWhhC,EAAAA,EAAAA,IAAM9wB,KAAKihC,UAAU28B,SAAS9L,SACjC,QAAlC9xD,KAAKihC,UAAU28B,SAAS9L,QAAkD,QAA9B9xD,KAAKihC,UAAU68B,KAAKhM,OACvE,GAAI9xD,KAAKw/O,aAAwB,IAAVjiQ,GAAmByiB,KAAKihC,YAAc,CAAC,GAAK+nO,EAC3DR,GAAUA,IAAWI,GACrBJ,EAAO5xO,UAAUjB,OAAO0sO,OAFhC,CAMA,IACIoG,EADA5mN,GAAMnpB,EAAAA,EAAAA,IAAO,IAAMypO,EAAaniQ,KAAKhd,SAEzC,GAAIgd,KAAKilQ,UAAYjlQ,KAAK6/F,eAAiB7/F,KAAKmlQ,QAAS,CACrD,IAAI8D,EAAUjpQ,KAAKihC,UAAU28B,SAAS9L,OACtC22M,EAAa,CACTrwR,KAAoB,SAAZ6wR,EAAsB,GAAmB,gBAAZA,EAA6BA,EAAU,cAC5EnnO,SAAU9hC,KAAKihC,UAAU28B,SAAS97B,SAClCG,eAAgBjiC,KAAKihC,UAAU28B,SAAS39B,OAEhD,MACK,GAAIjgC,KAAKmlQ,SAAWnlQ,KAAKilQ,UAAYjlQ,KAAK6/F,cAAgB7/F,KAAKilQ,YAAcjlQ,KAAK6/F,aAAc,CACjG,IAAIqpK,EAASlpQ,KAAKihC,UAAU68B,KAAKhM,OACjC22M,EAAa,CACTrwR,KAAmB,SAAX8wR,EAAqB,GAAkB,iBAAXA,EAA6BA,EAAS,eAC1EpnO,SAAU9hC,KAAKihC,UAAU68B,KAAKh8B,SAC9BG,eAAgBjiC,KAAKihC,UAAU68B,KAAK79B,OAE5C,CACAwoO,EAAWvmO,SAAW,WAClB2f,EAAIjrB,UAAUzB,IAAIkuO,GAClBrzP,EAAMm5P,iBACV,EACAV,EAAWvgQ,IAAM,WACb25C,EAAIjrB,UAAUjB,OAAO0tO,GACrBuF,EAAOhyO,UAAUzB,IAAIktO,EACzB,EACKriQ,KAAKw/O,aAAe1uN,EAAAA,EAAAA,IAAM03O,IAC3BxoQ,KAAKuoQ,qBAAqBC,EAAQvD,GAEtCjlQ,KAAKmlQ,SAAU,EACS,KAApBsD,EAAWrwR,KACXwwR,EAAOhyO,UAAUzB,IAAIktO,GAGrB,IAAIriO,EAAAA,GAAUyoO,GAAY9nO,QAAQioO,EAnCtC,CAqCJ,EACA5E,EAAI3kQ,UAAUqvI,WAAa,SAAU25H,GACjC,IAAIe,GAAYhwO,EAAAA,EAAAA,IAAQivO,EAAK,IAAMnG,EAAa,KAAOgB,GACnDmG,EAAWrpQ,KAAKspQ,YAAYF,KAC3Bt4O,EAAAA,EAAAA,IAAM9wB,KAAKgqO,SAAWq+B,EAAIzxO,UAAUM,SAAS,aAC7Cl3B,KAAKgqO,OAAOpzM,UAAUM,SArrBd,gBAqrB0Cl3B,KAAKyoO,OAAOxjK,KAAKjlE,KAAKilE,MAAQjlE,KAAKyoO,OAAOvjK,KAAKllE,KAAKklE,MAElGmjM,EAAIzxO,UAAUM,SAAS,gBAC5BmxO,EAAIjhN,SAGCt2B,EAAAA,EAAAA,IAAMs4O,KAA2D,IAA7CA,EAAUxyO,UAAUM,SAASmrO,KAClDriQ,KAAKupQ,UAAUF,EAAU,MAAM,IAC1Bv4O,EAAAA,EAAAA,IAAM9wB,KAAKgqO,SACZhqO,KAAKyoO,OAAOxjK,KAAKjlE,KAAKilE,MAItC,EACA++L,EAAI3kQ,UAAU+mQ,aAAe,WACzB,KAAIt1O,EAAAA,EAAAA,IAAM9wB,KAAKhd,SAAf,CAGA,IAAIuX,EAAU,GAAG8C,MAAMqC,KAAKM,KAAKhd,QAAQpL,UAAUuG,QAAO,SAAU1C,GAAK,OAAOA,EAAEm7C,UAAUM,SAASgrO,EAAa,IAClH,GAAI3nQ,EAAQtiB,OAAS,EACjB,OAAOsiB,EAAQ,GAGf,IAAI8wD,EAAO,GAAGhuD,MAAMqC,KAAKM,KAAKhd,QAAQpL,UAAUuG,QAAO,SAAU1C,GAAK,OAAQA,EAAEm7C,UAAUM,SAtuBpF,kBAsuB2G,IAAG,GACpH,GAAKm0B,EAGL,MAAO,GAAGhuD,MAAMqC,KAAK2rD,EAAKzzE,UAAUuG,QAAO,SAAU1C,GAAK,OAAOA,EAAEm7C,UAAUM,SAASgrO,EAAa,IAAG,EAV1G,CAYJ,EACA8B,EAAI3kQ,UAAUiqQ,YAAc,SAAUl+Q,GAClC,OAAOqjB,MAAMpP,UAAU/I,QAAQoJ,MAAKo5B,EAAAA,EAAAA,IAAU,IAAMoqO,EAAaljQ,KAAKomQ,gBAAiBh7Q,EAC3F,EACA44Q,EAAI3kQ,UAAUypQ,SAAW,SAAUlkR,GAC/B,OAAOA,EAAG6R,QAAQ0vO,EAAWnmO,KAAKwlQ,MAAQ,IAAK,GACnD,EACAxB,EAAI3kQ,UAAUglQ,mBAAqB,WAC/B,IAAIr0P,EAAQhQ,KACZA,KAAKg1O,YAAYj2P,SAAQ,SAAUyqR,IAC1B14O,EAAAA,EAAAA,IAAM9gB,EAAMhtB,QAAQuvB,cAAci3P,MACnC5mQ,SAASuuB,KAAKhgB,YAAYnB,EAAMhtB,QAAQuvB,cAAci3P,IAASjyO,MAAMuiB,QAAU,OAEvF,GACJ,EACAkqN,EAAI3kQ,UAAUoqQ,gBAAkB,SAAU3yO,EAAK+qB,EAAK/6D,GAChD,IAAIqjP,EAAUnqO,KAAK4Q,cAAc,OACjC5Q,KAAK0pQ,eAAev/B,EAAStoL,EAAK,UAAW/6D,GACX,IAA9BqjP,EAAQrmL,WAAW7rE,QACnB6+C,EAAI3lB,YAAYg5N,GAEhBnqO,KAAK87F,SACL97F,KAAK+sC,sBAEb,EACAi3N,EAAI3kQ,UAAUqqQ,eAAiB,SAAU5yO,EAAKn5B,EAAKwV,EAAMrsB,GACrD,IAAIy+L,EAaAokF,EAZe,kBAARhsQ,GACPA,EAAMA,EAAIs9C,OACNj7C,KAAK4oD,MACL28H,GAAalkI,EAAAA,EAAAA,IAAQ8D,EAAAA,GAAmBI,SAAS5nD,IAGjDm5B,EAAIvlB,UAAY4zC,EAAAA,GAAmBI,SAAS5nD,IAIhD4nL,GAAalkI,EAAAA,EAAAA,IAAQ1jD,IAGpBmzB,EAAAA,EAAAA,IAAMy0J,KACPokF,EAAcpkF,EAAW,CAAC,EAAGvlL,KAAMmT,MAElC2d,EAAAA,EAAAA,IAAMy0J,IAAeokF,EAAY1xR,OAAS,GAC3C,GAAGolB,MAAMqC,KAAKiqQ,GAAa5qR,SAAQ,SAAUs6C,GACzCvC,EAAI3lB,YAAYkoB,EACpB,GAER,EACA2qO,EAAI3kQ,UAAUooQ,kBAAoB,SAAUzkR,EAASjL,EAAM+O,GACvDkZ,KAAK0pQ,eAAe1mR,EAASjL,EAAM,iBAAkB+O,EACzD,EACAk9Q,EAAI3kQ,UAAU2mJ,WAAa,SAAUlvH,EAAK+qB,EAAK+nN,EAAU9iR,GACrD,IAAI0iR,EAEJ,GAAmB,kBADnB3nN,GAAM/wB,EAAAA,EAAAA,IAAM+wB,GAAO,GAAKA,KACO/wB,EAAAA,EAAAA,IAAM+wB,EAAItwC,WAIrC,GAHmB,kBAARswC,GAAoB7hD,KAAKymD,sBAChC5E,EAAMsD,EAAAA,GAAmBI,SAAS1D,IAEvB,MAAXA,EAAI,IAAyB,MAAXA,EAAI,GACtB,GAAIj/C,SAASkO,iBAAiB+wC,GAAK5pE,OAAQ,CACvC,IAAI4xR,EAASjnQ,SAAS2P,cAAcsvC,GACpC2nN,EAASK,EAAOx4P,UAAU4pC,OACT,UAAb2uN,EACA9yO,EAAI3lB,YAAY04P,EAAOz4P,WAAU,KAGjC0lB,EAAI3lB,YAAY04P,GAChBA,EAAOtyO,MAAMuiB,QAAU,GAE/B,MAEI95C,KAAKypQ,gBAAgB3yO,EAAK+qB,EAAK/6D,QAInCkZ,KAAKypQ,gBAAgB3yO,EAAK+qB,EAAK/6D,QAInCgwC,EAAI3lB,YAAY0wC,IAEf/wB,EAAAA,EAAAA,IAAM04O,KAC2C,IAA9CxpQ,KAAKg1O,YAAY1+O,QAAQurD,EAAIzmE,aAC7B4kB,KAAKg1O,YAAYv1P,KAAKoiE,EAAIzmE,WAGtC,EACA4oR,EAAI3kQ,UAAUwpQ,cAAgB,SAAUvE,EAAQ5oP,GAQ5C,OANI1b,KAAKhd,QAAQ4zC,UAAUM,SAASkrO,IAC1B1pO,EAAAA,EAAAA,IAAO,IAAM0pO,EAAW,MAAQD,EAAc,OAASA,EAAcniQ,KAAKwlQ,MAAQ,IAAM9pP,EAAI1b,KAAKhd,SAGjGgd,KAAK8pQ,QAAQxF,EAAO1sR,SAAUuqR,EAAcniQ,KAAKwlQ,MAAQ,IAAM9pP,EAG7E,EACAsoP,EAAI3kQ,UAAUyqQ,QAAU,SAAUhgR,EAAO9K,GAErC,IADA,IAAI83C,EACK3xB,EAAI,EAAGA,EAAIrb,EAAM7R,OAAQktB,IAC9B,GAAIrb,EAAMqb,GAAGvgB,KAAO5F,EAAK,CACrB83C,EAAMhtC,EAAMqb,GACZ,KACJ,CAEJ,OAAO2xB,CACX,EACAktO,EAAI3kQ,UAAU0pO,WAAa,WACvB,IAAIA,EAAuC,SAAzB/oO,KAAK4lQ,iBAAuD,UAAzB5lQ,KAAK4lQ,gBAE1D,OADA5lQ,KAAK+lQ,YAAeh9B,EA1zBV,oBADA,oBA4zBHA,CACX,EACAi7B,EAAI3kQ,UAAUgnQ,iBAAmB,WAC7B,GAAIrmQ,KAAK+oO,aAAc,CACnB,IAAIghC,EAAkC,SAAzB/pQ,KAAK4lQ,gBAA8BrC,EAAYC,GAC5D/sO,EAAAA,EAAAA,IAAS,CAACz2B,KAAKwkQ,QAAS,CAACv+B,EAAc8jC,IAClC/pQ,KAAKhd,QAAQ4zC,UAAUM,SAASkrO,IAIjC3rO,EAAAA,EAAAA,IAAS,CAACz2B,KAAKwkQ,QAAS,CAAClB,EAAUyG,KAHnCtzO,EAAAA,EAAAA,IAAS,CAACz2B,KAAKhd,SAAU,CAACsgR,EAAUyG,GAK5C,CAC6B,WAAzB/pQ,KAAK4lQ,kBACLnvO,EAAAA,EAAAA,IAAS,CAACz2B,KAAKwkQ,QAAS,CAACf,GAEjC,EACAO,EAAI3kQ,UAAUkmQ,yBAA2B,WACrCvlQ,KAAKklE,KAAO,CAAE9sF,KAAO4nB,KAAK+oO,aAAe,SAAW,YAAcjnM,SAAU,KAC5E9hC,KAAKilE,KAAO,CAAE7sF,KAAO4nB,KAAK+oO,aAAe,UAAY,UAAYjnM,SAAU,IAC/E,EACAkiO,EAAI3kQ,UAAUutO,kBAAoB,SAAUo9B,GACxChqQ,KAAK2lQ,eAAeqE,EAAOhqQ,KAAKwkQ,QAChC,IAAIyF,EAAYjqQ,KAAKwkQ,OAAOjyP,cAAc,IAAM8vP,GAC5Ct5B,IAAa/oO,KAAKwkQ,OAAO5tO,UAAUM,SAAS+uM,IAChD9uM,EAAAA,EAAAA,IAAY,CAACn3B,KAAKhd,SAAU,CAACsgR,KAC7BnsO,EAAAA,EAAAA,IAAY,CAACn3B,KAAKwkQ,QAAS,CAACv+B,EAAcs9B,EAAWC,IACjDz6B,IAAe/oO,KAAK+oO,eACpB/oO,KAAKkqQ,6BACAp5O,EAAAA,EAAAA,IAAMm5O,IAAcA,EAAUrzO,UAAUM,SAASksO,IAClDpjQ,KAAK8xE,aAAam4L,IAG1BjqQ,KAAKqmQ,mBACLrmQ,KAAKmpQ,kBACLnpQ,KAAK4/F,WACT,EACAokK,EAAI3kQ,UAAUugG,UAAY,WACtB,IAAIuqK,GAAazxO,EAAAA,EAAAA,IAAO,KAAOytM,EAAWnmO,KAAKwlQ,MAAQ,IAAMxlQ,KAAK6/F,aAAc7/F,KAAKwkQ,SAChF1zO,EAAAA,EAAAA,IAAMq5O,IACPA,EAAWlyO,kBAAkBxmB,OAErC,EACAuyP,EAAI3kQ,UAAU6qQ,yBAA2B,WACrClqQ,KAAKokQ,MAAMzpO,cAAc,CAAEqZ,OAASh0C,KAAK+oO,aAAe,OAAS,OAASh1L,MAAQ/zC,KAAK+oO,aAAe,OAAS,SAAW,GAC1H/oO,KAAKokQ,MAAMx3B,oBACX5sO,KAAKulQ,0BACT,EACAvB,EAAI3kQ,UAAUsmQ,eAAiB,SAAUqE,EAAOlzO,GAC5C,IAAIszO,EAAY37P,MAAMpP,UAAU/I,QAAQoJ,KAAKM,KAAKhd,QAAQpL,SAAUk/C,GAChEuzO,EAAa57P,MAAMpP,UAAU/I,QAAQoJ,KAAKM,KAAKhd,QAAQpL,SAAUooB,KAAKhd,QAAQuvB,cAAc,IAAM4vP,IACxF,WAAV6H,GAAuBK,EAAaD,EACpCpqQ,KAAKhd,QAAQmuB,YAAY2lB,KAGzBK,EAAAA,EAAAA,IAAY,CAACL,GAAM,CAAC2sO,IACpBzjQ,KAAKhd,QAAQg1C,aAAalB,GAAK4B,EAAAA,EAAAA,IAAO,IAAMypO,EAAaniQ,KAAKhd,UAEtE,EACAghR,EAAI3kQ,UAAUkmE,YAAc,SAAUzuC,EAAK+gI,EAAKl6J,GAC5C,GAAY,KAARk6J,EAIJ,IADA,IAAI5+H,EAAO4+H,EAAI5jK,MAAM,KACZkR,EAAI,EAAGA,EAAI8zB,EAAKhhD,OAAQktB,IACzBxH,EACAm5B,EAAIF,UAAUzB,IAAI8D,EAAK9zB,IAGvB2xB,EAAIF,UAAUjB,OAAOsD,EAAK9zB,GAGtC,EACA6+P,EAAI3kQ,UAAU2mQ,iBAAmB,SAAUroQ,GAIvC,GAHIqC,KAAKhd,QAAQ4zC,UAAUM,SAASwsO,KAChCvsO,EAAAA,EAAAA,IAAY,CAACn3B,KAAKhd,SAAU,CAAC0gR,MAE7B5yO,EAAAA,EAAAA,IAAM9wB,KAAKskQ,QAAf,CAGA,IAAIE,EAASxkQ,KAAKomQ,eAClB,GAA8B,SAA1BpmQ,KAAKsqQ,iBAA6B,CAClC,GAAoB,SAAhBtqQ,KAAKg0C,OACL,OAGKh0C,KAAK+oO,eACN3jK,EAAAA,EAAAA,IAASplE,KAAKskQ,OAAQ,CAAE,OAAWtkQ,KAAKhd,QAAQ6zD,aAAe2tN,EAAOvwN,aAAgB,MAGlG,MACK,GAA8B,SAA1Bj0C,KAAKsqQ,kBACV7zO,EAAAA,EAAAA,IAAS,CAACz2B,KAAKhd,SAAU,CAAC0gR,KAC1Bt+L,EAAAA,EAAAA,IAASplE,KAAKhd,QAAS,CAAE,OAAU,SACnCgd,KAAKskQ,OAAO/sO,MAAMyc,OAAS,eAAiBh0C,KAAKwkQ,OAAOvwN,aAAe,WAEtE,GAA8B,SAA1Bj0C,KAAKsqQ,iBAA6B,CACvC,IAAwB,IAApBtqQ,KAAKkhM,WAEL,IADA,IAAIr/I,GAAM/oB,EAAAA,EAAAA,IAAU,IAAMqpO,EAAc,OAASh8B,EAAUnmO,KAAKhd,SACvDmiB,EAAI,EAAGA,EAAI08C,EAAI5pE,OAAQktB,IAC5B08C,EAAI18C,GAAGmxB,aAAa,QAAS,sCAC7Bt2B,KAAKyvE,UAAY5tE,KAAK8e,IAAI3gB,KAAKyvE,UAAWzvE,KAAKmwM,UAAUtuJ,EAAI18C,KAC7D08C,EAAI18C,GAAGoyB,MAAM+zE,eAAe,WAC5BzpD,EAAI18C,GAAGoyB,MAAM+zE,eAAe,kBAG/B,CACDtrG,KAAKskQ,QAAS5rO,EAAAA,EAAAA,IAAO,IAAMypO,EAAaniQ,KAAKhd,UACjC,IAAR2a,GACAqC,KAAKskQ,OAAOnzP,YAAYnR,KAAK4Q,cAAc,MAAO,CAC9ChsB,GAAKu9Q,EAAcniQ,KAAKwlQ,MAAnBrD,KAAqClnR,UAAWkrP,EAAW,IAAMk8B,EACtE9rO,MAAO,CAAE,KAAQ,WAAY,kBAAmB4vM,EAAWnmO,KAAKwlQ,MAAhBr/B,SAGxD,IAAIrvM,EAAM92B,KAAKskQ,OAAO1sR,SAASwT,KAAK,GACpC,IAAS+Z,EAAI,EAAGA,EAAInF,KAAKlW,MAAM7R,OAAQktB,IAGnC,IAFAnF,KAAKgmJ,WAAWlvH,EAAK92B,KAAKlW,MAAMqb,GAAGohD,QAAS,QAASphD,GACrDnF,KAAKyvE,UAAY5tE,KAAK8e,IAAI3gB,KAAKyvE,UAAWzvE,KAAKmwM,UAAUr5K,IAClDA,EAAIykF,YACPzkF,EAAI0B,YAAY1B,EAAIykF,YAGxBv7G,KAAK87F,SACL97F,KAAKgtC,cAAc,CAAC,YAExBhtC,KAAKg1O,YAAc,GACnBh1O,KAAKgmJ,WAAWlvH,EAAK92B,KAAKlW,MAAM,GAAGy8D,QAAS,SAAU,GAClDvmD,KAAKilQ,YAAcjlQ,KAAK6/F,cACxB/oE,EAAIF,UAAUjB,OAAO0sO,EAE7B,EACAj9L,EAAAA,EAAAA,IAASplE,KAAKskQ,OAAQ,CAAE,OAAUtkQ,KAAKyvE,UAAY,MACvD,MAEIrK,EAAAA,EAAAA,IAASplE,KAAKskQ,OAAQ,CAAE,OAAU,QAvDtC,CAyDJ,EACAN,EAAI3kQ,UAAU8wM,UAAY,SAAUr5K,GAChC,IAAIyzO,EAAKjqR,OAAO4jD,iBAAiBpN,GACjC,OAAOA,EAAImd,aAAehuB,WAAWskP,EAAGpmO,iBAAiB,gBAAkBle,WAAWskP,EAAGpmO,iBAAiB,mBACtGle,WAAWskP,EAAGpmO,iBAAiB,eAAiBle,WAAWskP,EAAGpmO,iBAAiB,iBACvF,EACA6/N,EAAI3kQ,UAAU8pQ,gBAAkB,WAC5B,IAAIqB,EAAYxqQ,KAAKomQ,eACjBiC,GAAM3vO,EAAAA,EAAAA,IAAO,IAAMwqO,EAAc,IAAMb,EAAYmI,GACvD,KAAI15O,EAAAA,EAAAA,IAAMu3O,GAAV,CAGKroQ,KAAKyqQ,iBAQDD,GACLA,EAAU5zO,UAAUjB,OAAOiuO,IARvByE,EAAIzxO,UAAUM,SAASksO,KAAkBpjQ,KAAK6kQ,QAAQjuO,UAAUM,SAASqwM,IACzEvnO,KAAK6kQ,QAAQjuO,UAAUzB,IAAIoyM,GAE3BijC,IAAcA,EAAU5zO,UAAUM,SAAS0sO,IAC3C4G,EAAU5zO,UAAUzB,IAAIyuO,IAMhC,IAAIjgN,GAAOvqB,EAAAA,EAAAA,IAAQivO,EAAK,IAAMpG,GAC9B,GAAIjiQ,KAAKhd,UAAY2gE,EAArB,CAGA3jD,KAAKykQ,SAAU/rO,EAAAA,EAAAA,IAAO,IAAMuqO,EAAcuH,GAC1C,IAAIE,GAAMhyO,EAAAA,EAAAA,IAAO,IAAMmqO,EAAe2H,GAClC1lC,GAAYpsM,EAAAA,EAAAA,IAAO,IAAMuqO,EAAe,KAAOjjQ,KAAK+lQ,YAAayE,GACrE,GAAIxqQ,KAAK+oO,aAAc,EACnB3jK,EAAAA,EAAAA,IAASslM,EAAK,CAAE,KAAQ,GAAI,MAAS,KAEpB,MADD55O,EAAAA,EAAAA,IAAMg0M,GAAc9kO,KAAKykQ,QAAQxwN,aAAe6wL,EAAU7wL,eAEtEmxB,EAAAA,EAAAA,IAASslM,EAAK,CAAE,IAAOrC,EAAIx0N,UAAY,KAAM,OAAUw0N,EAAIp0N,aAAe,QAG1EmxB,EAAAA,EAAAA,IAASslM,EAAK,CAAE,IAAO,EAAG,OAAU,GAE5C,KACK,CACD,GAA0B,aAAtB1qQ,KAAKwpO,aAA6B,CAClC,IAAIrmE,EAAiC,WAAzBnjK,KAAK4lQ,gBAA+ByC,EAAIx0N,UAAYw0N,EAAIp0N,aAAeo0N,EAAIx0N,WACvFuxB,EAAAA,EAAAA,IAASslM,EAAK,CAAE,IAAOvnG,EAAQ,KAAM,OAAU,IACnD,MAEI/9F,EAAAA,EAAAA,IAASslM,EAAK,CAAE,IAAO,GAAI,OAAU,KAEzC,IAAIC,GAAW75O,EAAAA,EAAAA,IAAMg0M,GAAc9kO,KAAKykQ,QAAQhtO,YAAcqtM,EAAUrtM,YACxD,IAAZkzO,GACAvlM,EAAAA,EAAAA,IAASslM,EAAK,CAAE,KAAQrC,EAAIv0N,WAAa,KAAM,MAAS62N,GAAWtC,EAAIv0N,WAAau0N,EAAI5wO,aAAe,QAGvG2tC,EAAAA,EAAAA,IAASslM,EAAK,CAAE,KAAQ,OAAQ,MAAS,QAEjD,EACK55O,EAAAA,EAAAA,IAAM9wB,KAAK6kQ,UAAawD,EAAIzxO,UAAUM,SAASksO,IAChDpjQ,KAAK6kQ,QAAQjuO,UAAUjB,OAAO4xM,EA/BlC,CAfA,CAgDJ,EACAy8B,EAAI3kQ,UAAUuiN,UAAY,SAAUrkO,EAAOqtR,EAAc33Q,QAChC,IAAjB23Q,IAA2BA,GAAe,QACzB,IAAjB33Q,IAA2BA,GAAe,GAC9C+M,KAAK0kQ,QAAS5rO,EAAAA,EAAAA,IAAU,IAAMoqO,EAAaljQ,KAAKomQ,gBAChD,IAAIiC,EAAMroQ,KAAK0kQ,OAAOnnR,GACtB,KAAIA,EAAQ,GAAKu8B,MAAMv8B,IAAiC,IAAvByiB,KAAK0kQ,OAAOzsR,QAW7C,GARIsF,GAAS,IAAMqtR,IACf5qQ,KAAKg6B,wBAAyB,EAC9Bh6B,KAAK26B,cAAc,CAAEklE,aAActiH,IAAS,GAC5CyiB,KAAKg6B,wBAAyB,EACzBh6B,KAAKw/O,YACNx/O,KAAKg7B,kBAGTqtO,EAAIzxO,UAAUM,SAASmrO,GACvBriQ,KAAKmpQ,sBADT,CAIKnpQ,KAAKkhM,aACN1qK,EAAAA,EAAAA,IAAW6xO,EAAIpwO,kBAAmB,CAAE,gBAAiBkqO,EAAcniQ,KAAKwlQ,MAAQ,IAAMjoR,IAE1F,IAAIqH,EAAKyjR,EAAIzjR,GACbob,KAAK8nQ,oBACLO,EAAIzxO,UAAUzB,IAAIktO,GAClBgG,EAAIpwO,kBAAkB3B,aAAa,gBAAiB,QACpD,IAAI5a,EAAKpiC,OAAO0mB,KAAK8oQ,SAASlkR,IAI9B,IAHIksC,EAAAA,EAAAA,IAAM9wB,KAAK2oQ,iBACX3oQ,KAAK2oQ,cAAgBxG,EAAcniQ,KAAKwlQ,MAAQ,IAAM9pP,GAEtD1b,KAAKkhM,YACL,IAAIxoK,EAAAA,EAAAA,IAAO,IAAMypO,EAAaniQ,KAAKhd,SAASpL,SAASK,OAAS,EAAG,CAC7D,IAAI4yR,EAAQ7qQ,KAAK8pQ,SAAQpxO,EAAAA,EAAAA,IAAO,IAAMypO,EAAaniQ,KAAKhd,SAASpL,SAAUuqR,EAAcniQ,KAAKwlQ,MAAQ,IAAM9pP,IACvGoV,EAAAA,EAAAA,IAAM+5O,IACPA,EAAMj0O,UAAUzB,IAAIktO,GAExBriQ,KAAK0oQ,iBAAiB9jR,EAAIob,KAAK8qQ,gBACnC,MAEC,CACD9qQ,KAAKskQ,QAAS5rO,EAAAA,EAAAA,IAAO,aAAyBypO,EAAaniQ,KAAKhd,SAChE,IAAIoI,EAAO4U,KAAK6oQ,cAAc7oQ,KAAKskQ,OAAQtkQ,KAAK8oQ,SAASlkR,IACzD,IAAIksC,EAAAA,EAAAA,IAAM1lC,GAAO,CACb4U,KAAKskQ,OAAOnzP,YAAYnR,KAAK4Q,cAAc,MAAO,CAC9ChsB,GAAIu9Q,EAAcniQ,KAAKwlQ,MAAQ,IAAMxlQ,KAAK8oQ,SAASlkR,GAAK3J,UAAWkrP,EAAW,IAAMk8B,EACpF9rO,MAAO,CAAEi0B,KAAM,WAAY,kBAAmB27K,EAAWnmO,KAAKwlQ,MAAQ,IAAMxlQ,KAAK8oQ,SAASlkR,OAE9F,IAAImmR,EAAS/qQ,KAAK6oQ,cAAc7oQ,KAAKskQ,OAAQtkQ,KAAK8oQ,SAASlkR,IACvD29G,EAAY9zF,MAAMpP,UAAU/I,QAAQoJ,KAAKM,KAAKqlQ,eAAgBzgR,GAClEob,KAAKgmJ,WAAW+kH,EAAQ/qQ,KAAKlW,MAAMy4G,GAAWh8C,QAAS,SAAUg8C,EACrE,MAEIn3G,EAAKwrC,UAAUzB,IAAIktO,GAEvBriQ,KAAK0oQ,iBAAiB9jR,EAAIob,KAAK8qQ,gBACnC,CAGA,GAFA9qQ,KAAKmpQ,kBACLnpQ,KAAKgrQ,sBAAsB3C,IACtBroQ,KAAKw/O,aAAeorB,EAAc,CACnC,IAAIK,EAAW,CACXhhK,aAAcjqG,KAAK4kQ,SACnBsG,cAAelrQ,KAAKilQ,UACpBplK,aAAcwoK,EACdpwK,cAAe16G,EACf4tR,iBAAiBzyO,EAAAA,EAAAA,IAAO,IAAMypO,EAAcniQ,KAAKwlQ,MAAQ,IAAMxlQ,KAAKorQ,YAAaprQ,KAAKumD,SACtF6+M,SAAUplQ,KAAKolQ,SACfnyQ,aAAcA,EACdgyG,cAAc,GAElBjlG,KAAK81B,QAAQ,WAAYm1O,GAAU,SAAUI,GACpCA,EAAgBpmK,cACjBojK,EAAIpwO,kBAAkBxmB,OAE9B,GACJ,CAxDA,CAyDJ,EACAuyP,EAAI3kQ,UAAUq1H,SAAW,SAAU5qI,GAC/BkW,KAAKgnQ,WAAY,EACjBhnQ,KAAKykQ,SAAU/rO,EAAAA,EAAAA,IAAO,IAAMuqO,EAAcjjQ,KAAKomQ,gBAC/CpmQ,KAAKokQ,MAAMt6Q,MAAQkW,KAAKwmQ,YAAY18Q,EAAO,GAC3CkW,KAAKokQ,MAAMrpO,WACX/6B,KAAKgnQ,WAAY,CACrB,EACAhD,EAAI3kQ,UAAU4mQ,OAAS,SAAU1oR,GAC7ByiB,KAAKokQ,MAAMz5N,UAAYptD,EACvByiB,KAAKokQ,MAAMrpO,WACX/6B,KAAKulE,YAAYvlE,KAAKhd,QAASq9O,EAAS9iP,GACxCyiB,KAAK0lQ,qBACT,EACA1B,EAAI3kQ,UAAUqmQ,oBAAsB,YAC3B50O,EAAAA,EAAAA,IAAM9wB,KAAK6kQ,UACZ7kQ,KAAK6kQ,QAAQjuO,UAAUzB,IAAIoyM,GAE/BvnO,KAAKmpQ,iBACT,EACAnF,EAAI3kQ,UAAUoqG,UAAY,SAAU1jH,GAChC,IAAI4+Q,GAAQjsO,EAAAA,EAAAA,IAAO,yBAA0B14B,KAAKwkQ,QAClD,GAAIG,EAAM/tO,UAAUM,SAAS,iBAAkB,CAC3C,IAAIo0O,EAAY3G,GAASA,EAAM9oO,cAAc,GAC7CyvO,EAASn5N,SAAS00B,EAA8B,SAAzB7mE,KAAK4lQ,gBAA8B,OAAS,QACnE0F,EAASvwO,WACTuwO,EAASpmM,KAAKn/E,EAClB,CACJ,EACAi+Q,EAAI3kQ,UAAUksQ,cAAgB,WAC1B,IAAIv7P,EAAQhQ,KACZ,GAAIA,KAAKslQ,iBAAkB,CACvB,IAAIyC,EAAY/nQ,KAAKhd,QAAQuvB,cAAc,IAAM2vP,GACjD,GAAI6F,EACYt5P,MAAMpP,UAAUhC,MAAMqC,KAAKqoQ,EAAUj3P,iBAAiB,IAAMoyP,IAClEnkR,SAAQ,SAAUiE,GACpBgtB,EAAMw7P,eAAexoR,EACzB,GAER,CACJ,EACAghR,EAAI3kQ,UAAUk6C,WAAa,WACvBv5C,KAAKurQ,gBACLjrR,OAAOujB,iBAAiB,SAAU7D,KAAK+nO,eACvC/yM,EAAAA,GAAaG,IAAIn1B,KAAKhd,QAAS,YAAagd,KAAKy4H,aAAcz4H,MAC/Dg1B,EAAAA,GAAaG,IAAIn1B,KAAKhd,QAAS,UAAWgd,KAAKyrQ,aAAczrQ,OACxD8wB,EAAAA,EAAAA,IAAM9wB,KAAKskQ,UACZtkQ,KAAKknE,YAAc,IAAI9qB,EAAAA,GAAMp8C,KAAKskQ,OAAQ,CAAEn9L,MAAOnnE,KAAKshO,aAAatiO,KAAKgB,SAE9EA,KAAKkpO,UAAY,IAAIjvL,EAAAA,GAAej6C,KAAKhd,QAAS,CAAEk4D,UAAWl7C,KAAKsyE,WAAWtzE,KAAKgB,MAAO26C,WAAY36C,KAAK26C,aAC5G36C,KAAK0rQ,aAAe,IAAIzxN,EAAAA,GAAej6C,KAAKhd,QAAS,CACjDk4D,UAAWl7C,KAAKsyE,WAAWtzE,KAAKgB,MAChC26C,WAAY,CAAEm+B,UAAW,YAAatP,IAAK,MAAOD,SAAU,aAC5Dn0C,UAAW,WAEnB,EACA4uO,EAAI3kQ,UAAU6nD,aAAe,YACpBp2B,EAAAA,EAAAA,IAAM9wB,KAAKkpO,YACZlpO,KAAKkpO,UAAUxhN,WAEdoJ,EAAAA,EAAAA,IAAM9wB,KAAK0rQ,eACZ1rQ,KAAK0rQ,aAAahkP,WAEjBoJ,EAAAA,EAAAA,IAAM9wB,KAAKskQ,UAAYxzO,EAAAA,EAAAA,IAAM9wB,KAAKknE,eACnClnE,KAAKknE,YAAYx/C,UACjB1nB,KAAKknE,YAAc,MAEvB5mF,OAAOwjB,oBAAoB,SAAU9D,KAAK+nO,eAC1C/yM,EAAAA,GAAaW,OAAO31B,KAAKhd,QAAS,YAAagd,KAAKy4H,cACpDzjG,EAAAA,GAAaW,OAAO31B,KAAKhd,QAAS,UAAWgd,KAAKyrQ,cAClDzrQ,KAAKhd,QAAQ4zC,UAAUjB,OAAO0qM,GAC9BrgO,KAAKhd,QAAQ4zC,UAAUjB,OAAO2sO,EAClC,EACA0B,EAAI3kQ,UAAUspD,aAAe,SAAU16D,GACnC+R,KAAKhd,QAAQ4zC,UAAUjB,OAAO2sO,GAC9B,IAAI+F,EAAMp6Q,EAAK2vD,cAAczf,OACzBirO,GAAYhwO,EAAAA,EAAAA,IAAQivO,EAAK,IAAMnF,GAC/BmG,EAAWrpQ,KAAKspQ,YAAYF,GAC5Bf,EAAIzxO,UAAUM,SAASwrO,GACvB1iQ,KAAK2rQ,UAAUtC,GAEVrpQ,KAAK+oO,eAAgB3vM,EAAAA,EAAAA,IAAQivO,EAAK,cACvCroQ,KAAKypG,UAAUzpG,KAAKklE,OAGpBllE,KAAKmlQ,SAAU,GACVr0O,EAAAA,EAAAA,IAAMs4O,IAAeC,IAAarpQ,KAAK6/F,cACxC7/F,KAAKupQ,UAAUF,EAAUp7Q,EAAK2vD,eAAe,GAGzD,EACAomN,EAAI3kQ,UAAUiiO,aAAe,SAAU7lP,GACnC,KAAIA,EAAEyiE,SAAW,IAAKptB,EAAAA,EAAAA,IAAMr1C,EAAEmiE,cAAcjN,iBAA5C,CAGI3wC,KAAKklQ,UACLllQ,KAAKhd,QAAQszC,aAAa,aAAc,QAE5C,IAAIs1O,EAAY5rQ,KAAKhd,QAAQuvB,cAAc,uBAC3C,GAAIq5P,EACAA,EAAU1qO,gBAAgB,kBAD9B,CAKA,GADAlhC,KAAKolQ,UAAW,EACS,UAArB3pR,EAAEmjE,gBAAoD,IAAtB5+C,KAAK6/F,cACrC,IAAK,IAAIz2D,EAAIppC,KAAK6/F,aAAe,EAAGz2D,GAAK,EAAGA,IACxC,IAAKppC,KAAK0kQ,OAAOt7N,GAAGxS,UAAUM,SAASqwM,GAAa,CAChDvnO,KAAKupQ,UAAUngO,EAAG,MAAM,GACxB,KACJ,OAGH,GAAyB,SAArB3tD,EAAEmjE,gBAA8B5+C,KAAK6/F,gBAAiB/mE,EAAAA,EAAAA,IAAU,IAAMoqO,EAAaljQ,KAAKhd,SAAS/K,OAAS,EAC/G,IAAK,IAAIktB,EAAInF,KAAK6/F,aAAe,EAAG16F,EAAInF,KAAK0kQ,OAAOzsR,OAAQktB,IACxD,IAAKnF,KAAK0kQ,OAAOv/P,GAAGyxB,UAAUM,SAASqwM,GAAa,CAChDvnO,KAAKupQ,UAAUpkQ,EAAG,MAAM,GACxB,KACJ,CAGRnF,KAAKolQ,UAAW,CAlBhB,CARA,CA2BJ,EACApB,EAAI3kQ,UAAUosQ,aAAe,SAAUhwR,GACnC,GAAmB,KAAdA,EAAEu+D,SAA8B,KAAZv+D,EAAEi/D,OAAgC,KAAdj/D,EAAEu+D,SAA8B,KAAZv+D,EAAEi/D,MAAe,CAC9E,IAAImxN,GAAWzyO,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,IAAM+jO,IAClCpxO,EAAAA,EAAAA,IAAM+6O,IACPpwR,EAAEi1D,gBAEV,CACJ,EACAszN,EAAI3kQ,UAAUizE,WAAa,SAAU72F,GACjC,IAAIukB,KAAKhd,QAAQ4zC,UAAUM,SAASopM,GAApC,CAGAtgO,KAAKhd,QAAQ4zC,UAAUzB,IAAImtO,GAC3B,IAAI+F,EAAM5sR,EAAE0iD,OACR4pO,EAAY/nQ,KAAKomQ,eACjB0F,GAASpzO,EAAAA,EAAAA,IAAO,IAAM2pO,EAAY0F,GACtC/nQ,KAAKgqO,QAAStxM,EAAAA,EAAAA,IAAO,IAAMyqO,EAAY4E,IAClCj3O,EAAAA,EAAAA,IAAM9wB,KAAKgqO,UACZhqO,KAAKyoO,OAASzoO,KAAKgqO,OAAOnuM,cAAc,IAE5C,IAAIzwC,GAAOguC,EAAAA,EAAAA,IAAQx2B,SAASmjE,cAAe,IAAMm9L,GAC7CkG,GAAYhwO,EAAAA,EAAAA,IAAQivO,EAAK,IAAMnF,GACnC,OAAQznR,EAAEwnB,QACN,IAAK,QACL,IAAK,QACD,GAAIolQ,EAAIpvN,cAAcriB,UAAUM,SAASopM,GACrC,OAEJ,GAAiB,UAAb7kP,EAAEwnB,QAAsBolQ,EAAIzxO,UAAUM,SAAS,aAAc,CAC7Dl3B,KAAKypG,UAAUzpG,KAAKklE,MACpB,KACJ,CACAllE,KAAK0uI,WAAW25H,GAChB,MACJ,IAAK,MACL,IAAK,WACGA,EAAIzxO,UAAUM,SAAS4rO,KAC+C,KAAnE1pO,EAAAA,EAAAA,IAAQivO,EAAK,IAAMnF,GAAatsO,UAAUM,SAASmrO,IACtDgG,EAAI/xO,aAAa,WAAY+xO,EAAIjnO,aAAa,kBAE9CphC,KAAKyoO,SAAUnxM,EAAAA,EAAAA,IAAUt3B,KAAKyoO,OAAOzlP,UACrCgd,KAAKyoO,OAAOxjK,KAAKjlE,KAAKilE,OAErBn0C,EAAAA,EAAAA,IAAMg7O,IAAgE,OAArDA,EAAOl0R,SAASwT,KAAK,GAAGg2C,aAAa,aACvD0qO,EAAOl0R,SAASwT,KAAK,GAAGkrC,aAAa,WAAY,KAErD,MACJ,IAAK,WACL,IAAK,aACIxF,EAAAA,EAAAA,IAAM1lC,IACP4U,KAAKgrQ,sBAAsB5/Q,GAE/B,MACJ,IAAK,YACD3P,EAAEi1D,mBACG5f,EAAAA,EAAAA,IAAM9wB,KAAKgqO,SAAWhqO,KAAKgqO,OAAOpzM,UAAUM,SAjwC3C,kBAkwCFl3B,KAAKyoO,OAAOvjK,KAAKllE,KAAKklE,MAE1B,MACJ,IAAK,SACD,IAA6B,IAAzBllE,KAAK0mQ,mBAA6B51O,EAAAA,EAAAA,IAAMs4O,GAAY,CACpD,IAAI2C,EAAS3C,EAAU4C,cAClBl7O,EAAAA,EAAAA,IAAMi7O,IAAWA,EAAOn1O,UAAUM,SAASgsO,IAC5C6I,EAAO9zO,kBAAkBxmB,QAE7BzR,KAAK2rQ,UAAU3rQ,KAAKspQ,YAAYF,GACpC,CACAppQ,KAAKmpQ,kBAxDb,CA2DJ,EACAnF,EAAI3kQ,UAAU2rQ,sBAAwB,SAAU7sO,GAC5C,IAAI2nO,GAASptO,EAAAA,EAAAA,IAAO,IAAM14B,KAAK+lQ,YAAa/lQ,KAAKykQ,SACjD,IAAKzkQ,KAAK+oO,gBAAiBj4M,EAAAA,EAAAA,IAAMg1O,GAAjC,CACI,IAAImG,GAASvzO,EAAAA,EAAAA,IAAO,iBAAkB14B,KAAKykQ,SAC3CwH,EAAO/qO,gBAAgB,YACvB,IAAIgrO,EAAWD,EAAO5oO,WAClB8oO,EAASD,EAAWD,EAAOx0O,YAC3B20O,EAAWjuO,EAAO2V,WAClBq5L,EAAWhvM,EAAO1G,YAClB40O,EAASluO,EAAO2V,WAAa3V,EAAO1G,YACxC,GAAKy0O,EAAWE,GAAcD,EAASE,EAAS,CAC5C,IAAIC,EAAeH,EAASC,EAC5BH,EAAO5oO,WAAa6oO,GAAY/+B,EAAWm/B,EAC/C,MAEI,GAAKJ,EAAWE,GAAcD,EAASE,EAAS,CACxCC,EAAeD,EAASH,EAC5BD,EAAO5oO,WAAa6oO,GAAY/+B,EAAWm/B,EAC/C,CAKR,CACJ,EACAtI,EAAI3kQ,UAAU6nQ,gBAAkB,SAAUtiR,GACtC,OAAO1F,SAAS0F,EAAGf,UAAUe,EAAGk6B,YAAY,KAAO,GAAI,GAC3D,EACAklP,EAAI3kQ,UAAUo5H,aAAe,SAAUh9I,GACnC,IAAI4sR,EAAM5sR,EAAE0iD,SACPrN,EAAAA,EAAAA,IAAMu3O,EAAIzxO,YAAcyxO,EAAIzxO,UAAUM,SAASwrO,IAChD2F,EAAI/xO,aAAa,QAAS,IAAIklB,EAAAA,GAAK,MAAO,CAAE+wN,iBAAkBvsQ,KAAK3M,OAAS2M,KAAKwpB,QAAQyyB,YAAY,oBAE7G,EACA+nN,EAAI3kQ,UAAUmtQ,0BAA4B,SAAUnqO,EAASC,GACzD,GAAMD,EAAQv4C,iBAAiB2kB,OAAS6zB,EAAQx4C,iBAAiB2kB,MAsF7D,GADAzO,KAAKi+K,UAAY,GACbntJ,EAAAA,EAAAA,IAAM9wB,KAAKokQ,OACXpkQ,KAAK8mQ,oBAEJ,EACG9mQ,KAAK87F,SAAW97F,KAAKyrD,YACrBzrD,KAAKgtC,gBAEThtC,KAAK00H,SAASryF,EAAQv4C,OAClBkW,KAAKg1O,YAAY/8P,OAAS,GAC1B+nB,KAAKqkQ,qBAETrkQ,KAAKg1O,YAAc,GAEnB,IADA,IAAIjkI,GAAgBr4E,EAAAA,EAAAA,IAAO,aAAyBypO,EAAaniQ,KAAKhd,SAC/D+tH,EAAc94E,oBACjBM,EAAAA,EAAAA,IAAOw4E,EAAc94E,mBAEzBj4B,KAAK04B,OAAO14B,KAAK6/F,cACjB7/F,KAAKkkQ,eAAiB,GACtBlkQ,KAAKurQ,eACT,MAvGA,IADA,IAAIkB,EAAc5tR,OAAOC,KAAKujD,EAAQv4C,OAC7Bqb,EAAI,EAAGA,EAAIsnQ,EAAYx0R,OAAQktB,IAGpC,IAFA,IAAIre,EAAQ5H,SAASL,OAAOC,KAAKujD,EAAQv4C,OAAOqb,GAAI,IAChDixB,EAAav3C,OAAOC,KAAKujD,EAAQv4C,MAAMhD,IAClC0vB,EAAI,EAAGA,EAAI4f,EAAWn+C,OAAQu+B,IAAK,CACxC,IAAIkmB,EAAS79C,OAAOyjD,EAAQx4C,MAAMhD,IAAQsvC,EAAW5f,IACjDk2P,EAAS7tR,OAAOwjD,EAAQv4C,MAAMhD,IAAQsvC,EAAW5f,IACjDm2P,EAAM3sQ,KAAKhd,QAAQ8tB,iBAAiB,IAAMoyP,GAAap8Q,GACvDy7G,OAAY,EAEZA,EADAoqK,KAAQ77O,EAAAA,EAAAA,IAAM67O,EAAI/nR,KAAkB,KAAX+nR,EAAI/nR,GACjBob,KAAKknQ,gBAAgByF,EAAI/nR,IAGzBkC,EAEhB,IAAI8/Q,GAAUluO,EAAAA,EAAAA,IAAO,IAAMuqO,EAAe,KAAO98B,EAAWnmO,KAAKwlQ,MAAQ,IAAMjjK,EAAWviG,KAAKhd,SAC3F4pR,GAAUl0O,EAAAA,EAAAA,IAAO,IAAMypO,EAAc,KAAOA,EAAcniQ,KAAKwlQ,MAAQ,IAAMjjK,EAAWviG,KAAKhd,SACjG,GAAsB,WAAlBozC,EAAW5f,IAAqC,mBAAlB4f,EAAW5f,GAAyB,CAClE,IAAIitF,GAAQ3yE,EAAAA,EAAAA,IAAM9wB,KAAKlW,MAAMhD,GAAO2pC,UAChCK,EAAAA,EAAAA,IAAM9wB,KAAKlW,MAAMhD,GAAO2pC,OAAOm2B,SAAY,GAAK5mD,KAAKlW,MAAMhD,GAAO2pC,OAAOm2B,QACzEouB,EAAUh1E,KAAKlW,MAAMhD,GAAOknH,gBAAkBhuG,KAAKlW,MAAMhD,GAAO2pC,OAAO14C,KAI3E,GAHsB,mBAAlBq+C,EAAW5f,IACXxW,KAAK6sQ,iBAAiBjG,EAASxwO,EAAW5f,GAAI0sP,GAEjC,KAAZluL,GAA6B,KAATyuB,EACrBzjG,KAAK2rQ,UAAU7kR,OAEd,CACDkZ,KAAKsnQ,KAAOqF,EAAI/nR,GAChB,IAAI4hB,EAAM,GACVA,EAAI/mB,KAAKugB,KAAKlW,MAAMhD,IACpBkZ,KAAKlW,MAAM+8B,OAAO//B,EAAO,GACzBkZ,KAAKqlQ,eAAex+O,OAAO//B,EAAO,GAClCkZ,KAAKokQ,MAAMt6Q,MAAM+8B,OAAO//B,EAAO,GAC/B,IAAIgmR,EAAclG,EAAQhwO,UAAUM,SAASqwM,IAC7ChvM,EAAAA,EAAAA,IAAOquO,GACP5mQ,KAAKgnQ,WAAY,EACjBhnQ,KAAK+sQ,OAAOvmQ,EAAK1f,GACbgmR,GACA9sQ,KAAKgtQ,QAAQlmR,GAEjBkZ,KAAKgnQ,WAAY,CACrB,CACJ,CACA,GAAsB,YAAlB5wO,EAAW5f,MAAqBsa,EAAAA,EAAAA,IAAM87O,GAEtC,IAD+B,kBAAXF,IAAuB57O,EAAAA,EAAAA,IAAM47O,EAAOn7P,cAC3B,MAAdm7P,EAAO,IAA4B,MAAdA,EAAO,KAAeA,EAAOz0R,OAAQ,CACrE,IAAI4xR,EAASjnQ,SAAS2P,cAAcm6P,GACpCE,EAAQz7P,YAAY04P,GACpBA,EAAOtyO,MAAMuiB,QAAU,EAC3B,KACoB,KAAX4yN,GAA+B,MAAdhwO,EAAO,IAC7B95B,SAASuuB,KAAKhgB,YAAYnR,KAAKhd,QAAQuvB,cAAcmqB,IAASnF,MAAMuiB,QAAU,OAC9E8yN,EAAQr7P,UAAYm7P,GAEf1sQ,KAAKyrD,WAAazrD,KAAK87F,SAC5B97F,KAAK6sQ,iBAAiBD,EAASx2O,EAAW5f,GAAI2vN,GAC9CymC,EAAQr7P,UAAY,GACpBvR,KAAKypQ,gBAAgBmD,EAASF,EAAQ5lR,IAEf,oBAAX4lR,IACZE,EAAQr7P,UAAYm7P,GAGN,aAAlBt2O,EAAW5f,MACNsa,EAAAA,EAAAA,IAAM81O,KACPA,EAAQhwO,UAAUjB,OAAO+G,GACzBkqO,EAAQhwO,UAAUzB,IAAIu3O,KAErB57O,EAAAA,EAAAA,IAAM87O,KACPA,EAAQh2O,UAAUjB,OAAO+G,GACzBkwO,EAAQh2O,UAAUzB,IAAIu3O,KAGR,aAAlBt2O,EAAW5f,IACXxW,KAAKitQ,UAAUnmR,GAAoB,IAAX4lR,GAEN,YAAlBt2O,EAAW5f,IACXxW,KAAKgtQ,QAAQlmR,GAAoB,IAAX4lR,EAE9B,CA0BZ,EACA1I,EAAI3kQ,UAAUwtQ,iBAAmB,SAAU73B,EAAa/nM,EAAchyD,GAClE,GAAK+kB,KAAKktQ,eAGV,GAAIltQ,KAAKqrI,oBAAsBrrI,KAAKqrI,mBAAmBp+F,GAEnD,IADA,IAAIgoM,EAAsBj1O,KAAKqrI,mBACtBvkJ,EAAQ,EAAGA,EAAQmuP,EAAoBhoM,GAAch1D,OAAQ6O,IAAS,CAC3E,IAAIouP,EAAiBD,EAAoBhoM,GAAcnmD,GAAOuiK,UAAU,GACpE8rF,GAAc/7M,EAAAA,EAAAA,IAAQ87M,EAAgB,IAAMj6P,GAChD,KAAK0yB,EAAAA,EAAAA,IAAkBwnO,IAAgBA,IAAgBH,EAAa,CAChEh1O,KAAKgtC,cAAc,CAACC,GAAe,CAACgoM,EAAoBhoM,GAAcnmD,KACtE,KACJ,CACJ,MAEC,GAAIkZ,KAAK8vH,SAAW9vH,KAAK8vH,QAAQ73I,OAAS,EAC3C,KAAI63I,EAAU9vH,KAAK8vH,QACnB,IAAShpI,EAAQ,EAAGA,EAAQgpI,EAAQ73I,OAAQ6O,IAAS,CACjD,IAAIsuP,EAAatlH,EAAQhpI,GACrBquP,GAAc/7M,EAAAA,EAAAA,IAAQg8M,EAAWC,cAAe,IAAMp6P,GAC1D,KAAK0yB,EAAAA,EAAAA,IAAkBwnO,IAAgBA,IAAgBH,EAAa,CAChEh1O,KAAKgtC,cAAc,CAACC,GAAenmD,GACnC,KACJ,CACJ,CAR0B,CAUlC,EACAk9Q,EAAI3kQ,UAAUmsQ,eAAiB,SAAUrtO,GACrC,IAAInuB,EAAQhQ,KACRugP,EAAU,IAAIryM,EAAAA,GAAU/P,EAAQ,CAChC8U,SAAUjzC,KAAKizC,SACfnB,WAAY,IAAMoxN,EAClBh0P,OAAO,EACPgmC,OAAQl1C,KAAKk1C,OAAOl2C,KAAKgB,MACzB4yC,UAAW5yC,KAAKmtQ,cAAcnuQ,KAAKgB,MACnC20C,KAAM,SAAUl5D,GACZ,IACI2xR,EACAC,EAFAC,EAAYt9P,EAAMs5P,YAAYt5P,EAAM80P,UAGpCyI,EAAW,CACXC,YAAax9P,EAAM80P,SACnB/iR,MAAOtG,EAAEsG,MACTo8C,OAAQ1iD,EAAE0iD,OACVsvO,YAAahyR,EAAE0iD,OAAO/E,QAAQ,IAAM8pO,GACpCp4I,cAAe96G,EAAMk8D,aACrBplF,MAAOwmR,GAEX,IAAKx8O,EAAAA,EAAAA,IAAMr1C,EAAE0iD,OAAO/E,QAAQ,IAAM6oO,KAAcxmR,EAAE0iD,OAAO/E,QAAQ,IAAM6oO,GAASzlF,YAAYxsK,EAAMhtB,UAC9FgtB,EAAMijC,WAAa,IAAMivN,EAGxB,CAgBD,GAfMzmR,EAAE0iD,OAAO/E,QAAQppB,EAAMijC,WAAqC,UAAvBjjC,EAAMw5N,cAS7C5mO,SAASuuB,KAAKoG,MAAM68G,OAAS,GAC7BpkI,EAAM80P,SAASvyP,cAAc,IAAMuwP,GAAUvrO,MAAMC,WAAa,SAC5DxnB,EAAMk8D,aAAat1C,UAAUM,SAASqwM,KACtCpwM,EAAAA,EAAAA,IAAY,CAACnnB,EAAMk8D,cAAeq7J,KAXtC3kO,SAASuuB,KAAKoG,MAAM68G,OAAS,eAC7B39G,EAAAA,EAAAA,IAAS,CAACzmB,EAAMk8D,cAAeq7J,GAC3Bv3N,EAAM80P,SAASluO,UAAUM,SAASqwM,KAClCpwM,EAAAA,EAAAA,IAAY,CAACnnB,EAAM80P,UAAWv9B,GAElCv3N,EAAM80P,SAASvyP,cAAc,IAAMuwP,GAAUvrO,MAAMC,WAAa,WASzC,eAAvBxnB,EAAMw5N,gBAAkC14M,EAAAA,EAAAA,IAAM9gB,EAAMhtB,QAAQuvB,cAAc,eAAgB,CAC1F,IAAIm7P,EAAoB19P,EAAMhtB,QAAQuvB,cAAc,uBAChDo7P,EAAmB39P,EAAMhtB,QAAQuvB,cAAc,sBAC/Cq7P,EAAa59P,EAAMhtB,QAAQuvB,cAAc,oBACxCue,EAAAA,EAAAA,IAAM48O,IAAsB7rQ,KAAK8Z,IAAK+xP,EAAkBj2O,YAAc,EACvEi2O,EAAkB55N,YAAc9jC,EAAMk8D,aAAap4B,WAAa9jC,EAAMk8D,aAAaz0C,cACnFm2O,EAAWvqO,YAAc,MAExBvS,EAAAA,EAAAA,IAAM68O,IAAqB9rQ,KAAK8Z,IAAKgyP,EAAiB75N,WAAa65N,EAAiBl2O,YACrFznB,EAAMk8D,aAAap4B,YAAe65N,EAAiBl2O,YAAc,IACjEm2O,EAAWvqO,YAAc,GAEjC,CACArzB,EAAMk8D,aAAa30C,MAAM0gB,cAAgB,OACzCo1N,GAAWj0O,EAAAA,EAAAA,IAAQ39C,EAAE0iD,OAAQ,IAAM+kO,EAAc,gBACjD,IAAI2K,EAAqB,EACE,eAAvB79P,EAAMw5N,eAAkC14M,EAAAA,EAAAA,IAAM9gB,EAAMhtB,QAAQuvB,cAAc,iBAC1Es7P,EAAqB79P,EAAMhtB,QAAQuvB,cAAc,sBAAsBklB,aAE3D,MAAZ41O,IAAqBA,EAASS,WAAW99P,EAAM80P,WAC/CuI,EAASj0O,QAAQ,IAAM6oO,GAAS6L,WAAW99P,EAAM80P,SAAS1rO,QAAQ,IAAM6oO,OACxEmL,EAAYp9P,EAAMs5P,YAAY+D,IACdC,GACXzrQ,KAAK8Z,IAAK0xP,EAASv5N,WAAau5N,EAAS51O,YACtCznB,EAAMk8D,aAAap4B,YAAeu5N,EAAS51O,YAAc,GAC7DznB,EAAM+9P,WAAWV,EAAUC,EAAWF,GAEtCA,EAAYE,GACXzrQ,KAAK8Z,IAAI0xP,EAAS51O,YAAc,GAAK41O,EAASv5N,WAC3C+5N,EAAsB79P,EAAMk8D,aAAap4B,WAAa9jC,EAAMk8D,aAAaz0C,aAC7EznB,EAAM+9P,WAAWV,EAAUC,EAAWF,IAG9Cp9P,EAAMg+P,aAAeh+P,EAAMs5P,YAAYt5P,EAAM80P,UAC7C90P,EAAM8lB,QAAQ,WAAYy3O,EAC9B,MArDIv9P,EAAM8lB,QAAQ,WAAYy3O,EAsDlC,EACAh2N,SAAUv3C,KAAKiuQ,aAAajvQ,KAAKgB,QAErCA,KAAKkkQ,eAAezkR,KAAK8gQ,EAC7B,EACAyjB,EAAI3kQ,UAAU61C,OAAS,SAAUz5D,GAc7B,OAbAukB,KAAKksE,aAAelsE,KAAK4Q,cAAc,OACnCn1B,EAAEuH,UACFgd,KAAKksE,aAAgBzwF,EAAEuH,QAAQouB,WAAU,IACzCqlB,EAAAA,EAAAA,IAAS,CAACz2B,KAAKksE,cAAe,uBAC1BlsE,KAAKhd,QAAQuvB,cAAc,IAAM2vP,GAAYtrO,UAAUM,SAASyrO,KAChElsO,EAAAA,EAAAA,IAAS,CAACz2B,KAAKksE,cAAey2L,IAElCxrO,EAAAA,EAAAA,IAAY,CAACn3B,KAAKksE,aAAa35D,cAAc,IAAMuwP,IAAY,aAC1DhyO,EAAAA,EAAAA,IAAM9wB,KAAKksE,aAAa35D,cAAc,wBACvCojB,EAAAA,EAAAA,IAAO31B,KAAKksE,aAAa35D,cAAc,sBAE3C3P,SAASuuB,KAAKhgB,YAAYnR,KAAKksE,eAE5BlsE,KAAKksE,YAChB,EACA83L,EAAI3kQ,UAAU8tQ,cAAgB,SAAU1xR,GACpC,IAAIu0B,EAAQhQ,KACZA,KAAK+kQ,cAAgB/kQ,KAAKlW,MAAMhK,KAAI,SAAU8sC,GAAK,OAAOA,CAAG,IAC7D5sB,KAAK8kQ,SAAWrpR,EAAEuH,QAClB,IAAIuqR,EAAW,CACXC,YAAa/xR,EAAEuH,QACfjB,MAAOtG,EAAEsG,MACTo8C,OAAQ1iD,EAAE0iD,OACVsvO,YAAa,KACb3mR,MAAOkZ,KAAKspQ,YAAYtpQ,KAAK8kQ,UAC7Bh6I,cAAe9qH,KAAKksE,aACpB3kF,QAAQ,GAEZyY,KAAK81B,QAAQ,cAAey3O,GAAU,SAAUW,GAC5C,GAAIA,EAAgB3mR,OAAQ,CACxB,IAAIg5P,EAAU9kQ,EAAEuH,QAAQ64C,cAAc,IACjCluB,EAAAA,EAAAA,IAAkB4yO,IACnBA,EAAQnvM,WAAW31D,EAAEsG,QAEzBw2C,EAAAA,EAAAA,IAAOvoB,EAAMk8D,aACjB,MAEIl8D,EAAM83P,qBACNrxO,EAAAA,EAAAA,IAAS,CAACzmB,EAAMy0P,QAAQlyP,cAAc,IAAMswP,IAAiBt7B,GAC7Dv3N,EAAM80P,SAASvyP,cAAc,IAAMuwP,GAAUvrO,MAAMC,WAAa,QAExE,GACJ,EACAwsO,EAAI3kQ,UAAU0uQ,WAAa,SAAUV,EAAUc,EAAYf,GACvD,GAAIptQ,KAAKlW,MAAM7R,OAAS,EAAG,CACvB,IAAImT,EAAO4U,KAAK+kQ,cAAcoJ,GAC9BnuQ,KAAK+kQ,cAAcl+O,OAAOsnP,EAAY,GACtCnuQ,KAAK+kQ,cAAcl+O,OAAOumP,EAAW,EAAGhiR,EAC5C,CAIA,GAH0B,aAAtB4U,KAAKwpO,cACL6jC,EAAS/8P,WAAW0nB,aAAah4B,KAAK8kQ,SAAUuI,EAASrhN,oBAEzDmiN,EAAaf,EACb,GAAMptQ,KAAK8kQ,SAAS7rN,cAAe60N,WAAWT,EAASp0N,eA0BnDj5C,KAAK8kQ,SAASx0P,WAAW0nB,aAAah4B,KAAK8kQ,SAAUuI,QAzBrD,GAA0B,aAAtBrtQ,KAAKwpO,aACL,GAAI6jC,EAASS,WAAWT,EAASp0N,cAAco3E,WAAY,CACvD,IAAI+9I,EAAiBpuQ,KAAK8kQ,SAASx0P,WACnC+8P,EAAS/8P,WAAW0nB,aAAah4B,KAAK8kQ,SAAUuI,GAChDe,EAAep2O,aAAaq1O,EAASp0N,cAAco3E,UAAW+9I,EAAetqN,WAAW,GAC5F,MAEI9jD,KAAK8kQ,SAASx0P,WAAW0nB,aAAcq1O,EAASp0N,cAAco3E,UAAYrwH,KAAK8kQ,SAAS7rN,cAAc6K,WAAW,IACjHupN,EAAS/8P,WAAW0nB,aAAah4B,KAAK8kQ,SAAUuI,OAGnD,CACD,IAAIgB,EAAWhB,EAASp0N,cAAeo3E,UACvC,GAAIg9I,EAASS,WAAWO,GAAU,CAC1BD,EAAiBpuQ,KAAK8kQ,SAASx0P,WACnC+8P,EAAS/8P,WAAW0nB,aAAah4B,KAAK8kQ,SAAUuI,GAChDe,EAAep2O,aAAaq2O,EAASD,EAAetqN,WAAW,GACnE,MAEI9jD,KAAK8kQ,SAASx0P,WAAW0nB,aAAcq1O,EAASp0N,cAAeo3E,UAAWrwH,KAAK8kQ,SAAS7rN,cAAc6K,WAAW,IACjHupN,EAAS/8P,WAAW0nB,aAAah4B,KAAK8kQ,SAAUuI,EAExD,CAMJc,EAAaf,IACPptQ,KAAK8kQ,SAAS7rN,cAAe60N,WAAWT,EAASp0N,eAWnDj5C,KAAK8kQ,SAASx0P,WAAW0nB,aAAah4B,KAAK8kQ,SAAUuI,EAASrhN,oBAVpC,aAAtBhsD,KAAKwpO,cACLxpO,KAAK8kQ,SAAS7rN,cAAc9nC,YAAYk8P,EAASp0N,cAAchhB,mBAC/Do1O,EAAS/8P,WAAW0nB,aAAah4B,KAAK8kQ,SAAUuI,EAASrB,eAGzDhsQ,KAAK8kQ,SAASx0P,WAAW0nB,aAAcq1O,EAASp0N,cAAeo3E,UAAWrwH,KAAK8kQ,SAAS7rN,cAAc6K,WAAW,IACjHupN,EAAS/8P,WAAW0nB,aAAah4B,KAAK8kQ,SAAUuI,IAOhE,EACArJ,EAAI3kQ,UAAU4uQ,aAAe,SAAUxyR,GACnC,IAAIu0B,EAAQhQ,MACZu4B,EAAAA,EAAAA,IAAOv4B,KAAKksE,cACZlsE,KAAKksE,aAAe,KACpBlsE,KAAK8kQ,SAASvyP,cAAc,IAAMuwP,GAAUvrO,MAAMC,WAAa,UAC/D50B,SAASuuB,KAAKoG,MAAM68G,OAAS,GAC7B,IAAIk6H,EAAe,CACfd,YAAaxtQ,KAAK8kQ,SAClB/iR,MAAOtG,EAAEsG,MACTo8C,OAAQ1iD,EAAE0iD,OACVsvO,YAAaztQ,KAAK0kQ,OAAO1kQ,KAAKguQ,cAC9BljJ,cAAe,KACfhkI,MAAOkZ,KAAKguQ,aACZzmR,QAAQ,GAEZyY,KAAK81B,QAAQ,UAAWw4O,GAAc,SAAUC,GACxCA,EAAgBhnR,OAChByoB,EAAMm7B,UAGFn7B,EAAMlmB,MAAM7R,OAAS,GAAK+3B,EAAM+0P,cAAc9sR,OAAS,GACvD+3B,EAAMlmB,MAAQkmB,EAAM+0P,cACpB/0P,EAAM6vF,aAAe7vF,EAAMg+P,aAC3Bh+P,EAAMm7B,YAGNn7B,EAAM80P,SAASvyP,cAAc,IAAMuwP,GAAUvrO,MAAMC,WAAa,IAChEL,EAAAA,EAAAA,IAAY,CAACnnB,EAAMy0P,QAAQlyP,cAAc,IAAMswP,IAAiBt7B,GAChEv3N,EAAMu5P,UAAUv5P,EAAMg+P,aAAc,MAAM,GAGtD,IACAhuQ,KAAK8kQ,SAAW,IACpB,EASAd,EAAI3kQ,UAAU4tQ,UAAY,SAAUnmR,EAAOvJ,GACvC,IAAIknR,GAAU3rO,EAAAA,EAAAA,IAAU,IAAMoqO,EAAaljQ,KAAKhd,SAAS8D,IACrDgqC,EAAAA,EAAAA,IAAM2zO,MAGI,IAAVlnR,GACAknR,EAAQ7tO,UAAUjB,OAAO2qM,EAAaQ,GACtC2jC,EAAQxsO,kBAAkB3B,aAAa,WAAYmuO,EAAQxsO,kBAAkBmJ,aAAa,oBAG1FqjO,EAAQ7tO,UAAUzB,IAAImrM,EAAaQ,GACnC2jC,EAAQxsO,kBAAkBiJ,gBAAgB,YACtCujO,EAAQ7tO,UAAUM,SAASmrO,IAC3BriQ,KAAK04B,OAAO5xC,EAAQ,KAGvBgqC,EAAAA,EAAAA,IAAM9wB,KAAKlW,MAAMhD,MAClBkZ,KAAKlW,MAAMhD,GAAO/N,UAAYwE,EAC9ByiB,KAAK+6B,YAET0pO,EAAQxsO,kBAAkB3B,aAAa,iBAA4B,IAAV/4C,EAAkB,QAAU,QACzF,EAQAymR,EAAI3kQ,UAAU0tQ,OAAS,SAAUjjR,EAAOhD,GACpC,IAAIkpB,EAAQhQ,KACRwuQ,EAAU,CAAEC,WAAY3kR,EAAOvC,QAAQ,GACtCyY,KAAKgnQ,UAQNhnQ,KAAK0uQ,iBAAiB5kR,EAAOhD,GAP7BkZ,KAAK81B,QAAQ,SAAU04O,GAAS,SAAUG,GACjCA,EAAcpnR,QACfyoB,EAAM0+P,iBAAiB5kR,EAAOhD,EAEtC,IAKAkZ,KAAK87F,SACL97F,KAAK+sC,sBAEb,EACAi3N,EAAI3kQ,UAAUqvQ,iBAAmB,SAAU5kR,EAAOhD,GAC9C,IAAIkpB,EAAQhQ,KACR4uQ,EAAe,EAEnB,GADA5uQ,KAAKwkQ,QAAS9rO,EAAAA,EAAAA,IAAO,IAAMwpO,EAAYliQ,KAAKhd,UACxC8tC,EAAAA,EAAAA,IAAM9wB,KAAKwkQ,QACXxkQ,KAAKlW,MAAQA,EACbkW,KAAK8mQ,gBACL9mQ,KAAKurQ,oBAEJ,CACD,IAAI/oK,GAAa1pE,EAAAA,EAAAA,IAAU,kBAAoBoqO,EAAaljQ,KAAKhd,SAAS/K,OAO1E,GANmB,IAAfuqH,IACAosK,EAAe5uQ,KAAKi+K,UAAY,IAEhCntJ,EAAAA,EAAAA,IAAMhqC,KACNA,EAAQ07G,EAAa,GAErBA,EAAa17G,GAASA,EAAQ,GAAKgzB,MAAMhzB,GACzC,OAEe,IAAf07G,IAAqB1xE,EAAAA,EAAAA,IAAM9wB,KAAKwkQ,UAChCxkQ,KAAKwkQ,OAAOjtO,MAAMuiB,QAAU,KAE3BhpB,EAAAA,EAAAA,IAAM9wB,KAAK6kQ,UACZ7kQ,KAAK6kQ,QAAQjuO,UAAUzB,IAAIoyM,GAE/BvnO,KAAKykQ,SAAU/rO,EAAAA,EAAAA,IAAO,IAAMuqO,EAAcjjQ,KAAKomQ,gBAC/CpmQ,KAAKgkK,OAAQ,EACb,IAAI6qG,EAAa7uQ,KAAKwmQ,YAAY18Q,EAAOhD,GACzCkZ,KAAKgkK,OAAQ,EACb,IACI8qG,EADA94I,EAAM,EAEVlsI,EAAM/K,SAAQ,SAAUqM,EAAM4+Q,GAa1B,GAZA8E,EAAc1jR,EAAK4iH,gBAAkB5iH,EAAKqlC,OAAO14C,MAC3C+4C,EAAAA,EAAAA,IAAM1lC,EAAK4iH,gBAAkB5iH,EAAKqlC,UAAWK,EAAAA,EAAAA,IAAMg+O,IAC7B,IAAvBA,EAAY72R,UAAkB64C,EAAAA,EAAAA,IAAM1lC,EAAKqlC,UAAWK,EAAAA,EAAAA,IAAM1lC,EAAKqlC,OAAOm2B,WACnEioN,EAAW7E,MACPl5O,EAAAA,EAAAA,IAAM1lC,EAAKxG,MACXwG,EAAKxG,GAAKuhP,EAAWn2N,EAAMw1P,MAAQ,IAAM7B,GAAiBiL,EAAe5E,GAAO5uR,YAEpFyzR,EAAW7E,GAAO1/M,eAAe,WAAal/D,EAAKxG,IAEvDorB,EAAMlmB,MAAM+8B,OAAQ//B,EAAQkvI,EAAM,EAAG5qI,GACrC4qI,KAEAhmH,EAAMkxL,cAAepwK,EAAAA,EAAAA,IAAM1lC,EAAKqlC,WAAYK,EAAAA,EAAAA,IAAM1lC,EAAKqlC,OAAO14C,MAAO,CACrE,IAAI2jC,EAAKkzP,EAAe5E,EACpBlzO,EAAM9mB,EAAMY,cAAc,MAAO,CACjChsB,GAAIu9Q,EAAcnyP,EAAMw1P,MAAQ,IAAM9pP,EAAIzgC,UAAWkrP,EACrD5vM,MAAO,CAAEi0B,KAAM,WAAY,kBAAmB27K,EAAW,IAAMzqN,KAEnE1L,EAAMs0P,OAAOtsO,aAAalB,EAAK9mB,EAAMs0P,OAAO1sR,SAAUkP,EAAQkjR,IAC9D,IAAIe,EAAS/6P,EAAM64P,cAAc74P,EAAMs0P,OAAQ5oP,EAAGtgC,YAClD40B,EAAMg2I,WAAW+kH,EAAQ3/Q,EAAKm7D,QAAS,SAAUz/D,EACrD,CACJ,IACAkZ,KAAKokQ,MAAMnxB,SAAS47B,EAAY/nR,GAC3BkZ,KAAKgnQ,WACNhnQ,KAAK81B,QAAQ,QAAS,CAAE24O,WAAY3kR,IAEpCkW,KAAK6/F,eAAiB/4G,EACtBkZ,KAAK04B,OAAO5xC,IAGZkZ,KAAKmpQ,kBACLnpQ,KAAK0kQ,QAAS5rO,EAAAA,EAAAA,IAAU,IAAMoqO,EAAaljQ,KAAKomQ,iBAEpDpmQ,KAAKurQ,eACT,CACJ,EAOAvH,EAAI3kQ,UAAUssQ,UAAY,SAAU7kR,GAChC,IAAIkpB,EAAQhQ,KACRqoQ,GAAMvvO,EAAAA,EAAAA,IAAU,IAAMoqO,EAAaljQ,KAAKhd,SAAS8D,GACrD,KAAIgqC,EAAAA,EAAAA,IAAMu3O,GAAV,CAGA,IAAI0G,EAAa,CAAEC,YAAa3G,EAAK4G,aAAcnoR,EAAOS,QAAQ,GAClEyY,KAAK81B,QAAQ,WAAYi5O,GAAY,SAAUG,GAC3C,IAAKA,EAAgB3nR,OAAQ,CACzB,IAAIkpC,GAASiI,EAAAA,EAAAA,IAAO,IAAMytM,EAAWn2N,EAAMw1P,MAAQ,IAAMx1P,EAAM84P,SAAST,EAAIzjR,KAAK8zC,EAAAA,EAAAA,IAAO,IAAMuqO,EAAcjzP,EAAMhtB,WAC7G8tC,EAAAA,EAAAA,IAAML,IACPzgB,EAAM68P,iBAAiBp8O,EAAQ,iBAAkByyO,GAErDlzP,EAAMo0P,MAAM9tI,YAAYxvI,GACpBkpB,EAAMs1P,kBAAqBx+Q,IAAU2nB,MAAMpP,UAAU/I,QAAQoJ,KAAKsQ,EAAMq1P,eAAgBgD,EAAIzjR,MAC5FkC,EAAQ2nB,MAAMpP,UAAU/I,QAAQoJ,KAAKsQ,EAAMq1P,eAAgBgD,EAAIzjR,KAEnE,IAAIuqR,EAAiBn/P,EAAMq1P,eAAe/uQ,QAAQ+xQ,EAAIzjR,IACtDorB,EAAMlmB,MAAM+8B,OAAOsoP,EAAgB,GACnCn/P,EAAMq1P,eAAex+O,OAAOsoP,EAAgB,GAC5Cn/P,EAAM01P,sBACN,IAAI0J,GAAS12O,EAAAA,EAAAA,IAAO,IAAMypO,EAAcnyP,EAAMw1P,MAAQ,IAAMx1P,EAAM84P,SAAST,EAAIzjR,KAAK8zC,EAAAA,EAAAA,IAAO,IAAMypO,EAAanyP,EAAMhtB,WAC/G8tC,EAAAA,EAAAA,IAAMs+O,KACPp/P,EAAM68P,iBAAiBuC,EAAQ,UAAWjpC,IAC1C5tM,EAAAA,EAAAA,IAAO62O,IAEXp/P,EAAM8lB,QAAQ,UAAWo5O,GACrBl/P,EAAMk0P,gBAAkBl0P,EAAMk0P,eAAejsR,OAAS,IACtD+3B,EAAMk0P,eAAep9Q,GAAO4gC,UAC5B1X,EAAMk0P,eAAep9Q,GAAS,KAC9BkpB,EAAMk0P,eAAer9O,OAAO//B,EAAO,IAEnCuhR,EAAIzxO,UAAUM,SAASmrO,IACvBv7Q,EAASA,GAAQgyC,EAAAA,EAAAA,IAAU,IAAMoqO,EAAc,SAAWE,EAAe,IAAKpzP,EAAMhtB,SAAS/K,OAAS,EAAK6O,EAAQ,EAAIA,EACvHkpB,EAAM86P,iBAAkB,EACxB96P,EAAM6vF,aAAe/4G,EACrBkpB,EAAM0oB,OAAO5xC,IAERA,IAAUkpB,EAAM6vF,eACjB/4G,EAAQkpB,EAAM6vF,eACd/4G,EAAQkpB,EAAMq1P,eAAe/uQ,QAAQ0Z,EAAM00P,OAAO10P,EAAM6vF,cAAcj7G,IACtEorB,EAAM2qB,cAAc,CAAEklE,aAAc/4G,GAAS,EAAIA,EAAQkpB,EAAM6vF,eAAgB,GAC/E7vF,EAAMi1P,UAAYj1P,EAAM6vF,cAE5B7vF,EAAM00P,QAAS5rO,EAAAA,EAAAA,IAAU,IAAMoqO,EAAalzP,EAAMo2P,iBAEK,KAAvDttO,EAAAA,EAAAA,IAAU,IAAMoqO,EAAalzP,EAAMhtB,SAAS/K,SAC5C+3B,EAAMw0P,OAAOjtO,MAAMuiB,QAAU,QAEjC9pC,EAAM86P,iBAAkB,CAC5B,CACJ,GA9CA,CA+CJ,EAQA9G,EAAI3kQ,UAAU2tQ,QAAU,SAAUlmR,EAAOvJ,GACrC,IAAIuM,EACAsB,GAAO0tC,EAAAA,EAAAA,IAAU,IAAMoqO,EAAaljQ,KAAKhd,SAAS8D,GACtD,KAAIgqC,EAAAA,EAAAA,IAAM1lC,GAAV,CAOA,IAJI0lC,EAAAA,EAAAA,IAAMvzC,KACNA,GAAQ,GAEZyiB,KAAK6kQ,QAAQjuO,UAAUzB,IAAIoyM,IACb,IAAVhqP,EAGA,GAFA6N,EAAKwrC,UAAUzB,IAAIoyM,GAEE,KADrBz9O,GAAQgvC,EAAAA,EAAAA,IAAU,IAAMoqO,EAAc,SAAW37B,EAAa,IAAKvnO,KAAKykQ,UAC9DxsR,QAAgBmT,EAAKwrC,UAAUM,SAASmrO,IAC9C,GAAc,IAAVv7Q,EACA,IAAK,IAAIqe,EAAIre,EAAQ,EAAGqe,GAAK,EAAGA,IAAK,CACjC,IAAKnF,KAAK0kQ,OAAOv/P,GAAGyxB,UAAUM,SAASqwM,GAAa,CAChDvnO,KAAK04B,OAAOvzB,GACZ,KACJ,CACK,GAAU,IAANA,EACL,IAAK,IAAIikC,EAAItiD,EAAQ,EAAGsiD,EAAIppC,KAAK0kQ,OAAOzsR,OAAQmxD,IAC5C,IAAKppC,KAAK0kQ,OAAOt7N,GAAGxS,UAAUM,SAASqwM,GAAa,CAChDvnO,KAAK04B,OAAO0Q,GACZ,KACJ,CAGZ,MAGA,IAASA,EAAItiD,EAAQ,EAAGsiD,EAAIppC,KAAK0kQ,OAAOzsR,OAAQmxD,IAC5C,IAAKppC,KAAK0kQ,OAAOt7N,GAAGxS,UAAUM,SAASqwM,GAAa,CAChDvnO,KAAK04B,OAAO0Q,GACZ,KACJ,OAIc,IAAjBt/C,EAAM7R,QACX+nB,KAAKhd,QAAQ4zC,UAAUzB,IAAIoyM,QAI/BvnO,KAAKhd,QAAQ4zC,UAAUjB,OAAO4xM,GAC9Bz9O,GAAQgvC,EAAAA,EAAAA,IAAU,IAAMoqO,EAAc,SAAW37B,EAAa,IAAKvnO,KAAKykQ,SACxEr5Q,EAAKwrC,UAAUjB,OAAO4xM,GACD,IAAjBz9O,EAAM7R,QACN+nB,KAAK04B,OAAO5xC,GAGpBkZ,KAAKmpQ,mBACAx7P,EAAAA,EAAAA,IAAkBviB,EAAK6sC,oBACxB7sC,EAAK6sC,kBAAkB3B,aAAa,cAAe,GAAK/4C,GAElC,UAAtByiB,KAAKwpO,cAA4BxpO,KAAKokQ,OACtCpkQ,KAAKokQ,MAAM/xH,iBAnDf,CAqDJ,EACA2xH,EAAI3kQ,UAAUkqQ,UAAY,SAAUt7Q,EAAMlM,EAAOkR,QAC/B,IAAVlR,IAAoBA,EAAQ,WACX,IAAjBkR,IAA2BA,GAAe,GAC9C+M,KAAK/M,aAAeA,EACpB+M,KAAK04B,OAAOzqC,EAAMlM,EACtB,EAQAiiR,EAAI3kQ,UAAUq5B,OAAS,SAAUzqC,EAAMlM,GACnC,IAAIiuB,EAAQhQ,KACR+nQ,EAAY/nQ,KAAKomQ,eACrBpmQ,KAAKykQ,SAAU/rO,EAAAA,EAAAA,IAAO,IAAMuqO,EAAc8E,GAC1C/nQ,KAAK0kQ,QAAS5rO,EAAAA,EAAAA,IAAU,IAAMoqO,EAAa6E,GAC3C/nQ,KAAKumD,SAAU7tB,EAAAA,EAAAA,IAAO,IAAMypO,EAAaniQ,KAAKhd,SAC9Cgd,KAAK4kQ,SAAW5kQ,KAAK0kQ,OAAO1kQ,KAAKilQ,YAC7Bn0O,EAAAA,EAAAA,IAAM9wB,KAAK6/F,eAAkB7/F,KAAK6/F,aAAe,GAAO7/F,KAAK0kQ,OAAOzsR,QAAU+nB,KAAK6/F,cAAiB/lF,MAAM9Z,KAAK6/F,cAC/G7/F,KAAK6/F,aAAe,EAGpB7/F,KAAKqvQ,WAAarvQ,KAAK8oQ,SAAS9oQ,KAAK0kQ,OAAO1kQ,KAAK6/F,cAAcj7G,IAEnE,IAAIyjR,EAAMroQ,KAAK0kQ,OAAOz2Q,IAClB6iC,EAAAA,EAAAA,IAAMu3O,GACNroQ,KAAKqvQ,WAAa,IAGlBrvQ,KAAKorQ,YAAcprQ,KAAK8oQ,SAAST,EAAIzjR,KAEpCksC,EAAAA,EAAAA,IAAM9wB,KAAK4kQ,WAAc5kQ,KAAK4kQ,SAAShuO,UAAUM,SAASopM,IAC3DtgO,KAAK4kQ,SAAShtR,SAASwT,KAAK,GAAGkrC,aAAa,WAAYt2B,KAAK4kQ,SAAS3sO,kBAAkBmJ,aAAa,aAEzG,IAAI6pO,EAAW,CACXlpR,MAAOA,EACPkoH,aAAcjqG,KAAK4kQ,SACnBsG,cAAelrQ,KAAKilQ,UACpBplK,aAAc7/F,KAAK0kQ,OAAO1kQ,KAAK6/F,cAC/B5H,cAAej4F,KAAK6/F,aACpBsrK,iBAAkBr6O,EAAAA,EAAAA,IAAM9wB,KAAKumD,SACsD,MAA/E7tB,EAAAA,EAAAA,IAAO,IAAMypO,EAAcniQ,KAAKwlQ,MAAQ,IAAMxlQ,KAAKqvQ,WAAYrvQ,KAAKumD,SACxE+oN,cAAejH,EACfkH,eAAgBthR,EAChBuhR,kBAAmB1+O,EAAAA,EAAAA,IAAM9wB,KAAKumD,SACsD,MAAhF7tB,EAAAA,EAAAA,IAAO,IAAMypO,EAAcniQ,KAAKwlQ,MAAQ,IAAMxlQ,KAAKorQ,YAAaprQ,KAAKumD,SACzE6+M,SAAUplQ,KAAKolQ,SACfnyQ,aAAc+M,KAAK/M,aACnB1L,QAAQ,GAEPyY,KAAKw/O,WAQNx/O,KAAKwvQ,iBAAiBvhR,EAAM+R,KAAK/M,cAPjC+M,KAAK81B,QAAQ,YAAam1O,GAAU,SAAUwE,GACrCA,EAAWloR,QACZyoB,EAAMw/P,iBAAiBvhR,EAAM+hB,EAAM/c,aAE3C,IAKJ+M,KAAK/M,cAAe,CACxB,EACA+wQ,EAAI3kQ,UAAUmwQ,iBAAmB,SAAUvhR,EAAMgF,GAC7C,GAAoB,kBAAThF,EAAmB,CAC1B,KAAK6iC,EAAAA,EAAAA,IAAM9wB,KAAK0kQ,OAAOz2Q,MAAW+R,KAAK0kQ,OAAOz2Q,GAAM2oC,UAAUM,SAASopM,IACnEtgO,KAAK0kQ,OAAOz2Q,GAAM2oC,UAAUM,SAASqwM,IACrC,IAAK,IAAIpiO,EAAIlX,EAAO,EAAGkX,EAAInF,KAAKlW,MAAM7R,OAAQktB,IAAK,CAC/C,IAA+B,IAA3BnF,KAAKlW,MAAMqb,GAAGpsB,WAAgD,IAA1BinB,KAAKlW,MAAMqb,GAAG/W,QAAkB,CACpEH,EAAOkX,EACP,KACJ,CAEIlX,EAAO,CAEf,CAEJ,GAAI+R,KAAK0kQ,OAAOzsR,OAASgW,GAAQA,GAAQ,IAAM6rB,MAAM7rB,GAGjD,GAFA+R,KAAKilQ,UAAYjlQ,KAAK6/F,aACtB7/F,KAAK4kQ,SAAW5kQ,KAAK0kQ,OAAO1kQ,KAAKilQ,WAC7BjlQ,KAAK0kQ,OAAOz2Q,GAAM2oC,UAAUM,SAASksO,IAAiBpjQ,KAAKyqQ,kBAE3D,GADAzqQ,KAAK4hN,UAAU5hN,KAAK8xE,aAAa9xE,KAAK0kQ,OAAOz2Q,IAAQ,KAAMgF,KACrD69B,EAAAA,EAAAA,IAAM9wB,KAAKlW,QAAUkW,KAAKlW,MAAM7R,OAAS,GAAM+nB,KAAKslQ,iBAAkB,CACxEtlQ,KAAK0kQ,QAAS5rO,EAAAA,EAAAA,IAAU,IAAMmqO,EAAe,KAAOC,EAAaljQ,KAAKwkQ,QACtE,IAAIp5Q,EAAO4U,KAAKlW,MAAMmE,GACtB+R,KAAKlW,MAAM+8B,OAAO54B,EAAM,GACxB+R,KAAKlW,MAAM+8B,OAAO7mB,KAAK0kQ,OAAOzsR,OAAS,EAAG,EAAGmT,GAC7C,IAAIurI,EAAS32H,KAAKqlQ,eAAep3Q,GACjC+R,KAAKqlQ,eAAex+O,OAAO54B,EAAM,GACjC+R,KAAKqlQ,eAAex+O,OAAO7mB,KAAK0kQ,OAAOzsR,OAAS,EAAG,EAAG0+I,EAC1D,OAGA32H,KAAK4hN,UAAU3zN,EAAM,KAAMgF,QAI/B+M,KAAK4hN,UAAU,EAAG,KAAM3uN,EAEhC,MACShF,aAAiBy2P,aACtB1kP,KAAK4hN,UAAU5hN,KAAKspQ,YAAYr7Q,GAAO,KAAMgF,EAErD,EAOA+wQ,EAAI3kQ,UAAUi1H,aAAe,SAAUo7I,GAEnC,IADA,IAAIt8M,EACKjuD,EAAI,EAAGA,EAAInF,KAAK0kQ,OAAOzsR,OAAQktB,IAAK,CAEzC,GAAIuqQ,IADQ1vQ,KAAK0kQ,OAAOv/P,GAAGi8B,aAAa,WACf,CACrBgyB,EAAWjuD,EACX,KACJ,CACJ,CACA,OAAOiuD,CACX,EAQA4wM,EAAI3kQ,UAAUkkG,QAAU,SAAUhmH,GAC9ByiB,KAAKulE,YAAYvlE,KAAKhd,QAASs9O,EAAa/iP,GAC5CyiB,KAAKhd,QAAQszC,aAAa,gBAAiB,GAAK/4C,EACpD,EAMAymR,EAAI3kQ,UAAUytC,eAAiB,WAC3B,OAAO9sC,KAAKotC,aAAa,CAAC,eAAgB,YAC9C,EAOA42N,EAAI3kQ,UAAUu8B,cAAgB,WAC1B,MAAO,KACX,EASAooO,EAAI3kQ,UAAUi8B,kBAAoB,SAAU+G,EAASC,GAEjD,IADA,IAAItyB,EAAQhQ,KACHuO,EAAK,EAAGvoB,EAAKnH,OAAOC,KAAKujD,GAAU9zB,EAAKvoB,EAAG/N,OAAQs2B,IAAM,CAE9D,OADWvoB,EAAGuoB,IAEV,IAAK,SACD62D,EAAAA,EAAAA,IAASplE,KAAKhd,QAAS,CAAE+wD,OAAOjiC,EAAAA,EAAAA,IAAWuwB,EAAQ0R,SACnD,MACJ,IAAK,UACDqxB,EAAAA,EAAAA,IAASplE,KAAKhd,QAAS,CAAEgxD,QAAQliC,EAAAA,EAAAA,IAAWuwB,EAAQ2R,UACpDh0C,KAAKgmQ,kBAAiB,GACtB,MACJ,IAAK,WACD,IAAIlhF,EAAY9kL,KAAKhd,QAAQuvB,cAAc,IAAM2vP,GACxB,KAArB5/N,EAAQniD,WAAoBwtB,EAAAA,EAAAA,IAAkB20B,EAAQniD,WAStD6f,KAAKulE,YAAYvlE,KAAKhd,QAASq/C,EAAQliD,UAAU,IAC5CwtB,EAAAA,EAAAA,IAAkBm3K,IACnB9kL,KAAKulE,YAAYu/G,EAAWziJ,EAAQliD,UAAU,KAVlD6f,KAAKulE,YAAYvlE,KAAKhd,QAASs/C,EAAQniD,UAAU,GACjD6f,KAAKulE,YAAYvlE,KAAKhd,QAASq/C,EAAQliD,UAAU,IAC5CwtB,EAAAA,EAAAA,IAAkBm3K,KACnB9kL,KAAKulE,YAAYu/G,EAAWxiJ,EAAQniD,UAAU,GAC9C6f,KAAKulE,YAAYu/G,EAAWziJ,EAAQliD,UAAU,KAStD,MACJ,IAAK,QACD6f,KAAKwsQ,0BAA0BnqO,EAASC,GACxC,MACJ,IAAK,kBACDtiC,KAAKymQ,eAAepkO,EAAQqkO,iBAC5B,MACJ,IAAK,mBACD1mQ,KAAKmkQ,yBACL,MACJ,IAAK,eACDnkQ,KAAK6/F,aAAev9D,EAAQu9D,aAC5B7/F,KAAK04B,OAAO2J,EAAQw9D,cACpB,MACJ,IAAK,kBACD7/F,KAAK4sO,kBAAkBvqM,EAAQujO,iBAC/B,MACJ,IAAK,YACD5lQ,KAAKimQ,OAAO5jO,EAAQsI,WACpB,MACJ,IAAK,eACD3qC,KAAKokQ,MAAM56B,aAAennM,EAAQmnM,aAClCxpO,KAAKokQ,MAAMrpO,WACX/6B,KAAKmkQ,yBACL,MACJ,IAAK,mBACDnkQ,KAAKgmQ,kBAAiB,GACtBhmQ,KAAK04B,OAAO14B,KAAK6/F,cACjB,MACJ,IAAK,aACG7/F,KAAKokQ,QACLpkQ,KAAKokQ,MAAMt7I,WAAa9oH,KAAK8oH,YAEjC,MACJ,IAAK,mBACD9oH,KAAKurQ,gBACL,MACJ,IAAK,WACGvrQ,KAAKslQ,mBACLtlQ,KAAKkkQ,eAAenlR,SAAQ,SAAUqM,GAClCA,EAAK6nD,SAAWjjC,EAAMijC,QAC1B,IACAjzC,KAAKmrC,WAIrB,CACJ,EAMA64N,EAAI3kQ,UAAUswQ,iBAAmB,WAI7B,GAHI3vQ,KAAK87F,SAAW97F,KAAKkhM,YACrBlhM,KAAKgtC,gBAEJhtC,KAAKkhM,WAiFL,CACD,IAAIilE,EAAWnmQ,KAAKhd,QAAQuvB,cAAc,IAAM0wP,GAC5CjgR,EAAUgd,KAAKhd,QAAQuvB,cAAc,IAAM2wP,EAAc,IAAMb,GAC/Dv7Q,EAAQkZ,KAAKknQ,gBAAgBlkR,EAAQ4B,IACrC6rC,EAASztC,EAAQm3E,UACjBy1M,EAAgB5vQ,KAAKhd,QAAQuvB,cAAc,IAAM4vP,GAAa5vP,cAAc,IAAM8vP,GAAYzqR,SAAS,GACvGi4R,EAAeD,EAAcr+P,WACjCgnB,EAAAA,EAAAA,IAAOv1C,IACPu1C,EAAAA,EAAAA,IAAOq3O,GACP,IAAI3pN,EAAO,CACPhrE,UAAWioR,EAAc,IAAM18B,EAAe,IAAM67B,EAAYz9Q,GAAIuhP,EAAWnmO,KAAKwlQ,MAAQ,IAAM1+Q,GAElGgpR,EAAY9vQ,KAAK4Q,cAAc,OAAQ,CACvC31B,UAAW2nR,EAAUrxP,UAAWkf,EAAQ8F,MAAO,CAAE,KAAQ,kBAC1DllB,UACC0+P,EAAQ/vQ,KAAK4Q,cAAc,MAAO,CAClC31B,UAAW8nR,EAAexxP,UAAWu+P,EAAY9vQ,KAAKukQ,OAAOlzP,YAC9DA,UAECg6C,GADA+H,EAAWpwE,EAAQi1C,kBAAkBmJ,aAAa,iBAC3CphC,KAAK4Q,cAAc,MAAO,CACjC31B,UAAW6nR,EAAUvxP,UAAWw+P,EAChCx5O,MAAO,CAAE68B,SAAUA,EAAU,gBAAiBA,EAAU5I,KAAM,MAAO,gBAAiB23M,EAAcniQ,KAAKwlQ,MAAQ,IAAM1+Q,EAAO,gBAAiB,OAAQ,gBAAiB,YAE5Kq/Q,EAASnuO,aAAah4B,KAAK4Q,cAAc,MAAOq1C,GAAOkgN,EAASvuR,SAASkP,EAAQ,IACjFkZ,KAAKhd,QAAQuvB,cAAc,IAAM2wP,EAAc,IAAMb,GAAYlxP,YAAYk6C,GACzE2kN,EAAShwQ,KAAK4Q,cAAc,MAAO,CAAEW,UAAWs+P,IACpD7vQ,KAAKhd,QAAQuvB,cAAc,IAAM4vP,GAAa5vP,cAAc,IAAM8vP,GAAYlxP,YAAY6+P,EAC9F,MA3GI,GAAIhwQ,KAAKhd,QAAQuvB,cAAc,IAAM2wP,EAAc,IAAMb,GAAa,EAClE9pO,EAAAA,EAAAA,IAAOv4B,KAAKhd,QAAQuvB,cAAc,IAAM2wP,EAAc,IAAMb,GAAYzqR,SAAS,KACjF2gD,EAAAA,EAAAA,IAAOv4B,KAAKhd,QAAQuvB,cAAc,IAAM4vP,GAAa5vP,cAAc,IAAM8vP,GAAYzqR,SAAS,IAC9F,IAAIwT,EAAO4U,KAAKlW,MAAMkW,KAAK6/F,cACvB18E,GAAO2N,EAAAA,EAAAA,IAAM1lC,EAAKqlC,UAAWK,EAAAA,EAAAA,IAAM1lC,EAAKqlC,OAAOs2B,cAAiB,GAAK37D,EAAKqlC,OAAOs2B,aACjF49H,GAAO7zJ,EAAAA,EAAAA,IAAM1lC,EAAKqlC,UAAWK,EAAAA,EAAAA,IAAM1lC,EAAKqlC,OAAOm2B,SAAY,GAAKx7D,EAAKqlC,OAAOm2B,QAC5E7uE,EAAOqT,EAAK4iH,gBAAkB5iH,EAAKqlC,OAAO14C,KAC1Ck4R,EAAUjwQ,KAAK4Q,cAAc,MAAO,CAAE31B,UAAW2nR,EAAUrsO,MAAO,CAAE,KAAQ,mBAC3EzF,EAAAA,EAAAA,IAAM/4C,EAAKo+C,SAIZn2B,KAAKynQ,kBAAkBwI,EAASl4R,EAAMioB,KAAK6/F,cAH3CowK,EAAQ9+P,YAAYp5B,GAKxB,IACI0rH,EAAOzjG,KAAK4Q,cAAc,OAAQ,CAClC31B,UAAWsnR,EAAY,IAAMS,EAAe,IAAMR,EAAW,IAAMr/O,EAAM,IAAMwhK,IAE/EurF,EAASlwQ,KAAK4Q,cAAc,MAAO,CAAE31B,UAAW8nR,IACpDmN,EAAO/+P,YAAY8+P,GACL,KAATl4R,QAAwBmD,IAATnD,GAA+B,KAAR4sM,GAC1B,SAARxhK,GAA0B,QAARA,EACnB+sP,EAAOl4O,aAAayrE,EAAMysK,EAAOj4O,mBAGjCi4O,EAAO/+P,YAAYsyF,GAEhBwsK,EACPjwQ,KAAKikQ,aAAc,IAGF,KAARt/E,EAAcsrF,EAAUxsK,KACpBA,KACTlrE,EAAAA,EAAAA,IAAO03O,GACPC,EAAO/+P,YAAYsyF,GACnBzjG,KAAKikQ,aAAc,GAG3B,IAAI7wM,GAAWtiC,EAAAA,EAAAA,IAAM1lC,EAAKgoE,UAAY,KAAOhoE,EAAKgoE,SAASh4E,WACvD+0R,EAAW/kR,EAAKrS,SAAY,CAAC,EAAI,CAAEq6E,SAAUA,EAAU,gBAAiBA,EAAU5I,KAAM,MAAO,gBAAiB,OAAQ,gBAAiB,SAC7I0lN,EAAO/+P,YAAYnR,KAAKukQ,OAAOnzP,WAAU,IACzC,IAAIg/P,EAASpwQ,KAAK4Q,cAAc,MAAO,CAAE31B,UAAW6nR,EAAUvsO,MAAO45O,IACrEC,EAAOj/P,YAAY++P,GACP,QAAR/sP,GAAyB,WAARA,GACjBnjB,KAAKhd,QAAQ4zC,UAAUzB,IAAI,mBAE/Bn1B,KAAKhd,QAAQuvB,cAAc,IAAM2wP,EAAc,IAAMb,GAAYlxP,YAAYi/P,GAC7E,IAAIJ,EAAShwQ,KAAK4Q,cAAc,OAC5BixC,EAAMz2D,EAAKm7D,QACXijN,OAAS,EACb,GAAmB,kBAAR3nN,IAAoB/wB,EAAAA,EAAAA,IAAM+wB,EAAItwC,WAIrC,GAHmB,kBAARswC,GAAoB7hD,KAAKymD,sBAChC5E,EAAMsD,EAAAA,GAAmBI,SAAS1D,IAEvB,MAAXA,EAAI,IAAyB,MAAXA,EAAI,GACtB,GAAIj/C,SAASkO,iBAAiB+wC,GAAK5pE,OAAQ,CACvC,IAAI4xR,EAASjnQ,SAAS2P,cAAcsvC,GACpC2nN,EAASK,EAAOx4P,UAAU4pC,OAC1B+0N,EAAO7+P,YAAY04P,GACnBA,EAAOtyO,MAAMuiB,QAAU,EAC3B,MAEI95C,KAAK0pQ,eAAesG,EAAQnuN,EAAK,UAAW7hD,KAAK6/F,mBAIrD7/F,KAAK0pQ,eAAesG,EAAQnuN,EAAK,UAAW7hD,KAAK6/F,mBAIrDmwK,EAAO7+P,YAAY0wC,IAElB/wB,EAAAA,EAAAA,IAAM04O,KAC2C,IAA9CxpQ,KAAKg1O,YAAY1+O,QAAQurD,EAAIzmE,aAC7B4kB,KAAKg1O,YAAYv1P,KAAKoiE,EAAIzmE,YAGlC4kB,KAAKhd,QAAQuvB,cAAc,IAAM4zN,EAAW,IAAMk8B,GAAYlxP,YAAY6+P,EAC9E,CA8BAhwQ,KAAK87F,SACL97F,KAAK+sC,sBAEb,EAMAi3N,EAAI3kQ,UAAU8kQ,uBAAyB,WACnC,IAAIz7B,GAAYhwM,EAAAA,EAAAA,IAAO,IAAMwqO,EAAc,IAAME,EAAe,IAAMf,EAAYriQ,KAAKhd,WAClF8tC,EAAAA,EAAAA,IAAM43M,IAAc1oO,KAAKyqQ,kBAC1BzqQ,KAAK04B,OAAO14B,KAAKspQ,YAAY5gC,IAEjC1oO,KAAK0lQ,qBACT,EACA/lO,EAAW,EACPpB,EAAAA,EAAAA,IAAW,GAAIwlO,IAChBC,EAAI3kQ,UAAW,aAAS,GAC3BsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,SACV8lO,EAAI3kQ,UAAW,aAAS,GAC3BsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,SACV8lO,EAAI3kQ,UAAW,cAAU,GAC5BsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,KACV8lO,EAAI3kQ,UAAW,gBAAY,GAC9BsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,IACV8lO,EAAI3kQ,UAAW,oBAAgB,GAClCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,QACV8lO,EAAI3kQ,UAAW,uBAAmB,GACrCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,YACV8lO,EAAI3kQ,UAAW,wBAAoB,GACtCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,eACV8lO,EAAI3kQ,UAAW,oBAAgB,GAClCsgC,EAAW,EACPzB,EAAAA,EAAAA,IAAS,YACV8lO,EAAI3kQ,UAAW,cAAU,GAC5BsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV8lO,EAAI3kQ,UAAW,yBAAqB,GACvCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV8lO,EAAI3kQ,UAAW,2BAAuB,GACzCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV8lO,EAAI3kQ,UAAW,uBAAmB,GACrCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV8lO,EAAI3kQ,UAAW,wBAAoB,GACtCsgC,EAAW,EACPzB,EAAAA,EAAAA,OACD8lO,EAAI3kQ,UAAW,kBAAc,GAChCsgC,EAAW,EACPzB,EAAAA,EAAAA,OACD8lO,EAAI3kQ,UAAW,gBAAY,GAC9BsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV8lO,EAAI3kQ,UAAW,wBAAoB,GACtCsgC,EAAW,EACPzB,EAAAA,EAAAA,KAAS,IACV8lO,EAAI3kQ,UAAW,sBAAkB,GACpCsgC,EAAW,EACPrB,EAAAA,EAAAA,IAAQ,CAAC,EAAGwlO,IACbE,EAAI3kQ,UAAW,iBAAa,GAC/BsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDw0P,EAAI3kQ,UAAW,eAAW,GAC7BsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDw0P,EAAI3kQ,UAAW,cAAU,GAC5BsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDw0P,EAAI3kQ,UAAW,aAAS,GAC3BsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDw0P,EAAI3kQ,UAAW,iBAAa,GAC/BsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDw0P,EAAI3kQ,UAAW,gBAAY,GAC9BsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDw0P,EAAI3kQ,UAAW,gBAAY,GAC9BsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDw0P,EAAI3kQ,UAAW,eAAW,GAC7BsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDw0P,EAAI3kQ,UAAW,mBAAe,GACjCsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDw0P,EAAI3kQ,UAAW,gBAAY,GAC9BsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDw0P,EAAI3kQ,UAAW,eAAW,GAC7BsgC,EAAW,EACPnwB,EAAAA,EAAAA,OACDw0P,EAAI3kQ,UAAW,iBAAa,GAC/B2kQ,EAAMrkO,EAAW,CACbhB,EAAAA,IACDqlO,EAEP,CAhuEyB,CAguEvB35N,EAAAA,cC54EE9K,EAAyC,WACzC,IAAIC,EAAgB,SAAUtpB,EAAGlR,GAI7B,OAHAw6B,EAAgB3gD,OAAOugB,gBAClB,CAAEqgC,UAAW,cAAgBhxB,OAAS,SAAUyH,EAAGlR,GAAKkR,EAAEupB,UAAYz6B,CAAG,GAC1E,SAAUkR,EAAGlR,GAAK,IAAK,IAAI6Z,KAAK7Z,EAAOA,EAAEyK,eAAeoP,KAAI3I,EAAE2I,GAAK7Z,EAAE6Z,GAAI,EACtE2gB,EAActpB,EAAGlR,EAC5B,EACA,OAAO,SAAUkR,EAAGlR,GAEhB,SAAS06B,IAAO1/B,KAAKC,YAAciW,CAAG,CADtCspB,EAActpB,EAAGlR,GAEjBkR,EAAE7W,UAAkB,OAAN2F,EAAanmB,OAAOqhB,OAAO8E,IAAM06B,EAAGrgC,UAAY2F,EAAE3F,UAAW,IAAIqgC,EACnF,CACJ,CAZ6C,GAsBzCprC,EAA8B,SAAUmX,GAExC,SAASnX,EAAanS,GAClB,IAAI6tB,EAAQvE,EAAO/L,KAAKM,KAAM7d,IAAU6d,KAQxC,OAPAgQ,EAAM+qP,kBAAmB,EACzB/qP,EAAMytP,sBAAuB,EAC7BztP,EAAM6tP,cAAgB,CAAE,SAAY,WACpC7tP,EAAM2wP,uBAAyB,KAC/B3wP,EAAM20O,cAAgB,KACtB30O,EAAMluB,iBAAkB,EACxBkuB,EAAM8/G,QAAU,GACT9/G,CACX,CAUA,OArBAuvB,EAAUjrC,EAAcmX,GAYxBnX,EAAa+K,UAAUisC,OAAS,WAC5B,KAAMtrC,KAAKhd,UAAYgd,KAAK+6P,kBAAqB/6P,KAAKq6B,aAAgBr6B,KAAKg7P,oBAKvE,OAAOoE,EAAAA,cAAoB,MAAOp/P,KAAK28P,uBAAwB,GAAGh8Q,OAAOqf,KAAK7d,MAAMvK,SAAUooB,KAAK8vH,UAJnGrkH,EAAOpM,UAAUisC,OAAO5rC,KAAKM,MAC7BA,KAAK+6P,kBAAmB,CAKhC,EACOzmQ,CACX,CAvBkC,CAuBhC0vQ,IAEF/D,EAAAA,EAAAA,IAAY3rQ,EAAc,CAAComQ,EAAAA,GAAe0E,EAAAA,kCC/C1Cj6N,EAAO3gD,QAAU,EAAjB2gD,yCCEA,IAAIkrO,EAAQ9rR,EAAQ,MAChB+rR,EAAS/rR,EAAQ,MACjBgsR,EAAUhsR,EAAQ,MAClBisR,EAAWjsR,EAAQ,MACnBksR,EAAgBlsR,EAAQ,MACxBmsR,EAAensR,EAAQ,MACvBosR,EAAkBpsR,EAAQ,MAC1BqsR,EAAcrsR,EAAQ,MAE1B4gD,EAAO3gD,QAAU,SAAoBuB,GACnC,OAAO,IAAIoV,SAAQ,SAA4BuC,EAAStC,GACtD,IAAIy1Q,EAAc9qR,EAAOF,KACrBirR,EAAiB/qR,EAAOwU,QACxBi3B,EAAezrC,EAAOyrC,aAEtB6+O,EAAMU,WAAWF,WACZC,EAAe,gBAGxB,IAAIn2Q,EAAU,IAAIu0B,eAGlB,GAAInpC,EAAOirR,KAAM,CACf,IAAIC,EAAWlrR,EAAOirR,KAAKC,UAAY,GACnCh5Q,EAAWlS,EAAOirR,KAAK/4Q,SAAWi5Q,SAASzsL,mBAAmB1+F,EAAOirR,KAAK/4Q,WAAa,GAC3F64Q,EAAe91Q,cAAgB,SAAWm2Q,KAAKF,EAAW,IAAMh5Q,EAClE,CAEA,IAAIm5Q,EAAWX,EAAc1qR,EAAOsrR,QAAStrR,EAAOS,KAMpD,SAAS8qR,IACP,GAAK32Q,EAAL,CAIA,IAAI61B,EAAkB,0BAA2B71B,EAAU+1Q,EAAa/1Q,EAAQg2B,yBAA2B,KAGvGvpC,EAAW,CACbvB,KAHkB2rC,GAAiC,SAAjBA,GAA6C,SAAjBA,EACvC72B,EAAQvT,SAA/BuT,EAAQy1B,aAGR/0B,OAAQV,EAAQU,OAChBuQ,WAAYjR,EAAQiR,WACpBrR,QAASi2B,EACTzqC,OAAQA,EACR4U,QAASA,GAGX21Q,EAAO5yQ,EAAStC,EAAQhU,GAGxBuT,EAAU,IAjBV,CAkBF,CAkEA,GA5FAA,EAAQpa,KAAKwF,EAAOmrC,OAAO9zB,cAAeozQ,EAASY,EAAUrrR,EAAOuiB,OAAQviB,EAAOwrR,mBAAmB,GAGtG52Q,EAAQsoO,QAAUl9O,EAAOk9O,QAyBrB,cAAetoO,EAEjBA,EAAQ22Q,UAAYA,EAGpB32Q,EAAQw0B,mBAAqB,WACtBx0B,GAAkC,IAAvBA,EAAQ21B,aAQD,IAAnB31B,EAAQU,QAAkBV,EAAQ62Q,aAAwD,IAAzC72Q,EAAQ62Q,YAAYl7Q,QAAQ,WAKjF4Z,WAAWohQ,EACb,EAIF32Q,EAAQ+0B,QAAU,WACX/0B,IAILS,EAAOw1Q,EAAY,kBAAmB7qR,EAAQ,eAAgB4U,IAG9DA,EAAU,KACZ,EAGAA,EAAQi1B,QAAU,WAGhBx0B,EAAOw1Q,EAAY,gBAAiB7qR,EAAQ,KAAM4U,IAGlDA,EAAU,IACZ,EAGAA,EAAQ82Q,UAAY,WAClB,IAAIC,EAAsB,cAAgB3rR,EAAOk9O,QAAU,cACvDl9O,EAAO2rR,sBACTA,EAAsB3rR,EAAO2rR,qBAE/Bt2Q,EAAOw1Q,EACLc,EACA3rR,EACAA,EAAO4rR,cAAgB5rR,EAAO4rR,aAAaC,oBAAsB,YAAc,eAC/Ej3Q,IAGFA,EAAU,IACZ,EAKI01Q,EAAMwB,uBAAwB,CAEhC,IAAIC,GAAa/rR,EAAOgsR,iBAAmBpB,EAAgBS,KAAcrrR,EAAOisR,eAC9EzB,EAAQ5tJ,KAAK58H,EAAOisR,qBACpB92R,EAEE42R,IACFhB,EAAe/qR,EAAOksR,gBAAkBH,EAE5C,CAGI,qBAAsBn3Q,GACxB01Q,EAAMtxR,QAAQ+xR,GAAgB,SAA0BnzQ,EAAK3e,GAChC,qBAAhB6xR,GAAqD,iBAAtB7xR,EAAIX,qBAErCyyR,EAAe9xR,GAGtB2b,EAAQo1B,iBAAiB/wC,EAAK2e,EAElC,IAIG0yQ,EAAM7iQ,YAAYznB,EAAOgsR,mBAC5Bp3Q,EAAQo3Q,kBAAoBhsR,EAAOgsR,iBAIjCvgP,GAAiC,SAAjBA,IAClB72B,EAAQ62B,aAAezrC,EAAOyrC,cAIS,oBAA9BzrC,EAAOmsR,oBAChBv3Q,EAAQkJ,iBAAiB,WAAY9d,EAAOmsR,oBAIP,oBAA5BnsR,EAAO8pC,kBAAmCl1B,EAAQm1B,QAC3Dn1B,EAAQm1B,OAAOjsB,iBAAiB,WAAY9d,EAAO8pC,kBAGjD9pC,EAAOU,aAETV,EAAOU,YAAYS,QAAQC,MAAK,SAAoBI,GAC7CoT,IAILA,EAAQ61C,QACRp1C,EAAO7T,GAEPoT,EAAU,KACZ,IAGGk2Q,IACHA,EAAc,MAIhBl2Q,EAAQo0B,KAAK8hP,EACf,GACF,qCC1LA,IAAIR,EAAQ9rR,EAAQ,MAChBya,EAAOza,EAAQ,MACf4tR,EAAQ5tR,EAAQ,MAChB6tR,EAAc7tR,EAAQ,KAS1B,SAAS6nB,EAAeimQ,GACtB,IAAIvxR,EAAU,IAAIqxR,EAAME,GACpB5xR,EAAWue,EAAKmzQ,EAAM9yQ,UAAU1E,QAAS7Z,GAQ7C,OALAuvR,EAAM1hQ,OAAOluB,EAAU0xR,EAAM9yQ,UAAWve,GAGxCuvR,EAAM1hQ,OAAOluB,EAAUK,GAEhBL,CACT,CAGA,IAAI4Z,EAAQ+R,EAtBG7nB,EAAQ,MAyBvB8V,EAAM83Q,MAAQA,EAGd93Q,EAAM6F,OAAS,SAAgBoyQ,GAC7B,OAAOlmQ,EAAegmQ,EAAY/3Q,EAAMC,SAAUg4Q,GACpD,EAGAj4Q,EAAMgyL,OAAS9nM,EAAQ,MACvB8V,EAAMhU,YAAc9B,EAAQ,MAC5B8V,EAAMqtN,SAAWnjO,EAAQ,MAGzB8V,EAAM9T,IAAM,SAAagsR,GACvB,OAAOp3Q,QAAQ5U,IAAIgsR,EACrB,EACAl4Q,EAAMm4Q,OAASjuR,EAAQ,MAGvB8V,EAAMo4Q,aAAeluR,EAAQ,MAE7B4gD,EAAO3gD,QAAU6V,EAGjB8qC,EAAO3gD,QAAP2gD,QAAyB9qC,iCC/CzB,SAASgyL,EAAO/4L,GACd0M,KAAK1M,QAAUA,CACjB,CAEA+4L,EAAOhtL,UAAUjkB,SAAW,WAC1B,MAAO,UAAY4kB,KAAK1M,QAAU,KAAO0M,KAAK1M,QAAU,GAC1D,EAEA+4L,EAAOhtL,UAAUqzQ,YAAa,EAE9BvtO,EAAO3gD,QAAU6nM,qCChBjB,IAAIA,EAAS9nM,EAAQ,MAQrB,SAAS8B,EAAYssR,GACnB,GAAwB,oBAAbA,EACT,MAAM,IAAIhzQ,UAAU,gCAGtB,IAAIizQ,EACJ5yQ,KAAK9Y,QAAU,IAAIiU,SAAQ,SAAyBuC,GAClDk1Q,EAAiBl1Q,CACnB,IAEA,IAAIhX,EAAQsZ,KACZ2yQ,GAAS,SAAgBr/Q,GACnB5M,EAAMkF,SAKVlF,EAAMkF,OAAS,IAAIygM,EAAO/4L,GAC1Bs/Q,EAAelsR,EAAMkF,QACvB,GACF,CAKAvF,EAAYgZ,UAAUwzQ,iBAAmB,WACvC,GAAI7yQ,KAAKpU,OACP,MAAMoU,KAAKpU,MAEf,EAMAvF,EAAYF,OAAS,WACnB,IAAIoB,EAIJ,MAAO,CACLb,MAJU,IAAIL,GAAY,SAAkB4vB,GAC5C1uB,EAAS0uB,CACX,IAGE1uB,OAAQA,EAEZ,EAEA49C,EAAO3gD,QAAU6B,iCCtDjB8+C,EAAO3gD,QAAU,SAAkBjH,GACjC,SAAUA,IAASA,EAAMm1R,WAC3B,qCCFA,IAAIrC,EAAQ9rR,EAAQ,MAChBisR,EAAWjsR,EAAQ,MACnBuuR,EAAqBvuR,EAAQ,MAC7BwuR,EAAkBxuR,EAAQ,MAC1B6tR,EAAc7tR,EAAQ,KACtBy9N,EAAYz9N,EAAQ,MAEpBgT,EAAayqN,EAAUzqN,WAM3B,SAAS46Q,EAAMG,GACbtyQ,KAAK1F,SAAWg4Q,EAChBtyQ,KAAKtF,aAAe,CAClBC,QAAS,IAAIm4Q,EACb1rR,SAAU,IAAI0rR,EAElB,CAOAX,EAAM9yQ,UAAU1E,QAAU,SAAiB5U,GAGnB,kBAAXA,GACTA,EAASsY,UAAU,IAAM,CAAC,GACnB7X,IAAM6X,UAAU,GAEvBtY,EAASA,GAAU,CAAC,GAGtBA,EAASqsR,EAAYpyQ,KAAK1F,SAAUvU,IAGzBmrC,OACTnrC,EAAOmrC,OAASnrC,EAAOmrC,OAAO7yC,cACrB2hB,KAAK1F,SAAS42B,OACvBnrC,EAAOmrC,OAASlxB,KAAK1F,SAAS42B,OAAO7yC,cAErC0H,EAAOmrC,OAAS,MAGlB,IAAIygP,EAAe5rR,EAAO4rR,kBAELz2R,IAAjBy2R,GACF3vD,EAAUgxD,cAAcrB,EAAc,CACpCsB,kBAAmB17Q,EAAWo6Q,aAAap6Q,EAAW27Q,QAAS,SAC/DC,kBAAmB57Q,EAAWo6Q,aAAap6Q,EAAW27Q,QAAS,SAC/DtB,oBAAqBr6Q,EAAWo6Q,aAAap6Q,EAAW27Q,QAAS,WAChE,GAIL,IAAIE,EAA0B,GAC1BC,GAAiC,EACrCrzQ,KAAKtF,aAAaC,QAAQ5b,SAAQ,SAAoCu0R,GACjC,oBAAxBA,EAAYC,UAA0D,IAAhCD,EAAYC,QAAQxtR,KAIrEstR,EAAiCA,GAAkCC,EAAYE,YAE/EJ,EAAwB90Q,QAAQg1Q,EAAYG,UAAWH,EAAYI,UACrE,IAEA,IAKIxsR,EALAysR,EAA2B,GAO/B,GANA3zQ,KAAKtF,aAAatT,SAASrI,SAAQ,SAAkCu0R,GACnEK,EAAyBl0R,KAAK6zR,EAAYG,UAAWH,EAAYI,SACnE,KAIKL,EAAgC,CACnC,IAAIO,EAAQ,CAACb,OAAiB73R,GAM9B,IAJAuzB,MAAMpP,UAAUf,QAAQY,MAAM00Q,EAAOR,GACrCQ,EAAQA,EAAMjzR,OAAOgzR,GAErBzsR,EAAUiU,QAAQuC,QAAQ3X,GACnB6tR,EAAM37R,QACXiP,EAAUA,EAAQC,KAAKysR,EAAMnpQ,QAASmpQ,EAAMnpQ,SAG9C,OAAOvjB,CACT,CAIA,IADA,IAAI2sR,EAAY9tR,EACTqtR,EAAwBn7R,QAAQ,CACrC,IAAI67R,EAAcV,EAAwB3oQ,QACtCspQ,EAAaX,EAAwB3oQ,QACzC,IACEopQ,EAAYC,EAAYD,EAC1B,CAAE,MAAOzyR,GACP2yR,EAAW3yR,GACX,KACF,CACF,CAEA,IACE8F,EAAU6rR,EAAgBc,EAC5B,CAAE,MAAOzyR,GACP,OAAO+Z,QAAQC,OAAOha,EACxB,CAEA,KAAOuyR,EAAyB17R,QAC9BiP,EAAUA,EAAQC,KAAKwsR,EAAyBlpQ,QAASkpQ,EAAyBlpQ,SAGpF,OAAOvjB,CACT,EAEAirR,EAAM9yQ,UAAU20Q,OAAS,SAAgBjuR,GAEvC,OADAA,EAASqsR,EAAYpyQ,KAAK1F,SAAUvU,GAC7ByqR,EAASzqR,EAAOS,IAAKT,EAAOuiB,OAAQviB,EAAOwrR,kBAAkB96Q,QAAQ,MAAO,GACrF,EAGA45Q,EAAMtxR,QAAQ,CAAC,SAAU,MAAO,OAAQ,YAAY,SAA6BmyC,GAE/EihP,EAAM9yQ,UAAU6xB,GAAU,SAAS1qC,EAAKT,GACtC,OAAOia,KAAKrF,QAAQy3Q,EAAYrsR,GAAU,CAAC,EAAG,CAC5CmrC,OAAQA,EACR1qC,IAAKA,EACLX,MAAOE,GAAU,CAAC,GAAGF,OAEzB,CACF,IAEAwqR,EAAMtxR,QAAQ,CAAC,OAAQ,MAAO,UAAU,SAA+BmyC,GAErEihP,EAAM9yQ,UAAU6xB,GAAU,SAAS1qC,EAAKX,EAAME,GAC5C,OAAOia,KAAKrF,QAAQy3Q,EAAYrsR,GAAU,CAAC,EAAG,CAC5CmrC,OAAQA,EACR1qC,IAAKA,EACLX,KAAMA,IAEV,CACF,IAEAs/C,EAAO3gD,QAAU2tR,qCCjJjB,IAAI9B,EAAQ9rR,EAAQ,MAEpB,SAASuuR,IACP9yQ,KAAK22M,SAAW,EAClB,CAUAm8D,EAAmBzzQ,UAAUzE,IAAM,SAAa64Q,EAAWC,EAAUhzQ,GAOnE,OANAV,KAAK22M,SAASl3N,KAAK,CACjBg0R,UAAWA,EACXC,SAAUA,EACVF,cAAa9yQ,GAAUA,EAAQ8yQ,YAC/BD,QAAS7yQ,EAAUA,EAAQ6yQ,QAAU,OAEhCvzQ,KAAK22M,SAAS1+N,OAAS,CAChC,EAOA66R,EAAmBzzQ,UAAU40Q,MAAQ,SAAervR,GAC9Cob,KAAK22M,SAAS/xN,KAChBob,KAAK22M,SAAS/xN,GAAM,KAExB,EAUAkuR,EAAmBzzQ,UAAUtgB,QAAU,SAAiB0gB,GACtD4wQ,EAAMtxR,QAAQihB,KAAK22M,UAAU,SAAwBh/L,GACzC,OAANA,GACFlY,EAAGkY,EAEP,GACF,EAEAwtB,EAAO3gD,QAAUsuR,qCCnDjB,IAAIoB,EAAgB3vR,EAAQ,MACxB4vR,EAAc5vR,EAAQ,MAW1B4gD,EAAO3gD,QAAU,SAAuB6sR,EAAS+C,GAC/C,OAAI/C,IAAY6C,EAAcE,GACrBD,EAAY9C,EAAS+C,GAEvBA,CACT,qCCjBA,IAAIC,EAAe9vR,EAAQ,MAY3B4gD,EAAO3gD,QAAU,SAAqB8O,EAASvN,EAAQu+E,EAAM3pE,EAASvT,GACpE,IAAIhG,EAAQ,IAAIJ,MAAMsS,GACtB,OAAO+gR,EAAajzR,EAAO2E,EAAQu+E,EAAM3pE,EAASvT,EACpD,qCCfA,IAAIipR,EAAQ9rR,EAAQ,MAChBwC,EAAgBxC,EAAQ,MACxBmjO,EAAWnjO,EAAQ,MACnB+V,EAAW/V,EAAQ,KAKvB,SAAS+vR,EAA6BvuR,GAChCA,EAAOU,aACTV,EAAOU,YAAYosR,kBAEvB,CAQA1tO,EAAO3gD,QAAU,SAAyBuB,GA8BxC,OA7BAuuR,EAA6BvuR,GAG7BA,EAAOwU,QAAUxU,EAAOwU,SAAW,CAAC,EAGpCxU,EAAOF,KAAOkB,EAAc2Y,KAC1B3Z,EACAA,EAAOF,KACPE,EAAOwU,QACPxU,EAAOwuR,kBAITxuR,EAAOwU,QAAU81Q,EAAMniQ,MACrBnoB,EAAOwU,QAAQC,QAAU,CAAC,EAC1BzU,EAAOwU,QAAQxU,EAAOmrC,SAAW,CAAC,EAClCnrC,EAAOwU,SAGT81Q,EAAMtxR,QACJ,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,QAAS,WAClD,SAA2BmyC,UAClBnrC,EAAOwU,QAAQ22B,EACxB,KAGYnrC,EAAOyuR,SAAWl6Q,EAASk6Q,SAE1BzuR,GAAQoB,MAAK,SAA6BC,GAWvD,OAVAktR,EAA6BvuR,GAG7BqB,EAASvB,KAAOkB,EAAc2Y,KAC5B3Z,EACAqB,EAASvB,KACTuB,EAASmT,QACTxU,EAAO0uR,mBAGFrtR,CACT,IAAG,SAA4BwE,GAe7B,OAdK87N,EAAS97N,KACZ0oR,EAA6BvuR,GAGzB6F,GAAUA,EAAOxE,WACnBwE,EAAOxE,SAASvB,KAAOkB,EAAc2Y,KACnC3Z,EACA6F,EAAOxE,SAASvB,KAChB+F,EAAOxE,SAASmT,QAChBxU,EAAO0uR,qBAKNt5Q,QAAQC,OAAOxP,EACxB,GACF,iCCrEAu5C,EAAO3gD,QAAU,SAAsBpD,EAAO2E,EAAQu+E,EAAM3pE,EAASvT,GA4BnE,OA3BAhG,EAAM2E,OAASA,EACXu+E,IACFljF,EAAMkjF,KAAOA,GAGfljF,EAAMuZ,QAAUA,EAChBvZ,EAAMgG,SAAWA,EACjBhG,EAAMqxR,cAAe,EAErBrxR,EAAMgmG,OAAS,WACb,MAAO,CAEL9zF,QAAS0M,KAAK1M,QACdlb,KAAM4nB,KAAK5nB,KAEXyQ,YAAamX,KAAKnX,YAClBkvE,OAAQ/3D,KAAK+3D,OAEb28M,SAAU10Q,KAAK00Q,SACfC,WAAY30Q,KAAK20Q,WACjBC,aAAc50Q,KAAK40Q,aACnBpkQ,MAAOxQ,KAAKwQ,MAEZzqB,OAAQia,KAAKja,OACbu+E,KAAMtkE,KAAKskE,KAEf,EACOljF,CACT,oCCvCA,IAAIivR,EAAQ9rR,EAAQ,MAUpB4gD,EAAO3gD,QAAU,SAAqBqwR,EAASC,GAE7CA,EAAUA,GAAW,CAAC,EACtB,IAAI/uR,EAAS,CAAC,EAEVgvR,EAAuB,CAAC,MAAO,SAAU,QACzCC,EAA0B,CAAC,UAAW,OAAQ,QAAS,UACvDC,EAAuB,CACzB,UAAW,mBAAoB,oBAAqB,mBACpD,UAAW,iBAAkB,kBAAmB,UAAW,eAAgB,iBAC3E,iBAAkB,mBAAoB,qBAAsB,aAC5D,mBAAoB,gBAAiB,eAAgB,YAAa,YAClE,aAAc,cAAe,aAAc,oBAEzCC,EAAkB,CAAC,kBAEvB,SAASC,EAAeh3O,EAAQh4C,GAC9B,OAAIkqR,EAAMzoL,cAAczpD,IAAWkyO,EAAMzoL,cAAczhG,GAC9CkqR,EAAMniQ,MAAMiwB,EAAQh4C,GAClBkqR,EAAMzoL,cAAczhG,GACtBkqR,EAAMniQ,MAAM,CAAC,EAAG/nB,GACdkqR,EAAM3hQ,QAAQvoB,GAChBA,EAAOkX,QAETlX,CACT,CAEA,SAASivR,EAAoBjiQ,GACtBk9P,EAAM7iQ,YAAYsnQ,EAAQ3hQ,IAEnBk9P,EAAM7iQ,YAAYqnQ,EAAQ1hQ,MACpCptB,EAAOotB,GAAQgiQ,OAAej6R,EAAW25R,EAAQ1hQ,KAFjDptB,EAAOotB,GAAQgiQ,EAAeN,EAAQ1hQ,GAAO2hQ,EAAQ3hQ,GAIzD,CAEAk9P,EAAMtxR,QAAQg2R,GAAsB,SAA0B5hQ,GACvDk9P,EAAM7iQ,YAAYsnQ,EAAQ3hQ,MAC7BptB,EAAOotB,GAAQgiQ,OAAej6R,EAAW45R,EAAQ3hQ,IAErD,IAEAk9P,EAAMtxR,QAAQi2R,EAAyBI,GAEvC/E,EAAMtxR,QAAQk2R,GAAsB,SAA0B9hQ,GACvDk9P,EAAM7iQ,YAAYsnQ,EAAQ3hQ,IAEnBk9P,EAAM7iQ,YAAYqnQ,EAAQ1hQ,MACpCptB,EAAOotB,GAAQgiQ,OAAej6R,EAAW25R,EAAQ1hQ,KAFjDptB,EAAOotB,GAAQgiQ,OAAej6R,EAAW45R,EAAQ3hQ,GAIrD,IAEAk9P,EAAMtxR,QAAQm2R,GAAiB,SAAe/hQ,GACxCA,KAAQ2hQ,EACV/uR,EAAOotB,GAAQgiQ,EAAeN,EAAQ1hQ,GAAO2hQ,EAAQ3hQ,IAC5CA,KAAQ0hQ,IACjB9uR,EAAOotB,GAAQgiQ,OAAej6R,EAAW25R,EAAQ1hQ,IAErD,IAEA,IAAIkiQ,EAAYN,EACbp0R,OAAOq0R,GACPr0R,OAAOs0R,GACPt0R,OAAOu0R,GAENI,EAAYz2R,OACbC,KAAK+1R,GACLl0R,OAAO9B,OAAOC,KAAKg2R,IACnB32R,QAAO,SAAyBa,GAC/B,OAAmC,IAA5Bq2R,EAAU/+Q,QAAQtX,EAC3B,IAIF,OAFAqxR,EAAMtxR,QAAQu2R,EAAWF,GAElBrvR,CACT,qCCpFA,IAAI6qR,EAAcrsR,EAAQ,MAS1B4gD,EAAO3gD,QAAU,SAAgBkZ,EAAStC,EAAQhU,GAChD,IAAImuR,EAAiBnuR,EAASrB,OAAOwvR,eAChCnuR,EAASiU,QAAWk6Q,IAAkBA,EAAenuR,EAASiU,QAGjED,EAAOw1Q,EACL,mCAAqCxpR,EAASiU,OAC9CjU,EAASrB,OACT,KACAqB,EAASuT,QACTvT,IAPFsW,EAAQtW,EAUZ,qCCtBA,IAAIipR,EAAQ9rR,EAAQ,MAChB+V,EAAW/V,EAAQ,KAUvB4gD,EAAO3gD,QAAU,SAAuBqB,EAAM0U,EAASi7Q,GACrD,IAAI10R,EAAUkf,MAAQ1F,EAMtB,OAJA+1Q,EAAMtxR,QAAQy2R,GAAK,SAAmB/1Q,GACpC5Z,EAAO4Z,EAAGC,KAAK5e,EAAS+E,EAAM0U,EAChC,IAEO1U,CACT,oCCnBA,IAAIwqR,EAAQ9rR,EAAQ,MAChBkxR,EAAsBlxR,EAAQ,MAC9B8vR,EAAe9vR,EAAQ,MAEvBmxR,EAAuB,CACzB,eAAgB,qCAGlB,SAASC,EAAsBp7Q,EAAShd,IACjC8yR,EAAM7iQ,YAAYjT,IAAY81Q,EAAM7iQ,YAAYjT,EAAQ,mBAC3DA,EAAQ,gBAAkBhd,EAE9B,CA6BA,IAAI+c,EAAW,CAEbq3Q,aAAc,CACZsB,mBAAmB,EACnBE,mBAAmB,EACnBvB,qBAAqB,GAGvB4C,QAnCF,WACE,IAAIA,EAQJ,OAP8B,qBAAnBtlP,gBAGmB,qBAAZu/D,SAAuE,qBAA5C5vG,OAAOwgB,UAAUjkB,SAASskB,KAAK+uF,YAD1E+lL,EAAUjwR,EAAQ,OAKbiwR,CACT,CAyBWoB,GAETrB,iBAAkB,CAAC,SAA0B1uR,EAAM0U,GAIjD,OAHAk7Q,EAAoBl7Q,EAAS,UAC7Bk7Q,EAAoBl7Q,EAAS,gBAEzB81Q,EAAMU,WAAWlrR,IACnBwqR,EAAMwF,cAAchwR,IACpBwqR,EAAMyF,SAASjwR,IACfwqR,EAAM0F,SAASlwR,IACfwqR,EAAM2F,OAAOnwR,IACbwqR,EAAMvlE,OAAOjlN,GAENA,EAELwqR,EAAM4F,kBAAkBpwR,GACnBA,EAAKqwR,OAEV7F,EAAM8F,kBAAkBtwR,IAC1B8vR,EAAsBp7Q,EAAS,mDACxB1U,EAAKzK,YAEVi1R,EAAMviQ,SAASjoB,IAAU0U,GAAuC,qBAA5BA,EAAQ,iBAC9Co7Q,EAAsBp7Q,EAAS,oBA9CrC,SAAyB67Q,EAAUh9P,EAAQi9P,GACzC,GAAIhG,EAAMiG,SAASF,GACjB,IAEE,OADCh9P,GAAU9c,KAAKC,OAAO65Q,GAChB/F,EAAMp1N,KAAKm7N,EACpB,CAAE,MAAO36R,GACP,GAAe,gBAAXA,EAAErD,KACJ,MAAMqD,CAEV,CAGF,OAAQ46R,GAAW/5Q,KAAKK,WAAWy5Q,EACrC,CAkCaG,CAAgB1wR,IAElBA,CACT,GAEA4uR,kBAAmB,CAAC,SAA2B5uR,GAC7C,IAAI8rR,EAAe3xQ,KAAK2xQ,aACpBsB,EAAoBtB,GAAgBA,EAAasB,kBACjDE,EAAoBxB,GAAgBA,EAAawB,kBACjDqD,GAAqBvD,GAA2C,SAAtBjzQ,KAAKwxB,aAEnD,GAAIglP,GAAsBrD,GAAqB9C,EAAMiG,SAASzwR,IAASA,EAAK5N,OAC1E,IACE,OAAOqkB,KAAKC,MAAM1W,EACpB,CAAE,MAAOpK,GACP,GAAI+6R,EAAmB,CACrB,GAAe,gBAAX/6R,EAAErD,KACJ,MAAMi8R,EAAa54R,EAAGukB,KAAM,gBAE9B,MAAMvkB,CACR,CACF,CAGF,OAAOoK,CACT,GAMAo9O,QAAS,EAET+uC,eAAgB,aAChBC,eAAgB,eAEhBwE,kBAAmB,EACnBC,eAAgB,EAEhBnB,eAAgB,SAAwBl6Q,GACtC,OAAOA,GAAU,KAAOA,EAAS,GACnC,EAGFf,QAAmB,CACjBE,OAAQ,CACN,OAAU,uCAId61Q,EAAMtxR,QAAQ,CAAC,SAAU,MAAO,SAAS,SAA6BmyC,GACpE52B,EAASC,QAAQ22B,GAAU,CAAC,CAC9B,IAEAm/O,EAAMtxR,QAAQ,CAAC,OAAQ,MAAO,UAAU,SAA+BmyC,GACrE52B,EAASC,QAAQ22B,GAAUm/O,EAAMniQ,MAAMwnQ,EACzC,IAEAvwO,EAAO3gD,QAAU8V,iCCnIjB6qC,EAAO3gD,QAAU,SAAcib,EAAIk3Q,GACjC,OAAO,WAEL,IADA,IAAI1oR,EAAO,IAAIwgB,MAAMpQ,UAAUpmB,QACtBktB,EAAI,EAAGA,EAAIlX,EAAKhW,OAAQktB,IAC/BlX,EAAKkX,GAAK9G,UAAU8G,GAEtB,OAAO1F,EAAGP,MAAMy3Q,EAAS1oR,EAC3B,CACF,qCCRA,IAAIoiR,EAAQ9rR,EAAQ,MAEpB,SAASqyR,EAAOj5Q,GACd,OAAO8mF,mBAAmB9mF,GACxBlH,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,IACrB,CASA0uC,EAAO3gD,QAAU,SAAkBgC,EAAK8hB,EAAQipQ,GAE9C,IAAKjpQ,EACH,OAAO9hB,EAGT,IAAIqwR,EACJ,GAAItF,EACFsF,EAAmBtF,EAAiBjpQ,QAC/B,GAAI+nQ,EAAM8F,kBAAkB7tQ,GACjCuuQ,EAAmBvuQ,EAAOltB,eACrB,CACL,IAAI6wC,EAAQ,GAEZokP,EAAMtxR,QAAQupB,GAAQ,SAAmB3K,EAAK3e,GAChC,OAAR2e,GAA+B,qBAARA,IAIvB0yQ,EAAM3hQ,QAAQ/Q,GAChB3e,GAAY,KAEZ2e,EAAM,CAACA,GAGT0yQ,EAAMtxR,QAAQ4e,GAAK,SAAoBygM,GACjCiyE,EAAMtoL,OAAOq2G,GACfA,EAAIA,EAAE5+M,cACG6wR,EAAMviQ,SAASswL,KACxBA,EAAI9hM,KAAKK,UAAUyhM,IAErBnyK,EAAMxsC,KAAKm3R,EAAO53R,GAAO,IAAM43R,EAAOx4E,GACxC,IACF,IAEAy4E,EAAmB5qP,EAAMhlB,KAAK,IAChC,CAEA,GAAI4vQ,EAAkB,CACpB,IAAIC,EAAgBtwR,EAAI8P,QAAQ,MACT,IAAnBwgR,IACFtwR,EAAMA,EAAI6W,MAAM,EAAGy5Q,IAGrBtwR,KAA8B,IAAtBA,EAAI8P,QAAQ,KAAc,IAAM,KAAOugR,CACjD,CAEA,OAAOrwR,CACT,iCC5DA2+C,EAAO3gD,QAAU,SAAqB6sR,EAAS0F,GAC7C,OAAOA,EACH1F,EAAQ56Q,QAAQ,OAAQ,IAAM,IAAMsgR,EAAYtgR,QAAQ,OAAQ,IAChE46Q,CACN,qCCXA,IAAIhB,EAAQ9rR,EAAQ,MAEpB4gD,EAAO3gD,QACL6rR,EAAMwB,uBAIK,CACLvgQ,MAAO,SAAel5B,EAAMmF,EAAOy5R,EAAS70Q,EAAM80Q,EAAQC,GACxD,IAAIC,EAAS,GACbA,EAAO13R,KAAKrH,EAAO,IAAMqsG,mBAAmBlnG,IAExC8yR,EAAMx7P,SAASmiQ,IACjBG,EAAO13R,KAAK,WAAa,IAAIH,KAAK03R,GAASI,eAGzC/G,EAAMiG,SAASn0Q,IACjBg1Q,EAAO13R,KAAK,QAAU0iB,GAGpBkuQ,EAAMiG,SAASW,IACjBE,EAAO13R,KAAK,UAAYw3R,IAGX,IAAXC,GACFC,EAAO13R,KAAK,UAGdmjB,SAASu0Q,OAASA,EAAOlwQ,KAAK,KAChC,EAEA07G,KAAM,SAAcvqI,GAClB,IAAIgwB,EAAQxF,SAASu0Q,OAAO/uQ,MAAM,IAAIY,OAAO,aAAe5wB,EAAO,cACnE,OAAQgwB,EAAQkB,mBAAmBlB,EAAM,IAAM,IACjD,EAEAutB,OAAQ,SAAgBv9C,GACtB4nB,KAAKsR,MAAMl5B,EAAM,GAAIkH,KAAK49D,MAAQ,MACpC,GAMK,CACL5rC,MAAO,WAAkB,EACzBqxG,KAAM,WAAkB,OAAO,IAAM,EACrChtF,OAAQ,WAAmB,kCCzCnCwP,EAAO3gD,QAAU,SAAuBgC,GAItC,MAAO,gCAAgCshB,KAAKthB,EAC9C,iCCLA2+C,EAAO3gD,QAAU,SAAsB6yR,GACrC,MAA2B,kBAAZA,IAAmD,IAAzBA,EAAQ5E,YACnD,qCCRA,IAAIpC,EAAQ9rR,EAAQ,MAEpB4gD,EAAO3gD,QACL6rR,EAAMwB,uBAIH,WACC,IAEIyF,EAFAC,EAAO,kBAAkBzvQ,KAAKqrB,UAAUH,WACxCwkP,EAAiB50Q,SAASgO,cAAc,KAS5C,SAAS6mQ,EAAWjxR,GAClB,IAAIgV,EAAOhV,EAWX,OATI+wR,IAEFC,EAAelhP,aAAa,OAAQ96B,GACpCA,EAAOg8Q,EAAeh8Q,MAGxBg8Q,EAAelhP,aAAa,OAAQ96B,GAG7B,CACLA,KAAMg8Q,EAAeh8Q,KACrBk8Q,SAAUF,EAAeE,SAAWF,EAAeE,SAASjhR,QAAQ,KAAM,IAAM,GAChFwyF,KAAMuuL,EAAevuL,KACrBjoF,OAAQw2Q,EAAex2Q,OAASw2Q,EAAex2Q,OAAOvK,QAAQ,MAAO,IAAM,GAC3EwK,KAAMu2Q,EAAev2Q,KAAOu2Q,EAAev2Q,KAAKxK,QAAQ,KAAM,IAAM,GACpEkhR,SAAUH,EAAeG,SACzBC,KAAMJ,EAAeI,KACrB72Q,SAAiD,MAAtCy2Q,EAAez2Q,SAAS5D,OAAO,GACxCq6Q,EAAez2Q,SACf,IAAMy2Q,EAAez2Q,SAE3B,CAUA,OARAu2Q,EAAYG,EAAWn3R,OAAOib,SAASC,MAQhC,SAAyBq8Q,GAC9B,IAAIhtL,EAAUwlL,EAAMiG,SAASuB,GAAeJ,EAAWI,GAAcA,EACrE,OAAQhtL,EAAO6sL,WAAaJ,EAAUI,UAClC7sL,EAAO5B,OAASquL,EAAUruL,IAChC,CACF,CAlDC,GAsDQ,WACL,OAAO,CACT,qCC/DN,IAAIonL,EAAQ9rR,EAAQ,MAEpB4gD,EAAO3gD,QAAU,SAA6B+V,EAASu9Q,GACrDzH,EAAMtxR,QAAQwb,GAAS,SAAuBhd,EAAOnF,GAC/CA,IAAS0/R,GAAkB1/R,EAAKglB,gBAAkB06Q,EAAe16Q,gBACnE7C,EAAQu9Q,GAAkBv6R,SACnBgd,EAAQniB,GAEnB,GACF,qCCTA,IAAIi4R,EAAQ9rR,EAAQ,MAIhBwzR,EAAoB,CACtB,MAAO,gBAAiB,iBAAkB,eAAgB,OAC1D,UAAW,OAAQ,OAAQ,oBAAqB,sBAChD,gBAAiB,WAAY,eAAgB,sBAC7C,UAAW,cAAe,cAgB5B5yO,EAAO3gD,QAAU,SAAsB+V,GACrC,IACIvb,EACA2e,EACAwH,EAHA0lF,EAAS,CAAC,EAKd,OAAKtwF,GAEL81Q,EAAMtxR,QAAQwb,EAAQtG,MAAM,OAAO,SAAgB+jR,GAKjD,GAJA7yQ,EAAI6yQ,EAAK1hR,QAAQ,KACjBtX,EAAMqxR,EAAMp1N,KAAK+8N,EAAKj2Q,OAAO,EAAGoD,IAAI9mB,cACpCsf,EAAM0yQ,EAAMp1N,KAAK+8N,EAAKj2Q,OAAOoD,EAAI,IAE7BnmB,EAAK,CACP,GAAI6rG,EAAO7rG,IAAQ+4R,EAAkBzhR,QAAQtX,IAAQ,EACnD,OAGA6rG,EAAO7rG,GADG,eAARA,GACa6rG,EAAO7rG,GAAO6rG,EAAO7rG,GAAO,IAAI2B,OAAO,CAACgd,IAEzCktF,EAAO7rG,GAAO6rG,EAAO7rG,GAAO,KAAO2e,EAAMA,CAE3D,CACF,IAEOktF,GAnBgBA,CAoBzB,iCC9BA1lD,EAAO3gD,QAAU,SAAgBktC,GAC/B,OAAO,SAAclrB,GACnB,OAAOkrB,EAASxyB,MAAM,KAAMsH,EAC9B,CACF,qCCxBA,IAAIyxQ,EAAM1zR,EAAQ,MAEdgT,EAAa,CAAC,EAGlB,CAAC,SAAU,UAAW,SAAU,WAAY,SAAU,UAAUxY,SAAQ,SAASzE,EAAM6qB,GACrF5N,EAAWjd,GAAQ,SAAmB49R,GACpC,cAAcA,IAAU59R,GAAQ,KAAO6qB,EAAI,EAAI,KAAO,KAAO7qB,CAC/D,CACF,IAEA,IAAI69R,EAAqB,CAAC,EACtBC,EAAgBH,EAAIhlP,QAAQh/B,MAAM,KAQtC,SAASokR,EAAeplP,EAASqlP,GAG/B,IAFA,IAAIC,EAAgBD,EAAcA,EAAYrkR,MAAM,KAAOmkR,EACvDI,EAAUvlP,EAAQh/B,MAAM,KACnBkR,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,GAAIozQ,EAAcpzQ,GAAKqzQ,EAAQrzQ,GAC7B,OAAO,EACF,GAAIozQ,EAAcpzQ,GAAKqzQ,EAAQrzQ,GACpC,OAAO,CAEX,CACA,OAAO,CACT,CASA5N,EAAWo6Q,aAAe,SAAsB3vD,EAAW/uL,EAAS3/B,GAClE,IAAImlR,EAAexlP,GAAWolP,EAAeplP,GAE7C,SAASylP,EAAczuL,EAAKpqD,GAC1B,MAAO,WAAao4O,EAAIhlP,QAAU,0BAA6Bg3D,EAAM,IAAOpqD,GAAQvsC,EAAU,KAAOA,EAAU,GACjH,CAGA,OAAO,SAAS/V,EAAO0sG,EAAK0uL,GAC1B,IAAkB,IAAd32D,EACF,MAAM,IAAIhhO,MAAM03R,EAAczuL,EAAK,wBAA0Bh3D,IAc/D,OAXIwlP,IAAiBN,EAAmBluL,KACtCkuL,EAAmBluL,IAAO,EAE1B1oF,QAAQC,KACNk3Q,EACEzuL,EACA,+BAAiCh3D,EAAU,8CAK1C+uL,GAAYA,EAAUzkO,EAAO0sG,EAAK0uL,EAC3C,CACF,EAgCAxzO,EAAO3gD,QAAU,CACf6zR,eAAgBA,EAChBrF,cAzBF,SAAuBtyQ,EAAS1V,EAAQ4tR,GACtC,GAAuB,kBAAZl4Q,EACT,MAAM,IAAIf,UAAU,6BAItB,IAFA,IAAI7gB,EAAOD,OAAOC,KAAK4hB,GACnByE,EAAIrmB,EAAK7G,OACNktB,KAAM,GAAG,CACd,IAAI8kF,EAAMnrG,EAAKqmB,GACX68M,EAAYh3N,EAAOi/F,GACvB,GAAI+3H,EAAJ,CACE,IAAIzkO,EAAQmjB,EAAQupF,GAChB7qG,OAAmBlE,IAAVqC,GAAuBykO,EAAUzkO,EAAO0sG,EAAKvpF,GAC1D,IAAe,IAAXthB,EACF,MAAM,IAAIugB,UAAU,UAAYsqF,EAAM,YAAc7qG,EAGxD,MACA,IAAqB,IAAjBw5R,EACF,MAAM53R,MAAM,kBAAoBipG,EAEpC,CACF,EAKE1yF,WAAYA,sCCrGd,IAAIyH,EAAOza,EAAQ,MAIfnJ,EAAWyD,OAAOwgB,UAAUjkB,SAQhC,SAASszB,EAAQ/Q,GACf,MAA8B,mBAAvBviB,EAASskB,KAAK/B,EACvB,CAQA,SAAS6P,EAAY7P,GACnB,MAAsB,qBAARA,CAChB,CA2EA,SAASmQ,EAASnQ,GAChB,OAAe,OAARA,GAA+B,kBAARA,CAChC,CAQA,SAASiqF,EAAcjqF,GACrB,GAA2B,oBAAvBviB,EAASskB,KAAK/B,GAChB,OAAO,EAGT,IAAI0B,EAAYxgB,OAAOkhB,eAAepC,GACtC,OAAqB,OAAd0B,GAAsBA,IAAcxgB,OAAOwgB,SACpD,CAsCA,SAASw5Q,EAAWl7Q,GAClB,MAA8B,sBAAvBviB,EAASskB,KAAK/B,EACvB,CAuEA,SAAS5e,EAAQuuB,EAAK7N,GAEpB,GAAY,OAAR6N,GAA+B,qBAARA,EAU3B,GALmB,kBAARA,IAETA,EAAM,CAACA,IAGLoB,EAAQpB,GAEV,IAAK,IAAInI,EAAI,EAAG6L,EAAI1D,EAAIr1B,OAAQktB,EAAI6L,EAAG7L,IACrC1F,EAAGC,KAAK,KAAM4N,EAAInI,GAAIA,EAAGmI,QAI3B,IAAK,IAAItuB,KAAOsuB,EACVzuB,OAAOwgB,UAAUoQ,eAAe/P,KAAK4N,EAAKtuB,IAC5CygB,EAAGC,KAAK,KAAM4N,EAAItuB,GAAMA,EAAKsuB,EAIrC,CAuEA63B,EAAO3gD,QAAU,CACfkqB,QAASA,EACTmnQ,cA1RF,SAAuBl4Q,GACrB,MAA8B,yBAAvBviB,EAASskB,KAAK/B,EACvB,EAyREm4Q,SAtSF,SAAkBn4Q,GAChB,OAAe,OAARA,IAAiB6P,EAAY7P,IAA4B,OAApBA,EAAIsC,cAAyBuN,EAAY7P,EAAIsC,cAChD,oBAA7BtC,EAAIsC,YAAY61Q,UAA2Bn4Q,EAAIsC,YAAY61Q,SAASn4Q,EAClF,EAoSEozQ,WAlRF,SAAoBpzQ,GAClB,MAA4B,qBAAbm7Q,UAA8Bn7Q,aAAem7Q,QAC9D,EAiRE7C,kBAzQF,SAA2Bt4Q,GAOzB,MAL4B,qBAAhBo7Q,aAAiCA,YAAYC,OAC9CD,YAAYC,OAAOr7Q,GAElBA,GAASA,EAAIu4Q,QAAYv4Q,EAAIu4Q,kBAAkB6C,WAG7D,EAkQEzC,SA1PF,SAAkB34Q,GAChB,MAAsB,kBAARA,CAChB,EAyPEkX,SAjPF,SAAkBlX,GAChB,MAAsB,kBAARA,CAChB,EAgPEmQ,SAAUA,EACV85E,cAAeA,EACfp6E,YAAaA,EACbu6E,OAlNF,SAAgBpqF,GACd,MAA8B,kBAAvBviB,EAASskB,KAAK/B,EACvB,EAiNEq4Q,OAzMF,SAAgBr4Q,GACd,MAA8B,kBAAvBviB,EAASskB,KAAK/B,EACvB,EAwMEmtM,OAhMF,SAAgBntM,GACd,MAA8B,kBAAvBviB,EAASskB,KAAK/B,EACvB,EA+LEk7Q,WAAYA,EACZ9C,SA9KF,SAAkBp4Q,GAChB,OAAOmQ,EAASnQ,IAAQk7Q,EAAWl7Q,EAAIs7Q,KACzC,EA6KE9C,kBArKF,SAA2Bx4Q,GACzB,MAAkC,qBAApBu7Q,iBAAmCv7Q,aAAeu7Q,eAClE,EAoKErH,qBAzIF,WACE,OAAyB,qBAAd1+O,WAAoD,gBAAtBA,UAAUgmP,SACY,iBAAtBhmP,UAAUgmP,SACY,OAAtBhmP,UAAUgmP,WAI/B,qBAAX74R,QACa,qBAAbsiB,SAEX,EAgIE7jB,QAASA,EACTmvB,MAvEF,SAASA,IACP,IAAI9uB,EAAS,CAAC,EACd,SAASg6R,EAAYz7Q,EAAK3e,GACpB4oG,EAAcxoG,EAAOJ,KAAS4oG,EAAcjqF,GAC9Cve,EAAOJ,GAAOkvB,EAAM9uB,EAAOJ,GAAM2e,GACxBiqF,EAAcjqF,GACvBve,EAAOJ,GAAOkvB,EAAM,CAAC,EAAGvQ,GACf+Q,EAAQ/Q,GACjBve,EAAOJ,GAAO2e,EAAIN,QAElBje,EAAOJ,GAAO2e,CAElB,CAEA,IAAK,IAAIwH,EAAI,EAAG6L,EAAI3S,UAAUpmB,OAAQktB,EAAI6L,EAAG7L,IAC3CpmB,EAAQsf,UAAU8G,GAAIi0Q,GAExB,OAAOh6R,CACT,EAsDEuvB,OA5CF,SAAgB1P,EAAG+F,EAAG2xQ,GAQpB,OAPA53R,EAAQimB,GAAG,SAAqBrH,EAAK3e,GAEjCigB,EAAEjgB,GADA23R,GAA0B,oBAARh5Q,EACXqB,EAAKrB,EAAKg5Q,GAEVh5Q,CAEb,IACOsB,CACT,EAoCEg8C,KAhKF,SAAc1nC,GACZ,OAAOA,EAAI0nC,KAAO1nC,EAAI0nC,OAAS1nC,EAAI9c,QAAQ,aAAc,GAC3D,EA+JE4iR,SA7BF,SAAkB9yN,GAIhB,OAH8B,QAA1BA,EAAQhd,WAAW,KACrBgd,EAAUA,EAAQlpD,MAAM,IAEnBkpD,CACT,8FC/TA,IADsC,qBAAXjmE,SAA0BA,OAAOsiB,WAAYtiB,OAAOsiB,SAASgO,eCCxF,EADuB,SAAC0oQ,GAAG,MAAwB,qBAAXh5R,QAAyBg5R,KAAOh5R,MAAc,ECHhF+tG,EAAQ,IAAI7uF,IAalB,EAPiB,SAAClM,GACV+6F,EAAMzuF,IAAItM,KAEd+6F,EAAMxuF,IAAIvM,GAAS,GAEnBiO,QAAQC,KAAKlO,GACjB,EC+BA,EA7BsB,SAACimR,GACnB,IAAKC,IAAaC,EAAe,cAE7B,OADAC,EAZa,gMAaN,EAEX,IAAA/+R,GAAoCC,EAAAA,EAAAA,YAAW0F,OAAOu5M,WAAW0/E,GAAY9zQ,SAAQ5qB,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA9Eg/R,EAAU9+R,EAAA,GAAE++R,EAAa/+R,EAAA,GAsBhC,OArBA8B,EAAAA,EAAAA,YAAU,WACN,IAAMk9R,EAAiBv5R,OAAOu5M,WAAW0/E,GACnCO,EAAwB,WAAQF,IAAgBC,EAAep0Q,QAAU,EAC/E,IACIo0Q,EAAeh2Q,iBAAiB,SAAUi2Q,EAC9C,CACA,MAAOr+R,GAEHo+R,EAAevkF,YAAYwkF,EAC/B,CAEA,OADAA,IACO,WACH,IACID,EAAe/1Q,oBAAoB,SAAUg2Q,EACjD,CACA,MAAOr+R,GAEHo+R,EAAez/E,eAAe0/E,EAClC,CACJ,CACJ,GAAG,CAACP,IACGI,CACX,qCCxCA,IAAII,EAAex1R,EAAQ,MAEvBy1R,EAAWz1R,EAAQ,MAEnB01R,EAAWD,EAASD,EAAa,6BAErC50O,EAAO3gD,QAAU,SAA4BpM,EAAM8hS,GAClD,IAAIC,EAAYJ,EAAa3hS,IAAQ8hS,GACrC,MAAyB,oBAAdC,GAA4BF,EAAS7hS,EAAM,gBAAkB,EAChE4hS,EAASG,GAEVA,CACR,qCCZA,IAAIn7Q,EAAOza,EAAQ,MACfw1R,EAAex1R,EAAQ,MAEvB61R,EAASL,EAAa,8BACtBM,EAAQN,EAAa,6BACrBO,EAAgBP,EAAa,mBAAmB,IAAS/6Q,EAAKU,KAAK26Q,EAAOD,GAE1EG,EAAQR,EAAa,qCAAqC,GAC1DS,EAAkBT,EAAa,2BAA2B,GAC1DU,EAAOV,EAAa,cAExB,GAAIS,EACH,IACCA,EAAgB,CAAC,EAAG,IAAK,CAAEj9R,MAAO,GACnC,CAAE,MAAO9B,GAER++R,EAAkB,IACnB,CAGDr1O,EAAO3gD,QAAU,SAAkBk2R,GAClC,IAAIC,EAAOL,EAAct7Q,EAAMq7Q,EAAOh8Q,WAClCk8Q,GAASC,IACDD,EAAMI,EAAM,UACdt6Q,cAERm6Q,EACCG,EACA,SACA,CAAEp9R,MAAO,EAAIk9R,EAAK,EAAGC,EAAiBziS,QAAUomB,UAAUpmB,OAAS,OAItE,OAAO0iS,CACR,EAEA,IAAIC,EAAY,WACf,OAAON,EAAct7Q,EAAMo7Q,EAAQ/7Q,UACpC,EAEIm8Q,EACHA,EAAgBr1O,EAAO3gD,QAAS,QAAS,CAAEjH,MAAOq9R,IAElDz1O,EAAO3gD,QAAQ0a,MAAQ07Q,mCC/BxBp2R,EAAQ+X,MAkCR,SAAegX,EAAK7S,GAClB,GAAmB,kBAAR6S,EACT,MAAM,IAAI5T,UAAU,iCAQtB,IALA,IAAI2N,EAAM,CAAC,EACP28E,EAAMvpF,GAAW,CAAC,EAClBm6Q,EAAQtnQ,EAAItf,MAAM6mR,GAClBjgQ,EAAMovE,EAAI8wL,QAAUA,EAEf51Q,EAAI,EAAGA,EAAI01Q,EAAM5iS,OAAQktB,IAAK,CACrC,IAAI61Q,EAAOH,EAAM11Q,GACb81Q,EAASD,EAAK1kR,QAAQ,KAG1B,KAAI2kR,EAAS,GAAb,CAIA,IAAIj8R,EAAMg8R,EAAKj5Q,OAAO,EAAGk5Q,GAAQhgO,OAC7Bt9C,EAAMq9Q,EAAKj5Q,SAASk5Q,EAAQD,EAAK/iS,QAAQgjE,OAGzC,KAAOt9C,EAAI,KACbA,EAAMA,EAAIN,MAAM,GAAI,SAIlBniB,GAAaoyB,EAAItuB,KACnBsuB,EAAItuB,GAAOk8R,EAAUv9Q,EAAKkd,GAZ5B,CAcF,CAEA,OAAOvN,CACT,EAnEA9oB,EAAQ22R,UAqFR,SAAmB/iS,EAAMulB,EAAK+C,GAC5B,IAAIupF,EAAMvpF,GAAW,CAAC,EAClB06Q,EAAMnxL,EAAI2sL,QAAUA,EAExB,GAAmB,oBAARwE,EACT,MAAM,IAAIz7Q,UAAU,4BAGtB,IAAK07Q,EAAmBvzQ,KAAK1vB,GAC3B,MAAM,IAAIunB,UAAU,4BAGtB,IAAIpiB,EAAQ69R,EAAIz9Q,GAEhB,GAAIpgB,IAAU89R,EAAmBvzQ,KAAKvqB,GACpC,MAAM,IAAIoiB,UAAU,2BAGtB,IAAI4T,EAAMn7B,EAAO,IAAMmF,EAEvB,GAAI,MAAQ0sG,EAAIqxL,OAAQ,CACtB,IAAIA,EAASrxL,EAAIqxL,OAAS,EAC1B,GAAIxhQ,MAAMwhQ,GAAS,MAAM,IAAIt6R,MAAM,6BACnCuyB,GAAO,aAAe1R,KAAKiU,MAAMwlQ,EACnC,CAEA,GAAIrxL,EAAIgtL,OAAQ,CACd,IAAKoE,EAAmBvzQ,KAAKmiF,EAAIgtL,QAC/B,MAAM,IAAIt3Q,UAAU,4BAGtB4T,GAAO,YAAc02E,EAAIgtL,MAC3B,CAEA,GAAIhtL,EAAI9nF,KAAM,CACZ,IAAKk5Q,EAAmBvzQ,KAAKmiF,EAAI9nF,MAC/B,MAAM,IAAIxC,UAAU,0BAGtB4T,GAAO,UAAY02E,EAAI9nF,IACzB,CAEA,GAAI8nF,EAAI+sL,QAAS,CACf,GAAuC,oBAA5B/sL,EAAI+sL,QAAQv3M,YACrB,MAAM,IAAI9/D,UAAU,6BAGtB4T,GAAO,aAAe02E,EAAI+sL,QAAQv3M,aACpC,CAEIwqB,EAAIsxL,WACNhoQ,GAAO,cAGL02E,EAAIitL,SACN3jQ,GAAO,YAGT,GAAI02E,EAAIuxL,SAAU,CAIhB,OAHuC,kBAAjBvxL,EAAIuxL,SACtBvxL,EAAIuxL,SAASn9R,cAAgB4rG,EAAIuxL,UAGnC,KAAK,EACHjoQ,GAAO,oBACP,MACF,IAAK,MACHA,GAAO,iBACP,MACF,IAAK,SACHA,GAAO,oBACP,MACF,QACE,MAAM,IAAI5T,UAAU,8BAE1B,CAEA,OAAO4T,CACT,EA5JA,IAAIwnQ,EAASzxQ,mBACTstQ,EAASnyL,mBACTq2L,EAAkB,MAUlBO,EAAqB,wCA0JzB,SAASH,EAAU3nQ,EAAKwnQ,GACtB,IACE,OAAOA,EAAOxnQ,EAChB,CAAE,MAAO93B,GACP,OAAO83B,CACT,CACF,qCCxLA,IAAIkoQ,EAAUl3R,EAAQ,MAIlBm3R,EAAc,CAAC,EAMnB,IAAIC,EAAiB,SAAwBniS,GAAS,EAUtD,SAASoiS,EAAWz2L,EAAW3rG,EAAQylB,EAAG+F,EAAGiR,EAAGC,EAAGz6B,EAAGsC,GAGpD,GAFA49R,EAAeniS,IAEV2rG,EAAW,CACd,IAAI/jG,EACJ,QAAelG,IAAX1B,EACF4H,EAAQ,IAAIJ,MAAM,qIACb,CACL,IAAIiN,EAAO,CAACgR,EAAG+F,EAAGiR,EAAGC,EAAGz6B,EAAGsC,GACvB89R,EAAW,GACfz6R,EAAQ,IAAIJ,MAAMxH,EAAOid,QAAQ,OAAO,WACtC,OAAOxI,EAAK4tR,IACd,MACMzjS,KAAO,qBACf,CAGA,MADAgJ,EAAM06R,YAAc,EACd16R,CACR,CACF,CAEA,IA4CI26R,EAAa,SA04BjB52O,EAAO3gD,QAv3BP,SAAiBw3R,EAAgBC,EAAgBC,GAK/C,IAAIC,EAAiB,GAwBjBC,EAAsB,CAOxBC,OAAQ,cASRC,QAAS,cAQTC,UAAW,cAQXC,aAAc,cAQdC,kBAAmB,cAcnBC,gBAAiB,qBAgBjBC,gBAAiB,qBAMjBC,gBAAiB,qBAiBjBtxO,OAAQ,cAWRuxO,mBAAoB,cAYpB1hB,kBAAmB,cAqBnB2hB,0BAA2B,cAsB3BphB,sBAAuB,cAiBvBqhB,oBAAqB,cAcrBxhB,mBAAoB,cAapBmD,qBAAsB,cAOtBse,0BAA2B,cAO3BC,iCAAkC,cAOlCC,2BAA4B,cAc5BC,gBAAiB,iBAMfC,EAA4B,CAW9BC,yBAA0B,sBAYxBC,EAAqB,CACvBniJ,YAAa,SAASoiJ,EAAapiJ,GACjCoiJ,EAAYpiJ,YAAcA,CAC5B,EACAkhJ,OAAQ,SAASkB,EAAalB,GAC5B,GAAIA,EACF,IAAK,IAAIl3Q,EAAI,EAAGA,EAAIk3Q,EAAOpkS,OAAQktB,IACjCq4Q,EAAqBD,EAAalB,EAAOl3Q,GAG/C,EACAs3Q,kBAAmB,SAASc,EAAad,GAIvCc,EAAYd,kBAAoBhB,EAC9B,CAAC,EACD8B,EAAYd,kBACZA,EAEJ,EACAD,aAAc,SAASe,EAAaf,GAIlCe,EAAYf,aAAef,EACzB,CAAC,EACD8B,EAAYf,aACZA,EAEJ,EAKAE,gBAAiB,SAASa,EAAab,GACjCa,EAAYb,gBACda,EAAYb,gBAAkBe,EAC5BF,EAAYb,gBACZA,GAGFa,EAAYb,gBAAkBA,CAElC,EACAH,UAAW,SAASgB,EAAahB,GAI/BgB,EAAYhB,UAAYd,EAAQ,CAAC,EAAG8B,EAAYhB,UAAWA,EAC7D,EACAD,QAAS,SAASiB,EAAajB,IA0KjC,SAAoCiB,EAAajB,GAC/C,IAAKA,EACH,OAGF,IAAK,IAAIlkS,KAAQkkS,EAAS,CACxB,IAAI91P,EAAW81P,EAAQlkS,GACvB,GAAKkkS,EAAQ7sQ,eAAer3B,GAA5B,CAeA,GAVAwjS,IADiBxjS,KAAQklS,GAGvB,0MAIAllS,GAGqBA,KAAQmlS,EAgB7B,OAVA3B,EACiB,wBALAwB,EAA0B3tQ,eAAer3B,GACtDglS,EAA0BhlS,GAC1B,MAIF,uHAGAA,QAGFmlS,EAAYnlS,GAAQqlS,EAA2BF,EAAYnlS,GAAOouC,IAKpE+2P,EAAYnlS,GAAQouC,CA/BpB,CAgCF,CACF,CAnNIk3P,CAA2BH,EAAajB,EAC1C,EACAqB,SAAU,WAAY,GAsBxB,SAASC,EAAuBC,EAAkBzlS,GAChD,IAAI0lS,EAAa1B,EAAoB3sQ,eAAer3B,GAChDgkS,EAAoBhkS,GACpB,KAGA2lS,EAAgBtuQ,eAAer3B,IACjCwjS,EACiB,kBAAfkC,EACA,2JAGA1lS,GAKAylS,GACFjC,EACiB,gBAAfkC,GAA+C,uBAAfA,EAChC,gIAGA1lS,EAGN,CAMA,SAASolS,EAAqBD,EAAaS,GACzC,GAAKA,EAAL,CAqBApC,EACkB,oBAAToC,EACP,sHAIFpC,GACGK,EAAe+B,GAChB,oGAIF,IAAIC,EAAQV,EAAYl+Q,UACpB6+Q,EAAgBD,EAAME,qBAS1B,IAAK,IAAI/lS,KAJL4lS,EAAKvuQ,eAAessQ,IACtBuB,EAAmBjB,OAAOkB,EAAaS,EAAK3B,QAG7B2B,EACf,GAAKA,EAAKvuQ,eAAer3B,IAIrBA,IAAS2jS,EAAb,CAKA,IAAIv1P,EAAWw3P,EAAK5lS,GAChBylS,EAAmBI,EAAMxuQ,eAAer3B,GAG5C,GAFAwlS,EAAuBC,EAAkBzlS,GAErCklS,EAAmB7tQ,eAAer3B,GACpCklS,EAAmBllS,GAAMmlS,EAAa/2P,OACjC,CAKL,IAAI43P,EAAqBhC,EAAoB3sQ,eAAer3B,GAQ5D,GAPqC,oBAAbouC,IAGrB43P,IACAP,IACiB,IAAlBG,EAAKL,SAGLO,EAAcz+R,KAAKrH,EAAMouC,GACzBy3P,EAAM7lS,GAAQouC,OAEd,GAAIq3P,EAAkB,CACpB,IAAIC,EAAa1B,EAAoBhkS,GAGrCwjS,EACEwC,IACkB,uBAAfN,GACgB,gBAAfA,GACJ,mFAEAA,EACA1lS,GAKiB,uBAAf0lS,EACFG,EAAM7lS,GAAQqlS,EAA2BQ,EAAM7lS,GAAOouC,GAC9B,gBAAfs3P,IACTG,EAAM7lS,GAAQimS,EAAsBJ,EAAM7lS,GAAOouC,GAErD,MACEy3P,EAAM7lS,GAAQouC,CAUpB,CAzDA,CAhCF,MA2FF,CAqDA,SAAS83P,EAA6BC,EAAKC,GAMzC,IAAK,IAAIx/R,KALT48R,EACE2C,GAAOC,GAAsB,kBAARD,GAAmC,kBAARC,EAChD,6DAGcA,EACVA,EAAI/uQ,eAAezwB,KACrB48R,OACe1gS,IAAbqjS,EAAIv/R,GACJ,yPAKAA,GAEFu/R,EAAIv/R,GAAOw/R,EAAIx/R,IAGnB,OAAOu/R,CACT,CAUA,SAASd,EAA2Bc,EAAKC,GACvC,OAAO,WACL,IAAIv/Q,EAAIs/Q,EAAIr/Q,MAAMc,KAAM3B,WACpB2G,EAAIw5Q,EAAIt/Q,MAAMc,KAAM3B,WACxB,GAAS,MAALY,EACF,OAAO+F,EACF,GAAS,MAALA,EACT,OAAO/F,EAET,IAAIgX,EAAI,CAAC,EAGT,OAFAqoQ,EAA6BroQ,EAAGhX,GAChCq/Q,EAA6BroQ,EAAGjR,GACzBiR,CACT,CACF,CAUA,SAASooQ,EAAsBE,EAAKC,GAClC,OAAO,WACLD,EAAIr/Q,MAAMc,KAAM3B,WAChBmgR,EAAIt/Q,MAAMc,KAAM3B,UAClB,CACF,CASA,SAASogR,EAAmBx5R,EAAWisC,GAkDrC,OAjDkBA,EAAOlyB,KAAK/Z,EAkDhC,CAgBA,IAAIy5R,EAAoB,CACtBvjB,kBAAmB,WACjBn7P,KAAK2+Q,aAAc,CACrB,GAGEC,EAAqB,CACvBlgB,qBAAsB,WACpB1+P,KAAK2+Q,aAAc,CACrB,GAOEZ,EAAkB,CAKpBp6Q,aAAc,SAASk7Q,EAAUntP,GAC/B1xB,KAAK8+Q,QAAQC,oBAAoB/+Q,KAAM6+Q,EAAUntP,EACnD,EAQAstP,UAAW,WAaT,QAASh/Q,KAAK2+Q,WAChB,GAGEM,EAAsB,WAAY,EAoItC,OAnIAxD,EACEwD,EAAoB5/Q,UACpB28Q,EAAe38Q,UACf0+Q,GAWF,SAAqBC,GAInB,IAAIT,EAAuB,SAASp7R,EAAOrB,EAASg+R,GAa9C9+Q,KAAKm+Q,qBAAqBlmS,QAzFlC,SAA6BgN,GAE3B,IADA,IAAI41R,EAAQ51R,EAAUk5R,qBACbh5Q,EAAI,EAAGA,EAAI01Q,EAAM5iS,OAAQktB,GAAK,EAAG,CACxC,IAAI+5Q,EAAcrE,EAAM11Q,GACpB+rB,EAAS2pP,EAAM11Q,EAAI,GACvBlgB,EAAUi6R,GAAeT,EAAmBx5R,EAAWisC,EACzD,CACF,CAmFMiuP,CAAoBn/Q,MAGtBA,KAAK7d,MAAQA,EACb6d,KAAKlf,QAAUA,EACfkf,KAAKo/Q,KAAO1D,EACZ17Q,KAAK8+Q,QAAUA,GAAW5C,EAE1Bl8Q,KAAK/Z,MAAQ,KAKb,IAAIL,EAAeoa,KAAK28Q,gBAAkB38Q,KAAK28Q,kBAAoB,KAYnEf,EAC0B,kBAAjBh2R,IAA8B6oB,MAAMC,QAAQ9oB,GACnD,sDACA23R,EAAYpiJ,aAAe,2BAG7Bn7H,KAAK/Z,MAAQL,CACf,EA0DA,IAAK,IAAIy5R,KAzDT9B,EAAYl+Q,UAAY,IAAI4/Q,EAC5B1B,EAAYl+Q,UAAUY,YAAcs9Q,EACpCA,EAAYl+Q,UAAU8+Q,qBAAuB,GAE7ChC,EAAep9R,QAAQy+R,EAAqBx+Q,KAAK,KAAMu+Q,IAEvDC,EAAqBD,EAAamB,GAClClB,EAAqBD,EAAaS,GAClCR,EAAqBD,EAAaqB,GAG9BrB,EAAYb,kBACda,EAAYp8R,aAAeo8R,EAAYb,mBAgBzCd,EACE2B,EAAYl+Q,UAAUisC,OACtB,2EA2BqB8wO,EAChBmB,EAAYl+Q,UAAUggR,KACzB9B,EAAYl+Q,UAAUggR,GAAc,MAIxC,OAAO9B,CACT,CAGF,qCC79BA,IAAIne,EAAQ76Q,EAAQ,MAChBwjL,EAAUxjL,EAAQ,MAEtB,GAAqB,qBAAV66Q,EACT,MAAMp+Q,MACJ,qJAMJ,IAAIk7R,GAAuB,IAAI9c,EAAM/0N,WAAYy0O,QAEjD35O,EAAO3gD,QAAUujL,EACfq3F,EAAM/0N,UACN+0N,EAAM6c,eACNC,yBC1BF,OAOC,WACA,aAEA,IAAIoD,IACe,qBAAXh/R,SACPA,OAAOsiB,WACPtiB,OAAOsiB,SAASgO,eAGb2uQ,EAAuB,CAE1BD,UAAWA,EAEXE,cAAiC,qBAAXC,OAEtBC,qBACCJ,MAAgBh/R,OAAOujB,mBAAoBvjB,OAAOq/R,aAEnDC,eAAgBN,KAAeh/R,OAAO8rJ,aAOrC,KAFDyzI,EAAAA,WACC,OAAON,CACP,+BAOF,CAhCA,4KCPD,IAAIO,EAAoB,SAA2BviS,GAClD,OAID,SAAyBA,GACxB,QAASA,GAA0B,kBAAVA,CAC1B,CANQwiS,CAAgBxiS,KAQxB,SAAmBA,GAClB,IAAIyiS,EAAcnhS,OAAOwgB,UAAUjkB,SAASskB,KAAKniB,GAEjD,MAAuB,oBAAhByiS,GACa,kBAAhBA,GAQL,SAAwBziS,GACvB,OAAOA,EAAM0iS,WAAaC,CAC3B,CATKC,CAAe5iS,EACpB,CAbM6iS,CAAU7iS,EAChB,EAeA,IACI2iS,EADiC,oBAAXl0Q,QAAyBA,OAAOs9C,IAClBt9C,OAAOs9C,IAAI,iBAAmB,MAUtE,SAAS+2N,EAA8B9iS,EAAOmjB,GAC7C,OAA0B,IAAlBA,EAAQwO,OAAmBxO,EAAQo/Q,kBAAkBviS,GAC1D+wB,GANiB3Q,EAMKpgB,EALlBkxB,MAAMC,QAAQ/Q,GAAO,GAAK,CAAC,GAKDpgB,EAAOmjB,GACrCnjB,EAPJ,IAAqBogB,CAQrB,CAEA,SAAS2iR,EAAkBniP,EAAQh4C,EAAQua,GAC1C,OAAOy9B,EAAOx9C,OAAOwF,GAAQrG,KAAI,SAASkD,GACzC,OAAOq9R,EAA8Br9R,EAAS0d,EAC/C,GACD,CAmBA,SAAS4N,EAAU6vB,EAAQh4C,EAAQua,IAClCA,EAAUA,GAAW,CAAC,GACd6/Q,WAAa7/Q,EAAQ6/Q,YAAcD,EAC3C5/Q,EAAQo/Q,kBAAoBp/Q,EAAQo/Q,mBAAqBA,EAEzD,IAAIU,EAAgB/xQ,MAAMC,QAAQvoB,GAIlC,OAFgCq6R,IADZ/xQ,MAAMC,QAAQyvB,GAKvBqiP,EACH9/Q,EAAQ6/Q,WAAWpiP,EAAQh4C,EAAQua,GA7B5C,SAAqBy9B,EAAQh4C,EAAQua,GACpC,IAAIyN,EAAc,CAAC,EAanB,OAZIzN,EAAQo/Q,kBAAkB3hP,IAC7Bt/C,OAAOC,KAAKq/C,GAAQp/C,SAAQ,SAASC,GACpCmvB,EAAYnvB,GAAOqhS,EAA8BliP,EAAOn/C,GAAM0hB,EAC/D,IAED7hB,OAAOC,KAAKqH,GAAQpH,SAAQ,SAASC,GAC/B0hB,EAAQo/Q,kBAAkB35R,EAAOnH,KAAUm/C,EAAOn/C,GAGtDmvB,EAAYnvB,GAAOsvB,EAAU6vB,EAAOn/C,GAAMmH,EAAOnH,GAAM0hB,GAFvDyN,EAAYnvB,GAAOqhS,EAA8Bl6R,EAAOnH,GAAM0hB,EAIhE,IACOyN,CACR,CAgBSsyQ,CAAYtiP,EAAQh4C,EAAQua,GAJ5B2/Q,EAA8Bl6R,EAAQua,EAM/C,CAEA4N,EAAU/nB,IAAM,SAAsB44E,EAAOz+D,GAC5C,IAAK+N,MAAMC,QAAQywD,GAClB,MAAM,IAAIn+E,MAAM,qCAGjB,OAAOm+E,EAAMv3D,QAAO,SAASk1K,EAAMh/G,GAClC,OAAOxvD,EAAUwuK,EAAMh/G,EAAMp9D,EAC9B,GAAG,CAAC,EACL,EAEA,IAEA,EAFkB4N,ECnFlB,EAFkC,iBAAVoyQ,QAAsBA,QAAUA,OAAO7hS,SAAWA,QAAU6hS,OCEhFC,EAA0B,iBAARC,MAAoBA,MAAQA,KAAK/hS,SAAWA,QAAU+hS,KAK5E,EAFWC,GAAcF,GAAYxhR,SAAS,cAATA,GCDrC,EAFawkD,EAAK33C,OCAd80Q,EAAcjiS,OAAOwgB,UAGrBoQ,EAAiBqxQ,EAAYrxQ,eAO7BsxQ,EAAuBD,EAAY1lS,SAGnC4lS,EAAiBh1Q,EAASA,EAAOi1Q,iBAAc/lS,EA6BnD,MApBA,SAAmBqC,GACjB,IAAI2jS,EAAQzxQ,EAAe/P,KAAKniB,EAAOyjS,GACnCz2N,EAAMhtE,EAAMyjS,GAEhB,IACEzjS,EAAMyjS,QAAkB9lS,EACxB,IAAIimS,GAAW,CACjB,CAAE,MAAO1lS,GAAI,CAEb,IAAI2D,EAAS2hS,EAAqBrhR,KAAKniB,GAQvC,OAPI4jS,IACED,EACF3jS,EAAMyjS,GAAkBz2N,SAEjBhtE,EAAMyjS,IAGV5hS,CACT,ECnCI2hS,EAPcliS,OAAOwgB,UAOcjkB,SAavC,MAJA,SAAwBmC,GACtB,OAAOwjS,EAAqBrhR,KAAKniB,EACnC,ECVIyjS,EAAiBh1Q,EAASA,EAAOi1Q,iBAAc/lS,EAkBnD,MATA,SAAoBqC,GAClB,OAAa,MAATA,OACerC,IAAVqC,EAdQ,qBADL,gBAiBJyjS,GAAkBA,KAAkBniS,OAAOtB,GAC/C6jS,EAAU7jS,GACV8jS,EAAe9jS,EACrB,ECXA,MANA,SAAiBo9R,EAAMv2O,GACrB,OAAO,SAAS2B,GACd,OAAO40O,EAAKv2O,EAAU2B,GACxB,CACF,ECPA,EAFmBu7O,EAAQziS,OAAOkhB,eAAgBlhB,QCyBlD,MAJA,SAAsBtB,GACpB,OAAgB,MAATA,GAAiC,iBAATA,CACjC,EClBIgkS,EAAYpiR,SAASE,UACrByhR,EAAcjiS,OAAOwgB,UAGrBmiR,EAAeD,EAAUnmS,SAGzBq0B,EAAiBqxQ,EAAYrxQ,eAG7BgyQ,EAAmBD,EAAa9hR,KAAK7gB,QA2CzC,MAbA,SAAuBtB,GACrB,IAAKmkS,EAAankS,IA5CJ,mBA4CcokS,EAAWpkS,GACrC,OAAO,EAET,IAAI0gS,EAAQ2D,EAAarkS,GACzB,GAAc,OAAV0gS,EACF,OAAO,EAET,IAAI4D,EAAOpyQ,EAAe/P,KAAKu+Q,EAAO,gBAAkBA,EAAMh+Q,YAC9D,MAAsB,mBAAR4hR,GAAsBA,aAAgBA,GAClDL,EAAa9hR,KAAKmiR,IAASJ,CAC/B,6BCxCA,MAlBA,SAAiBt8L,EAAW7xF,GAgB5B,ECLA,MALA,WACE0M,KAAK8hR,SAAW,GAChB9hR,KAAKs/E,KAAO,CACd,EC0BA,MAJA,SAAY/hG,EAAOwkS,GACjB,OAAOxkS,IAAUwkS,GAAUxkS,IAAUA,GAASwkS,IAAUA,CAC1D,ECdA,MAVA,SAAsB5iN,EAAOngF,GAE3B,IADA,IAAI/G,EAASknF,EAAMlnF,OACZA,KACL,GAAI+pS,EAAG7iN,EAAMlnF,GAAQ,GAAI+G,GACvB,OAAO/G,EAGX,OAAQ,CACV,ECZI4uC,EAHapY,MAAMpP,UAGCwnB,OA4BxB,MAjBA,SAAyB7nC,GACvB,IAAI6G,EAAOma,KAAK8hR,SACZh7R,EAAQm7R,EAAap8R,EAAM7G,GAE/B,QAAI8H,EAAQ,KAIRA,GADYjB,EAAK5N,OAAS,EAE5B4N,EAAKilB,MAEL+b,EAAOnnB,KAAK7Z,EAAMiB,EAAO,KAEzBkZ,KAAKs/E,MACA,EACT,ECdA,MAPA,SAAsBtgG,GACpB,IAAI6G,EAAOma,KAAK8hR,SACZh7R,EAAQm7R,EAAap8R,EAAM7G,GAE/B,OAAO8H,EAAQ,OAAI5L,EAAY2K,EAAKiB,GAAO,EAC7C,ECDA,MAJA,SAAsB9H,GACpB,OAAOijS,EAAajiR,KAAK8hR,SAAU9iS,IAAQ,CAC7C,ECYA,MAbA,SAAsBA,EAAKzB,GACzB,IAAIsI,EAAOma,KAAK8hR,SACZh7R,EAAQm7R,EAAap8R,EAAM7G,GAQ/B,OANI8H,EAAQ,KACRkZ,KAAKs/E,KACPz5F,EAAKpG,KAAK,CAACT,EAAKzB,KAEhBsI,EAAKiB,GAAO,GAAKvJ,EAEZyiB,IACT,ECVA,SAASkiR,EAAUC,GACjB,IAAIr7R,GAAS,EACT7O,EAAoB,MAAXkqS,EAAkB,EAAIA,EAAQlqS,OAG3C,IADA+nB,KAAK1E,UACIxU,EAAQ7O,GAAQ,CACvB,IAAIkT,EAAQg3R,EAAQr7R,GACpBkZ,KAAKH,IAAI1U,EAAM,GAAIA,EAAM,GAC3B,CACF,CAGA+2R,EAAU7iR,UAAU/D,MAAQ8mR,EAC5BF,EAAU7iR,UAAkB,OAAIgjR,EAChCH,EAAU7iR,UAAU3e,IAAM4hS,EAC1BJ,EAAU7iR,UAAUO,IAAM2iR,EAC1BL,EAAU7iR,UAAUQ,IAAM2iR,EAE1B,QCjBA,MALA,WACExiR,KAAK8hR,SAAW,IAAII,EACpBliR,KAAKs/E,KAAO,CACd,ECKA,MARA,SAAqBtgG,GACnB,IAAI6G,EAAOma,KAAK8hR,SACZ1iS,EAASyG,EAAa,OAAE7G,GAG5B,OADAghB,KAAKs/E,KAAOz5F,EAAKy5F,KACVlgG,CACT,ECFA,MAJA,SAAkBJ,GAChB,OAAOghB,KAAK8hR,SAASphS,IAAI1B,EAC3B,ECEA,MAJA,SAAkBA,GAChB,OAAOghB,KAAK8hR,SAASliR,IAAI5gB,EAC3B,ECmBA,MALA,SAAkBzB,GAChB,IAAIjD,SAAciD,EAClB,OAAgB,MAATA,IAA0B,UAARjD,GAA4B,YAARA,EAC/C,ECQA,MAVA,SAAoBiD,GAClB,IAAKuwB,EAASvwB,GACZ,OAAO,EAIT,IAAIgtE,EAAMo3N,EAAWpkS,GACrB,MA5BY,qBA4BLgtE,GA3BI,8BA2BcA,GA7BZ,0BA6B6BA,GA1B7B,kBA0BgDA,CAC/D,EC7BA,EAFiB5G,EAAK,sBCAlB8+N,EAAc,WAChB,IAAIv2Q,EAAM,SAASwkB,KAAKgyP,GAAcA,EAAW5jS,MAAQ4jS,EAAW5jS,KAAK6jS,UAAY,IACrF,OAAOz2Q,EAAO,iBAAmBA,EAAO,EAC1C,CAHkB,GAgBlB,MAJA,SAAkByuQ,GAChB,QAAS8H,GAAeA,KAAc9H,CACxC,ECbI6G,GAHYriR,SAASE,UAGIjkB,SAqB7B,OAZA,SAAkBu/R,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAO6G,GAAa9hR,KAAKi7Q,EAC3B,CAAE,MAAOl/R,GAAI,CACb,IACE,OAAQk/R,EAAO,EACjB,CAAE,MAAOl/R,GAAI,CACf,CACA,MAAO,EACT,ECXImnS,GAAe,8BAGfrB,GAAYpiR,SAASE,UACrByhR,GAAcjiS,OAAOwgB,UAGrBmiR,GAAeD,GAAUnmS,SAGzBq0B,GAAiBqxQ,GAAYrxQ,eAG7BozQ,GAAa75Q,OAAO,IACtBw4Q,GAAa9hR,KAAK+P,IAAgBhZ,QAjBjB,sBAiBuC,QACvDA,QAAQ,yDAA0D,SAAW,KAmBhF,OARA,SAAsBlZ,GACpB,SAAKuwB,EAASvwB,IAAUulS,EAASvlS,MAGnBs7R,EAAWt7R,GAASslS,GAAaD,IAChC96Q,KAAKi7Q,GAASxlS,GAC/B,EChCA,OAJA,SAAkBi3N,EAAQx1N,GACxB,OAAiB,MAAVw1N,OAAiBt5N,EAAYs5N,EAAOx1N,EAC7C,ECMA,OALA,SAAmBw1N,EAAQx1N,GACzB,IAAIzB,EAAQ6vB,GAASonM,EAAQx1N,GAC7B,OAAOgkS,GAAazlS,GAASA,OAAQrC,CACvC,ECRA,GAFU+nS,GAAUt/N,EAAM,OCC1B,GAFmBs/N,GAAUpkS,OAAQ,UCWrC,OALA,WACEmhB,KAAK8hR,SAAWoB,GAAeA,GAAa,MAAQ,CAAC,EACrDljR,KAAKs/E,KAAO,CACd,ECIA,OANA,SAAoBtgG,GAClB,IAAII,EAAS4gB,KAAKJ,IAAI5gB,WAAeghB,KAAK8hR,SAAS9iS,GAEnD,OADAghB,KAAKs/E,MAAQlgG,EAAS,EAAI,EACnBA,CACT,ECLIqwB,GAHc5wB,OAAOwgB,UAGQoQ,eAoBjC,OATA,SAAiBzwB,GACf,IAAI6G,EAAOma,KAAK8hR,SAChB,GAAIoB,GAAc,CAChB,IAAI9jS,EAASyG,EAAK7G,GAClB,MArBiB,8BAqBVI,OAA4BlE,EAAYkE,CACjD,CACA,OAAOqwB,GAAe/P,KAAK7Z,EAAM7G,GAAO6G,EAAK7G,QAAO9D,CACtD,ECrBIu0B,GAHc5wB,OAAOwgB,UAGQoQ,eAgBjC,OALA,SAAiBzwB,GACf,IAAI6G,EAAOma,KAAK8hR,SAChB,OAAOoB,QAA8BhoS,IAAd2K,EAAK7G,GAAsBywB,GAAe/P,KAAK7Z,EAAM7G,EAC9E,ECEA,OAPA,SAAiBA,EAAKzB,GACpB,IAAIsI,EAAOma,KAAK8hR,SAGhB,OAFA9hR,KAAKs/E,MAAQt/E,KAAKJ,IAAI5gB,GAAO,EAAI,EACjC6G,EAAK7G,GAAQkkS,SAA0BhoS,IAAVqC,EAfV,4BAekDA,EAC9DyiB,IACT,ECPA,SAASmjR,GAAKhB,GACZ,IAAIr7R,GAAS,EACT7O,EAAoB,MAAXkqS,EAAkB,EAAIA,EAAQlqS,OAG3C,IADA+nB,KAAK1E,UACIxU,EAAQ7O,GAAQ,CACvB,IAAIkT,EAAQg3R,EAAQr7R,GACpBkZ,KAAKH,IAAI1U,EAAM,GAAIA,EAAM,GAC3B,CACF,CAGAg4R,GAAK9jR,UAAU/D,MAAQ8nR,GACvBD,GAAK9jR,UAAkB,OAAIgkR,GAC3BF,GAAK9jR,UAAU3e,IAAM4iS,GACrBH,GAAK9jR,UAAUO,IAAM2jR,GACrBJ,GAAK9jR,UAAUQ,IAAM2jR,GAErB,UCXA,OATA,WACExjR,KAAKs/E,KAAO,EACZt/E,KAAK8hR,SAAW,CACd,KAAQ,IAAIqB,GACZ,IAAO,IAAK3jR,IAAO0iR,GACnB,OAAU,IAAIiB,GAElB,ECJA,OAPA,SAAmB5lS,GACjB,IAAIjD,SAAciD,EAClB,MAAgB,UAARjD,GAA4B,UAARA,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAViD,EACU,OAAVA,CACP,ECKA,OAPA,SAAoBuC,EAAKd,GACvB,IAAI6G,EAAO/F,EAAIgiS,SACf,OAAO2B,GAAUzkS,GACb6G,EAAmB,iBAAP7G,EAAkB,SAAW,QACzC6G,EAAK/F,GACX,ECEA,OANA,SAAwBd,GACtB,IAAII,EAASskS,GAAW1jR,KAAMhhB,GAAa,OAAEA,GAE7C,OADAghB,KAAKs/E,MAAQlgG,EAAS,EAAI,EACnBA,CACT,ECAA,OAJA,SAAqBJ,GACnB,OAAO0kS,GAAW1jR,KAAMhhB,GAAK0B,IAAI1B,EACnC,ECEA,OAJA,SAAqBA,GACnB,OAAO0kS,GAAW1jR,KAAMhhB,GAAK4gB,IAAI5gB,EACnC,ECQA,OATA,SAAqBA,EAAKzB,GACxB,IAAIsI,EAAO69R,GAAW1jR,KAAMhhB,GACxBsgG,EAAOz5F,EAAKy5F,KAIhB,OAFAz5F,EAAKga,IAAI7gB,EAAKzB,GACdyiB,KAAKs/E,MAAQz5F,EAAKy5F,MAAQA,EAAO,EAAI,EAC9Bt/E,IACT,ECNA,SAAS2jR,GAASxB,GAChB,IAAIr7R,GAAS,EACT7O,EAAoB,MAAXkqS,EAAkB,EAAIA,EAAQlqS,OAG3C,IADA+nB,KAAK1E,UACIxU,EAAQ7O,GAAQ,CACvB,IAAIkT,EAAQg3R,EAAQr7R,GACpBkZ,KAAKH,IAAI1U,EAAM,GAAIA,EAAM,GAC3B,CACF,CAGAw4R,GAAStkR,UAAU/D,MAAQsoR,GAC3BD,GAAStkR,UAAkB,OAAIwkR,GAC/BF,GAAStkR,UAAU3e,IAAMojS,GACzBH,GAAStkR,UAAUO,IAAMmkR,GACzBJ,GAAStkR,UAAUQ,IAAMmkR,GAEzB,UCEA,OAhBA,SAAkBhlS,EAAKzB,GACrB,IAAIsI,EAAOma,KAAK8hR,SAChB,GAAIj8R,aAAgBq8R,EAAW,CAC7B,IAAIrH,EAAQh1R,EAAKi8R,SACjB,IAAKtiR,IAAQq7Q,EAAM5iS,OAASgsS,IAG1B,OAFApJ,EAAMp7R,KAAK,CAACT,EAAKzB,IACjByiB,KAAKs/E,OAASz5F,EAAKy5F,KACZt/E,KAETna,EAAOma,KAAK8hR,SAAW,IAAI6B,GAAS9I,EACtC,CAGA,OAFAh1R,EAAKga,IAAI7gB,EAAKzB,GACdyiB,KAAKs/E,KAAOz5F,EAAKy5F,KACVt/E,IACT,ECjBA,SAASkkR,GAAM/B,GACb,IAAIt8R,EAAOma,KAAK8hR,SAAW,IAAII,EAAUC,GACzCniR,KAAKs/E,KAAOz5F,EAAKy5F,IACnB,CAGA4kM,GAAM7kR,UAAU/D,MAAQ6oR,EACxBD,GAAM7kR,UAAkB,OAAI+kR,EAC5BF,GAAM7kR,UAAU3e,IAAM2jS,EACtBH,GAAM7kR,UAAUO,IAAM0kR,EACtBJ,GAAM7kR,UAAUQ,IAAM0kR,GAEtB,UCLA,OAZA,SAAmBplN,EAAOqlN,GAIxB,IAHA,IAAI19R,GAAS,EACT7O,EAAkB,MAATknF,EAAgB,EAAIA,EAAMlnF,SAE9B6O,EAAQ7O,IAC8B,IAAzCusS,EAASrlN,EAAMr4E,GAAQA,EAAOq4E,KAIpC,OAAOA,CACT,ECTA,GARsB,WACpB,IACE,IAAIw7M,EAAOsI,GAAUpkS,OAAQ,kBAE7B,OADA87R,EAAK,CAAC,EAAG,GAAI,CAAC,GACPA,CACT,CAAE,MAAOl/R,GAAI,CACf,CANsB,GCsBtB,OAbA,SAAyB+4N,EAAQx1N,EAAKzB,GACzB,aAAPyB,GAAsBm1C,GACxBA,GAAeqgL,EAAQx1N,EAAK,CAC1B,cAAgB,EAChB,YAAc,EACd,MAASzB,EACT,UAAY,IAGdi3N,EAAOx1N,GAAOzB,CAElB,ECfIkyB,GAHc5wB,OAAOwgB,UAGQoQ,eAoBjC,OARA,SAAqB+kM,EAAQx1N,EAAKzB,GAChC,IAAI+vD,EAAWknK,EAAOx1N,GAChBywB,GAAe/P,KAAK80M,EAAQx1N,IAAQgjS,EAAG10O,EAAU/vD,UACxCrC,IAAVqC,GAAyByB,KAAOw1N,IACnCiwE,GAAgBjwE,EAAQx1N,EAAKzB,EAEjC,ECcA,OA1BA,SAAoB4I,EAAQhE,EAAOqyN,EAAQkwE,GACzC,IAAIC,GAASnwE,EACbA,IAAWA,EAAS,CAAC,GAKrB,IAHA,IAAI1tN,GAAS,EACT7O,EAASkK,EAAMlK,SAEV6O,EAAQ7O,GAAQ,CACvB,IAAI+G,EAAMmD,EAAM2E,GAEZrD,EAAWihS,EACXA,EAAWlwE,EAAOx1N,GAAMmH,EAAOnH,GAAMA,EAAKw1N,EAAQruN,QAClDjL,OAEaA,IAAbuI,IACFA,EAAW0C,EAAOnH,IAEhB2lS,EACFF,GAAgBjwE,EAAQx1N,EAAKyE,GAE7B21R,GAAY5kE,EAAQx1N,EAAKyE,EAE7B,CACA,OAAO+wN,CACT,EClBA,OAVA,SAAmBr3N,EAAGqnS,GAIpB,IAHA,IAAI19R,GAAS,EACT1H,EAASqvB,MAAMtxB,KAEV2J,EAAQ3J,GACfiC,EAAO0H,GAAS09R,EAAS19R,GAE3B,OAAO1H,CACT,ECAA,OAJA,SAAyB7B,GACvB,OAAOmkS,EAAankS,IAVR,sBAUkBokS,EAAWpkS,EAC3C,ECXIujS,GAAcjiS,OAAOwgB,UAGrBoQ,GAAiBqxQ,GAAYrxQ,eAG7Bm1Q,GAAuB9D,GAAY8D,qBAoBnCC,GAAcC,GAAgB,WAAa,OAAOzmR,SAAW,CAA/B,IAAsCymR,GAAkB,SAASvnS,GACjG,OAAOmkS,EAAankS,IAAUkyB,GAAe/P,KAAKniB,EAAO,YACtDqnS,GAAqBllR,KAAKniB,EAAO,SACtC,EAEA,MCVA,GAFckxB,MAAMC,QCNpB,OAJA,WACE,OAAO,CACT,ECXIq2Q,GAAgC,iBAAXvgS,SAAuBA,UAAYA,QAAQ80C,UAAY90C,QAG5EwgS,GAAaD,IAAgC,iBAAV5/O,QAAsBA,SAAWA,OAAO7L,UAAY6L,OAMvF8/O,GAHgBD,IAAcA,GAAWxgS,UAAYugS,GAG5BphO,EAAKshO,YAAS/pS,EAwB3C,IArBqB+pS,GAASA,GAAOnP,cAAW56R,IAmBfgqS,GC/B7BC,GAAW,mBAoBf,OAVA,SAAiB5nS,EAAOtF,GACtB,IAAIqC,SAAciD,EAGlB,SAFAtF,EAAmB,MAAVA,EAfY,iBAewBA,KAGlC,UAARqC,GACU,UAARA,GAAoB6qS,GAASr9Q,KAAKvqB,KAChCA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQtF,CACjD,ECYA,OALA,SAAkBsF,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GA9Bb,gBA+BvB,ECAI6nS,GAAiB,CAAC,EACtBA,GAZiB,yBAYYA,GAXZ,yBAYjBA,GAXc,sBAWYA,GAVX,uBAWfA,GAVe,uBAUYA,GATZ,uBAUfA,GATsB,8BASYA,GARlB,wBAShBA,GARgB,yBAQY,EAC5BA,GAjCc,sBAiCYA,GAhCX,kBAiCfA,GApBqB,wBAoBYA,GAhCnB,oBAiCdA,GApBkB,qBAoBYA,GAhChB,iBAiCdA,GAhCe,kBAgCYA,GA/Bb,qBAgCdA,GA/Ba,gBA+BYA,GA9BT,mBA+BhBA,GA9BgB,mBA8BYA,GA7BZ,mBA8BhBA,GA7Ba,gBA6BYA,GA5BT,mBA6BhBA,GA5BiB,qBA4BY,EAc7B,OALA,SAA0B7nS,GACxB,OAAOmkS,EAAankS,IAClB8nS,GAAS9nS,EAAMtF,WAAamtS,GAAezD,EAAWpkS,GAC1D,EC5CA,OANA,SAAmBo9R,GACjB,OAAO,SAASp9R,GACd,OAAOo9R,EAAKp9R,EACd,CACF,ECRIwnS,GAAgC,iBAAXvgS,SAAuBA,UAAYA,QAAQ80C,UAAY90C,QAG5EwgS,GAAaD,IAAgC,iBAAV5/O,QAAsBA,SAAWA,OAAO7L,UAAY6L,OAMvFmgP,GAHgBN,IAAcA,GAAWxgS,UAAYugS,IAGtBlE,EAAWpyL,QAiB9C,GAdgB,WACd,IAEE,IAAImmB,EAAQowK,IAAcA,GAAWzgS,SAAWygS,GAAWzgS,QAAQ,QAAQqwH,MAE3E,OAAIA,GAKG0wK,IAAeA,GAAYC,SAAWD,GAAYC,QAAQ,OACnE,CAAE,MAAO9pS,GAAI,CACf,CAZgB,GCVZ+pS,GAAmBC,IAAYA,GAASC,aAqB5C,GAFmBF,GAAmBG,GAAUH,IAAoBI,GCbhEn2Q,GAHc5wB,OAAOwgB,UAGQoQ,eAqCjC,OA3BA,SAAuBlyB,EAAOsoS,GAC5B,IAAIC,EAAQp3Q,GAAQnxB,GAChBwoS,GAASD,GAASjB,GAAYtnS,GAC9ByoS,GAAUF,IAAUC,GAASjQ,GAASv4R,GACtC0oS,GAAUH,IAAUC,IAAUC,GAAUN,GAAanoS,GACrD2oS,EAAcJ,GAASC,GAASC,GAAUC,EAC1C7mS,EAAS8mS,EAAcC,GAAU5oS,EAAMtF,OAAQuxD,QAAU,GACzDvxD,EAASmH,EAAOnH,OAEpB,IAAK,IAAI+G,KAAOzB,GACTsoS,IAAap2Q,GAAe/P,KAAKniB,EAAOyB,IACvCknS,IAEQ,UAAPlnS,GAECgnS,IAAkB,UAAPhnS,GAA0B,UAAPA,IAE9BinS,IAAkB,UAAPjnS,GAA0B,cAAPA,GAA8B,cAAPA,IAEtDonS,GAAQpnS,EAAK/G,KAElBmH,EAAOK,KAAKT,GAGhB,OAAOI,CACT,EC7CI0hS,GAAcjiS,OAAOwgB,UAgBzB,OAPA,SAAqB9hB,GACnB,IAAIskS,EAAOtkS,GAASA,EAAM0iB,YAG1B,OAAO1iB,KAFqB,mBAARskS,GAAsBA,EAAKxiR,WAAcyhR,GAG/D,ECVA,GAFiBQ,EAAQziS,OAAOC,KAAMD,QCIlC4wB,GAHc5wB,OAAOwgB,UAGQoQ,eAsBjC,OAbA,SAAkB+kM,GAChB,IAAK6xE,GAAY7xE,GACf,OAAO8xE,GAAW9xE,GAEpB,IAAIp1N,EAAS,GACb,IAAK,IAAIJ,KAAOH,OAAO21N,GACjB/kM,GAAe/P,KAAK80M,EAAQx1N,IAAe,eAAPA,GACtCI,EAAOK,KAAKT,GAGhB,OAAOI,CACT,ECKA,OAJA,SAAqB7B,GACnB,OAAgB,MAATA,GAAiB8nS,GAAS9nS,EAAMtF,UAAY4gS,EAAWt7R,EAChE,ECMA,OAJA,SAAci3N,GACZ,OAAO+xE,GAAY/xE,GAAUgyE,GAAchyE,GAAUiyE,GAASjyE,EAChE,EClBA,OAJA,SAAoBA,EAAQruN,GAC1B,OAAOquN,GAAUvjF,GAAW9qI,EAAQrH,GAAKqH,GAASquN,EACpD,ECKA,OAVA,SAAsBA,GACpB,IAAIp1N,EAAS,GACb,GAAc,MAAVo1N,EACF,IAAK,IAAIx1N,KAAOH,OAAO21N,GACrBp1N,EAAOK,KAAKT,GAGhB,OAAOI,CACT,ECTIqwB,GAHc5wB,OAAOwgB,UAGQoQ,eAwBjC,OAfA,SAAoB+kM,GAClB,IAAK1mM,EAAS0mM,GACZ,OAAOkyE,GAAalyE,GAEtB,IAAImyE,EAAUN,GAAY7xE,GACtBp1N,EAAS,GAEb,IAAK,IAAIJ,KAAOw1N,GACD,eAAPx1N,IAAyB2nS,GAAYl3Q,GAAe/P,KAAK80M,EAAQx1N,KACrEI,EAAOK,KAAKT,GAGhB,OAAOI,CACT,ECCA,OAJA,SAAgBo1N,GACd,OAAO+xE,GAAY/xE,GAAUgyE,GAAchyE,GAAQ,GAAQoyE,GAAWpyE,EACxE,ECbA,OAJA,SAAsBA,EAAQruN,GAC5B,OAAOquN,GAAUvjF,GAAW9qI,EAAQ0gS,GAAO1gS,GAASquN,EACtD,ECXIuwE,GAAgC,iBAAXvgS,SAAuBA,UAAYA,QAAQ80C,UAAY90C,QAG5EwgS,GAAaD,IAAgC,iBAAV5/O,QAAsBA,SAAWA,OAAO7L,UAAY6L,OAMvF8/O,GAHgBD,IAAcA,GAAWxgS,UAAYugS,GAG5BphO,EAAKshO,YAAS/pS,EACvC4rS,GAAc7B,GAASA,GAAO6B,iBAAc5rS,EAqBhD,OAXA,SAAqBg7R,EAAQ6Q,GAC3B,GAAIA,EACF,OAAO7Q,EAAO74Q,QAEhB,IAAIplB,EAASi+R,EAAOj+R,OAChBmH,EAAS0nS,GAAcA,GAAY7uS,GAAU,IAAIi+R,EAAOj2Q,YAAYhoB,GAGxE,OADAi+R,EAAO9mQ,KAAKhwB,GACLA,CACT,ECbA,OAXA,SAAmB+G,EAAQg5E,GACzB,IAAIr4E,GAAS,EACT7O,EAASkO,EAAOlO,OAGpB,IADAknF,IAAUA,EAAQ1wD,MAAMx2B,MACf6O,EAAQ7O,GACfknF,EAAMr4E,GAASX,EAAOW,GAExB,OAAOq4E,CACT,ECOA,OAfA,SAAqBA,EAAOglB,GAM1B,IALA,IAAIr9F,GAAS,EACT7O,EAAkB,MAATknF,EAAgB,EAAIA,EAAMlnF,OACnC+uS,EAAW,EACX5nS,EAAS,KAEJ0H,EAAQ7O,GAAQ,CACvB,IAAIsF,EAAQ4hF,EAAMr4E,GACdq9F,EAAU5mG,EAAOuJ,EAAOq4E,KAC1B//E,EAAO4nS,KAAczpS,EAEzB,CACA,OAAO6B,CACT,ECAA,OAJA,WACE,MAAO,EACT,ECbIwlS,GAHc/lS,OAAOwgB,UAGculR,qBAGnCqC,GAAmBpoS,OAAOqoS,sBAmB9B,GAVkBD,GAA+B,SAASzyE,GACxD,OAAc,MAAVA,EACK,IAETA,EAAS31N,OAAO21N,GACT2yE,GAAYF,GAAiBzyE,IAAS,SAASroL,GACpD,OAAOy4P,GAAqBllR,KAAK80M,EAAQroL,EAC3C,IACF,EARqCi7P,GCJrC,OAJA,SAAqBjhS,EAAQquN,GAC3B,OAAOvjF,GAAW9qI,EAAQkhS,GAAWlhS,GAASquN,EAChD,ECMA,OAXA,SAAmBr1I,EAAO1gF,GAKxB,IAJA,IAAIqI,GAAS,EACT7O,EAASwG,EAAOxG,OAChBgrD,EAASk8B,EAAMlnF,SAEV6O,EAAQ7O,GACfknF,EAAMl8B,EAASn8C,GAASrI,EAAOqI,GAEjC,OAAOq4E,CACT,ECOA,GAlBuBtgF,OAAOqoS,sBASqB,SAAS1yE,GAE1D,IADA,IAAIp1N,EAAS,GACNo1N,GACL8yE,GAAUloS,EAAQioS,GAAW7yE,IAC7BA,EAASotE,EAAaptE,GAExB,OAAOp1N,CACT,EAPuCgoS,GCAvC,OAJA,SAAuBjhS,EAAQquN,GAC7B,OAAOvjF,GAAW9qI,EAAQohS,GAAaphS,GAASquN,EAClD,ECMA,OALA,SAAwBA,EAAQgzE,EAAUC,GACxC,IAAIroS,EAASooS,EAAShzE,GACtB,OAAO9lM,GAAQ8lM,GAAUp1N,EAASkoS,GAAUloS,EAAQqoS,EAAYjzE,GAClE,ECFA,OAJA,SAAoBA,GAClB,OAAOkzE,GAAelzE,EAAQ11N,GAAMuoS,GACtC,ECGA,OAJA,SAAsB7yE,GACpB,OAAOkzE,GAAelzE,EAAQqyE,GAAQU,GACxC,ECRA,GAFetE,GAAUt/N,EAAM,YCE/B,GAFcs/N,GAAUt/N,EAAM,WCE9B,GAFUs/N,GAAUt/N,EAAM,OCE1B,GAFcs/N,GAAUt/N,EAAM,WCK1BgkO,GAAS,eAETC,GAAa,mBACbC,GAAS,eACTC,GAAa,mBAEbC,GAAc,oBAGdC,GAAqBjF,GAASkF,IAC9BC,GAAgBnF,GAASvjR,IACzB2oR,GAAoBpF,GAAS5nR,IAC7BitR,GAAgBrF,GAASx+Q,IACzB8jR,GAAoBtF,GAASuF,IAS7BC,GAAS5G,GAGRsG,IAAYM,GAAO,IAAIN,GAAS,IAAIlP,YAAY,MAAQgP,IACxDvoR,IAAO+oR,GAAO,IAAI/oR,KAAQmoR,IAC1BxsR,IAAWotR,GAAOptR,GAAQuC,YAAckqR,IACxCrjR,IAAOgkR,GAAO,IAAIhkR,KAAQsjR,IAC1BS,IAAWC,GAAO,IAAID,KAAYR,MACrCS,GAAS,SAAShrS,GAChB,IAAI6B,EAASuiS,EAAWpkS,GACpBskS,EA/BQ,mBA+BDziS,EAAsB7B,EAAM0iB,iBAAc/kB,EACjDstS,EAAa3G,EAAOkB,GAASlB,GAAQ,GAEzC,GAAI2G,EACF,OAAQA,GACN,KAAKR,GAAoB,OAAOD,GAChC,KAAKG,GAAe,OAAOP,GAC3B,KAAKQ,GAAmB,OAAOP,GAC/B,KAAKQ,GAAe,OAAOP,GAC3B,KAAKQ,GAAmB,OAAOP,GAGnC,OAAO1oS,CACT,GAGF,UCrDIqwB,GAHc5wB,OAAOwgB,UAGQoQ,eAqBjC,OAZA,SAAwB0vD,GACtB,IAAIlnF,EAASknF,EAAMlnF,OACfmH,EAAS,IAAI+/E,EAAMl/D,YAAYhoB,GAOnC,OAJIA,GAA6B,iBAAZknF,EAAM,IAAkB1vD,GAAe/P,KAAKy/D,EAAO,WACtE//E,EAAO0H,MAAQq4E,EAAMr4E,MACrB1H,EAAO0Z,MAAQqmE,EAAMrmE,OAEhB1Z,CACT,EClBA,GAFiBukE,EAAKswC,WCYtB,OANA,SAA0Bw0L,GACxB,IAAIrpS,EAAS,IAAIqpS,EAAYxoR,YAAYwoR,EAAYC,YAErD,OADA,IAAIz0L,GAAW70G,GAAQygB,IAAI,IAAIo0F,GAAWw0L,IACnCrpS,CACT,ECEA,OALA,SAAuBupS,EAAU5B,GAC/B,IAAI7Q,EAAS6Q,EAAS6B,GAAiBD,EAASzS,QAAUyS,EAASzS,OACnE,OAAO,IAAIyS,EAAS1oR,YAAYi2Q,EAAQyS,EAASE,WAAYF,EAASD,WACxE,ECZII,GAAU,OAed,OANA,SAAqBC,GACnB,IAAI3pS,EAAS,IAAI2pS,EAAO9oR,YAAY8oR,EAAO5iS,OAAQ2iS,GAAQp4P,KAAKq4P,IAEhE,OADA3pS,EAAO6+L,UAAY8qG,EAAO9qG,UACnB7+L,CACT,ECXI4pS,GAAch9Q,EAASA,EAAO3M,eAAYnkB,EAC1C+tS,GAAgBD,GAAcA,GAAYl2N,aAAU53E,EAaxD,OAJA,SAAqBixC,GACnB,OAAO88P,GAAgBpqS,OAAOoqS,GAAcvpR,KAAKysB,IAAW,CAAC,CAC/D,ECAA,OALA,SAAyB+8P,EAAYnC,GACnC,IAAI7Q,EAAS6Q,EAAS6B,GAAiBM,EAAWhT,QAAUgT,EAAWhT,OACvE,OAAO,IAAIgT,EAAWjpR,YAAYi2Q,EAAQgT,EAAWL,WAAYK,EAAWjxS,OAC9E,EC+DA,OApCA,SAAwBu8N,EAAQjqJ,EAAKw8N,GACnC,IAAIlF,EAAOrtE,EAAOv0M,YAClB,OAAQsqD,GACN,IA3BiB,uBA4Bf,OAAOq+N,GAAiBp0E,GAE1B,IAvCU,mBAwCV,IAvCU,gBAwCR,OAAO,IAAIqtE,GAAMrtE,GAEnB,IAjCc,oBAkCZ,OAAO20E,GAAc30E,EAAQuyE,GAE/B,IAnCa,wBAmCI,IAlCJ,wBAmCb,IAlCU,qBAkCI,IAjCH,sBAiCkB,IAhClB,sBAiCX,IAhCW,sBAgCI,IA/BG,6BA+BmB,IA9BzB,uBA8ByC,IA7BzC,uBA8BV,OAAOqC,GAAgB50E,EAAQuyE,GAEjC,IAjDS,eA2DT,IAxDS,eAyDP,OAAO,IAAIlF,EARb,IAnDY,kBAoDZ,IAjDY,kBAkDV,OAAO,IAAIA,EAAKrtE,GAElB,IAtDY,kBAuDV,OAAO60E,GAAY70E,GAKrB,IAzDY,kBA0DV,OAAO80E,GAAY90E,GAEzB,ECvEI+0E,GAAe1qS,OAAOqhB,OA0B1B,GAhBkB,WAChB,SAASs0M,IAAU,CACnB,OAAO,SAASypE,GACd,IAAKnwQ,EAASmwQ,GACZ,MAAO,CAAC,EAEV,GAAIsL,GACF,OAAOA,GAAatL,GAEtBzpE,EAAOn1M,UAAY4+Q,EACnB,IAAI7+R,EAAS,IAAIo1N,EAEjB,OADAA,EAAOn1M,eAAYnkB,EACZkE,CACT,CACF,CAdkB,GCIlB,OANA,SAAyBo1N,GACvB,MAAqC,mBAAtBA,EAAOv0M,aAA8BomR,GAAY7xE,GAE5D,CAAC,EADDg1E,GAAW5H,EAAaptE,GAE9B,ECEA,OAJA,SAAmBj3N,GACjB,OAAOmkS,EAAankS,IAVT,gBAUmBgrS,GAAOhrS,EACvC,ECVIksS,GAAYhE,IAAYA,GAASiE,MAqBrC,GAFYD,GAAY9D,GAAU8D,IAAaE,GCP/C,OAJA,SAAmBpsS,GACjB,OAAOmkS,EAAankS,IAVT,gBAUmBgrS,GAAOhrS,EACvC,ECVIqsS,GAAYnE,IAAYA,GAASoE,MAqBrC,GAFYD,GAAYjE,GAAUiE,IAAaE,GCK3CC,GAAU,qBAKVC,GAAU,oBAIVC,GAAY,kBAoBZC,GAAgB,CAAC,EACrBA,GAAcH,IAAWG,GA7BV,kBA8BfA,GAfqB,wBAeWA,GAdd,qBAelBA,GA9Bc,oBA8BWA,GA7BX,iBA8BdA,GAfiB,yBAeWA,GAdX,yBAejBA,GAdc,sBAcWA,GAbV,uBAcfA,GAbe,uBAaWA,GA5Bb,gBA6BbA,GA5BgB,mBA4BWA,GAAcD,IACzCC,GA3BgB,mBA2BWA,GA1Bd,gBA2BbA,GA1BgB,mBA0BWA,GAzBX,mBA0BhBA,GAhBe,uBAgBWA,GAfJ,8BAgBtBA,GAfgB,wBAeWA,GAdX,yBAcsC,EACtDA,GArCe,kBAqCWA,GAAcF,IACxCE,GA5BiB,qBA4BW,EA8F5B,OA5EA,SAASC,EAAU5sS,EAAO6sS,EAAS1F,EAAY1lS,EAAKw1N,EAAQhkM,GAC1D,IAAIpxB,EACA2nS,EAnEgB,EAmEPqD,EACT5lC,EAnEgB,EAmEP4lC,EACTC,EAnEmB,EAmEVD,EAKb,GAHI1F,IACFtlS,EAASo1N,EAASkwE,EAAWnnS,EAAOyB,EAAKw1N,EAAQhkM,GAASk0Q,EAAWnnS,SAExDrC,IAAXkE,EACF,OAAOA,EAET,IAAK0uB,EAASvwB,GACZ,OAAOA,EAET,IAAIuoS,EAAQp3Q,GAAQnxB,GACpB,GAAIuoS,GAEF,GADA1mS,EAASkrS,GAAe/sS,IACnBwpS,EACH,OAAOwD,GAAUhtS,EAAO6B,OAErB,CACL,IAAImrE,EAAMg+N,GAAOhrS,GACbitS,EAASjgO,GAAOy/N,IA7EX,8BA6EsBz/N,EAE/B,GAAIurN,GAASv4R,GACX,OAAOktS,GAAYltS,EAAOwpS,GAE5B,GAAIx8N,GAAO0/N,IAAa1/N,GAAOw/N,IAAYS,IAAWh2E,GAEpD,GADAp1N,EAAUolQ,GAAUgmC,EAAU,CAAC,EAAIE,GAAgBntS,IAC9CwpS,EACH,OAAOviC,EACHmmC,GAAcptS,EAAOqtS,GAAaxrS,EAAQ7B,IAC1CstS,GAAYttS,EAAOutS,GAAW1rS,EAAQ7B,QAEvC,CACL,IAAK2sS,GAAc3/N,GACjB,OAAOiqJ,EAASj3N,EAAQ,CAAC,EAE3B6B,EAAS2rS,GAAextS,EAAOgtE,EAAKw8N,EACtC,CACF,CAEAv2Q,IAAUA,EAAQ,IAAI0zQ,IACtB,IAAI8G,EAAUx6Q,EAAM9vB,IAAInD,GACxB,GAAIytS,EACF,OAAOA,EAETx6Q,EAAM3Q,IAAItiB,EAAO6B,GAEbyqS,GAAMtsS,GACRA,EAAMwB,SAAQ,SAASksS,GACrB7rS,EAAO+1C,IAAIg1P,EAAUc,EAAUb,EAAS1F,EAAYuG,EAAU1tS,EAAOizB,GACvE,IACSk5Q,GAAMnsS,IACfA,EAAMwB,SAAQ,SAASksS,EAAUjsS,GAC/BI,EAAOygB,IAAI7gB,EAAKmrS,EAAUc,EAAUb,EAAS1F,EAAY1lS,EAAKzB,EAAOizB,GACvE,IAGF,IAIIruB,EAAQ2jS,OAAQ5qS,GAJLmvS,EACV7lC,EAAS0mC,GAAeC,GACxB3mC,EAASqiC,GAAS/nS,IAEkBvB,GASzC,OARA6tS,GAAUjpS,GAAS5E,GAAO,SAAS0tS,EAAUjsS,GACvCmD,IAEF8oS,EAAW1tS,EADXyB,EAAMisS,IAIR7R,GAAYh6R,EAAQJ,EAAKmrS,EAAUc,EAAUb,EAAS1F,EAAY1lS,EAAKzB,EAAOizB,GAChF,IACOpxB,CACT,EChIA,OAJA,SAAe7B,GACb,OAAO4sS,GAAU5sS,EA7BM,EA8BzB,ECbA,OAXA,SAAkB4hF,EAAOqlN,GAKvB,IAJA,IAAI19R,GAAS,EACT7O,EAAkB,MAATknF,EAAgB,EAAIA,EAAMlnF,OACnCmH,EAASqvB,MAAMx2B,KAEV6O,EAAQ7O,GACfmH,EAAO0H,GAAS09R,EAASrlN,EAAMr4E,GAAQA,EAAOq4E,GAEhD,OAAO//E,CACT,ECUA,OALA,SAAkB7B,GAChB,MAAuB,iBAATA,GACXmkS,EAAankS,IArBF,mBAqBYokS,EAAWpkS,EACvC,ECuBA,SAAS8tS,GAAQ1Q,EAAM1nK,GACrB,GAAmB,mBAAR0nK,GAAmC,MAAZ1nK,GAAuC,mBAAZA,EAC3D,MAAM,IAAItzG,UAhDQ,uBAkDpB,IAAI2rR,EAAW,SAAXA,IACF,IAAIr9R,EAAOoQ,UACPrf,EAAMi0H,EAAWA,EAAS/zG,MAAMc,KAAM/R,GAAQA,EAAK,GACnDogG,EAAQi9L,EAASj9L,MAErB,GAAIA,EAAMzuF,IAAI5gB,GACZ,OAAOqvG,EAAM3tG,IAAI1B,GAEnB,IAAII,EAASu7R,EAAKz7Q,MAAMc,KAAM/R,GAE9B,OADAq9R,EAASj9L,MAAQA,EAAMxuF,IAAI7gB,EAAKI,IAAWivG,EACpCjvG,CACT,EAEA,OADAksS,EAASj9L,MAAQ,IAAKg9L,GAAQE,OAAS5H,IAChC2H,CACT,CAGAD,GAAQE,MAAQ5H,GAEhB,UC/CA,ICtBI6H,GAAa,mGAGbC,GAAe,WAoBnB,GDbA,SAAuB9Q,GACrB,IAAIv7R,EAASisS,GAAQ1Q,GAAM,SAAS37R,GAIlC,OAfmB,MAYfqvG,EAAM/O,MACR+O,EAAM/yF,QAEDtc,CACT,IAEIqvG,EAAQjvG,EAAOivG,MACnB,OAAOjvG,CACT,CCRmBssS,EAAc,SAASx0J,GACxC,IAAI93I,EAAS,GAOb,OAN6B,KAAzB83I,EAAO3tF,WAAW,IACpBnqD,EAAOK,KAAK,IAEdy3I,EAAOzgI,QAAQ+0R,IAAY,SAASpjR,EAAO2vD,EAAQ4zN,EAAOC,GACxDxsS,EAAOK,KAAKksS,EAAQC,EAAUn1R,QAAQg1R,GAAc,MAAS1zN,GAAU3vD,EACzE,IACOhpB,CACT,ICJA,OARA,SAAe7B,GACb,GAAoB,iBAATA,GAAqBsuS,GAAStuS,GACvC,OAAOA,EAET,IAAI6B,EAAU7B,EAAQ,GACtB,MAAkB,KAAV6B,GAAkB,EAAI7B,IAdjB,SAcwC,KAAO6B,CAC9D,ECTI4pS,GAAch9Q,EAASA,EAAO3M,eAAYnkB,EAC1C4wS,GAAiB9C,GAAcA,GAAY5tS,cAAWF,EA0B1D,OAhBA,SAAS6wS,EAAaxuS,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAImxB,GAAQnxB,GAEV,OAAOyuS,GAASzuS,EAAOwuS,GAAgB,GAEzC,GAAIF,GAAStuS,GACX,OAAOuuS,GAAiBA,GAAepsR,KAAKniB,GAAS,GAEvD,IAAI6B,EAAU7B,EAAQ,GACtB,MAAkB,KAAV6B,GAAkB,EAAI7B,IA3BjB,SA2BwC,KAAO6B,CAC9D,ECPA,OAJA,SAAkB7B,GAChB,OAAgB,MAATA,EAAgB,GAAKwuS,GAAaxuS,EAC3C,ECOA,OAPA,SAAgBA,GACd,OAAImxB,GAAQnxB,GACHyuS,GAASzuS,EAAO0uS,IAElBJ,GAAStuS,GAAS,CAACA,GAASgtS,GAAU2B,GAAa9wS,GAASmC,IACrE,wBCFA,OAJA,SAAmBA,GACjB,OAAO4sS,GAAU5sS,EAAO4uS,EAC1B,4jBCtBaC,IAAgBvrS,EAAAA,EAAAA,oBAC3B3F,GAEFkxS,GAAcjxJ,YAAc,oBAEfkxJ,GAAiBD,GAAct0R,SAC/Bw0R,GAAiBF,GAAcG,kBAE5BroS,KACd,IAAMsoS,GAASzrS,EAAAA,EAAAA,YAA4CqrS,IAO3D,OAJII,GADJprR,GAAU,GAKHorR,CACR,CCdD,IAAaC,GAAe,SAAClvS,GAAD,OAC1BkxB,MAAMC,QAAQnxB,IAA2B,IAAjBA,EAAMtF,MADJ,EAIf4gS,GAAa,SAACvrQ,GAAD,MACT,oBAARA,CADiB,EAIbQ,GAAW,SAACR,GAAD,OACd,OAARA,GAA+B,kBAARA,CADD,EAIX8iM,GAAY,SAAC9iM,GAAD,OACvBk8B,OAAO3nC,KAAKiU,MAAMx8B,OAAOg0B,OAAWA,CADb,EAIZgpQ,GAAW,SAAChpQ,GAAD,MACkB,oBAAxCzuB,OAAOwgB,UAAUjkB,SAASskB,KAAK4N,EADT,EAQXo/Q,GAAkB,SAAC90S,GAAD,OACM,IAAnC+0S,EAAAA,SAAez7N,MAAMt5E,EADQ,EAIlBg1S,GAAY,SAACrvS,GAAD,OACvBuwB,GAASvwB,IAAUs7R,GAAWt7R,EAAM4J,KADb,EAiCzB,SAAgB0lS,GACdv/Q,EACAtuB,EACA86H,EACAj7F,QAAA,IAAAA,IAAAA,EAAY,GAGZ,IADA,IAAM1c,EAAO2qR,GAAO9tS,GACbsuB,GAAOuR,EAAI1c,EAAKlqB,QACrBq1B,EAAMA,EAAInL,EAAK0c,MAIjB,OAAIA,IAAM1c,EAAKlqB,QAAWq1B,OAIXpyB,IAARoyB,EAAoBwsG,EAAMxsG,EAHxBwsG,CAIV,CA0BD,SAAgBizK,GAAMz/Q,EAAUnL,EAAc5kB,GAM5C,IALA,IAAIgV,EAAW2c,GAAM5B,GACjB0/Q,EAAcz6R,EACd4S,EAAI,EACJ8nR,EAAYH,GAAO3qR,GAEhBgD,EAAI8nR,EAAUh1S,OAAS,EAAGktB,IAAK,CACpC,IAAM+nR,EAAsBD,EAAU9nR,GAClCgoR,EAAkBN,GAAMv/Q,EAAK2/Q,EAAU5vR,MAAM,EAAG8H,EAAI,IAExD,GAAIgoR,IAAer/Q,GAASq/Q,IAAe1+Q,MAAMC,QAAQy+Q,IACvDH,EAASA,EAAOE,GAAeh+Q,GAAMi+Q,OAChC,CACL,IAAMC,EAAmBH,EAAU9nR,EAAI,GACvC6nR,EAASA,EAAOE,GACd98E,GAAUg9E,IAAa9zS,OAAO8zS,IAAa,EAAI,GAAK,CAAC,CACxD,CACF,CAGD,OAAW,IAANjoR,EAAUmI,EAAM0/Q,GAAQC,EAAU9nR,MAAQ5nB,EACtC+vB,QAGKpyB,IAAVqC,SACKyvS,EAAOC,EAAU9nR,IAExB6nR,EAAOC,EAAU9nR,IAAM5nB,EAKf,IAAN4nB,QAAqBjqB,IAAVqC,UACNgV,EAAI06R,EAAU9nR,IAGhB5S,EACR,CASD,SAAgB86R,GACd74E,EACAj3N,EACA+vS,EACAlmS,QADA,IAAAkmS,IAAAA,EAAe,IAAIhF,cACnB,IAAAlhS,IAAAA,EAAgB,CAAC,GAEjB,IAAK,IAALmnB,EAAA,EAAAg/Q,EAAc1uS,OAAOC,KAAK01N,GAA1BjmM,EAAAg/Q,EAAAt1S,OAAAs2B,IAAmC,CAA9B,IAAI66B,EAACmkP,EAAAh/Q,GACF5Q,EAAM62M,EAAOprK,GACft7B,GAASnQ,GACN2vR,EAAQ5sS,IAAIid,KACf2vR,EAAQztR,IAAIlC,GAAK,GAIjBvW,EAASgiD,GAAK36B,MAAMC,QAAQ/Q,GAAO,GAAK,CAAC,EACzC0vR,GAAsB1vR,EAAKpgB,EAAO+vS,EAASlmS,EAASgiD,KAGtDhiD,EAASgiD,GAAK7rD,CAEjB,CAED,OAAO6J,CACR,CC3DD,IAAMomS,GAAqC,CAAC,EACtCC,GAAuC,CAAC,EAU9C,SAAgBC,GAAAl2S,WACdm2S,iBAAAA,OAAA,IAAAC,GAAmBA,MACnBC,eAAAA,OAAA,IAAAC,GAAiBA,MACjBC,gBAAAA,OAAA,IAAAC,GAAkBA,EAClBC,EAAAz2S,EAAAy2S,mBACA75R,mBAAAA,OAAA,IAAA85R,GAAqBA,EACrBvuS,EAAAnI,EAAAmI,SACG0B,EAAA8sS,GAAA32S,EAAA,0GAEG2K,EAAKwf,GAAA,CACTgsR,iBAAAA,EACAE,eAAAA,EACAE,gBAAAA,EACApuS,SAAAA,GACG0B,GAECxE,GAAgBoG,EAAAA,EAAAA,QAAad,EAAMtF,eACnCuxS,GAAgBnrS,EAAAA,EAAAA,QAAad,EAAMisS,eAAiBZ,IACpDa,GAAiBprS,EAAAA,EAAAA,QAAad,EAAMksS,gBAAkBZ,IACtDa,GAAgBrrS,EAAAA,EAAAA,QAAad,EAAMmsS,eACnCtP,GAAY/7R,EAAAA,EAAAA,SAAsB,GAClCsrS,GAAgBtrS,EAAAA,EAAAA,QAA4B,CAAC,IAYnDtG,EAAAA,EAAAA,YAAgB,WAGd,OAFAqiS,EAAU77R,SAAU,EAEb,WACL67R,EAAU77R,SAAU,CACrB,CACF,GAAE,QAEMqrS,GAAgB5zS,EAAAA,EAAAA,UAAe,GAA/B,GACH6zS,GAAWxrS,EAAAA,EAAAA,QAAkC,CACjDxE,OAAQ0D,EAAMtF,cACdlF,OAAQwK,EAAMisS,eAAiBZ,GAC/BkB,QAASvsS,EAAMksS,gBAAkBZ,GACjCpyR,OAAQlZ,EAAMmsS,cACdlqS,cAAc,EACduqS,cAAc,EACdC,YAAa,IAGT3oS,EAAQwoS,EAAStrS,QAEjB0rS,GAAWC,EAAAA,EAAAA,cAAkB,SAAC7rR,GAClC,IAAM65K,EAAO2xG,EAAStrS,QAEtBsrS,EAAStrS,QAtIb,SACE8C,EACA8oS,GAEA,OAAQA,EAAIz0S,MACV,IAAK,aACH,OAAAqnB,GAAA,GAAY1b,EAAZ,CAAmBxH,OAAQswS,EAAI1X,UACjC,IAAK,cACH,OAAA11Q,GAAA,GAAY1b,EAAZ,CAAmByoS,QAASK,EAAI1X,UAClC,IAAK,aACH,OAAI5lH,IAAQxrK,EAAMtO,OAAQo3S,EAAI1X,SACrBpxR,EAGT0b,GAAA,GAAY1b,EAAZ,CAAmBtO,OAAQo3S,EAAI1X,UACjC,IAAK,aACH,OAAA11Q,GAAA,GAAY1b,EAAZ,CAAmBoV,OAAQ0zR,EAAI1X,UACjC,IAAK,mBACH,OAAA11Q,GAAA,GAAY1b,EAAZ,CAAmB7B,aAAc2qS,EAAI1X,UACvC,IAAK,mBACH,OAAA11Q,GAAA,GAAY1b,EAAZ,CAAmB0oS,aAAcI,EAAI1X,UACvC,IAAK,kBACH,OAAA11Q,GAAA,GACK1b,EADL,CAEExH,OAAQsuS,GAAM9mS,EAAMxH,OAAQswS,EAAI1X,QAAQz1R,MAAOmtS,EAAI1X,QAAQ95R,SAE/D,IAAK,oBACH,OAAAokB,GAAA,GACK1b,EADL,CAEEyoS,QAAS3B,GAAM9mS,EAAMyoS,QAASK,EAAI1X,QAAQz1R,MAAOmtS,EAAI1X,QAAQ95R,SAEjE,IAAK,kBACH,OAAAokB,GAAA,GACK1b,EADL,CAEEtO,OAAQo1S,GAAM9mS,EAAMtO,OAAQo3S,EAAI1X,QAAQz1R,MAAOmtS,EAAI1X,QAAQ95R,SAE/D,IAAK,aACH,OAAAokB,GAAA,GAAY1b,EAAU8oS,EAAI1X,SAC5B,IAAK,mBACH,OAAO0X,EAAI1X,QAAQpxR,GACrB,IAAK,iBACH,OAAA0b,GAAA,GACK1b,EADL,CAEEyoS,QAASrB,GACPpnS,EAAMxH,QACN,GAEF2F,cAAc,EACdwqS,YAAa3oS,EAAM2oS,YAAc,IAErC,IAAK,iBAKL,IAAK,iBACH,OAAAjtR,GAAA,GACK1b,EADL,CAEE7B,cAAc,IAElB,QACE,OAAO6B,EAEZ,CAuEsB+oS,CAAclyG,EAAM75K,GAGnC65K,IAAS2xG,EAAStrS,SAASqrS,GAAa,SAAA5hQ,GAAC,OAAIA,EAAI,CAAR,GAC9C,GAAE,IAEGqiQ,GAAqBH,EAAAA,EAAAA,cACzB,SAACrwS,EAAgBmD,GACf,OAAO,IAAIuZ,SAAQ,SAACuC,EAAStC,GAC3B,IAAM8zR,EAAuB/sS,EAAMb,SAAiB7C,EAAQmD,GACjC,MAAvBstS,EAEFxxR,EAAQ8vR,IACCZ,GAAUsC,GAClBA,EAAqC/nS,MACpC,SAAAxP,GACE+lB,EAAQ/lB,GAAU61S,GACnB,IACD,SAAA2B,GAQE/zR,EAAO+zR,EACR,IAGHzxR,EAAQwxR,EAEX,GACF,GACD,CAAC/sS,EAAMb,WAMH8tS,GAAsBN,EAAAA,EAAAA,cAC1B,SAACrwS,EAAgBmD,GACf,IAAM5D,EAAmBmE,EAAMnE,iBACzBgN,EAAS6tR,GAAW76R,GACtBA,EAAiB4D,GACjB5D,EACEkJ,EACJtF,GAASoJ,EAAOqkS,WACZrkS,EAAOqkS,WAAWztS,EAAOnD,GAu0BrC,SACEA,EACAuM,EACAskS,EACAxuS,QADA,IAAAwuS,IAAAA,GAAgB,GAGhB,IAAMC,EAAiCC,GAAyB/wS,GAEhE,OAAOuM,EAAOskS,EAAO,eAAiB,YAAYC,EAAkB,CAClEE,YAAY,EACZ3uS,QAASA,GAAWyuS,GAEvB,CAl1BWG,CAAkBjxS,EAAQuM,GAChC,OAAO,IAAImQ,SAAQ,SAACuC,EAAStC,GAC3BlU,EAAQC,MACN,WACEuW,EAAQ8vR,GACT,IACD,SAAC1vS,GAKkB,oBAAbA,EAAI1F,KACNslB,EAwyBd,SAAwCiyR,GACtC,IAAIh4S,EAA+B,CAAC,EACpC,GAAIg4S,EAAS5+B,MAAO,CAClB,GAA8B,IAA1B4+B,EAAS5+B,MAAM94Q,OACjB,OAAO80S,GAAMp1S,EAAQg4S,EAASxtR,KAAMwtR,EAASr8R,SAE1C,IAALtW,EAAgB2yS,EAAS5+B,MAAzB6+B,EAAAnhR,MAAAC,QAAA1xB,GAAAuxB,EAAA,MAAAvxB,EAAA4yS,EAAA5yS,EAAAA,EAAAgvB,OAAA6jR,cAAgC,KAAAC,EAAA,GAAAF,EAAA,IAAArhR,GAAAvxB,EAAA/E,OAAA,MAAA63S,EAAA9yS,EAAAuxB,IAAA,UAAAA,EAAAvxB,EAAA8gF,QAAA1gF,KAAA,MAAA0yS,EAAAvhR,EAAAhxB,KAAA,KAAvBO,EAAuBgyS,EACzBjD,GAAMl1S,EAAQmG,EAAIqkB,QACrBxqB,EAASo1S,GAAMp1S,EAAQmG,EAAIqkB,KAAMrkB,EAAIwV,SAExC,CACF,CACD,OAAO3b,CACR,CArzBqBo4S,CAAgBjyS,IAUxBsd,EAAOtd,EAEV,GAEJ,GACF,GACD,CAACqE,EAAMnE,mBAGHgyS,GAAgClB,EAAAA,EAAAA,cACpC,SAACltS,EAAerE,GACd,OAAO,IAAI4d,SAAQ,SAAAuC,GAAO,OACxBA,EAAQ6wR,EAAcprS,QAAQvB,GAAON,SAAS/D,GADtB,GAG3B,GACD,IAGI0yS,GAA2BnB,EAAAA,EAAAA,cAC/B,SAACrwS,GACC,IAAMyxS,EAAoCrxS,OAAOC,KAC/CyvS,EAAcprS,SACdhF,QAAO,SAAAJ,GAAC,OAAI86R,GAAW0V,EAAcprS,QAAQpF,GAAGuD,SAAxC,IAGJ6uS,EACJD,EAAwBj4S,OAAS,EAC7Bi4S,EAAwBpwS,KAAI,SAAA/B,GAAC,OAC3BiyS,EAA8BjyS,EAAG8uS,GAAMpuS,EAAQV,GADpB,IAG7B,CAACod,QAAQuC,QAAQ,oCAEvB,OAAOvC,QAAQ5U,IAAI4pS,GAAkBhpS,MAAK,SAACipS,GAAD,OACxCA,EAAgBxoR,QAAO,SAACk1K,EAAMuzG,EAAMvpS,GAClC,MAAa,oCAATupS,GAGAA,IACFvzG,EAAOiwG,GAAMjwG,EAAMozG,EAAwBppS,GAAQupS,IAH5CvzG,CAMV,GAAE,CAAC,EAToC,GAW3C,GACD,CAACkzG,IAIGM,GAAoBxB,EAAAA,EAAAA,cACxB,SAACrwS,GACC,OAAO0c,QAAQ5U,IAAI,CACjB0pS,EAAyBxxS,GACzB0D,EAAMnE,iBAAmBoxS,EAAoB3wS,GAAU,CAAC,EACxD0D,EAAMb,SAAW2tS,EAAmBxwS,GAAU,CAAC,IAC9C0I,MAAK,SAAAvH,OAAE2wS,EAAA3wS,EAAA,GAAa4wS,EAAA5wS,EAAA,GAAc6wS,EAAA7wS,EAAA,GAKnC,OAJuB0uB,EAAU/nB,IAC/B,CAACgqS,EAAaC,EAAcC,GAC5B,CAAElQ,WAAAA,IAGL,GACF,GACD,CACEp+R,EAAMb,SACNa,EAAMnE,iBACNiyS,EACAhB,EACAG,IAKEsB,EAA+BC,IACnC,SAAClyS,GAEC,YAFD,IAAAA,IAAAA,EAAiBwH,EAAMxH,QACtBowS,EAAS,CAAEv0S,KAAM,mBAAoB+8R,SAAS,IACvCiZ,EAAkB7xS,GAAQ0I,MAAK,SAAAypS,GAKpC,OAJM5R,EAAU77R,UACd0rS,EAAS,CAAEv0S,KAAM,mBAAoB+8R,SAAS,IAC9CwX,EAAS,CAAEv0S,KAAM,aAAc+8R,QAASuZ,KAEnCA,CACR,GACF,KAGHj0S,EAAAA,EAAAA,YAAgB,WAEZoxS,IACsB,IAAtB/O,EAAU77R,SACVsuK,IAAQ50K,EAAcsG,QAAShB,EAAMtF,gBAErC6zS,EAA6B7zS,EAAcsG,QAE9C,GAAE,CAAC4qS,EAAiB2C,IAErB,IAAMrsS,GAAYyqS,EAAAA,EAAAA,cAChB,SAAC+B,GACC,IAAMpyS,EACJoyS,GAAaA,EAAUpyS,OACnBoyS,EAAUpyS,OACV5B,EAAcsG,QACdxL,EACJk5S,GAAaA,EAAUl5S,OACnBk5S,EAAUl5S,OACVy2S,EAAcjrS,QACdirS,EAAcjrS,QACdhB,EAAMisS,eAAiB,CAAC,EACxBM,EACJmC,GAAaA,EAAUnC,QACnBmC,EAAUnC,QACVL,EAAelrS,QACfkrS,EAAelrS,QACfhB,EAAMksS,gBAAkB,CAAC,EACzBhzR,EACJw1R,GAAaA,EAAUx1R,OACnBw1R,EAAUx1R,OACVizR,EAAcnrS,QACdmrS,EAAcnrS,QACdhB,EAAMmsS,cACZzxS,EAAcsG,QAAU1E,EACxB2vS,EAAcjrS,QAAUxL,EACxB02S,EAAelrS,QAAUurS,EACzBJ,EAAcnrS,QAAUkY,EAExB,IAAMy1R,EAAa,WACjBjC,EAAS,CACPv0S,KAAM,aACN+8R,QAAS,CACPjzR,eAAgBysS,KAAeA,EAAUzsS,aACzCzM,OAAAA,EACA+2S,QAAAA,EACArzR,OAAAA,EACA5c,OAAAA,EACAkwS,eAAgBkC,KAAeA,EAAUlC,aACzCC,YACIiC,GACAA,EAAUjC,aACqB,kBAA1BiC,EAAUjC,YACbiC,EAAUjC,YACV,IAGX,EAED,GAAIzsS,EAAM4uS,QAAS,CACjB,IAAMC,EAAwB7uS,EAAM4uS,QAClC9qS,EAAMxH,OACNwyS,GAGErE,GAAUoE,GACXA,EAAsC7pS,KAAK2pS,GAE5CA,GAEH,MACCA,GAEH,GACD,CAAC3uS,EAAMisS,cAAejsS,EAAMmsS,cAAensS,EAAMksS,eAAgBlsS,EAAM4uS,WAGzEp0S,EAAAA,EAAAA,YAAgB,YAEU,IAAtBqiS,EAAU77R,SACTsuK,IAAQ50K,EAAcsG,QAAShB,EAAMtF,gBAElCuX,IACFvX,EAAcsG,QAAUhB,EAAMtF,cAC9BwH,IACI0pS,GACF2C,EAA6B7zS,EAAcsG,SAIlD,GAAE,CACDiR,EACAjS,EAAMtF,cACNwH,EACA0pS,EACA2C,KAGF/zS,EAAAA,EAAAA,YAAgB,WAEZyX,IACsB,IAAtB4qR,EAAU77R,UACTsuK,IAAQ28H,EAAcjrS,QAAShB,EAAMisS,iBAEtCA,EAAcjrS,QAAUhB,EAAMisS,eAAiBZ,GAC/CqB,EAAS,CACPv0S,KAAM,aACN+8R,QAASl1R,EAAMisS,eAAiBZ,KAGrC,GAAE,CAACp5R,EAAoBjS,EAAMisS,iBAE9BzxS,EAAAA,EAAAA,YAAgB,WAEZyX,IACsB,IAAtB4qR,EAAU77R,UACTsuK,IAAQ48H,EAAelrS,QAAShB,EAAMksS,kBAEvCA,EAAelrS,QAAUhB,EAAMksS,gBAAkBZ,GACjDoB,EAAS,CACPv0S,KAAM,cACN+8R,QAASl1R,EAAMksS,gBAAkBZ,KAGtC,GAAE,CAACr5R,EAAoBjS,EAAMksS,kBAE9B1xS,EAAAA,EAAAA,YAAgB,WAEZyX,IACsB,IAAtB4qR,EAAU77R,UACTsuK,IAAQ68H,EAAcnrS,QAAShB,EAAMmsS,iBAEtCA,EAAcnrS,QAAUhB,EAAMmsS,cAC9BO,EAAS,CACPv0S,KAAM,aACN+8R,QAASl1R,EAAMmsS,gBAGpB,GAAE,CAACl6R,EAAoBjS,EAAMmsS,cAAensS,EAAMksS,iBAEnD,IAAM6C,EAAgBP,IAAiB,SAACv4S,GAKtC,GACEm2S,EAAcprS,QAAQ/K,IACtBygS,GAAW0V,EAAcprS,QAAQ/K,GAAMkJ,UACvC,CACA,IAAM/D,EAAQsvS,GAAM5mS,EAAMxH,OAAQrG,GAC5B+4S,EAAe5C,EAAcprS,QAAQ/K,GAAMkJ,SAAS/D,GAC1D,OAAIqvS,GAAUuE,IAEZtC,EAAS,CAAEv0S,KAAM,mBAAoB+8R,SAAS,IACvC8Z,EACJhqS,MAAK,SAACylC,GAAD,OAAYA,CAAZ,IACLzlC,MAAK,SAAC/F,GACLytS,EAAS,CACPv0S,KAAM,kBACN+8R,QAAS,CAAEz1R,MAAOxJ,EAAMmF,MAAO6D,KAEjCytS,EAAS,CAAEv0S,KAAM,mBAAoB+8R,SAAS,GAC/C,MAEHwX,EAAS,CACPv0S,KAAM,kBACN+8R,QAAS,CACPz1R,MAAOxJ,EACPmF,MAAO4zS,KAGJh2R,QAAQuC,QAAQyzR,GAE1B,CAAM,OAAIhvS,EAAMnE,kBACf6wS,EAAS,CAAEv0S,KAAM,mBAAoB+8R,SAAS,IACvC+X,EAAoBnpS,EAAMxH,OAAQrG,GACtC+O,MAAK,SAACylC,GAAD,OAAYA,CAAZ,IACLzlC,MAAK,SAAC/F,GACLytS,EAAS,CACPv0S,KAAM,kBACN+8R,QAAS,CAAEz1R,MAAOxJ,EAAMmF,MAAOsvS,GAAMzrS,EAAOhJ,MAE9Cy2S,EAAS,CAAEv0S,KAAM,mBAAoB+8R,SAAS,GAC/C,KAGEl8Q,QAAQuC,SAChB,IAEK0zR,GAAgBtC,EAAAA,EAAAA,cAAkB,SAAC12S,EAAD2Y,OAAiBzP,EAAAyP,EAAAzP,SACvDitS,EAAcprS,QAAQ/K,GAAQ,CAC5BkJ,SAAAA,EAEH,GAAE,IAEG+vS,GAAkBvC,EAAAA,EAAAA,cAAkB,SAAC12S,UAClCm2S,EAAcprS,QAAQ/K,EAC9B,GAAE,IAEG8J,EAAayuS,IACjB,SAACjC,EAAgC4C,GAI/B,OAHAzC,EAAS,CAAEv0S,KAAM,cAAe+8R,QAASqX,UAEpBxzS,IAAnBo2S,EAA+BzD,EAAiByD,GAE9CZ,EAA6BzqS,EAAMxH,QACnC0c,QAAQuC,SACb,IAGGjN,GAAYq+R,EAAAA,EAAAA,cAAkB,SAACn3S,GACnCk3S,EAAS,CAAEv0S,KAAM,aAAc+8R,QAAS1/R,GACzC,GAAE,IAEG45S,EAAYZ,IAChB,SAAClyS,EAAsC6yS,GACrC,IAAME,EAAiB3Y,GAAWp6R,GAAUA,EAAOwH,EAAMxH,QAAUA,EAKnE,OAHAowS,EAAS,CAAEv0S,KAAM,aAAc+8R,QAASma,UAEnBt2S,IAAnBo2S,EAA+B3D,EAAmB2D,GAEhDZ,EAA6Bc,GAC7Br2R,QAAQuC,SACb,IAGG+zR,GAAgB3C,EAAAA,EAAAA,cACpB,SAACltS,EAAerE,GACdsxS,EAAS,CACPv0S,KAAM,kBACN+8R,QAAS,CAAEz1R,MAAAA,EAAOrE,MAAAA,IAErB,GACD,IAGIm0S,EAAgBf,IACpB,SAAC/uS,EAAerE,EAAY+zS,GAU1B,OATAzC,EAAS,CACPv0S,KAAM,kBACN+8R,QAAS,CACPz1R,MAAAA,EACArE,MAAAA,WAIiBrC,IAAnBo2S,EAA+B3D,EAAmB2D,GAEhDZ,EAA6B3D,GAAM9mS,EAAMxH,OAAQmD,EAAOrE,IACxD4d,QAAQuC,SACb,IAGGi0R,GAAgB7C,EAAAA,EAAAA,cACpB,SAAC8C,EAAmDC,GAIlD,IAEIhnM,EAFAjpG,EAAQiwS,EACRl0R,EAAMi0R,EAIV,IAAKtb,GAASsb,GAAmB,CAG1BA,EAAyBE,SAC3BF,EAA4CE,UAE/C,IAAM3zP,EAASyzP,EAAiBzzP,OAC3ByzP,EAA4CzzP,OAC5CyzP,EAA4CjiP,cAG/Cr1D,EAQE6jD,EARF7jD,KACAlC,EAOE+lD,EAPF/lD,KACAwM,EAMEu5C,EANFv5C,GACArH,EAKE4gD,EALF5gD,MACA5B,EAIEwiD,EAJFxiD,QAEA+kB,GAEEy9B,EAHF9sB,UAGE8sB,EAFFz9B,SACAqxR,EACE5zP,EADF4zP,SAGFnwS,EAAQiwS,IAAwBz5S,GAAcwM,GAQ9C+Y,EAAM,eAAemK,KAAKxtB,IACpBuwG,EAAS5kE,WAAW1oC,GAASu8B,MAAM+wE,GAAU,GAAKA,GACpD,WAAW/iF,KAAKxtB,GA6f5B,SACEoJ,EACA/H,EACAq2S,GAGA,GAA4B,mBAAjBtuS,EACT,OAAOuuS,QAAQt2S,GAIjB,IAAIu2S,EAAuB,GACvBC,GAAiB,EACjBrrS,GAAS,EAEb,GAAK2nB,MAAMC,QAAQhrB,GAOjBwuS,EAAuBxuS,EAEvByuS,GADArrS,EAAQpD,EAAa4S,QAAQ07R,KACH,OAP1B,IAAKA,GAA0B,QAAbA,GAAoC,SAAbA,EACvC,OAAOC,QAAQt2S,GAUnB,GAAIA,GAAWq2S,IAAcG,EAC3B,OAAOD,EAAqBvxS,OAAOqxS,GAIrC,IAAKG,EACH,OAAOD,EAIT,OAAOA,EACJ70R,MAAM,EAAGvW,GACTnG,OAAOuxS,EAAqB70R,MAAMvW,EAAQ,GAC9C,CAriBWsrS,CAAoBvF,GAAM5mS,EAAMxH,OAAQmD,GAASjG,EAAS4B,GAC1DmjB,GAAWqxR,EAofvB,SAA2BrxR,GACzB,OAAO+N,MAAMrE,KAAK1J,GACfviB,QAAO,SAAAk7C,GAAE,OAAIA,EAAG4uD,QAAP,IACTnoG,KAAI,SAAAu5C,GAAE,OAAIA,EAAG97C,KAAP,GACV,CAvfW80S,CAAkB3xR,GAClBnjB,CACL,CAEGqE,GAEF8vS,EAAc9vS,EAAO+b,EAExB,GACD,CAAC+zR,EAAezrS,EAAMxH,SAGlB6zS,EAAe3B,IACnB,SACE4B,GAEA,GAAIjc,GAASic,GACX,OAAO,SAAAxwS,GAAK,OAAI4vS,EAAc5vS,EAAOwwS,EAAzB,EAEZZ,EAAcY,EAEjB,IAGGC,EAAkB7B,IACtB,SAAC/uS,EAAe8sS,EAAyB4C,GAUvC,YAVc,IAAA5C,IAAAA,GAAmB,GACjCG,EAAS,CACPv0S,KAAM,oBACN+8R,QAAS,CACPz1R,MAAAA,EACArE,MAAOmxS,WAIUxzS,IAAnBo2S,EAA+BzD,EAAiByD,GAE9CZ,EAA6BzqS,EAAMxH,QACnC0c,QAAQuC,SACb,IAGG+0R,GAAc3D,EAAAA,EAAAA,cAClB,SAACrzS,EAAQ0mB,GACH1mB,EAAEq2S,SACJr2S,EAAEq2S,gBAE4Br2S,EAAE0iD,OAA1B/lD,EAAAs6S,EAAAt6S,KAAMwM,EAAA8tS,EAAA9tS,GACRhD,GADY8wS,EAAArhR,UACJlP,IAAc/pB,GAAcwM,IAU1C4tS,EAAgB5wS,GAAO,EACxB,GACD,CAAC4wS,IAGGG,EAAahC,IACjB,SAACiC,GACC,GAAItc,GAASsc,GACX,OAAO,SAAA7wS,GAAK,OAAI0wS,EAAY1wS,EAAO6wS,EAAvB,EAEZH,EAAYG,EAEf,IAGGC,GAAiB/D,EAAAA,EAAAA,cACrB,SACEgE,GAIIja,GAAWia,GACbjE,EAAS,CAAEv0S,KAAM,mBAAoB+8R,QAASyb,IAE9CjE,EAAS,CAAEv0S,KAAM,mBAAoB+8R,QAAS,kBAAMyb,CAAN,GAEjD,GACD,IAGIC,GAAYjE,EAAAA,EAAAA,cAAkB,SAACzzR,GACnCwzR,EAAS,CAAEv0S,KAAM,aAAc+8R,QAASh8Q,GACzC,GAAE,IAEGvK,GAAgBg+R,EAAAA,EAAAA,cAAkB,SAAC1qS,GACvCyqS,EAAS,CAAEv0S,KAAM,mBAAoB+8R,QAASjzR,GAC/C,GAAE,IAEGmB,EAAaorS,IAAiB,WAElC,OADA9B,EAAS,CAAEv0S,KAAM,mBACVo2S,IAA+BvpS,MACpC,SAACypS,GAQC,IAAMoC,EAAoBpC,aAA0B5vS,MAGpD,IADGgyS,GAA4D,IAAvCn0S,OAAOC,KAAK8xS,GAAgB34S,OAC/B,CAWnB,IAAIg7S,EACJ,IAIE,QAA2B/3S,KAH3B+3S,EAAqBC,KAInB,MAEH,CAAC,MAAO9xS,GACP,MAAMA,CACP,CAED,OAAO+Z,QAAQuC,QAAQu1R,GACpB9rS,MAAK,SAAA/H,GAIJ,OAHM4/R,EAAU77R,SACd0rS,EAAS,CAAEv0S,KAAM,mBAEZ8E,CACR,IANI,OAOE,SAAA+zS,GACL,GAAMnU,EAAU77R,QAId,MAHA0rS,EAAS,CAAEv0S,KAAM,mBAGX64S,CAET,GACJ,CAAM,GAAMnU,EAAU77R,UAErB0rS,EAAS,CAAEv0S,KAAM,mBAEb04S,GACF,MAAMpC,CAIX,GAEJ,IAEKwC,EAAezC,IACnB,SAACl1S,GACKA,GAAKA,EAAEi1D,gBAAkBmoO,GAAWp9R,EAAEi1D,iBACxCj1D,EAAEi1D,iBAGAj1D,GAAKA,EAAEutE,iBAAmB6vN,GAAWp9R,EAAEutE,kBACzCvtE,EAAEutE,kBAsBJzjE,IAAU,OAAS,SAAAqG,GACjB2V,QAAQC,KAAR,2DAEE5V,EAEH,GACF,IAGGqlS,EAA2C,CAC/C5sS,UAAAA,EACAgvS,aAAc3C,EACdQ,cAAAA,EACAzgS,UAAAA,EACAghS,cAAAA,EACAe,gBAAAA,EACAd,cAAAA,EACAqB,UAAAA,EACAjiS,cAAAA,EACA5O,WAAAA,EACAqvS,UAAAA,EACAsB,eAAAA,EACAttS,WAAAA,GAGI2tS,EAAgBvC,IAAiB,WACrC,OAAOhxS,EAASsG,EAAMxH,OAAQwyS,EAC/B,IAEKqC,EAAc3C,IAAiB,SAAAl1S,GAC/BA,GAAKA,EAAEi1D,gBAAkBmoO,GAAWp9R,EAAEi1D,iBACxCj1D,EAAEi1D,iBAGAj1D,GAAKA,EAAEutE,iBAAmB6vN,GAAWp9R,EAAEutE,kBACzCvtE,EAAEutE,kBAGJ3kE,GACD,IAEKkvS,IAAezE,EAAAA,EAAAA,cACnB,SAAC12S,GACC,MAAO,CACLmF,MAAOsvS,GAAM5mS,EAAMxH,OAAQrG,GAC3BgJ,MAAOyrS,GAAM5mS,EAAMtO,OAAQS,GAC3Bs2S,UAAW7B,GAAM5mS,EAAMyoS,QAASt2S,GAChCspR,aAAcmrB,GAAMhwS,EAAcsG,QAAS/K,GAC3Ci2S,iBAAkBxB,GAAMwB,EAAelrS,QAAS/K,GAChDo7S,aAAc3G,GAAMuB,EAAcjrS,QAAS/K,GAE9C,GACD,CAAC6N,EAAMtO,OAAQsO,EAAMyoS,QAASzoS,EAAMxH,SAGhCg1S,IAAkB3E,EAAAA,EAAAA,cACtB,SAAC12S,GACC,MAAO,CACL4J,SAAU,SAACzE,EAAY+zS,GAAb,OACRI,EAAct5S,EAAMmF,EAAO+zS,EADnB,EAEVpvS,WAAY,SAAC3E,EAAgB+zS,GAAjB,OACVkB,EAAgBp6S,EAAMmF,EAAO+zS,EADnB,EAEZoC,SAAU,SAACn2S,GAAD,OAAgBk0S,EAAcr5S,EAAMmF,EAApC,EAEb,GACD,CAACm0S,EAAec,EAAiBf,IAG7BkC,IAAgB7E,EAAAA,EAAAA,cACpB,SAAC8E,GACC,IAAMC,EAAa/lR,GAAS8lR,GACtBx7S,EAAOy7S,EACRD,EAAmCx7S,KACpCw7S,EACEE,EAAajH,GAAM5mS,EAAMxH,OAAQrG,GAEjCwJ,EAA8B,CAClCxJ,KAAAA,EACAmF,MAAOu2S,EACP/2B,SAAUu1B,EACVrwS,OAAQ0wS,GAEV,GAAIkB,EAAY,KAEZv5S,EAIEs5S,EAJFt5S,KACO03S,EAGL4B,EAHFr2S,MACIw2S,EAEFH,EAFFI,GACAjC,EACE6B,EADF7B,SAGW,aAATz3S,OACgBY,IAAd82S,EACFpwS,EAAMjG,UAAYm4S,GAElBlyS,EAAMjG,WACJ8yB,MAAMC,QAAQolR,MAAgBA,EAAWx9R,QAAQ07R,IAEnDpwS,EAAMrE,MAAQy0S,GAEE,UAAT13S,GACTsH,EAAMjG,QAAUm4S,IAAe9B,EAC/BpwS,EAAMrE,MAAQy0S,GACE,WAAP+B,GAAmBhC,IAC5BnwS,EAAMrE,MAAQqE,EAAMrE,OAAS,GAC7BqE,EAAMmwS,UAAW,EAEpB,CACD,OAAOnwS,CACR,GACD,CAAC+wS,EAAYL,EAAcrsS,EAAMxH,SAG7B0F,IAAQtK,EAAAA,EAAAA,UACZ,kBAAO43K,IAAQ50K,EAAcsG,QAAS8C,EAAMxH,OAA5C,GACA,CAAC5B,EAAcsG,QAAS8C,EAAMxH,SAG1BsX,IAAUlc,EAAAA,EAAAA,UACd,iBAC4B,qBAAnBo0S,EACH9pS,GACE8B,EAAMtO,QAA+C,IAArCkH,OAAOC,KAAKmH,EAAMtO,QAAQM,QACvB,IAAnBg2S,GAA4BpV,GAAWoV,GACtCA,EAA4D9rS,GAC5D8rS,EACHhoS,EAAMtO,QAA+C,IAArCkH,OAAOC,KAAKmH,EAAMtO,QAAQM,MAPhD,GAQA,CAACg2S,EAAgB9pS,GAAO8B,EAAMtO,OAAQwK,IAsCxC,OAnCSwf,GAAA,GACJ1b,EADI,CAEPpJ,cAAeA,EAAcsG,QAC7BirS,cAAeA,EAAcjrS,QAC7BkrS,eAAgBA,EAAelrS,QAC/BmrS,cAAeA,EAAcnrS,QAC7BwvS,WAAAA,EACAL,aAAAA,EACAgB,YAAAA,EACAF,aAAAA,EACA/uS,UAAAA,EACAoM,UAAAA,EACAoiS,eAAAA,EACAL,gBAAAA,EACAd,cAAAA,EACAD,cAAAA,EACAsB,UAAAA,EACAjiS,cAAAA,EACA5O,WAAAA,EACAqvS,UAAAA,EACAhsS,WAAAA,EACA8tS,aAAc3C,EACdQ,cAAAA,EACAn7R,QAAAA,GACA5R,MAAAA,GACAktS,gBAAAA,EACAD,cAAAA,EACAuC,cAAAA,GACAJ,aAAAA,GACAE,gBAAAA,GACA5F,eAAAA,EACAF,iBAAAA,EACAI,gBAAAA,GAIH,CAED,SAAgBruS,GAGdyC,GACA,IAAM8xS,EAAYvG,GAAkBvrS,GAC5B8C,EAA0C9C,EAA1C8C,UAAWrN,EAA+BuK,EAA/BvK,SAAU0zD,EAAqBnpD,EAArBmpD,OAAQ4oP,EAAa/xS,EAAb+xS,SAerC,OAZAC,EAAAA,EAAAA,qBAA0BD,GAAU,kBAAMD,CAAN,KAalCrjR,EAAAA,EAAAA,eAACy7Q,GAAD,CAAgB9uS,MAAO02S,GACpBhvS,GACG2rB,EAAAA,EAAAA,eAAoB3rB,EAAkBgvS,GACtC3oP,EACAA,EAAO2oP,GACPr8S,EACAihS,GAAWjhS,GACRA,EACCq8S,GAEDvH,GAAgB90S,GAEjB,KADA+0S,EAAAA,SAAeyH,KAAKx8S,GAEtB,KAGT,CAyDD,SAAgB43S,GACd/wS,GAEA,IAAIoH,EAAqB4oB,MAAMC,QAAQjwB,GAAU,GAAK,CAAC,EACvD,IAAK,IAAI2qD,KAAK3qD,EACZ,GAAII,OAAOwgB,UAAUoQ,eAAe/P,KAAKjhB,EAAQ2qD,GAAI,CACnD,IAAMpqD,EAAMwqD,OAAOJ,IACgB,IAA/B36B,MAAMC,QAAQjwB,EAAOO,IACvB6G,EAAK7G,GAAOP,EAAOO,GAAKc,KAAI,SAACvC,GAC3B,OAA6B,IAAzBkxB,MAAMC,QAAQnxB,IAAmBqqG,EAAcrqG,GAC1CiyS,GAAyBjyS,GAEf,KAAVA,EAAeA,OAAQrC,CAEjC,IACQ0sG,EAAcnpG,EAAOO,IAC9B6G,EAAK7G,GAAOwwS,GAAyB/wS,EAAOO,IAE5C6G,EAAK7G,GAAuB,KAAhBP,EAAOO,GAAcP,EAAOO,QAAO9D,CAElD,CAEH,OAAO2K,CACR,CAMD,SAAS06R,GAAWpiP,EAAeh4C,EAAeua,GAChD,IAAMyN,EAAcgwB,EAAO9gC,QAe3B,OAbAlX,EAAOpH,SAAQ,SAAetD,EAAQ0pB,GACpC,GAA8B,qBAAnBgJ,EAAYhJ,GAAoB,CACzC,IACMkvR,GADmC,IAAlB3zR,EAAQwO,OACOxO,EAAQo/Q,kBAAkBrkS,GAChE0yB,EAAYhJ,GAAKkvR,EACb/lR,EAAUG,MAAMC,QAAQjzB,GAAK,GAAK,CAAC,EAAGA,EAAGilB,GACzCjlB,CACL,MAAUilB,EAAQo/Q,kBAAkBrkS,GACnC0yB,EAAYhJ,GAAKmJ,EAAU6vB,EAAOh5B,GAAI1pB,EAAGilB,IACT,IAAvBy9B,EAAO7nC,QAAQ7a,IACxB0yB,EAAY1uB,KAAKhE,EAEpB,IACM0yB,CACR,CAyDD,IAAMmmR,GACc,qBAAXh0S,QACoB,qBAApBA,OAAOsiB,UAC2B,qBAAlCtiB,OAAOsiB,SAASgO,cACnB1tB,EAAAA,gBACAvG,EAAAA,UAEN,SAASg0S,GAAoDlxR,GAC3D,IAAMpc,GAAWJ,EAAAA,EAAAA,QAAawc,GAO9B,OAJA60R,IAA0B,WACxBjxS,EAAIF,QAAUsc,CACf,KAEMqvR,EAAAA,EAAAA,cACL,mBAAAyF,EAAAl2R,UAAApmB,OAAIgW,EAAJ,IAAAwgB,MAAA8lR,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAIvmS,EAAJumS,GAAAn2R,UAAAm2R,GAAA,OAAoBnxS,EAAIF,QAAQ+b,WAAM,EAAQjR,EAA9C,GACA,GAEH,UC7mCevM,GACd+yS,GAEA,IAAMjI,EAAStoS,KAEbyvS,EAKEnH,EALFmH,cACAJ,EAIE/G,EAJF+G,aACAE,EAGEjH,EAHFiH,gBACArC,EAEE5E,EAFF4E,cACAC,EACE7E,EADF6E,gBAMIlvS,EAHa2rB,GAAS2mR,GAIvBA,EACD,CAAEr8S,KAAMq8S,GAEEp3M,EAAoCl7F,EAA1C/J,KAA2Bs8S,EAAevyS,EAAzBb,UAEzB3E,EAAAA,EAAAA,YAAgB,WAMd,OALI0gG,GACF+zM,EAAc/zM,EAAW,CACvB/7F,SAAUozS,IAGP,WACDr3M,GACFg0M,EAAgBh0M,EAEnB,CACF,GAAE,CAAC+zM,EAAeC,EAAiBh0M,EAAWq3M,IAU7Cr3M,GADFj8E,GAAU,GAKV,IAAMuzR,GAAe96S,EAAAA,EAAAA,UAAc,kBAAM45S,EAAgBp2M,EAAtB,GAAkC,CACnEo2M,EACAp2M,IAGF,MAAO,CAACs2M,EAAcxxS,GAAQoxS,EAAal2M,GAAYs3M,EACxD,KCxHY90S,IAAO+0S,EAAAA,EAAAA,aAClB,SAACzyS,EAAwBkB,OAGf4f,EAAoB9gB,EAApB8gB,OAAW5hB,EAAA8sS,GAAShsS,EAAA,YACtB0yS,EAAO,MAAG5xR,EAAAA,EAAU,MACY/e,KAA9BovS,EAAArvS,EAAAqvS,YAAaF,EAAAnvS,EAAAmvS,aACrB,OACExiR,EAAAA,EAAAA,eAAA,OAAAjP,GAAA,CACEhiB,SAAUyzS,EACV/vS,IAAKA,EACL0tS,QAASuC,EACTrwR,OAAQ4xR,GACJxzS,GAGT,ICnBH,SAAgByzS,GACdC,GAEA,IAAMjoQ,EAA0B,SAAA3qC,GAAK,OACnCyuB,EAAAA,EAAAA,eAAC07Q,GAAD,MACG,SAAAE,GAKC,OAHIA,GADJprR,GAAU,IAIHwP,EAAAA,EAAAA,eAACmkR,EAADpzR,GAAA,GAAUxf,EAAV,CAAiBqqS,OAAQA,IACjC,GARgC,EAY/BwI,EACJD,EAAK55J,aACL45J,EAAK38S,MACJ28S,EAAK90R,aAAe80R,EAAK90R,YAAY7nB,MACtC,YAUF,OANC00C,EAEEmoQ,iBAAmBF,EAEtBjoQ,EAAEquG,YAAF,iBAAiC65J,EAAjC,IAEOE,KACLpoQ,EACAioQ,EAIH,CDbDl1S,GAAKs7I,YAAc,OEmCnB,IAoBa18C,GAAS,SACpB02M,EACAruS,EACAvJ,GAEA,IAAM6xB,EAAOgmR,GAAcD,GAE3B,OADA/lR,EAAKyX,OAAO//B,EAAO,EAAGvJ,GACf6xB,CACR,EAYKgmR,GAAgB,SAACD,GACrB,GAAKA,EAEE,IAAI1mR,MAAMC,QAAQymR,GACvB,MAAO,GAAPx0S,OAAWw0S,GAEX,IAAME,EAAWx2S,OAAOC,KAAKq2S,GAC1Br1S,KAAI,SAAAd,GAAG,OAAIE,SAASF,EAAb,IACP4oB,QAAO,SAAC+Y,EAAK0Y,GAAN,OAAcA,EAAK1Y,EAAM0Y,EAAK1Y,CAA9B,GAAoC,GAC9C,OAAOlS,MAAMrE,KAANzI,GAAA,GAAgBwzR,EAAhB,CAA2Bl9S,OAAQo9S,EAAW,IACtD,CARC,MAAO,EASV,EAEKC,GAA0B,SAC9BC,EACAC,GAEA,IAAM/1R,EAA2B,oBAAf81R,EAA4BA,EAAaC,EAE3D,OAAO,SAAC3vS,GACN,GAAI4oB,MAAMC,QAAQ7oB,IAASioB,GAASjoB,GAAO,CACzC,IAAMqpB,EAAQkmR,GAAcvvS,GAC5B,OAAO4Z,EAAGyP,EACX,CAID,OAAOrpB,CACR,CACF,EAEK4vS,GAAA,SAAAC,GAQJ,SAAAD,EAAYtzS,gBACV6tB,EAAA0lR,EAAAh2R,KAAA,KAAMvd,IAAN,MAsBFwzS,iBAAmB,SACjBl2R,EACAm2R,EACAC,SAMI7lR,EAAK7tB,MAHP/J,EAAA09S,EAAA19S,MAKFy6S,EAHYiD,EAAVtJ,OAAUqG,iBAGG,SAACkD,GACd,IAAIC,EAAeV,GAAwBO,EAAap2R,GACpDw2R,EAAgBX,GAAwBM,EAAcn2R,GAItDhhB,EAASsuS,GACXgJ,EAAUt3S,OACVrG,EACAqnB,EAAGotR,GAAMkJ,EAAUt3S,OAAQrG,KAGzB89S,EAAaL,EACbG,EAAanJ,GAAMkJ,EAAUp+S,OAAQS,SACrC8C,EACAi7S,EAAeP,EACfK,EAAcpJ,GAAMkJ,EAAUrH,QAASt2S,SACvC8C,EASJ,OAPIuxS,GAAayJ,KACfA,OAAah7S,GAEXuxS,GAAa0J,KACfA,OAAej7S,GAGjBymB,GAAA,GACKo0R,EADL,CAEEt3S,OAAAA,EACA9G,OAAQk+S,EACJ9I,GAAMgJ,EAAUp+S,OAAQS,EAAM89S,GAC9BH,EAAUp+S,OACd+2S,QAASkH,EACL7I,GAAMgJ,EAAUrH,QAASt2S,EAAM+9S,GAC/BJ,EAAUrH,SAEjB,GACF,IAEDjvS,KAAO,SAAClC,GAAD,OACLyyB,EAAK2lR,kBACH,SAACR,GAAD,SAAAx0S,OACKy0S,GAAcD,GADnB,CAEEiB,GAAU74S,IAFZ,IAIA,GACA,EAPG,IAUP84S,WAAa,SAAC94S,GAAD,OAAgB,kBAAMyyB,EAAKvwB,KAAKlC,EAAhB,CAAhB,IAEbyjO,KAAO,SAACs1E,EAAgBC,GAAjB,OACLvmR,EAAK2lR,kBACH,SAACx2N,GAAD,OA9Jc,SAClBg2N,EACAmB,EACAC,GAEA,IAAMnnR,EAAOgmR,GAAcD,GACrBl2R,EAAImQ,EAAKknR,GAGf,OAFAlnR,EAAKknR,GAAUlnR,EAAKmnR,GACpBnnR,EAAKmnR,GAAUt3R,EACRmQ,CACR,CAoJuB4xM,CAAK7hJ,EAAOm3N,EAAQC,EAAtC,IACA,GACA,EAJG,IAOPC,WAAa,SAACF,EAAgBC,GAAjB,OAAoC,kBAC/CvmR,EAAKgxM,KAAKs1E,EAAQC,EAD6B,CAApC,IAGb9iQ,KAAO,SAACrpB,EAAc9Q,GAAf,OACL0W,EAAK2lR,kBAAiB,SAACx2N,GAAD,OA/KN,SAAKA,EAAY/0D,EAAc9Q,GACjD,IAAM8V,EAAOgmR,GAAcj2N,GACrB5hF,EAAQ6xB,EAAKhF,GAGnB,OAFAgF,EAAKyX,OAAOzc,EAAM,GAClBgF,EAAKyX,OAAOvtB,EAAI,EAAG/b,GACZ6xB,CACR,CAyK2CqkB,CAAK0rC,EAAO/0D,EAAM9Q,EAApC,IAAyC,GAAM,EADhE,IAGPm9R,WAAa,SAACrsR,EAAc9Q,GAAf,OAA8B,kBAAM0W,EAAKyjB,KAAKrpB,EAAM9Q,EAAtB,CAA9B,IAEbmlF,OAAS,SAAC33F,EAAevJ,GAAhB,OACPyyB,EAAK2lR,kBACH,SAACx2N,GAAD,OAAkBsf,GAAOtf,EAAOr4E,EAAOvJ,EAAvC,IACA,SAAC4hF,GAAD,OAAkBsf,GAAOtf,EAAOr4E,EAAO,KAAvC,IACA,SAACq4E,GAAD,OAAkBsf,GAAOtf,EAAOr4E,EAAO,KAAvC,GAJK,IAOT4vS,aAAe,SAAC5vS,EAAevJ,GAAhB,OAA+B,kBAAMyyB,EAAKyuE,OAAO33F,EAAOvJ,EAAzB,CAA/B,IAEfkZ,QAAU,SAAC3P,EAAevJ,GAAhB,OACRyyB,EAAK2lR,kBACH,SAACx2N,GAAD,OAhKiB,SACrBg2N,EACAruS,EACAvJ,GAEA,IAAM6xB,EAAOgmR,GAAcD,GAE3B,OADA/lR,EAAKtoB,GAASvJ,EACP6xB,CACR,CAwJuB3Y,CAAQ0oE,EAAOr4E,EAAOvJ,EAAxC,IACA,GACA,EAJM,IAOVo5S,cAAgB,SAAC7vS,EAAevJ,GAAhB,OAA+B,kBAC7CyyB,EAAKvZ,QAAQ3P,EAAOvJ,EADyB,CAA/B,IAGhB+gB,QAAU,SAAC/gB,GACT,IAAItF,GAAU,EAiBd,OAhBA+3B,EAAK2lR,kBACH,SAACx2N,GACC,IAAM34D,EAAM24D,EAAQ,CAAC5hF,GAAJoD,OAAcw+E,GAAS,CAAC5hF,GAIzC,OAFAtF,EAASuuB,EAAIvuB,OAENuuB,CACR,IACD,SAAC24D,GACC,OAAOA,EAAQ,CAAC,MAAJx+E,OAAaw+E,GAAS,CAAC,KACpC,IACD,SAACA,GACC,OAAOA,EAAQ,CAAC,MAAJx+E,OAAaw+E,GAAS,CAAC,KACpC,IAGIlnF,CACR,IAED2+S,cAAgB,SAACr5S,GAAD,OAAgB,kBAAMyyB,EAAK1R,QAAQ/gB,EAAnB,CAAhB,IA6BhBs5S,aAAe,SAAC/vS,GAAD,OAAmB,kBAAMkpB,EAAK2lB,OAAY7uC,EAAvB,CAAnB,IAqBfuc,UAAY,kBAAM,kBAAM2M,EAAKlF,KAAX,CAAN,EA1LVkF,EAAK2lB,OAAS3lB,EAAK2lB,OAAO32B,KAAZ83R,GAAA9mR,IACdA,EAAKlF,IAAMkF,EAAKlF,IAAI9L,KAAT83R,GAAA9mR,KACZ,oCAEDurP,mBAAA,SACEw7B,GAGE/2R,KAAK7d,MAAMwrS,kBACX3tR,KAAK7d,MAAMqqS,OAAOmB,mBACjBl8H,IACCo7H,GAAMkK,EAAUvK,OAAO/tS,OAAQs4S,EAAU3+S,MACzCy0S,GAAM7sR,KAAK7d,MAAMqqS,OAAO/tS,OAAQuhB,KAAK7d,MAAM/J,QAG7C4nB,KAAK7d,MAAMqqS,OAAO6G,aAAarzR,KAAK7d,MAAMqqS,OAAO/tS,OAEpD,IAyHDk3C,OAAA,SAAU7uC,GAER,IAAI1H,EAsBJ,OArBA4gB,KAAK21R,kBAEH,SAACx2N,GACC,IAAM/vD,EAAO+vD,EAAQi2N,GAAcj2N,GAAS,GAQ5C,OAPK//E,IACHA,EAASgwB,EAAKtoB,IAEZ+xR,GAAWzpQ,EAAKyX,SAClBzX,EAAKyX,OAAO//B,EAAO,GAGd+xR,GAAWzpQ,EAAKrX,QACnBqX,EAAKrX,OAAM,SAAAqmM,GAAC,YAAUljN,IAANkjN,CAAJ,IACV,GAEFhvL,CACL,IACD,GACA,GAGKhwB,CACR,IAID0rB,IAAA,WAEE,IAAI1rB,EAcJ,OAbA4gB,KAAK21R,kBAEH,SAACx2N,GACC,IAAM+e,EAAM/e,EAAM9hE,QAIlB,OAHKje,IACHA,EAAS8+F,GAAOA,EAAIpzE,KAAOozE,EAAIpzE,OAE1BozE,CACR,IACD,GACA,GAGK9+F,CACR,IAIDksD,OAAA,WACE,IAAM0rP,EAA6B,CACjCv3S,KAAMugB,KAAKvgB,KACXqrB,IAAK9K,KAAK8K,IACVk2M,KAAMhhN,KAAKghN,KACXvtL,KAAMzzB,KAAKyzB,KACXgrD,OAAQz+E,KAAKy+E,OACbhoF,QAASuJ,KAAKvJ,QACd6H,QAAS0B,KAAK1B,QACdq3B,OAAQ31B,KAAK21B,OACb0gQ,WAAYr2R,KAAKq2R,WACjBhzR,UAAWrD,KAAKqD,UAChBmzR,WAAYx2R,KAAKw2R,WACjBC,WAAYz2R,KAAKy2R,WACjBC,aAAc12R,KAAK02R,aACnBC,cAAe32R,KAAK22R,cACpBC,cAAe52R,KAAK42R,cACpBC,aAAc72R,KAAK62R,gBAajB72R,KAAK7d,MATP8C,EAAAgyS,EAAAhyS,UACAqmD,EAAA2rP,EAAA3rP,OACA1zD,EAAAq/S,EAAAr/S,SACAQ,EAAA6+S,EAAA7+S,KAQI+J,EAAKwf,GAAA,GACNq1R,EADM,CAETvoO,KANK0/N,KAHL3B,OAGK,iCAOLp0S,KAAAA,IAGF,OAAO6M,GACH2rB,EAAAA,EAAAA,eAAoB3rB,EAAkB9C,GACtCmpD,EACCA,EAAenpD,GAChBvK,EACoB,oBAAbA,EACJA,EAAiBuK,GACjBuqS,GAAgB90S,GAEjB,KADA+0S,EAAAA,SAAeyH,KAAKx8S,GAEtB,IACL,IAzPG,CAAqCyyD,EAAAA,WAArCorP,GAIGt0S,aAAe,CACpBwsS,kBAAkB,GAuPtB,ICzXMuJ,GAAA,SAAAxB,wFAGJh6B,sBAAA,SACEv5Q,GAEA,OACE0qS,GAAM7sR,KAAK7d,MAAMqqS,OAAO70S,OAAQqoB,KAAK7d,MAAM/J,QACzCy0S,GAAM1qS,EAAMqqS,OAAO70S,OAAQqoB,KAAK7d,MAAM/J,OACxCy0S,GAAM7sR,KAAK7d,MAAMqqS,OAAOkC,QAAS1uR,KAAK7d,MAAM/J,QAC1Cy0S,GAAM1qS,EAAMqqS,OAAOkC,QAAS1uR,KAAK7d,MAAM/J,OACzCyG,OAAOC,KAAKkhB,KAAK7d,OAAOlK,SAAW4G,OAAOC,KAAKqD,GAAOlK,MAMzD,IAEDqzD,OAAA,iBAC+DtrC,KAAK7d,MAA5D8C,EAAA6wS,EAAA7wS,UAAWunS,EAAAsJ,EAAAtJ,OAAQlhP,EAAAwqP,EAAAxqP,OAAQ1zD,EAAAk+S,EAAAl+S,SAAUQ,EAAA09S,EAAA19S,KAASiJ,EAAA8sS,GAAA2H,EAAA,mDAE9CqB,EAAQtK,GAAML,EAAOkC,QAASt2S,GAC9BgJ,EAAQyrS,GAAML,EAAO70S,OAAQS,GAEnC,OAAS++S,GAAW/1S,EAChBkqD,EACEutO,GAAWvtO,GACTA,EAAOlqD,GACP,KACFxJ,EACAihS,GAAWjhS,GACTA,EAASwJ,GACT,KACF6D,GACA2rB,EAAAA,EAAAA,eAAoB3rB,EAAW5D,EAAaD,GAC5CA,EACF,IACL,IAtCG,CAAyBipD,EAAAA,WAyClBrlD,GAAe8vS,GAG1BoC,kCCtDF,IACI75R,EAAQoR,MAAMpP,UAAUhC,MACxB+5R,EAAQv4S,OAAOwgB,UAAUjkB,SAG7B+pD,EAAO3gD,QAAU,SAAc6yS,GAC3B,IAAIl5P,EAASn+B,KACb,GAAsB,oBAAXm+B,GAJA,sBAIyBi5P,EAAM13R,KAAKy+B,GAC3C,MAAM,IAAIx+B,UARE,kDAQwBw+B,GAyBxC,IAvBA,IAEIm5P,EAFArpS,EAAOoP,EAAMqC,KAAKrB,UAAW,GAqB7Bk5R,EAAc11R,KAAK8e,IAAI,EAAGwd,EAAOlmD,OAASgW,EAAKhW,QAC/Cu/S,EAAY,GACPryR,EAAI,EAAGA,EAAIoyR,EAAapyR,IAC7BqyR,EAAU/3S,KAAK,IAAM0lB,GAKzB,GAFAmyR,EAAQn4R,SAAS,SAAU,oBAAsBq4R,EAAUvwR,KAAK,KAAO,4CAA/D9H,EAxBK,WACT,GAAIa,gBAAgBs3R,EAAO,CACvB,IAAIl4S,EAAS++C,EAAOj/B,MAChBc,KACA/R,EAAKtN,OAAO0c,EAAMqC,KAAKrB,aAE3B,OAAIxf,OAAOO,KAAYA,EACZA,EAEJ4gB,IACX,CACI,OAAOm+B,EAAOj/B,MACVm4R,EACAppS,EAAKtN,OAAO0c,EAAMqC,KAAKrB,YAGnC,IAUI8/B,EAAO9+B,UAAW,CAClB,IAAIo4R,EAAQ,WAAkB,EAC9BA,EAAMp4R,UAAY8+B,EAAO9+B,UACzBi4R,EAAMj4R,UAAY,IAAIo4R,EACtBA,EAAMp4R,UAAY,IACtB,CAEA,OAAOi4R,CACX,qCCjDA,IAAII,EAAiBnzS,EAAQ,KAE7B4gD,EAAO3gD,QAAU2a,SAASE,UAAUL,MAAQ04R,qCCF5C,IAAIx8S,EAEAy8S,EAAeC,YACfC,EAAY14R,SACZ24R,EAAan4R,UAGbo4R,EAAwB,SAAUC,GACrC,IACC,OAAOH,EAAU,yBAA2BG,EAAmB,iBAAxDH,EACR,CAAE,MAAOp8S,GAAI,CACd,EAEI8+R,EAAQ17R,OAAOihD,yBACnB,GAAIy6O,EACH,IACCA,EAAM,CAAC,EAAG,GACX,CAAE,MAAO9+R,GACR8+R,EAAQ,IACT,CAGD,IAAI0d,EAAiB,WACpB,MAAM,IAAIH,CACX,EACII,EAAiB3d,EACjB,WACF,IAGC,OAAO0d,CACR,CAAE,MAAOE,GACR,IAEC,OAAO5d,EAAMl8Q,UAAW,UAAU3d,GACnC,CAAE,MAAO03S,GACR,OAAOH,CACR,CACD,CACD,CAbG,GAcDA,EAECI,EAAa9zS,EAAQ,IAARA,GACb+zS,EAAW/zS,EAAQ,KAARA,GAEXg0S,EAAW15S,OAAOkhB,iBACrBu4R,EACG,SAAU1rQ,GAAK,OAAOA,EAAE6S,SAAW,EACnC,MAGA+4P,EAAY,CAAC,EAEbC,EAAmC,qBAAfxkM,YAA+BskM,EAAuBA,EAAStkM,YAArB/4G,EAE9Dw9S,EAAa,CAChB,mBAA8C,qBAAnBC,eAAiCz9S,EAAYy9S,eACxE,UAAWlqR,MACX,gBAAwC,qBAAhBsqQ,YAA8B79R,EAAY69R,YAClE,2BAA4Bsf,GAAcE,EAAWA,EAAS,GAAGvsR,OAAO6jR,aAAe30S,EACvF,mCAAoCA,EACpC,kBAAmBs9S,EACnB,mBAAoBA,EACpB,2BAA4BA,EAC5B,2BAA4BA,EAC5B,YAAgC,qBAAZI,QAA0B19S,EAAY09S,QAC1D,WAA8B,qBAAXC,OAAyB39S,EAAY29S,OACxD,kBAA4C,qBAAlBC,cAAgC59S,EAAY49S,cACtE,mBAA8C,qBAAnBC,eAAiC79S,EAAY69S,eACxE,YAAa9G,QACb,aAAkC,qBAAbhK,SAA2B/sS,EAAY+sS,SAC5D,SAAU3oS,KACV,cAAekqB,UACf,uBAAwBF,mBACxB,cAAe0vR,UACf,uBAAwBv0M,mBACxB,UAAWzjG,MACX,SAAUi4S,KACV,cAAeC,UACf,iBAA0C,qBAAjBC,aAA+Bj+S,EAAYi+S,aACpE,iBAA0C,qBAAjBC,aAA+Bl+S,EAAYk+S,aACpE,yBAA0D,qBAAzBC,qBAAuCn+S,EAAYm+S,qBACpF,aAAcxB,EACd,sBAAuBW,EACvB,cAAoC,qBAAdc,UAA4Bp+S,EAAYo+S,UAC9D,eAAsC,qBAAfC,WAA6Br+S,EAAYq+S,WAChE,eAAsC,qBAAfC,WAA6Bt+S,EAAYs+S,WAChE,aAAc96Q,SACd,UAAW5E,MACX,sBAAuBu+Q,GAAcE,EAAWA,EAASA,EAAS,GAAGvsR,OAAO6jR,cAAgB30S,EAC5F,SAA0B,kBAATohB,KAAoBA,KAAOphB,EAC5C,QAAwB,qBAARskB,IAAsBtkB,EAAYskB,IAClD,yBAAyC,qBAARA,KAAwB64R,GAAeE,EAAuBA,GAAS,IAAI/4R,KAAMwM,OAAO6jR,aAAtC30S,EACnF,SAAU2mB,KACV,WAAYvoB,OACZ,WAAYuF,OACZ,eAAgBonC,WAChB,aAAc/mC,SACd,YAAgC,qBAAZic,QAA0BjgB,EAAYigB,QAC1D,UAA4B,qBAAVs+R,MAAwBv+S,EAAYu+S,MACtD,eAAgBC,WAChB,mBAAoBC,eACpB,YAAgC,qBAAZ76R,QAA0B5jB,EAAY4jB,QAC1D,WAAYkK,OACZ,QAAwB,qBAARzE,IAAsBrpB,EAAYqpB,IAClD,yBAAyC,qBAARA,KAAwB8zR,GAAeE,EAAuBA,GAAS,IAAIh0R,KAAMyH,OAAO6jR,aAAtC30S,EACnF,sBAAoD,qBAAtB0+S,kBAAoC1+S,EAAY0+S,kBAC9E,WAAYpwP,OACZ,4BAA6B6uP,GAAcE,EAAWA,EAAS,GAAGvsR,OAAO6jR,aAAe30S,EACxF,WAAYm9S,EAAarsR,OAAS9wB,EAClC,gBAAiBy8S,EACjB,mBAAoBO,EACpB,eAAgBO,EAChB,cAAeX,EACf,eAAsC,qBAAf7jM,WAA6B/4G,EAAY+4G,WAChE,sBAAoD,qBAAtB4lM,kBAAoC3+S,EAAY2+S,kBAC9E,gBAAwC,qBAAhBltR,YAA8BzxB,EAAYyxB,YAClE,gBAAwC,qBAAhBmtR,YAA8B5+S,EAAY4+S,YAClE,aAAcC,SACd,YAAgC,qBAAZzR,QAA0BptS,EAAYotS,QAC1D,YAAgC,qBAAZ0R,QAA0B9+S,EAAY8+S,QAC1D,YAAgC,qBAAZC,QAA0B/+S,EAAY++S,SAG3D,GAAI1B,EACH,IACC,KAAKn3S,KACN,CAAE,MAAO3F,GAER,IAAIy+S,EAAa3B,EAASA,EAAS98S,IACnCi9S,EAAW,qBAAuBwB,CACnC,CAGD,IAAIC,EAAS,SAASA,EAAO/hT,GAC5B,IAAImF,EACJ,GAAa,oBAATnF,EACHmF,EAAQw6S,EAAsB,6BACxB,GAAa,wBAAT3/S,EACVmF,EAAQw6S,EAAsB,wBACxB,GAAa,6BAAT3/S,EACVmF,EAAQw6S,EAAsB,8BACxB,GAAa,qBAAT3/S,EAA6B,CACvC,IAAIqnB,EAAK06R,EAAO,4BACZ16R,IACHliB,EAAQkiB,EAAGJ,UAEb,MAAO,GAAa,6BAATjnB,EAAqC,CAC/C,IAAIgiT,EAAMD,EAAO,oBACbC,GAAO7B,IACVh7S,EAAQg7S,EAAS6B,EAAI/6R,WAEvB,CAIA,OAFAq5R,EAAWtgT,GAAQmF,EAEZA,CACR,EAEI88S,EAAiB,CACpB,yBAA0B,CAAC,cAAe,aAC1C,mBAAoB,CAAC,QAAS,aAC9B,uBAAwB,CAAC,QAAS,YAAa,WAC/C,uBAAwB,CAAC,QAAS,YAAa,WAC/C,oBAAqB,CAAC,QAAS,YAAa,QAC5C,sBAAuB,CAAC,QAAS,YAAa,UAC9C,2BAA4B,CAAC,gBAAiB,aAC9C,mBAAoB,CAAC,yBAA0B,aAC/C,4BAA6B,CAAC,yBAA0B,YAAa,aACrE,qBAAsB,CAAC,UAAW,aAClC,sBAAuB,CAAC,WAAY,aACpC,kBAAmB,CAAC,OAAQ,aAC5B,mBAAoB,CAAC,QAAS,aAC9B,uBAAwB,CAAC,YAAa,aACtC,0BAA2B,CAAC,eAAgB,aAC5C,0BAA2B,CAAC,eAAgB,aAC5C,sBAAuB,CAAC,WAAY,aACpC,cAAe,CAAC,oBAAqB,aACrC,uBAAwB,CAAC,oBAAqB,YAAa,aAC3D,uBAAwB,CAAC,YAAa,aACtC,wBAAyB,CAAC,aAAc,aACxC,wBAAyB,CAAC,aAAc,aACxC,cAAe,CAAC,OAAQ,SACxB,kBAAmB,CAAC,OAAQ,aAC5B,iBAAkB,CAAC,MAAO,aAC1B,oBAAqB,CAAC,SAAU,aAChC,oBAAqB,CAAC,SAAU,aAChC,sBAAuB,CAAC,SAAU,YAAa,YAC/C,qBAAsB,CAAC,SAAU,YAAa,WAC9C,qBAAsB,CAAC,UAAW,aAClC,sBAAuB,CAAC,UAAW,YAAa,QAChD,gBAAiB,CAAC,UAAW,OAC7B,mBAAoB,CAAC,UAAW,UAChC,oBAAqB,CAAC,UAAW,WACjC,wBAAyB,CAAC,aAAc,aACxC,4BAA6B,CAAC,iBAAkB,aAChD,oBAAqB,CAAC,SAAU,aAChC,iBAAkB,CAAC,MAAO,aAC1B,+BAAgC,CAAC,oBAAqB,aACtD,oBAAqB,CAAC,SAAU,aAChC,oBAAqB,CAAC,SAAU,aAChC,yBAA0B,CAAC,cAAe,aAC1C,wBAAyB,CAAC,aAAc,aACxC,uBAAwB,CAAC,YAAa,aACtC,wBAAyB,CAAC,aAAc,aACxC,+BAAgC,CAAC,oBAAqB,aACtD,yBAA0B,CAAC,cAAe,aAC1C,yBAA0B,CAAC,cAAe,aAC1C,sBAAuB,CAAC,WAAY,aACpC,qBAAsB,CAAC,UAAW,aAClC,qBAAsB,CAAC,UAAW,cAG/Br7R,EAAOza,EAAQ,MACf+1S,EAAS/1S,EAAQ,MACjBg2S,EAAUv7R,EAAKU,KAAKP,SAASO,KAAM+O,MAAMpP,UAAU1e,QACnD65S,EAAex7R,EAAKU,KAAKP,SAASD,MAAOuP,MAAMpP,UAAUwnB,QACzD4zQ,EAAWz7R,EAAKU,KAAKP,SAASO,KAAM8pC,OAAOnqC,UAAU5I,SACrDikS,EAAY17R,EAAKU,KAAKP,SAASO,KAAM8pC,OAAOnqC,UAAUhC,OACtDs9R,EAAQ37R,EAAKU,KAAKP,SAASO,KAAMsJ,OAAO3J,UAAUqxB,MAGlD86P,EAAa,qGACbC,EAAe,WAiBfmP,EAAmB,SAA0BxiT,EAAM8hS,GACtD,IACI2gB,EADAC,EAAgB1iT,EAOpB,GALIkiT,EAAOD,EAAgBS,KAE1BA,EAAgB,KADhBD,EAAQR,EAAeS,IACK,GAAK,KAG9BR,EAAO5B,EAAYoC,GAAgB,CACtC,IAAIv9S,EAAQm7S,EAAWoC,GAIvB,GAHIv9S,IAAUi7S,IACbj7S,EAAQ48S,EAAOW,IAEK,qBAAVv9S,IAA0B28R,EACpC,MAAM,IAAI4d,EAAW,aAAe1/S,EAAO,wDAG5C,MAAO,CACNyiT,MAAOA,EACPziT,KAAM0iT,EACNv9S,MAAOA,EAET,CAEA,MAAM,IAAIo6S,EAAa,aAAev/S,EAAO,mBAC9C,EAEA+sD,EAAO3gD,QAAU,SAAsBpM,EAAM8hS,GAC5C,GAAoB,kBAAT9hS,GAAqC,IAAhBA,EAAKH,OACpC,MAAM,IAAI6/S,EAAW,6CAEtB,GAAIz5R,UAAUpmB,OAAS,GAA6B,mBAAjBiiS,EAClC,MAAM,IAAI4d,EAAW,6CAGtB,GAAmC,OAA/B6C,EAAM,cAAeviT,GACxB,MAAM,IAAIu/S,EAAa,sFAExB,IAAI1rQ,EAtDc,SAAsBirG,GACxC,IAAIpwH,EAAQ4zR,EAAUxjK,EAAQ,EAAG,GAC7B01B,EAAO8tI,EAAUxjK,GAAS,GAC9B,GAAc,MAAVpwH,GAA0B,MAAT8lJ,EACpB,MAAM,IAAI+qI,EAAa,kDACjB,GAAa,MAAT/qI,GAA0B,MAAV9lJ,EAC1B,MAAM,IAAI6wR,EAAa,kDAExB,IAAIv4S,EAAS,GAIb,OAHAq7S,EAASvjK,EAAQs0J,GAAY,SAAUpjR,EAAO2vD,EAAQ4zN,EAAOC,GAC5DxsS,EAAOA,EAAOnH,QAAU0zS,EAAQ8O,EAAS7O,EAAWH,EAAc,MAAQ1zN,GAAU3vD,CACrF,IACOhpB,CACR,CAyCa8sS,CAAa9zS,GACrB2iT,EAAoB9uQ,EAAMh0C,OAAS,EAAIg0C,EAAM,GAAK,GAElDkuP,EAAYygB,EAAiB,IAAMG,EAAoB,IAAK7gB,GAC5D8gB,EAAoB7gB,EAAU/hS,KAC9BmF,EAAQ48R,EAAU58R,MAClB09S,GAAqB,EAErBJ,EAAQ1gB,EAAU0gB,MAClBA,IACHE,EAAoBF,EAAM,GAC1BL,EAAavuQ,EAAOsuQ,EAAQ,CAAC,EAAG,GAAIM,KAGrC,IAAK,IAAI11R,EAAI,EAAG+7Q,GAAQ,EAAM/7Q,EAAI8mB,EAAMh0C,OAAQktB,GAAK,EAAG,CACvD,IAAIinB,EAAOH,EAAM9mB,GACb2B,EAAQ4zR,EAAUtuQ,EAAM,EAAG,GAC3BwgI,EAAO8tI,EAAUtuQ,GAAO,GAC5B,IAEa,MAAVtlB,GAA2B,MAAVA,GAA2B,MAAVA,GACtB,MAAT8lJ,GAAyB,MAATA,GAAyB,MAATA,IAElC9lJ,IAAU8lJ,EAEb,MAAM,IAAI+qI,EAAa,wDASxB,GAPa,gBAATvrQ,GAA2B80P,IAC9B+Z,GAAqB,GAMlBX,EAAO5B,EAFXsC,EAAoB,KADpBD,GAAqB,IAAM3uQ,GACmB,KAG7C7uC,EAAQm7S,EAAWsC,QACb,GAAa,MAATz9S,EAAe,CACzB,KAAM6uC,KAAQ7uC,GAAQ,CACrB,IAAK28R,EACJ,MAAM,IAAI4d,EAAW,sBAAwB1/S,EAAO,+CAErD,MACD,CACA,GAAImiS,GAAUp1Q,EAAI,GAAM8mB,EAAMh0C,OAAQ,CACrC,IAAI4nD,EAAO06O,EAAMh9R,EAAO6uC,GAWvB7uC,GAVD2jS,IAAUrhP,IASG,QAASA,KAAU,kBAAmBA,EAAKn/C,KAC/Cm/C,EAAKn/C,IAELnD,EAAM6uC,EAEhB,MACC80P,EAAQoZ,EAAO/8S,EAAO6uC,GACtB7uC,EAAQA,EAAM6uC,GAGX80P,IAAU+Z,IACbvC,EAAWsC,GAAqBz9S,EAElC,CACD,CACA,OAAOA,CACR,iCC5VA,IAAIuqB,EAAO,CACVozR,IAAK,CAAC,GAGHC,EAAUt8S,OAEdsmD,EAAO3gD,QAAU,WAChB,MAAO,CAAEi7C,UAAW33B,GAAOozR,MAAQpzR,EAAKozR,OAAS,CAAEz7P,UAAW,gBAAkB07P,EACjF,oCCRA,IAAIC,EAA+B,qBAAXpvR,QAA0BA,OAC9CqvR,EAAgB92S,EAAQ,MAE5B4gD,EAAO3gD,QAAU,WAChB,MAA0B,oBAAf42S,IACW,oBAAXpvR,SACsB,kBAAtBovR,EAAW,SACO,kBAAlBpvR,OAAO,QAEXqvR,MACR,iCCTAl2P,EAAO3gD,QAAU,WAChB,GAAsB,oBAAXwnB,QAAiE,oBAAjCntB,OAAOqoS,sBAAwC,OAAO,EACjG,GAA+B,kBAApBl7Q,OAAO6jR,SAAyB,OAAO,EAElD,IAAIviR,EAAM,CAAC,EACPme,EAAMzf,OAAO,QACbsvR,EAASz8S,OAAO4sC,GACpB,GAAmB,kBAARA,EAAoB,OAAO,EAEtC,GAA4C,oBAAxC5sC,OAAOwgB,UAAUjkB,SAASskB,KAAK+rB,GAA8B,OAAO,EACxE,GAA+C,oBAA3C5sC,OAAOwgB,UAAUjkB,SAASskB,KAAK47R,GAAiC,OAAO,EAY3E,IAAK7vQ,KADLne,EAAIme,GADS,GAEDne,EAAO,OAAO,EAC1B,GAA2B,oBAAhBzuB,OAAOC,MAAmD,IAA5BD,OAAOC,KAAKwuB,GAAKr1B,OAAgB,OAAO,EAEjF,GAA0C,oBAA/B4G,OAAOs8C,qBAAiF,IAA3Ct8C,OAAOs8C,oBAAoB7tB,GAAKr1B,OAAgB,OAAO,EAE/G,IAAIsjT,EAAO18S,OAAOqoS,sBAAsB55Q,GACxC,GAAoB,IAAhBiuR,EAAKtjT,QAAgBsjT,EAAK,KAAO9vQ,EAAO,OAAO,EAEnD,IAAK5sC,OAAOwgB,UAAUulR,qBAAqBllR,KAAK4N,EAAKme,GAAQ,OAAO,EAEpE,GAA+C,oBAApC5sC,OAAOihD,yBAAyC,CAC1D,IAAI5C,EAAar+C,OAAOihD,yBAAyBxyB,EAAKme,GACtD,GAdY,KAcRyR,EAAW3/C,QAA8C,IAA1B2/C,EAAW/8B,WAAuB,OAAO,CAC7E,CAEA,OAAO,CACR,iCCvCA,IAAIsP,EAAiB,CAAC,EAAEA,eACpB/P,EAAOP,SAASE,UAAUK,KAE9BylC,EAAO3gD,QAAUkb,EAAKV,KAAOU,EAAKV,KAAKyQ,GAAkB,SAAU+rR,EAAGzuQ,GACpE,OAAOrtB,EAAKA,KAAK+P,EAAgB+rR,EAAGzuQ,EACtC,qCCLA,IAAI0uQ,EAAUl3S,EAAQ,MAMlBm3S,EAAgB,CAClBjf,mBAAmB,EACnBkf,aAAa,EACbnf,cAAc,EACdr7R,cAAc,EACdg6I,aAAa,EACbuhJ,iBAAiB,EACjBkf,0BAA0B,EAC1Bve,0BAA0B,EAC1BhB,QAAQ,EACRE,WAAW,EACXjiS,MAAM,GAEJuhT,EAAgB,CAClBzjT,MAAM,EACNH,QAAQ,EACRonB,WAAW,EACXy8R,QAAQ,EACRC,QAAQ,EACR19R,WAAW,EACX29R,OAAO,GASLC,EAAe,CACjB,UAAY,EACZl9N,SAAS,EACT59E,cAAc,EACdg6I,aAAa,EACbohJ,WAAW,EACXjiS,MAAM,GAEJ4hT,EAAe,CAAC,EAIpB,SAASC,EAAWl3S,GAElB,OAAIw2S,EAAQW,OAAOn3S,GACVg3S,EAIFC,EAAaj3S,EAAoB,WAAMy2S,CAChD,CAXAQ,EAAaT,EAAQY,YAhBK,CACxB,UAAY,EACZ/wP,QAAQ,EACRnqD,cAAc,EACdg6I,aAAa,EACbohJ,WAAW,GAYb2f,EAAaT,EAAQa,MAAQL,EAY7B,IAAI9nQ,EAAiBt1C,OAAOs1C,eACxBgH,EAAsBt8C,OAAOs8C,oBAC7B+rP,EAAwBroS,OAAOqoS,sBAC/BpnP,EAA2BjhD,OAAOihD,yBAClC//B,EAAiBlhB,OAAOkhB,eACxBw8R,EAAkB19S,OAAOwgB,UAsC7B8lC,EAAO3gD,QArCP,SAAS0wS,EAAqBsH,EAAiBC,EAAiBC,GAC9D,GAA+B,kBAApBD,EAA8B,CAEvC,GAAIF,EAAiB,CACnB,IAAII,EAAqB58R,EAAe08R,GAEpCE,GAAsBA,IAAuBJ,GAC/CrH,EAAqBsH,EAAiBG,EAAoBD,EAE9D,CAEA,IAAI59S,EAAOq8C,EAAoBshQ,GAE3BvV,IACFpoS,EAAOA,EAAK6B,OAAOumS,EAAsBuV,KAM3C,IAHA,IAAIG,EAAgBT,EAAWK,GAC3BK,EAAgBV,EAAWM,GAEtBt3R,EAAI,EAAGA,EAAIrmB,EAAK7G,SAAUktB,EAAG,CACpC,IAAInmB,EAAMF,EAAKqmB,GAEf,IAAK02R,EAAc78S,MAAU09S,IAAaA,EAAU19S,OAAW69S,IAAiBA,EAAc79S,OAAW49S,IAAiBA,EAAc59S,IAAO,CAC7I,IAAIk+C,EAAa4C,EAAyB28P,EAAiBz9S,GAE3D,IAEEm1C,EAAeqoQ,EAAiBx9S,EAAKk+C,EACvC,CAAE,MAAOzhD,GAAI,CACf,CACF,CACF,CAEA,OAAO+gT,CACT,sBCpGA,OAUA,SAAY9b,EAAQ34G,GAEnB,aAE6D,kBAAnB5iI,EAAO3gD,QAShD2gD,EAAO3gD,QAAUk8R,EAAO99Q,SACvBmlK,EAAS24G,GAAQ,GACjB,SAAUoc,GACT,IAAMA,EAAEl6R,SACP,MAAM,IAAI5hB,MAAO,4CAElB,OAAO+mL,EAAS+0H,EACjB,EAED/0H,EAAS24G,EAIV,CA1BD,CA0BuB,qBAAXpgS,OAAyBA,OAAS0f,MAAM,SAAU1f,EAAQy8S,GAMtE,aAEA,IAAIv2R,EAAM,GAEN+xR,EAAW15S,OAAOkhB,eAElB1C,EAAQmJ,EAAInJ,MAEZ2/R,EAAOx2R,EAAIw2R,KAAO,SAAU79N,GAC/B,OAAO34D,EAAIw2R,KAAKt9R,KAAMy/D,EACvB,EAAI,SAAUA,GACb,OAAO34D,EAAI7lB,OAAOue,MAAO,GAAIigE,EAC9B,EAGI1/E,EAAO+mB,EAAI/mB,KAEX6W,EAAUkQ,EAAIlQ,QAEd2mS,EAAa,CAAC,EAEd7hT,EAAW6hT,EAAW7hT,SAEtBk/S,EAAS2C,EAAWxtR,eAEpBytR,EAAa5C,EAAOl/S,SAEpB+hT,EAAuBD,EAAWx9R,KAAM7gB,QAExCu+S,EAAU,CAAC,EAEXvkB,EAAa,SAAqBvrQ,GASpC,MAAsB,oBAARA,GAA8C,kBAAjBA,EAAIgsB,UAC1B,oBAAbhsB,EAAIliB,IACb,EAGGiyS,EAAW,SAAmB/vR,GAChC,OAAc,MAAPA,GAAeA,IAAQA,EAAIhtB,MACnC,EAGGsiB,EAAWtiB,EAAOsiB,SAIjB06R,EAA4B,CAC/BhjT,MAAM,EACN60B,KAAK,EACLouR,OAAO,EACPC,UAAU,GAGX,SAASC,EAASn5N,EAAM7tB,EAAMinP,GAG7B,IAAIv4R,EAAGxH,EACN06B,GAHDqlQ,EAAMA,GAAO96R,GAGCgO,cAAe,UAG7B,GADAynB,EAAOtgD,KAAOusF,EACT7tB,EACJ,IAAMtxC,KAAKm4R,GAYV3/R,EAAM84C,EAAMtxC,IAAOsxC,EAAKrV,cAAgBqV,EAAKrV,aAAcj8B,KAE1DkzB,EAAO/B,aAAcnxB,EAAGxH,GAI3B+/R,EAAIplQ,KAAKnnB,YAAaknB,GAAS/nB,WAAWkoB,YAAaH,EACxD,CAGD,SAASslQ,EAAQrwR,GAChB,OAAY,MAAPA,EACGA,EAAM,GAIQ,kBAARA,GAAmC,oBAARA,EACxC2vR,EAAY7hT,EAASskB,KAAM4N,KAAW,gBAC/BA,CACT,CAOA,IAAI2lB,EAAU,QAEb2qQ,EAAc,SAGdC,EAAS,SAATA,EAAmBllQ,EAAU73C,GAI5B,OAAO,IAAI+8S,EAAOp+R,GAAG4qD,KAAM1xB,EAAU73C,EACtC,EAkYD,SAASylS,EAAaj5Q,GAMrB,IAAIr1B,IAAWq1B,GAAO,WAAYA,GAAOA,EAAIr1B,OAC5CqC,EAAOqjT,EAAQrwR,GAEhB,OAAKurQ,EAAYvrQ,KAAS+vR,EAAU/vR,KAIpB,UAAThzB,GAA+B,IAAXrC,GACR,kBAAXA,GAAuBA,EAAS,GAAOA,EAAS,KAAOq1B,EAChE,CAGA,SAASo9C,EAAUp4C,EAAMl6B,GAExB,OAAOk6B,EAAKo4C,UAAYp4C,EAAKo4C,SAASrsE,gBAAkBjG,EAAKiG,aAE9D,CAtZAw/S,EAAOp+R,GAAKo+R,EAAOx+R,UAAY,CAG9By+R,OAAQ7qQ,EAERhzB,YAAa49R,EAGb5lT,OAAQ,EAERonR,QAAS,WACR,OAAOhiQ,EAAMqC,KAAMM,KACpB,EAIAtf,IAAK,SAAUgsB,GAGd,OAAY,MAAPA,EACGrP,EAAMqC,KAAMM,MAIb0M,EAAM,EAAI1M,KAAM0M,EAAM1M,KAAK/nB,QAAW+nB,KAAM0M,EACpD,EAIAqxR,UAAW,SAAUC,GAGpB,IAAIhxR,EAAM6wR,EAAO3vR,MAAOlO,KAAKC,cAAe+9R,GAM5C,OAHAhxR,EAAIixR,WAAaj+R,KAGVgN,CACR,EAGAkxR,KAAM,SAAUxsQ,GACf,OAAOmsQ,EAAOK,KAAMl+R,KAAM0xB,EAC3B,EAEA5xC,IAAK,SAAU4xC,GACd,OAAO1xB,KAAK+9R,UAAWF,EAAO/9S,IAAKkgB,MAAM,SAAUsS,EAAMnN,GACxD,OAAOusB,EAAShyB,KAAM4S,EAAMnN,EAAGmN,EAChC,IACD,EAEAjV,MAAO,WACN,OAAO2C,KAAK+9R,UAAW1gS,EAAM6B,MAAOc,KAAM3B,WAC3C,EAEAyI,MAAO,WACN,OAAO9G,KAAKgiR,GAAI,EACjB,EAEAp1H,KAAM,WACL,OAAO5sJ,KAAKgiR,IAAK,EAClB,EAEAmc,KAAM,WACL,OAAOn+R,KAAK+9R,UAAWF,EAAOO,KAAMp+R,MAAM,SAAUq+R,EAAOl5R,GAC1D,OAASA,EAAI,GAAM,CACpB,IACD,EAEAm5R,IAAK,WACJ,OAAOt+R,KAAK+9R,UAAWF,EAAOO,KAAMp+R,MAAM,SAAUq+R,EAAOl5R,GAC1D,OAAOA,EAAI,CACZ,IACD,EAEA68Q,GAAI,SAAU78Q,GACb,IAAI8L,EAAMjR,KAAK/nB,OACdu+B,GAAKrR,GAAMA,EAAI,EAAI8L,EAAM,GAC1B,OAAOjR,KAAK+9R,UAAWvnR,GAAK,GAAKA,EAAIvF,EAAM,CAAEjR,KAAMwW,IAAQ,GAC5D,EAEAtO,IAAK,WACJ,OAAOlI,KAAKi+R,YAAcj+R,KAAKC,aAChC,EAIAxgB,KAAMA,EACNslB,KAAMyB,EAAIzB,KACV8hB,OAAQrgB,EAAIqgB,QAGbg3Q,EAAOlvR,OAASkvR,EAAOp+R,GAAGkP,OAAS,WAClC,IAAIjO,EAAStoB,EAAM+2B,EAAKC,EAAMmvR,EAAarvR,EAC1CivB,EAAS9/B,UAAW,IAAO,CAAC,EAC5B8G,EAAI,EACJltB,EAASomB,UAAUpmB,OACnB62B,GAAO,EAsBR,IAnBuB,mBAAXqvB,IACXrvB,EAAOqvB,EAGPA,EAAS9/B,UAAW8G,IAAO,CAAC,EAC5BA,KAIsB,kBAAXg5B,GAAwB06O,EAAY16O,KAC/CA,EAAS,CAAC,GAINh5B,IAAMltB,IACVkmD,EAASn+B,KACTmF,KAGOA,EAAIltB,EAAQktB,IAGnB,GAAqC,OAA9BzE,EAAUrC,UAAW8G,IAG3B,IAAM/sB,KAAQsoB,EACb0O,EAAO1O,EAAStoB,GAIF,cAATA,GAAwB+lD,IAAW/uB,IAKnCN,GAAQM,IAAUyuR,EAAOj2M,cAAex4E,KAC1CmvR,EAAc9vR,MAAMC,QAASU,MAC/BD,EAAMgvB,EAAQ/lD,GAIb82B,EADIqvR,IAAgB9vR,MAAMC,QAASS,GAC3B,GACIovR,GAAgBV,EAAOj2M,cAAez4E,GAG1CA,EAFA,CAAC,EAIVovR,GAAc,EAGdpgQ,EAAQ/lD,GAASylT,EAAOlvR,OAAQG,EAAMI,EAAOE,SAGzBl0B,IAATk0B,IACX+uB,EAAQ/lD,GAASg3B,IAOrB,OAAO+uB,CACR,EAEA0/P,EAAOlvR,OAAQ,CAGd6vR,QAAS,UAAavrQ,EAAUpxB,KAAKC,UAAWrL,QAAS,MAAO,IAGhEgoS,SAAS,EAETr9S,MAAO,SAAU2tS,GAChB,MAAM,IAAI/tS,MAAO+tS,EAClB,EAEA2P,KAAM,WAAY,EAElB92M,cAAe,SAAUt6E,GACxB,IAAI2wQ,EAAO4D,EAIX,SAAMv0Q,GAAgC,oBAAzBlyB,EAASskB,KAAM4N,QAI5B2wQ,EAAQsa,EAAUjrR,KASK,oBADvBu0Q,EAAOyY,EAAO56R,KAAMu+Q,EAAO,gBAAmBA,EAAMh+Q,cACfi9R,EAAWx9R,KAAMmiR,KAAWsb,EAClE,EAEAwB,cAAe,SAAUrxR,GACxB,IAAIl1B,EAEJ,IAAMA,KAAQk1B,EACb,OAAO,EAER,OAAO,CACR,EAIAsxR,WAAY,SAAUt6N,EAAM5jE,EAASg9R,GACpCD,EAASn5N,EAAM,CAAEi5N,MAAO78R,GAAWA,EAAQ68R,OAASG,EACrD,EAEAQ,KAAM,SAAU5wR,EAAKokB,GACpB,IAAIz5C,EAAQktB,EAAI,EAEhB,GAAKohR,EAAaj5Q,GAEjB,IADAr1B,EAASq1B,EAAIr1B,OACLktB,EAAIltB,IACqC,IAA3Cy5C,EAAShyB,KAAM4N,EAAKnI,GAAKA,EAAGmI,EAAKnI,IADnBA,UAMpB,IAAMA,KAAKmI,EACV,IAAgD,IAA3CokB,EAAShyB,KAAM4N,EAAKnI,GAAKA,EAAGmI,EAAKnI,IACrC,MAKH,OAAOmI,CACR,EAIAv1B,KAAM,SAAUu6B,GACf,IAAImkC,EACHzpC,EAAM,GACN7H,EAAI,EACJm0B,EAAWhnB,EAAKgnB,SAEjB,IAAMA,EAGL,KAAUmd,EAAOnkC,EAAMnN,MAGtB6H,GAAO6wR,EAAO9lT,KAAM0+D,GAGtB,OAAkB,IAAbnd,GAA+B,KAAbA,EACfhnB,EAAKw0C,YAEK,IAAbxtB,EACGhnB,EAAKmxB,gBAAgBqjB,YAEX,IAAbxtB,GAA+B,IAAbA,EACfhnB,EAAKq4C,UAKN39C,CACR,EAGA6xR,UAAW,SAAUr4R,EAAK5nB,GACzB,IAAIouB,EAAMpuB,GAAW,GAarB,OAXY,MAAP4nB,IACC+/Q,EAAa1nS,OAAQ2nB,IACzBq3R,EAAO3vR,MAAOlB,EACE,kBAARxG,EACN,CAAEA,GAAQA,GAGZ/mB,EAAKigB,KAAMsN,EAAKxG,IAIXwG,CACR,EAEA8lM,QAAS,SAAUxgM,EAAM9L,EAAKrB,GAC7B,OAAc,MAAPqB,GAAe,EAAIlQ,EAAQoJ,KAAM8G,EAAK8L,EAAMnN,EACpD,EAEA25R,SAAU,SAAUxsR,GACnB,IAAIysR,EAAYzsR,GAAQA,EAAK0sR,aAC5BC,EAAU3sR,IAAUA,EAAK0jO,eAAiB1jO,GAAOmxB,gBAIlD,OAAQm6P,EAAY91R,KAAMi3R,GAAaE,GAAWA,EAAQv0O,UAAY,OACvE,EAIAx8C,MAAO,SAAUpH,EAAO+H,GAKvB,IAJA,IAAIoC,GAAOpC,EAAO52B,OACjBu+B,EAAI,EACJrR,EAAI2B,EAAM7uB,OAEHu+B,EAAIvF,EAAKuF,IAChB1P,EAAO3B,KAAQ0J,EAAQ2H,GAKxB,OAFA1P,EAAM7uB,OAASktB,EAER2B,CACR,EAEAs3R,KAAM,SAAUJ,EAAOtsQ,EAAUwtQ,GAShC,IARA,IACCz5R,EAAU,GACVN,EAAI,EACJltB,EAAS+lT,EAAM/lT,OACfknT,GAAkBD,EAIX/5R,EAAIltB,EAAQktB,KACAusB,EAAUssQ,EAAO74R,GAAKA,KAChBg6R,GACxB15R,EAAQhmB,KAAMu+S,EAAO74R,IAIvB,OAAOM,CACR,EAGA3lB,IAAK,SAAUk+S,EAAOtsQ,EAAUqU,GAC/B,IAAI9tD,EAAQsF,EACX4nB,EAAI,EACJ6H,EAAM,GAGP,GAAKu5Q,EAAayX,GAEjB,IADA/lT,EAAS+lT,EAAM/lT,OACPktB,EAAIltB,EAAQktB,IAGL,OAFd5nB,EAAQm0C,EAAUssQ,EAAO74R,GAAKA,EAAG4gC,KAGhC/4B,EAAIvtB,KAAMlC,QAMZ,IAAM4nB,KAAK64R,EAGI,OAFdzgT,EAAQm0C,EAAUssQ,EAAO74R,GAAKA,EAAG4gC,KAGhC/4B,EAAIvtB,KAAMlC,GAMb,OAAOy/S,EAAMhwR,EACd,EAGAq3E,KAAM,EAIN+4M,QAASA,IAGa,oBAAXpxR,SACX6xR,EAAOp+R,GAAIuM,OAAO6jR,UAAarpR,EAAKwF,OAAO6jR,WAI5CgO,EAAOK,KAAM,uEAAuEjqS,MAAO,MAC1F,SAAUsa,EAAIn2B,GACb6kT,EAAY,WAAa7kT,EAAO,KAAQA,EAAKiG,aAC9C,IAyBD,IAAIysB,EAAMtE,EAAIsE,IAGV/F,EAAOyB,EAAIzB,KAGX8hB,EAASrgB,EAAIqgB,OAGbu4Q,EAAa,sBAGbC,EAAW,IAAIr2R,OAClB,IAAMo2R,EAAa,8BAAgCA,EAAa,KAChE,KAODvB,EAAO3mQ,SAAW,SAAUj4B,EAAG+F,GAC9B,IAAIs6R,EAAMt6R,GAAKA,EAAEsL,WAEjB,OAAOrR,IAAMqgS,MAAWA,GAAwB,IAAjBA,EAAIhmQ,YAIlCr6B,EAAEi4B,SACDj4B,EAAEi4B,SAAUooQ,GACZrgS,EAAEsgS,yBAA8D,GAAnCtgS,EAAEsgS,wBAAyBD,IAE3D,EAOA,IAAIE,EAAa,+CAEjB,SAASC,EAAYC,EAAIC,GACxB,OAAKA,EAGQ,OAAPD,EACG,SAIDA,EAAGriS,MAAO,GAAI,GAAM,KAAOqiS,EAAGn2P,WAAYm2P,EAAGznT,OAAS,GAAImD,SAAU,IAAO,IAI5E,KAAOskT,CACf,CAEA7B,EAAO+B,eAAiB,SAAUx3M,GACjC,OAASA,EAAM,IAAK3xF,QAAS+oS,EAAYC,EAC1C,EAKA,IAAII,EAAej9R,EAClBk9R,EAAargT,GAEd,WAEA,IAAI0lB,EACH46R,EACAC,EACAC,EACAC,EAIAt9R,EACA6gC,EACA08P,EACAC,EACA36R,EAPAhmB,EAAOqgT,EAUPtB,EAAUX,EAAOW,QACjB6B,EAAU,EACVjjT,EAAO,EACPkjT,EAAaC,KACbC,EAAaD,KACbE,EAAgBF,KAChBG,EAAyBH,KACzBlgM,EAAY,SAAUphG,EAAG+F,GAIxB,OAHK/F,IAAM+F,IACVk7R,GAAe,GAET,CACR,EAEAS,EAAW,6HAMXC,EAAa,0BAA4BxB,EACxC,0CAGD5oQ,EAAa,MAAQ4oQ,EAAa,KAAOwB,EAAa,OAASxB,EAG9D,gBAAkBA,EAGlB,2DAA6DwB,EAAa,OAC1ExB,EAAa,OAEdyB,EAAU,KAAOD,EAAP,wFAOoBpqQ,EAPpB,eAcVsqQ,EAAc,IAAI93R,OAAQo2R,EAAa,IAAK,KAE5C2B,EAAS,IAAI/3R,OAAQ,IAAMo2R,EAAa,KAAOA,EAAa,KAC5D4B,EAAqB,IAAIh4R,OAAQ,IAAMo2R,EAAa,WAAaA,EAAa,IAC7EA,EAAa,KACd6B,EAAW,IAAIj4R,OAAQo2R,EAAa,MAEpC8B,EAAU,IAAIl4R,OAAQ63R,GACtBM,EAAc,IAAIn4R,OAAQ,IAAM43R,EAAa,KAE7CQ,EAAY,CACX1vJ,GAAI,IAAI1oI,OAAQ,MAAQ43R,EAAa,KACrCS,MAAO,IAAIr4R,OAAQ,QAAU43R,EAAa,KAC1CU,IAAK,IAAIt4R,OAAQ,KAAO43R,EAAa,SACrCW,KAAM,IAAIv4R,OAAQ,IAAMwtB,GACxBgrQ,OAAQ,IAAIx4R,OAAQ,IAAM63R,GAC1BY,MAAO,IAAIz4R,OACV,yDACCo2R,EAAa,+BAAiCA,EAAa,cAC3DA,EAAa,aAAeA,EAAa,SAAU,KACrDsC,KAAM,IAAI14R,OAAQ,OAAS23R,EAAW,KAAM,KAI5CgB,aAAc,IAAI34R,OAAQ,IAAMo2R,EAC/B,mDAAqDA,EACrD,mBAAqBA,EAAa,mBAAoB,MAGxDwC,EAAU,sCACVC,EAAU,SAGVC,EAAa,mCAEbC,EAAW,OAIXC,EAAY,IAAIh5R,OAAQ,uBAAyBo2R,EAChD,uBAAwB,KACzB6C,EAAY,SAAU54N,EAAQ64N,GAC7B,IAAIC,EAAO,KAAO94N,EAAOhsE,MAAO,GAAM,MAEtC,OAAK6kS,IAUEC,EAAO,EACb34P,OAAOC,aAAc04P,EAAO,OAC5B34P,OAAOC,aAAc04P,GAAQ,GAAK,MAAe,KAAPA,EAAe,OAC3D,EAMAC,EAAgB,WACfC,IACD,EAEAC,EAAqBC,IACpB,SAAUjwR,GACT,OAAyB,IAAlBA,EAAKv5B,UAAqB2xE,EAAUp4C,EAAM,WAClD,GACA,CAAEkwR,IAAK,aAAc1kO,KAAM,WAa7B,IACCr+E,EAAKyf,MACFsH,EAAMnJ,EAAMqC,KAAMmgS,EAAa/7O,YACjC+7O,EAAa/7O,YAMdt9C,EAAKq5R,EAAa/7O,WAAW7rE,QAASqhD,QACvC,CAAE,MAAQ79C,IACTgE,EAAO,CACNyf,MAAO,SAAUi/B,EAAQskQ,GACxB3C,EAAW5gS,MAAOi/B,EAAQ9gC,EAAMqC,KAAM+iS,GACvC,EACA/iS,KAAM,SAAUy+B,GACf2hQ,EAAW5gS,MAAOi/B,EAAQ9gC,EAAMqC,KAAMrB,UAAW,GAClD,EAEF,CAEA,SAASvV,EAAM6vC,EAAU73C,EAASlC,EAAS8jT,GAC1C,IAAIhrR,EAAGvS,EAAGmN,EAAMqwR,EAAKv6R,EAAOrsB,EAAQ6mT,EACnCC,EAAa/hT,GAAWA,EAAQk1P,cAGhC18M,EAAWx4C,EAAUA,EAAQw4C,SAAW,EAKzC,GAHA16C,EAAUA,GAAW,GAGI,kBAAb+5C,IAA0BA,GACxB,IAAbW,GAA+B,IAAbA,GAA+B,KAAbA,EAEpC,OAAO16C,EAIR,IAAM8jT,IACLL,GAAavhT,GACbA,EAAUA,GAAW8hB,EAEhBu9R,GAAiB,CAIrB,GAAkB,KAAb7mQ,IAAqBlxB,EAAQ05R,EAAWpxQ,KAAMiI,IAGlD,GAAOjhB,EAAItP,EAAO,IAGjB,GAAkB,IAAbkxB,EAAiB,CACrB,KAAOhnB,EAAOxxB,EAAQk7C,eAAgBtkB,IASrC,OAAO94B,EALP,GAAK0zB,EAAK1tB,KAAO8yB,EAEhB,OADAj4B,EAAKigB,KAAM9gB,EAAS0zB,GACb1zB,CAOV,MAIC,GAAKikT,IAAgBvwR,EAAOuwR,EAAW7mQ,eAAgBtkB,KACtD5uB,EAAKouC,SAAUp2C,EAASwxB,IACxBA,EAAK1tB,KAAO8yB,EAGZ,OADAj4B,EAAKigB,KAAM9gB,EAAS0zB,GACb1zB,MAKH,IAAKwpB,EAAO,GAElB,OADA3oB,EAAKyf,MAAOtgB,EAASkC,EAAQ+vB,qBAAsB8nB,IAC5C/5C,EAGD,IAAO84B,EAAItP,EAAO,KAAStnB,EAAQ0jD,uBAEzC,OADA/kD,EAAKyf,MAAOtgB,EAASkC,EAAQ0jD,uBAAwB9sB,IAC9C94B,CACR,CAID,IAAM8hT,EAAwB/nQ,EAAW,QACrCynQ,IAAcA,EAAUt4R,KAAM6wB,IAAe,CAYhD,GAVAiqQ,EAAcjqQ,EACdkqQ,EAAa/hT,EASK,IAAbw4C,IACF2nQ,EAASn5R,KAAM6wB,IAAcqoQ,EAAmBl5R,KAAM6wB,IAAe,CAyBvE,KAtBAkqQ,EAAad,EAASj6R,KAAM6wB,IAAcmqQ,GAAahiT,EAAQwvB,aAC9DxvB,IAQkBA,GAAYs8S,EAAQhuP,SAG/BuzP,EAAM7hT,EAAQsgD,aAAc,OAClCuhQ,EAAM9E,EAAO+B,eAAgB+C,GAE7B7hT,EAAQw1C,aAAc,KAAQqsQ,EAAMnE,IAMtCr5R,GADAppB,EAASgnT,GAAUpqQ,IACR1gD,OACHktB,KACPppB,EAAQopB,IAAQw9R,EAAM,IAAMA,EAAM,UAAa,IAC9CK,GAAYjnT,EAAQopB,IAEtBy9R,EAAc7mT,EAAOkrB,KAAM,IAC5B,CAEA,IAIC,OAHAxnB,EAAKyf,MAAOtgB,EACXikT,EAAW/xR,iBAAkB8xR,IAEvBhkT,CACR,CAAE,MAAQqkT,GACTvC,EAAwB/nQ,GAAU,EACnC,CAAE,QACIgqQ,IAAQnE,GACZ19S,EAAQogD,gBAAiB,KAE3B,CACD,CACD,CAID,OAAOxI,GAAQC,EAASliC,QAAS4oS,EAAU,MAAQv+S,EAASlC,EAAS8jT,EACtE,CAQA,SAASnC,KACR,IAAIzhT,EAAO,GAaX,OAXA,SAASuvG,EAAOrvG,EAAKzB,GASpB,OALKuB,EAAKW,KAAMT,EAAM,KAAQ+gT,EAAKmD,oBAG3B70M,EAAOvvG,EAAK2rB,SAEX4jF,EAAOrvG,EAAM,KAAQzB,CAC/B,CAED,CAMA,SAAS4lT,GAAc1jS,GAEtB,OADAA,EAAI++R,IAAY,EACT/+R,CACR,CAMA,SAAS2jS,GAAQ3jS,GAChB,IAAI45B,EAAKz2B,EAASgO,cAAe,YAEjC,IACC,QAASnR,EAAI45B,EACd,CAAE,MAAQ59C,IACT,OAAO,CACR,CAAE,QAGI49C,EAAG/oB,YACP+oB,EAAG/oB,WAAWkoB,YAAaa,GAI5BA,EAAK,IACN,CACD,CAMA,SAASgqQ,GAAmB/oT,GAC3B,OAAO,SAAUg4B,GAChB,OAAOo4C,EAAUp4C,EAAM,UAAaA,EAAKh4B,OAASA,CACnD,CACD,CAMA,SAASgpT,GAAoBhpT,GAC5B,OAAO,SAAUg4B,GAChB,OAASo4C,EAAUp4C,EAAM,UAAao4C,EAAUp4C,EAAM,YACrDA,EAAKh4B,OAASA,CAChB,CACD,CAMA,SAASipT,GAAsBxqT,GAG9B,OAAO,SAAUu5B,GAKhB,MAAK,SAAUA,EASTA,EAAKhC,aAAgC,IAAlBgC,EAAKv5B,SAGvB,UAAWu5B,EACV,UAAWA,EAAKhC,WACbgC,EAAKhC,WAAWv3B,WAAaA,EAE7Bu5B,EAAKv5B,WAAaA,EAMpBu5B,EAAKsnD,aAAe7gF,GAG1Bu5B,EAAKsnD,cAAgB7gF,GACpBupT,EAAoBhwR,KAAWv5B,EAG3Bu5B,EAAKv5B,WAAaA,EAKd,UAAWu5B,GACfA,EAAKv5B,WAAaA,CAK3B,CACD,CAMA,SAASyqT,GAAwB/jS,GAChC,OAAO0jS,IAAc,SAAUn8Q,GAE9B,OADAA,GAAYA,EACLm8Q,IAAc,SAAUT,EAAMj9R,GAMpC,IALA,IAAI+Q,EACHitR,EAAehkS,EAAI,GAAIijS,EAAKzqT,OAAQ+uC,GACpC7hB,EAAIs+R,EAAaxrT,OAGVktB,KACFu9R,EAAQlsR,EAAIitR,EAAct+R,MAC9Bu9R,EAAMlsR,KAAS/Q,EAAS+Q,GAAMksR,EAAMlsR,IAGvC,GACD,GACD,CAOA,SAASssR,GAAahiT,GACrB,OAAOA,GAAmD,qBAAjCA,EAAQ+vB,sBAAwC/vB,CAC1E,CAOA,SAASuhT,GAAa5rP,GACrB,IAAIitP,EACHhG,EAAMjnP,EAAOA,EAAKu/L,eAAiBv/L,EAAOopP,EAO3C,OAAKnC,GAAO96R,GAA6B,IAAjB86R,EAAIpkQ,UAAmBokQ,EAAIj6P,iBAMnDA,GADA7gC,EAAW86R,GACgBj6P,gBAC3B08P,GAAkBtC,EAAOiB,SAAUl8R,GAInC6C,EAAUg+B,EAAgBh+B,SACzBg+B,EAAgB9J,uBAChB8J,EAAgB/J,kBAOZ+J,EAAgB/J,mBAMpBmmQ,GAAgBj9R,IACd8gS,EAAY9gS,EAASC,cAAiB6gS,EAAU9/P,MAAQ8/P,GAG1DA,EAAU7/R,iBAAkB,SAAUu+R,GAOvChF,EAAQuG,QAAUP,IAAQ,SAAU/pQ,GAEnC,OADAoK,EAAgBtyB,YAAakoB,GAAKz0C,GAAKi5S,EAAOW,SACtC57R,EAASghS,oBACfhhS,EAASghS,kBAAmB/F,EAAOW,SAAUvmT,MAChD,IAKAmlT,EAAQyG,kBAAoBT,IAAQ,SAAU/pQ,GAC7C,OAAO5zB,EAAQ/F,KAAM25B,EAAI,IAC1B,IAIA+jQ,EAAQhuP,MAAQg0P,IAAQ,WACvB,OAAOxgS,EAASkO,iBAAkB,SACnC,IAWAssR,EAAQ0G,OAASV,IAAQ,WACxB,IAEC,OADAxgS,EAAS2P,cAAe,oBACjB,CACR,CAAE,MAAQ92B,IACT,OAAO,CACR,CACD,IAGK2hT,EAAQuG,SACZ5D,EAAK5hT,OAAOuzJ,GAAK,SAAU9sJ,GAC1B,IAAIm/S,EAASn/S,EAAG6R,QAASurS,EAAWC,GACpC,OAAO,SAAU3vR,GAChB,OAAOA,EAAK8uB,aAAc,QAAW2iQ,CACtC,CACD,EACAhE,EAAKj3S,KAAK4oJ,GAAK,SAAU9sJ,EAAI9D,GAC5B,GAAuC,qBAA3BA,EAAQk7C,gBAAkCmkQ,EAAiB,CACtE,IAAI7tR,EAAOxxB,EAAQk7C,eAAgBp3C,GACnC,OAAO0tB,EAAO,CAAEA,GAAS,EAC1B,CACD,IAEAytR,EAAK5hT,OAAOuzJ,GAAM,SAAU9sJ,GAC3B,IAAIm/S,EAASn/S,EAAG6R,QAASurS,EAAWC,GACpC,OAAO,SAAU3vR,GAChB,IAAImkC,EAAwC,qBAA1BnkC,EAAK0xR,kBACtB1xR,EAAK0xR,iBAAkB,MACxB,OAAOvtP,GAAQA,EAAKl5D,QAAUwmT,CAC/B,CACD,EAIAhE,EAAKj3S,KAAK4oJ,GAAK,SAAU9sJ,EAAI9D,GAC5B,GAAuC,qBAA3BA,EAAQk7C,gBAAkCmkQ,EAAiB,CACtE,IAAI1pP,EAAMtxC,EAAG64R,EACZ1rR,EAAOxxB,EAAQk7C,eAAgBp3C,GAEhC,GAAK0tB,EAAO,CAIX,IADAmkC,EAAOnkC,EAAK0xR,iBAAkB,QACjBvtP,EAAKl5D,QAAUqH,EAC3B,MAAO,CAAE0tB,GAMV,IAFA0rR,EAAQl9S,EAAQ8iT,kBAAmBh/S,GACnCugB,EAAI,EACMmN,EAAO0rR,EAAO74R,MAEvB,IADAsxC,EAAOnkC,EAAK0xR,iBAAkB,QACjBvtP,EAAKl5D,QAAUqH,EAC3B,MAAO,CAAE0tB,EAGZ,CAEA,MAAO,EACR,CACD,GAIDytR,EAAKj3S,KAAKw4S,IAAM,SAAU/2O,EAAKzpE,GAC9B,MAA6C,qBAAjCA,EAAQ+vB,qBACZ/vB,EAAQ+vB,qBAAsB05C,GAI9BzpE,EAAQgwB,iBAAkBy5C,EAEnC,EAGAw1O,EAAKj3S,KAAKu4S,MAAQ,SAAUpmT,EAAW6F,GACtC,GAA+C,qBAAnCA,EAAQ0jD,wBAA0C27P,EAC7D,OAAOr/S,EAAQ0jD,uBAAwBvpD,EAEzC,EAOAmlT,EAAY,GAIZgD,IAAQ,SAAU/pQ,GAEjB,IAAIvgC,EAEJ2qC,EAAgBtyB,YAAakoB,GAAK9nB,UACjC,UAAYitR,EAAZ,iDACiBA,EADjB,oEAMKnlQ,EAAGvoB,iBAAkB,cAAe74B,QACzCmoT,EAAU3gT,KAAM,MAAQ2/S,EAAa,aAAeuB,EAAW,KAI1DtnQ,EAAGvoB,iBAAkB,QAAU0tR,EAAU,MAAOvmT,QACrDmoT,EAAU3gT,KAAM,MAMX45C,EAAGvoB,iBAAkB,KAAO0tR,EAAU,MAAOvmT,QAClDmoT,EAAU3gT,KAAM,YAOX45C,EAAGvoB,iBAAkB,YAAa74B,QACvCmoT,EAAU3gT,KAAM,aAKjBqZ,EAAQ8J,EAASgO,cAAe,UAC1B0lB,aAAc,OAAQ,UAC5B+C,EAAGloB,YAAarY,GAAQw9B,aAAc,OAAQ,KAQ9CmN,EAAgBtyB,YAAakoB,GAAKtgD,UAAW,EACM,IAA9CsgD,EAAGvoB,iBAAkB,aAAc74B,QACvCmoT,EAAU3gT,KAAM,WAAY,cAQ7BqZ,EAAQ8J,EAASgO,cAAe,UAC1B0lB,aAAc,OAAQ,IAC5B+C,EAAGloB,YAAarY,GACVugC,EAAGvoB,iBAAkB,aAAc74B,QACxCmoT,EAAU3gT,KAAM,MAAQ2/S,EAAa,QAAUA,EAAa,KAC3DA,EAAa,eAEhB,IAEMhC,EAAQ0G,QAQb1D,EAAU3gT,KAAM,QAGjB2gT,EAAYA,EAAUnoT,QAAU,IAAI+wB,OAAQo3R,EAAUn5R,KAAM,MAM5Do5F,EAAY,SAAUphG,EAAG+F,GAGxB,GAAK/F,IAAM+F,EAEV,OADAk7R,GAAe,EACR,EAIR,IAAInhO,GAAW9/D,EAAEsgS,yBAA2Bv6R,EAAEu6R,wBAC9C,OAAKxgO,IAgBU,GAPfA,GAAY9/D,EAAE+2O,eAAiB/2O,KAAS+F,EAAEgxO,eAAiBhxO,GAC1D/F,EAAEsgS,wBAAyBv6R,GAG3B,KAIGo4R,EAAQ6G,cAAgBj/R,EAAEu6R,wBAAyBtgS,KAAQ8/D,EAOzD9/D,IAAM2D,GAAY3D,EAAE+2O,eAAiB6pD,GACzC/2S,EAAKouC,SAAU2oQ,EAAc5gS,IACrB,EAOJ+F,IAAMpC,GAAYoC,EAAEgxO,eAAiB6pD,GACzC/2S,EAAKouC,SAAU2oQ,EAAc76R,GACtB,EAIDi7R,EACJ3pS,EAAQoJ,KAAMugS,EAAWhhS,GAAM3I,EAAQoJ,KAAMugS,EAAWj7R,GAC1D,EAGe,EAAV+5D,GAAe,EAAI,EAC3B,EAEOn8D,GAvSCA,CAwST,CAopBA,IAAMuC,KAlpBNrc,EAAK2c,QAAU,SAAUy+R,EAAMxtQ,GAC9B,OAAO5tC,EAAMo7S,EAAM,KAAM,KAAMxtQ,EAChC,EAEA5tC,EAAKq7S,gBAAkB,SAAU7xR,EAAM4xR,GAGtC,GAFA7B,GAAa/vR,GAER6tR,IACHO,EAAwBwD,EAAO,QAC7B9D,IAAcA,EAAUt4R,KAAMo8R,IAEjC,IACC,IAAIl3R,EAAMvH,EAAQ/F,KAAM4S,EAAM4xR,GAG9B,GAAKl3R,GAAOowR,EAAQyG,mBAIlBvxR,EAAK1P,UAAuC,KAA3B0P,EAAK1P,SAAS02B,SAChC,OAAOtsB,CAET,CAAE,MAAQvxB,IACTilT,EAAwBwD,GAAM,EAC/B,CAGD,OAAOp7S,EAAMo7S,EAAMthS,EAAU,KAAM,CAAE0P,IAASr6B,OAAS,CACxD,EAEA6Q,EAAKouC,SAAW,SAAUp2C,EAASwxB,GAUlC,OAHOxxB,EAAQk1P,eAAiBl1P,IAAa8hB,GAC5Cy/R,GAAavhT,GAEP+8S,EAAO3mQ,SAAUp2C,EAASwxB,EAClC,EAGAxpB,EAAKm9D,KAAO,SAAU3zC,EAAMl6B,IAOpBk6B,EAAK0jO,eAAiB1jO,IAAU1P,GACtCy/R,GAAa/vR,GAGd,IAAI7S,EAAKsgS,EAAKqE,WAAYhsT,EAAKiG,eAG9Bsf,EAAM8B,GAAM66R,EAAO56R,KAAMqgS,EAAKqE,WAAYhsT,EAAKiG,eAC9CohB,EAAI6S,EAAMl6B,GAAO+nT,QACjBjlT,EAEF,YAAaA,IAARyiB,EACGA,EAGD2U,EAAK8uB,aAAchpD,EAC3B,EAEA0Q,EAAK1H,MAAQ,SAAU2tS,GACtB,MAAM,IAAI/tS,MAAO,0CAA4C+tS,EAC9D,EAMA8O,EAAOwG,WAAa,SAAUzlT,GAC7B,IAAI0zB,EACHgyR,EAAa,GACb9tR,EAAI,EACJrR,EAAI,EAWL,GAJA+6R,GAAgB9C,EAAQmH,WACxBtE,GAAa7C,EAAQmH,YAAclnS,EAAMqC,KAAM9gB,EAAS,GACxDmmB,EAAKrF,KAAM9gB,EAASyhH,GAEf6/L,EAAe,CACnB,KAAU5tR,EAAO1zB,EAASumB,MACpBmN,IAAS1zB,EAASumB,KACtBqR,EAAI8tR,EAAW7kT,KAAM0lB,IAGvB,KAAQqR,KACPqQ,EAAOnnB,KAAM9gB,EAAS0lT,EAAY9tR,GAAK,EAEzC,CAMA,OAFAypR,EAAY,KAELrhT,CACR,EAEAi/S,EAAOp+R,GAAG4kS,WAAa,WACtB,OAAOrkS,KAAK+9R,UAAWF,EAAOwG,WAAYhnS,EAAM6B,MAAOc,OACxD,EAEA+/R,EAAOlC,EAAOqG,KAAO,CAGpBhB,YAAa,GAEbsB,aAAcrB,GAEd/6R,MAAOg5R,EAEPgD,WAAY,CAAC,EAEbt7S,KAAM,CAAC,EAEP27S,SAAU,CACT,IAAK,CAAEjC,IAAK,aAAc17R,OAAO,GACjC,IAAK,CAAE07R,IAAK,cACZ,IAAK,CAAEA,IAAK,kBAAmB17R,OAAO,GACtC,IAAK,CAAE07R,IAAK,oBAGbkC,UAAW,CACVnD,KAAM,SAAUn5R,GAWf,OAVAA,EAAO,GAAMA,EAAO,GAAI3R,QAASurS,EAAWC,GAG5C75R,EAAO,IAAQA,EAAO,IAAOA,EAAO,IAAOA,EAAO,IAAO,IACvD3R,QAASurS,EAAWC,GAEF,OAAf75R,EAAO,KACXA,EAAO,GAAM,IAAMA,EAAO,GAAM,KAG1BA,EAAM/K,MAAO,EAAG,EACxB,EAEAokS,MAAO,SAAUr5R,GAkChB,OAtBAA,EAAO,GAAMA,EAAO,GAAI/pB,cAEU,QAA7B+pB,EAAO,GAAI/K,MAAO,EAAG,IAGnB+K,EAAO,IACZtf,EAAK1H,MAAOgnB,EAAO,IAKpBA,EAAO,KAASA,EAAO,GACtBA,EAAO,IAAQA,EAAO,IAAO,GAC7B,GAAqB,SAAfA,EAAO,IAAiC,QAAfA,EAAO,KAEvCA,EAAO,KAAWA,EAAO,GAAMA,EAAO,IAAwB,QAAfA,EAAO,KAG3CA,EAAO,IAClBtf,EAAK1H,MAAOgnB,EAAO,IAGbA,CACR,EAEAo5R,OAAQ,SAAUp5R,GACjB,IAAIu8R,EACHC,GAAYx8R,EAAO,IAAOA,EAAO,GAElC,OAAKg5R,EAAUK,MAAM35R,KAAMM,EAAO,IAC1B,MAIHA,EAAO,GACXA,EAAO,GAAMA,EAAO,IAAOA,EAAO,IAAO,GAG9Bw8R,GAAY1D,EAAQp5R,KAAM88R,KAGnCD,EAAS5B,GAAU6B,GAAU,MAG7BD,EAASC,EAAStuS,QAAS,IAAKsuS,EAAS3sT,OAAS0sT,GAAWC,EAAS3sT,UAGxEmwB,EAAO,GAAMA,EAAO,GAAI/K,MAAO,EAAGsnS,GAClCv8R,EAAO,GAAMw8R,EAASvnS,MAAO,EAAGsnS,IAI1Bv8R,EAAM/K,MAAO,EAAG,GACxB,GAGDlf,OAAQ,CAEPmjT,IAAK,SAAUuD,GACd,IAAIC,EAAmBD,EAAiBpuS,QAASurS,EAAWC,GAAY5jT,cACxE,MAA4B,MAArBwmT,EACN,WACC,OAAO,CACR,EACA,SAAUvyR,GACT,OAAOo4C,EAAUp4C,EAAMwyR,EACxB,CACF,EAEAzD,MAAO,SAAUpmT,GAChB,IAAIwtB,EAAU63R,EAAYrlT,EAAY,KAEtC,OAAOwtB,IACJA,EAAU,IAAIO,OAAQ,MAAQo2R,EAAa,IAAMnkT,EAClD,IAAMmkT,EAAa,SACpBkB,EAAYrlT,GAAW,SAAUq3B,GAChC,OAAO7J,EAAQX,KACY,kBAAnBwK,EAAKr3B,WAA0Bq3B,EAAKr3B,WACb,qBAAtBq3B,EAAK8uB,cACX9uB,EAAK8uB,aAAc,UACpB,GAEH,GACF,EAEAmgQ,KAAM,SAAUnpT,EAAMwoG,EAAU03H,GAC/B,OAAO,SAAUhmM,GAChB,IAAIlzB,EAAS0J,EAAKm9D,KAAM3zC,EAAMl6B,GAE9B,OAAe,MAAVgH,EACgB,OAAbwhG,GAEFA,IAINxhG,GAAU,GAEQ,MAAbwhG,EACGxhG,IAAWk5N,EAED,OAAb13H,EACGxhG,IAAWk5N,EAED,OAAb13H,EACG03H,GAAqC,IAA5Bl5N,EAAOkX,QAASgiN,GAEf,OAAb13H,EACG03H,GAASl5N,EAAOkX,QAASgiN,IAAW,EAE1B,OAAb13H,EACG03H,GAASl5N,EAAOie,OAAQi7M,EAAMrgO,UAAaqgO,EAEjC,OAAb13H,GACK,IAAMxhG,EAAOqX,QAASqqS,EAAa,KAAQ,KAClDxqS,QAASgiN,IAAW,EAEL,OAAb13H,IACGxhG,IAAWk5N,GAASl5N,EAAOie,MAAO,EAAGi7M,EAAMrgO,OAAS,KAAQqgO,EAAQ,KAI7E,CACD,EAEAmpF,MAAO,SAAUnnT,EAAMyqT,EAAMC,EAAWl+R,EAAO8lJ,GAC9C,IAAIq4I,EAAgC,QAAvB3qT,EAAK+iB,MAAO,EAAG,GAC3B6nS,EAA+B,SAArB5qT,EAAK+iB,OAAQ,GACvB8nS,EAAkB,YAATJ,EAEV,OAAiB,IAAVj+R,GAAwB,IAAT8lJ,EAGrB,SAAUt6I,GACT,QAASA,EAAKhC,UACf,EAEA,SAAUgC,EAAM8yR,EAAUC,GACzB,IAAIh3M,EAAOi3M,EAAY7uP,EAAMo4L,EAAWphO,EACvC+0R,EAAMyC,IAAWC,EAAU,cAAgB,kBAC3C70R,EAASiC,EAAKhC,WACdl4B,EAAO+sT,GAAU7yR,EAAKo4C,SAASrsE,cAC/BknT,GAAYF,IAAQF,EACpB14Q,GAAO,EAER,GAAKpc,EAAS,CAGb,GAAK40R,EAAS,CACb,KAAQzC,GAAM,CAEb,IADA/rP,EAAOnkC,EACGmkC,EAAOA,EAAM+rP,IACtB,GAAK2C,EACJz6O,EAAUjU,EAAMr+D,GACE,IAAlBq+D,EAAKnd,SAEL,OAAO,EAKT7rB,EAAQ+0R,EAAe,SAATloT,IAAoBmzB,GAAS,aAC5C,CACA,OAAO,CACR,CAKA,GAHAA,EAAQ,CAAEy3R,EAAU70R,EAAOkrG,WAAalrG,EAAOggH,WAG1C60K,GAAWK,GASf,IAHA94Q,GADAoiN,GADAxgJ,GADAi3M,EAAaj1R,EAAQmuR,KAAenuR,EAAQmuR,GAAY,CAAC,IACrClkT,IAAU,IACX,KAAQ+lT,GAAWhyM,EAAO,KACzBA,EAAO,GAC3B53C,EAAOo4L,GAAax+N,EAAOyzC,WAAY+qL,GAE7Bp4L,IAASo4L,GAAap4L,GAAQA,EAAM+rP,KAG3C/1Q,EAAOoiN,EAAY,IAAOphO,EAAM3C,OAGlC,GAAuB,IAAlB2rC,EAAKnd,YAAoB7M,GAAQgqB,IAASnkC,EAAO,CACrDgzR,EAAYhrT,GAAS,CAAE+lT,EAASxxD,EAAWpiN,GAC3C,KACD,OAeD,GATK84Q,IAIJ94Q,EADAoiN,GADAxgJ,GADAi3M,EAAahzR,EAAMksR,KAAelsR,EAAMksR,GAAY,CAAC,IACjClkT,IAAU,IACX,KAAQ+lT,GAAWhyM,EAAO,KAMhC,IAAT5hE,EAGJ,MAAUgqB,IAASo4L,GAAap4L,GAAQA,EAAM+rP,KAC3C/1Q,EAAOoiN,EAAY,IAAOphO,EAAM3C,WAE3Bq6R,EACNz6O,EAAUjU,EAAMr+D,GACE,IAAlBq+D,EAAKnd,cACH7M,IAGG84Q,KACJD,EAAa7uP,EAAM+nP,KAChB/nP,EAAM+nP,GAAY,CAAC,IACVlkT,GAAS,CAAE+lT,EAAS5zQ,IAG5BgqB,IAASnkC,MAUlB,OADAma,GAAQmgI,KACQ9lJ,GAAW2lB,EAAO3lB,IAAU,GAAK2lB,EAAO3lB,GAAS,CAClE,CACD,CACF,EAEA06R,OAAQ,SAAUgE,EAAQx+Q,GAMzB,IAAI/4B,EACHwR,EAAKsgS,EAAKc,QAAS2E,IAAYzF,EAAK0F,WAAYD,EAAOnnT,gBACtDyK,EAAK1H,MAAO,uBAAyBokT,GAKvC,OAAK/lS,EAAI++R,GACD/+R,EAAIunB,GAIPvnB,EAAGxnB,OAAS,GAChBgW,EAAO,CAAEu3S,EAAQA,EAAQ,GAAIx+Q,GACtB+4Q,EAAK0F,WAAWh2R,eAAgB+1R,EAAOnnT,eAC7C8kT,IAAc,SAAUT,EAAMj9R,GAI7B,IAHA,IAAI/D,EACHgkS,EAAUjmS,EAAIijS,EAAM17Q,GACpB7hB,EAAIugS,EAAQztT,OACLktB,KAEPu9R,EADAhhS,EAAMpL,EAAQoJ,KAAMgjS,EAAMgD,EAASvgS,OAClBM,EAAS/D,GAAQgkS,EAASvgS,GAE7C,IACA,SAAUmN,GACT,OAAO7S,EAAI6S,EAAM,EAAGrkB,EACrB,GAGKwR,CACR,GAGDohS,QAAS,CAGR8E,IAAKxC,IAAc,SAAUxqQ,GAK5B,IAAI7/B,EAAQ,GACXla,EAAU,GACVmqB,EAAUs4C,GAAS1oB,EAASliC,QAAS4oS,EAAU,OAEhD,OAAOt2R,EAASy1R,GACf2E,IAAc,SAAUT,EAAMj9R,EAAS2/R,EAAUC,GAMhD,IALA,IAAI/yR,EACHszR,EAAY78R,EAAS25R,EAAM,KAAM2C,EAAK,IACtClgS,EAAIu9R,EAAKzqT,OAGFktB,MACAmN,EAAOszR,EAAWzgS,MACxBu9R,EAAMv9R,KAASM,EAASN,GAAMmN,GAGjC,IACA,SAAUA,EAAM8yR,EAAUC,GAOzB,OANAvsS,EAAO,GAAMwZ,EACbvJ,EAASjQ,EAAO,KAAMusS,EAAKzmT,GAI3Bka,EAAO,GAAM,MACLla,EAAQksB,KACjB,CACF,IAEAlL,IAAKujS,IAAc,SAAUxqQ,GAC5B,OAAO,SAAUrmB,GAChB,OAAOxpB,EAAM6vC,EAAUrmB,GAAOr6B,OAAS,CACxC,CACD,IAEAi/C,SAAUisQ,IAAc,SAAUprT,GAEjC,OADAA,EAAOA,EAAK0e,QAASurS,EAAWC,GACzB,SAAU3vR,GAChB,OAASA,EAAKw0C,aAAe+2O,EAAO9lT,KAAMu6B,IAAShc,QAASve,IAAU,CACvE,CACD,IASA8tT,KAAM1C,IAAc,SAAU0C,GAO7B,OAJM1E,EAAYr5R,KAAM+9R,GAAQ,KAC/B/8S,EAAK1H,MAAO,qBAAuBykT,GAEpCA,EAAOA,EAAKpvS,QAASurS,EAAWC,GAAY5jT,cACrC,SAAUi0B,GAChB,IAAIwzR,EACJ,GACC,GAAOA,EAAW3F,EACjB7tR,EAAKuzR,KACLvzR,EAAK8uB,aAAc,aAAgB9uB,EAAK8uB,aAAc,QAGtD,OADA0kQ,EAAWA,EAASznT,iBACAwnT,GAA2C,IAAnCC,EAASxvS,QAASuvS,EAAO,YAE3CvzR,EAAOA,EAAKhC,aAAkC,IAAlBgC,EAAKgnB,UAC7C,OAAO,CACR,CACD,IAGA6E,OAAQ,SAAU7rB,GACjB,IAAIrR,EAAO3gB,EAAOib,UAAYjb,EAAOib,SAAS0F,KAC9C,OAAOA,GAAQA,EAAK5D,MAAO,KAAQiV,EAAK1tB,EACzC,EAEA++D,KAAM,SAAUrxC,GACf,OAAOA,IAASmxB,CACjB,EAEAhyB,MAAO,SAAUa,GAChB,OAAOA,IA5oCV,WACC,IACC,OAAO1P,EAASmjE,aACjB,CAAE,MAAQjoF,GAAQ,CACnB,CAwoCmBioT,IACfnjS,EAASojS,eACL1zR,EAAKh4B,MAAQg4B,EAAK9W,OAAS8W,EAAK8gD,SACtC,EAGAl6E,QAASqqT,IAAsB,GAC/BxqT,SAAUwqT,IAAsB,GAEhC5nT,QAAS,SAAU22B,GAIlB,OAASo4C,EAAUp4C,EAAM,YAAeA,EAAK32B,SAC1C+uE,EAAUp4C,EAAM,aAAgBA,EAAK21E,QACzC,EAEAA,SAAU,SAAU31E,GAWnB,OALKA,EAAKhC,YAETgC,EAAKhC,WAAW2nF,eAGQ,IAAlB3lF,EAAK21E,QACb,EAGA2/H,MAAO,SAAUt1M,GAMhB,IAAMA,EAAOA,EAAKipG,WAAYjpG,EAAMA,EAAOA,EAAK05P,YAC/C,GAAK15P,EAAKgnB,SAAW,EACpB,OAAO,EAGT,OAAO,CACR,EAEAjpB,OAAQ,SAAUiC,GACjB,OAAQytR,EAAKc,QAAQj5E,MAAOt1M,EAC7B,EAGAme,OAAQ,SAAUne,GACjB,OAAOuvR,EAAQ/5R,KAAMwK,EAAKo4C,SAC3B,EAEA5xD,MAAO,SAAUwZ,GAChB,OAAOsvR,EAAQ95R,KAAMwK,EAAKo4C,SAC3B,EAEA4/C,OAAQ,SAAUh4F,GACjB,OAAOo4C,EAAUp4C,EAAM,UAA2B,WAAdA,EAAKh4B,MACxCowE,EAAUp4C,EAAM,SAClB,EAEAv6B,KAAM,SAAUu6B,GACf,IAAI2zC,EACJ,OAAOyE,EAAUp4C,EAAM,UAA2B,SAAdA,EAAKh4B,OAKI,OAAxC2rE,EAAO3zC,EAAK8uB,aAAc,UACN,SAAvB6kB,EAAK5nE,cACR,EAGAyoB,MAAO08R,IAAwB,WAC9B,MAAO,CAAE,EACV,IAEA52I,KAAM42I,IAAwB,SAAUyC,EAAehuT,GACtD,MAAO,CAAEA,EAAS,EACnB,IAEA+pS,GAAIwhB,IAAwB,SAAUyC,EAAehuT,EAAQ+uC,GAC5D,MAAO,CAAEA,EAAW,EAAIA,EAAW/uC,EAAS+uC,EAC7C,IAEAm3Q,KAAMqF,IAAwB,SAAUC,EAAcxrT,GAErD,IADA,IAAIktB,EAAI,EACAA,EAAIltB,EAAQktB,GAAK,EACxBs+R,EAAahkT,KAAM0lB,GAEpB,OAAOs+R,CACR,IAEAnF,IAAKkF,IAAwB,SAAUC,EAAcxrT,GAEpD,IADA,IAAIktB,EAAI,EACAA,EAAIltB,EAAQktB,GAAK,EACxBs+R,EAAahkT,KAAM0lB,GAEpB,OAAOs+R,CACR,IAEAyC,GAAI1C,IAAwB,SAAUC,EAAcxrT,EAAQ+uC,GAC3D,IAAI7hB,EAUJ,IAPCA,EADI6hB,EAAW,EACXA,EAAW/uC,EACJ+uC,EAAW/uC,EAClBA,EAEA+uC,IAGK7hB,GAAK,GACds+R,EAAahkT,KAAM0lB,GAEpB,OAAOs+R,CACR,IAEA0C,GAAI3C,IAAwB,SAAUC,EAAcxrT,EAAQ+uC,GAE3D,IADA,IAAI7hB,EAAI6hB,EAAW,EAAIA,EAAW/uC,EAAS+uC,IACjC7hB,EAAIltB,GACbwrT,EAAahkT,KAAM0lB,GAEpB,OAAOs+R,CACR,MAIF1D,EAAKc,QAAQuF,IAAMrG,EAAKc,QAAQ7e,GAGrB,CAAEqkB,OAAO,EAAM3nK,UAAU,EAAM4nK,MAAM,EAAMruS,UAAU,EAAMujO,OAAO,GAC5EukE,EAAKc,QAAS17R,GAAMk+R,GAAmBl+R,GAExC,IAAMA,IAAK,CAAEipM,QAAQ,EAAMx1J,OAAO,GACjCmnP,EAAKc,QAAS17R,GAAMm+R,GAAoBn+R,GAIzC,SAASsgS,KAAc,CAIvB,SAAS1C,GAAUpqQ,EAAU4tQ,GAC5B,IAAIb,EAASt9R,EAAOo+R,EAAQlsT,EAC3BmsT,EAAO1qT,EAAQ2qT,EACfC,EAASnG,EAAY7nQ,EAAW,KAEjC,GAAKguQ,EACJ,OAAOJ,EAAY,EAAII,EAAOtpS,MAAO,GAOtC,IAJAopS,EAAQ9tQ,EACR58C,EAAS,GACT2qT,EAAa3G,EAAK2E,UAEV+B,GAAQ,CA2Bf,IAAMnsT,KAxBAorT,KAAat9R,EAAQ24R,EAAOrwQ,KAAM+1Q,MAClCr+R,IAGJq+R,EAAQA,EAAMppS,MAAO+K,EAAO,GAAInwB,SAAYwuT,GAE7C1qT,EAAO0D,KAAQ+mT,EAAS,KAGzBd,GAAU,GAGHt9R,EAAQ44R,EAAmBtwQ,KAAM+1Q,MACvCf,EAAUt9R,EAAMqC,QAChB+7R,EAAO/mT,KAAM,CACZlC,MAAOmoT,EAGPprT,KAAM8tB,EAAO,GAAI3R,QAAS4oS,EAAU,OAErCoH,EAAQA,EAAMppS,MAAOqoS,EAAQztT,SAIhB8nT,EAAK5hT,SACXiqB,EAAQg5R,EAAW9mT,GAAOo2C,KAAM+1Q,KAAgBC,EAAYpsT,MAChE8tB,EAAQs+R,EAAYpsT,GAAQ8tB,MAC9Bs9R,EAAUt9R,EAAMqC,QAChB+7R,EAAO/mT,KAAM,CACZlC,MAAOmoT,EACPprT,KAAMA,EACNmrB,QAAS2C,IAEVq+R,EAAQA,EAAMppS,MAAOqoS,EAAQztT,SAI/B,IAAMytT,EACL,KAEF,CAKA,OAAKa,EACGE,EAAMxuT,OAGPwuT,EACN39S,EAAK1H,MAAOu3C,GAGZ6nQ,EAAY7nQ,EAAU58C,GAASshB,MAAO,EACxC,CAEA,SAAS2lS,GAAYwD,GAIpB,IAHA,IAAIrhS,EAAI,EACP8L,EAAMu1R,EAAOvuT,OACb0gD,EAAW,GACJxzB,EAAI8L,EAAK9L,IAChBwzB,GAAY6tQ,EAAQrhS,GAAI5nB,MAEzB,OAAOo7C,CACR,CAEA,SAAS4pQ,GAAex5R,EAAS69R,EAAYnjS,GAC5C,IAAI++R,EAAMoE,EAAWpE,IACpB3mN,EAAO+qN,EAAW9oO,KAClB9+E,EAAM68F,GAAQ2mN,EACdqE,EAAmBpjS,GAAgB,eAARzkB,EAC3B8nT,EAAW1pT,IAEZ,OAAOwpT,EAAW9/R,MAGjB,SAAUwL,EAAMxxB,EAASukT,GACxB,KAAU/yR,EAAOA,EAAMkwR,IACtB,GAAuB,IAAlBlwR,EAAKgnB,UAAkButQ,EAC3B,OAAO99R,EAASuJ,EAAMxxB,EAASukT,GAGjC,OAAO,CACR,EAGA,SAAU/yR,EAAMxxB,EAASukT,GACxB,IAAI0B,EAAUzB,EACb0B,EAAW,CAAE3G,EAASyG,GAGvB,GAAKzB,GACJ,KAAU/yR,EAAOA,EAAMkwR,IACtB,IAAuB,IAAlBlwR,EAAKgnB,UAAkButQ,IACtB99R,EAASuJ,EAAMxxB,EAASukT,GAC5B,OAAO,OAKV,KAAU/yR,EAAOA,EAAMkwR,IACtB,GAAuB,IAAlBlwR,EAAKgnB,UAAkButQ,EAG3B,GAFAvB,EAAahzR,EAAMksR,KAAelsR,EAAMksR,GAAY,CAAC,GAEhD3iN,GAAQnxB,EAAUp4C,EAAMupE,GAC5BvpE,EAAOA,EAAMkwR,IAASlwR,MAChB,KAAOy0R,EAAWzB,EAAYtmT,KACpC+nT,EAAU,KAAQ1G,GAAW0G,EAAU,KAAQD,EAG/C,OAASE,EAAU,GAAMD,EAAU,GAOnC,GAHAzB,EAAYtmT,GAAQgoT,EAGbA,EAAU,GAAMj+R,EAASuJ,EAAMxxB,EAASukT,GAC9C,OAAO,CAET,CAIH,OAAO,CACR,CACF,CAEA,SAAS4B,GAAgBC,GACxB,OAAOA,EAASjvT,OAAS,EACxB,SAAUq6B,EAAMxxB,EAASukT,GAExB,IADA,IAAIlgS,EAAI+hS,EAASjvT,OACTktB,KACP,IAAM+hS,EAAU/hS,GAAKmN,EAAMxxB,EAASukT,GACnC,OAAO,EAGT,OAAO,CACR,EACA6B,EAAU,EACZ,CAWA,SAASC,GAAUvB,EAAW9lT,EAAK3B,EAAQ2C,EAASukT,GAOnD,IANA,IAAI/yR,EACH80R,EAAe,GACfjiS,EAAI,EACJ8L,EAAM20R,EAAU3tT,OAChBovT,EAAgB,MAAPvnT,EAEFqlB,EAAI8L,EAAK9L,KACTmN,EAAOszR,EAAWzgS,MAClBhnB,IAAUA,EAAQm0B,EAAMxxB,EAASukT,KACtC+B,EAAa3nT,KAAM6yB,GACd+0R,GACJvnT,EAAIL,KAAM0lB,KAMd,OAAOiiS,CACR,CAEA,SAASE,GAAY5C,EAAW/rQ,EAAU5vB,EAASw+R,EAAYC,EAAYC,GAO1E,OANKF,IAAeA,EAAY/I,KAC/B+I,EAAaD,GAAYC,IAErBC,IAAeA,EAAYhJ,KAC/BgJ,EAAaF,GAAYE,EAAYC,IAE/BtE,IAAc,SAAUT,EAAM9jT,EAASkC,EAASukT,GACtD,IAAItmR,EAAM5Z,EAAGmN,EAAMo1R,EAClBC,EAAS,GACTC,EAAU,GACVC,EAAcjpT,EAAQ3G,OAGtB+lT,EAAQ0E,GA5CX,SAA2B/pQ,EAAUmvQ,EAAUlpT,GAG9C,IAFA,IAAIumB,EAAI,EACP8L,EAAM62R,EAAS7vT,OACRktB,EAAI8L,EAAK9L,IAChBrc,EAAM6vC,EAAUmvQ,EAAU3iS,GAAKvmB,GAEhC,OAAOA,CACR,CAsCImpT,CAAkBpvQ,GAAY,IAC7B73C,EAAQw4C,SAAW,CAAEx4C,GAAYA,EAAS,IAG5CknT,GAAYtD,IAAehC,GAAS/pQ,EAEnCqlQ,EADAmJ,GAAUnJ,EAAO2J,EAAQjD,EAAW5jT,EAASukT,GAsB/C,GAnBKt8R,EAaJA,EAASi/R,EATTN,EAAaF,IAAgB9E,EAAOgC,EAAYmD,GAAeN,GAG9D,GAGA3oT,EAG+BkC,EAASukT,GAEzCqC,EAAaM,EAITT,EAMJ,IALAxoR,EAAOooR,GAAUO,EAAYE,GAC7BL,EAAYxoR,EAAM,GAAIj+B,EAASukT,GAG/BlgS,EAAI4Z,EAAK9mC,OACDktB,MACAmN,EAAOyM,EAAM5Z,MACnBuiS,EAAYE,EAASziS,MAAW6iS,EAAWJ,EAASziS,IAAQmN,IAK/D,GAAKowR,GACJ,GAAK8E,GAAc9C,EAAY,CAC9B,GAAK8C,EAAa,CAKjB,IAFAzoR,EAAO,GACP5Z,EAAIuiS,EAAWzvT,OACPktB,MACAmN,EAAOo1R,EAAYviS,KAGzB4Z,EAAKt/B,KAAQuoT,EAAW7iS,GAAMmN,GAGhCk1R,EAAY,KAAQE,EAAa,GAAM3oR,EAAMsmR,EAC9C,CAIA,IADAlgS,EAAIuiS,EAAWzvT,OACPktB,MACAmN,EAAOo1R,EAAYviS,MACvB4Z,EAAOyoR,EAAalxS,EAAQoJ,KAAMgjS,EAAMpwR,GAASq1R,EAAQxiS,KAAS,IAEpEu9R,EAAM3jR,KAAYngC,EAASmgC,GAASzM,GAGvC,OAIAo1R,EAAaP,GACZO,IAAe9oT,EACd8oT,EAAW7gR,OAAQghR,EAAaH,EAAWzvT,QAC3CyvT,GAEGF,EACJA,EAAY,KAAM5oT,EAAS8oT,EAAYrC,GAEvC5lT,EAAKyf,MAAOtgB,EAAS8oT,EAGxB,GACD,CAEA,SAASO,GAAmBzB,GA+B3B,IA9BA,IAAI0B,EAAcn/R,EAASyN,EAC1BvF,EAAMu1R,EAAOvuT,OACbkwT,EAAkBpI,EAAK0E,SAAU+B,EAAQ,GAAIlsT,MAC7C8tT,EAAmBD,GAAmBpI,EAAK0E,SAAU,KACrDt/R,EAAIgjS,EAAkB,EAAI,EAG1BE,EAAe9F,IAAe,SAAUjwR,GACvC,OAAOA,IAAS41R,CACjB,GAAGE,GAAkB,GACrBE,EAAkB/F,IAAe,SAAUjwR,GAC1C,OAAOhc,EAAQoJ,KAAMwoS,EAAc51R,IAAU,CAC9C,GAAG81R,GAAkB,GACrBlB,EAAW,CAAE,SAAU50R,EAAMxxB,EAASukT,GAMrC,IAAIr4R,GAASm7R,IAAqB9C,GAAOvkT,GAAWk/S,MACjDkI,EAAepnT,GAAUw4C,SAC1B+uQ,EAAc/1R,EAAMxxB,EAASukT,GAC7BiD,EAAiBh2R,EAAMxxB,EAASukT,IAKlC,OADA6C,EAAe,KACRl7R,CACR,GAEO7H,EAAI8L,EAAK9L,IAChB,GAAO4D,EAAUg3R,EAAK0E,SAAU+B,EAAQrhS,GAAI7qB,MAC3C4sT,EAAW,CAAE3E,GAAe0E,GAAgBC,GAAYn+R,QAClD,CAIN,IAHAA,EAAUg3R,EAAK5hT,OAAQqoT,EAAQrhS,GAAI7qB,MAAO4kB,MAAO,KAAMsnS,EAAQrhS,GAAIM,UAGrD+4R,GAAY,CAIzB,IADAhoR,IAAMrR,EACEqR,EAAIvF,IACN8uR,EAAK0E,SAAU+B,EAAQhwR,GAAIl8B,MADhBk8B,KAKjB,OAAO8wR,GACNniS,EAAI,GAAK8hS,GAAgBC,GACzB/hS,EAAI,GAAK69R,GAGRwD,EAAOnpS,MAAO,EAAG8H,EAAI,GACnBxkB,OAAQ,CAAEpD,MAAgC,MAAzBipT,EAAQrhS,EAAI,GAAI7qB,KAAe,IAAM,MACvDmc,QAAS4oS,EAAU,MACrBt2R,EACA5D,EAAIqR,GAAKyxR,GAAmBzB,EAAOnpS,MAAO8H,EAAGqR,IAC7CA,EAAIvF,GAAOg3R,GAAqBzB,EAASA,EAAOnpS,MAAOmZ,IACvDA,EAAIvF,GAAO+xR,GAAYwD,GAEzB,CACAU,EAASznT,KAAMspB,EAChB,CAGD,OAAOk+R,GAAgBC,EACxB,CAgIA,SAAS7lP,GAAS1oB,EAAUvwB,GAC3B,IAAIjD,EACHojS,EAAc,GACdC,EAAkB,GAClB7B,EAASlG,EAAe9nQ,EAAW,KAEpC,IAAMguQ,EAAS,CAOd,IAJMv+R,IACLA,EAAQ26R,GAAUpqQ,IAEnBxzB,EAAIiD,EAAMnwB,OACFktB,MACPwhS,EAASsB,GAAmB7/R,EAAOjD,KACtBq5R,GACZ+J,EAAY9oT,KAAMknT,GAElB6B,EAAgB/oT,KAAMknT,GAKxBA,EAASlG,EAAe9nQ,EArJ1B,SAAmC6vQ,EAAiBD,GACnD,IAAIE,EAAQF,EAAYtwT,OAAS,EAChCywT,EAAYF,EAAgBvwT,OAAS,EACrC0wT,EAAe,SAAUjG,EAAM5hT,EAASukT,EAAKzmT,EAASgqT,GACrD,IAAIt2R,EAAMkE,EAAGzN,EACZ8/R,EAAe,EACf1jS,EAAI,IACJygS,EAAYlD,GAAQ,GACpBoG,EAAa,GACbC,EAAgB/I,EAGhBhC,EAAQ0E,GAAQgG,GAAa3I,EAAKj3S,KAAKw4S,IAAK,IAAKsH,GAGjDI,EAAkB3I,GAA4B,MAAjB0I,EAAwB,EAAIlnS,KAAKC,UAAY,GAC1EmP,EAAM+sR,EAAM/lT,OAeb,IAbK2wT,IAMJ5I,EAAmBl/S,GAAW8hB,GAAY9hB,GAAW8nT,GAO9CzjS,IAAM8L,GAAgC,OAAvBqB,EAAO0rR,EAAO74R,IAAeA,IAAM,CACzD,GAAKujS,GAAap2R,EAAO,CAWxB,IAVAkE,EAAI,EAME11B,GAAWwxB,EAAK0jO,eAAiBpzO,IACtCy/R,GAAa/vR,GACb+yR,GAAOlF,GAEEp3R,EAAUy/R,EAAiBhyR,MACpC,GAAKzN,EAASuJ,EAAMxxB,GAAW8hB,EAAUyiS,GAAQ,CAChD5lT,EAAKigB,KAAM9gB,EAAS0zB,GACpB,KACD,CAEIs2R,IACJvI,EAAU2I,EAEZ,CAGKP,KAGGn2R,GAAQvJ,GAAWuJ,IACzBu2R,IAIInG,GACJkD,EAAUnmT,KAAM6yB,GAGnB,CAaA,GATAu2R,GAAgB1jS,EASXsjS,GAAStjS,IAAM0jS,EAAe,CAElC,IADAryR,EAAI,EACMzN,EAAUw/R,EAAa/xR,MAChCzN,EAAS68R,EAAWkD,EAAYhoT,EAASukT,GAG1C,GAAK3C,EAAO,CAGX,GAAKmG,EAAe,EACnB,KAAQ1jS,KACCygS,EAAWzgS,IAAO2jS,EAAY3jS,KACrC2jS,EAAY3jS,GAAM2F,EAAIpL,KAAM9gB,IAM/BkqT,EAAa3B,GAAU2B,EACxB,CAGArpT,EAAKyf,MAAOtgB,EAASkqT,GAGhBF,IAAclG,GAAQoG,EAAW7wT,OAAS,GAC5C4wT,EAAeN,EAAYtwT,OAAW,GAExC4lT,EAAOwG,WAAYzlT,EAErB,CAQA,OALKgqT,IACJvI,EAAU2I,EACVhJ,EAAmB+I,GAGbnD,CACR,EAED,OAAO6C,EACNtF,GAAcwF,GACdA,CACF,CA0BGM,CAA0BT,EAAiBD,IAG5C5B,EAAOhuQ,SAAWA,CACnB,CACA,OAAOguQ,CACR,CAWA,SAASjuQ,GAAQC,EAAU73C,EAASlC,EAAS8jT,GAC5C,IAAIv9R,EAAGqhS,EAAQ9/S,EAAOpM,EAAMwO,EAC3BogT,EAA+B,oBAAbvwQ,GAA2BA,EAC7CvwB,GAASs6R,GAAQK,GAAYpqQ,EAAWuwQ,EAASvwQ,UAAYA,GAM9D,GAJA/5C,EAAUA,GAAW,GAIC,IAAjBwpB,EAAMnwB,OAAe,CAIzB,IADAuuT,EAASp+R,EAAO,GAAMA,EAAO,GAAI/K,MAAO,IAC5BplB,OAAS,GAAsC,QAA/ByO,EAAQ8/S,EAAQ,IAAMlsT,MAC3B,IAArBwG,EAAQw4C,UAAkB6mQ,GAAkBJ,EAAK0E,SAAU+B,EAAQ,GAAIlsT,MAAS,CAMjF,KAJAwG,GAAYi/S,EAAKj3S,KAAK4oJ,GACrBhrJ,EAAM+e,QAAS,GAAIhP,QAASurS,EAAWC,GACvCnhT,IACI,IAAM,IAEV,OAAOlC,EAGIsqT,IACXpoT,EAAUA,EAAQwvB,YAGnBqoB,EAAWA,EAASt7B,MAAOmpS,EAAO/7R,QAAQltB,MAAMtF,OACjD,CAIA,IADAktB,EAAIi8R,EAAUO,aAAa75R,KAAM6wB,GAAa,EAAI6tQ,EAAOvuT,OACjDktB,MACPze,EAAQ8/S,EAAQrhS,IAGX46R,EAAK0E,SAAYnqT,EAAOoM,EAAMpM,QAGnC,IAAOwO,EAAOi3S,EAAKj3S,KAAMxO,MAGjBooT,EAAO55S,EACbpC,EAAM+e,QAAS,GAAIhP,QAASurS,EAAWC,GACvCF,EAASj6R,KAAM0+R,EAAQ,GAAIlsT,OAC1BwoT,GAAahiT,EAAQwvB,aAAgBxvB,IACjC,CAKL,GAFA0lT,EAAO3/Q,OAAQ1hB,EAAG,KAClBwzB,EAAW+pQ,EAAKzqT,QAAU+qT,GAAYwD,IAGrC,OADA/mT,EAAKyf,MAAOtgB,EAAS8jT,GACd9jT,EAGR,KACD,CAGH,CAWA,OAPEsqT,GAAY7nP,GAAS1oB,EAAUvwB,IAChCs6R,EACA5hT,GACCq/S,EACDvhT,GACCkC,GAAWihT,EAASj6R,KAAM6wB,IAAcmqQ,GAAahiT,EAAQwvB,aAAgBxvB,GAExElC,CACR,CAtlBA6mT,GAAWpmS,UAAY0gS,EAAKz/M,QAAUy/M,EAAKc,QAC3Cd,EAAK0F,WAAa,IAAIA,GA2lBtBrI,EAAQmH,WAAa/F,EAAQvqS,MAAO,IAAK8Q,KAAMs7F,GAAYp5F,KAAM,MAASu3R,EAG1E6D,KAIAjF,EAAQ6G,aAAeb,IAAQ,SAAU/pQ,GAGxC,OAA4E,EAArEA,EAAGkmQ,wBAAyB38R,EAASgO,cAAe,YAC5D,IAEAitR,EAAO/0S,KAAOA,EAGd+0S,EAAOqG,KAAM,KAAQrG,EAAOqG,KAAKrD,QACjChD,EAAOsL,OAAStL,EAAOwG,WAIvBv7S,EAAKu4D,QAAUA,GACfv4D,EAAK4vC,OAASA,GACd5vC,EAAKu5S,YAAcA,GACnBv5S,EAAKi6S,SAAWA,GAEhBj6S,EAAKugF,OAASw0N,EAAO+B,eACrB92S,EAAKuoF,QAAUwsN,EAAO9lT,KACtB+Q,EAAKsgT,MAAQvL,EAAOiB,SACpBh2S,EAAKu8D,UAAYw4O,EAAOqG,KACxBp7S,EAAKs0S,QAAUS,EAAOT,QACtBt0S,EAAKu7S,WAAaxG,EAAOwG,UAIxB,CAviED,GA0iEA,IAAI7B,EAAM,SAAUlwR,EAAMkwR,EAAK6G,GAI9B,IAHA,IAAI3D,EAAU,GACb4D,OAAqBpuT,IAAVmuT,GAEF/2R,EAAOA,EAAMkwR,KAA6B,IAAlBlwR,EAAKgnB,UACtC,GAAuB,IAAlBhnB,EAAKgnB,SAAiB,CAC1B,GAAKgwQ,GAAYzL,EAAQvrR,GAAOyhR,GAAIsV,GACnC,MAED3D,EAAQjmT,KAAM6yB,EACf,CAED,OAAOozR,CACR,EAGIxgS,EAAW,SAAU/nB,EAAGm1B,GAG3B,IAFA,IAAIozR,EAAU,GAENvoT,EAAGA,EAAIA,EAAE6uR,YACI,IAAf7uR,EAAEm8C,UAAkBn8C,IAAMm1B,GAC9BozR,EAAQjmT,KAAMtC,GAIhB,OAAOuoT,CACR,EAGI6D,EAAgB1L,EAAOqG,KAAK97R,MAAMu5R,aAElC6H,EAAe,kEAKnB,SAASC,EAAQ/yQ,EAAUgzQ,EAAW/D,GACrC,OAAK9sB,EAAY6wB,GACT7L,EAAOO,KAAM1nQ,GAAU,SAAUpkB,EAAMnN,GAC7C,QAASukS,EAAUhqS,KAAM4S,EAAMnN,EAAGmN,KAAWqzR,CAC9C,IAII+D,EAAUpwQ,SACPukQ,EAAOO,KAAM1nQ,GAAU,SAAUpkB,GACvC,OAASA,IAASo3R,IAAgB/D,CACnC,IAIyB,kBAAd+D,EACJ7L,EAAOO,KAAM1nQ,GAAU,SAAUpkB,GACvC,OAAShc,EAAQoJ,KAAMgqS,EAAWp3R,IAAU,IAAQqzR,CACrD,IAIM9H,EAAO1/S,OAAQurT,EAAWhzQ,EAAUivQ,EAC5C,CAEA9H,EAAO1/S,OAAS,SAAU+lT,EAAMlG,EAAO2H,GACtC,IAAIrzR,EAAO0rR,EAAO,GAMlB,OAJK2H,IACJzB,EAAO,QAAUA,EAAO,KAGH,IAAjBlG,EAAM/lT,QAAkC,IAAlBq6B,EAAKgnB,SACxBukQ,EAAO/0S,KAAKq7S,gBAAiB7xR,EAAM4xR,GAAS,CAAE5xR,GAAS,GAGxDurR,EAAO/0S,KAAK2c,QAASy+R,EAAMrG,EAAOO,KAAMJ,GAAO,SAAU1rR,GAC/D,OAAyB,IAAlBA,EAAKgnB,QACb,IACD,EAEAukQ,EAAOp+R,GAAGkP,OAAQ,CACjB7lB,KAAM,SAAU6vC,GACf,IAAIxzB,EAAG6H,EACNiE,EAAMjR,KAAK/nB,OACX2oS,EAAO5gR,KAER,GAAyB,kBAAb24B,EACX,OAAO34B,KAAK+9R,UAAWF,EAAQllQ,GAAWx6C,QAAQ,WACjD,IAAMgnB,EAAI,EAAGA,EAAI8L,EAAK9L,IACrB,GAAK04R,EAAO3mQ,SAAU0pP,EAAMz7Q,GAAKnF,MAChC,OAAO,CAGV,KAKD,IAFAgN,EAAMhN,KAAK+9R,UAAW,IAEhB54R,EAAI,EAAGA,EAAI8L,EAAK9L,IACrB04R,EAAO/0S,KAAM6vC,EAAUioP,EAAMz7Q,GAAK6H,GAGnC,OAAOiE,EAAM,EAAI4sR,EAAOwG,WAAYr3R,GAAQA,CAC7C,EACA7uB,OAAQ,SAAUw6C,GACjB,OAAO34B,KAAK+9R,UAAW0L,EAAQzpS,KAAM24B,GAAY,IAAI,GACtD,EACAgtQ,IAAK,SAAUhtQ,GACd,OAAO34B,KAAK+9R,UAAW0L,EAAQzpS,KAAM24B,GAAY,IAAI,GACtD,EACAo7P,GAAI,SAAUp7P,GACb,QAAS8wQ,EACRzpS,KAIoB,kBAAb24B,GAAyB4wQ,EAAczhS,KAAM6wB,GACnDklQ,EAAQllQ,GACRA,GAAY,IACb,GACC1gD,MACH,IAQD,IAAI0xT,EAMH7H,EAAa,uCAENjE,EAAOp+R,GAAG4qD,KAAO,SAAU1xB,EAAU73C,EAAS6iE,GACpD,IAAIv7C,EAAOkK,EAGX,IAAMqmB,EACL,OAAO34B,KAQR,GAHA2jD,EAAOA,GAAQgmP,EAGU,kBAAbhxQ,EAAwB,CAanC,KAPCvwB,EALsB,MAAlBuwB,EAAU,IACsB,MAApCA,EAAUA,EAAS1gD,OAAS,IAC5B0gD,EAAS1gD,QAAU,EAGX,CAAE,KAAM0gD,EAAU,MAGlBmpQ,EAAWpxQ,KAAMiI,MAIVvwB,EAAO,IAAQtnB,EA6CxB,OAAMA,GAAWA,EAAQg9S,QACtBh9S,GAAW6iE,GAAO76D,KAAM6vC,GAK1B34B,KAAKC,YAAanf,GAAUgI,KAAM6vC,GAhDzC,GAAKvwB,EAAO,GAAM,CAYjB,GAXAtnB,EAAUA,aAAmB+8S,EAAS/8S,EAAS,GAAMA,EAIrD+8S,EAAO3vR,MAAOlO,KAAM69R,EAAO+L,UAC1BxhS,EAAO,GACPtnB,GAAWA,EAAQw4C,SAAWx4C,EAAQk1P,eAAiBl1P,EAAU8hB,GACjE,IAII4mS,EAAW1hS,KAAMM,EAAO,KAASy1R,EAAOj2M,cAAe9mG,GAC3D,IAAMsnB,KAAStnB,EAGT+3R,EAAY74Q,KAAMoI,IACtBpI,KAAMoI,GAAStnB,EAASsnB,IAIxBpI,KAAKimD,KAAM79C,EAAOtnB,EAASsnB,IAK9B,OAAOpI,IAGR,CASC,OARAsS,EAAO1P,EAASo5B,eAAgB5zB,EAAO,OAKtCpI,KAAM,GAAMsS,EACZtS,KAAK/nB,OAAS,GAER+nB,IAcV,CAAO,OAAK24B,EAASW,UACpBt5B,KAAM,GAAM24B,EACZ34B,KAAK/nB,OAAS,EACP+nB,MAII64Q,EAAYlgP,QACDz9C,IAAfyoE,EAAK/xC,MACX+xC,EAAK/xC,MAAO+mB,GAGZA,EAAUklQ,GAGLA,EAAOgB,UAAWlmQ,EAAU34B,KACpC,GAGIX,UAAYw+R,EAAOp+R,GAGxBkqS,EAAa9L,EAAQj7R,GAGrB,IAAIinS,EAAe,iCAGlBC,EAAmB,CAClBlyT,UAAU,EACVivR,UAAU,EACV/oM,MAAM,EACNg/G,MAAM,GAoFR,SAASgzC,EAAS17M,EAAKouR,GACtB,MAAUpuR,EAAMA,EAAKouR,KAA4B,IAAjBpuR,EAAIklB,WACpC,OAAOllB,CACR,CApFAypR,EAAOp+R,GAAGkP,OAAQ,CACjB/O,IAAK,SAAUu+B,GACd,IAAI4rQ,EAAUlM,EAAQ1/P,EAAQn+B,MAC7BgR,EAAI+4R,EAAQ9xT,OAEb,OAAO+nB,KAAK7hB,QAAQ,WAEnB,IADA,IAAIgnB,EAAI,EACAA,EAAI6L,EAAG7L,IACd,GAAK04R,EAAO3mQ,SAAUl3B,KAAM+pS,EAAS5kS,IACpC,OAAO,CAGV,GACD,EAEAi0B,QAAS,SAAUisB,EAAWvkE,GAC7B,IAAIszB,EACHjP,EAAI,EACJ6L,EAAIhR,KAAK/nB,OACTytT,EAAU,GACVqE,EAA+B,kBAAd1kP,GAA0Bw4O,EAAQx4O,GAGpD,IAAMkkP,EAAczhS,KAAMu9C,GACzB,KAAQlgD,EAAI6L,EAAG7L,IACd,IAAMiP,EAAMpU,KAAMmF,GAAKiP,GAAOA,IAAQtzB,EAASszB,EAAMA,EAAI9D,WAGxD,GAAK8D,EAAIklB,SAAW,KAAQywQ,EAC3BA,EAAQjjT,MAAOstB,IAAS,EAGP,IAAjBA,EAAIklB,UACHukQ,EAAO/0S,KAAKq7S,gBAAiB/vR,EAAKixC,IAAgB,CAEnDqgP,EAAQjmT,KAAM20B,GACd,KACD,CAKH,OAAOpU,KAAK+9R,UAAW2H,EAAQztT,OAAS,EAAI4lT,EAAOwG,WAAYqB,GAAYA,EAC5E,EAGA5+S,MAAO,SAAUwrB,GAGhB,OAAMA,EAKe,kBAATA,EACJhc,EAAQoJ,KAAMm+R,EAAQvrR,GAAQtS,KAAM,IAIrC1J,EAAQoJ,KAAMM,KAGpBsS,EAAKwrR,OAASxrR,EAAM,GAAMA,GAZjBtS,KAAM,IAAOA,KAAM,GAAIsQ,WAAetQ,KAAK8G,QAAQkjS,UAAU/xT,QAAU,CAclF,EAEAk9C,IAAK,SAAUwD,EAAU73C,GACxB,OAAOkf,KAAK+9R,UACXF,EAAOwG,WACNxG,EAAO3vR,MAAOlO,KAAKtf,MAAOm9S,EAAQllQ,EAAU73C,KAG/C,EAEAmpT,QAAS,SAAUtxQ,GAClB,OAAO34B,KAAKm1B,IAAiB,MAAZwD,EAChB34B,KAAKi+R,WAAaj+R,KAAKi+R,WAAW9/S,OAAQw6C,GAE5C,IAQDklQ,EAAOK,KAAM,CACZ7tR,OAAQ,SAAUiC,GACjB,IAAIjC,EAASiC,EAAKhC,WAClB,OAAOD,GAA8B,KAApBA,EAAOipB,SAAkBjpB,EAAS,IACpD,EACA65R,QAAS,SAAU53R,GAClB,OAAOkwR,EAAKlwR,EAAM,aACnB,EACAqzG,aAAc,SAAUrzG,EAAM/D,EAAI86R,GACjC,OAAO7G,EAAKlwR,EAAM,aAAc+2R,EACjC,EACAvrO,KAAM,SAAUxrD,GACf,OAAOw9M,EAASx9M,EAAM,cACvB,EACAwqK,KAAM,SAAUxqK,GACf,OAAOw9M,EAASx9M,EAAM,kBACvB,EACA63R,QAAS,SAAU73R,GAClB,OAAOkwR,EAAKlwR,EAAM,cACnB,EACA03R,QAAS,SAAU13R,GAClB,OAAOkwR,EAAKlwR,EAAM,kBACnB,EACA83R,UAAW,SAAU93R,EAAM/D,EAAI86R,GAC9B,OAAO7G,EAAKlwR,EAAM,cAAe+2R,EAClC,EACAgB,UAAW,SAAU/3R,EAAM/D,EAAI86R,GAC9B,OAAO7G,EAAKlwR,EAAM,kBAAmB+2R,EACtC,EACAnkS,SAAU,SAAUoN,GACnB,OAAOpN,GAAYoN,EAAKhC,YAAc,CAAC,GAAIirG,WAAYjpG,EACxD,EACA16B,SAAU,SAAU06B,GACnB,OAAOpN,EAAUoN,EAAKipG,WACvB,EACAsrJ,SAAU,SAAUv0P,GACnB,OAA6B,MAAxBA,EAAKg4R,iBAKT/R,EAAUjmR,EAAKg4R,iBAERh4R,EAAKg4R,iBAMR5/O,EAAUp4C,EAAM,cACpBA,EAAOA,EAAKi0C,SAAWj0C,GAGjBurR,EAAO3vR,MAAO,GAAIoE,EAAKwxC,YAC/B,IACE,SAAU1rE,EAAMqnB,GAClBo+R,EAAOp+R,GAAIrnB,GAAS,SAAUixT,EAAO1wQ,GACpC,IAAI+sQ,EAAU7H,EAAO/9S,IAAKkgB,KAAMP,EAAI4pS,GAuBpC,MArB0B,UAArBjxT,EAAKilB,OAAQ,KACjBs7B,EAAW0wQ,GAGP1wQ,GAAgC,kBAAbA,IACvB+sQ,EAAU7H,EAAO1/S,OAAQw6C,EAAU+sQ,IAG/B1lS,KAAK/nB,OAAS,IAGZ6xT,EAAkB1xT,IACvBylT,EAAOwG,WAAYqB,GAIfmE,EAAa/hS,KAAM1vB,IACvBstT,EAAQhvP,WAIH12C,KAAK+9R,UAAW2H,EACxB,CACD,IACA,IAAI6E,EAAkB,oBAsOtB,SAASC,EAAUpsG,GAClB,OAAOA,CACR,CACA,SAASqsG,EAASjiN,GACjB,MAAMA,CACP,CAEA,SAASkiN,EAAYntT,EAAOmgB,EAAStC,EAAQuvS,GAC5C,IAAIz5Q,EAEJ,IAGM3zC,GAASs7R,EAAc3nP,EAAS3zC,EAAM2J,SAC1CgqC,EAAOxxB,KAAMniB,GAAQH,KAAMsgB,GAAU0kC,KAAMhnC,GAGhC7d,GAASs7R,EAAc3nP,EAAS3zC,EAAM4J,MACjD+pC,EAAOxxB,KAAMniB,EAAOmgB,EAAStC,GAQ7BsC,EAAQwB,WAAOhkB,EAAW,CAAEqC,GAAQ8f,MAAOstS,GAM7C,CAAE,MAAQptT,GAIT6d,EAAO8D,WAAOhkB,EAAW,CAAEqC,GAC5B,CACD,CAzOAsgT,EAAO+M,UAAY,SAAUlqS,GAI5BA,EAA6B,kBAAZA,EAlClB,SAAwBA,GACvB,IAAI8zM,EAAS,CAAC,EAId,OAHAqpF,EAAOK,KAAMx9R,EAAQ0H,MAAOmiS,IAAmB,IAAI,SAAU1hS,EAAGoY,GAC/DuzL,EAAQvzL,IAAS,CAClB,IACOuzL,CACR,CA6BEjuE,CAAe7lI,GACfm9R,EAAOlvR,OAAQ,CAAC,EAAGjO,GAEpB,IACCmqS,EAGAC,EAGAC,EAGAC,EAGA/xQ,EAAO,GAGPgyQ,EAAQ,GAGRC,GAAe,EAGfC,EAAO,WAQN,IALAH,EAASA,GAAUtqS,EAAQ0qS,KAI3BL,EAAQF,GAAS,EACTI,EAAMhzT,OAAQizT,GAAe,EAEpC,IADAJ,EAASG,EAAMxgS,UACLygS,EAAcjyQ,EAAKhhD,SAGmC,IAA1DghD,EAAMiyQ,GAAchsS,MAAO4rS,EAAQ,GAAKA,EAAQ,KACpDpqS,EAAQ2qS,cAGRH,EAAcjyQ,EAAKhhD,OACnB6yT,GAAS,GAMNpqS,EAAQoqS,SACbA,GAAS,GAGVD,GAAS,EAGJG,IAIH/xQ,EADI6xQ,EACG,GAIA,GAGV,EAGAlqB,EAAO,CAGNzrP,IAAK,WA2BJ,OA1BK8D,IAGC6xQ,IAAWD,IACfK,EAAcjyQ,EAAKhhD,OAAS,EAC5BgzT,EAAMxrT,KAAMqrT,IAGb,SAAW31Q,EAAKlnC,GACf4vS,EAAOK,KAAMjwS,GAAM,SAAU4a,EAAGk9B,GAC1B8yO,EAAY9yO,GACVrlC,EAAQyoS,QAAWvoB,EAAKhhR,IAAKmmC,IAClC9M,EAAKx5C,KAAMsmD,GAEDA,GAAOA,EAAI9tD,QAA4B,WAAlB0lT,EAAQ53P,IAGxC5Q,EAAK4Q,EAEP,GACA,CAZD,CAYK1nC,WAEAysS,IAAWD,GACfM,KAGKnrS,IACR,EAGA21B,OAAQ,WAYP,OAXAkoQ,EAAOK,KAAM7/R,WAAW,SAAUwK,EAAGk9B,GAEpC,IADA,IAAIj/C,GACMA,EAAQ+2S,EAAO/qF,QAAS/sK,EAAK9M,EAAMnyC,KAAa,GACzDmyC,EAAKpS,OAAQ//B,EAAO,GAGfA,GAASokT,GACbA,GAGH,IACOlrS,IACR,EAIAJ,IAAK,SAAUH,GACd,OAAOA,EACNo+R,EAAO/qF,QAASrzM,EAAIw5B,IAAU,EAC9BA,EAAKhhD,OAAS,CAChB,EAGA2vO,MAAO,WAIN,OAHK3uL,IACJA,EAAO,IAEDj5B,IACR,EAKAujG,QAAS,WAGR,OAFAynM,EAASC,EAAQ,GACjBhyQ,EAAO6xQ,EAAS,GACT9qS,IACR,EACAjnB,SAAU,WACT,OAAQkgD,CACT,EAKAqyQ,KAAM,WAKL,OAJAN,EAASC,EAAQ,GACXH,GAAWD,IAChB5xQ,EAAO6xQ,EAAS,IAEV9qS,IACR,EACAgrS,OAAQ,WACP,QAASA,CACV,EAGAO,SAAU,SAAUzqT,EAASmN,GAS5B,OARM+8S,IAEL/8S,EAAO,CAAEnN,GADTmN,EAAOA,GAAQ,IACQoP,MAAQpP,EAAKoP,QAAUpP,GAC9Cg9S,EAAMxrT,KAAMwO,GACN48S,GACLM,KAGKnrS,IACR,EAGAmrS,KAAM,WAEL,OADAvqB,EAAK2qB,SAAUvrS,KAAM3B,WACd2B,IACR,EAGA+qS,MAAO,WACN,QAASA,CACV,GAGF,OAAOnqB,CACR,EA2CAid,EAAOlvR,OAAQ,CAEdm/E,SAAU,SAAU6sL,GACnB,IAAI6wB,EAAS,CAIX,CAAE,SAAU,WAAY3N,EAAO+M,UAAW,UACzC/M,EAAO+M,UAAW,UAAY,GAC/B,CAAE,UAAW,OAAQ/M,EAAO+M,UAAW,eACtC/M,EAAO+M,UAAW,eAAiB,EAAG,YACvC,CAAE,SAAU,OAAQ/M,EAAO+M,UAAW,eACrC/M,EAAO+M,UAAW,eAAiB,EAAG,aAExC3kT,EAAQ,UACRiB,EAAU,CACTjB,MAAO,WACN,OAAOA,CACR,EACA0nG,OAAQ,WAEP,OADAyvE,EAAShgL,KAAMihB,WAAY+jC,KAAM/jC,WAC1B2B,IACR,EACA,MAAS,SAAUP,GAClB,OAAOvY,EAAQC,KAAM,KAAMsY,EAC5B,EAGAw5Q,KAAM,WACL,IAAIzD,EAAMn3Q,UAEV,OAAOw/R,EAAO/vM,UAAU,SAAU29M,GACjC5N,EAAOK,KAAMsN,GAAQ,SAAUj9R,EAAIm9R,GAGlC,IAAIjsS,EAAKo5Q,EAAYrD,EAAKk2B,EAAO,MAAWl2B,EAAKk2B,EAAO,IAKxDtuI,EAAUsuI,EAAO,KAAO,WACvB,IAAIC,EAAWlsS,GAAMA,EAAGP,MAAOc,KAAM3B,WAChCstS,GAAY9yB,EAAY8yB,EAASzkT,SACrCykT,EAASzkT,UACPg7C,SAAUupQ,EAAS1kR,QACnB3pC,KAAMquT,EAAS/tS,SACf0kC,KAAMqpQ,EAASrwS,QAEjBqwS,EAAUC,EAAO,GAAM,QACtB1rS,KACAP,EAAK,CAAEksS,GAAattS,UAGvB,GACD,IACAm3Q,EAAM,IACP,IAAItuR,SACL,EACAC,KAAM,SAAU2sR,EAAaC,EAAYxkP,GACxC,IAAIq8Q,EAAW,EACf,SAASluS,EAASy5D,EAAOimG,EAAU5wJ,EAASq/R,GAC3C,OAAO,WACN,IAAIxU,EAAOr3R,KACV/R,EAAOoQ,UACPytS,EAAa,WACZ,IAAIH,EAAUxkT,EAKd,KAAKgwE,EAAQy0O,GAAb,CAQA,IAJAD,EAAWn/R,EAAQtN,MAAOm4R,EAAMppS,MAIdmvK,EAASl2K,UAC1B,MAAM,IAAIyY,UAAW,4BAOtBxY,EAAOwkT,IAKgB,kBAAbA,GACY,oBAAbA,IACRA,EAASxkT,KAGL0xR,EAAY1xR,GAGX0kT,EACJ1kT,EAAKuY,KACJisS,EACAjuS,EAASkuS,EAAUxuI,EAAUotI,EAAUqB,GACvCnuS,EAASkuS,EAAUxuI,EAAUqtI,EAASoB,KAOvCD,IAEAzkT,EAAKuY,KACJisS,EACAjuS,EAASkuS,EAAUxuI,EAAUotI,EAAUqB,GACvCnuS,EAASkuS,EAAUxuI,EAAUqtI,EAASoB,GACtCnuS,EAASkuS,EAAUxuI,EAAUotI,EAC5BptI,EAAS2uI,eASPv/R,IAAYg+R,IAChBnT,OAAOn8S,EACP+S,EAAO,CAAE09S,KAKRE,GAAWzuI,EAAS4uI,aAAe3U,EAAMppS,GA7D5C,CA+DD,EAGAwgG,EAAUo9M,EACTC,EACA,WACC,IACCA,GACD,CAAE,MAAQrwT,GAEJoiT,EAAO/vM,SAASm+M,eACpBpO,EAAO/vM,SAASm+M,cAAexwT,EAC9BgzG,EAAQrtG,OAML+1E,EAAQ,GAAKy0O,IAIZp/R,IAAYi+R,IAChBpT,OAAOn8S,EACP+S,EAAO,CAAExS,IAGV2hL,EAAS8uI,WAAY7U,EAAMppS,GAE7B,CACD,EAMGkpE,EACJs3B,KAKKovM,EAAO/vM,SAASq+M,aACpB19M,EAAQrtG,MAAQy8S,EAAO/vM,SAASq+M,eAMrBtO,EAAO/vM,SAASs+M,eAC3B39M,EAAQrtG,MAAQy8S,EAAO/vM,SAASs+M,gBAEjC9rT,EAAO4vB,WAAYu+E,GAErB,CACD,CAEA,OAAOovM,EAAO/vM,UAAU,SAAU29M,GAGjCD,EAAQ,GAAK,GAAIr2Q,IAChBz3B,EACC,EACA+tS,EACA5yB,EAAYtpP,GACXA,EACAi7Q,EACDiB,EAASM,aAKXP,EAAQ,GAAK,GAAIr2Q,IAChBz3B,EACC,EACA+tS,EACA5yB,EAAY/E,GACXA,EACA02B,IAKHgB,EAAQ,GAAK,GAAIr2Q,IAChBz3B,EACC,EACA+tS,EACA5yB,EAAY9E,GACXA,EACA02B,GAGJ,IAAIvjT,SACL,EAIAA,QAAS,SAAUomB,GAClB,OAAc,MAAPA,EAAcuwR,EAAOlvR,OAAQrB,EAAKpmB,GAAYA,CACtD,GAEDk2K,EAAW,CAAC,EAkEb,OA/DAygI,EAAOK,KAAMsN,GAAQ,SAAUrmS,EAAGumS,GACjC,IAAIzyQ,EAAOyyQ,EAAO,GACjBW,EAAcX,EAAO,GAKtBxkT,EAASwkT,EAAO,IAAQzyQ,EAAK9D,IAGxBk3Q,GACJpzQ,EAAK9D,KACJ,WAIClvC,EAAQomT,CACT,GAIAb,EAAQ,EAAIrmS,GAAK,GAAIo+F,QAIrBioM,EAAQ,EAAIrmS,GAAK,GAAIo+F,QAGrBioM,EAAQ,GAAK,GAAIF,KAGjBE,EAAQ,GAAK,GAAIF,MAOnBryQ,EAAK9D,IAAKu2Q,EAAO,GAAIP,MAKrB/tI,EAAUsuI,EAAO,IAAQ,WAExB,OADAtuI,EAAUsuI,EAAO,GAAM,QAAU1rS,OAASo9J,OAAWliL,EAAY8kB,KAAM3B,WAChE2B,IACR,EAKAo9J,EAAUsuI,EAAO,GAAM,QAAWzyQ,EAAKsyQ,QACxC,IAGArkT,EAAQA,QAASk2K,GAGZu9G,GACJA,EAAKj7Q,KAAM09J,EAAUA,GAIfA,CACR,EAGAkvI,KAAM,SAAUC,GACf,IAGCC,EAAYnuS,UAAUpmB,OAGtBktB,EAAIqnS,EAGJC,EAAkBh+R,MAAOtJ,GACzBunS,EAAgBrvS,EAAMqC,KAAMrB,WAG5B2gB,EAAU6+Q,EAAO/vM,WAGjB6+M,EAAa,SAAUxnS,GACtB,OAAO,SAAU5nB,GAChBkvT,EAAiBtnS,GAAMnF,KACvB0sS,EAAevnS,GAAM9G,UAAUpmB,OAAS,EAAIolB,EAAMqC,KAAMrB,WAAc9gB,IAC5DivT,GACTxtR,EAAQgtR,YAAaS,EAAiBC,EAExC,CACD,EAGD,GAAKF,GAAa,IACjB9B,EAAY6B,EAAavtR,EAAQ5hC,KAAMuvT,EAAYxnS,IAAMzH,QAASshB,EAAQ5jB,QACxEoxS,GAGuB,YAApBxtR,EAAQ/4B,SACZ4yR,EAAY6zB,EAAevnS,IAAOunS,EAAevnS,GAAIhe,OAErD,OAAO63B,EAAQ73B,OAKjB,KAAQge,KACPulS,EAAYgC,EAAevnS,GAAKwnS,EAAYxnS,GAAK6Z,EAAQ5jB,QAG1D,OAAO4jB,EAAQ93B,SAChB,IAMD,IAAI0lT,EAAc,yDAKlB/O,EAAO/vM,SAASm+M,cAAgB,SAAU7qT,EAAOyrT,GAI3CvsT,EAAOihB,SAAWjhB,EAAOihB,QAAQC,MAAQpgB,GAASwrT,EAAY9kS,KAAM1mB,EAAMhJ,OAC9EkI,EAAOihB,QAAQC,KAAM,8BAAgCpgB,EAAMkS,QAC1DlS,EAAMovB,MAAOq8R,EAEhB,EAKAhP,EAAOiP,eAAiB,SAAU1rT,GACjCd,EAAO4vB,YAAY,WAClB,MAAM9uB,CACP,GACD,EAMA,IAAI2rT,EAAYlP,EAAO/vM,WAkDvB,SAASk/M,IACRpqS,EAASkB,oBAAqB,mBAAoBkpS,GAClD1sT,EAAOwjB,oBAAqB,OAAQkpS,GACpCnP,EAAOjsR,OACR,CApDAisR,EAAOp+R,GAAGmS,MAAQ,SAAUnS,GAY3B,OAVAstS,EACE5lT,KAAMsY,GAKNpY,OAAO,SAAUjG,GACjBy8S,EAAOiP,eAAgB1rT,EACxB,IAEM4e,IACR,EAEA69R,EAAOlvR,OAAQ,CAGd8vR,SAAS,EAITwO,UAAW,EAGXr7R,MAAO,SAAUs7R,KAGF,IAATA,IAAkBrP,EAAOoP,UAAYpP,EAAOY,WAKjDZ,EAAOY,SAAU,GAGH,IAATyO,KAAmBrP,EAAOoP,UAAY,GAK3CF,EAAUf,YAAappS,EAAU,CAAEi7R,IACpC,IAGDA,EAAOjsR,MAAMzqB,KAAO4lT,EAAU5lT,KAaD,aAAxByb,EAAS0tB,YACa,YAAxB1tB,EAAS0tB,aAA6B1tB,EAAS6gC,gBAAgB0pQ,SAGjE7sT,EAAO4vB,WAAY2tR,EAAOjsR,QAK1BhP,EAASiB,iBAAkB,mBAAoBmpS,GAG/C1sT,EAAOujB,iBAAkB,OAAQmpS,IAQlC,IAAII,GAAS,SAATA,EAAmBpP,EAAOv+R,EAAIzgB,EAAKzB,EAAO8vT,EAAWC,EAAU9sJ,GAClE,IAAIr7I,EAAI,EACP8L,EAAM+sR,EAAM/lT,OACZs1T,EAAc,MAAPvuT,EAGR,GAAuB,WAAlB2+S,EAAQ3+S,GAEZ,IAAMmmB,KADNkoS,GAAY,EACDruT,EACVouT,EAAQpP,EAAOv+R,EAAI0F,EAAGnmB,EAAKmmB,IAAK,EAAMmoS,EAAU9sJ,QAI3C,QAAetlK,IAAVqC,IACX8vT,GAAY,EAENx0B,EAAYt7R,KACjBijK,GAAM,GAGF+sJ,IAGC/sJ,GACJ/gJ,EAAGC,KAAMs+R,EAAOzgT,GAChBkiB,EAAK,OAIL8tS,EAAO9tS,EACPA,EAAK,SAAU6S,EAAMkiR,EAAMj3S,GAC1B,OAAOgwT,EAAK7tS,KAAMm+R,EAAQvrR,GAAQ/0B,EACnC,IAIGkiB,GACJ,KAAQ0F,EAAI8L,EAAK9L,IAChB1F,EACCu+R,EAAO74R,GAAKnmB,EAAKwhK,EAChBjjK,EACAA,EAAMmiB,KAAMs+R,EAAO74R,GAAKA,EAAG1F,EAAIu+R,EAAO74R,GAAKnmB,KAMhD,OAAKquT,EACGrP,EAIHuP,EACG9tS,EAAGC,KAAMs+R,GAGV/sR,EAAMxR,EAAIu+R,EAAO,GAAKh/S,GAAQsuT,CACtC,EAIIE,GAAY,QACfC,GAAa,YAGd,SAASC,GAAYC,EAAMC,GAC1B,OAAOA,EAAOxwS,aACf,CAKA,SAASywS,GAAW32K,GACnB,OAAOA,EAAOzgI,QAAS+2S,GAAW,OAAQ/2S,QAASg3S,GAAYC,GAChE,CACA,IAAII,GAAa,SAAUC,GAQ1B,OAA0B,IAAnBA,EAAMz0Q,UAAqC,IAAnBy0Q,EAAMz0Q,YAAsBy0Q,EAAMz0Q,QAClE,EAKA,SAASu5E,KACR7yG,KAAKw+R,QAAUX,EAAOW,QAAU3rL,GAAK3mG,KACtC,CAEA2mG,GAAK3mG,IAAM,EAEX2mG,GAAKxzG,UAAY,CAEhBgvF,MAAO,SAAU0/M,GAGhB,IAAIxwT,EAAQwwT,EAAO/tS,KAAKw+R,SA4BxB,OAzBMjhT,IACLA,EAAQ,CAAC,EAKJuwT,GAAYC,KAIXA,EAAMz0Q,SACVy0Q,EAAO/tS,KAAKw+R,SAAYjhT,EAMxBsB,OAAOs1C,eAAgB45Q,EAAO/tS,KAAKw+R,QAAS,CAC3CjhT,MAAOA,EACP8iB,cAAc,MAMX9iB,CACR,EACAsiB,IAAK,SAAUkuS,EAAOloT,EAAMtI,GAC3B,IAAI41B,EACHk7E,EAAQruF,KAAKquF,MAAO0/M,GAIrB,GAAqB,kBAATloT,EACXwoG,EAAOw/M,GAAWhoT,IAAWtI,OAM7B,IAAM41B,KAAQttB,EACbwoG,EAAOw/M,GAAW16R,IAAWttB,EAAMstB,GAGrC,OAAOk7E,CACR,EACA3tG,IAAK,SAAUqtT,EAAO/uT,GACrB,YAAe9D,IAAR8D,EACNghB,KAAKquF,MAAO0/M,GAGZA,EAAO/tS,KAAKw+R,UAAauP,EAAO/tS,KAAKw+R,SAAWqP,GAAW7uT,GAC7D,EACAouT,OAAQ,SAAUW,EAAO/uT,EAAKzB,GAa7B,YAAarC,IAAR8D,GACCA,GAAsB,kBAARA,QAAgC9D,IAAVqC,EAElCyiB,KAAKtf,IAAKqtT,EAAO/uT,IASzBghB,KAAKH,IAAKkuS,EAAO/uT,EAAKzB,QAILrC,IAAVqC,EAAsBA,EAAQyB,EACtC,EACA22C,OAAQ,SAAUo4Q,EAAO/uT,GACxB,IAAImmB,EACHkpF,EAAQ0/M,EAAO/tS,KAAKw+R,SAErB,QAAetjT,IAAVmzG,EAAL,CAIA,QAAanzG,IAAR8D,EAAoB,CAkBxBmmB,GAXCnmB,EAJIyvB,MAAMC,QAAS1vB,GAIbA,EAAIc,IAAK+tT,KAEf7uT,EAAM6uT,GAAW7uT,MAIJqvG,EACZ,CAAErvG,GACAA,EAAIopB,MAAOmiS,IAAmB,IAG1BtyT,OAER,KAAQktB,YACAkpF,EAAOrvG,EAAKmmB,GAErB,OAGajqB,IAAR8D,GAAqB6+S,EAAOc,cAAetwM,MAM1C0/M,EAAMz0Q,SACVy0Q,EAAO/tS,KAAKw+R,cAAYtjT,SAEjB6yT,EAAO/tS,KAAKw+R,SArCrB,CAwCD,EACArrJ,QAAS,SAAU46J,GAClB,IAAI1/M,EAAQ0/M,EAAO/tS,KAAKw+R,SACxB,YAAiBtjT,IAAVmzG,IAAwBwvM,EAAOc,cAAetwM,EACtD,GAED,IAAI2/M,GAAW,IAAIn7L,GAEfo7L,GAAW,IAAIp7L,GAcfq7L,GAAS,gCACZC,GAAa,SA2Bd,SAASC,GAAU97R,EAAMtzB,EAAK6G,GAC7B,IAAIzN,EAIJ,QAAc8C,IAAT2K,GAAwC,IAAlBysB,EAAKgnB,SAI/B,GAHAlhD,EAAO,QAAU4G,EAAIyX,QAAS03S,GAAY,OAAQ9vT,cAG7B,kBAFrBwH,EAAOysB,EAAK8uB,aAAchpD,IAEM,CAC/B,IACCyN,EApCJ,SAAkBA,GACjB,MAAc,SAATA,GAIS,UAATA,IAIS,SAATA,EACG,KAIHA,KAAUA,EAAO,IACbA,EAGJqoT,GAAOpmS,KAAMjiB,GACVyW,KAAKC,MAAO1W,GAGbA,EACR,CAaW6jG,CAAS7jG,EACjB,CAAE,MAAQpK,GAAK,CAGfwyT,GAASpuS,IAAKyS,EAAMtzB,EAAK6G,EAC1B,MACCA,OAAO3K,EAGT,OAAO2K,CACR,CAEAg4S,EAAOlvR,OAAQ,CACdwkI,QAAS,SAAU7gI,GAClB,OAAO27R,GAAS96J,QAAS7gI,IAAU07R,GAAS76J,QAAS7gI,EACtD,EAEAzsB,KAAM,SAAUysB,EAAMl6B,EAAMyN,GAC3B,OAAOooT,GAASb,OAAQ96R,EAAMl6B,EAAMyN,EACrC,EAEAwoT,WAAY,SAAU/7R,EAAMl6B,GAC3B61T,GAASt4Q,OAAQrjB,EAAMl6B,EACxB,EAIAk2T,MAAO,SAAUh8R,EAAMl6B,EAAMyN,GAC5B,OAAOmoT,GAASZ,OAAQ96R,EAAMl6B,EAAMyN,EACrC,EAEA0oT,YAAa,SAAUj8R,EAAMl6B,GAC5B41T,GAASr4Q,OAAQrjB,EAAMl6B,EACxB,IAGDylT,EAAOp+R,GAAGkP,OAAQ,CACjB9oB,KAAM,SAAU7G,EAAKzB,GACpB,IAAI4nB,EAAG/sB,EAAMyN,EACZysB,EAAOtS,KAAM,GACbu2B,EAAQjkB,GAAQA,EAAKkkB,WAGtB,QAAat7C,IAAR8D,EAAoB,CACxB,GAAKghB,KAAK/nB,SACT4N,EAAOooT,GAASvtT,IAAK4xB,GAEE,IAAlBA,EAAKgnB,WAAmB00Q,GAASttT,IAAK4xB,EAAM,iBAAmB,CAEnE,IADAnN,EAAIoxB,EAAMt+C,OACFktB,KAIFoxB,EAAOpxB,IAEsB,KADjC/sB,EAAOm+C,EAAOpxB,GAAI/sB,MACRke,QAAS,WAClBle,EAAOy1T,GAAWz1T,EAAKilB,MAAO,IAC9B+wS,GAAU97R,EAAMl6B,EAAMyN,EAAMzN,KAI/B41T,GAASnuS,IAAKyS,EAAM,gBAAgB,EACrC,CAGD,OAAOzsB,CACR,CAGA,MAAoB,kBAAR7G,EACJghB,KAAKk+R,MAAM,WACjB+P,GAASpuS,IAAKG,KAAMhhB,EACrB,IAGMouT,GAAQptS,MAAM,SAAUziB,GAC9B,IAAIsI,EAOJ,GAAKysB,QAAkBp3B,IAAVqC,EAKZ,YAAcrC,KADd2K,EAAOooT,GAASvtT,IAAK4xB,EAAMtzB,UAQb9D,KADd2K,EAAOuoT,GAAU97R,EAAMtzB,IALf6G,OAWR,EAIDma,KAAKk+R,MAAM,WAGV+P,GAASpuS,IAAKG,KAAMhhB,EAAKzB,EAC1B,GACD,GAAG,KAAMA,EAAO8gB,UAAUpmB,OAAS,EAAG,MAAM,EAC7C,EAEAo2T,WAAY,SAAUrvT,GACrB,OAAOghB,KAAKk+R,MAAM,WACjB+P,GAASt4Q,OAAQ31B,KAAMhhB,EACxB,GACD,IAID6+S,EAAOlvR,OAAQ,CACds8R,MAAO,SAAU34R,EAAMh4B,EAAMuL,GAC5B,IAAIolT,EAEJ,GAAK34R,EAYJ,OAXAh4B,GAASA,GAAQ,MAAS,QAC1B2wT,EAAQ+C,GAASttT,IAAK4xB,EAAMh4B,GAGvBuL,KACEolT,GAASx8R,MAAMC,QAAS7oB,GAC7BolT,EAAQ+C,GAASZ,OAAQ96R,EAAMh4B,EAAMujT,EAAOgB,UAAWh5S,IAEvDolT,EAAMxrT,KAAMoG,IAGPolT,GAAS,EAElB,EAEAuD,QAAS,SAAUl8R,EAAMh4B,GACxBA,EAAOA,GAAQ,KAEf,IAAI2wT,EAAQpN,EAAOoN,MAAO34R,EAAMh4B,GAC/Bm0T,EAAcxD,EAAMhzT,OACpBwnB,EAAKwrS,EAAMxgS,QACXikS,EAAQ7Q,EAAO8Q,YAAar8R,EAAMh4B,GAMvB,eAAPmlB,IACJA,EAAKwrS,EAAMxgS,QACXgkS,KAGIhvS,IAIU,OAATnlB,GACJ2wT,EAAM3sS,QAAS,qBAITowS,EAAM1tQ,KACbvhC,EAAGC,KAAM4S,GApBF,WACNurR,EAAO2Q,QAASl8R,EAAMh4B,EACvB,GAkBqBo0T,KAGhBD,GAAeC,GACpBA,EAAM9mF,MAAMujF,MAEd,EAGAwD,YAAa,SAAUr8R,EAAMh4B,GAC5B,IAAI0E,EAAM1E,EAAO,aACjB,OAAO0zT,GAASttT,IAAK4xB,EAAMtzB,IAASgvT,GAASZ,OAAQ96R,EAAMtzB,EAAK,CAC/D4oO,MAAOi2E,EAAO+M,UAAW,eAAgBz1Q,KAAK,WAC7C64Q,GAASr4Q,OAAQrjB,EAAM,CAAEh4B,EAAO,QAAS0E,GAC1C,KAEF,IAGD6+S,EAAOp+R,GAAGkP,OAAQ,CACjBs8R,MAAO,SAAU3wT,EAAMuL,GACtB,IAAI+oT,EAAS,EAQb,MANqB,kBAATt0T,IACXuL,EAAOvL,EACPA,EAAO,KACPs0T,KAGIvwS,UAAUpmB,OAAS22T,EAChB/Q,EAAOoN,MAAOjrS,KAAM,GAAK1lB,QAGjBY,IAAT2K,EACNma,KACAA,KAAKk+R,MAAM,WACV,IAAI+M,EAAQpN,EAAOoN,MAAOjrS,KAAM1lB,EAAMuL,GAGtCg4S,EAAO8Q,YAAa3uS,KAAM1lB,GAEZ,OAATA,GAAgC,eAAf2wT,EAAO,IAC5BpN,EAAO2Q,QAASxuS,KAAM1lB,EAExB,GACF,EACAk0T,QAAS,SAAUl0T,GAClB,OAAO0lB,KAAKk+R,MAAM,WACjBL,EAAO2Q,QAASxuS,KAAM1lB,EACvB,GACD,EACAu0T,WAAY,SAAUv0T,GACrB,OAAO0lB,KAAKirS,MAAO3wT,GAAQ,KAAM,GAClC,EAIA4M,QAAS,SAAU5M,EAAMgzB,GACxB,IAAI4wE,EACHhtB,EAAQ,EACR49O,EAAQjR,EAAO/vM,WACfp3D,EAAW12B,KACXmF,EAAInF,KAAK/nB,OACTylB,EAAU,aACCwzD,GACT49O,EAAM9C,YAAat1Q,EAAU,CAAEA,GAEjC,EAQD,IANqB,kBAATp8C,IACXgzB,EAAMhzB,EACNA,OAAOY,GAERZ,EAAOA,GAAQ,KAEP6qB,MACP+4E,EAAM8vN,GAASttT,IAAKg2C,EAAUvxB,GAAK7qB,EAAO,gBAC9B4jG,EAAI0pI,QACf12J,IACAgtB,EAAI0pI,MAAMzyL,IAAKz3B,IAIjB,OADAA,IACOoxS,EAAM5nT,QAASomB,EACvB,IAED,IAAIyhS,GAAS,sCAAwC5oT,OAEjD6oT,GAAU,IAAIhmS,OAAQ,iBAAmB+lS,GAAO,cAAe,KAG/DE,GAAY,CAAE,MAAO,QAAS,SAAU,QAExCxrQ,GAAkB7gC,EAAS6gC,gBAI1ByrQ,GAAa,SAAU58R,GACzB,OAAOurR,EAAO3mQ,SAAU5kB,EAAK0jO,cAAe1jO,EAC7C,EACA68R,GAAW,CAAEA,UAAU,GAOnB1rQ,GAAgB2rQ,cACpBF,GAAa,SAAU58R,GACtB,OAAOurR,EAAO3mQ,SAAU5kB,EAAK0jO,cAAe1jO,IAC3CA,EAAK88R,YAAaD,MAAe78R,EAAK0jO,aACxC,GAEF,IAAIq5D,GAAqB,SAAU/8R,EAAM+mB,GAOvC,MAA8B,UAH9B/mB,EAAO+mB,GAAM/mB,GAGDilB,MAAMuiB,SACM,KAAvBxnC,EAAKilB,MAAMuiB,SAMXo1P,GAAY58R,IAEsB,SAAlCurR,EAAOl5G,IAAKryK,EAAM,UACpB,EAID,SAASg9R,GAAWh9R,EAAMa,EAAMo8R,EAAYC,GAC3C,IAAIC,EAAUC,EACbC,EAAgB,GAChBjsT,EAAe8rT,EACd,WACC,OAAOA,EAAMp7R,KACd,EACA,WACC,OAAOypR,EAAOl5G,IAAKryK,EAAMa,EAAM,GAChC,EACDyxF,EAAUlhH,IACV8iN,EAAO+oG,GAAcA,EAAY,KAAS1R,EAAO+R,UAAWz8R,GAAS,GAAK,MAG1E08R,EAAgBv9R,EAAKgnB,WAClBukQ,EAAO+R,UAAWz8R,IAAmB,OAATqzL,IAAkB5hG,IAChDoqM,GAAQt+Q,KAAMmtQ,EAAOl5G,IAAKryK,EAAMa,IAElC,GAAK08R,GAAiBA,EAAe,KAAQrpG,EAAO,CAYnD,IARA5hG,GAAoB,EAGpB4hG,EAAOA,GAAQqpG,EAAe,GAG9BA,GAAiBjrM,GAAW,EAEpB+qM,KAIP9R,EAAOtmQ,MAAOjlB,EAAMa,EAAM08R,EAAgBrpG,IACnC,EAAIkpG,IAAY,GAAMA,EAAQhsT,IAAiBkhH,GAAW,MAAW,IAC3E+qM,EAAgB,GAEjBE,GAAgCH,EAIjCG,GAAgC,EAChChS,EAAOtmQ,MAAOjlB,EAAMa,EAAM08R,EAAgBrpG,GAG1C+oG,EAAaA,GAAc,EAC5B,CAeA,OAbKA,IACJM,GAAiBA,IAAkBjrM,GAAW,EAG9C6qM,EAAWF,EAAY,GACtBM,GAAkBN,EAAY,GAAM,GAAMA,EAAY,IACrDA,EAAY,GACTC,IACJA,EAAMhpG,KAAOA,EACbgpG,EAAM/hS,MAAQoiS,EACdL,EAAMtnS,IAAMunS,IAGPA,CACR,CAGA,IAAIK,GAAoB,CAAC,EAEzB,SAASC,GAAmBz9R,GAC3B,IAAIyM,EACH2+Q,EAAMprR,EAAK0jO,cACXtrL,EAAWp4C,EAAKo4C,SAChB5Q,EAAUg2P,GAAmBplP,GAE9B,OAAK5Q,IAIL/6B,EAAO2+Q,EAAIvsQ,KAAKhgB,YAAausR,EAAI9sR,cAAe85C,IAChD5Q,EAAU+jP,EAAOl5G,IAAK5lK,EAAM,WAE5BA,EAAKzO,WAAWkoB,YAAazZ,GAEZ,SAAZ+6B,IACJA,EAAU,SAEXg2P,GAAmBplP,GAAa5Q,EAEzBA,EACR,CAEA,SAASk2P,GAAUt5Q,EAAUwuC,GAO5B,IANA,IAAIprB,EAASxnC,EACZ7zB,EAAS,GACTqI,EAAQ,EACR7O,EAASy+C,EAASz+C,OAGX6O,EAAQ7O,EAAQ6O,KACvBwrB,EAAOokB,EAAU5vC,IACNywC,QAIXuiB,EAAUxnC,EAAKilB,MAAMuiB,QAChBorB,GAKa,SAAZprB,IACJr7D,EAAQqI,GAAUknT,GAASttT,IAAK4xB,EAAM,YAAe,KAC/C7zB,EAAQqI,KACbwrB,EAAKilB,MAAMuiB,QAAU,KAGK,KAAvBxnC,EAAKilB,MAAMuiB,SAAkBu1P,GAAoB/8R,KACrD7zB,EAAQqI,GAAUipT,GAAmBz9R,KAGrB,SAAZwnC,IACJr7D,EAAQqI,GAAU,OAGlBknT,GAASnuS,IAAKyS,EAAM,UAAWwnC,KAMlC,IAAMhzD,EAAQ,EAAGA,EAAQ7O,EAAQ6O,IACR,MAAnBrI,EAAQqI,KACZ4vC,EAAU5vC,GAAQywC,MAAMuiB,QAAUr7D,EAAQqI,IAI5C,OAAO4vC,CACR,CAEAmnQ,EAAOp+R,GAAGkP,OAAQ,CACjBu2D,KAAM,WACL,OAAO8qO,GAAUhwS,MAAM,EACxB,EACAilE,KAAM,WACL,OAAO+qO,GAAUhwS,KAClB,EACAs4E,OAAQ,SAAUryF,GACjB,MAAsB,mBAAVA,EACJA,EAAQ+Z,KAAKklE,OAASllE,KAAKilE,OAG5BjlE,KAAKk+R,MAAM,WACZmR,GAAoBrvS,MACxB69R,EAAQ79R,MAAOklE,OAEf24N,EAAQ79R,MAAOilE,MAEjB,GACD,IAED,IAAIgrO,GAAmB,wBAEnBC,GAAa,iCAEbC,GAAgB,sCAIpB,WACC,IACCx/R,EADc/N,EAASm1B,yBACR5mB,YAAavO,EAASgO,cAAe,QACpD9X,EAAQ8J,EAASgO,cAAe,SAMjC9X,EAAMw9B,aAAc,OAAQ,SAC5Bx9B,EAAMw9B,aAAc,UAAW,WAC/Bx9B,EAAMw9B,aAAc,OAAQ,KAE5B3lB,EAAIQ,YAAarY,GAIjBskS,EAAQgT,WAAaz/R,EAAIS,WAAW,GAAOA,WAAW,GAAOi/G,UAAU10I,QAIvEg1B,EAAIY,UAAY,yBAChB6rR,EAAQiT,iBAAmB1/R,EAAIS,WAAW,GAAOi/G,UAAUl0F,aAK3DxrB,EAAIY,UAAY,oBAChB6rR,EAAQnlR,SAAWtH,EAAI0/G,SACvB,CA7BD,GAiCA,IAAIigL,GAAU,CAKbj8I,MAAO,CAAE,EAAG,UAAW,YACvBl+C,IAAK,CAAE,EAAG,oBAAqB,uBAC/BsE,GAAI,CAAE,EAAG,iBAAkB,oBAC3B8iB,GAAI,CAAE,EAAG,qBAAsB,yBAE/BgzK,SAAU,CAAE,EAAG,GAAI,KAYpB,SAASC,GAAQ1vT,EAASypE,GAIzB,IAAIv9C,EAYJ,OATCA,EAD4C,qBAAjClsB,EAAQ+vB,qBACb/vB,EAAQ+vB,qBAAsB05C,GAAO,KAEI,qBAA7BzpE,EAAQgwB,iBACpBhwB,EAAQgwB,iBAAkBy5C,GAAO,KAGjC,QAGMrvE,IAARqvE,GAAqBA,GAAOG,EAAU5pE,EAASypE,GAC5CszO,EAAO3vR,MAAO,CAAEptB,GAAWksB,GAG5BA,CACR,CAIA,SAASyjS,GAAezS,EAAO0S,GAI9B,IAHA,IAAIvrS,EAAI,EACP6L,EAAIgtR,EAAM/lT,OAEHktB,EAAI6L,EAAG7L,IACd6oS,GAASnuS,IACRm+R,EAAO74R,GACP,cACCurS,GAAe1C,GAASttT,IAAKgwT,EAAavrS,GAAK,cAGnD,CA7CAmrS,GAAQ7mJ,MAAQ6mJ,GAAQ53G,MAAQ43G,GAAQ3iJ,SAAW2iJ,GAAQ9sJ,QAAU8sJ,GAAQj8I,MAC7Ei8I,GAAQ/oF,GAAK+oF,GAAQ/yK,GAGf6/J,EAAQnlR,SACbq4R,GAAQK,SAAWL,GAAQr4R,OAAS,CAAE,EAAG,+BAAgC,cA2C1E,IAAI24R,GAAQ,YAEZ,SAASC,GAAe7S,EAAOl9S,EAASgwT,EAASvkM,EAAWwkM,GAO3D,IANA,IAAIz+R,EAAM4rE,EAAK3zB,EAAKc,EAAM2lP,EAAUx6R,EACnCy6R,EAAWnwT,EAAQi3C,yBACnBguB,EAAQ,GACR5gD,EAAI,EACJ6L,EAAIgtR,EAAM/lT,OAEHktB,EAAI6L,EAAG7L,IAGd,IAFAmN,EAAO0rR,EAAO74R,KAEQ,IAATmN,EAGZ,GAAwB,WAAnBqrR,EAAQrrR,GAIZurR,EAAO3vR,MAAO63C,EAAOzzC,EAAKgnB,SAAW,CAAEhnB,GAASA,QAG1C,GAAMs+R,GAAM9oS,KAAMwK,GAIlB,CAUN,IATA4rE,EAAMA,GAAO+yN,EAAS9/R,YAAarwB,EAAQ8vB,cAAe,QAG1D25C,GAAQ2lP,GAASx/Q,KAAMpe,IAAU,CAAE,GAAI,KAAQ,GAAIj0B,cACnDgtE,EAAOilP,GAAS/lP,IAAS+lP,GAAQC,SACjCryN,EAAI3sE,UAAY85C,EAAM,GAAMwyO,EAAOqT,cAAe5+R,GAAS+4C,EAAM,GAGjE70C,EAAI60C,EAAM,GACF70C,KACP0nE,EAAMA,EAAImyC,UAKXwtK,EAAO3vR,MAAO63C,EAAOm4B,EAAIp6B,aAGzBo6B,EAAM+yN,EAAS11L,YAGXz0D,YAAc,EACnB,MA1BCf,EAAMtmE,KAAMqB,EAAQ+hH,eAAgBvwF,IAkCvC,IAHA2+R,EAASnqP,YAAc,GAEvB3hD,EAAI,EACMmN,EAAOyzC,EAAO5gD,MAGvB,GAAKonG,GAAasxL,EAAO/qF,QAASxgM,EAAMi6F,IAAe,EACjDwkM,GACJA,EAAQtxT,KAAM6yB,QAgBhB,GAXA0+R,EAAW9B,GAAY58R,GAGvB4rE,EAAMsyN,GAAQS,EAAS9/R,YAAamB,GAAQ,UAGvC0+R,GACJP,GAAevyN,GAIX4yN,EAEJ,IADAt6R,EAAI,EACMlE,EAAO4rE,EAAK1nE,MAChB25R,GAAYroS,KAAMwK,EAAKh4B,MAAQ,KACnCw2T,EAAQrxT,KAAM6yB,GAMlB,OAAO2+R,CACR,CAGA,IAAIE,GAAiB,sBAErB,SAASC,KACR,OAAO,CACR,CAEA,SAASC,KACR,OAAO,CACR,CAEA,SAAS9qR,GAAIjU,EAAMsiG,EAAOj8E,EAAU9yC,EAAM4Z,EAAI8+Q,GAC7C,IAAI+yB,EAAQh3T,EAGZ,GAAsB,kBAAVs6H,EAAqB,CAShC,IAAMt6H,IANmB,kBAAbq+C,IAGX9yC,EAAOA,GAAQ8yC,EACfA,OAAWz9C,GAEE05H,EACbruF,GAAIjU,EAAMh4B,EAAMq+C,EAAU9yC,EAAM+uH,EAAOt6H,GAAQikS,GAEhD,OAAOjsQ,CACR,CAqBA,GAnBa,MAARzsB,GAAsB,MAAN4Z,GAGpBA,EAAKk5B,EACL9yC,EAAO8yC,OAAWz9C,GACD,MAANukB,IACc,kBAAbk5B,GAGXl5B,EAAK5Z,EACLA,OAAO3K,IAIPukB,EAAK5Z,EACLA,EAAO8yC,EACPA,OAAWz9C,KAGD,IAAPukB,EACJA,EAAK4xS,QACC,IAAM5xS,EACZ,OAAO6S,EAeR,OAZa,IAARisQ,IACJ+yB,EAAS7xS,EACTA,EAAK,SAAU1d,GAId,OADA87S,IAASj3Q,IAAK7kC,GACPuvT,EAAOpyS,MAAOc,KAAM3B,UAC5B,EAGAoB,EAAG4kF,KAAOitN,EAAOjtN,OAAUitN,EAAOjtN,KAAOw5M,EAAOx5M,SAE1C/xE,EAAK4rR,MAAM,WACjBL,EAAO97S,MAAMozC,IAAKn1B,KAAM40G,EAAOn1G,EAAI5Z,EAAM8yC,EAC1C,GACD,CA6aA,SAAS44Q,GAAgBl4Q,EAAI/+C,EAAMk3T,GAG5BA,GAQNxD,GAASnuS,IAAKw5B,EAAI/+C,GAAM,GACxBujT,EAAO97S,MAAMozC,IAAKkE,EAAI/+C,EAAM,CAC3BykT,WAAW,EACXvyR,QAAS,SAAUzqB,GAClB,IAAI3C,EACHqyT,EAAQzD,GAASttT,IAAKsf,KAAM1lB,GAE7B,GAAyB,EAAlByH,EAAMulC,WAAmBtnB,KAAM1lB,IAGrC,GAAMm3T,GA4BQ5T,EAAO97S,MAAM8pT,QAASvxT,IAAU,CAAC,GAAIo3T,cAClD3vT,EAAMinE,uBAhBN,GARAyoP,EAAQp0S,EAAMqC,KAAMrB,WACpB2vS,GAASnuS,IAAKG,KAAM1lB,EAAMm3T,GAG1BzxS,KAAM1lB,KACN8E,EAAS4uT,GAASttT,IAAKsf,KAAM1lB,GAC7B0zT,GAASnuS,IAAKG,KAAM1lB,GAAM,GAErBm3T,IAAUryT,EAMd,OAHA2C,EAAMkvH,2BACNlvH,EAAM2uD,iBAECtxD,OAeEqyT,IAGXzD,GAASnuS,IAAKG,KAAM1lB,EAAMujT,EAAO97S,MAAM+zC,QACtC27Q,EAAO,GACPA,EAAMp0S,MAAO,GACb2C,OAWDje,EAAMinE,kBACNjnE,EAAM4vT,8BAAgCP,GAExC,UAvEkCl2T,IAA7B8yT,GAASttT,IAAK24C,EAAI/+C,IACtBujT,EAAO97S,MAAMozC,IAAKkE,EAAI/+C,EAAM82T,GAwE/B,CApfAvT,EAAO97S,MAAQ,CAEd2+R,OAAQ,CAAC,EAETvrP,IAAK,SAAU7iB,EAAMsiG,EAAOpoG,EAAS3mB,EAAM8yC,GAE1C,IAAIi5Q,EAAaC,EAAa3zN,EAC7B7qD,EAAQ+xI,EAAG0sI,EACXjG,EAASl1F,EAAUr8N,EAAMy3T,EAAYC,EACrCj8D,EAAWi4D,GAASttT,IAAK4xB,GAG1B,GAAMw7R,GAAYx7R,GAuClB,IAlCK9F,EAAQA,UAEZA,GADAolS,EAAcplS,GACQA,QACtBmsB,EAAWi5Q,EAAYj5Q,UAKnBA,GACJklQ,EAAO/0S,KAAKq7S,gBAAiB1gQ,GAAiB9K,GAIzCnsB,EAAQ63E,OACb73E,EAAQ63E,KAAOw5M,EAAOx5M,SAIfhxD,EAAS0iN,EAAS1iN,UACzBA,EAAS0iN,EAAS1iN,OAASx0C,OAAOqhB,OAAQ,QAEnC2xS,EAAc97D,EAASzmM,UAC9BuiQ,EAAc97D,EAASzmM,OAAS,SAAU7zD,GAIzC,MAAyB,qBAAXoiT,GAA0BA,EAAO97S,MAAMkwT,YAAcx2T,EAAEnB,KACpEujT,EAAO97S,MAAM8sS,SAAS3vR,MAAOoT,EAAMjU,gBAAcnjB,CACnD,GAKDkqL,GADAxwD,GAAUA,GAAS,IAAKxsG,MAAOmiS,IAAmB,CAAE,KAC1CtyT,OACFmtL,KAEP9qL,EAAO03T,GADP9zN,EAAMizN,GAAezgR,KAAMkkF,EAAOwwD,KAAS,IACpB,GACvB2sI,GAAe7zN,EAAK,IAAO,IAAKjqF,MAAO,KAAM8Q,OAGvCzqB,IAKNuxT,EAAUhO,EAAO97S,MAAM8pT,QAASvxT,IAAU,CAAC,EAG3CA,GAASq+C,EAAWkzQ,EAAQ6F,aAAe7F,EAAQqG,WAAc53T,EAGjEuxT,EAAUhO,EAAO97S,MAAM8pT,QAASvxT,IAAU,CAAC,EAG3Cw3T,EAAYjU,EAAOlvR,OAAQ,CAC1Br0B,KAAMA,EACN03T,SAAUA,EACVnsT,KAAMA,EACN2mB,QAASA,EACT63E,KAAM73E,EAAQ63E,KACd1rD,SAAUA,EACVgpQ,aAAchpQ,GAAYklQ,EAAOqG,KAAK97R,MAAMu5R,aAAa75R,KAAM6wB,GAC/DomQ,UAAWgT,EAAW9qS,KAAM,MAC1B2qS,IAGKj7F,EAAWtjL,EAAQ/4C,OAC1Bq8N,EAAWtjL,EAAQ/4C,GAAS,IACnB63T,cAAgB,EAGnBtG,EAAQuG,QACiD,IAA9DvG,EAAQuG,MAAM1yS,KAAM4S,EAAMzsB,EAAMksT,EAAYF,IAEvCv/R,EAAKzO,kBACTyO,EAAKzO,iBAAkBvpB,EAAMu3T,IAK3BhG,EAAQ12Q,MACZ02Q,EAAQ12Q,IAAIz1B,KAAM4S,EAAMw/R,GAElBA,EAAUtlS,QAAQ63E,OACvBytN,EAAUtlS,QAAQ63E,KAAO73E,EAAQ63E,OAK9B1rD,EACJg+K,EAAS9vL,OAAQ8vL,EAASw7F,gBAAiB,EAAGL,GAE9Cn7F,EAASl3N,KAAMqyT,GAIhBjU,EAAO97S,MAAM2+R,OAAQpmS,IAAS,EAGhC,EAGAq7C,OAAQ,SAAUrjB,EAAMsiG,EAAOpoG,EAASmsB,EAAU05Q,GAEjD,IAAI77R,EAAG87R,EAAWp0N,EACjB7qD,EAAQ+xI,EAAG0sI,EACXjG,EAASl1F,EAAUr8N,EAAMy3T,EAAYC,EACrCj8D,EAAWi4D,GAAS76J,QAAS7gI,IAAU07R,GAASttT,IAAK4xB,GAEtD,GAAMyjO,IAAe1iN,EAAS0iN,EAAS1iN,QAAvC,CAOA,IADA+xI,GADAxwD,GAAUA,GAAS,IAAKxsG,MAAOmiS,IAAmB,CAAE,KAC1CtyT,OACFmtL,KAMP,GAJA9qL,EAAO03T,GADP9zN,EAAMizN,GAAezgR,KAAMkkF,EAAOwwD,KAAS,IACpB,GACvB2sI,GAAe7zN,EAAK,IAAO,IAAKjqF,MAAO,KAAM8Q,OAGvCzqB,EAAN,CAeA,IARAuxT,EAAUhO,EAAO97S,MAAM8pT,QAASvxT,IAAU,CAAC,EAE3Cq8N,EAAWtjL,EADX/4C,GAASq+C,EAAWkzQ,EAAQ6F,aAAe7F,EAAQqG,WAAc53T,IACpC,GAC7B4jG,EAAMA,EAAK,IACV,IAAIl1E,OAAQ,UAAY+oS,EAAW9qS,KAAM,iBAAoB,WAG9DqrS,EAAY97R,EAAImgM,EAAS1+N,OACjBu+B,KACPs7R,EAAYn7F,EAAUngM,IAEf67R,GAAeL,IAAaF,EAAUE,UACzCxlS,GAAWA,EAAQ63E,OAASytN,EAAUztN,MACtCnG,IAAOA,EAAIp2E,KAAMgqS,EAAU/S,YAC3BpmQ,GAAYA,IAAam5Q,EAAUn5Q,WACxB,OAAbA,IAAqBm5Q,EAAUn5Q,YAChCg+K,EAAS9vL,OAAQrQ,EAAG,GAEfs7R,EAAUn5Q,UACdg+K,EAASw7F,gBAELtG,EAAQl2Q,QACZk2Q,EAAQl2Q,OAAOj2B,KAAM4S,EAAMw/R,IAOzBQ,IAAc37F,EAAS1+N,SACrB4zT,EAAQ0G,WACkD,IAA/D1G,EAAQ0G,SAAS7yS,KAAM4S,EAAMy/R,EAAYh8D,EAASzmM,SAElDuuP,EAAO2U,YAAalgS,EAAMh4B,EAAMy7P,EAASzmM,eAGnCjc,EAAQ/4C,GAtChB,MAJC,IAAMA,KAAQ+4C,EACbwqQ,EAAO97S,MAAM4zC,OAAQrjB,EAAMh4B,EAAOs6H,EAAOwwD,GAAK54J,EAASmsB,GAAU,GA8C/DklQ,EAAOc,cAAetrQ,IAC1B26Q,GAASr4Q,OAAQrjB,EAAM,gBA5DxB,CA8DD,EAEAu8Q,SAAU,SAAU5xB,GAEnB,IAAI93P,EAAGqR,EAAGxJ,EAAK04R,EAASoM,EAAWW,EAClCxkT,EAAO,IAAIwgB,MAAOpQ,UAAUpmB,QAG5B8J,EAAQ87S,EAAO97S,MAAM2wT,IAAKz1C,GAE1BtmD,GACCq3F,GAASttT,IAAKsf,KAAM,WAAcnhB,OAAOqhB,OAAQ,OAC/Cne,EAAMzH,OAAU,GACnBuxT,EAAUhO,EAAO97S,MAAM8pT,QAAS9pT,EAAMzH,OAAU,CAAC,EAKlD,IAFA2T,EAAM,GAAMlM,EAENojB,EAAI,EAAGA,EAAI9G,UAAUpmB,OAAQktB,IAClClX,EAAMkX,GAAM9G,UAAW8G,GAMxB,GAHApjB,EAAM4wT,eAAiB3yS,MAGlB6rS,EAAQ+G,cAA2D,IAA5C/G,EAAQ+G,YAAYlzS,KAAMM,KAAMje,GAA5D,CASA,IAJA0wT,EAAe5U,EAAO97S,MAAM40N,SAASj3M,KAAMM,KAAMje,EAAO40N,GAGxDxxM,EAAI,GACMugS,EAAU+M,EAActtS,QAAYpjB,EAAM8wT,wBAInD,IAHA9wT,EAAM4tD,cAAgB+1P,EAAQpzR,KAE9BkE,EAAI,GACMs7R,EAAYpM,EAAQ/uF,SAAUngM,QACtCz0B,EAAM4vT,iCAID5vT,EAAM+wT,aAAsC,IAAxBhB,EAAU/S,YACnCh9S,EAAM+wT,WAAWhrS,KAAMgqS,EAAU/S,aAEjCh9S,EAAM+vT,UAAYA,EAClB/vT,EAAM8D,KAAOisT,EAAUjsT,UAKV3K,KAHb8xB,IAAU6wR,EAAO97S,MAAM8pT,QAASiG,EAAUE,WAAc,CAAC,GAAI1iQ,QAC5DwiQ,EAAUtlS,SAAUtN,MAAOwmS,EAAQpzR,KAAMrkB,MAGT,KAAzBlM,EAAM3C,OAAS4tB,KACrBjrB,EAAM2uD,iBACN3uD,EAAMinE,oBAYX,OAJK6iP,EAAQkH,cACZlH,EAAQkH,aAAarzS,KAAMM,KAAMje,GAG3BA,EAAM3C,MAxCb,CAyCD,EAEAu3N,SAAU,SAAU50N,EAAO40N,GAC1B,IAAIxxM,EAAG2sS,EAAW1pN,EAAK4qN,EAAiBC,EACvCR,EAAe,GACfN,EAAgBx7F,EAASw7F,cACzB/9R,EAAMryB,EAAMo8C,OAGb,GAAKg0Q,GAIJ/9R,EAAIklB,YAOc,UAAfv3C,EAAMzH,MAAoByH,EAAMuoH,QAAU,GAE7C,KAAQl2F,IAAQpU,KAAMoU,EAAMA,EAAI9D,YAActQ,KAI7C,GAAsB,IAAjBoU,EAAIklB,WAAoC,UAAfv3C,EAAMzH,OAAqC,IAAjB85B,EAAIr7B,UAAsB,CAGjF,IAFAi6T,EAAkB,GAClBC,EAAmB,CAAC,EACd9tS,EAAI,EAAGA,EAAIgtS,EAAehtS,SAMEjqB,IAA5B+3T,EAFL7qN,GAHA0pN,EAAYn7F,EAAUxxM,IAGNwzB,SAAW,OAG1Bs6Q,EAAkB7qN,GAAQ0pN,EAAUnQ,aACnC9D,EAAQz1M,EAAKpoF,MAAOlZ,MAAOstB,IAAS,EACpCypR,EAAO/0S,KAAMs/F,EAAKpoF,KAAM,KAAM,CAAEoU,IAAQn8B,QAErCg7T,EAAkB7qN,IACtB4qN,EAAgBvzT,KAAMqyT,GAGnBkB,EAAgB/6T,QACpBw6T,EAAahzT,KAAM,CAAE6yB,KAAM8B,EAAKuiM,SAAUq8F,GAE5C,CAUF,OALA5+R,EAAMpU,KACDmyS,EAAgBx7F,EAAS1+N,QAC7Bw6T,EAAahzT,KAAM,CAAE6yB,KAAM8B,EAAKuiM,SAAUA,EAASt5M,MAAO80S,KAGpDM,CACR,EAEAS,QAAS,SAAU96T,EAAM+6T,GACxBt0T,OAAOs1C,eAAgB0pQ,EAAOruR,MAAMnQ,UAAWjnB,EAAM,CACpD+nB,YAAY,EACZE,cAAc,EAEd3f,IAAKm4R,EAAYs6B,GAChB,WACC,GAAKnzS,KAAK49C,cACT,OAAOu1P,EAAMnzS,KAAK49C,cAEpB,EACA,WACC,GAAK59C,KAAK49C,cACT,OAAO59C,KAAK49C,cAAexlE,EAE7B,EAEDynB,IAAK,SAAUtiB,GACdsB,OAAOs1C,eAAgBn0B,KAAM5nB,EAAM,CAClC+nB,YAAY,EACZE,cAAc,EACdD,UAAU,EACV7iB,MAAOA,GAET,GAEF,EAEAm1T,IAAK,SAAU90P,GACd,OAAOA,EAAeigP,EAAOW,SAC5B5gP,EACA,IAAIigP,EAAOruR,MAAOouC,EACpB,EAEAiuP,QAAS,CACR9vP,KAAM,CAGLq3P,UAAU,GAEXhsP,MAAO,CAGNgrP,MAAO,SAAUvsT,GAIhB,IAAIwzC,EAAKr5B,MAAQna,EAWjB,OARKoqT,GAAenoS,KAAMuxB,EAAG/+C,OAC5B++C,EAAG+tB,OAASsD,EAAUrxB,EAAI,UAG1Bk4Q,GAAgBl4Q,EAAI,SAAS,IAIvB,CACR,EACAvD,QAAS,SAAUjwC,GAIlB,IAAIwzC,EAAKr5B,MAAQna,EAUjB,OAPKoqT,GAAenoS,KAAMuxB,EAAG/+C,OAC5B++C,EAAG+tB,OAASsD,EAAUrxB,EAAI,UAE1Bk4Q,GAAgBl4Q,EAAI,UAId,CACR,EAIAk3Q,SAAU,SAAUxuT,GACnB,IAAIo8C,EAASp8C,EAAMo8C,OACnB,OAAO8xQ,GAAenoS,KAAMq2B,EAAO7jD,OAClC6jD,EAAOipB,OAASsD,EAAUvsB,EAAQ,UAClC6vQ,GAASttT,IAAKy9C,EAAQ,UACtBusB,EAAUvsB,EAAQ,IACpB,GAGDk1Q,aAAc,CACbN,aAAc,SAAUhxT,QAID7G,IAAjB6G,EAAM3C,QAAwB2C,EAAM67D,gBACxC77D,EAAM67D,cAAc0mC,YAAcviG,EAAM3C,OAE1C,KAwFHy+S,EAAO2U,YAAc,SAAUlgS,EAAMh4B,EAAMg1D,GAGrCh9B,EAAKxO,qBACTwO,EAAKxO,oBAAqBxpB,EAAMg1D,EAElC,EAEAuuP,EAAOruR,MAAQ,SAAUL,EAAKhtB,GAG7B,KAAQ6d,gBAAgB69R,EAAOruR,OAC9B,OAAO,IAAIquR,EAAOruR,MAAOL,EAAKhtB,GAI1BgtB,GAAOA,EAAI70B,MACf0lB,KAAK49C,cAAgBzuC,EACrBnP,KAAK1lB,KAAO60B,EAAI70B,KAIhB0lB,KAAKszS,mBAAqBnkS,EAAIokS,uBACHr4T,IAAzBi0B,EAAIokS,mBAGgB,IAApBpkS,EAAIm1E,YACL8sN,GACAC,GAKDrxS,KAAKm+B,OAAWhvB,EAAIgvB,QAAkC,IAAxBhvB,EAAIgvB,OAAO7E,SACxCnqB,EAAIgvB,OAAO7tB,WACXnB,EAAIgvB,OAELn+B,KAAK2vC,cAAgBxgC,EAAIwgC,cACzB3vC,KAAK4nG,cAAgBz4F,EAAIy4F,eAIzB5nG,KAAK1lB,KAAO60B,EAIRhtB,GACJ07S,EAAOlvR,OAAQ3O,KAAM7d,GAItB6d,KAAK0hC,UAAYvyB,GAAOA,EAAIuyB,WAAapiD,KAAK49D,MAG9Cl9C,KAAM69R,EAAOW,UAAY,CAC1B,EAIAX,EAAOruR,MAAMnQ,UAAY,CACxBY,YAAa49R,EAAOruR,MACpB8jS,mBAAoBjC,GACpBwB,qBAAsBxB,GACtBM,8BAA+BN,GAC/BmC,aAAa,EAEb9iQ,eAAgB,WACf,IAAIj1D,EAAIukB,KAAK49C,cAEb59C,KAAKszS,mBAAqBlC,GAErB31T,IAAMukB,KAAKwzS,aACf/3T,EAAEi1D,gBAEJ,EACAsY,gBAAiB,WAChB,IAAIvtE,EAAIukB,KAAK49C,cAEb59C,KAAK6yS,qBAAuBzB,GAEvB31T,IAAMukB,KAAKwzS,aACf/3T,EAAEutE,iBAEJ,EACAioD,yBAA0B,WACzB,IAAIx1H,EAAIukB,KAAK49C,cAEb59C,KAAK2xS,8BAAgCP,GAEhC31T,IAAMukB,KAAKwzS,aACf/3T,EAAEw1H,2BAGHjxG,KAAKgpD,iBACN,GAID60O,EAAOK,KAAM,CACZ9jP,QAAQ,EACRq5P,SAAS,EACTC,YAAY,EACZ/iQ,gBAAgB,EAChB2J,SAAS,EACT6mF,QAAQ,EACRwyK,YAAY,EACZrkK,SAAS,EACTlsG,OAAO,EACPG,OAAO,EACPiX,UAAU,EACVqX,MAAM,EACN,MAAQ,EACRyS,MAAM,EACNmkC,UAAU,EACVzpH,KAAK,EACLg7D,SAAS,EACTswD,QAAQ,EACRrpC,SAAS,EACTlwB,SAAS,EACTC,SAAS,EACT7N,SAAS,EACTG,SAAS,EACTswQ,WAAW,EACX7vH,aAAa,EACb8vH,SAAS,EACTC,SAAS,EACTC,eAAe,EACfn8Q,WAAW,EACXssJ,SAAS,EACTxpI,OAAO,GACLmjP,EAAO97S,MAAMmxT,SAEhBrV,EAAOK,KAAM,CAAEzsR,MAAO,UAAW7uB,KAAM,aAAc,SAAUtI,EAAMo3T,GAEpE,SAASsC,EAAoB/2C,GAC5B,GAAKr6P,EAASqxS,aAAe,CAS5B,IAAI3kQ,EAAS0+P,GAASttT,IAAKsf,KAAM,UAChCje,EAAQ87S,EAAO97S,MAAM2wT,IAAKz1C,GAC3Bl7Q,EAAMzH,KAA4B,YAArB2iR,EAAY3iR,KAAqB,QAAU,OACxDyH,EAAMyxT,aAAc,EAGpBlkQ,EAAQ2tN,GAMHl7Q,EAAMo8C,SAAWp8C,EAAM4tD,eAK3BL,EAAQvtD,EAEV,MAIC87S,EAAO97S,MAAMmyT,SAAUxC,EAAcz0C,EAAY9+N,OAChD0/P,EAAO97S,MAAM2wT,IAAKz1C,GAErB,CAEA4gC,EAAO97S,MAAM8pT,QAASvxT,GAAS,CAG9B83T,MAAO,WAEN,IAAI+B,EAOJ,GAFA5C,GAAgBvxS,KAAM1lB,GAAM,IAEvBsoB,EAASqxS,aAcb,OAAO,GARPE,EAAWnG,GAASttT,IAAKsf,KAAM0xS,KAE9B1xS,KAAK6D,iBAAkB6tS,EAAcsC,GAEtChG,GAASnuS,IAAKG,KAAM0xS,GAAgByC,GAAY,GAAM,EAMxD,EACAr+Q,QAAS,WAMR,OAHAy7Q,GAAgBvxS,KAAM1lB,IAGf,CACR,EAEAi4T,SAAU,WACT,IAAI4B,EAEJ,IAAKvxS,EAASqxS,aAWb,OAAO,GAVPE,EAAWnG,GAASttT,IAAKsf,KAAM0xS,GAAiB,GAK/C1D,GAASnuS,IAAKG,KAAM0xS,EAAcyC,IAHlCn0S,KAAK8D,oBAAqB4tS,EAAcsC,GACxChG,GAASr4Q,OAAQ31B,KAAM0xS,GAS1B,EAIAnB,SAAU,SAAUxuT,GACnB,OAAOisT,GAASttT,IAAKqB,EAAMo8C,OAAQ7jD,EACpC,EAEAo3T,aAAcA,GAef7T,EAAO97S,MAAM8pT,QAAS6F,GAAiB,CACtCU,MAAO,WAIN,IAAI1U,EAAM19R,KAAKg2O,eAAiBh2O,KAAK4C,UAAY5C,KAChDo0S,EAAaxxS,EAASqxS,aAAej0S,KAAO09R,EAC5CyW,EAAWnG,GAASttT,IAAK0zT,EAAY1C,GAMhCyC,IACAvxS,EAASqxS,aACbj0S,KAAK6D,iBAAkB6tS,EAAcsC,GAErCtW,EAAI75R,iBAAkBvpB,EAAM05T,GAAoB,IAGlDhG,GAASnuS,IAAKu0S,EAAY1C,GAAgByC,GAAY,GAAM,EAC7D,EACA5B,SAAU,WACT,IAAI7U,EAAM19R,KAAKg2O,eAAiBh2O,KAAK4C,UAAY5C,KAChDo0S,EAAaxxS,EAASqxS,aAAej0S,KAAO09R,EAC5CyW,EAAWnG,GAASttT,IAAK0zT,EAAY1C,GAAiB,EAEjDyC,EAQLnG,GAASnuS,IAAKu0S,EAAY1C,EAAcyC,IAPnCvxS,EAASqxS,aACbj0S,KAAK8D,oBAAqB4tS,EAAcsC,GAExCtW,EAAI55R,oBAAqBxpB,EAAM05T,GAAoB,GAEpDhG,GAASr4Q,OAAQy+Q,EAAY1C,GAI/B,EAEF,IAUA7T,EAAOK,KAAM,CACZmW,WAAY,YACZC,WAAY,WACZC,aAAc,cACdC,aAAc,eACZ,SAAUC,EAAM/B,GAClB7U,EAAO97S,MAAM8pT,QAAS4I,GAAS,CAC9B/C,aAAcgB,EACdR,SAAUQ,EAEVpjQ,OAAQ,SAAUvtD,GACjB,IAAIirB,EAEH0nS,EAAU3yT,EAAM6lH,cAChBkqM,EAAY/vT,EAAM+vT,UASnB,OALM4C,IAAaA,IANT10S,MAMgC69R,EAAO3mQ,SANvCl3B,KAMyD00S,MAClE3yT,EAAMzH,KAAOw3T,EAAUE,SACvBhlS,EAAM8kS,EAAUtlS,QAAQtN,MAAOc,KAAM3B,WACrCtc,EAAMzH,KAAOo4T,GAEP1lS,CACR,EAEF,IAEA6wR,EAAOp+R,GAAGkP,OAAQ,CAEjB4X,GAAI,SAAUquF,EAAOj8E,EAAU9yC,EAAM4Z,GACpC,OAAO8mB,GAAIvmB,KAAM40G,EAAOj8E,EAAU9yC,EAAM4Z,EACzC,EACA8+Q,IAAK,SAAU3pK,EAAOj8E,EAAU9yC,EAAM4Z,GACrC,OAAO8mB,GAAIvmB,KAAM40G,EAAOj8E,EAAU9yC,EAAM4Z,EAAI,EAC7C,EACAmnB,IAAK,SAAUguF,EAAOj8E,EAAUl5B,GAC/B,IAAIqyS,EAAWx3T,EACf,GAAKs6H,GAASA,EAAMlkE,gBAAkBkkE,EAAMk9L,UAW3C,OARAA,EAAYl9L,EAAMk9L,UAClBjU,EAAQjpL,EAAM+9L,gBAAiB/rR,IAC9BkrR,EAAU/S,UACT+S,EAAUE,SAAW,IAAMF,EAAU/S,UACrC+S,EAAUE,SACXF,EAAUn5Q,SACVm5Q,EAAUtlS,SAEJxM,KAER,GAAsB,kBAAV40G,EAAqB,CAGhC,IAAMt6H,KAAQs6H,EACb50G,KAAK4mB,IAAKtsC,EAAMq+C,EAAUi8E,EAAOt6H,IAElC,OAAO0lB,IACR,CAUA,OATkB,IAAb24B,GAA0C,oBAAbA,IAGjCl5B,EAAKk5B,EACLA,OAAWz9C,IAEA,IAAPukB,IACJA,EAAK4xS,IAECrxS,KAAKk+R,MAAM,WACjBL,EAAO97S,MAAM4zC,OAAQ31B,KAAM40G,EAAOn1G,EAAIk5B,EACvC,GACD,IAID,IAKCg8Q,GAAe,wBAGfC,GAAW,oCAEXC,GAAe,6BAGhB,SAASC,GAAoBxiS,EAAMi0C,GAClC,OAAKmE,EAAUp4C,EAAM,UACpBo4C,EAA+B,KAArBnE,EAAQjtB,SAAkBitB,EAAUA,EAAQg1D,WAAY,OAE3DsiL,EAAQvrR,GAAO16B,SAAU,SAAW,IAGrC06B,CACR,CAGA,SAASyiS,GAAeziS,GAEvB,OADAA,EAAKh4B,MAAyC,OAAhCg4B,EAAK8uB,aAAc,SAAsB,IAAM9uB,EAAKh4B,KAC3Dg4B,CACR,CACA,SAAS0iS,GAAe1iS,GAOvB,MAN2C,WAApCA,EAAKh4B,MAAQ,IAAK+iB,MAAO,EAAG,GAClCiV,EAAKh4B,KAAOg4B,EAAKh4B,KAAK+iB,MAAO,GAE7BiV,EAAK4uB,gBAAiB,QAGhB5uB,CACR,CAEA,SAAS2iS,GAAgB9lS,EAAKtF,GAC7B,IAAI1E,EAAG6L,EAAG12B,EAAgB46T,EAAUC,EAAU9hR,EAE9C,GAAuB,IAAlBxpB,EAAKyvB,SAAV,CAKA,GAAK00Q,GAAS76J,QAAShkI,KAEtBkkB,EADW26Q,GAASttT,IAAKyuB,GACPkkB,QAKjB,IAAM/4C,KAFN0zT,GAASr4Q,OAAQ9rB,EAAM,iBAETwpB,EACb,IAAMluB,EAAI,EAAG6L,EAAIqiB,EAAQ/4C,GAAOrC,OAAQktB,EAAI6L,EAAG7L,IAC9C04R,EAAO97S,MAAMozC,IAAKtrB,EAAMvvB,EAAM+4C,EAAQ/4C,GAAQ6qB,IAO7C8oS,GAAS96J,QAAShkI,KACtB+lS,EAAWjH,GAASb,OAAQj+R,GAC5BgmS,EAAWtX,EAAOlvR,OAAQ,CAAC,EAAGumS,GAE9BjH,GAASpuS,IAAKgK,EAAMsrS,GAvBrB,CAyBD,CAGA,SAASC,GAAUjmS,EAAKtF,GACvB,IAAI6gD,EAAW7gD,EAAK6gD,SAASrsE,cAGX,UAAbqsE,GAAwBulP,GAAenoS,KAAMqH,EAAI70B,MACrDuvB,EAAKluB,QAAUwzB,EAAIxzB,QAGK,UAAb+uE,GAAqC,aAAbA,IACnC7gD,EAAKsyB,aAAehtB,EAAIgtB,aAE1B,CAEA,SAASk5Q,GAAUx5O,EAAY5tE,EAAMyjC,EAAUq/Q,GAG9C9iT,EAAO+uS,EAAM/uS,GAEb,IAAIgjT,EAAUnqS,EAAOgqS,EAASwE,EAAY7+P,EAAMinP,EAC/Cv4R,EAAI,EACJ6L,EAAI6qD,EAAW5jF,OACfs9T,EAAWvkS,EAAI,EACfzzB,EAAQ0Q,EAAM,GACdunT,EAAkB38B,EAAYt7R,GAG/B,GAAKi4T,GACDxkS,EAAI,GAAsB,kBAAVzzB,IAChB6/S,EAAQgT,YAAcwE,GAAS9sS,KAAMvqB,GACxC,OAAOs+E,EAAWqiO,MAAM,SAAUp3S,GACjC,IAAI85R,EAAO/kN,EAAWmmN,GAAIl7R,GACrB0uT,IACJvnT,EAAM,GAAM1Q,EAAMmiB,KAAMM,KAAMlZ,EAAO85R,EAAK3qN,SAE3Co/O,GAAUz0B,EAAM3yR,EAAMyjC,EAAUq/Q,EACjC,IAGD,GAAK//R,IAEJlK,GADAmqS,EAAWJ,GAAe5iT,EAAM4tE,EAAY,GAAIm6K,eAAe,EAAOn6K,EAAYk1O,IACjEx1L,WAEmB,IAA/B01L,EAASntP,WAAW7rE,SACxBg5T,EAAWnqS,GAIPA,GAASiqS,GAAU,CAOvB,IALAuE,GADAxE,EAAUjT,EAAO/9S,IAAK0wT,GAAQS,EAAU,UAAY8D,KAC/B98T,OAKbktB,EAAI6L,EAAG7L,IACdsxC,EAAOw6P,EAEF9rS,IAAMowS,IACV9+P,EAAOonP,EAAO3uR,MAAOunC,GAAM,GAAM,GAG5B6+P,GAIJzX,EAAO3vR,MAAO4iS,EAASN,GAAQ/5P,EAAM,YAIvC/kB,EAAShyB,KAAMm8D,EAAY12D,GAAKsxC,EAAMtxC,GAGvC,GAAKmwS,EAOJ,IANA5X,EAAMoT,EAASA,EAAQ74T,OAAS,GAAI+9P,cAGpC6nD,EAAO/9S,IAAKgxT,EAASkE,IAGf7vS,EAAI,EAAGA,EAAImwS,EAAYnwS,IAC5BsxC,EAAOq6P,EAAS3rS,GACXgrS,GAAYroS,KAAM2uC,EAAKn8D,MAAQ,MAClC0zT,GAASZ,OAAQ32P,EAAM,eACxBonP,EAAO3mQ,SAAUwmQ,EAAKjnP,KAEjBA,EAAKtnC,KAA8C,YAArCsnC,EAAKn8D,MAAQ,IAAK+D,cAG/Bw/S,EAAO4X,WAAah/P,EAAK+mP,UAC7BK,EAAO4X,SAAUh/P,EAAKtnC,IAAK,CAC1BouR,MAAO9mP,EAAK8mP,OAAS9mP,EAAKrV,aAAc,UACtCs8P,GASJD,EAAShnP,EAAKqQ,YAAYrwD,QAASo+S,GAAc,IAAMp+P,EAAMinP,GAKlE,CAGD,OAAO7hO,CACR,CAEA,SAASlmC,GAAQrjB,EAAMqmB,EAAU+8Q,GAKhC,IAJA,IAAIj/P,EACHsP,EAAQptB,EAAWklQ,EAAO1/S,OAAQw6C,EAAUrmB,GAASA,EACrDnN,EAAI,EAE4B,OAAvBsxC,EAAOsP,EAAO5gD,IAAeA,IAChCuwS,GAA8B,IAAlBj/P,EAAKnd,UACtBukQ,EAAO8X,UAAWnF,GAAQ/5P,IAGtBA,EAAKnmC,aACJolS,GAAYxG,GAAYz4P,IAC5Bg6P,GAAeD,GAAQ/5P,EAAM,WAE9BA,EAAKnmC,WAAWkoB,YAAaie,IAI/B,OAAOnkC,CACR,CAEAurR,EAAOlvR,OAAQ,CACduiS,cAAe,SAAUj7O,GACxB,OAAOA,CACR,EAEA/mD,MAAO,SAAUoD,EAAMsjS,EAAeC,GACrC,IAAI1wS,EAAG6L,EAAG8kS,EAAaC,EACtB7mS,EAAQoD,EAAKlB,WAAW,GACxB4kS,EAAS9G,GAAY58R,GAGtB,IAAM8qR,EAAQiT,iBAAsC,IAAlB/9R,EAAKgnB,UAAoC,KAAlBhnB,EAAKgnB,YAC3DukQ,EAAOiB,SAAUxsR,GAOnB,IAHAyjS,EAAevF,GAAQthS,GAGjB/J,EAAI,EAAG6L,GAFb8kS,EAActF,GAAQl+R,IAEOr6B,OAAQktB,EAAI6L,EAAG7L,IAC3CiwS,GAAUU,EAAa3wS,GAAK4wS,EAAc5wS,IAK5C,GAAKywS,EACJ,GAAKC,EAIJ,IAHAC,EAAcA,GAAetF,GAAQl+R,GACrCyjS,EAAeA,GAAgBvF,GAAQthS,GAEjC/J,EAAI,EAAG6L,EAAI8kS,EAAY79T,OAAQktB,EAAI6L,EAAG7L,IAC3C8vS,GAAgBa,EAAa3wS,GAAK4wS,EAAc5wS,SAGjD8vS,GAAgB3iS,EAAMpD,GAWxB,OANA6mS,EAAevF,GAAQthS,EAAO,WACZj3B,OAAS,GAC1Bw4T,GAAesF,GAAeC,GAAUxF,GAAQl+R,EAAM,WAIhDpD,CACR,EAEAymS,UAAW,SAAU3X,GAKpB,IAJA,IAAIn4S,EAAMysB,EAAMh4B,EACfuxT,EAAUhO,EAAO97S,MAAM8pT,QACvB1mS,EAAI,OAE6BjqB,KAAxBo3B,EAAO0rR,EAAO74R,IAAqBA,IAC5C,GAAK2oS,GAAYx7R,GAAS,CACzB,GAAOzsB,EAAOysB,EAAM07R,GAASxP,SAAc,CAC1C,GAAK34S,EAAKwtC,OACT,IAAM/4C,KAAQuL,EAAKwtC,OACbw4Q,EAASvxT,GACbujT,EAAO97S,MAAM4zC,OAAQrjB,EAAMh4B,GAI3BujT,EAAO2U,YAAalgS,EAAMh4B,EAAMuL,EAAKypD,QAOxCh9B,EAAM07R,GAASxP,cAAYtjT,CAC5B,CACKo3B,EAAM27R,GAASzP,WAInBlsR,EAAM27R,GAASzP,cAAYtjT,EAE7B,CAEF,IAGD2iT,EAAOp+R,GAAGkP,OAAQ,CACjB4pB,OAAQ,SAAUI,GACjB,OAAOhD,GAAQ31B,KAAM24B,GAAU,EAChC,EAEAhD,OAAQ,SAAUgD,GACjB,OAAOhD,GAAQ31B,KAAM24B,EACtB,EAEA5gD,KAAM,SAAUwF,GACf,OAAO6vT,GAAQptS,MAAM,SAAUziB,GAC9B,YAAiBrC,IAAVqC,EACNsgT,EAAO9lT,KAAMioB,MACbA,KAAK4nN,QAAQs2E,MAAM,WACK,IAAlBl+R,KAAKs5B,UAAoC,KAAlBt5B,KAAKs5B,UAAqC,IAAlBt5B,KAAKs5B,WACxDt5B,KAAK8mD,YAAcvpE,EAErB,GACF,GAAG,KAAMA,EAAO8gB,UAAUpmB,OAC3B,EAEAkgD,OAAQ,WACP,OAAOk9Q,GAAUr1S,KAAM3B,WAAW,SAAUiU,GACpB,IAAlBtS,KAAKs5B,UAAoC,KAAlBt5B,KAAKs5B,UAAqC,IAAlBt5B,KAAKs5B,UAC3Cw7Q,GAAoB90S,KAAMsS,GAChCnB,YAAamB,EAEtB,GACD,EAEAolB,QAAS,WACR,OAAO29Q,GAAUr1S,KAAM3B,WAAW,SAAUiU,GAC3C,GAAuB,IAAlBtS,KAAKs5B,UAAoC,KAAlBt5B,KAAKs5B,UAAqC,IAAlBt5B,KAAKs5B,SAAiB,CACzE,IAAI6E,EAAS22Q,GAAoB90S,KAAMsS,GACvC6rB,EAAOnG,aAAc1lB,EAAM6rB,EAAOo9E,WACnC,CACD,GACD,EAEA06L,OAAQ,WACP,OAAOZ,GAAUr1S,KAAM3B,WAAW,SAAUiU,GACtCtS,KAAKsQ,YACTtQ,KAAKsQ,WAAW0nB,aAAc1lB,EAAMtS,KAEtC,GACD,EAEAk2S,MAAO,WACN,OAAOb,GAAUr1S,KAAM3B,WAAW,SAAUiU,GACtCtS,KAAKsQ,YACTtQ,KAAKsQ,WAAW0nB,aAAc1lB,EAAMtS,KAAKgsQ,YAE3C,GACD,EAEApkD,MAAO,WAIN,IAHA,IAAIt1M,EACHnN,EAAI,EAE2B,OAAtBmN,EAAOtS,KAAMmF,IAAeA,IACd,IAAlBmN,EAAKgnB,WAGTukQ,EAAO8X,UAAWnF,GAAQl+R,GAAM,IAGhCA,EAAKw0C,YAAc,IAIrB,OAAO9mD,IACR,EAEAkP,MAAO,SAAU0mS,EAAeC,GAI/B,OAHAD,EAAiC,MAAjBA,GAAgCA,EAChDC,EAAyC,MAArBA,EAA4BD,EAAgBC,EAEzD71S,KAAKlgB,KAAK,WAChB,OAAO+9S,EAAO3uR,MAAOlP,KAAM41S,EAAeC,EAC3C,GACD,EAEA5/O,KAAM,SAAU14E,GACf,OAAO6vT,GAAQptS,MAAM,SAAUziB,GAC9B,IAAI+0B,EAAOtS,KAAM,IAAO,CAAC,EACxBmF,EAAI,EACJ6L,EAAIhR,KAAK/nB,OAEV,QAAeiD,IAAVqC,GAAyC,IAAlB+0B,EAAKgnB,SAChC,OAAOhnB,EAAKf,UAIb,GAAsB,kBAAVh0B,IAAuBo3T,GAAa7sS,KAAMvqB,KACpD+yT,IAAWJ,GAASx/Q,KAAMnzC,IAAW,CAAE,GAAI,KAAQ,GAAIc,eAAkB,CAE1Ed,EAAQsgT,EAAOqT,cAAe3zT,GAE9B,IACC,KAAQ4nB,EAAI6L,EAAG7L,IAIS,KAHvBmN,EAAOtS,KAAMmF,IAAO,CAAC,GAGXm0B,WACTukQ,EAAO8X,UAAWnF,GAAQl+R,GAAM,IAChCA,EAAKf,UAAYh0B,GAInB+0B,EAAO,CAGR,CAAE,MAAQ72B,GAAK,CAChB,CAEK62B,GACJtS,KAAK4nN,QAAQzvL,OAAQ56C,EAEvB,GAAG,KAAMA,EAAO8gB,UAAUpmB,OAC3B,EAEAk+T,YAAa,WACZ,IAAIpF,EAAU,GAGd,OAAOsE,GAAUr1S,KAAM3B,WAAW,SAAUiU,GAC3C,IAAIjC,EAASrQ,KAAKsQ,WAEbutR,EAAO/qF,QAAS9yM,KAAM+wS,GAAY,IACtClT,EAAO8X,UAAWnF,GAAQxwS,OACrBqQ,GACJA,EAAOgwG,aAAc/tG,EAAMtS,MAK9B,GAAG+wS,EACJ,IAGDlT,EAAOK,KAAM,CACZnzP,SAAU,SACVqrQ,UAAW,UACXp+Q,aAAc,SACdk9F,YAAa,QACbmhL,WAAY,gBACV,SAAUj+T,EAAM+pG,GAClB07M,EAAOp+R,GAAIrnB,GAAS,SAAUugD,GAO7B,IANA,IAAIqlQ,EACHhxR,EAAM,GACNyxE,EAASo/M,EAAQllQ,GACjBi0H,EAAOnuE,EAAOxmG,OAAS,EACvBktB,EAAI,EAEGA,GAAKynJ,EAAMznJ,IAClB64R,EAAQ74R,IAAMynJ,EAAO5sJ,KAAOA,KAAKkP,OAAO,GACxC2uR,EAAQp/M,EAAQt5E,IAAOg9E,GAAY67M,GAInCv+S,EAAKyf,MAAO8N,EAAKgxR,EAAMt9S,OAGxB,OAAOsf,KAAK+9R,UAAW/wR,EACxB,CACD,IACA,IAAIspS,GAAY,IAAIttS,OAAQ,KAAO+lS,GAAO,kBAAmB,KAEzDwH,GAAc,MAGdC,GAAY,SAAUlkS,GAKxB,IAAIu/C,EAAOv/C,EAAK0jO,cAAcnzO,YAM9B,OAJMgvD,GAASA,EAAK4kP,SACnB5kP,EAAOvxE,GAGDuxE,EAAK3tB,iBAAkB5xB,EAC/B,EAEG0uM,GAAO,SAAU1uM,EAAM5R,EAASgxB,GACnC,IAAI1kB,EAAK50B,EACRw5K,EAAM,CAAC,EAGR,IAAMx5K,KAAQsoB,EACbkxJ,EAAKx5K,GAASk6B,EAAKilB,MAAOn/C,GAC1Bk6B,EAAKilB,MAAOn/C,GAASsoB,EAAStoB,GAM/B,IAAMA,KAHN40B,EAAM0kB,EAAShyB,KAAM4S,GAGP5R,EACb4R,EAAKilB,MAAOn/C,GAASw5K,EAAKx5K,GAG3B,OAAO40B,CACR,EAGI0pS,GAAY,IAAI1tS,OAAQimS,GAAUhoS,KAAM,KAAO,KAiJnD,SAAS0vS,GAAQrkS,EAAMl6B,EAAMw+T,GAC5B,IAAI7iQ,EAAOkxJ,EAAUt8E,EAAU37G,EAC9B6pS,EAAeN,GAAYzuS,KAAM1vB,GAMjCm/C,EAAQjlB,EAAKilB,MAoEd,OAlEAq/Q,EAAWA,GAAYJ,GAAWlkS,MAgBjCtF,EAAM4pS,EAASzyQ,iBAAkB/rD,IAAUw+T,EAAUx+T,GAEhDy+T,GAAgB7pS,IAkBpBA,EAAMA,EAAIvW,QAAS4oS,EAAU,YAAUnkT,GAG3B,KAAR8xB,GAAekiS,GAAY58R,KAC/BtF,EAAM6wR,EAAOtmQ,MAAOjlB,EAAMl6B,KAQrBglT,EAAQ0Z,kBAAoBR,GAAUxuS,KAAMkF,IAAS0pS,GAAU5uS,KAAM1vB,KAG1E27D,EAAQxc,EAAMwc,MACdkxJ,EAAW1tK,EAAM0tK,SACjBt8E,EAAWpxF,EAAMoxF,SAGjBpxF,EAAM0tK,SAAW1tK,EAAMoxF,SAAWpxF,EAAMwc,MAAQ/mC,EAChDA,EAAM4pS,EAAS7iQ,MAGfxc,EAAMwc,MAAQA,EACdxc,EAAM0tK,SAAWA,EACjB1tK,EAAMoxF,SAAWA,SAIJztI,IAAR8xB,EAINA,EAAM,GACNA,CACF,CAGA,SAAS+pS,GAAcC,EAAaC,GAGnC,MAAO,CACNv2T,IAAK,WACJ,IAAKs2T,IASL,OAASh3S,KAAKtf,IAAMu2T,GAAS/3S,MAAOc,KAAM3B,kBALlC2B,KAAKtf,GAMd,EAEF,EAnPA,WAIC,SAASw2T,IAGR,GAAMvmS,EAAN,CAIAqwD,EAAUzpC,MAAMixK,QAAU,+EAE1B73L,EAAI4mB,MAAMixK,QACT,4HAGD/kK,GAAgBtyB,YAAa6vD,GAAY7vD,YAAaR,GAEtD,IAAIwmS,EAAW72T,EAAO4jD,iBAAkBvzB,GACxCymS,EAAoC,OAAjBD,EAASvzQ,IAG5ByzQ,EAAsE,KAA9CC,EAAoBH,EAASzlQ,YAIrD/gC,EAAI4mB,MAAMoM,MAAQ,MAClB4zQ,EAA6D,KAAzCD,EAAoBH,EAASxzQ,OAIjD6zQ,EAAgE,KAAzCF,EAAoBH,EAASpjQ,OAMpDpjC,EAAI4mB,MAAM4a,SAAW,WACrBslQ,EAAiE,KAA9CH,EAAoB3mS,EAAI8mB,YAAc,GAEzDgM,GAAgBjL,YAAawoC,GAI7BrwD,EAAM,IApCN,CAqCD,CAEA,SAAS2mS,EAAoBI,GAC5B,OAAO71S,KAAKuvE,MAAOnrD,WAAYyxR,GAChC,CAEA,IAAIN,EAAkBI,EAAsBC,EAAkBF,EAC7DI,EAAyBN,EACzBr2O,EAAYp+D,EAASgO,cAAe,OACpCD,EAAM/N,EAASgO,cAAe,OAGzBD,EAAI4mB,QAMV5mB,EAAI4mB,MAAMqgR,eAAiB,cAC3BjnS,EAAIS,WAAW,GAAOmmB,MAAMqgR,eAAiB,GAC7Cxa,EAAQya,gBAA+C,gBAA7BlnS,EAAI4mB,MAAMqgR,eAEpC/Z,EAAOlvR,OAAQyuR,EAAS,CACvB0a,kBAAmB,WAElB,OADAZ,IACOM,CACR,EACAV,eAAgB,WAEf,OADAI,IACOK,CACR,EACAQ,cAAe,WAEd,OADAb,IACOE,CACR,EACAY,mBAAoB,WAEnB,OADAd,IACOG,CACR,EACAY,cAAe,WAEd,OADAf,IACOO,CACR,EAWAS,qBAAsB,WACrB,IAAI5iP,EAAOmlD,EAAI09L,EAASC,EAmCxB,OAlCgC,MAA3BT,IACJriP,EAAQ1yD,EAASgO,cAAe,SAChC6pG,EAAK73G,EAASgO,cAAe,MAC7BunS,EAAUv1S,EAASgO,cAAe,OAElC0kD,EAAM/9B,MAAMixK,QAAU,2DACtB/tF,EAAGljF,MAAMixK,QAAU,0CAKnB/tF,EAAGljF,MAAMyc,OAAS,MAClBmkQ,EAAQ5gR,MAAMyc,OAAS,MAQvBmkQ,EAAQ5gR,MAAMuiB,QAAU,QAExBrW,GACEtyB,YAAamkD,GACbnkD,YAAaspG,GACbtpG,YAAagnS,GAEfC,EAAU93T,EAAO4jD,iBAAkBu2E,GACnCk9L,EAA4Bz4T,SAAUk5T,EAAQpkQ,OAAQ,IACrD90D,SAAUk5T,EAAQ3oM,eAAgB,IAClCvwH,SAAUk5T,EAAQzoM,kBAAmB,MAAW8K,EAAGxmE,aAEpDxQ,GAAgBjL,YAAa88B,IAEvBqiP,CACR,IAED,CA1ID,GAsPA,IAAIU,GAAc,CAAE,SAAU,MAAO,MACpCC,GAAa11S,EAASgO,cAAe,OAAQ2mB,MAC7CghR,GAAc,CAAC,EAkBhB,SAASC,GAAepgU,GACvB,IAAIqgU,EAAQ5a,EAAOpyJ,SAAUrzJ,IAAUmgU,GAAangU,GAEpD,OAAKqgU,IAGArgU,KAAQkgU,GACLlgU,EAEDmgU,GAAangU,GAxBrB,SAAyBA,GAMxB,IAHA,IAAIsgU,EAAUtgU,EAAM,GAAIglB,cAAgBhlB,EAAKilB,MAAO,GACnD8H,EAAIkzS,GAAYpgU,OAETktB,KAEP,IADA/sB,EAAOigU,GAAalzS,GAAMuzS,KACbJ,GACZ,OAAOlgU,CAGV,CAY8BugU,CAAgBvgU,IAAUA,EACxD,CAGA,IAKCwgU,GAAe,4BACfC,GAAU,CAAE1mQ,SAAU,WAAY3a,WAAY,SAAUsiB,QAAS,SACjEg/P,GAAqB,CACpBC,cAAe,IACfC,WAAY,OAGd,SAASC,GAAmB5a,EAAO9gT,EAAO27T,GAIzC,IAAIzzS,EAAUupS,GAAQt+Q,KAAMnzC,GAC5B,OAAOkoB,EAGN5D,KAAK8e,IAAK,EAAGlb,EAAS,IAAQyzS,GAAY,KAAUzzS,EAAS,IAAO,MACpEloB,CACF,CAEA,SAAS47T,GAAoB7mS,EAAMm/N,EAAW2nE,EAAKC,EAAan4T,EAAQo4T,GACvE,IAAIn0S,EAAkB,UAAdssO,EAAwB,EAAI,EACnC8nE,EAAQ,EACRh2S,EAAQ,EACRi2S,EAAc,EAGf,GAAKJ,KAAUC,EAAc,SAAW,WACvC,OAAO,EAGR,KAAQl0S,EAAI,EAAGA,GAAK,EAKN,WAARi0S,IACJI,GAAe3b,EAAOl5G,IAAKryK,EAAM8mS,EAAMnK,GAAW9pS,IAAK,EAAMjkB,IAIxDm4T,GAmBQ,YAARD,IACJ71S,GAASs6R,EAAOl5G,IAAKryK,EAAM,UAAY28R,GAAW9pS,IAAK,EAAMjkB,IAIjD,WAARk4T,IACJ71S,GAASs6R,EAAOl5G,IAAKryK,EAAM,SAAW28R,GAAW9pS,GAAM,SAAS,EAAMjkB,MAtBvEqiB,GAASs6R,EAAOl5G,IAAKryK,EAAM,UAAY28R,GAAW9pS,IAAK,EAAMjkB,GAGhD,YAARk4T,EACJ71S,GAASs6R,EAAOl5G,IAAKryK,EAAM,SAAW28R,GAAW9pS,GAAM,SAAS,EAAMjkB,GAItEq4T,GAAS1b,EAAOl5G,IAAKryK,EAAM,SAAW28R,GAAW9pS,GAAM,SAAS,EAAMjkB,IAoCzE,OAhBMm4T,GAAeC,GAAe,IAInC/1S,GAAS1B,KAAK8e,IAAK,EAAG9e,KAAKyf,KAC1BhP,EAAM,SAAWm/N,EAAW,GAAIr0O,cAAgBq0O,EAAUp0O,MAAO,IACjEi8S,EACA/1S,EACAg2S,EACA,MAIM,GAGDh2S,EAAQi2S,CAChB,CAEA,SAASC,GAAkBnnS,EAAMm/N,EAAW8nE,GAG3C,IAAIr4T,EAASs1T,GAAWlkS,GAKvB+mS,IADmBjc,EAAQ0a,qBAAuByB,IAEE,eAAnD1b,EAAOl5G,IAAKryK,EAAM,aAAa,EAAOpxB,GACvCw4T,EAAmBL,EAEnB17S,EAAMg5S,GAAQrkS,EAAMm/N,EAAWvwP,GAC/By4T,EAAa,SAAWloE,EAAW,GAAIr0O,cAAgBq0O,EAAUp0O,MAAO,GAIzE,GAAKi5S,GAAUxuS,KAAMnK,GAAQ,CAC5B,IAAM47S,EACL,OAAO57S,EAERA,EAAM,MACP,CAwCA,QAlCQy/R,EAAQ0a,qBAAuBuB,IAMrCjc,EAAQ8a,wBAA0BxtP,EAAUp4C,EAAM,OAI3C,SAAR3U,IAICsoB,WAAYtoB,IAA0D,WAAjDkgS,EAAOl5G,IAAKryK,EAAM,WAAW,EAAOpxB,KAG1DoxB,EAAKuyK,iBAAiB5sM,SAEtBohU,EAAiE,eAAnDxb,EAAOl5G,IAAKryK,EAAM,aAAa,EAAOpxB,IAKpDw4T,EAAmBC,KAAcrnS,KAEhC3U,EAAM2U,EAAMqnS,MAKdh8S,EAAMsoB,WAAYtoB,IAAS,GAI1Bw7S,GACC7mS,EACAm/N,EACA8nE,IAAWF,EAAc,SAAW,WACpCK,EACAx4T,EAGAyc,GAEE,IACL,CAuTA,SAASi8S,GAAOtnS,EAAM5R,EAASyS,EAAMjL,EAAK+3B,GACzC,OAAO,IAAI25Q,GAAMv6S,UAAUgrD,KAAM/3C,EAAM5R,EAASyS,EAAMjL,EAAK+3B,EAC5D,CAvTA49P,EAAOlvR,OAAQ,CAIdkrS,SAAU,CACTt1Q,QAAS,CACR7jD,IAAK,SAAU4xB,EAAMskS,GACpB,GAAKA,EAAW,CAGf,IAAI5pS,EAAM2pS,GAAQrkS,EAAM,WACxB,MAAe,KAARtF,EAAa,IAAMA,CAC3B,CACD,IAKF4iS,UAAW,CACVkK,yBAAyB,EACzBC,aAAa,EACbC,kBAAkB,EAClBC,aAAa,EACbC,UAAU,EACVC,YAAY,EACZnB,YAAY,EACZoB,UAAU,EACVziM,YAAY,EACZ0iM,eAAe,EACfC,iBAAiB,EACjBC,SAAS,EACTC,YAAY,EACZC,cAAc,EACd/gO,YAAY,EACZn1C,SAAS,EACTosD,OAAO,EACP+pN,SAAS,EACThL,OAAO,EACPiL,QAAQ,EACR7lP,QAAQ,EACRqhL,MAAM,EAGNykE,aAAa,EACbC,cAAc,EACdC,aAAa,EACbC,kBAAkB,EAClBC,eAAe,GAKhBvvK,SAAU,CAAC,EAGXl0G,MAAO,SAAUjlB,EAAMl6B,EAAMmF,EAAOg8T,GAGnC,GAAMjnS,GAA0B,IAAlBA,EAAKgnB,UAAoC,IAAlBhnB,EAAKgnB,UAAmBhnB,EAAKilB,MAAlE,CAKA,IAAIvqB,EAAK1yB,EAAMo0T,EACduM,EAAWpN,GAAWz1T,GACtBy+T,EAAeN,GAAYzuS,KAAM1vB,GACjCm/C,EAAQjlB,EAAKilB,MAad,GARMs/Q,IACLz+T,EAAOogU,GAAeyC,IAIvBvM,EAAQ7Q,EAAOgc,SAAUzhU,IAAUylT,EAAOgc,SAAUoB,QAGrC//T,IAAVqC,EA0CJ,OAAKmxT,GAAS,QAASA,QACwBxzT,KAA5C8xB,EAAM0hS,EAAMhuT,IAAK4xB,GAAM,EAAOinS,IAEzBvsS,EAIDuqB,EAAOn/C,GA7CA,YAHdkC,SAAciD,KAGcyvB,EAAMgiS,GAAQt+Q,KAAMnzC,KAAayvB,EAAK,KACjEzvB,EAAQ+xT,GAAWh9R,EAAMl6B,EAAM40B,GAG/B1yB,EAAO,UAIM,MAATiD,GAAiBA,IAAUA,IAOlB,WAATjD,GAAsBu8T,IAC1Bt5T,GAASyvB,GAAOA,EAAK,KAAS6wR,EAAO+R,UAAWqL,GAAa,GAAK,OAI7D7d,EAAQya,iBAA6B,KAAVt6T,GAAiD,IAAjCnF,EAAKke,QAAS,gBAC9DihC,EAAOn/C,GAAS,WAIXs2T,GAAY,QAASA,QACsBxzT,KAA9CqC,EAAQmxT,EAAM7uS,IAAKyS,EAAM/0B,EAAOg8T,MAE7B1C,EACJt/Q,EAAMuvK,YAAa1uN,EAAMmF,GAEzBg6C,EAAOn/C,GAASmF,GAtDnB,CAsED,EAEAonM,IAAK,SAAUryK,EAAMl6B,EAAMmhU,EAAOr4T,GACjC,IAAIyc,EAAK+O,EAAKgiS,EACbuM,EAAWpN,GAAWz1T,GA6BvB,OA5BgBm+T,GAAYzuS,KAAM1vB,KAMjCA,EAAOogU,GAAeyC,KAIvBvM,EAAQ7Q,EAAOgc,SAAUzhU,IAAUylT,EAAOgc,SAAUoB,KAGtC,QAASvM,IACtB/wS,EAAM+wS,EAAMhuT,IAAK4xB,GAAM,EAAMinS,SAIjBr+T,IAARyiB,IACJA,EAAMg5S,GAAQrkS,EAAMl6B,EAAM8I,IAId,WAARyc,GAAoBvlB,KAAQ0gU,KAChCn7S,EAAMm7S,GAAoB1gU,IAIZ,KAAVmhU,GAAgBA,GACpB7sS,EAAMuZ,WAAYtoB,IACD,IAAV47S,GAAkB76R,SAAUhS,GAAQA,GAAO,EAAI/O,GAGhDA,CACR,IAGDkgS,EAAOK,KAAM,CAAE,SAAU,UAAW,SAAU3vR,EAAIkjO,GACjDosD,EAAOgc,SAAUpoE,GAAc,CAC9B/wP,IAAK,SAAU4xB,EAAMskS,EAAU2C,GAC9B,GAAK3C,EAIJ,OAAOgC,GAAa9wS,KAAM+1R,EAAOl5G,IAAKryK,EAAM,aAQxCA,EAAKuyK,iBAAiB5sM,QAAWq6B,EAAK4wB,wBAAwB6Q,MAIjE0lQ,GAAkBnnS,EAAMm/N,EAAW8nE,GAHnCv4F,GAAM1uM,EAAMumS,IAAS,WACpB,OAAOY,GAAkBnnS,EAAMm/N,EAAW8nE,EAC3C,GAGH,EAEA15S,IAAK,SAAUyS,EAAM/0B,EAAOg8T,GAC3B,IAAI9zS,EACHvkB,EAASs1T,GAAWlkS,GAIpB4oS,GAAsB9d,EAAQ6a,iBACT,aAApB/2T,EAAOixD,SAIRknQ,GADkB6B,GAAsB3B,IAEY,eAAnD1b,EAAOl5G,IAAKryK,EAAM,aAAa,EAAOpxB,GACvCg4T,EAAWK,EACVJ,GACC7mS,EACAm/N,EACA8nE,EACAF,EACAn4T,GAED,EAqBF,OAjBKm4T,GAAe6B,IACnBhC,GAAYr3S,KAAKyf,KAChBhP,EAAM,SAAWm/N,EAAW,GAAIr0O,cAAgBq0O,EAAUp0O,MAAO,IACjE4oB,WAAY/kC,EAAQuwP,IACpB0nE,GAAoB7mS,EAAMm/N,EAAW,UAAU,EAAOvwP,GACtD,KAKGg4T,IAAczzS,EAAUupS,GAAQt+Q,KAAMnzC,KACb,QAA3BkoB,EAAS,IAAO,QAElB6M,EAAKilB,MAAOk6M,GAAcl0P,EAC1BA,EAAQsgT,EAAOl5G,IAAKryK,EAAMm/N,IAGpBwnE,GAAmB3mS,EAAM/0B,EAAO27T,EACxC,EAEF,IAEArb,EAAOgc,SAASnoQ,WAAaqlQ,GAAc3Z,EAAQ4a,oBAClD,SAAU1lS,EAAMskS,GACf,GAAKA,EACJ,OAAS3wR,WAAY0wR,GAAQrkS,EAAM,gBAClCA,EAAK4wB,wBAAwBQ,KAC5Bs9K,GAAM1uM,EAAM,CAAEo/B,WAAY,IAAK,WAC9B,OAAOp/B,EAAK4wB,wBAAwBQ,IACrC,KACE,IAEN,IAIDm6P,EAAOK,KAAM,CACZzsP,OAAQ,GACRlD,QAAS,GACTuhE,OAAQ,UACN,SAAU5uF,EAAQi6R,GACpBtd,EAAOgc,SAAU34R,EAASi6R,GAAW,CACpCl/N,OAAQ,SAAU1+F,GAOjB,IANA,IAAI4nB,EAAI,EACP+iF,EAAW,CAAC,EAGZj8D,EAAyB,kBAAV1uC,EAAqBA,EAAM0W,MAAO,KAAQ,CAAE1W,GAEpD4nB,EAAI,EAAGA,IACd+iF,EAAUhnE,EAAS+tR,GAAW9pS,GAAMg2S,GACnClvR,EAAO9mB,IAAO8mB,EAAO9mB,EAAI,IAAO8mB,EAAO,GAGzC,OAAOi8D,CACR,GAGe,WAAXhnE,IACJ28Q,EAAOgc,SAAU34R,EAASi6R,GAASt7S,IAAMo5S,GAE3C,IAEApb,EAAOp+R,GAAGkP,OAAQ,CACjBg2K,IAAK,SAAUvsM,EAAMmF,GACpB,OAAO6vT,GAAQptS,MAAM,SAAUsS,EAAMl6B,EAAMmF,GAC1C,IAAI2D,EAAQ+vB,EACXnxB,EAAM,CAAC,EACPqlB,EAAI,EAEL,GAAKsJ,MAAMC,QAASt2B,GAAS,CAI5B,IAHA8I,EAASs1T,GAAWlkS,GACpBrB,EAAM74B,EAAKH,OAEHktB,EAAI8L,EAAK9L,IAChBrlB,EAAK1H,EAAM+sB,IAAQ04R,EAAOl5G,IAAKryK,EAAMl6B,EAAM+sB,IAAK,EAAOjkB,GAGxD,OAAOpB,CACR,CAEA,YAAiB5E,IAAVqC,EACNsgT,EAAOtmQ,MAAOjlB,EAAMl6B,EAAMmF,GAC1BsgT,EAAOl5G,IAAKryK,EAAMl6B,EACpB,GAAGA,EAAMmF,EAAO8gB,UAAUpmB,OAAS,EACpC,IAOD4lT,EAAO+b,MAAQA,GAEfA,GAAMv6S,UAAY,CACjBY,YAAa25S,GACbvvP,KAAM,SAAU/3C,EAAM5R,EAASyS,EAAMjL,EAAK+3B,EAAQumK,GACjDxmM,KAAKsS,KAAOA,EACZtS,KAAKmT,KAAOA,EACZnT,KAAKigC,OAASA,GAAU49P,EAAO59P,OAAOswQ,SACtCvwS,KAAKU,QAAUA,EACfV,KAAKyN,MAAQzN,KAAKk9C,IAAMl9C,KAAKoU,MAC7BpU,KAAKkI,IAAMA,EACXlI,KAAKwmM,KAAOA,IAAUq3F,EAAO+R,UAAWz8R,GAAS,GAAK,KACvD,EACAiB,IAAK,WACJ,IAAIs6R,EAAQkL,GAAMwB,UAAWp7S,KAAKmT,MAElC,OAAOu7R,GAASA,EAAMhuT,IACrBguT,EAAMhuT,IAAKsf,MACX45S,GAAMwB,UAAU7K,SAAS7vT,IAAKsf,KAChC,EACAq7S,IAAK,SAAUC,GACd,IAAIC,EACH7M,EAAQkL,GAAMwB,UAAWp7S,KAAKmT,MAoB/B,OAlBKnT,KAAKU,QAAQohC,SACjB9hC,KAAKmjB,IAAMo4R,EAAQ1d,EAAO59P,OAAQjgC,KAAKigC,QACtCq7Q,EAASt7S,KAAKU,QAAQohC,SAAWw5Q,EAAS,EAAG,EAAGt7S,KAAKU,QAAQohC,UAG9D9hC,KAAKmjB,IAAMo4R,EAAQD,EAEpBt7S,KAAKk9C,KAAQl9C,KAAKkI,IAAMlI,KAAKyN,OAAU8tS,EAAQv7S,KAAKyN,MAE/CzN,KAAKU,QAAQihC,MACjB3hC,KAAKU,QAAQihC,KAAKjiC,KAAMM,KAAKsS,KAAMtS,KAAKk9C,IAAKl9C,MAGzC0uS,GAASA,EAAM7uS,IACnB6uS,EAAM7uS,IAAKG,MAEX45S,GAAMwB,UAAU7K,SAAS1wS,IAAKG,MAExBA,IACR,GAGD45S,GAAMv6S,UAAUgrD,KAAKhrD,UAAYu6S,GAAMv6S,UAEvCu6S,GAAMwB,UAAY,CACjB7K,SAAU,CACT7vT,IAAK,SAAU8uT,GACd,IAAIpwT,EAIJ,OAA6B,IAAxBowT,EAAMl9R,KAAKgnB,UACa,MAA5Bk2Q,EAAMl9R,KAAMk9R,EAAMr8R,OAAoD,MAAlCq8R,EAAMl9R,KAAKilB,MAAOi4Q,EAAMr8R,MACrDq8R,EAAMl9R,KAAMk9R,EAAMr8R,OAO1B/zB,EAASy+S,EAAOl5G,IAAK6qH,EAAMl9R,KAAMk9R,EAAMr8R,KAAM,MAGhB,SAAX/zB,EAAwBA,EAAJ,CACvC,EACAygB,IAAK,SAAU2vS,GAKT3R,EAAO2d,GAAG75Q,KAAM6tQ,EAAMr8R,MAC1B0qR,EAAO2d,GAAG75Q,KAAM6tQ,EAAMr8R,MAAQq8R,GACK,IAAxBA,EAAMl9R,KAAKgnB,WACtBukQ,EAAOgc,SAAUrK,EAAMr8R,OAC6B,MAAnDq8R,EAAMl9R,KAAKilB,MAAOihR,GAAehJ,EAAMr8R,OAGxCq8R,EAAMl9R,KAAMk9R,EAAMr8R,MAASq8R,EAAMtyP,IAFjC2gP,EAAOtmQ,MAAOi4Q,EAAMl9R,KAAMk9R,EAAMr8R,KAAMq8R,EAAMtyP,IAAMsyP,EAAMhpG,KAI1D,IAMFozG,GAAMwB,UAAU53Q,UAAYo2Q,GAAMwB,UAAU/3Q,WAAa,CACxDxjC,IAAK,SAAU2vS,GACTA,EAAMl9R,KAAKgnB,UAAYk2Q,EAAMl9R,KAAKhC,aACtCk/R,EAAMl9R,KAAMk9R,EAAMr8R,MAASq8R,EAAMtyP,IAEnC,GAGD2gP,EAAO59P,OAAS,CACfE,OAAQ,SAAUthB,GACjB,OAAOA,CACR,EACA48R,MAAO,SAAU58R,GAChB,MAAO,GAAMhd,KAAK6uP,IAAK7xO,EAAIhd,KAAKiuP,IAAO,CACxC,EACAygD,SAAU,SAGX1S,EAAO2d,GAAK5B,GAAMv6S,UAAUgrD,KAG5BwzO,EAAO2d,GAAG75Q,KAAO,CAAC,EAKlB,IACC+5Q,GAAOC,GACPC,GAAW,yBACXC,GAAO,cAER,SAASC,KACHH,MACqB,IAApB/4S,EAASsgG,QAAoB5iH,EAAO6hD,sBACxC7hD,EAAO6hD,sBAAuB25Q,IAE9Bx7T,EAAO4vB,WAAY4rS,GAAUje,EAAO2d,GAAG9pS,UAGxCmsR,EAAO2d,GAAGO,OAEZ,CAGA,SAASC,KAIR,OAHA17T,EAAO4vB,YAAY,WAClBwrS,QAAQxgU,CACT,IACSwgU,GAAQp8T,KAAK49D,KACvB,CAGA,SAAS++P,GAAO3hU,EAAM4hU,GACrB,IAAIxhQ,EACHv1C,EAAI,EACJoxB,EAAQ,CAAEyd,OAAQ15D,GAKnB,IADA4hU,EAAeA,EAAe,EAAI,EAC1B/2S,EAAI,EAAGA,GAAK,EAAI+2S,EAEvB3lR,EAAO,UADPmkB,EAAQu0P,GAAW9pS,KACSoxB,EAAO,UAAYmkB,GAAUpgE,EAO1D,OAJK4hU,IACJ3lR,EAAMgO,QAAUhO,EAAMwd,MAAQz5D,GAGxBi8C,CACR,CAEA,SAAS4lR,GAAa5+T,EAAO41B,EAAM8tB,GAKlC,IAJA,IAAIuuQ,EACH3zO,GAAe77B,GAAUo8Q,SAAUjpS,IAAU,IAAKxyB,OAAQq/C,GAAUo8Q,SAAU,MAC9Et1T,EAAQ,EACR7O,EAAS4jF,EAAW5jF,OACb6O,EAAQ7O,EAAQ6O,IACvB,GAAO0oT,EAAQ3zO,EAAY/0E,GAAQ4Y,KAAMuhC,EAAW9tB,EAAM51B,GAGzD,OAAOiyT,CAGV,CAmNA,SAASxvQ,GAAW1tB,EAAM8jB,EAAY11B,GACrC,IAAIthB,EACHi9T,EACAv1T,EAAQ,EACR7O,EAAS+nD,GAAUs8Q,WAAWrkU,OAC9BmlL,EAAWygI,EAAO/vM,WAAWH,QAAQ,kBAG7BouN,EAAKzpS,IACb,IACAypS,EAAO,WACN,GAAKM,EACJ,OAAO,EAYR,IAVA,IAAIhxN,EAAcqwN,IAASM,KAC1BxP,EAAY3qS,KAAK8e,IAAK,EAAGsgB,EAAUu3C,UAAYv3C,EAAUa,SAAWupD,GAKpEiwN,EAAU,GADH9O,EAAYvrQ,EAAUa,UAAY,GAEzCh7C,EAAQ,EACR7O,EAASgpD,EAAUs7Q,OAAOtkU,OAEnB6O,EAAQ7O,EAAQ6O,IACvBm6C,EAAUs7Q,OAAQz1T,GAAQu0T,IAAKC,GAMhC,OAHAl+I,EAAS2uI,WAAYz5R,EAAM,CAAE2uB,EAAWq6Q,EAAS9O,IAG5C8O,EAAU,GAAKrjU,EACZu0T,GAIFv0T,GACLmlL,EAAS2uI,WAAYz5R,EAAM,CAAE2uB,EAAW,EAAG,IAI5Cm8H,EAAS4uI,YAAa15R,EAAM,CAAE2uB,KACvB,EACR,EACAA,EAAYm8H,EAASl2K,QAAS,CAC7BorB,KAAMA,EACNnwB,MAAO07S,EAAOlvR,OAAQ,CAAC,EAAGynB,GAC1BuiP,KAAMklB,EAAOlvR,QAAQ,EAAM,CAC1B6tS,cAAe,CAAC,EAChBv8Q,OAAQ49P,EAAO59P,OAAOswQ,UACpB7vS,GACH+7S,mBAAoBrmR,EACpBsmR,gBAAiBh8S,EACjB83E,UAAWkjO,IAASM,KACpBl6Q,SAAUphC,EAAQohC,SAClBy6Q,OAAQ,GACRJ,YAAa,SAAUhpS,EAAMjL,GAC5B,IAAIsnS,EAAQ3R,EAAO+b,MAAOtnS,EAAM2uB,EAAU03O,KAAMxlQ,EAAMjL,EACrD+4B,EAAU03O,KAAK6jC,cAAerpS,IAAU8tB,EAAU03O,KAAK14O,QAExD,OADAgB,EAAUs7Q,OAAO98T,KAAM+vT,GAChBA,CACR,EACAxuQ,KAAM,SAAU27Q,GACf,IAAI71T,EAAQ,EAIX7O,EAAS0kU,EAAU17Q,EAAUs7Q,OAAOtkU,OAAS,EAC9C,GAAKokU,EACJ,OAAOr8S,KAGR,IADAq8S,GAAU,EACFv1T,EAAQ7O,EAAQ6O,IACvBm6C,EAAUs7Q,OAAQz1T,GAAQu0T,IAAK,GAUhC,OANKsB,GACJv/I,EAAS2uI,WAAYz5R,EAAM,CAAE2uB,EAAW,EAAG,IAC3Cm8H,EAAS4uI,YAAa15R,EAAM,CAAE2uB,EAAW07Q,KAEzCv/I,EAAS8uI,WAAY55R,EAAM,CAAE2uB,EAAW07Q,IAElC38S,IACR,IAED7d,EAAQ8+C,EAAU9+C,MAInB,KA/HD,SAAqBA,EAAOq6T,GAC3B,IAAI11T,EAAO1O,EAAM6nD,EAAQ1iD,EAAOmxT,EAGhC,IAAM5nT,KAAS3E,EAed,GAbA89C,EAASu8Q,EADTpkU,EAAOy1T,GAAW/mT,IAElBvJ,EAAQ4E,EAAO2E,GACV2nB,MAAMC,QAASnxB,KACnB0iD,EAAS1iD,EAAO,GAChBA,EAAQ4E,EAAO2E,GAAUvJ,EAAO,IAG5BuJ,IAAU1O,IACd+J,EAAO/J,GAASmF,SACT4E,EAAO2E,KAGf4nT,EAAQ7Q,EAAOgc,SAAUzhU,KACX,WAAYs2T,EAMzB,IAAM5nT,KALNvJ,EAAQmxT,EAAMzyN,OAAQ1+F,UACf4E,EAAO/J,GAICmF,EACNuJ,KAAS3E,IAChBA,EAAO2E,GAAUvJ,EAAOuJ,GACxB01T,EAAe11T,GAAUm5C,QAI3Bu8Q,EAAepkU,GAAS6nD,CAG3B,CA0FC28Q,CAAYz6T,EAAO8+C,EAAU03O,KAAK6jC,eAE1B11T,EAAQ7O,EAAQ6O,IAEvB,GADA1H,EAAS4gD,GAAUs8Q,WAAYx1T,GAAQ4Y,KAAMuhC,EAAW3uB,EAAMnwB,EAAO8+C,EAAU03O,MAM9E,OAJKE,EAAYz5R,EAAO4hD,QACvB68P,EAAO8Q,YAAa1tQ,EAAU3uB,KAAM2uB,EAAU03O,KAAKsyB,OAAQjqQ,KAC1D5hD,EAAO4hD,KAAKhiC,KAAM5f,IAEbA,EAyBT,OArBAy+S,EAAO/9S,IAAKqC,EAAOg6T,GAAal7Q,GAE3B43O,EAAY53O,EAAU03O,KAAKlrQ,QAC/BwzB,EAAU03O,KAAKlrQ,MAAM/N,KAAM4S,EAAM2uB,GAIlCA,EACEiB,SAAUjB,EAAU03O,KAAKz2O,UACzB9kD,KAAM6jD,EAAU03O,KAAKv7R,KAAM6jD,EAAU03O,KAAKj6R,UAC1C0jD,KAAMnB,EAAU03O,KAAKv2O,MACrBurD,OAAQ1sD,EAAU03O,KAAKhrL,QAEzBkwM,EAAO2d,GAAG3qL,MACTgtK,EAAOlvR,OAAQotS,EAAM,CACpBzpS,KAAMA,EACNuqS,KAAM57Q,EACNgqQ,MAAOhqQ,EAAU03O,KAAKsyB,SAIjBhqQ,CACR,CAEA48P,EAAO79P,UAAY69P,EAAOlvR,OAAQqxB,GAAW,CAE5Co8Q,SAAU,CACT,IAAK,CAAE,SAAUjpS,EAAM51B,GACtB,IAAIiyT,EAAQxvS,KAAKm8S,YAAahpS,EAAM51B,GAEpC,OADA+xT,GAAWE,EAAMl9R,KAAMa,EAAM67R,GAAQt+Q,KAAMnzC,GAASiyT,GAC7CA,CACR,IAGDsN,QAAS,SAAU36T,EAAOuvC,GACpBmnP,EAAY12R,IAChBuvC,EAAWvvC,EACXA,EAAQ,CAAE,MAEVA,EAAQA,EAAMimB,MAAOmiS,GAOtB,IAJA,IAAIp3R,EACHrsB,EAAQ,EACR7O,EAASkK,EAAMlK,OAER6O,EAAQ7O,EAAQ6O,IACvBqsB,EAAOhxB,EAAO2E,GACdk5C,GAAUo8Q,SAAUjpS,GAAS6sB,GAAUo8Q,SAAUjpS,IAAU,GAC3D6sB,GAAUo8Q,SAAUjpS,GAAO7U,QAASozB,EAEtC,EAEA4qR,WAAY,CA3Wb,SAA2BhqS,EAAMnwB,EAAOw2R,GACvC,IAAIxlQ,EAAM51B,EAAO+6F,EAAQo2N,EAAOqO,EAASC,EAAWC,EAAgBnjQ,EACnEojQ,EAAQ,UAAW/6T,GAAS,WAAYA,EACxC06T,EAAO78S,KACPy0S,EAAO,CAAC,EACRl9Q,EAAQjlB,EAAKilB,MACb2rE,EAAS5wF,EAAKgnB,UAAY+1Q,GAAoB/8R,GAC9C6qS,EAAWnP,GAASttT,IAAK4xB,EAAM,UA6BhC,IAAMa,KA1BAwlQ,EAAKsyB,QAEa,OADvByD,EAAQ7Q,EAAO8Q,YAAar8R,EAAM,OACvB8qS,WACV1O,EAAM0O,SAAW,EACjBL,EAAUrO,EAAM9mF,MAAMujF,KACtBuD,EAAM9mF,MAAMujF,KAAO,WACZuD,EAAM0O,UACXL,GAEF,GAEDrO,EAAM0O,WAENP,EAAKlvN,QAAQ,WAGZkvN,EAAKlvN,QAAQ,WACZ+gN,EAAM0O,WACAvf,EAAOoN,MAAO34R,EAAM,MAAOr6B,QAChCy2T,EAAM9mF,MAAMujF,MAEd,GACD,KAIahpT,EAEb,GADA5E,EAAQ4E,EAAOgxB,GACVyoS,GAAS9zS,KAAMvqB,GAAU,CAG7B,UAFO4E,EAAOgxB,GACdmlE,EAASA,GAAoB,WAAV/6F,EACdA,KAAY2lH,EAAS,OAAS,QAAW,CAI7C,GAAe,SAAV3lH,IAAoB4/T,QAAiCjiU,IAArBiiU,EAAUhqS,GAK9C,SAJA+vF,GAAS,CAMX,CACAuxM,EAAMthS,GAASgqS,GAAYA,EAAUhqS,IAAU0qR,EAAOtmQ,MAAOjlB,EAAMa,EACpE,CAKD,IADA6pS,GAAanf,EAAOc,cAAex8S,MAChB07S,EAAOc,cAAe8V,GA8DzC,IAAMthS,KAzDD+pS,GAA2B,IAAlB5qS,EAAKgnB,WAMlBq/O,EAAK5hO,SAAW,CAAExf,EAAMwf,SAAUxf,EAAMmoB,UAAWnoB,EAAMooB,WAIlC,OADvBs9P,EAAiBE,GAAYA,EAASrjQ,WAErCmjQ,EAAiBjP,GAASttT,IAAK4xB,EAAM,YAGrB,UADjBwnC,EAAU+jP,EAAOl5G,IAAKryK,EAAM,cAEtB2qS,EACJnjQ,EAAUmjQ,GAIVjN,GAAU,CAAE19R,IAAQ,GACpB2qS,EAAiB3qS,EAAKilB,MAAMuiB,SAAWmjQ,EACvCnjQ,EAAU+jP,EAAOl5G,IAAKryK,EAAM,WAC5B09R,GAAU,CAAE19R,OAKG,WAAZwnC,GAAoC,iBAAZA,GAAgD,MAAlBmjQ,IACrB,SAAhCpf,EAAOl5G,IAAKryK,EAAM,WAGhB0qS,IACLH,EAAKz/T,MAAM,WACVm6C,EAAMuiB,QAAUmjQ,CACjB,IACuB,MAAlBA,IACJnjQ,EAAUviB,EAAMuiB,QAChBmjQ,EAA6B,SAAZnjQ,EAAqB,GAAKA,IAG7CviB,EAAMuiB,QAAU,iBAKd6+N,EAAK5hO,WACTxf,EAAMwf,SAAW,SACjB8lQ,EAAKlvN,QAAQ,WACZp2D,EAAMwf,SAAW4hO,EAAK5hO,SAAU,GAChCxf,EAAMmoB,UAAYi5N,EAAK5hO,SAAU,GACjCxf,EAAMooB,UAAYg5N,EAAK5hO,SAAU,EAClC,KAIDimQ,GAAY,EACEvI,EAGPuI,IACAG,EACC,WAAYA,IAChBj6M,EAASi6M,EAASj6M,QAGnBi6M,EAAWnP,GAASZ,OAAQ96R,EAAM,SAAU,CAAEwnC,QAASmjQ,IAInD3kO,IACJ6kO,EAASj6M,QAAUA,GAIfA,GACJ8sM,GAAU,CAAE19R,IAAQ,GAKrBuqS,EAAKz/T,MAAM,WASV,IAAM+1B,KAJA+vF,GACL8sM,GAAU,CAAE19R,IAEb07R,GAASr4Q,OAAQrjB,EAAM,UACTmiS,EACb5W,EAAOtmQ,MAAOjlB,EAAMa,EAAMshS,EAAMthS,GAElC,KAID6pS,EAAYb,GAAaj5M,EAASi6M,EAAUhqS,GAAS,EAAGA,EAAM0pS,GACtD1pS,KAAQgqS,IACfA,EAAUhqS,GAAS6pS,EAAUvvS,MACxBy1F,IACJ85M,EAAU90S,IAAM80S,EAAUvvS,MAC1BuvS,EAAUvvS,MAAQ,GAItB,GAmMC4vS,UAAW,SAAU3rR,EAAUgG,GACzBA,EACJsI,GAAUs8Q,WAAWh+S,QAASozB,GAE9BsO,GAAUs8Q,WAAW78T,KAAMiyC,EAE7B,IAGDmsQ,EAAOyf,MAAQ,SAAUA,EAAOr9Q,EAAQxgC,GACvC,IAAIwqF,EAAMqzN,GAA0B,kBAAVA,EAAqBzf,EAAOlvR,OAAQ,CAAC,EAAG2uS,GAAU,CAC3E5+T,SAAU+gB,IAAOA,GAAMwgC,GACtB44O,EAAYykC,IAAWA,EACxBx7Q,SAAUw7Q,EACVr9Q,OAAQxgC,GAAMwgC,GAAUA,IAAW44O,EAAY54O,IAAYA,GAoC5D,OAhCK49P,EAAO2d,GAAG50R,IACdqjE,EAAInoD,SAAW,EAGc,kBAAjBmoD,EAAInoD,WACVmoD,EAAInoD,YAAY+7P,EAAO2d,GAAG+B,OAC9BtzN,EAAInoD,SAAW+7P,EAAO2d,GAAG+B,OAAQtzN,EAAInoD,UAGrCmoD,EAAInoD,SAAW+7P,EAAO2d,GAAG+B,OAAOhN,UAMjB,MAAbtmN,EAAIghN,QAA+B,IAAdhhN,EAAIghN,QAC7BhhN,EAAIghN,MAAQ,MAIbhhN,EAAI2nE,IAAM3nE,EAAIvrG,SAEdurG,EAAIvrG,SAAW,WACTm6R,EAAY5uL,EAAI2nE,MACpB3nE,EAAI2nE,IAAIlyJ,KAAMM,MAGViqF,EAAIghN,OACRpN,EAAO2Q,QAASxuS,KAAMiqF,EAAIghN,MAE5B,EAEOhhN,CACR,EAEA4zM,EAAOp+R,GAAGkP,OAAQ,CACjB6uS,OAAQ,SAAUF,EAAOhkT,EAAI2mC,EAAQvO,GAGpC,OAAO1xB,KAAK7hB,OAAQkxT,IAAqB1qH,IAAK,UAAW,GAAIz/G,OAG3Dh9D,MAAMy4B,QAAS,CAAE4D,QAASjrC,GAAMgkT,EAAOr9Q,EAAQvO,EAClD,EACAiP,QAAS,SAAUxtB,EAAMmqS,EAAOr9Q,EAAQvO,GACvC,IAAIk2L,EAAQi2E,EAAOc,cAAexrR,GACjCsqS,EAAS5f,EAAOyf,MAAOA,EAAOr9Q,EAAQvO,GACtCgsR,EAAc,WAGb,IAAIb,EAAO78Q,GAAWhgC,KAAM69R,EAAOlvR,OAAQ,CAAC,EAAGwE,GAAQsqS,IAGlD71F,GAASomF,GAASttT,IAAKsf,KAAM,YACjC68S,EAAK77Q,MAAM,EAEb,EAID,OAFA08Q,EAAYC,OAASD,EAEd91F,IAA0B,IAAjB61F,EAAOxS,MACtBjrS,KAAKk+R,KAAMwf,GACX19S,KAAKirS,MAAOwS,EAAOxS,MAAOyS,EAC5B,EACA18Q,KAAM,SAAU1mD,EAAMu0T,EAAY8N,GACjC,IAAIiB,EAAY,SAAUlP,GACzB,IAAI1tQ,EAAO0tQ,EAAM1tQ,YACV0tQ,EAAM1tQ,KACbA,EAAM27Q,EACP,EAWA,MATqB,kBAATriU,IACXqiU,EAAU9N,EACVA,EAAav0T,EACbA,OAAOY,GAEH2zT,GACJ7uS,KAAKirS,MAAO3wT,GAAQ,KAAM,IAGpB0lB,KAAKk+R,MAAM,WACjB,IAAIsQ,GAAU,EACb1nT,EAAgB,MAARxM,GAAgBA,EAAO,aAC/BujU,EAAShgB,EAAOggB,OAChBh4T,EAAOmoT,GAASttT,IAAKsf,MAEtB,GAAKlZ,EACCjB,EAAMiB,IAAWjB,EAAMiB,GAAQk6C,MACnC48Q,EAAW/3T,EAAMiB,SAGlB,IAAMA,KAASjB,EACTA,EAAMiB,IAAWjB,EAAMiB,GAAQk6C,MAAQ66Q,GAAK/zS,KAAMhhB,IACtD82T,EAAW/3T,EAAMiB,IAKpB,IAAMA,EAAQ+2T,EAAO5lU,OAAQ6O,KACvB+2T,EAAQ/2T,GAAQwrB,OAAStS,MACnB,MAAR1lB,GAAgBujU,EAAQ/2T,GAAQmkT,QAAU3wT,IAE5CujU,EAAQ/2T,GAAQ+1T,KAAK77Q,KAAM27Q,GAC3BnO,GAAU,EACVqP,EAAOh3R,OAAQ//B,EAAO,KAOnB0nT,GAAYmO,GAChB9e,EAAO2Q,QAASxuS,KAAM1lB,EAExB,GACD,EACAqjU,OAAQ,SAAUrjU,GAIjB,OAHc,IAATA,IACJA,EAAOA,GAAQ,MAET0lB,KAAKk+R,MAAM,WACjB,IAAIp3S,EACHjB,EAAOmoT,GAASttT,IAAKsf,MACrBirS,EAAQplT,EAAMvL,EAAO,SACrBo0T,EAAQ7oT,EAAMvL,EAAO,cACrBujU,EAAShgB,EAAOggB,OAChB5lU,EAASgzT,EAAQA,EAAMhzT,OAAS,EAajC,IAVA4N,EAAK83T,QAAS,EAGd9f,EAAOoN,MAAOjrS,KAAM1lB,EAAM,IAErBo0T,GAASA,EAAM1tQ,MACnB0tQ,EAAM1tQ,KAAKthC,KAAMM,MAAM,GAIlBlZ,EAAQ+2T,EAAO5lU,OAAQ6O,KACvB+2T,EAAQ/2T,GAAQwrB,OAAStS,MAAQ69S,EAAQ/2T,GAAQmkT,QAAU3wT,IAC/DujU,EAAQ/2T,GAAQ+1T,KAAK77Q,MAAM,GAC3B68Q,EAAOh3R,OAAQ//B,EAAO,IAKxB,IAAMA,EAAQ,EAAGA,EAAQ7O,EAAQ6O,IAC3BmkT,EAAOnkT,IAAWmkT,EAAOnkT,GAAQ62T,QACrC1S,EAAOnkT,GAAQ62T,OAAOj+S,KAAMM,aAKvBna,EAAK83T,MACb,GACD,IAGD9f,EAAOK,KAAM,CAAE,SAAU,OAAQ,SAAU,SAAU3vR,EAAIn2B,GACxD,IAAI0lU,EAAQjgB,EAAOp+R,GAAIrnB,GACvBylT,EAAOp+R,GAAIrnB,GAAS,SAAUklU,EAAOr9Q,EAAQvO,GAC5C,OAAgB,MAAT4rR,GAAkC,mBAAVA,EAC9BQ,EAAM5+S,MAAOc,KAAM3B,WACnB2B,KAAK2gC,QAASs7Q,GAAO7jU,GAAM,GAAQklU,EAAOr9Q,EAAQvO,EACpD,CACD,IAGAmsQ,EAAOK,KAAM,CACZ6f,UAAW9B,GAAO,QAClB+B,QAAS/B,GAAO,QAChBgC,YAAahC,GAAO,UACpBiC,OAAQ,CAAE35Q,QAAS,QACnB45Q,QAAS,CAAE55Q,QAAS,QACpB65Q,WAAY,CAAE75Q,QAAS,YACrB,SAAUnsD,EAAM+J,GAClB07S,EAAOp+R,GAAIrnB,GAAS,SAAUklU,EAAOr9Q,EAAQvO,GAC5C,OAAO1xB,KAAK2gC,QAASx+C,EAAOm7T,EAAOr9Q,EAAQvO,EAC5C,CACD,IAEAmsQ,EAAOggB,OAAS,GAChBhgB,EAAO2d,GAAGO,KAAO,WAChB,IAAIlrL,EACH1rH,EAAI,EACJ04S,EAAShgB,EAAOggB,OAIjB,IAFAnC,GAAQp8T,KAAK49D,MAEL/3C,EAAI04S,EAAO5lU,OAAQktB,KAC1B0rH,EAAQgtL,EAAQ14S,OAGC04S,EAAQ14S,KAAQ0rH,GAChCgtL,EAAOh3R,OAAQ1hB,IAAK,GAIhB04S,EAAO5lU,QACZ4lT,EAAO2d,GAAGx6Q,OAEX06Q,QAAQxgU,CACT,EAEA2iT,EAAO2d,GAAG3qL,MAAQ,SAAUA,GAC3BgtK,EAAOggB,OAAOp+T,KAAMoxI,GACpBgtK,EAAO2d,GAAG/tS,OACX,EAEAowR,EAAO2d,GAAG9pS,SAAW,GACrBmsR,EAAO2d,GAAG/tS,MAAQ,WACZkuS,KAILA,IAAa,EACbG,KACD,EAEAje,EAAO2d,GAAGx6Q,KAAO,WAChB26Q,GAAa,IACd,EAEA9d,EAAO2d,GAAG+B,OAAS,CAClBc,KAAM,IACNC,KAAM,IAGN/N,SAAU,KAKX1S,EAAOp+R,GAAGqQ,MAAQ,SAAUquD,EAAM7jF,GAIjC,OAHA6jF,EAAO0/N,EAAO2d,IAAK3d,EAAO2d,GAAG+B,OAAQp/O,IAAiBA,EACtD7jF,EAAOA,GAAQ,KAER0lB,KAAKirS,MAAO3wT,GAAM,SAAUwjF,EAAM4wO,GACxC,IAAIzrE,EAAU3iP,EAAO4vB,WAAY4tD,EAAMK,GACvCuwO,EAAM1tQ,KAAO,WACZ1gD,EAAO2vB,aAAcgzN,EACtB,CACD,GACD,EAGA,WACC,IAAInqO,EAAQ8J,EAASgO,cAAe,SAEnCq5E,EADSrnF,EAASgO,cAAe,UACpBO,YAAavO,EAASgO,cAAe,WAEnD9X,EAAMxe,KAAO,WAIb8iT,EAAQmhB,QAA0B,KAAhBzlT,EAAMvb,MAIxB6/S,EAAQohB,YAAcv0N,EAAIhC,UAI1BnvF,EAAQ8J,EAASgO,cAAe,UAC1BrzB,MAAQ,IACdub,EAAMxe,KAAO,QACb8iT,EAAQqhB,WAA6B,MAAhB3lT,EAAMvb,KAC3B,CArBD,GAwBA,IAAImhU,GACHta,GAAavG,EAAOqG,KAAKE,WAE1BvG,EAAOp+R,GAAGkP,OAAQ,CACjBs3C,KAAM,SAAU7tE,EAAMmF,GACrB,OAAO6vT,GAAQptS,KAAM69R,EAAO53O,KAAM7tE,EAAMmF,EAAO8gB,UAAUpmB,OAAS,EACnE,EAEA0mU,WAAY,SAAUvmU,GACrB,OAAO4nB,KAAKk+R,MAAM,WACjBL,EAAO8gB,WAAY3+S,KAAM5nB,EAC1B,GACD,IAGDylT,EAAOlvR,OAAQ,CACds3C,KAAM,SAAU3zC,EAAMl6B,EAAMmF,GAC3B,IAAIyvB,EAAK0hS,EACRkQ,EAAQtsS,EAAKgnB,SAGd,GAAe,IAAVslR,GAAyB,IAAVA,GAAyB,IAAVA,EAKnC,MAAkC,qBAAtBtsS,EAAK8uB,aACTy8P,EAAO1qR,KAAMb,EAAMl6B,EAAMmF,IAKlB,IAAVqhU,GAAgB/gB,EAAOiB,SAAUxsR,KACrCo8R,EAAQ7Q,EAAOghB,UAAWzmU,EAAKiG,iBAC5Bw/S,EAAOqG,KAAK97R,MAAMs5R,KAAK55R,KAAM1vB,GAASsmU,QAAWxjU,SAGtCA,IAAVqC,EACW,OAAVA,OACJsgT,EAAO8gB,WAAYrsS,EAAMl6B,GAIrBs2T,GAAS,QAASA,QACuBxzT,KAA3C8xB,EAAM0hS,EAAM7uS,IAAKyS,EAAM/0B,EAAOnF,IACzB40B,GAGRsF,EAAKgkB,aAAcl+C,EAAMmF,EAAQ,IAC1BA,GAGHmxT,GAAS,QAASA,GAA+C,QAApC1hS,EAAM0hS,EAAMhuT,IAAK4xB,EAAMl6B,IACjD40B,EAMM,OAHdA,EAAM6wR,EAAO/0S,KAAKm9D,KAAM3zC,EAAMl6B,SAGT8C,EAAY8xB,EAClC,EAEA6xS,UAAW,CACVvkU,KAAM,CACLulB,IAAK,SAAUyS,EAAM/0B,GACpB,IAAM6/S,EAAQqhB,YAAwB,UAAVlhU,GAC3BmtE,EAAUp4C,EAAM,SAAY,CAC5B,IAAI3U,EAAM2U,EAAK/0B,MAKf,OAJA+0B,EAAKgkB,aAAc,OAAQ/4C,GACtBogB,IACJ2U,EAAK/0B,MAAQogB,GAEPpgB,CACR,CACD,IAIFohU,WAAY,SAAUrsS,EAAM/0B,GAC3B,IAAInF,EACH+sB,EAAI,EAIJ25S,EAAYvhU,GAASA,EAAM6qB,MAAOmiS,GAEnC,GAAKuU,GAA+B,IAAlBxsS,EAAKgnB,SACtB,KAAUlhD,EAAO0mU,EAAW35S,MAC3BmN,EAAK4uB,gBAAiB9oD,EAGzB,IAIDsmU,GAAW,CACV7+S,IAAK,SAAUyS,EAAM/0B,EAAOnF,GAQ3B,OAPe,IAAVmF,EAGJsgT,EAAO8gB,WAAYrsS,EAAMl6B,GAEzBk6B,EAAKgkB,aAAcl+C,EAAMA,GAEnBA,CACR,GAGDylT,EAAOK,KAAML,EAAOqG,KAAK97R,MAAMs5R,KAAKv7S,OAAOiiB,MAAO,SAAU,SAAUmG,EAAIn2B,GACzE,IAAI2mU,EAAS3a,GAAYhsT,IAAUylT,EAAO/0S,KAAKm9D,KAE/Cm+O,GAAYhsT,GAAS,SAAUk6B,EAAMl6B,EAAMgxT,GAC1C,IAAIp8R,EAAKsiC,EACR0vQ,EAAgB5mU,EAAKiG,cAYtB,OAVM+qT,IAGL95P,EAAS80P,GAAY4a,GACrB5a,GAAY4a,GAAkBhyS,EAC9BA,EAAqC,MAA/B+xS,EAAQzsS,EAAMl6B,EAAMgxT,GACzB4V,EACA,KACD5a,GAAY4a,GAAkB1vQ,GAExBtiC,CACR,CACD,IAKA,IAAIiyS,GAAa,sCAChBC,GAAa,gBAwIb,SAASC,GAAkB5hU,GAE1B,OADaA,EAAM6qB,MAAOmiS,IAAmB,IAC/BtjS,KAAM,IACrB,CAGD,SAASm4S,GAAU9sS,GAClB,OAAOA,EAAK8uB,cAAgB9uB,EAAK8uB,aAAc,UAAa,EAC7D,CAEA,SAASi+Q,GAAgB9hU,GACxB,OAAKkxB,MAAMC,QAASnxB,GACZA,EAEc,kBAAVA,GACJA,EAAM6qB,MAAOmiS,IAEd,EACR,CAxJA1M,EAAOp+R,GAAGkP,OAAQ,CACjBwE,KAAM,SAAU/6B,EAAMmF,GACrB,OAAO6vT,GAAQptS,KAAM69R,EAAO1qR,KAAM/6B,EAAMmF,EAAO8gB,UAAUpmB,OAAS,EACnE,EAEAqnU,WAAY,SAAUlnU,GACrB,OAAO4nB,KAAKk+R,MAAM,kBACVl+R,KAAM69R,EAAO0hB,QAASnnU,IAAUA,EACxC,GACD,IAGDylT,EAAOlvR,OAAQ,CACdwE,KAAM,SAAUb,EAAMl6B,EAAMmF,GAC3B,IAAIyvB,EAAK0hS,EACRkQ,EAAQtsS,EAAKgnB,SAGd,GAAe,IAAVslR,GAAyB,IAAVA,GAAyB,IAAVA,EAWnC,OAPe,IAAVA,GAAgB/gB,EAAOiB,SAAUxsR,KAGrCl6B,EAAOylT,EAAO0hB,QAASnnU,IAAUA,EACjCs2T,EAAQ7Q,EAAOud,UAAWhjU,SAGZ8C,IAAVqC,EACCmxT,GAAS,QAASA,QACuBxzT,KAA3C8xB,EAAM0hS,EAAM7uS,IAAKyS,EAAM/0B,EAAOnF,IACzB40B,EAGCsF,EAAMl6B,GAASmF,EAGpBmxT,GAAS,QAASA,GAA+C,QAApC1hS,EAAM0hS,EAAMhuT,IAAK4xB,EAAMl6B,IACjD40B,EAGDsF,EAAMl6B,EACd,EAEAgjU,UAAW,CACVhoP,SAAU,CACT1yE,IAAK,SAAU4xB,GAMd,IAAIohH,EAAWmqK,EAAO/0S,KAAKm9D,KAAM3zC,EAAM,YAEvC,OAAKohH,EACGx0I,SAAUw0I,EAAU,IAI3BurL,GAAWn3S,KAAMwK,EAAKo4C,WACtBw0P,GAAWp3S,KAAMwK,EAAKo4C,WACtBp4C,EAAK9W,KAEE,GAGA,CACT,IAIF+jT,QAAS,CACR,IAAO,UACP,MAAS,eAYLniB,EAAQohB,cACb3gB,EAAOud,UAAUnzN,SAAW,CAC3BvnG,IAAK,SAAU4xB,GAId,IAAIjC,EAASiC,EAAKhC,WAIlB,OAHKD,GAAUA,EAAOC,YACrBD,EAAOC,WAAW2nF,cAEZ,IACR,EACAp4F,IAAK,SAAUyS,GAId,IAAIjC,EAASiC,EAAKhC,WACbD,IACJA,EAAO4nF,cAEF5nF,EAAOC,YACXD,EAAOC,WAAW2nF,cAGrB,IAIF4lM,EAAOK,KAAM,CACZ,WACA,WACA,YACA,cACA,cACA,UACA,UACA,SACA,cACA,oBACE,WACFL,EAAO0hB,QAASv/S,KAAK3hB,eAAkB2hB,IACxC,IA2BA69R,EAAOp+R,GAAGkP,OAAQ,CACjB8nB,SAAU,SAAUl5C,GACnB,IAAI2uQ,EAAY93O,EAAKorS,EAAUvkU,EAAWkqB,EAAG8kP,EAE7C,OAAK4uB,EAAYt7R,GACTyiB,KAAKk+R,MAAM,SAAU1nR,GAC3BqnR,EAAQ79R,MAAOy2B,SAAUl5C,EAAMmiB,KAAMM,KAAMwW,EAAG4oS,GAAUp/S,OACzD,KAGDksP,EAAamzD,GAAgB9hU,IAEbtF,OACR+nB,KAAKk+R,MAAM,WAIjB,GAHAshB,EAAWJ,GAAUp/S,MACrBoU,EAAwB,IAAlBpU,KAAKs5B,UAAoB,IAAM6lR,GAAkBK,GAAa,IAEzD,CACV,IAAMr6S,EAAI,EAAGA,EAAI+mP,EAAWj0Q,OAAQktB,IACnClqB,EAAYixQ,EAAY/mP,GACnBiP,EAAI9d,QAAS,IAAMrb,EAAY,KAAQ,IAC3Cm5B,GAAOn5B,EAAY,KAKrBgvQ,EAAak1D,GAAkB/qS,GAC1BorS,IAAav1D,GACjBjqP,KAAKs2B,aAAc,QAAS2zN,EAE9B,CACD,IAGMjqP,IACR,EAEAm3B,YAAa,SAAU55C,GACtB,IAAI2uQ,EAAY93O,EAAKorS,EAAUvkU,EAAWkqB,EAAG8kP,EAE7C,OAAK4uB,EAAYt7R,GACTyiB,KAAKk+R,MAAM,SAAU1nR,GAC3BqnR,EAAQ79R,MAAOm3B,YAAa55C,EAAMmiB,KAAMM,KAAMwW,EAAG4oS,GAAUp/S,OAC5D,IAGK3B,UAAUpmB,QAIhBi0Q,EAAamzD,GAAgB9hU,IAEbtF,OACR+nB,KAAKk+R,MAAM,WAMjB,GALAshB,EAAWJ,GAAUp/S,MAGrBoU,EAAwB,IAAlBpU,KAAKs5B,UAAoB,IAAM6lR,GAAkBK,GAAa,IAEzD,CACV,IAAMr6S,EAAI,EAAGA,EAAI+mP,EAAWj0Q,OAAQktB,IAInC,IAHAlqB,EAAYixQ,EAAY/mP,GAGhBiP,EAAI9d,QAAS,IAAMrb,EAAY,MAAS,GAC/Cm5B,EAAMA,EAAI3d,QAAS,IAAMxb,EAAY,IAAK,KAK5CgvQ,EAAak1D,GAAkB/qS,GAC1BorS,IAAav1D,GACjBjqP,KAAKs2B,aAAc,QAAS2zN,EAE9B,CACD,IAGMjqP,KA/BCA,KAAKimD,KAAM,QAAS,GAgC7B,EAEAw5P,YAAa,SAAUliU,EAAOmiU,GAC7B,IAAIxzD,EAAYjxQ,EAAWkqB,EAAGy7Q,EAC7BtmS,SAAciD,EACdoiU,EAAwB,WAATrlU,GAAqBm0B,MAAMC,QAASnxB,GAEpD,OAAKs7R,EAAYt7R,GACTyiB,KAAKk+R,MAAM,SAAU/4R,GAC3B04R,EAAQ79R,MAAOy/S,YACdliU,EAAMmiB,KAAMM,KAAMmF,EAAGi6S,GAAUp/S,MAAQ0/S,GACvCA,EAEF,IAGwB,mBAAbA,GAA0BC,EAC9BD,EAAW1/S,KAAKy2B,SAAUl5C,GAAUyiB,KAAKm3B,YAAa55C,IAG9D2uQ,EAAamzD,GAAgB9hU,GAEtByiB,KAAKk+R,MAAM,WACjB,GAAKyhB,EAKJ,IAFA/+B,EAAOid,EAAQ79R,MAETmF,EAAI,EAAGA,EAAI+mP,EAAWj0Q,OAAQktB,IACnClqB,EAAYixQ,EAAY/mP,GAGnBy7Q,EAAKg/B,SAAU3kU,GACnB2lS,EAAKzpP,YAAal8C,GAElB2lS,EAAKnqP,SAAUx7C,aAKIC,IAAVqC,GAAgC,YAATjD,KAClCW,EAAYmkU,GAAUp/S,QAIrBguS,GAASnuS,IAAKG,KAAM,gBAAiB/kB,GAOjC+kB,KAAKs2B,cACTt2B,KAAKs2B,aAAc,QAClBr7C,IAAuB,IAAVsC,EACZ,GACAywT,GAASttT,IAAKsf,KAAM,kBAAqB,IAI9C,IACD,EAEA4/S,SAAU,SAAUjnR,GACnB,IAAI19C,EAAWq3B,EACdnN,EAAI,EAGL,IADAlqB,EAAY,IAAM09C,EAAW,IACnBrmB,EAAOtS,KAAMmF,MACtB,GAAuB,IAAlBmN,EAAKgnB,WACP,IAAM6lR,GAAkBC,GAAU9sS,IAAW,KAAMhc,QAASrb,IAAe,EAC7E,OAAO,EAIT,OAAO,CACR,IAMD,IAAI4kU,GAAU,MAEdhiB,EAAOp+R,GAAGkP,OAAQ,CACjBhR,IAAK,SAAUpgB,GACd,IAAImxT,EAAO1hS,EAAKwoS,EACfljS,EAAOtS,KAAM,GAEd,OAAM3B,UAAUpmB,QA0BhBu9T,EAAkB38B,EAAYt7R,GAEvByiB,KAAKk+R,MAAM,SAAU/4R,GAC3B,IAAIxH,EAEmB,IAAlBqC,KAAKs5B,WAWE,OANX37B,EADI63S,EACEj4T,EAAMmiB,KAAMM,KAAMmF,EAAG04R,EAAQ79R,MAAOrC,OAEpCpgB,GAKNogB,EAAM,GAEoB,kBAARA,EAClBA,GAAO,GAEI8Q,MAAMC,QAAS/Q,KAC1BA,EAAMkgS,EAAO/9S,IAAK6d,GAAK,SAAUpgB,GAChC,OAAgB,MAATA,EAAgB,GAAKA,EAAQ,EACrC,MAGDmxT,EAAQ7Q,EAAOiiB,SAAU9/S,KAAK1lB,OAAUujT,EAAOiiB,SAAU9/S,KAAK0qD,SAASrsE,iBAGrD,QAASqwT,QAA+CxzT,IAApCwzT,EAAM7uS,IAAKG,KAAMrC,EAAK,WAC3DqC,KAAKziB,MAAQogB,GAEf,KA3DM2U,GACJo8R,EAAQ7Q,EAAOiiB,SAAUxtS,EAAKh4B,OAC7BujT,EAAOiiB,SAAUxtS,EAAKo4C,SAASrsE,iBAG/B,QAASqwT,QACgCxzT,KAAvC8xB,EAAM0hS,EAAMhuT,IAAK4xB,EAAM,UAElBtF,EAMY,kBAHpBA,EAAMsF,EAAK/0B,OAIHyvB,EAAIvW,QAASopT,GAAS,IAIhB,MAAP7yS,EAAc,GAAKA,OAG3B,CAsCF,IAGD6wR,EAAOlvR,OAAQ,CACdmxS,SAAU,CACT7nS,OAAQ,CACPv3B,IAAK,SAAU4xB,GAEd,IAAI3U,EAAMkgS,EAAO/0S,KAAKm9D,KAAM3zC,EAAM,SAClC,OAAc,MAAP3U,EACNA,EAMAwhT,GAAkBthB,EAAO9lT,KAAMu6B,GACjC,GAEDomB,OAAQ,CACPh4C,IAAK,SAAU4xB,GACd,IAAI/0B,EAAO06B,EAAQ9S,EAClBzE,EAAU4R,EAAK5R,QACf5Z,EAAQwrB,EAAK2lF,cACbsmL,EAAoB,eAAdjsQ,EAAKh4B,KACXmE,EAAS8/R,EAAM,KAAO,GACtB59P,EAAM49P,EAAMz3R,EAAQ,EAAI4Z,EAAQzoB,OAUjC,IAPCktB,EADIre,EAAQ,EACR65B,EAGA49P,EAAMz3R,EAAQ,EAIXqe,EAAIwb,EAAKxb,IAKhB,KAJA8S,EAASvX,EAASyE,IAIJ8iF,UAAY9iF,IAAMre,KAG7BmxB,EAAOl/B,YACLk/B,EAAO3H,WAAWv3B,WACnB2xE,EAAUzyC,EAAO3H,WAAY,aAAiB,CAMjD,GAHA/yB,EAAQsgT,EAAQ5lR,GAASta,MAGpB4gR,EACJ,OAAOhhS,EAIRkB,EAAOgB,KAAMlC,EACd,CAGD,OAAOkB,CACR,EAEAohB,IAAK,SAAUyS,EAAM/0B,GAMpB,IALA,IAAIwiU,EAAW9nS,EACdvX,EAAU4R,EAAK5R,QACfjiB,EAASo/S,EAAOgB,UAAWthT,GAC3B4nB,EAAIzE,EAAQzoB,OAELktB,OACP8S,EAASvX,EAASyE,IAIN8iF,SACX41M,EAAO/qF,QAAS+qF,EAAOiiB,SAAS7nS,OAAOv3B,IAAKu3B,GAAUx5B,IAAY,KAElEshU,GAAY,GAUd,OAHMA,IACLztS,EAAK2lF,eAAiB,GAEhBx5G,CACR,MAMHo/S,EAAOK,KAAM,CAAE,QAAS,aAAc,WACrCL,EAAOiiB,SAAU9/S,MAAS,CACzBH,IAAK,SAAUyS,EAAM/0B,GACpB,GAAKkxB,MAAMC,QAASnxB,GACnB,OAAS+0B,EAAK32B,QAAUkiT,EAAO/qF,QAAS+qF,EAAQvrR,GAAO3U,MAAOpgB,IAAW,CAE3E,GAEK6/S,EAAQmhB,UACb1gB,EAAOiiB,SAAU9/S,MAAOtf,IAAM,SAAU4xB,GACvC,OAAwC,OAAjCA,EAAK8uB,aAAc,SAAqB,KAAO9uB,EAAK/0B,KAC5D,EAEF,IAMA,IAAIge,GAAWjb,EAAOib,SAElBgiS,GAAQ,CAAEl5M,KAAM/kG,KAAK49D,OAErB8iQ,GAAW,KAKfniB,EAAOoiB,SAAW,SAAUp6T,GAC3B,IAAIw/S,EAAK6a,EACT,IAAMr6T,GAAwB,kBAATA,EACpB,OAAO,KAKR,IACCw/S,GAAQ,IAAI/kT,EAAO6/T,WAAcC,gBAAiBv6T,EAAM,WACzD,CAAE,MAAQpK,GAAK,CAYf,OAVAykU,EAAkB7a,GAAOA,EAAIx0R,qBAAsB,eAAiB,GAC9Dw0R,IAAO6a,GACZriB,EAAOz8S,MAAO,iBACb8+T,EACCriB,EAAO/9S,IAAKogU,EAAgBp8P,YAAY,SAAUzqB,GACjD,OAAOA,EAAGytB,WACX,IAAI7/C,KAAM,MACVphB,IAGIw/S,CACR,EAGA,IAAIgb,GAAc,kCACjBC,GAA0B,SAAU7kU,GACnCA,EAAEutE,iBACH,EAED60O,EAAOlvR,OAAQkvR,EAAO97S,MAAO,CAE5B+zC,QAAS,SAAU/zC,EAAO8D,EAAMysB,EAAMiuS,GAErC,IAAIp7S,EAAGiP,EAAK8pE,EAAKsiO,EAAYC,EAAQnxQ,EAAQu8P,EAAS6U,EACrDC,EAAY,CAAEruS,GAAQ1P,GACtBtoB,EAAOggT,EAAO56R,KAAM3d,EAAO,QAAWA,EAAMzH,KAAOyH,EACnDgwT,EAAazX,EAAO56R,KAAM3d,EAAO,aAAgBA,EAAMg9S,UAAU9qS,MAAO,KAAQ,GAKjF,GAHAmgB,EAAMssS,EAAcxiO,EAAM5rE,EAAOA,GAAQ1P,EAGlB,IAAlB0P,EAAKgnB,UAAoC,IAAlBhnB,EAAKgnB,WAK5B+mR,GAAYv4S,KAAMxtB,EAAOujT,EAAO97S,MAAMkwT,aAItC33T,EAAKgc,QAAS,MAAS,IAG3By7S,EAAaz3T,EAAK2Z,MAAO,KACzB3Z,EAAOy3T,EAAWtnS,QAClBsnS,EAAWhtS,QAEZ07S,EAASnmU,EAAKgc,QAAS,KAAQ,GAAK,KAAOhc,GAG3CyH,EAAQA,EAAO87S,EAAOW,SACrBz8S,EACA,IAAI87S,EAAOruR,MAAOl1B,EAAuB,kBAAVyH,GAAsBA,IAGhDulC,UAAYi5R,EAAe,EAAI,EACrCx+T,EAAMg9S,UAAYgT,EAAW9qS,KAAM,KACnCllB,EAAM+wT,WAAa/wT,EAAMg9S,UACxB,IAAI/1R,OAAQ,UAAY+oS,EAAW9qS,KAAM,iBAAoB,WAC7D,KAGDllB,EAAM3C,YAASlE,EACT6G,EAAMo8C,SACXp8C,EAAMo8C,OAAS7rB,GAIhBzsB,EAAe,MAARA,EACN,CAAE9D,GACF87S,EAAOgB,UAAWh5S,EAAM,CAAE9D,IAG3B8pT,EAAUhO,EAAO97S,MAAM8pT,QAASvxT,IAAU,CAAC,EACrCimU,IAAgB1U,EAAQ/1Q,UAAmD,IAAxC+1Q,EAAQ/1Q,QAAQ52B,MAAOoT,EAAMzsB,IAAtE,CAMA,IAAM06T,IAAiB1U,EAAQuH,WAAa/V,EAAU/qR,GAAS,CAM9D,IAJAkuS,EAAa3U,EAAQ6F,cAAgBp3T,EAC/B+lU,GAAYv4S,KAAM04S,EAAalmU,KACpC85B,EAAMA,EAAI9D,YAEH8D,EAAKA,EAAMA,EAAI9D,WACtBqwS,EAAUlhU,KAAM20B,GAChB8pE,EAAM9pE,EAIF8pE,KAAU5rE,EAAK0jO,eAAiBpzO,IACpC+9S,EAAUlhU,KAAMy+F,EAAIr7E,aAAeq7E,EAAI0iO,cAAgBtgU,EAEzD,CAIA,IADA6kB,EAAI,GACMiP,EAAMusS,EAAWx7S,QAAYpjB,EAAM8wT,wBAC5C6N,EAActsS,EACdryB,EAAMzH,KAAO6qB,EAAI,EAChBq7S,EACA3U,EAAQqG,UAAY53T,GAGrBg1D,GAAW0+P,GAASttT,IAAK0zB,EAAK,WAAcv1B,OAAOqhB,OAAQ,OAAUne,EAAMzH,OAC1E0zT,GAASttT,IAAK0zB,EAAK,YAEnBk7B,EAAOpwC,MAAOkV,EAAKvuB,IAIpBypD,EAASmxQ,GAAUrsS,EAAKqsS,KACTnxQ,EAAOpwC,OAAS4uS,GAAY15R,KAC1CryB,EAAM3C,OAASkwD,EAAOpwC,MAAOkV,EAAKvuB,IACZ,IAAjB9D,EAAM3C,QACV2C,EAAM2uD,kBA8CT,OA1CA3uD,EAAMzH,KAAOA,EAGPimU,GAAiBx+T,EAAMuxT,sBAEpBzH,EAAQ0E,WACqC,IAApD1E,EAAQ0E,SAASrxS,MAAOyhT,EAAU71S,MAAOjlB,KACzCioT,GAAYx7R,IAIPmuS,GAAU5nC,EAAYvmQ,EAAMh4B,MAAa+iT,EAAU/qR,MAGvD4rE,EAAM5rE,EAAMmuS,MAGXnuS,EAAMmuS,GAAW,MAIlB5iB,EAAO97S,MAAMkwT,UAAY33T,EAEpByH,EAAM8wT,wBACV6N,EAAY78S,iBAAkBvpB,EAAMgmU,IAGrChuS,EAAMh4B,KAEDyH,EAAM8wT,wBACV6N,EAAY58S,oBAAqBxpB,EAAMgmU,IAGxCziB,EAAO97S,MAAMkwT,eAAY/2T,EAEpBgjG,IACJ5rE,EAAMmuS,GAAWviO,IAMdn8F,EAAM3C,MAvFb,CAwFD,EAIA80T,SAAU,SAAU55T,EAAMg4B,EAAMvwB,GAC/B,IAAItG,EAAIoiT,EAAOlvR,OACd,IAAIkvR,EAAOruR,MACXztB,EACA,CACCzH,KAAMA,EACNk5T,aAAa,IAIf3V,EAAO97S,MAAM+zC,QAASr6C,EAAG,KAAM62B,EAChC,IAIDurR,EAAOp+R,GAAGkP,OAAQ,CAEjBmnB,QAAS,SAAUx7C,EAAMuL,GACxB,OAAOma,KAAKk+R,MAAM,WACjBL,EAAO97S,MAAM+zC,QAASx7C,EAAMuL,EAAMma,KACnC,GACD,EACA6gT,eAAgB,SAAUvmU,EAAMuL,GAC/B,IAAIysB,EAAOtS,KAAM,GACjB,GAAKsS,EACJ,OAAOurR,EAAO97S,MAAM+zC,QAASx7C,EAAMuL,EAAMysB,GAAM,EAEjD,IAID,IACCwuS,GAAW,QACXC,GAAQ,SACRC,GAAkB,wCAClBC,GAAe,qCAEhB,SAASC,GAAahgS,EAAQ5T,EAAK6zS,EAAahsR,GAC/C,IAAI/8C,EAEJ,GAAKq2B,MAAMC,QAASpB,GAGnBuwR,EAAOK,KAAM5wR,GAAK,SAAUnI,EAAGi5L,GACzB+iH,GAAeL,GAASh5S,KAAMoZ,GAGlCiU,EAAKjU,EAAQk9K,GAKb8iH,GACChgS,EAAS,KAAqB,kBAANk9K,GAAuB,MAALA,EAAYj5L,EAAI,IAAO,IACjEi5L,EACA+iH,EACAhsR,EAGH,SAEM,GAAMgsR,GAAiC,WAAlBxjB,EAAQrwR,GAUnC6nB,EAAKjU,EAAQ5T,QAPb,IAAMl1B,KAAQk1B,EACb4zS,GAAahgS,EAAS,IAAM9oC,EAAO,IAAKk1B,EAAKl1B,GAAQ+oU,EAAahsR,EAQrE,CAIA0oQ,EAAOt0M,MAAQ,SAAUtqF,EAAGkiT,GAC3B,IAAIjgS,EACHhkC,EAAI,GACJi4C,EAAM,SAAUn2C,EAAKoiU,GAGpB,IAAI7jU,EAAQs7R,EAAYuoC,GACvBA,IACAA,EAEDlkU,EAAGA,EAAEjF,QAAWwsG,mBAAoBzlG,GAAQ,IAC3CylG,mBAA6B,MAATlnG,EAAgB,GAAKA,EAC3C,EAED,GAAU,MAAL0hB,EACJ,MAAO,GAIR,GAAKwP,MAAMC,QAASzP,IAASA,EAAE6+R,SAAWD,EAAOj2M,cAAe3oF,GAG/D4+R,EAAOK,KAAMj/R,GAAG,WACfk2B,EAAKn1B,KAAK5nB,KAAM4nB,KAAKziB,MACtB,SAMA,IAAM2jC,KAAUjiB,EACfiiT,GAAahgS,EAAQjiB,EAAGiiB,GAAUigS,EAAahsR,GAKjD,OAAOj4C,EAAE+pB,KAAM,IAChB,EAEA42R,EAAOp+R,GAAGkP,OAAQ,CACjBwsQ,UAAW,WACV,OAAO0iB,EAAOt0M,MAAOvpF,KAAKqhT,iBAC3B,EACAA,eAAgB,WACf,OAAOrhT,KAAKlgB,KAAK,WAGhB,IAAI42C,EAAWmnQ,EAAO1qR,KAAMnT,KAAM,YAClC,OAAO02B,EAAWmnQ,EAAOgB,UAAWnoQ,GAAa12B,IAClD,IAAI7hB,QAAQ,WACX,IAAI7D,EAAO0lB,KAAK1lB,KAGhB,OAAO0lB,KAAK5nB,OAASylT,EAAQ79R,MAAO+zR,GAAI,cACvCktB,GAAan5S,KAAM9H,KAAK0qD,YAAes2P,GAAgBl5S,KAAMxtB,KAC3D0lB,KAAKrkB,UAAYs0T,GAAenoS,KAAMxtB,GAC1C,IAAIwF,KAAK,SAAUyuB,EAAI+D,GACtB,IAAI3U,EAAMkgS,EAAQ79R,MAAOrC,MAEzB,OAAY,MAAPA,EACG,KAGH8Q,MAAMC,QAAS/Q,GACZkgS,EAAO/9S,IAAK6d,GAAK,SAAUA,GACjC,MAAO,CAAEvlB,KAAMk6B,EAAKl6B,KAAMmF,MAAOogB,EAAIlH,QAASsqT,GAAO,QACtD,IAGM,CAAE3oU,KAAMk6B,EAAKl6B,KAAMmF,MAAOogB,EAAIlH,QAASsqT,GAAO,QACtD,IAAIrgU,KACL,IAID,IACC4gU,GAAM,OACNC,GAAQ,OACRC,GAAa,gBACbC,GAAW,6BAIXC,GAAa,iBACbC,GAAY,QAWZrF,GAAa,CAAC,EAOdsF,GAAa,CAAC,EAGdC,GAAW,KAAKlhU,OAAQ,KAGxBmhU,GAAel/S,EAASgO,cAAe,KAKxC,SAASmxS,GAA6BC,GAGrC,OAAO,SAAUC,EAAoBtnC,GAED,kBAAvBsnC,IACXtnC,EAAOsnC,EACPA,EAAqB,KAGtB,IAAI5xR,EACHlrB,EAAI,EACJ+8S,EAAYD,EAAmB5jU,cAAc+pB,MAAOmiS,IAAmB,GAExE,GAAK1xB,EAAY8B,GAGhB,KAAUtqP,EAAW6xR,EAAW/8S,MAGR,MAAlBkrB,EAAU,IACdA,EAAWA,EAAShzB,MAAO,IAAO,KAChC2kT,EAAW3xR,GAAa2xR,EAAW3xR,IAAc,IAAK/xB,QAASq8Q,KAI/DqnC,EAAW3xR,GAAa2xR,EAAW3xR,IAAc,IAAK5wC,KAAMk7R,EAIlE,CACD,CAGA,SAASwnC,GAA+BH,EAAWthT,EAASg8S,EAAiB0F,GAE5E,IAAIC,EAAY,CAAC,EAChBC,EAAqBN,IAAcJ,GAEpC,SAASW,EAASlyR,GACjB,IAAI43D,EAcJ,OAbAo6N,EAAWhyR,IAAa,EACxBwtQ,EAAOK,KAAM8jB,EAAW3xR,IAAc,IAAI,SAAUxnB,EAAG25S,GACtD,IAAIC,EAAsBD,EAAoB9hT,EAASg8S,EAAiB0F,GACxE,MAAoC,kBAAxBK,GACVH,GAAqBD,EAAWI,GAKtBH,IACDr6N,EAAWw6N,QADf,GAHN/hT,EAAQwhT,UAAU5jT,QAASmkT,GAC3BF,EAASE,IACF,EAIT,IACOx6N,CACR,CAEA,OAAOs6N,EAAS7hT,EAAQwhT,UAAW,MAAUG,EAAW,MAASE,EAAS,IAC3E,CAKA,SAASG,GAAYvkR,EAAQhvB,GAC5B,IAAInwB,EAAK8vB,EACR6zS,EAAc9kB,EAAO+kB,aAAaD,aAAe,CAAC,EAEnD,IAAM3jU,KAAOmwB,OACQj0B,IAAfi0B,EAAKnwB,MACP2jU,EAAa3jU,GAAQm/C,EAAWrvB,IAAUA,EAAO,CAAC,IAAS9vB,GAAQmwB,EAAKnwB,IAO5E,OAJK8vB,GACJ+uR,EAAOlvR,QAAQ,EAAMwvB,EAAQrvB,GAGvBqvB,CACR,CAhFA2jR,GAAatmT,KAAOD,GAASC,KAgP7BqiS,EAAOlvR,OAAQ,CAGdpiB,OAAQ,EAGRs2T,aAAc,CAAC,EACfC,KAAM,CAAC,EAEPF,aAAc,CACbp8T,IAAK+U,GAASC,KACdlhB,KAAM,MACNyoU,QAxRgB,4DAwRQj7S,KAAMvM,GAASm8Q,UACvCgJ,QAAQ,EACRpyL,aAAa,EACb1/D,OAAO,EACPC,YAAa,mDAcbm0R,QAAS,CACR,IAAKnB,GACL9pU,KAAM,aACNk+E,KAAM,YACNovO,IAAK,4BACL3oN,KAAM,qCAGPmqL,SAAU,CACTw+B,IAAK,UACLpvO,KAAM,SACNymB,KAAM,YAGPumO,eAAgB,CACf5d,IAAK,cACLttT,KAAM,eACN2kG,KAAM,gBAKPwmO,WAAY,CAGX,SAAU15Q,OAGV,aAAa,EAGb,YAAaltC,KAAKC,MAGlB,WAAYshS,EAAOoiB,UAOpB0C,YAAa,CACZn8T,KAAK,EACL1F,SAAS,IAOXqiU,UAAW,SAAUhlR,EAAQqnD,GAC5B,OAAOA,EAGNk9N,GAAYA,GAAYvkR,EAAQ0/P,EAAO+kB,cAAgBp9N,GAGvDk9N,GAAY7kB,EAAO+kB,aAAczkR,EACnC,EAEAilR,cAAerB,GAA6BzF,IAC5C+G,cAAetB,GAA6BH,IAG5C0B,KAAM,SAAU98T,EAAKka,GAGA,kBAARla,IACXka,EAAUla,EACVA,OAAMtL,GAIPwlB,EAAUA,GAAW,CAAC,EAEtB,IAAI6iT,EAGHC,EAGAC,EACAjzR,EAGAkzR,EAGAC,EAGA3W,EAGA4W,EAGAz+S,EAGA0+S,EAGA3mU,EAAI2gT,EAAOslB,UAAW,CAAC,EAAGziT,GAG1BojT,EAAkB5mU,EAAE4D,SAAW5D,EAG/B6mU,EAAqB7mU,EAAE4D,UACpBgjU,EAAgBxqR,UAAYwqR,EAAgBhmB,QAC9CD,EAAQimB,GACRjmB,EAAO97S,MAGRq7K,EAAWygI,EAAO/vM,WAClBk2N,EAAmBnmB,EAAO+M,UAAW,eAGrCqZ,EAAa/mU,EAAE+mU,YAAc,CAAC,EAG9BnzC,EAAiB,CAAC,EAClBozC,EAAsB,CAAC,EAGvBC,EAAW,WAGX/B,EAAQ,CACP9xR,WAAY,EAGZC,kBAAmB,SAAUvxC,GAC5B,IAAIopB,EACJ,GAAK4kS,EAAY,CAChB,IAAMx8Q,EAEL,IADAA,EAAkB,CAAC,EACTpoB,EAAQq5S,GAAS/wR,KAAM+yR,IAChCjzR,EAAiBpoB,EAAO,GAAI/pB,cAAgB,MACzCmyC,EAAiBpoB,EAAO,GAAI/pB,cAAgB,MAAS,IACrDsC,OAAQynB,EAAO,IAGpBA,EAAQooB,EAAiBxxC,EAAIX,cAAgB,IAC9C,CACA,OAAgB,MAAT+pB,EAAgB,KAAOA,EAAMnB,KAAM,KAC3C,EAGA0pB,sBAAuB,WACtB,OAAOq8Q,EAAYyW,EAAwB,IAC5C,EAGA1zR,iBAAkB,SAAU33C,EAAMmF,GAMjC,OALkB,MAAbyvT,IACJ50T,EAAO8rU,EAAqB9rU,EAAKiG,eAChC6lU,EAAqB9rU,EAAKiG,gBAAmBjG,EAC9C04R,EAAgB14R,GAASmF,GAEnByiB,IACR,EAGAylF,iBAAkB,SAAUnrG,GAI3B,OAHkB,MAAb0yT,IACJ9vT,EAAEknU,SAAW9pU,GAEP0lB,IACR,EAGAikT,WAAY,SAAUnkU,GACrB,IAAIwkF,EACJ,GAAKxkF,EACJ,GAAKktT,EAGJoV,EAAMz0N,OAAQ7tG,EAAKsiU,EAAM/mT,cAIzB,IAAMipE,KAAQxkF,EACbmkU,EAAY3/O,GAAS,CAAE2/O,EAAY3/O,GAAQxkF,EAAKwkF,IAInD,OAAOtkE,IACR,EAGAwwC,MAAO,SAAU5kC,GAChB,IAAIy4S,EAAYz4S,GAAcu4S,EAK9B,OAJKZ,GACJA,EAAU/yQ,MAAO6zQ,GAElBjnU,EAAM,EAAGinU,GACFrkT,IACR,GAmBF,GAfAo9J,EAASl2K,QAASk7T,GAKlBllU,EAAEsJ,MAAUA,GAAOtJ,EAAEsJ,KAAO+U,GAASC,MAAS,IAC5C/E,QAASkrT,GAAWpmT,GAASm8Q,SAAW,MAG1Cx6R,EAAE5C,KAAOomB,EAAQwwB,QAAUxwB,EAAQpmB,MAAQ4C,EAAEg0C,QAAUh0C,EAAE5C,KAGzD4C,EAAEglU,WAAchlU,EAAEmzC,UAAY,KAAMhyC,cAAc+pB,MAAOmiS,IAAmB,CAAE,IAGxD,MAAjBrtT,EAAEyuG,YAAsB,CAC5Bg4N,EAAY/gT,EAASgO,cAAe,KAKpC,IACC+yS,EAAUnoT,KAAOte,EAAEsJ,IAInBm9T,EAAUnoT,KAAOmoT,EAAUnoT,KAC3Bte,EAAEyuG,YAAcm2N,GAAapqC,SAAW,KAAOoqC,GAAa74N,OAC3D06N,EAAUjsC,SAAW,KAAOisC,EAAU16N,IACxC,CAAE,MAAQxtG,GAITyB,EAAEyuG,aAAc,CACjB,CACD,CAWA,GARKzuG,EAAE2I,MAAQ3I,EAAEoxG,aAAiC,kBAAXpxG,EAAE2I,OACxC3I,EAAE2I,KAAOg4S,EAAOt0M,MAAOrsG,EAAE2I,KAAM3I,EAAEikU,cAIlCgB,GAA+B7F,GAAYp/T,EAAGwjB,EAAS0hT,GAGlDpV,EACJ,OAAOoV,EA8ER,IAAMj9S,KAzENy+S,EAAc/lB,EAAO97S,OAAS7E,EAAEwjS,SAGQ,IAApBmd,EAAOtxS,UAC1BsxS,EAAO97S,MAAM+zC,QAAS,aAIvB54C,EAAE5C,KAAO4C,EAAE5C,KAAK8iB,cAGhBlgB,EAAEonU,YAAc5C,GAAW55S,KAAM5qB,EAAE5C,MAKnCkpU,EAAWtmU,EAAEsJ,IAAIiQ,QAAS8qT,GAAO,IAG3BrkU,EAAEonU,WAwBIpnU,EAAE2I,MAAQ3I,EAAEoxG,aACoD,KAAzEpxG,EAAE2xC,aAAe,IAAKv4B,QAAS,uCACjCpZ,EAAE2I,KAAO3I,EAAE2I,KAAK4Q,QAAS6qT,GAAK,OAvB9BuC,EAAW3mU,EAAEsJ,IAAI6W,MAAOmmT,EAASvrU,QAG5BiF,EAAE2I,OAAU3I,EAAEoxG,aAAiC,kBAAXpxG,EAAE2I,QAC1C29T,IAAcxD,GAAOl4S,KAAM07S,GAAa,IAAM,KAAQtmU,EAAE2I,YAGjD3I,EAAE2I,OAIO,IAAZ3I,EAAEmxG,QACNm1N,EAAWA,EAAS/sT,QAAS+qT,GAAY,MACzCqC,GAAa7D,GAAOl4S,KAAM07S,GAAa,IAAM,KAAQ,KAASjmB,GAAMl5M,OACnEw/N,GAIF3mU,EAAEsJ,IAAMg9T,EAAWK,GASf3mU,EAAEqnU,aACD1mB,EAAOglB,aAAcW,IACzBpB,EAAMryR,iBAAkB,oBAAqB8tQ,EAAOglB,aAAcW,IAE9D3lB,EAAOilB,KAAMU,IACjBpB,EAAMryR,iBAAkB,gBAAiB8tQ,EAAOilB,KAAMU,MAKnDtmU,EAAE2I,MAAQ3I,EAAEonU,aAAgC,IAAlBpnU,EAAE2xC,aAAyBnuB,EAAQmuB,cACjEuzR,EAAMryR,iBAAkB,eAAgB7yC,EAAE2xC,aAI3CuzR,EAAMryR,iBACL,SACA7yC,EAAEglU,UAAW,IAAOhlU,EAAE8lU,QAAS9lU,EAAEglU,UAAW,IAC3ChlU,EAAE8lU,QAAS9lU,EAAEglU,UAAW,KACA,MAArBhlU,EAAEglU,UAAW,GAAc,KAAOL,GAAW,WAAa,IAC7D3kU,EAAE8lU,QAAS,MAIF9lU,EAAEqd,QACZ6nT,EAAMryR,iBAAkB5qB,EAAGjoB,EAAEqd,QAAS4K,IAIvC,GAAKjoB,EAAE8yC,cAC+C,IAAnD9yC,EAAE8yC,WAAWtwB,KAAMokT,EAAiB1B,EAAOllU,IAAiB8vT,GAG9D,OAAOoV,EAAM5xQ,QAed,GAXA2zQ,EAAW,QAGXH,EAAiB7uR,IAAKj4C,EAAEwB,UACxB0jU,EAAMhlU,KAAMF,EAAEsnU,SACdpC,EAAMhgR,KAAMllD,EAAEkE,OAGdmiU,EAAYpB,GAA+BP,GAAY1kU,EAAGwjB,EAAS0hT,GAK5D,CASN,GARAA,EAAM9xR,WAAa,EAGdszR,GACJG,EAAmBjuR,QAAS,WAAY,CAAEssR,EAAOllU,IAI7C8vT,EACJ,OAAOoV,EAIHllU,EAAE0xC,OAAS1xC,EAAE+lP,QAAU,IAC3BygF,EAAepjU,EAAO4vB,YAAY,WACjCkyS,EAAM5xQ,MAAO,UACd,GAAGtzD,EAAE+lP,UAGN,IACC+pE,GAAY,EACZuW,EAAUx0R,KAAM+hP,EAAgB1zR,EACjC,CAAE,MAAQ3B,GAGT,GAAKuxT,EACJ,MAAMvxT,EAIP2B,GAAO,EAAG3B,EACX,CACD,MAlCC2B,GAAO,EAAG,gBAqCX,SAASA,EAAMie,EAAQopT,EAAkBC,EAAWnqT,GACnD,IAAIoqT,EAAWH,EAASpjU,EAAOgG,EAAUw9T,EACxCh5S,EAAa64S,EAGTzX,IAILA,GAAY,EAGP0W,GACJpjU,EAAO2vB,aAAcyzS,GAKtBH,OAAYroU,EAGZuoU,EAAwBlpT,GAAW,GAGnC6nT,EAAM9xR,WAAaj1B,EAAS,EAAI,EAAI,EAGpCspT,EAAYtpT,GAAU,KAAOA,EAAS,KAAkB,MAAXA,EAGxCqpT,IACJt9T,EA7lBJ,SAA8BlK,EAAGklU,EAAOsC,GAOvC,IALA,IAAIG,EAAIvqU,EAAMwqU,EAAeC,EAC5Bl+C,EAAW3pR,EAAE2pR,SACbq7C,EAAYhlU,EAAEglU,UAGY,MAAnBA,EAAW,IAClBA,EAAUz3S,aACEvvB,IAAP2pU,IACJA,EAAK3nU,EAAEknU,UAAYhC,EAAM7xR,kBAAmB,iBAK9C,GAAKs0R,EACJ,IAAMvqU,KAAQusR,EACb,GAAKA,EAAUvsR,IAAUusR,EAAUvsR,GAAOwtB,KAAM+8S,GAAO,CACtD3C,EAAU5jT,QAAShkB,GACnB,KACD,CAKF,GAAK4nU,EAAW,KAAOwC,EACtBI,EAAgB5C,EAAW,OACrB,CAGN,IAAM5nU,KAAQoqU,EAAY,CACzB,IAAMxC,EAAW,IAAOhlU,EAAEgmU,WAAY5oU,EAAO,IAAM4nU,EAAW,IAAQ,CACrE4C,EAAgBxqU,EAChB,KACD,CACMyqU,IACLA,EAAgBzqU,EAElB,CAGAwqU,EAAgBA,GAAiBC,CAClC,CAKA,GAAKD,EAIJ,OAHKA,IAAkB5C,EAAW,IACjCA,EAAU5jT,QAASwmT,GAEbJ,EAAWI,EAEpB,CAwiBeE,CAAqB9nU,EAAGklU,EAAOsC,KAIrCC,GACL9mB,EAAO/qF,QAAS,SAAU51N,EAAEglU,YAAe,GAC3CrkB,EAAO/qF,QAAS,OAAQ51N,EAAEglU,WAAc,IACxChlU,EAAEgmU,WAAY,eAAkB,WAAY,GAI7C97T,EA9iBH,SAAsBlK,EAAGkK,EAAUg7T,EAAOuC,GACzC,IAAIM,EAAO9hU,EAAS+hU,EAAMhnO,EAAK4+F,EAC9BomI,EAAa,CAAC,EAGdhB,EAAYhlU,EAAEglU,UAAU7kT,QAGzB,GAAK6kT,EAAW,GACf,IAAMgD,KAAQhoU,EAAEgmU,WACfA,EAAYgC,EAAK7mU,eAAkBnB,EAAEgmU,WAAYgC,GAOnD,IAHA/hU,EAAU++T,EAAUz3S,QAGZtnB,GAcP,GAZKjG,EAAE+lU,eAAgB9/T,KACtBi/T,EAAOllU,EAAE+lU,eAAgB9/T,IAAciE,IAIlC01L,GAAQ6nI,GAAaznU,EAAEioU,aAC5B/9T,EAAWlK,EAAEioU,WAAY/9T,EAAUlK,EAAEmzC,WAGtCysJ,EAAO35L,EACPA,EAAU++T,EAAUz3S,QAKnB,GAAiB,MAAZtnB,EAEJA,EAAU25L,OAGJ,GAAc,MAATA,GAAgBA,IAAS35L,EAAU,CAM9C,KAHA+hU,EAAOhC,EAAYpmI,EAAO,IAAM35L,IAAa+/T,EAAY,KAAO//T,IAI/D,IAAM8hU,KAAS/B,EAId,IADAhlO,EAAM+mO,EAAMhxT,MAAO,MACT,KAAQ9Q,IAGjB+hU,EAAOhC,EAAYpmI,EAAO,IAAM5+F,EAAK,KACpCglO,EAAY,KAAOhlO,EAAK,KACb,EAGG,IAATgnO,EACJA,EAAOhC,EAAY+B,IAGgB,IAAxB/B,EAAY+B,KACvB9hU,EAAU+6F,EAAK,GACfgkO,EAAU5jT,QAAS4/E,EAAK,KAEzB,KACD,CAMH,IAAc,IAATgnO,EAGJ,GAAKA,GAAQhoU,EAAEkoU,OACdh+T,EAAW89T,EAAM99T,QAEjB,IACCA,EAAW89T,EAAM99T,EAClB,CAAE,MAAQ3L,GACT,MAAO,CACNwK,MAAO,cACP7E,MAAO8jU,EAAOzpU,EAAI,sBAAwBqhM,EAAO,OAAS35L,EAE5D,CAGH,CAIF,MAAO,CAAE8C,MAAO,UAAWJ,KAAMuB,EAClC,CAgdci+T,CAAanoU,EAAGkK,EAAUg7T,EAAOuC,GAGvCA,GAGCznU,EAAEqnU,cACNK,EAAWxC,EAAM7xR,kBAAmB,oBAEnCstQ,EAAOglB,aAAcW,GAAaoB,IAEnCA,EAAWxC,EAAM7xR,kBAAmB,WAEnCstQ,EAAOilB,KAAMU,GAAaoB,IAKZ,MAAXvpT,GAA6B,SAAXne,EAAE5C,KACxBsxB,EAAa,YAGS,MAAXvQ,EACXuQ,EAAa,eAIbA,EAAaxkB,EAASnB,MACtBu+T,EAAUp9T,EAASvB,KAEnB8+T,IADAvjU,EAAQgG,EAAShG,UAMlBA,EAAQwqB,GACHvQ,GAAWuQ,IACfA,EAAa,QACRvQ,EAAS,IACbA,EAAS,KAMZ+mT,EAAM/mT,OAASA,EACf+mT,EAAMx2S,YAAe64S,GAAoB74S,GAAe,GAGnD+4S,EACJvnJ,EAAS4uI,YAAa8X,EAAiB,CAAEU,EAAS54S,EAAYw2S,IAE9DhlJ,EAAS8uI,WAAY4X,EAAiB,CAAE1B,EAAOx2S,EAAYxqB,IAI5DghU,EAAM6B,WAAYA,GAClBA,OAAa/oU,EAER0oU,GACJG,EAAmBjuR,QAAS6uR,EAAY,cAAgB,YACvD,CAAEvC,EAAOllU,EAAGynU,EAAYH,EAAUpjU,IAIpC4iU,EAAiBzY,SAAUuY,EAAiB,CAAE1B,EAAOx2S,IAEhDg4S,IACJG,EAAmBjuR,QAAS,eAAgB,CAAEssR,EAAOllU,MAG3C2gT,EAAOtxS,QAChBsxS,EAAO97S,MAAM+zC,QAAS,aAGzB,CAEA,OAAOssR,CACR,EAEAkD,QAAS,SAAU9+T,EAAKX,EAAM6rC,GAC7B,OAAOmsQ,EAAOn9S,IAAK8F,EAAKX,EAAM6rC,EAAU,OACzC,EAEA6zR,UAAW,SAAU/+T,EAAKkrC,GACzB,OAAOmsQ,EAAOn9S,IAAK8F,OAAKtL,EAAWw2C,EAAU,SAC9C,IAGDmsQ,EAAOK,KAAM,CAAE,MAAO,SAAU,SAAU3vR,EAAI2iB,GAC7C2sQ,EAAQ3sQ,GAAW,SAAU1qC,EAAKX,EAAM6rC,EAAUp3C,GAUjD,OAPKu+R,EAAYhzR,KAChBvL,EAAOA,GAAQo3C,EACfA,EAAW7rC,EACXA,OAAO3K,GAID2iT,EAAOylB,KAAMzlB,EAAOlvR,OAAQ,CAClCnoB,IAAKA,EACLlM,KAAM42C,EACNb,SAAU/1C,EACVuL,KAAMA,EACN2+T,QAAS9yR,GACPmsQ,EAAOj2M,cAAephG,IAASA,GACnC,CACD,IAEAq3S,EAAOulB,eAAe,SAAUlmU,GAC/B,IAAIioB,EACJ,IAAMA,KAAKjoB,EAAEqd,QACa,iBAApB4K,EAAE9mB,gBACNnB,EAAE2xC,YAAc3xC,EAAEqd,QAAS4K,IAAO,GAGrC,IAGA04R,EAAO4X,SAAW,SAAUjvT,EAAKka,EAASg9R,GACzC,OAAOG,EAAOylB,KAAM,CACnB98T,IAAKA,EAGLlM,KAAM,MACN+1C,SAAU,SACVg+D,OAAO,EACPz/D,OAAO,EACP8xP,QAAQ,EAKRwiC,WAAY,CACX,cAAe,WAAY,GAE5BiC,WAAY,SAAU/9T,GACrBy2S,EAAOe,WAAYx3S,EAAUsZ,EAASg9R,EACvC,GAEF,EAGAG,EAAOp+R,GAAGkP,OAAQ,CACjB62S,QAAS,SAAUvvP,GAClB,IAAI5K,EAyBJ,OAvBKrrD,KAAM,KACL64Q,EAAY5iN,KAChBA,EAAOA,EAAKv2D,KAAMM,KAAM,KAIzBqrD,EAAOwyO,EAAQ5nO,EAAMj2D,KAAM,GAAIg2O,eAAgBgsC,GAAI,GAAI9yQ,OAAO,GAEzDlP,KAAM,GAAIsQ,YACd+6C,EAAKrzB,aAAch4B,KAAM,IAG1BqrD,EAAKvrE,KAAK,WAGT,IAFA,IAAIwyB,EAAOtS,KAEHsS,EAAK2lB,mBACZ3lB,EAAOA,EAAK2lB,kBAGb,OAAO3lB,CACR,IAAI6lB,OAAQn4B,OAGNA,IACR,EAEAylT,UAAW,SAAUxvP,GACpB,OAAK4iN,EAAY5iN,GACTj2D,KAAKk+R,MAAM,SAAU/4R,GAC3B04R,EAAQ79R,MAAOylT,UAAWxvP,EAAKv2D,KAAMM,KAAMmF,GAC5C,IAGMnF,KAAKk+R,MAAM,WACjB,IAAItd,EAAOid,EAAQ79R,MAClB6mQ,EAAW+Z,EAAK/Z,WAEZA,EAAS5uR,OACb4uR,EAAS2+C,QAASvvP,GAGlB2qN,EAAKzoP,OAAQ89B,EAEf,GACD,EAEA5K,KAAM,SAAU4K,GACf,IAAIyvP,EAAiB7sC,EAAY5iN,GAEjC,OAAOj2D,KAAKk+R,MAAM,SAAU/4R,GAC3B04R,EAAQ79R,MAAOwlT,QAASE,EAAiBzvP,EAAKv2D,KAAMM,KAAMmF,GAAM8wD,EACjE,GACD,EAEA0vP,OAAQ,SAAUhtR,GAIjB,OAHA34B,KAAKqQ,OAAQsoB,GAAWgtQ,IAAK,QAASzH,MAAM,WAC3CL,EAAQ79R,MAAOm2S,YAAan2S,KAAK8jD,WAClC,IACO9jD,IACR,IAID69R,EAAOqG,KAAKrD,QAAQ39L,OAAS,SAAU5wF,GACtC,OAAQurR,EAAOqG,KAAKrD,QAAQzyS,QAASkkB,EACtC,EACAurR,EAAOqG,KAAKrD,QAAQzyS,QAAU,SAAUkkB,GACvC,SAAWA,EAAKmlB,aAAenlB,EAAK2hC,cAAgB3hC,EAAKuyK,iBAAiB5sM,OAC3E,EAKA4lT,EAAO+kB,aAAavmO,IAAM,WACzB,IACC,OAAO,IAAI/7F,EAAO4uC,cACnB,CAAE,MAAQzzC,GAAK,CAChB,EAEA,IAAImqU,GAAmB,CAGrB,EAAG,IAIH,KAAM,KAEPC,GAAehoB,EAAO+kB,aAAavmO,MAEpC+gN,EAAQ0oB,OAASD,IAAkB,oBAAqBA,GACxDzoB,EAAQkmB,KAAOuC,KAAiBA,GAEhChoB,EAAOwlB,eAAe,SAAU3iT,GAC/B,IAAIgxB,EAAUq0R,EAGd,GAAK3oB,EAAQ0oB,MAAQD,KAAiBnlT,EAAQirF,YAC7C,MAAO,CACN58D,KAAM,SAAUx0B,EAAS7b,GACxB,IAAIymB,EACHk3E,EAAM37E,EAAQ27E,MAWf,GATAA,EAAI97F,KACHmgB,EAAQpmB,KACRomB,EAAQla,IACRka,EAAQkuB,MACRluB,EAAQuwQ,SACRvwQ,EAAQzI,UAIJyI,EAAQslT,UACZ,IAAM7gT,KAAKzE,EAAQslT,UAClB3pO,EAAKl3E,GAAMzE,EAAQslT,UAAW7gT,GAmBhC,IAAMA,KAdDzE,EAAQ0jT,UAAY/nO,EAAIoJ,kBAC5BpJ,EAAIoJ,iBAAkB/kF,EAAQ0jT,UAQzB1jT,EAAQirF,aAAgBpxF,EAAS,sBACtCA,EAAS,oBAAuB,kBAItBA,EACV8hF,EAAItsD,iBAAkB5qB,EAAG5K,EAAS4K,IAInCusB,EAAW,SAAUp3C,GACpB,OAAO,WACDo3C,IACJA,EAAWq0R,EAAgB1pO,EAAI/sD,OAC9B+sD,EAAIzsD,QAAUysD,EAAI3sD,QAAU2sD,EAAIo1L,UAC/Bp1L,EAAIltD,mBAAqB,KAEb,UAAT70C,EACJ+hG,EAAI7rC,QACgB,UAATl2D,EAKgB,kBAAf+hG,EAAIhhF,OACf3c,EAAU,EAAG,SAEbA,EAGC29F,EAAIhhF,OACJghF,EAAIzwE,YAINltB,EACCknU,GAAkBvpO,EAAIhhF,SAAYghF,EAAIhhF,OACtCghF,EAAIzwE,WAK+B,UAAjCywE,EAAI7qD,cAAgB,SACM,kBAArB6qD,EAAIjsD,aACV,CAAE61R,OAAQ5pO,EAAIj1F,UACd,CAAErP,KAAMskG,EAAIjsD,cACbisD,EAAI1rD,yBAIR,CACD,EAGA0rD,EAAI/sD,OAASoC,IACbq0R,EAAgB1pO,EAAIzsD,QAAUysD,EAAIo1L,UAAY//O,EAAU,cAKnCx2C,IAAhBmhG,EAAI3sD,QACR2sD,EAAI3sD,QAAUq2R,EAEd1pO,EAAIltD,mBAAqB,WAGA,IAAnBktD,EAAI/rD,YAMRhwC,EAAO4vB,YAAY,WACbwhB,GACJq0R,GAEF,GAEF,EAIDr0R,EAAWA,EAAU,SAErB,IAGC2qD,EAAIttD,KAAMruB,EAAQ4jT,YAAc5jT,EAAQ7a,MAAQ,KACjD,CAAE,MAAQpK,GAGT,GAAKi2C,EACJ,MAAMj2C,CAER,CACD,EAEA+0D,MAAO,WACD9e,GACJA,GAEF,EAGH,IAMAmsQ,EAAOulB,eAAe,SAAUlmU,GAC1BA,EAAEyuG,cACNzuG,EAAE2pR,SAASxuO,QAAS,EAEtB,IAGAwlQ,EAAOslB,UAAW,CACjBH,QAAS,CACR3qR,OAAQ,6FAGTwuO,SAAU,CACTxuO,OAAQ,2BAET6qR,WAAY,CACX,cAAe,SAAUnrU,GAExB,OADA8lT,EAAOe,WAAY7mT,GACZA,CACR,KAKF8lT,EAAOulB,cAAe,UAAU,SAAUlmU,QACxBhC,IAAZgC,EAAEmxG,QACNnxG,EAAEmxG,OAAQ,GAENnxG,EAAEyuG,cACNzuG,EAAE5C,KAAO,MAEX,IAGAujT,EAAOwlB,cAAe,UAAU,SAAUnmU,GAIxC,IAAIm7C,EAAQ3G,EADb,GAAKx0C,EAAEyuG,aAAezuG,EAAEgpU,YAEvB,MAAO,CACNn3R,KAAM,SAAUlmB,EAAGnqB,GAClB25C,EAASwlQ,EAAQ,YACf53O,KAAM/oE,EAAEgpU,aAAe,CAAC,GACxB/yS,KAAM,CAAEgzS,QAASjpU,EAAEkpU,cAAej3S,IAAKjyB,EAAEsJ,MACzC+/B,GAAI,aAAcmL,EAAW,SAAUge,GACvCrX,EAAO1C,SACPjE,EAAW,KACNge,GACJhxD,EAAuB,UAAbgxD,EAAIp1D,KAAmB,IAAM,IAAKo1D,EAAIp1D,KAElD,GAGDsoB,EAAS01B,KAAKnnB,YAAaknB,EAAQ,GACpC,EACAmY,MAAO,WACD9e,GACJA,GAEF,EAGH,IAKA,IAAI20R,GAAe,GAClBC,GAAS,oBAGVzoB,EAAOslB,UAAW,CACjBh3N,MAAO,WACPo6N,cAAe,WACd,IAAI70R,EAAW20R,GAAav7S,OAAW+yR,EAAOW,QAAU,IAAQjB,GAAMl5M,OAEtE,OADArkF,KAAM0xB,IAAa,EACZA,CACR,IAIDmsQ,EAAOulB,cAAe,cAAc,SAAUlmU,EAAGspU,EAAkBpE,GAElE,IAAIqE,EAAcC,EAAaC,EAC9BC,GAAuB,IAAZ1pU,EAAEivG,QAAqBm6N,GAAOx+S,KAAM5qB,EAAEsJ,KAChD,MACkB,kBAAXtJ,EAAE2I,MAE6C,KADnD3I,EAAE2xC,aAAe,IACjBv4B,QAAS,sCACXgwT,GAAOx+S,KAAM5qB,EAAE2I,OAAU,QAI5B,GAAK+gU,GAAiC,UAArB1pU,EAAEglU,UAAW,GA8D7B,OA3DAuE,EAAevpU,EAAEqpU,cAAgB1tC,EAAY37R,EAAEqpU,eAC9CrpU,EAAEqpU,gBACFrpU,EAAEqpU,cAGEK,EACJ1pU,EAAG0pU,GAAa1pU,EAAG0pU,GAAWnwT,QAAS6vT,GAAQ,KAAOG,IAC/B,IAAZvpU,EAAEivG,QACbjvG,EAAEsJ,MAASw5T,GAAOl4S,KAAM5qB,EAAEsJ,KAAQ,IAAM,KAAQtJ,EAAEivG,MAAQ,IAAMs6N,GAIjEvpU,EAAEgmU,WAAY,eAAkB,WAI/B,OAHMyD,GACL9oB,EAAOz8S,MAAOqlU,EAAe,mBAEvBE,EAAmB,EAC3B,EAGAzpU,EAAEglU,UAAW,GAAM,OAGnBwE,EAAcpmU,EAAQmmU,GACtBnmU,EAAQmmU,GAAiB,WACxBE,EAAoBtoT,SACrB,EAGA+jT,EAAMz0N,QAAQ,gBAGQzyG,IAAhBwrU,EACJ7oB,EAAQv9S,GAASg/T,WAAYmH,GAI7BnmU,EAAQmmU,GAAiBC,EAIrBxpU,EAAGupU,KAGPvpU,EAAEqpU,cAAgBC,EAAiBD,cAGnCF,GAAa5mU,KAAMgnU,IAIfE,GAAqB9tC,EAAY6tC,IACrCA,EAAaC,EAAmB,IAGjCA,EAAoBD,OAAcxrU,CACnC,IAGO,QAET,IAUAkiT,EAAQypB,mBAAuB,WAC9B,IAAI11R,EAAOvuB,EAAS80R,eAAemvB,mBAAoB,IAAK11R,KAE5D,OADAA,EAAK5f,UAAY,6BACiB,IAA3B4f,EAAK2yB,WAAW7rE,MACxB,CAJ+B,GAW/B4lT,EAAO+L,UAAY,SAAU/jT,EAAM/E,EAASgmU,GAC3C,MAAqB,kBAATjhU,EACJ,IAEgB,mBAAZ/E,IACXgmU,EAAchmU,EACdA,GAAU,GAKLA,IAIAs8S,EAAQypB,qBAMZpjT,GALA3iB,EAAU8hB,EAAS80R,eAAemvB,mBAAoB,KAKvCj2S,cAAe,SACzBpV,KAAOoH,EAASrH,SAASC,KAC9B1a,EAAQw3C,KAAKnnB,YAAa1N,IAE1B3iB,EAAU8hB,GAKZkuS,GAAWgW,GAAe,IAD1Bj8N,EAAS2+M,EAAW94Q,KAAM7qC,IAKlB,CAAE/E,EAAQ8vB,cAAei6E,EAAQ,MAGzCA,EAASgmN,GAAe,CAAEhrT,GAAQ/E,EAASgwT,GAEtCA,GAAWA,EAAQ74T,QACvB4lT,EAAQiT,GAAUn7Q,SAGZkoQ,EAAO3vR,MAAO,GAAI28E,EAAO/mC,cAlChC,IAAIrgD,EAAMonF,EAAQimN,CAmCnB,EAMAjT,EAAOp+R,GAAGs8C,KAAO,SAAUv1D,EAAK8hB,EAAQopB,GACvC,IAAIiH,EAAUr+C,EAAM8M,EACnBw5R,EAAO5gR,KACP4mB,EAAMpgC,EAAI8P,QAAS,KAsDpB,OApDKswB,GAAO,IACX+R,EAAWwmR,GAAkB34T,EAAI6W,MAAOupB,IACxCpgC,EAAMA,EAAI6W,MAAO,EAAGupB,IAIhBiyP,EAAYvwQ,IAGhBopB,EAAWppB,EACXA,OAASptB,GAGEotB,GAA4B,kBAAXA,IAC5BhuB,EAAO,QAIHsmS,EAAK3oS,OAAS,GAClB4lT,EAAOylB,KAAM,CACZ98T,IAAKA,EAKLlM,KAAMA,GAAQ,MACd+1C,SAAU,OACVxqC,KAAMyiB,IACHlrB,MAAM,SAAUgzC,GAGnBhpC,EAAWiX,UAEXuiR,EAAK3qN,KAAMt9B,EAIVklQ,EAAQ,SAAU1lQ,OAAQ0lQ,EAAO+L,UAAWx5Q,IAAiBtnC,KAAM6vC,GAGnEvI,EAKF,IAAIu9D,OAAQj8D,GAAY,SAAU0wR,EAAO/mT,GACxCulR,EAAKsd,MAAM,WACVxsQ,EAASxyB,MAAOc,KAAM5Y,GAAY,CAAEg7T,EAAMhyR,aAAc/0B,EAAQ+mT,GACjE,GACD,GAGMpiT,IACR,EAKA69R,EAAOqG,KAAKrD,QAAQkmB,SAAW,SAAUz0S,GACxC,OAAOurR,EAAOO,KAAMP,EAAOggB,QAAQ,SAAUp+S,GAC5C,OAAO6S,IAAS7S,EAAG6S,IACpB,IAAIr6B,MACL,EAKA4lT,EAAO56P,OAAS,CACf+jR,UAAW,SAAU10S,EAAM5R,EAASyE,GACnC,IAAI8hT,EAAaC,EAASC,EAAWC,EAAQC,EAAWC,EACvDn1Q,EAAW0rP,EAAOl5G,IAAKryK,EAAM,YAC7Bi1S,EAAU1pB,EAAQvrR,GAClBnwB,EAAQ,CAAC,EAGQ,WAAbgwD,IACJ7/B,EAAKilB,MAAM4a,SAAW,YAGvBk1Q,EAAYE,EAAQtkR,SACpBkkR,EAAYtpB,EAAOl5G,IAAKryK,EAAM,OAC9Bg1S,EAAazpB,EAAOl5G,IAAKryK,EAAM,SACI,aAAb6/B,GAAwC,UAAbA,KAC9Cg1Q,EAAYG,GAAahxT,QAAS,SAAY,GAMhD8wT,GADAH,EAAcM,EAAQp1Q,YACDvO,IACrBsjR,EAAUD,EAAYvjR,OAGtB0jR,EAASnhS,WAAYkhS,IAAe,EACpCD,EAAUjhS,WAAYqhS,IAAgB,GAGlCzuC,EAAYn4Q,KAGhBA,EAAUA,EAAQhB,KAAM4S,EAAMnN,EAAG04R,EAAOlvR,OAAQ,CAAC,EAAG04S,KAGjC,MAAf3mT,EAAQkjC,MACZzhD,EAAMyhD,IAAQljC,EAAQkjC,IAAMyjR,EAAUzjR,IAAQwjR,GAE1B,MAAhB1mT,EAAQgjC,OACZvhD,EAAMuhD,KAAShjC,EAAQgjC,KAAO2jR,EAAU3jR,KAASwjR,GAG7C,UAAWxmT,EACfA,EAAQgtF,MAAMhuF,KAAM4S,EAAMnwB,GAG1BolU,EAAQ5iI,IAAKxiM,EAEf,GAGD07S,EAAOp+R,GAAGkP,OAAQ,CAGjBs0B,OAAQ,SAAUviC,GAGjB,GAAKrC,UAAUpmB,OACd,YAAmBiD,IAAZwlB,EACNV,KACAA,KAAKk+R,MAAM,SAAU/4R,GACpB04R,EAAO56P,OAAO+jR,UAAWhnT,KAAMU,EAASyE,EACzC,IAGF,IAAIovC,EAAMi0M,EACTl2O,EAAOtS,KAAM,GAEd,OAAMsS,EAQAA,EAAKuyK,iBAAiB5sM,QAK5Bs8D,EAAOjiC,EAAK4wB,wBACZslN,EAAMl2O,EAAK0jO,cAAcnzO,YAClB,CACN+gC,IAAK2Q,EAAK3Q,IAAM4kN,EAAIt0M,YACpBxQ,KAAM6Q,EAAK7Q,KAAO8kN,EAAIr0M,cARf,CAAEvQ,IAAK,EAAGF,KAAM,QATxB,CAmBD,EAIAyO,SAAU,WACT,GAAMnyC,KAAM,GAAZ,CAIA,IAAI2yC,EAAc1P,EAAQy6P,EACzBprR,EAAOtS,KAAM,GACb4kM,EAAe,CAAEhhK,IAAK,EAAGF,KAAM,GAGhC,GAAwC,UAAnCm6P,EAAOl5G,IAAKryK,EAAM,YAGtB2wB,EAAS3wB,EAAK4wB,4BAER,CAON,IANAD,EAASjjC,KAAKijC,SAIdy6P,EAAMprR,EAAK0jO,cACXrjM,EAAergC,EAAKqgC,cAAgB+qP,EAAIj6P,gBAChCkP,IACLA,IAAiB+qP,EAAIvsQ,MAAQwhB,IAAiB+qP,EAAIj6P,kBACT,WAA3Co6P,EAAOl5G,IAAKhyI,EAAc,aAE1BA,EAAeA,EAAariC,WAExBqiC,GAAgBA,IAAiBrgC,GAAkC,IAA1BqgC,EAAarZ,YAG1DsrK,EAAei5F,EAAQlrP,GAAe1P,UACzBW,KAAOi6P,EAAOl5G,IAAKhyI,EAAc,kBAAkB,GAChEiyJ,EAAalhK,MAAQm6P,EAAOl5G,IAAKhyI,EAAc,mBAAmB,GAEpE,CAGA,MAAO,CACN/O,IAAKX,EAAOW,IAAMghK,EAAahhK,IAAMi6P,EAAOl5G,IAAKryK,EAAM,aAAa,GACpEoxB,KAAMT,EAAOS,KAAOkhK,EAAalhK,KAAOm6P,EAAOl5G,IAAKryK,EAAM,cAAc,GArCzE,CAuCD,EAYAqgC,aAAc,WACb,OAAO3yC,KAAKlgB,KAAK,WAGhB,IAFA,IAAI6yD,EAAe3yC,KAAK2yC,aAEhBA,GAA2D,WAA3CkrP,EAAOl5G,IAAKhyI,EAAc,aACjDA,EAAeA,EAAaA,aAG7B,OAAOA,GAAgBlP,EACxB,GACD,IAIDo6P,EAAOK,KAAM,CAAE76P,WAAY,cAAeG,UAAW,gBAAiB,SAAUtS,EAAQ/d,GACvF,IAAIywB,EAAM,gBAAkBzwB,EAE5B0qR,EAAOp+R,GAAIyxB,GAAW,SAAUvzB,GAC/B,OAAOyvS,GAAQptS,MAAM,SAAUsS,EAAM4e,EAAQvzB,GAG5C,IAAI6qP,EAOJ,GANK60C,EAAU/qR,GACdk2O,EAAMl2O,EACuB,IAAlBA,EAAKgnB,WAChBkvN,EAAMl2O,EAAKzP,kBAGC3nB,IAARyiB,EACJ,OAAO6qP,EAAMA,EAAKr1O,GAASb,EAAM4e,GAG7Bs3N,EACJA,EAAIh7K,SACF5pC,EAAY4kN,EAAIr0M,YAAVx2C,EACPimC,EAAMjmC,EAAM6qP,EAAIt0M,aAIjB5hC,EAAM4e,GAAWvzB,CAEnB,GAAGuzB,EAAQvzB,EAAKU,UAAUpmB,OAC3B,CACD,IAQA4lT,EAAOK,KAAM,CAAE,MAAO,SAAU,SAAU3vR,EAAI4E,GAC7C0qR,EAAOgc,SAAU1mS,GAAS4jS,GAAc3Z,EAAQ2a,eAC/C,SAAUzlS,EAAMskS,GACf,GAAKA,EAIJ,OAHAA,EAAWD,GAAQrkS,EAAMa,GAGlBmjS,GAAUxuS,KAAM8uS,GACtB/Y,EAAQvrR,GAAO6/B,WAAYh/B,GAAS,KACpCyjS,CAEH,GAEF,IAIA/Y,EAAOK,KAAM,CAAEspB,OAAQ,SAAUC,MAAO,UAAW,SAAUrvU,EAAMkC,GAClEujT,EAAOK,KAAM,CACZ3vP,QAAS,QAAUn2D,EACnBmuE,QAASjsE,EACT,GAAI,QAAUlC,IACZ,SAAUsvU,EAAcC,GAG1B9pB,EAAOp+R,GAAIkoT,GAAa,SAAUl2Q,EAAQl0D,GACzC,IAAI8vT,EAAYhvS,UAAUpmB,SAAYyvU,GAAkC,mBAAXj2Q,GAC5D8nQ,EAAQmO,KAA6B,IAAXj2Q,IAA6B,IAAVl0D,EAAiB,SAAW,UAE1E,OAAO6vT,GAAQptS,MAAM,SAAUsS,EAAMh4B,EAAMiD,GAC1C,IAAImgT,EAEJ,OAAKL,EAAU/qR,GAGyB,IAAhCq1S,EAASrxT,QAAS,SACxBgc,EAAM,QAAUl6B,GAChBk6B,EAAK1P,SAAS6gC,gBAAiB,SAAWrrD,GAIrB,IAAlBk6B,EAAKgnB,UACTokQ,EAAMprR,EAAKmxB,gBAIJ5hC,KAAK8e,IACXrO,EAAK6e,KAAM,SAAW/4C,GAAQslT,EAAK,SAAWtlT,GAC9Ck6B,EAAK6e,KAAM,SAAW/4C,GAAQslT,EAAK,SAAWtlT,GAC9CslT,EAAK,SAAWtlT,UAID8C,IAAVqC,EAGNsgT,EAAOl5G,IAAKryK,EAAMh4B,EAAMi/T,GAGxB1b,EAAOtmQ,MAAOjlB,EAAMh4B,EAAMiD,EAAOg8T,EACnC,GAAGj/T,EAAM+yT,EAAY57P,OAASv2D,EAAWmyT,EAC1C,CACD,GACD,IAGAxP,EAAOK,KAAM,CACZ,YACA,WACA,eACA,YACA,cACA,aACE,SAAU3vR,EAAIj0B,GAChBujT,EAAOp+R,GAAInlB,GAAS,SAAUmlB,GAC7B,OAAOO,KAAKumB,GAAIjsC,EAAMmlB,EACvB,CACD,IAKAo+R,EAAOp+R,GAAGkP,OAAQ,CAEjB3P,KAAM,SAAU41G,EAAO/uH,EAAM4Z,GAC5B,OAAOO,KAAKumB,GAAIquF,EAAO,KAAM/uH,EAAM4Z,EACpC,EACAgN,OAAQ,SAAUmoG,EAAOn1G,GACxB,OAAOO,KAAK4mB,IAAKguF,EAAO,KAAMn1G,EAC/B,EAEAmoT,SAAU,SAAUjvR,EAAUi8E,EAAO/uH,EAAM4Z,GAC1C,OAAOO,KAAKumB,GAAIquF,EAAOj8E,EAAU9yC,EAAM4Z,EACxC,EACAooT,WAAY,SAAUlvR,EAAUi8E,EAAOn1G,GAGtC,OAA4B,IAArBpB,UAAUpmB,OAChB+nB,KAAK4mB,IAAK+R,EAAU,MACpB34B,KAAK4mB,IAAKguF,EAAOj8E,GAAY,KAAMl5B,EACrC,EAEA05F,MAAO,SAAU2uN,EAAQC,GACxB,OAAO/nT,KACLumB,GAAI,aAAcuhS,GAClBvhS,GAAI,aAAcwhS,GAASD,EAC9B,IAGDjqB,EAAOK,KACN,wLAE4DjqS,MAAO,MACnE,SAAUsa,EAAIn2B,GAGbylT,EAAOp+R,GAAIrnB,GAAS,SAAUyN,EAAM4Z,GACnC,OAAOpB,UAAUpmB,OAAS,EACzB+nB,KAAKumB,GAAInuC,EAAM,KAAMyN,EAAM4Z,GAC3BO,KAAK81B,QAAS19C,EAChB,CACD,IAUD,IAAI4vU,GAAQ,sDAMZnqB,EAAOzyO,MAAQ,SAAU3rD,EAAI3e,GAC5B,IAAIo9F,EAAKjwF,EAAMm9D,EAUf,GARwB,kBAAZtqE,IACXo9F,EAAMz+E,EAAI3e,GACVA,EAAU2e,EACVA,EAAKy+E,GAKA26L,EAAYp5Q,GAalB,OARAxR,EAAOoP,EAAMqC,KAAMrB,UAAW,GAC9B+sD,EAAQ,WACP,OAAO3rD,EAAGP,MAAOpe,GAAWkf,KAAM/R,EAAKtN,OAAQ0c,EAAMqC,KAAMrB,YAC5D,EAGA+sD,EAAMi5B,KAAO5kF,EAAG4kF,KAAO5kF,EAAG4kF,MAAQw5M,EAAOx5M,OAElCj5B,CACR,EAEAyyO,EAAOoqB,UAAY,SAAUC,GACvBA,EACJrqB,EAAOoP,YAEPpP,EAAOjsR,OAAO,EAEhB,EACAisR,EAAOnvR,QAAUD,MAAMC,QACvBmvR,EAAOsqB,UAAY7rT,KAAKC,MACxBshS,EAAOnzO,SAAWA,EAClBmzO,EAAOhlB,WAAaA,EACpBglB,EAAOR,SAAWA,EAClBQ,EAAOgQ,UAAYA,GACnBhQ,EAAOvjT,KAAOqjT,EAEdE,EAAO3gP,IAAM59D,KAAK49D,IAElB2gP,EAAOuqB,UAAY,SAAU96S,GAK5B,IAAIhzB,EAAOujT,EAAOvjT,KAAMgzB,GACxB,OAAkB,WAAThzB,GAA8B,WAATA,KAK5Bw/B,MAAOxM,EAAM2Y,WAAY3Y,GAC5B,EAEAuwR,EAAO5iP,KAAO,SAAUljE,GACvB,OAAe,MAARA,EACN,IACEA,EAAO,IAAK0e,QAASuxT,GAAO,KAChC,OAoBG,KAFoB,EAAF,WACnB,OAAOnqB,CACN,UAFgB,OAEhB,aAMH,IAGCwqB,GAAU/nU,EAAOu9S,OAGjByqB,GAAKhoU,EAAOioU,EAwBb,OAtBA1qB,EAAO2qB,WAAa,SAAU15S,GAS7B,OARKxuB,EAAOioU,IAAM1qB,IACjBv9S,EAAOioU,EAAID,IAGPx5S,GAAQxuB,EAAOu9S,SAAWA,IAC9Bv9S,EAAOu9S,OAASwqB,IAGVxqB,CACR,EAKyB,qBAAbd,IACXz8S,EAAOu9S,OAASv9S,EAAOioU,EAAI1qB,GAMrBA,CACP,uCCz9UAh/S,OAAOs1C,eAAe3vC,EAAS,aAAc,CAC3CjH,OAAO,IAGT,IAAIugB,EAAe,WAAc,SAASkuG,EAAiB7tE,EAAQh8C,GAAS,IAAK,IAAIgjB,EAAI,EAAGA,EAAIhjB,EAAMlK,OAAQktB,IAAK,CAAE,IAAI+3B,EAAa/6C,EAAMgjB,GAAI+3B,EAAW/8B,WAAa+8B,EAAW/8B,aAAc,EAAO+8B,EAAW78B,cAAe,EAAU,UAAW68B,IAAYA,EAAW98B,UAAW,GAAMvhB,OAAOs1C,eAAegK,EAAQjB,EAAWl+C,IAAKk+C,EAAa,CAAE,CAAE,OAAO,SAAUqgP,EAAakrC,EAAYC,GAAiJ,OAA9HD,GAAYz8M,EAAiBuxK,EAAYl+Q,UAAWopT,GAAiBC,GAAa18M,EAAiBuxK,EAAamrC,GAAqBnrC,CAAa,CAAG,CAA7hB,GAEnB/4R,EAAQmkU,WA8DR,WACE,IAAIzsT,EAAU,IAAI0sT,EAElB,IACE,IAAIC,EAAW,SACf3sT,EAAQO,QAAQosT,EAAU,KAC1B,IAAItrU,EAAQ2e,EAAQC,QAAQ0sT,GAG5B,OAFA3sT,EAAQW,WAAWgsT,GAEF,MAAVtrU,CACT,CAAE,MAAO9B,GACP,OAAO,CACT,CACF,EAzEA,IAIgC6xB,EAJ5Bw7S,EAAUvkU,EAAQ,MAElBwkU,GAE4Bz7S,EAFMw7S,IAEex7S,EAAI07S,WAAa17S,EAAM,CAAElnB,QAASknB,GAIvF,IAAI4T,EAAS,MAET0nS,EAAgB,WAClB,SAASA,IACP,IAAIloT,EAAUrC,UAAUpmB,OAAS,QAAsBiD,IAAjBmjB,UAAU,GAAmBA,UAAU,GAAK,CAAC,GANvF,SAAyB5d,EAAU88R,GAAe,KAAM98R,aAAoB88R,GAAgB,MAAM,IAAI59Q,UAAU,oCAAwC,CAQpJ9B,CAAgBmC,KAAM4oT,GAEtB5oT,KAAKipT,cAAgBpqU,OAAOulB,OAAO,CAAEjC,KAAM,KAAOzB,GAClDwgB,OAA4BhmC,IAAnBwlB,EAAQwgB,OAAuBA,EAASxgB,EAAQwgB,MAC3D,CAsCA,OApCApjB,EAAa8qT,EAAe,CAAC,CAC3B5pU,IAAK,UACLzB,MAAO,SAAiByB,GACtB,IAAIuxR,EAAUw4C,EAAS3iU,QAAQmW,MAAMqG,SAASu0Q,QAC9C,OAAK5G,GAAYA,EAAQ9gQ,eAAeyR,EAASliC,GAG1CuxR,EAAQrvP,EAASliC,GAFf,IAGX,GACC,CACDA,IAAK,UACLzB,MAAO,SAAiByB,EAAKzB,GAE3B,OADAqlB,SAASu0Q,OAAS4xC,EAAS3iU,QAAQ+0R,UAAUj6P,EAASliC,EAAKzB,EAAOyiB,KAAKipT,eAChE1rU,CACT,GACC,CACDyB,IAAK,aACLzB,MAAO,SAAoByB,GACzB,IAAI0hB,EAAU7hB,OAAOulB,OAAO,CAAC,EAAGpE,KAAKipT,cAAe,CAAE3tC,QAAS,IAE/D,OADA14Q,SAASu0Q,OAAS4xC,EAAS3iU,QAAQ+0R,UAAUj6P,EAASliC,EAAK,GAAI0hB,GACxD,IACT,GACC,CACD1hB,IAAK,QACLzB,MAAO,WACL,IAAIgzR,EAAUw4C,EAAS3iU,QAAQmW,MAAMqG,SAASu0Q,QAC9C,IAAK,IAAIn4R,KAAOuxR,EACc,IAAxBvxR,EAAIsX,QAAQ4qB,IACdlhB,KAAKnD,WAAW7d,EAAI+iB,OAAOmf,EAAOjpC,SAItC,OAAO,IACT,KAGK2wU,CACT,CA/CoB,GAiDpBpkU,EAAAA,QAAkBokU,mCCnElB/pU,OAAOs1C,eAAe3vC,EAAS,aAAc,CAC3CjH,OAAO,IAGT,IAAIugB,EAAe,WAAc,SAASkuG,EAAiB7tE,EAAQh8C,GAAS,IAAK,IAAIgjB,EAAI,EAAGA,EAAIhjB,EAAMlK,OAAQktB,IAAK,CAAE,IAAI+3B,EAAa/6C,EAAMgjB,GAAI+3B,EAAW/8B,WAAa+8B,EAAW/8B,aAAc,EAAO+8B,EAAW78B,cAAe,EAAU,UAAW68B,IAAYA,EAAW98B,UAAW,GAAMvhB,OAAOs1C,eAAegK,EAAQjB,EAAWl+C,IAAKk+C,EAAa,CAAE,CAAE,OAAO,SAAUqgP,EAAakrC,EAAYC,GAAiJ,OAA9HD,GAAYz8M,EAAiBuxK,EAAYl+Q,UAAWopT,GAAiBC,GAAa18M,EAAiBuxK,EAAamrC,GAAqBnrC,CAAa,CAAG,CAA7hB,GAInB,IAAI2rC,EAAgB,WAClB,SAASA,KAHX,SAAyBzoU,EAAU88R,GAAe,KAAM98R,aAAoB88R,GAAgB,MAAM,IAAI59Q,UAAU,oCAAwC,CAIpJ9B,CAAgBmC,KAAMkpT,GAEtBlpT,KAAKsuS,MAAQ,CAAC,CAChB,CAwBA,OAtBAxwS,EAAaorT,EAAe,CAAC,CAC3BlqU,IAAK,UACLzB,MAAO,SAAiByB,GACtB,OAAOghB,KAAKsuS,MAAM7+R,eAAezwB,GAAOghB,KAAKsuS,MAAMtvT,GAAO,IAC5D,GACC,CACDA,IAAK,UACLzB,MAAO,SAAiByB,EAAKzB,GAC3B,OAAOyiB,KAAKsuS,MAAMtvT,GAAOwqD,OAAOjsD,EAClC,GACC,CACDyB,IAAK,aACLzB,MAAO,SAAoByB,GACzB,cAAcghB,KAAKsuS,MAAMtvT,EAC3B,GACC,CACDA,IAAK,QACLzB,MAAO,WACL,OAAOyiB,KAAKsuS,MAAQ,CAAC,CACvB,KAGK4a,CACT,CA9BoB,GAgCpB1kU,EAAAA,QAAkB0kU,qCCnClB,IAEIC,EAAgBC,EAFD7kU,EAAQ,MAMvB8kU,EAAkBD,EAFD7kU,EAAQ,OAMzB+kU,EAAkBF,EAFD7kU,EAAQ,OAI7B,SAAS6kU,EAAuB97S,GAAO,OAAOA,GAAOA,EAAI07S,WAAa17S,EAAM,CAAElnB,QAASknB,EAAO,CAE9F,IAAIpR,EAAU,KAIMA,GAFhB,EAAIitT,EAAc/iU,SAAS,gBAED9F,OAAOurD,cAC1B,EAAIs9Q,EAAc/iU,SAAS,kBAER9F,OAAOipU,gBAC1B,EAAIJ,EAAc/iU,SAAS,iBAER,IAAIijU,EAAgBjjU,QAGpB,IAAIkjU,EAAgBljU,QAGlD5B,EAAQ,GAAU0X,EAEIitT,EAAc/iU,QACZijU,EAAgBjjU,QAChBkjU,EAAgBljU,0CCvCxCvH,OAAOs1C,eAAe3vC,EAAS,aAAc,CAC3CjH,OAAO,IAETiH,EAAAA,QAiBA,WACE,IAAIpM,EAAOimB,UAAUpmB,OAAS,QAAsBiD,IAAjBmjB,UAAU,GAAmBA,UAAU,GAAK,eAE3EnC,EAAUstC,OAAOpxD,GAAMqe,QAAQ,YAAa,IAAIpY,cAEpD,GAAgB,UAAZ6d,EACF,OAAOstT,EAAW,gBAGpB,GAAgB,YAAZttT,EACF,OAAOstT,EAAW,kBAGpB,GAAgB,WAAZttT,EACF,OAAO,EAAIutT,EAAed,cAG5B,GAAgB,WAAZzsT,EACF,OAAO,EAGT,MAAM,IAAIlb,MAAM,mBAAqB5I,EAAO,wHAC9C,EArCA,IAAIqxU,EAAiBllU,EAAQ,MAEzBskU,EAAW,SAEf,SAASW,EAAWpxU,GAClB,IACE,IAAI8jB,EAAU5b,OAAOlI,GAGrB,OAFA8jB,EAAQO,QAAQosT,EAAU,KAC1B3sT,EAAQW,WAAWgsT,IACZ,CACT,CAAE,MAAOptU,GACP,OAAO,CACT,CACF,uBCpBA,IAIIwsS,EAJY1jS,EAAQ,KAIT0+R,CAHJ1+R,EAAQ,MAGY,YAE/B4gD,EAAO3gD,QAAUyjS,wBCNjB,IAAI7E,EAAY7+R,EAAQ,MACpB8+R,EAAa9+R,EAAQ,MACrB++R,EAAU/+R,EAAQ,MAClBg/R,EAAUh/R,EAAQ,MAClBi/R,EAAUj/R,EAAQ,MAStB,SAAS4+R,EAAKhB,GACZ,IAAIr7R,GAAS,EACT7O,EAAoB,MAAXkqS,EAAkB,EAAIA,EAAQlqS,OAG3C,IADA+nB,KAAK1E,UACIxU,EAAQ7O,GAAQ,CACvB,IAAIkT,EAAQg3R,EAAQr7R,GACpBkZ,KAAKH,IAAI1U,EAAM,GAAIA,EAAM,GAC3B,CACF,CAGAg4R,EAAK9jR,UAAU/D,MAAQ8nR,EACvBD,EAAK9jR,UAAkB,OAAIgkR,EAC3BF,EAAK9jR,UAAU3e,IAAM4iS,EACrBH,EAAK9jR,UAAUO,IAAM2jR,EACrBJ,EAAK9jR,UAAUQ,IAAM2jR,EAErBr+O,EAAO3gD,QAAU2+R,wBC/BjB,IAAIf,EAAiB79R,EAAQ,MACzB89R,EAAkB99R,EAAQ,MAC1B+9R,EAAe/9R,EAAQ,MACvBg+R,EAAeh+R,EAAQ,MACvBi+R,EAAej+R,EAAQ,MAS3B,SAAS29R,EAAUC,GACjB,IAAIr7R,GAAS,EACT7O,EAAoB,MAAXkqS,EAAkB,EAAIA,EAAQlqS,OAG3C,IADA+nB,KAAK1E,UACIxU,EAAQ7O,GAAQ,CACvB,IAAIkT,EAAQg3R,EAAQr7R,GACpBkZ,KAAKH,IAAI1U,EAAM,GAAIA,EAAM,GAC3B,CACF,CAGA+2R,EAAU7iR,UAAU/D,MAAQ8mR,EAC5BF,EAAU7iR,UAAkB,OAAIgjR,EAChCH,EAAU7iR,UAAU3e,IAAM4hS,EAC1BJ,EAAU7iR,UAAUO,IAAM2iR,EAC1BL,EAAU7iR,UAAUQ,IAAM2iR,EAE1Br9O,EAAO3gD,QAAU09R,wBC/BjB,IAII1iR,EAJYjb,EAAQ,KAId0+R,CAHC1+R,EAAQ,MAGO,OAE1B4gD,EAAO3gD,QAAUgb,wBCNjB,IAAIokR,EAAgBr/R,EAAQ,MACxBs/R,EAAiBt/R,EAAQ,MACzBu/R,EAAcv/R,EAAQ,MACtBw/R,EAAcx/R,EAAQ,MACtBy/R,EAAcz/R,EAAQ,MAS1B,SAASo/R,EAASxB,GAChB,IAAIr7R,GAAS,EACT7O,EAAoB,MAAXkqS,EAAkB,EAAIA,EAAQlqS,OAG3C,IADA+nB,KAAK1E,UACIxU,EAAQ7O,GAAQ,CACvB,IAAIkT,EAAQg3R,EAAQr7R,GACpBkZ,KAAKH,IAAI1U,EAAM,GAAIA,EAAM,GAC3B,CACF,CAGAw4R,EAAStkR,UAAU/D,MAAQsoR,EAC3BD,EAAStkR,UAAkB,OAAIwkR,EAC/BF,EAAStkR,UAAU3e,IAAMojS,EACzBH,EAAStkR,UAAUO,IAAMmkR,EACzBJ,EAAStkR,UAAUQ,IAAMmkR,EAEzB7+O,EAAO3gD,QAAUm/R,wBC/BjB,IAIIxoR,EAJY5W,EAAQ,KAIV0+R,CAHH1+R,EAAQ,MAGW,WAE9B4gD,EAAO3gD,QAAU2W,wBCNjB,IAIIoJ,EAJYhgB,EAAQ,KAId0+R,CAHC1+R,EAAQ,MAGO,OAE1B4gD,EAAO3gD,QAAU+f,uBCNjB,IAAIo/Q,EAAWp/R,EAAQ,MACnBmlU,EAAcnlU,EAAQ,MACtBolU,EAAcplU,EAAQ,MAU1B,SAASqlU,EAASnrU,GAChB,IAAIqI,GAAS,EACT7O,EAAmB,MAAVwG,EAAiB,EAAIA,EAAOxG,OAGzC,IADA+nB,KAAK8hR,SAAW,IAAI6B,IACX78R,EAAQ7O,GACf+nB,KAAKm1B,IAAI12C,EAAOqI,GAEpB,CAGA8iU,EAASvqT,UAAU81B,IAAMy0R,EAASvqT,UAAU5f,KAAOiqU,EACnDE,EAASvqT,UAAUO,IAAM+pT,EAEzBxkR,EAAO3gD,QAAUolU,wBC1BjB,IAAI1nC,EAAY39R,EAAQ,MACpB4/R,EAAa5/R,EAAQ,KACrB6/R,EAAc7/R,EAAQ,KACtB8/R,EAAW9/R,EAAQ,KACnB+/R,EAAW//R,EAAQ,MACnBggS,EAAWhgS,EAAQ,MASvB,SAAS2/R,EAAM/B,GACb,IAAIt8R,EAAOma,KAAK8hR,SAAW,IAAII,EAAUC,GACzCniR,KAAKs/E,KAAOz5F,EAAKy5F,IACnB,CAGA4kM,EAAM7kR,UAAU/D,MAAQ6oR,EACxBD,EAAM7kR,UAAkB,OAAI+kR,EAC5BF,EAAM7kR,UAAU3e,IAAM2jS,EACtBH,EAAM7kR,UAAUO,IAAM0kR,EACtBJ,EAAM7kR,UAAUQ,IAAM0kR,EAEtBp/O,EAAO3gD,QAAU0/R,wBC1BjB,IAGIl4Q,EAHOznB,EAAQ,MAGDynB,OAElBm5B,EAAO3gD,QAAUwnB,wBCLjB,IAGIioF,EAHO1vG,EAAQ,MAGG0vG,WAEtB9uD,EAAO3gD,QAAUyvG,wBCLjB,IAIIq0L,EAJY/jS,EAAQ,KAIV0+R,CAHH1+R,EAAQ,MAGW,WAE9B4gD,EAAO3gD,QAAU8jS,oBCejBnjP,EAAO3gD,QAZP,SAAmB26E,EAAOqlN,GAIxB,IAHA,IAAI19R,GAAS,EACT7O,EAAkB,MAATknF,EAAgB,EAAIA,EAAMlnF,SAE9B6O,EAAQ7O,IAC8B,IAAzCusS,EAASrlN,EAAMr4E,GAAQA,EAAOq4E,KAIpC,OAAOA,CACT,oBCKAh6B,EAAO3gD,QAfP,SAAqB26E,EAAOglB,GAM1B,IALA,IAAIr9F,GAAS,EACT7O,EAAkB,MAATknF,EAAgB,EAAIA,EAAMlnF,OACnC+uS,EAAW,EACX5nS,EAAS,KAEJ0H,EAAQ7O,GAAQ,CACvB,IAAIsF,EAAQ4hF,EAAMr4E,GACdq9F,EAAU5mG,EAAOuJ,EAAOq4E,KAC1B//E,EAAO4nS,KAAczpS,EAEzB,CACA,OAAO6B,CACT,wBCtBA,IAAI+mS,EAAY5hS,EAAQ,MACpBsgS,EAActgS,EAAQ,MACtBmqB,EAAUnqB,EAAQ,MAClBuxR,EAAWvxR,EAAQ,MACnB6hS,EAAU7hS,EAAQ,MAClBmhS,EAAenhS,EAAQ,MAMvBkrB,EAHc5wB,OAAOwgB,UAGQoQ,eAqCjC01B,EAAO3gD,QA3BP,SAAuBjH,EAAOsoS,GAC5B,IAAIC,EAAQp3Q,EAAQnxB,GAChBwoS,GAASD,GAASjB,EAAYtnS,GAC9ByoS,GAAUF,IAAUC,GAASjQ,EAASv4R,GACtC0oS,GAAUH,IAAUC,IAAUC,GAAUN,EAAanoS,GACrD2oS,EAAcJ,GAASC,GAASC,GAAUC,EAC1C7mS,EAAS8mS,EAAcC,EAAU5oS,EAAMtF,OAAQuxD,QAAU,GACzDvxD,EAASmH,EAAOnH,OAEpB,IAAK,IAAI+G,KAAOzB,GACTsoS,IAAap2Q,EAAe/P,KAAKniB,EAAOyB,IACvCknS,IAEQ,UAAPlnS,GAECgnS,IAAkB,UAAPhnS,GAA0B,UAAPA,IAE9BinS,IAAkB,UAAPjnS,GAA0B,cAAPA,GAA8B,cAAPA,IAEtDonS,EAAQpnS,EAAK/G,KAElBmH,EAAOK,KAAKT,GAGhB,OAAOI,CACT,oBC1BA+lD,EAAO3gD,QAXP,SAAkB26E,EAAOqlN,GAKvB,IAJA,IAAI19R,GAAS,EACT7O,EAAkB,MAATknF,EAAgB,EAAIA,EAAMlnF,OACnCmH,EAASqvB,MAAMx2B,KAEV6O,EAAQ7O,GACfmH,EAAO0H,GAAS09R,EAASrlN,EAAMr4E,GAAQA,EAAOq4E,GAEhD,OAAO//E,CACT,oBCCA+lD,EAAO3gD,QAXP,SAAmB26E,EAAO1gF,GAKxB,IAJA,IAAIqI,GAAS,EACT7O,EAASwG,EAAOxG,OAChBgrD,EAASk8B,EAAMlnF,SAEV6O,EAAQ7O,GACfknF,EAAMl8B,EAASn8C,GAASrI,EAAOqI,GAEjC,OAAOq4E,CACT,oBCQAh6B,EAAO3gD,QAbP,SAAqB26E,EAAOqlN,EAAUqlC,EAAaC,GACjD,IAAIhjU,GAAS,EACT7O,EAAkB,MAATknF,EAAgB,EAAIA,EAAMlnF,OAKvC,IAHI6xU,GAAa7xU,IACf4xU,EAAc1qP,IAAQr4E,MAEfA,EAAQ7O,GACf4xU,EAAcrlC,EAASqlC,EAAa1qP,EAAMr4E,GAAQA,EAAOq4E,GAE3D,OAAO0qP,CACT,oBCDA1kR,EAAO3gD,QAZP,SAAmB26E,EAAOglB,GAIxB,IAHA,IAAIr9F,GAAS,EACT7O,EAAkB,MAATknF,EAAgB,EAAIA,EAAMlnF,SAE9B6O,EAAQ7O,GACf,GAAIksG,EAAUhlB,EAAMr4E,GAAQA,EAAOq4E,GACjC,OAAO,EAGX,OAAO,CACT,oBCTAh6B,EAAO3gD,QAJP,SAAsB0yI,GACpB,OAAOA,EAAOjjI,MAAM,GACtB,mBCRA,IAAI81T,EAAc,4CAalB5kR,EAAO3gD,QAJP,SAAoB0yI,GAClB,OAAOA,EAAO9uH,MAAM2hT,IAAgB,EACtC,wBCZA,IAAItlC,EAAkBlgS,EAAQ,MAC1By9R,EAAKz9R,EAAQ,MAMbkrB,EAHc5wB,OAAOwgB,UAGQoQ,eAoBjC01B,EAAO3gD,QARP,SAAqBgwN,EAAQx1N,EAAKzB,GAChC,IAAI+vD,EAAWknK,EAAOx1N,GAChBywB,EAAe/P,KAAK80M,EAAQx1N,IAAQgjS,EAAG10O,EAAU/vD,UACxCrC,IAAVqC,GAAyByB,KAAOw1N,IACnCiwE,EAAgBjwE,EAAQx1N,EAAKzB,EAEjC,wBCzBA,IAAIykS,EAAKz9R,EAAQ,MAoBjB4gD,EAAO3gD,QAVP,SAAsB26E,EAAOngF,GAE3B,IADA,IAAI/G,EAASknF,EAAMlnF,OACZA,KACL,GAAI+pS,EAAG7iN,EAAMlnF,GAAQ,GAAI+G,GACvB,OAAO/G,EAGX,OAAQ,CACV,wBClBA,IAAIg5I,EAAa1sI,EAAQ,MACrBzF,EAAOyF,EAAQ,MAenB4gD,EAAO3gD,QAJP,SAAoBgwN,EAAQruN,GAC1B,OAAOquN,GAAUvjF,EAAW9qI,EAAQrH,EAAKqH,GAASquN,EACpD,wBCdA,IAAIvjF,EAAa1sI,EAAQ,MACrBsiS,EAAStiS,EAAQ,MAerB4gD,EAAO3gD,QAJP,SAAsBgwN,EAAQruN,GAC5B,OAAOquN,GAAUvjF,EAAW9qI,EAAQ0gS,EAAO1gS,GAASquN,EACtD,wBCdA,IAAIrgL,EAAiB5vC,EAAQ,MAwB7B4gD,EAAO3gD,QAbP,SAAyBgwN,EAAQx1N,EAAKzB,GACzB,aAAPyB,GAAsBm1C,EACxBA,EAAeqgL,EAAQx1N,EAAK,CAC1B,cAAgB,EAChB,YAAc,EACd,MAASzB,EACT,UAAY,IAGdi3N,EAAOx1N,GAAOzB,CAElB,wBCtBA,IAAI2mS,EAAQ3/R,EAAQ,MAChB6mS,EAAY7mS,EAAQ,MACpB60R,EAAc70R,EAAQ,MACtBumS,EAAavmS,EAAQ,MACrBqmS,EAAermS,EAAQ,MACvBkmS,EAAclmS,EAAQ,MACtBgmS,EAAYhmS,EAAQ,KACpBsmS,EAActmS,EAAQ,MACtBomS,EAAgBpmS,EAAQ,MACxB4mS,EAAa5mS,EAAQ,MACrB2mS,EAAe3mS,EAAQ,MACvBgkS,EAAShkS,EAAQ,MACjB+lS,EAAiB/lS,EAAQ,MACzBwmS,EAAiBxmS,EAAQ,MACzBmmS,EAAkBnmS,EAAQ,KAC1BmqB,EAAUnqB,EAAQ,MAClBuxR,EAAWvxR,EAAQ,MACnBmlS,EAAQnlS,EAAQ,KAChBupB,EAAWvpB,EAAQ,MACnBslS,EAAQtlS,EAAQ,MAChBzF,EAAOyF,EAAQ,MACfsiS,EAAStiS,EAAQ,MAQjBwlS,EAAU,qBAKVC,EAAU,oBAIVC,EAAY,kBAoBZC,EAAgB,CAAC,EACrBA,EAAcH,GAAWG,EA7BV,kBA8BfA,EAfqB,wBAeWA,EAdd,qBAelBA,EA9Bc,oBA8BWA,EA7BX,iBA8BdA,EAfiB,yBAeWA,EAdX,yBAejBA,EAdc,sBAcWA,EAbV,uBAcfA,EAbe,uBAaWA,EA5Bb,gBA6BbA,EA5BgB,mBA4BWA,EAAcD,GACzCC,EA3BgB,mBA2BWA,EA1Bd,gBA2BbA,EA1BgB,mBA0BWA,EAzBX,mBA0BhBA,EAhBe,uBAgBWA,EAfJ,8BAgBtBA,EAfgB,wBAeWA,EAdX,yBAcsC,EACtDA,EArCe,kBAqCWA,EAAcF,GACxCE,EA5BiB,qBA4BW,EA8F5B/kP,EAAO3gD,QA5EP,SAAS2lS,EAAU5sS,EAAO6sS,EAAS1F,EAAY1lS,EAAKw1N,EAAQhkM,GAC1D,IAAIpxB,EACA2nS,EAnEgB,EAmEPqD,EACT5lC,EAnEgB,EAmEP4lC,EACTC,EAnEmB,EAmEVD,EAKb,GAHI1F,IACFtlS,EAASo1N,EAASkwE,EAAWnnS,EAAOyB,EAAKw1N,EAAQhkM,GAASk0Q,EAAWnnS,SAExDrC,IAAXkE,EACF,OAAOA,EAET,IAAK0uB,EAASvwB,GACZ,OAAOA,EAET,IAAIuoS,EAAQp3Q,EAAQnxB,GACpB,GAAIuoS,GAEF,GADA1mS,EAASkrS,EAAe/sS,IACnBwpS,EACH,OAAOwD,EAAUhtS,EAAO6B,OAErB,CACL,IAAImrE,EAAMg+N,EAAOhrS,GACbitS,EAASjgO,GAAOy/N,GA7EX,8BA6EsBz/N,EAE/B,GAAIurN,EAASv4R,GACX,OAAOktS,EAAYltS,EAAOwpS,GAE5B,GAAIx8N,GAAO0/N,GAAa1/N,GAAOw/N,GAAYS,IAAWh2E,GAEpD,GADAp1N,EAAUolQ,GAAUgmC,EAAU,CAAC,EAAIE,EAAgBntS,IAC9CwpS,EACH,OAAOviC,EACHmmC,EAAcptS,EAAOqtS,EAAaxrS,EAAQ7B,IAC1CstS,EAAYttS,EAAOutS,EAAW1rS,EAAQ7B,QAEvC,CACL,IAAK2sS,EAAc3/N,GACjB,OAAOiqJ,EAASj3N,EAAQ,CAAC,EAE3B6B,EAAS2rS,EAAextS,EAAOgtE,EAAKw8N,EACtC,CACF,CAEAv2Q,IAAUA,EAAQ,IAAI0zQ,GACtB,IAAI8G,EAAUx6Q,EAAM9vB,IAAInD,GACxB,GAAIytS,EACF,OAAOA,EAETx6Q,EAAM3Q,IAAItiB,EAAO6B,GAEbyqS,EAAMtsS,GACRA,EAAMwB,SAAQ,SAASksS,GACrB7rS,EAAO+1C,IAAIg1P,EAAUc,EAAUb,EAAS1F,EAAYuG,EAAU1tS,EAAOizB,GACvE,IACSk5Q,EAAMnsS,IACfA,EAAMwB,SAAQ,SAASksS,EAAUjsS,GAC/BI,EAAOygB,IAAI7gB,EAAKmrS,EAAUc,EAAUb,EAAS1F,EAAY1lS,EAAKzB,EAAOizB,GACvE,IAGF,IAIIruB,EAAQ2jS,OAAQ5qS,GAJLmvS,EACV7lC,EAAS0mC,EAAeC,EACxB3mC,EAASqiC,EAAS/nS,GAEkBvB,GASzC,OARA6tS,EAAUjpS,GAAS5E,GAAO,SAAS0tS,EAAUjsS,GACvCmD,IAEF8oS,EAAW1tS,EADXyB,EAAMisS,IAIR7R,EAAYh6R,EAAQJ,EAAKmrS,EAAUc,EAAUb,EAAS1F,EAAY1lS,EAAKzB,EAAOizB,GAChF,IACOpxB,CACT,wBCnKA,IAAI0uB,EAAWvpB,EAAQ,MAGnBglS,EAAe1qS,OAAOqhB,OAUtBspR,EAAc,WAChB,SAASh1E,IAAU,CACnB,OAAO,SAASypE,GACd,IAAKnwQ,EAASmwQ,GACZ,MAAO,CAAC,EAEV,GAAIsL,EACF,OAAOA,EAAatL,GAEtBzpE,EAAOn1M,UAAY4+Q,EACnB,IAAI7+R,EAAS,IAAIo1N,EAEjB,OADAA,EAAOn1M,eAAYnkB,EACZkE,CACT,CACF,CAdkB,GAgBlB+lD,EAAO3gD,QAAUglS,wBC7BjB,IAaIwgC,EAbgBzlU,EAAQ,IAad0lU,GAEd9kR,EAAO3gD,QAAUwlU,wBCfjB,IAAIA,EAAUzlU,EAAQ,MAClBzF,EAAOyF,EAAQ,MAcnB4gD,EAAO3gD,QAJP,SAAoBgwN,EAAQgwE,GAC1B,OAAOhwE,GAAUw1G,EAAQx1G,EAAQgwE,EAAU1lS,EAC7C,wBCbA,IAAIorU,EAAW3lU,EAAQ,MACnB0nS,EAAQ1nS,EAAQ,MAsBpB4gD,EAAO3gD,QAZP,SAAiBgwN,EAAQryM,GAMvB,IAHA,IAAIrb,EAAQ,EACR7O,GAHJkqB,EAAO+nT,EAAS/nT,EAAMqyM,IAGJv8N,OAED,MAAVu8N,GAAkB1tN,EAAQ7O,GAC/Bu8N,EAASA,EAAOy3E,EAAM9pR,EAAKrb,OAE7B,OAAQA,GAASA,GAAS7O,EAAUu8N,OAASt5N,CAC/C,wBCrBA,IAAIosS,EAAY/iS,EAAQ,MACpBmqB,EAAUnqB,EAAQ,MAkBtB4gD,EAAO3gD,QALP,SAAwBgwN,EAAQgzE,EAAUC,GACxC,IAAIroS,EAASooS,EAAShzE,GACtB,OAAO9lM,EAAQ8lM,GAAUp1N,EAASkoS,EAAUloS,EAAQqoS,EAAYjzE,GAClE,wBCjBA,IAAIxoM,EAASznB,EAAQ,MACjB68R,EAAY78R,EAAQ,MACpB88R,EAAiB98R,EAAQ,MAOzBy8R,EAAiBh1Q,EAASA,EAAOi1Q,iBAAc/lS,EAkBnDiqD,EAAO3gD,QATP,SAAoBjH,GAClB,OAAa,MAATA,OACerC,IAAVqC,EAdQ,qBADL,gBAiBJyjS,GAAkBA,KAAkBniS,OAAOtB,GAC/C6jS,EAAU7jS,GACV8jS,EAAe9jS,EACrB,oBCxBA,IAGIkyB,EAHc5wB,OAAOwgB,UAGQoQ,eAcjC01B,EAAO3gD,QAJP,SAAiBgwN,EAAQx1N,GACvB,OAAiB,MAAVw1N,GAAkB/kM,EAAe/P,KAAK80M,EAAQx1N,EACvD,mBCJAmmD,EAAO3gD,QAJP,SAAmBgwN,EAAQx1N,GACzB,OAAiB,MAAVw1N,GAAkBx1N,KAAOH,OAAO21N,EACzC,wBCVA,IAAImtE,EAAap9R,EAAQ,MACrBm9R,EAAen9R,EAAQ,MAgB3B4gD,EAAO3gD,QAJP,SAAyBjH,GACvB,OAAOmkS,EAAankS,IAVR,sBAUkBokS,EAAWpkS,EAC3C,wBCfA,IAAI4sU,EAAkB5lU,EAAQ,MAC1Bm9R,EAAen9R,EAAQ,MA0B3B4gD,EAAO3gD,QAVP,SAAS4lU,EAAY7sU,EAAOwkS,EAAOqI,EAAS1F,EAAYl0Q,GACtD,OAAIjzB,IAAUwkS,IAGD,MAATxkS,GAA0B,MAATwkS,IAAmBL,EAAankS,KAAWmkS,EAAaK,GACpExkS,IAAUA,GAASwkS,IAAUA,EAE/BooC,EAAgB5sU,EAAOwkS,EAAOqI,EAAS1F,EAAY0lC,EAAa55S,GACzE,wBCzBA,IAAI0zQ,EAAQ3/R,EAAQ,MAChB8lU,EAAc9lU,EAAQ,MACtB+lU,EAAa/lU,EAAQ,MACrBgmU,EAAehmU,EAAQ,MACvBgkS,EAAShkS,EAAQ,MACjBmqB,EAAUnqB,EAAQ,MAClBuxR,EAAWvxR,EAAQ,MACnBmhS,EAAenhS,EAAQ,MAMvBwlS,EAAU,qBACVygC,EAAW,iBACXvgC,EAAY,kBAMZx6Q,EAHc5wB,OAAOwgB,UAGQoQ,eA6DjC01B,EAAO3gD,QA7CP,SAAyBgwN,EAAQutE,EAAOqI,EAAS1F,EAAY+lC,EAAWj6S,GACtE,IAAIk6S,EAAWh8S,EAAQ8lM,GACnBm2G,EAAWj8S,EAAQqzQ,GACnB6oC,EAASF,EAAWF,EAAWjiC,EAAO/zE,GACtCq2G,EAASF,EAAWH,EAAWjiC,EAAOxG,GAKtC+oC,GAHJF,EAASA,GAAU7gC,EAAUE,EAAY2gC,IAGhB3gC,EACrB8gC,GAHJF,EAASA,GAAU9gC,EAAUE,EAAY4gC,IAGhB5gC,EACrB+gC,EAAYJ,GAAUC,EAE1B,GAAIG,GAAal1C,EAASthE,GAAS,CACjC,IAAKshE,EAASiM,GACZ,OAAO,EAET2oC,GAAW,EACXI,GAAW,CACb,CACA,GAAIE,IAAcF,EAEhB,OADAt6S,IAAUA,EAAQ,IAAI0zQ,GACdwmC,GAAYhlC,EAAalxE,GAC7B61G,EAAY71G,EAAQutE,EAAOqI,EAAS1F,EAAY+lC,EAAWj6S,GAC3D85S,EAAW91G,EAAQutE,EAAO6oC,EAAQxgC,EAAS1F,EAAY+lC,EAAWj6S,GAExE,KArDyB,EAqDnB45Q,GAAiC,CACrC,IAAI6gC,EAAeH,GAAYr7S,EAAe/P,KAAK80M,EAAQ,eACvD02G,EAAeH,GAAYt7S,EAAe/P,KAAKqiR,EAAO,eAE1D,GAAIkpC,GAAgBC,EAAc,CAChC,IAAIC,EAAeF,EAAez2G,EAAOj3N,QAAUi3N,EAC/C42G,EAAeF,EAAenpC,EAAMxkS,QAAUwkS,EAGlD,OADAvxQ,IAAUA,EAAQ,IAAI0zQ,GACfumC,EAAUU,EAAcC,EAAchhC,EAAS1F,EAAYl0Q,EACpE,CACF,CACA,QAAKw6S,IAGLx6S,IAAUA,EAAQ,IAAI0zQ,GACfqmC,EAAa/1G,EAAQutE,EAAOqI,EAAS1F,EAAY+lC,EAAWj6S,GACrE,wBChFA,IAAI+3Q,EAAShkS,EAAQ,MACjBm9R,EAAen9R,EAAQ,MAgB3B4gD,EAAO3gD,QAJP,SAAmBjH,GACjB,OAAOmkS,EAAankS,IAVT,gBAUmBgrS,EAAOhrS,EACvC,wBCfA,IAAI2mS,EAAQ3/R,EAAQ,MAChB6lU,EAAc7lU,EAAQ,MA4D1B4gD,EAAO3gD,QA5CP,SAAqBgwN,EAAQruN,EAAQklU,EAAW3mC,GAC9C,IAAI59R,EAAQukU,EAAUpzU,OAClBA,EAAS6O,EACTwkU,GAAgB5mC,EAEpB,GAAc,MAAVlwE,EACF,OAAQv8N,EAGV,IADAu8N,EAAS31N,OAAO21N,GACT1tN,KAAS,CACd,IAAIjB,EAAOwlU,EAAUvkU,GACrB,GAAKwkU,GAAgBzlU,EAAK,GAClBA,EAAK,KAAO2uN,EAAO3uN,EAAK,MACtBA,EAAK,KAAM2uN,GAEnB,OAAO,CAEX,CACA,OAAS1tN,EAAQ7O,GAAQ,CAEvB,IAAI+G,GADJ6G,EAAOwlU,EAAUvkU,IACF,GACXwmD,EAAWknK,EAAOx1N,GAClBusU,EAAW1lU,EAAK,GAEpB,GAAIylU,GAAgBzlU,EAAK,IACvB,QAAiB3K,IAAboyD,KAA4BtuD,KAAOw1N,GACrC,OAAO,MAEJ,CACL,IAAIhkM,EAAQ,IAAI0zQ,EAChB,GAAIQ,EACF,IAAItlS,EAASslS,EAAWp3O,EAAUi+Q,EAAUvsU,EAAKw1N,EAAQruN,EAAQqqB,GAEnE,UAAiBt1B,IAAXkE,EACEgrU,EAAYmB,EAAUj+Q,EAAUk+Q,EAA+C9mC,EAAYl0Q,GAC3FpxB,GAEN,OAAO,CAEX,CACF,CACA,OAAO,CACT,wBC3DA,IAAIy5R,EAAat0R,EAAQ,MACrBu+R,EAAWv+R,EAAQ,KACnBupB,EAAWvpB,EAAQ,MACnBw+R,EAAWx+R,EAAQ,MASnBq+R,EAAe,8BAGfrB,EAAYpiR,SAASE,UACrByhR,EAAcjiS,OAAOwgB,UAGrBmiR,EAAeD,EAAUnmS,SAGzBq0B,EAAiBqxQ,EAAYrxQ,eAG7BozQ,EAAa75Q,OAAO,IACtBw4Q,EAAa9hR,KAAK+P,GAAgBhZ,QAjBjB,sBAiBuC,QACvDA,QAAQ,yDAA0D,SAAW,KAmBhF0uC,EAAO3gD,QARP,SAAsBjH,GACpB,SAAKuwB,EAASvwB,IAAUulS,EAASvlS,MAGnBs7R,EAAWt7R,GAASslS,EAAaD,GAChC96Q,KAAKi7Q,EAASxlS,GAC/B,wBC5CA,IAAIgrS,EAAShkS,EAAQ,MACjBm9R,EAAen9R,EAAQ,MAgB3B4gD,EAAO3gD,QAJP,SAAmBjH,GACjB,OAAOmkS,EAAankS,IAVT,gBAUmBgrS,EAAOhrS,EACvC,wBCfA,IAAIokS,EAAap9R,EAAQ,MACrB8gS,EAAW9gS,EAAQ,MACnBm9R,EAAen9R,EAAQ,MA8BvB6gS,EAAiB,CAAC,EACtBA,EAZiB,yBAYYA,EAXZ,yBAYjBA,EAXc,sBAWYA,EAVX,uBAWfA,EAVe,uBAUYA,EATZ,uBAUfA,EATsB,8BASYA,EARlB,wBAShBA,EARgB,yBAQY,EAC5BA,EAjCc,sBAiCYA,EAhCX,kBAiCfA,EApBqB,wBAoBYA,EAhCnB,oBAiCdA,EApBkB,qBAoBYA,EAhChB,iBAiCdA,EAhCe,kBAgCYA,EA/Bb,qBAgCdA,EA/Ba,gBA+BYA,EA9BT,mBA+BhBA,EA9BgB,mBA8BYA,EA7BZ,mBA8BhBA,EA7Ba,gBA6BYA,EA5BT,mBA6BhBA,EA5BiB,qBA4BY,EAc7BjgP,EAAO3gD,QALP,SAA0BjH,GACxB,OAAOmkS,EAAankS,IAClB8nS,EAAS9nS,EAAMtF,WAAamtS,EAAezD,EAAWpkS,GAC1D,wBCzDA,IAAIkuU,EAAclnU,EAAQ,MACtBmnU,EAAsBnnU,EAAQ,MAC9BonU,EAAWpnU,EAAQ,MACnBmqB,EAAUnqB,EAAQ,MAClBiiC,EAAWjiC,EAAQ,IA0BvB4gD,EAAO3gD,QAjBP,SAAsBjH,GAGpB,MAAoB,mBAATA,EACFA,EAEI,MAATA,EACKouU,EAEW,iBAATpuU,EACFmxB,EAAQnxB,GACXmuU,EAAoBnuU,EAAM,GAAIA,EAAM,IACpCkuU,EAAYluU,GAEXipC,EAASjpC,EAClB,wBC5BA,IAAI8oS,EAAc9hS,EAAQ,MACtB+hS,EAAa/hS,EAAQ,MAMrBkrB,EAHc5wB,OAAOwgB,UAGQoQ,eAsBjC01B,EAAO3gD,QAbP,SAAkBgwN,GAChB,IAAK6xE,EAAY7xE,GACf,OAAO8xE,EAAW9xE,GAEpB,IAAIp1N,EAAS,GACb,IAAK,IAAIJ,KAAOH,OAAO21N,GACjB/kM,EAAe/P,KAAK80M,EAAQx1N,IAAe,eAAPA,GACtCI,EAAOK,KAAKT,GAGhB,OAAOI,CACT,wBC3BA,IAAI0uB,EAAWvpB,EAAQ,MACnB8hS,EAAc9hS,EAAQ,MACtBmiS,EAAeniS,EAAQ,MAMvBkrB,EAHc5wB,OAAOwgB,UAGQoQ,eAwBjC01B,EAAO3gD,QAfP,SAAoBgwN,GAClB,IAAK1mM,EAAS0mM,GACZ,OAAOkyE,EAAalyE,GAEtB,IAAImyE,EAAUN,EAAY7xE,GACtBp1N,EAAS,GAEb,IAAK,IAAIJ,KAAOw1N,GACD,eAAPx1N,IAAyB2nS,GAAYl3Q,EAAe/P,KAAK80M,EAAQx1N,KACrEI,EAAOK,KAAKT,GAGhB,OAAOI,CACT,wBC9BA,IAAIwsU,EAAcrnU,EAAQ,MACtBsnU,EAAetnU,EAAQ,MACvBunU,EAA0BvnU,EAAQ,KAmBtC4gD,EAAO3gD,QAVP,SAAqB2B,GACnB,IAAIklU,EAAYQ,EAAa1lU,GAC7B,OAAwB,GAApBklU,EAAUpzU,QAAeozU,EAAU,GAAG,GACjCS,EAAwBT,EAAU,GAAG,GAAIA,EAAU,GAAG,IAExD,SAAS72G,GACd,OAAOA,IAAWruN,GAAUylU,EAAYp3G,EAAQruN,EAAQklU,EAC1D,CACF,wBCnBA,IAAIjB,EAAc7lU,EAAQ,MACtB7D,EAAM6D,EAAQ,MACdwnU,EAAQxnU,EAAQ,MAChBynU,EAAQznU,EAAQ,MAChB0nU,EAAqB1nU,EAAQ,MAC7BunU,EAA0BvnU,EAAQ,KAClC0nS,EAAQ1nS,EAAQ,MA0BpB4gD,EAAO3gD,QAZP,SAA6B2d,EAAMopT,GACjC,OAAIS,EAAM7pT,IAAS8pT,EAAmBV,GAC7BO,EAAwB7/B,EAAM9pR,GAAOopT,GAEvC,SAAS/2G,GACd,IAAIlnK,EAAW5sD,EAAI8zN,EAAQryM,GAC3B,YAAqBjnB,IAAboyD,GAA0BA,IAAai+Q,EAC3CQ,EAAMv3G,EAAQryM,GACdioT,EAAYmB,EAAUj+Q,EAAUk+Q,EACtC,CACF,oBCjBArmR,EAAO3gD,QANP,SAAsBxF,GACpB,OAAO,SAASw1N,GACd,OAAiB,MAAVA,OAAiBt5N,EAAYs5N,EAAOx1N,EAC7C,CACF,wBCXA,IAAIktU,EAAU3nU,EAAQ,MAetB4gD,EAAO3gD,QANP,SAA0B2d,GACxB,OAAO,SAASqyM,GACd,OAAO03G,EAAQ13G,EAAQryM,EACzB,CACF,oBCAAgjC,EAAO3gD,QANP,SAAwBgwN,GACtB,OAAO,SAASx1N,GACd,OAAiB,MAAVw1N,OAAiBt5N,EAAYs5N,EAAOx1N,EAC7C,CACF,oBCmBAmmD,EAAO3gD,QArBP,SAAmB26E,EAAO1xD,EAAOvF,GAC/B,IAAIphB,GAAS,EACT7O,EAASknF,EAAMlnF,OAEfw1B,EAAQ,IACVA,GAASA,EAAQx1B,EAAS,EAAKA,EAASw1B,IAE1CvF,EAAMA,EAAMjwB,EAASA,EAASiwB,GACpB,IACRA,GAAOjwB,GAETA,EAASw1B,EAAQvF,EAAM,EAAMA,EAAMuF,IAAW,EAC9CA,KAAW,EAGX,IADA,IAAIruB,EAASqvB,MAAMx2B,KACV6O,EAAQ7O,GACfmH,EAAO0H,GAASq4E,EAAMr4E,EAAQ2mB,GAEhC,OAAOruB,CACT,oBCTA+lD,EAAO3gD,QAVP,SAAmBrH,EAAGqnS,GAIpB,IAHA,IAAI19R,GAAS,EACT1H,EAASqvB,MAAMtxB,KAEV2J,EAAQ3J,GACfiC,EAAO0H,GAAS09R,EAAS19R,GAE3B,OAAO1H,CACT,wBCjBA,IAAI4sB,EAASznB,EAAQ,MACjBynS,EAAWznS,EAAQ,MACnBmqB,EAAUnqB,EAAQ,MAClBsnS,EAAWtnS,EAAQ,KAMnBykS,EAAch9Q,EAASA,EAAO3M,eAAYnkB,EAC1C4wS,EAAiB9C,EAAcA,EAAY5tS,cAAWF,EA0B1DiqD,EAAO3gD,QAhBP,SAASunS,EAAaxuS,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAImxB,EAAQnxB,GAEV,OAAOyuS,EAASzuS,EAAOwuS,GAAgB,GAEzC,GAAIF,EAAStuS,GACX,OAAOuuS,EAAiBA,EAAepsR,KAAKniB,GAAS,GAEvD,IAAI6B,EAAU7B,EAAQ,GACtB,MAAkB,KAAV6B,GAAkB,EAAI7B,IA3BjB,SA2BwC,KAAO6B,CAC9D,oBCrBA+lD,EAAO3gD,QANP,SAAmBm2R,GACjB,OAAO,SAASp9R,GACd,OAAOo9R,EAAKp9R,EACd,CACF,wBCXA,IAAIyuS,EAAWznS,EAAQ,MAkBvB4gD,EAAO3gD,QANP,SAAoBgwN,EAAQryN,GAC1B,OAAO6pS,EAAS7pS,GAAO,SAASnD,GAC9B,OAAOw1N,EAAOx1N,EAChB,GACF,kBCJAmmD,EAAO3gD,QAJP,SAAkB6pG,EAAOrvG,GACvB,OAAOqvG,EAAMzuF,IAAI5gB,EACnB,wBCVA,IAAI0vB,EAAUnqB,EAAQ,MAClBynU,EAAQznU,EAAQ,MAChB2nS,EAAe3nS,EAAQ,KACvBnJ,EAAWmJ,EAAQ,MAiBvB4gD,EAAO3gD,QAPP,SAAkBjH,EAAOi3N,GACvB,OAAI9lM,EAAQnxB,GACHA,EAEFyuU,EAAMzuU,EAAOi3N,GAAU,CAACj3N,GAAS2uS,EAAa9wS,EAASmC,GAChE,wBClBA,IAAI4uU,EAAY5nU,EAAQ,MAiBxB4gD,EAAO3gD,QANP,SAAmB26E,EAAO1xD,EAAOvF,GAC/B,IAAIjwB,EAASknF,EAAMlnF,OAEnB,OADAiwB,OAAchtB,IAARgtB,EAAoBjwB,EAASiwB,GAC1BuF,GAASvF,GAAOjwB,EAAUknF,EAAQgtP,EAAUhtP,EAAO1xD,EAAOvF,EACrE,wBCfA,IAAI+rF,EAAa1vG,EAAQ,MAezB4gD,EAAO3gD,QANP,SAA0BikS,GACxB,IAAIrpS,EAAS,IAAIqpS,EAAYxoR,YAAYwoR,EAAYC,YAErD,OADA,IAAIz0L,EAAW70G,GAAQygB,IAAI,IAAIo0F,EAAWw0L,IACnCrpS,CACT,mCCbA,IAAIukE,EAAOp/D,EAAQ,MAGfwgS,EAA4CvgS,IAAYA,EAAQ80C,UAAY90C,EAG5EwgS,EAAaD,GAA4C5/O,IAAWA,EAAO7L,UAAY6L,EAMvF8/O,EAHgBD,GAAcA,EAAWxgS,UAAYugS,EAG5BphO,EAAKshO,YAAS/pS,EACvC4rS,EAAc7B,EAASA,EAAO6B,iBAAc5rS,EAqBhDiqD,EAAO3gD,QAXP,SAAqB0xR,EAAQ6Q,GAC3B,GAAIA,EACF,OAAO7Q,EAAO74Q,QAEhB,IAAIplB,EAASi+R,EAAOj+R,OAChBmH,EAAS0nS,EAAcA,EAAY7uS,GAAU,IAAIi+R,EAAOj2Q,YAAYhoB,GAGxE,OADAi+R,EAAO9mQ,KAAKhwB,GACLA,CACT,wBChCA,IAAIwpS,EAAmBrkS,EAAQ,MAe/B4gD,EAAO3gD,QALP,SAAuBmkS,EAAU5B,GAC/B,IAAI7Q,EAAS6Q,EAAS6B,EAAiBD,EAASzS,QAAUyS,EAASzS,OACnE,OAAO,IAAIyS,EAAS1oR,YAAYi2Q,EAAQyS,EAASE,WAAYF,EAASD,WACxE,oBCZA,IAAII,EAAU,OAed3jP,EAAO3gD,QANP,SAAqBukS,GACnB,IAAI3pS,EAAS,IAAI2pS,EAAO9oR,YAAY8oR,EAAO5iS,OAAQ2iS,EAAQp4P,KAAKq4P,IAEhE,OADA3pS,EAAO6+L,UAAY8qG,EAAO9qG,UACnB7+L,CACT,wBCdA,IAAI4sB,EAASznB,EAAQ,MAGjBykS,EAAch9Q,EAASA,EAAO3M,eAAYnkB,EAC1C+tS,EAAgBD,EAAcA,EAAYl2N,aAAU53E,EAaxDiqD,EAAO3gD,QAJP,SAAqB2nC,GACnB,OAAO88P,EAAgBpqS,OAAOoqS,EAAcvpR,KAAKysB,IAAW,CAAC,CAC/D,uBCfA,IAAIy8P,EAAmBrkS,EAAQ,MAe/B4gD,EAAO3gD,QALP,SAAyB0kS,EAAYnC,GACnC,IAAI7Q,EAAS6Q,EAAS6B,EAAiBM,EAAWhT,QAAUgT,EAAWhT,OACvE,OAAO,IAAIgT,EAAWjpR,YAAYi2Q,EAAQgT,EAAWL,WAAYK,EAAWjxS,OAC9E,mBCMAktD,EAAO3gD,QAXP,SAAmB2B,EAAQg5E,GACzB,IAAIr4E,GAAS,EACT7O,EAASkO,EAAOlO,OAGpB,IADAknF,IAAUA,EAAQ1wD,MAAMx2B,MACf6O,EAAQ7O,GACfknF,EAAMr4E,GAASX,EAAOW,GAExB,OAAOq4E,CACT,wBCjBA,IAAIi6M,EAAc70R,EAAQ,MACtBkgS,EAAkBlgS,EAAQ,MAsC9B4gD,EAAO3gD,QA1BP,SAAoB2B,EAAQhE,EAAOqyN,EAAQkwE,GACzC,IAAIC,GAASnwE,EACbA,IAAWA,EAAS,CAAC,GAKrB,IAHA,IAAI1tN,GAAS,EACT7O,EAASkK,EAAMlK,SAEV6O,EAAQ7O,GAAQ,CACvB,IAAI+G,EAAMmD,EAAM2E,GAEZrD,EAAWihS,EACXA,EAAWlwE,EAAOx1N,GAAMmH,EAAOnH,GAAMA,EAAKw1N,EAAQruN,QAClDjL,OAEaA,IAAbuI,IACFA,EAAW0C,EAAOnH,IAEhB2lS,EACFF,EAAgBjwE,EAAQx1N,EAAKyE,GAE7B21R,EAAY5kE,EAAQx1N,EAAKyE,EAE7B,CACA,OAAO+wN,CACT,wBCrCA,IAAIvjF,EAAa1sI,EAAQ,MACrB8iS,EAAa9iS,EAAQ,MAczB4gD,EAAO3gD,QAJP,SAAqB2B,EAAQquN,GAC3B,OAAOvjF,EAAW9qI,EAAQkhS,EAAWlhS,GAASquN,EAChD,wBCbA,IAAIvjF,EAAa1sI,EAAQ,MACrBgjS,EAAehjS,EAAQ,MAc3B4gD,EAAO3gD,QAJP,SAAuB2B,EAAQquN,GAC7B,OAAOvjF,EAAW9qI,EAAQohS,EAAaphS,GAASquN,EAClD,wBCbA,IAGIkuE,EAHOn+R,EAAQ,MAGG,sBAEtB4gD,EAAO3gD,QAAUk+R,mBCmBjBv9O,EAAO3gD,QAjBP,SAAuB4nU,GACrB,OAAO,SAAS53G,EAAQgwE,EAAUgD,GAMhC,IALA,IAAI1gS,GAAS,EACTulU,EAAWxtU,OAAO21N,GAClBryN,EAAQqlS,EAAShzE,GACjBv8N,EAASkK,EAAMlK,OAEZA,KAAU,CACf,IAAI+G,EAAMmD,EAAMiqU,EAAYn0U,IAAW6O,GACvC,IAA+C,IAA3C09R,EAAS6nC,EAASrtU,GAAMA,EAAKqtU,GAC/B,KAEJ,CACA,OAAO73G,CACT,CACF,uBCtBA,IAAI83G,EAAY/nU,EAAQ,MACpBgoU,EAAahoU,EAAQ,MACrBioU,EAAgBjoU,EAAQ,MACxBnJ,EAAWmJ,EAAQ,MA6BvB4gD,EAAO3gD,QApBP,SAAyB66R,GACvB,OAAO,SAASnoJ,GACdA,EAAS97I,EAAS87I,GAElB,IAAIu1L,EAAaF,EAAWr1L,GACxBs1L,EAAct1L,QACdh8I,EAEAwxU,EAAMD,EACNA,EAAW,GACXv1L,EAAO/5H,OAAO,GAEdwvT,EAAWF,EACXH,EAAUG,EAAY,GAAGxlT,KAAK,IAC9BiwH,EAAO75H,MAAM,GAEjB,OAAOqvT,EAAIrtC,KAAgBstC,CAC7B,CACF,wBC9BA,IAAIC,EAAcroU,EAAQ,MACtBsoU,EAAStoU,EAAQ,MACjBuoU,EAAQvoU,EAAQ,MAMhBwoU,EAAS/jT,OAHA,YAGe,KAe5Bm8B,EAAO3gD,QANP,SAA0BktC,GACxB,OAAO,SAASwlG,GACd,OAAO01L,EAAYE,EAAMD,EAAO31L,GAAQzgI,QAAQs2T,EAAQ,KAAMr7R,EAAU,GAC1E,CACF,wBCrBA,IAoEIs7R,EApEiBzoU,EAAQ,KAoEV0oU,CAjEG,CAEpB,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAC1E,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAC1E,OAAQ,IAAM,OAAQ,IACtB,OAAQ,IAAM,OAAQ,IACtB,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAChD,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAChD,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAChD,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAChD,OAAQ,IAAM,OAAQ,IACtB,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAC1E,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAC1E,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAChD,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAChD,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IACnC,OAAQ,KAAM,OAAQ,KACtB,OAAQ,KAAM,OAAQ,KACtB,OAAQ,KAER,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAC1B,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACtF,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACtF,SAAU,IAAM,SAAU,IAC1B,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,KAAM,SAAU,KAC1B,SAAU,KAAM,SAAU,KAC1B,SAAU,KAAM,SAAU,MAa5B9nR,EAAO3gD,QAAUwoU,wBCtEjB,IAAI/pC,EAAY1+R,EAAQ,MAEpB4vC,EAAkB,WACpB,IACE,IAAIwmP,EAAOsI,EAAUpkS,OAAQ,kBAE7B,OADA87R,EAAK,CAAC,EAAG,GAAI,CAAC,GACPA,CACT,CAAE,MAAOl/R,GAAI,CACf,CANsB,GAQtB0pD,EAAO3gD,QAAU2vC,wBCVjB,IAAIy1R,EAAWrlU,EAAQ,KACnB2oU,EAAY3oU,EAAQ,MACpB4oU,EAAW5oU,EAAQ,IAiFvB4gD,EAAO3gD,QA9DP,SAAqB26E,EAAO4iN,EAAOqI,EAAS1F,EAAY+lC,EAAWj6S,GACjE,IAAI48S,EAjBqB,EAiBThjC,EACZijC,EAAYluP,EAAMlnF,OAClBq1U,EAAYvrC,EAAM9pS,OAEtB,GAAIo1U,GAAaC,KAAeF,GAAaE,EAAYD,GACvD,OAAO,EAGT,IAAIE,EAAa/8S,EAAM9vB,IAAIy+E,GACvBquP,EAAah9S,EAAM9vB,IAAIqhS,GAC3B,GAAIwrC,GAAcC,EAChB,OAAOD,GAAcxrC,GAASyrC,GAAcruP,EAE9C,IAAIr4E,GAAS,EACT1H,GAAS,EACTquU,EA/BuB,EA+BfrjC,EAAoC,IAAIw/B,OAAW1uU,EAM/D,IAJAs1B,EAAM3Q,IAAIs/D,EAAO4iN,GACjBvxQ,EAAM3Q,IAAIkiR,EAAO5iN,KAGRr4E,EAAQumU,GAAW,CAC1B,IAAIK,EAAWvuP,EAAMr4E,GACjB6mU,EAAW5rC,EAAMj7R,GAErB,GAAI49R,EACF,IAAIkpC,EAAWR,EACX1oC,EAAWipC,EAAUD,EAAU5mU,EAAOi7R,EAAO5iN,EAAO3uD,GACpDk0Q,EAAWgpC,EAAUC,EAAU7mU,EAAOq4E,EAAO4iN,EAAOvxQ,GAE1D,QAAiBt1B,IAAb0yU,EAAwB,CAC1B,GAAIA,EACF,SAEFxuU,GAAS,EACT,KACF,CAEA,GAAIquU,GACF,IAAKP,EAAUnrC,GAAO,SAAS4rC,EAAUE,GACnC,IAAKV,EAASM,EAAMI,KACfH,IAAaC,GAAYlD,EAAUiD,EAAUC,EAAUvjC,EAAS1F,EAAYl0Q,IAC/E,OAAOi9S,EAAKhuU,KAAKouU,EAErB,IAAI,CACNzuU,GAAS,EACT,KACF,OACK,GACDsuU,IAAaC,IACXlD,EAAUiD,EAAUC,EAAUvjC,EAAS1F,EAAYl0Q,GACpD,CACLpxB,GAAS,EACT,KACF,CACF,CAGA,OAFAoxB,EAAc,OAAE2uD,GAChB3uD,EAAc,OAAEuxQ,GACT3iS,CACT,wBCjFA,IAAI4sB,EAASznB,EAAQ,MACjB0vG,EAAa1vG,EAAQ,MACrBy9R,EAAKz9R,EAAQ,MACb8lU,EAAc9lU,EAAQ,MACtBupU,EAAavpU,EAAQ,KACrBwpU,EAAaxpU,EAAQ,MAqBrBykS,EAAch9Q,EAASA,EAAO3M,eAAYnkB,EAC1C+tS,EAAgBD,EAAcA,EAAYl2N,aAAU53E,EAoFxDiqD,EAAO3gD,QAjEP,SAAoBgwN,EAAQutE,EAAOx3N,EAAK6/N,EAAS1F,EAAY+lC,EAAWj6S,GACtE,OAAQ+5C,GACN,IAzBc,oBA0BZ,GAAKiqJ,EAAOk0E,YAAc3G,EAAM2G,YAC3Bl0E,EAAOq0E,YAAc9G,EAAM8G,WAC9B,OAAO,EAETr0E,EAASA,EAAO0hE,OAChB6L,EAAQA,EAAM7L,OAEhB,IAlCiB,uBAmCf,QAAK1hE,EAAOk0E,YAAc3G,EAAM2G,aAC3B+hC,EAAU,IAAIx2N,EAAWugH,GAAS,IAAIvgH,EAAW8tL,KAKxD,IAnDU,mBAoDV,IAnDU,gBAoDV,IAjDY,kBAoDV,OAAOC,GAAIxtE,GAASutE,GAEtB,IAxDW,iBAyDT,OAAOvtE,EAAOp8N,MAAQ2pS,EAAM3pS,MAAQo8N,EAAOlhN,SAAWyuR,EAAMzuR,QAE9D,IAxDY,kBAyDZ,IAvDY,kBA2DV,OAAOkhN,GAAWutE,EAAQ,GAE5B,IAjES,eAkEP,IAAIisC,EAAUF,EAEhB,IAjES,eAkEP,IAAIV,EA5EiB,EA4ELhjC,EAGhB,GAFA4jC,IAAYA,EAAUD,GAElBv5G,EAAOl1H,MAAQyiM,EAAMziM,OAAS8tO,EAChC,OAAO,EAGT,IAAIpiC,EAAUx6Q,EAAM9vB,IAAI8zN,GACxB,GAAIw2E,EACF,OAAOA,GAAWjJ,EAEpBqI,GAtFuB,EAyFvB55Q,EAAM3Q,IAAI20M,EAAQutE,GAClB,IAAI3iS,EAASirU,EAAY2D,EAAQx5G,GAASw5G,EAAQjsC,GAAQqI,EAAS1F,EAAY+lC,EAAWj6S,GAE1F,OADAA,EAAc,OAAEgkM,GACTp1N,EAET,IAnFY,kBAoFV,GAAI6pS,EACF,OAAOA,EAAcvpR,KAAK80M,IAAWy0E,EAAcvpR,KAAKqiR,GAG9D,OAAO,CACT,wBC7GA,IAAIoJ,EAAa5mS,EAAQ,MASrBkrB,EAHc5wB,OAAOwgB,UAGQoQ,eAgFjC01B,EAAO3gD,QAjEP,SAAsBgwN,EAAQutE,EAAOqI,EAAS1F,EAAY+lC,EAAWj6S,GACnE,IAAI48S,EAtBqB,EAsBThjC,EACZ6jC,EAAW9iC,EAAW32E,GACtB05G,EAAYD,EAASh2U,OAIzB,GAAIi2U,GAHW/iC,EAAWpJ,GACD9pS,SAEMm1U,EAC7B,OAAO,EAGT,IADA,IAAItmU,EAAQonU,EACLpnU,KAAS,CACd,IAAI9H,EAAMivU,EAASnnU,GACnB,KAAMsmU,EAAYpuU,KAAO+iS,EAAQtyQ,EAAe/P,KAAKqiR,EAAO/iS,IAC1D,OAAO,CAEX,CAEA,IAAImvU,EAAa39S,EAAM9vB,IAAI8zN,GACvBg5G,EAAah9S,EAAM9vB,IAAIqhS,GAC3B,GAAIosC,GAAcX,EAChB,OAAOW,GAAcpsC,GAASyrC,GAAch5G,EAE9C,IAAIp1N,GAAS,EACboxB,EAAM3Q,IAAI20M,EAAQutE,GAClBvxQ,EAAM3Q,IAAIkiR,EAAOvtE,GAGjB,IADA,IAAI45G,EAAWhB,IACNtmU,EAAQonU,GAAW,CAE1B,IAAI5gR,EAAWknK,EADfx1N,EAAMivU,EAASnnU,IAEX6mU,EAAW5rC,EAAM/iS,GAErB,GAAI0lS,EACF,IAAIkpC,EAAWR,EACX1oC,EAAWipC,EAAUrgR,EAAUtuD,EAAK+iS,EAAOvtE,EAAQhkM,GACnDk0Q,EAAWp3O,EAAUqgR,EAAU3uU,EAAKw1N,EAAQutE,EAAOvxQ,GAGzD,UAAmBt1B,IAAb0yU,EACGtgR,IAAaqgR,GAAYlD,EAAUn9Q,EAAUqgR,EAAUvjC,EAAS1F,EAAYl0Q,GAC7Eo9S,GACD,CACLxuU,GAAS,EACT,KACF,CACAgvU,IAAaA,EAAkB,eAAPpvU,EAC1B,CACA,GAAII,IAAWgvU,EAAU,CACvB,IAAIC,EAAU75G,EAAOv0M,YACjBquT,EAAUvsC,EAAM9hR,YAGhBouT,GAAWC,KACV,gBAAiB95G,MAAU,gBAAiButE,IACzB,mBAAXssC,GAAyBA,aAAmBA,GACjC,mBAAXC,GAAyBA,aAAmBA,IACvDlvU,GAAS,EAEb,CAGA,OAFAoxB,EAAc,OAAEgkM,GAChBhkM,EAAc,OAAEuxQ,GACT3iS,CACT,wBCtFA,IAAIyhS,EAA8B,iBAAVH,EAAAA,GAAsBA,EAAAA,GAAUA,EAAAA,EAAO7hS,SAAWA,QAAU6hS,EAAAA,EAEpFv7O,EAAO3gD,QAAUq8R,wBCHjB,IAAI6G,EAAiBnjS,EAAQ,MACzB8iS,EAAa9iS,EAAQ,MACrBzF,EAAOyF,EAAQ,MAanB4gD,EAAO3gD,QAJP,SAAoBgwN,GAClB,OAAOkzE,EAAelzE,EAAQ11N,EAAMuoS,EACtC,wBCbA,IAAIK,EAAiBnjS,EAAQ,MACzBgjS,EAAehjS,EAAQ,MACvBsiS,EAAStiS,EAAQ,MAcrB4gD,EAAO3gD,QAJP,SAAsBgwN,GACpB,OAAOkzE,EAAelzE,EAAQqyE,EAAQU,EACxC,wBCdA,IAAI9D,EAAYl/R,EAAQ,MAiBxB4gD,EAAO3gD,QAPP,SAAoB1E,EAAKd,GACvB,IAAI6G,EAAO/F,EAAIgiS,SACf,OAAO2B,EAAUzkS,GACb6G,EAAmB,iBAAP7G,EAAkB,SAAW,QACzC6G,EAAK/F,GACX,wBCfA,IAAImsU,EAAqB1nU,EAAQ,MAC7BzF,EAAOyF,EAAQ,MAsBnB4gD,EAAO3gD,QAbP,SAAsBgwN,GAIpB,IAHA,IAAIp1N,EAASN,EAAK01N,GACdv8N,EAASmH,EAAOnH,OAEbA,KAAU,CACf,IAAI+G,EAAMI,EAAOnH,GACbsF,EAAQi3N,EAAOx1N,GAEnBI,EAAOnH,GAAU,CAAC+G,EAAKzB,EAAO0uU,EAAmB1uU,GACnD,CACA,OAAO6B,CACT,wBCrBA,IAAI4jS,EAAez+R,EAAQ,MACvB6oB,EAAW7oB,EAAQ,IAevB4gD,EAAO3gD,QALP,SAAmBgwN,EAAQx1N,GACzB,IAAIzB,EAAQ6vB,EAASonM,EAAQx1N,GAC7B,OAAOgkS,EAAazlS,GAASA,OAAQrC,CACvC,wBCdA,IAGI0mS,EAHUr9R,EAAQ,KAGH+8R,CAAQziS,OAAOkhB,eAAgBlhB,QAElDsmD,EAAO3gD,QAAUo9R,wBCLjB,IAAI51Q,EAASznB,EAAQ,MAGjBu8R,EAAcjiS,OAAOwgB,UAGrBoQ,EAAiBqxQ,EAAYrxQ,eAO7BsxQ,EAAuBD,EAAY1lS,SAGnC4lS,EAAiBh1Q,EAASA,EAAOi1Q,iBAAc/lS,EA6BnDiqD,EAAO3gD,QApBP,SAAmBjH,GACjB,IAAI2jS,EAAQzxQ,EAAe/P,KAAKniB,EAAOyjS,GACnCz2N,EAAMhtE,EAAMyjS,GAEhB,IACEzjS,EAAMyjS,QAAkB9lS,EACxB,IAAIimS,GAAW,CACjB,CAAE,MAAO1lS,GAAI,CAEb,IAAI2D,EAAS2hS,EAAqBrhR,KAAKniB,GAQvC,OAPI4jS,IACED,EACF3jS,EAAMyjS,GAAkBz2N,SAEjBhtE,EAAMyjS,IAGV5hS,CACT,wBC3CA,IAAI+nS,EAAc5iS,EAAQ,MACtB6iS,EAAY7iS,EAAQ,MAMpBqgS,EAHc/lS,OAAOwgB,UAGculR,qBAGnCqC,EAAmBpoS,OAAOqoS,sBAS1BG,EAAcJ,EAA+B,SAASzyE,GACxD,OAAc,MAAVA,EACK,IAETA,EAAS31N,OAAO21N,GACT2yE,EAAYF,EAAiBzyE,IAAS,SAASroL,GACpD,OAAOy4P,EAAqBllR,KAAK80M,EAAQroL,EAC3C,IACF,EARqCi7P,EAUrCjiP,EAAO3gD,QAAU6iS,wBC7BjB,IAAIC,EAAY/iS,EAAQ,MACpBq9R,EAAer9R,EAAQ,MACvB8iS,EAAa9iS,EAAQ,MACrB6iS,EAAY7iS,EAAQ,MAYpBgjS,EATmB1oS,OAAOqoS,sBASqB,SAAS1yE,GAE1D,IADA,IAAIp1N,EAAS,GACNo1N,GACL8yE,EAAUloS,EAAQioS,EAAW7yE,IAC7BA,EAASotE,EAAaptE,GAExB,OAAOp1N,CACT,EAPuCgoS,EASvCjiP,EAAO3gD,QAAU+iS,wBCxBjB,IAAIU,EAAW1jS,EAAQ,KACnBib,EAAMjb,EAAQ,MACd4W,EAAU5W,EAAQ,MAClBggB,EAAMhgB,EAAQ,MACd+jS,EAAU/jS,EAAQ,MAClBo9R,EAAap9R,EAAQ,MACrBw+R,EAAWx+R,EAAQ,MAGnBojS,EAAS,eAETC,EAAa,mBACbC,EAAS,eACTC,EAAa,mBAEbC,EAAc,oBAGdC,EAAqBjF,EAASkF,GAC9BC,EAAgBnF,EAASvjR,GACzB2oR,EAAoBpF,EAAS5nR,GAC7BitR,EAAgBrF,EAASx+Q,GACzB8jR,EAAoBtF,EAASuF,GAS7BC,EAAS5G,GAGRsG,GAAYM,EAAO,IAAIN,EAAS,IAAIlP,YAAY,MAAQgP,GACxDvoR,GAAO+oR,EAAO,IAAI/oR,IAAQmoR,GAC1BxsR,GAAWotR,EAAOptR,EAAQuC,YAAckqR,GACxCrjR,GAAOgkR,EAAO,IAAIhkR,IAAQsjR,GAC1BS,GAAWC,EAAO,IAAID,IAAYR,KACrCS,EAAS,SAAShrS,GAChB,IAAI6B,EAASuiS,EAAWpkS,GACpBskS,EA/BQ,mBA+BDziS,EAAsB7B,EAAM0iB,iBAAc/kB,EACjDstS,EAAa3G,EAAOkB,EAASlB,GAAQ,GAEzC,GAAI2G,EACF,OAAQA,GACN,KAAKR,EAAoB,OAAOD,EAChC,KAAKG,EAAe,OAAOP,EAC3B,KAAKQ,EAAmB,OAAOP,EAC/B,KAAKQ,EAAe,OAAOP,EAC3B,KAAKQ,EAAmB,OAAOP,EAGnC,OAAO1oS,CACT,GAGF+lD,EAAO3gD,QAAU+jS,kBC7CjBpjP,EAAO3gD,QAJP,SAAkBgwN,EAAQx1N,GACxB,OAAiB,MAAVw1N,OAAiBt5N,EAAYs5N,EAAOx1N,EAC7C,wBCVA,IAAIkrU,EAAW3lU,EAAQ,MACnBsgS,EAActgS,EAAQ,MACtBmqB,EAAUnqB,EAAQ,MAClB6hS,EAAU7hS,EAAQ,MAClB8gS,EAAW9gS,EAAQ,MACnB0nS,EAAQ1nS,EAAQ,MAiCpB4gD,EAAO3gD,QAtBP,SAAiBgwN,EAAQryM,EAAMosT,GAO7B,IAJA,IAAIznU,GAAS,EACT7O,GAHJkqB,EAAO+nT,EAAS/nT,EAAMqyM,IAGJv8N,OACdmH,GAAS,IAEJ0H,EAAQ7O,GAAQ,CACvB,IAAI+G,EAAMitS,EAAM9pR,EAAKrb,IACrB,KAAM1H,EAAmB,MAAVo1N,GAAkB+5G,EAAQ/5G,EAAQx1N,IAC/C,MAEFw1N,EAASA,EAAOx1N,EAClB,CACA,OAAII,KAAY0H,GAAS7O,EAChBmH,KAETnH,EAAmB,MAAVu8N,EAAiB,EAAIA,EAAOv8N,SAClBotS,EAASptS,IAAWmuS,EAAQpnS,EAAK/G,KACjDy2B,EAAQ8lM,IAAWqwE,EAAYrwE,GACpC,oBCnCA,IAWIg6G,EAAexlT,OAAO,uFAa1Bm8B,EAAO3gD,QAJP,SAAoB0yI,GAClB,OAAOs3L,EAAa1mT,KAAKovH,EAC3B,oBCtBA,IAAIu3L,EAAmB,qEAavBtpR,EAAO3gD,QAJP,SAAwB0yI,GACtB,OAAOu3L,EAAiB3mT,KAAKovH,EAC/B,wBCZA,IAAIgsJ,EAAe3+R,EAAQ,MAc3B4gD,EAAO3gD,QALP,WACEwb,KAAK8hR,SAAWoB,EAAeA,EAAa,MAAQ,CAAC,EACrDljR,KAAKs/E,KAAO,CACd,oBCIAn6C,EAAO3gD,QANP,SAAoBxF,GAClB,IAAII,EAAS4gB,KAAKJ,IAAI5gB,WAAeghB,KAAK8hR,SAAS9iS,GAEnD,OADAghB,KAAKs/E,MAAQlgG,EAAS,EAAI,EACnBA,CACT,wBCdA,IAAI8jS,EAAe3+R,EAAQ,MASvBkrB,EAHc5wB,OAAOwgB,UAGQoQ,eAoBjC01B,EAAO3gD,QATP,SAAiBxF,GACf,IAAI6G,EAAOma,KAAK8hR,SAChB,GAAIoB,EAAc,CAChB,IAAI9jS,EAASyG,EAAK7G,GAClB,MArBiB,8BAqBVI,OAA4BlE,EAAYkE,CACjD,CACA,OAAOqwB,EAAe/P,KAAK7Z,EAAM7G,GAAO6G,EAAK7G,QAAO9D,CACtD,wBC3BA,IAAIgoS,EAAe3+R,EAAQ,MAMvBkrB,EAHc5wB,OAAOwgB,UAGQoQ,eAgBjC01B,EAAO3gD,QALP,SAAiBxF,GACf,IAAI6G,EAAOma,KAAK8hR,SAChB,OAAOoB,OAA8BhoS,IAAd2K,EAAK7G,GAAsBywB,EAAe/P,KAAK7Z,EAAM7G,EAC9E,wBCpBA,IAAIkkS,EAAe3+R,EAAQ,MAsB3B4gD,EAAO3gD,QAPP,SAAiBxF,EAAKzB,GACpB,IAAIsI,EAAOma,KAAK8hR,SAGhB,OAFA9hR,KAAKs/E,MAAQt/E,KAAKJ,IAAI5gB,GAAO,EAAI,EACjC6G,EAAK7G,GAAQkkS,QAA0BhoS,IAAVqC,EAfV,4BAekDA,EAC9DyiB,IACT,oBCnBA,IAGIyP,EAHc5wB,OAAOwgB,UAGQoQ,eAqBjC01B,EAAO3gD,QAZP,SAAwB26E,GACtB,IAAIlnF,EAASknF,EAAMlnF,OACfmH,EAAS,IAAI+/E,EAAMl/D,YAAYhoB,GAOnC,OAJIA,GAA6B,iBAAZknF,EAAM,IAAkB1vD,EAAe/P,KAAKy/D,EAAO,WACtE//E,EAAO0H,MAAQq4E,EAAMr4E,MACrB1H,EAAO0Z,MAAQqmE,EAAMrmE,OAEhB1Z,CACT,wBCvBA,IAAIwpS,EAAmBrkS,EAAQ,MAC3B4kS,EAAgB5kS,EAAQ,MACxB8kS,EAAc9kS,EAAQ,MACtB+kS,EAAc/kS,EAAQ,MACtB6kS,EAAkB7kS,EAAQ,KAwE9B4gD,EAAO3gD,QApCP,SAAwBgwN,EAAQjqJ,EAAKw8N,GACnC,IAAIlF,EAAOrtE,EAAOv0M,YAClB,OAAQsqD,GACN,IA3BiB,uBA4Bf,OAAOq+N,EAAiBp0E,GAE1B,IAvCU,mBAwCV,IAvCU,gBAwCR,OAAO,IAAIqtE,GAAMrtE,GAEnB,IAjCc,oBAkCZ,OAAO20E,EAAc30E,EAAQuyE,GAE/B,IAnCa,wBAmCI,IAlCJ,wBAmCb,IAlCU,qBAkCI,IAjCH,sBAiCkB,IAhClB,sBAiCX,IAhCW,sBAgCI,IA/BG,6BA+BmB,IA9BzB,uBA8ByC,IA7BzC,uBA8BV,OAAOqC,EAAgB50E,EAAQuyE,GAEjC,IAjDS,eA2DT,IAxDS,eAyDP,OAAO,IAAIlF,EARb,IAnDY,kBAoDZ,IAjDY,kBAkDV,OAAO,IAAIA,EAAKrtE,GAElB,IAtDY,kBAuDV,OAAO60E,EAAY70E,GAKrB,IAzDY,kBA0DV,OAAO80E,EAAY90E,GAEzB,uBC1EA,IAAIg1E,EAAajlS,EAAQ,MACrBq9R,EAAer9R,EAAQ,MACvB8hS,EAAc9hS,EAAQ,MAe1B4gD,EAAO3gD,QANP,SAAyBgwN,GACvB,MAAqC,mBAAtBA,EAAOv0M,aAA8BomR,EAAY7xE,GAE5D,CAAC,EADDg1E,EAAW5H,EAAaptE,GAE9B,oBCdA,IAGI2wE,EAAW,mBAoBfhgP,EAAO3gD,QAVP,SAAiBjH,EAAOtF,GACtB,IAAIqC,SAAciD,EAGlB,SAFAtF,EAAmB,MAAVA,EAfY,iBAewBA,KAGlC,UAARqC,GACU,UAARA,GAAoB6qS,EAASr9Q,KAAKvqB,KAChCA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQtF,CACjD,wBCtBA,IAAIy2B,EAAUnqB,EAAQ,MAClBsnS,EAAWtnS,EAAQ,KAGnBmqU,EAAe,mDACfC,EAAgB,QAuBpBxpR,EAAO3gD,QAbP,SAAejH,EAAOi3N,GACpB,GAAI9lM,EAAQnxB,GACV,OAAO,EAET,IAAIjD,SAAciD,EAClB,QAAY,UAARjD,GAA4B,UAARA,GAA4B,WAARA,GAC/B,MAATiD,IAAiBsuS,EAAStuS,MAGvBoxU,EAAc7mT,KAAKvqB,KAAWmxU,EAAa5mT,KAAKvqB,IAC1C,MAAVi3N,GAAkBj3N,KAASsB,OAAO21N,GACvC,oBCZArvK,EAAO3gD,QAPP,SAAmBjH,GACjB,IAAIjD,SAAciD,EAClB,MAAgB,UAARjD,GAA4B,UAARA,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAViD,EACU,OAAVA,CACP,uBCZA,IAAImlS,EAAan+R,EAAQ,MAGrBk+R,EAAc,WAChB,IAAIv2Q,EAAM,SAASwkB,KAAKgyP,GAAcA,EAAW5jS,MAAQ4jS,EAAW5jS,KAAK6jS,UAAY,IACrF,OAAOz2Q,EAAO,iBAAmBA,EAAO,EAC1C,CAHkB,GAgBlBi5B,EAAO3gD,QAJP,SAAkBm2R,GAChB,QAAS8H,GAAeA,KAAc9H,CACxC,oBChBA,IAAImG,EAAcjiS,OAAOwgB,UAgBzB8lC,EAAO3gD,QAPP,SAAqBjH,GACnB,IAAIskS,EAAOtkS,GAASA,EAAM0iB,YAG1B,OAAO1iB,KAFqB,mBAARskS,GAAsBA,EAAKxiR,WAAcyhR,EAG/D,wBCfA,IAAIhzQ,EAAWvpB,EAAQ,MAcvB4gD,EAAO3gD,QAJP,SAA4BjH,GAC1B,OAAOA,IAAUA,IAAUuwB,EAASvwB,EACtC,oBCKA4nD,EAAO3gD,QAVP,SAAyBqrS,GAIvB,IAHA,IAAIhqS,EACAzG,EAAS,KAEJyG,EAAOgqS,EAAS/xN,QAAQ1gF,MAC/BgC,EAAOK,KAAKoG,EAAKtI,OAEnB,OAAO6B,CACT,oBCHA+lD,EAAO3gD,QALP,WACEwb,KAAK8hR,SAAW,GAChB9hR,KAAKs/E,KAAO,CACd,wBCVA,IAAI2iM,EAAe19R,EAAQ,MAMvBsiC,EAHapY,MAAMpP,UAGCwnB,OA4BxBse,EAAO3gD,QAjBP,SAAyBxF,GACvB,IAAI6G,EAAOma,KAAK8hR,SACZh7R,EAAQm7R,EAAap8R,EAAM7G,GAE/B,QAAI8H,EAAQ,KAIRA,GADYjB,EAAK5N,OAAS,EAE5B4N,EAAKilB,MAEL+b,EAAOnnB,KAAK7Z,EAAMiB,EAAO,KAEzBkZ,KAAKs/E,MACA,EACT,wBChCA,IAAI2iM,EAAe19R,EAAQ,MAkB3B4gD,EAAO3gD,QAPP,SAAsBxF,GACpB,IAAI6G,EAAOma,KAAK8hR,SACZh7R,EAAQm7R,EAAap8R,EAAM7G,GAE/B,OAAO8H,EAAQ,OAAI5L,EAAY2K,EAAKiB,GAAO,EAC7C,wBChBA,IAAIm7R,EAAe19R,EAAQ,MAe3B4gD,EAAO3gD,QAJP,SAAsBxF,GACpB,OAAOijS,EAAajiR,KAAK8hR,SAAU9iS,IAAQ,CAC7C,wBCbA,IAAIijS,EAAe19R,EAAQ,MAyB3B4gD,EAAO3gD,QAbP,SAAsBxF,EAAKzB,GACzB,IAAIsI,EAAOma,KAAK8hR,SACZh7R,EAAQm7R,EAAap8R,EAAM7G,GAQ/B,OANI8H,EAAQ,KACRkZ,KAAKs/E,KACPz5F,EAAKpG,KAAK,CAACT,EAAKzB,KAEhBsI,EAAKiB,GAAO,GAAKvJ,EAEZyiB,IACT,wBCvBA,IAAImjR,EAAO5+R,EAAQ,MACf29R,EAAY39R,EAAQ,MACpBib,EAAMjb,EAAQ,MAkBlB4gD,EAAO3gD,QATP,WACEwb,KAAKs/E,KAAO,EACZt/E,KAAK8hR,SAAW,CACd,KAAQ,IAAIqB,EACZ,IAAO,IAAK3jR,GAAO0iR,GACnB,OAAU,IAAIiB,EAElB,wBClBA,IAAIO,EAAan/R,EAAQ,MAiBzB4gD,EAAO3gD,QANP,SAAwBxF,GACtB,IAAII,EAASskS,EAAW1jR,KAAMhhB,GAAa,OAAEA,GAE7C,OADAghB,KAAKs/E,MAAQlgG,EAAS,EAAI,EACnBA,CACT,wBCfA,IAAIskS,EAAan/R,EAAQ,MAezB4gD,EAAO3gD,QAJP,SAAqBxF,GACnB,OAAO0kS,EAAW1jR,KAAMhhB,GAAK0B,IAAI1B,EACnC,wBCbA,IAAI0kS,EAAan/R,EAAQ,MAezB4gD,EAAO3gD,QAJP,SAAqBxF,GACnB,OAAO0kS,EAAW1jR,KAAMhhB,GAAK4gB,IAAI5gB,EACnC,wBCbA,IAAI0kS,EAAan/R,EAAQ,MAqBzB4gD,EAAO3gD,QATP,SAAqBxF,EAAKzB,GACxB,IAAIsI,EAAO69R,EAAW1jR,KAAMhhB,GACxBsgG,EAAOz5F,EAAKy5F,KAIhB,OAFAz5F,EAAKga,IAAI7gB,EAAKzB,GACdyiB,KAAKs/E,MAAQz5F,EAAKy5F,MAAQA,EAAO,EAAI,EAC9Bt/E,IACT,mBCFAmlC,EAAO3gD,QAVP,SAAoB1E,GAClB,IAAIgH,GAAS,EACT1H,EAASqvB,MAAM3uB,EAAIw/F,MAKvB,OAHAx/F,EAAIf,SAAQ,SAASxB,EAAOyB,GAC1BI,IAAS0H,GAAS,CAAC9H,EAAKzB,EAC1B,IACO6B,CACT,mBCIA+lD,EAAO3gD,QAVP,SAAiCxF,EAAKusU,GACpC,OAAO,SAAS/2G,GACd,OAAc,MAAVA,IAGGA,EAAOx1N,KAASusU,SACPrwU,IAAbqwU,GAA2BvsU,KAAOH,OAAO21N,IAC9C,CACF,wBCjBA,IAAI62E,EAAU9mS,EAAQ,MAyBtB4gD,EAAO3gD,QAZP,SAAuBm2R,GACrB,IAAIv7R,EAASisS,EAAQ1Q,GAAM,SAAS37R,GAIlC,OAfmB,MAYfqvG,EAAM/O,MACR+O,EAAM/yF,QAEDtc,CACT,IAEIqvG,EAAQjvG,EAAOivG,MACnB,OAAOjvG,CACT,wBCvBA,IAGI8jS,EAHY3+R,EAAQ,KAGL0+R,CAAUpkS,OAAQ,UAErCsmD,EAAO3gD,QAAU0+R,wBCLjB,IAGIoD,EAHU/hS,EAAQ,KAGL+8R,CAAQziS,OAAOC,KAAMD,QAEtCsmD,EAAO3gD,QAAU8hS,oBCcjBnhP,EAAO3gD,QAVP,SAAsBgwN,GACpB,IAAIp1N,EAAS,GACb,GAAc,MAAVo1N,EACF,IAAK,IAAIx1N,KAAOH,OAAO21N,GACrBp1N,EAAOK,KAAKT,GAGhB,OAAOI,CACT,mCCjBA,IAAIyhS,EAAat8R,EAAQ,MAGrBwgS,EAA4CvgS,IAAYA,EAAQ80C,UAAY90C,EAG5EwgS,EAAaD,GAA4C5/O,IAAWA,EAAO7L,UAAY6L,EAMvFmgP,EAHgBN,GAAcA,EAAWxgS,UAAYugS,GAGtBlE,EAAWpyL,QAG1Cg3L,EAAY,WACd,IAEE,IAAI7wK,EAAQowK,GAAcA,EAAWzgS,SAAWygS,EAAWzgS,QAAQ,QAAQqwH,MAE3E,OAAIA,GAKG0wK,GAAeA,EAAYC,SAAWD,EAAYC,QAAQ,OACnE,CAAE,MAAO9pS,GAAI,CACf,CAZgB,GAchB0pD,EAAO3gD,QAAUihS,oBC5BjB,IAOI1E,EAPcliS,OAAOwgB,UAOcjkB,SAavC+pD,EAAO3gD,QAJP,SAAwBjH,GACtB,OAAOwjS,EAAqBrhR,KAAKniB,EACnC,oBCLA4nD,EAAO3gD,QANP,SAAiBm2R,EAAMv2O,GACrB,OAAO,SAAS2B,GACd,OAAO40O,EAAKv2O,EAAU2B,GACxB,CACF,wBCZA,IAAI86O,EAAat8R,EAAQ,MAGrBo8R,EAA0B,iBAARC,MAAoBA,MAAQA,KAAK/hS,SAAWA,QAAU+hS,KAGxEj9N,EAAOk9N,GAAcF,GAAYxhR,SAAS,cAATA,GAErCgmC,EAAO3gD,QAAUm/D,oBCUjBxe,EAAO3gD,QALP,SAAqBjH,GAEnB,OADAyiB,KAAK8hR,SAASjiR,IAAItiB,EAbC,6BAcZyiB,IACT,oBCHAmlC,EAAO3gD,QAJP,SAAqBjH,GACnB,OAAOyiB,KAAK8hR,SAASliR,IAAIriB,EAC3B,oBCMA4nD,EAAO3gD,QAVP,SAAoBqb,GAClB,IAAI/Y,GAAS,EACT1H,EAASqvB,MAAM5O,EAAIy/E,MAKvB,OAHAz/E,EAAI9gB,SAAQ,SAASxB,GACnB6B,IAAS0H,GAASvJ,CACpB,IACO6B,CACT,uBCfA,IAAI8iS,EAAY39R,EAAQ,MAcxB4gD,EAAO3gD,QALP,WACEwb,KAAK8hR,SAAW,IAAII,EACpBliR,KAAKs/E,KAAO,CACd,mBCKAn6C,EAAO3gD,QARP,SAAqBxF,GACnB,IAAI6G,EAAOma,KAAK8hR,SACZ1iS,EAASyG,EAAa,OAAE7G,GAG5B,OADAghB,KAAKs/E,KAAOz5F,EAAKy5F,KACVlgG,CACT,mBCFA+lD,EAAO3gD,QAJP,SAAkBxF,GAChB,OAAOghB,KAAK8hR,SAASphS,IAAI1B,EAC3B,oBCEAmmD,EAAO3gD,QAJP,SAAkBxF,GAChB,OAAOghB,KAAK8hR,SAASliR,IAAI5gB,EAC3B,wBCXA,IAAIkjS,EAAY39R,EAAQ,MACpBib,EAAMjb,EAAQ,MACdo/R,EAAWp/R,EAAQ,MA+BvB4gD,EAAO3gD,QAhBP,SAAkBxF,EAAKzB,GACrB,IAAIsI,EAAOma,KAAK8hR,SAChB,GAAIj8R,aAAgBq8R,EAAW,CAC7B,IAAIrH,EAAQh1R,EAAKi8R,SACjB,IAAKtiR,GAAQq7Q,EAAM5iS,OAASgsS,IAG1B,OAFApJ,EAAMp7R,KAAK,CAACT,EAAKzB,IACjByiB,KAAKs/E,OAASz5F,EAAKy5F,KACZt/E,KAETna,EAAOma,KAAK8hR,SAAW,IAAI6B,EAAS9I,EACtC,CAGA,OAFAh1R,EAAKga,IAAI7gB,EAAKzB,GACdyiB,KAAKs/E,KAAOz5F,EAAKy5F,KACVt/E,IACT,wBC/BA,IAAI4uT,EAAerqU,EAAQ,MACvBgoU,EAAahoU,EAAQ,MACrBsqU,EAAiBtqU,EAAQ,MAe7B4gD,EAAO3gD,QANP,SAAuB0yI,GACrB,OAAOq1L,EAAWr1L,GACd23L,EAAe33L,GACf03L,EAAa13L,EACnB,uBCfA,IAAIw0J,EAAgBnnS,EAAQ,MAGxBinS,EAAa,mGAGbC,EAAe,WASfS,EAAeR,GAAc,SAASx0J,GACxC,IAAI93I,EAAS,GAOb,OAN6B,KAAzB83I,EAAO3tF,WAAW,IACpBnqD,EAAOK,KAAK,IAEdy3I,EAAOzgI,QAAQ+0R,GAAY,SAASpjR,EAAO2vD,EAAQ4zN,EAAOC,GACxDxsS,EAAOK,KAAKksS,EAAQC,EAAUn1R,QAAQg1R,EAAc,MAAS1zN,GAAU3vD,EACzE,IACOhpB,CACT,IAEA+lD,EAAO3gD,QAAU0nS,wBC1BjB,IAAIL,EAAWtnS,EAAQ,KAoBvB4gD,EAAO3gD,QARP,SAAejH,GACb,GAAoB,iBAATA,GAAqBsuS,EAAStuS,GACvC,OAAOA,EAET,IAAI6B,EAAU7B,EAAQ,GACtB,MAAkB,KAAV6B,GAAkB,EAAI7B,IAdjB,SAcwC,KAAO6B,CAC9D,oBCjBA,IAGIoiS,EAHYriR,SAASE,UAGIjkB,SAqB7B+pD,EAAO3gD,QAZP,SAAkBm2R,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAO6G,EAAa9hR,KAAKi7Q,EAC3B,CAAE,MAAOl/R,GAAI,CACb,IACE,OAAQk/R,EAAO,EACjB,CAAE,MAAOl/R,GAAI,CACf,CACA,MAAO,EACT,oBCtBA,IAAIqzU,EAAgB,kBAQhBC,EAAW,IAAMD,EAAgB,IACjCE,EAAU,kDACVC,EAAS,2BAETC,EAAc,KAAOJ,EAAgB,IACrCK,EAAa,kCACbC,EAAa,qCAIbC,EAPa,MAAQL,EAAU,IAAMC,EAAS,IAOtB,IACxBK,EAAW,oBAEXC,EAAQD,EAAWD,GADP,gBAAwB,CAACH,EAAaC,EAAYC,GAAYnoT,KAAK,KAAO,IAAMqoT,EAAWD,EAAW,MAElHG,EAAW,MAAQ,CAACN,EAAcF,EAAU,IAAKA,EAASG,EAAYC,EAAYL,GAAU9nT,KAAK,KAAO,IAGxGwoT,EAAYzmT,OAAOimT,EAAS,MAAQA,EAAS,KAAOO,EAAWD,EAAO,KAa1EpqR,EAAO3gD,QAJP,SAAwB0yI,GACtB,OAAOA,EAAO9uH,MAAMqnT,IAAc,EACpC,oBCpCA,IAAIX,EAAgB,kBAKhBY,EAAiB,kBACjBC,EAAe,4BAKfC,EAAe,4BAEfC,EAAeC,8OAIfC,EAAU,IAAMF,EAAe,IAE/BG,EAAW,OACXC,EAAY,IAAMP,EAAiB,IACnCQ,EAAU,IAAMP,EAAe,IAC/BQ,EAAS,KAAOrB,EAAgBe,EAAeG,EAAWN,EAAiBC,EAAeC,EAAe,IAIzGT,EAAa,kCACbC,EAAa,qCACbgB,EAAU,IAAMR,EAAe,IAI/BS,EAAc,MAAQH,EAAU,IAAMC,EAAS,IAC/CG,EAAc,MAAQF,EAAU,IAAMD,EAAS,IAC/CI,EAAkB,qCAClBC,EAAkB,qCAClBnB,EAAWoB,gFACXnB,EAAW,oBAIXC,EAAQD,EAAWD,GAHP,gBAAwB,CAbtB,KAAOP,EAAgB,IAaaK,EAAYC,GAAYnoT,KAAK,KAAO,IAAMqoT,EAAWD,EAAW,MAIlHqB,EAAU,MAAQ,CAACT,EAAWd,EAAYC,GAAYnoT,KAAK,KAAO,IAAMsoT,EAGxEoB,EAAgB3nT,OAAO,CACzBonT,EAAU,IAAMF,EAAU,IAAMK,EAAkB,MAAQ,CAACR,EAASK,EAAS,KAAKnpT,KAAK,KAAO,IAC9FqpT,EAAc,IAAME,EAAkB,MAAQ,CAACT,EAASK,EAAUC,EAAa,KAAKppT,KAAK,KAAO,IAChGmpT,EAAU,IAAMC,EAAc,IAAME,EACpCH,EAAU,IAAMI,EATD,mDADA,mDAafR,EACAU,GACAzpT,KAAK,KAAM,KAabk+B,EAAO3gD,QAJP,SAAsB0yI,GACpB,OAAOA,EAAO9uH,MAAMuoT,IAAkB,EACxC,uBClEA,IAAIC,EAAarsU,EAAQ,MAuBrBspT,EAtBmBtpT,EAAQ,KAsBfssU,EAAiB,SAASzxU,EAAQ0xU,EAAMhqU,GAEtD,OADAgqU,EAAOA,EAAKzyU,cACLe,GAAU0H,EAAQ8pU,EAAWE,GAAQA,EAC9C,IAEA3rR,EAAO3gD,QAAUqpT,wBC5BjB,IAAIzyT,EAAWmJ,EAAQ,MACnBwsU,EAAaxsU,EAAQ,MAqBzB4gD,EAAO3gD,QAJP,SAAoB0yI,GAClB,OAAO65L,EAAW31U,EAAS87I,GAAQ74I,cACrC,sBCpBA,IAAI8rS,EAAY5lS,EAAQ,MAuCxB4gD,EAAO3gD,QALP,SAAuBjH,EAAOmnS,GAE5B,OAAOyF,EAAU5sS,EAAO4uS,EADxBzH,EAAkC,mBAAdA,EAA2BA,OAAaxpS,EAE9D,wBCrCA,IAAI8xU,EAAezoU,EAAQ,MACvBnJ,EAAWmJ,EAAQ,MAGnBysU,EAAU,8CAeVC,EAAcjoT,OANJ,kDAMoB,KAyBlCm8B,EAAO3gD,QALP,SAAgB0yI,GAEd,OADAA,EAAS97I,EAAS87I,KACDA,EAAOzgI,QAAQu6T,EAAShE,GAAcv2T,QAAQw6T,EAAa,GAC9E,oBCNA9rR,EAAO3gD,QAJP,SAAYjH,EAAOwkS,GACjB,OAAOxkS,IAAUwkS,GAAUxkS,IAAUA,GAASwkS,IAAUA,CAC1D,wBClCA,IAAImqC,EAAU3nU,EAAQ,MAgCtB4gD,EAAO3gD,QALP,SAAagwN,EAAQryM,EAAMg6B,GACzB,IAAI/8C,EAAmB,MAAVo1N,OAAiBt5N,EAAYgxU,EAAQ13G,EAAQryM,GAC1D,YAAkBjnB,IAAXkE,EAAuB+8C,EAAe/8C,CAC/C,wBC9BA,IAAI8xU,EAAU3sU,EAAQ,MAClB4sU,EAAU5sU,EAAQ,MAiCtB4gD,EAAO3gD,QAJP,SAAagwN,EAAQryM,GACnB,OAAiB,MAAVqyM,GAAkB28G,EAAQ38G,EAAQryM,EAAM+uT,EACjD,wBChCA,IAAIE,EAAY7sU,EAAQ,KACpB4sU,EAAU5sU,EAAQ,MAgCtB4gD,EAAO3gD,QAJP,SAAegwN,EAAQryM,GACrB,OAAiB,MAAVqyM,GAAkB28G,EAAQ38G,EAAQryM,EAAMivT,EACjD,oBCXAjsR,EAAO3gD,QAJP,SAAkBjH,GAChB,OAAOA,CACT,wBClBA,IAAIunS,EAAkBvgS,EAAQ,MAC1Bm9R,EAAen9R,EAAQ,MAGvBu8R,EAAcjiS,OAAOwgB,UAGrBoQ,EAAiBqxQ,EAAYrxQ,eAG7Bm1Q,EAAuB9D,EAAY8D,qBAoBnCC,EAAcC,EAAgB,WAAa,OAAOzmR,SAAW,CAA/B,IAAsCymR,EAAkB,SAASvnS,GACjG,OAAOmkS,EAAankS,IAAUkyB,EAAe/P,KAAKniB,EAAO,YACtDqnS,EAAqBllR,KAAKniB,EAAO,SACtC,EAEA4nD,EAAO3gD,QAAUqgS,oBCZjB,IAAIn2Q,EAAUD,MAAMC,QAEpBy2B,EAAO3gD,QAAUkqB,wBCzBjB,IAAImqQ,EAAat0R,EAAQ,MACrB8gS,EAAW9gS,EAAQ,MA+BvB4gD,EAAO3gD,QAJP,SAAqBjH,GACnB,OAAgB,MAATA,GAAiB8nS,EAAS9nS,EAAMtF,UAAY4gS,EAAWt7R,EAChE,mCC9BA,IAAIomE,EAAOp/D,EAAQ,MACf2gS,EAAY3gS,EAAQ,MAGpBwgS,EAA4CvgS,IAAYA,EAAQ80C,UAAY90C,EAG5EwgS,EAAaD,GAA4C5/O,IAAWA,EAAO7L,UAAY6L,EAMvF8/O,EAHgBD,GAAcA,EAAWxgS,UAAYugS,EAG5BphO,EAAKshO,YAAS/pS,EAsBvC46R,GAnBiBmP,EAASA,EAAOnP,cAAW56R,IAmBfgqS,EAEjC//O,EAAO3gD,QAAUsxR,wBCrCjB,IAAI6L,EAAap9R,EAAQ,MACrBupB,EAAWvpB,EAAQ,MAmCvB4gD,EAAO3gD,QAVP,SAAoBjH,GAClB,IAAKuwB,EAASvwB,GACZ,OAAO,EAIT,IAAIgtE,EAAMo3N,EAAWpkS,GACrB,MA5BY,qBA4BLgtE,GA3BI,8BA2BcA,GA7BZ,0BA6B6BA,GA1B7B,kBA0BgDA,CAC/D,oBCAAplB,EAAO3gD,QALP,SAAkBjH,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GA9Bb,gBA+BvB,uBChCA,IAAIosS,EAAYplS,EAAQ,MACpBohS,EAAYphS,EAAQ,MACpBkhS,EAAWlhS,EAAQ,MAGnBklS,EAAYhE,GAAYA,EAASiE,MAmBjCA,EAAQD,EAAY9D,EAAU8D,GAAaE,EAE/CxkP,EAAO3gD,QAAUklS,oBCIjBvkP,EAAO3gD,QALP,SAAkBjH,GAChB,IAAIjD,SAAciD,EAClB,OAAgB,MAATA,IAA0B,UAARjD,GAA4B,YAARA,EAC/C,oBCAA6qD,EAAO3gD,QAJP,SAAsBjH,GACpB,OAAgB,MAATA,GAAiC,iBAATA,CACjC,wBC1BA,IAAIusS,EAAYvlS,EAAQ,MACpBohS,EAAYphS,EAAQ,MACpBkhS,EAAWlhS,EAAQ,MAGnBqlS,EAAYnE,GAAYA,EAASoE,MAmBjCA,EAAQD,EAAYjE,EAAUiE,GAAaE,EAE/C3kP,EAAO3gD,QAAUqlS,wBC1BjB,IAAIlI,EAAap9R,EAAQ,MACrBmqB,EAAUnqB,EAAQ,MAClBm9R,EAAen9R,EAAQ,MA2B3B4gD,EAAO3gD,QALP,SAAkBjH,GAChB,MAAuB,iBAATA,IACVmxB,EAAQnxB,IAAUmkS,EAAankS,IArBrB,mBAqB+BokS,EAAWpkS,EAC1D,uBC3BA,IAAIokS,EAAap9R,EAAQ,MACrBm9R,EAAen9R,EAAQ,MA2B3B4gD,EAAO3gD,QALP,SAAkBjH,GAChB,MAAuB,iBAATA,GACXmkS,EAAankS,IArBF,mBAqBYokS,EAAWpkS,EACvC,wBC1BA,IAAIqoS,EAAmBrhS,EAAQ,MAC3BohS,EAAYphS,EAAQ,MACpBkhS,EAAWlhS,EAAQ,MAGnBihS,EAAmBC,GAAYA,EAASC,aAmBxCA,EAAeF,EAAmBG,EAAUH,GAAoBI,EAEpEzgP,EAAO3gD,QAAUkhS,wBC1BjB,IAAIc,EAAgBjiS,EAAQ,MACxBkiS,EAAWliS,EAAQ,MACnBgiS,EAAchiS,EAAQ,MAkC1B4gD,EAAO3gD,QAJP,SAAcgwN,GACZ,OAAO+xE,EAAY/xE,GAAUgyE,EAAchyE,GAAUiyE,EAASjyE,EAChE,wBClCA,IAAIgyE,EAAgBjiS,EAAQ,MACxBqiS,EAAariS,EAAQ,MACrBgiS,EAAchiS,EAAQ,MA6B1B4gD,EAAO3gD,QAJP,SAAgBgwN,GACd,OAAO+xE,EAAY/xE,GAAUgyE,EAAchyE,GAAQ,GAAQoyE,EAAWpyE,EACxE,wBC7BA,IAAIiwE,EAAkBlgS,EAAQ,MAC1B8sU,EAAa9sU,EAAQ,MACrB+sU,EAAe/sU,EAAQ,MAiC3B4gD,EAAO3gD,QAVP,SAAiBgwN,EAAQgwE,GACvB,IAAIplS,EAAS,CAAC,EAMd,OALAolS,EAAW8sC,EAAa9sC,EAAU,GAElC6sC,EAAW78G,GAAQ,SAASj3N,EAAOyB,EAAKw1N,GACtCiwE,EAAgBrlS,EAAQolS,EAASjnS,EAAOyB,EAAKw1N,GAASj3N,EACxD,IACO6B,CACT,wBCjCA,IAAIqlS,EAAkBlgS,EAAQ,MAC1B8sU,EAAa9sU,EAAQ,MACrB+sU,EAAe/sU,EAAQ,MAwC3B4gD,EAAO3gD,QAVP,SAAmBgwN,EAAQgwE,GACzB,IAAIplS,EAAS,CAAC,EAMd,OALAolS,EAAW8sC,EAAa9sC,EAAU,GAElC6sC,EAAW78G,GAAQ,SAASj3N,EAAOyB,EAAKw1N,GACtCiwE,EAAgBrlS,EAAQJ,EAAKwlS,EAASjnS,EAAOyB,EAAKw1N,GACpD,IACOp1N,CACT,wBCxCA,IAAIukS,EAAWp/R,EAAQ,MAiDvB,SAAS8mS,EAAQ1Q,EAAM1nK,GACrB,GAAmB,mBAAR0nK,GAAmC,MAAZ1nK,GAAuC,mBAAZA,EAC3D,MAAM,IAAItzG,UAhDQ,uBAkDpB,IAAI2rR,EAAW,SAAXA,IACF,IAAIr9R,EAAOoQ,UACPrf,EAAMi0H,EAAWA,EAAS/zG,MAAMc,KAAM/R,GAAQA,EAAK,GACnDogG,EAAQi9L,EAASj9L,MAErB,GAAIA,EAAMzuF,IAAI5gB,GACZ,OAAOqvG,EAAM3tG,IAAI1B,GAEnB,IAAII,EAASu7R,EAAKz7Q,MAAMc,KAAM/R,GAE9B,OADAq9R,EAASj9L,MAAQA,EAAMxuF,IAAI7gB,EAAKI,IAAWivG,EACpCjvG,CACT,EAEA,OADAksS,EAASj9L,MAAQ,IAAKg9L,EAAQE,OAAS5H,GAChC2H,CACT,CAGAD,EAAQE,MAAQ5H,EAEhBx+O,EAAO3gD,QAAU6mS,sBCxEjB,IAAIkmC,EAAehtU,EAAQ,MACvBitU,EAAmBjtU,EAAQ,MAC3BynU,EAAQznU,EAAQ,MAChB0nS,EAAQ1nS,EAAQ,MA4BpB4gD,EAAO3gD,QAJP,SAAkB2d,GAChB,OAAO6pT,EAAM7pT,GAAQovT,EAAatlC,EAAM9pR,IAASqvT,EAAiBrvT,EACpE,wBC7BA,IAuBIsvT,EAvBmBltU,EAAQ,KAuBfssU,EAAiB,SAASzxU,EAAQ0xU,EAAMhqU,GACtD,OAAO1H,GAAU0H,EAAQ,IAAM,IAAMgqU,EAAKzyU,aAC5C,IAEA8mD,EAAO3gD,QAAUitU,oBCLjBtsR,EAAO3gD,QAJP,WACE,MAAO,EACT,oBCHA2gD,EAAO3gD,QAJP,WACE,OAAO,CACT,wBCfA,IAAIwnB,EAASznB,EAAQ,MACjBgmS,EAAYhmS,EAAQ,KACpBgkS,EAAShkS,EAAQ,MACjBgiS,EAAchiS,EAAQ,MACtB+xR,EAAW/xR,EAAQ,MACnBmtU,EAAkBntU,EAAQ,MAC1BupU,EAAavpU,EAAQ,KACrBwpU,EAAaxpU,EAAQ,MACrBioU,EAAgBjoU,EAAQ,MACxB9F,EAAS8F,EAAQ,MAOjBotU,EAAc3lT,EAASA,EAAO6jR,cAAW30S,EAyC7CiqD,EAAO3gD,QAhBP,SAAiBjH,GACf,IAAKA,EACH,MAAO,GAET,GAAIgpS,EAAYhpS,GACd,OAAO+4R,EAAS/4R,GAASivU,EAAcjvU,GAASgtS,EAAUhtS,GAE5D,GAAIo0U,GAAep0U,EAAMo0U,GACvB,OAAOD,EAAgBn0U,EAAMo0U,MAE/B,IAAIpnQ,EAAMg+N,EAAOhrS,GAGjB,OA1CW,gBAwCAgtE,EAAgBujQ,EAvChB,gBAuC8BvjQ,EAAgBwjQ,EAAatvU,GAE1DlB,EACd,wBCvDA,IAAIwuS,EAAexnS,EAAQ,MA2B3B4gD,EAAO3gD,QAJP,SAAkBjH,GAChB,OAAgB,MAATA,EAAgB,GAAKwuS,EAAaxuS,EAC3C,wBCzBA,IAmBIwzU,EAnBkBxsU,EAAQ,IAmBbqtU,CAAgB,eAEjCzsR,EAAO3gD,QAAUusU,wBCrBjB,IAAIc,EAAattU,EAAQ,MACrBzF,EAAOyF,EAAQ,MAgCnB4gD,EAAO3gD,QAJP,SAAgBgwN,GACd,OAAiB,MAAVA,EAAiB,GAAKq9G,EAAWr9G,EAAQ11N,EAAK01N,GACvD,wBC/BA,IAAIs9G,EAAavtU,EAAQ,KACrBwtU,EAAiBxtU,EAAQ,MACzBnJ,EAAWmJ,EAAQ,MACnBytU,EAAeztU,EAAQ,MA+B3B4gD,EAAO3gD,QAVP,SAAe0yI,EAAQzuH,EAASwpT,GAI9B,OAHA/6L,EAAS97I,EAAS87I,QAGFh8I,KAFhButB,EAAUwpT,OAAQ/2U,EAAYutB,GAGrBspT,EAAe76L,GAAU86L,EAAa96L,GAAU46L,EAAW56L,GAE7DA,EAAO9uH,MAAMK,IAAY,EAClC,iCCxBA,IAAIy+Q,EAAwBroS,OAAOqoS,sBAC/Bz3Q,EAAiB5wB,OAAOwgB,UAAUoQ,eAClCyiT,EAAmBrzU,OAAOwgB,UAAUulR,qBAsDxCz/O,EAAO3gD,QA5CP,WACC,IACC,IAAK3F,OAAOulB,OACX,OAAO,EAMR,IAAI+tT,EAAQ,IAAI3oR,OAAO,OAEvB,GADA2oR,EAAM,GAAK,KACkC,MAAzCtzU,OAAOs8C,oBAAoBg3R,GAAO,GACrC,OAAO,EAKR,IADA,IAAIC,EAAQ,CAAC,EACJjtT,EAAI,EAAGA,EAAI,GAAIA,IACvBitT,EAAM,IAAM5oR,OAAOC,aAAatkC,IAAMA,EAKvC,GAAwB,eAHXtmB,OAAOs8C,oBAAoBi3R,GAAOtyU,KAAI,SAAU3C,GAC5D,OAAOi1U,EAAMj1U,EACd,IACW8pB,KAAK,IACf,OAAO,EAIR,IAAIorT,EAAQ,CAAC,EAIb,MAHA,uBAAuBp+T,MAAM,IAAIlV,SAAQ,SAAU6uT,GAClDykB,EAAMzkB,GAAUA,CACjB,IAEE,yBADE/uT,OAAOC,KAAKD,OAAOulB,OAAO,CAAC,EAAGiuT,IAAQprT,KAAK,GAMhD,CAAE,MAAOnpB,GAER,OAAO,CACR,CACD,CAEiBw0U,GAAoBzzU,OAAOulB,OAAS,SAAU+5B,EAAQh4C,GAKtE,IAJA,IAAIikB,EAEAyS,EADAvjB,EAtDL,SAAkBqE,GACjB,GAAY,OAARA,QAAwBziB,IAARyiB,EACnB,MAAM,IAAIgC,UAAU,yDAGrB,OAAO9gB,OAAO8e,EACf,CAgDU40T,CAASp0R,GAGTjhD,EAAI,EAAGA,EAAImhB,UAAUpmB,OAAQiF,IAAK,CAG1C,IAAK,IAAI8B,KAFTorB,EAAOvrB,OAAOwf,UAAUnhB,IAGnBuyB,EAAe/P,KAAK0K,EAAMprB,KAC7Bsa,EAAGta,GAAOorB,EAAKprB,IAIjB,GAAIkoS,EAAuB,CAC1BrqQ,EAAUqqQ,EAAsB98Q,GAChC,IAAK,IAAIjF,EAAI,EAAGA,EAAI0X,EAAQ5kC,OAAQktB,IAC/B+sT,EAAiBxyT,KAAK0K,EAAMyS,EAAQ1X,MACvC7L,EAAGujB,EAAQ1X,IAAMiF,EAAKyS,EAAQ1X,IAGjC,CACD,CAEA,OAAO7L,CACR,wBCzFA,IAAIk5T,EAAwB,oBAARhzT,KAAsBA,IAAIH,UAC1CozT,EAAoB5zU,OAAOihD,0BAA4B0yR,EAAS3zU,OAAOihD,yBAAyBtgC,IAAIH,UAAW,QAAU,KACzHqzT,EAAUF,GAAUC,GAAsD,oBAA1BA,EAAkB/xU,IAAqB+xU,EAAkB/xU,IAAM,KAC/GiyU,EAAaH,GAAUhzT,IAAIH,UAAUtgB,QACrC6zU,EAAwB,oBAARruT,KAAsBA,IAAIlF,UAC1CwzT,EAAoBh0U,OAAOihD,0BAA4B8yR,EAAS/zU,OAAOihD,yBAAyBv7B,IAAIlF,UAAW,QAAU,KACzHyzT,EAAUF,GAAUC,GAAsD,oBAA1BA,EAAkBnyU,IAAqBmyU,EAAkBnyU,IAAM,KAC/GqyU,EAAaH,GAAUruT,IAAIlF,UAAUtgB,QAErCi0U,EADgC,oBAAZ1qC,SAA0BA,QAAQjpR,UAC5BipR,QAAQjpR,UAAUO,IAAM,KAElDqzT,EADgC,oBAAZh5B,SAA0BA,QAAQ56R,UAC5B46R,QAAQ56R,UAAUO,IAAM,KAElDszT,EADgC,oBAAZl5B,SAA0BA,QAAQ36R,UAC1B26R,QAAQ36R,UAAU8zT,MAAQ,KACtDC,EAAiBnhC,QAAQ5yR,UAAUyzD,QACnCuuN,EAAiBxiS,OAAOwgB,UAAUjkB,SAClCi4U,EAAmBl0T,SAASE,UAAUjkB,SACtCk4U,EAAS9pR,OAAOnqC,UAAU+I,MAC1BmrT,EAAS/pR,OAAOnqC,UAAUhC,MAC1Bo9R,EAAWjxP,OAAOnqC,UAAU5I,QAC5B+8T,EAAehqR,OAAOnqC,UAAUjC,YAChCq2T,EAAejqR,OAAOnqC,UAAUhhB,YAChCq1U,EAAQ1qT,OAAO3J,UAAUyI,KACzByyR,EAAU9rR,MAAMpP,UAAU1e,OAC1BgzU,EAAQllT,MAAMpP,UAAU4H,KACxB2sT,EAAYnlT,MAAMpP,UAAUhC,MAC5Bw2T,EAAShyT,KAAKiU,MACdg+S,EAAkC,oBAAXj7B,OAAwBA,OAAOx5R,UAAUyzD,QAAU,KAC1EihQ,EAAOl1U,OAAOqoS,sBACd8sC,EAAgC,oBAAXhoT,QAAoD,kBAApBA,OAAO6jR,SAAwB7jR,OAAO3M,UAAUjkB,SAAW,KAChH64U,EAAsC,oBAAXjoT,QAAoD,kBAApBA,OAAO6jR,SAElE5O,EAAgC,oBAAXj1Q,QAAyBA,OAAOi1Q,qBAAuBj1Q,OAAOi1Q,cAAgBgzC,GAA+B,UAChIjoT,OAAOi1Q,YACP,KACFizC,EAAer1U,OAAOwgB,UAAUulR,qBAEhCuvC,GAA0B,oBAAZr1T,QAAyBA,QAAQiB,eAAiBlhB,OAAOkhB,kBACvE,GAAG0/B,YAAchxB,MAAMpP,UACjB,SAAUm8R,GACR,OAAOA,EAAE/7P,SACb,EACE,MAGV,SAAS20R,EAAoB1nT,EAAK6G,GAC9B,GACI7G,IAAQoZ,KACLpZ,KAASoZ,KACTpZ,IAAQA,GACPA,GAAOA,GAAO,KAAQA,EAAM,KAC7BgnT,EAAMh0T,KAAK,IAAK6T,GAEnB,OAAOA,EAEX,IAAI8gT,EAAW,mCACf,GAAmB,kBAAR3nT,EAAkB,CACzB,IAAI4nT,EAAM5nT,EAAM,GAAKmnT,GAAQnnT,GAAOmnT,EAAOnnT,GAC3C,GAAI4nT,IAAQ5nT,EAAK,CACb,IAAI6nT,EAAS/qR,OAAO8qR,GAChBz5S,EAAM04S,EAAO7zT,KAAK6T,EAAKghT,EAAOt8U,OAAS,GAC3C,OAAOwiT,EAAS/6R,KAAK60T,EAAQF,EAAU,OAAS,IAAM55B,EAAS/6R,KAAK+6R,EAAS/6R,KAAKmb,EAAK,cAAe,OAAQ,KAAM,GACxH,CACJ,CACA,OAAO4/Q,EAAS/6R,KAAK6T,EAAK8gT,EAAU,MACxC,CAEA,IAAIG,EAAcjwU,EAAQ,MACtBkwU,EAAgBD,EAAYjvS,OAC5BmvS,EAAgB7oC,EAAS4oC,GAAiBA,EAAgB,KA4L9D,SAASE,EAAWz3U,EAAG03U,EAAcj8C,GACjC,IAAIk8C,EAAkD,YAArCl8C,EAAKm8C,YAAcF,GAA6B,IAAM,IACvE,OAAOC,EAAY33U,EAAI23U,CAC3B,CAEA,SAASlpC,EAAMzuS,GACX,OAAOu9S,EAAS/6R,KAAK8pC,OAAOtsD,GAAI,KAAM,SAC1C,CAEA,SAASwxB,EAAQpB,GAAO,MAAsB,mBAAf8pR,EAAM9pR,MAA+B2zQ,KAAgC,kBAAR3zQ,GAAoB2zQ,KAAe3zQ,GAAO,CAEtI,SAASynT,EAASznT,GAAO,MAAsB,oBAAf8pR,EAAM9pR,MAAgC2zQ,KAAgC,kBAAR3zQ,GAAoB2zQ,KAAe3zQ,GAAO,CAOxI,SAASu+Q,EAASv+Q,GACd,GAAI2mT,EACA,OAAO3mT,GAAsB,kBAARA,GAAoBA,aAAetB,OAE5D,GAAmB,kBAARsB,EACP,OAAO,EAEX,IAAKA,GAAsB,kBAARA,IAAqB0mT,EACpC,OAAO,EAEX,IAEI,OADAA,EAAYt0T,KAAK4N,IACV,CACX,CAAE,MAAO7xB,GAAI,CACb,OAAO,CACX,CA3NA0pD,EAAO3gD,QAAU,SAASwwU,EAAS1nT,EAAK5M,EAASy2D,EAAOs2P,GACpD,IAAI90C,EAAOj4Q,GAAW,CAAC,EAEvB,GAAId,EAAI+4Q,EAAM,eAAsC,WAApBA,EAAKm8C,YAA+C,WAApBn8C,EAAKm8C,WACjE,MAAM,IAAIn1T,UAAU,oDAExB,GACIC,EAAI+4Q,EAAM,qBAAuD,kBAAzBA,EAAKs8C,gBACvCt8C,EAAKs8C,gBAAkB,GAAKt8C,EAAKs8C,kBAAoBnvS,IAC5B,OAAzB6yP,EAAKs8C,iBAGX,MAAM,IAAIt1T,UAAU,0FAExB,IAAIu1T,GAAgBt1T,EAAI+4Q,EAAM,kBAAmBA,EAAKu8C,cACtD,GAA6B,mBAAlBA,GAAiD,WAAlBA,EACtC,MAAM,IAAIv1T,UAAU,iFAGxB,GACIC,EAAI+4Q,EAAM,WACS,OAAhBA,EAAKn3H,QACW,OAAhBm3H,EAAKn3H,UACHtiK,SAASy5R,EAAKn3H,OAAQ,MAAQm3H,EAAKn3H,QAAUm3H,EAAKn3H,OAAS,GAEhE,MAAM,IAAI7hJ,UAAU,4DAExB,GAAIC,EAAI+4Q,EAAM,qBAAwD,mBAA1BA,EAAKw8C,iBAC7C,MAAM,IAAIx1T,UAAU,qEAExB,IAAIw1T,EAAmBx8C,EAAKw8C,iBAE5B,GAAmB,qBAAR7nT,EACP,MAAO,YAEX,GAAY,OAARA,EACA,MAAO,OAEX,GAAmB,mBAARA,EACP,OAAOA,EAAM,OAAS,QAG1B,GAAmB,kBAARA,EACP,OAAO8nT,EAAc9nT,EAAKqrQ,GAE9B,GAAmB,kBAARrrQ,EAAkB,CACzB,GAAY,IAARA,EACA,OAAOwY,IAAWxY,EAAM,EAAI,IAAM,KAEtC,IAAIiG,EAAMi2B,OAAOl8B,GACjB,OAAO6nT,EAAmBf,EAAoB9mT,EAAKiG,GAAOA,CAC9D,CACA,GAAmB,kBAARjG,EAAkB,CACzB,IAAI+nT,EAAY7rR,OAAOl8B,GAAO,IAC9B,OAAO6nT,EAAmBf,EAAoB9mT,EAAK+nT,GAAaA,CACpE,CAEA,IAAIzpB,EAAiC,qBAAfjzB,EAAKxhN,MAAwB,EAAIwhN,EAAKxhN,MAE5D,GADqB,qBAAVA,IAAyBA,EAAQ,GACxCA,GAASy0O,GAAYA,EAAW,GAAoB,kBAARt+R,EAC5C,OAAOoB,EAAQpB,GAAO,UAAY,WAGtC,IAAIk0I,EAkUR,SAAmBm3H,EAAMxhN,GACrB,IAAIm+P,EACJ,GAAoB,OAAhB38C,EAAKn3H,OACL8zK,EAAa,SACV,MAA2B,kBAAhB38C,EAAKn3H,QAAuBm3H,EAAKn3H,OAAS,GAGxD,OAAO,KAFP8zK,EAAa3B,EAAMj0T,KAAK+O,MAAMkqQ,EAAKn3H,OAAS,GAAI,IAGpD,CACA,MAAO,CACH/9I,KAAM6xT,EACNx4I,KAAM62I,EAAMj0T,KAAK+O,MAAM0oD,EAAQ,GAAIm+P,GAE3C,CA/UiBC,CAAU58C,EAAMxhN,GAE7B,GAAoB,qBAATs2P,EACPA,EAAO,QACJ,GAAIn3T,EAAQm3T,EAAMngT,IAAQ,EAC7B,MAAO,aAGX,SAASi1S,EAAQhlU,EAAO6sB,EAAMorT,GAK1B,GAJIprT,IACAqjT,EAAOmG,EAAUl0T,KAAK+tT,IACjBhuU,KAAK2qB,GAEVorT,EAAU,CACV,IAAIC,EAAU,CACVt+P,MAAOwhN,EAAKxhN,OAKhB,OAHIv3D,EAAI+4Q,EAAM,gBACV88C,EAAQX,WAAan8C,EAAKm8C,YAEvBE,EAASz3U,EAAOk4U,EAASt+P,EAAQ,EAAGs2P,EAC/C,CACA,OAAOuH,EAASz3U,EAAOo7R,EAAMxhN,EAAQ,EAAGs2P,EAC5C,CAEA,GAAmB,oBAARngT,IAAuBynT,EAASznT,GAAM,CAC7C,IAAIl1B,EAwJZ,SAAgB2F,GACZ,GAAIA,EAAE3F,KAAQ,OAAO2F,EAAE3F,KACvB,IAAIs/B,EAAI47S,EAAO5zT,KAAK2zT,EAAiB3zT,KAAK3hB,GAAI,wBAC9C,GAAI25B,EAAK,OAAOA,EAAE,GAClB,OAAO,IACX,CA7JmBg+S,CAAOpoT,GACdxuB,EAAO62U,EAAWroT,EAAKi1S,GAC3B,MAAO,aAAenqU,EAAO,KAAOA,EAAO,gBAAkB,KAAO0G,EAAK7G,OAAS,EAAI,MAAQ07U,EAAMj0T,KAAK5gB,EAAM,MAAQ,KAAO,GAClI,CACA,GAAI+sS,EAASv+Q,GAAM,CACf,IAAIsoT,GAAY3B,EAAoBx5B,EAAS/6R,KAAK8pC,OAAOl8B,GAAM,yBAA0B,MAAQ0mT,EAAYt0T,KAAK4N,GAClH,MAAsB,kBAARA,GAAqB2mT,EAA2C2B,GAAvBC,EAAUD,GACrE,CACA,GA0OJ,SAAmBhpS,GACf,IAAKA,GAAkB,kBAANA,EAAkB,OAAO,EAC1C,GAA2B,qBAAhB83N,aAA+B93N,aAAa83N,YACnD,OAAO,EAEX,MAA6B,kBAAf93N,EAAE89B,UAAmD,oBAAnB99B,EAAEwU,YACtD,CAhPQsmJ,CAAUp6K,GAAM,CAGhB,IAFA,IAAIpwB,GAAI,IAAMu2U,EAAa/zT,KAAK8pC,OAAOl8B,EAAIo9C,WACvCn0B,GAAQjpB,EAAIkpB,YAAc,GACrBrxB,GAAI,EAAGA,GAAIoxB,GAAMt+C,OAAQktB,KAC9BjoB,IAAK,IAAMq5C,GAAMpxB,IAAG/sB,KAAO,IAAMu8U,EAAWhpC,EAAMp1P,GAAMpxB,IAAG5nB,OAAQ,SAAUo7R,GAKjF,OAHAz7R,IAAK,IACDowB,EAAIw2C,YAAcx2C,EAAIw2C,WAAW7rE,SAAUiF,IAAK,OACpDA,IAAK,KAAOu2U,EAAa/zT,KAAK8pC,OAAOl8B,EAAIo9C,WAAa,GAE1D,CACA,GAAIh8C,EAAQpB,GAAM,CACd,GAAmB,IAAfA,EAAIr1B,OAAgB,MAAO,KAC/B,IAAI69U,GAAKH,EAAWroT,EAAKi1S,GACzB,OAAI/gK,IAyQZ,SAA0Bs0K,GACtB,IAAK,IAAI3wT,EAAI,EAAGA,EAAI2wT,EAAG79U,OAAQktB,IAC3B,GAAI7O,EAAQw/T,EAAG3wT,GAAI,OAAS,EACxB,OAAO,EAGf,OAAO,CACX,CAhRuB4wT,CAAiBD,IACrB,IAAME,EAAaF,GAAIt0K,GAAU,IAErC,KAAOmyK,EAAMj0T,KAAKo2T,GAAI,MAAQ,IACzC,CACA,GAkFJ,SAAiBxoT,GAAO,MAAsB,mBAAf8pR,EAAM9pR,MAA+B2zQ,KAAgC,kBAAR3zQ,GAAoB2zQ,KAAe3zQ,GAAO,CAlF9H2oT,CAAQ3oT,GAAM,CACd,IAAI2e,GAAQ0pS,EAAWroT,EAAKi1S,GAC5B,MAAM,UAAWvhU,MAAMqe,aAAc,UAAWiO,IAAQ4mT,EAAax0T,KAAK4N,EAAK,SAG1D,IAAjB2e,GAAMh0C,OAAuB,IAAMuxD,OAAOl8B,GAAO,IAC9C,MAAQk8B,OAAOl8B,GAAO,KAAOqmT,EAAMj0T,KAAKusB,GAAO,MAAQ,KAHnD,MAAQud,OAAOl8B,GAAO,KAAOqmT,EAAMj0T,KAAK66R,EAAQ76R,KAAK,YAAc6iT,EAAQj1S,EAAI4oT,OAAQjqS,IAAQ,MAAQ,IAItH,CACA,GAAmB,kBAAR3e,GAAoB4nT,EAAe,CAC1C,GAAIR,GAA+C,oBAAvBpnT,EAAIonT,IAAiCF,EAC7D,OAAOA,EAAYlnT,EAAK,CAAE6pD,MAAOy0O,EAAWz0O,IACzC,GAAsB,WAAlB+9P,GAAqD,oBAAhB5nT,EAAIi1S,QAChD,OAAOj1S,EAAIi1S,SAEnB,CACA,GA6HJ,SAAe31R,GACX,IAAK8lS,IAAY9lS,GAAkB,kBAANA,EACzB,OAAO,EAEX,IACI8lS,EAAQhzT,KAAKktB,GACb,IACIkmS,EAAQpzT,KAAKktB,EACjB,CAAE,MAAO1vC,IACL,OAAO,CACX,CACA,OAAO0vC,aAAaptB,GACxB,CAAE,MAAO/jB,GAAI,CACb,OAAO,CACX,CA3IQiuS,CAAMp8Q,GAAM,CACZ,IAAI6oT,GAAW,GAMf,OALIxD,GACAA,EAAWjzT,KAAK4N,GAAK,SAAU/vB,EAAOyB,GAClCm3U,GAAS12U,KAAK8iU,EAAQvjU,EAAKsuB,GAAK,GAAQ,OAASi1S,EAAQhlU,EAAO+vB,GACpE,IAEG8oT,EAAa,MAAO1D,EAAQhzT,KAAK4N,GAAM6oT,GAAU30K,EAC5D,CACA,GA+JJ,SAAe50H,GACX,IAAKkmS,IAAYlmS,GAAkB,kBAANA,EACzB,OAAO,EAEX,IACIkmS,EAAQpzT,KAAKktB,GACb,IACI8lS,EAAQhzT,KAAKktB,EACjB,CAAE,MAAOlV,GACL,OAAO,CACX,CACA,OAAOkV,aAAaroB,GACxB,CAAE,MAAO9oB,GAAI,CACb,OAAO,CACX,CA7KQouS,CAAMv8Q,GAAM,CACZ,IAAI+oT,GAAW,GAMf,OALItD,GACAA,EAAWrzT,KAAK4N,GAAK,SAAU/vB,GAC3B84U,GAAS52U,KAAK8iU,EAAQhlU,EAAO+vB,GACjC,IAEG8oT,EAAa,MAAOtD,EAAQpzT,KAAK4N,GAAM+oT,GAAU70K,EAC5D,CACA,GA2HJ,SAAmB50H,GACf,IAAKomS,IAAepmS,GAAkB,kBAANA,EAC5B,OAAO,EAEX,IACIomS,EAAWtzT,KAAKktB,EAAGomS,GACnB,IACIC,EAAWvzT,KAAKktB,EAAGqmS,EACvB,CAAE,MAAO/1U,IACL,OAAO,CACX,CACA,OAAO0vC,aAAa07P,OACxB,CAAE,MAAO7sS,GAAI,CACb,OAAO,CACX,CAzIQ66U,CAAUhpT,GACV,OAAOipT,EAAiB,WAE5B,GAmKJ,SAAmB3pS,GACf,IAAKqmS,IAAermS,GAAkB,kBAANA,EAC5B,OAAO,EAEX,IACIqmS,EAAWvzT,KAAKktB,EAAGqmS,GACnB,IACID,EAAWtzT,KAAKktB,EAAGomS,EACvB,CAAE,MAAO91U,IACL,OAAO,CACX,CACA,OAAO0vC,aAAaqtQ,OACxB,CAAE,MAAOx+S,GAAI,CACb,OAAO,CACX,CAjLQ+6U,CAAUlpT,GACV,OAAOipT,EAAiB,WAE5B,GAqIJ,SAAmB3pS,GACf,IAAKsmS,IAAiBtmS,GAAkB,kBAANA,EAC9B,OAAO,EAEX,IAEI,OADAsmS,EAAaxzT,KAAKktB,IACX,CACX,CAAE,MAAOnxC,GAAI,CACb,OAAO,CACX,CA9IQg7U,CAAUnpT,GACV,OAAOipT,EAAiB,WAE5B,GA0CJ,SAAkBjpT,GAAO,MAAsB,oBAAf8pR,EAAM9pR,MAAgC2zQ,KAAgC,kBAAR3zQ,GAAoB2zQ,KAAe3zQ,GAAO,CA1ChIuH,CAASvH,GACT,OAAOuoT,EAAUtT,EAAQjpU,OAAOg0B,KAEpC,GA4DJ,SAAkBA,GACd,IAAKA,GAAsB,kBAARA,IAAqBwmT,EACpC,OAAO,EAEX,IAEI,OADAA,EAAcp0T,KAAK4N,IACZ,CACX,CAAE,MAAO7xB,GAAI,CACb,OAAO,CACX,CArEQi7U,CAASppT,GACT,OAAOuoT,EAAUtT,EAAQuR,EAAcp0T,KAAK4N,KAEhD,GAqCJ,SAAmBA,GAAO,MAAsB,qBAAf8pR,EAAM9pR,MAAiC2zQ,KAAgC,kBAAR3zQ,GAAoB2zQ,KAAe3zQ,GAAO,CArClIqpT,CAAUrpT,GACV,OAAOuoT,EAAUzC,EAAe1zT,KAAK4N,IAEzC,GAgCJ,SAAkBA,GAAO,MAAsB,oBAAf8pR,EAAM9pR,MAAgC2zQ,KAAgC,kBAAR3zQ,GAAoB2zQ,KAAe3zQ,GAAO,CAhChIgpQ,CAAShpQ,GACT,OAAOuoT,EAAUtT,EAAQ/4Q,OAAOl8B,KAEpC,IA0BJ,SAAgBA,GAAO,MAAsB,kBAAf8pR,EAAM9pR,MAA8B2zQ,KAAgC,kBAAR3zQ,GAAoB2zQ,KAAe3zQ,GAAO,CA1B3Hy6E,CAAOz6E,KAASynT,EAASznT,GAAM,CAChC,IAAIspT,GAAKjB,EAAWroT,EAAKi1S,GACrB36N,GAAgBusO,EAAMA,EAAI7mT,KAASzuB,OAAOwgB,UAAYiO,aAAezuB,QAAUyuB,EAAIrN,cAAgBphB,OACnGg4U,GAAWvpT,aAAezuB,OAAS,GAAK,iBACxCi4U,IAAalvO,IAAiBq5L,GAAepiS,OAAOyuB,KAASA,GAAO2zQ,KAAe3zQ,EAAMimT,EAAO7zT,KAAK03R,EAAM9pR,GAAM,GAAI,GAAKupT,GAAW,SAAW,GAEhJtsQ,IADiBq9B,IAA4C,oBAApBt6E,EAAIrN,YAA6B,GAAKqN,EAAIrN,YAAY7nB,KAAOk1B,EAAIrN,YAAY7nB,KAAO,IAAM,KAC3G0+U,IAAaD,GAAW,IAAMlD,EAAMj0T,KAAK66R,EAAQ76R,KAAK,GAAIo3T,IAAa,GAAID,IAAY,IAAK,MAAQ,KAAO,IACvI,OAAkB,IAAdD,GAAG3+U,OAAuBsyE,GAAM,KAChCi3F,EACOj3F,GAAM,IAAMyrQ,EAAaY,GAAIp1K,GAAU,IAE3Cj3F,GAAM,KAAOopQ,EAAMj0T,KAAKk3T,GAAI,MAAQ,IAC/C,CACA,OAAOptR,OAAOl8B,EAClB,EAgDA,IAAIgtR,EAASz7S,OAAOwgB,UAAUoQ,gBAAkB,SAAUzwB,GAAO,OAAOA,KAAOghB,IAAM,EACrF,SAASJ,EAAI0N,EAAKtuB,GACd,OAAOs7S,EAAO56R,KAAK4N,EAAKtuB,EAC5B,CAEA,SAASo4S,EAAM9pR,GACX,OAAO+zQ,EAAe3hR,KAAK4N,EAC/B,CASA,SAAShX,EAAQw/T,EAAIlpS,GACjB,GAAIkpS,EAAGx/T,QAAW,OAAOw/T,EAAGx/T,QAAQs2B,GACpC,IAAK,IAAIznB,EAAI,EAAG6L,EAAI8kT,EAAG79U,OAAQktB,EAAI6L,EAAG7L,IAClC,GAAI2wT,EAAG3wT,KAAOynB,EAAK,OAAOznB,EAE9B,OAAQ,CACZ,CAqFA,SAASiwT,EAAc7hT,EAAKolQ,GACxB,GAAIplQ,EAAIt7B,OAAS0gS,EAAKs8C,gBAAiB,CACnC,IAAIzoB,EAAYj5R,EAAIt7B,OAAS0gS,EAAKs8C,gBAC9B8B,EAAU,OAASvqB,EAAY,mBAAqBA,EAAY,EAAI,IAAM,IAC9E,OAAO4oB,EAAc7B,EAAO7zT,KAAK6T,EAAK,EAAGolQ,EAAKs8C,iBAAkBt8C,GAAQo+C,CAC5E,CAGA,OAAOpC,EADCl6B,EAAS/6R,KAAK+6R,EAAS/6R,KAAK6T,EAAK,WAAY,QAAS,eAAgByjT,GACzD,SAAUr+C,EACnC,CAEA,SAASq+C,EAAQ/gT,GACb,IAAI94B,EAAI84B,EAAEszB,WAAW,GACjB3c,EAAI,CACJ,EAAG,IACH,EAAG,IACH,GAAI,IACJ,GAAI,IACJ,GAAI,KACNzvC,GACF,OAAIyvC,EAAY,KAAOA,EAChB,OAASzvC,EAAI,GAAO,IAAM,IAAMq2U,EAAa9zT,KAAKviB,EAAE/B,SAAS,IACxE,CAEA,SAASy6U,EAAUtiT,GACf,MAAO,UAAYA,EAAM,GAC7B,CAEA,SAASgjT,EAAiBj8U,GACtB,OAAOA,EAAO,QAClB,CAEA,SAAS87U,EAAa97U,EAAMglG,EAAM6iM,EAAS3gI,GAEvC,OAAOlnK,EAAO,KAAOglG,EAAO,OADRkiE,EAASw0K,EAAa7zC,EAAS3gI,GAAUmyK,EAAMj0T,KAAKyiR,EAAS,OAC7B,GACxD,CA0BA,SAAS6zC,EAAaF,EAAIt0K,GACtB,GAAkB,IAAds0K,EAAG79U,OAAgB,MAAO,GAC9B,IAAIg/U,EAAa,KAAOz1K,EAAOs7B,KAAOt7B,EAAO/9I,KAC7C,OAAOwzT,EAAatD,EAAMj0T,KAAKo2T,EAAI,IAAMmB,GAAc,KAAOz1K,EAAOs7B,IACzE,CAEA,SAAS64I,EAAWroT,EAAKi1S,GACrB,IAAIz8B,EAAQp3Q,EAAQpB,GAChBwoT,EAAK,GACT,GAAIhwC,EAAO,CACPgwC,EAAG79U,OAASq1B,EAAIr1B,OAChB,IAAK,IAAIktB,EAAI,EAAGA,EAAImI,EAAIr1B,OAAQktB,IAC5B2wT,EAAG3wT,GAAKvF,EAAI0N,EAAKnI,GAAKo9S,EAAQj1S,EAAInI,GAAImI,GAAO,EAErD,CACA,IACI4pT,EADA37B,EAAuB,oBAATw4B,EAAsBA,EAAKzmT,GAAO,GAEpD,GAAI2mT,EAAmB,CACnBiD,EAAS,CAAC,EACV,IAAK,IAAI9tR,EAAI,EAAGA,EAAImyP,EAAKtjT,OAAQmxD,IAC7B8tR,EAAO,IAAM37B,EAAKnyP,IAAMmyP,EAAKnyP,EAErC,CAEA,IAAK,IAAIpqD,KAAOsuB,EACP1N,EAAI0N,EAAKtuB,KACV8mS,GAASt8O,OAAOlwD,OAAO0F,MAAUA,GAAOA,EAAMsuB,EAAIr1B,QAClDg8U,GAAqBiD,EAAO,IAAMl4U,aAAgBgtB,SAG3C0nT,EAAMh0T,KAAK,SAAU1gB,GAC5B82U,EAAGr2U,KAAK8iU,EAAQvjU,EAAKsuB,GAAO,KAAOi1S,EAAQj1S,EAAItuB,GAAMsuB,IAErDwoT,EAAGr2U,KAAKT,EAAM,KAAOujU,EAAQj1S,EAAItuB,GAAMsuB,MAG/C,GAAoB,oBAATymT,EACP,IAAK,IAAIv9S,EAAI,EAAGA,EAAI+kR,EAAKtjT,OAAQu+B,IACzB09S,EAAax0T,KAAK4N,EAAKiuR,EAAK/kR,KAC5Bs/S,EAAGr2U,KAAK,IAAM8iU,EAAQhnB,EAAK/kR,IAAM,MAAQ+rS,EAAQj1S,EAAIiuR,EAAK/kR,IAAKlJ,IAI3E,OAAOwoT,CACX,oCC1fA,IAAIqB,EAAuB5yU,EAAQ,MAEnC,SAAS6yU,IAAiB,CAC1B,SAASC,IAA0B,CACnCA,EAAuBC,kBAAoBF,EAE3CjyR,EAAO3gD,QAAU,WACf,SAAS+yU,EAAKp1U,EAAOs7C,EAAU+5R,EAAej8T,EAAUk8T,EAAc1qT,GACpE,GAAIA,IAAWoqT,EAAf,CAIA,IAAIr5U,EAAM,IAAIkD,MACZ,mLAKF,MADAlD,EAAI1F,KAAO,sBACL0F,CAPN,CAQF,CAEA,SAAS45U,IACP,OAAOH,CACT,CAHAA,EAAKh9U,WAAag9U,EAMlB,IAAII,EAAiB,CACnBx4P,MAAOo4P,EACPK,OAAQL,EACR71B,KAAM61B,EACN58C,KAAM48C,EACNx/P,OAAQw/P,EACR/iH,OAAQ+iH,EACRrgM,OAAQqgM,EACRprS,OAAQorS,EAERM,IAAKN,EACLO,QAASJ,EACT10U,QAASu0U,EACTQ,YAAaR,EACbS,WAAYN,EACZjhR,KAAM8gR,EACNU,SAAUP,EACVv/T,MAAOu/T,EACPQ,UAAWR,EACXS,MAAOT,EACPU,MAAOV,EAEPW,eAAgBhB,EAChBC,kBAAmBF,GAKrB,OAFAO,EAAeW,UAAYX,EAEpBA,CACT,wBC/CExyR,EAAO3gD,QAAUD,EAAQ,IAARA,kCCNnB4gD,EAAO3gD,QAFoB,8ECJ3B,SAAS+mS,EAAMgtC,GACbv4T,KAAKw4T,SAAWD,EAChBv4T,KAAK1E,OACP,CACAiwR,EAAMlsR,UAAU/D,MAAQ,WACtB0E,KAAKy4T,MAAQ,EACbz4T,KAAK04T,QAAU,CAAC,CAClB,EACAntC,EAAMlsR,UAAU3e,IAAM,SAAS1B,GAC7B,OAAOghB,KAAK04T,QAAQ15U,EACtB,EACAusS,EAAMlsR,UAAUQ,IAAM,SAAS7gB,EAAKzB,GAKlC,OAJAyiB,KAAKy4T,OAASz4T,KAAKw4T,UAAYx4T,KAAK1E,QAC/B0E,KAAK04T,QAAQjpT,eAAezwB,IAC/BghB,KAAKy4T,QAEAz4T,KAAK04T,QAAQ15U,GAAOzB,CAC7B,EAEA,IAAIo7U,EAAc,4BAChBC,EAAc,QACdC,EAAmB,MACnBC,EAAkB,yCAClBC,EAAqB,2BAGnBC,GAAwB,EAC1BC,EAAY,IAAI1tC,EAHC,KAIjB2tC,EAAW,IAAI3tC,EAJE,KAKjB4tC,EAAW,IAAI5tC,EALE,KAOnB,IACE,IAAIpsR,SAAS,GACf,CAAE,MAAO/d,GACP43U,GAAwB,CAC1B,CAiFA,SAASI,EAAcj3T,GACrB,OAAO82T,EAAUv4U,IAAIyhB,IAAS82T,EAAUp5T,IACtCsC,EACAlO,EAAMkO,GAAMriB,KAAI,SAASssC,GACvB,OAAOA,EAAK31B,QAAQsiU,EAAoB,KAC1C,IAEJ,CAEA,SAAS9kU,EAAMkO,GACb,OAAOA,EAAKiG,MAAMuwT,EACpB,CAEA,SAASz0B,EAAKm1B,EAAYC,EAAM/vO,GAY9B,MAToB,kBAAT+vO,IACT/vO,EAAQ+vO,EACRA,GAAO,GAGT/vO,EAAQA,GAAS,QAPjB8vO,EAAaA,GAAc,KASgB,MAAzBA,EAAWl8T,OAAO,KAAYk8T,EAAa,IAAMA,GAE5DC,EAgCT,SAAkBn3T,EAAMonF,GACtB,IAEEgwO,EAFEn6U,EAASmqG,EACXt9D,EAAQh4B,EAAMkO,GAWhB,OARApjB,EAAQktC,GAAO,SAASG,EAAMotS,EAAW9qT,EAAShN,EAAKuqB,GACrDstS,EAAS73T,IAAQuqB,EAAMh0C,OAAS,EAIhCmH,IAFAgtC,EAAOotS,GAAa9qT,EAAU,IAAM0d,EAAO,IAAM,IAAMA,IAEpCmtS,EAAqB,IAAZ,UAC9B,IAEO,IAAI9qT,MAAMwd,EAAMh0C,OAAS,GAAGgvB,KAAK,KAAO7nB,CACjD,CA9CgBq6U,CAASJ,EAAY9vO,GAASA,EAAQ8vO,CACtD,CAEA,SAASt6U,EAAQktC,EAAOytS,EAAM/iD,GAC5B,IACEvqP,EACA1qB,EACAgN,EACA8qT,EAJEvoT,EAAMgb,EAAMh0C,OAMhB,IAAKypB,EAAM,EAAGA,EAAMuP,EAAKvP,KACvB0qB,EAAOH,EAAMvqB,MAGPi4T,EAAevtS,KACjBA,EAAO,IAAMA,EAAO,KAItB1d,IADA8qT,EAAYI,EAASxtS,KACG,QAAQtkB,KAAKskB,GAErCstS,EAAKh6T,KAAKi3Q,EAASvqP,EAAMotS,EAAW9qT,EAAShN,EAAKuqB,GAGxD,CAEA,SAAS2tS,EAASrmT,GAChB,MACiB,kBAARA,GAAoBA,IAA8C,IAAvC,CAAC,IAAK,KAAKjd,QAAQid,EAAIpW,OAAO,GAEpE,CA0BA,SAASw8T,EAAevtS,GACtB,OAAQwtS,EAASxtS,KATnB,SAA0BA,GACxB,OAAOA,EAAKhkB,MAAMywT,KAAsBzsS,EAAKhkB,MAAMwwT,EACrD,CAO6BiB,CAAiBztS,IAL9C,SAAyBA,GACvB,OAAO0sS,EAAgBhxT,KAAKskB,EAC9B,CAGuD0tS,CAAgB1tS,GACvE,CAlKA+Y,EAAO3gD,QAAU,CACf+mS,MAAOA,EAEP2Y,KAAMA,EAENjwS,MAAOA,EAEPmlU,cAAeA,EAEfxqB,OAAQoqB,EACJ,SAAS72T,GACT,IAAI8pB,EAAQmtS,EAAcj3T,GAC1B,OAAO,SAAStc,EAAMtI,GACpB,OA4CR,SAAwB0uC,EAAOpmC,EAAMtI,GACnC,IAAIuJ,EAAQ,EACVmqB,EAAMgb,EAAMh0C,OACd,KAAO6O,EAAQmqB,EAAM,GACnBprB,EAAOA,EAAKomC,EAAMnlC,MAEpBjB,EAAKomC,EAAMnlC,IAAUvJ,CACvB,CAnDew8U,CAAe9tS,EAAOpmC,EAAMtI,EACrC,CACF,EACE,SAAS4kB,GACT,OAAO+2T,EAASx4U,IAAIyhB,IAAS+2T,EAASr5T,IACpCsC,EACA,IAAIhD,SACF,cACA+kS,EAAK/hS,EAAM,QAAU,YAG3B,EAEF48S,OAAQia,EACJ,SAAS72T,EAAMm3T,GACf,IAAIrtS,EAAQmtS,EAAcj3T,GAC1B,OAAO,SAAStc,GACd,OAoCR,SAAwBomC,EAAOqtS,EAAMzzU,GACnC,IAAIiB,EAAQ,EACVmqB,EAAMgb,EAAMh0C,OACd,KAAO6O,EAAQmqB,GAAK,CAClB,GAAY,MAARprB,GAAiByzU,EAGnB,OAFAzzU,EAAOA,EAAKomC,EAAMnlC,KAItB,CACA,OAAOjB,CACT,CA/Cem0U,CAAe/tS,EAAOqtS,EAAMzzU,EACrC,CACF,EACE,SAASsc,EAAMm3T,GACf,IAAIt6U,EAAMmjB,EAAO,IAAMm3T,EACvB,OAAOH,EAASz4U,IAAI1B,IAAQm6U,EAASt5T,IACnC7gB,EACA,IAAImgB,SAAS,OAAQ,UAAY+kS,EAAK/hS,EAAMm3T,EAAM,SAEtD,EAEFryT,KAAM,SAASV,GACb,OAAOA,EAASqB,QAAO,SAASzF,EAAMiqB,GACpC,OACEjqB,GACCy3T,EAASxtS,IAASwsS,EAAY9wT,KAAKskB,GAChC,IAAMA,EAAO,KACZjqB,EAAO,IAAM,IAAMiqB,EAE5B,GAAG,GACL,EAEArtC,QAAS,SAASojB,EAAM83T,EAAItjD,GAC1B53R,EAAQkV,EAAMkO,GAAO83T,EAAItjD,EAC3B,kCC9FF,IAAIlgR,EAAU+yC,OAAOnqC,UAAU5I,QAC3ByjU,EAAkB,OAElBC,EACS,UADTA,EAES,UAGbh1R,EAAO3gD,QAAU,CACb,QAAW21U,EACXC,WAAY,CACRC,QAAS,SAAU98U,GACf,OAAOkZ,EAAQiJ,KAAKniB,EAAO28U,EAAiB,IAChD,EACAI,QAAS,SAAU/8U,GACf,OAAOisD,OAAOjsD,EAClB,GAEJ88U,QAASF,EACTG,QAASH,sCCnBb,IAAIx9T,EAAYpY,EAAQ,MACpBgY,EAAQhY,EAAQ,MAChBg2U,EAAUh2U,EAAQ,MAEtB4gD,EAAO3gD,QAAU,CACb+1U,QAASA,EACTh+T,MAAOA,EACPI,UAAWA,sCCPf,IAAI0zQ,EAAQ9rR,EAAQ,MAEhBqb,EAAM/gB,OAAOwgB,UAAUoQ,eACvBf,EAAUD,MAAMC,QAEhBpU,EAAW,CACX6D,WAAW,EACXq8T,iBAAiB,EACjBC,aAAa,EACbC,WAAY,GACZvU,QAAS,QACTwU,iBAAiB,EACjBC,OAAO,EACPC,QAASxqD,EAAM0K,OACf+/C,UAAW,IACX3jQ,MAAO,EACPn5D,mBAAmB,EACnB+8T,0BAA0B,EAC1BC,eAAgB,IAChBC,aAAa,EACbC,cAAc,EACdj9T,oBAAoB,GAGpB88T,EAA2B,SAAUxnT,GACrC,OAAOA,EAAI9c,QAAQ,aAAa,SAAU0kU,EAAIC,GAC1C,OAAO5xR,OAAOC,aAAavqD,SAASk8U,EAAW,IACnD,GACJ,EAEIC,EAAkB,SAAU19T,EAAK+C,GACjC,OAAI/C,GAAsB,kBAARA,GAAoB+C,EAAQk6T,OAASj9T,EAAIrH,QAAQ,MAAQ,EAChEqH,EAAI1J,MAAM,KAGd0J,CACX,EAgHI29T,EAAY,SAA8BC,EAAU59T,EAAK+C,EAAS86T,GAClE,GAAKD,EAAL,CAKA,IAAIv8U,EAAM0hB,EAAQvC,UAAYo9T,EAAS9kU,QAAQ,cAAe,QAAU8kU,EAKpEnrT,EAAQ,gBAIRvI,EAAUnH,EAAQy2D,MAAQ,GALf,eAK6BzmC,KAAK1xC,GAC7CqxB,EAASxI,EAAU7oB,EAAIqe,MAAM,EAAGwK,EAAQ/gB,OAAS9H,EAIjDF,EAAO,GACX,GAAIuxB,EAAQ,CAER,IAAK3P,EAAQw6T,cAAgBt7T,EAAIF,KAAK7gB,OAAOwgB,UAAWgR,KAC/C3P,EAAQ85T,gBACT,OAIR17U,EAAKW,KAAK4wB,EACd,CAKA,IADA,IAAIlL,EAAI,EACDzE,EAAQy2D,MAAQ,GAAqC,QAA/BtvD,EAAUuI,EAAMsgB,KAAK1xC,KAAkBmmB,EAAIzE,EAAQy2D,OAAO,CAEnF,GADAhyD,GAAK,GACAzE,EAAQw6T,cAAgBt7T,EAAIF,KAAK7gB,OAAOwgB,UAAWwI,EAAQ,GAAGxK,MAAM,GAAI,MACpEqD,EAAQ85T,gBACT,OAGR17U,EAAKW,KAAKooB,EAAQ,GACtB,CAQA,OAJIA,GACA/oB,EAAKW,KAAK,IAAMT,EAAIqe,MAAMwK,EAAQ/gB,OAAS,KAnFjC,SAAU8sR,EAAOj2Q,EAAK+C,EAAS86T,GAG7C,IAFA,IAAIC,EAAOD,EAAe79T,EAAM09T,EAAgB19T,EAAK+C,GAE5CyE,EAAIyuQ,EAAM37R,OAAS,EAAGktB,GAAK,IAAKA,EAAG,CACxC,IAAImI,EACAq2C,EAAOiwN,EAAMzuQ,GAEjB,GAAa,OAATw+C,GAAiBjjD,EAAQu6T,YACzB3tT,EAAM,GAAG3sB,OAAO86U,OACb,CACHnuT,EAAM5M,EAAQw6T,aAAer8U,OAAOqhB,OAAO,MAAQ,CAAC,EACpD,IAAIw7T,EAA+B,MAAnB/3Q,EAAKxmD,OAAO,IAA+C,MAAjCwmD,EAAKxmD,OAAOwmD,EAAK1rE,OAAS,GAAa0rE,EAAKtmD,MAAM,GAAI,GAAKsmD,EACjG78D,EAAQ5H,SAASw8U,EAAW,IAC3Bh7T,EAAQu6T,aAA6B,KAAdS,GAGvB5hT,MAAMhzB,IACJ68D,IAAS+3Q,GACTlyR,OAAO1iD,KAAW40U,GAClB50U,GAAS,GACR4Z,EAAQu6T,aAAen0U,GAAS4Z,EAAQg6T,YAE5CptT,EAAM,IACFxmB,GAAS20U,EACQ,cAAdC,IACPpuT,EAAIouT,GAAaD,GAXjBnuT,EAAM,CAAE,EAAGmuT,EAanB,CAEAA,EAAOnuT,CACX,CAEA,OAAOmuT,CACX,CAqDWj1D,CAAY1nR,EAAM6e,EAAK+C,EAAS86T,EAhDvC,CAiDJ,EAqCAr2R,EAAO3gD,QAAU,SAAU+uB,EAAKolQ,GAC5B,IAAIj4Q,EApCoB,SAA+Bi4Q,GACvD,IAAKA,EACD,OAAOr+Q,EAGX,GAAqB,OAAjBq+Q,EAAKkiD,cAAqC3/U,IAAjBy9R,EAAKkiD,SAAiD,oBAAjBliD,EAAKkiD,QACnE,MAAM,IAAIl7T,UAAU,iCAGxB,GAA4B,qBAAjBg5Q,EAAKwtC,SAA4C,UAAjBxtC,EAAKwtC,SAAwC,eAAjBxtC,EAAKwtC,QACxE,MAAM,IAAIxmT,UAAU,qEAExB,IAAIwmT,EAAkC,qBAAjBxtC,EAAKwtC,QAA0B7rT,EAAS6rT,QAAUxtC,EAAKwtC,QAE5E,MAAO,CACHhoT,UAAqC,qBAAnBw6Q,EAAKx6Q,UAA4B7D,EAAS6D,YAAcw6Q,EAAKx6Q,UAC/Eq8T,gBAAiD,mBAAzB7hD,EAAK6hD,gBAAgC7hD,EAAK6hD,gBAAkBlgU,EAASkgU,gBAC7FC,YAAyC,mBAArB9hD,EAAK8hD,YAA4B9hD,EAAK8hD,YAAcngU,EAASmgU,YACjFC,WAAuC,kBAApB/hD,EAAK+hD,WAA0B/hD,EAAK+hD,WAAapgU,EAASogU,WAC7EvU,QAASA,EACTwU,gBAAiD,mBAAzBhiD,EAAKgiD,gBAAgChiD,EAAKgiD,gBAAkBrgU,EAASqgU,gBAC7FC,MAA6B,mBAAfjiD,EAAKiiD,MAAsBjiD,EAAKiiD,MAAQtgU,EAASsgU,MAC/DC,QAAiC,oBAAjBliD,EAAKkiD,QAAyBliD,EAAKkiD,QAAUvgU,EAASugU,QACtEC,UAAqC,kBAAnBniD,EAAKmiD,WAA0BzqD,EAAM0kD,SAASp8C,EAAKmiD,WAAaniD,EAAKmiD,UAAYxgU,EAASwgU,UAE5G3jQ,MAA8B,kBAAfwhN,EAAKxhN,QAAqC,IAAfwhN,EAAKxhN,OAAoBwhN,EAAKxhN,MAAQ78D,EAAS68D,MACzFn5D,mBAA8C,IAA3B26Q,EAAK36Q,kBACxB+8T,yBAAmE,mBAAlCpiD,EAAKoiD,yBAAyCpiD,EAAKoiD,yBAA2BzgU,EAASygU,yBACxHC,eAA+C,kBAAxBriD,EAAKqiD,eAA8BriD,EAAKqiD,eAAiB1gU,EAAS0gU,eACzFC,aAAkC,IAArBtiD,EAAKsiD,YAClBC,aAA2C,mBAAtBviD,EAAKuiD,aAA6BviD,EAAKuiD,aAAe5gU,EAAS4gU,aACpFj9T,mBAAuD,mBAA5B06Q,EAAK16Q,mBAAmC06Q,EAAK16Q,mBAAqB3D,EAAS2D,mBAE9G,CAGkB09T,CAAsBhjD,GAEpC,GAAY,KAARplQ,GAAsB,OAARA,GAA+B,qBAARA,EACrC,OAAO7S,EAAQw6T,aAAer8U,OAAOqhB,OAAO,MAAQ,CAAC,EASzD,IANA,IAAI+yF,EAAyB,kBAAR1/E,EApMP,SAAgCA,EAAK7S,GACnD,IAMIyE,EANAmI,EAAM,CAAEmyB,UAAW,MAEnBm8R,EAAWl7T,EAAQ1C,kBAAoBuV,EAAI9c,QAAQ,MAAO,IAAM8c,EAChEy6C,EAAQttD,EAAQs6T,iBAAmBl1S,SAAW5qC,EAAYwlB,EAAQs6T,eAClE/uS,EAAQ2vS,EAAS3nU,MAAMyM,EAAQo6T,UAAW9sQ,GAC1C2O,GAAa,EAGbwpP,EAAUzlT,EAAQylT,QACtB,GAAIzlT,EAAQi6T,gBACR,IAAKx1T,EAAI,EAAGA,EAAI8mB,EAAMh0C,SAAUktB,EACM,IAA9B8mB,EAAM9mB,GAAG7O,QAAQ,WAdX,mBAeF21B,EAAM9mB,GACNghT,EAAU,QAnBZ,wBAoBSl6R,EAAM9mB,KACbghT,EAAU,cAEdxpP,EAAYx3D,EACZA,EAAI8mB,EAAMh0C,QAKtB,IAAKktB,EAAI,EAAGA,EAAI8mB,EAAMh0C,SAAUktB,EAC5B,GAAIA,IAAMw3D,EAAV,CAGA,IAKI39E,EAAK2e,EALLyuB,EAAOH,EAAM9mB,GAEb02T,EAAmBzvS,EAAK91B,QAAQ,MAChC6sB,GAA4B,IAAtB04S,EAA0BzvS,EAAK91B,QAAQ,KAAOulU,EAAmB,GAG9D,IAAT14S,GACAnkC,EAAM0hB,EAAQm6T,QAAQzuS,EAAM9xB,EAASugU,QAAS1U,EAAS,OACvDxoT,EAAM+C,EAAQzC,mBAAqB,KAAO,KAE1Cjf,EAAM0hB,EAAQm6T,QAAQzuS,EAAK/uB,MAAM,EAAG8lB,GAAM7oB,EAASugU,QAAS1U,EAAS,OACrExoT,EAAM0yQ,EAAMyrD,SACRT,EAAgBjvS,EAAK/uB,MAAM8lB,EAAM,GAAIziB,IACrC,SAAUq7T,GACN,OAAOr7T,EAAQm6T,QAAQkB,EAAYzhU,EAASugU,QAAS1U,EAAS,QAClE,KAIJxoT,GAAO+C,EAAQq6T,0BAAwC,eAAZ5U,IAC3CxoT,EAAMo9T,EAAyBp9T,IAG/ByuB,EAAK91B,QAAQ,QAAU,IACvBqH,EAAM+Q,EAAQ/Q,GAAO,CAACA,GAAOA,GAG7BiC,EAAIF,KAAK4N,EAAKtuB,GACdsuB,EAAItuB,GAAOqxR,EAAMh/K,QAAQ/jF,EAAItuB,GAAM2e,GAEnC2P,EAAItuB,GAAO2e,CA/Bf,CAmCJ,OAAO2P,CACX,CAqI4C0uT,CAAYzoT,EAAK7S,GAAW6S,EAChEjG,EAAM5M,EAAQw6T,aAAer8U,OAAOqhB,OAAO,MAAQ,CAAC,EAIpDphB,EAAOD,OAAOC,KAAKm0G,GACd9tF,EAAI,EAAGA,EAAIrmB,EAAK7G,SAAUktB,EAAG,CAClC,IAAInmB,EAAMF,EAAKqmB,GACXwoC,EAAS2tR,EAAUt8U,EAAKi0G,EAAQj0G,GAAM0hB,EAAwB,kBAAR6S,GAC1DjG,EAAM+iQ,EAAMniQ,MAAMZ,EAAKqgC,EAAQjtC,EACnC,CAEA,OAA4B,IAAxBA,EAAQ+5T,YACDntT,EAGJ+iQ,EAAM4rD,QAAQ3uT,EACzB,qCCrQA,IAAI4uT,EAAiB33U,EAAQ,KACzB8rR,EAAQ9rR,EAAQ,MAChBg2U,EAAUh2U,EAAQ,MAClBqb,EAAM/gB,OAAOwgB,UAAUoQ,eAEvB0sT,EAAwB,CACxBC,SAAU,SAAkBl7S,GACxB,OAAOA,EAAS,IACpB,EACA05S,MAAO,QACPvlH,QAAS,SAAiBn0L,EAAQliC,GAC9B,OAAOkiC,EAAS,IAAMliC,EAAM,GAChC,EACAq9U,OAAQ,SAAgBn7S,GACpB,OAAOA,CACX,GAGAxS,EAAUD,MAAMC,QAChBjvB,EAAOgvB,MAAMpP,UAAU5f,KACvB68U,EAAc,SAAU91T,EAAK+1T,GAC7B98U,EAAKyf,MAAMsH,EAAKkI,EAAQ6tT,GAAgBA,EAAe,CAACA,GAC5D,EAEIC,EAAQl9U,KAAK+f,UAAU7f,YAEvBi9U,EAAgBlC,EAAiB,QACjCjgU,EAAW,CACXoiU,gBAAgB,EAChBv+T,WAAW,EACXgoT,QAAS,QACTwU,iBAAiB,EACjBG,UAAW,IACXlkD,QAAQ,EACRP,QAAShG,EAAMuG,OACf14Q,kBAAkB,EAClB1kB,OAAQijV,EACR9nH,UAAW4lH,EAAQH,WAAWqC,GAE9BpnH,SAAS,EACTsnH,cAAe,SAAuBn+T,GAClC,OAAOg+T,EAAM98T,KAAKlB,EACtB,EACAo+T,WAAW,EACX3+T,oBAAoB,GAWpB4+T,EAAW,CAAC,EAEZlgU,EAAY,SAASA,EACrB63M,EACAtzL,EACA47S,EACAC,EACA9+T,EACA2+T,EACAvmD,EACAl4R,EACA4mB,EACA5G,EACAw+T,EACAnjV,EACAm7N,EACAz2M,EACAioT,EACA6W,GAOA,IALA,IA5BuD5+H,EA4BnD9wL,EAAMknM,EAENyoH,EAAQD,EACRr7R,EAAO,EACPu7R,GAAW,OAC0B,KAAjCD,EAAQA,EAAMv8U,IAAIm8U,MAAkCK,GAAU,CAElE,IAAI/5S,EAAM85S,EAAMv8U,IAAI8zN,GAEpB,GADA7yK,GAAQ,EACW,qBAARxe,EAAqB,CAC5B,GAAIA,IAAQwe,EACR,MAAM,IAAI+3P,WAAW,uBAErBwjC,GAAW,CAEnB,CACmC,qBAAxBD,EAAMv8U,IAAIm8U,KACjBl7R,EAAO,EAEf,CAeA,GAbsB,oBAAXxjD,EACPmvB,EAAMnvB,EAAO+iC,EAAQ5T,GACdA,aAAehuB,KACtBguB,EAAMqvT,EAAcrvT,GACW,UAAxBwvT,GAAmCpuT,EAAQpB,KAClDA,EAAM+iQ,EAAMyrD,SAASxuT,GAAK,SAAU/vB,GAChC,OAAIA,aAAiB+B,KACVq9U,EAAcp/U,GAElBA,CACX,KAGQ,OAAR+vB,EAAc,CACd,GAAIrP,EACA,OAAOo4Q,IAAYn4Q,EAAmBm4Q,EAAQn1P,EAAQ5mB,EAAS+7Q,QAAS8vC,EAAS,MAAO3sU,GAAU0nC,EAGtG5T,EAAM,EACV,CAEA,GArEoB,kBADmC8wL,EAsE7B9wL,IApEN,kBAAN8wL,GACM,mBAANA,GACM,kBAANA,GACM,kBAANA,GAiEoBiyE,EAAMyF,SAASxoQ,GAC7C,OAAI+oQ,EAEO,CAAC1hE,EADOz2M,EAAmBgjB,EAASm1P,EAAQn1P,EAAQ5mB,EAAS+7Q,QAAS8vC,EAAS,MAAO3sU,IAC/D,IAAMm7N,EAAU0hE,EAAQ/oQ,EAAKhT,EAAS+7Q,QAAS8vC,EAAS,QAAS3sU,KAE5F,CAACm7N,EAAUzzL,GAAU,IAAMyzL,EAAUnrK,OAAOl8B,KAGvD,IAMI6vT,EANA1+U,EAAS,GAEb,GAAmB,qBAAR6uB,EACP,OAAO7uB,EAIX,GAA4B,UAAxBq+U,GAAmCpuT,EAAQpB,GAEvCpP,GAAoBm4Q,IACpB/oQ,EAAM+iQ,EAAMyrD,SAASxuT,EAAK+oQ,IAE9B8mD,EAAU,CAAC,CAAE5/U,MAAO+vB,EAAIr1B,OAAS,EAAIq1B,EAAIrG,KAAK,MAAQ,UAAO,SAC1D,GAAIyH,EAAQvwB,GACfg/U,EAAUh/U,MACP,CACH,IAAIW,EAAOD,OAAOC,KAAKwuB,GACvB6vT,EAAUp4T,EAAOjmB,EAAKimB,KAAKA,GAAQjmB,CACvC,CAIA,IAFA,IAAIs+U,EAAiBL,GAAkBruT,EAAQpB,IAAuB,IAAfA,EAAIr1B,OAAeipC,EAAS,KAAOA,EAEjF1K,EAAI,EAAGA,EAAI2mT,EAAQllV,SAAUu+B,EAAG,CACrC,IAAIx3B,EAAMm+U,EAAQ3mT,GACdj5B,EAAuB,kBAARyB,GAAyC,qBAAdA,EAAIzB,MAAwByB,EAAIzB,MAAQ+vB,EAAItuB,GAE1F,IAAI49U,GAAuB,OAAVr/U,EAAjB,CAIA,IAAI8/U,EAAY3uT,EAAQpB,GACa,oBAAxBwvT,EAAqCA,EAAoBM,EAAgBp+U,GAAOo+U,EACvFA,GAAkBj/T,EAAY,IAAMnf,EAAM,IAAMA,EAAM,KAE5Dg+U,EAAYn9T,IAAI20M,EAAQ7yK,GACxB,IAAI27R,EAAmBpB,IACvBoB,EAAiBz9T,IAAIg9T,EAAUG,GAC/BV,EAAY79U,EAAQke,EAChBpf,EACA8/U,EACAP,EACAC,EACA9+T,EACA2+T,EACwB,UAAxBE,GAAmC5+T,GAAoBwQ,EAAQpB,GAAO,KAAO+oQ,EAC7El4R,EACA4mB,EACA5G,EACAw+T,EACAnjV,EACAm7N,EACAz2M,EACAioT,EACAmX,GAzBJ,CA2BJ,CAEA,OAAO7+U,CACX,EAiDA0mD,EAAO3gD,QAAU,SAAUgwN,EAAQmkE,GAC/B,IAGIwkD,EAHA7vT,EAAMknM,EACN9zM,EAjDwB,SAAmCi4Q,GAC/D,IAAKA,EACD,OAAOr+Q,EAGX,GAAqB,OAAjBq+Q,EAAKtC,SAA4C,qBAAjBsC,EAAKtC,SAAmD,oBAAjBsC,EAAKtC,QAC5E,MAAM,IAAI12Q,UAAU,iCAGxB,IAAIwmT,EAAUxtC,EAAKwtC,SAAW7rT,EAAS6rT,QACvC,GAA4B,qBAAjBxtC,EAAKwtC,SAA4C,UAAjBxtC,EAAKwtC,SAAwC,eAAjBxtC,EAAKwtC,QACxE,MAAM,IAAIxmT,UAAU,qEAGxB,IAAInmB,EAAS+gV,EAAiB,QAC9B,GAA2B,qBAAhB5hD,EAAKn/R,OAAwB,CACpC,IAAKomB,EAAIF,KAAK66T,EAAQH,WAAYzhD,EAAKn/R,QACnC,MAAM,IAAImmB,UAAU,mCAExBnmB,EAASm/R,EAAKn/R,MAClB,CACA,IAAIm7N,EAAY4lH,EAAQH,WAAW5gV,GAE/B2E,EAASmc,EAASnc,OAKtB,OAJ2B,oBAAhBw6R,EAAKx6R,QAAyBuwB,EAAQiqQ,EAAKx6R,WAClDA,EAASw6R,EAAKx6R,QAGX,CACHu+U,eAA+C,mBAAxB/jD,EAAK+jD,eAA+B/jD,EAAK+jD,eAAiBpiU,EAASoiU,eAC1Fv+T,UAAqC,qBAAnBw6Q,EAAKx6Q,UAA4B7D,EAAS6D,YAAcw6Q,EAAKx6Q,UAC/EgoT,QAASA,EACTwU,gBAAiD,mBAAzBhiD,EAAKgiD,gBAAgChiD,EAAKgiD,gBAAkBrgU,EAASqgU,gBAC7FG,UAAqC,qBAAnBniD,EAAKmiD,UAA4BxgU,EAASwgU,UAAYniD,EAAKmiD,UAC7ElkD,OAA+B,mBAAhB+B,EAAK/B,OAAuB+B,EAAK/B,OAASt8Q,EAASs8Q,OAClEP,QAAiC,oBAAjBsC,EAAKtC,QAAyBsC,EAAKtC,QAAU/7Q,EAAS+7Q,QACtEn4Q,iBAAmD,mBAA1By6Q,EAAKz6Q,iBAAiCy6Q,EAAKz6Q,iBAAmB5D,EAAS4D,iBAChG/f,OAAQA,EACR3E,OAAQA,EACRm7N,UAAWA,EACXgoH,cAA6C,oBAAvBhkD,EAAKgkD,cAA+BhkD,EAAKgkD,cAAgBriU,EAASqiU,cACxFC,UAAqC,mBAAnBjkD,EAAKikD,UAA0BjkD,EAAKikD,UAAYtiU,EAASsiU,UAC3E73T,KAA2B,oBAAd4zQ,EAAK5zQ,KAAsB4zQ,EAAK5zQ,KAAO,KACpD9G,mBAAuD,mBAA5B06Q,EAAK16Q,mBAAmC06Q,EAAK16Q,mBAAqB3D,EAAS2D,mBAE9G,CAIkBs/T,CAA0B5kD,GAKV,oBAAnBj4Q,EAAQviB,OAEfmvB,GADAnvB,EAASuiB,EAAQviB,QACJ,GAAImvB,GACVoB,EAAQhO,EAAQviB,UAEvBg/U,EADSz8T,EAAQviB,QAIrB,IAMIq/U,EANA1+U,EAAO,GAEX,GAAmB,kBAARwuB,GAA4B,OAARA,EAC3B,MAAO,GAKPkwT,EADA7kD,GAAQA,EAAK6kD,eAAerB,EACdxjD,EAAK6kD,YACZ7kD,GAAQ,YAAaA,EACdA,EAAKtjE,QAAU,UAAY,SAE3B,UAGlB,IAAIynH,EAAsBX,EAAsBqB,GAChD,GAAI7kD,GAAQ,mBAAoBA,GAAuC,mBAAxBA,EAAKokD,eAChD,MAAM,IAAIp9T,UAAU,iDAExB,IAAIo9T,EAAyC,UAAxBD,GAAmCnkD,GAAQA,EAAKokD,eAEhEI,IACDA,EAAUt+U,OAAOC,KAAKwuB,IAGtB5M,EAAQqE,MACRo4T,EAAQp4T,KAAKrE,EAAQqE,MAIzB,IADA,IAAIi4T,EAAcd,IACT/2T,EAAI,EAAGA,EAAIg4T,EAAQllV,SAAUktB,EAAG,CACrC,IAAInmB,EAAMm+U,EAAQh4T,GAEdzE,EAAQk8T,WAA0B,OAAbtvT,EAAItuB,IAG7Bs9U,EAAYx9U,EAAM6d,EACd2Q,EAAItuB,GACJA,EACA89U,EACAC,EACAr8T,EAAQzC,mBACRyC,EAAQk8T,UACRl8T,EAAQk2Q,OAASl2Q,EAAQ21Q,QAAU,KACnC31Q,EAAQviB,OACRuiB,EAAQqE,KACRrE,EAAQvC,UACRuC,EAAQi8T,cACRj8T,EAAQlnB,OACRknB,EAAQi0M,UACRj0M,EAAQxC,iBACRwC,EAAQylT,QACR6W,GAER,CAEA,IAAIS,EAAS3+U,EAAKmoB,KAAKvG,EAAQo6T,WAC3B55S,GAAoC,IAA3BxgB,EAAQg8T,eAA0B,IAAM,GAYrD,OAVIh8T,EAAQi6T,kBACgB,eAApBj6T,EAAQylT,QAERjlS,GAAU,uBAGVA,GAAU,mBAIXu8S,EAAOxlV,OAAS,EAAIipC,EAASu8S,EAAS,EACjD,qCC7TA,IAAIlD,EAAUh2U,EAAQ,MAElBqb,EAAM/gB,OAAOwgB,UAAUoQ,eACvBf,EAAUD,MAAMC,QAEhBgvT,EAAY,WAEZ,IADA,IAAIv+P,EAAQ,GACHh6D,EAAI,EAAGA,EAAI,MAAOA,EACvBg6D,EAAM1/E,KAAK,MAAQ0lB,EAAI,GAAK,IAAM,IAAMA,EAAE/pB,SAAS,KAAKgiB,eAG5D,OAAO+hE,CACX,CAPgB,GA4BZw+P,EAAgB,SAAuBx3U,EAAQua,GAE/C,IADA,IAAI4M,EAAM5M,GAAWA,EAAQw6T,aAAer8U,OAAOqhB,OAAO,MAAQ,CAAC,EAC1DiF,EAAI,EAAGA,EAAIhf,EAAOlO,SAAUktB,EACR,qBAAdhf,EAAOgf,KACdmI,EAAInI,GAAKhf,EAAOgf,IAIxB,OAAOmI,CACX,EAoMA63B,EAAO3gD,QAAU,CACbm5U,cAAeA,EACfv5T,OA3IS,SAA4B+5B,EAAQh4C,GAC7C,OAAOtH,OAAOC,KAAKqH,GAAQyhB,QAAO,SAAUg2T,EAAK5+U,GAE7C,OADA4+U,EAAI5+U,GAAOmH,EAAOnH,GACX4+U,CACX,GAAGz/R,EACP,EAuIIkzD,QAlBU,SAAiBpyF,EAAG+F,GAC9B,MAAO,GAAGrkB,OAAOse,EAAG+F,EACxB,EAiBIi3T,QAvDU,SAAiB1+U,GAI3B,IAHA,IAAI0tT,EAAQ,CAAC,CAAE39R,IAAK,CAAEi6E,EAAGhqG,GAAS41B,KAAM,MACpCisQ,EAAO,GAEFj6Q,EAAI,EAAGA,EAAI8lS,EAAMhzT,SAAUktB,EAKhC,IAJA,IAAI/Z,EAAO6/S,EAAM9lS,GACbmI,EAAMliB,EAAKkiB,IAAIliB,EAAK+nB,MAEpBr0B,EAAOD,OAAOC,KAAKwuB,GACdkJ,EAAI,EAAGA,EAAI13B,EAAK7G,SAAUu+B,EAAG,CAClC,IAAIx3B,EAAMF,EAAK03B,GACX7Y,EAAM2P,EAAItuB,GACK,kBAAR2e,GAA4B,OAARA,IAAuC,IAAvByhR,EAAK9oR,QAAQqH,KACxDstS,EAAMxrT,KAAK,CAAE6tB,IAAKA,EAAK6F,KAAMn0B,IAC7BogS,EAAK3/R,KAAKke,GAElB,CAKJ,OAlMe,SAAsBstS,GACrC,KAAOA,EAAMhzT,OAAS,GAAG,CACrB,IAAImT,EAAO6/S,EAAMngS,MACbwC,EAAMliB,EAAKkiB,IAAIliB,EAAK+nB,MAExB,GAAIzE,EAAQpB,GAAM,CAGd,IAFA,IAAIuwT,EAAY,GAEPrnT,EAAI,EAAGA,EAAIlJ,EAAIr1B,SAAUu+B,EACR,qBAAXlJ,EAAIkJ,IACXqnT,EAAUp+U,KAAK6tB,EAAIkJ,IAI3BprB,EAAKkiB,IAAIliB,EAAK+nB,MAAQ0qT,CAC1B,CACJ,CACJ,CA+KIC,CAAa7yB,GAEN1tT,CACX,EAkCIw9R,OAvIS,SAAUxnQ,EAAKsnT,EAAS1U,GACjC,IAAI4X,EAAiBxqT,EAAI9c,QAAQ,MAAO,KACxC,GAAgB,eAAZ0vT,EAEA,OAAO4X,EAAetnU,QAAQ,iBAAkBy6Q,UAGpD,IACI,OAAO5nQ,mBAAmBy0T,EAC9B,CAAE,MAAOtiV,GACL,OAAOsiV,CACX,CACJ,EA4HInnD,OA1HS,SAAgBrjQ,EAAKyqT,EAAgB7X,EAAS8X,EAAMzkV,GAG7D,GAAmB,IAAf+5B,EAAIt7B,OACJ,OAAOs7B,EAGX,IAAI2jH,EAAS3jH,EAOb,GANmB,kBAARA,EACP2jH,EAASlrH,OAAO3M,UAAUjkB,SAASskB,KAAK6T,GAClB,kBAARA,IACd2jH,EAAS1tF,OAAOj2B,IAGJ,eAAZ4yS,EACA,OAAO98O,OAAO6tD,GAAQzgI,QAAQ,mBAAmB,SAAU0kU,GACvD,MAAO,SAAWj8U,SAASi8U,EAAG99T,MAAM,GAAI,IAAM,KAClD,IAIJ,IADA,IAAI0S,EAAM,GACD5K,EAAI,EAAGA,EAAI+xH,EAAOj/I,SAAUktB,EAAG,CACpC,IAAI8Q,EAAIihH,EAAO3tF,WAAWpkC,GAGhB,KAAN8Q,GACS,KAANA,GACM,KAANA,GACM,MAANA,GACCA,GAAK,IAAQA,GAAK,IAClBA,GAAK,IAAQA,GAAK,IAClBA,GAAK,IAAQA,GAAK,KAClBz8B,IAAW+gV,EAAQF,UAAkB,KAANpkT,GAAoB,KAANA,GAEjDlG,GAAOmnH,EAAO/5H,OAAOgI,GAIrB8Q,EAAI,IACJlG,GAAY2tT,EAASznT,GAIrBA,EAAI,KACJlG,GAAa2tT,EAAS,IAAQznT,GAAK,GAAMynT,EAAS,IAAY,GAAJznT,GAI1DA,EAAI,OAAUA,GAAK,MACnBlG,GAAa2tT,EAAS,IAAQznT,GAAK,IAAOynT,EAAS,IAASznT,GAAK,EAAK,IAASynT,EAAS,IAAY,GAAJznT,IAIpG9Q,GAAK,EACL8Q,EAAI,QAAiB,KAAJA,IAAc,GAA8B,KAAvBihH,EAAO3tF,WAAWpkC,IAExD4K,GAAO2tT,EAAS,IAAQznT,GAAK,IACvBynT,EAAS,IAASznT,GAAK,GAAM,IAC7BynT,EAAS,IAASznT,GAAK,EAAK,IAC5BynT,EAAS,IAAY,GAAJznT,GAC3B,CAEA,OAAOlG,CACX,EA4DI+lQ,SA9BW,SAAkBxoQ,GAC7B,SAAKA,GAAsB,kBAARA,OAITA,EAAIrN,aAAeqN,EAAIrN,YAAY61Q,UAAYxoQ,EAAIrN,YAAY61Q,SAASxoQ,GACtF,EAyBIynT,SAnCW,SAAkBznT,GAC7B,MAA+C,oBAAxCzuB,OAAOwgB,UAAUjkB,SAASskB,KAAK4N,EAC1C,EAkCIwuT,SApBW,SAAkBn+T,EAAK8B,GAClC,GAAIiP,EAAQ/Q,GAAM,CAEd,IADA,IAAI0pS,EAAS,GACJliS,EAAI,EAAGA,EAAIxH,EAAI1lB,OAAQktB,GAAK,EACjCkiS,EAAO5nT,KAAKggB,EAAG9B,EAAIwH,KAEvB,OAAOkiS,CACX,CACA,OAAO5nS,EAAG9B,EACd,EAYIuQ,MA5MQ,SAASA,EAAMiwB,EAAQh4C,EAAQua,GAEvC,IAAKva,EACD,OAAOg4C,EAGX,GAAsB,kBAAXh4C,EAAqB,CAC5B,GAAIuoB,EAAQyvB,GACRA,EAAO1+C,KAAK0G,OACT,KAAIg4C,GAA4B,kBAAXA,EAKxB,MAAO,CAACA,EAAQh4C,IAJXua,IAAYA,EAAQw6T,cAAgBx6T,EAAQ85T,mBAAsB56T,EAAIF,KAAK7gB,OAAOwgB,UAAWlZ,MAC9Fg4C,EAAOh4C,IAAU,EAIzB,CAEA,OAAOg4C,CACX,CAEA,IAAKA,GAA4B,kBAAXA,EAClB,MAAO,CAACA,GAAQx9C,OAAOwF,GAG3B,IAAI+3U,EAAc//R,EAKlB,OAJIzvB,EAAQyvB,KAAYzvB,EAAQvoB,KAC5B+3U,EAAcP,EAAcx/R,EAAQz9B,IAGpCgO,EAAQyvB,IAAWzvB,EAAQvoB,IAC3BA,EAAOpH,SAAQ,SAAUqM,EAAM+Z,GAC3B,GAAIvF,EAAIF,KAAKy+B,EAAQh5B,GAAI,CACrB,IAAIg5T,EAAahgS,EAAOh5B,GACpBg5T,GAAoC,kBAAfA,GAA2B/yU,GAAwB,kBAATA,EAC/D+yC,EAAOh5B,GAAK+I,EAAMiwT,EAAY/yU,EAAMsV,GAEpCy9B,EAAO1+C,KAAK2L,EAEpB,MACI+yC,EAAOh5B,GAAK/Z,CAEpB,IACO+yC,GAGJt/C,OAAOC,KAAKqH,GAAQyhB,QAAO,SAAUg2T,EAAK5+U,GAC7C,IAAIzB,EAAQ4I,EAAOnH,GAOnB,OALI4gB,EAAIF,KAAKk+T,EAAK5+U,GACd4+U,EAAI5+U,GAAOkvB,EAAM0vT,EAAI5+U,GAAMzB,EAAOmjB,GAElCk9T,EAAI5+U,GAAOzB,EAERqgV,CACX,GAAGM,EACP,sCCzFa,IAAIE,EAAG75U,EAAQ,MAAS85U,EAAG95U,EAAQ,MAAa,SAASs6B,EAAE5f,GAAG,IAAI,IAAI+F,EAAE,yDAAyD/F,EAAEgX,EAAE,EAAEA,EAAE5X,UAAUpmB,OAAOg+B,IAAIjR,GAAG,WAAWy/E,mBAAmBpmF,UAAU4X,IAAI,MAAM,yBAAyBhX,EAAE,WAAW+F,EAAE,gHAAgH,CAAC,IAAIs5T,EAAG,IAAI/5T,IAAIg6T,EAAG,CAAC,EAAE,SAASC,EAAGv/T,EAAE+F,GAAGy5T,EAAGx/T,EAAE+F,GAAGy5T,EAAGx/T,EAAE,UAAU+F,EAAE,CACxb,SAASy5T,EAAGx/T,EAAE+F,GAAW,IAARu5T,EAAGt/T,GAAG+F,EAAM/F,EAAE,EAAEA,EAAE+F,EAAE/sB,OAAOgnB,IAAIq/T,EAAGnpS,IAAInwB,EAAE/F,GAAG,CAC5D,IAAIy/T,IAAK,qBAAqBp+U,QAAQ,qBAAqBA,OAAOsiB,UAAU,qBAAqBtiB,OAAOsiB,SAASgO,eAAe+tT,EAAG9/U,OAAOwgB,UAAUoQ,eAAemvT,EAAG,8VAA8VC,EACpgB,CAAC,EAAEC,EAAG,CAAC,EACiN,SAAS1gI,EAAEn/L,EAAE+F,EAAEiR,EAAEC,EAAEz6B,EAAEsC,EAAEghV,GAAG/+T,KAAKg/T,gBAAgB,IAAIh6T,GAAG,IAAIA,GAAG,IAAIA,EAAEhF,KAAKm1N,cAAcj/M,EAAElW,KAAKi/T,mBAAmBxjV,EAAEukB,KAAKk/T,gBAAgBjpT,EAAEjW,KAAKq/B,aAAapgC,EAAEe,KAAK1lB,KAAK0qB,EAAEhF,KAAKm/T,YAAYphV,EAAEiiB,KAAKo/T,kBAAkBL,CAAC,CAAC,IAAIzoT,EAAE,CAAC,EACpb,uIAAuIriB,MAAM,KAAKlV,SAAQ,SAASkgB,GAAGqX,EAAErX,GAAG,IAAIm/L,EAAEn/L,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,CAAC,gBAAgB,kBAAkB,CAAC,YAAY,SAAS,CAAC,UAAU,OAAO,CAAC,YAAY,eAAelgB,SAAQ,SAASkgB,GAAG,IAAI+F,EAAE/F,EAAE,GAAGqX,EAAEtR,GAAG,IAAIo5L,EAAEp5L,EAAE,GAAE,EAAG/F,EAAE,GAAG,MAAK,GAAG,EAAG,IAAG,CAAC,kBAAkB,YAAY,aAAa,SAASlgB,SAAQ,SAASkgB,GAAGqX,EAAErX,GAAG,IAAIm/L,EAAEn/L,EAAE,GAAE,EAAGA,EAAE5gB,cAAc,MAAK,GAAG,EAAG,IAC1e,CAAC,cAAc,4BAA4B,YAAY,iBAAiBU,SAAQ,SAASkgB,GAAGqX,EAAErX,GAAG,IAAIm/L,EAAEn/L,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,8OAA8OhL,MAAM,KAAKlV,SAAQ,SAASkgB,GAAGqX,EAAErX,GAAG,IAAIm/L,EAAEn/L,EAAE,GAAE,EAAGA,EAAE5gB,cAAc,MAAK,GAAG,EAAG,IACxb,CAAC,UAAU,WAAW,QAAQ,YAAYU,SAAQ,SAASkgB,GAAGqX,EAAErX,GAAG,IAAIm/L,EAAEn/L,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,UAAU,YAAYlgB,SAAQ,SAASkgB,GAAGqX,EAAErX,GAAG,IAAIm/L,EAAEn/L,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,OAAO,OAAO,OAAO,QAAQlgB,SAAQ,SAASkgB,GAAGqX,EAAErX,GAAG,IAAIm/L,EAAEn/L,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,UAAU,SAASlgB,SAAQ,SAASkgB,GAAGqX,EAAErX,GAAG,IAAIm/L,EAAEn/L,EAAE,GAAE,EAAGA,EAAE5gB,cAAc,MAAK,GAAG,EAAG,IAAG,IAAIghV,EAAG,gBAAgB,SAASC,EAAGrgU,GAAG,OAAOA,EAAE,GAAG7B,aAAa,CAIxZ,SAASmiU,EAAGtgU,EAAE+F,EAAEiR,EAAEC,GAAG,IAAIz6B,EAAE66B,EAAE7G,eAAezK,GAAGsR,EAAEtR,GAAG,MAAQ,OAAOvpB,EAAE,IAAIA,EAAEnB,KAAK47B,KAAK,EAAElR,EAAE/sB,SAAS,MAAM+sB,EAAE,IAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,MAP9I,SAAY/F,EAAE+F,EAAEiR,EAAEC,GAAG,GAAG,OAAOlR,GAAG,qBAAqBA,GADqE,SAAY/F,EAAE+F,EAAEiR,EAAEC,GAAG,GAAG,OAAOD,GAAG,IAAIA,EAAE37B,KAAK,OAAM,EAAG,cAAc0qB,GAAG,IAAK,WAAW,IAAK,SAAS,OAAM,EAAG,IAAK,UAAU,OAAGkR,IAAc,OAAOD,GAASA,EAAE+oT,gBAAmD,WAAnC//T,EAAEA,EAAE5gB,cAAcgf,MAAM,EAAE,KAAsB,UAAU4B,GAAE,QAAQ,OAAM,EAAG,CAC/TugU,CAAGvgU,EAAE+F,EAAEiR,EAAEC,GAAG,OAAM,EAAG,GAAGA,EAAE,OAAM,EAAG,GAAG,OAAOD,EAAE,OAAOA,EAAE37B,MAAM,KAAK,EAAE,OAAO0qB,EAAE,KAAK,EAAE,OAAM,IAAKA,EAAE,KAAK,EAAE,OAAO8U,MAAM9U,GAAG,KAAK,EAAE,OAAO8U,MAAM9U,IAAI,EAAEA,EAAE,OAAM,CAAE,CAOtEy6T,CAAGz6T,EAAEiR,EAAEx6B,EAAEy6B,KAAKD,EAAE,MAAMC,GAAG,OAAOz6B,EARxK,SAAYwjB,GAAG,QAAG0/T,EAAGj/T,KAAKo/T,EAAG7/T,KAAe0/T,EAAGj/T,KAAKm/T,EAAG5/T,KAAe2/T,EAAG92T,KAAK7I,GAAU6/T,EAAG7/T,IAAG,GAAG4/T,EAAG5/T,IAAG,GAAS,GAAE,CAQwDygU,CAAG16T,KAAK,OAAOiR,EAAEhX,EAAEiiC,gBAAgBl8B,GAAG/F,EAAEq3B,aAAatxB,EAAE,GAAGiR,IAAIx6B,EAAEyjV,gBAAgBjgU,EAAExjB,EAAE4jD,cAAc,OAAOppB,EAAE,IAAIx6B,EAAEnB,MAAQ,GAAG27B,GAAGjR,EAAEvpB,EAAE05O,cAAcj/M,EAAEz6B,EAAEwjV,mBAAmB,OAAOhpT,EAAEhX,EAAEiiC,gBAAgBl8B,IAAaiR,EAAE,KAAXx6B,EAAEA,EAAEnB,OAAc,IAAImB,IAAG,IAAKw6B,EAAE,GAAG,GAAGA,EAAEC,EAAEjX,EAAE0gU,eAAezpT,EAAElR,EAAEiR,GAAGhX,EAAEq3B,aAAatxB,EAAEiR,KAAI,CAHjd,0jCAA0jChiB,MAAM,KAAKlV,SAAQ,SAASkgB,GAAG,IAAI+F,EAAE/F,EAAExI,QAAQ4oU,EACzmCC,GAAIhpT,EAAEtR,GAAG,IAAIo5L,EAAEp5L,EAAE,GAAE,EAAG/F,EAAE,MAAK,GAAG,EAAG,IAAG,2EAA2EhL,MAAM,KAAKlV,SAAQ,SAASkgB,GAAG,IAAI+F,EAAE/F,EAAExI,QAAQ4oU,EAAGC,GAAIhpT,EAAEtR,GAAG,IAAIo5L,EAAEp5L,EAAE,GAAE,EAAG/F,EAAE,gCAA+B,GAAG,EAAG,IAAG,CAAC,WAAW,WAAW,aAAalgB,SAAQ,SAASkgB,GAAG,IAAI+F,EAAE/F,EAAExI,QAAQ4oU,EAAGC,GAAIhpT,EAAEtR,GAAG,IAAIo5L,EAAEp5L,EAAE,GAAE,EAAG/F,EAAE,wCAAuC,GAAG,EAAG,IAAG,CAAC,WAAW,eAAelgB,SAAQ,SAASkgB,GAAGqX,EAAErX,GAAG,IAAIm/L,EAAEn/L,EAAE,GAAE,EAAGA,EAAE5gB,cAAc,MAAK,GAAG,EAAG,IACldi4B,EAAEspT,UAAU,IAAIxhI,EAAE,YAAY,GAAE,EAAG,aAAa,gCAA+B,GAAG,GAAI,CAAC,MAAM,OAAO,SAAS,cAAcr/M,SAAQ,SAASkgB,GAAGqX,EAAErX,GAAG,IAAIm/L,EAAEn/L,EAAE,GAAE,EAAGA,EAAE5gB,cAAc,MAAK,GAAG,EAAG,IAE5L,IAAIwhV,EAAGzB,EAAG0B,mDAAmDC,EAAG/zT,OAAOs9C,IAAI,iBAAiB02Q,EAAGh0T,OAAOs9C,IAAI,gBAAgB22Q,EAAGj0T,OAAOs9C,IAAI,kBAAkB42Q,EAAGl0T,OAAOs9C,IAAI,qBAAqB62Q,EAAGn0T,OAAOs9C,IAAI,kBAAkB82Q,EAAGp0T,OAAOs9C,IAAI,kBAAkB+2Q,EAAGr0T,OAAOs9C,IAAI,iBAAiBg3Q,EAAGt0T,OAAOs9C,IAAI,qBAAqBi3Q,EAAGv0T,OAAOs9C,IAAI,kBAAkBk3Q,EAAGx0T,OAAOs9C,IAAI,uBAAuBm3Q,EAAGz0T,OAAOs9C,IAAI,cAAco3Q,EAAG10T,OAAOs9C,IAAI,cAAct9C,OAAOs9C,IAAI,eAAet9C,OAAOs9C,IAAI,0BACje,IAAIq3Q,EAAG30T,OAAOs9C,IAAI,mBAAmBt9C,OAAOs9C,IAAI,uBAAuBt9C,OAAOs9C,IAAI,eAAet9C,OAAOs9C,IAAI,wBAAwB,IAAIs3Q,EAAG50T,OAAO6jR,SAAS,SAASgxC,EAAG5hU,GAAG,OAAG,OAAOA,GAAG,kBAAkBA,EAAS,KAAwC,oBAAnCA,EAAE2hU,GAAI3hU,EAAE2hU,IAAK3hU,EAAE,eAA0CA,EAAE,IAAI,CAAC,IAAoB6hU,EAAhB7zS,EAAEpuC,OAAOulB,OAAU,SAAS28T,EAAG9hU,GAAG,QAAG,IAAS6hU,EAAG,IAAI,MAAM9/U,OAAQ,CAAC,MAAMi1B,GAAG,IAAIjR,EAAEiR,EAAEzF,MAAMyqC,OAAO7yC,MAAM,gBAAgB04T,EAAG97T,GAAGA,EAAE,IAAI,EAAE,CAAC,MAAM,KAAK87T,EAAG7hU,CAAC,CAAC,IAAI+hU,GAAG,EACzb,SAASC,EAAGhiU,EAAE+F,GAAG,IAAI/F,GAAG+hU,EAAG,MAAM,GAAGA,GAAG,EAAG,IAAI/qT,EAAEj1B,MAAMkgV,kBAAkBlgV,MAAMkgV,uBAAkB,EAAO,IAAI,GAAGl8T,EAAE,GAAGA,EAAE,WAAW,MAAMhkB,OAAQ,EAAEnC,OAAOs1C,eAAenvB,EAAE3F,UAAU,QAAQ,CAACQ,IAAI,WAAW,MAAM7e,OAAQ,IAAI,kBAAkB8d,SAASA,QAAQC,UAAU,CAAC,IAAID,QAAQC,UAAUiG,EAAE,GAAG,CAAC,MAAMgM,GAAG,IAAIkF,EAAElF,CAAC,CAAClS,QAAQC,UAAUE,EAAE,GAAG+F,EAAE,KAAK,CAAC,IAAIA,EAAEtF,MAAM,CAAC,MAAMsR,GAAGkF,EAAElF,CAAC,CAAC/R,EAAES,KAAKsF,EAAE3F,UAAU,KAAK,CAAC,IAAI,MAAMre,OAAQ,CAAC,MAAMgwB,GAAGkF,EAAElF,CAAC,CAAC/R,GAAG,CAAC,CAAC,MAAM+R,GAAG,GAAGA,GAAGkF,GAAG,kBAAkBlF,EAAER,MAAM,CAAC,IAAI,IAAI/0B,EAAEu1B,EAAER,MAAMvc,MAAM,MACnflW,EAAEm4B,EAAE1F,MAAMvc,MAAM,MAAM8qU,EAAEtjV,EAAExD,OAAO,EAAE0/B,EAAE55B,EAAE9F,OAAO,EAAE,GAAG8mV,GAAG,GAAGpnT,GAAGl8B,EAAEsjV,KAAKhhV,EAAE45B,IAAIA,IAAI,KAAK,GAAGonT,GAAG,GAAGpnT,EAAEonT,IAAIpnT,IAAI,GAAGl8B,EAAEsjV,KAAKhhV,EAAE45B,GAAG,CAAC,GAAG,IAAIonT,GAAG,IAAIpnT,EAAG,MAAMonT,IAAQ,IAAJpnT,GAASl8B,EAAEsjV,KAAKhhV,EAAE45B,GAAG,CAAC,IAAIyxB,EAAE,KAAK3tD,EAAEsjV,GAAGtoU,QAAQ,WAAW,QAA6F,OAArFwI,EAAEk8H,aAAa/xF,EAAE9qD,SAAS,iBAAiB8qD,EAAEA,EAAE3yC,QAAQ,cAAcwI,EAAEk8H,cAAqB/xF,CAAC,QAAO,GAAG21R,GAAG,GAAGpnT,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQqpT,GAAG,EAAGhgV,MAAMkgV,kBAAkBjrT,CAAC,CAAC,OAAOhX,EAAEA,EAAEA,EAAEk8H,aAAal8H,EAAE7mB,KAAK,IAAI2oV,EAAG9hU,GAAG,EAAE,CAC9Z,SAASkiU,EAAGliU,GAAG,OAAOA,EAAEsrD,KAAK,KAAK,EAAE,OAAOw2Q,EAAG9hU,EAAE3kB,MAAM,KAAK,GAAG,OAAOymV,EAAG,QAAQ,KAAK,GAAG,OAAOA,EAAG,YAAY,KAAK,GAAG,OAAOA,EAAG,gBAAgB,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO9hU,EAAEgiU,EAAGhiU,EAAE3kB,MAAK,GAAM,KAAK,GAAG,OAAO2kB,EAAEgiU,EAAGhiU,EAAE3kB,KAAKgxD,QAAO,GAAM,KAAK,EAAE,OAAOrsC,EAAEgiU,EAAGhiU,EAAE3kB,MAAK,GAAM,QAAQ,MAAM,GAAG,CACxR,SAAS8mV,EAAGniU,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,oBAAoBA,EAAE,OAAOA,EAAEk8H,aAAal8H,EAAE7mB,MAAM,KAAK,GAAG,kBAAkB6mB,EAAE,OAAOA,EAAE,OAAOA,GAAG,KAAKghU,EAAG,MAAM,WAAW,KAAKD,EAAG,MAAM,SAAS,KAAKG,EAAG,MAAM,WAAW,KAAKD,EAAG,MAAM,aAAa,KAAKK,EAAG,MAAM,WAAW,KAAKC,EAAG,MAAM,eAAe,GAAG,kBAAkBvhU,EAAE,OAAOA,EAAEghR,UAAU,KAAKogD,EAAG,OAAOphU,EAAEk8H,aAAa,WAAW,YAAY,KAAKilM,EAAG,OAAOnhU,EAAEmmS,SAASjqK,aAAa,WAAW,YAAY,KAAKmlM,EAAG,IAAIt7T,EAAE/F,EAAEqsC,OAC7Z,OADoarsC,EAAEA,EAAEk8H,eACndl8H,EAAE,MADieA,EAAE+F,EAAEm2H,aAClfn2H,EAAE5sB,MAAM,IAAY,cAAc6mB,EAAE,IAAI,cAAqBA,EAAE,KAAKwhU,EAAG,OAA6B,QAAtBz7T,EAAE/F,EAAEk8H,aAAa,MAAcn2H,EAAEo8T,EAAGniU,EAAE3kB,OAAO,OAAO,KAAKomV,EAAG17T,EAAE/F,EAAEoiU,SAASpiU,EAAEA,EAAEqiU,MAAM,IAAI,OAAOF,EAAGniU,EAAE+F,GAAG,CAAC,MAAMiR,GAAG,EAAE,OAAO,IAAI,CAC3M,SAASsrT,EAAGtiU,GAAG,IAAI+F,EAAE/F,EAAE3kB,KAAK,OAAO2kB,EAAEsrD,KAAK,KAAK,GAAG,MAAM,QAAQ,KAAK,EAAE,OAAOvlD,EAAEm2H,aAAa,WAAW,YAAY,KAAK,GAAG,OAAOn2H,EAAEogS,SAASjqK,aAAa,WAAW,YAAY,KAAK,GAAG,MAAM,qBAAqB,KAAK,GAAG,OAAkBl8H,GAAXA,EAAE+F,EAAEsmC,QAAW6vF,aAAal8H,EAAE7mB,MAAM,GAAG4sB,EAAEm2H,cAAc,KAAKl8H,EAAE,cAAcA,EAAE,IAAI,cAAc,KAAK,EAAE,MAAM,WAAW,KAAK,EAAE,OAAO+F,EAAE,KAAK,EAAE,MAAM,SAAS,KAAK,EAAE,MAAM,OAAO,KAAK,EAAE,MAAM,OAAO,KAAK,GAAG,OAAOo8T,EAAGp8T,GAAG,KAAK,EAAE,OAAOA,IAAIk7T,EAAG,aAAa,OAAO,KAAK,GAAG,MAAM,YACtf,KAAK,GAAG,MAAM,WAAW,KAAK,GAAG,MAAM,QAAQ,KAAK,GAAG,MAAM,WAAW,KAAK,GAAG,MAAM,eAAe,KAAK,GAAG,MAAM,gBAAgB,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,GAAG,oBAAoBl7T,EAAE,OAAOA,EAAEm2H,aAAan2H,EAAE5sB,MAAM,KAAK,GAAG,kBAAkB4sB,EAAE,OAAOA,EAAE,OAAO,IAAI,CAAC,SAASw8T,EAAGviU,GAAG,cAAcA,GAAG,IAAK,UAAU,IAAK,SAAS,IAAK,SAAS,IAAK,YAAqB,IAAK,SAAS,OAAOA,EAAE,QAAQ,MAAM,GAAG,CACra,SAASwiU,EAAGxiU,GAAG,IAAI+F,EAAE/F,EAAE3kB,KAAK,OAAO2kB,EAAEA,EAAEyrD,WAAW,UAAUzrD,EAAE5gB,gBAAgB,aAAa2mB,GAAG,UAAUA,EAAE,CAEtF,SAAS08T,EAAGziU,GAAGA,EAAE0iU,gBAAgB1iU,EAAE0iU,cADvD,SAAY1iU,GAAG,IAAI+F,EAAEy8T,EAAGxiU,GAAG,UAAU,QAAQgX,EAAEp3B,OAAOihD,yBAAyB7gC,EAAEgB,YAAYZ,UAAU2F,GAAGkR,EAAE,GAAGjX,EAAE+F,GAAG,IAAI/F,EAAEwQ,eAAezK,IAAI,qBAAqBiR,GAAG,oBAAoBA,EAAEv1B,KAAK,oBAAoBu1B,EAAEpW,IAAI,CAAC,IAAIpkB,EAAEw6B,EAAEv1B,IAAI3C,EAAEk4B,EAAEpW,IAAiL,OAA7KhhB,OAAOs1C,eAAel1B,EAAE+F,EAAE,CAAC3E,cAAa,EAAG3f,IAAI,WAAW,OAAOjF,EAAEikB,KAAKM,KAAK,EAAEH,IAAI,SAASZ,GAAGiX,EAAE,GAAGjX,EAAElhB,EAAE2hB,KAAKM,KAAKf,EAAE,IAAIpgB,OAAOs1C,eAAel1B,EAAE+F,EAAE,CAAC7E,WAAW8V,EAAE9V,aAAmB,CAACiN,SAAS,WAAW,OAAO8I,CAAC,EAAEl0B,SAAS,SAASid,GAAGiX,EAAE,GAAGjX,CAAC,EAAE2iU,aAAa,WAAW3iU,EAAE0iU,cACxf,YAAY1iU,EAAE+F,EAAE,EAAE,CAAC,CAAkD68T,CAAG5iU,GAAG,CAAC,SAAS6iU,EAAG7iU,GAAG,IAAIA,EAAE,OAAM,EAAG,IAAI+F,EAAE/F,EAAE0iU,cAAc,IAAI38T,EAAE,OAAM,EAAG,IAAIiR,EAAEjR,EAAEoI,WAAe8I,EAAE,GAAqD,OAAlDjX,IAAIiX,EAAEurT,EAAGxiU,GAAGA,EAAEtjB,QAAQ,OAAO,QAAQsjB,EAAE1hB,QAAO0hB,EAAEiX,KAAaD,IAAGjR,EAAEhjB,SAASid,IAAG,EAAM,CAAC,SAAS8iU,EAAG9iU,GAAwD,GAAG,qBAAxDA,EAAEA,IAAI,qBAAqB2D,SAASA,cAAS,IAAkC,OAAO,KAAK,IAAI,OAAO3D,EAAE8mE,eAAe9mE,EAAEkyB,IAAI,CAAC,MAAMnsB,GAAG,OAAO/F,EAAEkyB,IAAI,CAAC,CACpa,SAAS6wS,EAAG/iU,EAAE+F,GAAG,IAAIiR,EAAEjR,EAAErpB,QAAQ,OAAOsxC,EAAE,CAAC,EAAEjoB,EAAE,CAACi9T,oBAAe,EAAO9lS,kBAAa,EAAO5+C,WAAM,EAAO5B,QAAQ,MAAMs6B,EAAEA,EAAEhX,EAAEijU,cAAcC,gBAAgB,CAAC,SAASC,EAAGnjU,EAAE+F,GAAG,IAAIiR,EAAE,MAAMjR,EAAEm3B,aAAa,GAAGn3B,EAAEm3B,aAAajmB,EAAE,MAAMlR,EAAErpB,QAAQqpB,EAAErpB,QAAQqpB,EAAEi9T,eAAehsT,EAAEurT,EAAG,MAAMx8T,EAAEznB,MAAMynB,EAAEznB,MAAM04B,GAAGhX,EAAEijU,cAAc,CAACC,eAAejsT,EAAEwrP,aAAazrP,EAAEosT,WAAW,aAAar9T,EAAE1qB,MAAM,UAAU0qB,EAAE1qB,KAAK,MAAM0qB,EAAErpB,QAAQ,MAAMqpB,EAAEznB,MAAM,CAAC,SAAS+kV,EAAGrjU,EAAE+F,GAAe,OAAZA,EAAEA,EAAErpB,UAAiB4jV,EAAGtgU,EAAE,UAAU+F,GAAE,EAAG,CAC9d,SAASu9T,EAAGtjU,EAAE+F,GAAGs9T,EAAGrjU,EAAE+F,GAAG,IAAIiR,EAAEurT,EAAGx8T,EAAEznB,OAAO24B,EAAElR,EAAE1qB,KAAK,GAAG,MAAM27B,EAAK,WAAWC,GAAM,IAAID,GAAG,KAAKhX,EAAE1hB,OAAO0hB,EAAE1hB,OAAO04B,KAAEhX,EAAE1hB,MAAM,GAAG04B,GAAOhX,EAAE1hB,QAAQ,GAAG04B,IAAIhX,EAAE1hB,MAAM,GAAG04B,QAAQ,GAAG,WAAWC,GAAG,UAAUA,EAA8B,YAA3BjX,EAAEiiC,gBAAgB,SAAgBl8B,EAAEyK,eAAe,SAASwqT,GAAGh7T,EAAE+F,EAAE1qB,KAAK27B,GAAGjR,EAAEyK,eAAe,iBAAiBwqT,GAAGh7T,EAAE+F,EAAE1qB,KAAKknV,EAAGx8T,EAAEm3B,eAAe,MAAMn3B,EAAErpB,SAAS,MAAMqpB,EAAEi9T,iBAAiBhjU,EAAEgjU,iBAAiBj9T,EAAEi9T,eAAe,CACla,SAASO,EAAGvjU,EAAE+F,EAAEiR,GAAG,GAAGjR,EAAEyK,eAAe,UAAUzK,EAAEyK,eAAe,gBAAgB,CAAC,IAAIyG,EAAElR,EAAE1qB,KAAK,KAAK,WAAW47B,GAAG,UAAUA,QAAG,IAASlR,EAAEznB,OAAO,OAAOynB,EAAEznB,OAAO,OAAOynB,EAAE,GAAG/F,EAAEijU,cAAcxgE,aAAazrP,GAAGjR,IAAI/F,EAAE1hB,QAAQ0hB,EAAE1hB,MAAMynB,GAAG/F,EAAEk9B,aAAan3B,CAAC,CAAU,MAATiR,EAAEhX,EAAE7mB,QAAc6mB,EAAE7mB,KAAK,IAAI6mB,EAAEgjU,iBAAiBhjU,EAAEijU,cAAcC,eAAe,KAAKlsT,IAAIhX,EAAE7mB,KAAK69B,EAAE,CACzV,SAASgkT,GAAGh7T,EAAE+F,EAAEiR,GAAM,WAAWjR,GAAG+8T,EAAG9iU,EAAE+2O,iBAAiB/2O,IAAE,MAAMgX,EAAEhX,EAAEk9B,aAAa,GAAGl9B,EAAEijU,cAAcxgE,aAAaziQ,EAAEk9B,eAAe,GAAGlmB,IAAIhX,EAAEk9B,aAAa,GAAGlmB,GAAE,CAAC,IAAIwsT,GAAGh0T,MAAMC,QAC7K,SAASg0T,GAAGzjU,EAAE+F,EAAEiR,EAAEC,GAAe,GAAZjX,EAAEA,EAAEyB,QAAWsE,EAAE,CAACA,EAAE,CAAC,EAAE,IAAI,IAAIvpB,EAAE,EAAEA,EAAEw6B,EAAEh+B,OAAOwD,IAAIupB,EAAE,IAAIiR,EAAEx6B,KAAI,EAAG,IAAIw6B,EAAE,EAAEA,EAAEhX,EAAEhnB,OAAOg+B,IAAIx6B,EAAEupB,EAAEyK,eAAe,IAAIxQ,EAAEgX,GAAG14B,OAAO0hB,EAAEgX,GAAGgyE,WAAWxsG,IAAIwjB,EAAEgX,GAAGgyE,SAASxsG,GAAGA,GAAGy6B,IAAIjX,EAAEgX,GAAG0sT,iBAAgB,EAAG,KAAK,CAAmB,IAAlB1sT,EAAE,GAAGurT,EAAGvrT,GAAGjR,EAAE,KAASvpB,EAAE,EAAEA,EAAEwjB,EAAEhnB,OAAOwD,IAAI,CAAC,GAAGwjB,EAAExjB,GAAG8B,QAAQ04B,EAAiD,OAA9ChX,EAAExjB,GAAGwsG,UAAS,OAAG/xE,IAAIjX,EAAExjB,GAAGknV,iBAAgB,IAAW,OAAO39T,GAAG/F,EAAExjB,GAAG1C,WAAWisB,EAAE/F,EAAExjB,GAAG,CAAC,OAAOupB,IAAIA,EAAEijF,UAAS,EAAG,CAAC,CACxY,SAAS26O,GAAG3jU,EAAE+F,GAAG,GAAG,MAAMA,EAAE69T,wBAAwB,MAAM7hV,MAAM69B,EAAE,KAAK,OAAOoO,EAAE,CAAC,EAAEjoB,EAAE,CAACznB,WAAM,EAAO4+C,kBAAa,EAAOvkD,SAAS,GAAGqnB,EAAEijU,cAAcxgE,cAAc,CAAC,SAASohE,GAAG7jU,EAAE+F,GAAG,IAAIiR,EAAEjR,EAAEznB,MAAM,GAAG,MAAM04B,EAAE,CAA+B,GAA9BA,EAAEjR,EAAEptB,SAASotB,EAAEA,EAAEm3B,aAAgB,MAAMlmB,EAAE,CAAC,GAAG,MAAMjR,EAAE,MAAMhkB,MAAM69B,EAAE,KAAK,GAAG4jT,GAAGxsT,GAAG,CAAC,GAAG,EAAEA,EAAEh+B,OAAO,MAAM+I,MAAM69B,EAAE,KAAK5I,EAAEA,EAAE,EAAE,CAACjR,EAAEiR,CAAC,CAAC,MAAMjR,IAAIA,EAAE,IAAIiR,EAAEjR,CAAC,CAAC/F,EAAEijU,cAAc,CAACxgE,aAAa8/D,EAAGvrT,GAAG,CACnY,SAAS8sT,GAAG9jU,EAAE+F,GAAG,IAAIiR,EAAEurT,EAAGx8T,EAAEznB,OAAO24B,EAAEsrT,EAAGx8T,EAAEm3B,cAAc,MAAMlmB,KAAIA,EAAE,GAAGA,KAAMhX,EAAE1hB,QAAQ0hB,EAAE1hB,MAAM04B,GAAG,MAAMjR,EAAEm3B,cAAcl9B,EAAEk9B,eAAelmB,IAAIhX,EAAEk9B,aAAalmB,IAAI,MAAMC,IAAIjX,EAAEk9B,aAAa,GAAGjmB,EAAE,CAAC,SAAS8sT,GAAG/jU,GAAG,IAAI+F,EAAE/F,EAAE6nD,YAAY9hD,IAAI/F,EAAEijU,cAAcxgE,cAAc,KAAK18P,GAAG,OAAOA,IAAI/F,EAAE1hB,MAAMynB,EAAE,CAAC,SAASi+T,GAAGhkU,GAAG,OAAOA,GAAG,IAAK,MAAM,MAAM,6BAA6B,IAAK,OAAO,MAAM,qCAAqC,QAAQ,MAAM,+BAA+B,CAC7c,SAASikU,GAAGjkU,EAAE+F,GAAG,OAAO,MAAM/F,GAAG,iCAAiCA,EAAEgkU,GAAGj+T,GAAG,+BAA+B/F,GAAG,kBAAkB+F,EAAE,+BAA+B/F,CAAC,CAChK,IAAIkkU,GAAelkU,GAAZmkU,IAAYnkU,GAAsJ,SAASA,EAAE+F,GAAG,GAAG,+BAA+B/F,EAAE+/R,cAAc,cAAc//R,EAAEA,EAAEsS,UAAUvM,MAAM,CAA2F,KAA1Fm+T,GAAGA,IAAIvgU,SAASgO,cAAc,QAAUW,UAAU,QAAQvM,EAAE8tD,UAAU13E,WAAW,SAAa4pB,EAAEm+T,GAAG5nN,WAAWt8G,EAAEs8G,YAAYt8G,EAAEu5B,YAAYv5B,EAAEs8G,YAAY,KAAKv2G,EAAEu2G,YAAYt8G,EAAEkS,YAAYnM,EAAEu2G,WAAW,CAAC,EAAvb,qBAAqB8nN,OAAOA,MAAMC,wBAAwB,SAASt+T,EAAEiR,EAAEC,EAAEz6B,GAAG4nV,MAAMC,yBAAwB,WAAW,OAAOrkU,GAAE+F,EAAEiR,EAAM,GAAE,EAAEhX,IACtK,SAASskU,GAAGtkU,EAAE+F,GAAG,GAAGA,EAAE,CAAC,IAAIiR,EAAEhX,EAAEs8G,WAAW,GAAGtlG,GAAGA,IAAIhX,EAAEoxH,WAAW,IAAIp6G,EAAEqjB,SAAwB,YAAdrjB,EAAE00C,UAAU3lD,EAAS,CAAC/F,EAAE6nD,YAAY9hD,CAAC,CACtH,IAAIw+T,GAAG,CAAC1pB,yBAAwB,EAAGC,aAAY,EAAG0pB,mBAAkB,EAAGzpB,kBAAiB,EAAG0pB,kBAAiB,EAAGC,SAAQ,EAAGC,cAAa,EAAGC,iBAAgB,EAAG5pB,aAAY,EAAG7lM,SAAQ,EAAG0vN,MAAK,EAAG5pB,UAAS,EAAG6pB,cAAa,EAAG5pB,YAAW,EAAG6pB,cAAa,EAAGC,WAAU,EAAG7pB,UAAS,EAAGG,SAAQ,EAAGC,YAAW,EAAG0pB,aAAY,EAAGzpB,cAAa,EAAG9iM,YAAW,EAAG0iM,eAAc,EAAG8pB,gBAAe,EAAG7pB,iBAAgB,EAAGtB,YAAW,EAAGorB,WAAU,EAAG1qP,YAAW,EAAGn1C,SAAQ,EAAGosD,OAAM,EAAG+pN,SAAQ,EAAG2pB,SAAQ,EAAG1pB,QAAO,EAAG7lP,QAAO,EAClfqhL,MAAK,EAAGykE,aAAY,EAAGC,cAAa,EAAGC,aAAY,EAAGwpB,iBAAgB,EAAGC,kBAAiB,EAAGxpB,kBAAiB,EAAGC,eAAc,EAAGwpB,aAAY,GAAIC,GAAG,CAAC,SAAS,KAAK,MAAM,KAA6H,SAASC,GAAGzlU,EAAE+F,EAAEiR,GAAG,OAAO,MAAMjR,GAAG,mBAAmBA,GAAG,KAAKA,EAAE,GAAGiR,GAAG,kBAAkBjR,GAAG,IAAIA,GAAGw+T,GAAG/zT,eAAexQ,IAAIukU,GAAGvkU,IAAI,GAAG+F,GAAGi2C,OAAOj2C,EAAE,IAAI,CACzb,SAAS2/T,GAAG1lU,EAAE+F,GAAa,IAAI,IAAIiR,KAAlBhX,EAAEA,EAAEs4B,MAAmBvyB,EAAE,GAAGA,EAAEyK,eAAewG,GAAG,CAAC,IAAIC,EAAE,IAAID,EAAE3f,QAAQ,MAAM7a,EAAEipV,GAAGzuT,EAAEjR,EAAEiR,GAAGC,GAAG,UAAUD,IAAIA,EAAE,YAAYC,EAAEjX,EAAE6nM,YAAY7wL,EAAEx6B,GAAGwjB,EAAEgX,GAAGx6B,CAAC,CAAC,CADYoD,OAAOC,KAAK0kV,IAAIzkV,SAAQ,SAASkgB,GAAGwlU,GAAG1lV,SAAQ,SAASimB,GAAGA,EAAEA,EAAE/F,EAAE9B,OAAO,GAAGC,cAAc6B,EAAEpb,UAAU,GAAG2/U,GAAGx+T,GAAGw+T,GAAGvkU,EAAE,GAAE,IAChI,IAAI2lU,GAAG33S,EAAE,CAACypG,UAAS,GAAI,CAACl9E,MAAK,EAAG/1C,MAAK,EAAGohU,IAAG,EAAG1uN,KAAI,EAAG2uN,OAAM,EAAGC,IAAG,EAAGC,KAAI,EAAGlsU,OAAM,EAAGmsU,QAAO,EAAG92U,MAAK,EAAGmX,MAAK,EAAGikF,OAAM,EAAGpjG,QAAO,EAAG++U,OAAM,EAAGC,KAAI,IAClT,SAASC,GAAGnmU,EAAE+F,GAAG,GAAGA,EAAE,CAAC,GAAG4/T,GAAG3lU,KAAK,MAAM+F,EAAEptB,UAAU,MAAMotB,EAAE69T,yBAAyB,MAAM7hV,MAAM69B,EAAE,IAAI5f,IAAI,GAAG,MAAM+F,EAAE69T,wBAAwB,CAAC,GAAG,MAAM79T,EAAEptB,SAAS,MAAMoJ,MAAM69B,EAAE,KAAK,GAAG,kBAAkB7Z,EAAE69T,2BAA2B,WAAW79T,EAAE69T,yBAAyB,MAAM7hV,MAAM69B,EAAE,IAAK,CAAC,GAAG,MAAM7Z,EAAEuyB,OAAO,kBAAkBvyB,EAAEuyB,MAAM,MAAMv2C,MAAM69B,EAAE,IAAK,CAAC,CAClW,SAASwmT,GAAGpmU,EAAE+F,GAAG,IAAI,IAAI/F,EAAE3I,QAAQ,KAAK,MAAM,kBAAkB0O,EAAE+uR,GAAG,OAAO90R,GAAG,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,YAAY,IAAK,gBAAgB,IAAK,gBAAgB,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,gBAAgB,OAAM,EAAG,QAAQ,OAAM,EAAG,CAAC,IAAIqmU,GAAG,KAAK,SAASC,GAAGtmU,GAA6F,OAA1FA,EAAEA,EAAEk/B,QAAQl/B,EAAEq5C,YAAYh4D,QAASklV,0BAA0BvmU,EAAEA,EAAEumU,yBAAgC,IAAIvmU,EAAEq6B,SAASr6B,EAAEqR,WAAWrR,CAAC,CAAC,IAAIwmU,GAAG,KAAKC,GAAG,KAAKC,GAAG,KACpc,SAASC,GAAG3mU,GAAG,GAAGA,EAAE4mU,GAAG5mU,GAAG,CAAC,GAAG,oBAAoBwmU,GAAG,MAAMzkV,MAAM69B,EAAE,MAAM,IAAI7Z,EAAE/F,EAAE6mU,UAAU9gU,IAAIA,EAAE+gU,GAAG/gU,GAAGygU,GAAGxmU,EAAE6mU,UAAU7mU,EAAE3kB,KAAK0qB,GAAG,CAAC,CAAC,SAASghU,GAAG/mU,GAAGymU,GAAGC,GAAGA,GAAGlmV,KAAKwf,GAAG0mU,GAAG,CAAC1mU,GAAGymU,GAAGzmU,CAAC,CAAC,SAASgnU,KAAK,GAAGP,GAAG,CAAC,IAAIzmU,EAAEymU,GAAG1gU,EAAE2gU,GAAoB,GAAjBA,GAAGD,GAAG,KAAKE,GAAG3mU,GAAM+F,EAAE,IAAI/F,EAAE,EAAEA,EAAE+F,EAAE/sB,OAAOgnB,IAAI2mU,GAAG5gU,EAAE/F,GAAG,CAAC,CAAC,SAASinU,GAAGjnU,EAAE+F,GAAG,OAAO/F,EAAE+F,EAAE,CAAC,SAASmhU,KAAK,CAAC,IAAIC,IAAG,EAAG,SAASC,GAAGpnU,EAAE+F,EAAEiR,GAAG,GAAGmwT,GAAG,OAAOnnU,EAAE+F,EAAEiR,GAAGmwT,IAAG,EAAG,IAAI,OAAOF,GAAGjnU,EAAE+F,EAAEiR,EAAE,CAAC,QAAWmwT,IAAG,GAAG,OAAOV,IAAI,OAAOC,MAAGQ,KAAKF,KAAI,CAAC,CAChb,SAASK,GAAGrnU,EAAE+F,GAAG,IAAIiR,EAAEhX,EAAE6mU,UAAU,GAAG,OAAO7vT,EAAE,OAAO,KAAK,IAAIC,EAAE6vT,GAAG9vT,GAAG,GAAG,OAAOC,EAAE,OAAO,KAAKD,EAAEC,EAAElR,GAAG/F,EAAE,OAAO+F,GAAG,IAAK,UAAU,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,uBAAuB,IAAK,cAAc,IAAK,qBAAqB,IAAK,cAAc,IAAK,qBAAqB,IAAK,YAAY,IAAK,mBAAmB,IAAK,gBAAgBkR,GAAGA,EAAEn9B,YAAqBm9B,IAAI,YAAbjX,EAAEA,EAAE3kB,OAAuB,UAAU2kB,GAAG,WAAWA,GAAG,aAAaA,IAAIA,GAAGiX,EAAE,MAAMjX,EAAE,QAAQA,GAAE,EAAG,GAAGA,EAAE,OAAO,KAAK,GAAGgX,GAAG,oBACleA,EAAE,MAAMj1B,MAAM69B,EAAE,IAAI7Z,SAASiR,IAAI,OAAOA,CAAC,CAAC,IAAIswT,IAAG,EAAG,GAAG7H,EAAG,IAAI,IAAI8H,GAAG,CAAC,EAAE3nV,OAAOs1C,eAAeqyS,GAAG,UAAU,CAAC9lV,IAAI,WAAW6lV,IAAG,CAAE,IAAIjmV,OAAOujB,iBAAiB,OAAO2iU,GAAGA,IAAIlmV,OAAOwjB,oBAAoB,OAAO0iU,GAAGA,GAAG,CAAC,MAAMvnU,IAAGsnU,IAAG,CAAE,CAAC,SAASE,GAAGxnU,EAAE+F,EAAEiR,EAAEC,EAAEz6B,EAAEsC,EAAEghV,EAAEpnT,EAAEyxB,GAAG,IAAIp4B,EAAEvC,MAAMpP,UAAUhC,MAAMqC,KAAKrB,UAAU,GAAG,IAAI2G,EAAE9F,MAAM+W,EAAEjF,EAAE,CAAC,MAAM0G,GAAG1X,KAAK2vB,QAAQjY,EAAE,CAAC,CAAC,IAAIgvT,IAAG,EAAGC,GAAG,KAAKC,IAAG,EAAGC,GAAG,KAAKC,GAAG,CAACn3S,QAAQ,SAAS1wB,GAAGynU,IAAG,EAAGC,GAAG1nU,CAAC,GAAG,SAAS8nU,GAAG9nU,EAAE+F,EAAEiR,EAAEC,EAAEz6B,EAAEsC,EAAEghV,EAAEpnT,EAAEyxB,GAAGs9R,IAAG,EAAGC,GAAG,KAAKF,GAAGvnU,MAAM4nU,GAAGzoU,UAAU,CACjW,SAAS2oU,GAAG/nU,GAAG,IAAI+F,EAAE/F,EAAEgX,EAAEhX,EAAE,GAAGA,EAAEgoU,UAAU,KAAKjiU,EAAEkiU,QAAQliU,EAAEA,EAAEkiU,WAAW,CAACjoU,EAAE+F,EAAE,GAAO,KAAa,MAAjBA,EAAE/F,GAASkoU,SAAclxT,EAAEjR,EAAEkiU,QAAQjoU,EAAE+F,EAAEkiU,aAAajoU,EAAE,CAAC,OAAO,IAAI+F,EAAEulD,IAAIt0C,EAAE,IAAI,CAAC,SAASmxT,GAAGnoU,GAAG,GAAG,KAAKA,EAAEsrD,IAAI,CAAC,IAAIvlD,EAAE/F,EAAEooU,cAAsE,GAAxD,OAAOriU,IAAkB,QAAd/F,EAAEA,EAAEgoU,aAAqBjiU,EAAE/F,EAAEooU,gBAAmB,OAAOriU,EAAE,OAAOA,EAAEsiU,UAAU,CAAC,OAAO,IAAI,CAAC,SAASC,GAAGtoU,GAAG,GAAG+nU,GAAG/nU,KAAKA,EAAE,MAAMje,MAAM69B,EAAE,KAAM,CAE1S,SAAS2oT,GAAGvoU,GAAW,OAAO,QAAfA,EADtN,SAAYA,GAAG,IAAI+F,EAAE/F,EAAEgoU,UAAU,IAAIjiU,EAAE,CAAS,GAAG,QAAXA,EAAEgiU,GAAG/nU,IAAe,MAAMje,MAAM69B,EAAE,MAAM,OAAO7Z,IAAI/F,EAAE,KAAKA,CAAC,CAAC,IAAI,IAAIgX,EAAEhX,EAAEiX,EAAElR,IAAI,CAAC,IAAIvpB,EAAEw6B,EAAEixT,OAAO,GAAG,OAAOzrV,EAAE,MAAM,IAAIsC,EAAEtC,EAAEwrV,UAAU,GAAG,OAAOlpV,EAAE,CAAY,GAAG,QAAdm4B,EAAEz6B,EAAEyrV,QAAmB,CAACjxT,EAAEC,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAGz6B,EAAE20B,QAAQryB,EAAEqyB,MAAM,CAAC,IAAIryB,EAAEtC,EAAE20B,MAAMryB,GAAG,CAAC,GAAGA,IAAIk4B,EAAE,OAAOsxT,GAAG9rV,GAAGwjB,EAAE,GAAGlhB,IAAIm4B,EAAE,OAAOqxT,GAAG9rV,GAAGupB,EAAEjnB,EAAEA,EAAE+xO,OAAO,CAAC,MAAM9uO,MAAM69B,EAAE,KAAM,CAAC,GAAG5I,EAAEixT,SAAShxT,EAAEgxT,OAAOjxT,EAAEx6B,EAAEy6B,EAAEn4B,MAAM,CAAC,IAAI,IAAIghV,GAAE,EAAGpnT,EAAEl8B,EAAE20B,MAAMuH,GAAG,CAAC,GAAGA,IAAI1B,EAAE,CAAC8oT,GAAE,EAAG9oT,EAAEx6B,EAAEy6B,EAAEn4B,EAAE,KAAK,CAAC,GAAG45B,IAAIzB,EAAE,CAAC6oT,GAAE,EAAG7oT,EAAEz6B,EAAEw6B,EAAEl4B,EAAE,KAAK,CAAC45B,EAAEA,EAAEm4M,OAAO,CAAC,IAAIivG,EAAE,CAAC,IAAIpnT,EAAE55B,EAAEqyB,MAAMuH,GAAG,CAAC,GAAGA,IAC5f1B,EAAE,CAAC8oT,GAAE,EAAG9oT,EAAEl4B,EAAEm4B,EAAEz6B,EAAE,KAAK,CAAC,GAAGk8B,IAAIzB,EAAE,CAAC6oT,GAAE,EAAG7oT,EAAEn4B,EAAEk4B,EAAEx6B,EAAE,KAAK,CAACk8B,EAAEA,EAAEm4M,OAAO,CAAC,IAAIivG,EAAE,MAAM/9U,MAAM69B,EAAE,KAAM,CAAC,CAAC,GAAG5I,EAAEgxT,YAAY/wT,EAAE,MAAMl1B,MAAM69B,EAAE,KAAM,CAAC,GAAG,IAAI5I,EAAEs0C,IAAI,MAAMvpE,MAAM69B,EAAE,MAAM,OAAO5I,EAAE6vT,UAAU3iV,UAAU8yB,EAAEhX,EAAE+F,CAAC,CAAkByiU,CAAGxoU,IAAmByoU,GAAGzoU,GAAG,IAAI,CAAC,SAASyoU,GAAGzoU,GAAG,GAAG,IAAIA,EAAEsrD,KAAK,IAAItrD,EAAEsrD,IAAI,OAAOtrD,EAAE,IAAIA,EAAEA,EAAEmR,MAAM,OAAOnR,GAAG,CAAC,IAAI+F,EAAE0iU,GAAGzoU,GAAG,GAAG,OAAO+F,EAAE,OAAOA,EAAE/F,EAAEA,EAAE6wN,OAAO,CAAC,OAAO,IAAI,CAC1X,IAAI63G,GAAGtJ,EAAGuJ,0BAA0BC,GAAGxJ,EAAGyJ,wBAAwBC,GAAG1J,EAAG2J,qBAAqBC,GAAG5J,EAAG6J,sBAAsBC,GAAE9J,EAAG+J,aAAaC,GAAGhK,EAAGiK,iCAAiCC,GAAGlK,EAAGmK,2BAA2BC,GAAGpK,EAAGqK,8BAA8BC,GAAGtK,EAAGuK,wBAAwBC,GAAGxK,EAAGyK,qBAAqBC,GAAG1K,EAAG2K,sBAAsBC,GAAG,KAAKC,GAAG,KACvV,IAAIC,GAAGtnU,KAAKunU,MAAMvnU,KAAKunU,MAAiC,SAAYnqU,GAAU,OAAPA,KAAK,EAAS,IAAIA,EAAE,GAAG,IAAIoqU,GAAGpqU,GAAGqqU,GAAG,GAAG,CAAC,EAA/ED,GAAGxnU,KAAK+zG,IAAI0zN,GAAGznU,KAAK0nU,IAA4D,IAAIC,GAAG,GAAGC,GAAG,QAC7H,SAASC,GAAGzqU,GAAG,OAAOA,GAAGA,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,OAAS,QAAFA,EAAU,KAAK,QAAQ,KAAK,QAAQ,KAAK,SAAS,KAAK,SAAS,KAAK,SAAS,OAAS,UAAFA,EAAY,KAAK,UAAU,OAAO,UAAU,KAAK,UAAU,OAAO,UAAU,KAAK,UAAU,OAAO,UAAU,KAAK,WAAW,OAAO,WACzgB,QAAQ,OAAOA,EAAE,CAAC,SAAS0qU,GAAG1qU,EAAE+F,GAAG,IAAIiR,EAAEhX,EAAE2qU,aAAa,GAAG,IAAI3zT,EAAE,OAAO,EAAE,IAAIC,EAAE,EAAEz6B,EAAEwjB,EAAE4qU,eAAe9rV,EAAEkhB,EAAE6qU,YAAY/K,EAAI,UAAF9oT,EAAY,GAAG,IAAI8oT,EAAE,CAAC,IAAIpnT,EAAEonT,GAAGtjV,EAAE,IAAIk8B,EAAEzB,EAAEwzT,GAAG/xT,GAAS,KAAL55B,GAAGghV,KAAU7oT,EAAEwzT,GAAG3rV,GAAI,MAAa,KAAPghV,EAAE9oT,GAAGx6B,GAAQy6B,EAAEwzT,GAAG3K,GAAG,IAAIhhV,IAAIm4B,EAAEwzT,GAAG3rV,IAAI,GAAG,IAAIm4B,EAAE,OAAO,EAAE,GAAG,IAAIlR,GAAGA,IAAIkR,GAAG,KAAKlR,EAAEvpB,MAAKA,EAAEy6B,GAAGA,KAAEn4B,EAAEinB,GAAGA,IAAQ,KAAKvpB,GAAG,KAAO,QAAFsC,IAAY,OAAOinB,EAA0C,GAAxC,KAAO,EAAFkR,KAAOA,GAAK,GAAFD,GAA4B,KAAtBjR,EAAE/F,EAAE8qU,gBAAwB,IAAI9qU,EAAEA,EAAE+qU,cAAchlU,GAAGkR,EAAE,EAAElR,GAAcvpB,EAAE,IAAbw6B,EAAE,GAAGkzT,GAAGnkU,IAAUkR,GAAGjX,EAAEgX,GAAGjR,IAAIvpB,EAAE,OAAOy6B,CAAC,CACvc,SAAS+zT,GAAGhrU,EAAE+F,GAAG,OAAO/F,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO+F,EAAE,IAAI,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,OAAOA,EAAE,IAAuJ,QAAQ,OAAO,EAAE,CACrN,SAASklU,GAAGjrU,GAAgC,OAAO,KAApCA,GAAkB,WAAhBA,EAAE2qU,cAAsC3qU,EAAI,WAAFA,EAAa,WAAW,CAAC,CAAC,SAASkrU,KAAK,IAAIlrU,EAAEuqU,GAAoC,OAA1B,KAAQ,SAAfA,KAAK,MAAqBA,GAAG,IAAWvqU,CAAC,CAAC,SAASmrU,GAAGnrU,GAAG,IAAI,IAAI+F,EAAE,GAAGiR,EAAE,EAAE,GAAGA,EAAEA,IAAIjR,EAAEvlB,KAAKwf,GAAG,OAAO+F,CAAC,CAC3a,SAASqlU,GAAGprU,EAAE+F,EAAEiR,GAAGhX,EAAE2qU,cAAc5kU,EAAE,YAAYA,IAAI/F,EAAE4qU,eAAe,EAAE5qU,EAAE6qU,YAAY,IAAG7qU,EAAEA,EAAEqrU,YAAWtlU,EAAE,GAAGmkU,GAAGnkU,IAAQiR,CAAC,CACzH,SAASs0T,GAAGtrU,EAAE+F,GAAG,IAAIiR,EAAEhX,EAAE8qU,gBAAgB/kU,EAAE,IAAI/F,EAAEA,EAAE+qU,cAAc/zT,GAAG,CAAC,IAAIC,EAAE,GAAGizT,GAAGlzT,GAAGx6B,EAAE,GAAGy6B,EAAEz6B,EAAEupB,EAAE/F,EAAEiX,GAAGlR,IAAI/F,EAAEiX,IAAIlR,GAAGiR,IAAIx6B,CAAC,CAAC,CAAC,IAAIqxC,GAAE,EAAE,SAAS09S,GAAGvrU,GAAS,OAAO,GAAbA,IAAIA,GAAa,EAAEA,EAAE,KAAO,UAAFA,GAAa,GAAG,UAAU,EAAE,CAAC,CAAC,IAAIwrU,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,IAAG,EAAGC,GAAG,GAAGC,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,GAAG,IAAI3rU,IAAI4rU,GAAG,IAAI5rU,IAAI6rU,GAAG,GAAGC,GAAG,6PAA6Pr3U,MAAM,KAChiB,SAASs3U,GAAGtsU,EAAE+F,GAAG,OAAO/F,GAAG,IAAK,UAAU,IAAK,WAAW+rU,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,YAAYC,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,WAAWC,GAAG,KAAK,MAAM,IAAK,cAAc,IAAK,aAAaC,GAAGv6U,OAAOoU,EAAE4uS,WAAW,MAAM,IAAK,oBAAoB,IAAK,qBAAqBw3B,GAAGx6U,OAAOoU,EAAE4uS,WAAW,CACnT,SAAS43B,GAAGvsU,EAAE+F,EAAEiR,EAAEC,EAAEz6B,EAAEsC,GAAG,OAAG,OAAOkhB,GAAGA,EAAEg+P,cAAcl/Q,GAASkhB,EAAE,CAACwsU,UAAUzmU,EAAE0mU,aAAaz1T,EAAE01T,iBAAiBz1T,EAAE+mP,YAAYl/Q,EAAE6tV,iBAAiB,CAACnwV,IAAI,OAAOupB,IAAY,QAARA,EAAE6gU,GAAG7gU,KAAa0lU,GAAG1lU,IAAI/F,IAAEA,EAAE0sU,kBAAkBz1T,EAAElR,EAAE/F,EAAE2sU,iBAAiB,OAAOnwV,IAAI,IAAIupB,EAAE1O,QAAQ7a,IAAIupB,EAAEvlB,KAAKhE,GAAUwjB,EAAC,CAEpR,SAAS4sU,GAAG5sU,GAAG,IAAI+F,EAAE8mU,GAAG7sU,EAAEk/B,QAAQ,GAAG,OAAOn5B,EAAE,CAAC,IAAIiR,EAAE+wT,GAAGhiU,GAAG,GAAG,OAAOiR,EAAE,GAAW,MAARjR,EAAEiR,EAAEs0C,MAAY,GAAW,QAARvlD,EAAEoiU,GAAGnxT,IAA4D,OAA/ChX,EAAEwsU,UAAUzmU,OAAE6lU,GAAG5rU,EAAE8sU,UAAS,WAAWpB,GAAG10T,EAAE,SAAgB,GAAG,IAAIjR,GAAGiR,EAAE6vT,UAAU3iV,QAAQkkV,cAAc2E,aAAmE,YAArD/sU,EAAEwsU,UAAU,IAAIx1T,EAAEs0C,IAAIt0C,EAAE6vT,UAAUzwF,cAAc,KAAY,CAACp2O,EAAEwsU,UAAU,IAAI,CAClT,SAASQ,GAAGhtU,GAAG,GAAG,OAAOA,EAAEwsU,UAAU,OAAM,EAAG,IAAI,IAAIzmU,EAAE/F,EAAE2sU,iBAAiB,EAAE5mU,EAAE/sB,QAAQ,CAAC,IAAIg+B,EAAEi2T,GAAGjtU,EAAEysU,aAAazsU,EAAE0sU,iBAAiB3mU,EAAE,GAAG/F,EAAEg+P,aAAa,GAAG,OAAOhnP,EAAiG,OAAe,QAARjR,EAAE6gU,GAAG5vT,KAAay0T,GAAG1lU,GAAG/F,EAAEwsU,UAAUx1T,GAAE,EAA3H,IAAIC,EAAE,IAAtBD,EAAEhX,EAAEg+P,aAAwBh9P,YAAYgW,EAAE37B,KAAK27B,GAAGqvT,GAAGpvT,EAAED,EAAEkoB,OAAOgtB,cAAcj1C,GAAGovT,GAAG,KAA0DtgU,EAAEyF,OAAO,CAAC,OAAM,CAAE,CAAC,SAAS0hU,GAAGltU,EAAE+F,EAAEiR,GAAGg2T,GAAGhtU,IAAIgX,EAAErlB,OAAOoU,EAAE,CAAC,SAASonU,KAAKtB,IAAG,EAAG,OAAOE,IAAIiB,GAAGjB,MAAMA,GAAG,MAAM,OAAOC,IAAIgB,GAAGhB,MAAMA,GAAG,MAAM,OAAOC,IAAIe,GAAGf,MAAMA,GAAG,MAAMC,GAAGpsV,QAAQotV,IAAIf,GAAGrsV,QAAQotV,GAAG,CACnf,SAASE,GAAGptU,EAAE+F,GAAG/F,EAAEwsU,YAAYzmU,IAAI/F,EAAEwsU,UAAU,KAAKX,KAAKA,IAAG,EAAGzM,EAAGuJ,0BAA0BvJ,EAAGuK,wBAAwBwD,KAAK,CAC5H,SAASE,GAAGrtU,GAAG,SAAS+F,EAAEA,GAAG,OAAOqnU,GAAGrnU,EAAE/F,EAAE,CAAC,GAAG,EAAE8rU,GAAG9yV,OAAO,CAACo0V,GAAGtB,GAAG,GAAG9rU,GAAG,IAAI,IAAIgX,EAAE,EAAEA,EAAE80T,GAAG9yV,OAAOg+B,IAAI,CAAC,IAAIC,EAAE60T,GAAG90T,GAAGC,EAAEu1T,YAAYxsU,IAAIiX,EAAEu1T,UAAU,KAAK,CAAC,CAAyF,IAAxF,OAAOT,IAAIqB,GAAGrB,GAAG/rU,GAAG,OAAOgsU,IAAIoB,GAAGpB,GAAGhsU,GAAG,OAAOisU,IAAImB,GAAGnB,GAAGjsU,GAAGksU,GAAGpsV,QAAQimB,GAAGomU,GAAGrsV,QAAQimB,GAAOiR,EAAE,EAAEA,EAAEo1T,GAAGpzV,OAAOg+B,KAAIC,EAAEm1T,GAAGp1T,IAAKw1T,YAAYxsU,IAAIiX,EAAEu1T,UAAU,MAAM,KAAK,EAAEJ,GAAGpzV,QAAiB,QAARg+B,EAAEo1T,GAAG,IAAYI,WAAYI,GAAG51T,GAAG,OAAOA,EAAEw1T,WAAWJ,GAAG5gU,OAAO,CAAC,IAAI8hU,GAAG1M,EAAG2M,wBAAwBC,IAAG,EAC5a,SAASC,GAAGztU,EAAE+F,EAAEiR,EAAEC,GAAG,IAAIz6B,EAAEqxC,GAAE/uC,EAAEwuV,GAAGI,WAAWJ,GAAGI,WAAW,KAAK,IAAI7/S,GAAE,EAAE8/S,GAAG3tU,EAAE+F,EAAEiR,EAAEC,EAAE,CAAC,QAAQ4W,GAAErxC,EAAE8wV,GAAGI,WAAW5uV,CAAC,CAAC,CAAC,SAAS8uV,GAAG5tU,EAAE+F,EAAEiR,EAAEC,GAAG,IAAIz6B,EAAEqxC,GAAE/uC,EAAEwuV,GAAGI,WAAWJ,GAAGI,WAAW,KAAK,IAAI7/S,GAAE,EAAE8/S,GAAG3tU,EAAE+F,EAAEiR,EAAEC,EAAE,CAAC,QAAQ4W,GAAErxC,EAAE8wV,GAAGI,WAAW5uV,CAAC,CAAC,CACjO,SAAS6uV,GAAG3tU,EAAE+F,EAAEiR,EAAEC,GAAG,GAAGu2T,GAAG,CAAC,IAAIhxV,EAAEywV,GAAGjtU,EAAE+F,EAAEiR,EAAEC,GAAG,GAAG,OAAOz6B,EAAEqxV,GAAG7tU,EAAE+F,EAAEkR,EAAEtxB,GAAGqxB,GAAGs1T,GAAGtsU,EAAEiX,QAAQ,GANtF,SAAYjX,EAAE+F,EAAEiR,EAAEC,EAAEz6B,GAAG,OAAOupB,GAAG,IAAK,UAAU,OAAOgmU,GAAGQ,GAAGR,GAAG/rU,EAAE+F,EAAEiR,EAAEC,EAAEz6B,IAAG,EAAG,IAAK,YAAY,OAAOwvV,GAAGO,GAAGP,GAAGhsU,EAAE+F,EAAEiR,EAAEC,EAAEz6B,IAAG,EAAG,IAAK,YAAY,OAAOyvV,GAAGM,GAAGN,GAAGjsU,EAAE+F,EAAEiR,EAAEC,EAAEz6B,IAAG,EAAG,IAAK,cAAc,IAAIsC,EAAEtC,EAAEm4T,UAAkD,OAAxCu3B,GAAGtrU,IAAI9hB,EAAEytV,GAAGL,GAAGzqV,IAAI3C,IAAI,KAAKkhB,EAAE+F,EAAEiR,EAAEC,EAAEz6B,KAAU,EAAG,IAAK,oBAAoB,OAAOsC,EAAEtC,EAAEm4T,UAAUw3B,GAAGvrU,IAAI9hB,EAAEytV,GAAGJ,GAAG1qV,IAAI3C,IAAI,KAAKkhB,EAAE+F,EAAEiR,EAAEC,EAAEz6B,KAAI,EAAG,OAAM,CAAE,CAM1QsxV,CAAGtxV,EAAEwjB,EAAE+F,EAAEiR,EAAEC,GAAGA,EAAE8yC,uBAAuB,GAAGuiR,GAAGtsU,EAAEiX,GAAK,EAAFlR,IAAM,EAAEsmU,GAAGh1U,QAAQ2I,GAAG,CAAC,KAAK,OAAOxjB,GAAG,CAAC,IAAIsC,EAAE8nV,GAAGpqV,GAA0D,GAAvD,OAAOsC,GAAG0sV,GAAG1sV,GAAiB,QAAdA,EAAEmuV,GAAGjtU,EAAE+F,EAAEiR,EAAEC,KAAa42T,GAAG7tU,EAAE+F,EAAEkR,EAAEtxB,GAAGqxB,GAAMl4B,IAAItC,EAAE,MAAMA,EAAEsC,CAAC,CAAC,OAAOtC,GAAGy6B,EAAE8yC,iBAAiB,MAAM8jR,GAAG7tU,EAAE+F,EAAEkR,EAAE,KAAKD,EAAE,CAAC,CAAC,IAAIrxB,GAAG,KACpU,SAASsnV,GAAGjtU,EAAE+F,EAAEiR,EAAEC,GAA2B,GAAxBtxB,GAAG,KAAwB,QAAXqa,EAAE6sU,GAAV7sU,EAAEsmU,GAAGrvT,KAAuB,GAAW,QAARlR,EAAEgiU,GAAG/nU,IAAYA,EAAE,UAAU,GAAW,MAARgX,EAAEjR,EAAEulD,KAAW,CAAS,GAAG,QAAXtrD,EAAEmoU,GAAGpiU,IAAe,OAAO/F,EAAEA,EAAE,IAAI,MAAM,GAAG,IAAIgX,EAAE,CAAC,GAAGjR,EAAE8gU,UAAU3iV,QAAQkkV,cAAc2E,aAAa,OAAO,IAAIhnU,EAAEulD,IAAIvlD,EAAE8gU,UAAUzwF,cAAc,KAAKp2O,EAAE,IAAI,MAAM+F,IAAI/F,IAAIA,EAAE,MAAW,OAALra,GAAGqa,EAAS,IAAI,CAC7S,SAAS+tU,GAAG/tU,GAAG,OAAOA,GAAG,IAAK,SAAS,IAAK,QAAQ,IAAK,QAAQ,IAAK,cAAc,IAAK,OAAO,IAAK,MAAM,IAAK,WAAW,IAAK,WAAW,IAAK,UAAU,IAAK,YAAY,IAAK,OAAO,IAAK,UAAU,IAAK,WAAW,IAAK,QAAQ,IAAK,UAAU,IAAK,UAAU,IAAK,WAAW,IAAK,QAAQ,IAAK,YAAY,IAAK,UAAU,IAAK,QAAQ,IAAK,QAAQ,IAAK,OAAO,IAAK,gBAAgB,IAAK,cAAc,IAAK,YAAY,IAAK,aAAa,IAAK,QAAQ,IAAK,SAAS,IAAK,SAAS,IAAK,SAAS,IAAK,cAAc,IAAK,WAAW,IAAK,aAAa,IAAK,eAAe,IAAK,SAAS,IAAK,kBAAkB,IAAK,YAAY,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,oBAAoB,IAAK,aAAa,IAAK,YAAY,IAAK,cAAc,IAAK,OAAO,IAAK,mBAAmB,IAAK,QAAQ,IAAK,aAAa,IAAK,WAAW,IAAK,SAAS,IAAK,cAAc,OAAO,EAAE,IAAK,OAAO,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,SAAS,IAAK,SAAS,IAAK,YAAY,IAAK,QAAQ,IAAK,aAAa,IAAK,aAAa,IAAK,eAAe,IAAK,eAAe,OAAO,EACpqC,IAAK,UAAU,OAAOopU,MAAM,KAAKE,GAAG,OAAO,EAAE,KAAKE,GAAG,OAAO,EAAE,KAAKE,GAAG,KAAKE,GAAG,OAAO,GAAG,KAAKE,GAAG,OAAO,UAAU,QAAQ,OAAO,GAAG,QAAQ,OAAO,GAAG,CAAC,IAAIkE,GAAG,KAAKjvQ,GAAG,KAAKkvQ,GAAG,KAAK,SAASC,KAAK,GAAGD,GAAG,OAAOA,GAAG,IAAIjuU,EAAkBiX,EAAhBlR,EAAEg5D,GAAG/nD,EAAEjR,EAAE/sB,OAASwD,EAAE,UAAUwxV,GAAGA,GAAG1vV,MAAM0vV,GAAGnmR,YAAY/oE,EAAEtC,EAAExD,OAAO,IAAIgnB,EAAE,EAAEA,EAAEgX,GAAGjR,EAAE/F,KAAKxjB,EAAEwjB,GAAGA,KAAK,IAAI8/T,EAAE9oT,EAAEhX,EAAE,IAAIiX,EAAE,EAAEA,GAAG6oT,GAAG/5T,EAAEiR,EAAEC,KAAKz6B,EAAEsC,EAAEm4B,GAAGA,KAAK,OAAOg3T,GAAGzxV,EAAE4hB,MAAM4B,EAAE,EAAEiX,EAAE,EAAEA,OAAE,EAAO,CACxY,SAASk3T,GAAGnuU,GAAG,IAAI+F,EAAE/F,EAAE+6C,QAA+E,MAAvE,aAAa/6C,EAAgB,KAAbA,EAAEA,EAAEwpG,WAAgB,KAAKzjG,IAAI/F,EAAE,IAAKA,EAAE+F,EAAE,KAAK/F,IAAIA,EAAE,IAAW,IAAIA,GAAG,KAAKA,EAAEA,EAAE,CAAC,CAAC,SAASouU,KAAK,OAAM,CAAE,CAAC,SAASC,KAAK,OAAM,CAAE,CAC5K,SAASC,GAAGtuU,GAAG,SAAS+F,EAAEA,EAAEkR,EAAEz6B,EAAEsC,EAAEghV,GAA6G,IAAI,IAAI9oT,KAAlHjW,KAAKwtU,WAAWxoU,EAAEhF,KAAKytU,YAAYhyV,EAAEukB,KAAK1lB,KAAK47B,EAAElW,KAAKi9P,YAAYl/Q,EAAEiiB,KAAKm+B,OAAO4gS,EAAE/+T,KAAK2vC,cAAc,KAAkB1wC,EAAEA,EAAEwQ,eAAewG,KAAKjR,EAAE/F,EAAEgX,GAAGjW,KAAKiW,GAAGjR,EAAEA,EAAEjnB,GAAGA,EAAEk4B,IAAgI,OAA5HjW,KAAKszS,oBAAoB,MAAMv1T,EAAEw1T,iBAAiBx1T,EAAEw1T,kBAAiB,IAAKx1T,EAAEumG,aAAa+oP,GAAGC,GAAGttU,KAAK6yS,qBAAqBy6B,GAAUttU,IAAI,CAC9E,OAD+EitB,EAAEjoB,EAAE3F,UAAU,CAACqxC,eAAe,WAAW1wC,KAAKuzS,kBAAiB,EAAG,IAAIt0S,EAAEe,KAAKi9P,YAAYh+P,IAAIA,EAAEyxC,eAAezxC,EAAEyxC,iBAAiB,mBAAmBzxC,EAAEqlF,cAC7erlF,EAAEqlF,aAAY,GAAItkF,KAAKszS,mBAAmB+5B,GAAG,EAAErkR,gBAAgB,WAAW,IAAI/pD,EAAEe,KAAKi9P,YAAYh+P,IAAIA,EAAE+pD,gBAAgB/pD,EAAE+pD,kBAAkB,mBAAmB/pD,EAAEyuU,eAAezuU,EAAEyuU,cAAa,GAAI1tU,KAAK6yS,qBAAqBw6B,GAAG,EAAEv7C,QAAQ,WAAW,EAAE67C,aAAaN,KAAYroU,CAAC,CACjR,IAAoL4oU,GAAGC,GAAGC,GAAtLC,GAAG,CAACp6B,WAAW,EAAEF,QAAQ,EAAEC,WAAW,EAAEhyQ,UAAU,SAASziC,GAAG,OAAOA,EAAEyiC,WAAWpiD,KAAK49D,KAAK,EAAEq2P,iBAAiB,EAAEy6B,UAAU,GAAGzwM,GAAGgwM,GAAGQ,IAAIE,GAAGhhT,EAAE,CAAC,EAAE8gT,GAAG,CAACl8Q,KAAK,EAAEsvE,OAAO,IAAI+sM,GAAGX,GAAGU,IAAaE,GAAGlhT,EAAE,CAAC,EAAEghT,GAAG,CAACp6B,QAAQ,EAAEC,QAAQ,EAAE/iQ,QAAQ,EAAEC,QAAQ,EAAE5N,MAAM,EAAEG,MAAM,EAAE+W,QAAQ,EAAEE,SAAS,EAAEJ,OAAO,EAAEk1F,QAAQ,EAAE8+L,iBAAiBC,GAAG/jO,OAAO,EAAErpC,QAAQ,EAAE2mC,cAAc,SAAS3oG,GAAG,YAAO,IAASA,EAAE2oG,cAAc3oG,EAAEqvU,cAAcrvU,EAAEq5C,WAAWr5C,EAAE24B,UAAU34B,EAAEqvU,YAAYrvU,EAAE2oG,aAAa,EAAE2mO,UAAU,SAAStvU,GAAG,MAAG,cAC3eA,EAASA,EAAEsvU,WAAUtvU,IAAI6uU,KAAKA,IAAI,cAAc7uU,EAAE3kB,MAAMszV,GAAG3uU,EAAE40S,QAAQi6B,GAAGj6B,QAAQg6B,GAAG5uU,EAAE60S,QAAQg6B,GAAGh6B,SAAS+5B,GAAGD,GAAG,EAAEE,GAAG7uU,GAAU2uU,GAAE,EAAEY,UAAU,SAASvvU,GAAG,MAAM,cAAcA,EAAEA,EAAEuvU,UAAUX,EAAE,IAAIY,GAAGlB,GAAGY,IAAiCO,GAAGnB,GAA7BtgT,EAAE,CAAC,EAAEkhT,GAAG,CAACQ,aAAa,KAA4CC,GAAGrB,GAA9BtgT,EAAE,CAAC,EAAEghT,GAAG,CAACrmO,cAAc,KAA0EinO,GAAGtB,GAA5DtgT,EAAE,CAAC,EAAE8gT,GAAG,CAACe,cAAc,EAAEC,YAAY,EAAEC,cAAc,KAAcC,GAAGhiT,EAAE,CAAC,EAAE8gT,GAAG,CAACmB,cAAc,SAASjwU,GAAG,MAAM,kBAAkBA,EAAEA,EAAEiwU,cAAc5uV,OAAO4uV,aAAa,IAAIC,GAAG5B,GAAG0B,IAAyBG,GAAG7B,GAArBtgT,EAAE,CAAC,EAAE8gT,GAAG,CAACloV,KAAK,KAAcwpV,GAAG,CAACC,IAAI,SACxfC,SAAS,IAAIC,KAAK,YAAYC,GAAG,UAAUC,MAAM,aAAaC,KAAK,YAAYC,IAAI,SAASC,IAAI,KAAKC,KAAK,cAAcC,KAAK,cAAc7tJ,OAAO,aAAa8tJ,gBAAgB,gBAAgBC,GAAG,CAAC,EAAE,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KACtf,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,UAAU,IAAI,aAAa,IAAI,QAAQC,GAAG,CAACC,IAAI,SAASC,QAAQ,UAAUC,KAAK,UAAUC,MAAM,YAAY,SAASC,GAAGtxU,GAAG,IAAI+F,EAAEhF,KAAKi9P,YAAY,OAAOj4P,EAAEopU,iBAAiBppU,EAAEopU,iBAAiBnvU,MAAIA,EAAEixU,GAAGjxU,OAAM+F,EAAE/F,EAAK,CAAC,SAASovU,KAAK,OAAOkC,EAAE,CAChS,IAAIC,GAAGvjT,EAAE,CAAC,EAAEghT,GAAG,CAACjvV,IAAI,SAASigB,GAAG,GAAGA,EAAEjgB,IAAI,CAAC,IAAIgmB,EAAEqqU,GAAGpwU,EAAEjgB,MAAMigB,EAAEjgB,IAAI,GAAG,iBAAiBgmB,EAAE,OAAOA,CAAC,CAAC,MAAM,aAAa/F,EAAE3kB,KAAc,MAAR2kB,EAAEmuU,GAAGnuU,IAAU,QAAQuqC,OAAOC,aAAaxqC,GAAI,YAAYA,EAAE3kB,MAAM,UAAU2kB,EAAE3kB,KAAK21V,GAAGhxU,EAAE+6C,UAAU,eAAe,EAAE,EAAEsqB,KAAK,EAAE/oE,SAAS,EAAE++C,QAAQ,EAAEE,SAAS,EAAEJ,OAAO,EAAEk1F,QAAQ,EAAE+sL,OAAO,EAAE7yS,OAAO,EAAE4kT,iBAAiBC,GAAG5lO,SAAS,SAASxpG,GAAG,MAAM,aAAaA,EAAE3kB,KAAK8yV,GAAGnuU,GAAG,CAAC,EAAE+6C,QAAQ,SAAS/6C,GAAG,MAAM,YAAYA,EAAE3kB,MAAM,UAAU2kB,EAAE3kB,KAAK2kB,EAAE+6C,QAAQ,CAAC,EAAEU,MAAM,SAASz7C,GAAG,MAAM,aAC7eA,EAAE3kB,KAAK8yV,GAAGnuU,GAAG,YAAYA,EAAE3kB,MAAM,UAAU2kB,EAAE3kB,KAAK2kB,EAAE+6C,QAAQ,CAAC,IAAIy2R,GAAGlD,GAAGiD,IAAiIE,GAAGnD,GAA7HtgT,EAAE,CAAC,EAAEkhT,GAAG,CAACv6B,UAAU,EAAE7/P,MAAM,EAAEC,OAAO,EAAE28R,SAAS,EAAEC,mBAAmB,EAAEC,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAEhtJ,YAAY,EAAE/qL,UAAU,KAAmIg4U,GAAGzD,GAArHtgT,EAAE,CAAC,EAAEghT,GAAG,CAAC/pJ,QAAQ,EAAE6vH,cAAc,EAAEpjQ,eAAe,EAAEyJ,OAAO,EAAEk1F,QAAQ,EAAEh1F,QAAQ,EAAEE,SAAS,EAAE4zR,iBAAiBC,MAA0E4C,GAAG1D,GAA3DtgT,EAAE,CAAC,EAAE8gT,GAAG,CAAC1uS,aAAa,EAAE0vS,YAAY,EAAEC,cAAc,KAAckC,GAAGjkT,EAAE,CAAC,EAAEkhT,GAAG,CAACgD,OAAO,SAASlyU,GAAG,MAAM,WAAWA,EAAEA,EAAEkyU,OAAO,gBAAgBlyU,GAAGA,EAAEmyU,YAAY,CAAC,EACnf3rG,OAAO,SAASxmO,GAAG,MAAM,WAAWA,EAAEA,EAAEwmO,OAAO,gBAAgBxmO,GAAGA,EAAEoyU,YAAY,eAAepyU,GAAGA,EAAEq7N,WAAW,CAAC,EAAEg3G,OAAO,EAAEC,UAAU,IAAIC,GAAGjE,GAAG2D,IAAIO,GAAG,CAAC,EAAE,GAAG,GAAG,IAAIC,GAAGhT,GAAI,qBAAqBp+U,OAAOqxV,GAAG,KAAKjT,GAAI,iBAAiB97T,WAAW+uU,GAAG/uU,SAASqxS,cAAc,IAAI29B,GAAGlT,GAAI,cAAcp+U,SAASqxV,GAAGE,GAAGnT,KAAMgT,IAAIC,IAAI,EAAEA,IAAI,IAAIA,IAAIG,GAAGtoS,OAAOC,aAAa,IAAIsoS,IAAG,EAC1W,SAASC,GAAG/yU,EAAE+F,GAAG,OAAO/F,GAAG,IAAK,QAAQ,OAAO,IAAIwyU,GAAGn7U,QAAQ0O,EAAEg1C,SAAS,IAAK,UAAU,OAAO,MAAMh1C,EAAEg1C,QAAQ,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,OAAM,EAAG,QAAQ,OAAM,EAAG,CAAC,SAASi4R,GAAGhzU,GAAc,MAAM,kBAAjBA,EAAEA,EAAEkiI,SAAkC,SAASliI,EAAEA,EAAEpZ,KAAK,IAAI,CAAC,IAAIqsV,IAAG,EAE9Q,IAAIC,GAAG,CAACC,OAAM,EAAG5zU,MAAK,EAAG24H,UAAS,EAAG,kBAAiB,EAAGzoI,OAAM,EAAG+mB,OAAM,EAAGsiD,QAAO,EAAG9/D,UAAS,EAAG0nB,OAAM,EAAG3e,QAAO,EAAGqxU,KAAI,EAAGt6V,MAAK,EAAGomF,MAAK,EAAG33E,KAAI,EAAG8rV,MAAK,GAAI,SAASC,GAAGtzU,GAAG,IAAI+F,EAAE/F,GAAGA,EAAEyrD,UAAUzrD,EAAEyrD,SAASrsE,cAAc,MAAM,UAAU2mB,IAAImtU,GAAGlzU,EAAE3kB,MAAM,aAAa0qB,CAAO,CAAC,SAASwtU,GAAGvzU,EAAE+F,EAAEiR,EAAEC,GAAG8vT,GAAG9vT,GAAsB,GAAnBlR,EAAEytU,GAAGztU,EAAE,aAAgB/sB,SAASg+B,EAAE,IAAIsnH,GAAG,WAAW,SAAS,KAAKtnH,EAAEC,GAAGjX,EAAExf,KAAK,CAACsC,MAAMk0B,EAAEy8T,UAAU1tU,IAAI,CAAC,IAAI2tU,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAG5zU,GAAG6zU,GAAG7zU,EAAE,EAAE,CAAC,SAAS8zU,GAAG9zU,GAAe,GAAG6iU,EAATkR,GAAG/zU,IAAY,OAAOA,CAAC,CACpe,SAASg0U,GAAGh0U,EAAE+F,GAAG,GAAG,WAAW/F,EAAE,OAAO+F,CAAC,CAAC,IAAIkuU,IAAG,EAAG,GAAGxU,EAAG,CAAC,IAAIyU,GAAG,GAAGzU,EAAG,CAAC,IAAI0U,GAAG,YAAYxwU,SAAS,IAAIwwU,GAAG,CAAC,IAAIC,GAAGzwU,SAASgO,cAAc,OAAOyiU,GAAG/8S,aAAa,UAAU,WAAW88S,GAAG,oBAAoBC,GAAGC,OAAO,CAACH,GAAGC,EAAE,MAAMD,IAAG,EAAGD,GAAGC,MAAMvwU,SAASqxS,cAAc,EAAErxS,SAASqxS,aAAa,CAAC,SAASs/B,KAAKZ,KAAKA,GAAGa,YAAY,mBAAmBC,IAAIb,GAAGD,GAAG,KAAK,CAAC,SAASc,GAAGx0U,GAAG,GAAG,UAAUA,EAAEogC,cAAc0zS,GAAGH,IAAI,CAAC,IAAI5tU,EAAE,GAAGwtU,GAAGxtU,EAAE4tU,GAAG3zU,EAAEsmU,GAAGtmU,IAAIonU,GAAGwM,GAAG7tU,EAAE,CAAC,CAC/b,SAAS0uU,GAAGz0U,EAAE+F,EAAEiR,GAAG,YAAYhX,GAAGs0U,KAAUX,GAAG38T,GAAR08T,GAAG3tU,GAAU26Q,YAAY,mBAAmB8zD,KAAK,aAAax0U,GAAGs0U,IAAI,CAAC,SAASI,GAAG10U,GAAG,GAAG,oBAAoBA,GAAG,UAAUA,GAAG,YAAYA,EAAE,OAAO8zU,GAAGH,GAAG,CAAC,SAASgB,GAAG30U,EAAE+F,GAAG,GAAG,UAAU/F,EAAE,OAAO8zU,GAAG/tU,EAAE,CAAC,SAAS6uU,GAAG50U,EAAE+F,GAAG,GAAG,UAAU/F,GAAG,WAAWA,EAAE,OAAO8zU,GAAG/tU,EAAE,CAAiE,IAAI8uU,GAAG,oBAAoBj1V,OAAOk1S,GAAGl1S,OAAOk1S,GAA5G,SAAY90R,EAAE+F,GAAG,OAAO/F,IAAI+F,IAAI,IAAI/F,GAAG,EAAEA,IAAI,EAAE+F,IAAI/F,IAAIA,GAAG+F,IAAIA,CAAC,EACtW,SAAS+uU,GAAG90U,EAAE+F,GAAG,GAAG8uU,GAAG70U,EAAE+F,GAAG,OAAM,EAAG,GAAG,kBAAkB/F,GAAG,OAAOA,GAAG,kBAAkB+F,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAIiR,EAAEp3B,OAAOC,KAAKmgB,GAAGiX,EAAEr3B,OAAOC,KAAKkmB,GAAG,GAAGiR,EAAEh+B,SAASi+B,EAAEj+B,OAAO,OAAM,EAAG,IAAIi+B,EAAE,EAAEA,EAAED,EAAEh+B,OAAOi+B,IAAI,CAAC,IAAIz6B,EAAEw6B,EAAEC,GAAG,IAAIyoT,EAAGj/T,KAAKsF,EAAEvpB,KAAKq4V,GAAG70U,EAAExjB,GAAGupB,EAAEvpB,IAAI,OAAM,CAAE,CAAC,OAAM,CAAE,CAAC,SAASu4V,GAAG/0U,GAAG,KAAKA,GAAGA,EAAEs8G,YAAYt8G,EAAEA,EAAEs8G,WAAW,OAAOt8G,CAAC,CACtU,SAASg1U,GAAGh1U,EAAE+F,GAAG,IAAwBkR,EAApBD,EAAE+9T,GAAG/0U,GAAO,IAAJA,EAAE,EAAYgX,GAAG,CAAC,GAAG,IAAIA,EAAEqjB,SAAS,CAA0B,GAAzBpjB,EAAEjX,EAAEgX,EAAE6wC,YAAY7uE,OAAUgnB,GAAG+F,GAAGkR,GAAGlR,EAAE,MAAM,CAACyxC,KAAKxgC,EAAEgtB,OAAOj+B,EAAE/F,GAAGA,EAAEiX,CAAC,CAACjX,EAAE,CAAC,KAAKgX,GAAG,CAAC,GAAGA,EAAE+1P,YAAY,CAAC/1P,EAAEA,EAAE+1P,YAAY,MAAM/sQ,CAAC,CAACgX,EAAEA,EAAE3F,UAAU,CAAC2F,OAAE,CAAM,CAACA,EAAE+9T,GAAG/9T,EAAE,CAAC,CAAC,SAASi+T,GAAGj1U,EAAE+F,GAAG,SAAO/F,IAAG+F,KAAE/F,IAAI+F,KAAK/F,GAAG,IAAIA,EAAEq6B,YAAYt0B,GAAG,IAAIA,EAAEs0B,SAAS46S,GAAGj1U,EAAE+F,EAAEsL,YAAY,aAAarR,EAAEA,EAAEi4B,SAASlyB,KAAG/F,EAAEsgS,4BAAwD,GAA7BtgS,EAAEsgS,wBAAwBv6R,KAAY,CAC9Z,SAASmvU,KAAK,IAAI,IAAIl1U,EAAE3e,OAAO0kB,EAAE+8T,IAAK/8T,aAAa/F,EAAEm1U,mBAAmB,CAAC,IAAI,IAAIn+T,EAAE,kBAAkBjR,EAAEqvU,cAAc94U,SAASC,IAAI,CAAC,MAAM0a,GAAGD,GAAE,CAAE,CAAC,IAAGA,EAAyB,MAAMjR,EAAE+8T,GAA/B9iU,EAAE+F,EAAEqvU,eAAgCzxU,SAAS,CAAC,OAAOoC,CAAC,CAAC,SAASsvU,GAAGr1U,GAAG,IAAI+F,EAAE/F,GAAGA,EAAEyrD,UAAUzrD,EAAEyrD,SAASrsE,cAAc,OAAO2mB,IAAI,UAAUA,IAAI,SAAS/F,EAAE3kB,MAAM,WAAW2kB,EAAE3kB,MAAM,QAAQ2kB,EAAE3kB,MAAM,QAAQ2kB,EAAE3kB,MAAM,aAAa2kB,EAAE3kB,OAAO,aAAa0qB,GAAG,SAAS/F,EAAEs1U,gBAAgB,CACxa,SAASC,GAAGv1U,GAAG,IAAI+F,EAAEmvU,KAAKl+T,EAAEhX,EAAEw1U,YAAYv+T,EAAEjX,EAAEy1U,eAAe,GAAG1vU,IAAIiR,GAAGA,GAAGA,EAAE+/N,eAAek+F,GAAGj+T,EAAE+/N,cAAcvyM,gBAAgBxtB,GAAG,CAAC,GAAG,OAAOC,GAAGo+T,GAAGr+T,GAAG,GAAGjR,EAAEkR,EAAEzI,WAAc,KAARxO,EAAEiX,EAAEhO,OAAiBjJ,EAAE+F,GAAG,mBAAmBiR,EAAEA,EAAEwvD,eAAezgE,EAAEiR,EAAEyvD,aAAa7jE,KAAK6e,IAAIzhB,EAAEgX,EAAE14B,MAAMtF,aAAa,IAAGgnB,GAAG+F,EAAEiR,EAAE+/N,eAAepzO,WAAWoC,EAAEnC,aAAaviB,QAASymM,aAAa,CAAC9nL,EAAEA,EAAE8nL,eAAe,IAAItrM,EAAEw6B,EAAE6wC,YAAY7uE,OAAO8F,EAAE8jB,KAAK6e,IAAIxK,EAAEzI,MAAMhyB,GAAGy6B,OAAE,IAASA,EAAEhO,IAAInqB,EAAE8jB,KAAK6e,IAAIxK,EAAEhO,IAAIzsB,IAAIwjB,EAAE0P,QAAQ5wB,EAAEm4B,IAAIz6B,EAAEy6B,EAAEA,EAAEn4B,EAAEA,EAAEtC,GAAGA,EAAEw4V,GAAGh+T,EAAEl4B,GAAG,IAAIghV,EAAEkV,GAAGh+T,EACvfC,GAAGz6B,GAAGsjV,IAAI,IAAI9/T,EAAE01U,YAAY11U,EAAE21U,aAAan5V,EAAEg7D,MAAMx3C,EAAE41U,eAAep5V,EAAEwnD,QAAQhkC,EAAE61U,YAAY/V,EAAEtoR,MAAMx3C,EAAE81U,cAAchW,EAAE97R,WAAUj+B,EAAEA,EAAEgwU,eAAgBC,SAASx5V,EAAEg7D,KAAKh7D,EAAEwnD,QAAQhkC,EAAE4oL,kBAAkB9pM,EAAEm4B,GAAGjX,EAAEi2U,SAASlwU,GAAG/F,EAAE0P,OAAOowT,EAAEtoR,KAAKsoR,EAAE97R,UAAUj+B,EAAEmwU,OAAOpW,EAAEtoR,KAAKsoR,EAAE97R,QAAQhkC,EAAEi2U,SAASlwU,IAAI,CAAM,IAALA,EAAE,GAAO/F,EAAEgX,EAAEhX,EAAEA,EAAEqR,YAAY,IAAIrR,EAAEq6B,UAAUt0B,EAAEvlB,KAAK,CAACuD,QAAQic,EAAEykC,KAAKzkC,EAAEokC,WAAWO,IAAI3kC,EAAEukC,YAAmD,IAAvC,oBAAoBvtB,EAAExE,OAAOwE,EAAExE,QAAYwE,EAAE,EAAEA,EAAEjR,EAAE/sB,OAAOg+B,KAAIhX,EAAE+F,EAAEiR,IAAKjzB,QAAQqgD,WAAWpkC,EAAEykC,KAAKzkC,EAAEjc,QAAQwgD,UAAUvkC,EAAE2kC,GAAG,CAAC,CACzf,IAAIwxS,GAAG1W,GAAI,iBAAiB97T,UAAU,IAAIA,SAASqxS,aAAaohC,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAC3F,SAASC,GAAGx2U,EAAE+F,EAAEiR,GAAG,IAAIC,EAAED,EAAE31B,SAAS21B,EAAEA,EAAErT,SAAS,IAAIqT,EAAEqjB,SAASrjB,EAAEA,EAAE+/N,cAAcw/F,IAAI,MAAMH,IAAIA,KAAKtT,EAAG7rT,KAAU,mBAALA,EAAEm/T,KAAyBf,GAAGp+T,GAAGA,EAAE,CAACzI,MAAMyI,EAAEuvD,eAAev9D,IAAIgO,EAAEwvD,cAAuFxvD,EAAE,CAAC0+T,YAA3E1+T,GAAGA,EAAE8/N,eAAe9/N,EAAE8/N,cAAcnzO,aAAaviB,QAAQymM,gBAA+B6tJ,WAAWC,aAAa3+T,EAAE2+T,aAAaC,UAAU5+T,EAAE4+T,UAAUC,YAAY7+T,EAAE6+T,aAAcQ,IAAIxB,GAAGwB,GAAGr/T,KAAKq/T,GAAGr/T,EAAsB,GAApBA,EAAEu8T,GAAG6C,GAAG,aAAgBr9V,SAAS+sB,EAAE,IAAIu4H,GAAG,WAAW,SAAS,KAAKv4H,EAAEiR,GAAGhX,EAAExf,KAAK,CAACsC,MAAMijB,EAAE0tU,UAAUx8T,IAAIlR,EAAEm5B,OAAOk3S,KAAK,CACtf,SAASK,GAAGz2U,EAAE+F,GAAG,IAAIiR,EAAE,CAAC,EAAiF,OAA/EA,EAAEhX,EAAE5gB,eAAe2mB,EAAE3mB,cAAc43B,EAAE,SAAShX,GAAG,SAAS+F,EAAEiR,EAAE,MAAMhX,GAAG,MAAM+F,EAASiR,CAAC,CAAC,IAAI0/T,GAAG,CAACC,aAAaF,GAAG,YAAY,gBAAgBG,mBAAmBH,GAAG,YAAY,sBAAsBI,eAAeJ,GAAG,YAAY,kBAAkBK,cAAcL,GAAG,aAAa,kBAAkBM,GAAG,CAAC,EAAEC,GAAG,CAAC,EACpF,SAASC,GAAGj3U,GAAG,GAAG+2U,GAAG/2U,GAAG,OAAO+2U,GAAG/2U,GAAG,IAAI02U,GAAG12U,GAAG,OAAOA,EAAE,IAAYgX,EAARjR,EAAE2wU,GAAG12U,GAAK,IAAIgX,KAAKjR,EAAE,GAAGA,EAAEyK,eAAewG,IAAIA,KAAKggU,GAAG,OAAOD,GAAG/2U,GAAG+F,EAAEiR,GAAG,OAAOhX,CAAC,CAA/Xy/T,IAAKuX,GAAGrzU,SAASgO,cAAc,OAAO2mB,MAAM,mBAAmBj3C,gBAAgBq1V,GAAGC,aAAa30S,iBAAiB00S,GAAGE,mBAAmB50S,iBAAiB00S,GAAGG,eAAe70S,WAAW,oBAAoB3gD,eAAeq1V,GAAGI,cAAcpJ,YAAwJ,IAAIwJ,GAAGD,GAAG,gBAAgBE,GAAGF,GAAG,sBAAsBG,GAAGH,GAAG,kBAAkBI,GAAGJ,GAAG,iBAAiBK,GAAG,IAAI/2U,IAAIg3U,GAAG,smBAAsmBviV,MAAM,KAC/lC,SAASwiV,GAAGx3U,EAAE+F,GAAGuxU,GAAG12U,IAAIZ,EAAE+F,GAAGw5T,EAAGx5T,EAAE,CAAC/F,GAAG,CAAC,IAAI,IAAIy3U,GAAG,EAAEA,GAAGF,GAAGv+V,OAAOy+V,KAAK,CAAC,IAAIC,GAAGH,GAAGE,IAA2DD,GAApDE,GAAGt4V,cAAuD,MAAtCs4V,GAAG,GAAGv5U,cAAcu5U,GAAGt5U,MAAM,IAAiB,CAACo5U,GAAGN,GAAG,kBAAkBM,GAAGL,GAAG,wBAAwBK,GAAGJ,GAAG,oBAAoBI,GAAG,WAAW,iBAAiBA,GAAG,UAAU,WAAWA,GAAG,WAAW,UAAUA,GAAGH,GAAG,mBAAmB7X,EAAG,eAAe,CAAC,WAAW,cAAcA,EAAG,eAAe,CAAC,WAAW,cAAcA,EAAG,iBAAiB,CAAC,aAAa,gBAC7cA,EAAG,iBAAiB,CAAC,aAAa,gBAAgBD,EAAG,WAAW,oEAAoEvqU,MAAM,MAAMuqU,EAAG,WAAW,uFAAuFvqU,MAAM,MAAMuqU,EAAG,gBAAgB,CAAC,iBAAiB,WAAW,YAAY,UAAUA,EAAG,mBAAmB,2DAA2DvqU,MAAM,MAAMuqU,EAAG,qBAAqB,6DAA6DvqU,MAAM,MAC/fuqU,EAAG,sBAAsB,8DAA8DvqU,MAAM,MAAM,IAAI2iV,GAAG,6NAA6N3iV,MAAM,KAAK4iV,GAAG,IAAItyU,IAAI,0CAA0CtQ,MAAM,KAAKtT,OAAOi2V,KACzZ,SAASE,GAAG73U,EAAE+F,EAAEiR,GAAG,IAAIC,EAAEjX,EAAE3kB,MAAM,gBAAgB2kB,EAAE0wC,cAAc15B,EAlDjE,SAAYhX,EAAE+F,EAAEiR,EAAEC,EAAEz6B,EAAEsC,EAAEghV,EAAEpnT,EAAEyxB,GAA4B,GAAzB29R,GAAG7nU,MAAMc,KAAK3B,WAAcqoU,GAAG,CAAC,IAAGA,GAAgC,MAAM1lV,MAAM69B,EAAE,MAA1C,IAAI7N,EAAE21T,GAAGD,IAAG,EAAGC,GAAG,KAA8BC,KAAKA,IAAG,EAAGC,GAAG71T,EAAE,CAAC,CAkDpE+lU,CAAG7gU,EAAElR,OAAE,EAAO/F,GAAGA,EAAE0wC,cAAc,IAAI,CACxG,SAASmjS,GAAG7zU,EAAE+F,GAAGA,EAAE,KAAO,EAAFA,GAAK,IAAI,IAAIiR,EAAE,EAAEA,EAAEhX,EAAEhnB,OAAOg+B,IAAI,CAAC,IAAIC,EAAEjX,EAAEgX,GAAGx6B,EAAEy6B,EAAEn0B,MAAMm0B,EAAEA,EAAEw8T,UAAUzzU,EAAE,CAAC,IAAIlhB,OAAE,EAAO,GAAGinB,EAAE,IAAI,IAAI+5T,EAAE7oT,EAAEj+B,OAAO,EAAE,GAAG8mV,EAAEA,IAAI,CAAC,IAAIpnT,EAAEzB,EAAE6oT,GAAG31R,EAAEzxB,EAAEl3B,SAASuwB,EAAE2G,EAAEg4B,cAA2B,GAAbh4B,EAAEA,EAAExU,SAAYimC,IAAIrrD,GAAGtC,EAAEo3T,uBAAuB,MAAM5zS,EAAE63U,GAAGr7V,EAAEk8B,EAAE3G,GAAGjzB,EAAEqrD,CAAC,MAAM,IAAI21R,EAAE,EAAEA,EAAE7oT,EAAEj+B,OAAO8mV,IAAI,CAAoD,GAA5C31R,GAAPzxB,EAAEzB,EAAE6oT,IAAOt+U,SAASuwB,EAAE2G,EAAEg4B,cAAch4B,EAAEA,EAAExU,SAAYimC,IAAIrrD,GAAGtC,EAAEo3T,uBAAuB,MAAM5zS,EAAE63U,GAAGr7V,EAAEk8B,EAAE3G,GAAGjzB,EAAEqrD,CAAC,CAAC,CAAC,CAAC,GAAGw9R,GAAG,MAAM3nU,EAAE4nU,GAAGD,IAAG,EAAGC,GAAG,KAAK5nU,CAAE,CAC5a,SAAS+3U,GAAE/3U,EAAE+F,GAAG,IAAIiR,EAAEjR,EAAEiyU,SAAI,IAAShhU,IAAIA,EAAEjR,EAAEiyU,IAAI,IAAI1yU,KAAK,IAAI2R,EAAEjX,EAAE,WAAWgX,EAAErW,IAAIsW,KAAKghU,GAAGlyU,EAAE/F,EAAE,GAAE,GAAIgX,EAAEkf,IAAIjf,GAAG,CAAC,SAASihU,GAAGl4U,EAAE+F,EAAEiR,GAAG,IAAIC,EAAE,EAAElR,IAAIkR,GAAG,GAAGghU,GAAGjhU,EAAEhX,EAAEiX,EAAElR,EAAE,CAAC,IAAIoyU,GAAG,kBAAkBv1U,KAAKC,SAAS1mB,SAAS,IAAIiiB,MAAM,GAAG,SAASg6U,GAAGp4U,GAAG,IAAIA,EAAEm4U,IAAI,CAACn4U,EAAEm4U,KAAI,EAAG9Y,EAAGv/U,SAAQ,SAASimB,GAAG,oBAAoBA,IAAI6xU,GAAGj3U,IAAIoF,IAAImyU,GAAGnyU,GAAE,EAAG/F,GAAGk4U,GAAGnyU,GAAE,EAAG/F,GAAG,IAAG,IAAI+F,EAAE,IAAI/F,EAAEq6B,SAASr6B,EAAEA,EAAE+2O,cAAc,OAAOhxO,GAAGA,EAAEoyU,MAAMpyU,EAAEoyU,KAAI,EAAGD,GAAG,mBAAkB,EAAGnyU,GAAG,CAAC,CACjb,SAASkyU,GAAGj4U,EAAE+F,EAAEiR,EAAEC,GAAG,OAAO82T,GAAGhoU,IAAI,KAAK,EAAE,IAAIvpB,EAAEixV,GAAG,MAAM,KAAK,EAAEjxV,EAAEoxV,GAAG,MAAM,QAAQpxV,EAAEmxV,GAAG32T,EAAEx6B,EAAEujB,KAAK,KAAKgG,EAAEiR,EAAEhX,GAAGxjB,OAAE,GAAQ8qV,IAAI,eAAevhU,GAAG,cAAcA,GAAG,UAAUA,IAAIvpB,GAAE,GAAIy6B,OAAE,IAASz6B,EAAEwjB,EAAE4E,iBAAiBmB,EAAEiR,EAAE,CAACqhU,SAAQ,EAAG5hT,QAAQj6C,IAAIwjB,EAAE4E,iBAAiBmB,EAAEiR,GAAE,QAAI,IAASx6B,EAAEwjB,EAAE4E,iBAAiBmB,EAAEiR,EAAE,CAACyf,QAAQj6C,IAAIwjB,EAAE4E,iBAAiBmB,EAAEiR,GAAE,EAAG,CAClV,SAAS62T,GAAG7tU,EAAE+F,EAAEiR,EAAEC,EAAEz6B,GAAG,IAAIsC,EAAEm4B,EAAE,GAAG,KAAO,EAAFlR,IAAM,KAAO,EAAFA,IAAM,OAAOkR,EAAEjX,EAAE,OAAO,CAAC,GAAG,OAAOiX,EAAE,OAAO,IAAI6oT,EAAE7oT,EAAEq0C,IAAI,GAAG,IAAIw0Q,GAAG,IAAIA,EAAE,CAAC,IAAIpnT,EAAEzB,EAAE4vT,UAAUzwF,cAAc,GAAG19N,IAAIl8B,GAAG,IAAIk8B,EAAE2hB,UAAU3hB,EAAErH,aAAa70B,EAAE,MAAM,GAAG,IAAIsjV,EAAE,IAAIA,EAAE7oT,EAAEgxT,OAAO,OAAOnI,GAAG,CAAC,IAAI31R,EAAE21R,EAAEx0Q,IAAI,IAAG,IAAInhB,GAAG,IAAIA,MAAKA,EAAE21R,EAAE+G,UAAUzwF,iBAAkB55P,GAAG,IAAI2tD,EAAE9P,UAAU8P,EAAE94B,aAAa70B,GAAE,OAAOsjV,EAAEA,EAAEmI,MAAM,CAAC,KAAK,OAAOvvT,GAAG,CAAS,GAAG,QAAXonT,EAAE+M,GAAGn0T,IAAe,OAAe,GAAG,KAAXyxB,EAAE21R,EAAEx0Q,MAAc,IAAInhB,EAAE,CAAClzB,EAAEn4B,EAAEghV,EAAE,SAAS9/T,CAAC,CAAC0Y,EAAEA,EAAErH,UAAU,CAAC,CAAC4F,EAAEA,EAAEgxT,MAAM,CAACb,IAAG,WAAW,IAAInwT,EAAEn4B,EAAEtC,EAAE8pV,GAAGtvT,GAAG8oT,EAAE,GACpf9/T,EAAE,CAAC,IAAI0Y,EAAE4+T,GAAG71V,IAAIue,GAAG,QAAG,IAAS0Y,EAAE,CAAC,IAAIyxB,EAAEm0F,GAAGpgJ,EAAE8hB,EAAE,OAAOA,GAAG,IAAK,WAAW,GAAG,IAAImuU,GAAGn3T,GAAG,MAAMhX,EAAE,IAAK,UAAU,IAAK,QAAQmqC,EAAEqnS,GAAG,MAAM,IAAK,UAAUtzV,EAAE,QAAQisD,EAAEwlS,GAAG,MAAM,IAAK,WAAWzxV,EAAE,OAAOisD,EAAEwlS,GAAG,MAAM,IAAK,aAAa,IAAK,YAAYxlS,EAAEwlS,GAAG,MAAM,IAAK,QAAQ,GAAG,IAAI34T,EAAEq0F,OAAO,MAAMrrG,EAAE,IAAK,WAAW,IAAK,WAAW,IAAK,YAAY,IAAK,YAAY,IAAK,UAAU,IAAK,WAAW,IAAK,YAAY,IAAK,cAAcmqC,EAAEqlS,GAAG,MAAM,IAAK,OAAO,IAAK,UAAU,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,OAAOrlS,EAC1iBslS,GAAG,MAAM,IAAK,cAAc,IAAK,WAAW,IAAK,YAAY,IAAK,aAAatlS,EAAE4nS,GAAG,MAAM,KAAKmF,GAAG,KAAKC,GAAG,KAAKC,GAAGjtS,EAAEylS,GAAG,MAAM,KAAKyH,GAAGltS,EAAE6nS,GAAG,MAAM,IAAK,SAAS7nS,EAAE8kS,GAAG,MAAM,IAAK,QAAQ9kS,EAAEooS,GAAG,MAAM,IAAK,OAAO,IAAK,MAAM,IAAK,QAAQpoS,EAAE+lS,GAAG,MAAM,IAAK,oBAAoB,IAAK,qBAAqB,IAAK,gBAAgB,IAAK,cAAc,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,YAAY/lS,EAAEsnS,GAAG,IAAItrK,EAAE,KAAO,EAAFpgK,GAAKuyU,GAAGnyK,GAAG,WAAWnmK,EAAE2tB,EAAEw4I,EAAE,OAAOztJ,EAAEA,EAAE,UAAU,KAAKA,EAAEytJ,EAAE,GAAG,IAAI,IAAQ+/E,EAAJ23C,EAAE5mR,EAAI,OAC/e4mR,GAAG,CAAK,IAAI06C,GAARryF,EAAE23C,GAAUgpC,UAAsF,GAA5E,IAAI3gF,EAAE56L,KAAK,OAAOitR,IAAIryF,EAAEqyF,EAAE,OAAO5qT,IAAc,OAAV4qT,EAAElR,GAAGxpC,EAAElwQ,KAAYw4I,EAAE3lL,KAAKg4V,GAAG36C,EAAE06C,EAAEryF,MAASoyF,EAAE,MAAMz6C,EAAEA,EAAEoqC,MAAM,CAAC,EAAE9hK,EAAEntL,SAAS0/B,EAAE,IAAIyxB,EAAEzxB,EAAEx6B,EAAE,KAAK84B,EAAEx6B,GAAGsjV,EAAEt/U,KAAK,CAACsC,MAAM41B,EAAE+6T,UAAUttK,IAAI,CAAC,CAAC,GAAG,KAAO,EAAFpgK,GAAK,CAA4E,GAAnCokC,EAAE,aAAanqC,GAAG,eAAeA,KAAtE0Y,EAAE,cAAc1Y,GAAG,gBAAgBA,IAA2CgX,IAAIqvT,MAAKnoV,EAAE84B,EAAE2xF,eAAe3xF,EAAEq4T,eAAexC,GAAG3uV,KAAIA,EAAEu6V,OAAgBtuS,GAAGzxB,KAAGA,EAAEl8B,EAAE6E,SAAS7E,EAAEA,GAAGk8B,EAAEl8B,EAAEu6P,eAAer+N,EAAE9U,aAAa8U,EAAEipS,aAAatgU,OAAU8oD,GAAqCA,EAAElzB,EAAiB,QAAf/4B,GAAnCA,EAAE84B,EAAE2xF,eAAe3xF,EAAE2hB,WAAkBk0S,GAAG3uV,GAAG,QAC9dA,KAARo6V,EAAEvQ,GAAG7pV,KAAU,IAAIA,EAAEotE,KAAK,IAAIptE,EAAEotE,OAAKptE,EAAE,QAAUisD,EAAE,KAAKjsD,EAAE+4B,GAAKkzB,IAAIjsD,GAAE,CAAgU,GAA/TioL,EAAEqpK,GAAG+I,EAAE,eAAe5qT,EAAE,eAAekwQ,EAAE,QAAW,eAAe79R,GAAG,gBAAgBA,IAAEmmK,EAAEsrK,GAAG8G,EAAE,iBAAiB5qT,EAAE,iBAAiBkwQ,EAAE,WAAUy6C,EAAE,MAAMnuS,EAAEzxB,EAAEq7T,GAAG5pS,GAAG+7M,EAAE,MAAMhoQ,EAAEw6B,EAAEq7T,GAAG71V,IAAGw6B,EAAE,IAAIytJ,EAAEoyK,EAAE16C,EAAE,QAAQ1zP,EAAEnzB,EAAEx6B,IAAK0iD,OAAOo5S,EAAE5/T,EAAEiwF,cAAcu9I,EAAEqyF,EAAE,KAAK1L,GAAGrwV,KAAKy6B,KAAIkvJ,EAAE,IAAIA,EAAEx4I,EAAEkwQ,EAAE,QAAQ3/S,EAAE84B,EAAEx6B,IAAK0iD,OAAOgnN,EAAE//E,EAAEx9D,cAAc2vO,EAAEC,EAAEpyK,GAAGmyK,EAAEC,EAAKpuS,GAAGjsD,EAAE6nB,EAAE,CAAa,IAAR4nB,EAAEzvC,EAAE2/S,EAAE,EAAM33C,EAAhB//E,EAAEh8H,EAAkB+7M,EAAEA,EAAEwyF,GAAGxyF,GAAG23C,IAAQ,IAAJ33C,EAAE,EAAMqyF,EAAE5qT,EAAE4qT,EAAEA,EAAEG,GAAGH,GAAGryF,IAAI,KAAK,EAAE23C,EAAE33C,GAAG//E,EAAEuyK,GAAGvyK,GAAG03H,IAAI,KAAK,EAAE33C,EAAE23C,GAAGlwQ,EACpf+qT,GAAG/qT,GAAGu4N,IAAI,KAAK23C,KAAK,CAAC,GAAG13H,IAAIx4I,GAAG,OAAOA,GAAGw4I,IAAIx4I,EAAEq6S,UAAU,MAAMjiU,EAAEogK,EAAEuyK,GAAGvyK,GAAGx4I,EAAE+qT,GAAG/qT,EAAE,CAACw4I,EAAE,IAAI,MAAMA,EAAE,KAAK,OAAOh8H,GAAGwuS,GAAG7Y,EAAEpnT,EAAEyxB,EAAEg8H,GAAE,GAAI,OAAOjoL,GAAG,OAAOo6V,GAAGK,GAAG7Y,EAAEwY,EAAEp6V,EAAEioL,GAAE,EAAG,CAA8D,GAAG,YAA1Ch8H,GAAjBzxB,EAAEzB,EAAE88T,GAAG98T,GAAG51B,QAAWoqE,UAAU/yC,EAAE+yC,SAASrsE,gBAA+B,UAAU+qD,GAAG,SAASzxB,EAAEr9B,KAAK,IAAIu9V,EAAG5E,QAAQ,GAAGV,GAAG56T,GAAG,GAAGu7T,GAAG2E,EAAGhE,OAAO,CAACgE,EAAGlE,GAAG,IAAImE,EAAGpE,EAAE,MAAMtqS,EAAEzxB,EAAE+yC,WAAW,UAAUthB,EAAE/qD,gBAAgB,aAAas5B,EAAEr9B,MAAM,UAAUq9B,EAAEr9B,QAAQu9V,EAAGjE,IACrV,OAD4ViE,IAAKA,EAAGA,EAAG54U,EAAEiX,IAAKs8T,GAAGzT,EAAE8Y,EAAG5hU,EAAEx6B,IAAWq8V,GAAIA,EAAG74U,EAAE0Y,EAAEzB,GAAG,aAAajX,IAAI64U,EAAGngU,EAAEuqT,gBAClf4V,EAAGzV,YAAY,WAAW1qT,EAAEr9B,MAAM2/U,GAAGtiT,EAAE,SAASA,EAAEp6B,QAAOu6V,EAAG5hU,EAAE88T,GAAG98T,GAAG51B,OAAc2e,GAAG,IAAK,WAAaszU,GAAGuF,IAAK,SAASA,EAAGvD,mBAAgBc,GAAGyC,EAAGxC,GAAGp/T,EAAEq/T,GAAG,MAAK,MAAM,IAAK,WAAWA,GAAGD,GAAGD,GAAG,KAAK,MAAM,IAAK,YAAYG,IAAG,EAAG,MAAM,IAAK,cAAc,IAAK,UAAU,IAAK,UAAUA,IAAG,EAAGC,GAAG1W,EAAE9oT,EAAEx6B,GAAG,MAAM,IAAK,kBAAkB,GAAG25V,GAAG,MAAM,IAAK,UAAU,IAAK,QAAQK,GAAG1W,EAAE9oT,EAAEx6B,GAAG,IAAIs8V,EAAG,GAAGrG,GAAG1sU,EAAE,CAAC,OAAO/F,GAAG,IAAK,mBAAmB,IAAI+4U,EAAG,qBAAqB,MAAMhzU,EAAE,IAAK,iBAAiBgzU,EAAG,mBACpe,MAAMhzU,EAAE,IAAK,oBAAoBgzU,EAAG,sBAAsB,MAAMhzU,EAAEgzU,OAAG,CAAM,MAAM9F,GAAGF,GAAG/yU,EAAEgX,KAAK+hU,EAAG,oBAAoB,YAAY/4U,GAAG,MAAMgX,EAAE+jC,UAAUg+R,EAAG,sBAAsBA,IAAKnG,IAAI,OAAO57T,EAAEuT,SAAS0oT,IAAI,uBAAuB8F,EAAG,qBAAqBA,GAAI9F,KAAK6F,EAAG5K,OAAYnvQ,GAAG,UAARivQ,GAAGxxV,GAAkBwxV,GAAG1vV,MAAM0vV,GAAGnmR,YAAYorR,IAAG,IAAiB,GAAZ4F,EAAGrF,GAAGv8T,EAAE8hU,IAAS//V,SAAS+/V,EAAG,IAAI5I,GAAG4I,EAAG/4U,EAAE,KAAKgX,EAAEx6B,GAAGsjV,EAAEt/U,KAAK,CAACsC,MAAMi2V,EAAGtF,UAAUoF,IAAKC,EAAGC,EAAGnyV,KAAKkyV,EAAa,QAATA,EAAG9F,GAAGh8T,MAAe+hU,EAAGnyV,KAAKkyV,MAAUA,EAAGnG,GA5BhM,SAAY3yU,EAAE+F,GAAG,OAAO/F,GAAG,IAAK,iBAAiB,OAAOgzU,GAAGjtU,GAAG,IAAK,WAAW,OAAG,KAAKA,EAAE01C,MAAa,MAAKq3R,IAAG,EAAUD,IAAG,IAAK,YAAY,OAAO7yU,EAAE+F,EAAEnf,QAASisV,IAAIC,GAAG,KAAK9yU,EAAE,QAAQ,OAAO,KAAK,CA4BEg5U,CAAGh5U,EAAEgX,GA3Bzd,SAAYhX,EAAE+F,GAAG,GAAGktU,GAAG,MAAM,mBAAmBjzU,IAAIyyU,IAAIM,GAAG/yU,EAAE+F,IAAI/F,EAAEkuU,KAAKD,GAAGlvQ,GAAGivQ,GAAG,KAAKiF,IAAG,EAAGjzU,GAAG,KAAK,OAAOA,GAAG,IAAK,QAAgQ,QAAQ,OAAO,KAA3P,IAAK,WAAW,KAAK+F,EAAEs1C,SAASt1C,EAAEo1C,QAAQp1C,EAAEsqI,UAAUtqI,EAAEs1C,SAASt1C,EAAEo1C,OAAO,CAAC,GAAGp1C,EAAE4E,MAAM,EAAE5E,EAAE4E,KAAK3xB,OAAO,OAAO+sB,EAAE4E,KAAK,GAAG5E,EAAE01C,MAAM,OAAOlR,OAAOC,aAAazkC,EAAE01C,MAAM,CAAC,OAAO,KAAK,IAAK,iBAAiB,OAAOm3R,IAAI,OAAO7sU,EAAEwkB,OAAO,KAAKxkB,EAAEnf,KAAyB,CA2BqFqyV,CAAGj5U,EAAEgX,MACje,GADoeC,EAAEu8T,GAAGv8T,EAAE,kBACvej+B,SAASwD,EAAE,IAAI2zV,GAAG,gBAAgB,cAAc,KAAKn5T,EAAEx6B,GAAGsjV,EAAEt/U,KAAK,CAACsC,MAAMtG,EAAEi3V,UAAUx8T,IAAIz6B,EAAEoK,KAAKkyV,GAAG,CAACjF,GAAG/T,EAAE/5T,EAAE,GAAE,CAAC,SAASyyU,GAAGx4U,EAAE+F,EAAEiR,GAAG,MAAM,CAACx1B,SAASwe,EAAEkE,SAAS6B,EAAE2qC,cAAc15B,EAAE,CAAC,SAASw8T,GAAGxzU,EAAE+F,GAAG,IAAI,IAAIiR,EAAEjR,EAAE,UAAUkR,EAAE,GAAG,OAAOjX,GAAG,CAAC,IAAIxjB,EAAEwjB,EAAElhB,EAAEtC,EAAEqqV,UAAU,IAAIrqV,EAAE8uE,KAAK,OAAOxsE,IAAItC,EAAEsC,EAAY,OAAVA,EAAEuoV,GAAGrnU,EAAEgX,KAAYC,EAAE5X,QAAQm5U,GAAGx4U,EAAElhB,EAAEtC,IAAc,OAAVsC,EAAEuoV,GAAGrnU,EAAE+F,KAAYkR,EAAEz2B,KAAKg4V,GAAGx4U,EAAElhB,EAAEtC,KAAKwjB,EAAEA,EAAEioU,MAAM,CAAC,OAAOhxT,CAAC,CAAC,SAASyhU,GAAG14U,GAAG,GAAG,OAAOA,EAAE,OAAO,KAAK,GAAGA,EAAEA,EAAEioU,aAAajoU,GAAG,IAAIA,EAAEsrD,KAAK,OAAOtrD,GAAI,IAAI,CACnd,SAAS24U,GAAG34U,EAAE+F,EAAEiR,EAAEC,EAAEz6B,GAAG,IAAI,IAAIsC,EAAEinB,EAAEwoU,WAAWzO,EAAE,GAAG,OAAO9oT,GAAGA,IAAIC,GAAG,CAAC,IAAIyB,EAAE1B,EAAEmzB,EAAEzxB,EAAEsvT,UAAUj2T,EAAE2G,EAAEmuT,UAAU,GAAG,OAAO18R,GAAGA,IAAIlzB,EAAE,MAAM,IAAIyB,EAAE4yC,KAAK,OAAOv5C,IAAI2G,EAAE3G,EAAEv1B,EAAa,OAAV2tD,EAAEk9R,GAAGrwT,EAAEl4B,KAAYghV,EAAEzgU,QAAQm5U,GAAGxhU,EAAEmzB,EAAEzxB,IAAKl8B,GAAc,OAAV2tD,EAAEk9R,GAAGrwT,EAAEl4B,KAAYghV,EAAEt/U,KAAKg4V,GAAGxhU,EAAEmzB,EAAEzxB,KAAM1B,EAAEA,EAAEixT,MAAM,CAAC,IAAInI,EAAE9mV,QAAQgnB,EAAExf,KAAK,CAACsC,MAAMijB,EAAE0tU,UAAU3T,GAAG,CAAC,IAAIoZ,GAAG,SAASC,GAAG,iBAAiB,SAASC,GAAGp5U,GAAG,OAAO,kBAAkBA,EAAEA,EAAE,GAAGA,GAAGxI,QAAQ0hV,GAAG,MAAM1hV,QAAQ2hV,GAAG,GAAG,CAAC,SAASE,GAAGr5U,EAAE+F,EAAEiR,GAAW,GAARjR,EAAEqzU,GAAGrzU,GAAMqzU,GAAGp5U,KAAK+F,GAAGiR,EAAE,MAAMj1B,MAAM69B,EAAE,KAAM,CAAC,SAAS05T,KAAK,CAC9e,IAAIC,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAGz5U,EAAE+F,GAAG,MAAM,aAAa/F,GAAG,aAAaA,GAAG,kBAAkB+F,EAAEptB,UAAU,kBAAkBotB,EAAEptB,UAAU,kBAAkBotB,EAAE69T,yBAAyB,OAAO79T,EAAE69T,yBAAyB,MAAM79T,EAAE69T,wBAAwB8V,MAAM,CAC5P,IAAIC,GAAG,oBAAoB1oU,WAAWA,gBAAW,EAAO2oU,GAAG,oBAAoB5oU,aAAaA,kBAAa,EAAO6oU,GAAG,oBAAoB39U,QAAQA,aAAQ,EAAO49U,GAAG,oBAAoBC,eAAeA,eAAe,qBAAqBF,GAAG,SAAS75U,GAAG,OAAO65U,GAAGp7U,QAAQ,MAAMvW,KAAK8X,GAAG5X,MAAM4xV,GAAG,EAAEL,GAAG,SAASK,GAAGh6U,GAAGiR,YAAW,WAAW,MAAMjR,CAAE,GAAE,CACpV,SAASi6U,GAAGj6U,EAAE+F,GAAG,IAAIiR,EAAEjR,EAAEkR,EAAE,EAAE,EAAE,CAAC,IAAIz6B,EAAEw6B,EAAE+1P,YAA6B,GAAjB/sQ,EAAEu5B,YAAYviB,GAAMx6B,GAAG,IAAIA,EAAE69C,SAAS,GAAY,QAATrjB,EAAEx6B,EAAEoK,MAAc,CAAC,GAAG,IAAIqwB,EAA0B,OAAvBjX,EAAEu5B,YAAY/8C,QAAG6wV,GAAGtnU,GAAUkR,GAAG,KAAK,MAAMD,GAAG,OAAOA,GAAG,OAAOA,GAAGC,IAAID,EAAEx6B,CAAC,OAAOw6B,GAAGq2T,GAAGtnU,EAAE,CAAC,SAASm0U,GAAGl6U,GAAG,KAAK,MAAMA,EAAEA,EAAEA,EAAE+sQ,YAAY,CAAC,IAAIhnQ,EAAE/F,EAAEq6B,SAAS,GAAG,IAAIt0B,GAAG,IAAIA,EAAE,MAAM,GAAG,IAAIA,EAAE,CAAU,GAAG,OAAZA,EAAE/F,EAAEpZ,OAAiB,OAAOmf,GAAG,OAAOA,EAAE,MAAM,GAAG,OAAOA,EAAE,OAAO,IAAI,CAAC,CAAC,OAAO/F,CAAC,CACjY,SAASm6U,GAAGn6U,GAAGA,EAAEA,EAAEmsG,gBAAgB,IAAI,IAAIpmG,EAAE,EAAE/F,GAAG,CAAC,GAAG,IAAIA,EAAEq6B,SAAS,CAAC,IAAIrjB,EAAEhX,EAAEpZ,KAAK,GAAG,MAAMowB,GAAG,OAAOA,GAAG,OAAOA,EAAE,CAAC,GAAG,IAAIjR,EAAE,OAAO/F,EAAE+F,GAAG,KAAK,OAAOiR,GAAGjR,GAAG,CAAC/F,EAAEA,EAAEmsG,eAAe,CAAC,OAAO,IAAI,CAAC,IAAIiuO,GAAGx3U,KAAKC,SAAS1mB,SAAS,IAAIiiB,MAAM,GAAGi8U,GAAG,gBAAgBD,GAAGE,GAAG,gBAAgBF,GAAG3B,GAAG,oBAAoB2B,GAAGpC,GAAG,iBAAiBoC,GAAGG,GAAG,oBAAoBH,GAAGI,GAAG,kBAAkBJ,GAClX,SAASvN,GAAG7sU,GAAG,IAAI+F,EAAE/F,EAAEq6U,IAAI,GAAGt0U,EAAE,OAAOA,EAAE,IAAI,IAAIiR,EAAEhX,EAAEqR,WAAW2F,GAAG,CAAC,GAAGjR,EAAEiR,EAAEyhU,KAAKzhU,EAAEqjU,IAAI,CAAe,GAAdrjU,EAAEjR,EAAEiiU,UAAa,OAAOjiU,EAAEoL,OAAO,OAAO6F,GAAG,OAAOA,EAAE7F,MAAM,IAAInR,EAAEm6U,GAAGn6U,GAAG,OAAOA,GAAG,CAAC,GAAGgX,EAAEhX,EAAEq6U,IAAI,OAAOrjU,EAAEhX,EAAEm6U,GAAGn6U,EAAE,CAAC,OAAO+F,CAAC,CAAKiR,GAAJhX,EAAEgX,GAAM3F,UAAU,CAAC,OAAO,IAAI,CAAC,SAASu1T,GAAG5mU,GAAkB,QAAfA,EAAEA,EAAEq6U,KAAKr6U,EAAEy4U,MAAc,IAAIz4U,EAAEsrD,KAAK,IAAItrD,EAAEsrD,KAAK,KAAKtrD,EAAEsrD,KAAK,IAAItrD,EAAEsrD,IAAI,KAAKtrD,CAAC,CAAC,SAAS+zU,GAAG/zU,GAAG,GAAG,IAAIA,EAAEsrD,KAAK,IAAItrD,EAAEsrD,IAAI,OAAOtrD,EAAE6mU,UAAU,MAAM9kV,MAAM69B,EAAE,IAAK,CAAC,SAASknT,GAAG9mU,GAAG,OAAOA,EAAEs6U,KAAK,IAAI,CAAC,IAAIG,GAAG,GAAGC,IAAI,EAAE,SAASC,GAAG36U,GAAG,MAAM,CAAC9b,QAAQ8b,EAAE,CACve,SAASiuB,GAAEjuB,GAAG,EAAE06U,KAAK16U,EAAE9b,QAAQu2V,GAAGC,IAAID,GAAGC,IAAI,KAAKA,KAAK,CAAC,SAASE,GAAE56U,EAAE+F,GAAG20U,KAAKD,GAAGC,IAAI16U,EAAE9b,QAAQ8b,EAAE9b,QAAQ6hB,CAAC,CAAC,IAAI80U,GAAG,CAAC,EAAEliU,GAAEgiU,GAAGE,IAAIC,GAAGH,IAAG,GAAII,GAAGF,GAAG,SAASG,GAAGh7U,EAAE+F,GAAG,IAAIiR,EAAEhX,EAAE3kB,KAAKkiS,aAAa,IAAIvmQ,EAAE,OAAO6jU,GAAG,IAAI5jU,EAAEjX,EAAE6mU,UAAU,GAAG5vT,GAAGA,EAAEgkU,8CAA8Cl1U,EAAE,OAAOkR,EAAEikU,0CAA0C,IAASp8V,EAALtC,EAAE,CAAC,EAAI,IAAIsC,KAAKk4B,EAAEx6B,EAAEsC,GAAGinB,EAAEjnB,GAAoH,OAAjHm4B,KAAIjX,EAAEA,EAAE6mU,WAAYoU,4CAA4Cl1U,EAAE/F,EAAEk7U,0CAA0C1+V,GAAUA,CAAC,CAC9d,SAAS2+V,GAAGn7U,GAAyB,OAAO,QAA7BA,EAAEA,EAAEw9Q,yBAAmC,IAASx9Q,CAAC,CAAC,SAASo7U,KAAKntT,GAAE6sT,IAAI7sT,GAAEtV,GAAE,CAAC,SAAS0iU,GAAGr7U,EAAE+F,EAAEiR,GAAG,GAAG2B,GAAEz0B,UAAU22V,GAAG,MAAM94V,MAAM69B,EAAE,MAAMg7T,GAAEjiU,GAAE5S,GAAG60U,GAAEE,GAAG9jU,EAAE,CAAC,SAASskU,GAAGt7U,EAAE+F,EAAEiR,GAAG,IAAIC,EAAEjX,EAAE6mU,UAAgC,GAAtB9gU,EAAEA,EAAEy3Q,kBAAqB,oBAAoBvmQ,EAAE0mQ,gBAAgB,OAAO3mQ,EAAwB,IAAI,IAAIx6B,KAA9By6B,EAAEA,EAAE0mQ,kBAAiC,KAAKnhS,KAAKupB,GAAG,MAAMhkB,MAAM69B,EAAE,IAAI0iT,EAAGtiU,IAAI,UAAUxjB,IAAI,OAAOwxC,EAAE,CAAC,EAAEhX,EAAEC,EAAE,CACxX,SAASskU,GAAGv7U,GAA2G,OAAxGA,GAAGA,EAAEA,EAAE6mU,YAAY7mU,EAAEw7U,2CAA2CX,GAAGE,GAAGpiU,GAAEz0B,QAAQ02V,GAAEjiU,GAAE3Y,GAAG46U,GAAEE,GAAGA,GAAG52V,UAAe,CAAE,CAAC,SAASu3V,GAAGz7U,EAAE+F,EAAEiR,GAAG,IAAIC,EAAEjX,EAAE6mU,UAAU,IAAI5vT,EAAE,MAAMl1B,MAAM69B,EAAE,MAAM5I,GAAGhX,EAAEs7U,GAAGt7U,EAAE+F,EAAEg1U,IAAI9jU,EAAEukU,0CAA0Cx7U,EAAEiuB,GAAE6sT,IAAI7sT,GAAEtV,IAAGiiU,GAAEjiU,GAAE3Y,IAAIiuB,GAAE6sT,IAAIF,GAAEE,GAAG9jU,EAAE,CAAC,IAAI0kU,GAAG,KAAKC,IAAG,EAAGC,IAAG,EAAG,SAASC,GAAG77U,GAAG,OAAO07U,GAAGA,GAAG,CAAC17U,GAAG07U,GAAGl7V,KAAKwf,EAAE,CAChW,SAAS87U,KAAK,IAAIF,IAAI,OAAOF,GAAG,CAACE,IAAG,EAAG,IAAI57U,EAAE,EAAE+F,EAAE8nB,GAAE,IAAI,IAAI7W,EAAE0kU,GAAG,IAAI7tT,GAAE,EAAE7tB,EAAEgX,EAAEh+B,OAAOgnB,IAAI,CAAC,IAAIiX,EAAED,EAAEhX,GAAG,GAAGiX,EAAEA,GAAE,SAAU,OAAOA,EAAE,CAACykU,GAAG,KAAKC,IAAG,CAAE,CAAC,MAAMn/V,GAAG,MAAM,OAAOk/V,KAAKA,GAAGA,GAAGt9U,MAAM4B,EAAE,IAAI0oU,GAAGY,GAAGwS,IAAIt/V,CAAE,CAAC,QAAQqxC,GAAE9nB,EAAE61U,IAAG,CAAE,CAAC,CAAC,OAAO,IAAI,CAAC,IAAIG,GAAG,GAAGC,GAAG,EAAEC,GAAG,KAAKC,GAAG,EAAEC,GAAG,GAAGC,GAAG,EAAEC,GAAG,KAAKC,GAAG,EAAEC,GAAG,GAAG,SAASC,GAAGx8U,EAAE+F,GAAGg2U,GAAGC,MAAME,GAAGH,GAAGC,MAAMC,GAAGA,GAAGj8U,EAAEk8U,GAAGn2U,CAAC,CACjV,SAAS02U,GAAGz8U,EAAE+F,EAAEiR,GAAGmlU,GAAGC,MAAME,GAAGH,GAAGC,MAAMG,GAAGJ,GAAGC,MAAMC,GAAGA,GAAGr8U,EAAE,IAAIiX,EAAEqlU,GAAGt8U,EAAEu8U,GAAG,IAAI//V,EAAE,GAAG0tV,GAAGjzT,GAAG,EAAEA,KAAK,GAAGz6B,GAAGw6B,GAAG,EAAE,IAAIl4B,EAAE,GAAGorV,GAAGnkU,GAAGvpB,EAAE,GAAG,GAAGsC,EAAE,CAAC,IAAIghV,EAAEtjV,EAAEA,EAAE,EAAEsC,GAAGm4B,GAAG,GAAG6oT,GAAG,GAAG3jV,SAAS,IAAI86B,IAAI6oT,EAAEtjV,GAAGsjV,EAAEwc,GAAG,GAAG,GAAGpS,GAAGnkU,GAAGvpB,EAAEw6B,GAAGx6B,EAAEy6B,EAAEslU,GAAGz9V,EAAEkhB,CAAC,MAAMs8U,GAAG,GAAGx9V,EAAEk4B,GAAGx6B,EAAEy6B,EAAEslU,GAAGv8U,CAAC,CAAC,SAAS08U,GAAG18U,GAAG,OAAOA,EAAEioU,SAASuU,GAAGx8U,EAAE,GAAGy8U,GAAGz8U,EAAE,EAAE,GAAG,CAAC,SAAS28U,GAAG38U,GAAG,KAAKA,IAAIi8U,IAAIA,GAAGF,KAAKC,IAAID,GAAGC,IAAI,KAAKE,GAAGH,KAAKC,IAAID,GAAGC,IAAI,KAAK,KAAKh8U,IAAIq8U,IAAIA,GAAGF,KAAKC,IAAID,GAAGC,IAAI,KAAKG,GAAGJ,KAAKC,IAAID,GAAGC,IAAI,KAAKE,GAAGH,KAAKC,IAAID,GAAGC,IAAI,IAAI,CAAC,IAAIQ,GAAG,KAAKC,GAAG,KAAKC,IAAE,EAAGC,GAAG,KACje,SAASC,GAAGh9U,EAAE+F,GAAG,IAAIiR,EAAEimU,GAAG,EAAE,KAAK,KAAK,GAAGjmU,EAAE8hT,YAAY,UAAU9hT,EAAE6vT,UAAU9gU,EAAEiR,EAAEixT,OAAOjoU,EAAgB,QAAd+F,EAAE/F,EAAEk9U,YAAoBl9U,EAAEk9U,UAAU,CAAClmU,GAAGhX,EAAEkoU,OAAO,IAAIniU,EAAEvlB,KAAKw2B,EAAE,CACxJ,SAASmmU,GAAGn9U,EAAE+F,GAAG,OAAO/F,EAAEsrD,KAAK,KAAK,EAAE,IAAIt0C,EAAEhX,EAAE3kB,KAAyE,OAAO,QAA3E0qB,EAAE,IAAIA,EAAEs0B,UAAUrjB,EAAE53B,gBAAgB2mB,EAAE0lD,SAASrsE,cAAc,KAAK2mB,KAAmB/F,EAAE6mU,UAAU9gU,EAAE62U,GAAG58U,EAAE68U,GAAG3C,GAAGn0U,EAAEu2G,aAAY,GAAO,KAAK,EAAE,OAAoD,QAA7Cv2G,EAAE,KAAK/F,EAAEo9U,cAAc,IAAIr3U,EAAEs0B,SAAS,KAAKt0B,KAAY/F,EAAE6mU,UAAU9gU,EAAE62U,GAAG58U,EAAE68U,GAAG,MAAK,GAAO,KAAK,GAAG,OAA+B,QAAxB92U,EAAE,IAAIA,EAAEs0B,SAAS,KAAKt0B,KAAYiR,EAAE,OAAOqlU,GAAG,CAAC12V,GAAG22V,GAAGxkS,SAASykS,IAAI,KAAKv8U,EAAEooU,cAAc,CAACC,WAAWtiU,EAAEs3U,YAAYrmU,EAAEsmU,UAAU,aAAYtmU,EAAEimU,GAAG,GAAG,KAAK,KAAK,IAAKpW,UAAU9gU,EAAEiR,EAAEixT,OAAOjoU,EAAEA,EAAEmR,MAAM6F,EAAE4lU,GAAG58U,EAAE68U,GAClf,MAAK,GAAO,QAAQ,OAAM,EAAG,CAAC,SAASU,GAAGv9U,GAAG,OAAO,KAAY,EAAPA,EAAE7V,OAAS,KAAa,IAAR6V,EAAEkoU,MAAU,CAAC,SAASsV,GAAGx9U,GAAG,GAAG88U,GAAE,CAAC,IAAI/2U,EAAE82U,GAAG,GAAG92U,EAAE,CAAC,IAAIiR,EAAEjR,EAAE,IAAIo3U,GAAGn9U,EAAE+F,GAAG,CAAC,GAAGw3U,GAAGv9U,GAAG,MAAMje,MAAM69B,EAAE,MAAM7Z,EAAEm0U,GAAGljU,EAAE+1P,aAAa,IAAI91P,EAAE2lU,GAAG72U,GAAGo3U,GAAGn9U,EAAE+F,GAAGi3U,GAAG/lU,EAAED,IAAIhX,EAAEkoU,OAAe,KAATloU,EAAEkoU,MAAY,EAAE4U,IAAE,EAAGF,GAAG58U,EAAE,CAAC,KAAK,CAAC,GAAGu9U,GAAGv9U,GAAG,MAAMje,MAAM69B,EAAE,MAAM5f,EAAEkoU,OAAe,KAATloU,EAAEkoU,MAAY,EAAE4U,IAAE,EAAGF,GAAG58U,CAAC,CAAC,CAAC,CAAC,SAASy9U,GAAGz9U,GAAG,IAAIA,EAAEA,EAAEioU,OAAO,OAAOjoU,GAAG,IAAIA,EAAEsrD,KAAK,IAAItrD,EAAEsrD,KAAK,KAAKtrD,EAAEsrD,KAAKtrD,EAAEA,EAAEioU,OAAO2U,GAAG58U,CAAC,CACha,SAAS09U,GAAG19U,GAAG,GAAGA,IAAI48U,GAAG,OAAM,EAAG,IAAIE,GAAE,OAAOW,GAAGz9U,GAAG88U,IAAE,GAAG,EAAG,IAAI/2U,EAAkG,IAA/FA,EAAE,IAAI/F,EAAEsrD,QAAQvlD,EAAE,IAAI/F,EAAEsrD,OAAgBvlD,EAAE,UAAXA,EAAE/F,EAAE3kB,OAAmB,SAAS0qB,IAAI0zU,GAAGz5U,EAAE3kB,KAAK2kB,EAAE29U,gBAAmB53U,IAAIA,EAAE82U,IAAI,CAAC,GAAGU,GAAGv9U,GAAG,MAAM49U,KAAK77V,MAAM69B,EAAE,MAAM,KAAK7Z,GAAGi3U,GAAGh9U,EAAE+F,GAAGA,EAAEm0U,GAAGn0U,EAAEgnQ,YAAY,CAAO,GAAN0wE,GAAGz9U,GAAM,KAAKA,EAAEsrD,IAAI,CAAgD,KAA7BtrD,EAAE,QAApBA,EAAEA,EAAEooU,eAAyBpoU,EAAEqoU,WAAW,MAAW,MAAMtmV,MAAM69B,EAAE,MAAM5f,EAAE,CAAiB,IAAhBA,EAAEA,EAAE+sQ,YAAgBhnQ,EAAE,EAAE/F,GAAG,CAAC,GAAG,IAAIA,EAAEq6B,SAAS,CAAC,IAAIrjB,EAAEhX,EAAEpZ,KAAK,GAAG,OAAOowB,EAAE,CAAC,GAAG,IAAIjR,EAAE,CAAC82U,GAAG3C,GAAGl6U,EAAE+sQ,aAAa,MAAM/sQ,CAAC,CAAC+F,GAAG,KAAK,MAAMiR,GAAG,OAAOA,GAAG,OAAOA,GAAGjR,GAAG,CAAC/F,EAAEA,EAAE+sQ,WAAW,CAAC8vE,GACjgB,IAAI,CAAC,MAAMA,GAAGD,GAAG1C,GAAGl6U,EAAE6mU,UAAU95D,aAAa,KAAK,OAAM,CAAE,CAAC,SAAS6wE,KAAK,IAAI,IAAI59U,EAAE68U,GAAG78U,GAAGA,EAAEk6U,GAAGl6U,EAAE+sQ,YAAY,CAAC,SAAS8wE,KAAKhB,GAAGD,GAAG,KAAKE,IAAE,CAAE,CAAC,SAASgB,GAAG99U,GAAG,OAAO+8U,GAAGA,GAAG,CAAC/8U,GAAG+8U,GAAGv8V,KAAKwf,EAAE,CAAC,IAAI+9U,GAAGnd,EAAG2M,wBAAwB,SAASyQ,GAAGh+U,EAAE+F,GAAG,GAAG/F,GAAGA,EAAE9d,aAAa,CAA4B,IAAI,IAAI80B,KAAnCjR,EAAEioB,EAAE,CAAC,EAAEjoB,GAAG/F,EAAEA,EAAE9d,kBAA4B,IAAS6jB,EAAEiR,KAAKjR,EAAEiR,GAAGhX,EAAEgX,IAAI,OAAOjR,CAAC,CAAC,OAAOA,CAAC,CAAC,IAAIk4U,GAAGtD,GAAG,MAAMuD,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAK,SAASC,KAAKD,GAAGD,GAAGD,GAAG,IAAI,CAAC,SAASI,GAAGt+U,GAAG,IAAI+F,EAAEk4U,GAAG/5V,QAAQ+pC,GAAEgwT,IAAIj+U,EAAEu+U,cAAcx4U,CAAC,CACjd,SAASy4U,GAAGx+U,EAAE+F,EAAEiR,GAAG,KAAK,OAAOhX,GAAG,CAAC,IAAIiX,EAAEjX,EAAEgoU,UAA+H,IAApHhoU,EAAEy+U,WAAW14U,KAAKA,GAAG/F,EAAEy+U,YAAY14U,EAAE,OAAOkR,IAAIA,EAAEwnU,YAAY14U,IAAI,OAAOkR,IAAIA,EAAEwnU,WAAW14U,KAAKA,IAAIkR,EAAEwnU,YAAY14U,GAAM/F,IAAIgX,EAAE,MAAMhX,EAAEA,EAAEioU,MAAM,CAAC,CAAC,SAASyW,GAAG1+U,EAAE+F,GAAGm4U,GAAGl+U,EAAEo+U,GAAGD,GAAG,KAAsB,QAAjBn+U,EAAEA,EAAE2+U,eAAuB,OAAO3+U,EAAE4+U,eAAe,KAAK5+U,EAAE6+U,MAAM94U,KAAK+4U,IAAG,GAAI9+U,EAAE4+U,aAAa,KAAK,CACtU,SAASG,GAAG/+U,GAAG,IAAI+F,EAAE/F,EAAEu+U,cAAc,GAAGH,KAAKp+U,EAAE,GAAGA,EAAE,CAACne,QAAQme,EAAEg/U,cAAcj5U,EAAE84D,KAAK,MAAM,OAAOs/Q,GAAG,CAAC,GAAG,OAAOD,GAAG,MAAMn8V,MAAM69B,EAAE,MAAMu+T,GAAGn+U,EAAEk+U,GAAGS,aAAa,CAACE,MAAM,EAAED,aAAa5+U,EAAE,MAAMm+U,GAAGA,GAAGt/Q,KAAK7+D,EAAE,OAAO+F,CAAC,CAAC,IAAIk5U,GAAG,KAAK,SAASC,GAAGl/U,GAAG,OAAOi/U,GAAGA,GAAG,CAACj/U,GAAGi/U,GAAGz+V,KAAKwf,EAAE,CAAC,SAASm/U,GAAGn/U,EAAE+F,EAAEiR,EAAEC,GAAG,IAAIz6B,EAAEupB,EAAEq5U,YAA+E,OAAnE,OAAO5iW,GAAGw6B,EAAE6nD,KAAK7nD,EAAEkoU,GAAGn5U,KAAKiR,EAAE6nD,KAAKriF,EAAEqiF,KAAKriF,EAAEqiF,KAAK7nD,GAAGjR,EAAEq5U,YAAYpoU,EAASqoU,GAAGr/U,EAAEiX,EAAE,CAChY,SAASooU,GAAGr/U,EAAE+F,GAAG/F,EAAE6+U,OAAO94U,EAAE,IAAIiR,EAAEhX,EAAEgoU,UAAqC,IAA3B,OAAOhxT,IAAIA,EAAE6nU,OAAO94U,GAAGiR,EAAEhX,EAAMA,EAAEA,EAAEioU,OAAO,OAAOjoU,GAAGA,EAAEy+U,YAAY14U,EAAgB,QAAdiR,EAAEhX,EAAEgoU,aAAqBhxT,EAAEynU,YAAY14U,GAAGiR,EAAEhX,EAAEA,EAAEA,EAAEioU,OAAO,OAAO,IAAIjxT,EAAEs0C,IAAIt0C,EAAE6vT,UAAU,IAAI,CAAC,IAAIyY,IAAG,EAAG,SAASC,GAAGv/U,GAAGA,EAAEw/U,YAAY,CAACC,UAAUz/U,EAAEooU,cAAcsX,gBAAgB,KAAKC,eAAe,KAAKC,OAAO,CAACC,QAAQ,KAAKT,YAAY,KAAKP,MAAM,GAAGiB,QAAQ,KAAK,CACpX,SAASC,GAAG//U,EAAE+F,GAAG/F,EAAEA,EAAEw/U,YAAYz5U,EAAEy5U,cAAcx/U,IAAI+F,EAAEy5U,YAAY,CAACC,UAAUz/U,EAAEy/U,UAAUC,gBAAgB1/U,EAAE0/U,gBAAgBC,eAAe3/U,EAAE2/U,eAAeC,OAAO5/U,EAAE4/U,OAAOE,QAAQ9/U,EAAE8/U,SAAS,CAAC,SAASr/C,GAAGzgS,EAAE+F,GAAG,MAAM,CAACi6U,UAAUhgV,EAAEigV,KAAKl6U,EAAEulD,IAAI,EAAE8sN,QAAQ,KAAK3lP,SAAS,KAAKosC,KAAK,KAAK,CACtR,SAASqhR,GAAGlgV,EAAE+F,EAAEiR,GAAG,IAAIC,EAAEjX,EAAEw/U,YAAY,GAAG,OAAOvoU,EAAE,OAAO,KAAgB,GAAXA,EAAEA,EAAE2oU,OAAU,KAAO,EAAFO,IAAK,CAAC,IAAI3jW,EAAEy6B,EAAE4oU,QAA+D,OAAvD,OAAOrjW,EAAEupB,EAAE84D,KAAK94D,GAAGA,EAAE84D,KAAKriF,EAAEqiF,KAAKriF,EAAEqiF,KAAK94D,GAAGkR,EAAE4oU,QAAQ95U,EAASs5U,GAAGr/U,EAAEgX,EAAE,CAAoF,OAAnE,QAAhBx6B,EAAEy6B,EAAEmoU,cAAsBr5U,EAAE84D,KAAK94D,EAAEm5U,GAAGjoU,KAAKlR,EAAE84D,KAAKriF,EAAEqiF,KAAKriF,EAAEqiF,KAAK94D,GAAGkR,EAAEmoU,YAAYr5U,EAASs5U,GAAGr/U,EAAEgX,EAAE,CAAC,SAASopU,GAAGpgV,EAAE+F,EAAEiR,GAAmB,GAAG,QAAnBjR,EAAEA,EAAEy5U,eAA0Bz5U,EAAEA,EAAE65U,OAAO,KAAO,QAAF5oU,IAAY,CAAC,IAAIC,EAAElR,EAAE84U,MAAwB7nU,GAAlBC,GAAGjX,EAAE2qU,aAAkB5kU,EAAE84U,MAAM7nU,EAAEs0T,GAAGtrU,EAAEgX,EAAE,CAAC,CACrZ,SAASqpU,GAAGrgV,EAAE+F,GAAG,IAAIiR,EAAEhX,EAAEw/U,YAAYvoU,EAAEjX,EAAEgoU,UAAU,GAAG,OAAO/wT,GAAoBD,KAAhBC,EAAEA,EAAEuoU,aAAmB,CAAC,IAAIhjW,EAAE,KAAKsC,EAAE,KAAyB,GAAG,QAAvBk4B,EAAEA,EAAE0oU,iBAA4B,CAAC,EAAE,CAAC,IAAI5f,EAAE,CAACkgB,UAAUhpU,EAAEgpU,UAAUC,KAAKjpU,EAAEipU,KAAK30R,IAAIt0C,EAAEs0C,IAAI8sN,QAAQphQ,EAAEohQ,QAAQ3lP,SAASzb,EAAEyb,SAASosC,KAAK,MAAM,OAAO//E,EAAEtC,EAAEsC,EAAEghV,EAAEhhV,EAAEA,EAAE+/E,KAAKihQ,EAAE9oT,EAAEA,EAAE6nD,IAAI,OAAO,OAAO7nD,GAAG,OAAOl4B,EAAEtC,EAAEsC,EAAEinB,EAAEjnB,EAAEA,EAAE+/E,KAAK94D,CAAC,MAAMvpB,EAAEsC,EAAEinB,EAAiH,OAA/GiR,EAAE,CAACyoU,UAAUxoU,EAAEwoU,UAAUC,gBAAgBljW,EAAEmjW,eAAe7gW,EAAE8gW,OAAO3oU,EAAE2oU,OAAOE,QAAQ7oU,EAAE6oU,cAAS9/U,EAAEw/U,YAAYxoU,EAAQ,CAAoB,QAAnBhX,EAAEgX,EAAE2oU,gBAAwB3oU,EAAE0oU,gBAAgB35U,EAAE/F,EAAE6+D,KACnf94D,EAAEiR,EAAE2oU,eAAe55U,CAAC,CACpB,SAASu6U,GAAGtgV,EAAE+F,EAAEiR,EAAEC,GAAG,IAAIz6B,EAAEwjB,EAAEw/U,YAAYF,IAAG,EAAG,IAAIxgW,EAAEtC,EAAEkjW,gBAAgB5f,EAAEtjV,EAAEmjW,eAAejnU,EAAEl8B,EAAEojW,OAAOC,QAAQ,GAAG,OAAOnnU,EAAE,CAACl8B,EAAEojW,OAAOC,QAAQ,KAAK,IAAI11S,EAAEzxB,EAAE3G,EAAEo4B,EAAE00B,KAAK10B,EAAE00B,KAAK,KAAK,OAAOihQ,EAAEhhV,EAAEizB,EAAE+tT,EAAEjhQ,KAAK9sD,EAAE+tT,EAAE31R,EAAE,IAAI1xB,EAAEzY,EAAEgoU,UAAU,OAAOvvT,KAAoBC,GAAhBD,EAAEA,EAAE+mU,aAAgBG,kBAAmB7f,IAAI,OAAOpnT,EAAED,EAAEinU,gBAAgB3tU,EAAE2G,EAAEmmD,KAAK9sD,EAAE0G,EAAEknU,eAAex1S,GAAG,CAAC,GAAG,OAAOrrD,EAAE,CAAC,IAAIkzG,EAAEx1G,EAAEijW,UAA6B,IAAnB3f,EAAE,EAAErnT,EAAE1G,EAAEo4B,EAAE,KAAKzxB,EAAE55B,IAAI,CAAC,IAAI8I,EAAE8wB,EAAEunU,KAAKhrV,EAAEyjB,EAAEsnU,UAAU,IAAI/oU,EAAErvB,KAAKA,EAAE,CAAC,OAAO6wB,IAAIA,EAAEA,EAAEomD,KAAK,CAACmhR,UAAU/qV,EAAEgrV,KAAK,EAAE30R,IAAI5yC,EAAE4yC,IAAI8sN,QAAQ1/P,EAAE0/P,QAAQ3lP,SAAS/Z,EAAE+Z,SACvfosC,KAAK,OAAO7+D,EAAE,CAAC,IAAI9hB,EAAE8hB,EAAEmmK,EAAEztJ,EAAU,OAAR9wB,EAAEme,EAAE9Q,EAAE+hB,EAASmvJ,EAAE76G,KAAK,KAAK,EAAc,GAAG,oBAAfptE,EAAEioL,EAAEiyG,SAAiC,CAACpmL,EAAE9zG,EAAEuiB,KAAKxL,EAAE+8F,EAAEpqG,GAAG,MAAMoY,CAAC,CAACgyF,EAAE9zG,EAAE,MAAM8hB,EAAE,KAAK,EAAE9hB,EAAEgqV,OAAe,MAAThqV,EAAEgqV,MAAa,IAAI,KAAK,EAAsD,GAAG,QAA3CtgV,EAAE,oBAAd1J,EAAEioL,EAAEiyG,SAAgCl6R,EAAEuiB,KAAKxL,EAAE+8F,EAAEpqG,GAAG1J,SAAe,IAAS0J,EAAE,MAAMoY,EAAEgyF,EAAEhkE,EAAE,CAAC,EAAEgkE,EAAEpqG,GAAG,MAAMoY,EAAE,KAAK,EAAEs/U,IAAG,EAAG,CAAC,OAAO5mU,EAAE+Z,UAAU,IAAI/Z,EAAEunU,OAAOjgV,EAAEkoU,OAAO,GAAe,QAAZtgV,EAAEpL,EAAEsjW,SAAiBtjW,EAAEsjW,QAAQ,CAACpnU,GAAG9wB,EAAEpH,KAAKk4B,GAAG,MAAMzjB,EAAE,CAAC+qV,UAAU/qV,EAAEgrV,KAAKr4V,EAAE0jE,IAAI5yC,EAAE4yC,IAAI8sN,QAAQ1/P,EAAE0/P,QAAQ3lP,SAAS/Z,EAAE+Z,SAASosC,KAAK,MAAM,OAAOpmD,GAAG1G,EAAE0G,EAAExjB,EAAEk1C,EAAE6nD,GAAGv5E,EAAEA,EAAEomD,KAAK5pE,EAAE6qU,GAAGl4U,EAC3e,GAAG,QAAZ8wB,EAAEA,EAAEmmD,MAAiB,IAAsB,QAAnBnmD,EAAEl8B,EAAEojW,OAAOC,SAAiB,MAAennU,GAAJ9wB,EAAE8wB,GAAMmmD,KAAKj3E,EAAEi3E,KAAK,KAAKriF,EAAEmjW,eAAe/3V,EAAEpL,EAAEojW,OAAOC,QAAQ,IAAI,EAAsG,GAA5F,OAAOpnU,IAAI0xB,EAAE6nD,GAAGx1G,EAAEijW,UAAUt1S,EAAE3tD,EAAEkjW,gBAAgB3tU,EAAEv1B,EAAEmjW,eAAelnU,EAA4B,QAA1B1S,EAAEvpB,EAAEojW,OAAOR,aAAwB,CAAC5iW,EAAEupB,EAAE,GAAG+5T,GAAGtjV,EAAEyjW,KAAKzjW,EAAEA,EAAEqiF,WAAWriF,IAAIupB,EAAE,MAAM,OAAOjnB,IAAItC,EAAEojW,OAAOf,MAAM,GAAG0B,IAAIzgB,EAAE9/T,EAAE6+U,MAAM/e,EAAE9/T,EAAEooU,cAAcp2O,CAAC,CAAC,CAC9V,SAASwuP,GAAGxgV,EAAE+F,EAAEiR,GAA8B,GAA3BhX,EAAE+F,EAAE+5U,QAAQ/5U,EAAE+5U,QAAQ,KAAQ,OAAO9/U,EAAE,IAAI+F,EAAE,EAAEA,EAAE/F,EAAEhnB,OAAO+sB,IAAI,CAAC,IAAIkR,EAAEjX,EAAE+F,GAAGvpB,EAAEy6B,EAAEwb,SAAS,GAAG,OAAOj2C,EAAE,CAAqB,GAApBy6B,EAAEwb,SAAS,KAAKxb,EAAED,EAAK,oBAAoBx6B,EAAE,MAAMuF,MAAM69B,EAAE,IAAIpjC,IAAIA,EAAEikB,KAAKwW,EAAE,CAAC,CAAC,CAAC,IAAIwpU,IAAI,IAAIthB,EAAG/zR,WAAW+0O,KAAK,SAASugE,GAAG1gV,EAAE+F,EAAEiR,EAAEC,GAA8BD,EAAE,QAAXA,EAAEA,EAAEC,EAAtBlR,EAAE/F,EAAEooU,sBAAmC,IAASpxT,EAAEjR,EAAEioB,EAAE,CAAC,EAAEjoB,EAAEiR,GAAGhX,EAAEooU,cAAcpxT,EAAE,IAAIhX,EAAE6+U,QAAQ7+U,EAAEw/U,YAAYC,UAAUzoU,EAAE,CAClX,IAAI2pU,GAAG,CAAC5gE,UAAU,SAAS//Q,GAAG,SAAOA,EAAEA,EAAE4gV,kBAAiB7Y,GAAG/nU,KAAKA,CAAI,EAAE6gV,gBAAgB,SAAS7gV,EAAE+F,EAAEiR,GAAGhX,EAAEA,EAAE4gV,gBAAgB,IAAI3pU,EAAE6pU,KAAItkW,EAAEukW,GAAG/gV,GAAGlhB,EAAE2hT,GAAGxpR,EAAEz6B,GAAGsC,EAAEs5R,QAAQryQ,OAAE,IAASiR,GAAG,OAAOA,IAAIl4B,EAAE2zC,SAASzb,GAAe,QAAZjR,EAAEm6U,GAAGlgV,EAAElhB,EAAEtC,MAAcwkW,GAAGj7U,EAAE/F,EAAExjB,EAAEy6B,GAAGmpU,GAAGr6U,EAAE/F,EAAExjB,GAAG,EAAEsjS,oBAAoB,SAAS9/Q,EAAE+F,EAAEiR,GAAGhX,EAAEA,EAAE4gV,gBAAgB,IAAI3pU,EAAE6pU,KAAItkW,EAAEukW,GAAG/gV,GAAGlhB,EAAE2hT,GAAGxpR,EAAEz6B,GAAGsC,EAAEwsE,IAAI,EAAExsE,EAAEs5R,QAAQryQ,OAAE,IAASiR,GAAG,OAAOA,IAAIl4B,EAAE2zC,SAASzb,GAAe,QAAZjR,EAAEm6U,GAAGlgV,EAAElhB,EAAEtC,MAAcwkW,GAAGj7U,EAAE/F,EAAExjB,EAAEy6B,GAAGmpU,GAAGr6U,EAAE/F,EAAExjB,GAAG,EAAEykW,mBAAmB,SAASjhV,EAAE+F,GAAG/F,EAAEA,EAAE4gV,gBAAgB,IAAI5pU,EAAE8pU,KAAI7pU,EACnf8pU,GAAG/gV,GAAGxjB,EAAEikT,GAAGzpR,EAAEC,GAAGz6B,EAAE8uE,IAAI,OAAE,IAASvlD,GAAG,OAAOA,IAAIvpB,EAAEi2C,SAAS1sB,GAAe,QAAZA,EAAEm6U,GAAGlgV,EAAExjB,EAAEy6B,MAAc+pU,GAAGj7U,EAAE/F,EAAEiX,EAAED,GAAGopU,GAAGr6U,EAAE/F,EAAEiX,GAAG,GAAG,SAASiqU,GAAGlhV,EAAE+F,EAAEiR,EAAEC,EAAEz6B,EAAEsC,EAAEghV,GAAiB,MAAM,oBAApB9/T,EAAEA,EAAE6mU,WAAsCpqE,sBAAsBz8P,EAAEy8P,sBAAsBxlP,EAAEn4B,EAAEghV,IAAG/5T,EAAE3F,YAAW2F,EAAE3F,UAAU+gV,wBAAsBrM,GAAG99T,EAAEC,KAAK69T,GAAGt4V,EAAEsC,GAAK,CAC1S,SAASsiW,GAAGphV,EAAE+F,EAAEiR,GAAG,IAAIC,GAAE,EAAGz6B,EAAEq+V,GAAO/7V,EAAEinB,EAAE22R,YAA2W,MAA/V,kBAAkB59S,GAAG,OAAOA,EAAEA,EAAEigW,GAAGjgW,IAAItC,EAAE2+V,GAAGp1U,GAAGg1U,GAAGpiU,GAAEz0B,QAAyBpF,GAAGm4B,EAAE,QAAtBA,EAAElR,EAAEw3Q,oBAA4B,IAAStmQ,GAAG+jU,GAAGh7U,EAAExjB,GAAGq+V,IAAI90U,EAAE,IAAIA,EAAEiR,EAAEl4B,GAAGkhB,EAAEooU,cAAc,OAAOriU,EAAE/e,YAAO,IAAS+e,EAAE/e,MAAM+e,EAAE/e,MAAM,KAAK+e,EAAE85Q,QAAQ8gE,GAAG3gV,EAAE6mU,UAAU9gU,EAAEA,EAAE66U,gBAAgB5gV,EAAEiX,KAAIjX,EAAEA,EAAE6mU,WAAYoU,4CAA4Cz+V,EAAEwjB,EAAEk7U,0CAA0Cp8V,GAAUinB,CAAC,CAC5Z,SAASs7U,GAAGrhV,EAAE+F,EAAEiR,EAAEC,GAAGjX,EAAE+F,EAAE/e,MAAM,oBAAoB+e,EAAE83Q,2BAA2B93Q,EAAE83Q,0BAA0B7mQ,EAAEC,GAAG,oBAAoBlR,EAAEi4Q,kCAAkCj4Q,EAAEi4Q,iCAAiChnQ,EAAEC,GAAGlR,EAAE/e,QAAQgZ,GAAG2gV,GAAG7gE,oBAAoB/5Q,EAAEA,EAAE/e,MAAM,KAAK,CACpQ,SAASs6V,GAAGthV,EAAE+F,EAAEiR,EAAEC,GAAG,IAAIz6B,EAAEwjB,EAAE6mU,UAAUrqV,EAAE0G,MAAM8zB,EAAEx6B,EAAEwK,MAAMgZ,EAAEooU,cAAc5rV,EAAE2jS,KAAKsgE,GAAGlB,GAAGv/U,GAAG,IAAIlhB,EAAEinB,EAAE22R,YAAY,kBAAkB59S,GAAG,OAAOA,EAAEtC,EAAEqF,QAAQk9V,GAAGjgW,IAAIA,EAAEq8V,GAAGp1U,GAAGg1U,GAAGpiU,GAAEz0B,QAAQ1H,EAAEqF,QAAQm5V,GAAGh7U,EAAElhB,IAAItC,EAAEwK,MAAMgZ,EAAEooU,cAA2C,oBAA7BtpV,EAAEinB,EAAEq4Q,4BAAiDsiE,GAAG1gV,EAAE+F,EAAEjnB,EAAEk4B,GAAGx6B,EAAEwK,MAAMgZ,EAAEooU,eAAe,oBAAoBriU,EAAEq4Q,0BAA0B,oBAAoB5hS,EAAE+kW,yBAAyB,oBAAoB/kW,EAAEuhS,2BAA2B,oBAAoBvhS,EAAEohS,qBAAqB73Q,EAAEvpB,EAAEwK,MACrf,oBAAoBxK,EAAEohS,oBAAoBphS,EAAEohS,qBAAqB,oBAAoBphS,EAAEuhS,2BAA2BvhS,EAAEuhS,4BAA4Bh4Q,IAAIvpB,EAAEwK,OAAO25V,GAAG7gE,oBAAoBtjS,EAAEA,EAAEwK,MAAM,MAAMs5V,GAAGtgV,EAAEgX,EAAEx6B,EAAEy6B,GAAGz6B,EAAEwK,MAAMgZ,EAAEooU,eAAe,oBAAoB5rV,EAAE0/Q,oBAAoBl8P,EAAEkoU,OAAO,QAAQ,CACpS,SAASsZ,GAAGxhV,EAAE+F,EAAEiR,GAAW,GAAG,QAAXhX,EAAEgX,EAAE5yB,MAAiB,oBAAoB4b,GAAG,kBAAkBA,EAAE,CAAC,GAAGgX,EAAEyqU,OAAO,CAAY,GAAXzqU,EAAEA,EAAEyqU,OAAY,CAAC,GAAG,IAAIzqU,EAAEs0C,IAAI,MAAMvpE,MAAM69B,EAAE,MAAM,IAAI3I,EAAED,EAAE6vT,SAAS,CAAC,IAAI5vT,EAAE,MAAMl1B,MAAM69B,EAAE,IAAI5f,IAAI,IAAIxjB,EAAEy6B,EAAEn4B,EAAE,GAAGkhB,EAAE,OAAG,OAAO+F,GAAG,OAAOA,EAAE3hB,KAAK,oBAAoB2hB,EAAE3hB,KAAK2hB,EAAE3hB,IAAIs9V,aAAa5iW,EAASinB,EAAE3hB,KAAI2hB,EAAE,SAAS/F,GAAG,IAAI+F,EAAEvpB,EAAE2jS,KAAKp6Q,IAAI06U,KAAK16U,EAAEvpB,EAAE2jS,KAAK,CAAC,GAAG,OAAOngR,SAAS+F,EAAEjnB,GAAGinB,EAAEjnB,GAAGkhB,CAAC,EAAE+F,EAAE27U,WAAW5iW,EAASinB,EAAC,CAAC,GAAG,kBAAkB/F,EAAE,MAAMje,MAAM69B,EAAE,MAAM,IAAI5I,EAAEyqU,OAAO,MAAM1/V,MAAM69B,EAAE,IAAI5f,GAAI,CAAC,OAAOA,CAAC,CACre,SAASsoN,GAAGtoN,EAAE+F,GAAuC,MAApC/F,EAAEpgB,OAAOwgB,UAAUjkB,SAASskB,KAAKsF,GAAShkB,MAAM69B,EAAE,GAAG,oBAAoB5f,EAAE,qBAAqBpgB,OAAOC,KAAKkmB,GAAGiC,KAAK,MAAM,IAAIhI,GAAI,CAAC,SAAS2hV,GAAG3hV,GAAiB,OAAO+F,EAAf/F,EAAEqiU,OAAeriU,EAAEoiU,SAAS,CACrM,SAASwf,GAAG5hV,GAAG,SAAS+F,EAAEA,EAAEiR,GAAG,GAAGhX,EAAE,CAAC,IAAIiX,EAAElR,EAAEm3U,UAAU,OAAOjmU,GAAGlR,EAAEm3U,UAAU,CAAClmU,GAAGjR,EAAEmiU,OAAO,IAAIjxT,EAAEz2B,KAAKw2B,EAAE,CAAC,CAAC,SAASA,EAAEA,EAAEC,GAAG,IAAIjX,EAAE,OAAO,KAAK,KAAK,OAAOiX,GAAGlR,EAAEiR,EAAEC,GAAGA,EAAEA,EAAE45M,QAAQ,OAAO,IAAI,CAAC,SAAS55M,EAAEjX,EAAE+F,GAAG,IAAI/F,EAAE,IAAIO,IAAI,OAAOwF,GAAG,OAAOA,EAAEhmB,IAAIigB,EAAEY,IAAImF,EAAEhmB,IAAIgmB,GAAG/F,EAAEY,IAAImF,EAAEle,MAAMke,GAAGA,EAAEA,EAAE8qN,QAAQ,OAAO7wN,CAAC,CAAC,SAASxjB,EAAEwjB,EAAE+F,GAAsC,OAAnC/F,EAAE6hV,GAAG7hV,EAAE+F,IAAKle,MAAM,EAAEmY,EAAE6wN,QAAQ,KAAY7wN,CAAC,CAAC,SAASlhB,EAAEinB,EAAEiR,EAAEC,GAAa,OAAVlR,EAAEle,MAAMovB,EAAMjX,EAA6C,QAAjBiX,EAAElR,EAAEiiU,YAA6B/wT,EAAEA,EAAEpvB,OAAQmvB,GAAGjR,EAAEmiU,OAAO,EAAElxT,GAAGC,GAAElR,EAAEmiU,OAAO,EAASlxT,IAArGjR,EAAEmiU,OAAO,QAAQlxT,EAAqF,CAAC,SAAS8oT,EAAE/5T,GACzd,OAD4d/F,GAC7f,OAAO+F,EAAEiiU,YAAYjiU,EAAEmiU,OAAO,GAAUniU,CAAC,CAAC,SAAS2S,EAAE1Y,EAAE+F,EAAEiR,EAAEC,GAAG,OAAG,OAAOlR,GAAG,IAAIA,EAAEulD,MAAWvlD,EAAE+7U,GAAG9qU,EAAEhX,EAAE7V,KAAK8sB,IAAKgxT,OAAOjoU,EAAE+F,KAAEA,EAAEvpB,EAAEupB,EAAEiR,IAAKixT,OAAOjoU,EAAS+F,EAAC,CAAC,SAASokC,EAAEnqC,EAAE+F,EAAEiR,EAAEC,GAAG,IAAIn4B,EAAEk4B,EAAE37B,KAAK,OAAGyD,IAAIkiV,EAAUvoT,EAAEzY,EAAE+F,EAAEiR,EAAE9zB,MAAMvK,SAASs+B,EAAED,EAAEj3B,KAAQ,OAAOgmB,IAAIA,EAAE+yT,cAAch6U,GAAG,kBAAkBA,GAAG,OAAOA,GAAGA,EAAEkiS,WAAWygD,GAAIkgB,GAAG7iW,KAAKinB,EAAE1qB,QAAa47B,EAAEz6B,EAAEupB,EAAEiR,EAAE9zB,QAASkB,IAAIo9V,GAAGxhV,EAAE+F,EAAEiR,GAAGC,EAAEgxT,OAAOjoU,EAAEiX,KAAEA,EAAE8qU,GAAG/qU,EAAE37B,KAAK27B,EAAEj3B,IAAIi3B,EAAE9zB,MAAM,KAAK8c,EAAE7V,KAAK8sB,IAAK7yB,IAAIo9V,GAAGxhV,EAAE+F,EAAEiR,GAAGC,EAAEgxT,OAAOjoU,EAASiX,EAAC,CAAC,SAASlF,EAAE/R,EAAE+F,EAAEiR,EAAEC,GAAG,OAAG,OAAOlR,GAAG,IAAIA,EAAEulD,KACjfvlD,EAAE8gU,UAAUzwF,gBAAgBp/N,EAAEo/N,eAAerwO,EAAE8gU,UAAUpuC,iBAAiBzhR,EAAEyhR,iBAAsB1yR,EAAEi8U,GAAGhrU,EAAEhX,EAAE7V,KAAK8sB,IAAKgxT,OAAOjoU,EAAE+F,KAAEA,EAAEvpB,EAAEupB,EAAEiR,EAAEr+B,UAAU,KAAMsvV,OAAOjoU,EAAS+F,EAAC,CAAC,SAAS0S,EAAEzY,EAAE+F,EAAEiR,EAAEC,EAAEn4B,GAAG,OAAG,OAAOinB,GAAG,IAAIA,EAAEulD,MAAWvlD,EAAEk8U,GAAGjrU,EAAEhX,EAAE7V,KAAK8sB,EAAEn4B,IAAKmpV,OAAOjoU,EAAE+F,KAAEA,EAAEvpB,EAAEupB,EAAEiR,IAAKixT,OAAOjoU,EAAS+F,EAAC,CAAC,SAASisF,EAAEhyF,EAAE+F,EAAEiR,GAAG,GAAG,kBAAkBjR,GAAG,KAAKA,GAAG,kBAAkBA,EAAE,OAAOA,EAAE+7U,GAAG,GAAG/7U,EAAE/F,EAAE7V,KAAK6sB,IAAKixT,OAAOjoU,EAAE+F,EAAE,GAAG,kBAAkBA,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEi7Q,UAAU,KAAK8/C,EAAG,OAAO9pT,EAAE+qU,GAAGh8U,EAAE1qB,KAAK0qB,EAAEhmB,IAAIgmB,EAAE7iB,MAAM,KAAK8c,EAAE7V,KAAK6sB,IACjf5yB,IAAIo9V,GAAGxhV,EAAE,KAAK+F,GAAGiR,EAAEixT,OAAOjoU,EAAEgX,EAAE,KAAK+pT,EAAG,OAAOh7T,EAAEi8U,GAAGj8U,EAAE/F,EAAE7V,KAAK6sB,IAAKixT,OAAOjoU,EAAE+F,EAAE,KAAK07T,EAAiB,OAAOzvO,EAAEhyF,GAAEiX,EAAnBlR,EAAEs8T,OAAmBt8T,EAAEq8T,UAAUprT,GAAG,GAAGwsT,GAAGz9T,IAAI67T,EAAG77T,GAAG,OAAOA,EAAEk8U,GAAGl8U,EAAE/F,EAAE7V,KAAK6sB,EAAE,OAAQixT,OAAOjoU,EAAE+F,EAAEuiN,GAAGtoN,EAAE+F,EAAE,CAAC,OAAO,IAAI,CAAC,SAASne,EAAEoY,EAAE+F,EAAEiR,EAAEC,GAAG,IAAIz6B,EAAE,OAAOupB,EAAEA,EAAEhmB,IAAI,KAAK,GAAG,kBAAkBi3B,GAAG,KAAKA,GAAG,kBAAkBA,EAAE,OAAO,OAAOx6B,EAAE,KAAKk8B,EAAE1Y,EAAE+F,EAAE,GAAGiR,EAAEC,GAAG,GAAG,kBAAkBD,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEgqQ,UAAU,KAAK8/C,EAAG,OAAO9pT,EAAEj3B,MAAMvD,EAAE2tD,EAAEnqC,EAAE+F,EAAEiR,EAAEC,GAAG,KAAK,KAAK8pT,EAAG,OAAO/pT,EAAEj3B,MAAMvD,EAAEu1B,EAAE/R,EAAE+F,EAAEiR,EAAEC,GAAG,KAAK,KAAKwqT,EAAG,OAAiB75U,EAAEoY,EACpf+F,GADwevpB,EAAEw6B,EAAEqrT,OACxerrT,EAAEorT,UAAUnrT,GAAG,GAAGusT,GAAGxsT,IAAI4qT,EAAG5qT,GAAG,OAAO,OAAOx6B,EAAE,KAAKi8B,EAAEzY,EAAE+F,EAAEiR,EAAEC,EAAE,MAAMqxM,GAAGtoN,EAAEgX,EAAE,CAAC,OAAO,IAAI,CAAC,SAAS/hB,EAAE+K,EAAE+F,EAAEiR,EAAEC,EAAEz6B,GAAG,GAAG,kBAAkBy6B,GAAG,KAAKA,GAAG,kBAAkBA,EAAE,OAAwByB,EAAE3S,EAAnB/F,EAAEA,EAAEve,IAAIu1B,IAAI,KAAW,GAAGC,EAAEz6B,GAAG,GAAG,kBAAkBy6B,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAE+pQ,UAAU,KAAK8/C,EAAG,OAA2C32R,EAAEpkC,EAAtC/F,EAAEA,EAAEve,IAAI,OAAOw1B,EAAEl3B,IAAIi3B,EAAEC,EAAEl3B,MAAM,KAAWk3B,EAAEz6B,GAAG,KAAKukV,EAAG,OAA2ChvT,EAAEhM,EAAtC/F,EAAEA,EAAEve,IAAI,OAAOw1B,EAAEl3B,IAAIi3B,EAAEC,EAAEl3B,MAAM,KAAWk3B,EAAEz6B,GAAG,KAAKilV,EAAiB,OAAOxsU,EAAE+K,EAAE+F,EAAEiR,GAAEl4B,EAAvBm4B,EAAEorT,OAAuBprT,EAAEmrT,UAAU5lV,GAAG,GAAGgnV,GAAGvsT,IAAI2qT,EAAG3qT,GAAG,OAAwBwB,EAAE1S,EAAnB/F,EAAEA,EAAEve,IAAIu1B,IAAI,KAAWC,EAAEz6B,EAAE,MAAM8rO,GAAGviN,EAAEkR,EAAE,CAAC,OAAO,IAAI,CAC9f,SAAS/4B,EAAE1B,EAAEsjV,EAAEpnT,EAAEyxB,GAAG,IAAI,IAAIp4B,EAAE,KAAK0G,EAAE,KAAKytO,EAAE45E,EAAEjiC,EAAEiiC,EAAE,EAAEnyS,EAAE,KAAK,OAAOu4N,GAAG23C,EAAEnlR,EAAE1/B,OAAO6kT,IAAI,CAAC33C,EAAEr+P,MAAMg2S,GAAGlwQ,EAAEu4N,EAAEA,EAAE,MAAMv4N,EAAEu4N,EAAEr1B,QAAQ,IAAI3yO,EAAE0J,EAAEpL,EAAE0pQ,EAAExtO,EAAEmlR,GAAG1zP,GAAG,GAAG,OAAOjsD,EAAE,CAAC,OAAOgoQ,IAAIA,EAAEv4N,GAAG,KAAK,CAAC3tB,GAAGkmP,GAAG,OAAOhoQ,EAAE8pV,WAAWjiU,EAAEvpB,EAAE0pQ,GAAG45E,EAAEhhV,EAAEZ,EAAE4hV,EAAEjiC,GAAG,OAAOplR,EAAE1G,EAAE7zB,EAAEu6B,EAAEo4M,QAAQ3yO,EAAEu6B,EAAEv6B,EAAEgoQ,EAAEv4N,CAAC,CAAC,GAAGkwQ,IAAInlR,EAAE1/B,OAAO,OAAOg+B,EAAEx6B,EAAE0pQ,GAAG42F,IAAGN,GAAGhgW,EAAEqhT,GAAG9rR,EAAE,GAAG,OAAOm0O,EAAE,CAAC,KAAK23C,EAAEnlR,EAAE1/B,OAAO6kT,IAAkB,QAAd33C,EAAEl0J,EAAEx1G,EAAEk8B,EAAEmlR,GAAG1zP,MAAc21R,EAAEhhV,EAAEonQ,EAAE45E,EAAEjiC,GAAG,OAAOplR,EAAE1G,EAAEm0O,EAAEztO,EAAEo4M,QAAQq1B,EAAEztO,EAAEytO,GAAc,OAAX42F,IAAGN,GAAGhgW,EAAEqhT,GAAU9rR,CAAC,CAAC,IAAIm0O,EAAEjvO,EAAEz6B,EAAE0pQ,GAAG23C,EAAEnlR,EAAE1/B,OAAO6kT,IAAsB,QAAlBlwQ,EAAE14B,EAAEixP,EAAE1pQ,EAAEqhT,EAAEnlR,EAAEmlR,GAAG1zP,MAAcnqC,GAAG,OAAO2tB,EAAEq6S,WAAW9hF,EAAEv0P,OAAO,OACvfg8B,EAAE5tC,IAAI89S,EAAElwQ,EAAE5tC,KAAK+/U,EAAEhhV,EAAE6uC,EAAEmyS,EAAEjiC,GAAG,OAAOplR,EAAE1G,EAAE4b,EAAElV,EAAEo4M,QAAQljM,EAAElV,EAAEkV,GAAuD,OAApD3tB,GAAGkmP,EAAEpmQ,SAAQ,SAASkgB,GAAG,OAAO+F,EAAEvpB,EAAEwjB,EAAE,IAAG88U,IAAGN,GAAGhgW,EAAEqhT,GAAU9rR,CAAC,CAAC,SAASo0J,EAAE3pL,EAAEsjV,EAAEpnT,EAAEyxB,GAAG,IAAIp4B,EAAE6vT,EAAGlpT,GAAG,GAAG,oBAAoB3G,EAAE,MAAMhwB,MAAM69B,EAAE,MAAkB,GAAG,OAAflH,EAAE3G,EAAEtR,KAAKiY,IAAc,MAAM32B,MAAM69B,EAAE,MAAM,IAAI,IAAIsmO,EAAEn0O,EAAE,KAAK0G,EAAEqnT,EAAEjiC,EAAEiiC,EAAE,EAAEnyS,EAAE,KAAKzvC,EAAEw6B,EAAEmmD,OAAO,OAAOpmD,IAAIv6B,EAAEC,KAAK0/S,IAAI3/S,EAAEw6B,EAAEmmD,OAAO,CAACpmD,EAAE5wB,MAAMg2S,GAAGlwQ,EAAElV,EAAEA,EAAE,MAAMkV,EAAElV,EAAEo4M,QAAQ,IAAI1qD,EAAEv+K,EAAEpL,EAAEi8B,EAAEv6B,EAAEI,MAAM6rD,GAAG,GAAG,OAAOg8H,EAAE,CAAC,OAAO1tJ,IAAIA,EAAEkV,GAAG,KAAK,CAAC3tB,GAAGyY,GAAG,OAAO0tJ,EAAE6hK,WAAWjiU,EAAEvpB,EAAEi8B,GAAGqnT,EAAEhhV,EAAEqnL,EAAE25J,EAAEjiC,GAAG,OAAO33C,EAAEn0O,EAAEo0J,EAAE+/E,EAAEr1B,QAAQ1qD,EAAE+/E,EAAE//E,EAAE1tJ,EAAEkV,CAAC,CAAC,GAAGzvC,EAAEC,KAAK,OAAO64B,EAAEx6B,EACzfi8B,GAAGqkU,IAAGN,GAAGhgW,EAAEqhT,GAAG9rR,EAAE,GAAG,OAAO0G,EAAE,CAAC,MAAMv6B,EAAEC,KAAK0/S,IAAI3/S,EAAEw6B,EAAEmmD,OAAwB,QAAjB3gF,EAAE8zG,EAAEx1G,EAAE0B,EAAEI,MAAM6rD,MAAc21R,EAAEhhV,EAAEZ,EAAE4hV,EAAEjiC,GAAG,OAAO33C,EAAEn0O,EAAE7zB,EAAEgoQ,EAAEr1B,QAAQ3yO,EAAEgoQ,EAAEhoQ,GAAc,OAAX4+V,IAAGN,GAAGhgW,EAAEqhT,GAAU9rR,CAAC,CAAC,IAAI0G,EAAExB,EAAEz6B,EAAEi8B,IAAIv6B,EAAEC,KAAK0/S,IAAI3/S,EAAEw6B,EAAEmmD,OAA4B,QAArB3gF,EAAE+W,EAAEwjB,EAAEj8B,EAAEqhT,EAAE3/S,EAAEI,MAAM6rD,MAAcnqC,GAAG,OAAO9hB,EAAE8pV,WAAWvvT,EAAE9mB,OAAO,OAAOzT,EAAE6B,IAAI89S,EAAE3/S,EAAE6B,KAAK+/U,EAAEhhV,EAAEZ,EAAE4hV,EAAEjiC,GAAG,OAAO33C,EAAEn0O,EAAE7zB,EAAEgoQ,EAAEr1B,QAAQ3yO,EAAEgoQ,EAAEhoQ,GAAuD,OAApD8hB,GAAGyY,EAAE34B,SAAQ,SAASkgB,GAAG,OAAO+F,EAAEvpB,EAAEwjB,EAAE,IAAG88U,IAAGN,GAAGhgW,EAAEqhT,GAAU9rR,CAAC,CAG3T,OAH4T,SAASumU,EAAEt4U,EAAEiX,EAAEn4B,EAAE45B,GAAkF,GAA/E,kBAAkB55B,GAAG,OAAOA,GAAGA,EAAEzD,OAAO2lV,GAAI,OAAOliV,EAAEiB,MAAMjB,EAAEA,EAAEoE,MAAMvK,UAAa,kBAAkBmG,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEkiS,UAAU,KAAK8/C,EAAG9gU,EAAE,CAAC,IAAI,IAAImqC,EAC7hBrrD,EAAEiB,IAAIgyB,EAAEkF,EAAE,OAAOlF,GAAG,CAAC,GAAGA,EAAEhyB,MAAMoqD,EAAE,CAAU,IAATA,EAAErrD,EAAEzD,QAAY2lV,GAAI,GAAG,IAAIjvT,EAAEu5C,IAAI,CAACt0C,EAAEhX,EAAE+R,EAAE8+M,UAAS55M,EAAEz6B,EAAEu1B,EAAEjzB,EAAEoE,MAAMvK,WAAYsvV,OAAOjoU,EAAEA,EAAEiX,EAAE,MAAMjX,CAAC,OAAO,GAAG+R,EAAE+mT,cAAc3uR,GAAG,kBAAkBA,GAAG,OAAOA,GAAGA,EAAE62O,WAAWygD,GAAIkgB,GAAGx3S,KAAKp4B,EAAE12B,KAAK,CAAC27B,EAAEhX,EAAE+R,EAAE8+M,UAAS55M,EAAEz6B,EAAEu1B,EAAEjzB,EAAEoE,QAASkB,IAAIo9V,GAAGxhV,EAAE+R,EAAEjzB,GAAGm4B,EAAEgxT,OAAOjoU,EAAEA,EAAEiX,EAAE,MAAMjX,CAAC,CAACgX,EAAEhX,EAAE+R,GAAG,KAAK,CAAMhM,EAAE/F,EAAE+R,GAAGA,EAAEA,EAAE8+M,OAAO,CAAC/xO,EAAEzD,OAAO2lV,IAAI/pT,EAAEgrU,GAAGnjW,EAAEoE,MAAMvK,SAASqnB,EAAE7V,KAAKuuB,EAAE55B,EAAEiB,MAAOkoV,OAAOjoU,EAAEA,EAAEiX,KAAIyB,EAAEqpU,GAAGjjW,EAAEzD,KAAKyD,EAAEiB,IAAIjB,EAAEoE,MAAM,KAAK8c,EAAE7V,KAAKuuB,IAAKt0B,IAAIo9V,GAAGxhV,EAAEiX,EAAEn4B,GAAG45B,EAAEuvT,OAAOjoU,EAAEA,EAAE0Y,EAAE,CAAC,OAAOonT,EAAE9/T,GAAG,KAAK+gU,EAAG/gU,EAAE,CAAC,IAAI+R,EAAEjzB,EAAEiB,IAAI,OACzfk3B,GAAG,CAAC,GAAGA,EAAEl3B,MAAMgyB,EAAC,CAAC,GAAG,IAAIkF,EAAEq0C,KAAKr0C,EAAE4vT,UAAUzwF,gBAAgBt3P,EAAEs3P,eAAen/N,EAAE4vT,UAAUpuC,iBAAiB35S,EAAE25S,eAAe,CAACzhR,EAAEhX,EAAEiX,EAAE45M,UAAS55M,EAAEz6B,EAAEy6B,EAAEn4B,EAAEnG,UAAU,KAAMsvV,OAAOjoU,EAAEA,EAAEiX,EAAE,MAAMjX,CAAC,CAAMgX,EAAEhX,EAAEiX,GAAG,KAAM,CAAKlR,EAAE/F,EAAEiX,GAAGA,EAAEA,EAAE45M,OAAO,EAAC55M,EAAE+qU,GAAGljW,EAAEkhB,EAAE7V,KAAKuuB,IAAKuvT,OAAOjoU,EAAEA,EAAEiX,CAAC,CAAC,OAAO6oT,EAAE9/T,GAAG,KAAKyhU,EAAG,OAAiB6W,EAAEt4U,EAAEiX,GAAdlF,EAAEjzB,EAAEujV,OAAcvjV,EAAEsjV,UAAU1pT,GAAG,GAAG8qT,GAAG1kV,GAAG,OAAOZ,EAAE8hB,EAAEiX,EAAEn4B,EAAE45B,GAAG,GAAGkpT,EAAG9iV,GAAG,OAAOqnL,EAAEnmK,EAAEiX,EAAEn4B,EAAE45B,GAAG4vM,GAAGtoN,EAAElhB,EAAE,CAAC,MAAM,kBAAkBA,GAAG,KAAKA,GAAG,kBAAkBA,GAAGA,EAAE,GAAGA,EAAE,OAAOm4B,GAAG,IAAIA,EAAEq0C,KAAKt0C,EAAEhX,EAAEiX,EAAE45M,UAAS55M,EAAEz6B,EAAEy6B,EAAEn4B,IAAKmpV,OAAOjoU,EAAEA,EAAEiX,IACnfD,EAAEhX,EAAEiX,IAAGA,EAAE6qU,GAAGhjW,EAAEkhB,EAAE7V,KAAKuuB,IAAKuvT,OAAOjoU,EAAEA,EAAEiX,GAAG6oT,EAAE9/T,IAAIgX,EAAEhX,EAAEiX,EAAE,CAAS,CAAC,IAAIirU,GAAGN,IAAG,GAAIO,GAAGP,IAAG,GAAIQ,GAAG,CAAC,EAAEC,GAAG1H,GAAGyH,IAAIE,GAAG3H,GAAGyH,IAAIG,GAAG5H,GAAGyH,IAAI,SAASI,GAAGxiV,GAAG,GAAGA,IAAIoiV,GAAG,MAAMrgW,MAAM69B,EAAE,MAAM,OAAO5f,CAAC,CAAC,SAASyiV,GAAGziV,EAAE+F,GAAyC,OAAtC60U,GAAE2H,GAAGx8U,GAAG60U,GAAE0H,GAAGtiV,GAAG46U,GAAEyH,GAAGD,IAAIpiV,EAAE+F,EAAEs0B,UAAmB,KAAK,EAAE,KAAK,GAAGt0B,GAAGA,EAAEA,EAAEy+B,iBAAiBz+B,EAAEg6R,aAAakkC,GAAG,KAAK,IAAI,MAAM,QAAkEl+T,EAAEk+T,GAArCl+T,GAAvB/F,EAAE,IAAIA,EAAE+F,EAAEsL,WAAWtL,GAAMg6R,cAAc,KAAK//R,EAAEA,EAAEk3B,SAAkBjJ,GAAEo0T,IAAIzH,GAAEyH,GAAGt8U,EAAE,CAAC,SAAS28U,KAAKz0T,GAAEo0T,IAAIp0T,GAAEq0T,IAAIr0T,GAAEs0T,GAAG,CACnb,SAASI,GAAG3iV,GAAGwiV,GAAGD,GAAGr+V,SAAS,IAAI6hB,EAAEy8U,GAAGH,GAAGn+V,SAAa8yB,EAAEitT,GAAGl+T,EAAE/F,EAAE3kB,MAAM0qB,IAAIiR,IAAI4jU,GAAE0H,GAAGtiV,GAAG46U,GAAEyH,GAAGrrU,GAAG,CAAC,SAAS4rU,GAAG5iV,GAAGsiV,GAAGp+V,UAAU8b,IAAIiuB,GAAEo0T,IAAIp0T,GAAEq0T,IAAI,CAAC,IAAIO,GAAElI,GAAG,GACrJ,SAASmI,GAAG9iV,GAAG,IAAI,IAAI+F,EAAE/F,EAAE,OAAO+F,GAAG,CAAC,GAAG,KAAKA,EAAEulD,IAAI,CAAC,IAAIt0C,EAAEjR,EAAEqiU,cAAc,GAAG,OAAOpxT,IAAmB,QAAfA,EAAEA,EAAEqxT,aAAqB,OAAOrxT,EAAEpwB,MAAM,OAAOowB,EAAEpwB,MAAM,OAAOmf,CAAC,MAAM,GAAG,KAAKA,EAAEulD,UAAK,IAASvlD,EAAE43U,cAAcoF,aAAa,GAAG,KAAa,IAARh9U,EAAEmiU,OAAW,OAAOniU,OAAO,GAAG,OAAOA,EAAEoL,MAAM,CAACpL,EAAEoL,MAAM82T,OAAOliU,EAAEA,EAAEA,EAAEoL,MAAM,QAAQ,CAAC,GAAGpL,IAAI/F,EAAE,MAAM,KAAK,OAAO+F,EAAE8qN,SAAS,CAAC,GAAG,OAAO9qN,EAAEkiU,QAAQliU,EAAEkiU,SAASjoU,EAAE,OAAO,KAAK+F,EAAEA,EAAEkiU,MAAM,CAACliU,EAAE8qN,QAAQo3G,OAAOliU,EAAEkiU,OAAOliU,EAAEA,EAAE8qN,OAAO,CAAC,OAAO,IAAI,CAAC,IAAImyH,GAAG,GACrc,SAASC,KAAK,IAAI,IAAIjjV,EAAE,EAAEA,EAAEgjV,GAAGhqW,OAAOgnB,IAAIgjV,GAAGhjV,GAAGkjV,8BAA8B,KAAKF,GAAGhqW,OAAO,CAAC,CAAC,IAAImqW,GAAGviB,EAAGwiB,uBAAuBC,GAAGziB,EAAG2M,wBAAwB+V,GAAG,EAAEv1T,GAAE,KAAKwuQ,GAAE,KAAKzuQ,GAAE,KAAKy1T,IAAG,EAAGC,IAAG,EAAGC,GAAG,EAAEC,GAAG,EAAE,SAASC,KAAI,MAAM5hW,MAAM69B,EAAE,KAAM,CAAC,SAASgkU,GAAG5jV,EAAE+F,GAAG,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAI,IAAIiR,EAAE,EAAEA,EAAEjR,EAAE/sB,QAAQg+B,EAAEhX,EAAEhnB,OAAOg+B,IAAI,IAAI69T,GAAG70U,EAAEgX,GAAGjR,EAAEiR,IAAI,OAAM,EAAG,OAAM,CAAE,CAChW,SAAS6sU,GAAG7jV,EAAE+F,EAAEiR,EAAEC,EAAEz6B,EAAEsC,GAAyH,GAAtHwkW,GAAGxkW,EAAEivC,GAAEhoB,EAAEA,EAAEqiU,cAAc,KAAKriU,EAAEy5U,YAAY,KAAKz5U,EAAE84U,MAAM,EAAEsE,GAAGj/V,QAAQ,OAAO8b,GAAG,OAAOA,EAAEooU,cAAc0b,GAAGC,GAAG/jV,EAAEgX,EAAEC,EAAEz6B,GAAMgnW,GAAG,CAAC1kW,EAAE,EAAE,EAAE,CAAY,GAAX0kW,IAAG,EAAGC,GAAG,EAAK,IAAI3kW,EAAE,MAAMiD,MAAM69B,EAAE,MAAM9gC,GAAG,EAAEgvC,GAAEyuQ,GAAE,KAAKx2R,EAAEy5U,YAAY,KAAK2D,GAAGj/V,QAAQ8/V,GAAGhkV,EAAEgX,EAAEC,EAAEz6B,EAAE,OAAOgnW,GAAG,CAA+D,GAA9DL,GAAGj/V,QAAQ+/V,GAAGl+U,EAAE,OAAOw2R,IAAG,OAAOA,GAAE19N,KAAKykR,GAAG,EAAEx1T,GAAEyuQ,GAAExuQ,GAAE,KAAKw1T,IAAG,EAAMx9U,EAAE,MAAMhkB,MAAM69B,EAAE,MAAM,OAAO5f,CAAC,CAAC,SAASkkV,KAAK,IAAIlkV,EAAE,IAAIyjV,GAAQ,OAALA,GAAG,EAASzjV,CAAC,CAC/Y,SAASmkV,KAAK,IAAInkV,EAAE,CAACooU,cAAc,KAAKqX,UAAU,KAAK2E,UAAU,KAAKp4C,MAAM,KAAKntO,KAAK,MAA8C,OAAxC,OAAO/wC,GAAEC,GAAEq6S,cAAct6S,GAAE9tB,EAAE8tB,GAAEA,GAAE+wC,KAAK7+D,EAAS8tB,EAAC,CAAC,SAASu2T,KAAK,GAAG,OAAO9nD,GAAE,CAAC,IAAIv8R,EAAE+tB,GAAEi6S,UAAUhoU,EAAE,OAAOA,EAAEA,EAAEooU,cAAc,IAAI,MAAMpoU,EAAEu8R,GAAE19N,KAAK,IAAI94D,EAAE,OAAO+nB,GAAEC,GAAEq6S,cAAct6S,GAAE+wC,KAAK,GAAG,OAAO94D,EAAE+nB,GAAE/nB,EAAEw2R,GAAEv8R,MAAM,CAAC,GAAG,OAAOA,EAAE,MAAMje,MAAM69B,EAAE,MAAU5f,EAAE,CAACooU,eAAP7rC,GAAEv8R,GAAqBooU,cAAcqX,UAAUljD,GAAEkjD,UAAU2E,UAAU7nD,GAAE6nD,UAAUp4C,MAAMzP,GAAEyP,MAAMntO,KAAK,MAAM,OAAO/wC,GAAEC,GAAEq6S,cAAct6S,GAAE9tB,EAAE8tB,GAAEA,GAAE+wC,KAAK7+D,CAAC,CAAC,OAAO8tB,EAAC,CACje,SAASw2T,GAAGtkV,EAAE+F,GAAG,MAAM,oBAAoBA,EAAEA,EAAE/F,GAAG+F,CAAC,CACnD,SAASw+U,GAAGvkV,GAAG,IAAI+F,EAAEs+U,KAAKrtU,EAAEjR,EAAEimS,MAAM,GAAG,OAAOh1R,EAAE,MAAMj1B,MAAM69B,EAAE,MAAM5I,EAAEwtU,oBAAoBxkV,EAAE,IAAIiX,EAAEslR,GAAE//S,EAAEy6B,EAAEmtU,UAAUtlW,EAAEk4B,EAAE6oU,QAAQ,GAAG,OAAO/gW,EAAE,CAAC,GAAG,OAAOtC,EAAE,CAAC,IAAIsjV,EAAEtjV,EAAEqiF,KAAKriF,EAAEqiF,KAAK//E,EAAE+/E,KAAK//E,EAAE+/E,KAAKihQ,CAAC,CAAC7oT,EAAEmtU,UAAU5nW,EAAEsC,EAAEk4B,EAAE6oU,QAAQ,IAAI,CAAC,GAAG,OAAOrjW,EAAE,CAACsC,EAAEtC,EAAEqiF,KAAK5nD,EAAEA,EAAEwoU,UAAU,IAAI/mU,EAAEonT,EAAE,KAAK31R,EAAE,KAAKp4B,EAAEjzB,EAAE,EAAE,CAAC,IAAI25B,EAAE1G,EAAEkuU,KAAK,IAAIqD,GAAG7qU,KAAKA,EAAE,OAAO0xB,IAAIA,EAAEA,EAAE00B,KAAK,CAACohR,KAAK,EAAEj8U,OAAO+N,EAAE/N,OAAOygV,cAAc1yU,EAAE0yU,cAAcC,WAAW3yU,EAAE2yU,WAAW7lR,KAAK,OAAO5nD,EAAElF,EAAE0yU,cAAc1yU,EAAE2yU,WAAW1kV,EAAEiX,EAAElF,EAAE/N,YAAY,CAAC,IAAIguF,EAAE,CAACiuP,KAAKxnU,EAAEzU,OAAO+N,EAAE/N,OAAOygV,cAAc1yU,EAAE0yU,cACngBC,WAAW3yU,EAAE2yU,WAAW7lR,KAAK,MAAM,OAAO10B,GAAGzxB,EAAEyxB,EAAE6nD,EAAE8tO,EAAE7oT,GAAGkzB,EAAEA,EAAE00B,KAAKmzB,EAAEjkE,GAAE8wT,OAAOpmU,EAAE8nU,IAAI9nU,CAAC,CAAC1G,EAAEA,EAAE8sD,IAAI,OAAO,OAAO9sD,GAAGA,IAAIjzB,GAAG,OAAOqrD,EAAE21R,EAAE7oT,EAAEkzB,EAAE00B,KAAKnmD,EAAEm8T,GAAG59T,EAAElR,EAAEqiU,iBAAiB0W,IAAG,GAAI/4U,EAAEqiU,cAAcnxT,EAAElR,EAAE05U,UAAU3f,EAAE/5T,EAAEq+U,UAAUj6S,EAAEnzB,EAAE2tU,kBAAkB1tU,CAAC,CAAiB,GAAG,QAAnBjX,EAAEgX,EAAEooU,aAAwB,CAAC5iW,EAAEwjB,EAAE,GAAGlhB,EAAEtC,EAAEyjW,KAAKlyT,GAAE8wT,OAAO//V,EAAEyhW,IAAIzhW,EAAEtC,EAAEA,EAAEqiF,WAAWriF,IAAIwjB,EAAE,MAAM,OAAOxjB,IAAIw6B,EAAE6nU,MAAM,GAAG,MAAM,CAAC94U,EAAEqiU,cAAcpxT,EAAE44Q,SAAS,CAC9X,SAASg1D,GAAG5kV,GAAG,IAAI+F,EAAEs+U,KAAKrtU,EAAEjR,EAAEimS,MAAM,GAAG,OAAOh1R,EAAE,MAAMj1B,MAAM69B,EAAE,MAAM5I,EAAEwtU,oBAAoBxkV,EAAE,IAAIiX,EAAED,EAAE44Q,SAASpzS,EAAEw6B,EAAE6oU,QAAQ/gW,EAAEinB,EAAEqiU,cAAc,GAAG,OAAO5rV,EAAE,CAACw6B,EAAE6oU,QAAQ,KAAK,IAAI/f,EAAEtjV,EAAEA,EAAEqiF,KAAK,GAAG//E,EAAEkhB,EAAElhB,EAAEghV,EAAE97T,QAAQ87T,EAAEA,EAAEjhQ,WAAWihQ,IAAItjV,GAAGq4V,GAAG/1V,EAAEinB,EAAEqiU,iBAAiB0W,IAAG,GAAI/4U,EAAEqiU,cAActpV,EAAE,OAAOinB,EAAEq+U,YAAYr+U,EAAE05U,UAAU3gW,GAAGk4B,EAAE2tU,kBAAkB7lW,CAAC,CAAC,MAAM,CAACA,EAAEm4B,EAAE,CAAC,SAAS4tU,KAAK,CACpW,SAASjtU,GAAG5X,EAAE+F,GAAG,IAAIiR,EAAE+W,GAAE9W,EAAEotU,KAAK7nW,EAAEupB,IAAIjnB,GAAG+1V,GAAG59T,EAAEmxT,cAAc5rV,GAAsE,GAAnEsC,IAAIm4B,EAAEmxT,cAAc5rV,EAAEsiW,IAAG,GAAI7nU,EAAEA,EAAE+0R,MAAM84C,GAAGC,GAAGhlV,KAAK,KAAKiX,EAAEC,EAAEjX,GAAG,CAACA,IAAOiX,EAAE+tU,cAAcj/U,GAAGjnB,GAAG,OAAOgvC,IAAuB,EAApBA,GAAEs6S,cAAc98Q,IAAM,CAAuD,GAAtDt0C,EAAEkxT,OAAO,KAAKv0P,GAAG,EAAEsxQ,GAAGllV,KAAK,KAAKiX,EAAEC,EAAEz6B,EAAEupB,QAAG,EAAO,MAAS,OAAOm/U,GAAE,MAAMnjW,MAAM69B,EAAE,MAAM,KAAQ,GAAH0jU,KAAQ6B,GAAGnuU,EAAEjR,EAAEvpB,EAAE,CAAC,OAAOA,CAAC,CAAC,SAAS2oW,GAAGnlV,EAAE+F,EAAEiR,GAAGhX,EAAEkoU,OAAO,MAAMloU,EAAE,CAACglV,YAAYj/U,EAAEznB,MAAM04B,GAAmB,QAAhBjR,EAAEgoB,GAAEyxT,cAAsBz5U,EAAE,CAACq/U,WAAW,KAAKC,OAAO,MAAMt3T,GAAEyxT,YAAYz5U,EAAEA,EAAEs/U,OAAO,CAACrlV,IAAgB,QAAXgX,EAAEjR,EAAEs/U,QAAgBt/U,EAAEs/U,OAAO,CAACrlV,GAAGgX,EAAEx2B,KAAKwf,EAAG,CAClf,SAASilV,GAAGjlV,EAAE+F,EAAEiR,EAAEC,GAAGlR,EAAEznB,MAAM04B,EAAEjR,EAAEi/U,YAAY/tU,EAAEquU,GAAGv/U,IAAIw/U,GAAGvlV,EAAE,CAAC,SAAS+kV,GAAG/kV,EAAE+F,EAAEiR,GAAG,OAAOA,GAAE,WAAWsuU,GAAGv/U,IAAIw/U,GAAGvlV,EAAE,GAAE,CAAC,SAASslV,GAAGtlV,GAAG,IAAI+F,EAAE/F,EAAEglV,YAAYhlV,EAAEA,EAAE1hB,MAAM,IAAI,IAAI04B,EAAEjR,IAAI,OAAO8uU,GAAG70U,EAAEgX,EAAE,CAAC,MAAMC,GAAG,OAAM,CAAE,CAAC,CAAC,SAASsuU,GAAGvlV,GAAG,IAAI+F,EAAEs5U,GAAGr/U,EAAE,GAAG,OAAO+F,GAAGi7U,GAAGj7U,EAAE/F,EAAE,GAAG,EAAE,CAClQ,SAASwlV,GAAGxlV,GAAG,IAAI+F,EAAEo+U,KAA8M,MAAzM,oBAAoBnkV,IAAIA,EAAEA,KAAK+F,EAAEqiU,cAAcriU,EAAE05U,UAAUz/U,EAAEA,EAAE,CAAC6/U,QAAQ,KAAKT,YAAY,KAAKP,MAAM,EAAEjvD,SAAS,KAAK40D,oBAAoBF,GAAGK,kBAAkB3kV,GAAG+F,EAAEimS,MAAMhsS,EAAEA,EAAEA,EAAE4vR,SAAS61D,GAAG1lV,KAAK,KAAKguB,GAAE/tB,GAAS,CAAC+F,EAAEqiU,cAAcpoU,EAAE,CAC5P,SAAS2zE,GAAG3zE,EAAE+F,EAAEiR,EAAEC,GAA8O,OAA3OjX,EAAE,CAACsrD,IAAItrD,EAAEiB,OAAO8E,EAAE0iB,QAAQzR,EAAE0uU,KAAKzuU,EAAE4nD,KAAK,MAAsB,QAAhB94D,EAAEgoB,GAAEyxT,cAAsBz5U,EAAE,CAACq/U,WAAW,KAAKC,OAAO,MAAMt3T,GAAEyxT,YAAYz5U,EAAEA,EAAEq/U,WAAWplV,EAAE6+D,KAAK7+D,GAAmB,QAAfgX,EAAEjR,EAAEq/U,YAAoBr/U,EAAEq/U,WAAWplV,EAAE6+D,KAAK7+D,GAAGiX,EAAED,EAAE6nD,KAAK7nD,EAAE6nD,KAAK7+D,EAAEA,EAAE6+D,KAAK5nD,EAAElR,EAAEq/U,WAAWplV,GAAWA,CAAC,CAAC,SAAS2lV,KAAK,OAAOtB,KAAKjc,aAAa,CAAC,SAASwd,GAAG5lV,EAAE+F,EAAEiR,EAAEC,GAAG,IAAIz6B,EAAE2nW,KAAKp2T,GAAEm6S,OAAOloU,EAAExjB,EAAE4rV,cAAcz0P,GAAG,EAAE5tE,EAAEiR,OAAE,OAAO,IAASC,EAAE,KAAKA,EAAE,CAC9Y,SAASgwG,GAAGjnH,EAAE+F,EAAEiR,EAAEC,GAAG,IAAIz6B,EAAE6nW,KAAKptU,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIn4B,OAAE,EAAO,GAAG,OAAOy9S,GAAE,CAAC,IAAIujC,EAAEvjC,GAAE6rC,cAA0B,GAAZtpV,EAAEghV,EAAEr3S,QAAW,OAAOxR,GAAG2sU,GAAG3sU,EAAE6oT,EAAE4lB,MAAmC,YAA5BlpW,EAAE4rV,cAAcz0P,GAAG5tE,EAAEiR,EAAEl4B,EAAEm4B,GAAU,CAAC8W,GAAEm6S,OAAOloU,EAAExjB,EAAE4rV,cAAcz0P,GAAG,EAAE5tE,EAAEiR,EAAEl4B,EAAEm4B,EAAE,CAAC,SAAS4uU,GAAG7lV,EAAE+F,GAAG,OAAO6/U,GAAG,QAAQ,EAAE5lV,EAAE+F,EAAE,CAAC,SAAS++U,GAAG9kV,EAAE+F,GAAG,OAAOkhH,GAAG,KAAK,EAAEjnH,EAAE+F,EAAE,CAAC,SAAS+/U,GAAG9lV,EAAE+F,GAAG,OAAOkhH,GAAG,EAAE,EAAEjnH,EAAE+F,EAAE,CAAC,SAASggV,GAAG/lV,EAAE+F,GAAG,OAAOkhH,GAAG,EAAE,EAAEjnH,EAAE+F,EAAE,CAChX,SAASigV,GAAGhmV,EAAE+F,GAAG,MAAG,oBAAoBA,GAAS/F,EAAEA,IAAI+F,EAAE/F,GAAG,WAAW+F,EAAE,KAAK,GAAK,OAAOA,QAAG,IAASA,GAAS/F,EAAEA,IAAI+F,EAAE7hB,QAAQ8b,EAAE,WAAW+F,EAAE7hB,QAAQ,IAAI,QAA1E,CAA2E,CAAC,SAAS+hW,GAAGjmV,EAAE+F,EAAEiR,GAA6C,OAA1CA,EAAE,OAAOA,QAAG,IAASA,EAAEA,EAAEt1B,OAAO,CAACse,IAAI,KAAYinH,GAAG,EAAE,EAAE++N,GAAGjmV,KAAK,KAAKgG,EAAE/F,GAAGgX,EAAE,CAAC,SAASkvU,KAAK,CAAC,SAASC,GAAGnmV,EAAE+F,GAAG,IAAIiR,EAAEqtU,KAAKt+U,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIkR,EAAED,EAAEoxT,cAAc,OAAG,OAAOnxT,GAAG,OAAOlR,GAAG69U,GAAG79U,EAAEkR,EAAE,IAAWA,EAAE,IAAGD,EAAEoxT,cAAc,CAACpoU,EAAE+F,GAAU/F,EAAC,CAC7Z,SAASomV,GAAGpmV,EAAE+F,GAAG,IAAIiR,EAAEqtU,KAAKt+U,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIkR,EAAED,EAAEoxT,cAAc,OAAG,OAAOnxT,GAAG,OAAOlR,GAAG69U,GAAG79U,EAAEkR,EAAE,IAAWA,EAAE,IAAGjX,EAAEA,IAAIgX,EAAEoxT,cAAc,CAACpoU,EAAE+F,GAAU/F,EAAC,CAAC,SAASqmV,GAAGrmV,EAAE+F,EAAEiR,GAAG,OAAG,KAAQ,GAAHssU,KAActjV,EAAEy/U,YAAYz/U,EAAEy/U,WAAU,EAAGX,IAAG,GAAI9+U,EAAEooU,cAAcpxT,IAAE69T,GAAG79T,EAAEjR,KAAKiR,EAAEk0T,KAAKn9S,GAAE8wT,OAAO7nU,EAAEupU,IAAIvpU,EAAEhX,EAAEy/U,WAAU,GAAW15U,EAAC,CAAC,SAASugV,GAAGtmV,EAAE+F,GAAG,IAAIiR,EAAE6W,GAAEA,GAAE,IAAI7W,GAAG,EAAEA,EAAEA,EAAE,EAAEhX,GAAE,GAAI,IAAIiX,EAAEosU,GAAG3V,WAAW2V,GAAG3V,WAAW,CAAC,EAAE,IAAI1tU,GAAE,GAAI+F,GAAG,CAAC,QAAQ8nB,GAAE7W,EAAEqsU,GAAG3V,WAAWz2T,CAAC,CAAC,CAAC,SAASsvU,KAAK,OAAOlC,KAAKjc,aAAa,CAC1d,SAASoe,GAAGxmV,EAAE+F,EAAEiR,GAAG,IAAIC,EAAE8pU,GAAG/gV,GAAkE,GAA/DgX,EAAE,CAACipU,KAAKhpU,EAAEjT,OAAOgT,EAAEytU,eAAc,EAAGC,WAAW,KAAK7lR,KAAK,MAAS4nR,GAAGzmV,GAAG0mV,GAAG3gV,EAAEiR,QAAQ,GAAiB,QAAdA,EAAEmoU,GAAGn/U,EAAE+F,EAAEiR,EAAEC,IAAY,CAAW+pU,GAAGhqU,EAAEhX,EAAEiX,EAAX6pU,MAAgB6F,GAAG3vU,EAAEjR,EAAEkR,EAAE,CAAC,CAC/K,SAASwuU,GAAGzlV,EAAE+F,EAAEiR,GAAG,IAAIC,EAAE8pU,GAAG/gV,GAAGxjB,EAAE,CAACyjW,KAAKhpU,EAAEjT,OAAOgT,EAAEytU,eAAc,EAAGC,WAAW,KAAK7lR,KAAK,MAAM,GAAG4nR,GAAGzmV,GAAG0mV,GAAG3gV,EAAEvpB,OAAO,CAAC,IAAIsC,EAAEkhB,EAAEgoU,UAAU,GAAG,IAAIhoU,EAAE6+U,QAAQ,OAAO//V,GAAG,IAAIA,EAAE+/V,QAAiC,QAAxB//V,EAAEinB,EAAEy+U,qBAA8B,IAAI,IAAI1kB,EAAE/5T,EAAE4+U,kBAAkBjsU,EAAE55B,EAAEghV,EAAE9oT,GAAqC,GAAlCx6B,EAAEioW,eAAc,EAAGjoW,EAAEkoW,WAAWhsU,EAAKm8T,GAAGn8T,EAAEonT,GAAG,CAAC,IAAI31R,EAAEpkC,EAAEq5U,YAA+E,OAAnE,OAAOj1S,GAAG3tD,EAAEqiF,KAAKriF,EAAE0iW,GAAGn5U,KAAKvpB,EAAEqiF,KAAK10B,EAAE00B,KAAK10B,EAAE00B,KAAKriF,QAAGupB,EAAEq5U,YAAY5iW,EAAQ,CAAC,CAAC,MAAMu1B,GAAG,CAAwB,QAAdiF,EAAEmoU,GAAGn/U,EAAE+F,EAAEvpB,EAAEy6B,MAAoB+pU,GAAGhqU,EAAEhX,EAAEiX,EAAbz6B,EAAEskW,MAAgB6F,GAAG3vU,EAAEjR,EAAEkR,GAAG,CAAC,CAC/c,SAASwvU,GAAGzmV,GAAG,IAAI+F,EAAE/F,EAAEgoU,UAAU,OAAOhoU,IAAI+tB,IAAG,OAAOhoB,GAAGA,IAAIgoB,EAAC,CAAC,SAAS24T,GAAG1mV,EAAE+F,GAAGy9U,GAAGD,IAAG,EAAG,IAAIvsU,EAAEhX,EAAE6/U,QAAQ,OAAO7oU,EAAEjR,EAAE84D,KAAK94D,GAAGA,EAAE84D,KAAK7nD,EAAE6nD,KAAK7nD,EAAE6nD,KAAK94D,GAAG/F,EAAE6/U,QAAQ95U,CAAC,CAAC,SAAS4gV,GAAG3mV,EAAE+F,EAAEiR,GAAG,GAAG,KAAO,QAAFA,GAAW,CAAC,IAAIC,EAAElR,EAAE84U,MAAwB7nU,GAAlBC,GAAGjX,EAAE2qU,aAAkB5kU,EAAE84U,MAAM7nU,EAAEs0T,GAAGtrU,EAAEgX,EAAE,CAAC,CAC9P,IAAIitU,GAAG,CAAC2C,YAAY7H,GAAGlvD,YAAY8zD,GAAE7hW,WAAW6hW,GAAEjmW,UAAUimW,GAAEzuD,oBAAoByuD,GAAEkD,mBAAmBlD,GAAE1/V,gBAAgB0/V,GAAE/oW,QAAQ+oW,GAAEmD,WAAWnD,GAAE3/V,OAAO2/V,GAAEhoW,SAASgoW,GAAEoD,cAAcpD,GAAEqD,iBAAiBrD,GAAEsD,cAActD,GAAEuD,iBAAiBvD,GAAEwD,qBAAqBxD,GAAEyD,MAAMzD,GAAE0D,0BAAyB,GAAIvD,GAAG,CAAC8C,YAAY7H,GAAGlvD,YAAY,SAAS7vR,EAAE+F,GAA4C,OAAzCo+U,KAAK/b,cAAc,CAACpoU,OAAE,IAAS+F,EAAE,KAAKA,GAAU/F,CAAC,EAAEle,WAAWi9V,GAAGrhW,UAAUmoW,GAAG3wD,oBAAoB,SAASl1R,EAAE+F,EAAEiR,GAA6C,OAA1CA,EAAE,OAAOA,QAAG,IAASA,EAAEA,EAAEt1B,OAAO,CAACse,IAAI,KAAY4lV,GAAG,QAC3f,EAAEI,GAAGjmV,KAAK,KAAKgG,EAAE/F,GAAGgX,EAAE,EAAE/yB,gBAAgB,SAAS+b,EAAE+F,GAAG,OAAO6/U,GAAG,QAAQ,EAAE5lV,EAAE+F,EAAE,EAAE8gV,mBAAmB,SAAS7mV,EAAE+F,GAAG,OAAO6/U,GAAG,EAAE,EAAE5lV,EAAE+F,EAAE,EAAEnrB,QAAQ,SAASolB,EAAE+F,GAAG,IAAIiR,EAAEmtU,KAAqD,OAAhDp+U,OAAE,IAASA,EAAE,KAAKA,EAAE/F,EAAEA,IAAIgX,EAAEoxT,cAAc,CAACpoU,EAAE+F,GAAU/F,CAAC,EAAE8mV,WAAW,SAAS9mV,EAAE+F,EAAEiR,GAAG,IAAIC,EAAEktU,KAAkM,OAA7Lp+U,OAAE,IAASiR,EAAEA,EAAEjR,GAAGA,EAAEkR,EAAEmxT,cAAcnxT,EAAEwoU,UAAU15U,EAAE/F,EAAE,CAAC6/U,QAAQ,KAAKT,YAAY,KAAKP,MAAM,EAAEjvD,SAAS,KAAK40D,oBAAoBxkV,EAAE2kV,kBAAkB5+U,GAAGkR,EAAE+0R,MAAMhsS,EAAEA,EAAEA,EAAE4vR,SAAS42D,GAAGzmV,KAAK,KAAKguB,GAAE/tB,GAAS,CAACiX,EAAEmxT,cAAcpoU,EAAE,EAAEhc,OAAO,SAASgc,GAC3d,OAAdA,EAAE,CAAC9b,QAAQ8b,GAAhBmkV,KAA4B/b,cAAcpoU,CAAC,EAAErkB,SAAS6pW,GAAGuB,cAAcb,GAAGc,iBAAiB,SAAShnV,GAAG,OAAOmkV,KAAK/b,cAAcpoU,CAAC,EAAEinV,cAAc,WAAW,IAAIjnV,EAAEwlV,IAAG,GAAIz/U,EAAE/F,EAAE,GAA6C,OAA1CA,EAAEsmV,GAAGvmV,KAAK,KAAKC,EAAE,IAAImkV,KAAK/b,cAAcpoU,EAAQ,CAAC+F,EAAE/F,EAAE,EAAEknV,iBAAiB,WAAW,EAAEC,qBAAqB,SAASnnV,EAAE+F,EAAEiR,GAAG,IAAIC,EAAE8W,GAAEvxC,EAAE2nW,KAAK,GAAGrH,GAAE,CAAC,QAAG,IAAS9lU,EAAE,MAAMj1B,MAAM69B,EAAE,MAAM5I,EAAEA,GAAG,KAAK,CAAO,GAANA,EAAEjR,IAAO,OAAOm/U,GAAE,MAAMnjW,MAAM69B,EAAE,MAAM,KAAQ,GAAH0jU,KAAQ6B,GAAGluU,EAAElR,EAAEiR,EAAE,CAACx6B,EAAE4rV,cAAcpxT,EAAE,IAAIl4B,EAAE,CAACR,MAAM04B,EAAEguU,YAAYj/U,GACvZ,OAD0ZvpB,EAAEwvT,MAAMltT,EAAE+mW,GAAGd,GAAGhlV,KAAK,KAAKkX,EACpfn4B,EAAEkhB,GAAG,CAACA,IAAIiX,EAAEixT,OAAO,KAAKv0P,GAAG,EAAEsxQ,GAAGllV,KAAK,KAAKkX,EAAEn4B,EAAEk4B,EAAEjR,QAAG,EAAO,MAAaiR,CAAC,EAAEowU,MAAM,WAAW,IAAIpnV,EAAEmkV,KAAKp+U,EAAEm/U,GAAEoC,iBAAiB,GAAGxK,GAAE,CAAC,IAAI9lU,EAAEulU,GAAkDx2U,EAAE,IAAIA,EAAE,KAA9CiR,GAAHslU,KAAU,GAAG,GAAGpS,GAAhBoS,IAAsB,IAAIngW,SAAS,IAAI66B,GAAuB,GAAPA,EAAEysU,QAAW19U,GAAG,IAAIiR,EAAE76B,SAAS,KAAK4pB,GAAG,GAAG,MAAaA,EAAE,IAAIA,EAAE,KAAfiR,EAAE0sU,MAAmBvnW,SAAS,IAAI,IAAI,OAAO6jB,EAAEooU,cAAcriU,CAAC,EAAEshV,0BAAyB,GAAItD,GAAG,CAAC6C,YAAY7H,GAAGlvD,YAAYs2D,GAAGrkW,WAAWi9V,GAAGrhW,UAAUonW,GAAG5vD,oBAAoB+wD,GAAGY,mBAAmBf,GAAG7hW,gBAAgB8hW,GAAGnrW,QAAQwrW,GAAGU,WAAWvC,GAAGvgW,OAAO2hW,GAAGhqW,SAAS,WAAW,OAAO4oW,GAAGD,GAAG,EACrhByC,cAAcb,GAAGc,iBAAiB,SAAShnV,GAAc,OAAOqmV,GAAZhC,KAAiB9nD,GAAE6rC,cAAcpoU,EAAE,EAAEinV,cAAc,WAAgD,MAAM,CAArC1C,GAAGD,IAAI,GAAKD,KAAKjc,cAAyB,EAAE8e,iBAAiBrC,GAAGsC,qBAAqBvvU,GAAGwvU,MAAMb,GAAGc,0BAAyB,GAAIrD,GAAG,CAAC4C,YAAY7H,GAAGlvD,YAAYs2D,GAAGrkW,WAAWi9V,GAAGrhW,UAAUonW,GAAG5vD,oBAAoB+wD,GAAGY,mBAAmBf,GAAG7hW,gBAAgB8hW,GAAGnrW,QAAQwrW,GAAGU,WAAWlC,GAAG5gW,OAAO2hW,GAAGhqW,SAAS,WAAW,OAAOipW,GAAGN,GAAG,EAAEyC,cAAcb,GAAGc,iBAAiB,SAAShnV,GAAG,IAAI+F,EAAEs+U,KAAK,OAAO,OACzf9nD,GAAEx2R,EAAEqiU,cAAcpoU,EAAEqmV,GAAGtgV,EAAEw2R,GAAE6rC,cAAcpoU,EAAE,EAAEinV,cAAc,WAAgD,MAAM,CAArCrC,GAAGN,IAAI,GAAKD,KAAKjc,cAAyB,EAAE8e,iBAAiBrC,GAAGsC,qBAAqBvvU,GAAGwvU,MAAMb,GAAGc,0BAAyB,GAAI,SAASE,GAAGvnV,EAAE+F,GAAG,IAAI,IAAIiR,EAAE,GAAGC,EAAElR,EAAE,GAAGiR,GAAGkrT,EAAGjrT,GAAGA,EAAEA,EAAEgxT,aAAahxT,GAAG,IAAIz6B,EAAEw6B,CAAC,CAAC,MAAMl4B,GAAGtC,EAAE,6BAA6BsC,EAAEuV,QAAQ,KAAKvV,EAAEyyB,KAAK,CAAC,MAAM,CAACjzB,MAAM0hB,EAAE9Y,OAAO6e,EAAEwL,MAAM/0B,EAAEgrW,OAAO,KAAK,CAAC,SAASC,GAAGznV,EAAE+F,EAAEiR,GAAG,MAAM,CAAC14B,MAAM0hB,EAAE9Y,OAAO,KAAKqqB,MAAM,MAAMyF,EAAEA,EAAE,KAAKwwU,OAAO,MAAMzhV,EAAEA,EAAE,KAAK,CACzd,SAAS2hV,GAAG1nV,EAAE+F,GAAG,IAAIzD,QAAQngB,MAAM4jB,EAAEznB,MAAM,CAAC,MAAM04B,GAAG/F,YAAW,WAAW,MAAM+F,CAAE,GAAE,CAAC,CAAC,IAAI2wU,GAAG,oBAAoBt+D,QAAQA,QAAQ9oR,IAAI,SAASqnV,GAAG5nV,EAAE+F,EAAEiR,IAAGA,EAAEypR,IAAI,EAAEzpR,IAAKs0C,IAAI,EAAEt0C,EAAEohQ,QAAQ,CAACr0R,QAAQ,MAAM,IAAIkzB,EAAElR,EAAEznB,MAAsD,OAAhD04B,EAAEyb,SAAS,WAAWo1T,KAAKA,IAAG,EAAGC,GAAG7wU,GAAGywU,GAAG1nV,EAAE+F,EAAE,EAASiR,CAAC,CAC3Q,SAAS+wU,GAAG/nV,EAAE+F,EAAEiR,IAAGA,EAAEypR,IAAI,EAAEzpR,IAAKs0C,IAAI,EAAE,IAAIr0C,EAAEjX,EAAE3kB,KAAKshT,yBAAyB,GAAG,oBAAoB1lR,EAAE,CAAC,IAAIz6B,EAAEupB,EAAEznB,MAAM04B,EAAEohQ,QAAQ,WAAW,OAAOnhQ,EAAEz6B,EAAE,EAAEw6B,EAAEyb,SAAS,WAAWi1T,GAAG1nV,EAAE+F,EAAE,CAAC,CAAC,IAAIjnB,EAAEkhB,EAAE6mU,UAA8O,OAApO,OAAO/nV,GAAG,oBAAoBA,EAAEkpW,oBAAoBhxU,EAAEyb,SAAS,WAAWi1T,GAAG1nV,EAAE+F,GAAG,oBAAoBkR,IAAI,OAAOgxU,GAAGA,GAAG,IAAI3iV,IAAI,CAACvE,OAAOknV,GAAG/xT,IAAIn1B,OAAO,IAAIiW,EAAEjR,EAAEwL,MAAMxQ,KAAKinV,kBAAkBjiV,EAAEznB,MAAM,CAAC4pW,eAAe,OAAOlxU,EAAEA,EAAE,IAAI,GAAUA,CAAC,CACnb,SAASmxU,GAAGnoV,EAAE+F,EAAEiR,GAAG,IAAIC,EAAEjX,EAAEooV,UAAU,GAAG,OAAOnxU,EAAE,CAACA,EAAEjX,EAAEooV,UAAU,IAAIT,GAAG,IAAInrW,EAAE,IAAI8oB,IAAI2R,EAAErW,IAAImF,EAAEvpB,EAAE,WAAiB,KAAXA,EAAEy6B,EAAEx1B,IAAIskB,MAAgBvpB,EAAE,IAAI8oB,IAAI2R,EAAErW,IAAImF,EAAEvpB,IAAIA,EAAEmkB,IAAIqW,KAAKx6B,EAAE05C,IAAIlf,GAAGhX,EAAEqoV,GAAGtoV,KAAK,KAAKC,EAAE+F,EAAEiR,GAAGjR,EAAE7d,KAAK8X,EAAEA,GAAG,CAAC,SAASsoV,GAAGtoV,GAAG,EAAE,CAAC,IAAI+F,EAA4E,IAAvEA,EAAE,KAAK/F,EAAEsrD,OAAsBvlD,EAAE,QAApBA,EAAE/F,EAAEooU,gBAAyB,OAAOriU,EAAEsiU,YAAuBtiU,EAAE,OAAO/F,EAAEA,EAAEA,EAAEioU,MAAM,OAAO,OAAOjoU,GAAG,OAAO,IAAI,CAChW,SAASuoV,GAAGvoV,EAAE+F,EAAEiR,EAAEC,EAAEz6B,GAAG,OAAG,KAAY,EAAPwjB,EAAE7V,OAAe6V,IAAI+F,EAAE/F,EAAEkoU,OAAO,OAAOloU,EAAEkoU,OAAO,IAAIlxT,EAAEkxT,OAAO,OAAOlxT,EAAEkxT,QAAQ,MAAM,IAAIlxT,EAAEs0C,MAAM,OAAOt0C,EAAEgxT,UAAUhxT,EAAEs0C,IAAI,KAAIvlD,EAAE06R,IAAI,EAAE,IAAKn1O,IAAI,EAAE40R,GAAGlpU,EAAEjR,EAAE,KAAKiR,EAAE6nU,OAAO,GAAG7+U,IAAEA,EAAEkoU,OAAO,MAAMloU,EAAE6+U,MAAMriW,EAASwjB,EAAC,CAAC,IAAIwoV,GAAG5nB,EAAG6nB,kBAAkB3J,IAAG,EAAG,SAAS4J,GAAG1oV,EAAE+F,EAAEiR,EAAEC,GAAGlR,EAAEoL,MAAM,OAAOnR,EAAEmiV,GAAGp8U,EAAE,KAAKiR,EAAEC,GAAGirU,GAAGn8U,EAAE/F,EAAEmR,MAAM6F,EAAEC,EAAE,CACnV,SAAS0xU,GAAG3oV,EAAE+F,EAAEiR,EAAEC,EAAEz6B,GAAGw6B,EAAEA,EAAEq1B,OAAO,IAAIvtD,EAAEinB,EAAE3hB,IAAqC,OAAjCs6V,GAAG34U,EAAEvpB,GAAGy6B,EAAE4sU,GAAG7jV,EAAE+F,EAAEiR,EAAEC,EAAEn4B,EAAEtC,GAAGw6B,EAAEktU,KAAQ,OAAOlkV,GAAI8+U,IAA2EhC,IAAG9lU,GAAG0lU,GAAG32U,GAAGA,EAAEmiU,OAAO,EAAEwgB,GAAG1oV,EAAE+F,EAAEkR,EAAEz6B,GAAUupB,EAAEoL,QAA7GpL,EAAEy5U,YAAYx/U,EAAEw/U,YAAYz5U,EAAEmiU,QAAQ,KAAKloU,EAAE6+U,QAAQriW,EAAEosW,GAAG5oV,EAAE+F,EAAEvpB,GAAoD,CACzN,SAASqsW,GAAG7oV,EAAE+F,EAAEiR,EAAEC,EAAEz6B,GAAG,GAAG,OAAOwjB,EAAE,CAAC,IAAIlhB,EAAEk4B,EAAE37B,KAAK,MAAG,oBAAoByD,GAAIgqW,GAAGhqW,SAAI,IAASA,EAAEoD,cAAc,OAAO80B,EAAE8oD,cAAS,IAAS9oD,EAAE90B,eAAoD8d,EAAE+hV,GAAG/qU,EAAE37B,KAAK,KAAK47B,EAAElR,EAAEA,EAAE5b,KAAK3N,IAAK4H,IAAI2hB,EAAE3hB,IAAI4b,EAAEioU,OAAOliU,EAASA,EAAEoL,MAAMnR,IAArG+F,EAAEulD,IAAI,GAAGvlD,EAAE1qB,KAAKyD,EAAEiqW,GAAG/oV,EAAE+F,EAAEjnB,EAAEm4B,EAAEz6B,GAAyE,CAAW,GAAVsC,EAAEkhB,EAAEmR,MAAS,KAAKnR,EAAE6+U,MAAMriW,GAAG,CAAC,IAAIsjV,EAAEhhV,EAAE6+V,cAA0C,IAAhB3mU,EAAE,QAAdA,EAAEA,EAAE8oD,SAAmB9oD,EAAE89T,IAAQhV,EAAE7oT,IAAIjX,EAAE5b,MAAM2hB,EAAE3hB,IAAI,OAAOwkW,GAAG5oV,EAAE+F,EAAEvpB,EAAE,CAA6C,OAA5CupB,EAAEmiU,OAAO,GAAEloU,EAAE6hV,GAAG/iW,EAAEm4B,IAAK7yB,IAAI2hB,EAAE3hB,IAAI4b,EAAEioU,OAAOliU,EAASA,EAAEoL,MAAMnR,CAAC,CAC1b,SAAS+oV,GAAG/oV,EAAE+F,EAAEiR,EAAEC,EAAEz6B,GAAG,GAAG,OAAOwjB,EAAE,CAAC,IAAIlhB,EAAEkhB,EAAE29U,cAAc,GAAG7I,GAAGh2V,EAAEm4B,IAAIjX,EAAE5b,MAAM2hB,EAAE3hB,IAAI,IAAG06V,IAAG,EAAG/4U,EAAEq3U,aAAanmU,EAAEn4B,EAAE,KAAKkhB,EAAE6+U,MAAMriW,GAAsC,OAAOupB,EAAE84U,MAAM7+U,EAAE6+U,MAAM+J,GAAG5oV,EAAE+F,EAAEvpB,GAAjE,KAAa,OAARwjB,EAAEkoU,SAAgB4W,IAAG,EAAyC,EAAC,OAAOkK,GAAGhpV,EAAE+F,EAAEiR,EAAEC,EAAEz6B,EAAE,CACxN,SAASysW,GAAGjpV,EAAE+F,EAAEiR,GAAG,IAAIC,EAAElR,EAAEq3U,aAAa5gW,EAAEy6B,EAAEt+B,SAASmG,EAAE,OAAOkhB,EAAEA,EAAEooU,cAAc,KAAK,GAAG,WAAWnxT,EAAE9sB,KAAK,GAAG,KAAY,EAAP4b,EAAE5b,MAAQ4b,EAAEqiU,cAAc,CAAC8gB,UAAU,EAAEC,UAAU,KAAKC,YAAY,MAAMxO,GAAEyO,GAAGC,IAAIA,IAAItyU,MAAM,CAAC,GAAG,KAAO,WAAFA,GAAc,OAAOhX,EAAE,OAAOlhB,EAAEA,EAAEoqW,UAAUlyU,EAAEA,EAAEjR,EAAE84U,MAAM94U,EAAE04U,WAAW,WAAW14U,EAAEqiU,cAAc,CAAC8gB,UAAUlpV,EAAEmpV,UAAU,KAAKC,YAAY,MAAMrjV,EAAEy5U,YAAY,KAAK5E,GAAEyO,GAAGC,IAAIA,IAAItpV,EAAE,KAAK+F,EAAEqiU,cAAc,CAAC8gB,UAAU,EAAEC,UAAU,KAAKC,YAAY,MAAMnyU,EAAE,OAAOn4B,EAAEA,EAAEoqW,UAAUlyU,EAAE4jU,GAAEyO,GAAGC,IAAIA,IAAIryU,CAAC,MAAM,OACtfn4B,GAAGm4B,EAAEn4B,EAAEoqW,UAAUlyU,EAAEjR,EAAEqiU,cAAc,MAAMnxT,EAAED,EAAE4jU,GAAEyO,GAAGC,IAAIA,IAAIryU,EAAc,OAAZyxU,GAAG1oV,EAAE+F,EAAEvpB,EAAEw6B,GAAUjR,EAAEoL,KAAK,CAAC,SAASo4U,GAAGvpV,EAAE+F,GAAG,IAAIiR,EAAEjR,EAAE3hB,KAAO,OAAO4b,GAAG,OAAOgX,GAAG,OAAOhX,GAAGA,EAAE5b,MAAM4yB,KAAEjR,EAAEmiU,OAAO,IAAIniU,EAAEmiU,OAAO,QAAO,CAAC,SAAS8gB,GAAGhpV,EAAE+F,EAAEiR,EAAEC,EAAEz6B,GAAG,IAAIsC,EAAEq8V,GAAGnkU,GAAG+jU,GAAGpiU,GAAEz0B,QAAmD,OAA3CpF,EAAEk8V,GAAGj1U,EAAEjnB,GAAG4/V,GAAG34U,EAAEvpB,GAAGw6B,EAAE6sU,GAAG7jV,EAAE+F,EAAEiR,EAAEC,EAAEn4B,EAAEtC,GAAGy6B,EAAEitU,KAAQ,OAAOlkV,GAAI8+U,IAA2EhC,IAAG7lU,GAAGylU,GAAG32U,GAAGA,EAAEmiU,OAAO,EAAEwgB,GAAG1oV,EAAE+F,EAAEiR,EAAEx6B,GAAUupB,EAAEoL,QAA7GpL,EAAEy5U,YAAYx/U,EAAEw/U,YAAYz5U,EAAEmiU,QAAQ,KAAKloU,EAAE6+U,QAAQriW,EAAEosW,GAAG5oV,EAAE+F,EAAEvpB,GAAoD,CACla,SAASgtW,GAAGxpV,EAAE+F,EAAEiR,EAAEC,EAAEz6B,GAAG,GAAG2+V,GAAGnkU,GAAG,CAAC,IAAIl4B,GAAE,EAAGy8V,GAAGx1U,EAAE,MAAMjnB,GAAE,EAAW,GAAR4/V,GAAG34U,EAAEvpB,GAAM,OAAOupB,EAAE8gU,UAAU4iB,GAAGzpV,EAAE+F,GAAGq7U,GAAGr7U,EAAEiR,EAAEC,GAAGqqU,GAAGv7U,EAAEiR,EAAEC,EAAEz6B,GAAGy6B,GAAE,OAAQ,GAAG,OAAOjX,EAAE,CAAC,IAAI8/T,EAAE/5T,EAAE8gU,UAAUnuT,EAAE3S,EAAE43U,cAAc7d,EAAE58U,MAAMw1B,EAAE,IAAIyxB,EAAE21R,EAAEj+U,QAAQkwB,EAAEiF,EAAE0lR,YAAY,kBAAkB3qR,GAAG,OAAOA,EAAEA,EAAEgtU,GAAGhtU,GAAyBA,EAAEipU,GAAGj1U,EAA1BgM,EAAEopU,GAAGnkU,GAAG+jU,GAAGpiU,GAAEz0B,SAAmB,IAAIu0B,EAAEzB,EAAEonQ,yBAAyBpsL,EAAE,oBAAoBv5E,GAAG,oBAAoBqnT,EAAEyhB,wBAAwBvvP,GAAG,oBAAoB8tO,EAAE9hD,kCAAkC,oBAAoB8hD,EAAEjiD,4BAC1dnlQ,IAAIzB,GAAGkzB,IAAIp4B,IAAIsvU,GAAGt7U,EAAE+5T,EAAE7oT,EAAElF,GAAGutU,IAAG,EAAG,IAAI13V,EAAEme,EAAEqiU,cAActI,EAAE94U,MAAMY,EAAE04V,GAAGv6U,EAAEkR,EAAE6oT,EAAEtjV,GAAG2tD,EAAEpkC,EAAEqiU,cAAc1vT,IAAIzB,GAAGrvB,IAAIuiD,GAAG2wS,GAAG52V,SAASo7V,IAAI,oBAAoB7mU,IAAIioU,GAAG36U,EAAEiR,EAAEyB,EAAExB,GAAGkzB,EAAEpkC,EAAEqiU,gBAAgB1vT,EAAE4mU,IAAI4B,GAAGn7U,EAAEiR,EAAE0B,EAAEzB,EAAErvB,EAAEuiD,EAAEp4B,KAAKigF,GAAG,oBAAoB8tO,EAAE/hD,2BAA2B,oBAAoB+hD,EAAEliD,qBAAqB,oBAAoBkiD,EAAEliD,oBAAoBkiD,EAAEliD,qBAAqB,oBAAoBkiD,EAAE/hD,2BAA2B+hD,EAAE/hD,6BAA6B,oBAAoB+hD,EAAE5jE,oBAAoBn2P,EAAEmiU,OAAO,WAClf,oBAAoBpI,EAAE5jE,oBAAoBn2P,EAAEmiU,OAAO,SAASniU,EAAE43U,cAAc1mU,EAAElR,EAAEqiU,cAAcj+R,GAAG21R,EAAE58U,MAAM+zB,EAAE6oT,EAAE94U,MAAMmjD,EAAE21R,EAAEj+U,QAAQkwB,EAAEkF,EAAEyB,IAAI,oBAAoBonT,EAAE5jE,oBAAoBn2P,EAAEmiU,OAAO,SAASjxT,GAAE,EAAG,KAAK,CAAC6oT,EAAE/5T,EAAE8gU,UAAUkZ,GAAG//U,EAAE+F,GAAG2S,EAAE3S,EAAE43U,cAAc5rU,EAAEhM,EAAE1qB,OAAO0qB,EAAE+yT,YAAYpgT,EAAEslU,GAAGj4U,EAAE1qB,KAAKq9B,GAAGonT,EAAE58U,MAAM6uB,EAAEigF,EAAEjsF,EAAEq3U,aAAax1V,EAAEk4U,EAAEj+U,QAAwB,kBAAhBsoD,EAAEnzB,EAAE0lR,cAAiC,OAAOvyP,EAAEA,EAAE40S,GAAG50S,GAAyBA,EAAE6wS,GAAGj1U,EAA1BokC,EAAEgxS,GAAGnkU,GAAG+jU,GAAGpiU,GAAEz0B,SAAmB,IAAI+Q,EAAE+hB,EAAEonQ,0BAA0B3lQ,EAAE,oBAAoBxjB,GAAG,oBAAoB6qU,EAAEyhB,0BAC9e,oBAAoBzhB,EAAE9hD,kCAAkC,oBAAoB8hD,EAAEjiD,4BAA4BnlQ,IAAIs5E,GAAGpqG,IAAIuiD,IAAIk3S,GAAGt7U,EAAE+5T,EAAE7oT,EAAEkzB,GAAGm1S,IAAG,EAAG13V,EAAEme,EAAEqiU,cAActI,EAAE94U,MAAMY,EAAE04V,GAAGv6U,EAAEkR,EAAE6oT,EAAEtjV,GAAG,IAAI0B,EAAE6nB,EAAEqiU,cAAc1vT,IAAIs5E,GAAGpqG,IAAI1J,GAAG48V,GAAG52V,SAASo7V,IAAI,oBAAoBrqV,IAAIyrV,GAAG36U,EAAEiR,EAAE/hB,EAAEgiB,GAAG/4B,EAAE6nB,EAAEqiU,gBAAgBr2T,EAAEutU,IAAI4B,GAAGn7U,EAAEiR,EAAEjF,EAAEkF,EAAErvB,EAAE1J,EAAEisD,KAAI,IAAK1xB,GAAG,oBAAoBqnT,EAAE7hD,4BAA4B,oBAAoB6hD,EAAEhiD,sBAAsB,oBAAoBgiD,EAAEhiD,qBAAqBgiD,EAAEhiD,oBAAoB7mQ,EAAE/4B,EAAEisD,GAAG,oBAAoB21R,EAAE7hD,4BAC5f6hD,EAAE7hD,2BAA2BhnQ,EAAE/4B,EAAEisD,IAAI,oBAAoB21R,EAAExjE,qBAAqBv2P,EAAEmiU,OAAO,GAAG,oBAAoBpI,EAAEyhB,0BAA0Bx7U,EAAEmiU,OAAO,QAAQ,oBAAoBpI,EAAExjE,oBAAoB5jP,IAAI1Y,EAAE29U,eAAe/1V,IAAIoY,EAAEooU,gBAAgBriU,EAAEmiU,OAAO,GAAG,oBAAoBpI,EAAEyhB,yBAAyB7oU,IAAI1Y,EAAE29U,eAAe/1V,IAAIoY,EAAEooU,gBAAgBriU,EAAEmiU,OAAO,MAAMniU,EAAE43U,cAAc1mU,EAAElR,EAAEqiU,cAAclqV,GAAG4hV,EAAE58U,MAAM+zB,EAAE6oT,EAAE94U,MAAM9I,EAAE4hV,EAAEj+U,QAAQsoD,EAAElzB,EAAElF,IAAI,oBAAoB+tT,EAAExjE,oBAAoB5jP,IAAI1Y,EAAE29U,eAAe/1V,IACjfoY,EAAEooU,gBAAgBriU,EAAEmiU,OAAO,GAAG,oBAAoBpI,EAAEyhB,yBAAyB7oU,IAAI1Y,EAAE29U,eAAe/1V,IAAIoY,EAAEooU,gBAAgBriU,EAAEmiU,OAAO,MAAMjxT,GAAE,EAAG,CAAC,OAAOyyU,GAAG1pV,EAAE+F,EAAEiR,EAAEC,EAAEn4B,EAAEtC,EAAE,CACnK,SAASktW,GAAG1pV,EAAE+F,EAAEiR,EAAEC,EAAEz6B,EAAEsC,GAAGyqW,GAAGvpV,EAAE+F,GAAG,IAAI+5T,EAAE,KAAa,IAAR/5T,EAAEmiU,OAAW,IAAIjxT,IAAI6oT,EAAE,OAAOtjV,GAAGi/V,GAAG11U,EAAEiR,GAAE,GAAI4xU,GAAG5oV,EAAE+F,EAAEjnB,GAAGm4B,EAAElR,EAAE8gU,UAAU2hB,GAAGtkW,QAAQ6hB,EAAE,IAAI2S,EAAEonT,GAAG,oBAAoB9oT,EAAE2lR,yBAAyB,KAAK1lR,EAAEo1B,SAAwI,OAA/HtmC,EAAEmiU,OAAO,EAAE,OAAOloU,GAAG8/T,GAAG/5T,EAAEoL,MAAM+wU,GAAGn8U,EAAE/F,EAAEmR,MAAM,KAAKryB,GAAGinB,EAAEoL,MAAM+wU,GAAGn8U,EAAE,KAAK2S,EAAE55B,IAAI4pW,GAAG1oV,EAAE+F,EAAE2S,EAAE55B,GAAGinB,EAAEqiU,cAAcnxT,EAAEjwB,MAAMxK,GAAGi/V,GAAG11U,EAAEiR,GAAE,GAAWjR,EAAEoL,KAAK,CAAC,SAASw4U,GAAG3pV,GAAG,IAAI+F,EAAE/F,EAAE6mU,UAAU9gU,EAAE6jV,eAAevO,GAAGr7U,EAAE+F,EAAE6jV,eAAe7jV,EAAE6jV,iBAAiB7jV,EAAElkB,SAASkkB,EAAElkB,SAASw5V,GAAGr7U,EAAE+F,EAAElkB,SAAQ,GAAI4gW,GAAGziV,EAAE+F,EAAEqwO,cAAc,CAC5e,SAASyzG,GAAG7pV,EAAE+F,EAAEiR,EAAEC,EAAEz6B,GAAuC,OAApCqhW,KAAKC,GAAGthW,GAAGupB,EAAEmiU,OAAO,IAAIwgB,GAAG1oV,EAAE+F,EAAEiR,EAAEC,GAAUlR,EAAEoL,KAAK,CAAC,IAaqL24U,GAAGC,GAAGC,GAAGC,GAb1LC,GAAG,CAAC7hB,WAAW,KAAKgV,YAAY,KAAKC,UAAU,GAAG,SAAS6M,GAAGnqV,GAAG,MAAM,CAACkpV,UAAUlpV,EAAEmpV,UAAU,KAAKC,YAAY,KAAK,CAClM,SAASgB,GAAGpqV,EAAE+F,EAAEiR,GAAG,IAA0D0B,EAAtDzB,EAAElR,EAAEq3U,aAAa5gW,EAAEqmW,GAAE3+V,QAAQpF,GAAE,EAAGghV,EAAE,KAAa,IAAR/5T,EAAEmiU,OAAqJ,IAAvIxvT,EAAEonT,KAAKpnT,GAAE,OAAO1Y,GAAG,OAAOA,EAAEooU,gBAAiB,KAAO,EAAF5rV,IAASk8B,GAAE55B,GAAE,EAAGinB,EAAEmiU,QAAQ,KAAY,OAAOloU,GAAG,OAAOA,EAAEooU,gBAAc5rV,GAAG,GAAEo+V,GAAEiI,GAAI,EAAFrmW,GAAQ,OAAOwjB,EAA2B,OAAxBw9U,GAAGz3U,GAAwB,QAArB/F,EAAE+F,EAAEqiU,gBAA2C,QAAfpoU,EAAEA,EAAEqoU,aAA4B,KAAY,EAAPtiU,EAAE5b,MAAQ4b,EAAE84U,MAAM,EAAE,OAAO7+U,EAAEpZ,KAAKmf,EAAE84U,MAAM,EAAE94U,EAAE84U,MAAM,WAAW,OAAK/e,EAAE7oT,EAAEt+B,SAASqnB,EAAEiX,EAAEozU,SAAgBvrW,GAAGm4B,EAAElR,EAAE5b,KAAKrL,EAAEinB,EAAEoL,MAAM2uT,EAAE,CAAC31U,KAAK,SAASxR,SAASmnV,GAAG,KAAO,EAAF7oT,IAAM,OAAOn4B,GAAGA,EAAE2/V,WAAW,EAAE3/V,EAAEs+V,aAC7etd,GAAGhhV,EAAEwrW,GAAGxqB,EAAE7oT,EAAE,EAAE,MAAMjX,EAAEiiV,GAAGjiV,EAAEiX,EAAED,EAAE,MAAMl4B,EAAEmpV,OAAOliU,EAAE/F,EAAEioU,OAAOliU,EAAEjnB,EAAE+xO,QAAQ7wN,EAAE+F,EAAEoL,MAAMryB,EAAEinB,EAAEoL,MAAMi3T,cAAc+hB,GAAGnzU,GAAGjR,EAAEqiU,cAAc8hB,GAAGlqV,GAAGuqV,GAAGxkV,EAAE+5T,IAAqB,GAAG,QAArBtjV,EAAEwjB,EAAEooU,gBAA2C,QAAf1vT,EAAEl8B,EAAE6rV,YAAqB,OAGpM,SAAYroU,EAAE+F,EAAEiR,EAAEC,EAAEz6B,EAAEsC,EAAEghV,GAAG,GAAG9oT,EAAG,OAAW,IAARjR,EAAEmiU,OAAiBniU,EAAEmiU,QAAQ,IAAwBsiB,GAAGxqV,EAAE+F,EAAE+5T,EAA3B7oT,EAAEwwU,GAAG1lW,MAAM69B,EAAE,SAAsB,OAAO7Z,EAAEqiU,eAAqBriU,EAAEoL,MAAMnR,EAAEmR,MAAMpL,EAAEmiU,OAAO,IAAI,OAAKppV,EAAEm4B,EAAEozU,SAAS7tW,EAAEupB,EAAE5b,KAAK8sB,EAAEqzU,GAAG,CAACngW,KAAK,UAAUxR,SAASs+B,EAAEt+B,UAAU6D,EAAE,EAAE,OAAMsC,EAAEmjW,GAAGnjW,EAAEtC,EAAEsjV,EAAE,OAAQoI,OAAO,EAAEjxT,EAAEgxT,OAAOliU,EAAEjnB,EAAEmpV,OAAOliU,EAAEkR,EAAE45M,QAAQ/xO,EAAEinB,EAAEoL,MAAM8F,EAAE,KAAY,EAAPlR,EAAE5b,OAAS+3V,GAAGn8U,EAAE/F,EAAEmR,MAAM,KAAK2uT,GAAG/5T,EAAEoL,MAAMi3T,cAAc+hB,GAAGrqB,GAAG/5T,EAAEqiU,cAAc8hB,GAAUprW,GAAE,GAAG,KAAY,EAAPinB,EAAE5b,MAAQ,OAAOqgW,GAAGxqV,EAAE+F,EAAE+5T,EAAE,MAAM,GAAG,OAAOtjV,EAAEoK,KAAK,CAChd,GADidqwB,EAAEz6B,EAAEuwR,aAAavwR,EAAEuwR,YAAY09E,QAC3e,IAAI/xU,EAAEzB,EAAEyzU,KAA0C,OAArCzzU,EAAEyB,EAA0C8xU,GAAGxqV,EAAE+F,EAAE+5T,EAA/B7oT,EAAEwwU,GAAlB3oW,EAAEiD,MAAM69B,EAAE,MAAa3I,OAAE,GAA0B,CAAwB,GAAvByB,EAAE,KAAKonT,EAAE9/T,EAAEy+U,YAAeK,IAAIpmU,EAAE,CAAK,GAAG,QAAPzB,EAAEiuU,IAAc,CAAC,OAAOplB,GAAGA,GAAG,KAAK,EAAEtjV,EAAE,EAAE,MAAM,KAAK,GAAGA,EAAE,EAAE,MAAM,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,SAAS,KAAK,SAAS,KAAK,SAASA,EAAE,GAAG,MAAM,KAAK,UAAUA,EAAE,UAAU,MAAM,QAAQA,EAAE,EAChd,KADkdA,EAAE,KAAKA,GAAGy6B,EAAE2zT,eAAe9K,IAAI,EAAEtjV,IAC5eA,IAAIsC,EAAEw+V,YAAYx+V,EAAEw+V,UAAU9gW,EAAE6iW,GAAGr/U,EAAExjB,GAAGwkW,GAAG/pU,EAAEjX,EAAExjB,GAAG,GAAG,CAA0B,OAAzBmuW,KAAgCH,GAAGxqV,EAAE+F,EAAE+5T,EAAlC7oT,EAAEwwU,GAAG1lW,MAAM69B,EAAE,OAAyB,CAAC,MAAG,OAAOpjC,EAAEoK,MAAYmf,EAAEmiU,OAAO,IAAIniU,EAAEoL,MAAMnR,EAAEmR,MAAMpL,EAAE6kV,GAAG7qV,KAAK,KAAKC,GAAGxjB,EAAEquW,YAAY9kV,EAAE,OAAK/F,EAAElhB,EAAEu+V,YAAYR,GAAG3C,GAAG19V,EAAEuwR,aAAa6vE,GAAG72U,EAAE+2U,IAAE,EAAGC,GAAG,KAAK,OAAO/8U,IAAIm8U,GAAGC,MAAME,GAAGH,GAAGC,MAAMG,GAAGJ,GAAGC,MAAMC,GAAGC,GAAGt8U,EAAEra,GAAG42V,GAAGv8U,EAAE83C,SAASukS,GAAGt2U,GAAGA,EAAEwkV,GAAGxkV,EAAEkR,EAAEt+B,UAAUotB,EAAEmiU,OAAO,KAAYniU,EAAC,CALrK+kV,CAAG9qV,EAAE+F,EAAE+5T,EAAE7oT,EAAEyB,EAAEl8B,EAAEw6B,GAAG,GAAGl4B,EAAE,CAACA,EAAEm4B,EAAEozU,SAASvqB,EAAE/5T,EAAE5b,KAAeuuB,GAAVl8B,EAAEwjB,EAAEmR,OAAU0/M,QAAQ,IAAI1mL,EAAE,CAAChgD,KAAK,SAASxR,SAASs+B,EAAEt+B,UAChF,OAD0F,KAAO,EAAFmnV,IAAM/5T,EAAEoL,QAAQ30B,IAAGy6B,EAAElR,EAAEoL,OAAQstU,WAAW,EAAExnU,EAAEmmU,aAAajzS,EAAEpkC,EAAEm3U,UAAU,OAAOjmU,EAAE4qU,GAAGrlW,EAAE2tD,IAAK4gT,aAA4B,SAAfvuW,EAAEuuW,aAAuB,OAAOryU,EAAE55B,EAAE+iW,GAAGnpU,EAAE55B,IAAIA,EAAEmjW,GAAGnjW,EAAEghV,EAAE9oT,EAAE,OAAQkxT,OAAO,EAAGppV,EAAEmpV,OACnfliU,EAAEkR,EAAEgxT,OAAOliU,EAAEkR,EAAE45M,QAAQ/xO,EAAEinB,EAAEoL,MAAM8F,EAAEA,EAAEn4B,EAAEA,EAAEinB,EAAEoL,MAA8B2uT,EAAE,QAA1BA,EAAE9/T,EAAEmR,MAAMi3T,eAAyB+hB,GAAGnzU,GAAG,CAACkyU,UAAUppB,EAAEopB,UAAUlyU,EAAEmyU,UAAU,KAAKC,YAAYtpB,EAAEspB,aAAatqW,EAAEspV,cAActI,EAAEhhV,EAAE2/V,WAAWz+U,EAAEy+U,YAAYznU,EAAEjR,EAAEqiU,cAAc8hB,GAAUjzU,CAAC,CAAoO,OAAzNjX,GAAVlhB,EAAEkhB,EAAEmR,OAAU0/M,QAAQ55M,EAAE4qU,GAAG/iW,EAAE,CAACqL,KAAK,UAAUxR,SAASs+B,EAAEt+B,WAAW,KAAY,EAAPotB,EAAE5b,QAAU8sB,EAAE4nU,MAAM7nU,GAAGC,EAAEgxT,OAAOliU,EAAEkR,EAAE45M,QAAQ,KAAK,OAAO7wN,IAAkB,QAAdgX,EAAEjR,EAAEm3U,YAAoBn3U,EAAEm3U,UAAU,CAACl9U,GAAG+F,EAAEmiU,OAAO,IAAIlxT,EAAEx2B,KAAKwf,IAAI+F,EAAEoL,MAAM8F,EAAElR,EAAEqiU,cAAc,KAAYnxT,CAAC,CACnd,SAASszU,GAAGvqV,EAAE+F,GAA8D,OAA3DA,EAAEukV,GAAG,CAACngW,KAAK,UAAUxR,SAASotB,GAAG/F,EAAE7V,KAAK,EAAE,OAAQ89U,OAAOjoU,EAASA,EAAEmR,MAAMpL,CAAC,CAAC,SAASykV,GAAGxqV,EAAE+F,EAAEiR,EAAEC,GAAwG,OAArG,OAAOA,GAAG6mU,GAAG7mU,GAAGirU,GAAGn8U,EAAE/F,EAAEmR,MAAM,KAAK6F,IAAGhX,EAAEuqV,GAAGxkV,EAAEA,EAAEq3U,aAAazkW,WAAYuvV,OAAO,EAAEniU,EAAEqiU,cAAc,KAAYpoU,CAAC,CAGkJ,SAASgrV,GAAGhrV,EAAE+F,EAAEiR,GAAGhX,EAAE6+U,OAAO94U,EAAE,IAAIkR,EAAEjX,EAAEgoU,UAAU,OAAO/wT,IAAIA,EAAE4nU,OAAO94U,GAAGy4U,GAAGx+U,EAAEioU,OAAOliU,EAAEiR,EAAE,CACxc,SAASi0U,GAAGjrV,EAAE+F,EAAEiR,EAAEC,EAAEz6B,GAAG,IAAIsC,EAAEkhB,EAAEooU,cAAc,OAAOtpV,EAAEkhB,EAAEooU,cAAc,CAAC8iB,YAAYnlV,EAAEolV,UAAU,KAAKC,mBAAmB,EAAEz9L,KAAK12I,EAAEo0U,KAAKr0U,EAAEs0U,SAAS9uW,IAAIsC,EAAEosW,YAAYnlV,EAAEjnB,EAAEqsW,UAAU,KAAKrsW,EAAEssW,mBAAmB,EAAEtsW,EAAE6uK,KAAK12I,EAAEn4B,EAAEusW,KAAKr0U,EAAEl4B,EAAEwsW,SAAS9uW,EAAE,CAC3O,SAAS+uW,GAAGvrV,EAAE+F,EAAEiR,GAAG,IAAIC,EAAElR,EAAEq3U,aAAa5gW,EAAEy6B,EAAE8rU,YAAYjkW,EAAEm4B,EAAEo0U,KAAsC,GAAjC3C,GAAG1oV,EAAE+F,EAAEkR,EAAEt+B,SAASq+B,GAAkB,KAAO,GAAtBC,EAAE4rU,GAAE3+V,UAAqB+yB,EAAI,EAAFA,EAAI,EAAElR,EAAEmiU,OAAO,QAAQ,CAAC,GAAG,OAAOloU,GAAG,KAAa,IAARA,EAAEkoU,OAAWloU,EAAE,IAAIA,EAAE+F,EAAEoL,MAAM,OAAOnR,GAAG,CAAC,GAAG,KAAKA,EAAEsrD,IAAI,OAAOtrD,EAAEooU,eAAe4iB,GAAGhrV,EAAEgX,EAAEjR,QAAQ,GAAG,KAAK/F,EAAEsrD,IAAI0/R,GAAGhrV,EAAEgX,EAAEjR,QAAQ,GAAG,OAAO/F,EAAEmR,MAAM,CAACnR,EAAEmR,MAAM82T,OAAOjoU,EAAEA,EAAEA,EAAEmR,MAAM,QAAQ,CAAC,GAAGnR,IAAI+F,EAAE,MAAM/F,EAAE,KAAK,OAAOA,EAAE6wN,SAAS,CAAC,GAAG,OAAO7wN,EAAEioU,QAAQjoU,EAAEioU,SAASliU,EAAE,MAAM/F,EAAEA,EAAEA,EAAEioU,MAAM,CAACjoU,EAAE6wN,QAAQo3G,OAAOjoU,EAAEioU,OAAOjoU,EAAEA,EAAE6wN,OAAO,CAAC55M,GAAG,CAAC,CAAQ,GAAP2jU,GAAEiI,GAAE5rU,GAAM,KAAY,EAAPlR,EAAE5b,MAAQ4b,EAAEqiU,cAC/e,UAAU,OAAO5rV,GAAG,IAAK,WAAqB,IAAVw6B,EAAEjR,EAAEoL,MAAU30B,EAAE,KAAK,OAAOw6B,GAAiB,QAAdhX,EAAEgX,EAAEgxT,YAAoB,OAAO8a,GAAG9iV,KAAKxjB,EAAEw6B,GAAGA,EAAEA,EAAE65M,QAAY,QAAJ75M,EAAEx6B,IAAYA,EAAEupB,EAAEoL,MAAMpL,EAAEoL,MAAM,OAAO30B,EAAEw6B,EAAE65M,QAAQ75M,EAAE65M,QAAQ,MAAMo6H,GAAGllV,GAAE,EAAGvpB,EAAEw6B,EAAEl4B,GAAG,MAAM,IAAK,YAA6B,IAAjBk4B,EAAE,KAAKx6B,EAAEupB,EAAEoL,MAAUpL,EAAEoL,MAAM,KAAK,OAAO30B,GAAG,CAAe,GAAG,QAAjBwjB,EAAExjB,EAAEwrV,YAAuB,OAAO8a,GAAG9iV,GAAG,CAAC+F,EAAEoL,MAAM30B,EAAE,KAAK,CAACwjB,EAAExjB,EAAEq0O,QAAQr0O,EAAEq0O,QAAQ75M,EAAEA,EAAEx6B,EAAEA,EAAEwjB,CAAC,CAACirV,GAAGllV,GAAE,EAAGiR,EAAE,KAAKl4B,GAAG,MAAM,IAAK,WAAWmsW,GAAGllV,GAAE,EAAG,KAAK,UAAK,GAAQ,MAAM,QAAQA,EAAEqiU,cAAc,KAAK,OAAOriU,EAAEoL,KAAK,CAC7d,SAASs4U,GAAGzpV,EAAE+F,GAAG,KAAY,EAAPA,EAAE5b,OAAS,OAAO6V,IAAIA,EAAEgoU,UAAU,KAAKjiU,EAAEiiU,UAAU,KAAKjiU,EAAEmiU,OAAO,EAAE,CAAC,SAAS0gB,GAAG5oV,EAAE+F,EAAEiR,GAAyD,GAAtD,OAAOhX,IAAI+F,EAAE44U,aAAa3+U,EAAE2+U,cAAc4B,IAAIx6U,EAAE84U,MAAS,KAAK7nU,EAAEjR,EAAE04U,YAAY,OAAO,KAAK,GAAG,OAAOz+U,GAAG+F,EAAEoL,QAAQnR,EAAEmR,MAAM,MAAMpvB,MAAM69B,EAAE,MAAM,GAAG,OAAO7Z,EAAEoL,MAAM,CAA4C,IAAjC6F,EAAE6qU,GAAZ7hV,EAAE+F,EAAEoL,MAAanR,EAAEo9U,cAAcr3U,EAAEoL,MAAM6F,EAAMA,EAAEixT,OAAOliU,EAAE,OAAO/F,EAAE6wN,SAAS7wN,EAAEA,EAAE6wN,SAAQ75M,EAAEA,EAAE65M,QAAQgxH,GAAG7hV,EAAEA,EAAEo9U,eAAgBnV,OAAOliU,EAAEiR,EAAE65M,QAAQ,IAAI,CAAC,OAAO9qN,EAAEoL,KAAK,CAO9a,SAASq6U,GAAGxrV,EAAE+F,GAAG,IAAI+2U,GAAE,OAAO98U,EAAEsrV,UAAU,IAAK,SAASvlV,EAAE/F,EAAEqrV,KAAK,IAAI,IAAIr0U,EAAE,KAAK,OAAOjR,GAAG,OAAOA,EAAEiiU,YAAYhxT,EAAEjR,GAAGA,EAAEA,EAAE8qN,QAAQ,OAAO75M,EAAEhX,EAAEqrV,KAAK,KAAKr0U,EAAE65M,QAAQ,KAAK,MAAM,IAAK,YAAY75M,EAAEhX,EAAEqrV,KAAK,IAAI,IAAIp0U,EAAE,KAAK,OAAOD,GAAG,OAAOA,EAAEgxT,YAAY/wT,EAAED,GAAGA,EAAEA,EAAE65M,QAAQ,OAAO55M,EAAElR,GAAG,OAAO/F,EAAEqrV,KAAKrrV,EAAEqrV,KAAK,KAAKrrV,EAAEqrV,KAAKx6H,QAAQ,KAAK55M,EAAE45M,QAAQ,KAAK,CAC5U,SAAS46H,GAAEzrV,GAAG,IAAI+F,EAAE,OAAO/F,EAAEgoU,WAAWhoU,EAAEgoU,UAAU72T,QAAQnR,EAAEmR,MAAM6F,EAAE,EAAEC,EAAE,EAAE,GAAGlR,EAAE,IAAI,IAAIvpB,EAAEwjB,EAAEmR,MAAM,OAAO30B,GAAGw6B,GAAGx6B,EAAEqiW,MAAMriW,EAAEiiW,WAAWxnU,GAAkB,SAAfz6B,EAAEuuW,aAAsB9zU,GAAW,SAARz6B,EAAE0rV,MAAe1rV,EAAEyrV,OAAOjoU,EAAExjB,EAAEA,EAAEq0O,aAAa,IAAIr0O,EAAEwjB,EAAEmR,MAAM,OAAO30B,GAAGw6B,GAAGx6B,EAAEqiW,MAAMriW,EAAEiiW,WAAWxnU,GAAGz6B,EAAEuuW,aAAa9zU,GAAGz6B,EAAE0rV,MAAM1rV,EAAEyrV,OAAOjoU,EAAExjB,EAAEA,EAAEq0O,QAAyC,OAAjC7wN,EAAE+qV,cAAc9zU,EAAEjX,EAAEy+U,WAAWznU,EAASjR,CAAC,CAC7V,SAAS2lV,GAAG1rV,EAAE+F,EAAEiR,GAAG,IAAIC,EAAElR,EAAEq3U,aAAmB,OAANT,GAAG52U,GAAUA,EAAEulD,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,OAAOmgS,GAAE1lV,GAAG,KAAK,KAAK,EAUtD,KAAK,GAAG,OAAOo1U,GAAGp1U,EAAE1qB,OAAO+/V,KAAKqQ,GAAE1lV,GAAG,KAVqD,KAAK,EAA2Q,OAAzQkR,EAAElR,EAAE8gU,UAAU6b,KAAKz0T,GAAE6sT,IAAI7sT,GAAEtV,IAAGsqU,KAAKhsU,EAAE2yU,iBAAiB3yU,EAAEp1B,QAAQo1B,EAAE2yU,eAAe3yU,EAAE2yU,eAAe,MAAS,OAAO5pV,GAAG,OAAOA,EAAEmR,QAAMusU,GAAG33U,GAAGA,EAAEmiU,OAAO,EAAE,OAAOloU,GAAGA,EAAEooU,cAAc2E,cAAc,KAAa,IAARhnU,EAAEmiU,SAAaniU,EAAEmiU,OAAO,KAAK,OAAO6U,KAAK4O,GAAG5O,IAAIA,GAAG,QAAOgN,GAAG/pV,EAAE+F,GAAG0lV,GAAE1lV,GAAU,KAAK,KAAK,EAAE68U,GAAG78U,GAAG,IAAIvpB,EAAEgmW,GAAGD,GAAGr+V,SAC7e,GAAT8yB,EAAEjR,EAAE1qB,KAAQ,OAAO2kB,GAAG,MAAM+F,EAAE8gU,UAAUmjB,GAAGhqV,EAAE+F,EAAEiR,EAAEC,EAAEz6B,GAAGwjB,EAAE5b,MAAM2hB,EAAE3hB,MAAM2hB,EAAEmiU,OAAO,IAAIniU,EAAEmiU,OAAO,aAAa,CAAC,IAAIjxT,EAAE,CAAC,GAAG,OAAOlR,EAAE8gU,UAAU,MAAM9kV,MAAM69B,EAAE,MAAW,OAAL6rU,GAAE1lV,GAAU,IAAI,CAAkB,GAAjB/F,EAAEwiV,GAAGH,GAAGn+V,SAAYw5V,GAAG33U,GAAG,CAACkR,EAAElR,EAAE8gU,UAAU7vT,EAAEjR,EAAE1qB,KAAK,IAAIyD,EAAEinB,EAAE43U,cAA+C,OAAjC1mU,EAAEojU,IAAIt0U,EAAEkR,EAAEqjU,IAAIx7V,EAAEkhB,EAAE,KAAY,EAAP+F,EAAE5b,MAAe6sB,GAAG,IAAK,SAAS+gU,GAAE,SAAS9gU,GAAG8gU,GAAE,QAAQ9gU,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQ8gU,GAAE,OAAO9gU,GAAG,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAIz6B,EAAE,EAAEA,EAAEm7V,GAAG3+V,OAAOwD,IAAIu7V,GAAEJ,GAAGn7V,GAAGy6B,GAAG,MAAM,IAAK,SAAS8gU,GAAE,QAAQ9gU,GAAG,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAO8gU,GAAE,QACnhB9gU,GAAG8gU,GAAE,OAAO9gU,GAAG,MAAM,IAAK,UAAU8gU,GAAE,SAAS9gU,GAAG,MAAM,IAAK,QAAQksT,EAAGlsT,EAAEn4B,GAAGi5V,GAAE,UAAU9gU,GAAG,MAAM,IAAK,SAASA,EAAEgsT,cAAc,CAAC2oB,cAAc9sW,EAAEg0S,UAAUilD,GAAE,UAAU9gU,GAAG,MAAM,IAAK,WAAW4sT,GAAG5sT,EAAEn4B,GAAGi5V,GAAE,UAAU9gU,GAAkB,IAAI,IAAI6oT,KAAvBqG,GAAGnvT,EAAEl4B,GAAGtC,EAAE,KAAkBsC,EAAE,GAAGA,EAAE0xB,eAAesvT,GAAG,CAAC,IAAIpnT,EAAE55B,EAAEghV,GAAG,aAAaA,EAAE,kBAAkBpnT,EAAEzB,EAAE4wC,cAAcnvC,KAAI,IAAK55B,EAAE+sW,0BAA0BxS,GAAGpiU,EAAE4wC,YAAYnvC,EAAE1Y,GAAGxjB,EAAE,CAAC,WAAWk8B,IAAI,kBAAkBA,GAAGzB,EAAE4wC,cAAc,GAAGnvC,KAAI,IAAK55B,EAAE+sW,0BAA0BxS,GAAGpiU,EAAE4wC,YAC1envC,EAAE1Y,GAAGxjB,EAAE,CAAC,WAAW,GAAGk8B,IAAI4mT,EAAG9uT,eAAesvT,IAAI,MAAMpnT,GAAG,aAAaonT,GAAGiY,GAAE,SAAS9gU,EAAE,CAAC,OAAOD,GAAG,IAAK,QAAQyrT,EAAGxrT,GAAGssT,EAAGtsT,EAAEn4B,GAAE,GAAI,MAAM,IAAK,WAAW2jV,EAAGxrT,GAAG8sT,GAAG9sT,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,MAAM,QAAQ,oBAAoBn4B,EAAEqC,UAAU81B,EAAE4hJ,QAAQygL,IAAIriU,EAAEz6B,EAAEupB,EAAEy5U,YAAYvoU,EAAE,OAAOA,IAAIlR,EAAEmiU,OAAO,EAAE,KAAK,CAACpI,EAAE,IAAItjV,EAAE69C,SAAS79C,EAAEA,EAAEu6P,cAAc,iCAAiC/2O,IAAIA,EAAEgkU,GAAGhtT,IAAI,iCAAiChX,EAAE,WAAWgX,IAAGhX,EAAE8/T,EAAEnuT,cAAc,QAASW,UAAU,qBAAuBtS,EAAEA,EAAEu5B,YAAYv5B,EAAEs8G,aAC/f,kBAAkBrlG,EAAE69Q,GAAG90R,EAAE8/T,EAAEnuT,cAAcqF,EAAE,CAAC89Q,GAAG79Q,EAAE69Q,MAAM90R,EAAE8/T,EAAEnuT,cAAcqF,GAAG,WAAWA,IAAI8oT,EAAE9/T,EAAEiX,EAAE67Q,SAASgtC,EAAEhtC,UAAS,EAAG77Q,EAAEopE,OAAOy/O,EAAEz/O,KAAKppE,EAAEopE,QAAQrgF,EAAE8/T,EAAE1oS,gBAAgBp3B,EAAEgX,GAAGhX,EAAEq6U,IAAIt0U,EAAE/F,EAAEs6U,IAAIrjU,EAAE6yU,GAAG9pV,EAAE+F,GAAE,GAAG,GAAIA,EAAE8gU,UAAU7mU,EAAEA,EAAE,CAAW,OAAV8/T,EAAEsG,GAAGpvT,EAAEC,GAAUD,GAAG,IAAK,SAAS+gU,GAAE,SAAS/3U,GAAG+3U,GAAE,QAAQ/3U,GAAGxjB,EAAEy6B,EAAE,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQ8gU,GAAE,OAAO/3U,GAAGxjB,EAAEy6B,EAAE,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAIz6B,EAAE,EAAEA,EAAEm7V,GAAG3+V,OAAOwD,IAAIu7V,GAAEJ,GAAGn7V,GAAGwjB,GAAGxjB,EAAEy6B,EAAE,MAAM,IAAK,SAAS8gU,GAAE,QAAQ/3U,GAAGxjB,EAAEy6B,EAAE,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAO8gU,GAAE,QAClf/3U,GAAG+3U,GAAE,OAAO/3U,GAAGxjB,EAAEy6B,EAAE,MAAM,IAAK,UAAU8gU,GAAE,SAAS/3U,GAAGxjB,EAAEy6B,EAAE,MAAM,IAAK,QAAQksT,EAAGnjU,EAAEiX,GAAGz6B,EAAEumV,EAAG/iU,EAAEiX,GAAG8gU,GAAE,UAAU/3U,GAAG,MAAM,IAAK,SAAiL,QAAQxjB,EAAEy6B,QAAxK,IAAK,SAASjX,EAAEijU,cAAc,CAAC2oB,cAAc30U,EAAE67Q,UAAUt2S,EAAEwxC,EAAE,CAAC,EAAE/W,EAAE,CAAC34B,WAAM,IAASy5V,GAAE,UAAU/3U,GAAG,MAAM,IAAK,WAAW6jU,GAAG7jU,EAAEiX,GAAGz6B,EAAEmnV,GAAG3jU,EAAEiX,GAAG8gU,GAAE,UAAU/3U,GAAiC,IAAIlhB,KAAhBqnV,GAAGnvT,EAAEx6B,GAAGk8B,EAAEl8B,EAAa,GAAGk8B,EAAElI,eAAe1xB,GAAG,CAAC,IAAIqrD,EAAEzxB,EAAE55B,GAAG,UAAUA,EAAE4mV,GAAG1lU,EAAEmqC,GAAG,4BAA4BrrD,EAAuB,OAApBqrD,EAAEA,EAAEA,EAAEuvS,YAAO,IAAgBvV,GAAGnkU,EAAEmqC,GAAI,aAAarrD,EAAE,kBAAkBqrD,GAAG,aAC7enzB,GAAG,KAAKmzB,IAAIm6R,GAAGtkU,EAAEmqC,GAAG,kBAAkBA,GAAGm6R,GAAGtkU,EAAE,GAAGmqC,GAAG,mCAAmCrrD,GAAG,6BAA6BA,GAAG,cAAcA,IAAIwgV,EAAG9uT,eAAe1xB,GAAG,MAAMqrD,GAAG,aAAarrD,GAAGi5V,GAAE,SAAS/3U,GAAG,MAAMmqC,GAAGm2R,EAAGtgU,EAAElhB,EAAEqrD,EAAE21R,GAAG,CAAC,OAAO9oT,GAAG,IAAK,QAAQyrT,EAAGziU,GAAGujU,EAAGvjU,EAAEiX,GAAE,GAAI,MAAM,IAAK,WAAWwrT,EAAGziU,GAAG+jU,GAAG/jU,GAAG,MAAM,IAAK,SAAS,MAAMiX,EAAE34B,OAAO0hB,EAAEq3B,aAAa,QAAQ,GAAGkrS,EAAGtrT,EAAE34B,QAAQ,MAAM,IAAK,SAAS0hB,EAAE8yR,WAAW77Q,EAAE67Q,SAAmB,OAAVh0S,EAAEm4B,EAAE34B,OAAcmlV,GAAGzjU,IAAIiX,EAAE67Q,SAASh0S,GAAE,GAAI,MAAMm4B,EAAEimB,cAAcumS,GAAGzjU,IAAIiX,EAAE67Q,SAAS77Q,EAAEimB,cAClf,GAAI,MAAM,QAAQ,oBAAoB1gD,EAAE2E,UAAU6e,EAAE64J,QAAQygL,IAAI,OAAOtiU,GAAG,IAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAWC,IAAIA,EAAE60U,UAAU,MAAM9rV,EAAE,IAAK,MAAMiX,GAAE,EAAG,MAAMjX,EAAE,QAAQiX,GAAE,EAAG,CAACA,IAAIlR,EAAEmiU,OAAO,EAAE,CAAC,OAAOniU,EAAE3hB,MAAM2hB,EAAEmiU,OAAO,IAAIniU,EAAEmiU,OAAO,QAAQ,CAAM,OAALujB,GAAE1lV,GAAU,KAAK,KAAK,EAAE,GAAG/F,GAAG,MAAM+F,EAAE8gU,UAAUojB,GAAGjqV,EAAE+F,EAAE/F,EAAE29U,cAAc1mU,OAAO,CAAC,GAAG,kBAAkBA,GAAG,OAAOlR,EAAE8gU,UAAU,MAAM9kV,MAAM69B,EAAE,MAAsC,GAAhC5I,EAAEwrU,GAAGD,GAAGr+V,SAASs+V,GAAGH,GAAGn+V,SAAYw5V,GAAG33U,GAAG,CAAyC,GAAxCkR,EAAElR,EAAE8gU,UAAU7vT,EAAEjR,EAAE43U,cAAc1mU,EAAEojU,IAAIt0U,GAAKjnB,EAAEm4B,EAAEy0C,YAAY10C,IAC/e,QADofhX,EACvf48U,IAAY,OAAO58U,EAAEsrD,KAAK,KAAK,EAAE+tR,GAAGpiU,EAAEy0C,UAAU10C,EAAE,KAAY,EAAPhX,EAAE7V,OAAS,MAAM,KAAK,GAAE,IAAK6V,EAAE29U,cAAckO,0BAA0BxS,GAAGpiU,EAAEy0C,UAAU10C,EAAE,KAAY,EAAPhX,EAAE7V,OAASrL,IAAIinB,EAAEmiU,OAAO,EAAE,MAAMjxT,GAAG,IAAID,EAAEqjB,SAASrjB,EAAEA,EAAE+/N,eAAenzI,eAAe3sF,IAAKojU,IAAIt0U,EAAEA,EAAE8gU,UAAU5vT,CAAC,CAAM,OAALw0U,GAAE1lV,GAAU,KAAK,KAAK,GAA0B,GAAvBkoB,GAAE40T,IAAG5rU,EAAElR,EAAEqiU,cAAiB,OAAOpoU,GAAG,OAAOA,EAAEooU,eAAe,OAAOpoU,EAAEooU,cAAcC,WAAW,CAAC,GAAGyU,IAAG,OAAOD,IAAI,KAAY,EAAP92U,EAAE5b,OAAS,KAAa,IAAR4b,EAAEmiU,OAAW0V,KAAKC,KAAK93U,EAAEmiU,OAAO,MAAMppV,GAAE,OAAQ,GAAGA,EAAE4+V,GAAG33U,GAAG,OAAOkR,GAAG,OAAOA,EAAEoxT,WAAW,CAAC,GAAG,OAC5froU,EAAE,CAAC,IAAIlhB,EAAE,MAAMiD,MAAM69B,EAAE,MAAqD,KAA7B9gC,EAAE,QAApBA,EAAEinB,EAAEqiU,eAAyBtpV,EAAEupV,WAAW,MAAW,MAAMtmV,MAAM69B,EAAE,MAAM9gC,EAAEu7V,IAAIt0U,CAAC,MAAM83U,KAAK,KAAa,IAAR93U,EAAEmiU,SAAaniU,EAAEqiU,cAAc,MAAMriU,EAAEmiU,OAAO,EAAEujB,GAAE1lV,GAAGjnB,GAAE,CAAE,MAAM,OAAOi+V,KAAK4O,GAAG5O,IAAIA,GAAG,MAAMj+V,GAAE,EAAG,IAAIA,EAAE,OAAe,MAARinB,EAAEmiU,MAAYniU,EAAE,IAAI,CAAC,OAAG,KAAa,IAARA,EAAEmiU,QAAkBniU,EAAE84U,MAAM7nU,EAAEjR,KAAEkR,EAAE,OAAOA,MAAO,OAAOjX,GAAG,OAAOA,EAAEooU,gBAAgBnxT,IAAIlR,EAAEoL,MAAM+2T,OAAO,KAAK,KAAY,EAAPniU,EAAE5b,QAAU,OAAO6V,GAAG,KAAe,EAAV6iV,GAAE3+V,SAAW,IAAI6nW,KAAIA,GAAE,GAAGpB,OAAO,OAAO5kV,EAAEy5U,cAAcz5U,EAAEmiU,OAAO,GAAGujB,GAAE1lV,GAAU,MAAK,KAAK,EAAE,OAAO28U,KACrfqH,GAAG/pV,EAAE+F,GAAG,OAAO/F,GAAGo4U,GAAGryU,EAAE8gU,UAAUzwF,eAAeq1G,GAAE1lV,GAAG,KAAK,KAAK,GAAG,OAAOu4U,GAAGv4U,EAAE1qB,KAAK8qT,UAAUslD,GAAE1lV,GAAG,KAA+C,KAAK,GAA0B,GAAvBkoB,GAAE40T,IAAwB,QAArB/jW,EAAEinB,EAAEqiU,eAA0B,OAAOqjB,GAAE1lV,GAAG,KAAuC,GAAlCkR,EAAE,KAAa,IAARlR,EAAEmiU,OAA4B,QAAjBpI,EAAEhhV,EAAEqsW,WAAsB,GAAGl0U,EAAEu0U,GAAG1sW,GAAE,OAAQ,CAAC,GAAG,IAAIitW,IAAG,OAAO/rV,GAAG,KAAa,IAARA,EAAEkoU,OAAW,IAAIloU,EAAE+F,EAAEoL,MAAM,OAAOnR,GAAG,CAAS,GAAG,QAAX8/T,EAAEgjB,GAAG9iV,IAAe,CAAmG,IAAlG+F,EAAEmiU,OAAO,IAAIsjB,GAAG1sW,GAAE,GAAoB,QAAhBm4B,EAAE6oT,EAAE0f,eAAuBz5U,EAAEy5U,YAAYvoU,EAAElR,EAAEmiU,OAAO,GAAGniU,EAAEglV,aAAa,EAAE9zU,EAAED,EAAMA,EAAEjR,EAAEoL,MAAM,OAAO6F,GAAOhX,EAAEiX,GAANn4B,EAAEk4B,GAAQkxT,OAAO,SAC/d,QAAdpI,EAAEhhV,EAAEkpV,YAAoBlpV,EAAE2/V,WAAW,EAAE3/V,EAAE+/V,MAAM7+U,EAAElhB,EAAEqyB,MAAM,KAAKryB,EAAEisW,aAAa,EAAEjsW,EAAE6+V,cAAc,KAAK7+V,EAAEspV,cAAc,KAAKtpV,EAAE0gW,YAAY,KAAK1gW,EAAE6/V,aAAa,KAAK7/V,EAAE+nV,UAAU,OAAO/nV,EAAE2/V,WAAW3e,EAAE2e,WAAW3/V,EAAE+/V,MAAM/e,EAAE+e,MAAM//V,EAAEqyB,MAAM2uT,EAAE3uT,MAAMryB,EAAEisW,aAAa,EAAEjsW,EAAEo+V,UAAU,KAAKp+V,EAAE6+V,cAAc7d,EAAE6d,cAAc7+V,EAAEspV,cAActI,EAAEsI,cAActpV,EAAE0gW,YAAY1f,EAAE0f,YAAY1gW,EAAEzD,KAAKykV,EAAEzkV,KAAK2kB,EAAE8/T,EAAE6e,aAAa7/V,EAAE6/V,aAAa,OAAO3+U,EAAE,KAAK,CAAC6+U,MAAM7+U,EAAE6+U,MAAMD,aAAa5+U,EAAE4+U,eAAe5nU,EAAEA,EAAE65M,QAA2B,OAAnB+pH,GAAEiI,GAAY,EAAVA,GAAE3+V,QAAU,GAAU6hB,EAAEoL,KAAK,CAACnR,EAClgBA,EAAE6wN,OAAO,CAAC,OAAO/xO,EAAEusW,MAAMniB,KAAI8iB,KAAKjmV,EAAEmiU,OAAO,IAAIjxT,GAAE,EAAGu0U,GAAG1sW,GAAE,GAAIinB,EAAE84U,MAAM,QAAQ,KAAK,CAAC,IAAI5nU,EAAE,GAAW,QAARjX,EAAE8iV,GAAGhjB,KAAa,GAAG/5T,EAAEmiU,OAAO,IAAIjxT,GAAE,EAAmB,QAAhBD,EAAEhX,EAAEw/U,eAAuBz5U,EAAEy5U,YAAYxoU,EAAEjR,EAAEmiU,OAAO,GAAGsjB,GAAG1sW,GAAE,GAAI,OAAOA,EAAEusW,MAAM,WAAWvsW,EAAEwsW,WAAWxrB,EAAEkI,YAAY8U,GAAE,OAAO2O,GAAE1lV,GAAG,UAAU,EAAEmjU,KAAIpqV,EAAEssW,mBAAmBY,IAAI,aAAah1U,IAAIjR,EAAEmiU,OAAO,IAAIjxT,GAAE,EAAGu0U,GAAG1sW,GAAE,GAAIinB,EAAE84U,MAAM,SAAS//V,EAAEosW,aAAaprB,EAAEjvG,QAAQ9qN,EAAEoL,MAAMpL,EAAEoL,MAAM2uT,IAAa,QAAT9oT,EAAEl4B,EAAE6uK,MAAc32I,EAAE65M,QAAQivG,EAAE/5T,EAAEoL,MAAM2uT,EAAEhhV,EAAE6uK,KAAKmyK,EAAE,CAAC,OAAG,OAAOhhV,EAAEusW,MAAYtlV,EAAEjnB,EAAEusW,KAAKvsW,EAAEqsW,UAC9eplV,EAAEjnB,EAAEusW,KAAKtlV,EAAE8qN,QAAQ/xO,EAAEssW,mBAAmBliB,KAAInjU,EAAE8qN,QAAQ,KAAK75M,EAAE6rU,GAAE3+V,QAAQ02V,GAAEiI,GAAE5rU,EAAI,EAAFD,EAAI,EAAI,EAAFA,GAAKjR,IAAE0lV,GAAE1lV,GAAU,MAAK,KAAK,GAAG,KAAK,GAAG,OAAOkmV,KAAKh1U,EAAE,OAAOlR,EAAEqiU,cAAc,OAAOpoU,GAAG,OAAOA,EAAEooU,gBAAgBnxT,IAAIlR,EAAEmiU,OAAO,MAAMjxT,GAAG,KAAY,EAAPlR,EAAE5b,MAAQ,KAAQ,WAAHm/V,MAAiBmC,GAAE1lV,GAAkB,EAAfA,EAAEglV,eAAiBhlV,EAAEmiU,OAAO,OAAOujB,GAAE1lV,GAAG,KAAK,KAAK,GAAe,KAAK,GAAG,OAAO,KAAK,MAAMhkB,MAAM69B,EAAE,IAAI7Z,EAAEulD,KAAM,CAClX,SAAS4gS,GAAGlsV,EAAE+F,GAAS,OAAN42U,GAAG52U,GAAUA,EAAEulD,KAAK,KAAK,EAAE,OAAO6vR,GAAGp1U,EAAE1qB,OAAO+/V,KAAiB,OAAZp7U,EAAE+F,EAAEmiU,QAAeniU,EAAEmiU,OAAS,MAAHloU,EAAS,IAAI+F,GAAG,KAAK,KAAK,EAAE,OAAO28U,KAAKz0T,GAAE6sT,IAAI7sT,GAAEtV,IAAGsqU,KAAe,KAAO,OAAjBjjV,EAAE+F,EAAEmiU,SAAqB,KAAO,IAAFloU,IAAQ+F,EAAEmiU,OAAS,MAAHloU,EAAS,IAAI+F,GAAG,KAAK,KAAK,EAAE,OAAO68U,GAAG78U,GAAG,KAAK,KAAK,GAA0B,GAAvBkoB,GAAE40T,IAAwB,QAArB7iV,EAAE+F,EAAEqiU,gBAA2B,OAAOpoU,EAAEqoU,WAAW,CAAC,GAAG,OAAOtiU,EAAEiiU,UAAU,MAAMjmV,MAAM69B,EAAE,MAAMi+T,IAAI,CAAW,OAAS,OAAnB79U,EAAE+F,EAAEmiU,QAAsBniU,EAAEmiU,OAAS,MAAHloU,EAAS,IAAI+F,GAAG,KAAK,KAAK,GAAG,OAAOkoB,GAAE40T,IAAG,KAAK,KAAK,EAAE,OAAOH,KAAK,KAAK,KAAK,GAAG,OAAOpE,GAAGv4U,EAAE1qB,KAAK8qT,UAAU,KAAK,KAAK,GAAG,KAAK,GAAG,OAAO8lD,KAC1gB,KAAyB,QAAQ,OAAO,KAAK,CArB7CnC,GAAG,SAAS9pV,EAAE+F,GAAG,IAAI,IAAIiR,EAAEjR,EAAEoL,MAAM,OAAO6F,GAAG,CAAC,GAAG,IAAIA,EAAEs0C,KAAK,IAAIt0C,EAAEs0C,IAAItrD,EAAEkS,YAAY8E,EAAE6vT,gBAAgB,GAAG,IAAI7vT,EAAEs0C,KAAK,OAAOt0C,EAAE7F,MAAM,CAAC6F,EAAE7F,MAAM82T,OAAOjxT,EAAEA,EAAEA,EAAE7F,MAAM,QAAQ,CAAC,GAAG6F,IAAIjR,EAAE,MAAM,KAAK,OAAOiR,EAAE65M,SAAS,CAAC,GAAG,OAAO75M,EAAEixT,QAAQjxT,EAAEixT,SAASliU,EAAE,OAAOiR,EAAEA,EAAEixT,MAAM,CAACjxT,EAAE65M,QAAQo3G,OAAOjxT,EAAEixT,OAAOjxT,EAAEA,EAAE65M,OAAO,CAAC,EAAEk5H,GAAG,WAAW,EACxTC,GAAG,SAAShqV,EAAE+F,EAAEiR,EAAEC,GAAG,IAAIz6B,EAAEwjB,EAAE29U,cAAc,GAAGnhW,IAAIy6B,EAAE,CAACjX,EAAE+F,EAAE8gU,UAAU2b,GAAGH,GAAGn+V,SAAS,IAA4R47U,EAAxRhhV,EAAE,KAAK,OAAOk4B,GAAG,IAAK,QAAQx6B,EAAEumV,EAAG/iU,EAAExjB,GAAGy6B,EAAE8rT,EAAG/iU,EAAEiX,GAAGn4B,EAAE,GAAG,MAAM,IAAK,SAAStC,EAAEwxC,EAAE,CAAC,EAAExxC,EAAE,CAAC8B,WAAM,IAAS24B,EAAE+W,EAAE,CAAC,EAAE/W,EAAE,CAAC34B,WAAM,IAASQ,EAAE,GAAG,MAAM,IAAK,WAAWtC,EAAEmnV,GAAG3jU,EAAExjB,GAAGy6B,EAAE0sT,GAAG3jU,EAAEiX,GAAGn4B,EAAE,GAAG,MAAM,QAAQ,oBAAoBtC,EAAE2E,SAAS,oBAAoB81B,EAAE91B,UAAU6e,EAAE64J,QAAQygL,IAAyB,IAAIvnU,KAAzBo0T,GAAGnvT,EAAEC,GAASD,EAAE,KAAcx6B,EAAE,IAAIy6B,EAAEzG,eAAeuB,IAAIv1B,EAAEg0B,eAAeuB,IAAI,MAAMv1B,EAAEu1B,GAAG,GAAG,UAAUA,EAAE,CAAC,IAAI2G,EAAEl8B,EAAEu1B,GAAG,IAAI+tT,KAAKpnT,EAAEA,EAAElI,eAAesvT,KACjf9oT,IAAIA,EAAE,CAAC,GAAGA,EAAE8oT,GAAG,GAAG,KAAK,4BAA4B/tT,GAAG,aAAaA,GAAG,mCAAmCA,GAAG,6BAA6BA,GAAG,cAAcA,IAAIutT,EAAG9uT,eAAeuB,GAAGjzB,IAAIA,EAAE,KAAKA,EAAEA,GAAG,IAAI0B,KAAKuxB,EAAE,OAAO,IAAIA,KAAKkF,EAAE,CAAC,IAAIkzB,EAAElzB,EAAElF,GAAyB,GAAtB2G,EAAE,MAAMl8B,EAAEA,EAAEu1B,QAAG,EAAUkF,EAAEzG,eAAeuB,IAAIo4B,IAAIzxB,IAAI,MAAMyxB,GAAG,MAAMzxB,GAAG,GAAG,UAAU3G,EAAE,GAAG2G,EAAE,CAAC,IAAIonT,KAAKpnT,GAAGA,EAAElI,eAAesvT,IAAI31R,GAAGA,EAAE35B,eAAesvT,KAAK9oT,IAAIA,EAAE,CAAC,GAAGA,EAAE8oT,GAAG,IAAI,IAAIA,KAAK31R,EAAEA,EAAE35B,eAAesvT,IAAIpnT,EAAEonT,KAAK31R,EAAE21R,KAAK9oT,IAAIA,EAAE,CAAC,GAAGA,EAAE8oT,GAAG31R,EAAE21R,GAAG,MAAM9oT,IAAIl4B,IAAIA,EAAE,IAAIA,EAAE0B,KAAKuxB,EACpfiF,IAAIA,EAAEmzB,MAAM,4BAA4Bp4B,GAAGo4B,EAAEA,EAAEA,EAAEuvS,YAAO,EAAOhhU,EAAEA,EAAEA,EAAEghU,YAAO,EAAO,MAAMvvS,GAAGzxB,IAAIyxB,IAAIrrD,EAAEA,GAAG,IAAI0B,KAAKuxB,EAAEo4B,IAAI,aAAap4B,EAAE,kBAAkBo4B,GAAG,kBAAkBA,IAAIrrD,EAAEA,GAAG,IAAI0B,KAAKuxB,EAAE,GAAGo4B,GAAG,mCAAmCp4B,GAAG,6BAA6BA,IAAIutT,EAAG9uT,eAAeuB,IAAI,MAAMo4B,GAAG,aAAap4B,GAAGgmU,GAAE,SAAS/3U,GAAGlhB,GAAG45B,IAAIyxB,IAAIrrD,EAAE,MAAMA,EAAEA,GAAG,IAAI0B,KAAKuxB,EAAEo4B,GAAG,CAACnzB,IAAIl4B,EAAEA,GAAG,IAAI0B,KAAK,QAAQw2B,GAAG,IAAIjF,EAAEjzB,GAAKinB,EAAEy5U,YAAYztU,KAAEhM,EAAEmiU,OAAO,EAAC,CAAC,EAAE+hB,GAAG,SAASjqV,EAAE+F,EAAEiR,EAAEC,GAAGD,IAAIC,IAAIlR,EAAEmiU,OAAO,EAAE,EAkBlb,IAAIikB,IAAG,EAAGC,IAAE,EAAGC,GAAG,oBAAoBrxD,QAAQA,QAAQ11R,IAAIgnV,GAAE,KAAK,SAASC,GAAGvsV,EAAE+F,GAAG,IAAIiR,EAAEhX,EAAE5b,IAAI,GAAG,OAAO4yB,EAAE,GAAG,oBAAoBA,EAAE,IAAIA,EAAE,KAAK,CAAC,MAAMC,GAAGu1U,GAAExsV,EAAE+F,EAAEkR,EAAE,MAAMD,EAAE9yB,QAAQ,IAAI,CAAC,SAASuoW,GAAGzsV,EAAE+F,EAAEiR,GAAG,IAAIA,GAAG,CAAC,MAAMC,GAAGu1U,GAAExsV,EAAE+F,EAAEkR,EAAE,CAAC,CAAC,IAAIy1U,IAAG,EAIxR,SAASC,GAAG3sV,EAAE+F,EAAEiR,GAAG,IAAIC,EAAElR,EAAEy5U,YAAyC,GAAG,QAAhCvoU,EAAE,OAAOA,EAAEA,EAAEmuU,WAAW,MAAiB,CAAC,IAAI5oW,EAAEy6B,EAAEA,EAAE4nD,KAAK,EAAE,CAAC,IAAIriF,EAAE8uE,IAAItrD,KAAKA,EAAE,CAAC,IAAIlhB,EAAEtC,EAAEisC,QAAQjsC,EAAEisC,aAAQ,OAAO,IAAS3pC,GAAG2tW,GAAG1mV,EAAEiR,EAAEl4B,EAAE,CAACtC,EAAEA,EAAEqiF,IAAI,OAAOriF,IAAIy6B,EAAE,CAAC,CAAC,SAAS21U,GAAG5sV,EAAE+F,GAAgD,GAAG,QAAhCA,EAAE,QAAlBA,EAAEA,EAAEy5U,aAAuBz5U,EAAEq/U,WAAW,MAAiB,CAAC,IAAIpuU,EAAEjR,EAAEA,EAAE84D,KAAK,EAAE,CAAC,IAAI7nD,EAAEs0C,IAAItrD,KAAKA,EAAE,CAAC,IAAIiX,EAAED,EAAE/V,OAAO+V,EAAEyR,QAAQxR,GAAG,CAACD,EAAEA,EAAE6nD,IAAI,OAAO7nD,IAAIjR,EAAE,CAAC,CAAC,SAAS8mV,GAAG7sV,GAAG,IAAI+F,EAAE/F,EAAE5b,IAAI,GAAG,OAAO2hB,EAAE,CAAC,IAAIiR,EAAEhX,EAAE6mU,UAAiB7mU,EAAEsrD,IAA8BtrD,EAAEgX,EAAE,oBAAoBjR,EAAEA,EAAE/F,GAAG+F,EAAE7hB,QAAQ8b,CAAC,CAAC,CAClf,SAAS8sV,GAAG9sV,GAAG,IAAI+F,EAAE/F,EAAEgoU,UAAU,OAAOjiU,IAAI/F,EAAEgoU,UAAU,KAAK8kB,GAAG/mV,IAAI/F,EAAEmR,MAAM,KAAKnR,EAAEk9U,UAAU,KAAKl9U,EAAE6wN,QAAQ,KAAK,IAAI7wN,EAAEsrD,MAAoB,QAAdvlD,EAAE/F,EAAE6mU,oBAA4B9gU,EAAEs0U,WAAWt0U,EAAEu0U,WAAWv0U,EAAEiyU,WAAWjyU,EAAEw0U,WAAWx0U,EAAEy0U,MAAMx6U,EAAE6mU,UAAU,KAAK7mU,EAAEioU,OAAO,KAAKjoU,EAAE2+U,aAAa,KAAK3+U,EAAE29U,cAAc,KAAK39U,EAAEooU,cAAc,KAAKpoU,EAAEo9U,aAAa,KAAKp9U,EAAE6mU,UAAU,KAAK7mU,EAAEw/U,YAAY,IAAI,CAAC,SAASuN,GAAG/sV,GAAG,OAAO,IAAIA,EAAEsrD,KAAK,IAAItrD,EAAEsrD,KAAK,IAAItrD,EAAEsrD,GAAG,CACna,SAAS0hS,GAAGhtV,GAAGA,EAAE,OAAO,CAAC,KAAK,OAAOA,EAAE6wN,SAAS,CAAC,GAAG,OAAO7wN,EAAEioU,QAAQ8kB,GAAG/sV,EAAEioU,QAAQ,OAAO,KAAKjoU,EAAEA,EAAEioU,MAAM,CAA2B,IAA1BjoU,EAAE6wN,QAAQo3G,OAAOjoU,EAAEioU,OAAWjoU,EAAEA,EAAE6wN,QAAQ,IAAI7wN,EAAEsrD,KAAK,IAAItrD,EAAEsrD,KAAK,KAAKtrD,EAAEsrD,KAAK,CAAC,GAAW,EAARtrD,EAAEkoU,MAAQ,SAASloU,EAAE,GAAG,OAAOA,EAAEmR,OAAO,IAAInR,EAAEsrD,IAAI,SAAStrD,EAAOA,EAAEmR,MAAM82T,OAAOjoU,EAAEA,EAAEA,EAAEmR,KAAK,CAAC,KAAa,EAARnR,EAAEkoU,OAAS,OAAOloU,EAAE6mU,SAAS,CAAC,CACzT,SAASomB,GAAGjtV,EAAE+F,EAAEiR,GAAG,IAAIC,EAAEjX,EAAEsrD,IAAI,GAAG,IAAIr0C,GAAG,IAAIA,EAAEjX,EAAEA,EAAE6mU,UAAU9gU,EAAE,IAAIiR,EAAEqjB,SAASrjB,EAAE3F,WAAW0nB,aAAa/4B,EAAE+F,GAAGiR,EAAE+hB,aAAa/4B,EAAE+F,IAAI,IAAIiR,EAAEqjB,UAAUt0B,EAAEiR,EAAE3F,YAAa0nB,aAAa/4B,EAAEgX,IAAKjR,EAAEiR,GAAI9E,YAAYlS,GAA4B,QAAxBgX,EAAEA,EAAEk2U,2BAA8B,IAASl2U,GAAG,OAAOjR,EAAE8yJ,UAAU9yJ,EAAE8yJ,QAAQygL,UAAU,GAAG,IAAIriU,GAAc,QAAVjX,EAAEA,EAAEmR,OAAgB,IAAI87U,GAAGjtV,EAAE+F,EAAEiR,GAAGhX,EAAEA,EAAE6wN,QAAQ,OAAO7wN,GAAGitV,GAAGjtV,EAAE+F,EAAEiR,GAAGhX,EAAEA,EAAE6wN,OAAO,CAC1X,SAASs8H,GAAGntV,EAAE+F,EAAEiR,GAAG,IAAIC,EAAEjX,EAAEsrD,IAAI,GAAG,IAAIr0C,GAAG,IAAIA,EAAEjX,EAAEA,EAAE6mU,UAAU9gU,EAAEiR,EAAE+hB,aAAa/4B,EAAE+F,GAAGiR,EAAE9E,YAAYlS,QAAQ,GAAG,IAAIiX,GAAc,QAAVjX,EAAEA,EAAEmR,OAAgB,IAAIg8U,GAAGntV,EAAE+F,EAAEiR,GAAGhX,EAAEA,EAAE6wN,QAAQ,OAAO7wN,GAAGmtV,GAAGntV,EAAE+F,EAAEiR,GAAGhX,EAAEA,EAAE6wN,OAAO,CAAC,IAAIjpJ,GAAE,KAAKwlR,IAAG,EAAG,SAASC,GAAGrtV,EAAE+F,EAAEiR,GAAG,IAAIA,EAAEA,EAAE7F,MAAM,OAAO6F,GAAGs2U,GAAGttV,EAAE+F,EAAEiR,GAAGA,EAAEA,EAAE65M,OAAO,CACnR,SAASy8H,GAAGttV,EAAE+F,EAAEiR,GAAG,GAAGizT,IAAI,oBAAoBA,GAAGsjB,qBAAqB,IAAItjB,GAAGsjB,qBAAqBvjB,GAAGhzT,EAAE,CAAC,MAAM0B,GAAG,CAAC,OAAO1B,EAAEs0C,KAAK,KAAK,EAAE8gS,IAAGG,GAAGv1U,EAAEjR,GAAG,KAAK,EAAE,IAAIkR,EAAE2wD,GAAEprF,EAAE4wW,GAAGxlR,GAAE,KAAKylR,GAAGrtV,EAAE+F,EAAEiR,GAAOo2U,GAAG5wW,EAAE,QAATorF,GAAE3wD,KAAkBm2U,IAAIptV,EAAE4nE,GAAE5wD,EAAEA,EAAE6vT,UAAU,IAAI7mU,EAAEq6B,SAASr6B,EAAEqR,WAAWkoB,YAAYviB,GAAGhX,EAAEu5B,YAAYviB,IAAI4wD,GAAEruC,YAAYviB,EAAE6vT,YAAY,MAAM,KAAK,GAAG,OAAOj/P,KAAIwlR,IAAIptV,EAAE4nE,GAAE5wD,EAAEA,EAAE6vT,UAAU,IAAI7mU,EAAEq6B,SAAS4/S,GAAGj6U,EAAEqR,WAAW2F,GAAG,IAAIhX,EAAEq6B,UAAU4/S,GAAGj6U,EAAEgX,GAAGq2T,GAAGrtU,IAAIi6U,GAAGryQ,GAAE5wD,EAAE6vT,YAAY,MAAM,KAAK,EAAE5vT,EAAE2wD,GAAEprF,EAAE4wW,GAAGxlR,GAAE5wD,EAAE6vT,UAAUzwF,cAAcg3G,IAAG,EAClfC,GAAGrtV,EAAE+F,EAAEiR,GAAG4wD,GAAE3wD,EAAEm2U,GAAG5wW,EAAE,MAAM,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI4vW,KAAoB,QAAhBn1U,EAAED,EAAEwoU,cAAsC,QAAfvoU,EAAEA,EAAEmuU,aAAsB,CAAC5oW,EAAEy6B,EAAEA,EAAE4nD,KAAK,EAAE,CAAC,IAAI//E,EAAEtC,EAAEsjV,EAAEhhV,EAAE2pC,QAAQ3pC,EAAEA,EAAEwsE,SAAI,IAASw0Q,IAAI,KAAO,EAAFhhV,IAAe,KAAO,EAAFA,KAAf2tW,GAAGz1U,EAAEjR,EAAE+5T,GAAyBtjV,EAAEA,EAAEqiF,IAAI,OAAOriF,IAAIy6B,EAAE,CAACo2U,GAAGrtV,EAAE+F,EAAEiR,GAAG,MAAM,KAAK,EAAE,IAAIo1U,KAAIG,GAAGv1U,EAAEjR,GAAiB,oBAAdkR,EAAED,EAAE6vT,WAAgCpnE,sBAAsB,IAAIxoP,EAAE/zB,MAAM8zB,EAAE2mU,cAAc1mU,EAAEjwB,MAAMgwB,EAAEoxT,cAAcnxT,EAAEwoP,sBAAsB,CAAC,MAAM/mP,GAAG8zU,GAAEx1U,EAAEjR,EAAE2S,EAAE,CAAC20U,GAAGrtV,EAAE+F,EAAEiR,GAAG,MAAM,KAAK,GAAGq2U,GAAGrtV,EAAE+F,EAAEiR,GAAG,MAAM,KAAK,GAAU,EAAPA,EAAE7sB,MAAQiiW,IAAGn1U,EAAEm1U,KAAI,OAChfp1U,EAAEoxT,cAAcilB,GAAGrtV,EAAE+F,EAAEiR,GAAGo1U,GAAEn1U,GAAGo2U,GAAGrtV,EAAE+F,EAAEiR,GAAG,MAAM,QAAQq2U,GAAGrtV,EAAE+F,EAAEiR,GAAG,CAAC,SAASw2U,GAAGxtV,GAAG,IAAI+F,EAAE/F,EAAEw/U,YAAY,GAAG,OAAOz5U,EAAE,CAAC/F,EAAEw/U,YAAY,KAAK,IAAIxoU,EAAEhX,EAAE6mU,UAAU,OAAO7vT,IAAIA,EAAEhX,EAAE6mU,UAAU,IAAIwlB,IAAItmV,EAAEjmB,SAAQ,SAASimB,GAAG,IAAIkR,EAAEw2U,GAAG1tV,KAAK,KAAKC,EAAE+F,GAAGiR,EAAErW,IAAIoF,KAAKiR,EAAEkf,IAAInwB,GAAGA,EAAE7d,KAAK+uB,EAAEA,GAAG,GAAE,CAAC,CACzQ,SAASy2U,GAAG1tV,EAAE+F,GAAG,IAAIiR,EAAEjR,EAAEm3U,UAAU,GAAG,OAAOlmU,EAAE,IAAI,IAAIC,EAAE,EAAEA,EAAED,EAAEh+B,OAAOi+B,IAAI,CAAC,IAAIz6B,EAAEw6B,EAAEC,GAAG,IAAI,IAAIn4B,EAAEkhB,EAAE8/T,EAAE/5T,EAAE2S,EAAEonT,EAAE9/T,EAAE,KAAK,OAAO0Y,GAAG,CAAC,OAAOA,EAAE4yC,KAAK,KAAK,EAAEsc,GAAElvD,EAAEmuT,UAAUumB,IAAG,EAAG,MAAMptV,EAAE,KAAK,EAA4C,KAAK,EAAE4nE,GAAElvD,EAAEmuT,UAAUzwF,cAAcg3G,IAAG,EAAG,MAAMptV,EAAE0Y,EAAEA,EAAEuvT,MAAM,CAAC,GAAG,OAAOrgQ,GAAE,MAAM7lF,MAAM69B,EAAE,MAAM0tU,GAAGxuW,EAAEghV,EAAEtjV,GAAGorF,GAAE,KAAKwlR,IAAG,EAAG,IAAIjjT,EAAE3tD,EAAEwrV,UAAU,OAAO79R,IAAIA,EAAE89R,OAAO,MAAMzrV,EAAEyrV,OAAO,IAAI,CAAC,MAAMl2T,GAAGy6U,GAAEhwW,EAAEupB,EAAEgM,EAAE,CAAC,CAAC,GAAkB,MAAfhM,EAAEglV,aAAmB,IAAIhlV,EAAEA,EAAEoL,MAAM,OAAOpL,GAAG4nV,GAAG5nV,EAAE/F,GAAG+F,EAAEA,EAAE8qN,OAAO,CACje,SAAS88H,GAAG3tV,EAAE+F,GAAG,IAAIiR,EAAEhX,EAAEgoU,UAAU/wT,EAAEjX,EAAEkoU,MAAM,OAAOloU,EAAEsrD,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAiB,GAAdoiS,GAAG3nV,EAAE/F,GAAG4tV,GAAG5tV,GAAQ,EAAFiX,EAAI,CAAC,IAAI01U,GAAG,EAAE3sV,EAAEA,EAAEioU,QAAQ2kB,GAAG,EAAE5sV,EAAE,CAAC,MAAMmmK,GAAGqmL,GAAExsV,EAAEA,EAAEioU,OAAO9hK,EAAE,CAAC,IAAIwmL,GAAG,EAAE3sV,EAAEA,EAAEioU,OAAO,CAAC,MAAM9hK,GAAGqmL,GAAExsV,EAAEA,EAAEioU,OAAO9hK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAEunL,GAAG3nV,EAAE/F,GAAG4tV,GAAG5tV,GAAK,IAAFiX,GAAO,OAAOD,GAAGu1U,GAAGv1U,EAAEA,EAAEixT,QAAQ,MAAM,KAAK,EAAgD,GAA9CylB,GAAG3nV,EAAE/F,GAAG4tV,GAAG5tV,GAAK,IAAFiX,GAAO,OAAOD,GAAGu1U,GAAGv1U,EAAEA,EAAEixT,QAAmB,GAARjoU,EAAEkoU,MAAS,CAAC,IAAI1rV,EAAEwjB,EAAE6mU,UAAU,IAAIvC,GAAG9nV,EAAE,GAAG,CAAC,MAAM2pL,GAAGqmL,GAAExsV,EAAEA,EAAEioU,OAAO9hK,EAAE,CAAC,CAAC,GAAK,EAAFlvJ,GAAoB,OAAdz6B,EAAEwjB,EAAE6mU,WAAmB,CAAC,IAAI/nV,EAAEkhB,EAAE29U,cAAc7d,EAAE,OAAO9oT,EAAEA,EAAE2mU,cAAc7+V,EAAE45B,EAAE1Y,EAAE3kB,KAAK8uD,EAAEnqC,EAAEw/U,YACje,GAAnBx/U,EAAEw/U,YAAY,KAAQ,OAAOr1S,EAAE,IAAI,UAAUzxB,GAAG,UAAU55B,EAAEzD,MAAM,MAAMyD,EAAE3F,MAAMkqV,EAAG7mV,EAAEsC,GAAGsnV,GAAG1tT,EAAEonT,GAAG,IAAI/tT,EAAEq0T,GAAG1tT,EAAE55B,GAAG,IAAIghV,EAAE,EAAEA,EAAE31R,EAAEnxD,OAAO8mV,GAAG,EAAE,CAAC,IAAIrnT,EAAE0xB,EAAE21R,GAAG9tO,EAAE7nD,EAAE21R,EAAE,GAAG,UAAUrnT,EAAEitT,GAAGlpV,EAAEw1G,GAAG,4BAA4Bv5E,EAAE0rT,GAAG3nV,EAAEw1G,GAAG,aAAav5E,EAAE6rT,GAAG9nV,EAAEw1G,GAAGsuO,EAAG9jV,EAAEi8B,EAAEu5E,EAAEjgF,EAAE,CAAC,OAAO2G,GAAG,IAAK,QAAQ4qT,EAAG9mV,EAAEsC,GAAG,MAAM,IAAK,WAAWglV,GAAGtnV,EAAEsC,GAAG,MAAM,IAAK,SAAS,IAAI8I,EAAEpL,EAAEymV,cAAc2oB,YAAYpvW,EAAEymV,cAAc2oB,cAAc9sW,EAAEg0S,SAAS,IAAI79R,EAAEnW,EAAER,MAAM,MAAM2W,EAAEwuU,GAAGjnV,IAAIsC,EAAEg0S,SAAS79R,GAAE,GAAIrN,MAAM9I,EAAEg0S,WAAW,MAAMh0S,EAAEo+C,aAAaumS,GAAGjnV,IAAIsC,EAAEg0S,SACnfh0S,EAAEo+C,cAAa,GAAIumS,GAAGjnV,IAAIsC,EAAEg0S,SAASh0S,EAAEg0S,SAAS,GAAG,IAAG,IAAKt2S,EAAE89V,IAAIx7V,CAAC,CAAC,MAAMqnL,GAAGqmL,GAAExsV,EAAEA,EAAEioU,OAAO9hK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAgB,GAAdunL,GAAG3nV,EAAE/F,GAAG4tV,GAAG5tV,GAAQ,EAAFiX,EAAI,CAAC,GAAG,OAAOjX,EAAE6mU,UAAU,MAAM9kV,MAAM69B,EAAE,MAAMpjC,EAAEwjB,EAAE6mU,UAAU/nV,EAAEkhB,EAAE29U,cAAc,IAAInhW,EAAEkvE,UAAU5sE,CAAC,CAAC,MAAMqnL,GAAGqmL,GAAExsV,EAAEA,EAAEioU,OAAO9hK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAgB,GAAdunL,GAAG3nV,EAAE/F,GAAG4tV,GAAG5tV,GAAQ,EAAFiX,GAAK,OAAOD,GAAGA,EAAEoxT,cAAc2E,aAAa,IAAIM,GAAGtnU,EAAEqwO,cAAc,CAAC,MAAMjwE,GAAGqmL,GAAExsV,EAAEA,EAAEioU,OAAO9hK,EAAE,CAAC,MAAM,KAAK,EAG4G,QAAQunL,GAAG3nV,EACnf/F,GAAG4tV,GAAG5tV,SAJ4Y,KAAK,GAAG0tV,GAAG3nV,EAAE/F,GAAG4tV,GAAG5tV,GAAqB,MAAlBxjB,EAAEwjB,EAAEmR,OAAQ+2T,QAAappV,EAAE,OAAOtC,EAAE4rV,cAAc5rV,EAAEqqV,UAAUhxF,SAAS/2P,GAAGA,GAClf,OAAOtC,EAAEwrV,WAAW,OAAOxrV,EAAEwrV,UAAUI,gBAAgBylB,GAAG3kB,OAAQ,EAAFjyT,GAAKu2U,GAAGxtV,GAAG,MAAM,KAAK,GAAsF,GAAnFyY,EAAE,OAAOzB,GAAG,OAAOA,EAAEoxT,cAAqB,EAAPpoU,EAAE7V,MAAQiiW,IAAGr6U,EAAEq6U,KAAI3zU,EAAEi1U,GAAG3nV,EAAE/F,GAAGosV,GAAEr6U,GAAG27U,GAAG3nV,EAAE/F,GAAG4tV,GAAG5tV,GAAQ,KAAFiX,EAAO,CAA0B,GAAzBlF,EAAE,OAAO/R,EAAEooU,eAAkBpoU,EAAE6mU,UAAUhxF,SAAS9jO,KAAK0G,GAAG,KAAY,EAAPzY,EAAE7V,MAAQ,IAAImiW,GAAEtsV,EAAEyY,EAAEzY,EAAEmR,MAAM,OAAOsH,GAAG,CAAC,IAAIu5E,EAAEs6P,GAAE7zU,EAAE,OAAO6zU,IAAG,CAAe,OAAVr3V,GAAJrN,EAAE0kW,IAAMn7U,MAAavpB,EAAE0jE,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAGqhS,GAAG,EAAE/kW,EAAEA,EAAEqgV,QAAQ,MAAM,KAAK,EAAEskB,GAAG3kW,EAAEA,EAAEqgV,QAAQ,IAAI/pV,EAAE0J,EAAEi/U,UAAU,GAAG,oBAAoB3oV,EAAEuhR,qBAAqB,CAACxoP,EAAErvB,EAAEovB,EAAEpvB,EAAEqgV,OAAO,IAAIliU,EAAEkR,EAAE/4B,EAAEgF,MACpf6iB,EAAE43U,cAAcz/V,EAAE8I,MAAM+e,EAAEqiU,cAAclqV,EAAEuhR,sBAAsB,CAAC,MAAMt5F,GAAGqmL,GAAEv1U,EAAED,EAAEmvJ,EAAE,CAAC,CAAC,MAAM,KAAK,EAAEomL,GAAG3kW,EAAEA,EAAEqgV,QAAQ,MAAM,KAAK,GAAG,GAAG,OAAOrgV,EAAEwgV,cAAc,CAAC0lB,GAAG97P,GAAG,QAAQ,EAAE,OAAO/8F,GAAGA,EAAEgzU,OAAOrgV,EAAE0kW,GAAEr3V,GAAG64V,GAAG97P,EAAE,CAACv5E,EAAEA,EAAEo4M,OAAO,CAAC7wN,EAAE,IAAIyY,EAAE,KAAKu5E,EAAEhyF,IAAI,CAAC,GAAG,IAAIgyF,EAAE1mC,KAAK,GAAG,OAAO7yC,EAAE,CAACA,EAAEu5E,EAAE,IAAIx1G,EAAEw1G,EAAE60O,UAAU90T,EAAa,oBAAVjzB,EAAEtC,EAAE87C,OAA4BuvK,YAAY/oN,EAAE+oN,YAAY,UAAU,OAAO,aAAa/oN,EAAE+7D,QAAQ,QAASniC,EAAEs5E,EAAE60O,UAAkC/G,OAAE,KAA1B31R,EAAE6nD,EAAE2rP,cAAcrlT,QAAoB,OAAO6R,GAAGA,EAAE35B,eAAe,WAAW25B,EAAE0Q,QAAQ,KAAKniC,EAAE4f,MAAMuiB,QACzf4qR,GAAG,UAAU3F,GAAG,CAAC,MAAM35J,GAAGqmL,GAAExsV,EAAEA,EAAEioU,OAAO9hK,EAAE,CAAC,OAAO,GAAG,IAAIn0E,EAAE1mC,KAAK,GAAG,OAAO7yC,EAAE,IAAIu5E,EAAE60O,UAAUn7Q,UAAU35C,EAAE,GAAGigF,EAAE2rP,aAAa,CAAC,MAAMx3K,GAAGqmL,GAAExsV,EAAEA,EAAEioU,OAAO9hK,EAAE,OAAO,IAAI,KAAKn0E,EAAE1mC,KAAK,KAAK0mC,EAAE1mC,KAAK,OAAO0mC,EAAEo2O,eAAep2O,IAAIhyF,IAAI,OAAOgyF,EAAE7gF,MAAM,CAAC6gF,EAAE7gF,MAAM82T,OAAOj2O,EAAEA,EAAEA,EAAE7gF,MAAM,QAAQ,CAAC,GAAG6gF,IAAIhyF,EAAE,MAAMA,EAAE,KAAK,OAAOgyF,EAAE6+H,SAAS,CAAC,GAAG,OAAO7+H,EAAEi2O,QAAQj2O,EAAEi2O,SAASjoU,EAAE,MAAMA,EAAEyY,IAAIu5E,IAAIv5E,EAAE,MAAMu5E,EAAEA,EAAEi2O,MAAM,CAACxvT,IAAIu5E,IAAIv5E,EAAE,MAAMu5E,EAAE6+H,QAAQo3G,OAAOj2O,EAAEi2O,OAAOj2O,EAAEA,EAAE6+H,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG68H,GAAG3nV,EAAE/F,GAAG4tV,GAAG5tV,GAAK,EAAFiX,GAAKu2U,GAAGxtV,GAAS,KAAK,IACtd,CAAC,SAAS4tV,GAAG5tV,GAAG,IAAI+F,EAAE/F,EAAEkoU,MAAM,GAAK,EAAFniU,EAAI,CAAC,IAAI/F,EAAE,CAAC,IAAI,IAAIgX,EAAEhX,EAAEioU,OAAO,OAAOjxT,GAAG,CAAC,GAAG+1U,GAAG/1U,GAAG,CAAC,IAAIC,EAAED,EAAE,MAAMhX,CAAC,CAACgX,EAAEA,EAAEixT,MAAM,CAAC,MAAMlmV,MAAM69B,EAAE,KAAM,CAAC,OAAO3I,EAAEq0C,KAAK,KAAK,EAAE,IAAI9uE,EAAEy6B,EAAE4vT,UAAkB,GAAR5vT,EAAEixT,QAAW5D,GAAG9nV,EAAE,IAAIy6B,EAAEixT,QAAQ,IAAgBilB,GAAGntV,EAATgtV,GAAGhtV,GAAUxjB,GAAG,MAAM,KAAK,EAAE,KAAK,EAAE,IAAIsjV,EAAE7oT,EAAE4vT,UAAUzwF,cAAsB62G,GAAGjtV,EAATgtV,GAAGhtV,GAAU8/T,GAAG,MAAM,QAAQ,MAAM/9U,MAAM69B,EAAE,MAAO,CAAC,MAAMuqB,GAAGqiT,GAAExsV,EAAEA,EAAEioU,OAAO99R,EAAE,CAACnqC,EAAEkoU,QAAQ,CAAC,CAAG,KAAFniU,IAAS/F,EAAEkoU,QAAQ,KAAK,CAAC,SAAS6lB,GAAG/tV,EAAE+F,EAAEiR,GAAGs1U,GAAEtsV,EAAEguV,GAAGhuV,EAAE+F,EAAEiR,EAAE,CACvb,SAASg3U,GAAGhuV,EAAE+F,EAAEiR,GAAG,IAAI,IAAIC,EAAE,KAAY,EAAPjX,EAAE7V,MAAQ,OAAOmiW,IAAG,CAAC,IAAI9vW,EAAE8vW,GAAExtW,EAAEtC,EAAE20B,MAAM,GAAG,KAAK30B,EAAE8uE,KAAKr0C,EAAE,CAAC,IAAI6oT,EAAE,OAAOtjV,EAAE4rV,eAAe+jB,GAAG,IAAIrsB,EAAE,CAAC,IAAIpnT,EAAEl8B,EAAEwrV,UAAU79R,EAAE,OAAOzxB,GAAG,OAAOA,EAAE0vT,eAAegkB,GAAE1zU,EAAEyzU,GAAG,IAAIp6U,EAAEq6U,GAAO,GAALD,GAAGrsB,GAAMssB,GAAEjiT,KAAKp4B,EAAE,IAAIu6U,GAAE9vW,EAAE,OAAO8vW,IAAOniT,GAAJ21R,EAAEwsB,IAAMn7U,MAAM,KAAK2uT,EAAEx0Q,KAAK,OAAOw0Q,EAAEsI,cAAc6lB,GAAGzxW,GAAG,OAAO2tD,GAAGA,EAAE89R,OAAOnI,EAAEwsB,GAAEniT,GAAG8jT,GAAGzxW,GAAG,KAAK,OAAOsC,GAAGwtW,GAAExtW,EAAEkvW,GAAGlvW,EAAEinB,EAAEiR,GAAGl4B,EAAEA,EAAE+xO,QAAQy7H,GAAE9vW,EAAE2vW,GAAGzzU,EAAE0zU,GAAEr6U,CAAC,CAACm8U,GAAGluV,EAAM,MAAM,KAAoB,KAAfxjB,EAAEuuW,eAAoB,OAAOjsW,GAAGA,EAAEmpV,OAAOzrV,EAAE8vW,GAAExtW,GAAGovW,GAAGluV,EAAM,CAAC,CACvc,SAASkuV,GAAGluV,GAAG,KAAK,OAAOssV,IAAG,CAAC,IAAIvmV,EAAEumV,GAAE,GAAG,KAAa,KAARvmV,EAAEmiU,OAAY,CAAC,IAAIlxT,EAAEjR,EAAEiiU,UAAU,IAAI,GAAG,KAAa,KAARjiU,EAAEmiU,OAAY,OAAOniU,EAAEulD,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG8gS,IAAGQ,GAAG,EAAE7mV,GAAG,MAAM,KAAK,EAAE,IAAIkR,EAAElR,EAAE8gU,UAAU,GAAW,EAAR9gU,EAAEmiU,QAAUkkB,GAAE,GAAG,OAAOp1U,EAAEC,EAAEilP,wBAAwB,CAAC,IAAI1/Q,EAAEupB,EAAE+yT,cAAc/yT,EAAE1qB,KAAK27B,EAAE2mU,cAAcK,GAAGj4U,EAAE1qB,KAAK27B,EAAE2mU,eAAe1mU,EAAEqlP,mBAAmB9/Q,EAAEw6B,EAAEoxT,cAAcnxT,EAAEk3U,oCAAoC,CAAC,IAAIrvW,EAAEinB,EAAEy5U,YAAY,OAAO1gW,GAAG0hW,GAAGz6U,EAAEjnB,EAAEm4B,GAAG,MAAM,KAAK,EAAE,IAAI6oT,EAAE/5T,EAAEy5U,YAAY,GAAG,OAAO1f,EAAE,CAAQ,GAAP9oT,EAAE,KAAQ,OAAOjR,EAAEoL,MAAM,OAAOpL,EAAEoL,MAAMm6C,KAAK,KAAK,EACvf,KAAK,EAAEt0C,EAAEjR,EAAEoL,MAAM01T,UAAU2Z,GAAGz6U,EAAE+5T,EAAE9oT,EAAE,CAAC,MAAM,KAAK,EAAE,IAAI0B,EAAE3S,EAAE8gU,UAAU,GAAG,OAAO7vT,GAAW,EAARjR,EAAEmiU,MAAQ,CAAClxT,EAAE0B,EAAE,IAAIyxB,EAAEpkC,EAAE43U,cAAc,OAAO53U,EAAE1qB,MAAM,IAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAW8uD,EAAE2hT,WAAW90U,EAAExE,QAAQ,MAAM,IAAK,MAAM23B,EAAEj6B,MAAM8G,EAAE9G,IAAIi6B,EAAEj6B,KAAK,CAAC,MAAM,KAAK,EAAQ,KAAK,EAAQ,KAAK,GAAyJ,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAhM,KAAK,GAAG,GAAG,OAAOnK,EAAEqiU,cAAc,CAAC,IAAIr2T,EAAEhM,EAAEiiU,UAAU,GAAG,OAAOj2T,EAAE,CAAC,IAAI0G,EAAE1G,EAAEq2T,cAAc,GAAG,OAAO3vT,EAAE,CAAC,IAAIu5E,EAAEv5E,EAAE4vT,WAAW,OAAOr2O,GAAGq7O,GAAGr7O,EAAE,CAAC,CAAC,CAAC,MAC5c,QAAQ,MAAMjwG,MAAM69B,EAAE,MAAOwsU,IAAW,IAARrmV,EAAEmiU,OAAW2kB,GAAG9mV,EAAE,CAAC,MAAMne,GAAG4kW,GAAEzmV,EAAEA,EAAEkiU,OAAOrgV,EAAE,CAAC,CAAC,GAAGme,IAAI/F,EAAE,CAACssV,GAAE,KAAK,KAAK,CAAa,GAAG,QAAft1U,EAAEjR,EAAE8qN,SAAoB,CAAC75M,EAAEixT,OAAOliU,EAAEkiU,OAAOqkB,GAAEt1U,EAAE,KAAK,CAACs1U,GAAEvmV,EAAEkiU,MAAM,CAAC,CAAC,SAAS6lB,GAAG9tV,GAAG,KAAK,OAAOssV,IAAG,CAAC,IAAIvmV,EAAEumV,GAAE,GAAGvmV,IAAI/F,EAAE,CAACssV,GAAE,KAAK,KAAK,CAAC,IAAIt1U,EAAEjR,EAAE8qN,QAAQ,GAAG,OAAO75M,EAAE,CAACA,EAAEixT,OAAOliU,EAAEkiU,OAAOqkB,GAAEt1U,EAAE,KAAK,CAACs1U,GAAEvmV,EAAEkiU,MAAM,CAAC,CACvS,SAASgmB,GAAGjuV,GAAG,KAAK,OAAOssV,IAAG,CAAC,IAAIvmV,EAAEumV,GAAE,IAAI,OAAOvmV,EAAEulD,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,IAAIt0C,EAAEjR,EAAEkiU,OAAO,IAAI2kB,GAAG,EAAE7mV,EAAE,CAAC,MAAMokC,GAAGqiT,GAAEzmV,EAAEiR,EAAEmzB,EAAE,CAAC,MAAM,KAAK,EAAE,IAAIlzB,EAAElR,EAAE8gU,UAAU,GAAG,oBAAoB5vT,EAAEilP,kBAAkB,CAAC,IAAI1/Q,EAAEupB,EAAEkiU,OAAO,IAAIhxT,EAAEilP,mBAAmB,CAAC,MAAM/xN,GAAGqiT,GAAEzmV,EAAEvpB,EAAE2tD,EAAE,CAAC,CAAC,IAAIrrD,EAAEinB,EAAEkiU,OAAO,IAAI4kB,GAAG9mV,EAAE,CAAC,MAAMokC,GAAGqiT,GAAEzmV,EAAEjnB,EAAEqrD,EAAE,CAAC,MAAM,KAAK,EAAE,IAAI21R,EAAE/5T,EAAEkiU,OAAO,IAAI4kB,GAAG9mV,EAAE,CAAC,MAAMokC,GAAGqiT,GAAEzmV,EAAE+5T,EAAE31R,EAAE,EAAE,CAAC,MAAMA,GAAGqiT,GAAEzmV,EAAEA,EAAEkiU,OAAO99R,EAAE,CAAC,GAAGpkC,IAAI/F,EAAE,CAACssV,GAAE,KAAK,KAAK,CAAC,IAAI5zU,EAAE3S,EAAE8qN,QAAQ,GAAG,OAAOn4M,EAAE,CAACA,EAAEuvT,OAAOliU,EAAEkiU,OAAOqkB,GAAE5zU,EAAE,KAAK,CAAC4zU,GAAEvmV,EAAEkiU,MAAM,CAAC,CAC7d,IAwBkNmmB,GAxB9MC,GAAGzrV,KAAKyf,KAAKisU,GAAG1tB,EAAGwiB,uBAAuB9wT,GAAGsuS,EAAG6nB,kBAAkB8F,GAAG3tB,EAAG2M,wBAAwB4S,GAAE,EAAE+E,GAAE,KAAKr9Q,GAAE,KAAK2mR,GAAE,EAAElF,GAAG,EAAED,GAAG1O,GAAG,GAAGoR,GAAE,EAAE0C,GAAG,KAAKlO,GAAG,EAAEmO,GAAG,EAAEC,GAAG,EAAEC,GAAG,KAAKC,GAAG,KAAKhB,GAAG,EAAE7B,GAAGnlU,IAASioU,GAAG,KAAKjH,IAAG,EAAGC,GAAG,KAAKG,GAAG,KAAK8G,IAAG,EAAGC,GAAG,KAAKC,GAAG,EAAEC,GAAG,EAAEC,GAAG,KAAKC,IAAI,EAAEC,GAAG,EAAE,SAASvO,KAAI,OAAO,KAAO,EAAFX,IAAKjX,MAAK,IAAIkmB,GAAGA,GAAGA,GAAGlmB,IAAG,CAChU,SAAS6X,GAAG/gV,GAAG,OAAG,KAAY,EAAPA,EAAE7V,MAAe,EAAK,KAAO,EAAFg2V,KAAM,IAAIqO,GAASA,IAAGA,GAAK,OAAOzQ,GAAGrQ,YAAkB,IAAI2hB,KAAKA,GAAGnkB,MAAMmkB,IAAU,KAAPrvV,EAAE6tB,IAAkB7tB,EAAiBA,OAAE,KAAjBA,EAAE3e,OAAOyB,OAAmB,GAAGirV,GAAG/tU,EAAE3kB,KAAc,CAAC,SAAS2lW,GAAGhhV,EAAE+F,EAAEiR,EAAEC,GAAG,GAAG,GAAGi4U,GAAG,MAAMA,GAAG,EAAEC,GAAG,KAAKptW,MAAM69B,EAAE,MAAMwrT,GAAGprU,EAAEgX,EAAEC,GAAM,KAAO,EAAFkpU,KAAMngV,IAAIklV,KAAEllV,IAAIklV,KAAI,KAAO,EAAF/E,MAAOuO,IAAI13U,GAAG,IAAI+0U,IAAGuD,GAAGtvV,EAAEwuV,KAAIe,GAAGvvV,EAAEiX,GAAG,IAAID,GAAG,IAAImpU,IAAG,KAAY,EAAPp6U,EAAE5b,QAAU6hW,GAAG9iB,KAAI,IAAIyS,IAAIG,MAAK,CAC1Y,SAASyT,GAAGvvV,EAAE+F,GAAG,IAAIiR,EAAEhX,EAAEwvV,cA5MzB,SAAYxvV,EAAE+F,GAAG,IAAI,IAAIiR,EAAEhX,EAAE4qU,eAAe3zT,EAAEjX,EAAE6qU,YAAYruV,EAAEwjB,EAAEyvV,gBAAgB3wW,EAAEkhB,EAAE2qU,aAAa,EAAE7rV,GAAG,CAAC,IAAIghV,EAAE,GAAGoK,GAAGprV,GAAG45B,EAAE,GAAGonT,EAAE31R,EAAE3tD,EAAEsjV,IAAO,IAAI31R,EAAM,KAAKzxB,EAAE1B,IAAI,KAAK0B,EAAEzB,KAAGz6B,EAAEsjV,GAAGkL,GAAGtyT,EAAE3S,IAAQokC,GAAGpkC,IAAI/F,EAAE0vV,cAAch3U,GAAG55B,IAAI45B,CAAC,CAAC,CA4MnLi3U,CAAG3vV,EAAE+F,GAAG,IAAIkR,EAAEyzT,GAAG1qU,EAAEA,IAAIklV,GAAEsJ,GAAE,GAAG,GAAG,IAAIv3U,EAAE,OAAOD,GAAG4xT,GAAG5xT,GAAGhX,EAAEwvV,aAAa,KAAKxvV,EAAE4vV,iBAAiB,OAAO,GAAG7pV,EAAEkR,GAAGA,EAAEjX,EAAE4vV,mBAAmB7pV,EAAE,CAAgB,GAAf,MAAMiR,GAAG4xT,GAAG5xT,GAAM,IAAIjR,EAAE,IAAI/F,EAAEsrD,IA7IsJ,SAAYtrD,GAAG27U,IAAG,EAAGE,GAAG77U,EAAE,CA6I5KgyO,CAAG69G,GAAG9vV,KAAK,KAAKC,IAAI67U,GAAGgU,GAAG9vV,KAAK,KAAKC,IAAI85U,IAAG,WAAW,KAAO,EAAFqG,KAAMrE,IAAI,IAAG9kU,EAAE,SAAS,CAAC,OAAOu0T,GAAGt0T,IAAI,KAAK,EAAED,EAAEsyT,GAAG,MAAM,KAAK,EAAEtyT,EAAEwyT,GAAG,MAAM,KAAK,GAAwC,QAAQxyT,EAAE0yT,SAApC,KAAK,UAAU1yT,EAAE8yT,GAAsB9yT,EAAE84U,GAAG94U,EAAE+4U,GAAGhwV,KAAK,KAAKC,GAAG,CAACA,EAAE4vV,iBAAiB7pV,EAAE/F,EAAEwvV,aAAax4U,CAAC,CAAC,CAC7c,SAAS+4U,GAAG/vV,EAAE+F,GAAc,GAAXqpV,IAAI,EAAEC,GAAG,EAAK,KAAO,EAAFlP,IAAK,MAAMp+V,MAAM69B,EAAE,MAAM,IAAI5I,EAAEhX,EAAEwvV,aAAa,GAAGQ,MAAMhwV,EAAEwvV,eAAex4U,EAAE,OAAO,KAAK,IAAIC,EAAEyzT,GAAG1qU,EAAEA,IAAIklV,GAAEsJ,GAAE,GAAG,GAAG,IAAIv3U,EAAE,OAAO,KAAK,GAAG,KAAO,GAAFA,IAAO,KAAKA,EAAEjX,EAAE0vV,eAAe3pV,EAAEA,EAAEkqV,GAAGjwV,EAAEiX,OAAO,CAAClR,EAAEkR,EAAE,IAAIz6B,EAAE2jW,GAAEA,IAAG,EAAE,IAAIrhW,EAAEoxW,KAAgD,IAAxChL,KAAIllV,GAAGwuV,KAAIzoV,IAAE+oV,GAAG,KAAK9C,GAAG9iB,KAAI,IAAIinB,GAAGnwV,EAAE+F,UAAUqqV,KAAK,KAAK,CAAC,MAAM13U,GAAG23U,GAAGrwV,EAAE0Y,EAAE,CAAU2lU,KAAKiQ,GAAGpqW,QAAQpF,EAAEqhW,GAAE3jW,EAAE,OAAOqrF,GAAE9hE,EAAE,GAAGm/U,GAAE,KAAKsJ,GAAE,EAAEzoV,EAAEgmV,GAAE,CAAC,GAAG,IAAIhmV,EAAE,CAAyC,GAAxC,IAAIA,IAAY,KAARvpB,EAAEyuV,GAAGjrU,MAAWiX,EAAEz6B,EAAEupB,EAAEuqV,GAAGtwV,EAAExjB,KAAQ,IAAIupB,EAAE,MAAMiR,EAAEy3U,GAAG0B,GAAGnwV,EAAE,GAAGsvV,GAAGtvV,EAAEiX,GAAGs4U,GAAGvvV,EAAEkpU,MAAKlyT,EAAE,GAAG,IAAIjR,EAAEupV,GAAGtvV,EAAEiX,OAChf,CAAuB,GAAtBz6B,EAAEwjB,EAAE9b,QAAQ8jV,UAAa,KAAO,GAAF/wT,KAGnC,SAAYjX,GAAG,IAAI,IAAI+F,EAAE/F,IAAI,CAAC,GAAW,MAAR+F,EAAEmiU,MAAY,CAAC,IAAIlxT,EAAEjR,EAAEy5U,YAAY,GAAG,OAAOxoU,GAAe,QAAXA,EAAEA,EAAEquU,QAAiB,IAAI,IAAIpuU,EAAE,EAAEA,EAAED,EAAEh+B,OAAOi+B,IAAI,CAAC,IAAIz6B,EAAEw6B,EAAEC,GAAGn4B,EAAEtC,EAAEwoW,YAAYxoW,EAAEA,EAAE8B,MAAM,IAAI,IAAIu2V,GAAG/1V,IAAItC,GAAG,OAAM,CAAE,CAAC,MAAMsjV,GAAG,OAAM,CAAE,CAAC,CAAC,CAAW,GAAV9oT,EAAEjR,EAAEoL,MAAwB,MAAfpL,EAAEglV,cAAoB,OAAO/zU,EAAEA,EAAEixT,OAAOliU,EAAEA,EAAEiR,MAAM,CAAC,GAAGjR,IAAI/F,EAAE,MAAM,KAAK,OAAO+F,EAAE8qN,SAAS,CAAC,GAAG,OAAO9qN,EAAEkiU,QAAQliU,EAAEkiU,SAASjoU,EAAE,OAAM,EAAG+F,EAAEA,EAAEkiU,MAAM,CAACliU,EAAE8qN,QAAQo3G,OAAOliU,EAAEkiU,OAAOliU,EAAEA,EAAE8qN,OAAO,CAAC,CAAC,OAAM,CAAE,CAHvX0/H,CAAG/zW,KAAe,KAAVupB,EAAEkqV,GAAGjwV,EAAEiX,MAAmB,KAARn4B,EAAEmsV,GAAGjrU,MAAWiX,EAAEn4B,EAAEinB,EAAEuqV,GAAGtwV,EAAElhB,KAAK,IAAIinB,GAAG,MAAMiR,EAAEy3U,GAAG0B,GAAGnwV,EAAE,GAAGsvV,GAAGtvV,EAAEiX,GAAGs4U,GAAGvvV,EAAEkpU,MAAKlyT,EAAqC,OAAnChX,EAAEwwV,aAAah0W,EAAEwjB,EAAEywV,cAAcx5U,EAASlR,GAAG,KAAK,EAAE,KAAK,EAAE,MAAMhkB,MAAM69B,EAAE,MAAM,KAAK,EAC8B,KAAK,EAAE8wU,GAAG1wV,EAAE6uV,GAAGC,IAAI,MAD7B,KAAK,EAAU,GAARQ,GAAGtvV,EAAEiX,IAAS,UAAFA,KAAeA,GAAiB,IAAblR,EAAE8nV,GAAG,IAAI3kB,MAAU,CAAC,GAAG,IAAIwB,GAAG1qU,EAAE,GAAG,MAAyB,KAAnBxjB,EAAEwjB,EAAE4qU,gBAAqB3zT,KAAKA,EAAE,CAAC6pU,KAAI9gV,EAAE6qU,aAAa7qU,EAAE4qU,eAAepuV,EAAE,KAAK,CAACwjB,EAAE2wV,cAAchX,GAAG+W,GAAG3wV,KAAK,KAAKC,EAAE6uV,GAAGC,IAAI/oV,GAAG,KAAK,CAAC2qV,GAAG1wV,EAAE6uV,GAAGC,IAAI,MAAM,KAAK,EAAU,GAARQ,GAAGtvV,EAAEiX,IAAS,QAAFA,KAC9eA,EAAE,MAAqB,IAAflR,EAAE/F,EAAEqrU,WAAe7uV,GAAG,EAAE,EAAEy6B,GAAG,CAAC,IAAI6oT,EAAE,GAAGoK,GAAGjzT,GAAGn4B,EAAE,GAAGghV,GAAEA,EAAE/5T,EAAE+5T,IAAKtjV,IAAIA,EAAEsjV,GAAG7oT,IAAIn4B,CAAC,CAAqG,GAApGm4B,EAAEz6B,EAAqG,IAA3Fy6B,GAAG,KAAXA,EAAEiyT,KAAIjyT,GAAW,IAAI,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKA,EAAE,KAAK,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKo3U,GAAGp3U,EAAE,OAAOA,GAAU,CAACjX,EAAE2wV,cAAchX,GAAG+W,GAAG3wV,KAAK,KAAKC,EAAE6uV,GAAGC,IAAI73U,GAAG,KAAK,CAACy5U,GAAG1wV,EAAE6uV,GAAGC,IAAI,MAA+B,QAAQ,MAAM/sW,MAAM69B,EAAE,MAAO,CAAC,CAAW,OAAV2vU,GAAGvvV,EAAEkpU,MAAYlpU,EAAEwvV,eAAex4U,EAAE+4U,GAAGhwV,KAAK,KAAKC,GAAG,IAAI,CACrX,SAASswV,GAAGtwV,EAAE+F,GAAG,IAAIiR,EAAE43U,GAA2G,OAAxG5uV,EAAE9b,QAAQkkV,cAAc2E,eAAeojB,GAAGnwV,EAAE+F,GAAGmiU,OAAO,KAAe,KAAVloU,EAAEiwV,GAAGjwV,EAAE+F,MAAWA,EAAE8oV,GAAGA,GAAG73U,EAAE,OAAOjR,GAAG4lV,GAAG5lV,IAAW/F,CAAC,CAAC,SAAS2rV,GAAG3rV,GAAG,OAAO6uV,GAAGA,GAAG7uV,EAAE6uV,GAAGruW,KAAKyf,MAAM4uV,GAAG7uV,EAAE,CAE5L,SAASsvV,GAAGtvV,EAAE+F,GAAuD,IAApDA,IAAI4oV,GAAG5oV,IAAI2oV,GAAG1uV,EAAE4qU,gBAAgB7kU,EAAE/F,EAAE6qU,cAAc9kU,EAAM/F,EAAEA,EAAEyvV,gBAAgB,EAAE1pV,GAAG,CAAC,IAAIiR,EAAE,GAAGkzT,GAAGnkU,GAAGkR,EAAE,GAAGD,EAAEhX,EAAEgX,IAAI,EAAEjR,IAAIkR,CAAC,CAAC,CAAC,SAAS44U,GAAG7vV,GAAG,GAAG,KAAO,EAAFmgV,IAAK,MAAMp+V,MAAM69B,EAAE,MAAMowU,KAAK,IAAIjqV,EAAE2kU,GAAG1qU,EAAE,GAAG,GAAG,KAAO,EAAF+F,GAAK,OAAOwpV,GAAGvvV,EAAEkpU,MAAK,KAAK,IAAIlyT,EAAEi5U,GAAGjwV,EAAE+F,GAAG,GAAG,IAAI/F,EAAEsrD,KAAK,IAAIt0C,EAAE,CAAC,IAAIC,EAAEg0T,GAAGjrU,GAAG,IAAIiX,IAAIlR,EAAEkR,EAAED,EAAEs5U,GAAGtwV,EAAEiX,GAAG,CAAC,GAAG,IAAID,EAAE,MAAMA,EAAEy3U,GAAG0B,GAAGnwV,EAAE,GAAGsvV,GAAGtvV,EAAE+F,GAAGwpV,GAAGvvV,EAAEkpU,MAAKlyT,EAAE,GAAG,IAAIA,EAAE,MAAMj1B,MAAM69B,EAAE,MAAiF,OAA3E5f,EAAEwwV,aAAaxwV,EAAE9b,QAAQ8jV,UAAUhoU,EAAEywV,cAAc1qV,EAAE2qV,GAAG1wV,EAAE6uV,GAAGC,IAAIS,GAAGvvV,EAAEkpU,MAAY,IAAI,CACvd,SAAS0nB,GAAG5wV,EAAE+F,GAAG,IAAIiR,EAAEmpU,GAAEA,IAAG,EAAE,IAAI,OAAOngV,EAAE+F,EAAE,CAAC,QAAY,KAAJo6U,GAAEnpU,KAAUg1U,GAAG9iB,KAAI,IAAIyS,IAAIG,KAAK,CAAC,CAAC,SAAS+U,GAAG7wV,GAAG,OAAOgvV,IAAI,IAAIA,GAAG1jS,KAAK,KAAO,EAAF60R,KAAM6P,KAAK,IAAIjqV,EAAEo6U,GAAEA,IAAG,EAAE,IAAInpU,EAAEu3U,GAAG7gB,WAAWz2T,EAAE4W,GAAE,IAAI,GAAG0gU,GAAG7gB,WAAW,KAAK7/S,GAAE,EAAE7tB,EAAE,OAAOA,GAAG,CAAC,QAAQ6tB,GAAE5W,EAAEs3U,GAAG7gB,WAAW12T,EAAM,KAAO,GAAXmpU,GAAEp6U,KAAa+1U,IAAI,CAAC,CAAC,SAASmQ,KAAK3C,GAAGD,GAAGnlW,QAAQ+pC,GAAEo7T,GAAG,CAChT,SAAS8G,GAAGnwV,EAAE+F,GAAG/F,EAAEwwV,aAAa,KAAKxwV,EAAEywV,cAAc,EAAE,IAAIz5U,EAAEhX,EAAE2wV,cAAiD,IAAlC,IAAI35U,IAAIhX,EAAE2wV,eAAe,EAAE/W,GAAG5iU,IAAO,OAAO6wD,GAAE,IAAI7wD,EAAE6wD,GAAEogQ,OAAO,OAAOjxT,GAAG,CAAC,IAAIC,EAAED,EAAQ,OAAN2lU,GAAG1lU,GAAUA,EAAEq0C,KAAK,KAAK,EAA6B,QAA3Br0C,EAAEA,EAAE57B,KAAKmiS,yBAA4B,IAASvmQ,GAAGmkU,KAAK,MAAM,KAAK,EAAEsH,KAAKz0T,GAAE6sT,IAAI7sT,GAAEtV,IAAGsqU,KAAK,MAAM,KAAK,EAAEL,GAAG3rU,GAAG,MAAM,KAAK,EAAEyrU,KAAK,MAAM,KAAK,GAAc,KAAK,GAAGz0T,GAAE40T,IAAG,MAAM,KAAK,GAAGvE,GAAGrnU,EAAE57B,KAAK8qT,UAAU,MAAM,KAAK,GAAG,KAAK,GAAG8lD,KAAKj1U,EAAEA,EAAEixT,MAAM,CAAqE,GAApEid,GAAEllV,EAAE6nE,GAAE7nE,EAAE6hV,GAAG7hV,EAAE9b,QAAQ,MAAMsqW,GAAElF,GAAGvjV,EAAEgmV,GAAE,EAAE0C,GAAG,KAAKE,GAAGD,GAAGnO,GAAG,EAAEsO,GAAGD,GAAG,KAAQ,OAAO3P,GAAG,CAAC,IAAIl5U,EAC1f,EAAEA,EAAEk5U,GAAGjmW,OAAO+sB,IAAI,GAA2B,QAAhBkR,GAARD,EAAEioU,GAAGl5U,IAAOq5U,aAAqB,CAACpoU,EAAEooU,YAAY,KAAK,IAAI5iW,EAAEy6B,EAAE4nD,KAAK//E,EAAEk4B,EAAE6oU,QAAQ,GAAG,OAAO/gW,EAAE,CAAC,IAAIghV,EAAEhhV,EAAE+/E,KAAK//E,EAAE+/E,KAAKriF,EAAEy6B,EAAE4nD,KAAKihQ,CAAC,CAAC9oT,EAAE6oU,QAAQ5oU,CAAC,CAACgoU,GAAG,IAAI,CAAC,OAAOj/U,CAAC,CAC3K,SAASqwV,GAAGrwV,EAAE+F,GAAG,OAAE,CAAC,IAAIiR,EAAE6wD,GAAE,IAAuB,GAAnBw2Q,KAAK8E,GAAGj/V,QAAQ+/V,GAAMV,GAAG,CAAC,IAAI,IAAItsU,EAAE8W,GAAEq6S,cAAc,OAAOnxT,GAAG,CAAC,IAAIz6B,EAAEy6B,EAAE+0R,MAAM,OAAOxvT,IAAIA,EAAEqjW,QAAQ,MAAM5oU,EAAEA,EAAE4nD,IAAI,CAAC0kR,IAAG,CAAE,CAA4C,GAA3CD,GAAG,EAAEx1T,GAAEyuQ,GAAExuQ,GAAE,KAAKy1T,IAAG,EAAGC,GAAG,EAAEnxT,GAAGpuC,QAAQ,KAAQ,OAAO8yB,GAAG,OAAOA,EAAEixT,OAAO,CAAC8jB,GAAE,EAAE0C,GAAG1oV,EAAE8hE,GAAE,KAAK,KAAK,CAAC7nE,EAAE,CAAC,IAAIlhB,EAAEkhB,EAAE8/T,EAAE9oT,EAAEixT,OAAOvvT,EAAE1B,EAAEmzB,EAAEpkC,EAAqB,GAAnBA,EAAEyoV,GAAE91U,EAAEwvT,OAAO,MAAS,OAAO/9R,GAAG,kBAAkBA,GAAG,oBAAoBA,EAAEjiD,KAAK,CAAC,IAAI6pB,EAAEo4B,EAAE1xB,EAAEC,EAAEs5E,EAAEv5E,EAAE6yC,IAAI,GAAG,KAAY,EAAP7yC,EAAEtuB,QAAU,IAAI6nG,GAAG,KAAKA,GAAG,KAAKA,GAAG,CAAC,IAAIpqG,EAAE6wB,EAAEuvT,UAAUpgV,GAAG6wB,EAAE+mU,YAAY53V,EAAE43V,YAAY/mU,EAAE2vT,cAAcxgV,EAAEwgV,cACxe3vT,EAAEomU,MAAMj3V,EAAEi3V,QAAQpmU,EAAE+mU,YAAY,KAAK/mU,EAAE2vT,cAAc,KAAK,CAAC,IAAInzU,EAAEqzV,GAAGxoB,GAAG,GAAG,OAAO7qU,EAAE,CAACA,EAAEizU,QAAQ,IAAIqgB,GAAGtzV,EAAE6qU,EAAEpnT,EAAE55B,EAAEinB,GAAU,EAAP9Q,EAAE9K,MAAQg+V,GAAGrpW,EAAEizB,EAAEhM,GAAOokC,EAAEp4B,EAAE,IAAI7zB,GAAZ6nB,EAAE9Q,GAAcuqV,YAAY,GAAG,OAAOthW,EAAE,CAAC,IAAIioL,EAAE,IAAI7gK,IAAI6gK,EAAEjwI,IAAIiU,GAAGpkC,EAAEy5U,YAAYr5K,CAAC,MAAMjoL,EAAEg4C,IAAIiU,GAAG,MAAMnqC,CAAC,CAAM,GAAG,KAAO,EAAF+F,GAAK,CAACoiV,GAAGrpW,EAAEizB,EAAEhM,GAAG4kV,KAAK,MAAM3qV,CAAC,CAACmqC,EAAEpoD,MAAM69B,EAAE,KAAM,MAAM,GAAGk9T,IAAU,EAAPpkU,EAAEvuB,KAAO,CAAC,IAAImuV,EAAEgQ,GAAGxoB,GAAG,GAAG,OAAOwY,EAAE,CAAC,KAAa,MAARA,EAAEpQ,SAAeoQ,EAAEpQ,OAAO,KAAKqgB,GAAGjQ,EAAExY,EAAEpnT,EAAE55B,EAAEinB,GAAG+3U,GAAGyJ,GAAGp9S,EAAEzxB,IAAI,MAAM1Y,CAAC,CAAC,CAAClhB,EAAEqrD,EAAEo9S,GAAGp9S,EAAEzxB,GAAG,IAAIqzU,KAAIA,GAAE,GAAG,OAAO6C,GAAGA,GAAG,CAAC9vW,GAAG8vW,GAAGpuW,KAAK1B,GAAGA,EAAEghV,EAAE,EAAE,CAAC,OAAOhhV,EAAEwsE,KAAK,KAAK,EAAExsE,EAAEopV,OAAO,MACpfniU,IAAIA,EAAEjnB,EAAE+/V,OAAO94U,EAAkBs6U,GAAGvhW,EAAb8oW,GAAG9oW,EAAEqrD,EAAEpkC,IAAW,MAAM/F,EAAE,KAAK,EAAE0Y,EAAEyxB,EAAE,IAAI0zP,EAAE/+S,EAAEzD,KAAK6qQ,EAAEpnQ,EAAE+nV,UAAU,GAAG,KAAa,IAAR/nV,EAAEopV,SAAa,oBAAoBrqC,EAAElB,0BAA0B,OAAOz2C,GAAG,oBAAoBA,EAAE8hG,oBAAoB,OAAOC,KAAKA,GAAGtnV,IAAIulP,KAAK,CAACpnQ,EAAEopV,OAAO,MAAMniU,IAAIA,EAAEjnB,EAAE+/V,OAAO94U,EAAkBs6U,GAAGvhW,EAAbipW,GAAGjpW,EAAE45B,EAAE3S,IAAW,MAAM/F,CAAC,EAAElhB,EAAEA,EAAEmpV,MAAM,OAAO,OAAOnpV,EAAE,CAACgyW,GAAG95U,EAAE,CAAC,MAAM4hU,GAAI7yU,EAAE6yU,EAAG/wQ,KAAI7wD,GAAG,OAAOA,IAAI6wD,GAAE7wD,EAAEA,EAAEixT,QAAQ,QAAQ,CAAC,KAAK,CAAS,CAAC,SAASioB,KAAK,IAAIlwV,EAAEsuV,GAAGpqW,QAAsB,OAAdoqW,GAAGpqW,QAAQ+/V,GAAU,OAAOjkV,EAAEikV,GAAGjkV,CAAC,CACrd,SAAS2qV,KAAQ,IAAIoB,IAAG,IAAIA,IAAG,IAAIA,KAAEA,GAAE,GAAE,OAAO7G,IAAG,KAAQ,UAAH3E,KAAe,KAAQ,UAAHmO,KAAeY,GAAGpK,GAAEsJ,GAAE,CAAC,SAASyB,GAAGjwV,EAAE+F,GAAG,IAAIiR,EAAEmpU,GAAEA,IAAG,EAAE,IAAIlpU,EAAEi5U,KAAqC,IAA7BhL,KAAIllV,GAAGwuV,KAAIzoV,IAAE+oV,GAAG,KAAKqB,GAAGnwV,EAAE+F,UAAUgrV,KAAK,KAAK,CAAC,MAAMv0W,GAAG6zW,GAAGrwV,EAAExjB,EAAE,CAAgC,GAAtB6hW,KAAK8B,GAAEnpU,EAAEs3U,GAAGpqW,QAAQ+yB,EAAK,OAAO4wD,GAAE,MAAM9lF,MAAM69B,EAAE,MAAiB,OAAXslU,GAAE,KAAKsJ,GAAE,EAASzC,EAAC,CAAC,SAASgF,KAAK,KAAK,OAAOlpR,IAAGmpR,GAAGnpR,GAAE,CAAC,SAASuoR,KAAK,KAAK,OAAOvoR,KAAIihQ,MAAMkoB,GAAGnpR,GAAE,CAAC,SAASmpR,GAAGhxV,GAAG,IAAI+F,EAAEqoV,GAAGpuV,EAAEgoU,UAAUhoU,EAAEspV,IAAItpV,EAAE29U,cAAc39U,EAAEo9U,aAAa,OAAOr3U,EAAE+qV,GAAG9wV,GAAG6nE,GAAE9hE,EAAEusB,GAAGpuC,QAAQ,IAAI,CAC1d,SAAS4sW,GAAG9wV,GAAG,IAAI+F,EAAE/F,EAAE,EAAE,CAAC,IAAIgX,EAAEjR,EAAEiiU,UAAqB,GAAXhoU,EAAE+F,EAAEkiU,OAAU,KAAa,MAARliU,EAAEmiU,QAAc,GAAgB,QAAblxT,EAAE00U,GAAG10U,EAAEjR,EAAEujV,KAAkB,YAAJzhR,GAAE7wD,OAAc,CAAW,GAAG,QAAbA,EAAEk1U,GAAGl1U,EAAEjR,IAAmC,OAAnBiR,EAAEkxT,OAAO,WAAMrgQ,GAAE7wD,GAAS,GAAG,OAAOhX,EAAmE,OAAX+rV,GAAE,OAAElkR,GAAE,MAA5D7nE,EAAEkoU,OAAO,MAAMloU,EAAE+qV,aAAa,EAAE/qV,EAAEk9U,UAAU,IAA4B,CAAa,GAAG,QAAfn3U,EAAEA,EAAE8qN,SAAyB,YAAJhpJ,GAAE9hE,GAAS8hE,GAAE9hE,EAAE/F,CAAC,OAAO,OAAO+F,GAAG,IAAIgmV,KAAIA,GAAE,EAAE,CAAC,SAAS2E,GAAG1wV,EAAE+F,EAAEiR,GAAG,IAAIC,EAAE4W,GAAErxC,EAAE+xW,GAAG7gB,WAAW,IAAI6gB,GAAG7gB,WAAW,KAAK7/S,GAAE,EAC3Y,SAAY7tB,EAAE+F,EAAEiR,EAAEC,GAAG,GAAG+4U,WAAW,OAAOhB,IAAI,GAAG,KAAO,EAAF7O,IAAK,MAAMp+V,MAAM69B,EAAE,MAAM5I,EAAEhX,EAAEwwV,aAAa,IAAIh0W,EAAEwjB,EAAEywV,cAAc,GAAG,OAAOz5U,EAAE,OAAO,KAA2C,GAAtChX,EAAEwwV,aAAa,KAAKxwV,EAAEywV,cAAc,EAAKz5U,IAAIhX,EAAE9b,QAAQ,MAAMnC,MAAM69B,EAAE,MAAM5f,EAAEwvV,aAAa,KAAKxvV,EAAE4vV,iBAAiB,EAAE,IAAI9wW,EAAEk4B,EAAE6nU,MAAM7nU,EAAEynU,WAA8J,GA1NtT,SAAYz+U,EAAE+F,GAAG,IAAIiR,EAAEhX,EAAE2qU,cAAc5kU,EAAE/F,EAAE2qU,aAAa5kU,EAAE/F,EAAE4qU,eAAe,EAAE5qU,EAAE6qU,YAAY,EAAE7qU,EAAE0vV,cAAc3pV,EAAE/F,EAAEixV,kBAAkBlrV,EAAE/F,EAAE8qU,gBAAgB/kU,EAAEA,EAAE/F,EAAE+qU,cAAc,IAAI9zT,EAAEjX,EAAEqrU,WAAW,IAAIrrU,EAAEA,EAAEyvV,gBAAgB,EAAEz4U,GAAG,CAAC,IAAIx6B,EAAE,GAAG0tV,GAAGlzT,GAAGl4B,EAAE,GAAGtC,EAAEupB,EAAEvpB,GAAG,EAAEy6B,EAAEz6B,IAAI,EAAEwjB,EAAExjB,IAAI,EAAEw6B,IAAIl4B,CAAC,CAAC,CA0N5GoyW,CAAGlxV,EAAElhB,GAAGkhB,IAAIklV,KAAIr9Q,GAAEq9Q,GAAE,KAAKsJ,GAAE,GAAG,KAAoB,KAAfx3U,EAAE+zU,eAAoB,KAAa,KAAR/zU,EAAEkxT,QAAa6mB,KAAKA,IAAG,EAAGe,GAAGpmB,IAAG,WAAgB,OAALsmB,KAAY,IAAI,KAAIlxW,EAAE,KAAa,MAARk4B,EAAEkxT,OAAgB,KAAoB,MAAflxT,EAAE+zU,eAAqBjsW,EAAE,CAACA,EAAEyvW,GAAG7gB,WAAW6gB,GAAG7gB,WAAW,KAChf,IAAI5N,EAAEjyS,GAAEA,GAAE,EAAE,IAAInV,EAAEynU,GAAEA,IAAG,EAAE7tT,GAAGpuC,QAAQ,KA1CpC,SAAY8b,EAAE+F,GAAgB,GAAbwzU,GAAG/L,GAAa6H,GAAVr1U,EAAEk1U,MAAc,CAAC,GAAG,mBAAmBl1U,EAAE,IAAIgX,EAAE,CAACxI,MAAMxO,EAAEwmE,eAAev9D,IAAIjJ,EAAEymE,mBAAmBzmE,EAAE,CAA8C,IAAIiX,GAAjDD,GAAGA,EAAEhX,EAAE+2O,gBAAgB//N,EAAEpT,aAAaviB,QAAeymM,cAAc9wK,EAAE8wK,eAAe,GAAG7wK,GAAG,IAAIA,EAAEy+T,WAAW,CAAC1+T,EAAEC,EAAE0+T,WAAW,IAAIn5V,EAAEy6B,EAAE2+T,aAAa92V,EAAEm4B,EAAE4+T,UAAU5+T,EAAEA,EAAE6+T,YAAY,IAAI9+T,EAAEqjB,SAASv7C,EAAEu7C,QAAQ,CAAC,MAAMk+S,GAAGvhU,EAAE,KAAK,MAAMhX,CAAC,CAAC,IAAI8/T,EAAE,EAAEpnT,GAAG,EAAEyxB,GAAG,EAAEp4B,EAAE,EAAE0G,EAAE,EAAEu5E,EAAEhyF,EAAEpY,EAAE,KAAKme,EAAE,OAAO,CAAC,IAAI,IAAI9Q,EAAK+8F,IAAIh7E,GAAG,IAAIx6B,GAAG,IAAIw1G,EAAE33D,WAAW3hB,EAAEonT,EAAEtjV,GAAGw1G,IAAIlzG,GAAG,IAAIm4B,GAAG,IAAI+6E,EAAE33D,WAAW8P,EAAE21R,EAAE7oT,GAAG,IAAI+6E,EAAE33D,WAAWylS,GACnf9tO,EAAEtmC,UAAU1yE,QAAW,QAAQic,EAAE+8F,EAAEsqB,aAAkB10H,EAAEoqG,EAAEA,EAAE/8F,EAAE,OAAO,CAAC,GAAG+8F,IAAIhyF,EAAE,MAAM+F,EAA8C,GAA5Cne,IAAIovB,KAAKjF,IAAIv1B,IAAIk8B,EAAEonT,GAAGl4U,IAAI9I,KAAK25B,IAAIxB,IAAIkzB,EAAE21R,GAAM,QAAQ7qU,EAAE+8F,EAAE+6K,aAAa,MAAUnlR,GAAJoqG,EAAEpqG,GAAMypB,UAAU,CAAC2gF,EAAE/8F,CAAC,CAAC+hB,GAAG,IAAI0B,IAAI,IAAIyxB,EAAE,KAAK,CAAC37B,MAAMkK,EAAEzP,IAAIkhC,EAAE,MAAMnzB,EAAE,IAAI,CAACA,EAAEA,GAAG,CAACxI,MAAM,EAAEvF,IAAI,EAAE,MAAM+N,EAAE,KAA+C,IAA1CwiU,GAAG,CAAChE,YAAYx1U,EAAEy1U,eAAez+T,GAAGw2T,IAAG,EAAO8e,GAAEvmV,EAAE,OAAOumV,IAAG,GAAOtsV,GAAJ+F,EAAEumV,IAAMn7U,MAAM,KAAoB,KAAfpL,EAAEglV,eAAoB,OAAO/qV,EAAEA,EAAEioU,OAAOliU,EAAEumV,GAAEtsV,OAAO,KAAK,OAAOssV,IAAG,CAACvmV,EAAEumV,GAAE,IAAI,IAAIpuW,EAAE6nB,EAAEiiU,UAAU,GAAG,KAAa,KAARjiU,EAAEmiU,OAAY,OAAOniU,EAAEulD,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GACvK,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,MAA3W,KAAK,EAAE,GAAG,OAAOptE,EAAE,CAAC,IAAIioL,EAAEjoL,EAAEy/V,cAAcrF,EAAEp6V,EAAEkqV,cAAcz6S,EAAE5nB,EAAE8gU,UAAUhpC,EAAElwQ,EAAE4zT,wBAAwBx7U,EAAE+yT,cAAc/yT,EAAE1qB,KAAK8qL,EAAE63K,GAAGj4U,EAAE1qB,KAAK8qL,GAAGmyK,GAAG3qT,EAAEwgU,oCAAoCtwD,CAAC,CAAC,MAAM,KAAK,EAAE,IAAI33C,EAAEngP,EAAE8gU,UAAUzwF,cAAc,IAAI8P,EAAE7rN,SAAS6rN,EAAEr+L,YAAY,GAAG,IAAIq+L,EAAE7rN,UAAU6rN,EAAE1hN,iBAAiB0hN,EAAE3sN,YAAY2sN,EAAE1hN,iBAAiB,MAAyC,QAAQ,MAAMziD,MAAM69B,EAAE,MAAO,CAAC,MAAM24T,GAAGiU,GAAEzmV,EAAEA,EAAEkiU,OAAOsQ,EAAE,CAAa,GAAG,QAAfv4U,EAAE+F,EAAE8qN,SAAoB,CAAC7wN,EAAEioU,OAAOliU,EAAEkiU,OAAOqkB,GAAEtsV,EAAE,KAAK,CAACssV,GAAEvmV,EAAEkiU,MAAM,CAAC/pV,EAAEwuW,GAAGA,IAAG,CAAW,CAwCldyE,CAAGnxV,EAAEgX,GAAG22U,GAAG32U,EAAEhX,GAAGu1U,GAAGiE,IAAIhM,KAAK+L,GAAGC,GAAGD,GAAG,KAAKv5U,EAAE9b,QAAQ8yB,EAAE+2U,GAAG/2U,EAAEhX,EAAExjB,GAAGwsV,KAAKmX,GAAEznU,EAAEmV,GAAEiyS,EAAEyuB,GAAG7gB,WAAW5uV,CAAC,MAAMkhB,EAAE9b,QAAQ8yB,EAAsF,GAApF+3U,KAAKA,IAAG,EAAGC,GAAGhvV,EAAEivV,GAAGzyW,GAAGsC,EAAEkhB,EAAE2qU,aAAa,IAAI7rV,IAAImpW,GAAG,MAjOmJ,SAAYjoV,GAAG,GAAGiqU,IAAI,oBAAoBA,GAAGmnB,kBAAkB,IAAInnB,GAAGmnB,kBAAkBpnB,GAAGhqU,OAAE,EAAO,OAAuB,IAAhBA,EAAE9b,QAAQgkV,OAAW,CAAC,MAAMniU,GAAG,CAAC,CAiOxRsrV,CAAGr6U,EAAE6vT,WAAa0oB,GAAGvvV,EAAEkpU,MAAQ,OAAOnjU,EAAE,IAAIkR,EAAEjX,EAAEsxV,mBAAmBt6U,EAAE,EAAEA,EAAEjR,EAAE/sB,OAAOg+B,IAAIx6B,EAAEupB,EAAEiR,GAAGC,EAAEz6B,EAAE8B,MAAM,CAAC4pW,eAAe1rW,EAAE+0B,MAAMi2U,OAAOhrW,EAAEgrW,SAAS,GAAGK,GAAG,MAAMA,IAAG,EAAG7nV,EAAE8nV,GAAGA,GAAG,KAAK9nV,EAAE,KAAQ,EAAHivV,KAAO,IAAIjvV,EAAEsrD,KAAK0kS,KAAKlxW,EAAEkhB,EAAE2qU,aAAa,KAAO,EAAF7rV,GAAKkhB,IAAImvV,GAAGD,MAAMA,GAAG,EAAEC,GAAGnvV,GAAGkvV,GAAG,EAAEpT,IAAgB,CAFxFyV,CAAGvxV,EAAE+F,EAAEiR,EAAEC,EAAE,CAAC,QAAQs3U,GAAG7gB,WAAWlxV,EAAEqxC,GAAE5W,CAAC,CAAC,OAAO,IAAI,CAGhc,SAAS+4U,KAAK,GAAG,OAAOhB,GAAG,CAAC,IAAIhvV,EAAEurU,GAAG0jB,IAAIlpV,EAAEwoV,GAAG7gB,WAAW12T,EAAE6W,GAAE,IAAmC,GAA/B0gU,GAAG7gB,WAAW,KAAK7/S,GAAE,GAAG7tB,EAAE,GAAGA,EAAK,OAAOgvV,GAAG,IAAI/3U,GAAE,MAAO,CAAmB,GAAlBjX,EAAEgvV,GAAGA,GAAG,KAAKC,GAAG,EAAK,KAAO,EAAF9O,IAAK,MAAMp+V,MAAM69B,EAAE,MAAM,IAAIpjC,EAAE2jW,GAAO,IAALA,IAAG,EAAMmM,GAAEtsV,EAAE9b,QAAQ,OAAOooW,IAAG,CAAC,IAAIxtW,EAAEwtW,GAAExsB,EAAEhhV,EAAEqyB,MAAM,GAAG,KAAa,GAARm7U,GAAEpkB,OAAU,CAAC,IAAIxvT,EAAE55B,EAAEo+V,UAAU,GAAG,OAAOxkU,EAAE,CAAC,IAAI,IAAIyxB,EAAE,EAAEA,EAAEzxB,EAAE1/B,OAAOmxD,IAAI,CAAC,IAAIp4B,EAAE2G,EAAEyxB,GAAG,IAAImiT,GAAEv6U,EAAE,OAAOu6U,IAAG,CAAC,IAAI7zU,EAAE6zU,GAAE,OAAO7zU,EAAE6yC,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAGqhS,GAAG,EAAEl0U,EAAE35B,GAAG,IAAIkzG,EAAEv5E,EAAEtH,MAAM,GAAG,OAAO6gF,EAAEA,EAAEi2O,OAAOxvT,EAAE6zU,GAAEt6P,OAAO,KAAK,OAAOs6P,IAAG,CAAK,IAAI1kW,GAAR6wB,EAAE6zU,IAAUz7H,QAAQ57N,EAAEwjB,EAAEwvT,OAAa,GAAN6kB,GAAGr0U,GAAMA,IACnf1G,EAAE,CAACu6U,GAAE,KAAK,KAAK,CAAC,GAAG,OAAO1kW,EAAE,CAACA,EAAEqgV,OAAOhzU,EAAEq3V,GAAE1kW,EAAE,KAAK,CAAC0kW,GAAEr3V,CAAC,CAAC,CAAC,CAAC,IAAI/W,EAAEY,EAAEkpV,UAAU,GAAG,OAAO9pV,EAAE,CAAC,IAAIioL,EAAEjoL,EAAEizB,MAAM,GAAG,OAAOg1J,EAAE,CAACjoL,EAAEizB,MAAM,KAAK,EAAE,CAAC,IAAImnU,EAAEnyK,EAAE0qD,QAAQ1qD,EAAE0qD,QAAQ,KAAK1qD,EAAEmyK,CAAC,OAAO,OAAOnyK,EAAE,CAAC,CAACmmL,GAAExtW,CAAC,CAAC,CAAC,GAAG,KAAoB,KAAfA,EAAEisW,eAAoB,OAAOjrB,EAAEA,EAAEmI,OAAOnpV,EAAEwtW,GAAExsB,OAAO/5T,EAAE,KAAK,OAAOumV,IAAG,CAAK,GAAG,KAAa,MAApBxtW,EAAEwtW,IAAYpkB,OAAY,OAAOppV,EAAEwsE,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAGqhS,GAAG,EAAE7tW,EAAEA,EAAEmpV,QAAQ,IAAIt6S,EAAE7uC,EAAE+xO,QAAQ,GAAG,OAAOljM,EAAE,CAACA,EAAEs6S,OAAOnpV,EAAEmpV,OAAOqkB,GAAE3+T,EAAE,MAAM5nB,CAAC,CAACumV,GAAExtW,EAAEmpV,MAAM,CAAC,CAAC,IAAIpqC,EAAE79R,EAAE9b,QAAQ,IAAIooW,GAAEzuD,EAAE,OAAOyuD,IAAG,CAAK,IAAIpmG,GAAR45E,EAAEwsB,IAAUn7U,MAAM,GAAG,KAAoB,KAAf2uT,EAAEirB,eAAoB,OAClf7kG,EAAEA,EAAE+hF,OAAOnI,EAAEwsB,GAAEpmG,OAAOngP,EAAE,IAAI+5T,EAAEjiC,EAAE,OAAOyuD,IAAG,CAAK,GAAG,KAAa,MAApB5zU,EAAE4zU,IAAYpkB,OAAY,IAAI,OAAOxvT,EAAE4yC,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAGshS,GAAG,EAAEl0U,GAAG,CAAC,MAAMkgU,GAAI4T,GAAE9zU,EAAEA,EAAEuvT,OAAO2Q,EAAG,CAAC,GAAGlgU,IAAIonT,EAAE,CAACwsB,GAAE,KAAK,MAAMvmV,CAAC,CAAC,IAAIwyU,EAAE7/T,EAAEm4M,QAAQ,GAAG,OAAO0nH,EAAE,CAACA,EAAEtQ,OAAOvvT,EAAEuvT,OAAOqkB,GAAE/T,EAAE,MAAMxyU,CAAC,CAACumV,GAAE5zU,EAAEuvT,MAAM,CAAC,CAAU,GAATkY,GAAE3jW,EAAEs/V,KAAQ7R,IAAI,oBAAoBA,GAAGunB,sBAAsB,IAAIvnB,GAAGunB,sBAAsBxnB,GAAGhqU,EAAE,CAAC,MAAM44U,GAAI,CAAC3hU,GAAE,CAAE,CAAC,OAAOA,CAAC,CAAC,QAAQ4W,GAAE7W,EAAEu3U,GAAG7gB,WAAW3nU,CAAC,CAAC,CAAC,OAAM,CAAE,CAAC,SAAS0rV,GAAGzxV,EAAE+F,EAAEiR,GAAyBhX,EAAEkgV,GAAGlgV,EAAjB+F,EAAE6hV,GAAG5nV,EAAf+F,EAAEwhV,GAAGvwU,EAAEjR,GAAY,GAAY,GAAGA,EAAE+6U,KAAI,OAAO9gV,IAAIorU,GAAGprU,EAAE,EAAE+F,GAAGwpV,GAAGvvV,EAAE+F,GAAG,CACze,SAASymV,GAAExsV,EAAE+F,EAAEiR,GAAG,GAAG,IAAIhX,EAAEsrD,IAAImmS,GAAGzxV,EAAEA,EAAEgX,QAAQ,KAAK,OAAOjR,GAAG,CAAC,GAAG,IAAIA,EAAEulD,IAAI,CAACmmS,GAAG1rV,EAAE/F,EAAEgX,GAAG,KAAK,CAAM,GAAG,IAAIjR,EAAEulD,IAAI,CAAC,IAAIr0C,EAAElR,EAAE8gU,UAAU,GAAG,oBAAoB9gU,EAAE1qB,KAAKshT,0BAA0B,oBAAoB1lR,EAAE+wU,oBAAoB,OAAOC,KAAKA,GAAGtnV,IAAIsW,IAAI,CAAuBlR,EAAEm6U,GAAGn6U,EAAjB/F,EAAE+nV,GAAGhiV,EAAf/F,EAAEunV,GAAGvwU,EAAEhX,GAAY,GAAY,GAAGA,EAAE8gV,KAAI,OAAO/6U,IAAIqlU,GAAGrlU,EAAE,EAAE/F,GAAGuvV,GAAGxpV,EAAE/F,IAAI,KAAK,CAAC,CAAC+F,EAAEA,EAAEkiU,MAAM,CAAC,CACnV,SAASogB,GAAGroV,EAAE+F,EAAEiR,GAAG,IAAIC,EAAEjX,EAAEooV,UAAU,OAAOnxU,GAAGA,EAAEtlB,OAAOoU,GAAGA,EAAE+6U,KAAI9gV,EAAE6qU,aAAa7qU,EAAE4qU,eAAe5zT,EAAEkuU,KAAIllV,IAAIwuV,GAAEx3U,KAAKA,IAAI,IAAI+0U,IAAG,IAAIA,KAAM,UAAFyC,MAAeA,IAAG,IAAItlB,KAAI2kB,GAAGsC,GAAGnwV,EAAE,GAAG2uV,IAAI33U,GAAGu4U,GAAGvvV,EAAE+F,EAAE,CAAC,SAAS2rV,GAAG1xV,EAAE+F,GAAG,IAAIA,IAAI,KAAY,EAAP/F,EAAE7V,MAAQ4b,EAAE,GAAGA,EAAEykU,GAAU,KAAQ,WAAfA,KAAK,MAAuBA,GAAG,WAAW,IAAIxzT,EAAE8pU,KAAc,QAAV9gV,EAAEq/U,GAAGr/U,EAAE+F,MAAcqlU,GAAGprU,EAAE+F,EAAEiR,GAAGu4U,GAAGvvV,EAAEgX,GAAG,CAAC,SAAS4zU,GAAG5qV,GAAG,IAAI+F,EAAE/F,EAAEooU,cAAcpxT,EAAE,EAAE,OAAOjR,IAAIiR,EAAEjR,EAAEu3U,WAAWoU,GAAG1xV,EAAEgX,EAAE,CACjZ,SAASy2U,GAAGztV,EAAE+F,GAAG,IAAIiR,EAAE,EAAE,OAAOhX,EAAEsrD,KAAK,KAAK,GAAG,IAAIr0C,EAAEjX,EAAE6mU,UAAcrqV,EAAEwjB,EAAEooU,cAAc,OAAO5rV,IAAIw6B,EAAEx6B,EAAE8gW,WAAW,MAAM,KAAK,GAAGrmU,EAAEjX,EAAE6mU,UAAU,MAAM,QAAQ,MAAM9kV,MAAM69B,EAAE,MAAO,OAAO3I,GAAGA,EAAEtlB,OAAOoU,GAAG2rV,GAAG1xV,EAAEgX,EAAE,CAQqK,SAAS84U,GAAG9vV,EAAE+F,GAAG,OAAO2iU,GAAG1oU,EAAE+F,EAAE,CACjZ,SAAS4rV,GAAG3xV,EAAE+F,EAAEiR,EAAEC,GAAGlW,KAAKuqD,IAAItrD,EAAEe,KAAKhhB,IAAIi3B,EAAEjW,KAAK8vN,QAAQ9vN,KAAKoQ,MAAMpQ,KAAKknU,OAAOlnU,KAAK8lU,UAAU9lU,KAAK1lB,KAAK0lB,KAAK+3T,YAAY,KAAK/3T,KAAKlZ,MAAM,EAAEkZ,KAAK3c,IAAI,KAAK2c,KAAKq8U,aAAar3U,EAAEhF,KAAK49U,aAAa59U,KAAKqnU,cAAcrnU,KAAKy+U,YAAYz+U,KAAK48U,cAAc,KAAK58U,KAAK5W,KAAK8sB,EAAElW,KAAKgqV,aAAahqV,KAAKmnU,MAAM,EAAEnnU,KAAKm8U,UAAU,KAAKn8U,KAAK09U,WAAW19U,KAAK89U,MAAM,EAAE99U,KAAKinU,UAAU,IAAI,CAAC,SAASiV,GAAGj9U,EAAE+F,EAAEiR,EAAEC,GAAG,OAAO,IAAI06U,GAAG3xV,EAAE+F,EAAEiR,EAAEC,EAAE,CAAC,SAAS6xU,GAAG9oV,GAAiB,UAAdA,EAAEA,EAAEI,aAAuBJ,EAAE4xV,iBAAiB,CAEpd,SAAS/P,GAAG7hV,EAAE+F,GAAG,IAAIiR,EAAEhX,EAAEgoU,UACuB,OADb,OAAOhxT,IAAGA,EAAEimU,GAAGj9U,EAAEsrD,IAAIvlD,EAAE/F,EAAEjgB,IAAIigB,EAAE7V,OAAQ2uU,YAAY94T,EAAE84T,YAAY9hT,EAAE37B,KAAK2kB,EAAE3kB,KAAK27B,EAAE6vT,UAAU7mU,EAAE6mU,UAAU7vT,EAAEgxT,UAAUhoU,EAAEA,EAAEgoU,UAAUhxT,IAAIA,EAAEomU,aAAar3U,EAAEiR,EAAE37B,KAAK2kB,EAAE3kB,KAAK27B,EAAEkxT,MAAM,EAAElxT,EAAE+zU,aAAa,EAAE/zU,EAAEkmU,UAAU,MAAMlmU,EAAEkxT,MAAc,SAARloU,EAAEkoU,MAAelxT,EAAEynU,WAAWz+U,EAAEy+U,WAAWznU,EAAE6nU,MAAM7+U,EAAE6+U,MAAM7nU,EAAE7F,MAAMnR,EAAEmR,MAAM6F,EAAE2mU,cAAc39U,EAAE29U,cAAc3mU,EAAEoxT,cAAcpoU,EAAEooU,cAAcpxT,EAAEwoU,YAAYx/U,EAAEw/U,YAAYz5U,EAAE/F,EAAE2+U,aAAa3nU,EAAE2nU,aAAa,OAAO54U,EAAE,KAAK,CAAC84U,MAAM94U,EAAE84U,MAAMD,aAAa74U,EAAE64U,cAC/e5nU,EAAE65M,QAAQ7wN,EAAE6wN,QAAQ75M,EAAEnvB,MAAMmY,EAAEnY,MAAMmvB,EAAE5yB,IAAI4b,EAAE5b,IAAW4yB,CAAC,CACxD,SAAS+qU,GAAG/hV,EAAE+F,EAAEiR,EAAEC,EAAEz6B,EAAEsC,GAAG,IAAIghV,EAAE,EAAM,GAAJ7oT,EAAEjX,EAAK,oBAAoBA,EAAE8oV,GAAG9oV,KAAK8/T,EAAE,QAAQ,GAAG,kBAAkB9/T,EAAE8/T,EAAE,OAAO9/T,EAAE,OAAOA,GAAG,KAAKghU,EAAG,OAAOihB,GAAGjrU,EAAEr+B,SAAS6D,EAAEsC,EAAEinB,GAAG,KAAKk7T,EAAGnB,EAAE,EAAEtjV,GAAG,EAAE,MAAM,KAAK0kV,EAAG,OAAOlhU,EAAEi9U,GAAG,GAAGjmU,EAAEjR,EAAI,EAAFvpB,IAAOs8U,YAAYoI,EAAGlhU,EAAE6+U,MAAM//V,EAAEkhB,EAAE,KAAKshU,EAAG,OAAOthU,EAAEi9U,GAAG,GAAGjmU,EAAEjR,EAAEvpB,IAAKs8U,YAAYwI,EAAGthU,EAAE6+U,MAAM//V,EAAEkhB,EAAE,KAAKuhU,EAAG,OAAOvhU,EAAEi9U,GAAG,GAAGjmU,EAAEjR,EAAEvpB,IAAKs8U,YAAYyI,EAAGvhU,EAAE6+U,MAAM//V,EAAEkhB,EAAE,KAAK0hU,EAAG,OAAO4oB,GAAGtzU,EAAEx6B,EAAEsC,EAAEinB,GAAG,QAAQ,GAAG,kBAAkB/F,GAAG,OAAOA,EAAE,OAAOA,EAAEghR,UAAU,KAAKmgD,EAAGrB,EAAE,GAAG,MAAM9/T,EAAE,KAAKohU,EAAGtB,EAAE,EAAE,MAAM9/T,EAAE,KAAKqhU,EAAGvB,EAAE,GACpf,MAAM9/T,EAAE,KAAKwhU,EAAG1B,EAAE,GAAG,MAAM9/T,EAAE,KAAKyhU,EAAG3B,EAAE,GAAG7oT,EAAE,KAAK,MAAMjX,EAAE,MAAMje,MAAM69B,EAAE,IAAI,MAAM5f,EAAEA,SAASA,EAAE,KAAuD,OAAjD+F,EAAEk3U,GAAGnd,EAAE9oT,EAAEjR,EAAEvpB,IAAKs8U,YAAY94T,EAAE+F,EAAE1qB,KAAK47B,EAAElR,EAAE84U,MAAM//V,EAASinB,CAAC,CAAC,SAASk8U,GAAGjiV,EAAE+F,EAAEiR,EAAEC,GAA2B,OAAxBjX,EAAEi9U,GAAG,EAAEj9U,EAAEiX,EAAElR,IAAK84U,MAAM7nU,EAAShX,CAAC,CAAC,SAASsqV,GAAGtqV,EAAE+F,EAAEiR,EAAEC,GAAuE,OAApEjX,EAAEi9U,GAAG,GAAGj9U,EAAEiX,EAAElR,IAAK+yT,YAAY4I,EAAG1hU,EAAE6+U,MAAM7nU,EAAEhX,EAAE6mU,UAAU,CAAChxF,UAAS,GAAW71O,CAAC,CAAC,SAAS8hV,GAAG9hV,EAAE+F,EAAEiR,GAA8B,OAA3BhX,EAAEi9U,GAAG,EAAEj9U,EAAE,KAAK+F,IAAK84U,MAAM7nU,EAAShX,CAAC,CAC5W,SAASgiV,GAAGhiV,EAAE+F,EAAEiR,GAA8J,OAA3JjR,EAAEk3U,GAAG,EAAE,OAAOj9U,EAAErnB,SAASqnB,EAAErnB,SAAS,GAAGqnB,EAAEjgB,IAAIgmB,IAAK84U,MAAM7nU,EAAEjR,EAAE8gU,UAAU,CAACzwF,cAAcp2O,EAAEo2O,cAAcy7G,gBAAgB,KAAKp5D,eAAez4R,EAAEy4R,gBAAuB1yR,CAAC,CACtL,SAAS+rV,GAAG9xV,EAAE+F,EAAEiR,EAAEC,EAAEz6B,GAAGukB,KAAKuqD,IAAIvlD,EAAEhF,KAAKq1O,cAAcp2O,EAAEe,KAAKyvV,aAAazvV,KAAKqnV,UAAUrnV,KAAK7c,QAAQ6c,KAAK8wV,gBAAgB,KAAK9wV,KAAK4vV,eAAe,EAAE5vV,KAAKyuV,aAAazuV,KAAK6oV,eAAe7oV,KAAKlf,QAAQ,KAAKkf,KAAK6uV,iBAAiB,EAAE7uV,KAAKsqU,WAAWF,GAAG,GAAGpqU,KAAK0uV,gBAAgBtkB,IAAI,GAAGpqU,KAAK+pU,eAAe/pU,KAAK0vV,cAAc1vV,KAAKkwV,iBAAiBlwV,KAAK2uV,aAAa3uV,KAAK8pU,YAAY9pU,KAAK6pU,eAAe7pU,KAAK4pU,aAAa,EAAE5pU,KAAKgqU,cAAcI,GAAG,GAAGpqU,KAAKumV,iBAAiBrwU,EAAElW,KAAKuwV,mBAAmB90W,EAAEukB,KAAKgxV,gCAC/e,IAAI,CAAC,SAASC,GAAGhyV,EAAE+F,EAAEiR,EAAEC,EAAEz6B,EAAEsC,EAAEghV,EAAEpnT,EAAEyxB,GAAgN,OAA7MnqC,EAAE,IAAI8xV,GAAG9xV,EAAE+F,EAAEiR,EAAE0B,EAAEyxB,GAAG,IAAIpkC,GAAGA,EAAE,GAAE,IAAKjnB,IAAIinB,GAAG,IAAIA,EAAE,EAAEjnB,EAAEm+V,GAAG,EAAE,KAAK,KAAKl3U,GAAG/F,EAAE9b,QAAQpF,EAAEA,EAAE+nV,UAAU7mU,EAAElhB,EAAEspV,cAAc,CAACrkV,QAAQkzB,EAAE81T,aAAa/1T,EAAEo4E,MAAM,KAAKg6P,YAAY,KAAK6I,0BAA0B,MAAM1S,GAAGzgW,GAAUkhB,CAAC,CACzP,SAASo6B,GAAGp6B,GAAG,IAAIA,EAAE,OAAO66U,GAAuB76U,EAAE,CAAC,GAAG+nU,GAA1B/nU,EAAEA,EAAE4gV,mBAA8B5gV,GAAG,IAAIA,EAAEsrD,IAAI,MAAMvpE,MAAM69B,EAAE,MAAM,IAAI7Z,EAAE/F,EAAE,EAAE,CAAC,OAAO+F,EAAEulD,KAAK,KAAK,EAAEvlD,EAAEA,EAAE8gU,UAAUhlV,QAAQ,MAAMme,EAAE,KAAK,EAAE,GAAGm7U,GAAGp1U,EAAE1qB,MAAM,CAAC0qB,EAAEA,EAAE8gU,UAAU2U,0CAA0C,MAAMx7U,CAAC,EAAE+F,EAAEA,EAAEkiU,MAAM,OAAO,OAAOliU,GAAG,MAAMhkB,MAAM69B,EAAE,KAAM,CAAC,GAAG,IAAI5f,EAAEsrD,IAAI,CAAC,IAAIt0C,EAAEhX,EAAE3kB,KAAK,GAAG8/V,GAAGnkU,GAAG,OAAOskU,GAAGt7U,EAAEgX,EAAEjR,EAAE,CAAC,OAAOA,CAAC,CACpW,SAASmsV,GAAGlyV,EAAE+F,EAAEiR,EAAEC,EAAEz6B,EAAEsC,EAAEghV,EAAEpnT,EAAEyxB,GAAwK,OAArKnqC,EAAEgyV,GAAGh7U,EAAEC,GAAE,EAAGjX,EAAExjB,EAAEsC,EAAEghV,EAAEpnT,EAAEyxB,IAAKtoD,QAAQu4C,GAAG,MAAMpjB,EAAEhX,EAAE9b,SAAsBpF,EAAE2hT,GAAhBxpR,EAAE6pU,KAAItkW,EAAEukW,GAAG/pU,KAAeyb,cAAS,IAAS1sB,GAAG,OAAOA,EAAEA,EAAE,KAAKm6U,GAAGlpU,EAAEl4B,EAAEtC,GAAGwjB,EAAE9b,QAAQ26V,MAAMriW,EAAE4uV,GAAGprU,EAAExjB,EAAEy6B,GAAGs4U,GAAGvvV,EAAEiX,GAAUjX,CAAC,CAAC,SAASmyV,GAAGnyV,EAAE+F,EAAEiR,EAAEC,GAAG,IAAIz6B,EAAEupB,EAAE7hB,QAAQpF,EAAEgiW,KAAIhhB,EAAEihB,GAAGvkW,GAAsL,OAAnLw6B,EAAEojB,GAAGpjB,GAAG,OAAOjR,EAAElkB,QAAQkkB,EAAElkB,QAAQm1B,EAAEjR,EAAE6jV,eAAe5yU,GAAEjR,EAAE06R,GAAG3hT,EAAEghV,IAAK1nD,QAAQ,CAACr0R,QAAQic,GAAuB,QAApBiX,OAAE,IAASA,EAAE,KAAKA,KAAalR,EAAE0sB,SAASxb,GAAe,QAAZjX,EAAEkgV,GAAG1jW,EAAEupB,EAAE+5T,MAAckhB,GAAGhhV,EAAExjB,EAAEsjV,EAAEhhV,GAAGshW,GAAGpgV,EAAExjB,EAAEsjV,IAAWA,CAAC,CAC3b,SAASsyB,GAAGpyV,GAAe,OAAZA,EAAEA,EAAE9b,SAAcitB,OAAyBnR,EAAEmR,MAAMm6C,IAAoDtrD,EAAEmR,MAAM01T,WAAhF,IAA0F,CAAC,SAASwrB,GAAGryV,EAAE+F,GAAqB,GAAG,QAArB/F,EAAEA,EAAEooU,gBAA2B,OAAOpoU,EAAEqoU,WAAW,CAAC,IAAIrxT,EAAEhX,EAAEs9U,UAAUt9U,EAAEs9U,UAAU,IAAItmU,GAAGA,EAAEjR,EAAEiR,EAAEjR,CAAC,CAAC,CAAC,SAASusV,GAAGtyV,EAAE+F,GAAGssV,GAAGryV,EAAE+F,IAAI/F,EAAEA,EAAEgoU,YAAYqqB,GAAGryV,EAAE+F,EAAE,CAnB7SqoV,GAAG,SAASpuV,EAAE+F,EAAEiR,GAAG,GAAG,OAAOhX,EAAE,GAAGA,EAAE29U,gBAAgB53U,EAAEq3U,cAActC,GAAG52V,QAAQ46V,IAAG,MAAO,CAAC,GAAG,KAAK9+U,EAAE6+U,MAAM7nU,IAAI,KAAa,IAARjR,EAAEmiU,OAAW,OAAO4W,IAAG,EAzE1I,SAAY9+U,EAAE+F,EAAEiR,GAAG,OAAOjR,EAAEulD,KAAK,KAAK,EAAEq+R,GAAG5jV,GAAG83U,KAAK,MAAM,KAAK,EAAE8E,GAAG58U,GAAG,MAAM,KAAK,EAAEo1U,GAAGp1U,EAAE1qB,OAAOkgW,GAAGx1U,GAAG,MAAM,KAAK,EAAE08U,GAAG18U,EAAEA,EAAE8gU,UAAUzwF,eAAe,MAAM,KAAK,GAAG,IAAIn/N,EAAElR,EAAE1qB,KAAK8qT,SAAS3pT,EAAEupB,EAAE43U,cAAcr/V,MAAMs8V,GAAEqD,GAAGhnU,EAAEsnU,eAAetnU,EAAEsnU,cAAc/hW,EAAE,MAAM,KAAK,GAAqB,GAAG,QAArBy6B,EAAElR,EAAEqiU,eAA2B,OAAG,OAAOnxT,EAAEoxT,YAAkBuS,GAAEiI,GAAY,EAAVA,GAAE3+V,SAAW6hB,EAAEmiU,OAAO,IAAI,MAAQ,KAAKlxT,EAAEjR,EAAEoL,MAAMstU,YAAmB2L,GAAGpqV,EAAE+F,EAAEiR,IAAG4jU,GAAEiI,GAAY,EAAVA,GAAE3+V,SAA8B,QAAnB8b,EAAE4oV,GAAG5oV,EAAE+F,EAAEiR,IAAmBhX,EAAE6wN,QAAQ,MAAK+pH,GAAEiI,GAAY,EAAVA,GAAE3+V,SAAW,MAAM,KAAK,GAC7d,GADge+yB,EAAE,KAAKD,EACrfjR,EAAE04U,YAAe,KAAa,IAARz+U,EAAEkoU,OAAW,CAAC,GAAGjxT,EAAE,OAAOs0U,GAAGvrV,EAAE+F,EAAEiR,GAAGjR,EAAEmiU,OAAO,GAAG,CAA6F,GAA1E,QAAlB1rV,EAAEupB,EAAEqiU,iBAAyB5rV,EAAE2uW,UAAU,KAAK3uW,EAAE6uW,KAAK,KAAK7uW,EAAE4oW,WAAW,MAAMxK,GAAEiI,GAAEA,GAAE3+V,SAAY+yB,EAAE,MAAW,OAAO,KAAK,KAAK,GAAG,KAAK,GAAG,OAAOlR,EAAE84U,MAAM,EAAEoK,GAAGjpV,EAAE+F,EAAEiR,GAAG,OAAO4xU,GAAG5oV,EAAE+F,EAAEiR,EAAE,CAwE7Gu7U,CAAGvyV,EAAE+F,EAAEiR,GAAG8nU,GAAG,KAAa,OAAR9+U,EAAEkoU,MAAmB,MAAM4W,IAAG,EAAGhC,IAAG,KAAa,QAAR/2U,EAAEmiU,QAAgBuU,GAAG12U,EAAEm2U,GAAGn2U,EAAEle,OAAiB,OAAVke,EAAE84U,MAAM,EAAS94U,EAAEulD,KAAK,KAAK,EAAE,IAAIr0C,EAAElR,EAAE1qB,KAAKouW,GAAGzpV,EAAE+F,GAAG/F,EAAE+F,EAAEq3U,aAAa,IAAI5gW,EAAEw+V,GAAGj1U,EAAE4S,GAAEz0B,SAASw6V,GAAG34U,EAAEiR,GAAGx6B,EAAEqnW,GAAG,KAAK99U,EAAEkR,EAAEjX,EAAExjB,EAAEw6B,GAAG,IAAIl4B,EAAEolW,KACvI,OAD4In+U,EAAEmiU,OAAO,EAAE,kBAAkB1rV,GAAG,OAAOA,GAAG,oBAAoBA,EAAE6vD,aAAQ,IAAS7vD,EAAEwkS,UAAUj7Q,EAAEulD,IAAI,EAAEvlD,EAAEqiU,cAAc,KAAKriU,EAAEy5U,YAC1e,KAAKrE,GAAGlkU,IAAIn4B,GAAE,EAAGy8V,GAAGx1U,IAAIjnB,GAAE,EAAGinB,EAAEqiU,cAAc,OAAO5rV,EAAEwK,YAAO,IAASxK,EAAEwK,MAAMxK,EAAEwK,MAAM,KAAKu4V,GAAGx5U,GAAGvpB,EAAEqjS,QAAQ8gE,GAAG56U,EAAE8gU,UAAUrqV,EAAEA,EAAEokW,gBAAgB76U,EAAEu7U,GAAGv7U,EAAEkR,EAAEjX,EAAEgX,GAAGjR,EAAE2jV,GAAG,KAAK3jV,EAAEkR,GAAE,EAAGn4B,EAAEk4B,KAAKjR,EAAEulD,IAAI,EAAEwxR,IAAGh+V,GAAG49V,GAAG32U,GAAG2iV,GAAG,KAAK3iV,EAAEvpB,EAAEw6B,GAAGjR,EAAEA,EAAEoL,OAAcpL,EAAE,KAAK,GAAGkR,EAAElR,EAAE+yT,YAAY94T,EAAE,CAAqF,OAApFypV,GAAGzpV,EAAE+F,GAAG/F,EAAE+F,EAAEq3U,aAAuBnmU,GAAVz6B,EAAEy6B,EAAEorT,OAAUprT,EAAEmrT,UAAUr8T,EAAE1qB,KAAK47B,EAAEz6B,EAAEupB,EAAEulD,IAQtU,SAAYtrD,GAAG,GAAG,oBAAoBA,EAAE,OAAO8oV,GAAG9oV,GAAG,EAAE,EAAE,QAAG,IAASA,GAAG,OAAOA,EAAE,CAAc,IAAbA,EAAEA,EAAEghR,YAAgBqgD,EAAG,OAAO,GAAG,GAAGrhU,IAAIwhU,EAAG,OAAO,EAAE,CAAC,OAAO,CAAC,CAR2LgxB,CAAGv7U,GAAGjX,EAAEg+U,GAAG/mU,EAAEjX,GAAUxjB,GAAG,KAAK,EAAEupB,EAAEijV,GAAG,KAAKjjV,EAAEkR,EAAEjX,EAAEgX,GAAG,MAAMhX,EAAE,KAAK,EAAE+F,EAAEyjV,GAAG,KAAKzjV,EAAEkR,EAAEjX,EAAEgX,GAAG,MAAMhX,EAAE,KAAK,GAAG+F,EAAE4iV,GAAG,KAAK5iV,EAAEkR,EAAEjX,EAAEgX,GAAG,MAAMhX,EAAE,KAAK,GAAG+F,EAAE8iV,GAAG,KAAK9iV,EAAEkR,EAAE+mU,GAAG/mU,EAAE57B,KAAK2kB,GAAGgX,GAAG,MAAMhX,EAAE,MAAMje,MAAM69B,EAAE,IACvgB3I,EAAE,IAAK,CAAC,OAAOlR,EAAE,KAAK,EAAE,OAAOkR,EAAElR,EAAE1qB,KAAKmB,EAAEupB,EAAEq3U,aAA2C4L,GAAGhpV,EAAE+F,EAAEkR,EAArCz6B,EAAEupB,EAAE+yT,cAAc7hT,EAAEz6B,EAAEwhW,GAAG/mU,EAAEz6B,GAAcw6B,GAAG,KAAK,EAAE,OAAOC,EAAElR,EAAE1qB,KAAKmB,EAAEupB,EAAEq3U,aAA2CoM,GAAGxpV,EAAE+F,EAAEkR,EAArCz6B,EAAEupB,EAAE+yT,cAAc7hT,EAAEz6B,EAAEwhW,GAAG/mU,EAAEz6B,GAAcw6B,GAAG,KAAK,EAAEhX,EAAE,CAAO,GAAN2pV,GAAG5jV,GAAM,OAAO/F,EAAE,MAAMje,MAAM69B,EAAE,MAAM3I,EAAElR,EAAEq3U,aAA+B5gW,GAAlBsC,EAAEinB,EAAEqiU,eAAkBrkV,QAAQg8V,GAAG//U,EAAE+F,GAAGu6U,GAAGv6U,EAAEkR,EAAE,KAAKD,GAAG,IAAI8oT,EAAE/5T,EAAEqiU,cAA0B,GAAZnxT,EAAE6oT,EAAE/7U,QAAWjF,EAAEiuV,aAAY,CAAC,GAAGjuV,EAAE,CAACiF,QAAQkzB,EAAE81T,cAAa,EAAG39O,MAAM0wO,EAAE1wO,MAAM6iQ,0BAA0BnyB,EAAEmyB,0BAA0B7I,YAAYtpB,EAAEspB,aAAarjV,EAAEy5U,YAAYC,UAChf3gW,EAAEinB,EAAEqiU,cAActpV,EAAU,IAARinB,EAAEmiU,MAAU,CAAuBniU,EAAE8jV,GAAG7pV,EAAE+F,EAAEkR,EAAED,EAAjCx6B,EAAE+qW,GAAGxlW,MAAM69B,EAAE,MAAM7Z,IAAmB,MAAM/F,CAAC,CAAM,GAAGiX,IAAIz6B,EAAE,CAAuBupB,EAAE8jV,GAAG7pV,EAAE+F,EAAEkR,EAAED,EAAjCx6B,EAAE+qW,GAAGxlW,MAAM69B,EAAE,MAAM7Z,IAAmB,MAAM/F,CAAC,CAAM,IAAI68U,GAAG3C,GAAGn0U,EAAE8gU,UAAUzwF,cAAc95H,YAAYsgO,GAAG72U,EAAE+2U,IAAE,EAAGC,GAAG,KAAK/lU,EAAEmrU,GAAGp8U,EAAE,KAAKkR,EAAED,GAAGjR,EAAEoL,MAAM6F,EAAEA,GAAGA,EAAEkxT,OAAe,EAATlxT,EAAEkxT,MAAS,KAAKlxT,EAAEA,EAAE65M,OAAQ,KAAI,CAAM,GAALgtH,KAAQ5mU,IAAIz6B,EAAE,CAACupB,EAAE6iV,GAAG5oV,EAAE+F,EAAEiR,GAAG,MAAMhX,CAAC,CAAC0oV,GAAG1oV,EAAE+F,EAAEkR,EAAED,EAAE,CAACjR,EAAEA,EAAEoL,KAAK,CAAC,OAAOpL,EAAE,KAAK,EAAE,OAAO48U,GAAG58U,GAAG,OAAO/F,GAAGw9U,GAAGz3U,GAAGkR,EAAElR,EAAE1qB,KAAKmB,EAAEupB,EAAEq3U,aAAat+V,EAAE,OAAOkhB,EAAEA,EAAE29U,cAAc,KAAK7d,EAAEtjV,EAAE7D,SAAS8gW,GAAGxiU,EAAEz6B,GAAGsjV,EAAE,KAAK,OAAOhhV,GAAG26V,GAAGxiU,EAAEn4B,KAAKinB,EAAEmiU,OAAO,IACnfqhB,GAAGvpV,EAAE+F,GAAG2iV,GAAG1oV,EAAE+F,EAAE+5T,EAAE9oT,GAAGjR,EAAEoL,MAAM,KAAK,EAAE,OAAO,OAAOnR,GAAGw9U,GAAGz3U,GAAG,KAAK,KAAK,GAAG,OAAOqkV,GAAGpqV,EAAE+F,EAAEiR,GAAG,KAAK,EAAE,OAAOyrU,GAAG18U,EAAEA,EAAE8gU,UAAUzwF,eAAen/N,EAAElR,EAAEq3U,aAAa,OAAOp9U,EAAE+F,EAAEoL,MAAM+wU,GAAGn8U,EAAE,KAAKkR,EAAED,GAAG0xU,GAAG1oV,EAAE+F,EAAEkR,EAAED,GAAGjR,EAAEoL,MAAM,KAAK,GAAG,OAAO8F,EAAElR,EAAE1qB,KAAKmB,EAAEupB,EAAEq3U,aAA2CuL,GAAG3oV,EAAE+F,EAAEkR,EAArCz6B,EAAEupB,EAAE+yT,cAAc7hT,EAAEz6B,EAAEwhW,GAAG/mU,EAAEz6B,GAAcw6B,GAAG,KAAK,EAAE,OAAO0xU,GAAG1oV,EAAE+F,EAAEA,EAAEq3U,aAAapmU,GAAGjR,EAAEoL,MAAM,KAAK,EAAmD,KAAK,GAAG,OAAOu3U,GAAG1oV,EAAE+F,EAAEA,EAAEq3U,aAAazkW,SAASq+B,GAAGjR,EAAEoL,MAAM,KAAK,GAAGnR,EAAE,CACxZ,GADyZiX,EAAElR,EAAE1qB,KAAK8qT,SAAS3pT,EAAEupB,EAAEq3U,aAAat+V,EAAEinB,EAAE43U,cAClf7d,EAAEtjV,EAAE8B,MAAMs8V,GAAEqD,GAAGhnU,EAAEsnU,eAAetnU,EAAEsnU,cAAcze,EAAK,OAAOhhV,EAAE,GAAG+1V,GAAG/1V,EAAER,MAAMwhV,IAAI,GAAGhhV,EAAEnG,WAAW6D,EAAE7D,WAAWmiW,GAAG52V,QAAQ,CAAC6hB,EAAE6iV,GAAG5oV,EAAE+F,EAAEiR,GAAG,MAAMhX,CAAC,OAAO,IAAc,QAAVlhB,EAAEinB,EAAEoL,SAAiBryB,EAAEmpV,OAAOliU,GAAG,OAAOjnB,GAAG,CAAC,IAAI45B,EAAE55B,EAAE6/V,aAAa,GAAG,OAAOjmU,EAAE,CAAConT,EAAEhhV,EAAEqyB,MAAM,IAAI,IAAIg5B,EAAEzxB,EAAEkmU,aAAa,OAAOz0S,GAAG,CAAC,GAAGA,EAAEtoD,UAAUo1B,EAAE,CAAC,GAAG,IAAIn4B,EAAEwsE,IAAI,EAACnhB,EAAEs2P,IAAI,EAAEzpR,GAAGA,IAAKs0C,IAAI,EAAE,IAAIv5C,EAAEjzB,EAAE0gW,YAAY,GAAG,OAAOztU,EAAE,CAAY,IAAI0G,GAAf1G,EAAEA,EAAE6tU,QAAeC,QAAQ,OAAOpnU,EAAE0xB,EAAE00B,KAAK10B,GAAGA,EAAE00B,KAAKpmD,EAAEomD,KAAKpmD,EAAEomD,KAAK10B,GAAGp4B,EAAE8tU,QAAQ11S,CAAC,CAAC,CAACrrD,EAAE+/V,OAAO7nU,EAAgB,QAAdmzB,EAAErrD,EAAEkpV,aAAqB79R,EAAE00S,OAAO7nU,GAAGwnU,GAAG1/V,EAAEmpV,OAClfjxT,EAAEjR,GAAG2S,EAAEmmU,OAAO7nU,EAAE,KAAK,CAACmzB,EAAEA,EAAE00B,IAAI,CAAC,MAAM,GAAG,KAAK//E,EAAEwsE,IAAIw0Q,EAAEhhV,EAAEzD,OAAO0qB,EAAE1qB,KAAK,KAAKyD,EAAEqyB,WAAW,GAAG,KAAKryB,EAAEwsE,IAAI,CAAY,GAAG,QAAdw0Q,EAAEhhV,EAAEmpV,QAAmB,MAAMlmV,MAAM69B,EAAE,MAAMkgT,EAAE+e,OAAO7nU,EAAgB,QAAd0B,EAAEonT,EAAEkI,aAAqBtvT,EAAEmmU,OAAO7nU,GAAGwnU,GAAG1e,EAAE9oT,EAAEjR,GAAG+5T,EAAEhhV,EAAE+xO,OAAO,MAAMivG,EAAEhhV,EAAEqyB,MAAM,GAAG,OAAO2uT,EAAEA,EAAEmI,OAAOnpV,OAAO,IAAIghV,EAAEhhV,EAAE,OAAOghV,GAAG,CAAC,GAAGA,IAAI/5T,EAAE,CAAC+5T,EAAE,KAAK,KAAK,CAAa,GAAG,QAAfhhV,EAAEghV,EAAEjvG,SAAoB,CAAC/xO,EAAEmpV,OAAOnI,EAAEmI,OAAOnI,EAAEhhV,EAAE,KAAK,CAACghV,EAAEA,EAAEmI,MAAM,CAACnpV,EAAEghV,CAAC,CAAC4oB,GAAG1oV,EAAE+F,EAAEvpB,EAAE7D,SAASq+B,GAAGjR,EAAEA,EAAEoL,KAAK,CAAC,OAAOpL,EAAE,KAAK,EAAE,OAAOvpB,EAAEupB,EAAE1qB,KAAK47B,EAAElR,EAAEq3U,aAAazkW,SAAS+lW,GAAG34U,EAAEiR,GAAWC,EAAEA,EAAVz6B,EAAEuiW,GAAGviW,IAAUupB,EAAEmiU,OAAO,EAAEwgB,GAAG1oV,EAAE+F,EAAEkR,EAAED,GACpfjR,EAAEoL,MAAM,KAAK,GAAG,OAAgB30B,EAAEwhW,GAAX/mU,EAAElR,EAAE1qB,KAAY0qB,EAAEq3U,cAA6ByL,GAAG7oV,EAAE+F,EAAEkR,EAAtBz6B,EAAEwhW,GAAG/mU,EAAE57B,KAAKmB,GAAcw6B,GAAG,KAAK,GAAG,OAAO+xU,GAAG/oV,EAAE+F,EAAEA,EAAE1qB,KAAK0qB,EAAEq3U,aAAapmU,GAAG,KAAK,GAAG,OAAOC,EAAElR,EAAE1qB,KAAKmB,EAAEupB,EAAEq3U,aAAa5gW,EAAEupB,EAAE+yT,cAAc7hT,EAAEz6B,EAAEwhW,GAAG/mU,EAAEz6B,GAAGitW,GAAGzpV,EAAE+F,GAAGA,EAAEulD,IAAI,EAAE6vR,GAAGlkU,IAAIjX,GAAE,EAAGu7U,GAAGx1U,IAAI/F,GAAE,EAAG0+U,GAAG34U,EAAEiR,GAAGoqU,GAAGr7U,EAAEkR,EAAEz6B,GAAG8kW,GAAGv7U,EAAEkR,EAAEz6B,EAAEw6B,GAAG0yU,GAAG,KAAK3jV,EAAEkR,GAAE,EAAGjX,EAAEgX,GAAG,KAAK,GAAG,OAAOu0U,GAAGvrV,EAAE+F,EAAEiR,GAAG,KAAK,GAAG,OAAOiyU,GAAGjpV,EAAE+F,EAAEiR,GAAG,MAAMj1B,MAAM69B,EAAE,IAAI7Z,EAAEulD,KAAM,EAYxC,IAAImnS,GAAG,oBAAoBC,YAAYA,YAAY,SAAS1yV,GAAGsC,QAAQngB,MAAM6d,EAAE,EAAE,SAAS2yV,GAAG3yV,GAAGe,KAAK6xV,cAAc5yV,CAAC,CACjI,SAAS6yV,GAAG7yV,GAAGe,KAAK6xV,cAAc5yV,CAAC,CAC5J,SAAS8yV,GAAG9yV,GAAG,SAASA,GAAG,IAAIA,EAAEq6B,UAAU,IAAIr6B,EAAEq6B,UAAU,KAAKr6B,EAAEq6B,SAAS,CAAC,SAAS04T,GAAG/yV,GAAG,SAASA,GAAG,IAAIA,EAAEq6B,UAAU,IAAIr6B,EAAEq6B,UAAU,KAAKr6B,EAAEq6B,WAAW,IAAIr6B,EAAEq6B,UAAU,iCAAiCr6B,EAAE0rD,WAAW,CAAC,SAASsnS,KAAK,CAExa,SAASC,GAAGjzV,EAAE+F,EAAEiR,EAAEC,EAAEz6B,GAAG,IAAIsC,EAAEk4B,EAAEk2U,oBAAoB,GAAGpuW,EAAE,CAAC,IAAIghV,EAAEhhV,EAAE,GAAG,oBAAoBtC,EAAE,CAAC,IAAIk8B,EAAEl8B,EAAEA,EAAE,WAAW,IAAIwjB,EAAEoyV,GAAGtyB,GAAGpnT,EAAEjY,KAAKT,EAAE,CAAC,CAACmyV,GAAGpsV,EAAE+5T,EAAE9/T,EAAExjB,EAAE,MAAMsjV,EADxJ,SAAY9/T,EAAE+F,EAAEiR,EAAEC,EAAEz6B,GAAG,GAAGA,EAAE,CAAC,GAAG,oBAAoBy6B,EAAE,CAAC,IAAIn4B,EAAEm4B,EAAEA,EAAE,WAAW,IAAIjX,EAAEoyV,GAAGtyB,GAAGhhV,EAAE2hB,KAAKT,EAAE,CAAC,CAAC,IAAI8/T,EAAEoyB,GAAGnsV,EAAEkR,EAAEjX,EAAE,EAAE,MAAK,EAAG,EAAG,GAAGgzV,IAAmF,OAA/EhzV,EAAEktV,oBAAoBptB,EAAE9/T,EAAEy4U,IAAI3Y,EAAE57U,QAAQk0V,GAAG,IAAIp4U,EAAEq6B,SAASr6B,EAAEqR,WAAWrR,GAAG6wV,KAAY/wB,CAAC,CAAC,KAAKtjV,EAAEwjB,EAAEoxH,WAAWpxH,EAAEu5B,YAAY/8C,GAAG,GAAG,oBAAoBy6B,EAAE,CAAC,IAAIyB,EAAEzB,EAAEA,EAAE,WAAW,IAAIjX,EAAEoyV,GAAGjoT,GAAGzxB,EAAEjY,KAAKT,EAAE,CAAC,CAAC,IAAImqC,EAAE6nT,GAAGhyV,EAAE,GAAE,EAAG,KAAK,GAAK,EAAG,EAAG,GAAGgzV,IAA0G,OAAtGhzV,EAAEktV,oBAAoB/iT,EAAEnqC,EAAEy4U,IAAItuS,EAAEjmD,QAAQk0V,GAAG,IAAIp4U,EAAEq6B,SAASr6B,EAAEqR,WAAWrR,GAAG6wV,IAAG,WAAWsB,GAAGpsV,EAAEokC,EAAEnzB,EAAEC,EAAE,IAAUkzB,CAAC,CACpU+oT,CAAGl8U,EAAEjR,EAAE/F,EAAExjB,EAAEy6B,GAAG,OAAOm7U,GAAGtyB,EAAE,CAHpL+yB,GAAGzyV,UAAUisC,OAAOsmT,GAAGvyV,UAAUisC,OAAO,SAASrsC,GAAG,IAAI+F,EAAEhF,KAAK6xV,cAAc,GAAG,OAAO7sV,EAAE,MAAMhkB,MAAM69B,EAAE,MAAMuyU,GAAGnyV,EAAE+F,EAAE,KAAK,KAAK,EAAE8sV,GAAGzyV,UAAU+yV,QAAQR,GAAGvyV,UAAU+yV,QAAQ,WAAW,IAAInzV,EAAEe,KAAK6xV,cAAc,GAAG,OAAO5yV,EAAE,CAACe,KAAK6xV,cAAc,KAAK,IAAI7sV,EAAE/F,EAAEo2O,cAAcy6G,IAAG,WAAWsB,GAAG,KAAKnyV,EAAE,KAAK,KAAK,IAAG+F,EAAE0yU,IAAI,IAAI,CAAC,EACzToa,GAAGzyV,UAAUgzV,2BAA2B,SAASpzV,GAAG,GAAGA,EAAE,CAAC,IAAI+F,EAAE4lU,KAAK3rU,EAAE,CAACwsU,UAAU,KAAKttS,OAAOl/B,EAAE8sU,SAAS/mU,GAAG,IAAI,IAAIiR,EAAE,EAAEA,EAAEo1T,GAAGpzV,QAAQ,IAAI+sB,GAAGA,EAAEqmU,GAAGp1T,GAAG81T,SAAS91T,KAAKo1T,GAAGxkT,OAAO5Q,EAAE,EAAEhX,GAAG,IAAIgX,GAAG41T,GAAG5sU,EAAE,CAAC,EAEXwrU,GAAG,SAASxrU,GAAG,OAAOA,EAAEsrD,KAAK,KAAK,EAAE,IAAIvlD,EAAE/F,EAAE6mU,UAAU,GAAG9gU,EAAE7hB,QAAQkkV,cAAc2E,aAAa,CAAC,IAAI/1T,EAAEyzT,GAAG1kU,EAAE4kU,cAAc,IAAI3zT,IAAIs0T,GAAGvlU,EAAI,EAAFiR,GAAKu4U,GAAGxpV,EAAEmjU,MAAK,KAAO,EAAFiX,MAAO6L,GAAG9iB,KAAI,IAAI4S,MAAM,CAAC,MAAM,KAAK,GAAG+U,IAAG,WAAW,IAAI9qV,EAAEs5U,GAAGr/U,EAAE,GAAG,GAAG,OAAO+F,EAAE,CAAC,IAAIiR,EAAE8pU,KAAIE,GAAGj7U,EAAE/F,EAAE,EAAEgX,EAAE,CAAC,IAAGs7U,GAAGtyV,EAAE,GAAG,EAC/byrU,GAAG,SAASzrU,GAAG,GAAG,KAAKA,EAAEsrD,IAAI,CAAC,IAAIvlD,EAAEs5U,GAAGr/U,EAAE,WAAW,GAAG,OAAO+F,EAAai7U,GAAGj7U,EAAE/F,EAAE,UAAX8gV,MAAwBwR,GAAGtyV,EAAE,UAAU,CAAC,EAAE0rU,GAAG,SAAS1rU,GAAG,GAAG,KAAKA,EAAEsrD,IAAI,CAAC,IAAIvlD,EAAEg7U,GAAG/gV,GAAGgX,EAAEqoU,GAAGr/U,EAAE+F,GAAG,GAAG,OAAOiR,EAAagqU,GAAGhqU,EAAEhX,EAAE+F,EAAX+6U,MAAgBwR,GAAGtyV,EAAE+F,EAAE,CAAC,EAAE4lU,GAAG,WAAW,OAAO99S,EAAC,EAAE+9S,GAAG,SAAS5rU,EAAE+F,GAAG,IAAIiR,EAAE6W,GAAE,IAAI,OAAOA,GAAE7tB,EAAE+F,GAAG,CAAC,QAAQ8nB,GAAE7W,CAAC,CAAC,EAClSwvT,GAAG,SAASxmU,EAAE+F,EAAEiR,GAAG,OAAOjR,GAAG,IAAK,QAAyB,GAAjBu9T,EAAGtjU,EAAEgX,GAAGjR,EAAEiR,EAAE79B,KAAQ,UAAU69B,EAAE37B,MAAM,MAAM0qB,EAAE,CAAC,IAAIiR,EAAEhX,EAAEgX,EAAE3F,YAAY2F,EAAEA,EAAE3F,WAAsF,IAA3E2F,EAAEA,EAAEnF,iBAAiB,cAAcxU,KAAKK,UAAU,GAAGqI,GAAG,mBAAuBA,EAAE,EAAEA,EAAEiR,EAAEh+B,OAAO+sB,IAAI,CAAC,IAAIkR,EAAED,EAAEjR,GAAG,GAAGkR,IAAIjX,GAAGiX,EAAEu4C,OAAOxvD,EAAEwvD,KAAK,CAAC,IAAIhzE,EAAEsqV,GAAG7vT,GAAG,IAAIz6B,EAAE,MAAMuF,MAAM69B,EAAE,KAAKijT,EAAG5rT,GAAGqsT,EAAGrsT,EAAEz6B,EAAE,CAAC,CAAC,CAAC,MAAM,IAAK,WAAWsnV,GAAG9jU,EAAEgX,GAAG,MAAM,IAAK,SAAmB,OAAVjR,EAAEiR,EAAE14B,QAAemlV,GAAGzjU,IAAIgX,EAAE87Q,SAAS/sR,GAAE,GAAI,EAAEkhU,GAAG2pB,GAAG1pB,GAAG2pB,GACpa,IAAIwC,GAAG,CAACC,uBAAsB,EAAGC,OAAO,CAAC3sB,GAAGmN,GAAGjN,GAAGC,GAAGC,GAAG4pB,KAAKjlO,GAAG,CAAC6nO,wBAAwB3mB,GAAG4mB,WAAW,EAAEz/T,QAAQ,SAAS0/T,oBAAoB,aAC1IC,GAAG,CAACF,WAAW9nO,GAAG8nO,WAAWz/T,QAAQ23F,GAAG33F,QAAQ0/T,oBAAoB/nO,GAAG+nO,oBAAoBE,eAAejoO,GAAGioO,eAAeC,kBAAkB,KAAKC,4BAA4B,KAAKC,4BAA4B,KAAKC,cAAc,KAAKC,wBAAwB,KAAKC,wBAAwB,KAAKC,gBAAgB,KAAKC,mBAAmB,KAAKC,eAAe,KAAKC,qBAAqB1zB,EAAGwiB,uBAAuBmR,wBAAwB,SAASv0V,GAAW,OAAO,QAAfA,EAAEuoU,GAAGvoU,IAAmB,KAAKA,EAAE6mU,SAAS,EAAE2sB,wBAAwB7nO,GAAG6nO,yBARjN,WAAc,OAAO,IAAI,EASpUgB,4BAA4B,KAAKC,gBAAgB,KAAKC,aAAa,KAAKC,kBAAkB,KAAKC,gBAAgB,KAAKC,kBAAkB,kCAAkC,GAAG,qBAAqBC,+BAA+B,CAAC,IAAIC,GAAGD,+BAA+B,IAAIC,GAAGp6R,YAAYo6R,GAAGC,cAAc,IAAIhrB,GAAG+qB,GAAGpvT,OAAOguT,IAAI1pB,GAAG8qB,EAAE,CAAC,MAAM/0V,IAAG,CAAC,CAACza,EAAQs7U,mDAAmDwyB,GAC9Y9tW,EAAQ0vW,aAAa,SAASj1V,EAAE+F,GAAG,IAAIiR,EAAE,EAAE5X,UAAUpmB,aAAQ,IAASomB,UAAU,GAAGA,UAAU,GAAG,KAAK,IAAI0zV,GAAG/sV,GAAG,MAAMhkB,MAAM69B,EAAE,MAAM,OAbuH,SAAY5f,EAAE+F,EAAEiR,GAAG,IAAIC,EAAE,EAAE7X,UAAUpmB,aAAQ,IAASomB,UAAU,GAAGA,UAAU,GAAG,KAAK,MAAM,CAAC4hR,SAAS+/C,EAAGhhV,IAAI,MAAMk3B,EAAE,KAAK,GAAGA,EAAEt+B,SAASqnB,EAAEo2O,cAAcrwO,EAAE0yR,eAAezhR,EAAE,CAa1Rk+U,CAAGl1V,EAAE+F,EAAE,KAAKiR,EAAE,EAAEzxB,EAAQ4vW,WAAW,SAASn1V,EAAE+F,GAAG,IAAI+sV,GAAG9yV,GAAG,MAAMje,MAAM69B,EAAE,MAAM,IAAI5I,GAAE,EAAGC,EAAE,GAAGz6B,EAAEi2W,GAA4P,OAAzP,OAAO1sV,QAAG,IAASA,KAAI,IAAKA,EAAEqvV,sBAAsBp+U,GAAE,QAAI,IAASjR,EAAEuhV,mBAAmBrwU,EAAElR,EAAEuhV,uBAAkB,IAASvhV,EAAEurV,qBAAqB90W,EAAEupB,EAAEurV,qBAAqBvrV,EAAEisV,GAAGhyV,EAAE,GAAE,EAAG,KAAK,EAAKgX,EAAE,EAAGC,EAAEz6B,GAAGwjB,EAAEy4U,IAAI1yU,EAAE7hB,QAAQk0V,GAAG,IAAIp4U,EAAEq6B,SAASr6B,EAAEqR,WAAWrR,GAAU,IAAI2yV,GAAG5sV,EAAE,EACrfxgB,EAAQ8vW,YAAY,SAASr1V,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,IAAIA,EAAEq6B,SAAS,OAAOr6B,EAAE,IAAI+F,EAAE/F,EAAE4gV,gBAAgB,QAAG,IAAS76U,EAAE,CAAC,GAAG,oBAAoB/F,EAAEqsC,OAAO,MAAMtqD,MAAM69B,EAAE,MAAiC,MAA3B5f,EAAEpgB,OAAOC,KAAKmgB,GAAGgI,KAAK,KAAWjmB,MAAM69B,EAAE,IAAI5f,GAAI,CAAqC,OAA5BA,EAAE,QAAVA,EAAEuoU,GAAGxiU,IAAc,KAAK/F,EAAE6mU,SAAkB,EAAEthV,EAAQ+vW,UAAU,SAASt1V,GAAG,OAAO6wV,GAAG7wV,EAAE,EAAEza,EAAQgwW,QAAQ,SAASv1V,EAAE+F,EAAEiR,GAAG,IAAI+7U,GAAGhtV,GAAG,MAAMhkB,MAAM69B,EAAE,MAAM,OAAOqzU,GAAG,KAAKjzV,EAAE+F,GAAE,EAAGiR,EAAE,EAC/YzxB,EAAQiwW,YAAY,SAASx1V,EAAE+F,EAAEiR,GAAG,IAAI87U,GAAG9yV,GAAG,MAAMje,MAAM69B,EAAE,MAAM,IAAI3I,EAAE,MAAMD,GAAGA,EAAEy+U,iBAAiB,KAAKj5W,GAAE,EAAGsC,EAAE,GAAGghV,EAAE2yB,GAAyO,GAAtO,OAAOz7U,QAAG,IAASA,KAAI,IAAKA,EAAEo+U,sBAAsB54W,GAAE,QAAI,IAASw6B,EAAEswU,mBAAmBxoW,EAAEk4B,EAAEswU,uBAAkB,IAAStwU,EAAEs6U,qBAAqBxxB,EAAE9oT,EAAEs6U,qBAAqBvrV,EAAEmsV,GAAGnsV,EAAE,KAAK/F,EAAE,EAAE,MAAMgX,EAAEA,EAAE,KAAKx6B,EAAE,EAAGsC,EAAEghV,GAAG9/T,EAAEy4U,IAAI1yU,EAAE7hB,QAAQk0V,GAAGp4U,GAAMiX,EAAE,IAAIjX,EAAE,EAAEA,EAAEiX,EAAEj+B,OAAOgnB,IAA2BxjB,GAAhBA,GAAPw6B,EAAEC,EAAEjX,IAAO01V,aAAgB1+U,EAAE2+U,SAAS,MAAM5vV,EAAEgsV,gCAAgChsV,EAAEgsV,gCAAgC,CAAC/6U,EAAEx6B,GAAGupB,EAAEgsV,gCAAgCvxW,KAAKw2B,EACvhBx6B,GAAG,OAAO,IAAIq2W,GAAG9sV,EAAE,EAAExgB,EAAQ8mD,OAAO,SAASrsC,EAAE+F,EAAEiR,GAAG,IAAI+7U,GAAGhtV,GAAG,MAAMhkB,MAAM69B,EAAE,MAAM,OAAOqzU,GAAG,KAAKjzV,EAAE+F,GAAE,EAAGiR,EAAE,EAAEzxB,EAAQqwW,uBAAuB,SAAS51V,GAAG,IAAI+yV,GAAG/yV,GAAG,MAAMje,MAAM69B,EAAE,KAAK,QAAO5f,EAAEktV,sBAAqB2D,IAAG,WAAWoC,GAAG,KAAK,KAAKjzV,GAAE,GAAG,WAAWA,EAAEktV,oBAAoB,KAAKltV,EAAEy4U,IAAI,IAAI,GAAE,KAAG,EAAM,EAAElzV,EAAQswW,wBAAwBjF,GAC/UrrW,EAAQuwW,oCAAoC,SAAS91V,EAAE+F,EAAEiR,EAAEC,GAAG,IAAI87U,GAAG/7U,GAAG,MAAMj1B,MAAM69B,EAAE,MAAM,GAAG,MAAM5f,QAAG,IAASA,EAAE4gV,gBAAgB,MAAM7+V,MAAM69B,EAAE,KAAK,OAAOqzU,GAAGjzV,EAAE+F,EAAEiR,GAAE,EAAGC,EAAE,EAAE1xB,EAAQyuC,QAAQ,wEChUzLvb,EAAInzB,EAAQ,MAEdC,EAAQ,EAAakzB,EAAE08U,WACD18U,EAAE+8U,gDCH1B,SAASO,IAEP,GAC4C,qBAAnCjB,gCAC4C,oBAA5CA,+BAA+BiB,SAcxC,IAEEjB,+BAA+BiB,SAASA,EAC1C,CAAE,MAAOl3W,GAGPyjB,QAAQngB,MAAMtD,EAChB,CACF,CAKEk3W,GACA7vT,EAAO3gD,QAAU,EAAjB2gD,mCChCF,IAAIz2B,EAAUD,MAAMC,QAChBumV,EAAUp2W,OAAOC,KACjBo2W,EAAUr2W,OAAOwgB,UAAUoQ,eAC3B0lV,EAAoC,qBAAZ75O,QAE5B,SAASnmB,EAAMl2F,EAAG+F,GAEhB,GAAI/F,IAAM+F,EAAG,OAAO,EAEpB,GAAI/F,GAAK+F,GAAiB,iBAAL/F,GAA6B,iBAAL+F,EAAe,CAC1D,IAEIG,EACAltB,EACA+G,EAJAo2W,EAAO1mV,EAAQzP,GACfo2V,EAAO3mV,EAAQ1J,GAKnB,GAAIowV,GAAQC,EAAM,CAEhB,IADAp9W,EAASgnB,EAAEhnB,SACG+sB,EAAE/sB,OAAQ,OAAO,EAC/B,IAAKktB,EAAIltB,EAAgB,IAARktB,KACf,IAAKgwF,EAAMl2F,EAAEkG,GAAIH,EAAEG,IAAK,OAAO,EACjC,OAAO,CACT,CAEA,GAAIiwV,GAAQC,EAAM,OAAO,EAEzB,IAAIC,EAAQr2V,aAAa3f,KACrBi2W,EAAQvwV,aAAa1lB,KACzB,GAAIg2W,GAASC,EAAO,OAAO,EAC3B,GAAID,GAASC,EAAO,OAAOt2V,EAAEnb,WAAakhB,EAAElhB,UAE5C,IAAI0xW,EAAUv2V,aAAa+J,OACvBysV,EAAUzwV,aAAagE,OAC3B,GAAIwsV,GAAWC,EAAS,OAAO,EAC/B,GAAID,GAAWC,EAAS,OAAOx2V,EAAE7jB,YAAc4pB,EAAE5pB,WAEjD,IAAI0D,EAAOm2W,EAAQh2V,GAGnB,IAFAhnB,EAAS6G,EAAK7G,UAECg9W,EAAQjwV,GAAG/sB,OACxB,OAAO,EAET,IAAKktB,EAAIltB,EAAgB,IAARktB,KACf,IAAK+vV,EAAQx1V,KAAKsF,EAAGlmB,EAAKqmB,IAAK,OAAO,EAKxC,GAAIgwV,GAAkBl2V,aAAaq8G,SAAWt2G,aAAas2G,QACzD,OAAOr8G,IAAM+F,EAGf,IAAKG,EAAIltB,EAAgB,IAARktB,KAEf,IAAY,YADZnmB,EAAMF,EAAKqmB,MACalG,EAAEghR,YAQnB9qL,EAAMl2F,EAAEjgB,GAAMgmB,EAAEhmB,IAAO,OAAO,EAMvC,OAAO,CACT,CAEA,OAAOigB,IAAMA,GAAK+F,IAAMA,CAC1B,CAGAmgC,EAAO3gD,QAAU,SAAuBya,EAAG+F,GACzC,IACE,OAAOmwF,EAAMl2F,EAAG+F,EAClB,CAAE,MAAO5jB,GACP,GAAKA,EAAMkS,SAAWlS,EAAMkS,QAAQ8U,MAAM,sBAA2C,aAAlBhnB,EAAM22E,OAOvE,OADAx2D,QAAQC,KAAK,mEAAoEpgB,EAAMhJ,KAAMgJ,EAAMkS,UAC5F,EAGT,MAAMlS,CACR,CACF,mCCpFa,IAAI4jB,EAAE,oBAAoBgH,QAAQA,OAAOs9C,IAAIrzC,EAAEjR,EAAEgH,OAAOs9C,IAAI,iBAAiB,MAAMpzC,EAAElR,EAAEgH,OAAOs9C,IAAI,gBAAgB,MAAM7tE,EAAEupB,EAAEgH,OAAOs9C,IAAI,kBAAkB,MAAMvrE,EAAEinB,EAAEgH,OAAOs9C,IAAI,qBAAqB,MAAMy1Q,EAAE/5T,EAAEgH,OAAOs9C,IAAI,kBAAkB,MAAM3xC,EAAE3S,EAAEgH,OAAOs9C,IAAI,kBAAkB,MAAMlgB,EAAEpkC,EAAEgH,OAAOs9C,IAAI,iBAAiB,MAAMt4C,EAAEhM,EAAEgH,OAAOs9C,IAAI,oBAAoB,MAAM5xC,EAAE1S,EAAEgH,OAAOs9C,IAAI,yBAAyB,MAAMnsE,EAAE6nB,EAAEgH,OAAOs9C,IAAI,qBAAqB,MAAMzqC,EAAE7Z,EAAEgH,OAAOs9C,IAAI,kBAAkB,MAAM2nC,EAAEjsF,EACpfgH,OAAOs9C,IAAI,uBAAuB,MAAMziE,EAAEme,EAAEgH,OAAOs9C,IAAI,cAAc,MAAM87G,EAAEpgK,EAAEgH,OAAOs9C,IAAI,cAAc,MAAM80I,EAAEp5L,EAAEgH,OAAOs9C,IAAI,eAAe,MAAMwzO,EAAE93R,EAAEgH,OAAOs9C,IAAI,qBAAqB,MAAM18B,EAAE5nB,EAAEgH,OAAOs9C,IAAI,mBAAmB,MAAMp1D,EAAE8Q,EAAEgH,OAAOs9C,IAAI,eAAe,MAClQ,SAAShzC,EAAErX,GAAG,GAAG,kBAAkBA,GAAG,OAAOA,EAAE,CAAC,IAAIkmP,EAAElmP,EAAEghR,SAAS,OAAO96B,GAAG,KAAKlvO,EAAE,OAAOhX,EAAEA,EAAE3kB,MAAQ,KAAK02B,EAAE,KAAK0G,EAAE,KAAKj8B,EAAE,KAAKsjV,EAAE,KAAKhhV,EAAE,KAAK8gC,EAAE,OAAO5f,EAAE,QAAQ,OAAOA,EAAEA,GAAGA,EAAEghR,UAAY,KAAK72O,EAAE,KAAKjsD,EAAE,KAAKioL,EAAE,KAAKv+K,EAAE,KAAK8wB,EAAE,OAAO1Y,EAAE,QAAQ,OAAOkmP,GAAG,KAAKjvO,EAAE,OAAOivO,EAAE,CAAC,CAAC,SAASl4N,EAAEhuB,GAAG,OAAOqX,EAAErX,KAAKyY,CAAC,CAAClzB,EAAQkxW,UAAU1kV,EAAExsB,EAAQmxW,eAAej+U,EAAElzB,EAAQoxW,gBAAgBxsT,EAAE5kD,EAAQqxW,gBAAgBl+U,EAAEnzB,EAAQ82H,QAAQrlG,EAAEzxB,EAAQ63S,WAAWl/S,EAAEqH,EAAQsxW,SAASr6W,EAAE+I,EAAQuxW,KAAK3wL,EAAE5gL,EAAQ83S,KAAKz1S,EAAErC,EAAQwxW,OAAO9/U,EAChf1xB,EAAQyxW,SAASl3B,EAAEv6U,EAAQ0xW,WAAWn4W,EAAEyG,EAAQ2xW,SAASt3U,EAAEr6B,EAAQ4xW,YAAY,SAASn3V,GAAG,OAAOguB,EAAEhuB,IAAIqX,EAAErX,KAAK+R,CAAC,EAAExsB,EAAQ6xW,iBAAiBppU,EAAEzoC,EAAQ8xW,kBAAkB,SAASr3V,GAAG,OAAOqX,EAAErX,KAAKmqC,CAAC,EAAE5kD,EAAQ+xW,kBAAkB,SAASt3V,GAAG,OAAOqX,EAAErX,KAAK0Y,CAAC,EAAEnzB,EAAQkjM,UAAU,SAASzoL,GAAG,MAAM,kBAAkBA,GAAG,OAAOA,GAAGA,EAAEghR,WAAWhqQ,CAAC,EAAEzxB,EAAQgyW,aAAa,SAASv3V,GAAG,OAAOqX,EAAErX,KAAK9hB,CAAC,EAAEqH,EAAQiyW,WAAW,SAASx3V,GAAG,OAAOqX,EAAErX,KAAKxjB,CAAC,EAAE+I,EAAQkyW,OAAO,SAASz3V,GAAG,OAAOqX,EAAErX,KAAKmmK,CAAC,EAC1d5gL,EAAQ43S,OAAO,SAASn9R,GAAG,OAAOqX,EAAErX,KAAKpY,CAAC,EAAErC,EAAQmyW,SAAS,SAAS13V,GAAG,OAAOqX,EAAErX,KAAKiX,CAAC,EAAE1xB,EAAQoyW,WAAW,SAAS33V,GAAG,OAAOqX,EAAErX,KAAK8/T,CAAC,EAAEv6U,EAAQqyW,aAAa,SAAS53V,GAAG,OAAOqX,EAAErX,KAAKlhB,CAAC,EAAEyG,EAAQsyW,WAAW,SAAS73V,GAAG,OAAOqX,EAAErX,KAAK4f,CAAC,EAC1Or6B,EAAQuyW,mBAAmB,SAAS93V,GAAG,MAAM,kBAAkBA,GAAG,oBAAoBA,GAAGA,IAAIxjB,GAAGwjB,IAAIyY,GAAGzY,IAAI8/T,GAAG9/T,IAAIlhB,GAAGkhB,IAAI4f,GAAG5f,IAAIgyF,GAAG,kBAAkBhyF,GAAG,OAAOA,IAAIA,EAAEghR,WAAW76G,GAAGnmK,EAAEghR,WAAWp5R,GAAGoY,EAAEghR,WAAWtoQ,GAAG1Y,EAAEghR,WAAW72O,GAAGnqC,EAAEghR,WAAW9iS,GAAG8hB,EAAEghR,WAAW6c,GAAG79R,EAAEghR,WAAWrzP,GAAG3tB,EAAEghR,WAAW/rR,GAAG+K,EAAEghR,WAAW7hF,EAAE,EAAE55M,EAAQwyW,OAAO1gV,qCCXjU6uB,EAAO3gD,QAAU,EAAjB2gD,yCCIF,SAAS03O,IAEP,IAAI52R,EAAQ+Z,KAAKC,YAAYo9Q,yBAAyBr9Q,KAAK7d,MAAO6d,KAAK/Z,OACzD,OAAVA,QAA4B/K,IAAV+K,GACpB+Z,KAAK9Z,SAASD,EAElB,CAEA,SAAS62R,EAA0BnhB,GAQjC37P,KAAK9Z,SALL,SAAiB6vS,GACf,IAAI9vS,EAAQ+Z,KAAKC,YAAYo9Q,yBAAyB1hB,EAAWo6B,GACjE,OAAiB,OAAV9vS,QAA4B/K,IAAV+K,EAAsBA,EAAQ,IACzD,EAEsB+Y,KAAKgB,MAC7B,CAEA,SAAS+8Q,EAAoBphB,EAAWk1B,GACtC,IACE,IAAIkG,EAAY/2R,KAAK7d,MACjB4zS,EAAY/1R,KAAK/Z,MACrB+Z,KAAK7d,MAAQw5Q,EACb37P,KAAK/Z,MAAQ4qS,EACb7wR,KAAKi3V,6BAA8B,EACnCj3V,KAAKk3V,wBAA0Bl3V,KAAKwgV,wBAClCzpD,EACAhB,EAEJ,CAAE,QACA/1R,KAAK7d,MAAQ40S,EACb/2R,KAAK/Z,MAAQ8vS,CACf,CACF,CAQA,SAASohE,EAAS9sT,GAChB,IAAIhrC,EAAYgrC,EAAUhrC,UAE1B,IAAKA,IAAcA,EAAUwxV,iBAC3B,MAAM,IAAI7vW,MAAM,sCAGlB,GACgD,oBAAvCqpD,EAAUgzO,0BAC4B,oBAAtCh+Q,EAAUmhV,wBAEjB,OAAOn2S,EAMT,IAAI+sT,EAAqB,KACrBC,EAA4B,KAC5BC,EAAsB,KAgB1B,GAf4C,oBAAjCj4V,EAAUw9Q,mBACnBu6E,EAAqB,qBACmC,oBAAxC/3V,EAAU29Q,4BAC1Bo6E,EAAqB,6BAE4B,oBAAxC/3V,EAAUy9Q,0BACnBu6E,EAA4B,4BACmC,oBAA/Ch4V,EAAU49Q,mCAC1Bo6E,EAA4B,oCAEe,oBAAlCh4V,EAAU09Q,oBACnBu6E,EAAsB,sBACmC,oBAAzCj4V,EAAU69Q,6BAC1Bo6E,EAAsB,8BAGC,OAAvBF,GAC8B,OAA9BC,GACwB,OAAxBC,EACA,CACA,IAAI9/B,EAAgBntR,EAAU8wF,aAAe9wF,EAAUjyD,KACnDm/W,EAC4C,oBAAvCltT,EAAUgzO,yBACb,6BACA,4BAEN,MAAMr8R,MACJ,2FACEw2U,EACA,SACA+/B,EACA,uDACwB,OAAvBH,EAA8B,OAASA,EAAqB,KAC9B,OAA9BC,EACG,OAASA,EACT,KACqB,OAAxBC,EAA+B,OAASA,EAAsB,IATjE,uIAaJ,CAaA,GARkD,oBAAvCjtT,EAAUgzO,2BACnBh+Q,EAAUw9Q,mBAAqBA,EAC/Bx9Q,EAAUy9Q,0BAA4BA,GAMS,oBAAtCz9Q,EAAUmhV,wBAAwC,CAC3D,GAA4C,oBAAjCnhV,EAAUk8P,mBACnB,MAAM,IAAIv6Q,MACR,qHAIJqe,EAAU09Q,oBAAsBA,EAEhC,IAAIxhB,EAAqBl8P,EAAUk8P,mBAEnCl8P,EAAUk8P,mBAAqB,SAC7Bw7B,EACAhB,EACAyhE,GAUA,IAAIC,EAAWz3V,KAAKi3V,4BAChBj3V,KAAKk3V,wBACLM,EAEJj8F,EAAmB77P,KAAKM,KAAM+2R,EAAWhB,EAAW0hE,EACtD,CACF,CAEA,OAAOptT,CACT,+CA9GAwyO,EAAmB66E,8BAA+B,EAClD56E,EAA0B46E,8BAA+B,EACzD36E,EAAoB26E,8BAA+B,qCC7CnD74W,OAAOs1C,eAAe3vC,EAAS,aAAc,CAC3CjH,OAAO,IAETiH,EAAQmzW,kBAAoBnzW,EAAQozW,qBAAkB18W,EAEtD,IAAIymB,EAAW9iB,OAAOulB,QAAU,SAAU+5B,GAAU,IAAK,IAAIh5B,EAAI,EAAGA,EAAI9G,UAAUpmB,OAAQktB,IAAK,CAAE,IAAIhf,EAASkY,UAAU8G,GAAI,IAAK,IAAInmB,KAAOmH,EAActH,OAAOwgB,UAAUoQ,eAAe/P,KAAKvZ,EAAQnH,KAAQm/C,EAAOn/C,GAAOmH,EAAOnH,GAAU,CAAE,OAAOm/C,CAAQ,EAE3PrgC,EAAe,WAAc,SAASkuG,EAAiB7tE,EAAQh8C,GAAS,IAAK,IAAIgjB,EAAI,EAAGA,EAAIhjB,EAAMlK,OAAQktB,IAAK,CAAE,IAAI+3B,EAAa/6C,EAAMgjB,GAAI+3B,EAAW/8B,WAAa+8B,EAAW/8B,aAAc,EAAO+8B,EAAW78B,cAAe,EAAU,UAAW68B,IAAYA,EAAW98B,UAAW,GAAMvhB,OAAOs1C,eAAegK,EAAQjB,EAAWl+C,IAAKk+C,EAAa,CAAE,CAAE,OAAO,SAAUqgP,EAAakrC,EAAYC,GAAiJ,OAA9HD,GAAYz8M,EAAiBuxK,EAAYl+Q,UAAWopT,GAAiBC,GAAa18M,EAAiBuxK,EAAamrC,GAAqBnrC,CAAa,CAAG,CAA7hB,GAEfs6E,EAAStzW,EAAQ,MAEjBuzW,EAAU1uC,EAAuByuC,GAIjCE,EAAa3uC,EAFD7kU,EAAQ,OAMpByzW,EAAc5uC,EAFD7kU,EAAQ,OAMrB0zW,EAAgB7uC,EAFD7kU,EAAQ,OAMvB2zW,EAQJ,SAAiC5qV,GAAO,GAAIA,GAAOA,EAAI07S,WAAc,OAAO17S,EAAc,IAAIqgC,EAAS,CAAC,EAAG,GAAW,MAAPrgC,EAAe,IAAK,IAAItuB,KAAOsuB,EAAWzuB,OAAOwgB,UAAUoQ,eAAe/P,KAAK4N,EAAKtuB,KAAM2uD,EAAO3uD,GAAOsuB,EAAItuB,IAAgC,OAAtB2uD,EAAOvnD,QAAUknB,EAAYqgC,CAAU,CARzPwqT,CAFC5zW,EAAQ,OAIxB6zW,EAAmB7zW,EAAQ,MAE3B8zW,EAAoBjvC,EAAuBgvC,GAE3CE,EAAyB/zW,EAAQ,MAIrC,SAAS6kU,EAAuB97S,GAAO,OAAOA,GAAOA,EAAI07S,WAAa17S,EAAM,CAAElnB,QAASknB,EAAO,CAI9F,SAASirV,EAA2B33E,EAAMlhR,GAAQ,IAAKkhR,EAAQ,MAAM,IAAI+Y,eAAe,6DAAgE,OAAOj6R,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BkhR,EAAPlhR,CAAa,CAI/O,IAAIk4V,EAAkBpzW,EAAQozW,gBAAkB,mBAC5CD,EAAoBnzW,EAAQmzW,kBAAoB,yBAEhDa,EAAYJ,EAAiB94E,gBAAiDpkS,IAApC68W,EAAW3xW,QAAQ8tW,aAE7DuE,EAAoB,SAA2BrgX,GACjD,OAAOwqB,SAASgO,cAAcx4B,EAChC,EAEIsgX,EAAkB,WACpB,OAAOF,EAAYT,EAAW3xW,QAAQ8tW,aAAe6D,EAAW3xW,QAAQ2uW,mCAC1E,EAEA,SAAS4D,EAAiBC,GACxB,OAAOA,GACT,CAEA,IAAIhuW,EAAQ,SAAUiuW,GAGpB,SAASjuW,IACP,IAAIpT,EAEAshX,EAAO9oV,GA7Bf,SAAyBvvB,EAAU88R,GAAe,KAAM98R,aAAoB88R,GAAgB,MAAM,IAAI59Q,UAAU,oCAAwC,CA+BpJ9B,CAAgBmC,KAAMpV,GAEtB,IAAK,IAAI2pS,EAAOl2R,UAAUpmB,OAAQgW,EAAOwgB,MAAM8lR,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC3EvmS,EAAKumS,GAAQn2R,UAAUm2R,GAGzB,OAAeskE,EAAS9oV,EAAQuoV,EAA2Bv4V,MAAOxoB,EAAOoT,EAAM60C,WAAa5gD,OAAOkhB,eAAenV,IAAQ8U,KAAKR,MAAM1nB,EAAM,CAACwoB,MAAMrf,OAAOsN,KAAiB+hB,EAAM+oV,aAAe,YAC5LP,GAAaT,EAAW3xW,QAAQyuW,uBAAuB7kV,EAAMymC,MAC9D,IAAIpmC,EAASsoV,EAAiB3oV,EAAM7tB,MAAMy2W,gBACtCvoV,GAAUA,EAAO6mB,SAASlnB,EAAMymC,MAClCpmC,EAAOmoB,YAAYxoB,EAAMymC,MAGzBl1C,QAAQC,KAAK,iJAEjB,EAAGwO,EAAMgpV,UAAY,SAAU31W,GAC7B2sB,EAAM4uP,OAASv7Q,CACjB,EAAG2sB,EAAMipV,aAAe,SAAU92W,GAChC,IACIy8Q,EADe85F,GACNxE,CAAalkV,EAAO8nV,EAAQ1xW,QAAQwqB,cAAcqnV,EAAc7xW,QAASub,EAAS,CAAEu3V,cAAetuW,EAAMsuW,eAAiB/2W,IAAS6tB,EAAMymC,MACtJzmC,EAAMgpV,UAAUp6F,EAClB,EAAW25F,EAA2BvoV,EAAnC8oV,EACL,CAkGA,OAnJF,SAAmBK,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz5V,UAAU,kEAAoEy5V,GAAeD,EAAS95V,UAAYxgB,OAAOqhB,OAAOk5V,GAAcA,EAAW/5V,UAAW,CAAEY,YAAa,CAAE1iB,MAAO47W,EAAUh5V,YAAY,EAAOC,UAAU,EAAMC,cAAc,KAAe+4V,IAAYv6W,OAAOugB,eAAiBvgB,OAAOugB,eAAe+5V,EAAUC,GAAcD,EAAS15T,UAAY25T,EAAY,CAoB3e5tV,CAAU5gB,EAAOiuW,GA+BjB/6V,EAAalT,EAAO,CAAC,CACnB5L,IAAK,oBACLzB,MAAO,WACA66W,EAAiB94E,YAEjBk5E,IACHx4V,KAAKy2C,KAAOgiT,EAAkB,QAEhCz4V,KAAKy2C,KAAKx7D,UAAY+kB,KAAK7d,MAAMy1W,gBAEpBe,EAAiB34V,KAAK7d,MAAMy2W,gBAClCznV,YAAYnR,KAAKy2C,OAEvB+hT,GAAax4V,KAAKi5V,aAAaj5V,KAAK7d,OACvC,GACC,CACDnD,IAAK,0BACLzB,MAAO,SAAiCw5S,GAGtC,MAAO,CAAEsiE,WAFQV,EAAiB5hE,EAAU6hE,gBAEXU,WADhBX,EAAiB34V,KAAK7d,MAAMy2W,gBAE/C,GACC,CACD55W,IAAK,qBACLzB,MAAO,SAA4Bw5S,EAAWluR,EAAG4uV,GAC/C,GAAKW,EAAiB94E,UAAtB,CACA,IAAIi6E,EAASv5V,KAAK7d,MACd0I,EAAS0uW,EAAO1uW,OAChB+sW,EAAkB2B,EAAO3B,gBAGzB7gE,EAAU6gE,kBAAoBA,IAChC53V,KAAKy2C,KAAKx7D,UAAY28W,GAGxB,IAAIyB,EAAa5B,EAAS4B,WACtBC,EAAa7B,EAAS6B,WAEtBA,IAAeD,IACjBA,EAAW7gU,YAAYx4B,KAAKy2C,MAC5B6iT,EAAWnoV,YAAYnR,KAAKy2C,QAIzBsgP,EAAUlsS,QAAWA,KAEzB2tW,GAAax4V,KAAKi5V,aAAaj5V,KAAK7d,MArBE,CAsBzC,GACC,CACDnD,IAAK,uBACLzB,MAAO,WACL,GAAK66W,EAAiB94E,WAAct/Q,KAAKy2C,MAASz2C,KAAK4+P,OAAvD,CAEA,IAAI34Q,EAAQ+Z,KAAK4+P,OAAO34Q,MACpBi3D,EAAM59D,KAAK49D,MACXs8S,EAAWvzW,EAAM4E,QAAUmV,KAAK7d,MAAMs3W,iBAAmBxzW,EAAMuzW,UAAYt8S,EAAMl9C,KAAK7d,MAAMs3W,gBAE5FD,GACGvzW,EAAMkzI,aACTn5H,KAAK4+P,OAAO86F,mBAGdxpV,WAAWlQ,KAAK+4V,aAAcS,EAAWt8S,IAEzCl9C,KAAK+4V,cAb8D,CAevE,GACC,CACD/5W,IAAK,SACLzB,MAAO,WACL,OAAK66W,EAAiB94E,WAAck5E,IAI/Bx4V,KAAKy2C,MAAQ+hT,IAChBx4V,KAAKy2C,KAAOgiT,EAAkB,QAGbC,GACZxE,CAAa4D,EAAQ1xW,QAAQwqB,cAAcqnV,EAAc7xW,QAASub,EAAS,CAChFte,IAAK2c,KAAKg5V,UACVE,cAAetuW,EAAMsuW,eACpBl5V,KAAK7d,QAAS6d,KAAKy2C,OAXb,IAYX,IACE,CAAC,CACHz3D,IAAK,gBACLzB,MAAO,SAAuByF,GAC5Bk1W,EAAayB,WAAW32W,EAC1B,KAQK4H,CACT,CAjIY,CAiIVitW,EAAOxtT,WAETz/C,EAAM2xR,UAAY,CAChB1xR,OAAQmtW,EAAY5xW,QAAQs7S,KAAKnnT,WACjCg9C,MAAOygU,EAAY5xW,QAAQ+xU,MAAM,CAC/B5xQ,QAASyxS,EAAY5xW,QAAQouN,OAC7BstB,QAASk2H,EAAY5xW,QAAQouN,SAE/BojJ,gBAAiBI,EAAY5xW,QAAQ8wI,OACrCygO,kBAAmBK,EAAY5xW,QAAQ8wI,OACvC0iO,kBAAmB5B,EAAY5xW,QAAQ8wI,OACvCj8I,UAAW+8W,EAAY5xW,QAAQ8xU,UAAU,CAAC8/B,EAAY5xW,QAAQ8wI,OAAQ8gO,EAAY5xW,QAAQ+xU,MAAM,CAC9F10T,KAAMu0V,EAAY5xW,QAAQ8wI,OAAO38I,WACjCs/W,UAAW7B,EAAY5xW,QAAQ8wI,OAAO38I,WACtC4+I,YAAa6+N,EAAY5xW,QAAQ8wI,OAAO38I,eAE1CuQ,iBAAkBktW,EAAY5xW,QAAQ8xU,UAAU,CAAC8/B,EAAY5xW,QAAQ8wI,OAAQ8gO,EAAY5xW,QAAQ+xU,MAAM,CACrG10T,KAAMu0V,EAAY5xW,QAAQ8wI,OAAO38I,WACjCs/W,UAAW7B,EAAY5xW,QAAQ8wI,OAAO38I,WACtC4+I,YAAa6+N,EAAY5xW,QAAQ8wI,OAAO38I,eAE1Cu/W,WAAY9B,EAAY5xW,QAAQ8xU,UAAU,CAAC8/B,EAAY5xW,QAAQ4xU,WAAWqgC,EAAkBjyW,SAAU4xW,EAAY5xW,QAAQ4xU,WAAWogC,EAAiB2B,oBAAqB/B,EAAY5xW,QAAQ4xU,WAAWogC,EAAiB4B,cAAehC,EAAY5xW,QAAQ0xU,QAAQkgC,EAAY5xW,QAAQ4xU,WAAWqgC,EAAkBjyW,YACvT6zW,YAAajC,EAAY5xW,QAAQu0R,KACjCpnR,eAAgBykW,EAAY5xW,QAAQu0R,KACpC8+E,eAAgBzB,EAAY5xW,QAAQ2xE,OACpCmiS,YAAalC,EAAY5xW,QAAQs7S,KACjCy4D,uBAAwBnC,EAAY5xW,QAAQs7S,KAC5C04D,0BAA2BpC,EAAY5xW,QAAQs7S,KAC/C24D,4BAA6BrC,EAAY5xW,QAAQs7S,KACjD75E,cAAemwI,EAAY5xW,QAAQs7S,KACnCk3D,eAAgBZ,EAAY5xW,QAAQu0R,KACpC7tI,KAAMkrN,EAAY5xW,QAAQouN,OAC1B3uN,KAAMmyW,EAAY5xW,QAAQouN,OAC1BhqJ,KAAMwtS,EAAY5xW,QAAQ8wI,OAC1BojO,aAActC,EAAY5xW,QAAQ8wI,OAClCqjO,iBAAkBvC,EAAY5xW,QAAQs7S,KACtC84D,WAAYxC,EAAY5xW,QAAQu0R,KAChC8/E,WAAYzC,EAAY5xW,QAAQu0R,KAChC/1R,GAAIozW,EAAY5xW,QAAQ8wI,OACxBwjO,eAAgB1C,EAAY5xW,QAAQu0R,KACpCtlN,eAAgB2iS,EAAY5xW,QAAQu0R,MAEtC/vR,EAAMzJ,aAAe,CACnB0J,QAAQ,EACR+sW,gBAAiBA,EACjBD,kBAAmBA,EACnBntS,KAAM,SACN0vS,aAAa,EACbT,eAAgB,EAChBU,wBAAwB,EACxBI,kBAAkB,EAClBH,2BAA2B,EAC3BC,6BAA6B,EAC7BxyI,eAAe,EACf+wI,eAAgB,WACd,OAAOh2V,SAASuuB,IAClB,EACAupU,eAAgB,SAAwBv4W,EAAOw4W,GAC7C,OAAO7C,EAAQ1xW,QAAQwqB,cACrB,MACAzuB,EACAw4W,EAEJ,EACAtlS,eAAgB,SAAwBlzE,EAAOvK,GAC7C,OAAOkgX,EAAQ1xW,QAAQwqB,cACrB,MACAzuB,EACAvK,EAEJ,GAEFgT,EAAMsuW,cAAgB,CACpBp3H,QAAS,CACP3vL,SAAU,QACVvO,IAAK,EACLF,KAAM,EACNC,MAAO,EACPE,OAAQ,EACR+2T,gBAAiB,6BAEnBr0S,QAAS,CACPpU,SAAU,WACVvO,IAAK,OACLF,KAAM,OACNC,MAAO,OACPE,OAAQ,OACRisE,OAAQ,iBACR+qP,WAAY,OACZ9jT,SAAU,OACV+jT,wBAAyB,QACzBC,aAAc,MACdv2I,QAAS,OACTj2K,QAAS,UAKb,EAAI+pT,EAAuBnB,UAAUvsW,GAQrCpG,EAAAA,QAAkBoG,qCCzSlB/L,OAAOs1C,eAAe3vC,EAAS,aAAc,CAC3CjH,OAAO,IAGT,IAAIokB,EAAW9iB,OAAOulB,QAAU,SAAU+5B,GAAU,IAAK,IAAIh5B,EAAI,EAAGA,EAAI9G,UAAUpmB,OAAQktB,IAAK,CAAE,IAAIhf,EAASkY,UAAU8G,GAAI,IAAK,IAAInmB,KAAOmH,EAActH,OAAOwgB,UAAUoQ,eAAe/P,KAAKvZ,EAAQnH,KAAQm/C,EAAOn/C,GAAOmH,EAAOnH,GAAU,CAAE,OAAOm/C,CAAQ,EAE3P68T,EAA4B,oBAAXhvV,QAAoD,kBAApBA,OAAO6jR,SAAwB,SAAUviR,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAyB,oBAAXtB,QAAyBsB,EAAIrN,cAAgB+L,QAAUsB,IAAQtB,OAAO3M,UAAY,gBAAkBiO,CAAK,EAEvQxP,EAAe,WAAc,SAASkuG,EAAiB7tE,EAAQh8C,GAAS,IAAK,IAAIgjB,EAAI,EAAGA,EAAIhjB,EAAMlK,OAAQktB,IAAK,CAAE,IAAI+3B,EAAa/6C,EAAMgjB,GAAI+3B,EAAW/8B,WAAa+8B,EAAW/8B,aAAc,EAAO+8B,EAAW78B,cAAe,EAAU,UAAW68B,IAAYA,EAAW98B,UAAW,GAAMvhB,OAAOs1C,eAAegK,EAAQjB,EAAWl+C,IAAKk+C,EAAa,CAAE,CAAE,OAAO,SAAUqgP,EAAakrC,EAAYC,GAAiJ,OAA9HD,GAAYz8M,EAAiBuxK,EAAYl+Q,UAAWopT,GAAiBC,GAAa18M,EAAiBuxK,EAAamrC,GAAqBnrC,CAAa,CAAG,CAA7hB,GAEfs6E,EAAStzW,EAAQ,MAIjByzW,EAAc5uC,EAFD7kU,EAAQ,OAMrB02W,EAAe9C,EAFC5zW,EAAQ,OAMxB22W,EAAa9xC,EAFD7kU,EAAQ,MAMpB2zW,EAAeC,EAFC5zW,EAAQ,OAMxBqyC,EAAYuhU,EAFC5zW,EAAQ,OAIrB6zW,EAAmB7zW,EAAQ,MAE3B8zW,EAAoBjvC,EAAuBgvC,GAI3C+C,EAAwB/xC,EAFD7kU,EAAQ,OAMnC,SAAS4zW,EAAwB7qV,GAAO,GAAIA,GAAOA,EAAI07S,WAAc,OAAO17S,EAAc,IAAIqgC,EAAS,CAAC,EAAG,GAAW,MAAPrgC,EAAe,IAAK,IAAItuB,KAAOsuB,EAAWzuB,OAAOwgB,UAAUoQ,eAAe/P,KAAK4N,EAAKtuB,KAAM2uD,EAAO3uD,GAAOsuB,EAAItuB,IAAgC,OAAtB2uD,EAAOvnD,QAAUknB,EAAYqgC,CAAU,CAE5Q,SAASy7Q,EAAuB97S,GAAO,OAAOA,GAAOA,EAAI07S,WAAa17S,EAAM,CAAElnB,QAASknB,EAAO,CAJ9F/oB,EAAQ,MAaR,IAAI62W,EAAc,CAChBt5H,QAAS,sBACTv7K,QAAS,uBAeP80S,EAAsB,EAEtBC,EAAc,SAAUzC,GAG1B,SAASyC,EAAYn5W,IA7BvB,SAAyB1B,EAAU88R,GAAe,KAAM98R,aAAoB88R,GAAgB,MAAM,IAAI59Q,UAAU,oCAAwC,CA8BpJ9B,CAAgBmC,KAAMs7V,GAEtB,IAAItrV,EA9BR,SAAoC4wQ,EAAMlhR,GAAQ,IAAKkhR,EAAQ,MAAM,IAAI+Y,eAAe,6DAAgE,OAAOj6R,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BkhR,EAAPlhR,CAAa,CA8B/N64V,CAA2Bv4V,MAAOs7V,EAAY77T,WAAa5gD,OAAOkhB,eAAeu7V,IAAc57V,KAAKM,KAAM7d,IAqMtH,OAnMA6tB,EAAMurV,cAAgB,SAAUz5H,GAC9B9xN,EAAM8xN,QAAUA,EAChB9xN,EAAM7tB,MAAMq4W,YAAcxqV,EAAM7tB,MAAMq4W,WAAW14H,EACnD,EAEA9xN,EAAMwrV,cAAgB,SAAUj1S,GAC9Bv2C,EAAMu2C,QAAUA,EAChBv2C,EAAM7tB,MAAMs4W,YAAczqV,EAAM7tB,MAAMs4W,WAAWl0S,EACnD,EAEAv2C,EAAMyrV,WAAa,WACjB,IAAI3lE,EAAc9lR,EAAM7tB,MACpB23W,EAAahkE,EAAYgkE,WACzBI,EAAcpkE,EAAYokE,YAC1BN,EAAoB9jE,EAAY8jE,kBAChCjC,EAAoB7hE,EAAY6hE,kBAChCiB,EAAiB9iE,EAAY8iE,eAG7BhjH,EAAiBgjH,GAAkBA,IAAiB5iH,eAAiBpzO,SAGzE+0V,GAAqB/gU,EAAUjB,OAAOigN,EAAezkN,KAAMwmU,GAE3DiC,GAAqBhjU,EAAUjB,OAAOigN,EAAe/kO,qBAAqB,QAAQ,GAAI+oV,GAGlFM,GAAemB,EAAsB,GAGX,KAF5BA,GAAuB,IAGrBnD,EAAahzR,KAAK40R,GAIlB9pV,EAAM7tB,MAAMg4W,yBACVnqV,EAAM7tB,MAAMk4W,6BACdY,EAAaS,YAAY1rV,EAAM7tB,MAAM0lO,eACrCozI,EAAaU,uBAEbV,EAAaW,mBAIb5rV,EAAM7tB,MAAM05W,cACd7rV,EAAM7tB,MAAM05W,eAGdV,EAAsB/0W,QAAQ01W,WAAW9rV,EAC3C,EAEAA,EAAMzvB,KAAO,WACXyvB,EAAMssG,aACFtsG,EAAM/pB,MAAM4zW,WAAa7pV,EAAM/pB,MAAMkzI,aACvClpH,aAAaD,EAAM+rV,YACnB/rV,EAAM9pB,SAAS,CAAEizI,aAAa,MAE1BnpH,EAAM7tB,MAAMg4W,yBACdc,EAAae,iBAAiBhsV,EAAMymC,MACpCwkT,EAAagB,qBAGfjsV,EAAM9pB,SAAS,CAAE2E,QAAQ,IAAQ,WAC/BmlB,EAAMksV,mBAAqB/5T,uBAAsB,WAC/CnyB,EAAM9pB,SAAS,CAAE2zW,WAAW,IAExB7pV,EAAM7tB,MAAM0I,QAAUmlB,EAAM7tB,MAAM83W,aACpCjqV,EAAM7tB,MAAM83W,YAAY,CACtBkC,UAAWnsV,EAAM8xN,QACjB64H,UAAW3qV,EAAMu2C,SAGvB,GACF,IAEJ,EAEAv2C,EAAMwB,MAAQ,WACRxB,EAAM7tB,MAAMs3W,eAAiB,EAC/BzpV,EAAM0pV,mBAEN1pV,EAAMosV,qBAEV,EAEApsV,EAAMi6L,aAAe,WACnB,OAAOj6L,EAAMu2C,UAAYv2C,EAAMqsV,mBAAqBrsV,EAAMu2C,QAAQ90C,MAAM,CAAEo2M,eAAe,GAC3F,EAEA73M,EAAM0pV,iBAAmB,WACvB,IAAIF,EAAWl6W,KAAK49D,MAAQltC,EAAM7tB,MAAMs3W,eACxCzpV,EAAM9pB,SAAS,CAAEizI,aAAa,EAAMqgO,SAAUA,IAAY,WACxDxpV,EAAM+rV,WAAa7rV,WAAWF,EAAMosV,oBAAqBpsV,EAAM/pB,MAAMuzW,SAAWl6W,KAAK49D,MACvF,GACF,EAEAltC,EAAMosV,oBAAsB,WAC1BpsV,EAAM9pB,SAAS,CACbizI,aAAa,EACbtuI,QAAQ,EACRgvW,WAAW,EACXL,SAAU,MACTxpV,EAAMyrV,WACX,EAEAzrV,EAAMssV,cAAgB,SAAUv6W,IA1HrB,SAAkBA,GAC/B,MAAsB,QAAfA,EAAMuiF,MAAoC,IAAlBviF,EAAMi4D,OACvC,EAyHUsrD,CAASvjH,KACX,EAAIm5W,EAAW90W,SAAS4pB,EAAMu2C,QAASxkE,GAGrCiuB,EAAM7tB,MAAMo4W,kBA5HP,SAAkBx4W,GAC/B,MAAsB,WAAfA,EAAMuiF,MAAuC,KAAlBviF,EAAMi4D,OAC1C,CA0H0CuiT,CAASx6W,KAC3CA,EAAMinE,kBACNh5C,EAAMwsV,aAAaz6W,GAEvB,EAEAiuB,EAAMysV,qBAAuB,SAAU16W,GACX,OAAtBiuB,EAAM0sV,cACR1sV,EAAM0sV,aAAc,GAGlB1sV,EAAM0sV,aAAe1sV,EAAM7tB,MAAMi4W,4BAC/BpqV,EAAM2sV,oBACR3sV,EAAMwsV,aAAaz6W,GAEnBiuB,EAAMi6L,gBAGVj6L,EAAM0sV,YAAc,IACtB,EAEA1sV,EAAM4sV,uBAAyB,WAC7B5sV,EAAM0sV,aAAc,CACtB,EAEA1sV,EAAM6sV,yBAA2B,SAAU96W,GACpCiuB,EAAM7tB,MAAMi4W,2BAA6Br4W,EAAMo8C,QAAUnuB,EAAM8xN,SAClE//O,EAAM2uD,gBAEV,EAEA1gC,EAAM8sV,qBAAuB,WAC3B9sV,EAAM0sV,aAAc,CACtB,EAEA1sV,EAAM+sV,yBAA2B,WAC/B/sV,EAAM0sV,aAAc,CACtB,EAEA1sV,EAAMwsV,aAAe,SAAUz6W,GAC7B,OAAOiuB,EAAM2sV,qBAAuB3sV,EAAM7tB,MAAMoR,eAAexR,EACjE,EAEAiuB,EAAM2sV,kBAAoB,WACxB,OAAO3sV,EAAM7tB,MAAMoR,cACrB,EAEAyc,EAAMgtV,eAAiB,WACrB,OAAQhtV,EAAM/pB,MAAM4E,SAAWmlB,EAAM/pB,MAAMkzI,WAC7C,EAEAnpH,EAAMqsV,gBAAkB,WACtB,OAAOz5V,SAASmjE,gBAAkB/1D,EAAMu2C,SAAWv2C,EAAMu2C,QAAQrvB,SAASt0B,SAASmjE,cACrF,EAEA/1D,EAAMitV,eAAiB,SAAUviT,EAAOwiT,GACtC,IAAIhxG,EAAyF,YAArD,qBAAfgxG,EAA6B,YAAclC,EAAQkC,IAA4BA,EAAa,CACnHz5V,KAAM23V,EAAY1gT,GAClBm/S,UAAWuB,EAAY1gT,GAAS,eAChCy+E,YAAaiiO,EAAY1gT,GAAS,kBAEhCz/D,EAAYixQ,EAAWzoP,KAO3B,OANIuM,EAAM/pB,MAAM4zW,YACd5+W,EAAYA,EAAY,IAAMixQ,EAAW2tG,WAEvC7pV,EAAM/pB,MAAMkzI,cACdl+I,EAAYA,EAAY,IAAMixQ,EAAW/yH,aAEd,kBAAf+jO,GAA2BA,EAAajiX,EAAY,IAAMiiX,EAAajiX,CACvF,EAEA+0B,EAAMmtV,qBAAuB,SAAUj8U,EAAQp3B,GAC7C,OAAOjL,OAAOC,KAAKgL,GAAO8d,QAAO,SAAUg2T,EAAKxlV,GAE9C,OADAwlV,EAAI18S,EAAS,IAAM9oC,GAAQ0R,EAAM1R,GAC1BwlV,CACT,GAAG,CAAC,EACN,EAEA5tT,EAAM/pB,MAAQ,CACZ4zW,WAAW,EACX1gO,aAAa,GAGfnpH,EAAM0sV,YAAc,KACpB1sV,EAAMotV,yBAA2B,KAC1BptV,CACT,CAqHA,OAvVF,SAAmBmpV,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz5V,UAAU,kEAAoEy5V,GAAeD,EAAS95V,UAAYxgB,OAAOqhB,OAAOk5V,GAAcA,EAAW/5V,UAAW,CAAEY,YAAa,CAAE1iB,MAAO47W,EAAUh5V,YAAY,EAAOC,UAAU,EAAMC,cAAc,KAAe+4V,IAAYv6W,OAAOugB,eAAiBvgB,OAAOugB,eAAe+5V,EAAUC,GAAcD,EAAS15T,UAAY25T,EAAY,CAuB3e5tV,CAAU8vV,EAAazC,GA6MvB/6V,EAAaw9V,EAAa,CAAC,CACzBt8W,IAAK,oBACLzB,MAAO,WACDyiB,KAAK7d,MAAM0I,QACbmV,KAAKzf,MAET,GACC,CACDvB,IAAK,qBACLzB,MAAO,SAA4Bw5S,EAAWhB,GAYxC/1R,KAAK7d,MAAM0I,SAAWksS,EAAUlsS,OAClCmV,KAAKzf,QACKyf,KAAK7d,MAAM0I,QAAUksS,EAAUlsS,QACzCmV,KAAKwR,QAIHxR,KAAK7d,MAAMg4W,wBAA0Bn6V,KAAK/Z,MAAM4E,SAAWkrS,EAAUlrS,QACvEmV,KAAKiqM,cAET,GACC,CACDjrN,IAAK,uBACLzB,MAAO,WACDyiB,KAAK/Z,MAAM4E,QACbmV,KAAKy7V,aAEPxrV,aAAajQ,KAAK+7V,YAClBz6T,qBAAqBthC,KAAKk8V,mBAC5B,GACC,CACDl9W,IAAK,aACLzB,MAAO,WACL,IAAIg8W,EAASv5V,KAAK7d,MACd23W,EAAaP,EAAOO,WACpBI,EAAcX,EAAOW,YACrBN,EAAoBL,EAAOK,kBAC3BjC,EAAoB4B,EAAO5B,kBAC3BiB,EAAiBW,EAAOX,eAGxBhjH,EAAiBgjH,GAAkBA,IAAiB5iH,eAAiBpzO,SAGzE+0V,GAAqB/gU,EAAUzB,IAAIygN,EAAezkN,KAAMwmU,GAExDiC,GAAqBhjU,EAAUzB,IAAIygN,EAAe/kO,qBAAqB,QAAQ,GAAI+oV,GAE/EM,IACFmB,GAAuB,EACvBnD,EAAajzR,KAAK60R,IAGpBqB,EAAsB/0W,QAAQw+K,SAAS5kK,KACzC,GAIC,CACDhhB,IAAK,SACLzB,MAAO,WACL,IAAI8/W,EAAUr9V,KAAK7d,MACfyC,EAAKy4W,EAAQz4W,GACb3J,EAAYoiX,EAAQpiX,UACpB6P,EAAmBuyW,EAAQvyW,iBAC3BouW,EAAgBmE,EAAQnE,cACxBthX,EAAWylX,EAAQzlX,SAEnB0lX,EAAgBriX,EAAY,CAAC,EAAIi+W,EAAc3yS,QAC/Cg3S,EAAgBzyW,EAAmB,CAAC,EAAIouW,EAAcp3H,QAE1D,GAAI9hO,KAAKg9V,iBACP,OAAO,KAGT,IAAIQ,EAAe,CACjBn6W,IAAK2c,KAAKu7V,cACVtgX,UAAW+kB,KAAKi9V,eAAe,UAAWnyW,GAC1CysC,MAAO51B,EAAS,CAAC,EAAG47V,EAAev9V,KAAK7d,MAAMo1C,MAAMuqM,SACpD1hP,QAAS4f,KAAKy8V,qBACdrgH,YAAap8O,KAAK68V,0BAGhBY,EAAe97V,EAAS,CAC1B/c,GAAIA,EACJvB,IAAK2c,KAAKw7V,cACVjkU,MAAO51B,EAAS,CAAC,EAAG27V,EAAet9V,KAAK7d,MAAMo1C,MAAMgvB,SACpDtrE,UAAW+kB,KAAKi9V,eAAe,UAAWhiX,GAC1Cm4E,SAAU,KACVsqS,UAAW19V,KAAKs8V,cAChBlgH,YAAap8O,KAAK+8V,yBAClBtgH,UAAWz8O,KAAK48V,uBAChBx8W,QAAS4f,KAAK88V,qBACdtyS,KAAMxqD,KAAK7d,MAAMqoE,KACjB,aAAcxqD,KAAK7d,MAAMm4W,cACxBt6V,KAAKm9V,qBAAqB,OAAQx7V,EAAS,CAAEkzD,OAAO,GAAQ70D,KAAK7d,MAAM2qJ,OAAQ9sI,KAAKm9V,qBAAqB,OAAQn9V,KAAK7d,MAAM0D,MAAQ,CAAC,GAAI,CAC1I,cAAema,KAAK7d,MAAMw7W,SAGxBtoS,EAAiBr1D,KAAK7d,MAAMkzE,eAAeooS,EAAc7lX,GAC7D,OAAOooB,KAAK7d,MAAMu4W,eAAe8C,EAAcnoS,EACjD,KAGKimS,CACT,CAlUkB,CAkUhBzD,EAAOxtT,WAETixT,EAAYn6W,aAAe,CACzBo2C,MAAO,CACLuqM,QAAS,CAAC,EACVv7K,QAAS,CAAC,GAEZ2yS,cAAe,CAAC,GAElBoC,EAAY/+E,UAAY,CACtB1xR,OAAQmtW,EAAY5xW,QAAQs7S,KAAKnnT,WACjC2+W,cAAelB,EAAY5xW,QAAQ+xU,MAAM,CACvC5xQ,QAASyxS,EAAY5xW,QAAQouN,OAC7BstB,QAASk2H,EAAY5xW,QAAQouN,SAE/Bj9K,MAAOygU,EAAY5xW,QAAQ+xU,MAAM,CAC/B5xQ,QAASyxS,EAAY5xW,QAAQouN,OAC7BstB,QAASk2H,EAAY5xW,QAAQouN,SAE/Bv5N,UAAW+8W,EAAY5xW,QAAQ8xU,UAAU,CAAC8/B,EAAY5xW,QAAQ8wI,OAAQ8gO,EAAY5xW,QAAQouN,SAC1F1pN,iBAAkBktW,EAAY5xW,QAAQ8xU,UAAU,CAAC8/B,EAAY5xW,QAAQ8wI,OAAQ8gO,EAAY5xW,QAAQouN,SACjGokJ,eAAgBZ,EAAY5xW,QAAQu0R,KACpCg9E,kBAAmBK,EAAY5xW,QAAQ8wI,OACvC0iO,kBAAmB5B,EAAY5xW,QAAQ8wI,OACvCgjO,YAAalC,EAAY5xW,QAAQs7S,KACjCo4D,WAAY9B,EAAY5xW,QAAQ8xU,UAAU,CAAC8/B,EAAY5xW,QAAQ4xU,WAAWqgC,EAAkBjyW,SAAU4xW,EAAY5xW,QAAQ4xU,WAAWogC,EAAiB2B,oBAAqB/B,EAAY5xW,QAAQ4xU,WAAWogC,EAAiB4B,cAAehC,EAAY5xW,QAAQ0xU,QAAQkgC,EAAY5xW,QAAQ4xU,WAAWqgC,EAAkBjyW,YACvT6zW,YAAajC,EAAY5xW,QAAQu0R,KACjCkhF,aAAc7D,EAAY5xW,QAAQu0R,KAClCpnR,eAAgBykW,EAAY5xW,QAAQu0R,KACpC8+E,eAAgBzB,EAAY5xW,QAAQ2xE,OACpCoiS,uBAAwBnC,EAAY5xW,QAAQs7S,KAC5C04D,0BAA2BpC,EAAY5xW,QAAQs7S,KAC/C24D,4BAA6BrC,EAAY5xW,QAAQs7S,KACjD75E,cAAemwI,EAAY5xW,QAAQs7S,KACnCl3O,KAAMwtS,EAAY5xW,QAAQ8wI,OAC1BojO,aAActC,EAAY5xW,QAAQ8wI,OAClC4V,KAAMkrN,EAAY5xW,QAAQouN,OAC1B3uN,KAAMmyW,EAAY5xW,QAAQouN,OAC1B58N,SAAUogX,EAAY5xW,QAAQqwD,KAC9B8jT,iBAAkBvC,EAAY5xW,QAAQs7S,KACtC84D,WAAYxC,EAAY5xW,QAAQu0R,KAChC8/E,WAAYzC,EAAY5xW,QAAQu0R,KAChC/1R,GAAIozW,EAAY5xW,QAAQ8wI,OACxBwjO,eAAgB1C,EAAY5xW,QAAQu0R,KACpCtlN,eAAgB2iS,EAAY5xW,QAAQu0R,KACpCgjF,OAAQ3F,EAAY5xW,QAAQ8wI,QAE9B1yI,EAAAA,QAAkB82W,EAClBn2T,EAAO3gD,QAAUA,EAAiB,2CC1blC3F,OAAOs1C,eAAe3vC,EAAS,aAAc,CAC3CjH,OAAO,IAETiH,EAAQ4oF,WAqBR,WACMwwR,IACEA,EAAc18T,gBAChB08T,EAAc18T,gBAAgB,eACG,MAAxB08T,EAAc3lX,OACvB2lX,EAAc7+W,SAAQ,SAAUiE,GAC9B,OAAOA,EAAQk+C,gBAAgB,cACjC,IAEAt+B,SAASkO,iBAAiB8sV,GAAe7+W,SAAQ,SAAUiE,GACzD,OAAOA,EAAQk+C,gBAAgB,cACjC,KAGJ08T,EAAgB,IAClB,EAnCAp5W,EAAQoxH,IAsCR,WACMnnB,CAMN,EA5CAjqG,EAAQq5W,eAAiBA,EACzBr5W,EAAQm1W,WAoDR,SAAoB32W,GAClB,IAAI86W,EAAa96W,EACjB,GAA0B,kBAAf86W,GAA2B1F,EAAiB94E,UAAW,CAChE,IAAIjmP,EAAKz2B,SAASkO,iBAAiBgtV,GACnCD,EAAexkU,EAAIykU,GACnBA,EAAazkU,CACf,CAEA,OADAukU,EAAgBE,GAAcF,CAEhC,EA5DAp5W,EAAQu5W,gBAAkBA,EAC1Bv5W,EAAQygF,KAwER,SAAc60R,GACZ,IAAIkE,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiBhjX,EAErB,IACE,IAAK,IAAgE0B,EAA5DI,EAAY+gX,EAAgBjE,GAAY9tV,OAAO6jR,cAAsBmuE,GAA6BphX,EAAQI,EAAU8gF,QAAQ1gF,MAAO4gX,GAA4B,EAAM,CACnKphX,EAAMW,MAEZ+4C,aAAa,cAAe,OACjC,CACF,CAAE,MAAOx4C,GACPmgX,GAAoB,EACpBC,EAAiBpgX,CACnB,CAAE,QACA,KACOkgX,GAA6BhhX,EAAUkqV,QAC1ClqV,EAAUkqV,QAEd,CAAE,QACA,GAAI+2B,EACF,MAAMC,CAEV,CACF,CACF,EAhGA15W,EAAQ0gF,KAkGR,SAAc40R,GACZ,IAAIqE,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBnjX,EAEtB,IACE,IAAK,IAAiEmC,EAA7DG,EAAaugX,EAAgBjE,GAAY9tV,OAAO6jR,cAAuBsuE,GAA8B9gX,EAASG,EAAWsgF,QAAQ1gF,MAAO+gX,GAA6B,EAAM,CACzK9gX,EAAOE,MAEb2jD,gBAAgB,cACrB,CACF,CAAE,MAAOpjD,GACPsgX,GAAqB,EACrBC,EAAkBvgX,CACpB,CAAE,QACA,KACOqgX,GAA8B3gX,EAAW0pV,QAC5C1pV,EAAW0pV,QAEf,CAAE,QACA,GAAIk3B,EACF,MAAMC,CAEV,CACF,CACF,EA1HA75W,EAAQ85W,6BA4HR,WACEV,EAAgB,IAClB,EA5HA,IAMgCtwV,EAN5BixV,EAAWh6W,EAAQ,MAEnBi6W,GAI4BlxV,EAJOixV,IAIcjxV,EAAI07S,WAAa17S,EAAM,CAAElnB,QAASknB,GAFnF8qV,EAAmB7zW,EAAQ,MAI/B,IAAIq5W,EAAgB,KAgCpB,SAASC,EAAe7nG,EAAUr9N,GAChC,IAAKq9N,IAAaA,EAAS/9Q,OACzB,MAAM,IAAI+I,MAAM,oDAAsD23C,EAAW,IAErF,CAaA,SAASolU,EAAgBjE,GACvB,IAAIzgU,EAAKygU,GAAc8D,EACvB,OAAIvkU,EACK5qB,MAAMC,QAAQ2qB,IAAOA,aAAcolU,gBAAkBplU,aAAcjB,SAAWiB,EAAK,CAACA,KAE3F,EAAImlU,EAAUp4W,UAAS,EAAO,CAAC,2CAA4C,iEAAkE,0DAA2D,mEAAoE,qCAAqC6gB,KAAK,MAE/S,GAEX,qCC9EApoB,OAAOs1C,eAAe3vC,EAAS,aAAc,CAC3CjH,OAAO,IAETiH,EAAQ4oF,WAiBR,WAGE,IAFA,IAAIsxR,EAAO,CAACzoD,EAAQC,GAEX3nS,EAAK,EAAGA,EAAKmwV,EAAKzmX,OAAQs2B,IAAM,CACvC,IAAInjB,EAAOszW,EAAKnwV,GACXnjB,IACLA,EAAKklB,YAAcllB,EAAKklB,WAAWkoB,YAAYptC,GACjD,CACA6qT,EAASC,EAAQ,KACjBjqS,EAAY,EACd,EA1BAznB,EAAQoxH,IA6BR,WACEr0G,QAAQq0G,IAAI,uBACZr0G,QAAQq0G,IAAI3pG,EAAUh0B,QAEtB,IADA,IAAI0mX,EAAQ,CAAC1oD,EAAQC,GACZ0oD,EAAM,EAAGA,EAAMD,EAAM1mX,OAAQ2mX,IAAO,CAC3C,IACItmJ,EADOqmJ,EAAMC,IACG,CAAC,EACrBr9V,QAAQq0G,IAAI0iG,EAAM5tJ,SAAU4tJ,EAAMr9N,UAAWq9N,EAAM1zN,GACrD,CACA2c,QAAQq0G,IAAI,0BACd,EArCA,IAIgCtoG,EAJ5BuxV,EAAuBt6W,EAAQ,MAE/B42W,GAE4B7tV,EAFmBuxV,IAEEvxV,EAAI07S,WAAa17S,EAAM,CAAElnB,QAASknB,GAIvF,IAAI2oS,OAAS,EACTC,OAAQ,EACRjqS,EAAY,GA8BhB,SAASg+L,IACkB,IAArBh+L,EAAUh0B,QAOdg0B,EAAUA,EAAUh0B,OAAS,GAAGgyN,cAClC,CAmCAkxJ,EAAsB/0W,QAAQ04W,WAjC9B,SAAkBC,EAAWC,GACtB/oD,GAAWC,KACdD,EAASrzS,SAASgO,cAAc,QACzB0lB,aAAa,6BAA8B,IAClD2/Q,EAAO1+Q,MAAM4a,SAAW,WACxB8jQ,EAAO1+Q,MAAMgN,QAAU,IACvB0xQ,EAAO3/Q,aAAa,WAAY,KAChC2/Q,EAAOpyS,iBAAiB,QAASomM,IACjCisG,EAAQD,EAAO7kS,aACTvN,iBAAiB,QAASomM,KAGlCh+L,EAAY+yV,GAEE/mX,OAAS,GAEjB2qB,SAASuuB,KAAKoqF,aAAe06L,GAC/BrzS,SAASuuB,KAAK6G,aAAai+Q,EAAQrzS,SAASuuB,KAAKoqF,YAE/C34G,SAASuuB,KAAKk/F,YAAc6lL,GAC9BtzS,SAASuuB,KAAKhgB,YAAY+kS,KAIxBD,EAAOh9P,eACTg9P,EAAOh9P,cAAczgB,YAAYy9Q,GAE/BC,EAAMj9P,eACRi9P,EAAMj9P,cAAczgB,YAAY09Q,GAGtC,qCCxFAr3T,OAAOs1C,eAAe3vC,EAAS,aAAc,CAC3CjH,OAAO,IAETiH,EAAQ4oF,WAYR,WACE,IAAI6xR,EAAcr8V,SAASiO,qBAAqB,QAAQ,GACxD,IAAK,IAAIgnJ,KAAOqnM,EACd/nU,EAAY8nU,EAAaC,EAAcrnM,IAGzC,IAAI1mI,EAAOvuB,SAASuuB,KACpB,IAAK,IAAIguU,KAAQC,EACfjoU,EAAYhG,EAAMiuU,EAAiBD,IAGrCD,EAAgB,CAAC,EACjBE,EAAmB,CAAC,CACtB,EAxBA56W,EAAQoxH,IA2BR,WACMnnB,CAoBN,EA/CA,IAAIywQ,EAAgB,CAAC,EACjBE,EAAmB,CAAC,EAIxB,SAASjoU,EAAY54C,EAAIs5K,GACvBt5K,EAAGq4C,UAAUjB,OAAOkiI,EACtB,CAuGUrzK,EAAQ2wC,IAAM,SAAanyC,EAASq8W,GAC5C,OA5BmCC,EA4BjBt8W,EAAQ4zC,UA5BuB2oU,EA4BsB,QAAlCv8W,EAAQ0nE,SAASrsE,cAA0B6gX,EAAgBE,OAAkBC,EAAYprW,MAAM,KA3B5HlV,SAAQ,SAAU9D,IA5BH,SAA4BskX,EAAMtkX,GACpDskX,EAAKtkX,KACRskX,EAAKtkX,GAAa,GAEpBskX,EAAKtkX,IAAc,CAErB,CAuBIukX,CAAmBD,EAAMtkX,GACzBqkX,EAAanqU,IAAIl6C,EACnB,IAJe,IAAoBqkX,EAAcC,CA6BnD,EAQa/6W,EAAQmxC,OAAS,SAAgB3yC,EAASq8W,GACrD,OAxBuCC,EAwBnBt8W,EAAQ4zC,UAxByB2oU,EAwBoB,QAAlCv8W,EAAQ0nE,SAASrsE,cAA0B6gX,EAAgBE,OAAkBC,EAAYprW,MAAM,KAvB9HlV,SAAQ,SAAU9D,IA5BH,SAA4BskX,EAAMtkX,GACrDskX,EAAKtkX,KACPskX,EAAKtkX,IAAc,EAGvB,CAwBIwkX,CAAmBF,EAAMtkX,GACL,IAApBskX,EAAKtkX,IAAoBqkX,EAAa3pU,OAAO16C,EAC/C,IAJiB,IAAsBqkX,EAAcC,CAyBvD,qCC/HA1gX,OAAOs1C,eAAe3vC,EAAS,aAAc,CAC3CjH,OAAO,IAETiH,EAAQ4oF,WAsBR,WACEsyR,EAAqB,EACvB,EAvBAl7W,EAAQoxH,IA0BR,WACMnnB,CAQN,EAlCAjqG,EAAQmuS,WAAaA,EACrBnuS,EAAQm7W,YAAcA,EACtBn7W,EAAQy3W,kBA4DR,WACEyD,EAAmBjgX,KAAKmjB,SAASmjE,cACnC,EA7DAvhF,EAAQk3W,YAgER,WACE,IAAI7zI,EAAgBxpN,UAAUpmB,OAAS,QAAsBiD,IAAjBmjB,UAAU,IAAmBA,UAAU,GAE/EuhW,EAAU,KACd,IAKE,YAJkC,IAA9BF,EAAmBznX,SACrB2nX,EAAUF,EAAmB50V,OACrB2G,MAAM,CAAEo2M,cAAeA,IAGnC,CAAE,MAAOpsO,GACP8lB,QAAQC,KAAK,CAAC,+BAAgCo+V,EAAS,oCAAoC34V,KAAK,KAClG,CACF,EA5EAziB,EAAQo3W,gBA+ER,WACE8D,EAAmBznX,OAAS,GAAKynX,EAAmB50V,KACtD,EAhFAtmB,EAAQw3W,iBAkFR,SAA0Bh5W,GACxB68W,EAAe78W,EAEX1C,OAAOujB,kBACTvjB,OAAOujB,iBAAiB,OAAQ8uR,GAAY,GAC5C/vR,SAASiB,iBAAiB,QAAS87V,GAAa,KAEhDr/W,OAAOq/R,YAAY,SAAUgT,GAC7B/vR,SAAS+8Q,YAAY,UAAWggF,GAEpC,EA3FAn7W,EAAQm3W,oBA6FR,WACEkE,EAAe,KAEXv/W,OAAOujB,kBACTvjB,OAAOwjB,oBAAoB,OAAQ6uR,GACnC/vR,SAASkB,oBAAoB,QAAS67V,KAEtCr/W,OAAOkzV,YAAY,SAAU7gD,GAC7B/vR,SAAS4wU,YAAY,UAAWmsB,GAEpC,EArGA,IAIgCryV,EAJ5BwyV,EAAYv7W,EAAQ,MAEpBw7W,GAE4BzyV,EAFQwyV,IAEaxyV,EAAI07S,WAAa17S,EAAM,CAAElnB,QAASknB,GAEvF,IAAIoyV,EAAqB,GACrBG,EAAe,KACfG,GAAc,EAqBlB,SAASrtE,IACPqtE,GAAc,CAChB,CAEA,SAASL,IACP,GAAIK,EAAa,CAEf,GADAA,GAAc,GACTH,EACH,OAOF3vV,YAAW,WACL2vV,EAAa3oU,SAASt0B,SAASmjE,kBAG1B,EAAIg6R,EAAW35W,SAASy5W,GAAc,IAAMA,GAClDpuV,OACL,GAAG,EACL,CACF,mCCjEA5yB,OAAOs1C,eAAe3vC,EAAS,aAAc,CAC3CjH,OAAO,IAETiH,EAAQoxH,IAyDR,WACEr0G,QAAQq0G,IAAI,kCACZr0G,QAAQq0G,IAAIqqP,EAAoBjB,cAAc/mX,QAC9CgoX,EAAoBjB,cAAcjgX,SAAQ,SAAU8/B,GAClD,OAAOtd,QAAQq0G,IAAI/2F,EACrB,IACAtd,QAAQq0G,IAAI,qCACd,EA/DApxH,EAAQ4oF,WAkER,WACE6yR,EAAsB,IAAIC,CAC5B,EA9DA,IAAIA,EAAsB,SAASA,IACjC,IAAIlwV,EAAQhQ,MALd,SAAyBvf,EAAU88R,GAAe,KAAM98R,aAAoB88R,GAAgB,MAAM,IAAI59Q,UAAU,oCAAwC,CAOtJ9B,CAAgBmC,KAAMkgW,GAEtBlgW,KAAK4kK,SAAW,SAAUu7L,IAC2B,IAA/CnwV,EAAMgvV,cAAc1oW,QAAQ6pW,KAOhCnwV,EAAMgvV,cAAcv/W,KAAK0gX,GACzBnwV,EAAMowV,KAAK,YACb,EAEApgW,KAAK87V,WAAa,SAAUqE,GAC1B,IAAIr5W,EAAQkpB,EAAMgvV,cAAc1oW,QAAQ6pW,IACzB,IAAXr5W,IAOJkpB,EAAMgvV,cAAcn4U,OAAO//B,EAAO,GAClCkpB,EAAMowV,KAAK,cACb,EAEApgW,KAAK8+V,UAAY,SAAUptU,GACzB1hB,EAAMqwV,YAAY5gX,KAAKiyC,EACzB,EAEA1xB,KAAKogW,KAAO,SAAUrB,GACpB/uV,EAAMqwV,YAAYthX,SAAQ,SAAUuhX,GAClC,OAAOA,EAAWvB,EAElB/uV,EAAMgvV,cAAc3hW,QACtB,GACF,EAEA2C,KAAKg/V,cAAgB,GACrBh/V,KAAKqgW,YAAc,EACrB,EAEIJ,EAAsB,IAAIC,EAmB9B17W,EAAAA,QAAkBy7W,qCC3ElBphX,OAAOs1C,eAAe3vC,EAAS,aAAc,CAC3CjH,OAAO,IAETiH,EAAQ86R,UAAY96R,EAAQw1W,aAAex1W,EAAQu1W,wBAAqB7+W,EAExE,IAIgCoyB,EAJ5BizV,EAASh8W,EAAQ,MAMrB,IAAIi8W,IAF4BlzV,EAFKizV,IAEgBjzV,EAAI07S,WAAa17S,EAAM,CAAElnB,QAASknB,IAEtElnB,QAEbq6W,EAAkBD,EAAGlhF,UAAYh/R,OAAOokQ,YAAc,CAAC,EAElClgQ,EAAQu1W,mBAAqByG,EAAGlhF,UAAYh/R,OAAOm+W,eAAiB,CAAC,EAE3Ej6W,EAAQw1W,aAAewG,EAAGlhF,UAAYh/R,OAAO83C,SAAW,CAAC,EAE5D5zC,EAAQ86R,UAAYkhF,EAAGlhF,UAEvC96R,EAAAA,QAAkBi8W,oCCrBlB5hX,OAAOs1C,eAAe3vC,EAAS,aAAc,CAC3CjH,OAAO,IAETiH,EAAAA,QAcA,SAAkBiyD,EAAM10D,GACtB,IAAI2+W,GAAW,EAAIX,EAAW35W,SAASqwD,GAEvC,IAAKiqT,EAASzoX,OAGZ,YADA8J,EAAM2uD,iBAIR,IAAIvS,OAAS,EAETqc,EAAWz4D,EAAMy4D,SACjBliB,EAAOooU,EAAS,GAChBpW,EAAOoW,EAASA,EAASzoX,OAAS,GAClC8tF,EAAgB4K,IAIpB,GAAIl6B,IAASsvB,EAAe,CAC1B,IAAKvrB,EAAU,OACfrc,EAASmsT,CACX,CAEIA,IAASvkR,GAAkBvrB,IAC7Brc,EAAS7F,GAGPA,IAASytC,GAAiBvrB,IAC5Brc,EAASmsT,GAGX,GAAInsT,EAGF,OAFAp8C,EAAM2uD,sBACNvS,EAAO1sB,QAeT,IAAIkvV,EAAc,4BAA4BjwU,KAAKyC,UAAUH,WAK7D,GAJqC,MAAf2tU,GAAyC,UAAlBA,EAAY,IAAoE,MAAlD,qBAAqBjwU,KAAKyC,UAAUH,WAIzF,OAEtB,IAAIpG,EAAI8zU,EAASpqW,QAAQyvE,GAErBn5C,GAAK,IACPA,GAAK4tB,GAAY,EAAI,GAOvB,GAAsB,qBAJtBrc,EAASuiU,EAAS9zU,IAQhB,OAHA7qC,EAAM2uD,sBACNvS,EAASqc,EAAW8vS,EAAOhyT,GACpB7mB,QAIT1vB,EAAM2uD,iBAENvS,EAAO1sB,OACT,EAvFA,IAIgCnE,EAJ5BwyV,EAAYv7W,EAAQ,MAEpBw7W,GAE4BzyV,EAFQwyV,IAEaxyV,EAAI07S,WAAa17S,EAAM,CAAElnB,QAASknB,GAEvF,SAASqjE,IACP,IAAIt3C,EAAKh7B,UAAUpmB,OAAS,QAAsBiD,IAAjBmjB,UAAU,GAAmBA,UAAU,GAAKuE,SAE7E,OAAOy2B,EAAG0sC,cAAc66R,WAAajwR,EAAiBt3C,EAAG0sC,cAAc66R,YAAcvnU,EAAG0sC,aAC1F,CA8EA5gC,EAAO3gD,QAAUA,EAAiB,yCC7FlC3F,OAAOs1C,eAAe3vC,EAAS,aAAc,CAC3CjH,OAAO,IAETiH,EAAAA,QAsEA,SAASq8W,EAAwB79W,GAC/B,IAAI89W,EAAc,GAAGzjW,MAAMqC,KAAK1c,EAAQ8tB,iBAAiB,KAAM,GAAGlJ,QAAO,SAAUm5V,EAAU1nU,GAC3F,OAAO0nU,EAASpgX,OAAQ04C,EAAGunU,WAAoBC,EAAwBxnU,EAAGunU,YAAlC,CAACvnU,GAC3C,GAAG,IACH,OAAOynU,EAAY3iX,OAAOuiX,EAC5B,EA9DA,IAAIM,EAAe,OACfC,EAAmB,WAEnBC,EAAe,6CAQnB,SAASC,EAAcn+W,GACrB,IAAIo+W,EAAWp+W,EAAQy0C,aAAe,GAAKz0C,EAAQixD,cAAgB,EAGnE,GAAImtT,IAAap+W,EAAQuuB,UAAW,OAAO,EAE3C,IAEE,IAAIgmB,EAAQj3C,OAAO4jD,iBAAiBlhD,GAChCqI,EAAeksC,EAAM4M,iBAAiB,WAC1C,OAAOi9T,EAAW/1W,IAAiB41W,GAhBvC,SAA0Bj+W,EAASu0C,GACjC,MAA8C,YAAvCA,EAAM4M,iBAAiB,aAE9BnhD,EAAQmtD,aAAe,GAAKntD,EAAQitD,cAAgB,CACtD,CAY2DoxT,CAAiBr+W,EAASu0C,GAASlsC,IAAiB21W,CAC7G,CAAE,MAAO7lQ,GAGP,OADA55F,QAAQC,KAAK,oCACN,CACT,CACF,CAiBA,SAAS8/V,EAAUt+W,EAASu+W,GAC1B,IAAI72S,EAAW1nE,EAAQ0nE,SAASrsE,cAEhC,OADU6iX,EAAap5V,KAAK4iD,KAAc1nE,EAAQjK,UAA0B,MAAb2xE,GAAmB1nE,EAAQwY,MAA2B+lW,IAjBvH,SAAiBv+W,GAGf,IAFA,IAAIi2D,EAAgBj2D,EAChBw+W,EAAWx+W,EAAQosT,aAAepsT,EAAQosT,cACvCn2P,GACDA,IAAkBr2C,SAASuuB,MADX,CAMpB,GAFIqwU,GAAYvoT,IAAkBuoT,IAAUvoT,EAAgBuoT,EAASv4Q,KAAK34E,YAEtE6wV,EAAcloT,GAAgB,OAAO,EACzCA,EAAgBA,EAAc3oC,UAChC,CACA,OAAO,CACT,CAKgBliB,CAAQpL,EACxB,CAEA,SAAS09W,EAAS19W,GAChB,IAAIowE,EAAWpwE,EAAQo+C,aAAa,YACnB,OAAbgyB,IAAmBA,OAAWl4E,GAClC,IAAIumX,EAAgB3nV,MAAMs5C,GAC1B,OAAQquS,GAAiBruS,GAAY,IAAMkuS,EAAUt+W,GAAUy+W,EACjE,CAQAt8T,EAAO3gD,QAAUA,EAAiB,2CC/ElC3F,OAAOs1C,eAAe3vC,EAAS,aAAc,CAC3CjH,OAAO,IAGT,IAIgC+vB,EAJ5Bo0V,EAASn9W,EAAQ,MAEjBo9W,GAE4Br0V,EAFKo0V,IAEgBp0V,EAAI07S,WAAa17S,EAAM,CAAElnB,QAASknB,GAEvF9oB,EAAAA,QAAkBm9W,EAAQv7W,QAC1B++C,EAAO3gD,QAAUA,EAAiB,slBC4D3B,IAAMo9W,EACXxiG,EAAAA,cAAoD,MAK/C,IAAMyiG,EAAyBziG,EAAAA,cAEpC,MAKK,IAAM0iG,EAAe1iG,EAAAA,cAA2C,MAoChE,IAAM2iG,EAAoB3iG,EAAAA,cAC/B,MAYK,IAAM4iG,EAAkB5iG,EAAAA,cAC7B,UAaW6iG,EAAe7iG,EAAAA,cAAwC,CAClE8iG,OAAQ,KACRz8V,QAAS,GACT08V,aAAa,IAOR,IAAMC,EAAoBhjG,EAAAA,cAAyB,MCxGnD,SAASijG,EACd/oW,EAAMw/V,GAEE,IADNr0D,QAA8C,IAAAq0D,EAAG,CAAC,EAACA,GAAnDr0D,SAGA69D,MADFC,EAAAA,EAAAA,KAAU,GAOV,IAAAC,EAA8BpjG,EAAAA,WAAiB2iG,GAAzCp9V,EAAQ69V,EAAR79V,SAAUwuB,EAAAqvU,EAAArvU,UAChBsvU,EAAiCC,EAAgBppW,EAAI,CAAEmrS,SAAAA,IAAjDxjS,EAAIwhW,EAAJxhW,KAAMF,EAAQ0hW,EAAR1hW,SAAUC,EAAAyhW,EAAAzhW,OAElB2hW,EAAiB5hW,EAWrB,MALiB,MAAb4D,IACFg+V,EACe,MAAb5hW,EAAmB4D,GAAWuB,EAAAA,EAAAA,IAAU,CAACvB,EAAU5D,KAGhDoyB,EAAU3wB,WAAW,CAAEzB,SAAU4hW,EAAgB3hW,OAAAA,EAAQC,KAAAA,GAClE,CAOO,SAASqhW,IACd,OAA4C,MAArCljG,EAAAA,WAAiB4iG,EAC1B,CAYO,SAASY,IAQd,OANEN,MADFC,EAAAA,EAAAA,KAAU,GAOHnjG,EAAAA,WAAiB4iG,GAAiBzmW,QAC3C,CAkDA,SAAS+4R,EACP2lC,GAEe76D,EAAAA,WAAiB2iG,GAAmBc,QAKjDzjG,EAAAA,gBAAsB66D,EAE1B,CAQO,SAASxhU,IAId,OAHsB2mQ,EAAAA,WAAiB6iG,GAAjCE,YA8yBR,WACE,IAAMW,EAAWC,EAAqBC,EAAeC,mBAA/CH,OACFl+W,EAAKs+W,EAAkBC,EAAoBF,mBAE3CG,EAAYhkG,EAAAA,QAAa,GAsB7B,OArBAk1B,GAA0B,WACxB8uE,EAAUjgX,SAAU,CACtB,IAEiCi8Q,EAAAA,aAC/B,SAAC9lQ,EAAiBoH,QAAwB,IAAxBA,IAAAA,EAA2B,CAAC,GAKvC0iW,EAAUjgX,UAEG,kBAAPmW,EACTwpW,EAAOtqW,SAASc,GAEhBwpW,EAAOtqW,SAASc,EAAEqI,EAAA,CAAI0hW,YAAaz+W,GAAO8b,IAE9C,GACA,CAACoiW,EAAQl+W,GAIb,CAt0BuB0+W,GAGvB,WAEIhB,MADFC,EAAAA,EAAAA,KAAU,GAOV,IAAIgB,EAAoBnkG,EAAAA,WAAiBwiG,GACzC4B,EAA8BpkG,EAAAA,WAAiB2iG,GAAzCp9V,EAAQ6+V,EAAR7+V,SAAUwuB,EAAAqwU,EAAArwU,UACV1tB,EAAY25P,EAAAA,WAAiB6iG,GAA7Bx8V,QACUyE,EAAqB04V,IAA/B7hW,SAEF0iW,EAAqBnnW,KAAKK,WAC5B+mW,EAAAA,EAAAA,IAA2Bj+V,GAAS3lB,KAAK,SAAAsoB,GAAK,OAAKA,EAAMG,YAAY,KAGnE66V,EAAYhkG,EAAAA,QAAa,GAqD7B,OApDAk1B,GAA0B,WACxB8uE,EAAUjgX,SAAU,CACtB,IAEiCi8Q,EAAAA,aAC/B,SAAC9lQ,EAAiBoH,GAKhB,QALwC,IAAxBA,IAAAA,EAA2B,CAAC,GAKvC0iW,EAAUjgX,QAEf,GAAkB,kBAAPmW,EAAX,CAKA,IAAI6I,GAAO4H,EAAAA,EAAAA,IACTzQ,EACAgD,KAAKC,MAAMknW,GACXv5V,EACqB,SAArBxJ,EAAQ+jS,UASe,MAArB8+D,GAA0C,MAAb5+V,IAC/BxC,EAAKpB,SACe,MAAlBoB,EAAKpB,SACD4D,GACAuB,EAAAA,EAAAA,IAAU,CAACvB,EAAUxC,EAAKpB,aAG/BL,EAAQjK,QAAU08B,EAAU18B,QAAU08B,EAAU1zC,MACjD0iB,EACAzB,EAAQza,MACRya,EAzBF,MAFEyyB,EAAU7uB,GAAGhL,EA6BjB,GACA,CACEqL,EACAwuB,EACAswU,EACAv5V,EACAq5V,GAKN,CA1E6CI,EAC7C,CA4GO,SAASC,IAKd,IAAMn+V,EAAY25P,EAAAA,WAAiB6iG,GAA7Bx8V,QACFo+V,EAAap+V,EAAQA,EAAQxtB,OAAS,GAC1C,OAAO4rX,EAAcA,EAAWv7V,OAAiB,CAAC,CACpD,CAOO,SAASo6V,EACdppW,EAAMwqW,GAEA,IADJr/D,QAA8C,IAAAq/D,EAAG,CAAC,EAACA,GAAnDr/D,SAEIh/R,EAAY25P,EAAAA,WAAiB6iG,GAA7Bx8V,QACUyE,EAAqB04V,IAA/B7hW,SAEF0iW,EAAqBnnW,KAAKK,WAC5B+mW,EAAAA,EAAAA,IAA2Bj+V,GAAS3lB,KAAK,SAAAsoB,GAAK,OAAKA,EAAMG,YAAY,KAGvE,OAAO62P,EAAAA,SACL,kBACEr1P,EAAAA,EAAAA,IACEzQ,EACAgD,KAAKC,MAAMknW,GACXv5V,EACa,SAAbu6R,EACD,GACH,CAACnrS,EAAImqW,EAAoBv5V,EAAkBu6R,GAE/C,CAkBO,SAASs/D,EACdt/V,EACAC,EACAs/V,GAGE1B,MADFC,EAAAA,EAAAA,KAAU,GAOV,IA6CIhnW,EA7CE43B,EAAcisO,EAAAA,WAAiB2iG,GAA/B5uU,UACS8wU,EAAkB7kG,EAAAA,WAAiB6iG,GAA5Cx8V,QACFo+V,EAAaI,EAAcA,EAAchsX,OAAS,GAClDisX,EAAeL,EAAaA,EAAWv7V,OAAS,CAAC,EAEjD67V,GADiBN,GAAaA,EAAW9iW,SACpB8iW,EAAaA,EAAWt7V,aAAe,KAsC5D67V,GArCcP,GAAcA,EAAW99V,MAqCjB68V,KAG1B,GAAIl+V,EAAa,KAAA2/V,EACXC,EACqB,kBAAhB5/V,GAA2B9C,EAAAA,EAAAA,IAAU8C,GAAeA,EAGpC,MAAvBy/V,IAC4B,OADFE,EACxBC,EAAkBvjW,eAAQ,EAA1BsjW,EAA4BluW,WAAWguW,MAF3C5B,EAAAA,EAAAA,KAAU,GASVhnW,EAAW+oW,CACb,MACE/oW,EAAW6oW,EAGb,IAAIrjW,EAAWxF,EAASwF,UAAY,IAChCoH,EACqB,MAAvBg8V,EACIpjW,EACAA,EAAS1D,MAAM8mW,EAAmBlsX,SAAW,IAE/CwtB,GAAUjB,EAAAA,EAAAA,IAAYC,EAAQ,CAAE1D,SAAUoH,IAkB9C,IAAIo8V,EAAkBC,EACpB/+V,GACEA,EAAQ3lB,KAAK,SAAAsoB,GAAK,OAChBvpB,OAAOulB,OAAO,CAAC,EAAGgE,EAAO,CACvBE,OAAQzpB,OAAOulB,OAAO,CAAC,EAAG8/V,EAAc97V,EAAME,QAC9CvH,UAAUmF,EAAAA,EAAAA,IAAU,CAClBi+V,EAEAhxU,EAAUpvB,eACNovB,EAAUpvB,eAAeqE,EAAMrH,UAAUA,SACzCqH,EAAMrH,WAEZwH,aACyB,MAAvBH,EAAMG,aACF47V,GACAj+V,EAAAA,EAAAA,IAAU,CACRi+V,EAEAhxU,EAAUpvB,eACNovB,EAAUpvB,eAAeqE,EAAMG,cAAcxH,SAC7CqH,EAAMG,gBAGtB,IACF07V,EACAD,GAMF,OAAIt/V,GAAe6/V,EAEfnlG,EAAAA,cAAC4iG,EAAgBlqW,SAAQ,CACvBva,MAAO,CACLge,SAAQoG,EAAA,CACNZ,SAAU,IACVC,OAAQ,GACRC,KAAM,GACNhb,MAAO,KACPjH,IAAK,WACFuc,GAELkpW,eAAgBnkW,EAAAA,GAAe4C,MAGhCqhW,GAKAA,CACT,CAEA,SAASG,IACP,IAAItjX,EAoYC,WAAkC,IAAAujX,EACnCvjX,EAAQg+Q,EAAAA,WAAiBgjG,GACzBn8W,EAAQ2+W,EAAmBzB,EAAoB0B,eAC/CC,EAAU5B,EAAkBC,EAAoB0B,eAIpD,GAAIzjX,EACF,OAAOA,EAIT,OAAO,OAAPujX,EAAO1+W,EAAMtO,aAAN,EAAAgtX,EAAeG,EACxB,CAjZcC,GACRzxW,GAAUqY,EAAAA,EAAAA,IAAqBvqB,GAC5BA,EAAMia,OAAU,IAAAja,EAAMwqB,WACzBxqB,aAAiBJ,MACjBI,EAAMkS,QACNgJ,KAAKK,UAAUvb,GACfovB,EAAQpvB,aAAiBJ,MAAQI,EAAMovB,MAAQ,KAC/Cw0V,EAAY,yBACZC,EAAY,CAAE12T,QAAS,SAAUqsT,gBAAiBoK,GAsBtD,OACE5lG,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAI,2CACJA,EAAAA,cAAA,MAAI7nO,MAAO,CAAE2tU,UAAW,WAAa5xW,GACpCkd,EAAQ4uP,EAAAA,cAAA,OAAK7nO,MAAO0tU,GAAYz0V,GAAe,KAvBtC,KA2BhB,CAEA,IAAM20V,EAAsB/lG,EAAAA,cAACslG,EAAqB,MAgBrCU,EAAmB,SAAA1vE,IAAAlqR,EAAAA,EAAAA,GAAA45V,EAAA1vE,GAAA,IAAAjqR,GAAAC,EAAAA,EAAAA,GAAA05V,GAI9B,SAAAA,EAAYjjX,GAAiC,IAAA6tB,EAM1C,OAN0CnS,EAAAA,EAAAA,GAAA,KAAAunW,IAC3Cp1V,EAAAvE,EAAA/L,KAAA,KAAMvd,IACD8D,MAAQ,CACXsV,SAAUpZ,EAAMoZ,SAChB8pW,aAAcljX,EAAMkjX,aACpBjkX,MAAOe,EAAMf,OACd4uB,CACH,CAsCA,OAtCAlS,EAAAA,EAAAA,GAAAsnW,EAAA,EAAApmX,IAAA,oBAAAzB,MAwCA,SAAkB6D,EAAYkkX,GAC5B/jW,QAAQngB,MACN,wDACAA,EACAkkX,EAEJ,IAAAtmX,IAAA,SAAAzB,MAEA,WACE,OAAOyiB,KAAK/Z,MAAM7E,MAChBg+Q,EAAAA,cAAC6iG,EAAanqW,SAAQ,CAACva,MAAOyiB,KAAK7d,MAAMojX,cACvCnmG,EAAAA,cAACgjG,EAAkBtqW,SAAQ,CACzBva,MAAOyiB,KAAK/Z,MAAM7E,MAClBxJ,SAAUooB,KAAK7d,MAAM8C,aAIzB+a,KAAK7d,MAAMvK,QAEf,MAAAoH,IAAA,2BAAAzB,MAzDA,SAAgC6D,GAC9B,MAAO,CAAEA,MAAOA,EAClB,IAAApC,IAAA,2BAAAzB,MAEA,SACE4E,EACA8D,GAUA,OACEA,EAAMsV,WAAapZ,EAAMoZ,UACD,SAAvBtV,EAAMo/W,cAAkD,SAAvBljX,EAAMkjX,aAEjC,CACLjkX,MAAOe,EAAMf,MACbma,SAAUpZ,EAAMoZ,SAChB8pW,aAAcljX,EAAMkjX,cAQjB,CACLjkX,MAAOe,EAAMf,OAAS6E,EAAM7E,MAC5Bma,SAAUtV,EAAMsV,SAChB8pW,aAAcljX,EAAMkjX,cAAgBp/W,EAAMo/W,aAE9C,KAAAD,CAAA,CAjD8B,CAAShmG,EAAAA,WA+EzC,SAASomG,EAAahuX,GAAwD,IAArD+tX,EAAmD/tX,EAAnD+tX,aAAcn9V,EAAqC5wB,EAArC4wB,MAAOxwB,EAA8BJ,EAA9BI,SACxC2rX,EAAoBnkG,EAAAA,WAAiBwiG,GAazC,OARE2B,GACAA,EAAkBV,QAClBU,EAAkBkC,gBACjBr9V,EAAMrC,MAAM2/V,cAAgBt9V,EAAMrC,MAAM4/V,iBAEzCpC,EAAkBkC,cAAcG,2BAA6Bx9V,EAAMrC,MAAMnhB,IAIzEw6Q,EAAAA,cAAC6iG,EAAanqW,SAAQ,CAACva,MAAOgoX,GAC3B3tX,EAGP,CAEO,SAAS4sX,EACd/+V,EACAw+V,EACAD,GAC2B,IAAA6B,EAC3B,QAH2B,IAA3B5B,IAAAA,EAA8B,SACc,IAA5CD,IAAAA,EAA+C,MAEhC,MAAXv+V,EAAiB,KAAAqgW,EACnB,GAAmB,OAAnBA,EAAI9B,KAAA8B,EAAiBnuX,OAKnB,OAAO,KAFP8tB,EAAUu+V,EAAgBv+V,OAI9B,CAEA,IAAI8+V,EAAkB9+V,EAGlB9tB,EAAS,OAAHkuX,EAAG7B,QAAA,EAAA6B,EAAiBluX,OAC9B,GAAc,MAAVA,EAAgB,CAClB,IAAIouX,EAAaxB,EAAgByB,WAC9B,SAAAtuV,GAAC,OAAKA,EAAE3R,MAAMnhB,KAAM,MAAAjN,OAAA,EAAAA,EAAS+/B,EAAE3R,MAAMnhB,IACxC,IAEEmhX,GAAc,IADhBxD,EAAAA,EAAAA,KAAU,GAMVgC,EAAkBA,EAAgBlnW,MAChC,EACAwE,KAAK6e,IAAI6jV,EAAgBtsX,OAAQ8tX,EAAa,GAElD,CAEA,OAAOxB,EAAgB0B,aAAY,SAAC/D,EAAQ95V,EAAOthB,GACjD,IAAI1F,EAAQgnB,EAAMrC,MAAMnhB,GAAW,MAANjN,OAAM,EAANA,EAASywB,EAAMrC,MAAMnhB,IAAM,KAEpD8gX,EAAuC,KACvC1B,IACF0B,EAAet9V,EAAMrC,MAAM2/V,cAAgBP,GAE7C,IAAI1/V,EAAUw+V,EAActjX,OAAO4jX,EAAgBlnW,MAAM,EAAGvW,EAAQ,IAChEo/W,EAAc,WAChB,IAAItuX,EAgBJ,OAdEA,EADEwJ,EACSskX,EACFt9V,EAAMrC,MAAMskC,UAOV+0N,EAAAA,cAACh3P,EAAMrC,MAAMskC,UAAS,MACxBjiC,EAAMrC,MAAM/iB,QACVolB,EAAMrC,MAAM/iB,QAEZk/W,EAGX9iG,EAAAA,cAAComG,EAAa,CACZp9V,MAAOA,EACPm9V,aAAc,CACZrD,OAAAA,EACAz8V,QAAAA,EACA08V,YAAgC,MAAnB6B,GAEfpsX,SAAUA,KAOhB,OAAOosX,IACJ57V,EAAMrC,MAAM4/V,eAAiBv9V,EAAMrC,MAAM2/V,cAA0B,IAAV5+W,GAC1Ds4Q,EAAAA,cAACgmG,EAAmB,CAClB7pW,SAAUyoW,EAAgBzoW,SAC1B8pW,aAAcrB,EAAgBqB,aAC9BpgX,UAAWygX,EACXtkX,MAAOA,EACPxJ,SAAUsuX,IACVX,aAAc,CAAErD,OAAQ,KAAMz8V,QAAAA,EAAS08V,aAAa,KAGtD+D,MAED,KACL,CAAC,IAEIlD,EAAc,SAAdA,GAAc,OAAdA,EAAc,wBAAdA,EAAc,gCAAdA,EAAc,gCAAdA,CAAc,EAAdA,GAAc,IAMdG,EAAmB,SAAnBA,GAAmB,OAAnBA,EAAmB,wBAAnBA,EAAmB,8BAAnBA,EAAmB,8BAAnBA,EAAmB,8BAAnBA,EAAmB,8BAAnBA,EAAmB,wCAAnBA,EAAmB,wBAAnBA,EAAmB,gCAAnBA,EAAmB,gCAAnBA,EAAmB,wBAAnBA,CAAmB,EAAnBA,GAAmB,IAmBxB,SAASJ,EAAqBoD,GAC5B,IAAIC,EAAMhnG,EAAAA,WAAiBwiG,GAE3B,OADUwE,IAAV7D,EAAAA,EAAAA,KAAU,GACH6D,CACT,CAEA,SAASxB,EAAmBuB,GAC1B,IAAIlgX,EAAQm5Q,EAAAA,WAAiByiG,GAE7B,OADU57W,IAAVs8W,EAAAA,EAAAA,KAAU,GACHt8W,CACT,CASA,SAASi9W,EAAkBiD,GACzB,IAAIpgW,EARN,SAAyBogW,GACvB,IAAIpgW,EAAQq5P,EAAAA,WAAiB6iG,GAE7B,OADUl8V,IAAVw8V,EAAAA,EAAAA,KAAU,GACHx8V,CACT,CAIcsgW,GACRC,EAAYvgW,EAAMN,QAAQM,EAAMN,QAAQxtB,OAAS,GAKrD,OAHEquX,EAAUvgW,MAAMnhB,KADlB29W,EAAAA,EAAAA,KAAU,GAIH+D,EAAUvgW,MAAMnhB,EACzB,EC7sB4Bw6Q,IAAAA,EAAAA,EAAAA,EAAAA,EAAAA,KAAsB,gBAuK3C,SAAS/lQ,EAAQsR,GAKA,IAJtBrR,EAIcqR,EAJdrR,GACA7C,EAGckU,EAHdlU,QACAxQ,EAEc0kB,EAFd1kB,MACAw+S,EACc95R,EADd85R,SAGE69D,MADFC,EAAAA,EAAAA,KAAU,GAcV,IAAM98V,EAAY25P,EAAAA,WAAiB6iG,GAA7Bx8V,QACUyE,EAAqB04V,IAA/B7hW,SACFvI,EAAWC,IAIX0J,GAAO4H,EAAAA,EAAAA,IACTzQ,GACAoqW,EAAAA,EAAAA,IAA2Bj+V,GAAS3lB,KAAK,SAAAsoB,GAAK,OAAKA,EAAMG,YAAY,IACrE2B,EACa,SAAbu6R,GAEE8hE,EAAWjqW,KAAKK,UAAUwF,GAO9B,OALAi9P,EAAAA,WACE,kBAAM5mQ,EAAS8D,KAAKC,MAAMgqW,GAAW,CAAE9vW,QAAAA,EAASxQ,MAAAA,EAAOw+S,SAAAA,GAAW,GAClE,CAACjsS,EAAU+tW,EAAU9hE,EAAUhuS,EAASxQ,IAGnC,IACT,CA4DO,SAASugX,EAAMjN,IACpBgJ,EAAAA,EAAAA,KAAU,EAKZ,CAoBO,SAASkE,EAAM32E,GAOqB,IAAA42E,EAA7B52E,EANZnrR,SAAUgiW,OAAY,IAAAD,EAAG,IAAGA,EAAAE,EAMhB92E,EALZl4S,SAAAA,OAAQ,IAAAgvX,EAAG,KAAIA,EACLC,EAIE/2E,EAJZv0R,SAAQurW,EAIIh3E,EAHZ20E,eAAAA,OAAc,IAAAqC,EAAGxmW,EAAAA,GAAe4C,IAAG4jW,EACnC3zU,EAEY28P,EAFZ38P,UAAS4zU,EAEGj3E,EADZ+yE,OAAQmE,OAAU,IAAAD,GAAGA,EAGlBzE,MADHC,EAAAA,EAAAA,KAAU,GAQV,IAAI59V,EAAWgiW,EAAalwW,QAAQ,OAAQ,KACxCwwW,EAAoB7nG,EAAAA,SACtB,iBAAO,CAAEz6P,SAAAA,EAAUwuB,UAAAA,EAAW0vU,OAAQmE,EAAY,GAClD,CAACriW,EAAUwuB,EAAW6zU,IAGI,kBAAjBH,IACTA,GAAejlW,EAAAA,EAAAA,IAAUilW,IAG3B,IAAAK,EAMIL,EAAYM,EAAAD,EALdnmW,SAAAA,OAAQ,IAAAomW,EAAG,IAAGA,EAAAC,EAAAF,EACdlmW,OAAAA,OAAM,IAAAomW,EAAG,GAAEA,EAAAC,EAAAH,EACXjmW,KAAAA,OAAI,IAAAomW,EAAG,GAAEA,EAAAC,EAAAJ,EACTjhX,MAAAA,OAAK,IAAAqhX,EAAG,KAAIA,EAAAC,EAAAL,EACZloX,IAAAA,OAAG,IAAAuoX,EAAG,UAAAA,EAGJC,EAAkBpoG,EAAAA,SAAc,WAClC,IAAIqoG,GAAmB7iW,EAAAA,EAAAA,IAAc7D,EAAU4D,GAE/C,OAAwB,MAApB8iW,EACK,KAGF,CACLlsW,SAAU,CACRwF,SAAU0mW,EACVzmW,OAAAA,EACAC,KAAAA,EACAhb,MAAAA,EACAjH,IAAAA,GAEFylX,eAAAA,EAEJ,GAAG,CAAC9/V,EAAU5D,EAAUC,EAAQC,EAAMhb,EAAOjH,EAAKylX,IASlD,OAAuB,MAAnB+C,EACK,KAIPpoG,EAAAA,cAAC2iG,EAAkBjqW,SAAQ,CAACva,MAAO0pX,GACjC7nG,EAAAA,cAAC4iG,EAAgBlqW,SAAQ,CAAClgB,SAAUA,EAAU2F,MAAOiqX,IAG3D,CAaO,SAASE,EAAMC,GAGqB,IAFzC/vX,EAEY+vX,EAFZ/vX,SACA2jB,EACYosW,EADZpsW,SAEA,ODxHOwoW,ECwHU6D,EAAyBhwX,GAAW2jB,EACvD,CAsBC,IAWIssW,EAAiB,SAAjBA,GAAiB,OAAjBA,EAAAA,EAAiB,qBAAjBA,EAAAA,EAAiB,qBAAjBA,EAAAA,EAAiB,iBAAjBA,CAAiB,EAAjBA,GAAiB,IAMhBC,EAAsB,IAAI3sW,SAAQ,WAAO,IAEdikQ,EAAAA,UAkH1B,SAASwoG,EACdhwX,EACAiuB,QAAoB,IAApBA,IAAAA,EAAuB,IAEvB,IAAIpB,EAAwB,GA6D5B,OA3DA26P,EAAAA,SAAergR,QAAQnH,GAAU,SAACoL,EAAS8D,GACzC,GAAKs4Q,EAAAA,eAAqBp8Q,GAA1B,CAMA,IAAI+kX,EAAW,GAAHpnX,QAAAgb,EAAAA,EAAAA,GAAOkK,GAAU,CAAE/e,IAE/B,GAAI9D,EAAQ1I,OAAS8kR,EAAAA,SAArB,CAUEp8Q,EAAQ1I,OAASksX,IADnBjE,EAAAA,EAAAA,KAAU,GAQPv/W,EAAQb,MAAM2E,OAAU9D,EAAQb,MAAMvK,WADzC2qX,EAAAA,EAAAA,KAAU,GAKV,IAAIx8V,EAAqB,CACvBnhB,GAAI5B,EAAQb,MAAMyC,IAAMmjX,EAAS9gW,KAAK,KACtChB,cAAejjB,EAAQb,MAAM8jB,cAC7BjjB,QAASA,EAAQb,MAAMa,QACvBqnD,UAAWrnD,EAAQb,MAAMkoD,UACzBvjD,MAAO9D,EAAQb,MAAM2E,MACrBqb,KAAMnf,EAAQb,MAAMggB,KACpB6lW,OAAQhlX,EAAQb,MAAM6lX,OACtB/kW,OAAQjgB,EAAQb,MAAM8gB,OACtByiW,aAAc1iX,EAAQb,MAAMujX,aAC5BC,cAAe3iX,EAAQb,MAAMwjX,cAC7BsC,iBACiC,MAA/BjlX,EAAQb,MAAMwjX,eACgB,MAA9B3iX,EAAQb,MAAMujX,aAChBwC,iBAAkBllX,EAAQb,MAAM+lX,iBAChC54T,OAAQtsD,EAAQb,MAAMmtD,OACtB64T,KAAMnlX,EAAQb,MAAMgmX,MAGlBnlX,EAAQb,MAAMvK,WAChBmuB,EAAMnuB,SAAWgwX,EACf5kX,EAAQb,MAAMvK,SACdmwX,IAIJtjW,EAAOhlB,KAAKsmB,EAxCZ,MALEtB,EAAOhlB,KAAKyf,MACVuF,EACAmjW,EAAyB5kX,EAAQb,MAAMvK,SAAUmwX,GARrD,CAoDF,IAEOtjW,CACT,qCCnqBa,IAAI1mB,EAAEwG,EAAQ,MAAS6kD,EAAEp9B,OAAOs9C,IAAI,iBAAiBt4C,EAAEhF,OAAOs9C,IAAI,kBAAkB5xC,EAAE74B,OAAOwgB,UAAUoQ,eAAetyB,EAAEY,EAAE+hV,mDAAmD4nB,kBAAkB7oU,EAAE,CAAC7/B,KAAI,EAAGqE,KAAI,EAAG+kX,QAAO,EAAGC,UAAS,GAChP,SAASp3Q,EAAEh7E,EAAEhX,EAAE8/T,GAAG,IAAI/5T,EAAEkR,EAAE,CAAC,EAAEz6B,EAAE,KAAKk8B,EAAE,KAAiF,IAAI3S,UAAhF,IAAS+5T,IAAItjV,EAAE,GAAGsjV,QAAG,IAAS9/T,EAAEjgB,MAAMvD,EAAE,GAAGwjB,EAAEjgB,UAAK,IAASigB,EAAE5b,MAAMs0B,EAAE1Y,EAAE5b,KAAc4b,EAAEyY,EAAEhY,KAAKT,EAAE+F,KAAK6Z,EAAEpP,eAAezK,KAAKkR,EAAElR,GAAG/F,EAAE+F,IAAI,GAAGiR,GAAGA,EAAE90B,aAAa,IAAI6jB,KAAK/F,EAAEgX,EAAE90B,kBAAe,IAAS+0B,EAAElR,KAAKkR,EAAElR,GAAG/F,EAAE+F,IAAI,MAAM,CAACi7Q,SAAS72O,EAAE9uD,KAAK27B,EAAEj3B,IAAIvD,EAAE4H,IAAIs0B,EAAEx1B,MAAM+zB,EAAEwqU,OAAOvjW,EAAEgG,QAAQ,CAACqB,EAAQsxW,SAAS9kV,EAAExsB,EAAQ8jX,IAAIr3Q,EAAEzsG,EAAQ+jX,KAAKt3Q,mCCD7V,IAAIjgF,EAAEhF,OAAOs9C,IAAI,iBAAiBnsE,EAAE6uB,OAAOs9C,IAAI,gBAAgBzqC,EAAE7S,OAAOs9C,IAAI,kBAAkB2nC,EAAEjlF,OAAOs9C,IAAI,qBAAqBziE,EAAEmlB,OAAOs9C,IAAI,kBAAkB87G,EAAEp5J,OAAOs9C,IAAI,kBAAkB67L,EAAEn5O,OAAOs9C,IAAI,iBAAiB80I,EAAEpyL,OAAOs9C,IAAI,qBAAqBwzO,EAAE9wR,OAAOs9C,IAAI,kBAAkB18B,EAAE5gB,OAAOs9C,IAAI,cAAcp1D,EAAE8X,OAAOs9C,IAAI,cAAchzC,EAAEtK,OAAO6jR,SACzW,IAAIs4C,EAAE,CAACnpD,UAAU,WAAW,OAAM,CAAE,EAAEkhE,mBAAmB,WAAW,EAAEnhE,oBAAoB,WAAW,EAAE+gE,gBAAgB,WAAW,GAAGhzT,EAAEjuC,OAAOulB,OAAO4yU,EAAE,CAAC,EAAE,SAAS9pT,EAAEjuB,EAAE+F,EAAEvpB,GAAGukB,KAAK7d,MAAM8c,EAAEe,KAAKlf,QAAQkkB,EAAEhF,KAAKo/Q,KAAK43D,EAAEh3U,KAAK8+Q,QAAQrjS,GAAG0sV,CAAC,CACwI,SAASqP,IAAI,CAAyB,SAASqC,EAAE56U,EAAE+F,EAAEvpB,GAAGukB,KAAK7d,MAAM8c,EAAEe,KAAKlf,QAAQkkB,EAAEhF,KAAKo/Q,KAAK43D,EAAEh3U,KAAK8+Q,QAAQrjS,GAAG0sV,CAAC,CADxPj7S,EAAE7tB,UAAUwxV,iBAAiB,CAAC,EACpQ3jU,EAAE7tB,UAAUnZ,SAAS,SAAS+Y,EAAE+F,GAAG,GAAG,kBAAkB/F,GAAG,oBAAoBA,GAAG,MAAMA,EAAE,MAAMje,MAAM,yHAAyHgf,KAAK8+Q,QAAQghE,gBAAgB9/U,KAAKf,EAAE+F,EAAE,WAAW,EAAEkoB,EAAE7tB,UAAUy/P,YAAY,SAAS7/P,GAAGe,KAAK8+Q,QAAQohE,mBAAmBlgV,KAAKf,EAAE,cAAc,EAAgBu4U,EAAEn4U,UAAU6tB,EAAE7tB,UAAsF,IAAIuY,EAAEiiU,EAAEx6U,UAAU,IAAIm4U,EACrf5/T,EAAE3X,YAAY45U,EAAE/sT,EAAElV,EAAEsV,EAAE7tB,WAAWuY,EAAEwoU,sBAAqB,EAAG,IAAIrE,EAAEttU,MAAMC,QAAQ6oU,EAAE14V,OAAOwgB,UAAUoQ,eAAe2vU,EAAE,CAACj8V,QAAQ,MAAM48V,EAAE,CAAC/gW,KAAI,EAAGqE,KAAI,EAAG+kX,QAAO,EAAGC,UAAS,GACtK,SAASvmB,EAAE7iV,EAAE+F,EAAEvpB,GAAG,IAAIy6B,EAAED,EAAE,CAAC,EAAEmzB,EAAE,KAAKzxB,EAAE,KAAK,GAAG,MAAM3S,EAAE,IAAIkR,UAAK,IAASlR,EAAE3hB,MAAMs0B,EAAE3S,EAAE3hB,UAAK,IAAS2hB,EAAEhmB,MAAMoqD,EAAE,GAAGpkC,EAAEhmB,KAAKgmB,EAAEuyU,EAAE73U,KAAKsF,EAAEkR,KAAK6pU,EAAEtwU,eAAeyG,KAAKD,EAAEC,GAAGlR,EAAEkR,IAAI,IAAI6oT,EAAE1gU,UAAUpmB,OAAO,EAAE,GAAG,IAAI8mV,EAAE9oT,EAAEr+B,SAAS6D,OAAO,GAAG,EAAEsjV,EAAE,CAAC,IAAI,IAAIhhV,EAAE0wB,MAAMswT,GAAGrnT,EAAE,EAAEA,EAAEqnT,EAAErnT,IAAI35B,EAAE25B,GAAGrZ,UAAUqZ,EAAE,GAAGzB,EAAEr+B,SAASmG,CAAC,CAAC,GAAGkhB,GAAGA,EAAE9d,aAAa,IAAI+0B,KAAK6oT,EAAE9/T,EAAE9d,kBAAe,IAAS80B,EAAEC,KAAKD,EAAEC,GAAG6oT,EAAE7oT,IAAI,MAAM,CAAC+pQ,SAASjvQ,EAAE12B,KAAK2kB,EAAEjgB,IAAIoqD,EAAE/lD,IAAIs0B,EAAEx1B,MAAM8zB,EAAEyqU,OAAOtB,EAAEj8V,QAAQ,CAChV,SAASq4S,EAAEv8R,GAAG,MAAM,kBAAkBA,GAAG,OAAOA,GAAGA,EAAEghR,WAAWjvQ,CAAC,CAAoG,IAAI+b,EAAE,OAAO,SAAS61T,EAAE3jV,EAAE+F,GAAG,MAAM,kBAAkB/F,GAAG,OAAOA,GAAG,MAAMA,EAAEjgB,IAA7K,SAAgBigB,GAAG,IAAI+F,EAAE,CAAC,IAAI,KAAK,IAAI,MAAM,MAAM,IAAI/F,EAAExI,QAAQ,SAAQ,SAASwI,GAAG,OAAO+F,EAAE/F,EAAE,GAAE,CAA+EoqE,CAAO,GAAGpqE,EAAEjgB,KAAKgmB,EAAE5pB,SAAS,GAAG,CAC/W,SAAS+oW,EAAEllV,EAAE+F,EAAEvpB,EAAEy6B,EAAED,GAAG,IAAImzB,SAASnqC,EAAK,cAAcmqC,GAAG,YAAYA,IAAEnqC,EAAE,MAAK,IAAI0Y,GAAE,EAAG,GAAG,OAAO1Y,EAAE0Y,GAAE,OAAQ,OAAOyxB,GAAG,IAAK,SAAS,IAAK,SAASzxB,GAAE,EAAG,MAAM,IAAK,SAAS,OAAO1Y,EAAEghR,UAAU,KAAKjvQ,EAAE,KAAK7zB,EAAEw6B,GAAE,GAAI,GAAGA,EAAE,OAAW1B,EAAEA,EAAN0B,EAAE1Y,GAASA,EAAE,KAAKiX,EAAE,IAAI0sU,EAAEjrU,EAAE,GAAGzB,EAAE6lU,EAAE9lU,IAAIx6B,EAAE,GAAG,MAAMwjB,IAAIxjB,EAAEwjB,EAAExI,QAAQs2B,EAAE,OAAO,KAAKo3T,EAAEluU,EAAEjR,EAAEvpB,EAAE,IAAG,SAASwjB,GAAG,OAAOA,CAAC,KAAI,MAAMgX,IAAIulR,EAAEvlR,KAAKA,EADnW,SAAWhX,EAAE+F,GAAG,MAAM,CAACi7Q,SAASjvQ,EAAE12B,KAAK2kB,EAAE3kB,KAAK0E,IAAIgmB,EAAE3hB,IAAI4b,EAAE5b,IAAIlB,MAAM8c,EAAE9c,MAAMu+V,OAAOzhV,EAAEyhV,OAAO,CACyQ1zT,CAAE/W,EAAEx6B,IAAIw6B,EAAEj3B,KAAK24B,GAAGA,EAAE34B,MAAMi3B,EAAEj3B,IAAI,IAAI,GAAGi3B,EAAEj3B,KAAKyX,QAAQs2B,EAAE,OAAO,KAAK9tB,IAAI+F,EAAEvlB,KAAKw2B,IAAI,EAAyB,GAAvB0B,EAAE,EAAEzB,EAAE,KAAKA,EAAE,IAAIA,EAAE,IAAO6lU,EAAE98U,GAAG,IAAI,IAAI8/T,EAAE,EAAEA,EAAE9/T,EAAEhnB,OAAO8mV,IAAI,CAC/e,IAAIhhV,EAAEm4B,EAAE0sU,EADwex5S,EACrfnqC,EAAE8/T,GAAeA,GAAGpnT,GAAGwsU,EAAE/6S,EAAEpkC,EAAEvpB,EAAEsC,EAAEk4B,EAAE,MAAM,GAAGl4B,EAPsU,SAAWkhB,GAAG,OAAG,OAAOA,GAAG,kBAAkBA,EAAS,KAAsC,oBAAjCA,EAAEqX,GAAGrX,EAAEqX,IAAIrX,EAAE,eAA0CA,EAAE,IAAI,CAO5bguB,CAAEhuB,GAAG,oBAAoBlhB,EAAE,IAAIkhB,EAAElhB,EAAE2hB,KAAKT,GAAG8/T,EAAE,IAAI31R,EAAEnqC,EAAE6+D,QAAQ1gF,MAA6Bu6B,GAAGwsU,EAA1B/6S,EAAEA,EAAE7rD,MAA0BynB,EAAEvpB,EAAtBsC,EAAEm4B,EAAE0sU,EAAEx5S,EAAE21R,KAAkB9oT,QAAQ,GAAG,WAAWmzB,EAAE,MAAMpkC,EAAEwkC,OAAOvqC,GAAGje,MAAM,mDAAmD,oBAAoBgkB,EAAE,qBAAqBnmB,OAAOC,KAAKmgB,GAAGgI,KAAK,MAAM,IAAIjC,GAAG,6EAA6E,OAAO2S,CAAC,CACzZ,SAAS+yU,EAAEzrV,EAAE+F,EAAEvpB,GAAG,GAAG,MAAMwjB,EAAE,OAAOA,EAAE,IAAIiX,EAAE,GAAGD,EAAE,EAAmD,OAAjDkuU,EAAEllV,EAAEiX,EAAE,GAAG,IAAG,SAASjX,GAAG,OAAO+F,EAAEtF,KAAKjkB,EAAEwjB,EAAEgX,IAAI,IAAUC,CAAC,CAAC,SAAS80U,EAAE/rV,GAAG,IAAI,IAAIA,EAAEupW,QAAQ,CAAC,IAAIxjW,EAAE/F,EAAEwpW,SAAQzjW,EAAEA,KAAM7d,MAAK,SAAS6d,GAAM,IAAI/F,EAAEupW,UAAU,IAAIvpW,EAAEupW,UAAQvpW,EAAEupW,QAAQ,EAAEvpW,EAAEwpW,QAAQzjW,EAAC,IAAE,SAASA,GAAM,IAAI/F,EAAEupW,UAAU,IAAIvpW,EAAEupW,UAAQvpW,EAAEupW,QAAQ,EAAEvpW,EAAEwpW,QAAQzjW,EAAC,KAAI,IAAI/F,EAAEupW,UAAUvpW,EAAEupW,QAAQ,EAAEvpW,EAAEwpW,QAAQzjW,EAAE,CAAC,GAAG,IAAI/F,EAAEupW,QAAQ,OAAOvpW,EAAEwpW,QAAQriX,QAAQ,MAAM6Y,EAAEwpW,OAAQ,CAC5Z,IAAIpd,EAAE,CAACloW,QAAQ,MAAMooW,EAAE,CAAC5e,WAAW,MAAM8e,EAAE,CAACpJ,uBAAuBgJ,EAAE7e,wBAAwB+e,EAAE7D,kBAAkBtI,GAAG56V,EAAQmoS,SAAS,CAAC7sS,IAAI4qW,EAAE3rW,QAAQ,SAASkgB,EAAE+F,EAAEvpB,GAAGivW,EAAEzrV,GAAE,WAAW+F,EAAE9F,MAAMc,KAAK3B,UAAU,GAAE5iB,EAAE,EAAEy1E,MAAM,SAASjyD,GAAG,IAAI+F,EAAE,EAAuB,OAArB0lV,EAAEzrV,GAAE,WAAW+F,GAAG,IAAUA,CAAC,EAAEq6P,QAAQ,SAASpgQ,GAAG,OAAOyrV,EAAEzrV,GAAE,SAASA,GAAG,OAAOA,CAAC,KAAI,EAAE,EAAEm1R,KAAK,SAASn1R,GAAG,IAAIu8R,EAAEv8R,GAAG,MAAMje,MAAM,yEAAyE,OAAOie,CAAC,GAAGza,EAAQ6lD,UAAUnd,EAAE1oC,EAAQsxW,SAASj3U,EACner6B,EAAQyxW,SAASpvW,EAAErC,EAAQkkX,cAAc7uB,EAAEr1V,EAAQ0xW,WAAWjlQ,EAAEzsG,EAAQ2xW,SAASr5D,EAAEt4S,EAAQs7U,mDAAmD2rB,EAC9IjnW,EAAQ0nF,aAAa,SAASjtE,EAAE+F,EAAEvpB,GAAG,GAAG,OAAOwjB,QAAG,IAASA,EAAE,MAAMje,MAAM,iFAAiFie,EAAE,KAAK,IAAIiX,EAAE4W,EAAE,CAAC,EAAE7tB,EAAE9c,OAAO8zB,EAAEhX,EAAEjgB,IAAIoqD,EAAEnqC,EAAE5b,IAAIs0B,EAAE1Y,EAAEyhV,OAAO,GAAG,MAAM17U,EAAE,CAAoE,QAAnE,IAASA,EAAE3hB,MAAM+lD,EAAEpkC,EAAE3hB,IAAIs0B,EAAEynU,EAAEj8V,cAAS,IAAS6hB,EAAEhmB,MAAMi3B,EAAE,GAAGjR,EAAEhmB,KAAQigB,EAAE3kB,MAAM2kB,EAAE3kB,KAAK6G,aAAa,IAAI49U,EAAE9/T,EAAE3kB,KAAK6G,aAAa,IAAIpD,KAAKinB,EAAEuyU,EAAE73U,KAAKsF,EAAEjnB,KAAKgiW,EAAEtwU,eAAe1xB,KAAKm4B,EAAEn4B,QAAG,IAASinB,EAAEjnB,SAAI,IAASghV,EAAEA,EAAEhhV,GAAGinB,EAAEjnB,GAAG,CAAC,IAAIA,EAAEsgB,UAAUpmB,OAAO,EAAE,GAAG,IAAI8F,EAAEm4B,EAAEt+B,SAAS6D,OAAO,GAAG,EAAEsC,EAAE,CAACghV,EAAEtwT,MAAM1wB,GACrf,IAAI,IAAI25B,EAAE,EAAEA,EAAE35B,EAAE25B,IAAIqnT,EAAErnT,GAAGrZ,UAAUqZ,EAAE,GAAGxB,EAAEt+B,SAASmnV,CAAC,CAAC,MAAM,CAAC9+C,SAASjvQ,EAAE12B,KAAK2kB,EAAE3kB,KAAK0E,IAAIi3B,EAAE5yB,IAAI+lD,EAAEjnD,MAAM+zB,EAAEwqU,OAAO/oU,EAAE,EAAEnzB,EAAQ3D,cAAc,SAASoe,GAAqK,OAAlKA,EAAE,CAACghR,SAAS96B,EAAEq4F,cAAcv+U,EAAE0pW,eAAe1pW,EAAE2pW,aAAa,EAAE9wW,SAAS,KAAKy0R,SAAS,KAAKs8E,cAAc,KAAKC,YAAY,OAAQhxW,SAAS,CAACmoR,SAAS76G,EAAEggI,SAASnmS,GAAUA,EAAEstR,SAASttR,CAAC,EAAEza,EAAQosB,cAAckxU,EAAEt9V,EAAQukX,cAAc,SAAS9pW,GAAG,IAAI+F,EAAE88U,EAAE9iV,KAAK,KAAKC,GAAY,OAAT+F,EAAE1qB,KAAK2kB,EAAS+F,CAAC,EAAExgB,EAAQwkX,UAAU,WAAW,MAAM,CAAC7lX,QAAQ,KAAK,EAC9dqB,EAAQowS,WAAW,SAAS31R,GAAG,MAAM,CAACghR,SAAS7hF,EAAE9yJ,OAAOrsC,EAAE,EAAEza,EAAQy3R,eAAeuf,EAAEh3S,EAAQ2jX,KAAK,SAASlpW,GAAG,MAAM,CAACghR,SAAS/rR,EAAEmtU,SAAS,CAACmnC,SAAS,EAAEC,QAAQxpW,GAAGqiU,MAAM0pB,EAAE,EAAExmW,EAAQ4kB,KAAK,SAASnK,EAAE+F,GAAG,MAAM,CAACi7Q,SAASrzP,EAAEtyC,KAAK2kB,EAAE8/D,aAAQ,IAAS/5D,EAAE,KAAKA,EAAE,EAAExgB,EAAQykX,gBAAgB,SAAShqW,GAAG,IAAI+F,EAAEumV,EAAE5e,WAAW4e,EAAE5e,WAAW,CAAC,EAAE,IAAI1tU,GAAG,CAAC,QAAQssV,EAAE5e,WAAW3nU,CAAC,CAAC,EAAExgB,EAAQ0kX,aAAa,WAAW,MAAMloX,MAAM,2DAA4D,EAC1cwD,EAAQsqS,YAAY,SAAS7vR,EAAE+F,GAAG,OAAOqmV,EAAEloW,QAAQ2rS,YAAY7vR,EAAE+F,EAAE,EAAExgB,EAAQzD,WAAW,SAASke,GAAG,OAAOosV,EAAEloW,QAAQpC,WAAWke,EAAE,EAAEza,EAAQwhW,cAAc,WAAW,EAAExhW,EAAQyhW,iBAAiB,SAAShnV,GAAG,OAAOosV,EAAEloW,QAAQ8iW,iBAAiBhnV,EAAE,EAAEza,EAAQ7H,UAAU,SAASsiB,EAAE+F,GAAG,OAAOqmV,EAAEloW,QAAQxG,UAAUsiB,EAAE+F,EAAE,EAAExgB,EAAQ6hW,MAAM,WAAW,OAAOgF,EAAEloW,QAAQkjW,OAAO,EAAE7hW,EAAQ2vS,oBAAoB,SAASl1R,EAAE+F,EAAEvpB,GAAG,OAAO4vW,EAAEloW,QAAQgxS,oBAAoBl1R,EAAE+F,EAAEvpB,EAAE,EAC7b+I,EAAQshW,mBAAmB,SAAS7mV,EAAE+F,GAAG,OAAOqmV,EAAEloW,QAAQ2iW,mBAAmB7mV,EAAE+F,EAAE,EAAExgB,EAAQtB,gBAAgB,SAAS+b,EAAE+F,GAAG,OAAOqmV,EAAEloW,QAAQD,gBAAgB+b,EAAE+F,EAAE,EAAExgB,EAAQ3K,QAAQ,SAASolB,EAAE+F,GAAG,OAAOqmV,EAAEloW,QAAQtJ,QAAQolB,EAAE+F,EAAE,EAAExgB,EAAQuhW,WAAW,SAAS9mV,EAAE+F,EAAEvpB,GAAG,OAAO4vW,EAAEloW,QAAQ4iW,WAAW9mV,EAAE+F,EAAEvpB,EAAE,EAAE+I,EAAQvB,OAAO,SAASgc,GAAG,OAAOosV,EAAEloW,QAAQF,OAAOgc,EAAE,EAAEza,EAAQ5J,SAAS,SAASqkB,GAAG,OAAOosV,EAAEloW,QAAQvI,SAASqkB,EAAE,EAAEza,EAAQ4hW,qBAAqB,SAASnnV,EAAE+F,EAAEvpB,GAAG,OAAO4vW,EAAEloW,QAAQijW,qBAAqBnnV,EAAE+F,EAAEvpB,EAAE,EAC/e+I,EAAQ0hW,cAAc,WAAW,OAAOmF,EAAEloW,QAAQ+iW,eAAe,EAAE1hW,EAAQyuC,QAAQ,4CCtBjFkS,EAAO3gD,QAAU,EAAjB2gD,wCCAAA,EAAO3gD,QAAU,EAAjB2gD,uCCMW,SAASpnD,EAAEkhB,EAAE+F,GAAG,IAAIiR,EAAEhX,EAAEhnB,OAAOgnB,EAAExf,KAAKulB,GAAG/F,EAAE,KAAK,EAAEgX,GAAG,CAAC,IAAIC,EAAED,EAAE,IAAI,EAAEx6B,EAAEwjB,EAAEiX,GAAG,KAAG,EAAE6oT,EAAEtjV,EAAEupB,IAA0B,MAAM/F,EAA7BA,EAAEiX,GAAGlR,EAAE/F,EAAEgX,GAAGx6B,EAAEw6B,EAAEC,CAAc,CAAC,CAAC,SAASyB,EAAE1Y,GAAG,OAAO,IAAIA,EAAEhnB,OAAO,KAAKgnB,EAAE,EAAE,CAAC,SAASmqC,EAAEnqC,GAAG,GAAG,IAAIA,EAAEhnB,OAAO,OAAO,KAAK,IAAI+sB,EAAE/F,EAAE,GAAGgX,EAAEhX,EAAE6L,MAAM,GAAGmL,IAAIjR,EAAE,CAAC/F,EAAE,GAAGgX,EAAEhX,EAAE,IAAI,IAAIiX,EAAE,EAAEz6B,EAAEwjB,EAAEhnB,OAAO6kT,EAAErhT,IAAI,EAAEy6B,EAAE4mR,GAAG,CAAC,IAAIplR,EAAE,GAAGxB,EAAE,GAAG,EAAE4W,EAAE7tB,EAAEyY,GAAGv6B,EAAEu6B,EAAE,EAAEkV,EAAE3tB,EAAE9hB,GAAG,GAAG,EAAE4hV,EAAEjyS,EAAE7W,GAAG94B,EAAE1B,GAAG,EAAEsjV,EAAEnyS,EAAEE,IAAI7tB,EAAEiX,GAAG0W,EAAE3tB,EAAE9hB,GAAG84B,EAAEC,EAAE/4B,IAAI8hB,EAAEiX,GAAG4W,EAAE7tB,EAAEyY,GAAGzB,EAAEC,EAAEwB,OAAQ,MAAGv6B,EAAE1B,GAAG,EAAEsjV,EAAEnyS,EAAE3W,IAA0B,MAAMhX,EAA7BA,EAAEiX,GAAG0W,EAAE3tB,EAAE9hB,GAAG84B,EAAEC,EAAE/4B,CAAc,EAAC,CAAC,OAAO6nB,CAAC,CAC3c,SAAS+5T,EAAE9/T,EAAE+F,GAAG,IAAIiR,EAAEhX,EAAEkqW,UAAUnkW,EAAEmkW,UAAU,OAAO,IAAIlzV,EAAEA,EAAEhX,EAAEra,GAAGogB,EAAEpgB,EAAE,CAAC,GAAG,kBAAkBwkX,aAAa,oBAAoBA,YAAYlsT,IAAI,CAAC,IAAIlsC,EAAEo4V,YAAY5kX,EAAQ4jV,aAAa,WAAW,OAAOp3T,EAAEksC,KAAK,CAAC,KAAK,CAAC,IAAIr+B,EAAEv/B,KAAK2xG,EAAEpyE,EAAEq+B,MAAM14D,EAAQ4jV,aAAa,WAAW,OAAOvpT,EAAEq+B,MAAM+zC,CAAC,CAAC,CAAC,IAAIpqG,EAAE,GAAGu+K,EAAE,GAAG+/E,EAAE,EAAE/mD,EAAE,KAAKlqM,EAAE,EAAEoiB,GAAE,EAAG2W,GAAE,EAAGk7S,GAAE,EAAG6O,EAAE,oBAAoB9mU,WAAWA,WAAW,KAAKgd,EAAE,oBAAoBjd,aAAaA,aAAa,KAAKunU,EAAE,qBAAqBjrU,aAAaA,aAAa,KACnT,SAASstU,EAAE56U,GAAG,IAAI,IAAI+F,EAAE2S,EAAEytJ,GAAG,OAAOpgK,GAAG,CAAC,GAAG,OAAOA,EAAE0sB,SAAS0X,EAAEg8H,OAAQ,MAAGpgK,EAAEwzE,WAAWv5E,GAAgD,MAA9CmqC,EAAEg8H,GAAGpgK,EAAEmkW,UAAUnkW,EAAEqkW,eAAetrX,EAAE8I,EAAEme,EAAa,CAACA,EAAE2S,EAAEytJ,EAAE,CAAC,CAAC,SAASxtJ,EAAE3Y,GAAa,GAAVkpU,GAAE,EAAG0R,EAAE56U,IAAOguB,EAAE,GAAG,OAAOtV,EAAE9wB,GAAGomC,GAAE,EAAG8uT,EAAExE,OAAO,CAAC,IAAIvyU,EAAE2S,EAAEytJ,GAAG,OAAOpgK,GAAGo6U,EAAExnU,EAAE5S,EAAEwzE,UAAUv5E,EAAE,CAAC,CACra,SAASs4U,EAAEt4U,EAAE+F,GAAGioB,GAAE,EAAGk7S,IAAIA,GAAE,EAAGj7S,EAAE6yT,GAAGA,GAAG,GAAGzpU,GAAE,EAAG,IAAIL,EAAE/hB,EAAE,IAAS,IAAL2lV,EAAE70U,GAAOo5L,EAAEzmL,EAAE9wB,GAAG,OAAOu3M,MAAMA,EAAEirK,eAAerkW,IAAI/F,IAAI6iV,MAAM,CAAC,IAAI5rU,EAAEkoL,EAAE1sK,SAAS,GAAG,oBAAoBxb,EAAE,CAACkoL,EAAE1sK,SAAS,KAAKx9B,EAAEkqM,EAAEkrK,cAAc,IAAI7tX,EAAEy6B,EAAEkoL,EAAEirK,gBAAgBrkW,GAAGA,EAAExgB,EAAQ4jV,eAAe,oBAAoB3sV,EAAE2iN,EAAE1sK,SAASj2C,EAAE2iN,IAAIzmL,EAAE9wB,IAAIuiD,EAAEviD,GAAGgzV,EAAE70U,EAAE,MAAMokC,EAAEviD,GAAGu3M,EAAEzmL,EAAE9wB,EAAE,CAAC,GAAG,OAAOu3M,EAAE,IAAI0+F,GAAE,MAAO,CAAC,IAAIplR,EAAEC,EAAEytJ,GAAG,OAAO1tJ,GAAG0nU,EAAExnU,EAAEF,EAAE8gE,UAAUxzE,GAAG83R,GAAE,CAAE,CAAC,OAAOA,CAAC,CAAC,QAAQ1+F,EAAE,KAAKlqM,EAAE+hB,EAAEK,GAAE,CAAE,CAAC,CAD1a,qBAAqB6c,gBAAW,IAASA,UAAUo2U,iBAAY,IAASp2U,UAAUo2U,WAAWC,gBAAgBr2U,UAAUo2U,WAAWC,eAAexqW,KAAKm0B,UAAUo2U,YAC2Q,IACzP7e,EAD6P19T,GAAE,EAAGwuQ,EAAE,KAAKukD,GAAG,EAAEhzT,EAAE,EAAE61T,GAAG,EACvc,SAASd,IAAI,QAAOt9V,EAAQ4jV,eAAewa,EAAE71T,EAAO,CAAC,SAASo3T,IAAI,GAAG,OAAO3oD,EAAE,CAAC,IAAIv8R,EAAEza,EAAQ4jV,eAAewa,EAAE3jV,EAAE,IAAI+F,GAAE,EAAG,IAAIA,EAAEw2R,GAAE,EAAGv8R,EAAE,CAAC,QAAQ+F,EAAE0lV,KAAK19T,GAAE,EAAGwuQ,EAAE,KAAK,CAAC,MAAMxuQ,GAAE,CAAE,CAAO,GAAG,oBAAoBwqT,EAAEkT,EAAE,WAAWlT,EAAE2M,EAAE,OAAO,GAAG,qBAAqBslB,eAAe,CAAC,IAAIze,EAAE,IAAIye,eAAepe,EAAEL,EAAE0e,MAAM1e,EAAE2e,MAAMC,UAAUzlB,EAAEuG,EAAE,WAAWW,EAAEl+U,YAAY,KAAK,CAAC,MAAMu9U,EAAE,WAAW1T,EAAEmN,EAAE,EAAE,EAAE,SAASpI,EAAE98U,GAAGu8R,EAAEv8R,EAAE+tB,IAAIA,GAAE,EAAG09T,IAAI,CAAC,SAAStL,EAAEngV,EAAE+F,GAAG+6U,EAAE/I,GAAE,WAAW/3U,EAAEza,EAAQ4jV,eAAe,GAAEpjU,EAAE,CAC5dxgB,EAAQwkV,sBAAsB,EAAExkV,EAAQgkV,2BAA2B,EAAEhkV,EAAQskV,qBAAqB,EAAEtkV,EAAQokV,wBAAwB,EAAEpkV,EAAQqlX,mBAAmB,KAAKrlX,EAAQkkV,8BAA8B,EAAElkV,EAAQsjV,wBAAwB,SAAS7oU,GAAGA,EAAEyyB,SAAS,IAAI,EAAEltC,EAAQslX,2BAA2B,WAAW78U,GAAG3W,IAAI2W,GAAE,EAAG8uT,EAAExE,GAAG,EAC1U/yV,EAAQulX,wBAAwB,SAAS9qW,GAAG,EAAEA,GAAG,IAAIA,EAAEsC,QAAQngB,MAAM,mHAAmH2rC,EAAE,EAAE9tB,EAAE4C,KAAKiU,MAAM,IAAI7W,GAAG,CAAC,EAAEza,EAAQ8jV,iCAAiC,WAAW,OAAOp0U,CAAC,EAAE1P,EAAQwlX,8BAA8B,WAAW,OAAOryV,EAAE9wB,EAAE,EAAErC,EAAQylX,cAAc,SAAShrW,GAAG,OAAO/K,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI8Q,EAAE,EAAE,MAAM,QAAQA,EAAE9Q,EAAE,IAAI+hB,EAAE/hB,EAAEA,EAAE8Q,EAAE,IAAI,OAAO/F,GAAG,CAAC,QAAQ/K,EAAE+hB,CAAC,CAAC,EAAEzxB,EAAQ0lX,wBAAwB,WAAW,EAC9f1lX,EAAQ0jV,sBAAsB,WAAW,EAAE1jV,EAAQ2lX,yBAAyB,SAASlrW,EAAE+F,GAAG,OAAO/F,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQA,EAAE,EAAE,IAAIgX,EAAE/hB,EAAEA,EAAE+K,EAAE,IAAI,OAAO+F,GAAG,CAAC,QAAQ9Q,EAAE+hB,CAAC,CAAC,EAChMzxB,EAAQojV,0BAA0B,SAAS3oU,EAAE+F,EAAEiR,GAAG,IAAIC,EAAE1xB,EAAQ4jV,eAA8F,OAA/E,kBAAkBnyT,GAAG,OAAOA,EAAaA,EAAE,kBAAZA,EAAEA,EAAEnG,QAA6B,EAAEmG,EAAEC,EAAED,EAAEC,EAAGD,EAAEC,EAASjX,GAAG,KAAK,EAAE,IAAIxjB,GAAG,EAAE,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,KAAK,EAAEA,EAAE,WAAW,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,QAAQA,EAAE,IAAmN,OAAzMwjB,EAAE,CAACra,GAAGugQ,IAAIzzN,SAAS1sB,EAAEskW,cAAcrqW,EAAEu5E,UAAUviE,EAAEozV,eAAvD5tX,EAAEw6B,EAAEx6B,EAAoE0tX,WAAW,GAAGlzV,EAAEC,GAAGjX,EAAEkqW,UAAUlzV,EAAEl4B,EAAEqnL,EAAEnmK,GAAG,OAAO0Y,EAAE9wB,IAAIoY,IAAI0Y,EAAEytJ,KAAK+iK,GAAGj7S,EAAE6yT,GAAGA,GAAG,GAAG5X,GAAE,EAAGiX,EAAExnU,EAAE3B,EAAEC,MAAMjX,EAAEkqW,UAAU1tX,EAAEsC,EAAE8I,EAAEoY,GAAGguB,GAAG3W,IAAI2W,GAAE,EAAG8uT,EAAExE,KAAYt4U,CAAC,EACneza,EAAQwjV,qBAAqB8Z,EAAEt9V,EAAQ4lX,sBAAsB,SAASnrW,GAAG,IAAI+F,EAAE9Q,EAAE,OAAO,WAAW,IAAI+hB,EAAE/hB,EAAEA,EAAE8Q,EAAE,IAAI,OAAO/F,EAAEC,MAAMc,KAAK3B,UAAU,CAAC,QAAQnK,EAAE+hB,CAAC,CAAC,CAAC,qCCf7JkvB,EAAO3gD,QAAU,EAAjB2gD,wCCDF,IAAI40O,EAAex1R,EAAQ,MACvB8lX,EAAY9lX,EAAQ,MACpBg+T,EAAUh+T,EAAQ,MAElBuzS,EAAa/d,EAAa,eAC1BuwF,EAAWvwF,EAAa,aAAa,GACrCwwF,EAAOxwF,EAAa,SAAS,GAE7BywF,EAAcH,EAAU,yBAAyB,GACjDI,EAAcJ,EAAU,yBAAyB,GACjDK,EAAcL,EAAU,yBAAyB,GACjDM,EAAUN,EAAU,qBAAqB,GACzCO,EAAUP,EAAU,qBAAqB,GACzCQ,EAAUR,EAAU,qBAAqB,GAUzCS,EAAc,SAAU7xU,EAAMj6C,GACjC,IAAK,IAAiBqxS,EAAbvzG,EAAO7jJ,EAAmC,QAAtBo3P,EAAOvzG,EAAKh/G,MAAgBg/G,EAAOuzG,EAC/D,GAAIA,EAAKrxS,MAAQA,EAIhB,OAHA89L,EAAKh/G,KAAOuyN,EAAKvyN,KACjBuyN,EAAKvyN,KAAO7kC,EAAK6kC,KACjB7kC,EAAK6kC,KAAOuyN,EACLA,CAGV,EAuBAlrP,EAAO3gD,QAAU,WAChB,IAAIumX,EACAC,EACAC,EACAC,EAAU,CACb9nE,OAAQ,SAAUpkT,GACjB,IAAKksX,EAAQtrW,IAAI5gB,GAChB,MAAM,IAAI84S,EAAW,iCAAmCyqB,EAAQvjU,GAElE,EACA0B,IAAK,SAAU1B,GACd,GAAIsrX,GAAYtrX,IAAuB,kBAARA,GAAmC,oBAARA,IACzD,GAAI+rX,EACH,OAAOP,EAAYO,EAAK/rX,QAEnB,GAAIurX,GACV,GAAIS,EACH,OAAOL,EAAQK,EAAIhsX,QAGpB,GAAIisX,EACH,OA1CS,SAAUE,EAASnsX,GAChC,IAAIy3D,EAAOq0T,EAAYK,EAASnsX,GAChC,OAAOy3D,GAAQA,EAAKl5D,KACrB,CAuCY6tX,CAAQH,EAAIjsX,EAGtB,EACA4gB,IAAK,SAAU5gB,GACd,GAAIsrX,GAAYtrX,IAAuB,kBAARA,GAAmC,oBAARA,IACzD,GAAI+rX,EACH,OAAOL,EAAYK,EAAK/rX,QAEnB,GAAIurX,GACV,GAAIS,EACH,OAAOH,EAAQG,EAAIhsX,QAGpB,GAAIisX,EACH,OAxCS,SAAUE,EAASnsX,GAChC,QAAS8rX,EAAYK,EAASnsX,EAC/B,CAsCYqsX,CAAQJ,EAAIjsX,GAGrB,OAAO,CACR,EACA6gB,IAAK,SAAU7gB,EAAKzB,GACf+sX,GAAYtrX,IAAuB,kBAARA,GAAmC,oBAARA,IACpD+rX,IACJA,EAAM,IAAIT,GAEXG,EAAYM,EAAK/rX,EAAKzB,IACZgtX,GACLS,IACJA,EAAK,IAAIT,GAEVK,EAAQI,EAAIhsX,EAAKzB,KAEZ0tX,IAMJA,EAAK,CAAEjsX,IAAK,CAAC,EAAG8+E,KAAM,OA5Eb,SAAUqtS,EAASnsX,EAAKzB,GACrC,IAAIk5D,EAAOq0T,EAAYK,EAASnsX,GAC5By3D,EACHA,EAAKl5D,MAAQA,EAGb4tX,EAAQrtS,KAAO,CACd9+E,IAAKA,EACL8+E,KAAMqtS,EAAQrtS,KACdvgF,MAAOA,EAGV,CAkEI+tX,CAAQL,EAAIjsX,EAAKzB,GAEnB,GAED,OAAO2tX,CACR,iCCzHA,SAASK,EAAcj+V,GACrB,OAAOmB,MAAMpP,UAAUhC,MAAM6B,MAAMoO,EACrC,CACA,IACEk+V,EAAU,UACVC,EAAW,WACXC,EAAW,WAEb,SAASC,EAAmBn/V,GAC1BxM,KAAK3E,OAASmwW,EACdxrW,KAAK4rW,eAAiB,GACtB5rW,KAAK6rW,QAAU,KACf7rW,KAAK8rW,SAAU,EACXt/V,GACFA,EAAQ9M,KACNM,KACAA,KAAK+rW,cAAc/sW,KAAKgB,MACxBA,KAAKgsW,UAAUhtW,KAAKgB,MAG1B,CAEA,SAASisW,EAAkB3+V,GACzB,OAAOA,GAA6B,oBAAdA,EAAInmB,IAC5B,CA8SA,GA5SAwkX,EAAmBtsW,UAAY,CAC7BlY,KAAM,SAAU+kX,EAAQC,GACtB,IAAIruS,EAAO6tS,EAAmBS,aAAaC,WAAWrsW,MACtD,GAAIA,KAAKssW,cAAe,CACtB,GAAItsW,KAAK8rW,QAMP,OALA9rW,KAAK4rW,eAAensX,KAAK,CACvByH,QAAS42E,EACTouS,OAAQA,EACRC,QAASA,IAEJruS,EAET,GAAIquS,EACF,IACE,IAAII,EAAcJ,EAAQnsW,KAAKwsW,QAC/B,OAAIP,EAAkBM,IACpBvsW,KAAKysW,kBAAkBF,EAAazuS,GAC7BA,GAEA6tS,EAAmBjuW,QAAQ6uW,GAAaF,WAAWrsW,KAE9D,CAAE,MAAOvkB,GACP,OAAOkwX,EAAmBvwW,OAAO3f,GAAG4wX,WAAWrsW,KACjD,CAEF,OAAO2rW,EAAmBvwW,OAAO4E,KAAKwsW,QAAQH,WAAWrsW,KAC3D,CAOA,OANAA,KAAK4rW,eAAensX,KAAK,CACvByH,QAAS42E,EACTouS,OAAQA,EACRC,QAASA,IAEXnsW,KAAK0sW,kBACE5uS,CACT,EACAz2E,MAAO,SAAUmlB,GACf,GAAIxM,KAAK2sW,cACP,OAAOhB,EAAmBjuW,QAAQsC,KAAKsuS,OAAO+9D,WAAWrsW,MAE3D,IAAI89D,EAAO6tS,EAAmBS,aAAaC,WAAWrsW,MAMtD,OALAA,KAAK4rW,eAAensX,KAAK,CACvByH,QAAS42E,EACTquS,QAAS3/V,IAEXxM,KAAK4sW,iBACE9uS,CACT,EACAxyE,QAAS,SAASomC,GAChB,IAAIm7U,GAAM,EACV,SAASC,IACP,IAAKD,EAEH,OADAA,GAAM,EACCn7U,GAEX,CACA,OAAO1xB,KAAK7Y,KAAK2lX,GACdzlX,MAAMylX,EACX,EACAC,MAAO,WAEL,OADA/sW,KAAK8rW,SAAU,EACR9rW,IACT,EACAgtW,OAAQ,WACN,IAAIC,EAAcjtW,KAAKktW,mBAMvB,OALID,IACFA,EAAYnB,SAAU,EACtBmB,EAAYP,kBACZO,EAAYL,kBAEP5sW,IACT,EACAmtW,cAAe,WACb,OAAOntW,KAAK4rW,eAAehkW,QAAO,SAAUg2T,EAAKxpT,GAC/C,GAAIA,EAAIltB,QAAS,CACf,IAAIuvD,EAAO,CACTvvD,QAASktB,EAAIltB,QACbtP,SAAUw8B,EAAIltB,QAAQimX,iBAExBvvC,EAAIn+U,KAAKg3D,EACX,CACA,OAAOmnR,CACT,GAAG,GACL,EACAyuC,WAAY,SAAUh8V,GACpB,GAAIrQ,KAAK6rW,QACP,MAAM,IAAI7qX,MAAM,sBAGlB,OADAgf,KAAK6rW,QAAUx7V,EACRrQ,IACT,EACA+rW,cAAe,SAAUlmX,GACvB,IAAIunX,EAAeptW,KAAKqtW,oBACpBD,IACFA,EAAa9+D,MAAQzoT,EACrBunX,EAAaE,eAEjB,EACAD,kBAAmB,WACjB,OAAOrtW,KAAKutW,oBAAmB,SAAUzlW,GACvC,OAAOA,EAAK0lW,YAAc1lW,EAAK0lW,YACjC,GACF,EACAN,iBAAkB,WAChB,OAAOltW,KAAKutW,oBAAmB,SAAUzlW,GACvC,OAAOA,EAAKgkW,OACd,GACF,EACAyB,mBAAoB,SAAUE,GAG5B,IAFA,IACIruX,EADA0oB,EAAO9H,KAEJ8H,GACD2lW,EAAS3lW,KACX1oB,EAAS0oB,GAEXA,EAAOA,EAAK+jW,QAEd,OAAOzsX,CACT,EACA4sX,UAAW,SAAU5qX,GACnB,IAAIssX,EAAgB1tW,KAAKqtW,oBACrBK,IACFA,EAAclB,OAASprX,EACvBssX,EAAcC,eAElB,EACAC,mBAAoB,WAClB,OAAO5tW,KAAK4rW,eAAe/kV,OAAO,EAAG7mB,KAAK4rW,eAAe3zX,OAC3D,EACA20X,eAAgB,WACd,IAAI5sW,KAAK8rW,SAAY9rW,KAAKssW,cAA1B,CAGA,IACElrX,EAAQ4e,KAAKwsW,OACbqB,EAAgB7tW,KAAK4tW,qBACrBhtF,EAAO5gR,KACT6tW,EAAc9uX,SAAQ,SAAU4pK,GAC9B,GAAIA,EAAKwjN,QACP,IACE,IAAII,EAAc5jN,EAAKwjN,QAAQ/qX,GAC/Bw/R,EAAKktF,0BAA0BvB,EAAa5jN,EAAKzhK,QACnD,CAAE,MAAOzL,GACOA,EAAE6X,QAChBq1J,EAAKzhK,QAAQkU,OAAO3f,EACtB,MAEAktK,EAAKzhK,QAAQkU,OAAOha,EAExB,GAjBA,CAkBF,EACAsrX,gBAAiB,WACf,IAAI1sW,KAAK8rW,SAAY9rW,KAAK2sW,gBAAiB3sW,KAAKwtW,aAAhD,CAGA,IAAIK,EAAgB7tW,KAAK4tW,qBACzB,GAAI3B,EAAkBjsW,KAAKsuS,OACzB,OAAOtuS,KAAK+tW,iCAAiC/tW,KAAKsuS,OAEpD,IAAIzoT,EAAOma,KAAKsuS,MACZ1tB,EAAO5gR,KACX6tW,EAAc9uX,SAAQ,SAAU4pK,GAC9B,GAAIA,EAAKujN,OACP,IACE,IAAI9sX,EAASupK,EAAKujN,OAAOrmX,GACzB+6R,EAAKktF,0BAA0B1uX,EAAQupK,EAAKzhK,QAC9C,CAAE,MAAOzL,GACPmlS,EAAKotF,uBAAuBvyX,EAAGktK,EACjC,MACSA,EAAKzhK,SACdyhK,EAAKzhK,QAAQwW,QAAQ7X,EAEzB,GAlBA,CAmBF,EACAmoX,uBAAwB,SAAUvyX,EAAGwyX,GAEnC,GADAjuW,KAAK2tW,eACDM,EAAa9B,QACf,IAEE,YADA8B,EAAa9B,QAAQ1wX,EAEvB,CAAE,MAAOyyX,GACPzyX,EAAIyyX,CACN,CAEED,EAAa/mX,SACf+mX,EAAa/mX,QAAQkU,OAAO3f,EAEhC,EACAsyX,iCAAkC,SAAUloX,GAC1C,IAAI+6R,EAAO5gR,KACX,OAAOna,EAAKsB,MAAK,SAAU/H,GACzBwhS,EAAK0tB,MAAQlvT,EACbwhS,EAAK8rF,iBACP,IAAGrlX,OAAM,SAAUjG,GACjBw/R,EAAK4rF,OAASprX,EACdw/R,EAAK+sF,eACL/sF,EAAKgsF,gBACP,GACF,EACAkB,0BAA2B,SAAUjoX,EAAMsoX,GACrClC,EAAkBpmX,GACpBma,KAAKysW,kBAAkB5mX,EAAMsoX,GAE7BA,EAAuBzwW,QAAQ7X,EAEnC,EACA4mX,kBAAmB,SAAU2B,EAAaD,GACxCC,EAAYjnX,MAAK,SAAUqrG,GACzB27Q,EAAuBzwW,QAAQ80F,EACjC,IAAGnrG,OAAM,SAAUgnX,GACjBF,EAAuB/yW,OAAOizW,EAChC,GACF,EACAf,aAAc,WACZttW,KAAK3E,OAASowW,EACTzrW,KAAK8rW,SACR9rW,KAAK0sW,iBAET,EACAiB,aAAc,WACZ3tW,KAAK3E,OAASqwW,EACT1rW,KAAK8rW,SACR9rW,KAAK4sW,gBAET,EACAY,WAAY,WACV,OAAOxtW,KAAK3E,SAAWmwW,CACzB,EACAmB,YAAa,WACX,OAAO3sW,KAAK3E,SAAWowW,CACzB,EACAa,YAAa,WACX,OAAOtsW,KAAK3E,SAAWqwW,CACzB,GAGFC,EAAmBjuW,QAAU,SAAUte,GACrC,OAAO,IAAIusX,GAAmB,SAAUjuW,EAAStC,GAC3C6wW,EAAkB7sX,GACpBA,EAAO+H,MAAK,SAAUmnX,GACpB5wW,EAAQ4wW,EACV,IAAGjnX,OAAM,SAAUjG,GACjBga,EAAOha,EACT,IAEAsc,EAAQte,EAEZ,GACF,EAEAusX,EAAmBvwW,OAAS,SAAUhc,GACpC,OAAO,IAAIusX,GAAmB,SAAUjuW,EAAStC,GAC/CA,EAAOhc,EACT,GACF,EAEAusX,EAAmBS,WAAa,WAC9B,OAAO,IAAIT,GAAmB,SAAUjuW,EAAStC,GAC/C4E,KAAKtC,QAAUA,EACfsC,KAAK5E,OAASA,CAChB,GACF,EAEAuwW,EAAmBplX,IAAM,WACvB,IAAI0H,EAAOs9W,EAAcltW,WAIzB,OAHIoQ,MAAMC,QAAQzgB,EAAK,MACrBA,EAAOA,EAAK,IAETA,EAAKhW,OAGH,IAAI0zX,GAAmB,SAAUjuW,EAAStC,GAC/C,IACEmzW,EAAU,GACVC,EAAc,EAMd96F,GAAW,EAQbzlR,EAAKlP,SAAQ,SAAUgnD,EAAKrkC,GAC1BiqW,EAAmBjuW,QAAQqoC,GAAK5+C,MAAK,SAAUsnX,GAC7CF,EAAQ7sW,GAAO+sW,GACfD,GAAe,KAfKvgX,EAAKhW,QACvBylB,EAAQ6wW,EAgBZ,IAAGlnX,OAAM,SAAUvJ,IAZR,SAAUA,GACf41R,IAGJA,GAAW,EACXt4Q,EAAOtd,GACT,CAOE4wX,CAAS5wX,EACX,GACF,GACF,IA5BS6tX,EAAmBjuW,QAAQ,GA6BtC,EAGIvC,UAAYwwW,EACd,MAAM,IAAI3qX,MAAM,uEAElB,IAAI2tX,EAAcxzW,QAClBwwW,EAAmBiD,gBAAkB,SAASC,GAC5C,GAAI1zW,UAAYwwW,EACd,OAAOkD,EAET,IAAIzvX,EAWN,SAAgCyvX,GAC9B,GAA0B,qBAAfA,GAA8BA,EAAUC,UACjD,OAAOD,EAET,IAAIE,EAAkBF,EAMtB,OALAA,EAAY,WAEVE,EAAgB7vW,MAAMc,KAAMurW,EAAcltW,WAC5C,EACAwwW,EAAUC,WAAY,EACfD,CACT,CAtBeG,CAAuBH,GAEpC,OADA1zW,QAAUwwW,EACHvsX,CACT,EAEAusX,EAAmBsD,kBAAoB,WACjC9zW,UAAYwwW,IACdxwW,QAAUwzW,EAEd,EAgBAxpU,EAAO3gD,QAAU,CACfmnX,mBAAoBA,qBC5VtB,SAASuD,EAASnpT,EAAOopT,GACvB,IAAI/6N,EAASruF,EAAM9tE,OACfy8G,EAAS,IAAIjmF,MAAM2lI,GACnBk5I,EAAU,CAAC,EACXnoR,EAAIivI,EAEJg7N,EA4DN,SAA2B5oW,GAEzB,IADA,IAAI2oW,EAAQ,IAAI3vW,IACP2F,EAAI,EAAG8L,EAAMzK,EAAIvuB,OAAQktB,EAAI8L,EAAK9L,IAAK,CAC9C,IAAIyzO,EAAOpyO,EAAIrB,GACVgqW,EAAMvvW,IAAIg5O,EAAK,KAAKu2H,EAAMtvW,IAAI+4O,EAAK,GAAI,IAAIr0O,KAC3C4qW,EAAMvvW,IAAIg5O,EAAK,KAAKu2H,EAAMtvW,IAAI+4O,EAAK,GAAI,IAAIr0O,KAChD4qW,EAAMzuX,IAAIk4P,EAAK,IAAIzjN,IAAIyjN,EAAK,GAC9B,CACA,OAAOu2H,CACT,CArEsBE,CAAkBF,GAClCG,EAsEN,SAAuB9oW,GAErB,IADA,IAAIjU,EAAM,IAAIiN,IACL2F,EAAI,EAAG8L,EAAMzK,EAAIvuB,OAAQktB,EAAI8L,EAAK9L,IACzC5S,EAAIsN,IAAI2G,EAAIrB,GAAIA,GAElB,OAAO5S,CACT,CA5EkBg9W,CAAcxpT,GAS9B,IANAopT,EAAMpwX,SAAQ,SAAS65P,GACrB,IAAK02H,EAAU1vW,IAAIg5O,EAAK,MAAQ02H,EAAU1vW,IAAIg5O,EAAK,IACjD,MAAM,IAAI53P,MAAM,gEAEpB,IAEOmkB,KACAmoR,EAAQnoR,IAAIqqW,EAAMzpT,EAAM5gD,GAAIA,EAAG,IAAIZ,KAG1C,OAAOmwF,EAEP,SAAS86Q,EAAM/4T,EAAMtxC,EAAGsqW,GACtB,GAAGA,EAAa7vW,IAAI62C,GAAO,CACzB,IAAIi5T,EACJ,IACEA,EAAU,cAAgBpzW,KAAKK,UAAU85C,EAC3C,CAAE,MAAMh7D,GACNi0X,EAAU,EACZ,CACA,MAAM,IAAI1uX,MAAM,oBAAsB0uX,EACxC,CAEA,IAAKJ,EAAU1vW,IAAI62C,GACjB,MAAM,IAAIz1D,MAAM,+EAA+Esb,KAAKK,UAAU85C,IAGhH,IAAI62O,EAAQnoR,GAAZ,CACAmoR,EAAQnoR,IAAK,EAEb,IAAIwqW,EAAWP,EAAc1uX,IAAI+1D,IAAS,IAAIlyC,IAG9C,GAAIY,GAFJwqW,EAAWlhW,MAAMrE,KAAKulW,IAEL13X,OAAQ,CACvBw3X,EAAat6U,IAAIshB,GACjB,EAAG,CACD,IAAIrmC,EAAQu/V,IAAWxqW,GACvBqqW,EAAMp/V,EAAOk/V,EAAU5uX,IAAI0vB,GAAQq/V,EACrC,OAAStqW,GACTsqW,EAAa7+W,OAAO6lD,EACtB,CAEAi+C,IAAS0/C,GAAU39F,CAfG,CAgBxB,CACF,CA5DAtR,EAAO3gD,QAAU,SAAS2qX,GACxB,OAAOD,EA6DT,SAAqB1oW,GAEnB,IADA,IAAIjU,EAAM,IAAIgS,IACLY,EAAI,EAAG8L,EAAMzK,EAAIvuB,OAAQktB,EAAI8L,EAAK9L,IAAK,CAC9C,IAAIyzO,EAAOpyO,EAAIrB,GACf5S,EAAI4iC,IAAIyjN,EAAK,IACbrmP,EAAI4iC,IAAIyjN,EAAK,GACf,CACA,OAAOnqO,MAAMrE,KAAK7X,EACpB,CArEkBq9W,CAAYT,GAAQA,EACtC,EAEAhqU,EAAO3gD,QAAQ26E,MAAQ+vS,iCCIvB,IAEI7tW,EAAU,WAAY,EA2C1B8jC,EAAO3gD,QAAU6c,qCC3DjB,IAAI+nT,EAAyB7kU,EAAQ,MAErCC,EAAQwkU,YAAa,EACrBxkU,EAAAA,aAAkB,EAElB,IAAIqrX,EAAOzmD,EAAuB7kU,EAAQ,OAEtCurX,EAAY1mD,EAAuB7kU,EAAQ,OAE/C,SAASwrX,EAAa/kX,GACpB,MAAsB,oBAAXA,EAA8BA,EAClC,SAAUyY,GACf,OAAOA,EAAK9iB,OAAOqK,EACrB,CACF,CAEA,IAAIglX,EAEJ,WACE,SAASA,EAAY5wF,EAAM1+Q,GACzB,IAAIqzR,EAAKrzR,EAAQqzR,GACb5sS,EAAOuZ,EAAQvZ,KACf8oX,EAAYvvW,EAAQuvW,UAIxB,GAHAjwW,KAAKo/Q,KAAO,GAAGz+R,OAAOy+R,GACtBj4R,EAAO4oX,EAAa5oX,GACpB8oX,EAAYF,EAAaE,GACF,oBAAZvvW,EAAwBV,KAAKP,GAAKiB,MAAa,CACxD,KAAK,EAAImvW,EAAKzpX,SAASsa,EAAS,MAAO,MAAM,IAAIf,UAAU,6CAC3D,IAAKe,EAAQvZ,OAASuZ,EAAQuvW,UAAW,MAAM,IAAItwW,UAAU,sEAC7D,IAAIuwW,EAAqB,oBAAPn8E,EAAoBA,EAAK,WACzC,IAAK,IAAIQ,EAAOl2R,UAAUpmB,OAAQwG,EAAS,IAAIgwB,MAAM8lR,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IACjF/1S,EAAO+1S,GAAQn2R,UAAUm2R,GAG3B,OAAO/1S,EAAOsZ,OAAM,SAAUxa,GAC5B,OAAOA,IAAUw2S,CACnB,GACF,EAEA/zR,KAAKP,GAAK,WACR,IAAK,IAAI0wW,EAAQ9xW,UAAUpmB,OAAQwG,EAAS,IAAIgwB,MAAM0hW,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACtF3xX,EAAO2xX,GAAS/xW,UAAU+xW,GAG5B,IAAIC,EAAgB5xX,EAAOqsB,MAE3B,OADaolW,EAAKhxW,WAAM,EAAQzgB,GAAU0I,EAAO8oX,GACnCI,EAChB,CACF,CACF,CAEA,IAAIC,EAASN,EAAY3wW,UAezB,OAbAixW,EAAOljW,SAAW,SAAkBiD,EAAQvvB,GAI1C,OAHakf,KAAKo/Q,KAAKt/R,KAAI,SAAU+G,GACnC,OAAOA,EAAEumB,SAASiD,EAAQvvB,EAC5B,GAEF,EAEAwvX,EAAO5yW,QAAU,SAAiB0oW,EAAK3nX,GACrC,IAAIuM,EAASgV,KAAKP,GAAGP,MAAMknW,EAAK3nX,EAAOkC,OAAOylX,IAC9C,QAAelrX,IAAX8P,KAAyB,EAAI8kX,EAAU1pX,SAAS4E,GAAS,MAAM,IAAI2U,UAAU,0CACjF,OAAO3U,GAAUo7W,CACnB,EAEO4J,CACT,CAjDA,GAmDIz/D,EAAWy/D,EACfxrX,EAAAA,QAAkB+rT,EAClBprQ,EAAO3gD,QAAUA,EAAiB,2CCvElC,IAAI4kU,EAAyB7kU,EAAQ,MAErCC,EAAQwkU,YAAa,EACrBxkU,EAAAA,aAAkB,EAElB,IAAI+rX,EAAiCnnD,EAAuB7kU,EAAQ,OAEhEurX,EAAY1mD,EAAuB7kU,EAAQ,OAE3CwxW,EAEJ,WACE,SAASA,EAAKya,GACZxwW,KAAKywW,SAAW,WACd,IAAIzlX,EAASwlX,EAAMtxW,WAAM,EAAQb,WACjC,KAAK,EAAIyxW,EAAU1pX,SAAS4E,GAAS,MAAM,IAAI2U,UAAU,+CACzD,OAAO3U,CACT,CACF,CAEA,IAAIslX,EAASva,EAAK12V,UA4BlB,OA1BAixW,EAAO5yW,QAAU,SAAiBlmB,GAChC,IAAI+F,EAAQ/F,EAAK+F,MACb8D,GAAO,EAAIkvX,EAA+BnqX,SAAS5O,EAAM,CAAC,UAC9D,OAAOwoB,KAAKywW,SAASlzX,EAAO8D,EAC9B,EAEAivX,EAAOI,KAAO,SAAcnzX,EAAOmjB,GACjC,OAAOV,KAAKywW,SAASlzX,EAAOmjB,GAASgwW,KAAKnzX,EAAOmjB,EACnD,EAEA4vW,EAAOhvX,SAAW,SAAkB/D,EAAOmjB,GACzC,OAAOV,KAAKywW,SAASlzX,EAAOmjB,GAASpf,SAAS/D,EAAOmjB,EACvD,EAEA4vW,EAAOK,aAAe,SAAsBpzX,EAAOmjB,GACjD,OAAOV,KAAKywW,SAASlzX,EAAOmjB,GAASiwW,aAAapzX,EAAOmjB,EAC3D,EAEA4vW,EAAOjhF,WAAa,SAAoBltR,EAAM5kB,EAAOmjB,GACnD,OAAOV,KAAKywW,SAASlzX,EAAOmjB,GAAS2uR,WAAWltR,EAAM5kB,EAAOmjB,EAC/D,EAEA4vW,EAAOM,eAAiB,SAAwBzuW,EAAM5kB,EAAOmjB,GAC3D,OAAOV,KAAKywW,SAASlzX,EAAOmjB,GAASkwW,eAAezuW,EAAM5kB,EAAOmjB,EACnE,EAEOq1V,CACT,CAtCA,GAwCAA,EAAK12V,UAAUwxW,iBAAkB,EACjC,IAAItgE,EAAWwlD,EACfvxW,EAAAA,QAAkB+rT,EAClBprQ,EAAO3gD,QAAUA,EAAiB,2CCtDlCA,EAAQwkU,YAAa,EACrBxkU,EAAAA,aAAkB,EAElB,IAAIssX,EAAgBvsX,EAAQ,MAMxBwsX,EAEJ,WACEA,EAAUC,MAAQ,SAAezzX,GAC/B,SAAUA,KAAUA,EAAM0zX,YAAc1zX,aAAiBwzX,GAC3D,EAEA,IAAIT,EAASS,EAAU1xW,UAMvB,SAAS0xW,EAAU/xX,EAAKwxX,EAAO9vW,QACb,IAAZA,IACFA,EAAU,CAAC,GAnBE,SAAsBwV,GACvC,GAAiB,kBAANA,EAAgB,MAAM,IAAIvW,UAAU,+BAAiCuW,EAClF,CAoBIg7V,CAAalyX,GACb,IAAIkiC,EAASxgB,EAAQywW,eAAiB,IAEnB,oBAARnyX,IACTA,EAAM,KAGRghB,KAAKhhB,IAAMA,EAAIi8D,OACfj7C,KAAKkhB,OAASA,EACdlhB,KAAKoxW,UAAyC,IAA7BpxW,KAAKhhB,IAAIsX,QAAQ4qB,GAClClhB,KAAKqxW,OAAsB,MAAbrxW,KAAKhhB,IACnBghB,KAAKmC,KAAOnC,KAAKoxW,UAAYpxW,KAAKhhB,IAAIqe,MAAM2C,KAAKkhB,OAAOjpC,QAAU+nB,KAAKhhB,IACvEghB,KAAKsxW,MAAO,EAAIR,EAAc/xD,QAAQ/+S,KAAKmC,MAAM,GAEjDnC,KAAKlgB,IAAM0wX,GAAS,SAAUjzX,GAC5B,OAAOA,CACT,CACF,CAoBA,OA9CA+yX,EAAOl1X,SAAW,WAChB,MAAO,OAAS4kB,KAAKhhB,IAAM,GAC7B,EA0BAsxX,EAAO5yW,QAAU,WACf,OAAOsC,IACT,EAEAswW,EAAOI,KAAO,SAAcnzX,EAAO/F,GACjC,IAAI64B,EAAS74B,EAAK64B,OACdvvB,EAAUtJ,EAAKsJ,QACnB,OAAOkf,KAAKoN,SAASiD,EAAQvvB,EAC/B,EAEAwvX,EAAOljW,SAAW,SAAkBiD,EAAQvvB,GAC1C,IAAIswX,EAAYpxW,KAAKoxW,UAEjB7zX,EAAQyiB,KAAKsxW,KAAKF,EAAYtwX,EAAUuvB,GAAUvvB,GAAW,CAAC,GAElE,OAAOkf,KAAKlgB,IAAIvC,EAClB,EAEOwzX,CACT,CAtDA,GAwDAvsX,EAAAA,QAAkBusX,EAClBA,EAAU1xW,UAAU4xW,YAAa,EACjC9rU,EAAO3gD,QAAUA,EAAiB,2CCrElC,IAAI4kU,EAAyB7kU,EAAQ,MAErCC,EAAQwkU,YAAa,EACrBxkU,EAAAA,QAAkB+sX,EAElB,IAAIC,EAAcpoD,EAAuB7kU,EAAQ,OAE7CktX,EAAS,qBAUb,SAASF,EAAgB55X,EAAQ4F,EAAOqE,EAAOtH,GAC7C,IAAI01B,EAAQhQ,KAEZA,KAAK5nB,KAAO,kBACZ4nB,KAAKziB,MAAQA,EACbyiB,KAAKmC,KAAOvgB,EACZoe,KAAK1lB,KAAOA,EACZ0lB,KAAKroB,OAAS,GACdqoB,KAAK+wP,MAAQ,GACTp5Q,GAAQ,GAAGgJ,OAAOhJ,GAAQoH,SAAQ,SAAUjB,GAC9CkyB,EAAMr4B,OAASq4B,EAAMr4B,OAAOgJ,OAAO7C,EAAInG,QAAUmG,GAC7CA,EAAIizQ,QAAO/gP,EAAM+gP,MAAQ/gP,EAAM+gP,MAAMpwQ,OAAO7C,EAAIizQ,MAAM94Q,OAAS6F,EAAIizQ,MAAQjzQ,GACjF,IACAkiB,KAAK1M,QAAU0M,KAAKroB,OAAOM,OAAS,EAAI+nB,KAAKroB,OAAOM,OAAS,mBAAqB+nB,KAAKroB,OAAO,GAC1FqJ,MAAM0wX,mBAAmB1wX,MAAM0wX,kBAAkB1xW,KAAMuxW,EAC7D,CAEAA,EAAgBlyW,UAAYxgB,OAAOqhB,OAAOlf,MAAMqe,WAChDkyW,EAAgBlyW,UAAUY,YAAcsxW,EAExCA,EAAgBt7C,QAAU,SAAUn4U,GAClC,OAAOA,GAAoB,oBAAbA,EAAI1F,IACpB,EAEAm5X,EAAgBI,YAAc,SAAUr+W,EAASgV,GAhCnC,IAAiBiL,EAiCN,kBAAZjgB,IAjCkBigB,EAiCsBjgB,EAAlBA,EAhC1B,SAAUgV,GACf,OAAOiL,EAAI9c,QAAQg7W,GAAQ,SAAU5oW,EAAG7pB,GACtC,OAAO,EAAIwyX,EAAYprX,SAASkiB,EAAOtpB,GACzC,GACF,GA8BA,IAAIygB,EAAK,SAAY6I,GAEnB,OADAA,EAAOnG,KAAOmG,EAAO1vB,OAAS0vB,EAAOnG,MAAQ,OACnB,oBAAZ7O,EAAyBA,EAAQgV,GAAUhV,CAC3D,EAEA,OAA4B,IAArB+K,UAAUpmB,OAAewnB,EAAKA,EAAG6I,EAC1C,EAEA68B,EAAO3gD,QAAUA,EAAiB,2CCpDlC,IAAI2zW,EAA0B5zW,EAAQ,KAElC6kU,EAAyB7kU,EAAQ,MAErCC,EAAQwkU,YAAa,EACrBxkU,EAAAA,aAAkB,EAElB,IAAIotX,EAAYxoD,EAAuB7kU,EAAQ,OAE3CstX,EAA+BzoD,EAAuB7kU,EAAQ,OAE9DinB,EAAY49S,EAAuB7kU,EAAQ,OAE3CutX,EAAY1oD,EAAuB7kU,EAAQ,OAE3CurX,EAAY1mD,EAAuB7kU,EAAQ,OAE3CwtX,EAAY3oD,EAAuB7kU,EAAQ,OAE3CitX,EAAcpoD,EAAuB7kU,EAAQ,OAE7CytX,EAAS5oD,EAAuB7kU,EAAQ,OAExC0tX,EAAU1tX,EAAQ,MAElB2tX,EAAkB/Z,EAAwB5zW,EAAQ,OAEtD,SAAS4tX,IACP,IAAItsX,GAAO,EAAIgsX,EAA6BzrX,SAAS,CAAC,GAAI,IAAK,MAM/D,OAJA+rX,EAAkB,WAChB,OAAOtsX,CACT,EAEOA,CACT,CAEA,IAAIusX,EAAY,SAAmB70X,GACjC,QAAQ,EAAIu0X,EAAU1rX,SAAS7I,IAAUA,EAAMtF,OAAS,CAC1D,EAEIs4T,EAAW8hE,EAGf,SAASA,EAAY/3X,GACnB,IAAI01B,EAAQhQ,KAEZ,KAAMA,gBAAgBqyW,GAAc,OAAO,IAAIA,EAAY/3X,GAE3D03X,EAAO5rX,QAAQsZ,KAAKM,KAAM,CACxB1lB,KAAM,UAKR0lB,KAAKsyW,cAAWp3X,EAChB8kB,KAAKuyW,cAAa,WAChBviW,EAAMo0B,WAAU,SAAU3lD,GACxB,GAAsB,kBAAXA,EAAqB,IAC9BA,EAAS6d,KAAKC,MAAM9d,EACtB,CAAE,MAAOX,GACPW,EAAS,IACX,CACA,OAAOuhB,KAAKimR,OAAOxnS,GAAUA,EAAS,IACxC,IAEInE,GAAM01B,EAAMinU,GAAG38V,EACrB,GACF,CA1BAkK,EAAAA,QAAkB+rT,GA4BlB,EAAI/kS,EAAUplB,SAASisX,EAAaL,EAAO5rX,QAAS,CAClDosX,WAAY,SAAoBp0K,GAC9B,OAAO3vL,MAAMC,QAAQ0vL,EACvB,EACAq0K,MAAO,SAAeC,EAAQC,GAC5B,IAAIC,EAAS5yW,KAETziB,EAAQy0X,EAAO5rX,QAAQiZ,UAAUozW,MAAM/yW,KAAKM,KAAM0yW,EAAQC,GAG9D,IAAK3yW,KAAKwyW,WAAWj1X,KAAWyiB,KAAKsyW,SAAU,OAAO/0X,EACtD,IAAIwhO,GAAY,EACZ8zJ,EAAYt1X,EAAMuC,KAAI,SAAUs+M,GAClC,IAAI00K,EAAcF,EAAON,SAAS5B,KAAKtyK,EAAGu0K,GAM1C,OAJIG,IAAgB10K,IAClB2gB,GAAY,GAGP+zJ,CACT,IACA,OAAO/zJ,EAAY8zJ,EAAYt1X,CACjC,EACAw1X,UAAW,SAAmBL,EAAQhyW,GACpC,IAAIsyW,EAAShzW,UAEG,IAAZU,IACFA,EAAU,CAAC,GAGb,IAAI/oB,EAAS,GACT23S,EAAO5uR,EAAQ4uR,KACfntR,EAAOzB,EAAQyB,KACf8wW,EAAUjzW,KAAKsyW,SAEfY,EAAWlzW,KAAKmzW,QAAQ,aAAczyW,GAEtC0yW,EAAYpzW,KAAKmzW,QAAQ,YAAazyW,GAEtC2yW,EAAyC,MAAzB3yW,EAAQ2yW,cAAwB3yW,EAAQ2yW,cAAgBX,EAC5E,OAAOV,EAAO5rX,QAAQiZ,UAAU0zW,UAAUrzW,KAAKM,KAAM0yW,EAAQhyW,GAASrZ,OAAM,EAAI6qX,EAAgBoB,iBAAiBJ,EAAUv7X,IAASwP,MAAK,SAAU5J,GACjJ,IAAK61X,IAAcH,IAAYD,EAAOR,WAAWj1X,GAAQ,CACvD,GAAI5F,EAAOM,OAAQ,MAAMN,EAAO,GAChC,OAAO4F,CACT,CAEA81X,EAAgBA,GAAiB91X,EACjC,IAAIg2X,EAAch2X,EAAMuC,KAAI,SAAUsL,EAAMsW,GAC1C,IAAIS,GAAO,EAAI4vW,EAAU3rX,SAAS+rX,IAAmBzxW,EAAQyB,KAAMT,GAE/D8xW,GAAe,EAAI5B,EAAUxrX,SAAS,CAAC,EAAGsa,EAAS,CACrDyB,KAAMA,EACNsxW,QAAQ,EACRpjW,OAAQ9yB,EACR81X,cAAeA,EAAc3xW,KAE/B,OAAIuxW,EAAQ3xX,UAAiB2xX,EAAQ3xX,SAAS8J,EAAMooX,EAEtD,IACA,OAAO,EAAItB,EAAgB9rX,SAAS,CAClCkpS,KAAMA,EACNntR,KAAMA,EACN5kB,MAAOA,EACP5F,OAAQA,EACRu7X,SAAUA,EACVK,YAAaA,GAEjB,GACF,EACAt8B,GAAI,SAAYjsV,GACd,IAAI8yE,EAAO99D,KAAKkP,QAChB,IAAe,IAAXlkB,KAAqB,EAAI8kX,EAAU1pX,SAAS4E,GAAS,MAAM,IAAI2U,UAAU,wGAA8G,EAAI6xW,EAAYprX,SAAS4E,IAEpN,OADA8yE,EAAKw0S,SAAWtnX,EACT8yE,CACT,EACAziF,SAAU,SAAkBiY,GAO1B,YANgB,IAAZA,IACFA,EAAU2+W,EAAQyB,MAAMr4X,UAGf22X,EAAO5rX,QAAQiZ,UAAUhkB,SAASqkB,KAAKM,KAAM1M,GAE5CwU,KAAK,CACfxU,QAASA,EACTlb,KAAM,WACN0vB,KAAMsqW,GAEV,EACA1xV,IAAK,SAAaizV,EAAMrgX,GAEtB,OADAA,EAAUA,GAAW2+W,EAAQ9yS,MAAMz+C,IAC5B1gB,KAAK8H,KAAK,CACfxU,QAASA,EACTlb,KAAM,MACNw7X,WAAW,EACXtrW,OAAQ,CACNoY,IAAKizV,GAEP7rW,KAAM,SAAcvqB,GAClB,OAAO,EAAIu0X,EAAU1rX,SAAS7I,IAAUA,EAAMtF,QAAU+nB,KAAKtC,QAAQi2W,EACvE,GAEJ,EACAhzV,IAAK,SAAakzV,EAAMvgX,GAEtB,OADAA,EAAUA,GAAW2+W,EAAQ9yS,MAAMx+C,IAC5B3gB,KAAK8H,KAAK,CACfxU,QAASA,EACTlb,KAAM,MACNw7X,WAAW,EACXtrW,OAAQ,CACNqY,IAAKkzV,GAEP/rW,KAAM,SAAcvqB,GAClB,OAAO,EAAIu0X,EAAU1rX,SAAS7I,IAAUA,EAAMtF,QAAU+nB,KAAKtC,QAAQm2W,EACvE,GAEJ,EACAC,OAAQ,WACN,IAAIC,EAAS/zW,KAEb,OAAOA,KAAK5Z,SAAQ,WAClB,MAAO,EACT,IAAGg+C,WAAU,SAAUzmC,GACrB,OAAIo2W,EAAO9tF,OAAOtoR,GAAaA,EAChB,OAARA,EAAe,GAAK,GAAGhd,OAAOgd,EACvC,GACF,EACAs+T,QAAS,SAAiB+3C,GACxB,IAAI54W,EAAU44W,EAEV,SAAU51K,EAAGj5L,EAAGlG,GAClB,OAAQ+0W,EAAS51K,EAAGj5L,EAAGlG,EACzB,EAJyB,SAAUm/L,GACjC,QAASA,CACX,EAGA,OAAOp+L,KAAKokC,WAAU,SAAU3lD,GAC9B,OAAiB,MAAVA,EAAiBA,EAAON,OAAOid,GAAU3c,CAClD,GACF,EACAw1X,SAAU,WACR,IAAIxwW,EAAOuuW,EAAO5rX,QAAQiZ,UAAU40W,SAASv0W,KAAKM,MAGlD,OADIA,KAAKsyW,WAAU7uW,EAAKywW,UAAYl0W,KAAKsyW,SAAS2B,YAC3CxwW,CACT,IAEF0hC,EAAO3gD,QAAUA,EAAiB,2CCrNlC,IAAI4kU,EAAyB7kU,EAAQ,MAErCC,EAAQwkU,YAAa,EACrBxkU,EAAAA,aAAkB,EAElB,IAAIgnB,EAAY49S,EAAuB7kU,EAAQ,OAE3CytX,EAAS5oD,EAAuB7kU,EAAQ,OAExCgsT,EAAW4jE,EAGf,SAASA,IACP,IAAInkW,EAAQhQ,KAEZ,KAAMA,gBAAgBm0W,GAAgB,OAAO,IAAIA,EAEjDnC,EAAO5rX,QAAQsZ,KAAKM,KAAM,CACxB1lB,KAAM,YAGR0lB,KAAKuyW,cAAa,WAChBviW,EAAMo0B,WAAU,SAAU7mD,GACxB,IAAKyiB,KAAKimR,OAAO1oS,GAAQ,CACvB,GAAI,cAAcuqB,KAAKvqB,GAAQ,OAAO,EACtC,GAAI,eAAeuqB,KAAKvqB,GAAQ,OAAO,CACzC,CAEA,OAAOA,CACT,GACF,GACF,CArBAiH,EAAAA,QAAkB+rT,GAuBlB,EAAI/kS,EAAUplB,SAAS+tX,EAAenC,EAAO5rX,QAAS,CACpDosX,WAAY,SAAoBp0K,GAE9B,OADIA,aAAa6zF,UAAS7zF,EAAIA,EAAEtrI,WACZ,mBAANsrI,CAChB,IAEFj5J,EAAO3gD,QAAUA,EAAiB,2CCvClC,IAAI4kU,EAAyB7kU,EAAQ,MAErCC,EAAQwkU,YAAa,EACrBxkU,EAAAA,aAAkB,EAElB,IAAIwtX,EAAS5oD,EAAuB7kU,EAAQ,OAExCinB,EAAY49S,EAAuB7kU,EAAQ,OAE3C6vX,EAAWhrD,EAAuB7kU,EAAQ,OAE1C0tX,EAAU1tX,EAAQ,MAElButX,EAAY1oD,EAAuB7kU,EAAQ,OAE3C8vX,EAAajrD,EAAuB7kU,EAAQ,OAE5C+vX,EAAc,IAAIh1X,KAAK,IAMvBixT,EAAWgkE,EAGf,SAASA,IACP,IAAIvkW,EAAQhQ,KAEZ,KAAMA,gBAAgBu0W,GAAa,OAAO,IAAIA,EAE9CvC,EAAO5rX,QAAQsZ,KAAKM,KAAM,CACxB1lB,KAAM,SAGR0lB,KAAKuyW,cAAa,WAChBviW,EAAMo0B,WAAU,SAAU7mD,GACxB,OAAIyiB,KAAKimR,OAAO1oS,GAAeA,GAC/BA,GAAQ,EAAI62X,EAAShuX,SAAS7I,IACf,IAAI+B,KAAK/B,GAAS+2X,CACnC,GACF,GACF,CAlBA9vX,EAAAA,QAAkB+rT,GAoBlB,EAAI/kS,EAAUplB,SAASmuX,EAAYvC,EAAO5rX,QAAS,CACjDosX,WAAY,SAAoBp0K,GAC9B,OA3ByB9wL,EA2BX8wL,EA1B+B,kBAAxCv/M,OAAOwgB,UAAUjkB,SAASskB,KAAK4N,KA0BfwM,MAAMskL,EAAEt6M,WA3BpB,IAAgBwpB,CA4B3B,EACAoT,IAAK,SAAaizV,EAAMrgX,QACN,IAAZA,IACFA,EAAU2+W,EAAQzzW,KAAKkiB,KAGzB,IAAIstC,EAAQ2lT,EAEZ,IAAKU,EAAWjuX,QAAQ4qX,MAAMhjT,KAC5BA,EAAQhuD,KAAK0wW,KAAKiD,IACb3zW,KAAKwyW,WAAWxkT,IAAQ,MAAM,IAAIruD,UAAU,kEAGnD,OAAOK,KAAK8H,KAAK,CACfxU,QAASA,EACTlb,KAAM,MACNw7X,WAAW,EACXtrW,OAAQ,CACNoY,IAAKizV,GAEP7rW,KAAM,SAAcvqB,GAClB,OAAO,EAAIu0X,EAAU1rX,SAAS7I,IAAUA,GAASyiB,KAAKtC,QAAQswD,EAChE,GAEJ,EACArtC,IAAK,SAAakzV,EAAMvgX,QACN,IAAZA,IACFA,EAAU2+W,EAAQzzW,KAAKmiB,KAGzB,IAAIqtC,EAAQ6lT,EAEZ,IAAKQ,EAAWjuX,QAAQ4qX,MAAMhjT,KAC5BA,EAAQhuD,KAAK0wW,KAAKmD,IACb7zW,KAAKwyW,WAAWxkT,IAAQ,MAAM,IAAIruD,UAAU,kEAGnD,OAAOK,KAAK8H,KAAK,CACfxU,QAASA,EACTlb,KAAM,MACNw7X,WAAW,EACXtrW,OAAQ,CACNqY,IAAKkzV,GAEP/rW,KAAM,SAAcvqB,GAClB,OAAO,EAAIu0X,EAAU1rX,SAAS7I,IAAUA,GAASyiB,KAAKtC,QAAQswD,EAChE,GAEJ,IAEF7oB,EAAO3gD,QAAUA,EAAiB,+CCjG9B4kU,EAAyB7kU,EAAQ,MAItBC,EAAQ,QAAwB,EAElC4kU,EAAuB7kU,EAAQ,OAErB6B,QAEvB,IAAIouX,EAAWprD,EAAuB7kU,EAAQ,OAE/BiwX,EAASpuX,QAExB,IAAIquX,EAAUrrD,EAAuB7kU,EAAQ,MAE7CC,EAAQ,GAASiwX,EAAQruX,QAEzB,IAAIsuX,EAAUtrD,EAAuB7kU,EAAQ,OAE7CC,EAAQ,GAASkwX,EAAQtuX,QAEzB,IAAIuuX,EAAQvrD,EAAuB7kU,EAAQ,OAE3CC,EAAQ,GAAOmwX,EAAMvuX,QAErB,IAAIwuX,EAAUxrD,EAAuB7kU,EAAQ,OAE7CC,EAAQ,GAASowX,EAAQxuX,QAEZgjU,EAAuB7kU,EAAQ,OAErB6B,QAEvB,IAAIiuX,EAAajrD,EAAuB7kU,EAAQ,OAE5CswX,EAAQzrD,EAAuB7kU,EAAQ,OAEpB6kU,EAAuB7kU,EAAQ,OAEX6B,QAE9BgjU,EAAuB7kU,EAAQ,OAErB6B,QAEvB,IAAI0pX,EAAY1mD,EAAuB7kU,EAAQ,OAE5BurX,EAAU1pX,QAEZgjU,EAAuB7kU,EAAQ,OAEjB6B,QACjBouX,EAASpuX,QAOvB5B,EAAQ,GAJE,SAAaxF,EAAK0hB,GAC1B,OAAO,IAAI2zW,EAAWjuX,QAAQpH,EAAK0hB,EACrC,qCC1DA,IAAI0oT,EAAyB7kU,EAAQ,MAErCC,EAAQwkU,YAAa,EACrBxkU,EAAAA,QAAkBA,EAAQ26E,MAAQ36E,EAAQgwN,OAAShwN,EAAQ0uR,QAAU1uR,EAAQga,KAAOha,EAAQuzE,OAASvzE,EAAQ0yI,OAAS1yI,EAAQkvX,WAAQ,EAEtI,IAAIlC,EAAcpoD,EAAuB7kU,EAAQ,OAE7CmvX,EAAQ,CACVttX,QAAS,qBACT/K,SAAU,8BACV8c,MAAO,yDACP28W,SAAU,6DACVC,QAAS,SAAiBv9X,GACxB,IAAI2qB,EAAO3qB,EAAK2qB,KACZ7nB,EAAO9C,EAAK8C,KACZiD,EAAQ/F,EAAK+F,MACb81X,EAAgB77X,EAAK67X,cACrB2B,EAA0B,MAAjB3B,GAAyBA,IAAkB91X,EACpDwxS,EAAM5sR,EAAO,eAAiB7nB,EAAxB6nB,sCAA4E,EAAIqvW,EAAYprX,SAAS7I,GAAO,GAAQ,KAAQy3X,EAAS,2BAA4B,EAAIxD,EAAYprX,SAASitX,GAAe,GAAQ,MAAQ,KAMnO,OAJc,OAAV91X,IACFwxS,GAAO,0FAGFA,CACT,GAEFvqS,EAAQkvX,MAAQA,EAChB,IAAIx8O,EAAS,CACXj/I,OAAQ,+CACRyoC,IAAK,6CACLC,IAAK,4CACLlb,QAAS,+CACT/W,MAAO,gCACPlI,IAAK,8BACLy0D,KAAM,mCACNg6T,UAAW,qCACXC,UAAW,uCAEb1wX,EAAQ0yI,OAASA,EACjB,IAAIn/D,EAAS,CACXr3C,IAAK,kDACLC,IAAK,+CACLo/G,SAAU,oCACVo1O,SAAU,uCACVl1O,SAAU,2CACVm1O,SAAU,oCACVC,SAAU,oCACV1oV,QAAS,8BAEXnoC,EAAQuzE,OAASA,EACjB,IAAIv5D,EAAO,CACTkiB,IAAK,0CACLC,IAAK,gDAEPn8B,EAAQga,KAAOA,EACf,IAAI00Q,EAAU,CAAC,EACf1uR,EAAQ0uR,QAAUA,EAClB,IAAI1+D,EAAS,CACX8gK,UAAW,oEAEb9wX,EAAQgwN,OAASA,EACjB,IAAIr1I,EAAQ,CACVz+C,IAAK,gDACLC,IAAK,8DAEPn8B,EAAQ26E,MAAQA,EAChB,IAAIoxO,EAAW,CACbmjE,MAAOA,EACPx8O,OAAQA,EACRn/D,OAAQA,EACRv5D,KAAMA,EACNg2M,OAAQA,EACRr1I,MAAOA,EACP+zM,QAASA,GAEX1uR,EAAAA,QAAkB+rT,qCC5ElB,IAAI6Y,EAAyB7kU,EAAQ,MAErCC,EAAQwkU,YAAa,EACrBxkU,EAAAA,QAAkB+wX,EAElB,IAAI3D,EAAYxoD,EAAuB7kU,EAAQ,OAE3CsrX,EAAOzmD,EAAuB7kU,EAAQ,OAEtCixX,EAAiBpsD,EAAuB7kU,EAAQ,KAEhDkxX,EAAYrsD,EAAuB7kU,EAAQ,OAE3C0tX,EAAU1tX,EAAQ,MAElBmxX,EAAatsD,EAAuB7kU,EAAQ,OAE5C2tX,EAAkB9oD,EAAuB7kU,EAAQ,OAEjDoxX,EAASvsD,EAAuB7kU,EAAQ,OAExCurX,EAAY1mD,EAAuB7kU,EAAQ,OAE3CutX,EAAY1oD,EAAuB7kU,EAAQ,OAE3CqxX,EAAoBxsD,EAAuB7kU,EAAQ,OAEnDitX,EAAcpoD,EAAuB7kU,EAAQ,OAE7C8vX,EAAajrD,EAAuB7kU,EAAQ,OAE5CsxX,EAAStxX,EAAQ,MAEjBuxX,EAAW,SAAkBv4X,GAC/B,QAAQ,EAAIu0X,EAAU1rX,SAAS7I,EACjC,EAEIw4X,EAEJ,WACE,SAASA,IACP/1W,KAAKi5B,KAAO,IAAI10B,IAChBvE,KAAKo/Q,KAAO,IAAI5/Q,GAClB,CAEA,IAAI8wW,EAASyF,EAAO12W,UA0BpB,OAxBAixW,EAAOjxG,QAAU,WACf,OAAO,EAAIo2G,EAAUrvX,SAAS4Z,KAAKi5B,MAAMt4C,QAAO,EAAI80X,EAAUrvX,SAAS4Z,KAAKo/Q,KAAK3gS,UACnF,EAEA6xX,EAAOn7U,IAAM,SAAa53C,GACxB82X,EAAWjuX,QAAQ4qX,MAAMzzX,GAASyiB,KAAKo/Q,KAAKv/Q,IAAItiB,EAAMyB,IAAKzB,GAASyiB,KAAKi5B,KAAK9D,IAAI53C,EACpF,EAEA+yX,EAAO1/W,OAAS,SAAiBrT,GAC/B82X,EAAWjuX,QAAQ4qX,MAAMzzX,GAASyiB,KAAKo/Q,KAAKxuR,OAAOrT,EAAMyB,IAAKzB,GAASyiB,KAAKi5B,KAAKroC,OAAOrT,EAC1F,EAEA+yX,EAAO1wW,IAAM,SAAariB,EAAOmgB,GAC/B,GAAIsC,KAAKi5B,KAAKr5B,IAAIriB,GAAQ,OAAO,EAIjC,IAHA,IAAI6N,EACA3M,EAASuhB,KAAKo/Q,KAAK3gS,WAEhB2M,EAAO3M,EAAOq/E,QAAc1gF,MACjC,GAAIsgB,EAAQtS,EAAK7N,SAAWA,EAAO,OAAO,EAG5C,OAAO,CACT,EAEOw4X,CACT,CAjCA,GAmCA,SAASR,EAAW70W,GAClB,IAAIsP,EAAQhQ,KAMZ,QAJgB,IAAZU,IACFA,EAAU,CAAC,KAGPV,gBAAgBu1W,GAAa,OAAO,IAAIA,EAC9Cv1W,KAAKg2W,MAAQ,GACbh2W,KAAKi2W,YAAc,GACnBj2W,KAAKk2W,SAAW,CACdzmF,YAAY,EACZ2jF,WAAW,GAEbpzW,KAAKm2W,WAAat3X,OAAOqhB,OAAO,MAChCF,KAAKo2W,WAAa,IAAIL,EACtB/1W,KAAKq2W,WAAa,IAAIN,EACtB/1W,KAAKs2W,MAAQ,GACbt2W,KAAKu2W,WAAa,GAClBv2W,KAAKuyW,cAAa,WAChBviW,EAAMwmW,UAAUvE,EAAQyB,MAAMqB,QAChC,KACI,EAAIlF,EAAKzpX,SAASsa,EAAS,aAAYV,KAAKy2W,gBAAkB/1W,EAAQta,SAC1E4Z,KAAK02W,MAAQh2W,EAAQpmB,MAAQ,OAC/B,CAwbA,IAtbA,IAAI2jS,EAAQs3F,EAAWl2W,UAAY,CACjCwxW,iBAAiB,EACjB5wW,YAAas1W,EACbrmW,MAAO,WACL,IAAI0jW,EAAS5yW,KAEb,OAAIA,KAAK22W,QAAgB32W,MAGlB,EAAIw1W,EAAepvX,SAAS4Z,MAAM,SAAUziB,GACjD,IAAI,EAAIuyX,EAAU1pX,SAAS7I,IAAUA,IAAUq1X,EAAQ,OAAOr1X,CAChE,GACF,EACA3E,MAAO,SAAeg+X,GACpB,IAAI94S,EAAO99D,KAAKkP,QAEhB,OADA4uD,EAAK84S,OAASA,EACP94S,CACT,EACAx4D,KAAM,SAAcgI,GAClB,GAAyB,IAArBjP,UAAUpmB,OAAc,OAAO+nB,KAAK62W,MACxC,IAAI/4S,EAAO99D,KAAKkP,QAEhB,OADA4uD,EAAK+4S,OAAQ,EAAIjF,EAAUxrX,SAAS03E,EAAK+4S,OAAS,CAAC,EAAGvpW,GAC/CwwD,CACT,EACAy0S,aAAc,SAAsB9yW,GAClCO,KAAK22W,SAAU,EACf,IAAIv3X,EAASqgB,EAAGO,MAEhB,OADAA,KAAK22W,SAAU,EACRv3X,CACT,EACAuB,OAAQ,SAAgBqK,GACtB,IAAKA,EAAQ,OAAOgV,KACpB,GAAIhV,EAAO0rX,QAAU12W,KAAK02W,OAAwB,UAAf12W,KAAK02W,MAAmB,MAAM,IAAI/2W,UAAU,sDAAwDK,KAAK02W,MAAQ,QAAU1rX,EAAO0rX,OACrK,IAAIrmR,EAASrwF,KAAKkP,QACd4uD,GAAO,EAAI63S,EAAOvvX,SAAS4Z,KAAKkP,QAASlkB,EAAOkkB,SAWpD,OATI,EAAI2gW,EAAKzpX,SAAS4E,EAAQ,cAAa8yE,EAAKyyO,SAAWvlT,EAAOulT,UAClEzyO,EAAKw4S,MAAQjmR,EAAOimR,MACpBx4S,EAAKq4S,WAAa9lR,EAAO8lR,WAGzBnrX,EAAOsrX,MAAMv3X,SAAQ,SAAU0gB,GAC7Bq+D,EAAOA,EAAKh2D,KAAKrI,EAAGq3W,QACtB,IACAh5S,EAAK44S,MAAQ1rX,EAAO0rX,MACb54S,CACT,EACAmoN,OAAQ,SAAgB7nF,GACtB,SAAIp+L,KAAK+2W,WAAmB,OAAN34K,MACdp+L,KAAKwyW,YAAcxyW,KAAKwyW,WAAWp0K,GAC7C,EACA1gM,QAAS,SAAiBlmB,GACxB,IAAIsJ,EAAUtJ,EAAKsJ,QACfuvB,EAAS74B,EAAK64B,OAElB,OAAIrQ,KAAKi2W,YAAYh+X,OACZ+nB,KAAKi2W,YAAYruW,QAAO,SAAU5c,EAAQod,GAC/C,OAAOA,EAAM1K,QAAQ1S,EAAQod,EAAMgF,SAASiD,EAAQvvB,GACtD,GAAGkf,MAGEA,IACT,EACA0wW,KAAM,SAAcnzX,EAAOmjB,QACT,IAAZA,IACFA,EAAU,CAAC,GAGb,IAAIs2W,EAAiBh3W,KAAKtC,QAAQgD,GAE9BthB,EAAS43X,EAAevE,MAAMl1X,EAAOmjB,GAEzC,QAAcxlB,IAAVqC,IAA0C,IAAnBmjB,EAAQ0iS,SAAsD,IAAlC4zE,EAAe/wF,OAAO7mS,GAAkB,CAC7F,IAAI+3O,GAAiB,EAAIq6I,EAAYprX,SAAS7I,GAC1C05X,GAAkB,EAAIzF,EAAYprX,SAAShH,GAC/C,MAAM,IAAIugB,UAAU,iBAAmBe,EAAQyB,MAAQ,SAAnC,kEAAyH60W,EAAeN,MAAxI,2BAAqLv/I,EAAiB,OAAU8/I,IAAoB9/I,EAAiB,mBAAqB8/I,EAAkB,IAClT,CAEA,OAAO73X,CACT,EACAqzX,MAAO,SAAer8F,GACpB,IAAI48F,EAAShzW,KAETziB,OAAqBrC,IAAbk7R,EAAyBA,EAAWp2Q,KAAKu2W,WAAW3uW,QAAO,SAAUrqB,EAAOkiB,GACtF,OAAOA,EAAGC,KAAKszW,EAAQz1X,EAAO64R,EAChC,GAAGA,GAMH,YAJcl7R,IAAVqC,IAAuB,EAAIsyX,EAAKzpX,SAAS4Z,KAAM,cACjDziB,EAAQyiB,KAAK5Z,WAGR7I,CACT,EACAw1X,UAAW,SAAmBL,EAAQhyW,GACpC,IAAIqzW,EAAS/zW,UAEG,IAAZU,IACFA,EAAU,CAAC,GAGb,IAAInjB,EAAQm1X,EACRW,EAAyC,MAAzB3yW,EAAQ2yW,cAAwB3yW,EAAQ2yW,cAAgBX,EAExEwE,EAAWl3W,KAAKmzW,QAAQ,SAAUzyW,GAElCwyW,EAAWlzW,KAAKmzW,QAAQ,aAAczyW,GAEtC4uR,EAAO5uR,EAAQ4uR,KACfntR,EAAOzB,EAAQyB,KACfvpB,EAAQonB,KAAK42W,OAEZM,IACH35X,EAAQyiB,KAAKyyW,MAAMl1X,GAAO,EAAIq0X,EAAUxrX,SAAS,CAC/Cg9S,QAAQ,GACP1iS,KAIL,IAAIy2W,EAAmB,CACrB55X,MAAOA,EACP4kB,KAAMA,EACNnX,OAAQgV,KACRU,QAASA,EACT9nB,MAAOA,EACPy6X,cAAeA,EACf/jF,KAAMA,GAEJ8nF,EAAe,GAInB,OAHIp3W,KAAKq3W,YAAYD,EAAa33X,KAAKugB,KAAKq3W,WAAWF,IACnDn3W,KAAKs3W,iBAAiBF,EAAa33X,KAAKugB,KAAKs3W,gBAAgBH,IAC7Dn3W,KAAKu3W,iBAAiBH,EAAa33X,KAAKugB,KAAKu3W,gBAAgBJ,KAC1D,EAAIjF,EAAgB9rX,SAAS,CAClCmtX,YAAa6D,EACblE,SAAUA,EACV31X,MAAOA,EACP4kB,KAAMA,EACNmtR,KAAMA,IACLnoS,MAAK,SAAU5J,GAChB,OAAO,EAAI20X,EAAgB9rX,SAAS,CAClC+b,KAAMA,EACNmtR,KAAMA,EACN/xS,MAAOA,EACP21X,SAAUA,EACVK,YAAaQ,EAAOuC,MAAMx2X,KAAI,SAAU2f,GACtC,OAAOA,EAAG03W,EACZ,KAEJ,GACF,EACA71X,SAAU,SAAkB/D,EAAOmjB,GAMjC,YALgB,IAAZA,IACFA,EAAU,CAAC,GAGAV,KAAKtC,QAAQgD,GACZqyW,UAAUx1X,EAAOmjB,EACjC,EACAiwW,aAAc,SAAsBpzX,EAAOmjB,GAKzC,IACIthB,EAAQtB,EAUZ,QAfgB,IAAZ4iB,IACFA,EAAU,CAAC,GAGAV,KAAKtC,QAAQgD,GAGnBqyW,UAAUx1X,GAAO,EAAIq0X,EAAUxrX,SAAS,CAAC,EAAGsa,EAAS,CAC1D4uR,MAAM,KACJnoS,MAAK,SAAUN,GACjB,OAAOzH,EAASyH,CAClB,IAAGQ,OAAM,SAAU5L,GACjB,OAAOqC,EAAMrC,CACf,IAEIqC,EAAK,MAAMA,EACf,OAAOsB,CACT,EACA2W,QAAS,SAAiBxY,EAAOmjB,GAC/B,OAAOV,KAAK1e,SAAS/D,EAAOmjB,GAASvZ,MAAK,WACxC,OAAO,CACT,IAAGE,OAAM,SAAUvJ,GACjB,GAAiB,oBAAbA,EAAI1F,KAA4B,OAAO,EAC3C,MAAM0F,CACR,GACF,EACA05X,YAAa,SAAqBj6X,EAAOmjB,GACvC,IAEE,OADAV,KAAK2wW,aAAapzX,GAAO,EAAIq0X,EAAUxrX,SAAS,CAAC,EAAGsa,KAC7C,CACT,CAAE,MAAO5iB,GACP,GAAiB,oBAAbA,EAAI1F,KAA4B,OAAO,EAC3C,MAAM0F,CACR,CACF,EACA25X,WAAY,SAAoB/2W,GAM9B,YALgB,IAAZA,IACFA,EAAU,CAAC,GAGAV,KAAKtC,QAAQgD,GACZta,SAChB,EACAA,QAAS,SAAkB0zH,GACzB,GAAyB,IAArBz7G,UAAUpmB,OAAc,CAC1B,IAAIkkD,GAAe,EAAI0zU,EAAKzpX,SAAS4Z,KAAM,YAAcA,KAAKuwS,SAAWvwS,KAAKy2W,gBAC9E,MAA+B,oBAAjBt6U,EAA8BA,EAAaz8B,KAAKM,OAAQ,EAAIw1W,EAAepvX,SAAS+1C,EACpG,CAEA,IAAI2hC,EAAO99D,KAAKkP,QAEhB,OADA4uD,EAAKyyO,SAAWz2L,EACTh8C,CACT,EACA21S,OAAQ,WACN,IAAI31S,EAAO99D,KAAKkP,QAEhB,OADA4uD,EAAKo4S,SAASzC,QAAS,EAChB31S,CACT,EACAziF,SAAU,SAAkBiY,GAK1B,YAJgB,IAAZA,IACFA,EAAU2+W,EAAQyB,MAAMr4X,UAGnB2kB,KAAK8H,KAAK,CACfxU,QAASA,EACTlb,KAAM,WACN0vB,KAAMguW,GAEV,EACA4B,YAAa,WACX,IAAI55S,EAAO99D,KAAKkP,QAIhB,OAHA4uD,EAAKw4S,MAAQx4S,EAAKw4S,MAAMn4X,QAAO,SAAU2pB,GACvC,MAA6B,aAAtBA,EAAKgvW,QAAQ1+X,IACtB,IACO0lF,CACT,EACAjgF,SAAU,SAAkBN,GAC1B,IAAIugF,EAAO99D,KAAKkP,QAEhB,OADA4uD,EAAKi5S,WAAsB,IAAVx5X,EACVugF,CACT,EACA15B,UAAW,SAAmB3kC,GAC5B,IAAIq+D,EAAO99D,KAAKkP,QAEhB,OADA4uD,EAAKy4S,WAAW92X,KAAKggB,GACdq+D,CACT,EAeAh2D,KAAM,WACJ,IAAK,IAAIysR,EAAOl2R,UAAUpmB,OAAQgW,EAAO,IAAIwgB,MAAM8lR,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/EvmS,EAAKumS,GAAQn2R,UAAUm2R,GAGzB,IAAI7b,EAAO1qR,EAAK,GAEhB,GAAIA,EAAKhW,OAAS,EAAG,CACnB,IAAIG,EAAO6V,EAAK,GACZqF,EAAUrF,EAAK,GACf6Z,EAAO7Z,EAAK,GAEJ,MAAR6Z,IACFA,EAAOxU,EACPA,EAAU2+W,EAAQyB,MAAMttX,SAG1BuyR,EAAO,CACLvgS,KAAMA,EACN0vB,KAAMA,EACNxU,QAASA,EACTsgX,WAAW,EAEf,CAEA,GAAyB,oBAAdj7F,EAAK7wQ,KAAqB,MAAM,IAAInI,UAAU,mCACzD,IAAIm+D,EAAO99D,KAAKkP,QACZ5tB,GAAW,EAAIs0X,EAAkBxvX,SAASuyR,GAC1Cg/F,EAAch/F,EAAKi7F,WAAaj7F,EAAKvgS,OAAuC,IAA/B0lF,EAAKq4S,WAAWx9F,EAAKvgS,MAEtE,GAAIugS,EAAKi7F,YAAcj7F,EAAKvgS,KAC1B,MAAM,IAAIunB,UAAU,qEAatB,OAVAm+D,EAAKq4S,WAAWx9F,EAAKvgS,QAAUugS,EAAKi7F,UACpC91S,EAAKw4S,MAAQx4S,EAAKw4S,MAAMn4X,QAAO,SAAUshB,GACvC,GAAIA,EAAGq3W,QAAQ1+X,OAASugS,EAAKvgS,KAAM,CACjC,GAAIu/X,EAAa,OAAO,EACxB,GAAIl4W,EAAGq3W,QAAQhvW,OAASxmB,EAASw1X,QAAQhvW,KAAM,OAAO,CACxD,CAEA,OAAO,CACT,IACAg2D,EAAKw4S,MAAM72X,KAAK6B,GACTw8E,CACT,EACAwuO,KAAM,SAAcxtT,EAAM4hB,GACxB,IAAIo9D,EAAO99D,KAAKkP,QACZy1U,EAAO,GAAGhkW,OAAO7B,GAAMgB,KAAI,SAAUd,GACvC,OAAO,IAAIq1X,EAAWjuX,QAAQpH,EAChC,IAOA,OANA2lW,EAAK5lW,SAAQ,SAAU64X,GAChBA,EAAIxG,WAAWtzS,EAAKk4S,MAAMv2X,KAAKm4X,EAAI54X,IAC1C,IAEA8+E,EAAKm4S,YAAYx2X,KAAK,IAAIi2X,EAAWtvX,QAAQu+V,EAAMjkV,IAE5Co9D,CACT,EACA04S,UAAW,SAAmBljX,GAC5B,IAAIwqE,EAAO99D,KAAKkP,QAahB,OAZA4uD,EAAKu5S,YAAa,EAAIzB,EAAkBxvX,SAAS,CAC/CkN,QAASA,EACTlb,KAAM,YACN0vB,KAAM,SAAcvqB,GAClB,aAAcrC,IAAVqC,IAAwByiB,KAAKhV,OAAOi7R,OAAO1oS,KAAeyiB,KAAK4wQ,YAAY,CAC7EtoQ,OAAQ,CACNhuB,KAAM0lB,KAAKhV,OAAO0rX,QAIxB,IAEK54S,CACT,EACA3lE,MAAO,SAAe0/W,EAAOvkX,QACX,IAAZA,IACFA,EAAU2+W,EAAQyB,MAAMv7W,OAG1B,IAAI2lE,EAAO99D,KAAKkP,QAmBhB,OAlBA2oW,EAAM94X,SAAQ,SAAU4e,GACtBmgE,EAAKs4S,WAAWjhV,IAAIx3B,GAEpBmgE,EAAKu4S,WAAWzlX,OAAO+M,EACzB,IACAmgE,EAAKw5S,iBAAkB,EAAI1B,EAAkBxvX,SAAS,CACpDkN,QAASA,EACTlb,KAAM,QACN0vB,KAAM,SAAcvqB,GAClB,QAAcrC,IAAVqC,EAAqB,OAAO,EAChC,IAAIu6X,EAAS93W,KAAKhV,OAAOorX,WACzB,QAAO0B,EAAOl4W,IAAIriB,EAAOyiB,KAAKtC,UAAkBsC,KAAK4wQ,YAAY,CAC/DtoQ,OAAQ,CACN7pB,OAAQq5X,EAAOz4G,UAAUp4P,KAAK,QAGpC,IAEK62D,CACT,EACAg3S,SAAU,SAAkB+C,EAAOvkX,QACjB,IAAZA,IACFA,EAAU2+W,EAAQyB,MAAMoB,UAG1B,IAAIh3S,EAAO99D,KAAKkP,QAmBhB,OAlBA2oW,EAAM94X,SAAQ,SAAU4e,GACtBmgE,EAAKu4S,WAAWlhV,IAAIx3B,GAEpBmgE,EAAKs4S,WAAWxlX,OAAO+M,EACzB,IACAmgE,EAAKy5S,iBAAkB,EAAI3B,EAAkBxvX,SAAS,CACpDkN,QAASA,EACTlb,KAAM,WACN0vB,KAAM,SAAcvqB,GAClB,IAAIw6X,EAAW/3W,KAAKhV,OAAOqrX,WAC3B,OAAI0B,EAASn4W,IAAIriB,EAAOyiB,KAAKtC,UAAiBsC,KAAK4wQ,YAAY,CAC7DtoQ,OAAQ,CACN7pB,OAAQs5X,EAAS14G,UAAUp4P,KAAK,QAItC,IAEK62D,CACT,EACAk6S,MAAO,SAAeC,QACL,IAAXA,IACFA,GAAS,GAGX,IAAIn6S,EAAO99D,KAAKkP,QAEhB,OADA4uD,EAAKm6S,OAASA,EACPn6S,CACT,EACAq1S,QAAS,SAAiBn0X,EAAKk5X,GAC7B,OAAO,EAAIrI,EAAKzpX,SAAS8xX,EAAWl5X,GAAOk5X,EAAUl5X,GAAOghB,KAAKk2W,SAASl3X,EAC5E,EACAi1X,SAAU,WACR,IAAIn2S,EAAO99D,KAAKkP,QAChB,MAAO,CACL50B,KAAMwjF,EAAK44S,MACXpxW,KAAMw4D,EAAK+4S,MACXj+X,MAAOklF,EAAK84S,OACZN,MAAOx4S,EAAKw4S,MAAMx2X,KAAI,SAAU2f,GAC9B,MAAO,CACLrnB,KAAMqnB,EAAGq3W,QAAQ1+X,KACjBkwB,OAAQ7I,EAAGq3W,QAAQxuW,OAEvB,IAAGnqB,QAAO,SAAUhB,EAAGukB,EAAKu3B,GAC1B,OAAOA,EAAK+sU,WAAU,SAAU/vV,GAC9B,OAAOA,EAAE79B,OAAS+E,EAAE/E,IACtB,MAAOspB,CACT,IAEJ,GAEEg9V,EAAO,CAAC,WAAY,gBAEpByZ,EAAQ,WACV,IAAIjnV,EAASwtU,EAAKnwV,GAElB0vQ,EAAM/sP,EAAS,MAAQ,SAAU/uB,EAAM5kB,EAAOmjB,QAC5B,IAAZA,IACFA,EAAU,CAAC,GAGb,IAAI03W,GAAS,EAAIvC,EAAOhpF,OAAO7sR,KAAMmC,EAAM5kB,EAAOmjB,EAAQ5f,SACtDuvB,EAAS+nW,EAAO/nW,OAChBxK,EAAauyW,EAAOvyW,WAGxB,OAFauyW,EAAOptX,OAENkmC,GAAQ7gB,GAAUA,EAAOxK,IAAa,EAAI+rW,EAAUxrX,SAAS,CAAC,EAAGsa,EAAS,CACtF2P,OAAQA,EACRlO,KAAMA,IAEV,CACF,EAESoM,EAAK,EAAGA,EAAKmwV,EAAKzmX,OAAQs2B,IACjC4pW,IAKF,IAFA,IAAIxZ,EAAQ,CAAC,SAAU,MAEdC,EAAM,EAAGA,EAAMD,EAAM1mX,OAAQ2mX,IAAO,CAE3C3gF,EADY0gF,EAAMC,IACH3gF,EAAM9lR,KACvB,CAIA,IAFA,IAAIkgX,EAAQ,CAAC,MAAO,QAEXC,EAAM,EAAGA,EAAMD,EAAMpgY,OAAQqgY,IAAO,CAE3Cr6F,EADao6F,EAAMC,IACHr6F,EAAM62F,QACxB,CAEA3vU,EAAO3gD,QAAUA,EAAiB,2CC5iBlC,IAAI4kU,EAAyB7kU,EAAQ,MAErCC,EAAQwkU,YAAa,EACrBxkU,EAAAA,QAAkB+zX,EAElB,IAAI/sW,EAAY49S,EAAuB7kU,EAAQ,OAE3CytX,EAAS5oD,EAAuB7kU,EAAQ,OAExC0tX,EAAU1tX,EAAQ,MAElButX,EAAY1oD,EAAuB7kU,EAAQ,OAM3C6rN,EAAY,SAAmBzyM,GACjC,OAAO,EAAIm0W,EAAU1rX,SAASuX,IAAQA,KAAe,EAANA,EACjD,EAEA,SAAS46W,IACP,IAAIvoW,EAAQhQ,KAEZ,KAAMA,gBAAgBu4W,GAAe,OAAO,IAAIA,EAEhDvG,EAAO5rX,QAAQsZ,KAAKM,KAAM,CACxB1lB,KAAM,WAGR0lB,KAAKuyW,cAAa,WAChBviW,EAAMo0B,WAAU,SAAU7mD,GACxB,IAAIstG,EAASttG,EAEb,GAAsB,kBAAXstG,EAAqB,CAE9B,GAAe,MADfA,EAASA,EAAOp0F,QAAQ,MAAO,KACZ,OAAOsvB,IAE1B8kE,GAAUA,CACZ,CAEA,OAAI7qF,KAAKimR,OAAOp7L,GAAgBA,EACzB5kE,WAAW4kE,EACpB,GACF,GACF,EAEA,EAAIr/E,EAAUplB,SAASmyX,EAAcvG,EAAO5rX,QAAS,CACnDosX,WAAY,SAAoBj1X,GAE9B,OADIA,aAAiBjE,SAAQiE,EAAQA,EAAMu1E,WACnB,kBAAVv1E,IArCN,SAAeA,GACzB,OAAOA,IAAUA,CACnB,CAmCyCu8B,CAAMv8B,EAC7C,EACAmjC,IAAK,SAAaizV,EAAMrgX,GAKtB,YAJgB,IAAZA,IACFA,EAAU2+W,EAAQl6S,OAAOr3C,KAGpB1gB,KAAK8H,KAAK,CACfxU,QAASA,EACTlb,KAAM,MACNw7X,WAAW,EACXtrW,OAAQ,CACNoY,IAAKizV,GAEP7rW,KAAM,SAAcvqB,GAClB,OAAO,EAAIu0X,EAAU1rX,SAAS7I,IAAUA,GAASyiB,KAAKtC,QAAQi2W,EAChE,GAEJ,EACAhzV,IAAK,SAAakzV,EAAMvgX,GAKtB,YAJgB,IAAZA,IACFA,EAAU2+W,EAAQl6S,OAAOp3C,KAGpB3gB,KAAK8H,KAAK,CACfxU,QAASA,EACTlb,KAAM,MACNw7X,WAAW,EACXtrW,OAAQ,CACNqY,IAAKkzV,GAEP/rW,KAAM,SAAcvqB,GAClB,OAAO,EAAIu0X,EAAU1rX,SAAS7I,IAAUA,GAASyiB,KAAKtC,QAAQm2W,EAChE,GAEJ,EACA9zO,SAAU,SAAkBy4O,EAAMllX,GAKhC,YAJgB,IAAZA,IACFA,EAAU2+W,EAAQl6S,OAAOgoE,UAGpB//H,KAAK8H,KAAK,CACfxU,QAASA,EACTlb,KAAM,MACNw7X,WAAW,EACXtrW,OAAQ,CACNkwW,KAAMA,GAER1wW,KAAM,SAAcvqB,GAClB,OAAO,EAAIu0X,EAAU1rX,SAAS7I,IAAUA,EAAQyiB,KAAKtC,QAAQ86W,EAC/D,GAEJ,EACArD,SAAU,SAAkBsD,EAAMnlX,GAKhC,YAJgB,IAAZA,IACFA,EAAU2+W,EAAQl6S,OAAOo9S,UAGpBn1W,KAAK8H,KAAK,CACfxU,QAASA,EACTlb,KAAM,MACNw7X,WAAW,EACXtrW,OAAQ,CACNmwW,KAAMA,GAER3wW,KAAM,SAAcvqB,GAClB,OAAO,EAAIu0X,EAAU1rX,SAAS7I,IAAUA,EAAQyiB,KAAKtC,QAAQ+6W,EAC/D,GAEJ,EACArD,SAAU,SAAkBrmF,GAK1B,YAJY,IAARA,IACFA,EAAMkjF,EAAQl6S,OAAOq9S,UAGhBp1W,KAAKm1W,SAAS,EAAGpmF,EAC1B,EACAsmF,SAAU,SAAkBtmF,GAK1B,YAJY,IAARA,IACFA,EAAMkjF,EAAQl6S,OAAOs9S,UAGhBr1W,KAAK+/H,SAAS,EAAGgvJ,EAC1B,EACApiQ,QAAS,SAAiBr5B,GAKxB,YAJgB,IAAZA,IACFA,EAAU2+W,EAAQl6S,OAAOprC,SAGpB3sB,KAAK8H,KAAK,CACf1vB,KAAM,UACNkb,QAASA,EACTwU,KAAMsoM,GAEV,EACAk5F,SAAU,WACR,OAAOtpS,KAAKokC,WAAU,SAAU7mD,GAC9B,OAAQ,EAAIu0X,EAAU1rX,SAAS7I,GAAqBA,EAAJ,EAARA,CAC1C,GACF,EACA6zF,MAAO,SAAelgD,GACpB,IAAIwnV,EAAQ,CAAC,OAAQ,QAAS,QAAS,SAGvC,GAAe,WAFfxnV,EAASA,GAAUA,EAAO7yC,eAAiB,SAEnB,OAAO2hB,KAAKspS,WACpC,IAA6C,IAAzCovE,EAAMpiX,QAAQ46B,EAAO7yC,eAAuB,MAAM,IAAIshB,UAAU,uCAAyC+4W,EAAMzxW,KAAK,OACxH,OAAOjH,KAAKokC,WAAU,SAAU7mD,GAC9B,OAAQ,EAAIu0X,EAAU1rX,SAAS7I,GAA+BA,EAAtBskB,KAAKqvB,GAAQ3zC,EACvD,GACF,IAEF4nD,EAAO3gD,QAAUA,EAAiB,2CCjKlC,IAAI2zW,EAA0B5zW,EAAQ,KAElC6kU,EAAyB7kU,EAAQ,MAErCC,EAAQwkU,YAAa,EACrBxkU,EAAAA,QAAkBm0X,EAElB,IAAI9G,EAA+BzoD,EAAuB7kU,EAAQ,OAE9DqtX,EAAYxoD,EAAuB7kU,EAAQ,OAE3CsrX,EAAOzmD,EAAuB7kU,EAAQ,OAEtCq0X,EAAcxvD,EAAuB7kU,EAAQ,OAE7Cs0X,EAAczvD,EAAuB7kU,EAAQ,MAE7Cu0X,EAAW1vD,EAAuB7kU,EAAQ,OAE1Cw0X,EAAa3vD,EAAuB7kU,EAAQ,OAE5CusX,EAAgBvsX,EAAQ,MAExBytX,EAAS5oD,EAAuB7kU,EAAQ,OAExC0tX,EAAU1tX,EAAQ,MAElBy0X,EAAc5vD,EAAuB7kU,EAAQ,OAE7C00X,EAAkB7vD,EAAuB7kU,EAAQ,MAEjDinB,EAAY49S,EAAuB7kU,EAAQ,OAE3CwtX,EAAY3oD,EAAuB7kU,EAAQ,OAE3C2tX,EAAkB/Z,EAAwB5zW,EAAQ,OAEtD,SAAS20X,IACP,IAAIrzX,GAAO,EAAIgsX,EAA6BzrX,SAAS,CAAC,GAAI,IAAK,KAM/D,OAJA8yX,EAAmB,WACjB,OAAOrzX,CACT,EAEOA,CACT,CAEA,SAASssX,IACP,IAAItsX,GAAO,EAAIgsX,EAA6BzrX,SAAS,CAAC,GAAI,IAAK,KAM/D,OAJA+rX,EAAkB,WAChB,OAAOtsX,CACT,EAEOA,CACT,CAEA,IAAIioB,EAAW,SAAkBR,GAC/B,MAA+C,oBAAxCzuB,OAAOwgB,UAAUjkB,SAASskB,KAAK4N,EACxC,EASA,SAASqrW,EAAa36F,GACpB,IAAI40F,EAAS5yW,KAEb,KAAMA,gBAAgB24W,GAAe,OAAO,IAAIA,EAAa36F,GAE7Dg0F,EAAO5rX,QAAQsZ,KAAKM,KAAM,CACxB1lB,KAAM,SACN8L,QAAS,WACP,IAAI4pB,EAAQhQ,KAEZ,GAAKA,KAAKm5W,OAAOlhY,OAAjB,CACA,IAAImhY,EAAM,CAAC,EAMX,OAJAp5W,KAAKm5W,OAAOp6X,SAAQ,SAAUC,GAC5Bo6X,EAAIp6X,GAAOgxB,EAAMntB,OAAO7D,GAAKoH,QAAU4pB,EAAMntB,OAAO7D,GAAKoH,eAAYlL,CACvE,IAEOk+X,CAPkC,CAQ3C,IAGFp5W,KAAKnd,OAAShE,OAAOqhB,OAAO,MAC5BF,KAAKm5W,OAAS,GACdn5W,KAAKq5W,eAAiB,GACtBr5W,KAAKuyW,cAAa,WAChBK,EAAOxuU,WAAU,SAAgB7mD,GAC/B,GAAqB,kBAAVA,EACT,IACEA,EAAQ+e,KAAKC,MAAMhf,EACrB,CAAE,MAAOO,GACPP,EAAQ,IACV,CAGF,OAAIyiB,KAAKimR,OAAO1oS,GAAeA,EACxB,IACT,IAEIygS,GACF40F,EAAOz6C,MAAMn6C,EAEjB,GACF,EAEA,EAAIxyQ,EAAUplB,SAASuyX,EAAc3G,EAAO5rX,QAAS,CACnDosX,WAAY,SAAoBj1X,GAC9B,OAAOuwB,EAASvwB,IAA2B,oBAAVA,CACnC,EACAk1X,MAAO,SAAeC,EAAQhyW,GAC5B,IAAIsyW,EAAShzW,UAEG,IAAZU,IACFA,EAAU,CAAC,GAGb,IAAInjB,EAAQy0X,EAAO5rX,QAAQiZ,UAAUozW,MAAM/yW,KAAKM,KAAM0yW,EAAQhyW,GAG9D,QAAcxlB,IAAVqC,EAAqB,OAAOyiB,KAAK5Z,UACrC,IAAK4Z,KAAKwyW,WAAWj1X,GAAQ,OAAOA,EACpC,IAAIsF,EAASmd,KAAKnd,OACdm1X,GAAkD,IAA1Ch4W,KAAKmzW,QAAQ,eAAgBzyW,GAErCve,EAAQ6d,KAAKm5W,OAAOx4X,OAAO9B,OAAOC,KAAKvB,GAAOY,QAAO,SAAUigN,GACjE,OAAqC,IAA9B40K,EAAOmG,OAAO7iX,QAAQ8nM,EAC/B,KAEIk7K,EAAoB,CAAC,EAErB9F,GAAe,EAAI5B,EAAUxrX,SAAS,CAAC,EAAGsa,EAAS,CACrD2P,OAAQipW,EACRC,cAAc,IAEZx6J,GAAY,EAwBhB,OAvBA58N,EAAMpD,SAAQ,SAAUo0B,GACtB,IAAIvxB,EAAQiB,EAAOswB,GACfqmW,GAAS,EAAI3J,EAAKzpX,SAAS7I,EAAO41B,GAEtC,GAAIvxB,EAAO,CACT,IAAI4rH,EACAimQ,EAAS7xX,EAAMs0X,UAAYt0X,EAAMs0X,SAASzC,OAM9C,GAJAD,EAAarxW,MAAO,EAAI4vW,EAAU3rX,SAAS+rX,IAAmBzxW,EAAQyB,KAAMgR,GAC5EqgW,EAAaj2X,MAAQA,EAAM41B,IAGN,KAFrBvxB,EAAQA,EAAM8b,QAAQ81W,IAEZyE,OAER,YADAl5J,EAAYA,GAAa5rM,KAAQ51B,QAKhBrC,KADnBsyH,EAAc9sG,EAAQ64W,cAAiB9F,EAAiDl2X,EAAM41B,GAA9CvxB,EAAM8uX,KAAKnzX,EAAM41B,GAAOqgW,MAC1C8F,EAAkBnmW,GAAQq6F,EAC1D,MAAWgsQ,IAAWxB,IAAOsB,EAAkBnmW,GAAQ51B,EAAM41B,IAEzDmmW,EAAkBnmW,KAAU51B,EAAM41B,KAAO4rM,GAAY,EAC3D,IACOA,EAAYu6J,EAAoB/7X,CACzC,EACAw1X,UAAW,SAAmBL,EAAQ/5F,GACpC,IAMIu6F,EAAUE,EANVW,EAAS/zW,UAEA,IAAT24Q,IACFA,EAAO,CAAC,GAIV,IAAI2W,EAAO3W,EAAK2W,KACZ33S,EAAS,GACT07X,EAAsC,MAAtB16F,EAAK06F,cAAwB16F,EAAK06F,cAAgBX,EAOtE,OANAQ,EAAWlzW,KAAKmzW,QAAQ,aAAcx6F,GACtCy6F,EAAYpzW,KAAKmzW,QAAQ,YAAax6F,GACtCA,GAAO,EAAIi5F,EAAUxrX,SAAS,CAAC,EAAGuyR,EAAM,CACtC4gG,cAAc,EACdlG,cAAeA,IAEVrB,EAAO5rX,QAAQiZ,UAAU0zW,UAAUrzW,KAAKM,KAAM0yW,EAAQ/5F,GAAMtxR,OAAM,EAAI6qX,EAAgBoB,iBAAiBJ,EAAUv7X,IAASwP,MAAK,SAAU5J,GAC9I,IAAK61X,IAActlW,EAASvwB,GAAQ,CAElC,GAAI5F,EAAOM,OAAQ,MAAMN,EAAO,GAChC,OAAO4F,CACT,CAEA81X,EAAgBA,GAAiB91X,EAEjC,IAAIg2X,EAAcQ,EAAOoF,OAAOr5X,KAAI,SAAUd,GAC5C,IAAImjB,GAAO,EAAI4vW,EAAU3rX,SAAS8yX,IAAoBvgG,EAAKx2Q,KAAMnjB,GAC7D4C,EAAQmyX,EAAOlxX,OAAO7D,GACtBw0X,GAAe,EAAI5B,EAAUxrX,SAAS,CAAC,EAAGuyR,EAAM,CAClDx2Q,KAAMA,EACNkO,OAAQ9yB,EACR81X,cAAeA,EAAcr0X,KAG/B,OAAI4C,GAASA,EAAMN,UAIjBkyX,EAAaC,QAAS,EACf7xX,EAAMN,SAAS/D,EAAMyB,GAAMw0X,IAG7Br4W,QAAQuC,SAAQ,EACzB,IAEA,OAAO,EAAIw0W,EAAgB9rX,SAAS,CAClCkpS,KAAMA,EACNikF,YAAaA,EACbh2X,MAAOA,EACP5F,OAAQA,EACRu7X,SAAUA,EACV/wW,KAAMw2Q,EAAKx2Q,KACX4C,MAAM,EAAIk0W,EAAgB7yX,SAAS2tX,EAAOlxX,SAE9C,GACF,EACAlC,OAAQ,SAAgBqK,GACtB,IAAI8yE,EAAOk0S,EAAO5rX,QAAQiZ,UAAU1e,OAAO+e,KAAKM,KAAMhV,GAGtD,OADA8yE,EAAKq7S,QAAS,EAAIH,EAAY5yX,SAAS03E,EAAKj7E,OAAQi7E,EAAKu7S,gBAClDv7S,CACT,EACAq6P,MAAO,SAAentU,EAAQyuX,QACX,IAAbA,IACFA,EAAW,IAGb,IAAI37S,EAAO99D,KAAKkP,QACZrsB,GAAS,EAAI+uX,EAAUxrX,SAAS03E,EAAKj7E,OAAQmI,GAGjD,GAFA8yE,EAAKj7E,OAASA,EAEV42X,EAASxhY,OAAQ,CACdw2B,MAAMC,QAAQ+qW,EAAS,MAAKA,EAAW,CAACA,IAC7C,IAAI36X,EAAO26X,EAAS35X,KAAI,SAAUtI,GAGhC,OAFYA,EAAK,GAEF,IADFA,EAAK,EAEpB,IACAsmF,EAAKu7S,eAAiBv7S,EAAKu7S,eAAe14X,OAAO7B,EACnD,CAGA,OADAg/E,EAAKq7S,QAAS,EAAIH,EAAY5yX,SAASvD,EAAQi7E,EAAKu7S,gBAC7Cv7S,CACT,EACA1zD,KAAM,SAAcsvW,EAAOpgX,EAAIuhS,GAC7B,IAAI8+E,GAAa,EAAI7I,EAAc/xD,QAAQ26D,GAAO,GAClD,OAAO15W,KAAKokC,WAAU,SAAU92B,GAC9B,GAAW,MAAPA,EAAa,OAAOA,EACxB,IAAIqgC,EAASrgC,EAQb,OANI,EAAIuiW,EAAKzpX,SAASknB,EAAKosW,KACzB/rU,GAAS,EAAIikU,EAAUxrX,SAAS,CAAC,EAAGknB,GAC/ButR,UAAcltP,EAAO+rU,GAC1B/rU,EAAOr0C,GAAMqgX,EAAWrsW,IAGnBqgC,CACT,GACF,EACA2nU,UAAW,SAAmBsE,EAAStmX,QACrB,IAAZsmX,IACFA,GAAU,QAGI,IAAZtmX,IACFA,EAAU2+W,EAAQz9J,OAAO8gK,WAGJ,kBAAZsE,IACTtmX,EAAUsmX,EACVA,GAAU,GAGZ,IAAI97S,EAAO99D,KAAK8H,KAAK,CACnB1vB,KAAM,YACNw7X,WAAW,EACXtgX,QAASA,EACTwU,KAAM,SAAcvqB,GAClB,OAAgB,MAATA,IAAkBq8X,GAAkD,IAjOnF,SAAiBxT,EAAK7oX,GACpB,IAAIs8X,EAAQh7X,OAAOC,KAAKsnX,EAAIvjX,QAC5B,OAAOhE,OAAOC,KAAKvB,GAAOY,QAAO,SAAUa,GACzC,OAA+B,IAAxB66X,EAAMvjX,QAAQtX,EACvB,GACF,CA4N4C86X,CAAQ95W,KAAKhV,OAAQzN,GAAOtF,MAClE,IAGF,OADI2hY,IAAS97S,EAAKo4S,SAAS6D,cAAe,GACnCj8S,CACT,EACAk8S,cAAe,SAAuBv6W,GACpC,OAAOO,KAAKokC,WAAU,SAAU92B,GAC9B,OAAOA,IAAO,EAAIwrW,EAAS1yX,SAASknB,GAAK,SAAUzE,EAAG7pB,GACpD,OAAOygB,EAAGzgB,EACZ,GACF,GACF,EACA6uT,UAAW,WACT,OAAO7tS,KAAKg6W,cAAcnB,EAAYzyX,QACxC,EACAqrU,UAAW,WACT,OAAOzxT,KAAKg6W,cAAcpB,EAAYxyX,QACxC,EACA6zX,aAAc,WACZ,OAAOj6W,KAAKg6W,eAAc,SAAUh7X,GAClC,OAAO,EAAI45X,EAAYxyX,SAASpH,GAAKoe,aACvC,GACF,EACA62W,SAAU,WACR,IAAIxwW,EAAOuuW,EAAO5rX,QAAQiZ,UAAU40W,SAASv0W,KAAKM,MAKlD,OAHAyD,EAAK5gB,QAAS,EAAIk2X,EAAW3yX,SAAS4Z,KAAKnd,QAAQ,SAAUtF,GAC3D,OAAOA,EAAM02X,UACf,IACOxwW,CACT,IAEF0hC,EAAO3gD,QAAUA,EAAiB,2CC/TlC,IAAI4kU,EAAyB7kU,EAAQ,MAErCC,EAAQwkU,YAAa,EACrBxkU,EAAAA,QAIA,SAAmB+gC,GACjB1mC,OAAOC,KAAKymC,GAAQxmC,SAAQ,SAAUzE,GACpCuE,OAAOC,KAAKymC,EAAOjrC,IAAOyE,SAAQ,SAAUmyC,GAC1C+gV,EAAQ7rX,QAAQ9L,GAAM42C,GAAU3L,EAAOjrC,GAAM42C,EAC/C,GACF,GACF,EARA,IAAI+gV,EAAU7oD,EAAuB7kU,EAAQ,OAU7C4gD,EAAO3gD,QAAUA,EAAiB,0CCflC,IAAI4kU,EAAyB7kU,EAAQ,MAErCC,EAAQwkU,YAAa,EACrBxkU,EAAAA,QAAkB01X,EAElB,IAAI1uW,EAAY49S,EAAuB7kU,EAAQ,OAE3CytX,EAAS5oD,EAAuB7kU,EAAQ,OAExC0tX,EAAU1tX,EAAQ,MAElButX,EAAY1oD,EAAuB7kU,EAAQ,OAG3C41X,EAAS,04BAETC,EAAO,yqCAEPhI,EAAY,SAAmB70X,GACjC,OAAO,EAAIu0X,EAAU1rX,SAAS7I,IAAUA,EAAMtF,OAAS,CACzD,EAEIoiY,EAAY,SAAmB98X,GACjC,OAAO,EAAIu0X,EAAU1rX,SAAS7I,IAAUA,IAAUA,EAAM09D,MAC1D,EAEA,SAASi/T,IACP,IAAIlqW,EAAQhQ,KAEZ,KAAMA,gBAAgBk6W,GAAe,OAAO,IAAIA,EAEhDlI,EAAO5rX,QAAQsZ,KAAKM,KAAM,CACxB1lB,KAAM,WAGR0lB,KAAKuyW,cAAa,WAChBviW,EAAMo0B,WAAU,SAAU7mD,GACxB,OAAIyiB,KAAKimR,OAAO1oS,GAAeA,EACf,MAATA,GAAiBA,EAAMnC,SAAWmC,EAAMnC,WAAamC,CAC9D,GACF,GACF,EAEA,EAAIiuB,EAAUplB,SAAS8zX,EAAclI,EAAO5rX,QAAS,CACnDosX,WAAY,SAAoBj1X,GAE9B,OADIA,aAAiBisD,SAAQjsD,EAAQA,EAAMu1E,WACnB,kBAAVv1E,CAChB,EACAlC,SAAU,SAAkBiY,GAO1B,YANgB,IAAZA,IACFA,EAAU2+W,EAAQyB,MAAMr4X,UAGf22X,EAAO5rX,QAAQiZ,UAAUhkB,SAASqkB,KAAKM,KAAM1M,GAE5CwU,KAAK,CACfxU,QAASA,EACTlb,KAAM,WACN0vB,KAAMsqW,GAEV,EACAn6X,OAAQ,SAAgBqiY,EAAShnX,GAK/B,YAJgB,IAAZA,IACFA,EAAU2+W,EAAQ/6O,OAAOj/I,QAGpB+nB,KAAK8H,KAAK,CACfxU,QAASA,EACTlb,KAAM,SACNw7X,WAAW,EACXtrW,OAAQ,CACNrwB,OAAQqiY,GAEVxyW,KAAM,SAAcvqB,GAClB,OAAO,EAAIu0X,EAAU1rX,SAAS7I,IAAUA,EAAMtF,SAAW+nB,KAAKtC,QAAQ48W,EACxE,GAEJ,EACA55V,IAAK,SAAaizV,EAAMrgX,GAKtB,YAJgB,IAAZA,IACFA,EAAU2+W,EAAQ/6O,OAAOx2G,KAGpB1gB,KAAK8H,KAAK,CACfxU,QAASA,EACTlb,KAAM,MACNw7X,WAAW,EACXtrW,OAAQ,CACNoY,IAAKizV,GAEP7rW,KAAM,SAAcvqB,GAClB,OAAO,EAAIu0X,EAAU1rX,SAAS7I,IAAUA,EAAMtF,QAAU+nB,KAAKtC,QAAQi2W,EACvE,GAEJ,EACAhzV,IAAK,SAAakzV,EAAMvgX,GAKtB,YAJgB,IAAZA,IACFA,EAAU2+W,EAAQ/6O,OAAOv2G,KAGpB3gB,KAAK8H,KAAK,CACf1vB,KAAM,MACNw7X,WAAW,EACXtgX,QAASA,EACTgV,OAAQ,CACNqY,IAAKkzV,GAEP/rW,KAAM,SAAcvqB,GAClB,OAAO,EAAIu0X,EAAU1rX,SAAS7I,IAAUA,EAAMtF,QAAU+nB,KAAKtC,QAAQm2W,EACvE,GAEJ,EACApuW,QAAS,SAAiBmO,EAAOlT,GAC/B,IACIpN,EADAinX,GAAqB,EAUzB,OAPI75W,IACEA,EAAQpN,SAAWoN,EAAQ+O,eAAe,uBAC5C8qW,EAAqB75W,EAAQ65W,mBAC7BjnX,EAAUoN,EAAQpN,SACbA,EAAUoN,GAGZV,KAAK8H,KAAK,CACfxU,QAASA,GAAW2+W,EAAQ/6O,OAAOzxH,QACnC6C,OAAQ,CACNsL,MAAOA,GAET9L,KAAM,SAAcvqB,GAClB,OAAO,EAAIu0X,EAAU1rX,SAAS7I,IAAoB,KAAVA,GAAgBg9X,GAAsB3mW,EAAM9L,KAAKvqB,EAC3F,GAEJ,EACAmR,MAAO,SAAe4E,GAKpB,YAJgB,IAAZA,IACFA,EAAU2+W,EAAQ/6O,OAAOxoI,OAGpBsR,KAAKyF,QAAQ00W,EAAQ,CAC1B7mX,QAASA,EACTinX,oBAAoB,GAExB,EACA/zX,IAAK,SAAa8M,GAKhB,YAJgB,IAAZA,IACFA,EAAU2+W,EAAQ/6O,OAAO1wI,KAGpBwZ,KAAKyF,QAAQ20W,EAAM,CACxB9mX,QAASA,EACTinX,oBAAoB,GAExB,EAEAzG,OAAQ,WACN,OAAO9zW,KAAK5Z,QAAQ,IAAIg+C,WAAU,SAAUzmC,GAC1C,OAAe,OAARA,EAAe,GAAKA,CAC7B,GACF,EACAs9C,KAAM,SAAc3nD,GAKlB,YAJgB,IAAZA,IACFA,EAAU2+W,EAAQ/6O,OAAOj8E,MAGpBj7C,KAAKokC,WAAU,SAAUzmC,GAC9B,OAAc,MAAPA,EAAcA,EAAIs9C,OAASt9C,CACpC,IAAGmK,KAAK,CACNxU,QAASA,EACTlb,KAAM,OACN0vB,KAAMuyW,GAEV,EACApF,UAAW,SAAmB3hX,GAK5B,YAJgB,IAAZA,IACFA,EAAU2+W,EAAQ/6O,OAAO+9O,WAGpBj1W,KAAKokC,WAAU,SAAU7mD,GAC9B,OAAQ,EAAIu0X,EAAU1rX,SAAS7I,GAA+BA,EAAtBA,EAAMc,aAChD,IAAGypB,KAAK,CACNxU,QAASA,EACTlb,KAAM,cACNw7X,WAAW,EACX9rW,KAAM,SAAcvqB,GAClB,OAAO,EAAIu0X,EAAU1rX,SAAS7I,IAAUA,IAAUA,EAAMc,aAC1D,GAEJ,EACA62X,UAAW,SAAmB5hX,GAK5B,YAJgB,IAAZA,IACFA,EAAU2+W,EAAQ/6O,OAAOg+O,WAGpBl1W,KAAKokC,WAAU,SAAU7mD,GAC9B,OAAQ,EAAIu0X,EAAU1rX,SAAS7I,GAA+BA,EAAtBA,EAAM6f,aAChD,IAAG0K,KAAK,CACNxU,QAASA,EACTlb,KAAM,cACNw7X,WAAW,EACX9rW,KAAM,SAAcvqB,GAClB,OAAO,EAAIu0X,EAAU1rX,SAAS7I,IAAUA,IAAUA,EAAM6f,aAC1D,GAEJ,IAEF+nC,EAAO3gD,QAAUA,EAAiB,2CC7MlC,IAAI4kU,EAAyB7kU,EAAQ,MAErCC,EAAQwkU,YAAa,EACrBxkU,EAAQg2X,mBAAqBA,EAC7Bh2X,EAAAA,QA+DA,SAA0Bkc,GACxB,IAAItoB,EAAOsoB,EAAQtoB,KACfkb,EAAUoN,EAAQpN,QAClBwU,EAAOpH,EAAQoH,KACfQ,EAAS5H,EAAQ4H,OAErB,SAAShnB,EAASyP,GAChB,IAAIxT,EAAQwT,EAAMxT,MACd4kB,EAAOpR,EAAMoR,KACbvpB,EAAQmY,EAAMnY,MACd8nB,EAAU3P,EAAM2P,QAChB2yW,EAAgBtiX,EAAMsiX,cACtB/jF,EAAOv+R,EAAMu+R,KACbjuS,GAAO,EAAIkvX,EAA+BnqX,SAAS2K,EAAO,CAAC,QAAS,OAAQ,QAAS,UAAW,gBAAiB,SACjHsf,EAAS3P,EAAQ2P,OAEjB3S,EAAU,SAAiBngB,GAC7B,OAAO82X,EAAWjuX,QAAQ4qX,MAAMzzX,GAASA,EAAM6vB,SAASiD,EAAQ3P,EAAQ5f,SAAWvD,CACrF,EAEIqzR,EAAc4pG,EAAmB,CACnClnX,QAASA,EACT6O,KAAMA,EACN5kB,MAAOA,EACP81X,cAAeA,EACf/qW,OAAQA,EACR1vB,MAAOA,EACP8kB,QAASA,EACTtlB,KAAMA,IAEJguX,GAAM,EAAIwL,EAAUxrX,SAAS,CAC/B+b,KAAMA,EACNkO,OAAQA,EACR/1B,KAAMlC,EACNw4R,YAAaA,EACblzQ,QAASA,EACTgD,QAASA,GACRrf,GACH,OAjFJ,SAAiBo5X,EAAQrU,EAAK7oX,EAAO+xS,GACnC,IAAIlwS,EAASq7X,EAAO/6W,KAAK0mW,EAAK7oX,GAC9B,IAAK+xS,EAAM,OAAOn0R,QAAQuC,QAAQte,GAElC,GAAIs7X,EAASt7X,GACX,MAAM,IAAI4B,MAAM,6BAAgColX,EAAI9rX,KAApC,kHAGlB,OAAOqgY,EAAoBhP,mBAAmBjuW,QAAQte,EACxD,CAwEWw7X,CAAQ9yW,EAAMs+V,EAAK7oX,EAAO+xS,GAAMnoS,MAAK,SAAU0zX,GACpD,GAAIC,EAAiB10X,QAAQ6vU,QAAQ4kD,GAAe,MAAMA,EAAkB,IAAKA,EAAc,MAAMjqG,GACvG,GACF,CAGA,OADAtvR,EAASw1X,QAAUp2W,EACZpf,CACT,EA1GA,IAAIivX,EAAiCnnD,EAAuB7kU,EAAQ,OAEhEqtX,EAAYxoD,EAAuB7kU,EAAQ,OAE3Cw0X,EAAa3vD,EAAuB7kU,EAAQ,OAE5Cu2X,EAAmB1xD,EAAuB7kU,EAAQ,OAElD8vX,EAAajrD,EAAuB7kU,EAAQ,OAE5Co2X,EAAsBp2X,EAAQ,MAE9BotX,EAAcmJ,EAAiB10X,QAAQurX,YAEvC+I,EAAW,SAAkB77V,GAC/B,OAAOA,GAAuB,oBAAXA,EAAE13B,MAA0C,oBAAZ03B,EAAEx3B,KACvD,EAiBA,SAASmzX,EAAmBhjY,GAC1B,IAAI+F,EAAQ/F,EAAK+F,MACb3E,EAAQpB,EAAKoB,MACb8kB,EAAUlmB,EAAKkmB,QACf21W,EAAgB77X,EAAK67X,cACrB16F,GAAO,EAAI43F,EAA+BnqX,SAAS5O,EAAM,CAAC,QAAS,QAAS,UAAW,kBAC3F,OAAO,SAAqBshX,GAC1B,IAAIl5W,OAAkB,IAAVk5W,EAAmB,CAAC,EAAIA,EAChCiiB,EAAan7X,EAAMuiB,KACnBA,OAAsB,IAAf44W,EAAwBpiG,EAAKx2Q,KAAO44W,EAC3CC,EAAgBp7X,EAAM0T,QACtBA,OAA4B,IAAlB0nX,EAA2BriG,EAAKrlR,QAAU0nX,EACpDC,EAAar7X,EAAMtF,KACnBA,OAAsB,IAAf2gY,EAAwBtiG,EAAKvgS,KAAO6iY,EAC3C3yW,EAAS1oB,EAAM0oB,OAQnB,OANAA,GAAS,EAAIspW,EAAUxrX,SAAS,CAC9B+b,KAAMA,EACN5kB,MAAOA,EACP81X,cAAeA,EACfz6X,MAAOA,GAxBb,SAAuBsiY,EAAWC,EAAWz9W,GAC3C,OAAO,EAAIq7W,EAAW3yX,UAAS,EAAIwrX,EAAUxrX,SAAS,CAAC,EAAG80X,EAAWC,GAAYz9W,EACnF,CAuBO09W,CAAcziG,EAAKrwQ,OAAQA,EAAQ5K,KAC/B,EAAIk0W,EAAUxrX,SAAS,IAAI00X,EAAiB10X,QAAQurX,EAAYr+W,EAASgV,GAAS/qB,EAAO4kB,EAAM7nB,GAAO,CAC3GguB,OAAQA,GAEZ,CACF,qCCjEA,IAAI8gT,EAAyB7kU,EAAQ,MAErCC,EAAQwkU,YAAa,EACrBxkU,EAAAA,QAIA,SAAkB62X,EAAMC,EAAWt9F,GACjCq9F,EAAKh8W,UAAYxgB,OAAOqhB,OAAOo7W,EAAUj8W,UAAW,CAClDY,YAAa,CACX1iB,MAAO89X,EACPl7W,YAAY,EACZC,UAAU,EACVC,cAAc,MAGlB,EAAIuxW,EAAUxrX,SAASi1X,EAAKh8W,UAAW2+Q,EACzC,EAZA,IAAI4zF,EAAYxoD,EAAuB7kU,EAAQ,OAc/C4gD,EAAO3gD,QAAUA,EAAiB,yCCnBlCA,EAAQwkU,YAAa,EACrBxkU,EAAAA,aAAkB,EAMlBA,EAAAA,QAJe,SAAkBjH,GAC/B,OAAgB,MAATA,CACT,EAGA4nD,EAAO3gD,QAAUA,EAAiB,yCCRlCA,EAAQwkU,YAAa,EACrBxkU,EAAAA,aAAkB,EAMlBA,EAAAA,QAJe,SAAkB8oB,GAC/B,OAAOA,GAAOA,EAAIujW,eACpB,EAGA1rU,EAAO3gD,QAAUA,EAAiB,yCCRlCA,EAAQwkU,YAAa,EACrBxkU,EAAAA,QAcA,SAAsBga,GACpB,IAEIuxP,EACAwrH,EAHAC,EAAc,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAClCC,EAAgB,EAIpB,GAAIF,EAASG,EAAOhrV,KAAKlyB,GAAO,CAE9B,IAAK,IAAW4qC,EAAPjkC,EAAI,EAAMikC,EAAIoyU,EAAYr2W,KAAMA,EACvCo2W,EAAOnyU,IAAMmyU,EAAOnyU,IAAM,EAI5BmyU,EAAO,KAAOA,EAAO,IAAM,GAAK,EAChCA,EAAO,IAAMA,EAAO,IAAM,EAE1BA,EAAO,GAAKA,EAAO,GAAK/xU,OAAO+xU,EAAO,IAAIx5W,OAAO,EAAG,GAAK,OAEtC7mB,IAAdqgY,EAAO,IAAkC,KAAdA,EAAO,SAA6BrgY,IAAdqgY,EAAO,IAAkC,KAAdA,EAAO,IACpE,MAAdA,EAAO,SAA4BrgY,IAAdqgY,EAAO,KAC9BE,EAA6B,GAAbF,EAAO,IAAWA,EAAO,IACvB,MAAdA,EAAO,KAAYE,EAAgB,EAAIA,IAG7C1rH,EAAYzwQ,KAAKmf,IAAI88W,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAKE,EAAeF,EAAO,GAAIA,EAAO,KANZxrH,GAAa,IAAIzwQ,KAAKi8X,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAQrM,MAAOxrH,EAAYzwQ,KAAKid,MAAQjd,KAAKid,MAAMiC,GAAQunB,IAEnD,OAAOgqO,CACT,EA/BA,IAAI2rH,EAAS,kJAiCbv2U,EAAO3gD,QAAUA,EAAiB,yCC9ClCA,EAAQwkU,YAAa,EACrBxkU,EAAAA,QAEA,SAAkBm3X,GAChB,IAAK,IAAIpnF,EAAOl2R,UAAUpmB,OAAQwG,EAAS,IAAIgwB,MAAM8lR,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IACpG/1S,EAAO+1S,EAAO,GAAKn2R,UAAUm2R,GAO/B,OAJWmnF,EAAQ/zW,QAAO,SAAU2L,EAAKuqD,GACvC,IAAIvgF,EAAQkB,EAAOgsB,QACnB,OAAO8I,GAAgB,MAATh2B,EAAgB,GAAKA,GAASugF,CAC9C,IACYrnE,QAAQ,MAAO,GAC7B,EAEA0uC,EAAO3gD,QAAUA,EAAiB,2CCflC,IAAI4kU,EAAyB7kU,EAAQ,MAErCC,EAAQwkU,YAAa,EACrBxkU,EAAAA,QAUA,SAAS0pB,EAAMiwB,EAAQh4C,GACrB,IAAK,IAAInH,KAAOmH,EACd,IAAI,EAAI0pX,EAAKzpX,SAASD,EAAQnH,GAAM,CAClC,IAAI48X,EAAYz9U,EAAOn/C,GACnB68X,EAAY11X,EAAOnH,GACvB,QAAkB9D,IAAd2gY,EAAyB,UAEzB,EAAI/L,EAAU1pX,SAASy1X,GACzB19U,EAAOn/C,IAAO,EAAI8wX,EAAU1pX,SAASw1X,GAAaA,EAAUj7X,OAAOk7X,GAAaA,EACvE/tW,EAAS+tW,GAClB19U,EAAOn/C,GAAO8uB,EAAS8tW,GAAa1tW,EAAM0tW,EAAWC,GAAaA,EACzDptW,MAAMC,QAAQmtW,GACvB19U,EAAOn/C,GAAOyvB,MAAMC,QAAQktW,GAAaA,EAAUj7X,OAAOk7X,GAAaA,EAClE19U,EAAOn/C,GAAOmH,EAAOnH,EAC9B,CAGF,OAAOm/C,CACT,EA1BA,IAAI0xU,EAAOzmD,EAAuB7kU,EAAQ,OAEtCurX,EAAY1mD,EAAuB7kU,EAAQ,OAE3CupB,EAAW,SAAkBR,GAC/B,MAA+C,oBAAxCzuB,OAAOwgB,UAAUjkB,SAASskB,KAAK4N,EACxC,EAsBA63B,EAAO3gD,QAAUA,EAAiB,yCCjClCA,EAAQwkU,YAAa,EACrBxkU,EAAAA,QAiCA,SAAoBjH,EAAOu+X,GACzB,IAAI18X,EAAS28X,EAAiBx+X,EAAOu+X,GACrC,OAAe,OAAX18X,EAAwBA,EACrBkd,KAAKK,UAAUpf,GAAO,SAAUyB,EAAKzB,GAC1C,IAAI6B,EAAS28X,EAAiB/7W,KAAKhhB,GAAM88X,GACzC,OAAe,OAAX18X,EAAwBA,EACrB7B,CACT,GAAG,EACL,EAxCA,IAAInC,EAAWyD,OAAOwgB,UAAUjkB,SAC5B4gY,EAAgBh7X,MAAMqe,UAAUjkB,SAChC6gY,EAAiBjzW,OAAO3J,UAAUjkB,SAClC0wS,EAAmC,qBAAX9/Q,OAAyBA,OAAO3M,UAAUjkB,SAAW,WAC/E,MAAO,EACT,EACI8gY,EAAgB,uBAQpB,SAASH,EAAiBp+W,EAAKm+W,GAK7B,QAJqB,IAAjBA,IACFA,GAAe,GAGN,MAAPn+W,IAAuB,IAARA,IAAwB,IAARA,EAAe,MAAO,GAAKA,EAC9D,IAAIq5V,SAAgBr5V,EACpB,GAAe,WAAXq5V,EAAqB,OAb3B,SAAqBr5V,GACnB,OAAIA,IAAQA,EAAY,MACK,IAARA,GAAa,EAAIA,EAAM,EACpB,KAAO,GAAKA,CACtC,CASkCw+W,CAAYx+W,GAC5C,GAAe,WAAXq5V,EAAqB,OAAO8kB,EAAe,IAAOn+W,EAAM,IAAOA,EACnE,GAAe,aAAXq5V,EAAuB,MAAO,cAAgBr5V,EAAIvlB,MAAQ,aAAe,IAC7E,GAAe,WAAX4+W,EAAqB,OAAOlrE,EAAepsR,KAAK/B,GAAKlH,QAAQylX,EAAe,cAChF,IAAI3xT,EAAMnvE,EAASskB,KAAK/B,GAAKN,MAAM,GAAI,GACvC,MAAY,SAARktD,EAAuBzwC,MAAMnc,EAAI7Z,WAAa,GAAK6Z,EAAMA,EAAIne,YAAYme,GACjE,UAAR4sD,GAAmB5sD,aAAe3c,MAAc,IAAMg7X,EAAct8W,KAAK/B,GAAO,IACxE,WAAR4sD,EAAyB0xT,EAAev8W,KAAK/B,GAC1C,IACT,CAYAwnC,EAAO3gD,QAAUA,EAAiB,2CC5ClC,IAAI4kU,EAAyB7kU,EAAQ,MAErCC,EAAQwkU,YAAa,EACrBxkU,EAAQqoS,MAAQA,EAChBroS,EAAAA,aAAkB,EAElB,IAAIssX,EAAgBvsX,EAAQ,MAExBsrX,EAAOzmD,EAAuB7kU,EAAQ,OAEtC02D,EAAO,SAAc7uB,GACvB,OAAOA,EAAKrqB,OAAO,EAAGqqB,EAAKn0C,OAAS,GAAG8pB,OAAO,EAChD,EAEA,SAAS8qR,EAAM7hS,EAAQmX,EAAM5kB,EAAOuD,GAClC,IAAIuvB,EAAQ+rW,EAAUC,EAGtB,OADAv7X,EAAUA,GAAWvD,EAChB4kB,IASL,EAAI2uW,EAAc/xX,SAASojB,GAAM,SAAUm6W,EAAO9iD,EAAW9qT,GAC3D,IAAI0d,EAAOotS,EAAYv+Q,EAAKqhU,GAASA,EAErC,GAAI5tW,IAAW,EAAImhW,EAAKzpX,SAAS4E,EAAQ,YAAa,CAEpD,IAAI0W,EAAMgN,EAAUxvB,SAASktC,EAAM,IAAM,EAOzC,GANAphC,EAASA,EAAO0S,QAAQ,CACtB5c,QAASA,EACTuvB,OAAQA,EACR9yB,MAAOA,IACN+0X,SAEC/0X,EAAO,CACT,GAAImxB,GAAWhN,GAAOnkB,EAAMtF,OAC1B,MAAM,IAAI+I,MAAM,oDAAsDs7X,EAAQ,kBAAoBn6W,EAAlF,+CAGlB5kB,EAAQA,EAAMmkB,EAChB,CACF,CAEA,IAAKgN,EAAS,CAMZ,GALA1jB,EAASA,EAAO0S,QAAQ,CACtB5c,QAASA,EACTuvB,OAAQA,EACR9yB,MAAOA,MAEJ,EAAIsyX,EAAKzpX,SAAS4E,EAAQ,aAAc,EAAI6kX,EAAKzpX,SAAS4E,EAAOnI,OAAQupC,GAAO,MAAM,IAAIprC,MAAM,yCAA2CmhB,EAA3C,iBAA2Ek6W,EAAgB,sBAAyBrxX,EAAO0rX,MAAQ,OACxO1rX,EAASA,EAAOnI,OAAOupC,GACvB/b,EAAS9yB,EACTA,EAAQA,GAASA,EAAM6uC,GACvBgwV,EAAWhwV,EACXiwV,EAAgB7iD,EAAY,IAAM8iD,EAAQ,IAAM,IAAMA,CACxD,CACF,IAEItxX,IACFA,EAASA,EAAO0S,QAAQ,CACtB5c,QAASA,EACTuvB,OAAQA,EACR9yB,MAAOA,KAIJ,CACLyN,OAAQA,EACRqlB,OAAQA,EACRxK,WAAYu2W,IAxDI,CAChB/rW,OAAQA,EACRxK,WAAY1D,EACZnX,OAAQA,EAAO0S,QAAQ,CACrB5c,QAASA,EACTuvB,OAAQA,EACR9yB,MAAOA,IAoDb,CAEA,IAIIgzT,EAJQ,SAAejjS,EAAKnL,EAAM5kB,EAAOuD,GAC3C,OAAO+rS,EAAMv/Q,EAAKnL,EAAM5kB,EAAOuD,GAASkK,MAC1C,EAGAxG,EAAAA,QAAkB+rT,qCCnFlB,IAAI6Y,EAAyB7kU,EAAQ,MAErCC,EAAQwkU,YAAa,EACrBxkU,EAAQ8uX,gBA4CR,SAAyBJ,EAAUv7X,GACjC,OAAOu7X,EAAW,KAAO,SAAUp1X,GAEjC,OADAnG,EAAO8H,KAAK3B,GACLA,EAAIP,KACb,CACF,EAhDAiH,EAAQ+3X,QAAUA,EAClB/3X,EAAQg4X,cAAgBA,EACxBh4X,EAAAA,QA8FA,SAAwBuM,GACtB,IAAImiX,EAAWniX,EAAMmiX,SACjBxyW,GAAU,EAAI6vW,EAA+BnqX,SAAS2K,EAAO,CAAC,aAClE,OAAImiX,EA7EN,SAAsB3gG,EAAUh1R,EAAO+xS,GAarC,OAXQpoS,EAAQooS,GAAM/oS,IAAIgsR,GAEhBlrR,OAAM,SAAUvJ,GAExB,KADiB,oBAAbA,EAAI1F,OAA4B0F,EAAIP,MAAQA,GAC1CO,CACR,IAEUqJ,MAAK,WACb,OAAO5J,CACT,GAGF,CA+DuBk/X,CAAa/7W,EAAQ6yW,YAAa7yW,EAAQnjB,MAAOmjB,EAAQ4uR,MACvEktF,EAAc97W,EACvB,EAjGA,IAAI6vW,EAAiCnnD,EAAuB7kU,EAAQ,OAEhEo2X,EAAsBp2X,EAAQ,MAE9Bu2X,EAAmB1xD,EAAuB7kU,EAAQ,OAElD2C,EAAU,SAAiBooS,GAC7B,OAAOA,EAAOqrF,EAAoBhP,mBAAqBxwW,OACzD,EAEIuhX,EAAc,SAAqB/kY,GAKrC,YAJe,IAAXA,IACFA,EAAS,IAGJA,EAAOo5Q,OAASp5Q,EAAOo5Q,MAAM94Q,OAASN,EAAOo5Q,MAAQ,GAAGpwQ,OAAOhJ,EACxE,EA8BA,SAAS4kY,EAAQhqG,EAAU+c,GACzB,IAAIn0R,EAAUjU,EAAQooS,GACtB,OAAOn0R,EAAQ5U,IAAIgsR,EAASzyR,KAAI,SAAU++B,GACxC,OAAO1jB,EAAQuC,QAAQmhB,GAAG13B,MAAK,SAAU5J,GACvC,MAAO,CACLk2R,WAAW,EACXl2R,MAAOA,EAEX,IAAG,SAAUA,GACX,MAAO,CACLk2R,WAAW,EACXl2R,MAAOA,EAEX,GACF,IACF,CAEA,SAASi/X,EAAchlY,GACrB,IAAI+7X,EAAc/7X,EAAK+7X,YACnBh2X,EAAQ/F,EAAK+F,MACb4kB,EAAO3qB,EAAK2qB,KACZmtR,EAAO93S,EAAK83S,KACZ33S,EAASH,EAAKG,OACdotB,EAAOvtB,EAAKutB,KAEhB,OADAptB,EAAS+kY,EAAY/kY,GACd4kY,EAAQhJ,EAAajkF,GAAMnoS,MAAK,SAAUvI,GAC/C,IAAI+9X,EAAe/9X,EAAQT,QAAO,SAAU0I,GAC1C,OAAQA,EAAE4sR,SACZ,IAAG7rQ,QAAO,SAAUpB,EAAK5mB,GACvB,IAAIwB,EAAQxB,EAAMrC,MAGlB,IAAKu9X,EAAiB10X,QAAQ6vU,QAAQ70U,GACpC,MAAMA,EAGR,OAAOolB,EAAI7lB,OAAOS,EACpB,GAAG,IAIH,GAHI2jB,GAAM43W,EAAa53W,KAAKA,IAE5BptB,EAASglY,EAAah8X,OAAOhJ,IAClBM,OAAQ,MAAM,IAAI6iY,EAAiB10X,QAAQzO,EAAQ4F,EAAO4kB,GACrE,OAAO5kB,CACT,GACF,kCC/FA,SAASyoX,EAAUx/V,EAAK1oB,GACtB,IAAI4jB,EAAMokB,IAOV,OANAtf,EAAImB,MAAK,SAAU3oB,EAAK63B,GACtB,IAA+B,IAA3B/4B,EAAIqkB,KAAK7L,QAAQtX,GAEnB,OADA0iB,EAAMmV,GACC,CAEX,IACOnV,CACT,CAZAld,EAAQwkU,YAAa,EACrBxkU,EAAAA,QAaA,SAAwB3B,GACtB,IAAI/D,EAAOD,OAAOC,KAAK+D,GACvB,OAAO,SAAUoc,EAAG+F,GAClB,OAAOghW,EAAUlnX,EAAMmgB,GAAK+mW,EAAUlnX,EAAMkmB,EAC9C,CACF,EAEAmgC,EAAO3gD,QAAUA,EAAiB,2CCrBlC,IAAI4kU,EAAyB7kU,EAAQ,MAErCC,EAAQwkU,YAAa,EACrBxkU,EAAAA,QAYA,SAAoB3B,EAAQ42X,QACT,IAAbA,IACFA,EAAW,IAGb,IAAItK,EAAQ,GACRppT,EAAQ,GAEZ,SAAS62T,EAAQC,EAAS79X,GACxB,IAAIy3D,GAAO,EAAIq6T,EAAc78W,OAAO4oX,GAAS,IACvC92T,EAAMzvD,QAAQmgD,IAAOsP,EAAMtmE,KAAKg3D,IAChCgjU,EAASnjX,QAAQtX,EAAM,IAAMy3D,IAAO04T,EAAM1vX,KAAK,CAACT,EAAKy3D,GAC7D,CAEA,IAAK,IAAIz3D,KAAO6D,EACd,IAAI,EAAIgtX,EAAKzpX,SAASvD,EAAQ7D,GAAM,CAClC,IAAIzB,EAAQsF,EAAO7D,IACb+mE,EAAMzvD,QAAQtX,IAAM+mE,EAAMtmE,KAAKT,GACjCq1X,EAAWjuX,QAAQ4qX,MAAMzzX,KAAWA,EAAM6zX,UAAWwL,EAAQr/X,EAAM4kB,KAAMnjB,IAAc,EAAI8wX,EAAU1pX,SAAS7I,IAAUA,EAAMy4X,OAAOz4X,EAAMy4X,MAAMj3X,SAAQ,SAAUojB,GACrK,OAAOy6W,EAAQz6W,EAAMnjB,EACvB,GACF,CAGF,OAAO89X,EAAU12X,QAAQ+4E,MAAMpZ,EAAOopT,GAAOz4T,SAC/C,EAnCA,IAAIm5T,EAAOzmD,EAAuB7kU,EAAQ,OAEtCu4X,EAAY1zD,EAAuB7kU,EAAQ,OAE3CusX,EAAgBvsX,EAAQ,MAExB8vX,EAAajrD,EAAuB7kU,EAAQ,OAE5CurX,EAAY1mD,EAAuB7kU,EAAQ,OA6B/C4gD,EAAO3gD,QAAUA,EAAiB,0BC5ClC,SAASmd,IAeP,OAdAwjC,EAAO3gD,QAAUmd,EAAW9iB,OAAOulB,QAAU,SAAU+5B,GACrD,IAAK,IAAIh5B,EAAI,EAAGA,EAAI9G,UAAUpmB,OAAQktB,IAAK,CACzC,IAAIhf,EAASkY,UAAU8G,GAEvB,IAAK,IAAInmB,KAAOmH,EACVtH,OAAOwgB,UAAUoQ,eAAe/P,KAAKvZ,EAAQnH,KAC/Cm/C,EAAOn/C,GAAOmH,EAAOnH,GAG3B,CAEA,OAAOm/C,CACT,EAEOx8B,EAASzC,MAAMc,KAAM3B,UAC9B,CAEA8mC,EAAO3gD,QAAUmd,oBCZjBwjC,EAAO3gD,QANP,SAAgC8oB,GAC9B,OAAOA,GAAOA,EAAI07S,WAAa17S,EAAM,CACnClnB,QAASknB,EAEb,mBCqBA63B,EAAO3gD,QAzBP,SAAiC8oB,GAC/B,GAAIA,GAAOA,EAAI07S,WACb,OAAO17S,EAEP,IAAIqgC,EAAS,CAAC,EAEd,GAAW,MAAPrgC,EACF,IAAK,IAAItuB,KAAOsuB,EACd,GAAIzuB,OAAOwgB,UAAUoQ,eAAe/P,KAAK4N,EAAKtuB,GAAM,CAClD,IAAI6gD,EAAOhhD,OAAOs1C,gBAAkBt1C,OAAOihD,yBAA2BjhD,OAAOihD,yBAAyBxyB,EAAKtuB,GAAO,CAAC,EAE/G6gD,EAAKn/C,KAAOm/C,EAAKhgC,IACnBhhB,OAAOs1C,eAAewZ,EAAQ3uD,EAAK6gD,GAEnC8N,EAAO3uD,GAAOsuB,EAAItuB,EAEtB,CAKJ,OADA2uD,EAAOvnD,QAAUknB,EACVqgC,CAEX,oBCRAxI,EAAO3gD,QAfP,SAAuC2B,EAAQ42X,GAC7C,GAAc,MAAV52X,EAAgB,MAAO,CAAC,EAC5B,IAEInH,EAAKmmB,EAFLg5B,EAAS,CAAC,EACV6+U,EAAan+X,OAAOC,KAAKqH,GAG7B,IAAKgf,EAAI,EAAGA,EAAI63W,EAAW/kY,OAAQktB,IACjCnmB,EAAMg+X,EAAW73W,GACb43W,EAASzmX,QAAQtX,IAAQ,IAC7Bm/C,EAAOn/C,GAAOmH,EAAOnH,IAGvB,OAAOm/C,CACT,oBCJAgH,EAAO3gD,QATP,SAAqCm3X,EAASn7N,GAM5C,OALKA,IACHA,EAAMm7N,EAAQt+W,MAAM,IAGtBs+W,EAAQn7N,IAAMA,EACPm7N,CACT,sDCPe,SAASsB,EAAkBz2W,EAAKyK,IAClC,MAAPA,GAAeA,EAAMzK,EAAIvuB,UAAQg5B,EAAMzK,EAAIvuB,QAC/C,IAAK,IAAIktB,EAAI,EAAG+3W,EAAO,IAAIzuW,MAAMwC,GAAM9L,EAAI8L,EAAK9L,IAAK+3W,EAAK/3W,GAAKqB,EAAIrB,GACnE,OAAO+3W,CACT,oECJe,SAASC,EAAgB32W,GACtC,GAAIiI,MAAMC,QAAQlI,GAAM,OAAOA,CACjC,oECFe,SAAS3I,EAAgBpd,EAAU88R,GAChD,KAAM98R,aAAoB88R,GACxB,MAAM,IAAI59Q,UAAU,oCAExB,kHCHA,SAASy9W,EAAkBj/U,EAAQh8C,GACjC,IAAK,IAAIgjB,EAAI,EAAGA,EAAIhjB,EAAMlK,OAAQktB,IAAK,CACrC,IAAI+3B,EAAa/6C,EAAMgjB,GACvB+3B,EAAW/8B,WAAa+8B,EAAW/8B,aAAc,EACjD+8B,EAAW78B,cAAe,EACtB,UAAW68B,IAAYA,EAAW98B,UAAW,GACjDvhB,OAAOs1C,eAAegK,GAAQ,OAAcjB,EAAWl+C,KAAMk+C,EAC/D,CACF,CACe,SAASp/B,EAAay/Q,EAAakrC,EAAYC,GAM5D,OALID,GAAY20D,EAAkB7/F,EAAYl+Q,UAAWopT,GACrDC,GAAa00D,EAAkB7/F,EAAamrC,GAChD7pU,OAAOs1C,eAAeopP,EAAa,YAAa,CAC9Cn9Q,UAAU,IAELm9Q,CACT,kFChBe,SAAStgS,EAA2BsqG,EAAG81R,GACpD,IAAIC,EAAuB,qBAAXtxW,QAA0Bu7E,EAAEv7E,OAAO6jR,WAAatoM,EAAE,cAClE,IAAK+1R,EAAI,CACP,GAAI7uW,MAAMC,QAAQ64E,KAAO+1R,GAAK,OAA2B/1R,KAAO81R,GAAkB91R,GAAyB,kBAAbA,EAAEtvG,OAAqB,CAC/GqlY,IAAI/1R,EAAI+1R,GACZ,IAAIn4W,EAAI,EACJqyU,EAAI,WAAc,EACtB,MAAO,CACLt6V,EAAGs6V,EACHr6V,EAAG,WACD,OAAIgoB,GAAKoiF,EAAEtvG,OAAe,CACxBmF,MAAM,GAED,CACLA,MAAM,EACNG,MAAOgqG,EAAEpiF,KAEb,EACA1pB,EAAG,SAAWw8H,GACZ,MAAMA,CACR,EACAl6H,EAAGy5V,EAEP,CACA,MAAM,IAAI73U,UAAU,wIACtB,CACA,IAEE7hB,EAFEy/X,GAAmB,EACrBC,GAAS,EAEX,MAAO,CACLtgY,EAAG,WACDogY,EAAKA,EAAG59W,KAAK6nF,EACf,EACApqG,EAAG,WACD,IAAIwkD,EAAO27U,EAAGx/S,OAEd,OADAy/S,EAAmB57U,EAAKvkD,KACjBukD,CACT,EACAlmD,EAAG,SAAWgiY,GACZD,GAAS,EACT1/X,EAAM2/X,CACR,EACA1/X,EAAG,WACD,IACOw/X,GAAoC,MAAhBD,EAAW,QAAWA,EAAW,QAC5D,CAAE,QACA,GAAIE,EAAQ,MAAM1/X,CACpB,CACF,EAEJ,sGCjDe,SAASy6W,EAA2B33E,EAAMlhR,GACvD,GAAIA,IAA2B,YAAlB,OAAQA,IAAsC,oBAATA,GAChD,OAAOA,EACF,QAAa,IAATA,EACT,MAAM,IAAIC,UAAU,4DAEtB,OCRa,SAAgCihR,GAC7C,QAAa,IAATA,EACF,MAAM,IAAI+Y,eAAe,6DAE3B,OAAO/Y,CACT,CDGS,CAAsBA,EAC/B,CENe,SAASl1Q,EAAagyW,GACnC,IAAIC,GAA4B,EAAA9+W,EAAA,KAChC,OAAO,WACL,IACEzf,EADEw+X,GAAQ,EAAA79W,EAAA,GAAe29W,GAE3B,GAAIC,EAA2B,CAC7B,IAAIE,GAAY,EAAA99W,EAAA,GAAeC,MAAMC,YACrC7gB,EAAS0f,QAAQC,UAAU6+W,EAAOv/W,UAAWw/W,EAC/C,MACEz+X,EAASw+X,EAAM1+W,MAAMc,KAAM3B,WAE7B,OAAO,EAA0B2B,KAAM5gB,EACzC,CACF,gFCfe,SAAS3G,EAAgB60B,EAAKtuB,EAAKzB,GAYhD,OAXAyB,GAAM,OAAcA,MACTsuB,EACTzuB,OAAOs1C,eAAe7mB,EAAKtuB,EAAK,CAC9BzB,MAAOA,EACP4iB,YAAY,EACZE,cAAc,EACdD,UAAU,IAGZkN,EAAItuB,GAAOzB,EAEN+vB,CACT,qCCde,SAASwwW,EAAgBv2R,GAItC,OAHAu2R,EAAkBj/X,OAAOugB,eAAiBvgB,OAAOkhB,eAAef,OAAS,SAAyBuoF,GAChG,OAAOA,EAAE9nD,WAAa5gD,OAAOkhB,eAAewnF,EAC9C,EACOu2R,EAAgBv2R,EACzB,iHCJe,SAAS/7E,EAAU2tV,EAAUC,GAC1C,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIz5V,UAAU,sDAEtBw5V,EAAS95V,UAAYxgB,OAAOqhB,OAAOk5V,GAAcA,EAAW/5V,UAAW,CACrEY,YAAa,CACX1iB,MAAO47W,EACP/4V,UAAU,EACVC,cAAc,KAGlBxhB,OAAOs1C,eAAeglU,EAAU,YAAa,CAC3C/4V,UAAU,IAERg5V,IAAY,OAAeD,EAAUC,EAC3C,qCChBe,SAAS2kB,IACtB,GAAuB,qBAAZj/W,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUi/W,KAAM,OAAO,EACnC,GAAqB,oBAAVvkF,MAAsB,OAAO,EACxC,IAEE,OADAxH,QAAQ5yR,UAAUyzD,QAAQpzD,KAAKZ,QAAQC,UAAUkzR,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOx2S,GACP,OAAO,CACT,CACF,oECVe,SAASwiY,EAAiBvkD,GACvC,GAAsB,qBAAX1tT,QAAmD,MAAzB0tT,EAAK1tT,OAAO6jR,WAA2C,MAAtB6pC,EAAK,cAAuB,OAAOjrT,MAAMrE,KAAKsvT,EACtH,oECFe,SAASwkD,IACtB,MAAM,IAAIv+W,UAAU,4IACtB,+GCDA,SAASw+W,EAAQ1iY,EAAGoL,GAClB,IAAIu+K,EAAIvmL,OAAOC,KAAKrD,GACpB,GAAIoD,OAAOqoS,sBAAuB,CAChC,IAAI3/L,EAAI1oG,OAAOqoS,sBAAsBzrS,GACrCoL,IAAM0gG,EAAIA,EAAEppG,QAAO,SAAU0I,GAC3B,OAAOhI,OAAOihD,yBAAyBrkD,EAAGoL,GAAGsZ,UAC/C,KAAKilK,EAAE3lL,KAAKyf,MAAMkmK,EAAG79E,EACvB,CACA,OAAO69E,CACT,CACe,SAASg5M,EAAe3iY,GACrC,IAAK,IAAIoL,EAAI,EAAGA,EAAIwX,UAAUpmB,OAAQ4O,IAAK,CACzC,IAAIu+K,EAAI,MAAQ/mK,UAAUxX,GAAKwX,UAAUxX,GAAK,CAAC,EAC/CA,EAAI,EAAIs3X,EAAQt/X,OAAOumL,IAAI,GAAIrmL,SAAQ,SAAU8H,IAC/C,OAAepL,EAAGoL,EAAGu+K,EAAEv+K,GACzB,IAAKhI,OAAOw/X,0BAA4Bx/X,OAAOmtH,iBAAiBvwH,EAAGoD,OAAOw/X,0BAA0Bj5M,IAAM+4M,EAAQt/X,OAAOumL,IAAIrmL,SAAQ,SAAU8H,GAC7IhI,OAAOs1C,eAAe14C,EAAGoL,EAAGhI,OAAOihD,yBAAyBslI,EAAGv+K,GACjE,GACF,CACA,OAAOpL,CACT,qCCpBe,SAAS8F,EAAyB4E,EAAQ42X,GACvD,GAAc,MAAV52X,EAAgB,MAAO,CAAC,EAC5B,IACInH,EAAKmmB,EADLg5B,ECHS,SAAuCh4C,EAAQ42X,GAC5D,GAAc,MAAV52X,EAAgB,MAAO,CAAC,EAC5B,IAEInH,EAAKmmB,EAFLg5B,EAAS,CAAC,EACV6+U,EAAan+X,OAAOC,KAAKqH,GAE7B,IAAKgf,EAAI,EAAGA,EAAI63W,EAAW/kY,OAAQktB,IACjCnmB,EAAMg+X,EAAW73W,GACb43W,EAASzmX,QAAQtX,IAAQ,IAC7Bm/C,EAAOn/C,GAAOmH,EAAOnH,IAEvB,OAAOm/C,CACT,CDRe,CAA6Bh4C,EAAQ42X,GAElD,GAAIl+X,OAAOqoS,sBAAuB,CAChC,IAAIo3F,EAAmBz/X,OAAOqoS,sBAAsB/gS,GACpD,IAAKgf,EAAI,EAAGA,EAAIm5W,EAAiBrmY,OAAQktB,IACvCnmB,EAAMs/X,EAAiBn5W,GACnB43W,EAASzmX,QAAQtX,IAAQ,GACxBH,OAAOwgB,UAAUulR,qBAAqBllR,KAAKvZ,EAAQnH,KACxDm/C,EAAOn/C,GAAOmH,EAAOnH,GAEzB,CACA,OAAOm/C,CACT,oEEfe,SAASogV,EAAgBh3R,EAAG1oE,GAKzC,OAJA0/V,EAAkB1/X,OAAOugB,eAAiBvgB,OAAOugB,eAAeJ,OAAS,SAAyBuoF,EAAG1oE,GAEnG,OADA0oE,EAAE9nD,UAAY5gB,EACP0oE,CACT,EACOg3R,EAAgBh3R,EAAG1oE,EAC5B,yICFe,SAAS/jC,EAAe0rB,EAAKrB,GAC1C,OAAO,EAAAuB,EAAA,GAAeF,ICLT,SAA+B3f,EAAGmqB,GAC/C,IAAIo0J,EAAI,MAAQv+K,EAAI,KAAO,oBAAsBmlB,QAAUnlB,EAAEmlB,OAAO6jR,WAAahpS,EAAE,cACnF,GAAI,MAAQu+K,EAAG,CACb,IAAI3pL,EACF0B,EACAgoB,EACAggP,EACAlmP,EAAI,GACJlhB,GAAI,EACJwpG,GAAI,EACN,IACE,GAAIpiF,GAAKigK,EAAIA,EAAE1lK,KAAK7Y,IAAIi3E,KAAM,IAAM9sD,EAAG,CACrC,GAAInyB,OAAOumL,KAAOA,EAAG,OACrBrnL,GAAI,CACN,MAAO,OAASA,GAAKtC,EAAI0pB,EAAEzF,KAAK0lK,IAAIhoL,QAAU6hB,EAAExf,KAAKhE,EAAE8B,OAAQ0hB,EAAEhnB,SAAW+4B,GAAIjzB,GAAI,GACtF,CAAE,MAAO8I,GACP0gG,GAAI,EAAIpqG,EAAI0J,CACd,CAAE,QACA,IACE,IAAK9I,GAAK,MAAQqnL,EAAU,SAAM+/E,EAAI//E,EAAU,SAAKvmL,OAAOsmQ,KAAOA,GAAI,MACzE,CAAE,QACA,GAAI59J,EAAG,MAAMpqG,CACf,CACF,CACA,OAAO8hB,CACT,CACF,CDrBgC,CAAqBuH,EAAKrB,KAAM,EAAAyB,EAAA,GAA2BJ,EAAKrB,KAAM,EAAA0B,EAAA,IACtG,yGEFe,SAASlL,EAAmB6K,GACzC,OCJa,SAA4BA,GACzC,GAAIiI,MAAMC,QAAQlI,GAAM,OAAO,EAAAg4W,EAAA,GAAiBh4W,EAClD,CDES,CAAkBA,KAAQ,EAAAG,EAAA,GAAgBH,KAAQ,EAAAI,EAAA,GAA2BJ,IELvE,WACb,MAAM,IAAI7G,UAAU,uIACtB,CFG8F,EAC9F,mFGJe,SAAS8+W,EAAe14U,GACrC,IAAI/mD,ECFS,SAAsB8Z,EAAO4lX,GAC1C,GAAuB,YAAnB,OAAQ5lX,IAAiC,OAAVA,EAAgB,OAAOA,EAC1D,IAAI6lX,EAAO7lX,EAAMkT,OAAO4yW,aACxB,QAAa1jY,IAATyjY,EAAoB,CACtB,IAAIpsX,EAAMosX,EAAKj/W,KAAK5G,EAAO4lX,GAAQ,WACnC,GAAqB,YAAjB,OAAQnsX,GAAmB,OAAOA,EACtC,MAAM,IAAIoN,UAAU,+CACtB,CACA,OAAiB,WAAT++W,EAAoBl1U,OAASlwD,QAAQwf,EAC/C,CDPY,CAAYitC,EAAK,UAC3B,MAAwB,YAAjB,OAAQ/mD,GAAoBA,EAAMwqD,OAAOxqD,EAClD,qCELe,SAASg8W,EAAQzzQ,GAG9B,OAAOyzQ,EAAU,mBAAqBhvV,QAAU,iBAAmBA,OAAO6jR,SAAW,SAAUtoM,GAC7F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAK,mBAAqBv7E,QAAUu7E,EAAEtnF,cAAgB+L,QAAUu7E,IAAMv7E,OAAO3M,UAAY,gBAAkBkoF,CACpH,EAAGyzQ,EAAQzzQ,EACb,gHCPe,SAASs3R,EAA4Bt3R,EAAGu3R,GACrD,GAAKv3R,EAAL,CACA,GAAiB,kBAANA,EAAgB,OAAO,OAAiBA,EAAGu3R,GACtD,IAAI3hY,EAAI0B,OAAOwgB,UAAUjkB,SAASskB,KAAK6nF,GAAGlqF,MAAM,GAAI,GAEpD,MADU,WAANlgB,GAAkBoqG,EAAEtnF,cAAa9iB,EAAIoqG,EAAEtnF,YAAY7nB,MAC7C,QAAN+E,GAAqB,QAANA,EAAoBsxB,MAAMrE,KAAKm9E,GACxC,cAANpqG,GAAqB,2CAA2C2qB,KAAK3qB,IAAW,OAAiBoqG,EAAGu3R,QAAxG,CALc,CAMhB,m+DCPIC,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqB/jY,IAAjBgkY,EACH,OAAOA,EAAa16X,QAGrB,IAAI2gD,EAAS45U,EAAyBE,GAAY,CACjDr6X,GAAIq6X,EACJE,QAAQ,EACR36X,QAAS,CAAC,GAUX,OANA46X,EAAoBH,GAAUv/W,KAAKylC,EAAO3gD,QAAS2gD,EAAQA,EAAO3gD,QAASw6X,GAG3E75U,EAAOg6U,QAAS,EAGTh6U,EAAO3gD,OACf,CAGAw6X,EAAoBtnW,EAAI0nW,EC3BxBJ,EAAoB7hY,EAAI,SAASgoD,GAChC,IAAI45Q,EAAS55Q,GAAUA,EAAO6jR,WAC7B,WAAa,OAAO7jR,EAAgB,OAAG,EACvC,WAAa,OAAOA,CAAQ,EAE7B,OADA65U,EAAoB9oW,EAAE6oS,EAAQ,CAAE9/S,EAAG8/S,IAC5BA,CACR,aCPA,IACIsgE,EADA9mF,EAAW15S,OAAOkhB,eAAiB,SAASuN,GAAO,OAAOzuB,OAAOkhB,eAAeuN,EAAM,EAAI,SAASA,GAAO,OAAOA,EAAImyB,SAAW,EAQpIu/U,EAAoB55M,EAAI,SAAS7nL,EAAO6L,GAEvC,GADU,EAAPA,IAAU7L,EAAQyiB,KAAKziB,IAChB,EAAP6L,EAAU,OAAO7L,EACpB,GAAoB,kBAAVA,GAAsBA,EAAO,CACtC,GAAW,EAAP6L,GAAa7L,EAAMyrU,WAAY,OAAOzrU,EAC1C,GAAW,GAAP6L,GAAoC,oBAAf7L,EAAM4J,KAAqB,OAAO5J,CAC5D,CACA,IAAI+hY,EAAKzgY,OAAOqhB,OAAO,MACvB8+W,EAAoBn4X,EAAEy4X,GACtB,IAAIxlQ,EAAM,CAAC,EACXulQ,EAAiBA,GAAkB,CAAC,KAAM9mF,EAAS,CAAC,GAAIA,EAAS,IAAKA,EAASA,IAC/E,IAAI,IAAIp1S,EAAiB,EAAPiG,GAAY7L,EAAyB,iBAAX4F,KAAyBk8X,EAAe/oX,QAAQnT,GAAUA,EAAUo1S,EAASp1S,GACxHtE,OAAOs8C,oBAAoBh4C,GAASpE,SAAQ,SAASC,GAAO86H,EAAI96H,GAAO,WAAa,OAAOzB,EAAMyB,EAAM,CAAG,IAI3G,OAFA86H,EAAa,QAAI,WAAa,OAAOv8H,CAAO,EAC5CyhY,EAAoB9oW,EAAEopW,EAAIxlQ,GACnBwlQ,CACR,KCxBAN,EAAoB9oW,EAAI,SAAS1xB,EAAS+6X,GACzC,IAAI,IAAIvgY,KAAOugY,EACXP,EAAoBz3R,EAAEg4R,EAAYvgY,KAASggY,EAAoBz3R,EAAE/iG,EAASxF,IAC5EH,OAAOs1C,eAAe3vC,EAASxF,EAAK,CAAEmhB,YAAY,EAAMzf,IAAK6+X,EAAWvgY,IAG3E,ECPAggY,EAAoBjhY,EAAI,CAAC,EAGzBihY,EAAoBvjY,EAAI,SAAS+jY,GAChC,OAAOrkX,QAAQ5U,IAAI1H,OAAOC,KAAKkgY,EAAoBjhY,GAAG6pB,QAAO,SAAS2qQ,EAAUvzR,GAE/E,OADAggY,EAAoBjhY,EAAEiB,GAAKwgY,EAASjtG,GAC7BA,CACR,GAAG,IACJ,ECPAysG,EAAoB75H,EAAI,SAASq6H,GAEhC,MAAO,cAA4B,MAAZA,EAAkB,QAAUA,GAAW,IAAM,CAAC,IAAM,WAAW,IAAM,YAAYA,GAAW,WACpH,ECHAR,EAAoBS,SAAW,SAASD,GAEvC,MAAO,eAA6B,MAAZA,EAAkB,QAAUA,GAAW,IAAM,CAAC,IAAM,WAAW,IAAM,YAAYA,GAAW,YACrH,ECJAR,EAAoBjgD,EAAI,WACvB,GAA0B,kBAAf2gD,WAAyB,OAAOA,WAC3C,IACC,OAAO1/W,MAAQ,IAAIb,SAAS,cAAb,EAChB,CAAE,MAAO1jB,GACR,GAAsB,kBAAX6E,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxB0+X,EAAoBz3R,EAAI,SAASj6E,EAAK6F,GAAQ,OAAOt0B,OAAOwgB,UAAUoQ,eAAe/P,KAAK4N,EAAK6F,EAAO,aCAtG,IAAIwoS,EAAa,CAAC,EACdgkE,EAAoB,cAExBX,EAAoBhuW,EAAI,SAASxqB,EAAKpJ,EAAM4B,EAAKwgY,GAChD,GAAG7jE,EAAWn1T,GAAQm1T,EAAWn1T,GAAK/G,KAAKrC,OAA3C,CACA,IAAIi7C,EAAQunV,EACZ,QAAW1kY,IAAR8D,EAEF,IADA,IAAI8xT,EAAUluS,SAASiO,qBAAqB,UACpC1L,EAAI,EAAGA,EAAI2rS,EAAQ74T,OAAQktB,IAAK,CACvC,IAAIjoB,EAAI4zT,EAAQ3rS,GAChB,GAAGjoB,EAAEkkD,aAAa,QAAU56C,GAAOtJ,EAAEkkD,aAAa,iBAAmBu+U,EAAoB3gY,EAAK,CAAEq5C,EAASn7C,EAAG,KAAO,CACpH,CAEGm7C,IACHunV,GAAa,GACbvnV,EAASz1B,SAASgO,cAAc,WAEzBu1S,QAAU,QACjB9tR,EAAO4qM,QAAU,IACb+7I,EAAoBa,IACvBxnV,EAAO/B,aAAa,QAAS0oV,EAAoBa,IAElDxnV,EAAO/B,aAAa,eAAgBqpV,EAAoB3gY,GAExDq5C,EAAOlpB,IAAM3oB,GAEdm1T,EAAWn1T,GAAO,CAACpJ,GACnB,IAAI0iY,EAAmB,SAAShjM,EAAM/6L,GAErCs2C,EAAOzI,QAAUyI,EAAO/I,OAAS,KACjCrf,aAAagzN,GACb,IAAI88I,EAAUpkE,EAAWn1T,GAIzB,UAHOm1T,EAAWn1T,GAClB6xC,EAAO/nB,YAAc+nB,EAAO/nB,WAAWkoB,YAAYH,GACnD0nV,GAAWA,EAAQhhY,SAAQ,SAAS0gB,GAAM,OAAOA,EAAG1d,EAAQ,IACzD+6L,EAAM,OAAOA,EAAK/6L,EACtB,EACIkhP,EAAU/yN,WAAW4vW,EAAiB9gX,KAAK,UAAM9jB,EAAW,CAAEZ,KAAM,UAAW6jD,OAAQ9F,IAAW,MACtGA,EAAOzI,QAAUkwV,EAAiB9gX,KAAK,KAAMq5B,EAAOzI,SACpDyI,EAAO/I,OAASwwV,EAAiB9gX,KAAK,KAAMq5B,EAAO/I,QACnDswV,GAAch9W,SAAS01B,KAAKnnB,YAAYknB,EApCkB,CAqC3D,KCxCA2mV,EAAoBn4X,EAAI,SAASrC,GACX,qBAAXwnB,QAA0BA,OAAOi1Q,aAC1CpiS,OAAOs1C,eAAe3vC,EAASwnB,OAAOi1Q,YAAa,CAAE1jS,MAAO,WAE7DsB,OAAOs1C,eAAe3vC,EAAS,aAAc,CAAEjH,OAAO,GACvD,ECNAyhY,EAAoBgB,IAAM,SAAS76U,GAGlC,OAFAA,EAAO95B,MAAQ,GACV85B,EAAOvtD,WAAUutD,EAAOvtD,SAAW,IACjCutD,CACR,ECJA65U,EAAoBngW,EAAI,eCAxB,GAAwB,qBAAbjc,SAAX,CACA,IA6CIq9W,EAAiB,SAAST,GAC7B,OAAO,IAAIrkX,SAAQ,SAASuC,EAAStC,GACpC,IAAII,EAAOwjX,EAAoBS,SAASD,GACpCU,EAAWlB,EAAoBngW,EAAIrjB,EACvC,GAlBmB,SAASA,EAAM0kX,GAEnC,IADA,IAAIC,EAAmBv9W,SAASiO,qBAAqB,QAC7C1L,EAAI,EAAGA,EAAIg7W,EAAiBloY,OAAQktB,IAAK,CAChD,IACIi7W,GADA71T,EAAM41T,EAAiBh7W,IACRi8B,aAAa,cAAgBmpB,EAAInpB,aAAa,QACjE,GAAe,eAAZmpB,EAAI81T,MAAyBD,IAAa5kX,GAAQ4kX,IAAaF,GAAW,OAAO31T,CACrF,CACA,IAAI+1T,EAAoB19W,SAASiO,qBAAqB,SACtD,IAAQ1L,EAAI,EAAGA,EAAIm7W,EAAkBroY,OAAQktB,IAAK,CACjD,IAAIolD,EAEJ,IADI61T,GADA71T,EAAM+1T,EAAkBn7W,IACTi8B,aAAa,gBAChB5lC,GAAQ4kX,IAAaF,EAAU,OAAO31T,CACvD,CACD,CAKKg2T,CAAe/kX,EAAM0kX,GAAW,OAAOxiX,KAjDrB,SAAS8hX,EAASU,EAAUM,EAAQ9iX,EAAStC,GACnE,IAAIqlX,EAAU79W,SAASgO,cAAc,QAErC6vW,EAAQJ,IAAM,aACdI,EAAQnmY,KAAO,WAiBfmmY,EAAQ7wV,QAAU6wV,EAAQnxV,OAhBL,SAASvtC,GAG7B,GADA0+X,EAAQ7wV,QAAU6wV,EAAQnxV,OAAS,KAChB,SAAfvtC,EAAMzH,KACTojB,QACM,CACN,IAAIgjX,EAAY3+X,IAAyB,SAAfA,EAAMzH,KAAkB,UAAYyH,EAAMzH,MAChEqmY,EAAW5+X,GAASA,EAAMo8C,QAAUp8C,EAAMo8C,OAAO3iC,MAAQ0kX,EACzDpiY,EAAM,IAAIkD,MAAM,qBAAuBw+X,EAAU,cAAgBmB,EAAW,KAChF7iY,EAAIwmF,KAAO,wBACXxmF,EAAIxD,KAAOomY,EACX5iY,EAAI6c,QAAUgmX,EACVF,EAAQnwW,YAAYmwW,EAAQnwW,WAAWkoB,YAAYioV,GACvDrlX,EAAOtd,EACR,CACD,EAEA2iY,EAAQjlX,KAAO0kX,EAEXM,EACHA,EAAOlwW,WAAW0nB,aAAayoV,EAASD,EAAOx0G,aAE/CppQ,SAAS01B,KAAKnnB,YAAYsvW,EAG5B,CAoBEG,CAAiBpB,EAASU,EAAU,KAAMxiX,EAAStC,EACpD,GACD,EAEIylX,EAAqB,CACxB,IAAK,GAGN7B,EAAoBjhY,EAAE+iY,QAAU,SAAStB,EAASjtG,GAE9CsuG,EAAmBrB,GAAUjtG,EAAS9yR,KAAKohY,EAAmBrB,IACzB,IAAhCqB,EAAmBrB,IAFX,CAAC,IAAM,EAAE,IAAM,GAEwBA,IACtDjtG,EAAS9yR,KAAKohY,EAAmBrB,GAAWS,EAAeT,GAASr4X,MAAK,WACxE05X,EAAmBrB,GAAW,CAC/B,IAAG,SAAS/jY,GAEX,aADOolY,EAAmBrB,GACpB/jY,CACP,IAEF,CAtE2C,gBCK3C,IAAIslY,EAAkB,CACrB,IAAK,GAGN/B,EAAoBjhY,EAAEy4B,EAAI,SAASgpW,EAASjtG,GAE1C,IAAIyuG,EAAqBhC,EAAoBz3R,EAAEw5R,EAAiBvB,GAAWuB,EAAgBvB,QAAWtkY,EACtG,GAA0B,IAAvB8lY,EAGF,GAAGA,EACFzuG,EAAS9yR,KAAKuhY,EAAmB,QAC3B,CAGL,IAAI95X,EAAU,IAAIiU,SAAQ,SAASuC,EAAStC,GAAU4lX,EAAqBD,EAAgBvB,GAAW,CAAC9hX,EAAStC,EAAS,IACzHm3Q,EAAS9yR,KAAKuhY,EAAmB,GAAK95X,GAGtC,IAAIV,EAAMw4X,EAAoBngW,EAAImgW,EAAoB75H,EAAEq6H,GAEpDp+X,EAAQ,IAAIJ,MAgBhBg+X,EAAoBhuW,EAAExqB,GAfH,SAASzE,GAC3B,GAAGi9X,EAAoBz3R,EAAEw5R,EAAiBvB,KAEf,KAD1BwB,EAAqBD,EAAgBvB,MACRuB,EAAgBvB,QAAWtkY,GACrD8lY,GAAoB,CACtB,IAAIN,EAAY3+X,IAAyB,SAAfA,EAAMzH,KAAkB,UAAYyH,EAAMzH,MAChE2mY,EAAUl/X,GAASA,EAAMo8C,QAAUp8C,EAAMo8C,OAAOhvB,IACpD/tB,EAAMkS,QAAU,iBAAmBksX,EAAU,cAAgBkB,EAAY,KAAOO,EAAU,IAC1F7/X,EAAMhJ,KAAO,iBACbgJ,EAAM9G,KAAOomY,EACbt/X,EAAMuZ,QAAUsmX,EAChBD,EAAmB,GAAG5/X,EACvB,CAEF,GACyC,SAAWo+X,EAASA,EAE/D,CAEH,EAaA,IAAI0B,EAAuB,SAASC,EAA4Bt7X,GAC/D,IAKIo5X,EAAUO,EALV4B,EAAWv7X,EAAK,GAChBw7X,EAAcx7X,EAAK,GACnBy7X,EAAUz7X,EAAK,GAGIsf,EAAI,EAC3B,GAAGi8W,EAASz5W,MAAK,SAAS/iB,GAAM,OAA+B,IAAxBm8X,EAAgBn8X,EAAW,IAAI,CACrE,IAAIq6X,KAAYoC,EACZrC,EAAoBz3R,EAAE85R,EAAapC,KACrCD,EAAoBtnW,EAAEunW,GAAYoC,EAAYpC,IAGhD,GAAGqC,EAAsBA,EAAQtC,EAClC,CAEA,IADGmC,GAA4BA,EAA2Bt7X,GACrDsf,EAAIi8W,EAASnpY,OAAQktB,IACzBq6W,EAAU4B,EAASj8W,GAChB65W,EAAoBz3R,EAAEw5R,EAAiBvB,IAAYuB,EAAgBvB,IACrEuB,EAAgBvB,GAAS,KAE1BuB,EAAgBvB,GAAW,CAG7B,EAEI+B,EAAqB3gG,KAA6B,uBAAIA,KAA6B,wBAAK,GAC5F2gG,EAAmBxiY,QAAQmiY,EAAqBliX,KAAK,KAAM,IAC3DuiX,EAAmB9hY,KAAOyhY,EAAqBliX,KAAK,KAAMuiX,EAAmB9hY,KAAKuf,KAAKuiX,wGClFtFjhY,OAAe8+Q,MAAQA,EACvB9+Q,OAAekhY,iBAAmBA,IAClClhY,OAAeu+Q,SAAWA,EAC1Bv+Q,OAAeioU,EAAKjoU,OAAeu9S,OAASC,6aC6LG,IAAIv5R,IAAI,CACtD,oCACA,sBACA,kHC8IF,IACMk9W,EAAsBriH,EAAsB,gBAY5C,SAAUsiH,EAAalqY,GAKR,IAJnBmtB,EAImBntB,EAJnBmtB,SACA/sB,EAGmBJ,EAHnBI,SACA+pY,EAEmBnqY,EAFnBmqY,OACArhY,EACmB9I,EADnB8I,OAEIshY,EAAaxiH,EAAAA,SACS,MAAtBwiH,EAAWz+X,UACby+X,EAAWz+X,SAAUsd,EAAAA,EAAAA,IAAqB,CAAEngB,OAAAA,EAAQyiB,UAAU,KAGhE,IAAIC,EAAU4+W,EAAWz+X,QACzB0+X,EAA4BziH,EAAAA,SAAe,CACzCn8P,OAAQD,EAAQC,OAChB1H,SAAUyH,EAAQzH,WAClBumX,GAAAhnY,EAAAA,EAAAA,GAAA+mY,EAAA,GAHG57X,EAAK67X,EAAA,GAAEC,EAAYD,EAAA,GAIlBE,GAAuBL,GAAU,CAAC,GAAlCK,mBACF97X,EAAWk5Q,EAAAA,aACZ,SAAAyf,GACCmjG,GAAsBP,EAClBA,GAAoB,kBAAMM,EAAaljG,EAAS,IAChDkjG,EAAaljG,EACnB,GACA,CAACkjG,EAAcC,IAKjB,OAFA5iH,EAAAA,iBAAsB,kBAAMp8P,EAAQY,OAAO1d,EAAS,GAAE,CAAC8c,EAAS9c,IAG9Dk5Q,EAAAA,cAACqnG,EAAAA,GAAM,CACL9hW,SAAUA,EACV/sB,SAAUA,EACV2jB,SAAUtV,EAAMsV,SAChBkpW,eAAgBx+W,EAAMgd,OACtBkwB,UAAWnwB,GAGjB,CAkHA,IAAMi/W,EACc,qBAAX3hY,QACoB,qBAApBA,OAAOsiB,UAC2B,qBAAlCtiB,OAAOsiB,SAASgO,cAEnBsxW,EAAqB,gCAKdC,EAAO/iH,EAAAA,YAClB,SAAoBz0P,EAYlBtnB,GAAG,IAKC++X,EAfFhiY,EASDuqB,EATCvqB,QACAqkT,EAQD95R,EARC85R,SACA49E,EAOD13W,EAPC03W,eACA5rX,EAMDkU,EANClU,QACAxQ,EAKD0kB,EALC1kB,MACAk4C,EAIDxzB,EAJCwzB,OACA7kC,EAGDqR,EAHCrR,GACAgpX,EAED33W,EAFC23W,mBACGjhY,EAAI8sS,EAAAxjR,EAAAnpB,GAIHmjB,EAAay6P,EAAAA,WAAiBmjH,EAAAA,IAA9B59W,SAIF69W,GAAa,EAEjB,GAAkB,kBAAPlpX,GAAmB4oX,EAAmBp6W,KAAKxO,KAEpD8oX,EAAe9oX,EAGX2oX,GACF,IACE,IAAIQ,EAAa,IAAI/+W,IAAIpjB,OAAOib,SAASC,MACrCknX,EAAYppX,EAAGnD,WAAW,MAC1B,IAAIuN,IAAI++W,EAAW/qG,SAAWp+Q,GAC9B,IAAIoK,IAAIpK,GACR6I,GAAOyC,EAAAA,EAAAA,IAAc89W,EAAU3hX,SAAU4D,GAEzC+9W,EAAUjnX,SAAWgnX,EAAWhnX,QAAkB,MAAR0G,EAE5C7I,EAAK6I,EAAOugX,EAAU1hX,OAAS0hX,EAAUzhX,KAEzCuhX,GAAa,EAEf,MAAO/mY,GAOR,CAKL,IAAI+f,GAAO6mW,EAAAA,EAAAA,IAAQ/oW,EAAI,CAAEmrS,SAAAA,IAErBk+E,WAwWNrpX,EAAMw/V,GAaA,IAAA8pB,OAAA,MAAF,CAAC,EAAC9pB,EAXJ36T,EAAMykV,EAANzkV,OACS0kV,EAAWD,EAApBnsX,QACAxQ,EAAK28X,EAAL38X,MACAq8X,EAAkBM,EAAlBN,mBACA79E,EAAAm+E,EAAAn+E,SASEjsS,GAAWC,EAAAA,EAAAA,MACX8C,GAAWqnW,EAAAA,EAAAA,MACXzgW,GAAOugW,EAAAA,EAAAA,IAAgBppW,EAAI,CAAEmrS,SAAAA,IAEjC,OAAOrlC,EAAAA,aACJ,SAAAr9Q,GACC,GDp5BU,SACdA,EACAo8C,GAEA,OACmB,IAAjBp8C,EAAMuoH,UACJnsE,GAAqB,UAAXA,KAVhB,SAAyBp8C,GACvB,SAAUA,EAAMutJ,SAAWvtJ,EAAMq4D,QAAUr4D,EAAMu4D,SAAWv4D,EAAMy4D,SACpE,CASKsoU,CAAgB/gY,EAErB,CC24BUghY,CAAuBhhY,EAAOo8C,GAAS,CACzCp8C,EAAM2uD,iBAIN,IAAIj6C,OACcvb,IAAhB2nY,EACIA,GACA1hX,EAAAA,EAAAA,IAAW5F,MAAc4F,EAAAA,EAAAA,IAAWgB,GAE1C3J,EAASc,EAAI,CAAE7C,QAAAA,EAASxQ,MAAAA,EAAOq8X,mBAAAA,EAAoB79E,SAAAA,GACpD,IAEH,CACElpS,EACA/C,EACA2J,EACA0gX,EACA58X,EACAk4C,EACA7kC,EACAgpX,EACA79E,GAGN,CAtZ0Bu+E,CAAoB1pX,EAAI,CAC5C7C,QAAAA,EACAxQ,MAAAA,EACAk4C,OAAAA,EACAmkV,mBAAAA,EACA79E,SAAAA,IAWF,OAEErlC,EAAAA,cAAA,IAAAz9P,EAAA,GACMtgB,EAAI,CACRma,KAAM4mX,GAAgB5mX,EACtBpb,QAASoiY,GAAcH,EAAiBjiY,EAd5C,SACE2B,GAEI3B,GAASA,EAAQ2B,GAChBA,EAAMwxT,kBACTovE,EAAgB5gY,EAEpB,EAQIsB,IAAKA,EACL86C,OAAQA,IAGd,IAwNF,IAkFK6kU,EAOAG,GAPL,SAAKH,GACHA,EAAA,4CACAA,EAAA,sBACAA,EAAA,oCACAA,EAAA,uBACD,EALD,CAAKA,IAAAA,EAKJ,KAED,SAAKG,GACHA,EAAA,0BACAA,EAAA,2CACD,CAHD,CAAKA,IAAAA,EAGJ,yDCv4BD,EAA4B,uCAA5B,EAA6E,8CCC7E,ECGsC,WAClC,IAAM3qW,GAAWC,EAAAA,EAAAA,MAEjB,OACInd,EAAAA,EAAAA,MAAA,OAAKL,UAAWiG,EAAiBtJ,SAAA,EAC7BC,EAAAA,EAAAA,KAAA,KAAGoD,UAAWiG,EAAetJ,SAAC,sBAC9BC,EAAAA,EAAAA,KAAA,KAAAD,SAAG,yGAGHC,EAAAA,EAAAA,KAACwI,EAAAA,EAAe,CACZpF,UAAU,YACVmF,QAAS,kBAAMoY,EAAS,IAAK,CAAE/B,SAAS,GAAO,EAAC7e,SACnD,wBAKb,EClBM+tX,EAAa,SAAAjwE,IAAAlqR,EAAAA,EAAAA,GAAAm6V,EAAAjwE,GAAA,IAAAjqR,GAAAC,EAAAA,EAAAA,GAAAi6V,GAAA,SAAAA,IAAA,IAAA31V,GAAAnS,EAAAA,EAAAA,GAAA,KAAA8nW,GAAA,QAAApxE,EAAAl2R,UAAApmB,OAAAgW,EAAA,IAAAwgB,MAAA8lR,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAAvmS,EAAAumS,GAAAn2R,UAAAm2R,GACO,OADPxkR,EAAAvE,EAAA/L,KAAAR,MAAAuM,EAAA,OAAA9qB,OAAAsN,KACjBhI,MAAQ,CAAE7E,MAAO,MAAM4uB,CAAC,CAYvB,OAZsBlS,EAAAA,EAAAA,GAAA6nW,EAAA,EAAA3mX,IAAA,oBAAAzB,MAEvB,SAAkB6D,EAAckkX,GAC9BtlW,KAAK9Z,SAAS,CAAE9E,MAAAA,GAClB,GAAC,CAAApC,IAAA,SAAAzB,MAED,WACE,OAAyB,OAArByiB,KAAK/Z,MAAM7E,MACN4e,KAAK7d,MAAMvK,UAGbC,EAAAA,EAAAA,KAACorY,EAAmB,GAC7B,KAACtd,CAAA,CAbgB,CAASvmG,EAAAA,WCF5B,EDkBA,0CEbA,SAAS3jR,EAAsBA,GAC3BukB,KAAK1M,QAAU7X,CAAA,CAGnBA,EAAsB4jB,UAAY,IAAIre,MACtCvF,EAAsB4jB,UAAUjnB,KAAO,wBA6BvC,IAAAyO,EAAkC,oBAAXvG,QACnBA,OAAOqoD,MACProD,OAAOqoD,KAAK3pC,KAAK1e,SA7BrB,SAAkBuG,GACd,IAAIu+K,EAAM57H,OAAO3iD,GAAO4P,QAAQ,MAAO,IACvC,GAAI2uK,EAAIntL,OAAS,GAAK,EAClB,MAAM,IAAIwD,EACN,qEAGR,IAEI,IAAY0B,EAAIoqG,EAAZtoF,EAAK,EAAekG,EAAM,EAAG8Q,EAAS,GAEzCsxE,EAAS69E,EAAIjoK,OAAOgI,MAEpBoiF,IACCpqG,EAAK8hB,EAAK,EAAS,GAAL9hB,EAAUoqG,EAASA,EAG/BtoF,IAAO,GACVgX,GAAUuzB,OAAOC,aAAa,IAAOtsD,KAAS,EAAI8hB,EAAM,IACzD,EAGAsoF,EA/BI,oEA+BWjxF,QAAQixF,GAE3B,OAAOtxE,CAAA,ECxBI,SAAAmvJ,EAAS3pL,GACpB,IAAI2pL,EAAS3pL,EAAIgb,QAAQ,KAAM,KAAKA,QAAQ,KAAM,KAClD,OAAQ2uK,EAAOntL,OAAS,GACpB,KAAK,EACD,MACJ,KAAK,EACDmtL,GAAU,KACV,MACJ,KAAK,EACDA,GAAU,IACV,MACJ,QACI,KAAM,4BAGd,IACI,OA5BR,SAA0B3pL,GACtB,OAAO6tB,mBACHziB,EAAKpL,GAAKgb,QAAQ,QAAQ,SAAShb,EAAGoL,GAClC,IAAIu+K,EAAOv+K,EAAE0iD,WAAW,GAAGnuD,SAAS,IAAIgiB,cAIxC,OAHIgoK,EAAKntL,OAAS,IACdmtL,EAAO,IAAMA,GAEV,IAAMA,CAAA,KAPzB,CA4BgCA,EAAA,CAC1B,MAAO3pL,GACL,OAAOoL,EAAKu+K,EAAA,EC5Bb,SAASjoL,EAAkB1B,GAC9BukB,KAAK1M,QAAU7X,CAAA,CAGnB0B,EAAkBkiB,UAAY,IAAIre,MAClC7D,EAAkBkiB,UAAUjnB,KAAO,0BAEpB,SAASqD,EAAOoL,GAC3B,GAAqB,iBAAVpL,EACP,MAAM,IAAI0B,EAAkB,2BAIhC,IAAIoqG,GAAA,KADJ1gG,EAAUA,GAAW,CAAC,GACJ4pC,OAAkB,EAAI,EACxC,IACI,OAAOn0B,KAAKC,MAAM6oK,EAAkB3pL,EAAMwY,MAAM,KAAKszF,IAAA,CACvD,MAAO9rG,GACL,MAAM,IAAI0B,EAAkB,4BAA8B1B,EAAE6X,QAAA,sBCXpE,EARsB,SAACuH,EAAmBI,GAAmB,OAC3DZ,IAAAA,KAAW,wBAAyB,KAAM,CACxCE,QAAS,CACPS,cAAc,UAADra,OAAYka,GACzB,SAAUI,IAEX,gCCwGL,EAvGwE,SAAHzjB,GAAsB,IAAhBI,EAAQJ,EAARI,SACjE4gB,GAAWC,EAAAA,EAAAA,MACTsI,GAAa6hW,EAAAA,EAAAA,MAAb7hW,SAERpmB,GAAwBC,EAAAA,EAAAA,WAAkB,GAAKC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAxClD,EAAIoD,EAAA,GAAE2V,EAAO3V,EAAA,GACpB0B,GAA8C3B,EAAAA,EAAAA,WAAkB,GAAM4B,GAAA1B,EAAAA,EAAAA,GAAAyB,EAAA,GAA/D6c,EAAe5c,EAAA,GAAE0mY,EAAkB1mY,EAAA,GAC1CwQ,GAA0DpS,EAAAA,EAAAA,WACtD,GACHqS,GAAAnS,EAAAA,EAAAA,GAAAkS,EAAA,GAFMsL,EAAqBrL,EAAA,GAAEk2X,EAAwBl2X,EAAA,GAGtDE,GAAwBvS,EAAAA,EAAAA,eAA4BM,GAAUkS,GAAAtS,EAAAA,EAAAA,GAAAqS,EAAA,GAAvDi2X,EAAIh2X,EAAA,GAAEi2X,EAAOj2X,EAAA,GAEdk2X,GAASx0F,EAAAA,EAAAA,cAAY,WACvBh0R,EAAAA,EAAoBQ,QACpB+nX,OAAQnoY,GACRsd,EAAS,SACb,GAAG,CAACA,KAIJ7b,EAAAA,EAAAA,YAAU,WACN,IAAMke,EAAYC,EAAAA,EAAoBC,eAChCE,EAAcH,EAAAA,EAAoBI,iBAEtB,OAAdL,GAAsC,OAAhBI,EACtBsoX,EAAc1oX,EAAWI,GACpB9T,MAAK,SAAAC,GACF,IAAMo8X,EAAuBC,EAAU5oX,GAEjCuoX,EAAc,CAChBM,SACIF,EACA,8DAEJG,SAAUv8X,EAASvB,KAAK89X,SACxBC,MACIJ,EACA,iEAIRL,EAAoD,SAA3BK,EAAqB,KAC9CH,EAAQD,EACZ,IACC/7X,OAAM,SAAAjG,GACHmgB,QAAQngB,MAAMA,GACdkiY,GACJ,IACCh4X,SAAQ,kBAAMkF,GAAQ,EAAM,IAEjCA,GAAQ,EAEhB,GAAG,CAAC8yX,KAEJ3mY,EAAAA,EAAAA,YAAU,WACc,qBAATymY,EACPF,GAAmB,IAEnBA,GAAmB,GACF,WAAbniX,GACAvI,EAAS,IAAK,CAAE/B,SAAS,IAGrC,GAAG,CAAC2sX,EAAM5qX,EAAUuI,IAwBpB,OAAItpB,GAAaI,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CAACC,KAAK,iBAAiBkJ,YAAU,KAG5DpJ,EAAAA,EAAAA,KAAC+I,EAAAA,EAAsBkX,SAAQ,CAC3Bva,MAAO,CACH6b,gBAAAA,EACAd,sBAAAA,EACA8qX,KAAAA,EACA7qX,SAAU+qX,EACVO,WA/BW,SAACC,GACpB,IACIjpX,EAGAipX,EAHAjpX,UACAI,EAEA6oX,EAFA7oX,YACGmoX,GAAI7hY,EAAAA,EAAAA,GACPuiY,EAAWtiY,GAEf2hY,EAAyB7qX,GAEzBwC,EAAAA,EAAoB0B,UAAU3B,EAAWI,GACzCH,EAAAA,EAAoB8B,cAEpB,IAAM4mX,EAAuBC,EAAU5oX,GACvCuoX,EAAKQ,MACDJ,EACA,gEAGJL,EAAoD,SAA3BK,EAAqB,KAC9CH,EAAQD,EACZ,GAYUxrY,SAEDA,GAGb,sBCZA,EA5FkE,SAAHJ,GAAsB,IAAhBI,EAAQJ,EAARI,SACzDwrY,GAAS/qX,EAAAA,EAAAA,KAAT+qX,KAERzoY,GAA0DC,EAAAA,EAAAA,UAAiB,GAAEC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAtEkS,EAAqBhS,EAAA,GAAEkpY,EAAwBlpY,EAAA,GACtD0B,GAAoE3B,EAAAA,EAAAA,UAElE,GAAE4B,GAAA1B,EAAAA,EAAAA,GAAAyB,EAAA,GAFGqQ,EAA0BpQ,EAAA,GAAEwnY,EAA6BxnY,EAAA,GAGhEwQ,GAAgCpS,EAAAA,EAAAA,UAA8B,IAAGqS,GAAAnS,EAAAA,EAAAA,GAAAkS,EAAA,GAA1D22X,EAAQ12X,EAAA,GAAEg3X,EAAWh3X,EAAA,GAC5BE,GAA0CvS,EAAAA,EAAAA,UAA8B,IAAGwS,GAAAtS,EAAAA,EAAAA,GAAAqS,EAAA,GAApE+2X,EAAa92X,EAAA,GAAE+2X,EAAgB/2X,EAAA,GA2DtC,OAzDAzQ,EAAAA,EAAAA,YAAU,WACN,GAAoB,qBAATymY,EACPa,EAAY,IACZF,EAAyB,GACzBI,EAAiB,IACjBH,EAA8B,OAC3B,CAEHC,EACIb,EAAKO,SAAS7jY,KAAI,SAAAsL,GAAI,MAAK,CACvBxG,GAAIwG,EAAK/Q,OAAOe,WAChBiQ,aAAcD,EAAKhT,KACtB,KAIL,IAIOgsY,EAJDC,EAAiBvpX,EAAAA,EAAoBgC,qBAE3C,GAAuB,OAAnBunX,EACAN,EAAyB7kY,SAASmlY,SAElCN,GAAyC,QAAhBK,EAAAhB,EAAKO,SAAS,UAAE,IAAAS,OAAA,EAAhBA,EAAkB/pY,SAAU,EAE7D,CACJ,GAAG,CAAC+oY,KAEJzmY,EAAAA,EAAAA,YAAU,WACN,GAAoB,qBAATymY,EAAsB,CAC7B,IAAMkB,EAAclB,EAAKO,SAAS76X,MAC9B,SAAAsC,GAAI,OAAIA,EAAK/Q,SAAWwS,CAAqB,IAGjD,GAA2B,qBAAhBy3X,EACPH,EAAiB,QACd,CACH,IAAMD,EAAgBI,EAAYJ,cAGlCC,EACID,EAAcpkY,KAAI,SAAAsL,GAAI,MAAK,CACvBxG,GAAIwG,EAAK/Q,OAAOe,WAChBiQ,aAAcD,EAAKhT,KACtB,KAIL,IAIOmsY,EAJDC,EAAa1pX,EAAAA,EAAoBiC,iBAEvC,GAAmB,OAAfynX,EACAR,EAA8B9kY,SAASslY,SAEvCR,GAA8C,QAAhBO,EAAAL,EAAc,UAAE,IAAAK,OAAA,EAAhBA,EAAkBlqY,SAAU,EAElE,CACJ,CACJ,GAAG,CAAC+oY,EAAMv2X,KAGNhV,EAAAA,EAAAA,KAAC2hB,EAAAA,EAAgB1B,SAAQ,CACrBva,MAAO,CACHomY,SAAAA,EACAO,cAAAA,EACAr3X,sBAAAA,EACAD,2BAAAA,EACA63X,uBAAwB,eAAAC,EAAAC,EAAA,OAGL,QAHKD,EAGnB,QAHmBC,EACpBhB,EAAS76X,MACL,SAAA4G,GAAO,OAAIA,EAAQ9K,KAAOiI,EAAsBzR,UAAU,WAC7D,IAAAupY,OAAA,EAFDA,EAEGt5X,oBAAY,IAAAq5X,EAAAA,EAAI,WAAW,EAClCt6X,4BAA6B,eAAAw6X,EAAAC,EAAA,OAIV,QAJUD,EAIxB,QAJwBC,EACzBX,EAAcp7X,MACV,SAAAg8X,GAAY,OACRA,EAAalgY,KAAOgI,EAA2BxR,UAAU,WAChE,IAAAypY,OAAA,EAHDA,EAGGx5X,oBAAY,IAAAu5X,EAAAA,EAAI,WAAW,EAClCG,gBAAiB,SAACngY,GAAU,OAAKm/X,EAAyBn/X,EAAG,EAC7DogY,qBAAsB,SAACpgY,GAAU,OAAKo/X,EAA8Bp/X,EAAG,GACzEhN,SAEDA,GAGb,iCC/FA,GAA4B,iDAA5B,GAA6F,qDAA7F,GAA8J,iDCG9J,GCIqF,SAAHJ,GAI3E,IAHL+I,EAAI/I,EAAJ+I,KACA0kY,EAAeztY,EAAfytY,gBACAC,EAAa1tY,EAAb0tY,cAEAvqY,GAA4BC,EAAAA,EAAAA,WAAkB,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA7CwqY,EAAMtqY,EAAA,GAAEuqY,EAASvqY,EAAA,GAOxB,OACEhD,EAAAA,EAAAA,KAAC+S,IAAK,CACJC,OAAQtK,EACRtF,UAAU,gBACV6P,iBAAiB,gBAAelT,UAEhC0D,EAAAA,EAAAA,MAAA,OAAKL,UAAWiG,GAAiBtJ,SAAA,EAC/BC,EAAAA,EAAAA,KAAA,MAAIoD,UAAU,cAAarD,SAAC,+BAC5B0D,EAAAA,EAAAA,MAAA,OAAKL,UAAWiG,GAAqBtJ,SAAA,EACnC0D,EAAAA,EAAAA,MAAA,OAAA1D,SAAA,EACYC,EAAAA,EAAAA,KAAA,KAAAD,SAAG,+IAGH0D,EAAAA,EAAAA,MAAA,KAAA1D,SAAA,EACIC,EAAAA,EAAAA,KAAA,KAAAD,SAAG,yBAAwB,KAACC,EAAAA,EAAAA,KAAA,SAAM,oQAIlCA,EAAAA,EAAAA,KAAA,UAAMA,EAAAA,EAAAA,KAAA,SAAM,mGAGhByD,EAAAA,EAAAA,MAAA,KAAA1D,SAAA,EACIC,EAAAA,EAAAA,KAAA,KAAAD,SAAG,WAAU,KAACC,EAAAA,EAAAA,KAAA,SAAM,gXAIpBA,EAAAA,EAAAA,KAAA,UAAMA,EAAAA,EAAAA,KAAA,SAAM,kVAO5ByD,EAAAA,EAAAA,MAAA,KAAGL,UAAU,oCAAmCrD,SAAA,CAAC,aACtCC,EAAAA,EAAAA,KAAA,QAAMoD,UAAU,eAAcrD,SAAC,YAAc,6FAGxD0D,EAAAA,EAAAA,MAAA,OAAKL,UAAWiG,GAAiBtJ,SAAA,EAC/BC,EAAAA,EAAAA,KAAA,KAAGoD,UAAU,mBAAkBrD,SAAC,gCAChCC,EAAAA,EAAAA,KAAA,KAAAD,SAAG,mNAMH0D,EAAAA,EAAAA,MAAA,MAAA1D,SAAA,EACE0D,EAAAA,EAAAA,MAAA,MAAA1D,SAAA,CAAI,2GAGF0D,EAAAA,EAAAA,MAAA,MAAIhB,KAAK,IAAG1C,SAAA,EACVC,EAAAA,EAAAA,KAAA,MAAAD,SAAI,qFAIJC,EAAAA,EAAAA,KAAA,MAAAD,SAAI,+JAORC,EAAAA,EAAAA,KAAA,MAAAD,SAAI,4LAKJC,EAAAA,EAAAA,KAAA,MAAAD,SAAI,sIAKJC,EAAAA,EAAAA,KAAA,MAAAD,SAAI,sFAIJC,EAAAA,EAAAA,KAAA,MAAAD,SAAI,6IAKJC,EAAAA,EAAAA,KAAA,MAAAD,SAAI,qGAIJC,EAAAA,EAAAA,KAAA,MAAAD,SAAI,+MAMJC,EAAAA,EAAAA,KAAA,MAAAD,SAAI,kRAQNC,EAAAA,EAAAA,KAAA,KAAAD,SAAG,+EAMLC,EAAAA,EAAAA,KAAA,KAAGoD,UAAU,oCAAmCrD,SAAC,2GAIjDC,EAAAA,EAAAA,KAAA,KAAAD,UAAGC,EAAAA,EAAAA,KAAA,SAAAD,SAAO,gBAEZ0D,EAAAA,EAAAA,MAAA,OAAA1D,SAAA,EACEC,EAAAA,EAAAA,KAAC0D,GAAAA,EAAiB,CAChB3C,MAAM,UACN+C,QAASwpY,EACT3pY,OAvHkB,SAACyS,GACP,qBAATA,GACXm3X,EAAUn3X,EAAKtS,UAAW,EAC5B,KAsHQL,EAAAA,EAAAA,MAAA,OAAKL,UAAU,sCAAqCrD,SAAA,EAClDC,EAAAA,EAAAA,KAACwI,EAAAA,EAAe,CAAC/F,KAAK,SAAS8F,QAAS8kY,EAActtY,SAAC,YAGvDC,EAAAA,EAAAA,KAACwI,EAAAA,EAAe,CACd/F,KAAK,SACL6F,SAAS,iBACTC,QAAS6kY,EACTlsY,UAAWosY,EAAOvtY,SACnB,uBAQb,8CCvJA,GAAegG,GAAAA,GAAW,CACxB8lY,SAAU9lY,GAAAA,KACPvC,SAAS,2BACZ4c,SAAUra,GAAAA,KACPvC,SAAS,wCCCd,GAHqB,SAACwK,GAA0B,OAC9CpF,GAAAA,SAASwK,KAAK,eAAgBpF,EAAM,kECJtC,GAA4B,6BAA5B,GAA0E,kCAA1E,GAAmH,wBAAnH,GAA6J,mCCcvJhJ,GAAsC,CAC1C6mY,SAAU,GACVzrX,SAAU,ICbZ,GDgB4B,WAC1B,IAAQ4rX,GAAexrX,EAAAA,EAAAA,KAAfwrX,WAERlpY,GAAoCC,EAAAA,EAAAA,UAAwB,IAAGC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAxD6P,EAAU3P,EAAA,GAAE4P,EAAa5P,EAAA,GAChC0B,GAAsC3B,EAAAA,EAAAA,UACpC,CAAC,GACF4B,GAAA1B,EAAAA,EAAAA,GAAAyB,EAAA,GAFMunY,EAAWtnY,EAAA,GAAE6oY,EAAc7oY,EAAA,GAGlCwQ,GAAoCpS,EAAAA,EAAAA,WAAkB,GAAMqS,GAAAnS,EAAAA,EAAAA,GAAAkS,EAAA,GAArDktI,EAAUjtI,EAAA,GAAEq4X,EAAar4X,EAAA,GAEhC,OACEpV,EAAAA,EAAAA,KAAA,OAAKoD,UAAU,YAAWrD,UACxBC,EAAAA,EAAAA,KAAC6H,EAAAA,GAAM,CACL7C,cAAeA,GACfmB,iBAAkBgN,GAClBrL,SAAU,SAAClB,EAAMjH,GAAyB,IAArBsZ,EAAatZ,EAAbsZ,cACnBrG,EAAc,IACd86X,GAAa9mY,GACV0I,MAAK,SAAAC,GACJi+X,EAAej+X,EAASvB,MACxBy/X,GAAc,EAChB,IACCj+X,OAAM,SAAC1P,GACN8S,EAAc9S,EAChB,IACC2T,SAAQ,kBAAMwF,GAAc,EAAM,GACvC,EAAElZ,SAED,SAAAgI,GAAA,IAAGwE,EAAYxE,EAAZwE,aAAcstS,EAAa9xS,EAAb8xS,cAAec,EAAe5yS,EAAf4yS,gBAAe,OAC9Cl3S,EAAAA,EAAAA,MAAA,OAAKL,UAAWiG,GAAiBtJ,SAAA,EAC/B0D,EAAAA,EAAAA,MAAA,OAAKL,UAAU,MAAKrD,SAAA,EAClBC,EAAAA,EAAAA,KAAA,OAAKoD,UAAU,WAAUrD,UACvBC,EAAAA,EAAAA,KAAA,OAAKoD,UAAWiG,GAAsBtJ,UACpCC,EAAAA,EAAAA,KAAA,OAAKoD,UAAWiG,GAAaiuB,IAAKq2W,GAAMC,IAAI,uBAGhD5tY,EAAAA,EAAAA,KAAA,OAAKoD,UAAU,WAAUrD,UACvB0D,EAAAA,EAAAA,MAACuE,EAAAA,GAAI,CAAAjI,SAAA,EACHC,EAAAA,EAAAA,KAACmD,GAAAA,UAAS,CAAC5C,KAAK,WAAWQ,MAAM,WAAUhB,UACzCC,EAAAA,EAAAA,KAACkC,GAAAA,GAAO,CAAC3B,KAAK,gBAGhBP,EAAAA,EAAAA,KAACmD,GAAAA,UAAS,CAAC5C,KAAK,WAAWQ,MAAM,WAAUhB,UACzCC,EAAAA,EAAAA,KAACkC,GAAAA,GAAO,CAAC3B,KAAK,WAAWkC,KAAK,gBAGhCzC,EAAAA,EAAAA,KAACK,EAAAA,EAAS,CAACP,OAAQ6S,EAAYvP,UAAU,UAEzCK,EAAAA,EAAAA,MAAA,OAAKL,UAAWiG,GAAuBtJ,SAAA,EACrCC,EAAAA,EAAAA,KAACsqY,EAAI,CAAC7oX,GAAG,qBAAoB1hB,SAAC,yBAC9BC,EAAAA,EAAAA,KAACqI,GAAAA,aAAY,CAACzI,KAAM2M,EAAc9J,KAAK,SAAS0e,WAAS,EAAAphB,SAAC,sBAQlEC,EAAAA,EAAAA,KAAC6tY,GAA6B,CAC5BnlY,KAAM25I,EACN+qP,gBAAiB,kBAAMpB,EAAWC,EAAY,EAC9CoB,cAAe,WACbxzF,EAAc,WAAY,IAC1Bc,EAAgB,YAAY,GAC5B8yF,GAAc,EAChB,MAEE,KAKhB,6CEvFA,YAAgBz/X,GACd,IAAQjB,EAAiCiB,EAAjCjB,GAAI8B,EAA6Bb,EAA7Ba,MAAO9H,EAAsBiH,EAAtBjH,QAASF,EAAamH,EAAbnH,SACtBqH,EAAS,CACbwU,QAAS,CACP,SAAU7T,IAId,OAAOjG,GAAAA,SAASmU,IAAI,yBAADjU,OACQiE,EAAE,cAC3B,CAAEhG,QAAAA,EAASF,SAAAA,GACXqH,EAEH,aCfD,GCYgC,WAC9B,IAAQnB,GAAOg/W,EAAAA,EAAAA,MAAPh/W,GAERjK,GAA0BC,EAAAA,EAAAA,UAAiB,IAAGC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAvC+L,EAAK7L,EAAA,GAAE8qY,EAAQ9qY,EAAA,GACtB0B,GAA4B3B,EAAAA,EAAAA,UAAkC,CAC5D4F,cAAe,EACf5E,YAAY,EACZC,qBAAqB,EACrBC,kBAAkB,EAClBC,OAAQ,KACRS,GAAA1B,EAAAA,EAAAA,GAAAyB,EAAA,GANKqpY,EAAMppY,EAAA,GAAEqpY,EAASrpY,EAAA,GAQxBwQ,GAAoCpS,EAAAA,EAAAA,WAAkB,GAAMqS,GAAAnS,EAAAA,EAAAA,GAAAkS,EAAA,GAArD84X,EAAU74X,EAAA,GAAE84X,EAAa94X,EAAA,GAChCE,GAAgCvS,EAAAA,EAAAA,WAAkB,GAAMwS,GAAAtS,EAAAA,EAAAA,GAAAqS,EAAA,GAAjDsI,EAAQrI,EAAA,GAAEsI,EAAWtI,EAAA,GAC1BG,GAAoC3S,EAAAA,EAAAA,UAAwB,IAAG4S,GAAA1S,EAAAA,EAAAA,GAAAyS,EAAA,GAAxD/C,EAAUgD,EAAA,GAAE/C,EAAa+C,EAAA,GAChCsE,GAAoClX,EAAAA,EAAAA,WAAkB,GAAMmX,GAAAjX,EAAAA,EAAAA,GAAAgX,EAAA,GAArDk0X,EAAUj0X,EAAA,GAAEk0X,EAAal0X,EAAA,GAChCG,GAAkFtX,EAAAA,EAAAA,WAAkB,GAAMuX,GAAArX,EAAAA,EAAAA,GAAAoX,EAAA,GAAnGg0X,EAAiC/zX,EAAA,GAAEg0X,EAAoCh0X,EAAA,GAC9EK,GAAwC5X,EAAAA,EAAAA,UAAwB,IAAG6X,GAAA3X,EAAAA,EAAAA,GAAA0X,EAAA,GAA5D4zX,EAAY3zX,EAAA,GAAE4zX,EAAe5zX,EAAA,GAGtCnI,GAA+BC,EAAAA,GAAAA,gBAAe,0BAAD5J,OACjBiE,EAAE,eADtBnN,EAAI6S,EAAJ7S,KAAME,EAAM2S,EAAN3S,OAAQkO,EAAIyE,EAAJzE,MAItBlJ,EAAAA,EAAAA,YAAU,WACJkJ,IACF8/X,EAAS9/X,EAAKa,OACdm/X,EAAUhgY,EAAK+/X,SAGbjuY,GACA0uY,EAAgB1uY,GAGpBsuY,EAAcxuY,EAChB,GAAG,CAACoO,EAAMlO,EAAQF,KAElByL,EAAAA,EAAAA,kBAAgB,WACVsH,EAAWvS,OAAS,GACtBqI,OAAOktF,SAAS,EAAG,EAEvB,GAAG,CAAChjF,KAEJtH,EAAAA,EAAAA,kBAAgB,WACVsH,EAAWvS,OAAS,GACtBqI,OAAOktF,SAAS,EAAG,EAEvB,GAAG,CAAChjF,IA+BF,OACI3S,EAAAA,EAAAA,KAACkT,GAAAA,EAAiB,CAACtT,KAAMuuY,EAAYruY,OAAQyuY,EAAc1uY,YAAY,UAASE,SACjFguY,EAAO7pY,OAAO9D,OAAS,IACtBJ,EAAAA,EAAAA,KAAA,OAAKoD,UAAU,YAAWrD,UACxB0D,EAAAA,EAAAA,MAAA,OAAKL,UAAU,OAAMrD,SAAA,EACnBC,EAAAA,EAAAA,KAAA,MAAAD,SAAI,8BACJC,EAAAA,EAAAA,KAACK,EAAAA,EAAS,CAACP,OAAQ6S,KACnB3S,EAAAA,EAAAA,KAACyuY,GAAAA,EAAsB,CACT1qY,YAAU,EACVC,oBAAqB+pY,EAAO/pY,oBAC5BC,iBAAkB8pY,EAAO9pY,kBAAoBgqY,EAC7C/pY,OAAQ6pY,EAAO7pY,OACftE,KAAMge,EACNzZ,OAAQ,GACRC,mBAAmB,EACnBC,gBA5CI,SAAC0C,EAAwBF,GACnDgX,GAAY,GAEZ6wX,GAAc,CAAE3hY,GAAAA,EAAI8B,MAAAA,EAAO9H,QAAAA,EAASF,SAAAA,IACjCyI,MAAK,kBAAM4+X,EAAcrnY,EAAS,IAClC2I,MAAMoD,GACNa,SAAQ,kBAAMoK,GAAY,EAAM,GACrC,EAsCwBvZ,sCAnCwB,SAACyC,EAAwBF,GACnEynY,GAAqC,GAErCI,GAAc,CAAE3hY,GAAAA,EAAI8B,MAAAA,EAAO9H,QAAAA,EAASF,SAAAA,IAC/ByI,MAAK,SAAAC,GACF2+X,EAAcrnY,GAEVkG,IACAqhY,GAAc,IACdO,EAAAA,GAAAA,GAAatnY,SAAS0F,IACjBuC,MAAK,SAAAoL,GAAG,OAAIszX,EAAUtzX,EAAI1M,KAAK,IAC/BwB,MAAMg/X,GACN/6X,SAAQ,kBAAM26X,GAAc,EAAM,IAE/C,IACC5+X,MAAMoD,GACNa,SAAQ,kBAAM66X,GAAqC,EAAM,GAClE,EAmBsB/pY,gCAAiC8pY,UAO3D,aClHA,GAAetoY,GAAAA,GAAW,CACxB8lY,SAAU9lY,GAAAA,KACPvC,SAAS,6BCFd,GCQwC,WACpC,IAAMmd,GAAWC,EAAAA,EAAAA,MACjB9d,GAAkCC,EAAAA,EAAAA,WAAkB,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAnD+d,EAAS7d,EAAA,GAAE8d,EAAY9d,EAAA,GAC9B0B,GAAoC3B,EAAAA,EAAAA,UAAwB,IAAG4B,GAAA1B,EAAAA,EAAAA,GAAAyB,EAAA,GAAxDiO,EAAUhO,EAAA,GAAEiO,EAAajO,EAAA,GAEhC,OACIlB,EAAAA,EAAAA,MAAAtD,EAAAA,SAAA,CAAAJ,SAAA,EACIC,EAAAA,EAAAA,KAAA,OAAKoD,UAAU,YAAWrD,UACtBC,EAAAA,EAAAA,KAAC6H,EAAAA,GAAM,CACH7C,cAAe,CAAE6mY,SAAU,IAC3B1lY,iBAAkBgN,GAClBrL,SAAU,SAAClB,EAAMjH,GAAyB,ICjB9CqO,EDiByBiL,EAAatZ,EAAbsZ,cACjBrG,EAAc,KClBtB5E,EDoB6B,CAAE69X,SAAUjlY,EAAOilY,SAASzoU,QCnBvEx6D,GAAAA,SAASwK,KAAK,gBAADtK,OAAiBkF,EAAK69X,SAAQ,YDoBhBv8X,MAAK,kBAAMwR,GAAa,EAAK,IAC7BtR,MAAMoD,GACNa,SAAQ,kBAAMwF,GAAc,EAAM,GAC3C,EAAElZ,SAED,SAAAgI,GAAA,IAAGwE,EAAYxE,EAAZwE,aAAY,OACZ9I,EAAAA,EAAAA,MAAA,OAAA1D,SAAA,EACIC,EAAAA,EAAAA,KAACqN,GAAAA,YAAW,CACR9G,QAAQ,qBACRiH,QAAS,kBAAMmT,EAAS,SAAS,KAErC3gB,EAAAA,EAAAA,KAAA,KAAAD,SAAG,oIAIHC,EAAAA,EAAAA,KAACK,EAAAA,EAAS,CAAC+C,UAAU,OAAOtD,OAAQ6S,KACpClP,EAAAA,EAAAA,MAACuE,EAAAA,GAAI,CAAAjI,SAAA,EACDC,EAAAA,EAAAA,KAAA,YAAUkB,SAAUqL,EAAaxM,UAC7BC,EAAAA,EAAAA,KAACmD,GAAAA,UAAS,CAAC5C,KAAK,WAAUR,UACtBC,EAAAA,EAAAA,KAACkC,GAAAA,GAAO,CAAC3B,KAAK,kBAGtBP,EAAAA,EAAAA,KAACqI,GAAAA,aAAY,CAACzI,KAAM2M,EAAc9J,KAAK,SAAS0e,WAAS,EAAAphB,SAAC,gCAI5D,MAIjB8gB,IACG7gB,EAAAA,EAAAA,KAACub,GAAAA,GAAiB,CACdC,MAAM,aACNC,QAAQ,2EACRC,eAAgB,kBAAMiF,EAAS,SAAS,MAK5D,8CE9DA,GAAe5a,GAAAA,GAAW,CACxBqa,SAAUra,GAAAA,KACPvC,SAAS,2BACZ6c,qBAAsBta,GAAAA,KACnBvC,SAAS,2BACT8c,MAAM,CAACva,GAAAA,GAAQ,YAAa,MAAO,2DCSlCf,GAA0C,CAC5Cob,SAAU,GACVC,qBAAsB,IAsF1B,GAnFoC,WAChC,IAAMM,GAAWC,EAAAA,EAAAA,MACjB9d,GAAwBC,EAAAA,EAAAA,UAAc,IAAGC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAlCkL,EAAIhL,EAAA,GAAE4rY,EAAO5rY,EAAA,GACpB0B,GAAkC3B,EAAAA,EAAAA,WAAkB,GAAM4B,GAAA1B,EAAAA,EAAAA,GAAAyB,EAAA,GAAnDmc,EAASlc,EAAA,GAAEmc,EAAYnc,EAAA,GAC9BwQ,GAAoCpS,EAAAA,EAAAA,UAAwB,IAAGqS,GAAAnS,EAAAA,EAAAA,GAAAkS,EAAA,GAAxDxC,EAAUyC,EAAA,GAAExC,EAAawC,EAAA,GACxB+T,GAAW4hW,EAAAA,EAAAA,MAAX5hW,OACRpI,GAA8B9C,EAAAA,GAAAA,KAAtBxU,EAAQsX,EAARtX,SAAUyU,EAAO6C,EAAP7C,QAQlB,OANApZ,EAAAA,EAAAA,YAAU,WACN,IAAQkJ,EAAS+X,GAAAA,EAAYrB,MAAMyE,GAA3Bnb,KAER4gY,EAAQ5gY,EACZ,GAAG,CAACmb,KAGA1lB,EAAAA,EAAAA,MAAAtD,EAAAA,SAAA,CAAAJ,SAAA,EACIC,EAAAA,EAAAA,KAAA,OAAKoD,UAAU,YAAWrD,UACtBC,EAAAA,EAAAA,KAAC6H,EAAAA,GAAM,CACH7C,cAAeA,GACfmB,iBAAkBgN,GAClBrL,SAAU,SAAClB,EAAMjH,GAAyB,IAArBsZ,EAAatZ,EAAbsZ,cACjBrG,EAAc,ICtCtC,SAAgB5E,GAA2B,OACzCpF,GAAAA,SAASwK,KAAK,qBAAsBpF,EAAK,CDuCnB6gY,CAAc,CAAE7gY,KAAAA,EAAMoS,SAAUxZ,EAAOwZ,WAClC9Q,MAAK,kBAAMwR,GAAa,EAAK,IAC7BtR,MAAMoD,GACNa,SAAQ,kBAAMwF,GAAc,EAAM,GAC3C,EAAElZ,SAED,SAAAgI,GAAA,IAAGwE,EAAYxE,EAAZwE,aAAY,OACZ9I,EAAAA,EAAAA,MAAA,OAAA1D,SAAA,EACIC,EAAAA,EAAAA,KAACqN,GAAAA,YAAW,CACR9G,QAAQ,iBACRiH,QAAS,kBAAMmT,EAAS,SAAS,KAErC3gB,EAAAA,EAAAA,KAAA,KAAAD,SAAG,uEAGHC,EAAAA,EAAAA,KAACK,EAAAA,EAAS,CAAC+C,UAAU,OAAOtD,OAAQ6S,KACpClP,EAAAA,EAAAA,MAAA,OAAKL,UAAU,MAAKrD,SAAA,EAChBC,EAAAA,EAAAA,KAAA,OAAKoD,UAAU,WAAUrD,UACrB0D,EAAAA,EAAAA,MAACuE,EAAAA,GAAI,CAAAjI,SAAA,EACD0D,EAAAA,EAAAA,MAAA,YAAUvC,SAAUqL,EAAaxM,SAAA,EAC7BC,EAAAA,EAAAA,KAACmD,GAAAA,UAAS,CAAC5C,KAAK,WAAWQ,MAAM,WAAUhB,UACvCC,EAAAA,EAAAA,KAACkC,GAAAA,GAAO,CACJO,KAAK,WACLlC,KAAK,WACL0gB,MAAO,SAAC/W,GAA0C,IAADgX,EAC7CzX,EAAqB,QAAbyX,EAAM,OAALhX,QAAK,IAALA,OAAK,EAALA,EAAOxE,aAAK,IAAAwb,EAAAA,EAAI,GAC7B,OAGRlhB,EAAAA,EAAAA,KAACmD,GAAAA,UAAS,CACN5C,KAAK,uBACLQ,MAAM,mBAAkBhB,UAExBC,EAAAA,EAAAA,KAACkC,GAAAA,GAAO,CAACO,KAAK,WAAWlC,KAAK,+BAGtCP,EAAAA,EAAAA,KAACqI,GAAAA,aAAY,CAACzI,KAAM2M,EAAc9J,KAAK,SAAS0e,WAAS,EAACjgB,UAAWgd,EAAQne,SAAC,yBAKtFC,EAAAA,EAAAA,KAAA,OAAKoD,UAAU,WAAUrD,UACrBC,EAAAA,EAAAA,KAACohB,GAAAA,EAAsB,WAG7B,MAIjBP,IACG7gB,EAAAA,EAAAA,KAACub,GAAAA,EAAiB,CACdC,MAAM,iBACNC,QAAQ,6CACRC,eAAgB,kBAAMiF,EAAS,SAAU,CAAE/B,SAAS,GAAO,MAK/E,EEpGA,GCE6C,WAAH,OACxC5e,EAAAA,EAAAA,KAACqhB,GAAAA,EAAsB,CACrBjD,cAAe,GACfS,eAAgB,EAChBC,eAAgB,EAChBC,iBAAkB,EAClBC,iBAAkB,EAClBC,eAAgB,EAChBC,yBAAuB,EACvBC,qBAAmB,EAAApf,UAEnBC,EAAAA,EAAAA,KAAC8uY,GAAiB,KACK,uBCZ3B,GCGmC,WAE/B,IAAAC,GAAiChjB,EAAAA,EAAAA,MAAzBh/W,EAAEgiY,EAAFhiY,GAAIiiY,EAAgBD,EAAhBC,iBAEZlsY,GAAkCC,EAAAA,EAAAA,WAAkB,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAnDmsY,EAASjsY,EAAA,GAAEksY,EAAYlsY,EAAA,GAC9B0B,GAA8B3B,EAAAA,EAAAA,UAAiB,GAAE4B,GAAA1B,EAAAA,EAAAA,GAAAyB,EAAA,GAA1CkQ,EAAOjQ,EAAA,GAAEwqY,EAAUxqY,EAAA,GAC1BwQ,GAAwCpS,EAAAA,EAAAA,UAAiB,GAAEqS,GAAAnS,EAAAA,EAAAA,GAAAkS,EAAA,GAApDi6X,EAAYh6X,EAAA,GAAEi6X,EAAej6X,EAAA,GAC9BzG,GAAM3M,EAAAA,EAAAA,UAAQ,+CAAA8G,OAAoCkmY,EAAgB,KAAAlmY,OAAIiE,EAAE,GAAI,CAACiiY,EAAkBjiY,IAErG0F,GAA+BC,EAAAA,GAAAA,gBAC3B/D,GADkBX,GAAVyE,EAAJ7S,KAAY6S,EAAN3S,OAAY2S,EAAJzE,MAYtB,OARAlJ,EAAAA,EAAAA,YAAU,WACFkJ,IACAkhY,EAAalhY,EAAKihY,WAClBE,EAAWnhY,EAAK4G,SAChBy6X,EAAgBrhY,EAAKshY,UAE3B,GAAG,CAACthY,EAAMghY,KAGRhvY,EAAAA,EAAAA,KAAA,OAAKoD,UAAU,YAAWrD,UACtB0D,EAAAA,EAAAA,MAAA,OAAKL,UAAU,OAAMrD,SAAA,CACfkvY,IACEjvY,EAAAA,EAAAA,KAACuvY,GAAAA,EAA+B,CAC5BtyX,iBAAiB,EACjBrI,QAASA,EACTpS,OAAQ4sY,EACR5hY,QAAS,WAAQ/E,OAAOkxB,OAAQ,KAGrCs1W,IACCjvY,EAAAA,EAAAA,KAAA,OAAKoD,UAAU,qBAAqBuvE,KAAK,QAAO5yE,SAAC,+CAQrE,EChCMyvY,GACFzkX,SAASiO,qBAAqB,QAAQ,GAAGuwB,aAAa,SAAW,IAE/DkmV,IAAQnf,EAAAA,EAAAA,OAAK,kBAAM,qDAAkD,IA0C3E,GAxCsB,WAClB,OACItwX,EAAAA,EAAAA,KAAC4uX,EAAM,CAAC9hW,SAAU0iX,GAAQzvY,UACtBC,EAAAA,EAAAA,KAAC8tX,EAAa,CAAA/tX,UACVC,EAAAA,EAAAA,KAAC0vY,EAAsB,CAAA3vY,UACnBC,EAAAA,EAAAA,KAAC2vY,EAAgB,CAAA5vY,UACbC,EAAAA,EAAAA,KAACs+W,EAAAA,SAAQ,CACL7M,UAAUzxW,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CAACC,KAAK,iBAAiBkJ,YAAU,IAAIrJ,UAE7D0D,EAAAA,EAAAA,MAACosX,EAAAA,GAAM,CAAA9vX,SAAA,EACHC,EAAAA,EAAAA,KAAC2uX,EAAAA,GAAK,CAACrkW,KAAK,SAASnf,SAASnL,EAAAA,EAAAA,KAAC4vY,GAAS,OACxC5vY,EAAAA,EAAAA,KAAC2uX,EAAAA,GAAK,CAACrkW,KAAK,qBAAqBnf,SAASnL,EAAAA,EAAAA,KAAC6vY,GAAqB,OAChE7vY,EAAAA,EAAAA,KAAC2uX,EAAAA,GAAK,CAACrkW,KAAK,iBAAiBnf,SAASnL,EAAAA,EAAAA,KAAC8uY,GAAiB,OACxD9uY,EAAAA,EAAAA,KAAC2uX,EAAAA,GAAK,CAACrkW,KAAK,yBAAyBnf,SAASnL,EAAAA,EAAAA,KAACshB,GAAAA,EAAwB,OACvEthB,EAAAA,EAAAA,KAAC2uX,EAAAA,GAAK,CAACrkW,KAAK,6BAA6Bnf,SAASnL,EAAAA,EAAAA,KAAC8vY,GAAa,OAChE9vY,EAAAA,EAAAA,KAAC2uX,EAAAA,GAAK,CACFrkW,KAAK,0CACLnf,SACInL,EAAAA,EAAAA,KAAC+vY,GAAAA,EAAW,CAAAhwY,UACRC,EAAAA,EAAAA,KAACgwY,GAAgB,SAI7BhwY,EAAAA,EAAAA,KAAC2uX,EAAAA,GAAK,CACFrkW,KAAK,KACLnf,SACInL,EAAAA,EAAAA,KAAC+vY,GAAAA,EAAW,CAAAhwY,UACRC,EAAAA,EAAAA,KAACyvY,GAAK,oBAWlD,gspGC/CoBr1F,QACW,cAA7B3xS,OAAOib,SAASo8Q,UAEe,UAA7Br3R,OAAOib,SAASo8Q,UAEhBr3R,OAAOib,SAASo8Q,SAASvvQ,MACvB,4DCHNyhC,EAAAA,GAAAA,IAAgB,qFAGhBxgB,EAAAA,GAAAA,IAASy+V,GAAaC,GAAexlW,GAAStP,GAAkB+0W,IAEhExsU,GAAAA,GAAKO,KAAK,CACRksU,GAAI,CACFnsE,SAAU,CACRosE,WAAY,MACZ1gI,aAAc,SACd2gI,aAAc,SACdC,SAAU,8BACVC,UAAW,iCAKjBj/V,EAAAA,GAAAA,IAAW,MAEXx+B,IAAAA,cAAoB,SAEpB,IAAMo2E,GAAYp+D,SAASo5B,eAAe,SAC7Bo4T,EAAAA,EAAAA,GAAWpzR,IACnB11B,QAAOzzD,EAAAA,EAAAA,KAACywY,GAAG,KDqGV,kBAAmBn1V,WACrBA,UAAUo1V,cAAc32W,MACrBzqB,MAAK,SAAAqhY,GACJA,EAAaC,YACf,IACCphY,OAAM,SAAAjG,GACLmgB,QAAQngB,MAAMA,EAAMkS,QACtB","sources":["components/ajax/errorBoundary/index.ts","components/ajax/errorBoundary/AjaxErrorBoundary.tsx","components/assessments/driverEvaluationReport/question/answers/TextReadOnlyAnswer.tsx","components/assessments/driverEvaluationReport/question/Question.tsx","components/assessments/driverEvaluationReport/question/answers/CheckAnswer.tsx","components/assessments/driverEvaluationReport/question/answers/DateTimeAnswer.tsx","components/assessments/driverEvaluationReport/question/answers/IdentifiedTargetedCompletedSourceAnswer.tsx","components/assessments/driverEvaluationReport/question/answers/NumberAnswer.tsx","components/assessments/driverEvaluationReport/question/answers/ScoreAnswer.tsx","components/assessments/driverEvaluationReport/question/answers/TextAnswer.tsx","components/assessments/driverEvaluationReport/question/answers/MultiLineTextAnswer.tsx","components/assessments/driverEvaluationReport/question/index.ts","components/assessments/driverEvaluationReport/DriverEvaluationReport.tsx","components/assessments/driverEvaluationReport/createDynamicForm.ts","components/assessments/driverEvaluationReport/fetchResults.ts","components/authentication/AuthenticationContext.tsx","components/authentication/index.ts","components/authentication/useAuthentication.ts","webpack://dte-portal/./src/components/busyIndicator/BusyIndicator.module.css?ccdc","components/busyIndicator/BusyIndicator.tsx","components/busyIndicator/index.ts","webpack://dte-portal/./src/components/errorList/ErrorList.module.css?224c","components/errorList/index.ts","components/errorList/ErrorList.tsx","components/formikBindings/CheckBox.tsx","components/formikBindings/DatePicker.tsx","components/formikBindings/DropDownList.tsx","components/formikBindings/TextBox.tsx","components/formikBindings/NumericTextBox.tsx","components/formikBindings/UnboundField.tsx","components/formikBindings/DatePicker2.tsx","components/forms/actionButton/ActionButton.tsx","components/forms/cancelButton/CancelButton.tsx","components/forms/cancelButton/index.ts","components/forms/displayFormGroup/DisplayFormGroup.tsx","components/forms/emptyLabel/EmptyLabel.tsx","components/forms/emptyLabel/index.ts","webpack://dte-portal/./src/components/forms/formGroup/FormGroup.module.css?88a5","components/forms/formGroup/FormGroup.tsx","webpack://dte-portal/./src/components/forms/formHeading/FormHeading.module.css?0d0e","components/forms/formHeading/FormHeading.tsx","webpack://dte-portal/./src/components/forms/formSectionHeading/FormSectionHeading.module.css?5ef5","components/forms/formSectionHeading/FormSectionHeading.tsx","components/forms/index.ts","components/forms/submitButton/SubmitButton.tsx","components/hooks/index.ts","components/hooks/useBatchDataFetcher.ts","components/hooks/useDataFetcher.ts","components/hooks/useIsFirstRender.ts","components/localGroupMembers/member/form/ProfileTab.tsx","components/localGroupMembers/member/form/AddressTab.tsx","components/localGroupMembers/member/form/GroupTab.tsx","components/localGroupMembers/member/form/modals/addLink/schema.ts","components/localGroupMembers/member/form/modals/addLink/AddLinkModal.tsx","components/localGroupMembers/member/form/modals/addLink/createGroupMemberLink.ts","components/localGroupMembers/member/form/modals/deleteLink/DeleteLinkConfirmationModal.tsx","components/localGroupMembers/member/form/modals/deleteLink/schema.ts","components/localGroupMembers/member/form/modals/deleteLink/DeleteLinkModal.tsx","components/localGroupMembers/member/form/modals/deleteLink/deleteGroupMemberLink.ts","components/localGroupMembers/member/form/LinksTab.tsx","components/localGroupMembers/member/edit/reloadLinks.ts","components/localGroupMembers/member/form/identifyChanges.ts","components/localGroupMembers/member/form/schema.ts","components/localGroupMembers/member/form/groupLinkGridToolbar.ts","components/localGroupMembers/member/form/modals/deleteGroupLink/DeleteGroupLinkModel.tsx","components/localGroupMembers/member/form/modals/deleteGroupLink/deleteGroupLink.ts","components/localGroupMembers/member/form/modals/addGroupLink/AddGroupLinkModel.tsx","components/localGroupMembers/member/form/modals/addGroupLink/addGroupLink.ts","components/localGroupMembers/member/form/GroupLinksTab.tsx","components/localGroupMembers/member/form/getLocalGroupMemberDetails.ts","components/localGroupMembers/member/form/LocalGroupMemberDetailsForm.tsx","components/localGroupMembers/member/form/index.ts","components/localGroupMembers/member/edit/updateLocalGroupMemberDetails.ts","components/localGroupMembers/member/edit/EditLocalGroupMemberDetailsPage.tsx","components/localGroupMembers/member/edit/index.ts","components/modals/waitnotification/WaitNotificationModal.tsx","components/modals/raiseMemberQuery/schema.ts","components/modals/raiseMemberQuery/RaiseMemberQueryModal.tsx","components/modals/raiseMemberQuery/raiseMemberQuery.ts","components/modals/notification/NotificationModal.tsx","components/passwordPolicy/PasswordPolicyContext.ts","components/passwordPolicy/PasswordPolicyFeedback.tsx","components/passwordPolicy/passwordPolicyValidationRules.ts","components/passwordPolicy/createPolicyRules.ts","components/passwordPolicy/PasswordPolicyProvider.tsx","components/passwordPolicy/usePasswordPolicy.ts","components/resetCurrentPassword/schema.ts","components/resetCurrentPassword/ResetCurrentPasswordPage.tsx","components/resetCurrentPassword/resetCurrentPassword.ts","components/resetCurrentPassword/index.ts","components/resetCurrentPassword/ResetCurrentPasswordPageContainer.tsx","components/routes/requireAuth/RequireAuth.tsx","components/routes/requireAuth/index.ts","components/userData/UserDataContext.tsx","components/userData/index.ts","components/userData/useUserData.ts","constants.ts","services/api.ts","utils/parseModelStateErrors.ts","services/localStorageService.ts","utils/formatName.ts","utils/isDifferent.ts","utils/makeCancelable.ts","utils/queryString.ts","utils/toSyncfusionDataSource.ts","utils/toUtcDate.ts","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/@remix-run/router/router.ts","../node_modules/@syncfusion/ej2-base/src/util.js","../node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","../node_modules/@syncfusion/ej2-base/src/hijri-parser.js","../node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","../node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","../node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","../node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","../node_modules/@syncfusion/ej2-base/src/observer.js","../node_modules/@syncfusion/ej2-base/src/internationalization.js","../node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","../node_modules/@syncfusion/ej2-base/src/ajax.js","../node_modules/@syncfusion/ej2-base/src/browser.js","../node_modules/@syncfusion/ej2-base/src/fetch.js","../node_modules/@syncfusion/ej2-base/src/event-handler.js","../node_modules/@syncfusion/ej2-base/src/dom.js","../node_modules/@syncfusion/ej2-base/src/base.js","../node_modules/@syncfusion/ej2-base/src/notify-property-change.js","../node_modules/@syncfusion/ej2-base/src/animation.js","../node_modules/@syncfusion/ej2-base/src/module-loader.js","../node_modules/@syncfusion/ej2-base/src/validate-lic.js","../node_modules/@syncfusion/ej2-base/src/child-property.js","../node_modules/@syncfusion/ej2-base/src/component.js","../node_modules/@syncfusion/ej2-base/src/draggable.js","../node_modules/@syncfusion/ej2-base/src/droppable.js","../node_modules/@syncfusion/ej2-base/src/keyboard.js","../node_modules/@syncfusion/ej2-base/src/l10n.js","../node_modules/@syncfusion/ej2-base/src/touch.js","../node_modules/@syncfusion/ej2-base/src/template.js","../node_modules/@syncfusion/ej2-base/src/template-engine.js","../node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","../node_modules/@syncfusion/ej2-buttons/src/button/button.js","../node_modules/@syncfusion/ej2-buttons/src/check-box/check-box.js","../node_modules/@syncfusion/ej2-buttons/src/common/common.js","../node_modules/@syncfusion/ej2-buttons/src/radio-button/radio-button.js","../node_modules/@syncfusion/ej2-calendars/src/calendar/calendar.js","../node_modules/@syncfusion/ej2-calendars/src/datepicker/datepicker.js","../node_modules/@syncfusion/ej2-calendars/src/timepicker/timepicker.js","../node_modules/@syncfusion/ej2-calendars/src/datetimepicker/datetimepicker.js","../node_modules/@syncfusion/ej2-data/src/adaptors.js","../node_modules/@syncfusion/ej2-data/src/manager.js","../node_modules/@syncfusion/ej2-data/src/query.js","../node_modules/@syncfusion/ej2-data/src/util.js","../node_modules/@syncfusion/ej2-dropdowns/src/common/incremental-search.js","../node_modules/@syncfusion/ej2-dropdowns/src/drop-down-base/drop-down-base.js","../node_modules/@syncfusion/ej2-dropdowns/src/drop-down-list/drop-down-list.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/data.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/filter-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/filter-menu-operator.js","../node_modules/@syncfusion/ej2-dropdowns/src/combo-box/combo-box.js","../node_modules/@syncfusion/ej2-dropdowns/src/common/highlight-search.js","../node_modules/@syncfusion/ej2-dropdowns/src/auto-complete/auto-complete.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/string-filter-ui.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/number-filter-ui.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/boolean-filter-ui.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/date-filter-ui.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/filter-menu-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/checkbox-filter.js","../node_modules/@syncfusion/ej2-navigations/src/common/menu-scroll.js","../node_modules/@syncfusion/ej2-navigations/src/common/menu-base.js","../node_modules/@syncfusion/ej2-navigations/src/context-menu/context-menu.js","../node_modules/@syncfusion/ej2-grids/src/grid/common/excel-filter-base.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/excel-filter.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/filter.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/print.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/sort.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/toolbar.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/constant.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/enum.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/group-model-generator.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/content-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/stacked-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/indent-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/caption-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/expand-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-indent-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-header-indent-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-expand-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-drop-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-header-indent-render.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/render.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/cell-render-factory.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/responsive-dialog-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/service-locator.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/renderer-factory.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/page-settings.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/column-chooser-settings.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/selection.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/search.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/show-hide.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/scroll.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/aggregate.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/clipboard.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/grid.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/string-literals.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/util.js","../node_modules/@syncfusion/ej2-grids/src/grid/common/checkbox-filter-base.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/cell.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/column.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/row.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-merge-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/aria-service.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/focus-strategy.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/row-model-generator.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/summary-model-generator.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/value-formatter.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/width-controller.js","../node_modules/@syncfusion/ej2-inputs/src/input/input.js","../node_modules/@syncfusion/ej2-inputs/src/numerictextbox/numerictextbox.js","../node_modules/@syncfusion/ej2-lists/src/common/list-base.js","../node_modules/@syncfusion/ej2-navigations/src/common/h-scroll.js","../node_modules/@syncfusion/ej2-navigations/src/common/v-scroll.js","../node_modules/@syncfusion/ej2-navigations/src/toolbar/toolbar.js","../node_modules/@syncfusion/ej2-popups/src/common/collision.js","../node_modules/@syncfusion/ej2-popups/src/common/position.js","../node_modules/@syncfusion/ej2-popups/src/common/resize.js","../node_modules/@syncfusion/ej2-popups/src/dialog/dialog.js","../node_modules/@syncfusion/ej2-popups/src/popup/popup.js","../node_modules/@syncfusion/ej2-popups/src/spinner/spinner.js","../node_modules/@syncfusion/ej2-popups/src/tooltip/tooltip.js","../node_modules/@syncfusion/ej2-react-base/src/component-base.js","../node_modules/@syncfusion/ej2-react-base/src/util.js","../node_modules/@syncfusion/ej2-react-base/src/complex-base.js","../node_modules/@syncfusion/ej2-react-base/src/services.js","../node_modules/@syncfusion/ej2-react-base/src/template.js","../node_modules/@syncfusion/ej2-react-buttons/src/button/button.component.js","../node_modules/@syncfusion/ej2-react-buttons/src/check-box/checkbox.component.js","../node_modules/@syncfusion/ej2-react-calendars/src/datepicker/datepicker.component.js","../node_modules/@syncfusion/ej2-react-dropdowns/src/drop-down-list/dropdownlist.component.js","../node_modules/@syncfusion/ej2-react-grids/src/grid/columns-directive.js","../node_modules/@syncfusion/ej2-react-grids/src/grid/grid.component.js","../node_modules/@syncfusion/ej2-react-inputs/src/numerictextbox/numerictextbox.component.js","../node_modules/@syncfusion/ej2-inputs/src/textbox/textbox.js","../node_modules/@syncfusion/ej2-react-inputs/src/textbox/textbox.component.js","../node_modules/@syncfusion/ej2-navigations/src/tab/tab.js","../node_modules/@syncfusion/ej2-react-navigations/src/tab/tab.component.js","../node_modules/axios/index.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/cancel/Cancel.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/core/createError.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/enhanceError.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/defaults.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/utils.js","../node_modules/beautiful-react-hooks/esm/shared/isClient.js","../node_modules/beautiful-react-hooks/esm/shared/isAPISupported.js","../node_modules/beautiful-react-hooks/esm/shared/warnOnce.js","../node_modules/beautiful-react-hooks/esm/useMediaQuery.js","../node_modules/call-bind/callBound.js","../node_modules/call-bind/index.js","../node_modules/cookie/index.js","../node_modules/create-react-class/factory.js","../node_modules/create-react-class/index.js","../node_modules/exenv/index.js","../node_modules/deepmerge/dist/es.js","../node_modules/lodash-es/_freeGlobal.js","../node_modules/lodash-es/_root.js","../node_modules/lodash-es/_Symbol.js","../node_modules/lodash-es/_getRawTag.js","../node_modules/lodash-es/_objectToString.js","../node_modules/lodash-es/_baseGetTag.js","../node_modules/lodash-es/_overArg.js","../node_modules/lodash-es/_getPrototype.js","../node_modules/lodash-es/isObjectLike.js","../node_modules/lodash-es/isPlainObject.js","../node_modules/tiny-warning/dist/tiny-warning.esm.js","../node_modules/lodash-es/_listCacheClear.js","../node_modules/lodash-es/eq.js","../node_modules/lodash-es/_assocIndexOf.js","../node_modules/lodash-es/_listCacheDelete.js","../node_modules/lodash-es/_listCacheGet.js","../node_modules/lodash-es/_listCacheHas.js","../node_modules/lodash-es/_listCacheSet.js","../node_modules/lodash-es/_ListCache.js","../node_modules/lodash-es/_stackClear.js","../node_modules/lodash-es/_stackDelete.js","../node_modules/lodash-es/_stackGet.js","../node_modules/lodash-es/_stackHas.js","../node_modules/lodash-es/isObject.js","../node_modules/lodash-es/isFunction.js","../node_modules/lodash-es/_coreJsData.js","../node_modules/lodash-es/_isMasked.js","../node_modules/lodash-es/_toSource.js","../node_modules/lodash-es/_baseIsNative.js","../node_modules/lodash-es/_getValue.js","../node_modules/lodash-es/_getNative.js","../node_modules/lodash-es/_Map.js","../node_modules/lodash-es/_nativeCreate.js","../node_modules/lodash-es/_hashClear.js","../node_modules/lodash-es/_hashDelete.js","../node_modules/lodash-es/_hashGet.js","../node_modules/lodash-es/_hashHas.js","../node_modules/lodash-es/_hashSet.js","../node_modules/lodash-es/_Hash.js","../node_modules/lodash-es/_mapCacheClear.js","../node_modules/lodash-es/_isKeyable.js","../node_modules/lodash-es/_getMapData.js","../node_modules/lodash-es/_mapCacheDelete.js","../node_modules/lodash-es/_mapCacheGet.js","../node_modules/lodash-es/_mapCacheHas.js","../node_modules/lodash-es/_mapCacheSet.js","../node_modules/lodash-es/_MapCache.js","../node_modules/lodash-es/_stackSet.js","../node_modules/lodash-es/_Stack.js","../node_modules/lodash-es/_arrayEach.js","../node_modules/lodash-es/_defineProperty.js","../node_modules/lodash-es/_baseAssignValue.js","../node_modules/lodash-es/_assignValue.js","../node_modules/lodash-es/_copyObject.js","../node_modules/lodash-es/_baseTimes.js","../node_modules/lodash-es/_baseIsArguments.js","../node_modules/lodash-es/isArguments.js","../node_modules/lodash-es/isArray.js","../node_modules/lodash-es/stubFalse.js","../node_modules/lodash-es/isBuffer.js","../node_modules/lodash-es/_isIndex.js","../node_modules/lodash-es/isLength.js","../node_modules/lodash-es/_baseIsTypedArray.js","../node_modules/lodash-es/_baseUnary.js","../node_modules/lodash-es/_nodeUtil.js","../node_modules/lodash-es/isTypedArray.js","../node_modules/lodash-es/_arrayLikeKeys.js","../node_modules/lodash-es/_isPrototype.js","../node_modules/lodash-es/_nativeKeys.js","../node_modules/lodash-es/_baseKeys.js","../node_modules/lodash-es/isArrayLike.js","../node_modules/lodash-es/keys.js","../node_modules/lodash-es/_baseAssign.js","../node_modules/lodash-es/_nativeKeysIn.js","../node_modules/lodash-es/_baseKeysIn.js","../node_modules/lodash-es/keysIn.js","../node_modules/lodash-es/_baseAssignIn.js","../node_modules/lodash-es/_cloneBuffer.js","../node_modules/lodash-es/_copyArray.js","../node_modules/lodash-es/_arrayFilter.js","../node_modules/lodash-es/stubArray.js","../node_modules/lodash-es/_getSymbols.js","../node_modules/lodash-es/_copySymbols.js","../node_modules/lodash-es/_arrayPush.js","../node_modules/lodash-es/_getSymbolsIn.js","../node_modules/lodash-es/_copySymbolsIn.js","../node_modules/lodash-es/_baseGetAllKeys.js","../node_modules/lodash-es/_getAllKeys.js","../node_modules/lodash-es/_getAllKeysIn.js","../node_modules/lodash-es/_DataView.js","../node_modules/lodash-es/_Promise.js","../node_modules/lodash-es/_Set.js","../node_modules/lodash-es/_WeakMap.js","../node_modules/lodash-es/_getTag.js","../node_modules/lodash-es/_initCloneArray.js","../node_modules/lodash-es/_Uint8Array.js","../node_modules/lodash-es/_cloneArrayBuffer.js","../node_modules/lodash-es/_cloneDataView.js","../node_modules/lodash-es/_cloneRegExp.js","../node_modules/lodash-es/_cloneSymbol.js","../node_modules/lodash-es/_cloneTypedArray.js","../node_modules/lodash-es/_initCloneByTag.js","../node_modules/lodash-es/_baseCreate.js","../node_modules/lodash-es/_initCloneObject.js","../node_modules/lodash-es/_baseIsMap.js","../node_modules/lodash-es/isMap.js","../node_modules/lodash-es/_baseIsSet.js","../node_modules/lodash-es/isSet.js","../node_modules/lodash-es/_baseClone.js","../node_modules/lodash-es/clone.js","../node_modules/lodash-es/_arrayMap.js","../node_modules/lodash-es/isSymbol.js","../node_modules/lodash-es/memoize.js","../node_modules/lodash-es/_memoizeCapped.js","../node_modules/lodash-es/_stringToPath.js","../node_modules/lodash-es/_toKey.js","../node_modules/lodash-es/_baseToString.js","../node_modules/lodash-es/toString.js","../node_modules/lodash-es/toPath.js","../node_modules/lodash-es/cloneDeep.js","../node_modules/formik/src/FormikContext.tsx","../node_modules/formik/src/utils.ts","../node_modules/formik/src/Formik.tsx","../node_modules/formik/src/Field.tsx","../node_modules/formik/src/Form.tsx","../node_modules/formik/src/connect.tsx","../node_modules/formik/src/FieldArray.tsx","../node_modules/formik/src/ErrorMessage.tsx","../node_modules/function-bind/implementation.js","../node_modules/function-bind/index.js","../node_modules/get-intrinsic/index.js","../node_modules/has-proto/index.js","../node_modules/has-symbols/index.js","../node_modules/has-symbols/shams.js","../node_modules/has/src/index.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/jquery/dist/jquery.js","../node_modules/local-storage-fallback/lib/CookieStorage.js","../node_modules/local-storage-fallback/lib/MemoryStorage.js","../node_modules/local-storage-fallback/lib/index.js","../node_modules/local-storage-fallback/lib/isSupported.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_Set.js","../node_modules/lodash/_SetCache.js","../node_modules/lodash/_Stack.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_Uint8Array.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/_arrayEach.js","../node_modules/lodash/_arrayFilter.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_arrayMap.js","../node_modules/lodash/_arrayPush.js","../node_modules/lodash/_arrayReduce.js","../node_modules/lodash/_arraySome.js","../node_modules/lodash/_asciiToArray.js","../node_modules/lodash/_asciiWords.js","../node_modules/lodash/_assignValue.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_baseAssign.js","../node_modules/lodash/_baseAssignIn.js","../node_modules/lodash/_baseAssignValue.js","../node_modules/lodash/_baseClone.js","../node_modules/lodash/_baseCreate.js","../node_modules/lodash/_baseFor.js","../node_modules/lodash/_baseForOwn.js","../node_modules/lodash/_baseGet.js","../node_modules/lodash/_baseGetAllKeys.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/_baseHas.js","../node_modules/lodash/_baseHasIn.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/_baseIsEqual.js","../node_modules/lodash/_baseIsEqualDeep.js","../node_modules/lodash/_baseIsMap.js","../node_modules/lodash/_baseIsMatch.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_baseIsSet.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseIteratee.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_baseKeysIn.js","../node_modules/lodash/_baseMatches.js","../node_modules/lodash/_baseMatchesProperty.js","../node_modules/lodash/_baseProperty.js","../node_modules/lodash/_basePropertyDeep.js","../node_modules/lodash/_basePropertyOf.js","../node_modules/lodash/_baseSlice.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_baseToString.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_baseValues.js","../node_modules/lodash/_cacheHas.js","../node_modules/lodash/_castPath.js","../node_modules/lodash/_castSlice.js","../node_modules/lodash/_cloneArrayBuffer.js","../node_modules/lodash/_cloneBuffer.js","../node_modules/lodash/_cloneDataView.js","../node_modules/lodash/_cloneRegExp.js","../node_modules/lodash/_cloneSymbol.js","../node_modules/lodash/_cloneTypedArray.js","../node_modules/lodash/_copyArray.js","../node_modules/lodash/_copyObject.js","../node_modules/lodash/_copySymbols.js","../node_modules/lodash/_copySymbolsIn.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_createBaseFor.js","../node_modules/lodash/_createCaseFirst.js","../node_modules/lodash/_createCompounder.js","../node_modules/lodash/_deburrLetter.js","../node_modules/lodash/_defineProperty.js","../node_modules/lodash/_equalArrays.js","../node_modules/lodash/_equalByTag.js","../node_modules/lodash/_equalObjects.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_getAllKeys.js","../node_modules/lodash/_getAllKeysIn.js","../node_modules/lodash/_getMapData.js","../node_modules/lodash/_getMatchData.js","../node_modules/lodash/_getNative.js","../node_modules/lodash/_getPrototype.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_getSymbols.js","../node_modules/lodash/_getSymbolsIn.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_hasPath.js","../node_modules/lodash/_hasUnicode.js","../node_modules/lodash/_hasUnicodeWord.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.js","../node_modules/lodash/_initCloneArray.js","../node_modules/lodash/_initCloneByTag.js","../node_modules/lodash/_initCloneObject.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/_isKey.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_isStrictComparable.js","../node_modules/lodash/_iteratorToArray.js","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_mapToArray.js","../node_modules/lodash/_matchesStrictComparable.js","../node_modules/lodash/_memoizeCapped.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_nativeKeysIn.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_root.js","../node_modules/lodash/_setCacheAdd.js","../node_modules/lodash/_setCacheHas.js","../node_modules/lodash/_setToArray.js","../node_modules/lodash/_stackClear.js","../node_modules/lodash/_stackDelete.js","../node_modules/lodash/_stackGet.js","../node_modules/lodash/_stackHas.js","../node_modules/lodash/_stackSet.js","../node_modules/lodash/_stringToArray.js","../node_modules/lodash/_stringToPath.js","../node_modules/lodash/_toKey.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/_unicodeToArray.js","../node_modules/lodash/_unicodeWords.js","../node_modules/lodash/camelCase.js","../node_modules/lodash/capitalize.js","../node_modules/lodash/cloneDeepWith.js","../node_modules/lodash/deburr.js","../node_modules/lodash/eq.js","../node_modules/lodash/get.js","../node_modules/lodash/has.js","../node_modules/lodash/hasIn.js","../node_modules/lodash/identity.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/isArray.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/isLength.js","../node_modules/lodash/isMap.js","../node_modules/lodash/isObject.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/isSet.js","../node_modules/lodash/isString.js","../node_modules/lodash/isSymbol.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/keys.js","../node_modules/lodash/keysIn.js","../node_modules/lodash/mapKeys.js","../node_modules/lodash/mapValues.js","../node_modules/lodash/memoize.js","../node_modules/lodash/property.js","../node_modules/lodash/snakeCase.js","../node_modules/lodash/stubArray.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/toArray.js","../node_modules/lodash/toString.js","../node_modules/lodash/upperFirst.js","../node_modules/lodash/values.js","../node_modules/lodash/words.js","../node_modules/object-assign/index.js","../node_modules/object-inspect/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/property-expr/index.js","../node_modules/qs/lib/formats.js","../node_modules/qs/lib/index.js","../node_modules/qs/lib/parse.js","../node_modules/qs/lib/stringify.js","../node_modules/qs/lib/utils.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-fast-compare/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/react-modal/lib/components/Modal.js","../node_modules/react-modal/lib/components/ModalPortal.js","../node_modules/react-modal/lib/helpers/ariaAppHider.js","../node_modules/react-modal/lib/helpers/bodyTrap.js","../node_modules/react-modal/lib/helpers/classList.js","../node_modules/react-modal/lib/helpers/focusManager.js","../node_modules/react-modal/lib/helpers/portalOpenInstances.js","../node_modules/react-modal/lib/helpers/safeHTMLElement.js","../node_modules/react-modal/lib/helpers/scopeTab.js","../node_modules/react-modal/lib/helpers/tabbable.js","../node_modules/react-modal/lib/index.js","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/side-channel/index.js","../node_modules/synchronous-promise/index.js","../node_modules/toposort/index.js","../node_modules/warning/warning.js","../node_modules/yup/lib/Condition.js","../node_modules/yup/lib/Lazy.js","../node_modules/yup/lib/Reference.js","../node_modules/yup/lib/ValidationError.js","../node_modules/yup/lib/array.js","../node_modules/yup/lib/boolean.js","../node_modules/yup/lib/date.js","../node_modules/yup/lib/index.js","../node_modules/yup/lib/locale.js","../node_modules/yup/lib/mixed.js","../node_modules/yup/lib/number.js","../node_modules/yup/lib/object.js","../node_modules/yup/lib/setLocale.js","../node_modules/yup/lib/string.js","../node_modules/yup/lib/util/createValidation.js","../node_modules/yup/lib/util/inherits.js","../node_modules/yup/lib/util/isAbsent.js","../node_modules/yup/lib/util/isSchema.js","../node_modules/yup/lib/util/isodate.js","../node_modules/yup/lib/util/makePath.js","../node_modules/yup/lib/util/merge.js","../node_modules/yup/lib/util/printValue.js","../node_modules/yup/lib/util/reach.js","../node_modules/yup/lib/util/runValidations.js","../node_modules/yup/lib/util/sortByKeyOrder.js","../node_modules/yup/lib/util/sortFields.js","../node_modules/yup/node_modules/@babel/runtime/helpers/extends.js","../node_modules/yup/node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/yup/node_modules/@babel/runtime/helpers/interopRequireWildcard.js","../node_modules/yup/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../node_modules/yup/node_modules/@babel/runtime/helpers/taggedTemplateLiteralLoose.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/css loading","../webpack/runtime/jsonp chunk loading","global.ts","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","webpack://dte-portal/./src/components/routes/unexpectedError/UnexpectedErrorPage.module.css?ff1a","components/routes/unexpectedError/index.ts","components/routes/unexpectedError/UnexpectedErrorPage.tsx","components/errorBoundary/ErrorBoundary.tsx","components/errorBoundary/index.ts","../node_modules/jwt-decode/lib/atob.js","../node_modules/jwt-decode/lib/base64_url_decode.js","../node_modules/jwt-decode/lib/index.js","components/authentication/validateToken.ts","components/authentication/AuthenticationProvider.tsx","components/userData/UserDataProvider.tsx","webpack://dte-portal/./src/components/dataProtectionAgreement/DataProtectionAgreementDialog.module.css?7ed4","components/dataProtectionAgreement/index.ts","components/dataProtectionAgreement/DataProtectionAgreementDialog.tsx","components/login/schema.ts","components/login/attemptLogin.ts","webpack://dte-portal/./src/components/login/LoginPage.module.css?bcef","components/login/LoginPage.tsx","components/login/index.ts","components/assessments/moderator/updateResults.ts","components/assessments/moderator/index.ts","components/assessments/moderator/ModeratorPage.tsx","components/forgottenPassword/schema.ts","components/forgottenPassword/index.ts","components/forgottenPassword/ForgottenPasswordPage.tsx","components/forgottenPassword/requestPasswordReset.ts","components/resetPassword/schema.ts","components/resetPassword/ResetPasswordPage.tsx","components/resetPassword/resetPassword.ts","components/resetPassword/index.ts","components/resetPassword/ResetPasswordPageContainer.tsx","components/dashboard/containers/index.ts","components/dashboard/containers/MemberDetailFull.tsx","components/app/App.tsx","serviceWorker.ts","index.tsx"],"sourcesContent":["import AjaxErrorBoundary from './AjaxErrorBoundary';\r\n\r\nexport * from './types';\r\n\r\nexport default AjaxErrorBoundary;\r\n","import React from 'react';\r\nimport { IAjaxErrorBoundaryProps } from './types';\r\nimport BusyIndicator from '../../busyIndicator';\r\nimport ErrorList from '../../errorList';\r\n\r\nconst AjaxErrorBoundary: React.FC = ({\r\n busy,\r\n loadingText,\r\n errors,\r\n children,\r\n}) => {\r\n if (busy) {\r\n return ;\r\n }\r\n\r\n return (\r\n <>{errors.length > 0 ? : <>{children}}\r\n );\r\n};\r\n\r\nexport default AjaxErrorBoundary;\r\n","import React from 'react';\r\nimport { UnboundField } from '../../../../formikBindings';\r\nimport { IAnswerProps } from './types';\r\n\r\nexport const TextReadOnlyAnswer: React.FC = ({ name }) => (\r\n \r\n);\r\n","import React from 'react';\r\nimport { QuestionTypes } from '../../../../constants';\r\nimport {\r\n CheckAnswer,\r\n DateTimeAnswer,\r\n IdentifiedTargetedCompletedSourceAnswer,\r\n NumberAnswer,\r\n ScoreAnswer,\r\n TextAnswer,\r\n TextReadOnlyAnswer,\r\n MultiLineTextAnswer,\r\n} from './answers';\r\nimport { FormGroup } from '../../../forms';\r\nimport { IDriverEvaluationReportQuestion } from '../types';\r\nimport { useState } from 'react';\r\nimport { CheckBoxComponent } from '@syncfusion/ej2-react-buttons';\r\n\r\nconst ANSWER_COMPONENTS: { [key: number]: any } = {\r\n 0: TextReadOnlyAnswer,\r\n [QuestionTypes.Check]: CheckAnswer,\r\n [QuestionTypes.DateTime]: DateTimeAnswer,\r\n [QuestionTypes.IdentifiedTargetedCompletedSource]: IdentifiedTargetedCompletedSourceAnswer,\r\n [QuestionTypes.Number]: NumberAnswer,\r\n [QuestionTypes.Score]: ScoreAnswer,\r\n [QuestionTypes.Text]: TextAnswer,\r\n [QuestionTypes.TextReadonly]: TextReadOnlyAnswer,\r\n [QuestionTypes.TextMomo]: MultiLineTextAnswer\r\n};\r\n\r\nconst ShouldLabelBeDisplayedFor = (questionType: number) => {\r\n return questionType !== QuestionTypes.Check;\r\n};\r\n\r\nconst Question: React.FC = ({\r\n fileId,\r\n type,\r\n text,\r\n isRequired,\r\n isResultMaster,\r\n restrictions,\r\n enablestatus,\r\n needsCheckBoxToActivate\r\n}) => {\r\n const SpecificAnswer = ANSWER_COMPONENTS[type];\r\n\r\n const [enabled, setEnabled] = useState(false);\r\n\r\n return (\r\n \r\n {needsCheckBoxToActivate ? (\r\n
\r\n
\r\n {\r\n if (typeof (e) !== 'undefined') {\r\n setEnabled(e.checked ?? enabled);\r\n }\r\n }}\r\n />\r\n
\r\n \r\n
\r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default Question;\r\n","import React from 'react';\r\nimport { CheckBox } from '../../../../formikBindings';\r\nimport { ICheckAnswerProps } from './types';\r\n\r\nexport const CheckAnswer: React.FC = ({ name, label, enablestatus }) => (\r\n \r\n);\r\n","import React from 'react';\r\nimport { DatePicker } from '../../../../formikBindings';\r\nimport { IAnswerProps } from './types';\r\n\r\nexport const DateTimeAnswer: React.FC = ({ name, enablestatus }) => (\r\n \r\n);\r\n","import React from 'react';\r\nimport { DropDownList } from '../../../../formikBindings';\r\nimport { IAnswerProps } from './types';\r\n\r\nexport const IdentifiedTargetedCompletedSourceAnswer: React.FC = ({\r\n name, enablestatus\r\n}) => ;\r\n","import React from 'react';\r\nimport { NumericTextBox } from '../../../../formikBindings';\r\nimport { IAnswerProps } from './types';\r\n\r\nexport const NumberAnswer: React.FC = ({ name, enablestatus }) => (\r\n \r\n);\r\n","import React from 'react';\r\nimport { DropDownList } from '../../../../formikBindings';\r\nimport { IAnswerProps } from './types';\r\n\r\nexport const ScoreAnswer: React.FC = ({ name, enablestatus }) => (\r\n \r\n);\r\n","import React, { useMemo } from 'react';\r\nimport { ITextAnswerProps } from './types';\r\nimport { TextBox, DropDownList } from '../../../../formikBindings';\r\nimport toSyncfusionDataSource from '../../../../../utils/toSyncfusionDataSource';\r\n\r\nexport const TextAnswer: React.FC = ({\r\n name,\r\n restrictions,\r\n enablestatus\r\n}) => {\r\n const memoizedDataSource = useMemo(() => {\r\n return restrictions ? toSyncfusionDataSource(restrictions) : [];\r\n }, [restrictions]);\r\n\r\n return (\r\n <>\r\n {restrictions?.length ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport { IAnswerProps } from './types';\r\nimport { MultilineTextBox } from '../../../../formikBindings';\r\n\r\nexport const MultiLineTextAnswer: React.FC = ({\r\n name,\r\n enablestatus\r\n}) => {\r\n\r\n return (\r\n <>\r\n \r\n \r\n );\r\n};\r\n","import Question from './Question';\r\n\r\nexport default Question;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { IDriverEvaluationReportProps, IDynamicForm, Answer, IDriverEvaluationReportQuestion } from './types';\r\nimport { Formik, Form } from 'formik';\r\nimport { FormSectionHeading, ActionButton } from '../../forms';\r\nimport Question from './question';\r\nimport { ButtonComponent } from '@syncfusion/ej2-react-buttons';\r\nimport createDynamicForm from './createDynamicForm';\r\nimport { QuestionTypes } from '../../../constants';\r\nimport toUtcDate from '../../../utils/toUtcDate';\r\n\r\nconst DriverEvaluationReport: React.FC = ({\r\n busy,\r\n isAssessor,\r\n attendanceConfirmed,\r\n resultsSubmitted,\r\n groups,\r\n pdfUrl,\r\n requiresAttention,\r\n onReportUpdated,\r\n handleFetchingOverallAssessmentGrades, // 45915 - TO - 15/11/2024\r\n fetchingOverallAssessmentGrades // 45915 - TO - 15/11/2024\r\n}) => {\r\n const [dynamicForm, setDynamicForm] = useState();\r\n const [overallGrade, setOverallGrade] = useState();\r\n\r\n\r\n useEffect(() => {\r\n if (groups) {\r\n setDynamicForm(createDynamicForm(groups));\r\n\r\n // 45915 - TO - 15/11/2024\r\n const resultGroup = groups.filter(function (group) {\r\n return group.heading.toLowerCase().includes('result');\r\n }).at(0);\r\n\r\n if (resultGroup) {\r\n const overallGrade = resultGroup.questions.filter(function (question) {\r\n return question.text.toLowerCase().includes('overall') && question.text.toLowerCase().includes('grade');\r\n }).at(0);\r\n\r\n if (overallGrade) {\r\n setOverallGrade(overallGrade);\r\n }\r\n }\r\n }\r\n }, [groups]);\r\n\r\n const handleUpdateResults = (values: any, complete: boolean, forOverallGrade: boolean): void => {\r\n if (!dynamicForm?.fieldMappings) return;\r\n\r\n const results: Array = [];\r\n\r\n Object.keys(values).forEach(key => {\r\n const questionFileId: number = Number.parseInt(key);\r\n const fieldMapping = dynamicForm.fieldMappings[questionFileId];\r\n\r\n const result: Answer = { fileId: questionFileId, answer: null, fieldtype: fieldMapping.type};\r\n\r\n if (values[questionFileId] !== null) {\r\n switch (fieldMapping.type) {\r\n case QuestionTypes.DateTime:\r\n result.answer =\r\n values[key] instanceof Date\r\n ? toUtcDate(values[key]).toISOString()\r\n : values[key];\r\n break;\r\n\r\n case QuestionTypes.Check:\r\n result.answer = values[key] ? '1' : '0';\r\n break;\r\n\r\n default:\r\n result.answer = values[key].toString();\r\n }\r\n }\r\n\r\n results.push(result);\r\n });\r\n\r\n if (forOverallGrade) {\r\n handleFetchingOverallAssessmentGrades(results, complete);\r\n } else {\r\n onReportUpdated(results, complete);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n {dynamicForm?.initialValues && (\r\n handleUpdateResults(values, true, false)}\r\n >\r\n {({ values }) => (\r\n
\r\n \r\n {groups.map(group => (\r\n
\r\n {group.heading}\r\n {group.questions.map(question => (\r\n \r\n ))}\r\n
\r\n ))}\r\n \r\n {attendanceConfirmed && (\r\n
\r\n {overallGrade && (\r\n handleUpdateResults(values, false, true)}\r\n >\r\n Fetch Overall Assessment Grades\r\n \r\n )}\r\n {pdfUrl && (\r\n window.open(pdfUrl, '_blank')}\r\n >\r\n Show PDF\r\n \r\n )}\r\n {isAssessor && !resultsSubmitted && !requiresAttention && (\r\n <>\r\n handleUpdateResults(values, false, false)}\r\n >\r\n Update Results\r\n \r\n \r\n Submit Results\r\n \r\n \r\n )}\r\n
\r\n )}\r\n {!attendanceConfirmed &&

Attendance has not been confirmed

}\r\n {resultsSubmitted &&

This report has been submitted

}\r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default DriverEvaluationReport;\r\n","import {\r\n IDynamicForm,\r\n FieldMapping,\r\n IDriverEvaluationReportGroup,\r\n} from './types';\r\nimport * as Yup from 'yup';\r\n\r\nexport default (groups: Array): IDynamicForm => {\r\n const initialValues: any = {};\r\n const schemaDefinition: Yup.ObjectSchemaDefinition = {};\r\n const fieldMappings: FieldMapping = {};\r\n\r\n for (let group of groups) {\r\n for (let question of group.questions) {\r\n const name = question.fileId.toString();\r\n\r\n initialValues[name] = question.answer;\r\n\r\n if (question.isRequired || question.isResultMaster) {\r\n schemaDefinition[name] = Yup.string()\r\n .required('This is a required question')\r\n .nullable();\r\n }\r\n\r\n fieldMappings[name] = { fileId: question.fileId, type: question.type };\r\n }\r\n }\r\n\r\n return {\r\n initialValues,\r\n validationSchema: Yup.object(schemaDefinition),\r\n fieldMappings,\r\n };\r\n};\r\n","import { instance } from '../../../services/api';\r\n\r\nexport default (bookingFileId: number) => instance.get(`/api/driverEvaluations/${bookingFileId}`);","import { createContext } from 'react';\r\nimport { IAuthenticationContext } from './types';\r\n\r\nconst AuthenticationContext = createContext(\r\n undefined,\r\n);\r\n\r\nexport default AuthenticationContext;\r\n","import useAuthentication from './useAuthentication';\r\n\r\nexport default useAuthentication;\r\n","import { useContext } from 'react';\r\nimport { IAuthenticationContext } from './types';\r\nimport AuthenticationContext from './AuthenticationContext';\r\n\r\nconst useAuthentication = (): IAuthenticationContext => {\r\n const context = useContext(AuthenticationContext);\r\n\r\n if (!context) {\r\n throw new Error('This component must be a component');\r\n }\r\n\r\n return context;\r\n};\r\n\r\nexport default useAuthentication;\r\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"BusyIndicator_container__15bYj\",\"fullScreen\":\"BusyIndicator_fullScreen__hQkrm\",\"text\":\"BusyIndicator_text__YGaso\"};","import React from 'react';\r\nimport { IBusyIndicatorProps } from './types';\r\nimport styles from './BusyIndicator.module.css';\r\n\r\nconst BusyIndicator: React.FC = ({ text, fullScreen }) => {\r\n return (\r\n
\r\n \r\n {text}...\r\n
\r\n );\r\n};\r\n\r\nBusyIndicator.defaultProps = {\r\n fullScreen: false,\r\n};\r\n\r\nexport default BusyIndicator;\r\n","import BusyIndicator from './BusyIndicator';\r\n\r\nexport * from './types';\r\n\r\nexport default BusyIndicator;\r\n","// extracted by mini-css-extract-plugin\nexport default {\"list\":\"ErrorList_list__vCUIO\"};","import ErrorList from './ErrorList';\r\n\r\nexport * from './types';\r\n\r\nexport default ErrorList;\r\n","import React from 'react';\r\nimport { IErrorListProps } from './types';\r\nimport styles from './ErrorList.module.css';\r\n\r\nconst ErrorList: React.FC = ({ className, errors }) => {\r\n if (errors.length === 0) return null;\r\n\r\n return (\r\n
    \r\n {errors.map(error =>
  • {error}
  • )}\r\n
\r\n );\r\n};\r\n\r\nexport default ErrorList;\r\n","import React from 'react';\r\nimport { useField } from 'formik';\r\nimport { IFormikFieldProps } from './types';\r\nimport { CheckBoxModel } from '@syncfusion/ej2-buttons';\r\nimport { DefaultHtmlAttributes } from '@syncfusion/ej2-react-base';\r\nimport { CheckBoxComponent } from '@syncfusion/ej2-react-buttons';\r\n\r\nexport type CheckBoxProps = IFormikFieldProps &\r\n CheckBoxModel &\r\n DefaultHtmlAttributes;\r\n\r\nexport const CheckBox: React.FC = ({\r\n name,\r\n validate,\r\n ...rest\r\n}) => {\r\n const [field, , helpers] = useField(name);\r\n\r\n return (\r\n {\r\n if (typeof e === 'undefined' || !e.event) return;\r\n helpers.setValue(e.checked);\r\n }}\r\n onBlur={() => helpers.setTouched(true)}\r\n checked={field.value == '1'}\r\n {...rest}\r\n />\r\n );\r\n};\r\n","import React from 'react';\r\nimport { useField } from 'formik';\r\nimport { IFormikFieldProps } from './types';\r\nimport { DatePickerModel } from '@syncfusion/ej2-calendars';\r\nimport { DefaultHtmlAttributes } from '@syncfusion/ej2-react-base';\r\nimport { DatePickerComponent } from '@syncfusion/ej2-react-calendars';\r\n\r\nexport type DatePickerProps = IFormikFieldProps &\r\n DatePickerModel &\r\n DefaultHtmlAttributes;\r\n\r\nexport const DatePicker: React.FC = props => {\r\n const [field, , helpers] = useField(props);\r\n\r\n return (\r\n {\r\n if (!e || !e.value) {\r\n helpers.setValue(null);\r\n return;\r\n }\r\n\r\n // Extract the date and format it as YYYY-MM-DD to avoid timezone issues\r\n const selectedDate = new Date(e.value);\r\n const formattedDate = `${selectedDate.getFullYear()}-${(selectedDate.getMonth() + 1)\r\n .toString()\r\n .padStart(2, '0')}-${selectedDate\r\n .getDate()\r\n .toString()\r\n .padStart(2, '0')}`;\r\n\r\n // Set the formatted date string in Formik state\r\n helpers.setValue(formattedDate);\r\n }}\r\n />\r\n );\r\n};\r\n","import React from 'react';\r\nimport { useField } from 'formik';\r\nimport { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';\r\nimport { DropDownListModel } from '@syncfusion/ej2-dropdowns';\r\nimport { DefaultHtmlAttributes } from '@syncfusion/ej2-react-base';\r\nimport { DropDownListTypecast } from '@syncfusion/ej2-react-dropdowns';\r\nimport { IFormikFieldProps } from './types';\r\nimport { fields } from '../../utils/toSyncfusionDataSource';\r\n\r\nexport type DropDownListProps = IFormikFieldProps &\r\n ((DropDownListModel & DefaultHtmlAttributes) | DropDownListTypecast);\r\n\r\nexport const DropDownList: React.FC = ({\r\n name,\r\n ...rest\r\n}) => {\r\n const [field, , helpers] = useField(name);\r\n\r\n\r\n return (\r\n {\r\n if (typeof e === 'undefined' || !e.e) return;\r\n helpers.setValue(e.value);\r\n }}\r\n blur={() => helpers.setTouched(true)}\r\n value={field.value}\r\n fields={fields}\r\n {...rest}\r\n />\r\n );\r\n};\r\n","import React, { useRef, useLayoutEffect } from 'react';\r\nimport { useField } from 'formik';\r\nimport { TextBoxModel } from '@syncfusion/ej2-inputs';\r\nimport { DefaultHtmlAttributes } from '@syncfusion/ej2-react-base';\r\nimport { IFormikFieldProps } from './types';\r\nimport { TextBoxComponent } from '@syncfusion/ej2-react-inputs';\r\n\r\nexport type TextBoxProps = IFormikFieldProps &\r\n TextBoxModel &\r\n DefaultHtmlAttributes;\r\n\r\nexport const TextBox: React.FC = props => {\r\n const [field] = useField(props);\r\n\r\n return ;\r\n};\r\n\r\nexport type MultilineTextBoxProps = IFormikFieldProps &\r\n TextBoxModel &\r\n DefaultHtmlAttributes & { rows?: number };\r\n\r\nexport const MultilineTextBox: React.FC = props => {\r\n const [field] = useField(props);\r\n const { rows } = props;\r\n const element = useRef(null);\r\n\r\n useLayoutEffect(() => {\r\n if (element?.current && rows) {\r\n element.current.addAttributes({ 'rows': rows.toString() });\r\n }\r\n }, [rows]);\r\n\r\n return (\r\n \r\n );\r\n};","import React from 'react';\r\nimport { useField } from 'formik';\r\nimport { NumericTextBoxModel } from '@syncfusion/ej2-inputs';\r\nimport { DefaultHtmlAttributes } from '@syncfusion/ej2-react-base';\r\nimport { IFormikFieldProps } from './types';\r\nimport { NumericTextBoxComponent } from '@syncfusion/ej2-react-inputs';\r\n\r\nexport type NumericTextBoxProps = IFormikFieldProps &\r\n NumericTextBoxModel &\r\n DefaultHtmlAttributes;\r\n\r\nexport const NumericTextBox: React.FC = (props) => {\r\n const [field] = useField(props);\r\n\r\n return ;\r\n};\r\n","import React from 'react';\r\nimport { useField } from 'formik';\r\nimport { TextBoxComponent } from '@syncfusion/ej2-react-inputs';\r\n\r\nexport const UnboundField: React.FC = (props: any) => {\r\n const [field] = useField(props);\r\n\r\n return ;\r\n};\r\n","import React from 'react';\r\nimport { useField } from 'formik';\r\nimport { DatePickerComponent } from '@syncfusion/ej2-react-calendars';\r\n\r\nexport const DatePicker2: React.FC = props => {\r\n const [field, , helpers] = useField(props);\r\n\r\n return (\r\n {\r\n // no event args\r\n if (!e) return;\r\n\r\n if (!e.value) {\r\n // new value is null\r\n helpers.setValue(null);\r\n return;\r\n }\r\n\r\n let currentValue = field.value;\r\n var currentDate;\r\n var newDate;\r\n var newValue;\r\n\r\n if (!currentValue) {\r\n // current value is null\r\n helpers.setValue(e.value);\r\n return;\r\n }\r\n\r\n if (currentValue instanceof Date) {\r\n // current value is a date, get the ISO string representation\r\n currentDate = new Date(currentValue);\r\n currentValue = currentDate.toISOString().substring(0, 10);\r\n }\r\n\r\n if (e.value instanceof Date) {\r\n // current value is a date, get the ISO string representation\r\n newDate = new Date(e.value);\r\n newDate = new Date(newDate?.getTime() - (newDate?.getTimezoneOffset() * 60000));\r\n newValue = newDate.toISOString().substring(0, 10);\r\n }\r\n\r\n if (currentValue === newValue) {\r\n // values are the same\r\n return;\r\n }\r\n\r\n helpers.setValue(newDate);\r\n }}\r\n />\r\n );\r\n};\r\n","import React from 'react';\r\nimport { ButtonModel } from '@syncfusion/ej2-buttons';\r\nimport { DefaultHtmlAttributes } from '@syncfusion/ej2-react-base';\r\nimport { IActionButtonProps } from './types';\r\nimport { ButtonComponent } from '@syncfusion/ej2-react-buttons';\r\n\r\nexport const ActionButton: React.FC = ({ busy, children, ...rest }) => {\r\n return (\r\n \r\n {busy && }\r\n {children}\r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport { useFormikContext } from 'formik';\r\nimport { ButtonComponent } from '@syncfusion/ej2-react-buttons';\r\n\r\nexport const CancelButton: React.FC<{ children: React.ReactNode }> = ({ children }) => {\r\n const { dirty, isSubmitting, resetForm } = useFormikContext();\r\n\r\n return (\r\n resetForm()}\r\n >\r\n {children}\r\n \r\n );\r\n};\r\n","export * from './CancelButton';\r\n","import React from 'react';\r\nimport { TextBoxComponent } from '@syncfusion/ej2-react-inputs';\r\nimport { IDisplayFormGroupProps } from './types';\r\n\r\nexport const DisplayFormGroup: React.FC = ({\r\n colSize,\r\n label,\r\n name,\r\n value,\r\n}) => (\r\n
\r\n \r\n \r\n
\r\n);\r\n","import React from 'react';\r\nimport useMediaQuery from 'beautiful-react-hooks/useMediaQuery';\r\n\r\nexport const EmptyLabel: React.FC = () => {\r\n const showLabel = useMediaQuery('(min-width: 768px)');\r\n\r\n return <>{showLabel && };\r\n};\r\n","export * from './EmptyLabel';\r\n","// extracted by mini-css-extract-plugin\nexport default {\"required\":\"FormGroup_required__bIt8N\"};","import React from 'react';\r\nimport { ErrorMessage } from 'formik';\r\nimport { IFormGroupProps } from './types';\r\nimport styles from './FormGroup.module.css';\r\n\r\nexport const FormGroup: React.FC = ({\r\n className,\r\n iconClassName,\r\n label,\r\n name,\r\n required,\r\n children,\r\n}) => {\r\n return (\r\n
\r\n {iconClassName && }\r\n {label && (\r\n \r\n )}\r\n {children}\r\n \r\n
\r\n );\r\n};\r\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"FormHeading_container__9biAP\",\"heading\":\"FormHeading_heading__fX85i\",\"subHeading\":\"FormHeading_subHeading__DbpA+\",\"closeButton\":\"FormHeading_closeButton__hloJK\"};","import React from 'react';\r\nimport { IFormHeadingProps } from './types';\r\nimport styles from './FormHeading.module.css';\r\n\r\nexport const FormHeading: React.FC = ({\r\n heading,\r\n subHeading,\r\n secondSubHeading,\r\n className,\r\n onClose,\r\n}) => {\r\n return (\r\n
\r\n
\r\n {onClose && }\r\n {heading}\r\n
\r\n {subHeading && {subHeading}}\r\n {secondSubHeading && (\r\n {secondSubHeading}\r\n )}\r\n
\r\n );\r\n};\r\n","// extracted by mini-css-extract-plugin\nexport default {\"text\":\"FormSectionHeading_text__GRqqw\"};","import React from 'react';\r\nimport styles from './FormSectionHeading.module.css';\r\n\r\nexport const FormSectionHeading: React.FC<{ children: React.ReactNode }> = ({\r\n children,\r\n}) =>
{children}
;\r\n","export * from './formGroup';\r\nexport * from './formHeading';\r\nexport * from './formSectionHeading';\r\nexport * from './submitButton';\r\nexport * from './cancelButton';\r\nexport * from './displayFormGroup';\r\nexport * from './emptyLabel';\r\nexport * from './actionButton';\r\n","import React from 'react';\r\nimport { useFormikContext } from 'formik';\r\n\r\nexport const SubmitButton: React.FC<{ children: React.ReactNode }> = ({ children }) => {\r\n const { isSubmitting, submitForm } = useFormikContext();\r\n\r\n const handleClick = () => {\r\n if (isSubmitting) return;\r\n\r\n submitForm();\r\n };\r\n\r\n return (\r\n \r\n {isSubmitting && }\r\n {children}\r\n \r\n );\r\n};\r\n","export * from './useDataFetcher';\r\nexport * from './useBatchDataFetcher';\r\nexport * from './useIsFirstRender';\r\n","import { useEffect, useState } from 'react';\r\nimport axios from 'axios';\r\nimport { instance } from '../../services/api';\r\nimport makeCancelable from '../../utils/makeCancelable';\r\n\r\nconst initialState = {\r\n busy: true,\r\n data: [],\r\n errors: [],\r\n};\r\n\r\nexport const useBatchDataFetcher = (\r\n urls: Array,\r\n config?: {\r\n transformers: Array<(data: any) => any>;\r\n finalTransformation?: (data: Array) => any;\r\n },\r\n): { busy: boolean; data: Array; errors: Array } => {\r\n const [state, setState] = useState(initialState);\r\n\r\n useEffect(() => {\r\n const source = axios.CancelToken.source();\r\n\r\n setState(initialState);\r\n\r\n const cancelableRequest = makeCancelable(\r\n axios.all(\r\n urls.map(url =>\r\n instance.get(url, {\r\n cancelToken: source.token,\r\n }),\r\n ),\r\n ),\r\n source,\r\n );\r\n\r\n const applyTransformations = (data: Array): any => {\r\n if (!config) return data;\r\n\r\n const transformedData = data.map((r: any, index: number) =>\r\n transformData(r, index),\r\n );\r\n\r\n return config.finalTransformation\r\n ? config.finalTransformation(transformedData)\r\n : transformedData;\r\n };\r\n\r\n const transformData = (data: any, index: number): any => {\r\n if (!config || !config.transformers[index]) return data;\r\n\r\n return config.transformers[index](data);\r\n };\r\n\r\n cancelableRequest.promise\r\n .then(response =>\r\n setState({\r\n busy: false,\r\n data: applyTransformations(response.map((r: any) => r.data)),\r\n errors: [],\r\n }),\r\n )\r\n .catch(errors => {\r\n if (!errors.isCanceled) {\r\n setState({ busy: false, data: [], errors });\r\n }\r\n });\r\n\r\n return () => {\r\n cancelableRequest.cancel();\r\n };\r\n }, [urls, config]);\r\n\r\n return {\r\n busy: state.busy,\r\n data: state.data,\r\n errors: state.errors,\r\n };\r\n};\r\n","import { useEffect, useState } from 'react';\r\nimport axios from 'axios';\r\nimport { instance } from '../../services/api';\r\nimport makeCancelable from '../../utils/makeCancelable';\r\n\r\nconst initialState = {\r\n busy: true,\r\n data: undefined,\r\n errors: [],\r\n};\r\n\r\nexport const useDataFetcher = (\r\n url: string,\r\n config?: { transformer: (data: any) => any },\r\n): { busy: boolean; data: any; errors: Array } => {\r\n const [state, setState] = useState(initialState);\r\n\r\n useEffect(() => {\r\n if (url) {\r\n const source = axios.CancelToken.source();\r\n\r\n setState(initialState);\r\n\r\n const cancelableRequest = makeCancelable(\r\n instance.get(url, {\r\n cancelToken: source.token,\r\n }),\r\n source,\r\n );\r\n\r\n const transformData = (data: any): any => {\r\n if (!config || !config.transformer) return data;\r\n\r\n return config.transformer(data);\r\n };\r\n\r\n cancelableRequest.promise\r\n .then(response =>\r\n setState({\r\n busy: false,\r\n data: transformData(response.data),\r\n errors: [],\r\n }),\r\n )\r\n .catch(errors => {\r\n if (!errors.isCanceled) {\r\n setState({ busy: false, data: undefined, errors });\r\n }\r\n });\r\n\r\n return () => {\r\n cancelableRequest.cancel();\r\n };\r\n }\r\n }, [url, config]);\r\n\r\n return {\r\n busy: state.busy,\r\n data: state.data,\r\n errors: state.errors,\r\n };\r\n};\r\n","import { useRef } from 'react'\r\n\r\n//https://github.com/antonioru/beautiful-react-hooks/blob/master/src/useIsFirstRender.ts\r\n\r\nexport const useIsFirstRender = () => {\r\n const isFirstRenderRef = useRef(true)\r\n\r\n if (isFirstRenderRef.current) {\r\n isFirstRenderRef.current = false\r\n\r\n return true\r\n }\r\n\r\n return isFirstRenderRef.current\r\n}\r\n","import React from 'react';\r\nimport { FormGroup, FormSectionHeading } from '../../../forms';\r\nimport { DatePicker, TextBox, UnboundField } from '../../../formikBindings';\r\n\r\nconst ProfileTab: React.FC = () => (\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n IAM Membership\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n);\r\n\r\nexport default ProfileTab;\r\n","import React from 'react';\r\nimport { FormGroup } from '../../../forms';\r\nimport { CheckBox, TextBox, DropDownList } from '../../../formikBindings';\r\nimport { IAddressTabProps } from './types';\r\nimport { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';\r\nimport { ChangeEventArgs } from '@syncfusion/ej2-dropdowns';\r\nimport { fields } from '../../../../utils/toSyncfusionDataSource';\r\n\r\nconst AddressTab: React.FC = ({\r\n addressTypes,\r\n selectedAddressIndex,\r\n onChangeSelectedAddressIndex,\r\n counties\r\n}) => {\r\n const handleAddressTypeChange = (args: ChangeEventArgs | undefined) => {\r\n if (typeof args === 'undefined' || !args.e) return;\r\n\r\n onChangeSelectedAddressIndex(+args.value);\r\n };\r\n\r\n return (\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default AddressTab;\r\n","import React from 'react';\r\nimport { FormGroup, FormSectionHeading } from '../../../forms';\r\nimport { TextBox, DatePicker } from '../../../formikBindings';\r\nimport { IGroupTabProps } from './types';\r\nimport {\r\n ColumnDirective,\r\n ColumnsDirective,\r\n Filter,\r\n GridComponent,\r\n Inject,\r\n Sort,\r\n} from '@syncfusion/ej2-react-grids';\r\n\r\nconst GroupTab: React.FC = ({ testClassifications, groupSpecificFieldLabels }: IGroupTabProps) => {\r\n const dataSource = testClassifications.map(classification => ({\r\n description: classification,\r\n }));\r\n\r\n return (\r\n
\r\n
\r\n label.fieldId === 432)?.label || \"Member Ref 1\"}\r\n name=\"group.memRef1\"\r\n >\r\n \r\n \r\n label.fieldId === 433)?.label || \"Member Ref 2\"}\r\n name=\"group.memRef2\"\r\n >\r\n \r\n \r\n
\r\n\r\n
\r\n label.fieldId === 434)?.label || \"Enrol Date\"}\r\n name=\"group.enrolDate\"\r\n >\r\n \r\n \r\n label.fieldId === 435)?.label || \"Expiry Date\"}\r\n name=\"group.expiryDate\"\r\n >\r\n \r\n \r\n
\r\n\r\n label.fieldId === 436)?.label || \"Member Value\"}\r\n name=\"group.memValue\">\r\n \r\n \r\n label.fieldId === 437)?.label || \"How Heard\"}\r\n name=\"group.howHeard\">\r\n \r\n \r\n label.fieldId === 438)?.label || \"How Joined\"}\r\n name=\"group.howJoined\">\r\n \r\n \r\n\r\n
\r\n label.fieldId === 439)?.label || \"Tag 1\"}\r\n name=\"group.tag1\">\r\n \r\n \r\n label.fieldId === 440)?.label || \"Tag 2\"}\r\n name=\"group.tag2\">\r\n \r\n \r\n
\r\n\r\n label.fieldId === 441)?.label || \"Ref Date\"}\r\n name=\"group.refDate\">\r\n \r\n \r\n\r\n IAM Test Classifications\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default GroupTab;\r\n","import * as Yup from 'yup';\r\n\r\nexport default Yup.object({\r\n groupRoleDescId: Yup.string().required('Please select a link type'),\r\n});\r\n","import React, { useState } from 'react';\r\nimport { Formik, Form } from 'formik';\r\nimport AjaxErrorBoundary from '../../../../../ajax/errorBoundary';\r\nimport { FormGroup, ActionButton } from '../../../../../forms';\r\nimport { DropDownList } from '../../../../../formikBindings';\r\nimport Modal from 'react-modal';\r\nimport ErrorList from '../../../../../errorList';\r\nimport { useDataFetcher } from '../../../../../hooks';\r\nimport toSyncfusionDataSource from '../../../../../../utils/toSyncfusionDataSource';\r\nimport { DropDownItem } from '../../../../../types';\r\nimport { ButtonComponent } from '@syncfusion/ej2-react-buttons';\r\nimport { IAddLinkModalProps, IAddLinkModalFormValues } from './types';\r\nimport createGroupMemberLink from './createGroupMemberLink';\r\nimport schema from './schema';\r\nimport useUserData from '../../../../../userData';\r\n\r\nconst transformDropDownData = (data: {\r\n items: Array;\r\n}): Array<{ [key: string]: Object }> => toSyncfusionDataSource(data.items);\r\n\r\nconst config = {\r\n transformer: transformDropDownData,\r\n};\r\n\r\nconst initialValues: IAddLinkModalFormValues = {\r\n groupRoleDescId: '',\r\n};\r\n\r\nexport const AddLinkModal: React.FC = ({\r\n organisationFileId,\r\n contactFileId,\r\n onAdded,\r\n onCancel,\r\n}) => {\r\n const { getSelectedOrganisationName } = useUserData();\r\n\r\n const { busy, data, errors } = useDataFetcher('/api/groupRoles', config);\r\n const [ajaxErrors, setAjaxErrors] = useState>([]);\r\n const [isAdding, setIsAdding] = useState(false);\r\n\r\n return (\r\n \r\n
\r\n

Add Group Member Link

\r\n \r\n {\r\n setAjaxErrors([]);\r\n setIsAdding(true);\r\n\r\n createGroupMemberLink({\r\n contactFileId,\r\n organisationFileId,\r\n groupRoleDescId: +values.groupRoleDescId,\r\n })\r\n .then(() => {\r\n // get organisation name\r\n const organisationName = getSelectedOrganisationName();\r\n\r\n // get role description\r\n const roleDescription = data.find(\r\n (entry: any) => entry.id === values.groupRoleDescId,\r\n ).item.displayValue;\r\n\r\n onAdded();\r\n })\r\n .catch(setAjaxErrors)\r\n .finally(() => setIsAdding(false));\r\n }}\r\n >\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n Cancel\r\n \r\n \r\n Continue\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n","import { AxiosPromise } from 'axios';\r\nimport { ICreateGroupMemberLinkCommand } from './types';\r\nimport { instance } from '../../../../../../services/api';\r\n\r\nexport default (data: ICreateGroupMemberLinkCommand): AxiosPromise =>\r\n instance.post('api/localGroupMemberDetails/groupMemberLinks', data);\r\n","import React from 'react';\r\nimport Modal from 'react-modal';\r\nimport { IDeleteLinkConfirmationModalProps } from './types';\r\nimport { ButtonComponent } from '@syncfusion/ej2-react-buttons';\r\n\r\nexport const DeleteLinkConfirmationModal: React.FC = ({\r\n hasPermission,\r\n onConfirm,\r\n onCancel,\r\n contactLinksCount,\r\n selectedLink // 45886 - TO - 06/11/2024\r\n}) => (\r\n \r\n
\r\n {selectedLink.type !== 'Member' ? (\r\n <>\r\n

Warning

\r\n
\r\n

Only the 'Member' role can be deleted.

\r\n

\r\n If the role you are attempting to delete relates to group committee changes, please use the 'Group Committee Change' form to request this role deletion.\r\n

\r\n

\r\n To delete any other roles, please contact the Customer Care Team for further assistance.\r\n

\r\n
\r\n \r\n ) : (\r\n <>\r\n

Member Group Link

\r\n {hasPermission ? (\r\n
\r\n

\r\n Do you wish to remove this link (Group Role) between member and the Local Group?\r\n

\r\n {contactLinksCount === 1 &&\r\n

\r\n WARNING: Deleting the last link will mark this contacts group address as inactive.\r\n

\r\n }\r\n
\r\n ) : (\r\n
\r\n

\r\n You are not authorised to remove a membership link belonging to another Group.\r\n

\r\n
\r\n )}\r\n \r\n )}\r\n
\r\n \r\n {hasPermission && selectedLink.type === 'Member' ? 'No' : 'Close'}\r\n \r\n {(hasPermission && selectedLink.type === 'Member') && (\r\n \r\n Yes\r\n \r\n )}\r\n
\r\n
\r\n
\r\n);\r\n","import * as Yup from 'yup';\r\n\r\nexport default Yup.object({\r\n reason: Yup.string().required('Please enter a reason'),\r\n});\r\n","import React, { useState } from 'react';\r\nimport Modal from 'react-modal';\r\nimport { IDeleteLinkModalProps } from './types';\r\nimport { ButtonComponent } from '@syncfusion/ej2-react-buttons';\r\nimport { Form, Formik } from 'formik';\r\nimport ErrorList from '../../../../../errorList';\r\nimport { FormGroup, ActionButton } from '../../../../../forms';\r\nimport { UnboundField, TextBox } from '../../../../../formikBindings';\r\nimport schema from './schema';\r\nimport deleteGroupMemberLink from './deleteGroupMemberLink';\r\n\r\nexport const DeleteLinkModal: React.FC = ({\r\n addressFileId,\r\n groupRoleDescId,\r\n contactId,\r\n name,\r\n organisationInformation, // 45861 - TO - 19/09/2024\r\n userId, // 45861 - TO - 24/09/2024\r\n onCancel,\r\n onDelete,\r\n}) => {\r\n const [ajaxErrors, setAjaxErrors] = useState>([]);\r\n const [isDeleting, setIsDeleting] = useState(false);\r\n\r\n return (\r\n \r\n
\r\n

Group Member Deletion

\r\n {\r\n setAjaxErrors([]);\r\n setIsDeleting(true);\r\n\r\n deleteGroupMemberLink({\r\n addressFileId,\r\n groupRoleDescId,\r\n reason: values.reason,\r\n organisationInformation, // 45861 - TO - 19/09/2024\r\n userId // 45861 - TO - 24/09/2024\r\n })\r\n .then(onDelete)\r\n .catch(setAjaxErrors)\r\n .finally(() => setIsDeleting(false));\r\n }}\r\n >\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n Cancel\r\n \r\n \r\n Delete\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n","import { AxiosPromise } from 'axios';\r\nimport { IDeleteGroupMemberLinkCommand } from './types';\r\nimport { instance } from '../../../../../../services/api';\r\n\r\nexport default (data: IDeleteGroupMemberLinkCommand): AxiosPromise =>\r\n instance.post('api/localGroupMemberDetails/groupMemberLinks/delete', data);\r\n","import React, { useRef, useState } from 'react';\r\nimport ErrorList from '../../../errorList';\r\nimport {\r\n ColumnDirective,\r\n ColumnsDirective,\r\n Filter,\r\n GridComponent,\r\n Inject,\r\n Sort,\r\n Toolbar,\r\n} from '@syncfusion/ej2-react-grids';\r\nimport { RowSelectEventArgs } from '@syncfusion/ej2-grids';\r\nimport {\r\n AddLinkModal,\r\n DeleteLinkConfirmationModal,\r\n DeleteLinkModal,\r\n} from './modals';\r\nimport { ILink } from '../../../myDetails/form';\r\nimport { ILinksTabProps, IDeleteLinkState } from './types';\r\nimport useUserData from '../../../userData';\r\nimport reloadLinks from '../edit/reloadLinks';\r\n\r\nconst AddLinkButtonId: string = 'AddLink';\r\nconst DeleteLinkButtonId: string = 'DeleteLink';\r\n\r\nconst initialDeleteLinkState: IDeleteLinkState = {\r\n active: false,\r\n confirmed: false,\r\n};\r\n\r\nconst LinksTab: React.FC = ({\r\n fileId,\r\n groupId,\r\n contactId,\r\n name,\r\n initialValues,\r\n}) => {\r\n const gridElement = useRef(null);\r\n\r\n const { selectedOrganisationFileId, getSelectedOrganisationName /* 45861 - TO - 19/09/2024 */, selectedContactFileId /* 45861 - TO - 24/09/2024 */ } = useUserData();\r\n\r\n const [ajaxErrors, setAjaxErrors] = useState>([]);\r\n const [links, setLinks] = useState>(initialValues);\r\n const [selectedLink, setSelectedLink] = useState(null);\r\n\r\n const [addingLink, setAddingLink] = useState(false);\r\n const [deleteLinkState, setDeleteLinkState] = useState(\r\n initialDeleteLinkState,\r\n );\r\n\r\n const handleRowClick = (args: RowSelectEventArgs | undefined) => {\r\n if (typeof args === 'undefined' || !args.data) return;\r\n\r\n const link = args.data as ILink;\r\n\r\n setSelectedLink(link);\r\n };\r\n\r\n const handleToolbarButtonClick = (args: any) => {\r\n if (!gridElement) return;\r\n\r\n if (args.item.id === AddLinkButtonId) {\r\n setAddingLink(true);\r\n } else if (args.item.id === DeleteLinkButtonId && selectedLink !== null) {\r\n setDeleteLinkState({ ...initialDeleteLinkState, active: true });\r\n }\r\n };\r\n\r\n const reloadData = () => {\r\n setAjaxErrors([]);\r\n setSelectedLink(null);\r\n\r\n reloadLinks(fileId, groupId)\r\n .then(response => setLinks(response.data))\r\n .catch(setAjaxErrors);\r\n };\r\n\r\n const handleRoleAdded = (): void => {\r\n setAddingLink(false);\r\n reloadData();\r\n };\r\n\r\n const handleRowDeleted = (): void => {\r\n setDeleteLinkState(initialDeleteLinkState);\r\n reloadData();\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {addingLink && (\r\n setAddingLink(false)}\r\n />\r\n )}\r\n {selectedLink &&\r\n deleteLinkState.active &&\r\n (deleteLinkState.confirmed ? (\r\n setDeleteLinkState(initialDeleteLinkState)}\r\n onDelete={handleRowDeleted}\r\n />\r\n ) : (\r\n \r\n setDeleteLinkState({ ...deleteLinkState, confirmed: true })\r\n }\r\n onCancel={() => setDeleteLinkState(initialDeleteLinkState)}\r\n contactLinksCount={links.length}\r\n selectedLink={selectedLink}\r\n />\r\n ))}\r\n
\r\n );\r\n};\r\n\r\nexport default LinksTab;\r\n","import { AxiosPromise } from 'axios';\r\nimport { instance } from '../../../../services/api';\r\n\r\nexport default (contactFileId: number, groupId: number): AxiosPromise =>\r\n instance.get(`api/localGroupMemberDetails/${groupId}/${contactFileId}/groupMemberLinksForLocalGroup`);\r\n","import {\r\n ILocalGroupMemberDetailsFormValues,\r\n IAddress,\r\n IGroup,\r\n IUpdatableMember,\r\n IUpdatableAddress,\r\n IUpdateCommand,\r\n} from './types';\r\nimport isDifferent from '../../../../utils/isDifferent';\r\n\r\nconst identifyChanges = (\r\n initialValues: ILocalGroupMemberDetailsFormValues,\r\n values: ILocalGroupMemberDetailsFormValues,\r\n): IUpdateCommand => {\r\n const valuesToUpdate: IUpdateCommand = {\r\n fileId: values.fileId,\r\n groupId: values.groupId\r\n };\r\n\r\n // contact\r\n const originalContact = extractUpdatableContactFieldsFrom(initialValues);\r\n const currentContact = extractUpdatableContactFieldsFrom(values);\r\n\r\n if (isDifferent(originalContact, currentContact)) {\r\n valuesToUpdate.contact = currentContact;\r\n }\r\n\r\n const addressesToUpdate: Array = [];\r\n\r\n for (let index = 0; index < values.addresses.length; index += 1) {\r\n const originalAddress = extractUpdatableAddressFieldsFrom(\r\n initialValues.addresses[index],\r\n );\r\n const currentAddress = extractUpdatableAddressFieldsFrom(\r\n values.addresses[index],\r\n );\r\n\r\n if (isDifferent(originalAddress, currentAddress)) {\r\n addressesToUpdate.push(currentAddress);\r\n }\r\n }\r\n\r\n if (addressesToUpdate.length > 0) {\r\n valuesToUpdate.addresses = addressesToUpdate;\r\n }\r\n\r\n // group\r\n const originalGroup = extractUpdatableGroupFieldsFrom(initialValues);\r\n const currentGroup = extractUpdatableGroupFieldsFrom(values);\r\n\r\n if (isDifferent(originalGroup, currentGroup)) {\r\n valuesToUpdate.group = currentGroup;\r\n }\r\n\r\n return valuesToUpdate;\r\n};\r\n\r\nconst extractUpdatableContactFieldsFrom = (\r\n values: ILocalGroupMemberDetailsFormValues,\r\n): IUpdatableMember => ({\r\n dateOfBirth: values.dateOfBirth,\r\n mobile: values.mobile,\r\n email: values.email,\r\n});\r\n\r\nconst extractUpdatableAddressFieldsFrom = (\r\n address: IAddress,\r\n): IUpdatableAddress => ({\r\n fileId: address.fileId,\r\n premise: address.premise,\r\n street: address.street,\r\n district: address.district,\r\n town: address.town,\r\n county: address.county,\r\n postcode: address.postcode,\r\n telephone1: address.telephone1,\r\n telephone2: address.telephone2,\r\n email: address.email,\r\n mobile: address.mobile,\r\n});\r\n\r\nconst extractUpdatableGroupFieldsFrom = (\r\n values: ILocalGroupMemberDetailsFormValues,\r\n): IGroup => ({\r\n ...values.group,\r\n});\r\n\r\nexport default identifyChanges;\r\n","import * as Yup from 'yup';\r\n\r\nexport default Yup.object({\r\n email: Yup.string()\r\n .email('Invalid Email').nullable(),\r\n});\r\n","// EU1832 - TO - 12/09/2022\r\nexport const AddId: string = 'AddId';\r\nexport const DeleteId: string = 'DeleteId';\r\n\r\nexport const ToolbarDescriptions: { [key: string]: string } = {\r\n AddId: 'Add',\r\n DeleteId: 'Delete'\r\n};\r\n\r\nexport const GroupLinksToolbar: any = [\r\n {\r\n text: ToolbarDescriptions[AddId],\r\n tooltipText: ToolbarDescriptions[AddId],\r\n id: AddId\r\n },\r\n {\r\n text: ToolbarDescriptions[DeleteId],\r\n tooltipText: ToolbarDescriptions[DeleteId],\r\n id: DeleteId\r\n }\r\n];\r\n","import React, { useState } from \"react\";\r\nimport { IDeleteGroupLinkModelProps } from \"../../types\";\r\nimport Modal from 'react-modal';\r\nimport { ButtonComponent } from \"@syncfusion/ej2-react-buttons\";\r\nimport deleteGroupLink from \"./deleteGroupLink\";\r\nimport { DeleteId } from \"../../groupLinkGridToolbar\";\r\nimport ErrorList from \"../../../../../errorList\";\r\n\r\nconst DeleteGroupLinkModel: React.FC = ({ localGroupLinkFileId, setShowModel, handleComplete }) => {\r\n const [busy, setBusy] = useState(false);\r\n const [errors, setErrors] = useState>([]);\r\n\r\n const handleDeletion = () => {\r\n setBusy(true);\r\n \r\n deleteGroupLink(localGroupLinkFileId)\r\n .then(() => handleComplete(DeleteId))\r\n .catch((errors) => setErrors(errors))\r\n .finally(() => setBusy(false));\r\n }\r\n\r\n return (\r\n \r\n \r\n

Are you sure you want to delete this contact at local group link.

\r\n setShowModel(false)} disabled={busy}>\r\n Cancel\r\n \r\n handleDeletion()} disabled={busy}>\r\n Delete\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default DeleteGroupLinkModel;\r\n","import { instance } from '../../../../../../services/api';\r\n\r\n// EU1832 - TO - 08/09/2022\r\nexport default (contactAtLocalGroupLinkFileId: number) => {\r\n return instance.delete(`api/contactAtLocalGroupLinks/${contactAtLocalGroupLinkFileId}`);\r\n};\r\n","import React, { useState } from \"react\";\r\nimport { IAddGroupLinkModelProps } from \"../../types\";\r\nimport Modal from 'react-modal';\r\nimport { ButtonComponent } from \"@syncfusion/ej2-react-buttons\";\r\nimport { AddId } from \"../../groupLinkGridToolbar\";\r\nimport ErrorList from \"../../../../../errorList\";\r\nimport { FormGroup, FormHeading, SubmitButton } from \"../../../../../forms\";\r\nimport { Form, Formik } from \"formik\";\r\nimport addGroupLink from \"./addGroupLink\";\r\nimport { useDataFetcher } from \"../../../../../hooks\";\r\nimport AjaxErrorBoundary from \"../../../../../ajax/errorBoundary\";\r\nimport { ILocalGroupLink } from \"../../../../../settings/localGroupLinkMaintenance/types\";\r\nimport { DropDownList } from \"../../../../../formikBindings\";\r\n\r\nconst localGroupLinksTransformer = (localGroupLinks: Array): Array<{ [key: string]: Object }> => {\r\n return localGroupLinks.map(localGroupLink => ({ \r\n id: localGroupLink.fileId,\r\n item: {\r\n id: localGroupLink.fileId,\r\n displayValue: localGroupLink.description\r\n }\r\n }));\r\n}\r\n\r\nconst AddGroupLinkModel: React.FC = ({ contactFileId, groupId, setShowModel, handleComplete }) => {\r\n const [ajaxErrors, setAjaxErrors] = useState>([]);\r\n\r\n const {\r\n busy,\r\n errors,\r\n data\r\n } = useDataFetcher(`api/localGroupLinks/${groupId}`);\r\n\r\n return (\r\n \r\n \r\n \r\n {\r\n addGroupLink(values)\r\n .then(() => handleComplete(AddId))\r\n .catch(errors => setAjaxErrors(errors))\r\n .finally(() => setSubmitting(false));\r\n }}\r\n >\r\n {({ isSubmitting }) => (\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n setShowModel(false)}>\r\n Cancel\r\n \r\n Save\r\n
\r\n \r\n )}\r\n \r\n \r\n
\r\n )\r\n}\r\n\r\nexport default AddGroupLinkModel;\r\n","import { instance } from '../../../../../../services/api';\r\nimport { ICreateContactAtLocalGroupCommand } from '../../types';\r\n\r\n// EU1832 - TO - 08/09/2022\r\nexport default (command: ICreateContactAtLocalGroupCommand) => {\r\n return instance.post('api/contactAtLocalGroupLinks/create', command);\r\n};\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport {\r\n ColumnDirective,\r\n ColumnsDirective,\r\n GridComponent,\r\n RowSelectEventArgs\r\n} from '@syncfusion/ej2-react-grids';\r\nimport { IContactAtLocalGroupLink, IGroupLinksTabProps } from './types';\r\nimport { AddId, DeleteId, GroupLinksToolbar } from './groupLinkGridToolbar';\r\nimport ErrorList from '../../../errorList';\r\nimport DeleteGroupLinkModel from './modals/deleteGroupLink/DeleteGroupLinkModel';\r\nimport { NotificationModal } from '../../../modals';\r\nimport AddGroupLinkModel from './modals/addGroupLink/AddGroupLinkModel';\r\nimport getLocalGroupMemberDetails from './getLocalGroupMemberDetails';\r\n\r\nconst GroupLinksTab: React.FC = ({ groupLinks, contactFileId, groupId, isGroupOfficer }) => {\r\n const [selectedToolbarOption, setSelectedToolbarOption] = useState();\r\n const [selectedContactAtLocalGroupLink, setSelectedContactAtLocalGroupLink] = useState({ fileId: 0, description: '' });\r\n\r\n const [showAddModel, setShowAddModel] = useState(false);\r\n const [showDeleteModel, setShowDeleteModel] = useState(false);\r\n\r\n const [gridError, setGridErrors] = useState>([]);\r\n const [ContactLocalgroupLinks, setContactLocalGroupLinks] = useState>();\r\n const [refreshLinks, setRefreshLinks] = useState(false);\r\n\r\n useEffect(() => {\r\n if (groupLinks) {\r\n setContactLocalGroupLinks(groupLinks);\r\n }\r\n\r\n if (refreshLinks) {\r\n getLocalGroupMemberDetails(groupId, contactFileId)\r\n .then(res => setContactLocalGroupLinks(res.data.groupLinks))\r\n .catch(errors => setGridErrors(errors));\r\n }\r\n }, [groupLinks, refreshLinks]);\r\n\r\n const handleRowClick = (args: RowSelectEventArgs | undefined) => {\r\n if (typeof args === 'undefined' || !args.data) return;\r\n\r\n if (args.isInteracted) {\r\n setSelectedContactAtLocalGroupLink(args.data as IContactAtLocalGroupLink);\r\n }\r\n };\r\n\r\n const gridElement = useRef(null);\r\n\r\n const handleToolbarClick = (args: any) => {\r\n if (!gridElement) return;\r\n\r\n switch (args.item.id) {\r\n case AddId:\r\n case DeleteId:\r\n setSelectedToolbarOption(args.item.id);\r\n break;\r\n \r\n default:\r\n break;\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (typeof(selectedToolbarOption) !== 'undefined')\r\n {\r\n setRefreshLinks(false);\r\n setGridErrors([]);\r\n \r\n if (selectedToolbarOption === AddId) {\r\n setShowAddModel(true);\r\n } else if (selectedToolbarOption === DeleteId && selectedContactAtLocalGroupLink.fileId !== 0) {\r\n setShowDeleteModel(true);\r\n } else if (selectedContactAtLocalGroupLink.fileId === 0 && selectedToolbarOption === DeleteId) {\r\n setGridErrors([\"You must select a contact at local group link to use the delete option.\"]);\r\n setSelectedToolbarOption(undefined);\r\n }\r\n }\r\n\r\n }, [selectedToolbarOption]);\r\n\r\n const [successMessage, setSuccessMessage] = useState(\"\");\r\n const [showSuccessModel, setShowSuccessModel] = useState(false);\r\n\r\n const handleComplete = (toolbarOption: string) => {\r\n if (toolbarOption === AddId) {\r\n setShowAddModel(false);\r\n setSuccessMessage(\"Contact at Local group link created.\");\r\n } else if (toolbarOption === DeleteId) {\r\n setShowDeleteModel(false);\r\n setSuccessMessage(\"Contact at Local group link deleted.\");\r\n }\r\n\r\n setShowSuccessModel(true);\r\n }\r\n \r\n return (\r\n
\r\n {!isGroupOfficer ? (\r\n \r\n ) : (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n {showAddModel && (\r\n \r\n )}\r\n {showDeleteModel && (\r\n \r\n )}\r\n {showSuccessModel && (\r\n {\r\n setShowSuccessModel(false);\r\n setRefreshLinks(true);\r\n }}\r\n />\r\n )}\r\n \r\n )}\r\n
\r\n )\r\n};\r\n\r\nexport default GroupLinksTab;\r\n","import { instance } from '../../../../services/api';\r\n\r\n// EU1832 - TO - 16/09/2022\r\nexport default (groupId: number, fileId: number) => {\r\n return instance.get(`/api/localGroupMemberDetails/${groupId}/${fileId}`);\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\nimport { Formik, Form } from 'formik';\r\nimport { FormHeading, SubmitButton } from '../../../forms';\r\nimport { TabComponent } from '@syncfusion/ej2-react-navigations';\r\nimport { ButtonComponent } from '@syncfusion/ej2-react-buttons';\r\nimport {\r\n ILocalGroupMemberDetailsFormProps,\r\n ILocalGroupMemberDetailsFormValues,\r\n} from './types';\r\nimport { DropDownItem } from '../../../types';\r\nimport ErrorList from '../../../errorList';\r\nimport ProfileTab from './ProfileTab';\r\nimport AddressTab from './AddressTab';\r\nimport GroupTab from './GroupTab';\r\nimport LinksTab from './LinksTab';\r\n//import { RaiseMemberQueryModal } from '../../../modals/raiseMemberQuery';\r\nimport toSyncfusionDataSource from '../../../../utils/toSyncfusionDataSource';\r\nimport identifyChanges from './identifyChanges';\r\nimport schema from './schema';\r\nimport useUserData from '../../../userData';\r\nimport GroupLinksTab from './GroupLinksTab';\r\nimport formatName from '../../../../utils/formatName';\r\n\r\nconst LocalGroupMemberDetailsForm: React.FC = ({\r\n fileId,\r\n groupId,\r\n initialValues,\r\n promise,\r\n onSubmit,\r\n onClose,\r\n counties,\r\n isGroupOfficer\r\n}) => {\r\n const [originalValues, setOriginalValues] = useState<\r\n ILocalGroupMemberDetailsFormValues\r\n >(initialValues);\r\n const [ajaxErrors, setAjaxErrors] = useState>([]);\r\n const [addressTypes, setAddressTypes] = useState<\r\n Array<{ [key: string]: Object }>\r\n >([]);\r\n const [selectedAddressIndex, setSelectedAddressIndex] = useState(0);\r\n //const [isRaisingQuery, setIsRaisingQuery] = useState(false);\r\n\r\n useEffect(() => {\r\n const listItems: Array = [];\r\n\r\n for (let index = 0; index < initialValues.addresses.length; index += 1) {\r\n listItems.push({\r\n id: index.toString(),\r\n displayValue: initialValues.addresses[index].addressType,\r\n });\r\n\r\n if (initialValues.addresses[index].default) {\r\n setSelectedAddressIndex(index);\r\n }\r\n }\r\n\r\n setAddressTypes(toSyncfusionDataSource(listItems));\r\n\r\n let surname = '';\r\n let forenames = '';\r\n let postName = '';\r\n\r\n initialValues.surname.split(' ').forEach((y: string) => surname += `${formatName(y)} `);\r\n initialValues.forenames.split(' ').forEach((y: string) => forenames += `${formatName(y)} `);\r\n initialValues.postName.split(' ').forEach((y: string) => postName += `${formatName(y)} `);\r\n\r\n initialValues.surname = surname;\r\n initialValues.forenames = forenames;\r\n initialValues.postName = postName;\r\n }, [initialValues]);\r\n\r\n //const { selectedContactFileId } = useUserData(); // EU1921- TO - 18/08/2022\r\n\r\n return (\r\n {\r\n const valuesToUpdate = identifyChanges(originalValues, values);\r\n\r\n promise(valuesToUpdate)\r\n .then(() => {\r\n resetForm({ values });\r\n setOriginalValues(values);\r\n onSubmit(typeof valuesToUpdate.contact !== 'undefined');\r\n })\r\n .catch(errors => setAjaxErrors(errors))\r\n .finally(() => setSubmitting(false));\r\n }}\r\n >\r\n {({ values }) => (\r\n <>\r\n \r\n
\r\n \r\n \r\n
\r\n
Profile
\r\n
Address
\r\n
Group
\r\n
Links
\r\n
Group Links
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n {/* setIsRaisingQuery(true)}*/}\r\n {/*>*/}\r\n {/* Raise Query*/}\r\n {/**/}\r\n Save\r\n \r\n\r\n {/*{isRaisingQuery && (*/}\r\n {/* setIsRaisingQuery(false)}*/}\r\n {/*/>*/}\r\n {/*)}*/}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default LocalGroupMemberDetailsForm;\r\n","import LocalGroupMemberDetailsForm from './LocalGroupMemberDetailsForm';\r\n\r\nexport * from './types';\r\n\r\nexport default LocalGroupMemberDetailsForm;\r\n","import { AxiosPromise } from 'axios';\r\nimport { IUpdateCommand } from '../form';\r\nimport { instance } from '../../../../services/api';\r\n\r\nconst updateLocalGroupMemberDetails = (data: IUpdateCommand): AxiosPromise =>\r\n instance.put(`api/localGroupMemberDetails/${data.groupId}/${data.fileId}`, data);\r\n\r\nexport default updateLocalGroupMemberDetails;\r\n","import React, { useMemo } from 'react';\r\nimport { IEditLocalGroupMemberDetailsPageProps } from './types';\r\nimport AjaxErrorBoundary from '../../../ajax/errorBoundary';\r\nimport LocalGroupMemberDetailsForm from '../form';\r\nimport { useDataFetcher, useBatchDataFetcher } from '../../../hooks';\r\nimport updateLocalGroupMemberDetails from './updateLocalGroupMemberDetails';\r\nimport { DropDownItem } from '../../../types';\r\nimport toSyncfusionDataSource from '../../../../utils/toSyncfusionDataSource';\r\n\r\nconst transformDropDownData = (data: {\r\n items: Array;\r\n}): Array<{ [key: string]: Object }> => toSyncfusionDataSource(data.items);\r\n\r\nconst config = {\r\n transformers: [(countiesData: any) => transformDropDownData(countiesData)],\r\n};\r\n\r\nconst EditLocalGroupMemberDetailsPage: React.FC = ({\r\n fileId,\r\n groupId,\r\n onClose,\r\n forNotification\r\n}) => {\r\n\r\n const urls = useMemo(() => {\r\n if (forNotification) {\r\n return ['/api/counties', `/api/localGroupMemberDetails/${groupId}/${fileId}?forNotification=true`, `/api/myDetails/${groupId}/officer`]\r\n } else {\r\n return ['/api/counties', `/api/localGroupMemberDetails/${groupId}/${fileId}`, `/api/myDetails/${groupId}/officer`]\r\n }\r\n },\r\n [groupId, fileId]);\r\n\r\n const {\r\n busy,\r\n data: [counties, data, isGroupOfficer],\r\n errors,\r\n } = useBatchDataFetcher(urls, config);\r\n\r\n return (\r\n \r\n { }}\r\n onClose={onClose}\r\n counties={counties}\r\n isGroupOfficer={isGroupOfficer}\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default EditLocalGroupMemberDetailsPage;\r\n","import EditLocalGroupMemberDetailsPage from \"./EditLocalGroupMemberDetailsPage\";\r\n\r\nexport * from './types'\r\n\r\nexport default EditLocalGroupMemberDetailsPage;\r\n","import React from 'react';\r\nimport { IWaitNotificationModalProps } from './types';\r\nimport Modal from 'react-modal';\r\nimport { FormHeading } from '../../forms/formHeading';\r\n\r\nexport const WaitNotificationModal: React.FC = ({\r\n title,\r\n message,\r\n}) => {\r\n return (\r\n \r\n \r\n

{message}

\r\n
\r\n );\r\n};\r\n","import * as Yup from 'yup';\r\n\r\nexport default Yup.object({\r\n title: Yup.string().required('Title is required'),\r\n details: Yup.string().required('Details are required'),\r\n activityAnalysis: Yup.string().required(\"Activity Analysis is required\") // 45862 - TO - 20/09/2024\r\n});\r\n","import React, { useState } from 'react';\r\nimport { IRaiseMemberQueryModalProps } from './types';\r\nimport Modal from 'react-modal';\r\nimport { Formik, Form } from 'formik';\r\nimport ErrorList from '../../errorList';\r\nimport { ButtonComponent } from '@syncfusion/ej2-react-buttons';\r\nimport { SubmitButton, FormGroup, FormHeading } from '../../forms';\r\nimport { DropDownList, TextBox, UnboundField } from '../../formikBindings';\r\nimport schema from './schema';\r\nimport raiseMemberQuery from './raiseMemberQuery';\r\nimport { useDataFetcher } from '../../hooks';\r\nimport AjaxErrorBoundary from '../../ajax/errorBoundary';\r\nimport { DropDownItem } from '../../types';\r\nimport toSyncfusionDataSource from '../../../utils/toSyncfusionDataSource';\r\n\r\nexport const RaiseMemberQueryModal: React.FC = ({\r\n fileId,\r\n contactId,\r\n name,\r\n requestedBy,\r\n onClose,\r\n}) => {\r\n // 45862 - TO - 20/09/2024\r\n const transformDropDownData = (data: {\r\n items: Array;\r\n }): Array<{ [key: string]: Object }> => toSyncfusionDataSource(data.items);\r\n\r\n // 45862 - TO - 20/09/2024\r\n const config = {\r\n transformer: transformDropDownData,\r\n };\r\n\r\n // 45862 - TO - 20/09/2024\r\n const { data } = useDataFetcher(\"/api/activityAnalysis\", config);\r\n\r\n const [isSaving, setIsSaving] = useState(false);\r\n const [ajaxErrors, setAjaxErrors] = useState>([]);\r\n\r\n return (\r\n \r\n \r\n {\r\n setAjaxErrors([]);\r\n setIsSaving(true);\r\n\r\n raiseMemberQuery({ fileId, requestedBy, ...values })\r\n .then(() => onClose())\r\n .catch(setAjaxErrors)\r\n .finally(() => setIsSaving(false));\r\n }}\r\n >\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n Cancel\r\n \r\n Save\r\n
\r\n \r\n \r\n
\r\n );\r\n};\r\n","import { instance } from '../../../services/api';\r\nimport { IRaiseMemberQueryCommand } from './types';\r\n\r\nexport default (command: IRaiseMemberQueryCommand) => {\r\n const { fileId, ...rest } = command;\r\n\r\n return instance.post(`api/localGroupMemberDetails/${fileId}/queries`, {\r\n ...rest,\r\n });\r\n};\r\n","import React from 'react';\r\nimport { INotificationModalProps } from './types';\r\nimport Modal from 'react-modal';\r\nimport { ButtonComponent } from '@syncfusion/ej2-react-buttons';\r\nimport { FormHeading } from '../../forms/formHeading';\r\n\r\nexport const NotificationModal: React.FC = ({\r\n title,\r\n message,\r\n onRequestClose,\r\n}) => {\r\n return (\r\n \r\n \r\n

{message}

\r\n OK\r\n
\r\n );\r\n};\r\n","import { createContext } from 'react';\r\nimport { IPasswordPolicyContext } from './types';\r\n\r\nconst PasswordPolicyContext = createContext(\r\n undefined,\r\n);\r\n\r\nexport default PasswordPolicyContext;\r\n","import React from 'react';\r\nimport usePasswordPolicy from './usePasswordPolicy';\r\n\r\nconst PasswordPolicyFeedback: React.FC = () => {\r\n const { feedback } = usePasswordPolicy();\r\n\r\n return (\r\n
    \r\n {feedback.map(item => (\r\n
  • \r\n {item.isValid ? (\r\n \r\n ) : (\r\n \r\n )}\r\n {item.text}\r\n
  • \r\n ))}\r\n
\r\n );\r\n};\r\n\r\nexport default PasswordPolicyFeedback;\r\n","export const hasMinimumLength = (minimumLength: number) => (\r\n value: string,\r\n): boolean => value.length >= minimumLength;\r\n\r\nexport const hasMinimumAlphaCharacters = (numberOfAlphaCharacters: number) => (\r\n value: string,\r\n): boolean => value.replace(/\\d/g, '').length >= numberOfAlphaCharacters;\r\n\r\nexport const hasMinimumNumericCharacters = (\r\n numberOfNumericCharacters: number,\r\n) => (value: string): boolean =>\r\n value.replace(/\\D/g, '').length >= numberOfNumericCharacters;\r\n\r\nexport const hasMinimumUppercaseLetters = (\r\n numberOfUppercaseCharacters: number,\r\n) => (value: string): boolean =>\r\n value.replace(/[^A-Z]/g, '').length >= numberOfUppercaseCharacters;\r\n\r\nexport const hasMinimumLowercaseLetters = (\r\n numberOfLowercaseCharacters: number,\r\n) => (value: string): boolean =>\r\n value.replace(/[^a-z]/g, '').length >= numberOfLowercaseCharacters;\r\n\r\nexport const hasMinimumSpecialCharacters = (\r\n numberOfSpecialCharacters: number,\r\n) => (value: string): boolean =>\r\n value.replace(/[a-zA-Z0-9]/g, '').length >= numberOfSpecialCharacters;\r\n\r\nexport const doesNotStartOrEndWithSpaceCharacter = (value: string): boolean =>\r\n value.length > 0 && !(value.startsWith(' ') || value.endsWith(' '));\r\n\r\nexport const doesNotContainSpaceCharacter = (value: string): boolean =>\r\n value.length > 0 && value.indexOf(' ') === -1;\r\n","import { IPasswordPolicyRule } from './types';\r\nimport * as validators from './passwordPolicyValidationRules';\r\n\r\nconst injectValueAndPluralise = (template: string, value: number): string =>\r\n template\r\n .replace('{0}', value.toString())\r\n .replace('{1}', value > 1 ? 's' : '');\r\n\r\nconst createPolicyRules = (\r\n minimumLength: number,\r\n minimumLetters: number,\r\n minimumNumbers: number,\r\n minimumUppercase: number,\r\n minimumLowercase: number,\r\n minimumSpecial: number,\r\n notStartOrEndWithASpace: boolean,\r\n notContainAnySpaces: boolean,\r\n): Array => {\r\n const rules = [];\r\n\r\n if (minimumLength > 0) {\r\n rules.push({\r\n text: injectValueAndPluralise(\r\n 'Be at least {0} character{1}',\r\n minimumLength,\r\n ),\r\n validate: validators.hasMinimumLength(minimumLength),\r\n });\r\n }\r\n\r\n if (minimumLetters > 0) {\r\n rules.push({\r\n text: injectValueAndPluralise(\r\n 'Contain at least {0} letter{1}',\r\n minimumLetters,\r\n ),\r\n validate: validators.hasMinimumAlphaCharacters(minimumLetters),\r\n });\r\n }\r\n\r\n if (minimumNumbers > 0) {\r\n rules.push({\r\n text: injectValueAndPluralise(\r\n 'Contain at least {0} number{1}',\r\n minimumNumbers,\r\n ),\r\n validate: validators.hasMinimumNumericCharacters(minimumNumbers),\r\n });\r\n }\r\n\r\n if (minimumUppercase > 0) {\r\n rules.push({\r\n text: injectValueAndPluralise(\r\n 'Include at least {0} uppercase letter{1}',\r\n minimumUppercase,\r\n ),\r\n validate: validators.hasMinimumUppercaseLetters(minimumUppercase),\r\n });\r\n }\r\n\r\n if (minimumLowercase > 0) {\r\n rules.push({\r\n text: injectValueAndPluralise(\r\n 'Include least {0} lowercase letter{1}',\r\n minimumLowercase,\r\n ),\r\n validate: validators.hasMinimumLowercaseLetters(minimumLowercase),\r\n });\r\n }\r\n\r\n if (minimumSpecial > 0) {\r\n rules.push({\r\n text: injectValueAndPluralise(\r\n 'Include least {0} special character{1} (e.g. !#_$%&()*+%)',\r\n minimumSpecial,\r\n ),\r\n validate: validators.hasMinimumSpecialCharacters(minimumSpecial),\r\n });\r\n }\r\n\r\n if (notStartOrEndWithASpace) {\r\n rules.push({\r\n text: 'Not start or end with a space',\r\n validate: validators.doesNotStartOrEndWithSpaceCharacter,\r\n });\r\n }\r\n\r\n if (notContainAnySpaces) {\r\n rules.push({\r\n text: 'Not contain a space',\r\n validate: validators.doesNotContainSpaceCharacter,\r\n });\r\n }\r\n\r\n return rules;\r\n};\r\n\r\nexport default createPolicyRules;\r\n","import React, { useEffect, useState } from 'react';\r\nimport {\r\n IPasswordPolicyProviderProps,\r\n IPasswordPolicy,\r\n IPasswordPolicyRule,\r\n} from './types';\r\nimport PasswordPolicyContext from './PasswordPolicyContext';\r\nimport createPolicyRules from './createPolicyRules';\r\n\r\nconst PasswordPolicyProvider: React.FC = ({\r\n minimumLength,\r\n minimumLetters,\r\n minimumNumbers,\r\n minimumUppercase,\r\n minimumLowercase,\r\n minimumSpecial,\r\n notStartOrEndWithASpace,\r\n notContainAnySpaces,\r\n children,\r\n}) => {\r\n const [rules, setRules] = useState>([]);\r\n const [feedback, setFeedback] = useState>([]);\r\n const [isValid, setIsValid] = useState(false);\r\n\r\n useEffect(() => {\r\n setRules(\r\n createPolicyRules(\r\n minimumLength,\r\n minimumLetters,\r\n minimumNumbers,\r\n minimumUppercase,\r\n minimumLowercase,\r\n minimumSpecial,\r\n notStartOrEndWithASpace,\r\n notContainAnySpaces,\r\n ),\r\n );\r\n }, [\r\n minimumLength,\r\n minimumLetters,\r\n minimumNumbers,\r\n minimumUppercase,\r\n minimumLowercase,\r\n minimumSpecial,\r\n notStartOrEndWithASpace,\r\n notContainAnySpaces,\r\n ]);\r\n\r\n useEffect(() => {\r\n setFeedback(rules.map(rule => evaluate(rule, '')));\r\n }, [rules]);\r\n\r\n const evaluate = (\r\n rule: IPasswordPolicyRule,\r\n value: string,\r\n ): IPasswordPolicy => ({\r\n text: rule.text,\r\n isValid: rule.validate(value),\r\n });\r\n\r\n const handleValidate = (value: string): void => {\r\n const results = rules.map(rule => evaluate(rule, value));\r\n\r\n setFeedback(results);\r\n setIsValid(results.every(result => result.isValid));\r\n };\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport default PasswordPolicyProvider;\r\n","import { useContext } from 'react';\r\nimport { IPasswordPolicyContext } from './types';\r\nimport PasswordPolicyContext from './PasswordPolicyContext';\r\n\r\nconst usePasswordPolicy = (): IPasswordPolicyContext => {\r\n const context = useContext(PasswordPolicyContext);\r\n\r\n if (!context) {\r\n throw new Error(\r\n 'This component must be a component',\r\n );\r\n }\r\n\r\n return context;\r\n};\r\n\r\nexport default usePasswordPolicy;\r\n","import * as Yup from 'yup';\r\n\r\nexport default Yup.object({\r\n oldPassword: Yup.string()\r\n .required('Please enter your old password'),\r\n password: Yup.string()\r\n .required('Please enter a new password'),\r\n passwordConfirmation: Yup.string()\r\n .required('Please confirm password')\r\n .oneOf([Yup.ref('password'), null], 'Passwords must match')\r\n});\r\n","import React, { useState } from 'react';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { IResetCurrentPasswordFormValues } from './types';\r\nimport { Form, Formik } from 'formik';\r\nimport ErrorList from '../errorList';\r\nimport { TextBox } from '../formikBindings';\r\nimport { FormHeading, FormGroup, ActionButton } from '../forms';\r\nimport { ButtonComponent } from '@syncfusion/ej2-react-buttons';\r\nimport resetCurrentPassword from './resetCurrentPassword';\r\nimport schema from './schema';\r\nimport { NotificationModal } from '../modals/notification';\r\nimport PasswordPolicyFeedback from '../passwordPolicy/PasswordPolicyFeedback';\r\nimport usePasswordPolicy from '../passwordPolicy/usePasswordPolicy';\r\nimport useUserData from '../userData';\r\nimport useAuthentication from '../authentication';\r\n\r\nconst initialValues: IResetCurrentPasswordFormValues = {\r\n oldPassword: '',\r\n password: '',\r\n passwordConfirmation: '',\r\n};\r\n\r\nconst ResetCurrentPasswordPage: React.FC = () => {\r\n const { selectedContactFileId } = useUserData();\r\n const { passwordResetRequired, onLogout } = useAuthentication();\r\n\r\n const navigate = useNavigate();\r\n const [showModal, setShowModal] = useState(false);\r\n const [ajaxErrors, setAjaxErrors] = useState>([]);\r\n const { validate, isValid } = usePasswordPolicy();\r\n\r\n return (\r\n <>\r\n
\r\n {\r\n setAjaxErrors([]);\r\n\r\n resetCurrentPassword({\r\n fileId: selectedContactFileId,\r\n oldPassword: values.oldPassword,\r\n newPassword: values.password,\r\n })\r\n .then(() => setShowModal(true))\r\n .catch(setAjaxErrors)\r\n .finally(() => setSubmitting(false));\r\n }}\r\n >\r\n {({ isSubmitting }) => (\r\n
\r\n \r\n

\r\n {passwordResetRequired && (\r\n Your password has expired. \r\n )}\r\n Please enter a new password that fulfills all of the rules\r\n listed\r\n

\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {\r\n validate(event?.value ?? '');\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n
\r\n {passwordResetRequired && (\r\n \r\n Cancel\r\n \r\n )}\r\n \r\n Reset Password\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n )}\r\n \r\n
\r\n {showModal && (\r\n {\r\n if (passwordResetRequired) {\r\n onLogout();\r\n } else {\r\n navigate('/', { replace: true });\r\n }\r\n }}\r\n />\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default ResetCurrentPasswordPage;\r\n","import { AxiosPromise } from 'axios';\r\nimport { IResetCurrentPasswordCommand } from './types';\r\nimport { instance } from '../../services/api';\r\n\r\nexport default (data: IResetCurrentPasswordCommand): AxiosPromise =>\r\n instance.post(`api/accounts/resetCurrent`, data);\r\n","import ResetCurrentPasswordPage from './ResetCurrentPasswordPageContainer';\r\n\r\nexport default ResetCurrentPasswordPage;\r\n","import React from 'react';\r\nimport PasswordPolicyProvider from '../passwordPolicy/PasswordPolicyProvider';\r\nimport ResetCurrentPasswordPage from './ResetCurrentPasswordPage';\r\n\r\nconst ResetCurrentPasswordPageContainer: React.FC = () => (\r\n \r\n \r\n
\r\n);\r\n\r\nexport default ResetCurrentPasswordPageContainer;\r\n","import React from 'react';\r\nimport { Navigate, RouteProps } from 'react-router-dom';\r\nimport useAuthentication from '../../authentication';\r\n\r\nconst RequireAuth: React.FC = ({\r\n children\r\n}) => {\r\n const { isAuthenticated, passwordResetRequired } = useAuthentication();\r\n\r\n return (\r\n <>\r\n {isAuthenticated ? (\r\n <>\r\n {passwordResetRequired ? (\r\n \r\n ) : (\r\n <>{children}\r\n )}\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default RequireAuth;\r\n","import RequireAuth from './RequireAuth';\r\n\r\nexport default RequireAuth;\r\n","import { createContext } from 'react';\r\nimport { IUserDataContext } from './types';\r\n\r\nconst UserDataContext = createContext(undefined);\r\n\r\nexport default UserDataContext;\r\n","import useUserData from './useUserData';\r\n\r\nexport default useUserData;\r\n","import { useContext } from 'react';\r\nimport { IUserDataContext } from './types';\r\nimport UserDataContext from './UserDataContext';\r\n\r\nconst useUserData = (): IUserDataContext => {\r\n const context = useContext(UserDataContext);\r\n\r\n if (!context) {\r\n throw new Error('This component must be a component');\r\n }\r\n\r\n return context;\r\n};\r\n\r\nexport default useUserData;\r\n","export const UserRoles = Object.freeze({\r\n All: '0',\r\n LocalGroupUser: '1',\r\n ShowDiary: '2',\r\n EditAssessments: '3',\r\n ShowExpenses: '5',\r\n ListCourses: '6',\r\n WebAdmin: '7',\r\n ManageEquipment: '9', // EU1833 - TO - 27/09/2022\r\n LocalGroupLinkMaintenance: '10' // EU2676 - TO - 17/10/2022\r\n});\r\n\r\nexport const QuestionTypes = Object.freeze({\r\n Check: 7991,\r\n DateTime: 7993,\r\n IdentifiedTargetedCompletedSource: 7994,\r\n Number: 7997,\r\n Score: 7996,\r\n Text: 7992,\r\n TextReadonly: 7995,\r\n TextMomo: 66397 \r\n});\r\n\r\n// EU1833 - TO - 28/09/2022\r\nexport const EquipmentHQFileId = 30012593;\r\n\r\n// EU2726 - TO - 15/11/2022\r\nexport const PortalIssuesFormLink = 'https://www.iamroadsmart.com/darts-portal-updates/darts-issue-form'\r\n","import axios from 'axios';\r\nimport parseModelStateErrors from '../utils/parseModelStateErrors';\r\nimport localStorageService from './localStorageService';\r\n\r\nconst instance = axios.create();\r\n\r\ninstance.defaults.headers.common.Accept = 'application/json';\r\ninstance.defaults.headers.common['Content-Type'] = 'application/json';\r\n\r\ninstance.interceptors.request.use(function (config) {\r\n const authToken = localStorageService.getAuthToken();\r\n if (authToken) config.headers.Authorization = `Bearer ${authToken}`;\r\n\r\n const accessToken = localStorageService.getAccessToken();\r\n if (accessToken) config.headers['x-auth'] = accessToken;\r\n\r\n return config;\r\n},\r\n function (error) {\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\ninstance.interceptors.response.use(\r\n function (response) {\r\n return response;\r\n },\r\n function (error) {\r\n if (error.isCanceled) {\r\n return Promise.reject(error);\r\n }\r\n else if (error.response) {\r\n // The request was made and the server responded with a status code\r\n // that falls out of the range of 2xx\r\n\r\n if (error.response.status === 500) {\r\n return Promise.reject([\r\n 'An unexpected error has occurred, if the problem persists please contact your system administrator.',\r\n ]);\r\n }\r\n\r\n if (error.response.status === 401) {\r\n\r\n if (error.response.headers['www-authenticate'] && error.response.headers['www-authenticate'].includes('Bearer error=\"invalid_token\"')) {\r\n localStorageService.clear();\r\n window.location.href = window.origin;\r\n return Promise.reject(['Your login has expired, please wait while you are redirected back to the login page...']);\r\n }\r\n\r\n return Promise.reject([\r\n 'You do not have permission to access the requested resource.',\r\n ]);\r\n\r\n }\r\n\r\n const { errorNumber } = error.response.data;\r\n\r\n // expired/invalid token\r\n if (errorNumber === 102 || errorNumber === 103) {\r\n localStorageService.clear();\r\n window.location.href = window.origin;\r\n return Promise.reject([\r\n 'Your login has expired, please wait while you are redirected back to the login page...',\r\n ]);\r\n }\r\n\r\n return Promise.reject(parseModelStateErrors(error.response.data));\r\n } else if (error.request) {\r\n // The request was made but no response was received\r\n // `error.request` is an instance of XMLHttpRequest in the browser and an instance of\r\n // http.ClientRequest in node.js\r\n return Promise.reject([\r\n 'The server could not be reached, please try again later.',\r\n ]);\r\n } else {\r\n // Something happened in setting up the request that triggered an Error\r\n return Promise.reject(['Invalid request']);\r\n }\r\n },\r\n);\r\n\r\nexport { instance };\r\n","export default function parseModelStateErrors(data: any): Array {\r\n const { errors } = data;\r\n let results: Array = [];\r\n\r\n if (!errors) {\r\n return ['An unexpected error has occurred'];\r\n }\r\n\r\n Object.keys(errors).forEach(key => (results = [...results, ...errors[key]]));\r\n\r\n return results;\r\n}\r\n","import storage from 'local-storage-fallback';\r\nimport { IDevice } from '../components/deviceSettings/form';\r\n\r\nconst AuthTokenKey = 'auth_token';\r\nconst AccessTokenKey = 'access_token';\r\nconst Device = 'device';\r\n// TO - 22/08/2023\r\nconst SelectedContact = 'selected_contact';\r\nconst SelectedOrg = 'selected_org';\r\n\r\nexport default {\r\n getAuthToken: () => storage.getItem(AuthTokenKey),\r\n getAccessToken: () => storage.getItem(AccessTokenKey),\r\n getDevice: (): IDevice | null => {\r\n const device = storage.getItem(Device);\r\n\r\n if (device === null) {\r\n return null;\r\n }\r\n\r\n return JSON.parse(device);\r\n },\r\n setTokens: (authToken: string, accessToken: string) => {\r\n storage.setItem(AuthTokenKey, authToken);\r\n storage.setItem(AccessTokenKey, accessToken);\r\n },\r\n setDevice: (device: IDevice): void => {\r\n storage.setItem(Device, JSON.stringify(device));\r\n },\r\n clearDevice: () => storage.removeItem(Device),\r\n clear: () => {\r\n storage.removeItem(AuthTokenKey);\r\n storage.removeItem(AccessTokenKey);\r\n storage.removeItem(Device);\r\n // TO - 22/08/2023\r\n storage.removeItem(SelectedContact);\r\n storage.removeItem(SelectedOrg);\r\n },\r\n // TO - 22/08/2023\r\n getSelectedContact: () => storage.getItem(SelectedContact),\r\n getSelectedOrg: () => storage.getItem(SelectedOrg),\r\n setSelectedContact: (contactId: string) => storage.setItem(SelectedContact, contactId),\r\n setSelectedOrg: (orgId: string) => storage.setItem(SelectedOrg, orgId)\r\n};\r\n","export default (name: string): string => {\r\n return name.charAt(0).toUpperCase() + name.slice(1).toLowerCase();\r\n}\r\n","export default function isDifferent(value1: any, value2: any): boolean {\r\n return JSON.stringify(value1) !== JSON.stringify(value2);\r\n}\r\n","// https://reactjs.org/blog/2015/12/16/ismounted-antipattern.html\r\nexport interface CancelablePromise {\r\n promise: Promise;\r\n cancel: () => void;\r\n}\r\n\r\nexport default function makeCancelable(\r\n promise: Promise,\r\n source: any,\r\n): CancelablePromise {\r\n let hasCanceled_ = false;\r\n\r\n const wrappedPromise = new Promise((resolve, reject) => {\r\n promise.then(\r\n val => (hasCanceled_ ? reject({ isCanceled: true }) : resolve(val)),\r\n error => (hasCanceled_ ? reject({ isCanceled: true }) : reject(error)),\r\n );\r\n });\r\n\r\n return {\r\n promise: wrappedPromise,\r\n cancel() {\r\n hasCanceled_ = true;\r\n if (source) {\r\n source.cancel();\r\n }\r\n },\r\n };\r\n}\r\n","import qs from 'qs';\r\n\r\nexport default class queryString {\r\n static parse(value: string) {\r\n return qs.parse(value, { ignoreQueryPrefix: true });\r\n }\r\n\r\n static stringify(value: any) {\r\n return qs.stringify(value, {\r\n strictNullHandling: true,\r\n encodeValuesOnly: true,\r\n allowDots: true,\r\n });\r\n }\r\n}\r\n","import { DropDownItem } from '../components/types';\r\n\r\nexport default function toSyncfusionDataSource(\r\n items: Array,\r\n emptyItemDescription: string | undefined = undefined,\r\n): Array<{ [key: string]: Object }> {\r\n const results = items.map(item => ({ id: item.id, item: item }));\r\n\r\n if (typeof emptyItemDescription !== 'undefined') {\r\n results.unshift({\r\n id: '',\r\n item: { id: '', displayValue: emptyItemDescription },\r\n });\r\n }\r\n\r\n return results;\r\n}\r\n\r\nexport const fields: object = { text: 'item.displayValue', value: 'id' };\r\n\r\nexport const transformDropDownData = (data: {\r\n items: Array;\r\n}): Array<{ [key: string]: Object }> => toSyncfusionDataSource(data.items);\r\n","export default (date: Date): Date => {\r\n return new Date(\r\n Date.UTC(new Date(date).getFullYear(), new Date(date).getMonth(), new Date(date).getDate()),\r\n );\r\n};\r\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n// TODO: (v7) Change the Location generic default from `any` to `unknown` and\n// remove Remix `useLocation` wrapper.\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: State;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. This may be either a URL or the pieces\n * of a URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath, warning } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: any;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n status: number;\n location: string;\n revalidate: boolean;\n reloadDocument?: boolean;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: any;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase;\n\n/**\n * Users can specify either lowercase or uppercase form methods on
,\n * useSubmit(), , etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"application/json\"\n | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n json: undefined;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: JsonValue;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: undefined;\n text: string;\n };\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: Context;\n}\n\n// TODO: (v7) Change the defaults from any to unknown in and remove Remix wrappers:\n// ActionFunction, ActionFunctionArgs, LoaderFunction, LoaderFunctionArgs\n// Also, make them a type alias instead of an interface\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return). Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable | null;\n\n/**\n * Route loader function signature\n */\nexport interface LoaderFunction {\n (args: LoaderFunctionArgs):\n | Promise\n | DataFunctionValue;\n}\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (args: ActionFunctionArgs):\n | Promise\n | DataFunctionValue;\n}\n\n/**\n * Arguments passed to shouldRevalidate function\n */\nexport interface ShouldRevalidateFunctionArgs {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n text?: Submission[\"text\"];\n formData?: Submission[\"formData\"];\n json?: Submission[\"json\"];\n actionResult?: any;\n defaultShouldRevalidate: boolean;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: ShouldRevalidateFunctionArgs): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n (route: AgnosticRouteObject): {\n hasErrorBoundary: boolean;\n } & Record;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\ntype RequireOne = Exclude<\n {\n [K in keyof T]: K extends Key ? Omit & Required> : never;\n }[keyof T],\n undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction {\n (): Promise>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction;\n action?: ActionFunction;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\ntype PathParam =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise, return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if you could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n mapRouteProperties: MapRoutePropertiesFunction,\n parentPath: number[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, index];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(\n branches[i],\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n safelyDecodeURI(pathname)\n );\n }\n\n return matches;\n}\n\nexport interface UIMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: Data;\n handle: Handle;\n}\n\nexport function convertRouteMatchToUiMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UIMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle,\n };\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const stringify = (p: any) =>\n p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam;\n // Apply the splat\n return stringify(params[star]);\n }\n\n const keyMatch = segment.match(/^:(\\w+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return stringify(param);\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, paramNames] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = paramNames.reduce>(\n (memo, paramName, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n memo[paramName] = safelyDecodeURIComponent(\n captureGroups[index] || \"\",\n paramName\n );\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, string[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let paramNames: string[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^$?{}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/\\/:(\\w+)/g, (_: string, paramName: string) => {\n paramNames.push(paramName);\n return \"/([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n paramNames.push(\"*\");\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, paramNames];\n}\n\nfunction safelyDecodeURI(value: string) {\n try {\n return decodeURI(value);\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (isPathRelative || toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, undefined, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\n `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n `you must resolve/reject with a value or \\`null\\`.`\n );\n Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirectDocument: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n */\nexport class ErrorResponseImpl {\n status: number;\n statusText: string;\n data: any;\n private error?: Error;\n private internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n// We don't want the class exported since usage of it at runtime is an\n// implementation detail, but we do want to export the shape so folks can\n// build their own abstractions around instances via isRouteErrorResponse()\nexport type ErrorResponse = InstanceType;\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n ActionFunction,\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n AgnosticRouteObject,\n DataResult,\n DeferredData,\n DeferredResult,\n DetectErrorBoundaryFunction,\n ErrorResult,\n FormEncType,\n FormMethod,\n HTMLFormMethod,\n ImmutableRouteKey,\n LoaderFunction,\n MapRoutePropertiesFunction,\n MutationFormMethod,\n RedirectResult,\n RouteData,\n RouteManifest,\n ShouldRevalidateFunctionArgs,\n Submission,\n SuccessResult,\n UIMatch,\n V7_FormMethod,\n V7_MutationFormMethod,\n} from \"./utils\";\nimport {\n ErrorResponseImpl,\n ResultType,\n convertRouteMatchToUiMatch,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To | null, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key?: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key?: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_normalizeFormMethod: boolean;\n v7_prependBasename: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n hydrationData?: HydrationState;\n window?: Window;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: { requestContext?: unknown }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: { routeId?: string; requestContext?: unknown }\n ): Promise;\n}\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (state: RouterState): void;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UIMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n} & (\n | { formData: FormData; body?: undefined }\n | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n json: undefined;\n text: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n text: Submission[\"text\"] | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n text: Submission[\"text\"];\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n text: undefined;\n formData: undefined;\n json: undefined;\n data: TData | undefined;\n };\n Loading: {\n state: \"loading\";\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n text: Submission[\"text\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n data: TData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n text: Submission[\"text\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n data: TData | undefined;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Error thrown from the current action, keyed by the route containing the\n * error boundary to render the error. To be committed to the state after\n * loaders have completed\n */\n pendingActionError?: RouteData;\n /**\n * Data returned from the current action, keyed by the route owning the action.\n * To be committed to the state after loaders have completed\n */\n pendingActionData?: RouteData;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n controller: AbortController | null;\n}\n\n/**\n * Wrapper object to allow us to throw any response out from callLoaderOrAction\n * for queryRouter while preserving whether or not it was thrown or returned\n * from the loader/action\n */\ninterface QueryRouteResponse {\n type: ResultType.data | ResultType.error;\n response: Response;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n const routerWindow = init.window\n ? init.window\n : typeof window !== \"undefined\"\n ? window\n : undefined;\n const isBrowser =\n typeof routerWindow !== \"undefined\" &&\n typeof routerWindow.document !== \"undefined\" &&\n typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n let basename = init.basename || \"/\";\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_normalizeFormMethod: false,\n v7_prependBasename: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n let initialized =\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n !initialMatches.some((m) => m.route.lazy) &&\n // And we have to either have no loaders or have been provided hydrationData\n (!initialMatches.some((m) => m.route.loader) || init.hydrationData != null);\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: string[] = [];\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location);\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(newState: Partial): void {\n state = {\n ...state,\n ...newState,\n };\n subscribers.forEach((subscriber) => subscriber(state));\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n updateState({\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers,\n });\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To | null,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n to,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n false,\n normalizedPath,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n { overrideNavigation: state.navigation }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponseImpl;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(routesToUse);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n completeNavigation(location, {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n });\n return;\n }\n\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial load will always\n // be \"same hash\". For example, on /page#hash and submit a \n // which will default to a navigation to /page\n if (\n state.initialized &&\n !isRevalidationRequired &&\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionData: RouteData | undefined;\n let pendingError: RouteData | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingError = {\n [findNearestBoundary(matches).route.id]: opts.pendingError,\n };\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionOutput = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n { replace: opts.replace }\n );\n\n if (actionOutput.shortCircuited) {\n return;\n }\n\n pendingActionData = actionOutput.pendingActionData;\n pendingError = actionOutput.pendingActionError;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n\n // Create a GET request for the loaders\n request = new Request(request.url, { signal: request.signal });\n }\n\n // Call loaders\n let { shortCircuited, loaderData, errors } = await handleLoaders(\n request,\n location,\n matches,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n pendingActionData,\n pendingError\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n opts: { replace?: boolean } = {}\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation });\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n mapRouteProperties,\n basename\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n replace =\n result.location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(state, result, { submission, replace });\n return { shortCircuited: true };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions are REPLACE navigations, but if the\n // action threw an error that'll be rendered in an errorElement, we fall\n // back to PUSH so that the user can use the back button to get back to\n // the pre-submission form location to try again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n // Send back an empty object we can use to clear out any prior actionData\n pendingActionData: {},\n pendingActionError: { [boundaryMatch.route.id]: result.error },\n };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n return {\n pendingActionData: { [actionMatch.route.id]: result.data },\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation =\n overrideNavigation || getLoadingNavigation(location, submission);\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission ||\n fetcherSubmission ||\n getSubmissionFromNavigation(loadingNavigation);\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionData,\n pendingError\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n pendingNavigationLoadId = ++incrementingLoadId;\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(location, {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingError || null,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n });\n return { shortCircuited: true };\n }\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n if (!isUninterruptedRevalidation) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n fetcher ? fetcher.data : undefined\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n let actionData = pendingActionData || state.actionData;\n updateState({\n navigation: loadingNavigation,\n ...(actionData\n ? Object.keys(actionData).length === 0\n ? { actionData: null }\n : { actionData }\n : {}),\n ...(revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n });\n }\n\n revalidatingFetchers.forEach((rf) => {\n if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n await startRedirectNavigation(state, redirect.result, { replace });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n matchesToLoad,\n loaderResults,\n pendingError,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n function getFetcher(key: string): Fetcher {\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n if (fetchControllers.has(key)) abortFetcher(key);\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n href,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath })\n );\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n true,\n normalizedPath,\n opts\n );\n\n if (error) {\n setFetcherError(key, routeId, error);\n return;\n }\n\n let match = getTargetMatch(matches, path);\n\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(key, routeId, path, match, matches, submission);\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(key, routeId, path, match, matches, submission);\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n if (!match.route.action && !match.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error);\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n let fetcher = getSubmittingFetcher(submission, existingFetcher);\n state.fetchers.set(key, fetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n // Call the action for the fetcher\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResult = await callLoaderOrAction(\n \"action\",\n fetchRequest,\n match,\n requestMatches,\n manifest,\n mapRouteProperties,\n basename\n );\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by ou our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n let doneFetcher = getDoneFetcher(undefined);\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n return;\n } else {\n fetchRedirectIds.add(key);\n let loadingFetcher = getLoadingFetcher(submission);\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n return startRedirectNavigation(state, actionResult, {\n fetcherSubmission: submission,\n });\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n { [match.route.id]: actionResult.data },\n undefined // No need to send through errors since we short circuit above\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n return startRedirectNavigation(state, redirect.result);\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n state.matches,\n matchesToLoad,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n\n let didAbortFetchLoads = abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n ...(didAbortFetchLoads || revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n // Put this fetcher into it's loading state\n let loadingFetcher = getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n // Call the loader for this fetcher route match\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let result: DataResult = await callLoaderOrAction(\n \"loader\",\n fetchRequest,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename\n );\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n let doneFetcher = getDoneFetcher(undefined);\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(state, result);\n return;\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n state.fetchers.delete(key);\n // TODO: In remix, this would reset to IDLE_NAVIGATION if it was a catch -\n // do we need to behave any differently with our non-redirect errors?\n // What if it was a non-redirect Response?\n updateState({\n fetchers: new Map(state.fetchers),\n errors: {\n [boundaryMatch.route.id]: result.error,\n },\n });\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n state: RouterState,\n redirect: RedirectResult,\n {\n submission,\n fetcherSubmission,\n replace,\n }: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n replace?: boolean;\n } = {}\n ) {\n if (redirect.revalidate) {\n isRevalidationRequired = true;\n }\n\n let redirectLocation = createLocation(state.location, redirect.location, {\n _isRedirect: true,\n });\n invariant(\n redirectLocation,\n \"Expected a location on the redirect navigation\"\n );\n\n if (isBrowser) {\n let isDocumentReload = false;\n\n if (redirect.reloadDocument) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(redirect.location)) {\n const url = init.history.createURL(redirect.location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(redirect.location);\n } else {\n routerWindow.location.assign(redirect.location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true ? HistoryAction.Replace : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType } = state.navigation;\n if (\n !submission &&\n !fetcherSubmission &&\n formMethod &&\n formAction &&\n formEncType\n ) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (\n redirectPreserveMethodStatusCodes.has(redirect.status) &&\n activeSubmission &&\n isMutationMethod(activeSubmission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: redirect.location,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n submission\n );\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n }\n }\n\n async function callLoadersAndMaybeResolveData(\n currentMatches: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n // Call all navigation loaders and revalidating fetcher loaders in parallel,\n // then slice off the results into separate arrays so we can handle them\n // accordingly\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename\n )\n ),\n ...fetchersToLoad.map((f) => {\n if (f.matches && f.match && f.controller) {\n return callLoaderOrAction(\n \"loader\",\n createClientSideRequest(init.history, f.path, f.controller.signal),\n f.match,\n f.matches,\n manifest,\n mapRouteProperties,\n basename\n );\n } else {\n let error: ErrorResult = {\n type: ResultType.error,\n error: getInternalRouterError(404, { pathname: f.path }),\n };\n return error;\n }\n }),\n ]);\n let loaderResults = results.slice(0, matchesToLoad.length);\n let fetcherResults = results.slice(matchesToLoad.length);\n\n await Promise.all([\n resolveDeferredResults(\n currentMatches,\n matchesToLoad,\n loaderResults,\n loaderResults.map(() => request.signal),\n false,\n state.loaderData\n ),\n resolveDeferredResults(\n currentMatches,\n fetchersToLoad.map((f) => f.match),\n fetcherResults,\n fetchersToLoad.map((f) => (f.controller ? f.controller.signal : null)),\n true\n ),\n ]);\n\n return { results, loaderResults, fetcherResults };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n\n function setFetcherError(key: string, routeId: string, error: any) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState({\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n });\n }\n\n function deleteFetcher(key: string): void {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (\n fetchControllers.has(key) &&\n !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n ) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n state.fetchers.delete(key);\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): boolean {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(\n location,\n matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n router = {\n get basename() {\n return basename;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher,\n dispose,\n getBlocker,\n deleteBlocker,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (opts?.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts?.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n */\n async function query(\n request: Request,\n { requestContext }: { requestContext?: unknown } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(request, location, matches, requestContext);\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n }: { requestContext?: unknown; routeId?: string } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n match\n );\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction, we throw\n // it to bail out and then return or throw here based on whether the user\n // returned or threw\n if (isQueryRouteResponse(e)) {\n if (e.type === ResultType.error) {\n throw e.response;\n }\n return e.response;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n { isStaticRequest: true, isRouteRequest, requestContext }\n );\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(\n `${method}() call aborted: ${request.method} ${request.url}`\n );\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.status,\n headers: {\n Location: result.location,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n let context = await loadRouteData(\n request,\n matches,\n requestContext,\n undefined,\n {\n [boundaryMatch.route.id]: result.error,\n }\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n let context = await loadRouteData(loaderRequest, matches, requestContext);\n\n return {\n ...context,\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch,\n pendingActionError?: RouteData\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : getLoaderMatchesUntilBoundary(\n matches,\n Object.keys(pendingActionError || {})[0]\n );\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors: pendingActionError || null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n { isStaticRequest: true, isRouteRequest, requestContext }\n )\n ),\n ]);\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(\n `${method}() call aborted: ${request.method} ${request.url}`\n );\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionError,\n activeDeferreds\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction isSubmissionNavigation(\n opts: RouterNavigateOptions\n): opts is SubmissionNavigateOptions {\n return (\n opts != null &&\n ((\"formData\" in opts && opts.formData != null) ||\n (\"body\" in opts && opts.body !== undefined))\n );\n}\n\nfunction normalizeTo(\n location: Path,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n prependBasename: boolean,\n to: To | null,\n fromRouteId?: string,\n relative?: RelativeRoutingType\n) {\n let contextualMatches: AgnosticDataRouteMatch[];\n let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n if (fromRouteId != null && relative !== \"path\") {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route. When using relative:path,\n // fromRouteId is ignored since that is always relative to the current\n // location path\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n\n // Resolve the relative path\n let path = resolveTo(\n to ? to : \".\",\n getPathContributingMatches(contextualMatches).map((m) => m.pathnameBase),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n\n // Add an ?index param for matched index routes if we don't already have one\n if (\n (to == null || to === \"\" || to === \".\") &&\n activeRouteMatch &&\n activeRouteMatch.route.index &&\n !hasNakedIndexQuery(path.search)\n ) {\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n }\n\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n normalizeFormMethod: boolean,\n isFetcher: boolean,\n path: string,\n opts?: RouterNavigateOptions\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponseImpl;\n} {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" }),\n });\n\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod\n ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n : (rawFormMethod.toLowerCase() as FormMethod);\n let formAction = stripHashFromPath(path);\n\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n let text =\n typeof opts.body === \"string\"\n ? opts.body\n : opts.body instanceof FormData ||\n opts.body instanceof URLSearchParams\n ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n \"\"\n )\n : String(opts.body);\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text,\n },\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n try {\n let json =\n typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined,\n },\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n\n let searchParams: URLSearchParams;\n let formData: FormData;\n\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n\n let submission: Submission = {\n formMethod,\n formAction,\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId?: string\n) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: string[],\n fetchLoadMatches: Map,\n fetchRedirectIds: Set,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingError\n ? Object.values(pendingError)[0]\n : pendingActionData\n ? Object.values(pendingActionData)[0]\n : undefined;\n\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId = pendingError ? Object.keys(pendingError)[0] : undefined;\n let boundaryMatches = getLoaderMatchesUntilBoundary(matches, boundaryId);\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n if (match.route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n if (match.route.loader == null) {\n return false;\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n defaultShouldRevalidate:\n // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n // Clicked the same link, resubmitted a GET form\n currentUrl.pathname + currentUrl.search ===\n nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate if fetcher won't be present in the subsequent render\n if (!matches.some((m) => m.route.id === f.routeId)) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.includes(key)) {\n // Always revalidate if the fetcher was cancelled\n shouldRevalidate = true;\n } else if (\n fetcher &&\n fetcher.state !== \"idle\" &&\n fetcher.data === undefined\n ) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n defaultShouldRevalidate: isRevalidationRequired,\n });\n }\n\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController(),\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: ShouldRevalidateFunctionArgs\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n mapRouteProperties: MapRoutePropertiesFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n // the logic will differ between frameworks.\n ...mapRouteProperties(routeToUpdate),\n lazy: undefined,\n });\n}\n\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n basename: string,\n opts: {\n isStaticRequest?: boolean;\n isRouteRequest?: boolean;\n requestContext?: unknown;\n } = {}\n): Promise {\n let resultType;\n let result;\n let onReject: (() => void) | undefined;\n\n let runHandler = (handler: ActionFunction | LoaderFunction) => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n return Promise.race([\n handler({\n request,\n params: match.params,\n context: opts.requestContext,\n }),\n abortPromise,\n ]);\n };\n\n try {\n let handler = match.route[type];\n\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let values = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch((e) => {\n handlerError = e;\n }),\n loadLazyRouteModule(match.route, mapRouteProperties, manifest),\n ]);\n if (handlerError) {\n throw handlerError;\n }\n result = values[0];\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, mapRouteProperties, manifest);\n\n handler = match.route[type];\n if (handler) {\n // Handler still run even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, data: undefined };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname,\n });\n } else {\n result = await runHandler(handler);\n }\n\n invariant(\n result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n resultType = ResultType.error;\n result = e;\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n if (isResponse(result)) {\n let status = result.status;\n\n // Process redirects\n if (redirectStatusCodes.has(status)) {\n let location = result.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n // Support relative routing in internal redirects\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n location = normalizeTo(\n new URL(request.url),\n matches.slice(0, matches.indexOf(match) + 1),\n basename,\n true,\n location\n );\n } else if (!opts.isStaticRequest) {\n // Strip off the protocol+origin for same-origin + same-basename absolute\n // redirects. If this is a static request, we can let it go back to the\n // browser as-is\n let currentUrl = new URL(request.url);\n let url = location.startsWith(\"//\")\n ? new URL(currentUrl.protocol + location)\n : new URL(location);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n location = url.pathname + url.search + url.hash;\n }\n }\n\n // Don't process redirects in the router during static requests requests.\n // Instead, throw the Response and let the server handle it with an HTTP\n // redirect. We also update the Location header in place in this flow so\n // basename and relative routing is taken into account\n if (opts.isStaticRequest) {\n result.headers.set(\"Location\", location);\n throw result;\n }\n\n return {\n type: ResultType.redirect,\n status,\n location,\n revalidate: result.headers.get(\"X-Remix-Revalidate\") !== null,\n reloadDocument: result.headers.get(\"X-Remix-Reload-Document\") !== null,\n };\n }\n\n // For SSR single-route requests, we want to hand Responses back directly\n // without unwrapping. We do this with the QueryRouteResponse wrapper\n // interface so we can know whether it was returned or thrown\n if (opts.isRouteRequest) {\n let queryRouteResponse: QueryRouteResponse = {\n type:\n resultType === ResultType.error ? ResultType.error : ResultType.data,\n response: result,\n };\n throw queryRouteResponse;\n }\n\n let data: any;\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n data = await result.json();\n } else {\n data = await result.text();\n }\n\n if (resultType === ResultType.error) {\n return {\n type: resultType,\n error: new ErrorResponseImpl(status, result.statusText, data),\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (resultType === ResultType.error) {\n return { type: resultType, error: result };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (\n formEncType === \"application/x-www-form-urlencoded\" &&\n submission.formData\n ) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n\n return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n searchParams: URLSearchParams\n): FormData {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n // Look upwards from the matched route for the closest ancestor\n // error boundary, defaulting to the root match\n let boundaryMatch = findNearestBoundary(matches, id);\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError) {\n error = Object.values(pendingError)[0];\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n // Prefer higher error values if lower errors bubble to the same boundary\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n } else {\n loaderData[id] = result.data;\n }\n\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError) {\n errors = pendingError;\n loaderData[Object.keys(pendingError)[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: DataResult[],\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingError,\n activeDeferreds\n );\n\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, match, controller } = revalidatingFetchers[index];\n invariant(\n fetcherResults !== undefined && fetcherResults[index] !== undefined,\n \"Did not find corresponding fetcher result\"\n );\n let result = fetcherResults[index];\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n continue;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route = routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\";\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponseImpl(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n results: DataResult[]\n): { result: RedirectResult; idx: number } | undefined {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return { result, idx: i };\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isQueryRouteResponse(obj: any): obj is QueryRouteResponse {\n return (\n obj &&\n isResponse(obj.response) &&\n (obj.type === ResultType.data || obj.type === ResultType.error)\n );\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveDeferredResults(\n currentMatches: AgnosticDataRouteMatch[],\n matchesToLoad: (AgnosticDataRouteMatch | null)[],\n results: DataResult[],\n signals: (AbortSignal | null)[],\n isFetcher: boolean,\n currentLoaderData?: RouteData\n) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n let signal = signals[index];\n invariant(\n signal,\n \"Expected an AbortSignal for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, signal, isFetcher).then((result) => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n navigation: Navigation\n): Submission | undefined {\n let { formMethod, formAction, formEncType, text, formData, json } =\n navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text,\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined,\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined,\n };\n }\n}\n\nfunction getLoadingNavigation(\n location: Location,\n submission?: Submission\n): NavigationStates[\"Loading\"] {\n if (submission) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n } else {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n };\n return navigation;\n }\n}\n\nfunction getSubmittingNavigation(\n location: Location,\n submission: Submission\n): NavigationStates[\"Submitting\"] {\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n}\n\nfunction getLoadingFetcher(\n submission?: Submission,\n data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n if (submission) {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data,\n };\n return fetcher;\n } else {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n }\n}\n\nfunction getSubmittingFetcher(\n submission: Submission,\n existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined,\n };\n return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n let fetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n}\n//#endregion\n","var instances = 'ej2_instances';\nvar uid = 0;\nvar isBlazorPlatform = false;\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function disableBlazorMode() {\n isBlazorPlatform = false;\n}\n/**\n * Create Instance from constructor function with desired parameters.\n *\n * @param {Function} classFunction - Class function to which need to create instance\n * @param {any[]} params - Parameters need to passed while creating instance\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function createInstance(classFunction, params) {\n var arrayParam = params;\n arrayParam.unshift(undefined);\n return new (Function.prototype.bind.apply(classFunction, arrayParam));\n}\n/**\n * To run a callback function immediately after the browser has completed other operations.\n *\n * @param {Function} handler - callback function to be triggered.\n * @returns {Function} ?\n * @private\n */\nexport function setImmediate(handler) {\n var unbind;\n // eslint-disable-next-line\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n intCrypto.getRandomValues(num);\n var secret = 'ej2' + combineArray(num);\n // eslint-disable-next-line\n var messageHandler = function (event) {\n if (event.source === window && typeof event.data === 'string' && event.data.length <= 32 && event.data === secret) {\n handler();\n unbind();\n }\n };\n window.addEventListener('message', messageHandler, false);\n window.postMessage(secret, '*');\n return unbind = function () {\n window.removeEventListener('message', messageHandler);\n handler = messageHandler = secret = undefined;\n };\n}\n/**\n * To get nameSpace value from the desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getValue(nameSpace, obj) {\n // eslint-disable-next-line\n var value = obj;\n var splits = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n for (var i = 0; i < splits.length && !isUndefined(value); i++) {\n value = value[splits[parseInt(i.toString(), 10)]];\n }\n return value;\n}\n/**\n * To set value for the nameSpace in desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} value - Value that you need to set.\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function setValue(nameSpace, value, obj) {\n var keys = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n // eslint-disable-next-line\n var start = obj || {};\n // eslint-disable-next-line\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[parseInt(i.toString(), 10)];\n if (i + 1 === length) {\n fromObj[\"\" + key] = value === undefined ? {} : value;\n }\n else if (isNullOrUndefined(fromObj[\"\" + key])) {\n fromObj[\"\" + key] = {};\n }\n fromObj = fromObj[\"\" + key];\n }\n return start;\n}\n/**\n * Delete an item from Object\n *\n * @param {any} obj - Object in which we need to delete an item.\n * @param {string} key - String value to the get the inner object\n * @returns {void} ?\n * @private\n */\n// eslint-disable-next-line\nexport function deleteObject(obj, key) {\n delete obj[\"\" + key];\n}\n/**\n *@private\n */\n// eslint-disable-next-line\nexport var containerObject = typeof window !== 'undefined' ? window : {};\n/**\n * Check weather the given argument is only object.\n *\n * @param {any} obj - Object which is need to check.\n * @returns {boolean} ?\n * @private\n */\n// eslint-disable-next-line\nexport function isObject(obj) {\n var objCon = {};\n return (!isNullOrUndefined(obj) && obj.constructor === objCon.constructor);\n}\n/**\n * To get enum value by giving the string.\n *\n * @param {any} enumObject - Enum object.\n * @param {string} enumValue - Enum value to be searched\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getEnumValue(enumObject, enumValue) {\n // eslint-disable-next-line\n return enumObject[enumValue];\n}\n/**\n * Merge the source object into destination object.\n *\n * @param {any} source - source object which is going to merge with destination object\n * @param {any} destination - object need to be merged\n * @returns {void} ?\n * @private\n */\nexport function merge(source, destination) {\n if (!isNullOrUndefined(destination)) {\n var temrObj = source;\n var tempProp = destination;\n var keys = Object.keys(destination);\n var deepmerge = 'deepMerge';\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!isNullOrUndefined(temrObj[\"\" + deepmerge]) && (temrObj[\"\" + deepmerge].indexOf(key) !== -1) &&\n (isObject(tempProp[\"\" + key]) || Array.isArray(tempProp[\"\" + key]))) {\n extend(temrObj[\"\" + key], temrObj[\"\" + key], tempProp[\"\" + key], true);\n }\n else {\n temrObj[\"\" + key] = tempProp[\"\" + key];\n }\n }\n }\n}\n/**\n * Extend the two object with newer one.\n *\n * @param {any} copied - Resultant object after merged\n * @param {Object} first - First object need to merge\n * @param {Object} second - Second object need to merge\n * @param {boolean} deep ?\n * @returns {Object} ?\n * @private\n */\nexport function extend(copied, first, second, deep) {\n var result = copied && typeof copied === 'object' ? copied : {};\n var length = arguments.length;\n if (deep) {\n length = length - 1;\n }\n var _loop_1 = function (i) {\n // eslint-disable-next-line\n if (!arguments_1[i]) {\n return \"continue\";\n }\n // eslint-disable-next-line\n var obj1 = arguments_1[i];\n Object.keys(obj1).forEach(function (key) {\n var src = result[\"\" + key];\n var copy = obj1[\"\" + key];\n var clone;\n var isArrayChanged = Array.isArray(copy) && Array.isArray(src) && (copy.length !== src.length);\n // eslint-disable-next-line\n var blazorEventExtend = isBlazor() ? (!(src instanceof Event) && !isArrayChanged) : true;\n if (deep && blazorEventExtend && (isObject(copy) || Array.isArray(copy))) {\n if (isObject(copy)) {\n clone = src ? src : {};\n // eslint-disable-next-line\n if (Array.isArray(clone) && clone.hasOwnProperty('isComplexArray')) {\n extend(clone, {}, copy, deep);\n }\n else {\n result[\"\" + key] = extend(clone, {}, copy, deep);\n }\n }\n else {\n /* istanbul ignore next */\n clone = isBlazor() ? src && Object.keys(copy).length : src ? src : [];\n // eslint-disable-next-line\n result[\"\" + key] = extend([], clone, copy, (clone && clone.length) || (copy && copy.length));\n }\n }\n else {\n result[\"\" + key] = copy;\n }\n });\n };\n var arguments_1 = arguments;\n for (var i = 1; i < length; i++) {\n _loop_1(i);\n }\n return result;\n}\n/**\n * To check whether the object is null or undefined.\n *\n * @param {Object} value - To check the object is null or undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isNullOrUndefined(value) {\n return value === undefined || value === null;\n}\n/**\n * To check whether the object is undefined.\n *\n * @param {Object} value - To check the object is undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isUndefined(value) {\n return ('undefined' === typeof value);\n}\n/**\n * To return the generated unique name\n *\n * @param {string} definedName - To concatenate the unique id to provided name\n * @returns {string} ?\n * @private\n */\nexport function getUniqueID(definedName) {\n return definedName + '_' + uid++;\n}\n/**\n * It limits the rate at which a function can fire. The function will fire only once every provided second instead of as quickly.\n *\n * @param {Function} eventFunction - Specifies the function to run when the event occurs\n * @param {number} delay - A number that specifies the milliseconds for function delay call option\n * @returns {Function} ?\n * @private\n */\nexport function debounce(eventFunction, delay) {\n // eslint-disable-next-line\n var out;\n return function () {\n var _this = this;\n // eslint-disable-next-line\n var args = arguments;\n var later = function () {\n out = null;\n return eventFunction.apply(_this, args);\n };\n clearTimeout(out);\n out = setTimeout(later, delay);\n };\n}\n/**\n * To convert the object to string for query url\n *\n * @param {Object} data ?\n * @returns {string} ?\n * @private\n */\n// eslint-disable-next-line\nexport function queryParams(data) {\n var array = [];\n var keys = Object.keys(data);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n array.push(encodeURIComponent(key) + '=' + encodeURIComponent('' + data[\"\" + key]));\n }\n return array.join('&');\n}\n/**\n * To check whether the given array contains object.\n *\n * @param {any} value - Specifies the T type array to be checked.\n * @returns {boolean} ?\n * @private\n */\nexport function isObjectArray(value) {\n var parser = Object.prototype.toString;\n if (parser.call(value) === '[object Array]') {\n if (parser.call(value[0]) === '[object Object]') {\n return true;\n }\n }\n return false;\n}\n/**\n * To check whether the child element is descendant to parent element or parent and child are same element.\n *\n * @param {Element} child - Specifies the child element to compare with parent.\n * @param {Element} parent - Specifies the parent element.\n * @returns {boolean} ?\n * @private\n */\nexport function compareElementParent(child, parent) {\n var node = child;\n if (node === parent) {\n return true;\n }\n else if (node === document || !node) {\n return false;\n }\n else {\n return compareElementParent(node.parentNode, parent);\n }\n}\n/**\n * To throw custom error message.\n *\n * @param {string} message - Specifies the error message to be thrown.\n * @returns {void} ?\n * @private\n */\nexport function throwError(message) {\n try {\n throw new Error(message);\n }\n catch (e) {\n // eslint-disable-next-line\n throw e.message + '\\n' + e.stack;\n }\n}\n/**\n * This function is used to print given element\n *\n * @param {Element} element - Specifies the print content element.\n * @param {Window} printWindow - Specifies the print window.\n * @returns {Window} ?\n * @private\n */\nexport function print(element, printWindow) {\n var div = document.createElement('div');\n var links = [].slice.call(document.getElementsByTagName('head')[0].querySelectorAll('base, link, style'));\n var blinks = [].slice.call(document.getElementsByTagName('body')[0].querySelectorAll('link, style'));\n if (blinks.length) {\n for (var l = 0, len = blinks.length; l < len; l++) {\n links.push(blinks[parseInt(l.toString(), 10)]);\n }\n }\n var reference = '';\n if (isNullOrUndefined(printWindow)) {\n printWindow = window.open('', 'print', 'height=452,width=1024,tabbar=no');\n }\n div.appendChild(element.cloneNode(true));\n for (var i = 0, len = links.length; i < len; i++) {\n reference += links[parseInt(i.toString(), 10)].outerHTML;\n }\n printWindow.document.write(' ' + reference + '' + div.innerHTML +\n '' + '');\n printWindow.document.close();\n printWindow.focus();\n // eslint-disable-next-line\n var interval = setInterval(function () {\n if (printWindow.ready) {\n printWindow.print();\n printWindow.close();\n clearInterval(interval);\n }\n }, 500);\n return printWindow;\n}\n/**\n * Function to normalize the units applied to the element.\n *\n * @param {number|string} value ?\n * @returns {string} result\n * @private\n */\nexport function formatUnit(value) {\n var result = value + '';\n if (result.match(/auto|cm|mm|in|px|pt|pc|%|em|ex|ch|rem|vw|vh|vmin|vmax/)) {\n return result;\n }\n return result + 'px';\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function enableBlazorMode() {\n isBlazorPlatform = true;\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {boolean} result\n * @private\n */\nexport function isBlazor() {\n return isBlazorPlatform;\n}\n/**\n * Function to convert xPath to DOM element in blazor platform\n *\n * @returns {HTMLElement} result\n * @param {HTMLElement | object} element ?\n * @private\n */\nexport function getElement(element) {\n var xPath = 'xPath';\n if (!(element instanceof Node) && isBlazor() && !isNullOrUndefined(element[\"\" + xPath])) {\n return document.evaluate(element[\"\" + xPath], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n }\n return element;\n}\n/**\n * Function to fetch the Instances of a HTML element for the given component.\n *\n * @param {string | HTMLElement} element ?\n * @param {any} component ?\n * @returns {Object} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getInstance(element, component) {\n // eslint-disable-next-line\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n for (var _i = 0, _a = elem[\"\" + instances]; _i < _a.length; _i++) {\n var inst = _a[_i];\n if (inst instanceof component) {\n return inst;\n }\n }\n }\n return null;\n}\n/**\n * Function to add instances for the given element.\n *\n * @param {string | HTMLElement} element ?\n * @param {Object} instance ?\n * @returns {void} ?\n * @private\n */\nexport function addInstance(element, instance) {\n // eslint-disable-next-line\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n elem[\"\" + instances].push(instance);\n }\n else {\n elem[\"\" + instances] = [instance];\n }\n}\n/**\n * Function to generate the unique id.\n *\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function uniqueID() {\n if ((typeof window) === 'undefined') {\n return;\n }\n // eslint-disable-next-line\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n return intCrypto.getRandomValues(num);\n}\n/**\n *\n * @param {Int16Array} num ?\n * @returns {string} ?\n */\nfunction combineArray(num) {\n var ret = '';\n for (var i = 0; i < 5; i++) {\n ret += (i ? ',' : '') + num[parseInt(i.toString(), 10)];\n }\n return ret;\n}\n","/**\n * Parser\n */\nvar defaultNumberingSystem = {\n 'latn': {\n '_digits': '0123456789',\n '_type': 'numeric'\n }\n};\nimport { isUndefined, getValue, isBlazor } from '../util';\nvar defaultNumberSymbols = {\n 'decimal': '.',\n 'group': ',',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'exponential': 'E'\n};\nvar latnNumberSystem = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\n/**\n * Interface for parser base\n *\n * @private\n */\nvar ParserBase = /** @class */ (function () {\n function ParserBase() {\n }\n /**\n * Returns the cldr object for the culture specifies\n *\n * @param {Object} obj - Specifies the object from which culture object to be acquired.\n * @param {string} cName - Specifies the culture name.\n * @returns {Object} ?\n */\n ParserBase.getMainObject = function (obj, cName) {\n var value = isBlazor() ? cName : 'main.' + cName;\n return getValue(value, obj);\n };\n /**\n * Returns the numbering system object from given cldr data.\n *\n * @param {Object} obj - Specifies the object from which number system is acquired.\n * @returns {Object} ?\n */\n ParserBase.getNumberingSystem = function (obj) {\n return getValue('supplemental.numberingSystems', obj) || this.numberingSystems;\n };\n /**\n * Returns the reverse of given object keys or keys specified.\n *\n * @param {Object} prop - Specifies the object to be reversed.\n * @param {number[]} keys - Optional parameter specifies the custom keyList for reversal.\n * @returns {Object} ?\n */\n ParserBase.reverseObject = function (prop, keys) {\n var propKeys = keys || Object.keys(prop);\n var res = {};\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var key = propKeys_1[_i];\n // eslint-disable-next-line\n if (!res.hasOwnProperty(prop[key])) {\n // eslint-disable-next-line\n res[prop[key]] = key;\n }\n }\n return res;\n };\n /**\n * Returns the symbol regex by skipping the escape sequence.\n *\n * @param {string[]} props - Specifies the array values to be skipped.\n * @returns {RegExp} ?\n */\n ParserBase.getSymbolRegex = function (props) {\n var regexStr = props.map(function (str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n }).join('|');\n var regExp = RegExp;\n return new regExp(regexStr, 'g');\n };\n /**\n *\n * @param {Object} prop ?\n * @returns {Object} ?\n */\n ParserBase.getSymbolMatch = function (prop) {\n var matchKeys = Object.keys(defaultNumberSymbols);\n var ret = {};\n for (var _i = 0, matchKeys_1 = matchKeys; _i < matchKeys_1.length; _i++) {\n var key = matchKeys_1[_i];\n // eslint-disable-next-line\n ret[prop[key]] = defaultNumberSymbols[key];\n }\n return ret;\n };\n /**\n * Returns regex string for provided value\n *\n * @param {string} val ?\n * @returns {string} ?\n */\n ParserBase.constructRegex = function (val) {\n var len = val.length;\n var ret = '';\n for (var i = 0; i < len; i++) {\n if (i !== len - 1) {\n ret += val[parseInt(i.toString(), 10)] + '|';\n }\n else {\n ret += val[parseInt(i.toString(), 10)];\n }\n }\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {string} value - Specifies the values to be replaced.\n * @param {RegExp} regex - Specifies the regex to search.\n * @param {Object} obj - Specifies the object matcher to be replace value parts.\n * @returns {string} ?\n */\n ParserBase.convertValueParts = function (value, regex, obj) {\n return value.replace(regex, function (str) {\n // eslint-disable-next-line\n return obj[str];\n });\n };\n /**\n * Returns default numbering system object for formatting from cldr data\n *\n * @param {Object} obj ?\n * @returns {NumericObject} ?\n */\n ParserBase.getDefaultNumberingSystem = function (obj) {\n var ret = {};\n ret.obj = getValue('numbers', obj);\n ret.nSystem = getValue('defaultNumberingSystem', ret.obj);\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} needSymbols ?\n * @param {boolean} blazorMode ?\n * @returns {Object} ?\n */\n ParserBase.getCurrentNumericOptions = function (curObj, numberSystem, needSymbols, blazorMode) {\n var ret = {};\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem) || blazorMode) {\n var digits = blazorMode ? getValue('obj.mapperDigits', cur) : getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n ret.numericPair = this.reverseObject(digits, latnNumberSystem);\n var regExp = RegExp;\n ret.numberParseRegex = new regExp(this.constructRegex(digits), 'g');\n ret.numericRegex = '[' + digits[0] + '-' + digits[9] + ']';\n if (needSymbols) {\n ret.numericRegex = digits[0] + '-' + digits[9];\n ret.symbolNumberSystem = getValue(blazorMode ? 'numberSymbols' : 'symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.symbolMatch = this.getSymbolMatch(ret.symbolNumberSystem);\n ret.numberSystem = cur.nSystem;\n }\n }\n }\n return ret;\n };\n /**\n * Returns number mapper object for the provided cldr data\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} isNumber ?\n * @returns {NumberMapper} ?\n */\n // eslint-disable-next-line\n ParserBase.getNumberMapper = function (curObj, numberSystem, isNumber) {\n var ret = { mapper: {} };\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem)) {\n ret.numberSystem = cur.nSystem;\n ret.numberSymbols = getValue('symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.timeSeparator = getValue('timeSeparator', ret.numberSymbols);\n var digits = getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n for (var _i = 0, latnNumberSystem_1 = latnNumberSystem; _i < latnNumberSystem_1.length; _i++) {\n var i = latnNumberSystem_1[_i];\n // eslint-disable-next-line\n ret.mapper[i] = digits[i];\n }\n }\n }\n return ret;\n };\n ParserBase.nPair = 'numericPair';\n ParserBase.nRegex = 'numericRegex';\n ParserBase.numberingSystems = defaultNumberingSystem;\n return ParserBase;\n}());\nexport { ParserBase };\n/**\n * @private\n */\nvar blazorCurrencyData = {\n 'DJF': 'Fdj',\n 'ERN': 'Nfk',\n 'ETB': 'Br',\n 'NAD': '$',\n 'ZAR': 'R',\n 'XAF': 'FCFA',\n 'GHS': 'GH₵',\n 'XDR': 'XDR',\n 'AED': 'د.إ.',\n 'BHD': 'د.ب.',\n 'DZD': 'د.ج.',\n 'EGP': 'ج.م.',\n 'ILS': '₪',\n 'IQD': 'د.ع.',\n 'JOD': 'د.ا.',\n 'KMF': 'CF',\n 'KWD': 'د.ك.',\n 'LBP': 'ل.ل.',\n 'LYD': 'د.ل.',\n 'MAD': 'د.م.',\n 'MRU': 'أ.م.',\n 'OMR': 'ر.ع.',\n 'QAR': 'ر.ق.',\n 'SAR': 'ر.س.',\n 'SDG': 'ج.س.',\n 'SOS': 'S',\n 'SSP': '£',\n 'SYP': 'ل.س.',\n 'TND': 'د.ت.',\n 'YER': 'ر.ي.',\n 'CLP': '$',\n 'INR': '₹',\n 'TZS': 'TSh',\n 'EUR': '€',\n 'AZN': '₼',\n 'RUB': '₽',\n 'BYN': 'Br',\n 'ZMW': 'K',\n 'BGN': 'лв.',\n 'NGN': '₦',\n 'XOF': 'CFA',\n 'BDT': '৳',\n 'CNY': '¥',\n 'BAM': 'КМ',\n 'UGX': 'USh',\n 'USD': '$',\n 'CZK': 'Kč',\n 'GBP': '£',\n 'DKK': 'kr.',\n 'KES': 'Ksh',\n 'CHF': 'CHF',\n 'MVR': 'ރ.',\n 'BTN': 'Nu.',\n 'XCD': 'EC$',\n 'AUD': '$',\n 'BBD': '$',\n 'BIF': 'FBu',\n 'BMD': '$',\n 'BSD': '$',\n 'BWP': 'P',\n 'BZD': '$',\n 'CAD': '$',\n 'NZD': '$',\n 'FJD': '$',\n 'FKP': '£',\n 'GIP': '£',\n 'GMD': 'D',\n 'GYD': '$',\n 'HKD': '$',\n 'IDR': 'Rp',\n 'JMD': '$',\n 'KYD': '$',\n 'LRD': '$',\n 'MGA': 'Ar',\n 'MOP': 'MOP$',\n 'MUR': 'Rs',\n 'MWK': 'MK',\n 'MYR': 'RM',\n 'PGK': 'K',\n 'PHP': '₱',\n 'PKR': 'Rs',\n 'RWF': 'RF',\n 'SBD': '$',\n 'SCR': 'SR',\n 'SEK': 'kr',\n 'SGD': '$',\n 'SHP': '£',\n 'SLL': 'Le',\n 'ANG': 'NAf.',\n 'SZL': 'E',\n 'TOP': 'T$',\n 'TTD': '$',\n 'VUV': 'VT',\n 'WST': 'WS$',\n 'ARS': '$',\n 'BOB': 'Bs',\n 'BRL': 'R$',\n 'COP': '$',\n 'CRC': '₡',\n 'CUP': '$',\n 'DOP': '$',\n 'GTQ': 'Q',\n 'HNL': 'L',\n 'MXN': '$',\n 'NIO': 'C$',\n 'PAB': 'B/.',\n 'PEN': 'S/',\n 'PYG': '₲',\n 'UYU': '$',\n 'VES': 'Bs.S',\n 'IRR': 'ريال',\n 'GNF': 'FG',\n 'CDF': 'FC',\n 'HTG': 'G',\n 'XPF': 'FCFP',\n 'HRK': 'kn',\n 'HUF': 'Ft',\n 'AMD': '֏',\n 'ISK': 'kr',\n 'JPY': '¥',\n 'GEL': '₾',\n 'CVE': '​',\n 'KZT': '₸',\n 'KHR': '៛',\n 'KPW': '₩',\n 'KRW': '₩',\n 'KGS': 'сом',\n 'AOA': 'Kz',\n 'LAK': '₭',\n 'MZN': 'MTn',\n 'MKD': 'ден',\n 'MNT': '₮',\n 'BND': '$',\n 'MMK': 'K',\n 'NOK': 'kr',\n 'NPR': 'रु',\n 'AWG': 'Afl.',\n 'SRD': '$',\n 'PLN': 'zł',\n 'AFN': '؋',\n 'STN': 'Db',\n 'MDL': 'L',\n 'RON': 'lei',\n 'UAH': '₴',\n 'LKR': 'රු.',\n 'ALL': 'Lekë',\n 'RSD': 'дин.',\n 'TJS': 'смн',\n 'THB': '฿',\n 'TMT': 'm.',\n 'TRY': '₺',\n 'UZS': 'сўм',\n 'VND': '₫',\n 'TWD': 'NT$'\n};\n/**\n *\n * @param {string} currencyCode ?\n * @returns {string} ?\n */\nexport function getBlazorCurrencySymbol(currencyCode) {\n return getValue(currencyCode || '', blazorCurrencyData);\n}\n","/***\n * Hijri parser\n */\n// eslint-disable-next-line\nexport var HijriParser;\n(function (HijriParser) {\n var dateCorrection = [28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990,\n 29019, 29049, 29078, 29108, 29137, 29167, 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522,\n 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759, 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053,\n 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348, 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585,\n 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939, 30968, 30998, 31027, 31057, 31086, 31116,\n 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530, 31559, 31589, 31618, 31648,\n 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120, 32150, 32180,\n 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711,\n 32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243,\n 33272, 33302, 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775,\n 33804, 33834, 33863, 33893, 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306,\n 34336, 34365, 34395, 34424, 34454, 34483, 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837,\n 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074, 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370,\n 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665, 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901,\n 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254, 36284, 36314, 36343, 36373, 36403, 36433,\n 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845, 36875, 36904, 36934, 36963,\n 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436, 37465, 37495,\n 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027,\n 38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558,\n 38587, 38617, 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089,\n 39118, 39148, 39178, 39208, 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621,\n 39650, 39680, 39709, 39739, 39768, 39798, 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153,\n 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389, 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685,\n 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980, 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216,\n 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570, 41599, 41629, 41658, 41688, 41718, 41748,\n 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161, 42190, 42220, 42249, 42279,\n 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751, 42780, 42810,\n 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342,\n 43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873,\n 43903, 43932, 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405,\n 44434, 44464, 44493, 44523, 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936,\n 44966, 44996, 45025, 45055, 45084, 45114, 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468,\n 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704, 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999,\n 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295, 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531,\n 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885, 46915, 46944, 46974, 47003, 47033, 47063,\n 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476, 47506, 47535, 47565, 47594,\n 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066, 48096, 48125,\n 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657,\n 48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189,\n 49218, 49248, 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720,\n 49749, 49779, 49809, 49838, 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252,\n 50281, 50311, 50340, 50370, 50400, 50429, 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784,\n 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019, 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315,\n 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611, 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846,\n 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200, 52230, 52260, 52290, 52319, 52349, 52379,\n 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792, 52822, 52851, 52881, 52910,\n 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383, 53412, 53441,\n 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973,\n 54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505,\n 54535, 54564, 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036,\n 55066, 55095, 55125, 55154, 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567,\n 55597, 55627, 55657, 55686, 55716, 55745, 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100,\n 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335, 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631,\n 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926, 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162,\n 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517, 57546, 57576, 57605, 57634, 57664, 57694,\n 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107, 58137, 58167, 58196, 58226,\n 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698, 58727, 58757,\n 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288,\n 59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820,\n 59850, 59879, 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352,\n 60381, 60411, 60440, 60469, 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883,\n 60912, 60942, 60972, 61002, 61031, 61061, 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415,\n 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651, 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947,\n 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242, 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478,\n 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832, 62862, 62891, 62921, 62950, 62980, 63009,\n 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423, 63453, 63482, 63512, 63541,\n 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014, 64043, 64073,\n 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603,\n 64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136,\n 65166, 65195, 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667,\n 65697, 65726, 65755, 65785, 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199,\n 66228, 66258, 66287, 66317, 66346, 66376, 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730,\n 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967, 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262,\n 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557, 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793,\n 67823, 67852, 67882, 67911, 67941, 67971, 68000, 68030, 68060, 68089, 68119, 68148, 68177, 68207, 68236, 68266, 68295, 68325,\n 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738, 68768, 68797, 68827, 68857,\n 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330, 69359, 69388,\n 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919,\n 69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451,\n 70481, 70510, 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983,\n 71013, 71042, 71071, 71101, 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514,\n 71543, 71573, 71602, 71632, 71662, 71691, 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046,\n 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282, 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577,\n 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872, 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109,\n 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464, 73493, 73523, 73552, 73581, 73611, 73640,\n 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053, 74083, 74113, 74142, 74172,\n 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645, 74675, 74704,\n 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235,\n 75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766,\n 75796, 75826, 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299,\n 76328, 76358, 76387, 76416, 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830,\n 76859, 76889, 76918, 76948, 76977, 77007, 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361,\n 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598, 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893,\n 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188, 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425,\n 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779, 78808, 78838, 78867, 78897, 78926, 78956,\n 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369, 79399, 79428, 79458, 79487,\n 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960, 79990\n ];\n /**\n *\n * @param {Date} gDate ?\n * @returns {Object} ?\n */\n function getHijriDate(gDate) {\n var day = gDate.getDate();\n var month = gDate.getMonth();\n var year = gDate.getFullYear();\n var tMonth = month + 1;\n var tYear = year;\n if (tMonth < 3) {\n tYear -= 1;\n tMonth += 12;\n }\n var yPrefix = Math.floor(tYear / 100.);\n var julilanOffset = yPrefix - Math.floor(yPrefix / 4.) - 2;\n var julianNumber = Math.floor(365.25 * (tYear + 4716)) + Math.floor(30.6001 * (tMonth + 1)) + day - julilanOffset - 1524;\n yPrefix = Math.floor((julianNumber - 1867216.25) / 36524.25);\n julilanOffset = yPrefix - Math.floor(yPrefix / 4.) + 1;\n var b = julianNumber + julilanOffset + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var tempMonth = Math.floor((b - d) / 30.6001);\n day = (b - d) - Math.floor(30.6001 * tempMonth);\n month = Math.floor((b - d) / 20.6001);\n if (month > 13) {\n c += 1;\n month -= 12;\n }\n month -= 1;\n year = c - 4716;\n var modifiedJulianDate = julianNumber - 2400000;\n // date calculation for year after 2077\n var iyear = 10631. / 30.;\n var z = julianNumber - 1948084;\n var cyc = Math.floor(z / 10631.);\n z = z - 10631 * cyc;\n var j = Math.floor((z - 0.1335) / iyear);\n var iy = 30 * cyc + j;\n z = z - Math.floor(j * iyear + 0.1335);\n var im = Math.floor((z + 28.5001) / 29.5);\n /* istanbul ignore next */\n if (im === 13) {\n im = 12;\n }\n var tempDay = z - Math.floor(29.5001 * im - 29);\n var i = 0;\n for (; i < dateCorrection.length; i++) {\n if (dateCorrection[parseInt(i.toString(), 10)] > modifiedJulianDate) {\n break;\n }\n }\n var iln = i + 16260;\n var ii = Math.floor((iln - 1) / 12);\n var hYear = ii + 1;\n var hmonth = iln - 12 * ii;\n var hDate = modifiedJulianDate - dateCorrection[i - 1] + 1;\n if ((hDate + '').length > 2) {\n hDate = tempDay;\n hmonth = im;\n hYear = iy;\n }\n return { year: hYear, month: hmonth, date: hDate };\n }\n HijriParser.getHijriDate = getHijriDate;\n /**\n *\n * @param {number} year ?\n * @param {number} month ?\n * @param {number} day ?\n * @returns {Date} ?\n */\n function toGregorian(year, month, day) {\n var iy = year;\n var im = month;\n var id = day;\n var ii = iy - 1;\n var iln = (ii * 12) + 1 + (im - 1);\n var i = iln - 16260;\n var mcjdn = id + dateCorrection[i - 1] - 1;\n var julianDate = mcjdn + 2400000;\n var z = Math.floor(julianDate + 0.5);\n var a = Math.floor((z - 1867216.25) / 36524.25);\n a = z + 1 + a - Math.floor(a / 4);\n var b = a + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var e = Math.floor((b - d) / 30.6001);\n var gDay = b - d - Math.floor(e * 30.6001);\n var gMonth = e - (e > 13.5 ? 13 : 1);\n var gYear = c - (gMonth > 2.5 ? 4716 : 4715);\n /* istanbul ignore next */\n if (gYear <= 0) {\n gMonth--;\n } // No year zero\n return new Date(gYear + '/' + (gMonth) + '/' + gDay);\n }\n HijriParser.toGregorian = toGregorian;\n})(HijriParser || (HijriParser = {}));\n","import { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nimport { isUndefined, throwError, getValue, isBlazor } from '../util';\nimport { HijriParser } from '../hijri-parser';\nimport { isNullOrUndefined, extend } from '../util';\nvar abbreviateRegexGlobal = /\\/MMMMM|MMMM|MMM|a|LLLL|LLL|EEEEE|EEEE|E|K|cccc|ccc|WW|W|G+|z+/gi;\nvar standalone = 'stand-alone';\nvar weekdayKey = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nexport var basicPatterns = ['short', 'medium', 'long', 'full'];\nvar timeSetter = {\n m: 'getMinutes',\n h: 'getHours',\n H: 'getHours',\n s: 'getSeconds',\n d: 'getDate',\n f: 'getMilliseconds'\n};\nexport var datePartMatcher = {\n 'M': 'month',\n 'd': 'day',\n 'E': 'weekday',\n 'c': 'weekday',\n 'y': 'year',\n 'm': 'minute',\n 'h': 'hour',\n 'H': 'hour',\n 's': 'second',\n 'L': 'month',\n 'a': 'designator',\n 'z': 'timeZone',\n 'Z': 'timeZone',\n 'G': 'era',\n 'f': 'milliseconds'\n};\nvar timeSeparator = 'timeSeparator';\n/* tslint:disable no-any */\n/**\n * Date Format is a framework provides support for date formatting.\n *\n * @private\n */\nvar DateFormat = /** @class */ (function () {\n function DateFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which date will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateFormat.dateFormat = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numObject = getValue('parserObject.numbers', dependable);\n var dateObject = dependable.dateObject;\n var formatOptions = { isIslamic: base.islamicRegex.test(option.calendar) };\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n formatOptions.dateSeperator = isBlazor() ? getValue('dateSeperator', dateObject) : base.getDateSeparator(dependable.dateObject);\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n if (isBlazor()) {\n resPattern = resPattern.replace(/tt/, 'a');\n }\n formatOptions.pattern = resPattern;\n formatOptions.numMapper = isBlazor() ?\n extend({}, numObject) : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n var patternMatch = resPattern.match(abbreviateRegexGlobal) || [];\n for (var _i = 0, patternMatch_1 = patternMatch; _i < patternMatch_1.length; _i++) {\n var str = patternMatch_1[_i];\n var len = str.length;\n var char = str[0];\n if (char === 'K') {\n char = 'h';\n }\n switch (char) {\n case 'E':\n case 'c':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.weekday = getValue('days.' + base.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\n formatOptions.weekday = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n break;\n case 'M':\n case 'L':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.month = getValue('months.' + base.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\n formatOptions.month = dependable.dateObject[base.month][standalone][base.monthIndex[len]];\n }\n break;\n case 'a':\n formatOptions.designator = isBlazor() ?\n getValue('dayPeriods', dateObject) : getValue('dayPeriods.format.wide', dateObject);\n break;\n case 'G':\n // eslint-disable-next-line\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n formatOptions.era = isBlazor() ? getValue('eras', dateObject) : getValue('eras.' + eText, dependable.dateObject);\n break;\n case 'z':\n formatOptions.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n break;\n }\n }\n }\n return function (value) {\n if (isNaN(value.getDate())) {\n return null;\n }\n return _this.intDateFormatter(value, formatOptions);\n };\n };\n /**\n * Returns formatted date string based on options passed.\n *\n * @param {Date} value ?\n * @param {FormatOptions} options ?\n * @returns {string} ?\n */\n DateFormat.intDateFormatter = function (value, options) {\n var pattern = options.pattern;\n var ret = '';\n var matches = pattern.match(base.dateParseRegex);\n var dObject = this.getCurrentDateValue(value, options.isIslamic);\n for (var _i = 0, matches_1 = matches; _i < matches_1.length; _i++) {\n var match = matches_1[_i];\n var length_1 = match.length;\n var char = match[0];\n if (char === 'K') {\n char = 'h';\n }\n var curval = void 0;\n var curvalstr = '';\n var isNumber = void 0;\n var processNumber = void 0;\n var curstr = '';\n switch (char) {\n case 'M':\n case 'L':\n curval = dObject.month;\n if (length_1 > 2) {\n // eslint-disable-next-line\n ret += options.month[curval];\n }\n else {\n isNumber = true;\n }\n break;\n case 'E':\n case 'c':\n // eslint-disable-next-line\n ret += options.weekday[weekdayKey[value.getDay()]];\n break;\n case 'H':\n case 'h':\n case 'm':\n case 's':\n case 'd':\n case 'f':\n isNumber = true;\n if (char === 'd') {\n curval = dObject.date;\n }\n else if (char === 'f') {\n isNumber = false;\n processNumber = true;\n // eslint-disable-next-line\n curvalstr = value[timeSetter[char]]().toString();\n curvalstr = curvalstr.substring(0, length_1);\n var curlength = curvalstr.length;\n if (length_1 !== curlength) {\n if (length_1 > 3) {\n continue;\n }\n for (var i = 0; i < length_1 - curlength; i++) {\n curvalstr = '0' + curvalstr.toString();\n }\n }\n curstr += curvalstr;\n }\n else {\n // eslint-disable-next-line\n curval = value[timeSetter[char]]();\n }\n if (char === 'h') {\n curval = curval % 12 || 12;\n }\n break;\n case 'y':\n processNumber = true;\n curstr += dObject.year;\n if (length_1 === 2) {\n curstr = curstr.substr(curstr.length - 2);\n }\n break;\n case 'a':\n // eslint-disable-next-line\n var desig = value.getHours() < 12 ? 'am' : 'pm';\n // eslint-disable-next-line\n ret += options.designator[desig];\n break;\n case 'G':\n // eslint-disable-next-line\n var dec = value.getFullYear() < 0 ? 0 : 1;\n // eslint-disable-next-line\n var retu = options.era[dec];\n if (isNullOrUndefined(retu)) {\n // eslint-disable-next-line\n retu = options.era[dec ? 0 : 1];\n }\n ret += retu || '';\n break;\n case '\\'':\n ret += (match === '\\'\\'') ? '\\'' : match.replace(/'/g, '');\n break;\n case 'z':\n // eslint-disable-next-line\n var timezone = value.getTimezoneOffset();\n // eslint-disable-next-line\n var pattern_1 = (length_1 < 4) ? '+H;-H' : options.timeZone.hourFormat;\n pattern_1 = pattern_1.replace(/:/g, options.numMapper.timeSeparator);\n if (timezone === 0) {\n ret += options.timeZone.gmtZeroFormat;\n }\n else {\n processNumber = true;\n curstr = this.getTimeZoneValue(timezone, pattern_1);\n }\n curstr = options.timeZone.gmtFormat.replace(/\\{0\\}/, curstr);\n break;\n case ':':\n // eslint-disable-next-line\n ret += options.numMapper.numberSymbols[timeSeparator];\n break;\n case '/':\n ret += options.dateSeperator;\n break;\n case 'W':\n isNumber = true;\n curval = base.getWeekOfYear(value);\n break;\n default:\n ret += match;\n }\n if (isNumber) {\n processNumber = true;\n curstr = this.checkTwodigitNumber(curval, length_1);\n }\n if (processNumber) {\n ret += parser.convertValueParts(curstr, base.latnParseRegex, options.numMapper.mapper);\n }\n }\n return ret;\n };\n DateFormat.getCurrentDateValue = function (value, isIslamic) {\n if (isIslamic) {\n return HijriParser.getHijriDate(value);\n }\n return { year: value.getFullYear(), month: value.getMonth() + 1, date: value.getDate() };\n };\n /**\n * Returns two digit numbers for given value and length\n *\n * @param {number} val ?\n * @param {number} len ?\n * @returns {string} ?\n */\n DateFormat.checkTwodigitNumber = function (val, len) {\n var ret = val + '';\n if (len === 2 && ret.length !== 2) {\n return '0' + ret;\n }\n return ret;\n };\n /**\n * Returns the value of the Time Zone.\n *\n * @param {number} tVal ?\n * @param {string} pattern ?\n * @returns {string} ?\n * @private\n */\n DateFormat.getTimeZoneValue = function (tVal, pattern) {\n var _this = this;\n var splt = pattern.split(';');\n var curPattern = splt[tVal > 0 ? 1 : 0];\n var no = Math.abs(tVal);\n return curPattern = curPattern.replace(/HH?|mm/g, function (str) {\n var len = str.length;\n var ishour = str.indexOf('H') !== -1;\n return _this.checkTwodigitNumber(Math.floor(ishour ? (no / 60) : (no % 60)), len);\n });\n };\n return DateFormat;\n}());\nexport { DateFormat };\n","import { isUndefined, throwError, isNullOrUndefined, extend, isBlazor, getValue } from '../util';\nimport { defaultCurrencyCode } from '../internationalization';\nimport { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nvar errorText = {\n 'ms': 'minimumSignificantDigits',\n 'ls': 'maximumSignificantDigits',\n 'mf': 'minimumFractionDigits',\n 'lf': 'maximumFractionDigits'\n};\nvar integerError = 'minimumIntegerDigits';\nvar percentSign = 'percentSign';\nvar minusSign = 'minusSign';\nvar spaceRegex = /\\s/;\nvar mapper = ['infinity', 'nan', 'group', 'decimal', 'exponential'];\nvar infinity = 'infinity';\nvar nan = 'nan';\n/**\n * Module for number formatting.\n *\n * @private\n */\nvar NumberFormat = /** @class */ (function () {\n function NumberFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberFormat.numberFormatter = function (culture, option, cldr) {\n var _this = this;\n var fOptions = extend({}, option);\n var cOptions = {};\n var dOptions = {};\n var symbolPattern;\n var dependable = base.getDependables(cldr, culture, '', true);\n var numObject = dependable.numericObject;\n dOptions.numberMapper = isBlazor() ? extend({}, numObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n dOptions.currencySymbol = isBlazor() ? getValue('currencySymbol', numObject) : base.getCurrencySymbol(dependable.numericObject, fOptions.currency || defaultCurrencyCode, option.altSymbol);\n /* eslint-disable @typescript-eslint/no-explicit-any */\n dOptions.percentSymbol = isBlazor() ? getValue('numberSymbols.percentSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + percentSign];\n dOptions.minusSymbol = isBlazor() ? getValue('numberSymbols.minusSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + minusSign];\n var symbols = dOptions.numberMapper.numberSymbols;\n if ((option.format) && !(base.formatRegex.test(option.format))) {\n cOptions = base.customFormat(option.format, dOptions, dependable.numericObject);\n }\n else {\n extend(fOptions, base.getProperNumericSkeleton(option.format || 'N'));\n fOptions.isCurrency = fOptions.type === 'currency';\n fOptions.isPercent = fOptions.type === 'percent';\n if (!isBlazor()) {\n symbolPattern = base.getSymbolPattern(fOptions.type, dOptions.numberMapper.numberSystem, dependable.numericObject, fOptions.isAccount);\n }\n fOptions.groupOne = this.checkValueRange(fOptions.maximumSignificantDigits, fOptions.minimumSignificantDigits, true);\n this.checkValueRange(fOptions.maximumFractionDigits, fOptions.minimumFractionDigits, false, true);\n if (!isUndefined(fOptions.fractionDigits)) {\n fOptions.minimumFractionDigits = fOptions.maximumFractionDigits = fOptions.fractionDigits;\n }\n if (isUndefined(fOptions.useGrouping)) {\n fOptions.useGrouping = true;\n }\n if (fOptions.isCurrency && !isBlazor()) {\n symbolPattern = symbolPattern.replace(/\\u00A4/g, base.defaultCurrency);\n }\n if (!isBlazor()) {\n var split = symbolPattern.split(';');\n cOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, dOptions.currencySymbol);\n cOptions.pData = base.getFormatData(split[0], false, dOptions.currencySymbol);\n if (fOptions.useGrouping) {\n fOptions.groupSeparator = symbols[mapper[2]];\n fOptions.groupData = this.getGroupingDetails(split[0]);\n }\n }\n else {\n cOptions.nData = extend({}, {}, getValue(fOptions.type + 'nData', numObject));\n cOptions.pData = extend({}, {}, getValue(fOptions.type + 'pData', numObject));\n if (fOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([cOptions.pData, cOptions.nData], dOptions.currencySymbol, option.currency);\n }\n }\n var minFrac = isUndefined(fOptions.minimumFractionDigits);\n if (minFrac) {\n fOptions.minimumFractionDigits = cOptions.nData.minimumFraction;\n }\n if (isUndefined(fOptions.maximumFractionDigits)) {\n var mval = cOptions.nData.maximumFraction;\n fOptions.maximumFractionDigits = isUndefined(mval) && fOptions.isPercent ? 0 : mval;\n }\n var mfrac = fOptions.minimumFractionDigits;\n var lfrac = fOptions.maximumFractionDigits;\n if (!isUndefined(mfrac) && !isUndefined(lfrac)) {\n if (mfrac > lfrac) {\n fOptions.maximumFractionDigits = mfrac;\n }\n }\n }\n extend(cOptions.nData, fOptions);\n extend(cOptions.pData, fOptions);\n return function (value) {\n if (isNaN(value)) {\n return symbols[mapper[1]];\n }\n else if (!isFinite(value)) {\n return symbols[mapper[0]];\n }\n return _this.intNumberFormatter(value, cOptions, dOptions, option);\n };\n };\n /**\n * Returns grouping details for the pattern provided\n *\n * @param {string} pattern ?\n * @returns {GroupDetails} ?\n */\n NumberFormat.getGroupingDetails = function (pattern) {\n var ret = {};\n var match = pattern.match(base.negativeDataRegex);\n if (match && match[4]) {\n var pattern_1 = match[4];\n var p = pattern_1.lastIndexOf(',');\n if (p !== -1) {\n var temp = pattern_1.split('.')[0];\n ret.primary = (temp.length - p) - 1;\n var s = pattern_1.lastIndexOf(',', p - 1);\n if (s !== -1) {\n ret.secondary = p - 1 - s;\n }\n }\n }\n return ret;\n };\n /**\n * Returns if the provided integer range is valid.\n *\n * @param {number} val1 ?\n * @param {number} val2 ?\n * @param {boolean} checkbothExist ?\n * @param {boolean} isFraction ?\n * @returns {boolean} ?\n */\n NumberFormat.checkValueRange = function (val1, val2, checkbothExist, isFraction) {\n var decide = isFraction ? 'f' : 's';\n var dint = 0;\n var str1 = errorText['l' + decide];\n // eslint-disable-next-line\n var str2 = errorText['m' + decide];\n if (!isUndefined(val1)) {\n this.checkRange(val1, str1, isFraction);\n dint++;\n }\n if (!isUndefined(val2)) {\n this.checkRange(val2, str2, isFraction);\n dint++;\n }\n if (dint === 2) {\n if (val1 < val2) {\n throwError(str2 + 'specified must be less than the' + str1);\n }\n else {\n return true;\n }\n }\n else if (checkbothExist && dint === 1) {\n throwError('Both' + str2 + 'and' + str2 + 'must be present');\n }\n return false;\n };\n /**\n * Check if the provided fraction range is valid\n *\n * @param {number} val ?\n * @param {string} text ?\n * @param {boolean} isFraction ?\n * @returns {void} ?\n */\n NumberFormat.checkRange = function (val, text, isFraction) {\n var range = isFraction ? [0, 20] : [1, 21];\n if (val < range[0] || val > range[1]) {\n throwError(text + 'value must be within the range' + range[0] + 'to' + range[1]);\n }\n };\n /**\n * Returns formatted numeric string for provided formatting options\n *\n * @param {number} value ?\n * @param {base.GenericFormatOptions} fOptions ?\n * @param {CommonOptions} dOptions ?\n * @returns {string} ?\n */\n NumberFormat.intNumberFormatter = function (value, fOptions, dOptions, option) {\n var curData;\n if (isUndefined(fOptions.nData.type)) {\n return undefined;\n }\n else {\n if (value < 0) {\n value = value * -1;\n curData = fOptions.nData;\n }\n else if (value === 0) {\n curData = fOptions.zeroData || fOptions.pData;\n }\n else {\n curData = fOptions.pData;\n }\n var fValue = '';\n if (curData.isPercent) {\n value = value * 100;\n }\n if (curData.groupOne) {\n fValue = this.processSignificantDigits(value, curData.minimumSignificantDigits, curData.maximumSignificantDigits);\n }\n else {\n fValue = this.processFraction(value, curData.minimumFractionDigits, curData.maximumFractionDigits, option);\n if (curData.minimumIntegerDigits) {\n fValue = this.processMinimumIntegers(fValue, curData.minimumIntegerDigits);\n }\n if (dOptions.isCustomFormat && curData.minimumFractionDigits < curData.maximumFractionDigits\n && /\\d+\\.\\d+/.test(fValue)) {\n var temp = fValue.split('.');\n var decimalPart = temp[1];\n var len = decimalPart.length;\n for (var i = len - 1; i >= 0; i--) {\n if (decimalPart[\"\" + i] === '0' && i >= curData.minimumFractionDigits) {\n decimalPart = decimalPart.slice(0, i);\n }\n else {\n break;\n }\n }\n fValue = temp[0] + '.' + decimalPart;\n }\n }\n if (curData.type === 'scientific') {\n fValue = value.toExponential(curData.maximumFractionDigits);\n fValue = fValue.replace('e', dOptions.numberMapper.numberSymbols[mapper[4]]);\n }\n fValue = fValue.replace('.', dOptions.numberMapper.numberSymbols[mapper[3]]);\n fValue = curData.format === \"#,###,,;(#,###,,)\" ? this.customPivotFormat(parseInt(fValue)) : fValue;\n if (curData.useGrouping) {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n fValue = this.groupNumbers(fValue, curData.groupData.primary, curData.groupSeparator || ',', dOptions.numberMapper.numberSymbols[mapper[3]] || '.', curData.groupData.secondary);\n }\n fValue = parser.convertValueParts(fValue, base.latnParseRegex, dOptions.numberMapper.mapper);\n if (curData.nlead === 'N/A') {\n return curData.nlead;\n }\n else {\n if (fValue === '0' && option && option.format === '0') {\n return fValue + curData.nend;\n }\n return curData.nlead + fValue + curData.nend;\n }\n }\n };\n /**\n * Returns significant digits processed numeric string\n *\n * @param {number} value ?\n * @param {number} min ?\n * @param {number} max ?\n * @returns {string} ?\n */\n NumberFormat.processSignificantDigits = function (value, min, max) {\n var temp = value + '';\n var tn;\n var length = temp.length;\n if (length < min) {\n return value.toPrecision(min);\n }\n else {\n temp = value.toPrecision(max);\n tn = +temp;\n return tn + '';\n }\n };\n /**\n * Returns grouped numeric string\n *\n * @param {string} val ?\n * @param {number} level1 ?\n * @param {string} sep ?\n * @param {string} decimalSymbol ?\n * @param {number} level2 ?\n * @returns {string} ?\n */\n NumberFormat.groupNumbers = function (val, level1, sep, decimalSymbol, level2) {\n var flag = !isNullOrUndefined(level2) && level2 !== 0;\n var split = val.split(decimalSymbol);\n var prefix = split[0];\n var length = prefix.length;\n var str = '';\n while (length > level1) {\n str = prefix.slice(length - level1, length) + (str.length ?\n (sep + str) : '');\n length -= level1;\n if (flag) {\n level1 = level2;\n flag = false;\n }\n }\n split[0] = prefix.slice(0, length) + (str.length ? sep : '') + str;\n return split.join(decimalSymbol);\n };\n /**\n * Returns fraction processed numeric string\n *\n * @param {number} value ?\n * @param {number} min ?\n * @param {number} max ?\n * @returns {string} ?\n */\n NumberFormat.processFraction = function (value, min, max, option) {\n var temp = (value + '').split('.')[1];\n var length = temp ? temp.length : 0;\n if (min && length < min) {\n var ret = '';\n if (length === 0) {\n ret = value.toFixed(min);\n }\n else {\n ret += value;\n for (var j = 0; j < min - length; j++) {\n ret += '0';\n }\n return ret;\n }\n return value.toFixed(min);\n }\n else if (!isNullOrUndefined(max) && (length > max || max === 0)) {\n return value.toFixed(max);\n }\n var str = value + '';\n if (str[0] === '0' && option && option.format === '###.00') {\n str = str.slice(1);\n }\n return str;\n };\n /**\n * Returns integer processed numeric string\n *\n * @param {string} value ?\n * @param {number} min ?\n * @returns {string} ?\n */\n NumberFormat.processMinimumIntegers = function (value, min) {\n var temp = value.split('.');\n var lead = temp[0];\n var len = lead.length;\n if (len < min) {\n for (var i = 0; i < min - len; i++) {\n lead = '0' + lead;\n }\n temp[0] = lead;\n }\n return temp.join('.');\n };\n /**\n * Returns custom format for pivot table\n *\n * @param {number} value ?\n */\n NumberFormat.customPivotFormat = function (value) {\n if (value >= 500000) {\n value /= 1000000;\n var _a = value.toString().split(\".\"), integer = _a[0], decimal = _a[1];\n return decimal && +decimal.substring(0, 1) >= 5\n ? Math.ceil(value).toString()\n : Math.floor(value).toString();\n }\n return \"\";\n };\n return NumberFormat;\n}());\nexport { NumberFormat };\n","import { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nimport { isUndefined, throwError, getValue, isNullOrUndefined, isBlazor } from '../util';\nimport { datePartMatcher } from './date-formatter';\nimport { HijriParser } from '../hijri-parser';\nvar standalone = 'stand-alone';\nvar latnRegex = /^[0-9]*$/;\nvar timeSetter = {\n minute: 'setMinutes',\n hour: 'setHours',\n second: 'setSeconds',\n day: 'setDate',\n month: 'setMonth',\n milliseconds: 'setMilliseconds'\n};\nvar month = 'months';\n/* tslint:disable no-any */\n/**\n * Date Parser.\n *\n * @private\n */\nvar DateParser = /** @class */ (function () {\n function DateParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which string date will be parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateParser.dateParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), false, isBlazor());\n var parseOptions = {};\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n var regexString = '';\n var hourOnly;\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n parseOptions = { isIslamic: base.islamicRegex.test(option.calendar), pattern: resPattern, evalposition: {}, culture: culture };\n var patternMatch = resPattern.match(base.dateParseRegex) || [];\n var length_1 = patternMatch.length;\n var gmtCorrection = 0;\n var zCorrectTemp = 0;\n var isgmtTraversed = false;\n var nRegx = numOptions.numericRegex;\n // eslint-disable-next-line\n var numMapper = isBlazor() ? dependable.parserObject.numbers :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n for (var i = 0; i < length_1; i++) {\n var str = patternMatch[parseInt(i.toString(), 10)];\n var len = str.length;\n var char = (str[0] === 'K') ? 'h' : str[0];\n var isNumber = void 0;\n var canUpdate = void 0;\n // eslint-disable-next-line\n var charKey = datePartMatcher[char];\n var optional = (len === 2) ? '' : '?';\n if (isgmtTraversed) {\n gmtCorrection = zCorrectTemp;\n isgmtTraversed = false;\n }\n switch (char) {\n case 'E':\n case 'c':\n // eslint-disable-next-line\n var weekData = void 0;\n if (isBlazor()) {\n // eslint-disable-next-line\n weekData = getValue('days.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n weekData = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n // eslint-disable-next-line\n var weekObject = parser.reverseObject(weekData);\n // tslint:enable\n regexString += '(' + Object.keys(weekObject).join('|') + ')';\n break;\n case 'M':\n case 'L':\n case 'd':\n case 'm':\n case 's':\n case 'h':\n case 'H':\n case 'f':\n canUpdate = true;\n if ((char === 'M' || char === 'L') && len > 2) {\n var monthData = void 0;\n if (isBlazor()) {\n // eslint-disable-next-line\n monthData = getValue('months.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n monthData = dependable.dateObject[month][standalone][base.monthIndex[len]];\n }\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(monthData);\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n }\n else if (char === 'f') {\n if (len > 3) {\n continue;\n }\n isNumber = true;\n regexString += '(' + nRegx + nRegx + '?' + nRegx + '?' + ')';\n }\n else {\n isNumber = true;\n regexString += '(' + nRegx + nRegx + optional + ')';\n }\n if (char === 'h') {\n parseOptions.hour12 = true;\n }\n break;\n case 'W':\n // eslint-disable-next-line\n var opt = len === 1 ? '?' : '';\n regexString += '(' + nRegx + opt + nRegx + ')';\n break;\n case 'y':\n canUpdate = isNumber = true;\n if (len === 2) {\n regexString += '(' + nRegx + nRegx + ')';\n }\n else {\n regexString += '(' + nRegx + '{' + len + ',})';\n }\n break;\n case 'a':\n canUpdate = true;\n // eslint-disable-next-line\n var periodValur = isBlazor() ?\n getValue('dayPeriods', dependable.dateObject) :\n getValue('dayPeriods.format.wide', dependable.dateObject);\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(periodValur);\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n break;\n case 'G':\n canUpdate = true;\n // eslint-disable-next-line\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(isBlazor() ?\n getValue('eras', dependable.dateObject) : getValue('eras.' + eText, dependable.dateObject));\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + '?)';\n break;\n case 'z':\n // eslint-disable-next-line\n var tval = new Date().getTimezoneOffset();\n canUpdate = (tval !== 0);\n // eslint-disable-next-line\n parseOptions[charKey] = getValue('dates.timeZoneNames', dependable.parserObject);\n // eslint-disable-next-line\n var tzone = parseOptions[charKey];\n hourOnly = (len < 4);\n // eslint-disable-next-line\n var hpattern = hourOnly ? '+H;-H' : tzone.hourFormat;\n hpattern = hpattern.replace(/:/g, numMapper.timeSeparator);\n regexString += '(' + this.parseTimeZoneRegx(hpattern, tzone, nRegx) + ')?';\n isgmtTraversed = true;\n zCorrectTemp = hourOnly ? 6 : 12;\n break;\n case '\\'':\n // eslint-disable-next-line\n var iString = str.replace(/'/g, '');\n regexString += '(' + iString + ')?';\n break;\n default:\n regexString += '([\\\\D])';\n break;\n }\n if (canUpdate) {\n parseOptions.evalposition[\"\" + charKey] = { isNumber: isNumber, pos: i + 1 + gmtCorrection, hourOnly: hourOnly };\n }\n if (i === length_1 - 1 && !isNullOrUndefined(regexString)) {\n var regExp = RegExp;\n parseOptions.parserRegex = new regExp('^' + regexString + '$', 'i');\n }\n }\n }\n return function (value) {\n var parsedDateParts = _this.internalDateParse(value, parseOptions, numOptions);\n if (isNullOrUndefined(parsedDateParts) || !Object.keys(parsedDateParts).length) {\n return null;\n }\n if (parseOptions.isIslamic) {\n var dobj = {};\n var tYear = parsedDateParts.year;\n var tDate = parsedDateParts.day;\n var tMonth = parsedDateParts.month;\n var ystrig = tYear ? (tYear + '') : '';\n var is2DigitYear = (ystrig.length === 2);\n if (!tYear || !tMonth || !tDate || is2DigitYear) {\n dobj = HijriParser.getHijriDate(new Date());\n }\n if (is2DigitYear) {\n tYear = parseInt((dobj.year + '').slice(0, 2) + ystrig, 10);\n }\n // tslint:disable-next-line\n var dateObject = HijriParser.toGregorian(tYear || dobj.year, tMonth || dobj.month, tDate || dobj.date);\n parsedDateParts.year = dateObject.getFullYear();\n parsedDateParts.month = dateObject.getMonth() + 1;\n parsedDateParts.day = dateObject.getDate();\n }\n return _this.getDateObject(parsedDateParts);\n };\n };\n /* tslint:disable */\n /**\n * Returns date object for provided date options\n *\n * @param {DateParts} options ?\n * @param {Date} value ?\n * @returns {Date} ?\n */\n DateParser.getDateObject = function (options, value) {\n var res = value || new Date();\n res.setMilliseconds(0);\n var tKeys = ['hour', 'minute', 'second', 'milliseconds', 'month', 'day'];\n var y = options.year;\n var desig = options.designator;\n var tzone = options.timeZone;\n if (!isUndefined(y)) {\n var len = (y + '').length;\n if (len <= 2) {\n var century = Math.floor(res.getFullYear() / 100) * 100;\n y += century;\n }\n res.setFullYear(y);\n }\n for (var _i = 0, tKeys_1 = tKeys; _i < tKeys_1.length; _i++) {\n var key = tKeys_1[_i];\n // eslint-disable-next-line\n var tValue = options[key];\n if (isUndefined(tValue) && key === 'day') {\n res.setDate(1);\n }\n if (!isUndefined(tValue)) {\n if (key === 'month') {\n tValue -= 1;\n if (tValue < 0 || tValue > 11) {\n return new Date('invalid');\n }\n var pDate = res.getDate();\n res.setDate(1);\n // eslint-disable-next-line\n res[timeSetter[key]](tValue);\n var lDate = new Date(res.getFullYear(), tValue + 1, 0).getDate();\n res.setDate(pDate < lDate ? pDate : lDate);\n }\n else {\n if (key === 'day') {\n var lastDay = new Date(res.getFullYear(), res.getMonth() + 1, 0).getDate();\n if ((tValue < 1 || tValue > lastDay)) {\n return null;\n }\n }\n // eslint-disable-next-line\n res[timeSetter[key]](tValue);\n }\n }\n }\n if (!isUndefined(desig)) {\n var hour = res.getHours();\n if (desig === 'pm') {\n res.setHours(hour + (hour === 12 ? 0 : 12));\n }\n else if (hour === 12) {\n res.setHours(0);\n }\n }\n if (!isUndefined(tzone)) {\n var tzValue = tzone - res.getTimezoneOffset();\n if (tzValue !== 0) {\n res.setMinutes(res.getMinutes() + tzValue);\n }\n }\n return res;\n };\n /**\n * Returns date parsing options for provided value along with parse and numeric options\n *\n * @param {string} value ?\n * @param {ParseOptions} parseOptions ?\n * @param {NumericOptions} num ?\n * @returns {DateParts} ?\n */\n DateParser.internalDateParse = function (value, parseOptions, num) {\n var matches = value.match(parseOptions.parserRegex);\n var retOptions = { 'hour': 0, 'minute': 0, 'second': 0 };\n if (isNullOrUndefined(matches)) {\n return null;\n }\n else {\n var props = Object.keys(parseOptions.evalposition);\n for (var _i = 0, props_1 = props; _i < props_1.length; _i++) {\n var prop = props_1[_i];\n var curObject = parseOptions.evalposition[\"\" + prop];\n var matchString = matches[curObject.pos];\n if (curObject.isNumber) {\n // eslint-disable-next-line\n retOptions[prop] = this.internalNumberParser(matchString, num);\n }\n else {\n if (prop === 'timeZone' && !isUndefined(matchString)) {\n var pos = curObject.pos;\n var val = void 0;\n var tmatch = matches[pos + 1];\n var flag = !isUndefined(tmatch);\n if (curObject.hourOnly) {\n val = this.getZoneValue(flag, tmatch, matches[pos + 4], num) * 60;\n }\n else {\n val = this.getZoneValue(flag, tmatch, matches[pos + 7], num) * 60;\n val += this.getZoneValue(flag, matches[pos + 4], matches[pos + 10], num);\n }\n if (!isNullOrUndefined(val)) {\n retOptions[\"\" + prop] = val;\n }\n }\n else {\n // eslint-disable-next-line\n matchString = ((prop === 'month') && (!parseOptions.isIslamic) && (parseOptions.culture === 'en' || parseOptions.culture === 'en-GB' || parseOptions.culture === 'en-US'))\n ? matchString[0].toUpperCase() + matchString.substring(1).toLowerCase() : matchString;\n // eslint-disable-next-line\n retOptions[prop] = parseOptions[prop][matchString];\n }\n }\n }\n if (parseOptions.hour12) {\n retOptions.hour12 = true;\n }\n }\n return retOptions;\n };\n /**\n * Returns parsed number for provided Numeric string and Numeric Options\n *\n * @param {string} value ?\n * @param {NumericOptions} option ?\n * @returns {number} ?\n */\n DateParser.internalNumberParser = function (value, option) {\n value = parser.convertValueParts(value, option.numberParseRegex, option.numericPair);\n if (latnRegex.test(value)) {\n return +value;\n }\n return null;\n };\n /**\n * Returns parsed time zone RegExp for provided hour format and time zone\n *\n * @param {string} hourFormat ?\n * @param {base.TimeZoneOptions} tZone ?\n * @param {string} nRegex ?\n * @returns {string} ?\n */\n DateParser.parseTimeZoneRegx = function (hourFormat, tZone, nRegex) {\n var pattern = tZone.gmtFormat;\n var ret;\n var cRegex = '(' + nRegex + ')' + '(' + nRegex + ')';\n var splitStr;\n ret = hourFormat.replace('+', '\\\\+');\n if (hourFormat.indexOf('HH') !== -1) {\n ret = ret.replace(/HH|mm/g, '(' + cRegex + ')');\n }\n else {\n ret = ret.replace(/H|m/g, '(' + cRegex + '?)');\n }\n // eslint-disable-next-line\n splitStr = (ret.split(';').map(function (str) {\n return pattern.replace('{0}', str);\n }));\n ret = splitStr.join('|') + '|' + tZone.gmtZeroFormat;\n return ret;\n };\n /**\n * Returns zone based value.\n *\n * @param {boolean} flag ?\n * @param {string} val1 ?\n * @param {string} val2 ?\n * @param {NumericOptions} num ?\n * @returns {number} ?\n */\n DateParser.getZoneValue = function (flag, val1, val2, num) {\n var ival = flag ? val1 : val2;\n if (!ival) {\n return 0;\n }\n var value = this.internalNumberParser(ival, num);\n if (flag) {\n return -value;\n }\n return value;\n };\n return DateParser;\n}());\nexport { DateParser };\n","import { extend, isNullOrUndefined, isBlazor, getValue } from '../util';\nimport { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nvar regExp = RegExp;\nvar parseRegex = new regExp('^([^0-9]*)' + '(([0-9,]*[0-9]+)(\\.[0-9]+)?)' + '([Ee][+-]?[0-9]+)?([^0-9]*)$');\nvar groupRegex = /,/g;\nvar keys = ['minusSign', 'infinity'];\n/**\n * Module for Number Parser.\n *\n * @private\n */\nvar NumberParser = /** @class */ (function () {\n function NumberParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberParser.numberParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numOptions;\n if ((base.formatRegex.test(option.format)) || !(option.format)) {\n extend(parseOptions, base.getProperNumericSkeleton(option.format || 'N'));\n parseOptions.custom = false;\n if (!parseOptions.fractionDigits) {\n if (option.maximumFractionDigits) {\n parseOptions.maximumFractionDigits = option.maximumFractionDigits;\n }\n }\n }\n else {\n extend(parseOptions, base.customFormat(option.format, null, null));\n }\n var numbers = getValue('numbers', dependable.parserObject);\n // eslint-disable-next-line\n numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), true, isBlazor());\n parseOptions.symbolRegex = parser.getSymbolRegex(Object.keys(numOptions.symbolMatch));\n // eslint-disable-next-line\n parseOptions.infinity = numOptions.symbolNumberSystem[keys[1]];\n var symbolpattern;\n if (!isBlazor()) {\n symbolpattern = base.getSymbolPattern(parseOptions.type, numOptions.numberSystem, dependable.numericObject, parseOptions.isAccount);\n if (symbolpattern) {\n symbolpattern = symbolpattern.replace(/\\u00A4/g, base.defaultCurrency);\n var split = symbolpattern.split(';');\n parseOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, '');\n parseOptions.pData = base.getFormatData(split[0], true, '');\n }\n }\n else {\n parseOptions.nData = extend({}, {}, getValue(parseOptions.type + 'nData', numbers));\n parseOptions.pData = extend({}, {}, getValue(parseOptions.type + 'pData', numbers));\n if (parseOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([parseOptions.pData, parseOptions.nData], getValue('currencySymbol', numbers), option.currency);\n }\n }\n return function (value) {\n return _this.getParsedNumber(value, parseOptions, numOptions);\n };\n };\n /**\n * Returns parsed number for the provided formatting options\n *\n * @param {string} value ?\n * @param {NumericParts} options ?\n * @param {NumericOptions} numOptions ?\n * @returns {number} ?\n */\n NumberParser.getParsedNumber = function (value, options, numOptions) {\n var isNegative;\n var isPercent;\n var tempValue;\n var lead;\n var end;\n var ret;\n if (value.indexOf(options.infinity) !== -1) {\n return Infinity;\n }\n else {\n value = parser.convertValueParts(value, options.symbolRegex, numOptions.symbolMatch);\n value = parser.convertValueParts(value, numOptions.numberParseRegex, numOptions.numericPair);\n value = value.indexOf('-') !== -1 ? value.replace('-.', '-0.') : value;\n if (value.indexOf('.') === 0) {\n value = '0' + value;\n }\n var matches = value.match(parseRegex);\n if (isNullOrUndefined(matches)) {\n return NaN;\n }\n lead = matches[1];\n tempValue = matches[2];\n var exponent = matches[5];\n end = matches[6];\n isNegative = options.custom ? ((lead === options.nData.nlead) && (end === options.nData.nend)) :\n ((lead.indexOf(options.nData.nlead) !== -1) && (end.indexOf(options.nData.nend) !== -1));\n isPercent = isNegative ?\n options.nData.isPercent :\n options.pData.isPercent;\n tempValue = tempValue.replace(groupRegex, '');\n if (exponent) {\n tempValue += exponent;\n }\n ret = +tempValue;\n if (options.type === 'percent' || isPercent) {\n ret = ret / 100;\n }\n if (options.custom || options.fractionDigits) {\n ret = parseFloat(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.fractionDigits));\n }\n if (options.maximumFractionDigits) {\n ret = this.convertMaxFracDigits(tempValue, options, ret, isNegative);\n }\n if (isNegative) {\n ret *= -1;\n }\n return ret;\n }\n };\n NumberParser.convertMaxFracDigits = function (value, options, ret, isNegative) {\n var decimalSplitValue = value.split('.');\n if (decimalSplitValue[1] && decimalSplitValue[1].length > options.maximumFractionDigits) {\n ret = +(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.maximumFractionDigits));\n }\n return ret;\n };\n return NumberParser;\n}());\nexport { NumberParser };\n","import { isNullOrUndefined, getValue, extend, isBlazor } from './util';\nvar Observer = /** @class */ (function () {\n function Observer(context) {\n this.ranArray = [];\n this.boundedEvents = {};\n if (isNullOrUndefined(context)) {\n return;\n }\n this.context = context;\n }\n /**\n * To attach handler for given property in current context.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Specifies the handler function to be called while event notified.\n * @param {Object} context - Specifies the context binded to the handler.\n * @param {string} id - specifies the random generated id.\n * @returns {void}\n */\n Observer.prototype.on = function (property, handler, context, id) {\n if (isNullOrUndefined(handler)) {\n return;\n }\n var cntxt = context || this.context;\n if (this.notExist(property)) {\n this.boundedEvents[\"\" + property] = [{ handler: handler, context: cntxt }];\n return;\n }\n if (!isNullOrUndefined(id)) {\n if (this.ranArray.indexOf(id) === -1) {\n this.ranArray.push(id);\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt, id: id });\n }\n }\n else if (!this.isHandlerPresent(this.boundedEvents[\"\" + property], handler)) {\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt });\n }\n };\n /**\n * To remove handlers from a event attached using on() function.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Optional argument specifies the handler function to be called while event notified.\n * @param {string} id - specifies the random generated id.\n * @returns {void} ?\n */\n Observer.prototype.off = function (property, handler, id) {\n if (this.notExist(property)) {\n return;\n }\n var curObject = getValue(property, this.boundedEvents);\n if (handler) {\n for (var i = 0; i < curObject.length; i++) {\n if (id) {\n if (curObject[parseInt(i.toString(), 10)].id === id) {\n curObject.splice(i, 1);\n var indexLocation = this.ranArray.indexOf(id);\n if (indexLocation !== -1) {\n this.ranArray.splice(indexLocation, 1);\n }\n break;\n }\n }\n else if (handler === curObject[parseInt(i.toString(), 10)].handler) {\n curObject.splice(i, 1);\n break;\n }\n }\n }\n else {\n delete this.boundedEvents[\"\" + property];\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it was failure to call.\n * @returns {void} ?\n */\n Observer.prototype.notify = function (property, argument, successHandler, errorHandler) {\n if (this.notExist(property)) {\n if (successHandler) {\n successHandler.call(this, argument);\n }\n return;\n }\n if (argument) {\n argument.name = property;\n }\n var blazor = 'Blazor';\n var curObject = getValue(property, this.boundedEvents).slice(0);\n if (window[\"\" + blazor]) {\n return this.blazorCallback(curObject, argument, successHandler, errorHandler, 0);\n }\n else {\n for (var _i = 0, curObject_1 = curObject; _i < curObject_1.length; _i++) {\n var cur = curObject_1[_i];\n cur.handler.call(cur.context, argument);\n }\n if (successHandler) {\n successHandler.call(this, argument);\n }\n }\n };\n Observer.prototype.blazorCallback = function (objs, argument, successHandler, errorHandler, index) {\n var _this = this;\n var isTrigger = index === objs.length - 1;\n if (index < objs.length) {\n var obj_1 = objs[parseInt(index.toString(), 10)];\n var promise = obj_1.handler.call(obj_1.context, argument);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n return promise;\n }\n promise.then(function (data) {\n data = typeof data === 'string' && _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data;\n extend(argument, argument, data, true);\n if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return _this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }).catch(function (data) {\n if (errorHandler) {\n errorHandler.call(obj_1.context, typeof data === 'string' &&\n _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data);\n }\n });\n }\n else if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }\n };\n // eslint-disable-next-line\n Observer.prototype.dateReviver = function (key, value) {\n var dPattern = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\n if (isBlazor && typeof value === 'string' && value.match(dPattern) !== null) {\n return (new Date(value));\n }\n return (value);\n };\n Observer.prototype.isJson = function (value) {\n try {\n JSON.parse(value);\n }\n catch (e) {\n return false;\n }\n return true;\n };\n /**\n * To destroy handlers in the event\n *\n * @returns {void} ?\n */\n Observer.prototype.destroy = function () {\n this.boundedEvents = this.context = undefined;\n };\n /**\n * Returns if the property exists.\n *\n * @param {string} prop ?\n * @returns {boolean} ?\n */\n Observer.prototype.notExist = function (prop) {\n // eslint-disable-next-line\n return this.boundedEvents.hasOwnProperty(prop) === false || this.boundedEvents[prop].length <= 0;\n };\n /**\n * Returns if the handler is present.\n *\n * @param {BoundOptions[]} boundedEvents ?\n * @param {Function} handler ?\n * @returns {boolean} ?\n */\n Observer.prototype.isHandlerPresent = function (boundedEvents, handler) {\n for (var _i = 0, boundedEvents_1 = boundedEvents; _i < boundedEvents_1.length; _i++) {\n var cur = boundedEvents_1[_i];\n if (cur.handler === handler) {\n return true;\n }\n }\n return false;\n };\n return Observer;\n}());\nexport { Observer };\n","import { DateFormat } from './intl/date-formatter';\nimport { NumberFormat } from './intl/number-formatter';\nimport { DateParser } from './intl/date-parser';\nimport { NumberParser } from './intl/number-parser';\nimport { IntlBase } from './intl/intl-base';\nimport { extend, getValue, isBlazor } from './util';\nimport { Observer } from './observer';\n/**\n * Specifies the observer used for external change detection.\n */\nexport var onIntlChange = new Observer();\n/**\n * Specifies the default rtl status for EJ2 components.\n */\nexport var rightToLeft = false;\n/**\n * Specifies the CLDR data loaded for internationalization functionalities.\n *\n * @private\n */\nexport var cldrData = {};\n/**\n * Specifies the default culture value to be considered.\n *\n * @private\n */\nexport var defaultCulture = 'en-US';\n/**\n * Specifies default currency code to be considered\n *\n * @private\n */\nexport var defaultCurrencyCode = 'USD';\nvar mapper = ['numericObject', 'dateObject'];\n/**\n * Internationalization class provides support to parse and format the number and date object to the desired format.\n * ```typescript\n * // To set the culture globally\n * setCulture('en-GB');\n *\n * // To set currency code globally\n * setCurrencyCode('EUR');\n *\n * //Load cldr data\n * loadCldr(gregorainData);\n * loadCldr(timeZoneData);\n * loadCldr(numbersData);\n * loadCldr(numberSystemData);\n *\n * // To use formatter in component side\n * let Intl:Internationalization = new Internationalization();\n *\n * // Date formatting\n * let dateFormatter: Function = Intl.getDateFormat({skeleton:'long',type:'dateTime'});\n * dateFormatter(new Date('11/2/2016'));\n * dateFormatter(new Date('25/2/2030'));\n * Intl.formatDate(new Date(),{skeleton:'E'});\n *\n * //Number formatting\n * let numberFormatter: Function = Intl.getNumberFormat({skeleton:'C5'})\n * numberFormatter(24563334);\n * Intl.formatNumber(123123,{skeleton:'p2'});\n *\n * // Date parser\n * let dateParser: Function = Intl.getDateParser({skeleton:'short',type:'time'});\n * dateParser('10:30 PM');\n * Intl.parseDate('10',{skeleton:'H'});\n * ```\n */\nvar Internationalization = /** @class */ (function () {\n function Internationalization(cultureName) {\n if (cultureName) {\n this.culture = cultureName;\n }\n }\n /**\n * Returns the format function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateFormat = function (options) {\n return DateFormat.dateFormat(this.getCulture(), options || { type: 'date', skeleton: 'short' }, cldrData);\n };\n /**\n * Returns the format function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberFormat = function (options) {\n if (options && !options.currency) {\n options.currency = defaultCurrencyCode;\n }\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberFormat.numberFormatter(this.getCulture(), options || {}, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateParser = function (options) {\n return DateParser.dateParser(this.getCulture(), options || { skeleton: 'short', type: 'date' }, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberParser = function (options) {\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberParser.numberParser(this.getCulture(), options || { format: 'N' }, cldrData);\n };\n /**\n * Returns the formatted string based on format options.\n *\n * @param {number} value - Specifies the number to format.\n * @param {NumberFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatNumber = function (value, option) {\n return this.getNumberFormat(option)(value);\n };\n /**\n * Returns the formatted date string based on format options.\n *\n * @param {Date} value - Specifies the number to format.\n * @param {DateFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatDate = function (value, option) {\n return this.getDateFormat(option)(value);\n };\n /**\n * Returns the date object for given date string and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {DateFormatOptions} option - Specifies the parse options in which the date string will be parsed.\n * @returns {Date} ?\n */\n Internationalization.prototype.parseDate = function (value, option) {\n return this.getDateParser(option)(value);\n };\n /**\n * Returns the number object from the given string value and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {NumberFormatOptions} option - Specifies the parse options in which the string number will be parsed.\n * @returns {number} ?\n */\n Internationalization.prototype.parseNumber = function (value, option) {\n return this.getNumberParser(option)(value);\n };\n /**\n * Returns Native Date Time Pattern\n *\n * @param {DateFormatOptions} option - Specifies the parse options for resultant date time pattern.\n * @param {boolean} isExcelFormat - Specifies format value to be converted to excel pattern.\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getDatePattern = function (option, isExcelFormat) {\n return IntlBase.getActualDateTimeFormat(this.getCulture(), option, cldrData, isExcelFormat);\n };\n /**\n * Returns Native Number Pattern\n *\n * @param {NumberFormatOptions} option - Specifies the parse options for resultant number pattern.\n * @param {boolean} isExcel ?\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getNumberPattern = function (option, isExcel) {\n return IntlBase.getActualNumberFormat(this.getCulture(), option, cldrData, isExcel);\n };\n /**\n * Returns the First Day of the Week\n *\n * @returns {number} ?\n */\n Internationalization.prototype.getFirstDayOfWeek = function () {\n return IntlBase.getWeekData(this.getCulture(), cldrData);\n };\n /**\n * Returns the culture\n *\n * @returns {string} ?\n */\n Internationalization.prototype.getCulture = function () {\n return this.culture || defaultCulture;\n };\n return Internationalization;\n}());\nexport { Internationalization };\n/**\n * Set the default culture to all EJ2 components\n *\n * @param {string} cultureName - Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCulture(cultureName) {\n defaultCulture = cultureName;\n onIntlChange.notify('notifyExternalChange', { 'locale': defaultCulture });\n}\n/**\n * Set the default currency code to all EJ2 components\n *\n * @param {string} currencyCode Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCurrencyCode(currencyCode) {\n defaultCurrencyCode = currencyCode;\n onIntlChange.notify('notifyExternalChange', { 'currencyCode': defaultCurrencyCode });\n}\n/**\n * Load the CLDR data into context\n *\n * @param {Object[]} data Specifies the CLDR data's to be used for formatting and parser.\n * @returns {void} ?\n */\nexport function loadCldr() {\n var data = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {\n var obj = data_1[_a];\n extend(cldrData, obj, {}, true);\n }\n}\n/**\n * To enable or disable RTL functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable rtl option.\n * @returns {void} ?\n */\nexport function enableRtl(status) {\n if (status === void 0) { status = true; }\n rightToLeft = status;\n onIntlChange.notify('notifyExternalChange', { enableRtl: rightToLeft });\n}\n/**\n * To get the numeric CLDR object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} type ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getNumericObject(locale, type) {\n // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true)[mapper[0]];\n // eslint-disable-next-line\n var dateObject = IntlBase.getDependables(cldrData, locale, '')[mapper[1]];\n var numSystem = getValue('defaultNumberingSystem', numObject);\n var symbPattern = isBlazor() ? getValue('numberSymbols', numObject) : getValue('symbols-numberSystem-' + numSystem, numObject);\n var pattern = IntlBase.getSymbolPattern(type || 'decimal', numSystem, numObject, false);\n return extend(symbPattern, IntlBase.getFormatData(pattern, true, '', true), { 'dateSeparator': IntlBase.getDateSeparator(dateObject) });\n}\n/**\n * To get the numeric CLDR number base object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} currency - Specifies the currency for which numericObject to be returned.\n * @returns {string} ?\n * @ignore\n * @private\n */\nexport function getNumberDependable(locale, currency) {\n // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true);\n // eslint-disable-next-line\n return IntlBase.getCurrencySymbol(numObject.numericObject, currency);\n}\n/**\n * To get the default date CLDR object.\n *\n * @param {string} mode ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getDefaultDateObject(mode) {\n // eslint-disable-next-line\n return IntlBase.getDependables(cldrData, '', mode, false)[mapper[1]];\n}\n","import { defaultCurrencyCode } from '../internationalization';\nimport { getValue, isNullOrUndefined, extend, isBlazor } from '../util';\nimport { ParserBase as parser, getBlazorCurrencySymbol } from './parser-base';\nimport { DateFormat } from './date-formatter';\nimport { NumberFormat } from './number-formatter';\nimport { isUndefined } from '../util';\nvar regExp = RegExp;\nexport var blazorCultureFormats = {\n 'en-US': {\n 'd': 'M/d/y',\n 'D': 'EEEE, MMMM d, y',\n 'f': 'EEEE, MMMM d, y h:mm a',\n 'F': 'EEEE, MMMM d, y h:mm:s a',\n 'g': 'M/d/y h:mm a',\n 'G': 'M/d/yyyy h:mm:ss tt',\n 'm': 'MMMM d',\n 'M': 'MMMM d',\n 'r': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 'R': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 's': 'yyyy\\'-\\'MM\\'-\\'dd\\'T\\'HH\\':\\'mm\\':\\'ss',\n 't': 'h:mm tt',\n 'T': 'h:m:s tt',\n 'u': 'yyyy\\'-\\'MM\\'-\\'dd HH\\':\\'mm\\':\\'ss\\'Z\\'',\n 'U': 'dddd, MMMM d, yyyy h:mm:ss tt',\n 'y': 'MMMM yyyy',\n 'Y': 'MMMM yyyy'\n }\n};\n/**\n * Date base common constants and function for date parser and formatter.\n */\n// eslint-disable-next-line\nexport var IntlBase;\n(function (IntlBase) {\n /* eslint-disable */\n // tslint:disable-next-line:max-line-length.\n IntlBase.negativeDataRegex = /^(('[^']+'|''|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.customRegex = /^(('[^']+'|''|[^*#@0,.])*)(\\*.)?((([0#,]*[0,]*[0#]*[0#\\ ]*)(\\.[0#]*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.latnParseRegex = /0|1|2|3|4|5|6|7|8|9/g;\n var fractionRegex = /[0-9]/g;\n IntlBase.defaultCurrency = '$';\n var mapper = ['infinity', 'nan', 'group', 'decimal'];\n var patternRegex = /G|M|L|H|c|'| a|yy|y|EEEE|E/g;\n var patternMatch = {\n 'G': '',\n 'M': 'm',\n 'L': 'm',\n 'H': 'h',\n 'c': 'd',\n '\\'': '\"',\n ' a': ' AM/PM',\n 'yy': 'yy',\n 'y': 'yyyy',\n 'EEEE': 'dddd',\n 'E': 'ddd'\n };\n IntlBase.dateConverterMapper = /dddd|ddd/ig;\n var defaultFirstDay = 'sun';\n IntlBase.islamicRegex = /^islamic/;\n var firstDayMapper = {\n 'sun': 0,\n 'mon': 1,\n 'tue': 2,\n 'wed': 3,\n 'thu': 4,\n 'fri': 5,\n 'sat': 6\n };\n IntlBase.formatRegex = new regExp(\"(^[ncpae]{1})([0-1]?[0-9]|20)?$\", \"i\");\n IntlBase.currencyFormatRegex = new regExp(\"(^[ca]{1})([0-1]?[0-9]|20)?$\", \"i\");\n IntlBase.curWithoutNumberRegex = /(c|a)$/ig;\n var typeMapper = {\n '$': 'isCurrency',\n '%': 'isPercent',\n '-': 'isNegative',\n 0: 'nlead',\n 1: 'nend'\n };\n IntlBase.dateParseRegex = /([a-z])\\1*|'([^']|'')+'|''|./gi;\n IntlBase.basicPatterns = ['short', 'medium', 'long', 'full'];\n /* tslint:disable:quotemark */\n IntlBase.defaultObject = {\n 'dates': {\n 'calendars': {\n 'gregorian': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'narrow': {\n '1': 'J',\n '2': 'F',\n '3': 'M',\n '4': 'A',\n '5': 'M',\n '6': 'J',\n '7': 'J',\n '8': 'A',\n '9': 'S',\n '10': 'O',\n '11': 'N',\n '12': 'D'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'Before Christ',\n '0-alt-variant': 'Before Common Era',\n '1': 'Anno Domini',\n '1-alt-variant': 'Common Era'\n },\n 'eraAbbr': {\n '0': 'BC',\n '0-alt-variant': 'BCE',\n '1': 'AD',\n '1-alt-variant': 'CE'\n },\n 'eraNarrow': {\n '0': 'B',\n '0-alt-variant': 'BCE',\n '1': 'A',\n '1-alt-variant': 'CE'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y',\n 'long': 'MMMM d, y',\n 'medium': 'MMM d, y',\n 'short': 'M/d/yy'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'hmsv': 'h:mm:ss a v',\n 'Hmsv': 'HH:mm:ss v',\n 'hmv': 'h:mm a v',\n 'Hmv': 'HH:mm v',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y',\n 'yM': 'M/y',\n 'yMd': 'M/d/y',\n 'yMEd': 'E, M/d/y',\n 'yMMM': 'MMM y',\n 'yMMMd': 'MMM d, y',\n 'yMMMEd': 'E, MMM d, y',\n 'yMMMM': 'MMMM y'\n }\n }\n },\n 'islamic': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Muh.',\n '2': 'Saf.',\n '3': 'Rab. I',\n '4': 'Rab. II',\n '5': 'Jum. I',\n '6': 'Jum. II',\n '7': 'Raj.',\n '8': 'Sha.',\n '9': 'Ram.',\n '10': 'Shaw.',\n '11': 'Dhuʻl-Q.',\n '12': 'Dhuʻl-H.'\n },\n 'narrow': {\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 '10': '10',\n '11': '11',\n '12': '12'\n },\n 'wide': {\n '1': 'Muharram',\n '2': 'Safar',\n '3': 'Rabiʻ I',\n '4': 'Rabiʻ II',\n '5': 'Jumada I',\n '6': 'Jumada II',\n '7': 'Rajab',\n '8': 'Shaʻban',\n '9': 'Ramadan',\n '10': 'Shawwal',\n '11': 'Dhuʻl-Qiʻdah',\n '12': 'Dhuʻl-Hijjah'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'AH'\n },\n 'eraAbbr': {\n '0': 'AH'\n },\n 'eraNarrow': {\n '0': 'AH'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y G',\n 'long': 'MMMM d, y G',\n 'medium': 'MMM d, y G',\n 'short': 'M/d/y GGGGG'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y G',\n 'yyyy': 'y G',\n 'yyyyM': 'M/y GGGGG',\n 'yyyyMd': 'M/d/y GGGGG',\n 'yyyyMEd': 'E, M/d/y GGGGG',\n 'yyyyMMM': 'MMM y G',\n 'yyyyMMMd': 'MMM d, y G',\n 'yyyyMMMEd': 'E, MMM d, y G',\n 'yyyyMMMM': 'MMMM y G',\n 'yyyyQQQ': 'QQQ y G',\n 'yyyyQQQQ': 'QQQQ y G'\n }\n }\n }\n },\n 'timeZoneNames': {\n 'hourFormat': '+HH:mm;-HH:mm',\n 'gmtFormat': 'GMT{0}',\n 'gmtZeroFormat': 'GMT'\n }\n },\n 'numbers': {\n 'currencies': {\n 'USD': {\n 'displayName': 'US Dollar',\n 'symbol': '$',\n 'symbol-alt-narrow': '$'\n },\n 'EUR': {\n 'displayName': 'Euro',\n 'symbol': '€',\n 'symbol-alt-narrow': '€'\n },\n 'GBP': {\n 'displayName': 'British Pound',\n 'symbol-alt-narrow': '£'\n }\n },\n 'defaultNumberingSystem': 'latn',\n 'minimumGroupingDigits': '1',\n 'symbols-numberSystem-latn': {\n 'decimal': '.',\n 'group': ',',\n 'list': ';',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'exponential': 'E',\n 'superscriptingExponent': '×',\n 'perMille': '‰',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'timeSeparator': ':'\n },\n 'decimalFormats-numberSystem-latn': {\n 'standard': '#,##0.###'\n },\n 'percentFormats-numberSystem-latn': {\n 'standard': '#,##0%'\n },\n 'currencyFormats-numberSystem-latn': {\n 'standard': '¤#,##0.00',\n 'accounting': '¤#,##0.00;(¤#,##0.00)'\n },\n 'scientificFormats-numberSystem-latn': {\n 'standard': '#E0'\n }\n }\n };\n IntlBase.blazorDefaultObject = {\n 'numbers': {\n 'mapper': {\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 },\n 'mapperDigits': '0123456789',\n 'numberSymbols': {\n 'decimal': '.',\n 'group': ',',\n 'plusSign': '+',\n 'minusSign': '-',\n 'percentSign': '%',\n 'nan': 'NaN',\n 'timeSeparator': ':',\n 'infinity': '∞'\n },\n 'timeSeparator': ':',\n 'currencySymbol': '$',\n 'currencypData': {\n 'nlead': '$',\n 'nend': '',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentpData': {\n 'nlead': '',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentnData': {\n 'nlead': '-',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'currencynData': {\n 'nlead': '($',\n 'nend': ')',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalnData': {\n 'nlead': '-',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalpData': {\n 'nlead': '',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n }\n },\n 'dates': {\n 'dayPeriods': {\n 'am': 'AM',\n 'pm': 'PM'\n },\n 'dateSeperator': '/',\n 'days': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n },\n 'months': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n },\n 'eras': {\n '1': 'AD'\n }\n }\n };\n /* tslint:enable:quotemark */\n IntlBase.monthIndex = {\n 3: 'abbreviated',\n 4: 'wide',\n 5: 'narrow',\n 1: 'abbreviated'\n };\n /**\n *\n */\n IntlBase.month = 'months';\n IntlBase.days = 'days';\n /**\n * Default numerber Object\n */\n IntlBase.patternMatcher = {\n C: 'currency',\n P: 'percent',\n N: 'decimal',\n A: 'currency',\n E: 'scientific'\n };\n /**\n * Returns the resultant pattern based on the skeleton, dateObject and the type provided\n *\n * @private\n * @param {string} skeleton ?\n * @param {Object} dateObject ?\n * @param {string} type ?\n * @param {boolean} isIslamic ?\n * @param {string} blazorCulture ?\n * @returns {string} ?\n */\n function getResultantPattern(skeleton, dateObject, type, isIslamic, blazorCulture) {\n var resPattern;\n var iType = type || 'date';\n if (blazorCulture) {\n resPattern = compareBlazorDateFormats({ skeleton: skeleton }, blazorCulture).format ||\n compareBlazorDateFormats({ skeleton: 'd' }, 'en-US').format;\n }\n else {\n if (IntlBase.basicPatterns.indexOf(skeleton) !== -1) {\n resPattern = getValue(iType + 'Formats.' + skeleton, dateObject);\n if (iType === 'dateTime') {\n var dPattern = getValue('dateFormats.' + skeleton, dateObject);\n var tPattern = getValue('timeFormats.' + skeleton, dateObject);\n resPattern = resPattern.replace('{1}', dPattern).replace('{0}', tPattern);\n }\n }\n else {\n resPattern = getValue('dateTimeFormats.availableFormats.' + skeleton, dateObject);\n }\n if (isUndefined(resPattern) && skeleton === 'yMd') {\n resPattern = 'M/d/y';\n }\n }\n return resPattern;\n }\n IntlBase.getResultantPattern = getResultantPattern;\n /**\n * Returns the dependable object for provided cldr data and culture\n *\n * @private\n * @param {Object} cldr ?\n * @param {string} culture ?\n * @param {string} mode ?\n * @param {boolean} isNumber ?\n * @returns {any} ?\n */\n function getDependables(cldr, culture, mode, isNumber) {\n var ret = {};\n var calendartype = mode || 'gregorian';\n ret.parserObject = parser.getMainObject(cldr, culture) || (isBlazor() ? IntlBase.blazorDefaultObject : IntlBase.defaultObject);\n if (isNumber) {\n ret.numericObject = getValue('numbers', ret.parserObject);\n }\n else {\n var dateString = isBlazor() ? 'dates' : ('dates.calendars.' + calendartype);\n ret.dateObject = getValue(dateString, ret.parserObject);\n }\n return ret;\n }\n IntlBase.getDependables = getDependables;\n /**\n * Returns the symbol pattern for provided parameters\n *\n * @private\n * @param {string} type ?\n * @param {string} numSystem ?\n * @param {Object} obj ?\n * @param {boolean} isAccount ?\n * @returns {string} ?\n */\n function getSymbolPattern(type, numSystem, obj, isAccount) {\n return getValue(type + 'Formats-numberSystem-' +\n numSystem + (isAccount ? '.accounting' : '.standard'), obj) || (isAccount ? getValue(type + 'Formats-numberSystem-' +\n numSystem + '.standard', obj) : '');\n }\n IntlBase.getSymbolPattern = getSymbolPattern;\n /**\n *\n * @param {string} format ?\n * @returns {string} ?\n */\n function ConvertDateToWeekFormat(format) {\n var convertMapper = format.match(IntlBase.dateConverterMapper);\n if (convertMapper && isBlazor()) {\n var tempString = convertMapper[0].length === 3 ? 'EEE' : 'EEEE';\n return format.replace(IntlBase.dateConverterMapper, tempString);\n }\n return format;\n }\n IntlBase.ConvertDateToWeekFormat = ConvertDateToWeekFormat;\n /**\n *\n * @param {DateFormatOptions} formatOptions ?\n * @param {string} culture ?\n * @returns {DateFormatOptions} ?\n */\n function compareBlazorDateFormats(formatOptions, culture) {\n var format = formatOptions.format || formatOptions.skeleton;\n var curFormatMapper = getValue((culture || 'en-US') + '.' + format, blazorCultureFormats);\n if (!curFormatMapper) {\n curFormatMapper = getValue('en-US.' + format, blazorCultureFormats);\n }\n if (curFormatMapper) {\n curFormatMapper = ConvertDateToWeekFormat(curFormatMapper);\n formatOptions.format = curFormatMapper.replace(/tt/, 'a');\n }\n return formatOptions;\n }\n IntlBase.compareBlazorDateFormats = compareBlazorDateFormats;\n /**\n * Returns proper numeric skeleton\n *\n * @private\n * @param {string} skeleton ?\n * @returns {any} ?\n */\n function getProperNumericSkeleton(skeleton) {\n var matches = skeleton.match(IntlBase.formatRegex);\n var ret = {};\n var pattern = matches[1].toUpperCase();\n ret.isAccount = (pattern === 'A');\n // eslint-disable-next-line\n ret.type = IntlBase.patternMatcher[pattern];\n if (skeleton.length > 1) {\n ret.fractionDigits = parseInt(matches[2], 10);\n }\n return ret;\n }\n IntlBase.getProperNumericSkeleton = getProperNumericSkeleton;\n /**\n * Returns format data for number formatting like minimum fraction, maximum fraction, etc..,\n *\n * @private\n * @param {string} pattern ?\n * @param {boolean} needFraction ?\n * @param {string} cSymbol ?\n * @param {boolean} fractionOnly ?\n * @returns {any} ?\n */\n function getFormatData(pattern, needFraction, cSymbol, fractionOnly) {\n var nData = fractionOnly ? {} : { nlead: '', nend: '' };\n var match = pattern.match(IntlBase.customRegex);\n if (match) {\n if (!fractionOnly) {\n nData.nlead = changeCurrencySymbol(match[1], cSymbol);\n nData.nend = changeCurrencySymbol(match[10], cSymbol);\n nData.groupPattern = match[4];\n }\n var fraction = match[7];\n if (fraction && needFraction) {\n var fmatch = fraction.match(fractionRegex);\n if (!isNullOrUndefined(fmatch)) {\n nData.minimumFraction = fmatch.length;\n }\n else {\n nData.minimumFraction = 0;\n }\n nData.maximumFraction = fraction.length - 1;\n }\n }\n return nData;\n }\n IntlBase.getFormatData = getFormatData;\n /**\n * Changes currency symbol\n *\n * @private\n * @param {string} val ?\n * @param {string} sym ?\n * @returns {string} ?\n */\n function changeCurrencySymbol(val, sym) {\n if (val) {\n return val.replace(IntlBase.defaultCurrency, sym);\n }\n return '';\n }\n IntlBase.changeCurrencySymbol = changeCurrencySymbol;\n /**\n * Returns currency symbol based on currency code ?\n *\n * @private\n * @param {Object} numericObject ?\n * @param {string} currencyCode ?\n * @param {string} altSymbol ?\n * @returns {string} ?\n */\n function getCurrencySymbol(numericObject, currencyCode, altSymbol) {\n var symbol = altSymbol ? ('.' + altSymbol) : '.symbol';\n var getCurrency = getValue('currencies.' + currencyCode + symbol, numericObject) ||\n getValue('currencies.' + currencyCode + '.symbol-alt-narrow', numericObject) || '$';\n return getCurrency;\n }\n IntlBase.getCurrencySymbol = getCurrencySymbol;\n /**\n * Returns formatting options for custom number format\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {any} obj ?\n * @returns {any} ?\n */\n function customFormat(format, dOptions, obj) {\n var options = {};\n var formatSplit = format.split(';');\n var data = ['pData', 'nData', 'zeroData'];\n for (var i = 0; i < formatSplit.length; i++) {\n // eslint-disable-next-line\n options[data[i]] = customNumberFormat(formatSplit[i], dOptions, obj);\n }\n if (isNullOrUndefined(options.nData)) {\n options.nData = extend({}, options.pData);\n options.nData.nlead = isNullOrUndefined(dOptions) ? '-' + options.nData.nlead : dOptions.minusSymbol + options.nData.nlead;\n }\n return options;\n }\n IntlBase.customFormat = customFormat;\n /**\n * Returns custom formatting options\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {Object} numObject ?\n * @returns {any} ?\n */\n function customNumberFormat(format, dOptions, numObject) {\n var cOptions = { type: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 };\n var pattern = format.match(IntlBase.customRegex);\n if (isNullOrUndefined(pattern) || (pattern[5] === '' && format !== 'N/A')) {\n cOptions.type = undefined;\n return cOptions;\n }\n cOptions.nlead = pattern[1];\n cOptions.nend = pattern[10];\n var integerPart = pattern[6];\n var spaceCapture = integerPart.match(/\\ $/g) ? true : false;\n var spaceGrouping = integerPart.replace(/\\ $/g, '').indexOf(' ') !== -1;\n cOptions.useGrouping = integerPart.indexOf(',') !== -1 || spaceGrouping;\n integerPart = integerPart.replace(/,/g, '');\n var fractionPart = pattern[7];\n if (integerPart.indexOf('0') !== -1) {\n cOptions.minimumIntegerDigits = integerPart.length - integerPart.indexOf('0');\n }\n if (!isNullOrUndefined(fractionPart)) {\n cOptions.minimumFractionDigits = fractionPart.lastIndexOf('0');\n cOptions.maximumFractionDigits = fractionPart.lastIndexOf('#');\n if (cOptions.minimumFractionDigits === -1) {\n cOptions.minimumFractionDigits = 0;\n }\n if (cOptions.maximumFractionDigits === -1 || cOptions.maximumFractionDigits < cOptions.minimumFractionDigits) {\n cOptions.maximumFractionDigits = cOptions.minimumFractionDigits;\n }\n }\n if (!isNullOrUndefined(dOptions)) {\n dOptions.isCustomFormat = true;\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '$', dOptions.currencySymbol));\n if (!cOptions.isCurrency) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', dOptions.percentSymbol));\n }\n }\n else {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', '%'));\n }\n if (!isNullOrUndefined(numObject)) {\n var symbolPattern = getSymbolPattern(cOptions.type, dOptions.numberMapper.numberSystem, numObject, false);\n if (cOptions.useGrouping) {\n // eslint-disable-next-line\n cOptions.groupSeparator = spaceGrouping ? ' ' : dOptions.numberMapper.numberSymbols[mapper[2]];\n cOptions.groupData = NumberFormat.getGroupingDetails(symbolPattern.split(';')[0]);\n }\n cOptions.nlead = cOptions.nlead.replace(/'/g, '');\n cOptions.nend = spaceCapture ? ' ' + cOptions.nend.replace(/'/g, '') : cOptions.nend.replace(/'/g, '');\n }\n return cOptions;\n }\n IntlBase.customNumberFormat = customNumberFormat;\n /**\n * Returns formatting options for currency or percent type\n *\n * @private\n * @param {string[]} parts ?\n * @param {string} actual ?\n * @param {string} symbol ?\n * @returns {any} ?\n */\n function isCurrencyPercent(parts, actual, symbol) {\n var options = { nlead: parts[0], nend: parts[1] };\n for (var i = 0; i < 2; i++) {\n var part = parts[parseInt(i.toString(), 10)];\n var loc = part.indexOf(actual);\n if ((loc !== -1) && ((loc < part.indexOf('\\'')) || (loc > part.lastIndexOf('\\'')))) {\n // eslint-disable-next-line\n options[typeMapper[i]] = part.substr(0, loc) + symbol + part.substr(loc + 1);\n // eslint-disable-next-line\n options[typeMapper[actual]] = true;\n options.type = options.isCurrency ? 'currency' : 'percent';\n break;\n }\n }\n return options;\n }\n IntlBase.isCurrencyPercent = isCurrencyPercent;\n /**\n * Returns culture based date separator\n *\n * @private\n * @param {Object} dateObj ?\n * @returns {string} ?\n */\n function getDateSeparator(dateObj) {\n var value = (getValue('dateFormats.short', dateObj) || '').match(/[d‏M‏]([^d‏M])[d‏M‏]/i);\n return value ? value[1] : '/';\n }\n IntlBase.getDateSeparator = getDateSeparator;\n /**\n * Returns Native Date Time pattern\n *\n * @private\n * @param {string} culture ?\n * @param {DateFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcelFormat ?\n * @returns {string} ?\n */\n function getActualDateTimeFormat(culture, options, cldr, isExcelFormat) {\n var dependable = getDependables(cldr, culture, options.calendar);\n if (isBlazor()) {\n options = compareBlazorDateFormats(options, culture);\n }\n var actualPattern = options.format || getResultantPattern(options.skeleton, dependable.dateObject, options.type);\n if (isExcelFormat) {\n actualPattern = actualPattern.replace(patternRegex, function (pattern) {\n // eslint-disable-next-line\n return patternMatch[pattern];\n });\n if (actualPattern.indexOf('z') !== -1) {\n var tLength = actualPattern.match(/z/g).length;\n var timeZonePattern = void 0;\n var options_1 = { 'timeZone': {} };\n options_1.numMapper = parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n options_1.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n var value = new Date();\n var timezone = value.getTimezoneOffset();\n var pattern = (tLength < 4) ? '+H;-H' : options_1.timeZone.hourFormat;\n pattern = pattern.replace(/:/g, options_1.numMapper.timeSeparator);\n if (timezone === 0) {\n timeZonePattern = options_1.timeZone.gmtZeroFormat;\n }\n else {\n timeZonePattern = DateFormat.getTimeZoneValue(timezone, pattern);\n timeZonePattern = options_1.timeZone.gmtFormat.replace(/\\{0\\}/, timeZonePattern);\n }\n actualPattern = actualPattern.replace(/[z]+/, '\"' + timeZonePattern + '\"');\n }\n actualPattern = actualPattern.replace(/ $/, '');\n }\n return actualPattern;\n }\n IntlBase.getActualDateTimeFormat = getActualDateTimeFormat;\n /**\n *\n * @param {string} actual ?\n * @param {any} option ?\n * @returns {any} ?\n */\n // eslint-disable-next-line\n function processSymbol(actual, option) {\n if (actual.indexOf(',') !== -1) {\n // eslint-disable-next-line\n var split = actual.split(',');\n actual = (split[0] + getValue('numberMapper.numberSymbols.group', option) +\n split[1].replace('.', getValue('numberMapper.numberSymbols.decimal', option)));\n }\n else {\n actual = actual.replace('.', getValue('numberMapper.numberSymbols.decimal', option));\n }\n return actual;\n }\n /**\n * Returns Native Number pattern\n *\n * @private\n * @param {string} culture ?\n * @param {NumberFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcel ?\n * @returns {string} ?\n */\n function getActualNumberFormat(culture, options, cldr, isExcel) {\n var dependable = getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numrericObject = dependable.numericObject;\n var minFrac;\n var curObj = {};\n var curMatch = (options.format || '').match(IntlBase.currencyFormatRegex);\n var type = IntlBase.formatRegex.test(options.format) ? getProperNumericSkeleton(options.format || 'N') : {};\n var dOptions = {};\n if (curMatch) {\n dOptions.numberMapper = isBlazor() ?\n extend({}, dependable.numericObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n var curCode = isBlazor() ? getValue('currencySymbol', dependable.numericObject) :\n getCurrencySymbol(dependable.numericObject, options.currency || defaultCurrencyCode, options.altSymbol);\n var symbolPattern = getSymbolPattern('currency', dOptions.numberMapper.numberSystem, dependable.numericObject, (/a/i).test(options.format));\n symbolPattern = symbolPattern.replace(/\\u00A4/g, curCode);\n var split = symbolPattern.split(';');\n curObj.hasNegativePattern = isBlazor() ? true : (split.length > 1);\n curObj.nData = isBlazor() ? getValue(type.type + 'nData', numrericObject) :\n getFormatData(split[1] || '-' + split[0], true, curCode);\n curObj.pData = isBlazor() ? getValue(type.type + 'pData', numrericObject) :\n getFormatData(split[0], false, curCode);\n if (!curMatch[2] && !options.minimumFractionDigits && !options.maximumFractionDigits) {\n minFrac = getFormatData(symbolPattern.split(';')[0], true, '', true).minimumFraction;\n }\n }\n var actualPattern;\n if ((IntlBase.formatRegex.test(options.format)) || !(options.format)) {\n extend(parseOptions, getProperNumericSkeleton(options.format || 'N'));\n parseOptions.custom = false;\n actualPattern = '###0';\n if (parseOptions.fractionDigits || options.minimumFractionDigits || options.maximumFractionDigits || minFrac) {\n var defaultMinimum = 0;\n if (parseOptions.fractionDigits) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseOptions.fractionDigits;\n }\n actualPattern = fractionDigitsPattern(actualPattern, minFrac || parseOptions.fractionDigits ||\n options.minimumFractionDigits || defaultMinimum, options.maximumFractionDigits || defaultMinimum);\n }\n if (options.minimumIntegerDigits) {\n actualPattern = minimumIntegerPattern(actualPattern, options.minimumIntegerDigits);\n }\n if (options.useGrouping) {\n actualPattern = groupingPattern(actualPattern);\n }\n if (parseOptions.type === 'currency' || (parseOptions.type && isBlazor())) {\n if (isBlazor() && parseOptions.type !== 'currency') {\n curObj.pData = getValue(parseOptions.type + 'pData', numrericObject);\n curObj.nData = getValue(parseOptions.type + 'nData', numrericObject);\n }\n var cPattern = actualPattern;\n actualPattern = curObj.pData.nlead + cPattern + curObj.pData.nend;\n if (curObj.hasNegativePattern || isBlazor()) {\n actualPattern += ';' + curObj.nData.nlead + cPattern + curObj.nData.nend;\n }\n }\n if (parseOptions.type === 'percent' && !isBlazor()) {\n actualPattern += ' %';\n }\n }\n else {\n actualPattern = options.format.replace(/'/g, '\"');\n }\n if (Object.keys(dOptions).length > 0) {\n actualPattern = !isExcel ? processSymbol(actualPattern, dOptions) : actualPattern;\n }\n return actualPattern;\n }\n IntlBase.getActualNumberFormat = getActualNumberFormat;\n /**\n *\n * @param {string} pattern ?\n * @param {number} minDigits ?\n * @param {number} maxDigits ?\n * @returns {string} ?\n */\n function fractionDigitsPattern(pattern, minDigits, maxDigits) {\n pattern += '.';\n for (var a = 0; a < minDigits; a++) {\n pattern += '0';\n }\n if (minDigits < maxDigits) {\n var diff = maxDigits - minDigits;\n for (var b = 0; b < diff; b++) {\n pattern += '#';\n }\n }\n return pattern;\n }\n IntlBase.fractionDigitsPattern = fractionDigitsPattern;\n /**\n *\n * @param {string} pattern ?\n * @param {number} digits ?\n * @returns {string} ?\n */\n function minimumIntegerPattern(pattern, digits) {\n var temp = pattern.split('.');\n var integer = '';\n for (var x = 0; x < digits; x++) {\n integer += '0';\n }\n return temp[1] ? (integer + '.' + temp[1]) : integer;\n }\n IntlBase.minimumIntegerPattern = minimumIntegerPattern;\n /**\n *\n * @param {string} pattern ?\n * @returns {string} ?\n */\n function groupingPattern(pattern) {\n var temp = pattern.split('.');\n var integer = temp[0];\n var no = 3 - integer.length % 3;\n var hash = (no && no === 1) ? '#' : (no === 2 ? '##' : '');\n integer = hash + integer;\n pattern = '';\n for (var x = integer.length - 1; x > 0; x = x - 3) {\n pattern = ',' + integer[x - 2] + integer[x - 1] + integer[parseInt(x.toString(), 10)] + pattern;\n }\n pattern = pattern.slice(1);\n return temp[1] ? (pattern + '.' + temp[1]) : pattern;\n }\n IntlBase.groupingPattern = groupingPattern;\n /**\n *\n * @param {string} culture ?\n * @param {Object} cldr ?\n * @returns {number} ?\n */\n function getWeekData(culture, cldr) {\n var firstDay = defaultFirstDay;\n var mapper = getValue('supplemental.weekData.firstDay', cldr);\n var iCulture = culture;\n if ((/en-/).test(iCulture)) {\n iCulture = iCulture.slice(3);\n }\n iCulture = iCulture.slice(0, 2).toUpperCase() + iCulture.substr(2);\n if (mapper) {\n firstDay = mapper[\"\" + iCulture] || mapper[iCulture.slice(0, 2)] || defaultFirstDay;\n }\n return firstDayMapper[\"\" + firstDay];\n }\n IntlBase.getWeekData = getWeekData;\n /**\n * @private\n * @param {any} pData ?\n * @param {string} aCurrency ?\n * @param {string} rCurrency ?\n * @returns {void} ?\n */\n function replaceBlazorCurrency(pData, aCurrency, rCurrency) {\n var iCurrency = getBlazorCurrencySymbol(rCurrency);\n if (aCurrency !== iCurrency) {\n for (var _i = 0, pData_1 = pData; _i < pData_1.length; _i++) {\n var data = pData_1[_i];\n data.nend = data.nend.replace(aCurrency, iCurrency);\n data.nlead = data.nlead.replace(aCurrency, iCurrency);\n }\n }\n }\n IntlBase.replaceBlazorCurrency = replaceBlazorCurrency;\n /**\n * @private\n * @param {Date} date ?\n * @returns {number} ?\n */\n function getWeekOfYear(date) {\n var newYear = new Date(date.getFullYear(), 0, 1);\n var day = newYear.getDay();\n var weeknum;\n day = (day >= 0 ? day : day + 7);\n var daynum = Math.floor((date.getTime() - newYear.getTime() -\n (date.getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) / 86400000) + 1;\n if (day < 4) {\n weeknum = Math.floor((daynum + day - 1) / 7) + 1;\n if (weeknum > 52) {\n var nYear = new Date(date.getFullYear() + 1, 0, 1);\n var nday = nYear.getDay();\n nday = nday >= 0 ? nday : nday + 7;\n weeknum = nday < 4 ? 1 : 53;\n }\n }\n else {\n weeknum = Math.floor((daynum + day - 1) / 7);\n }\n return weeknum;\n }\n IntlBase.getWeekOfYear = getWeekOfYear;\n})(IntlBase || (IntlBase = {}));\n","import { isNullOrUndefined, merge } from './util';\nvar headerRegex = /^(.*?):[ \\t]*([^\\r\\n]*)$/gm;\nvar defaultType = 'GET';\n/**\n * Ajax class provides ability to make asynchronous HTTP request to the server\n * ```typescript\n * var ajax = new Ajax(\"index.html\", \"GET\", true);\n * ajax.send().then(\n * function (value) {\n * console.log(value);\n * },\n * function (reason) {\n * console.log(reason);\n * });\n * ```\n */\nvar Ajax = /** @class */ (function () {\n /**\n * Constructor for Ajax class\n *\n * @param {string|Object} options ?\n * @param {string} type ?\n * @param {boolean} async ?\n * @returns defaultType any\n */\n function Ajax(options, type, async, contentType) {\n /**\n * A boolean value indicating whether the request should be sent asynchronous or not.\n *\n * @default true\n */\n this.mode = true;\n /**\n * A boolean value indicating whether to ignore the promise reject.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n this.options = {};\n if (typeof options === 'string') {\n this.url = options;\n this.type = type ? type.toUpperCase() : defaultType;\n this.mode = !isNullOrUndefined(async) ? async : true;\n }\n else if (typeof options === 'object') {\n this.options = options;\n merge(this, this.options);\n }\n this.type = this.type ? this.type.toUpperCase() : defaultType;\n this.contentType = (this.contentType !== undefined) ? this.contentType : contentType;\n }\n /**\n *\n * Send the request to server.\n *\n * @param {any} data - To send the user data\n * @return {Promise} ?\n */\n Ajax.prototype.send = function (data) {\n var _this = this;\n this.data = isNullOrUndefined(data) ? this.data : data;\n var eventArgs = {\n cancel: false,\n httpRequest: null\n };\n var promise = new Promise(function (resolve, reject) {\n _this.httpRequest = new XMLHttpRequest();\n _this.httpRequest.onreadystatechange = function () { _this.stateChange(resolve, reject); };\n if (!isNullOrUndefined(_this.onLoad)) {\n _this.httpRequest.onload = _this.onLoad;\n }\n if (!isNullOrUndefined(_this.onProgress)) {\n _this.httpRequest.onprogress = _this.onProgress;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onAbort)) {\n _this.httpRequest.onabort = _this.onAbort;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onError)) {\n _this.httpRequest.onerror = _this.onError;\n }\n //** Upload Events **/\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onUploadProgress)) {\n _this.httpRequest.upload.onprogress = _this.onUploadProgress;\n }\n // eslint-disable-next-line\n _this.httpRequest.open(_this.type, _this.url, _this.mode);\n // Set default headers\n if (!isNullOrUndefined(_this.data) && _this.contentType !== null) {\n _this.httpRequest.setRequestHeader('Content-Type', _this.contentType || 'application/json; charset=utf-8');\n }\n if (_this.beforeSend) {\n eventArgs.httpRequest = _this.httpRequest;\n _this.beforeSend(eventArgs);\n }\n if (!eventArgs.cancel) {\n _this.httpRequest.send(!isNullOrUndefined(_this.data) ? _this.data : null);\n }\n });\n return promise;\n };\n Ajax.prototype.successHandler = function (data) {\n if (this.onSuccess) {\n this.onSuccess(data, this);\n }\n return data;\n };\n Ajax.prototype.failureHandler = function (reason) {\n if (this.onFailure) {\n this.onFailure(this.httpRequest);\n }\n return reason;\n };\n Ajax.prototype.stateChange = function (resolve, reject) {\n var data = this.httpRequest.responseText;\n if (this.dataType && this.dataType.toLowerCase() === 'json') {\n if (data === '') {\n data = undefined;\n }\n else {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n // no exception handle\n }\n }\n }\n if (this.httpRequest.readyState === 4) {\n //success range should be 200 to 299\n if ((this.httpRequest.status >= 200 && this.httpRequest.status <= 299) || this.httpRequest.status === 304) {\n resolve(this.successHandler(data));\n }\n else {\n if (this.emitError) {\n reject(new Error(this.failureHandler(this.httpRequest.statusText)));\n }\n else {\n resolve();\n }\n }\n }\n };\n /**\n * To get the response header from XMLHttpRequest\n *\n * @param {string} key Key to search in the response header\n * @returns {string} ?\n */\n Ajax.prototype.getResponseHeader = function (key) {\n var responseHeaders;\n var header;\n // eslint-disable-next-line\n responseHeaders = {};\n var headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n while (headers) {\n responseHeaders[headers[1].toLowerCase()] = headers[2];\n headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n }\n // eslint-disable-next-line\n header = responseHeaders[key.toLowerCase()];\n return isNullOrUndefined(header) ? null : header;\n };\n return Ajax;\n}());\nexport { Ajax };\n","import { isUndefined } from './util';\nvar REGX_MOBILE = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i;\nvar REGX_IE = /msie|trident/i;\nvar REGX_IE11 = /Trident\\/7\\./;\nvar REGX_IOS = /(ipad|iphone|ipod touch)/i;\nvar REGX_IOS7 = /(ipad|iphone|ipod touch);.*os 7_\\d|(ipad|iphone|ipod touch);.*os 8_\\d/i;\nvar REGX_ANDROID = /android/i;\nvar REGX_WINDOWS = /trident|windows phone|edge/i;\nvar REGX_VERSION = /(version)[ /]([\\w.]+)/i;\nvar REGX_BROWSER = {\n OPERA: /(opera|opr)(?:.*version|)[ /]([\\w.]+)/i,\n EDGE: /(edge)(?:.*version|)[ /]([\\w.]+)/i,\n CHROME: /(chrome|crios)[ /]([\\w.]+)/i,\n PANTHOMEJS: /(phantomjs)[ /]([\\w.]+)/i,\n SAFARI: /(safari)[ /]([\\w.]+)/i,\n WEBKIT: /(webkit)[ /]([\\w.]+)/i,\n MSIE: /(msie|trident) ([\\w.]+)/i,\n MOZILLA: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\n/* istanbul ignore else */\nif (typeof window !== 'undefined') {\n window.browserDetails = window.browserDetails || {};\n}\n/**\n * Get configuration details for Browser\n *\n * @private\n */\nvar Browser = /** @class */ (function () {\n function Browser() {\n }\n Browser.extractBrowserDetail = function () {\n var browserInfo = { culture: {} };\n var keys = Object.keys(REGX_BROWSER);\n var clientInfo = [];\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n clientInfo = Browser.userAgent.match(REGX_BROWSER[\"\" + key]);\n if (clientInfo) {\n browserInfo.name = (clientInfo[1].toLowerCase() === 'opr' ? 'opera' : clientInfo[1].toLowerCase());\n browserInfo.name = (clientInfo[1].toLowerCase() === 'crios' ? 'chrome' : browserInfo.name);\n browserInfo.version = clientInfo[2];\n browserInfo.culture.name = browserInfo.culture.language = navigator.language;\n // eslint-disable-next-line\n if (!!Browser.userAgent.match(REGX_IE11)) {\n browserInfo.name = 'msie';\n break;\n }\n var version = Browser.userAgent.match(REGX_VERSION);\n if (browserInfo.name === 'safari' && version) {\n browserInfo.version = version[2];\n }\n break;\n }\n }\n return browserInfo;\n };\n /**\n * To get events from the browser\n *\n * @param {string} event - type of event triggered.\n * @returns {boolean}\n */\n Browser.getEvent = function (event) {\n // eslint-disable-next-line\n var events = {\n start: {\n isPointer: 'pointerdown', isTouch: 'touchstart', isDevice: 'mousedown'\n },\n move: {\n isPointer: 'pointermove', isTouch: 'touchmove', isDevice: 'mousemove'\n },\n end: {\n isPointer: 'pointerup', isTouch: 'touchend', isDevice: 'mouseup'\n },\n cancel: {\n isPointer: 'pointercancel', isTouch: 'touchcancel', isDevice: 'mouseleave'\n }\n };\n return (Browser.isPointer ? events[\"\" + event].isPointer :\n (Browser.isTouch ? events[\"\" + event].isTouch + (!Browser.isDevice ? ' ' + events[\"\" + event].isDevice : '')\n : events[\"\" + event].isDevice));\n };\n /**\n * To get the Touch start event from browser\n *\n * @returns {string}\n */\n Browser.getTouchStartEvent = function () {\n return Browser.getEvent('start');\n };\n /**\n * To get the Touch end event from browser\n *\n * @returns {string}\n */\n Browser.getTouchEndEvent = function () {\n return Browser.getEvent('end');\n };\n /**\n * To get the Touch move event from browser\n *\n * @returns {string}\n */\n Browser.getTouchMoveEvent = function () {\n return Browser.getEvent('move');\n };\n /**\n * To cancel the touch event from browser\n *\n * @returns {string}\n */\n Browser.getTouchCancelEvent = function () {\n return Browser.getEvent('cancel');\n };\n /**\n * Check whether the browser on the iPad device is Safari or not\n *\n * @returns {boolean}\n */\n Browser.isSafari = function () {\n return (Browser.isDevice && Browser.isIos && Browser.isTouch && typeof window !== 'undefined'\n && window.navigator.userAgent.toLowerCase().indexOf('iphone') === -1\n && window.navigator.userAgent.toLowerCase().indexOf('safari') > -1);\n };\n /**\n * To get the value based on provided key and regX\n *\n * @param {string} key ?\n * @param {RegExp} regX ?\n * @returns {Object} ?\n */\n Browser.getValue = function (key, regX) {\n var browserDetails = typeof window !== 'undefined' ? window.browserDetails : {};\n if (typeof navigator !== 'undefined' && navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 && Browser.isTouch === true && !REGX_BROWSER.CHROME.test(navigator.userAgent)) {\n browserDetails['isIos'] = true;\n browserDetails['isDevice'] = true;\n browserDetails['isTouch'] = true;\n browserDetails['isPointer'] = true;\n }\n if ('undefined' === typeof browserDetails[\"\" + key]) {\n return browserDetails[\"\" + key] = regX.test(Browser.userAgent);\n }\n return browserDetails[\"\" + key];\n };\n Object.defineProperty(Browser, \"userAgent\", {\n get: function () {\n return Browser.uA;\n },\n //Properties\n /**\n * Property specifies the userAgent of the browser. Default userAgent value is based on the browser.\n * Also we can set our own userAgent.\n *\n * @param {string} uA ?\n */\n set: function (uA) {\n Browser.uA = uA;\n window.browserDetails = {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"info\", {\n //Read Only Properties\n /**\n * Property is to get the browser information like Name, Version and Language\n *\n * @returns {BrowserInfo} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.info)) {\n return window.browserDetails.info = Browser.extractBrowserDetail();\n }\n return window.browserDetails.info;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIE\", {\n /**\n * Property is to get whether the userAgent is based IE.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIE', REGX_IE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isTouch\", {\n /**\n * Property is to get whether the browser has touch support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isTouch)) {\n return (window.browserDetails.isTouch =\n ('ontouchstart' in window.navigator) ||\n (window &&\n window.navigator &&\n (window.navigator.maxTouchPoints > 0)) || ('ontouchstart' in window));\n }\n return window.browserDetails.isTouch;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isPointer\", {\n /**\n * Property is to get whether the browser has Pointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isPointer)) {\n return window.browserDetails.isPointer = ('pointerEnabled' in window.navigator);\n }\n return window.browserDetails.isPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isMSPointer\", {\n /**\n * Property is to get whether the browser has MSPointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isMSPointer)) {\n return window.browserDetails.isMSPointer = ('msPointerEnabled' in window.navigator);\n }\n return window.browserDetails.isMSPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isDevice\", {\n /**\n * Property is to get whether the userAgent is device based.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isDevice', REGX_MOBILE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos\", {\n /**\n * Property is to get whether the userAgent is IOS.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos', REGX_IOS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos7\", {\n /**\n * Property is to get whether the userAgent is Ios7.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos7', REGX_IOS7);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isAndroid\", {\n /**\n * Property is to get whether the userAgent is Android.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isAndroid', REGX_ANDROID);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWebView\", {\n /**\n * Property is to identify whether application ran in web view.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isWebView)) {\n window.browserDetails.isWebView = !(isUndefined(window.cordova) && isUndefined(window.PhoneGap)\n && isUndefined(window.phonegap) && window.forge !== 'object');\n return window.browserDetails.isWebView;\n }\n return window.browserDetails.isWebView;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWindows\", {\n /**\n * Property is to get whether the userAgent is Windows.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isWindows', REGX_WINDOWS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchStartEvent\", {\n /**\n * Property is to get the touch start event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchStartEvent)) {\n return window.browserDetails.touchStartEvent = Browser.getTouchStartEvent();\n }\n return window.browserDetails.touchStartEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchMoveEvent\", {\n /**\n * Property is to get the touch move event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchMoveEvent)) {\n return window.browserDetails.touchMoveEvent = Browser.getTouchMoveEvent();\n }\n return window.browserDetails.touchMoveEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchEndEvent\", {\n /**\n * Property is to get the touch end event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchEndEvent)) {\n return window.browserDetails.touchEndEvent = Browser.getTouchEndEvent();\n }\n return window.browserDetails.touchEndEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchCancelEvent\", {\n /**\n * Property is to cancel the touch end event.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchCancelEvent)) {\n return window.browserDetails.touchCancelEvent = Browser.getTouchCancelEvent();\n }\n return window.browserDetails.touchCancelEvent;\n },\n enumerable: true,\n configurable: true\n });\n /* istanbul ignore next */\n Browser.uA = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n return Browser;\n}());\nexport { Browser };\n","import { isNullOrUndefined as isNOU, isObject, merge } from './util';\n/**\n * The Fetch class provides a way to make asynchronous network requests, typically to retrieve resources from a server.\n * ```typescript\n * var fetchApi = new Fetch('index.html', 'GET');\n * fetchApi.send()\n * .then((value) => {\n * console.log(value);\n * }).catch((error) => {\n * console.log(error);\n * });\n * ```\n */\nvar Fetch = /** @class */ (function () {\n /**\n * Constructor for Fetch class.\n *\n * @param {string|Object} options - Specifies the URL or Request object with URL to which the request is to be sent.\n * @param {string} type - Specifies which request method is to be used, such as GET, POST, etc.\n * @param {string} contentType - Specifies the content type of the request, which is used to indicate the original media type of the resource.\n */\n function Fetch(options, type, contentType) {\n /**\n * Specifies which request method is to be used, such as GET, POST, etc.\n *\n * @default GET\n */\n this.type = 'GET';\n /**\n * A boolean value indicating whether to reject the promise or not.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n if (typeof options === 'string') {\n this.url = options;\n this.type = !isNOU(type) ? type.toUpperCase() : this.type;\n this.contentType = contentType;\n }\n else if (isObject(options) && Object.keys(options).length > 0) {\n merge(this, options);\n }\n this.contentType = !isNOU(this.contentType) ? this.contentType : 'application/json; charset=utf-8';\n }\n /**\n * Send the request to server.\n *\n * @param {string|Object} data - Specifies the data that needs to be added to the request.\n * @returns {Promise} - Returns the response to a request.\n */\n Fetch.prototype.send = function (data) {\n var _this = this;\n var contentTypes = {\n 'application/json': 'json',\n 'multipart/form-data': 'formData',\n 'application/octet-stream': 'blob',\n 'application/x-www-form-urlencoded': 'formData'\n };\n try {\n if (isNOU(this.fetchRequest) && this.type === 'GET') {\n this.fetchRequest = new Request(this.url, { method: this.type });\n }\n else if (isNOU(this.fetchRequest)) {\n this.data = !isNOU(data) ? data : this.data;\n this.fetchRequest = new Request(this.url, {\n method: this.type,\n headers: { 'Content-Type': this.contentType },\n body: this.data\n });\n }\n var eventArgs = { cancel: false, fetchRequest: this.fetchRequest };\n this.triggerEvent(this['beforeSend'], eventArgs);\n if (eventArgs.cancel) {\n return null;\n }\n this.fetchResponse = fetch(this.fetchRequest);\n return this.fetchResponse.then(function (response) {\n _this.triggerEvent(_this['onLoad'], response);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n var responseType = 'text';\n for (var _i = 0, _a = Object.keys(contentTypes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (response.headers.get('Content-Type').indexOf(key) !== -1) {\n responseType = contentTypes[key];\n }\n }\n return response[responseType]();\n // eslint-disable-next-line\n }).then(function (data) {\n _this.triggerEvent(_this['onSuccess'], data, _this);\n return data;\n // eslint-disable-next-line\n }).catch(function (error) {\n var returnVal = {};\n if (_this.emitError) {\n _this.triggerEvent(_this['onFailure'], error);\n returnVal = Promise.reject(error);\n }\n return returnVal;\n });\n }\n catch (error) {\n return error;\n }\n };\n Fetch.prototype.triggerEvent = function (callback, data, instance) {\n if (!isNOU(callback) && typeof callback === 'function') {\n callback(data, instance);\n }\n };\n return Fetch;\n}());\nexport { Fetch };\n","import { debounce, extend } from './util';\nimport { Browser } from './browser';\n/**\n * EventHandler class provides option to add, remove, clear and trigger events to a HTML DOM element\n * ```html\n *
\n * \n * ```\n */\nvar EventHandler = /** @class */ (function () {\n function EventHandler() {\n }\n // to get the event data based on element\n EventHandler.addOrGetEventData = function (element) {\n if ('__eventList' in element) {\n return element.__eventList.events;\n }\n else {\n element.__eventList = {};\n return element.__eventList.events = [];\n }\n };\n /**\n * Add an event to the specified DOM element.\n *\n * @param {any} element - Target HTML DOM element\n * @param {string} eventName - A string that specifies the name of the event\n * @param {Function} listener - Specifies the function to run when the event occurs\n * @param {Object} bindTo - A object that binds 'this' variable in the event handler\n * @param {number} intDebounce - Specifies at what interval given event listener should be triggered.\n * @returns {Function} ?\n */\n EventHandler.add = function (element, eventName, listener, bindTo, intDebounce) {\n var eventData = EventHandler.addOrGetEventData(element);\n var debounceListener;\n if (intDebounce) {\n debounceListener = debounce(listener, intDebounce);\n }\n else {\n debounceListener = listener;\n }\n if (bindTo) {\n debounceListener = debounceListener.bind(bindTo);\n }\n var event = eventName.split(' ');\n for (var i = 0; i < event.length; i++) {\n eventData.push({\n name: event[parseInt(i.toString(), 10)],\n listener: listener,\n debounce: debounceListener\n });\n if (Browser.isIE) {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener);\n }\n else {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener, { passive: false });\n }\n }\n return debounceListener;\n };\n /**\n * Remove an event listener that has been attached before.\n *\n * @param {any} element - Specifies the target html element to remove the event\n * @param {string} eventName - A string that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @returns {void} ?\n */\n EventHandler.remove = function (element, eventName, listener) {\n var eventData = EventHandler.addOrGetEventData(element);\n var event = eventName.split(' ');\n var _loop_1 = function (j) {\n var index = -1;\n var debounceListener;\n if (eventData && eventData.length !== 0) {\n eventData.some(function (x, i) {\n return x.name === event[parseInt(j.toString(), 10)] && x.listener === listener ?\n (index = i, debounceListener = x.debounce, true) : false;\n });\n }\n if (index !== -1) {\n eventData.splice(index, 1);\n }\n if (debounceListener) {\n element.removeEventListener(event[parseInt(j.toString(), 10)], debounceListener);\n }\n };\n for (var j = 0; j < event.length; j++) {\n _loop_1(j);\n }\n };\n /**\n * Clear all the event listeners that has been previously attached to the element.\n *\n * @param {any} element - Specifies the target html element to clear the events\n * @returns {void} ?\n */\n EventHandler.clearEvents = function (element) {\n var eventData;\n var copyData;\n // eslint-disable-next-line\n eventData = EventHandler.addOrGetEventData(element);\n // eslint-disable-next-line\n copyData = extend([], copyData, eventData);\n for (var i = 0; i < copyData.length; i++) {\n element.removeEventListener(copyData[parseInt(i.toString(), 10)].name, copyData[parseInt(i.toString(), 10)].debounce);\n eventData.shift();\n }\n };\n /**\n * Trigger particular event of the element.\n *\n * @param {any} element - Specifies the target html element to trigger the events\n * @param {string} eventName - Specifies the event to trigger for the specified element.\n * Can be a custom event, or any of the standard events.\n * @param {any} eventProp - Additional parameters to pass on to the event properties\n * @returns {void} ?\n */\n EventHandler.trigger = function (element, eventName, eventProp) {\n var eventData = EventHandler.addOrGetEventData(element);\n for (var _i = 0, eventData_1 = eventData; _i < eventData_1.length; _i++) {\n var event_1 = eventData_1[_i];\n if (event_1.name === eventName) {\n event_1.debounce.call(this, eventProp);\n }\n }\n };\n return EventHandler;\n}());\nexport { EventHandler };\n","/**\n * Functions related to dom operations.\n */\nimport { EventHandler } from './event-handler';\nimport { isNullOrUndefined, getValue, setValue, isObject, extend } from './util';\nvar SVG_REG = /^svg|^path|^g/;\n/**\n * Function to create Html element.\n *\n * @param {string} tagName - Name of the tag, id and class names.\n * @param {ElementProperties} properties - Object to set properties in the element.\n * @param {ElementProperties} properties.id - To set the id to the created element.\n * @param {ElementProperties} properties.className - To add classes to the element.\n * @param {ElementProperties} properties.innerHTML - To set the innerHTML to element.\n * @param {ElementProperties} properties.styles - To set the some custom styles to element.\n * @param {ElementProperties} properties.attrs - To set the attributes to element.\n * @returns {any} ?\n * @private\n */\nexport function createElement(tagName, properties) {\n var element = (SVG_REG.test(tagName) ? document.createElementNS('http://www.w3.org/2000/svg', tagName) : document.createElement(tagName));\n if (typeof (properties) === 'undefined') {\n return element;\n }\n element.innerHTML = (properties.innerHTML ? properties.innerHTML : '');\n if (properties.className !== undefined) {\n element.className = properties.className;\n }\n if (properties.id !== undefined) {\n element.id = properties.id;\n }\n if (properties.styles !== undefined) {\n element.setAttribute('style', properties.styles);\n }\n if (properties.attrs !== undefined) {\n attributes(element, properties.attrs);\n }\n return element;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to add a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function addClass(elements, classes) {\n var classList = getClassList(classes);\n var regExp = RegExp;\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n for (var _b = 0, classList_1 = classList; _b < classList_1.length; _b++) {\n var className = classList_1[_b];\n if (isObject(ele)) {\n var curClass = getValue('attributes.className', ele);\n if (isNullOrUndefined(curClass)) {\n setValue('attributes.className', className, ele);\n }\n else if (!new regExp('\\\\b' + className + '\\\\b', 'i').test(curClass)) {\n setValue('attributes.className', curClass + ' ' + className, ele);\n }\n }\n else {\n if (!ele.classList.contains(className)) {\n ele.classList.add(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to remove a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function removeClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n var flag = isObject(ele);\n var canRemove = flag ? getValue('attributes.className', ele) : ele.className !== '';\n if (canRemove) {\n for (var _b = 0, classList_2 = classList; _b < classList_2.length; _b++) {\n var className = classList_2[_b];\n if (flag) {\n var classes_1 = getValue('attributes.className', ele);\n var classArr = classes_1.split(' ');\n var index = classArr.indexOf(className);\n if (index !== -1) {\n classArr.splice(index, 1);\n }\n setValue('attributes.className', classArr.join(' '), ele);\n }\n else {\n ele.classList.remove(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to get classlist.\n *\n * @param {string | string[]} classes - An element the need to check visibility\n * @returns {string[]} ?\n * @private\n */\nfunction getClassList(classes) {\n var classList = [];\n if (typeof classes === 'string') {\n classList.push(classes);\n }\n else {\n classList = classes;\n }\n return classList;\n}\n/**\n * The function used to check element is visible or not.\n *\n * @param {Element|Node} element - An element the need to check visibility\n * @returns {boolean} ?\n * @private\n */\nexport function isVisible(element) {\n var ele = element;\n return (ele.style.visibility === '' && ele.offsetWidth > 0);\n}\n/**\n * The function used to insert an array of elements into a first of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to prepend.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function prepend(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.insertBefore(docFrag, toElement.firstElementChild);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function used to insert an array of elements into last of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to append.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function append(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n if (fromElements instanceof NodeList) {\n while (fromElements.length > 0) {\n docFrag.appendChild(fromElements[0]);\n }\n }\n else {\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n }\n toElement.appendChild(docFrag);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function is used to evaluate script from Ajax request\n *\n * @param {Element} ele - An element is going to evaluate the script\n * @returns {void} ?\n */\nfunction executeScript(ele) {\n var eleArray = ele.querySelectorAll('script');\n eleArray.forEach(function (element) {\n var script = document.createElement('script');\n script.text = element.innerHTML;\n document.head.appendChild(script);\n detach(script);\n });\n}\n/**\n * The function used to remove the element from parentnode\n *\n * @param {Element|Node|HTMLElement} element - An element that is going to detach from the Dom\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function detach(element) {\n var parentNode = element.parentNode;\n if (parentNode) {\n return parentNode.removeChild(element);\n }\n}\n/**\n * The function used to remove the element from Dom also clear the bounded events\n *\n * @param {Element|Node|HTMLElement} element - An element remove from the Dom\n * @returns {void} ?\n * @private\n */\nexport function remove(element) {\n var parentNode = element.parentNode;\n EventHandler.clearEvents(element);\n parentNode.removeChild(element);\n}\n/**\n * The function helps to set multiple attributes to an element\n *\n * @param {Element|Node} element - An element that need to set attributes.\n * @param {string} attributes - JSON Object that is going to as attributes.\n * @returns {Element} ?\n * @private\n */\n// eslint-disable-next-line\nexport function attributes(element, attributes) {\n var keys = Object.keys(attributes);\n var ele = element;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (isObject(ele)) {\n var iKey = key;\n if (key === 'tabindex') {\n iKey = 'tabIndex';\n }\n ele.attributes[\"\" + iKey] = attributes[\"\" + key];\n }\n else {\n ele.setAttribute(key, attributes[\"\" + key]);\n }\n }\n return ele;\n}\n/**\n * The function selects the element from giving context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function select(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n return context.querySelector(selector);\n}\n/**\n * The function selects an array of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {HTMLElement[]} ?\n * @private\n */\n// eslint-disable-next-line\nexport function selectAll(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n var nodeList = context.querySelectorAll(selector);\n return nodeList;\n}\n/**\n * The function selects an id of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @returns {string} ?\n * @private\n */\nfunction querySelectId(selector) {\n var charRegex = /(!|\"|\\$|%|&|'|\\(|\\)|\\*|\\/|:|;|<|=|\\?|@|\\]|\\^|`|{|}|\\||\\+|~)/g;\n if (selector.match(/#[0-9]/g) || selector.match(charRegex)) {\n var idList = selector.split(',');\n for (var i = 0; i < idList.length; i++) {\n var list = idList[parseInt(i.toString(), 10)].split(' ');\n for (var j = 0; j < list.length; j++) {\n if (list[parseInt(j.toString(), 10)].indexOf('#') > -1) {\n if (!list[parseInt(j.toString(), 10)].match(/\\[.*\\]/)) {\n var splitId = list[parseInt(j.toString(), 10)].split('#');\n if (splitId[1].match(/^\\d/) || splitId[1].match(charRegex)) {\n var setId = list[parseInt(j.toString(), 10)].split('.');\n setId[0] = setId[0].replace(/#/, '[id=\\'') + '\\']';\n list[parseInt(j.toString(), 10)] = setId.join('.');\n }\n }\n }\n }\n idList[parseInt(i.toString(), 10)] = list.join(' ');\n }\n return idList.join(',');\n }\n return selector;\n}\n/**\n * Returns single closest parent element based on class selector.\n *\n * @param {Element} element - An element that need to find the closest element.\n * @param {string} selector - A classSelector of closest element.\n * @returns {Element} ?\n * @private\n */\nexport function closest(element, selector) {\n var el = element;\n if (typeof el.closest === 'function') {\n return el.closest(selector);\n }\n while (el && el.nodeType === 1) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n}\n/**\n * Returns all sibling elements of the given element.\n *\n * @param {Element|Node} element - An element that need to get siblings.\n * @returns {Element[]} ?\n * @private\n */\nexport function siblings(element) {\n var siblings = [];\n var childNodes = Array.prototype.slice.call(element.parentNode.childNodes);\n for (var _i = 0, childNodes_1 = childNodes; _i < childNodes_1.length; _i++) {\n var curNode = childNodes_1[_i];\n if (curNode.nodeType === Node.ELEMENT_NODE && element !== curNode) {\n siblings.push(curNode);\n }\n }\n return siblings;\n}\n/**\n * set the value if not exist. Otherwise set the existing value\n *\n * @param {HTMLElement} element - An element to which we need to set value.\n * @param {string} property - Property need to get or set.\n * @param {string} value - value need to set.\n * @returns {string} ?\n * @private\n */\nexport function getAttributeOrDefault(element, property, value) {\n var attrVal;\n var isObj = isObject(element);\n if (isObj) {\n attrVal = getValue('attributes.' + property, element);\n }\n else {\n attrVal = element.getAttribute(property);\n }\n if (isNullOrUndefined(attrVal) && value) {\n if (!isObj) {\n element.setAttribute(property, value.toString());\n }\n else {\n element.attributes[\"\" + property] = value;\n }\n attrVal = value;\n }\n return attrVal;\n}\n/**\n * Set the style attributes to Html element.\n *\n * @param {HTMLElement} element - Element which we want to set attributes\n * @param {any} attrs - Set the given attributes to element\n * @returns {void} ?\n * @private\n */\nexport function setStyleAttribute(element, attrs) {\n if (attrs !== undefined) {\n Object.keys(attrs).forEach(function (key) {\n // eslint-disable-next-line\n element.style[key] = attrs[key];\n });\n }\n}\n/**\n * Method for add and remove classes to a dom element.\n *\n * @param {Element} element - Element for add and remove classes\n * @param {string[]} addClasses - List of classes need to be add to the element\n * @param {string[]} removeClasses - List of classes need to be remove from the element\n * @returns {void} ?\n * @private\n */\nexport function classList(element, addClasses, removeClasses) {\n addClass([element], addClasses);\n removeClass([element], removeClasses);\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Element} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function matches(element, selector) {\n // eslint-disable-next-line\n var matches = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (matches) {\n return matches.call(element, selector);\n }\n else {\n return [].indexOf.call(document.querySelectorAll(selector), element) !== -1;\n }\n}\n/**\n * Method to get the html text from DOM.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} innerHTML - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function includeInnerHTML(ele, innerHTML) {\n ele.innerHTML = innerHTML;\n}\n/**\n * Method to get the containsclass.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} className - String selector which element will satisfy.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function containsClass(ele, className) {\n if (isObject(ele)) {\n // eslint-disable-next-line\n return new RegExp('\\\\b' + className + '\\\\b', 'i').test(ele.attributes.className);\n }\n else {\n return ele.classList.contains(className);\n }\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Object} element - Element to compare with the selector.\n * @param {boolean} deep ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function cloneNode(element, deep) {\n if (isObject(element)) {\n if (deep) {\n return extend({}, {}, element, true);\n }\n }\n else {\n return element.cloneNode(deep);\n }\n}\n","import { isUndefined, isNullOrUndefined, merge, setImmediate, setValue, isBlazor, getValue, extend } from './util';\nimport { addClass, removeClass } from './dom';\nimport { Observer } from './observer';\nvar isColEName = new RegExp(']');\n/* tslint:enable:no-any */\n/**\n * Base library module is common module for Framework modules like touch,keyboard and etc.,\n *\n * @private\n */\nvar Base = /** @class */ (function () {\n /**\n * Base constructor accept options and element\n *\n * @param {Object} options ?\n * @param {string} element ?\n */\n function Base(options, element) {\n this.isRendered = false;\n this.isComplexArraySetter = false;\n this.isServerRendered = false;\n this.allowServerDataBinding = true;\n this.isProtectedOnChange = true;\n this.properties = {};\n this.changedProperties = {};\n this.oldProperties = {};\n this.bulkChanges = {};\n this.refreshing = false;\n this.ignoreCollectionWatch = false;\n // eslint-disable-next-line\n this.finalUpdate = function () { };\n this.childChangedProperties = {};\n this.modelObserver = new Observer(this);\n if (!isUndefined(element)) {\n if ('string' === typeof (element)) {\n this.element = document.querySelector(element);\n }\n else {\n this.element = element;\n }\n if (!isNullOrUndefined(this.element)) {\n this.isProtectedOnChange = false;\n this.addInstance();\n }\n }\n if (!isUndefined(options)) {\n this.setProperties(options, true);\n }\n this.isDestroyed = false;\n }\n /** Property base section */\n /**\n * Function used to set bunch of property at a time.\n *\n * @private\n * @param {Object} prop - JSON object which holds components properties.\n * @param {boolean} muteOnChange ? - Specifies to true when we set properties.\n * @returns {void} ?\n */\n Base.prototype.setProperties = function (prop, muteOnChange) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = !!muteOnChange;\n merge(this, prop);\n if (muteOnChange !== true) {\n merge(this.changedProperties, prop);\n this.dataBind();\n }\n else if (isBlazor() && this.isRendered) {\n this.serverDataBind(prop);\n }\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.isProtectedOnChange = prevDetection;\n };\n /**\n * Calls for child element data bind\n *\n * @param {Object} obj ?\n * @param {Object} parent ?\n * @returns {void} ?\n */\n // tslint:disable-next-line:no-any\n Base.callChildDataBind = function (obj, parent) {\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (parent[\"\" + key] instanceof Array) {\n for (var _a = 0, _b = parent[\"\" + key]; _a < _b.length; _a++) {\n var obj_1 = _b[_a];\n if (obj_1.dataBind !== undefined) {\n obj_1.dataBind();\n }\n }\n }\n else {\n parent[\"\" + key].dataBind();\n }\n }\n };\n Base.prototype.clearChanges = function () {\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.childChangedProperties = {};\n };\n /**\n * Bind property changes immediately to components\n *\n * @returns {void} ?\n */\n Base.prototype.dataBind = function () {\n Base.callChildDataBind(this.childChangedProperties, this);\n if (Object.getOwnPropertyNames(this.changedProperties).length) {\n var prevDetection = this.isProtectedOnChange;\n var newChanges = this.changedProperties;\n var oldChanges = this.oldProperties;\n this.clearChanges();\n this.isProtectedOnChange = true;\n this.onPropertyChanged(newChanges, oldChanges);\n this.isProtectedOnChange = prevDetection;\n }\n };\n /* tslint:disable:no-any */\n Base.prototype.serverDataBind = function (newChanges) {\n if (!isBlazor()) {\n return;\n }\n newChanges = newChanges ? newChanges : {};\n extend(this.bulkChanges, {}, newChanges, true);\n var sfBlazor = 'sfBlazor';\n if (this.allowServerDataBinding && window[\"\" + sfBlazor].updateModel) {\n window[\"\" + sfBlazor].updateModel(this);\n this.bulkChanges = {};\n }\n };\n /* tslint:enable:no-any */\n Base.prototype.saveChanges = function (key, newValue, oldValue) {\n if (isBlazor()) {\n // tslint:disable-next-line:no-any\n var newChanges = {};\n newChanges[\"\" + key] = newValue;\n this.serverDataBind(newChanges);\n }\n if (this.isProtectedOnChange) {\n return;\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.finalUpdate();\n this.finalUpdate = setImmediate(this.dataBind.bind(this));\n };\n /** Event Base Section */\n /**\n * Adds the handler to the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event\n * @param {Function} handler - Specifies the call to run when the event occurs.\n * @returns {void} ?\n */\n Base.prototype.addEventListener = function (eventName, handler) {\n this.modelObserver.on(eventName, handler);\n };\n /**\n * Removes the handler from the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event to remove\n * @param {Function} handler - Specifies the function to remove\n * @returns {void} ?\n */\n Base.prototype.removeEventListener = function (eventName, handler) {\n this.modelObserver.off(eventName, handler);\n };\n /**\n * Triggers the handlers in the specified event.\n *\n * @private\n * @param {string} eventName - Specifies the event to trigger for the specified component properties.\n * Can be a custom event, or any of the standard events.\n * @param {Event} eventProp - Additional parameters to pass on to the event properties\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it failured to call.\n * @returns {void} ?\n */\n Base.prototype.trigger = function (eventName, eventProp, successHandler, errorHandler) {\n var _this = this;\n if (this.isDestroyed !== true) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n var data = this.modelObserver.notify(eventName, eventProp, successHandler, errorHandler);\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n var blazor = 'Blazor';\n if (window[\"\" + blazor]) {\n var promise = handler.call(this, eventProp);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n data = promise;\n }\n else {\n promise.then(function (data) {\n if (successHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ?\n JSON.parse(data) : data;\n successHandler.call(_this, data);\n }\n }).catch(function (data) {\n if (errorHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ? JSON.parse(data) : data;\n errorHandler.call(_this, data);\n }\n });\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n this.isProtectedOnChange = prevDetection;\n return data;\n }\n };\n /**\n * To maintain instance in base class\n *\n * @returns {void} ?\n */\n Base.prototype.addInstance = function () {\n // Add module class to the root element\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-lib', moduleClass]);\n if (!isNullOrUndefined(this.element.ej2_instances)) {\n this.element.ej2_instances.push(this);\n }\n else {\n setValue('ej2_instances', [this], this.element);\n }\n };\n /**\n * To remove the instance from the element\n *\n * @returns {void} ?\n */\n Base.prototype.destroy = function () {\n var _this = this;\n // eslint-disable-next-line\n this.element.ej2_instances =\n this.element.ej2_instances.filter(function (i) { return i !== _this; });\n removeClass([this.element], ['e-' + this.getModuleName()]);\n if (this.element.ej2_instances.length === 0) {\n // Remove module class from the root element\n removeClass([this.element], ['e-lib']);\n }\n this.clearChanges();\n this.modelObserver.destroy();\n this.isDestroyed = true;\n };\n return Base;\n}());\nexport { Base };\n/**\n * Global function to get the component instance from the rendered element.\n *\n * @param {HTMLElement} elem Specifies the HTMLElement or element id string.\n * @param {string} comp Specifies the component module name or Component.\n * @returns {any} ?\n */\n// tslint:disable-next-line:no-any\nexport function getComponent(elem, comp) {\n var instance;\n var i;\n var ele = typeof elem === 'string' ? document.getElementById(elem) : elem;\n for (i = 0; i < ele.ej2_instances.length; i++) {\n instance = ele.ej2_instances[parseInt(i.toString(), 10)];\n if (typeof comp === 'string') {\n var compName = instance.getModuleName();\n if (comp === compName) {\n return instance;\n }\n }\n else {\n // tslint:disable-next-line:no-any\n if (instance instanceof comp) {\n return instance;\n }\n }\n }\n return undefined;\n}\n/**\n * Function to remove the child instances.\n *\n * @param {HTMLElement} element ?\n * @return {void}\n * @private\n */\n// tslint:disable-next-line:no-any\nexport function removeChildInstance(element) {\n // tslint:disable-next-line:no-any\n var childEle = [].slice.call(element.getElementsByClassName('e-control'));\n for (var i = 0; i < childEle.length; i++) {\n var compName = childEle[parseInt(i.toString(), 10)].classList[1].split('e-')[1];\n // tslint:disable-next-line:no-any\n var compInstance = getComponent(childEle[parseInt(i.toString(), 10)], compName);\n if (!isUndefined(compInstance)) {\n compInstance.destroy();\n }\n }\n}\n","import { createInstance, isUndefined, merge, extend, getValue } from './util';\n/**\n * Returns the Class Object\n *\n * @param {ClassObject} instance - instance of ClassObject\n * @param {string} curKey - key of the current instance\n * @param {Object} defaultValue - default Value\n * @param {Object[]} type ?\n * @returns {ClassObject} ?\n */\n// eslint-disable-next-line\nfunction getObject(instance, curKey, defaultValue, type) {\n // eslint-disable-next-line\n if (!instance.properties.hasOwnProperty(curKey) || !(instance.properties[curKey] instanceof type)) {\n instance.properties[\"\" + curKey] = createInstance(type, [instance, curKey, defaultValue]);\n }\n return instance.properties[\"\" + curKey];\n}\n/**\n * Returns object array\n *\n * @param {ClassObject} instance ?\n * @param {string} curKey ?\n * @param {Object[]} defaultValue ?\n * @param {Object} type ?\n * @param {boolean} isSetter ?\n * @param {boolean} isFactory ?\n * @returns {Object[]} ?\n */\n// eslint-disable-next-line\nfunction getObjectArray(instance, curKey, defaultValue, type, isSetter, isFactory) {\n var result = [];\n var len = defaultValue ? defaultValue.length : 0;\n for (var i = 0; i < len; i++) {\n var curType = type;\n if (isFactory) {\n curType = type(defaultValue[parseInt(i.toString(), 10)], instance);\n }\n if (isSetter) {\n var inst = createInstance(curType, [instance, curKey, {}, true]);\n inst.setProperties(defaultValue[parseInt(i.toString(), 10)], true);\n result.push(inst);\n }\n else {\n result.push(createInstance(curType, [instance, curKey, defaultValue[parseInt(i.toString(), 10)], false]));\n }\n }\n return result;\n}\n/**\n * Returns the properties of the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertyGetter(defaultValue, curKey) {\n return function () {\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n this.properties[\"\" + curKey] = defaultValue;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n * Set the properties for the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertySetter(defaultValue, curKey) {\n return function (newValue) {\n if (this.properties[\"\" + curKey] !== newValue) {\n // eslint-disable-next-line\n var oldVal = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n this.saveChanges(curKey, newValue, oldVal);\n this.properties[\"\" + curKey] = newValue;\n }\n };\n}\n/**\n * Returns complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\n// eslint-disable-next-line\nfunction complexGetter(defaultValue, curKey, type) {\n return function () {\n return getObject(this, curKey, defaultValue, type);\n };\n}\n/**\n * Sets complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexSetter(defaultValue, curKey, type) {\n return function (newValue) {\n getObject(this, curKey, defaultValue, type).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\n// eslint-disable-next-line\nfunction complexFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\n if (this.properties.hasOwnProperty(curKey)) {\n return this.properties[\"\" + curKey];\n }\n else {\n return getObject(this, curKey, defaultValue, curType);\n }\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var curType = type(newValue, this);\n getObject(this, curKey, defaultValue, curType).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayGetter(defaultValue, curKey, type) {\n return function () {\n var _this = this;\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, type, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n var ignore = ((this.controlParent !== undefined && this.controlParent.ignoreCollectionWatch)\n || this.ignoreCollectionWatch);\n // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('push') && !ignore) {\n ['push', 'pop'].forEach(function (extendFunc) {\n var descriptor = {\n value: complexArrayDefinedCallback(extendFunc, curKey, type, _this.properties[\"\" + curKey]).bind(_this),\n configurable: true\n };\n Object.defineProperty(_this.properties[\"\" + curKey], extendFunc, descriptor);\n });\n }\n // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('isComplexArray')) {\n Object.defineProperty(this.properties[\"\" + curKey], 'isComplexArray', { value: true });\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArraySetter(defaultValue, curKey, type) {\n return function (newValue) {\n this.isComplexArraySetter = true;\n var oldValueCollection = getObjectArray(this, curKey, defaultValue, type, false);\n var newValCollection = getObjectArray(this, curKey, newValue, type, true);\n this.isComplexArraySetter = false;\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n // eslint-disable-next-line\n var oldValueCollection = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n var newValCollection = getObjectArray(this, curKey, newValue, type, true, true);\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, curType, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {string} dFunc ?\n * @param {string} curKey ?\n * @param {Object} type ?\n * @param {Object} prop ?\n * @returns {Object} ?\n */\nfunction complexArrayDefinedCallback(dFunc, curKey, type, prop) {\n /* tslint:disable no-function-expression */\n return function () {\n var newValue = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newValue[_i] = arguments[_i];\n }\n var keyString = this.propName ? this.getParentKey() + '.' + curKey + '-' : curKey + '-';\n switch (dFunc) {\n case 'push':\n for (var i = 0; i < newValue.length; i++) {\n Array.prototype[\"\" + dFunc].apply(prop, [newValue[parseInt(i.toString(), 10)]]);\n var model_1 = getArrayModel(keyString + (prop.length - 1), newValue[parseInt(i.toString(), 10)], !this.controlParent, dFunc);\n this.serverDataBind(model_1, newValue[parseInt(i.toString(), 10)], false, dFunc);\n }\n break;\n case 'pop':\n Array.prototype[\"\" + dFunc].apply(prop);\n // eslint-disable-next-line\n var model = getArrayModel(keyString + prop.length, null, !this.controlParent, dFunc);\n this.serverDataBind(model, { ejsAction: 'pop' }, false, dFunc);\n break;\n }\n return prop;\n };\n}\n/**\n *\n * @param {string} keyString ?\n * @param {Object} value ?\n * @param {boolean} isControlParent ?\n * @param {string} arrayFunction ?\n * @returns {Object} ?\n */\nfunction getArrayModel(keyString, value, isControlParent, arrayFunction) {\n var modelObject = keyString;\n if (isControlParent) {\n modelObject = {};\n modelObject[\"\" + keyString] = value;\n if (value && typeof value === 'object') {\n var action = 'ejsAction';\n modelObject[\"\" + keyString][\"\" + action] = arrayFunction;\n }\n }\n return modelObject;\n}\n// eslint-disable-next-line\n/**\n * Method used to create property. General syntax below.\n *\n * @param {Object} defaultValue - Specifies the default value of property.\n * @returns {PropertyDecorator} ?\n * ```\n * @Property('TypeScript')\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Property(defaultValue) {\n return function (target, key) {\n var propertyDescriptor = {\n set: propertySetter(defaultValue, key),\n get: propertyGetter(defaultValue, key),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'prop', defaultValue);\n };\n}\n/**\n * Method used to create complex property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Complex({},Type)\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Complex(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexSetter(defaultValue, key, type),\n get: complexGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex Factory property. General syntax below.\n *\n * @param {Function} type - Specifies the class factory type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @ComplexFactory(defaultType, factoryFunction)\n * propertyName: Type1 | Type2;\n * ```\n * @private\n */\nexport function ComplexFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexFactorySetter({}, key, type),\n get: complexFactoryGetter({}, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', {}, type);\n };\n}\n/**\n * Method used to create complex array property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Collection(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArraySetter(defaultValue, key, type),\n get: complexArrayGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex factory array property. General syntax below.\n *\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyCollectionInfo} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function CollectionFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArrayFactorySetter([], key, type),\n get: complexArrayFactoryGetter([], key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', {}, type);\n };\n}\n/**\n * Method used to create event property. General syntax below.\n *\n * @returns {PropertyDecorator} ?\n * ```\n * @Event(()=>{return true;})\n * ```\n * @private\n */\nexport function Event() {\n return function (target, key) {\n var eventDescriptor = {\n set: function (newValue) {\n var oldValue = this.properties[\"\" + key];\n if (oldValue !== newValue) {\n var finalContext = getParentContext(this, key);\n if (isUndefined(oldValue) === false) {\n finalContext.context.removeEventListener(finalContext.prefix, oldValue);\n }\n finalContext.context.addEventListener(finalContext.prefix, newValue);\n this.properties[\"\" + key] = newValue;\n }\n },\n get: propertyGetter(undefined, key),\n enumerable: true,\n configurable: true\n };\n Object.defineProperty(target, key, eventDescriptor);\n addPropertyCollection(target, key, 'event');\n };\n}\n/**\n * NotifyPropertyChanges is triggers the call back when the property has been changed.\n *\n * @param {Function} classConstructor ?\n * @returns {void} ?\n * ```\n * @NotifyPropertyChanges\n * class DemoClass implements INotifyPropertyChanged {\n *\n * @Property()\n * property1: string;\n *\n * dataBind: () => void;\n *\n * constructor() { }\n *\n * onPropertyChanged(newProp: any, oldProp: any) {\n * // Called when property changed\n * }\n * }\n * ```\n * @private\n */\n// eslint-disable-next-line\nexport function NotifyPropertyChanges(classConstructor) {\n /** Need to code */\n}\n/**\n * Method used to create the builderObject for the target component.\n *\n * @param {BuildInfo} target ?\n * @param {string} key ?\n * @param {string} propertyType ?\n * @param {Object} defaultValue ?\n * @param {Function} type ?\n * @returns {void} ?\n * @private\n */\nfunction addPropertyCollection(target, key, propertyType, defaultValue, type) {\n if (isUndefined(target.propList)) {\n target.propList = {\n props: [],\n complexProps: [],\n colProps: [],\n events: [],\n propNames: [],\n complexPropNames: [],\n colPropNames: [],\n eventNames: []\n };\n }\n // eslint-disable-next-line\n target.propList[propertyType + 's'].push({\n propertyName: key,\n defaultValue: defaultValue,\n type: type\n });\n // eslint-disable-next-line\n target.propList[propertyType + 'Names'].push(key);\n}\n/**\n * Returns an object containing the builder properties\n *\n * @param {Function} component ?\n * @returns {Object} ?\n * @private\n */\nfunction getBuilderProperties(component) {\n if (isUndefined(component.prototype.builderObject)) {\n component.prototype.builderObject = {\n properties: {}, propCollections: [], add: function () {\n this.isPropertyArray = true;\n this.propCollections.push(extend({}, this.properties, {}));\n }\n };\n var rex = /complex/;\n for (var _i = 0, _a = Object.keys(component.prototype.propList); _i < _a.length; _i++) {\n var key = _a[_i];\n var _loop_1 = function (prop) {\n if (rex.test(key)) {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n var childType = {};\n merge(childType, getBuilderProperties(prop.type));\n value(childType);\n var tempValue;\n if (!childType.isPropertyArray) {\n tempValue = extend({}, childType.properties, {});\n }\n else {\n tempValue = childType.propCollections;\n }\n this.properties[prop.propertyName] = tempValue;\n childType.properties = {};\n childType.propCollections = [];\n childType.isPropertyArray = false;\n return this;\n };\n }\n else {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n this.properties[prop.propertyName] = value;\n return this;\n };\n }\n };\n for (var _b = 0, _c = component.prototype.propList[\"\" + key]; _b < _c.length; _b++) {\n var prop = _c[_b];\n _loop_1(prop);\n }\n }\n }\n return component.prototype.builderObject;\n}\n/**\n * Method used to create builder for the components\n *\n * @param {any} component -specifies the target component for which builder to be created.\n * @returns {Object} ?\n * @private\n */\nexport function CreateBuilder(component) {\n var builderFunction = function (element) {\n this.element = element;\n return this;\n };\n var instanceFunction = function (element) {\n // eslint-disable-next-line\n if (!builderFunction.prototype.hasOwnProperty('create')) {\n builderFunction.prototype = getBuilderProperties(component);\n builderFunction.prototype.create = function () {\n var temp = extend({}, {}, this.properties);\n this.properties = {};\n return new component(temp, this.element);\n };\n }\n return new builderFunction(element);\n };\n return instanceFunction;\n}\n/**\n * Returns parent options for the object\n *\n * @param {Object} context ?\n * @param {string} prefix ?\n * @returns {ParentOption} ?\n * @private\n */\nfunction getParentContext(context, prefix) {\n // eslint-disable-next-line\n if (context.hasOwnProperty('parentObj') === false) {\n return { context: context, prefix: prefix };\n }\n else {\n var curText = getValue('propName', context);\n if (curText) {\n prefix = curText + '-' + prefix;\n }\n return getParentContext(getValue('parentObj', context), prefix);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { createElement, selectAll, closest } from './dom';\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { EventHandler } from './event-handler';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\n/**\n * The Animation framework provide options to animate the html DOM elements\n * ```typescript\n * let animeObject = new Animation({\n * name: 'SlideLeftIn',\n * duration: 1000\n * });\n * animeObject.animate('#anime1');\n * animeObject.animate('#anime2', { duration: 500 });\n * ```\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation(options) {\n var _this = _super.call(this, options, undefined) || this;\n /**\n * @private\n */\n _this.easing = {\n ease: 'cubic-bezier(0.250, 0.100, 0.250, 1.000)',\n linear: 'cubic-bezier(0.250, 0.250, 0.750, 0.750)',\n easeIn: 'cubic-bezier(0.420, 0.000, 1.000, 1.000)',\n easeOut: 'cubic-bezier(0.000, 0.000, 0.580, 1.000)',\n easeInOut: 'cubic-bezier(0.420, 0.000, 0.580, 1.000)',\n elasticInOut: 'cubic-bezier(0.5,-0.58,0.38,1.81)',\n elasticIn: 'cubic-bezier(0.17,0.67,0.59,1.81)',\n elasticOut: 'cubic-bezier(0.7,-0.75,0.99,1.01)'\n };\n return _this;\n }\n Animation_1 = Animation;\n /**\n * Applies animation to the current element.\n *\n * @param {string | HTMLElement} element - Element which needs to be animated.\n * @param {AnimationModel} options - Overriding default animation settings.\n * @returns {void} ?\n */\n Animation.prototype.animate = function (element, options) {\n options = !options ? {} : options;\n var model = this.getModel(options);\n if (typeof element === 'string') {\n var elements = Array.prototype.slice.call(selectAll(element, document));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element_1 = elements_1[_i];\n model.element = element_1;\n Animation_1.delayAnimation(model);\n }\n }\n else {\n model.element = element;\n Animation_1.delayAnimation(model);\n }\n };\n /**\n * Stop the animation effect on animated element.\n *\n * @param {HTMLElement} element - Element which needs to be stop the animation.\n * @param {AnimationOptions} model - Handling the animation model at stop function.\n * @return {void}\n */\n Animation.stop = function (element, model) {\n element.style.animation = '';\n element.removeAttribute('e-animate');\n var animationId = element.getAttribute('e-animation-id');\n if (animationId) {\n var frameId = parseInt(animationId, 10);\n cancelAnimationFrame(frameId);\n element.removeAttribute('e-animation-id');\n }\n if (model && model.end) {\n model.end.call(this, model);\n }\n };\n /**\n * Set delay to animation element\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.delayAnimation = function (model) {\n if (animationMode === 'Disable') {\n if (model.begin) {\n model.begin.call(this, model);\n }\n if (model.end) {\n model.end.call(this, model);\n }\n }\n else {\n if (model.delay) {\n setTimeout(function () { Animation_1.applyAnimation(model); }, model.delay);\n }\n else {\n Animation_1.applyAnimation(model);\n }\n }\n };\n /**\n * Triggers animation\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.applyAnimation = function (model) {\n var _this = this;\n model.timeStamp = 0;\n var step = 0;\n var timerId = 0;\n var prevTimeStamp = 0;\n var duration = model.duration;\n model.element.setAttribute('e-animate', 'true');\n var startAnimation = function (timeStamp) {\n try {\n if (timeStamp) {\n // let step: number = model.timeStamp = timeStamp - startTime;\n /** phantomjs workaround for timestamp fix */\n prevTimeStamp = prevTimeStamp === 0 ? timeStamp : prevTimeStamp;\n model.timeStamp = (timeStamp + model.timeStamp) - prevTimeStamp;\n prevTimeStamp = timeStamp;\n /** phantomjs workaround end */\n // trigger animation begin event\n if (!step && model.begin) {\n model.begin.call(_this, model);\n }\n step = step + 1;\n var avg = model.timeStamp / step;\n if (model.timeStamp < duration && model.timeStamp + avg < duration && model.element.getAttribute('e-animate')) {\n // apply animation effect to the current element\n model.element.style.animation = model.name + ' ' + model.duration + 'ms ' + model.timingFunction;\n if (model.progress) {\n model.progress.call(_this, model);\n }\n // repeat requestAnimationFrame\n requestAnimationFrame(startAnimation);\n }\n else {\n // clear requestAnimationFrame\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n model.element.removeAttribute('e-animate');\n model.element.style.animation = '';\n if (model.end) {\n model.end.call(_this, model);\n }\n }\n }\n else {\n //startTime = performance.now();\n // set initial requestAnimationFrame\n timerId = requestAnimationFrame(startAnimation);\n model.element.setAttribute('e-animation-id', timerId.toString());\n }\n }\n catch (e) {\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n if (model.fail) {\n model.fail.call(_this, e);\n }\n }\n };\n startAnimation();\n };\n /**\n * Returns Animation Model\n *\n * @param {AnimationModel} options ?\n * @returns {AnimationModel} ?\n */\n Animation.prototype.getModel = function (options) {\n return {\n name: options.name || this.name,\n delay: options.delay || this.delay,\n duration: (options.duration !== undefined ? options.duration : this.duration),\n begin: options.begin || this.begin,\n end: options.end || this.end,\n fail: options.fail || this.fail,\n progress: options.progress || this.progress,\n timingFunction: this.easing[options.timingFunction] ? this.easing[options.timingFunction] :\n (options.timingFunction || this.easing[this.timingFunction])\n };\n };\n /**\n * @private\n * @param {AnimationModel} newProp ?\n * @param {AnimationModel} oldProp ?\n * @returns {void} ?\n */\n // eslint-disable-next-line\n Animation.prototype.onPropertyChanged = function (newProp, oldProp) {\n // no code needed\n };\n /**\n * Returns module name as animation\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.getModuleName = function () {\n return 'animation';\n };\n /**\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.destroy = function () {\n //Override base destroy;\n };\n var Animation_1;\n __decorate([\n Property('FadeIn')\n ], Animation.prototype, \"name\", void 0);\n __decorate([\n Property(400)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], Animation.prototype, \"timingFunction\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"progress\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"begin\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"end\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"fail\", void 0);\n Animation = Animation_1 = __decorate([\n NotifyPropertyChanges\n ], Animation);\n return Animation;\n}(Base));\nexport { Animation };\n/**\n * Ripple provides material theme's wave effect when an element is clicked\n * ```html\n *
\n * \n * ```\n *\n * @private\n * @param {HTMLElement} element - Target element\n * @param {RippleOptions} rippleOptions - Ripple options .\n * @param {Function} done .\n * @returns {void} .\n */\nexport function rippleEffect(element, rippleOptions, done) {\n var rippleModel = getRippleModel(rippleOptions);\n if (rippleModel.rippleFlag === false || (rippleModel.rippleFlag === undefined && !isRippleEnabled)) {\n return (function () {\n // do nothing.\n });\n }\n element.setAttribute('data-ripple', 'true');\n EventHandler.add(element, 'mousedown', rippleHandler, { parent: element, rippleOptions: rippleModel });\n EventHandler.add(element, 'mouseup', rippleUpHandler, { parent: element, rippleOptions: rippleModel, done: done });\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n if (Browser.isPointer) {\n EventHandler.add(element, 'transitionend', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n }\n return (function () {\n element.removeAttribute('data-ripple');\n EventHandler.remove(element, 'mousedown', rippleHandler);\n EventHandler.remove(element, 'mouseup', rippleUpHandler);\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n EventHandler.remove(element, 'transitionend', rippleLeaveHandler);\n });\n}\n/**\n * Handler for ripple model\n *\n * @param {RippleOptions} rippleOptions ?\n * @returns {RippleOptions} ?\n */\nfunction getRippleModel(rippleOptions) {\n var rippleModel = {\n selector: rippleOptions && rippleOptions.selector ? rippleOptions.selector : null,\n ignore: rippleOptions && rippleOptions.ignore ? rippleOptions.ignore : null,\n rippleFlag: rippleOptions && rippleOptions.rippleFlag,\n isCenterRipple: rippleOptions && rippleOptions.isCenterRipple,\n duration: rippleOptions && rippleOptions.duration ? rippleOptions.duration : 350\n };\n return rippleModel;\n}\n/**\n * Handler for ripple event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleHandler(e) {\n var target = (e.target);\n var selector = this.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (this.rippleOptions && closest(target, this.rippleOptions.ignore))) {\n return;\n }\n var offset = element.getBoundingClientRect();\n var offsetX = e.pageX - document.body.scrollLeft;\n var offsetY = e.pageY - ((!document.body.scrollTop && document.documentElement) ?\n document.documentElement.scrollTop : document.body.scrollTop);\n var pageX = Math.max(Math.abs(offsetX - offset.left), Math.abs(offsetX - offset.right));\n var pageY = Math.max(Math.abs(offsetY - offset.top), Math.abs(offsetY - offset.bottom));\n var radius = Math.sqrt(pageX * pageX + pageY * pageY);\n var diameter = radius * 2 + 'px';\n var x = offsetX - offset.left - radius;\n var y = offsetY - offset.top - radius;\n if (this.rippleOptions && this.rippleOptions.isCenterRipple) {\n x = 0;\n y = 0;\n diameter = '100%';\n }\n element.classList.add('e-ripple');\n var duration = this.rippleOptions.duration.toString();\n var styles = 'width: ' + diameter + ';height: ' + diameter + ';left: ' + x + 'px;top: ' + y + 'px;' +\n 'transition-duration: ' + duration + 'ms;';\n var rippleElement = createElement('div', { className: 'e-ripple-element', styles: styles });\n element.appendChild(rippleElement);\n window.getComputedStyle(rippleElement).getPropertyValue('opacity');\n rippleElement.style.transform = 'scale(1)';\n if (element !== this.parent) {\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: this.parent, rippleOptions: this.rippleOptions });\n }\n}\n/**\n * Handler for ripple element mouse up event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleUpHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for ripple element mouse move event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleLeaveHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for removing ripple element\n *\n * @param {MouseEvent} e ?\n * @param {RippleArgs} eventArgs ?\n * @returns {void} ?\n * @private\n */\nfunction removeRipple(e, eventArgs) {\n var duration = eventArgs.rippleOptions.duration;\n var target = (e.target);\n var selector = eventArgs.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (element && element.className.indexOf('e-ripple') === -1)) {\n return;\n }\n var rippleElements = selectAll('.e-ripple-element', element);\n var rippleElement = rippleElements[rippleElements.length - 1];\n if (rippleElement) {\n rippleElement.style.opacity = '0.5';\n }\n if (eventArgs.parent !== element) {\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n }\n /* tslint:disable:align */\n setTimeout(function () {\n if (rippleElement && rippleElement.parentNode) {\n rippleElement.parentNode.removeChild(rippleElement);\n }\n if (!element.getElementsByClassName('e-ripple-element').length) {\n element.classList.remove('e-ripple');\n }\n if (eventArgs.done) {\n eventArgs.done(e);\n }\n }, duration);\n}\nexport var isRippleEnabled = false;\n/**\n * Animation Module provides support to enable ripple effect functionality to Essential JS 2 components.\n *\n * @param {boolean} isRipple Specifies the boolean value to enable or disable ripple effect.\n * @returns {boolean} ?\n */\nexport function enableRipple(isRipple) {\n isRippleEnabled = isRipple;\n return isRippleEnabled;\n}\n/**\n * Defines the Modes of Global animation.\n *\n * @private\n */\nexport var animationMode = '';\n/**\n * Method for set the Global animation modes for Syncfusion Blazor components.\n *\n * @param {string} value - Specifies the animation mode.\n * @returns {void}\n */\nexport function setGlobalAnimation(value) {\n animationMode = value;\n}\n","/**\n * Module loading operations\n */\nimport { createInstance, setValue, getValue, deleteObject } from './util';\nvar MODULE_SUFFIX = 'Module';\nvar ModuleLoader = /** @class */ (function () {\n function ModuleLoader(parent) {\n this.loadedModules = [];\n this.parent = parent;\n }\n /**\n * Inject required modules in component library\n *\n * @returns {void} ?\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @param {Function[]} moduleList - Array of modules to be injected from sample side\n */\n ModuleLoader.prototype.inject = function (requiredModules, moduleList) {\n var reqLength = requiredModules.length;\n if (reqLength === 0) {\n this.clean();\n return;\n }\n if (this.loadedModules.length) {\n this.clearUnusedModule(requiredModules);\n }\n for (var i = 0; i < reqLength; i++) {\n var modl = requiredModules[parseInt(i.toString(), 10)];\n for (var _i = 0, moduleList_1 = moduleList; _i < moduleList_1.length; _i++) {\n var module = moduleList_1[_i];\n var modName = modl.member;\n if (module && module.prototype.getModuleName() === modl.member && !this.isModuleLoaded(modName)) {\n var moduleObject = createInstance(module, modl.args);\n var memberName = this.getMemberName(modName);\n if (modl.isProperty) {\n setValue(memberName, module, this.parent);\n }\n else {\n setValue(memberName, moduleObject, this.parent);\n }\n var loadedModule = modl;\n loadedModule.member = memberName;\n this.loadedModules.push(loadedModule);\n }\n }\n }\n };\n /**\n * To remove the created object while destroying the control\n *\n * @returns {void}\n */\n ModuleLoader.prototype.clean = function () {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var modules = _a[_i];\n if (!modules.isProperty) {\n getValue(modules.member, this.parent).destroy();\n }\n }\n this.loadedModules = [];\n };\n /**\n * Removes all unused modules\n *\n * @param {ModuleDeclaration[]} moduleList ?\n * @returns {void} ?\n */\n ModuleLoader.prototype.clearUnusedModule = function (moduleList) {\n var _this = this;\n var usedModules = moduleList.map(function (arg) { return _this.getMemberName(arg.member); });\n var removableModule = this.loadedModules.filter(function (module) {\n return usedModules.indexOf(module.member) === -1;\n });\n for (var _i = 0, removableModule_1 = removableModule; _i < removableModule_1.length; _i++) {\n var mod = removableModule_1[_i];\n if (!mod.isProperty) {\n getValue(mod.member, this.parent).destroy();\n }\n this.loadedModules.splice(this.loadedModules.indexOf(mod), 1);\n deleteObject(this.parent, mod.member);\n }\n };\n /**\n * To get the name of the member.\n *\n * @param {string} name ?\n * @returns {string} ?\n */\n ModuleLoader.prototype.getMemberName = function (name) {\n return name[0].toLowerCase() + name.substring(1) + MODULE_SUFFIX;\n };\n /**\n * Returns boolean based on whether the module specified is loaded or not\n *\n * @param {string} modName ?\n * @returns {boolean} ?\n */\n ModuleLoader.prototype.isModuleLoaded = function (modName) {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var mod = _a[_i];\n if (mod.member === this.getMemberName(modName)) {\n return true;\n }\n }\n return false;\n };\n return ModuleLoader;\n}());\nexport { ModuleLoader };\n","import { createElement } from './dom';\nimport { getValue, containerObject, setValue, isNullOrUndefined } from './util';\nexport var componentList = ['grid', 'pivotview', 'treegrid', 'spreadsheet', 'rangeNavigator', 'DocumentEditor', 'listbox', 'inplaceeditor', 'PdfViewer', 'richtexteditor', 'DashboardLayout', 'chart', 'stockChart', 'circulargauge', 'diagram', 'heatmap', 'lineargauge', 'maps', 'slider', 'smithchart', 'barcode', 'sparkline', 'treemap', 'bulletChart', 'kanban', 'daterangepicker', 'schedule', 'gantt', 'signature', 'query-builder', 'drop-down-tree', 'carousel', 'filemanager', 'uploader', 'accordion', 'tab', 'treeview'];\nvar bypassKey = [115, 121, 110, 99, 102, 117, 115, 105,\n 111, 110, 46, 105, 115, 76, 105, 99, 86, 97, 108,\n 105, 100, 97, 116, 101, 100];\nvar accountURL;\n/**\n * License validation module\n *\n * @private\n */\nvar LicenseValidator = /** @class */ (function () {\n function LicenseValidator(key) {\n this.isValidated = false;\n this.isLicensed = true;\n this.version = '22';\n this.platform = /JavaScript|ASPNET|ASPNETCORE|ASPNETMVC|FileFormats|essentialstudio/i;\n this.errors = {\n noLicense: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.',\n trailExpired: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.',\n versionMismatched: 'The included Syncfusion license key is invalid.',\n platformMismatched: 'The included Syncfusion license key is invalid.',\n invalidKey: 'The included Syncfusion license key is invalid.'\n };\n /**\n * To manage licensing operation.\n */\n this.manager = (function () {\n var licKey = null;\n /**\n * Sets the license key.\n *\n * @param {string} key - Specifies the license key.\n * @returns {void}\n */\n function set(key) { licKey = key; }\n /**\n * Gets the license key.\n *\n * @returns {string} -Gets the license key.\n */\n function get() { return licKey; }\n return {\n setKey: set,\n getKey: get\n };\n })();\n /**\n * To manage npx licensing operation.\n */\n this.npxManager = (function () {\n var npxLicKey = 'npxKeyReplace';\n /**\n * Gets the license key.\n *\n * @returns {string} - Gets the license key.\n */\n function get() { return npxLicKey; }\n return {\n getKey: get\n };\n })();\n this.manager.setKey(key);\n }\n /**\n * To validate the provided license key.\n */\n LicenseValidator.prototype.validate = function () {\n var contentKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 108, 105, 99, 101, 110, 115, 101, 67, 111, 110, 116, 101, 110, 116];\n var URLKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 99, 108, 97, 105, 109, 65, 99, 99, 111, 117, 110, 116, 85, 82, 76];\n if (!this.isValidated && (containerObject && !getValue(convertToChar(bypassKey), containerObject) && !getValue('Blazor', containerObject))) {\n var validateMsg = void 0;\n var validateURL = void 0;\n if ((this.manager && this.manager.getKey()) || (this.npxManager && this.npxManager.getKey() !== 'npxKeyReplace')) {\n var result = this.getInfoFromKey();\n if (result && result.length) {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n if (!this.platform.test(res.platform) || res.invalidPlatform) {\n validateMsg = this.errors.platformMismatched;\n }\n else if (res.version.indexOf(this.version) === -1) {\n validateMsg = this.errors.versionMismatched;\n validateMsg = validateMsg.replace('##LicenseVersion', res.version);\n validateMsg = validateMsg.replace('##Requireversion', this.version + '.x');\n }\n else if (res.expiryDate) {\n var expDate = new Date(res.expiryDate);\n var currDate = new Date();\n if (expDate !== currDate && expDate < currDate) {\n validateMsg = this.errors.trailExpired;\n }\n else {\n break;\n }\n }\n }\n }\n else {\n validateMsg = this.errors.invalidKey;\n }\n }\n else {\n var licenseContent = getValue(convertToChar(contentKey), containerObject);\n validateURL = getValue(convertToChar(URLKey), containerObject);\n if (licenseContent && licenseContent !== '') {\n validateMsg = licenseContent;\n }\n else {\n validateMsg = this.errors.noLicense;\n }\n }\n if (validateMsg && typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n accountURL = (validateURL && validateURL !== '') ? validateURL : \"https://www.syncfusion.com/account/claim-license-key?pl=SmF2YVNjcmlwdA==&vs=MjI=&utm_source=license&utm_medium=listing&utm_campaign=license-information\";\n var errorDiv = createElement('div', {\n innerHTML: \"\" + validateMsg + ' ' + '
Claim your free account'\n });\n errorDiv.setAttribute('style', \"position: fixed;\\n top: 10px;\\n left: 10px;\\n right: 10px;\\n font-size: 14px;\\n background: #EEF2FF;\\n color: #222222;\\n z-index: 999999999;\\n text-align: left;\\n border: 1px solid #EEEEEE;\\n padding: 10px 11px 10px 50px;\\n border-radius: 8px;\\n font-family: Helvetica Neue, Helvetica, Arial;\");\n document.body.appendChild(errorDiv);\n this.isLicensed = false;\n }\n this.isValidated = true;\n setValue(convertToChar(bypassKey), this.isValidated, containerObject);\n }\n return this.isLicensed;\n };\n LicenseValidator.prototype.getDecryptedData = function (key) {\n try {\n return atob(key);\n }\n catch (error) {\n return '';\n }\n };\n /**\n * Get license information from key.\n *\n * @returns {IValidator} - Get license information from key.\n */\n LicenseValidator.prototype.getInfoFromKey = function () {\n try {\n var licKey = '';\n var pkey = [5439488, 7929856, 5111808, 6488064, 4587520, 7667712, 5439488,\n 6881280, 5177344, 7208960, 4194304, 4456448, 6619136, 7733248, 5242880, 7077888,\n 6356992, 7602176, 4587520, 7274496, 7471104, 7143424];\n var decryptedStr = [];\n var resultArray = [];\n var invalidPlatform = false;\n var isNpxKey = false;\n if (this.manager.getKey()) {\n licKey = this.manager.getKey();\n }\n else {\n isNpxKey = true;\n licKey = this.npxManager.getKey().split('npxKeyReplace')[1];\n }\n var licKeySplit = licKey.split(';');\n for (var _i = 0, licKeySplit_1 = licKeySplit; _i < licKeySplit_1.length; _i++) {\n var lKey = licKeySplit_1[_i];\n var decodeStr = this.getDecryptedData(lKey);\n if (!decodeStr) {\n continue;\n }\n var k = 0;\n var buffr = '';\n if (!isNpxKey) {\n for (var i = 0; i < decodeStr.length; i++, k++) {\n if (k === pkey.length) {\n k = 0;\n }\n var c = decodeStr.charCodeAt(i);\n buffr += String.fromCharCode(c ^ (pkey[parseInt(k.toString(), 10)] >> 16));\n }\n }\n else {\n var charKey = decodeStr[decodeStr.length - 1];\n var decryptedKey = [];\n for (var i = 0; i < decodeStr.length; i++) {\n decryptedKey[parseInt(i.toString(), 10)] = decodeStr[parseInt(i.toString(), 10)].charCodeAt(0) - charKey.charCodeAt(0);\n }\n for (var i = 0; i < decryptedKey.length; i++) {\n buffr += String.fromCharCode(decryptedKey[parseInt(i.toString(), 10)]);\n }\n }\n if (this.platform.test(buffr)) {\n decryptedStr = buffr.split(';');\n invalidPlatform = false;\n // checked the length to verify the key in proper strucutre\n if (decryptedStr.length > 3) {\n resultArray.push({ platform: decryptedStr[0],\n version: decryptedStr[1],\n expiryDate: decryptedStr[2] });\n }\n }\n else if (buffr && buffr.split(';').length > 3) {\n invalidPlatform = true;\n }\n }\n if (invalidPlatform && !resultArray.length) {\n return [{ invalidPlatform: invalidPlatform }];\n }\n else {\n return resultArray.length ? resultArray : null;\n }\n }\n catch (error) {\n return null;\n }\n };\n return LicenseValidator;\n}());\nvar licenseValidator = new LicenseValidator();\n/**\n * Converts the given number to characters.\n *\n * @param {number} cArr - Specifies the license key as number.\n * @returns {string}\n */\nfunction convertToChar(cArr) {\n var ret = '';\n for (var _i = 0, cArr_1 = cArr; _i < cArr_1.length; _i++) {\n var arr = cArr_1[_i];\n ret += String.fromCharCode(arr);\n }\n return ret;\n}\n/**\n * To set license key.\n *\n * @param {string} key - license key\n * @returns {void}\n */\nexport function registerLicense(key) {\n licenseValidator = new LicenseValidator(key);\n}\nexport var validateLicense = function (key) {\n if (key) {\n registerLicense(key);\n }\n return licenseValidator.validate();\n};\nexport var getVersion = function () {\n return licenseValidator.version;\n};\n// Method for create overlay over the sample\nexport var createLicenseOverlay = function () {\n var bannerTemplate = \"\\n
\\n
\\n
\\n \\n
\\n
Claim your FREE account and get a key in less than a minute
\\n
    \\n
  • Access to a 30-day free trial of any of our products.
  • \\n
  • Access to 24x5 support by developers via the support tickets, forum, feature & feedback page and chat.
  • \\n
  • 200+ ebooks on the latest technologies, industry trends, and research topics.\\n
  • \\n
  • Largest collection of over 7,000 flat and wireframe icons for free with Syncfusion Metro Studio.
  • \\n
  • Free and unlimited access to Syncfusion technical blogs and whitepapers.
  • \\n
\\n
Syncfusion is trusted by 29,000+ businesses worldwide
\\n \\n Claim your FREE account\\n
have a Syncfusion account? Sign In
\\n
\\n
\";\n if (typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n var errorBackground = createElement('div', {\n innerHTML: bannerTemplate\n });\n document.body.appendChild(errorBackground);\n }\n};\n","import { getValue, setValue, merge, isBlazor } from './util';\nimport { Base } from './base';\n/**\n * To detect the changes for inner properties.\n *\n * @private\n */\nvar ChildProperty = /** @class */ (function () {\n function ChildProperty(parent, propName, defaultValue, isArray) {\n this.isComplexArraySetter = false;\n this.properties = {};\n this.changedProperties = {};\n this.childChangedProperties = {};\n this.oldProperties = {};\n // eslint-disable-next-line\n this.finalUpdate = function () { };\n this.callChildDataBind = getValue('callChildDataBind', Base);\n this.parentObj = parent;\n this.controlParent = this.parentObj.controlParent || this.parentObj;\n this.propName = propName;\n this.isParentArray = isArray;\n this.setProperties(defaultValue, true);\n }\n /**\n * Updates the property changes\n *\n * @param {boolean} val ?\n * @param {string} propName ?\n * @returns {void} ?\n */\n ChildProperty.prototype.updateChange = function (val, propName) {\n if (val === true) {\n this.parentObj.childChangedProperties[\"\" + propName] = val;\n }\n else {\n delete this.parentObj.childChangedProperties[\"\" + propName];\n }\n if (this.parentObj.updateChange) {\n this.parentObj.updateChange(val, this.parentObj.propName);\n }\n };\n /**\n * Updates time out duration\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.updateTimeOut = function () {\n if (this.parentObj.updateTimeOut) {\n this.parentObj.finalUpdate();\n this.parentObj.updateTimeOut();\n }\n else {\n var changeTime_1 = setTimeout(this.parentObj.dataBind.bind(this.parentObj));\n var clearUpdate = function () {\n clearTimeout(changeTime_1);\n };\n this.finalUpdate = clearUpdate;\n }\n };\n /**\n * Clears changed properties\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.clearChanges = function () {\n this.finalUpdate();\n this.updateChange(false, this.propName);\n this.oldProperties = {};\n this.changedProperties = {};\n };\n /**\n * Set property changes\n *\n * @param {Object} prop ?\n * @param {boolean} muteOnChange ?\n * @returns {void} ?\n */\n ChildProperty.prototype.setProperties = function (prop, muteOnChange) {\n if (muteOnChange === true) {\n merge(this, prop);\n this.updateChange(false, this.propName);\n this.clearChanges();\n }\n else {\n merge(this, prop);\n }\n };\n /**\n * Binds data\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.dataBind = function () {\n this.callChildDataBind(this.childChangedProperties, this);\n if (this.isParentArray) {\n var curIndex = this.parentObj[this.propName].indexOf(this);\n if (Object.keys(this.changedProperties).length) {\n setValue(this.propName + '.' + curIndex, this.changedProperties, this.parentObj.changedProperties);\n setValue(this.propName + '.' + curIndex, this.oldProperties, this.parentObj.oldProperties);\n }\n }\n else {\n this.parentObj.changedProperties[this.propName] = this.changedProperties;\n this.parentObj.oldProperties[this.propName] = this.oldProperties;\n }\n this.clearChanges();\n };\n /**\n * Saves changes to newer values\n *\n * @param {string} key ?\n * @param {Object} newValue ?\n * @param {Object} oldValue ?\n * @param {boolean} restrictServerDataBind ?\n * @returns {void} ?\n */\n ChildProperty.prototype.saveChanges = function (key, newValue, oldValue, restrictServerDataBind) {\n if (this.controlParent.isProtectedOnChange) {\n return;\n }\n if (!restrictServerDataBind) {\n this.serverDataBind(key, newValue, true);\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.updateChange(true, this.propName);\n this.finalUpdate();\n this.updateTimeOut();\n };\n ChildProperty.prototype.serverDataBind = function (key, value, isSaveChanges, action) {\n if (isBlazor() && !this.parentObj.isComplexArraySetter) {\n var parent_1;\n var newChanges = {};\n var parentKey = isSaveChanges ? this.getParentKey(true) + '.' + key : key;\n /* istanbul ignore else */\n if (parentKey.indexOf('.') !== -1) {\n var complexKeys = parentKey.split('.');\n parent_1 = newChanges;\n for (var i = 0; i < complexKeys.length; i++) {\n var isFinal = i === complexKeys.length - 1;\n parent_1[complexKeys[parseInt(i.toString(), 10)]] = isFinal ? value : {};\n parent_1 = isFinal ? parent_1 : parent_1[complexKeys[parseInt(i.toString(), 10)]];\n }\n }\n else {\n newChanges[\"\" + parentKey] = {};\n parent_1 = newChanges[\"\" + parentKey];\n newChanges[\"\" + parentKey][\"\" + key] = value;\n }\n /* istanbul ignore next */\n if (this.isParentArray) {\n var actionProperty = 'ejsAction';\n parent_1[\"\" + actionProperty] = action ? action : 'none';\n }\n this.controlParent.serverDataBind(newChanges);\n }\n };\n ChildProperty.prototype.getParentKey = function (isSaveChanges) {\n // eslint-disable-next-line\n var index = '';\n var propName = this.propName;\n /* istanbul ignore next */\n if (this.isParentArray) {\n index = this.parentObj[this.propName].indexOf(this);\n var valueLength = this.parentObj[this.propName].length;\n valueLength = isSaveChanges ? valueLength : (valueLength > 0 ? valueLength - 1 : 0);\n index = index !== -1 ? '-' + index : '-' + valueLength;\n propName = propName + index;\n }\n if (this.controlParent !== this.parentObj) {\n propName = this.parentObj.getParentKey() + '.' + this.propName + index;\n }\n return propName;\n };\n return ChildProperty;\n}());\nexport { ChildProperty };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isUndefined, getValue, isNullOrUndefined, setValue, uniqueID, isBlazor } from './util';\nimport { ModuleLoader } from './module-loader';\nimport { Base } from './base';\nimport { Observer } from './observer';\nimport { ChildProperty } from './child-property';\nimport { Property, NotifyPropertyChanges } from './notify-property-change';\nimport { onIntlChange, rightToLeft, defaultCulture } from './internationalization';\nimport { createElement, addClass, removeClass, select } from './dom';\nimport { validateLicense, createLicenseOverlay, componentList } from './validate-lic';\nvar componentCount = 0;\nvar lastPageID;\nvar lastHistoryLen = 0;\n// Decalre the static variable to count the instance\nvar instancecount = 0;\n// Decalre the static variable to find if control limit exceed or not\nvar isvalid = true;\n// We have added styles to inline type so here declare the static variable to detect if banner is added or not\nvar isBannerAdded = false;\nexport var versionBasedStatePersistence = false;\n/**\n * To enable or disable version based statePersistence functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable versionBasedStatePersistence option.\n * @returns {void}\n */\nexport function enableVersionBasedPersistence(status) {\n versionBasedStatePersistence = status;\n}\n/**\n * Base class for all Essential JavaScript components\n */\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n /**\n * Initialize the constructor for component base\n *\n * @param {Object} options ?\n * @param {string} selector ?\n */\n function Component(options, selector) {\n var _this = _super.call(this, options, selector) || this;\n _this.randomId = uniqueID();\n /**\n * string template option for Blazor template rendering\n *\n * @private\n */\n _this.isStringTemplate = false;\n _this.needsID = false;\n _this.isReactHybrid = false;\n if (isNullOrUndefined(_this.enableRtl)) {\n _this.setProperties({ 'enableRtl': rightToLeft }, true);\n }\n if (isNullOrUndefined(_this.locale)) {\n _this.setProperties({ 'locale': defaultCulture }, true);\n }\n _this.moduleLoader = new ModuleLoader(_this);\n _this.localObserver = new Observer(_this);\n // tslint:disable-next-line:no-function-constructor-with-string-args\n onIntlChange.on('notifyExternalChange', _this.detectFunction, _this, _this.randomId);\n // Based on the considered control list we have count the instance\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\" && !validateLicense()) {\n if (componentList.indexOf(_this.getModuleName()) !== -1) {\n instancecount = instancecount + 1;\n if (instancecount > 5) {\n isvalid = false;\n }\n }\n }\n if (!isUndefined(selector)) {\n _this.appendTo();\n }\n return _this;\n }\n Component.prototype.requiredModules = function () {\n return [];\n };\n /**\n * Destroys the sub modules while destroying the widget\n *\n * @returns {void} ?\n */\n Component.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.enablePersistence) {\n this.setPersistData();\n this.detachUnloadEvent();\n }\n this.localObserver.destroy();\n if (this.refreshing) {\n return;\n }\n removeClass([this.element], ['e-control']);\n this.trigger('destroyed', { cancel: false });\n _super.prototype.destroy.call(this);\n this.moduleLoader.clean();\n onIntlChange.off('notifyExternalChange', this.detectFunction, this.randomId);\n };\n /**\n * Applies all the pending property changes and render the component again.\n *\n * @returns {void} ?\n */\n Component.prototype.refresh = function () {\n this.refreshing = true;\n this.moduleLoader.clean();\n this.destroy();\n this.clearChanges();\n this.localObserver = new Observer(this);\n this.preRender();\n this.injectModules();\n this.render();\n this.refreshing = false;\n };\n Component.prototype.accessMount = function () {\n if (this.mount && !this.isReactHybrid) {\n this.mount();\n }\n };\n /**\n * Returns the route element of the component\n *\n * @returns {HTMLElement} ?\n */\n Component.prototype.getRootElement = function () {\n if (this.isReactHybrid) {\n // eslint-disable-next-line\n return this.actualElement;\n }\n else {\n return this.element;\n }\n };\n /**\n * Returns the persistence data for component\n *\n * @returns {any} ?\n */\n // eslint-disable-next-line\n Component.prototype.getLocalData = function () {\n var eleId = this.getModuleName() + this.element.id;\n if (versionBasedStatePersistence) {\n return window.localStorage.getItem(eleId + this.ej2StatePersistenceVersion);\n }\n else {\n return window.localStorage.getItem(eleId);\n }\n };\n /**\n * Adding unload event to persist data when enable persistence true\n */\n Component.prototype.attachUnloadEvent = function () {\n this.handleUnload = this.handleUnload.bind(this);\n window.addEventListener('unload', this.handleUnload);\n };\n /**\n * Handling unload event to persist data when enable persistence true\n */\n Component.prototype.handleUnload = function () {\n this.setPersistData();\n };\n /**\n * Removing unload event to persist data when enable persistence true\n */\n Component.prototype.detachUnloadEvent = function () {\n window.removeEventListener('unload', this.handleUnload);\n };\n /**\n * Appends the control within the given HTML element\n *\n * @param {string | HTMLElement} selector - Target element where control needs to be appended\n * @returns {void} ?\n */\n Component.prototype.appendTo = function (selector) {\n if (!isNullOrUndefined(selector) && typeof (selector) === 'string') {\n this.element = select(selector, document);\n }\n else if (!isNullOrUndefined(selector)) {\n this.element = selector;\n }\n if (!isNullOrUndefined(this.element)) {\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-control', moduleClass]);\n this.isProtectedOnChange = false;\n if (this.needsID && !this.element.id) {\n this.element.id = this.getUniqueID(this.getModuleName());\n }\n if (this.enablePersistence) {\n this.mergePersistData();\n this.attachUnloadEvent();\n }\n var inst = getValue('ej2_instances', this.element);\n if (!inst || inst.indexOf(this) === -1) {\n _super.prototype.addInstance.call(this);\n }\n this.preRender();\n this.injectModules();\n // Checked weather cases are valid or not. If control leads to more than five counts \n if (!isvalid && !isBannerAdded) {\n createLicenseOverlay();\n isBannerAdded = true;\n }\n this.render();\n if (!this.mount) {\n this.trigger('created');\n }\n else {\n this.accessMount();\n }\n }\n };\n /**\n * It is used to process the post rendering functionalities to a component.\n *\n * @param {Node} wrapperElement ?\n * @returns {void} ?\n */\n Component.prototype.renderComplete = function (wrapperElement) {\n if (isBlazor()) {\n var sfBlazor = 'sfBlazor';\n // eslint-disable-next-line\n window[sfBlazor].renderComplete(this.element, wrapperElement);\n }\n this.isRendered = true;\n };\n /**\n * When invoked, applies the pending property changes immediately to the component.\n *\n * @returns {void} ?\n */\n Component.prototype.dataBind = function () {\n this.injectModules();\n _super.prototype.dataBind.call(this);\n };\n /**\n * Attach one or more event handler to the current component context.\n * It is used for internal handling event internally within the component only.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the handler to run when the event occurs\n * @param {Object} context - optional parameter Specifies the context to be bind in the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.on = function (event, handler, context) {\n if (typeof event === 'string') {\n this.localObserver.on(event, handler, context);\n }\n else {\n for (var _i = 0, event_1 = event; _i < event_1.length; _i++) {\n var arg = event_1[_i];\n this.localObserver.on(arg.event, arg.handler, arg.context);\n }\n }\n };\n /**\n * To remove one or more event handler that has been attached with the on() method.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the function to run when the event occurs\n * @returns {void} ?\n * @private\n */\n Component.prototype.off = function (event, handler) {\n if (typeof event === 'string') {\n this.localObserver.off(event, handler);\n }\n else {\n for (var _i = 0, event_2 = event; _i < event_2.length; _i++) {\n var arg = event_2[_i];\n this.localObserver.off(arg.event, arg.handler);\n }\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.notify = function (property, argument) {\n if (this.isDestroyed !== true) {\n this.localObserver.notify(property, argument);\n }\n };\n /**\n * Get injected modules\n *\n * @returns {Function} ?\n * @private\n */\n Component.prototype.getInjectedModules = function () {\n return this.injectedModules;\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @param {Function} moduleList ?\n * @returns {void} ?\n */\n Component.Inject = function () {\n var moduleList = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n moduleList[_i] = arguments[_i];\n }\n if (!this.prototype.injectedModules) {\n this.prototype.injectedModules = [];\n }\n for (var i = 0; i < moduleList.length; i++) {\n if (this.prototype.injectedModules.indexOf(moduleList[parseInt(i.toString(), 10)]) === -1) {\n this.prototype.injectedModules.push(moduleList[parseInt(i.toString(), 10)]);\n }\n }\n };\n /**\n * This is a instance method to create an element.\n *\n * @param {string} tagName ?\n * @param {ElementProperties} prop ?\n * @param {boolean} isVDOM ?\n * @returns {any} ?\n * @private\n */\n // eslint-disable-next-line\n Component.prototype.createElement = function (tagName, prop, isVDOM) {\n return createElement(tagName, prop);\n };\n /**\n *\n * @param {Function} handler - handler to be triggered after state Updated.\n * @param {any} argument - Arguments to be passed to caller.\n * @returns {void} .\n * @private\n */\n // eslint-disable-next-line\n Component.prototype.triggerStateChange = function (handler, argument) {\n if (this.isReactHybrid) {\n // eslint-disable-next-line\n this.setState();\n this.currentContext = { calls: handler, args: argument };\n }\n };\n // tslint: enable: no-any\n Component.prototype.injectModules = function () {\n if (this.injectedModules && this.injectedModules.length) {\n this.moduleLoader.inject(this.requiredModules(), this.injectedModules);\n }\n };\n Component.prototype.detectFunction = function (args) {\n var prop = Object.keys(args);\n if (prop.length) {\n this[prop[0]] = args[prop[0]];\n }\n };\n Component.prototype.mergePersistData = function () {\n var data;\n if (versionBasedStatePersistence) {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion);\n }\n else {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n }\n if (!(isNullOrUndefined(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n };\n Component.prototype.setPersistData = function () {\n if (!this.isDestroyed) {\n if (versionBasedStatePersistence) {\n window.localStorage.setItem(this.getModuleName() +\n this.element.id + this.ej2StatePersistenceVersion, this.getPersistData());\n }\n else {\n window.localStorage.setItem(this.getModuleName() + this.element.id, this.getPersistData());\n }\n }\n };\n // eslint-disable-next-line\n Component.prototype.renderReactTemplates = function (callback) {\n if (!isNullOrUndefined(callback)) {\n callback();\n }\n };\n // eslint-disable-next-line\n Component.prototype.clearTemplate = function (templateName, index) {\n //No Code\n };\n Component.prototype.getUniqueID = function (definedName) {\n if (this.isHistoryChanged()) {\n componentCount = 0;\n }\n lastPageID = this.pageID(location.href);\n lastHistoryLen = history.length;\n return definedName + '_' + lastPageID + '_' + componentCount++;\n };\n Component.prototype.pageID = function (url) {\n var hash = 0;\n if (url.length === 0) {\n return hash;\n }\n for (var i = 0; i < url.length; i++) {\n var char = url.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return Math.abs(hash);\n };\n Component.prototype.isHistoryChanged = function () {\n return lastPageID !== this.pageID(location.href) || lastHistoryLen !== history.length;\n };\n Component.prototype.addOnPersist = function (options) {\n var _this = this;\n var persistObj = {};\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var key = options_1[_i];\n var objValue = void 0;\n // eslint-disable-next-line\n objValue = getValue(key, this);\n if (!isUndefined(objValue)) {\n setValue(key, this.getActualProperties(objValue), persistObj);\n }\n }\n return JSON.stringify(persistObj, function (key, value) {\n return _this.getActualProperties(value);\n });\n };\n Component.prototype.getActualProperties = function (obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n };\n Component.prototype.ignoreOnPersist = function (options) {\n return JSON.stringify(this.iterateJsonProperties(this.properties, options));\n };\n Component.prototype.iterateJsonProperties = function (obj, ignoreList) {\n var newObj = {};\n var _loop_1 = function (key) {\n if (ignoreList.indexOf(key) === -1) {\n // eslint-disable-next-line\n var value = obj[key];\n if (typeof value === 'object' && !(value instanceof Array)) {\n var newList = ignoreList.filter(function (str) {\n var regExp = RegExp;\n return new regExp(key + '.').test(str);\n }).map(function (str) {\n return str.replace(key + '.', '');\n });\n newObj[\"\" + key] = this_1.iterateJsonProperties(this_1.getActualProperties(value), newList);\n }\n else {\n newObj[\"\" + key] = value;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n return newObj;\n };\n __decorate([\n Property(false)\n ], Component.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"enableRtl\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"locale\", void 0);\n Component = __decorate([\n NotifyPropertyChanges\n ], Component);\n return Component;\n}(Base));\nexport { Component };\n//Function handling for page navigation detection\n/* istanbul ignore next */\n(function () {\n if (typeof window !== 'undefined') {\n window.addEventListener('popstate', \n /* istanbul ignore next */\n function () {\n componentCount = 0;\n });\n }\n})();\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible } from './dom';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { ChildProperty } from './child-property';\nimport { select, closest, setStyleAttribute, addClass, createElement } from './dom';\nimport { extend, isUndefined, isNullOrUndefined, compareElementParent, isBlazor } from './util';\nvar defaultPosition = { left: 0, top: 0, bottom: 0, right: 0 };\nvar positionProp = ['offsetLeft', 'offsetTop'];\nvar axisMapper = ['x', 'y'];\nvar axisValueMapper = ['left', 'top'];\nvar isDraggedObject = { isDragged: false };\n/**\n * Specifies the position coordinates\n */\nvar Position = /** @class */ (function (_super) {\n __extends(Position, _super);\n function Position() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Position.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], Position.prototype, \"top\", void 0);\n return Position;\n}(ChildProperty));\nexport { Position };\n/**\n * Draggable Module provides support to enable draggable functionality in Dom Elements.\n * ```html\n *
Draggable
\n * \n * ```\n */\nvar Draggable = /** @class */ (function (_super) {\n __extends(Draggable, _super);\n function Draggable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.dragLimit = Draggable_1.getDefaultPosition();\n _this.borderWidth = Draggable_1.getDefaultPosition();\n _this.padding = Draggable_1.getDefaultPosition();\n _this.diffX = 0;\n _this.prevLeft = 0;\n _this.prevTop = 0;\n _this.dragProcessStarted = false;\n _this.eleTop = 0;\n /* eslint-disable @typescript-eslint/no-explicit-any */\n _this.tapHoldTimer = 0;\n _this.externalInitialize = false;\n _this.diffY = 0;\n _this.parentScrollX = 0;\n _this.parentScrollY = 0;\n _this.droppables = {};\n _this.bind();\n return _this;\n }\n Draggable_1 = Draggable;\n Draggable.prototype.bind = function () {\n this.toggleEvents();\n if (Browser.isIE) {\n addClass([this.element], 'e-block-touch');\n }\n this.droppables[this.scope] = {};\n };\n Draggable.getDefaultPosition = function () {\n return extend({}, defaultPosition);\n };\n Draggable.prototype.toggleEvents = function (isUnWire) {\n var ele;\n if (!isUndefined(this.handle)) {\n ele = select(this.handle, this.element);\n }\n var handler = (this.enableTapHold && Browser.isDevice && Browser.isTouch) ? this.mobileInitialize : this.initialize;\n if (isUnWire) {\n EventHandler.remove(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler, this);\n }\n };\n /* istanbul ignore next */\n Draggable.prototype.mobileInitialize = function (evt) {\n var _this = this;\n var target = evt.currentTarget;\n this.tapHoldTimer = setTimeout(function () {\n _this.externalInitialize = true;\n _this.removeTapholdTimer();\n _this.initialize(evt, target);\n }, this.tapHoldThreshold);\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer);\n };\n /* istanbul ignore next */\n Draggable.prototype.getScrollableParent = function (element, axis) {\n var scroll = { 'vertical': 'scrollHeight', 'horizontal': 'scrollWidth' };\n var client = { 'vertical': 'clientHeight', 'horizontal': 'clientWidth' };\n if (isNullOrUndefined(element)) {\n return null;\n }\n if (element[scroll[\"\" + axis]] > element[client[\"\" + axis]]) {\n if (axis === 'vertical' ? element.scrollTop > 0 : element.scrollLeft > 0) {\n if (axis === 'vertical') {\n this.parentScrollY = this.parentScrollY +\n (this.parentScrollY === 0 ? element.scrollTop : element.scrollTop - this.parentScrollY);\n this.tempScrollHeight = element.scrollHeight;\n }\n else {\n this.parentScrollX = this.parentScrollX +\n (this.parentScrollX === 0 ? element.scrollLeft : element.scrollLeft - this.parentScrollX);\n this.tempScrollWidth = element.scrollWidth;\n }\n if (!isNullOrUndefined(element)) {\n return this.getScrollableParent(element.parentNode, axis);\n }\n else {\n return element;\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n };\n Draggable.prototype.getScrollableValues = function () {\n this.parentScrollX = 0;\n this.parentScrollY = 0;\n var isModalDialog = this.element.classList.contains('e-dialog') && this.element.classList.contains('e-dlg-modal');\n var verticalScrollParent = this.getScrollableParent(this.element.parentNode, 'vertical');\n var horizontalScrollParent = this.getScrollableParent(this.element.parentNode, 'horizontal');\n };\n Draggable.prototype.initialize = function (evt, curTarget) {\n this.currentStateTarget = evt.target;\n if (this.isDragStarted()) {\n return;\n }\n else {\n this.isDragStarted(true);\n this.externalInitialize = false;\n }\n this.target = (evt.currentTarget || curTarget);\n this.dragProcessStarted = false;\n if (this.abort) {\n /* tslint:disable no-any */\n var abortSelectors = this.abort;\n if (typeof abortSelectors === 'string') {\n abortSelectors = [abortSelectors];\n }\n for (var i = 0; i < abortSelectors.length; i++) {\n if (!isNullOrUndefined(closest(evt.target, abortSelectors[parseInt(i.toString(), 10)]))) {\n /* istanbul ignore next */\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n return;\n }\n }\n }\n if (this.preventDefault && !isUndefined(evt.changedTouches) && evt.type !== 'touchstart') {\n evt.preventDefault();\n }\n this.element.setAttribute('aria-grabbed', 'true');\n var intCoord = this.getCoordinates(evt);\n this.initialPosition = { x: intCoord.pageX, y: intCoord.pageY };\n if (!this.clone) {\n var pos = this.element.getBoundingClientRect();\n this.getScrollableValues();\n if (evt.clientX === evt.pageX) {\n this.parentScrollX = 0;\n }\n if (evt.clientY === evt.pageY) {\n this.parentScrollY = 0;\n }\n this.relativeXPosition = intCoord.pageX - (pos.left + this.parentScrollX);\n this.relativeYPosition = intCoord.pageY - (pos.top + this.parentScrollY);\n }\n if (this.externalInitialize) {\n this.intDragStart(evt);\n }\n else {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy, this);\n }\n this.toggleEvents(true);\n if (evt.type !== 'touchstart' && this.isPreventSelect) {\n document.body.classList.add('e-prevent-select');\n }\n this.externalInitialize = false;\n EventHandler.trigger(document.documentElement, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, evt);\n };\n Draggable.prototype.intDragStart = function (evt) {\n this.removeTapholdTimer();\n var isChangeTouch = !isUndefined(evt.changedTouches);\n if (isChangeTouch && (evt.changedTouches.length !== 1)) {\n return;\n }\n var intCordinate = this.getCoordinates(evt);\n var pos;\n var styleProp = getComputedStyle(this.element);\n this.margin = {\n left: parseInt(styleProp.marginLeft, 10),\n top: parseInt(styleProp.marginTop, 10),\n right: parseInt(styleProp.marginRight, 10),\n bottom: parseInt(styleProp.marginBottom, 10)\n };\n var element = this.element;\n if (this.clone && this.dragTarget) {\n var intClosest = closest(evt.target, this.dragTarget);\n if (!isNullOrUndefined(intClosest)) {\n element = intClosest;\n }\n }\n /* istanbul ignore next */\n if (this.isReplaceDragEle) {\n element = this.currentStateCheck(evt.target, element);\n }\n this.offset = this.calculateParentPosition(element);\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var x = this.initialPosition.x - intCordinate.pageX;\n var y = this.initialPosition.y - intCordinate.pageY;\n var distance = Math.sqrt((x * x) + (y * y));\n if ((distance >= this.distance || this.externalInitialize)) {\n var ele = this.getHelperElement(evt);\n if (!ele || isNullOrUndefined(ele)) {\n return;\n }\n if (isChangeTouch) {\n evt.preventDefault();\n }\n var dragTargetElement = this.helperElement = ele;\n this.parentClientRect = this.calculateParentPosition(dragTargetElement.offsetParent);\n if (this.dragStart) {\n var curTarget = this.getProperTargetElement(evt);\n var args = {\n event: evt,\n element: element,\n target: curTarget,\n bindEvents: isBlazor() ? this.bindDragEvents.bind(this) : null,\n dragElement: dragTargetElement\n };\n this.trigger('dragStart', args);\n }\n if (this.dragArea) {\n this.setDragArea();\n }\n else {\n this.dragLimit = { left: 0, right: 0, bottom: 0, top: 0 };\n this.borderWidth = { top: 0, left: 0 };\n }\n pos = { left: this.position.left - this.parentClientRect.left, top: this.position.top - this.parentClientRect.top };\n if (this.clone && !this.enableTailMode) {\n this.diffX = this.position.left - this.offset.left;\n this.diffY = this.position.top - this.offset.top;\n }\n this.getScrollableValues();\n // when drag element has margin-top\n var styles = getComputedStyle(element);\n var marginTop = parseFloat(styles.marginTop);\n /* istanbul ignore next */\n if (this.clone && marginTop !== 0) {\n pos.top += marginTop;\n }\n this.eleTop = !isNaN(parseFloat(styles.top)) ? parseFloat(styles.top) - this.offset.top : 0;\n /* istanbul ignore next */\n // if (this.eleTop > 0) {\n // pos.top += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n pos.top -= this.parentScrollY;\n pos.left -= this.parentScrollX;\n }\n var posValue = this.getProcessedPositionValue({\n top: (pos.top - this.diffY) + 'px',\n left: (pos.left - this.diffX) + 'px'\n });\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n pos.top += this.dragArea.scrollTop;\n }\n this.dragElePosition = { top: pos.top, left: pos.left };\n setStyleAttribute(dragTargetElement, this.getDragPosition({ position: 'absolute', left: posValue.left, top: posValue.top }));\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n if (!isBlazor()) {\n this.bindDragEvents(dragTargetElement);\n }\n }\n };\n Draggable.prototype.bindDragEvents = function (dragTargetElement) {\n if (isVisible(dragTargetElement)) {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop, this);\n this.setGlobalDroppables(false, this.element, dragTargetElement);\n }\n else {\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n }\n };\n Draggable.prototype.elementInViewport = function (el) {\n this.top = el.offsetTop;\n this.left = el.offsetLeft;\n this.width = el.offsetWidth;\n this.height = el.offsetHeight;\n while (el.offsetParent) {\n el = el.offsetParent;\n this.top += el.offsetTop;\n this.left += el.offsetLeft;\n }\n return (this.top >= window.pageYOffset &&\n this.left >= window.pageXOffset &&\n (this.top + this.height) <= (window.pageYOffset + window.innerHeight) &&\n (this.left + this.width) <= (window.pageXOffset + window.innerWidth));\n };\n Draggable.prototype.getProcessedPositionValue = function (value) {\n if (this.queryPositionInfo) {\n return this.queryPositionInfo(value);\n }\n return value;\n };\n Draggable.prototype.calculateParentPosition = function (ele) {\n if (isNullOrUndefined(ele)) {\n return { left: 0, top: 0 };\n }\n var rect = ele.getBoundingClientRect();\n var style = getComputedStyle(ele);\n return {\n left: (rect.left + window.pageXOffset) - parseInt(style.marginLeft, 10),\n top: (rect.top + window.pageYOffset) - parseInt(style.marginTop, 10)\n };\n };\n // tslint:disable-next-line:max-func-body-length\n Draggable.prototype.intDrag = function (evt) {\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n if (this.clone && evt.changedTouches && Browser.isDevice && Browser.isTouch) {\n evt.preventDefault();\n }\n var left;\n var top;\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var docHeight = this.getDocumentWidthHeight('Height');\n if (docHeight < this.position.top) {\n this.position.top = docHeight;\n }\n var docWidth = this.getDocumentWidthHeight('Width');\n if (docWidth < this.position.left) {\n this.position.left = docWidth;\n }\n if (this.drag) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('drag', { event: evt, element: this.element, target: curTarget });\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n /* tslint:disable no-any */\n var flag = true;\n if (this.hoverObject) {\n if (this.hoverObject.instance !== eleObj.instance) {\n this.triggerOutFunction(evt, eleObj);\n }\n else {\n flag = false;\n }\n }\n if (flag) {\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intOver(evt, eleObj.target);\n this.hoverObject = eleObj;\n }\n }\n else if (this.hoverObject) {\n this.triggerOutFunction(evt, eleObj);\n }\n var helperElement = this.droppables[this.scope].helper;\n this.parentClientRect = this.calculateParentPosition(this.helperElement.offsetParent);\n var tLeft = this.parentClientRect.left;\n var tTop = this.parentClientRect.top;\n var intCoord = this.getCoordinates(evt);\n var pagex = intCoord.pageX;\n var pagey = intCoord.pageY;\n var dLeft = this.position.left - this.diffX;\n var dTop = this.position.top - this.diffY;\n var styles = getComputedStyle(helperElement);\n if (this.dragArea) {\n if (this.enableAutoScroll) {\n this.setDragArea();\n }\n if (this.pageX !== pagex || this.skipDistanceCheck) {\n var helperWidth = helperElement.offsetWidth + (parseFloat(styles.marginLeft)\n + parseFloat(styles.marginRight));\n if (this.dragLimit.left > dLeft && dLeft > 0) {\n left = this.dragLimit.left;\n }\n else if (this.dragLimit.right + window.pageXOffset < dLeft + helperWidth && dLeft > 0) {\n left = dLeft - (dLeft - this.dragLimit.right) + window.pageXOffset - helperWidth;\n }\n else {\n left = dLeft < 0 ? this.dragLimit.left : dLeft;\n }\n }\n if (this.pageY !== pagey || this.skipDistanceCheck) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n if (this.dragLimit.top > dTop && dTop > 0) {\n top = this.dragLimit.top;\n }\n else if (this.dragLimit.bottom + window.pageYOffset < dTop + helperHeight && dTop > 0) {\n top = dTop - (dTop - this.dragLimit.bottom) + window.pageYOffset - helperHeight;\n }\n else {\n top = dTop < 0 ? this.dragLimit.top : dTop;\n }\n }\n }\n else {\n left = dLeft;\n top = dTop;\n }\n var iTop = tTop + this.borderWidth.top;\n var iLeft = tLeft + this.borderWidth.left;\n if (this.dragProcessStarted) {\n if (isNullOrUndefined(top)) {\n top = this.prevTop;\n }\n if (isNullOrUndefined(left)) {\n left = this.prevLeft;\n }\n }\n var draEleTop;\n var draEleLeft;\n if (this.helperElement.classList.contains('e-treeview')) {\n if (this.dragArea) {\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - this.borderWidth.top);\n draEleLeft = (left - iLeft) < 0 ? this.dragLimit.left : (left - this.borderWidth.left);\n }\n else {\n draEleTop = top - this.borderWidth.top;\n draEleLeft = left - this.borderWidth.left;\n }\n }\n else {\n if (this.dragArea) {\n var isDialogEle = this.helperElement.classList.contains('e-dialog');\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - iTop);\n draEleLeft = (left - iLeft) < 0 ? isDialogEle ? (left - (iLeft - this.borderWidth.left)) :\n this.dragElePosition.left : (left - iLeft);\n }\n else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\n }\n }\n var marginTop = parseFloat(getComputedStyle(this.element).marginTop);\n // when drag-element has margin-top\n /* istanbul ignore next */\n if (marginTop > 0) {\n if (this.clone) {\n draEleTop += marginTop;\n if (dTop < 0) {\n if ((marginTop + dTop) >= 0) {\n draEleTop = marginTop + dTop;\n }\n else {\n draEleTop -= marginTop;\n }\n }\n if (this.dragArea) {\n draEleTop = (this.dragLimit.bottom < draEleTop) ? this.dragLimit.bottom : draEleTop;\n }\n }\n if ((top - iTop) < 0) {\n if (dTop + marginTop + (helperElement.offsetHeight - iTop) >= 0) {\n var tempDraEleTop = this.dragLimit.top + dTop - iTop;\n if ((tempDraEleTop + marginTop + iTop) < 0) {\n draEleTop -= marginTop + iTop;\n }\n else {\n draEleTop = tempDraEleTop;\n }\n }\n else {\n draEleTop -= marginTop + iTop;\n }\n }\n }\n if (this.dragArea && this.helperElement.classList.contains('e-treeview')) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n draEleTop = (draEleTop + helperHeight) > this.dragLimit.bottom ? (this.dragLimit.bottom - helperHeight) : draEleTop;\n }\n /* istanbul ignore next */\n // if(this.eleTop > 0) {\n // draEleTop += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n draEleTop -= this.parentScrollY;\n draEleLeft -= this.parentScrollX;\n }\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n draEleTop += this.dragArea.scrollTop;\n }\n var dragValue = this.getProcessedPositionValue({ top: draEleTop + 'px', left: draEleLeft + 'px' });\n setStyleAttribute(helperElement, this.getDragPosition(dragValue));\n if (!this.elementInViewport(helperElement) && this.enableAutoScroll && !this.helperElement.classList.contains('e-treeview')) {\n this.helperElement.scrollIntoView();\n }\n var elements = document.querySelectorAll(':hover');\n if (this.enableAutoScroll && this.helperElement.classList.contains('e-treeview')) {\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n /* tslint:disable no-any */\n var scrollParent = this.getScrollParent(elements, false);\n if (this.elementInViewport(this.helperElement)) {\n this.getScrollPosition(scrollParent, draEleTop);\n }\n else if (!this.elementInViewport(this.helperElement)) {\n elements = [].slice.call(document.querySelectorAll(':hover'));\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n scrollParent = this.getScrollParent(elements, true);\n this.getScrollPosition(scrollParent, draEleTop);\n }\n }\n this.dragProcessStarted = true;\n this.prevLeft = left;\n this.prevTop = top;\n this.position.left = left;\n this.position.top = top;\n this.pageX = pagex;\n this.pageY = pagey;\n };\n /* tslint:disable no-any */\n Draggable.prototype.getScrollParent = function (node, reverse) {\n /* tslint:disable no-any */\n var nodeEl = reverse ? node.reverse() : node;\n var hasScroll;\n for (var i = nodeEl.length - 1; i >= 0; i--) {\n hasScroll = window.getComputedStyle(nodeEl[parseInt(i.toString(), 10)])['overflow-y'];\n if ((hasScroll === 'auto' || hasScroll === 'scroll')\n && nodeEl[parseInt(i.toString(), 10)].scrollHeight > nodeEl[parseInt(i.toString(), 10)].clientHeight) {\n return nodeEl[parseInt(i.toString(), 10)];\n }\n }\n hasScroll = window.getComputedStyle(document.scrollingElement)['overflow-y'];\n if (hasScroll === 'visible') {\n document.scrollingElement.style.overflow = 'auto';\n return document.scrollingElement;\n }\n };\n Draggable.prototype.getScrollPosition = function (nodeEle, draEleTop) {\n if (nodeEle && nodeEle === document.scrollingElement) {\n if ((nodeEle.clientHeight + document.scrollingElement.scrollTop - this.helperElement.clientHeight) < draEleTop\n && nodeEle.getBoundingClientRect().height + this.parentClientRect.top > draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.scrollTop > draEleTop - this.helperElement.clientHeight) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n else if (nodeEle && nodeEle !== document.scrollingElement) {\n if ((nodeEle.clientHeight + nodeEle.getBoundingClientRect().top - this.helperElement.clientHeight + document.scrollingElement.scrollTop) < draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.getBoundingClientRect().top > (draEleTop - this.helperElement.clientHeight - document.scrollingElement.scrollTop)) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n };\n Draggable.prototype.getPathElements = function (evt) {\n var elementTop = evt.clientX > 0 ? evt.clientX : 0;\n var elementLeft = evt.clientY > 0 ? evt.clientY : 0;\n return document.elementsFromPoint(elementTop, elementLeft);\n };\n Draggable.prototype.triggerOutFunction = function (evt, eleObj) {\n this.hoverObject.instance.intOut(evt, eleObj.target);\n this.hoverObject.instance.dragData[this.scope] = null;\n this.hoverObject = null;\n };\n Draggable.prototype.getDragPosition = function (dragValue) {\n var temp = extend({}, dragValue);\n if (this.axis) {\n if (this.axis === 'x') {\n delete temp.top;\n }\n else if (this.axis === 'y') {\n delete temp.left;\n }\n }\n return temp;\n };\n Draggable.prototype.getDocumentWidthHeight = function (str) {\n var docBody = document.body;\n var docEle = document.documentElement;\n var returnValue = Math.max(docBody['scroll' + str], docEle['scroll' + str], docBody['offset' + str], docEle['offset' + str], docEle['client' + str]);\n return returnValue;\n };\n Draggable.prototype.intDragStop = function (evt) {\n this.dragProcessStarted = false;\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n var type = ['touchend', 'pointerup', 'mouseup'];\n if (type.indexOf(evt.type) !== -1) {\n if (this.dragStop) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('dragStop', { event: evt, element: this.element, target: curTarget, helper: this.helperElement });\n }\n this.intDestroy(evt);\n }\n else {\n this.element.setAttribute('aria-grabbed', 'false');\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n eleObj.instance.dragStopCalled = true;\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intDrop(evt, eleObj.target);\n }\n this.setGlobalDroppables(true);\n document.body.classList.remove('e-prevent-select');\n };\n /**\n * @private\n */\n Draggable.prototype.intDestroy = function (evt) {\n this.dragProcessStarted = false;\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n this.element.setAttribute('aria-grabbed', 'false');\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag);\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n };\n // triggers when property changed\n Draggable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Draggable.prototype.getModuleName = function () {\n return 'draggable';\n };\n Draggable.prototype.isDragStarted = function (change) {\n if (change) {\n isDraggedObject.isDragged = !isDraggedObject.isDragged;\n }\n return isDraggedObject.isDragged;\n };\n Draggable.prototype.setDragArea = function () {\n var eleWidthBound;\n var eleHeightBound;\n var top = 0;\n var left = 0;\n var ele;\n var type = typeof this.dragArea;\n if (type === 'string') {\n ele = select(this.dragArea);\n }\n else {\n ele = this.dragArea;\n }\n if (ele) {\n var elementArea = ele.getBoundingClientRect();\n eleWidthBound = ele.scrollWidth ? ele.scrollWidth : elementArea.right - elementArea.left;\n eleHeightBound = ele.scrollHeight ? (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) ? ele.clientHeight : ele.scrollHeight : elementArea.bottom - elementArea.top;\n var keys = ['Top', 'Left', 'Bottom', 'Right'];\n var styles = getComputedStyle(ele);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[parseInt(i.toString(), 10)];\n var tborder = styles['border' + key + 'Width'];\n var tpadding = styles['padding' + key];\n var lowerKey = key.toLowerCase();\n this.borderWidth[\"\" + lowerKey] = isNaN(parseFloat(tborder)) ? 0 : parseFloat(tborder);\n this.padding[\"\" + lowerKey] = isNaN(parseFloat(tpadding)) ? 0 : parseFloat(tpadding);\n }\n if (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) {\n top = elementArea.top + document.scrollingElement.scrollTop;\n }\n else {\n top = elementArea.top;\n }\n left = elementArea.left;\n this.dragLimit.left = left + this.borderWidth.left + this.padding.left;\n this.dragLimit.top = ele.offsetTop + this.borderWidth.top + this.padding.top;\n this.dragLimit.right = left + eleWidthBound - (this.borderWidth.right + this.padding.right);\n this.dragLimit.bottom = top + eleHeightBound - (this.borderWidth.bottom + this.padding.bottom);\n }\n };\n Draggable.prototype.getProperTargetElement = function (evt) {\n var intCoord = this.getCoordinates(evt);\n var ele;\n var prevStyle = this.helperElement.style.pointerEvents || '';\n var isPointer = evt.type.indexOf('pointer') !== -1 && Browser.info.name === 'safari' && parseInt(Browser.info.version) > 12;\n if (compareElementParent(evt.target, this.helperElement) || evt.type.indexOf('touch') !== -1 || isPointer) {\n this.helperElement.style.pointerEvents = 'none';\n ele = document.elementFromPoint(intCoord.clientX, intCoord.clientY);\n this.helperElement.style.pointerEvents = prevStyle;\n }\n else {\n ele = evt.target;\n }\n return ele;\n };\n /* istanbul ignore next */\n Draggable.prototype.currentStateCheck = function (ele, oldEle) {\n var elem;\n if (!isNullOrUndefined(this.currentStateTarget) && this.currentStateTarget !== ele) {\n elem = this.currentStateTarget;\n }\n else {\n elem = !isNullOrUndefined(oldEle) ? oldEle : ele;\n }\n return elem;\n };\n Draggable.prototype.getMousePosition = function (evt, isdragscroll) {\n /* tslint:disable no-any */\n var dragEle = evt.srcElement !== undefined ? evt.srcElement : evt.target;\n var intCoord = this.getCoordinates(evt);\n var pageX;\n var pageY;\n var isOffsetParent = isNullOrUndefined(dragEle.offsetParent);\n /* istanbul ignore next */\n if (isdragscroll) {\n pageX = this.clone ? intCoord.pageX :\n (intCoord.pageX + (isOffsetParent ? 0 : dragEle.offsetParent.scrollLeft)) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY :\n (intCoord.pageY + (isOffsetParent ? 0 : dragEle.offsetParent.scrollTop)) - this.relativeYPosition;\n }\n else {\n pageX = this.clone ? intCoord.pageX : (intCoord.pageX + window.pageXOffset) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY : (intCoord.pageY + window.pageYOffset) - this.relativeYPosition;\n }\n if (document.scrollingElement && (!isdragscroll && !this.clone)) {\n var isVerticalScroll = document.scrollingElement.scrollHeight > 0 && document.scrollingElement.scrollHeight > document.scrollingElement.clientHeight && document.scrollingElement.scrollTop > 0;\n var isHorrizontalScroll = document.scrollingElement.scrollWidth > 0 && document.scrollingElement.scrollWidth > document.scrollingElement.clientWidth && document.scrollingElement.scrollLeft > 0;\n pageX = isHorrizontalScroll ? pageX - document.scrollingElement.scrollLeft : pageX;\n pageY = isVerticalScroll ? pageY - document.scrollingElement.scrollTop : pageY;\n }\n return {\n left: pageX - (this.margin.left + this.cursorAt.left),\n top: pageY - (this.margin.top + this.cursorAt.top)\n };\n };\n Draggable.prototype.getCoordinates = function (evt) {\n if (evt.type.indexOf('touch') > -1) {\n return evt.changedTouches[0];\n }\n return evt;\n };\n Draggable.prototype.getHelperElement = function (evt) {\n var element;\n if (this.clone) {\n if (this.helper) {\n element = this.helper({ sender: evt, element: this.target });\n }\n else {\n element = createElement('div', { className: 'e-drag-helper e-block-touch', innerHTML: 'Draggable' });\n document.body.appendChild(element);\n }\n }\n else {\n element = this.element;\n }\n return element;\n };\n Draggable.prototype.setGlobalDroppables = function (reset, drag, helper) {\n this.droppables[this.scope] = reset ? null : {\n draggable: drag,\n helper: helper,\n draggedElement: this.element\n };\n };\n Draggable.prototype.checkTargetElement = function (evt) {\n var target = this.getProperTargetElement(evt);\n var dropIns = this.getDropInstance(target);\n if (!dropIns && target && !isNullOrUndefined(target.parentNode)) {\n var parent_1 = closest(target.parentNode, '.e-droppable') || target.parentElement;\n if (parent_1) {\n dropIns = this.getDropInstance(parent_1);\n }\n }\n return { target: target, instance: dropIns };\n };\n Draggable.prototype.getDropInstance = function (ele) {\n var name = 'getModuleName';\n var drop;\n var eleInst = ele && ele.ej2_instances;\n if (eleInst) {\n for (var _i = 0, eleInst_1 = eleInst; _i < eleInst_1.length; _i++) {\n var inst = eleInst_1[_i];\n if (inst[\"\" + name]() === 'droppable') {\n drop = inst;\n break;\n }\n }\n }\n return drop;\n };\n Draggable.prototype.destroy = function () {\n this.toggleEvents(true);\n _super.prototype.destroy.call(this);\n };\n var Draggable_1;\n __decorate([\n Complex({}, Position)\n ], Draggable.prototype, \"cursorAt\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"clone\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"dragArea\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isDragScroll\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isReplaceDragEle\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"isPreventSelect\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStop\", void 0);\n __decorate([\n Property(1)\n ], Draggable.prototype, \"distance\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"handle\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"abort\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"helper\", void 0);\n __decorate([\n Property('default')\n ], Draggable.prototype, \"scope\", void 0);\n __decorate([\n Property('')\n ], Draggable.prototype, \"dragTarget\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"axis\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"queryPositionInfo\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTailMode\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"skipDistanceCheck\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"preventDefault\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableAutoScroll\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTapHold\", void 0);\n __decorate([\n Property(750)\n ], Draggable.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableScrollHandler\", void 0);\n Draggable = Draggable_1 = __decorate([\n NotifyPropertyChanges\n ], Draggable);\n return Draggable;\n}(Base));\nexport { Draggable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible, matches } from './dom';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { compareElementParent } from './util';\n/**\n * Droppable Module provides support to enable droppable functionality in Dom Elements.\n * ```html\n *
Droppable
\n * \n * ```\n */\nvar Droppable = /** @class */ (function (_super) {\n __extends(Droppable, _super);\n function Droppable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseOver = false;\n _this.dragData = {};\n _this.dragStopCalled = false;\n _this.bind();\n return _this;\n }\n Droppable.prototype.bind = function () {\n this.wireEvents();\n };\n Droppable.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop, this);\n };\n // triggers when property changed\n // eslint-disable-next-line\n Droppable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Droppable.prototype.getModuleName = function () {\n return 'droppable';\n };\n Droppable.prototype.intOver = function (event, element) {\n if (!this.mouseOver) {\n var drag = this.dragData[this.scope];\n this.trigger('over', { event: event, target: element, dragData: drag });\n this.mouseOver = true;\n }\n };\n Droppable.prototype.intOut = function (event, element) {\n if (this.mouseOver) {\n this.trigger('out', { evt: event, target: element });\n this.mouseOver = false;\n }\n };\n Droppable.prototype.intDrop = function (evt, element) {\n if (!this.dragStopCalled) {\n return;\n }\n else {\n this.dragStopCalled = false;\n }\n var accept = true;\n var drag = this.dragData[this.scope];\n var isDrag = drag ? (drag.helper && isVisible(drag.helper)) : false;\n var area;\n if (isDrag) {\n area = this.isDropArea(evt, drag.helper, element);\n if (this.accept) {\n accept = matches(drag.helper, this.accept);\n }\n }\n if (isDrag && this.drop && area.canDrop && accept) {\n this.trigger('drop', { event: evt, target: area.target, droppedElement: drag.helper, dragData: drag });\n }\n this.mouseOver = false;\n };\n Droppable.prototype.isDropArea = function (evt, helper, element) {\n var area = { canDrop: true, target: element || evt.target };\n var isTouch = evt.type === 'touchend';\n if (isTouch || area.target === helper) {\n helper.style.display = 'none';\n var coord = isTouch ? (evt.changedTouches[0]) : evt;\n var ele = document.elementFromPoint(coord.clientX, coord.clientY);\n area.canDrop = false;\n area.canDrop = compareElementParent(ele, this.element);\n if (area.canDrop) {\n area.target = ele;\n }\n helper.style.display = '';\n }\n return area;\n };\n Droppable.prototype.destroy = function () {\n EventHandler.remove(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop);\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property()\n ], Droppable.prototype, \"accept\", void 0);\n __decorate([\n Property('default')\n ], Droppable.prototype, \"scope\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"over\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"out\", void 0);\n Droppable = __decorate([\n NotifyPropertyChanges\n ], Droppable);\n return Droppable;\n}(Base));\nexport { Droppable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Base } from './base';\nvar keyCode = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'control': 17,\n 'alt': 18,\n 'pause': 19,\n 'capslock': 20,\n 'space': 32,\n 'escape': 27,\n 'pageup': 33,\n 'pagedown': 34,\n 'end': 35,\n 'home': 36,\n 'leftarrow': 37,\n 'uparrow': 38,\n 'rightarrow': 39,\n 'downarrow': 40,\n 'insert': 45,\n 'delete': 46,\n 'f1': 112,\n 'f2': 113,\n 'f3': 114,\n 'f4': 115,\n 'f5': 116,\n 'f6': 117,\n 'f7': 118,\n 'f8': 119,\n 'f9': 120,\n 'f10': 121,\n 'f11': 122,\n 'f12': 123,\n 'semicolon': 186,\n 'plus': 187,\n 'comma': 188,\n 'minus': 189,\n 'dot': 190,\n 'forwardslash': 191,\n 'graveaccent': 192,\n 'openbracket': 219,\n 'backslash': 220,\n 'closebracket': 221,\n 'singlequote': 222\n};\n/**\n * KeyboardEvents class enables you to bind key action desired key combinations for ex., Ctrl+A, Delete, Alt+Space etc.\n * ```html\n *
;\n * \n * ```\n */\nvar KeyboardEvents = /** @class */ (function (_super) {\n __extends(KeyboardEvents, _super);\n /**\n * Initializes the KeyboardEvents\n *\n * @param {HTMLElement} element ?\n * @param {KeyboardEventsModel} options ?\n */\n function KeyboardEvents(element, options) {\n var _this = _super.call(this, options, element) || this;\n /**\n * To handle a key press event returns null\n *\n * @param {KeyboardEventArgs} e ?\n * @returns {void} ?\n */\n _this.keyPressHandler = function (e) {\n var isAltKey = e.altKey;\n var isCtrlKey = e.ctrlKey;\n var isShiftKey = e.shiftKey;\n var curkeyCode = e.which;\n var keys = Object.keys(_this.keyConfigs);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var configCollection = _this.keyConfigs[\"\" + key].split(',');\n for (var _a = 0, configCollection_1 = configCollection; _a < configCollection_1.length; _a++) {\n var rconfig = configCollection_1[_a];\n var rKeyObj = KeyboardEvents_1.getKeyConfigData(rconfig.trim());\n if (isAltKey === rKeyObj.altKey && isCtrlKey === rKeyObj.ctrlKey &&\n isShiftKey === rKeyObj.shiftKey && curkeyCode === rKeyObj.keyCode) {\n e.action = key;\n if (_this.keyAction) {\n _this.keyAction(e);\n }\n }\n }\n }\n };\n _this.bind();\n return _this;\n }\n KeyboardEvents_1 = KeyboardEvents;\n /**\n * Unwire bound events and destroy the instance.\n *\n * @returns {void} ?\n */\n KeyboardEvents.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * Function can be used to specify certain action if a property is changed\n *\n * @param {KeyboardEventsModel} newProp ?\n * @param {KeyboardEventsModel} oldProp ?\n * @returns {void} ?\n * @private\n */\n // eslint-disable-next-line\n KeyboardEvents.prototype.onPropertyChanged = function (newProp, oldProp) {\n // No code are needed\n };\n KeyboardEvents.prototype.bind = function () {\n this.wireEvents();\n };\n /**\n * To get the module name, returns 'keyboard'.\n *\n * @returns {string} ?\n * @private\n */\n KeyboardEvents.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * Wiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.wireEvents = function () {\n this.element.addEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * Unwiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.unwireEvents = function () {\n this.element.removeEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * To get the key configuration data\n *\n * @param {string} config - configuration data\n * @returns {KeyData} ?\n */\n KeyboardEvents.getKeyConfigData = function (config) {\n if (config in this.configCache) {\n return this.configCache[\"\" + config];\n }\n var keys = config.toLowerCase().split('+');\n var keyData = {\n altKey: (keys.indexOf('alt') !== -1 ? true : false),\n ctrlKey: (keys.indexOf('ctrl') !== -1 ? true : false),\n shiftKey: (keys.indexOf('shift') !== -1 ? true : false),\n keyCode: null\n };\n if (keys[keys.length - 1].length > 1 && !!Number(keys[keys.length - 1])) {\n keyData.keyCode = Number(keys[keys.length - 1]);\n }\n else {\n keyData.keyCode = KeyboardEvents_1.getKeyCode(keys[keys.length - 1]);\n }\n KeyboardEvents_1.configCache[\"\" + config] = keyData;\n return keyData;\n };\n // Return the keycode value as string\n KeyboardEvents.getKeyCode = function (keyVal) {\n return keyCode[\"\" + keyVal] || keyVal.toUpperCase().charCodeAt(0);\n };\n var KeyboardEvents_1;\n KeyboardEvents.configCache = {};\n __decorate([\n Property({})\n ], KeyboardEvents.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property('keyup')\n ], KeyboardEvents.prototype, \"eventName\", void 0);\n __decorate([\n Event()\n ], KeyboardEvents.prototype, \"keyAction\", void 0);\n KeyboardEvents = KeyboardEvents_1 = __decorate([\n NotifyPropertyChanges\n ], KeyboardEvents);\n return KeyboardEvents;\n}(Base));\nexport { KeyboardEvents };\n","import { extend, isNullOrUndefined } from './util';\nimport { defaultCulture } from './internationalization';\n/**\n * L10n modules provides localized text for different culture.\n * ```typescript\n * import {setCulture} from '@syncfusion/ts-base-library';\n * //load global locale object common for all components.\n * L10n.load({\n * 'fr-BE': {\n * 'button': {\n * 'check': 'vérifié'\n * }\n * }\n * });\n * //set globale default locale culture.\n * setCulture('fr-BE');\n * let instance: L10n = new L10n('button', {\n * check: 'checked'\n * });\n * //Get locale text for current property.\n * instance.getConstant('check');\n * //Change locale culture in a component.\n * instance.setLocale('en-US');\n * ```\n */\nvar L10n = /** @class */ (function () {\n /**\n * Constructor\n *\n * @param {string} controlName ?\n * @param {Object} localeStrings ?\n * @param {string} locale ?\n */\n function L10n(controlName, localeStrings, locale) {\n this.controlName = controlName;\n this.localeStrings = localeStrings;\n this.setLocale(locale || defaultCulture);\n }\n /**\n * Sets the locale text\n *\n * @param {string} locale ?\n * @returns {void} ?\n */\n L10n.prototype.setLocale = function (locale) {\n var intLocale = this.intGetControlConstant(L10n.locale, locale);\n this.currentLocale = intLocale || this.localeStrings;\n };\n /**\n * Sets the global locale for all components.\n *\n * @param {Object} localeObject - specifies the localeObject to be set as global locale.\n * @returns {void} ?\n */\n L10n.load = function (localeObject) {\n this.locale = extend(this.locale, localeObject, {}, true);\n };\n /**\n * Returns current locale text for the property based on the culture name and control name.\n *\n * @param {string} prop - specifies the property for which localize text to be returned.\n * @returns {string} ?\n */\n L10n.prototype.getConstant = function (prop) {\n // Removed conditional operator because this method does not return correct value when passing 0 as value in localization\n if (!isNullOrUndefined(this.currentLocale[\"\" + prop])) {\n return this.currentLocale[\"\" + prop];\n }\n else {\n return this.localeStrings[\"\" + prop] || '';\n }\n };\n /**\n * Returns the control constant object for current object and the locale specified.\n *\n * @param {Object} curObject ?\n * @param {string} locale ?\n * @returns {Object} ?\n */\n L10n.prototype.intGetControlConstant = function (curObject, locale) {\n if ((curObject)[\"\" + locale]) {\n return (curObject)[\"\" + locale][this.controlName];\n }\n return null;\n };\n L10n.locale = {};\n return L10n;\n}());\nexport { L10n };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { extend } from './util';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Browser } from './browser';\nimport { Base } from './base';\nimport { ChildProperty } from './child-property';\nimport { EventHandler } from './event-handler';\n/**\n * SwipeSettings is a framework module that provides support to handle swipe event like swipe up, swipe right, etc..,\n */\nvar SwipeSettings = /** @class */ (function (_super) {\n __extends(SwipeSettings, _super);\n function SwipeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(50)\n ], SwipeSettings.prototype, \"swipeThresholdDistance\", void 0);\n return SwipeSettings;\n}(ChildProperty));\nexport { SwipeSettings };\nvar swipeRegex = /(Up|Down)/;\n/**\n * Touch class provides support to handle the touch event like tap, double tap, tap hold, etc..,\n * ```typescript\n * let node: HTMLElement;\n * let touchObj: Touch = new Touch({\n * element: node,\n * tap: function (e) {\n * // tap handler function code\n * }\n * tapHold: function (e) {\n * // tap hold handler function code\n * }\n * scroll: function (e) {\n * // scroll handler function code\n * }\n * swipe: function (e) {\n * // swipe handler function code\n * }\n * });\n * ```\n */\nvar Touch = /** @class */ (function (_super) {\n __extends(Touch, _super);\n /* End-Properties */\n function Touch(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.touchAction = true;\n _this.tapCount = 0;\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.startEvent = function (evt) {\n if (_this.touchAction === true) {\n var point = _this.updateChangeTouches(evt);\n if (evt.changedTouches !== undefined) {\n _this.touchAction = false;\n }\n _this.isTouchMoved = false;\n _this.movedDirection = '';\n _this.startPoint = _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n _this.startEventData = point;\n _this.hScrollLocked = _this.vScrollLocked = false;\n _this.tStampStart = Date.now();\n _this.timeOutTapHold = setTimeout(function () { _this.tapHoldEvent(evt); }, _this.tapHoldThreshold);\n EventHandler.add(_this.element, Browser.touchMoveEvent, _this.moveEvent, _this);\n EventHandler.add(_this.element, Browser.touchEndEvent, _this.endEvent, _this);\n EventHandler.add(_this.element, Browser.touchCancelEvent, _this.cancelEvent, _this);\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.moveEvent = function (evt) {\n var point = _this.updateChangeTouches(evt);\n _this.movedPoint = point;\n _this.isTouchMoved = !(point.clientX === _this.startPoint.clientX && point.clientY === _this.startPoint.clientY);\n var eScrollArgs = {};\n if (_this.isTouchMoved) {\n clearTimeout(_this.timeOutTapHold);\n _this.calcScrollPoints(evt);\n var scrollArg = {\n startEvents: _this.startEventData,\n originalEvent: evt, startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY, distanceX: _this.distanceX,\n distanceY: _this.distanceY, scrollDirection: _this.scrollDirection,\n velocity: _this.getVelocity(point)\n };\n eScrollArgs = extend(eScrollArgs, {}, scrollArg);\n _this.trigger('scroll', eScrollArgs);\n _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.cancelEvent = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n _this.tapCount = 0;\n _this.swipeFn(evt);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.endEvent = function (evt) {\n _this.swipeFn(evt);\n if (!_this.isTouchMoved) {\n if (typeof _this.tap === 'function') {\n _this.trigger('tap', { originalEvent: evt, tapCount: ++_this.tapCount });\n _this.timeOutTap = setTimeout(function () {\n _this.tapCount = 0;\n }, _this.tapThreshold);\n }\n }\n _this.modeclear();\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.swipeFn = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n var point = _this.updateChangeTouches(evt);\n var diffX = point.clientX - _this.startPoint.clientX;\n var diffY = point.clientY - _this.startPoint.clientY;\n diffX = Math.floor(diffX < 0 ? -1 * diffX : diffX);\n diffY = Math.floor(diffY < 0 ? -1 * diffY : diffX);\n _this.isTouchMoved = diffX > 1 || diffY > 1;\n var isFirefox = (/Firefox/).test(Browser.userAgent);\n if (isFirefox && point.clientX === 0 && point.clientY === 0 && evt.type === 'mouseup') {\n _this.isTouchMoved = false;\n }\n _this.endPoint = point;\n _this.calcPoints(evt);\n var swipeArgs = {\n originalEvent: evt,\n startEvents: _this.startEventData,\n startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY,\n distanceX: _this.distanceX, distanceY: _this.distanceY, swipeDirection: _this.movedDirection,\n velocity: _this.getVelocity(point)\n };\n if (_this.isTouchMoved) {\n var eSwipeArgs = void 0;\n var tDistance = _this.swipeSettings.swipeThresholdDistance;\n // eslint-disable-next-line\n eSwipeArgs = extend(eSwipeArgs, _this.defaultArgs, swipeArgs);\n var canTrigger = false;\n var ele = _this.element;\n var scrollBool = _this.isScrollable(ele);\n var moved = swipeRegex.test(_this.movedDirection);\n if ((tDistance < _this.distanceX && !moved) || (tDistance < _this.distanceY && moved)) {\n if (!scrollBool) {\n canTrigger = true;\n }\n else {\n canTrigger = _this.checkSwipe(ele, moved);\n }\n }\n if (canTrigger) {\n _this.trigger('swipe', eSwipeArgs);\n }\n }\n _this.modeclear();\n };\n _this.modeclear = function () {\n _this.modeClear = setTimeout(function () {\n _this.touchAction = true;\n }, (typeof _this.tap !== 'function' ? 0 : 20));\n _this.lastTapTime = new Date().getTime();\n EventHandler.remove(_this.element, Browser.touchMoveEvent, _this.moveEvent);\n EventHandler.remove(_this.element, Browser.touchEndEvent, _this.endEvent);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n _this.bind();\n return _this;\n }\n // triggers when property changed\n /**\n *\n * @private\n * @param {TouchModel} newProp ?\n * @param {TouchModel} oldProp ?\n * @returns {void} ?\n */\n // eslint-disable-next-line\n Touch.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Touch.prototype.bind = function () {\n this.wireEvents();\n if (Browser.isIE) {\n this.element.classList.add('e-block-touch');\n }\n };\n /**\n * To destroy the touch instance.\n *\n * @returns {void}\n */\n Touch.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n // Need to changes the event binding once we updated the event handler.\n Touch.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchStartEvent, this.startEvent, this);\n };\n Touch.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.startEvent);\n };\n /**\n * Returns module name as touch\n *\n * @returns {string} ?\n * @private\n */\n Touch.prototype.getModuleName = function () {\n return 'touch';\n };\n /**\n * Returns if the HTML element is Scrollable.\n *\n * @param {HTMLElement} element - HTML Element to check if Scrollable.\n * @returns {boolean} ?\n */\n Touch.prototype.isScrollable = function (element) {\n var eleStyle = getComputedStyle(element);\n var style = eleStyle.overflow + eleStyle.overflowX + eleStyle.overflowY;\n if ((/(auto|scroll)/).test(style)) {\n return true;\n }\n return false;\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n Touch.prototype.tapHoldEvent = function (evt) {\n this.tapCount = 0;\n this.touchAction = true;\n var eTapArgs;\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.moveEvent);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.endEvent);\n // eslint-disable-next-line\n eTapArgs = { originalEvent: evt };\n this.trigger('tapHold', eTapArgs);\n EventHandler.remove(this.element, Browser.touchCancelEvent, this.cancelEvent);\n };\n Touch.prototype.calcPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.startPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.startPoint.clientY)));\n if (this.distanceX > this.distanceY) {\n this.movedDirection = (point.clientX > this.startPoint.clientX) ? 'Right' : 'Left';\n }\n else {\n this.movedDirection = (point.clientY < this.startPoint.clientY) ? 'Up' : 'Down';\n }\n };\n Touch.prototype.calcScrollPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.lastMovedPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.lastMovedPoint.clientY)));\n if ((this.distanceX > this.distanceY || this.hScrollLocked === true) && this.vScrollLocked === false) {\n this.scrollDirection = (point.clientX > this.lastMovedPoint.clientX) ? 'Right' : 'Left';\n this.hScrollLocked = true;\n }\n else {\n this.scrollDirection = (point.clientY < this.lastMovedPoint.clientY) ? 'Up' : 'Down';\n this.vScrollLocked = true;\n }\n };\n Touch.prototype.getVelocity = function (pnt) {\n var newX = pnt.clientX;\n var newY = pnt.clientY;\n var newT = Date.now();\n var xDist = newX - this.startPoint.clientX;\n var yDist = newY - this.startPoint.clientX;\n var interval = newT - this.tStampStart;\n return Math.sqrt(xDist * xDist + yDist * yDist) / interval;\n };\n // eslint-disable-next-line\n Touch.prototype.checkSwipe = function (ele, flag) {\n var keys = ['scroll', 'offset'];\n var temp = flag ? ['Height', 'Top'] : ['Width', 'Left'];\n if ((ele[keys[0] + temp[0]] <= ele[keys[1] + temp[0]])) {\n return true;\n }\n return (ele[keys[0] + temp[1]] === 0) ||\n (ele[keys[1] + temp[0]] + ele[keys[0] + temp[1]] >= ele[keys[0] + temp[0]]);\n };\n Touch.prototype.updateChangeTouches = function (evt) {\n var point = evt.changedTouches && evt.changedTouches.length !== 0 ? evt.changedTouches[0] : evt;\n return point;\n };\n __decorate([\n Event()\n ], Touch.prototype, \"tap\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"tapHold\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"swipe\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"scroll\", void 0);\n __decorate([\n Property(350)\n ], Touch.prototype, \"tapThreshold\", void 0);\n __decorate([\n Property(750)\n ], Touch.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Complex({}, SwipeSettings)\n ], Touch.prototype, \"swipeSettings\", void 0);\n Touch = __decorate([\n NotifyPropertyChanges\n ], Touch);\n return Touch;\n}(Base));\nexport { Touch };\n","/**\n * Template Engine\n */\nvar LINES = new RegExp('\\\\n|\\\\r|\\\\s\\\\s+', 'g');\nvar QUOTES = new RegExp(/'|\"/g);\nvar IF_STMT = new RegExp('if ?\\\\(');\nvar ELSEIF_STMT = new RegExp('else if ?\\\\(');\nvar ELSE_STMT = new RegExp('else');\nvar FOR_STMT = new RegExp('for ?\\\\(');\nvar IF_OR_FOR = new RegExp('(/if|/for)');\nvar CALL_FUNCTION = new RegExp('\\\\((.*)\\\\)', '');\nvar NOT_NUMBER = new RegExp('^[0-9]+$', 'g');\nvar WORD = new RegExp('[\\\\w\"\\'.\\\\s+]+', 'g');\nvar DBL_QUOTED_STR = new RegExp('\"(.*?)\"', 'g');\nvar WORDIF = new RegExp('[\\\\w\"\\'@#$.\\\\s-+]+', 'g');\nvar exp = new RegExp('\\\\${([^}]*)}', 'g');\n// let cachedTemplate: Object = {};\nvar ARR_OBJ = /^\\..*/gm;\nvar SINGLE_SLASH = /\\\\/gi;\nvar DOUBLE_SLASH = /\\\\\\\\/gi;\nvar WORDFUNC = new RegExp('[\\\\w\"\\'@#$.\\\\s+]+', 'g');\nvar WINDOWFUNC = /\\window\\./gm;\n/**\n * The function to set regular expression for template expression string.\n *\n * @param {RegExp} value - Value expression.\n * @returns {RegExp} ?\n * @private\n */\nexport function expression(value) {\n if (value) {\n exp = value;\n }\n return exp;\n}\n// /**\n// * To render the template string from the given data.\n// * @param {string} template - String Template.\n// * @param {Object[]|JSON} data - DataSource for the template.\n// * @param {Object} helper? - custom helper object.\n// */\n// export function template(template: string, data: JSON, helper?: Object): string {\n// let hash: string = hashCode(template);\n// let tmpl: Function;\n// if (!cachedTemplate[hash]) {\n// tmpl = cachedTemplate[hash] = compile(template, helper);\n// } else {\n// tmpl = cachedTemplate[hash];\n// }\n// return tmpl(data);\n// }\n/**\n * Compile the template string into template function.\n *\n * @param {string | Function} template - The template string which is going to convert.\n * @param {Object} helper - Helper functions as an object.\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n * @private\n */\nexport function compile(template, helper, ignorePrefix) {\n if (typeof template === 'function') {\n return template;\n }\n else {\n var argName = 'data';\n var evalExpResult = evalExp(template, argName, helper, ignorePrefix);\n // eslint-disable-next-line\n var condtion = \"var valueRegEx = (/value=\\\\'([A-Za-z0-9 _]*)((.)([\\\\w)(!-;?-\\u25A0\\\\s]+)['])/g);\\n var hrefRegex = (/(?:href)([\\\\s='\\\"./]+)([\\\\w-./?=&\\\\\\\\#\\\"]+)((.)([\\\\w)(!-;/?-\\u25A0\\\\s]+)['])/g);\\n if(str.match(valueRegEx)){\\n var check = str.match(valueRegEx);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(valueRegEx)[i].split('value=')[1];\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n str = str.replace(str, str1);\\n }\\n else if (str.match(/(?:href='')/) === null) {\\n if(str.match(hrefRegex)) {\\n var check = str.match(hrefRegex);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(hrefRegex)[i].split('href=')[1];\\n if (check1) {\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n }\\n str = str.replace(str, str1);\\n }\\n }\\n \";\n var fnCode = 'var str=\\\"' + evalExpResult + '\\\";' + condtion + ' return str;';\n var fn = new Function(argName, fnCode);\n return fn.bind(helper);\n }\n}\n/** function used to evaluate the function expression\n *\n * @param {string} str ?\n * @param {string} nameSpace ?\n * @param {Object} helper ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction evalExp(str, nameSpace, helper, ignorePrefix) {\n var varCOunt = 0;\n /**\n * Variable containing Local Keys\n */\n var localKeys = [];\n var isClass = str.match(/class=\"([^\"]+|)\\s{2}/g);\n var singleSpace = '';\n if (isClass) {\n isClass.forEach(function (value) {\n singleSpace = value.replace(/\\s\\s+/g, ' ');\n str = str.replace(value, singleSpace);\n });\n }\n return str.replace(LINES, '').replace(DBL_QUOTED_STR, '\\'$1\\'').replace(exp, \n // eslint-disable-next-line\n function (match, cnt, offset, matchStr) {\n var SPECIAL_CHAR = /@|#|\\$/gm;\n var matches = cnt.match(CALL_FUNCTION);\n // matches to detect any function calls\n if (matches) {\n var rlStr = matches[1];\n if (ELSEIF_STMT.test(cnt)) {\n //handling else-if condition\n cnt = '\";} ' + cnt.replace(matches[1], rlStr.replace(WORD, function (str) {\n str = str.trim();\n return addNameSpace(str, !(QUOTES.test(str)) && (localKeys.indexOf(str) === -1), nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (IF_STMT.test(cnt)) {\n //handling if condition\n cnt = '\"; ' + cnt.replace(matches[1], rlStr.replace(WORDIF, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (FOR_STMT.test(cnt)) {\n //handling for condition\n var rlStr_1 = matches[1].split(' of ');\n // replace for each into actual JavaScript\n // eslint-disable-next-line\n cnt = '\"; ' + cnt.replace(matches[1], function (mtc) {\n localKeys.push(rlStr_1[0]);\n localKeys.push(rlStr_1[0] + 'Index');\n varCOunt = varCOunt + 1;\n // tslint:disable-next-line\n return 'var i' + varCOunt + '=0; i' + varCOunt + ' < ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix) + '.length; i' + varCOunt + '++';\n }) + '{ \\n ' + rlStr_1[0] + '= ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix)\n + '[i' + varCOunt + ']; \\n var ' + rlStr_1[0] + 'Index=i' + varCOunt + '; \\n str = str + \"';\n }\n else {\n //helper function handling\n var fnStr = cnt.split('(');\n // eslint-disable-next-line\n var fNameSpace = (helper && helper.hasOwnProperty(fnStr[0]) ? 'this.' : 'global');\n fNameSpace = (/\\./.test(fnStr[0]) ? '' : fNameSpace);\n var ftArray = matches[1].split(',');\n if (matches[1].length !== 0 && !(/data/).test(ftArray[0]) && !(/window./).test(ftArray[0])) {\n matches[1] = (fNameSpace === 'global' ? nameSpace + '.' + matches[1] : matches[1]);\n }\n var splRegexp = /@|\\$|#/gm;\n var arrObj = /\\]\\./gm;\n if (WINDOWFUNC.test(cnt) && arrObj.test(cnt) || splRegexp.test(cnt)) {\n var splArrRegexp = /@|\\$|#|\\]\\./gm;\n if (splArrRegexp.test(cnt)) {\n // tslint:disable-next-line\n cnt = '\"+ ' + (fNameSpace === 'global' ? '' : fNameSpace) + cnt.replace(matches[1], rlStr.replace(WORDFUNC, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '+ \"';\n }\n }\n else {\n cnt = '\" + ' + (fNameSpace === 'global' ? '' : fNameSpace) +\n cnt.replace(rlStr, addNameSpace(matches[1].replace(/,( |)data.|,/gi, ',' + nameSpace + '.').replace(/,( |)data.window/gi, ',window'), (fNameSpace === 'global' ? false : true), nameSpace, localKeys, ignorePrefix)) +\n '+\"';\n }\n }\n }\n else if (ELSE_STMT.test(cnt)) {\n // handling else condition\n cnt = '\"; ' + cnt.replace(ELSE_STMT, '} else { \\n str = str + \"');\n // eslint-disable-next-line\n }\n else if (!!cnt.match(IF_OR_FOR)) {\n // close condition\n cnt = cnt.replace(IF_OR_FOR, '\"; \\n } \\n str = str + \"');\n }\n else if (SPECIAL_CHAR.test(cnt)) {\n // template string with double slash with special character\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n }\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // template string with double slash\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // evaluate normal expression\n cnt = cnt !== '' ? '\"+' + addNameSpace(cnt.replace(/,/gi, '+' + nameSpace + '.'), (localKeys.indexOf(cnt) === -1), nameSpace, localKeys, ignorePrefix) + '+\"' : ' ';\n }\n }\n return cnt;\n });\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction addNameSpace(str, addNS, nameSpace, ignoreList, ignorePrefix) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1 && !ignorePrefix && str !== \"true\" && str !== \"false\") ? nameSpace + '.' + str : str);\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceArrObj(str, addNS, nameSpace, ignoreList) {\n var arrObjReg = /^\\..*/gm;\n return ((addNS && !(NOT_NUMBER.test(str)) &&\n ignoreList.indexOf(str.split('.')[0]) === -1 && !(arrObjReg.test(str))) ? nameSpace + '.' + str : str);\n}\n// // Create hashCode for template string to storeCached function\n// function hashCode(str: string): string {\n// return str.split('').reduce((a: number, b: string) => { a = ((a << 5) - a) + b.charCodeAt(0); return a & a; }, 0).toString();\n// }\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceForspecialChar(str, addNS, nameSpace, ignoreList) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1) ? nameSpace + '[\"' + str : str);\n}\n// eslint-disable-next-line\nfunction SlashReplace(tempStr) {\n var double = '\\\\\\\\';\n if (tempStr.match(DOUBLE_SLASH)) {\n // eslint-disable-next-line\n tempStr = tempStr;\n }\n else {\n tempStr = tempStr.replace(SINGLE_SLASH, double);\n }\n return tempStr;\n}\n/**\n *\n * @param {string} str ?\n * @param {string} nameSpaceNew ?\n * @param {string[]} keys ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction HandleSpecialCharArrObj(str, nameSpaceNew, keys, ignorePrefix) {\n str = str.trim();\n var windowFunc = /\\window\\./gm;\n if (!windowFunc.test(str)) {\n var quotes = /'|\"/gm;\n var splRegexp = /@|\\$|#/gm;\n if (splRegexp.test(str)) {\n str = NameSpaceForspecialChar(str, (keys.indexOf(str) === -1), nameSpaceNew, keys) + '\"]';\n }\n if (ARR_OBJ.test(str)) {\n return NameSpaceArrObj(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys);\n }\n else {\n return addNameSpace(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys, ignorePrefix);\n }\n }\n else {\n return str;\n }\n}\n","/**\n * Template Engine Bridge\n */\nimport { compile as render } from './template';\nimport { createElement } from './dom';\nimport { isNullOrUndefined, isBlazor } from './util';\nvar HAS_ROW = /^[\\n\\r.]+ 0) {\n elements.forEach(function (element) {\n detach(element);\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeJsEvents = function () {\n var elements = this.wrapElement.querySelectorAll('[' + jsEvents.join('],[') + ']');\n if (elements.length > 0) {\n elements.forEach(function (element) {\n jsEvents.forEach(function (attr) {\n if (element.hasAttribute(attr)) {\n element.removeAttribute(attr);\n }\n });\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeXssAttrs = function () {\n var _this = this;\n // eslint-disable-next-line\n this.removeAttrs.forEach(function (item, index) {\n var elements = _this.wrapElement.querySelectorAll(item.selector);\n if (elements.length > 0) {\n elements.forEach(function (element) {\n element.removeAttribute(item.attribute);\n });\n }\n });\n };\n return SanitizeHtmlHelper;\n}());\nexport { SanitizeHtmlHelper };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Component, isBlazor, isRippleEnabled } from '@syncfusion/ej2-base';\nimport { addClass, Event, detach, removeClass } from '@syncfusion/ej2-base';\nimport { rippleEffect, EventHandler, Observer, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getTextNode } from '../common/common';\n/**\n * Defines the icon position of button.\n */\nexport var IconPosition;\n(function (IconPosition) {\n /**\n * Positions the Icon at the left of the text content in the Button.\n */\n IconPosition[\"Left\"] = \"Left\";\n /**\n * Positions the Icon at the right of the text content in the Button.\n */\n IconPosition[\"Right\"] = \"Right\";\n /**\n * Positions the Icon at the top of the text content in the Button.\n */\n IconPosition[\"Top\"] = \"Top\";\n /**\n * Positions the Icon at the bottom of the text content in the Button.\n */\n IconPosition[\"Bottom\"] = \"Bottom\";\n})(IconPosition || (IconPosition = {}));\nexport var buttonObserver = new Observer();\nvar cssClassName = {\n RTL: 'e-rtl',\n BUTTON: 'e-btn',\n PRIMARY: 'e-primary',\n ICONBTN: 'e-icon-btn'\n};\n/**\n * The Button is a graphical user interface element that triggers an event on its click action. It can contain a text, an image, or both.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Button = /** @class */ (function (_super) {\n __extends(Button, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {ButtonModel} options - Specifies the button model\n * @param {string|HTMLButtonElement} element - Specifies the target element\n */\n function Button(options, element) {\n return _super.call(this, options, element) || this;\n }\n Button.prototype.preRender = function () {\n // pre render code snippets\n };\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Button.prototype.render = function () {\n this.initialize();\n this.removeRippleEffect = rippleEffect(this.element, { selector: '.' + cssClassName.BUTTON });\n this.renderComplete();\n };\n Button.prototype.initialize = function () {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.isPrimary) {\n this.element.classList.add(cssClassName.PRIMARY);\n }\n if (!isBlazor() || (isBlazor() && this.getModuleName() !== 'progress-btn')) {\n if (this.content) {\n var tempContent = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.content) : this.content;\n this.element.innerHTML = tempContent;\n }\n this.setIconCss();\n }\n if (this.enableRtl) {\n this.element.classList.add(cssClassName.RTL);\n }\n if (this.disabled) {\n this.controlStatus(this.disabled);\n }\n else {\n this.wireEvents();\n }\n };\n Button.prototype.controlStatus = function (disabled) {\n this.element.disabled = disabled;\n };\n Button.prototype.setIconCss = function () {\n if (this.iconCss) {\n var span = this.createElement('span', { className: 'e-btn-icon ' + this.iconCss });\n if (!this.element.textContent.trim()) {\n this.element.classList.add(cssClassName.ICONBTN);\n }\n else {\n span.classList.add('e-icon-' + this.iconPosition.toLowerCase());\n if (this.iconPosition === 'Top' || this.iconPosition === 'Bottom') {\n this.element.classList.add('e-' + this.iconPosition.toLowerCase() + '-icon-btn');\n }\n }\n var node = this.element.childNodes[0];\n if (node && (this.iconPosition === 'Left' || this.iconPosition === 'Top')) {\n this.element.insertBefore(span, node);\n }\n else {\n this.element.appendChild(span);\n }\n }\n };\n Button.prototype.wireEvents = function () {\n if (this.isToggle) {\n EventHandler.add(this.element, 'click', this.btnClickHandler, this);\n }\n };\n Button.prototype.unWireEvents = function () {\n if (this.isToggle) {\n EventHandler.remove(this.element, 'click', this.btnClickHandler);\n }\n };\n Button.prototype.btnClickHandler = function () {\n if (this.element.classList.contains('e-active')) {\n this.element.classList.remove('e-active');\n }\n else {\n this.element.classList.add('e-active');\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Button.prototype.destroy = function () {\n var classList = [cssClassName.PRIMARY, cssClassName.RTL, cssClassName.ICONBTN, 'e-success', 'e-info', 'e-danger',\n 'e-warning', 'e-flat', 'e-outline', 'e-small', 'e-bigger', 'e-active', 'e-round',\n 'e-top-icon-btn', 'e-bottom-icon-btn'];\n if (this.cssClass) {\n classList = classList.concat(this.cssClass.split(' '));\n }\n _super.prototype.destroy.call(this);\n removeClass([this.element], classList);\n if (!this.element.getAttribute('class')) {\n this.element.removeAttribute('class');\n }\n if (this.disabled) {\n this.element.removeAttribute('disabled');\n }\n if (this.content) {\n this.element.innerHTML = this.element.innerHTML.replace(this.content, '');\n }\n var span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n detach(span);\n }\n this.unWireEvents();\n if (isRippleEnabled) {\n this.removeRippleEffect();\n }\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Button.prototype.getModuleName = function () {\n return 'btn';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist Data\n * @private\n */\n Button.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @private\n * @returns {void}\n */\n Button.Inject = function () {\n // Inject code snippets\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ButtonModel} newProp - Specifies new properties\n * @param {ButtonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Button.prototype.onPropertyChanged = function (newProp, oldProp) {\n var span = this.element.querySelector('span.e-btn-icon');\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'isPrimary':\n if (newProp.isPrimary) {\n this.element.classList.add(cssClassName.PRIMARY);\n }\n else {\n this.element.classList.remove(cssClassName.PRIMARY);\n }\n break;\n case 'disabled':\n this.controlStatus(newProp.disabled);\n break;\n case 'iconCss': {\n if (span) {\n if (newProp.iconCss) {\n span.className = 'e-btn-icon ' + newProp.iconCss;\n if (this.element.textContent.trim()) {\n if (this.iconPosition === 'Left') {\n span.classList.add('e-icon-left');\n }\n else {\n span.classList.add('e-icon-right');\n }\n }\n }\n else {\n detach(span);\n }\n }\n else {\n this.setIconCss();\n }\n break;\n }\n case 'iconPosition':\n removeClass([this.element], ['e-top-icon-btn', 'e-bottom-icon-btn']);\n span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n detach(span);\n }\n this.setIconCss();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(cssClassName.RTL);\n }\n else {\n this.element.classList.remove(cssClassName.RTL);\n }\n break;\n case 'content': {\n var node = getTextNode(this.element);\n if (!node) {\n this.element.classList.remove(cssClassName.ICONBTN);\n }\n if (!isBlazor() || (isBlazor() && !this.isServerRendered && this.getModuleName() !== 'progress-btn')) {\n if (this.enableHtmlSanitizer) {\n newProp.content = SanitizeHtmlHelper.sanitize(newProp.content);\n }\n this.element.innerHTML = newProp.content;\n this.setIconCss();\n }\n break;\n }\n case 'isToggle':\n if (newProp.isToggle) {\n EventHandler.add(this.element, 'click', this.btnClickHandler, this);\n }\n else {\n EventHandler.remove(this.element, 'click', this.btnClickHandler);\n removeClass([this.element], ['e-active']);\n }\n break;\n }\n }\n };\n /**\n * Click the button element\n * its native method\n *\n * @public\n * @returns {void}\n */\n Button.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to Button\n * its native method\n *\n * @public\n * @returns {void}\n */\n Button.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Property('Left')\n ], Button.prototype, \"iconPosition\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"isPrimary\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"content\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"isToggle\", void 0);\n __decorate([\n Property()\n ], Button.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Event()\n ], Button.prototype, \"created\", void 0);\n Button = __decorate([\n NotifyPropertyChanges\n ], Button);\n return Button;\n}(Component));\nexport { Button };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, isNullOrUndefined, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { addClass, detach, getUniqueID, isRippleEnabled, removeClass, rippleEffect, closest } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler, setHiddenInput } from './../common/common';\nvar CHECK = 'e-check';\nvar DISABLED = 'e-checkbox-disabled';\nvar FRAME = 'e-frame';\nvar INDETERMINATE = 'e-stop';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RIPPLECHECK = 'e-ripple-check';\nvar RIPPLEINDETERMINATE = 'e-ripple-stop';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-checkbox-wrapper';\nvar containerAttr = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value'];\n/**\n * The CheckBox is a graphical user interface element that allows you to select one or more options from the choices.\n * It contains checked, unchecked, and indeterminate states.\n * ```html\n * \n * \n * ```\n */\nvar CheckBox = /** @class */ (function (_super) {\n __extends(CheckBox, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {CheckBoxModel} options - Specifies checkbox model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function CheckBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n _this.isMouseClick = false;\n _this.clickTriggered = false;\n _this.validCheck = true;\n return _this;\n }\n CheckBox.prototype.changeState = function (state, isInitialize) {\n var ariaState;\n var rippleSpan;\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n if (isRippleEnabled) {\n rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n }\n if (state === 'check') {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLEINDETERMINATE);\n rippleSpan.classList.add(RIPPLECHECK);\n }\n ariaState = 'true';\n this.element.checked = true;\n if ((this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = false;\n this.validCheck = false;\n }\n else if (this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) {\n this.validCheck = true;\n }\n }\n else if (state === 'uncheck') {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n if (rippleSpan) {\n removeClass([rippleSpan], [RIPPLECHECK, RIPPLEINDETERMINATE]);\n }\n ariaState = 'false';\n this.element.checked = false;\n if ((this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = true;\n this.validCheck = false;\n }\n else if (this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) {\n this.validCheck = true;\n }\n }\n else {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLECHECK);\n rippleSpan.classList.add(RIPPLEINDETERMINATE);\n }\n ariaState = 'mixed';\n this.element.indeterminate = true;\n this.indeterminate = true;\n }\n };\n CheckBox.prototype.clickHandler = function (event) {\n if (event.target.tagName === 'INPUT' && this.clickTriggered) {\n if (this.isVue) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n }\n this.clickTriggered = false;\n return;\n }\n if (event.target.tagName === 'SPAN' || event.target.tagName === 'LABEL') {\n this.clickTriggered = true;\n }\n if (this.isMouseClick) {\n this.focusOutHandler();\n this.isMouseClick = false;\n }\n if (this.indeterminate) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n this.indeterminate = false;\n this.element.indeterminate = false;\n }\n else if (this.checked) {\n this.changeState('uncheck');\n this.checked = false;\n }\n else {\n this.changeState('check');\n this.checked = true;\n }\n var changeEventArgs = { checked: this.updateVueArrayModel(false), event: event };\n this.trigger('change', changeEventArgs);\n event.stopPropagation();\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n CheckBox.prototype.destroy = function () {\n var _this = this;\n var wrapper = this.getWrapper();\n _super.prototype.destroy.call(this);\n if (this.wrapper) {\n wrapper = this.wrapper;\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (this.getWrapper() && wrapper.parentNode) {\n wrapper.parentNode.insertBefore(this.element, wrapper);\n }\n detach(wrapper);\n this.element.checked = false;\n if (this.indeterminate) {\n this.element.indeterminate = false;\n }\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n }\n }\n };\n CheckBox.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n CheckBox.prototype.focusOutHandler = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n wrapper.classList.remove('e-focus');\n }\n this.isFocused = false;\n };\n /**\n * Gets the module name.\n *\n * @private\n * @returns {string} - Module Name\n */\n CheckBox.prototype.getModuleName = function () {\n return 'checkbox';\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist Data\n */\n CheckBox.prototype.getPersistData = function () {\n return this.addOnPersist(['checked', 'indeterminate']);\n };\n CheckBox.prototype.getWrapper = function () {\n if (this.element && this.element.parentElement) {\n return this.element.parentElement.parentElement;\n }\n else {\n return null;\n }\n };\n CheckBox.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n if (this.value) {\n this.element.setAttribute('value', this.value);\n if (this.isVue && typeof this.value === 'boolean' && this.value === true) {\n this.setProperties({ 'checked': true }, true);\n }\n }\n if (this.checked) {\n this.changeState('check', true);\n }\n if (this.indeterminate) {\n this.changeState();\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n CheckBox.prototype.initWrapper = function () {\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', {\n className: WRAPPER\n });\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n var label = this.createElement('label', { attrs: { for: this.element.id } });\n var frameSpan = this.createElement('span', { className: 'e-icons ' + FRAME });\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n wrapper.appendChild(label);\n label.appendChild(this.element);\n setHiddenInput(this, label);\n label.appendChild(frameSpan);\n if (isRippleEnabled) {\n var rippleSpan = this.createElement('span', { className: RIPPLE });\n if (this.labelPosition === 'Before') {\n label.appendChild(rippleSpan);\n }\n else {\n label.insertBefore(rippleSpan, frameSpan);\n }\n rippleEffect(rippleSpan, { duration: 400, isCenterRipple: true });\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n CheckBox.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getWrapper().classList.add('e-focus');\n }\n };\n CheckBox.prototype.labelMouseDownHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n CheckBox.prototype.labelMouseUpHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = 0; i < rippleElem.length - 1; i++) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {CheckBoxModel} newProp - Specifies new Properties\n * @param {CheckBoxModel} oldProp - Specifies old Properties\n *\n * @returns {void}\n */\n CheckBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrapper = this.getWrapper();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n this.indeterminate = false;\n this.element.indeterminate = false;\n this.changeState(newProp.checked ? 'check' : 'uncheck');\n break;\n case 'indeterminate':\n if (newProp.indeterminate) {\n this.changeState();\n }\n else {\n this.element.indeterminate = false;\n this.changeState(this.checked ? 'check' : 'uncheck');\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.wrapper = this.getWrapper();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n wrapper.classList.remove(DISABLED);\n wrapper.setAttribute('aria-disabled', 'false');\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n wrapper.classList.add(RTL);\n }\n else {\n wrapper.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition': {\n var label = wrapper.getElementsByClassName(LABEL)[0];\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n detach(label);\n if (newProp.labelPosition === 'After') {\n labelWrap.appendChild(label);\n }\n else {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n break;\n }\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n if (this.isVue && typeof newProp.value === 'object') {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToWrapper();\n break;\n }\n }\n };\n /**\n * Initialize Angular, React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.preRender = function () {\n var element = this.element;\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-CHECKBOX', 'checkbox', element, WRAPPER, 'checkbox');\n this.element = element;\n if (this.element.getAttribute('type') !== 'checkbox') {\n this.element.setAttribute('type', 'checkbox');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.render = function () {\n this.initWrapper();\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.updateHtmlAttributeToWrapper();\n this.updateVueArrayModel(true);\n this.renderComplete();\n this.wrapper = this.getWrapper();\n };\n CheckBox.prototype.setDisabled = function () {\n var wrapper = this.getWrapper();\n this.element.disabled = true;\n wrapper.classList.add(DISABLED);\n wrapper.setAttribute('aria-disabled', 'true');\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n CheckBox.prototype.setText = function (text) {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n return;\n }\n var label = wrapper.getElementsByClassName(LABEL)[0];\n if (label) {\n label.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n label = this.createElement('span', { className: LABEL, innerHTML: text });\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n if (this.labelPosition === 'Before') {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n else {\n labelWrap.appendChild(label);\n }\n }\n };\n CheckBox.prototype.changeHandler = function (e) {\n e.stopPropagation();\n };\n CheckBox.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n this.element.checked = this.initialCheckedValue;\n };\n CheckBox.prototype.unWireEvents = function () {\n var wrapper = this.wrapper;\n EventHandler.remove(wrapper, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.remove(label, 'mousedown', this.labelMouseDownHandler);\n EventHandler.remove(label, 'mouseup', this.labelMouseUpHandler);\n var formElem = closest(this.element, 'form');\n if (formElem) {\n EventHandler.remove(formElem, 'reset', this.formResetHandler);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.remove(this.element, 'change', this.changeHandler);\n }\n };\n CheckBox.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n EventHandler.add(wrapper, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.add(label, 'mousedown', this.labelMouseDownHandler, this);\n EventHandler.add(label, 'mouseup', this.labelMouseUpHandler, this);\n var formElem = closest(this.element, 'form');\n if (formElem) {\n EventHandler.add(formElem, 'reset', this.formResetHandler, this);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n }\n };\n CheckBox.prototype.updateVueArrayModel = function (init) {\n if (this.isVue && typeof this.value === 'object') {\n var value = this.element.value;\n if (value && this.value) {\n if (init) {\n for (var i = 0; i < this.value.length; i++) {\n if (value === this.value[i]) {\n this.changeState('check');\n this.setProperties({ 'checked': true }, true);\n }\n }\n }\n else {\n var index = this.value.indexOf(value);\n if (this.checked) {\n if (index < 0) {\n this.value.push(value);\n }\n }\n else {\n if (index > -1) {\n this.value.splice(index, 1);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.value;\n }\n }\n }\n return this.validCheck ? this.element.checked : !this.element.checked;\n };\n CheckBox.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) > -1) {\n var wrapper = this.getWrapper();\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[\"\" + key].split(' '));\n }\n else if (key === 'title') {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else if (key === 'style') {\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n frameSpan.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else if (key === 'disabled') {\n if (this.htmlAttributes[\"\" + key] === 'true') {\n this.setDisabled();\n }\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n /**\n * Click the CheckBox element\n * its native method\n *\n * @public\n * @returns {void}\n */\n CheckBox.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to CheckBox\n * its native method\n *\n * @public\n * @returns {void}\n */\n CheckBox.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Event()\n ], CheckBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], CheckBox.prototype, \"created\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"indeterminate\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], CheckBox.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property({})\n ], CheckBox.prototype, \"htmlAttributes\", void 0);\n CheckBox = __decorate([\n NotifyPropertyChanges\n ], CheckBox);\n return CheckBox;\n}(Component));\nexport { CheckBox };\n","import { detach, getUniqueID, rippleEffect, setValue, attributes } from '@syncfusion/ej2-base';\nimport { getValue, addClass, deleteObject } from '@syncfusion/ej2-base';\n/**\n * Initialize wrapper element for angular.\n *\n * @private\n *\n * @param {CreateElementArgs} createElement - Specifies created element args\n * @param {string} tag - Specifies tag name\n * @param {string} type - Specifies type name\n * @param {HTMLInputElement} element - Specifies input element\n * @param {string} WRAPPER - Specifies wrapper element\n * @param {string} role - Specifies role\n * @returns {HTMLInputElement} - Input Element\n */\nexport function wrapperInitialize(createElement, tag, type, element, WRAPPER, role) {\n var input = element;\n if (element.tagName === tag) {\n var ejInstance = getValue('ej2_instances', element);\n input = createElement('input', { attrs: { 'type': type } });\n var props = ['change', 'cssClass', 'label', 'labelPosition', 'id'];\n for (var index = 0, len = element.attributes.length; index < len; index++) {\n if (props.indexOf(element.attributes[index].nodeName) === -1) {\n input.setAttribute(element.attributes[index].nodeName, element.attributes[index].nodeValue);\n }\n }\n attributes(element, { 'class': WRAPPER });\n element.appendChild(input);\n setValue('ej2_instances', ejInstance, input);\n deleteObject(element, 'ej2_instances');\n }\n return input;\n}\n/**\n * Get the text node.\n *\n * @param {HTMLElement} element - Specifies html element\n * @private\n * @returns {Node} - Text node.\n */\nexport function getTextNode(element) {\n var node;\n var childnode = element.childNodes;\n for (var i = 0; i < childnode.length; i++) {\n node = childnode[i];\n if (node.nodeType === 3) {\n return node;\n }\n }\n return null;\n}\n/**\n * Destroy the button components.\n *\n * @private\n * @param {Switch | CheckBox} ejInst - Specifies eJ2 Instance\n * @param {Element} wrapper - Specifies wrapper element\n * @param {string} tagName - Specifies tag name\n * @returns {void}\n */\nexport function destroy(ejInst, wrapper, tagName) {\n if (tagName === 'INPUT') {\n wrapper.parentNode.insertBefore(ejInst.element, wrapper);\n detach(wrapper);\n ejInst.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n ejInst.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n }\n}\n/**\n * Initialize control pre rendering.\n *\n * @private\n * @param {Switch | CheckBox} proxy - Specifies proxy\n * @param {string} control - Specifies control\n * @param {string} wrapper - Specifies wrapper element\n * @param {HTMLInputElement} element - Specifies input element\n * @param {string} moduleName - Specifies module name\n * @returns {void}\n */\nexport function preRender(proxy, control, wrapper, element, moduleName) {\n element = wrapperInitialize(proxy.createElement, control, 'checkbox', element, wrapper, moduleName);\n proxy.element = element;\n if (proxy.element.getAttribute('type') !== 'checkbox') {\n proxy.element.setAttribute('type', 'checkbox');\n }\n if (!proxy.element.id) {\n proxy.element.id = getUniqueID('e-' + moduleName);\n }\n}\n/**\n * Creates CheckBox component UI with theming and ripple support.\n *\n * @private\n * @param {CreateElementArgs} createElement - Specifies Created Element args\n * @param {boolean} enableRipple - Specifies ripple effect\n * @param {CheckBoxUtilModel} options - Specifies Checkbox util Model\n * @returns {Element} - Checkbox Element\n */\nexport function createCheckBox(createElement, enableRipple, options) {\n if (enableRipple === void 0) { enableRipple = false; }\n if (options === void 0) { options = {}; }\n var wrapper = createElement('div', { className: 'e-checkbox-wrapper e-css' });\n if (options.cssClass) {\n addClass([wrapper], options.cssClass.split(' '));\n }\n if (options.enableRtl) {\n wrapper.classList.add('e-rtl');\n }\n if (enableRipple) {\n var rippleSpan = createElement('span', { className: 'e-ripple-container' });\n rippleEffect(rippleSpan, { isCenterRipple: true, duration: 400 });\n wrapper.appendChild(rippleSpan);\n }\n var frameSpan = createElement('span', { className: 'e-frame e-icons' });\n if (options.checked) {\n frameSpan.classList.add('e-check');\n }\n wrapper.appendChild(frameSpan);\n if (options.label) {\n var labelSpan = createElement('span', { className: 'e-label' });\n if (options.disableHtmlEncode) {\n labelSpan.textContent = options.label;\n }\n else {\n labelSpan.innerHTML = options.label;\n }\n wrapper.appendChild(labelSpan);\n }\n return wrapper;\n}\n/**\n * Handles ripple mouse.\n *\n * @private\n * @param {MouseEvent} e - Specifies mouse event\n * @param {Element} rippleSpan - Specifies Ripple span element\n * @returns {void}\n */\nexport function rippleMouseHandler(e, rippleSpan) {\n if (rippleSpan) {\n var event_1 = document.createEvent('MouseEvents');\n event_1.initEvent(e.type, false, true);\n rippleSpan.dispatchEvent(event_1);\n }\n}\n/**\n * Append hidden input to given element\n *\n * @private\n * @param {Switch | CheckBox} proxy - Specifies Proxy\n * @param {Element} wrap - Specifies Wrapper ELement\n * @returns {void}\n */\nexport function setHiddenInput(proxy, wrap) {\n if (proxy.element.getAttribute('ejs-for')) {\n wrap.appendChild(proxy.createElement('input', {\n attrs: { 'name': proxy.name || proxy.element.name, 'value': 'false', 'type': 'hidden' }\n }));\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, rippleEffect, NotifyPropertyChanges, Property, closest } from '@syncfusion/ej2-base';\nimport { addClass, getInstance, getUniqueID, isRippleEnabled, removeClass, attributes, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { detach, Event, EventHandler, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler } from './../common/common';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-radio-wrapper';\nvar ATTRIBUTES = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value'];\n/**\n * The RadioButton is a graphical user interface element that allows you to select one option from the choices.\n * It contains checked and unchecked states.\n * ```html\n * \n * \n * ```\n */\nvar RadioButton = /** @class */ (function (_super) {\n __extends(RadioButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {RadioButtonModel} options - Specifies Radio button model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function RadioButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n return _this;\n }\n RadioButton_1 = RadioButton;\n RadioButton.prototype.changeHandler = function (event) {\n this.checked = true;\n this.dataBind();\n var value = this.element.getAttribute('value');\n value = this.isVue && value ? this.element.value : this.value;\n var type = typeof this.value;\n if (this.isVue && type === 'boolean') {\n value = value === 'true' ? true : false;\n }\n this.trigger('change', { value: value, event: event });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\n event.stopPropagation();\n }\n };\n RadioButton.prototype.updateChange = function () {\n var input;\n var instance;\n var radioGrp = this.getRadioGroup();\n for (var i = 0; i < radioGrp.length; i++) {\n input = radioGrp[i];\n if (input !== this.element) {\n instance = getInstance(input, RadioButton_1);\n instance.checked = false;\n if (this.tagName === 'EJS-RADIOBUTTON') {\n instance.angularValue = this.value;\n }\n }\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n RadioButton.prototype.destroy = function () {\n var _this = this;\n var radioWrap = this.wrapper;\n _super.prototype.destroy.call(this);\n if (radioWrap) {\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (radioWrap.parentNode) {\n radioWrap.parentNode.insertBefore(this.element, radioWrap);\n }\n detach(radioWrap);\n this.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n radioWrap.removeAttribute(key);\n });\n radioWrap.innerHTML = '';\n }\n }\n };\n RadioButton.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n RadioButton.prototype.focusOutHandler = function () {\n var label = this.getLabel();\n if (label) {\n label.classList.remove('e-focus');\n }\n };\n RadioButton.prototype.getModuleName = function () {\n return 'radio';\n };\n /**\n * To get the value of selected radio button in a group.\n *\n * @method getSelectedValue\n * @returns {string} - Selected Value\n */\n RadioButton.prototype.getSelectedValue = function () {\n var input;\n var radioGrp = this.getRadioGroup();\n for (var i = 0, len = radioGrp.length; i < len; i++) {\n input = radioGrp[i];\n if (input.checked) {\n return input.value;\n }\n }\n return '';\n };\n RadioButton.prototype.getRadioGroup = function () {\n return document.querySelectorAll('input.e-radio[name=\"' + this.element.getAttribute('name') + '\"]');\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist Data\n */\n RadioButton.prototype.getPersistData = function () {\n return this.addOnPersist(['checked']);\n };\n RadioButton.prototype.getWrapper = function () {\n if (this.element) {\n return this.element.parentElement;\n }\n else {\n return null;\n }\n };\n RadioButton.prototype.getLabel = function () {\n if (this.element) {\n return this.element.nextElementSibling;\n }\n else {\n return null;\n }\n };\n RadioButton.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n this.initWrapper();\n this.updateHtmlAttribute();\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n var value = this.element.getAttribute('value');\n var type = typeof this.value;\n if (this.isVue && type === 'boolean') {\n value = value === 'true' ? true : false;\n }\n if (this.isVue ? this.value && type !== 'boolean' && !value : this.value) {\n this.element.setAttribute('value', this.value);\n }\n if (this.checked) {\n this.element.checked = true;\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n RadioButton.prototype.initWrapper = function () {\n var rippleSpan;\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', { className: WRAPPER });\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n var label = this.createElement('label', { attrs: { for: this.element.id } });\n wrapper.appendChild(this.element);\n wrapper.appendChild(label);\n if (isRippleEnabled) {\n rippleSpan = this.createElement('span', { className: (RIPPLE) });\n label.appendChild(rippleSpan);\n rippleEffect(rippleSpan, {\n duration: 400,\n isCenterRipple: true\n });\n }\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n label.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n RadioButton.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getLabel().classList.add('e-focus');\n }\n };\n RadioButton.prototype.labelMouseDownHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n RadioButton.prototype.labelMouseLeaveHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n RadioButton.prototype.labelMouseUpHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n RadioButton.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n if (this.initialCheckedValue) {\n attributes(this.element, { 'checked': 'true' });\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {RadioButtonModel} newProp - Specifies New Properties\n * @param {RadioButtonModel} oldProp - Specifies Old Properties\n * @returns {void}\n */\n RadioButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrap = this.getWrapper();\n var label = this.getLabel();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n if (newProp.checked) {\n this.updateChange();\n }\n this.element.checked = newProp.checked;\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrap], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrap], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n label.classList.add(RTL);\n }\n else {\n label.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition':\n if (newProp.labelPosition === 'Before') {\n label.classList.add('e-right');\n }\n else {\n label.classList.remove('e-right');\n }\n break;\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n var type = typeof this.htmlAttributes.value;\n if (!isNullOrUndefined(this.htmlAttributes) && (this.htmlAttributes.value || type === 'boolean' && !this.htmlAttributes.value)) {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttribute();\n break;\n }\n }\n };\n /**\n * Initialize checked Property, Angular and React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n RadioButton.prototype.preRender = function () {\n var element = this.element;\n this.formElement = closest(this.element, 'form');\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-RADIOBUTTON', 'radio', element, WRAPPER, 'radio');\n this.element = element;\n if (this.element.getAttribute('type') !== 'radio') {\n this.element.setAttribute('type', 'radio');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n if (this.tagName === 'EJS-RADIOBUTTON') {\n var formControlName = this.element.getAttribute('formcontrolname');\n if (formControlName) {\n this.setProperties({ 'name': formControlName }, true);\n this.element.setAttribute('name', formControlName);\n }\n }\n };\n /**\n * Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n RadioButton.prototype.render = function () {\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n this.wrapper = this.getWrapper();\n };\n RadioButton.prototype.setDisabled = function () {\n this.element.disabled = true;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RadioButton.prototype.setText = function (text) {\n var label = this.getLabel();\n var textLabel = label.getElementsByClassName(LABEL)[0];\n if (textLabel) {\n textLabel.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n textLabel = this.createElement('span', { className: LABEL, innerHTML: text });\n label.appendChild(textLabel);\n }\n if (this.labelPosition === 'Before') {\n this.getLabel().classList.add('e-right');\n }\n else {\n this.getLabel().classList.remove('e-right');\n }\n };\n RadioButton.prototype.updateHtmlAttribute = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (ATTRIBUTES.indexOf(key) > -1) {\n var wrapper = this.element.parentElement;\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ').trim().split(' '));\n }\n else if (key === 'title' || key === 'style') {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n RadioButton.prototype.unWireEvents = function () {\n var label = this.wrapper;\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n var rippleLabel = label.getElementsByTagName('label')[0];\n if (rippleLabel) {\n EventHandler.remove(rippleLabel, 'mousedown', this.labelMouseDownHandler);\n EventHandler.remove(rippleLabel, 'mouseup', this.labelMouseUpHandler);\n EventHandler.remove(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n RadioButton.prototype.wireEvents = function () {\n var label = this.getLabel();\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var rippleLabel = label.getElementsByClassName(LABEL)[0];\n if (rippleLabel) {\n EventHandler.add(rippleLabel, 'mousedown', this.labelMouseDownHandler, this);\n EventHandler.add(rippleLabel, 'mouseup', this.labelMouseUpHandler, this);\n EventHandler.add(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n };\n /**\n * Click the RadioButton element\n * its native method\n *\n * @public\n * @returns {void}\n */\n RadioButton.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to RadioButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n RadioButton.prototype.focusIn = function () {\n this.element.focus();\n };\n var RadioButton_1;\n __decorate([\n Event()\n ], RadioButton.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RadioButton.prototype, \"created\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], RadioButton.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property({})\n ], RadioButton.prototype, \"htmlAttributes\", void 0);\n RadioButton = RadioButton_1 = __decorate([\n NotifyPropertyChanges\n ], RadioButton);\n return RadioButton;\n}(Component));\nexport { RadioButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-unused-expressions */\nimport { Component, EventHandler, Internationalization } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, L10n } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { cldrData, getDefaultDateObject, rippleEffect } from '@syncfusion/ej2-base';\nimport { removeClass, detach, closest, addClass, attributes } from '@syncfusion/ej2-base';\nimport { getValue, getUniqueID, extend, Browser } from '@syncfusion/ej2-base';\nimport { Property, Event, isNullOrUndefined, throwError } from '@syncfusion/ej2-base';\n//class constant defination.\nvar OTHERMONTH = 'e-other-month';\nvar OTHERDECADE = 'e-other-year';\nvar ROOT = 'e-calendar';\nvar DEVICE = 'e-device';\nvar HEADER = 'e-header';\nvar RTL = 'e-rtl';\nvar CONTENT = 'e-content';\nvar YEAR = 'e-year';\nvar MONTH = 'e-month';\nvar DECADE = 'e-decade';\nvar ICON = 'e-icons';\nvar PREVICON = 'e-prev';\nvar NEXTICON = 'e-next';\nvar PREVSPAN = 'e-date-icon-prev';\nvar NEXTSPAN = 'e-date-icon-next ';\nvar ICONCONTAINER = 'e-icon-container';\nvar DISABLED = 'e-disabled';\nvar OVERLAY = 'e-overlay';\nvar WEEKEND = 'e-weekend';\nvar WEEKNUMBER = 'e-week-number';\nvar SELECTED = 'e-selected';\nvar FOCUSEDDATE = 'e-focused-date';\nvar OTHERMONTHROW = 'e-month-hide';\nvar TODAY = 'e-today';\nvar TITLE = 'e-title';\nvar LINK = 'e-day';\nvar CELL = 'e-cell';\nvar WEEKHEADER = 'e-week-header';\nvar ZOOMIN = 'e-zoomin';\nvar FOOTER = 'e-footer-container';\nvar BTN = 'e-btn';\nvar FLAT = 'e-flat';\nvar CSS = 'e-css';\nvar PRIMARY = 'e-primary';\nvar DAYHEADERLONG = 'e-calendar-day-header-lg';\nvar dayMilliSeconds = 86400000;\nvar minutesMilliSeconds = 60000;\n/**\n *\n * @private\n */\nvar CalendarBase = /** @class */ (function (_super) {\n __extends(CalendarBase, _super);\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n *\n * @param {CalendarBaseModel} options - Specifies the CalendarBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function CalendarBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.effect = '';\n _this.isPopupClicked = false;\n _this.isDateSelected = true;\n _this.isTodayClicked = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.previousDates = false;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n CalendarBase.prototype.render = function () {\n this.rangeValidation(this.min, this.max);\n this.calendarEleCopy = this.element.cloneNode(true);\n if (this.calendarMode === 'Islamic') {\n if (+(this.min.setSeconds(0)) === +new Date(1900, 0, 1, 0, 0, 0)) {\n this.min = new Date(1944, 2, 18);\n }\n if (+this.max === +new Date(2099, 11, 31)) {\n this.max = new Date(2069, 10, 16);\n }\n }\n this.globalize = new Internationalization(this.locale);\n if (isNullOrUndefined(this.firstDayOfWeek) || this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: this.globalize.getFirstDayOfWeek() }, true);\n }\n this.todayDisabled = false;\n this.todayDate = new Date(new Date().setHours(0, 0, 0, 0));\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add(ROOT);\n if (this.enableRtl) {\n this.element.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.element.classList.add(DEVICE);\n }\n attributes(this.element, {\n 'data-role': 'calendar'\n });\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.calendarElement = this.createElement('div');\n this.calendarElement.classList.add(ROOT);\n if (this.enableRtl) {\n this.calendarElement.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.calendarElement.classList.add(DEVICE);\n }\n attributes(this.calendarElement, {\n 'data-role': 'calendar'\n });\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.createHeader();\n this.createContent();\n this.wireEvents();\n };\n CalendarBase.prototype.rangeValidation = function (min, max) {\n if (isNullOrUndefined(min)) {\n this.setProperties({ min: new Date(1900, 0, 1) }, true);\n }\n if (isNullOrUndefined(max)) {\n this.setProperties({ max: new Date(2099, 11, 31) }, true);\n }\n };\n CalendarBase.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n altUpArrow: 'alt+uparrow',\n spacebar: 'space',\n altRightArrow: 'alt+rightarrow',\n altLeftArrow: 'alt+leftarrow'\n };\n return this.defaultKeyConfigs;\n };\n CalendarBase.prototype.validateDate = function (value) {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(this.max))) }, true);\n this.currentDate = this.currentDate ? this.currentDate : new Date(new Date().setHours(0, 0, 0, 0));\n if (!isNullOrUndefined(value) && this.min <= this.max && value >= this.min && value <= this.max) {\n this.currentDate = new Date(this.checkValue(value));\n }\n };\n CalendarBase.prototype.setOverlayIndex = function (popupWrapper, popupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(popupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(popupElement.style.zIndex, 10) ? parseInt(popupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n CalendarBase.prototype.minMaxUpdate = function (value) {\n if (!(+this.min <= +this.max)) {\n this.setProperties({ min: this.min }, true);\n addClass([this.element], OVERLAY);\n }\n else {\n removeClass([this.element], OVERLAY);\n }\n this.min = isNullOrUndefined(this.min) || !(+this.min) ? this.min = new Date(1900, 0, 1) : this.min;\n this.max = isNullOrUndefined(this.max) || !(+this.max) ? this.max = new Date(2099, 11, 31) : this.max;\n if (+this.min <= +this.max && value && +value <= +this.max && +value >= +this.min) {\n this.currentDate = new Date(this.checkValue(value));\n }\n else {\n if (+this.min <= +this.max && !value && +this.currentDate > +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n else {\n if (+this.currentDate < +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n }\n }\n };\n CalendarBase.prototype.createHeader = function () {\n var ariaPrevAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'previous month'\n };\n var ariaNextAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'next month'\n };\n var ariaTitleAttrs = {\n 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'title'\n };\n this.headerElement = this.createElement('div', { className: HEADER });\n var iconContainer = this.createElement('div', { className: ICONCONTAINER });\n this.previousIcon = this.createElement('button', { className: '' + PREVICON, attrs: { type: 'button' } });\n rippleEffect(this.previousIcon, {\n duration: 400,\n selector: '.e-prev',\n isCenterRipple: true\n });\n attributes(this.previousIcon, ariaPrevAttrs);\n this.nextIcon = this.createElement('button', { className: '' + NEXTICON, attrs: { type: 'button' } });\n rippleEffect(this.nextIcon, {\n selector: '.e-next',\n duration: 400,\n isCenterRipple: true\n });\n if (this.getModuleName() === 'daterangepicker') {\n attributes(this.previousIcon, { tabIndex: '-1' });\n attributes(this.nextIcon, { tabIndex: '-1' });\n }\n attributes(this.nextIcon, ariaNextAttrs);\n this.headerTitleElement = this.createElement('div', { className: '' + LINK + ' ' + TITLE });\n attributes(this.headerTitleElement, ariaTitleAttrs);\n this.headerElement.appendChild(this.headerTitleElement);\n this.previousIcon.appendChild(this.createElement('span', { className: '' + PREVSPAN + ' ' + ICON }));\n this.nextIcon.appendChild(this.createElement('span', { className: '' + NEXTSPAN + ' ' + ICON }));\n iconContainer.appendChild(this.previousIcon);\n iconContainer.appendChild(this.nextIcon);\n this.headerElement.appendChild(iconContainer);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.headerElement);\n }\n else {\n this.calendarElement.appendChild(this.headerElement);\n }\n this.adjustLongHeaderSize();\n };\n CalendarBase.prototype.createContent = function () {\n this.contentElement = this.createElement('div', { className: CONTENT });\n this.table = this.createElement('table', { attrs: { tabIndex: '0', 'role': 'grid', 'aria-activedescendant': '', 'aria-labelledby': this.element.id } });\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.contentElement);\n }\n else {\n this.calendarElement.appendChild(this.contentElement);\n }\n this.contentElement.appendChild(this.table);\n this.createContentHeader();\n this.createContentBody();\n if (this.showTodayButton) {\n this.createContentFooter();\n }\n };\n CalendarBase.prototype.getCultureValues = function () {\n var culShortNames = [];\n var cldrObj;\n var dayFormat = 'days.stand-alone.' + this.dayHeaderFormat.toLowerCase();\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrObj = (getValue(dayFormat, getDefaultDateObject()));\n }\n else {\n cldrObj = (this.getCultureObjects(cldrData, '' + this.locale));\n }\n if (!isNullOrUndefined(cldrObj)) {\n for (var _i = 0, _a = Object.keys(cldrObj); _i < _a.length; _i++) {\n var obj = _a[_i];\n culShortNames.push(getValue(obj, cldrObj));\n }\n }\n return culShortNames;\n };\n CalendarBase.prototype.toCapitalize = function (text) {\n return !isNullOrUndefined(text) && text.length ? text[0].toUpperCase() + text.slice(1) : text;\n };\n CalendarBase.prototype.createContentHeader = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.element.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n var daysCount = 6;\n var html = '';\n if (this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: 0 }, true);\n }\n this.tableHeadElement = this.createElement('thead', { className: WEEKHEADER });\n if (this.weekNumber) {\n html += '';\n if (this.getModuleName() === 'calendar') {\n addClass([this.element], '' + WEEKNUMBER);\n }\n else {\n addClass([this.calendarElement], '' + WEEKNUMBER);\n }\n }\n // eslint-disable-next-line max-len\n var shortNames = this.getCultureValues().length > 0 && this.getCultureValues() ? this.shiftArray(((this.getCultureValues().length > 0 && this.getCultureValues())), this.firstDayOfWeek) : null;\n if (!isNullOrUndefined(shortNames)) {\n for (var days = 0; days <= daysCount; days++) {\n html += '' + this.toCapitalize(shortNames[days]) + '';\n }\n }\n html = '' + html + '';\n this.tableHeadElement.innerHTML = html;\n this.table.appendChild(this.tableHeadElement);\n };\n CalendarBase.prototype.createContentBody = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content tbody')[0])) {\n detach(this.element.querySelectorAll('.e-content tbody')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content tbody')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content tbody')[0]);\n }\n }\n switch (this.start) {\n case 'Year':\n this.renderYears();\n break;\n case 'Decade':\n this.renderDecades();\n break;\n default:\n this.renderMonths();\n }\n };\n CalendarBase.prototype.updateFooter = function () {\n this.todayElement.textContent = this.l10.getConstant('today');\n this.todayElement.setAttribute('aria-label', this.l10.getConstant('today'));\n };\n CalendarBase.prototype.createContentFooter = function () {\n if (this.showTodayButton) {\n var minimum = new Date(+this.min);\n var maximum = new Date(+this.max);\n var l10nLocale = { today: 'Today' };\n this.globalize = new Internationalization(this.locale);\n this.l10 = new L10n(this.getModuleName(), l10nLocale, this.locale);\n this.todayElement = this.createElement('button', { attrs: { role: 'button' } });\n rippleEffect(this.todayElement);\n this.updateFooter();\n addClass([this.todayElement], [BTN, TODAY, FLAT, PRIMARY, CSS]);\n if ((!(+new Date(minimum.setHours(0, 0, 0, 0)) <= +this.todayDate &&\n +this.todayDate <= +new Date(maximum.setHours(0, 0, 0, 0)))) || (this.todayDisabled)) {\n addClass([this.todayElement], DISABLED);\n }\n this.footer = this.createElement('div', { className: FOOTER });\n this.footer.appendChild(this.todayElement);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (!this.todayElement.classList.contains(DISABLED)) {\n EventHandler.add(this.todayElement, 'click', this.todayButtonClick, this);\n }\n }\n };\n CalendarBase.prototype.wireEvents = function (id, ref, keyConfig, moduleName) {\n EventHandler.add(this.headerTitleElement, 'click', this.navigateTitle, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n if (this.getModuleName() === 'calendar') {\n this.keyboardModule = new KeyboardEvents(this.element, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.calendarElement, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n };\n CalendarBase.prototype.dateWireEvents = function (id, ref, keyConfig, moduleName) {\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, keyConfig);\n this.serverModuleName = moduleName;\n };\n CalendarBase.prototype.todayButtonClick = function (e, value, isCustomDate) {\n if (this.showTodayButton) {\n if (this.currentView() === this.depth) {\n this.effect = '';\n }\n else {\n this.effect = 'e-zoomin';\n }\n if (this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.navigateTo(this.depth, new Date(this.checkValue(value)), isCustomDate);\n }\n else {\n this.navigateTo('Month', new Date(this.checkValue(value)), isCustomDate);\n }\n }\n };\n CalendarBase.prototype.resetCalendar = function () {\n this.calendarElement && detach(this.calendarElement);\n this.tableBodyElement && detach(this.tableBodyElement);\n this.table && detach(this.table);\n this.tableHeadElement && detach(this.tableHeadElement);\n this.nextIcon && detach(this.nextIcon);\n this.previousIcon && detach(this.previousIcon);\n this.footer && detach(this.footer);\n this.todayElement = null;\n this.renderDayCellArgs = null;\n this.calendarElement = this.tableBodyElement = this.footer = this.tableHeadElement =\n this.nextIcon = this.previousIcon = this.table = null;\n };\n CalendarBase.prototype.keyActionHandle = function (e, value, multiSelection) {\n var focusedDate = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedDate;\n if (multiSelection) {\n if (!isNullOrUndefined(focusedDate) && +value === parseInt(focusedDate.getAttribute('id').split('_')[0], 10)) {\n selectedDate = focusedDate;\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n var view = this.getViewNumber(this.currentView());\n var depthValue = this.getViewNumber(this.depth);\n var levelRestrict = (view === depthValue && this.getViewNumber(this.start) >= depthValue);\n this.effect = '';\n switch (e.action) {\n case 'moveLeft':\n this.keyboardNavigate(-1, view, e, this.max, this.min);\n e.preventDefault();\n break;\n case 'moveRight':\n this.keyboardNavigate(1, view, e, this.max, this.min);\n e.preventDefault();\n break;\n case 'moveUp':\n if (view === 0) {\n this.keyboardNavigate(-7, view, e, this.max, this.min); // move the current date to the previous seven days.\n }\n else {\n this.keyboardNavigate(-4, view, e, this.max, this.min); // move the current year to the previous four days.\n }\n e.preventDefault();\n break;\n case 'moveDown':\n if (view === 0) {\n this.keyboardNavigate(7, view, e, this.max, this.min);\n }\n else {\n this.keyboardNavigate(4, view, e, this.max, this.min);\n }\n e.preventDefault();\n break;\n case 'select':\n if (e.target === this.todayElement) {\n this.todayButtonClick(e, value);\n }\n else {\n var element = !isNullOrUndefined(focusedDate) ? focusedDate : selectedDate;\n if (!isNullOrUndefined(element) && !element.classList.contains(DISABLED)) {\n if (levelRestrict) {\n // eslint-disable-next-line radix\n var d = new Date(parseInt('' + (element).id, 0));\n this.selectDate(e, d, (element));\n }\n else {\n this.contentClick(null, --view, (element), value);\n }\n }\n }\n break;\n case 'controlUp':\n this.title();\n e.preventDefault();\n break;\n case 'controlDown':\n if (!isNullOrUndefined(focusedDate) && !levelRestrict || !isNullOrUndefined(selectedDate) && !levelRestrict) {\n this.contentClick(null, --view, (focusedDate || selectedDate), value);\n }\n e.preventDefault();\n break;\n case 'home':\n this.currentDate = this.firstDay(this.currentDate);\n detach(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n e.preventDefault();\n break;\n case 'end':\n this.currentDate = this.lastDay(this.currentDate, view);\n detach(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n e.preventDefault();\n break;\n case 'pageUp':\n this.addMonths(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'pageDown':\n this.addMonths(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageUp':\n this.addYears(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageDown':\n this.addYears(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'controlHome':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 0, 1));\n e.preventDefault();\n break;\n case 'controlEnd':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 11, 31));\n e.preventDefault();\n break;\n }\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.keyboardNavigate = function (number, currentView, e, max, min) {\n var date = new Date(this.checkValue(this.currentDate));\n switch (currentView) {\n case 2:\n this.addYears(this.currentDate, number);\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n case 1:\n this.addMonths(this.currentDate, number);\n if (this.calendarMode === 'Gregorian') {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n else {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n break;\n case 0:\n this.addDay(this.currentDate, number, e, max, min);\n if (this.isMinMaxRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n }\n };\n /**\n * Initialize the event handler\n *\n * @param {Date} value - Specifies value of date.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.preRender = function (value) {\n var _this = this;\n this.navigatePreviousHandler = this.navigatePrevious.bind(this);\n this.navigateNextHandler = this.navigateNext.bind(this);\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.navigateHandler = function (e) {\n _this.triggerNavigate(e);\n };\n };\n CalendarBase.prototype.minMaxDate = function (localDate) {\n var currentDate = new Date(new Date(+localDate).setHours(0, 0, 0, 0));\n var minDate = new Date(new Date(+this.min).setHours(0, 0, 0, 0));\n var maxDate = new Date(new Date(+this.max).setHours(0, 0, 0, 0));\n if (+currentDate === +minDate || +currentDate === +maxDate) {\n if (+localDate < +this.min) {\n localDate = new Date(+this.min);\n }\n if (+localDate > +this.max) {\n localDate = new Date(+this.max);\n }\n }\n return localDate;\n };\n CalendarBase.prototype.renderMonths = function (e, value, isCustomDate) {\n var numCells = this.weekNumber ? 8 : 7;\n var tdEles;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(this.currentDate, value, null, null, isCustomDate, e);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n this.createContentHeader();\n if (this.calendarMode === 'Gregorian') {\n this.renderTemplate(tdEles, numCells, MONTH, e, value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(tdEles, numCells, MONTH, e, value);\n }\n };\n CalendarBase.prototype.renderDays = function (currentDate, value, multiSelection, values, isTodayDate, e) {\n var tdEles = [];\n var cellsCount = 42;\n var todayDate = isTodayDate ? new Date(+currentDate) : this.getDate(new Date(), this.timezone);\n var localDate = new Date(this.checkValue(currentDate));\n var minMaxDate;\n var currentMonth = localDate.getMonth();\n this.titleUpdate(currentDate, 'days');\n var d = localDate;\n localDate = new Date(d.getFullYear(), d.getMonth(), 0, d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds());\n while (localDate.getDay() !== this.firstDayOfWeek) {\n this.setStartDate(localDate, -1 * dayMilliSeconds);\n }\n for (var day = 0; day < cellsCount; ++day) {\n var weekEle = this.createElement('td', { className: CELL });\n var weekAnchor = this.createElement('span');\n if (day % 7 === 0 && this.weekNumber) {\n // 6 days are added to get Last day of the week and 3 days are added to get middle day of the week.\n var numberOfDays = this.weekRule === 'FirstDay' ? 6 : (this.weekRule === 'FirstFourDayWeek' ? 3 : 0);\n var finalDate = new Date(localDate.getFullYear(), localDate.getMonth(), (localDate.getDate() + numberOfDays));\n weekAnchor.textContent = '' + this.getWeek(finalDate);\n weekEle.appendChild(weekAnchor);\n addClass([weekEle], '' + WEEKNUMBER);\n tdEles.push(weekEle);\n }\n minMaxDate = new Date(+localDate);\n localDate = this.minMaxDate(localDate);\n var dateFormatOptions = { type: 'dateTime', skeleton: 'full' };\n var date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var tdEle = this.dayCell(localDate);\n var title = this.globalize.formatDate(localDate, { type: 'date', skeleton: 'full' });\n var dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, { format: 'd', type: 'date', skeleton: 'yMd' });\n var disabled = (this.min > localDate) || (this.max < localDate);\n if (disabled) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n }\n else {\n dayLink.setAttribute('title', '' + title);\n }\n if (currentMonth !== localDate.getMonth()) {\n addClass([tdEle], OTHERMONTH);\n }\n if (localDate.getDay() === 0 || localDate.getDay() === 6) {\n addClass([tdEle], WEEKEND);\n }\n tdEle.appendChild(dayLink);\n this.renderDayCellArgs = {\n date: localDate,\n isDisabled: false,\n element: tdEle,\n isOutOfRange: disabled\n };\n var argument = this.renderDayCellArgs;\n this.renderDayCellEvent(argument);\n if (argument.isDisabled) {\n var selectDate = new Date(this.checkValue(value));\n var argsDate = new Date(this.checkValue(argument.date));\n if (multiSelection) {\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n var localDateString = +new Date(this.globalize.formatDate(argument.date, { type: 'date', skeleton: 'yMd' }));\n var tempDateString = +new Date(this.globalize.formatDate(values[index], { type: 'date', skeleton: 'yMd' }));\n if (localDateString === tempDateString) {\n values.splice(index, 1);\n index = -1;\n }\n }\n }\n }\n else if (selectDate && +selectDate === +argsDate) {\n this.setProperties({ value: null }, true);\n }\n }\n if (this.renderDayCellArgs.isDisabled && !tdEle.classList.contains(SELECTED)) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n if (+this.renderDayCellArgs.date === +this.todayDate) {\n this.todayDisabled = true;\n }\n }\n var otherMnthBool = tdEle.classList.contains(OTHERMONTH);\n var disabledCls = tdEle.classList.contains(DISABLED);\n if (!disabledCls) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n // to set the value as null while setting the disabled date onProperty change.\n // if (args.isDisabled && +this.value === +args.date) {\n // this.setProperties({ value: null }, true);\n // }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentTarget = void 0;\n if (!isNullOrUndefined(e) && e.type === 'click') {\n currentTarget = e.currentTarget;\n }\n if (multiSelection && !isNullOrUndefined(values) && !disabledCls) {\n for (var tempValue = 0; tempValue < values.length; tempValue++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions = { format: null, type: 'date', skeleton: 'short', calendar: type };\n var localDateString = this.globalize.formatDate(localDate, formatOptions);\n var tempDateString = this.globalize.formatDate(values[tempValue], formatOptions);\n if ((localDateString === tempDateString && this.getDateVal(localDate, values[tempValue]))\n || (this.getDateVal(localDate, value))) {\n addClass([tdEle], SELECTED);\n }\n if (!isNullOrUndefined(currentTarget) && currentTarget.innerText === tdEle.innerText &&\n this.previousDates && tdEle.classList.contains(SELECTED) && currentTarget.classList.contains(SELECTED)) {\n removeClass([tdEle], SELECTED);\n this.previousDates = false;\n var copyValues = this.copyValues(values);\n for (var i = 0; i < copyValues.length; i++) {\n var type_1 = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions_1 = { format: null, type: 'date', skeleton: 'short', calendar: type_1 };\n var localDateString_1 = this.globalize.formatDate(date, formatOptions_1);\n var tempDateString_1 = this.globalize.formatDate(copyValues[i], formatOptions_1);\n if (localDateString_1 === tempDateString_1) {\n var index = copyValues.indexOf(copyValues[i]);\n copyValues.splice(index, 1);\n values.splice(index, 1);\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n else {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n if (values.length <= 0) {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n else if (!disabledCls && this.getDateVal(localDate, value)) {\n addClass([tdEle], SELECTED);\n }\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n if (!isNullOrUndefined(date) && date.getFullYear() === todayDate.getFullYear() && date.getMonth() === todayDate.getMonth()\n && date.getDate() === todayDate.getDate()) {\n addClass([tdEle], TODAY);\n }\n tdEles.push(this.renderDayCellArgs.element);\n localDate = new Date(+minMaxDate);\n this.addDay(localDate, 1, null, this.max, this.min);\n }\n return tdEles;\n };\n CalendarBase.prototype.updateFocus = function (otherMonth, disabled, localDate, tableElement, currentDate) {\n if (currentDate.getDate() === localDate.getDate() && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n else {\n // eslint-disable-next-line radix\n if (currentDate >= this.max && parseInt(tableElement.id, 0) === +this.max && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n // eslint-disable-next-line radix\n if (currentDate <= this.min && parseInt(tableElement.id, 0) === +this.min && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n }\n };\n CalendarBase.prototype.renderYears = function (e, value) {\n this.removeTableHeadElement();\n var numCells = 4;\n var tdEles = [];\n var valueUtil = isNullOrUndefined(value);\n var curDate = new Date(this.checkValue(this.currentDate));\n var mon = curDate.getMonth();\n var yr = curDate.getFullYear();\n var localDate = curDate;\n var curYrs = localDate.getFullYear();\n var minYr = new Date(this.checkValue(this.min)).getFullYear();\n var minMonth = new Date(this.checkValue(this.min)).getMonth();\n var maxYr = new Date(this.checkValue(this.max)).getFullYear();\n var maxMonth = new Date(this.checkValue(this.max)).getMonth();\n localDate.setMonth(0);\n this.titleUpdate(this.currentDate, 'months');\n localDate.setDate(1);\n for (var month = 0; month < 12; ++month) {\n var tdEle = this.dayCell(localDate);\n var dayLink = this.createElement('span');\n var localMonth = (value && (value).getMonth() === localDate.getMonth());\n var select = (value && (value).getFullYear() === yr && localMonth);\n dayLink.textContent = this.toCapitalize(this.globalize.formatDate(localDate, {\n format: null, type: 'dateTime', skeleton: 'MMM'\n }));\n if ((this.min && (curYrs < minYr || (month < minMonth && curYrs === minYr))) || (this.max && (curYrs > maxYr || (month > maxMonth && curYrs >= maxYr)))) {\n addClass([tdEle], DISABLED);\n }\n else if (!valueUtil && select) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getMonth() === mon && this.currentDate.getMonth() === mon) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n localDate.setDate(1);\n localDate.setMonth(localDate.getMonth() + 1);\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, YEAR, e, value);\n };\n CalendarBase.prototype.renderDecades = function (e, value) {\n this.removeTableHeadElement();\n var numCells = 4;\n var yearCell = 12;\n var tdEles = [];\n var localDate = new Date(this.checkValue(this.currentDate));\n localDate.setMonth(0);\n localDate.setDate(1);\n var localYr = localDate.getFullYear();\n var startYr = new Date(localDate.setFullYear((localYr - localYr % 10)));\n var endYr = new Date(localDate.setFullYear((localYr - localYr % 10 + (10 - 1))));\n var startFullYr = startYr.getFullYear();\n var endFullYr = endYr.getFullYear();\n var startHdrYr = this.globalize.formatDate(startYr, {\n format: null, type: 'dateTime', skeleton: 'y'\n });\n var endHdrYr = this.globalize.formatDate(endYr, { format: null, type: 'dateTime', skeleton: 'y' });\n this.headerTitleElement.textContent = startHdrYr + ' - ' + (endHdrYr);\n var start = new Date(localYr - (localYr % 10) - 1, 0, 1);\n var startYear = start.getFullYear();\n for (var rowIterator = 0; rowIterator < yearCell; ++rowIterator) {\n var year = startYear + rowIterator;\n localDate.setFullYear(year);\n var tdEle = this.dayCell(localDate);\n var dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, {\n format: null, type: 'dateTime', skeleton: 'y'\n });\n if ((year < startFullYr) || (year > endFullYr)) {\n addClass([tdEle], OTHERDECADE);\n if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n }\n else if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n else if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getFullYear() === this.currentDate.getFullYear() && !tdEle.classList.contains(DISABLED)) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, 'e-decade', e, value);\n };\n CalendarBase.prototype.dayCell = function (localDate) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var dateFormatOptions = { skeleton: 'full', type: 'dateTime', calendar: type };\n var date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var value;\n if (!isNullOrUndefined(date)) {\n value = date.valueOf();\n }\n var attrs = {\n className: CELL, attrs: { 'id': '' + getUniqueID('' + value), 'aria-selected': 'false' }\n };\n return this.createElement('td', attrs);\n };\n CalendarBase.prototype.firstDay = function (date) {\n var collection = this.currentView() !== 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '');\n if (collection.length) {\n for (var i = 0; i < collection.length; i++) {\n if (!collection[i].classList.contains(DISABLED)) {\n // eslint-disable-next-line radix\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n };\n CalendarBase.prototype.lastDay = function (date, view) {\n var lastDate = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n if (view !== 2) {\n var timeOffset = Math.abs(lastDate.getTimezoneOffset() - this.firstDay(date).getTimezoneOffset());\n if (timeOffset) {\n lastDate.setHours(this.firstDay(date).getHours() + (timeOffset / 60));\n }\n return this.findLastDay(lastDate);\n }\n else {\n return this.findLastDay(this.firstDay(lastDate));\n }\n };\n CalendarBase.prototype.checkDateValue = function (value) {\n return (!isNullOrUndefined(value) && value instanceof Date && !isNaN(+value)) ? value : null;\n };\n CalendarBase.prototype.findLastDay = function (date) {\n var collection = this.currentView() === 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '');\n if (collection.length) {\n for (var i = collection.length - 1; i >= 0; i--) {\n if (!collection[i].classList.contains(DISABLED)) {\n // eslint-disable-next-line radix\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n };\n CalendarBase.prototype.removeTableHeadElement = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.renderTemplate = function (elements, count, classNm, e, value) {\n var view = this.getViewNumber(this.currentView());\n var trEle;\n this.tableBodyElement = this.createElement('tbody');\n this.table.appendChild(this.tableBodyElement);\n removeClass([this.contentElement, this.headerElement], [MONTH, DECADE, YEAR]);\n addClass([this.contentElement, this.headerElement], [classNm]);\n var weekNumCell = 41;\n var numberCell = 35;\n var otherMonthCell = 6;\n var row = count;\n var rowIterator = 0;\n for (var dayCell = 0; dayCell < elements.length / count; ++dayCell) {\n trEle = this.createElement('tr');\n for (rowIterator = 0 + rowIterator; rowIterator < row; rowIterator++) {\n if (!elements[rowIterator].classList.contains('e-week-number') && !isNullOrUndefined(elements[rowIterator].children[0])) {\n addClass([elements[rowIterator].children[0]], [LINK]);\n rippleEffect(elements[rowIterator].children[0], {\n duration: 600,\n isCenterRipple: true\n });\n }\n trEle.appendChild(elements[rowIterator]);\n if (this.weekNumber && rowIterator === otherMonthCell + 1 && elements[otherMonthCell + 1].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (!this.weekNumber && rowIterator === otherMonthCell && elements[otherMonthCell].\n classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (this.weekNumber) {\n if (rowIterator === weekNumCell && elements[weekNumCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n else {\n if (rowIterator === numberCell && elements[numberCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n }\n row = row + count;\n rowIterator = rowIterator + 0;\n this.tableBodyElement.appendChild(trEle);\n }\n this.table.querySelector('tbody').className = this.effect;\n if (this.calendarMode === 'Gregorian') {\n this.iconHandler();\n }\n else {\n this.islamicModule.islamicIconHandler();\n }\n if (view !== this.getViewNumber(this.currentView()) || (view === 0 && view !== this.getViewNumber(this.currentView()))) {\n this.navigateHandler(e);\n }\n this.setAriaActiveDescendant();\n };\n CalendarBase.prototype.clickHandler = function (e, value) {\n this.clickEventEmitter(e);\n var eve = e.currentTarget;\n var view = this.getViewNumber(this.currentView());\n if (eve.classList.contains(OTHERMONTH)) {\n this.contentClick(e, 0, null, value);\n }\n else if (view === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.contentClick(e, 1, null, value);\n }\n else if (2 === view) {\n this.contentClick(e, 1, null, value);\n }\n else if (!eve.classList.contains(OTHERMONTH) && view === 0) {\n this.selectDate(e, this.getIdValue(e, null), null);\n }\n else {\n this.contentClick(e, 0, eve, value);\n }\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n // Content click event handler required for extended components\n CalendarBase.prototype.clickEventEmitter = function (e) {\n e.preventDefault();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.contentClick = function (e, view, element, value) {\n var currentView = this.getViewNumber(this.currentView());\n var d = this.getIdValue(e, element);\n switch (view) {\n case 0:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n detach(this.tableBodyElement);\n this.currentDate = d;\n this.effect = ZOOMIN;\n this.renderMonths(e);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setMonth(d.getMonth());\n if (d.getMonth() > 0 && this.currentDate.getMonth() !== d.getMonth()) {\n this.currentDate.setDate(0);\n }\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n this.currentDate = d;\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n break;\n case 1:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.selectDate(e, d, null);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n this.islamicPreviousHeader = this.headerElement.textContent;\n var islamicDate = this.islamicModule.getIslamicDate(d);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, islamicDate.month, 1);\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n }\n };\n CalendarBase.prototype.switchView = function (view, e, multiSelection, isCustomDate) {\n switch (view) {\n case 0:\n detach(this.tableBodyElement);\n this.renderMonths(e, null, isCustomDate);\n break;\n case 1:\n detach(this.tableBodyElement);\n this.renderYears(e);\n break;\n case 2:\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n };\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n CalendarBase.prototype.getModuleName = function () {\n return 'calendar';\n };\n /**\n *\n * @returns {void}\n\n */\n CalendarBase.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n return modules;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n CalendarBase.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Called internally if any of the property value changed.\n *\n * @param {CalendarBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {CalendarBaseModel} oldProp - Returns the previous property value of the component.\n * @param {boolean} multiSelection - - Specifies whether multiple date selection is enabled or not.\n * @param {Date[]} values - Specifies the dates.\n * @returns {void}\n * @private\n */\n CalendarBase.prototype.onPropertyChanged = function (newProp, oldProp, multiSelection, values) {\n this.effect = '';\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n if (newProp.enableRtl) {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add('e-rtl');\n }\n else {\n this.calendarElement.classList.add('e-rtl');\n }\n }\n else {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.remove('e-rtl');\n }\n else {\n this.calendarElement.classList.remove('e-rtl');\n }\n }\n break;\n case 'dayHeaderFormat':\n this.getCultureValues();\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n }\n this.adjustLongHeaderSize();\n break;\n case 'min':\n case 'max':\n this.rangeValidation(this.min, this.max);\n if (prop === 'min') {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(newProp.min))) }, true);\n }\n else {\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(newProp.max))) }, true);\n }\n this.setProperties({ start: this.currentView() }, true);\n if (this.tableBodyElement) {\n detach(this.tableBodyElement);\n }\n this.minMaxUpdate();\n if (multiSelection) {\n this.validateValues(multiSelection, values);\n }\n if (this.getModuleName() !== 'datepicker') {\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentBody();\n }\n if ((this.todayDate < this.min || this.max < this.todayDate) && (this.footer) && (this.todayElement)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n else {\n if ((this.footer) && (this.todayElement) && this.todayElement.classList.contains('e-disabled')) {\n removeClass([this.todayElement], DISABLED);\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n }\n break;\n case 'start':\n case 'depth':\n case 'weekNumber':\n case 'firstDayOfWeek':\n case 'weekRule':\n this.checkView();\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n this.createContentBody();\n }\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n this.createContentBody();\n }\n this.l10.setLocale(this.locale);\n this.updateFooter();\n break;\n case 'showTodayButton':\n if (newProp.showTodayButton) {\n this.createContentFooter();\n }\n else {\n if (!isNullOrUndefined(this.todayElement) && !isNullOrUndefined(this.footer)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = undefined;\n }\n }\n this.setProperties({ showTodayButton: newProp.showTodayButton }, true);\n break;\n }\n }\n };\n /**\n * values property updated with considered disabled dates of the calendar.\n *\n * @param {boolean} multiSelection - Specifies whether multiple date selection is enabled.\n * @param {Date[]} values - Specifies the dates to validate.\n * @returns {void}\n */\n CalendarBase.prototype.validateValues = function (multiSelection, values) {\n if (multiSelection && !isNullOrUndefined(values) && values.length > 0) {\n var copyValues = this.copyValues(values);\n for (var skipIndex = 0; skipIndex < copyValues.length; skipIndex++) {\n var tempValue = copyValues[skipIndex];\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var tempValueString = void 0;\n if (this.calendarMode === 'Gregorian') {\n tempValueString = this.globalize.formatDate(tempValue, { type: 'date', skeleton: 'yMd' });\n }\n else {\n tempValueString = this.globalize.formatDate(tempValue, { type: 'dateTime', skeleton: 'full', calendar: 'islamic' });\n }\n var minFormatOption = { type: 'date', skeleton: 'yMd', calendar: type };\n var minStringValue = this.globalize.formatDate(this.min, minFormatOption);\n var minString = minStringValue;\n var maxFormatOption = { type: 'date', skeleton: 'yMd', calendar: type };\n var maxStringValue = this.globalize.formatDate(this.max, maxFormatOption);\n var maxString = maxStringValue;\n if (+new Date(tempValueString) < +new Date(minString) ||\n +new Date(tempValueString) > +new Date(maxString)) {\n copyValues.splice(skipIndex, 1);\n skipIndex = -1;\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n };\n CalendarBase.prototype.setValueUpdate = function () {\n if (!isNullOrUndefined(this.tableBodyElement)) {\n detach(this.tableBodyElement);\n this.setProperties({ start: this.currentView() }, true);\n this.createContentBody();\n }\n };\n CalendarBase.prototype.copyValues = function (values) {\n var copyValues = [];\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n copyValues.push(new Date(+values[index]));\n }\n }\n return copyValues;\n };\n CalendarBase.prototype.titleUpdate = function (date, view) {\n var globalize = new Internationalization(this.locale);\n var dayFormatOptions;\n var monthFormatOptions;\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n if (this.calendarMode === 'Gregorian') {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', skeleton: 'yMMMM', calendar: type });\n monthFormatOptions = globalize.formatDate(date, {\n format: null, type: 'dateTime', skeleton: 'y', calendar: type\n });\n }\n else {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'MMMM y', calendar: type });\n monthFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'y', calendar: type });\n }\n switch (view) {\n case 'days':\n this.headerTitleElement.textContent = this.toCapitalize(dayFormatOptions);\n break;\n case 'months':\n this.headerTitleElement.textContent = monthFormatOptions;\n }\n };\n CalendarBase.prototype.setActiveDescendant = function () {\n var id;\n var focusedEle = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedEle = this.tableBodyElement.querySelector('tr td.e-selected');\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var title;\n var view = this.currentView();\n if (view === 'Month') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'full', calendar: type });\n }\n else if (view === 'Year') {\n if (type !== 'islamic') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'yMMMM', calendar: type });\n }\n else {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'GyMMM', calendar: type });\n }\n }\n else {\n title = this.globalize.formatDate(this.currentDate, {\n format: null, type: 'date', skeleton: 'y', calendar: type\n });\n }\n if (selectedEle || focusedEle) {\n if (!isNullOrUndefined(selectedEle)) {\n selectedEle.setAttribute('aria-selected', 'true');\n }\n (focusedEle || selectedEle).setAttribute('aria-label', title);\n id = (focusedEle || selectedEle).getAttribute('id');\n }\n return id;\n };\n CalendarBase.prototype.iconHandler = function () {\n new Date(this.checkValue(this.currentDate)).setDate(1);\n switch (this.currentView()) {\n case 'Month':\n this.previousIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Year':\n this.previousIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Decade':\n this.previousIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n CalendarBase.prototype.destroy = function () {\n if (this.getModuleName() === 'calendar' && this.element) {\n removeClass([this.element], [ROOT]);\n }\n else {\n if (this.calendarElement && this.element) {\n removeClass([this.element], [ROOT]);\n }\n }\n if (this.getModuleName() === 'calendar' && this.element) {\n if (!isNullOrUndefined(this.headerTitleElement)) {\n EventHandler.remove(this.headerTitleElement, 'click', this.navigateTitle);\n }\n if (this.todayElement) {\n EventHandler.remove(this.todayElement, 'click', this.todayButtonClick);\n }\n this.previousIconHandler(true);\n this.nextIconHandler(true);\n this.keyboardModule.destroy();\n this.element.removeAttribute('data-role');\n if (!isNullOrUndefined(this.calendarEleCopy.getAttribute('tabindex'))) {\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.element.removeAttribute('tabindex');\n }\n }\n if (this.element) {\n this.element.innerHTML = '';\n }\n this.todayElement = null;\n this.tableBodyElement = null;\n this.renderDayCellArgs = null;\n this.headerElement = null;\n this.nextIcon = null;\n this.table = null;\n this.tableHeadElement = null;\n this.previousIcon = null;\n this.headerTitleElement = null;\n this.footer = null;\n this.contentElement = null;\n _super.prototype.destroy.call(this);\n };\n CalendarBase.prototype.title = function (e) {\n var currentView = this.getViewNumber(this.currentView());\n this.effect = ZOOMIN;\n this.switchView(++currentView, e);\n };\n CalendarBase.prototype.getViewNumber = function (stringVal) {\n if (stringVal === 'Month') {\n return 0;\n }\n else if (stringVal === 'Year') {\n return 1;\n }\n else {\n return 2;\n }\n };\n CalendarBase.prototype.navigateTitle = function (e) {\n e.preventDefault();\n this.title(e);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.previous = function () {\n this.effect = '';\n var currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, -10);\n this.switchView(currentView);\n break;\n }\n };\n CalendarBase.prototype.navigatePrevious = function (e) {\n !Browser.isDevice && e.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.previous();\n }\n else {\n this.islamicModule.islamicPrevious();\n }\n this.triggerNavigate(e);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.next = function () {\n this.effect = '';\n var currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, 10);\n this.switchView(currentView);\n break;\n }\n };\n CalendarBase.prototype.navigateNext = function (eve) {\n !Browser.isDevice && eve.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.next();\n }\n else {\n this.islamicModule.islamicNext();\n }\n this.triggerNavigate(eve);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @param {boolean} isCustomDate - Specifies whether the calendar is rendered with custom today date or not.\n * @returns {void}\n */\n CalendarBase.prototype.navigateTo = function (view, date, isCustomDate) {\n if (+date >= +this.min && +date <= +this.max) {\n this.currentDate = date;\n }\n if (+date <= +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n if (+date >= +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n if ((this.getViewNumber(this.depth) >= this.getViewNumber(view))) {\n if ((this.getViewNumber(this.depth) <= this.getViewNumber(this.start))\n || this.getViewNumber(this.depth) === this.getViewNumber(view)) {\n view = this.depth;\n }\n }\n this.switchView(this.getViewNumber(view), null, null, isCustomDate);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n */\n CalendarBase.prototype.currentView = function () {\n if (!isNullOrUndefined(this.contentElement) && this.contentElement.classList.contains(YEAR)) {\n return 'Year';\n }\n else if (!isNullOrUndefined(this.contentElement) && this.contentElement.classList.contains(DECADE)) {\n return 'Decade';\n }\n else {\n return 'Month';\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n CalendarBase.prototype.getDateVal = function (date, value) {\n return (!isNullOrUndefined(value) && date.getDate() === (value).getDate()\n && date.getMonth() === (value).getMonth() && date.getFullYear() === (value).getFullYear());\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.getCultureObjects = function (ld, c) {\n var gregorianFormat = '.dates.calendars.gregorian.days.format.' + this.dayHeaderFormat.toLowerCase();\n var islamicFormat = '.dates.calendars.islamic.days.format.' + this.dayHeaderFormat.toLowerCase();\n var mainVal = 'main.';\n if (this.calendarMode === 'Gregorian') {\n return getValue(mainVal + '' + this.locale + gregorianFormat, ld);\n }\n else {\n return getValue('main.' + '' + this.locale + islamicFormat, ld);\n }\n };\n CalendarBase.prototype.getWeek = function (d) {\n var currentDate = new Date(this.checkValue(d)).valueOf();\n var date = new Date(d.getFullYear(), 0, 1).valueOf();\n return Math.ceil((((currentDate - date) + dayMilliSeconds) / dayMilliSeconds) / 7);\n };\n CalendarBase.prototype.setStartDate = function (date, time) {\n var tzOffset = date.getTimezoneOffset();\n var d = new Date(date.getTime() + time);\n var tzOffsetDiff = d.getTimezoneOffset() - tzOffset;\n date.setTime(d.getTime() + tzOffsetDiff * minutesMilliSeconds);\n };\n CalendarBase.prototype.addMonths = function (date, i) {\n if (this.calendarMode === 'Gregorian') {\n var day = date.getDate();\n date.setDate(1);\n date.setMonth(date.getMonth() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, (islamicDate.month) + i, 1);\n }\n };\n CalendarBase.prototype.addYears = function (date, i) {\n if (this.calendarMode === 'Gregorian') {\n var day = date.getDate();\n date.setDate(1);\n date.setFullYear(date.getFullYear() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year + i, (islamicDate.month), 1);\n }\n };\n CalendarBase.prototype.getIdValue = function (e, element) {\n var eve;\n if (e) {\n eve = e.currentTarget;\n }\n else {\n eve = element;\n }\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var dateFormatOptions = { type: 'dateTime', skeleton: 'full', calendar: type };\n // eslint-disable-next-line radix\n var dateString = this.globalize.formatDate(new Date(parseInt('' + eve.getAttribute('id'), 0)), dateFormatOptions);\n var date = this.globalize.parseDate(dateString, dateFormatOptions);\n var value = date.valueOf() - date.valueOf() % 1000;\n return new Date(value);\n //return this.globalize.parseDate(dateString, dateFormatOptions);\n };\n CalendarBase.prototype.adjustLongHeaderSize = function () {\n removeClass([this.element], DAYHEADERLONG);\n if (this.dayHeaderFormat === 'Wide') {\n addClass([this.getModuleName() === 'calendar' ? this.element : this.calendarElement], DAYHEADERLONG);\n }\n };\n CalendarBase.prototype.selectDate = function (e, date, node, multiSelection, values) {\n var element = node || e.currentTarget;\n this.isDateSelected = false;\n if (this.currentView() === 'Decade') {\n this.setDateDecade(this.currentDate, date.getFullYear());\n }\n else if (this.currentView() === 'Year') {\n this.setDateYear(this.currentDate, date);\n }\n else {\n if (multiSelection && !this.checkPresentDate(date, values)) {\n var copyValues = this.copyValues(values);\n if (!isNullOrUndefined(values) && copyValues.length > 0) {\n copyValues.push(new Date(this.checkValue(date)));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: values[values.length - 1] }, true);\n }\n else {\n this.setProperties({ values: [new Date(this.checkValue(date))] }, true);\n }\n }\n else {\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n }\n this.currentDate = new Date(this.checkValue(date));\n }\n var tableBodyElement = closest(element, '.' + ROOT);\n if (isNullOrUndefined(tableBodyElement)) {\n tableBodyElement = this.tableBodyElement;\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + SELECTED))) {\n removeClass([tableBodyElement.querySelector('.' + SELECTED)], SELECTED);\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + FOCUSEDDATE))) {\n removeClass([tableBodyElement.querySelector('.' + FOCUSEDDATE)], FOCUSEDDATE);\n }\n if (multiSelection) {\n var copyValues = this.copyValues(values);\n var collection = Array.prototype.slice.call(this.tableBodyElement.querySelectorAll('td'));\n for (var index = 0; index < collection.length; index++) {\n var tempElement = tableBodyElement.querySelectorAll('td' + '.' + FOCUSEDDATE)[0];\n var selectedElement = tableBodyElement.querySelectorAll('td' + '.' + SELECTED)[0];\n if (collection[index] === tempElement) {\n removeClass([collection[index]], FOCUSEDDATE);\n }\n if (collection[index] === selectedElement &&\n !this.checkPresentDate(new Date(parseInt(selectedElement.getAttribute('id').split('_')[0], 10)), values)) {\n removeClass([collection[index]], SELECTED);\n }\n }\n if (element.classList.contains(SELECTED)) {\n removeClass([element], SELECTED);\n for (var i = 0; i < copyValues.length; i++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions = { format: null, type: 'date', skeleton: 'short', calendar: type };\n var localDateString = this.globalize.formatDate(date, formatOptions);\n var tempDateString = this.globalize.formatDate(copyValues[i], formatOptions);\n if (localDateString === tempDateString) {\n var index = copyValues.indexOf(copyValues[i]);\n copyValues.splice(index, 1);\n addClass([element], FOCUSEDDATE);\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n else {\n addClass([element], SELECTED);\n }\n }\n else {\n addClass([element], SELECTED);\n }\n this.isDateSelected = true;\n };\n CalendarBase.prototype.checkPresentDate = function (dates, values) {\n var previousValue = false;\n if (!isNullOrUndefined(values)) {\n for (var checkPrevious = 0; checkPrevious < values.length; checkPrevious++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var localDateString = this.globalize.formatDate(dates, {\n format: null, type: 'date', skeleton: 'short', calendar: type\n });\n var tempDateString = this.globalize.formatDate(values[checkPrevious], {\n format: null, type: 'date', skeleton: 'short', calendar: type\n });\n if (localDateString === tempDateString) {\n previousValue = true;\n }\n }\n }\n return previousValue;\n };\n CalendarBase.prototype.setAriaActiveDescendant = function () {\n attributes(this.table, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n };\n CalendarBase.prototype.previousIconHandler = function (disabled) {\n if (disabled) {\n if (!isNullOrUndefined(this.previousIcon)) {\n EventHandler.remove(this.previousIcon, 'click', this.navigatePreviousHandler);\n addClass([this.previousIcon], '' + DISABLED);\n addClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'true');\n }\n }\n else {\n EventHandler.add(this.previousIcon, 'click', this.navigatePreviousHandler);\n removeClass([this.previousIcon], '' + DISABLED);\n removeClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'false');\n }\n };\n CalendarBase.prototype.renderDayCellEvent = function (args) {\n extend(this.renderDayCellArgs, { name: 'renderDayCell' });\n this.trigger('renderDayCell', args);\n };\n CalendarBase.prototype.navigatedEvent = function (eve) {\n extend(this.navigatedArgs, { name: 'navigated', event: eve });\n this.trigger('navigated', this.navigatedArgs);\n };\n CalendarBase.prototype.triggerNavigate = function (event) {\n this.navigatedArgs = { view: this.currentView(), date: this.currentDate };\n this.navigatedEvent(event);\n };\n CalendarBase.prototype.nextIconHandler = function (disabled) {\n if (disabled) {\n if (!isNullOrUndefined(this.previousIcon)) {\n EventHandler.remove(this.nextIcon, 'click', this.navigateNextHandler);\n addClass([this.nextIcon], DISABLED);\n addClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'true');\n }\n }\n else {\n EventHandler.add(this.nextIcon, 'click', this.navigateNextHandler);\n removeClass([this.nextIcon], DISABLED);\n removeClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'false');\n }\n };\n CalendarBase.prototype.compare = function (startDate, endDate, modifier) {\n var start = endDate.getFullYear();\n var end;\n var result;\n end = start;\n result = 0;\n if (modifier) {\n start = start - start % modifier;\n end = start - start % modifier + modifier - 1;\n }\n if (startDate.getFullYear() > end) {\n result = 1;\n }\n else if (startDate.getFullYear() < start) {\n result = -1;\n }\n return result;\n };\n CalendarBase.prototype.isMinMaxRange = function (date) {\n return +date >= +this.min && +date <= +this.max;\n };\n CalendarBase.prototype.isMonthYearRange = function (date) {\n if (this.calendarMode === 'Gregorian') {\n return date.getMonth() >= this.min.getMonth()\n && date.getFullYear() >= this.min.getFullYear()\n && date.getMonth() <= this.max.getMonth()\n && date.getFullYear() <= this.max.getFullYear();\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n return islamicDate.month >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).month\n && islamicDate.year >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).year\n && islamicDate.month <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).month\n && islamicDate.year <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).year;\n }\n };\n CalendarBase.prototype.compareYear = function (start, end) {\n return this.compare(start, end, 0);\n };\n CalendarBase.prototype.compareDecade = function (start, end) {\n return this.compare(start, end, 10);\n };\n CalendarBase.prototype.shiftArray = function (array, i) {\n return array.slice(i).concat(array.slice(0, i));\n };\n CalendarBase.prototype.addDay = function (date, i, e, max, min) {\n var column = i;\n var value = new Date(+date);\n if (!isNullOrUndefined(this.tableBodyElement) && !isNullOrUndefined(e)) {\n while (this.findNextTD(new Date(+date), column, max, min)) {\n column += i;\n }\n var rangeValue = new Date(value.setDate(value.getDate() + column));\n column = (+rangeValue > +max || +rangeValue < +min) ? column === i ? i - i : i : column;\n }\n date.setDate(date.getDate() + column);\n };\n CalendarBase.prototype.findNextTD = function (date, column, max, min) {\n var value = new Date(date.setDate(date.getDate() + column));\n var collection = [];\n var isDisabled = false;\n if ((!isNullOrUndefined(value) && value.getMonth()) === (!isNullOrUndefined(this.currentDate) && this.currentDate.getMonth())) {\n var tdEles = void 0;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(value);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n collection = tdEles.filter(function (element) {\n return element.classList.contains(DISABLED);\n });\n }\n else {\n collection = this.tableBodyElement.querySelectorAll('td.' + DISABLED);\n }\n if (+value <= (+(max)) && +value >= (+(min))) {\n if (collection.length) {\n for (var i = 0; i < collection.length; i++) {\n // eslint-disable-next-line radix\n isDisabled = (+value === +new Date(parseInt(collection[i].id, 0))) ? true : false;\n if (isDisabled) {\n break;\n }\n }\n }\n }\n return isDisabled;\n };\n CalendarBase.prototype.getMaxDays = function (d) {\n var date;\n var tmpDate = new Date(this.checkValue(d));\n date = 28;\n var month = tmpDate.getMonth();\n while (tmpDate.getMonth() === month) {\n ++date;\n tmpDate.setDate(date);\n }\n return date - 1;\n };\n CalendarBase.prototype.setDateDecade = function (date, year) {\n date.setFullYear(year);\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n };\n CalendarBase.prototype.setDateYear = function (date, value) {\n date.setFullYear(value.getFullYear(), value.getMonth(), date.getDate());\n if (value.getMonth() !== date.getMonth()) {\n date.setDate(0);\n this.currentDate = new Date(this.checkValue(value));\n }\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n };\n CalendarBase.prototype.compareMonth = function (start, end) {\n var result;\n if (start.getFullYear() > end.getFullYear()) {\n result = 1;\n }\n else if (start.getFullYear() < end.getFullYear()) {\n result = -1;\n }\n else {\n result = start.getMonth() === end.getMonth() ? 0 : start.getMonth() > end.getMonth() ? 1 : -1;\n }\n return result;\n };\n CalendarBase.prototype.checkValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n CalendarBase.prototype.checkView = function () {\n if (this.start !== 'Decade' && this.start !== 'Year') {\n this.setProperties({ start: 'Month' }, true);\n }\n if (this.depth !== 'Decade' && this.depth !== 'Year') {\n this.setProperties({ depth: 'Month' }, true);\n }\n if (this.getViewNumber(this.depth) > this.getViewNumber(this.start)) {\n this.setProperties({ depth: 'Month' }, true);\n }\n };\n CalendarBase.prototype.getDate = function (date, timezone) {\n if (timezone) {\n date = new Date(date.toLocaleString('en-US', { timeZone: timezone }));\n }\n return date;\n };\n __decorate([\n Property(new Date(1900, 0, 1))\n ], CalendarBase.prototype, \"min\", void 0);\n __decorate([\n Property(true)\n ], CalendarBase.prototype, \"enabled\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], CalendarBase.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('Gregorian')\n ], CalendarBase.prototype, \"calendarMode\", void 0);\n __decorate([\n Property('Month')\n ], CalendarBase.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], CalendarBase.prototype, \"depth\", void 0);\n __decorate([\n Property(false)\n ], CalendarBase.prototype, \"weekNumber\", void 0);\n __decorate([\n Property('FirstDay')\n ], CalendarBase.prototype, \"weekRule\", void 0);\n __decorate([\n Property(true)\n ], CalendarBase.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Short')\n ], CalendarBase.prototype, \"dayHeaderFormat\", void 0);\n __decorate([\n Property(false)\n ], CalendarBase.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"navigated\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"renderDayCell\", void 0);\n CalendarBase = __decorate([\n NotifyPropertyChanges\n ], CalendarBase);\n return CalendarBase;\n}(Component));\nexport { CalendarBase };\n/**\n * Represents the Calendar component that allows the user to select a date.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Calendar = /** @class */ (function (_super) {\n __extends(Calendar, _super);\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n *\n * @param {CalendarModel} options - Specifies the Calendar model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Calendar(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Calendar.prototype.render = function () {\n if (this.calendarMode === 'Islamic' && this.islamicModule === undefined) {\n throwError('Requires the injectable Islamic modules to render Calendar in Islamic mode');\n }\n if (this.isMultiSelection && typeof this.values === 'object' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n var tempValues = [];\n var copyValues = [];\n for (var limit = 0; limit < this.values.length; limit++) {\n if (tempValues.indexOf(+this.values[limit]) === -1) {\n tempValues.push(+this.values[limit]);\n copyValues.push(this.values[limit]);\n }\n }\n this.setProperties({ values: copyValues }, true);\n for (var index = 0; index < this.values.length; index++) {\n if (!this.checkDateValue(this.values[index])) {\n if (typeof (this.values[index]) === 'string' && this.checkDateValue(new Date(this.checkValue(this.values[index])))) {\n var copyDate = new Date(this.checkValue(this.values[index]));\n this.values.splice(index, 1);\n this.values.splice(index, 0, copyDate);\n }\n else {\n this.values.splice(index, 1);\n }\n }\n }\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n this.previousValues = this.values.length;\n }\n this.validateDate();\n this.minMaxUpdate();\n if (this.getModuleName() === 'calendar') {\n this.setEnable(this.enabled);\n this.setClass(this.cssClass);\n }\n _super.prototype.render.call(this);\n if (this.getModuleName() === 'calendar') {\n var form = closest(this.element, 'form');\n if (form) {\n EventHandler.add(form, 'reset', this.formResetHandler.bind(this));\n }\n this.setTimeZone(this.serverTimezoneOffset);\n }\n this.renderComplete();\n };\n Calendar.prototype.setEnable = function (enable) {\n if (!enable) {\n addClass([this.element], DISABLED);\n }\n else {\n removeClass([this.element], DISABLED);\n }\n };\n Calendar.prototype.setClass = function (newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(oldCssClass) && oldCssClass !== '') {\n removeClass([this.element], oldCssClass.split(' '));\n }\n if (!isNullOrUndefined(newCssClass)) {\n addClass([this.element], newCssClass.split(' '));\n }\n };\n Calendar.prototype.isDayLightSaving = function () {\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n Calendar.prototype.setTimeZone = function (offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var serverTimezoneDiff = offsetValue;\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date(this.value.getTime() + (timeZoneDiff * 60 * 60 * 1000));\n }\n };\n Calendar.prototype.formResetHandler = function () {\n this.setProperties({ value: null }, true);\n };\n Calendar.prototype.validateDate = function () {\n if (typeof this.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(this.checkValue(this.value))) }, true); // persist the value property.\n }\n _super.prototype.validateDate.call(this, this.value);\n if (!isNullOrUndefined(this.value) && this.min <= this.max && this.value >= this.min && this.value <= this.max) {\n this.currentDate = new Date(this.checkValue(this.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n };\n Calendar.prototype.minMaxUpdate = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.value) && this.value <= this.min && this.min <= this.max) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value >= this.max && this.min <= this.max) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n }\n if (this.getModuleName() !== 'calendar' && !isNullOrUndefined(this.value)) {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max) {\n _super.prototype.minMaxUpdate.call(this, this.min);\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max) {\n _super.prototype.minMaxUpdate.call(this, this.max);\n }\n }\n }\n else {\n _super.prototype.minMaxUpdate.call(this, this.value);\n }\n };\n Calendar.prototype.generateTodayVal = function (value) {\n var tempValue = new Date();\n if (!isNullOrUndefined(this.timezone)) {\n tempValue = _super.prototype.getDate.call(this, tempValue, this.timezone);\n }\n if (value && isNullOrUndefined(this.timezone)) {\n tempValue.setHours(value.getHours());\n tempValue.setMinutes(value.getMinutes());\n tempValue.setSeconds(value.getSeconds());\n tempValue.setMilliseconds(value.getMilliseconds());\n }\n else {\n tempValue = new Date(tempValue.getFullYear(), tempValue.getMonth(), tempValue.getDate(), 0, 0, 0, 0);\n }\n return tempValue;\n };\n Calendar.prototype.todayButtonClick = function (e) {\n if (this.showTodayButton) {\n var tempValue = this.generateTodayVal(this.value);\n this.setProperties({ value: tempValue }, true);\n this.isTodayClicked = true;\n this.todayButtonEvent = e;\n if (this.isMultiSelection) {\n var copyValues = this.copyValues(this.values);\n if (!_super.prototype.checkPresentDate.call(this, tempValue, this.values)) {\n copyValues.push(tempValue);\n this.setProperties({ values: copyValues });\n }\n }\n _super.prototype.todayButtonClick.call(this, e, new Date(+this.value));\n }\n };\n Calendar.prototype.keyActionHandle = function (e) {\n _super.prototype.keyActionHandle.call(this, e, this.value, this.isMultiSelection);\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Calendar.prototype.preRender = function () {\n var _this = this;\n this.changeHandler = function (e) {\n _this.triggerChange(e);\n };\n this.checkView();\n _super.prototype.preRender.call(this, this.value);\n };\n /**\n * @returns {void}\n\n */\n Calendar.prototype.createContent = function () {\n this.previousDate = this.value;\n this.previousDateTime = this.value;\n _super.prototype.createContent.call(this);\n };\n Calendar.prototype.minMaxDate = function (localDate) {\n return _super.prototype.minMaxDate.call(this, localDate);\n };\n Calendar.prototype.renderMonths = function (e, value, isCustomDate) {\n _super.prototype.renderMonths.call(this, e, this.value, isCustomDate);\n };\n Calendar.prototype.renderDays = function (currentDate, value, isMultiSelect, values, isCustomDate, e) {\n var tempDays = _super.prototype.renderDays.call(this, currentDate, this.value, this.isMultiSelection, this.values, isCustomDate, e);\n if (this.isMultiSelection) {\n _super.prototype.validateValues.call(this, this.isMultiSelection, this.values);\n }\n return tempDays;\n };\n Calendar.prototype.renderYears = function (e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderYears.call(this, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderYears(e, this.value);\n }\n };\n Calendar.prototype.renderDecades = function (e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderDecades.call(this, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderDecade(e, this.value);\n }\n };\n Calendar.prototype.renderTemplate = function (elements, count, classNm, e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderTemplate.call(this, elements, count, classNm, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(elements, count, classNm, e, this.value);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n };\n Calendar.prototype.clickHandler = function (e) {\n var eve = e.currentTarget;\n this.isPopupClicked = true;\n if (eve.classList.contains(OTHERMONTH)) {\n if (this.isMultiSelection) {\n var copyValues = this.copyValues(this.values);\n if (copyValues.toString().indexOf(this.getIdValue(e, null).toString()) === -1) {\n copyValues.push(this.getIdValue(e, null));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n else {\n this.previousDates = true;\n }\n }\n else {\n this.setProperties({ value: this.getIdValue(e, null) }, true);\n }\n }\n var storeView = this.currentView();\n _super.prototype.clickHandler.call(this, e, this.value);\n if (this.isMultiSelection && this.currentDate !== this.value &&\n !isNullOrUndefined(this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0]) && storeView === 'Year') {\n this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0].classList.remove(FOCUSEDDATE);\n }\n };\n Calendar.prototype.switchView = function (view, e, isMultiSelection, isCustomDate) {\n _super.prototype.switchView.call(this, view, e, this.isMultiSelection, isCustomDate);\n };\n /**\n * To get component name\n *\n * @returns {string} Return the component name.\n * @private\n */\n Calendar.prototype.getModuleName = function () {\n _super.prototype.getModuleName.call(this);\n return 'calendar';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n Calendar.prototype.getPersistData = function () {\n _super.prototype.getPersistData.call(this);\n var keyEntity = ['value', 'values'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Called internally if any of the property value changed.\n *\n * @param {CalendarModel} newProp - Returns the dynamic property value of the component.\n * @param {CalendarModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n Calendar.prototype.onPropertyChanged = function (newProp, oldProp) {\n this.effect = '';\n this.rangeValidation(this.min, this.max);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n if (this.isDateSelected) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: new Date(this.checkValue(newProp.value)) }, true);\n }\n else {\n newProp.value = new Date(this.checkValue(newProp.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: oldProp.value }, true);\n }\n this.update();\n }\n break;\n case 'values':\n if (this.isDateSelected) {\n if (typeof newProp.values === 'string' || typeof newProp.values === 'number') {\n this.setProperties({ values: null }, true);\n }\n else {\n var copyValues = this.copyValues(this.values);\n for (var index = 0; index < copyValues.length; index++) {\n var tempDate = copyValues[index];\n if (this.checkDateValue(tempDate) && !_super.prototype.checkPresentDate.call(this, tempDate, copyValues)) {\n copyValues.push(tempDate);\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.values.length > 0) {\n this.setProperties({ value: newProp.values[newProp.values.length - 1] }, true);\n }\n }\n this.validateValues(this.isMultiSelection, this.values);\n this.update();\n }\n break;\n case 'isMultiSelection':\n if (this.isDateSelected) {\n this.setProperties({ isMultiSelection: newProp.isMultiSelection }, true);\n this.update();\n }\n break;\n case 'enabled':\n this.setEnable(this.enabled);\n break;\n case 'cssClass':\n if (this.getModuleName() === 'calendar') {\n this.setClass(newProp.cssClass, oldProp.cssClass);\n }\n break;\n default:\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp, this.isMultiSelection, this.values);\n }\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Calendar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.getModuleName() === 'calendar') {\n var form = closest(this.element, 'form');\n if (form) {\n EventHandler.remove(form, 'reset', this.formResetHandler.bind(this));\n }\n }\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @param {boolean} isCustomDate - Specifies whether the calendar is rendered with custom today date or not.\n * @returns {void}\n\n */\n Calendar.prototype.navigateTo = function (view, date, isCustomDate) {\n this.minMaxUpdate();\n _super.prototype.navigateTo.call(this, view, date, isCustomDate);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n\n */\n Calendar.prototype.currentView = function () {\n return _super.prototype.currentView.call(this);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * This method is used to add the single or multiple dates to the values property of the Calendar.\n *\n * @param {Date | Date[]} dates - Specifies the date or dates to be added to the values property of the Calendar.\n * @returns {void}\n\n */\n Calendar.prototype.addDate = function (dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number') {\n var copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && (dates).length > 0) {\n var tempDates = dates;\n for (var i = 0; i < tempDates.length; i++) {\n if (this.checkDateValue(tempDates[i]) && !_super.prototype.checkPresentDate.call(this, tempDates[i], copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push(tempDates[i]);\n }\n else {\n copyValues = [new Date(+tempDates[i])];\n }\n }\n }\n }\n else {\n if (this.checkDateValue(dates) && !_super.prototype.checkPresentDate.call(this, dates, copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push((dates));\n }\n else {\n copyValues = [new Date(+dates)];\n }\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.validateValues(this.isMultiSelection, copyValues);\n this.update();\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n };\n /**\n * This method is used to remove the single or multiple dates from the values property of the Calendar.\n *\n * @param {Date | Date[]} dates - Specifies the date or dates which need to be removed from the values property of the Calendar.\n * @returns {void}\n\n */\n Calendar.prototype.removeDate = function (dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n var copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && ((dates).length > 0)) {\n var tempDates = dates;\n for (var index = 0; index < tempDates.length; index++) {\n for (var i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +tempDates[index]) {\n copyValues.splice(i, 1);\n }\n }\n }\n }\n else {\n for (var i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +dates) {\n copyValues.splice(i, 1);\n }\n }\n }\n this.setProperties({ values: copyValues }, false);\n this.update();\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n };\n /**\n * To set custom today date in calendar\n *\n * @param {Date} date - Specifies date value to be set.\n * @private\n * @returns {void}\n */\n Calendar.prototype.setTodayDate = function (date) {\n var todayDate = new Date(+date);\n this.setProperties({ value: todayDate }, true);\n _super.prototype.todayButtonClick.call(this, null, todayDate, true);\n };\n Calendar.prototype.update = function () {\n this.validateDate();\n this.minMaxUpdate();\n _super.prototype.setValueUpdate.call(this);\n };\n Calendar.prototype.selectDate = function (e, date, element) {\n _super.prototype.selectDate.call(this, e, date, element, this.isMultiSelection, this.values);\n if (this.isMultiSelection && !isNullOrUndefined(this.values) && this.values.length > 0) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler(e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Calendar.prototype.changeEvent = function (e) {\n if ((this.value && this.value.valueOf()) !== (this.previousDate && +this.previousDate.valueOf())\n || this.isMultiSelection) {\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.changedArgs);\n }\n this.previousDate = new Date(+this.value);\n }\n };\n Calendar.prototype.triggerChange = function (e) {\n if (!isNullOrUndefined(this.todayButtonEvent) && this.isTodayClicked) {\n e = this.todayButtonEvent;\n this.isTodayClicked = false;\n }\n this.changedArgs.event = e || null;\n this.changedArgs.isInteracted = !isNullOrUndefined(e);\n if (!isNullOrUndefined(this.value)) {\n this.setProperties({ value: this.value }, true);\n }\n // eslint-disable-next-line use-isnan\n if (!this.isMultiSelection && +this.value !== Number.NaN && (!isNullOrUndefined(this.value) &&\n !isNullOrUndefined(this.previousDate) || this.previousDate === null\n && !isNaN(+this.value))) {\n this.changeEvent(e);\n }\n else if (!isNullOrUndefined(this.values) && this.previousValues !== this.values.length) {\n this.changeEvent(e);\n this.previousValues = this.values.length;\n }\n };\n __decorate([\n Property(null)\n ], Calendar.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], Calendar.prototype, \"values\", void 0);\n __decorate([\n Property(false)\n ], Calendar.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Event()\n ], Calendar.prototype, \"change\", void 0);\n Calendar = __decorate([\n NotifyPropertyChanges\n ], Calendar);\n return Calendar;\n}(CalendarBase));\nexport { Calendar };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Internationalization, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Animation, Event, extend, L10n, Browser, formatUnit } from '@syncfusion/ej2-base';\nimport { detach, addClass, removeClass, closest, attributes, Touch } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, setValue, getUniqueID } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { Calendar } from '../calendar/calendar';\n//class constant defination\nvar DATEWRAPPER = 'e-date-wrapper';\nvar ROOT = 'e-datepicker';\nvar LIBRARY = 'e-lib';\nvar CONTROL = 'e-control';\nvar POPUPWRAPPER = 'e-popup-wrapper';\nvar INPUTWRAPPER = 'e-input-group-icon';\nvar POPUP = 'e-popup';\nvar INPUTCONTAINER = 'e-input-group';\nvar INPUTFOCUS = 'e-input-focus';\nvar INPUTROOT = 'e-input';\nvar ERROR = 'e-error';\nvar ACTIVE = 'e-active';\nvar OVERFLOW = 'e-date-overflow';\nvar DATEICON = 'e-date-icon';\nvar CLEARICON = 'e-clear-icon';\nvar ICONS = 'e-icons';\nvar OPENDURATION = 300;\nvar OFFSETVALUE = 4;\nvar SELECTED = 'e-selected';\nvar FOCUSEDDATE = 'e-focused-date';\nvar NONEDIT = 'e-non-edit';\nvar containerAttr = ['title', 'class', 'style'];\n/**\n * Represents the DatePicker component that allows user to select\n * or enter a date value.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DatePicker = /** @class */ (function (_super) {\n __extends(DatePicker, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {DatePickerModel} options - Specifies the DatePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DatePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isDateIconClicked = false;\n _this.isAltKeyPressed = false;\n _this.isInteracted = true;\n _this.invalidValueString = null;\n _this.checkPreviousValue = null;\n _this.maskedDateValue = '';\n _this.isAngular = false;\n _this.preventChange = false;\n _this.isIconClicked = false;\n _this.isDynamicValueChanged = false;\n _this.moduleName = _this.getModuleName();\n _this.isFocused = false;\n _this.isBlur = false;\n _this.isKeyAction = false;\n _this.datepickerOptions = options;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DatePicker.prototype.render = function () {\n this.initialize();\n this.bindEvents();\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n this.setTimeZone(this.serverTimezoneOffset);\n };\n DatePicker.prototype.setTimeZone = function (offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var serverTimezoneDiff = offsetValue;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date((this.value).getTime() + (timeZoneDiff * 60 * 60 * 1000));\n this.updateInput();\n }\n };\n DatePicker.prototype.isDayLightSaving = function () {\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n DatePicker.prototype.setAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.updateIconState();\n };\n DatePicker.prototype.updateIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n else {\n addClass([this.inputWrapper.container], [NONEDIT]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n };\n DatePicker.prototype.initialize = function () {\n this.checkInvalidValue(this.value);\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n this.createInput();\n this.updateHtmlAttributeToWrapper();\n this.setAllowEdit();\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n this.updateInput(true);\n this.updateInputValue(this.maskedDateValue);\n }\n else if (!this.enableMask) {\n this.updateInput(true);\n }\n this.previousElementValue = this.inputElement.value;\n this.previousDate = !isNullOrUndefined(this.value) ? new Date(+this.value) : null;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.inputValueCopy = this.value;\n };\n DatePicker.prototype.createInput = function () {\n var ariaAttrs = {\n 'aria-atomic': 'true', 'aria-expanded': 'false',\n 'role': 'combobox', 'autocomplete': 'off', 'autocorrect': 'off',\n 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-invalid': 'false'\n };\n if (this.getModuleName() === 'datepicker') {\n var l10nLocale = { placeholder: this.placeholder };\n this.globalize = new Internationalization(this.locale);\n this.l10n = new L10n('datepicker', l10nLocale, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (this.fullScreenMode && Browser.isDevice) {\n this.cssClass += ' ' + \"e-popup-expand\";\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n var isBindClearAction = this.enableMask ? false : true;\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n bindClearAction: isBindClearAction,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n buttons: [INPUTWRAPPER + ' ' + DATEICON + ' ' + ICONS]\n }, this.createElement);\n this.setWidth(this.width);\n if (this.inputElement.name !== '') {\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute('name'));\n }\n else {\n this.inputElement.setAttribute('name', '' + this.element.id);\n }\n attributes(this.inputElement, ariaAttrs);\n if (!this.enabled) {\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.inputElement.tabIndex = -1;\n }\n else {\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n Input.addAttributes({ 'aria-label': 'select' }, this.inputWrapper.buttons[0]);\n addClass([this.inputWrapper.container], DATEWRAPPER);\n };\n DatePicker.prototype.updateInput = function (isDynamic, isBlur) {\n if (isDynamic === void 0) { isDynamic = false; }\n if (isBlur === void 0) { isBlur = false; }\n var formatOptions;\n if (this.value && !this.isCalendar()) {\n this.disabledDates(isDynamic, isBlur);\n }\n if (isNaN(+new Date(this.checkValue(this.value)))) {\n this.setProperties({ value: null }, true);\n }\n if (this.strictMode) {\n //calls the Calendar processDate protected method to update the date value according to the strictMode true behaviour.\n _super.prototype.validateDate.call(this);\n this.minMaxUpdates();\n _super.prototype.minMaxUpdate.call(this);\n }\n if (!isNullOrUndefined(this.value)) {\n var dateValue = this.value;\n var dateString = void 0;\n var tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateString = this.globalize.formatDate(this.value, formatOptions);\n }\n if ((+dateValue <= +this.max) && (+dateValue >= +this.min)) {\n this.updateInputValue(dateString);\n }\n else {\n var value = (+dateValue >= +this.max || !+this.value) || (!+this.value || +dateValue <= +this.min);\n if (!this.strictMode && value) {\n this.updateInputValue(dateString);\n }\n }\n }\n if (isNullOrUndefined(this.value) && this.strictMode) {\n if (!this.enableMask) {\n this.updateInputValue('');\n }\n else {\n this.updateInputValue(this.maskedDateValue);\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.updateInputValue(this.invalidValueString);\n }\n this.changedArgs = { value: this.value };\n this.errorClass();\n this.updateIconState();\n };\n DatePicker.prototype.minMaxUpdates = function () {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n };\n DatePicker.prototype.checkStringValue = function (val) {\n var returnDate = null;\n var formatOptions = null;\n var formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n var culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatOptions));\n if (isNullOrUndefined(returnDate) && (this.getModuleName() === 'datetimepicker')) {\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatDateTime));\n }\n return returnDate;\n };\n DatePicker.prototype.checkInvalidValue = function (value) {\n if (!(value instanceof Date) && !isNullOrUndefined(value)) {\n var valueDate = null;\n var valueString = value;\n if (typeof value === 'number') {\n valueString = value.toString();\n }\n var formatOptions = null;\n var formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n var culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n var invalid = false;\n if (typeof valueString !== 'string') {\n valueString = null;\n invalid = true;\n }\n else {\n if (typeof valueString === 'string') {\n valueString = valueString.trim();\n }\n valueDate = this.checkStringValue(valueString);\n if (!valueDate) {\n var extISOString = null;\n var basicISOString = null;\n // eslint-disable-next-line\n extISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // eslint-disable-next-line\n basicISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOString.test(valueString) && !basicISOString.test(valueString))\n || (/^[a-zA-Z0-9- ]*$/).test(valueString) || isNaN(+new Date(this.checkValue(valueString)))) {\n invalid = true;\n }\n else {\n valueDate = new Date(valueString);\n }\n }\n }\n if (invalid) {\n if (!this.strictMode) {\n this.invalidValueString = valueString;\n }\n this.setProperties({ value: null }, true);\n }\n else {\n this.setProperties({ value: valueDate }, true);\n }\n }\n };\n DatePicker.prototype.bindInputEvent = function () {\n if (!isNullOrUndefined(this.formatString) || this.enableMask) {\n if (this.enableMask || this.formatString.indexOf('y') === -1) {\n EventHandler.add(this.inputElement, 'input', this.inputHandler, this);\n }\n else {\n EventHandler.remove(this.inputElement, 'input', this.inputHandler);\n }\n }\n };\n DatePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown touchstart', this.dateIconHandler, this);\n EventHandler.add(this.inputElement, 'mouseup', this.mouseUpHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n EventHandler.add(this.inputElement, 'keyup', this.keyupHandler, this);\n if (this.enableMask) {\n EventHandler.add(this.inputElement, 'keydown', this.keydownHandler, this);\n }\n this.bindInputEvent();\n // To prevent the twice triggering.\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.resetFormHandler, this);\n }\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.keyboardModules = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n };\n DatePicker.prototype.keydownHandler = function (e) {\n switch (e.code) {\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'ArrowUp':\n case 'ArrowDown':\n case 'Home':\n case 'End':\n case 'Delete':\n if (this.enableMask && !this.popupObj && !this.readonly) {\n if (e.code !== 'Delete') {\n e.preventDefault();\n }\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n }\n break;\n default:\n break;\n }\n };\n DatePicker.prototype.unBindEvents = function () {\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.dateIconHandler);\n }\n EventHandler.remove(this.inputElement, 'mouseup', this.mouseUpHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n EventHandler.remove(this.inputElement, 'keyup', this.keyupHandler);\n if (this.enableMask) {\n EventHandler.remove(this.inputElement, 'keydown', this.keydownHandler);\n }\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n };\n DatePicker.prototype.resetFormHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.inputElement.disabled) {\n var value = this.inputElement.getAttribute('value');\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n value = '';\n this.inputValueCopy = null;\n this.inputElement.setAttribute('value', '');\n }\n this.setProperties({ value: this.inputValueCopy }, true);\n this.restoreValue();\n if (this.inputElement) {\n this.updateInputValue(value);\n this.errorClass();\n }\n }\n };\n DatePicker.prototype.restoreValue = function () {\n this.currentDate = this.value ? this.value : new Date();\n this.previousDate = this.value;\n this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.globalize.formatDate(this.inputValueCopy, {\n format: this.formatString, type: 'dateTime', skeleton: 'yMd'\n });\n };\n DatePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n };\n DatePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n DatePicker.prototype.resetHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.preventDefault();\n this.clear(e);\n };\n DatePicker.prototype.mouseUpHandler = function (e) {\n if (this.enableMask) {\n e.preventDefault();\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n }\n };\n DatePicker.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n if (!this.enableMask) {\n this.updateInputValue('');\n }\n var clearedArgs = {\n event: event\n };\n this.trigger('cleared', clearedArgs);\n this.invalidValueString = '';\n this.updateInput();\n this.popupUpdate();\n this.changeEvent(event);\n if (this.enableMask) {\n this.notify('clearHandler', {\n module: 'MaskedDateTime'\n });\n }\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n DatePicker.prototype.preventEventBubbling = function (e) {\n e.preventDefault();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnDateIconClick');\n };\n DatePicker.prototype.updateInputValue = function (value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DatePicker.prototype.dateIconHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isIconClicked = true;\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n this.inputElement.blur();\n }\n e.preventDefault();\n if (!this.readonly) {\n if (this.isCalendar()) {\n this.hide(e);\n }\n else {\n this.isDateIconClicked = true;\n this.show(null, e);\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n addClass(this.inputWrapper.buttons, ACTIVE);\n }\n }\n this.isIconClicked = false;\n };\n DatePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (!isNullOrUndefined(this.htmlAttributes[\"\" + key])) {\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValues !== '') {\n addClass([this.inputWrapper.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = this.inputWrapper.container.getAttribute(key);\n if (!isNullOrUndefined(setStyle)) {\n if (setStyle.charAt(setStyle.length - 1) === ';') {\n setStyle = setStyle + this.htmlAttributes[\"\" + key];\n }\n else {\n setStyle = setStyle + ';' + this.htmlAttributes[\"\" + key];\n }\n }\n else {\n setStyle = this.htmlAttributes[\"\" + key];\n }\n this.inputWrapper.container.setAttribute(key, setStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n }\n };\n DatePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n DatePicker.prototype.updateCssClass = function (newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newCssClass, [this.inputWrapper.container], oldCssClass);\n if (this.popupWrapper) {\n Input.setCssClass(newCssClass, [this.popupWrapper], oldCssClass);\n }\n };\n DatePicker.prototype.calendarKeyActionHandle = function (e) {\n switch (e.action) {\n case 'escape':\n if (this.isCalendar()) {\n this.hide(e);\n }\n else {\n this.inputWrapper.container.children[this.index].blur();\n }\n break;\n case 'enter':\n if (!this.isCalendar()) {\n this.show(null, e);\n }\n else {\n if (+this.value !== +this.currentDate && !this.isCalendar()) {\n this.inputWrapper.container.children[this.index].focus();\n }\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n break;\n case 'tab':\n this.hide(e);\n }\n };\n DatePicker.prototype.inputFocusHandler = function () {\n this.isFocused = true;\n if (!this.enabled) {\n return;\n }\n if (this.enableMask && !this.inputElement.value && this.placeholder) {\n if (this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.inputElement.selectionStart = 0;\n this.inputElement.selectionEnd = this.inputElement.value.length;\n }\n }\n var focusArguments = {\n model: this\n };\n this.isDateIconClicked = false;\n this.trigger('focus', focusArguments);\n this.updateIconState();\n if (this.openOnFocus && !this.isIconClicked) {\n this.show();\n }\n };\n DatePicker.prototype.inputHandler = function () {\n this.isPopupClicked = false;\n if (this.enableMask) {\n this.notify('inputHandler', {\n module: 'MaskedDateTime'\n });\n }\n };\n DatePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.strictModeUpdate();\n if (this.inputElement.value === '' && isNullOrUndefined(this.value)) {\n this.invalidValueString = null;\n this.updateInputValue('');\n }\n this.isBlur = true;\n this.updateInput(false, true);\n this.isBlur = false;\n this.popupUpdate();\n this.changeTrigger(e);\n if (this.enableMask && this.maskedDateValue && this.placeholder && this.floatLabelType !== 'Always') {\n if (this.inputElement.value === this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue('');\n }\n }\n this.errorClass();\n if (this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.getModuleName() === 'datepicker') {\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n if (this.isCalendar()) {\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.calendarKeyboardModules = new KeyboardEvents(this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: this.calendarKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n this.isPopupClicked = false;\n };\n DatePicker.prototype.documentHandler = function (e) {\n if ((!isNullOrUndefined(this.popupObj) && !isNullOrUndefined(this.inputWrapper) && (this.inputWrapper.container.contains(e.target) && e.type !== 'mousedown' ||\n (this.popupObj.element && this.popupObj.element.contains(e.target)))) && e.type !== 'touchstart') {\n e.preventDefault();\n }\n var target = e.target;\n if (!(closest(target, '.e-datepicker.e-popup-wrapper')) && !isNullOrUndefined(this.inputWrapper)\n && !(closest(target, '.' + INPUTCONTAINER) === this.inputWrapper.container)\n && (!target.classList.contains('e-day'))) {\n this.hide(e);\n this.focusOut();\n }\n else if (closest(target, '.e-datepicker.e-popup-wrapper')) {\n // Fix for close the popup when select the previously selected value.\n if (target.classList.contains('e-day')\n && !isNullOrUndefined(e.target.parentElement)\n && e.target.parentElement.classList.contains('e-selected')\n && closest(target, '.e-content')\n && closest(target, '.e-content').classList.contains('e-' + this.depth.toLowerCase())) {\n this.hide(e);\n }\n else if (closest(target, '.e-footer-container')\n && target.classList.contains('e-today')\n && target.classList.contains('e-btn')\n && (+new Date(+this.value) === +_super.prototype.generateTodayVal.call(this, this.value))) {\n this.hide(e);\n }\n }\n };\n DatePicker.prototype.inputKeyActionHandle = function (e) {\n var clickedView = this.currentView();\n switch (e.action) {\n case 'altUpArrow':\n this.isAltKeyPressed = false;\n this.hide(e);\n this.inputElement.focus();\n break;\n case 'altDownArrow':\n this.isAltKeyPressed = true;\n this.strictModeUpdate();\n this.updateInput();\n this.changeTrigger(e);\n if (this.getModuleName() === 'datepicker') {\n this.show(null, e);\n }\n break;\n case 'escape':\n this.hide(e);\n break;\n case 'enter':\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n if (!this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.isCalendar()) {\n e.preventDefault();\n e.stopPropagation();\n }\n break;\n case 'tab':\n case 'shiftTab':\n {\n var start = this.inputElement.selectionStart;\n var end = this.inputElement.selectionEnd;\n if (this.enableMask && !this.popupObj && !this.readonly) {\n var length_1 = this.inputElement.value.length;\n if ((start === 0 && end === length_1) || (end !== length_1 && e.action === 'tab') || (start !== 0 && e.action === 'shiftTab')) {\n e.preventDefault();\n }\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n start = this.inputElement.selectionStart;\n end = this.inputElement.selectionEnd;\n }\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n if (this.enableMask) {\n this.inputElement.selectionStart = start;\n this.inputElement.selectionEnd = end;\n }\n this.hide(e);\n break;\n }\n default:\n this.defaultAction(e);\n // Fix for close the popup when select the previously selected value.\n if (e.action === 'select' && clickedView === this.depth) {\n this.hide(e);\n }\n }\n };\n DatePicker.prototype.defaultAction = function (e) {\n this.previousDate = ((!isNullOrUndefined(this.value) && new Date(+this.value)) || null);\n if (this.isCalendar()) {\n _super.prototype.keyActionHandle.call(this, e);\n if (this.isCalendar()) {\n attributes(this.inputElement, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n }\n }\n };\n DatePicker.prototype.popupUpdate = function () {\n if ((isNullOrUndefined(this.value)) && (!isNullOrUndefined(this.previousDate)) ||\n (+this.value !== +this.previousDate)) {\n if (this.popupObj) {\n if (this.popupObj.element.querySelectorAll('.' + SELECTED).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + SELECTED), [SELECTED]);\n }\n }\n if (!isNullOrUndefined(this.value)) {\n if ((+this.value >= +this.min) && (+this.value <= +this.max)) {\n var targetdate = new Date(this.checkValue(this.value));\n _super.prototype.navigateTo.call(this, 'Month', targetdate);\n }\n }\n }\n };\n DatePicker.prototype.strictModeUpdate = function () {\n var format;\n var pattern = /^y/;\n var charPattern = /[^a-zA-Z]/;\n var formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n format = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else if (!pattern.test(this.formatString) || charPattern.test(this.formatString)) {\n format = isNullOrUndefined(this.formatString) ? this.formatString : this.formatString.replace('dd', 'd');\n }\n if (!isNullOrUndefined(format)) {\n var len = format.split('M').length - 1;\n if (len < 3) {\n format = format.replace('MM', 'M');\n }\n }\n else {\n format = this.formatString;\n }\n var dateOptions;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n };\n }\n else {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateOptions = formatOptions;\n }\n var date;\n if (typeof this.inputElement.value === 'string') {\n this.inputElement.value = this.inputElement.value.trim();\n }\n if ((this.getModuleName() === 'datetimepicker')) {\n if (this.checkDateValue(this.globalize.parseDate(this.inputElement.value, dateOptions))) {\n date = this.globalize.parseDate(this.inputElement.value.toLocaleUpperCase(), dateOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.parseDate(this.inputElement.value, formatOptions);\n }\n }\n else {\n date = this.globalize.parseDate(this.inputElement.value, dateOptions);\n date = (!isNullOrUndefined(date) && isNaN(+date)) ? null : date;\n if (!isNullOrUndefined(this.formatString) && this.inputElement.value !== '' && this.strictMode) {\n if ((this.isPopupClicked || (!this.isPopupClicked && this.inputElement.value === this.previousElementValue))\n && this.formatString.indexOf('y') === -1) {\n date.setFullYear(this.value.getFullYear());\n }\n }\n }\n // EJ2-35061 - To prevent change event from triggering twice when using strictmode and format property\n if ((this.getModuleName() === 'datepicker') && (this.value && !isNaN(+this.value)) && date) {\n date.setHours(this.value.getHours(), this.value.getMinutes(), this.value.getSeconds(), this.value.getMilliseconds());\n }\n if (this.strictMode && date) {\n this.updateInputValue(this.globalize.formatDate(date, dateOptions));\n if (this.inputElement.value !== this.previousElementValue) {\n this.setProperties({ value: date }, true);\n }\n }\n else if (!this.strictMode) {\n if (this.inputElement.value !== this.previousElementValue) {\n this.setProperties({ value: date }, true);\n }\n }\n if (this.strictMode && !date && this.inputElement.value === (this.enableMask ? this.maskedDateValue : '')) {\n this.setProperties({ value: null }, true);\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n if (isNullOrUndefined(this.value)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n };\n DatePicker.prototype.createCalendar = function () {\n var _this = this;\n this.popupWrapper = this.createElement('div', { className: '' + ROOT + ' ' + POPUPWRAPPER });\n if (!isNullOrUndefined(this.cssClass)) {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (Browser.isDevice) {\n this.modelHeader();\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT + ' e-date-modal';\n document.body.className += ' ' + OVERFLOW;\n this.modal.style.display = 'block';\n document.body.appendChild(this.modal);\n }\n //this.calendarElement represent the Calendar object from the Calendar class.\n this.calendarElement.querySelector('table tbody').className = '';\n this.popupObj = new Popup(this.popupWrapper, {\n content: this.calendarElement,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : (this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' }),\n offsetY: OFFSETVALUE,\n targetType: 'container',\n enableRtl: this.enableRtl,\n zIndex: this.zIndex,\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n open: function () {\n if (Browser.isDevice && _this.fullScreenMode) {\n _this.iconRight = parseInt(window.getComputedStyle(_this.calendarElement.querySelector('.e-header.e-month .e-prev')).marginRight, 10) > 16 ? true : false;\n _this.touchModule = new Touch(_this.calendarElement.querySelector(\".e-content.e-month\"), {\n swipe: _this.CalendarSwipeHandler.bind(_this)\n });\n EventHandler.add(_this.calendarElement.querySelector(\".e-content.e-month\"), \"touchstart\", _this.TouchStartHandler, _this);\n }\n if (_this.getModuleName() !== 'datetimepicker') {\n if (document.activeElement !== _this.inputElement) {\n _this.defaultKeyConfigs = extend(_this.defaultKeyConfigs, _this.keyConfigs);\n _this.calendarElement.children[1].firstElementChild.focus();\n _this.calendarKeyboardModules = new KeyboardEvents(_this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: _this.calendarKeyActionHandle.bind(_this),\n keyConfigs: _this.defaultKeyConfigs\n });\n _this.calendarKeyboardModules = new KeyboardEvents(_this.inputWrapper.container.children[_this.index], {\n eventName: 'keydown',\n keyAction: _this.calendarKeyActionHandle.bind(_this),\n keyConfigs: _this.defaultKeyConfigs\n });\n }\n }\n }, close: function () {\n if (_this.isDateIconClicked) {\n _this.inputWrapper.container.children[_this.index].focus();\n }\n if (_this.value) {\n _this.disabledDates();\n }\n if (_this.popupObj) {\n _this.popupObj.destroy();\n }\n _this.resetCalendar();\n detach(_this.popupWrapper);\n _this.popupObj = _this.popupWrapper = null;\n _this.preventArgs = null;\n _this.calendarKeyboardModules = null;\n _this.setAriaAttributes();\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n this.popupObj.element.className += ' ' + this.cssClass;\n this.setAriaAttributes();\n };\n DatePicker.prototype.CalendarSwipeHandler = function (e) {\n var direction = 0;\n if (this.iconRight) {\n switch (e.swipeDirection) {\n case \"Left\":\n direction = 1;\n break;\n case \"Right\":\n direction = -1;\n break;\n default:\n break;\n }\n }\n else {\n switch (e.swipeDirection) {\n case \"Up\":\n direction = 1;\n break;\n case \"Down\":\n direction = -1;\n break;\n default:\n break;\n }\n }\n if (this.touchStart) {\n if (direction === 1) {\n this.navigateNext(e);\n }\n else if (direction === -1) {\n this.navigatePrevious(e);\n }\n this.touchStart = false;\n }\n };\n DatePicker.prototype.TouchStartHandler = function (e) {\n this.touchStart = true;\n };\n DatePicker.prototype.setAriaDisabled = function () {\n if (!this.enabled) {\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.inputElement.tabIndex = -1;\n }\n else {\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n };\n DatePicker.prototype.modelHeader = function () {\n var dateOptions;\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var yearHeading = this.createElement('h1', { className: 'e-model-year' });\n var h2 = this.createElement('div');\n var daySpan = this.createElement('span', { className: 'e-model-day' });\n var monthSpan = this.createElement('span', { className: 'e-model-month' });\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'y', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'y', skeleton: 'dateTime', calendar: 'islamic' };\n }\n yearHeading.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions);\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'E', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'E', skeleton: 'dateTime', calendar: 'islamic' };\n }\n daySpan.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions) + ', ';\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'MMM d', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'MMM d', skeleton: 'dateTime', calendar: 'islamic' };\n }\n monthSpan.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions);\n if (this.fullScreenMode) {\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.modelCloseHandler, this);\n var modelTodayButton = this.calendarElement.querySelector(\"button.e-today\");\n h2.classList.add(\"e-day-wrapper\");\n modelTodayButton.classList.add(\"e-outline\");\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTodayButton);\n }\n if (!this.fullScreenMode)\n modelHeader.appendChild(yearHeading);\n h2.appendChild(daySpan);\n h2.appendChild(monthSpan);\n modelHeader.appendChild(h2);\n this.calendarElement.insertBefore(modelHeader, this.calendarElement.firstElementChild);\n };\n DatePicker.prototype.modelCloseHandler = function (e) {\n this.hide();\n };\n DatePicker.prototype.changeTrigger = function (event) {\n if (this.inputElement.value !== this.previousElementValue) {\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n if (this.isDynamicValueChanged && this.isCalendar()) {\n this.popupUpdate();\n }\n this.changedArgs.value = this.value;\n this.changedArgs.event = event || null;\n this.changedArgs.element = this.element;\n this.changedArgs.isInteracted = !isNullOrUndefined(event);\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.changedArgs);\n }\n this.previousElementValue = this.inputElement.value;\n this.previousDate = !isNaN(+new Date(this.checkValue(this.value))) ? new Date(this.checkValue(this.value)) : null;\n this.isInteracted = true;\n }\n }\n this.isKeyAction = false;\n };\n DatePicker.prototype.navigatedEvent = function () {\n this.trigger('navigated', this.navigatedArgs);\n };\n DatePicker.prototype.keyupHandler = function (e) {\n this.isKeyAction = (this.inputElement.value !== this.previousElementValue) ? true : false;\n };\n DatePicker.prototype.changeEvent = function (event) {\n if (!this.isIconClicked && !(this.isBlur || this.isKeyAction)) {\n this.selectCalendar(event);\n }\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n this.changedArgs.event = event ? event : null;\n this.changedArgs.element = this.element;\n this.changedArgs.isInteracted = this.isInteracted;\n if (!this.isDynamicValueChanged) {\n this.trigger('change', this.changedArgs);\n }\n this.previousDate = this.value && new Date(+this.value);\n if (!this.isDynamicValueChanged) {\n this.hide(event);\n }\n this.previousElementValue = this.inputElement.value;\n this.errorClass();\n }\n else if (event) {\n this.hide(event);\n }\n this.isKeyAction = false;\n };\n DatePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n if (this.enableMask) {\n modules.push({ args: [this], member: 'MaskedDateTime' });\n }\n return modules;\n };\n DatePicker.prototype.selectCalendar = function (e) {\n var date;\n var tempFormat;\n var formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else {\n tempFormat = this.formatString;\n }\n if (this.value) {\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n }\n if (!isNullOrUndefined(date)) {\n this.updateInputValue(date);\n if (this.enableMask) {\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n }\n }\n };\n DatePicker.prototype.isCalendar = function () {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + POPUPWRAPPER)) {\n return true;\n }\n return false;\n };\n DatePicker.prototype.setWidth = function (width) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(this.width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (this.width) : (formatUnit(this.width));\n }\n else {\n this.inputWrapper.container.style.width = '100%';\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Shows the Calendar.\n *\n * @returns {void}\n\n */\n DatePicker.prototype.show = function (type, e) {\n var _this = this;\n if ((this.enabled && this.readonly) || !this.enabled || this.popupObj) {\n return;\n }\n else {\n var prevent_1 = true;\n var outOfRange = void 0;\n if (!isNullOrUndefined(this.value) && !(+this.value >= +new Date(this.checkValue(this.min))\n && +this.value <= +new Date(this.checkValue(this.max)))) {\n outOfRange = new Date(this.checkValue(this.value));\n this.setProperties({ 'value': null }, true);\n }\n else {\n outOfRange = this.value || null;\n }\n if (!this.isCalendar()) {\n _super.prototype.render.call(this);\n this.setProperties({ 'value': outOfRange || null }, true);\n this.previousDate = outOfRange;\n this.createCalendar();\n }\n if (Browser.isDevice) {\n this.mobilePopupWrapper = this.createElement('div', { className: 'e-datepick-mob-popup-wrap' });\n document.body.appendChild(this.mobilePopupWrapper);\n }\n this.preventArgs = {\n preventDefault: function () {\n prevent_1 = false;\n },\n popup: this.popupObj,\n event: e || null,\n cancel: false,\n appendTo: Browser.isDevice ? this.mobilePopupWrapper : document.body\n };\n var eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.preventArgs = eventArgs;\n if (prevent_1 && !_this.preventArgs.cancel) {\n addClass(_this.inputWrapper.buttons, ACTIVE);\n _this.preventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.popupObj.refreshPosition(_this.inputElement);\n var openAnimation = {\n name: 'FadeIn',\n duration: Browser.isDevice ? 0 : OPENDURATION\n };\n if (_this.zIndex === 1000) {\n _this.popupObj.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObj.show(new Animation(openAnimation), null);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _super.prototype.setOverlayIndex.call(_this, _this.mobilePopupWrapper, _this.popupObj.element, _this.modal, Browser.isDevice);\n _this.setAriaAttributes();\n }\n else {\n _this.popupObj.destroy();\n _this.popupWrapper = _this.popupObj = null;\n }\n if (!isNullOrUndefined(_this.inputElement) && _this.inputElement.value === '') {\n if (!isNullOrUndefined(_this.tableBodyElement) && _this.tableBodyElement.querySelectorAll('td.e-selected').length > 0) {\n addClass([_this.tableBodyElement.querySelector('td.e-selected')], FOCUSEDDATE);\n removeClass(_this.tableBodyElement.querySelectorAll('td.e-selected'), SELECTED);\n }\n }\n EventHandler.add(document, 'mousedown touchstart', _this.documentHandler, _this);\n });\n }\n };\n /**\n * Hide the Calendar.\n *\n * @returns {void}\n\n */\n DatePicker.prototype.hide = function (event) {\n var _this = this;\n if (!isNullOrUndefined(this.popupWrapper)) {\n var prevent_2 = true;\n this.preventArgs = {\n preventDefault: function () {\n prevent_2 = false;\n },\n popup: this.popupObj,\n event: event || null,\n cancel: false\n };\n removeClass(this.inputWrapper.buttons, ACTIVE);\n removeClass([document.body], OVERFLOW);\n var eventArgs = this.preventArgs;\n if (this.isCalendar()) {\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.closeEventCallback(prevent_2, eventArgs);\n });\n }\n else {\n this.closeEventCallback(prevent_2, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n DatePicker.prototype.closeEventCallback = function (prevent, eventArgs) {\n this.preventArgs = eventArgs;\n if (this.isCalendar() && (prevent && !this.preventArgs.cancel)) {\n this.popupObj.hide();\n this.isAltKeyPressed = false;\n this.keyboardModule.destroy();\n removeClass(this.inputWrapper.buttons, ACTIVE);\n }\n this.setAriaAttributes();\n if (Browser.isDevice && this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(this.mobilePopupWrapper) && (prevent && (isNullOrUndefined(this.preventArgs) || !this.preventArgs.cancel))) {\n this.mobilePopupWrapper.remove();\n this.mobilePopupWrapper = null;\n }\n }\n EventHandler.remove(document, 'mousedown touchstart', this.documentHandler);\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n /* eslint-disable jsdoc/require-param */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DatePicker.prototype.focusIn = function (triggerEvent) {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n /* eslint-enable jsdoc/require-param */\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DatePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n this.inputElement.blur();\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the DatePicker.\n *\n * @returns {string}\n\n */\n DatePicker.prototype.currentView = function () {\n var currentView;\n if (this.calendarElement) {\n // calls the Calendar currentView public method\n currentView = _super.prototype.currentView.call(this);\n }\n return currentView;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Navigates to specified month or year or decade view of the DatePicker.\n *\n * @param {string} view - Specifies the view of the calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @returns {void}\n\n */\n DatePicker.prototype.navigateTo = function (view, date) {\n if (this.calendarElement) {\n // calls the Calendar navigateTo public method\n _super.prototype.navigateTo.call(this, view, date);\n }\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DatePicker.prototype.destroy = function () {\n this.unBindEvents();\n _super.prototype.destroy.call(this);\n if (!isNullOrUndefined(this.keyboardModules)) {\n this.keyboardModules.destroy();\n }\n if (this.popupObj && this.popupObj.element.classList.contains(POPUP)) {\n _super.prototype.destroy.call(this);\n }\n var ariaAttrs = {\n 'aria-atomic': 'true', 'aria-disabled': 'true',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttrs, this.inputElement);\n if (!isNullOrUndefined(this.inputElementCopy.getAttribute('tabindex'))) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.removeAttribute('tabindex');\n }\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n this.ensureInputAttribute();\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObj = this.popupWrapper = null;\n this.keyboardModule.destroy();\n }\n if (this.ngTag === null) {\n if (this.inputElement) {\n if (!isNullOrUndefined(this.inputWrapper)) {\n this.inputWrapper.container.insertAdjacentElement('afterend', this.inputElement);\n }\n removeClass([this.inputElement], [INPUTROOT]);\n }\n removeClass([this.element], [ROOT]);\n if (!isNullOrUndefined(this.inputWrapper)) {\n detach(this.inputWrapper.container);\n }\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n this.inputWrapper = null;\n this.keyboardModules = null;\n };\n DatePicker.prototype.ensureInputAttribute = function () {\n var prop = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n prop[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < prop.length; i++) {\n if (isNullOrUndefined(this.inputElementCopy.getAttribute(prop[i]))) {\n if (prop[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n this.inputElement.removeAttribute(prop[i]);\n }\n else {\n if (prop[i].toLowerCase() === 'value') {\n this.inputElement.value = this.inputElementCopy.getAttribute(prop[i]);\n }\n this.inputElement.setAttribute(prop[i], this.inputElementCopy.getAttribute(prop[i]));\n }\n }\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n DatePicker.prototype.preRender = function () {\n this.inputElementCopy = this.element.cloneNode(true);\n removeClass([this.inputElementCopy], [ROOT, CONTROL, LIBRARY]);\n this.inputElement = this.element;\n this.formElement = closest(this.inputElement, 'form');\n this.index = this.showClearButton ? 2 : 1;\n this.ngTag = null;\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.ngTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n if (this.element.getAttribute('id')) {\n if (this.ngTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.element.id = getUniqueID('ej2-datetimepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n else {\n this.element.id = getUniqueID('ej2-datepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n }\n if (this.ngTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.updateHtmlAttributeToElement();\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.checkHtmlAttributes(false);\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n _super.prototype.preRender.call(this);\n };\n DatePicker.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n altUpArrow: 'alt+uparrow',\n altDownArrow: 'alt+downarrow',\n escape: 'escape',\n enter: 'enter',\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n shiftTab: 'shift+tab',\n tab: 'tab'\n };\n return this.defaultKeyConfigs;\n };\n DatePicker.prototype.validationAttribute = function (target, inputElement) {\n var nameAttribute = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n inputElement.setAttribute('name', nameAttribute);\n target.removeAttribute('name');\n var attribute = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attribute.length; i++) {\n if (isNullOrUndefined(target.getAttribute(attribute[i]))) {\n continue;\n }\n var attr = target.getAttribute(attribute[i]);\n inputElement.setAttribute(attribute[i], attr);\n target.removeAttribute(attribute[i]);\n }\n };\n DatePicker.prototype.checkFormat = function () {\n var culture = new Internationalization(this.locale);\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (this.format.skeleton !== '' && !isNullOrUndefined(this.format.skeleton)) {\n var skeletonString = this.format.skeleton;\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'dateTime' });\n }\n else {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'date' });\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = this.dateTimeFormat;\n }\n else {\n this.formatString = null;\n }\n }\n }\n else {\n this.formatString = null;\n }\n };\n DatePicker.prototype.checkHtmlAttributes = function (dynamic) {\n this.globalize = new Internationalization(this.locale);\n this.checkFormat();\n this.checkView();\n var attributes = dynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'disabled', 'readonly', 'style', 'name', 'placeholder', 'type'];\n var options;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n };\n }\n else {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n options = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n options = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['enabled'] === undefined)) || dynamic)) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !dynamic);\n }\n break;\n case 'readonly':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['readonly'] === undefined)) || dynamic)) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !dynamic);\n }\n break;\n case 'placeholder':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['placeholder'] === undefined)) || dynamic)) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !dynamic);\n }\n break;\n case 'style':\n this.inputElement.setAttribute('style', '' + this.inputElement.getAttribute(prop));\n break;\n case 'name':\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute(prop));\n break;\n case 'value':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['value'] === undefined)) || dynamic)) {\n var value = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(value, options), {}), !dynamic);\n }\n break;\n case 'min':\n if ((+this.min === +new Date(1900, 0, 1)) || dynamic) {\n var min = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(min), {}), !dynamic);\n }\n break;\n case 'max':\n if ((+this.max === +new Date(2099, 11, 31)) || dynamic) {\n var max = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(max), {}), !dynamic);\n }\n break;\n case 'type':\n if (this.inputElement.getAttribute(prop) !== 'text') {\n this.inputElement.setAttribute('type', 'text');\n }\n break;\n }\n }\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DatePicker.prototype.getModuleName = function () {\n return 'datepicker';\n };\n DatePicker.prototype.disabledDates = function (isDynamic, isBlur) {\n if (isDynamic === void 0) { isDynamic = false; }\n if (isBlur === void 0) { isBlur = false; }\n var formatOptions;\n var globalize;\n var valueCopy = this.checkDateValue(this.value) ? new Date(+this.value) : new Date(this.checkValue(this.value));\n var previousValCopy = this.previousDate;\n //calls the Calendar render method to check the disabled dates through renderDayCell event and update the input value accordingly.\n this.minMaxUpdates();\n if (!isDynamic || (isDynamic && !isNullOrUndefined(this.renderDayCell))) {\n _super.prototype.render.call(this);\n }\n this.previousDate = previousValCopy;\n var date = valueCopy && +(valueCopy);\n var dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + date);\n if (!this.strictMode) {\n if (typeof this.value === 'string' || ((typeof this.value === 'object') && (+this.value) !== (+valueCopy))) {\n this.setProperties({ value: valueCopy }, true);\n }\n }\n if (!isNullOrUndefined(this.calendarElement) && !isNullOrUndefined(this.calendarElement.querySelectorAll(dateIdString)[0])) {\n if (this.calendarElement.querySelectorAll(dateIdString)[0].classList.contains('e-disabled')) {\n if (!this.strictMode) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n }\n }\n var inputVal;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n inputVal = globalize;\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n inputVal = this.globalize.formatDate(valueCopy, formatOptions);\n }\n if (!this.popupObj) {\n this.updateInputValue(inputVal);\n if (this.enableMask) {\n this.updateInputValue(this.maskedDateValue);\n this.notify('createMask', {\n module: 'MaskedDateTime', isBlur: isBlur\n });\n }\n }\n };\n DatePicker.prototype.setAriaAttributes = function () {\n if (this.isCalendar()) {\n Input.addAttributes({ 'aria-expanded': 'true' }, this.inputElement);\n attributes(this.inputElement, { 'aria-owns': this.inputElement.id + '_options' });\n if (this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': '' + this.setActiveDescendant() });\n }\n }\n else {\n Input.addAttributes({ 'aria-expanded': 'false' }, this.inputElement);\n this.inputElement.removeAttribute('aria-owns');\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n DatePicker.prototype.errorClass = function () {\n var dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + (+this.value));\n var isDisabledDate = this.calendarElement &&\n this.calendarElement.querySelectorAll(dateIdString)[0] &&\n this.calendarElement.querySelectorAll(dateIdString)[0].classList.contains('e-disabled');\n if ((!isNullOrUndefined(this.value) && !isNullOrUndefined(this.min) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !isNullOrUndefined(this.max) && !(new Date(this.value).setMilliseconds(0) >= new Date(this.min).setMilliseconds(0)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n && new Date(this.value).setMilliseconds(0) <= new Date(this.max).setMilliseconds(0)))\n || (!this.strictMode && this.inputElement.value !== '' && this.inputElement.value !== this.maskedDateValue && isNullOrUndefined(this.value) || isDisabledDate)) {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n else if (!isNullOrUndefined(this.inputWrapper)) {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DatePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DatePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n DatePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n this.isDynamicValueChanged = true;\n this.isInteracted = false;\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n this.previousElementValue = this.inputElement.value;\n if (isNullOrUndefined(this.value)) {\n if (this.enableMask) {\n this.updateInputValue(this.maskedDateValue);\n }\n else {\n this.updateInputValue('');\n }\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n this.updateInput(true);\n if (+this.previousDate !== +this.value) {\n this.changeTrigger(null);\n }\n this.isInteracted = true;\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'format':\n this.checkFormat();\n this.bindInputEvent();\n this.updateInput();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n break;\n case 'allowEdit':\n this.setAllowEdit();\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.inputElement);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n this.setAriaDisabled();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkHtmlAttributes(true);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\n this.updateInput();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'start':\n case 'depth':\n this.checkView();\n if (this.calendarElement) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n this.index = this.showClearButton ? 2 : 1;\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.updateInput();\n break;\n case 'width':\n this.setWidth(newProp.width);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n this.updateInputValue(this.maskedDateValue);\n this.bindInputEvent();\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.updateInputValue('');\n }\n }\n break;\n default:\n if (this.calendarElement && this.isCalendar()) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n }\n break;\n }\n if (!this.isDynamicValueChanged) {\n this.hide(null);\n }\n this.isDynamicValueChanged = false;\n }\n };\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"format\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Property({})\n ], DatePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"values\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(1000)\n ], DatePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property('Never')\n ], DatePicker.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], DatePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"destroyed\", void 0);\n DatePicker = __decorate([\n NotifyPropertyChanges\n ], DatePicker);\n return DatePicker;\n}(Calendar));\nexport { DatePicker };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { EventHandler, Property, Internationalization, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Animation, Browser } from '@syncfusion/ej2-base';\nimport { cldrData, L10n, Component, getDefaultDateObject, rippleEffect, Event } from '@syncfusion/ej2-base';\nimport { remove, addClass, detach, removeClass, closest, append, attributes, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, getValue, extend, getUniqueID, ChildProperty } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { ListBase } from '@syncfusion/ej2-lists';\nvar WRAPPERCLASS = 'e-time-wrapper';\nvar POPUP = 'e-popup';\nvar ERROR = 'e-error';\nvar POPUPDIMENSION = '240px';\nvar DAY = new Date().getDate();\nvar MONTH = new Date().getMonth();\nvar YEAR = new Date().getFullYear();\nvar ROOT = 'e-timepicker';\nvar LIBRARY = 'e-lib';\nvar CONTROL = 'e-control';\nvar CONTENT = 'e-content';\nvar SELECTED = 'e-active';\nvar HOVER = 'e-hover';\nvar NAVIGATION = 'e-navigation';\nvar DISABLED = 'e-disabled';\nvar ICONANIMATION = 'e-icon-anim';\nvar TIMEICON = 'e-time-icon';\nvar CLEARICON = 'e-clear-icon';\nvar FOCUS = 'e-input-focus';\nvar LISTCLASS = 'e-list-item';\nvar HALFPOSITION = 2;\nvar ANIMATIONDURATION = 50;\nvar OVERFLOW = 'e-time-overflow';\nvar OFFSETVAL = 4;\nvar EDITABLE = 'e-non-edit';\nvar wrapperAttributes = ['title', 'class', 'style'];\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var TimePickerBase;\n(function (TimePickerBase) {\n // eslint-disable-next-line max-len, jsdoc/require-jsdoc\n function createListItems(createdEl, min, max, globalize, timeFormat, step) {\n var formatOptions;\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: timeFormat, type: 'time' };\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatOptions = { format: timeFormat, type: 'time', calendar: 'islamic' };\n }\n var start;\n var interval = step * 60000;\n var listItems = [];\n var timeCollections = [];\n start = +(min.setMilliseconds(0));\n var end = +(max.setMilliseconds(0));\n while (end >= start) {\n timeCollections.push(start);\n listItems.push(globalize.formatDate(new Date(start), { format: timeFormat, type: 'time' }));\n start += interval;\n }\n var listTag = ListBase.createList(createdEl, listItems, null, true);\n return { collection: timeCollections, list: listTag };\n }\n TimePickerBase.createListItems = createListItems;\n})(TimePickerBase || (TimePickerBase = {}));\nvar TimeMaskPlaceholder = /** @class */ (function (_super) {\n __extends(TimeMaskPlaceholder, _super);\n function TimeMaskPlaceholder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('day')\n ], TimeMaskPlaceholder.prototype, \"day\", void 0);\n __decorate([\n Property('month')\n ], TimeMaskPlaceholder.prototype, \"month\", void 0);\n __decorate([\n Property('year')\n ], TimeMaskPlaceholder.prototype, \"year\", void 0);\n __decorate([\n Property('day of the week')\n ], TimeMaskPlaceholder.prototype, \"dayOfTheWeek\", void 0);\n __decorate([\n Property('hour')\n ], TimeMaskPlaceholder.prototype, \"hour\", void 0);\n __decorate([\n Property('minute')\n ], TimeMaskPlaceholder.prototype, \"minute\", void 0);\n __decorate([\n Property('second')\n ], TimeMaskPlaceholder.prototype, \"second\", void 0);\n return TimeMaskPlaceholder;\n}(ChildProperty));\nexport { TimeMaskPlaceholder };\n/**\n * TimePicker is an intuitive interface component which provides an options to select a time value\n * from popup list or to set a desired time value.\n * ```\n * \n * \n * ```\n */\nvar TimePicker = /** @class */ (function (_super) {\n __extends(TimePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {TimePickerModel} options - Specifies the TimePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function TimePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.liCollections = [];\n _this.timeCollections = [];\n _this.disableItemCollection = [];\n _this.invalidValueString = null;\n _this.isAngular = false;\n _this.preventChange = false;\n _this.maskedDateValue = '';\n _this.moduleName = _this.getModuleName();\n _this.timeOptions = options;\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n TimePicker.prototype.preRender = function () {\n this.keyConfigure = {\n enter: 'enter',\n escape: 'escape',\n end: 'end',\n tab: 'tab',\n home: 'home',\n down: 'downarrow',\n up: 'uparrow',\n left: 'leftarrow',\n right: 'rightarrow',\n open: 'alt+downarrow',\n close: 'alt+uparrow'\n };\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [ROOT, CONTROL, LIBRARY]);\n this.inputElement = this.element;\n this.angularTag = null;\n this.formElement = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-TIMEPICKER') {\n this.angularTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n this.openPopupEventArgs = {\n appendTo: document.body\n };\n };\n // element creation\n TimePicker.prototype.render = function () {\n this.initialize();\n this.createInputElement();\n this.updateHtmlAttributeToWrapper();\n this.setTimeAllowEdit();\n this.setEnable();\n this.validateInterval();\n this.bindEvents();\n this.validateDisable();\n this.setTimeZone();\n this.setValue(this.getFormattedValue(this.value));\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.checkErrorState(this.maskedDateValue);\n }\n this.anchor = this.inputElement;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.inputEleValue = this.getDateObject(this.inputElement.value);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n };\n TimePicker.prototype.setTimeZone = function () {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var serverTimezoneDiff = this.serverTimezoneOffset;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date((this.value).getTime() + (timeZoneDiff * 60 * 60 * 1000));\n }\n };\n TimePicker.prototype.isDayLightSaving = function () {\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n TimePicker.prototype.setTimeAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.clearIconState();\n };\n TimePicker.prototype.clearIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [EDITABLE]);\n }\n else {\n addClass([this.inputWrapper.container], [EDITABLE]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [EDITABLE]);\n }\n };\n TimePicker.prototype.validateDisable = function () {\n this.setMinMax(this.initMin, this.initMax);\n if (!isNullOrUndefined(this.value)) {\n this.popupCreation();\n this.popupObj.destroy();\n this.popupWrapper = this.popupObj = null;\n }\n if ((!isNaN(+this.value) && this.value !== null)) {\n if (!this.valueIsDisable(this.value)) {\n //disable value given in value property so reset the date based on current date\n if (this.strictMode) {\n this.resetState();\n }\n this.initValue = null;\n this.initMax = this.getDateObject(this.initMax);\n this.initMin = this.getDateObject(this.initMin);\n this.timeCollections = this.liCollections = [];\n this.setMinMax(this.initMin, this.initMax);\n }\n }\n };\n TimePicker.prototype.validationAttribute = function (target, input) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n input.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (isNullOrUndefined(target.getAttribute(attributes[i]))) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n input.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n TimePicker.prototype.initialize = function () {\n this.globalize = new Internationalization(this.locale);\n this.defaultCulture = new Internationalization('en');\n this.checkTimeFormat();\n this.checkInvalidValue(this.value);\n // persist the value property.\n this.setProperties({ value: this.checkDateValue(new Date(this.checkInValue(this.value))) }, true);\n this.setProperties({ min: this.checkDateValue(new Date(this.checkInValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkInValue(this.max))) }, true);\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkInValue(this.scrollTo))) }, true);\n if (this.angularTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.updateHtmlAttributeToElement();\n this.checkAttributes(false); //check the input element attributes\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('timepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n this.initValue = this.checkDateValue(this.value);\n this.initMin = this.checkDateValue(this.min);\n this.initMax = this.checkDateValue(this.max);\n this.isNavigate = this.isPreventBlur = this.isTextSelected = false;\n this.activeIndex = this.valueWithMinutes = this.prevDate = null;\n if (!isNullOrUndefined(this.element.getAttribute('id'))) {\n if (this.angularTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n //for angular case\n this.element.id = getUniqueID('ej2_timepicker');\n if (this.angularTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('name'))) {\n attributes(this.inputElement, { 'name': this.element.id });\n }\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n };\n TimePicker.prototype.checkTimeFormat = function () {\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (!isNullOrUndefined(this.format.skeleton) && this.format.skeleton !== '') {\n var skeletonString = this.format.skeleton;\n this.formatString = this.globalize.getDatePattern({ type: 'time', skeleton: skeletonString });\n }\n else {\n this.formatString = this.globalize.getDatePattern({ type: 'time', skeleton: 'short' });\n }\n }\n else {\n this.formatString = null;\n }\n };\n TimePicker.prototype.checkDateValue = function (value) {\n return (!isNullOrUndefined(value) && value instanceof Date && !isNaN(+value)) ? value : null;\n };\n TimePicker.prototype.createInputElement = function () {\n if (this.fullScreenMode && Browser.isDevice) {\n this.cssClass += ' ' + \"e-popup-expand\";\n }\n var updatedCssClassesValue = this.cssClass;\n var isBindClearAction = this.enableMask ? false : true;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassesValue = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n bindClearAction: isBindClearAction,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassesValue,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n buttons: [' e-input-group-icon e-time-icon e-icons']\n }, this.createElement);\n this.inputWrapper.container.style.width = this.setWidth(this.width);\n attributes(this.inputElement, {\n 'aria-autocomplete': 'list', 'tabindex': '0',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-disabled': 'false', 'aria-invalid': 'false'\n });\n if (!this.isNullOrEmpty(this.inputStyle)) {\n Input.addAttributes({ 'style': this.inputStyle }, this.inputElement);\n }\n addClass([this.inputWrapper.container], WRAPPERCLASS);\n };\n TimePicker.prototype.getCldrDateTimeFormat = function () {\n var culture = new Internationalization(this.locale);\n var cldrTime;\n var dateFormat = culture.getDatePattern({ skeleton: 'yMd' });\n if (this.isNullOrEmpty(this.formatString)) {\n cldrTime = dateFormat + ' ' + this.cldrFormat('time');\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n TimePicker.prototype.checkInvalidValue = function (value) {\n var isInvalid = false;\n if (typeof value !== 'object' && !isNullOrUndefined(value)) {\n var valueString = value;\n if (typeof valueString === 'string') {\n valueString = valueString.trim();\n }\n var valueExpression = null;\n var valueExp = null;\n if (typeof value === 'number') {\n valueString = value.toString();\n }\n else if (typeof value === 'string') {\n if (!(/^[a-zA-Z0-9- ]*$/).test(value)) {\n valueExpression = this.setCurrentDate(this.getDateObject(value));\n if (isNullOrUndefined(valueExpression)) {\n valueExpression = this.checkDateValue(this.globalize.parseDate(valueString, {\n format: this.getCldrDateTimeFormat(), type: 'datetime'\n }));\n if (isNullOrUndefined(valueExpression)) {\n valueExpression = this.checkDateValue(this.globalize.parseDate(valueString, {\n format: this.formatString, type: 'dateTime', skeleton: 'yMd'\n }));\n }\n }\n }\n }\n valueExp = this.globalize.parseDate(valueString, {\n format: this.getCldrDateTimeFormat(), type: 'datetime'\n });\n valueExpression = (!isNullOrUndefined(valueExp) && valueExp instanceof Date && !isNaN(+valueExp)) ? valueExp : null;\n if (isNullOrUndefined(valueExpression) && valueString.replace(/\\s/g, '').length) {\n var extISOString = null;\n var basicISOString = null;\n // eslint-disable-next-line\n extISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // eslint-disable-next-line\n basicISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOString.test(valueString) && !basicISOString.test(valueString))\n || ((/^[a-zA-Z0-9- ]*$/).test(value)) || isNaN(+new Date('' + valueString))) {\n isInvalid = true;\n }\n else {\n valueExpression = new Date('' + valueString);\n }\n }\n if (isInvalid) {\n if (!this.strictMode) {\n this.invalidValueString = valueString;\n }\n this.setProperties({ value: null }, true);\n this.initValue = null;\n }\n else {\n this.setProperties({ value: valueExpression }, true);\n this.initValue = this.value;\n }\n }\n };\n TimePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableMask) {\n modules.push({ args: [this], member: 'MaskedDateTime' });\n }\n return modules;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TimePicker.prototype.cldrFormat = function (type) {\n var cldrDateTimeString;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDateTimeString = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDateTimeString = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n return cldrDateTimeString;\n };\n // destroy function\n TimePicker.prototype.destroy = function () {\n this.hide();\n this.unBindEvents();\n var ariaAttribute = {\n 'aria-autocomplete': 'list', 'tabindex': '0',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-disabled': 'true', 'aria-invalid': 'false'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n if (this.angularTag === null) {\n this.inputWrapper.container.parentElement.appendChild(this.inputElement);\n }\n if (!isNullOrUndefined(this.cloneElement.getAttribute('tabindex'))) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.removeAttribute('tabindex');\n }\n this.ensureInputAttribute();\n this.enableElement([this.inputElement]);\n this.inputElement.classList.remove('e-input');\n if (isNullOrUndefined(this.cloneElement.getAttribute('disabled'))) {\n Input.setEnabled(true, this.inputElement, this.floatLabelType);\n }\n }\n if (this.inputWrapper.container) {\n detach(this.inputWrapper.container);\n }\n this.inputWrapper = this.popupWrapper = this.cloneElement = undefined;\n this.liCollections = this.timeCollections = this.disableItemCollection = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n _super.prototype.destroy.call(this);\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n this.rippleFn = null;\n this.openPopupEventArgs = null;\n this.selectedElement = null;\n this.listTag = null;\n this.liCollections = null;\n };\n TimePicker.prototype.ensureInputAttribute = function () {\n var propertyList = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n propertyList[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < propertyList.length; i++) {\n if (!isNullOrUndefined(this.cloneElement.getAttribute(propertyList[i]))) {\n this.inputElement.setAttribute(propertyList[i], this.cloneElement.getAttribute(propertyList[i]));\n if (propertyList[i].toLowerCase() === 'value') {\n this.inputElement.value = this.cloneElement.getAttribute(propertyList[i]);\n }\n }\n else {\n this.inputElement.removeAttribute(propertyList[i]);\n if (propertyList[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n }\n }\n };\n //popup creation\n TimePicker.prototype.popupCreation = function () {\n this.popupWrapper = this.createElement('div', {\n className: ROOT + ' ' + POPUP,\n attrs: { 'id': this.element.id + '_popup', 'style': 'visibility:hidden' }\n });\n if (!isNullOrUndefined(this.cssClass)) {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.generateList();\n append([this.listWrapper], this.popupWrapper);\n }\n this.addSelection();\n this.renderPopup();\n detach(this.popupWrapper);\n };\n TimePicker.prototype.getPopupHeight = function () {\n var height = parseInt(POPUPDIMENSION, 10);\n var popupHeight = this.popupWrapper.getBoundingClientRect().height;\n return popupHeight > height ? height : popupHeight;\n };\n TimePicker.prototype.generateList = function () {\n this.createListItems();\n this.wireListEvents();\n var rippleModel = { duration: 300, selector: '.' + LISTCLASS };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS);\n };\n TimePicker.prototype.renderPopup = function () {\n var _this = this;\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.setPopupWidth(this.width),\n zIndex: this.zIndex,\n targetType: 'relative',\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n enableRtl: this.enableRtl,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n offsetY: OFFSETVAL,\n open: function () {\n _this.popupWrapper.style.visibility = 'visible';\n addClass([_this.inputWrapper.buttons[0]], SELECTED);\n }, close: function () {\n removeClass([_this.inputWrapper.buttons[0]], SELECTED);\n _this.unWireListEvents();\n _this.inputElement.removeAttribute('aria-activedescendant');\n remove(_this.popupObj.element);\n _this.popupObj.destroy();\n _this.popupWrapper.innerHTML = '';\n _this.listWrapper = _this.popupWrapper = _this.listTag = undefined;\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (!Browser.isDevice) {\n this.popupObj.collision = { X: 'none', Y: 'flip' };\n }\n if (Browser.isDevice && this.fullScreenMode) {\n this.popupObj.element.style.maxHeight = \"100%\";\n this.popupObj.element.style.width = \"100%\";\n }\n else {\n this.popupObj.element.style.maxHeight = POPUPDIMENSION;\n }\n if (Browser.isDevice && this.fullScreenMode) {\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var modelTitleSpan = this.createElement(\"span\", { className: \"e-model-title\" });\n modelTitleSpan.textContent = \"Select time\";\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.timePopupCloseHandler, this);\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTitleSpan);\n this.popupWrapper.insertBefore(modelHeader, this.popupWrapper.firstElementChild);\n }\n };\n TimePicker.prototype.timePopupCloseHandler = function (e) {\n this.hide();\n };\n //util function\n TimePicker.prototype.getFormattedValue = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n else {\n return this.globalize.formatDate(value, { skeleton: 'medium', type: 'time' });\n }\n };\n TimePicker.prototype.getDateObject = function (text) {\n if (!this.isNullOrEmpty(text)) {\n var dateValue = this.createDateObj(text);\n var value = !this.isNullOrEmpty(this.initValue);\n if (this.checkDateValue(dateValue)) {\n var date = value ? this.initValue.getDate() : DAY;\n var month = value ? this.initValue.getMonth() : MONTH;\n var year = value ? this.initValue.getFullYear() : YEAR;\n return new Date(year, month, date, dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds());\n }\n }\n return null;\n };\n TimePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttributes.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassesValue = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassesValue !== '') {\n addClass([this.inputWrapper.container], updatedClassesValue.split(' '));\n }\n }\n else if (key === 'style') {\n var timeStyle = this.inputWrapper.container.getAttribute(key);\n timeStyle = !isNullOrUndefined(timeStyle) ? (timeStyle + this.htmlAttributes[\"\" + key]) :\n this.htmlAttributes[\"\" + key];\n this.inputWrapper.container.setAttribute(key, timeStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n TimePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttributes.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n TimePicker.prototype.updateCssClass = function (cssClassNew, cssClassOld) {\n if (!isNullOrUndefined(cssClassOld)) {\n cssClassOld = (cssClassOld.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(cssClassNew)) {\n cssClassNew = (cssClassNew.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(cssClassNew, [this.inputWrapper.container], cssClassOld);\n if (this.popupWrapper) {\n Input.setCssClass(cssClassNew, [this.popupWrapper], cssClassOld);\n }\n };\n TimePicker.prototype.removeErrorClass = function () {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n };\n TimePicker.prototype.checkErrorState = function (val) {\n var value = this.getDateObject(val);\n if ((this.validateState(value) && !this.invalidValueString) ||\n (this.enableMask && this.inputElement.value === this.maskedDateValue)) {\n this.removeErrorClass();\n }\n else {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n };\n TimePicker.prototype.validateInterval = function () {\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.enableElement([this.inputWrapper.buttons[0]]);\n }\n else {\n this.disableTimeIcon();\n }\n };\n TimePicker.prototype.disableTimeIcon = function () {\n this.disableElement([this.inputWrapper.buttons[0]]);\n this.hide();\n };\n TimePicker.prototype.disableElement = function (element) {\n addClass(element, DISABLED);\n };\n TimePicker.prototype.enableElement = function (element) {\n removeClass(element, DISABLED);\n };\n TimePicker.prototype.selectInputText = function () {\n this.inputElement.setSelectionRange(0, (this.inputElement).value.length);\n };\n TimePicker.prototype.setCursorToEnd = function () {\n this.inputElement.setSelectionRange((this.inputElement).value.length, (this.inputElement).value.length);\n };\n TimePicker.prototype.getMeridianText = function () {\n var meridian;\n if (this.locale === 'en' || this.locale === 'en-US') {\n meridian = getValue('dayPeriods.format.wide', getDefaultDateObject());\n }\n else {\n var gregorianFormat = '.dates.calendars.gregorian.dayPeriods.format.abbreviated';\n var mainVal = 'main.';\n meridian = getValue(mainVal + '' + this.locale + gregorianFormat, cldrData);\n }\n return meridian;\n };\n TimePicker.prototype.getCursorSelection = function () {\n var input = (this.inputElement);\n var start = 0;\n var end = 0;\n if (!isNaN(input.selectionStart)) {\n start = input.selectionStart;\n end = input.selectionEnd;\n }\n return { start: Math.abs(start), end: Math.abs(end) };\n };\n TimePicker.prototype.getActiveElement = function () {\n if (!isNullOrUndefined(this.popupWrapper)) {\n return this.popupWrapper.querySelectorAll('.' + SELECTED);\n }\n else {\n return null;\n }\n };\n TimePicker.prototype.isNullOrEmpty = function (value) {\n if (isNullOrUndefined(value) || (typeof value === 'string' && value.trim() === '')) {\n return true;\n }\n else {\n return false;\n }\n };\n TimePicker.prototype.setWidth = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n width = (width.match(/px|%|em/)) ? width : formatUnit(width);\n }\n else {\n width = '100%';\n }\n return width;\n };\n TimePicker.prototype.setPopupWidth = function (width) {\n width = this.setWidth(width);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n TimePicker.prototype.setScrollPosition = function () {\n var element = this.selectedElement;\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else if (this.popupWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n };\n TimePicker.prototype.findScrollTop = function (element) {\n var listHeight = this.getPopupHeight();\n var nextEle = element.nextElementSibling;\n var height = nextEle ? nextEle.offsetTop : element.offsetTop;\n var liHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n this.popupWrapper.scrollTop = nextEle ? (height - (listHeight / HALFPOSITION + liHeight / HALFPOSITION)) : height;\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n };\n TimePicker.prototype.setScrollTo = function () {\n var element;\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n var initialTime = this.timeCollections[0];\n var scrollTime = this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n };\n TimePicker.prototype.getText = function () {\n return (isNullOrUndefined(this.checkDateValue(this.value))) ? '' : this.getValue(this.value);\n };\n TimePicker.prototype.getValue = function (value) {\n return (isNullOrUndefined(this.checkDateValue(value))) ? null : this.globalize.formatDate(value, {\n format: this.cldrTimeFormat(), type: 'time'\n });\n };\n TimePicker.prototype.cldrDateFormat = function () {\n var cldrDate;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDate = (getValue('dateFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDate = (this.getCultureDateObject(cldrData, '' + this.locale));\n }\n return cldrDate;\n };\n TimePicker.prototype.cldrTimeFormat = function () {\n var cldrTime;\n if (this.isNullOrEmpty(this.formatString)) {\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n TimePicker.prototype.dateToNumeric = function () {\n var cldrTime;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.medium', getDefaultDateObject()));\n }\n else {\n cldrTime = (getValue('main.' + '' + this.locale + '.dates.calendars.gregorian.timeFormats.medium', cldrData));\n }\n return cldrTime;\n };\n TimePicker.prototype.getExactDateTime = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n else {\n return this.globalize.formatDate(value, { format: this.dateToNumeric(), type: 'time' });\n }\n };\n TimePicker.prototype.setValue = function (value) {\n var time = this.checkValue(value);\n if (!this.strictMode && !this.validateState(time)) {\n if (this.checkDateValue(this.valueWithMinutes) === null) {\n this.initValue = this.valueWithMinutes = null;\n }\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n if (this.isNullOrEmpty(time)) {\n this.initValue = null;\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n this.initValue = this.compareFormatChange(time);\n }\n }\n this.updateInput(true, this.initValue);\n };\n TimePicker.prototype.compareFormatChange = function (value) {\n if (isNullOrUndefined(value)) {\n return null;\n }\n return (value !== this.getText()) ? this.getDateObject(value) : this.getDateObject(this.value);\n };\n TimePicker.prototype.updatePlaceHolder = function () {\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n };\n //event related functions\n TimePicker.prototype.updateInputValue = function (value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n TimePicker.prototype.preventEventBubbling = function (e) {\n e.preventDefault();\n this.interopAdaptor.invokeMethodAsync('OnTimeIconClick');\n };\n TimePicker.prototype.popupHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n }\n e.preventDefault();\n if (this.isPopupOpen()) {\n this.closePopup(0, e);\n }\n else {\n this.inputElement.focus();\n this.show(e);\n }\n };\n TimePicker.prototype.mouseDownHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.readonly) {\n this.inputElement.setSelectionRange(0, 0);\n EventHandler.add(this.inputElement, 'mouseup', this.mouseUpHandler, this);\n }\n };\n TimePicker.prototype.mouseUpHandler = function (event) {\n if (!this.readonly) {\n event.preventDefault();\n if (this.enableMask) {\n event.preventDefault();\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n return;\n }\n else {\n EventHandler.remove(this.inputElement, 'mouseup', this.mouseUpHandler);\n var curPos = this.getCursorSelection();\n if (!(curPos.start === 0 && curPos.end === this.inputElement.value.length)) {\n if (this.inputElement.value.length > 0) {\n this.cursorDetails = this.focusSelection();\n }\n this.inputElement.setSelectionRange(this.cursorDetails.start, this.cursorDetails.end);\n }\n }\n }\n };\n TimePicker.prototype.focusSelection = function () {\n var regex = new RegExp('^[a-zA-Z0-9]+$');\n var split = this.inputElement.value.split('');\n split.push(' ');\n var curPos = this.getCursorSelection();\n var start = 0;\n var end = 0;\n var isSeparator = false;\n if (!this.isTextSelected) {\n for (var i = 0; i < split.length; i++) {\n if (!regex.test(split[i])) {\n end = i;\n isSeparator = true;\n }\n if (isSeparator) {\n if (curPos.start >= start && curPos.end <= end) {\n // eslint-disable-next-line no-self-assign\n end = end;\n this.isTextSelected = true;\n break;\n }\n else {\n start = i + 1;\n isSeparator = false;\n }\n }\n }\n }\n else {\n start = curPos.start;\n end = curPos.end;\n this.isTextSelected = false;\n }\n return { start: start, end: end };\n };\n TimePicker.prototype.inputHandler = function (event) {\n if (!this.readonly && this.enabled) {\n if (!((event.action == 'right' || event.action == 'left' || event.action == 'tab') || ((event.action == 'home' || event.action == 'end' || event.action == 'up' || event.action == 'down') && !this.isPopupOpen() && !this.enableMask))) {\n event.preventDefault();\n }\n switch (event.action) {\n case 'home':\n case 'end':\n case 'up':\n case 'down':\n if (!this.isPopupOpen()) {\n this.popupCreation();\n this.popupObj.destroy();\n this.popupObj = this.popupWrapper = null;\n }\n if (this.enableMask && !this.readonly && !this.isPopupOpen()) {\n event.preventDefault();\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: event\n });\n }\n if (this.isPopupOpen()) {\n this.keyHandler(event);\n }\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.updateValue(this.valueWithMinutes, event);\n }\n else {\n this.updateValue(this.inputElement.value, event);\n }\n this.hide();\n this.isNavigate = false;\n if (this.isPopupOpen()) {\n event.stopPropagation();\n }\n break;\n case 'open':\n this.show(event);\n break;\n case 'escape':\n this.updateInputValue(this.objToString(this.value));\n if (this.enableMask) {\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n this.createMask();\n }\n this.previousState(this.value);\n this.hide();\n break;\n case 'close':\n this.hide();\n break;\n case 'right':\n case 'left':\n case 'tab':\n case 'shiftTab':\n if (!this.isPopupOpen() && this.enableMask && !this.readonly) {\n if ((this.inputElement.selectionStart === 0 && this.inputElement.selectionEnd === this.inputElement.value.length) ||\n (this.inputElement.selectionEnd !== this.inputElement.value.length && event.action === 'tab') ||\n (this.inputElement.selectionStart !== 0 && event.action === 'shiftTab') || (event.action === 'left' || event.action === 'right')) {\n event.preventDefault();\n }\n this.notify('keyDownHandler', { module: 'MaskedDateTime',\n e: event\n });\n }\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n };\n TimePicker.prototype.onMouseClick = function (event) {\n var target = event.target;\n var li = this.selectedElement = closest(target, '.' + LISTCLASS);\n this.setSelection(li, event);\n if (li && li.classList.contains(LISTCLASS)) {\n this.hide();\n }\n };\n TimePicker.prototype.closePopup = function (delay, e) {\n var _this = this;\n if (this.isPopupOpen() && this.popupWrapper) {\n var args = {\n popup: this.popupObj,\n event: e || null,\n cancel: false,\n name: 'open'\n };\n removeClass([document.body], OVERFLOW);\n this.trigger('close', args, function (args) {\n if (!args.cancel) {\n var animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION,\n delay: delay ? delay : 0\n };\n _this.popupObj.hide(new Animation(animModel));\n removeClass([_this.inputWrapper.container], [ICONANIMATION]);\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n _this.inputElement.removeAttribute('aria-owns');\n _this.inputElement.removeAttribute('aria-activedescendant');\n EventHandler.remove(document, 'mousedown touchstart', _this.documentClickHandler);\n }\n if (Browser.isDevice && _this.modal) {\n _this.modal.style.display = 'none';\n _this.modal.outerHTML = '';\n _this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(_this.mobileTimePopupWrap)) {\n _this.mobileTimePopupWrap.remove();\n _this.mobileTimePopupWrap = null;\n }\n }\n if (Browser.isDevice && _this.allowEdit && !_this.readonly) {\n _this.inputElement.removeAttribute('readonly');\n }\n });\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n TimePicker.prototype.disposeServerPopup = function () {\n if (this.popupWrapper) {\n this.popupWrapper.style.visibility = 'hidden';\n this.popupWrapper.style.top = '-9999px';\n this.popupWrapper.style.left = '-9999px';\n this.popupWrapper.style.width = '0px';\n this.popupWrapper.style.height = '0px';\n }\n };\n TimePicker.prototype.checkValueChange = function (event, isNavigation) {\n if (!this.strictMode && !this.validateState(this.valueWithMinutes)) {\n if (this.checkDateValue(this.valueWithMinutes) === null) {\n this.initValue = this.valueWithMinutes = null;\n }\n this.setProperties({ value: this.compareFormatChange(this.inputElement.value) }, true);\n this.initValue = this.valueWithMinutes = this.compareFormatChange(this.inputElement.value);\n this.prevValue = this.inputElement.value;\n if (+this.prevDate !== +this.value) {\n this.changeEvent(event);\n }\n }\n else {\n if (!isNavigation) {\n if ((this.prevValue !== this.inputElement.value) || isNullOrUndefined(this.checkDateValue(this.value))) {\n this.valueProcess(event, this.compareFormatChange(this.inputElement.value));\n }\n }\n else {\n var value = this.getDateObject(new Date(this.timeCollections[this.activeIndex]));\n if (+this.prevDate !== +value) {\n this.valueProcess(event, value);\n }\n }\n }\n };\n TimePicker.prototype.onMouseOver = function (event) {\n var currentLi = closest(event.target, '.' + LISTCLASS);\n this.setHover(currentLi, HOVER);\n };\n TimePicker.prototype.setHover = function (li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeHover(className);\n addClass([li], className);\n if (className === NAVIGATION) {\n li.setAttribute('aria-selected', 'true');\n }\n }\n };\n TimePicker.prototype.setSelection = function (li, event) {\n if (this.isValidLI(li)) {\n this.checkValue(li.getAttribute('data-value'));\n if (this.enableMask) {\n this.createMask();\n }\n this.selectedElement = li;\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], SELECTED);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.checkValueChange(event, true);\n }\n };\n TimePicker.prototype.onMouseLeave = function () {\n this.removeHover(HOVER);\n };\n TimePicker.prototype.scrollHandler = function () {\n if (this.getModuleName() === 'timepicker' && Browser.isDevice) {\n return;\n }\n else {\n this.hide();\n }\n };\n TimePicker.prototype.setMinMax = function (minVal, maxVal) {\n if (isNullOrUndefined(this.checkDateValue(minVal))) {\n this.initMin = this.getDateObject('12:00:00 AM');\n }\n if (isNullOrUndefined(this.checkDateValue(maxVal))) {\n this.initMax = this.getDateObject('11:59:59 PM');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TimePicker.prototype.validateMinMax = function (dateVal, minVal, maxVal) {\n var value = dateVal instanceof Date ? dateVal : this.getDateObject(dateVal);\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n dateVal = this.strictOperation(this.initMin, this.initMax, dateVal, value);\n }\n else if (+(this.createDateObj(this.getFormattedValue(this.initMin))) >\n +(this.createDateObj(this.getFormattedValue(this.initMax)))) {\n this.disableTimeIcon();\n }\n if (this.strictMode) {\n dateVal = this.valueIsDisable(dateVal) ? dateVal : null;\n }\n this.checkErrorState(dateVal);\n return dateVal;\n };\n TimePicker.prototype.valueIsDisable = function (value) {\n if (this.disableItemCollection.length > 0) {\n if (this.disableItemCollection.length === this.timeCollections.length) {\n return false;\n }\n var time = value instanceof Date ? this.objToString(value) : value;\n for (var index = 0; index < this.disableItemCollection.length; index++) {\n if (time === this.disableItemCollection[index]) {\n return false;\n }\n }\n }\n return true;\n };\n TimePicker.prototype.validateState = function (val) {\n if (!this.strictMode) {\n if (this.valueIsDisable(val)) {\n var value = typeof val === 'string' ? this.setCurrentDate(this.getDateObject(val)) :\n this.setCurrentDate(this.getDateObject(val));\n var maxValue = this.setCurrentDate(this.getDateObject(this.initMax));\n var minValue = this.setCurrentDate(this.getDateObject(this.initMin));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n if ((+(value) > +(maxValue)) || (+(value) < +(minValue))) {\n return false;\n }\n }\n else {\n if ((+(maxValue) < +(minValue)) || this.inputElement.value !== '') {\n return false;\n }\n }\n }\n else {\n return false;\n }\n }\n return true;\n };\n TimePicker.prototype.strictOperation = function (minimum, maximum, dateVal, val) {\n var maxValue = this.createDateObj(this.getFormattedValue(maximum));\n var minValue = this.createDateObj(this.getFormattedValue(minimum));\n var value = this.createDateObj(this.getFormattedValue(val));\n if (this.strictMode) {\n if (+minValue > +maxValue) {\n this.disableTimeIcon();\n this.initValue = this.getDateObject(maxValue);\n this.updateInputValue(this.getValue(this.initValue));\n if (this.enableMask) {\n this.createMask();\n }\n return this.inputElement.value;\n }\n else if (+minValue >= +value) {\n return this.getDateObject(minValue);\n }\n else if (+value >= +maxValue || +minValue === +maxValue) {\n return this.getDateObject(maxValue);\n }\n }\n else {\n if (+minValue > +maxValue) {\n this.disableTimeIcon();\n if (!isNaN(+this.createDateObj(dateVal))) {\n return dateVal;\n }\n }\n }\n return dateVal;\n };\n TimePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.popupHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n EventHandler.add(this.inputElement, 'input', this.inputEventHandler, this);\n if (this.enableMask) {\n EventHandler.add(this.inputElement, 'keydown', this.keydownHandler, this);\n }\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.clearHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyConfigure = extend(this.keyConfigure, this.keyConfigs);\n this.inputEvent = new KeyboardEvents(this.inputWrapper.container, {\n keyAction: this.inputHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n if (this.showClearButton && this.inputElement) {\n EventHandler.add(this.inputElement, 'mousedown', this.mouseDownHandler, this);\n }\n }\n };\n TimePicker.prototype.keydownHandler = function (e) {\n switch (e.code) {\n case 'Delete':\n if (this.enableMask && !this.popupObj && !this.readonly) {\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n }\n break;\n default:\n break;\n }\n };\n TimePicker.prototype.formResetHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.inputElement.disabled) {\n var timeValue = this.inputElement.getAttribute('value');\n var val = this.checkDateValue(this.inputEleValue);\n if (this.element.tagName === 'EJS-TIMEPICKER') {\n val = null;\n timeValue = '';\n this.inputElement.setAttribute('value', '');\n }\n this.setProperties({ value: val }, true);\n this.prevDate = this.value;\n this.valueWithMinutes = this.value;\n this.initValue = this.value;\n if (this.inputElement) {\n this.updateInputValue(timeValue);\n if (this.enableMask) {\n if (!timeValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n this.createMask();\n }\n this.checkErrorState(timeValue);\n this.prevValue = this.inputElement.value;\n }\n }\n };\n TimePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n };\n TimePicker.prototype.inputEventHandler = function () {\n if (this.enableMask) {\n this.notify('inputHandler', {\n module: 'MaskedDateTime'\n });\n }\n };\n TimePicker.prototype.unBindEvents = function () {\n if (this.inputWrapper) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.popupHandler);\n }\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n EventHandler.remove(this.inputElement, 'input', this.inputEventHandler);\n if (this.inputEvent) {\n this.inputEvent.destroy();\n }\n EventHandler.remove(this.inputElement, 'mousedown touchstart', this.mouseDownHandler);\n if (this.showClearButton && !isNullOrUndefined(this.inputWrapper) && !isNullOrUndefined(this.inputWrapper.clearButton)) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.clearHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n TimePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.clearHandler, this);\n }\n };\n TimePicker.prototype.raiseClearedEvent = function (e) {\n var clearedArgs = {\n event: e\n };\n this.trigger('cleared', clearedArgs);\n };\n TimePicker.prototype.clearHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.preventDefault();\n if (!isNullOrUndefined(this.value)) {\n this.clear(e);\n }\n else {\n this.resetState();\n this.raiseClearedEvent(e);\n }\n if (this.popupWrapper) {\n this.popupWrapper.scrollTop = 0;\n }\n if (this.enableMask) {\n this.notify('clearHandler', {\n module: 'MaskedDateTime'\n });\n }\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n TimePicker.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n this.initValue = null;\n this.resetState();\n this.raiseClearedEvent(event);\n this.changeEvent(event);\n };\n TimePicker.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.zIndex = this.zIndex;\n this.popupObj.dataBind();\n }\n };\n TimePicker.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['step', 'disabled', 'readonly', 'style', 'name', 'value', 'min', 'max', 'placeholder'];\n var value;\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'style':\n this.inputStyle = this.inputElement.getAttribute(prop);\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.initValue = value;\n this.updateInput(false, this.initValue);\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n break;\n }\n }\n }\n };\n TimePicker.prototype.setCurrentDate = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n return new Date(YEAR, MONTH, DAY, value.getHours(), value.getMinutes(), value.getSeconds());\n };\n TimePicker.prototype.getTextFormat = function () {\n var time = 0;\n if (this.cldrTimeFormat().split(' ')[0] === 'a' || this.cldrTimeFormat().indexOf('a') === 0) {\n time = 1;\n }\n else if (this.cldrTimeFormat().indexOf('a') < 0) {\n var strArray = this.cldrTimeFormat().split(' ');\n for (var i = 0; i < strArray.length; i++) {\n if (strArray[i].toLowerCase().indexOf('h') >= 0) {\n time = i;\n break;\n }\n }\n }\n return time;\n };\n TimePicker.prototype.updateValue = function (value, event) {\n var val;\n if (this.isNullOrEmpty(value)) {\n this.resetState();\n }\n else {\n val = this.checkValue(value);\n if (this.strictMode) {\n // this case set previous value to the text box when set invalid date\n var inputVal = (val === null && value.trim().length > 0) ?\n this.previousState(this.prevDate) : this.inputElement.value;\n this.updateInputValue(inputVal);\n if (this.enableMask) {\n if (!inputVal) {\n this.updateInputValue(this.maskedDateValue);\n }\n if (isNullOrUndefined(val) && value !== this.maskedDateValue) {\n this.createMask();\n }\n if (isNullOrUndefined(val) && value === this.maskedDateValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n }\n this.checkValueChange(event, typeof value === 'string' ? false : true);\n };\n TimePicker.prototype.previousState = function (date) {\n var value = this.getDateObject(date);\n for (var i = 0; i < this.timeCollections.length; i++) {\n if (+value === this.timeCollections[i]) {\n this.activeIndex = i;\n this.selectedElement = this.liCollections[i];\n this.valueWithMinutes = new Date(this.timeCollections[i]);\n break;\n }\n }\n return this.prevValue;\n };\n TimePicker.prototype.resetState = function () {\n this.removeSelection();\n Input.setValue('', this.inputElement, this.floatLabelType, false);\n this.valueWithMinutes = this.activeIndex = null;\n if (!this.strictMode) {\n this.checkErrorState(null);\n }\n };\n TimePicker.prototype.objToString = function (val) {\n if (isNullOrUndefined(this.checkDateValue(val))) {\n return null;\n }\n else {\n return this.globalize.formatDate(val, { format: this.cldrTimeFormat(), type: 'time' });\n }\n };\n TimePicker.prototype.checkValue = function (value) {\n if (!this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.validateValue(date, value);\n }\n this.resetState();\n return this.valueWithMinutes = null;\n };\n TimePicker.prototype.validateValue = function (date, value) {\n var time;\n var val = this.validateMinMax(value, this.min, this.max);\n var newval = this.createDateObj(val);\n if (this.getFormattedValue(newval) !== this.getFormattedValue(this.value)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = this.objToString(this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = this.objToString(this.valueWithMinutes);\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n var value_1 = val.trim().length > 0 ? val : '';\n this.updateInputValue(value_1);\n if (this.enableMask) {\n if (!value_1) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n else {\n this.updateInputValue(time);\n if (this.enableMask) {\n if (time === '') {\n this.updateInputValue(this.maskedDateValue);\n }\n if (isNullOrUndefined(time) && value !== this.maskedDateValue) {\n this.createMask();\n }\n if (isNullOrUndefined(time) && value === this.maskedDateValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n return time;\n };\n TimePicker.prototype.createMask = function () {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n };\n TimePicker.prototype.findNextElement = function (event) {\n var textVal = (this.inputElement).value;\n var value = isNullOrUndefined(this.valueWithMinutes) ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n var timeVal = null;\n var count = this.liCollections.length;\n var collections = this.timeCollections;\n if (!isNullOrUndefined(this.checkDateValue(value)) || !isNullOrUndefined(this.activeIndex)) {\n if (event.action === 'home') {\n var index = this.validLiElement(0);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n }\n else if (event.action === 'end') {\n var index = this.validLiElement(collections.length - 1, true);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n }\n else {\n if (event.action === 'down') {\n for (var i = 0; i < count; i++) {\n if (+value < this.timeCollections[i]) {\n var index = this.validLiElement(i);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n else if (i === count - 1) {\n var index = this.validLiElement(0);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n }\n }\n else {\n for (var i = count - 1; i >= 0; i--) {\n if (+value > this.timeCollections[i]) {\n var index = this.validLiElement(i, true);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n else if (i === 0) {\n var index = this.validLiElement(count - 1);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.elementValue(isNullOrUndefined(timeVal) ? null : new Date(timeVal));\n }\n else {\n this.selectNextItem(event);\n }\n };\n TimePicker.prototype.selectNextItem = function (event) {\n var index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n this.selectedElement = this.liCollections[index];\n this.elementValue(new Date(this.timeCollections[index]));\n };\n TimePicker.prototype.elementValue = function (value) {\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.checkValue(value);\n }\n };\n TimePicker.prototype.validLiElement = function (index, backward) {\n var elementIndex = null;\n var items = isNullOrUndefined(this.popupWrapper) ? this.liCollections :\n this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n var isCheck = true;\n if (items.length) {\n if (backward) {\n for (var i = index; i >= 0; i--) {\n if (!items[i].classList.contains(DISABLED)) {\n elementIndex = i;\n break;\n }\n else if (i === 0) {\n if (isCheck) {\n index = i = items.length;\n isCheck = false;\n }\n }\n }\n }\n else {\n for (var i = index; i <= items.length - 1; i++) {\n if (!items[i].classList.contains(DISABLED)) {\n elementIndex = i;\n break;\n }\n else if (i === items.length - 1) {\n if (isCheck) {\n index = i = -1;\n isCheck = false;\n }\n }\n }\n }\n }\n return elementIndex;\n };\n TimePicker.prototype.keyHandler = function (event) {\n if (isNullOrUndefined(this.step) || this.step <= 0 || !isNullOrUndefined(this.inputWrapper)\n && this.inputWrapper.buttons[0].classList.contains(DISABLED)) {\n return;\n }\n var count = this.timeCollections.length;\n if (isNullOrUndefined(this.getActiveElement()) || this.getActiveElement().length === 0) {\n if (this.liCollections.length > 0) {\n if (isNullOrUndefined(this.value) && isNullOrUndefined(this.activeIndex)) {\n var index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n this.selectedElement = this.liCollections[index];\n this.elementValue(new Date(this.timeCollections[index]));\n }\n else {\n this.findNextElement(event);\n }\n }\n else {\n this.findNextElement(event);\n }\n }\n else {\n var nextItem = void 0;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n var index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (count) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (count - 1) : this.activeIndex;\n this.activeIndex = index = this.validLiElement(this.activeIndex, (event.keyCode === 40 || event.keyCode === 39) ?\n false : true);\n nextItem = isNullOrUndefined(this.timeCollections[index]) ?\n this.timeCollections[0] : this.timeCollections[index];\n }\n else if (event.action === 'home') {\n var index = this.validLiElement(0);\n this.activeIndex = index;\n nextItem = this.timeCollections[index];\n }\n else if (event.action === 'end') {\n var index = this.validLiElement(count - 1, true);\n this.activeIndex = index;\n nextItem = this.timeCollections[index];\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.elementValue(new Date(nextItem));\n }\n this.isNavigate = true;\n this.setHover(this.selectedElement, NAVIGATION);\n this.setActiveDescendant();\n if (this.enableMask) {\n this.selectInputText();\n }\n if (this.isPopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setScrollPosition();\n }\n };\n TimePicker.prototype.getCultureTimeObject = function (ld, c) {\n return getValue('main.' + c + '.dates.calendars.gregorian.timeFormats.short', ld);\n };\n TimePicker.prototype.getCultureDateObject = function (ld, c) {\n return getValue('main.' + c + '.dates.calendars.gregorian.dateFormats.short', ld);\n };\n TimePicker.prototype.wireListEvents = function () {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n };\n TimePicker.prototype.unWireListEvents = function () {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n if (!Browser.isDevice) {\n EventHandler.remove(this.listWrapper, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.listWrapper, 'mouseout', this.onMouseLeave);\n }\n }\n };\n TimePicker.prototype.valueProcess = function (event, value) {\n var result = (isNullOrUndefined(this.checkDateValue(value))) ? null : value;\n if (+this.prevDate !== +result) {\n this.initValue = result;\n this.changeEvent(event);\n }\n };\n TimePicker.prototype.changeEvent = function (e) {\n this.addSelection();\n this.updateInput(true, this.initValue);\n var eventArgs = {\n event: (e || null),\n value: this.value,\n text: (this.inputElement).value,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n eventArgs.value = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n this.prevDate = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n this.invalidValueString = null;\n this.checkErrorState(this.value);\n };\n TimePicker.prototype.updateInput = function (isUpdate, date) {\n if (isUpdate) {\n this.prevValue = this.getValue(date);\n }\n this.prevDate = this.valueWithMinutes = date;\n if ((typeof date !== 'number') || (this.value && +new Date(+this.value).setMilliseconds(0)) !== +date) {\n this.setProperties({ value: date }, true);\n if (this.enableMask && this.value) {\n this.createMask();\n }\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.checkErrorState(this.invalidValueString);\n this.updateInputValue(this.invalidValueString);\n }\n this.clearIconState();\n };\n TimePicker.prototype.setActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement) && this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n TimePicker.prototype.removeSelection = function () {\n this.removeHover(HOVER);\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + SELECTED);\n if (items.length) {\n removeClass(items, SELECTED);\n items[0].removeAttribute('aria-selected');\n }\n }\n };\n TimePicker.prototype.removeHover = function (className) {\n var hoveredItem = this.getHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n if (className === NAVIGATION) {\n hoveredItem[0].removeAttribute('aria-selected');\n }\n }\n };\n TimePicker.prototype.getHoverItem = function (className) {\n var hoveredItem;\n if (!isNullOrUndefined(this.popupWrapper)) {\n hoveredItem = this.popupWrapper.querySelectorAll('.' + className);\n }\n return hoveredItem;\n };\n TimePicker.prototype.setActiveClass = function () {\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n if ((this.timeCollections[i] === +this.getDateObject(this.valueWithMinutes))) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n };\n TimePicker.prototype.addSelection = function () {\n this.selectedElement = null;\n this.removeSelection();\n this.setActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], SELECTED);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n TimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS) && !li.classList.contains(DISABLED));\n };\n TimePicker.prototype.createDateObj = function (val) {\n var formatStr = null;\n var today = this.globalize.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n var value = null;\n if (typeof val === 'string') {\n if (val.toUpperCase().indexOf('AM') > -1 || val.toUpperCase().indexOf('PM') > -1) {\n today = this.defaultCulture.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n value = isNaN(+new Date(today + ' ' + val)) ? null : new Date(new Date(today + ' ' + val).setMilliseconds(0));\n if (isNullOrUndefined(value)) {\n value = this.timeParse(today, val);\n }\n }\n else {\n value = this.timeParse(today, val);\n }\n }\n else if (val instanceof Date) {\n value = val;\n }\n return value;\n };\n TimePicker.prototype.timeParse = function (today, val) {\n var value;\n value = this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.cldrTimeFormat(), type: 'datetime'\n });\n value = isNullOrUndefined(value) ? this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.dateToNumeric(), type: 'datetime'\n }) : value;\n value = isNullOrUndefined(value) ? value : new Date(value.setMilliseconds(0));\n return value;\n };\n TimePicker.prototype.createListItems = function () {\n var _this = this;\n this.listWrapper = this.createElement('div', { className: CONTENT, attrs: { 'tabindex': '-1' } });\n var start;\n var interval = this.step * 60000;\n var listItems = [];\n this.timeCollections = [];\n this.disableItemCollection = [];\n start = +(this.getDateObject(this.initMin).setMilliseconds(0));\n var end = +(this.getDateObject(this.initMax).setMilliseconds(0));\n while (end >= start) {\n this.timeCollections.push(start);\n listItems.push(this.globalize.formatDate(new Date(start), { format: this.cldrTimeFormat(), type: 'time' }));\n start += interval;\n }\n var listBaseOptions = {\n itemCreated: function (args) {\n var eventArgs = {\n element: args.item,\n text: args.text, value: _this.getDateObject(args.text), isDisabled: false\n };\n _this.trigger('itemRender', eventArgs, function (eventArgs) {\n if (eventArgs.isDisabled) {\n eventArgs.element.classList.add(DISABLED);\n }\n if (eventArgs.element.classList.contains(DISABLED)) {\n _this.disableItemCollection.push(eventArgs.element.getAttribute('data-value'));\n }\n });\n }\n };\n this.listTag = ListBase.createList(this.createElement, listItems, listBaseOptions, true);\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options', 'tabindex': '0' });\n append([this.listTag], this.listWrapper);\n };\n TimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObj) && !isNullOrUndefined(this.inputWrapper) && (this.inputWrapper.container.contains(target) && event.type !== 'mousedown' ||\n (this.popupObj.element && this.popupObj.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) && target !== this.inputElement\n && target !== (this.inputWrapper && this.inputWrapper.buttons[0]) &&\n target !== (this.inputWrapper && this.inputWrapper.clearButton) &&\n target !== (this.inputWrapper && this.inputWrapper.container)) {\n if (this.isPopupOpen()) {\n this.hide();\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement)\n && (target === this.popupWrapper);\n }\n }\n };\n TimePicker.prototype.setEnableRtl = function () {\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n TimePicker.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement, this.floatLabelType);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], DISABLED);\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hide();\n addClass([this.inputWrapper.container], DISABLED);\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.inputElement.tabIndex = -1;\n }\n };\n TimePicker.prototype.getProperty = function (date, val) {\n if (val === 'min') {\n this.initMin = this.checkDateValue(new Date(this.checkInValue(date.min)));\n this.setProperties({ min: this.initMin }, true);\n }\n else {\n this.initMax = this.checkDateValue(new Date(this.checkInValue(date.max)));\n this.setProperties({ max: this.initMax }, true);\n }\n if (this.inputElement.value === '') {\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n this.checkValue(this.inputElement.value);\n }\n this.checkValueChange(null, false);\n };\n TimePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n // IE popup closing issue when click over the scrollbar\n if (this.isPreventBlur && this.isPopupOpen()) {\n this.inputElement.focus();\n return;\n }\n this.closePopup(0, e);\n if (this.enableMask && this.maskedDateValue && this.placeholder && this.floatLabelType !== 'Always') {\n if (this.inputElement.value === this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue('');\n }\n }\n removeClass([this.inputWrapper.container], [FOCUS]);\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n if (this.getText() !== this.inputElement.value) {\n this.updateValue((this.inputElement).value, e);\n }\n else if (this.inputElement.value.trim().length === 0) {\n this.resetState();\n }\n this.cursorDetails = null;\n this.isNavigate = false;\n if (this.inputElement.value === '') {\n this.invalidValueString = null;\n }\n };\n /**\n * Focuses out the TimePicker textbox element.\n *\n * @returns {void}\n */\n TimePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [FOCUS]);\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n };\n TimePicker.prototype.isPopupOpen = function () {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + ROOT)) {\n return true;\n }\n return false;\n };\n TimePicker.prototype.inputFocusHandler = function () {\n if (!this.enabled) {\n return;\n }\n var focusArguments = {\n model: this\n };\n if (!this.readonly && !Browser.isDevice && !this.enableMask) {\n this.selectInputText();\n }\n if (this.enableMask && !this.inputElement.value && this.placeholder) {\n if (this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.inputElement.selectionStart = 0;\n this.inputElement.selectionEnd = this.inputElement.value.length;\n }\n }\n this.trigger('focus', focusArguments);\n this.clearIconState();\n if (this.openOnFocus) {\n this.show();\n }\n };\n /**\n * Focused the TimePicker textbox element.\n *\n * @returns {void}\n */\n TimePicker.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n };\n /**\n * Hides the TimePicker popup.\n *\n * @returns {void}\n\n */\n TimePicker.prototype.hide = function () {\n this.closePopup(100, null);\n this.clearIconState();\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup to show the list items.\n *\n * @returns {void}\n\n */\n TimePicker.prototype.show = function (event) {\n var _this = this;\n if ((this.enabled && this.readonly) || !this.enabled || this.popupWrapper) {\n return;\n }\n else {\n this.popupCreation();\n if (Browser.isDevice && this.listWrapper) {\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW;\n document.body.appendChild(this.modal);\n }\n if (Browser.isDevice) {\n this.mobileTimePopupWrap = this.createElement('div', { className: 'e-timepicker-mob-popup-wrap' });\n document.body.appendChild(this.mobileTimePopupWrap);\n }\n this.openPopupEventArgs = {\n popup: this.popupObj || null,\n cancel: false,\n event: event || null,\n name: 'open',\n appendTo: Browser.isDevice ? this.mobileTimePopupWrap : document.body\n };\n var eventArgs = this.openPopupEventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.openPopupEventArgs = eventArgs;\n if (!_this.openPopupEventArgs.cancel && !_this.inputWrapper.buttons[0].classList.contains(DISABLED)) {\n _this.openPopupEventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.popupAlignment(_this.openPopupEventArgs);\n _this.setScrollPosition();\n if (!Browser.isDevice) {\n _this.inputElement.focus();\n }\n var openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION\n };\n _this.popupObj.refreshPosition(_this.anchor);\n if (_this.zIndex === 1000) {\n _this.popupObj.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObj.show(new Animation(openAnimation), null);\n }\n _this.setActiveDescendant();\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options' });\n addClass([_this.inputWrapper.container], FOCUS);\n EventHandler.add(document, 'mousedown touchstart', _this.documentClickHandler, _this);\n _this.setOverlayIndex(_this.mobileTimePopupWrap, _this.popupObj.element, _this.modal, Browser.isDevice);\n }\n else {\n _this.popupObj.destroy();\n _this.popupWrapper = _this.listTag = undefined;\n _this.liCollections = _this.timeCollections = _this.disableItemCollection = [];\n _this.popupObj = null;\n }\n });\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n TimePicker.prototype.setOverlayIndex = function (popupWrapper, timePopupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(timePopupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(timePopupElement.style.zIndex, 10) ? parseInt(timePopupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n TimePicker.prototype.formatValues = function (type) {\n var value;\n if (typeof type === 'number') {\n value = formatUnit(type);\n }\n else if (typeof type === 'string') {\n value = (type.match(/px|%|em/)) ? type : isNaN(parseInt(type, 10)) ? type : formatUnit(type);\n }\n return value;\n };\n TimePicker.prototype.popupAlignment = function (args) {\n args.popup.position.X = this.formatValues(args.popup.position.X);\n args.popup.position.Y = this.formatValues(args.popup.position.Y);\n if (!isNaN(parseFloat(args.popup.position.X)) || !isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.targetType = 'container';\n }\n if (!isNaN(parseFloat(args.popup.position.X))) {\n this.popupObj.offsetX = parseFloat(args.popup.position.X);\n }\n if (!isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.offsetY = parseFloat(args.popup.position.Y);\n }\n if (!Browser.isDevice) {\n switch (args.popup.position.X) {\n case 'left':\n break;\n case 'right':\n args.popup.offsetX = this.containerStyle.width;\n break;\n case 'center':\n args.popup.offsetX = -(this.containerStyle.width / 2);\n break;\n }\n switch (args.popup.position.Y) {\n case 'top':\n break;\n case 'bottom':\n break;\n case 'center':\n args.popup.offsetY = -(this.containerStyle.height / 2);\n break;\n }\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.inputWrapper.container;\n this.anchor = this.inputElement;\n this.popupObj.targetType = 'relative';\n }\n }\n else {\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.offsetY = 0;\n this.popupObj.targetType = 'container';\n this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n TimePicker.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n TimePicker.prototype.getModuleName = function () {\n return 'timepicker';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TimePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {TimePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n TimePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement, this.floatLabelType);\n if (this.readonly) {\n this.hide();\n }\n this.setTimeAllowEdit();\n break;\n case 'enabled':\n this.setProperties({ enabled: newProp.enabled }, true);\n this.setEnable();\n break;\n case 'allowEdit':\n this.setTimeAllowEdit();\n break;\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'min':\n case 'max':\n this.getProperty(newProp, prop);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n break;\n case 'locale':\n this.setProperties({ locale: newProp.locale }, true);\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.updatePlaceHolder();\n this.setValue(this.value);\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'width':\n setStyleAttribute(this.inputWrapper.container, { 'width': this.setWidth(newProp.width) });\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkTimeFormat();\n this.setValue(this.value);\n if (this.enableMask) {\n this.createMask();\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n break;\n case 'value':\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n if (!this.invalidValueString) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(newProp.value)) }, true);\n newProp.value = this.value;\n }\n else {\n if ((newProp.value && +new Date(+newProp.value).setMilliseconds(0)) !== +this.value) {\n newProp.value = this.checkDateValue(new Date('' + newProp.value));\n }\n }\n this.initValue = newProp.value;\n newProp.value = this.compareFormatChange(this.checkValue(newProp.value));\n }\n else {\n this.updateInputValue(this.invalidValueString);\n this.checkErrorState(this.invalidValueString);\n }\n if (this.enableMask && isNullOrUndefined(newProp.value)) {\n this.updateInputValue(this.maskedDateValue);\n this.checkErrorState(this.maskedDateValue);\n }\n this.checkValueChange(null, false);\n if (this.isPopupOpen()) {\n this.setScrollPosition();\n }\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'strictMode':\n this.invalidValueString = null;\n if (newProp.strictMode) {\n this.checkErrorState(null);\n }\n this.setProperties({ strictMode: newProp.strictMode }, true);\n this.checkValue((this.inputElement).value);\n this.checkValueChange(null, false);\n break;\n case 'scrollTo':\n if (this.checkDateValue(new Date(this.checkInValue(newProp.scrollTo)))) {\n if (this.popupWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkInValue(newProp.scrollTo))) }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n this.updateInputValue(this.maskedDateValue);\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.updateInputValue('');\n }\n }\n break;\n }\n }\n };\n TimePicker.prototype.checkInValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"format\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"readonly\", void 0);\n __decorate([\n Property({})\n ], TimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('Never')\n ], TimePicker.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property(1000)\n ], TimePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(30)\n ], TimePicker.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"scrollTo\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"max\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], TimePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"itemRender\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"focus\", void 0);\n TimePicker = __decorate([\n NotifyPropertyChanges\n ], TimePicker);\n return TimePicker;\n}(Component));\nexport { TimePicker };\n/* eslint-enable @typescript-eslint/no-explicit-any */\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n///\nimport { EventHandler, Internationalization, Property, NotifyPropertyChanges, Browser } from '@syncfusion/ej2-base';\nimport { Animation, Event, cldrData, getDefaultDateObject, detach } from '@syncfusion/ej2-base';\nimport { createElement, remove, addClass, L10n, removeClass, closest, append, attributes } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, isNullOrUndefined, formatUnit, getValue, rippleEffect } from '@syncfusion/ej2-base';\nimport { extend } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DatePicker } from '../datepicker/datepicker';\nimport { TimePickerBase } from '../timepicker/timepicker';\n//class constant defination\nvar DATEWRAPPER = 'e-date-wrapper';\nvar DATEPICKERROOT = 'e-datepicker';\nvar DATETIMEWRAPPER = 'e-datetime-wrapper';\nvar DAY = new Date().getDate();\nvar MONTH = new Date().getMonth();\nvar YEAR = new Date().getFullYear();\nvar HOUR = new Date().getHours();\nvar MINUTE = new Date().getMinutes();\nvar SECOND = new Date().getSeconds();\nvar MILLISECOND = new Date().getMilliseconds();\nvar ROOT = 'e-datetimepicker';\nvar DATETIMEPOPUPWRAPPER = 'e-datetimepopup-wrapper';\nvar INPUTWRAPPER = 'e-input-group-icon';\nvar POPUP = 'e-popup';\nvar TIMEICON = 'e-time-icon';\nvar INPUTFOCUS = 'e-input-focus';\nvar POPUPDIMENSION = '250px';\nvar ICONANIMATION = 'e-icon-anim';\nvar DISABLED = 'e-disabled';\nvar ERROR = 'e-error';\nvar CONTENT = 'e-content';\nvar NAVIGATION = 'e-navigation';\nvar ACTIVE = 'e-active';\nvar HOVER = 'e-hover';\nvar ICONS = 'e-icons';\nvar HALFPOSITION = 2;\nvar LISTCLASS = 'e-list-item';\nvar ANIMATIONDURATION = 100;\nvar OVERFLOW = 'e-time-overflow';\n/**\n * Represents the DateTimePicker component that allows user to select\n * or enter a date time value.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DateTimePicker = /** @class */ (function (_super) {\n __extends(DateTimePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {DateTimePickerModel} options - Specifies the DateTimePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DateTimePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.valueWithMinutes = null;\n _this.scrollInvoked = false;\n _this.moduleName = _this.getModuleName();\n _this.dateTimeOptions = options;\n return _this;\n }\n DateTimePicker.prototype.focusHandler = function () {\n if (!this.enabled) {\n return;\n }\n addClass([this.inputWrapper.container], INPUTFOCUS);\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.focusIn = function () {\n _super.prototype.focusIn.call(this);\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n DateTimePicker.prototype.blurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n // IE popup closing issue when click over the scrollbar\n if (this.isTimePopupOpen() && this.isPreventBlur) {\n this.inputElement.focus();\n return;\n }\n removeClass([this.inputWrapper.container], INPUTFOCUS);\n var blurArguments = {\n model: this\n };\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n this.trigger('blur', blurArguments);\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.destroy = function () {\n if (this.popupObject && this.popupObject.element.classList.contains(POPUP)) {\n this.popupObject.destroy();\n detach(this.dateTimeWrapper);\n this.dateTimeWrapper = undefined;\n this.liCollections = this.timeCollections = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n }\n var ariaAttribute = {\n 'aria-live': 'assertive', 'aria-atomic': 'true', 'aria-invalid': 'false',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObject = this.popupWrapper = null;\n this.keyboardHandler.destroy();\n }\n this.unBindInputEvents();\n this.liCollections = null;\n this.rippleFn = null;\n this.selectedElement = null;\n this.listTag = null;\n this.timeIcon = null;\n this.popupObject = null;\n this.preventArgs = null;\n this.keyboardModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DateTimePicker.prototype.render = function () {\n this.timekeyConfigure = {\n enter: 'enter',\n escape: 'escape',\n end: 'end',\n tab: 'tab',\n home: 'home',\n down: 'downarrow',\n up: 'uparrow',\n left: 'leftarrow',\n right: 'rightarrow',\n open: 'alt+downarrow',\n close: 'alt+uparrow'\n };\n this.valueWithMinutes = null;\n this.previousDateTime = null;\n this.isPreventBlur = false;\n this.cloneElement = this.element.cloneNode(true);\n this.dateTimeFormat = this.cldrDateTimeFormat();\n this.initValue = this.value;\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n _super.prototype.updateHtmlAttributeToElement.call(this);\n this.checkAttributes(false);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('datetimepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n _super.prototype.render.call(this);\n this.createInputElement();\n _super.prototype.updateHtmlAttributeToWrapper.call(this);\n this.bindInputEvents();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n this.setValue(true);\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(this.scrollTo))) }, true);\n this.previousDateTime = this.value && new Date(+this.value);\n if (this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n if (!this.enabled) {\n this.inputElement.tabIndex = -1;\n }\n }\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n this.renderComplete();\n };\n DateTimePicker.prototype.setValue = function (isDynamic) {\n if (isDynamic === void 0) { isDynamic = false; }\n this.initValue = this.validateMinMaxRange(this.value);\n if (!this.strictMode && this.isDateObject(this.initValue)) {\n var value = this.validateMinMaxRange(this.initValue);\n Input.setValue(this.getFormattedValue(value), this.inputElement, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: value }, true);\n }\n else {\n if (isNullOrUndefined(this.value)) {\n this.initValue = null;\n this.setProperties({ value: null }, true);\n }\n }\n this.valueWithMinutes = this.value;\n _super.prototype.updateInput.call(this, isDynamic);\n };\n DateTimePicker.prototype.validateMinMaxRange = function (value) {\n var result = value;\n if (this.isDateObject(value)) {\n result = this.validateValue(value);\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n }\n }\n this.checkValidState(result);\n return result;\n };\n DateTimePicker.prototype.checkValidState = function (value) {\n this.isValidState = true;\n if (!this.strictMode) {\n if ((+(value) > +(this.max)) || (+(value) < +(this.min))) {\n this.isValidState = false;\n }\n }\n this.checkErrorState();\n };\n DateTimePicker.prototype.checkErrorState = function () {\n if (this.isValidState) {\n removeClass([this.inputWrapper.container], ERROR);\n }\n else {\n addClass([this.inputWrapper.container], ERROR);\n }\n attributes(this.inputElement, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n DateTimePicker.prototype.validateValue = function (value) {\n var dateVal = value;\n if (this.strictMode) {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n dateVal = this.max;\n }\n else if (+value < +this.min) {\n dateVal = this.min;\n }\n else if (+value > +this.max) {\n dateVal = this.max;\n }\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n dateVal = value;\n }\n }\n return dateVal;\n };\n DateTimePicker.prototype.disablePopupButton = function (isDisable) {\n if (isDisable) {\n addClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED);\n this.hide();\n }\n else {\n removeClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED);\n }\n };\n DateTimePicker.prototype.getFormattedValue = function (value) {\n var dateOptions;\n if (!isNullOrUndefined(value)) {\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n dateOptions = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n return this.globalize.formatDate(value, dateOptions);\n }\n else {\n return null;\n }\n };\n DateTimePicker.prototype.isDateObject = function (value) {\n return (!isNullOrUndefined(value) && !isNaN(+value)) ? true : false;\n };\n DateTimePicker.prototype.createInputElement = function () {\n removeClass([this.inputElement], DATEPICKERROOT);\n removeClass([this.inputWrapper.container], DATEWRAPPER);\n addClass([this.inputWrapper.container], DATETIMEWRAPPER);\n addClass([this.inputElement], ROOT);\n this.renderTimeIcon();\n };\n DateTimePicker.prototype.renderTimeIcon = function () {\n this.timeIcon = Input.appendSpan(INPUTWRAPPER + ' ' + TIMEICON + ' ' + ICONS, this.inputWrapper.container);\n };\n DateTimePicker.prototype.bindInputEvents = function () {\n EventHandler.add(this.timeIcon, 'mousedown', this.timeHandler, this);\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dateHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.blurHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.focusHandler, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.keyboardHandler = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputKeyAction.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n };\n DateTimePicker.prototype.unBindInputEvents = function () {\n EventHandler.remove(this.timeIcon, 'mousedown touchstart', this.timeHandler);\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.dateHandler);\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'blur', this.blurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.focusHandler);\n }\n if (this.keyboardHandler) {\n this.keyboardHandler.destroy();\n }\n };\n DateTimePicker.prototype.cldrTimeFormat = function () {\n var cldrTime;\n if (this.isNullOrEmpty(this.timeFormat)) {\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n }\n else {\n cldrTime = this.timeFormat;\n }\n return cldrTime;\n };\n DateTimePicker.prototype.cldrDateTimeFormat = function () {\n var cldrTime;\n var culture = new Internationalization(this.locale);\n var dateFormat = culture.getDatePattern({ skeleton: 'yMd' });\n if (this.isNullOrEmpty(this.formatString)) {\n cldrTime = dateFormat + ' ' + this.getCldrFormat('time');\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n DateTimePicker.prototype.getCldrFormat = function (type) {\n var cldrDateTime;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDateTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDateTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n return cldrDateTime;\n };\n DateTimePicker.prototype.isNullOrEmpty = function (value) {\n if (isNullOrUndefined(value) || (typeof value === 'string' && value.trim() === '')) {\n return true;\n }\n else {\n return false;\n }\n };\n DateTimePicker.prototype.getCultureTimeObject = function (ld, c) {\n if (this.calendarMode === 'Gregorian') {\n return getValue('main.' + '' + this.locale + '.dates.calendars.gregorian.timeFormats.short', ld);\n }\n else {\n return getValue('main.' + '' + this.locale + '.dates.calendars.islamic.timeFormats.short', ld);\n }\n };\n DateTimePicker.prototype.timeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isIconClicked = true;\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n }\n if (e.currentTarget === this.timeIcon) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n }\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n else {\n this.inputElement.focus();\n this.popupCreation('time', e);\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n }\n this.isIconClicked = false;\n };\n DateTimePicker.prototype.dateHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (e.currentTarget === this.inputWrapper.buttons[0]) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n if (!isNullOrUndefined(this.popupWrapper)) {\n this.popupCreation('date', e);\n }\n }\n };\n DateTimePicker.prototype.show = function (type, e) {\n if ((this.enabled && this.readonly) || !this.enabled) {\n return;\n }\n else {\n if (type === 'time' && !this.dateTimeWrapper) {\n if (this.isDatePopupOpen()) {\n this.hide(e);\n }\n this.popupCreation('time', e);\n }\n else if (!this.popupObj) {\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n _super.prototype.show.call(this);\n this.popupCreation('date', e);\n }\n }\n };\n DateTimePicker.prototype.toggle = function (e) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n this.show('time', null);\n }\n else if (this.isTimePopupOpen()) {\n this.hide(e);\n _super.prototype.show.call(this, null, e);\n this.popupCreation('date', null);\n }\n else {\n this.show(null, e);\n }\n };\n DateTimePicker.prototype.listCreation = function () {\n var dateObject;\n if (this.calendarMode === 'Gregorian') {\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.cldrDateTimeFormat(), type: 'datetime'\n });\n }\n else {\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.cldrDateTimeFormat(), type: 'datetime', calendar: 'islamic'\n });\n }\n var value = isNullOrUndefined(this.value) ? this.inputElement.value !== '' ?\n dateObject : new Date() : this.value;\n this.valueWithMinutes = value;\n this.listWrapper = createElement('div', { className: CONTENT, attrs: { 'tabindex': '0' } });\n var min = this.startTime(value);\n var max = this.endTime(value);\n var listDetails = TimePickerBase.createListItems(this.createElement, min, max, this.globalize, this.cldrTimeFormat(), this.step);\n this.timeCollections = listDetails.collection;\n this.listTag = listDetails.list;\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options' });\n append([listDetails.list], this.listWrapper);\n this.wireTimeListEvents();\n var rippleModel = { duration: 300, selector: '.' + LISTCLASS };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS);\n };\n DateTimePicker.prototype.popupCreation = function (type, e) {\n if (Browser.isDevice) {\n this.element.setAttribute('readonly', 'readonly');\n }\n if (type === 'date') {\n if (!this.readonly && this.popupWrapper) {\n addClass([this.popupWrapper], DATETIMEPOPUPWRAPPER);\n attributes(this.popupWrapper, { 'id': this.element.id + '_datepopup' });\n }\n }\n else {\n if (!this.readonly) {\n this.dateTimeWrapper = createElement('div', {\n className: ROOT + ' ' + POPUP,\n attrs: { 'id': this.element.id + '_timepopup', 'style': 'visibility:hidden ; display:block' }\n });\n if (!isNullOrUndefined(this.cssClass)) {\n this.dateTimeWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.listCreation();\n append([this.listWrapper], this.dateTimeWrapper);\n }\n document.body.appendChild(this.dateTimeWrapper);\n this.addTimeSelection();\n this.renderPopup();\n this.setTimeScrollPosition();\n this.openPopup(e);\n if (!Browser.isDevice || (Browser.isDevice && !this.fullScreenMode)) {\n this.popupObject.refreshPosition(this.inputElement);\n }\n if (Browser.isDevice && this.fullScreenMode) {\n this.dateTimeWrapper.style.left = '0px';\n }\n }\n }\n };\n DateTimePicker.prototype.openPopup = function (e) {\n var _this = this;\n this.preventArgs = {\n cancel: false,\n popup: this.popupObject,\n event: e || null\n };\n var eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.preventArgs = eventArgs;\n if (!_this.preventArgs.cancel && !_this.readonly) {\n var openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION\n };\n if (_this.zIndex === 1000) {\n _this.popupObject.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObject.show(new Animation(openAnimation), null);\n }\n addClass([_this.inputWrapper.container], [ICONANIMATION]);\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options' });\n EventHandler.add(document, 'mousedown touchstart', _this.documentClickHandler, _this);\n }\n });\n };\n DateTimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObject) && (this.inputWrapper.container.contains(target) && event.type !== 'mousedown' ||\n (this.popupObject.element && this.popupObject.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '[id=\"' + (this.popupObject && this.popupObject.element.id + '\"]'))) && target !== this.inputElement\n && target !== this.timeIcon && !isNullOrUndefined(this.inputWrapper) && target !== this.inputWrapper.container) {\n if (this.isTimePopupOpen()) {\n this.hide(event);\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = ((document.activeElement === this.inputElement) && (Browser.isIE || Browser.info.name === 'edge')\n && target === this.popupObject.element);\n }\n }\n };\n DateTimePicker.prototype.isTimePopupOpen = function () {\n return (this.dateTimeWrapper && this.dateTimeWrapper.classList.contains('' + ROOT)) ? true : false;\n };\n DateTimePicker.prototype.isDatePopupOpen = function () {\n return (this.popupWrapper && this.popupWrapper.classList.contains('' + DATETIMEPOPUPWRAPPER)) ? true : false;\n };\n DateTimePicker.prototype.renderPopup = function () {\n var _this = this;\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n if (Browser.isDevice) {\n this.timeModal = createElement('div');\n this.timeModal.className = '' + ROOT + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW;\n this.timeModal.style.display = 'block';\n document.body.appendChild(this.timeModal);\n }\n var offset = 4;\n this.popupObject = new Popup(this.dateTimeWrapper, {\n width: this.setPopupWidth(),\n zIndex: this.zIndex,\n targetType: 'container',\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n enableRtl: this.enableRtl,\n offsetY: offset,\n open: function () {\n _this.dateTimeWrapper.style.visibility = 'visible';\n addClass([_this.timeIcon], ACTIVE);\n if (!Browser.isDevice) {\n _this.timekeyConfigure = extend(_this.timekeyConfigure, _this.keyConfigs);\n _this.inputEvent = new KeyboardEvents(_this.inputWrapper.container, {\n keyAction: _this.timeKeyActionHandle.bind(_this),\n keyConfigs: _this.timekeyConfigure,\n eventName: 'keydown'\n });\n }\n }, close: function () {\n removeClass([_this.timeIcon], ACTIVE);\n _this.unWireTimeListEvents();\n _this.inputElement.removeAttribute('aria-activedescendant');\n remove(_this.popupObject.element);\n _this.popupObject.destroy();\n _this.dateTimeWrapper.innerHTML = '';\n _this.listWrapper = _this.dateTimeWrapper = undefined;\n if (_this.inputEvent) {\n _this.inputEvent.destroy();\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (Browser.isDevice && this.fullScreenMode) {\n this.popupObject.element.style.display = \"flex\";\n this.popupObject.element.style.maxHeight = \"100%\";\n this.popupObject.element.style.width = \"100%\";\n }\n else {\n this.popupObject.element.style.maxHeight = POPUPDIMENSION;\n }\n if (Browser.isDevice && this.fullScreenMode) {\n var modelWrapper = createElement('div', { className: 'e-datetime-mob-popup-wrap' });\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var modelTitleSpan = this.createElement(\"span\", { className: \"e-model-title\" });\n modelTitleSpan.textContent = \"Select time\";\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.dateTimeCloseHandler, this);\n var timeContent = this.dateTimeWrapper.querySelector(\".e-content\");\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTitleSpan);\n modelWrapper.appendChild(modelHeader);\n modelWrapper.appendChild(timeContent);\n this.dateTimeWrapper.insertBefore(modelWrapper, this.dateTimeWrapper.firstElementChild);\n }\n };\n DateTimePicker.prototype.dateTimeCloseHandler = function (e) {\n this.hide();\n };\n DateTimePicker.prototype.setDimension = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n // eslint-disable-next-line no-self-assign\n width = width;\n }\n else {\n width = '100%';\n }\n return width;\n };\n DateTimePicker.prototype.setPopupWidth = function () {\n var width = this.setDimension(this.width);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n DateTimePicker.prototype.wireTimeListEvents = function () {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n };\n DateTimePicker.prototype.unWireTimeListEvents = function () {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n }\n };\n DateTimePicker.prototype.onMouseOver = function (event) {\n var currentLi = closest(event.target, '.' + LISTCLASS);\n this.setTimeHover(currentLi, HOVER);\n };\n DateTimePicker.prototype.onMouseLeave = function () {\n this.removeTimeHover(HOVER);\n };\n DateTimePicker.prototype.setTimeHover = function (li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeTimeHover(className);\n addClass([li], className);\n }\n };\n DateTimePicker.prototype.getPopupHeight = function () {\n var height = parseInt(POPUPDIMENSION, 10);\n var popupHeight = this.dateTimeWrapper.getBoundingClientRect().height;\n if (Browser.isDevice && this.fullScreenMode) {\n return popupHeight;\n }\n else {\n return popupHeight > height ? height : popupHeight;\n }\n };\n DateTimePicker.prototype.changeEvent = function (e) {\n _super.prototype.changeEvent.call(this, e);\n if ((this.value && this.value.valueOf()) !== (this.previousDateTime && +this.previousDateTime.valueOf())) {\n this.valueWithMinutes = this.value;\n this.setInputValue('date');\n this.previousDateTime = this.value && new Date(+this.value);\n }\n };\n DateTimePicker.prototype.updateValue = function (e) {\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs = {\n value: this.value, event: e || null,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n this.addTimeSelection();\n this.trigger('change', this.changedArgs);\n this.previousDateTime = this.previousDate = this.value;\n }\n };\n DateTimePicker.prototype.setTimeScrollPosition = function () {\n var popupElement = this.selectedElement;\n if (!isNullOrUndefined(popupElement)) {\n this.findScrollTop(popupElement);\n }\n else if (this.dateTimeWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n };\n DateTimePicker.prototype.findScrollTop = function (element) {\n var listHeight = this.getPopupHeight();\n var nextElement = element.nextElementSibling;\n var height = nextElement ? nextElement.offsetTop : element.offsetTop;\n var lineHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n if (Browser.isDevice && this.fullScreenMode) {\n var listContent = this.dateTimeWrapper.querySelector('.e-content');\n listContent.scrollTop = nextElement ? (height - (listHeight / HALFPOSITION + lineHeight / HALFPOSITION)) : height;\n }\n else {\n this.dateTimeWrapper.scrollTop = nextElement ? (height - (listHeight / HALFPOSITION + lineHeight / HALFPOSITION)) : height;\n }\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n };\n DateTimePicker.prototype.setScrollTo = function () {\n var element;\n var items = this.dateTimeWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length >= 0) {\n this.scrollInvoked = true;\n var initialTime = this.timeCollections[0];\n var scrollTime = this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n };\n DateTimePicker.prototype.setInputValue = function (type) {\n if (type === 'date') {\n this.inputElement.value = this.previousElementValue = this.getFormattedValue(this.getFullDateTime());\n this.setProperties({ value: this.getFullDateTime() }, true);\n }\n else {\n var tempVal = this.getFormattedValue(new Date(this.timeCollections[this.activeIndex]));\n Input.setValue(tempVal, this.inputElement, this.floatLabelType, this.showClearButton);\n this.previousElementValue = this.inputElement.value;\n this.setProperties({ value: new Date(this.timeCollections[this.activeIndex]) }, true);\n if (this.enableMask) {\n this.createMask();\n }\n }\n this.updateIconState();\n };\n DateTimePicker.prototype.getFullDateTime = function () {\n var value = null;\n if (this.isDateObject(this.valueWithMinutes)) {\n value = this.combineDateTime(this.valueWithMinutes);\n }\n else {\n value = this.previousDate;\n }\n return this.validateMinMaxRange(value);\n };\n DateTimePicker.prototype.createMask = function () {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n };\n DateTimePicker.prototype.combineDateTime = function (value) {\n if (this.isDateObject(value)) {\n var day = this.previousDate.getDate();\n var month = this.previousDate.getMonth();\n var year = this.previousDate.getFullYear();\n var hour = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n return new Date(year, month, day, hour, minutes, seconds);\n }\n else {\n return this.previousDate;\n }\n };\n DateTimePicker.prototype.onMouseClick = function (event) {\n var target = event.target;\n var li = this.selectedElement = closest(target, '.' + LISTCLASS);\n if (li && li.classList.contains(LISTCLASS)) {\n this.timeValue = li.getAttribute('data-value');\n this.hide(event);\n }\n this.setSelection(li, event);\n };\n DateTimePicker.prototype.setSelection = function (li, event) {\n if (this.isValidLI(li) && !li.classList.contains(ACTIVE)) {\n this.selectedElement = li;\n var index = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.activeIndex = index;\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], ACTIVE);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.updateValue(event);\n }\n };\n DateTimePicker.prototype.setTimeActiveClass = function () {\n var collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n if (!isNullOrUndefined(collections)) {\n var items = collections.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n if (this.timeCollections[i] === +(this.valueWithMinutes)) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n this.setTimeActiveDescendant();\n break;\n }\n }\n }\n }\n };\n DateTimePicker.prototype.setTimeActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement) && this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n DateTimePicker.prototype.addTimeSelection = function () {\n this.selectedElement = null;\n this.removeTimeSelection();\n this.setTimeActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], ACTIVE);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n DateTimePicker.prototype.removeTimeSelection = function () {\n this.removeTimeHover(HOVER);\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n var items = this.dateTimeWrapper.querySelectorAll('.' + ACTIVE);\n if (items.length) {\n removeClass(items, ACTIVE);\n items[0].removeAttribute('aria-selected');\n }\n }\n };\n DateTimePicker.prototype.removeTimeHover = function (className) {\n var hoveredItem = this.getTimeHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n }\n };\n DateTimePicker.prototype.getTimeHoverItem = function (className) {\n var collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n var hoveredItem;\n if (!isNullOrUndefined(collections)) {\n hoveredItem = collections.querySelectorAll('.' + className);\n }\n return hoveredItem;\n };\n DateTimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS) && !li.classList.contains(DISABLED));\n };\n DateTimePicker.prototype.calculateStartEnd = function (value, range, method) {\n var day = value.getDate();\n var month = value.getMonth();\n var year = value.getFullYear();\n var hours = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n var milliseconds = value.getMilliseconds();\n if (range) {\n if (method === 'starttime') {\n return new Date(year, month, day, 0, 0, 0);\n }\n else {\n return new Date(year, month, day, 23, 59, 59);\n }\n }\n else {\n return new Date(year, month, day, hours, minutes, seconds, milliseconds);\n }\n };\n DateTimePicker.prototype.startTime = function (date) {\n var tempStartValue;\n var start;\n var tempMin = this.min;\n var value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMin.getDate() && +value.getMonth() === +tempMin.getMonth() &&\n +value.getFullYear() === +tempMin.getFullYear()) || ((+new Date(value.getFullYear(), value.getMonth(), value.getDate())) <=\n +new Date(tempMin.getFullYear(), tempMin.getMonth(), tempMin.getDate()))) {\n start = false;\n tempStartValue = this.min;\n }\n else if (+value < +this.max && +value > +this.min) {\n start = true;\n tempStartValue = value;\n }\n else if (+value >= +this.max) {\n start = true;\n tempStartValue = this.max;\n }\n return this.calculateStartEnd(tempStartValue, start, 'starttime');\n };\n DateTimePicker.prototype.endTime = function (date) {\n var tempEndValue;\n var end;\n var tempMax = this.max;\n var value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMax.getDate() && +value.getMonth() === +tempMax.getMonth() &&\n +value.getFullYear() === +tempMax.getFullYear()) || (+new Date(value.getUTCFullYear(), value.getMonth(), value.getDate()) >=\n +new Date(tempMax.getFullYear(), tempMax.getMonth(), tempMax.getDate()))) {\n end = false;\n tempEndValue = this.max;\n }\n else if (+value < +this.max && +value > +this.min) {\n end = true;\n tempEndValue = value;\n }\n else if (+value <= +this.min) {\n end = true;\n tempEndValue = this.min;\n }\n return this.calculateStartEnd(tempEndValue, end, 'endtime');\n };\n DateTimePicker.prototype.hide = function (e) {\n var _this = this;\n if (this.popupObj || this.dateTimeWrapper) {\n this.preventArgs = {\n cancel: false,\n popup: this.popupObj || this.popupObject,\n event: e || null\n };\n var eventArgs = this.preventArgs;\n if (isNullOrUndefined(this.popupObj)) {\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.dateTimeCloseEventCallback(e, eventArgs);\n });\n }\n else {\n this.dateTimeCloseEventCallback(e, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n };\n DateTimePicker.prototype.dateTimeCloseEventCallback = function (e, eventArgs) {\n this.preventArgs = eventArgs;\n if (!this.preventArgs.cancel) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n }\n else if (this.isTimePopupOpen()) {\n this.closePopup(e);\n removeClass([document.body], OVERFLOW);\n if (Browser.isDevice && this.timeModal) {\n this.timeModal.style.display = 'none';\n this.timeModal.outerHTML = '';\n this.timeModal = null;\n }\n this.setTimeActiveDescendant();\n }\n }\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateTimePicker.prototype.closePopup = function (e) {\n if (this.isTimePopupOpen() && this.popupObject) {\n var animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION,\n delay: 0\n };\n this.popupObject.hide(new Animation(animModel));\n this.inputWrapper.container.classList.remove(ICONANIMATION);\n attributes(this.inputElement, { 'aria-expanded': 'false' });\n this.inputElement.removeAttribute('aria-owns');\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n }\n };\n DateTimePicker.prototype.preRender = function () {\n this.checkFormat();\n this.dateTimeFormat = this.cldrDateTimeFormat();\n _super.prototype.preRender.call(this);\n removeClass([this.inputElementCopy], [ROOT]);\n };\n DateTimePicker.prototype.getProperty = function (date, val) {\n if (val === 'min') {\n this.setProperties({ min: this.validateValue(date.min) }, true);\n }\n else {\n this.setProperties({ max: this.validateValue(date.max) }, true);\n }\n };\n DateTimePicker.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['style', 'name', 'step', 'disabled', 'readonly', 'value', 'min', 'max', 'placeholder', 'type'];\n var value;\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n break;\n case 'disabled':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === 'true' ||\n this.inputElement.getAttribute(prop) === '' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n break;\n }\n }\n }\n };\n DateTimePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n if (this.enableMask) {\n modules.push(this.maskedDateModule());\n }\n return modules;\n };\n DateTimePicker.prototype.maskedDateModule = function () {\n var modules = { args: [this], member: 'MaskedDateTime' };\n return modules;\n };\n DateTimePicker.prototype.getTimeActiveElement = function () {\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n return this.dateTimeWrapper.querySelectorAll('.' + ACTIVE);\n }\n else {\n return null;\n }\n };\n DateTimePicker.prototype.createDateObj = function (val) {\n return val instanceof Date ? val : null;\n };\n DateTimePicker.prototype.getDateObject = function (text) {\n if (!this.isNullOrEmpty(text)) {\n var dateValue = this.createDateObj(text);\n var value = this.valueWithMinutes;\n var status_1 = !isNullOrUndefined(value);\n if (this.checkDateValue(dateValue)) {\n var date = status_1 ? value.getDate() : DAY;\n var month = status_1 ? value.getMonth() : MONTH;\n var year = status_1 ? value.getFullYear() : YEAR;\n var hour = status_1 ? value.getHours() : HOUR;\n var minute = status_1 ? value.getMinutes() : MINUTE;\n var second = status_1 ? value.getSeconds() : SECOND;\n var millisecond = status_1 ? value.getMilliseconds() : MILLISECOND;\n if (!this.scrollInvoked) {\n return new Date(year, month, date, hour, minute, second, millisecond);\n }\n else {\n this.scrollInvoked = false;\n return new Date(year, month, date, dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds(), dateValue.getMilliseconds());\n }\n }\n }\n return null;\n };\n DateTimePicker.prototype.findNextTimeElement = function (event) {\n var textVal = (this.inputElement).value;\n var value = isNullOrUndefined(this.valueWithMinutes) ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n var dateTimeVal = null;\n var listCount = this.liCollections.length;\n if (!isNullOrUndefined(this.activeIndex) || !isNullOrUndefined(this.checkDateValue(value))) {\n if (event.action === 'home') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[0])));\n this.activeIndex = 0;\n }\n else if (event.action === 'end') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[this.timeCollections.length - 1])));\n this.activeIndex = this.timeCollections.length - 1;\n }\n else {\n if (event.action === 'down') {\n for (var i = 0; i < listCount; i++) {\n if (+value < this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n else {\n for (var i = listCount - 1; i >= 0; i--) {\n if (+value > this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(isNullOrUndefined(dateTimeVal) ? null : new Date(dateTimeVal));\n }\n };\n DateTimePicker.prototype.setTimeValue = function (date, value) {\n var dateString;\n var time;\n var val = this.validateMinMaxRange(value);\n var newval = this.createDateObj(val);\n if (this.getFormattedValue(newval) !== (!isNullOrUndefined(this.value) ? this.getFormattedValue(this.value) : null)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = new Date(+this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = new Date(+this.valueWithMinutes);\n }\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n return time;\n };\n DateTimePicker.prototype.timeElementValue = function (value) {\n if (!isNullOrUndefined(this.checkDateValue(value)) && !this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.setTimeValue(date, value);\n }\n return null;\n };\n DateTimePicker.prototype.timeKeyHandler = function (event) {\n if (isNullOrUndefined(this.step) || this.step <= 0) {\n return;\n }\n var listCount = this.timeCollections.length;\n if (isNullOrUndefined(this.getTimeActiveElement()) || this.getTimeActiveElement().length === 0) {\n if (this.liCollections.length > 0) {\n if (isNullOrUndefined(this.value) && isNullOrUndefined(this.activeIndex)) {\n this.activeIndex = 0;\n this.selectedElement = this.liCollections[0];\n this.timeElementValue(new Date(this.timeCollections[0]));\n }\n else {\n this.findNextTimeElement(event);\n }\n }\n }\n else {\n var nextItemValue = void 0;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n var index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (listCount) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (listCount - 1) : this.activeIndex;\n nextItemValue = isNullOrUndefined(this.timeCollections[index]) ?\n this.timeCollections[0] : this.timeCollections[index];\n }\n else if (event.action === 'home') {\n this.activeIndex = 0;\n nextItemValue = this.timeCollections[0];\n }\n else if (event.action === 'end') {\n this.activeIndex = listCount - 1;\n nextItemValue = this.timeCollections[listCount - 1];\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(new Date(nextItemValue));\n }\n this.isNavigate = true;\n this.setTimeHover(this.selectedElement, NAVIGATION);\n this.setTimeActiveDescendant();\n if (this.isTimePopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setTimeScrollPosition();\n }\n };\n DateTimePicker.prototype.timeKeyActionHandle = function (event) {\n if (this.enabled) {\n if (event.action !== 'right' && event.action !== 'left' && event.action !== 'tab') {\n event.preventDefault();\n }\n switch (event.action) {\n case 'up':\n case 'down':\n case 'home':\n case 'end':\n this.timeKeyHandler(event);\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs.value = this.value;\n this.addTimeSelection();\n this.previousDateTime = this.value;\n }\n }\n else {\n this.updateValue(event);\n }\n this.hide(event);\n addClass([this.inputWrapper.container], INPUTFOCUS);\n this.isNavigate = false;\n event.stopPropagation();\n break;\n case 'escape':\n this.hide(event);\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n };\n DateTimePicker.prototype.inputKeyAction = function (event) {\n switch (event.action) {\n case 'altDownArrow':\n this.strictModeUpdate();\n this.updateInput();\n this.toggle(event);\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DateTimePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DateTimePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n\n */\n DateTimePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n this.isDynamicValueChanged = true;\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n newProp.value = this.validateValue(newProp.value);\n if (this.enableMask) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(this.getFormattedValue(newProp.value), this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.valueWithMinutes = newProp.value;\n this.setProperties({ value: newProp.value }, true);\n if (this.popupObj) {\n this.popupUpdate();\n }\n this.previousDateTime = new Date(this.inputElement.value);\n this.updateInput();\n this.changeTrigger(null);\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n if (this.enableMask && this.value) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'min':\n case 'max':\n this.getProperty(newProp, prop);\n this.updateInput();\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'cssClass':\n if (!isNullOrUndefined(oldProp.cssClass)) {\n oldProp.cssClass = (oldProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newProp.cssClass)) {\n newProp.cssClass = (newProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newProp.cssClass, [this.inputWrapper.container], oldProp.cssClass);\n if (this.dateTimeWrapper) {\n Input.setCssClass(newProp.cssClass, [this.dateTimeWrapper], oldProp.cssClass);\n }\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n this.dateTimeFormat = this.cldrDateTimeFormat();\n _super.prototype.updateInput.call(this);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkFormat();\n this.dateTimeFormat = this.formatString;\n this.setValue();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n if (!this.value) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n if (!this.enabled) {\n this.inputElement.tabIndex = -1;\n }\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.updateInput();\n break;\n case 'width':\n this.setWidth(newProp.width);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n break;\n case 'scrollTo':\n if (this.checkDateValue(new Date(this.checkValue(newProp.scrollTo)))) {\n if (this.dateTimeWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(newProp.scrollTo))) }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.maskedDateValue = '';\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n break;\n default:\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n }\n if (!this.isDynamicValueChanged) {\n this.hide(null);\n }\n this.isDynamicValueChanged = false;\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DateTimePicker.prototype.getModuleName = function () {\n return 'datetimepicker';\n };\n DateTimePicker.prototype.restoreValue = function () {\n this.previousDateTime = this.previousDate;\n this.currentDate = this.value ? this.value : new Date();\n this.valueWithMinutes = this.value;\n this.previousDate = this.value;\n this.previousElementValue = this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.getFormattedValue(this.inputValueCopy);\n };\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"timeFormat\", void 0);\n __decorate([\n Property(30)\n ], DateTimePicker.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"scrollTo\", void 0);\n __decorate([\n Property(1000)\n ], DateTimePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property({})\n ], DateTimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"values\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Property(new Date(1900, 0, 1))\n ], DateTimePicker.prototype, \"min\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], DateTimePicker.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('Gregorian')\n ], DateTimePicker.prototype, \"calendarMode\", void 0);\n __decorate([\n Property('Month')\n ], DateTimePicker.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], DateTimePicker.prototype, \"depth\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"weekNumber\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Short')\n ], DateTimePicker.prototype, \"dayHeaderFormat\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], DateTimePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"destroyed\", void 0);\n DateTimePicker = __decorate([\n NotifyPropertyChanges\n ], DateTimePicker);\n return DateTimePicker;\n}(DatePicker));\nexport { DateTimePicker };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { merge, extend, isNullOrUndefined, setValue, getValue } from '@syncfusion/ej2-base';\nimport { DataUtil } from './util';\nimport { Query, Predicate } from './query';\nvar consts = { GroupGuid: '{271bbba0-1ee7}' };\n/**\n * Adaptors are specific data source type aware interfaces that are used by DataManager to communicate with DataSource.\n * This is the base adaptor class that other adaptors can extend.\n *\n * @hidden\n */\nvar Adaptor = /** @class */ (function () {\n /**\n * Constructor for Adaptor class\n *\n * @param {DataOptions} ds?\n * @param ds\n * @hidden\n * @returns aggregates\n */\n function Adaptor(ds) {\n // common options for all the adaptors\n this.options = {\n from: 'table',\n requestType: 'json',\n sortBy: 'sorted',\n select: 'select',\n skip: 'skip',\n group: 'group',\n take: 'take',\n search: 'search',\n count: 'requiresCounts',\n where: 'where',\n aggregates: 'aggregates',\n expand: 'expand'\n };\n /**\n * Specifies the type of adaptor.\n *\n * @default Adaptor\n */\n this.type = Adaptor;\n this.dataSource = ds;\n this.pvt = {};\n }\n /**\n * Returns the data from the query processing.\n *\n * @param {Object} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param ds\n * @param query\n * @param xhr\n * @returns Object\n */\n Adaptor.prototype.processResponse = function (data, ds, query, xhr) {\n return data;\n };\n return Adaptor;\n}());\nexport { Adaptor };\n/**\n * JsonAdaptor is used to process JSON data. It contains methods to process the given JSON data based on the queries.\n *\n * @hidden\n */\nvar JsonAdaptor = /** @class */ (function (_super) {\n __extends(JsonAdaptor, _super);\n function JsonAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Process the JSON data based on the provided queries.\n *\n * @param {DataManager} dataManager\n * @param {Query} query\n * @returns Object\n */\n JsonAdaptor.prototype.processQuery = function (dataManager, query) {\n var result = dataManager.dataSource.json.slice(0);\n var count = result.length;\n var countFlg = true;\n var ret;\n var key;\n var lazyLoad = {};\n var keyCount = 0;\n var group = [];\n var page;\n for (var i = 0; i < query.lazyLoad.length; i++) {\n keyCount++;\n lazyLoad[query.lazyLoad[i].key] = query.lazyLoad[i].value;\n }\n var agg = {};\n for (var i = 0; i < query.queries.length; i++) {\n key = query.queries[i];\n if ((key.fn === 'onPage' || key.fn === 'onGroup') && query.lazyLoad.length) {\n if (key.fn === 'onGroup') {\n group.push(key.e);\n }\n if (key.fn === 'onPage') {\n page = key.e;\n }\n continue;\n }\n ret = this[key.fn].call(this, result, key.e, query);\n if (key.fn === 'onAggregates') {\n agg[key.e.field + ' - ' + key.e.type] = ret;\n }\n else {\n result = ret !== undefined ? ret : result;\n }\n if (key.fn === 'onPage' || key.fn === 'onSkip' || key.fn === 'onTake' || key.fn === 'onRange') {\n countFlg = false;\n }\n if (countFlg) {\n count = result.length;\n }\n }\n if (keyCount) {\n var args = {\n query: query, lazyLoad: lazyLoad, result: result, group: group, page: page\n };\n var lazyLoadData = this.lazyLoadGroup(args);\n result = lazyLoadData.result;\n count = lazyLoadData.count;\n }\n if (query.isCountRequired) {\n result = {\n result: result,\n count: count,\n aggregates: agg\n };\n }\n return result;\n };\n /**\n * Perform lazy load grouping in JSON array based on the given query and lazy load details.\n *\n * @param {LazyLoadGroupArgs} args\n */\n JsonAdaptor.prototype.lazyLoadGroup = function (args) {\n var count = 0;\n var agg = this.getAggregate(args.query);\n var result = args.result;\n if (!isNullOrUndefined(args.lazyLoad.onDemandGroupInfo)) {\n var req = args.lazyLoad.onDemandGroupInfo;\n for (var i = req.where.length - 1; i >= 0; i--) {\n result = this.onWhere(result, req.where[i]);\n }\n if (args.group.length !== req.level) {\n var field = args.group[req.level].fieldName;\n result = DataUtil.group(result, field, agg, null, null, args.group[0].comparer, true);\n }\n count = result.length;\n var data = result;\n result = result.slice(req.skip);\n result = result.slice(0, req.take);\n if (args.group.length !== req.level) {\n this.formGroupResult(result, data);\n }\n }\n else {\n var field = args.group[0].fieldName;\n result = DataUtil.group(result, field, agg, null, null, args.group[0].comparer, true);\n count = result.length;\n var data = result;\n if (args.page) {\n result = this.onPage(result, args.page, args.query);\n }\n this.formGroupResult(result, data);\n }\n return { result: result, count: count };\n };\n JsonAdaptor.prototype.formGroupResult = function (result, data) {\n if (result.length && data.length) {\n var uid = 'GroupGuid';\n var childLevel = 'childLevels';\n var level = 'level';\n var records = 'records';\n result[uid] = data[uid];\n result[childLevel] = data[childLevel];\n result[level] = data[level];\n result[records] = data[records];\n }\n return result;\n };\n /**\n * Separate the aggregate query from the given queries\n *\n * @param {Query} query\n */\n JsonAdaptor.prototype.getAggregate = function (query) {\n var aggQuery = Query.filterQueries(query.queries, 'onAggregates');\n var agg = [];\n if (aggQuery.length) {\n var tmp = void 0;\n for (var i = 0; i < aggQuery.length; i++) {\n tmp = aggQuery[i].e;\n agg.push({ type: tmp.type, field: DataUtil.getValue(tmp.field, query) });\n }\n }\n return agg;\n };\n /**\n * Performs batch update in the JSON array which add, remove and update records.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n JsonAdaptor.prototype.batchRequest = function (dm, changes, e) {\n var i;\n var deletedRecordsLen = changes.deletedRecords.length;\n for (i = 0; i < changes.addedRecords.length; i++) {\n this.insert(dm, changes.addedRecords[i]);\n }\n for (i = 0; i < changes.changedRecords.length; i++) {\n this.update(dm, e.key, changes.changedRecords[i]);\n }\n for (i = 0; i < deletedRecordsLen; i++) {\n this.remove(dm, e.key, changes.deletedRecords[i]);\n }\n return changes;\n };\n /**\n * Performs filter operation with the given data and where query.\n *\n * @param {Object[]} ds\n * @param {{validate:Function}} e\n * @param e.validate\n */\n JsonAdaptor.prototype.onWhere = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.filter(function (obj) {\n if (e) {\n return e.validate(obj);\n }\n });\n };\n /**\n * Returns aggregate function based on the aggregate type.\n *\n * @param {Object[]} ds\n * @param e\n * @param {string} } type\n * @param e.field\n * @param e.type\n */\n JsonAdaptor.prototype.onAggregates = function (ds, e) {\n var fn = DataUtil.aggregates[e.type];\n if (!ds || !fn || ds.length === 0) {\n return null;\n }\n return fn(ds, e.field);\n };\n /**\n * Performs search operation based on the given query.\n *\n * @param {Object[]} ds\n * @param {QueryOptions} e\n */\n JsonAdaptor.prototype.onSearch = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n if (e.fieldNames.length === 0) {\n DataUtil.getFieldList(ds[0], e.fieldNames);\n }\n return ds.filter(function (obj) {\n for (var j = 0; j < e.fieldNames.length; j++) {\n if (e.comparer.call(obj, DataUtil.getObject(e.fieldNames[j], obj), e.searchKey, e.ignoreCase, e.ignoreAccent)) {\n return true;\n }\n }\n return false;\n });\n };\n /**\n * Sort the data with given direction and field.\n *\n * @param {Object[]} ds\n * @param e\n * @param {Object} b\n * @param e.comparer\n * @param e.fieldName\n * @param query\n */\n JsonAdaptor.prototype.onSortBy = function (ds, e, query) {\n if (!ds || !ds.length) {\n return ds;\n }\n var fnCompare;\n var field = DataUtil.getValue(e.fieldName, query);\n if (!field) {\n return ds.sort(e.comparer);\n }\n if (field instanceof Array) {\n field = field.slice(0);\n for (var i = field.length - 1; i >= 0; i--) {\n if (!field[i]) {\n continue;\n }\n fnCompare = e.comparer;\n if (DataUtil.endsWith(field[i], ' desc')) {\n fnCompare = DataUtil.fnSort('descending');\n field[i] = field[i].replace(' desc', '');\n }\n ds = DataUtil.sort(ds, field[i], fnCompare);\n }\n return ds;\n }\n return DataUtil.sort(ds, field, e.comparer);\n };\n /**\n * Group the data based on the given query.\n *\n * @param {Object[]} ds\n * @param {QueryOptions} e\n * @param {Query} query\n */\n JsonAdaptor.prototype.onGroup = function (ds, e, query) {\n if (!ds || !ds.length) {\n return ds;\n }\n var agg = this.getAggregate(query);\n return DataUtil.group(ds, DataUtil.getValue(e.fieldName, query), agg, null, null, e.comparer);\n };\n /**\n * Retrieves records based on the given page index and size.\n *\n * @param {Object[]} ds\n * @param e\n * @param {number} } pageIndex\n * @param e.pageSize\n * @param {Query} query\n * @param e.pageIndex\n */\n JsonAdaptor.prototype.onPage = function (ds, e, query) {\n var size = DataUtil.getValue(e.pageSize, query);\n var start = (DataUtil.getValue(e.pageIndex, query) - 1) * size;\n var end = start + size;\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(start, end);\n };\n /**\n * Retrieves records based on the given start and end index from query.\n *\n * @param {Object[]} ds\n * @param e\n * @param {number} } end\n * @param e.start\n * @param e.end\n */\n JsonAdaptor.prototype.onRange = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.start), DataUtil.getValue(e.end));\n };\n /**\n * Picks the given count of records from the top of the datasource.\n *\n * @param {Object[]} ds\n * @param {{nos:number}} e\n * @param e.nos\n */\n JsonAdaptor.prototype.onTake = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(0, DataUtil.getValue(e.nos));\n };\n /**\n * Skips the given count of records from the data source.\n *\n * @param {Object[]} ds\n * @param {{nos:number}} e\n * @param e.nos\n */\n JsonAdaptor.prototype.onSkip = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.nos));\n };\n /**\n * Selects specified columns from the data source.\n *\n * @param {Object[]} ds\n * @param {{fieldNames:string}} e\n * @param e.fieldNames\n */\n JsonAdaptor.prototype.onSelect = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return DataUtil.select(ds, DataUtil.getValue(e.fieldNames));\n };\n /**\n * Inserts new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param tableName\n * @param query\n * @param {number} position\n */\n JsonAdaptor.prototype.insert = function (dm, data, tableName, query, position) {\n if (isNullOrUndefined(position)) {\n return dm.dataSource.json.push(data);\n }\n else {\n return dm.dataSource.json.splice(position, 0, data);\n }\n };\n /**\n * Remove the data from the dataSource based on the key field value.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n * @returns null\n */\n JsonAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n var ds = dm.dataSource.json;\n var i;\n if (typeof value === 'object' && !(value instanceof Date)) {\n value = DataUtil.getObject(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (DataUtil.getObject(keyField, ds[i]) === value) {\n break;\n }\n }\n return i !== ds.length ? ds.splice(i, 1) : null;\n };\n /**\n * Updates existing record and saves the changes to the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n * @returns null\n */\n JsonAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n var ds = dm.dataSource.json;\n var i;\n var key;\n if (!isNullOrUndefined(keyField)) {\n key = getValue(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (!isNullOrUndefined(keyField) && (getValue(keyField, ds[i])) === key) {\n break;\n }\n }\n return i < ds.length ? merge(ds[i], value) : null;\n };\n return JsonAdaptor;\n}(Adaptor));\nexport { JsonAdaptor };\n/**\n * URL Adaptor of DataManager can be used when you are required to use remote service to retrieve data.\n * It interacts with server-side for all DataManager Queries and CRUD operations.\n *\n * @hidden\n */\nvar UrlAdaptor = /** @class */ (function (_super) {\n __extends(UrlAdaptor, _super);\n function UrlAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Process the query to generate request body.\n *\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @param hierarchyFilters\n * @returns p\n */\n // tslint:disable-next-line:max-func-body-length\n UrlAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var queries = this.getQueryRequest(query);\n var singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n var params = query.params;\n var url = dm.dataSource.url;\n var temp;\n var skip;\n var take = null;\n var options = this.options;\n var request = { sorts: [], groups: [], filters: [], searches: [], aggregates: [] };\n // calc Paging & Range\n if ('onPage' in singles) {\n temp = singles.onPage;\n skip = DataUtil.getValue(temp.pageIndex, query);\n take = DataUtil.getValue(temp.pageSize, query);\n skip = (skip - 1) * take;\n }\n else if ('onRange' in singles) {\n temp = singles.onRange;\n skip = temp.start;\n take = temp.end - temp.start;\n }\n // Sorting\n for (var i = 0; i < queries.sorts.length; i++) {\n temp = DataUtil.getValue(queries.sorts[i].e.fieldName, query);\n request.sorts.push(DataUtil.callAdaptorFunction(this, 'onEachSort', { name: temp, direction: queries.sorts[i].e.direction }, query));\n }\n // hierarchy\n if (hierarchyFilters) {\n temp = this.getFiltersFrom(hierarchyFilters, query);\n if (temp) {\n request.filters.push(DataUtil.callAdaptorFunction(this, 'onEachWhere', temp.toJson(), query));\n }\n }\n // Filters\n for (var i = 0; i < queries.filters.length; i++) {\n var res = DataUtil.callAdaptorFunction(this, 'onEachWhere', queries.filters[i].e.toJson(), query);\n if ((this.getModuleName &&\n this.getModuleName() === 'ODataV4Adaptor') &&\n !isNullOrUndefined(queries.filters[i].e.key) && queries.filters.length > 1) {\n res = '(' + res + ')';\n }\n request.filters.push(res);\n var keys_3 = typeof request.filters[i] === 'object' ? Object.keys(request.filters[i]) : [];\n for (var _i = 0, keys_1 = keys_3; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n if (DataUtil.isNull((request)[prop])) {\n delete request[prop];\n }\n }\n }\n // Searches\n for (var i = 0; i < queries.searches.length; i++) {\n temp = queries.searches[i].e;\n request.searches.push(DataUtil.callAdaptorFunction(this, 'onEachSearch', {\n fields: temp.fieldNames,\n operator: temp.operator,\n key: temp.searchKey,\n ignoreCase: temp.ignoreCase\n }, query));\n }\n // Grouping\n for (var i = 0; i < queries.groups.length; i++) {\n request.groups.push(DataUtil.getValue(queries.groups[i].e.fieldName, query));\n }\n // aggregates\n for (var i = 0; i < queries.aggregates.length; i++) {\n temp = queries.aggregates[i].e;\n request.aggregates.push({ type: temp.type, field: DataUtil.getValue(temp.field, query) });\n }\n var req = {};\n this.getRequestQuery(options, query, singles, request, req);\n // Params\n DataUtil.callAdaptorFunction(this, 'addParams', { dm: dm, query: query, params: params, reqParams: req });\n if (query.lazyLoad.length) {\n for (var i = 0; i < query.lazyLoad.length; i++) {\n req[query.lazyLoad[i].key] = query.lazyLoad[i].value;\n }\n }\n // cleanup\n var keys = Object.keys(req);\n for (var _a = 0, keys_2 = keys; _a < keys_2.length; _a++) {\n var prop = keys_2[_a];\n if (DataUtil.isNull(req[prop]) || req[prop] === '' || req[prop].length === 0) {\n delete req[prop];\n }\n }\n if (!(options.skip in req && options.take in req) && take !== null) {\n req[options.skip] = DataUtil.callAdaptorFunction(this, 'onSkip', skip, query);\n req[options.take] = DataUtil.callAdaptorFunction(this, 'onTake', take, query);\n }\n var p = this.pvt;\n this.pvt = {};\n if (this.options.requestType === 'json') {\n return {\n data: JSON.stringify(req, DataUtil.parse.jsonDateReplacer),\n url: url,\n pvtData: p,\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n }\n temp = this.convertToQueryString(req, query, dm);\n temp = (dm.dataSource.url.indexOf('?') !== -1 ? '&' : '/') + temp;\n return {\n type: 'GET', url: temp.length ? url.replace(/\\/*$/, temp) : url, pvtData: p\n };\n };\n UrlAdaptor.prototype.getRequestQuery = function (options, query, singles, request, request1) {\n var param = 'param';\n var req = request1;\n req[options.from] = query.fromTable;\n if (options.apply && query.distincts.length) {\n req[options.apply] = 'onDistinct' in this ? DataUtil.callAdaptorFunction(this, 'onDistinct', query.distincts) : '';\n }\n if (!query.distincts.length && options.expand) {\n req[options.expand] = 'onExpand' in this && 'onSelect' in singles ?\n DataUtil.callAdaptorFunction(this, 'onExpand', { selects: DataUtil.getValue(singles.onSelect.fieldNames, query), expands: query.expands }, query) : query.expands;\n }\n req[options.select] = 'onSelect' in singles && !query.distincts.length ?\n DataUtil.callAdaptorFunction(this, 'onSelect', DataUtil.getValue(singles.onSelect.fieldNames, query), query) : '';\n req[options.count] = query.isCountRequired ? DataUtil.callAdaptorFunction(this, 'onCount', query.isCountRequired, query) : '';\n req[options.search] = request.searches.length ? DataUtil.callAdaptorFunction(this, 'onSearch', request.searches, query) : '';\n req[options.skip] = 'onSkip' in singles ?\n DataUtil.callAdaptorFunction(this, 'onSkip', DataUtil.getValue(singles.onSkip.nos, query), query) : '';\n req[options.take] = 'onTake' in singles ?\n DataUtil.callAdaptorFunction(this, 'onTake', DataUtil.getValue(singles.onTake.nos, query), query) : '';\n req[options.where] = request.filters.length || request.searches.length ?\n DataUtil.callAdaptorFunction(this, 'onWhere', request.filters, query) : '';\n req[options.sortBy] = request.sorts.length ? DataUtil.callAdaptorFunction(this, 'onSortBy', request.sorts, query) : '';\n req[options.group] = request.groups.length ? DataUtil.callAdaptorFunction(this, 'onGroup', request.groups, query) : '';\n req[options.aggregates] = request.aggregates.length ?\n DataUtil.callAdaptorFunction(this, 'onAggregates', request.aggregates, query) : '';\n req[param] = [];\n };\n /**\n * Convert the object from processQuery to string which can be added query string.\n *\n * @param {Object} req\n * @param request\n * @param {Query} query\n * @param {DataManager} dm\n */\n UrlAdaptor.prototype.convertToQueryString = function (request, query, dm) {\n return '';\n // this needs to be overridden\n };\n /**\n * Return the data from the data manager processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Object} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n */\n UrlAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n if (xhr && xhr.getResponseHeader('Content-Type') &&\n xhr.getResponseHeader('Content-Type').indexOf('application/json') !== -1) {\n var handleTimeZone = DataUtil.timeZoneHandling;\n if (ds && !ds.timeZoneHandling) {\n DataUtil.timeZoneHandling = false;\n }\n data = DataUtil.parse.parseJson(data);\n DataUtil.timeZoneHandling = handleTimeZone;\n }\n var requests = request;\n var pvt = requests.pvtData || {};\n var groupDs = data ? data.groupDs : [];\n if (xhr && xhr.getResponseHeader('Content-Type') &&\n xhr.getResponseHeader('Content-Type').indexOf('xml') !== -1) {\n return (query.isCountRequired ? { result: [], count: 0 } : []);\n }\n var d = JSON.parse(requests.data);\n if (d && d.action === 'batch' && data && data.addedRecords) {\n changes.addedRecords = data.addedRecords;\n return changes;\n }\n if (data && data.d) {\n data = data.d;\n }\n var args = {};\n if (data && 'count' in data) {\n args.count = data.count;\n }\n args.result = data && data.result ? data.result : data;\n var isExpand = false;\n if (Array.isArray(data.result) && data.result.length) {\n var key = 'key';\n var val = 'value';\n var level = 'level';\n if (!isNullOrUndefined(data.result[0][key])) {\n args.result = this.formRemoteGroupedData(args.result, 1, pvt.groups.length - 1);\n }\n if (query && query.lazyLoad.length && pvt.groups.length) {\n for (var i = 0; i < query.lazyLoad.length; i++) {\n if (query.lazyLoad[i][key] === 'onDemandGroupInfo') {\n var value = query.lazyLoad[i][val][level];\n if (pvt.groups.length === value) {\n isExpand = true;\n }\n }\n }\n }\n }\n if (!isExpand) {\n this.getAggregateResult(pvt, data, args, groupDs, query);\n }\n return DataUtil.isNull(args.count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n UrlAdaptor.prototype.formRemoteGroupedData = function (data, level, childLevel) {\n for (var i = 0; i < data.length; i++) {\n if (data[i].items.length && Object.keys(data[i].items[0]).indexOf('key') > -1) {\n this.formRemoteGroupedData(data[i].items, level + 1, childLevel - 1);\n }\n }\n var uid = 'GroupGuid';\n var childLvl = 'childLevels';\n var lvl = 'level';\n var records = 'records';\n data[uid] = consts[uid];\n data[lvl] = level;\n data[childLvl] = childLevel;\n data[records] = data[0].items.length ? this.getGroupedRecords(data, !isNullOrUndefined(data[0].items[records])) : [];\n return data;\n };\n UrlAdaptor.prototype.getGroupedRecords = function (data, hasRecords) {\n var childGroupedRecords = [];\n var records = 'records';\n for (var i = 0; i < data.length; i++) {\n if (!hasRecords) {\n for (var j = 0; j < data[i].items.length; j++) {\n childGroupedRecords.push(data[i].items[j]);\n }\n }\n else {\n childGroupedRecords = childGroupedRecords.concat(data[i].items[records]);\n }\n }\n return childGroupedRecords;\n };\n /**\n * Add the group query to the adaptor`s option.\n *\n * @param {Object[]} e\n * @returns void\n */\n UrlAdaptor.prototype.onGroup = function (e) {\n this.pvt.groups = e;\n return e;\n };\n /**\n * Add the aggregate query to the adaptor`s option.\n *\n * @param {Aggregates[]} e\n * @returns void\n */\n UrlAdaptor.prototype.onAggregates = function (e) {\n this.pvt.aggregates = e;\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\n * @param query\n * @param original\n */\n UrlAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var url;\n var key;\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.removeUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e[url],\n key: e[key]\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @returns void\n */\n UrlAdaptor.prototype.beforeSend = function (dm, request) {\n // need to extend this method\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName\n * @param query\n */\n UrlAdaptor.prototype.insert = function (dm, data, tableName, query) {\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number|string} value\n * @param {string} tableName\n * @param query\n */\n UrlAdaptor.prototype.remove = function (dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: value,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Prepare and return request body which is used to update record.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n * @param query\n */\n UrlAdaptor.prototype.update = function (dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: value,\n action: 'update',\n keyColumn: keyField,\n key: DataUtil.getObject(keyField, value),\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * To generate the predicate based on the filtered query.\n *\n * @param {Object[]|string[]|number[]} data\n * @param {Query} query\n * @hidden\n */\n UrlAdaptor.prototype.getFiltersFrom = function (data, query) {\n var key = query.fKey;\n var value;\n var prop = key;\n var pKey = query.key;\n var predicats = [];\n if (typeof data[0] !== 'object') {\n prop = null;\n }\n for (var i = 0; i < data.length; i++) {\n if (typeof data[0] === 'object') {\n value = DataUtil.getObject(pKey || prop, data[i]);\n }\n else {\n value = data[i];\n }\n predicats.push(new Predicate(key, 'equal', value));\n }\n return Predicate.or(predicats);\n };\n UrlAdaptor.prototype.getAggregateResult = function (pvt, data, args, groupDs, query) {\n var pData = data;\n if (data && data.result) {\n pData = data.result;\n }\n if (pvt && pvt.aggregates && pvt.aggregates.length) {\n var agg = pvt.aggregates;\n var fn = void 0;\n var aggregateData = pData;\n var res = {};\n if (data.aggregate) {\n aggregateData = data.aggregate;\n }\n for (var i = 0; i < agg.length; i++) {\n fn = DataUtil.aggregates[agg[i].type];\n if (fn) {\n res[agg[i].field + ' - ' + agg[i].type] = fn(aggregateData, agg[i].field);\n }\n }\n args.aggregates = res;\n }\n var key = 'key';\n var isServerGrouping = Array.isArray(data.result) && data.result.length && !isNullOrUndefined(data.result[0][key]);\n if (pvt && pvt.groups && pvt.groups.length && !isServerGrouping) {\n var groups = pvt.groups;\n for (var i = 0; i < groups.length; i++) {\n var level = null;\n if (!isNullOrUndefined(groupDs)) {\n groupDs = DataUtil.group(groupDs, groups[i]);\n }\n var groupQuery = Query.filterQueries(query.queries, 'onGroup')[i].e;\n pData = DataUtil.group(pData, groups[i], pvt.aggregates, level, groupDs, groupQuery.comparer);\n }\n args.result = pData;\n }\n return args;\n };\n UrlAdaptor.prototype.getQueryRequest = function (query) {\n var req = { sorts: [], groups: [], filters: [], searches: [], aggregates: [] };\n req.sorts = Query.filterQueries(query.queries, 'onSortBy');\n req.groups = Query.filterQueries(query.queries, 'onGroup');\n req.filters = Query.filterQueries(query.queries, 'onWhere');\n req.searches = Query.filterQueries(query.queries, 'onSearch');\n req.aggregates = Query.filterQueries(query.queries, 'onAggregates');\n return req;\n };\n UrlAdaptor.prototype.addParams = function (options) {\n var req = options.reqParams;\n if (options.params.length) {\n req.params = {};\n }\n for (var _i = 0, _a = options.params; _i < _a.length; _i++) {\n var tmp = _a[_i];\n if (req[tmp.key]) {\n throw new Error('Query() - addParams: Custom Param is conflicting other request arguments');\n }\n req[tmp.key] = tmp.value;\n if (tmp.fn) {\n req[tmp.key] = tmp.fn.call(options.query, tmp.key, options.query, options.dm);\n }\n req.params[tmp.key] = req[tmp.key];\n }\n };\n return UrlAdaptor;\n}(Adaptor));\nexport { UrlAdaptor };\n/**\n * OData Adaptor that is extended from URL Adaptor, is used for consuming data through OData Service.\n *\n * @hidden\n */\nvar ODataAdaptor = /** @class */ (function (_super) {\n __extends(ODataAdaptor, _super);\n function ODataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n requestType: 'get',\n accept: 'application/json;odata=light;q=1,application/json;odata=verbose;q=0.5',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$inlinecount',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PUT'\n });\n extend(_this.options, props || {});\n return _this;\n }\n ODataAdaptor.prototype.getModuleName = function () {\n return 'ODataAdaptor';\n };\n /**\n * Generate request string based on the filter criteria from query.\n *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param requiresCast\n */\n ODataAdaptor.prototype.onPredicate = function (predicate, query, requiresCast) {\n var returnValue = '';\n var operator;\n var guid;\n var val = predicate.value;\n var type = typeof val;\n var field = predicate.field ? ODataAdaptor.getField(predicate.field) : null;\n if (val instanceof Date) {\n val = 'datetime\\'' + DataUtil.parse.replacer(val) + '\\'';\n }\n if (type === 'string') {\n val = val.replace(/'/g, '\\'\\'');\n if (predicate.ignoreCase) {\n val = val.toLowerCase();\n }\n if (predicate.operator !== 'like') {\n val = encodeURIComponent(val);\n }\n if (predicate.operator !== 'wildcard' && predicate.operator !== 'like') {\n val = '\\'' + val + '\\'';\n }\n if (requiresCast) {\n field = 'cast(' + field + ', \\'Edm.String\\')';\n }\n if (DataUtil.parse.isGuid(val)) {\n guid = 'guid';\n }\n if (predicate.ignoreCase) {\n if (!guid) {\n field = 'tolower(' + field + ')';\n }\n val = val.toLowerCase();\n }\n }\n if (predicate.operator === 'isempty' || predicate.operator === 'isnull' || predicate.operator === 'isnotempty' ||\n predicate.operator === 'isnotnull') {\n operator = predicate.operator.indexOf('isnot') !== -1 ? DataUtil.odBiOperator['notequal'] : DataUtil.odBiOperator['equal'];\n val = predicate.operator === 'isnull' || predicate.operator === 'isnotnull' ? null : '\\'\\'';\n }\n else {\n operator = DataUtil.odBiOperator[predicate.operator];\n }\n if (operator) {\n returnValue += field;\n returnValue += operator;\n if (guid) {\n returnValue += guid;\n }\n return returnValue + val;\n }\n if (!isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor') {\n operator = DataUtil.odv4UniOperator[predicate.operator];\n }\n else {\n operator = DataUtil.odUniOperator[predicate.operator];\n }\n if (operator === 'like') {\n val = val;\n if (val.indexOf('%') !== -1) {\n if (val.charAt(0) === '%' && val.lastIndexOf('%') < 2) {\n val = val.substring(1, val.length);\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['startswith'] : DataUtil.odUniOperator['startswith'];\n }\n else if (val.charAt(val.length - 1) === '%' && val.indexOf('%') > val.length - 3) {\n val = val.substring(0, val.length - 1);\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['endswith'] : DataUtil.odUniOperator['endswith'];\n }\n else if (val.lastIndexOf('%') !== val.indexOf('%') && val.lastIndexOf('%') > val.indexOf('%') + 1) {\n val = val.substring(val.indexOf('%') + 1, val.lastIndexOf('%'));\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n }\n else {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n }\n }\n val = encodeURIComponent(val);\n val = '\\'' + val + '\\'';\n }\n else if (operator === 'wildcard') {\n val = val;\n if (val.indexOf('*') !== -1) {\n var splittedStringValue = val.split('*');\n var splittedValue = void 0;\n var count = 0;\n if (val.indexOf('*') !== 0 && splittedStringValue[0].indexOf('%3f') === -1 &&\n splittedStringValue[0].indexOf('?') === -1) {\n splittedValue = splittedStringValue[0];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['startswith'] : DataUtil.odUniOperator['startswith'];\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n if (val.lastIndexOf('*') !== val.length - 1 && splittedStringValue[splittedStringValue.length - 1].indexOf('%3f') === -1 &&\n splittedStringValue[splittedStringValue.length - 1].indexOf('?') === -1) {\n splittedValue = splittedStringValue[splittedStringValue.length - 1];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['endswith'] : DataUtil.odUniOperator['endswith'];\n if (count > 0) {\n returnValue += ' and ';\n }\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n if (splittedStringValue.length > 2) {\n for (var i = 1; i < splittedStringValue.length - 1; i++) {\n if (splittedStringValue[i].indexOf('%3f') === -1 && splittedStringValue[i].indexOf('?') === -1) {\n splittedValue = splittedStringValue[i];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (count > 0) {\n returnValue += ' and ';\n }\n if (operator === 'substringof' || operator === 'not substringof') {\n var temp = splittedValue;\n splittedValue = field;\n field = temp;\n }\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n }\n }\n if (count === 0) {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (val.indexOf('?') !== -1 || val.indexOf('%3f') !== -1) {\n val = val.indexOf('?') !== -1 ? val.split('?').join('') : val.split('%3f').join('');\n }\n val = '\\'' + val + '\\'';\n }\n else {\n operator = 'wildcard';\n }\n }\n else {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (val.indexOf('?') !== -1 || val.indexOf('%3f') !== -1) {\n val = val.indexOf('?') !== -1 ? val.split('?').join('') : val.split('%3f').join('');\n }\n val = '\\'' + val + '\\'';\n }\n }\n if (operator === 'substringof' || operator === 'not substringof') {\n var temp = val;\n val = field;\n field = temp;\n }\n if (operator !== 'wildcard') {\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += val + ')';\n }\n return returnValue;\n };\n ODataAdaptor.prototype.addParams = function (options) {\n _super.prototype.addParams.call(this, options);\n delete options.reqParams.params;\n };\n /**\n * Generate request string based on the multiple filter criteria from query.\n *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param requiresCast\n */\n ODataAdaptor.prototype.onComplexPredicate = function (predicate, query, requiresCast) {\n var res = [];\n for (var i = 0; i < predicate.predicates.length; i++) {\n res.push('(' + this.onEachWhere(predicate.predicates[i], query, requiresCast) + ')');\n }\n return res.join(' ' + predicate.condition + ' ');\n };\n /**\n * Generate query string based on the multiple filter criteria from query.\n *\n * @param {Predicate} filter\n * @param {boolean} requiresCast?\n * @param query\n * @param requiresCast\n */\n ODataAdaptor.prototype.onEachWhere = function (filter, query, requiresCast) {\n return filter.isComplex ? this.onComplexPredicate(filter, query, requiresCast) : this.onPredicate(filter, query, requiresCast);\n };\n /**\n * Generate query string based on the multiple filter criteria from query.\n *\n * @param {string[]} filters\n */\n ODataAdaptor.prototype.onWhere = function (filters) {\n if (this.pvt.search) {\n filters.push(this.onEachWhere(this.pvt.search, null, true));\n }\n return filters.join(' and ');\n };\n /**\n * Generate query string based on the multiple search criteria from query.\n *\n * @param e\n * @param {string} operator\n * @param {string} key\n * @param {boolean} } ignoreCase\n * @param e.fields\n * @param e.operator\n * @param e.key\n * @param e.ignoreCase\n */\n ODataAdaptor.prototype.onEachSearch = function (e) {\n if (e.fields && e.fields.length === 0) {\n DataUtil.throwError('Query() - Search : oData search requires list of field names to search');\n }\n var filter = this.pvt.search || [];\n for (var i = 0; i < e.fields.length; i++) {\n filter.push(new Predicate(e.fields[i], e.operator, e.key, e.ignoreCase));\n }\n this.pvt.search = filter;\n };\n /**\n * Generate query string based on the search criteria from query.\n *\n * @param {Object} e\n */\n ODataAdaptor.prototype.onSearch = function (e) {\n this.pvt.search = Predicate.or(this.pvt.search);\n return '';\n };\n /**\n * Generate query string based on multiple sort criteria from query.\n *\n * @param {QueryOptions} e\n */\n ODataAdaptor.prototype.onEachSort = function (e) {\n var res = [];\n if (e.name instanceof Array) {\n for (var i = 0; i < e.name.length; i++) {\n res.push(ODataAdaptor.getField(e.name[i]) + (e.direction === 'descending' ? ' desc' : ''));\n }\n }\n else {\n res.push(ODataAdaptor.getField(e.name) + (e.direction === 'descending' ? ' desc' : ''));\n }\n return res.join(',');\n };\n /**\n * Returns sort query string.\n *\n * @param {string[]} e\n */\n ODataAdaptor.prototype.onSortBy = function (e) {\n return e.reverse().join(',');\n };\n /**\n * Adds the group query to the adaptor option.\n *\n * @param {Object[]} e\n * @returns string\n */\n ODataAdaptor.prototype.onGroup = function (e) {\n this.pvt.groups = e;\n return [];\n };\n /**\n * Returns the select query string.\n *\n * @param {string[]} e\n */\n ODataAdaptor.prototype.onSelect = function (e) {\n for (var i = 0; i < e.length; i++) {\n e[i] = ODataAdaptor.getField(e[i]);\n }\n return e.join(',');\n };\n /**\n * Add the aggregate query to the adaptor option.\n *\n * @param {Object[]} e\n * @returns string\n */\n ODataAdaptor.prototype.onAggregates = function (e) {\n this.pvt.aggregates = e;\n return '';\n };\n /**\n * Returns the query string which requests total count from the data source.\n *\n * @param {boolean} e\n * @returns string\n */\n ODataAdaptor.prototype.onCount = function (e) {\n return e === true ? 'allpages' : '';\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings?\n * @param settings\n */\n ODataAdaptor.prototype.beforeSend = function (dm, request, settings) {\n if (DataUtil.endsWith(settings.url, this.options.batch) && settings.type.toLowerCase() === 'post') {\n request.setRequestHeader('Accept', this.options.multipartAccept);\n request.setRequestHeader('DataServiceVersion', '2.0');\n request.overrideMimeType('text/plain; charset=x-user-defined');\n }\n else {\n request.setRequestHeader('Accept', this.options.accept);\n }\n request.setRequestHeader('DataServiceVersion', '2.0');\n request.setRequestHeader('MaxDataServiceVersion', '2.0');\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n * @returns aggregateResult\n */\n ODataAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaCheck = 'odata.metadata';\n if ((request && request.type === 'GET') && !this.rootUrl && data[metaCheck]) {\n var dataUrls = data[metaCheck].split('/$metadata#');\n this.rootUrl = dataUrls[0];\n this.resourceTableName = dataUrls[1];\n }\n var pvtData = 'pvtData';\n if (!isNullOrUndefined(data.d)) {\n var dataCopy = ((query && query.isCountRequired) ? data.d.results : data.d);\n var metaData = '__metadata';\n if (!isNullOrUndefined(dataCopy)) {\n for (var i = 0; i < dataCopy.length; i++) {\n if (!isNullOrUndefined(dataCopy[i][metaData])) {\n delete dataCopy[i][metaData];\n }\n }\n }\n }\n var pvt = request && request[pvtData];\n var emptyAndBatch = this.processBatchResponse(data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n var versionCheck = xhr && request.getResponseHeader('DataServiceVersion');\n var count = null;\n var version = (versionCheck && parseInt(versionCheck, 10)) || 2;\n if (query && query.isCountRequired) {\n var oDataCount = '__count';\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n if (data.d) {\n data = data.d;\n }\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n }\n if (version === 3 && data.value) {\n data = data.value;\n }\n if (data.d) {\n data = data.d;\n }\n if (version < 3 && data.results) {\n data = data.results;\n }\n var args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n /**\n * Converts the request object to query string.\n *\n * @param {Object} req\n * @param request\n * @param {Query} query\n * @param {DataManager} dm\n * @returns tableName\n */\n ODataAdaptor.prototype.convertToQueryString = function (request, query, dm) {\n var res = [];\n var table = 'table';\n var tableName = request[table] || '';\n var format = '$format';\n delete request[table];\n if (dm.dataSource.requiresFormat) {\n request[format] = 'json';\n }\n var keys = Object.keys(request);\n for (var _i = 0, keys_4 = keys; _i < keys_4.length; _i++) {\n var prop = keys_4[_i];\n res.push(prop + '=' + request[prop]);\n }\n res = res.join('&');\n if (dm.dataSource.url && dm.dataSource.url.indexOf('?') !== -1 && !tableName) {\n return res;\n }\n return res.length ? tableName + '?' + res : tableName || '';\n };\n ODataAdaptor.prototype.localTimeReplacer = function (key, convertObj) {\n for (var _i = 0, _a = !isNullOrUndefined(convertObj) ? Object.keys(convertObj) : []; _i < _a.length; _i++) {\n var prop = _a[_i];\n if ((convertObj[prop] instanceof Date)) {\n convertObj[prop] = DataUtil.dateParse.toLocalTime(convertObj[prop]);\n }\n }\n return convertObj;\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param tableName\n */\n ODataAdaptor.prototype.insert = function (dm, data, tableName) {\n return {\n url: (dm.dataSource.insertUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : ''),\n data: JSON.stringify(data, this.options.localTime ? this.localTimeReplacer : null)\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n * @param tableName\n */\n ODataAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n var url;\n if (typeof value === 'string' && !DataUtil.parse.isGuid(value)) {\n url = \"('\" + value + \"')\";\n }\n else {\n url = \"(\" + value + \")\";\n }\n return {\n type: 'DELETE',\n url: (dm.dataSource.removeUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url\n };\n };\n /**\n * Updates existing record and saves the changes to the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n * @param query\n * @param original\n * @returns this\n */\n ODataAdaptor.prototype.update = function (dm, keyField, value, tableName, query, original) {\n if (this.options.updateType === 'PATCH' && !isNullOrUndefined(original)) {\n value = this.compareAndRemove(value, original, keyField);\n }\n var url;\n if (typeof value[keyField] === 'string' && !DataUtil.parse.isGuid(value[keyField])) {\n url = \"('\" + value[keyField] + \"')\";\n }\n else {\n url = \"(\" + value[keyField] + \")\";\n }\n return {\n type: this.options.updateType,\n url: (dm.dataSource.updateUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url,\n data: JSON.stringify(value, this.options.localTime ? this.localTimeReplacer : null),\n accept: this.options.accept\n };\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n * @param query\n * @param original\n * @returns {Object}\n */\n ODataAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n var url = this.rootUrl ? this.rootUrl + '/' + this.options.batch :\n dm.dataSource.url.replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n var args = {\n url: e.url,\n key: e.key,\n cid: 1,\n cSet: DataUtil.getGuid(this.options.changeSet)\n };\n var req = '--' + initialGuid + '\\n';\n req += 'Content-Type: multipart/mixed; boundary=' + args.cSet.replace('--', '') + '\\n';\n this.pvt.changeSet = 0;\n req += this.generateInsertRequest(changes.addedRecords, args, dm);\n req += this.generateUpdateRequest(changes.changedRecords, args, dm, original ? original.changedRecords : []);\n req += this.generateDeleteRequest(changes.deletedRecords, args, dm);\n req += args.cSet + '--\\n';\n req += '--' + initialGuid + '--';\n return {\n type: 'POST',\n url: url,\n dataType: 'json',\n contentType: 'multipart/mixed; charset=UTF-8;boundary=' + initialGuid,\n data: req\n };\n };\n /**\n * Generate the string content from the removed records.\n * The result will be send during batch update.\n *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\n * @returns this\n */\n ODataAdaptor.prototype.generateDeleteRequest = function (arr, e, dm) {\n if (!arr) {\n return '';\n }\n var req = '';\n var stat = {\n 'method': 'DELETE ',\n 'url': function (data, i, key) {\n var url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '(' + url + ')';\n }\n else if (url instanceof Date) {\n var dateTime = data[i][key];\n return '(' + dateTime.toJSON() + ')';\n }\n else {\n return \"('\" + url + \"')\";\n }\n },\n 'data': function (data, i) { return ''; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req + '\\n';\n };\n /**\n * Generate the string content from the inserted records.\n * The result will be send during batch update.\n *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\n */\n ODataAdaptor.prototype.generateInsertRequest = function (arr, e, dm) {\n if (!arr) {\n return '';\n }\n var req = '';\n var stat = {\n 'method': 'POST ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n };\n /**\n * Generate the string content from the updated records.\n * The result will be send during batch update.\n *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\n * @param org\n */\n ODataAdaptor.prototype.generateUpdateRequest = function (arr, e, dm, org) {\n var _this = this;\n if (!arr) {\n return '';\n }\n var req = '';\n arr.forEach(function (change) { return change = _this.compareAndRemove(change, org.filter(function (o) { return DataUtil.getObject(e.key, o) === DataUtil.getObject(e.key, change); })[0], e.key); });\n var stat = {\n 'method': this.options.updateType + ' ',\n 'url': function (data, i, key) {\n if (typeof data[i][key] === 'number' || DataUtil.parse.isGuid(data[i][key])) {\n return '(' + data[i][key] + ')';\n }\n else if (data[i][key] instanceof Date) {\n var date = data[i][key];\n return '(' + date.toJSON() + ')';\n }\n else {\n return \"('\" + data[i][key] + \"')\";\n }\n },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n };\n ODataAdaptor.getField = function (prop) {\n return prop.replace(/\\./g, '/');\n };\n ODataAdaptor.prototype.generateBodyContent = function (arr, e, stat, dm) {\n var req = '';\n for (var i = 0; i < arr.length; i++) {\n req += '\\n' + e.cSet + '\\n';\n req += this.options.changeSetContent + '\\n\\n';\n req += stat.method;\n if (stat.method === 'POST ') {\n req += (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n else if (stat.method === 'PUT ' || stat.method === 'PATCH ') {\n req += (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n else if (stat.method === 'DELETE ') {\n req += (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n req += 'Accept: ' + this.options.accept + '\\n';\n req += 'Content-Id: ' + this.pvt.changeSet++ + '\\n';\n req += this.options.batchChangeSetContentType + '\\n';\n if (!isNullOrUndefined(arr[i]['@odata.etag'])) {\n req += 'If-Match: ' + arr[i]['@odata.etag'] + '\\n\\n';\n delete arr[i]['@odata.etag'];\n }\n else {\n req += '\\n';\n }\n req += stat.data(arr, i);\n }\n return req;\n };\n ODataAdaptor.prototype.processBatchResponse = function (data, query, xhr, request, changes) {\n if (xhr && xhr.getResponseHeader('Content-Type') && xhr.getResponseHeader('Content-Type').indexOf('xml') !== -1) {\n return (query.isCountRequired ? { result: [], count: 0 } : []);\n }\n if (request && this.options.batch && DataUtil.endsWith(request.url, this.options.batch) && request.type.toLowerCase() === 'post') {\n var guid = xhr.getResponseHeader('Content-Type');\n var cIdx = void 0;\n var jsonObj = void 0;\n var d = data + '';\n guid = guid.substring(guid.indexOf('=batchresponse') + 1);\n d = d.split(guid);\n if (d.length < 2) {\n return {};\n }\n d = d[1];\n var exVal = /(?:\\bContent-Type.+boundary=)(changesetresponse.+)/i.exec(d);\n if (exVal) {\n d.replace(exVal[0], '');\n }\n var changeGuid = exVal ? exVal[1] : '';\n d = d.split(changeGuid);\n for (var i = d.length; i > -1; i--) {\n if (!/\\bContent-ID:/i.test(d[i]) || !/\\bHTTP.+201/.test(d[i])) {\n continue;\n }\n cIdx = parseInt(/\\bContent-ID: (\\d+)/i.exec(d[i])[1], 10);\n if (changes.addedRecords[cIdx]) {\n jsonObj = DataUtil.parse.parseJson(/^\\{.+\\}/m.exec(d[i])[0]);\n extend({}, changes.addedRecords[cIdx], this.processResponse(jsonObj));\n }\n }\n return changes;\n }\n return null;\n };\n ODataAdaptor.prototype.compareAndRemove = function (data, original, key) {\n var _this = this;\n if (isNullOrUndefined(original)) {\n return data;\n }\n Object.keys(data).forEach(function (prop) {\n if (prop !== key && prop !== '@odata.etag') {\n if (DataUtil.isPlainObject(data[prop])) {\n _this.compareAndRemove(data[prop], original[prop]);\n var final = Object.keys(data[prop]).filter(function (data) { return data !== '@odata.etag'; });\n if (final.length === 0) {\n delete data[prop];\n }\n }\n else if (data[prop] === original[prop]) {\n delete data[prop];\n }\n else if (data[prop] && original[prop] && data[prop].valueOf() === original[prop].valueOf()) {\n delete data[prop];\n }\n }\n });\n return data;\n };\n return ODataAdaptor;\n}(UrlAdaptor));\nexport { ODataAdaptor };\n/**\n * The OData v4 is an improved version of OData protocols.\n * The DataManager uses the ODataV4Adaptor to consume OData v4 services.\n *\n * @hidden\n */\nvar ODataV4Adaptor = /** @class */ (function (_super) {\n __extends(ODataV4Adaptor, _super);\n function ODataV4Adaptor(props) {\n var _this = _super.call(this, props) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n requestType: 'get',\n accept: 'application/json, text/javascript, */*; q=0.01',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$count',\n search: '$search',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PATCH',\n localTime: false,\n apply: '$apply'\n });\n extend(_this.options, props || {});\n return _this;\n }\n /**\n * @hidden\n */\n ODataV4Adaptor.prototype.getModuleName = function () {\n return 'ODataV4Adaptor';\n };\n /**\n * Returns the query string which requests total count from the data source.\n *\n * @param {boolean} e\n * @returns string\n */\n ODataV4Adaptor.prototype.onCount = function (e) {\n return e === true ? 'true' : '';\n };\n /**\n * Generate request string based on the filter criteria from query.\n *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param requiresCast\n */\n ODataV4Adaptor.prototype.onPredicate = function (predicate, query, requiresCast) {\n var returnValue = '';\n var val = predicate.value;\n var isDate = val instanceof Date;\n if (query instanceof Query) {\n var queries = this.getQueryRequest(query);\n for (var i = 0; i < queries.filters.length; i++) {\n if (queries.filters[i].e.key === predicate.value) {\n requiresCast = true;\n }\n }\n }\n returnValue = _super.prototype.onPredicate.call(this, predicate, query, requiresCast);\n if (isDate) {\n returnValue = returnValue.replace(/datetime'(.*)'$/, '$1');\n }\n if (DataUtil.parse.isGuid(val)) {\n returnValue = returnValue.replace('guid', '').replace(/'/g, '');\n }\n return returnValue;\n };\n /**\n * Generate query string based on the multiple search criteria from query.\n *\n * @param e\n * @param {string} operator\n * @param {string} key\n * @param {boolean} } ignoreCase\n * @param e.fields\n * @param e.operator\n * @param e.key\n * @param e.ignoreCase\n */\n ODataV4Adaptor.prototype.onEachSearch = function (e) {\n var search = this.pvt.searches || [];\n search.push(e.key);\n this.pvt.searches = search;\n };\n /**\n * Generate query string based on the search criteria from query.\n *\n * @param {Object} e\n */\n ODataV4Adaptor.prototype.onSearch = function (e) {\n return this.pvt.searches.join(' OR ');\n };\n /**\n * Returns the expand query string.\n *\n * @param {string} e\n * @param e.selects\n * @param e.expands\n */\n ODataV4Adaptor.prototype.onExpand = function (e) {\n var _this = this;\n var selected = {};\n var expanded = {};\n var expands = e.expands.slice();\n var exArr = [];\n var selects = e.selects.filter(function (item) { return item.indexOf('.') > -1; });\n selects.forEach(function (select) {\n var splits = select.split('.');\n if (!(splits[0] in selected)) {\n selected[splits[0]] = [];\n }\n if (splits.length === 2) {\n if (selected[splits[0]].length && Object.keys(selected).indexOf(splits[0]) !== -1) {\n if (selected[splits[0]][0].indexOf('$expand') !== -1 && selected[splits[0]][0].indexOf(';$select=') === -1) {\n selected[splits[0]][0] = selected[splits[0]][0] + ';' + '$select=' + splits[1];\n }\n else {\n selected[splits[0]][0] = selected[splits[0]][0] + ',' + splits[1];\n }\n }\n else {\n selected[splits[0]].push('$select=' + splits[1]);\n }\n }\n else {\n var sel = '$select=' + splits[splits.length - 1];\n var exp = '';\n var close_1 = '';\n for (var i = 1; i < splits.length - 1; i++) {\n exp = exp + '$expand=' + splits[i] + '(';\n close_1 = close_1 + ')';\n }\n var combineVal = exp + sel + close_1;\n if (selected[splits[0]].length && Object.keys(selected).indexOf(splits[0]) !== -1 &&\n _this.expandQueryIndex(selected[splits[0]], true)) {\n var idx = _this.expandQueryIndex(selected[splits[0]]);\n selected[splits[0]][idx] = selected[splits[0]][idx] + combineVal.replace('$expand=', ',');\n }\n else {\n selected[splits[0]].push(combineVal);\n }\n }\n });\n //Auto expand from select query\n Object.keys(selected).forEach(function (expand) {\n if ((expands.indexOf(expand) === -1)) {\n expands.push(expand);\n }\n });\n expands.forEach(function (expand) {\n expanded[expand] = expand in selected ? expand + \"(\" + selected[expand].join(';') + \")\" : expand;\n });\n Object.keys(expanded).forEach(function (ex) { return exArr.push(expanded[ex]); });\n return exArr.join(',');\n };\n ODataV4Adaptor.prototype.expandQueryIndex = function (query, isExpand) {\n for (var i = 0; i < query.length; i++) {\n if (query[i].indexOf('$expand') !== -1) {\n return isExpand ? true : i;\n }\n }\n return isExpand ? false : 0;\n };\n /**\n * Returns the groupby query string.\n *\n * @param {string} e\n * @param distinctFields\n */\n ODataV4Adaptor.prototype.onDistinct = function (distinctFields) {\n var fields = distinctFields.map(function (field) { return ODataAdaptor.getField(field); }).join(',');\n return \"groupby((\" + fields + \"))\";\n };\n /**\n * Returns the select query string.\n *\n * @param {string[]} e\n */\n ODataV4Adaptor.prototype.onSelect = function (e) {\n return _super.prototype.onSelect.call(this, e.filter(function (item) { return item.indexOf('.') === -1; }));\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings\n * @returns void\n */\n ODataV4Adaptor.prototype.beforeSend = function (dm, request, settings) {\n if (settings.type === 'POST' || settings.type === 'PUT' || settings.type === 'PATCH') {\n request.setRequestHeader('Prefer', 'return=representation');\n }\n request.setRequestHeader('Accept', this.options.accept);\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n * @returns aggregateResult\n */\n ODataV4Adaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaName = '@odata.context';\n var metaV4Name = '@context';\n if ((request && request.type === 'GET') && !this.rootUrl && (data[metaName] || data[metaV4Name])) {\n var dataUrl = data[metaName] ? data[metaName].split('/$metadata#') : data[metaV4Name].split('/$metadata#');\n this.rootUrl = dataUrl[0];\n this.resourceTableName = dataUrl[1];\n }\n var pvtData = 'pvtData';\n var pvt = request && request[pvtData];\n var emptyAndBatch = _super.prototype.processBatchResponse.call(this, data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n var count = null;\n var dataCount = '@odata.count';\n var dataV4Count = '@count';\n if (query && query.isCountRequired) {\n if (dataCount in data) {\n count = data[dataCount];\n }\n else if (dataV4Count in data) {\n count = data[dataV4Count];\n }\n }\n data = !isNullOrUndefined(data.value) ? data.value : data;\n var args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: count, aggregates: args.aggregates };\n };\n return ODataV4Adaptor;\n}(ODataAdaptor));\nexport { ODataV4Adaptor };\n/**\n * The Web API is a programmatic interface to define the request and response messages system that is mostly exposed in JSON or XML.\n * The DataManager uses the WebApiAdaptor to consume Web API.\n * Since this adaptor is targeted to interact with Web API created using OData endpoint, it is extended from ODataAdaptor\n *\n * @hidden\n */\nvar WebApiAdaptor = /** @class */ (function (_super) {\n __extends(WebApiAdaptor, _super);\n function WebApiAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n WebApiAdaptor.prototype.getModuleName = function () {\n return 'WebApiAdaptor';\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param tableName\n */\n WebApiAdaptor.prototype.insert = function (dm, data, tableName) {\n return {\n type: 'POST',\n url: dm.dataSource.url,\n data: JSON.stringify(data)\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n * @param tableName\n */\n WebApiAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n return {\n type: 'DELETE',\n url: dm.dataSource.url + '/' + value,\n data: JSON.stringify(value)\n };\n };\n /**\n * Prepare and return request body which is used to update record.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n */\n WebApiAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n return {\n type: 'PUT',\n url: dm.dataSource.url,\n data: JSON.stringify(value)\n };\n };\n WebApiAdaptor.prototype.batchRequest = function (dm, changes, e) {\n var _this = this;\n var initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n var url = dm.dataSource.url.replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n var req = [];\n var _loop_1 = function (i, x) {\n changes.addedRecords.forEach(function (j, d) {\n var stat = {\n 'method': 'POST ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('POST ' + '/api/' + (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url)\n + stat.url(changes.addedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //insertion\n for (var i = 0, x = changes.addedRecords.length; i < x; i++) {\n _loop_1(i, x);\n }\n var _loop_2 = function (i, x) {\n changes.changedRecords.forEach(function (j, d) {\n var stat = {\n 'method': _this.options.updateType + ' ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('PUT ' + '/api/' + (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url)\n + stat.url(changes.changedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //updation\n for (var i = 0, x = changes.changedRecords.length; i < x; i++) {\n _loop_2(i, x);\n }\n var _loop_3 = function (i, x) {\n changes.deletedRecords.forEach(function (j, d) {\n var state = {\n 'mtd': 'DELETE ',\n 'url': function (data, i, key) {\n var url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '/' + url;\n }\n else if (url instanceof Date) {\n var datTime = data[i][key];\n return '/' + datTime.toJSON();\n }\n else {\n return \"/'\" + url + \"'\";\n }\n },\n 'data': function (data, i) { return ''; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('DELETE ' + '/api/' + (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url)\n + state.url(changes.deletedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //deletion\n for (var i = 0, x = changes.deletedRecords.length; i < x; i++) {\n _loop_3(i, x);\n }\n req.push('--' + initialGuid + '--', '');\n return {\n type: 'POST',\n url: url,\n contentType: 'multipart/mixed; boundary=' + initialGuid,\n data: req.join('\\r\\n')\n };\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings\n * @returns void\n */\n WebApiAdaptor.prototype.beforeSend = function (dm, request, settings) {\n request.setRequestHeader('Accept', 'application/json, text/javascript, */*; q=0.01');\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n * @returns aggregateResult\n */\n WebApiAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var pvtData = 'pvtData';\n var pvt = request && request[pvtData];\n var count = null;\n var args = {};\n if (request && request.type.toLowerCase() !== 'post') {\n var versionCheck = xhr && request.getResponseHeader('DataServiceVersion');\n var version = (versionCheck && parseInt(versionCheck, 10)) || 2;\n if (query && query.isCountRequired) {\n if (!DataUtil.isNull(data.Count)) {\n count = data.Count;\n }\n }\n if (version < 3 && data.Items) {\n data = data.Items;\n }\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n }\n args.result = args.result || data;\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n return WebApiAdaptor;\n}(ODataAdaptor));\nexport { WebApiAdaptor };\n/**\n * WebMethodAdaptor can be used by DataManager to interact with web method.\n *\n * @hidden\n */\nvar WebMethodAdaptor = /** @class */ (function (_super) {\n __extends(WebMethodAdaptor, _super);\n function WebMethodAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Prepare the request body based on the query.\n * The query information can be accessed at the WebMethod using variable named `value`.\n *\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @param hierarchyFilters\n * @returns application\n */\n WebMethodAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var obj = new UrlAdaptor().processQuery(dm, query, hierarchyFilters);\n var getData = 'data';\n var data = DataUtil.parse.parseJson(obj[getData]);\n var result = {};\n var value = 'value';\n if (data.param) {\n for (var i = 0; i < data.param.length; i++) {\n var param = data.param[i];\n var key = Object.keys(param)[0];\n result[key] = param[key];\n }\n }\n result[value] = data;\n var pvtData = 'pvtData';\n var url = 'url';\n return {\n data: JSON.stringify(result),\n url: obj[url],\n pvtData: obj[pvtData],\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n };\n return WebMethodAdaptor;\n}(UrlAdaptor));\nexport { WebMethodAdaptor };\n/**\n * RemoteSaveAdaptor, extended from JsonAdaptor and it is used for binding local data and performs all DataManager queries in client-side.\n * It interacts with server-side only for CRUD operations.\n *\n * @hidden\n */\nvar RemoteSaveAdaptor = /** @class */ (function (_super) {\n __extends(RemoteSaveAdaptor, _super);\n /**\n * @hidden\n */\n function RemoteSaveAdaptor() {\n var _this = _super.call(this) || this;\n setValue('beforeSend', UrlAdaptor.prototype.beforeSend, _this);\n return _this;\n }\n RemoteSaveAdaptor.prototype.insert = function (dm, data, tableName, query, position) {\n this.pvt.position = position;\n this.updateType = 'add';\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.remove = function (dm, keyField, val, tableName, query) {\n _super.prototype.remove.call(this, dm, keyField, val);\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: val,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.update = function (dm, keyField, val, tableName, query) {\n this.updateType = 'update';\n this.updateKey = keyField;\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: val,\n action: 'update',\n keyColumn: keyField,\n key: val[keyField],\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes, e) {\n var i;\n var newData = request ? JSON.parse(request.data) : data;\n data = newData.action === 'batch' ? DataUtil.parse.parseJson(data) : data;\n if (this.updateType === 'add') {\n _super.prototype.insert.call(this, ds, data, null, null, this.pvt.position);\n }\n if (this.updateType === 'update') {\n _super.prototype.update.call(this, ds, this.updateKey, data);\n }\n this.updateType = undefined;\n if (data.added) {\n for (i = 0; i < data.added.length; i++) {\n _super.prototype.insert.call(this, ds, data.added[i]);\n }\n }\n if (data.changed) {\n for (i = 0; i < data.changed.length; i++) {\n _super.prototype.update.call(this, ds, e.key, data.changed[i]);\n }\n }\n if (data.deleted) {\n for (i = 0; i < data.deleted.length; i++) {\n _super.prototype.remove.call(this, ds, e.key, data.deleted[i]);\n }\n }\n return data;\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * Also perform the changes in the locally cached data to sync with the remote data.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n * @param query\n * @param original\n */\n RemoteSaveAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e.url,\n key: e.key\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.addParams = function (options) {\n var urlParams = new UrlAdaptor();\n urlParams.addParams(options);\n };\n return RemoteSaveAdaptor;\n}(JsonAdaptor));\nexport { RemoteSaveAdaptor };\n/**\n * Ajax Adaptor that is extended from URL Adaptor, is used for handle data operations with user defined functions.\n *\n * @hidden\n */\nvar CustomDataAdaptor = /** @class */ (function (_super) {\n __extends(CustomDataAdaptor, _super);\n function CustomDataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n getData: function () { },\n addRecord: function () { },\n updateRecord: function () { },\n deleteRecord: function () { },\n batchUpdate: function () { }\n });\n extend(_this.options, props || {});\n return _this;\n }\n CustomDataAdaptor.prototype.getModuleName = function () {\n return 'CustomDataAdaptor';\n };\n return CustomDataAdaptor;\n}(UrlAdaptor));\nexport { CustomDataAdaptor };\n/**\n * The GraphqlAdaptor that is extended from URL Adaptor, is used for retrieving data from the Graphql server.\n * It interacts with the Graphql server with all the DataManager Queries and performs CRUD operations.\n *\n * @hidden\n */\nvar GraphQLAdaptor = /** @class */ (function (_super) {\n __extends(GraphQLAdaptor, _super);\n function GraphQLAdaptor(options) {\n var _this = _super.call(this) || this;\n _this.opt = options;\n _this.schema = _this.opt.response;\n _this.query = _this.opt.query;\n /* eslint-disable @typescript-eslint/no-empty-function */\n // tslint:disable-next-line:no-empty\n _this.getVariables = _this.opt.getVariables ? _this.opt.getVariables : function () { };\n /* eslint-enable @typescript-eslint/no-empty-function */\n _this.getQuery = function () { return _this.query; };\n return _this;\n }\n GraphQLAdaptor.prototype.getModuleName = function () {\n return 'GraphQLAdaptor';\n };\n /**\n * Process the JSON data based on the provided queries.\n *\n * @param {DataManager} dm\n * @param {Query} query?\n * @param datamanager\n * @param query\n */\n GraphQLAdaptor.prototype.processQuery = function (datamanager, query) {\n var urlQuery = _super.prototype.processQuery.apply(this, arguments);\n var dm = JSON.parse(urlQuery.data);\n // constructing GraphQL parameters\n var keys = ['skip', 'take', 'sorted', 'table', 'select', 'where',\n 'search', 'requiresCounts', 'aggregates', 'params'];\n var temp = {};\n var str = 'searchwhereparams';\n keys.filter(function (e) {\n temp[e] = str.indexOf(e) > -1 ? JSON.stringify(dm[e]) : dm[e];\n });\n var vars = this.getVariables() || {};\n // tslint:disable-next-line:no-string-literal\n vars['datamanager'] = temp;\n var data = JSON.stringify({\n query: this.getQuery(),\n variables: vars\n });\n urlQuery.data = data;\n return urlQuery;\n };\n /**\n * Returns the data from the query processing.\n * It will also cache the data for later usage.\n *\n * @param {DataResult} data\n * @param {DataManager} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Object} request?\n * @param resData\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @returns DataResult\n */\n GraphQLAdaptor.prototype.processResponse = function (resData, ds, query, xhr, request) {\n var res = resData;\n var count;\n var aggregates;\n var result = getValue(this.schema.result, res.data);\n if (this.schema.count) {\n count = getValue(this.schema.count, res.data);\n }\n if (this.schema.aggregates) {\n aggregates = getValue(this.schema.aggregates, res.data);\n aggregates = !isNullOrUndefined(aggregates) ? DataUtil.parse.parseJson(aggregates) : aggregates;\n }\n var pvt = request.pvtData || {};\n var args = { result: result, aggregates: aggregates };\n var data = args;\n if (pvt && pvt.groups && pvt.groups.length) {\n this.getAggregateResult(pvt, data, args, null, query);\n }\n return !isNullOrUndefined(count) ? { result: args.result, count: count, aggregates: aggregates } : args.result;\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n */\n GraphQLAdaptor.prototype.insert = function () {\n var inserted = _super.prototype.insert.apply(this, arguments);\n return this.generateCrudData(inserted, 'insert');\n };\n /**\n * Prepare and returns request body which is used to update a new record in the table.\n */\n GraphQLAdaptor.prototype.update = function () {\n var inserted = _super.prototype.update.apply(this, arguments);\n return this.generateCrudData(inserted, 'update');\n };\n /**\n * Prepare and returns request body which is used to remove a new record in the table.\n */\n GraphQLAdaptor.prototype.remove = function () {\n var inserted = _super.prototype.remove.apply(this, arguments);\n return this.generateCrudData(inserted, 'remove');\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\n * @param e.key\n * @param {Query} query\n * @param {Object} original\n */\n GraphQLAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var batch = _super.prototype.batchRequest.apply(this, arguments);\n // tslint:disable-next-line:typedef\n var bData = JSON.parse(batch.data);\n bData.key = e.key;\n batch.data = JSON.stringify(bData);\n return this.generateCrudData(batch, 'batch');\n };\n GraphQLAdaptor.prototype.generateCrudData = function (crudData, action) {\n var parsed = JSON.parse(crudData.data);\n crudData.data = JSON.stringify({\n query: this.opt.getMutation(action),\n variables: parsed\n });\n return crudData;\n };\n return GraphQLAdaptor;\n}(UrlAdaptor));\nexport { GraphQLAdaptor };\n/**\n * Cache Adaptor is used to cache the data of the visited pages. It prevents new requests for the previously visited pages.\n * You can configure cache page size and duration of caching by using cachingPageSize and timeTillExpiration properties of the DataManager\n *\n * @hidden\n */\nvar CacheAdaptor = /** @class */ (function (_super) {\n __extends(CacheAdaptor, _super);\n /**\n * Constructor for CacheAdaptor class.\n *\n * @param {CacheAdaptor} adaptor?\n * @param {number} timeStamp?\n * @param {number} pageSize?\n * @param adaptor\n * @param timeStamp\n * @param pageSize\n * @hidden\n */\n function CacheAdaptor(adaptor, timeStamp, pageSize) {\n var _this = _super.call(this) || this;\n _this.isCrudAction = false;\n _this.isInsertAction = false;\n if (!isNullOrUndefined(adaptor)) {\n _this.cacheAdaptor = adaptor;\n }\n _this.pageSize = pageSize;\n _this.guidId = DataUtil.getGuid('cacheAdaptor');\n var obj = { keys: [], results: [] };\n window.localStorage.setItem(_this.guidId, JSON.stringify(obj));\n var guid = _this.guidId;\n if (!isNullOrUndefined(timeStamp)) {\n setInterval(function () {\n var data = DataUtil.parse.parseJson(window.localStorage.getItem(guid));\n var forDel = [];\n for (var i = 0; i < data.results.length; i++) {\n var currentTime = +new Date();\n var requestTime = +new Date(data.results[i].timeStamp);\n data.results[i].timeStamp = currentTime - requestTime;\n if (currentTime - requestTime > timeStamp) {\n forDel.push(i);\n }\n }\n for (var i = 0; i < forDel.length; i++) {\n data.results.splice(forDel[i], 1);\n data.keys.splice(forDel[i], 1);\n }\n window.localStorage.removeItem(guid);\n window.localStorage.setItem(guid, JSON.stringify(data));\n }, timeStamp);\n }\n return _this;\n }\n /**\n * It will generate the key based on the URL when we send a request to server.\n *\n * @param {string} url\n * @param {Query} query?\n * @param query\n * @hidden\n */\n CacheAdaptor.prototype.generateKey = function (url, query) {\n var queries = this.getQueryRequest(query);\n var singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n var key = url;\n var page = 'onPage';\n if (page in singles) {\n key += singles[page].pageIndex;\n }\n queries.sorts.forEach(function (obj) {\n key += obj.e.direction + obj.e.fieldName;\n });\n queries.groups.forEach(function (obj) {\n key += obj.e.fieldName;\n });\n queries.searches.forEach(function (obj) {\n key += obj.e.searchKey;\n });\n for (var filter = 0; filter < queries.filters.length; filter++) {\n var currentFilter = queries.filters[filter];\n if (currentFilter.e.isComplex) {\n var newQuery = query.clone();\n newQuery.queries = [];\n for (var i = 0; i < currentFilter.e.predicates.length; i++) {\n newQuery.queries.push({ fn: 'onWhere', e: currentFilter.e.predicates[i], filter: query.queries.filter });\n }\n key += currentFilter.e.condition + this.generateKey(url, newQuery);\n }\n else {\n key += currentFilter.e.field + currentFilter.e.operator + currentFilter.e.value;\n }\n }\n return key;\n };\n /**\n * Process the query to generate request body.\n * If the data is already cached, it will return the cached data.\n *\n * @param {DataManager} dm\n * @param {Query} query?\n * @param {Object[]} hierarchyFilters?\n * @param query\n * @param hierarchyFilters\n */\n CacheAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var key = this.generateKey(dm.dataSource.url, query);\n var cachedItems = DataUtil.parse.parseJson(window.localStorage.getItem(this.guidId));\n var data = cachedItems ? cachedItems.results[cachedItems.keys.indexOf(key)] : null;\n if (data != null && !this.isCrudAction && !this.isInsertAction) {\n return data;\n }\n this.isCrudAction = null;\n this.isInsertAction = null;\n /* eslint-disable prefer-spread */\n return this.cacheAdaptor.processQuery.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n /* eslint-enable prefer-spread */\n };\n /**\n * Returns the data from the query processing.\n * It will also cache the data for later usage.\n *\n * @param {DataResult} data\n * @param {DataManager} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n */\n CacheAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n if (this.isInsertAction || (request && this.cacheAdaptor.options.batch &&\n DataUtil.endsWith(request.url, this.cacheAdaptor.options.batch) && request.type.toLowerCase() === 'post')) {\n return this.cacheAdaptor.processResponse(data, ds, query, xhr, request, changes);\n }\n /* eslint-disable prefer-spread */\n data = this.cacheAdaptor.processResponse.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n /* eslint-enable prefer-spread */\n var key = query ? this.generateKey(ds.dataSource.url, query) : ds.dataSource.url;\n var obj = {};\n obj = DataUtil.parse.parseJson(window.localStorage.getItem(this.guidId));\n var index = obj.keys.indexOf(key);\n if (index !== -1) {\n obj.results.splice(index, 1);\n obj.keys.splice(index, 1);\n }\n obj.results[obj.keys.push(key) - 1] = { keys: key, result: data.result, timeStamp: new Date(), count: data.count };\n while (obj.results.length > this.pageSize) {\n obj.results.splice(0, 1);\n obj.keys.splice(0, 1);\n }\n window.localStorage.setItem(this.guidId, JSON.stringify(obj));\n return data;\n };\n /**\n * Method will trigger before send the request to server side. Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings?\n * @param settings\n */\n CacheAdaptor.prototype.beforeSend = function (dm, request, settings) {\n if (!isNullOrUndefined(this.cacheAdaptor.options.batch) && DataUtil.endsWith(settings.url, this.cacheAdaptor.options.batch)\n && settings.type.toLowerCase() === 'post') {\n request.setRequestHeader('Accept', this.cacheAdaptor.options.multipartAccept);\n }\n if (!dm.dataSource.crossDomain) {\n request.setRequestHeader('Accept', this.cacheAdaptor.options.accept);\n }\n };\n /**\n * Updates existing record and saves the changes to the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n */\n CacheAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n this.isCrudAction = true;\n return this.cacheAdaptor.update(dm, keyField, value, tableName);\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param tableName\n */\n CacheAdaptor.prototype.insert = function (dm, data, tableName) {\n this.isInsertAction = true;\n return this.cacheAdaptor.insert(dm, data, tableName);\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n */\n CacheAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n this.isCrudAction = true;\n return this.cacheAdaptor.remove(dm, keyField, value, tableName);\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n CacheAdaptor.prototype.batchRequest = function (dm, changes, e) {\n return this.cacheAdaptor.batchRequest(dm, changes, e);\n };\n return CacheAdaptor;\n}(UrlAdaptor));\nexport { CacheAdaptor };\n","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { Ajax } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataUtil } from './util';\nimport { Predicate, Query } from './query';\nimport { ODataAdaptor, JsonAdaptor, CacheAdaptor, RemoteSaveAdaptor, CustomDataAdaptor } from './adaptors';\n/**\n * DataManager is used to manage and manipulate relational data.\n */\nvar DataManager = /** @class */ (function () {\n /**\n * Constructor for DataManager class\n *\n * @param {DataOptions|JSON[]} dataSource?\n * @param {Query} query?\n * @param {AdaptorOptions|string} adaptor?\n * @param dataSource\n * @param query\n * @param adaptor\n * @hidden\n */\n function DataManager(dataSource, query, adaptor) {\n var _this = this;\n /** @hidden */\n this.dateParse = true;\n /** @hidden */\n this.timeZoneHandling = true;\n this.persistQuery = {};\n this.isInitialLoad = false;\n this.requests = [];\n this.isInitialLoad = true;\n if (!dataSource && !this.dataSource) {\n dataSource = [];\n }\n adaptor = adaptor || dataSource.adaptor;\n if (dataSource && dataSource.timeZoneHandling === false) {\n this.timeZoneHandling = dataSource.timeZoneHandling;\n }\n var data;\n if (dataSource instanceof Array) {\n data = {\n json: dataSource,\n offline: true\n };\n }\n else if (typeof dataSource === 'object') {\n if (!dataSource.json) {\n dataSource.json = [];\n }\n if (!dataSource.enablePersistence) {\n dataSource.enablePersistence = false;\n }\n if (!dataSource.id) {\n dataSource.id = '';\n }\n if (!dataSource.ignoreOnPersist) {\n dataSource.ignoreOnPersist = [];\n }\n data = {\n url: dataSource.url,\n insertUrl: dataSource.insertUrl,\n removeUrl: dataSource.removeUrl,\n updateUrl: dataSource.updateUrl,\n crudUrl: dataSource.crudUrl,\n batchUrl: dataSource.batchUrl,\n json: dataSource.json,\n headers: dataSource.headers,\n accept: dataSource.accept,\n data: dataSource.data,\n timeTillExpiration: dataSource.timeTillExpiration,\n cachingPageSize: dataSource.cachingPageSize,\n enableCaching: dataSource.enableCaching,\n requestType: dataSource.requestType,\n key: dataSource.key,\n crossDomain: dataSource.crossDomain,\n jsonp: dataSource.jsonp,\n dataType: dataSource.dataType,\n offline: dataSource.offline !== undefined ? dataSource.offline\n : dataSource.adaptor instanceof RemoteSaveAdaptor || dataSource.adaptor instanceof CustomDataAdaptor ?\n false : dataSource.url ? false : true,\n requiresFormat: dataSource.requiresFormat,\n enablePersistence: dataSource.enablePersistence,\n id: dataSource.id,\n ignoreOnPersist: dataSource.ignoreOnPersist\n };\n }\n else {\n DataUtil.throwError('DataManager: Invalid arguments');\n }\n if (data.requiresFormat === undefined && !DataUtil.isCors()) {\n data.requiresFormat = isNullOrUndefined(data.crossDomain) ? true : data.crossDomain;\n }\n if (data.dataType === undefined) {\n data.dataType = 'json';\n }\n this.dataSource = data;\n this.defaultQuery = query;\n if (this.dataSource.enablePersistence && this.dataSource.id) {\n window.addEventListener('unload', this.setPersistData.bind(this));\n }\n if (data.url && data.offline && !data.json.length) {\n this.isDataAvailable = false;\n this.adaptor = adaptor || new ODataAdaptor();\n this.dataSource.offline = false;\n this.ready = this.executeQuery(query || new Query());\n this.ready.then(function (e) {\n _this.dataSource.offline = true;\n _this.isDataAvailable = true;\n data.json = e.result;\n _this.adaptor = new JsonAdaptor();\n });\n }\n else {\n this.adaptor = data.offline ? new JsonAdaptor() : new ODataAdaptor();\n }\n if (!data.jsonp && this.adaptor instanceof ODataAdaptor) {\n data.jsonp = 'callback';\n }\n this.adaptor = adaptor || this.adaptor;\n if (data.enableCaching) {\n this.adaptor = new CacheAdaptor(this.adaptor, data.timeTillExpiration, data.cachingPageSize);\n }\n return this;\n }\n /**\n * Get the queries maintained in the persisted state.\n * @param {string} id - The identifier of the persisted query to retrieve.\n * @returns {object} The persisted data object.\n */\n DataManager.prototype.getPersistedData = function (id) {\n var persistedData = localStorage.getItem(id || this.dataSource.id);\n return JSON.parse(persistedData);\n };\n /**\n * Set the queries to be maintained in the persisted state.\n * @param {Event} e - The event parameter that triggers the setPersistData method.\n * @param {string} id - The identifier of the persisted query to set.\n * @param {object} persistData - The data to be persisted.\n * @returns {void} .\n */\n DataManager.prototype.setPersistData = function (e, id, persistData) {\n localStorage.setItem(id || this.dataSource.id, JSON.stringify(persistData || this.persistQuery));\n };\n DataManager.prototype.setPersistQuery = function (query) {\n var _this = this;\n var persistedQuery = this.getPersistedData();\n if (this.isInitialLoad && persistedQuery && Object.keys(persistedQuery).length) {\n this.persistQuery = persistedQuery;\n this.persistQuery.queries = this.persistQuery.queries.filter(function (query) {\n if (_this.dataSource.ignoreOnPersist && _this.dataSource.ignoreOnPersist.length) {\n if (query.fn && _this.dataSource.ignoreOnPersist.some(function (keyword) { return query.fn === keyword; })) {\n return false; // Exclude the matching query\n }\n }\n if (query.fn === 'onWhere') {\n var e = query.e;\n if (e && e.isComplex && e.predicates instanceof Array) {\n var allPredicates = e.predicates.map(function (predicateObj) {\n if (predicateObj.predicates && predicateObj.predicates instanceof Array) {\n // Process nested predicate array\n var nestedPredicates = predicateObj.predicates.map(function (nestedPredicate) {\n var field = nestedPredicate.field, operator = nestedPredicate.operator, value = nestedPredicate.value, ignoreCase = nestedPredicate.ignoreCase, ignoreAccent = nestedPredicate.ignoreAccent, matchCase = nestedPredicate.matchCase;\n return new Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase);\n });\n return predicateObj.condition === 'and' ? Predicate.and(nestedPredicates) : Predicate.or(nestedPredicates);\n }\n else {\n // Process individual predicate\n var field = predicateObj.field, operator = predicateObj.operator, value = predicateObj.value, ignoreCase = predicateObj.ignoreCase, ignoreAccent = predicateObj.ignoreAccent, matchCase = predicateObj.matchCase;\n return new Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase);\n }\n });\n query.e = new Predicate(allPredicates[0], e.condition, allPredicates.slice(1));\n }\n }\n return true; // Keep all other queries\n });\n var newQuery = extend(new Query(), this.persistQuery);\n this.isInitialLoad = false;\n return (newQuery);\n }\n else {\n this.persistQuery = query;\n this.isInitialLoad = false;\n return query;\n }\n };\n /**\n * Overrides DataManager's default query with given query.\n *\n * @param {Query} query - Defines the new default query.\n */\n DataManager.prototype.setDefaultQuery = function (query) {\n this.defaultQuery = query;\n return this;\n };\n /**\n * Executes the given query with local data source.\n *\n * @param {Query} query - Defines the query to retrieve data.\n */\n DataManager.prototype.executeLocal = function (query) {\n if (!this.defaultQuery && !(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeLocal() : A query is required to execute');\n }\n if (!this.dataSource.json) {\n DataUtil.throwError('DataManager - executeLocal() : Json data is required to execute');\n }\n if (this.dataSource.enablePersistence && this.dataSource.id) {\n query = this.setPersistQuery(query);\n }\n query = query || this.defaultQuery;\n var result = this.adaptor.processQuery(this, query);\n if (query.subQuery) {\n var from = query.subQuery.fromTable;\n var lookup = query.subQuery.lookups;\n var res = query.isCountRequired ? result.result :\n result;\n if (lookup && lookup instanceof Array) {\n DataUtil.buildHierarchy(query.subQuery.fKey, from, res, lookup, query.subQuery.key);\n }\n for (var j = 0; j < res.length; j++) {\n if (res[j][from] instanceof Array) {\n res[j] = extend({}, {}, res[j]);\n res[j][from] = this.adaptor.processResponse(query.subQuery.using(new DataManager(res[j][from].slice(0))).executeLocal(), this, query);\n }\n }\n }\n return this.adaptor.processResponse(result, this, query);\n };\n /**\n * Executes the given query with either local or remote data source.\n * It will be executed as asynchronously and returns Promise object which will be resolved or rejected after action completed.\n *\n * @param {Query|Function} query - Defines the query to retrieve data.\n * @param {Function} done - Defines the callback function and triggers when the Promise is resolved.\n * @param {Function} fail - Defines the callback function and triggers when the Promise is rejected.\n * @param {Function} always - Defines the callback function and triggers when the Promise is resolved or rejected.\n */\n DataManager.prototype.executeQuery = function (query, done, fail, always) {\n var _this = this;\n var makeRequest = 'makeRequest';\n if (this.dataSource.enablePersistence && this.dataSource.id) {\n query = this.setPersistQuery(query);\n }\n if (typeof query === 'function') {\n always = fail;\n fail = done;\n done = query;\n query = null;\n }\n if (!query) {\n query = this.defaultQuery;\n }\n if (!(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeQuery() : A query is required to execute');\n }\n var deffered = new Deferred();\n var args = { query: query };\n if (!this.dataSource.offline && (this.dataSource.url !== undefined && this.dataSource.url !== '')\n || (!isNullOrUndefined(this.adaptor[makeRequest])) || this.isCustomDataAdaptor(this.adaptor)) {\n var result = this.adaptor.processQuery(this, query);\n if (!isNullOrUndefined(this.adaptor[makeRequest])) {\n this.adaptor[makeRequest](result, deffered, args, query);\n }\n else if (!isNullOrUndefined(result.url) || this.isCustomDataAdaptor(this.adaptor)) {\n this.requests = [];\n this.makeRequest(result, deffered, args, query);\n }\n else {\n args = DataManager.getDeferedArgs(query, result, args);\n deffered.resolve(args);\n }\n }\n else {\n DataManager.nextTick(function () {\n var res = _this.executeLocal(query);\n args = DataManager.getDeferedArgs(query, res, args);\n deffered.resolve(args);\n });\n }\n if (done || fail) {\n deffered.promise.then(done, fail);\n }\n if (always) {\n deffered.promise.then(always, always);\n }\n return deffered.promise;\n };\n DataManager.getDeferedArgs = function (query, result, args) {\n if (query.isCountRequired) {\n args.result = result.result;\n args.count = result.count;\n args.aggregates = result.aggregates;\n }\n else {\n args.result = result;\n }\n return args;\n };\n DataManager.nextTick = function (fn) {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n // tslint:disable-next-line:no-any\n (window.setImmediate || window.setTimeout)(fn, 0);\n /* eslint-enable @typescript-eslint/no-explicit-any */\n };\n DataManager.prototype.extendRequest = function (url, fnSuccess, fnFail) {\n return extend({}, {\n type: 'GET',\n dataType: this.dataSource.dataType,\n crossDomain: this.dataSource.crossDomain,\n jsonp: this.dataSource.jsonp,\n cache: true,\n processData: false,\n onSuccess: fnSuccess,\n onFailure: fnFail\n }, url);\n };\n // tslint:disable-next-line:max-func-body-length\n DataManager.prototype.makeRequest = function (url, deffered, args, query) {\n var _this = this;\n var isSelector = !!query.subQuerySelector;\n var fnFail = function (e) {\n args.error = e;\n deffered.reject(args);\n };\n var process = function (data, count, xhr, request, actual, aggregates, virtualSelectRecords) {\n args.xhr = xhr;\n args.count = count ? parseInt(count.toString(), 10) : 0;\n args.result = data;\n args.request = request;\n args.aggregates = aggregates;\n args.actual = actual;\n args.virtualSelectRecords = virtualSelectRecords;\n deffered.resolve(args);\n };\n var fnQueryChild = function (data, selector) {\n var subDeffer = new Deferred();\n var childArgs = { parent: args };\n query.subQuery.isChild = true;\n var subUrl = _this.adaptor.processQuery(_this, query.subQuery, data ? _this.adaptor.processResponse(data) : selector);\n var childReq = _this.makeRequest(subUrl, subDeffer, childArgs, query.subQuery);\n if (!isSelector) {\n subDeffer.then(function (subData) {\n if (data) {\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, data, subData, query.subQuery.key);\n process(data, subData.count, subData.xhr);\n }\n }, fnFail);\n }\n return childReq;\n };\n var fnSuccess = function (data, request) {\n if (_this.isGraphQLAdaptor(_this.adaptor)) {\n // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n return fnFail(data['errors'], request);\n }\n }\n if (_this.isCustomDataAdaptor(_this.adaptor)) {\n request = extend({}, _this.ajaxReqOption, request);\n }\n if (request.httpRequest.getResponseHeader('Content-Type').indexOf('xml') === -1 && _this.dateParse) {\n data = DataUtil.parse.parseJson(data);\n }\n var result = _this.adaptor.processResponse(data, _this, query, request.httpRequest, request);\n var count = 0;\n var aggregates = null;\n var virtualSelectRecords = 'virtualSelectRecords';\n var virtualRecords = data[virtualSelectRecords];\n if (query.isCountRequired) {\n count = result.count;\n aggregates = result.aggregates;\n result = result.result;\n }\n if (!query.subQuery) {\n process(result, count, request.httpRequest, request.type, data, aggregates, virtualRecords);\n return;\n }\n if (!isSelector) {\n fnQueryChild(result, request);\n }\n };\n var req = this.extendRequest(url, fnSuccess, fnFail);\n if (!this.isCustomDataAdaptor(this.adaptor)) {\n var ajax_1 = new Ajax(req);\n ajax_1.beforeSend = function () {\n _this.beforeSend(ajax_1.httpRequest, ajax_1);\n };\n req = ajax_1.send();\n req.catch(function (e) { return true; }); // to handle failure remote requests.\n this.requests.push(ajax_1);\n }\n else {\n this.ajaxReqOption = req;\n var request = req;\n this.adaptor.options.getData({\n data: request.data,\n onSuccess: request.onSuccess, onFailure: request.onFailure\n });\n }\n if (isSelector) {\n var promise = void 0;\n var res = query.subQuerySelector.call(this, { query: query.subQuery, parent: query });\n if (res && res.length) {\n promise = Promise.all([req, fnQueryChild(null, res)]);\n promise.then(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = args[0];\n var pResult = _this.adaptor.processResponse(result[0], _this, query, _this.requests[0].httpRequest, _this.requests[0]);\n var count = 0;\n if (query.isCountRequired) {\n count = pResult.count;\n pResult = pResult.result;\n }\n var cResult = _this.adaptor.processResponse(result[1], _this, query.subQuery, _this.requests[1].httpRequest, _this.requests[1]);\n count = 0;\n if (query.subQuery.isCountRequired) {\n count = cResult.count;\n cResult = cResult.result;\n }\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, pResult, cResult, query.subQuery.key);\n isSelector = false;\n process(pResult, count, _this.requests[0].httpRequest);\n });\n }\n else {\n isSelector = false;\n }\n }\n return req;\n };\n DataManager.prototype.beforeSend = function (request, settings) {\n this.adaptor.beforeSend(this, request, settings);\n var headers = this.dataSource.headers;\n var props;\n for (var i = 0; headers && i < headers.length; i++) {\n props = [];\n var keys = Object.keys(headers[i]);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n props.push(prop);\n request.setRequestHeader(prop, headers[i][prop]);\n }\n }\n };\n /**\n * Save bulk changes to the given table name.\n * User can add a new record, edit an existing record, and delete a record at the same time.\n * If the datasource from remote, then updated in a single post.\n *\n * @param {Object} changes - Defines the CrudOptions.\n * @param {string} key - Defines the column field.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n * @param original\n */\n DataManager.prototype.saveChanges = function (changes, key, tableName, query, original) {\n var _this = this;\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var args = {\n url: tableName,\n key: key || this.dataSource.key\n };\n var req = this.adaptor.batchRequest(this, changes, args, query || new Query(), original);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](req);\n }\n else if (!this.isCustomDataAdaptor(this.adaptor)) {\n var deff_1 = new Deferred();\n var ajax_2 = new Ajax(req);\n ajax_2.beforeSend = function () {\n _this.beforeSend(ajax_2.httpRequest, ajax_2);\n };\n ajax_2.onSuccess = function (data, request) {\n if (_this.isGraphQLAdaptor(_this.adaptor)) {\n // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n ajax_2.onFailure(JSON.stringify(data['errors']));\n }\n }\n deff_1.resolve(_this.adaptor.processResponse(data, _this, null, request.httpRequest, request, changes, args));\n };\n ajax_2.onFailure = function (e) {\n deff_1.reject([{ error: e }]);\n };\n ajax_2.send().catch(function (e) { return true; }); // to handle the failure requests.\n return deff_1.promise;\n }\n else {\n return this.doAjaxRequest(req, this.adaptor.options.batchUpdate);\n }\n };\n /**\n * Inserts new record in the given table.\n *\n * @param {Object} data - Defines the data to insert.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n * @param position\n */\n DataManager.prototype.insert = function (data, tableName, query, position) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var req = this.adaptor.insert(this, data, tableName, query, position);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](req);\n }\n else {\n return this.doAjaxRequest(req, this.adaptor.options.addRecord);\n }\n };\n /**\n * Removes data from the table with the given key.\n *\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.remove = function (keyField, value, tableName, query) {\n if (typeof value === 'object') {\n value = DataUtil.getObject(keyField, value);\n }\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var res = this.adaptor.remove(this, keyField, value, tableName, query);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](res);\n }\n else {\n var remove = this.adaptor.options.deleteRecord;\n return this.doAjaxRequest(res, remove);\n }\n };\n /**\n * Updates existing record in the given table.\n *\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n * @param original\n */\n DataManager.prototype.update = function (keyField, value, tableName, query, original) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var res = this.adaptor.update(this, keyField, value, tableName, query, original);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](res);\n }\n else {\n var update = this.adaptor.options.updateRecord;\n return this.doAjaxRequest(res, update);\n }\n };\n DataManager.prototype.isCustomDataAdaptor = function (dataSource) {\n return this.adaptor.getModuleName &&\n this.adaptor.getModuleName() === 'CustomDataAdaptor';\n };\n DataManager.prototype.isGraphQLAdaptor = function (dataSource) {\n return this.adaptor.getModuleName &&\n this.adaptor.getModuleName() === 'GraphQLAdaptor';\n };\n DataManager.prototype.successFunc = function (record, request) {\n if (this.isGraphQLAdaptor(this.adaptor)) {\n var data = JSON.parse(record);\n // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n this.failureFunc(JSON.stringify(data['errors']));\n }\n }\n if (this.isCustomDataAdaptor(this.adaptor)) {\n request = extend({}, this.ajaxReqOption, request);\n }\n try {\n DataUtil.parse.parseJson(record);\n }\n catch (e) {\n record = [];\n }\n record = this.adaptor.processResponse(DataUtil.parse.parseJson(record), this, null, request.httpRequest, request);\n this.ajaxDeffered.resolve(record);\n };\n DataManager.prototype.failureFunc = function (e) {\n this.ajaxDeffered.reject([{ error: e }]);\n };\n DataManager.prototype.doAjaxRequest = function (res, ajaxFunc) {\n var _this = this;\n res = extend({}, {\n type: 'POST',\n contentType: 'application/json; charset=utf-8',\n processData: false\n }, res);\n this.ajaxDeffered = new Deferred();\n if (!this.isCustomDataAdaptor(this.adaptor)) {\n var ajax_3 = new Ajax(res);\n ajax_3.beforeSend = function () {\n _this.beforeSend(ajax_3.httpRequest, ajax_3);\n };\n ajax_3.onSuccess = this.successFunc.bind(this);\n ajax_3.onFailure = this.failureFunc.bind(this);\n ajax_3.send().catch(function (e) { return true; }); // to handle the failure requests.\n }\n else {\n this.ajaxReqOption = res;\n ajaxFunc.call(this, {\n data: res.data, onSuccess: this.successFunc.bind(this),\n onFailure: this.failureFunc.bind(this)\n });\n }\n return this.ajaxDeffered.promise;\n };\n DataManager.prototype.clearPersistence = function () {\n window.removeEventListener('unload', this.setPersistData.bind(this));\n this.dataSource.enablePersistence = false;\n this.persistQuery = {};\n window.localStorage.setItem(this.dataSource.id, '[]');\n };\n return DataManager;\n}());\nexport { DataManager };\n/**\n * Deferred is used to handle asynchronous operation.\n */\nvar Deferred = /** @class */ (function () {\n function Deferred() {\n var _this = this;\n /**\n * Promise is an object that represents a value that may not be available yet, but will be resolved at some point in the future.\n */\n this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n /**\n * Defines the callback function triggers when the Deferred object is resolved.\n */\n this.then = this.promise.then.bind(this.promise);\n /**\n * Defines the callback function triggers when the Deferred object is rejected.\n */\n this.catch = this.promise.catch.bind(this.promise);\n }\n return Deferred;\n}());\nexport { Deferred };\n","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { DataUtil } from './util';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Query class is used to build query which is used by the DataManager to communicate with datasource.\n */\nvar Query = /** @class */ (function () {\n /**\n * Constructor for Query class.\n *\n * @param {string|string[]} from?\n * @param from\n * @hidden\n */\n function Query(from) {\n /** @hidden */\n this.subQuery = null;\n /** @hidden */\n this.isChild = false;\n /** @hidden */\n this.distincts = [];\n this.queries = [];\n this.key = '';\n this.fKey = '';\n if (typeof from === 'string') {\n this.fromTable = from;\n }\n else if (from && from instanceof Array) {\n this.lookups = from;\n }\n this.expands = [];\n this.sortedColumns = [];\n this.groupedColumns = [];\n this.subQuery = null;\n this.isChild = false;\n this.params = [];\n this.lazyLoad = [];\n return this;\n }\n /**\n * Sets the primary key.\n *\n * @param {string} field - Defines the column field.\n */\n Query.prototype.setKey = function (field) {\n this.key = field;\n return this;\n };\n /**\n * Sets default DataManager to execute query.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n Query.prototype.using = function (dataManager) {\n this.dataManager = dataManager;\n return this;\n };\n /**\n * Executes query with the given DataManager.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n * @param {Function} done - Defines the success callback.\n * @param {Function} fail - Defines the failure callback.\n * @param {Function} always - Defines the callback which will be invoked on either success or failure.\n *\n *
\n     * let dataManager: DataManager = new DataManager([{ ID: '10' }, { ID: '2' }, { ID: '1' }, { ID: '20' }]);\n     * let query: Query = new Query();\n     * query.sortBy('ID', (x: string, y: string): number => { return parseInt(x, 10) - parseInt(y, 10) });\n     * let promise: Promise< Object > = query.execute(dataManager);\n     * promise.then((e: { result: Object }) => { });\n     * 
\n */\n Query.prototype.execute = function (dataManager, done, fail, always) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeQuery(this, done, fail, always);\n }\n return DataUtil.throwError('Query - execute() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n };\n /**\n * Executes query with the local datasource.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n Query.prototype.executeLocal = function (dataManager) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeLocal(this);\n }\n return DataUtil.throwError('Query - executeLocal() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n };\n /**\n * Creates deep copy of the Query object.\n */\n Query.prototype.clone = function () {\n var cloned = new Query();\n cloned.queries = this.queries.slice(0);\n cloned.key = this.key;\n cloned.isChild = this.isChild;\n cloned.dataManager = this.dataManager;\n cloned.fromTable = this.fromTable;\n cloned.params = this.params.slice(0);\n cloned.expands = this.expands.slice(0);\n cloned.sortedColumns = this.sortedColumns.slice(0);\n cloned.groupedColumns = this.groupedColumns.slice(0);\n cloned.subQuerySelector = this.subQuerySelector;\n cloned.subQuery = this.subQuery;\n cloned.fKey = this.fKey;\n cloned.isCountRequired = this.isCountRequired;\n cloned.distincts = this.distincts.slice(0);\n cloned.lazyLoad = this.lazyLoad.slice(0);\n return cloned;\n };\n /**\n * Specifies the name of table to retrieve data in query execution.\n *\n * @param {string} tableName - Defines the table name.\n */\n Query.prototype.from = function (tableName) {\n this.fromTable = tableName;\n return this;\n };\n /**\n * Adds additional parameter which will be sent along with the request which will be generated while DataManager execute.\n *\n * @param {string} key - Defines the key of additional parameter.\n * @param {Function|string} value - Defines the value for the key.\n */\n Query.prototype.addParams = function (key, value) {\n if (typeof value === 'function') {\n this.params.push({ key: key, fn: value });\n }\n else {\n this.params.push({ key: key, value: value });\n }\n return this;\n };\n /**\n * @param fields\n * @hidden\n */\n Query.prototype.distinct = function (fields) {\n if (typeof fields === 'string') {\n this.distincts = [].slice.call([fields], 0);\n }\n else {\n this.distincts = fields.slice(0);\n }\n return this;\n };\n /**\n * Expands the related table.\n *\n * @param {string|Object[]} tables\n */\n Query.prototype.expand = function (tables) {\n if (typeof tables === 'string') {\n this.expands = [].slice.call([tables], 0);\n }\n else {\n this.expands = tables.slice(0);\n }\n return this;\n };\n /**\n * Filter data with given filter criteria.\n *\n * @param {string|Predicate} fieldName - Defines the column field or Predicate.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string|number|boolean} value - Defines the values to match with data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreAccent\n * @param matchCase\n */\n Query.prototype.where = function (fieldName, operator, value, ignoreCase, ignoreAccent, matchCase) {\n operator = operator ? (operator).toLowerCase() : null;\n var predicate = null;\n if (typeof fieldName === 'string') {\n predicate = new Predicate(fieldName, operator, value, ignoreCase, ignoreAccent, matchCase);\n }\n else if (fieldName instanceof Predicate) {\n predicate = fieldName;\n }\n this.queries.push({\n fn: 'onWhere',\n e: predicate\n });\n return this;\n };\n /**\n * Search data with given search criteria.\n *\n * @param {string|number|boolean} searchKey - Defines the search key.\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n * @param {string} operator - Defines the operator how to search data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreAccent\n */\n Query.prototype.search = function (searchKey, fieldNames, operator, ignoreCase, ignoreAccent) {\n if (typeof fieldNames === 'string') {\n fieldNames = [fieldNames];\n }\n if (!operator || operator === 'none') {\n operator = 'contains';\n }\n var comparer = DataUtil.fnOperators[operator];\n this.queries.push({\n fn: 'onSearch',\n e: {\n fieldNames: fieldNames,\n operator: operator,\n searchKey: searchKey,\n ignoreCase: ignoreCase,\n ignoreAccent: ignoreAccent,\n comparer: comparer\n }\n });\n return this;\n };\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n *\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n * @param isFromGroup\n */\n Query.prototype.sortBy = function (fieldName, comparer, isFromGroup) {\n return this.sortByForeignKey(fieldName, comparer, isFromGroup);\n };\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n *\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n * @param isFromGroup\n * @param {string} direction - Defines the sort direction .\n */\n Query.prototype.sortByForeignKey = function (fieldName, comparer, isFromGroup, direction) {\n var order = !isNullOrUndefined(direction) ? direction : 'ascending';\n var sorts;\n var temp;\n if (typeof fieldName === 'string' && DataUtil.endsWith(fieldName.toLowerCase(), ' desc')) {\n fieldName = fieldName.replace(/ desc$/i, '');\n comparer = 'descending';\n }\n if (!comparer || typeof comparer === 'string') {\n order = comparer ? comparer.toLowerCase() : 'ascending';\n comparer = DataUtil.fnSort(comparer);\n }\n if (isFromGroup) {\n sorts = Query.filterQueries(this.queries, 'onSortBy');\n for (var i = 0; i < sorts.length; i++) {\n temp = sorts[i].e.fieldName;\n if (typeof temp === 'string') {\n if (temp === fieldName) {\n return this;\n }\n }\n else if (temp instanceof Array) {\n for (var j = 0; j < temp.length; j++) {\n if (temp[j] === fieldName || fieldName.toLowerCase() === temp[j] + ' desc') {\n return this;\n }\n }\n }\n }\n }\n this.queries.push({\n fn: 'onSortBy',\n e: {\n fieldName: fieldName,\n comparer: comparer,\n direction: order\n }\n });\n return this;\n };\n /**\n * Sorts data in descending order.\n *\n * @param {string} fieldName - Defines the column field.\n */\n Query.prototype.sortByDesc = function (fieldName) {\n return this.sortBy(fieldName, 'descending');\n };\n /**\n * Groups data with the given field name.\n *\n * @param {string} fieldName - Defines the column field.\n * @param fn\n * @param format\n */\n Query.prototype.group = function (fieldName, fn, format) {\n this.sortBy(fieldName, null, true);\n this.queries.push({\n fn: 'onGroup',\n e: {\n fieldName: fieldName,\n comparer: fn ? fn : null,\n format: format ? format : null\n }\n });\n return this;\n };\n /**\n * Gets data based on the given page index and size.\n *\n * @param {number} pageIndex - Defines the current page index.\n * @param {number} pageSize - Defines the no of records per page.\n */\n Query.prototype.page = function (pageIndex, pageSize) {\n this.queries.push({\n fn: 'onPage',\n e: {\n pageIndex: pageIndex,\n pageSize: pageSize\n }\n });\n return this;\n };\n /**\n * Gets data based on the given start and end index.\n *\n * @param {number} start - Defines the start index of the datasource.\n * @param {number} end - Defines the end index of the datasource.\n */\n Query.prototype.range = function (start, end) {\n this.queries.push({\n fn: 'onRange',\n e: {\n start: start,\n end: end\n }\n });\n return this;\n };\n /**\n * Gets data from the top of the data source based on given number of records count.\n *\n * @param {number} nos - Defines the no of records to retrieve from datasource.\n */\n Query.prototype.take = function (nos) {\n this.queries.push({\n fn: 'onTake',\n e: {\n nos: nos\n }\n });\n return this;\n };\n /**\n * Skips data with given number of records count from the top of the data source.\n *\n * @param {number} nos - Defines the no of records skip in the datasource.\n */\n Query.prototype.skip = function (nos) {\n this.queries.push({\n fn: 'onSkip',\n e: { nos: nos }\n });\n return this;\n };\n /**\n * Selects specified columns from the data source.\n *\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n */\n Query.prototype.select = function (fieldNames) {\n if (typeof fieldNames === 'string') {\n fieldNames = [].slice.call([fieldNames], 0);\n }\n this.queries.push({\n fn: 'onSelect',\n e: { fieldNames: fieldNames }\n });\n return this;\n };\n /**\n * Gets the records in hierarchical relationship from two tables. It requires the foreign key to relate two tables.\n *\n * @param {Query} query - Defines the query to relate two tables.\n * @param {Function} selectorFn - Defines the custom function to select records.\n */\n Query.prototype.hierarchy = function (query, selectorFn) {\n this.subQuerySelector = selectorFn;\n this.subQuery = query;\n return this;\n };\n /**\n * Sets the foreign key which is used to get data from the related table.\n *\n * @param {string} key - Defines the foreign key.\n */\n Query.prototype.foreignKey = function (key) {\n this.fKey = key;\n return this;\n };\n /**\n * It is used to get total number of records in the DataManager execution result.\n */\n Query.prototype.requiresCount = function () {\n this.isCountRequired = true;\n return this;\n };\n //type - sum, avg, min, max\n /**\n * Aggregate the data with given type and field name.\n *\n * @param {string} type - Defines the aggregate type.\n * @param {string} field - Defines the column field to aggregate.\n */\n Query.prototype.aggregate = function (type, field) {\n this.queries.push({\n fn: 'onAggregates',\n e: { field: field, type: type }\n });\n return this;\n };\n /**\n * Pass array of filterColumn query for performing filter operation.\n *\n * @param {QueryOptions[]} queries\n * @param {string} name\n * @hidden\n */\n Query.filterQueries = function (queries, name) {\n return queries.filter(function (q) {\n return q.fn === name;\n });\n };\n /**\n * To get the list of queries which is already filtered in current data source.\n *\n * @param {Object[]} queries\n * @param {string[]} singles\n * @hidden\n */\n Query.filterQueryLists = function (queries, singles) {\n var filtered = queries.filter(function (q) {\n return singles.indexOf(q.fn) !== -1;\n });\n var res = {};\n for (var i = 0; i < filtered.length; i++) {\n if (!res[filtered[i].fn]) {\n res[filtered[i].fn] = filtered[i].e;\n }\n }\n return res;\n };\n return Query;\n}());\nexport { Query };\n/**\n * Predicate class is used to generate complex filter criteria.\n * This will be used by DataManager to perform multiple filtering operation.\n */\nvar Predicate = /** @class */ (function () {\n /**\n * Constructor for Predicate class.\n *\n * @param {string|Predicate} field\n * @param {string} operator\n * @param {string|number|boolean|Predicate|Predicate[]} value\n * @param {boolean=false} ignoreCase\n * @param ignoreAccent\n * @param {boolean} matchCase\n * @hidden\n */\n function Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase) {\n if (ignoreCase === void 0) { ignoreCase = false; }\n /** @hidden */\n this.ignoreAccent = false;\n /** @hidden */\n this.isComplex = false;\n if (typeof field === 'string') {\n this.field = field;\n this.operator = operator.toLowerCase();\n this.value = value;\n this.matchCase = matchCase;\n this.ignoreCase = ignoreCase;\n this.ignoreAccent = ignoreAccent;\n this.isComplex = false;\n this.comparer = DataUtil.fnOperators.processOperator(this.operator);\n }\n else if (field instanceof Predicate && value instanceof Predicate || value instanceof Array) {\n this.isComplex = true;\n this.condition = operator.toLowerCase();\n this.predicates = [field];\n this.matchCase = field.matchCase;\n this.ignoreCase = field.ignoreCase;\n this.ignoreAccent = field.ignoreAccent;\n if (value instanceof Array) {\n [].push.apply(this.predicates, value);\n }\n else {\n this.predicates.push(value);\n }\n }\n return this;\n }\n /**\n * Adds n-number of new predicates on existing predicate with “and” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.and = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'and');\n };\n /**\n * Adds new predicate on existing predicate with “and” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.and = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'and', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “or” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.or = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'or');\n };\n /**\n * Adds new predicate on existing predicate with “or” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.or = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'or', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “and not” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.ornot = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'or not');\n };\n /**\n * Adds new predicate on existing predicate with “and not” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.ornot = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'ornot', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “and not” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.andnot = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'and not');\n };\n /**\n * Adds new predicate on existing predicate with “and not” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.andnot = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'andnot', ignoreCase, ignoreAccent);\n };\n /**\n * Converts plain JavaScript object to Predicate object.\n *\n * @param {Predicate[]|Predicate} json - Defines single or collection of Predicate.\n */\n Predicate.fromJson = function (json) {\n if (json instanceof Array) {\n var res = [];\n for (var i = 0, len = json.length; i < len; i++) {\n res.push(this.fromJSONData(json[i]));\n }\n return res;\n }\n var pred = json;\n return this.fromJSONData(pred);\n };\n /**\n * Validate the record based on the predicates.\n *\n * @param {Object} record - Defines the datasource record.\n */\n Predicate.prototype.validate = function (record) {\n var predicate = this.predicates ? this.predicates : [];\n var ret;\n var isAnd;\n if (!this.isComplex && this.comparer) {\n if (this.condition && this.condition.indexOf('not') !== -1) {\n this.condition = this.condition.split('not')[0] === '' ? undefined : this.condition.split('not')[0];\n return !this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n }\n else {\n return this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (this.condition && this.condition.indexOf('not') !== -1) {\n isAnd = this.condition.indexOf('and') !== -1;\n }\n else {\n isAnd = this.condition === 'and';\n }\n for (var i = 0; i < predicate.length; i++) {\n if (i > 0 && this.condition && this.condition.indexOf('not') !== -1) {\n predicate[i].condition = predicate[i].condition ? predicate[i].condition + 'not' : 'not';\n }\n ret = predicate[i].validate(record);\n if (isAnd) {\n if (!ret) {\n return false;\n }\n }\n else {\n if (ret) {\n return true;\n }\n }\n }\n return isAnd;\n };\n /**\n * Converts predicates to plain JavaScript.\n * This method is uses Json stringify when serializing Predicate object.\n */\n Predicate.prototype.toJson = function () {\n var predicates;\n var p;\n if (this.isComplex) {\n predicates = [];\n p = this.predicates;\n for (var i = 0; i < p.length; i++) {\n predicates.push(p[i].toJson());\n }\n }\n return {\n isComplex: this.isComplex,\n field: this.field,\n operator: this.operator,\n value: this.value,\n ignoreCase: this.ignoreCase,\n ignoreAccent: this.ignoreAccent,\n condition: this.condition,\n predicates: predicates,\n matchCase: this.matchCase\n };\n };\n Predicate.combinePredicates = function (predicates, operator) {\n if (predicates.length === 1) {\n if (!(predicates[0] instanceof Array)) {\n return predicates[0];\n }\n predicates = predicates[0];\n }\n return new Predicate(predicates[0], operator, predicates.slice(1));\n };\n Predicate.combine = function (pred, field, operator, value, condition, ignoreCase, ignoreAccent) {\n if (field instanceof Predicate) {\n return Predicate[condition](pred, field);\n }\n if (typeof field === 'string') {\n return Predicate[condition](pred, new Predicate(field, operator, value, ignoreCase, ignoreAccent));\n }\n return DataUtil.throwError('Predicate - ' + condition + ' : invalid arguments');\n };\n Predicate.fromJSONData = function (json) {\n var preds = json.predicates || [];\n var len = preds.length;\n var predicates = [];\n var result;\n for (var i = 0; i < len; i++) {\n predicates.push(this.fromJSONData(preds[i]));\n }\n if (!json.isComplex) {\n result = new Predicate(json.field, json.operator, json.value, json.ignoreCase, json.ignoreAccent);\n }\n else {\n result = new Predicate(predicates[0], json.condition, predicates.slice(1));\n }\n return result;\n };\n return Predicate;\n}());\nexport { Predicate };\n","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataManager } from './manager';\nimport { Query, Predicate } from './query';\nvar consts = { GroupGuid: '{271bbba0-1ee7}' };\n/**\n * Data manager common utility methods.\n *\n * @hidden\n */\nvar DataUtil = /** @class */ (function () {\n function DataUtil() {\n }\n /**\n * Returns the value by invoking the provided parameter function.\n * If the paramater is not of type function then it will be returned as it is.\n *\n * @param {Function|string|string[]|number} value\n * @param {Object} inst?\n * @param inst\n * @hidden\n */\n DataUtil.getValue = function (value, inst) {\n if (typeof value === 'function') {\n return value.call(inst || {});\n }\n return value;\n };\n /**\n * Returns true if the input string ends with given string.\n *\n * @param {string} input\n * @param {string} substr\n */\n DataUtil.endsWith = function (input, substr) {\n return input.slice && input.slice(-substr.length) === substr;\n };\n /**\n * Returns true if the input string not ends with given string.\n *\n * @param {string} input\n * @param {string} substr\n */\n DataUtil.notEndsWith = function (input, substr) {\n return input.slice && input.slice(-substr.length) !== substr;\n };\n /**\n * Returns true if the input string starts with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param start\n */\n DataUtil.startsWith = function (input, start) {\n return input.slice(0, start.length) === start;\n };\n /**\n * Returns true if the input string not starts with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param start\n */\n DataUtil.notStartsWith = function (input, start) {\n return input.slice(0, start.length) !== start;\n };\n /**\n * Returns true if the input string pattern(wildcard) matches with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param pattern\n */\n DataUtil.wildCard = function (input, pattern) {\n var asteriskSplit;\n var optionalSplit;\n // special character allowed search\n if (pattern.indexOf('[') !== -1) {\n pattern = pattern.split('[').join('[[]');\n }\n if (pattern.indexOf('(') !== -1) {\n pattern = pattern.split('(').join('[(]');\n }\n if (pattern.indexOf(')') !== -1) {\n pattern = pattern.split(')').join('[)]');\n }\n if (pattern.indexOf('\\\\') !== -1) {\n pattern = pattern.split('\\\\').join('[\\\\\\\\]');\n }\n if (pattern.indexOf('*') !== -1) {\n if (pattern.charAt(0) !== '*') {\n pattern = '^' + pattern;\n }\n if (pattern.charAt(pattern.length - 1) !== '*') {\n pattern = pattern + '$';\n }\n asteriskSplit = pattern.split('*');\n for (var i = 0; i < asteriskSplit.length; i++) {\n if (asteriskSplit[i].indexOf('.') === -1) {\n asteriskSplit[i] = asteriskSplit[i] + '.*';\n }\n else {\n asteriskSplit[i] = asteriskSplit[i] + '*';\n }\n }\n pattern = asteriskSplit.join('');\n }\n if (pattern.indexOf('%3f') !== -1 || pattern.indexOf('?') !== -1) {\n optionalSplit = pattern.indexOf('%3f') !== -1 ? pattern.split('%3f') : pattern.split('?');\n pattern = optionalSplit.join('.');\n }\n // eslint-disable-next-line security/detect-non-literal-regexp\n var regexPattern = new RegExp(pattern, 'g');\n return regexPattern.test(input);\n };\n /**\n * Returns true if the input string pattern(like) matches with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param pattern\n */\n DataUtil.like = function (input, pattern) {\n if (pattern.indexOf('%') !== -1) {\n if (pattern.charAt(0) === '%' && pattern.lastIndexOf('%') < 2) {\n pattern = pattern.substring(1, pattern.length);\n return DataUtil.startsWith(DataUtil.toLowerCase(input), DataUtil.toLowerCase(pattern));\n }\n else if (pattern.charAt(pattern.length - 1) === '%' && pattern.indexOf('%') > pattern.length - 3) {\n pattern = pattern.substring(0, pattern.length - 1);\n return DataUtil.endsWith(DataUtil.toLowerCase(input), DataUtil.toLowerCase(pattern));\n }\n else if (pattern.lastIndexOf('%') !== pattern.indexOf('%') && pattern.lastIndexOf('%') > pattern.indexOf('%') + 1) {\n pattern = pattern.substring(pattern.indexOf('%') + 1, pattern.lastIndexOf('%'));\n return input.indexOf(pattern) !== -1;\n }\n else {\n return input.indexOf(pattern) !== -1;\n }\n }\n else {\n return false;\n }\n };\n /**\n * To return the sorting function based on the string.\n *\n * @param {string} order\n * @hidden\n */\n DataUtil.fnSort = function (order) {\n order = order ? DataUtil.toLowerCase(order) : 'ascending';\n if (order === 'ascending') {\n return this.fnAscending;\n }\n return this.fnDescending;\n };\n /**\n * Comparer function which is used to sort the data in ascending order.\n *\n * @param {string|number} x\n * @param {string|number} y\n * @returns number\n */\n DataUtil.fnAscending = function (x, y) {\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n return -1;\n }\n if (y === null || y === undefined) {\n return -1;\n }\n if (typeof x === 'string') {\n return x.localeCompare(y);\n }\n if (x === null || x === undefined) {\n return 1;\n }\n return x - y;\n };\n /**\n * Comparer function which is used to sort the data in descending order.\n *\n * @param {string|number} x\n * @param {string|number} y\n * @returns number\n */\n DataUtil.fnDescending = function (x, y) {\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n return -1;\n }\n if (y === null || y === undefined) {\n return 1;\n }\n if (typeof x === 'string') {\n return x.localeCompare(y) * -1;\n }\n if (x === null || x === undefined) {\n return -1;\n }\n return y - x;\n };\n DataUtil.extractFields = function (obj, fields) {\n var newObj = {};\n for (var i = 0; i < fields.length; i++) {\n newObj = this.setValue(fields[i], this.getObject(fields[i], obj), newObj);\n }\n return newObj;\n };\n /**\n * Select objects by given fields from jsonArray.\n *\n * @param {Object[]} jsonArray\n * @param {string[]} fields\n */\n DataUtil.select = function (jsonArray, fields) {\n var newData = [];\n for (var i = 0; i < jsonArray.length; i++) {\n newData.push(this.extractFields(jsonArray[i], fields));\n }\n return newData;\n };\n /**\n * Group the input data based on the field name.\n * It also performs aggregation of the grouped records based on the aggregates paramater.\n *\n * @param {Object[]} jsonArray\n * @param {string} field?\n * @param {Object[]} agg?\n * @param {number} level?\n * @param {Object[]} groupDs?\n * @param field\n * @param aggregates\n * @param level\n * @param groupDs\n * @param format\n * @param isLazyLoad\n */\n DataUtil.group = function (jsonArray, field, aggregates, level, groupDs, format, isLazyLoad) {\n level = level || 1;\n var jsonData = jsonArray;\n var guid = 'GroupGuid';\n if (jsonData.GroupGuid === consts[guid]) {\n var _loop_1 = function (j) {\n if (!isNullOrUndefined(groupDs)) {\n var indx = -1;\n var temp = groupDs.filter(function (e) { return e.key === jsonData[j].key; });\n indx = groupDs.indexOf(temp[0]);\n jsonData[j].items = this_1.group(jsonData[j].items, field, aggregates, jsonData.level + 1, groupDs[indx].items, format, isLazyLoad);\n jsonData[j].count = groupDs[indx].count;\n }\n else {\n jsonData[j].items = this_1.group(jsonData[j].items, field, aggregates, jsonData.level + 1, null, format, isLazyLoad);\n jsonData[j].count = jsonData[j].items.length;\n }\n };\n var this_1 = this;\n for (var j = 0; j < jsonData.length; j++) {\n _loop_1(j);\n }\n jsonData.childLevels += 1;\n return jsonData;\n }\n var grouped = {};\n var groupedArray = [];\n groupedArray.GroupGuid = consts[guid];\n groupedArray.level = level;\n groupedArray.childLevels = 0;\n groupedArray.records = jsonData;\n var _loop_2 = function (i) {\n var val = this_2.getVal(jsonData, i, field);\n if (!isNullOrUndefined(format)) {\n val = format(val, field);\n }\n if (!grouped[val]) {\n grouped[val] = {\n key: val,\n count: 0,\n items: [],\n aggregates: {},\n field: field\n };\n groupedArray.push(grouped[val]);\n if (!isNullOrUndefined(groupDs)) {\n var tempObj = groupDs.filter(function (e) { return e.key === grouped[val].key; });\n grouped[val].count = tempObj[0].count;\n }\n }\n grouped[val].count = !isNullOrUndefined(groupDs) ? grouped[val].count : grouped[val].count += 1;\n if (!isLazyLoad || (isLazyLoad && aggregates.length)) {\n grouped[val].items.push(jsonData[i]);\n }\n };\n var this_2 = this;\n for (var i = 0; i < jsonData.length; i++) {\n _loop_2(i);\n }\n if (aggregates && aggregates.length) {\n var _loop_3 = function (i) {\n var res = {};\n var fn = void 0;\n var aggs = aggregates;\n for (var j = 0; j < aggregates.length; j++) {\n fn = DataUtil.aggregates[aggregates[j].type];\n if (!isNullOrUndefined(groupDs)) {\n var temp = groupDs.filter(function (e) { return e.key === groupedArray[i].key; });\n if (fn) {\n res[aggs[j].field + ' - ' + aggs[j].type] = fn(temp[0].items, aggs[j].field);\n }\n }\n else {\n if (fn) {\n res[aggs[j].field + ' - ' + aggs[j].type] = fn(groupedArray[i].items, aggs[j].field);\n }\n }\n }\n groupedArray[i].aggregates = res;\n };\n for (var i = 0; i < groupedArray.length; i++) {\n _loop_3(i);\n }\n }\n if (isLazyLoad && groupedArray.length && aggregates.length) {\n for (var i = 0; i < groupedArray.length; i++) {\n groupedArray[i].items = [];\n }\n }\n return jsonData.length && groupedArray || jsonData;\n };\n /**\n * It is used to categorize the multiple items based on a specific field in jsonArray.\n * The hierarchical queries are commonly required when you use foreign key binding.\n *\n * @param {string} fKey\n * @param {string} from\n * @param {Object[]} source\n * @param {Group} lookup?\n * @param {string} pKey?\n * @param lookup\n * @param pKey\n * @hidden\n */\n DataUtil.buildHierarchy = function (fKey, from, source, lookup, pKey) {\n var i;\n var grp = {};\n var temp;\n if (lookup.result) {\n lookup = lookup.result;\n }\n if (lookup.GroupGuid) {\n this.throwError('DataManager: Do not have support Grouping in hierarchy');\n }\n for (i = 0; i < lookup.length; i++) {\n var fKeyData = this.getObject(fKey, lookup[i]);\n temp = grp[fKeyData] || (grp[fKeyData] = []);\n temp.push(lookup[i]);\n }\n for (i = 0; i < source.length; i++) {\n var fKeyData = this.getObject(pKey || fKey, source[i]);\n source[i][from] = grp[fKeyData];\n }\n };\n /**\n * The method used to get the field names which started with specified characters.\n *\n * @param {Object} obj\n * @param {string[]} fields?\n * @param {string} prefix?\n * @param fields\n * @param prefix\n * @hidden\n */\n DataUtil.getFieldList = function (obj, fields, prefix) {\n if (prefix === undefined) {\n prefix = '';\n }\n if (fields === undefined || fields === null) {\n return this.getFieldList(obj, [], prefix);\n }\n var copyObj = obj;\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n if (typeof copyObj[prop] === 'object' && !(copyObj[prop] instanceof Array)) {\n this.getFieldList(copyObj[prop], fields, prefix + prop + '.');\n }\n else {\n fields.push(prefix + prop);\n }\n }\n return fields;\n };\n /**\n * Gets the value of the property in the given object.\n * The complex object can be accessed by providing the field names concatenated with dot(.).\n *\n * @param {string} nameSpace - The name of the property to be accessed.\n * @param {Object} from - Defines the source object.\n */\n DataUtil.getObject = function (nameSpace, from) {\n if (!nameSpace) {\n return from;\n }\n if (!from) {\n return undefined;\n }\n if (nameSpace.indexOf('.') === -1) {\n var lowerCaseNameSpace = nameSpace.charAt(0).toLowerCase() + nameSpace.slice(1);\n var upperCaseNameSpace = nameSpace.charAt(0).toUpperCase() + nameSpace.slice(1);\n if (!isNullOrUndefined(from[nameSpace])) {\n return from[nameSpace];\n }\n else {\n if (!isNullOrUndefined(from[lowerCaseNameSpace])) {\n return from[lowerCaseNameSpace];\n }\n else if (!isNullOrUndefined(from[upperCaseNameSpace])) {\n return from[upperCaseNameSpace];\n }\n else {\n return null;\n }\n }\n }\n var value = from;\n var splits = nameSpace.split('.');\n for (var i = 0; i < splits.length; i++) {\n if (value == null) {\n break;\n }\n value = value[splits[i]];\n if (value === undefined) {\n var casing = splits[i].charAt(0).toUpperCase() + splits[i].slice(1);\n value = from[casing] || from[casing.charAt(0).toLowerCase() + casing.slice(1)] || null;\n }\n from = value;\n }\n return value;\n };\n /**\n * To set value for the nameSpace in desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object.\n * @param {Object} value - Value that you need to set.\n * @param {Object} obj - Object to get the inner object value.\n * @return { [key: string]: Object; } | Object\n * @hidden\n */\n DataUtil.setValue = function (nameSpace, value, obj) {\n var keys = nameSpace.toString().split('.');\n var start = obj || {};\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[i];\n if (i + 1 === length) {\n fromObj[key] = value === undefined ? undefined : value;\n }\n else if (isNullOrUndefined(fromObj[key])) {\n fromObj[key] = {};\n }\n fromObj = fromObj[key];\n }\n return start;\n };\n /**\n * Sort the given data based on the field and comparer.\n *\n * @param {Object[]} ds - Defines the input data.\n * @param {string} field - Defines the field to be sorted.\n * @param {Function} comparer - Defines the comparer function used to sort the records.\n */\n DataUtil.sort = function (ds, field, comparer) {\n if (ds.length <= 1) {\n return ds;\n }\n var middle = parseInt((ds.length / 2).toString(), 10);\n var left = ds.slice(0, middle);\n var right = ds.slice(middle);\n left = this.sort(left, field, comparer);\n right = this.sort(right, field, comparer);\n return this.merge(left, right, field, comparer);\n };\n DataUtil.ignoreDiacritics = function (value) {\n if (typeof value !== 'string') {\n return value;\n }\n var result = value.split('');\n var newValue = result.map(function (temp) { return temp in DataUtil.diacritics ? DataUtil.diacritics[temp] : temp; });\n return newValue.join('');\n };\n DataUtil.merge = function (left, right, fieldName, comparer) {\n var result = [];\n var current;\n while (left.length > 0 || right.length > 0) {\n if (left.length > 0 && right.length > 0) {\n if (comparer) {\n current = comparer(this.getVal(left, 0, fieldName), this.getVal(right, 0, fieldName), left[0], right[0]) <= 0 ? left : right;\n }\n else {\n current = left[0][fieldName] < left[0][fieldName] ? left : right;\n }\n }\n else {\n current = left.length > 0 ? left : right;\n }\n result.push(current.shift());\n }\n return result;\n };\n DataUtil.getVal = function (array, index, field) {\n return field ? this.getObject(field, array[index]) : array[index];\n };\n DataUtil.toLowerCase = function (val) {\n return val ? typeof val === 'string' ? val.toLowerCase() : val.toString() : (val === 0 || val === false) ? val.toString() : '';\n };\n /**\n * To perform the filter operation with specified adaptor and returns the result.\n *\n * @param {Object} adaptor\n * @param {string} fnName\n * @param {Object} param1?\n * @param {Object} param2?\n * @param param1\n * @param param2\n * @hidden\n */\n DataUtil.callAdaptorFunction = function (adaptor, fnName, param1, param2) {\n if (fnName in adaptor) {\n var res = adaptor[fnName](param1, param2);\n if (!isNullOrUndefined(res)) {\n param1 = res;\n }\n }\n return param1;\n };\n DataUtil.getAddParams = function (adp, dm, query) {\n var req = {};\n DataUtil.callAdaptorFunction(adp, 'addParams', {\n dm: dm,\n query: query,\n params: query.params,\n reqParams: req\n });\n return req;\n };\n /**\n * Checks wheather the given input is a plain object or not.\n *\n * @param {Object|Object[]} obj\n */\n DataUtil.isPlainObject = function (obj) {\n return (!!obj) && (obj.constructor === Object);\n };\n /**\n * Returns true when the browser cross origin request.\n */\n DataUtil.isCors = function () {\n var xhr = null;\n var request = 'XMLHttpRequest';\n try {\n xhr = new window[request]();\n }\n catch (e) {\n // No exception handling\n }\n return !!xhr && ('withCredentials' in xhr);\n };\n /**\n * Generate random GUID value which will be prefixed with the given value.\n *\n * @param {string} prefix\n */\n DataUtil.getGuid = function (prefix) {\n var hexs = '0123456789abcdef';\n var rand;\n return (prefix || '') + '00000000-0000-4000-0000-000000000000'.replace(/0/g, function (val, i) {\n if ('crypto' in window && 'getRandomValues' in crypto) {\n var arr = new Uint8Array(1);\n window.crypto.getRandomValues(arr);\n rand = arr[0] % 16 | 0;\n }\n else {\n rand = Math.random() * 16 | 0;\n }\n return hexs[i === 19 ? rand & 0x3 | 0x8 : rand];\n });\n };\n /**\n * Checks wheather the given value is null or not.\n *\n * @param {string|Object} val\n * @returns boolean\n */\n DataUtil.isNull = function (val) {\n return val === undefined || val === null;\n };\n /**\n * To get the required items from collection of objects.\n *\n * @param {Object[]} array\n * @param {string} field\n * @param {Function} comparer\n * @returns Object\n * @hidden\n */\n DataUtil.getItemFromComparer = function (array, field, comparer) {\n var keyVal;\n var current;\n var key;\n var i = 0;\n var castRequired = typeof DataUtil.getVal(array, 0, field) === 'string';\n if (array.length) {\n while (isNullOrUndefined(keyVal) && i < array.length) {\n keyVal = DataUtil.getVal(array, i, field);\n key = array[i++];\n }\n }\n for (; i < array.length; i++) {\n current = DataUtil.getVal(array, i, field);\n if (isNullOrUndefined(current)) {\n continue;\n }\n if (castRequired) {\n keyVal = +keyVal;\n current = +current;\n }\n if (comparer(keyVal, current) > 0) {\n keyVal = current;\n key = array[i];\n }\n }\n return key;\n };\n /**\n * To get distinct values of Array or Array of Objects.\n *\n * @param {Object[]} json\n * @param {string} field\n * @param fieldName\n * @param {boolean} requiresCompleteRecord\n * @returns Object[]\n * * distinct array of objects is return when requiresCompleteRecord set as true.\n * @hidden\n */\n DataUtil.distinct = function (json, fieldName, requiresCompleteRecord) {\n requiresCompleteRecord = isNullOrUndefined(requiresCompleteRecord) ? false : requiresCompleteRecord;\n var result = [];\n var val;\n var tmp = {};\n json.forEach(function (data, index) {\n val = typeof (json[index]) === 'object' ? DataUtil.getVal(json, index, fieldName) : json[index];\n if (!(val in tmp)) {\n result.push(!requiresCompleteRecord ? val : json[index]);\n tmp[val] = 1;\n }\n });\n return result;\n };\n /**\n * Process the given records based on the datamanager string.\n *\n * @param {string} datamanager\n * @param dm\n * @param {Object[]} records\n */\n DataUtil.processData = function (dm, records) {\n var query = this.prepareQuery(dm);\n var sampledata = new DataManager(records);\n if (dm.requiresCounts) {\n query.requiresCount();\n }\n /* eslint-disable @typescript-eslint/no-explicit-any */\n // tslint:disable-next-line:no-any\n var result = sampledata.executeLocal(query);\n /* eslint-enable @typescript-eslint/no-explicit-any */\n var returnValue = {\n result: dm.requiresCounts ? result.result : result,\n count: result.count,\n aggregates: JSON.stringify(result.aggregates)\n };\n return dm.requiresCounts ? returnValue : result;\n };\n DataUtil.prepareQuery = function (dm) {\n var _this = this;\n var query = new Query();\n if (dm.select) {\n query.select(dm.select);\n }\n if (dm.where) {\n var where = DataUtil.parse.parseJson(dm.where);\n where.filter(function (pred) {\n if (isNullOrUndefined(pred.condition)) {\n query.where(pred.field, pred.operator, pred.value, pred.ignoreCase, pred.ignoreAccent);\n }\n else {\n var predicateList = [];\n if (pred.field) {\n predicateList.push(new Predicate(pred.field, pred.operator, pred.value, pred.ignoreCase, pred.ignoreAccent));\n }\n else {\n predicateList = predicateList.concat(_this.getPredicate(pred.predicates));\n }\n if (pred.condition === 'or') {\n query.where(Predicate.or(predicateList));\n }\n else if (pred.condition === 'and') {\n query.where(Predicate.and(predicateList));\n }\n }\n });\n }\n if (dm.search) {\n var search = DataUtil.parse.parseJson(dm.search);\n // tslint:disable-next-line:no-string-literal\n search.filter(function (e) { return query.search(e.key, e.fields, e['operator'], \n // tslint:disable-next-line:no-string-literal\n e['ignoreCase'], e['ignoreAccent']); });\n }\n if (dm.aggregates) {\n dm.aggregates.filter(function (e) { return query.aggregate(e.type, e.field); });\n }\n if (dm.sorted) {\n dm.sorted.filter(function (e) { return query.sortBy(e.name, e.direction); });\n }\n if (dm.skip) {\n query.skip(dm.skip);\n }\n if (dm.take) {\n query.take(dm.take);\n }\n if (dm.group) {\n dm.group.filter(function (grp) { return query.group(grp); });\n }\n return query;\n };\n DataUtil.getPredicate = function (pred) {\n var mainPred = [];\n for (var i = 0; i < pred.length; i++) {\n var e = pred[i];\n if (e.field) {\n mainPred.push(new Predicate(e.field, e.operator, e.value, e.ignoreCase, e.ignoreAccent));\n }\n else {\n var childPred = [];\n // tslint:disable-next-line:typedef\n var cpre = this.getPredicate(e.predicates);\n for (var _i = 0, _a = Object.keys(cpre); _i < _a.length; _i++) {\n var prop = _a[_i];\n childPred.push(cpre[prop]);\n }\n mainPred.push(e.condition === 'or' ? Predicate.or(childPred) : Predicate.and(childPred));\n }\n }\n return mainPred;\n };\n /**\n * Specifies the value which will be used to adjust the date value to server timezone.\n *\n * @default null\n */\n DataUtil.serverTimezoneOffset = null;\n /**\n * Species whether are not to be parsed with serverTimezoneOffset value.\n *\n * @hidden\n */\n DataUtil.timeZoneHandling = true;\n /**\n * Throw error with the given string as message.\n *\n * @param {string} er\n * @param error\n */\n DataUtil.throwError = function (error) {\n try {\n throw new Error(error);\n }\n catch (e) {\n // eslint-disable-next-line no-throw-literal\n throw e.message + '\\n' + e.stack;\n }\n };\n DataUtil.aggregates = {\n /**\n * Calculate sum of the given field in the data.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n sum: function (ds, field) {\n var result = 0;\n var val;\n var castRequired = typeof DataUtil.getVal(ds, 0, field) !== 'number';\n for (var i = 0; i < ds.length; i++) {\n val = DataUtil.getVal(ds, i, field);\n if (!isNaN(val) && val !== null) {\n if (castRequired) {\n val = +val;\n }\n result += val;\n }\n }\n return result;\n },\n /**\n * Calculate average value of the given field in the data.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n average: function (ds, field) {\n return DataUtil.aggregates.sum(ds, field) / ds.length;\n },\n /**\n * Returns the min value of the data based on the field.\n *\n * @param {Object[]} ds\n * @param {string|Function} field\n */\n min: function (ds, field) {\n var comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnAscending));\n },\n /**\n * Returns the max value of the data based on the field.\n *\n * @param {Object[]} ds\n * @param {string} field\n * @returns number\n */\n max: function (ds, field) {\n var comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnDescending));\n },\n /**\n * Returns the total number of true value present in the data based on the given boolean field name.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n truecount: function (ds, field) {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', true, true)).length;\n },\n /**\n * Returns the total number of false value present in the data based on the given boolean field name.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n falsecount: function (ds, field) {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', false, true)).length;\n },\n /**\n * Returns the length of the given data.\n *\n * @param {Object[]} ds\n * @param {string} field?\n * @param field\n * @returns number\n */\n count: function (ds, field) {\n return ds.length;\n }\n };\n /**\n * Specifies the Object with filter operators.\n */\n DataUtil.operatorSymbols = {\n '<': 'lessthan',\n '>': 'greaterthan',\n '<=': 'lessthanorequal',\n '>=': 'greaterthanorequal',\n '==': 'equal',\n '!=': 'notequal',\n '*=': 'contains',\n '$=': 'endswith',\n '^=': 'startswith'\n };\n /**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * * It will be used for date/number type filter query.\n */\n DataUtil.odBiOperator = {\n '<': ' lt ',\n '>': ' gt ',\n '<=': ' le ',\n '>=': ' ge ',\n '==': ' eq ',\n '!=': ' ne ',\n 'lessthan': ' lt ',\n 'lessthanorequal': ' le ',\n 'greaterthan': ' gt ',\n 'greaterthanorequal': ' ge ',\n 'equal': ' eq ',\n 'notequal': ' ne '\n };\n /**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * It will be used for string type filter query.\n */\n DataUtil.odUniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'substringof',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'substringof',\n 'doesnotendwith': 'not endswith',\n 'doesnotstartwith': 'not startswith',\n 'doesnotcontain': 'not substringof',\n 'wildcard': 'wildcard',\n 'like': 'like'\n };\n /**\n * Specifies the Object with filter operators which will be used for ODataV4 filter query generation.\n * It will be used for string type filter query.\n */\n DataUtil.odv4UniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'contains',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'contains',\n 'doesnotendwith': 'not endswith',\n 'doesnotstartwith': 'not startswith',\n 'doesnotcontain': 'not contains',\n 'wildcard': 'wildcard',\n 'like': 'like'\n };\n DataUtil.diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03C9': '\\u03C9',\n '\\u03C2': '\\u03C3'\n };\n DataUtil.fnOperators = {\n /**\n * Returns true when the actual input is equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param {boolean} ignoreAccent?\n * @param ignoreCase\n * @param ignoreAccent\n */\n equal: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) === DataUtil.toLowerCase(expected);\n }\n return actual === expected;\n },\n /**\n * Returns true when the actual input is not equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n notequal: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n return !DataUtil.fnOperators.equal(actual, expected, ignoreCase);\n },\n /**\n * Returns true when the actual input is less than to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n lessthan: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) < DataUtil.toLowerCase(expected);\n }\n if (isNullOrUndefined(actual)) {\n actual = undefined;\n }\n return actual < expected;\n },\n /**\n * Returns true when the actual input is greater than to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n greaterthan: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) > DataUtil.toLowerCase(expected);\n }\n return actual > expected;\n },\n /**\n * Returns true when the actual input is less than or equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n lessthanorequal: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) <= DataUtil.toLowerCase(expected);\n }\n if (isNullOrUndefined(actual)) {\n actual = undefined;\n }\n return actual <= expected;\n },\n /**\n * Returns true when the actual input is greater than or equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n greaterthanorequal: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) >= DataUtil.toLowerCase(expected);\n }\n return actual >= expected;\n },\n /**\n * Returns true when the actual input contains the given string.\n *\n * @param {string|number} actual\n * @param {string|number} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n contains: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n DataUtil.toLowerCase(actual).indexOf(DataUtil.toLowerCase(expected)) !== -1;\n }\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n actual.toString().indexOf(expected) !== -1;\n },\n /**\n * Returns true when the actual input not contains the given string.\n *\n * @param {string|number} actual\n * @param {string|number} expected\n * @param {boolean} ignoreCase?\n */\n doesnotcontain: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n DataUtil.toLowerCase(actual).indexOf(DataUtil.toLowerCase(expected)) === -1;\n }\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n actual.toString().indexOf(expected) === -1;\n },\n /**\n * Returns true when the given input value is not null.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isnotnull: function (actual) {\n return actual !== null && actual !== undefined;\n },\n /**\n * Returns true when the given input value is null.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isnull: function (actual) {\n return actual === null || actual === undefined;\n },\n /**\n * Returns true when the actual input starts with the given string\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n startswith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.startsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.startsWith(actual, expected);\n },\n /**\n * Returns true when the actual input not starts with the given string\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n doesnotstartwith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.notStartsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.notStartsWith(actual, expected);\n },\n /**\n * Returns true when the actual input like with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n like: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.like(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.like(actual, expected);\n },\n /**\n * Returns true when the given input value is empty.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isempty: function (actual) {\n return actual === undefined || actual === '';\n },\n /**\n * Returns true when the given input value is not empty.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isnotempty: function (actual) {\n return actual !== undefined && actual !== '';\n },\n /**\n * Returns true when the actual input pattern(wildcard) matches with the given string.\n *\n * @param {string|Date} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n wildcard: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return (actual || typeof actual === 'boolean') && expected && typeof actual !== 'object' &&\n DataUtil.wildCard(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return (actual || typeof actual === 'boolean') && expected && DataUtil.wildCard(actual, expected);\n },\n /**\n * Returns true when the actual input ends with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n endswith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.endsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.endsWith(actual, expected);\n },\n /**\n * Returns true when the actual input not ends with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n doesnotendwith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.notEndsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.notEndsWith(actual, expected);\n },\n /**\n * It will return the filter operator based on the filter symbol.\n *\n * @param {string} operator\n * @hidden\n */\n processSymbols: function (operator) {\n var fnName = DataUtil.operatorSymbols[operator];\n if (fnName) {\n var fn = DataUtil.fnOperators[fnName];\n return fn;\n }\n return DataUtil.throwError('Query - Process Operator : Invalid operator');\n },\n /**\n * It will return the valid filter operator based on the specified operators.\n *\n * @param {string} operator\n * @hidden\n */\n processOperator: function (operator) {\n var fn = DataUtil.fnOperators[operator];\n if (fn) {\n return fn;\n }\n return DataUtil.fnOperators.processSymbols(operator);\n }\n };\n /**\n * To perform the parse operation on JSON data, like convert to string from JSON or convert to JSON from string.\n */\n DataUtil.parse = {\n /**\n * Parse the given string to the plain JavaScript object.\n *\n * @param {string|Object|Object[]} jsonText\n */\n parseJson: function (jsonText) {\n if (typeof jsonText === 'string') {\n jsonText = JSON.parse(jsonText, DataUtil.parse.jsonReviver);\n }\n else if (jsonText instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(jsonText);\n }\n else if (typeof jsonText === 'object' && jsonText !== null) {\n DataUtil.parse.iterateAndReviveJson(jsonText);\n }\n return jsonText;\n },\n /**\n * It will perform on array of values.\n *\n * @param {string[]|Object[]} array\n * @hidden\n */\n iterateAndReviveArray: function (array) {\n for (var i = 0; i < array.length; i++) {\n if (typeof array[i] === 'object' && array[i] !== null) {\n DataUtil.parse.iterateAndReviveJson(array[i]);\n // eslint-disable-next-line no-useless-escape\n }\n else if (typeof array[i] === 'string' && !/^[\\s]*\\[|^[\\s]*\\{(.)+:|\\\"/g.test(array[i])) {\n array[i] = DataUtil.parse.jsonReviver('', array[i]);\n }\n else {\n array[i] = DataUtil.parse.parseJson(array[i]);\n }\n }\n },\n /**\n * It will perform on JSON values\n *\n * @param {JSON} json\n * @hidden\n */\n iterateAndReviveJson: function (json) {\n var value;\n var keys = Object.keys(json);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var prop = keys_2[_i];\n if (DataUtil.startsWith(prop, '__')) {\n continue;\n }\n value = json[prop];\n if (typeof value === 'object') {\n if (value instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(value);\n }\n else if (value) {\n DataUtil.parse.iterateAndReviveJson(value);\n }\n }\n else {\n json[prop] = DataUtil.parse.jsonReviver(json[prop], value);\n }\n }\n },\n /**\n * It will perform on JSON values\n *\n * @param {string} field\n * @param {string|Date} value\n * @hidden\n */\n jsonReviver: function (field, value) {\n if (typeof value === 'string') {\n // eslint-disable-next-line security/detect-unsafe-regex\n var ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n var offSet = DataUtil.timeZoneHandling ? DataUtil.serverTimezoneOffset : null;\n if (ms) {\n return DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), offSet, true);\n // eslint-disable-next-line no-useless-escape, security/detect-unsafe-regex\n }\n else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n var isUTC = value.indexOf('Z') > -1 || value.indexOf('z') > -1;\n var arr = value.split(/[^0-9.]/);\n if (isUTC) {\n if (arr[5].indexOf('.') > -1) {\n var secondsMs = arr[5].split('.');\n arr[5] = secondsMs[0];\n arr[6] = new Date(value).getUTCMilliseconds().toString();\n }\n else {\n arr[6] = '00';\n }\n value = DataUtil.dateParse\n .toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5] ? arr[5] : '00', 10), parseInt(arr[6], 10)), DataUtil.serverTimezoneOffset, false);\n }\n else {\n var utcFormat = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5] ? arr[5] : '00', 10));\n var hrs = parseInt(arr[6], 10);\n var mins = parseInt(arr[7], 10);\n if (isNaN(hrs) && isNaN(mins)) {\n return utcFormat;\n }\n if (value.indexOf('+') > -1) {\n utcFormat.setHours(utcFormat.getHours() - hrs, utcFormat.getMinutes() - mins);\n }\n else {\n utcFormat.setHours(utcFormat.getHours() + hrs, utcFormat.getMinutes() + mins);\n }\n value = DataUtil.dateParse\n .toTimeZone(utcFormat, DataUtil.serverTimezoneOffset, false);\n }\n if (DataUtil.serverTimezoneOffset == null) {\n value = DataUtil.dateParse.addSelfOffset(value);\n }\n }\n else if (/^\\d{4}-\\d{2}-\\d{2}$/.test(value)) {\n var arr = value.split(/[^0-9.]/);\n return new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\n }\n return value;\n },\n /**\n * Check wheather the given value is JSON or not.\n *\n * @param {Object[]} jsonData\n */\n isJson: function (jsonData) {\n if (typeof jsonData[0] === 'string') {\n return jsonData;\n }\n return DataUtil.parse.parseJson(jsonData);\n },\n /**\n * Checks wheather the given value is GUID or not.\n *\n * @param {string} value\n */\n isGuid: function (value) {\n // eslint-disable-next-line security/detect-unsafe-regex\n var regex = /[A-Fa-f0-9]{8}(?:-[A-Fa-f0-9]{4}){3}-[A-Fa-f0-9]{12}/i;\n var match = regex.exec(value);\n return match != null;\n },\n /**\n * The method used to replace the value based on the type.\n *\n * @param {Object} value\n * @param {boolean} stringify\n * @hidden\n */\n replacer: function (value, stringify) {\n if (DataUtil.isPlainObject(value)) {\n return DataUtil.parse.jsonReplacer(value, stringify);\n }\n if (value instanceof Array) {\n return DataUtil.parse.arrayReplacer(value);\n }\n if (value instanceof Date) {\n return DataUtil.parse.jsonReplacer({ val: value }, stringify).val;\n }\n return value;\n },\n /**\n * It will replace the JSON value.\n *\n * @param {string} key\n * @param {Object} val\n * @param stringify\n * @hidden\n */\n jsonReplacer: function (val, stringify) {\n var value;\n var keys = Object.keys(val);\n for (var _i = 0, keys_3 = keys; _i < keys_3.length; _i++) {\n var prop = keys_3[_i];\n value = val[prop];\n if (!(value instanceof Date)) {\n continue;\n }\n var d = value;\n if (DataUtil.serverTimezoneOffset == null) {\n val[prop] = DataUtil.dateParse.toTimeZone(d, null).toJSON();\n }\n else {\n d = new Date(+d + DataUtil.serverTimezoneOffset * 3600000);\n val[prop] = DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(d), null).toJSON();\n }\n }\n return val;\n },\n /**\n * It will replace the Array of value.\n *\n * @param {string} key\n * @param {Object[]} val\n * @hidden\n */\n arrayReplacer: function (val) {\n for (var i = 0; i < val.length; i++) {\n if (DataUtil.isPlainObject(val[i])) {\n val[i] = DataUtil.parse.jsonReplacer(val[i]);\n }\n else if (val[i] instanceof Date) {\n val[i] = DataUtil.parse.jsonReplacer({ date: val[i] }).date;\n }\n }\n return val;\n },\n /**\n * It will replace the Date object with respective to UTC format value.\n *\n * @param {string} key\n * @param {any} value\n * @hidden\n */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n /* tslint:disable-next-line:no-any */\n jsonDateReplacer: function (key, value) {\n /* eslint-enable @typescript-eslint/no-explicit-any */\n if (key === 'value' && value) {\n if (typeof value === 'string') {\n // eslint-disable-next-line security/detect-unsafe-regex\n var ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n if (ms) {\n value = DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), null, true);\n // eslint-disable-next-line no-useless-escape, security/detect-unsafe-regex\n }\n else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n var arr = value.split(/[^0-9]/);\n value = DataUtil.dateParse\n .toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10)), null, true);\n }\n }\n if (value instanceof Date) {\n value = DataUtil.dateParse.addSelfOffset(value);\n if (DataUtil.serverTimezoneOffset === null) {\n return DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(value), null).toJSON();\n }\n else {\n value = DataUtil.dateParse.toTimeZone(value, (((value.getTimezoneOffset() / 60) * 2)\n - DataUtil.serverTimezoneOffset), false);\n return value.toJSON();\n }\n }\n }\n return value;\n }\n };\n /**\n * @hidden\n */\n DataUtil.dateParse = {\n addSelfOffset: function (input) {\n return new Date(+input - (input.getTimezoneOffset() * 60000));\n },\n toUTC: function (input) {\n return new Date(+input + (input.getTimezoneOffset() * 60000));\n },\n toTimeZone: function (input, offset, utc) {\n if (offset === null) {\n return input;\n }\n var unix = utc ? DataUtil.dateParse.toUTC(input) : input;\n return new Date(+unix - (offset * 3600000));\n },\n toLocalTime: function (input) {\n var datefn = input;\n var timeZone = -datefn.getTimezoneOffset();\n var differenceString = timeZone >= 0 ? '+' : '-';\n var localtimefn = function (num) {\n var norm = Math.floor(Math.abs(num));\n return (norm < 10 ? '0' : '') + norm;\n };\n var val = datefn.getFullYear() + '-' + localtimefn(datefn.getMonth() + 1) + '-' + localtimefn(datefn.getDate()) +\n 'T' + localtimefn(datefn.getHours()) +\n ':' + localtimefn(datefn.getMinutes()) +\n ':' + localtimefn(datefn.getSeconds()) +\n differenceString + localtimefn(timeZone / 60) +\n ':' + localtimefn(timeZone % 60);\n return val;\n }\n };\n return DataUtil;\n}());\nexport { DataUtil };\n","/**\n * IncrementalSearch module file\n */\nvar queryString = '';\nvar prevString = '';\nvar matches = [];\nvar activeClass = 'e-active';\nvar prevElementId = '';\n/**\n * Search and focus the list item based on key code matches with list text content\n *\n * @param { number } keyCode - Specifies the key code which pressed on keyboard events.\n * @param { HTMLElement[]} items - Specifies an array of HTMLElement, from which matches find has done.\n * @param { number } selectedIndex - Specifies the selected item in list item, so that search will happen\n * after selected item otherwise it will do from initial.\n * @param { boolean } ignoreCase - Specifies the case consideration when search has done.\n * @param {string} elementId - Specifies the list element ID.\n * @returns {Element} Returns list item based on key code matches with list text content.\n */\nexport function incrementalSearch(keyCode, items, selectedIndex, ignoreCase, elementId) {\n queryString += String.fromCharCode(keyCode);\n setTimeout(function () {\n queryString = '';\n }, 1000);\n var index;\n queryString = ignoreCase ? queryString.toLowerCase() : queryString;\n if (prevElementId === elementId && prevString === queryString) {\n for (var i = 0; i < matches.length; i++) {\n if (matches[i].classList.contains(activeClass)) {\n index = i;\n break;\n }\n }\n index = index + 1;\n return matches[index] ? matches[index] : matches[0];\n }\n else {\n var listItems = items;\n var strLength = queryString.length;\n var text = void 0;\n var item = void 0;\n selectedIndex = selectedIndex ? selectedIndex + 1 : 0;\n var i = selectedIndex;\n matches = [];\n do {\n if (i === listItems.length) {\n i = -1;\n }\n if (i === -1) {\n index = 0;\n }\n else {\n index = i;\n }\n item = listItems[index];\n text = ignoreCase ? item.innerText.toLowerCase() : item.innerText;\n if (text.substr(0, strLength) === queryString) {\n matches.push(listItems[index]);\n }\n i++;\n } while (i !== selectedIndex);\n prevString = queryString;\n prevElementId = elementId;\n return matches[0];\n }\n}\n/**\n * Search the list item based on given input value matches with search type.\n *\n * @param {string} inputVal - Specifies the given input value.\n * @param {HTMLElement[]} items - Specifies the list items.\n * @param {SearchType} searchType - Specifies the filter type.\n * @param {boolean} ignoreCase - Specifies the case sensitive option for search operation.\n * @returns {Element | number} Returns the search matched items.\n */\nexport function Search(inputVal, items, searchType, ignoreCase, dataSource, fields, type) {\n var listItems = items;\n ignoreCase = ignoreCase !== undefined && ignoreCase !== null ? ignoreCase : true;\n var itemData = { item: null, index: null };\n if (inputVal && inputVal.length) {\n var strLength = inputVal.length;\n var queryStr = ignoreCase ? inputVal.toLocaleLowerCase() : inputVal;\n queryStr = escapeCharRegExp(queryStr);\n var _loop_1 = function (i, itemsData) {\n var item = itemsData[i];\n var text = void 0;\n var filterValue;\n if (items && dataSource) {\n var checkField_1 = item;\n var fieldValue_1 = fields.text.split('.');\n dataSource.filter(function (data) {\n Array.prototype.slice.call(fieldValue_1).forEach(function (value) {\n /* eslint-disable security/detect-object-injection */\n if (type === 'object' && (!data.isHeader && checkField_1.textContent.toString().indexOf(data[value]) !== -1) && checkField_1.getAttribute('data-value') === data[fields.value].toString() || type === 'string' && checkField_1.textContent.toString().indexOf(data) !== -1) {\n filterValue = type === 'object' ? data[value] : data;\n }\n });\n });\n }\n text = dataSource && filterValue ? (ignoreCase ? filterValue.toLocaleLowerCase() : filterValue).replace(/^\\s+|\\s+$/g, '') : (ignoreCase ? item.textContent.toLocaleLowerCase() : item.textContent).replace(/^\\s+|\\s+$/g, '');\n /* eslint-disable security/detect-non-literal-regexp */\n if ((searchType === 'Equal' && text === queryStr) || (searchType === 'StartsWith' && text.substr(0, strLength) === queryStr) || (searchType === 'EndsWith' && text.substr(text.length - queryStr.length) === queryStr) || (searchType === 'Contains' && new RegExp(queryStr, \"g\").test(text))) {\n itemData.item = item;\n itemData.index = i;\n return { value: { item: item, index: i } };\n }\n };\n for (var i = 0, itemsData = listItems; i < itemsData.length; i++) {\n var state_1 = _loop_1(i, itemsData);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return itemData;\n /* eslint-enable security/detect-non-literal-regexp */\n }\n return itemData;\n}\n/* eslint-enable security/detect-object-injection */\nexport function escapeCharRegExp(value) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\nexport function resetIncrementalSearchValues(elementId) {\n if (prevElementId === elementId) {\n prevElementId = '';\n prevString = '';\n queryString = '';\n matches = [];\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, addClass, append, Property, Event, L10n, compile } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, extend, removeClass, prepend, isNullOrUndefined, detach, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, rippleEffect, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { select, selectAll } from '@syncfusion/ej2-base';\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"groupBy\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"htmlAttributes\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\nexport var dropDownBaseClasses = {\n root: 'e-dropdownbase',\n rtl: 'e-rtl',\n content: 'e-content',\n selected: 'e-active',\n hover: 'e-hover',\n noData: 'e-nodata',\n fixedHead: 'e-fixed-head',\n focus: 'e-item-focus',\n li: 'e-list-item',\n group: 'e-list-group-item',\n disabled: 'e-disabled',\n grouping: 'e-dd-group'\n};\nvar ITEMTEMPLATE_PROPERTY = 'ItemTemplate';\nvar DISPLAYTEMPLATE_PROPERTY = 'DisplayTemplate';\nvar SPINNERTEMPLATE_PROPERTY = 'SpinnerTemplate';\nvar VALUETEMPLATE_PROPERTY = 'ValueTemplate';\nvar GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nvar HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nvar FOOTERTEMPLATE_PROPERTY = 'FooterTemplate';\nvar NORECORDSTEMPLATE_PROPERTY = 'NoRecordsTemplate';\nvar ACTIONFAILURETEMPLATE_PROPERTY = 'ActionFailureTemplate';\nvar HIDE_GROUPLIST = 'e-hide-group-header';\n/**\n * DropDownBase component will generate the list items based on given data and act as base class to drop-down related components\n */\nvar DropDownBase = /** @class */ (function (_super) {\n __extends(DropDownBase, _super);\n /**\n * * Constructor for DropDownBase class\n *\n * @param {DropDownBaseModel} options - Specifies the DropDownBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isPreventChange = false;\n _this.isDynamicDataChange = false;\n _this.addedNewItem = false;\n _this.isAddNewItemTemplate = false;\n _this.isRequesting = false;\n return _this;\n }\n DropDownBase.prototype.getPropObject = function (prop, newProp, oldProp) {\n var newProperty = new Object();\n var oldProperty = new Object();\n var propName = function (prop) {\n return prop;\n };\n newProperty[propName(prop)] = newProp[propName(prop)];\n oldProperty[propName(prop)] = oldProp[propName(prop)];\n var data = new Object();\n data.newProperty = newProperty;\n data.oldProperty = oldProperty;\n return data;\n };\n DropDownBase.prototype.getValueByText = function (text, ignoreCase, ignoreAccent) {\n var value = null;\n if (!isNullOrUndefined(this.listData)) {\n if (ignoreCase) {\n value = this.checkValueCase(text, true, ignoreAccent);\n }\n else {\n value = this.checkValueCase(text, false, ignoreAccent);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkValueCase = function (text, ignoreCase, ignoreAccent, isTextByValue) {\n var _this = this;\n var value = null;\n if (isTextByValue) {\n value = text;\n }\n var dataSource = this.listData;\n var fields = this.fields;\n var type = this.typeOfData(dataSource).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var item = dataSource_1[_i];\n if (!isNullOrUndefined(item)) {\n if (ignoreAccent) {\n value = this.checkingAccent(String(item), text, ignoreCase);\n }\n else {\n if (ignoreCase) {\n if (this.checkIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase, isTextByValue);\n }\n }\n }\n }\n }\n }\n else {\n if (ignoreCase) {\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && _this.checkIgnoreCase(getValue(fields.text, item).toString(), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n else {\n if (isTextByValue) {\n var compareValue_1 = null;\n compareValue_1 = value;\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && !isNullOrUndefined(value) && itemValue.toString() === compareValue_1.toString()) {\n value = getValue(fields.text, item);\n }\n });\n }\n else {\n dataSource.filter(function (item) {\n if (_this.checkNonIgnoreCase(getValue(fields.text, item), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n }\n }\n return value;\n };\n DropDownBase.prototype.checkingAccent = function (item, text, ignoreCase) {\n var dataItem = DataUtil.ignoreDiacritics(String(item));\n var textItem = DataUtil.ignoreDiacritics(text.toString());\n var value = null;\n if (ignoreCase) {\n if (this.checkIgnoreCase(dataItem, textItem)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkIgnoreCase = function (item, text) {\n return String(item).toLowerCase() === text.toString().toLowerCase() ? true : false;\n };\n DropDownBase.prototype.checkNonIgnoreCase = function (item, text) {\n return String(item) === text.toString() ? true : false;\n };\n DropDownBase.prototype.getItemValue = function (dataItem, typedText, ignoreCase, isTextByValue) {\n var value = null;\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n if (isTextByValue) {\n value = dataItem.toString();\n }\n else {\n if (ignoreCase) {\n value = type === 'string' ? String(dataItem) : this.getFormattedValue(String(dataItem));\n }\n else {\n value = type === 'string' ? typedText : this.getFormattedValue(typedText);\n }\n }\n return value;\n };\n DropDownBase.prototype.templateCompiler = function (baseTemplate) {\n var checkTemplate = false;\n if (typeof baseTemplate !== 'function' && baseTemplate) {\n try {\n checkTemplate = (selectAll(baseTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownBase.prototype.l10nUpdate = function (actionFailure) {\n var ele = this.getModuleName() === 'listbox' ? this.ulElement : this.list;\n if (this.noRecordsTemplate !== 'No records found' || this.actionFailureTemplate !== 'Request failed') {\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var compiledString = void 0;\n var templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n ele.innerHTML = '';\n var tempaltecheck = this.templateCompiler(template);\n if (typeof template !== 'function' && tempaltecheck) {\n compiledString = compile(select(template, document).innerHTML.trim());\n }\n else {\n compiledString = compile(template);\n }\n var templateName = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var noDataElement = void 0;\n if ((this.isReact) && typeof template === 'function') {\n noDataElement = compiledString({}, this, templateName, templateId, this.isStringTemplate, null);\n }\n else {\n noDataElement = compiledString({}, this, templateName, templateId, this.isStringTemplate, null, ele);\n }\n if (noDataElement && noDataElement.length > 0) {\n for (var i = 0; i < noDataElement.length; i++) {\n if (this.getModuleName() === 'listbox' && templateName === 'noRecordsTemplate') {\n if (noDataElement[i].nodeName === '#text') {\n var liElem = this.createElement('li');\n liElem.textContent = noDataElement[i].textContent;\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n ele.appendChild(liElem);\n }\n else {\n noDataElement[i].classList.add('e-list-nr-template');\n ele.appendChild(noDataElement[i]);\n }\n }\n else {\n ele.appendChild(noDataElement[i]);\n }\n }\n }\n this.renderReactTemplates();\n }\n else {\n var l10nLocale = { noRecordsTemplate: 'No records found', actionFailureTemplate: 'Request failed' };\n var componentLocale = new L10n(this.getLocaleName(), {}, this.locale);\n if (componentLocale.getConstant('actionFailureTemplate') !== '' || componentLocale.getConstant('noRecordsTemplate') !== '') {\n this.l10n = componentLocale;\n }\n else {\n this.l10n = new L10n(this.getModuleName() === 'listbox' ? 'listbox' :\n this.getModuleName() === 'mention' ? 'mention' : 'dropdowns', l10nLocale, this.locale);\n }\n var content = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n if (this.getModuleName() === 'listbox') {\n var liElem = this.createElement('li');\n liElem.textContent = content;\n ele.appendChild(liElem);\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n }\n else {\n if (!isNullOrUndefined(ele)) {\n ele.innerHTML = content;\n }\n }\n }\n };\n DropDownBase.prototype.getLocaleName = function () {\n return 'drop-down-base';\n };\n DropDownBase.prototype.getTextByValue = function (value) {\n var text = this.checkValueCase(value, false, false, true);\n return text;\n };\n DropDownBase.prototype.getFormattedValue = function (value) {\n if (this.listData && this.listData.length) {\n var item = void 0;\n if (this.properties.allowCustomValue && this.properties.value && this.properties.value instanceof Array && this.properties.value.length > 0) {\n item = this.typeOfData(this.properties.value);\n }\n else {\n item = this.typeOfData(this.listData);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'number'\n || item.typeof === 'number') {\n return parseFloat(value);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'boolean'\n || item.typeof === 'boolean') {\n return ((value === 'true') || ('' + value === 'true'));\n }\n }\n return value;\n };\n /**\n * Sets RTL to dropdownbase wrapper\n *\n * @returns {void}\n */\n DropDownBase.prototype.setEnableRtl = function () {\n if (!isNullOrUndefined(this.enableRtlElements)) {\n if (this.list) {\n this.enableRtlElements.push(this.list);\n }\n if (this.enableRtl) {\n addClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n else {\n removeClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n }\n };\n /**\n * Initialize the Component.\n *\n * @returns {void}\n */\n DropDownBase.prototype.initialize = function (e) {\n this.bindEvent = true;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE_PROPERTY;\n if (this.element.tagName === 'UL') {\n var jsonElement = ListBase.createJsonFromElement(this.element);\n this.setProperties({ fields: { text: 'text', value: 'text' } }, true);\n this.resetList(jsonElement, this.fields);\n }\n else if (this.element.tagName === 'SELECT') {\n var dataSource = this.dataSource instanceof Array ? (this.dataSource.length > 0 ? true : false)\n : !isNullOrUndefined(this.dataSource) ? true : false;\n if (!dataSource) {\n this.renderItemsBySelect();\n }\n else if (this.isDynamicDataChange) {\n this.setListData(this.dataSource, this.fields, this.query);\n }\n }\n else {\n this.setListData(this.dataSource, this.fields, this.query, e);\n }\n };\n /**\n * Get the properties to be maintained in persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownBase.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @param {string} value - Specifies the attribute values to add on the input element.\n * @returns {void}\n */\n DropDownBase.prototype.updateDataAttribute = function (value) {\n var invalidAttr = ['class', 'style', 'id', 'type', 'aria-expanded', 'aria-autocomplete', 'aria-readonly'];\n var attr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(this.getModuleName() === 'dropdownlist' && this.element.attributes[a].name === 'readonly')) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(attr, value, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n };\n DropDownBase.prototype.renderItemsBySelect = function () {\n var element = this.element;\n var fields = { value: 'value', text: 'text' };\n var jsonElement = [];\n var group = element.querySelectorAll('select>optgroup');\n var option = element.querySelectorAll('select>option');\n this.getJSONfromOption(jsonElement, option, fields);\n if (group.length) {\n for (var i = 0; i < group.length; i++) {\n var item = group[i];\n var optionGroup = {};\n optionGroup[fields.text] = item.label;\n optionGroup.isHeader = true;\n var child = item.querySelectorAll('option');\n jsonElement.push(optionGroup);\n this.getJSONfromOption(jsonElement, child, fields);\n }\n element.querySelectorAll('select>option');\n }\n this.updateFields(fields.text, fields.value, this.fields.groupBy, this.fields.htmlAttributes, this.fields.iconCss);\n this.resetList(jsonElement, fields);\n };\n DropDownBase.prototype.updateFields = function (text, value, groupBy, htmlAttributes, iconCss) {\n var field = {\n 'fields': {\n text: text,\n value: value,\n groupBy: !isNullOrUndefined(groupBy) ? groupBy : this.fields && this.fields.groupBy,\n htmlAttributes: !isNullOrUndefined(htmlAttributes) ? htmlAttributes : this.fields && this.fields.htmlAttributes,\n iconCss: !isNullOrUndefined(iconCss) ? iconCss : this.fields && this.fields.iconCss\n }\n };\n this.setProperties(field, true);\n };\n DropDownBase.prototype.getJSONfromOption = function (items, options, fields) {\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var option = options_1[_i];\n var json = {};\n json[fields.text] = option.innerText;\n json[fields.value] = !isNullOrUndefined(option.getAttribute(fields.value)) ?\n option.getAttribute(fields.value) : option.innerText;\n items.push(json);\n }\n };\n /**\n * Execute before render the list items\n *\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.preRender = function () {\n // there is no event handler\n this.scrollTimer = -1;\n this.enableRtlElements = [];\n this.isRequested = false;\n this.isDataFetched = false;\n this.itemTemplateId = \"\" + this.element.id + ITEMTEMPLATE_PROPERTY;\n this.displayTemplateId = \"\" + this.element.id + DISPLAYTEMPLATE_PROPERTY;\n this.spinnerTemplateId = \"\" + this.element.id + SPINNERTEMPLATE_PROPERTY;\n this.valueTemplateId = \"\" + this.element.id + VALUETEMPLATE_PROPERTY;\n this.groupTemplateId = \"\" + this.element.id + GROUPTEMPLATE_PROPERTY;\n this.headerTemplateId = \"\" + this.element.id + HEADERTEMPLATE_PROPERTY;\n this.footerTemplateId = \"\" + this.element.id + FOOTERTEMPLATE_PROPERTY;\n this.noRecordsTemplateId = \"\" + this.element.id + NORECORDSTEMPLATE_PROPERTY;\n };\n /**\n * Creates the list items of DropDownBase component.\n *\n * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {void}\n */\n DropDownBase.prototype.setListData = function (dataSource, fields, query, event) {\n var _this = this;\n fields = fields ? fields : this.fields;\n var ulElement;\n this.isActive = true;\n var eventArgs = { cancel: false, data: dataSource, query: query };\n this.isPreventChange = this.isAngular && this.preventChange ? true : this.isPreventChange;\n if (!this.isRequesting) {\n this.trigger('actionBegin', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.isRequesting = true;\n _this.showSpinner();\n if (dataSource instanceof DataManager) {\n _this.isRequested = true;\n if (_this.isDataFetched) {\n _this.emptyDataRequest(fields);\n return;\n }\n eventArgs.data.executeQuery(_this.getQuery(eventArgs.query)).then(function (e) {\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', e, function (e) {\n if (!e.cancel) {\n _this.isRequesting = false;\n var listItems = e.result;\n if (listItems.length === 0) {\n _this.isDataFetched = true;\n }\n ulElement = _this.renderItems(listItems, fields);\n _this.onActionComplete(ulElement, listItems, e);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.isRequested = false;\n _this.bindChildItems(listItems, ulElement, fields, e);\n }\n });\n }).catch(function (e) {\n _this.isRequested = false;\n _this.isRequesting = false;\n _this.onActionFailure(e);\n _this.hideSpinner();\n });\n }\n else {\n var dataManager = new DataManager(eventArgs.data);\n var listItems = (_this.getQuery(eventArgs.query)).executeLocal(dataManager);\n var localDataArgs = { cancel: false, result: listItems };\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', localDataArgs, function (localDataArgs) {\n if (!localDataArgs.cancel) {\n _this.isRequesting = false;\n ulElement = _this.renderItems(localDataArgs.result, fields);\n _this.onActionComplete(ulElement, localDataArgs.result, event);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.bindChildItems(localDataArgs.result, ulElement, fields);\n setTimeout(function () {\n if (_this.getModuleName() === 'multiselect' && _this.itemTemplate != null && (ulElement.childElementCount > 0 && (ulElement.children[0].childElementCount > 0 || (_this.fields.groupBy && ulElement.children[1] && ulElement.children[1].childElementCount > 0)))) {\n _this.updateDataList();\n }\n });\n }\n });\n }\n }\n });\n }\n };\n DropDownBase.prototype.bindChildItems = function (listItems, ulElement, fields, e) {\n var _this = this;\n if (listItems.length >= 100 && this.getModuleName() === 'autocomplete') {\n setTimeout(function () {\n var childNode = _this.remainingItems(_this.sortedData, fields);\n append(childNode, ulElement);\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.updateListValues();\n _this.raiseDataBound(listItems, e);\n }, 0);\n }\n else {\n this.raiseDataBound(listItems, e);\n }\n };\n DropDownBase.prototype.updateListValues = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.findListElement = function (list, findNode, attribute, value) {\n var liElement = null;\n if (list) {\n var listArr = [].slice.call(list.querySelectorAll(findNode));\n for (var index = 0; index < listArr.length; index++) {\n if (listArr[index].getAttribute(attribute) === (value + '')) {\n liElement = listArr[index];\n break;\n }\n }\n }\n return liElement;\n };\n DropDownBase.prototype.raiseDataBound = function (listItems, e) {\n this.hideSpinner();\n var dataBoundEventArgs = {\n items: listItems,\n e: e\n };\n this.trigger('dataBound', dataBoundEventArgs);\n };\n DropDownBase.prototype.remainingItems = function (dataSource, fields) {\n var spliceData = new DataManager(dataSource).executeLocal(new Query().skip(100));\n if (this.itemTemplate) {\n var listElements = this.templateListItem(spliceData, fields);\n return [].slice.call(listElements.childNodes);\n }\n var type = this.typeOfData(spliceData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n return ListBase.createListItemFromArray(this.createElement, spliceData, true, this.listOption(spliceData, fields), this);\n }\n return ListBase.createListItemFromJson(this.createElement, spliceData, this.listOption(spliceData, fields), 1, true, this);\n };\n DropDownBase.prototype.emptyDataRequest = function (fields) {\n var listItems = [];\n this.onActionComplete(this.renderItems(listItems, fields), listItems);\n this.isRequested = false;\n this.hideSpinner();\n };\n DropDownBase.prototype.showSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.hideSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.onActionFailure = function (e) {\n this.liCollections = [];\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n if (!isNullOrUndefined(this.list)) {\n addClass([this.list], dropDownBaseClasses.noData);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.onActionComplete = function (ulElement, list, e) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n this.listData = list;\n if (this.getModuleName() !== 'listbox') {\n ulElement.setAttribute('tabindex', '0');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['itemTemplate', 'groupTemplate', 'actionFailureTemplate', 'noRecordsTemplate']);\n }\n this.fixedHeaderElement = isNullOrUndefined(this.fixedHeaderElement) ? this.fixedHeaderElement : null;\n if (this.getModuleName() === 'multiselect' && this.properties.allowCustomValue && this.fields.groupBy) {\n for (var i = 0; i < ulElement.childElementCount; i++) {\n if (ulElement.children[i].classList.contains('e-list-group-item')) {\n if (isNullOrUndefined(ulElement.children[i].innerHTML) || ulElement.children[i].innerHTML == \"\") {\n addClass([ulElement.children[i]], HIDE_GROUPLIST);\n }\n }\n }\n }\n if (!isNullOrUndefined(this.list)) {\n this.list.innerHTML = '';\n this.list.appendChild(ulElement);\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.postRender(this.list, list, this.bindEvent);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.postRender = function (listElement, list, bindEvent) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var focusItem = listElement.querySelector('.' + dropDownBaseClasses.li);\n var selectedItem = listElement.querySelector('.' + dropDownBaseClasses.selected);\n if (focusItem && !selectedItem) {\n focusItem.classList.add(dropDownBaseClasses.focus);\n }\n if (list.length <= 0) {\n this.l10nUpdate();\n addClass([listElement], dropDownBaseClasses.noData);\n }\n else {\n listElement.classList.remove(dropDownBaseClasses.noData);\n }\n };\n /**\n * Get the query to do the data operation before list item generation.\n *\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {Query} Returns the query to do the data query operation.\n */\n DropDownBase.prototype.getQuery = function (query) {\n return query ? query : this.query ? this.query : new Query();\n };\n /**\n * To render the template content for group header element.\n *\n * @param {HTMLElement} listEle - Specifies the group list elements.\n * @returns {void}\n */\n DropDownBase.prototype.renderGroupTemplate = function (listEle) {\n if (this.fields.groupBy !== null && this.dataSource || this.element.querySelector('.' + dropDownBaseClasses.group)) {\n var dataSource = this.dataSource;\n var option = { groupTemplateID: this.groupTemplateId, isStringTemplate: this.isStringTemplate };\n var headerItems = listEle.querySelectorAll('.' + dropDownBaseClasses.group);\n var groupcheck = this.templateCompiler(this.groupTemplate);\n if (typeof this.groupTemplate !== 'function' && groupcheck) {\n var groupValue = select(this.groupTemplate, document).innerHTML.trim();\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(groupValue, dataSource, this.fields.properties, headerItems, option, this);\n //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });\n }\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(this.groupTemplate, dataSource, this.fields.properties, headerItems, option, this);\n //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });\n }\n }\n }\n this.renderReactTemplates();\n }\n };\n /**\n * To create the ul li list items\n *\n * @param {object []} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return the ul li list items.\n */\n DropDownBase.prototype.createListItems = function (dataSource, fields) {\n if (dataSource && fields.groupBy || this.element.querySelector('optgroup')) {\n if (fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n addClass([this.list], dropDownBaseClasses.grouping);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n var options = this.listOption(dataSource, fields);\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n this.sortedData = dataSource;\n return ListBase.createList(this.createElement, (this.getModuleName() === 'autocomplete') ? spliceData : dataSource, options, true, this);\n };\n DropDownBase.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldValues = !isNullOrUndefined(fields.properties) ?\n fields.properties : fields;\n var options = (fields.text !== null || fields.value !== null) ? {\n fields: fieldValues,\n showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n return extend({}, options, fields, true);\n };\n DropDownBase.prototype.setFloatingHeader = function (e) {\n if (!isNullOrUndefined(this.list) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (isNullOrUndefined(this.fixedHeaderElement)) {\n this.fixedHeaderElement = this.createElement('div', { className: dropDownBaseClasses.fixedHead });\n if (!isNullOrUndefined(this.list) && !this.list.querySelector('li').classList.contains(dropDownBaseClasses.group)) {\n this.fixedHeaderElement.style.display = 'none';\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && !isNullOrUndefined(this.list)) {\n prepend([this.fixedHeaderElement], this.list);\n }\n this.setFixedHeader();\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && this.fixedHeaderElement.style.zIndex === '0') {\n this.setFixedHeader();\n }\n this.scrollStop(e);\n }\n };\n DropDownBase.prototype.scrollStop = function (e) {\n var target = !isNullOrUndefined(e) ? e.target : this.list;\n var liHeight = parseInt(getComputedStyle(this.getValidLi(), null).getPropertyValue('height'), 10);\n var topIndex = Math.round(target.scrollTop / liHeight);\n var liCollections = this.list.querySelectorAll('li' + ':not(.e-hide-listitem)');\n for (var i = topIndex; i > -1; i--) {\n if (!isNullOrUndefined(liCollections[i]) && liCollections[i].classList.contains(dropDownBaseClasses.group)) {\n var currentLi = liCollections[i];\n this.fixedHeaderElement.innerHTML = currentLi.innerHTML;\n this.fixedHeaderElement.style.top = target.scrollTop + 'px';\n this.fixedHeaderElement.style.display = 'block';\n break;\n }\n else {\n this.fixedHeaderElement.style.display = 'none';\n this.fixedHeaderElement.style.top = 'none';\n }\n }\n };\n DropDownBase.prototype.getValidLi = function () {\n return this.liCollections[0];\n };\n /**\n * To render the list items\n *\n * @param {object[]} listData - Specifies the list of array of data.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return the list items.\n */\n DropDownBase.prototype.renderItems = function (listData, fields) {\n var ulElement;\n if (this.itemTemplate && listData) {\n var dataSource = listData;\n if (dataSource && fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n this.sortedData = dataSource;\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n ulElement = this.templateListItem((this.getModuleName() === 'autocomplete') ? spliceData : dataSource, fields);\n }\n else {\n ulElement = this.createListItems(listData, fields);\n }\n return ulElement;\n };\n DropDownBase.prototype.templateListItem = function (dataSource, fields) {\n var option = this.listOption(dataSource, fields);\n option.templateID = this.itemTemplateId;\n option.isStringTemplate = this.isStringTemplate;\n var itemcheck = this.templateCompiler(this.itemTemplate);\n if (typeof this.itemTemplate !== 'function' && itemcheck) {\n var itemValue = select(this.itemTemplate, document).innerHTML.trim();\n return ListBase.renderContentTemplate(this.createElement, itemValue, dataSource, fields.properties, option, this);\n }\n else {\n return ListBase.renderContentTemplate(this.createElement, this.itemTemplate, dataSource, fields.properties, option, this);\n }\n };\n DropDownBase.prototype.typeOfData = function (items) {\n var item = { typeof: null, item: null };\n for (var i = 0; (!isNullOrUndefined(items) && i < items.length); i++) {\n if (!isNullOrUndefined(items[i])) {\n var listDataType = typeof (items[i]) === 'string' ||\n typeof (items[i]) === 'number' || typeof (items[i]) === 'boolean';\n var isNullData = listDataType ? isNullOrUndefined(items[i]) :\n isNullOrUndefined(getValue((this.fields.value ? this.fields.value : 'value'), items[i]));\n if (!isNullData) {\n return item = { typeof: typeof items[i], item: items[i] };\n }\n }\n }\n return item;\n };\n DropDownBase.prototype.setFixedHeader = function () {\n if (!isNullOrUndefined(this.list)) {\n this.list.parentElement.style.display = 'block';\n }\n var borderWidth = 0;\n if (this.list && this.list.parentElement) {\n borderWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-width'), 10);\n /*Shorthand property not working in Firefox for getComputedStyle method.\n Refer bug report https://bugzilla.mozilla.org/show_bug.cgi?id=137688\n Refer alternate solution https://stackoverflow.com/a/41696234/9133493*/\n if (isNaN(borderWidth)) {\n var borderTopWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-top-width'), 10);\n var borderBottomWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-bottom-width'), 10);\n var borderLeftWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-left-width'), 10);\n var borderRightWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-right-width'), 10);\n borderWidth = (borderTopWidth + borderBottomWidth + borderLeftWidth + borderRightWidth);\n }\n }\n if (!isNullOrUndefined(this.liCollections)) {\n var liWidth = this.getValidLi().offsetWidth - borderWidth;\n this.fixedHeaderElement.style.width = liWidth.toString() + 'px';\n }\n setStyleAttribute(this.fixedHeaderElement, { zIndex: 10 });\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group + ':not(.e-hide-listitem)');\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n };\n DropDownBase.prototype.getSortedDataSource = function (dataSource) {\n if (dataSource && this.sortOrder !== 'None') {\n var textField = this.fields.text ? this.fields.text : 'text';\n if (this.typeOfData(dataSource).typeof === 'string' || this.typeOfData(dataSource).typeof === 'number'\n || this.typeOfData(dataSource).typeof === 'boolean') {\n textField = '';\n }\n dataSource = ListBase.getDataSource(dataSource, ListBase.addSorting(this.sortOrder, textField));\n }\n return dataSource;\n };\n /**\n * Return the index of item which matched with given value in data source\n *\n * @param {string | number | boolean} value - Specifies given value.\n * @returns {number} Returns the index of the item.\n */\n DropDownBase.prototype.getIndexByValue = function (value) {\n var index;\n var listItems = this.getItems();\n for (var i = 0; i < listItems.length; i++) {\n if (!isNullOrUndefined(value) && listItems[i].getAttribute('data-value') === value.toString()) {\n index = i;\n break;\n }\n }\n return index;\n };\n /**\n * To dispatch the event manually\n *\n * @param {HTMLElement} element - Specifies the element to dispatch the event.\n * @param {string} type - Specifies the name of the event.\n * @returns {void}\n */\n DropDownBase.prototype.dispatchEvent = function (element, type) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n if (element) {\n element.dispatchEvent(evt);\n }\n };\n /**\n * To set the current fields\n *\n * @returns {void}\n */\n DropDownBase.prototype.setFields = function () {\n if (this.fields.value && !this.fields.text) {\n this.updateFields(this.fields.value, this.fields.value);\n }\n else if (!this.fields.value && this.fields.text) {\n this.updateFields(this.fields.text, this.fields.text);\n }\n else if (!this.fields.value && !this.fields.text) {\n this.updateFields('text', 'text');\n }\n };\n /**\n * reset the items list.\n *\n * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {void}\n */\n DropDownBase.prototype.resetList = function (dataSource, fields, query, e) {\n if (this.list) {\n if ((this.element.tagName === 'SELECT' && this.element.options.length > 0)\n || (this.element.tagName === 'UL' && this.element.childNodes.length > 0)) {\n var data = dataSource instanceof Array ? (dataSource.length > 0)\n : !isNullOrUndefined(dataSource);\n if (!data && this.selectData && this.selectData.length > 0) {\n dataSource = this.selectData;\n }\n }\n dataSource = this.getModuleName() === 'combobox' && this.selectData && dataSource instanceof Array && dataSource.length < this.selectData.length && this.addedNewItem ? this.selectData : dataSource;\n this.addedNewItem = false;\n this.setListData(dataSource, fields, query, e);\n }\n };\n DropDownBase.prototype.updateSelectElementData = function (isFiltering) {\n if (isFiltering && isNullOrUndefined(this.selectData) && this.listData && this.listData.length > 0) {\n this.selectData = this.listData;\n }\n };\n DropDownBase.prototype.updateSelection = function () {\n // This is for after added the item, need to update the selected index values.\n };\n DropDownBase.prototype.renderList = function () {\n // This is for render the list items.\n this.render();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateDataSource = function (props) {\n this.resetList(this.dataSource);\n };\n DropDownBase.prototype.setUpdateInitial = function (props, newProp) {\n this.isDataFetched = false;\n var updateData = {};\n for (var j = 0; props.length > j; j++) {\n if (newProp[props[j]] && props[j] === 'fields') {\n this.setFields();\n updateData[props[j]] = newProp[props[j]];\n }\n else if (newProp[props[j]]) {\n updateData[props[j]] = newProp[props[j]];\n }\n }\n if (Object.keys(updateData).length > 0) {\n if (Object.keys(updateData).indexOf('dataSource') === -1) {\n updateData.dataSource = this.dataSource;\n }\n this.updateDataSource(updateData);\n }\n };\n /**\n * When property value changes happened, then onPropertyChanged method will execute the respective changes in this component.\n *\n * @param {DropDownBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownBaseModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'dropdownbase') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n this.setUpdateInitial(['sortOrder', 'itemTemplate'], newProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'sortOrder':\n case 'dataSource':\n case 'itemTemplate':\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'groupTemplate':\n this.renderGroupTemplate(this.list);\n if (this.ulElement && this.fixedHeaderElement) {\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group);\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n }\n break;\n case 'locale':\n if (this.list && (!isNullOrUndefined(this.liCollections) && this.liCollections.length === 0)) {\n this.l10nUpdate();\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n }\n }\n };\n /**\n * Build and render the component\n *\n * @param {boolean} isEmptyData - Specifies the component to initialize with list data or not.\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.render = function (e, isEmptyData) {\n if (this.getModuleName() === 'listbox') {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content, attrs: { 'tabindex': '0' } });\n }\n else {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content });\n }\n this.list.classList.add(dropDownBaseClasses.root);\n this.setFields();\n var rippleModel = { duration: 300, selector: '.' + dropDownBaseClasses.li };\n this.rippleFun = rippleEffect(this.list, rippleModel);\n var group = this.element.querySelector('select>optgroup');\n if ((this.fields.groupBy || !isNullOrUndefined(group)) && !this.isGroupChecking) {\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n if (this.getModuleName() === 'dropdownbase') {\n if (this.element.getAttribute('tabindex')) {\n this.list.setAttribute('tabindex', this.element.getAttribute('tabindex'));\n }\n removeClass([this.element], dropDownBaseClasses.root);\n this.element.style.display = 'none';\n var wrapperElement = this.createElement('div');\n this.element.parentElement.insertBefore(wrapperElement, this.element);\n wrapperElement.appendChild(this.element);\n wrapperElement.appendChild(this.list);\n }\n this.setEnableRtl();\n if (!isEmptyData) {\n this.initialize(e);\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownBase.prototype.getModuleName = function () {\n return 'dropdownbase';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownBase.prototype.getItems = function () {\n return this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n\n */\n DropDownBase.prototype.addItem = function (items, itemIndex) {\n if (!this.list || (this.list.textContent === this.noRecordsTemplate && this.getModuleName() !== 'listbox')) {\n this.renderList();\n }\n if (this.sortOrder !== 'None' && isNullOrUndefined(itemIndex)) {\n var newList = [].slice.call(this.listData);\n newList.push(items);\n newList = this.getSortedDataSource(newList);\n if (this.fields.groupBy) {\n newList = ListBase.groupDataSource(newList, this.fields.properties, this.sortOrder);\n itemIndex = newList.indexOf(items);\n }\n else {\n itemIndex = newList.indexOf(items);\n }\n }\n var itemsCount = this.getItems().length;\n var selectedItemValue = this.list.querySelector('.' + dropDownBaseClasses.selected);\n items = (items instanceof Array ? items : [items]);\n var index;\n index = (isNullOrUndefined(itemIndex) || itemIndex < 0 || itemIndex > itemsCount - 1) ? itemsCount : itemIndex;\n var fields = this.fields;\n if (items && fields.groupBy) {\n items = ListBase.groupDataSource(items, fields.properties);\n }\n var liCollections = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n var isHeader = item.isHeader;\n var li = this.createElement('li', { className: isHeader ? dropDownBaseClasses.group : dropDownBaseClasses.li, id: 'option-add-' + i });\n var itemText = item instanceof Object ? getValue(fields.text, item) : item;\n if (isHeader) {\n li.innerText = itemText;\n }\n if (this.itemTemplate && !isHeader) {\n var itemCheck = this.templateCompiler(this.itemTemplate);\n var compiledString = typeof this.itemTemplate !== 'function' &&\n itemCheck ? compile(select(this.itemTemplate, document).innerHTML.trim()) : compile(this.itemTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var addItemTemplate = compiledString(item, this, 'itemTemplate', this.itemTemplateId, this.isStringTemplate, null, li);\n if (addItemTemplate) {\n append(addItemTemplate, li);\n }\n }\n else if (!isHeader) {\n li.appendChild(document.createTextNode(itemText));\n }\n li.setAttribute('data-value', item instanceof Object ? getValue(fields.value, item) : item);\n li.setAttribute('role', 'option');\n this.notify('addItem', { module: 'CheckBoxSelection', item: li });\n liCollections.push(li);\n this.listData.push(item);\n if (this.sortOrder === 'None' && isNullOrUndefined(itemIndex) && index === 0) {\n index = null;\n }\n this.updateActionCompleteData(li, item, index);\n //Listbox event\n this.trigger('beforeItemRender', { element: li, item: item });\n }\n if (itemsCount === 0 && isNullOrUndefined(this.list.querySelector('ul'))) {\n if (!isNullOrUndefined(this.list)) {\n this.list.innerHTML = '';\n this.list.classList.remove(dropDownBaseClasses.noData);\n this.isAddNewItemTemplate = true;\n if (!isNullOrUndefined(this.ulElement)) {\n this.list.appendChild(this.ulElement);\n }\n }\n this.liCollections = liCollections;\n if (!isNullOrUndefined(liCollections) && !isNullOrUndefined(this.ulElement)) {\n append(liCollections, this.ulElement);\n }\n this.updateAddItemList(this.list, itemsCount);\n }\n else {\n if (this.getModuleName() === 'listbox' && itemsCount === 0) {\n this.ulElement.innerHTML = '';\n }\n var attr = [];\n for (var i = 0; i < items.length; i++) {\n var listGroupItem = this.ulElement.querySelectorAll('.e-list-group-item');\n for (var j = 0; j < listGroupItem.length; j++) {\n attr[j] = listGroupItem[j].innerText;\n }\n if (attr.indexOf(liCollections[i].innerText) > -1 && fields.groupBy) {\n for (var j = 0; j < listGroupItem.length; j++) {\n if (attr[j] === liCollections[i].innerText) {\n if (this.sortOrder === 'None') {\n this.ulElement.insertBefore(liCollections[i + 1], listGroupItem[j + 1]);\n }\n else {\n this.ulElement.insertBefore(liCollections[i + 1], this.ulElement.childNodes[itemIndex]);\n }\n i = i + 1;\n break;\n }\n }\n }\n else {\n if (this.liCollections[index]) {\n this.liCollections[index].parentNode.insertBefore(liCollections[i], this.liCollections[index]);\n }\n else {\n this.ulElement.appendChild(liCollections[i]);\n }\n }\n var tempLi = [].slice.call(this.liCollections);\n tempLi.splice(index, 0, liCollections[i]);\n this.liCollections = tempLi;\n index += 1;\n if (this.getModuleName() === 'multiselect') {\n this.updateDataList();\n }\n }\n }\n if (this.getModuleName() === 'listbox' && this.isReact) {\n this.renderReactTemplates();\n }\n if (selectedItemValue || itemIndex === 0) {\n this.updateSelection();\n }\n this.addedNewItem = true;\n };\n DropDownBase.prototype.validationAttribute = function (target, hidden) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n hidden.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (!target.getAttribute(attributes[i])) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n hidden.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n DropDownBase.prototype.setZIndex = function () {\n // this is for component wise\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateActionCompleteData = function (li, item, index) {\n // this is for ComboBox custom value\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateAddItemList = function (list, itemCount) {\n // this is for multiselect add item\n };\n DropDownBase.prototype.updateDataList = function () {\n // this is for multiselect update list items\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownBase.prototype.getDataByValue = function (value) {\n if (!isNullOrUndefined(this.listData)) {\n var type = this.typeOfData(this.listData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, _a = this.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n if (!isNullOrUndefined(item) && item === value) {\n return item;\n }\n }\n }\n else {\n for (var _b = 0, _c = this.listData; _b < _c.length; _b++) {\n var item = _c[_b];\n if (!isNullOrUndefined(item) && getValue((this.fields.value ? this.fields.value : 'value'), item) === value) {\n return item;\n }\n }\n }\n }\n return null;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownBase.prototype.destroy = function () {\n if (document.body.contains(this.list)) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n if (!isNullOrUndefined(this.rippleFun)) {\n this.rippleFun();\n }\n detach(this.list);\n }\n this.liCollections = null;\n this.ulElement = null;\n this.list = null;\n this.enableRtlElements = null;\n this.rippleFun = null;\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], DropDownBase.prototype, \"fields\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], DropDownBase.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], DropDownBase.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], DropDownBase.prototype, \"sortOrder\", void 0);\n __decorate([\n Property([])\n ], DropDownBase.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], DropDownBase.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], DropDownBase.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(1000)\n ], DropDownBase.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DropDownBase.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], DropDownBase.prototype, \"locale\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"destroyed\", void 0);\n DropDownBase = __decorate([\n NotifyPropertyChanges\n ], DropDownBase);\n return DropDownBase;\n}(Component));\nexport { DropDownBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Event, compile, KeyboardEvents, append, select } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, getUniqueID, formatUnit, isUndefined, getValue } from '@syncfusion/ej2-base';\nimport { Animation, Browser, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, closest, prepend, detach, classList } from '@syncfusion/ej2-base';\nimport { Popup, isCollide, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { incrementalSearch, resetIncrementalSearchValues } from '../common/incremental-search';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\n// don't use space in classnames\nexport var dropDownListClasses = {\n root: 'e-dropdownlist',\n hover: dropDownBaseClasses.hover,\n selected: dropDownBaseClasses.selected,\n rtl: dropDownBaseClasses.rtl,\n li: dropDownBaseClasses.li,\n disable: dropDownBaseClasses.disabled,\n base: dropDownBaseClasses.root,\n focus: dropDownBaseClasses.focus,\n input: 'e-input-group',\n inputFocus: 'e-input-focus',\n icon: 'e-input-group-icon e-ddl-icon',\n iconAnimation: 'e-icon-anim',\n value: 'e-input-value',\n device: 'e-ddl-device',\n backIcon: 'e-input-group-icon e-back-icon e-icons',\n filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',\n filterInput: 'e-input-filter',\n filterParent: 'e-filter-parent',\n mobileFilter: 'e-ddl-device-filter',\n footer: 'e-ddl-footer',\n header: 'e-ddl-header',\n clearIcon: 'e-clear-icon',\n clearIconHide: 'e-clear-icon-hide',\n popupFullScreen: 'e-popup-full-page',\n disableIcon: 'e-ddl-disable-icon',\n hiddenElement: 'e-ddl-hidden'\n};\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The DropDownList component contains a list of predefined values from which you can\n * choose a single value.\n * ```html\n * \n * ```\n * ```typescript\n * let dropDownListObj:DropDownList = new DropDownList();\n * dropDownListObj.appendTo(\"#list\");\n * ```\n */\nvar DropDownList = /** @class */ (function (_super) {\n __extends(DropDownList, _super);\n /**\n * * Constructor for creating the DropDownList component.\n *\n * @param {DropDownListModel} options - Specifies the DropDownList model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownList(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isListSearched = false;\n _this.preventChange = false;\n _this.isAngular = false;\n return _this;\n }\n /**\n * Initialize the event handler.\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.preRender = function () {\n this.valueTempElement = null;\n this.element.style.opacity = '0';\n this.initializeData();\n _super.prototype.preRender.call(this);\n this.activeIndex = this.index;\n this.queryString = '';\n };\n DropDownList.prototype.initializeData = function () {\n this.isPopupOpen = false;\n this.isDocumentClick = false;\n this.isInteracted = false;\n this.isFilterFocus = false;\n this.beforePopupOpen = false;\n this.initial = true;\n this.initRemoteRender = false;\n this.isNotSearchList = false;\n this.isTyped = false;\n this.isSelected = false;\n this.preventFocus = false;\n this.preventAutoFill = false;\n this.isValidKey = false;\n this.typedString = '';\n this.isEscapeKey = false;\n this.isPreventBlur = false;\n this.isTabKey = false;\n this.actionCompleteData = { isUpdated: false };\n this.actionData = { isUpdated: false };\n this.prevSelectPoints = {};\n this.isSelectCustom = false;\n this.isDropDownClick = false;\n this.preventAltUp = false;\n this.isCustomFilter = false;\n this.isSecondClick = false;\n this.previousValue = null;\n this.keyConfigure = {\n tab: 'tab',\n enter: '13',\n escape: '27',\n end: '35',\n home: '36',\n down: '40',\n up: '38',\n pageUp: '33',\n pageDown: '34',\n open: 'alt+40',\n close: 'shift+tab',\n hide: 'alt+38',\n space: '32'\n };\n };\n DropDownList.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n DropDownList.prototype.renderList = function (e, isEmptyData) {\n _super.prototype.render.call(this, e, isEmptyData);\n this.unWireListEvents();\n this.wireListEvents();\n };\n DropDownList.prototype.floatLabelChange = function () {\n if (this.getModuleName() === 'dropdownlist' && this.floatLabelType === 'Auto') {\n var floatElement = this.inputWrapper.container.querySelector('.e-float-text');\n if (this.inputElement.value !== '' || this.isInteracted) {\n classList(floatElement, ['e-label-top'], ['e-label-bottom']);\n }\n else {\n classList(floatElement, ['e-label-bottom'], ['e-label-top']);\n }\n }\n };\n DropDownList.prototype.resetHandler = function (e) {\n e.preventDefault();\n this.clearAll(e);\n };\n DropDownList.prototype.resetFocusElement = function () {\n this.removeHover();\n this.removeSelection();\n this.removeFocus();\n this.list.scrollTop = 0;\n if (this.getModuleName() !== 'autocomplete' && !isNullOrUndefined(this.ulElement)) {\n var li = this.ulElement.querySelector('.' + dropDownListClasses.li);\n if (li) {\n li.classList.add(dropDownListClasses.focus);\n }\n }\n };\n DropDownList.prototype.clearAll = function (e, properties) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n if (isNullOrUndefined(properties) || (!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.isActive = true;\n this.resetSelection(properties);\n }\n var dataItem = this.getItemData();\n if (this.previousValue === dataItem.value) {\n return;\n }\n this.onChangeEvent(e);\n };\n DropDownList.prototype.resetSelection = function (properties) {\n if (this.list) {\n if ((!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.selectedLI = null;\n this.actionCompleteData.isUpdated = false;\n this.actionCompleteData.ulElement = null;\n this.actionCompleteData.list = null;\n this.resetList(properties.dataSource);\n }\n else {\n if (this.allowFiltering && this.getModuleName() !== 'autocomplete'\n && !isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list) &&\n this.actionCompleteData.list.length > 0) {\n this.onActionComplete(this.actionCompleteData.ulElement.cloneNode(true), this.actionCompleteData.list);\n }\n this.resetFocusElement();\n }\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n }\n if (!isNullOrUndefined(this.inputElement)) {\n this.inputElement.value = '';\n }\n this.value = null;\n this.itemData = null;\n this.text = null;\n this.index = null;\n this.activeIndex = null;\n this.item = null;\n this.queryString = '';\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n this.setSelection(null, null);\n this.isSelectCustom = false;\n this.updateIconState();\n this.cloneElements();\n };\n DropDownList.prototype.setHTMLAttributes = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n if (htmlAttr === 'class') {\n var updatedClassValue = (this.htmlAttributes[\"\" + htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.inputWrapper.container], updatedClassValue.split(' '));\n }\n }\n else if (htmlAttr === 'disabled' && this.htmlAttributes[\"\" + htmlAttr] === 'disabled') {\n this.enabled = false;\n this.setEnable();\n }\n else if (htmlAttr === 'readonly' && !isNullOrUndefined(this.htmlAttributes[\"\" + htmlAttr])) {\n this.readonly = true;\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.container.setAttribute('style', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr === 'aria-label') {\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n this.inputElement.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else {\n this.inputWrapper.container.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n var defaultAttr = ['title', 'id', 'placeholder',\n 'role', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n defaultAttr.push('tabindex');\n }\n if (validateAttr.indexOf(htmlAttr) > -1 || htmlAttr.indexOf('data') === 0) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(this.htmlAttributes[\"\" + htmlAttr], this.inputElement);\n }\n else {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n this.inputWrapper.container.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n }\n }\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n this.inputWrapper.container.removeAttribute('tabindex');\n }\n };\n DropDownList.prototype.getAriaAttributes = function () {\n return {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'aria-expanded': 'false',\n 'aria-live': 'polite',\n 'aria-labelledby': this.hiddenElement.id\n };\n };\n DropDownList.prototype.setEnableRtl = function () {\n Input.setEnableRtl(this.enableRtl, [this.inputElement.parentElement]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n DropDownList.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hidePopup();\n addClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.targetElement().tabIndex = -1;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownList.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n DropDownList.prototype.getLocaleName = function () {\n return 'drop-down-list';\n };\n DropDownList.prototype.preventTabIndex = function (element) {\n if (this.getModuleName() === 'dropdownlist') {\n element.tabIndex = -1;\n }\n };\n DropDownList.prototype.targetElement = function () {\n return !isNullOrUndefined(this.inputWrapper) ? this.inputWrapper.container : null;\n };\n DropDownList.prototype.getNgDirective = function () {\n return 'EJS-DROPDOWNLIST';\n };\n DropDownList.prototype.getElementByText = function (text) {\n return this.getElementByValue(this.getValueByText(text));\n };\n DropDownList.prototype.getElementByValue = function (value) {\n var item;\n var listItems = this.getItems();\n for (var _i = 0, listItems_1 = listItems; _i < listItems_1.length; _i++) {\n var liItem = listItems_1[_i];\n if (this.getFormattedValue(liItem.getAttribute('data-value')) === value) {\n item = liItem;\n break;\n }\n }\n return item;\n };\n DropDownList.prototype.initValue = function () {\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n DropDownList.prototype.updateValues = function () {\n if (!isNullOrUndefined(this.value)) {\n this.setSelection(this.getElementByValue(this.value), null);\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var element = this.getElementByText(this.text);\n if (isNullOrUndefined(element)) {\n this.setProperties({ text: null });\n return;\n }\n else {\n this.setSelection(element, null);\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DropDownList.prototype.onBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n var target = e.relatedTarget;\n var currentTarget = e.target;\n var isPreventBlur = this.isPreventBlur;\n this.isPreventBlur = false;\n //IE 11 - issue\n if (isPreventBlur && !this.isDocumentClick && this.isPopupOpen && (!isNullOrUndefined(currentTarget) ||\n !this.isFilterLayout() && isNullOrUndefined(target))) {\n if (this.getModuleName() === 'dropdownlist' && this.allowFiltering && this.isPopupOpen) {\n this.filterInput.focus();\n }\n else {\n this.targetElement().focus();\n }\n return;\n }\n if (this.isDocumentClick || (!isNullOrUndefined(this.popupObj)\n && document.body.contains(this.popupObj.element) &&\n this.popupObj.element.classList.contains(dropDownListClasses.mobileFilter))) {\n if (!this.beforePopupOpen) {\n this.isDocumentClick = false;\n }\n return;\n }\n if (((this.getModuleName() === 'dropdownlist' && !this.isFilterFocus && target !== this.inputElement)\n && (document.activeElement !== target || (document.activeElement === target &&\n currentTarget.classList.contains(dropDownListClasses.inputFocus)))) ||\n (isNullOrUndefined(target) && this.getModuleName() === 'dropdownlist' && this.allowFiltering &&\n currentTarget !== this.inputWrapper.container) || this.getModuleName() !== 'dropdownlist' &&\n !this.inputWrapper.container.contains(target) || this.isTabKey) {\n this.isDocumentClick = this.isPopupOpen ? true : false;\n this.focusOutAction(e);\n this.isTabKey = false;\n }\n if (this.isRequested && !this.isPopupOpen && !this.isPreventBlur) {\n this.isActive = false;\n this.beforePopupOpen = false;\n }\n };\n DropDownList.prototype.focusOutAction = function (e) {\n this.isInteracted = false;\n this.focusOut(e);\n this.onFocusOut();\n };\n DropDownList.prototype.onFocusOut = function () {\n if (!this.enabled) {\n return;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(null);\n }\n this.floatLabelChange();\n this.dispatchEvent(this.hiddenElement, 'change');\n if (this.getModuleName() === 'dropdownlist' && this.element.tagName !== 'INPUT') {\n this.dispatchEvent(this.inputElement, 'blur');\n }\n if (this.inputWrapper.clearButton) {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n this.trigger('blur');\n };\n DropDownList.prototype.onFocus = function (e) {\n if (!this.isInteracted) {\n this.isInteracted = true;\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n }\n this.updateIconState();\n };\n DropDownList.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var val = (this.element.tagName === this.getNgDirective()) ? null : this.inputElement.getAttribute('value');\n this.text = val;\n }\n };\n DropDownList.prototype.wireEvent = function () {\n EventHandler.add(this.inputWrapper.container, 'mousedown', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper.container, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper.container, 'keypress', this.onSearch, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n this.bindCommonEvent();\n };\n DropDownList.prototype.bindCommonEvent = function () {\n EventHandler.add(this.targetElement(), 'blur', this.onBlurHandler, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.keyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.mobileKeyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n this.bindClearEvent();\n };\n DropDownList.prototype.windowResize = function () {\n if (this.isPopupOpen) {\n this.popupObj.refreshPosition(this.inputWrapper.container);\n }\n };\n DropDownList.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n };\n DropDownList.prototype.unBindCommonEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper) && this.targetElement()) {\n EventHandler.remove(this.targetElement(), 'blur', this.onBlurHandler);\n }\n var formElement = this.inputElement && closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n if (!Browser.isDevice) {\n this.keyboardModule.destroy();\n }\n if (this.showClearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown', this.resetHandler);\n }\n };\n DropDownList.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n /**\n * Event binding for list\n *\n * @returns {void}\n */\n DropDownList.prototype.wireListEvents = function () {\n if (!isNullOrUndefined(this.list)) {\n EventHandler.add(this.list, 'click', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n };\n DropDownList.prototype.onSearch = function (e) {\n if (e.charCode !== 32 && e.charCode !== 13) {\n if (this.list === undefined) {\n this.renderList();\n }\n this.searchKeyEvent = e;\n this.onServerIncrementalSearch(e);\n }\n };\n DropDownList.prototype.onServerIncrementalSearch = function (e) {\n if (!this.isRequested && !isNullOrUndefined(this.list) &&\n !isNullOrUndefined(this.list.querySelector('li')) && this.enabled && !this.readonly) {\n this.incrementalSearch(e);\n }\n };\n DropDownList.prototype.onMouseClick = function (e) {\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li)) {\n return;\n }\n this.setSelection(li, e);\n if (Browser.isDevice && this.isFilterLayout()) {\n history.back();\n }\n else {\n var delay = 100;\n this.closePopup(delay, e);\n }\n };\n DropDownList.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n this.setHover(currentLi);\n };\n DropDownList.prototype.setHover = function (li) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.hover)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n };\n DropDownList.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n DropDownList.prototype.removeHover = function () {\n if (this.list) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n }\n };\n DropDownList.prototype.isValidLI = function (li) {\n return (li && li.hasAttribute('role') && li.getAttribute('role') === 'option');\n };\n DropDownList.prototype.incrementalSearch = function (e) {\n if (this.liCollections.length > 0) {\n var li = incrementalSearch(e.charCode, this.liCollections, this.activeIndex, true, this.element.id);\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, e);\n this.setScrollPosition();\n }\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n this.spinnerElement.innerHTML = '';\n this.spinnerElement = null;\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = Browser.isDevice && !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[1] ||\n !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[0] || this.inputWrapper.buttons[0];\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n DropDownList.prototype.keyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n var preventAction = e.action === 'pageUp' || e.action === 'pageDown';\n var preventHomeEnd = this.getModuleName() !== 'dropdownlist' && (e.action === 'home' || e.action === 'end');\n this.isEscapeKey = e.action === 'escape';\n this.isTabKey = !this.isPopupOpen && e.action === 'tab';\n var isNavigation = (e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown'\n || e.action === 'home' || e.action === 'end');\n if ((this.isEditTextBox() || preventAction || preventHomeEnd) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n var isTabAction = e.action === 'tab' || e.action === 'close';\n if (isNullOrUndefined(this.list) && !this.isRequested && !isTabAction && e.action !== 'escape') {\n this.searchKeyEvent = e;\n this.renderList(e);\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n isNavigation && this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if ((isTabAction && this.getModuleName() !== 'autocomplete') && this.isPopupOpen\n || e.action === 'escape') {\n e.preventDefault();\n }\n this.isSelected = e.action === 'escape' ? false : this.isSelected;\n this.isTyped = (isNavigation || e.action === 'escape') ? false : this.isTyped;\n switch (e.action) {\n case 'down':\n case 'up':\n this.updateUpDownAction(e);\n break;\n case 'pageUp':\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'pageDown':\n this.pageDownSelection(this.activeIndex + this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'home':\n this.updateHomeEndAction(e);\n break;\n case 'end':\n this.updateHomeEndAction(e);\n break;\n case 'space':\n if (this.getModuleName() === 'dropdownlist') {\n if (!this.beforePopupOpen) {\n this.showPopup();\n }\n }\n break;\n case 'open':\n this.showPopup(e);\n break;\n case 'hide':\n this.preventAltUp = this.isPopupOpen;\n this.hidePopup(e);\n this.focusDropDown(e);\n break;\n case 'enter':\n this.selectCurrentItem(e);\n break;\n case 'tab':\n this.selectCurrentValueOnTab(e);\n break;\n case 'escape':\n case 'close':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n break;\n }\n }\n };\n DropDownList.prototype.updateUpDownAction = function (e) {\n var focusEle = this.list.querySelector('.' + dropDownListClasses.focus);\n if (this.isSelectFocusItem(focusEle)) {\n this.setSelection(focusEle, e);\n }\n else if (!isNullOrUndefined(this.liCollections)) {\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n var startIndex = 0;\n if (this.getModuleName() === 'autocomplete') {\n startIndex = e.action === 'down' && isNullOrUndefined(this.activeIndex) ? 0 : this.liCollections.length - 1;\n index = index < 0 ? this.liCollections.length - 1 : index === this.liCollections.length ? 0 : index;\n }\n var nextItem = void 0;\n if (this.getModuleName() !== 'autocomplete' || this.getModuleName() === 'autocomplete' && this.isPopupOpen) {\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[startIndex]\n : this.liCollections[index];\n }\n if (!isNullOrUndefined(nextItem)) {\n this.setSelection(nextItem, e);\n }\n }\n e.preventDefault();\n };\n DropDownList.prototype.updateHomeEndAction = function (e) {\n if (this.getModuleName() === 'dropdownlist') {\n var findLi = 0;\n if (e.action === 'home') {\n findLi = 0;\n }\n else {\n findLi = this.getItems().length - 1;\n }\n e.preventDefault();\n if (this.activeIndex === findLi) {\n return;\n }\n this.setSelection(this.liCollections[findLi], e);\n }\n };\n DropDownList.prototype.selectCurrentValueOnTab = function (e) {\n if (this.getModuleName() === 'autocomplete') {\n this.selectCurrentItem(e);\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n }\n };\n DropDownList.prototype.mobileKeyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if ((this.isEditTextBox()) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n if (this.list === undefined && !this.isRequested) {\n this.searchKeyEvent = e;\n this.renderList();\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if (e.action === 'enter') {\n this.selectCurrentItem(e);\n }\n }\n };\n DropDownList.prototype.selectCurrentItem = function (e) {\n if (this.isPopupOpen) {\n var li = this.list.querySelector('.' + dropDownListClasses.focus);\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n else {\n this.showPopup();\n }\n };\n DropDownList.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n DropDownList.prototype.getPageCount = function () {\n var liHeight = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n return Math.round(this.list.getBoundingClientRect().height / parseInt(liHeight, 10));\n };\n DropDownList.prototype.pageUpSelection = function (steps, event) {\n var previousItem = steps >= 0 ? this.liCollections[steps + 1] : this.liCollections[0];\n this.setSelection(previousItem, event);\n };\n DropDownList.prototype.pageDownSelection = function (steps, event) {\n var list = this.getItems();\n var previousItem = steps <= list.length ? this.liCollections[steps - 1] : this.liCollections[list.length - 1];\n this.setSelection(previousItem, event);\n };\n DropDownList.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.container, 'mousedown', this.dropDownClick);\n EventHandler.remove(this.inputWrapper.container, 'keypress', this.onSearch);\n EventHandler.remove(this.inputWrapper.container, 'focus', this.focusIn);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n this.unBindCommonEvent();\n };\n /**\n * Event un binding for list items.\n *\n * @returns {void}\n */\n DropDownList.prototype.unWireListEvents = function () {\n if (this.list) {\n EventHandler.remove(this.list, 'click', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n DropDownList.prototype.checkSelector = function (id) {\n return '[id=\"' + id.replace(/(:|\\.|\\[|\\]|,|=|@|\\\\|\\/|#)/g, '\\\\$1') + '\"]';\n };\n DropDownList.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, this.checkSelector(this.popupObj.element.id))) &&\n !isNullOrUndefined(this.inputWrapper) && !this.inputWrapper.container.contains(e.target)) {\n if (this.inputWrapper.container.classList.contains(dropDownListClasses.inputFocus) || this.isPopupOpen) {\n this.isDocumentClick = true;\n var isActive = this.isRequested;\n this.isInteracted = false;\n this.hidePopup(e);\n if (!isActive) {\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n }\n }\n else if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput)\n && !(this.getModuleName() === 'combobox' &&\n !this.allowFiltering && Browser.isDevice && target === this.inputWrapper.buttons[0])) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.targetElement() ||\n document.activeElement === this.filterInput);\n e.preventDefault();\n }\n };\n DropDownList.prototype.activeStateChange = function () {\n if (this.isDocumentClick) {\n this.hidePopup();\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n };\n DropDownList.prototype.focusDropDown = function (e) {\n if (!this.initial && this.isFilterLayout()) {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.dropDownClick = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n if (this.targetElement().classList.contains(dropDownListClasses.disable) || this.inputWrapper.clearButton === e.target) {\n return;\n }\n var target = e.target;\n if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput) && this.getModuleName() !== 'combobox') {\n e.preventDefault();\n }\n if (!this.readonly) {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n if (this.isFilterLayout()) {\n this.focusDropDown(e);\n }\n }\n else {\n this.focusIn(e);\n this.floatLabelChange();\n this.queryString = this.inputElement.value.trim() === '' ? null : this.inputElement.value;\n this.isDropDownClick = true;\n this.showPopup(e);\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n // eslint-disable-next-line max-len\n var duration = (this.element.tagName === this.getNgDirective() && this.itemTemplate) ? 500 : 100;\n if (!this.isSecondClick) {\n setTimeout(function () {\n proxy_1.cloneElements();\n proxy_1.isSecondClick = true;\n }, duration);\n }\n }\n else {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.cloneElements = function () {\n if (this.list) {\n var ulElement = this.list.querySelector('ul');\n if (ulElement) {\n ulElement = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.actionCompleteData.ulElement = ulElement;\n }\n }\n };\n DropDownList.prototype.updateSelectedItem = function (li, e, preventSelect, isSelection) {\n var _this = this;\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n var value = li.getAttribute('data-value') !== \"null\" ? this.getFormattedValue(li.getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value);\n if (!this.initial && !preventSelect && !isNullOrUndefined(e)) {\n var items = this.detachChanges(selectedData);\n this.isSelected = true;\n var eventArgs = {\n e: e,\n item: li,\n itemData: items,\n isInteracted: e ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n li.classList.remove(dropDownBaseClasses.selected);\n }\n else {\n _this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (isSelection) {\n _this.setSelectOptions(li, e);\n }\n }\n });\n }\n else {\n this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (isSelection) {\n this.setSelectOptions(li, e);\n }\n }\n };\n DropDownList.prototype.selectEventCallback = function (li, e, preventSelect, selectedData, value) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n if (this.itemData != selectedData) {\n this.previousValue = (!isNullOrUndefined(this.itemData)) ? typeof this.itemData == \"object\" ? this.checkFieldValue(this.itemData, this.fields.value.split('.')) : this.itemData : null;\n }\n this.item = li;\n this.itemData = selectedData;\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (focusedItem) {\n removeClass([focusedItem], dropDownBaseClasses.focus);\n }\n li.setAttribute('aria-selected', 'true');\n this.activeIndex = this.getIndexByValue(value);\n };\n DropDownList.prototype.activeItem = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.selected)) {\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n li.setAttribute('aria-selected', 'true');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.setValue = function (e) {\n var dataItem = this.getItemData();\n if (dataItem.value === null) {\n Input.setValue(null, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(dataItem.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n else if (!isNullOrUndefined(this.valueTempElement) && this.inputElement.previousSibling === this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n }\n var clearIcon = dropDownListClasses.clearIcon;\n var isFilterElement = this.isFiltering() && this.filterInput && (this.getModuleName() === 'combobox');\n var clearElement = isFilterElement && this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (this.isFiltering() && clearElement) {\n clearElement.style.removeProperty('visibility');\n }\n if (this.previousValue === dataItem.value) {\n this.isSelected = false;\n return true;\n }\n else {\n this.isSelected = !this.initial ? true : false;\n this.isSelectCustom = false;\n if (this.getModuleName() === 'dropdownlist') {\n this.updateIconState();\n }\n return false;\n }\n };\n DropDownList.prototype.setSelection = function (li, e) {\n if (this.isValidLI(li) && (!li.classList.contains(dropDownBaseClasses.selected) || (this.isPopupOpen && this.isSelected\n && li.classList.contains(dropDownBaseClasses.selected)))) {\n this.updateSelectedItem(li, e, false, true);\n }\n else {\n this.setSelectOptions(li, e);\n }\n };\n DropDownList.prototype.setSelectOptions = function (li, e) {\n if (this.list) {\n this.removeHover();\n }\n this.previousSelectedLI = (!isNullOrUndefined(this.selectedLI)) ? this.selectedLI : null;\n this.selectedLI = li;\n if (this.setValue(e)) {\n return;\n }\n if ((!this.isPopupOpen && !isNullOrUndefined(li)) || (this.isPopupOpen && !isNullOrUndefined(e) &&\n (e.type !== 'keydown' || e.type === 'keydown' && e.action === 'enter'))) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.selectedLI) && this.itemData !== null && (!e || e.type !== 'click')) {\n this.setScrollPosition(e);\n }\n if (Browser.info.name !== 'mozilla') {\n if (this.targetElement()) {\n attributes(this.targetElement(), { 'aria-describedby': this.inputElement.id !== '' ? this.inputElement.id : this.element.id });\n this.targetElement().removeAttribute('aria-live');\n }\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (this.isPopupOpen && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n };\n DropDownList.prototype.dropdownCompiler = function (dropdownTemplate) {\n var checkTemplate = false;\n if (typeof dropdownTemplate !== 'function' && dropdownTemplate) {\n try {\n checkTemplate = (document.querySelectorAll(dropdownTemplate).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownList.prototype.setValueTemplate = function () {\n var compiledString;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['valueTemplate']);\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n }\n if (!this.valueTempElement) {\n this.valueTempElement = this.createElement('span', { className: dropDownListClasses.value });\n this.inputElement.parentElement.insertBefore(this.valueTempElement, this.inputElement);\n this.inputElement.style.display = 'none';\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.valueTempElement.innerHTML = '';\n }\n var valuecheck = this.dropdownCompiler(this.valueTemplate);\n if (typeof this.valueTemplate !== 'function' && valuecheck) {\n compiledString = compile(document.querySelector(this.valueTemplate).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var valueCompTemp = compiledString(this.itemData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, this.valueTempElement);\n if (valueCompTemp && valueCompTemp.length > 0) {\n append(valueCompTemp, this.valueTempElement);\n }\n this.renderReactTemplates();\n };\n DropDownList.prototype.removeSelection = function () {\n if (this.list) {\n var selectedItems = this.list.querySelectorAll('.' + dropDownBaseClasses.selected);\n if (selectedItems.length) {\n removeClass(selectedItems, dropDownBaseClasses.selected);\n selectedItems[0].removeAttribute('aria-selected');\n }\n }\n };\n DropDownList.prototype.getItemData = function () {\n var fields = this.fields;\n var dataItem = null;\n dataItem = this.itemData;\n var dataValue;\n var dataText;\n if (!isNullOrUndefined(dataItem)) {\n dataValue = getValue(fields.value, dataItem);\n dataText = getValue(fields.text, dataItem);\n }\n var value = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataValue : dataItem);\n var text = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataText : dataItem);\n return { value: value, text: text };\n };\n /**\n * To trigger the change event for list.\n *\n * @param {MouseEvent | KeyboardEvent | TouchEvent} eve - Specifies the event arguments.\n * @returns {void}\n */\n DropDownList.prototype.onChangeEvent = function (eve) {\n var dataItem = this.getItemData();\n var index = this.isSelectCustom ? null : this.activeIndex;\n this.setProperties({ 'index': index, 'text': dataItem.text, 'value': dataItem.value }, true);\n this.detachChangeEvent(eve);\n };\n DropDownList.prototype.detachChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n };\n DropDownList.prototype.detachChangeEvent = function (eve) {\n this.isSelected = false;\n this.previousValue = this.value;\n this.activeIndex = this.index;\n this.typedString = !isNullOrUndefined(this.text) ? this.text : '';\n if (!this.initial) {\n var items = this.detachChanges(this.itemData);\n var preItems = void 0;\n if (typeof this.previousItemData === 'string' ||\n typeof this.previousItemData === 'boolean' ||\n typeof this.previousItemData === 'number') {\n preItems = Object.defineProperties({}, {\n value: {\n value: this.previousItemData,\n enumerable: true\n },\n text: {\n value: this.previousItemData,\n enumerable: true\n }\n });\n }\n else {\n preItems = this.previousItemData;\n }\n this.setHiddenValue();\n var eventArgs = {\n e: eve,\n item: this.item,\n itemData: items,\n previousItem: this.previousSelectedLI,\n previousItemData: preItems,\n isInteracted: eve ? true : false,\n value: this.value,\n element: this.element,\n event: eve\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n }\n if ((isNullOrUndefined(this.value) || this.value === '') && this.floatLabelType !== 'Always') {\n removeClass([this.inputWrapper.container], 'e-valid-input');\n }\n };\n DropDownList.prototype.setHiddenValue = function () {\n if (!isNullOrUndefined(this.value)) {\n if (this.hiddenElement.querySelector('option')) {\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.textContent = this.text;\n selectedElement.setAttribute('value', this.value.toString());\n }\n else {\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.setAttribute('value', this.value.toString());\n }\n }\n }\n else {\n this.hiddenElement.innerHTML = '';\n }\n };\n /**\n * Filter bar implementation\n *\n * @param {KeyboardEventArgs} e - Specifies the event arguments.\n * @returns {void}\n */\n DropDownList.prototype.onFilterUp = function (e) {\n if (!(e.ctrlKey && e.keyCode === 86) && (this.isValidKey || e.keyCode === 40 || e.keyCode === 38)) {\n this.isValidKey = false;\n switch (e.keyCode) {\n case 38: //up arrow\n case 40: //down arrow\n if (this.getModuleName() === 'autocomplete' && !this.isPopupOpen && !this.preventAltUp && !this.isRequested) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else {\n this.preventAutoFill = false;\n }\n this.preventAltUp = false;\n if (this.getModuleName() === 'autocomplete' && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n e.preventDefault();\n break;\n case 46: //delete\n case 8: //backspace\n this.typedString = this.filterInput.value;\n if (!this.isPopupOpen && this.typedString !== '' || this.isPopupOpen && this.queryString.length > 0) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '' && this.queryString === '' && this.getModuleName() !== 'autocomplete') {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '') {\n if (this.list) {\n this.resetFocusElement();\n }\n this.activeIndex = null;\n if (this.getModuleName() !== 'dropdownlist') {\n this.preventAutoFill = true;\n this.searchLists(e);\n if (this.getModuleName() === 'autocomplete') {\n this.hidePopup();\n }\n }\n }\n e.preventDefault();\n break;\n default:\n this.typedString = this.filterInput.value;\n this.preventAutoFill = false;\n this.searchLists(e);\n break;\n }\n }\n else {\n this.isValidKey = false;\n }\n };\n DropDownList.prototype.onFilterDown = function (e) {\n switch (e.keyCode) {\n case 13: //enter\n break;\n case 40: //down arrow\n case 38: //up arrow\n this.queryString = this.filterInput.value;\n e.preventDefault();\n break;\n case 9: //tab\n if (this.isPopupOpen && this.getModuleName() !== 'autocomplete') {\n e.preventDefault();\n }\n break;\n default:\n this.prevSelectPoints = this.getSelectionPoints();\n this.queryString = this.filterInput.value;\n break;\n }\n };\n DropDownList.prototype.removeFillSelection = function () {\n if (this.isInteracted) {\n var selection = this.getSelectionPoints();\n this.inputElement.setSelectionRange(selection.end, selection.end);\n }\n };\n DropDownList.prototype.getQuery = function (query) {\n var filterQuery;\n if (!this.isCustomFilter && this.allowFiltering && this.filterInput) {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = this.typedString === '' ? 'contains' : this.filterType;\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n }\n return filterQuery;\n };\n DropDownList.prototype.getSelectionPoints = function () {\n var input = this.inputElement;\n return { start: Math.abs(input.selectionStart), end: Math.abs(input.selectionEnd) };\n };\n DropDownList.prototype.searchLists = function (e) {\n var _this = this;\n this.isTyped = true;\n this.activeIndex = null;\n this.isListSearched = true;\n if (this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon)) {\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n clearElement.style.visibility = this.filterInput.value === '' ? 'hidden' : 'visible';\n }\n this.isDataFetched = false;\n if (this.isFiltering()) {\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isCustomFilter = true;\n _this.filteringAction(dataSource, query, fields);\n },\n baseEventArgs: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isCustomFilter && !eventArgs.preventDefaultAction) {\n _this.filteringAction(_this.dataSource, null, _this.fields);\n }\n });\n }\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n\n */\n DropDownList.prototype.filter = function (dataSource, query, fields) {\n this.isCustomFilter = true;\n this.filteringAction(dataSource, query, fields);\n };\n DropDownList.prototype.filteringAction = function (dataSource, query, fields) {\n if (!isNullOrUndefined(this.filterInput)) {\n this.beforePopupOpen = (!this.isPopupOpen && this.getModuleName() === 'combobox' && this.filterInput.value === '') ?\n false : true;\n if (this.filterInput.value.trim() === '' && !this.itemTemplate) {\n this.actionCompleteData.isUpdated = false;\n this.isTyped = false;\n if (!isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list)) {\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list);\n }\n this.isTyped = true;\n if (!isNullOrUndefined(this.itemData) && this.getModuleName() === 'dropdownlist') {\n this.focusIndexItem();\n this.setScrollPosition();\n }\n this.isNotSearchList = true;\n }\n else {\n this.isNotSearchList = false;\n query = (this.filterInput.value.trim() === '') ? null : query;\n this.resetList(dataSource, fields, query);\n }\n this.renderReactTemplates();\n }\n };\n DropDownList.prototype.setSearchBox = function (popupElement) {\n if (this.isFiltering()) {\n var parentElement = popupElement.querySelector('.' + dropDownListClasses.filterParent) ?\n popupElement.querySelector('.' + dropDownListClasses.filterParent) : this.createElement('span', {\n className: dropDownListClasses.filterParent\n });\n this.filterInput = this.createElement('input', {\n attrs: { type: 'text' },\n className: dropDownListClasses.filterInput\n });\n this.element.parentNode.insertBefore(this.filterInput, this.element);\n var backIcon = false;\n if (Browser.isDevice) {\n backIcon = true;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ?\n [dropDownListClasses.backIcon, dropDownListClasses.filterBarClearIcon] : [dropDownListClasses.filterBarClearIcon],\n properties: { placeholder: this.filterBarPlaceholder }\n }, this.createElement);\n if (!isNullOrUndefined(this.cssClass)) {\n if (this.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], parentElement);\n prepend([parentElement], popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n if (!Browser.isDevice) {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n else {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.mobileKeyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n EventHandler.add(this.filterInput, 'input', this.onInput, this);\n EventHandler.add(this.filterInput, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.filterInput, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.filterInput, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.filterInput, 'paste', this.pasteHandler, this);\n return this.filterInputObj;\n }\n else {\n return inputObject;\n }\n };\n DropDownList.prototype.onInput = function (e) {\n this.isValidKey = true;\n if (this.getModuleName() === 'combobox') {\n this.updateIconState();\n }\n // For filtering works in mobile firefox.\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.typedString = this.filterInput.value;\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n };\n DropDownList.prototype.pasteHandler = function (e) {\n var _this = this;\n setTimeout(function () {\n _this.typedString = _this.filterInput.value;\n _this.searchLists(e);\n });\n };\n DropDownList.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n if (this.beforePopupOpen) {\n this.renderPopup();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n if (this.isNotSearchList) {\n this.isNotSearchList = false;\n return;\n }\n if (this.isActive || !isNullOrUndefined(ulElement)) {\n var selectedItem = this.selectedLI ? this.selectedLI.cloneNode(true) : null;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.updateSelectElementData(this.allowFiltering);\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent) && this.searchKeyEvent.type === 'keydown') {\n this.isRequested = false;\n this.keyActionHandler(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent)) {\n this.incrementalSearch(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n this.list.scrollTop = 0;\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n }\n if (this.initRemoteRender) {\n this.initial = true;\n this.activeIndex = this.index;\n this.initRemoteRender = false;\n if (this.value && this.dataSource instanceof DataManager) {\n var checkField_1 = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n var fieldValue_1 = this.fields.value.split('.');\n var checkVal = list.some(function (x) {\n return isNullOrUndefined(x[checkField_1]) && fieldValue_1.length > 1 ?\n _this.checkFieldValue(x, fieldValue_1) === _this.value : x[checkField_1] === _this.value;\n });\n if (!checkVal) {\n this.dataSource.executeQuery(this.getQuery(this.query).where(new Predicate(checkField_1, 'equal', this.value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n _this.updateValues();\n }\n else {\n _this.updateValues();\n }\n });\n }\n else {\n this.updateValues();\n }\n }\n else {\n this.updateValues();\n }\n this.initial = false;\n }\n else if (this.getModuleName() === 'autocomplete' && this.value) {\n this.setInputValue();\n }\n if (this.getModuleName() !== 'autocomplete' && this.isFiltering() && !this.isTyped) {\n if (!this.actionCompleteData.isUpdated || ((!this.isCustomFilter\n && !this.isFilterFocus) || (isNullOrUndefined(this.itemData) && this.allowFiltering)\n && ((this.dataSource instanceof DataManager)\n || (!isNullOrUndefined(this.dataSource) && !isNullOrUndefined(this.dataSource.length) &&\n this.dataSource.length !== 0)))) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.updateActionCompleteDataValues(ulElement, list);\n }, 0);\n }\n else {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n }\n this.addNewItem(list, selectedItem);\n if (!isNullOrUndefined(this.itemData)) {\n this.focusIndexItem();\n }\n }\n if (this.beforePopupOpen) {\n this.renderPopup(e);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.checkFieldValue = function (list, fieldValue) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var checkField = list;\n fieldValue.forEach(function (value) {\n checkField = checkField[value];\n });\n return checkField;\n };\n DropDownList.prototype.updateActionCompleteDataValues = function (ulElement, list) {\n this.actionCompleteData = { ulElement: ulElement.cloneNode(true), list: list, isUpdated: true };\n if (this.actionData.list !== this.actionCompleteData.list && this.actionCompleteData.ulElement && this.actionCompleteData.list) {\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.addNewItem = function (listData, newElement) {\n var _this = this;\n if (!isNullOrUndefined(this.itemData) && !isNullOrUndefined(newElement)) {\n var value_1 = this.getItemData().value;\n var isExist = listData.some(function (data) {\n return (((typeof data === 'string' || typeof data === 'number') && data === value_1) ||\n (getValue(_this.fields.value, data) === value_1));\n });\n if (!isExist) {\n this.addItem(this.itemData);\n }\n }\n };\n DropDownList.prototype.updateActionCompleteData = function (li, item, index) {\n var _this = this;\n if (this.getModuleName() !== 'autocomplete' && this.actionCompleteData.ulElement) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.actionCompleteDataUpdate(li, item, index);\n }, 0);\n }\n else {\n this.actionCompleteDataUpdate(li, item, index);\n }\n }\n };\n DropDownList.prototype.actionCompleteDataUpdate = function (li, item, index) {\n if (index !== null) {\n this.actionCompleteData.ulElement.\n insertBefore(li.cloneNode(true), this.actionCompleteData.ulElement.childNodes[index]);\n }\n else {\n this.actionCompleteData.ulElement.appendChild(li.cloneNode(true));\n }\n if (this.isFiltering() && this.actionCompleteData.list.indexOf(item) < 0) {\n this.actionCompleteData.list.push(item);\n }\n };\n DropDownList.prototype.focusIndexItem = function () {\n var value = this.getItemData().value;\n this.activeIndex = this.getIndexByValue(value);\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n this.activeItem(element);\n this.removeFocus();\n };\n DropDownList.prototype.updateSelection = function () {\n var selectedItem = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (selectedItem) {\n this.setProperties({ 'index': this.getIndexByValue(selectedItem.getAttribute('data-value')) });\n this.activeIndex = this.index;\n }\n else {\n this.removeFocus();\n this.list.querySelector('.' + dropDownBaseClasses.li).classList.add(dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.removeFocus = function () {\n var highlightedItem = this.list.querySelectorAll('.' + dropDownListClasses.focus);\n if (highlightedItem && highlightedItem.length) {\n removeClass(highlightedItem, dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.renderPopup = function (e) {\n var _this = this;\n if (this.popupObj && document.body.contains(this.popupObj.element)) {\n this.refreshPopup();\n return;\n }\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n var popupEle = _this.createElement('div', {\n id: _this.element.id + '_popup', className: 'e-ddl e-popup ' + (_this.cssClass !== null ? _this.cssClass : '')\n });\n var searchBox = _this.setSearchBox(popupEle);\n _this.listHeight = formatUnit(_this.popupHeight);\n if (_this.headerTemplate) {\n _this.setHeaderTemplate(popupEle);\n }\n append([_this.list], popupEle);\n if (_this.footerTemplate) {\n _this.setFooterTemplate(popupEle);\n }\n document.body.appendChild(popupEle);\n popupEle.style.visibility = 'hidden';\n if (_this.popupHeight !== 'auto') {\n _this.searchBoxHeight = 0;\n if (!isNullOrUndefined(searchBox.container)) {\n _this.searchBoxHeight = (searchBox.container.parentElement).getBoundingClientRect().height;\n _this.listHeight = (parseInt(_this.listHeight, 10) - (_this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.headerTemplate) {\n _this.header = _this.header ? _this.header : popupEle.querySelector('.e-ddl-header');\n var height = Math.round(_this.header.getBoundingClientRect().height);\n _this.listHeight = (parseInt(_this.listHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.footerTemplate) {\n _this.footer = _this.footer ? _this.footer : popupEle.querySelector('.e-ddl-footer');\n var height = Math.round(_this.footer.getBoundingClientRect().height);\n _this.listHeight = (parseInt(_this.listHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n _this.list.style.maxHeight = (parseInt(_this.listHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(_this.popupHeight);\n }\n else {\n popupEle.style.height = 'auto';\n }\n var offsetValue = 0;\n var left = void 0;\n if (!isNullOrUndefined(_this.selectedLI) && (!isNullOrUndefined(_this.activeIndex) && _this.activeIndex >= 0)) {\n _this.setScrollPosition();\n }\n else {\n _this.list.scrollTop = 0;\n }\n if (Browser.isDevice && (!_this.allowFiltering && (_this.getModuleName() === 'dropdownlist' ||\n (_this.isDropDownClick && _this.getModuleName() === 'combobox')))) {\n offsetValue = _this.getOffsetValue(popupEle);\n var firstItem = _this.isEmptyList() ? _this.list : _this.liCollections[0];\n if (!isNullOrUndefined(_this.inputElement)) {\n left = -(parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(_this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(_this.inputElement.parentElement).borderLeftWidth, 10));\n }\n }\n _this.getFocusElement();\n _this.createPopup(popupEle, offsetValue, left);\n _this.checkCollision(popupEle);\n if (Browser.isDevice) {\n _this.popupObj.element.classList.add(dropDownListClasses.device);\n if (_this.getModuleName() === 'dropdownlist' || (_this.getModuleName() === 'combobox'\n && !_this.allowFiltering && _this.isDropDownClick)) {\n _this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n if (_this.isFilterLayout()) {\n _this.popupObj.element.classList.add(dropDownListClasses.mobileFilter);\n _this.popupObj.position = { X: 0, Y: 0 };\n _this.popupObj.dataBind();\n attributes(_this.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, _this.popupObj.element], dropDownListClasses.popupFullScreen);\n _this.setSearchBoxPosition();\n _this.backIconElement = searchBox.container.querySelector('.e-back-icon');\n _this.clearIconElement = searchBox.container.querySelector('.' + dropDownListClasses.clearIcon);\n EventHandler.add(_this.backIconElement, 'click', _this.clickOnBackIcon, _this);\n EventHandler.add(_this.clearIconElement, 'click', _this.clearText, _this);\n }\n }\n popupEle.style.visibility = 'visible';\n addClass([popupEle], 'e-popup-close');\n var scrollParentElements = _this.popupObj.getScrollableParent(_this.inputWrapper.container);\n for (var _i = 0, scrollParentElements_1 = scrollParentElements; _i < scrollParentElements_1.length; _i++) {\n var element = scrollParentElements_1[_i];\n EventHandler.add(element, 'scroll', _this.scrollHandler, _this);\n }\n if (!isNullOrUndefined(_this.list)) {\n _this.unWireListEvents();\n _this.wireListEvents();\n }\n _this.selectedElementID = _this.selectedLI ? _this.selectedLI.id : null;\n attributes(_this.targetElement(), { 'aria-expanded': 'true', 'aria-owns': _this.element.id + '_options' });\n _this.inputElement.setAttribute('aria-expanded', 'true');\n var inputParent = _this.isFiltering() ? _this.filterInput.parentElement : _this.inputWrapper.container;\n addClass([inputParent], [dropDownListClasses.inputFocus]);\n var animModel = { name: 'FadeIn', duration: 100 };\n _this.beforePopupOpen = true;\n var popupInstance = _this.popupObj;\n var eventArgs = { popup: popupInstance, event: e, cancel: false, animation: animModel };\n _this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!isNullOrUndefined(_this.inputWrapper)) {\n addClass([_this.inputWrapper.container], [dropDownListClasses.iconAnimation]);\n }\n _this.renderReactTemplates();\n if (!isNullOrUndefined(_this.popupObj)) {\n _this.popupObj.show(new Animation(eventArgs.animation), (_this.zIndex === 1000) ? _this.element : null);\n }\n }\n else {\n _this.beforePopupOpen = false;\n _this.destroyPopup();\n }\n });\n }\n else {\n _this.beforePopupOpen = false;\n }\n });\n };\n DropDownList.prototype.checkCollision = function (popupEle) {\n if (!Browser.isDevice || (Browser.isDevice && !(this.getModuleName() === 'dropdownlist' || this.isDropDownClick))) {\n var collision = isCollide(popupEle);\n if (collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n }\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.getOffsetValue = function (popupEle) {\n var popupStyles = getComputedStyle(popupEle);\n var borderTop = parseInt(popupStyles.borderTopWidth, 10);\n var borderBottom = parseInt(popupStyles.borderBottomWidth, 10);\n return this.setPopupPosition(borderTop + borderBottom);\n };\n DropDownList.prototype.createPopup = function (element, offsetValue, left) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.setWidth(), targetType: 'relative',\n relateTo: this.inputWrapper.container, collision: { X: 'flip', Y: 'flip' }, offsetY: offsetValue,\n enableRtl: this.enableRtl, offsetX: left,\n position: this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' },\n zIndex: this.zIndex,\n close: function () {\n if (!_this.isDocumentClick) {\n _this.focusDropDown();\n }\n // eslint-disable-next-line\n if (_this.isReact) {\n _this.clearTemplate(['headerTemplate', 'footerTemplate']);\n }\n _this.isNotSearchList = false;\n _this.isDocumentClick = false;\n _this.destroyPopup();\n if (_this.isFiltering() && _this.actionCompleteData.list && _this.actionCompleteData.list[0]) {\n _this.isActive = true;\n _this.onActionComplete(_this.actionCompleteData.ulElement, _this.actionCompleteData.list, null, true);\n }\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n var actionList = _this.actionCompleteData && _this.actionCompleteData.ulElement &&\n _this.actionCompleteData.ulElement.querySelector('li');\n var ulElement = _this.list.querySelector('ul li');\n if (!isNullOrUndefined(_this.ulElement) && !isNullOrUndefined(_this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(_this.targetElement(), { 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(_this.ulElement) && !isNullOrUndefined(_this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(_this.targetElement(), { 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n if (_this.isFiltering() && _this.itemTemplate && (_this.element.tagName === _this.getNgDirective()) &&\n (actionList && ulElement && actionList.textContent !== ulElement.textContent) &&\n _this.element.tagName !== 'EJS-COMBOBOX') {\n _this.cloneElements();\n }\n if (_this.isFilterLayout()) {\n removeClass([_this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n _this.isFilterFocus = true;\n _this.filterInput.focus();\n if (_this.inputWrapper.clearButton) {\n addClass([_this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n _this.activeStateChange();\n },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n };\n DropDownList.prototype.isEmptyList = function () {\n return !isNullOrUndefined(this.liCollections) && this.liCollections.length === 0;\n };\n DropDownList.prototype.getFocusElement = function () {\n // combo-box used this method\n };\n DropDownList.prototype.isFilterLayout = function () {\n return this.getModuleName() === 'dropdownlist' && this.allowFiltering;\n };\n DropDownList.prototype.scrollHandler = function () {\n if (Browser.isDevice && ((this.getModuleName() === 'dropdownlist' &&\n !this.isFilterLayout()) || (this.getModuleName() === 'combobox' && !this.allowFiltering && this.isDropDownClick))) {\n this.hidePopup();\n }\n };\n DropDownList.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n this.popupObj.element.style.maxHeight = '100%';\n this.popupObj.element.style.width = '100%';\n this.list.style.maxHeight = (window.innerHeight - searchBoxHeight) + 'px';\n this.list.style.height = (window.innerHeight - searchBoxHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n DropDownList.prototype.setPopupPosition = function (border) {\n var offsetValue;\n var popupOffset = border;\n var selectedLI = this.list.querySelector('.' + dropDownListClasses.focus) || this.selectedLI;\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n var lastItem = this.isEmptyList() ? this.list : this.liCollections[this.getItems().length - 1];\n var liHeight = firstItem.getBoundingClientRect().height;\n var listHeight = this.list.offsetHeight / 2;\n var height = isNullOrUndefined(selectedLI) ? firstItem.offsetTop : selectedLI.offsetTop;\n var lastItemOffsetValue = lastItem.offsetTop;\n if (lastItemOffsetValue - listHeight < height && !isNullOrUndefined(this.liCollections) &&\n this.liCollections.length > 0 && !isNullOrUndefined(selectedLI)) {\n var count = this.list.offsetHeight / liHeight;\n var paddingBottom = parseInt(getComputedStyle(this.list).paddingBottom, 10);\n offsetValue = (count - (this.liCollections.length - this.activeIndex)) * liHeight - popupOffset + paddingBottom;\n this.list.scrollTop = selectedLI.offsetTop;\n }\n else if (height > listHeight) {\n offsetValue = listHeight - liHeight / 2;\n this.list.scrollTop = height - listHeight + liHeight / 2;\n }\n else {\n offsetValue = height;\n }\n var inputHeight = this.inputWrapper.container.offsetHeight;\n offsetValue = offsetValue + liHeight + popupOffset - ((liHeight - inputHeight) / 2);\n return -offsetValue;\n };\n DropDownList.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.inputWrapper.container.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n if (Browser.isDevice && (!this.allowFiltering && (this.getModuleName() === 'dropdownlist' ||\n (this.isDropDownClick && this.getModuleName() === 'combobox')))) {\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n width = (parseInt(width, 10) + (parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(this.inputElement.parentElement).borderLeftWidth, 10)) * 2) + 'px';\n }\n return width;\n };\n DropDownList.prototype.scrollBottom = function (isInitial) {\n if (!isNullOrUndefined(this.selectedLI)) {\n var currentOffset = this.list.offsetHeight;\n var nextBottom = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 : nextOffset;\n var boxRange = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n }\n };\n DropDownList.prototype.scrollTop = function () {\n if (!isNullOrUndefined(this.selectedLI)) {\n var nextOffset = this.selectedLI.offsetTop - this.list.scrollTop;\n nextOffset = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop);\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0) {\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = this.selectedLI.offsetTop - (this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n }\n };\n DropDownList.prototype.isEditTextBox = function () {\n return false;\n };\n DropDownList.prototype.isFiltering = function () {\n return this.allowFiltering;\n };\n DropDownList.prototype.isPopupButton = function () {\n return true;\n };\n DropDownList.prototype.setScrollPosition = function (e) {\n if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.scrollBottom();\n break;\n default:\n this.scrollTop();\n break;\n }\n }\n else {\n this.scrollBottom(true);\n }\n };\n DropDownList.prototype.clearText = function () {\n this.filterInput.value = this.typedString = '';\n this.searchLists(null);\n };\n DropDownList.prototype.setEleWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n DropDownList.prototype.closePopup = function (delay, e) {\n var _this = this;\n this.isTyped = false;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && this.beforePopupOpen)) {\n return;\n }\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.isActive = false;\n this.filterInputObj = null;\n this.isDropDownClick = false;\n this.preventAutoFill = false;\n var scrollableParentElements = this.popupObj.getScrollableParent(this.inputWrapper.container);\n for (var _i = 0, scrollableParentElements_1 = scrollableParentElements; _i < scrollableParentElements_1.length; _i++) {\n var element = scrollableParentElements_1[_i];\n EventHandler.remove(element, 'scroll', this.scrollHandler);\n }\n if (Browser.isDevice && this.isFilterLayout()) {\n removeClass([document.body, this.popupObj.element], dropDownListClasses.popupFullScreen);\n }\n if (this.isFilterLayout()) {\n if (!Browser.isDevice) {\n this.searchKeyModule.destroy();\n if (this.clearIconElement) {\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n }\n if (this.backIconElement) {\n EventHandler.remove(this.backIconElement, 'click', this.clickOnBackIcon);\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n if (!isNullOrUndefined(this.filterInput)) {\n EventHandler.remove(this.filterInput, 'input', this.onInput);\n EventHandler.remove(this.filterInput, 'keyup', this.onFilterUp);\n EventHandler.remove(this.filterInput, 'keydown', this.onFilterDown);\n EventHandler.remove(this.filterInput, 'blur', this.onBlurHandler);\n EventHandler.remove(this.filterInput, 'paste', this.pasteHandler);\n }\n this.filterInput = null;\n }\n attributes(this.targetElement(), { 'aria-expanded': 'false' });\n this.inputElement.setAttribute('aria-expanded', 'false');\n this.targetElement().removeAttribute('aria-owns');\n this.targetElement().removeAttribute('aria-activedescendant');\n this.inputWrapper.container.classList.remove(dropDownListClasses.iconAnimation);\n if (this.isFiltering()) {\n this.actionCompleteData.isUpdated = false;\n }\n this.beforePopupOpen = false;\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var popupInstance = this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel, event: e || null };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!isNullOrUndefined(_this.popupObj) &&\n !isNullOrUndefined(_this.popupObj.element.querySelector('.e-fixed-head'))) {\n var fixedHeader = _this.popupObj.element.querySelector('.e-fixed-head');\n fixedHeader.parentNode.removeChild(fixedHeader);\n _this.fixedHeaderElement = null;\n }\n if (!eventArgs.cancel) {\n if (_this.getModuleName() === 'autocomplete') {\n _this.rippleFun();\n }\n if (_this.isPopupOpen) {\n _this.popupObj.hide(new Animation(eventArgs.animation));\n }\n else {\n _this.destroyPopup();\n }\n }\n });\n if (this.isReact && this.isFiltering() && this.itemTemplate != null) {\n this.actionCompleteData.ulElement = this.ulElement.cloneNode(true);\n }\n };\n DropDownList.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.isFilterFocus = false;\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n };\n DropDownList.prototype.clickOnBackIcon = function () {\n this.hidePopup();\n this.focusIn();\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.render = function () {\n if (this.element.tagName === 'INPUT') {\n this.inputElement = this.element;\n if (isNullOrUndefined(this.inputElement.getAttribute('role'))) {\n this.inputElement.setAttribute('role', 'combobox');\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('type'))) {\n this.inputElement.setAttribute('type', 'text');\n }\n this.inputElement.setAttribute('aria-expanded', 'false');\n }\n else {\n this.inputElement = this.createElement('input', { attrs: { role: 'combobox', type: 'text' } });\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n this.element.parentElement.insertBefore(this.inputElement, this.element);\n this.preventTabIndex(this.inputElement);\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n buttons: this.isPopupButton() ? [dropDownListClasses.icon] : null,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.getModuleName() === 'dropdownlist' ? true : this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n }\n }, this.createElement);\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.inputWrapper.container);\n }\n else {\n this.inputElement.parentElement.insertBefore(this.element, this.inputElement);\n }\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'tabindex': '-1', 'class': dropDownListClasses.hiddenElement }\n });\n prepend([this.hiddenElement], this.inputWrapper.container);\n this.validationAttribute(this.element, this.hiddenElement);\n this.setReadOnly();\n this.setFields();\n this.inputWrapper.container.style.width = formatUnit(this.width);\n this.inputWrapper.container.classList.add('e-ddl');\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && this.inputWrapper.container.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n this.wireEvent();\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement.id = id + '_hidden';\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n }\n else {\n attributes(this.targetElement(), { 'aria-label': this.getModuleName() });\n }\n attributes(this.targetElement(), this.getAriaAttributes());\n this.updateDataAttribute(this.htmlAttributes);\n this.setHTMLAttributes();\n if (this.targetElement() === this.inputElement) {\n this.inputElement.removeAttribute('aria-labelledby');\n }\n if (this.value !== null || this.activeIndex !== null || this.text !== null) {\n this.initValue();\n }\n else if (this.element.tagName === 'SELECT' && this.element.options[0]) {\n var selectElement = this.element;\n this.value = selectElement.options[selectElement.selectedIndex].value;\n this.text = isNullOrUndefined(this.value) ? null : selectElement.options[selectElement.selectedIndex].textContent;\n this.initValue();\n }\n this.setEnabled();\n this.preventTabIndex(this.element);\n if (!this.enabled) {\n this.targetElement().tabIndex = -1;\n }\n this.initial = false;\n this.element.style.opacity = '';\n this.inputElement.onselect = function (e) {\n e.stopImmediatePropagation();\n };\n this.inputElement.onchange = function (e) {\n e.stopImmediatePropagation();\n };\n if (this.element.hasAttribute('autofocus')) {\n this.focusIn();\n }\n if (!isNullOrUndefined(this.text)) {\n this.inputElement.setAttribute('value', this.text);\n }\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n var floatLabelElement = this.inputWrapper.container.getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(this.element.id) && this.element.id !== '' && !isNullOrUndefined(floatLabelElement)) {\n floatLabelElement.id = 'label_' + this.element.id.replace(/ /g, '_');\n attributes(this.inputElement, { 'aria-labelledby': floatLabelElement.id });\n }\n this.renderComplete();\n };\n DropDownList.prototype.setFooterTemplate = function (popupEle) {\n var compiledString;\n if (this.footer) {\n if (this.isReact && typeof this.footerTemplate === 'function') {\n this.clearTemplate(['footerTemplate']);\n }\n else {\n this.footer.innerHTML = '';\n }\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], dropDownListClasses.footer);\n }\n var footercheck = this.dropdownCompiler(this.footerTemplate);\n if (typeof this.footerTemplate !== 'function' && footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var footerCompTemp = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (footerCompTemp && footerCompTemp.length > 0) {\n append(footerCompTemp, this.footer);\n }\n append([this.footer], popupEle);\n };\n DropDownList.prototype.setHeaderTemplate = function (popupEle) {\n var compiledString;\n if (this.header) {\n this.header.innerHTML = '';\n }\n else {\n this.header = this.createElement('div');\n addClass([this.header], dropDownListClasses.header);\n }\n var headercheck = this.dropdownCompiler(this.headerTemplate);\n if (typeof this.headerTemplate !== 'function' && headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var headerCompTemp = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (headerCompTemp && headerCompTemp.length) {\n append(headerCompTemp, this.header);\n }\n var contentEle = popupEle.querySelector('div.e-content');\n popupEle.insertBefore(this.header, contentEle);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @returns {void}\n */\n DropDownList.prototype.setEnabled = function () {\n this.element.setAttribute('aria-disabled', (this.enabled) ? 'false' : 'true');\n };\n DropDownList.prototype.setOldText = function (text) {\n this.text = text;\n };\n DropDownList.prototype.setOldValue = function (value) {\n this.value = value;\n };\n DropDownList.prototype.refreshPopup = function () {\n if (!isNullOrUndefined(this.popupObj) && document.body.contains(this.popupObj.element) &&\n ((this.allowFiltering && !(Browser.isDevice && this.isFilterLayout())) || this.getModuleName() === 'autocomplete')) {\n removeClass([this.popupObj.element], 'e-popup-close');\n this.popupObj.refreshPosition(this.inputWrapper.container);\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.checkData = function (newProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource)) && this.itemTemplate && this.allowFiltering &&\n !(this.isListSearched && (newProp.dataSource instanceof DataManager))) {\n this.list = null;\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n }\n this.isListSearched = false;\n var isChangeValue = Object.keys(newProp).indexOf('value') !== -1 && isNullOrUndefined(newProp.value);\n var isChangeText = Object.keys(newProp).indexOf('text') !== -1 && isNullOrUndefined(newProp.text);\n if (this.getModuleName() !== 'autocomplete' && this.allowFiltering && (isChangeValue || isChangeText)) {\n this.itemData = null;\n }\n if (this.allowFiltering && newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))) {\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n this.actionData = this.actionCompleteData;\n this.itemData = null;\n }\n else if (this.allowFiltering && newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n this.actionCompleteData = this.getModuleName() === 'combobox' ?\n { ulElement: null, list: null, isUpdated: false } : this.actionCompleteData;\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.updateDataSource = function (props) {\n if (this.inputElement.value !== '' || (!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0)))) {\n this.clearAll(null, props);\n }\n if ((this.fields.groupBy && props.fields) && !this.isGroupChecking && this.list) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n if (!(!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0))) || !(props.dataSource === [])) {\n this.typedString = '';\n this.resetList(this.dataSource);\n }\n if (!this.isCustomFilter && !this.isFilterFocus && document.activeElement !== this.filterInput) {\n this.checkCustomValue();\n }\n };\n DropDownList.prototype.checkCustomValue = function () {\n this.itemData = this.getDataByValue(this.value);\n var dataItem = this.getItemData();\n this.setProperties({ 'text': dataItem.text, 'value': dataItem.value });\n };\n DropDownList.prototype.updateInputFields = function () {\n if (this.getModuleName() === 'dropdownlist') {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @private\n * @param {DropDownListModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownListModel} oldProp - Returns the previous previous value of the component.\n * @returns {void}\n */\n DropDownList.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n if (this.getModuleName() === 'dropdownlist') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n var _loop_1 = function (prop) {\n switch (prop) {\n case 'query':\n case 'dataSource': break;\n case 'htmlAttributes':\n this_1.setHTMLAttributes();\n break;\n case 'width':\n this_1.setEleWidth(newProp.width);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this_1.inputElement);\n break;\n case 'filterBarPlaceholder':\n if (this_1.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this_1.filterInput);\n }\n break;\n case 'readonly':\n if (this_1.getModuleName() !== 'dropdownlist') {\n Input.setReadonly(newProp.readonly, this_1.inputElement);\n }\n this_1.setReadOnly();\n break;\n case 'cssClass':\n this_1.setCssClass(newProp.cssClass, oldProp.cssClass);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'enableRtl':\n this_1.setEnableRtl();\n break;\n case 'enabled':\n this_1.setEnable();\n break;\n case 'text':\n if (newProp.text === null) {\n this_1.clearAll();\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender) {\n var li = this_1.getElementByText(newProp.text);\n if (!this_1.checkValidLi(li)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.text, oldProp.text, 'text');\n }\n else if (newProp.text && this_1.dataSource instanceof DataManager) {\n var listLength_1 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.text) ? this_1.fields.value : this_1.fields.text;\n this_1.typedString = '';\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', newProp.text)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_1);\n _this.updateValues();\n }\n else {\n _this.setOldText(oldProp.text);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\n else {\n this_1.setOldText(oldProp.text);\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'value':\n if (newProp.value === null) {\n this_1.clearAll();\n break;\n }\n this_1.notify('beforeValueChange', { newProp: newProp }); // gird component value type change\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender) {\n var item = this_1.getElementByValue(newProp.value);\n if (!this_1.checkValidLi(item)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.value, oldProp.value, 'value');\n }\n else if (newProp.value && this_1.dataSource instanceof DataManager) {\n var listLength_2 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.value) ? this_1.fields.text : this_1.fields.value;\n this_1.typedString = '';\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', newProp.value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_2);\n _this.updateValues();\n }\n else {\n _this.setOldValue(oldProp.value);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\n else {\n this_1.setOldValue(oldProp.value);\n }\n }\n this_1.updateInputFields();\n this_1.preventChange = this_1.isAngular && this_1.preventChange ? !this_1.preventChange : this_1.preventChange;\n }\n break;\n case 'index':\n if (newProp.index === null) {\n this_1.clearAll();\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender && this_1.liCollections) {\n var element = this_1.liCollections[newProp.index];\n if (!this_1.checkValidLi(element)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.index, oldProp.index, 'index');\n }\n else {\n this_1.index = oldProp.index;\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'footerTemplate':\n if (this_1.popupObj) {\n this_1.setFooterTemplate(this_1.popupObj.element);\n }\n break;\n case 'headerTemplate':\n if (this_1.popupObj) {\n this_1.setHeaderTemplate(this_1.popupObj.element);\n }\n break;\n case 'valueTemplate':\n if (!isNullOrUndefined(this_1.itemData) && this_1.valueTemplate !== null) {\n this_1.setValueTemplate();\n }\n break;\n case 'allowFiltering':\n if (this_1.allowFiltering) {\n this_1.actionCompleteData = {\n ulElement: this_1.ulElement,\n list: this_1.listData, isUpdated: true\n };\n this_1.actionData = this_1.actionCompleteData;\n this_1.updateSelectElementData(this_1.allowFiltering);\n }\n break;\n case 'floatLabelType':\n Input.removeFloating(this_1.inputWrapper);\n Input.addFloating(this_1.inputElement, newProp.floatLabelType, this_1.placeholder, this_1.createElement);\n if (!isNullOrUndefined(this_1.inputWrapper.buttons[0]) && this_1.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0] && this_1.floatLabelType !== 'Never') {\n this_1.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'showClearButton':\n if (!this_1.inputWrapper.clearButton) {\n Input.setClearButton(newProp.showClearButton, this_1.inputElement, this_1.inputWrapper, null, this_1.createElement);\n this_1.bindClearEvent();\n }\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var ddlProps = this_1.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this_1, ddlProps.newProperty, ddlProps.oldProperty);\n }\n break;\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_1(prop);\n }\n };\n DropDownList.prototype.checkValidLi = function (element) {\n if (this.isValidLI(element)) {\n this.setSelection(element, null);\n return true;\n }\n return false;\n };\n DropDownList.prototype.setSelectionData = function (newProp, oldProp, prop) {\n var _this = this;\n var li;\n this.updateListValues = function () {\n if (prop === 'text') {\n li = _this.getElementByText(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldText(oldProp);\n }\n }\n else if (prop === 'value') {\n li = _this.getElementByValue(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldValue(oldProp);\n }\n }\n else if (prop === 'index') {\n li = _this.liCollections[newProp];\n if (!_this.checkValidLi(li)) {\n _this.index = oldProp;\n }\n }\n };\n };\n DropDownList.prototype.setReadOnly = function () {\n if (this.readonly) {\n addClass([this.inputWrapper.container], ['e-readonly']);\n }\n else {\n removeClass([this.inputWrapper.container], ['e-readonly']);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.setInputValue = function (newProp, oldProp) {\n };\n DropDownList.prototype.setCssClass = function (newClass, oldClass) {\n if (!isNullOrUndefined(oldClass)) {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newClass)) {\n newClass = (newClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newClass, [this.inputWrapper.container], oldClass);\n if (this.popupObj) {\n Input.setCssClass(newClass, [this.popupObj.element], oldClass);\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownList.prototype.getModuleName = function () {\n return 'dropdownlist';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n */\n DropDownList.prototype.showPopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (!this.enabled) {\n return;\n }\n if (this.isReact && this.getModuleName() === 'combobox' && this.itemTemplate && this.isCustomFilter && this.isAddNewItemTemplate) {\n this.renderList();\n this.isAddNewItemTemplate = false;\n }\n if (this.isFiltering() && this.dataSource instanceof DataManager && (this.actionData.list !== this.actionCompleteData.list) &&\n this.actionData.list && this.actionData.ulElement) {\n this.actionCompleteData = this.actionData;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n if (this.isFiltering() && !this.isActive && this.actionCompleteData.list && this.actionCompleteData.list[0]) {\n this.isActive = true;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n else if (isNullOrUndefined(this.list) || !isUndefined(this.list) && (this.list.classList.contains(dropDownBaseClasses.noData) ||\n this.list.querySelectorAll('.' + dropDownBaseClasses.li).length <= 0)) {\n this.renderList(e);\n }\n this.invokeRenderPopup(e);\n };\n DropDownList.prototype.invokeRenderPopup = function (e) {\n if (Browser.isDevice && this.isFilterLayout()) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_2 = this;\n window.onpopstate = function () {\n proxy_2.hidePopup();\n };\n history.pushState({}, '');\n }\n if (!isNullOrUndefined(this.list) && (!isNullOrUndefined(this.list.children[0]) ||\n this.list.classList.contains(dropDownBaseClasses.noData))) {\n this.renderPopup(e);\n }\n };\n DropDownList.prototype.renderHightSearch = function () {\n // update high light search\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in an open state.\n *\n * @returns {void}\n */\n DropDownList.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (this.isEscapeKey && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.inputElement)) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.isEscapeKey = false;\n if (!isNullOrUndefined(this.index)) {\n var element = this.findListElement(this.ulElement, 'li', 'data-value', this.value);\n this.selectedLI = this.liCollections[this.index] || element;\n if (this.selectedLI) {\n this.updateSelectedItem(this.selectedLI, null, true);\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n }\n }\n else {\n this.resetSelection();\n }\n }\n this.closePopup(0, e);\n var dataItem = this.getItemData();\n var isSelectVal = !isNullOrUndefined(this.selectedLI);\n if (this.inputElement && this.inputElement.value.trim() === '' && !this.isInteracted && (this.isSelectCustom ||\n isSelectVal && this.inputElement.value !== dataItem.text)) {\n this.isSelectCustom = false;\n this.clearAll(e);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Sets the focus on the component for interaction.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusIn = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.targetElement().classList.contains(dropDownListClasses.disable)) {\n return;\n }\n var isFocused = false;\n if (this.preventFocus && Browser.isDevice) {\n this.inputWrapper.container.tabIndex = 1;\n this.inputWrapper.container.focus();\n this.preventFocus = false;\n isFocused = true;\n }\n if (!isFocused) {\n this.targetElement().focus();\n }\n addClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n this.onFocus(e);\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n };\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (!this.enabled) {\n return;\n }\n this.isTyped = true;\n this.hidePopup(e);\n if (this.targetElement()) {\n this.targetElement().blur();\n }\n removeClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n if (this.floatLabelType === 'Auto' && this.inputElement.value === '') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownList.prototype.destroy = function () {\n this.isActive = false;\n resetIncrementalSearchValues(this.element.id);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n this.hidePopup();\n this.unWireEvent();\n if (this.list) {\n this.unWireListEvents();\n }\n if (this.element && !this.element.classList.contains('e-' + this.getModuleName())) {\n return;\n }\n if (this.inputElement) {\n var attrArray = ['readonly', 'aria-disabled', 'placeholder', 'aria-labelledby',\n 'aria-expanded', 'autocomplete', 'aria-readonly', 'autocapitalize',\n 'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-describedby', 'aria-label'];\n for (var i = 0; i < attrArray.length; i++) {\n this.inputElement.removeAttribute(attrArray[i]);\n }\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n this.inputElement.classList.remove('e-input');\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.element.style.display = 'block';\n if (this.inputWrapper.container.parentElement.tagName === this.getNgDirective()) {\n detach(this.inputWrapper.container);\n }\n else {\n this.inputWrapper.container.parentElement.insertBefore(this.element, this.inputWrapper.container);\n detach(this.inputWrapper.container);\n }\n this.hiddenElement = null;\n this.inputWrapper = null;\n this.keyboardModule = null;\n this.ulElement = null;\n this.list = null;\n this.popupObj = null;\n this.rippleFun = null;\n this.selectedLI = null;\n this.liCollections = null;\n this.item = null;\n this.inputWrapper = null;\n this.footer = null;\n this.header = null;\n this.previousSelectedLI = null;\n this.valueTempElement = null;\n this.actionData.ulElement = null;\n if (this.inputElement && !isNullOrUndefined(this.inputElement.onchange)) {\n this.inputElement.onchange = null;\n }\n if (this.isAngular) {\n this.inputElement = null;\n }\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownList.prototype.getItems = function () {\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n this.renderList();\n }\n return this.ulElement ? _super.prototype.getItems.call(this) : [];\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownList.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n */\n DropDownList.prototype.clear = function () {\n this.value = null;\n };\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"width\", void 0);\n __decorate([\n Property(true)\n ], DropDownList.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('300px')\n ], DropDownList.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], DropDownList.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], DropDownList.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"showClearButton\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"focus\", void 0);\n DropDownList = __decorate([\n NotifyPropertyChanges\n ], DropDownList);\n return DropDownList;\n}(DropDownBase));\nexport { DropDownList };\n","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { Query, DataManager, Predicate, Deferred, UrlAdaptor, RemoteSaveAdaptor } from '@syncfusion/ej2-data';\nimport { setFormatter, isGroupAdaptive, getColumnByForeignKeyValue, refreshFilteredColsUid } from '../base/util';\nimport * as events from '../base/constant';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * Grid data module is used to generate query and data source.\n *\n * @hidden\n */\nvar Data = /** @class */ (function () {\n /**\n * Constructor for data module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n * @hidden\n */\n function Data(parent, serviceLocator) {\n this.dataState = { isPending: false, resolver: null, group: [] };\n this.foreignKeyDataState = { isPending: false, resolver: null };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.initDataManager();\n if (this.parent.isDestroyed || this.getModuleName() === 'foreignKey') {\n return;\n }\n this.parent.on(events.rowsAdded, this.addRows, this);\n this.parent.on(events.rowPositionChanged, this.reorderRows, this);\n this.parent.on(events.rowsRemoved, this.removeRows, this);\n this.parent.on(events.dataSourceModified, this.initDataManager, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.updateData, this.crudActions, this);\n this.parent.on(events.addDeleteAction, this.getData, this);\n this.parent.on(events.autoCol, this.refreshFilteredCols, this);\n this.parent.on(events.columnsPrepared, this.refreshFilteredCols, this);\n }\n Data.prototype.reorderRows = function (e) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, this.dataManager.dataSource.json.splice(e.fromIndex, 1)[0]);\n };\n Data.prototype.getModuleName = function () {\n return 'data';\n };\n /**\n * The function used to initialize dataManager and external query\n *\n * @returns {void}\n */\n Data.prototype.initDataManager = function () {\n var gObj = this.parent;\n this.dataManager = gObj.dataSource instanceof DataManager ? gObj.dataSource :\n (isNullOrUndefined(gObj.dataSource) ? new DataManager() : new DataManager(gObj.dataSource));\n if (gObj.isAngular && !(gObj.query instanceof Query)) {\n gObj.setProperties({ query: new Query() }, true);\n }\n else {\n this.isQueryInvokedFromData = true;\n gObj.query = gObj.query instanceof Query ? gObj.query : new Query();\n }\n };\n /**\n * The function is used to generate updated Query from Grid model.\n *\n * @param {boolean} skipPage - specifies the boolean to skip the page\n * @param {boolean} isAutoCompleteCall - specifies for auto complete call\n * @returns {Query} returns the Query\n * @hidden\n */\n Data.prototype.generateQuery = function (skipPage, isAutoCompleteCall) {\n var gObj = this.parent;\n var query = gObj.getQuery().clone();\n if (this.parent.columnQueryMode === 'ExcludeHidden') {\n query.select(this.parent.getColumns().filter(function (column) { return !(column.isPrimaryKey !== true && column.visible === false || column.field === undefined); }).map(function (column) { return column.field; }));\n }\n else if (this.parent.columnQueryMode === 'Schema') {\n var selectQueryFields = [];\n var columns = this.parent.columns;\n for (var i = 0; i < columns.length; i++) {\n selectQueryFields.push(columns[parseInt(i.toString(), 10)].field);\n }\n query.select(selectQueryFields);\n }\n this.filterQuery(query);\n this.searchQuery(query);\n this.aggregateQuery(query);\n this.sortQuery(query);\n if (isGroupAdaptive(this.parent)) {\n this.virtualGroupPageQuery(query);\n }\n else {\n this.pageQuery(query, skipPage);\n }\n if (isNullOrUndefined(isAutoCompleteCall) || !isAutoCompleteCall) {\n this.groupQuery(query);\n }\n return query;\n };\n /**\n * @param {Query} query - specifies the query\n * @returns {Query} - returns the query\n * @hidden\n */\n Data.prototype.aggregateQuery = function (query) {\n var rows = this.parent.aggregates;\n for (var i = 0; i < rows.length; i++) {\n var row = rows[parseInt(i.toString(), 10)];\n for (var j = 0; j < row.columns.length; j++) {\n var cols = row.columns[parseInt(j.toString(), 10)];\n var types = cols.type instanceof Array ? cols.type : [cols.type];\n for (var k = 0; k < types.length; k++) {\n query.aggregate(types[parseInt(k.toString(), 10)].toLowerCase(), cols.field);\n }\n }\n }\n return query;\n };\n Data.prototype.virtualGroupPageQuery = function (query) {\n var fName = 'fn';\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[parseInt(i.toString(), 10)][\"\" + fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n };\n Data.prototype.pageQuery = function (query, skipPage) {\n var gObj = this.parent;\n var fName = 'fn';\n var args = { query: query, skipPage: false };\n gObj.notify(events.setVirtualPageQuery, args);\n if (args.skipPage) {\n return query;\n }\n if ((gObj.allowPaging || gObj.enableVirtualization || gObj.enableInfiniteScrolling) && skipPage !== true) {\n gObj.pageSettings.currentPage = Math.max(1, gObj.pageSettings.currentPage);\n if (gObj.pageSettings.pageCount <= 0) {\n gObj.pageSettings.pageCount = 8;\n }\n if (gObj.pageSettings.pageSize <= 0) {\n gObj.pageSettings.pageSize = 12;\n }\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[parseInt(i.toString(), 10)][\"\" + fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n if (!isNullOrUndefined(gObj.infiniteScrollModule) && gObj.enableInfiniteScrolling) {\n this.parent.notify(events.infinitePageQuery, query);\n }\n else {\n query.page(gObj.pageSettings.currentPage, gObj.allowPaging && gObj.pagerModule &&\n (gObj.pagerModule.pagerObj.isAllPage && !gObj.isManualRefresh) &&\n (!this.dataManager.dataSource.offline && !(this.dataManager.adaptor instanceof RemoteSaveAdaptor)) ?\n null : gObj.pageSettings.pageSize);\n }\n }\n return query;\n };\n Data.prototype.groupQuery = function (query) {\n var gObj = this.parent;\n if (gObj.allowGrouping && gObj.groupSettings.columns.length) {\n if (this.parent.groupSettings.enableLazyLoading) {\n query.lazyLoad.push({ key: 'isLazyLoad', value: this.parent.groupSettings.enableLazyLoading });\n }\n var columns = gObj.groupSettings.columns;\n for (var i = 0, len = columns.length; i < len; i++) {\n var column = this.getColumnByField(columns[parseInt(i.toString(), 10)]);\n if (!column) {\n this.parent.log('initial_action', { moduleName: 'group', columnName: columns[parseInt(i.toString(), 10)] });\n }\n var isGrpFmt = column.enableGroupByFormat;\n var format = column.format;\n if (isGrpFmt) {\n query.group(columns[parseInt(i.toString(), 10)], this.formatGroupColumn.bind(this), format);\n }\n else {\n query.group(columns[parseInt(i.toString(), 10)], null);\n }\n }\n }\n return query;\n };\n Data.prototype.sortQuery = function (query) {\n var gObj = this.parent;\n if ((gObj.allowSorting || gObj.allowGrouping) && gObj.sortSettings.columns.length) {\n var columns = gObj.sortSettings.columns;\n var sortGrp = [];\n for (var i = columns.length - 1; i > -1; i--) {\n var col = this.getColumnByField(columns[parseInt(i.toString(), 10)].field);\n if (col) {\n col.setSortDirection(columns[parseInt(i.toString(), 10)].direction);\n }\n else {\n this.parent.log('initial_action', { moduleName: 'sort', columnName: columns[parseInt(i.toString(), 10)].field });\n return query;\n }\n var fn = columns[parseInt(i.toString(), 10)].direction;\n if (col.sortComparer) {\n this.parent.log('grid_sort_comparer');\n fn = !this.isRemote() ? col.sortComparer.bind(col) : columns[parseInt(i.toString(), 10)].direction;\n }\n if (gObj.groupSettings.columns.indexOf(columns[parseInt(i.toString(), 10)].field) === -1) {\n if (col.isForeignColumn() || col.sortComparer) {\n query.sortByForeignKey(col.field, fn, undefined, columns[parseInt(i.toString(), 10)].direction.toLowerCase());\n }\n else {\n query.sortBy(col.field, fn);\n }\n }\n else {\n sortGrp.push({ direction: fn, field: col.field });\n }\n }\n for (var i = 0, len = sortGrp.length; i < len; i++) {\n if (typeof sortGrp[parseInt(i.toString(), 10)].direction === 'string') {\n query.sortBy(sortGrp[parseInt(i.toString(), 10)].field, sortGrp[parseInt(i.toString(), 10)].direction);\n }\n else {\n var col = this.getColumnByField(sortGrp[parseInt(i.toString(), 10)].field);\n query.sortByForeignKey(sortGrp[parseInt(i.toString(), 10)].field, sortGrp[parseInt(i.toString(), 10)].direction, undefined, col.getSortDirection().toLowerCase());\n }\n }\n }\n return query;\n };\n Data.prototype.searchQuery = function (query, fcolumn, isForeignKey) {\n var sSettings = this.parent.searchSettings;\n var fields = sSettings.fields.length ? sSettings.fields : this.getSearchColumnFieldNames();\n var predicateList = [];\n var needForeignKeySearch = false;\n if (this.parent.searchSettings.key.length) {\n needForeignKeySearch = this.parent.getForeignKeyColumns().some(function (col) { return fields.indexOf(col.field) > -1; });\n var adaptor = !isForeignKey ? this.dataManager.adaptor : fcolumn.dataSource.adaptor;\n if (needForeignKeySearch || (adaptor.getModuleName &&\n adaptor.getModuleName() === 'ODataV4Adaptor')) {\n fields = isForeignKey ? [fcolumn.foreignKeyValue] : fields;\n for (var i = 0; i < fields.length; i++) {\n var column = isForeignKey ? fcolumn : this.getColumnByField(fields[parseInt(i.toString(), 10)]);\n if (column.isForeignColumn() && !isForeignKey) {\n predicateList = this.fGeneratePredicate(column, predicateList);\n }\n else {\n predicateList.push(new Predicate(fields[parseInt(i.toString(), 10)], sSettings.operator, sSettings.key, sSettings.ignoreCase, sSettings.ignoreAccent));\n }\n }\n var predList = Predicate.or(predicateList);\n predList.key = sSettings.key;\n query.where(predList);\n }\n else {\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n }\n return query;\n };\n Data.prototype.filterQuery = function (query, column, skipFoerign) {\n var gObj = this.parent;\n var predicateList = [];\n var actualFilter = [];\n var foreignColumn = this.parent.getForeignKeyColumns();\n var foreignColEmpty;\n if (gObj.allowFiltering && gObj.filterSettings.columns.length) {\n var columns = column ? column : gObj.filterSettings.columns;\n var colType = {};\n for (var _i = 0, _a = gObj.getColumns(); _i < _a.length; _i++) {\n var col = _a[_i];\n colType[col.field] = col.filter.type ? col.filter.type : gObj.filterSettings.type;\n }\n var foreignCols = [];\n var defaultFltrCols = [];\n for (var _b = 0, columns_1 = columns; _b < columns_1.length; _b++) {\n var col = columns_1[_b];\n var gridColumn = col.isForeignKey ? gObj.getColumnByUid(col.uid) : gObj.getColumnByField(col.field);\n if (isNullOrUndefined(col.type) && gridColumn && (gridColumn.type === 'date' || gridColumn.type === 'datetime' || gridColumn.type === 'dateonly')) {\n col.type = col.isForeignKey ? gObj.getColumnByUid(col.uid).type : gObj.getColumnByField(col.field).type;\n }\n if (col.isForeignKey) {\n foreignCols.push(col);\n }\n else {\n defaultFltrCols.push(col);\n }\n }\n if (defaultFltrCols.length) {\n for (var i = 0, len = defaultFltrCols.length; i < len; i++) {\n defaultFltrCols[parseInt(i.toString(), 10)].uid = defaultFltrCols[parseInt(i.toString(), 10)].uid ||\n this.parent.grabColumnByFieldFromAllCols(defaultFltrCols[parseInt(i.toString(), 10)].field).uid;\n }\n var excelPredicate = CheckBoxFilterBase.getPredicate(defaultFltrCols);\n for (var _c = 0, _d = Object.keys(excelPredicate); _c < _d.length; _c++) {\n var prop = _d[_c];\n predicateList.push(excelPredicate[\"\" + prop]);\n }\n }\n if (foreignCols.length) {\n for (var _e = 0, foreignCols_1 = foreignCols; _e < foreignCols_1.length; _e++) {\n var col = foreignCols_1[_e];\n col.uid = col.uid || this.parent.grabColumnByFieldFromAllCols(col.field).uid;\n var column_1 = this.parent.grabColumnByUidFromAllCols(col.uid);\n if (!column_1) {\n this.parent.log('initial_action', { moduleName: 'filter', columnName: col.field });\n }\n if (column_1.isForeignColumn() && getColumnByForeignKeyValue(col.field, foreignColumn) && !skipFoerign) {\n actualFilter.push(col);\n if (!column_1.columnData.length) {\n foreignColEmpty = true;\n }\n predicateList = this.fGeneratePredicate(column_1, predicateList);\n }\n else {\n var excelPredicate = CheckBoxFilterBase.getPredicate(columns);\n for (var _f = 0, _g = Object.keys(excelPredicate); _f < _g.length; _f++) {\n var prop = _g[_f];\n predicateList.push(excelPredicate[\"\" + prop]);\n }\n }\n }\n }\n if (predicateList.length && !foreignColEmpty) {\n query.where(Predicate.and(predicateList));\n }\n else {\n this.parent.notify(events.showEmptyGrid, {});\n }\n }\n return query;\n };\n Data.prototype.fGeneratePredicate = function (col, predicateList) {\n var fPredicate = {};\n if (col) {\n this.parent.notify(events.generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(fPredicate.predicate);\n }\n }\n return predicateList;\n };\n /**\n * The function is used to get dataManager promise by executing given Query.\n *\n * @param {object} args - specifies the object\n * @param {string} args.requestType - Defines the request type\n * @param {string[]} args.foreignKeyData - Defines the foreignKeyData.string\n * @param {Object} args.data - Defines the data.\n * @param {number} args.index - Defines the index .\n * @param {Query} query - Defines the query which will execute along with data processing.\n * @returns {Promise} - returns the object\n * @hidden\n */\n Data.prototype.getData = function (args, query) {\n var _this = this;\n if (args === void 0) { args = { requestType: '' }; }\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ?\n args.foreignKeyData : this.parent.getPrimaryKeyFieldNames());\n this.parent.log('datasource_syntax_mismatch', { dataState: this.parent });\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n var def = this.eventPromise(args, query, key);\n return def.promise;\n }\n else {\n var crud = void 0;\n switch (args.requestType) {\n case 'delete':\n query = query ? query : this.generateQuery();\n // eslint-disable-next-line no-case-declarations\n var len = Object.keys(args.data).length;\n if (len === 1) {\n crud = this.dataManager.remove(key, args.data[0], query.fromTable, query);\n }\n else {\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n changes.deletedRecords = args.data;\n crud = this.dataManager.saveChanges(changes, key, query.fromTable, query.requiresCount());\n }\n break;\n case 'save':\n query = query ? query : this.generateQuery();\n args.index = isNullOrUndefined(args.index) ? 0 : args.index;\n crud = this.dataManager.insert(args.data, query.fromTable, query, args.index);\n break;\n }\n var promise = 'promise';\n args[\"\" + promise] = crud;\n // eslint-disable-next-line no-prototype-builtins\n if (crud && !Array.isArray(crud) && !crud.hasOwnProperty('deletedRecords')) {\n return crud.then(function () {\n return _this.insert(query, args);\n });\n }\n else {\n return this.insert(query, args);\n }\n }\n };\n Data.prototype.insert = function (query, args) {\n if (args.requestType === 'save') {\n this.parent.notify(events.recordAdded, args);\n }\n return this.executeQuery(query);\n };\n Data.prototype.executeQuery = function (query) {\n var _this = this;\n if (this.dataManager.ready) {\n var deferred_1 = new Deferred();\n var ready = this.dataManager.ready;\n ready.then(function () {\n _this.dataManager.executeQuery(query).then(function (result) {\n deferred_1.resolve(result);\n });\n }).catch(function (e) {\n deferred_1.reject(e);\n });\n return deferred_1.promise;\n }\n else {\n return this.dataManager.executeQuery(query);\n }\n };\n Data.prototype.formatGroupColumn = function (value, field) {\n var serviceLocator = this.serviceLocator;\n var column = this.getColumnByField(field);\n var date = value;\n if (!column.type) {\n column.type = date.getDay ? (date.getHours() > 0 || date.getMinutes() > 0 ||\n date.getSeconds() > 0 || date.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n if (isNullOrUndefined(column.getFormatter())) {\n setFormatter(serviceLocator, column);\n }\n var formatVal = ValueFormatter.prototype.toView(value, column.getFormatter());\n return formatVal;\n };\n Data.prototype.crudActions = function (args) {\n var query = this.generateQuery();\n var promise = null;\n var pr = 'promise';\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ? args.foreignKeyData :\n this.parent.getPrimaryKeyFieldNames());\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.eventPromise(args, query, key);\n }\n switch (args.requestType) {\n case 'save':\n promise = this.dataManager.update(key, args.data, query.fromTable, query, args.previousData);\n break;\n }\n args[\"\" + pr] = promise ? promise : args[\"\" + pr];\n this.parent.notify(events.crudAction, args);\n };\n /**\n * @param {object} changes - specifies the changes\n * @param {string} key - specifies the key\n * @param {object} original - specifies the original data\n * @param {Query} query - specifies the query\n * @returns {Promise} returns the object\n * @hidden\n */\n Data.prototype.saveChanges = function (changes, key, original, query) {\n if (query === void 0) { query = this.generateQuery(); }\n query.requiresCount();\n if ('result' in this.parent.dataSource) {\n var deff = new Deferred();\n var args = {\n requestType: 'batchsave', changes: changes, key: key, query: query,\n endEdit: deff.resolve\n };\n this.setState({ isPending: true, resolver: deff.resolve });\n this.parent.trigger(events.dataSourceChanged, args);\n return deff.promise;\n }\n else {\n var promise = this.dataManager.saveChanges(changes, key, query.fromTable, query, original);\n return promise;\n }\n };\n Data.prototype.getKey = function (keys) {\n if (keys && keys.length) {\n return keys[0];\n }\n return undefined;\n };\n /**\n * @returns {boolean} returns whether its remote data\n * @hidden\n */\n Data.prototype.isRemote = function () {\n return this.dataManager.dataSource.offline !== true && this.dataManager.dataSource.url !== undefined &&\n this.dataManager.dataSource.url !== '';\n };\n Data.prototype.addRows = function (e) {\n for (var i = e.records.length; i > 0; i--) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, e.records[i - 1]);\n }\n };\n Data.prototype.removeRows = function (e) {\n var json = this.dataManager.dataSource.json;\n this.dataManager.dataSource.json = json.filter(function (value) { return e.records.indexOf(value) === -1; });\n };\n Data.prototype.getColumnByField = function (field) {\n var col;\n return (this.parent.columnModel).some(function (column) {\n col = column;\n return column.field === field;\n }) && col;\n };\n Data.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.rowsAdded, this.addRows);\n this.parent.off(events.rowsRemoved, this.removeRows);\n this.parent.off(events.dataSourceModified, this.initDataManager);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.updateData, this.crudActions);\n this.parent.off(events.addDeleteAction, this.getData);\n this.parent.off(events.autoCol, this.refreshFilteredCols);\n this.parent.off(events.columnsPrepared, this.refreshFilteredCols);\n };\n Data.prototype.getState = function () {\n return this.dataState;\n };\n Data.prototype.setState = function (state) {\n return this.dataState = state;\n };\n Data.prototype.getForeignKeyDataState = function () {\n return this.foreignKeyDataState;\n };\n Data.prototype.setForeignKeyDataState = function (state) {\n this.foreignKeyDataState = state;\n };\n Data.prototype.getStateEventArgument = function (query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return extend(data, state.pvtData);\n };\n Data.prototype.eventPromise = function (args, query, key) {\n var _this = this;\n var dataArgs = args;\n var state = this.getStateEventArgument(query);\n var def = new Deferred();\n var deff = new Deferred();\n if (args.requestType !== undefined && this.dataState.isDataChanged !== false) {\n state.action = args;\n if (args.requestType === 'save' || args.requestType === 'delete') {\n var editArgs_1 = args;\n editArgs_1.key = key;\n var promise = 'promise';\n editArgs_1[\"\" + promise] = deff.promise;\n editArgs_1.state = state;\n this.setState({ isPending: true, resolver: deff.resolve });\n dataArgs.endEdit = deff.resolve;\n dataArgs.cancelEdit = deff.reject;\n this.parent.trigger(events.dataSourceChanged, editArgs_1);\n deff.promise.then(function () {\n _this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n if (editArgs_1.requestType === 'save') {\n _this.parent.notify(events.recordAdded, editArgs_1);\n }\n _this.parent.trigger(events.dataStateChange, state);\n })\n .catch(function () { return void 0; });\n }\n else {\n this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n this.parent.trigger(events.dataStateChange, state);\n }\n }\n else {\n this.setState({});\n def.resolve(this.parent.dataSource);\n }\n return def;\n };\n /**\n * Gets the columns where searching needs to be performed from the Grid.\n *\n * @returns {string[]} returns the searched column field names\n */\n Data.prototype.getSearchColumnFieldNames = function () {\n var colFieldNames = [];\n var columns = this.parent.getColumns();\n for (var _i = 0, columns_2 = columns; _i < columns_2.length; _i++) {\n var col = columns_2[_i];\n if (col.allowSearching && !isNullOrUndefined(col.field)) {\n colFieldNames.push(col.field);\n }\n }\n return colFieldNames;\n };\n Data.prototype.refreshFilteredCols = function () {\n if (this.parent.allowFiltering && this.parent.filterSettings.columns.length) {\n refreshFilteredColsUid(this.parent, this.parent.filterSettings.columns);\n }\n };\n return Data;\n}());\nexport { Data };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, getValue, closest } from '@syncfusion/ej2-base';\nimport { attributes } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { appendChildren } from '../base/util';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport * as events from '../base/constant';\n/**\n * FilterCellRenderer class which responsible for building filter cell.\n *\n * @hidden\n */\nvar FilterCellRenderer = /** @class */ (function (_super) {\n __extends(FilterCellRenderer, _super);\n function FilterCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-filterbarcell' });\n return _this;\n }\n /**\n * Function to return the wrapper for the TH content.\n *\n * @returns {string} returns the gui\n */\n FilterCellRenderer.prototype.getGui = function () {\n return this.parent.createElement('div');\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell\n * @param {Object} data\n */\n /* tslint:disable-next-line:max-func-body-length */\n FilterCellRenderer.prototype.render = function (cell, data) {\n var tr = this.parent.element.querySelector('.e-filterbar');\n var node = this.element.cloneNode();\n var innerDIV = this.getGui();\n var input;\n var column = cell.column;\n tr.appendChild(node);\n node.setAttribute('e-mappinguid', column.uid);\n if (column.filterTemplate) {\n var fltrData = {};\n if (data) {\n fltrData[column.field] = data[column.field];\n }\n var col = 'column';\n fltrData[\"\" + col] = column;\n if (column.visible) {\n var isReactCompiler = this.parent.isReact && typeof (column.filterTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var tempID = this.parent.element.id + column.uid + 'filterTemplate';\n if (isReactCompiler || isReactChild) {\n column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else {\n var element = column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID);\n appendChildren(node, element);\n }\n }\n else {\n node.classList.add('e-hide');\n }\n }\n else {\n if (column.type !== 'checkbox') {\n if ((isNullOrUndefined(column.allowFiltering) || column.allowFiltering) && !isNullOrUndefined(column.filterBarTemplate)) {\n node.classList.add('e-fltrtemp');\n attributes(innerDIV, {\n 'class': 'e-fltrtempdiv'\n });\n if (isNullOrUndefined(column.filterBarTemplate.create)) {\n input = this.parent.createElement('input', {\n id: column.field + '_filterBarcell', className: 'e-filterUi_input e-filtertext e-fltrTemp',\n attrs: { type: 'search', title: column.headerText }\n });\n innerDIV.appendChild(input);\n }\n else {\n var args = { column: column, node: Element };\n var temp = column.filterBarTemplate.create;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n input = temp(args);\n if (typeof input === 'string') {\n var div = this.parent.createElement('div');\n div.innerHTML = input;\n input = div.firstChild;\n }\n attributes(innerDIV, {\n class: 'e-filterUi_input e-filtertext e-fltrTemp',\n title: column.headerText,\n id: column.field + '_filterBarcell'\n });\n innerDIV.appendChild(input);\n }\n }\n else {\n attributes(innerDIV, {\n 'class': 'e-filterdiv e-fltrinputdiv'\n });\n input = this.parent.createElement('input', {\n id: column.field + '_filterBarcell', className: 'e-filtertext',\n attrs: {\n type: 'search', title: column.headerText + cell.attributes.title,\n value: data[cell.column.field] ? data[cell.column.field] : '', role: 'search'\n }\n });\n innerDIV.appendChild(input);\n var args = {\n element: input, floatLabelType: 'Never',\n properties: {\n enableRtl: this.parent.enableRtl, showClearButton: true, cssClass: this.parent.cssClass\n }\n };\n Input.createInput(args, this.parent.createElement);\n }\n //TODO: apply intial filtering\n if (column.allowFiltering === false || column.field === '' || isNullOrUndefined(column.field)) {\n input.setAttribute('disabled', 'true');\n input.classList.add('e-disable');\n }\n var clearIconElem = innerDIV.querySelector('.e-clear-icon');\n if (clearIconElem) {\n clearIconElem.setAttribute('title', this.parent.localeObj.getConstant('ClearButton'));\n }\n if (!column.visible) {\n node.classList.add('e-hide');\n }\n this.appendHtml(node, innerDIV);\n // render's the dropdownlist component if showFilterBarOperator sets to true\n if (this.parent.filterSettings.showFilterBarOperator && this.parent.filterSettings.type === 'FilterBar' &&\n !this.parent.isPrinting && isNullOrUndefined(column.filterTemplate) && isNullOrUndefined(column.filterBarTemplate)) {\n this.operatorIconRender(innerDIV, column, cell);\n }\n if ((isNullOrUndefined(column.allowFiltering) || column.allowFiltering) && !isNullOrUndefined(column.filterBarTemplate)) {\n var templateWrite = column.filterBarTemplate.write;\n var args = { element: input, column: column };\n if (typeof templateWrite === 'string') {\n templateWrite = getValue(templateWrite, window);\n }\n templateWrite.call(this, args);\n }\n }\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHTML\n * @returns {Element} retruns the element\n */\n FilterCellRenderer.prototype.appendHtml = function (node, innerHtml) {\n node.appendChild(innerHtml);\n return node;\n };\n FilterCellRenderer.prototype.operatorIconRender = function (innerDIV, column, cell) {\n var gObj = this.parent;\n var operators;\n var fbicon = this.parent.createElement('input', {\n className: ' e-filterbaroperator e-icons e-icon-filter',\n id: cell.column.uid\n });\n innerDIV.querySelector('span').appendChild(fbicon);\n if (column.filter && column.filter.operator) {\n operators = column.filter.operator;\n }\n else if (gObj.filterSettings.columns.length) {\n for (var i = 0, a = gObj.filterSettings.columns; i < a.length; i++) {\n var col = a[parseInt(i.toString(), 10)];\n if (col.field === column.field) {\n operators = col.operator;\n }\n else {\n operators = 'equal';\n }\n }\n }\n else {\n operators = 'equal';\n }\n if (!isNullOrUndefined(gObj.filterModule.operators[column.field])) {\n operators = gObj.filterModule.operators[column.field];\n }\n this.dropOptr = new DropDownList({\n fields: { text: 'text', value: 'value' },\n popupHeight: 'auto',\n value: operators,\n width: '0px',\n enabled: column.allowFiltering,\n popupWidth: 'auto',\n enableRtl: this.parent.enableRtl,\n change: this.internalEvent.bind(this),\n beforeOpen: function () {\n var operator = gObj.filterModule.customOperators;\n this.dataSource = operator[gObj.getColumnByUid(this.element.id).type + 'Operator'];\n for (var i = 0; i < this.dataSource.length; i++) {\n if (column.filter && column.filter.operator && isNullOrUndefined(gObj.filterModule.operators[column.field]) &&\n this.dataSource[parseInt(i.toString(), 10)].value === column.filter.operator) {\n this.value = column.filter.operator;\n }\n }\n },\n cssClass: this.parent.cssClass ? 'e-popup-flbar' + ' ' + this.parent.cssClass : 'e-popup-flbar'\n });\n this.dropOptr.appendTo(fbicon);\n var spanElmt = closest(this.dropOptr.element, 'span');\n spanElmt.classList.add('e-filterbardropdown');\n spanElmt.removeAttribute('tabindex');\n };\n FilterCellRenderer.prototype.internalEvent = function (e) {\n var gObj = this.parent;\n var col = gObj.getColumnByUid(e.element.getAttribute('id'));\n e.column = col;\n gObj.filterModule.operators[col.field] = e.value;\n gObj.notify(events.getFilterBarOperator, e);\n };\n return FilterCellRenderer;\n}(CellRenderer));\nexport { FilterCellRenderer };\n","import { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * `filter operators` render boolean column.\n *\n * @hidden\n */\nvar FlMenuOptrUI = /** @class */ (function () {\n function FlMenuOptrUI(parent, customFltrOperators, serviceLocator, filterSettings) {\n this.ddOpen = this.dropDownOpen.bind(this);\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.filterSettings = filterSettings;\n this.customFilterOperators = customFltrOperators;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroyDropDownList, this);\n this.parent.on(events.destroy, this.destroyDropDownList, this);\n }\n }\n /**\n * @param {Element} dlgConetntEle - specifies the content element\n * @param {Element} target - specifies the target\n * @param {Column} column - specifies the column\n * @param {Dialog} dlgObj - specifies the dialog\n * @param {Object[]} operator - specifies the operator list\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line max-len\n FlMenuOptrUI.prototype.renderOperatorUI = function (dlgConetntEle, target, column, dlgObj, operator) {\n this.dialogObj = dlgObj;\n var optr = column.type + 'Operator';\n this.optrData = this.customOptr = !isNullOrUndefined(operator) ? operator :\n (!isNullOrUndefined(this.parent.filterSettings.operators) && !isNullOrUndefined(this.parent.filterSettings.operators[\"\" + optr])) ?\n this.parent.filterSettings.operators[\"\" + optr] : this.customFilterOperators[\"\" + optr];\n var dropDatasource = this.customOptr;\n var selectedValue = this.dropSelectedVal(column, optr);\n var optrDiv = this.parent.createElement('div', { className: 'e-flm_optrdiv' });\n dlgConetntEle.appendChild(optrDiv);\n var optrInput = this.parent.createElement('input', { id: column.uid + '-floptr' });\n optrDiv.appendChild(optrInput);\n this.dropOptr = new DropDownList({\n dataSource: dropDatasource,\n fields: { text: 'text', value: 'value' },\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n enableRtl: this.parent.enableRtl,\n text: selectedValue,\n // eslint-disable-next-line @typescript-eslint/tslint/config\n change: function () {\n var valInput = document.querySelector('.e-flmenu-valuediv').querySelector('input');\n if (this.value === 'isempty' || this.value === 'isnotempty' ||\n this.value === 'isnull' || this.value === 'isnotnull') {\n valInput['ej2_instances'][0]['enabled'] = false;\n }\n else if (!isNullOrUndefined(valInput.getAttribute('disabled'))) {\n valInput['ej2_instances'][0]['enabled'] = true;\n }\n }\n });\n this.dropOptr.addEventListener(literals['open'], this.ddOpen);\n this.dropOptr.appendTo('#' + column.uid + '-floptr');\n };\n FlMenuOptrUI.prototype.renderResponsiveDropDownList = function (args) {\n args.popup.element.style.width = '100%';\n };\n FlMenuOptrUI.prototype.dropDownOpen = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n if (this.parent.enableAdaptiveUI) {\n this.renderResponsiveDropDownList(args);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FlMenuOptrUI.prototype.dropSelectedVal = function (col, optr) {\n var selValue = '';\n var columns = this.parent.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (col.field === column.field || (col.isForeignColumn() && col.foreignKeyValue === column.field)) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('value', 'equal', column.operator));\n selValue = !isNullOrUndefined(selectedField[0]) ? selectedField[0].text : '';\n }\n }\n if (selValue === '') { // rewuired or not\n if (col.filter.operator) {\n var optrLen = Object.keys(this.optrData).length;\n for (var i = 0; i < optrLen; i++) {\n if (this.optrData[parseInt(i.toString(), 10)].value === col.filter.operator) {\n selValue = this.optrData[parseInt(i.toString(), 10)].text;\n }\n }\n }\n else {\n selValue = this.optrData[0].text;\n }\n }\n return selValue;\n };\n /**\n * @returns {string} returns the operator\n * @hidden\n */\n FlMenuOptrUI.prototype.getFlOperator = function () {\n return this.dropOptr.value;\n };\n FlMenuOptrUI.prototype.destroyDropDownList = function () {\n if (this.dropOptr.isDestroyed) {\n return;\n }\n this.dropOptr.removeEventListener(literals['open'], this.ddOpen);\n this.dropOptr.destroy();\n this.parent.off(events.filterMenuClose, this.destroyDropDownList);\n this.parent.off(events.destroy, this.destroyDropDownList);\n };\n return FlMenuOptrUI;\n}());\nexport { FlMenuOptrUI };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Event, addClass, Browser, removeClass, detach } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, NotifyPropertyChanges, getValue, setValue } from '@syncfusion/ej2-base';\nimport { DropDownList, dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { Search } from '../common/incremental-search';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nvar SPINNER_CLASS = 'e-atc-spinner-icon';\ndropDownListClasses.root = 'e-combobox';\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The ComboBox component allows the user to type a value or choose an option from the list of predefined options.\n * ```html\n * \n * ```\n * ```typescript\n * let games:ComboBox = new ComboBox();\n * games.appendTo(\"#list\");\n * ```\n */\nvar ComboBox = /** @class */ (function (_super) {\n __extends(ComboBox, _super);\n /**\n * *Constructor for creating the component\n *\n * @param {ComboBoxModel} options - Specifies the ComboBox model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function ComboBox(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n ComboBox.prototype.getLocaleName = function () {\n return 'combo-box';\n };\n ComboBox.prototype.wireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur, this);\n EventHandler.add(this.inputWrapper.container, 'blur', this.onBlurHandler, this);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick, this);\n }\n EventHandler.add(this.inputElement, 'focus', this.targetFocus, this);\n if (!this.readonly) {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n }\n this.bindCommonEvent();\n };\n ComboBox.prototype.preventBlur = function (e) {\n if ((!this.allowFiltering && document.activeElement !== this.inputElement &&\n !document.activeElement.classList.contains(dropDownListClasses.input) && Browser.isDevice || !Browser.isDevice)) {\n e.preventDefault();\n }\n };\n ComboBox.prototype.onBlurHandler = function (e) {\n var inputValue = this.inputElement && this.inputElement.value === '' ?\n null : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData) && !isNullOrUndefined(inputValue) && inputValue !== this.text) {\n this.customValue(e);\n }\n _super.prototype.onBlurHandler.call(this, e);\n };\n ComboBox.prototype.targetElement = function () {\n return this.inputElement;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldText = function (text) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n this.removeSelection();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldValue = function (value) {\n if (this.allowCustom) {\n this.valueMuteChange(this.value);\n }\n else {\n this.valueMuteChange(null);\n }\n this.removeSelection();\n this.setHiddenValue();\n };\n ComboBox.prototype.valueMuteChange = function (value) {\n var inputValue = isNullOrUndefined(value) ? null : value.toString();\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: value, text: value, index: null }, true);\n this.activeIndex = this.index;\n var fields = this.fields;\n var dataItem = {};\n dataItem[fields.text] = isNullOrUndefined(value) ? null : value.toString();\n dataItem[fields.value] = isNullOrUndefined(value) ? null : value.toString();\n this.itemData = dataItem;\n this.item = null;\n if (this.previousValue !== this.value) {\n this.detachChangeEvent(null);\n }\n };\n ComboBox.prototype.updateValues = function () {\n if (!isNullOrUndefined(this.value)) {\n var li = this.getElementByValue(this.value);\n if (li) {\n this.setSelection(li, null);\n }\n else if (this.allowCustom) {\n this.valueMuteChange(this.value);\n }\n else {\n this.valueMuteChange(null);\n }\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var li = this.getElementByText(this.text);\n if (li) {\n this.setSelection(li, null);\n }\n else {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n ComboBox.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement && this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n ComboBox.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'role': 'combobox',\n 'aria-autocomplete': 'both',\n 'aria-labelledby': this.hiddenElement.id,\n 'aria-expanded': 'false',\n 'aria-readonly': this.readonly.toString(),\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n };\n return ariaAttributes;\n };\n ComboBox.prototype.searchLists = function (e) {\n this.isTyped = true;\n if (this.isFiltering()) {\n _super.prototype.searchLists.call(this, e);\n if (this.ulElement && this.filterInput.value.trim() === '') {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n }\n else {\n if (this.ulElement && this.inputElement.value === '' && this.preventAutoFill) {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n this.incrementalSearch(e);\n }\n };\n ComboBox.prototype.getNgDirective = function () {\n return 'EJS-COMBOBOX';\n };\n ComboBox.prototype.setSearchBox = function () {\n this.filterInput = this.inputElement;\n var searchBoxContainer = (this.isFiltering() || (this.isReact && this.getModuleName() === 'combobox')) ? this.inputWrapper : inputObject;\n return searchBoxContainer;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.isSelectCustom) {\n this.removeSelection();\n }\n if (!this.preventAutoFill && this.getModuleName() === 'combobox' && this.isTyped) {\n setTimeout(function () {\n _this.inlineSearch();\n });\n }\n };\n ComboBox.prototype.getFocusElement = function () {\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : this.list;\n var isSelected = dataItem.text === this.inputElement.value && !isNullOrUndefined(selected);\n if (isSelected) {\n return selected;\n }\n if ((Browser.isDevice && !this.isDropDownClick || !Browser.isDevice) &&\n !isNullOrUndefined(this.liCollections) && this.liCollections.length > 0) {\n var inputValue = this.inputElement.value;\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var activeItem = Search(inputValue, this.liCollections, this.filterType, true, dataSource, this.fields, type);\n var activeElement = activeItem.item;\n if (!isNullOrUndefined(activeElement)) {\n var count = this.getIndexByValue(activeElement.getAttribute('data-value')) - 1;\n var height = parseInt(getComputedStyle(this.liCollections[0], null).getPropertyValue('height'), 10);\n if (!isNaN(height) && this.getModuleName() !== 'autocomplete') {\n this.removeFocus();\n var fixedHead = this.fields.groupBy ? this.liCollections[0].offsetHeight : 0;\n this.list.scrollTop = count * height + fixedHead;\n addClass([activeElement], dropDownListClasses.focus);\n }\n }\n else {\n if (this.isSelectCustom && this.inputElement.value.trim() !== '') {\n this.removeFocus();\n this.list.scrollTop = 0;\n }\n }\n return activeElement;\n }\n else {\n return null;\n }\n };\n ComboBox.prototype.setValue = function (e) {\n if (e && e.type === 'keydown' && e.action === 'enter') {\n this.removeFillSelection();\n }\n if (this.autofill && this.getModuleName() === 'combobox' && e && e.type === 'keydown' && e.action !== 'enter') {\n this.preventAutoFill = false;\n this.inlineSearch(e);\n return false;\n }\n else {\n return _super.prototype.setValue.call(this, e);\n }\n };\n ComboBox.prototype.checkCustomValue = function () {\n this.itemData = this.getDataByValue(this.value);\n var dataItem = this.getItemData();\n if (!(this.allowCustom && isNullOrUndefined(dataItem.value) && isNullOrUndefined(dataItem.text))) {\n this.setProperties({ 'value': dataItem.value }, !this.allowCustom);\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = (this.getModuleName() === 'autocomplete') ? (this.inputWrapper.buttons[0] ||\n this.inputWrapper.clearButton ||\n Input.appendSpan('e-input-group-icon ' + SPINNER_CLASS, this.inputWrapper.container, this.createElement)) :\n (this.inputWrapper.buttons[0] || this.inputWrapper.clearButton);\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n ComboBox.prototype.setAutoFill = function (activeElement, isHover) {\n if (!isHover) {\n this.setHoverList(activeElement);\n }\n if (this.autofill && !this.preventAutoFill) {\n var currentValue = this.getTextByValue(activeElement.getAttribute('data-value')).toString();\n var currentFillValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n if (this.getModuleName() === 'combobox') {\n if (!this.isSelected && this.previousValue !== currentFillValue) {\n this.updateSelectedItem(activeElement, null);\n this.isSelected = true;\n this.previousValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n }\n else {\n this.updateSelectedItem(activeElement, null, true);\n }\n }\n if (!this.isAndroidAutoFill(currentValue)) {\n this.setAutoFillSelection(currentValue, isHover);\n }\n }\n };\n ComboBox.prototype.isAndroidAutoFill = function (value) {\n if (Browser.isAndroid) {\n var currentPoints = this.getSelectionPoints();\n var prevEnd = this.prevSelectPoints.end;\n var curEnd = currentPoints.end;\n var prevStart = this.prevSelectPoints.start;\n var curStart = currentPoints.start;\n if (prevEnd !== 0 && ((prevEnd === value.length && prevStart === value.length) ||\n (prevStart > curStart && prevEnd > curEnd) || (prevEnd === curEnd && prevStart === curStart))) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n ComboBox.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n }\n if (this.isFiltering() && !isNullOrUndefined(e) && e.target === this.inputWrapper.clearButton) {\n this.searchLists(e);\n }\n };\n ComboBox.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n ComboBox.prototype.inlineSearch = function (e) {\n var isKeyNavigate = (e && (e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown'));\n var activeElement = isKeyNavigate ? this.liCollections[this.activeIndex] : this.getFocusElement();\n if (!isNullOrUndefined(activeElement)) {\n if (!isKeyNavigate) {\n var value = this.getFormattedValue(activeElement.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.activeIndex = !isNullOrUndefined(this.activeIndex) ? this.activeIndex : null;\n }\n this.preventAutoFill = this.inputElement.value === '' ? false : this.preventAutoFill;\n this.setAutoFill(activeElement, isKeyNavigate);\n }\n else if (this.inputElement.value === '') {\n this.activeIndex = null;\n if (!isNullOrUndefined(this.list)) {\n this.list.scrollTop = 0;\n var focusItem = this.list.querySelector('.' + dropDownListClasses.li);\n this.setHoverList(focusItem);\n }\n }\n else {\n this.activeIndex = null;\n this.removeSelection();\n if (this.liCollections && this.liCollections.length > 0 && !this.isCustomFilter) {\n this.removeFocus();\n }\n }\n };\n ComboBox.prototype.incrementalSearch = function (e) {\n this.showPopup(e);\n if (!isNullOrUndefined(this.listData)) {\n this.inlineSearch(e);\n e.preventDefault();\n }\n };\n ComboBox.prototype.setAutoFillSelection = function (currentValue, isKeyNavigate) {\n if (isKeyNavigate === void 0) { isKeyNavigate = false; }\n var selection = this.getSelectionPoints();\n var value = this.inputElement.value.substr(0, selection.start);\n if (value && (value.toLowerCase() === currentValue.substr(0, selection.start).toLowerCase())) {\n var inputValue = value + currentValue.substr(value.length, currentValue.length);\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(selection.start, this.inputElement.value.length);\n }\n else if (isKeyNavigate) {\n Input.setValue(currentValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(0, this.inputElement.value.length);\n }\n };\n ComboBox.prototype.getValueByText = function (text) {\n return _super.prototype.getValueByText.call(this, text, true, this.ignoreAccent);\n };\n ComboBox.prototype.unWireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur);\n EventHandler.remove(this.inputWrapper.container, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick);\n }\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'focus', this.targetFocus);\n if (!this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n }\n this.unBindCommonEvent();\n };\n ComboBox.prototype.setSelection = function (li, e) {\n _super.prototype.setSelection.call(this, li, e);\n if (!isNullOrUndefined(li) && !this.autofill && !this.isDropDownClick) {\n this.removeFocus();\n }\n };\n ComboBox.prototype.selectCurrentItem = function (e) {\n var li;\n if (this.isPopupOpen) {\n if (this.isSelected) {\n li = this.list.querySelector('.' + dropDownListClasses.selected);\n }\n else {\n li = this.list.querySelector('.' + dropDownListClasses.focus);\n }\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n }\n if (e.action === 'enter' && this.inputElement.value.trim() === '') {\n this.clearAll(e);\n }\n else if (this.isTyped && !this.isSelected && isNullOrUndefined(li)) {\n this.customValue(e);\n }\n this.hidePopup(e);\n };\n ComboBox.prototype.setHoverList = function (li) {\n this.removeSelection();\n if (this.isValidLI(li) && !li.classList.contains(dropDownListClasses.selected)) {\n this.removeFocus();\n li.classList.add(dropDownListClasses.focus);\n }\n };\n ComboBox.prototype.targetFocus = function (e) {\n if (Browser.isDevice && !this.allowFiltering) {\n this.preventFocus = false;\n }\n this.onFocus(e);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n };\n ComboBox.prototype.dropDownClick = function (e) {\n e.preventDefault();\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.dropDownClick.call(this, e);\n };\n ComboBox.prototype.customValue = function (e) {\n var _this = this;\n var value = this.getValueByText(this.inputElement.value);\n if (!this.allowCustom && this.inputElement.value !== '') {\n var previousValue = this.previousValue;\n var currentValue = this.value;\n this.setProperties({ value: value });\n if (isNullOrUndefined(this.value)) {\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.autofill && previousValue === this.value && currentValue !== this.value) {\n this.onChangeEvent(null);\n }\n }\n else if (this.inputElement.value.trim() !== '') {\n var previousValue_1 = this.value;\n if (isNullOrUndefined(value)) {\n var value_1 = this.inputElement.value === '' ? null : this.inputElement.value;\n // eslint-disable-next-line max-len\n var eventArgs = { text: value_1, item: {} };\n if (!this.initial) {\n this.trigger('customValueSpecifier', eventArgs, function (eventArgs) {\n _this.updateCustomValueCallback(value_1, eventArgs, previousValue_1, e);\n });\n }\n else {\n this.updateCustomValueCallback(value_1, eventArgs, previousValue_1);\n }\n }\n else {\n this.isSelectCustom = false;\n this.setProperties({ value: value });\n if (previousValue_1 !== this.value) {\n this.onChangeEvent(e);\n }\n }\n }\n else if (this.allowCustom) {\n this.isSelectCustom = true;\n }\n };\n ComboBox.prototype.updateCustomValueCallback = function (value, eventArgs, previousValue, e) {\n var fields = this.fields;\n var item = eventArgs.item;\n var dataItem = {};\n if (item && getValue(fields.text, item) && getValue(fields.value, item)) {\n dataItem = item;\n }\n else {\n setValue(fields.text, value, dataItem);\n setValue(fields.value, value, dataItem);\n }\n this.itemData = dataItem;\n var changeData = {\n text: getValue(fields.text, this.itemData),\n value: getValue(fields.value, this.itemData),\n index: null\n };\n this.setProperties(changeData, true);\n this.setSelection(null, null);\n this.isSelectCustom = true;\n if (previousValue !== this.value) {\n this.onChangeEvent(e);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {ComboBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {ComboBoxModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n ComboBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'combobox') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n if (this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n }\n else {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n }\n this.setReadOnly();\n break;\n case 'allowFiltering':\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n break;\n case 'allowCustom':\n break;\n default: {\n // eslint-disable-next-line max-len\n var comboProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, comboProps.newProperty, comboProps.oldProperty);\n if (this.isFiltering() && prop === 'dataSource' && isNullOrUndefined(this.list) && this.itemTemplate &&\n this.getModuleName() === 'combobox') {\n _super.prototype.renderList.call(this);\n }\n break;\n }\n }\n }\n };\n /**\n * To initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.render = function () {\n _super.prototype.render.call(this);\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n this.renderComplete();\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n ComboBox.prototype.getModuleName = function () {\n return 'combobox';\n };\n /**\n * Adds a new item to the combobox popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n\n */\n ComboBox.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n\n */\n ComboBox.prototype.filter = function (dataSource, query, fields) {\n _super.prototype.filter.call(this, dataSource, query, fields);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.showPopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.showPopup.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n var inputValue = this.inputElement && this.inputElement.value === '' ? null\n : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData)) {\n var isEscape = this.isEscapeKey;\n if (this.isEscapeKey) {\n Input.setValue(this.typedString, this.inputElement, this.floatLabelType, this.showClearButton);\n this.isEscapeKey = false;\n }\n if (this.autofill) {\n this.removeFillSelection();\n }\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : null;\n if (this.inputElement && dataItem.text === this.inputElement.value && !isNullOrUndefined(selected)) {\n if (this.isSelected) {\n this.onChangeEvent(e);\n this.isSelectCustom = false;\n }\n _super.prototype.hidePopup.call(this, e);\n return;\n }\n if (this.getModuleName() === 'combobox' && this.inputElement.value.trim() !== '') {\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, this.liCollections, 'Equal', true, dataSource, this.fields, type);\n this.selectedLI = searchItem.item;\n if (isNullOrUndefined(searchItem.index)) {\n searchItem.index = Search(this.inputElement.value, this.liCollections, 'StartsWith', true, dataSource, this.fields, type).index;\n }\n this.activeIndex = searchItem.index;\n if (!isNullOrUndefined(this.selectedLI)) {\n this.updateSelectedItem(this.selectedLI, null, true);\n }\n else if (isEscape) {\n this.isSelectCustom = true;\n this.removeSelection();\n }\n }\n if (!this.isEscapeKey && this.isTyped && !this.isInteracted) {\n this.customValue(e);\n }\n }\n if (isNullOrUndefined(this.listData) && this.allowCustom && !isNullOrUndefined(inputValue) && inputValue !== this.value) {\n this.customValue();\n }\n _super.prototype.hidePopup.call(this, e);\n };\n /**\n * Sets the focus to the component for interaction.\n *\n * @returns {void}\n */\n ComboBox.prototype.focusIn = function () {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.focusIn.call(this);\n };\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.clear = function () {\n this.value = null;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.focusOut.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n\n */\n ComboBox.prototype.getItems = function () {\n return _super.prototype.getItems.call(this);\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n\n */\n ComboBox.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n ComboBox.prototype.renderHightSearch = function () {\n // update high light search\n };\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"autofill\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"allowCustom\", void 0);\n __decorate([\n Property({})\n ], ComboBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"index\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"enableRtl\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"customValueSpecifier\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property('Never')\n ], ComboBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], ComboBox.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"value\", void 0);\n ComboBox = __decorate([\n NotifyPropertyChanges\n ], ComboBox);\n return ComboBox;\n}(DropDownList));\nexport { ComboBox };\n","/**\n * Function helps to find which highlightSearch is to call based on your data.\n *\n * @param {HTMLElement} element - Specifies an li element.\n * @param {string} query - Specifies the string to be highlighted.\n * @param {boolean} ignoreCase - Specifies the ignoreCase option.\n * @param {HightLightType} type - Specifies the type of highlight.\n * @returns {void}\n */\nexport function highlightSearch(element, query, ignoreCase, type) {\n if (query === '') {\n return;\n }\n else {\n var ignoreRegex = ignoreCase ? 'gim' : 'gm';\n // eslint-disable-next-line\n query = /^[a-zA-Z0-9- ]*$/.test(query) ? query : query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n var replaceQuery = type === 'StartsWith' ? '^(' + query + ')' : type === 'EndsWith' ?\n '(' + query + ')$' : '(' + query + ')';\n // eslint-disable-next-line security/detect-non-literal-regexp\n findTextNode(element, new RegExp(replaceQuery, ignoreRegex));\n }\n}\n/* eslint-enable jsdoc/require-param, valid-jsdoc */\n/**\n *\n * @param {HTMLElement} element - Specifies the element.\n * @param {RegExp} pattern - Specifies the regex to match the searched text.\n * @returns {void}\n */\nfunction findTextNode(element, pattern) {\n for (var index = 0; element.childNodes && (index < element.childNodes.length); index++) {\n if (element.childNodes[index].nodeType === 3 && element.childNodes[index].textContent.trim() !== '') {\n var value = element.childNodes[index].nodeValue.trim().replace(pattern, '$1');\n element.childNodes[index].nodeValue = '';\n element.innerHTML = element.innerHTML.trim() + value;\n break;\n }\n else {\n findTextNode(element.childNodes[index], pattern);\n }\n }\n}\n/**\n * Function helps to remove highlighted element based on your data.\n *\n * @param {HTMLElement} content - Specifies an content element.\n * @returns {void}\n */\nexport function revertHighlightSearch(content) {\n var contentElement = content.querySelectorAll('.e-highlight');\n for (var i = contentElement.length - 1; i >= 0; i--) {\n var parent_1 = contentElement[i].parentNode;\n var text = document.createTextNode(contentElement[i].textContent);\n parent_1.replaceChild(text, contentElement[i]);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { Property, EventHandler, isNullOrUndefined, detach } from '@syncfusion/ej2-base';\nimport { Event, Complex } from '@syncfusion/ej2-base';\nimport { removeClass, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { ComboBox } from '../combo-box/combo-box';\nimport { highlightSearch, revertHighlightSearch } from '../common/highlight-search';\nimport { Search } from '../common/incremental-search';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\ndropDownListClasses.root = 'e-autocomplete';\ndropDownListClasses.icon = 'e-input-group-icon e-ddl-icon e-search-icon';\n/**\n * The AutoComplete component provides the matched suggestion list when type into the input,\n * from which the user can select one.\n * ```html\n * \n * ```\n * ```typescript\n * let atcObj:AutoComplete = new AutoComplete();\n * atcObj.appendTo(\"#list\");\n * ```\n */\nvar AutoComplete = /** @class */ (function (_super) {\n __extends(AutoComplete, _super);\n /**\n * * Constructor for creating the widget\n *\n * @param {AutoCompleteModel} options - Specifies the AutoComplete model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function AutoComplete(options, element) {\n var _this_1 = _super.call(this, options, element) || this;\n _this_1.isFiltered = false;\n _this_1.searchList = false;\n return _this_1;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n AutoComplete.prototype.getLocaleName = function () {\n return 'auto-complete';\n };\n AutoComplete.prototype.getNgDirective = function () {\n return 'EJS-AUTOCOMPLETE';\n };\n AutoComplete.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = (this.queryString === '' && !isNullOrUndefined(this.value)) ? 'equal' : this.filterType;\n var queryString = (this.queryString === '' && !isNullOrUndefined(this.value)) ? this.value : this.queryString;\n if (this.isFiltered) {\n return filterQuery;\n }\n if (this.queryString !== null && this.queryString !== '') {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var mapping = !isNullOrUndefined(this.fields.value) ? this.fields.value : '';\n filterQuery.where(mapping, filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (!isNullOrUndefined(this.suggestionCount)) {\n // Since defualt value of suggestioncount is 20, checked the condition\n if (this.suggestionCount !== 20) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n filterQuery.queries.splice(queryElements, 1);\n }\n }\n }\n filterQuery.take(this.suggestionCount);\n }\n return filterQuery;\n };\n AutoComplete.prototype.searchLists = function (e) {\n var _this_1 = this;\n this.isTyped = true;\n this.isDataFetched = this.isSelectCustom = false;\n if (isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this, e, true);\n }\n this.queryString = this.filterInput.value;\n if (e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38)) {\n this.queryString = this.queryString === '' ? null : this.queryString;\n this.beforePopupOpen = true;\n this.resetList(this.dataSource, this.fields, null, e);\n return;\n }\n this.isSelected = false;\n this.activeIndex = null;\n var eventArgs = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs.cancel) {\n return;\n }\n _this_1.isFiltered = true;\n _this_1.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this_1.isFiltered && !eventArgs.preventDefaultAction) {\n _this_1.searchList = true;\n _this_1.filterAction(_this_1.dataSource, null, _this_1.fields, e);\n }\n });\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n\n */\n AutoComplete.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.filterAction(dataSource, query, fields);\n };\n AutoComplete.prototype.filterAction = function (dataSource, query, fields, e) {\n this.beforePopupOpen = true;\n if (this.queryString !== '' && (this.queryString.length >= this.minLength)) {\n this.resetList(dataSource, fields, query, e);\n }\n else {\n this.hidePopup(e);\n this.beforePopupOpen = false;\n }\n this.renderReactTemplates();\n };\n AutoComplete.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n }\n if (this.beforePopupOpen) {\n this.hidePopup();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n this.fixedHeaderElement = null;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n var item = this.list.querySelector('.' + dropDownListClasses.li);\n if (!isNullOrUndefined(item)) {\n removeClass([item], dropDownListClasses.focus);\n }\n this.postBackAction();\n };\n AutoComplete.prototype.postBackAction = function () {\n if (this.autofill && !isNullOrUndefined(this.liCollections[0]) && this.searchList) {\n var items = [this.liCollections[0]];\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, items, 'StartsWith', this.ignoreCase, dataSource, this.fields, type);\n this.searchList = false;\n if (!isNullOrUndefined(searchItem.item)) {\n _super.prototype.setAutoFill.call(this, this.liCollections[0], true);\n }\n }\n };\n AutoComplete.prototype.setSelection = function (li, e) {\n if (!this.isValidLI(li)) {\n this.selectedLI = li;\n return;\n }\n if (!isNullOrUndefined(e) && e.type === 'keydown' && e.action !== 'enter'\n && e.action !== 'tab' && this.isValidLI(li)) {\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.setHoverList(li);\n this.selectedLI = li;\n this.setScrollPosition(e);\n if (this.autofill && this.isPopupOpen) {\n this.preventAutoFill = false;\n var isKeyNavigate = (e && e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown');\n _super.prototype.setAutoFill.call(this, li, isKeyNavigate);\n }\n }\n else {\n _super.prototype.setSelection.call(this, li, e);\n }\n };\n AutoComplete.prototype.listOption = function (dataSource, fieldsSettings) {\n var _this_1 = this;\n var fields = _super.prototype.listOption.call(this, dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n if (_this_1.element.tagName === _this_1.getNgDirective() && _this_1.itemTemplate) {\n setTimeout(function () {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }, 0);\n }\n else {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n }\n };\n }\n else {\n var itemCreated_1 = fields.itemCreated;\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n itemCreated_1.apply(_this_1, [e]);\n };\n }\n return fields;\n };\n AutoComplete.prototype.isFiltering = function () {\n return true;\n };\n AutoComplete.prototype.renderPopup = function (e) {\n this.list.scrollTop = 0;\n _super.prototype.renderPopup.call(this, e);\n };\n AutoComplete.prototype.isEditTextBox = function () {\n return true && this.inputElement.value.trim() !== '';\n };\n AutoComplete.prototype.isPopupButton = function () {\n return this.showPopupButton;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.isSelectFocusItem = function (element) {\n return false;\n };\n AutoComplete.prototype.setInputValue = function (newProp, oldProp) {\n var oldValue = oldProp && oldProp.text ? oldProp.text : oldProp ? oldProp.value : oldProp;\n var value = newProp && newProp.text ? newProp.text : newProp && newProp.value ? newProp.value : this.value;\n if (value && this.typedString === '' && !this.allowCustom && !(this.dataSource instanceof DataManager)) {\n var checkFields_1_1 = this.typeOfData(this.dataSource).typeof === 'string' ? '' : this.fields.value;\n var listLength_1 = this.getItems().length;\n var query = new Query();\n var _this_2 = this;\n new DataManager(this.dataSource).executeQuery(query.where(new Predicate(checkFields_1_1, 'equal', value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this_2.value = checkFields_1_1 !== '' ? e.result[0][_this_2.fields.value].toString() : e.result[0].toString();\n _this_2.addItem(e.result, listLength_1);\n _this_2.updateValues();\n }\n else {\n newProp && newProp.text ? _this_2.setOldText(oldValue) : newProp && newProp.value ? _this_2.setOldValue(oldValue) : _this_2.updateValues();\n }\n });\n }\n else if (newProp) {\n newProp.text ? this.setOldText(oldValue) : this.setOldValue(oldValue);\n }\n };\n /**\n * Search the entered text and show it in the suggestion list if available.\n *\n * @returns {void}\n\n */\n AutoComplete.prototype.showPopup = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n this.preventAutoFill = true;\n if (isNullOrUndefined(this.list)) {\n this.renderList(e);\n }\n else {\n this.resetList(this.dataSource, this.fields, null, e);\n }\n };\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n */\n AutoComplete.prototype.hidePopup = function (e) {\n _super.prototype.hidePopup.call(this, e);\n this.activeIndex = null;\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {AutoCompleteModel} newProp - Returns the dynamic property value of the component.\n * @param {AutoCompleteModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'autocomplete') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'showPopupButton':\n if (this.showPopupButton) {\n var button = Input.appendSpan(dropDownListClasses.icon, this.inputWrapper.container, this.createElement);\n this.inputWrapper.buttons[0] = button;\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (this.inputWrapper && this.inputWrapper.buttons && this.inputWrapper.buttons[0]) {\n EventHandler.add(this.inputWrapper.buttons[0], 'click', this.dropDownClick, this);\n }\n }\n else {\n detach(this.inputWrapper.buttons[0]);\n this.inputWrapper.buttons[0] = null;\n }\n break;\n default: {\n // eslint-disable-next-line max-len\n var atcProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, atcProps.newProperty, atcProps.oldProperty);\n break;\n }\n }\n }\n };\n AutoComplete.prototype.renderHightSearch = function () {\n if (this.highlight) {\n for (var i = 0; i < this.liCollections.length; i++) {\n var isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType);\n }\n }\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n AutoComplete.prototype.getModuleName = function () {\n return 'autocomplete';\n };\n /**\n * To initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.render = function () {\n _super.prototype.render.call(this);\n };\n __decorate([\n Complex({ value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], AutoComplete.prototype, \"fields\", void 0);\n __decorate([\n Property(true)\n ], AutoComplete.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"showPopupButton\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"highlight\", void 0);\n __decorate([\n Property(20)\n ], AutoComplete.prototype, \"suggestionCount\", void 0);\n __decorate([\n Property({})\n ], AutoComplete.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"query\", void 0);\n __decorate([\n Property(1)\n ], AutoComplete.prototype, \"minLength\", void 0);\n __decorate([\n Property('Contains')\n ], AutoComplete.prototype, \"filterType\", void 0);\n __decorate([\n Event()\n ], AutoComplete.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], AutoComplete.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"text\", void 0);\n AutoComplete = __decorate([\n NotifyPropertyChanges\n ], AutoComplete);\n return AutoComplete;\n}(ComboBox));\nexport { AutoComplete };\n","import { AutoComplete } from '@syncfusion/ej2-dropdowns';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\nimport { Browser, isNullOrUndefined, extend, getValue } from '@syncfusion/ej2-base';\nimport { getZIndexCalcualtion, eventPromise } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * `string filterui` render string column.\n *\n * @hidden\n */\nvar StringFilterUI = /** @class */ (function () {\n function StringFilterUI(parent, serviceLocator, filterSettings) {\n this.parent = parent;\n this.serLocator = serviceLocator;\n this.filterSettings = filterSettings;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n StringFilterUI.prototype.create = function (args) {\n this.instance = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'strui-' + args.column.uid });\n args.target.appendChild(this.instance);\n this.dialogObj = args.dialogObj;\n this.processDataOperation(args);\n };\n StringFilterUI.prototype.processDataOperation = function (args) {\n var _this = this;\n if (args.column.isForeignColumn()) {\n this.parent.getDataModule().dataManager.executeQuery(this.parent.getDataModule().generateQuery(true))\n .then(function (result) { _this.getAutoCompleteOptions(args, result); });\n return;\n }\n this.getAutoCompleteOptions(args);\n };\n StringFilterUI.prototype.getAutoCompleteOptions = function (args, result) {\n var isForeignColumn = args.column.isForeignColumn();\n var foreignColumnQuery;\n if (isForeignColumn) {\n var filteredData = CheckBoxFilterBase.getDistinct(result.result, args.column.field)\n .records || [];\n var filterQuery = void 0;\n for (var i = 0; i < filteredData.length; i++) {\n if (filterQuery) {\n filterQuery = filterQuery.or(args.column.field, 'contains', filteredData[parseInt(i.toString(), 10)][args.column.field], this.parent\n .filterSettings.enableCaseSensitivity, this.parent.filterSettings.ignoreAccent);\n }\n else {\n filterQuery = new Predicate(args.column.field, 'contains', filteredData[parseInt(i.toString(), 10)][args.column.field], this.parent\n .filterSettings.enableCaseSensitivity, this.parent.filterSettings.ignoreAccent);\n }\n }\n foreignColumnQuery = new Query().where(filterQuery);\n foreignColumnQuery.params = this.parent.query.params;\n }\n var dataSource = isForeignColumn ? args.column.dataSource : this.parent.dataSource;\n var fields = { value: isForeignColumn ? args.column.foreignKeyValue : args.column.field };\n var autoComplete = new AutoComplete(extend({\n dataSource: dataSource instanceof DataManager ? dataSource : new DataManager(dataSource),\n fields: fields,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n query: isForeignColumn ? foreignColumnQuery : this.parent.getDataModule().generateQuery(true, true),\n sortOrder: 'Ascending',\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n autofill: true,\n placeholder: args.localizeText.getConstant('EnterValue'),\n actionBegin: function () {\n if (this.query.queries.length && this.query.queries[0].fn === 'onWhere' && this.query.queries[0].e\n && this.query.queries[0].e.predicates) {\n for (var i = 0; i < this.query.queries[0].e.predicates.length; i++) {\n if (this.properties.fields.value === this.query.queries[0].e.predicates[\"\" + i].field) {\n this.query.queries[0].e.predicates.splice(i, 1);\n i = i - 1;\n }\n }\n if (!this.query.queries[0].e.predicates.length) {\n this.query.queries.splice(0, 1);\n }\n }\n }\n }, args.column.filter.params));\n this.acFocus = this.focus(autoComplete, args);\n this.acComplete = this.actionComplete(autoComplete);\n this.acOpen = this.openPopup.bind(this);\n autoComplete.addEventListener(literals.focus, this.acFocus);\n autoComplete.addEventListener(literals['open'], this.acOpen);\n autoComplete.addEventListener(events.actionComplete, this.acComplete);\n if (dataSource && 'result' in dataSource) {\n var query = this.parent.getQuery ? this.parent.getQuery().clone() : new Query();\n var defObj = eventPromise({ requestType: 'stringfilterrequest' }, query);\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n autoComplete.dataSource = new DataManager(e);\n });\n }\n this.actObj = autoComplete;\n this.actObj.appendTo(this.instance);\n if (isForeignColumn) {\n this.parent.filterModule.filterModule.afterRenderFilterUI();\n }\n };\n StringFilterUI.prototype.write = function (args) {\n if (args.filteredValue !== '' && !isNullOrUndefined(args.filteredValue)) {\n var struiObj = document.querySelector('#strui-' + args.column.uid).ej2_instances[0];\n struiObj.value = args.filteredValue;\n }\n };\n StringFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var actuiObj = document.querySelector('#strui-' + column.uid).ej2_instances[0];\n if (Browser.isDevice) {\n actuiObj.hidePopup();\n actuiObj.focusOut();\n }\n var filterValue = actuiObj.value;\n if (isNullOrUndefined(filterValue) || filterValue === '') {\n filterValue = null;\n }\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', this.parent.filterSettings.enableCaseSensitivity);\n };\n StringFilterUI.prototype.openPopup = function (args) {\n getZIndexCalcualtion(args, this.dialogObj);\n };\n StringFilterUI.prototype.focus = function (actObj, args) {\n return function () {\n actObj.filterType = args.getOptrInstance.getFlOperator();\n };\n };\n StringFilterUI.prototype.actionComplete = function (actObj) {\n return function (e) {\n e.result = e.result.filter(function (obj, index, arr) {\n return arr.map(function (mapObj) {\n return (getValue(actObj.fields.value, mapObj));\n }).indexOf(getValue((actObj.fields.value), obj)) === index;\n });\n };\n };\n StringFilterUI.prototype.destroy = function () {\n if (!this.actObj || this.actObj.isDestroyed) {\n return;\n }\n this.actObj.removeEventListener(literals.focus, this.acFocus);\n this.actObj.removeEventListener(literals['open'], this.acOpen);\n this.actObj.removeEventListener(events.actionComplete, this.acComplete);\n this.actObj.destroy();\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return StringFilterUI;\n}());\nexport { StringFilterUI };\n","import { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { extend, isUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\n/**\n * `numberfilterui` render number column.\n *\n * @hidden\n */\nvar NumberFilterUI = /** @class */ (function () {\n function NumberFilterUI(parent, serviceLocator, filterSettings) {\n this.filterSettings = filterSettings;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n NumberFilterUI.prototype.keyEventHandler = function (args) {\n if (args.keyCode === 13 || args.keyCode === 9) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent('change', false, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dispatchEvent(evt);\n }\n };\n NumberFilterUI.prototype.create = function (args) {\n this.instance = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'numberui-' + args.column.uid });\n args.target.appendChild(this.instance);\n this.numericTxtObj = new NumericTextBox(extend({\n format: typeof (args.column.format) === 'string' || isUndefined(args.column.format) ? args.column.format :\n args.column.format.format,\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('EnterValue'),\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n this.numericTxtObj.appendTo(this.instance);\n };\n NumberFilterUI.prototype.write = function (args) {\n var numberuiObj = document.querySelector('#numberui-' + args.column.uid).ej2_instances[0];\n numberuiObj.element.addEventListener('keydown', this.keyEventHandler);\n numberuiObj.value = args.filteredValue;\n };\n NumberFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var numberuiObj = document.querySelector('#numberui-' + column.uid).ej2_instances[0];\n var filterValue = numberuiObj.value;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', true);\n };\n NumberFilterUI.prototype.destroy = function () {\n if (!this.numericTxtObj || this.numericTxtObj.isDestroyed) {\n return;\n }\n this.numericTxtObj.destroy();\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return NumberFilterUI;\n}());\nexport { NumberFilterUI };\n","import { getZIndexCalcualtion } from '../base/util';\nimport { Query, DataManager, DataUtil } from '@syncfusion/ej2-data';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * `boolfilterui` render boolean column.\n *\n * @hidden\n */\nvar BooleanFilterUI = /** @class */ (function () {\n function BooleanFilterUI(parent, serviceLocator, filterSettings) {\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.filterSettings = filterSettings;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n BooleanFilterUI.prototype.create = function (args) {\n var isForeignColumn = args.column.isForeignColumn();\n var dataSource = isForeignColumn ? args.column.dataSource : this.parent.dataSource;\n var fields = isForeignColumn ? args.column.foreignKeyValue : args.column.field;\n this.elem = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'bool-ui-' + args.column.uid });\n args.target.appendChild(this.elem);\n this.dialogObj = args.dialogObj;\n this.dropInstance = new DropDownList(extend({\n dataSource: dataSource instanceof DataManager ?\n dataSource : new DataManager(dataSource),\n query: new Query().select(fields),\n fields: { text: fields, value: fields },\n placeholder: args.localizeText.getConstant('SelectValue'),\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n this.ddOpen = this.openPopup.bind(this);\n this.ddComplete = this.actionComplete(fields);\n this.dropInstance.addEventListener(literals['open'], this.ddOpen);\n this.dropInstance.addEventListener(events.actionComplete, this.ddComplete);\n this.dropInstance.appendTo(this.elem);\n };\n BooleanFilterUI.prototype.write = function (args) {\n var drpuiObj = document.querySelector('#bool-ui-' + args.column.uid).ej2_instances[0];\n if (!isNullOrUndefined(args.filteredValue)) {\n drpuiObj.value = args.filteredValue;\n }\n };\n BooleanFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var drpuiObj = document.querySelector('#bool-ui-' + column.uid).ej2_instances[0];\n var filterValue = drpuiObj.value;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', false);\n };\n BooleanFilterUI.prototype.openPopup = function (args) {\n getZIndexCalcualtion(args, this.dialogObj);\n };\n BooleanFilterUI.prototype.actionComplete = function (fields) {\n return function (e) {\n e.result = DataUtil.distinct(e.result, fields, true);\n };\n };\n BooleanFilterUI.prototype.destroy = function () {\n if (!this.dropInstance || this.dropInstance.isDestroyed) {\n return;\n }\n this.dropInstance.removeEventListener(literals['open'], this.ddOpen);\n this.dropInstance.removeEventListener(events.actionComplete, this.ddComplete);\n this.dropInstance.destroy();\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return BooleanFilterUI;\n}());\nexport { BooleanFilterUI };\n","import { DatePicker, DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { getCustomDateFormat } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * `datefilterui` render date column.\n *\n * @hidden\n */\nvar DateFilterUI = /** @class */ (function () {\n function DateFilterUI(parent, serviceLocator, filterSettings) {\n this.dpOpen = this.openPopup.bind(this);\n this.parent = parent;\n this.locator = serviceLocator;\n this.fltrSettings = filterSettings;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n DateFilterUI.prototype.create = function (args) {\n var format = getCustomDateFormat(args.column.format, args.column.type);\n this.dialogObj = args.dialogObj;\n this.inputElem = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'dateui-' + args.column.uid });\n args.target.appendChild(this.inputElem);\n if (args.column.type === 'date' || args.column.type === 'dateonly') {\n this.datePickerObj = new DatePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('ChooseDate'),\n width: '100%',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n }\n else if (args.column.type === 'datetime') {\n this.datePickerObj = new DateTimePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('ChooseDate'),\n width: '100%',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n }\n this.datePickerObj.addEventListener(literals['open'], this.dpOpen);\n this.datePickerObj.appendTo(this.inputElem);\n };\n DateFilterUI.prototype.write = function (args) {\n var dateuiObj = document.querySelector('#dateui-' + args.column.uid).ej2_instances[0];\n dateuiObj.value = !isNullOrUndefined(args.filteredValue) ? new Date(args.filteredValue) : null;\n };\n DateFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var dateuiObj = document.querySelector('#dateui-' + column.uid).ej2_instances[0];\n var filterValue = dateuiObj.value;\n filterValue = isNullOrUndefined(filterValue) ? null : filterValue;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', true);\n };\n DateFilterUI.prototype.openPopup = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n };\n DateFilterUI.prototype.destroy = function () {\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n if (isNullOrUndefined(this.datePickerObj) || this.datePickerObj.isDestroyed) {\n return;\n }\n this.datePickerObj.removeEventListener(literals['open'], this.dpOpen);\n this.datePickerObj.destroy();\n };\n return DateFilterUI;\n}());\nexport { DateFilterUI };\n","import { isNullOrUndefined, getValue, remove } from '@syncfusion/ej2-base';\nimport { Browser } from '@syncfusion/ej2-base';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { FlMenuOptrUI } from './filter-menu-operator';\nimport { StringFilterUI } from './string-filter-ui';\nimport { NumberFilterUI } from './number-filter-ui';\nimport { BooleanFilterUI } from './boolean-filter-ui';\nimport { DateFilterUI } from './date-filter-ui';\nimport { getFilterMenuPostion, parentsUntil, appendChildren, clearReactVueTemplates } from '../base/util';\nimport * as events from '../base/constant';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * `filter menu` render boolean column.\n *\n * @hidden\n */\nvar FilterMenuRenderer = /** @class */ (function () {\n function FilterMenuRenderer(parent, filterSettings, serviceLocator, customFltrOperators, fltrObj) {\n this.isDialogOpen = false;\n this.maxHeight = '350px';\n this.isMenuCheck = false;\n this.colTypes = {\n 'string': StringFilterUI, 'number': NumberFilterUI, 'date': DateFilterUI, 'dateonly': DateFilterUI, 'boolean': BooleanFilterUI, 'datetime': DateFilterUI\n };\n this.parent = parent;\n this.filterSettings = filterSettings;\n this.serviceLocator = serviceLocator;\n this.customFilterOperators = customFltrOperators;\n this.filterObj = fltrObj;\n this.flMuiObj = new FlMenuOptrUI(this.parent, this.customFilterOperators, this.serviceLocator);\n this.l10n = this.serviceLocator.getService('localization');\n this.menuFilterBase = new CheckBoxFilterBase(parent);\n }\n FilterMenuRenderer.prototype.clearCustomFilter = function (col) {\n this.clearBtnClick(col);\n };\n FilterMenuRenderer.prototype.applyCustomFilter = function (args) {\n this.filterBtnClick(args.col);\n };\n FilterMenuRenderer.prototype.openDialog = function (args) {\n this.options = args;\n this.col = this.parent.getColumnByField(args.field);\n if (isNullOrUndefined(this.col.filter) || (isNullOrUndefined(this.col.filter.type) || this.col.filter.type === 'Menu')) { ///\n this.renderDlgContent(args.target, this.col);\n }\n };\n FilterMenuRenderer.prototype.closeDialog = function (target) {\n if (!this.dlgObj) {\n return;\n }\n if (this.parent.isReact || this.parent.isVue) {\n clearReactVueTemplates(this.parent, ['filterTemplate']);\n }\n var elem = document.getElementById(this.dlgObj.element.id);\n if (this.dlgObj && !this.dlgObj.isDestroyed && elem) {\n var argument = { cancel: false, column: this.col, target: target, element: elem };\n this.parent.notify(events.filterMenuClose, argument);\n if (argument.cancel) {\n return;\n }\n this.isDialogOpen = false;\n if (this.isMenuCheck) {\n this.menuFilterBase.unWireEvents();\n this.parent.off(events.cBoxFltrComplete, this.actionComplete);\n this.isMenuCheck = false;\n }\n this.dlgObj.destroy();\n remove(elem);\n }\n this.parent.notify(events.filterDialogClose, {});\n };\n FilterMenuRenderer.prototype.renderDlgContent = function (target, column) {\n var args = {\n requestType: events.filterBeforeOpen,\n columnName: column.field, columnType: column.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.trigger(events.actionBegin, args);\n var mainDiv = this.parent.createElement('div', { className: 'e-flmenu-maindiv', id: column.uid + '-flmenu' });\n this.dlgDiv = this.parent.createElement('div', { className: 'e-flmenu', id: column.uid + '-flmdlg' });\n this.dlgDiv.setAttribute('aria-label', this.l10n.getConstant('FilterMenuDialogARIA'));\n if (this.parent.enableAdaptiveUI) {\n var responsiveCnt = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n responsiveCnt.appendChild(this.dlgDiv);\n }\n else {\n this.parent.element.appendChild(this.dlgDiv);\n }\n this.dlgObj = new Dialog({\n showCloseIcon: false,\n closeOnEscape: false,\n locale: this.parent.locale,\n visible: false,\n enableRtl: this.parent.enableRtl,\n created: this.dialogCreated.bind(this, target, column),\n position: this.parent.element.classList.contains('e-device') ? { X: 'center', Y: 'center' } : { X: '', Y: '' },\n target: this.parent.element.classList.contains('e-device') ? document.body : this.parent.element,\n buttons: [{\n click: this.filterBtnClick.bind(this, column),\n buttonModel: {\n content: this.l10n.getConstant('FilterButton'), isPrimary: true,\n cssClass: this.parent.cssClass ? 'e-flmenu-okbtn' + ' ' + this.parent.cssClass : 'e-flmenu-okbtn'\n }\n },\n {\n click: this.clearBtnClick.bind(this, column),\n buttonModel: { content: this.l10n.getConstant('ClearButton'),\n cssClass: this.parent.cssClass ? 'e-flmenu-cancelbtn' + ' ' + this.parent.cssClass : 'e-flmenu-cancelbtn' }\n }],\n content: mainDiv,\n width: (!isNullOrUndefined(parentsUntil(target, 'e-bigger'))) || this.parent.element.classList.contains('e-device') ? 260 : 250,\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? 'e-filter-popup' + ' ' + this.parent.cssClass : 'e-filter-popup'\n });\n var isStringTemplate = 'isStringTemplate';\n this.dlgObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dlgObj.appendTo(this.dlgDiv);\n };\n FilterMenuRenderer.prototype.renderResponsiveDialog = function () {\n var gObj = this.parent;\n if (gObj.enableAdaptiveUI) {\n this.dlgObj.position = { X: '', Y: '' };\n this.dlgObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n this.dlgObj.width = '100%';\n this.dlgObj.isModal = false;\n this.dlgObj.buttons = [{}];\n }\n };\n FilterMenuRenderer.prototype.dialogCreated = function (target, column) {\n if (!Browser.isDevice && target) {\n getFilterMenuPostion(target, this.dlgObj);\n }\n this.currentDialogCreatedColumn = column;\n this.renderFilterUI(target, column);\n if (!(column.isForeignColumn() && !(!isNullOrUndefined(column.filter) && !isNullOrUndefined(column.filter.ui)\n && !isNullOrUndefined(column.filter.ui.create)))) {\n this.afterRenderFilterUI();\n }\n };\n /**\n * Function to notify filterDialogCreated and trigger actionComplete\n *\n * @returns {void}\n * @hidden\n */\n FilterMenuRenderer.prototype.afterRenderFilterUI = function () {\n var column = this.currentDialogCreatedColumn;\n if (column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, {});\n }\n if (this.parent.enableAdaptiveUI) {\n this.dlgObj.element.style.left = '0px';\n this.dlgObj.element.style.maxHeight = 'none';\n }\n else {\n this.dlgObj.element.style.maxHeight = this.maxHeight;\n }\n this.dlgObj.show();\n var optrInput = this.dlgObj.element.querySelector('.e-flm_optrdiv').querySelector('input');\n var valInput = this.dlgObj.element.querySelector('.e-flmenu-valuediv').querySelector('input');\n if (optrInput.value === 'Empty' || optrInput.value === 'Not Empty' ||\n optrInput.value === 'Null' || optrInput.value === 'Not Null') {\n valInput['ej2_instances'][0]['enabled'] = false;\n }\n else if (!isNullOrUndefined(valInput && valInput.getAttribute('disabled'))) {\n valInput['ej2_instances'][0]['enabled'] = true;\n }\n if (!column.filterTemplate) {\n this.writeMethod(column, this.dlgObj.element.querySelector('#' + column.uid + '-flmenu'));\n }\n var args = {\n requestType: events.filterAfterOpen,\n columnName: column.field, columnType: column.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.isDialogOpen = true;\n if (!this.isMenuCheck) {\n this.parent.trigger(events.actionComplete, args);\n }\n };\n FilterMenuRenderer.prototype.renderFilterUI = function (target, col) {\n var dlgConetntEle = this.dlgObj.element.querySelector('.e-flmenu-maindiv');\n this.parent.log('column_type_missing', { column: col });\n this.renderOperatorUI(dlgConetntEle, target, col);\n this.renderFlValueUI(dlgConetntEle, target, col);\n };\n FilterMenuRenderer.prototype.renderOperatorUI = function (dlgConetntEle, target, column) {\n this.flMuiObj.renderOperatorUI(dlgConetntEle, target, column, this.dlgObj, this.filterObj.menuOperator);\n };\n FilterMenuRenderer.prototype.renderFlValueUI = function (dlgConetntEle, target, column) {\n var valueDiv = this.parent.createElement('div', { className: 'e-flmenu-valuediv' });\n var fObj = this.filterObj;\n dlgConetntEle.appendChild(valueDiv);\n var instanceofFilterUI = new this.colTypes[column.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n if (column.filterTemplate) {\n var fltrData = {};\n var valueInString = 'value';\n fltrData[column.field] = fltrData[\"\" + valueInString] = fObj.values[column.field];\n if (column.foreignKeyValue) {\n fltrData[column.foreignKeyValue] = fObj.values[column.field];\n fltrData[column.field] = undefined;\n }\n var col = 'column';\n fltrData[\"\" + col] = column;\n var isReactCompiler = this.parent.isReact && typeof (column.filterTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var tempID = this.parent.element.id + column.uid + 'filterTemplate';\n if (isReactCompiler || isReactChild) {\n column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID, null, null, valueDiv);\n this.parent.renderTemplates();\n }\n else {\n var compElement = column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID);\n appendChildren(valueDiv, compElement);\n }\n if (this.isMenuCheck) {\n this.menuFilterBase.cBox = this.dlgObj.element.querySelector('.e-checkboxlist.e-fields');\n this.menuFilterBase.wireEvents();\n this.parent.on(events.cBoxFltrComplete, this.actionComplete, this);\n this.menuFilterBase.getAllData();\n }\n }\n else {\n if (!isNullOrUndefined(column.filter) && !isNullOrUndefined(column.filter.ui)\n && !isNullOrUndefined(column.filter.ui.create)) {\n var temp = column.filter.ui.create;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n temp({\n column: column, target: valueDiv,\n getOptrInstance: this.flMuiObj, dialogObj: this.dlgObj\n });\n }\n else {\n instanceofFilterUI.create({\n column: column, target: valueDiv,\n getOptrInstance: this.flMuiObj, localizeText: this.l10n, dialogObj: this.dlgObj\n });\n }\n }\n };\n FilterMenuRenderer.prototype.writeMethod = function (col, dlgContentEle) {\n var flValue;\n var target = dlgContentEle.querySelector('.e-flmenu-valinput');\n var instanceofFilterUI = new this.colTypes[col.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n var columns = this.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (col.uid === column.uid) {\n flValue = column.value;\n }\n }\n if (!isNullOrUndefined(col.filter) && !isNullOrUndefined(col.filter.ui)\n && !isNullOrUndefined(col.filter.ui.write)) {\n var temp = col.filter.ui.write;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n temp({ column: col, target: target, parent: this.parent, filteredValue: flValue });\n }\n else {\n instanceofFilterUI.write({ column: col, target: target, parent: this.parent, filteredValue: flValue });\n }\n };\n FilterMenuRenderer.prototype.filterBtnClick = function (col) {\n var flValue;\n var targ = this.dlgObj.element.querySelector('.e-flmenu-valuediv input');\n var flOptrValue = this.flMuiObj.getFlOperator();\n var instanceofFilterUI = new this.colTypes[col.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n if (col.filterTemplate) {\n var element = this.dlgDiv.querySelector('.e-flmenu-valuediv');\n var fltrValue = void 0;\n if (element.children[0].value) {\n fltrValue = element.children[0].value;\n }\n else {\n if (!isNullOrUndefined(element.children[0].ej2_instances)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fltrValue = (this.parent.isAngular ? element.children[0] :\n element.querySelector('input')).ej2_instances[0].value;\n }\n else {\n var eControl = element.querySelector('.e-control');\n if (!isNullOrUndefined(eControl)) {\n fltrValue = col.type === 'boolean' ? eControl.checked :\n !isNullOrUndefined(eControl.ej2_instances) ?\n eControl.ej2_instances[0].value :\n eControl.value;\n }\n }\n }\n this.filterObj.filterByColumn(col.field, flOptrValue, fltrValue);\n }\n else {\n if (!isNullOrUndefined(col.filter) &&\n !isNullOrUndefined(col.filter.ui) && !isNullOrUndefined(col.filter.ui.read)) {\n var temp = col.filter.ui.read;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n // eslint-disable-next-line\n flValue = temp({ element: targ, column: col, operator: flOptrValue, fltrObj: this.filterObj });\n }\n else {\n instanceofFilterUI.read(targ, col, flOptrValue, this.filterObj);\n }\n }\n this.closeDialog();\n if (this.parent.showColumnMenu) {\n this.parent.notify(events.afterFilterColumnMenuClose, {});\n }\n };\n FilterMenuRenderer.prototype.closeResponsiveDialog = function () {\n this.closeDialog();\n };\n FilterMenuRenderer.prototype.clearBtnClick = function (column) {\n this.filterObj.removeFilteredColsByField(column.field);\n this.closeDialog();\n var iconClass = this.parent.showColumnMenu && column.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var col = this.parent.element.querySelector('[e-mappinguid=\"' + column.uid + '\"]').parentElement;\n var flIcon = col.querySelector(iconClass);\n if (flIcon) {\n flIcon.classList.remove('e-filtered');\n }\n };\n FilterMenuRenderer.prototype.destroy = function () {\n this.closeDialog();\n };\n /**\n * @returns {FilterUI} returns the filterUI\n * @hidden\n */\n FilterMenuRenderer.prototype.getFilterUIInfo = function () {\n return { field: this.col.field, operator: this.flMuiObj.getFlOperator() };\n };\n FilterMenuRenderer.prototype.renderCheckBoxMenu = function () {\n this.isMenuCheck = true;\n this.menuFilterBase.updateModel(this.options);\n this.menuFilterBase.getAndSetChkElem(this.options);\n this.dlgObj.buttons = [{\n click: this.menuFilterBase.btnClick.bind(this.menuFilterBase),\n buttonModel: {\n content: this.menuFilterBase.getLocalizedLabel('FilterButton'),\n cssClass: 'e-primary', isPrimary: true\n }\n },\n {\n click: this.menuFilterBase.btnClick.bind(this.menuFilterBase),\n buttonModel: { cssClass: 'e-flat', content: this.menuFilterBase.getLocalizedLabel('ClearButton') }\n }];\n this.menuFilterBase.dialogObj = this.dlgObj;\n this.menuFilterBase.dlg = this.dlgObj.element;\n this.menuFilterBase.dlg.classList.add('e-menucheckbox');\n this.menuFilterBase.dlg.classList.remove('e-checkboxfilter');\n this.maxHeight = '800px';\n return this.menuFilterBase.sBox.innerHTML;\n };\n FilterMenuRenderer.prototype.actionComplete = function (args) {\n if (this.isMenuCheck) {\n this.parent.trigger(events.actionComplete, args);\n }\n };\n return FilterMenuRenderer;\n}());\nexport { FilterMenuRenderer };\n","import * as events from '../base/constant';\nimport { isActionPrevent } from '../base/util';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * @hidden\n * `CheckBoxFilter` module is used to handle filtering action.\n */\nvar CheckBoxFilter = /** @class */ (function () {\n /**\n * Constructor for checkbox filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the filtersettings\n * @param {ServiceLocator} serviceLocator - specifies the ServiceLocator\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function CheckBoxFilter(parent, filterSettings, serviceLocator) {\n this.parent = parent;\n this.isresetFocus = true;\n this.checkBoxBase = new CheckBoxFilterBase(parent);\n this.addEventListener();\n }\n /**\n * To destroy the check box filter.\n *\n * @returns {void}\n * @hidden\n */\n CheckBoxFilter.prototype.destroy = function () {\n this.removeEventListener();\n this.checkBoxBase.closeDialog();\n };\n CheckBoxFilter.prototype.openDialog = function (options) {\n this.checkBoxBase.openDialog(options);\n this.parent.log('column_type_missing', { column: options.column });\n };\n CheckBoxFilter.prototype.closeDialog = function () {\n this.destroy();\n if (this.isresetFocus) {\n this.parent.notify(events.restoreFocus, {});\n }\n };\n CheckBoxFilter.prototype.closeResponsiveDialog = function () {\n this.checkBoxBase.closeDialog();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name\n * @private\n */\n CheckBoxFilter.prototype.getModuleName = function () {\n return 'checkboxFilter';\n };\n CheckBoxFilter.prototype.actionBegin = function (args) {\n this.parent.trigger(events.actionBegin, args);\n };\n CheckBoxFilter.prototype.actionComplete = function (args) {\n this.parent.trigger(events.actionComplete, args);\n };\n CheckBoxFilter.prototype.actionPrevent = function (args) {\n if (isActionPrevent(this.parent)) {\n this.parent.notify(events.preventBatch, args);\n args.cancel = true;\n }\n };\n CheckBoxFilter.prototype.clearCustomFilter = function (col) {\n this.checkBoxBase.clearFilter(col);\n };\n CheckBoxFilter.prototype.applyCustomFilter = function () {\n this.checkBoxBase.fltrBtnHandler();\n this.checkBoxBase.closeDialog();\n };\n CheckBoxFilter.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.cBoxFltrBegin, this.actionBegin, this);\n this.parent.on(events.cBoxFltrComplete, this.actionComplete, this);\n this.parent.on(events.fltrPrevent, this.actionPrevent, this);\n };\n CheckBoxFilter.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.cBoxFltrBegin, this.actionBegin);\n this.parent.off(events.cBoxFltrComplete, this.actionComplete);\n this.parent.off(events.fltrPrevent, this.actionPrevent);\n };\n return CheckBoxFilter;\n}());\nexport { CheckBoxFilter };\n","import { select, detach } from '@syncfusion/ej2-base';\nimport { VScroll } from './v-scroll';\nimport { HScroll } from './h-scroll';\n/**\n * Used to add scroll in menu.\n *\n * @param {createElementType} createElement - Specifies the create element model\n * @param {HTMLElement} container - Specifies the element container\n * @param {HTMLElement} content - Specifies the content element\n * @param {string} scrollType - Specifies the scroll type\n * @param {boolean} enableRtl - Specifies the enable RTL property\n * @param {boolean} offset - Specifies the offset value\n * @returns {HTMLElement} - Element\n * @hidden\n */\nexport function addScrolling(createElement, container, content, scrollType, enableRtl, offset) {\n var containerOffset;\n var contentOffset;\n var parentElem = container.parentElement;\n if (scrollType === 'vscroll') {\n containerOffset = offset || container.getBoundingClientRect().height;\n contentOffset = content.getBoundingClientRect().height;\n }\n else {\n containerOffset = container.getBoundingClientRect().width;\n contentOffset = content.getBoundingClientRect().width;\n }\n if (containerOffset < contentOffset) {\n return createScrollbar(createElement, container, content, scrollType, enableRtl, offset);\n }\n else if (parentElem) {\n var width = parentElem.getBoundingClientRect().width;\n if (width < containerOffset && scrollType === 'hscroll') {\n contentOffset = width;\n container.style.maxWidth = width + 'px';\n return createScrollbar(createElement, container, content, scrollType, enableRtl, offset);\n }\n return content;\n }\n else {\n return content;\n }\n}\n/**\n * Used to create scroll bar in menu.\n *\n * @param {createElementType} createElement - Specifies the create element model\n * @param {HTMLElement} container - Specifies the element container\n * @param {HTMLElement} content - Specifies the content element\n * @param {string} scrollType - Specifies the scroll type\n * @param {boolean} enableRtl - Specifies the enable RTL property\n * @param {boolean} offset - Specifies the offset value\n * @returns {HTMLElement} - Element\n * @hidden\n */\nfunction createScrollbar(createElement, container, content, scrollType, enableRtl, offset) {\n var scrollEle = createElement('div', { className: 'e-menu-' + scrollType });\n container.appendChild(scrollEle);\n scrollEle.appendChild(content);\n if (offset) {\n scrollEle.style.overflow = 'hidden';\n scrollEle.style.height = offset + 'px';\n }\n else {\n scrollEle.style.maxHeight = container.style.maxHeight;\n container.style.overflow = 'hidden';\n }\n var scrollObj;\n if (scrollType === 'vscroll') {\n scrollObj = new VScroll({ enableRtl: enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', container).offsetHeight / 2;\n }\n else {\n scrollObj = new HScroll({ enableRtl: enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', container).offsetWidth;\n }\n return scrollEle;\n}\n/**\n * Used to destroy the scroll option.\n *\n * @param {VScroll | HScroll} scrollObj - Specifies the scroller object\n * @param {Element} element - Specifies the element\n * @param {HTMLElement} skipEle - Specifies the skip element\n * @returns {void}\n * @hidden\n */\nexport function destroyScroll(scrollObj, element, skipEle) {\n if (scrollObj) {\n var menu = select('.e-menu-parent', element);\n if (menu) {\n if (!skipEle || skipEle === menu) {\n scrollObj.destroy();\n element.parentElement.appendChild(menu);\n detach(element);\n }\n }\n else {\n scrollObj.destroy();\n detach(element);\n }\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, NotifyPropertyChanges, isBlazor } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, KeyboardEvents, Touch } from '@syncfusion/ej2-base';\nimport { Animation } from '@syncfusion/ej2-base';\nimport { Browser, Collection, setValue, getValue, getUniqueID, getInstance, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { select, selectAll, closest, detach, append, rippleEffect, isVisible, Complex, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { getZindexPartial, calculatePosition, isCollide, fit, Popup } from '@syncfusion/ej2-popups';\nimport { SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getScrollableParent } from '@syncfusion/ej2-popups';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nimport { addScrolling, destroyScroll } from '../common/menu-scroll';\nvar ENTER = 'enter';\nvar ESCAPE = 'escape';\nvar FOCUSED = 'e-focused';\nvar HEADER = 'e-menu-header';\nvar SELECTED = 'e-selected';\nvar SEPARATOR = 'e-separator';\nvar UPARROW = 'uparrow';\nvar DOWNARROW = 'downarrow';\nvar LEFTARROW = 'leftarrow';\nvar RIGHTARROW = 'rightarrow';\nvar HOME = 'home';\nvar END = 'end';\nvar TAB = 'tab';\nvar CARET = 'e-caret';\nvar ITEM = 'e-menu-item';\nvar DISABLED = 'e-disabled';\nvar HIDE = 'e-menu-hide';\nvar ICONS = 'e-icons';\nvar RTL = 'e-rtl';\nvar POPUP = 'e-menu-popup';\nvar TEMPLATE_PROPERTY = 'Template';\n/**\n * Configures the field options of the Menu.\n */\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('id')\n ], FieldSettings.prototype, \"itemId\", void 0);\n __decorate([\n Property('parentId')\n ], FieldSettings.prototype, \"parentId\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('url')\n ], FieldSettings.prototype, \"url\", void 0);\n __decorate([\n Property('separator')\n ], FieldSettings.prototype, \"separator\", void 0);\n __decorate([\n Property('items')\n ], FieldSettings.prototype, \"children\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\n/**\n * Specifies menu items.\n */\nvar MenuItem = /** @class */ (function (_super) {\n __extends(MenuItem, _super);\n function MenuItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], MenuItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], MenuItem.prototype, \"separator\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuItem.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"url\", void 0);\n return MenuItem;\n}(ChildProperty));\nexport { MenuItem };\n/**\n * Animation configuration settings.\n */\nvar MenuAnimationSettings = /** @class */ (function (_super) {\n __extends(MenuAnimationSettings, _super);\n function MenuAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], MenuAnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], MenuAnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], MenuAnimationSettings.prototype, \"easing\", void 0);\n return MenuAnimationSettings;\n}(ChildProperty));\nexport { MenuAnimationSettings };\n/**\n * Base class for Menu and ContextMenu components.\n *\n * @private\n */\nvar MenuBase = /** @class */ (function (_super) {\n __extends(MenuBase, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {MenuBaseModel} options - Specifies the menu base model\n * @param {string | HTMLUListElement} element - Specifies the element\n */\n function MenuBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.navIdx = [];\n _this.animation = new Animation({});\n _this.isTapHold = false;\n _this.tempItem = [];\n _this.showSubMenuOn = 'Auto';\n return _this;\n }\n /**\n * Initialized third party configuration settings.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.preRender = function () {\n if (!this.isMenu) {\n var ul = void 0;\n if (this.element.tagName === 'EJS-CONTEXTMENU') {\n ul = this.createElement('ul', {\n id: getUniqueID(this.getModuleName()), className: 'e-control e-lib e-' + this.getModuleName()\n });\n var ejInst = getValue('ej2_instances', this.element);\n removeClass([this.element], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.clonedElement = this.element;\n this.element = ul;\n setValue('ej2_instances', ejInst, this.element);\n }\n else {\n ul = this.createElement('ul', { id: getUniqueID(this.getModuleName()) });\n append([].slice.call(this.element.cloneNode(true).children), ul);\n var refEle = this.element.nextElementSibling;\n if (refEle) {\n this.element.parentElement.insertBefore(ul, refEle);\n }\n else {\n this.element.parentElement.appendChild(ul);\n }\n this.clonedElement = ul;\n }\n this.clonedElement.style.display = 'none';\n }\n if (this.element.tagName === 'EJS-MENU') {\n var ele = this.element;\n var ejInstance = getValue('ej2_instances', ele);\n var ul = this.createElement('ul');\n var wrapper = this.createElement('EJS-MENU', { className: 'e-' + this.getModuleName() + '-wrapper' });\n for (var idx = 0, len = ele.attributes.length; idx < len; idx++) {\n ul.setAttribute(ele.attributes[idx].nodeName, ele.attributes[idx].nodeValue);\n }\n ele.parentNode.insertBefore(wrapper, ele);\n detach(ele);\n ele = ul;\n wrapper.appendChild(ele);\n setValue('ej2_instances', ejInstance, ele);\n this.clonedElement = wrapper;\n this.element = ele;\n if (!this.element.id) {\n this.element.id = getUniqueID(this.getModuleName());\n }\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.renderItems();\n this.wireEvents();\n this.renderComplete();\n var wrapper = this.getWrapper();\n // eslint-disable-next-line\n if (this.template && this.enableScrolling && (this.isReact || this.isAngular)) {\n requestAnimationFrame(function () {\n addScrolling(_this.createElement, wrapper, _this.element, 'hscroll', _this.enableRtl);\n });\n }\n };\n MenuBase.prototype.initialize = function () {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n if (this.isMenu) {\n this.element.parentElement.insertBefore(wrapper, this.element);\n }\n else {\n document.body.appendChild(wrapper);\n }\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n wrapper.appendChild(this.element);\n if (this.isMenu && this.hamburgerMode) {\n if (!this.target) {\n this.createHeaderContainer(wrapper);\n }\n }\n this.defaultOption = this.showItemOnClick;\n };\n MenuBase.prototype.renderItems = function () {\n if (!this.items.length) {\n var items = ListBase.createJsonFromElement(this.element, { fields: { child: 'items' } });\n this.setProperties({ items: items }, true);\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n }\n var ul = this.createItems(this.items);\n append(Array.prototype.slice.call(ul.children), this.element);\n this.element.classList.add('e-menu-parent');\n if (this.isMenu) {\n if (!this.hamburgerMode && this.element.classList.contains('e-vertical')) {\n this.setBlankIconStyle(this.element);\n }\n if (this.enableScrolling) {\n var wrapper = this.getWrapper();\n if (this.element.classList.contains('e-vertical')) {\n addScrolling(this.createElement, wrapper, this.element, 'vscroll', this.enableRtl);\n }\n else {\n addScrolling(this.createElement, wrapper, this.element, 'hscroll', this.enableRtl);\n }\n }\n }\n };\n MenuBase.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n if (this.target) {\n var target = void 0;\n var targetElems = selectAll(this.target);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.add(target, 'click', this.menuHeaderClickHandler, this);\n }\n else {\n if (Browser.isIos) {\n new Touch(target, { tapHold: this.touchHandler.bind(this) });\n }\n else {\n EventHandler.add(target, 'contextmenu', this.cmenuHandler, this);\n }\n }\n }\n this.targetElement = target;\n if (!this.isMenu) {\n EventHandler.add(this.targetElement, 'scroll', this.scrollHandler, this);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'scroll', this.scrollHandler, this);\n }\n }\n }\n if (!Browser.isDevice) {\n this.delegateMoverHandler = this.moverHandler.bind(this);\n this.delegateMouseDownHandler = this.mouseDownHandler.bind(this);\n EventHandler.add(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler, this);\n EventHandler.add(document, 'mousedown', this.delegateMouseDownHandler, this);\n }\n this.delegateClickHandler = this.clickHandler.bind(this);\n EventHandler.add(document, 'click', this.delegateClickHandler, this);\n this.wireKeyboardEvent(wrapper);\n this.rippleFn = rippleEffect(wrapper, { selector: '.' + ITEM });\n };\n MenuBase.prototype.wireKeyboardEvent = function (element) {\n var keyConfigs = {\n downarrow: DOWNARROW,\n uparrow: UPARROW,\n enter: ENTER,\n leftarrow: LEFTARROW,\n rightarrow: RIGHTARROW,\n escape: ESCAPE\n };\n if (this.isMenu) {\n keyConfigs.home = HOME;\n keyConfigs.end = END;\n keyConfigs.tab = TAB;\n }\n new KeyboardEvents(element, {\n keyAction: this.keyBoardHandler.bind(this),\n keyConfigs: keyConfigs\n });\n };\n MenuBase.prototype.mouseDownHandler = function (e) {\n if (closest(e.target, '.e-' + this.getModuleName() + '-wrapper') !== this.getWrapper()\n && (!closest(e.target, '.e-' + this.getModuleName() + '-popup'))) {\n this.closeMenu(this.isMenu ? null : this.navIdx.length, e);\n }\n };\n MenuBase.prototype.keyHandler = function (e) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n if (e.target && (e.target.classList.contains('e-contextmenu') || e.target.classList.contains('e-menu-item'))) {\n e.preventDefault();\n }\n }\n };\n MenuBase.prototype.keyBoardHandler = function (e) {\n var actionName = '';\n var trgt = e.target;\n var actionNeeded = this.isMenu && !this.hamburgerMode && !this.element.classList.contains('e-vertical')\n && this.navIdx.length < 1;\n e.preventDefault();\n if (this.enableScrolling && e.keyCode === 13 && trgt.classList.contains('e-scroll-nav')) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [closest(trgt, '.e-' + this.getModuleName() + '-wrapper')]);\n }\n if (actionNeeded) {\n switch (e.action) {\n case RIGHTARROW:\n actionName = RIGHTARROW;\n e.action = DOWNARROW;\n break;\n case LEFTARROW:\n actionName = LEFTARROW;\n e.action = UPARROW;\n break;\n case DOWNARROW:\n actionName = DOWNARROW;\n e.action = RIGHTARROW;\n break;\n case UPARROW:\n actionName = UPARROW;\n e.action = '';\n break;\n }\n }\n else if (this.enableRtl) {\n switch (e.action) {\n case LEFTARROW:\n actionNeeded = true;\n actionName = LEFTARROW;\n e.action = RIGHTARROW;\n break;\n case RIGHTARROW:\n actionNeeded = true;\n actionName = RIGHTARROW;\n e.action = LEFTARROW;\n break;\n }\n }\n switch (e.action) {\n case DOWNARROW:\n case UPARROW:\n case END:\n case HOME:\n case TAB:\n this.upDownKeyHandler(e);\n break;\n case RIGHTARROW:\n this.rightEnterKeyHandler(e);\n break;\n case LEFTARROW:\n this.leftEscKeyHandler(e);\n break;\n case ENTER:\n if (this.hamburgerMode && trgt.tagName === 'SPAN' && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n this.rightEnterKeyHandler(e);\n }\n break;\n case ESCAPE:\n this.leftEscKeyHandler(e);\n break;\n }\n if (actionNeeded) {\n e.action = actionName;\n }\n };\n MenuBase.prototype.upDownKeyHandler = function (e) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (e.action === DOWNARROW || e.action === HOME || e.action === TAB) ? 0 : cul.childElementCount - 1;\n var fliIdx = defaultIdx;\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n if (e.action !== END && e.action !== HOME) {\n fliIdx = this.getIdx(cul, fli);\n }\n fli.classList.remove(FOCUSED);\n if (e.action !== END && e.action !== HOME) {\n if (e.action === DOWNARROW) {\n fliIdx++;\n }\n else {\n fliIdx--;\n }\n if (fliIdx === (e.action === DOWNARROW ? cul.childElementCount : -1)) {\n fliIdx = defaultIdx;\n }\n }\n }\n var cli = cul.children[fliIdx];\n fliIdx = this.isValidLI(cli, fliIdx, e.action);\n cul.children[fliIdx].classList.add(FOCUSED);\n cul.children[fliIdx].focus();\n };\n MenuBase.prototype.isValidLI = function (cli, index, action) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (action === DOWNARROW || action === HOME || action === TAB) ? 0 : cul.childElementCount - 1;\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n if (action === DOWNARROW && index === cul.childElementCount - 1) {\n index = defaultIdx;\n }\n else if (action === UPARROW && index === 0) {\n index = defaultIdx;\n }\n else if ((action === DOWNARROW) || (action === RIGHTARROW)) {\n index++;\n }\n else {\n index--;\n }\n }\n cli = cul.children[index];\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n index = this.isValidLI(cli, index, action);\n }\n return index;\n };\n MenuBase.prototype.getUlByNavIdx = function (navIdxLen) {\n var _this = this;\n if (navIdxLen === void 0) { navIdxLen = this.navIdx.length; }\n if (this.isMenu) {\n var popup = [this.getWrapper()].concat([].slice.call(selectAll('.' + POPUP)))[navIdxLen];\n var popups_1 = [];\n var allPopup = selectAll('.' + POPUP);\n allPopup.forEach(function (elem) {\n if (_this.element.id === elem.id.split('-')[2] || elem.id.split('-')[2] + \"-\" + elem.id.split('-')[3]) {\n popups_1.push(elem);\n }\n });\n popup = [this.getWrapper()].concat([].slice.call(popups_1))[navIdxLen];\n return isNullOrUndefined(popup) ? null : select('.e-menu-parent', popup);\n }\n else {\n return this.getWrapper().children[navIdxLen];\n }\n };\n MenuBase.prototype.rightEnterKeyHandler = function (e) {\n var eventArgs;\n var cul = this.getUlByNavIdx();\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n var fliIdx = this.getIdx(cul, fli);\n var navIdx = this.navIdx.concat(fliIdx);\n var item = this.getItem(navIdx);\n if (item.items.length) {\n this.navIdx.push(fliIdx);\n this.keyType = 'right';\n this.action = e.action;\n this.openMenu(fli, item, -1, -1, e);\n }\n else {\n if (e.action === ENTER) {\n if (this.isMenu && this.navIdx.length === 0) {\n this.removeLIStateByClass([SELECTED], [this.getWrapper()]);\n }\n else {\n fli.classList.remove(FOCUSED);\n }\n fli.classList.add(SELECTED);\n eventArgs = { element: fli, item: item, event: e };\n this.trigger('select', eventArgs);\n this.closeMenu(null, e);\n }\n }\n }\n };\n MenuBase.prototype.leftEscKeyHandler = function (e) {\n if (this.navIdx.length) {\n this.keyType = 'left';\n this.closeMenu(this.navIdx.length, e);\n }\n else {\n if (e.action === ESCAPE) {\n this.closeMenu(null, e);\n }\n }\n };\n MenuBase.prototype.scrollHandler = function (e) {\n this.closeMenu(null, e);\n };\n MenuBase.prototype.touchHandler = function (e) {\n this.isTapHold = true;\n this.cmenuHandler(e.originalEvent);\n };\n MenuBase.prototype.cmenuHandler = function (e) {\n e.preventDefault();\n this.currentTarget = e.target;\n this.isCMenu = true;\n this.pageX = e.changedTouches ? e.changedTouches[0].pageX + 1 : e.pageX + 1;\n this.pageY = e.changedTouches ? e.changedTouches[0].pageY + 1 : e.pageY + 1;\n this.closeMenu(null, e);\n if (this.isCMenu) {\n if (this.canOpen(e.target)) {\n this.openMenu(null, null, this.pageY, this.pageX, e);\n }\n this.isCMenu = false;\n }\n };\n // eslint:disable-next-line:max-func-body-length\n MenuBase.prototype.closeMenu = function (ulIndex, e, isIterated) {\n var _this = this;\n if (ulIndex === void 0) { ulIndex = 0; }\n if (e === void 0) { e = null; }\n if (this.isMenuVisible()) {\n var sli = void 0;\n var item_1;\n var wrapper_1 = this.getWrapper();\n var beforeCloseArgs = void 0;\n var items_1;\n var popups = this.getPopups();\n var isClose = false;\n var cnt = this.isMenu ? popups.length + 1 : wrapper_1.childElementCount;\n var ul_1 = this.isMenu && cnt !== 1 ? select('.e-ul', popups[cnt - 2])\n : selectAll('.e-menu-parent', wrapper_1)[cnt - 1];\n if (this.isMenu && ul_1.classList.contains('e-menu')) {\n sli = this.getLIByClass(ul_1, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n isClose = true;\n }\n if (!isClose) {\n var liElem_1 = e && e.target && this.getLI(e.target);\n if (liElem_1) {\n this.cli = liElem_1;\n }\n else {\n this.cli = ul_1.children[0];\n }\n item_1 = this.navIdx.length ? this.getItem(this.navIdx) : null;\n items_1 = item_1 ? item_1.items : this.items;\n beforeCloseArgs = { element: ul_1, parentItem: item_1, items: items_1, event: e, cancel: false, isFocused: true };\n this.trigger('beforeClose', beforeCloseArgs, function (observedCloseArgs) {\n var popupEle;\n var closeArgs;\n var popupId = '';\n var popupObj;\n var isOpen = !observedCloseArgs.cancel;\n if (isOpen || _this.isCMenu) {\n if (_this.isMenu) {\n popupEle = closest(ul_1, '.' + POPUP);\n if (_this.hamburgerMode) {\n popupEle.parentElement.style.minHeight = '';\n closest(ul_1, '.e-menu-item').setAttribute('aria-expanded', 'false');\n }\n _this.unWireKeyboardEvent(popupEle);\n destroyScroll(getInstance(popupEle.children[0], VScroll), popupEle.children[0]);\n popupObj = getInstance(popupEle, Popup);\n popupObj.hide();\n popupId = popupEle.id;\n popupObj.destroy();\n detach(popupEle);\n }\n else {\n _this.toggleAnimation(ul_1, false);\n }\n closeArgs = { element: ul_1, parentItem: item_1, items: items_1 };\n _this.trigger('onClose', closeArgs);\n _this.navIdx.pop();\n if (!_this.isMenu) {\n EventHandler.remove(ul_1, 'keydown', _this.keyHandler);\n if (_this.keyType === 'right') {\n _this.keyType = '';\n }\n }\n }\n _this.updateReactTemplate();\n var trgtliId;\n var closedLi;\n var trgtLi;\n var trgtpopUp = _this.getWrapper() && _this.getUlByNavIdx();\n if (_this.isCMenu) {\n if (_this.canOpen(e.target)) {\n _this.openMenu(null, null, _this.pageY, _this.pageX, e);\n }\n _this.isCMenu = false;\n }\n if (_this.isMenu && trgtpopUp && popupId.length) {\n // eslint-disable-next-line\n trgtliId = new RegExp('(.*)-ej2menu-' + _this.element.id + '-popup').exec(popupId)[1];\n closedLi = trgtpopUp.querySelector('[id=\"' + trgtliId + '\"]');\n trgtLi = (liElem_1 && trgtpopUp.querySelector('[id=\"' + liElem_1.id + '\"]'));\n }\n else if (trgtpopUp) {\n closedLi = trgtpopUp.querySelector('.e-menu-item.e-selected');\n trgtLi = (liElem_1 && trgtpopUp.querySelector('[id=\"' + liElem_1.id + '\"]'));\n }\n var submenus = liElem_1 && liElem_1.querySelectorAll('.e-menu-item');\n if (isOpen && _this.hamburgerMode && ulIndex && !(submenus.length)) {\n _this.afterCloseMenu(e);\n }\n else if (isOpen && !_this.hamburgerMode && closedLi && !trgtLi && _this.keyType !== 'left' && (_this.navIdx.length || !_this.isMenu && _this.navIdx.length === 0)) {\n var ele = (e && e.target.classList.contains('e-vscroll'))\n ? closest(e.target, '.e-menu-wrapper') : null;\n if (ele) {\n ele = ele.querySelector('.e-menu-item');\n if (_this.showItemOnClick || (ele && _this.getIndex(ele.id, true).length <= _this.navIdx.length)) {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e, true);\n }\n }\n else {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e);\n }\n }\n else if (isOpen && !isIterated && !ulIndex && ((_this.hamburgerMode && _this.navIdx.length) ||\n _this.navIdx.length === 1 && liElem_1 && trgtpopUp !== liElem_1.parentElement)) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && isNullOrUndefined(ulIndex) && _this.navIdx.length) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && !_this.isMenu && !ulIndex && _this.navIdx.length === 0 && !_this.isMenusClosed) {\n _this.isMenusClosed = true;\n _this.closeMenu(0, e);\n }\n else if (isOpen && _this.isMenu && e && e.target &&\n _this.navIdx.length !== 0 && closest(e.target, '.e-menu-parent.e-control')) {\n _this.closeMenu(0, e);\n }\n else if (isOpen && !_this.isMenu && selectAll('.e-menu-parent', wrapper_1)[ulIndex - 1] && e.which === 3) {\n _this.closeMenu(null, e);\n }\n else {\n if (isOpen && (_this.keyType === 'right' || _this.keyType === 'click')) {\n _this.afterCloseMenu(e);\n }\n else {\n var cul = _this.getUlByNavIdx();\n var sli_1 = _this.getLIByClass(cul, SELECTED);\n if (sli_1) {\n sli_1.setAttribute('aria-expanded', 'false');\n sli_1.classList.remove(SELECTED);\n if (observedCloseArgs.isFocused && liElem_1 || _this.keyType === 'left') {\n sli_1.classList.add(FOCUSED);\n if (!e.target || !e.target.classList.contains('e-edit-template')) {\n sli_1.focus();\n }\n }\n }\n if (!isOpen && _this.hamburgerMode && liElem_1 && liElem_1.getAttribute('aria-expanded') === 'false' &&\n liElem_1.getAttribute('aria-haspopup') === 'true') {\n if (closest(liElem_1, '.e-menu-parent.e-control')) {\n _this.navIdx = [];\n }\n else {\n _this.navIdx.pop();\n }\n _this.navIdx.push(_this.cliIdx);\n var item_2 = _this.getItem(_this.navIdx);\n liElem_1.setAttribute('aria-expanded', 'true');\n _this.openMenu(liElem_1, item_2, -1, -1, e);\n }\n }\n if (_this.navIdx.length < 1) {\n if (_this.showSubMenuOn === 'Hover' || _this.showSubMenuOn === 'Click') {\n _this.showItemOnClick = _this.defaultOption;\n _this.showSubMenuOn = 'Auto';\n }\n }\n }\n _this.removeStateWrapper();\n });\n }\n }\n };\n MenuBase.prototype.updateReactTemplate = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && this.template && this.navIdx.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var portals = this.portals.splice(0, this.items.length);\n this.clearTemplate(['template']);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.portals = portals;\n this.renderReactTemplates();\n }\n };\n MenuBase.prototype.getMenuItemModel = function (item, level) {\n if (isNullOrUndefined(item)) {\n return null;\n }\n if (isNullOrUndefined(level)) {\n level = 0;\n }\n var fields = this.getFields(level);\n return { text: item[fields.text], id: item[fields.id], items: item[fields.child], separator: item[fields.separator],\n iconCss: item[fields.iconCss], url: item[fields.url] };\n };\n MenuBase.prototype.getPopups = function () {\n var _this = this;\n var popups = [];\n [].slice.call(document.querySelectorAll('.' + POPUP)).forEach(function (elem) {\n if (!isNullOrUndefined(elem.querySelector('.' + ITEM)) && _this.getIndex(elem.querySelector('.' + ITEM).id, true).length) {\n popups.push(elem);\n }\n });\n return popups;\n };\n MenuBase.prototype.isMenuVisible = function () {\n return (this.navIdx.length > 0 || (this.element.classList.contains('e-contextmenu') && isVisible(this.element).valueOf()));\n };\n MenuBase.prototype.canOpen = function (target) {\n var canOpen = true;\n if (this.filter) {\n canOpen = false;\n var filter = this.filter.split(' ');\n for (var i = 0, len = filter.length; i < len; i++) {\n if (closest(target, '.' + filter[i])) {\n canOpen = true;\n break;\n }\n }\n }\n return canOpen;\n };\n MenuBase.prototype.openMenu = function (li, item, top, left, e, target) {\n var _this = this;\n if (top === void 0) { top = 0; }\n if (left === void 0) { left = 0; }\n if (e === void 0) { e = null; }\n if (target === void 0) { target = this.targetElement; }\n var wrapper = this.getWrapper();\n this.lItem = li;\n var elemId = this.element.id !== '' ? this.element.id : 'menu';\n this.isMenusClosed = false;\n if (isNullOrUndefined(top)) {\n top = -1;\n }\n if (isNullOrUndefined(left)) {\n left = -1;\n }\n if (li) {\n this.uList = this.createItems(item[this.getField('children', this.navIdx.length - 1)]);\n if (!this.isMenu && Browser.isDevice) {\n wrapper.lastChild.style.display = 'none';\n var data = {\n text: item[this.getField('text')].toString(), iconCss: ICONS + ' e-previous'\n };\n var hdata = new MenuItem(this.items[0], 'items', data, true);\n var hli = this.createItems([hdata]).children[0];\n hli.classList.add(HEADER);\n this.uList.insertBefore(hli, this.uList.children[0]);\n }\n if (this.isMenu) {\n this.popupWrapper = this.createElement('div', {\n className: 'e-' + this.getModuleName() + '-wrapper ' + POPUP, id: li.id + '-ej2menu-' + elemId + '-popup'\n });\n if (this.hamburgerMode) {\n top = li.offsetHeight;\n li.appendChild(this.popupWrapper);\n }\n else {\n document.body.appendChild(this.popupWrapper);\n }\n this.isNestedOrVertical = this.element.classList.contains('e-vertical') || this.navIdx.length !== 1;\n this.popupObj = this.generatePopup(this.popupWrapper, this.uList, li, this.isNestedOrVertical);\n if (this.template) {\n this.renderReactTemplates();\n }\n if (this.hamburgerMode) {\n this.calculateIndentSize(this.uList, li);\n }\n else {\n if (this.cssClass) {\n addClass([this.popupWrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n this.popupObj.hide();\n }\n if (!this.hamburgerMode && !this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () { _this.triggerBeforeOpen(li, _this.uList, item, e, 0, 0, 'menu'); }, this.hoverDelay);\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, 0, 0, 'menu');\n }\n }\n else {\n this.uList.style.zIndex = this.element.style.zIndex;\n wrapper.appendChild(this.uList);\n if (!this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () { _this.triggerBeforeOpen(li, _this.uList, item, e, top, left, 'none'); }, this.hoverDelay);\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n }\n else {\n this.uList = this.element;\n this.uList.style.zIndex = getZindexPartial(target ? target : this.element).toString();\n if (isNullOrUndefined(e)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var ev = document.createEvent('MouseEvents');\n ev.initEvent(\"click\", true, false);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetEvent = this.copyObject(ev, {});\n targetEvent.target = targetEvent.srcElement = target;\n targetEvent.currentTarget = target;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.triggerBeforeOpen(li, this.uList, item, targetEvent, top, left, 'none');\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n };\n MenuBase.prototype.copyObject = function (source, destination) {\n for (var prop in source) {\n destination[\"\" + prop] = source[\"\" + prop];\n }\n return destination;\n };\n MenuBase.prototype.calculateIndentSize = function (ul, li) {\n var liStyle = getComputedStyle(li);\n var liIndent = parseInt(liStyle.textIndent, 10);\n if (this.navIdx.length < 2 && !li.classList.contains('e-blankicon')) {\n liIndent *= 2;\n }\n else {\n liIndent += (liIndent / 4);\n }\n ul.style.textIndent = liIndent + 'px';\n var blankIconElem = ul.querySelectorAll('.e-blankicon');\n if (blankIconElem && blankIconElem.length) {\n var menuIconElem = ul.querySelector('.e-menu-icon');\n var menuIconElemStyle = getComputedStyle(menuIconElem);\n var blankIconIndent = (parseInt(menuIconElemStyle.marginRight, 10) + menuIconElem.offsetWidth + liIndent);\n for (var i = 0; i < blankIconElem.length; i++) {\n blankIconElem[i].style.textIndent = blankIconIndent + 'px';\n }\n }\n };\n MenuBase.prototype.generatePopup = function (popupWrapper, ul, li, isNestedOrVertical) {\n var _this = this;\n var popupObj = new Popup(popupWrapper, {\n actionOnScroll: this.hamburgerMode ? 'none' : 'reposition',\n relateTo: li,\n collision: this.hamburgerMode ? { X: 'none', Y: 'none' } : { X: isNestedOrVertical ||\n this.enableRtl ? 'none' : 'flip', Y: 'fit' },\n position: (isNestedOrVertical && !this.hamburgerMode) ? { X: 'right', Y: 'top' } : { X: 'left', Y: 'bottom' },\n targetType: 'relative',\n enableRtl: this.enableRtl,\n content: ul,\n open: function () {\n var scrollEle = select('.e-menu-vscroll', popupObj.element);\n if (scrollEle) {\n scrollEle.style.height = 'inherit';\n scrollEle.style.maxHeight = '';\n }\n var ul = select('.e-ul', popupObj.element);\n popupObj.element.style.maxHeight = '';\n ul.focus();\n _this.triggerOpen(ul);\n }\n });\n return popupObj;\n };\n MenuBase.prototype.createHeaderContainer = function (wrapper) {\n wrapper = wrapper || this.getWrapper();\n var spanElem = this.createElement('span', { className: 'e-' + this.getModuleName() + '-header' });\n var tempTitle = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.title) : this.title;\n var spanTitle = this.createElement('span', {\n className: 'e-' + this.getModuleName() + '-title', innerHTML: tempTitle\n });\n var spanIcon = this.createElement('span', {\n className: 'e-icons e-' + this.getModuleName() + '-icon', attrs: { 'tabindex': '0' }\n });\n spanElem.appendChild(spanTitle);\n spanElem.appendChild(spanIcon);\n wrapper.insertBefore(spanElem, this.element);\n };\n MenuBase.prototype.openHamburgerMenu = function (e) {\n if (this.hamburgerMode) {\n this.triggerBeforeOpen(null, this.element, null, e, 0, 0, 'hamburger');\n }\n };\n MenuBase.prototype.closeHamburgerMenu = function (e) {\n var _this = this;\n var beforeCloseArgs = { element: this.element, parentItem: null, event: e,\n items: this.items, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedHamburgerCloseArgs) {\n if (!observedHamburgerCloseArgs.cancel) {\n _this.closeMenu(null, e);\n _this.element.classList.add('e-hide-menu');\n _this.trigger('onClose', { element: _this.element, parentItem: null, items: _this.items });\n }\n });\n };\n MenuBase.prototype.callFit = function (element, x, y, top, left) {\n return fit(element, null, { X: x, Y: y }, { top: top, left: left });\n };\n MenuBase.prototype.triggerBeforeOpen = function (li, ul, item, e, top, left, type) {\n var _this = this;\n var items = li ? item[this.getField('children', this.navIdx.length - 1)] : this.items;\n var eventArgs = {\n element: ul, items: items, parentItem: item, event: e, cancel: false, top: top, left: left, showSubMenuOn: 'Auto'\n };\n var menuType = type;\n this.trigger('beforeOpen', eventArgs, function (observedOpenArgs) {\n switch (menuType) {\n case 'menu':\n if (!_this.hamburgerMode) {\n if (observedOpenArgs.showSubMenuOn !== 'Auto') {\n _this.showItemOnClick = !_this.defaultOption;\n _this.showSubMenuOn = observedOpenArgs.showSubMenuOn;\n }\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n }\n _this.popupWrapper.style.display = 'block';\n if (!_this.hamburgerMode) {\n _this.popupWrapper.style.maxHeight = _this.popupWrapper.getBoundingClientRect().height + 'px';\n if (_this.enableScrolling) {\n addScrolling(_this.createElement, _this.popupWrapper, _this.uList, 'vscroll', _this.enableRtl);\n }\n _this.checkScrollOffset(e);\n }\n if (!_this.hamburgerMode && !_this.left && !_this.top) {\n _this.popupObj.refreshPosition(_this.lItem, true);\n _this.left = parseInt(_this.popupWrapper.style.left, 10);\n _this.top = parseInt(_this.popupWrapper.style.top, 10);\n if (_this.enableRtl) {\n _this.left =\n _this.isNestedOrVertical ? _this.left - _this.popupWrapper.offsetWidth - _this.lItem.parentElement.offsetWidth + 2\n : _this.left - _this.popupWrapper.offsetWidth + _this.lItem.offsetWidth;\n }\n // eslint-disable-next-line\n if (_this.template && (_this.isReact || _this.isAngular)) {\n requestAnimationFrame(function () {\n _this.collision();\n _this.popupWrapper.style.display = '';\n });\n }\n else {\n _this.collision();\n _this.popupWrapper.style.display = '';\n }\n }\n else {\n _this.popupObj.collision = { X: 'none', Y: 'none' };\n _this.popupWrapper.style.display = '';\n }\n break;\n case 'none':\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n break;\n case 'hamburger':\n if (!observedOpenArgs.cancel) {\n _this.element.classList.remove('e-hide-menu');\n _this.triggerOpen(_this.element);\n }\n break;\n }\n if (menuType !== 'hamburger') {\n if (observedOpenArgs.cancel) {\n if (_this.isMenu) {\n _this.popupObj.destroy();\n detach(_this.popupWrapper);\n }\n else if (ul.className.indexOf('e-ul') > -1) {\n detach(ul);\n }\n _this.navIdx.pop();\n }\n else {\n if (_this.isMenu) {\n if (_this.hamburgerMode) {\n _this.popupWrapper.style.top = _this.top + 'px';\n _this.popupWrapper.style.left = 0 + 'px';\n _this.toggleAnimation(_this.popupWrapper);\n }\n else {\n _this.setBlankIconStyle(_this.popupWrapper);\n _this.wireKeyboardEvent(_this.popupWrapper);\n rippleEffect(_this.popupWrapper, { selector: '.' + ITEM });\n _this.popupWrapper.style.left = _this.left + 'px';\n _this.popupWrapper.style.top = _this.top + 'px';\n var animationOptions = _this.animationSettings.effect !== 'None' ? {\n name: _this.animationSettings.effect, duration: _this.animationSettings.duration,\n timingFunction: _this.animationSettings.easing\n } : null;\n _this.popupObj.show(animationOptions, _this.lItem);\n }\n }\n else {\n _this.setBlankIconStyle(_this.uList);\n _this.setPosition(_this.lItem, _this.uList, _this.top, _this.left);\n _this.toggleAnimation(_this.uList);\n }\n }\n }\n if (_this.keyType === 'right') {\n var cul = _this.getUlByNavIdx();\n li.classList.remove(FOCUSED);\n if (_this.isMenu && _this.navIdx.length === 1) {\n _this.removeLIStateByClass([SELECTED], [_this.getWrapper()]);\n }\n li.classList.add(SELECTED);\n if (_this.action === ENTER) {\n var eventArgs_1 = { element: li, item: item, event: e };\n _this.trigger('select', eventArgs_1);\n }\n li.focus();\n cul = _this.getUlByNavIdx();\n var index = _this.isValidLI(cul.children[0], 0, _this.action);\n cul.children[index].classList.add(FOCUSED);\n cul.children[index].focus();\n }\n });\n };\n MenuBase.prototype.collision = function () {\n var collide;\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if ((this.isNestedOrVertical || this.enableRtl) && (collide.indexOf('right') > -1\n || collide.indexOf('left') > -1)) {\n this.popupObj.collision.X = 'none';\n var offWidth = closest(this.lItem, '.e-' + this.getModuleName() + '-wrapper').offsetWidth;\n this.left =\n this.enableRtl ? calculatePosition(this.lItem, this.isNestedOrVertical ? 'right' : 'left', 'top').left\n : this.left - this.popupWrapper.offsetWidth - offWidth + 2;\n }\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if (collide.indexOf('left') > -1 || collide.indexOf('right') > -1) {\n this.left = this.callFit(this.popupWrapper, true, false, this.top, this.left).left;\n }\n this.popupWrapper.style.left = this.left + 'px';\n };\n MenuBase.prototype.setBlankIconStyle = function (menu) {\n var blankIconList = [].slice.call(menu.getElementsByClassName('e-blankicon'));\n if (!blankIconList.length) {\n return;\n }\n var iconLi = menu.querySelector('.e-menu-item:not(.e-blankicon):not(.e-separator)');\n if (!iconLi) {\n return;\n }\n var icon = iconLi.querySelector('.e-menu-icon');\n if (!icon) {\n return;\n }\n var cssProp = this.enableRtl ? { padding: 'paddingRight', margin: 'marginLeft' } :\n { padding: 'paddingLeft', margin: 'marginRight' };\n var iconCssProps = getComputedStyle(icon);\n var iconSize = parseInt(iconCssProps.fontSize, 10);\n if (!!parseInt(iconCssProps.width, 10) && parseInt(iconCssProps.width, 10) > iconSize) {\n iconSize = parseInt(iconCssProps.width, 10);\n }\n // eslint:disable\n var size = iconSize + parseInt(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n iconCssProps[cssProp.margin], 10) + parseInt(getComputedStyle(iconLi)[cssProp.padding], 10) + \"px\";\n blankIconList.forEach(function (li) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n li.style[cssProp.padding] = size;\n });\n // eslint:enable\n };\n MenuBase.prototype.checkScrollOffset = function (e) {\n var wrapper = this.getWrapper();\n if (wrapper.children[0].classList.contains('e-menu-hscroll') && this.navIdx.length === 1) {\n var trgt = isNullOrUndefined(e) ? this.element : closest(e.target, '.' + ITEM);\n var offsetEle = select('.e-hscroll-bar', wrapper);\n if (offsetEle.scrollLeft > trgt.offsetLeft) {\n offsetEle.scrollLeft -= (offsetEle.scrollLeft - trgt.offsetLeft);\n }\n var offsetLeft = offsetEle.scrollLeft + offsetEle.offsetWidth;\n var offsetRight = trgt.offsetLeft + trgt.offsetWidth;\n if (offsetLeft < offsetRight) {\n offsetEle.scrollLeft += (offsetRight - offsetLeft);\n }\n }\n };\n MenuBase.prototype.setPosition = function (li, ul, top, left) {\n var px = 'px';\n this.toggleVisiblity(ul);\n if (ul === this.element || (left > -1 && top > -1)) {\n var collide = isCollide(ul, null, left, top);\n if (collide.indexOf('right') > -1) {\n left = left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n var offset = this.callFit(ul, false, true, top, left);\n top = offset.top - 20;\n if (top < 0) {\n var newTop = (pageYOffset + document.documentElement.clientHeight) - ul.getBoundingClientRect().height;\n if (newTop > -1) {\n top = newTop;\n }\n }\n }\n collide = isCollide(ul, null, left, top);\n if (collide.indexOf('left') > -1) {\n var offset = this.callFit(ul, true, false, top, left);\n left = offset.left;\n }\n }\n else {\n if (Browser.isDevice) {\n top = Number(this.element.style.top.replace(px, ''));\n left = Number(this.element.style.left.replace(px, ''));\n }\n else {\n var x = this.enableRtl ? 'left' : 'right';\n var offset = calculatePosition(li, x, 'top');\n top = offset.top;\n left = offset.left;\n var collide = isCollide(ul, null, this.enableRtl ? left - ul.offsetWidth : left, top);\n var xCollision = collide.indexOf('left') > -1 || collide.indexOf('right') > -1;\n if (xCollision) {\n offset = calculatePosition(li, this.enableRtl ? 'right' : 'left', 'top');\n left = offset.left;\n }\n if (this.enableRtl || xCollision) {\n left = (this.enableRtl && xCollision) ? left : left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n offset = this.callFit(ul, false, true, top, left);\n top = offset.top;\n }\n }\n }\n this.toggleVisiblity(ul, false);\n ul.style.top = top + px;\n ul.style.left = left + px;\n };\n MenuBase.prototype.toggleVisiblity = function (ul, isVisible) {\n if (isVisible === void 0) { isVisible = true; }\n ul.style.visibility = isVisible ? 'hidden' : '';\n ul.style.display = isVisible ? 'block' : 'none';\n };\n MenuBase.prototype.createItems = function (items) {\n var _this = this;\n var level = this.navIdx ? this.navIdx.length : 0;\n var fields = this.getFields(level);\n var showIcon = this.hasField(items, this.getField('iconCss', level));\n var listBaseOptions = {\n showIcon: showIcon,\n moduleName: 'menu',\n fields: fields,\n template: this.template,\n itemNavigable: true,\n itemCreating: function (args) {\n if (!args.curData[args.fields[fields.id]]) {\n args.curData[args.fields[fields.id]] = getUniqueID('menuitem');\n }\n if (isNullOrUndefined(args.curData.htmlAttributes)) {\n args.curData.htmlAttributes = {};\n }\n if (Browser.isIE) {\n args.curData.htmlAttributes.role = 'menuitem';\n args.curData.htmlAttributes.tabindex = '-1';\n }\n else {\n Object.assign(args.curData.htmlAttributes, { role: 'menuitem', tabindex: '-1' });\n }\n if (_this.isMenu && !args.curData[_this.getField('separator', level)]) {\n args.curData.htmlAttributes['aria-label'] = args.curData[args.fields.text] ?\n args.curData[args.fields.text] : args.curData[args.fields.id];\n }\n if (args.curData[args.fields[fields.iconCss]] === '') {\n args.curData[args.fields[fields.iconCss]] = null;\n }\n },\n itemCreated: function (args) {\n if (args.curData[_this.getField('separator', level)]) {\n args.item.classList.add(SEPARATOR);\n args.item.setAttribute('role', 'separator');\n }\n if (showIcon && !args.curData[args.fields.iconCss]\n && !args.curData[_this.getField('separator', level)]) {\n args.item.classList.add('e-blankicon');\n }\n if (args.curData[args.fields.child]\n && args.curData[args.fields.child].length) {\n var span = _this.createElement('span', { className: ICONS + ' ' + CARET });\n args.item.appendChild(span);\n args.item.setAttribute('aria-haspopup', 'true');\n args.item.setAttribute('aria-expanded', 'false');\n args.item.classList.add('e-menu-caret-icon');\n }\n if (_this.isMenu && _this.template) {\n args.item.setAttribute('id', args.curData[args.fields.id].toString());\n args.item.removeAttribute('data-uid');\n if (args.item.classList.contains('e-level-1')) {\n args.item.classList.remove('e-level-1');\n }\n if (args.item.classList.contains('e-has-child')) {\n args.item.classList.remove('e-has-child');\n }\n args.item.removeAttribute('aria-level');\n }\n var eventArgs = { item: args.curData, element: args.item };\n _this.trigger('beforeItemRender', eventArgs);\n }\n };\n this.setProperties({ 'items': this.items }, true);\n if (this.isMenu) {\n listBaseOptions.templateID = this.element.id + TEMPLATE_PROPERTY;\n }\n var ul = ListBase.createList(this.createElement, items, listBaseOptions, !this.template, this);\n ul.setAttribute('tabindex', '0');\n if (this.isMenu) {\n ul.setAttribute('role', 'menu');\n }\n else {\n ul.setAttribute('role', 'menubar');\n }\n return ul;\n };\n MenuBase.prototype.moverHandler = function (e) {\n var trgt = e.target;\n this.liTrgt = trgt;\n var cli = this.getLI(trgt);\n var wrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : this.getWrapper();\n var hdrWrapper = this.getWrapper();\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var ulId;\n var isDifferentElem = false;\n if (!wrapper) {\n return;\n }\n if (wrapper.id !== '') {\n ulId = regex.exec(wrapper.id)[1];\n }\n else {\n ulId = wrapper.querySelector('ul').id;\n }\n if (ulId !== this.element.id) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [this.getWrapper()]);\n if (this.navIdx.length) {\n isDifferentElem = true;\n }\n else {\n return;\n }\n }\n if (cli && closest(cli, '.e-' + this.getModuleName() + '-wrapper') && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [wrapper].concat(this.getPopups()) : [wrapper]);\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [hdrWrapper].concat(this.getPopups()) : [hdrWrapper]);\n cli.classList.add(FOCUSED);\n if (!this.showItemOnClick) {\n this.clickHandler(e);\n }\n }\n else if (this.isMenu && this.showItemOnClick && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n }\n if (this.isMenu) {\n if (!this.showItemOnClick && (trgt.parentElement !== wrapper && !closest(trgt, '.e-' + this.getModuleName() + '-popup'))\n && (!cli || (cli && !this.getIndex(cli.id, true).length)) && this.showSubMenuOn !== 'Hover') {\n this.removeLIStateByClass([FOCUSED], [wrapper]);\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n else if (isDifferentElem && !this.showItemOnClick) {\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n if (!this.isClosed) {\n this.removeStateWrapper();\n }\n this.isClosed = false;\n }\n };\n MenuBase.prototype.removeStateWrapper = function () {\n if (this.liTrgt) {\n var wrapper = closest(this.liTrgt, '.e-menu-vscroll');\n if (this.liTrgt.tagName === 'DIV' && wrapper) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [wrapper]);\n }\n }\n };\n MenuBase.prototype.removeLIStateByClass = function (classList, element) {\n var li;\n var _loop_1 = function (i) {\n classList.forEach(function (className) {\n li = select('.' + className, element[i]);\n if (li) {\n li.classList.remove(className);\n }\n });\n };\n for (var i = 0; i < element.length; i++) {\n _loop_1(i);\n }\n };\n MenuBase.prototype.getField = function (propName, level) {\n if (level === void 0) { level = 0; }\n var fieldName = this.fields[\"\" + propName];\n return typeof fieldName === 'string' ? fieldName :\n (!fieldName[level] ? fieldName[fieldName.length - 1].toString()\n : fieldName[level].toString());\n };\n MenuBase.prototype.getFields = function (level) {\n if (level === void 0) { level = 0; }\n return {\n id: this.getField('itemId', level),\n iconCss: this.getField('iconCss', level),\n text: this.getField('text', level),\n url: this.getField('url', level),\n child: this.getField('children', level),\n separator: this.getField('separator', level)\n };\n };\n MenuBase.prototype.hasField = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][\"\" + field]) {\n return true;\n }\n }\n return false;\n };\n MenuBase.prototype.menuHeaderClickHandler = function (e) {\n if (closest(e.target, '.e-menu-wrapper').querySelector('ul.e-menu-parent').id !== this.element.id) {\n return;\n }\n if (this.element.className.indexOf('e-hide-menu') > -1) {\n this.openHamburgerMenu(e);\n }\n else {\n this.closeHamburgerMenu(e);\n }\n };\n MenuBase.prototype.clickHandler = function (e) {\n if (this.isTapHold) {\n this.isTapHold = false;\n }\n else {\n var wrapper = this.getWrapper();\n var trgt = e.target;\n var cli = this.cli = this.getLI(trgt);\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var cliWrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : null;\n var isInstLI = cli && cliWrapper && (this.isMenu ? this.getIndex(cli.id, true).length > 0\n : wrapper.firstElementChild.id === cliWrapper.firstElementChild.id);\n if (Browser.isDevice && this.isMenu) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n this.mouseDownHandler(e);\n }\n if (cli && cliWrapper && this.isMenu) {\n var cliWrapperId = cliWrapper.id ? regex.exec(cliWrapper.id)[1] : cliWrapper.querySelector('.e-menu-parent').id;\n if (this.element.id !== cliWrapperId) {\n return;\n }\n }\n if (isInstLI && e.type === 'click' && !cli.classList.contains(HEADER)) {\n this.setLISelected(cli);\n var navIdx = this.getIndex(cli.id, true);\n var item = this.getItem(navIdx);\n var eventArgs = { element: cli, item: item, event: e };\n this.trigger('select', eventArgs);\n }\n if (isInstLI && (e.type === 'mouseover' || Browser.isDevice || this.showItemOnClick)) {\n var ul = void 0;\n if (cli.classList.contains(HEADER)) {\n ul = wrapper.children[this.navIdx.length - 1];\n this.toggleAnimation(ul);\n var sli = this.getLIByClass(ul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n detach(cli.parentNode);\n this.navIdx.pop();\n }\n else {\n if (!cli.classList.contains(SEPARATOR)) {\n this.showSubMenu = true;\n var cul = cli.parentNode;\n this.cliIdx = this.getIdx(cul, cli);\n if (this.isMenu || !Browser.isDevice) {\n var culIdx = this.isMenu ? Array.prototype.indexOf.call([wrapper].concat(this.getPopups()), closest(cul, '.' + 'e-' + this.getModuleName() + '-wrapper'))\n : this.getIdx(wrapper, cul);\n if (this.navIdx[culIdx] === this.cliIdx) {\n this.showSubMenu = false;\n }\n if (culIdx !== this.navIdx.length && (e.type !== 'mouseover' || this.showSubMenu)) {\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n this.isClosed = true;\n this.keyType = 'click';\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n }\n this.closeMenu(culIdx + 1, e);\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n }\n }\n }\n if (!this.isClosed) {\n this.afterCloseMenu(e);\n }\n this.isClosed = false;\n }\n }\n }\n else {\n if (this.isMenu && trgt.tagName === 'DIV' && this.navIdx.length && closest(trgt, '.e-menu-vscroll')) {\n var popupEle = closest(trgt, '.' + POPUP);\n var cIdx = Array.prototype.indexOf.call(this.getPopups(), popupEle) + 1;\n if (cIdx < this.navIdx.length) {\n this.closeMenu(cIdx + 1, e);\n if (popupEle) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [popupEle]);\n }\n }\n }\n else if (this.isMenu && this.hamburgerMode && trgt.tagName === 'SPAN'\n && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n if (trgt.tagName !== 'UL' || (this.isMenu ? trgt.parentElement.classList.contains('e-menu-wrapper') &&\n !this.getIndex(trgt.querySelector('.' + ITEM).id, true).length : trgt.parentElement !== wrapper)) {\n if (!cli) {\n this.removeLIStateByClass([SELECTED], [wrapper]);\n }\n if (!cli || !cli.querySelector('.' + CARET)) {\n this.closeMenu(null, e);\n }\n }\n }\n }\n }\n };\n MenuBase.prototype.afterCloseMenu = function (e) {\n if (isNullOrUndefined(e)) {\n return;\n }\n var isHeader;\n if (this.showSubMenu) {\n if (this.showItemOnClick && this.navIdx.length === 0) {\n isHeader = closest(e.target, '.e-menu-parent.e-control');\n }\n else {\n isHeader = closest(this.element, '.e-menu-parent.e-control');\n }\n var idx = this.navIdx.concat(this.cliIdx);\n var item = this.getItem(idx);\n if (item && item[this.getField('children', idx.length - 1)] &&\n item[this.getField('children', idx.length - 1)].length) {\n if (e.type === 'mouseover' || (Browser.isDevice && this.isMenu)) {\n this.setLISelected(this.cli);\n }\n if ((!this.hamburgerMode && isHeader) || (this.hamburgerMode && this.cli.getAttribute('aria-expanded') === 'false')) {\n this.cli.setAttribute('aria-expanded', 'true');\n this.navIdx.push(this.cliIdx);\n this.openMenu(this.cli, item, null, null, e);\n }\n }\n else {\n if (e.type !== 'mouseover') {\n this.closeMenu(null, e);\n }\n }\n if (!isHeader) {\n var cul = this.getUlByNavIdx();\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.setAttribute('aria-expanded', 'false');\n sli.classList.remove(SELECTED);\n }\n }\n }\n this.keyType = '';\n };\n MenuBase.prototype.setLISelected = function (li) {\n var sli = this.getLIByClass(li.parentElement, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n if (!this.isMenu) {\n li.classList.remove(FOCUSED);\n }\n li.classList.add(SELECTED);\n };\n MenuBase.prototype.getLIByClass = function (ul, classname) {\n for (var i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains(classname)) {\n return ul.children[i];\n }\n }\n return null;\n };\n /**\n * This method is used to get the index of the menu item in the Menu based on the argument.\n *\n * @param {MenuItem | string} item - item be passed to get the index | id to be passed to get the item index.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.getItemIndex = function (item, isUniqueId) {\n var idx;\n if (typeof item === 'string') {\n idx = item;\n }\n else {\n idx = item.id;\n }\n var isText = (isUniqueId === false) ? false : true;\n var navIdx = this.getIndex(idx, isText);\n return navIdx;\n };\n /**\n * This method is used to set the menu item in the Menu based on the argument.\n *\n * @param {MenuItem} item - item need to be updated.\n * @param {string} id - id / text to be passed to update the item.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.setItem = function (item, id, isUniqueId) {\n var idx;\n if (isUniqueId) {\n idx = id ? id : item.id;\n }\n else {\n idx = id ? id : item.text;\n }\n var navIdx = this.getIndex(idx, isUniqueId);\n var newItem = this.getItem(navIdx);\n Object.assign(newItem, item);\n };\n MenuBase.prototype.getItem = function (navIdx) {\n navIdx = navIdx.slice();\n var idx = navIdx.pop();\n var items = this.getItems(navIdx);\n return items[idx];\n };\n MenuBase.prototype.getItems = function (navIdx) {\n var items = this.items;\n for (var i = 0; i < navIdx.length; i++) {\n items = items[navIdx[i]][this.getField('children', i)];\n }\n return items;\n };\n MenuBase.prototype.setItems = function (newItems, navIdx) {\n var items = this.getItems(navIdx);\n items.splice(0, items.length);\n for (var i = 0; i < newItems.length; i++) {\n items.splice(i, 0, newItems[i]);\n }\n };\n MenuBase.prototype.getIdx = function (ul, li, skipHdr) {\n if (skipHdr === void 0) { skipHdr = true; }\n var idx = Array.prototype.indexOf.call(ul.children, li);\n if (skipHdr && ul.children[0].classList.contains(HEADER)) {\n idx--;\n }\n return idx;\n };\n MenuBase.prototype.getLI = function (elem) {\n if (elem.tagName === 'LI' && elem.classList.contains('e-menu-item')) {\n return elem;\n }\n return closest(elem, 'li.e-menu-item');\n };\n MenuBase.prototype.updateItemsByNavIdx = function () {\n var items = this.items;\n var count = 0;\n for (var index = 0; index < this.navIdx.length; index++) {\n items = items[index].items;\n if (!items) {\n break;\n }\n count++;\n var ul = this.getUlByNavIdx(count);\n if (!ul) {\n break;\n }\n this.updateItem(ul, items);\n }\n };\n MenuBase.prototype.removeChildElement = function (elem) {\n while (elem.firstElementChild) {\n elem.removeChild(elem.firstElementChild);\n }\n return elem;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {MenuBaseModel} newProp - Specifies the new properties\n * @param {MenuBaseModel} oldProp - Specifies the old properties\n * @returns {void}\n */\n MenuBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n var wrapper = this.getWrapper();\n var _loop_2 = function (prop) {\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n wrapper.classList.toggle(RTL);\n break;\n case 'showItemOnClick':\n this_1.unWireEvents();\n this_1.showItemOnClick = newProp.showItemOnClick;\n this_1.wireEvents();\n break;\n case 'enableScrolling':\n if (newProp.enableScrolling) {\n var ul_2;\n if (this_1.element.classList.contains('e-vertical')) {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'vscroll', this_1.enableRtl);\n }\n else {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'hscroll', this_1.enableRtl);\n }\n this_1.getPopups().forEach(function (wrapper) {\n ul_2 = select('.e-ul', wrapper);\n addScrolling(_this.createElement, wrapper, ul_2, 'vscroll', _this.enableRtl);\n });\n }\n else {\n var ul_3 = wrapper.children[0];\n if (this_1.element.classList.contains('e-vertical')) {\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n }\n else {\n destroyScroll(getInstance(ul_3, HScroll), ul_3);\n }\n wrapper.style.overflow = '';\n wrapper.appendChild(this_1.element);\n this_1.getPopups().forEach(function (wrapper) {\n ul_3 = wrapper.children[0];\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n wrapper.style.overflow = '';\n });\n }\n break;\n case 'items': {\n var idx = void 0;\n var navIdx = void 0;\n var item = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this_1.isReact && this_1.template) {\n this_1.clearTemplate(['template']);\n }\n if (!Object.keys(oldProp.items).length) {\n this_1.updateItem(this_1.element, this_1.items);\n if (this_1.enableScrolling && this_1.element.parentElement.classList.contains('e-custom-scroll')) {\n if (this_1.element.classList.contains('e-vertical')) {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'vscroll', this_1.enableRtl);\n }\n else {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'hscroll', this_1.enableRtl);\n }\n }\n if (!this_1.hamburgerMode) {\n for (var i = 1, count = wrapper.childElementCount; i < count; i++) {\n detach(wrapper.lastElementChild);\n }\n }\n this_1.navIdx = [];\n }\n else {\n var keys = Object.keys(newProp.items);\n for (var i = 0; i < keys.length; i++) {\n navIdx = this_1.getChangedItemIndex(newProp, [], Number(keys[i]));\n if (navIdx.length <= this_1.getWrapper().children.length) {\n idx = navIdx.pop();\n item = this_1.getItems(navIdx);\n this_1.insertAfter([item[idx]], item[idx].text);\n this_1.removeItem(item, navIdx, idx);\n this_1.setItems(item, navIdx);\n }\n navIdx.length = 0;\n }\n }\n break;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_2(prop);\n }\n };\n MenuBase.prototype.updateItem = function (ul, items) {\n if (isBlazor() && !this.isMenu) {\n ul = this.removeChildElement(ul);\n }\n else {\n if (this.enableScrolling) {\n var wrapper1 = this.getWrapper();\n var ul1 = wrapper1.children[0];\n if (this.element.classList.contains('e-vertical')) {\n destroyScroll(getInstance(ul1, VScroll), ul1);\n }\n else {\n destroyScroll(getInstance(ul1, HScroll), ul1);\n }\n }\n ul.innerHTML = '';\n }\n var lis = [].slice.call(this.createItems(items).children);\n lis.forEach(function (li) {\n ul.appendChild(li);\n });\n };\n MenuBase.prototype.getChangedItemIndex = function (newProp, index, idx) {\n index.push(idx);\n var key = Object.keys(newProp.items[idx]).pop();\n if (key === 'items') {\n var item = newProp.items[idx];\n var popStr = Object.keys(item.items).pop();\n if (popStr) {\n this.getChangedItemIndex(item, index, Number(popStr));\n }\n }\n else {\n if (key === 'isParentArray' && index.length > 1) {\n index.pop();\n }\n }\n return index;\n };\n MenuBase.prototype.removeItem = function (item, navIdx, idx) {\n item.splice(idx, 1);\n var uls = this.getWrapper().children;\n if (navIdx.length < uls.length) {\n detach(uls[navIdx.length].children[idx]);\n }\n };\n /**\n * Used to unwire the bind events.\n *\n * @private\n * @param {string} targetSelctor - Specifies the target selector\n * @returns {void}\n */\n MenuBase.prototype.unWireEvents = function (targetSelctor) {\n if (targetSelctor === void 0) { targetSelctor = this.target; }\n var wrapper = this.getWrapper();\n if (targetSelctor) {\n var target = void 0;\n var touchModule = void 0;\n var targetElems = selectAll(targetSelctor);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.remove(target, 'click', this.menuHeaderClickHandler);\n }\n else {\n if (Browser.isIos) {\n touchModule = getInstance(target, Touch);\n if (touchModule) {\n touchModule.destroy();\n }\n }\n else {\n EventHandler.remove(target, 'contextmenu', this.cmenuHandler);\n }\n }\n }\n if (!this.isMenu) {\n EventHandler.remove(this.targetElement, 'scroll', this.scrollHandler);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'scroll', this.scrollHandler);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.remove(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler);\n EventHandler.remove(document, 'mousedown', this.delegateMouseDownHandler);\n }\n EventHandler.remove(document, 'click', this.delegateClickHandler);\n this.unWireKeyboardEvent(wrapper);\n this.rippleFn();\n };\n MenuBase.prototype.unWireKeyboardEvent = function (element) {\n var keyboardModule = getInstance(element, KeyboardEvents);\n if (keyboardModule) {\n keyboardModule.destroy();\n }\n };\n MenuBase.prototype.toggleAnimation = function (ul, isMenuOpen) {\n var _this = this;\n if (isMenuOpen === void 0) { isMenuOpen = true; }\n var pUlHeight;\n var pElement;\n if (this.animationSettings.effect === 'None' || !isMenuOpen) {\n this.end(ul, isMenuOpen);\n }\n else {\n this.animation.animate(ul, {\n name: this.animationSettings.effect,\n duration: this.animationSettings.duration,\n timingFunction: this.animationSettings.easing,\n begin: function (options) {\n if (_this.hamburgerMode) {\n pElement = options.element.parentElement;\n options.element.style.position = 'absolute';\n pUlHeight = pElement.offsetHeight;\n options.element.style.maxHeight = options.element.offsetHeight + 'px';\n pElement.style.maxHeight = '';\n }\n else {\n options.element.style.display = 'block';\n options.element.style.maxHeight = options.element.getBoundingClientRect().height + 'px';\n }\n },\n progress: function (options) {\n if (_this.hamburgerMode) {\n pElement.style.minHeight = (pUlHeight + options.element.offsetHeight) + 'px';\n }\n },\n end: function (options) {\n if (_this.hamburgerMode) {\n options.element.style.position = '';\n options.element.style.maxHeight = '';\n pElement.style.minHeight = '';\n options.element.style.top = 0 + 'px';\n options.element.children[0].focus();\n _this.triggerOpen(options.element.children[0]);\n }\n else {\n _this.end(options.element, isMenuOpen);\n }\n }\n });\n }\n };\n MenuBase.prototype.triggerOpen = function (ul) {\n var item = this.navIdx.length ? this.getItem(this.navIdx) : null;\n var eventArgs = {\n element: ul, parentItem: item, items: item ? item.items : this.items\n };\n this.trigger('onOpen', eventArgs);\n if (!this.isMenu) {\n EventHandler.add(ul, 'keydown', this.keyHandler, this);\n }\n };\n MenuBase.prototype.end = function (ul, isMenuOpen) {\n if (isMenuOpen) {\n ul.style.display = 'block';\n ul.style.maxHeight = '';\n this.triggerOpen(ul);\n if (ul.querySelector('.' + FOCUSED)) {\n ul.querySelector('.' + FOCUSED).focus();\n }\n else {\n var ele = this.getWrapper().children[this.getIdx(this.getWrapper(), ul) - 1];\n if (this.currentTarget) {\n if (!(this.currentTarget.classList.contains('e-numerictextbox') || this.currentTarget.classList.contains('e-textbox') || this.currentTarget.tagName === 'INPUT')) {\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n else {\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n }\n else {\n if (ul === this.element) {\n var fli = this.getLIByClass(this.element, FOCUSED);\n if (fli) {\n fli.classList.remove(FOCUSED);\n }\n var sli = this.getLIByClass(this.element, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n ul.style.display = 'none';\n }\n else {\n detach(ul);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n MenuBase.prototype.getPersistData = function () {\n return '';\n };\n /**\n * Get wrapper element.\n *\n * @returns {Element} - Wrapper element\n * @private\n */\n MenuBase.prototype.getWrapper = function () {\n return closest(this.element, '.e-' + this.getModuleName() + '-wrapper');\n };\n MenuBase.prototype.getIndex = function (data, isUniqueId, items, nIndex, isCallBack, level) {\n if (items === void 0) { items = this.items; }\n if (nIndex === void 0) { nIndex = []; }\n if (isCallBack === void 0) { isCallBack = false; }\n if (level === void 0) { level = 0; }\n var item;\n level = isCallBack ? level + 1 : 0;\n for (var i = 0, len = items.length; i < len; i++) {\n item = items[i];\n if ((isUniqueId ? item[this.getField('itemId', level)] : item[this.getField('text', level)]) === data) {\n nIndex.push(i);\n break;\n }\n else if (item[this.getField('children', level)]\n && item[this.getField('children', level)].length) {\n nIndex = this.getIndex(data, isUniqueId, item[this.getField('children', level)], nIndex, true, level);\n if (nIndex[nIndex.length - 1] === -1) {\n if (i !== len - 1) {\n nIndex.pop();\n }\n }\n else {\n nIndex.unshift(i);\n break;\n }\n }\n else {\n if (i === len - 1) {\n nIndex.push(-1);\n }\n }\n }\n return (!isCallBack && nIndex[0] === -1) ? [] : nIndex;\n };\n /**\n * This method is used to enable or disable the menu items in the Menu based on the items and enable argument.\n *\n * @param {string[]} items - Text items that needs to be enabled/disabled.\n * @param {boolean} enable - Set `true`/`false` to enable/disable the list items.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.enableItems = function (items, enable, isUniqueId) {\n if (enable === void 0) { enable = true; }\n var ul;\n var idx;\n var navIdx;\n var disabled = DISABLED;\n var skipItem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n if (this.navIdx.length) {\n if (navIdx.length !== 1) {\n skipItem = false;\n for (var i_1 = 0, len = navIdx.length - 1; i_1 < len; i_1++) {\n if (navIdx[i_1] !== this.navIdx[i_1]) {\n skipItem = true;\n break;\n }\n }\n if (skipItem) {\n continue;\n }\n }\n }\n else {\n if (navIdx.length !== 1) {\n continue;\n }\n }\n idx = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n if (ul && !isNullOrUndefined(idx)) {\n if (enable) {\n if (this.isMenu) {\n ul.children[idx].classList.remove(disabled);\n ul.children[idx].removeAttribute('aria-disabled');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.remove(disabled);\n }\n else {\n ul.children[idx].classList.remove(disabled);\n }\n }\n }\n else {\n if (this.isMenu) {\n ul.children[idx].classList.add(disabled);\n ul.children[idx].setAttribute('aria-disabled', 'true');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.add(disabled);\n }\n else {\n ul.children[idx].classList.add(disabled);\n }\n }\n }\n }\n }\n };\n /**\n * This method is used to show the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be shown.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.showItems = function (items, isUniqueId) {\n this.showHideItems(items, false, isUniqueId);\n };\n /**\n * This method is used to hide the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be hidden.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.hideItems = function (items, isUniqueId) {\n this.showHideItems(items, true, isUniqueId);\n };\n MenuBase.prototype.showHideItems = function (items, ishide, isUniqueId) {\n var ul;\n var index;\n var navIdx;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n index = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n if (ul) {\n var validUl = isUniqueId ? ul.children[index].id : ul.children[index].textContent;\n if (ishide && validUl === items[i]) {\n ul.children[index].classList.add(HIDE);\n }\n else {\n ul.children[index].classList.remove(HIDE);\n }\n }\n }\n };\n /**\n * It is used to remove the menu items from the Menu based on the items text.\n *\n * @param {string[]} items Text items that needs to be removed.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.removeItems = function (items, isUniqueId) {\n var idx;\n var navIdx;\n var iitems;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n if (!isNullOrUndefined(idx)) {\n this.removeItem(iitems, navIdx, idx);\n }\n }\n };\n /**\n * It is used to insert the menu items after the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item after that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertAfter = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId);\n };\n /**\n * It is used to insert the menu items before the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item before that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertBefore = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId, false);\n };\n MenuBase.prototype.insertItems = function (items, text, isUniqueId, isAfter) {\n if (isAfter === void 0) { isAfter = true; }\n var li;\n var idx;\n var navIdx;\n var iitems;\n var menuitem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(text, isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n menuitem = new MenuItem(iitems[0], 'items', items[i], true);\n iitems.splice(isAfter ? idx + 1 : idx, 0, menuitem);\n var uls = this.isMenu ? [this.getWrapper()].concat(this.getPopups()) : [].slice.call(this.getWrapper().children);\n if (!isNullOrUndefined(idx) && navIdx.length < uls.length) {\n idx = isAfter ? idx + 1 : idx;\n li = this.createItems(iitems).children[idx];\n var ul = this.isMenu ? select('.e-menu-parent', uls[navIdx.length]) : uls[navIdx.length];\n ul.insertBefore(li, ul.children[idx]);\n }\n }\n };\n MenuBase.prototype.removeAttributes = function () {\n var _this = this;\n ['top', 'left', 'display', 'z-index'].forEach(function (key) {\n _this.element.style.removeProperty(key);\n });\n ['role', 'tabindex', 'class', 'style'].forEach(function (key) {\n if (key === 'class' && _this.element.classList.contains('e-menu-parent')) {\n _this.element.classList.remove('e-menu-parent');\n }\n if (['class', 'style'].indexOf(key) === -1 || !_this.element.getAttribute(key)) {\n _this.element.removeAttribute(key);\n }\n if (_this.isMenu && key === 'class' && _this.element.classList.contains('e-vertical')) {\n _this.element.classList.remove('e-vertical');\n }\n });\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n MenuBase.prototype.destroy = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n this.unWireEvents();\n if (!this.isMenu) {\n this.clonedElement.style.display = '';\n if (this.clonedElement.tagName === 'EJS-CONTEXTMENU') {\n addClass([this.clonedElement], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.element = this.clonedElement;\n }\n else {\n if (this.refreshing && this.clonedElement.childElementCount && this.clonedElement.children[0].tagName === 'LI') {\n this.setProperties({ 'items': [] }, true);\n }\n if (document.getElementById(this.clonedElement.id)) {\n var refEle = this.clonedElement.nextElementSibling;\n if (refEle && refEle !== wrapper) {\n this.clonedElement.parentElement.insertBefore(this.element, refEle);\n }\n else {\n this.clonedElement.parentElement.appendChild(this.element);\n }\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n append([].slice.call(this.clonedElement.children), this.element);\n detach(this.clonedElement);\n this.removeAttributes();\n }\n }\n this.clonedElement = null;\n }\n else {\n this.closeMenu();\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n this.removeAttributes();\n wrapper.parentNode.insertBefore(this.element, wrapper);\n this.clonedElement = null;\n }\n if (this.isMenu && this.clonedElement) {\n detach(this.element);\n wrapper.style.display = '';\n wrapper.classList.remove('e-' + this.getModuleName() + '-wrapper');\n wrapper.removeAttribute('data-ripple');\n }\n else {\n detach(wrapper);\n }\n _super.prototype.destroy.call(this);\n if (this.template) {\n this.clearTemplate(['template']);\n }\n }\n this.rippleFn = null;\n };\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"created\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(0)\n ], MenuBase.prototype, \"hoverDelay\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"filter\", void 0);\n __decorate([\n Property(null)\n ], MenuBase.prototype, \"template\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"enableScrolling\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Complex({ itemId: 'id', text: 'text', parentId: 'parentId', iconCss: 'iconCss', url: 'url', separator: 'separator', children: 'items' }, FieldSettings)\n ], MenuBase.prototype, \"fields\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuBase.prototype, \"items\", void 0);\n __decorate([\n Complex({ duration: 400, easing: 'ease', effect: 'SlideDown' }, MenuAnimationSettings)\n ], MenuBase.prototype, \"animationSettings\", void 0);\n MenuBase = __decorate([\n NotifyPropertyChanges\n ], MenuBase);\n return MenuBase;\n}(Component));\nexport { MenuBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/triple-slash-reference */\n/// \nimport { attributes, getUniqueID, Collection, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { getZindexPartial } from '@syncfusion/ej2-popups';\nimport { MenuBase, MenuItem } from '../common/menu-base';\n/**\n * The ContextMenu is a graphical user interface that appears on the user right click/touch hold operation.\n * ```html\n *
\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar ContextMenu = /** @class */ (function (_super) {\n __extends(ContextMenu, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {ContextMenuModel} options - Specifies the context menu model\n * @param {string} element - Specifies the element\n */\n function ContextMenu(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * For internal use only - prerender processing.\n *\n * @private\n * @returns {void}\n */\n ContextMenu.prototype.preRender = function () {\n this.isMenu = false;\n this.element.id = this.element.id || getUniqueID('ej2-contextmenu');\n _super.prototype.preRender.call(this);\n };\n ContextMenu.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n attributes(this.element, { 'role': 'menubar', 'tabindex': '0' });\n this.element.style.zIndex = getZindexPartial(this.element).toString();\n };\n /**\n * This method is used to open the ContextMenu in specified position.\n *\n * @param {number} top - To specify ContextMenu vertical positioning.\n * @param {number} left - To specify ContextMenu horizontal positioning.\n * @param {HTMLElement} target - To calculate z-index for ContextMenu based upon the specified target.\n * @function open\n * @returns {void}\n */\n ContextMenu.prototype.open = function (top, left, target) {\n _super.prototype.openMenu.call(this, null, null, top, left, null, target);\n };\n /**\n * Closes the ContextMenu if it is opened.\n *\n * @function close\n * @returns {void}\n */\n ContextMenu.prototype.close = function () {\n _super.prototype.closeMenu.call(this);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {ContextMenuModel} newProp - Specifies new properties\n * @param {ContextMenuModel} oldProp - Specifies old properties\n * @returns {void}\n */\n ContextMenu.prototype.onPropertyChanged = function (newProp, oldProp) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'filter':\n this.close();\n this.filter = newProp.filter;\n break;\n case 'target':\n this.unWireEvents(oldProp.target);\n this.wireEvents();\n break;\n }\n }\n };\n /**\n * Get module name.\n *\n * @returns {string} - Module Name\n * @private\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n __decorate([\n Property('')\n ], ContextMenu.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], ContextMenu.prototype, \"filter\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], ContextMenu.prototype, \"items\", void 0);\n ContextMenu = __decorate([\n NotifyPropertyChanges\n ], ContextMenu);\n return ContextMenu;\n}(MenuBase));\nexport { ContextMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { EventHandler, remove, Browser } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Query, DataManager, Predicate } from '@syncfusion/ej2-data';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { DropDownList, AutoComplete } from '@syncfusion/ej2-dropdowns';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { RadioButton, CheckBox } from '@syncfusion/ej2-buttons';\nimport { distinctStringValues, isComplexField, getComplexFieldID, getCustomDateFormat, applyBiggerTheme, performComplexDataOperation, registerEventHandlers, removeEventHandlers, clearReactVueTemplates } from '../base/util';\nimport { DatePicker, DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { parentsUntil, appendChildren, extend, eventPromise } from '../base/util';\nimport * as events from '../base/constant';\nimport { ContextMenu } from '@syncfusion/ej2-navigations';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\nimport * as literals from '../base/string-literals';\n/**\n * @hidden\n * `ExcelFilter` module is used to handle filtering action.\n */\nvar ExcelFilterBase = /** @class */ (function (_super) {\n __extends(ExcelFilterBase, _super);\n /**\n * Constructor for excel filtering module\n *\n * @param {IXLFilter} parent - parent details\n * @param {Object} customFltrOperators - operator details\n * @hidden\n */\n function ExcelFilterBase(parent, customFltrOperators) {\n var _this = _super.call(this, parent) || this;\n _this.childRefs = [];\n _this.eventHandlers = {};\n _this.isDevice = false;\n _this.customFilterOperators = customFltrOperators;\n _this.isExcel = true;\n return _this;\n }\n ExcelFilterBase.prototype.getCMenuDS = function (type, operator) {\n var options = {\n number: ['Equal', 'NotEqual', '', 'LessThan', 'LessThanOrEqual', 'GreaterThan',\n 'GreaterThanOrEqual', 'Between', '', 'CustomFilter'],\n string: ['Equal', 'NotEqual', '', 'StartsWith', 'EndsWith', '', 'Contains', 'NotContains', '', 'CustomFilter']\n };\n options.date = options.number;\n options.datetime = options.number;\n options.dateonly = options.number;\n var model = [];\n for (var i = 0; i < options[\"\" + type].length; i++) {\n if (options[\"\" + type][parseInt(i.toString(), 10)].length) {\n if (operator) {\n model.push({\n text: this.getLocalizedLabel(options[\"\" + type][parseInt(i.toString(), 10)]) + '...',\n iconCss: 'e-icons e-icon-check ' + (operator === options[\"\" + type][parseInt(i.toString(), 10)].toLowerCase() ? '' : 'e-emptyicon')\n });\n }\n else {\n model.push({\n text: this.getLocalizedLabel(options[\"\" + type][parseInt(i.toString(), 10)]) + '...'\n });\n }\n }\n else {\n model.push({ separator: true });\n }\n }\n return model;\n };\n /**\n * To destroy the filter bar.\n *\n * @returns {void}\n * @hidden\n */\n ExcelFilterBase.prototype.destroy = function () {\n if (this.dlg) {\n this.unwireExEvents();\n _super.prototype.closeDialog.call(this);\n }\n if (!this.isDevice && this.menuObj) {\n var li = this.menuObj.element.querySelector('li.e-focused');\n if (!(li && parentsUntil(li, 'e-excel-menu'))) {\n this.destroyCMenu();\n }\n }\n if (this.dlgObj && !this.dlgObj.isDestroyed) {\n this.removeDialog();\n }\n };\n ExcelFilterBase.prototype.createMenu = function (type, isFiltered, isCheckIcon, eleOptions) {\n var options = { string: 'TextFilter', date: 'DateFilter', dateonly: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n this.menu = this.parent.createElement('div', { className: 'e-contextmenu-wrapper' });\n if (this.parent.enableRtl) {\n this.menu.classList.add('e-rtl');\n }\n else {\n this.menu.classList.remove('e-rtl');\n }\n if (this.parent.cssClass) {\n this.menu.classList.add(this.parent.cssClass);\n }\n var ul = this.parent.createElement('ul');\n var icon = isFiltered ? 'e-excl-filter-icon e-filtered' : 'e-excl-filter-icon';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.allowSorting && this.parent.getModuleName() === 'grid'\n && !this.options.isResponsiveFilter) {\n var hdrele = this.parent.getColumnHeaderByUid(eleOptions.uid).getAttribute('aria-sort');\n var colIsSort = this.parent.getColumnByField(eleOptions.field).allowSorting;\n var isAsc = (!colIsSort || hdrele === 'ascending') ? 'e-disabled e-excel-ascending' : 'e-excel-ascending';\n var isDesc = (!colIsSort || hdrele === 'descending') ? 'e-disabled e-excel-descending' : 'e-excel-descending';\n var ascName = (type === 'string') ? this.getLocalizedLabel('SortAtoZ') : (type === 'datetime' || type === 'date') ?\n this.getLocalizedLabel('SortByOldest') : this.getLocalizedLabel('SortSmallestToLargest');\n var descName = (type === 'string') ? this.getLocalizedLabel('SortZtoA') : (type === 'datetime' || type === 'date') ?\n this.getLocalizedLabel('SortByNewest') : this.getLocalizedLabel('SortLargestToSmallest');\n ul.appendChild(this.createMenuElem(ascName, isAsc, 'e-sortascending'));\n ul.appendChild(this.createMenuElem(descName, isDesc, 'e-sortdescending'));\n var separator = this.parent.createElement('li', { className: 'e-separator e-menu-item e-excel-separator' });\n ul.appendChild(separator);\n }\n if (!this.options.isResponsiveFilter) {\n ul.appendChild(this.createMenuElem(this.getLocalizedLabel('ClearFilter'), isFiltered ? '' : 'e-disabled', icon));\n }\n if (type !== 'boolean') {\n ul.appendChild(this.createMenuElem(this.getLocalizedLabel(options[\"\" + type]), 'e-submenu', isCheckIcon && this.ensureTextFilter() ? 'e-icon-check' : icon + ' e-emptyicon', true));\n }\n this.menu.appendChild(ul);\n this.parent.notify(events.beforeFltrcMenuOpen, { element: this.menu });\n this.parent.notify(events.refreshCustomFilterClearBtn, { isFiltered: isFiltered });\n };\n ExcelFilterBase.prototype.createMenuElem = function (val, className, iconName, isSubMenu) {\n var li = this.parent.createElement('li', { className: className + ' e-menu-item' });\n li.innerHTML = val;\n li.insertBefore(this.parent.createElement('span', { className: 'e-menu-icon e-icons ' + iconName, attrs: { 'aria-hidden': 'true' } }), li.firstChild);\n if (isSubMenu) {\n li.appendChild(this.parent.createElement('span', { className: 'e-icons e-caret' }));\n }\n return li;\n };\n ExcelFilterBase.prototype.wireExEvents = function () {\n EventHandler.add(this.dlg, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.dlg, 'click', this.clickExHandler, this);\n };\n ExcelFilterBase.prototype.unwireExEvents = function () {\n EventHandler.remove(this.dlg, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.dlg, 'click', this.clickExHandler);\n };\n ExcelFilterBase.prototype.clickExHandler = function (e) {\n var options = { string: 'TextFilter', date: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n var menuItem = parentsUntil(e.target, 'e-menu-item');\n if (menuItem) {\n if (this.getLocalizedLabel('ClearFilter') === menuItem.innerText.trim()) {\n this.clearFilter();\n this.closeDialog();\n }\n else if (this.options.isResponsiveFilter\n && this.getLocalizedLabel(options[this.options.type]) === menuItem.innerText.trim()) {\n this.hoverHandler(e);\n }\n }\n };\n ExcelFilterBase.prototype.destroyCMenu = function () {\n this.isCMenuOpen = false;\n if (this.menuObj && !this.menuObj.isDestroyed) {\n this.menuObj.destroy();\n remove(this.cmenu);\n this.parent.notify(events.renderResponsiveCmenu, { target: null, header: '', isOpen: false, col: this.options.column });\n }\n };\n ExcelFilterBase.prototype.hoverHandler = function (e) {\n if (this.options.isResponsiveFilter && e.type === 'mouseover') {\n return;\n }\n var target = e.target.querySelector('.e-contextmenu');\n var li = parentsUntil(e.target, 'e-menu-item');\n var focused = this.menu.querySelector('.e-focused');\n var isSubMenu;\n if (focused) {\n focused.classList.remove('e-focused');\n }\n if (li) {\n li.classList.add('e-focused');\n isSubMenu = li.classList.contains('e-submenu');\n }\n if (target) {\n return;\n }\n if (!isSubMenu) {\n var submenu = this.menu.querySelector('.e-submenu');\n if (!isNullOrUndefined(submenu)) {\n submenu.classList.remove('e-selected');\n }\n this.destroyCMenu();\n }\n var selectedMenu = this.ensureTextFilter();\n if (!this.isCMenuOpen && isSubMenu) {\n li.classList.add('e-selected');\n this.isCMenuOpen = true;\n var menuOptions = {\n items: this.getCMenuDS(this.options.type, selectedMenu ? selectedMenu.replace(/\\s/g, '') : undefined),\n select: this.selectHandler.bind(this),\n onClose: this.destroyCMenu.bind(this),\n enableRtl: this.parent.enableRtl,\n animationSettings: { effect: 'None' },\n beforeClose: this.preventClose.bind(this),\n cssClass: this.options.isResponsiveFilter && this.parent.cssClass ?\n 'e-res-contextmenu-wrapper' + ' ' + this.parent.cssClass : this.options.isResponsiveFilter ?\n 'e-res-contextmenu-wrapper' : this.parent.cssClass ? this.parent.cssClass : ''\n };\n this.parent.element.appendChild(this.cmenu);\n this.menuObj = new ContextMenu(menuOptions, this.cmenu);\n var client = this.menu.querySelector('.e-submenu').getBoundingClientRect();\n var pos = { top: 0, left: 0 };\n if (this.options.isResponsiveFilter) {\n var options = { string: 'TextFilter', date: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n var content = document.querySelector('.e-responsive-dialog > .e-dlg-header-content');\n var height = content.offsetHeight + 4;\n this.menuObj.element.style.height = 'calc(100% - ' + height + 'px)';\n this.menuObj['open'](height, 0, document.body);\n var header = this.getLocalizedLabel(options[this.options.type]);\n this.parent.notify(events.renderResponsiveCmenu, {\n target: this.menuObj.element.parentElement, header: header, isOpen: true\n });\n }\n else {\n if (Browser.isDevice) {\n this.isDevice = true;\n var contextRect = this.getContextBounds();\n pos.top = (window.innerHeight - contextRect.height) / 2;\n pos.left = (window.innerWidth - contextRect.width) / 2;\n this.closeDialog();\n this.isDevice = false;\n }\n else {\n pos.top = Browser.isIE ? window.pageYOffset + client.top : window.scrollY + client.top;\n pos.left = this.getCMenuYPosition(this.dlg);\n }\n this.menuObj['open'](pos.top, pos.left, e.target);\n }\n applyBiggerTheme(this.parent.element, this.menuObj.element.parentElement);\n }\n };\n ExcelFilterBase.prototype.ensureTextFilter = function () {\n var selectedMenu;\n var predicates = this.existingPredicate[this.options.field];\n if (predicates && predicates.length === 2) {\n if (predicates[0].operator === 'greaterthanorequal' && predicates[1].operator === 'lessthanorequal') {\n selectedMenu = 'between';\n }\n else {\n selectedMenu = 'customfilter';\n }\n }\n else {\n if (predicates && predicates.length === 1) {\n this.optrData = this.customFilterOperators[this.options.type + 'Operator'];\n selectedMenu = predicates[0].operator;\n }\n }\n return selectedMenu;\n };\n ExcelFilterBase.prototype.preventClose = function (args) {\n if (this.options && this.options.isResponsiveFilter && args.event) {\n var target = args.event.target;\n var isFilterBack = target.classList.contains('e-resfilterback')\n || target.classList.contains('e-res-back-btn') || target.classList.contains('e-menu-item');\n args.cancel = !isFilterBack;\n }\n else {\n if (args.event instanceof MouseEvent && args.event.target.classList.contains('e-submenu')) {\n args.cancel = true;\n }\n }\n };\n ExcelFilterBase.prototype.getContextBounds = function () {\n this.menuObj.element.style.display = 'block';\n return this.menuObj.element.getBoundingClientRect();\n };\n ExcelFilterBase.prototype.getCMenuYPosition = function (target) {\n var contextWidth = this.getContextBounds().width;\n var targetPosition = target.getBoundingClientRect();\n var leftPos = targetPosition.right + contextWidth - this.parent.element.clientWidth;\n var targetBorder = target.offsetWidth - target.clientWidth;\n targetBorder = targetBorder ? targetBorder + 1 : 0;\n return (leftPos < 1) ? (targetPosition.right + 1 - targetBorder) : (targetPosition.left - contextWidth - 1 + targetBorder);\n };\n ExcelFilterBase.prototype.openDialog = function (options) {\n var _this = this;\n this.updateModel(options);\n this.getAndSetChkElem(options);\n this.showDialog(options);\n if (options.cancel) {\n return;\n }\n this.dialogObj.dataBind();\n var filterLength = (this.existingPredicate[options.field] && this.existingPredicate[options.field].length) ||\n this.options.filteredColumns.filter(function (col) {\n return _this.options.field === col.field;\n }).length;\n this.createMenu(options.type, filterLength > 0, (filterLength === 1 || filterLength === 2), options);\n this.dlg.insertBefore(this.menu, this.dlg.firstChild);\n this.dlg.classList.add('e-excelfilter');\n if (this.parent.enableRtl) {\n this.dlg.classList.add('e-rtl');\n }\n this.dlg.classList.remove('e-checkboxfilter');\n this.cmenu = this.parent.createElement('ul', { className: 'e-excel-menu' });\n if (options.column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, {});\n }\n this.wireExEvents();\n };\n ExcelFilterBase.prototype.closeDialog = function () {\n this.destroy();\n };\n ExcelFilterBase.prototype.selectHandler = function (e) {\n if (e.item) {\n this.parent.notify(events.filterCmenuSelect, {});\n this.menuItem = e.item;\n this.renderDialogue(e);\n }\n };\n /**\n * @hidden\n * @param {MenuEventArgs} e - event args\n * @returns {void}\n */\n ExcelFilterBase.prototype.renderDialogue = function (e) {\n var _this = this;\n var target = e ? e.element : undefined;\n var column = this.options.field;\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var mainDiv = this.parent.createElement('div', {\n className: 'e-xlfl-maindiv',\n id: isComplex ? complexFieldName + '-xlflmenu' : column + '-xlflmenu'\n });\n this.dlgDiv = this.parent.createElement('div', {\n className: 'e-xlflmenu',\n id: isComplex ? complexFieldName + '-xlfldlg' : column + '-xlfldlg'\n });\n if (this.options.isResponsiveFilter) {\n var responsiveCnt = document.querySelector('.e-resfilter > .e-dlg-content > .e-xl-customfilterdiv');\n responsiveCnt.appendChild(this.dlgDiv);\n }\n else {\n this.parent.element.appendChild(this.dlgDiv);\n }\n this.dlgObj = new Dialog({\n header: this.getLocalizedLabel('CustomFilter'),\n isModal: true,\n overlayClick: this.removeDialog.bind(this),\n showCloseIcon: true,\n locale: this.parent.locale,\n closeOnEscape: false,\n target: document.body,\n // target: this.parent.element,\n visible: false,\n enableRtl: this.parent.enableRtl,\n open: function () {\n var row = _this.dlgObj.element.querySelector('table.e-xlfl-table>tr');\n if (_this.options.column.filterTemplate) {\n var templateField_1 = isComplexField(_this.options.column.field) ?\n getComplexFieldID(_this.options.column.field) : _this.options.column.field;\n var isReactCompiler = _this.parent.isReact && typeof (_this.options.column.filterTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = _this.parent.parentDetails && _this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n _this.parent.renderTemplates(function () {\n row.querySelector('#' + templateField_1 + '-xlfl-frstvalue').focus();\n });\n }\n else {\n row.querySelector('#' + templateField_1 + '-xlfl-frstvalue').focus();\n }\n }\n else {\n //(row.cells[1].querySelector('input:not([type=hidden])') as HTMLElement).focus();\n }\n },\n close: this.removeDialog.bind(this),\n created: this.createdDialog.bind(this, target, column),\n buttons: [{\n click: this.filterBtnClick.bind(this, column),\n buttonModel: {\n content: this.getLocalizedLabel('OKButton'), isPrimary: true,\n cssClass: this.parent.cssClass ? 'e-xlfl-okbtn' + ' ' + this.parent.cssClass : 'e-xlfl-okbtn'\n }\n },\n {\n click: this.removeDialog.bind(this),\n buttonModel: { content: this.getLocalizedLabel('CancelButton'),\n cssClass: this.parent.cssClass ? 'e-xlfl-cancelbtn' + ' ' + this.parent.cssClass : 'e-xlfl-cancelbtn' }\n }],\n content: mainDiv,\n width: 430,\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n this.dlgObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dlgDiv.setAttribute('aria-label', this.getLocalizedLabel('CustomFilterDialogARIA'));\n this.childRefs.push(this.dlgObj);\n this.dlgObj.appendTo(this.dlgDiv);\n };\n ExcelFilterBase.prototype.renderResponsiveDialog = function () {\n if (this.options.isResponsiveFilter) {\n var rowResponsiveDlg = document.querySelector('.e-row-responsive-filter');\n if (rowResponsiveDlg) {\n rowResponsiveDlg.classList.remove('e-row-responsive-filter');\n }\n this.dlgObj.buttons = [{}];\n this.dlgObj.header = undefined;\n this.dlgObj.position = { X: '', Y: '' };\n this.dlgObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-xl-customfilterdiv');\n this.dlgObj.width = '100%';\n this.dlgObj.isModal = false;\n this.dlgObj.showCloseIcon = false;\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n ExcelFilterBase.prototype.removeDialog = function () {\n this.parent.notify(events.customFilterClose, {});\n if ((this.parent.isReact || this.parent.isVue) && this.parent.destroyTemplate !== undefined) {\n clearReactVueTemplates(this.parent, ['filterTemplate']);\n }\n this.removeObjects(this.childRefs);\n remove(this.dlgDiv);\n this.parent.notify(events.filterDialogClose, {});\n };\n ExcelFilterBase.prototype.createdDialog = function (target, column) {\n this.renderCustomFilter(target, column);\n this.dlgObj.element.style.left = '0px';\n if (!this.options.isResponsiveFilter) {\n this.dlgObj.element.style.top = '0px';\n }\n else {\n var content = document.querySelector('.e-responsive-dialog > .e-dlg-header-content');\n var height = content.offsetHeight + 4;\n this.dlgObj.element.style.top = height + 'px';\n }\n if (!this.options.isResponsiveFilter && Browser.isDevice && window.innerWidth < 440) {\n this.dlgObj.element.style.width = '90%';\n }\n this.parent.notify(events.beforeCustomFilterOpen, { column: column, dialog: this.dialogObj });\n this.dlgObj.show();\n applyBiggerTheme(this.parent.element, this.dlgObj.element.parentElement);\n };\n ExcelFilterBase.prototype.renderCustomFilter = function (target, column) {\n var dlgConetntEle = this.dlgObj.element.querySelector('.e-xlfl-maindiv');\n var dlgFields = this.parent.createElement('div', { innerHTML: this.getLocalizedLabel('ShowRowsWhere'), className: 'e-xlfl-dlgfields' });\n dlgConetntEle.appendChild(dlgFields);\n //column name\n var fieldSet = this.parent.createElement('div', { innerHTML: this.options.displayName, className: 'e-xlfl-fieldset' });\n dlgConetntEle.appendChild(fieldSet);\n this.renderFilterUI(column, dlgConetntEle);\n };\n /**\n * @hidden\n * @param {string} col - Defines column details\n * @returns {void}\n */\n ExcelFilterBase.prototype.filterBtnClick = function (col) {\n var isComplex = !isNullOrUndefined(col) && isComplexField(col);\n var complexFieldName = !isNullOrUndefined(col) && getComplexFieldID(col);\n var colValue = isComplex ? complexFieldName : col;\n var fValue = this.dlgDiv.querySelector('#' + colValue + '-xlfl-frstvalue').ej2_instances[0];\n var fOperator = this.dlgDiv.querySelector('#' + colValue + '-xlfl-frstoptr').ej2_instances[0];\n var sValue = this.dlgDiv.querySelector('#' + colValue + '-xlfl-secndvalue').ej2_instances[0];\n var sOperator = this.dlgDiv.querySelector('#' + colValue + '-xlfl-secndoptr').ej2_instances[0];\n var checkBoxValue;\n if (this.options.type === 'string') {\n var checkBox = this.dlgDiv.querySelector('#' + colValue + '-xlflmtcase').ej2_instances[0];\n checkBoxValue = checkBox.checked;\n }\n var andRadio = this.dlgDiv.querySelector('#' + colValue + 'e-xlfl-frstpredicate').ej2_instances[0];\n var predicate = (andRadio.checked ? 'and' : 'or');\n if (sValue.value === null) {\n predicate = 'or';\n }\n this.filterByColumn(this.options.field, fOperator.value, fValue.value, predicate, checkBoxValue, this.options.ignoreAccent, sOperator.value, sValue.value);\n this.removeDialog();\n };\n /**\n * @hidden\n * Filters grid row by column name with given options.\n *\n * @param {string} fieldName - Defines the field name of the filter column.\n * @param {string} firstOperator - Defines the first operator by how to filter records.\n * @param {string | number | Date | boolean} firstValue - Defines the first value which is used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query with another by using AND or OR predicate.\n * @param {boolean} matchCase - If ignore case set to true, then filter records with exact match or else\n * filter records with case insensitive(uppercase and lowercase letters treated as same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true, then ignores the diacritic characters or accents when filtering.\n * @param {string} secondOperator - Defines the second operator by how to filter records.\n * @param {string | number | Date | boolean} secondValue - Defines the first value which is used to filter records.\n * @returns {void}\n */\n ExcelFilterBase.prototype.filterByColumn = function (fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue) {\n var col = this.parent.getColumnByField ? this.parent.getColumnByField(fieldName) : this.options.column;\n var field = this.isForeignColumn(col) ? col.foreignKeyValue : fieldName;\n var fColl = [];\n var mPredicate;\n var arg = {\n instance: this, handler: this.filterByColumn, arg1: fieldName, arg2: firstOperator, arg3: firstValue, arg4: predicate,\n arg5: matchCase, arg6: ignoreAccent, arg7: secondOperator, arg8: secondValue, cancel: false\n };\n this.parent.notify(events.fltrPrevent, arg);\n if (arg.cancel) {\n return;\n }\n fColl.push({\n field: field,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: firstOperator,\n value: arg.arg3,\n type: this.options.type\n });\n mPredicate = new Predicate(field, firstOperator.toLowerCase(), arg.arg3, !matchCase, ignoreAccent);\n if (!isNullOrUndefined(secondValue) && !isNullOrUndefined(secondOperator)) {\n fColl.push({\n field: field,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: secondOperator,\n value: arg.arg8,\n type: this.options.type\n });\n mPredicate = mPredicate[\"\" + predicate](field, secondOperator.toLowerCase(), secondValue, !matchCase, ignoreAccent);\n }\n var args = {\n action: 'filtering', filterCollection: fColl, field: this.options.field,\n ejpredicate: mPredicate, actualPredicate: fColl\n };\n if (this.isForeignColumn(col)) {\n this.foreignKeyFilter(args, fColl, mPredicate);\n }\n else {\n this.options.handler(args);\n }\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderOperatorUI = function (column, table, elementID, predicates, isFirst) {\n var fieldElement = this.parent.createElement('tr', { className: 'e-xlfl-fields' });\n table.appendChild(fieldElement);\n var xlfloptr = this.parent.createElement('td', { className: 'e-xlfl-optr' });\n fieldElement.appendChild(xlfloptr);\n var optrDiv = this.parent.createElement('div', { className: 'e-xlfl-optrdiv' });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var optrInput = this.parent\n .createElement('input', { id: isComplex ? complexFieldName + elementID : column + elementID });\n optrDiv.appendChild(optrInput);\n xlfloptr.appendChild(optrDiv);\n var optr = this.options.type + 'Operator';\n var dropDatasource = this.customFilterOperators[\"\" + optr];\n this.optrData = dropDatasource;\n var selectedValue = this.dropSelectedVal(this.options.column, predicates, isFirst);\n //Trailing three dots are sliced.\n var menuText = '';\n if (this.menuItem) {\n menuText = this.menuItem.text.slice(0, -3);\n if (menuText !== this.getLocalizedLabel('CustomFilter')) {\n selectedValue = isFirst ? menuText : undefined;\n }\n if (menuText === this.getLocalizedLabel('Between')) {\n selectedValue = this.getLocalizedLabel(isFirst ? 'GreaterThanOrEqual' : 'LessThanOrEqual');\n }\n }\n var col = this.options.column;\n var dropOptr = new DropDownList(extend({\n dataSource: dropDatasource,\n fields: { text: 'text', value: 'value' },\n text: selectedValue,\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, col.filter.params));\n this.childRefs.push(dropOptr);\n var evt = { 'open': this.dropDownOpen.bind(this), 'change': this.dropDownValueChange.bind(this) };\n registerEventHandlers(optrInput.id, [literals.open, literals.change], evt, this);\n dropOptr.addEventListener(literals['open'], this.eventHandlers[optrInput.id][literals.open]);\n dropOptr.addEventListener(literals.change, this.eventHandlers[optrInput.id][literals.change]);\n dropOptr.appendTo(optrInput);\n var operator = this.getSelectedValue(selectedValue);\n return { fieldElement: fieldElement, operator: operator };\n };\n ExcelFilterBase.prototype.removeHandlersFromComponent = function (component) {\n if (component.element.classList.contains('e-dropdownlist')) {\n removeEventHandlers(component, [literals.open, literals.change], this);\n }\n else if (component.element.classList.contains('e-autocomplete')) {\n removeEventHandlers(component, [events.actionComplete, literals.focus], this);\n }\n };\n ExcelFilterBase.prototype.dropDownOpen = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n };\n ExcelFilterBase.prototype.dropDownValueChange = function (args) {\n if (args.element.id.includes('-xlfl-frstoptr')) {\n this.firstOperator = args.value.toString();\n }\n else {\n this.secondOperator = args.value.toString();\n }\n };\n /**\n * @hidden\n * @returns {FilterUI} returns filter UI\n */\n ExcelFilterBase.prototype.getFilterUIInfo = function () {\n return { firstOperator: this.firstOperator, secondOperator: this.secondOperator, field: this.options.field };\n };\n ExcelFilterBase.prototype.getSelectedValue = function (text) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('text', 'equal', text));\n return !isNullOrUndefined(selectedField[0]) ? selectedField[0].value : '';\n };\n ExcelFilterBase.prototype.dropSelectedVal = function (col, predicates, isFirst) {\n var operator;\n if (predicates && predicates.length > 0) {\n operator = predicates.length === 2 ?\n (isFirst ? predicates[0].operator : predicates[1].operator) :\n (isFirst ? predicates[0].operator : undefined);\n }\n else if (isFirst && col.type === 'string' && !col.filter.operator) {\n operator = 'startswith';\n }\n else {\n operator = isFirst ? col.filter.operator || 'equal' : undefined;\n }\n return this.getSelectedText(operator);\n };\n ExcelFilterBase.prototype.getSelectedText = function (operator) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('value', 'equal', operator));\n return !isNullOrUndefined(selectedField[0]) ? selectedField[0].text : '';\n };\n ExcelFilterBase.prototype.renderFilterUI = function (column, dlgConetntEle) {\n var predicates = this.existingPredicate[\"\" + column];\n var table = this.parent.createElement('table', { className: 'e-xlfl-table', attrs: { role: 'grid' } });\n dlgConetntEle.appendChild(table);\n var colGroup = this.parent.createElement(literals.colGroup);\n colGroup.innerHTML = '';\n table.appendChild(colGroup);\n //Renders first dropdown\n var optr = this.renderOperatorUI(column, table, '-xlfl-frstoptr', predicates, true);\n this.firstOperator = optr.operator;\n //Renders first value\n this.renderFlValueUI(column, optr, '-xlfl-frstvalue', predicates, true);\n var predicate = this.parent.createElement('tr', { className: 'e-xlfl-predicate' });\n table.appendChild(predicate);\n //Renders first radion button\n this.renderRadioButton(column, predicate, predicates);\n //Renders second dropdown\n optr = this.renderOperatorUI(column, table, '-xlfl-secndoptr', predicates, false);\n this.secondOperator = optr.operator;\n //Renders second text box\n this.renderFlValueUI(column, optr, '-xlfl-secndvalue', predicates, false);\n };\n ExcelFilterBase.prototype.renderRadioButton = function (column, tr, predicates) {\n var td = this.parent.createElement('td', { className: 'e-xlfl-radio', attrs: { 'colSpan': '2' } });\n tr.appendChild(td);\n var radioDiv = this.parent\n .createElement('div', { className: 'e-xlfl-radiodiv', attrs: { 'style': 'display: inline-block' } });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var frstpredicate = this.parent.createElement('input', { id: isComplex ? complexFieldName + 'e-xlfl-frstpredicate' : column + 'e-xlfl-frstpredicate', attrs: { 'type': 'radio' } });\n var secndpredicate = this.parent.createElement('input', { id: isComplex ? complexFieldName + 'e-xlfl-secndpredicate' : column + 'e-xlfl-secndpredicate', attrs: { 'type': 'radio' } });\n //appends into div\n radioDiv.appendChild(frstpredicate);\n radioDiv.appendChild(secndpredicate);\n td.appendChild(radioDiv);\n if (this.options.type === 'string') {\n this.renderMatchCase(column, tr, td, '-xlflmtcase', predicates);\n }\n // Initialize AND RadioButton component.\n var andRadio = new RadioButton({\n label: this.getLocalizedLabel('AND'),\n name: 'default', checked: true,\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.childRefs.push(andRadio);\n // Initialize OR RadioButton component.\n var orRadio = new RadioButton({\n label: this.getLocalizedLabel('OR'),\n name: 'default',\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.childRefs.push(orRadio);\n var flValue = predicates && predicates.length === 2 ? predicates[1].predicate : 'and';\n if (flValue === 'and') {\n andRadio.checked = true;\n orRadio.checked = false;\n }\n else {\n orRadio.checked = true;\n andRadio.checked = false;\n }\n // Render initialized RadioButton.\n andRadio.appendTo(frstpredicate);\n orRadio.appendTo(secndpredicate);\n andRadio.element.nextElementSibling.classList.add('e-xlfl-radio-and');\n orRadio.element.nextElementSibling.classList.add('e-xlfl-radio-or');\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ExcelFilterBase.prototype.removeObjects = function (elements) {\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var obj = elements_1[_i];\n if (obj && !obj.isDestroyed) {\n this.removeHandlersFromComponent(obj);\n obj.destroy();\n }\n }\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderFlValueUI = function (column, optr, elementId, predicates, isFirst) {\n var value = this.parent.createElement('td', { className: 'e-xlfl-value' });\n optr.fieldElement.appendChild(value);\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var valueDiv = this.parent.createElement('div', { className: 'e-xlfl-valuediv' });\n var isFilteredCol = this.options.filteredColumns.some(function (col) { return column === col.field; });\n var fltrPredicates = this.options.filteredColumns.filter(function (col) { return col.field === column; });\n if (this.options.column.filterTemplate) {\n var data = {};\n var columnObj = this.options.column;\n if (isFilteredCol && elementId) {\n data = this.getExcelFilterData(elementId, data, columnObj, predicates, fltrPredicates);\n }\n var isReactCompiler = this.parent.isReact && typeof (this.options.column.filterTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.parentDetails.parentInstObj.isReact;\n var tempID = this.parent.element.id + columnObj.uid + 'filterTemplate';\n if (isReactCompiler || isReactChild) {\n this.options.column.getFilterTemplate()(data, this.parent, 'filterTemplate', tempID, null, null, valueDiv);\n }\n else {\n var element = this.options.column.getFilterTemplate()(data, this.parent, 'filterTemplate', tempID);\n appendChildren(valueDiv, element);\n }\n if (isReactCompiler || isReactChild) {\n this.parent.renderTemplates(function () {\n valueDiv.querySelector('input').id = isComplex ? complexFieldName + elementId : column + elementId;\n value.appendChild(valueDiv);\n });\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this.parent.isAngular ? valueDiv.children[0] : valueDiv.querySelector('input')).id = isComplex ?\n complexFieldName + elementId : column + elementId;\n value.appendChild(valueDiv);\n }\n }\n else {\n var valueInput = this.parent\n .createElement('input', { id: isComplex ? complexFieldName + elementId : column + elementId });\n valueDiv.appendChild(valueInput);\n value.appendChild(valueDiv);\n var flValue = void 0;\n var predicate = void 0;\n if (predicates && predicates.length > 0) {\n predicate = predicates.length === 2 ?\n (isFirst ? predicates[0] : predicates[1]) :\n (isFirst ? predicates[0] : undefined);\n flValue = (predicate && predicate.operator === optr.operator) ? predicate.value : undefined;\n if (isNullOrUndefined(flValue)) {\n flValue = undefined;\n }\n }\n var types = {\n 'string': this.renderAutoComplete.bind(this),\n 'number': this.renderNumericTextBox.bind(this),\n 'date': this.renderDate.bind(this),\n 'dateonly': this.renderDate.bind(this),\n 'datetime': this.renderDateTime.bind(this)\n };\n types[this.options.type](this.options, column, valueInput, flValue, this.parent.enableRtl);\n }\n };\n ExcelFilterBase.prototype.getExcelFilterData = function (elementId, data, columnObj, predicates, fltrPredicates) {\n var predIndex = elementId === '-xlfl-frstvalue' ? 0 : 1;\n if (elementId === '-xlfl-frstvalue' || fltrPredicates.length > 1) {\n data = { column: predicates instanceof Array ? predicates[parseInt(predIndex.toString(), 10)] : predicates };\n var indx = this.options.column.columnData && fltrPredicates.length > 1 ?\n (this.options.column.columnData.length === 1 ? 0 : 1) : predIndex;\n data[this.options.field] = columnObj.foreignKeyValue ?\n this.options.column.columnData[parseInt(indx.toString(), 10)][columnObj.foreignKeyValue] :\n fltrPredicates[parseInt(indx.toString(), 10)].value;\n if (this.options.foreignKeyValue) {\n data[this.options.foreignKeyValue] = this.options.column\n .columnData[parseInt(indx.toString(), 10)][columnObj.foreignKeyValue];\n }\n }\n return data;\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderMatchCase = function (column, tr, matchCase, elementId, predicates) {\n var matchCaseDiv = this.parent.createElement('div', { className: 'e-xlfl-matchcasediv', attrs: { 'style': 'display: inline-block' } });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var matchCaseInput = this.parent.createElement('input', { id: isComplex ? complexFieldName + elementId : column + elementId, attrs: { 'type': 'checkbox' } });\n matchCaseDiv.appendChild(matchCaseInput);\n matchCase.appendChild(matchCaseDiv);\n var flValue = predicates && predicates.length > 0 ?\n (predicates && predicates.length === 2 ? predicates[1].matchCase : predicates[0].matchCase) :\n false;\n // Initialize Match Case check box.\n var checkbox = new CheckBox({\n label: this.getLocalizedLabel('MatchCase'),\n enableRtl: this.parent.enableRtl, checked: flValue,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.childRefs.push(checkbox);\n // Render initialized CheckBox.\n checkbox.appendTo(matchCaseInput);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderDate = function (options, column, inputValue, fValue, isRtl) {\n var format = getCustomDateFormat(options.format, options.type) || options.format;\n var datePicker = new DatePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: this.getLocalizedLabel('CustomFilterDatePlaceHolder'),\n width: '100%',\n enableRtl: isRtl,\n value: new Date(fValue),\n locale: this.parent.locale\n }, options.column.filter.params));\n this.childRefs.push(datePicker);\n datePicker.appendTo(inputValue);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderDateTime = function (options, column, inputValue, fValue, isRtl) {\n var format = getCustomDateFormat(options.format, options.type);\n var dateTimePicker = new DateTimePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: this.getLocalizedLabel('CustomFilterDatePlaceHolder'),\n width: '100%',\n enableRtl: isRtl,\n value: new Date(fValue),\n locale: this.parent.locale\n }, options.column.filter.params));\n this.childRefs.push(dateTimePicker);\n dateTimePicker.appendTo(inputValue);\n };\n ExcelFilterBase.prototype.completeAction = function (e) {\n e.result = distinctStringValues(e.result);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderNumericTextBox = function (options, column, inputValue, fValue, isRtl) {\n var numericTextBox = new NumericTextBox(extend({\n format: options.format,\n placeholder: this.getLocalizedLabel('CustomFilterPlaceHolder'),\n enableRtl: isRtl,\n value: fValue,\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, options.column.filter.params));\n this.childRefs.push(numericTextBox);\n numericTextBox.appendTo(inputValue);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderAutoComplete = function (options, column, inputValue, fValue, isRtl) {\n var colObj = this.options.column;\n var isForeignColumn = this.isForeignColumn(colObj);\n var dataSource = isForeignColumn ? colObj.dataSource : options.dataSource;\n var fields = { value: isForeignColumn ? colObj.foreignKeyValue : column };\n var actObj = new AutoComplete(extend({\n dataSource: dataSource instanceof DataManager ? dataSource : new DataManager(dataSource),\n fields: fields,\n query: this.getQuery(),\n sortOrder: 'Ascending',\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n autofill: true,\n placeholder: this.getLocalizedLabel('CustomFilterPlaceHolder'),\n enableRtl: isRtl,\n text: fValue\n }, colObj.filter.params));\n if (dataSource && 'result' in dataSource) {\n var defObj = eventPromise({ requestType: 'stringfilterrequest' }, this.getQuery());\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n actObj.dataSource = new DataManager(e);\n });\n }\n this.childRefs.push(actObj);\n var evt = { 'actionComplete': this.acActionComplete(actObj, column), 'focus': this.acFocus(actObj, column, options, inputValue) };\n registerEventHandlers(inputValue.id, [events.actionComplete, literals.focus], evt, this);\n actObj.addEventListener(literals.focus, this.eventHandlers[inputValue.id][literals.focus]);\n actObj.addEventListener(events.actionComplete, this.eventHandlers[inputValue.id][events.actionComplete]);\n actObj.appendTo(inputValue);\n };\n ExcelFilterBase.prototype.acActionComplete = function (actObj, column) {\n return function (e) {\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n e.result = e.result.filter(function (obj, index, arr) {\n return arr.map(function (mapObject) {\n return isComplex ? performComplexDataOperation(actObj.fields.value, mapObject)\n : mapObject[actObj.fields.value];\n }).indexOf(isComplex ? performComplexDataOperation(actObj.fields.value, obj) :\n obj[actObj.fields.value]) === index;\n });\n };\n };\n ExcelFilterBase.prototype.acFocus = function (actObj, column, options, inputValue) {\n var _this = this;\n return function () {\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var columnvalue = isComplex ? complexFieldName : column;\n actObj.filterType = _this.dlgDiv.querySelector('#' + columnvalue +\n (inputValue.id === (columnvalue + '-xlfl-frstvalue') ?\n '-xlfl-frstoptr' :\n '-xlfl-secndoptr')).ej2_instances[0].value;\n actObj.ignoreCase = options.type === 'string' ?\n !_this.dlgDiv.querySelector('#' + columnvalue + '-xlflmtcase').ej2_instances[0].checked :\n true;\n actObj.filterType = !isNullOrUndefined(actObj.filterType) ? actObj.filterType :\n 'equal';\n };\n };\n return ExcelFilterBase;\n}(CheckBoxFilterBase));\nexport { ExcelFilterBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ExcelFilterBase } from '../common/excel-filter-base';\nimport { CheckBoxFilter } from './checkbox-filter';\nimport * as events from '../base/constant';\n/**\n * @hidden\n * `ExcelFilter` module is used to handle filtering action.\n */\nvar ExcelFilter = /** @class */ (function (_super) {\n __extends(ExcelFilter, _super);\n /**\n * Constructor for excelbox filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the Filtersettings\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @param {object} customFltrOperators - specifies the customFltrOperators\n * @hidden\n */\n function ExcelFilter(parent, filterSettings, serviceLocator, customFltrOperators) {\n var _this = _super.call(this, parent, filterSettings, serviceLocator) || this;\n _this.parent = parent;\n _this.isresetFocus = true;\n _this.excelFilterBase = new ExcelFilterBase(parent, customFltrOperators);\n return _this;\n }\n /**\n * To destroy the excel filter.\n *\n * @returns {void}\n * @hidden\n */\n ExcelFilter.prototype.destroy = function () {\n this.excelFilterBase.closeDialog();\n };\n ExcelFilter.prototype.openDialog = function (options) {\n this.excelFilterBase.openDialog(options);\n };\n ExcelFilter.prototype.closeDialog = function () {\n this.excelFilterBase.closeDialog();\n if (this.isresetFocus) {\n this.parent.notify(events.restoreFocus, {});\n }\n };\n ExcelFilter.prototype.clearCustomFilter = function (col) {\n this.excelFilterBase.clearFilter(col);\n };\n ExcelFilter.prototype.closeResponsiveDialog = function (isCustomFilter) {\n if (isCustomFilter) {\n this.excelFilterBase.removeDialog();\n }\n else {\n this.closeDialog();\n }\n };\n ExcelFilter.prototype.applyCustomFilter = function (args) {\n if (!args.isCustomFilter) {\n this.excelFilterBase.fltrBtnHandler();\n this.excelFilterBase.closeDialog();\n }\n else {\n this.excelFilterBase.filterBtnClick(args.col.field);\n }\n };\n ExcelFilter.prototype.filterByColumn = function (fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue) {\n this.excelFilterBase.filterByColumn(fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue);\n };\n /**\n * @returns {FilterUI} returns the filterUI\n * @hidden\n */\n ExcelFilter.prototype.getFilterUIInfo = function () {\n return this.excelFilterBase.getFilterUIInfo();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n ExcelFilter.prototype.getModuleName = function () {\n return 'excelFilter';\n };\n return ExcelFilter;\n}(CheckBoxFilter));\nexport { ExcelFilter };\n","import { EventHandler, isNullOrUndefined, extend, closest, getValue } from '@syncfusion/ej2-base';\nimport { getActualPropFromColl, isActionPrevent, getColumnByForeignKeyValue } from '../base/util';\nimport { remove, matches } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport { CellType, ResponsiveDialogAction } from '../base/enum';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { Cell } from '../models/cell';\nimport { Row } from '../models/row';\nimport { FilterCellRenderer } from '../renderer/filter-cell-renderer';\nimport { parentsUntil } from '../base/util';\nimport { FilterMenuRenderer } from '../renderer/filter-menu-renderer';\nimport { CheckBoxFilter } from '../actions/checkbox-filter';\nimport { ExcelFilter } from '../actions/excel-filter';\nimport * as literals from '../base/string-literals';\nimport { Input } from '@syncfusion/ej2-inputs';\n/**\n *\n * The `Filter` module is used to handle filtering action.\n */\nvar Filter = /** @class */ (function () {\n /**\n * Constructor for Grid filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the filterSettings\n * @param {ServiceLocator} serviceLocator - specifes the serviceLocator\n * @hidden\n */\n function Filter(parent, filterSettings, serviceLocator) {\n this.predicate = 'and';\n this.contentRefresh = true;\n this.filterByMethod = true;\n this.refresh = true;\n this.values = {};\n this.operators = {};\n this.cellText = {};\n this.nextFlMenuOpen = '';\n this.type = { 'Menu': FilterMenuRenderer, 'CheckBox': CheckBoxFilter, 'Excel': ExcelFilter };\n /** @hidden */\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith', wildCard: 'wildcard',\n isNull: 'isnull', notNull: 'notnull', like: 'like'\n };\n this.fltrDlgDetails = { field: '', isOpen: false };\n /** @hidden */\n this.skipNumberInput = ['=', ' ', '!'];\n this.skipStringInput = ['>', '<', '='];\n this.actualPredicate = {};\n this.parent = parent;\n this.filterSettings = filterSettings;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n this.setFullScreenDialog();\n }\n /**\n * To render filter bar when filtering enabled.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Filter.prototype.render = function (e) {\n if (DataUtil.getObject('args.isFrozen', e) || (this.parent.getFrozenMode() === literals.leftRight &&\n DataUtil.getObject('args.renderFrozenRightContent', e))) {\n return;\n }\n var gObj = this.parent;\n this.l10n = this.serviceLocator.getService('localization');\n this.getLocalizedCustomOperators();\n if (this.parent.filterSettings.type === 'FilterBar') {\n if (gObj.columns.length) {\n var fltrElem = this.parent.element.querySelector('.e-filterbar');\n if (fltrElem) {\n remove(fltrElem);\n }\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Filter, gObj);\n var cellrender = this.serviceLocator.getService('cellRendererFactory');\n cellrender.addCellRenderer(CellType.Filter, new FilterCellRenderer(this.parent, this.serviceLocator));\n this.valueFormatter = this.serviceLocator.getService('valueFormatter');\n rowRenderer.element = this.parent.createElement('tr', { className: 'e-filterbar' });\n var row = this.generateRow();\n row.data = this.values;\n if (gObj.getFrozenMode() === 'Right') {\n var thead = gObj.getFrozenRightHeader().querySelector('thead');\n thead.appendChild(rowRenderer.element);\n }\n else {\n this.parent.getHeaderContent().querySelector('thead:not(.e-masked-thead)').appendChild(rowRenderer.element);\n }\n var rowdrag = this.parent.element.querySelector('.e-rowdragheader');\n this.element = rowRenderer.render(row, gObj.getColumns(), null, null, rowRenderer.element);\n var detail = this.element.querySelector('.e-detailheadercell');\n if (detail) {\n detail.className = 'e-filterbarcell e-mastercell';\n }\n if (rowdrag) {\n rowdrag.className = 'e-dragheadercell e-mastercell';\n }\n var gCells = [].slice.call(this.element.getElementsByClassName('e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n this.wireEvents();\n this.parent.notify(events.freezeRender, { case: 'filter' });\n }\n }\n };\n /**\n * To show the responsive custom filter dialog\n *\n * @param {boolean} enable - specifes dialog open\n * @returns {void}\n * @hidden\n */\n Filter.prototype.showCustomFilter = function (enable) {\n this.responsiveDialogRenderer.isCustomDialog = enable;\n this.responsiveDialogRenderer.showResponsiveDialog(this.column);\n };\n /**\n * To create the filter module.\n *\n * @param {Column} col - specifies the filtering column name\n * @returns {void}\n * @hidden\n */\n Filter.prototype.setFilterModel = function (col) {\n var type = col.filter.type || this.parent.filterSettings.type;\n this.filterModule = new this.type[\"\" + type](this.parent, this.parent.filterSettings, this.serviceLocator, this.customOperators, this);\n };\n /**\n * To destroy the filter bar.\n *\n * @returns {void}\n * @hidden\n */\n Filter.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n if (this.filterModule) {\n this.filterModule.destroy();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.parent.refreshing && (this.parent.isDestroyed || !this.parent.allowFiltering)) {\n this.filterSettings.columns = [];\n }\n this.updateFilterMsg();\n this.removeEventListener();\n this.unWireEvents();\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n var dropdownlist = [].slice.call(this.element.getElementsByClassName('e-filterbaroperator'));\n for (var i = 0; i < dropdownlist.length; i++) {\n if (dropdownlist[parseInt(i.toString(), 10)].ej2_instances[0]) {\n dropdownlist[parseInt(i.toString(), 10)].ej2_instances[0].destroy();\n }\n }\n }\n if (this.element) {\n if (this.element.parentElement) {\n remove(this.element);\n }\n var filterBarElement = this.parent.getHeaderContent().querySelector('.e-filterbar');\n if (this.parent.isFrozenGrid() && filterBarElement) {\n remove(filterBarElement);\n }\n }\n };\n Filter.prototype.setFullScreenDialog = function () {\n if (this.serviceLocator) {\n this.serviceLocator.registerAdaptiveService(this, this.parent.enableAdaptiveUI, ResponsiveDialogAction.isFilter);\n }\n };\n Filter.prototype.generateRow = function () {\n var options = {};\n var row = new Row(options);\n row.cells = this.generateCells();\n return row;\n };\n Filter.prototype.generateCells = function () {\n //TODO: generate dummy column for group, detail, stacked row here for filtering;\n var cells = [];\n if (this.parent.allowGrouping) {\n for (var c = 0, len = this.parent.groupSettings.columns.length; c < len; c++) {\n cells.push(this.generateCell({}, CellType.HeaderIndent));\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n cells.push(this.generateCell({}, CellType.DetailHeader));\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n for (var _i = 0, _a = this.parent.getColumns(); _i < _a.length; _i++) {\n var dummy = _a[_i];\n cells.push(this.generateCell(dummy));\n }\n if (this.parent.getFrozenMode() === 'Right') {\n cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n return cells;\n };\n Filter.prototype.generateCell = function (column, cellType) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': false,\n 'rowId': '',\n 'column': column,\n 'cellType': cellType ? cellType : CellType.Filter,\n 'attributes': { title: this.l10n.getConstant('FilterbarTitle') }\n };\n return new Cell(opt);\n };\n /**\n * To update filterSettings when applying filter.\n *\n * @returns {void}\n * @hidden\n */\n Filter.prototype.updateModel = function () {\n var col = this.column.isForeignColumn() ? this.parent.getColumnByUid(this.column.uid) :\n this.parent.getColumnByField(this.fieldName);\n this.filterObjIndex = this.getFilteredColsIndexByField(col);\n this.prevFilterObject = this.filterSettings.columns[this.filterObjIndex];\n var arrayVal = Array.isArray(this.value) ? this.value : [this.value];\n var moduleName = this.parent.dataSource.adaptor && this.parent.dataSource.adaptor.getModuleName ? this.parent.dataSource.adaptor.getModuleName() : undefined;\n for (var i = 0, len = arrayVal.length; i < len; i++) {\n var field = col.isForeignColumn() ? col.foreignKeyValue : this.fieldName;\n var isMenuNotEqual = this.operator === 'notequal';\n this.currentFilterObject = {\n field: field, uid: col.uid, isForeignKey: col.isForeignColumn(), operator: this.operator,\n value: arrayVal[parseInt(i.toString(), 10)], predicate: this.predicate,\n matchCase: this.matchCase, ignoreAccent: this.ignoreAccent, actualFilterValue: {}, actualOperator: {}\n };\n var index = this.getFilteredColsIndexByField(col);\n if (index > -1 && !Array.isArray(this.value)) {\n this.filterSettings.columns[parseInt(index.toString(), 10)] = this.currentFilterObject;\n }\n else {\n this.filterSettings.columns.push(this.currentFilterObject);\n }\n if (!this.column.isForeignColumn() && isNullOrUndefined(this.value) && (this.operator === 'equal' ||\n this.operator === 'notequal') && (moduleName !== 'ODataAdaptor' && moduleName !== 'ODataV4Adaptor')) {\n for (var i_1 = 0; i_1 < this.filterSettings.columns.length; i_1++) {\n if (this.filterSettings.columns[\"\" + i_1].field === field &&\n (this.filterSettings.columns[\"\" + i_1].operator === 'equal' || this.filterSettings.columns[\"\" + i_1].operator === 'notequal')\n && isNullOrUndefined(this.filterSettings.columns[\"\" + i_1].value)) {\n this.filterSettings.columns.splice(i_1, 1);\n i_1 = i_1 - 1;\n }\n }\n if (col.type === 'string') {\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: ''\n });\n }\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: undefined\n });\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: null\n });\n }\n }\n // eslint-disable-next-line no-self-assign\n this.filterSettings.columns = this.filterSettings.columns;\n this.parent.dataBind();\n };\n Filter.prototype.getFilteredColsIndexByField = function (col) {\n var cols = this.filterSettings.columns;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].uid === col.uid || (col.isForeignColumn()\n && this.parent.getColumnByUid(col.uid).field === col.foreignKeyValue)) {\n return i;\n }\n }\n return -1;\n };\n /**\n * To trigger action complete event.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Filter.prototype.onActionComplete = function (e) {\n var args = !this.isRemove ? {\n currentFilterObject: this.currentFilterObject,\n /* tslint:disable:no-string-literal */\n currentFilteringColumn: !isNullOrUndefined(this.column) ? this.column.field : undefined,\n /* tslint:enable:no-string-literal */\n columns: this.filterSettings.columns, requestType: 'filtering', type: events.actionComplete\n } : {\n requestType: 'filtering', type: events.actionComplete\n };\n this.parent.trigger(events.actionComplete, extend(e, args));\n this.isRemove = false;\n };\n Filter.prototype.wireEvents = function () {\n EventHandler.add(this.parent.getHeaderContent(), 'keyup', this.keyUpHandlerImmediate, this);\n };\n Filter.prototype.unWireEvents = function () {\n EventHandler.remove(this.parent.getHeaderContent(), 'keyup', this.keyUpHandlerImmediate);\n };\n Filter.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.parent.getHeaderTable().classList.add('e-sortfilter');\n this.render();\n }\n };\n Filter.prototype.refreshFilterValue = function () {\n this.parent.removeEventListener(events.beforeDataBound, this.refreshFilterValueFn);\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.columns.length &&\n !this.parent.getCurrentViewRecords().length) {\n this.initialEnd();\n }\n };\n Filter.prototype.initialEnd = function () {\n this.parent.off(events.contentReady, this.initialEnd);\n if (this.parent.getColumns().length && this.filterSettings.columns.length) {\n var gObj = this.parent;\n this.contentRefresh = false;\n this.initialLoad = true;\n for (var _i = 0, _a = gObj.filterSettings.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n this.filterByColumn(col.field, col.operator, col.value, col.predicate, col.matchCase, col.ignoreAccent, col.actualFilterValue, col.actualOperator);\n }\n this.initialLoad = false;\n this.updateFilterMsg();\n this.contentRefresh = true;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Filter.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.setFullScreenDialog, this.setFullScreenDialog, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.filterComplete, this.onActionComplete, this);\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.keyPressed, this.keyUpHandler, this);\n this.parent.on(events.columnPositionChanged, this.columnPositionChanged, this);\n this.parent.on(events.headerRefreshed, this.render, this);\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.filterMenuClose, this.filterMenuClose, this);\n this.docClickHandler = this.clickHandler.bind(this);\n EventHandler.add(document, 'click', this.docClickHandler, this);\n EventHandler.add(this.parent.element, 'mousedown', this.refreshClearIcon, this);\n this.parent.on(events.filterOpen, this.columnMenuFilter, this);\n this.parent.on(events.click, this.filterIconClickHandler, this);\n this.parent.on('persist-data-changed', this.initialEnd, this);\n this.parent.on(events.closeFilterDialog, this.clickHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.refreshFilterValueFn = this.refreshFilterValue.bind(this);\n this.parent.addEventListener(events.beforeDataBound, this.refreshFilterValueFn);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Filter.prototype.removeEventListener = function () {\n EventHandler.remove(document, 'click', this.docClickHandler);\n EventHandler.remove(this.parent.element, 'mousedown', this.refreshClearIcon);\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.setFullScreenDialog, this.setFullScreenDialog);\n this.parent.off(events.uiUpdate, this.enableAfterRender);\n this.parent.off(events.filterComplete, this.onActionComplete);\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.keyPressed, this.keyUpHandler);\n this.parent.off(events.columnPositionChanged, this.columnPositionChanged);\n this.parent.off(events.headerRefreshed, this.render);\n this.parent.off(events.filterOpen, this.columnMenuFilter);\n this.parent.off(events.filterMenuClose, this.filterMenuClose);\n this.parent.off(events.click, this.filterIconClickHandler);\n this.parent.off(events.closeFilterDialog, this.clickHandler);\n this.parent.off(events.destroy, this.destroy);\n };\n Filter.prototype.refreshClearIcon = function (e) {\n if (this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar' &&\n e.target.closest('th') && e.target.closest('th').classList.contains('e-filterbarcell') &&\n e.target.classList.contains('e-clear-icon')) {\n var targetText = e.target.previousElementSibling;\n Input.setValue(null, targetText, 'Never', true);\n if (this.filterSettings.mode === 'Immediate') {\n this.removeFilteredColsByField(targetText.id.slice(0, -14)); //Length of _filterBarcell = 14\n }\n }\n };\n Filter.prototype.filterMenuClose = function () {\n this.fltrDlgDetails.isOpen = false;\n };\n /**\n * Filters the Grid row by fieldName, filterOperator, and filterValue.\n *\n * @param {string} fieldName - Defines the field name of the filter column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value which is used to filter records.\n * @param {string} predicate - Defines the relationship of one filter query with another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, then the filter records\n * the exact match or
    filters records that are case insensitive (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true, then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n * @returns {void}\n */\n Filter.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n var _this = this;\n var gObj = this.parent;\n var filterCell;\n this.column = gObj.grabColumnByFieldFromAllCols(fieldName);\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator\n && isNullOrUndefined(this.column.filterBarTemplate) && isNullOrUndefined(this.column.filterTemplate)) {\n filterOperator = this.getOperatorName(fieldName);\n }\n if (filterOperator === 'like' && filterValue.indexOf('%') === -1) {\n filterValue = '%' + filterValue + '%';\n }\n if (!this.column) {\n return;\n }\n if (this.filterSettings.type === 'FilterBar') {\n filterCell = gObj.getHeaderContent().querySelector('[id=\\'' + this.column.field + '_filterBarcell\\']');\n }\n if (!isNullOrUndefined(this.column.allowFiltering) && !this.column.allowFiltering) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: this.column.headerText });\n return;\n }\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, {\n instance: this, handler: this.filterByColumn, arg1: fieldName, arg2: filterOperator, arg3: filterValue, arg4: predicate,\n arg5: matchCase, arg6: ignoreAccent, arg7: actualFilterValue, arg8: actualOperator\n });\n return;\n }\n this.predicate = predicate ? predicate : Array.isArray(filterValue) ? 'or' : 'and';\n this.value = filterValue;\n this.matchCase = matchCase || false;\n this.ignoreAccent = this.ignoreAccent = !isNullOrUndefined(ignoreAccent) ? ignoreAccent : this.parent.filterSettings.ignoreAccent;\n this.fieldName = fieldName;\n this.operator = filterOperator;\n filterValue = !isNullOrUndefined(filterValue) ? filterValue.toString() : filterValue;\n if (filterValue === '') {\n filterValue = null;\n }\n if (this.column.type === 'number' || this.column.type === 'date') {\n this.matchCase = true;\n }\n gObj.getColumnHeaderByField(this.column.isForeignColumn() ? this.column.field : fieldName).setAttribute('aria-filtered', 'true');\n if (filterCell && this.filterSettings.type === 'FilterBar') {\n if ((filterValue && filterValue.length < 1) || (!this.filterByMethod &&\n this.checkForSkipInput(this.column, filterValue))) {\n this.filterStatusMsg = (filterValue && filterValue.length < 1) ? '' : this.l10n.getConstant('InvalidFilterMessage');\n this.updateFilterMsg();\n return;\n }\n if (filterCell.value !== filterValue) {\n filterCell.value = filterValue;\n }\n }\n if (!isNullOrUndefined(this.column.format)) {\n this.applyColumnFormat(filterValue);\n if (this.initialLoad && this.filterSettings.type === 'FilterBar') {\n filterCell.value = this.values[this.column.field];\n }\n }\n else {\n this.values[this.column.field] = filterValue; //this line should be above updateModel\n }\n var predObj = {\n field: this.fieldName,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: this.operator,\n value: this.value,\n type: this.column.type\n };\n var filterColumn = this.parent.filterSettings.columns.filter(function (fColumn) {\n return (fColumn.field === _this.fieldName);\n });\n if (filterColumn.length > 1 && !isNullOrUndefined(this.actualPredicate[this.fieldName])) {\n this.actualPredicate[this.fieldName].push(predObj);\n }\n else {\n this.actualPredicate[this.fieldName] = [predObj];\n }\n if (this.checkAlreadyColFiltered(this.column.field)) {\n return;\n }\n this.updateModel();\n };\n Filter.prototype.applyColumnFormat = function (filterValue) {\n var _this = this;\n var getFlvalue = (this.column.type === 'date' || this.column.type === 'datetime' || this.column.type === 'dateonly') ?\n new Date(filterValue) : parseFloat(filterValue);\n if ((this.column.type === 'date' || this.column.type === 'datetime' || this.column.type === 'dateonly') && filterValue &&\n Array.isArray(this.value) && filterValue.split(',').length > 1) {\n this.values[this.column.field] = ((filterValue).split(',')).map(function (val) {\n if (val === '') {\n val = null;\n }\n return _this.setFormatForFlColumn(new Date(val), _this.column);\n });\n }\n else {\n this.values[this.column.field] = this.setFormatForFlColumn(getFlvalue, this.column);\n }\n };\n // To skip the second time request to server while applying initial filtering - EJ2-44361\n Filter.prototype.skipUid = function (col) {\n var flag = true;\n var colLen = Object.keys((col));\n for (var i = 0; i < colLen.length; i++) {\n var key = Object.keys(col[colLen[parseInt(i.toString(), 10)]]);\n if (key.length === 1 && key[0] === 'uid') {\n flag = false;\n }\n }\n return flag;\n };\n Filter.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'columns':\n // eslint-disable-next-line no-case-declarations\n var col = 'columns';\n // eslint-disable-next-line no-case-declarations\n var args = {\n currentFilterObject: this.currentFilterObject, currentFilteringColumn: this.column ?\n this.column.field : undefined, action: 'filter', columns: this.filterSettings.columns,\n requestType: 'filtering', type: events.actionBegin, cancel: false\n };\n if (this.contentRefresh && this.skipUid(e.properties[\"\" + col])) {\n this.parent.notify(events.modelChanged, args);\n if (args.cancel) {\n if (isNullOrUndefined(this.prevFilterObject)) {\n this.filterSettings.columns.splice(this.filterSettings.columns.length - 1, 1);\n }\n else {\n this.filterSettings.columns[this.filterObjIndex] = this.prevFilterObject;\n }\n return;\n }\n this.updateFilterIcon();\n this.refreshFilterSettings();\n this.updateFilterMsg();\n this.updateFilter();\n }\n break;\n case 'showFilterBarStatus':\n if (e.properties[\"\" + prop]) {\n this.updateFilterMsg();\n }\n else if (this.parent.allowPaging) {\n this.parent.updateExternalMessage('');\n }\n break;\n case 'showFilterBarOperator':\n case 'type':\n this.parent.refreshHeader();\n this.refreshFilterSettings();\n break;\n }\n }\n };\n Filter.prototype.refreshFilterSettings = function () {\n if (this.filterSettings.type === 'FilterBar') {\n for (var i = 0; i < this.filterSettings.columns.length; i++) {\n this.column = this.parent.grabColumnByUidFromAllCols(this.filterSettings.columns[parseInt(i.toString(), 10)].uid);\n var filterValue = this.filterSettings.columns[parseInt(i.toString(), 10)].value;\n filterValue = !isNullOrUndefined(filterValue) && filterValue.toString();\n if (!isNullOrUndefined(this.column.format)) {\n this.applyColumnFormat(filterValue);\n }\n else {\n var key = this.filterSettings.columns[parseInt(i.toString(), 10)].field;\n this.values[\"\" + key] = this.filterSettings.columns[parseInt(i.toString(), 10)].value;\n }\n var filterElement = this.getFilterBarElement(this.column.field);\n if (filterElement) {\n if (this.cellText[this.filterSettings.columns[parseInt(i.toString(), 10)].field] !== ''\n && !isNullOrUndefined(this.cellText[this.filterSettings.columns[parseInt(i.toString(), 10)].field])) {\n filterElement.value = this.cellText[this.column.field];\n }\n else {\n filterElement.value = this.filterSettings.columns[parseInt(i.toString(), 10)].value;\n }\n }\n }\n if (this.filterSettings.columns.length === 0) {\n var col = this.parent.getColumns();\n for (var i = 0; i < col.length; i++) {\n var filterElement = this.getFilterBarElement(col[parseInt(i.toString(), 10)].field);\n if (filterElement && filterElement.value !== '') {\n filterElement.value = '';\n delete this.values[col[parseInt(i.toString(), 10)].field];\n }\n }\n }\n }\n };\n Filter.prototype.updateFilterIcon = function () {\n if (this.filterSettings.columns.length === 0 && this.parent.element.querySelector('.e-filtered')) {\n var fltrIconElement = [].slice.call(this.parent.element.getElementsByClassName('e-filtered'));\n for (var i = 0, len = fltrIconElement.length; i < len; i++) {\n fltrIconElement[parseInt(i.toString(), 10)].removeAttribute('aria-filtered');\n fltrIconElement[parseInt(i.toString(), 10)].classList.remove('e-filtered');\n }\n }\n };\n Filter.prototype.getFilterBarElement = function (col) {\n var selector = '[id=\\'' + col + '_filterBarcell\\']';\n var filterElement;\n if (selector && !isNullOrUndefined(this.element)) {\n filterElement = this.element.querySelector(selector);\n }\n return filterElement;\n };\n /**\n * @private\n * @returns {void}\n */\n Filter.prototype.refreshFilter = function () {\n this.refreshFilterSettings();\n this.updateFilterMsg();\n };\n /**\n * Clears all the filtered rows of the Grid.\n *\n * @param {string[]} fields - returns the fields\n * @returns {void}\n */\n Filter.prototype.clearFiltering = function (fields) {\n var _this = this;\n var cols = getActualPropFromColl(this.filterSettings.columns);\n if (!isNullOrUndefined(fields)) {\n this.refresh = false;\n fields.forEach(function (field) { _this.removeFilteredColsByField(field, false); });\n this.parent.setProperties({ filterSettings: { columns: this.filterSettings.columns } }, true);\n this.parent.renderModule.refresh();\n this.refresh = true;\n return;\n }\n if (isActionPrevent(this.parent)) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.clearFiltering });\n return;\n }\n for (var i = 0; i < cols.length; i++) {\n cols[parseInt(i.toString(), 10)].uid = cols[parseInt(i.toString(), 10)].uid\n || this.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field).uid;\n }\n var colUid = cols.map(function (f) { return f.uid; });\n var filteredcols = colUid.filter(function (item, pos) { return colUid.indexOf(item) === pos; });\n this.refresh = false;\n for (var i = 0, len = filteredcols.length; i < len; i++) {\n this.removeFilteredColsByField(this.parent.getColumnByUid(filteredcols[parseInt(i.toString(), 10)]).field, false);\n }\n this.refresh = true;\n if (filteredcols.length) {\n this.parent.renderModule.refresh();\n }\n if (this.parent.filterSettings.columns.length === 0 && this.parent.element.querySelector('.e-filtered')) {\n var fltrElement = [].slice.call(this.parent.element.getElementsByClassName('e-filtered'));\n for (var i = 0, len = fltrElement.length; i < len; i++) {\n fltrElement[0].removeAttribute('aria-filtered');\n fltrElement[0].classList.remove('e-filtered');\n }\n }\n this.isRemove = true;\n this.filterStatusMsg = '';\n this.updateFilterMsg();\n };\n Filter.prototype.checkAlreadyColFiltered = function (field) {\n var columns = this.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n if (col.field === field && col.value === this.value &&\n col.operator === this.operator && col.predicate === this.predicate) {\n return true;\n }\n }\n return false;\n };\n Filter.prototype.columnMenuFilter = function (args) {\n this.column = args.col;\n var ele = closest(args.target, '#' + args.id);\n if (args.isClose && !ele) {\n this.filterModule.closeDialog();\n }\n else if (ele) {\n this.filterDialogOpen(this.column, args.target);\n }\n };\n Filter.prototype.filterDialogOpen = function (col, target, left, top) {\n if (this.filterModule) {\n this.filterModule.closeDialog();\n }\n this.setFilterModel(col);\n this.filterModule.openDialog(this.createOptions(col, target, left, top));\n };\n /**\n * Create filter dialog options\n *\n * @param {Column} col - Filtering column detail.\n * @param {Element} target - Filter dialog target.\n * @param {number} left - Filter dialog left position.\n * @param {number} top - Filter dialog top position.\n * @returns {Object} returns the created dialog options\n * @hidden\n */\n Filter.prototype.createOptions = function (col, target, left, top) {\n var gObj = this.parent;\n var dataSource = col.filter.dataSource || gObj.dataSource && 'result' in gObj.dataSource ? gObj.dataSource :\n gObj.getDataModule().dataManager;\n var type = col.filter.type || this.parent.filterSettings.type;\n var options = {\n type: col.type, field: col.field, displayName: col.headerText,\n dataSource: dataSource, format: col.format, height: 800, columns: gObj.getColumns(),\n filteredColumns: gObj.filterSettings.columns, target: target, dataManager: gObj.getDataModule().dataManager,\n formatFn: col.getFormatter(), ignoreAccent: gObj.filterSettings.ignoreAccent,\n parserFn: col.getParser(), query: gObj.query, template: col.getFilterItemTemplate(),\n hideSearchbox: isNullOrUndefined(col.filter.hideSearchbox) ? false : col.filter.hideSearchbox,\n handler: this.filterHandler.bind(this), localizedStrings: gObj.getLocaleConstants(),\n position: { X: left, Y: top }, column: col, foreignKeyValue: col.foreignKeyValue,\n actualPredicate: this.actualPredicate, localeObj: gObj.localeObj,\n isRemote: gObj.getDataModule().isRemote(), allowCaseSensitive: this.filterSettings.enableCaseSensitivity,\n isResponsiveFilter: this.parent.enableAdaptiveUI,\n operator: this.actualPredicate[col.field] && type === 'Menu' ? this.actualPredicate[col.field][0].operator : 'equal'\n };\n return options;\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n Filter.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n var fCell;\n var cols = this.filterSettings.columns;\n if (isActionPrevent(this.parent)) {\n var args = { instance: this, handler: this.removeFilteredColsByField, arg1: field, arg2: isClearFilterBar };\n this.parent.notify(events.preventBatch, args);\n return;\n }\n var colUid = cols.map(function (f) { return f.uid; });\n var filteredColsUid = colUid.filter(function (item, pos) { return colUid.indexOf(item) === pos; });\n var _loop_1 = function (i, len) {\n cols[parseInt(i.toString(), 10)].uid = cols[parseInt(i.toString(), 10)].uid\n || this_1.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field).uid;\n var len_1 = cols.length;\n var column = this_1.parent.grabColumnByUidFromAllCols(filteredColsUid[parseInt(i.toString(), 10)]);\n if (column.field === field || (column.field === column.foreignKeyValue && column.isForeignColumn())) {\n var currentPred = this_1.filterSettings.columns.filter(function (e) {\n return e.uid === column.uid;\n })[0];\n if (this_1.filterSettings.type === 'FilterBar' && !isClearFilterBar) {\n var selector = '[id=\\'' + column.field + '_filterBarcell\\']';\n fCell = this_1.parent.getHeaderContent().querySelector(selector);\n if (fCell) {\n fCell.value = '';\n delete this_1.values[\"\" + field];\n }\n }\n while (len_1--) {\n if (cols[parseInt(len_1.toString(), 10)].uid === column.uid) {\n cols.splice(len_1, 1);\n }\n }\n var fltrElement = this_1.parent.getColumnHeaderByField(column.field);\n fltrElement.removeAttribute('aria-filtered');\n if (this_1.filterSettings.type !== 'FilterBar' || this_1.parent.showColumnMenu) {\n var iconClass = this_1.parent.showColumnMenu && column.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n fltrElement.querySelector(iconClass).classList.remove('e-filtered');\n }\n this_1.isRemove = true;\n if (this_1.actualPredicate[\"\" + field]) {\n delete this_1.actualPredicate[\"\" + field];\n }\n if (this_1.values[\"\" + field]) {\n delete this_1.values[\"\" + field];\n }\n if (this_1.refresh) {\n this_1.parent.notify(events.modelChanged, {\n requestType: 'filtering', type: events.actionBegin, currentFilterObject: currentPred,\n currentFilterColumn: column, action: 'clearFilter'\n });\n }\n return \"break\";\n }\n };\n var this_1 = this;\n for (var i = 0, len = filteredColsUid.length; i < len; i++) {\n var state_1 = _loop_1(i, len);\n if (state_1 === \"break\")\n break;\n }\n this.updateFilterMsg();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Filter.prototype.getModuleName = function () {\n return 'filter';\n };\n Filter.prototype.keyUpHandlerImmediate = function (e) {\n if (e.keyCode !== 13) {\n this.keyUpHandler(e);\n }\n };\n Filter.prototype.keyUpHandler = function (e) {\n var gObj = this.parent;\n var target = e.target;\n if (target && matches(target, '.e-filterbar input')) {\n var closeHeaderEle = closest(target, 'th.e-filterbarcell');\n this.column = gObj.getColumnByUid(closeHeaderEle.getAttribute('e-mappinguid'));\n if (!this.column) {\n return;\n }\n if (e.action === 'altDownArrow' && this.parent.filterSettings.showFilterBarOperator) {\n var dropDownListInput = closest(target, 'span').querySelector('.e-filterbaroperator');\n dropDownListInput.ej2_instances[0].showPopup();\n dropDownListInput.focus();\n }\n if ((this.filterSettings.mode === 'Immediate' || (e.keyCode === 13 &&\n !e.target.classList.contains('e-filterbaroperator')))\n && e.keyCode !== 9 && !this.column.filterTemplate) {\n this.value = target.value.trim();\n this.processFilter(e);\n }\n }\n if (e.action === 'altDownArrow' && this.filterSettings.type !== 'FilterBar') {\n var element = gObj.focusModule.currentInfo.element;\n if (element && element.classList.contains('e-headercell')) {\n var column = gObj.getColumnByUid(element.firstElementChild.getAttribute('e-mappinguid'));\n this.openMenuByField(column.field);\n this.parent.focusModule.clearIndicator();\n }\n }\n if (e.action === 'escape' && this.filterSettings.type === 'Menu' && this.filterModule) {\n this.filterModule.closeDialog();\n gObj.notify(events.restoreFocus, {});\n }\n };\n Filter.prototype.updateCrossIcon = function (element) {\n if (element.value.length) {\n element.nextElementSibling.classList.remove('e-hide');\n }\n };\n Filter.prototype.updateFilterMsg = function () {\n if (this.filterSettings.type === 'FilterBar') {\n var gObj = this.parent;\n var getFormatFlValue = void 0;\n var columns = this.filterSettings.columns;\n var column = void 0;\n if (!this.filterSettings.showFilterBarStatus) {\n return;\n }\n if (columns.length > 0 && this.filterStatusMsg !== this.l10n.getConstant('InvalidFilterMessage')) {\n this.filterStatusMsg = '';\n for (var index = 0; index < columns.length; index++) {\n column = gObj.grabColumnByUidFromAllCols(columns[parseInt(index.toString(), 10)].uid)\n || gObj.grabColumnByFieldFromAllCols(columns[parseInt(index.toString(), 10)].field);\n if (index) {\n this.filterStatusMsg += ' && ';\n }\n if (!isNullOrUndefined(column.format)) {\n var flValue = (column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly') ?\n this.valueFormatter.fromView(this.values[column.field], column.getParser(), (column.type === 'dateonly' ? 'date' : column.type)) :\n this.values[column.field];\n if (!(column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly')) {\n var formater = this.serviceLocator.getService('valueFormatter');\n getFormatFlValue = formater.toView(flValue, column.getParser()).toString();\n }\n else {\n getFormatFlValue = this.setFormatForFlColumn(flValue, column);\n }\n this.filterStatusMsg += column.headerText + ': ' + getFormatFlValue;\n }\n else {\n this.filterStatusMsg += column.headerText + ': ' + this.values[column.field];\n }\n }\n }\n if (gObj.allowPaging) {\n gObj.updateExternalMessage(this.filterStatusMsg);\n }\n //TODO: virtual paging\n this.filterStatusMsg = '';\n }\n };\n Filter.prototype.setFormatForFlColumn = function (value, column) {\n var formater = this.serviceLocator.getService('valueFormatter');\n return formater.toView(value, column.getFormatter()).toString();\n };\n Filter.prototype.checkForSkipInput = function (column, value) {\n var isSkip;\n if (column.type === 'number') {\n if (DataUtil.operatorSymbols[\"\" + value] || this.skipNumberInput.indexOf(value) > -1) {\n isSkip = true;\n }\n }\n else if (column.type === 'string') {\n for (var _i = 0, value_1 = value; _i < value_1.length; _i++) {\n var val = value_1[_i];\n if (this.skipStringInput.indexOf(val) > -1) {\n isSkip = true;\n }\n }\n }\n return isSkip;\n };\n Filter.prototype.processFilter = function (e) {\n this.stopTimer();\n this.startTimer(e);\n };\n Filter.prototype.startTimer = function (e) {\n var _this = this;\n this.timer = window.setInterval(function () { _this.onTimerTick(); }, e.keyCode === 13 ? 0 : this.filterSettings.immediateModeDelay);\n };\n Filter.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n Filter.prototype.onTimerTick = function () {\n var selector = '[id=\\'' + this.column.field + '_filterBarcell\\']';\n var filterElement = this.element.querySelector(selector);\n if (!filterElement && this.parent.isFrozenGrid()) {\n filterElement = this.parent.getHeaderContent().querySelector(selector);\n }\n var filterValue;\n this.cellText[this.column.field] = filterElement.value;\n this.stopTimer();\n if (!isNullOrUndefined(this.column.filterBarTemplate)) {\n var templateRead = this.column.filterBarTemplate.read;\n if (typeof templateRead === 'string') {\n templateRead = getValue(templateRead, window);\n }\n if (!isNullOrUndefined(templateRead)) {\n this.value = templateRead.call(this, filterElement);\n }\n }\n else {\n filterValue = JSON.parse(JSON.stringify(filterElement.value));\n }\n if (isNullOrUndefined(this.value) || this.value === '') {\n this.removeFilteredColsByField(this.column.field);\n return;\n }\n this.validateFilterValue(this.value);\n this.filterByMethod = false;\n this.filterByColumn(this.column.field, this.operator, this.value, this.predicate, this.filterSettings.enableCaseSensitivity, this.ignoreAccent);\n this.filterByMethod = true;\n filterElement.value = filterValue;\n this.updateFilterMsg();\n };\n Filter.prototype.validateFilterValue = function (value) {\n var skipInput;\n var index;\n this.matchCase = this.filterSettings.enableCaseSensitivity;\n switch (this.column.type) {\n case 'number':\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n this.operator = this.filterOperators.equal;\n }\n skipInput = ['>', '<', '=', '!'];\n for (var i = 0; i < value.length; i++) {\n if (skipInput.indexOf(value[parseInt(i.toString(), 10)]) > -1) {\n index = i;\n break;\n }\n }\n this.getOperator(value.substring(index));\n if (index !== 0) {\n this.value = value.substring(0, index);\n }\n if (this.value !== '' && value.length >= 1) {\n this.value = this.valueFormatter.fromView(this.value, this.column.getParser(), this.column.type);\n }\n if (isNaN(this.value)) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n break;\n case 'date':\n case 'datetime':\n this.operator = this.filterOperators.equal;\n if (this.value !== '' && !(this.value instanceof Date)) {\n this.getOperator(value);\n this.value = this.valueFormatter.fromView(this.value, this.column.getParser(), this.column.type);\n if (isNullOrUndefined(this.value)) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n }\n break;\n case 'string':\n this.matchCase = false;\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n if (value.indexOf('*') !== -1 || value.indexOf('?') !== -1 || value.indexOf('%3f') !== -1) {\n this.operator = this.filterOperators.wildCard;\n }\n else if (value.indexOf('%') !== -1) {\n this.operator = this.filterOperators.like;\n }\n else {\n this.operator = this.filterOperators.startsWith;\n }\n }\n break;\n case 'boolean':\n if (value.toLowerCase() === 'true' || value === '1') {\n this.value = true;\n }\n else if (value.toLowerCase() === 'false' || value === '0') {\n this.value = false;\n }\n else if (value.length) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n this.operator = this.filterOperators.equal;\n break;\n default:\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n this.operator = this.filterOperators.equal;\n }\n }\n };\n Filter.prototype.getOperator = function (value) {\n var singleOp = value.charAt(0);\n var multipleOp = value.slice(0, 2);\n var operators = extend({ '=': this.filterOperators.equal, '!': this.filterOperators.notEqual }, DataUtil.operatorSymbols);\n // eslint-disable-next-line no-prototype-builtins\n if (operators.hasOwnProperty(singleOp) || operators.hasOwnProperty(multipleOp)) {\n this.operator = operators[\"\" + singleOp];\n this.value = value.substring(1);\n if (!this.operator) {\n this.operator = operators[\"\" + multipleOp];\n this.value = value.substring(2);\n }\n }\n if (this.operator === this.filterOperators.lessThan || this.operator === this.filterOperators.greaterThan) {\n if (this.value.charAt(0) === '=') {\n this.operator = this.operator + 'orequal';\n this.value = this.value.substring(1);\n }\n }\n };\n Filter.prototype.columnPositionChanged = function () {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n return;\n }\n };\n Filter.prototype.getLocalizedCustomOperators = function () {\n var numOptr = [\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'greaterthan', text: this.l10n.getConstant('GreaterThan') },\n { value: 'greaterthanorequal', text: this.l10n.getConstant('GreaterThanOrEqual') },\n { value: 'lessthan', text: this.l10n.getConstant('LessThan') },\n { value: 'lessthanorequal', text: this.l10n.getConstant('LessThanOrEqual') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') },\n { value: 'isnull', text: this.l10n.getConstant('IsNull') },\n { value: 'isnotnull', text: this.l10n.getConstant('NotNull') }\n ];\n this.customOperators = {\n stringOperator: [\n { value: 'startswith', text: this.l10n.getConstant('StartsWith') },\n { value: 'endswith', text: this.l10n.getConstant('EndsWith') },\n { value: 'contains', text: this.l10n.getConstant('Contains') },\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'isempty', text: this.l10n.getConstant('IsEmpty') },\n { value: 'doesnotstartwith', text: this.l10n.getConstant('NotStartsWith') },\n { value: 'doesnotendwith', text: this.l10n.getConstant('NotEndsWith') },\n { value: 'doesnotcontain', text: this.l10n.getConstant('NotContains') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') },\n { value: 'isnotempty', text: this.l10n.getConstant('IsNotEmpty') },\n { value: 'like', text: this.l10n.getConstant('Like') }\n ],\n numberOperator: numOptr,\n dateOperator: numOptr,\n datetimeOperator: numOptr,\n dateonlyOperator: numOptr,\n booleanOperator: [\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') }\n ]\n };\n };\n /**\n * @param {string} field - specifies the field name\n * @returns {void}\n * @hidden\n */\n Filter.prototype.openMenuByField = function (field) {\n var gObj = this.parent;\n if (gObj.enableAdaptiveUI) {\n this.showCustomFilter(false);\n return;\n }\n var column = gObj.getColumnByField(field);\n var header = gObj.getColumnHeaderByField(field);\n var target = header.querySelector('.e-filtermenudiv');\n if (!target) {\n return;\n }\n var gClient = gObj.element.getBoundingClientRect();\n var fClient = target.getBoundingClientRect();\n this.filterDialogOpen(column, target, fClient.right - gClient.left, fClient.bottom - gClient.top);\n };\n Filter.prototype.filterIconClickHandler = function (e) {\n var target = e.target;\n if (target.classList.contains('e-filtermenudiv') && (this.parent.filterSettings.type === 'Menu' ||\n this.parent.filterSettings.type === 'CheckBox' || this.parent.filterSettings.type === 'Excel')) {\n var gObj = this.parent;\n var col = gObj.getColumnByUid(parentsUntil(target, 'e-headercell').firstElementChild.getAttribute('e-mappinguid'));\n this.column = col;\n if (this.fltrDlgDetails.field === col.field && this.fltrDlgDetails.isOpen) {\n return;\n }\n if (this.filterModule) {\n this.filterModule.closeDialog();\n }\n this.fltrDlgDetails = { field: col.field, isOpen: true };\n this.openMenuByField(col.field);\n }\n };\n Filter.prototype.clickHandler = function (e) {\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n if (parentsUntil(e.target, 'e-filterbarcell') &&\n e.target.classList.contains('e-input-group-icon')) {\n var filterOperatorElement = closest(e.target, 'div').\n querySelector('.e-filterbaroperator');\n if (filterOperatorElement) {\n filterOperatorElement.focus();\n }\n else {\n e.target.focus();\n }\n }\n if (e.target.classList.contains('e-list-item')) {\n var inputId = document.querySelector('.e-popup-open').getAttribute('id').replace('_popup', '');\n if (inputId.indexOf('grid-column') !== -1) {\n closest(document.getElementById(inputId), 'div').querySelector('.e-filtertext').focus();\n }\n }\n }\n if (this.filterSettings.mode === 'Immediate' || this.parent.filterSettings.type === 'Menu' ||\n this.parent.filterSettings.type === 'CheckBox' || this.parent.filterSettings.type === 'Excel') {\n var target = e.target;\n var datepickerEle = target.classList.contains('e-day'); // due to datepicker popup cause\n var dialog = parentsUntil(this.parent.element, 'e-dialog');\n var hasDialog = false;\n var popupEle = parentsUntil(target, 'e-popup');\n var hasDialogClosed = this.parent.element.classList.contains('e-device') ? document.querySelector('.e-filter-popup')\n : this.parent.element.querySelector('.e-filter-popup');\n if (dialog && popupEle) {\n hasDialog = dialog.id === popupEle.id;\n }\n if ((hasDialogClosed && (parentsUntil(target, 'e-excel-ascending') ||\n parentsUntil(target, 'e-excel-descending')))) {\n this.filterModule.closeDialog(target);\n }\n if (parentsUntil(target, 'e-filter-popup') || target.classList.contains('e-filtermenudiv')) {\n return;\n }\n else if (this.filterModule && (!parentsUntil(target, 'e-popup-wrapper')\n && (!closest(target, '.e-filter-item.e-menu-item'))) && !datepickerEle) {\n if ((hasDialog && (!parentsUntil(target, 'e-filter-popup'))\n && (!parentsUntil(target, 'e-popup-flmenu'))) || (!popupEle && hasDialogClosed)) {\n this.filterModule.isresetFocus = parentsUntil(target, 'e-grid') &&\n parentsUntil(target, 'e-grid').id === this.parent.element.id;\n this.filterModule.closeDialog(target);\n }\n }\n }\n };\n Filter.prototype.filterHandler = function (args) {\n this.actualPredicate[args.field] = args.actualPredicate;\n var dataManager = new DataManager(this.filterSettings.columns);\n var query = new Query().where('field', this.filterOperators.equal, args.field);\n var result = dataManager.executeLocal(query);\n for (var i = 0; i < result.length; i++) {\n var index = -1;\n for (var j = 0; j < this.filterSettings.columns.length; j++) {\n if (result[parseInt(i.toString(), 10)].field === this.filterSettings.columns[parseInt(j.toString(), 10)].field) {\n index = j;\n break;\n }\n }\n if (index !== -1) {\n this.filterSettings.columns.splice(index, 1);\n }\n }\n if (this.values[args.field]) {\n delete this.values[args.field];\n }\n var col = this.parent.getColumnByField(args.field);\n var iconClass = this.parent.showColumnMenu && col.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var filterIconElement = this.parent.getColumnHeaderByField(args.field).querySelector(iconClass);\n if (args.action === 'filtering') {\n this.filterSettings.columns = this.filterSettings.columns.concat(args.filterCollection);\n if (this.filterSettings.columns.length && filterIconElement) {\n filterIconElement.classList.add('e-filtered');\n }\n }\n else {\n if (filterIconElement) {\n filterIconElement.classList.remove('e-filtered');\n }\n args.requestType = 'filtering';\n this.parent.renderModule.refresh(args); //hot-fix onpropertychanged not working for object { array }\n }\n this.parent.dataBind();\n };\n Filter.prototype.updateFilter = function () {\n var cols = this.filterSettings.columns;\n this.actualPredicate = {};\n for (var i = 0; i < cols.length; i++) {\n this.column = this.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field) ||\n getColumnByForeignKeyValue(cols[parseInt(i.toString(), 10)].field, this.parent.getForeignKeyColumns());\n var fieldName = cols[parseInt(i.toString(), 10)].field;\n if (!this.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field)) {\n fieldName = getColumnByForeignKeyValue(cols[parseInt(i.toString(), 10)].field, this.parent.getForeignKeyColumns()).field;\n }\n this.refreshFilterIcon(fieldName, cols[parseInt(i.toString(), 10)].operator, cols[parseInt(i.toString(), 10)].value, cols[parseInt(i.toString(), 10)].type, cols[parseInt(i.toString(), 10)].predicate, cols[parseInt(i.toString(), 10)].matchCase, cols[parseInt(i.toString(), 10)].ignoreAccent, cols[parseInt(i.toString(), 10)].uid);\n }\n };\n Filter.prototype.refreshFilterIcon = function (fieldName, operator, value, type, predicate, matchCase, ignoreAccent, uid) {\n var obj = {\n field: fieldName,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: operator,\n value: value,\n type: type\n };\n if (this.actualPredicate[\"\" + fieldName]) {\n this.actualPredicate[\"\" + fieldName].push(obj);\n }\n else {\n this.actualPredicate[\"\" + fieldName] = [obj];\n }\n var field = uid ? this.parent.grabColumnByUidFromAllCols(uid).field : fieldName;\n this.addFilteredClass(field);\n };\n Filter.prototype.addFilteredClass = function (fieldName) {\n var filterIconElement;\n var col = this.parent.getColumnByField(fieldName);\n if (this.parent.showColumnMenu && col.showColumnMenu) {\n filterIconElement = this.parent.getColumnHeaderByField(fieldName).querySelector('.e-columnmenu');\n }\n else if (col) {\n filterIconElement = this.parent.getColumnHeaderByField(fieldName).querySelector('.e-icon-filter');\n }\n if (filterIconElement) {\n filterIconElement.classList.add('e-filtered');\n }\n };\n /**\n * @hidden\n * @returns {FilterUI} returns the FilterUI\n */\n Filter.prototype.getFilterUIInfo = function () {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n };\n /**\n * @param {string} field - specifies the field name\n * @returns {string} returns the operator name\n * @hidden\n */\n Filter.prototype.getOperatorName = function (field) {\n return document.getElementById(this.parent.getColumnByField(field).uid).ej2_instances[0].value;\n };\n /**\n * Renders checkbox items in Menu filter dialog.\n *\n * @returns {void}\n */\n Filter.prototype.renderCheckboxOnFilterMenu = function () {\n return this.filterModule.renderCheckBoxMenu();\n };\n return Filter;\n}());\nexport { Filter };\n","import { print as printWindow, createElement, detach, classList, selectAll, extend } from '@syncfusion/ej2-base';\nimport { getPrintGridModel } from '../base/util';\nimport { Grid } from '../base/grid';\nimport * as events from '../base/constant';\nimport { Deferred } from '@syncfusion/ej2-data';\nimport * as literals from '../base/string-literals';\n/**\n * @returns {string[]} returns the cloned property\n * @hidden\n */\nexport function getCloneProperties() {\n return ['aggregates', 'allowGrouping', 'allowFiltering', 'allowMultiSorting', 'allowReordering', 'allowSorting',\n 'allowTextWrap', 'childGrid', 'columns', 'currentViewData', 'dataSource', 'detailTemplate', 'enableAltRow',\n 'enableColumnVirtualization', 'filterSettings', 'gridLines',\n 'groupSettings', 'height', 'locale', 'pageSettings', 'printMode', 'query', 'queryString', 'enableRtl',\n 'rowHeight', 'rowTemplate', 'sortSettings', 'textWrapSettings', 'allowPaging', 'hierarchyPrintMode', 'searchSettings',\n 'queryCellInfo', 'beforeDataBound'];\n}\n/**\n *\n * The `Print` module is used to handle print action.\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for the Grid print module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {Scroll} scrollModule - specifies the scroll module\n * @hidden\n */\n function Print(parent, scrollModule) {\n this.isAsyncPrint = false;\n this.defered = new Deferred();\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.contentReady, this.isContentReady(), this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.on(events.onEmpty, this.onEmpty.bind(this));\n this.parent.on(events.hierarchyPrint, this.hierarchyPrint, this);\n this.scrollModule = scrollModule;\n }\n Print.prototype.isContentReady = function () {\n var _this = this;\n if (this.isPrintGrid() && (this.parent.hierarchyPrintMode === 'None' || !this.parent.childGrid)) {\n return this.contentReady;\n }\n return function () {\n _this.defered.promise.then(function () {\n _this.contentReady();\n });\n if (_this.isPrintGrid()) {\n _this.hierarchyPrint();\n }\n };\n };\n Print.prototype.hierarchyPrint = function () {\n this.removeColGroup(this.parent);\n var printGridObj = window.printGridObj;\n if (printGridObj && !printGridObj.element.querySelector('[aria-busy=true')) {\n printGridObj.printModule.defered.resolve();\n }\n };\n /**\n * By default, prints all the Grid pages and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./printmode/).\n *\n * @returns {void}\n */\n Print.prototype.print = function () {\n this.renderPrintGrid();\n };\n Print.prototype.onEmpty = function () {\n if (this.isPrintGrid()) {\n this.contentReady();\n }\n };\n Print.prototype.actionBegin = function () {\n if (this.isPrintGrid()) {\n this.isAsyncPrint = true;\n }\n };\n Print.prototype.renderPrintGrid = function () {\n var gObj = this.parent;\n var element = createElement('div', {\n id: this.parent.element.id + '_print', className: gObj.element.className + ' e-print-grid'\n });\n element.classList.remove('e-gridhover');\n document.body.appendChild(element);\n var printGrid = new Grid(getPrintGridModel(gObj, gObj.hierarchyPrintMode));\n for (var i = 0; i < printGrid.columns.length; i++) {\n printGrid.columns[parseInt(i.toString(), 10)] = extend({}, printGrid.columns[parseInt(i.toString(), 10)]);\n if (gObj.isFrozenGrid() && !gObj.getFrozenColumns()) {\n printGrid.columns[parseInt(i.toString(), 10)].freeze = undefined;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.isAngular) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n printGrid.viewContainerRef = this.parent.viewContainerRef;\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n printGrid.load = function () { };\n printGrid.query = gObj.getQuery().clone();\n window.printGridObj = printGrid;\n printGrid.isPrinting = true;\n var modules = printGrid.getInjectedModules();\n var injectedModues = gObj.getInjectedModules();\n if (!modules || modules.length !== injectedModues.length) {\n printGrid.setInjectedModules(injectedModues);\n }\n gObj.notify(events.printGridInit, { element: element, printgrid: printGrid });\n this.parent.log('exporting_begin', this.getModuleName());\n printGrid.registeredTemplate = this.parent.registeredTemplate;\n printGrid.isVue = this.parent.isVue;\n printGrid.appendTo(element);\n if (!gObj.isVue3) {\n printGrid.trigger = gObj.trigger;\n }\n };\n Print.prototype.contentReady = function () {\n if (this.isPrintGrid()) {\n var gObj = this.parent;\n if (this.isAsyncPrint) {\n this.printGrid();\n return;\n }\n var args = {\n requestType: 'print',\n element: gObj.element,\n selectedRows: gObj.getContentTable().querySelectorAll('tr[aria-selected=\"true\"]'),\n cancel: false,\n hierarchyPrintMode: gObj.hierarchyPrintMode\n };\n if (!this.isAsyncPrint) {\n gObj.trigger(events.beforePrint, args);\n }\n if (args.cancel) {\n detach(gObj.element);\n return;\n }\n if (!this.isAsyncPrint) {\n this.printGrid();\n }\n }\n };\n Print.prototype.printGrid = function () {\n var gObj = this.parent;\n // Height adjustment on print grid\n if (gObj.height !== 'auto') { // if scroller enabled\n var cssProps = this.scrollModule.getCssProperties();\n var contentDiv = gObj.element.querySelector('.' + literals.content);\n var headerDiv = gObj.element.querySelector('.' + literals.gridHeader);\n contentDiv.style.height = 'auto';\n contentDiv.style.overflowY = 'auto';\n headerDiv.style[cssProps.padding] = '';\n headerDiv.firstElementChild.style[cssProps.border] = '';\n }\n // Grid alignment adjustment on grouping\n if (gObj.allowGrouping) {\n if (!gObj.groupSettings.columns.length) {\n gObj.element.querySelector('.e-groupdroparea').style.display = 'none';\n }\n else {\n this.removeColGroup(gObj);\n }\n }\n // hide horizontal scroll\n for (var _i = 0, _a = [].slice.call(gObj.element.getElementsByClassName(literals.content)); _i < _a.length; _i++) {\n var element = _a[_i];\n element.style.overflowX = 'hidden';\n }\n // Hide the waiting popup\n var waitingPop = [].slice.call(gObj.element.getElementsByClassName('e-spin-show'));\n for (var _b = 0, _c = [].slice.call(waitingPop); _b < _c.length; _b++) {\n var element = _c[_b];\n classList(element, ['e-spin-hide'], ['e-spin-show']);\n }\n this.printGridElement(gObj);\n gObj.isPrinting = false;\n delete window.printGridObj;\n var args = {\n element: gObj.element\n };\n gObj.trigger(events.printComplete, args);\n gObj.destroy();\n this.parent.log('exporting_complete', this.getModuleName());\n };\n Print.prototype.printGridElement = function (gObj) {\n classList(gObj.element, ['e-print-grid-layout'], ['e-print-grid']);\n if (gObj.isPrinting) {\n detach(gObj.element);\n }\n this.printWind = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n this.printWind.moveTo(0, 0);\n this.printWind.resizeTo(screen.availWidth, screen.availHeight);\n this.printWind = printWindow(gObj.element, this.printWind);\n };\n Print.prototype.removeColGroup = function (gObj) {\n var depth = gObj.groupSettings.columns.length;\n var element = gObj.element;\n var id = '#' + gObj.element.id;\n if (!depth) {\n return;\n }\n var groupCaption = selectAll('.e-groupcaption', element);\n var colSpan = groupCaption[depth - 1].getAttribute('colspan');\n for (var i = 0; i < groupCaption.length; i++) {\n groupCaption[parseInt(i.toString(), 10)].setAttribute('colspan', colSpan);\n }\n var colGroups = selectAll(\"colgroup\" + id + \"colgroup\", element);\n var contentColGroups = selectAll('.e-content colgroup', element);\n this.hideColGroup(colGroups, depth);\n this.hideColGroup(contentColGroups, depth);\n };\n Print.prototype.hideColGroup = function (colGroups, depth) {\n for (var i = 0; i < colGroups.length; i++) {\n for (var j = 0; j < depth; j++) {\n colGroups[parseInt(i.toString(), 10)].children[parseInt(j.toString(), 10)].style.display = 'none';\n }\n }\n };\n /**\n * To destroy the print\n *\n * @returns {boolean} returns the isPrintGrid or not\n * @hidden\n */\n Print.prototype.isPrintGrid = function () {\n return this.parent.element.id.indexOf('_print') > 0 && this.parent.isPrinting;\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n Print.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.contentReady, this.contentReady.bind(this));\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.off(events.onEmpty, this.onEmpty.bind(this));\n this.parent.off(events.hierarchyPrint, this.hierarchyPrint);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Print.prototype.getModuleName = function () {\n return 'print';\n };\n Print.printGridProp = getCloneProperties().concat([events.beforePrint, events.printComplete, events.load]);\n return Print;\n}());\nexport { Print };\n","import { Browser } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { closest, classList } from '@syncfusion/ej2-base';\nimport { ResponsiveDialogAction } from '../base/enum';\nimport { setCssInGridPopUp, getActualPropFromColl, isActionPrevent, iterateExtend, parentsUntil } from '../base/util';\nimport { addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\nimport { AriaService } from '../services/aria-service';\nimport * as literals from '../base/string-literals';\n/**\n *\n * The `Sort` module is used to handle sorting action.\n */\nvar Sort = /** @class */ (function () {\n /**\n * Constructor for Grid sorting module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {SortSettings} sortSettings - specifies the SortSettings\n * @param {string[]} sortedColumns - specifies the string\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function Sort(parent, sortSettings, sortedColumns, locator) {\n this.contentRefresh = true;\n this.isModelChanged = true;\n this.aria = new AriaService();\n this.currentTarget = null;\n this.parent = parent;\n this.sortSettings = sortSettings;\n this.sortedColumns = sortedColumns;\n this.serviceLocator = locator;\n this.focus = locator.getService('focus');\n this.addEventListener();\n this.setFullScreenDialog();\n }\n /**\n * The function used to update sortSettings\n *\n * @returns {void}\n * @hidden\n */\n Sort.prototype.updateModel = function () {\n var sortedColumn = { field: this.columnName, direction: this.direction };\n var index;\n var gCols = this.parent.groupSettings.columns;\n var flag = false;\n if (!this.isMultiSort) {\n if (!gCols.length) {\n this.sortSettings.columns = [sortedColumn];\n }\n else {\n var sortedCols = [];\n for (var i = 0, len = gCols.length; i < len; i++) {\n index = this.getSortedColsIndexByField(gCols[parseInt(i.toString(), 10)], sortedCols);\n if (this.columnName === gCols[parseInt(i.toString(), 10)]) {\n flag = true;\n sortedCols.push(sortedColumn);\n }\n else {\n var sCol = this.getSortColumnFromField(gCols[parseInt(i.toString(), 10)]);\n sortedCols.push({ field: sCol.field, direction: sCol.direction, isFromGroup: sCol.isFromGroup });\n }\n }\n if (!flag) {\n sortedCols.push(sortedColumn);\n }\n this.sortSettings.columns = sortedCols;\n }\n }\n else {\n index = this.getSortedColsIndexByField(this.columnName);\n if (index > -1) {\n this.sortSettings.columns.splice(index, 1);\n }\n this.sortSettings.columns.push(sortedColumn);\n // eslint-disable-next-line no-self-assign\n this.sortSettings.columns = this.sortSettings.columns;\n }\n this.parent.dataBind();\n this.lastSortedCol = this.columnName;\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Sort.prototype.onActionComplete = function (e) {\n var args = !this.isRemove ? {\n columnName: this.columnName, direction: this.direction, requestType: 'sorting', type: events.actionComplete\n } : { requestType: 'sorting', type: events.actionComplete };\n this.isRemove = false;\n this.parent.trigger(events.actionComplete, extend(e, args));\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to sort.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previously sorted columns are to be maintained.\n * @returns {void}\n */\n Sort.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n var gObj = this.parent;\n if (this.parent.getColumnByField(columnName).allowSorting === false || this.parent.isContextMenuOpen()) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: columnName });\n return;\n }\n if (!gObj.allowMultiSorting) {\n isMultiSort = gObj.allowMultiSorting;\n }\n if (this.isActionPrevent()) {\n gObj.notify(events.preventBatch, {\n instance: this, handler: this.sortColumn,\n arg1: columnName, arg2: direction, arg3: isMultiSort\n });\n return;\n }\n this.backupSettings();\n this.columnName = columnName;\n this.direction = direction;\n this.isMultiSort = isMultiSort;\n this.removeSortIcons();\n this.updateSortedCols(columnName, isMultiSort);\n this.updateModel();\n };\n Sort.prototype.setFullScreenDialog = function () {\n if (this.serviceLocator) {\n this.serviceLocator.registerAdaptiveService(this, this.parent.enableAdaptiveUI, ResponsiveDialogAction.isSort);\n }\n };\n Sort.prototype.backupSettings = function () {\n this.lastSortedCols = iterateExtend(this.sortSettings.columns);\n this.lastCols = this.sortedColumns;\n };\n Sort.prototype.restoreSettings = function () {\n this.isModelChanged = false;\n this.isMultiSort = true;\n this.parent.setProperties({ sortSettings: { columns: this.lastSortedCols } }, true);\n //this.parent.sortSettings.columns = this.lastSortedCols;\n this.sortedColumns = this.lastCols;\n this.isModelChanged = true;\n };\n Sort.prototype.updateSortedCols = function (columnName, isMultiSort) {\n if (!isMultiSort) {\n if (this.parent.allowGrouping) {\n for (var i = 0, len = this.sortedColumns.length; i < len; i++) {\n if (this.parent.groupSettings.columns.indexOf(this.sortedColumns[parseInt(i.toString(), 10)]) < 0) {\n this.sortedColumns.splice(i, 1);\n len--;\n i--;\n }\n }\n }\n else {\n this.sortedColumns.splice(0, this.sortedColumns.length);\n }\n }\n if (this.sortedColumns.indexOf(columnName) < 0) {\n this.sortedColumns.push(columnName);\n }\n };\n /**\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Sort.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (this.contentRefresh) {\n var args = this.sortSettings.columns.length ? {\n columnName: this.columnName, direction: this.direction, requestType: 'sorting',\n type: events.actionBegin, target: this.currentTarget, cancel: false\n } : {\n requestType: 'sorting', type: events.actionBegin, cancel: false,\n target: this.currentTarget\n };\n this.parent.notify(events.modelChanged, args);\n }\n this.refreshSortSettings();\n this.removeSortIcons();\n this.addSortIcons();\n };\n Sort.prototype.refreshSortSettings = function () {\n this.sortedColumns.length = 0;\n var sortColumns = this.sortSettings.columns;\n for (var i = 0; i < sortColumns.length; i++) {\n if (!sortColumns[parseInt(i.toString(), 10)].isFromGroup) {\n this.sortedColumns.push(sortColumns[parseInt(i.toString(), 10)].field);\n }\n }\n };\n /**\n * Clears all the sorted columns of the Grid.\n *\n * @returns {void}\n */\n Sort.prototype.clearSorting = function () {\n var cols = getActualPropFromColl(this.sortSettings.columns);\n if (this.isActionPrevent()) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.clearSorting });\n return;\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n this.removeSortColumn(cols[parseInt(i.toString(), 10)].field);\n }\n };\n Sort.prototype.isActionPrevent = function () {\n return isActionPrevent(this.parent);\n };\n /**\n * Remove sorted column by field name.\n *\n * @param {string} field - Defines the column field name to remove sort.\n * @returns {void}\n * @hidden\n */\n Sort.prototype.removeSortColumn = function (field) {\n var gObj = this.parent;\n var cols = this.sortSettings.columns;\n if (cols.length === 0 && this.sortedColumns.indexOf(field) < 0) {\n return;\n }\n if (this.isActionPrevent()) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.removeSortColumn, arg1: field });\n return;\n }\n this.backupSettings();\n this.removeSortIcons();\n var args = { requestType: 'sorting', type: events.actionBegin, target: this.currentTarget };\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].field === field) {\n if (gObj.allowGrouping && gObj.groupSettings.columns.indexOf(cols[parseInt(i.toString(), 10)].field) > -1) {\n continue;\n }\n this.sortedColumns.splice(this.sortedColumns.indexOf(cols[parseInt(i.toString(), 10)].field), 1);\n cols.splice(i, 1);\n this.isRemove = true;\n if (this.isModelChanged) {\n this.parent.notify(events.modelChanged, args);\n }\n break;\n }\n }\n if (!args.cancel) {\n this.addSortIcons();\n }\n };\n Sort.prototype.getSortedColsIndexByField = function (field, sortedColumns) {\n var cols = sortedColumns ? sortedColumns : this.sortSettings.columns;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].field === field) {\n return i;\n }\n }\n return -1;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Sort.prototype.getModuleName = function () {\n return 'sort';\n };\n Sort.prototype.initialEnd = function () {\n this.parent.off(events.contentReady, this.initialEnd);\n if (this.parent.getColumns().length && this.sortSettings.columns.length) {\n var gObj = this.parent;\n this.contentRefresh = false;\n this.isMultiSort = this.sortSettings.columns.length > 1;\n for (var _i = 0, _a = gObj.sortSettings.columns.slice(); _i < _a.length; _i++) {\n var col = _a[_i];\n if (this.sortedColumns.indexOf(col.field) > -1) {\n this.sortColumn(col.field, col.direction, true);\n }\n }\n this.isMultiSort = false;\n this.contentRefresh = true;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Sort.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.setFullScreenDialog, handler: this.setFullScreenDialog },\n { event: events.contentReady, handler: this.initialEnd },\n { event: events.sortComplete, handler: this.onActionComplete },\n { event: events.inBoundModelChanged, handler: this.onPropertyChanged },\n { event: events.click, handler: this.clickHandler },\n { event: events.headerRefreshed, handler: this.refreshSortIcons },\n { event: events.keyPressed, handler: this.keyPressed },\n { event: events.cancelBegin, handler: this.cancelBeginEvent },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Sort.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n /**\n * To destroy the sorting\n *\n * @returns {void}\n * @hidden\n */\n Sort.prototype.destroy = function () {\n this.isModelChanged = false;\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n if (this.parent.element.querySelector('.e-gridpopup').getElementsByClassName('e-sortdirect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.parent.refreshing && (this.parent.isDestroyed || !this.parent.allowSorting)) {\n this.clearSorting();\n }\n this.isModelChanged = true;\n this.removeEventListener();\n };\n Sort.prototype.cancelBeginEvent = function (e) {\n if (e.requestType === 'sorting') {\n this.restoreSettings();\n this.refreshSortIcons();\n this.isMultiSort = true;\n }\n };\n Sort.prototype.clickHandler = function (e) {\n var gObj = this.parent;\n this.currentTarget = null;\n this.popUpClickHandler(e);\n var target = closest(e.target, '.e-headercell');\n if (target && !e.target.classList.contains('e-grptogglebtn') &&\n !(target.classList.contains('e-resized')) &&\n !e.target.classList.contains('e-rhandler') &&\n !e.target.classList.contains('e-columnmenu') &&\n !e.target.classList.contains('e-filtermenudiv') &&\n !parentsUntil(e.target, 'e-stackedheadercell') &&\n !(gObj.allowSelection && gObj.selectionSettings.allowColumnSelection &&\n e.target.classList.contains('e-headercell'))) {\n var gObj_1 = this.parent;\n var colObj = gObj_1.getColumnByUid(target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n if (colObj.type !== 'checkbox') {\n this.initiateSort(target, e, colObj);\n if (Browser.isDevice) {\n this.showPopUp(e);\n }\n }\n }\n if (target) {\n target.classList.remove('e-resized');\n }\n if (parentsUntil(e.target, 'e-excel-ascending') ||\n parentsUntil(e.target, 'e-excel-descending')) {\n var colUid = closest(e.target, '.e-filter-popup').getAttribute('uid');\n var direction = isNullOrUndefined(parentsUntil(e.target, 'e-excel-descending')) ?\n 'Ascending' : 'Descending';\n this.sortColumn(gObj.getColumnByUid(colUid).field, direction, false);\n }\n };\n Sort.prototype.keyPressed = function (e) {\n var ele = e.target;\n if (!this.parent.isEdit && (e.action === 'enter' || e.action === 'ctrlEnter' || e.action === 'shiftEnter')\n && closest(ele, '.e-headercell')) {\n var target = this.focus.getFocusedElement();\n if (isNullOrUndefined(target) || !target.classList.contains('e-headercell')\n || !target.querySelector('.e-headercelldiv')) {\n return;\n }\n var col = this.parent.getColumnByUid(target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n this.initiateSort(target, e, col);\n }\n };\n Sort.prototype.initiateSort = function (target, e, column) {\n var gObj = this.parent;\n var field = column.field;\n this.currentTarget = e.target;\n var direction = !target.getElementsByClassName('e-ascending').length ? 'Ascending' :\n 'Descending';\n this.isMultiSort = e.ctrlKey || this.enableSortMultiTouch ||\n (navigator.userAgent.indexOf('Mac OS') !== -1 && e.metaKey);\n if (e.shiftKey || (this.sortSettings.allowUnsort && target.getElementsByClassName('e-descending').length)\n && !(gObj.groupSettings.columns.indexOf(field) > -1)) {\n this.removeSortColumn(field);\n }\n else {\n this.sortColumn(field, direction, this.isMultiSort);\n }\n };\n Sort.prototype.showPopUp = function (e) {\n var target = closest(e.target, '.e-headercell');\n if (this.parent.allowMultiSorting && (!isNullOrUndefined(target) || this.parent.isContextMenuOpen())) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-gridpopup'), e, 'e-sortdirect e-icons e-icon-sortdirect' + (this.sortedColumns.length > 1 ? ' e-spanclicked' : ''));\n }\n };\n Sort.prototype.popUpClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.e-headercell') || e.target.classList.contains(literals.rowCell) ||\n closest(target, '.e-gridpopup')) {\n if (target.classList.contains('e-sortdirect')) {\n if (!target.classList.contains('e-spanclicked')) {\n target.classList.add('e-spanclicked');\n this.enableSortMultiTouch = true;\n }\n else {\n target.classList.remove('e-spanclicked');\n this.enableSortMultiTouch = false;\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n }\n else {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Sort.prototype.addSortIcons = function () {\n var gObj = this.parent;\n var header;\n var filterElement;\n var cols = this.sortSettings.columns;\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var i = 0, len = cols.length; i < len; i++) {\n header = gObj.getColumnHeaderByField(cols[parseInt(i.toString(), 10)].field);\n if (fieldNames.indexOf(cols[parseInt(i.toString(), 10)].field) === -1 || isNullOrUndefined(header)) {\n continue;\n }\n this.aria.setSort(header, (cols[parseInt(i.toString(), 10)].direction).toLowerCase());\n if (cols.length > 1) {\n header.querySelector('.e-headercelldiv').insertBefore(this.parent.createElement('span', { className: 'e-sortnumber', innerHTML: (i + 1).toString() }), header.querySelector('.e-headertext'));\n }\n filterElement = header.querySelector('.e-sortfilterdiv');\n if (cols[parseInt(i.toString(), 10)].direction === 'Ascending') {\n classList(filterElement, ['e-ascending', 'e-icon-ascending'], []);\n }\n else {\n classList(filterElement, ['e-descending', 'e-icon-descending'], []);\n }\n }\n };\n Sort.prototype.removeSortIcons = function (position) {\n var gObj = this.parent;\n var header;\n var cols = this.sortSettings.columns;\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var i = position ? position : 0, len = !isNullOrUndefined(position) ? position + 1 : cols.length; i < len; i++) {\n header = gObj.getColumnHeaderByField(cols[parseInt(i.toString(), 10)].field);\n if (isNullOrUndefined(header) || (gObj.allowGrouping\n && gObj.groupSettings.columns.indexOf(cols[parseInt(i.toString(), 10)].field) > -1\n && !header.querySelector('.e-sortfilterdiv'))) {\n continue;\n }\n if (fieldNames.indexOf(cols[parseInt(i.toString(), 10)].field) === -1) {\n continue;\n }\n this.aria.setSort(header, 'none');\n classList(header.querySelector('.e-sortfilterdiv'), [], ['e-descending', 'e-icon-descending', 'e-ascending', 'e-icon-ascending']);\n if (header.querySelector('.e-sortnumber')) {\n header.querySelector('.e-headercelldiv').removeChild(header.querySelector('.e-sortnumber'));\n }\n }\n };\n Sort.prototype.getSortColumnFromField = function (field) {\n for (var i = 0, len = this.sortSettings.columns.length; i < len; i++) {\n if (this.sortSettings.columns[parseInt(i.toString(), 10)].field === field) {\n return this.sortSettings.columns[parseInt(i.toString(), 10)];\n }\n }\n return false;\n };\n Sort.prototype.updateAriaAttr = function () {\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var _i = 0, _a = this.sortedColumns; _i < _a.length; _i++) {\n var col = _a[_i];\n if (fieldNames.indexOf(col) === -1) {\n continue;\n }\n var header = this.parent.getColumnHeaderByField(col);\n this.aria.setSort(header, this.getSortColumnFromField(col).direction);\n }\n };\n Sort.prototype.refreshSortIcons = function (params) {\n if (params === void 0) { params = { args: { isFrozen: false } }; }\n if (!params.args.isFrozen) {\n this.removeSortIcons();\n this.isMultiSort = true;\n this.removeSortIcons();\n this.addSortIcons();\n this.isMultiSort = false;\n this.updateAriaAttr();\n }\n };\n /**\n * To show the responsive custom sort dialog\n *\n * @param {boolean} enable - specifes dialog open\n * @returns {void}\n * @hidden\n */\n Sort.prototype.showCustomSort = function (enable) {\n this.responsiveDialogRenderer.isCustomDialog = enable;\n this.responsiveDialogRenderer.showResponsiveDialog();\n };\n return Sort;\n}());\nexport { Sort };\n","import { EventHandler, extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { remove, select, removeClass } from '@syncfusion/ej2-base';\nimport { Toolbar as tool } from '@syncfusion/ej2-navigations';\nimport * as events from '../base/constant';\nimport { templateCompiler, appendChildren, parentsUntil, addRemoveEventListener } from '../base/util';\nimport { ResponsiveToolbarAction } from '../base/enum';\nimport { SearchBox } from '../services/focus-strategy';\n/**\n *\n * The `Toolbar` module is used to handle ToolBar actions.\n */\nvar Toolbar = /** @class */ (function () {\n function Toolbar(parent, serviceLocator) {\n this.predefinedItems = {};\n this.isSearched = false;\n this.items = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Print', 'Search',\n 'ColumnChooser', 'PdfExport', 'ExcelExport', 'CsvExport', 'WordExport'];\n this.parent = parent;\n this.gridID = parent.element.id;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n Toolbar.prototype.render = function () {\n this.l10n = this.serviceLocator.getService('localization');\n var preItems = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Print',\n 'PdfExport', 'ExcelExport', 'WordExport', 'CsvExport'];\n var isAdaptive = this.parent.enableAdaptiveUI;\n var excludingItems = ['Edit', 'Delete', 'Update', 'Cancel'];\n for (var _i = 0, preItems_1 = preItems; _i < preItems_1.length; _i++) {\n var item = preItems_1[_i];\n var itemStr = item.toLowerCase();\n var localeName = itemStr[0].toUpperCase() + itemStr.slice(1);\n this.predefinedItems[\"\" + item] = {\n id: this.gridID + '_' + itemStr, prefixIcon: 'e-' + itemStr,\n text: this.l10n.getConstant(localeName), tooltipText: this.l10n.getConstant(localeName)\n };\n if (isAdaptive) {\n this.predefinedItems[\"\" + item].text = '';\n this.predefinedItems[\"\" + item].visible = excludingItems.indexOf(item) === -1;\n }\n }\n this.predefinedItems.Search = {\n id: this.gridID + '_search',\n tooltipText: this.l10n.getConstant('Search'), align: 'Right', cssClass: 'e-search-wrapper',\n type: 'Input'\n };\n this.predefinedItems.ColumnChooser = {\n id: this.gridID + '_' + 'columnchooser', cssClass: 'e-cc e-ccdiv e-cc-toolbar', suffixIcon: 'e-' + 'columnchooser-btn',\n text: isAdaptive ? '' : this.l10n.getConstant('Columnchooser'),\n tooltipText: this.l10n.getConstant('Columnchooser'), align: 'Right'\n };\n if (this.parent.rowRenderingMode === 'Vertical') {\n if (this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') {\n this.predefinedItems.responsiveFilter = {\n id: this.gridID + '_' + 'responsivefilter', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'resfilter-icon', tooltipText: this.l10n.getConstant('FilterButton')\n };\n }\n if (this.parent.allowSorting) {\n this.predefinedItems.responsiveSort = {\n id: this.gridID + '_' + 'responsivesort', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'ressort-icon', tooltipText: this.l10n.getConstant('Sort')\n };\n }\n }\n if (this.parent.enableAdaptiveUI && this.parent.toolbar && this.parent.toolbar.indexOf('Search') > -1) {\n this.predefinedItems.responsiveBack = {\n id: this.gridID + '_' + 'responsiveback', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'resback-icon', visible: false\n };\n }\n this.createToolbar();\n };\n /**\n * Gets the toolbar of the Grid.\n *\n * @returns {Element} returns the element\n * @hidden\n */\n Toolbar.prototype.getToolbar = function () {\n return this.toolbar.element;\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n */\n Toolbar.prototype.destroy = function () {\n if (this.toolbar && !this.toolbar.isDestroyed) {\n if (!this.toolbar.element) {\n this.parent.destroyTemplate(['toolbarTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n this.toolbar.off('render-react-toolbar-template', this.addReactToolbarPortals);\n this.toolbar.destroy();\n }\n this.unWireEvent();\n this.removeEventListener();\n if (this.element.parentNode) {\n remove(this.element);\n }\n }\n };\n Toolbar.prototype.bindSearchEvents = function () {\n this.searchElement = select('#' + this.gridID + '_searchbar', this.element);\n this.wireEvent();\n this.refreshToolbarItems();\n if (this.parent.searchSettings) {\n this.updateSearchBox();\n }\n };\n Toolbar.prototype.toolbarCreated = function (isNormal) {\n if (this.element.querySelector('.e-search-wrapper')) {\n if (!this.parent.enableAdaptiveUI || isNormal) {\n var classList = this.parent.cssClass ? 'e-input-group e-search ' + this.parent.cssClass\n : 'e-input-group e-search';\n this.element.querySelector('.e-search-wrapper').innerHTML = '
    \\\n \\\n \\\n \\\n
    ';\n }\n else {\n this.element.querySelector('.e-search-wrapper').innerHTML = '\\\n \\\n ';\n }\n }\n this.bindSearchEvents();\n };\n Toolbar.prototype.createToolbar = function () {\n var items = this.getItems();\n this.toolbar = new tool({\n items: items,\n clicked: this.toolbarClickHandler.bind(this),\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n created: this.toolbarCreated.bind(this),\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.toolbar.isReact = this.parent.isReact;\n this.toolbar.on('render-react-toolbar-template', this.addReactToolbarPortals, this);\n var isStringTemplate = 'isStringTemplate';\n this.toolbar[\"\" + isStringTemplate] = true;\n var viewStr = 'viewContainerRef';\n var registerTemp = 'registeredTemplate';\n if (this.parent[\"\" + viewStr]) {\n this.toolbar[\"\" + registerTemp] = {};\n this.toolbar[\"\" + viewStr] = this.parent[\"\" + viewStr];\n }\n this.element = this.parent.createElement('div', { id: this.gridID + '_toolbarItems' });\n if (this.parent.enableAdaptiveUI) {\n this.element.classList.add('e-res-toolbar');\n }\n if (this.parent.toolbarTemplate) {\n if (typeof (this.parent.toolbarTemplate) === 'string') {\n this.toolbar.appendTo(this.parent.toolbarTemplate);\n this.element = this.toolbar.element;\n }\n else {\n var isReactCompiler = this.parent.isReact && typeof (this.parent.toolbarTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var ID = this.parent.element.id + 'toolbarTemplate';\n if (isReactCompiler || isReactChild) {\n templateCompiler(this.parent.toolbarTemplate)({}, this.parent, 'toolbarTemplate', ID, null, null, this.element);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(this.element, templateCompiler(this.parent.toolbarTemplate)({}, this.parent, 'toolbarTemplate'));\n }\n }\n this.element.classList.add('e-temp-toolbar');\n }\n else {\n this.toolbar.appendTo(this.element);\n }\n this.parent.element.insertBefore(this.element, this.parent.getHeaderContent());\n var tlbrLeftElement = this.element.querySelector('.e-toolbar-left');\n var tlbrCenterElement = this.element.querySelector('.e-toolbar-center');\n var tlbrRightElement = this.element.querySelector('.e-toolbar-right');\n var tlbrItems = this.element.querySelector('.e-toolbar-items');\n var tlbrElement = this.element;\n var tlbrLeftWidth = tlbrLeftElement ? tlbrLeftElement.clientWidth : 0;\n var tlbrCenterWidth = tlbrCenterElement ? tlbrCenterElement.clientWidth : 0;\n var tlbrRightWidth = tlbrRightElement ? tlbrRightElement.clientWidth : 0;\n var tlbrItemsWidth = tlbrItems ? tlbrItems.clientWidth : 0;\n var tlbrWidth = tlbrElement ? tlbrElement.clientWidth : 0;\n if (tlbrLeftWidth > tlbrWidth || tlbrCenterWidth > tlbrWidth || tlbrRightWidth > tlbrWidth || tlbrItemsWidth > tlbrWidth) {\n this.toolbar.refreshOverflow();\n }\n };\n Toolbar.prototype.addReactToolbarPortals = function (args) {\n if (this.parent.isReact && args) {\n this.parent.portals = this.parent.portals.concat(args);\n this.parent.renderTemplates();\n }\n };\n Toolbar.prototype.renderResponsiveSearch = function (isRender) {\n if (isRender) {\n this.toolbarCreated(true);\n this.refreshResponsiveToolbarItems(ResponsiveToolbarAction.isSearch);\n this.searchElement = select('#' + this.gridID + '_searchbar', this.element);\n var right = parentsUntil(this.searchElement, 'e-toolbar-right');\n right.classList.add('e-responsive-right');\n if (this.parent.searchSettings) {\n this.updateSearchBox();\n }\n this.searchBoxObj.searchFocus({ target: this.searchElement });\n this.searchElement.focus();\n }\n else {\n this.refreshResponsiveToolbarItems(ResponsiveToolbarAction.isInitial);\n }\n };\n Toolbar.prototype.refreshResponsiveToolbarItems = function (action) {\n if (action === ResponsiveToolbarAction.isInitial) {\n var id = this.parent.element.id;\n var items = [id + '_edit', id + '_delete'];\n var selectedRecords = this.parent.getSelectedRowIndexes();\n var excludingItems = [id + '_responsiveback', id + '_update', id + '_cancel'];\n for (var _i = 0, _a = this.toolbar.items; _i < _a.length; _i++) {\n var item = _a[_i];\n var toolbarEle = item.template.length ? this.toolbar.element.querySelector(item.template) : this.toolbar.element.querySelector('#' + item.id);\n if (toolbarEle) {\n if (items.indexOf(item.id) > -1) {\n if (selectedRecords.length) {\n toolbarEle.parentElement.classList.remove('e-hidden');\n }\n else {\n toolbarEle.parentElement.classList.add('e-hidden');\n }\n }\n else {\n if (excludingItems.indexOf(item.id) === -1) {\n toolbarEle.parentElement.classList.remove('e-hidden');\n }\n else {\n toolbarEle.parentElement.classList.add('e-hidden');\n }\n }\n }\n }\n if (this.searchElement) {\n var right = parentsUntil(this.searchElement, 'e-toolbar-right');\n right.classList.remove('e-responsive-right');\n this.toolbarCreated(false);\n this.unWireEvent();\n this.searchElement = undefined;\n }\n }\n if (action === ResponsiveToolbarAction.isSearch) {\n var items = [this.parent.element.id + '_responsiveback', this.parent.element.id + '_search'];\n for (var _b = 0, _c = this.toolbar.items; _b < _c.length; _b++) {\n var item = _c[_b];\n var toolbarEle = this.toolbar.element.querySelector('#' + item.id);\n if (toolbarEle) {\n if (items.indexOf(item.id) > -1) {\n toolbarEle.parentElement.classList.remove('e-hidden');\n }\n else {\n toolbarEle.parentElement.classList.add('e-hidden');\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.refreshToolbarItems = function (args) {\n var gObj = this.parent;\n var enableItems = [];\n var disableItems = [];\n var edit = gObj.editSettings;\n var hasData = gObj.currentViewData && gObj.currentViewData.length;\n if (edit.allowAdding) {\n enableItems.push(this.gridID + '_add');\n }\n else {\n disableItems.push(this.gridID + '_add');\n }\n if (edit.allowEditing && hasData) {\n enableItems.push(this.gridID + '_edit');\n }\n else {\n disableItems.push(this.gridID + '_edit');\n }\n if (edit.allowDeleting && hasData) {\n enableItems.push(this.gridID + '_delete');\n }\n else {\n disableItems.push(this.gridID + '_delete');\n }\n if (gObj.editSettings.mode === 'Batch') {\n if (gObj.element.getElementsByClassName('e-updatedtd').length && (edit.allowAdding || edit.allowEditing)) {\n enableItems.push(this.gridID + '_update');\n enableItems.push(this.gridID + '_cancel');\n }\n else {\n disableItems.push(this.gridID + '_update');\n disableItems.push(this.gridID + '_cancel');\n }\n }\n else {\n if (gObj.isEdit && (edit.allowAdding || edit.allowEditing)) {\n enableItems = [this.gridID + '_update', this.gridID + '_cancel'];\n disableItems = [this.gridID + '_add', this.gridID + '_edit', this.gridID + '_delete'];\n }\n else {\n disableItems.push(this.gridID + '_update');\n disableItems.push(this.gridID + '_cancel');\n }\n }\n this.enableItems(enableItems, true);\n this.enableItems(disableItems, false);\n };\n Toolbar.prototype.getItems = function () {\n var items = [];\n var toolbarItems = this.parent.toolbar || [];\n if (typeof (this.parent.toolbar) === 'string') {\n return [];\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n if (this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') {\n items.push(this.getItemObject('responsiveFilter'));\n }\n if (this.parent.allowSorting) {\n items.push(this.getItemObject('responsiveSort'));\n }\n }\n for (var _i = 0, toolbarItems_1 = toolbarItems; _i < toolbarItems_1.length; _i++) {\n var item = toolbarItems_1[_i];\n switch (typeof item) {\n case 'number':\n items.push(this.getItemObject(this.items[item]));\n break;\n case 'string':\n items.push(this.getItemObject(item));\n break;\n default:\n items.push(this.getItem(item));\n }\n }\n if (this.parent.enableAdaptiveUI && this.parent.toolbar && this.parent.toolbar.indexOf('Search') > -1) {\n items.push(this.getItemObject('responsiveBack'));\n }\n return items;\n };\n Toolbar.prototype.getItem = function (itemObject) {\n var item = this.predefinedItems[itemObject.text];\n return item ? extend(item, item, itemObject) : itemObject;\n };\n Toolbar.prototype.getItemObject = function (itemName) {\n return this.predefinedItems[\"\" + itemName] || { text: itemName, id: this.gridID + '_' + itemName };\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @returns {void}\n * @hidden\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n var element = select('#' + item, this.element);\n if (element) {\n this.toolbar.enableItems(element.parentElement, isEnable);\n }\n }\n };\n Toolbar.prototype.toolbarClickHandler = function (args) {\n var _this = this;\n var gObj = this.parent;\n var gID = this.gridID;\n extend(args, { cancel: false });\n var newArgs = args;\n var originalEvent = args.originalEvent;\n gObj.trigger(events.toolbarClick, newArgs, function (toolbarargs) {\n toolbarargs.originalEvent = toolbarargs.originalEvent ? toolbarargs.originalEvent : originalEvent;\n if (!toolbarargs.cancel) {\n switch (!isNullOrUndefined(toolbarargs.item) && toolbarargs.item.id) {\n case gID + '_print':\n gObj.print();\n break;\n case gID + '_edit':\n gObj.startEdit();\n break;\n case gID + '_update':\n gObj.endEdit();\n break;\n case gID + '_cancel':\n gObj.closeEdit();\n break;\n case gID + '_add':\n gObj.addRecord();\n break;\n case gID + '_delete':\n gObj.deleteRecord();\n break;\n case gID + '_search':\n if (toolbarargs.originalEvent.target.id === gID + '_searchbutton' && _this.searchElement) {\n _this.search();\n }\n else if (gObj.enableAdaptiveUI && !_this.searchElement\n && (toolbarargs.originalEvent.target.classList.contains('e-search-wrapper')\n || toolbarargs.originalEvent.target.id === gID + '_searchbutton')) {\n _this.renderResponsiveSearch(true);\n }\n else if (toolbarargs.originalEvent.target.classList.contains('e-clear-icon') && toolbarargs.originalEvent.target.id === gID + '_clearbutton' && _this.searchElement) {\n _this.searchElement.value = '';\n if (_this.searchElement) {\n _this.sIcon = _this.searchElement.parentElement.querySelector('.e-sicon');\n _this.sIcon.classList.remove('e-clear-icon');\n _this.sIcon.removeAttribute('title');\n _this.sIcon.style.cursor = 'default';\n }\n if (_this.isSearched || _this.parent.searchSettings.key.length) {\n _this.parent.search(_this.searchElement.value);\n _this.isSearched = false;\n }\n }\n break;\n case gID + '_columnchooser':\n /* eslint-disable */\n var tarElement = _this.parent.element.querySelector('.e-ccdiv');\n var y = tarElement.getBoundingClientRect().top;\n var x = tarElement.getBoundingClientRect().left;\n var targetEle = toolbarargs.originalEvent.target;\n /* eslint-enable */\n y = tarElement.getBoundingClientRect().top + tarElement.offsetTop;\n gObj.createColumnchooser(x, y, targetEle);\n break;\n case gID + '_responsivefilter':\n gObj.showResponsiveCustomFilter();\n break;\n case gID + '_responsivesort':\n gObj.showResponsiveCustomSort();\n break;\n case gID + '_responsiveback':\n _this.renderResponsiveSearch(false);\n break;\n }\n }\n });\n };\n Toolbar.prototype.modelChanged = function (e) {\n if (e.module === 'edit') {\n this.refreshToolbarItems();\n }\n };\n Toolbar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() || !this.parent.toolbar) {\n return;\n }\n if (this.element) {\n remove(this.element);\n }\n this.render();\n };\n Toolbar.prototype.keyUpHandler = function (e) {\n if (e.keyCode === 13) {\n this.search();\n }\n if (this.searchElement) {\n this.sIcon = this.searchElement.parentElement.querySelector('.e-sicon');\n if (this.searchElement.value.length && !isNullOrUndefined(this.sIcon)) {\n this.sIcon.classList.add('e-clear-icon');\n this.sIcon.setAttribute('title', 'Clear');\n this.sIcon.style.cursor = 'pointer';\n }\n else {\n this.sIcon.classList.remove('e-clear-icon');\n this.sIcon.removeAttribute('title');\n this.sIcon.style.cursor = 'default';\n }\n }\n };\n Toolbar.prototype.search = function () {\n this.isSearched = true;\n this.parent.search(this.searchElement.value);\n };\n Toolbar.prototype.updateSearchBox = function () {\n if (this.searchElement) {\n this.searchElement.value = this.parent.searchSettings.key;\n }\n };\n Toolbar.prototype.wireEvent = function () {\n if (this.searchElement) {\n this.searchBoxObj = new SearchBox(this.searchElement);\n EventHandler.add(this.searchElement, 'keyup', this.keyUpHandler, this);\n this.searchBoxObj.wireEvent();\n }\n EventHandler.add(this.element, 'focusin', this.onFocusIn, this);\n EventHandler.add(this.element, 'focusout', this.onFocusOut, this);\n };\n Toolbar.prototype.unWireEvent = function () {\n if (this.searchElement) {\n EventHandler.remove(this.searchElement, 'keyup', this.keyUpHandler);\n this.searchBoxObj.unWireEvent();\n }\n EventHandler.remove(this.element, 'focusin', this.onFocusIn);\n EventHandler.remove(this.element, 'focusout', this.onFocusOut);\n };\n Toolbar.prototype.onFocusIn = function (e) {\n var currentInfo = this.parent.focusModule.currentInfo;\n if (currentInfo && currentInfo.element) {\n removeClass([currentInfo.element, currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n currentInfo.element.tabIndex = -1;\n }\n e.target.tabIndex = 0;\n };\n Toolbar.prototype.onFocusOut = function (e) {\n e.target.tabIndex = -1;\n };\n Toolbar.prototype.setFocusToolbarItem = function (element) {\n var elementToFocus = element.querySelector('.e-btn,.e-input,.e-toolbar-item-focus');\n if (!elementToFocus && this.parent.enableAdaptiveUI && !this.searchElement\n && element.classList.contains('e-search-wrapper')) {\n elementToFocus = element.querySelector('#' + this.gridID + '_searchbutton');\n }\n elementToFocus.focus();\n };\n Toolbar.prototype.getFocusableToolbarItems = function () {\n var getFocusToolbarElements = [].slice.call(this.element.querySelectorAll('.e-toolbar-item:not(.e-overlay):not(.e-hidden)'));\n var getFocusToolbarItems = [];\n for (var i = 0; i < getFocusToolbarElements.length; i++) {\n if (!isNullOrUndefined(getFocusToolbarElements[parseInt(i.toString(), 10)].querySelector('.e-btn,.e-input,.e-toolbar-item-focus'))) {\n getFocusToolbarItems.push(getFocusToolbarElements[parseInt(i.toString(), 10)]);\n }\n }\n return getFocusToolbarItems;\n };\n Toolbar.prototype.keyPressedHandler = function (e) {\n if (e.target && parentsUntil(e.target, 'e-toolbar-item')) {\n var targetParent = parentsUntil(e.target, 'e-toolbar-item');\n var focusableToolbarItems = this.getFocusableToolbarItems();\n if (e.action === 'tab' || e.action === 'shiftTab') {\n if ((e.action === 'tab' && targetParent === focusableToolbarItems[focusableToolbarItems.length - 1])\n || (e.action === 'shiftTab' && targetParent === focusableToolbarItems[0])) {\n return;\n }\n for (var i = 0; i < focusableToolbarItems.length; i++) {\n if (targetParent === focusableToolbarItems[parseInt(i.toString(), 10)]) {\n e.preventDefault();\n var index = e.action === 'tab' ? i + 1 : i - 1;\n this.setFocusToolbarItem(focusableToolbarItems[parseInt(index.toString(), 10)]);\n return;\n }\n }\n }\n if (e.action === 'enter') {\n if (this.parent.enableAdaptiveUI && !this.searchElement\n && e.target.id === this.gridID + '_searchbutton') {\n this.renderResponsiveSearch(true);\n }\n }\n }\n };\n Toolbar.prototype.reRenderToolbar = function () {\n if (this.element) {\n remove(this.element);\n }\n this.render();\n };\n Toolbar.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.setFullScreenDialog, handler: this.reRenderToolbar },\n { event: events.initialEnd, handler: this.render },\n { event: events.uiUpdate, handler: this.onPropertyChanged },\n { event: events.inBoundModelChanged, handler: this.updateSearchBox.bind(this) },\n { event: events.modelChanged, handler: this.refreshToolbarItems },\n { event: events.toolbarRefresh, handler: this.refreshToolbarItems },\n { event: events.inBoundModelChanged, handler: this.modelChanged },\n { event: events.dataBound, handler: this.refreshToolbarItems },\n { event: events.click, handler: this.removeResponsiveSearch },\n { event: events.rowModeChange, handler: this.reRenderToolbar },\n { event: events.destroy, handler: this.destroy },\n { event: events.keyPressed, handler: this.keyPressedHandler }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.rowSelectedFunction = this.rowSelected.bind(this);\n this.rowDeSelectedFunction = this.rowSelected.bind(this);\n this.parent.addEventListener(events.rowSelected, this.rowSelectedFunction);\n this.parent.addEventListener(events.rowDeselected, this.rowDeSelectedFunction);\n };\n Toolbar.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n this.parent.removeEventListener(events.rowSelected, this.rowSelectedFunction);\n this.parent.removeEventListener(events.rowDeselected, this.rowDeSelectedFunction);\n };\n Toolbar.prototype.removeResponsiveSearch = function (e) {\n var target = e.target;\n var isSearch = target.classList.contains('e-search-icon') || target.classList.contains('e-search-wrapper');\n if (this.parent.enableAdaptiveUI && !isSearch && this.searchElement\n && !parentsUntil(e.target, 'e-res-toolbar')) {\n this.renderResponsiveSearch(false);\n }\n };\n Toolbar.prototype.rowSelected = function () {\n if (this.parent.enableAdaptiveUI) {\n this.refreshResponsiveToolbarItems(ResponsiveToolbarAction.isInitial);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","/** @hidden */\nexport var created = 'create';\n/** @hidden */\nexport var destroyed = 'destroy';\n/** @hidden */\nexport var load = 'load';\n/** @hidden */\nexport var rowDataBound = 'rowDataBound';\n/** @hidden */\nexport var queryCellInfo = 'queryCellInfo';\n/** @hidden */\nexport var headerCellInfo = 'headerCellInfo';\n/** @hidden */\nexport var actionBegin = 'actionBegin';\n/** @hidden */\nexport var actionComplete = 'actionComplete';\n/** @hidden */\nexport var actionFailure = 'actionFailure';\n/** @hidden */\nexport var dataBound = 'dataBound';\n/** @hidden */\nexport var rowSelecting = 'rowSelecting';\n/** @hidden */\nexport var rowSelected = 'rowSelected';\n/** @hidden */\nexport var rowDeselecting = 'rowDeselecting';\n/** @hidden */\nexport var rowDeselected = 'rowDeselected';\n/** @hidden */\nexport var cellSelecting = 'cellSelecting';\n/** @hidden */\nexport var cellSelected = 'cellSelected';\n/** @hidden */\nexport var cellDeselecting = 'cellDeselecting';\n/** @hidden */\nexport var cellDeselected = 'cellDeselected';\n/** @hidden */\nexport var columnSelecting = 'columnSelecting';\n/** @hidden */\nexport var columnSelected = 'columnSelected';\n/** @hidden */\nexport var columnDeselecting = 'columnDeselecting';\n/** @hidden */\nexport var columnDeselected = 'columnDeselected';\n/** @hidden */\nexport var columnDragStart = 'columnDragStart';\n/** @hidden */\nexport var columnDrag = 'columnDrag';\n/** @hidden */\nexport var columnDrop = 'columnDrop';\n/** @hidden */\nexport var rowDragStartHelper = 'rowDragStartHelper';\n/** @hidden */\nexport var rowDragStart = 'rowDragStart';\n/** @hidden */\nexport var rowDrag = 'rowDrag';\n/** @hidden */\nexport var rowDrop = 'rowDrop';\n/** @hidden */\nexport var beforePrint = 'beforePrint';\n/** @hidden */\nexport var printComplete = 'printComplete';\n/** @hidden */\nexport var detailDataBound = 'detailDataBound';\n/** @hidden */\nexport var toolbarClick = 'toolbarClick';\n/** @hidden */\nexport var batchAdd = 'batchAdd';\n/** @hidden */\nexport var batchCancel = 'batchCancel';\n/** @hidden */\nexport var batchDelete = 'batchDelete';\n/** @hidden */\nexport var beforeBatchAdd = 'beforeBatchAdd';\n/** @hidden */\nexport var beforeBatchDelete = 'beforeBatchDelete';\n/** @hidden */\nexport var beforeBatchSave = 'beforeBatchSave';\n/** @hidden */\nexport var beginEdit = 'beginEdit';\n/** @hidden */\nexport var cellEdit = 'cellEdit';\n/** @hidden */\nexport var cellSave = 'cellSave';\n/** @hidden */\nexport var cellSaved = 'cellSaved';\n/** @hidden */\nexport var endAdd = 'endAdd';\n/** @hidden */\nexport var endDelete = 'endDelete';\n/** @hidden */\nexport var endEdit = 'endEdit';\n/** @hidden */\nexport var recordDoubleClick = 'recordDoubleClick';\n/** @hidden */\nexport var recordClick = 'recordClick';\n/** @hidden */\nexport var beforeDataBound = 'beforeDataBound';\n/** @hidden */\nexport var beforeOpenColumnChooser = 'beforeOpenColumnChooser';\n/** @hidden */\nexport var beforeOpenAdaptiveDialog = 'beforeOpenAdaptiveDialog';\n/** @hidden */\nexport var resizeStart = 'resizeStart';\n/** @hidden */\nexport var onResize = 'resizing';\n/** @hidden */\nexport var resizeStop = 'resizeStop';\n/** @hidden */\nexport var checkBoxChange = 'checkBoxChange';\n/** @hidden */\nexport var beforeCopy = 'beforeCopy';\n/** @hidden */\nexport var beforePaste = 'beforePaste';\n/** @hidden */\nexport var beforeAutoFill = 'beforeAutoFill';\n/** @hidden */\nexport var filterChoiceRequest = 'filterchoicerequest';\n/** @hidden */\nexport var filterAfterOpen = 'filterafteropen';\n/** @hidden */\nexport var filterBeforeOpen = 'filterbeforeopen';\n/** @hidden */\nexport var filterSearchBegin = 'filtersearchbegin';\n/** @hidden */\nexport var commandClick = 'commandClick';\n/** @hidden */\nexport var exportGroupCaption = 'exportGroupCaption';\n/** @hidden */\nexport var lazyLoadGroupExpand = 'lazyLoadGroupExpand';\n/** @hidden */\nexport var lazyLoadGroupCollapse = 'lazyLoadGroupCollapse';\n/**\n * Specifies grid internal events\n */\n/** @hidden */\nexport var initialLoad = 'initial-load';\n/** @hidden */\nexport var initialEnd = 'initial-end';\n/** @hidden */\nexport var dataReady = 'data-ready';\n/** @hidden */\nexport var contentReady = 'content-ready';\n/** @hidden */\nexport var uiUpdate = 'ui-update';\n/** @hidden */\nexport var onEmpty = 'on-empty';\n/** @hidden */\nexport var inBoundModelChanged = 'inbound-model-changed';\n/** @hidden */\nexport var modelChanged = 'model-changed';\n/** @hidden */\nexport var colGroupRefresh = 'colgroup-refresh';\n/** @hidden */\nexport var headerRefreshed = 'header-refreshed';\n/** @hidden */\nexport var pageBegin = 'paging-begin';\n/** @hidden */\nexport var pageComplete = 'paging-complete';\n/** @hidden */\nexport var sortBegin = 'sorting-begin';\n/** @hidden */\nexport var sortComplete = 'sorting-complete';\n/** @hidden */\nexport var filterBegin = 'filtering-begin';\n/** @hidden */\nexport var filterComplete = 'filtering-complete';\n/** @hidden */\nexport var searchBegin = 'searching-begin';\n/** @hidden */\nexport var searchComplete = 'searching-complete';\n/** @hidden */\nexport var reorderBegin = 'reorder-begin';\n/** @hidden */\nexport var reorderComplete = 'reorder-complete';\n/** @hidden */\nexport var rowDragAndDropBegin = 'rowdraganddrop-begin';\n/** @hidden */\nexport var rowDragAndDropComplete = 'rowdraganddrop-complete';\n/** @hidden */\nexport var groupBegin = 'grouping-begin';\n/** @hidden */\nexport var groupComplete = 'grouping-complete';\n/** @hidden */\nexport var ungroupBegin = 'ungrouping-begin';\n/** @hidden */\nexport var ungroupComplete = 'ungrouping-complete';\n/** @hidden */\nexport var groupAggregates = 'group-aggregates';\n/** @hidden */\nexport var refreshFooterRenderer = 'refresh-footer-rendered';\n/** @hidden */\nexport var refreshAggregateCell = 'refresh-aggregate-cell';\n/** @hidden */\nexport var refreshAggregates = 'refresh-aggregates';\n/** @hidden */\nexport var rowSelectionBegin = 'rowselecting';\n/** @hidden */\nexport var rowSelectionComplete = 'rowselected';\n/** @hidden */\nexport var columnSelectionBegin = 'columnselecting';\n/** @hidden */\nexport var columnSelectionComplete = 'columnselected';\n/** @hidden */\nexport var cellSelectionBegin = 'cellselecting';\n/** @hidden */\nexport var cellSelectionComplete = 'cellselected';\n/** @hidden */\nexport var beforeCellFocused = 'beforecellfocused';\n/** @hidden */\nexport var cellFocused = 'cellfocused';\n/** @hidden */\nexport var keyPressed = 'key-pressed';\n/** @hidden */\nexport var click = 'click';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var columnVisibilityChanged = 'column-visible-changed';\n/** @hidden */\nexport var scroll = 'scroll';\n/** @hidden */\nexport var columnWidthChanged = 'column-width-changed';\n/** @hidden */\nexport var columnPositionChanged = 'column-position-changed';\n/** @hidden */\nexport var rowDragAndDrop = 'row-drag-and-drop';\n/** @hidden */\nexport var rowsAdded = 'rows-added';\n/** @hidden */\nexport var rowsRemoved = 'rows-removed';\n/** @hidden */\nexport var columnDragStop = 'column-drag-stop';\n/** @hidden */\nexport var headerDrop = 'header-drop';\n/** @hidden */\nexport var dataSourceModified = 'datasource-modified';\n/** @hidden */\nexport var refreshComplete = 'refresh-complete';\n/** @hidden */\nexport var refreshVirtualBlock = 'refresh-virtual-block';\n/** @hidden */\nexport var dblclick = 'dblclick';\n/** @hidden */\nexport var toolbarRefresh = 'toolbar-refresh';\n/** @hidden */\nexport var bulkSave = 'bulk-save';\n/** @hidden */\nexport var autoCol = 'auto-col';\n/** @hidden */\nexport var tooltipDestroy = 'tooltip-destroy';\n/** @hidden */\nexport var updateData = 'update-data';\n/** @hidden */\nexport var editBegin = 'edit-begin';\n/** @hidden */\nexport var editComplete = 'edit-complete';\n/** @hidden */\nexport var addBegin = 'add-begin';\n/** @hidden */\nexport var addComplete = 'add-complete';\n/** @hidden */\nexport var saveComplete = 'save-complete';\n/** @hidden */\nexport var deleteBegin = 'delete-begin';\n/** @hidden */\nexport var deleteComplete = 'delete-complete';\n/** @hidden */\nexport var preventBatch = 'prevent-batch';\n/** @hidden */\nexport var dialogDestroy = 'dialog-destroy';\n/** @hidden */\nexport var crudAction = 'crud-Action';\n/** @hidden */\nexport var addDeleteAction = 'add-delete-Action';\n/** @hidden */\nexport var destroyForm = 'destroy-form';\n/** @hidden */\nexport var doubleTap = 'double-tap';\n/** @hidden */\nexport var beforeExcelExport = 'beforeExcelExport';\n/** @hidden */\nexport var excelExportComplete = 'excelExportComplete';\n/** @hidden */\nexport var excelQueryCellInfo = 'excelQueryCellInfo';\n/** @hidden */\nexport var excelHeaderQueryCellInfo = 'excelHeaderQueryCellInfo';\n/** @hidden */\nexport var exportDetailDataBound = 'exportDetailDataBound';\n/** @hidden */\nexport var beforePdfExport = 'beforePdfExport';\n/** @hidden */\nexport var pdfExportComplete = 'pdfExportComplete';\n/** @hidden */\nexport var pdfQueryCellInfo = 'pdfQueryCellInfo';\n/** @hidden */\nexport var pdfHeaderQueryCellInfo = 'pdfHeaderQueryCellInfo';\n/** @hidden */\nexport var accessPredicate = 'access-predicate';\n/** @hidden */\nexport var contextMenuClick = 'contextMenuClick';\n/** @hidden */\nexport var freezeRender = 'freezerender';\n/** @hidden */\nexport var freezeRefresh = 'freezerefresh';\n/** @hidden */\nexport var contextMenuOpen = 'contextMenuOpen';\n/** @hidden */\nexport var columnMenuClick = 'columnMenuClick';\n/** @hidden */\nexport var columnMenuOpen = 'columnMenuOpen';\n/** @hidden */\nexport var filterOpen = 'filterOpen';\n/** @hidden */\nexport var filterDialogCreated = 'filterDialogCreated';\n/** @hidden */\nexport var filterMenuClose = 'filter-menu-close';\n/** @hidden */\nexport var initForeignKeyColumn = 'initForeignKeyColumn';\n/** @hidden */\nexport var getForeignKeyData = 'getForeignKeyData';\n/** @hidden */\nexport var generateQuery = 'generateQuery';\n/** @hidden */\nexport var showEmptyGrid = 'showEmptyGrid';\n/** @hidden */\nexport var foreignKeyData = 'foreignKeyData';\n/** @hidden */\nexport var columnDataStateChange = 'columnDataStateChange';\n/** @hidden */\nexport var dataStateChange = 'dataStateChange';\n/** @hidden */\nexport var dataSourceChanged = 'dataSourceChanged';\n/** @hidden */\nexport var rtlUpdated = 'rtl-updated';\n/** @hidden */\nexport var beforeFragAppend = 'beforeFragAppend';\n/** @hidden */\nexport var frozenHeight = 'frozenHeight';\n/** @hidden */\nexport var textWrapRefresh = 'textWrapRefresh';\n/** @hidden */\nexport var recordAdded = 'recordAdded';\n/** @hidden */\nexport var cancelBegin = 'cancel-Begin';\n/** @hidden */\nexport var editNextValCell = 'editNextValCell';\n/** @hidden */\nexport var hierarchyPrint = 'hierarchyprint';\n/** @hidden */\nexport var expandChildGrid = 'expandchildgrid';\n/** @hidden */\nexport var printGridInit = 'printGrid-Init';\n/** @hidden */\nexport var exportRowDataBound = 'export-RowDataBound';\n/** @hidden */\nexport var exportDataBound = 'export-DataBound';\n/** @hidden */\nexport var rowPositionChanged = 'row-position-changed';\n/** @hidden */\nexport var columnChooserOpened = 'columnChooserOpened';\n/** @hidden */\nexport var batchForm = 'batchedit-form';\n/** @hidden */\nexport var beforeStartEdit = 'edit-form';\n/** @hidden */\nexport var beforeBatchCancel = 'before-batch-cancel';\n/** @hidden */\nexport var batchEditFormRendered = 'batcheditform-rendered';\n/** @hidden */\nexport var partialRefresh = 'partial-refresh';\n/** @hidden */\nexport var beforeCustomFilterOpen = 'beforeCustomFilterOpen';\n/** @hidden */\nexport var selectVirtualRow = 'select-virtual-Row';\n/** @hidden */\nexport var columnsPrepared = 'columns-prepared';\n/** @hidden */\nexport var cBoxFltrBegin = 'cbox-filter-begin';\n/** @hidden */\nexport var cBoxFltrComplete = 'cbox-filter-complete';\n/** @hidden */\nexport var fltrPrevent = 'filter-Prevent';\n/** @hidden */\nexport var beforeFltrcMenuOpen = 'before-filter-cmenu-open';\n/** @hidden */\nexport var valCustomPlacement = 'validation-custom-placement';\n/** @hidden */\nexport var filterCboxValue = 'filter-cbox-value';\n/** @hidden */\nexport var componentRendered = 'component-rendered';\n/** @hidden */\nexport var restoreFocus = 'restore-Focus';\n/** @hidden */\nexport var detailStateChange = 'detail-state-change';\n/** @hidden */\nexport var detailIndentCellInfo = 'detail-indentcell-info';\n/** @hidden */\nexport var virtaulKeyHandler = 'virtaul-key-handler';\n/** @hidden */\nexport var virtaulCellFocus = 'virtaul-cell-focus';\n/** @hidden */\nexport var virtualScrollEditActionBegin = 'virtual-scroll-edit-action-begin';\n/** @hidden */\nexport var virtualScrollEditSuccess = 'virtual-scroll-edit-success';\n/** @hidden */\nexport var virtualScrollEditCancel = 'virtual-scroll-edit-cancel';\n/** @hidden */\nexport var virtualScrollEdit = 'virtual-scroll-edit';\n/** @hidden */\nexport var refreshVirtualCache = 'refresh-virtual-cache';\n/** @hidden */\nexport var editReset = 'edit-reset';\n/** @hidden */\nexport var virtualScrollAddActionBegin = 'virtual-scroll-add-action-begin';\n/** @hidden */\nexport var getVirtualData = 'get-virtual-data';\n/** @hidden */\nexport var refreshInfiniteModeBlocks = 'refresh-infinite-mode-blocks';\n/** @hidden */\nexport var resetInfiniteBlocks = 'reset-infinite-blocks';\n/** @hidden */\nexport var infiniteScrollHandler = 'infinite-scroll-handler';\n/** @hidden */\nexport var infinitePageQuery = 'infinite-page-query';\n/** @hidden */\nexport var infiniteShowHide = 'infinite-show-hide';\n/** @hidden */\nexport var appendInfiniteContent = 'append-infinite-content';\n/** @hidden */\nexport var removeInfiniteRows = 'remove-infinite-rows';\n/** @hidden */\nexport var setInfiniteCache = 'set-infinite-cache';\n/** @hidden */\nexport var infiniteEditHandler = 'infinite-edit-handler';\n/** @hidden */\nexport var initialCollapse = 'initial-collapse';\n/** @hidden */\nexport var getAggregateQuery = 'get-aggregate-query';\n/** @hidden */\nexport var closeFilterDialog = 'close-filter-dialog';\n/** @hidden */\nexport var columnChooserCancelBtnClick = 'columnChooserCancelBtnClick';\n/** @hidden */\nexport var getFilterBarOperator = 'get-filterbar-operator';\n/** @hidden */\nexport var resetColumns = 'reset-columns';\n/** @hidden */\nexport var pdfAggregateQueryCellInfo = 'pdfAggregateQueryCellInfo';\n/** @hidden */\nexport var excelAggregateQueryCellInfo = 'excelAggregateQueryCellInfo';\n/** @hidden */\nexport var setGroupCache = 'group-cache';\n/** @hidden */\nexport var lazyLoadScrollHandler = 'lazy-load-scroll-handler';\n/** @hidden */\nexport var groupCollapse = 'group-collapse';\n/** @hidden */\nexport var beforeCheckboxRenderer = 'beforeCheckboxRenderer';\n/** @hidden */\nexport var refreshHandlers = 'refreshResizeHandlers';\n/** @hidden */\nexport var refreshFrozenColumns = 'refresh-frozen-columns';\n/** @hidden */\nexport var setReorderDestinationElement = 'set-reorder-destination-element';\n/** @hidden */\nexport var refreshVirtualFrozenHeight = 'refresh-virtual-frozen-height';\n/** @hidden */\nexport var setFreezeSelection = 'set-freeze-selection';\n/** @hidden */\nexport var setInfiniteFrozenHeight = 'set-infinite-frozen-height';\n/** @hidden */\nexport var setInfiniteColFrozenHeight = 'set-infinite-col-frozen-height';\n/** @hidden */\nexport var beforeRefreshOnDataChange = 'before-refresh-on-data-change';\n/** @hidden */\nexport var immutableBatchCancel = 'immutable-batch-cancel';\n/** @hidden */\nexport var refreshVirtualFrozenRows = 'refresh-virtual-frozenrows';\n/** @hidden */\nexport var checkScrollReset = 'check-scroll-reset';\n/** @hidden */\nexport var refreshFrozenHeight = 'refresh-frozen-height';\n/** @hidden */\nexport var setHeightToFrozenElement = 'set-height-to-frozen-element';\n/** @hidden */\nexport var preventFrozenScrollRefresh = 'prevent-frozen-scroll-refresh';\n/** @hidden */\nexport var nextCellIndex = 'next-cell-index';\n/** @hidden */\nexport var refreshInfiniteCurrentViewData = 'refresh-infinite-current-view-data';\n/** @hidden */\nexport var infiniteCrudCancel = 'infinite-crud-cancel';\n/** @hidden */\nexport var filterDialogClose = 'filter-dialog-close';\n/** @hidden */\nexport var refreshCustomFilterOkBtn = 'refresh-cutsom-filter-ok-button';\n/** @hidden */\nexport var refreshCustomFilterClearBtn = 'refresh-cutsom-filter-clear-button';\n/** @hidden */\nexport var renderResponsiveCmenu = 'render-responsive-cmenu';\n/** @hidden */\nexport var filterCmenuSelect = 'filter-cmenu-select';\n/** @hidden */\nexport var customFilterClose = 'custom-filter-close';\n/** @hidden */\nexport var setFullScreenDialog = 'set-fullscreen-dialog';\n/** @hidden */\nexport var refreshExpandandCollapse = 'refresh-Expand-and-Collapse';\n/** @hidden */\nexport var rowModeChange = 'row-mode-change';\n/** @hidden */\nexport var enterKeyHandler = 'enter-key-handler';\n/** @hidden */\nexport var refreshVirtualMaxPage = 'refresh-virtual-max-page';\n/** @hidden */\nexport var setVirtualPageQuery = 'set-virtual-page-query';\n/** @hidden */\nexport var selectRowOnContextOpen = 'select-row-on-context-open';\n/** @hidden */\nexport var pagerRefresh = 'pager-refresh';\n/** @hidden */\nexport var closeInline = 'closeinline';\n/** @hidden */\nexport var closeBatch = 'closebatch';\n/** @hidden */\nexport var closeEdit = 'close-edit';\n/** @hidden */\nexport var resetVirtualFocus = 'reset-virtual-focus';\n/** @hidden */\nexport var afterContentRender = 'after-content-renderer';\n/** @hidden */\nexport var refreshVirtualEditFormCells = 'refresh-virtual-editform-cells';\n/** @hidden */\nexport var scrollToEdit = 'scroll-to-edit';\n/** @hidden */\nexport var beforeCheckboxRendererQuery = 'before-checkbox-renderer-query';\n/** @hidden */\nexport var createVirtualValidationForm = 'create-virtual-validation-form';\n/** @hidden */\nexport var validateVirtualForm = 'validate-virtual-form';\n/** @hidden */\nexport var destroyChildGrid = 'destroy-child-grid';\n/** @hidden */\nexport var stickyScrollComplete = 'sticky-scroll-complete';\n/** @hidden */\nexport var captionActionComplete = 'infinite-group-collapse';\n/** @hidden */\nexport var refreshInfinitePersistSelection = 'refresh-infinite-persist-selection';\n/** @hidden */\nexport var refreshInfiniteEditrowindex = 'refresh-infinite-editrowindex';\n/** @hidden */\nexport var afterFilterColumnMenuClose = 'after-filter-column-menu-close';\n/** @hidden */\nexport var beforeCheckboxfilterRenderer = 'beforeCheckboxfilterRenderer';\n/** @hidden */\nexport var commandColumnDestroy = 'commandColumnDestroy';\n/** @hidden */\nexport var batchCnfrmDlgCancel = 'cancelcnfrmDlg';\n/** @hidden */\nexport var refreshVirtualLazyLoadCache = 'refresh-Virtual-LazyLoad-Cache';\n","/**\n * Defines types of Cell\n *\n * @hidden\n */\nexport var CellType;\n(function (CellType) {\n /** Defines CellType as Data */\n CellType[CellType[\"Data\"] = 0] = \"Data\";\n /** Defines CellType as Header */\n CellType[CellType[\"Header\"] = 1] = \"Header\";\n /** Defines CellType as Summary */\n CellType[CellType[\"Summary\"] = 2] = \"Summary\";\n /** Defines CellType as GroupSummary */\n CellType[CellType[\"GroupSummary\"] = 3] = \"GroupSummary\";\n /** Defines CellType as CaptionSummary */\n CellType[CellType[\"CaptionSummary\"] = 4] = \"CaptionSummary\";\n /** Defines CellType as Filter */\n CellType[CellType[\"Filter\"] = 5] = \"Filter\";\n /** Defines CellType as Indent */\n CellType[CellType[\"Indent\"] = 6] = \"Indent\";\n /** Defines CellType as GroupCaption */\n CellType[CellType[\"GroupCaption\"] = 7] = \"GroupCaption\";\n /** Defines CellType as GroupCaptionEmpty */\n CellType[CellType[\"GroupCaptionEmpty\"] = 8] = \"GroupCaptionEmpty\";\n /** Defines CellType as Expand */\n CellType[CellType[\"Expand\"] = 9] = \"Expand\";\n /** Defines CellType as HeaderIndent */\n CellType[CellType[\"HeaderIndent\"] = 10] = \"HeaderIndent\";\n /** Defines CellType as StackedHeader */\n CellType[CellType[\"StackedHeader\"] = 11] = \"StackedHeader\";\n /** Defines CellType as DetailHeader */\n CellType[CellType[\"DetailHeader\"] = 12] = \"DetailHeader\";\n /** Defines CellType as DetailExpand */\n CellType[CellType[\"DetailExpand\"] = 13] = \"DetailExpand\";\n /** Defines CellType as CommandColumn */\n CellType[CellType[\"CommandColumn\"] = 14] = \"CommandColumn\";\n /** Defines CellType as DetailFooterIntent */\n CellType[CellType[\"DetailFooterIntent\"] = 15] = \"DetailFooterIntent\";\n /** Defines CellType as RowDrag */\n CellType[CellType[\"RowDragIcon\"] = 16] = \"RowDragIcon\";\n /** Defines CellType as RowDragHeader */\n CellType[CellType[\"RowDragHIcon\"] = 17] = \"RowDragHIcon\";\n})(CellType || (CellType = {}));\n/**\n * Defines types of Render\n *\n * @hidden\n */\nexport var RenderType;\n(function (RenderType) {\n /** Defines RenderType as Header */\n RenderType[RenderType[\"Header\"] = 0] = \"Header\";\n /** Defines RenderType as Content */\n RenderType[RenderType[\"Content\"] = 1] = \"Content\";\n /** Defines RenderType as Summary */\n RenderType[RenderType[\"Summary\"] = 2] = \"Summary\";\n})(RenderType || (RenderType = {}));\n/**\n * Defines Predefined toolbar items.\n *\n * @hidden\n */\nexport var ToolbarItem;\n(function (ToolbarItem) {\n ToolbarItem[ToolbarItem[\"Add\"] = 0] = \"Add\";\n ToolbarItem[ToolbarItem[\"Edit\"] = 1] = \"Edit\";\n ToolbarItem[ToolbarItem[\"Update\"] = 2] = \"Update\";\n ToolbarItem[ToolbarItem[\"Delete\"] = 3] = \"Delete\";\n ToolbarItem[ToolbarItem[\"Cancel\"] = 4] = \"Cancel\";\n ToolbarItem[ToolbarItem[\"Print\"] = 5] = \"Print\";\n ToolbarItem[ToolbarItem[\"Search\"] = 6] = \"Search\";\n ToolbarItem[ToolbarItem[\"ColumnChooser\"] = 7] = \"ColumnChooser\";\n ToolbarItem[ToolbarItem[\"PdfExport\"] = 8] = \"PdfExport\";\n ToolbarItem[ToolbarItem[\"ExcelExport\"] = 9] = \"ExcelExport\";\n ToolbarItem[ToolbarItem[\"CsvExport\"] = 10] = \"CsvExport\";\n ToolbarItem[ToolbarItem[\"WordExport\"] = 11] = \"WordExport\";\n})(ToolbarItem || (ToolbarItem = {}));\n/**\n * Defines types of responsive dialogs\n *\n * @hidden\n */\nexport var ResponsiveDialogAction;\n(function (ResponsiveDialogAction) {\n /** Defines dialog type as Edit */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isEdit\"] = 0] = \"isEdit\";\n /** Defines dialog type as Add */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isAdd\"] = 1] = \"isAdd\";\n /** Defines dialog type as Sort */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isSort\"] = 2] = \"isSort\";\n /** Defines dialog type as Filter */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isFilter\"] = 3] = \"isFilter\";\n})(ResponsiveDialogAction || (ResponsiveDialogAction = {}));\n/**\n * Defines responsive toolbar actions\n *\n * @hidden\n */\nexport var ResponsiveToolbarAction;\n(function (ResponsiveToolbarAction) {\n /** Defines initial responsive toolbar buttons */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isInitial\"] = 0] = \"isInitial\";\n /** Defines responsive toolbar search */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isSearch\"] = 1] = \"isSearch\";\n})(ResponsiveToolbarAction || (ResponsiveToolbarAction = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Row } from '../models/row';\nimport { isNullOrUndefined, extend, setValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport { getForeignData, getUid } from '../../grid/base/util';\n/**\n * GroupModelGenerator is used to generate group caption rows and data rows.\n *\n * @hidden\n */\nvar GroupModelGenerator = /** @class */ (function (_super) {\n __extends(GroupModelGenerator, _super);\n function GroupModelGenerator(parent) {\n var _this = _super.call(this, parent) || this;\n _this.rows = [];\n /** @hidden */\n _this.index = 0;\n _this.infiniteChildCount = 0;\n _this.renderInfiniteAgg = true;\n _this.parent = parent;\n _this.summaryModelGen = new GroupSummaryModelGenerator(parent);\n _this.captionModelGen = new CaptionSummaryModelGenerator(parent);\n return _this;\n }\n GroupModelGenerator.prototype.generateRows = function (data, args) {\n if (this.parent.groupSettings.columns.length === 0) {\n return _super.prototype.generateRows.call(this, data, args);\n }\n this.isInfiniteScroll = (args.requestType === 'infiniteScroll');\n this.rows = [];\n this.index = this.parent.enableVirtualization || this.isInfiniteScroll ? args.startIndex : 0;\n for (var i = 0, len = data.length; i < len; i++) {\n this.infiniteChildCount = 0;\n this.renderInfiniteAgg = true;\n this.getGroupedRecords(0, data[parseInt(i.toString(), 10)], data.level, i, undefined, this.rows.length);\n }\n this.index = 0;\n if (this.parent.isCollapseStateEnabled()) {\n this.ensureRowVisibility();\n }\n return this.rows;\n };\n GroupModelGenerator.prototype.getGroupedRecords = function (index, data, raw, parentid, childId, tIndex, parentUid) {\n var _a;\n var level = raw;\n if (isNullOrUndefined(data.items)) {\n if (isNullOrUndefined(data.GroupGuid)) {\n this.rows = this.rows.concat(this.generateDataRows(data, index, parentid, this.rows.length, parentUid));\n }\n else {\n for (var j = 0, len = data.length; j < len; j++) {\n this.getGroupedRecords(index, data[parseInt(j.toString(), 10)], data.level, parentid, index, this.rows.length, parentUid);\n }\n }\n }\n else {\n var preCaption = void 0;\n var captionRow = this.generateCaptionRow(data, index, parentid, childId, tIndex, parentUid);\n if (this.isInfiniteScroll) {\n preCaption = this.getPreCaption(index, captionRow.data.key);\n }\n if (!preCaption) {\n this.rows = this.rows.concat(captionRow);\n }\n else {\n captionRow.uid = preCaption.uid;\n }\n if (data.items && data.items.length) {\n this.getGroupedRecords(index + 1, data.items, data.items.level, parentid, index + 1, this.rows.length, captionRow.uid);\n }\n if (this.parent.aggregates.length && this.isRenderAggregate(captionRow)) {\n var rowCnt = this.rows.length;\n (_a = this.rows).push.apply(_a, this.summaryModelGen.generateRows(data, { level: level, parentUid: captionRow.uid }));\n for (var i = rowCnt - 1; i >= 0; i--) {\n if (this.rows[parseInt(i.toString(), 10)].isCaptionRow) {\n this.rows[parseInt(i.toString(), 10)].aggregatesCount = this.rows.length - rowCnt;\n }\n else if (!this.rows[parseInt(i.toString(), 10)].isCaptionRow && !this.rows[parseInt(i.toString(), 10)].isDataRow) {\n break;\n }\n }\n }\n if (preCaption) {\n this.setInfiniteRowVisibility(preCaption);\n }\n }\n };\n GroupModelGenerator.prototype.isRenderAggregate = function (data) {\n if (this.parent.enableInfiniteScrolling) {\n if (!this.renderInfiniteAgg) {\n return false;\n }\n this.getPreCaption(data.indent, data.data.key);\n this.renderInfiniteAgg = data.data.count === this.infiniteChildCount;\n return this.renderInfiniteAgg;\n }\n return !this.parent.enableInfiniteScrolling;\n };\n GroupModelGenerator.prototype.getPreCaption = function (indent, key) {\n var rowObj = this.parent.getRowsObject().concat(this.rows);\n var preCap;\n this.infiniteChildCount = 0;\n var i = rowObj.length;\n while (i--) {\n if (rowObj[parseInt(i.toString(), 10)].isCaptionRow && rowObj[parseInt(i.toString(), 10)].indent === indent\n && rowObj[parseInt(i.toString(), 10)].data.key === key) {\n preCap = rowObj[parseInt(i.toString(), 10)];\n }\n if (rowObj[parseInt(i.toString(), 10)].indent === indent || rowObj[parseInt(i.toString(), 10)].indent < indent) {\n break;\n }\n if (rowObj[parseInt(i.toString(), 10)].indent === indent + 1) {\n this.infiniteChildCount++;\n }\n }\n return preCap;\n };\n GroupModelGenerator.prototype.getCaptionRowCells = function (field, indent, data) {\n var cells = [];\n var visibles = [];\n var column = this.parent.getColumnByField(field);\n var indexes = this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization) {\n column = this.parent.columns.filter(function (c) { return c.field === field; })[0];\n }\n var groupedLen = this.parent.groupSettings.columns.length;\n var gObj = this.parent;\n if (!this.parent.enableColumnVirtualization || indexes.indexOf(indent) !== -1) {\n for (var i = 0; i < indent; i++) {\n cells.push(this.generateIndentCell());\n }\n cells.push(this.generateCell({}, null, CellType.Expand));\n }\n indent = this.parent.enableColumnVirtualization ? 1 :\n (this.parent.getVisibleColumns().length + groupedLen + (gObj.detailTemplate || gObj.childGrid ? 1 : 0) -\n indent + (this.parent.getVisibleColumns().length ? -1 : 0));\n //Captionsummary cells will be added here.\n if (this.parent.aggregates.length && !this.captionModelGen.isEmpty()) {\n var captionCells = this.captionModelGen.generateRows(data)[0];\n extend(data, captionCells.data);\n var cIndex_1 = 0;\n captionCells.cells.some(function (cell, index) { cIndex_1 = index; return cell.visible && cell.isDataCell; });\n visibles = captionCells.cells.slice(cIndex_1).filter(function (cell) { return cell.visible; });\n if (captionCells.visible && visibles[0].column.field === this.parent.getVisibleColumns()[0].field) {\n visibles = visibles.slice(1);\n }\n if (this.parent.getVisibleColumns().length === 1) {\n visibles = [];\n }\n indent = indent - visibles.length;\n }\n var cols = (!this.parent.enableColumnVirtualization ? [column] : this.parent.getColumns());\n var wFlag = true;\n for (var j = 0; j < cols.length; j++) {\n var tmpFlag = wFlag && indexes.indexOf(indent) !== -1;\n if (tmpFlag) {\n wFlag = false;\n }\n var cellType = !this.parent.enableColumnVirtualization || tmpFlag ?\n CellType.GroupCaption : CellType.GroupCaptionEmpty;\n indent = this.parent.enableColumnVirtualization && cellType === CellType.GroupCaption ? indent + groupedLen : indent;\n if (gObj.isRowDragable()) {\n indent++;\n }\n cells.push(this.generateCell(column, null, cellType, indent));\n }\n cells.push.apply(cells, visibles);\n return cells;\n };\n /**\n * @param {GroupedData} data - specifies the data\n * @param {number} indent - specifies the indent\n * @param {number} parentID - specifies the parentID\n * @param {number} childID - specifies the childID\n * @param {number} tIndex - specifies the TIndex\n * @param {string} parentUid - specifies the ParentUid\n * @returns {Row} returns the Row object\n * @hidden\n */\n GroupModelGenerator.prototype.generateCaptionRow = function (data, indent, parentID, childID, tIndex, parentUid) {\n var options = {};\n var records = 'records';\n var col = this.parent.getColumnByField(data.field);\n options.data = extend({}, data);\n if (col) {\n options.data.field = data.field;\n }\n options.isDataRow = false;\n options.isExpand = !this.parent.groupSettings.enableLazyLoading && !this.parent.isCollapseStateEnabled();\n options.parentGid = parentID;\n options.childGid = childID;\n options.tIndex = tIndex;\n options.isCaptionRow = true;\n options.parentUid = parentUid;\n options.gSummary = !isNullOrUndefined(data.items[\"\" + records]) ? data.items[\"\" + records].length : data.items.length;\n options.uid = getUid('grid-row');\n var row = new Row(options);\n row.indent = indent;\n this.getForeignKeyData(row);\n row.cells = this.getCaptionRowCells(data.field, indent, row.data);\n return row;\n };\n GroupModelGenerator.prototype.getForeignKeyData = function (row) {\n var data = row.data;\n var col = this.parent.getColumnByField(data.field);\n if (col && col.isForeignColumn && col.isForeignColumn()) {\n var fkValue = (isNullOrUndefined(data.key) ? '' : col.valueAccessor(col.foreignKeyValue, getForeignData(col, {}, data.key)[0], col));\n setValue('foreignKey', fkValue, row.data);\n }\n };\n /**\n * @param {Object[]} data - specifies the data\n * @param {number} indent - specifies the indent\n * @param {number} childID - specifies the childID\n * @param {number} tIndex - specifies the tIndex\n * @param {string} parentUid - specifies the ParentUid\n * @returns {Row[]} returns the row object\n * @hidden\n */\n GroupModelGenerator.prototype.generateDataRows = function (data, indent, childID, tIndex, parentUid) {\n var rows = [];\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = data.length; i < len; i++, tIndex++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(data[parseInt(i.toString(), 10)], this.index, i ? undefined : 'e-firstchildrow', indent, childID, tIndex, parentUid);\n for (var j = 0; j < indent; j++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(indent) === -1) {\n continue;\n }\n rows[parseInt(i.toString(), 10)].cells.unshift(this.generateIndentCell());\n }\n this.index++;\n }\n return rows;\n };\n GroupModelGenerator.prototype.generateIndentCell = function () {\n return this.generateCell({}, null, CellType.Indent);\n };\n GroupModelGenerator.prototype.refreshRows = function (input) {\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0; i < input.length; i++) {\n if (input[parseInt(i.toString(), 10)].isDataRow) {\n input[parseInt(i.toString(), 10)].cells = this.generateCells(input[parseInt(i.toString(), 10)]);\n for (var j = 0; j < input[parseInt(i.toString(), 10)].indent; j++) {\n if (this.parent.enableColumnVirtualization\n && indexes.indexOf(input[parseInt(i.toString(), 10)].indent) === -1) {\n continue;\n }\n input[parseInt(i.toString(), 10)].cells.unshift(this.generateIndentCell());\n }\n }\n else {\n var cRow = this.generateCaptionRow(input[parseInt(i.toString(), 10)].data, input[parseInt(i.toString(), 10)].indent);\n input[parseInt(i.toString(), 10)].cells = cRow.cells;\n }\n }\n return input;\n };\n GroupModelGenerator.prototype.setInfiniteRowVisibility = function (caption) {\n if (!caption.isExpand || caption.visible === false) {\n for (var _i = 0, _a = this.rows; _i < _a.length; _i++) {\n var row = _a[_i];\n if (row.parentUid === caption.uid) {\n row.visible = false;\n if (row.isCaptionRow) {\n this.setInfiniteRowVisibility(row);\n }\n }\n }\n }\n };\n GroupModelGenerator.prototype.ensureRowVisibility = function () {\n for (var i = 0; i < this.rows.length; i++) {\n var row = this.rows[parseInt(i.toString(), 10)];\n if (!row.isCaptionRow) {\n continue;\n }\n for (var j = i + 1; j < this.rows.length; j++) {\n var childRow = this.rows[parseInt(j.toString(), 10)];\n if (row.uid === childRow.parentUid) {\n this.rows[parseInt(j.toString(), 10)].visible = row.isExpand;\n }\n }\n }\n };\n return GroupModelGenerator;\n}(RowModelGenerator));\nexport { GroupModelGenerator };\n","import { Droppable } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, remove, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { getUpdateUsingRaf, appendChildren, setDisplayValue, clearReactVueTemplates } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from './row-renderer';\nimport { CellMergeRender } from './cell-merge-renderer';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupModelGenerator } from '../services/group-model-generator';\nimport { isGroupAdaptive } from '../base/util';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar ContentRender = /** @class */ (function () {\n /**\n * Constructor for content renderer module\n *\n * @param {IGrid} parent - specifies the Igrid\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n */\n function ContentRender(parent, serviceLocator) {\n var _this = this;\n this.rows = [];\n this.freezeRows = [];\n this.movableRows = [];\n this.freezeRowElements = [];\n /** @hidden */\n this.currentInfo = {};\n /** @hidden */\n this.prevCurrentView = [];\n this.isLoaded = true;\n this.viewColIndexes = [];\n this.drop = function (e) {\n _this.parent.notify(events.columnDrop, { target: e.target, droppedElement: e.droppedElement });\n remove(e.droppedElement);\n };\n this.infiniteCache = {};\n this.isRemove = false;\n /** @hidden */\n this.visibleRows = [];\n this.visibleFrozenRows = [];\n this.rightFreezeRows = [];\n this.isAddRows = false;\n this.isInfiniteFreeze = false;\n this.useGroupCache = false;\n /** @hidden */\n this.tempFreezeRows = [];\n this.rafCallback = function (args) {\n var arg = args;\n return function () {\n if (_this.parent.isFrozenGrid() && (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling)) {\n var tableName = args.tableName;\n _this.isLoaded = _this.parent.getFrozenMode() === literals.leftRight ? tableName === 'frozen-right' : tableName === 'movable';\n if (_this.parent.enableColumnVirtualization && args.requestType === 'virtualscroll' && _this.isLoaded) {\n var mHdr = [].slice.call(_this.parent.getMovableVirtualHeader().getElementsByClassName(literals.row));\n var fHdr = [].slice.call(_this.parent.getFrozenVirtualHeader().getElementsByClassName(literals.row));\n _this.isLoaded = mHdr.length === fHdr.length;\n }\n }\n _this.ariaService.setBusy(_this.getPanel().querySelector('.' + literals.content), false);\n if (_this.parent.isDestroyed) {\n return;\n }\n var rows = _this.rows.slice(0);\n if (_this.parent.enableInfiniteScrolling) {\n if (_this.parent.groupSettings.enableLazyLoading) {\n for (var i = 0; i < _this.visibleRows.length; i++) {\n _this.setRowsInLazyGroup(_this.visibleRows[parseInt(i.toString(), 10)], i);\n }\n }\n rows = _this.parent.getRowsObject();\n var prevPage = arg.prevPage;\n if (_this.parent.infiniteScrollSettings.enableCache && prevPage) {\n var maxBlock = _this.parent.infiniteScrollSettings.maxBlocks;\n rows = [];\n var rowIdx = (parseInt(_this.rowElements[0].getAttribute('data-rowindex'), 10) + 1);\n var startIdx = Math.ceil(rowIdx / _this.parent.pageSettings.pageSize);\n for (var i = 0, count = startIdx; i < maxBlock; i++, count++) {\n if (_this.infiniteCache[parseInt(count.toString(), 10)]) {\n rows = rows.concat(_this.infiniteCache[parseInt(count.toString(), 10)]);\n }\n }\n }\n }\n if (_this.parent.isFrozenGrid()) {\n rows = args.isFrozen ? _this.freezeRows : args.renderFrozenRightContent ? _this.parent.getFrozenRightRowsObject()\n : _this.movableRows;\n }\n _this.parent.notify(events.contentReady, { rows: rows, args: arg });\n if (_this.parent.autoFit) {\n _this.parent.preventAdjustColumns();\n }\n if (!_this.parent.isInitialLoad) {\n _this.parent.focusModule.setFirstFocusableTabIndex();\n }\n if (_this.isLoaded) {\n _this.parent.isManualRefresh = false;\n if (_this.parent.enableInfiniteScrolling && _this.parent.groupSettings.enableLazyLoading && args.requestType === 'sorting') {\n _this.parent.infiniteScrollModule['groupCaptionAction'] = undefined;\n }\n var isReactChild = _this.parent.parentDetails && _this.parent.parentDetails.parentInstObj &&\n _this.parent.parentDetails.parentInstObj.isReact;\n if ((_this.parent.isReact || isReactChild) && _this.parent.element.querySelectorAll('.e-templatecell').length) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = _this;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(events.dataBound, {}, function () {\n if (thisRef_1.parent.allowTextWrap) {\n thisRef_1.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n });\n }\n else {\n _this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n }\n if (_this.parent.allowTextWrap && _this.parent.height === 'auto') {\n if (_this.parent.getContentTable().scrollHeight > _this.parent.getContent().clientHeight) {\n _this.parent.scrollModule.setPadding();\n }\n else {\n _this.parent.scrollModule.removePadding();\n }\n }\n }\n if (arg) {\n var action = (arg.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, arg);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n if (_this.isLoaded) {\n _this.parent.hideSpinner();\n }\n };\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.parent.enableDeepCompare = this.parent.getDataModule().isRemote();\n this.generator = this.getModelGenerator();\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization && !this.parent.enableVirtualization\n && !this.parent.groupSettings.enableLazyLoading) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.colGroupRefresh, this.colGroupRefresh, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.refreshInfiniteModeBlocks, this.refreshContentRows, this);\n this.parent.on(events.beforeCellFocused, this.beforeCellFocused, this);\n this.parent.on(events.destroy, this.droppableDestroy, this);\n }\n ContentRender.prototype.beforeCellFocused = function (e) {\n if (e.byKey && (e.keyArgs.action === 'upArrow' || e.keyArgs.action === 'downArrow')) {\n this.pressedKey = e.keyArgs.action;\n }\n else {\n this.pressedKey = undefined;\n }\n };\n /**\n * The function is used to render grid content div\n *\n * @returns {void}\n */\n ContentRender.prototype.renderPanel = function () {\n var gObj = this.parent;\n var div = this.parent.element.querySelector('.' + literals.gridContent);\n if (div) {\n this.ariaService.setOptions(this.parent.element.querySelector('.' + literals.content), { busy: false });\n this.setPanel(div);\n return;\n }\n div = this.parent.createElement('div', { className: literals.gridContent });\n var innerDiv = this.parent.createElement('div', {\n className: literals.content\n });\n this.ariaService.setOptions(innerDiv, { busy: false });\n div.appendChild(innerDiv);\n this.setPanel(div);\n gObj.element.appendChild(div);\n };\n /**\n * The function is used to render grid content table\n *\n * @returns {void}\n */\n ContentRender.prototype.renderTable = function () {\n var contentDiv = this.getPanel();\n var virtualTable = contentDiv.querySelector('.e-virtualtable');\n var virtualTrack = contentDiv.querySelector('.e-virtualtrack');\n if (this.parent.enableVirtualization && !isNullOrUndefined(virtualTable) && !isNullOrUndefined(virtualTrack)) {\n remove(virtualTable);\n remove(virtualTrack);\n }\n contentDiv.appendChild(this.createContentTable('_content_table'));\n this.setTable(contentDiv.querySelector('.' + literals.table));\n this.ariaService.setOptions(this.getTable(), {\n multiselectable: this.parent.selectionSettings.type === 'Multiple'\n });\n this.initializeContentDrop();\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().classList.add('e-frozenhdrcont');\n }\n };\n /**\n * The function is used to create content table elements\n *\n * @param {string} id - specifies the id\n * @returns {Element} returns the element\n * @hidden\n */\n ContentRender.prototype.createContentTable = function (id) {\n var innerDiv = this.getPanel().firstElementChild;\n if (this.getTable()) {\n remove(this.getTable());\n }\n var table = innerDiv.querySelector('.' + literals.table) ? innerDiv.querySelector('.' + literals.table) :\n this.parent.createElement('table', {\n className: literals.table, attrs: {\n cellspacing: '0.25px', role: 'grid',\n id: this.parent.element.id + id\n }\n });\n this.setColGroup(this.parent.getHeaderTable().querySelector(literals.colGroup).cloneNode(true));\n table.appendChild(this.getColGroup());\n table.appendChild(this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }));\n innerDiv.appendChild(table);\n return innerDiv;\n };\n /**\n * Refresh the content of the Grid.\n *\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n */\n // tslint:disable-next-line:max-func-body-length\n ContentRender.prototype.refreshContentRows = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n if (gObj.currentViewData.length === 0) {\n return;\n }\n var dataSource = this.currentMovableRows || gObj.currentViewData;\n var contentModule = this.parent.contentModule;\n var isReact = gObj.isReact && !isNullOrUndefined(gObj.rowTemplate);\n var frag = isReact ? gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }) : document.createDocumentFragment();\n if (!this.initialPageRecords) {\n this.initialPageRecords = extend([], dataSource);\n }\n var hdrfrag = isReact ? gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }) : document.createDocumentFragment();\n var refFrag;\n var refHdrfrag;\n if (gObj.isReact && gObj.rowTemplate) {\n refFrag = frag;\n refHdrfrag = hdrfrag;\n }\n var columns = gObj.getColumns();\n var tr;\n var hdrTbody;\n var frzCols = gObj.getFrozenColumns();\n var isFrozenGrid = this.parent.isFrozenGrid();\n var trElement;\n var row = new RowRenderer(this.serviceLocator, null, this.parent);\n var isInfiniteScroll = this.parent.enableInfiniteScrolling\n && args.requestType === 'infiniteScroll';\n gObj.notify(events.destroyChildGrid, {});\n this.rowElements = [];\n this.rows = [];\n this.tempFreezeRows = [];\n var fCont = this.getPanel().querySelector('.' + literals.frozenContent);\n var mCont = this.getPanel().querySelector('.' + literals.movableContent);\n var cont = this.getPanel().querySelector('.' + literals.content);\n var tbdy;\n var tableName;\n if (isGroupAdaptive(gObj)) {\n if (['sorting', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder', 'save', 'delete']\n .some(function (value) { return args.requestType === value; })) {\n this.emptyVcRows();\n }\n }\n var modelData;\n if (this.parent.enableVirtualization && this.parent.isFrozenGrid()) {\n if (this.parent.enableColumnVirtualization && args.requestType === 'virtualscroll'\n && args.virtualInfo.sentinelInfo.axis === 'X') {\n modelData = this.parent.contentModule.generateRows(dataSource, args);\n args.renderMovableContent = true;\n }\n modelData = this.parent.contentModule.generateRows(dataSource, args);\n }\n else {\n modelData = this.checkCache(modelData, args);\n if (!this.isAddRows && !this.useGroupCache) {\n modelData = this.generator.generateRows(dataSource, args);\n }\n }\n this.setGroupCache(modelData, args);\n this.parent.notify(events.setInfiniteCache, { isInfiniteScroll: isInfiniteScroll, modelData: modelData, args: args });\n var idx = modelData[0].cells[0].index;\n if (isFrozenGrid) {\n tableName = contentModule.setTbody(modelData, args);\n tbdy = contentModule.getTbody(tableName);\n }\n var isFrozenLeft = this.parent.getFrozenMode() === literals.leftRight && tableName === literals.frozenRight;\n /* eslint-disable */\n if (!(args.requestType === 'infiniteScroll' && !this.parent.infiniteScrollSettings.enableCache) && this.parent.registeredTemplate\n && this.parent.registeredTemplate.template && !args.isFrozen && !isFrozenLeft) {\n var templatetoclear = [];\n for (var i = 0; i < this.parent.registeredTemplate.template.length; i++) {\n for (var j = 0; j < this.parent.registeredTemplate.template[i].rootNodes.length; j++) {\n if (isNullOrUndefined(this.parent.registeredTemplate.template[i].rootNodes[j].parentNode)) {\n templatetoclear.push(this.parent.registeredTemplate.template[i]);\n /* eslint-enable */\n }\n }\n }\n this.parent.destroyTemplate(['template'], templatetoclear);\n }\n if ((this.parent.isReact || this.parent.isVue) && !(args.requestType === 'infiniteScroll' && !this.parent.infiniteScrollSettings.enableCache) && !args.isFrozen) {\n var templates = [\n this.parent.isVue ? 'template' : 'columnTemplate', 'rowTemplate', 'detailTemplate',\n 'captionTemplate', 'commandsTemplate', 'groupFooterTemplate', 'groupCaptionTemplate'\n ];\n if (args.requestType === 'infiniteScroll' && this.parent.infiniteScrollSettings.enableCache) {\n templates = [\n this.parent.isVue ? 'template' : 'columnTemplate', 'commandsTemplate'\n ];\n }\n clearReactVueTemplates(this.parent, templates);\n }\n if (this.parent.enableColumnVirtualization) {\n var cellMerge = new CellMergeRender(this.serviceLocator, this.parent);\n cellMerge.updateVirtualCells(modelData);\n }\n if (!isFrozenGrid) {\n this.tbody = this.getTable().querySelector(literals.tbody);\n }\n var startIndex = 0;\n var blockLoad = true;\n if (isGroupAdaptive(gObj) && gObj.vcRows.length) {\n var top_1 = 'top';\n var scrollTop = !isNullOrUndefined(args.virtualInfo.offsets) ? args.virtualInfo.offsets.top :\n (!isNullOrUndefined(args.scrollTop) ? args.scrollTop[\"\" + top_1] : 0);\n if (scrollTop !== 0) {\n var offsets_1 = gObj.vGroupOffsets;\n var bSize = gObj.pageSettings.pageSize / 2;\n var values = Object.keys(offsets_1).map(function (key) { return offsets_1[\"\" + key]; });\n for (var m = 0; m < values.length; m++) {\n if (scrollTop < values[parseInt(m.toString(), 10)]) {\n if (!isNullOrUndefined(args.virtualInfo) && args.virtualInfo.direction === 'up') {\n startIndex = m > 0 ? ((m - 1) * bSize) : (m * bSize);\n break;\n }\n else {\n startIndex = m * bSize;\n if (this.parent.contentModule.isEndBlock(m) || this.parent.contentModule.isEndBlock(m + 1)) {\n args.virtualInfo.blockIndexes = [m, m + 1];\n }\n break;\n }\n }\n }\n if (Math.round(scrollTop + this.contentPanel.firstElementChild.offsetHeight) >=\n this.contentPanel.firstElementChild.scrollHeight && !args.rowObject) {\n blockLoad = false;\n }\n }\n }\n var isVFFrozenOnly = gObj.frozenRows && !gObj.isFrozenGrid() && this.parent.enableVirtualization\n && args.requestType === 'reorder';\n if ((gObj.frozenRows && args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo.axis === 'X') || isVFFrozenOnly) {\n var bIndex = args.virtualInfo.blockIndexes;\n var page = args.virtualInfo.page;\n args.virtualInfo.blockIndexes = [1, 2];\n if (isVFFrozenOnly) {\n args.virtualInfo.page = 1;\n }\n var data = isVFFrozenOnly ? this.initialPageRecords : dataSource;\n var mhdrData = this.vgenerator\n .generateRows(data, args);\n mhdrData.splice(this.parent.frozenRows);\n for (var i = 0; i < this.parent.frozenRows; i++) {\n mhdrData[parseInt(i.toString(), 10)].cells.splice(0, this.parent.getFrozenColumns());\n tr = row.render(mhdrData[parseInt(i.toString(), 10)], columns);\n hdrfrag.appendChild(tr);\n }\n args.virtualInfo.blockIndexes = bIndex;\n args.virtualInfo.page = page;\n if (isVFFrozenOnly && args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n }\n this.virtualFrozenHdrRefresh(hdrfrag, modelData, row, args, dataSource, columns);\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).refRowsObj[this.parent.pageSettings.currentPage] = [];\n }\n if (this.parent.enableInfiniteScrolling && this.parent.groupSettings.enableLazyLoading && args.requestType === 'delete') { // || (this.parent.infiniteScrollSettings && this.parent.infiniteScrollSettings.enableCache))\n this.visibleRows = [];\n }\n var _loop_1 = function (i, len) {\n this_1.rows.push(modelData[parseInt(i.toString(), 10)]);\n if (isFrozenGrid) {\n this_1.tempFreezeRows.push(modelData[parseInt(i.toString(), 10)]);\n }\n if (this_1.parent.groupSettings.enableLazyLoading && !this_1.useGroupCache && this_1.parent.groupSettings.columns.length) {\n (this_1.parent.enableVirtualization ? this_1.parent.lazyLoadRender :\n this_1.parent.contentModule).refRowsObj[this_1.parent.pageSettings.currentPage].push(modelData[parseInt(i.toString(), 10)]);\n this_1.setRowsInLazyGroup(modelData[parseInt(i.toString(), 10)], i);\n if (isNullOrUndefined(modelData[parseInt(i.toString(), 10)].indent)) {\n return \"continue\";\n }\n }\n this_1.setInfiniteVisibleRows(args, modelData[parseInt(i.toString(), 10)], tableName);\n if (isGroupAdaptive(gObj) && args.virtualInfo && args.virtualInfo.blockIndexes\n && (this_1.rowElements.length >= (args.virtualInfo.blockIndexes.length * this_1.parent.contentModule.getBlockSize()))\n && blockLoad) {\n this_1.parent.currentViewData['records'] = this_1.rows.map(function (m) { return m.data; });\n return \"break\";\n }\n if (!gObj.rowTemplate) {\n tr = row.render(modelData[parseInt(i.toString(), 10)], columns);\n var isVFreorder = this_1.ensureFrozenHeaderRender(args);\n if (gObj.frozenRows && i < gObj.frozenRows && !isInfiniteScroll && args.requestType !== 'virtualscroll' && isVFreorder\n && this_1.ensureVirtualFrozenHeaderRender(args)) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n if (modelData[parseInt(i.toString(), 10)].isExpand) {\n gObj.notify(events.expandChildGrid, tr.cells[gObj.groupSettings.columns.length]);\n }\n }\n else {\n var rowTemplateID = gObj.element.id + 'rowTemplate';\n var elements = void 0;\n if (gObj.isReact) {\n var isHeader = gObj.frozenRows && i < gObj.frozenRows;\n var copied = extend({ index: i }, dataSource[parseInt(i.toString(), 10)]);\n gObj.getRowTemplate()(copied, gObj, 'rowTemplate', rowTemplateID, null, null, isHeader ? hdrfrag : frag);\n if (gObj.requireTemplateRef) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_2 = this_1;\n thisRef_2.parent.renderTemplates(function () {\n if (gObj.frozenRows && i < gObj.frozenRows) {\n tr = refHdrfrag.childNodes[parseInt(i.toString(), 10)];\n }\n else {\n trElement = refFrag.childNodes[parseInt(i.toString(), 10)];\n }\n var arg = { data: modelData[parseInt(i.toString(), 10)].data,\n row: trElement ? trElement : tr };\n thisRef_2.parent.trigger(events.rowDataBound, arg);\n if (modelData[parseInt(i.toString(), 10)].isDataRow || (thisRef_2.parent.enableVirtualization &&\n thisRef_2.parent.groupSettings.enableLazyLoading)) {\n thisRef_2.rowElements.push(tr);\n }\n thisRef_2.ariaService.setOptions(thisRef_2.getTable(), {\n colcount: gObj.getColumns().length.toString()\n });\n if (i === modelData.length - 1) {\n refFrag = null;\n refHdrfrag = null;\n }\n });\n return \"continue\";\n }\n }\n else {\n elements = gObj.getRowTemplate()(extend({ index: i }, dataSource[parseInt(i.toString(), 10)]), gObj, 'rowTemplate', rowTemplateID, undefined, undefined, undefined, this_1.parent['root']);\n }\n if (!gObj.isReact && elements[0].tagName === 'TBODY') {\n for (var j = 0; j < elements.length; j++) {\n var isTR = elements[parseInt(j.toString(), 10)].nodeName.toLowerCase() === 'tr';\n if (isTR || (elements[parseInt(j.toString(), 10)].querySelectorAll && elements[parseInt(j.toString(), 10)].querySelectorAll('tr').length)) {\n tr = isTR ? elements[parseInt(j.toString(), 10)] : elements[parseInt(j.toString(), 10)].querySelector('tr');\n }\n }\n if (gObj.frozenRows && i < gObj.frozenRows) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n }\n else {\n if (gObj.frozenRows && i < gObj.frozenRows) {\n tr = !gObj.isReact ? appendChildren(hdrfrag, elements) : hdrfrag.lastElementChild;\n }\n else {\n // frag.appendChild(tr);\n if (!gObj.isReact) {\n tr = appendChildren(frag, elements);\n }\n trElement = gObj.isReact ? frag.lastElementChild : tr.lastElementChild;\n }\n }\n var arg = { data: modelData[parseInt(i.toString(), 10)].data, row: trElement ? trElement : tr };\n this_1.parent.trigger(events.rowDataBound, arg);\n }\n if (modelData[parseInt(i.toString(), 10)].isDataRow || (this_1.parent.enableVirtualization &&\n this_1.parent.groupSettings.enableLazyLoading)) {\n this_1.rowElements.push(tr);\n }\n this_1.ariaService.setOptions(this_1.getTable(), { colcount: gObj.getColumns().length.toString() });\n };\n var this_1 = this;\n for (var i = startIndex, len = modelData.length; i < len; i++) {\n var state_1 = _loop_1(i, len);\n if (state_1 === \"break\")\n break;\n }\n var isReactChild = gObj.parentDetails && gObj.parentDetails.parentInstObj && gObj.parentDetails.parentInstObj.isReact;\n if ((gObj.isReact || isReactChild) && !gObj.requireTemplateRef) {\n gObj.renderTemplates();\n }\n if (this.parent.enableInfiniteScrolling && this.parent.groupSettings.enableLazyLoading) {\n this.parent.contentModule.refRowsObj[this.parent.pageSettings.currentPage] =\n this.parent.contentModule['groupCache'][this.parent.pageSettings.currentPage];\n }\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n this.parent.notify(events.refreshExpandandCollapse, {\n rows: (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).refRowsObj[this.parent.pageSettings.currentPage]\n });\n }\n if (isFrozenGrid) {\n contentModule.splitRows(tableName);\n }\n gObj.removeMaskRow();\n this.parent.notify('removeGanttShimmer', { requestType: 'hideShimmer' });\n if ((gObj.frozenRows && args.requestType !== 'virtualscroll' && !isInfiniteScroll && this.ensureVirtualFrozenHeaderRender(args))\n || (args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo && args.virtualInfo.sentinelInfo.axis === 'X')) {\n hdrTbody = isFrozenGrid ? contentModule.getFrozenHeader(tableName) : gObj.getHeaderTable().querySelector(literals.tbody);\n if (isReact) {\n var parentTable = hdrTbody.parentElement;\n remove(hdrTbody);\n parentTable.appendChild(hdrfrag);\n }\n else {\n hdrTbody.innerHTML = '';\n hdrTbody.appendChild(hdrfrag);\n }\n }\n if (!gObj.enableVirtualization && gObj.frozenRows && idx === 0 && cont.offsetHeight === Number(gObj.height)) {\n cont.style.height = (cont.offsetHeight - hdrTbody.offsetHeight) + 'px';\n }\n args.rows = this.rows.slice(0);\n if (isFrozenGrid) {\n contentModule.setIsFrozen(args, tableName);\n }\n this.index = idx;\n getUpdateUsingRaf(function () {\n _this.parent.notify(events.beforeFragAppend, args);\n var isVFTable = _this.parent.enableVirtualization && _this.parent.isFrozenGrid();\n if (!_this.parent.enableVirtualization && !isInfiniteScroll) {\n if (_this.parent.isFrozenGrid()) {\n remove(contentModule.getTbody(tableName));\n tbdy = _this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n }\n else {\n if (!gObj.isReact) {\n _this.tbody.innerHTML = '';\n }\n if (!isNullOrUndefined(_this.tbody.parentElement)) {\n remove(_this.tbody);\n }\n else {\n remove(gObj.getContentTable().querySelector(literals.tbody));\n }\n _this.tbody = _this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n }\n }\n if (isFrozenGrid && !isVFTable && !_this.parent.enableInfiniteScrolling) {\n _this.appendContent(tbdy, frag, args, tableName);\n }\n else {\n if (gObj.rowTemplate) {\n updateBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate', gObj);\n }\n if (isVFTable) {\n if (args.renderFrozenRightContent) {\n var frCont = gObj.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody);\n _this.appendContent(frCont, frag, args);\n }\n else if (!args.renderMovableContent) {\n _this.appendContent(fCont.querySelector(literals.tbody), frag, args);\n }\n else {\n _this.appendContent(mCont.querySelector(literals.tbody), frag, args);\n args.renderMovableContent = false;\n }\n if (!_this.parent.getFrozenColumns()) {\n contentModule.renderNextFrozentPart(args, tableName);\n }\n }\n else {\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling) {\n _this.isAddRows = false;\n _this.parent.notify(events.removeInfiniteRows, { args: args });\n _this.parent.notify(events.appendInfiniteContent, {\n tbody: tbdy ? tbdy : _this.tbody, frag: frag, args: args, rows: _this.rows,\n rowElements: _this.rowElements, visibleRows: _this.visibleRows,\n tableName: tableName\n });\n if (!frzCols && isFrozenGrid) {\n if ((gObj.getFrozenMode() !== literals.leftRight\n && (tableName === literals.frozenLeft || tableName === literals.frozenRight))\n || (gObj.getFrozenMode() === literals.leftRight\n && (tableName === literals.frozenLeft || tableName === 'movable'))) {\n _this.refreshContentRows(extend({}, args));\n }\n }\n }\n else {\n _this.useGroupCache = false;\n _this.appendContent(_this.tbody, frag, args);\n }\n }\n }\n if (frzCols) {\n contentModule.renderNextFrozentPart(args, tableName);\n }\n frag = null;\n }, this.rafCallback(extend({}, args)));\n };\n ContentRender.prototype.emptyVcRows = function () {\n this.parent.vcRows = [];\n this.parent.vRows = [];\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ContentRender.prototype.appendContent = function (tbody, frag, args, tableName) {\n var isReact = this.parent.isReact && !isNullOrUndefined(this.parent.rowTemplate);\n if (isReact) {\n this.getTable().appendChild(frag);\n }\n else {\n tbody.appendChild(frag);\n this.getTable().appendChild(tbody);\n }\n if (this.parent.rowRenderingMode === 'Vertical' && this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Header'\n || this.parent.textWrapSettings.wrapMode === 'Both')) {\n var cells = tbody.querySelectorAll('td');\n for (var i = 0; i < cells.length; i++) {\n var headerCellHeight = parseFloat(document.defaultView.getComputedStyle(cells[parseInt(i.toString(), 10)], '::before').getPropertyValue('height'));\n var cellHeight = cells[parseInt(i.toString(), 10)].offsetHeight;\n if (headerCellHeight > cellHeight) {\n cells[parseInt(i.toString(), 10)].style.height = headerCellHeight + 'px';\n cells[parseInt(i.toString(), 10)].style.boxSizing = 'content-box';\n }\n }\n }\n };\n ContentRender.prototype.setRowsInLazyGroup = function (row, index) {\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).maintainRows(row, index);\n }\n };\n ContentRender.prototype.setGroupCache = function (data, args) {\n if (!this.useGroupCache && this.parent.groupSettings.enableLazyLoading) {\n this.parent.notify(events.setGroupCache, { args: args, data: data });\n }\n };\n ContentRender.prototype.ensureFrozenHeaderRender = function (args) {\n return !((this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) || (this.parent.infiniteScrollSettings.enableCache\n && this.parent.frozenRows && this.parent.infiniteScrollModule.requestType === 'delete'\n && this.parent.pageSettings.currentPage !== 1));\n };\n ContentRender.prototype.ensureVirtualFrozenHeaderRender = function (args) {\n return !(this.parent.enableVirtualization && args.requestType === 'delete');\n };\n ContentRender.prototype.checkCache = function (modelData, args) {\n if (this.parent.infiniteScrollSettings.enableCache && args.requestType === 'infiniteScroll') {\n var index = args.isFrozen ? 1 : 0;\n var frozenCols = this.parent.isFrozenGrid();\n this.isAddRows = !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage]);\n if (frozenCols && !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage])) {\n this.isAddRows = this.infiniteCache[this.parent.pageSettings\n .currentPage][parseInt(index.toString(), 10)].length !== 0;\n }\n if (this.isAddRows) {\n var data = !frozenCols ? this.infiniteCache[this.parent.pageSettings.currentPage]\n : this.infiniteCache[this.parent.pageSettings.currentPage][parseInt(index.toString(), 10)];\n modelData = this.parent.pageSettings.currentPage === 1 ? data.slice(this.parent.frozenRows) : data;\n }\n return modelData;\n }\n if (this.parent.groupSettings.enableLazyLoading && this.parent.groupSettings.columns.length && (args.requestType === 'paging'\n || args.requestType === 'columnstate' || args.requestType === 'reorder' || args.requestType === 'virtualscroll')\n && (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).getGroupCache()[this.parent.pageSettings.currentPage]) {\n if (!this.parent.enableVirtualization) {\n this.useGroupCache = true;\n }\n return this.parent.enableVirtualization ? this.parent.getRowsObject() :\n this.parent.contentModule.initialGroupRows(args.requestType === 'reorder');\n }\n return null;\n };\n ContentRender.prototype.setInfiniteVisibleRows = function (args, data, tableName) {\n var frozenCols = this.parent.isFrozenGrid();\n if (this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache) {\n if (frozenCols) {\n if (tableName === literals.frozenLeft || (this.parent.getFrozenMode() === 'Right' && tableName === literals.frozenRight)) {\n this.visibleFrozenRows.push(data);\n }\n else if (tableName === 'movable') {\n this.visibleRows.push(data);\n }\n else {\n this.rightFreezeRows.push(data);\n }\n }\n else if (!this.parent.infiniteScrollSettings.enableCache) {\n this.visibleRows.push(data);\n }\n }\n };\n ContentRender.prototype.getCurrentBlockInfiniteRecords = function (isFreeze) {\n var data = [];\n if (this.parent.infiniteScrollSettings.enableCache) {\n if (!Object.keys(this.infiniteCache).length) {\n return [];\n }\n var frozenCols = this.parent.isFrozenGrid();\n var rows = this.parent.getRows();\n var index = parseInt(rows[this.parent.frozenRows].getAttribute(literals.dataRowIndex), 10);\n var first = Math.ceil((index + 1) / this.parent.pageSettings.pageSize);\n index = parseInt(rows[rows.length - 1].getAttribute(literals.dataRowIndex), 10);\n var last = Math.ceil((index + (rows.length ? 1 : 0)) / this.parent.pageSettings.pageSize);\n if (frozenCols) {\n var idx = isFreeze ? 0 : 1;\n for (var i = first; i <= last; i++) {\n data = !data.length ? this.infiniteCache[parseInt(i.toString(), 10)][parseInt(idx.toString(), 10)]\n : data.concat(this.infiniteCache[parseInt(i.toString(), 10)][parseInt(idx.toString(), 10)]);\n }\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n data = this.infiniteCache[1][parseInt(idx.toString(), 10)]\n .slice(0, this.parent.frozenRows).concat(data);\n }\n }\n else {\n for (var i = first; i <= last; i++) {\n data = !data.length ? this.infiniteCache[parseInt(i.toString(), 10)]\n : data.concat(this.infiniteCache[parseInt(i.toString(), 10)]);\n }\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n data = this.infiniteCache[1].slice(0, this.parent.frozenRows).concat(data);\n }\n }\n }\n return data;\n };\n ContentRender.prototype.getReorderedVFRows = function (args) {\n return this.parent.contentModule.getReorderedFrozenRows(args);\n };\n ContentRender.prototype.getReorderedRows = function (args) {\n return this.parent.contentModule.getReorderedFrozenRows(args);\n };\n ContentRender.prototype.virtualFrozenHdrRefresh = function (hdrfrag, modelData, row, args, dataSource, columns) {\n if (this.parent.frozenRows && this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) {\n var tr = void 0;\n var fhdrData = [];\n if (this.parent.isFrozenGrid()) {\n this.currentMovableRows = dataSource;\n fhdrData = this.getReorderedVFRows(args);\n }\n else {\n fhdrData = this.getReorderedRows(args);\n }\n for (var i = 0; i < fhdrData.length; i++) {\n tr = row.render(fhdrData[parseInt(i.toString(), 10)], columns);\n hdrfrag.appendChild(tr);\n }\n if (args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n if (args.renderMovableContent) {\n this.parent.currentViewData = this.currentMovableRows;\n this.currentMovableRows = null;\n }\n }\n };\n ContentRender.prototype.getInfiniteRows = function () {\n var rows = [];\n var frozenCols = this.parent.isFrozenGrid();\n if (this.parent.enableInfiniteScrolling) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n var keys = Object.keys(this.infiniteCache);\n for (var i = 0; i < keys.length; i++) {\n rows = !frozenCols ? rows.concat(this.infiniteCache[keys[parseInt(i.toString(), 10)]]) : rows.concat(this.infiniteCache[keys[parseInt(i.toString(), 10)]][0]);\n }\n }\n else {\n rows = frozenCols ? this.visibleFrozenRows : this.visibleRows;\n }\n }\n return rows;\n };\n ContentRender.prototype.getInfiniteMovableRows = function () {\n var infiniteCacheRows = this.getCurrentBlockInfiniteRecords();\n var infiniteRows = this.parent.enableInfiniteScrolling ? infiniteCacheRows.length ? infiniteCacheRows\n : this.visibleRows : [];\n return infiniteRows;\n };\n /**\n * Get the content div element of grid\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getPanel = function () {\n return this.contentPanel;\n };\n /**\n * Set the content div element of grid\n *\n * @param {Element} panel - specifies the panel\n * @returns {void}\n */\n ContentRender.prototype.setPanel = function (panel) {\n this.contentPanel = panel;\n };\n /**\n * Get the content table element of grid\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getTable = function () {\n return this.contentTable;\n };\n /**\n * Set the content table element of grid\n *\n * @param {Element} table - specifies the table\n * @returns {void}\n */\n ContentRender.prototype.setTable = function (table) {\n this.contentTable = table;\n };\n /**\n * Get the Movable Row collection in the Freeze pane Grid.\n *\n * @returns {Row[] | HTMLCollectionOf} returns the row\n */\n ContentRender.prototype.getRows = function () {\n var infiniteRows = this.getInfiniteRows();\n return infiniteRows.length ? infiniteRows : this.parent.getFrozenColumns() ? this.freezeRows : this.rows;\n };\n /**\n * Get the Movable Row collection in the Freeze pane Grid.\n *\n * @returns {Row[] | HTMLCollectionOf} returns the row\n */\n ContentRender.prototype.getMovableRows = function () {\n var infiniteRows = this.getInfiniteMovableRows();\n return infiniteRows.length ? infiniteRows : this.movableRows;\n };\n /**\n * Get the content table data row elements\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getRowElements = function () {\n return this.parent.getFrozenColumns() ? this.freezeRowElements : this.rowElements;\n };\n /**\n * Get the Freeze pane movable content table data row elements\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getMovableRowElements = function () {\n return this.rowElements;\n };\n /**\n * Get the content table data row elements\n *\n * @param {Element[]} elements - specifies the elements\n * @returns {void}\n */\n ContentRender.prototype.setRowElements = function (elements) {\n this.rowElements = elements;\n };\n /**\n * Get the header colgroup element\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n ContentRender.prototype.setColGroup = function (colGroup) {\n if (!isNullOrUndefined(colGroup)) {\n colGroup.id = 'content-' + colGroup.id;\n }\n return this.colgroup = colGroup;\n };\n /**\n * Function to hide content table column based on visible property\n *\n * @param {Column[]} columns - specifies the column\n * @returns {void}\n */\n ContentRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var isFrozenGrid = this.parent.isFrozenGrid();\n var frzCols = gObj.getFrozenColumns();\n var rows = [];\n if (isFrozenGrid) {\n var fRows = this.freezeRows;\n var mRows = this.movableRows;\n var rowLen = fRows.length;\n var cellLen = void 0;\n var rightRows = [];\n if (gObj.getFrozenMode() === literals.leftRight) {\n rightRows = gObj.getFrozenRightRowsObject();\n }\n for (var i = 0, row = void 0; i < rowLen; i++) {\n cellLen = mRows[parseInt(i.toString(), 10)].cells.length;\n var rightLen = rightRows.length ? rightRows[parseInt(i.toString(), 10)].cells.length : 0;\n row = fRows[parseInt(i.toString(), 10)].clone();\n for (var j = 0; j < cellLen; j++) {\n row.cells.push(mRows[parseInt(i.toString(), 10)].cells[parseInt(j.toString(), 10)]);\n }\n for (var k = 0; k < rightLen; k++) {\n row.cells.push(rightRows[parseInt(i.toString(), 10)].cells[parseInt(k.toString(), 10)]);\n }\n rows.push(row);\n }\n }\n else {\n rows = this.getRows();\n }\n var testRow;\n rows.some(function (r) { if (r.isDataRow) {\n testRow = r;\n } return r.isDataRow; });\n var needFullRefresh = true;\n if (!gObj.groupSettings.columns.length && testRow) {\n needFullRefresh = false;\n }\n var tr = gObj.getDataRows();\n var args = {};\n var infiniteData = this.infiniteRowVisibility();\n var contentrows = infiniteData ? infiniteData\n : this.rows.filter(function (row) { return !row.isDetailRow; });\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n var idx = this.parent.getNormalizedColumnIndex(column.uid);\n var colIdx = this.parent.getColumnIndexByUid(column.uid);\n var displayVal = column.visible === true ? '' : 'none';\n if (idx !== -1 && testRow && idx < testRow.cells.length) {\n if (isFrozenGrid) {\n if (column.getFreezeTableName() !== 'movable') {\n if (column.getFreezeTableName() === literals.frozenRight) {\n var left = this.parent.getFrozenLeftColumnsCount();\n var movable = this.parent.getMovableColumnsCount();\n colIdx = idx = idx - (left + movable);\n var colG = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector(literals.colGroup);\n setStyleAttribute(colG.childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n contentrows = gObj.getFrozenRightRowsObject();\n tr = gObj.getFrozenRightDataRows();\n }\n else {\n setStyleAttribute(this.getColGroup().childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n var infiniteFreezeData = this.infiniteRowVisibility(true);\n contentrows = infiniteFreezeData ? infiniteFreezeData : this.freezeRows;\n tr = gObj.getDataRows();\n }\n }\n else {\n var mTable = gObj.getContent().querySelector('.' + literals.movableContent).querySelector(literals.colGroup);\n colIdx = idx = idx - frzCols - this.parent.getFrozenLeftColumnsCount();\n setStyleAttribute(mTable.childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n tr = gObj.getMovableDataRows();\n var infiniteMovableData = this.infiniteRowVisibility();\n contentrows = infiniteMovableData ? infiniteMovableData : this.movableRows;\n }\n }\n else {\n setStyleAttribute(this.getColGroup().childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n }\n if (!needFullRefresh) {\n this.setDisplayNone(tr, colIdx, displayVal, contentrows);\n if (isFrozenGrid) {\n this.parent.notify(events.freezeRender, { case: 'refreshHeight', isModeChg: true });\n }\n }\n if (!this.parent.invokedFromMedia && column.hideAtMedia) {\n this.parent.updateMediaColumns(column);\n }\n this.parent.invokedFromMedia = false;\n }\n if (needFullRefresh) {\n this.refreshContentRows({ requestType: 'refresh' });\n }\n else {\n if (!this.parent.getFrozenColumns()) {\n this.parent.notify(events.partialRefresh, { rows: contentrows, args: args });\n }\n else {\n this.parent.notify(events.partialRefresh, { rows: this.freezeRows, args: { isFrozen: true, rows: this.freezeRows } });\n this.parent.notify(events.partialRefresh, { rows: this.movableRows, args: { isFrozen: false, rows: this.movableRows } });\n }\n }\n };\n /**\n * @param {Object} tr - specifies the trr\n * @param {number} idx - specifies the idx\n * @param {string} displayVal - specifies the displayval\n * @param {Row} rows - specifies the rows\n * @returns {void}\n * @hidden\n */\n ContentRender.prototype.setDisplayNone = function (tr, idx, displayVal, rows) {\n setDisplayValue(tr, idx, displayVal, rows, this.parent, this.parent.isRowDragable());\n this.parent.notify(events.infiniteShowHide, { visible: displayVal, index: idx, isFreeze: this.isInfiniteFreeze });\n };\n ContentRender.prototype.infiniteRowVisibility = function (isFreeze) {\n var infiniteData;\n if (this.parent.enableInfiniteScrolling) {\n this.isInfiniteFreeze = isFreeze;\n if (this.parent.infiniteScrollSettings.enableCache) {\n infiniteData = isFreeze ? this.getCurrentBlockInfiniteRecords(true) : this.getCurrentBlockInfiniteRecords();\n }\n else {\n infiniteData = isFreeze ? this.visibleFrozenRows : this.visibleRows;\n }\n }\n return infiniteData;\n };\n ContentRender.prototype.colGroupRefresh = function () {\n if (this.getColGroup()) {\n var colGroup = void 0;\n if (this.parent.enableColumnVirtualization && this.parent.getFrozenColumns()\n && this.parent.contentModule.isXaxis()) {\n colGroup = this.parent.getMovableVirtualHeader()\n .querySelector(literals.colGroup + ':not(.e-masked-colgroup)').cloneNode(true);\n }\n else {\n colGroup = this.getHeaderColGroup();\n }\n this.getTable().replaceChild(colGroup, this.getColGroup());\n this.setColGroup(colGroup);\n }\n };\n ContentRender.prototype.getHeaderColGroup = function () {\n return this.parent.element.querySelector('.' + literals.gridHeader)\n .querySelector(literals.colGroup + ':not(.e-masked-colgroup)').cloneNode(true);\n };\n ContentRender.prototype.initializeContentDrop = function () {\n var gObj = this.parent;\n this.droppable = new Droppable(gObj.element, {\n accept: '.e-dragclone',\n drop: this.drop\n });\n };\n ContentRender.prototype.droppableDestroy = function () {\n if (this.droppable && !this.droppable.isDestroyed) {\n this.droppable.destroy();\n }\n };\n ContentRender.prototype.canSkip = function (column, row, index) {\n /**\n * Skip the toggle visiblity operation when one of the following success\n * 1. Grid has empty records\n * 2. column visible property is unchanged\n * 3. cell`s isVisible property is same as column`s visible property.\n */\n return isNullOrUndefined(row) || //(1)\n isNullOrUndefined(column.visible) || //(2)\n row.cells[parseInt(index.toString(), 10)].visible === column.visible; //(3)\n };\n ContentRender.prototype.getModelGenerator = function () {\n return this.generator = this.parent.allowGrouping ? new GroupModelGenerator(this.parent) : new RowModelGenerator(this.parent);\n };\n ContentRender.prototype.renderEmpty = function (tbody) {\n this.getTable().appendChild(tbody);\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().querySelector(literals.tbody).innerHTML = '';\n }\n };\n ContentRender.prototype.setSelection = function (uid, set, clearAll) {\n this.parent.notify(events.setFreezeSelection, { uid: uid, set: set, clearAll: clearAll });\n var isFrozen = this.parent.isFrozenGrid();\n if (isFrozen && this.parent.enableVirtualization) {\n return;\n }\n if (isFrozen) {\n var rows = this.getMovableRows().filter(function (row) { return clearAll || uid === row.uid; });\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].isSelected = set;\n }\n }\n var row = this.getRows().filter(function (row) { return clearAll || uid === row.uid; });\n for (var j = 0; j < row.length; j++) {\n row[parseInt(j.toString(), 10)].isSelected = set;\n var cells = row[parseInt(j.toString(), 10)].cells;\n for (var k = 0; k < cells.length; k++) {\n cells[parseInt(k.toString(), 10)].isSelected = set;\n }\n }\n };\n ContentRender.prototype.getRowByIndex = function (index) {\n index = this.getInfiniteRowIndex(index);\n return !isNullOrUndefined(index) ? this.parent.getDataRows()[parseInt(index.toString(), 10)] : undefined;\n };\n ContentRender.prototype.getInfiniteRowIndex = function (index) {\n if (this.parent.infiniteScrollSettings.enableCache && !isNullOrUndefined(index)) {\n var fRows = this.parent.frozenRows;\n var idx = fRows > index ? 0 : fRows;\n var firstRowIndex = parseInt(this.parent.getRows()[parseInt(idx.toString(), 10)]\n .getAttribute(literals.dataRowIndex), 10);\n index = fRows > index ? index : (index - firstRowIndex) + fRows;\n }\n return index;\n };\n ContentRender.prototype.getVirtualRowIndex = function (index) {\n return index;\n };\n ContentRender.prototype.getMovableRowByIndex = function (index) {\n index = this.getInfiniteRowIndex(index);\n return !isNullOrUndefined(index) ? this.parent.getMovableDataRows()[parseInt(index.toString(), 10)] : undefined;\n };\n ContentRender.prototype.enableAfterRender = function (e) {\n if (e.module === 'group' && e.enable) {\n this.generator = this.getModelGenerator();\n }\n };\n ContentRender.prototype.setRowObjects = function (rows) {\n this.rows = rows;\n };\n /**\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n * @hidden\n */\n ContentRender.prototype.immutableModeRendering = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n gObj.hideSpinner();\n var key = gObj.getPrimaryKeyFieldNames()[0];\n var oldKeys = {};\n var newKeys = {};\n var newRowObjs = [];\n var oldIndexes = {};\n var oldRowObjs = gObj.getRowsObject().slice();\n var batchChangeKeys = this.getBatchEditedRecords(key, oldRowObjs);\n var newIndexes = {};\n var hasBatch = Object.keys(batchChangeKeys).length !== 0;\n if (gObj.getContent().querySelector('.e-emptyrow') || args.requestType === 'reorder'\n || this.parent.groupSettings.columns.length) {\n this.refreshContentRows(args);\n }\n else {\n if (gObj.currentViewData.length === 0) {\n return;\n }\n var oldRowElements = {};\n var tbody = gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var dataSource = gObj.currentViewData;\n var trs = [].slice.call(this.getTable().querySelector(literals.tbody).children);\n if (this.prevCurrentView.length) {\n var prevLen = this.prevCurrentView.length;\n var currentLen = dataSource.length;\n if (prevLen === currentLen) {\n for (var i = 0; i < currentLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n newKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]] = oldKeys[this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key]] = i;\n newIndexes[parseInt(i.toString(), 10)] = dataSource[parseInt(i.toString(), 10)][\"\" + key];\n oldRowElements[oldRowObjs[parseInt(i.toString(), 10)].uid] = trs[parseInt(i.toString(), 10)];\n oldIndexes[parseInt(i.toString(), 10)] = this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key];\n }\n }\n else {\n for (var i = 0; i < currentLen; i++) {\n newKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]] = i;\n newIndexes[parseInt(i.toString(), 10)] = dataSource[parseInt(i.toString(), 10)][\"\" + key];\n }\n for (var i = 0; i < prevLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n oldRowElements[oldRowObjs[parseInt(i.toString(), 10)].uid] = trs[parseInt(i.toString(), 10)];\n oldKeys[this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key]] = i;\n oldIndexes[parseInt(i.toString(), 10)] = this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key];\n }\n }\n }\n for (var i = 0; i < dataSource.length; i++) {\n var oldIndex = oldKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]];\n if (!isNullOrUndefined(oldIndex)) {\n var isEqual = false;\n if (this.parent.enableDeepCompare) {\n isEqual = this.objectEqualityChecker(this.prevCurrentView[parseInt(oldIndex.toString(), 10)], dataSource[parseInt(i.toString(), 10)]);\n }\n var tr = oldRowElements[oldRowObjs[parseInt(oldIndex.toString(), 10)]\n .uid];\n newRowObjs.push(oldRowObjs[parseInt(oldIndex.toString(), 10)]);\n if (this.rowElements[parseInt(oldIndex.toString(), 10)] && this.rowElements[parseInt(oldIndex.toString(), 10)].getAttribute('data-uid') === newRowObjs[parseInt(i.toString(), 10)].uid\n && ((hasBatch && isNullOrUndefined(batchChangeKeys[newIndexes[parseInt(i.toString(), 10)]]))\n || (!hasBatch && (isEqual\n || this.prevCurrentView[parseInt(oldIndex.toString(), 10)] === dataSource[parseInt(i.toString(), 10)])))) {\n if (oldIndex !== i) {\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n tbody.appendChild(tr);\n continue;\n }\n if ((hasBatch && !isNullOrUndefined(batchChangeKeys[newIndexes[parseInt(i.toString(), 10)]]))\n || (!this.parent.enableDeepCompare\n && dataSource[parseInt(i.toString(), 10)] !== this.prevCurrentView[parseInt(oldIndex.toString(), 10)])\n || (this.parent.enableDeepCompare && !isEqual)) {\n oldRowObjs[parseInt(oldIndex.toString(), 10)].setRowValue(dataSource[parseInt(i.toString(), 10)]);\n }\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n else {\n var row = new RowRenderer(this.serviceLocator, null, gObj);\n var args_1 = { startIndex: i };\n var modelData = this.generator.generateRows([dataSource[parseInt(i.toString(), 10)]], args_1);\n newRowObjs.push(modelData[0]);\n var tr = row.render(modelData[0], gObj.getColumns());\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n }\n this.rows = newRowObjs;\n this.rowElements = [].slice.call(tbody.children);\n remove(this.getTable().querySelector(literals.tbody));\n this.getTable().appendChild(tbody);\n this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n this.parent.notify(action, args);\n }\n }\n };\n ContentRender.prototype.objectEqualityChecker = function (old, next) {\n var keys = Object.keys(old);\n var isEqual = true;\n for (var i = 0; i < keys.length; i++) {\n if (old[keys[parseInt(i.toString(), 10)]] !== next[keys[parseInt(i.toString(), 10)]]) {\n var isDate = old[keys[parseInt(i.toString(), 10)]] instanceof Date\n && next[keys[parseInt(i.toString(), 10)]] instanceof Date;\n if (!isDate || (old[keys[parseInt(i.toString(), 10)]]\n .getTime() !== next[keys[parseInt(i.toString(), 10)]].getTime())) {\n isEqual = false;\n break;\n }\n }\n }\n return isEqual;\n };\n ContentRender.prototype.getBatchEditedRecords = function (primaryKey, rows) {\n var keys = {};\n var changes = this.parent.getBatchChanges();\n var changedRecords = [];\n var addedRecords = [];\n if (Object.keys(changes).length) {\n changedRecords = changes.changedRecords;\n addedRecords = changes.addedRecords;\n }\n var args = { cancel: false };\n this.parent.notify(events.immutableBatchCancel, { rows: rows, args: args });\n if (addedRecords.length) {\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n rows.splice(rows.length - 1, addedRecords.length);\n }\n else {\n if (!args.cancel) {\n rows.splice(0, addedRecords.length);\n }\n }\n }\n for (var i = 0; i < changedRecords.length; i++) {\n keys[changedRecords[parseInt(i.toString(), 10)][\"\" + primaryKey]] = i;\n }\n return keys;\n };\n ContentRender.prototype.refreshImmutableContent = function (index, tr, row) {\n row.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n if (row.isAltRow) {\n tr.classList.add('e-altrow');\n }\n else {\n tr.classList.remove('e-altrow');\n }\n row.index = index;\n row.edit = undefined;\n row.isDirty = false;\n tr.setAttribute(literals.dataRowIndex, index.toString());\n tr.setAttribute(literals.ariaRowIndex, (index + 1).toString());\n this.updateCellIndex(tr, index);\n };\n ContentRender.prototype.updateCellIndex = function (rowEle, index) {\n for (var i = 0; i < rowEle.cells.length; i++) {\n rowEle.cells[parseInt(i.toString(), 10)].setAttribute('index', index.toString());\n }\n };\n return ContentRender;\n}());\nexport { ContentRender };\n","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, closest as getClosest, remove } from '@syncfusion/ej2-base';\nimport { classList } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowRenderer } from './row-renderer';\nimport { Cell } from '../models/cell';\nimport { Row } from '../models/row';\nimport * as events from '../base/constant';\nimport { Draggable, Droppable } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { parentsUntil, wrap, measureColumnDepth, appendChildren } from '../base/util';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar HeaderRender = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function HeaderRender(parent, serviceLocator) {\n var _this = this;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n this.isFirstCol = false;\n this.isReplaceDragEle = true;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.helper = function (e) {\n var gObj = _this.parent;\n var target = _this.draggable.currentStateTarget;\n var parentEle = parentsUntil(target, 'e-headercell');\n if (!(gObj.allowReordering || gObj.allowGrouping) || (!isNullOrUndefined(parentEle)\n && parentEle.getElementsByClassName('e-checkselectall').length > 0)) {\n return false;\n }\n var visualElement = _this.parent.createElement('div', { className: 'e-cloneproperties e-dragclone e-headerclone' });\n var element = target.classList.contains('e-headercell') ? target : parentEle;\n if (!element || (!gObj.allowReordering && element.classList.contains('e-stackedheadercell'))) {\n return false;\n }\n var height = element.offsetHeight;\n var headercelldiv = element.querySelector('.e-headercelldiv') || element.querySelector('.e-stackedheadercelldiv');\n var col;\n if (headercelldiv) {\n if (element.querySelector('.e-stackedheadercelldiv')) {\n col = gObj.getStackedHeaderColumnByHeaderText(headercelldiv.innerText.trim(), gObj.columns);\n }\n else {\n col = gObj.getColumnByUid(headercelldiv.getAttribute('e-mappinguid'));\n }\n _this.column = col;\n if (_this.column.lockColumn) {\n return false;\n }\n visualElement.setAttribute('e-mappinguid', _this.column.uid);\n }\n if (col && !isNullOrUndefined(col.headerTemplate)) {\n if (!isNullOrUndefined(col.headerTemplate)) {\n var colIndex = gObj.getColumnIndexByField(col.field);\n var result = col.getHeaderTemplate()(extend({ 'index': colIndex }, col), gObj, 'headerTemplate');\n appendChildren(visualElement, result);\n }\n else {\n visualElement.innerHTML = col.headerTemplate;\n }\n }\n else {\n visualElement.innerHTML = headercelldiv ?\n col.headerText : element.firstElementChild.innerHTML;\n }\n visualElement.style.width = element.offsetWidth + 'px';\n visualElement.style.height = element.offsetHeight + 'px';\n visualElement.style.lineHeight = (height - 6).toString() + 'px';\n gObj.element.appendChild(visualElement);\n return visualElement;\n };\n this.dragStart = function (e) {\n var gObj = _this.parent;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n gObj.notify(events.columnDragStart, { target: _this.draggable.currentStateTarget, column: _this.column, event: e.event });\n };\n this.drag = function (e) {\n var gObj = _this.parent;\n var target = e.target;\n if (target) {\n var closest = getClosest(target, '.e-grid');\n var cloneElement = _this.parent.element.querySelector('.e-cloneproperties');\n if (!closest || closest.getAttribute('id') !== gObj.element.getAttribute('id')) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n if (gObj.allowReordering) {\n gObj.element.querySelector('.e-reorderuparrow').style.display = 'none';\n gObj.element.querySelector('.e-reorderdownarrow').style.display = 'none';\n }\n if (!gObj.groupSettings.allowReordering) {\n return;\n }\n }\n gObj.notify(events.columnDrag, { target: e.target, column: _this.column, event: e.event });\n }\n };\n this.dragStop = function (e) {\n var gObj = _this.parent;\n var cancel;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n if ((!parentsUntil(e.target, 'e-headercell') && !parentsUntil(e.target, 'e-groupdroparea')) ||\n (!gObj.allowReordering && parentsUntil(e.target, 'e-headercell')) ||\n (!e.helper.getAttribute('e-mappinguid') && parentsUntil(e.target, 'e-groupdroparea'))) {\n remove(e.helper);\n cancel = true;\n }\n gObj.notify(events.columnDragStop, { target: e.target, event: e.event, column: _this.column, cancel: cancel });\n };\n this.drop = function (e) {\n var gObj = _this.parent;\n var uid = e.droppedElement.getAttribute('e-mappinguid');\n var closest = getClosest(e.target, '.e-grid');\n remove(e.droppedElement);\n if (closest && closest.getAttribute('id') !== gObj.element.getAttribute('id') ||\n !(gObj.allowReordering || gObj.allowGrouping)) {\n return;\n }\n gObj.notify(events.headerDrop, { target: e.target, uid: uid, droppedElement: e.droppedElement });\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.widthService = this.serviceLocator.getService('widthService');\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization\n && !this.parent.getFrozenLeftColumnsCount() && !this.parent.getFrozenRightColumnsCount()) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.columnPositionChanged, this.colPosRefresh, this);\n this.parent.on(events.initialEnd, this.renderCustomToolbar, this);\n if (this.parent.rowRenderingMode === 'Vertical') {\n this.parent.on(events.uiUpdate, this.updateCustomResponsiveToolbar, this);\n }\n }\n /**\n * The function is used to render grid header div\n *\n * @returns {void}\n */\n HeaderRender.prototype.renderPanel = function () {\n var div = this.parent.element.querySelector('.' + literals.gridHeader);\n var isRendered = (div != null);\n div = isRendered ? div : this.parent.createElement('div', { className: 'e-gridheader' });\n var innerDiv = isRendered ? div.querySelector('.' + literals.headerContent) :\n this.parent.createElement('div', { className: literals.headerContent });\n this.toggleStackClass(div);\n div.appendChild(innerDiv);\n this.setPanel(div);\n if (!isRendered) {\n this.parent.element.appendChild(div);\n }\n };\n /**\n * The function is used to render grid header div\n *\n * @returns {void}\n */\n HeaderRender.prototype.renderTable = function () {\n var headerDiv = this.getPanel();\n headerDiv.appendChild(this.createHeaderTable());\n this.setTable(headerDiv.querySelector('.' + literals.table));\n if (!this.parent.getFrozenColumns() && !this.parent.getFrozenRightColumnsCount() && !this.parent.getFrozenLeftColumnsCount()) {\n this.initializeHeaderDrag();\n this.initializeHeaderDrop();\n }\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: this.parent.isFrozenGrid() } });\n };\n /**\n * Get the header content div element of grid\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getPanel = function () {\n return this.headerPanel;\n };\n /**\n * Set the header content div element of grid\n *\n * @param {Element} panel - specifies the panel element\n * @returns {void}\n */\n HeaderRender.prototype.setPanel = function (panel) {\n this.headerPanel = panel;\n };\n /**\n * Get the header table element of grid\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getTable = function () {\n return this.headerTable;\n };\n /**\n * Set the header table element of grid\n *\n * @param {Element} table - specifies the table element\n * @returns {void}\n */\n HeaderRender.prototype.setTable = function (table) {\n this.headerTable = table;\n };\n /**\n * Get the header colgroup element\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.setColGroup = function (colGroup) {\n return this.colgroup = colGroup;\n };\n /**\n * Get the header row element collection.\n *\n * @returns {Element[]} returns the element\n */\n HeaderRender.prototype.getRows = function () {\n var table = this.getTable();\n return table.tHead.rows;\n };\n /**\n * The function is used to create header table elements\n *\n * @returns {Element} returns the element\n * @hidden\n */\n HeaderRender.prototype.createHeaderTable = function () {\n var table = this.createTable();\n var innerDiv = this.getPanel().querySelector('.' + literals.headerContent);\n innerDiv.appendChild(table);\n return innerDiv;\n };\n /**\n * The function is used to create header table elements\n *\n * @param {Element} tableEle - specifies the table Element\n * @param {freezeTable} tableName - specifies the table name\n * @returns {Element} returns the element\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderRender.prototype.createHeader = function (tableEle, tableName) {\n if (tableEle === void 0) { tableEle = null; }\n var gObj = this.parent;\n var isFrozen = gObj.isFrozenGrid();\n if (this.getTable() && !isFrozen) {\n remove(this.getTable());\n }\n var table = this.parent.createElement('table', { className: literals.table, attrs: { cellspacing: '0.25px', role: 'grid' } });\n var tblName = tableName ? tableName : gObj.getFrozenLeftCount() ? 'frozen-left' : 'frozen-right';\n var findHeaderRow = this.createHeaderContent(tblName);\n var thead = findHeaderRow.thead;\n var tbody = this.parent.createElement(literals.tbody, { className: this.parent.frozenRows ? '' : 'e-hide', attrs: { role: 'rowgroup' } });\n this.caption = this.parent.createElement('caption', { innerHTML: this.parent.element.id + '_header_table', className: 'e-hide' });\n var colGroup = this.parent.createElement(literals.colGroup);\n var rowBody = this.parent.createElement('tr');\n var bodyCell;\n var rows = this.rows = findHeaderRow.rows;\n for (var i = 0, len = rows.length; i < len; i++) {\n for (var j = 0, len_1 = rows[parseInt(i.toString(), 10)].cells.length; j < len_1; j++) {\n bodyCell = this.parent.createElement('td');\n rowBody.appendChild(bodyCell);\n }\n }\n if (gObj.allowFiltering || gObj.allowSorting || gObj.allowGrouping) {\n table.classList.add('e-sortfilter');\n }\n if (isFrozen && gObj.allowResizing) {\n var movableContent = this.parent.getContent().querySelector('.' + literals.movableContent).querySelector('.' + literals.table);\n if (tableName === 'movable' && !isNullOrUndefined(movableContent)) {\n table.style.width = movableContent.style.width;\n }\n }\n this.updateColGroup(colGroup);\n tbody.appendChild(rowBody);\n table.appendChild(this.setColGroup(colGroup));\n table.appendChild(thead);\n table.appendChild(tbody);\n table.appendChild(this.caption);\n this.ariaService.setOptions(table, { colcount: gObj.getColumns().length.toString() });\n return table;\n };\n /**\n * @param {Element} tableEle - specifies the column\n * @returns {Element} returns the element\n * @hidden\n */\n HeaderRender.prototype.createTable = function (tableEle) {\n if (tableEle === void 0) { tableEle = null; }\n return this.createHeader(tableEle);\n };\n HeaderRender.prototype.createHeaderContent = function (tableName) {\n var gObj = this.parent;\n var index = 1;\n var frozenMode = gObj.getFrozenMode();\n var columns = gObj.getColumns();\n var thead = this.parent.createElement('thead', { attrs: { 'role': 'rowgroup' } });\n var colHeader = this.parent.createElement('tr', { className: 'e-columnheader' });\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Header, gObj);\n rowRenderer.element = colHeader;\n var rows = [];\n var headerRow;\n this.colDepth = measureColumnDepth(gObj.columns);\n for (var i = 0, len = this.colDepth; i < len; i++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(i);\n rows[parseInt(i.toString(), 10)].cells = [];\n }\n if (frozenMode !== 'Right') {\n rows = this.ensureColumns(rows);\n }\n rows = this.getHeaderCells(rows, tableName);\n if (frozenMode === 'Right') {\n index = 0;\n rows = this.ensureColumns(rows);\n }\n var frzCols = this.parent.getFrozenColumns();\n if (this.parent.isRowDragable() && this.parent.isFrozenGrid() && rows[0].cells[parseInt(index.toString(), 10)]) {\n var colFreezeMode = rows[0].cells[parseInt(index.toString(), 10)].column.getFreezeTableName();\n if (tableName === 'movable' && this.getStackedLockColsCount.length) {\n for (var j = 0, len = rows.length; j < len; j++) {\n if (frozenMode === 'Right') {\n rows[parseInt(j.toString(), 10)].cells.pop();\n }\n else {\n rows[parseInt(j.toString(), 10)].cells.shift();\n }\n }\n }\n else if ((colFreezeMode === 'movable' || (frozenMode === literals.leftRight &&\n colFreezeMode === literals.frozenRight))) {\n if (frozenMode === 'Right') {\n rows[0].cells.pop();\n }\n else {\n rows[0].cells.shift();\n }\n }\n else if (!frzCols && colFreezeMode === literals.frozenLeft) {\n rows[0].cells[0].column.freeze = colFreezeMode === literals.frozenLeft ? 'Left' : 'Right';\n }\n else if (frozenMode === 'Right' && colFreezeMode === literals.frozenRight) {\n rows[0].cells[rows[0].cells.length - 1].column.freeze = 'Right';\n }\n }\n for (var i = 0, len = this.colDepth; i < len; i++) {\n headerRow = rowRenderer.render(rows[parseInt(i.toString(), 10)], columns);\n if (this.parent.rowHeight && headerRow.querySelector('.e-headercell')) {\n headerRow.style.height = this.parent.rowHeight + 'px';\n }\n thead.appendChild(headerRow);\n }\n var findHeaderRow = {\n thead: thead,\n rows: rows\n };\n return findHeaderRow;\n };\n HeaderRender.prototype.updateColGroup = function (colGroup) {\n var cols = this.parent.getColumns();\n var col;\n var indexes = this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization && this.parent.getFrozenColumns()\n && this.parent.contentModule.isXaxis()) {\n cols = extend([], this.parent.getColumns());\n cols.splice(0, this.parent.getFrozenColumns());\n }\n colGroup.id = this.parent.element.id + literals.colGroup;\n if (this.parent.allowGrouping) {\n for (var i = 0, len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n continue;\n }\n col = this.parent.createElement('col', { className: 'e-group-intent' });\n colGroup.appendChild(col);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n col = this.parent.createElement('col', { className: 'e-detail-intent' });\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n col = this.parent.createElement('col');\n if (cols[parseInt(i.toString(), 10)].visible === false) {\n setStyleAttribute(col, { 'display': 'none' });\n }\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n return colGroup;\n };\n HeaderRender.prototype.ensureColumns = function (rows) {\n //TODO: generate dummy column for group, detail, stacked row here; ensureColumns here\n var gObj = this.parent;\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = rows.length; i < len; i++) {\n if (gObj.allowGrouping) {\n for (var c = 0, len_2 = gObj.groupSettings.columns.length; c < len_2; c++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(c) === -1) {\n continue;\n }\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.HeaderIndent));\n }\n }\n if (gObj.detailTemplate || gObj.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell(args, CellType.DetailHeader));\n }\n if (gObj.isRowDragable()) {\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n }\n return rows;\n };\n HeaderRender.prototype.getHeaderCells = function (rows, tableName) {\n var thead = this.parent.getHeaderTable() && this.parent.getHeaderTable().querySelector('thead');\n var cols = this.parent.enableColumnVirtualization ?\n this.parent.getColumns(this.parent.enablePersistence) : this.parent.columns;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n if (this.parent.lockcolPositionCount) {\n for (var i = 0; i < cols.length; i++) {\n this.lockColsRendered = false;\n rows = this.appendCells(cols[parseInt(i.toString(), 10)], rows, 0, i === 0, false, i === (cols.length - 1), thead, tableName, false);\n }\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n this.notfrzIdx = 0;\n this.lockColsRendered = true;\n rows = this.appendCells(cols[parseInt(i.toString(), 10)], rows, 0, i === 0, false, i === (len - 1), thead, tableName, false);\n }\n return rows;\n };\n HeaderRender.prototype.appendCells = function (cols, rows, index, isFirstObj, isFirstCol, isLastCol, isMovable, tableName, isStackLastCol) {\n var lastCol = isLastCol ? isStackLastCol ? 'e-laststackcell' : 'e-lastcell' : '';\n var isFrozen = this.parent.isFrozenGrid();\n var isLockColumn = !this.parent.lockcolPositionCount\n || (cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered);\n var isFrozenLockColumn = !this.parent.lockcolPositionCount || (cols.lockColumn && !this.lockColsRendered)\n || (!cols.lockColumn && this.lockColsRendered);\n var scrollbar = this.parent.getContent().querySelector('.e-movablescrollbar');\n var left;\n if (isFrozen && scrollbar && this.parent.enableColumnVirtualization) {\n left = scrollbar.scrollLeft;\n }\n if (!cols.columns) {\n if (left && left > 0 && this.parent.contentModule.isXaxis()\n && this.parent.inViewIndexes[0] !== 0 && cols.getFreezeTableName() === 'movable') {\n rows[parseInt(index.toString(), 10)].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\n else {\n if ((!isFrozen && isLockColumn) || (isFrozen && cols.getFreezeTableName() === tableName && isFrozenLockColumn)) {\n rows[parseInt(index.toString(), 10)].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\n }\n if (this.parent.lockcolPositionCount) {\n if ((this.frzIdx + this.notfrzIdx < this.parent.frozenColumns) &&\n ((cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered))) {\n this.frzIdx++;\n }\n else {\n this.notfrzIdx++;\n }\n }\n else {\n this.frzIdx++;\n }\n }\n else {\n this.isFirstCol = false;\n var colSpan = this.getCellCnt(cols, 0);\n if (colSpan) {\n var stackedLockColsCount = this.getStackedLockColsCount(cols, 0);\n var isStackedLockColumn = this.parent.lockcolPositionCount === 0\n || (!this.lockColsRendered && stackedLockColsCount !== 0)\n || (this.lockColsRendered && (colSpan - stackedLockColsCount) !== 0);\n var isFrozenStack = isFrozen && this.ensureStackedFrozen(cols.columns, tableName, false);\n if ((!isFrozen && isStackedLockColumn) || isFrozenStack) {\n rows[parseInt(index.toString(), 10)].cells.push(new Cell({\n cellType: CellType.StackedHeader, column: cols,\n colSpan: this.getColSpan(colSpan, stackedLockColsCount, cols.columns, tableName, isFrozen),\n className: isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')\n }));\n }\n }\n if (this.parent.lockcolPositionCount && !this.lockColsRendered) {\n for (var i = 0; i < cols.columns.length; i++) {\n rows = this.appendCells(cols.columns[parseInt(i.toString(), 10)], rows, index + 1, isFirstObj, i === 0, i === (cols.columns.length - 1) && isLastCol, isMovable, tableName, false);\n }\n }\n if (this.lockColsRendered) {\n for (var i = 0, len = cols.columns.length; i < len; i++) {\n isFirstObj = isFirstObj && i === 0;\n var isFirstCol_1 = this.isFirstCol = cols.columns[parseInt(i.toString(), 10)].visible\n && !isFirstObj;\n var isLaststackedCol = i === (len - 1) && isLastCol;\n rows = this.appendCells(cols.columns[parseInt(i.toString(), 10)], rows, index + 1, isFirstObj, isFirstCol_1 && !isLaststackedCol, isLaststackedCol, isMovable, tableName, true);\n }\n }\n }\n return rows;\n };\n HeaderRender.prototype.ensureStackedFrozen = function (columns, tableName, isTrue) {\n var length = columns.length;\n for (var i = 0; i < length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n isTrue = this.ensureStackedFrozen(columns[parseInt(i.toString(), 10)].columns, tableName, isTrue);\n }\n else if (columns[parseInt(i.toString(), 10)].getFreezeTableName() === tableName) {\n isTrue = true;\n break;\n }\n }\n return isTrue;\n };\n HeaderRender.prototype.getStackedLockColsCount = function (col, lockColsCount) {\n if (col.columns) {\n for (var i = 0; i < col.columns.length; i++) {\n lockColsCount = this.getStackedLockColsCount(col.columns[parseInt(i.toString(), 10)], lockColsCount);\n }\n }\n else if (col.lockColumn) {\n lockColsCount++;\n }\n return lockColsCount;\n };\n HeaderRender.prototype.getColSpan = function (colSpan, stackedLockColsCount, columns, tableName, isFrozen) {\n if (isFrozen) {\n colSpan = this.getFrozenColSpan(columns, tableName, 0);\n }\n else if (this.parent.lockcolPositionCount) {\n colSpan = !this.lockColsRendered ? stackedLockColsCount : colSpan - stackedLockColsCount;\n }\n return colSpan;\n };\n HeaderRender.prototype.getFrozenColSpan = function (columns, tableName, count) {\n var length = columns.length;\n for (var i = 0; i < length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n count = this.getFrozenColSpan(columns[parseInt(i.toString(), 10)].columns, tableName, count);\n }\n else if (columns[parseInt(i.toString(), 10)].getFreezeTableName() === tableName\n && columns[parseInt(i.toString(), 10)].visible) {\n count++;\n }\n }\n return count;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderRender.prototype.generateRow = function (index) {\n return new Row({});\n };\n HeaderRender.prototype.generateCell = function (column, cellType, rowSpan, className, rowIndex, colIndex) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': false,\n 'isTemplate': !isNullOrUndefined(column.headerTemplate),\n 'rowID': '',\n 'column': column,\n 'cellType': cellType,\n 'rowSpan': rowSpan,\n 'className': className,\n 'index': rowIndex,\n 'colIndex': colIndex\n };\n if (!opt.rowSpan || opt.rowSpan < 2) {\n delete opt.rowSpan;\n }\n return new Cell(opt);\n };\n /**\n * Function to hide header table column based on visible property\n *\n * @param {Column[]} columns - specifies the column\n * @returns {void}\n */\n HeaderRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var displayVal;\n var idx;\n var frzCols = gObj.getFrozenColumns();\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n idx = gObj.getNormalizedColumnIndex(column.uid);\n displayVal = column.visible ? '' : 'none';\n if (frzCols) {\n var normalizedfrzCols = this.parent.isRowDragable() ? frzCols + 1 : frzCols;\n if (idx < normalizedfrzCols) {\n setStyleAttribute(this.getColGroup().children[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n else {\n var mTblColGrp = gObj.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.colGroup);\n setStyleAttribute(mTblColGrp.children[idx - normalizedfrzCols], { 'display': displayVal });\n }\n }\n else {\n setStyleAttribute(this.getColGroup().children[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n }\n this.refreshUI();\n };\n HeaderRender.prototype.colPosRefresh = function () {\n this.refreshUI();\n };\n /**\n * Refresh the header of the Grid.\n *\n * @returns {void}\n */\n HeaderRender.prototype.refreshUI = function () {\n var frzCols = this.parent.isFrozenGrid();\n var isVFTable = this.parent.enableColumnVirtualization && frzCols;\n var headerDiv = this.getPanel();\n this.toggleStackClass(headerDiv);\n var table = this.freezeReorder ? this.headerPanel.querySelector('.' + literals.movableHeader).querySelector('.' + literals.table)\n : this.getTable();\n var tableName = this.parent.isFrozenGrid() ? this.parent.getFrozenLeftCount() ? 'frozen-left'\n : 'frozen-right' : undefined;\n if (isVFTable) {\n table = this.parent.contentModule.getVirtualFreezeHeader();\n tableName = this.parent.contentModule.isXaxis() ? 'movable' : tableName;\n }\n if (table) {\n remove(table);\n table.removeChild(table.firstChild);\n table.removeChild(table.childNodes[0]);\n var colGroup = this.parent.createElement(literals.colGroup);\n var findHeaderRow = this.createHeaderContent(tableName);\n this.rows = findHeaderRow.rows;\n table.insertBefore(findHeaderRow.thead, table.firstChild);\n this.updateColGroup(colGroup);\n table.insertBefore(this.setColGroup(colGroup), table.firstChild);\n if (!isVFTable) {\n this.setTable(table);\n }\n this.appendContent(table);\n this.parent.notify(events.colGroupRefresh, {});\n this.widthService.setWidthToColumns();\n this.parent.updateDefaultCursor();\n if (!frzCols || (this.parent.enableColumnVirtualization && frzCols)) {\n this.initializeHeaderDrag();\n }\n var rows = [].slice.call(headerDiv.querySelectorAll('tr.e-columnheader'));\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n var gCells = [].slice.call(row.getElementsByClassName('e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n }\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: frzCols } });\n if (this.parent.enableColumnVirtualization && parentsUntil(table, literals.movableHeader)) {\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: false, isXaxis: true } });\n }\n if (this.parent.allowTextWrap && this.parent.textWrapSettings.wrapMode === 'Header') {\n wrap(rows, true);\n }\n }\n };\n HeaderRender.prototype.toggleStackClass = function (div) {\n var column = this.parent.columns;\n var stackedHdr = column.some(function (column) { return !isNullOrUndefined(column.columns); });\n if (stackedHdr) {\n div.classList.add('e-stackedheader');\n }\n else {\n div.classList.remove('e-stackedheader');\n }\n };\n HeaderRender.prototype.appendContent = function (table) {\n this.getPanel().querySelector('.' + literals.headerContent).appendChild(table);\n };\n HeaderRender.prototype.getCellCnt = function (col, cnt) {\n if (col.columns) {\n for (var i = 0, len = col.columns.length; i < len; i++) {\n cnt = this.getCellCnt(col.columns[parseInt(i.toString(), 10)], cnt);\n }\n }\n else {\n if (col.visible) {\n cnt++;\n }\n }\n return cnt;\n };\n HeaderRender.prototype.initializeHeaderDrag = function () {\n var gObj = this.parent;\n if (!(this.parent.allowReordering || (this.parent.allowGrouping && this.parent.groupSettings.showDropArea))) {\n return;\n }\n this.draggable = new Draggable(gObj.getHeaderContent(), {\n dragTarget: '.e-headercell',\n distance: 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop,\n abort: '.e-rhandler',\n isReplaceDragEle: this.isReplaceDragEle\n });\n this.parent.on(events.destroy, this.droppableDestroy, this);\n };\n HeaderRender.prototype.initializeHeaderDrop = function () {\n var gObj = this.parent;\n this.droppable = new Droppable(gObj.getHeaderContent(), {\n accept: '.e-dragclone',\n drop: this.drop\n });\n this.parent.on(events.destroy, this.droppableDestroy, this);\n };\n HeaderRender.prototype.droppableDestroy = function () {\n if (this.droppable && !this.droppable.isDestroyed) {\n this.droppable.destroy();\n }\n if (this.draggable && !this.draggable.isDestroyed) {\n this.draggable.destroy();\n }\n };\n HeaderRender.prototype.renderCustomToolbar = function () {\n var _this = this;\n var gObj = this.parent;\n if (gObj.rowRenderingMode === 'Vertical' && !gObj.toolbar\n && (gObj.allowSorting || (gObj.allowFiltering && gObj.filterSettings.type !== 'FilterBar'))) {\n var div = gObj.createElement('div', { className: 'e-res-toolbar e-toolbar' });\n var toolbarItems = gObj.createElement('div', { className: 'e-toolbar-items' });\n var toolbarLeft = gObj.createElement('div', { className: 'e-toolbar-left' });\n var count = this.parent.allowFiltering && this.parent.allowSorting ? 2 : 1;\n for (var i = 0; i < count; i++) {\n var toolbarItem = gObj.createElement('div', { className: 'e-toolbar-item e-gridresponsiveicons e-icons e-tbtn-align' });\n var cls = count === 1 ? this.parent.allowSorting ? 'sort'\n : 'filter' : i === 1 ? 'sort' : 'filter';\n var button = gObj.createElement('button', { className: 'e-tbar-btn e-control e-btn e-lib e-icon-btn' });\n var span = gObj.createElement('span', { className: 'e-btn-icon e-res' + cls + '-icon e-icons' });\n button.appendChild(span);\n var btnObj = new Button({\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n btnObj.appendTo(button);\n button.onclick = function (e) {\n if (e.target.classList.contains('e-ressort-btn')\n || e.target.classList.contains('e-ressort-icon')) {\n _this.parent.showResponsiveCustomSort();\n }\n else {\n _this.parent.showResponsiveCustomFilter();\n }\n };\n toolbarItem.appendChild(button);\n toolbarLeft.appendChild(toolbarItem);\n }\n toolbarItems.appendChild(toolbarLeft);\n div.appendChild(toolbarItems);\n gObj.element.insertBefore(div, this.parent.element.querySelector('.' + literals.gridHeader));\n }\n else {\n if (gObj.enableAdaptiveUI && !gObj.toolbar) {\n gObj.getContent().classList.add('e-responsive-header');\n }\n }\n };\n HeaderRender.prototype.updateCustomResponsiveToolbar = function (args) {\n var resToolbar = this.parent.element.querySelector('.e-responsive-toolbar');\n if (args.module === 'toolbar') {\n if (resToolbar) {\n remove(resToolbar);\n }\n else {\n this.renderCustomToolbar();\n }\n }\n };\n return HeaderRender;\n}());\nexport { HeaderRender };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, extend, addClass } from '@syncfusion/ej2-base';\nimport { attributes } from '@syncfusion/ej2-base';\nimport { setStyleAndAttributes, appendChildren } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\nimport { AriaService } from '../services/aria-service';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { headerCellInfo } from '../base/constant';\n/**\n * HeaderCellRenderer class which responsible for building header cell content.\n *\n * @hidden\n */\nvar HeaderCellRenderer = /** @class */ (function (_super) {\n __extends(HeaderCellRenderer, _super);\n function HeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent\n .createElement('TH', { className: 'e-headercell', attrs: { tabindex: '-1' } });\n _this.ariaService = new AriaService();\n _this.hTxtEle = _this.parent.createElement('span', { className: 'e-headertext' });\n _this.sortEle = _this.parent.createElement('div', { className: 'e-sortfilterdiv e-icons', attrs: { 'aria-hidden': 'true' } });\n _this.gui = _this.parent.createElement('div');\n _this.chkAllBox = _this.parent.createElement('input', { className: 'e-checkselectall', attrs: { 'type': 'checkbox', 'aria-label': _this.localizer.getConstant('CheckBoxLabel') } });\n return _this;\n }\n /**\n * Function to return the wrapper for the TH content.\n *\n * @returns {string | Element} returns the element\n */\n HeaderCellRenderer.prototype.getGui = function () {\n return this.gui.cloneNode();\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the column\n * @param {Object} data - specifies the data\n * @param {object} attributes - specifies the aattributes\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter', attrs: { 'aria-hidden': 'true' } });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n /**\n * Function to refresh the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Element} node - specifies the noe\n * @returns {Element} returns the element\n */\n HeaderCellRenderer.prototype.refresh = function (cell, node) {\n this.clean(node);\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter', attrs: { 'aria-hidden': 'true' } });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n HeaderCellRenderer.prototype.clean = function (node) {\n node.innerHTML = '';\n };\n /* tslint:disable-next-line:max-func-body-length */\n HeaderCellRenderer.prototype.prepareHeader = function (cell, node, fltrMenuEle) {\n var column = cell.column;\n var ariaAttr = {};\n var elementDesc = '';\n //Prepare innerHtml\n var innerDIV = this.getGui();\n var hValueAccer;\n attributes(innerDIV, {\n 'e-mappinguid': column.uid,\n 'class': 'e-headercelldiv'\n });\n if (!isNullOrUndefined(column.headerValueAccessor)) {\n hValueAccer = this.getValue(column.headerText, column);\n }\n if (column.type !== 'checkbox') {\n var value = column.headerText;\n if (!isNullOrUndefined(hValueAccer)) {\n value = hValueAccer;\n }\n var headerText = this.hTxtEle.cloneNode();\n headerText[column.getDomSetter()] = this.parent.sanitize(value);\n innerDIV.appendChild(headerText);\n }\n else {\n column.editType = 'booleanedit';\n var checkAllWrap = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.chkAllBox.id = 'checkbox-' + column.uid;\n checkAllWrap.insertBefore(this.chkAllBox.cloneNode(), checkAllWrap.firstChild);\n if (this.parent.cssClass) {\n addClass([checkAllWrap], [this.parent.cssClass]);\n }\n innerDIV.appendChild(checkAllWrap);\n innerDIV.classList.add('e-headerchkcelldiv');\n }\n this.buildAttributeFromCell(node, cell);\n this.appendHtml(node, innerDIV);\n node.appendChild(this.sortEle.cloneNode());\n if ((this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') &&\n (column.allowFiltering && !isNullOrUndefined(column.field)) &&\n !(this.parent.showColumnMenu && column.showColumnMenu)) {\n attributes(fltrMenuEle, {\n 'e-mappinguid': 'e-flmenu-' + column.uid\n });\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('FilterDescription') : this.localizer.getConstant('FilterDescription');\n node.classList.add('e-fltr-icon');\n var matchFlColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFlColumns.length) {\n var foreignColumn = this.parent.getForeignKeyColumns();\n for (var index = 0; index < this.parent.columns.length; index++) {\n for (var count = 0; count < this.parent.filterSettings.columns.length; count++) {\n if (this.parent.filterSettings.columns[parseInt(count.toString(), 10)].field === column.field\n || (foreignColumn.length\n && column.foreignKeyValue === this.parent.filterSettings.columns[parseInt(count.toString(), 10)].field)) {\n fltrMenuEle.classList.add('e-filtered');\n matchFlColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.appendChild(fltrMenuEle.cloneNode());\n }\n if (cell.className) {\n node.classList.add(cell.className);\n }\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (this.parent.allowSorting && column.allowSorting) {\n ariaAttr.sort = 'none';\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('SortDescription') : this.localizer.getConstant('SortDescription');\n }\n if ((this.parent.allowGrouping && column.allowGrouping) || this.parent.allowReordering && column.allowReordering) {\n ariaAttr.grabbed = false;\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('GroupDescription') : this.localizer.getConstant('GroupDescription');\n }\n if (this.parent.showColumnMenu) {\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('ColumnMenuDescription') : this.localizer.getConstant('ColumnMenuDescription');\n }\n node = this.extendPrepareHeader(column, node);\n var result;\n var gridObj = this.parent;\n var colIndex = gridObj.getColumnIndexByField(column.field);\n if (!isNullOrUndefined(column.headerTemplate)) {\n //need to pass the template id for blazor headertemplate\n var headerTempID = gridObj.element.id + column.uid + 'headerTemplate';\n var str = 'isStringTemplate';\n var col = column;\n var isReactCompiler = this.parent.isReact && typeof (column.headerTemplate) !== 'string';\n var isReactChild_1 = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild_1) {\n var copied = { 'index': colIndex };\n node.firstElementChild.innerHTML = '';\n column.getHeaderTemplate()(extend(copied, col), gridObj, 'headerTemplate', headerTempID, this.parent[\"\" + str], null, node.firstElementChild);\n this.parent.renderTemplates();\n }\n else {\n result = column.getHeaderTemplate()(extend({ 'index': colIndex }, col), gridObj, 'headerTemplate', headerTempID, this.parent[\"\" + str], undefined, undefined, this.parent['root']);\n node.firstElementChild.innerHTML = '';\n appendChildren(node.firstElementChild, result);\n }\n }\n this.ariaService.setOptions(node, ariaAttr);\n if (!isNullOrUndefined(column.headerTextAlign) || !isNullOrUndefined(column.textAlign)) {\n var alignment = column.headerTextAlign || column.textAlign;\n innerDIV.style.textAlign = alignment;\n if (alignment === 'Right' || alignment === 'Left') {\n node.classList.add(alignment === 'Right' ? 'e-rightalign' : 'e-leftalign');\n }\n else if (alignment === 'Center') {\n node.classList.add('e-centeralign');\n }\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if ((column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip'))\n && !(gridObj.allowTextWrap && (gridObj.textWrapSettings.wrapMode === 'Header'\n || gridObj.textWrapSettings.wrapMode === 'Both'))) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n if (elementDesc) {\n node.setAttribute('aria-description', elementDesc);\n }\n node.setAttribute('aria-rowspan', (!isNullOrUndefined(cell.rowSpan) ? cell.rowSpan : 1).toString());\n node.setAttribute('aria-colspan', '1');\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (((this.parent.isReact && this.parent.requireTemplateRef)\n || (isReactChild && this.parent.parentDetails.parentInstObj.requireTemplateRef))\n && !isNullOrUndefined(column.headerTemplate)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = this;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(headerCellInfo, { cell: cell, node: node });\n });\n }\n else {\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n }\n return node;\n };\n HeaderCellRenderer.prototype.getValue = function (field, column) {\n return column.headerValueAccessor(field, column);\n };\n HeaderCellRenderer.prototype.extendPrepareHeader = function (column, node) {\n if (this.parent.showColumnMenu && column.showColumnMenu && !isNullOrUndefined(column.field)) {\n var element = (this.parent.createElement('div', { className: 'e-icons e-columnmenu', attrs: { 'aria-hidden': 'true' } }));\n var matchFilteredColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFilteredColumns.length) {\n for (var i = 0; i < this.parent.columns.length; i++) {\n for (var j = 0; j < this.parent.filterSettings.columns.length; j++) {\n if (this.parent.filterSettings.columns[parseInt(j.toString(), 10)].field === column.field) {\n element.classList.add('e-filtered');\n matchFilteredColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.classList.add('e-fltr-icon');\n node.appendChild(element);\n }\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHtml\n * @returns {Element} returns the element\n */\n HeaderCellRenderer.prototype.appendHtml = function (node, innerHtml) {\n node.appendChild(innerHtml);\n return node;\n };\n return HeaderCellRenderer;\n}(CellRenderer));\nexport { HeaderCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { headerCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, appendChildren } from '../base/util';\n/**\n * StackedHeaderCellRenderer class which responsible for building stacked header cell content.\n *\n * @hidden\n */\nvar StackedHeaderCellRenderer = /** @class */ (function (_super) {\n __extends(StackedHeaderCellRenderer, _super);\n function StackedHeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', {\n className: 'e-headercell e-stackedheadercell', attrs: {\n tabindex: '-1'\n }\n });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {object} attributes - specifies the attributes\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n StackedHeaderCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var div = this.parent.createElement('div', {\n className: 'e-stackedheadercelldiv',\n attrs: { 'e-mappinguid': cell.column.uid }\n });\n var column = cell.column;\n node.appendChild(div);\n if (!isNullOrUndefined(column.headerTemplate)) {\n appendChildren(div, column.getHeaderTemplate()(column, this.parent, 'headerTemplate'));\n }\n else {\n this.appendHtml(div, this.parent.sanitize(column.headerText), column.getDomSetter());\n }\n if (cell.column.toolTip) {\n node.setAttribute('title', cell.column.toolTip);\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')) {\n node.classList.add('e-ellipsistooltip');\n }\n if (!isNullOrUndefined(cell.column.textAlign)) {\n div.style.textAlign = cell.column.textAlign;\n }\n if (cell.column.customAttributes) {\n setStyleAndAttributes(node, cell.column.customAttributes);\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-colspan', cell.colSpan.toString());\n node.setAttribute('aria-rowspan', '1');\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = cell.column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n if (cell.className) {\n node.classList.add(cell.className);\n }\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n return node;\n };\n return StackedHeaderCellRenderer;\n}(CellRenderer));\nexport { StackedHeaderCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { setStyleAndAttributes } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\n/**\n * IndentCellRenderer class which responsible for building group indent cell.\n *\n * @hidden\n */\nvar IndentCellRenderer = /** @class */ (function (_super) {\n __extends(IndentCellRenderer, _super);\n function IndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-indentcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n IndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n setStyleAndAttributes(node, cell.attributes);\n return node;\n };\n return IndentCellRenderer;\n}(CellRenderer));\nexport { IndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { appendChildren, templateCompiler } from '../base/util';\n/**\n * GroupCaptionCellRenderer class which responsible for building group caption cell.\n *\n * @hidden\n */\nvar GroupCaptionCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCaptionCellRenderer, _super);\n function GroupCaptionCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cellUid = 0;\n _this.element = _this.parent\n .createElement('TD', { className: 'e-groupcaption',\n attrs: { id: _this.parent.element.id + 'captioncell', tabindex: '-1' } });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the GroupedData\n * @returns {Element} returns the element\n */\n GroupCaptionCellRenderer.prototype.render = function (cell, data) {\n this.element.id = this.parent.element.id + 'captioncell' + this.cellUid++;\n var node = this.element.cloneNode();\n var gObj = this.parent;\n var column = cell.column;\n var domSetter = column.getDomSetter ? column.getDomSetter() : 'innerHTML';\n var result;\n var fKeyValue;\n var gTemplateValue;\n data.headerText = cell.column.headerText;\n if (cell.isForeignKey) {\n fKeyValue = this.format(cell.column, cell.column.valueAccessor('foreignKey', data, cell.column));\n }\n var value = cell.isForeignKey ? fKeyValue : cell.column.enableGroupByFormat ? data.key :\n this.format(cell.column, cell.column.valueAccessor('key', data, cell.column));\n for (var j = 0; j < gObj.aggregates.length; j++) {\n for (var i = 0; i < gObj.aggregates[parseInt(j.toString(), 10)].columns.length; i++) {\n if (gObj.getVisibleColumns()[0].field === gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .field && gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].groupCaptionTemplate) {\n if (gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].groupCaptionTemplate.includes('$')) {\n gTemplateValue = gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .groupCaptionTemplate.split('$')[0] + data[gObj.getVisibleColumns()[0].field][gObj\n .aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].type] +\n gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].groupCaptionTemplate.split('}')[1];\n }\n else {\n gTemplateValue = gObj.aggregates[parseInt(j.toString(), 10)]\n .columns[parseInt(i.toString(), 10)].groupCaptionTemplate;\n }\n break;\n }\n }\n }\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n var isReactCompiler = this.parent.isReact && typeof (gObj.groupSettings.captionTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n var tempID = gObj.element.id + 'captionTemplate';\n templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent, 'captionTemplate', tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else if (this.parent.isVue) {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent);\n }\n else {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data);\n }\n if (!isReactCompiler && !isReactChild) {\n appendChildren(node, result);\n }\n }\n else {\n if (gObj.groupSettings.enableLazyLoading) {\n node[\"\" + domSetter] = this.parent.sanitize(cell.column.headerText) + ': ' + this.parent.sanitize(value) +\n (gTemplateValue ? ' ' + gTemplateValue : '');\n }\n else {\n node[\"\" + domSetter] = this.parent.sanitize(cell.column.headerText) + ': ' + this.parent.sanitize(value) +\n ' - ' + data.count + ' ' + (data.count < 2 ? this.localizer.getConstant('Item') : this.localizer.getConstant('Items'))\n + (gTemplateValue ? ' ' + gTemplateValue : '');\n }\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-label', node.innerHTML + this.localizer.getConstant('GroupCaption'));\n node.setAttribute('title', node.textContent);\n return node;\n };\n return GroupCaptionCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionCellRenderer };\n/**\n * GroupCaptionEmptyCellRenderer class which responsible for building group caption empty cell.\n *\n * @hidden\n */\nvar GroupCaptionEmptyCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCaptionEmptyCellRenderer, _super);\n function GroupCaptionEmptyCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-groupcaption' });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the Object\n * @param {string} data.field - Defines the field\n * @param {string} data.key - Defines the key\n * @param {number} data.count - Defines the count\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n GroupCaptionEmptyCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.innerHTML = ' ';\n node.setAttribute('colspan', cell.colSpan.toString());\n return node;\n };\n return GroupCaptionEmptyCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionEmptyCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { IndentCellRenderer } from './indent-cell-renderer';\nimport { CellType } from '../base/enum';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar ExpandCellRenderer = /** @class */ (function (_super) {\n __extends(ExpandCellRenderer, _super);\n function ExpandCellRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Function to render the expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {string} data.field - Defines the field\n * @param {string} data.key - Defines the key\n * @param {Object} attr - specifies the attribute\n * @param {boolean} isExpand - specifies isexpand\n * @returns {Element} returns the element\n */\n ExpandCellRenderer.prototype.render = function (cell, data, attr, isExpand) {\n var node = this.element.cloneNode();\n node.setAttribute('ej-mappingname', data.field);\n node.setAttribute('ej-mappingvalue', data.key);\n node.setAttribute('aria-expanded', isExpand ? 'true' : 'false');\n node.setAttribute('tabindex', '-1');\n if (this.parent.infiniteScrollSettings && this.parent.infiniteScrollSettings.enableCache) {\n cell.cellType = CellType.Indent;\n node.className = isExpand ? 'e-recordplusexpand e-disablepointer' : 'e-recordpluscollapse e-disablepointer';\n }\n else {\n node.className = isExpand ? 'e-recordplusexpand' : 'e-recordpluscollapse';\n node.appendChild(this.parent.createElement('a', {\n className: isExpand ? 'e-icons e-gdiagonaldown e-icon-gdownarrow' : 'e-icons e-gnextforward e-icon-grightarrow',\n attrs: { href: '#', 'title': isExpand ? 'expanded' : 'collapsed' }\n }));\n }\n return node;\n };\n return ExpandCellRenderer;\n}(IndentCellRenderer));\nexport { ExpandCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * HeaderIndentCellRenderer class which responsible for building header indent cell.\n *\n * @hidden\n */\nvar HeaderIndentCellRenderer = /** @class */ (function (_super) {\n __extends(HeaderIndentCellRenderer, _super);\n function HeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-grouptopleftcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-headercelldiv e-emptycell', innerHTML: '' }));\n return node;\n };\n return HeaderIndentCellRenderer;\n}(CellRenderer));\nexport { HeaderIndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n *\n * @hidden\n */\nvar DetailHeaderIndentCellRenderer = /** @class */ (function (_super) {\n __extends(DetailHeaderIndentCellRenderer, _super);\n function DetailHeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-detailheadercell' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DetailHeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-emptycell' }));\n return node;\n };\n return DetailHeaderIndentCellRenderer;\n}(CellRenderer));\nexport { DetailHeaderIndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar DetailExpandCellRenderer = /** @class */ (function (_super) {\n __extends(DetailExpandCellRenderer, _super);\n function DetailExpandCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-detailrowcollapse',\n attrs: { 'aria-expanded': 'false', tabindex: '-1' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @returns {Element} returns the element\n */\n DetailExpandCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n if (attributes && !isNullOrUndefined(attributes['class'])) {\n node.className = '';\n node.className = attributes['class'];\n node.appendChild(this.parent.createElement('a', { className: 'e-icons e-dtdiagonaldown e-icon-gdownarrow', attrs: {\n href: '#', 'title': this.localizer.getConstant('Expanded')\n } }));\n }\n else {\n node.appendChild(this.parent.createElement('a', { className: 'e-icons e-dtdiagonalright e-icon-grightarrow', attrs: {\n href: '#', 'title': this.localizer.getConstant('Collapsed')\n } }));\n }\n return node;\n };\n return DetailExpandCellRenderer;\n}(CellRenderer));\nexport { DetailExpandCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar RowDragDropRenderer = /** @class */ (function (_super) {\n __extends(RowDragDropRenderer, _super);\n function RowDragDropRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-rowdragdrop e-rowdragdropcell',\n attrs: { tabindex: '-1' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RowDragDropRenderer.prototype.render = function (cell, data) {\n var nodeElement = this.element.cloneNode();\n nodeElement.appendChild(this.parent.createElement('div', {\n className: 'e-icons e-rowcelldrag e-dtdiagonalright e-icon-rowdragicon',\n attrs: { 'aria-hidden': 'true' }\n }));\n if (cell.isSelected) {\n nodeElement.classList.add('e-selectionbackground');\n nodeElement.classList.add('e-active');\n }\n return nodeElement;\n };\n return RowDragDropRenderer;\n}(CellRenderer));\nexport { RowDragDropRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { createElement } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n *\n * @hidden\n */\nvar RowDragDropHeaderRenderer = /** @class */ (function (_super) {\n __extends(RowDragDropHeaderRenderer, _super);\n function RowDragDropHeaderRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-rowdragheader' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RowDragDropHeaderRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(createElement('div', { className: 'e-emptycell' }));\n return node;\n };\n return RowDragDropHeaderRenderer;\n}(CellRenderer));\nexport { RowDragDropHeaderRenderer };\n","import { remove, resetBlazorTemplate, blazorTemplates, getValue } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Deferred, Predicate, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { RenderType, CellType } from '../base/enum';\nimport { Data } from '../actions/data';\nimport { Column } from '../models/column';\nimport { Row } from '../models/row';\nimport { Cell } from '../models/cell';\nimport * as events from '../base/constant';\nimport { prepareColumns, setFormatter, isGroupAdaptive, getDatePredicate, getObject, clearReactVueTemplates } from '../base/util';\nimport { ContentRender } from '../renderer/content-renderer';\nimport { HeaderRender } from '../renderer/header-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { HeaderCellRenderer } from '../renderer/header-cell-renderer';\nimport { StackedHeaderCellRenderer } from '../renderer/stacked-cell-renderer';\nimport { IndentCellRenderer } from '../renderer/indent-cell-renderer';\nimport { GroupCaptionCellRenderer, GroupCaptionEmptyCellRenderer } from '../renderer/caption-cell-renderer';\nimport { ExpandCellRenderer } from '../renderer/expand-cell-renderer';\nimport { HeaderIndentCellRenderer } from '../renderer/header-indent-renderer';\nimport { DetailHeaderIndentCellRenderer } from '../renderer/detail-header-indent-renderer';\nimport { DetailExpandCellRenderer } from '../renderer/detail-expand-cell-renderer';\nimport { RowDragDropRenderer } from './row-drag-drop-renderer';\nimport { RowDragDropHeaderRenderer } from '../renderer/row-drag-header-indent-render';\nimport * as literals from '../base/string-literals';\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar Render = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} locator - specifies the serviceLocator\n */\n function Render(parent, locator) {\n this.emptyGrid = false;\n this.counter = 0;\n this.parent = parent;\n this.locator = locator;\n this.data = new Data(parent, locator);\n this.l10n = locator.getService('localization');\n this.ariaService = this.locator.getService('ariaService');\n this.renderer = this.locator.getService('rendererFactory');\n this.addEventListener();\n }\n /**\n * To initialize grid header, content and footer rendering\n *\n * @returns {void}\n */\n Render.prototype.render = function () {\n var gObj = this.parent;\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer.renderPanel();\n this.contentRenderer.renderPanel();\n if (gObj.getColumns().length) {\n this.isLayoutRendered = true;\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.emptyRow(false);\n }\n this.parent.scrollModule.setWidth();\n this.parent.scrollModule.setHeight();\n if (this.parent.height !== 'auto') {\n this.parent.scrollModule.setPadding();\n }\n this.refreshDataManager();\n };\n /**\n * Refresh the entire Grid.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n */\n Render.prototype.refresh = function (e) {\n var _this = this;\n if (e === void 0) { e = { requestType: 'refresh' }; }\n var gObj = this.parent;\n gObj.notify(e.requestType + \"-begin\", e);\n gObj.trigger(events.actionBegin, e, function (args) {\n if (args === void 0) { args = { requestType: 'refresh' }; }\n if (args.cancel) {\n gObj.notify(events.cancelBegin, args);\n return;\n }\n if (gObj.allowSelection && (args.action === 'clearFilter' || (args.requestType === 'searching' && args.searchString === '') ||\n args.action === 'add')) {\n gObj.selectionModule['rmtHdrChkbxClicked'] = false;\n }\n if (gObj.allowPaging && gObj.pageSettings.pageSizes && gObj.pagerModule.pagerObj.isAllPage &&\n (args.action === 'add' && args.requestType === 'save') && gObj.pagerModule.pagerObj.checkAll) {\n gObj.setProperties({ pageSettings: { pageSize: gObj.pageSettings.pageSize + 1 } }, true);\n }\n if (args.requestType === 'delete' && gObj.allowPaging) {\n var dataLength = args.data.length;\n var count = gObj.pageSettings.totalRecordsCount - dataLength;\n var currentViewData = gObj.getCurrentViewRecords().length;\n // eslint-disable-next-line max-len\n if (!(currentViewData - dataLength) && count && ((gObj.pageSettings.currentPage - 1) * gObj.pageSettings.pageSize) === count) {\n gObj.prevPageMoving = true;\n gObj.setProperties({\n pageSettings: {\n totalRecordsCount: count, currentPage: Math.ceil(count / gObj.pageSettings.pageSize)\n }\n }, true);\n gObj.pagerModule.pagerObj.totalRecordsCount = count;\n }\n }\n if (args.requestType === 'reorder' && _this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else if ((args.requestType === 'paging' || args.requestType === 'columnstate' || args.requestType === 'reorder')\n && _this.parent.groupSettings.enableLazyLoading && _this.parent.groupSettings.columns.length\n && (_this.parent.enableVirtualization ? _this.parent.lazyLoadRender :\n _this.parent.contentModule).getGroupCache()[_this.parent.pageSettings.currentPage]) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else {\n _this.refreshDataManager(args);\n }\n });\n };\n /**\n * @returns {void}\n * @hidden\n */\n Render.prototype.resetTemplates = function () {\n var gObj = this.parent;\n var gridColumns = gObj.getColumns();\n if (gObj.detailTemplate) {\n var detailTemplateID = gObj.element.id + 'detailTemplate';\n blazorTemplates[\"\" + detailTemplateID] = [];\n resetBlazorTemplate(detailTemplateID, 'DetailTemplate');\n }\n if (gObj.groupSettings.captionTemplate) {\n resetBlazorTemplate(gObj.element.id + 'captionTemplate', 'CaptionTemplate');\n }\n if (gObj.rowTemplate) {\n resetBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate');\n }\n if (gObj.toolbarTemplate) {\n resetBlazorTemplate(gObj.element.id + 'toolbarTemplate', 'ToolbarTemplate');\n }\n if (gObj.pageSettings.template) {\n resetBlazorTemplate(gObj.element.id + '_template', 'pageSettings');\n }\n for (var i = 0; i < gridColumns.length; i++) {\n if (gridColumns[parseInt(i.toString(), 10)].template) {\n blazorTemplates[gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid] = [];\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid, 'Template');\n }\n if (gridColumns[parseInt(i.toString(), 10)].headerTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid + 'headerTemplate', 'HeaderTemplate');\n }\n if (gridColumns[parseInt(i.toString(), 10)].filterTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid + 'filterTemplate', 'FilterTemplate');\n }\n }\n var guid = 'guid';\n for (var k = 0; k < gObj.aggregates.length; k++) {\n for (var j = 0; j < gObj.aggregates[parseInt(k.toString(), 10)].columns.length; j++) {\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].footerTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'footerTemplate';\n resetBlazorTemplate(tempID, 'FooterTemplate');\n }\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].groupFooterTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'groupFooterTemplate';\n resetBlazorTemplate(tempID, 'GroupFooterTemplate');\n }\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].groupCaptionTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'groupCaptionTemplate';\n resetBlazorTemplate(tempID, 'GroupCaptionTemplate');\n }\n }\n }\n };\n Render.prototype.refreshComplete = function (e) {\n this.parent.trigger(events.actionComplete, e);\n };\n /**\n * The function is used to refresh the dataManager\n *\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n */\n Render.prototype.refreshDataManager = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n var maskRow = (gObj.loadingIndicator.indicatorType === 'Shimmer' && args.requestType !== 'virtualscroll'\n && args.requestType !== 'infiniteScroll') || ((args.requestType === 'virtualscroll' || args.requestType === 'infiniteScroll')\n && gObj.enableVirtualMaskRow);\n if (args.requestType !== 'virtualscroll' && !args.isCaptionCollapse && !maskRow) {\n this.parent.showSpinner();\n }\n if (maskRow) {\n gObj.showMaskRow(args.requestType === 'virtualscroll' ? args.virtualInfo.sentinelInfo.axis\n : args.requestType === 'infiniteScroll' ? args.direction : undefined);\n }\n this.parent.notify(events.resetInfiniteBlocks, args);\n this.emptyGrid = false;\n var dataManager;\n var isFActon = this.isNeedForeignAction();\n this.ariaService.setBusy(this.parent.getContent().querySelector('.' + literals.content), true);\n if (isFActon) {\n var deffered = new Deferred();\n dataManager = this.getFData(deffered, args);\n }\n if (!dataManager) {\n dataManager = this.data.getData(args, this.data.generateQuery().requiresCount());\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n dataManager = dataManager.then(function (e) {\n var query = _this.data.generateQuery().requiresCount();\n if (_this.emptyGrid) {\n var def = new Deferred();\n def.resolve({ result: [], count: 0 });\n return def.promise;\n }\n return _this.data.getData(args, query);\n });\n }\n if (this.parent.getForeignKeyColumns().length && (!isFActon || this.parent.searchSettings.key.length)) {\n var deffered_1 = new Deferred();\n dataManager = dataManager.then(function (e) {\n _this.parent.notify(events.getForeignKeyData, { dataManager: dataManager, result: e, promise: deffered_1, action: args });\n return deffered_1.promise;\n });\n }\n if (this.parent.groupSettings.disablePageWiseAggregates && this.parent.groupSettings.columns.length) {\n dataManager = dataManager.then(function (e) { return _this.validateGroupRecords(e); });\n }\n dataManager.then(function (e) { return _this.dataManagerSuccess(e, args); })\n .catch(function (e) { return _this.dataManagerFailure(e, args); });\n };\n Render.prototype.getFData = function (deferred, args) {\n this.parent.notify(events.getForeignKeyData, { isComplex: true, promise: deferred, action: args });\n return deferred.promise;\n };\n Render.prototype.isNeedForeignAction = function () {\n var gObj = this.parent;\n return !!((gObj.allowFiltering && gObj.filterSettings.columns.length) ||\n (gObj.searchSettings.key.length)) && this.foreignKey(this.parent.getForeignKeyColumns());\n };\n Render.prototype.foreignKey = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n var fbool = false;\n fbool = _this.parent.filterSettings.columns.some(function (value) {\n return col.uid === value.uid;\n });\n return !!(fbool || _this.parent.searchSettings.key.length);\n });\n };\n Render.prototype.sendBulkRequest = function (args) {\n var _this = this;\n args.requestType = 'batchsave';\n var gObj = this.parent;\n if (gObj.allowPaging && gObj.pageSettings.pageSizes && gObj.pagerModule.pagerObj.isAllPage && gObj.pagerModule.pagerObj.checkAll) {\n var dataLength = args['changes'].addedRecords.length;\n if (dataLength) {\n gObj.setProperties({ pageSettings: { pageSize: gObj.pageSettings.pageSize + dataLength } }, true);\n }\n }\n var promise = this.data.saveChanges(args.changes, this.parent.getPrimaryKeyFieldNames()[0], args.original);\n var query = this.data.generateQuery().requiresCount();\n if (this.data.dataManager.dataSource.offline) {\n this.refreshDataManager({ requestType: 'batchsave' });\n return;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n promise.then(function (e) {\n _this.data.getData(args, query)\n .then(function (e) { return _this.dmSuccess(e, args); })\n .catch(function (e) { return _this.dmFailure(e, args); });\n })\n .catch(function (e) { return _this.dmFailure(e, args); });\n }\n };\n Render.prototype.dmSuccess = function (e, args) {\n this.dataManagerSuccess(e, args);\n };\n Render.prototype.dmFailure = function (e, args) {\n this.dataManagerFailure(e, args);\n };\n /**\n * Render empty row to Grid which is used at the time to represent to no records.\n *\n * @returns {void}\n * @hidden\n */\n Render.prototype.renderEmptyRow = function () {\n this.emptyRow(true);\n };\n Render.prototype.emptyRow = function (isTrigger) {\n var gObj = this.parent;\n var tbody = this.contentRenderer.getTable().querySelector(literals.tbody);\n if (!isNullOrUndefined(tbody)) {\n remove(tbody);\n }\n tbody = this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var spanCount = 0;\n if (gObj.detailTemplate || gObj.childGrid) {\n ++spanCount;\n }\n var tr = this.parent.createElement('tr', { className: 'e-emptyrow' });\n tr.appendChild(this.parent.createElement('td', {\n innerHTML: this.l10n.getConstant('EmptyRecord'),\n attrs: { colspan: (gObj.getVisibleColumns().length + spanCount + gObj.groupSettings.columns.length).toString() }\n }));\n tbody.appendChild(tr);\n this.contentRenderer.renderEmpty(tbody);\n if (isTrigger) {\n this.parent.trigger(events.dataBound, {});\n this.parent.notify(events.onEmpty, { rows: [new Row({ isDataRow: true, cells: [new Cell({ isDataCell: true, visible: true })] })] });\n }\n };\n Render.prototype.dynamicColumnChange = function () {\n if (this.parent.getCurrentViewRecords().length) {\n this.updateColumnType(this.parent.getCurrentViewRecords()[0]);\n }\n };\n Render.prototype.updateColumnType = function (record) {\n var columns = this.parent.getColumns();\n var value;\n var cFormat = 'customFormat';\n var equalTo = 'equalTo';\n var data = record && record.items ? record.items[0] : record;\n var fmtr = this.locator.getService('valueFormatter');\n for (var i = 0, len = columns.length; i < len; i++) {\n value = getObject(columns[parseInt(i.toString(), 10)].field || '', data);\n if (!isNullOrUndefined(columns[parseInt(i.toString(), 10)][\"\" + cFormat])) {\n columns[parseInt(i.toString(), 10)].format = columns[parseInt(i.toString(), 10)][\"\" + cFormat];\n }\n if (!isNullOrUndefined(columns[parseInt(i.toString(), 10)].validationRules)\n && !isNullOrUndefined(columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo])) {\n columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo][0] = this.parent.element.id + columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo][0];\n }\n if (columns[parseInt(i.toString(), 10)].isForeignColumn() && columns[parseInt(i.toString(), 10)].columnData) {\n value = getObject(columns[parseInt(i.toString(), 10)].foreignKeyValue || '', columns[parseInt(i.toString(), 10)].columnData[0]);\n }\n if (!isNullOrUndefined(value)) {\n this.isColTypeDef = true;\n if (!columns[parseInt(i.toString(), 10)].type) {\n columns[parseInt(i.toString(), 10)].type = value.getDay ? (value.getHours() > 0 || value.getMinutes() > 0 ||\n value.getSeconds() > 0 || value.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n }\n else {\n columns[parseInt(i.toString(), 10)].type = columns[parseInt(i.toString(), 10)].type || null;\n }\n var valueFormatter = new ValueFormatter();\n if (columns[parseInt(i.toString(), 10)].format && (columns[parseInt(i.toString(), 10)].format.skeleton\n || (columns[parseInt(i.toString(), 10)].format.format &&\n typeof columns[parseInt(i.toString(), 10)].format.format === 'string'))) {\n columns[parseInt(i.toString(), 10)].setFormatter(valueFormatter.getFormatFunction(extend({}, columns[parseInt(i.toString(), 10)].format)));\n columns[parseInt(i.toString(), 10)].setParser(valueFormatter.getParserFunction(columns[parseInt(i.toString(), 10)].format));\n }\n if (typeof (columns[parseInt(i.toString(), 10)].format) === 'string') {\n setFormatter(this.locator, columns[parseInt(i.toString(), 10)]);\n }\n else if (!columns[parseInt(i.toString(), 10)].format && columns[parseInt(i.toString(), 10)].type === 'number') {\n columns[parseInt(i.toString(), 10)].setParser(fmtr.getParserFunction({ format: 'n2' }));\n }\n if (columns[parseInt(i.toString(), 10)].type === 'dateonly' && !columns[parseInt(i.toString(), 10)].format) {\n columns[parseInt(i.toString(), 10)].format = 'yMd';\n setFormatter(this.locator, columns[parseInt(i.toString(), 10)]);\n }\n }\n };\n /**\n * @param {ReturnType} e - specifies the return type\n * @param {NotifyArgs} args - specifies the Notifyargs\n * @returns {void}\n * @hidden\n */\n // tslint:disable-next-line:max-func-body-length\n Render.prototype.dataManagerSuccess = function (e, args) {\n var _this = this;\n var gObj = this.parent;\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n e.actionArgs = args;\n var isInfiniteDelete = this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache &&\n !gObj.groupSettings.enableLazyLoading && (args.requestType === 'delete' || (args.requestType === 'save' &&\n this.parent.infiniteScrollModule.requestType === 'add' && !(gObj.sortSettings.columns.length ||\n gObj.filterSettings.columns.length || this.parent.groupSettings.columns.length || gObj.searchSettings.key)));\n // tslint:disable-next-line:max-func-body-length\n gObj.trigger(events.beforeDataBound, e, function (dataArgs) {\n if (dataArgs.cancel) {\n return;\n }\n dataArgs.result = isNullOrUndefined(dataArgs.result) ? [] : dataArgs.result;\n var len = Object.keys(dataArgs.result).length;\n if (_this.parent.isDestroyed) {\n return;\n }\n if ((!gObj.getColumns().length && !len) && !(gObj.columns.length && gObj.columns[0] instanceof Column)) {\n gObj.hideSpinner();\n return;\n }\n if (_this.isInfiniteEnd(args) && !len) {\n _this.parent.notify(events.infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n return;\n }\n _this.parent.isEdit = false;\n _this.parent.notify(events.editReset, {});\n _this.parent.notify(events.tooltipDestroy, {});\n if (args && args.requestType !== 'infiniteScroll') {\n _this.parent.notify(events.commandColumnDestroy, { type: 'refreshCommandColumn' });\n }\n _this.contentRenderer.prevCurrentView = _this.parent.currentViewData.slice();\n gObj.currentViewData = dataArgs.result;\n gObj.notify(events.refreshInfiniteCurrentViewData, { args: args, data: dataArgs.result });\n if (dataArgs.count && !gObj.allowPaging && (gObj.enableVirtualization || gObj.enableInfiniteScrolling)) {\n gObj.totalDataRecordsCount = dataArgs.count;\n }\n if (!len && dataArgs.count && gObj.allowPaging && args && args.requestType !== 'delete') {\n if (_this.parent.groupSettings.enableLazyLoading\n && (args.requestType === 'grouping' || args.requestType === 'ungrouping')) {\n _this.parent.notify(events.groupComplete, args);\n }\n gObj.prevPageMoving = true;\n gObj.pageSettings.totalRecordsCount = dataArgs.count;\n if (args.requestType !== 'paging') {\n gObj.pageSettings.currentPage = Math.ceil(dataArgs.count / gObj.pageSettings.pageSize);\n }\n gObj.dataBind();\n return;\n }\n if ((!gObj.getColumns().length && len || !_this.isLayoutRendered) && !isGroupAdaptive(gObj)) {\n gObj.removeMaskRow();\n _this.updatesOnInitialRender(dataArgs);\n }\n if (!_this.isColTypeDef && gObj.getCurrentViewRecords()) {\n if (_this.data.dataManager.dataSource.offline && gObj.dataSource && gObj.dataSource.length) {\n _this.updateColumnType(gObj.dataSource[0]);\n }\n else {\n _this.updateColumnType(gObj.getCurrentViewRecords()[0]);\n }\n }\n if (!_this.parent.isInitialLoad && _this.parent.groupSettings.disablePageWiseAggregates &&\n !_this.parent.groupSettings.columns.length) {\n dataArgs.result = _this.parent.dataSource instanceof Array ? _this.parent.dataSource : _this.parent.currentViewData;\n }\n if ((_this.parent.isReact || _this.parent.isVue) && !isNullOrUndefined(args) && args.requestType !== 'infiniteScroll' && !args.isFrozen) {\n clearReactVueTemplates(_this.parent, ['footerTemplate']);\n }\n if (_this.parent.isAngular && _this.parent.allowGrouping && _this.parent.groupSettings.captionTemplate\n && !(!isNullOrUndefined(args) && args.requestType === 'infiniteScroll')) {\n _this.parent.destroyTemplate(['groupSettings_captionTemplate']);\n }\n _this.parent.notify(events.dataReady, extend({ count: dataArgs.count, result: dataArgs.result, aggregates: dataArgs.aggregates }, args));\n if ((gObj.groupSettings.columns.length || (args && args.requestType === 'ungrouping'))\n && (args && args.requestType !== 'filtering')) {\n _this.headerRenderer.refreshUI();\n }\n if (len) {\n if (isGroupAdaptive(gObj)) {\n var content = 'content';\n args.scrollTop = { top: _this.contentRenderer[\"\" + content].scrollTop };\n }\n if (!isInfiniteDelete) {\n if (_this.parent.enableImmutableMode) {\n _this.contentRenderer.immutableModeRendering(args);\n }\n else {\n _this.contentRenderer.refreshContentRows(args);\n }\n }\n else {\n _this.parent.notify(events.infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n }\n }\n else {\n if (args && args.isCaptionCollapse) {\n return;\n }\n if (!gObj.getColumns().length) {\n gObj.element.innerHTML = '';\n alert(_this.l10n.getConstant('EmptyDataSourceError')); //ToDO: change this alert as dialog\n return;\n }\n _this.contentRenderer.setRowElements([]);\n _this.contentRenderer.setRowObjects([]);\n _this.ariaService.setBusy(_this.parent.getContent().querySelector('.' + literals.content), false);\n gObj.removeMaskRow();\n _this.renderEmptyRow();\n if (gObj.enableColumnVirtualization && !len) {\n _this.parent.notify(events.contentReady, { rows: gObj.getRowsObject(), args: {} });\n }\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, args);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n args.rows = [];\n args.isFrozen = _this.parent.getFrozenColumns() !== 0 && !args.isFrozen;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n if (_this.parent.autoFit) {\n _this.parent.preventAdjustColumns();\n }\n _this.parent.hideSpinner();\n }\n _this.parent.notify(events.toolbarRefresh, {});\n _this.setRowCount(_this.parent.getCurrentViewRecords().length);\n if ('query' in e) {\n _this.parent.getDataModule().isQueryInvokedFromData = false;\n }\n });\n };\n /**\n * @param {object} e - specifies the object\n * @param {Object[]} e.result - specifies the result\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n * @hidden\n */\n Render.prototype.dataManagerFailure = function (e, args) {\n if (!isNullOrUndefined(this.parent.contentModule)) {\n this.ariaService.setOptions(this.parent.getContent().querySelector('.' + literals.content), { busy: false, invalid: true });\n this.setRowCount(1);\n }\n this.parent.trigger(events.actionFailure, { error: e });\n this.parent.hideSpinner();\n this.parent.removeMaskRow();\n if (args.requestType === 'save' || args.requestType === 'delete'\n || args.name === 'bulk-save') {\n return;\n }\n this.parent.currentViewData = [];\n this.renderEmptyRow();\n if (!this.parent.isInitialLoad) {\n this.parent.focusModule.setFirstFocusableTabIndex();\n }\n this.parent.log('actionfailure', { error: e });\n };\n Render.prototype.setRowCount = function (dataRowCount) {\n this.ariaService.setOptions(this.parent.getHeaderTable(), {\n rowcount: dataRowCount ? dataRowCount.toString() : '1'\n });\n };\n Render.prototype.isInfiniteEnd = function (args) {\n return this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache && args.requestType === 'delete';\n };\n Render.prototype.updatesOnInitialRender = function (e) {\n this.isLayoutRendered = true;\n if (this.parent.columns.length < 1) {\n this.buildColumns(e.result[0]);\n }\n prepareColumns(this.parent.columns, null, this.parent);\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.parent.isAutoGen = true;\n this.parent.notify(events.autoCol, {});\n };\n Render.prototype.iterateComplexColumns = function (obj, field, split) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n var childKeys = typeof obj[keys[parseInt(i.toString(), 10)]] === 'object'\n && obj[keys[parseInt(i.toString(), 10)]] && !(obj[keys[parseInt(i.toString(), 10)]] instanceof Date) ?\n Object.keys(obj[keys[parseInt(i.toString(), 10)]]) : [];\n if (childKeys.length) {\n this.iterateComplexColumns(obj[keys[parseInt(i.toString(), 10)]], field + (keys[parseInt(i.toString(), 10)] + '.'), split);\n }\n else {\n split[this.counter] = field + keys[parseInt(i.toString(), 10)];\n this.counter++;\n }\n }\n };\n Render.prototype.buildColumns = function (record) {\n var cols = [];\n var complexCols = {};\n this.iterateComplexColumns(record, '', complexCols);\n var columns = Object.keys(complexCols).filter(function (e) { return complexCols[\"\" + e] !== 'BlazId'; }).\n map(function (field) { return complexCols[\"\" + field]; });\n for (var i = 0, len = columns.length; i < len; i++) {\n cols[parseInt(i.toString(), 10)] = { 'field': columns[parseInt(i.toString(), 10)] };\n if (this.parent.enableColumnVirtualization) {\n cols[parseInt(i.toString(), 10)].width = !isNullOrUndefined(cols[parseInt(i.toString(), 10)].width) ?\n cols[parseInt(i.toString(), 10)].width : 200;\n }\n }\n this.parent.setProperties({ 'columns': cols }, true);\n };\n Render.prototype.instantiateRenderer = function () {\n this.renderer.addRenderer(RenderType.Header, new HeaderRender(this.parent, this.locator));\n this.renderer.addRenderer(RenderType.Content, new ContentRender(this.parent, this.locator));\n var cellrender = this.locator.getService('cellRendererFactory');\n cellrender.addCellRenderer(CellType.Header, new HeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Data, new CellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Indent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaption, new GroupCaptionCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaptionEmpty, new GroupCaptionEmptyCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Expand, new ExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.HeaderIndent, new HeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailHeader, new DetailHeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragHIcon, new RowDragDropHeaderRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailExpand, new DetailExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailFooterIntent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragIcon, new RowDragDropRenderer(this.parent, this.locator));\n };\n Render.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.initialLoad, this.instantiateRenderer, this);\n this.parent.on('refreshdataSource', this.dataManagerSuccess, this);\n this.parent.on(events.modelChanged, this.refresh, this);\n this.parent.on(events.refreshComplete, this.refreshComplete, this);\n this.parent.on(events.bulkSave, this.sendBulkRequest, this);\n this.parent.on(events.showEmptyGrid, function () { _this.emptyGrid = true; }, this);\n this.parent.on(events.autoCol, this.dynamicColumnChange, this);\n };\n /**\n * @param {ReturnType} e - specifies the Return type\n * @returns {Promise} returns the object\n * @hidden\n */\n Render.prototype.validateGroupRecords = function (e) {\n var _this = this;\n var index = e.result.length - 1;\n if (index < 0) {\n return Promise.resolve(e);\n }\n var group0 = e.result[0];\n var groupN = e.result[parseInt(index.toString(), 10)];\n var predicate = [];\n var addWhere = function (input) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n predicate.push(new Predicate('field', '==', groups[parseInt(i.toString(), 10)].field).and(_this.getPredicate('key', 'equal', groups[parseInt(i.toString(), 10)].key)));\n }\n input.where(Predicate.or(predicate));\n };\n var query = new Query();\n addWhere(query);\n var curDm = new DataManager(e.result);\n var curFilter = curDm.executeLocal(query);\n var newQuery = this.data.generateQuery(true);\n var rPredicate = [];\n if (this.data.isRemote()) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n rPredicate.push(this.getPredicate(groups[parseInt(i.toString(), 10)].field, 'equal', groups[parseInt(i.toString(), 10)].key));\n }\n newQuery.where(Predicate.or(rPredicate));\n }\n else {\n addWhere(newQuery);\n }\n var deferred = new Deferred();\n this.data.getData({}, newQuery).then(function (r) {\n _this.updateGroupInfo(curFilter, r.result);\n deferred.resolve(e);\n }).catch(function (e) { return deferred.reject(e); });\n return deferred.promise;\n };\n Render.prototype.getPredicate = function (key, operator, value) {\n if (value instanceof Date) {\n return getDatePredicate({ field: key, operator: operator, value: value });\n }\n return new Predicate(key, operator, value);\n };\n Render.prototype.updateGroupInfo = function (current, untouched) {\n var dm = new DataManager(untouched);\n var elements = current;\n for (var i = 0; i < elements.length; i++) {\n var uGroup = dm.executeLocal(new Query()\n .where(new Predicate('field', '==', elements[parseInt(i.toString(), 10)].field).and(this.getPredicate('key', 'equal', elements[parseInt(i.toString(), 10)].key))))[0];\n elements[parseInt(i.toString(), 10)].count = uGroup.count;\n var itemGroup = elements[parseInt(i.toString(), 10)].items;\n var uGroupItem = uGroup.items;\n if (itemGroup.GroupGuid) {\n elements[parseInt(i.toString(), 10)].items =\n this.updateGroupInfo(elements[parseInt(i.toString(), 10)].items, uGroup.items);\n }\n var rows = this.parent.aggregates;\n for (var j = 0; j < rows.length; j++) {\n var row = rows[parseInt(j.toString(), 10)];\n for (var k = 0; k < row.columns.length; k++) {\n var types = row.columns[parseInt(k.toString(), 10)].type instanceof Array ?\n (row.columns[parseInt(k.toString(), 10)].type) :\n [(row.columns[parseInt(k.toString(), 10)].type)];\n for (var l = 0; l < types.length; l++) {\n var key = row.columns[parseInt(k.toString(), 10)].field + ' - ' + types[parseInt(l.toString(), 10)].toLowerCase();\n var data = itemGroup.level ? uGroupItem.records : uGroup.items;\n var context = this.parent;\n if (types[parseInt(l.toString(), 10)] === 'Custom') {\n var data_1 = itemGroup.level ? uGroupItem : uGroup;\n var temp = row.columns[parseInt(k.toString(), 10)]\n .customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n elements[parseInt(i.toString(), 10)].aggregates[\"\" + key] = temp ? temp.call(context, data_1, row.columns[parseInt(k.toString(), 10)]) : '';\n }\n else {\n elements[parseInt(i.toString(), 10)].aggregates[\"\" + key] = DataUtil.aggregates[types[parseInt(l.toString(), 10)].toLowerCase()](data, row.columns[parseInt(k.toString(), 10)].field);\n }\n }\n }\n }\n }\n return current;\n };\n return Render;\n}());\nexport { Render };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\n/**\n * CellRendererFactory\n *\n * @hidden\n */\nvar CellRendererFactory = /** @class */ (function () {\n function CellRendererFactory() {\n this.cellRenderMap = {};\n }\n CellRendererFactory.prototype.addCellRenderer = function (name, type) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[\"\" + name])) {\n this.cellRenderMap[\"\" + name] = type;\n }\n };\n CellRendererFactory.prototype.getCellRenderer = function (name) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[\"\" + name])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The cellRenderer \" + name + \" is not found\";\n }\n else {\n return this.cellRenderMap[\"\" + name];\n }\n };\n return CellRendererFactory;\n}());\nexport { CellRendererFactory };\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { EventHandler, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nimport { parentsUntil, addBiggerDialog, addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { ResponsiveDialogAction } from '../base/enum';\n/**\n *\n * The `ResponsiveDialogRenderer` module is used to render the responsive dialogs.\n */\nvar ResponsiveDialogRenderer = /** @class */ (function () {\n function ResponsiveDialogRenderer(parent, serviceLocator) {\n this.sortedCols = [];\n this.sortPredicate = [];\n /** @hidden */\n this.isCustomDialog = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n ResponsiveDialogRenderer.prototype.addEventListener = function () {\n this.evtHandlers = [{ event: events.filterDialogClose, handler: this.closeCustomDialog },\n { event: events.refreshCustomFilterOkBtn, handler: this.refreshCustomFilterOkBtn },\n { event: events.renderResponsiveCmenu, handler: this.renderResponsiveContextMenu },\n { event: events.filterCmenuSelect, handler: this.renderCustomFilterDiv },\n { event: events.customFilterClose, handler: this.customExFilterClose },\n { event: events.refreshCustomFilterClearBtn, handler: this.refreshCustomFilterClearBtn }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.onActionCompleteFn = this.editComplate.bind(this);\n this.parent.addEventListener(events.actionComplete, this.onActionCompleteFn);\n };\n ResponsiveDialogRenderer.prototype.customExFilterClose = function () {\n this.isCustomDlgRender = false;\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDiv = function () {\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var title = header.querySelector('.e-dlg-custom-header');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n this.isCustomDlgRender = true;\n this.parent.filterModule.filterModule.closeDialog();\n this.saveBtn.element.style.display = '';\n this.refreshCustomFilterOkBtn({ disabled: false });\n this.backBtn.element.style.display = 'none';\n closeBtn.style.display = '';\n title.innerHTML = this.parent.localeObj.getConstant('CustomFilter');\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n this.customExcelFilterParent = this.parent.createElement('div', { className: 'e-xl-customfilterdiv e-default-filter' });\n content.appendChild(this.customExcelFilterParent);\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContextMenu = function (args) {\n if (this.action === ResponsiveDialogAction.isFilter) {\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n var text = header.querySelector('.e-dlg-custom-header');\n if (args.isOpen) {\n content.firstChild.style.display = 'none';\n content.appendChild(args.target);\n closeBtn.style.display = 'none';\n this.saveBtn.element.style.display = 'none';\n this.filterClearBtn.element.style.display = 'none';\n text.innerHTML = args.header;\n var backBtn = this.parent.createElement('button');\n var span = this.parent.createElement('span', { className: 'e-btn-icon e-resfilterback e-icons' });\n backBtn.appendChild(span);\n this.backBtn = new Button({\n cssClass: this.parent.cssClass ? 'e-res-back-btn' + ' ' + this.parent.cssClass : 'e-res-back-btn'\n });\n this.backBtn.appendTo(backBtn);\n text.parentElement.insertBefore(backBtn, text);\n }\n else if (this.backBtn && !this.isCustomDlgRender) {\n content.firstChild.style.display = '';\n remove(this.backBtn.element);\n closeBtn.style.display = '';\n this.saveBtn.element.style.display = '';\n if (this.isFiltered) {\n this.filterClearBtn.element.style.display = '';\n }\n text.innerHTML = this.getHeaderTitle({ action: ResponsiveDialogAction.isFilter }, args.col);\n }\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterClearBtn = function (args) {\n if (this.filterClearBtn) {\n this.isFiltered = args.isFiltered;\n this.filterClearBtn.element.style.display = args.isFiltered ? '' : 'none';\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterOkBtn = function (args) {\n if (this.saveBtn) {\n this.saveBtn.disabled = args.disabled;\n }\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContent = function (col) {\n var _this = this;\n var gObj = this.parent;\n if (col) {\n this.filterParent = this.parent.createElement('div', { className: 'e-mainfilterdiv e-default-filter', id: col.uid + '-main-filter' });\n return this.filterParent;\n }\n else {\n var cols = gObj.getColumns();\n this.customColumnDiv = gObj.createElement('div', { className: 'columndiv', styles: 'width: 100%' });\n var sortBtnParent = gObj.createElement('div', { className: 'e-ressortbutton-parent' });\n var filteredCols = [];\n var isSort = this.action === ResponsiveDialogAction.isSort;\n var isFilter = this.action === ResponsiveDialogAction.isFilter;\n if (isFilter) {\n for (var i = 0; i < gObj.filterSettings.columns.length; i++) {\n filteredCols.push(gObj.filterSettings.columns[parseInt(i.toString(), 10)].field);\n }\n }\n for (var i = 0; i < cols.length; i++) {\n if (!cols[parseInt(i.toString(), 10)].visible || (!cols[parseInt(i.toString(), 10)].allowSorting && isSort)\n || (!cols[parseInt(i.toString(), 10)].allowFiltering && isFilter)) {\n continue;\n }\n var cDiv = gObj.createElement('div', { className: 'e-responsivecoldiv' });\n cDiv.setAttribute('data-e-mappingname', cols[parseInt(i.toString(), 10)].field);\n cDiv.setAttribute('data-e-mappinguid', cols[parseInt(i.toString(), 10)].uid);\n var span = gObj.createElement('span', { innerHTML: cols[parseInt(i.toString(), 10)].headerText, className: 'e-res-header-text' });\n cDiv.appendChild(span);\n this.customColumnDiv.appendChild(cDiv);\n if (isSort) {\n var fields = this.getSortedFieldsAndDirections('field');\n var index = fields.indexOf(cols[parseInt(i.toString(), 10)].field);\n var button = gObj.createElement('button', { id: gObj.element.id + cols[parseInt(i.toString(), 10)].field + 'sortbutton' });\n var clone = sortBtnParent.cloneNode();\n clone.appendChild(button);\n cDiv.appendChild(clone);\n var btnObj = new Button({\n cssClass: this.parent.cssClass ? 'e-ressortbutton' + ' ' + this.parent.cssClass : 'e-ressortbutton'\n });\n btnObj.appendTo(button);\n var buttonInnerText = void 0;\n if ((!isNullOrUndefined(this.parent.sortSettings.columns[parseInt(index.toString(), 10)]))) {\n buttonInnerText = (this.parent.sortSettings.columns[parseInt(index.toString(), 10)].direction === 'Ascending') ?\n this.parent.localeObj.getConstant('AscendingText') : this.parent.localeObj.getConstant('DescendingText');\n }\n button.innerHTML = index > -1 ? buttonInnerText : this.parent.localeObj.getConstant('NoneText');\n button.onclick = function (e) {\n _this.sortButtonClickHandler(e.target);\n };\n }\n if (isFilter && filteredCols.indexOf(cols[parseInt(i.toString(), 10)].field) > -1) {\n var divIcon = gObj.createElement('div', { className: 'e-icons e-res-icon e-filtersetdiv' });\n var iconSpan = gObj.createElement('span', { className: 'e-icons e-res-icon e-filterset' });\n iconSpan.setAttribute('colType', cols[parseInt(i.toString(), 10)].type);\n divIcon.appendChild(iconSpan);\n cDiv.appendChild(divIcon);\n }\n }\n EventHandler.add(this.customColumnDiv, 'click', this.customFilterColumnClickHandler, this);\n return this.customColumnDiv;\n }\n };\n ResponsiveDialogRenderer.prototype.getSortedFieldsAndDirections = function (name) {\n var fields = [];\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n fields.push(this.parent.sortSettings.columns[parseInt(i.toString(), 10)][\"\" + name]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.sortButtonClickHandler = function (target) {\n if (target) {\n var columndiv = parentsUntil(target, 'e-responsivecoldiv');\n var field = columndiv.getAttribute('data-e-mappingname');\n if (!this.parent.allowMultiSorting) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n this.resetSortButtons(target);\n }\n var txt = target.textContent;\n var directionTxt = txt === this.parent.localeObj.getConstant('NoneText') ? this.parent.localeObj.getConstant('AscendingText')\n : txt === this.parent.localeObj.getConstant('AscendingText') ? this.parent.localeObj.getConstant('DescendingText')\n : this.parent.localeObj.getConstant('NoneText');\n var direction = directionTxt === this.parent.localeObj.getConstant('AscendingText') ? 'Ascending'\n : directionTxt === this.parent.localeObj.getConstant('DescendingText') ? 'Descending' : 'None';\n target.innerHTML = directionTxt;\n this.setSortedCols(field, direction);\n }\n };\n ResponsiveDialogRenderer.prototype.resetSortButtons = function (target) {\n var buttons = [].slice.call(this.customColumnDiv.getElementsByClassName('e-ressortbutton'));\n for (var i = 0; i < buttons.length; i++) {\n if (buttons[parseInt(i.toString(), 10)] !== target) {\n buttons[parseInt(i.toString(), 10)].innerHTML = 'None';\n }\n }\n };\n ResponsiveDialogRenderer.prototype.setSortedCols = function (field, direction) {\n var fields = this.getCurrentSortedFields();\n var index = fields.indexOf(field);\n if (this.parent.allowMultiSorting && index > -1) {\n this.sortedCols.splice(index, 1);\n this.sortPredicate.splice(index, 1);\n }\n this.isSortApplied = true;\n if (direction !== 'None') {\n this.sortedCols.push(field);\n this.sortPredicate.push({ field: field, direction: direction });\n }\n };\n ResponsiveDialogRenderer.prototype.getCurrentSortedFields = function () {\n var fields = [];\n for (var i = 0; i < this.sortedCols.length; i++) {\n fields.push(this.sortedCols[parseInt(i.toString(), 10)]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.customFilterColumnClickHandler = function (e) {\n if (this.action !== ResponsiveDialogAction.isFilter) {\n return;\n }\n var gObj = this.parent;\n var target = e.target;\n if (gObj.filterSettings.type !== 'FilterBar') {\n if (target.classList.contains('e-responsivecoldiv') || target.parentElement.classList.contains('e-responsivecoldiv')) {\n var field = target.getAttribute('data-e-mappingname');\n if (!field) {\n field = target.parentElement.getAttribute('data-e-mappingname');\n }\n if (field) {\n var col = gObj.getColumnByField(field);\n this.isRowResponsive = true;\n this.showResponsiveDialog(col);\n }\n }\n else if (target.classList.contains('e-filterset') || target.parentElement.classList.contains('e-filtersetdiv')) {\n var colDiv = parentsUntil(target, 'e-responsivecoldiv');\n if (colDiv) {\n var field = colDiv.getAttribute('data-e-mappingname');\n var col = gObj.getColumnByField(field);\n if (col.filter.type === 'Menu' || (!col.filter.type && gObj.filterSettings.type === 'Menu')) {\n this.isDialogClose = true;\n }\n this.parent.filterModule.filterModule.clearCustomFilter(col);\n this.removeCustomDlgFilterEle(target);\n }\n }\n }\n };\n /**\n * Function to show the responsive dialog\n *\n * @param {Column} col - specifies the column\n * @returns {void}\n */\n ResponsiveDialogRenderer.prototype.showResponsiveDialog = function (col) {\n if (this.isCustomDialog && this.action === ResponsiveDialogAction.isFilter && !this.isRowResponsive) {\n this.renderCustomFilterDialog();\n }\n else {\n this.filteredCol = col;\n this.renderResponsiveDialog(col);\n if (this.parent.enableAdaptiveUI && col) {\n this.parent.filterModule.setFilterModel(col);\n this.parent.filterModule.filterModule.openDialog(this.parent.filterModule.createOptions(col, undefined));\n }\n if (this.action === ResponsiveDialogAction.isSort) {\n var args = {\n cancel: false, dialogObj: this.customResponsiveDlg, requestType: 'beforeOpenAptiveSortDialog'\n };\n this.parent.trigger(events.beforeOpenAdaptiveDialog, args);\n if (args.cancel) {\n return;\n }\n }\n this.customResponsiveDlg.show(true);\n this.customResponsiveDlg.element.style.maxHeight = '100%';\n this.setTopToChildDialog(this.customResponsiveDlg.element);\n }\n };\n ResponsiveDialogRenderer.prototype.setTopToChildDialog = function (dialogEle) {\n var child = dialogEle.querySelector('.e-dialog');\n if (child) {\n var top_1 = dialogEle.querySelector('.e-dlg-header-content').getBoundingClientRect().height;\n child.style.top = top_1 + 'px';\n }\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDialog = function (col) {\n var gObj = this.parent;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + 'customfilter',\n className: this.parent.cssClass ?\n 'e-customfilterdiv e-responsive-dialog ' + this.parent.cssClass : 'e-customfilterdiv e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customFilterDlg = this.getDialogOptions(col, true);\n var args = {\n cancel: false, dialogObj: this.customFilterDlg, requestType: 'beforeOpenAptiveFilterDialog'\n };\n this.parent.trigger(events.beforeOpenAdaptiveDialog, args);\n if (args.cancel) {\n return;\n }\n this.customFilterDlg.appendTo(outerDiv);\n this.customFilterDlg.show(true);\n this.customFilterDlg.element.style.maxHeight = '100%';\n };\n ResponsiveDialogRenderer.prototype.getDialogOptions = function (col, isCustomFilter, id) {\n var options = new Dialog({\n isModal: true,\n showCloseIcon: true,\n closeOnEscape: false,\n locale: this.parent.locale,\n target: this.parent.adaptiveDlgTarget ? this.parent.adaptiveDlgTarget : document.body,\n visible: false,\n enableRtl: this.parent.enableRtl,\n content: this.renderResponsiveContent(col),\n open: this.dialogOpen.bind(this),\n created: this.dialogCreated.bind(this),\n close: this.beforeDialogClose.bind(this),\n width: '100%',\n height: '100%',\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n options[\"\" + isStringTemplate] = true;\n if (isCustomFilter) {\n options.header = this.renderResponsiveHeader(col, undefined, true);\n options.cssClass = 'e-customfilter';\n }\n else {\n options.header = this.renderResponsiveHeader(col);\n options.cssClass = this.parent.rowRenderingMode === 'Vertical' && this.action === ResponsiveDialogAction.isFilter\n ? 'e-res' + id + ' e-row-responsive-filter' : 'e-res' + id;\n }\n return options;\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveDialog = function (col) {\n var gObj = this.parent;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var id = this.action === ResponsiveDialogAction.isFilter ? 'filter' : 'sort';\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + 'responsive' + id,\n className: this.parent.cssClass ?\n 'e-res' + id + 'div e-responsive-dialog ' + this.parent.cssClass : 'e-res' + id + 'div e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customResponsiveDlg = this.getDialogOptions(col, false, id);\n this.customResponsiveDlg.appendTo(outerDiv);\n };\n ResponsiveDialogRenderer.prototype.dialogCreated = function () {\n addBiggerDialog(this.parent);\n };\n ResponsiveDialogRenderer.prototype.dialogOpen = function () {\n if (this.action === ResponsiveDialogAction.isSort && this.parent.allowMultiSorting) {\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n this.sortedCols.push(this.parent.sortSettings.columns[parseInt(i.toString(), 10)].field);\n var sortField = this.parent.sortSettings.columns[parseInt(i.toString(), 10)].field;\n var sortDirection = this.parent.sortSettings.columns[parseInt(i.toString(), 10)].direction;\n this.sortPredicate.push({ field: sortField, direction: sortDirection });\n }\n }\n };\n ResponsiveDialogRenderer.prototype.beforeDialogClose = function (args) {\n this.isDialogClose = args.element && !args.element.querySelector('.e-xl-customfilterdiv')\n && args.element.classList.contains('e-resfilterdiv');\n if (this.action === ResponsiveDialogAction.isFilter) {\n if (args.element.classList.contains('e-resfilterdiv')) {\n this.parent.filterModule.filterModule.closeResponsiveDialog(this.isCustomDlgRender);\n }\n else if (args.element.classList.contains('e-customfilterdiv')) {\n this.closeCustomFilter();\n }\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.closeCustomDialog();\n }\n this.parent.off(events.enterKeyHandler, this.keyHandler);\n };\n ResponsiveDialogRenderer.prototype.sortColumn = function () {\n if (!this.isSortApplied) {\n this.closeCustomDialog();\n return;\n }\n if (this.sortPredicate.length) {\n this.parent.setProperties({ sortSettings: { columns: [] } }, true);\n }\n for (var i = 0; i < this.sortPredicate.length; i++) {\n this.parent.sortColumn(this.sortPredicate[parseInt(i.toString(), 10)].field, this.sortPredicate[parseInt(i.toString(), 10)].direction, this.parent.allowMultiSorting);\n }\n if (!this.sortPredicate.length) {\n this.parent.clearSorting();\n }\n this.closeCustomDialog();\n };\n ResponsiveDialogRenderer.prototype.getHeaderTitle = function (args, col) {\n var gObj = this.parent;\n var title;\n if (this.action === ResponsiveDialogAction.isEdit) {\n title = gObj.localeObj.getConstant('EditFormTitle') + args.primaryKeyValue[0];\n }\n else if (this.action === ResponsiveDialogAction.isAdd) {\n title = gObj.localeObj.getConstant('AddFormTitle');\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n title = col ? col.headerText || col.field : gObj.localeObj.getConstant('FilterButton');\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n title = gObj.localeObj.getConstant('Sort');\n }\n return title;\n };\n ResponsiveDialogRenderer.prototype.getDialogName = function (action) {\n var name;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n name = 'dialogEdit_wrapper_title';\n }\n else if (action === ResponsiveDialogAction.isFilter) {\n name = 'responsive_filter_dialog_wrapper';\n }\n return name;\n };\n ResponsiveDialogRenderer.prototype.getButtonText = function (action) {\n var text;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n text = 'Save';\n }\n else if (action === ResponsiveDialogAction.isFilter || this.action === ResponsiveDialogAction.isSort) {\n text = 'OKButton';\n }\n return text;\n };\n /**\n * Function to render the responsive header\n *\n * @param {Column} col - specifies the column\n * @param {ResponsiveDialogArgs} args - specifies the responsive dialog arguments\n * @param {boolean} isCustomFilter - specifies whether it is custom filter or not\n * @returns {HTMLElement | string} returns the html element or string\n */\n ResponsiveDialogRenderer.prototype.renderResponsiveHeader = function (col, args, isCustomFilter) {\n var _this = this;\n var gObj = this.parent;\n gObj.on(events.enterKeyHandler, this.keyHandler, this);\n var id = gObj.element.id + this.getDialogName(this.action);\n var header = gObj.createElement('div', { className: 'e-res-custom-element' });\n var titleDiv = gObj.createElement('div', { className: 'e-dlg-custom-header', id: id });\n titleDiv.innerHTML = this.getHeaderTitle(args, col);\n header.appendChild(titleDiv);\n var saveBtn = gObj.createElement('button');\n if (!isCustomFilter) {\n this.saveBtn = new Button({\n cssClass: this.parent.cssClass ?\n 'e-primary e-flat e-res-apply-btn' + ' ' + this.parent.cssClass : 'e-primary e-flat e-res-apply-btn'\n });\n saveBtn.innerHTML = gObj.localeObj.getConstant(this.getButtonText(this.action));\n this.saveBtn.appendTo(saveBtn);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n saveBtn.onclick = function (e) {\n _this.dialogHdrBtnClickHandler();\n };\n }\n var isSort = this.action === ResponsiveDialogAction.isSort;\n var isFilter = this.action === ResponsiveDialogAction.isFilter;\n if (isFilter || isSort) {\n var id_1 = isSort ? 'sort' : 'filter';\n var clearBtn = gObj.createElement('button');\n this.filterClearBtn = new Button({\n cssClass: this.parent.cssClass ? 'e-primary e-flat e-res-' + id_1 + '-clear-btn' + ' ' + this.parent.cssClass\n : 'e-primary e-flat e-res-' + id_1 + '-clear-btn'\n });\n if (isFilter) {\n var span = gObj.createElement('span', { className: 'e-btn-icon e-icon-filter-clear e-icons' });\n clearBtn.appendChild(span);\n }\n else {\n clearBtn.innerHTML = gObj.localeObj.getConstant('Clear');\n }\n header.appendChild(clearBtn);\n this.filterClearBtn.appendTo(clearBtn);\n clearBtn.onclick = function (e) {\n if ((parentsUntil(e.target, 'e-customfilter'))) {\n _this.parent.filterModule.clearFiltering();\n _this.removeCustomDlgFilterEle();\n }\n else {\n if (isFilter) {\n _this.filterClear();\n }\n else {\n _this.resetSortButtons();\n _this.sortedCols = [];\n _this.sortPredicate = [];\n _this.isSortApplied = true;\n }\n }\n };\n header.appendChild(clearBtn);\n }\n if (!isCustomFilter) {\n header.appendChild(saveBtn);\n }\n return header;\n };\n ResponsiveDialogRenderer.prototype.filterClear = function () {\n this.parent.filterModule.filterModule.clearCustomFilter(this.filteredCol);\n this.parent.filterModule.filterModule.closeResponsiveDialog();\n };\n ResponsiveDialogRenderer.prototype.dialogHdrBtnClickHandler = function () {\n if (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd) {\n this.parent.endEdit();\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n this.parent.filterModule.filterModule.applyCustomFilter({ col: this.filteredCol, isCustomFilter: this.isCustomDlgRender });\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.sortColumn();\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomDialog = function () {\n if (this.isCustomDlgRender) {\n var mainfilterdiv = this.customResponsiveDlg.element.querySelector('.e-mainfilterdiv');\n remove(mainfilterdiv);\n return;\n }\n this.isRowResponsive = false;\n this.isCustomDlgRender = false;\n this.destroyCustomFilterDialog();\n };\n ResponsiveDialogRenderer.prototype.destroyCustomFilterDialog = function () {\n if (!this.customResponsiveDlg) {\n return;\n }\n var elem = document.getElementById(this.customResponsiveDlg.element.id);\n if (this.customResponsiveDlg && !this.customResponsiveDlg.isDestroyed && elem) {\n this.customResponsiveDlg.destroy();\n remove(elem);\n }\n this.closeCustomFilter();\n if (this.action === ResponsiveDialogAction.isSort) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomFilter = function () {\n if (!this.isDialogClose && this.customFilterDlg) {\n var customEle = document.getElementById(this.customFilterDlg.element.id);\n if (this.customFilterDlg && !this.customFilterDlg.isDestroyed && customEle) {\n this.customFilterDlg.destroy();\n remove(customEle);\n }\n }\n this.isCustomDialog = false;\n this.isDialogClose = false;\n };\n ResponsiveDialogRenderer.prototype.removeCustomDlgFilterEle = function (target) {\n if (target) {\n if (target.parentElement.classList.contains('e-filtersetdiv')) {\n remove(target.parentElement);\n }\n else {\n remove(target);\n }\n }\n else {\n var child = this.customColumnDiv.children;\n for (var i = 0; i < child.length; i++) {\n target = child[parseInt(i.toString(), 10)].querySelector('.e-filtersetdiv');\n if (target) {\n remove(target);\n i--;\n }\n }\n }\n };\n ResponsiveDialogRenderer.prototype.keyHandler = function (e) {\n if (e.keyCode === 13 && ((this.action === ResponsiveDialogAction.isFilter\n && e.target.classList.contains('e-searchinput'))\n || (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd))) {\n this.dialogHdrBtnClickHandler();\n }\n };\n ResponsiveDialogRenderer.prototype.editComplate = function (args) {\n if (args.requestType === 'save' || args.requestType === 'cancel') {\n this.parent.off(events.enterKeyHandler, this.keyHandler);\n }\n };\n ResponsiveDialogRenderer.prototype.removeEventListener = function () {\n if (this.customColumnDiv) {\n EventHandler.remove(this.customColumnDiv, 'click', this.customFilterColumnClickHandler);\n }\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.parent.removeEventListener(events.actionComplete, this.onActionCompleteFn);\n };\n return ResponsiveDialogRenderer;\n}());\nexport { ResponsiveDialogRenderer };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { ResponsiveDialogRenderer } from '../renderer/responsive-dialog-renderer';\n/**\n * ServiceLocator\n *\n * @hidden\n */\nvar ServiceLocator = /** @class */ (function () {\n function ServiceLocator() {\n this.services = {};\n }\n ServiceLocator.prototype.register = function (name, type) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n this.services[\"\" + name] = type;\n }\n };\n ServiceLocator.prototype.getService = function (name) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The service \" + name + \" is not registered\";\n }\n return this.services[\"\" + name];\n };\n ServiceLocator.prototype.registerAdaptiveService = function (type, isAdaptiveUI, action) {\n if (isAdaptiveUI) {\n type.responsiveDialogRenderer = new ResponsiveDialogRenderer(type.parent, type.serviceLocator);\n type.responsiveDialogRenderer.action = action;\n }\n else {\n if (type.responsiveDialogRenderer) {\n type.responsiveDialogRenderer.removeEventListener();\n type.responsiveDialogRenderer = undefined;\n }\n }\n };\n return ServiceLocator;\n}());\nexport { ServiceLocator };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { RenderType } from '../base/enum';\n/**\n * RendererFactory\n *\n * @hidden\n */\nvar RendererFactory = /** @class */ (function () {\n function RendererFactory() {\n this.rendererMap = {};\n }\n RendererFactory.prototype.addRenderer = function (name, type) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n this.rendererMap[\"\" + rName] = type;\n }\n };\n RendererFactory.prototype.getRenderer = function (name) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The renderer \" + rName + \" is not found\";\n }\n else {\n return this.rendererMap[\"\" + rName];\n }\n };\n return RendererFactory;\n}());\nexport { RendererFactory };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the paging behavior of the Grid.\n */\nvar PageSettings = /** @class */ (function (_super) {\n __extends(PageSettings, _super);\n function PageSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(12)\n ], PageSettings.prototype, \"pageSize\", void 0);\n __decorate([\n Property(8)\n ], PageSettings.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], PageSettings.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], PageSettings.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"pageSizes\", void 0);\n __decorate([\n Property(null)\n ], PageSettings.prototype, \"template\", void 0);\n return PageSettings;\n}(ChildProperty));\nexport { PageSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the column chooser behavior of the Grid.\n */\nvar ColumnChooserSettings = /** @class */ (function (_super) {\n __extends(ColumnChooserSettings, _super);\n function ColumnChooserSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('startsWith')\n ], ColumnChooserSettings.prototype, \"operator\", void 0);\n __decorate([\n Property(false)\n ], ColumnChooserSettings.prototype, \"ignoreAccent\", void 0);\n return ColumnChooserSettings;\n}(ChildProperty));\nexport { ColumnChooserSettings };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { Browser, EventHandler, createElement } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { remove, closest, select } from '@syncfusion/ej2-base';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { setCssInGridPopUp, getPosition, isGroupAdaptive, addRemoveActiveClasses, removeAddCboxClasses } from '../base/util';\nimport { getCellsByTableName, getCellByColAndRowIndex, parentsUntil, gridActionHandler } from '../base/util';\nimport * as events from '../base/constant';\nimport { RenderType } from '../base/enum';\nimport { iterateExtend, setChecked, isComplexField, getObject } from '../base/util';\nimport { addRemoveEventListener } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * The `Selection` module is used to handle cell and row selection.\n */\nvar Selection = /** @class */ (function () {\n /**\n * Constructor for the Grid selection module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {SelectionSettings} selectionSettings - specifies the selectionsettings\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function Selection(parent, selectionSettings, locator) {\n //Internal letiables\n /**\n * @hidden\n */\n this.selectedRowIndexes = [];\n /**\n * @hidden\n */\n this.selectedRowCellIndexes = [];\n /**\n * @hidden\n */\n this.selectedRecords = [];\n /**\n * @hidden\n */\n this.preventFocus = false;\n /**\n * @hidden\n */\n this.selectedColumnsIndexes = [];\n this.checkBoxState = false;\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n this.enableSelectMultiTouch = false;\n this.clearRowCheck = false;\n this.selectRowCheck = false;\n this.selectedRowState = {};\n this.unSelectedRowState = {};\n this.totalRecordsCount = 0;\n this.chkAllCollec = [];\n this.isCheckedOnAdd = false;\n this.persistSelectedData = [];\n this.deSelectedData = [];\n this.isHdrSelectAllClicked = false;\n this.needColumnSelection = false;\n this.isCancelDeSelect = false;\n this.isPreventCellSelect = false;\n this.disableUI = false;\n this.isPersisted = false;\n this.cmdKeyPressed = false;\n this.cellselected = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n this.initialRowSelection = false;\n this.isPrevRowSelection = false;\n this.isKeyAction = false;\n this.isRowDragSelected = false;\n this.isPartialSelection = false;\n this.rmtHdrChkbxClicked = false;\n this.isCheckboxReset = false;\n /**\n * @hidden\n */\n this.autoFillRLselection = true;\n this.bottom = '0 0 2px 0';\n this.top = '2px 0 0 0';\n /* eslint-disable */\n this.right_bottom = '0 2px 2px 0';\n this.bottom_left = '0 0 2px 2px';\n this.top_right = '2px 2px 0 0';\n this.top_left = '2px 0 0 2px';\n this.top_bottom = '2px 0 2px 0';\n this.top_right_bottom = '2px 2px 2px 0';\n this.top_bottom_left = '2px 0 2px 2px';\n this.top_right_left = '2px 2px 0 2px';\n this.right_bottom_left = '0 2px 2px 2px';\n this.all_border = '2px';\n this.parent = parent;\n this.selectionSettings = selectionSettings;\n this.factory = locator.getService('rendererFactory');\n this.focus = locator.getService('focus');\n this.addEventListener();\n this.wireEvents();\n }\n Selection.prototype.initializeSelection = function () {\n this.parent.log('selection_key_missing');\n this.render();\n };\n /**\n * The function used to trigger onActionBegin\n *\n * @param {Object} args - specifies the args\n * @param {string} type - specifies the type\n * @returns {void}\n * @hidden\n */\n Selection.prototype.onActionBegin = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n };\n Selection.prototype.fDataUpdate = function (args) {\n if (!this.isMultiSelection && (!isNullOrUndefined(args.cellIndex) || !isNullOrUndefined(args.rowIndex))) {\n var rowObj = this.getRowObj(isNullOrUndefined(args.rowIndex) ? isNullOrUndefined(args.cellIndex) ?\n this.currentIndex : args.cellIndex.rowIndex : args.rowIndex);\n args.foreignKeyData = rowObj.foreignKeyData;\n }\n return args;\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {Object} args - specifies the args\n * @param {string} type - specifies the type\n * @returns {void}\n * @hidden\n */\n Selection.prototype.onActionComplete = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n this.isMultiSelection = false;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Selection.prototype.getModuleName = function () {\n return 'selection';\n };\n /**\n * To destroy the selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.hidePopUp();\n this.clearSelection();\n this.removeEventListener();\n this.unWireEvents();\n EventHandler.remove(this.parent.getContent(), 'mousedown', this.mouseDownHandler);\n EventHandler.remove(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler);\n };\n Selection.prototype.isEditing = function () {\n return (this.parent.editSettings.mode === 'Normal' || (this.parent.editSettings.mode === 'Batch' && this.parent.editModule &&\n this.parent.editModule.formObj && !this.parent.editModule.formObj.validate())) &&\n this.parent.isEdit && !this.parent.isPersistSelection;\n };\n Selection.prototype.getSelectedMovableRow = function (index) {\n var gObj = this.parent;\n if (gObj.isFrozenGrid() && this.parent.getContent().querySelector('.' + literals.movableContent)) {\n return gObj.getMovableRowByIndex(index);\n }\n return null;\n };\n Selection.prototype.getSelectedFrozenRightRow = function (index) {\n var gObj = this.parent;\n if (gObj.isFrozenGrid() && gObj.getFrozenMode() === literals.leftRight && gObj.getFrozenRightContent()) {\n return gObj.getFrozenRightRowByIndex(index);\n }\n return null;\n };\n Selection.prototype.getCurrentBatchRecordChanges = function () {\n var gObj = this.parent;\n if (gObj.editSettings.mode === 'Batch' && gObj.editModule) {\n var currentRecords = iterateExtend(this.parent.getCurrentViewRecords());\n currentRecords = gObj.editSettings.newRowPosition === 'Bottom' ?\n currentRecords.concat(this.parent.editModule.getBatchChanges()[literals.addedRecords]) :\n this.parent.editModule.getBatchChanges()[literals.addedRecords].concat(currentRecords);\n var deletedRecords = this.parent.editModule.getBatchChanges()[literals.deletedRecords];\n var primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < (deletedRecords.length); i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (deletedRecords[parseInt(i.toString(), 10)][\"\" + primaryKey] === currentRecords[parseInt(j.toString(), 10)][\"\" + primaryKey]) {\n currentRecords.splice(j, 1);\n break;\n }\n }\n }\n return currentRecords;\n }\n else {\n return gObj.getCurrentViewRecords();\n }\n };\n /**\n * Selects a row by the given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Selection.prototype.selectRow = function (index, isToggle) {\n if (this.selectedRowIndexes.length && this.selectionSettings.enableSimpleMultiRowSelection) {\n this.addRowsToSelection([index]);\n return;\n }\n var gObj = this.parent;\n var selectedRow = gObj.getRowByIndex(index);\n var rowObj = selectedRow && gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid'));\n if (this.isPartialSelection && rowObj && rowObj.isDataRow && !rowObj.isSelectable) {\n return;\n }\n var selectedMovableRow = this.getSelectedMovableRow(index);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(index);\n var selectData;\n var isRemoved = false;\n if (gObj.enableVirtualization && index > -1) {\n var e = { selectedIndex: index, isAvailable: true };\n this.parent.notify(events.selectVirtualRow, e);\n var frozenData = gObj.isFrozenGrid() ? gObj.contentModule.getRowObjectByIndex(index)\n : null;\n if (selectedRow && (gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')) || frozenData)) {\n selectData = frozenData ? frozenData : gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')).data;\n }\n else {\n if (e.isAvailable && !gObj.selectionSettings.persistSelection) {\n var prevSelectedData = this.parent.getSelectedRecords();\n if (prevSelectedData.length > 0) {\n this.clearRowSelection();\n }\n }\n return;\n }\n }\n else {\n selectData = this.getRowObj(index).data;\n }\n if (!this.isRowType() || !selectedRow || this.isEditing()) {\n // if (this.isEditing()) {\n // gObj.selectedRowIndex = index;\n // }\n return;\n }\n var isRowSelected = selectedRow.hasAttribute('aria-selected');\n this.activeTarget();\n isToggle = !isToggle ? isToggle :\n !this.selectedRowIndexes.length ? false :\n (this.selectedRowIndexes.length === 1 ? (this.isKeyAction && this.parent.isCheckBoxSelection ?\n false : index === this.selectedRowIndexes[0]) : false);\n this.isKeyAction = false;\n var args;\n var can = 'cancel';\n if (!isToggle) {\n args = {\n data: selectData, rowIndex: index, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest, row: selectedRow,\n previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can));\n }\n else {\n this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can)(args);\n }\n };\n Selection.prototype.rowSelectingCallBack = function (args, isToggle, index, selectData, isRemoved, isRowSelected, can) {\n var _this = this;\n return function (args) {\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n _this.disableInteracted();\n return;\n }\n _this.index = index;\n _this.toggle = isToggle;\n _this.data = selectData;\n _this.removed = isRemoved;\n if (isRowSelected && _this.selectionSettings.persistSelection && !(_this.selectionSettings.checkboxMode === 'ResetOnRowClick')) {\n _this.clearSelectedRow(index);\n _this.selectRowCallBack();\n }\n else if (!isRowSelected && _this.selectionSettings.persistSelection &&\n _this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n _this.selectRowCallBack();\n }\n if (_this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n _this.isCheckboxReset = true;\n _this.clearSelection();\n }\n if (!_this.selectionSettings.persistSelection || _this.selectionSettings.checkboxMode === 'ResetOnRowClick' ||\n (!_this.parent.isCheckBoxSelection && _this.selectionSettings.persistSelection)) {\n _this.selectRowCheck = true;\n _this.clearRow();\n }\n };\n };\n Selection.prototype.selectRowCallBack = function () {\n var gObj = this.parent;\n var args;\n var index = this.index;\n var isToggle = this.toggle;\n var selectData = this.data;\n var isRemoved = this.removed;\n var selectedRow = gObj.getRowByIndex(index);\n var selectedMovableRow = this.getSelectedMovableRow(index);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(index);\n if (!isToggle && !isRemoved) {\n if (this.selectedRowIndexes.indexOf(index) <= -1) {\n this.updateRowSelection(selectedRow, index);\n this.selectMovableRow(selectedMovableRow, selectedFrozenRightRow, index);\n }\n this.selectRowIndex(index);\n }\n if (!isToggle) {\n args = {\n data: selectData, rowIndex: index,\n row: selectedRow, previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, isInteracted: this.isInteracted,\n isHeaderCheckBoxClicked: this.isHeaderCheckboxClicked, rowIndexes: index\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.onActionComplete(args, events.rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(index);\n };\n Selection.prototype.selectMovableRow = function (selectedMovableRow, selectedFrozenRightRow, index) {\n if (this.parent.isFrozenGrid()) {\n this.updateRowSelection(selectedMovableRow, index);\n if (this.parent.getFrozenMode() === literals.leftRight && selectedFrozenRightRow) {\n this.updateRowSelection(selectedFrozenRightRow, index);\n }\n }\n };\n Selection.prototype.addMovableArgs = function (targetObj, mRow, frRow) {\n if (this.parent.isFrozenGrid()) {\n var mObj = { mRow: mRow, previousMovRow: this.parent.getMovableRows()[this.prevRowIndex] };\n var frozenRightRow = 'frozenRightRow';\n var previousFrozenRightRow = 'previousFrozenRightRow';\n if (this.parent.getFrozenMode() === literals.leftRight && frRow) {\n mObj[\"\" + frozenRightRow] = frRow;\n mObj[\"\" + previousFrozenRightRow] = this.parent.getFrozenRightDataRows()[this.prevRowIndex];\n }\n targetObj = __assign({}, targetObj, mObj);\n }\n return targetObj;\n };\n /**\n * Selects a range of rows from start and end row indexes.\n *\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n * @returns {void}\n */\n Selection.prototype.selectRowsByRange = function (startIndex, endIndex) {\n this.selectRows(this.getCollectionFromIndexes(startIndex, endIndex));\n this.selectRowIndex(endIndex);\n };\n Selection.prototype.selectedDataUpdate = function (selectedData, foreignKeyData, selectedRows, rowIndexes, selectableRowIndex) {\n for (var i = 0, len = rowIndexes.length; i < len; i++) {\n var currentRow = this.parent.getDataRows()[rowIndexes[parseInt(i.toString(), 10)]];\n if (this.parent.enableVirtualization) {\n currentRow = this.parent.getRowByIndex(rowIndexes[parseInt(i.toString(), 10)]);\n }\n var rowObj = this.getRowObj(currentRow);\n if (rowObj && rowObj.isDataRow && rowObj.isSelectable) {\n selectedData.push(rowObj.data);\n selectedRows.push(currentRow);\n foreignKeyData.push(rowObj.foreignKeyData);\n }\n else {\n if (this.isPartialSelection && selectableRowIndex) {\n selectableRowIndex.splice(selectableRowIndex.indexOf(rowIndexes[parseInt(i.toString(), 10)]), 1);\n }\n }\n }\n };\n /**\n * Selects a collection of rows by index.\n *\n * @param {number[]} rowIndexes - Specifies an array of row indexes.\n * @returns {void}\n */\n Selection.prototype.selectRows = function (rowIndexes) {\n var _this = this;\n var gObj = this.parent;\n var selectableRowIndex = rowIndexes.slice();\n var rowIndex = !this.isSingleSel() ? rowIndexes[0] : rowIndexes[rowIndexes.length - 1];\n this.isMultiSelection = true;\n var selectedRows = [];\n var foreignKeyData = [];\n var selectedMovableRow = this.getSelectedMovableRow(rowIndex);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(rowIndex);\n var can = 'cancel';\n var selectedData = [];\n if (!this.isRowType() || this.isEditing()) {\n return;\n }\n this.selectedDataUpdate(selectedData, foreignKeyData, selectedRows, rowIndexes, selectableRowIndex);\n this.activeTarget();\n var args = {\n cancel: false,\n rowIndexes: selectableRowIndex, row: selectedRows, rowIndex: rowIndex, target: this.actualTarget,\n prevRow: gObj.getRows()[this.prevRowIndex], previousRowIndex: this.prevRowIndex,\n isInteracted: this.isInteracted, isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n data: selectedData, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), function (args) {\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n _this.disableInteracted();\n return;\n }\n _this.clearRow();\n _this.selectRowIndex(selectableRowIndex.slice(-1)[0]);\n var selectRowFn = function (index, preventFocus) {\n _this.updateRowSelection(gObj.getRowByIndex(index), index, preventFocus);\n if (gObj.isFrozenGrid()) {\n var rightEle = _this.parent.getFrozenMode() === literals.leftRight ? gObj.getFrozenRightRowByIndex(index)\n : undefined;\n _this.selectMovableRow(gObj.getMovableRowByIndex(index), rightEle, index);\n }\n _this.updateRowProps(rowIndex);\n };\n if (!_this.isSingleSel()) {\n for (var _i = 0, selectableRowIndex_1 = selectableRowIndex; _i < selectableRowIndex_1.length; _i++) {\n var rowIdx = selectableRowIndex_1[_i];\n selectRowFn(rowIdx, gObj.enableVirtualization ? true : false);\n }\n }\n else {\n selectRowFn(rowIndex);\n }\n args = {\n rowIndexes: selectableRowIndex, row: selectedRows, rowIndex: rowIndex, target: _this.actualTarget,\n prevRow: gObj.getRows()[_this.prevRowIndex], previousRowIndex: _this.prevRowIndex,\n data: _this.getSelectedRecords(), isInteracted: _this.isInteracted,\n isHeaderCheckboxClicked: _this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n args = _this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n if (_this.isRowSelected) {\n _this.onActionComplete(args, events.rowSelected);\n }\n _this.isInteracted = false;\n });\n };\n /**\n * Select rows with existing row selection by passing row indexes.\n *\n * @param {number} rowIndexes - Specifies the row indexes.\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addRowsToSelection = function (rowIndexes) {\n var gObj = this.parent;\n var can = 'cancel';\n var target = this.target;\n this.isMultiSelection = true;\n var selectedRows = [];\n var foreignKeyData = [];\n var selectedData = [];\n var indexes = gObj.getSelectedRowIndexes().concat(rowIndexes);\n var selectedRow = !this.isSingleSel() ? gObj.getRowByIndex(rowIndexes[0]) :\n gObj.getRowByIndex(rowIndexes[rowIndexes.length - 1]);\n var selectedMovableRow = !this.isSingleSel() ? this.getSelectedMovableRow(rowIndexes[0]) :\n this.getSelectedMovableRow(rowIndexes[rowIndexes.length - 1]);\n var selectedFrozenRightRow = !this.isSingleSel() ? this.getSelectedFrozenRightRow(rowIndexes[0]) :\n this.getSelectedFrozenRightRow(rowIndexes[rowIndexes.length - 1]);\n if ((!this.isRowType() || this.isEditing()) && !this.selectionSettings.checkboxOnly) {\n return;\n }\n var args;\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (this.isMultiCtrlRequest && !checkboxColumn.length) {\n this.selectedDataUpdate(selectedData, foreignKeyData, selectedRows, indexes);\n }\n for (var _i = 0, rowIndexes_1 = rowIndexes; _i < rowIndexes_1.length; _i++) {\n var rowIndex = rowIndexes_1[_i];\n var rowObj = this.getRowObj(rowIndex);\n var isUnSelected = this.selectedRowIndexes.indexOf(rowIndex) > -1;\n if (this.isPartialSelection && rowObj && rowObj.isDataRow && !rowObj.isSelectable) {\n continue;\n }\n this.selectRowIndex(rowIndex);\n if (isUnSelected && ((checkboxColumn.length ? true : this.selectionSettings.enableToggle) || this.isMultiCtrlRequest)) {\n this.isAddRowsToSelection = true;\n this.rowDeselect(events.rowDeselecting, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target);\n if (this.isCancelDeSelect) {\n return;\n }\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(rowIndex), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedRow), 1);\n this.selectRowIndex(this.selectedRowIndexes.length ? this.selectedRowIndexes[this.selectedRowIndexes.length - 1] : -1);\n selectedRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedRow, false, null, 'e-selectionbackground', 'e-active');\n if (selectedMovableRow) {\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedMovableRow), 1);\n selectedMovableRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedMovableRow, false, null, 'e-selectionbackground', 'e-active');\n }\n if (selectedFrozenRightRow) {\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedFrozenRightRow), 1);\n selectedFrozenRightRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedFrozenRightRow, false, null, 'e-selectionbackground', 'e-active');\n }\n this.rowDeselect(events.rowDeselected, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target, [selectedMovableRow], undefined, [selectedFrozenRightRow]);\n this.isInteracted = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n this.isHdrSelectAllClicked = false;\n }\n else {\n this.activeTarget();\n args = {\n cancel: false,\n data: selectedData.length ? selectedData : rowObj.data, rowIndex: rowIndex, row: selectedRows.length ? selectedRows :\n selectedRow, target: this.actualTarget, prevRow: gObj.getRows()[this.prevRowIndex],\n previousRowIndex: this.prevRowIndex, isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n foreignKeyData: foreignKeyData.length ? foreignKeyData : rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args));\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n this.disableInteracted();\n return;\n }\n if (this.isSingleSel()) {\n this.clearRow();\n }\n this.updateRowSelection(selectedRow, rowIndex);\n this.selectMovableRow(selectedMovableRow, selectedFrozenRightRow, rowIndex);\n }\n if (!isUnSelected) {\n args = {\n data: selectedData.length ? selectedData : rowObj.data, rowIndex: rowIndex, row: selectedRows.length ? selectedRows :\n selectedRow, target: this.actualTarget, prevRow: gObj.getRows()[this.prevRowIndex],\n previousRowIndex: this.prevRowIndex, foreignKeyData: foreignKeyData.length ? foreignKeyData : rowObj.foreignKeyData,\n isInteracted: this.isInteracted, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.onActionComplete(args, events.rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(rowIndex);\n if (this.isSingleSel()) {\n break;\n }\n }\n };\n Selection.prototype.getCollectionFromIndexes = function (startIndex, endIndex) {\n var indexes = [];\n // eslint-disable-next-line prefer-const\n var _a = (startIndex <= endIndex) ?\n { i: startIndex, max: endIndex } : { i: endIndex, max: startIndex }, i = _a.i, max = _a.max;\n for (; i <= max; i++) {\n indexes.push(i);\n }\n if (startIndex > endIndex) {\n indexes.reverse();\n }\n return indexes;\n };\n Selection.prototype.clearRow = function () {\n this.clearRowCheck = true;\n this.clearRowSelection();\n };\n Selection.prototype.clearRowCallBack = function () {\n if (this.isCancelDeSelect && this.parent.checkAllRows !== 'Check') {\n return;\n }\n this.selectedRowIndexes = [];\n this.selectedRecords = [];\n this.selectRowIndex(-1);\n if (this.isSingleSel() && this.parent.isPersistSelection) {\n this.selectedRowState = {};\n }\n };\n Selection.prototype.clearSelectedRow = function (index) {\n if (this.toggle) {\n var selectedEle = this.parent.getRowByIndex(index);\n if (!this.disableUI) {\n selectedEle.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedEle, false, true, 'e-selectionbackground', 'e-active');\n }\n this.removed = true;\n this.updatePersistCollection(selectedEle, false);\n this.updateCheckBoxes(selectedEle);\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(index), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(this.parent.getRowByIndex(index)), 1);\n }\n };\n Selection.prototype.updateRowProps = function (startIndex) {\n this.prevRowIndex = startIndex;\n this.isRowSelected = this.selectedRowIndexes.length && true;\n };\n Selection.prototype.getPkValue = function (pkField, data) {\n return pkField ? isComplexField(pkField) ? getObject(pkField, data) : data[\"\" + pkField] : data[\"\" + pkField];\n };\n Selection.prototype.updatePersistCollection = function (selectedRow, chkState) {\n var _this = this;\n if ((this.parent.isPersistSelection || this.parent.selectionSettings.persistSelection &&\n this.parent.getPrimaryKeyFieldNames().length > 0) && !isNullOrUndefined(selectedRow)) {\n if (!this.parent.isPersistSelection) {\n this.ensureCheckboxFieldSelection();\n }\n var rowObj = this.getRowObj(selectedRow);\n var pKey_1 = rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null;\n if (pKey_1 === null) {\n return;\n }\n rowObj.isSelected = chkState;\n if ((chkState && !this.isPartialSelection) || (this.isPartialSelection && rowObj.isSelectable && rowObj.isSelected)) {\n this.selectedRowState[\"\" + pKey_1] = chkState;\n delete (this.unSelectedRowState[\"\" + pKey_1]);\n if (!this.persistSelectedData.some(function (data) { return _this.getPkValue(_this.primaryKey, data) === pKey_1; })) {\n this.persistSelectedData.push(rowObj.data);\n }\n }\n else {\n this.updatePersistDelete(pKey_1);\n }\n }\n };\n Selection.prototype.updatePersistDelete = function (pKey, isPartialSelection) {\n var _this = this;\n delete (this.selectedRowState[\"\" + pKey]);\n if (this.rmtHdrChkbxClicked) {\n this.unSelectedRowState[\"\" + pKey] = true;\n }\n var index;\n var isPresent = this.persistSelectedData.some(function (data, i) {\n index = i;\n return _this.getPkValue(_this.primaryKey, data) === pKey;\n });\n if (isPresent) {\n this.persistSelectedData.splice(index, 1);\n if (isPartialSelection) {\n this.parent.partialSelectedRecords.splice(index, 1);\n }\n }\n };\n Selection.prototype.updateCheckBoxes = function (row, chkState, rowIndex) {\n if (!isNullOrUndefined(row)) {\n var chkBox = row.querySelector('.e-checkselect');\n if (!isNullOrUndefined(chkBox)) {\n removeAddCboxClasses(chkBox.nextElementSibling, chkState);\n setChecked(chkBox, chkState);\n if (isNullOrUndefined(this.checkedTarget) || (!isNullOrUndefined(this.checkedTarget)\n && !this.checkedTarget.classList.contains('e-checkselectall'))) {\n this.setCheckAllState(rowIndex);\n }\n }\n }\n };\n Selection.prototype.updateRowSelection = function (selectedRow, startIndex, preventFocus) {\n if (!selectedRow) {\n return;\n }\n this.selectedRowIndexes.push(startIndex);\n var len = this.selectedRowIndexes.length;\n if (this.parent.isFrozenGrid() && len > 1) {\n if ((this.selectedRowIndexes[len - 2] === this.selectedRowIndexes[len - 1])) {\n this.selectedRowIndexes.pop();\n }\n }\n this.selectedRecords.push(selectedRow);\n selectedRow.setAttribute('aria-selected', 'true');\n this.updatePersistCollection(selectedRow, true);\n this.updateCheckBoxes(selectedRow, true);\n this.addRemoveClassesForRow(selectedRow, true, null, 'e-selectionbackground', 'e-active');\n if (!this.preventFocus) {\n var target = this.focus.getPrevIndexes().cellIndex ?\n selectedRow.cells[this.focus.getPrevIndexes().cellIndex] :\n selectedRow.querySelector('.e-selectionbackground:not(.e-hide):not(.e-detailrowcollapse):not(.e-detailrowexpand)');\n if (this.parent.contextMenuModule && this.mouseButton === 2) {\n target = this.parent.contextMenuModule.cell;\n }\n if (!target || preventFocus) {\n return;\n }\n this.focus.onClick({ target: target }, true);\n }\n };\n /**\n * Deselects the currently selected rows and cells.\n *\n * @returns {void}\n */\n Selection.prototype.clearSelection = function () {\n this.checkSelectAllClicked = true;\n if (this.selectionSettings.persistSelection && this.persistSelectedData.length) {\n this.deSelectedData = iterateExtend(this.persistSelectedData);\n }\n if (!this.parent.isPersistSelection || (this.parent.isPersistSelection && !this.parent.isEdit) ||\n (!isNullOrUndefined(this.checkedTarget) && this.checkedTarget.classList.contains('e-checkselectall'))) {\n var span = this.parent.element.querySelector('.e-gridpopup').querySelector('span');\n if (span.classList.contains('e-rowselect')) {\n span.classList.remove('e-spanclicked');\n }\n if (this.parent.isPersistSelection) {\n this.persistSelectedData = [];\n this.selectedRowState = {};\n }\n this.clearRowSelection();\n this.clearCellSelection();\n this.clearColumnSelection();\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevECIdxs = undefined;\n this.enableSelectMultiTouch = false;\n this.isInteracted = false;\n this.checkSelectAllClicked = false;\n this.isHdrSelectAllClicked = false;\n }\n };\n /**\n * Deselects the currently selected rows.\n *\n * @returns {void}\n */\n Selection.prototype.clearRowSelection = function () {\n var _this = this;\n if (this.isRowSelected) {\n var gObj = this.parent;\n var rows_1 = this.parent.getDataRows();\n var data_1 = [];\n var row_1 = [];\n var mRow_1 = [];\n var fRightRow_1 = [];\n var rowIndex_1 = [];\n var foreignKeyData_1 = [];\n var target_1 = this.target;\n for (var i = 0, len = this.selectedRowIndexes.length; i < len; i++) {\n var currentRow = this.parent.editSettings.mode === 'Batch' ?\n this.parent.getRows()[this.selectedRowIndexes[parseInt(i.toString(), 10)]]\n : this.parent.getDataRows()[this.selectedRowIndexes[parseInt(i.toString(), 10)]];\n var rowObj = this.getRowObj(currentRow);\n if (rowObj) {\n data_1.push(rowObj.data);\n row_1.push(currentRow);\n rowIndex_1.push(this.selectedRowIndexes[parseInt(i.toString(), 10)]);\n foreignKeyData_1.push(rowObj.foreignKeyData);\n }\n if (gObj.isFrozenGrid()) {\n var mRows = gObj.getMovableRows();\n if (mRows && mRows.length) {\n mRow_1.push(mRows[this.selectedRowIndexes[parseInt(i.toString(), 10)]]);\n }\n if (gObj.getFrozenMode() === literals.leftRight) {\n var frRows = gObj.getFrozenRightRows();\n if (frRows && frRows.length) {\n fRightRow_1.push(frRows[this.selectedRowIndexes[parseInt(i.toString(), 10)]]);\n }\n }\n }\n }\n if (this.selectionSettings.persistSelection && this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n this.isRowClicked = this.checkSelectAllClicked ? true : false;\n }\n this.rowDeselect(events.rowDeselecting, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, mRow_1, function () {\n if (_this.isCancelDeSelect && (_this.isRowClicked || _this.checkSelectAllClicked || (_this.isInteracted &&\n !_this.parent.isPersistSelection))) {\n if (_this.parent.isPersistSelection) {\n if (_this.getCheckAllStatus(_this.parent.element.querySelector('.e-checkselectall')) === 'Intermediate') {\n for (var i = 0; i < _this.selectedRecords.length; i++) {\n _this.updatePersistCollection(_this.selectedRecords[parseInt(i.toString(), 10)], true);\n }\n }\n else {\n _this.parent.checkAllRows = 'Check';\n _this.updatePersistSelectedData(true);\n }\n }\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n return;\n }\n var element = [].slice.call(rows_1.filter(function (record) { return record.hasAttribute('aria-selected'); }));\n for (var j = 0; j < element.length; j++) {\n if (!_this.disableUI) {\n element[parseInt(j.toString(), 10)].removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(element[parseInt(j.toString(), 10)], false, true, 'e-selectionbackground', 'e-active');\n }\n // tslint:disable-next-line:align\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(element[parseInt(j.toString(), 10)], false);\n }\n _this.updateCheckBoxes(element[parseInt(j.toString(), 10)]);\n }\n for (var i = 0, len = _this.selectedRowIndexes.length; i < len; i++) {\n var movableRow = _this.getSelectedMovableRow(_this.selectedRowIndexes[parseInt(i.toString(), 10)]);\n if (movableRow) {\n if (!_this.disableUI) {\n movableRow.removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(movableRow, false, true, 'e-selectionbackground', 'e-active');\n }\n _this.updateCheckBoxes(movableRow);\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(movableRow, false);\n }\n }\n var frRow = _this.getSelectedFrozenRightRow(_this.selectedRowIndexes[parseInt(i.toString(), 10)]);\n if (frRow) {\n if (!_this.disableUI) {\n frRow.removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(frRow, false, true, 'e-selectionbackground', 'e-active');\n }\n _this.updateCheckBoxes(frRow);\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(frRow, false);\n }\n }\n }\n _this.selectedRowIndexes = [];\n _this.selectedRecords = [];\n _this.isRowSelected = false;\n _this.selectRowIndex(-1);\n _this.isPrevRowSelection = false;\n _this.rowDeselect(events.rowDeselected, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, mRow_1, undefined, fRightRow_1);\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n }, fRightRow_1);\n }\n else {\n if (this.clearRowCheck) {\n this.clearRowCallBack();\n this.clearRowCheck = false;\n if (this.selectRowCheck) {\n this.selectRowCallBack();\n this.selectRowCheck = false;\n }\n }\n }\n };\n Selection.prototype.rowDeselect = function (type, rowIndex, data, row, foreignKeyData, target, mRow, rowDeselectCallBack, frozenRightRow) {\n var _this = this;\n if ((this.selectionSettings.persistSelection && (this.isRowClicked || this.checkSelectAllClicked || (this.focus['activeKey'] &&\n this.focus.currentInfo.element.classList.contains('e-gridchkbox') && this.focus['activeKey'] === 'space'))) ||\n !this.selectionSettings.persistSelection) {\n var cancl_1 = 'cancel';\n var isSingleDeSel = rowIndex.length === 1 && this.deSelectedData.length === 1;\n var rowDeselectObj = {\n rowIndex: rowIndex[0], data: this.selectionSettings.persistSelection && (this.parent.checkAllRows === 'Uncheck' &&\n !isSingleDeSel) && this.selectionSettings.checkboxMode !== 'ResetOnRowClick' ? this.deSelectedData : data,\n foreignKeyData: foreignKeyData, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n if (type === 'rowDeselected') {\n delete rowDeselectObj.cancel;\n }\n var rowInString = 'row';\n var target_2 = 'target';\n var rowidx = 'rowIndex';\n var rowidxex = 'rowIndexes';\n var dataTxt = 'data';\n var foreignKey = 'foreignKeyData';\n rowDeselectObj[\"\" + rowInString] = row;\n rowDeselectObj[\"\" + target_2] = this.actualTarget;\n var isHeaderCheckBxClick = this.actualTarget && !isNullOrUndefined(closest(this.actualTarget, 'thead'));\n if (isHeaderCheckBxClick || rowIndex.length > 1) {\n rowDeselectObj[\"\" + rowidx] = rowIndex[0];\n rowDeselectObj[\"\" + rowidxex] = rowIndex;\n }\n else if (rowIndex.length === 1) {\n rowDeselectObj[\"\" + dataTxt] = rowDeselectObj[\"\" + dataTxt][0];\n rowDeselectObj[\"\" + rowInString] = rowDeselectObj[\"\" + rowInString][0];\n rowDeselectObj[\"\" + foreignKey] = rowDeselectObj[\"\" + foreignKey][0];\n if (this.isAddRowsToSelection) {\n rowDeselectObj[\"\" + rowidxex] = rowIndex;\n }\n }\n this.parent.trigger(type, this.parent.isFrozenGrid() ? __assign({}, rowDeselectObj, { mRow: mRow, frozenRightRow: frozenRightRow }) : rowDeselectObj, function (args) {\n _this.isCancelDeSelect = args[\"\" + cancl_1];\n if (!_this.isCancelDeSelect || (!_this.isRowClicked && !_this.isInteracted && !_this.checkSelectAllClicked)) {\n _this.updatePersistCollection(row[0], false);\n _this.updateCheckBoxes(row[0], undefined, rowIndex[0]);\n if (mRow) {\n _this.updateCheckBoxes(mRow[0], undefined, rowIndex[0]);\n }\n if (frozenRightRow) {\n _this.updateCheckBoxes(frozenRightRow[0], undefined, rowIndex[0]);\n }\n }\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n });\n }\n else if (this.selectionSettings.persistSelection && !this.isInteracted) {\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n }\n };\n Selection.prototype.getRowObj = function (row) {\n if (row === void 0) { row = this.currentIndex; }\n if (isNullOrUndefined(row)) {\n return {};\n }\n if (typeof row === 'number') {\n row = this.parent.getRowByIndex(row);\n }\n if (row) {\n return this.parent.getRowObjectFromUID(row.getAttribute('data-uid')) || {};\n }\n return {};\n };\n Selection.prototype.getSelectedMovableCell = function (cellIndex) {\n var gObj = this.parent;\n var col = gObj.getColumnByIndex(cellIndex.cellIndex);\n var frzCols = gObj.isFrozenGrid();\n if (frzCols) {\n if (col.getFreezeTableName() === 'movable') {\n return gObj.getMovableCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n return null;\n }\n return null;\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Selection.prototype.selectCell = function (cellIndex, isToggle) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(cellIndex);\n var args;\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n this.currentIndex = cellIndex.rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (!this.isCellType() || !selectedCell || this.isEditing()) {\n return;\n }\n var isCellSelected = selectedCell.classList.contains('e-cellselectionbackground');\n isToggle = !isToggle ? isToggle : (!isUndefined(this.prevCIdxs) &&\n cellIndex.rowIndex === this.prevCIdxs.rowIndex && cellIndex.cellIndex === this.prevCIdxs.cellIndex &&\n isCellSelected);\n if (!isToggle) {\n args = {\n data: selectedData, cellIndex: cellIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ?\n this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined,\n cancel: false\n };\n var currentCell = 'currentCell';\n args[\"\" + currentCell] = selectedCell;\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData));\n this.cellselected = true;\n }\n else {\n this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData)(args);\n }\n };\n Selection.prototype.successCallBack = function (cellSelectingArgs, isToggle, cellIndex, selectedCell, selectedData) {\n var _this = this;\n return function (cellSelectingArgs) {\n var cncl = 'cancel';\n var currentCell = 'currentCell';\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[\"\" + cncl] === true) {\n return;\n }\n if (!isToggle) {\n cellSelectingArgs[\"\" + currentCell] = cellSelectingArgs[\"\" + currentCell] ? cellSelectingArgs[\"\" + currentCell] : selectedCell;\n }\n _this.clearCell();\n if (!isToggle) {\n _this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isToggle) {\n var args = {\n data: selectedData, cellIndex: cellIndex, currentCell: selectedCell,\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ?\n _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = _this.prevECIdxs;\n _this.updateCellProps(cellIndex, cellIndex);\n _this.onActionComplete(args, events.cellSelected);\n }\n };\n };\n Selection.prototype.getCellIndex = function (rIdx, cIdx) {\n return (this.parent.getFrozenColumns() ? (cIdx >= this.parent.getFrozenColumns() ? this.parent.getMovableCellFromIndex(rIdx, cIdx)\n : this.parent.getCellFromIndex(rIdx, cIdx)) : this.parent.getCellFromIndex(rIdx, cIdx));\n };\n /**\n * Selects a range of cells from start and end indexes.\n *\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n * @returns {void}\n */\n Selection.prototype.selectCellsByRange = function (startIndex, endIndex) {\n var _this = this;\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(startIndex);\n var frzCols = gObj.getFrozenColumns();\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(startIndex.rowIndex, startIndex.cellIndex);\n }\n var min;\n var max;\n var stIndex = startIndex;\n var edIndex = endIndex = endIndex ? endIndex : startIndex;\n var cellIndexes;\n this.currentIndex = startIndex.rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var args = {\n data: selectedData, cellIndex: startIndex, currentCell: selectedCell,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), function (cellSelectingArgs) {\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[\"\" + cncl] === true) {\n return;\n }\n _this.clearCell();\n if (startIndex.rowIndex > endIndex.rowIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex.rowIndex; i <= endIndex.rowIndex; i++) {\n if (_this.selectionSettings.cellSelectionMode.indexOf('Box') < 0) {\n min = i === startIndex.rowIndex ? (startIndex.cellIndex) : 0;\n max = i === endIndex.rowIndex ? (endIndex.cellIndex) : _this.getLastColIndex(i);\n }\n else {\n min = startIndex.cellIndex;\n max = endIndex.cellIndex;\n }\n cellIndexes = [];\n for (var j = min < max ? min : max, len = min > max ? min : max; j <= len; j++) {\n if (frzCols) {\n if (j < frzCols) {\n selectedCell = gObj.getCellFromIndex(i, j);\n }\n else {\n selectedCell = gObj.getMovableCellFromIndex(i, j);\n }\n }\n else {\n selectedCell = gObj.getCellFromIndex(i, j);\n }\n if (!selectedCell) {\n continue;\n }\n cellIndexes.push(j);\n _this.updateCellSelection(selectedCell);\n _this.addAttribute(selectedCell);\n }\n _this.selectedRowCellIndexes.push({ rowIndex: i, cellIndexes: cellIndexes });\n }\n var cellSelectedArgs = {\n data: selectedData, cellIndex: edIndex, currentCell: gObj.getCellFromIndex(edIndex.rowIndex, edIndex.cellIndex),\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ? _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[\"\" + previousRowCellIndex] = _this.prevECIdxs;\n if (!_this.isDragged) {\n _this.onActionComplete(cellSelectedArgs, events.cellSelected);\n _this.cellselected = true;\n }\n _this.updateCellProps(stIndex, edIndex);\n });\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n * @returns {void}\n */\n Selection.prototype.selectCells = function (rowCellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(rowCellIndexes[0]);\n var frzCols = gObj.getFrozenColumns();\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[0].rowIndex, rowCellIndexes[0].cellIndexes[0]);\n }\n this.currentIndex = rowCellIndexes[0].rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var cellSelectArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectArgs[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.onActionBegin(cellSelectArgs, events.cellSelecting);\n for (var i = 0, len = rowCellIndexes.length; i < len; i++) {\n for (var j = 0, cellLen = rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes.length; j < cellLen; j++) {\n if (frzCols) {\n if (rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)] < frzCols) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[parseInt(i.toString(), 10)].rowIndex, rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]);\n }\n else {\n selectedCell = gObj.getMovableCellFromIndex(rowCellIndexes[parseInt(i.toString(), 10)].rowIndex, rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]);\n }\n }\n else {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[parseInt(i.toString(), 10)].rowIndex, rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]);\n }\n if (!selectedCell) {\n continue;\n }\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n this.addRowCellIndex({ rowIndex: rowCellIndexes[parseInt(i.toString(), 10)].rowIndex,\n cellIndex: rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)] });\n }\n }\n this.updateCellProps({ rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] }, { rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] });\n var cellSelectedArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, selectedRowCellIndex: this.selectedRowCellIndexes,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var prvRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[\"\" + prvRowCellIndex] = this.prevECIdxs;\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n };\n /**\n * Select cells with existing cell selection by passing row and column index.\n *\n * @param {IIndex} cellIndexes - Defines the collection of row and column index.\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addCellsToSelection = function (cellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell;\n var index;\n this.currentIndex = cellIndexes[0].rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n this.hideAutoFill();\n var col = gObj.getColumnByIndex(cellIndexes[0].cellIndex);\n var rowObj;\n gridActionHandler(this.parent, function (tableName, rows) {\n rowObj = rows[cellIndexes[0].rowIndex];\n }, [\n !col.getFreezeTableName() || col.getFreezeTableName() === literals.frozenLeft ? gObj.getRowsObject() : [],\n col.getFreezeTableName() === 'movable' ? gObj.getMovableRowsObject() : [],\n col.getFreezeTableName() === literals.frozenRight ? gObj.getFrozenRightRowsObject() : []\n ]);\n if (gObj.groupSettings.columns.length > 0) {\n rowObj = gObj.getRowObjectFromUID(this.target.parentElement.getAttribute('data-uid'));\n }\n var foreignKeyData = [];\n for (var _i = 0, cellIndexes_1 = cellIndexes; _i < cellIndexes_1.length; _i++) {\n var cellIndex = cellIndexes_1[_i];\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[parseInt(i.toString(), 10)].rowIndex === cellIndex.rowIndex) {\n index = i;\n break;\n }\n }\n selectedCell = this.getSelectedMovableCell(cellIndex);\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n var idx = col.getFreezeTableName() === 'movable' ? cellIndex.cellIndex - left\n : col.getFreezeTableName() === literals.frozenRight ? cellIndex.cellIndex - (left + movable) : cellIndex.cellIndex;\n if (gObj.groupSettings.columns.length > 0) {\n foreignKeyData.push(rowObj.cells[idx + gObj.groupSettings.columns.length].foreignKeyData);\n }\n else {\n foreignKeyData.push(rowObj.cells[parseInt(idx.toString(), 10)].foreignKeyData);\n }\n var args = {\n cancel: false, data: selectedData, cellIndex: cellIndexes[0],\n isShiftPressed: this.isMultiShiftRequest,\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n previousRowCell: this.prevECIdxs ?\n gObj.getCellFromIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var prvRowCellIndex = 'previousRowCellIndex';\n args[\"\" + prvRowCellIndex] = this.prevECIdxs;\n var isUnSelected = index > -1;\n if (isUnSelected) {\n var selectedCellIdx = this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes;\n if (selectedCellIdx.indexOf(cellIndex.cellIndex) > -1) {\n this.cellDeselect(events.cellDeselecting, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n selectedCellIdx.splice(selectedCellIdx.indexOf(cellIndex.cellIndex), 1);\n if (selectedCellIdx.length === 0) {\n this.selectedRowCellIndexes.splice(index, 1);\n }\n selectedCell.classList.remove('e-cellselectionbackground');\n selectedCell.removeAttribute('aria-selected');\n this.cellDeselect(events.cellDeselected, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n }\n else {\n isUnSelected = false;\n this.onActionBegin(args, events.cellSelecting);\n this.addRowCellIndex({ rowIndex: cellIndex.rowIndex, cellIndex: cellIndex.cellIndex });\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n }\n }\n else {\n this.onActionBegin(args, events.cellSelecting);\n if (!isNullOrUndefined(args) && args[\"\" + cncl] === true) {\n return;\n }\n this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isUnSelected) {\n var cellSelectedArgs = {\n data: selectedData, cellIndex: cellIndexes[0], currentCell: selectedCell,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) :\n undefined, selectedRowCellIndex: this.selectedRowCellIndexes\n };\n cellSelectedArgs[\"\" + prvRowCellIndex] = this.prevECIdxs;\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n this.cellselected = true;\n }\n this.updateCellProps(cellIndex, cellIndex);\n }\n };\n Selection.prototype.getColIndex = function (rowIndex, index) {\n var frzCols = this.parent.isFrozenGrid();\n var col = this.parent.getColumnByIndex(index);\n var cells = getCellsByTableName(this.parent, col, rowIndex);\n if (cells) {\n for (var m = 0; m < cells.length; m++) {\n var colIndex = parseInt(cells[parseInt(m.toString(), 10)].getAttribute(literals.dataColIndex), 10);\n if (colIndex === index) {\n if (frzCols) {\n if (col.getFreezeTableName() === 'movable') {\n m += this.parent.getFrozenLeftCount();\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\n m += (this.parent.getFrozenLeftColumnsCount() + this.parent.getMovableColumnsCount());\n }\n }\n return m;\n }\n }\n }\n return -1;\n };\n Selection.prototype.getLastColIndex = function (rowIndex) {\n var cells = this.parent.getFrozenColumns() ? this.parent.getMovableDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll('td.e-rowcell')\n : this.parent.getDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll('td.e-rowcell');\n return parseInt(cells[cells.length - 1].getAttribute(literals.dataColIndex), 10);\n };\n Selection.prototype.clearCell = function () {\n this.clearCellSelection();\n };\n Selection.prototype.cellDeselect = function (type, cellIndexes, data, cells, foreignKeyData) {\n var cancl = 'cancel';\n if (cells[0] && cells[0].classList.contains(literals.gridChkBox)) {\n this.updateCheckBoxes(closest(cells[0], 'tr'));\n }\n var args = {\n cells: cells, data: data, cellIndexes: cellIndexes, foreignKeyData: foreignKeyData, cancel: false\n };\n this.parent.trigger(type, args);\n this.isPreventCellSelect = args[\"\" + cancl];\n };\n Selection.prototype.updateCellSelection = function (selectedCell, rowIndex, cellIndex) {\n if (!isNullOrUndefined(rowIndex)) {\n this.addRowCellIndex({ rowIndex: rowIndex, cellIndex: cellIndex });\n }\n selectedCell.classList.add('e-cellselectionbackground');\n if (selectedCell.classList.contains(literals.gridChkBox)) {\n this.updateCheckBoxes(closest(selectedCell, 'tr'), true);\n }\n this.addAttribute(selectedCell);\n };\n Selection.prototype.addAttribute = function (cell) {\n this.target = cell;\n if (!isNullOrUndefined(cell)) {\n cell.setAttribute('aria-selected', 'true');\n if (!this.preventFocus) {\n this.focus.onClick({ target: cell }, true);\n }\n }\n };\n Selection.prototype.updateCellProps = function (startIndex, endIndex) {\n this.prevCIdxs = startIndex;\n this.prevECIdxs = endIndex;\n this.isCellSelected = this.selectedRowCellIndexes.length && true;\n };\n Selection.prototype.addRowCellIndex = function (rowCellIndex) {\n var isRowAvail;\n var index;\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[parseInt(i.toString(), 10)].rowIndex === rowCellIndex.rowIndex) {\n isRowAvail = true;\n index = i;\n break;\n }\n }\n if (isRowAvail) {\n if (this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes.indexOf(rowCellIndex.cellIndex) < 0) {\n this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes.push(rowCellIndex.cellIndex);\n }\n }\n else {\n this.selectedRowCellIndexes.push({ rowIndex: rowCellIndex.rowIndex, cellIndexes: [rowCellIndex.cellIndex] });\n }\n };\n /**\n * Deselects the currently selected cells.\n *\n * @returns {void}\n */\n Selection.prototype.clearCellSelection = function () {\n if (this.isCellSelected) {\n var gObj = this.parent;\n var selectedCells = this.getSelectedCellsElement();\n var rowCell = this.selectedRowCellIndexes;\n var data = [];\n var cells = [];\n var foreignKeyData = [];\n var currentViewData = this.getCurrentBatchRecordChanges();\n var frzCols = gObj.isFrozenGrid();\n this.hideAutoFill();\n for (var i = 0, len = rowCell.length; i < len; i++) {\n data.push(currentViewData[rowCell[parseInt(i.toString(), 10)].rowIndex]);\n var rowObj = this.getRowObj(rowCell[parseInt(i.toString(), 10)].rowIndex);\n for (var j = 0, cLen = rowCell[parseInt(i.toString(), 10)].cellIndexes.length; j < cLen; j++) {\n if (frzCols) {\n var col = gObj.getColumnByIndex(rowCell[parseInt(i.toString(), 10)]\n .cellIndexes[parseInt(j.toString(), 10)]);\n cells.push(getCellByColAndRowIndex(this.parent, col, rowCell[parseInt(i.toString(), 10)].rowIndex, rowCell[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]));\n }\n else {\n if (rowObj.cells) {\n foreignKeyData.push(rowObj.cells[rowCell[parseInt(i.toString(), 10)]\n .cellIndexes[parseInt(j.toString(), 10)]].foreignKeyData);\n }\n cells.push(gObj.getCellFromIndex(rowCell[parseInt(i.toString(), 10)].rowIndex, rowCell[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]));\n }\n }\n }\n this.cellDeselect(events.cellDeselecting, rowCell, data, cells, foreignKeyData);\n if (this.isPreventCellSelect === true) {\n return;\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n selectedCells[parseInt(i.toString(), 10)].classList.remove('e-cellselectionbackground');\n selectedCells[parseInt(i.toString(), 10)].removeAttribute('aria-selected');\n }\n if (this.bdrElement) {\n this.showHideBorders('none');\n }\n this.selectedRowCellIndexes = [];\n this.isCellSelected = false;\n if (!this.isDragged && this.cellselected) {\n this.cellDeselect(events.cellDeselected, rowCell, data, cells, foreignKeyData);\n }\n }\n };\n Selection.prototype.getSelectedCellsElement = function () {\n var gObj = this.parent;\n var rows = gObj.getDataRows();\n var mRows;\n if (gObj.isFrozenGrid()) {\n mRows = gObj.getMovableDataRows();\n rows = gObj.addMovableRows(rows, mRows);\n if (gObj.getFrozenMode() === literals.leftRight) {\n rows = gObj.addMovableRows(rows, gObj.getFrozenRightDataRows());\n }\n }\n var cells = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n cells = cells.concat([].slice.call(rows[parseInt(i.toString(), 10)].getElementsByClassName('e-cellselectionbackground')));\n }\n return cells;\n };\n Selection.prototype.mouseMoveHandler = function (e) {\n e.preventDefault();\n var gBRect = this.parent.element.getBoundingClientRect();\n var x1 = this.x;\n var y1 = this.y;\n var position = getPosition(e);\n var x2 = position.x - gBRect.left;\n var y2 = position.y - gBRect.top;\n var tmp;\n var target = closest(e.target, 'tr');\n this.isDragged = true;\n if (!this.isCellDrag) {\n if (!target) {\n target = closest(document.elementFromPoint(this.parent.element.offsetLeft + 2, e.clientY), 'tr');\n }\n if (x1 > x2) {\n tmp = x2;\n x2 = x1;\n x1 = tmp;\n }\n if (y1 > y2) {\n tmp = y2;\n y2 = y1;\n y1 = tmp;\n }\n this.element.style.left = x1 + 'px';\n this.element.style.top = y1 + 'px';\n this.element.style.width = x2 - x1 + 'px';\n this.element.style.height = y2 - y1 + 'px';\n }\n if (target && !e.ctrlKey && !e.shiftKey) {\n var rowIndex = parseInt(target.getAttribute(literals.dataRowIndex), 10);\n if (!this.isCellDrag) {\n this.hideAutoFill();\n this.selectRowsByRange(this.startDIndex, rowIndex);\n this.isRowDragSelected = true;\n }\n else {\n var td = parentsUntil(e.target, literals.rowCell);\n if (td) {\n this.startAFCell = this.startCell;\n this.endAFCell = parentsUntil(e.target, literals.rowCell);\n this.selectLikeExcel(e, rowIndex, parseInt(td.getAttribute(literals.dataColIndex), 10));\n }\n }\n }\n };\n Selection.prototype.selectLikeExcel = function (e, rowIndex, cellIndex) {\n if (!this.isAutoFillSel) {\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.drawBorders();\n }\n else { //Autofill\n this.showAFBorders();\n this.selectLikeAutoFill(e);\n }\n };\n Selection.prototype.drawBorders = function () {\n if (this.selectionSettings.cellSelectionMode === 'BoxWithBorder' && this.selectedRowCellIndexes.length && !this.parent.isEdit) {\n this.parent.element.classList.add('e-enabledboxbdr');\n if (!this.bdrElement) {\n this.createBorders();\n }\n this.positionBorders();\n }\n else {\n this.showHideBorders('none');\n }\n };\n Selection.prototype.isLastCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[cells.length - 1] === cell;\n };\n Selection.prototype.isLastRow = function (cell) {\n var rows = [].slice.call(closest(cell, literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[rows.length - 1];\n };\n Selection.prototype.isFirstRow = function (cell) {\n var rows = [].slice.call(closest(cell, literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[0];\n };\n Selection.prototype.isFirstCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[0] === cell;\n };\n Selection.prototype.setBorders = function (parentEle, border, bdrStr) {\n var cells = [].slice.call(parentEle.getElementsByClassName('e-cellselectionbackground')).\n filter(function (ele) { return ele.style.display === ''; });\n if (cells.length) {\n var isFrozen = this.parent.isFrozenGrid();\n var start = cells[0];\n var end = cells[cells.length - 1];\n var stOff = start.getBoundingClientRect();\n var endOff = end.getBoundingClientRect();\n var parentOff = start.offsetParent.getBoundingClientRect();\n var rowHeight = this.isLastRow(end) && (bdrStr === '1' || bdrStr === '2' || bdrStr === '5') ? 2 : 0;\n var topOffSet = this.parent.frozenRows && (bdrStr === '1' || bdrStr === '2') &&\n this.isFirstRow(start) ? 1.5 : 0;\n var leftOffset = isFrozen && (bdrStr === '2' || bdrStr === '4') && this.isFirstCell(start) ? 1 : 0;\n var rightOffset = ((this.parent.getFrozenMode() === 'Right' && (bdrStr === '1' || bdrStr === '3'))\n || (this.parent.getFrozenMode() === literals.leftRight && (bdrStr === '5' || bdrStr === '6')))\n && this.isFirstCell(start) ? 1 : 0;\n if (this.parent.enableRtl) {\n border.style.right = parentOff.right - stOff.right - leftOffset + 'px';\n border.style.width = stOff.right - endOff.left + leftOffset + 1 + 'px';\n }\n else {\n border.style.left = stOff.left - parentOff.left - leftOffset - rightOffset + 'px';\n border.style.width = endOff.right - stOff.left + leftOffset - rightOffset + 1 + 'px';\n }\n border.style.top = stOff.top - parentOff.top - topOffSet + 'px';\n border.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + 1) - (stOff.top - parentOff.top) - rowHeight + topOffSet + 'px' :\n endOff.height + topOffSet - rowHeight + 1 + 'px';\n this.selectDirection += bdrStr;\n }\n else {\n border.style.display = 'none';\n }\n };\n Selection.prototype.positionBorders = function () {\n this.updateStartEndCells();\n if (!this.startCell || !this.bdrElement || !this.selectedRowCellIndexes.length) {\n return;\n }\n this.selectDirection = '';\n this.showHideBorders('');\n this.setBorders(this.parent.getContentTable(), this.bdrElement, '1');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.contentModule.getMovableContent(), this.mcBdrElement, '2');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.setBorders(this.parent.contentModule.getFrozenRightContent(), this.frcBdrElement, '5');\n }\n }\n if (this.parent.frozenRows) {\n this.setBorders(this.parent.getHeaderTable(), this.fhBdrElement, '3');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.headerModule.getMovableHeader(), this.mhBdrElement, '4');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.setBorders(this.parent.headerModule.getFrozenRightHeader(), this.frhBdrElement, '6');\n }\n }\n }\n this.applyBorders(this.selectDirection);\n };\n /* eslint-enable */\n Selection.prototype.applyBothFrozenBorders = function (str) {\n var rtl = this.parent.enableRtl;\n switch (str.length) {\n case 6:\n {\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = this.bottom;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = this.top;\n this.frcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n break;\n case 4:\n {\n if (str.includes('1') && str.includes('2') && str.includes('3') && str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n }\n if (str.includes('2') && str.includes('4') && str.includes('5') && str.includes('6')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.frcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n }\n break;\n case 3:\n {\n this.bdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.mcBdrElement.style.borderWidth = this.top_bottom;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.mhBdrElement.style.borderWidth = this.top_bottom;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n }\n }\n break;\n case 2:\n {\n if (str.includes('1')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('2')) {\n this.bdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.mhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('3')) {\n this.mhBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n this.bdrElement.style.borderWidth = this.right_bottom_left;\n }\n if (str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n this.mcBdrElement.style.borderWidth = this.right_bottom_left;\n }\n if (str.includes('5')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n if (this.parent.frozenRows) {\n this.frhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('6')) {\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frcBdrElement.style.borderWidth = this.right_bottom_left;\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = this.all_border;\n this.mcBdrElement.style.borderWidth = this.all_border;\n this.frcBdrElement.style.borderWidth = this.all_border;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.all_border;\n this.mhBdrElement.style.borderWidth = this.all_border;\n this.frhBdrElement.style.borderWidth = this.all_border;\n }\n break;\n }\n };\n Selection.prototype.applyBorders = function (str) {\n var rtl = this.parent.enableRtl;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.applyBothFrozenBorders(str);\n }\n else {\n switch (str.length) {\n case 4:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.mcBdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n }\n else {\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n }\n break;\n case 2:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? this.top_bottom_left\n : this.top_right_bottom : this.right_bottom_left;\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? this.top_right_bottom\n : this.top_bottom_left : this.right_bottom_left;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? this.top_right_left\n : rtl ? this.top_bottom_left : this.top_right_bottom;\n this.mhBdrElement.style.borderWidth = str.includes('2') ? this.top_right_left\n : rtl ? this.top_right_bottom : this.top_bottom_left;\n }\n }\n else {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? this.top_right_bottom\n : this.top_bottom_left : this.right_bottom_left;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? this.top_bottom_left\n : this.top_right_bottom : this.right_bottom_left;\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? this.top_right_left\n : rtl ? this.top_right_bottom : this.top_bottom_left;\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = str.includes('2') ? this.top_right_left\n : rtl ? this.top_bottom_left : this.top_right_bottom;\n }\n }\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = this.all_border;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = this.all_border;\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.all_border;\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = this.all_border;\n }\n }\n break;\n }\n }\n };\n Selection.prototype.createBorders = function () {\n if (!this.bdrElement) {\n this.bdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_bdr',\n styles: 'width: 2px; border-width: 0;'\n }));\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement = this.parent.contentModule.getMovableContent().appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_mcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frcBdrElement = this.parent.contentModule.getFrozenRightContent().appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_frcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n }\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement = this.parent.getHeaderTable().parentElement.appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_fhbdr', styles: 'height: 2px;' }));\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n this.mhBdrElement = this.parent.headerModule.getMovableHeader().appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_mhbdr', styles: 'height: 2px;' }));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frhBdrElement = this.parent.headerModule.getFrozenRightHeader().appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_frhbdr', styles: 'height: 2px;' }));\n }\n }\n }\n };\n Selection.prototype.showHideBorders = function (display) {\n if (this.bdrElement) {\n this.bdrElement.style.display = display;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.display = display;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frcBdrElement.style.display = display;\n }\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.display = display;\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.display = display;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frhBdrElement.style.display = display;\n }\n }\n }\n };\n Selection.prototype.drawAFBorders = function () {\n if (!this.bdrAFBottom) {\n this.createAFBorders();\n }\n this.positionAFBorders();\n };\n Selection.prototype.positionAFBorders = function () {\n if (!this.startCell || !this.bdrAFLeft) {\n return;\n }\n var stOff = this.startAFCell.getBoundingClientRect();\n var endOff = this.endAFCell.getBoundingClientRect();\n var top = endOff.top - stOff.top > 0 ? 1 : 0;\n var firstCellTop = endOff.top - stOff.top >= 0 && (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, 'e-frozencontent')) && this.isFirstRow(this.startAFCell) ? 1.5 : 0;\n var firstCellLeft = (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, literals.movableHeader)) && this.isFirstCell(this.startAFCell) ? 1 : 0;\n var rowHeight = this.isLastRow(this.endAFCell) && (parentsUntil(this.endAFCell, literals.movableContent) ||\n parentsUntil(this.endAFCell, 'e-frozencontent')) ? 2 : 0;\n var parentOff = this.startAFCell.offsetParent.getBoundingClientRect();\n var parentRect = this.parent.element.getBoundingClientRect();\n var sTop = this.startAFCell.offsetParent.parentElement.scrollTop;\n var sLeft = this.startAFCell.offsetParent.parentElement.scrollLeft;\n var scrollTop = sTop - this.startAFCell.offsetTop;\n var scrollLeft = sLeft - this.startAFCell.offsetLeft;\n var totalHeight = this.parent.element.clientHeight;\n var totalWidth = this.parent.element.clientWidth;\n scrollTop = scrollTop > 0 ? Math.floor(scrollTop) - 1 : 0;\n scrollLeft = scrollLeft > 0 ? scrollLeft : 0;\n var left = stOff.left - parentRect.left;\n if (!this.parent.enableRtl) {\n this.bdrAFLeft.style.left = left - firstCellLeft + scrollLeft - 1 + 'px';\n this.bdrAFRight.style.left = endOff.left - parentRect.left - 2 + endOff.width + 'px';\n this.bdrAFRight.style.width = totalWidth <= parseInt(this.bdrAFRight.style.left, 10) ? '0px' : '2px';\n this.bdrAFTop.style.left = left + scrollLeft - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFRight.style.left, 10) - parseInt(this.bdrAFLeft.style.left, 10)\n - firstCellLeft + 1 + 'px';\n if (totalWidth <= (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10))) {\n var leftRemove = (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10)) - totalWidth;\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) - leftRemove + 'px';\n }\n }\n else {\n var scrolloffSet = (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, literals.movableHeader)) ? stOff.right -\n this.startAFCell.offsetParent.parentElement.getBoundingClientRect().width -\n parentRect.left : 0;\n this.bdrAFLeft.style.right = parentRect.right - endOff.right - 2 + endOff.width + 'px';\n this.bdrAFLeft.style.width = totalWidth <= parseInt(this.bdrAFLeft.style.right, 10) ? '0px' : '2px';\n this.bdrAFRight.style.right = parentRect.right - stOff.right - firstCellLeft + scrolloffSet - 1 + 'px';\n this.bdrAFTop.style.left = endOff.left - parentRect.left - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFLeft.style.right, 10) - parseInt(this.bdrAFRight.style.right, 10)\n - firstCellLeft + 1 + 'px';\n if (parseInt(this.bdrAFTop.style.left, 10) < 0) {\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10) + 'px';\n this.bdrAFTop.style.left = '0px';\n }\n }\n this.bdrAFLeft.style.top = stOff.top - parentRect.top - firstCellTop + scrollTop + 'px';\n this.bdrAFLeft.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + 1) - (stOff.top - parentOff.top) + firstCellTop - rowHeight - scrollTop + 'px' :\n endOff.height + firstCellTop - rowHeight - scrollTop + 'px';\n this.bdrAFRight.style.top = this.bdrAFLeft.style.top;\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n this.bdrAFTop.style.top = this.bdrAFRight.style.top;\n this.bdrAFBottom.style.left = this.bdrAFTop.style.left;\n this.bdrAFBottom.style.top = parseFloat(this.bdrAFLeft.style.top) + parseFloat(this.bdrAFLeft.style.height) - top - 1 + 'px';\n this.bdrAFBottom.style.width = totalHeight <= parseFloat(this.bdrAFBottom.style.top) ? '0px' : this.bdrAFTop.style.width;\n if (totalHeight <= (parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10))) {\n var topRemove = parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10) - totalHeight;\n this.bdrAFLeft.style.height = parseInt(this.bdrAFLeft.style.height, 10) - topRemove + 'px';\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n }\n };\n Selection.prototype.createAFBorders = function () {\n if (!this.bdrAFLeft) {\n this.bdrAFLeft = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafleft', styles: 'width: 2px;' }));\n this.bdrAFRight = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafright', styles: 'width: 2px;' }));\n this.bdrAFBottom = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafbottom', styles: 'height: 2px;' }));\n this.bdrAFTop = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdraftop', styles: 'height: 2px;' }));\n }\n };\n Selection.prototype.showAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = '';\n this.bdrAFRight.style.display = '';\n this.bdrAFBottom.style.display = '';\n this.bdrAFTop.style.display = '';\n }\n };\n Selection.prototype.hideAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = 'none';\n this.bdrAFRight.style.display = 'none';\n this.bdrAFBottom.style.display = 'none';\n this.bdrAFTop.style.display = 'none';\n }\n };\n Selection.prototype.updateValue = function (rIdx, cIdx, cell) {\n var args = this.createBeforeAutoFill(rIdx, cIdx, cell);\n if (!args.cancel) {\n var col = this.parent.getColumnByIndex(cIdx);\n if (this.parent.editModule && cell) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseFloat(args.value));\n }\n else {\n this.parent.editModule.updateCell(rIdx, col.field, args.value);\n }\n }\n }\n };\n Selection.prototype.createBeforeAutoFill = function (rowIndex, colIndex, cell) {\n var col = this.parent.getColumnByIndex(colIndex);\n var args = {\n column: col,\n value: cell.innerText\n };\n this.parent.trigger(events.beforeAutoFill, args);\n return args;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Selection.prototype.getAutoFillCells = function (rowIndex, startCellIdx) {\n var cls = '.e-cellselectionbackground';\n var cells = [].slice.call(this.parent.getDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll(cls));\n if (this.parent.isFrozenGrid()) {\n cells = cells.concat([].slice.call(this.parent.getMovableDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll(cls)));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n cells = cells.concat([].slice.call(this.parent.getFrozenRightDataRows()[parseInt(rowIndex.toString(), 10)]\n .querySelectorAll(cls)));\n }\n }\n return cells;\n };\n Selection.prototype.selectLikeAutoFill = function (e, isApply) {\n var startrowIdx = parseInt(parentsUntil(this.startAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n var startCellIdx = parseInt(this.startAFCell.getAttribute(literals.dataColIndex), 10);\n var endrowIdx = parseInt(parentsUntil(this.endAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n var endCellIdx = parseInt(this.endAFCell.getAttribute(literals.dataColIndex), 10);\n var rowLen = this.selectedRowCellIndexes.length - 1;\n var colLen = this.selectedRowCellIndexes[0].cellIndexes.length - 1;\n switch (true) { //direction\n case !isApply && this.endAFCell.classList.contains('e-cellselectionbackground') &&\n !!parentsUntil(e.target, literals.rowCell):\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, startCellIdx);\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, startCellIdx + colLen);\n this.drawAFBorders();\n break;\n case this.autoFillRLselection && startCellIdx + colLen < endCellIdx && //right\n endCellIdx - startCellIdx - colLen + 1 > endrowIdx - startrowIdx - rowLen // right bottom\n && endCellIdx - startCellIdx - colLen + 1 > startrowIdx - endrowIdx: //right top\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, endCellIdx);\n endrowIdx = parseInt(parentsUntil(this.endAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n endCellIdx = parseInt(this.endAFCell.getAttribute(literals.dataColIndex), 10);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var cellIdx = parseInt(this.endCell.getAttribute(literals.dataColIndex), 10);\n for (var i = startrowIdx; i <= endrowIdx; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n var c = 0;\n for (var j = cellIdx + 1; j <= endCellIdx; j++) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: this.startCellIndex }, { rowIndex: endrowIdx, cellIndex: endCellIdx });\n }\n break;\n case this.autoFillRLselection && startCellIdx > endCellIdx && // left\n startCellIdx - endCellIdx + 1 > endrowIdx - startrowIdx - rowLen && //left top\n startCellIdx - endCellIdx + 1 > startrowIdx - endrowIdx: // left bottom\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, endCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n for (var i = startrowIdx; i <= startrowIdx + rowLen; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n cells.reverse();\n var c = 0;\n for (var j = this.startCellIndex - 1; j >= endCellIdx; j--) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: endCellIdx }, { rowIndex: startrowIdx + rowLen, cellIndex: this.startCellIndex + colLen });\n }\n break;\n case startrowIdx > endrowIdx: //up\n this.startAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var r = trIdx;\n for (var i = startrowIdx - 1; i >= endrowIdx; i--) {\n if (r === this.startIndex - 1) {\n r = trIdx;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n var c = 0;\n r--;\n for (var j = this.startCellIndex; j <= this.startCellIndex + colLen; j++) {\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: endrowIdx, cellIndex: startCellIdx + colLen }, { rowIndex: startrowIdx + rowLen, cellIndex: startCellIdx });\n }\n break;\n default: //down\n this.endAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx + colLen);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var r = this.startIndex;\n for (var i = trIdx + 1; i <= endrowIdx; i++) {\n if (r === trIdx + 1) {\n r = this.startIndex;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n r++;\n var c = 0;\n for (var m = this.startCellIndex; m <= this.startCellIndex + colLen; m++) {\n this.updateValue(i, m, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: trIdx - rowLen, cellIndex: startCellIdx }, { rowIndex: endrowIdx, cellIndex: startCellIdx + colLen });\n }\n break;\n }\n };\n Selection.prototype.mouseUpHandler = function (e) {\n document.body.classList.remove('e-disableuserselect');\n if (this.element) {\n remove(this.element);\n }\n if (this.isDragged && this.selectedRowCellIndexes.length === 1 && this.selectedRowCellIndexes[0].cellIndexes.length === 1) {\n this.mUPTarget = parentsUntil(e.target, literals.rowCell);\n }\n else {\n this.mUPTarget = null;\n }\n var closeRowCell = closest(e.target, '.e-rowcell');\n if (this.isDragged && !this.isAutoFillSel && this.selectionSettings.mode === 'Cell' &&\n closeRowCell && closeRowCell.classList.contains(literals.rowCell)) {\n var rowIndex = parseInt(closeRowCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var cellIndex = parseInt(closeRowCell.getAttribute(literals.dataColIndex), 10);\n this.isDragged = false;\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isDragged = false;\n this.updateAutoFillPosition();\n if (this.isAutoFillSel) {\n var lastCell = parentsUntil(e.target, literals.rowCell);\n this.endAFCell = lastCell ? lastCell : this.endCell === this.endAFCell ? this.startAFCell : this.endAFCell;\n this.startAFCell = this.startCell;\n this.updateStartCellsIndex();\n this.selectLikeAutoFill(e, true);\n this.updateAutoFillPosition();\n this.hideAFBorders();\n this.positionBorders();\n this.isAutoFillSel = false;\n }\n EventHandler.remove(this.parent.getContent(), 'mousemove', this.mouseMoveHandler);\n if (this.parent.frozenRows) {\n EventHandler.remove(this.parent.getHeaderContent(), 'mousemove', this.mouseMoveHandler);\n }\n EventHandler.remove(document, 'mouseup', this.mouseUpHandler);\n };\n Selection.prototype.hideAutoFill = function () {\n if (this.autofill) {\n this.autofill.style.display = 'none';\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.updateAutoFillPosition = function () {\n if (this.parent.enableAutoFill && !this.parent.isEdit &&\n this.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()\n && this.selectedRowCellIndexes.length) {\n var index = parseInt(this.target.getAttribute(literals.dataColIndex), 10);\n var rindex = parseInt(this.target.getAttribute('index'), 10);\n var rowIndex = this.selectedRowCellIndexes[this.selectedRowCellIndexes.length - 1].rowIndex;\n var cells = this.getAutoFillCells(rowIndex, index).filter(function (ele) { return ele.style.display === ''; });\n var col = this.parent.getColumnByIndex(index);\n var isFrozenCol = col.getFreezeTableName() === 'movable';\n var isFrozenRow = rindex < this.parent.frozenRows;\n var isFrozenRight = this.parent.getFrozenMode() === literals.leftRight\n && col.getFreezeTableName() === literals.frozenRight;\n if (!select('#' + this.parent.element.id + '_autofill', parentsUntil(this.target, literals.table))) {\n if (select('#' + this.parent.element.id + '_autofill', this.parent.element)) {\n select('#' + this.parent.element.id + '_autofill', this.parent.element).remove();\n }\n this.autofill = createElement('div', { className: 'e-autofill', id: this.parent.element.id + '_autofill' });\n this.autofill.style.display = 'none';\n if (!isFrozenRow) {\n if (!isFrozenCol) {\n this.parent.getContentTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.contentModule.getMovableContent().appendChild(this.autofill);\n }\n }\n else {\n if (!isFrozenCol) {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.headerModule.getMovableHeader().appendChild(this.autofill);\n }\n }\n if (isFrozenRight) {\n if (isFrozenRow) {\n this.parent.getFrozenRightHeader().appendChild(this.autofill);\n }\n else {\n this.parent.getFrozenRightContent().appendChild(this.autofill);\n }\n }\n }\n var cell = cells[cells.length - 1];\n if (cell && cell.offsetParent) {\n var clientRect = cell.getBoundingClientRect();\n var parentOff = cell.offsetParent.getBoundingClientRect();\n var colWidth = this.isLastCell(cell) ? 4 : 0;\n var rowHeight = this.isLastRow(cell) ? 3 : 0;\n if (!this.parent.enableRtl) {\n this.autofill.style.left = clientRect.left - parentOff.left + clientRect.width - 4 - colWidth + 'px';\n }\n else {\n this.autofill.style.right = parentOff.right - clientRect.right + clientRect.width - 4 - colWidth + 'px';\n }\n this.autofill.style.top = clientRect.top - parentOff.top + clientRect.height - 5 - rowHeight + 'px';\n }\n this.autofill.style.display = '';\n }\n else {\n this.hideAutoFill();\n }\n };\n Selection.prototype.mouseDownHandler = function (e) {\n this.mouseButton = e.button;\n var target = e.target;\n var gObj = this.parent;\n var isDrag;\n var gridElement = parentsUntil(target, 'e-grid');\n if (gridElement && gridElement.id !== gObj.element.id || parentsUntil(target, literals.headerContent) && !this.parent.frozenRows ||\n parentsUntil(target, 'e-editedbatchcell') || parentsUntil(target, literals.editedRow)) {\n return;\n }\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (parentsUntil(target, literals.rowCell) && !e.shiftKey && !e.ctrlKey) {\n if (gObj.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()) {\n this.isCellDrag = true;\n isDrag = true;\n }\n else if (gObj.allowRowDragAndDrop && !gObj.isEdit && !this.parent.selectionSettings.checkboxOnly) {\n this.isRowDragSelected = false;\n if (!this.isRowType() || this.isSingleSel() || closest(target, 'td').classList.contains('e-selectionbackground')) {\n this.isDragged = false;\n return;\n }\n isDrag = true;\n this.element = this.parent.createElement('div', { className: 'e-griddragarea' });\n gObj.getContent().appendChild(this.element);\n }\n if (isDrag) {\n this.enableDrag(e, true);\n }\n }\n this.updateStartEndCells();\n if (target.classList.contains('e-autofill') || target.classList.contains('e-xlsel')) {\n this.isCellDrag = true;\n this.isAutoFillSel = true;\n this.enableDrag(e);\n }\n };\n Selection.prototype.updateStartEndCells = function () {\n var cells = [].slice.call(this.parent.element.getElementsByClassName('e-cellselectionbackground'));\n this.startCell = cells[0];\n this.endCell = cells[cells.length - 1];\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n };\n Selection.prototype.updateStartCellsIndex = function () {\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n };\n Selection.prototype.enableDrag = function (e, isUpdate) {\n var gObj = this.parent;\n if (isUpdate) {\n var tr = closest(e.target, 'tr');\n this.startDIndex = parseInt(tr.getAttribute(literals.dataRowIndex), 10);\n this.startDCellIndex = parseInt(parentsUntil(e.target, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n document.body.classList.add('e-disableuserselect');\n var gBRect = gObj.element.getBoundingClientRect();\n var postion = getPosition(e);\n this.x = postion.x - gBRect.left;\n this.y = postion.y - gBRect.top;\n EventHandler.add(gObj.getContent(), 'mousemove', this.mouseMoveHandler, this);\n if (this.parent.frozenRows) {\n EventHandler.add(gObj.getHeaderContent(), 'mousemove', this.mouseMoveHandler, this);\n }\n EventHandler.add(document, 'mouseup', this.mouseUpHandler, this);\n };\n Selection.prototype.clearSelAfterRefresh = function (e) {\n var isInfiniteScroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfiniteScroll) {\n this.clearSelection();\n }\n if ((e.requestType === 'virtualscroll' || isInfiniteScroll) && this.parent.isPersistSelection && this.isPartialSelection\n && this.isHdrSelectAllClicked) {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n var indexes = [];\n this.selectedRowState = {};\n this.persistSelectedData = [];\n for (var i = 0; i < rowObj.length; i++) {\n indexes.push(rowObj[parseInt(i.toString(), 10)].index);\n var pkValue = this.getPkValue(this.primaryKey, rowObj[parseInt(i.toString(), 10)].data);\n this.selectedRowState[\"\" + pkValue] = true;\n this.persistSelectedData.push(rowObj[parseInt(i.toString(), 10)].data);\n }\n this.selectedRowIndexes = indexes;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.uiUpdate, handler: this.enableAfterRender },\n { event: events.initialEnd, handler: this.initializeSelection },\n { event: events.rowSelectionComplete, handler: this.onActionComplete },\n { event: events.cellSelectionComplete, handler: this.onActionComplete },\n { event: events.inBoundModelChanged, handler: this.onPropertyChanged },\n { event: events.cellFocused, handler: this.onCellFocused },\n { event: events.beforeFragAppend, handler: this.clearSelAfterRefresh },\n { event: events.columnPositionChanged, handler: this.columnPositionChanged },\n { event: events.contentReady, handler: this.initialEnd },\n { event: events.rowsRemoved, handler: this.rowsRemoved },\n { event: events.headerRefreshed, handler: this.refreshHeader },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunction);\n this.addEventListener_checkbox();\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(document, 'mouseup', this.mouseUpHandler);\n EventHandler.remove(this.parent.getContent(), 'mousedown', this.mouseDownHandler);\n EventHandler.remove(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunction);\n this.removeEventListener_checkbox();\n };\n Selection.prototype.wireEvents = function () {\n this.isMacOS = navigator.userAgent.indexOf('Mac OS') !== -1;\n if (this.isMacOS) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.parent.element, 'keyup', this.keyUpHandler, this);\n }\n else {\n if (!this.parent.allowKeyboard) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n }\n }\n };\n Selection.prototype.unWireEvents = function () {\n if (this.isMacOS) {\n EventHandler.remove(this.parent.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.parent.element, 'keyup', this.keyUpHandler);\n }\n else {\n if (!this.parent.allowKeyboard) {\n EventHandler.remove(this.parent.element, 'keydown', this.keyDownHandler);\n }\n }\n };\n Selection.prototype.columnPositionChanged = function () {\n if (!this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n Selection.prototype.refreshHeader = function () {\n this.setCheckAllState();\n };\n Selection.prototype.rowsRemoved = function (e) {\n for (var i = 0; i < e.records.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, e.records[parseInt(i.toString(), 10)]);\n delete (this.selectedRowState[\"\" + pkValue]);\n --this.totalRecordsCount;\n }\n this.setCheckAllState();\n };\n Selection.prototype.beforeFragAppend = function (e) {\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n Selection.prototype.getCheckAllBox = function () {\n return this.parent.getHeaderContent().querySelector('.e-checkselectall');\n };\n Selection.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.initPerisistSelection();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Selection.prototype.render = function (e) {\n EventHandler.add(this.parent.getContent(), 'mousedown', this.mouseDownHandler, this);\n EventHandler.add(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler, this);\n };\n Selection.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var gObj = this.parent;\n if (!isNullOrUndefined(e.properties.type) && this.selectionSettings.type === 'Single') {\n if (this.selectedRowCellIndexes.length > 1) {\n this.clearCellSelection();\n this.prevCIdxs = undefined;\n }\n if (this.selectedRowIndexes.length > 1) {\n this.clearRowSelection();\n this.prevRowIndex = undefined;\n }\n if (this.selectedColumnsIndexes.length > 1) {\n this.clearColumnSelection();\n this.prevColIndex = undefined;\n }\n this.enableSelectMultiTouch = false;\n this.hidePopUp();\n }\n if (!isNullOrUndefined(e.properties.mode) ||\n !isNullOrUndefined(e.properties.cellSelectionMode)) {\n this.clearSelection();\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevColIndex = undefined;\n }\n this.isPersisted = true;\n this.checkBoxSelectionChanged();\n this.isPersisted = false;\n if (!this.parent.isCheckBoxSelection) {\n this.initPerisistSelection();\n }\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length) {\n gObj.isCheckBoxSelection = !(this.selectionSettings.checkboxMode === 'ResetOnRowClick');\n }\n this.drawBorders();\n };\n Selection.prototype.hidePopUp = function () {\n if (this.parent.element.querySelector('.e-gridpopup').getElementsByClassName('e-rowselect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.initialEnd = function (e) {\n var isFrozen = this.parent.isFrozenGrid();\n var isLeftRightFrozen = this.parent.getFrozenMode() === literals.leftRight;\n if ((!isFrozen || (isFrozen && (!isLeftRightFrozen && !e.args.isFrozen)\n || (isLeftRightFrozen && e.args.renderFrozenRightContent))) && !this.selectedRowIndexes.length) {\n this.parent.off(events.contentReady, this.initialEnd);\n this.selectRow(this.parent.selectedRowIndex);\n }\n };\n Selection.prototype.checkBoxSelectionChanged = function () {\n var gobj = this.parent;\n gobj.off(events.contentReady, this.checkBoxSelectionChanged);\n var checkboxColumn = gobj.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length > 0) {\n gobj.isCheckBoxSelection = true;\n this.chkField = checkboxColumn[0].field;\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n if (isNullOrUndefined(this.totalRecordsCount)) {\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.isSingleSel()) {\n gobj.selectionSettings.type = 'Multiple';\n gobj.dataBind();\n }\n else {\n this.initPerisistSelection();\n }\n }\n if (!gobj.isCheckBoxSelection && !this.isPersisted) {\n this.chkField = null;\n this.initPerisistSelection();\n }\n };\n Selection.prototype.initPerisistSelection = function () {\n var gobj = this.parent;\n if (this.parent.selectionSettings.persistSelection && this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = true;\n this.ensureCheckboxFieldSelection();\n }\n else if (this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = false;\n this.ensureCheckboxFieldSelection();\n }\n else {\n gobj.isPersistSelection = false;\n this.selectedRowState = {};\n }\n };\n Selection.prototype.ensureCheckboxFieldSelection = function () {\n var gobj = this.parent;\n this.primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n if (!gobj.enableVirtualization && this.chkField\n && ((gobj.isPersistSelection && Object.keys(this.selectedRowState).length === 0) ||\n !gobj.isPersistSelection)) {\n var data = this.parent.getDataModule();\n var query = new Query().where(this.chkField, 'equal', true);\n if (!query.params) {\n query.params = this.parent.query.params;\n }\n var dataManager = data.getData({}, query);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n this.parent.showSpinner();\n dataManager.then(function (e) {\n proxy_1.dataSuccess(e.result);\n proxy_1.refreshPersistSelection();\n proxy_1.parent.hideSpinner();\n });\n }\n };\n Selection.prototype.dataSuccess = function (res) {\n var data = (this.parent.getDataModule().isRemote()) ? res['result'] : res;\n for (var i = 0; i < data.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (isNullOrUndefined(this.selectedRowState[\"\" + pkValue]) && data[parseInt(i.toString(), 10)][this.chkField]) {\n this.selectedRowState[\"\" + pkValue] = data[parseInt(i.toString(), 10)][this.chkField];\n }\n }\n this.persistSelectedData = data;\n };\n Selection.prototype.setRowSelection = function (state) {\n if (!(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))) {\n if (state) {\n if (this.isPartialSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n for (var _i = 0, rowObj_1 = rowObj; _i < rowObj_1.length; _i++) {\n var row = rowObj_1[_i];\n this.selectedRowState[this.getPkValue(this.primaryKey, row.data)] = true;\n }\n }\n else {\n var selectedData = this.isPartialSelection ? this.parent.partialSelectedRecords : this.getData();\n if (this.parent.groupSettings.columns.length) {\n for (var _a = 0, _b = this.isPartialSelection ? selectedData : selectedData.records; _a < _b.length; _a++) {\n var data = _b[_a];\n this.selectedRowState[this.getPkValue(this.primaryKey, data)] = true;\n }\n }\n else {\n for (var _c = 0, selectedData_1 = selectedData; _c < selectedData_1.length; _c++) {\n var data = selectedData_1[_c];\n this.selectedRowState[this.getPkValue(this.primaryKey, data)] = true;\n }\n }\n }\n }\n else {\n this.selectedRowState = {};\n }\n // (this.getData()).forEach(function (data) {\n // this.selectedRowState[data[this.primaryKey]] = true;\n // })\n }\n else {\n if (state) {\n var selectedStateKeys = Object.keys(this.selectedRowState);\n var unSelectedRowStateKeys = Object.keys(this.unSelectedRowState);\n if (!this.isCheckboxReset) {\n for (var _d = 0, _e = this.parent.currentViewData; _d < _e.length; _d++) {\n var data = _e[_d];\n if (!isNullOrUndefined(data[this.primaryKey])) {\n var key = data[this.primaryKey].toString();\n if (selectedStateKeys.indexOf(key) === -1 && unSelectedRowStateKeys.indexOf(key) === -1) {\n this.selectedRowState[data[this.primaryKey]] = true;\n }\n }\n }\n }\n }\n else {\n this.selectedRowState = {};\n this.unSelectedRowState = {};\n this.rmtHdrChkbxClicked = false;\n }\n }\n };\n Selection.prototype.getData = function () {\n return this.parent.getDataModule().dataManager.executeLocal(this.parent.getDataModule().generateQuery(true));\n };\n Selection.prototype.getAvailableSelectedData = function () {\n var filteredSearchedSelectedData = new DataManager(this.persistSelectedData)\n .executeLocal(this.parent.getDataModule().generateQuery(true));\n if (this.parent.groupSettings.columns.length && filteredSearchedSelectedData &&\n filteredSearchedSelectedData.records) {\n filteredSearchedSelectedData = filteredSearchedSelectedData.records.slice();\n }\n return filteredSearchedSelectedData;\n };\n Selection.prototype.refreshPersistSelection = function () {\n var rows = this.parent.getRows();\n if (this.parent.isCheckBoxSelection && this.parent.isFrozenGrid()) {\n var mtbody = this.parent.getMovableContentTbody();\n if (mtbody.querySelector('.e-checkselect')) {\n rows = this.parent.getMovableRows();\n }\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var frtbody = this.parent.getFrozenRightContentTbody();\n if (frtbody.querySelector('.e-checkselect')) {\n rows = this.parent.getFrozenRightRows();\n }\n }\n }\n this.totalRecordsCount = this.parent.getCurrentViewRecords().length;\n if (this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (!isNullOrUndefined(rows) && rows.length > 0 && (this.parent.isPersistSelection || this.chkField)) {\n var indexes = [];\n for (var j = 0; j < rows.length; j++) {\n var rowObj = this.getRowObj(rows[parseInt(j.toString(), 10)]);\n var pKey = rowObj ? rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null : null;\n if (pKey === null) {\n return;\n }\n if (this.isPartialSelection && !rowObj.isSelectable) {\n continue;\n }\n var checkState = void 0;\n var chkBox = rows[parseInt(j.toString(), 10)].querySelector('.e-checkselect');\n if (this.selectedRowState[\"\" + pKey] || (this.parent.checkAllRows === 'Check' && this.selectedRowState[\"\" + pKey] &&\n this.totalRecordsCount === Object.keys(this.selectedRowState).length && this.chkAllCollec.indexOf(pKey) < 0)\n || (this.parent.checkAllRows === 'Uncheck' && this.chkAllCollec.indexOf(pKey) > 0 && !this.parent.selectedRowIndex)\n || (this.parent.checkAllRows === 'Intermediate' && !isNullOrUndefined(this.chkField) && rowObj.data[this.chkField])) {\n indexes.push(parseInt(rows[parseInt(j.toString(), 10)].getAttribute(literals.dataRowIndex), 10));\n checkState = true;\n }\n else {\n checkState = false;\n if (this.checkedTarget !== chkBox && this.parent.isCheckBoxSelection && chkBox) {\n removeAddCboxClasses(chkBox.nextElementSibling, checkState);\n }\n }\n this.updatePersistCollection(rows[parseInt(j.toString(), 10)], checkState);\n }\n if (this.isSingleSel() && indexes.length > 0) {\n this.selectRow(indexes[0], true);\n }\n else {\n this.selectRows(indexes);\n }\n }\n if ((this.parent.isCheckBoxSelection || this.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') && this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n }\n };\n Selection.prototype.actionBegin = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n var editChkBox = this.parent.element.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n var row = closest(editChkBox, '.' + literals.editedRow);\n if (row) {\n if (this.parent.editSettings.mode === 'Dialog') {\n row = this.parent.element.querySelector('.e-dlgeditrow');\n }\n var rowObj = this.getRowObj(row);\n if (!rowObj) {\n return;\n }\n this.selectedRowState[this.getPkValue(this.primaryKey, rowObj.data)] = rowObj.isSelected = editChkBox.checked;\n }\n else {\n this.isCheckedOnAdd = editChkBox.checked;\n }\n }\n }\n if (this.parent.isPersistSelection && this.isPartialSelection) {\n if (e.requestType === 'paging' && (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))) {\n this.selectedRowIndexes = [];\n }\n if (e.requestType === 'filtering' || e.requestType === 'searching') {\n this.parent.partialSelectedRecords = [];\n this.parent.disableSelectedRecords = [];\n }\n }\n };\n Selection.prototype.actionComplete = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n if (e.action === 'add') {\n if (this.isCheckedOnAdd) {\n var rowObj = this.parent.getRowObjectFromUID(this.parent.getRows()[e.selectedRow].getAttribute('data-uid'));\n this.selectedRowState[this.getPkValue(this.primaryKey, rowObj.data)] = rowObj.isSelected = this.isCheckedOnAdd;\n }\n this.isHdrSelectAllClicked = false;\n this.setCheckAllState();\n }\n this.refreshPersistSelection();\n }\n if (e.requestType === 'delete' && this.parent.isPersistSelection) {\n var records = e.data;\n var data = records.slice();\n for (var i = 0; i < data.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(pkValue)) {\n this.updatePersistDelete(pkValue, this.isPartialSelection);\n }\n }\n this.isHdrSelectAllClicked = false;\n this.setCheckAllState();\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (e.requestType === 'paging') {\n if (this.parent.isPersistSelection && this.isPartialSelection && this.isHdrSelectAllClicked) {\n var rows = this.parent.getRowsObject();\n var indexes = [];\n for (var i = 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].isSelectable) {\n indexes.push(rows[parseInt(i.toString(), 10)].index);\n }\n }\n if (indexes.length) {\n this.selectRows(indexes);\n }\n }\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevECIdxs = undefined;\n }\n };\n Selection.prototype.onDataBound = function () {\n if (!this.parent.enableVirtualization && this.parent.isPersistSelection) {\n if (this.selectedRecords.length) {\n this.isPrevRowSelection = true;\n }\n }\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && this.rmtHdrChkbxClicked) {\n if (this.parent.checkAllRows === 'Intermediate') {\n this.setRowSelection(true);\n }\n else if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n }\n }\n if (this.parent.enableVirtualization) {\n this.setCheckAllState();\n }\n if (this.parent.isPersistSelection) {\n this.refreshPersistSelection();\n }\n this.initialRowSelection = this.isRowType() && this.parent.element.querySelectorAll('.e-selectionbackground') &&\n this.parent.getSelectedRows().length ? true : false;\n if (this.parent.isCheckBoxSelection && !this.initialRowSelection) {\n var totalRecords = this.parent.getRowsObject();\n var indexes = [];\n for (var i = 0; i < totalRecords.length; i++) {\n if (totalRecords[parseInt(i.toString(), 10)].isSelected) {\n indexes.push(i);\n }\n }\n if (indexes.length) {\n this.selectRows(indexes);\n }\n this.initialRowSelection = true;\n }\n };\n Selection.prototype.updatePersistSelectedData = function (checkState) {\n if (this.parent.isPersistSelection) {\n var rows = this.parent.getRows();\n for (var i = 0; i < rows.length; i++) {\n this.updatePersistCollection(rows[parseInt(i.toString(), 10)], checkState);\n }\n if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n this.persistSelectedData = (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n ? this.persistSelectedData : [];\n }\n else if (this.parent.checkAllRows === 'Check') {\n this.setRowSelection(true);\n this.persistSelectedData = !(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n && !this.isPartialSelection ?\n this.parent.groupSettings.columns.length ? this.getData().records.slice() :\n this.getData().slice() : this.persistSelectedData;\n }\n }\n };\n Selection.prototype.checkSelectAllAction = function (checkState) {\n var cRenderer = this.getRenderer();\n var editForm = this.parent.element.querySelector('.e-gridform');\n this.checkedTarget = this.getCheckAllBox();\n if (checkState && this.getCurrentBatchRecordChanges().length) {\n this.parent.checkAllRows = 'Check';\n this.updatePersistSelectedData(checkState);\n this.selectRowsByRange(cRenderer.getVirtualRowIndex(0), cRenderer.getVirtualRowIndex(this.getCurrentBatchRecordChanges().length - 1));\n }\n else {\n this.parent.checkAllRows = 'Uncheck';\n this.updatePersistSelectedData(checkState);\n this.clearSelection();\n }\n this.chkAllCollec = [];\n if (!isNullOrUndefined(editForm)) {\n var editChkBox = editForm.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n removeAddCboxClasses(editChkBox.nextElementSibling, checkState);\n }\n }\n };\n Selection.prototype.checkSelectAll = function (checkBox) {\n var _this = this;\n var stateStr = this.getCheckAllStatus(checkBox);\n var state = stateStr === 'Check';\n this.isHeaderCheckboxClicked = true;\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && ((stateStr === 'Uncheck' || this.isCheckboxReset) ||\n (this.parent.getDataModule().isRemote() && stateStr === 'Intermediate' && this.parent.isPersistSelection))) {\n this.rmtHdrChkbxClicked = true;\n }\n else {\n this.rmtHdrChkbxClicked = false;\n }\n if (this.rmtHdrChkbxClicked && this.isCheckboxReset) {\n this.unSelectedRowState = {};\n }\n this.isCheckboxReset = false;\n if (stateStr === 'Intermediate') {\n if (!this.chkField && !this.parent.isPersistSelection) {\n state = this.getCurrentBatchRecordChanges().some(function (data) {\n return _this.getPkValue(_this.primaryKey, data) in _this.selectedRowState;\n });\n }\n if (this.parent.getDataModule().isRemote() && this.parent.isPersistSelection) {\n for (var i = 0; i < this.getCurrentBatchRecordChanges().length; i++) {\n if (Object.keys(this.selectedRowState).includes((this.getPkValue(this.primaryKey, this.getCurrentBatchRecordChanges()[\"\" + i])).toString())) {\n state = true;\n }\n else {\n state = false;\n break;\n }\n }\n }\n }\n if (this.parent.isPersistSelection && this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n this.checkSelectAllAction(!state);\n this.target = null;\n if (this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n this.updateSelectedRowIndexes();\n }\n this.triggerChkChangeEvent(checkBox, !state);\n };\n Selection.prototype.getCheckAllStatus = function (ele) {\n var classes = ele ? ele.nextElementSibling.classList :\n this.getCheckAllBox().nextElementSibling.classList;\n var status;\n if (classes.contains('e-check')) {\n status = 'Check';\n }\n else if (classes.contains('e-uncheck')) {\n status = 'Uncheck';\n }\n else if (classes.contains('e-stop')) {\n status = 'Intermediate';\n }\n else {\n status = 'None';\n }\n return status;\n };\n Selection.prototype.checkSelect = function (checkBox) {\n var target = closest(this.checkedTarget, '.' + literals.rowCell);\n var gObj = this.parent;\n this.isMultiCtrlRequest = true;\n var rIndex = 0;\n this.isHeaderCheckboxClicked = false;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.getElementsByClassName(literals.addedRow).length > 0 &&\n this.parent.editSettings.newRowPosition === 'Top') {\n ++rIndex;\n }\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(literals.dataColIndex), 10));\n this.moveIntoUncheckCollection(closest(target, '.' + literals.row));\n this.setCheckAllState();\n this.isMultiCtrlRequest = false;\n this.triggerChkChangeEvent(checkBox, checkBox.nextElementSibling.classList.contains('e-check'));\n };\n Selection.prototype.moveIntoUncheckCollection = function (row) {\n if (this.parent.checkAllRows === 'Check' || this.parent.checkAllRows === 'Uncheck') {\n var rowObj = this.getRowObj(row);\n var pKey = rowObj && rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null;\n if (!pKey) {\n return;\n }\n if (this.chkAllCollec.indexOf(pKey) < 0) {\n this.chkAllCollec.push(pKey);\n }\n else {\n this.chkAllCollec.splice(this.chkAllCollec.indexOf(pKey), 1);\n }\n }\n };\n Selection.prototype.triggerChkChangeEvent = function (checkBox, checkState) {\n this.parent.trigger(events.checkBoxChange, {\n checked: checkState, selectedRowIndexes: this.parent.getSelectedRowIndexes(),\n target: checkBox\n });\n if (!this.parent.isEdit) {\n this.checkedTarget = null;\n }\n };\n Selection.prototype.updateSelectedRowIndexes = function () {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) &&\n this.isPartialSelection && !(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && this.parent.selectionSettings.persistSelection) {\n if (this.parent.checkAllRows !== 'Uncheck') {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n for (var _i = 0, rowObj_2 = rowObj; _i < rowObj_2.length; _i++) {\n var row = rowObj_2[_i];\n this.selectedRowIndexes.push(row.index);\n }\n }\n }\n };\n Selection.prototype.updateSelectedRowIndex = function (index) {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && !this.isPartialSelection) {\n if (this.parent.checkAllRows === 'Check') {\n this.selectedRowIndexes = [];\n var dataLength = this.getData().length;\n for (var data = 0; data < dataLength; data++) {\n this.selectedRowIndexes.push(data);\n }\n }\n else if (this.parent.checkAllRows === 'Uncheck') {\n this.selectedRowIndexes = [];\n }\n else {\n var row = this.parent.getRowByIndex(index);\n if (index && row && row.getAttribute('aria-selected') === 'false') {\n var selectedVal = this.selectedRowIndexes.indexOf(index);\n this.selectedRowIndexes.splice(selectedVal, 1);\n }\n }\n }\n };\n Selection.prototype.isAllSelected = function (count) {\n if (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) {\n return this.getAvailableSelectedData().length === (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling\n ? this.parent.totalDataRecordsCount : this.totalRecordsCount);\n }\n else {\n if (this.isPartialSelection) {\n if (this.parent.allowPaging && this.parent.pageSettings.pageSize < this.parent.pageSettings.totalRecordsCount) {\n var data = this.parent.partialSelectedRecords;\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n }\n else {\n return this.isSelectAllRowCount(count);\n }\n }\n else {\n var data = this.getData();\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n }\n }\n };\n Selection.prototype.someDataSelected = function () {\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && (this.parent.searchSettings.key.length || this.parent.filterSettings.columns.length)) {\n var filteredSearchedSelectedData = this.getAvailableSelectedData();\n for (var i = 0; i < filteredSearchedSelectedData.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, filteredSearchedSelectedData[parseInt(i.toString(), 10)]);\n if (this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n }\n var data = this.isPartialSelection ? this.parent.partialSelectedRecords\n : (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) ? [] : this.getData();\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n };\n Selection.prototype.setCheckAllState = function (index, isInteraction) {\n if (this.parent.isCheckBoxSelection || this.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n var checkToSelectAll = false;\n var isFiltered = false;\n var checkedLen = Object.keys(this.selectedRowState).length;\n if (!this.parent.isPersistSelection) {\n checkedLen = this.selectedRowIndexes.length;\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.parent.isPersistSelection && !((this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n && this.isPartialSelection) && (this.parent.searchSettings.key.length\n || this.parent.filterSettings.columns.length)) {\n isFiltered = true;\n checkToSelectAll = this.isAllSelected(checkedLen);\n }\n var input = this.getCheckAllBox();\n if (input) {\n var spanEle = input.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n setChecked(input, false);\n input.indeterminate = false;\n if ((checkToSelectAll && isFiltered && (this.parent.getDataModule().isRemote() ||\n (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result) ||\n this.getData().length)) || (!isFiltered && ((checkedLen === this.totalRecordsCount && this.totalRecordsCount\n && !this.isPartialSelection && (!(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n || this.parent.allowPaging)) ||\n (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling\n && this.isPartialSelection && (this.isSelectAllRowCount(checkedLen) || this.isHdrSelectAllClicked))\n || ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && ((!(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n this.getData().length && checkedLen === this.getData().length) || ((this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n !this.isPartialSelection && ((checkedLen === this.parent.totalDataRecordsCount) || (this.isSelectAllRowCount(checkedLen) &&\n !this.parent.isPersistSelection))) ||\n (this.isPartialSelection && (this.isHdrSelectAllClicked || this.isSelectAllRowCount(checkedLen)))))))) {\n addClass([spanEle], ['e-check']);\n setChecked(input, true);\n if (isInteraction) {\n this.getRenderer().setSelection(null, true, true);\n }\n this.parent.checkAllRows = 'Check';\n }\n else if (((!this.selectedRowIndexes.length && (!this.parent.enableVirtualization ||\n (!this.persistSelectedData.length && !isFiltered) || (isFiltered && this.someDataSelected())) ||\n checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) && !this.parent.allowPaging) ||\n (this.parent.allowPaging && (checkedLen === 0 || (checkedLen && isFiltered && this.someDataSelected())))) {\n addClass([spanEle], ['e-uncheck']);\n if (isInteraction) {\n this.getRenderer().setSelection(null, false, true);\n }\n this.parent.checkAllRows = 'Uncheck';\n }\n else {\n addClass([spanEle], ['e-stop']);\n this.parent.checkAllRows = 'Intermediate';\n input.indeterminate = true;\n }\n if (checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n if (this.isPartialSelection) {\n var rowCount = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; }).length;\n if (rowCount === 0 && spanEle.parentElement.querySelector('.e-frame').classList.contains('e-uncheck')) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n }\n if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && !(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))) {\n this.updateSelectedRowIndex(index);\n }\n }\n }\n };\n Selection.prototype.isSelectAllRowCount = function (count) {\n var rowCount = 0;\n var rowObj = this.parent.getRowsObject();\n if (this.parent.selectionSettings.persistSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var dataLen = (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) ?\n this.parent.totalDataRecordsCount : this.getData() && this.getData().length;\n if (dataLen === rowObj.length) {\n rowCount = rowObj.filter(function (e) { return e.isSelectable; }).length;\n return rowCount && count === rowCount;\n }\n else {\n return false;\n }\n }\n else {\n if (this.parent.allowPaging && this.parent.selectionSettings.persistSelection) {\n rowCount = this.parent.partialSelectedRecords.length + this.parent.disableSelectedRecords.length;\n if (rowCount === this.totalRecordsCount) {\n return this.parent.partialSelectedRecords.length && count === this.parent.partialSelectedRecords.length;\n }\n else {\n return false;\n }\n }\n else {\n rowCount = rowObj.filter(function (e) { return e.isSelectable; }).length;\n return rowCount && count === rowCount;\n }\n }\n };\n Selection.prototype.keyDownHandler = function (e) {\n // Below are keyCode for command key in MAC OS. Safari/Chrome(91-Left command, 93-Right Command), Opera(17), FireFox(224)\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = true;\n }\n var targetHeadCell = parentsUntil(e.target, 'e-headercell');\n var targetRowCell = parentsUntil(e.target, literals.rowCell);\n var isCheckBox = targetHeadCell ? targetHeadCell.children[0].classList.contains('e-headerchkcelldiv') :\n targetRowCell ? targetRowCell.classList.contains('e-gridchkbox') : false;\n if (isCheckBox && !this.parent.allowKeyboard && e.keyCode === 32) {\n e.preventDefault();\n }\n };\n Selection.prototype.keyUpHandler = function (e) {\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = false;\n }\n };\n Selection.prototype.clickHandler = function (e) {\n var target = e.target;\n this.actualTarget = target;\n if (this.selectionSettings.persistSelection) {\n this.deSelectedData = iterateExtend(this.persistSelectedData);\n }\n if (parentsUntil(target, literals.row) || parentsUntil(target, 'e-headerchkcelldiv') ||\n (this.selectionSettings.allowColumnSelection && target.classList.contains('e-headercell'))) {\n this.isInteracted = true;\n }\n this.isMultiCtrlRequest = e.ctrlKey || this.enableSelectMultiTouch ||\n (this.isMacOS && this.cmdKeyPressed);\n if (!this.parent.allowKeyboard) {\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n }\n else {\n this.isMultiShiftRequest = e.shiftKey;\n }\n this.popUpClickHandler(e);\n var chkSelect = false;\n this.preventFocus = true;\n var checkBox;\n var checkWrap = parentsUntil(target, 'e-checkbox-wrapper');\n this.checkSelectAllClicked = checkWrap && checkWrap.getElementsByClassName('e-checkselectall') ||\n (this.selectionSettings.persistSelection && parentsUntil(target, literals.row)) ? true : false;\n if (this.selectionSettings.persistSelection && this.isPartialSelection && parentsUntil(target, 'e-headerchkcelldiv')\n && !target.querySelector('.e-checkbox-disabled')) {\n this.isHdrSelectAllClicked = true;\n }\n if (checkWrap && checkWrap.querySelectorAll('.e-checkselect,.e-checkselectall').length > 0) {\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n chkSelect = true;\n }\n this.drawBorders();\n this.updateAutoFillPosition();\n target = parentsUntil(target, literals.rowCell);\n if (this.parent.isReact && (target && !target.parentElement && target.classList.contains('e-rowcell'))) {\n target = this.parent.getCellFromIndex(parseInt(target.getAttribute('index'), 10), parseInt(target.getAttribute('data-colindex'), 10));\n }\n if (((target && target.parentElement.classList.contains(literals.row) && !this.parent.selectionSettings.checkboxOnly) || chkSelect)\n && !this.isRowDragSelected) {\n if (this.parent.isCheckBoxSelection) {\n this.isMultiCtrlRequest = true;\n }\n this.target = target;\n if (!isNullOrUndefined(checkBox)) {\n this.checkedTarget = checkBox;\n if (checkBox.classList.contains('e-checkselectall')) {\n this.checkSelectAll(checkBox);\n }\n else {\n this.checkSelect(checkBox);\n }\n }\n else {\n var gObj = this.parent;\n var rIndex = 0;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.getElementsByClassName(literals.addedRow).length > 0) {\n ++rIndex;\n }\n if (!this.mUPTarget || !this.mUPTarget.isEqualNode(target)) {\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(literals.dataColIndex), 10));\n }\n this.parent.hoverFrozenRows(e);\n if (this.parent.isCheckBoxSelection) {\n this.moveIntoUncheckCollection(closest(target, '.' + literals.row));\n this.setCheckAllState();\n }\n }\n if (!this.parent.isCheckBoxSelection && Browser.isDevice && !this.isSingleSel()) {\n this.showPopup(e);\n }\n }\n else if (e.target.classList.contains('e-headercell') &&\n !e.target.classList.contains('e-stackedheadercell')) {\n var uid = e.target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n this.headerSelectionHandler(this.parent.getColumnIndexByUid(uid));\n }\n this.isMultiCtrlRequest = false;\n this.isMultiShiftRequest = false;\n if (isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n this.preventFocus = false;\n }\n };\n Selection.prototype.popUpClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.e-headercell') || e.target.classList.contains(literals.rowCell) ||\n closest(target, '.e-gridpopup')) {\n if (target.classList.contains('e-rowselect')) {\n if (!target.classList.contains('e-spanclicked')) {\n target.classList.add('e-spanclicked');\n this.enableSelectMultiTouch = true;\n }\n else {\n target.classList.remove('e-spanclicked');\n this.enableSelectMultiTouch = false;\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n }\n else {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.showPopup = function (e) {\n if (!this.selectionSettings.enableSimpleMultiRowSelection) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-gridpopup'), e, 'e-rowselect e-icons e-icon-rowselect' +\n (!this.isSingleSel() && (this.selectedRecords.length > (this.parent.getFrozenColumns() ? 2 : 1)\n || this.selectedRowCellIndexes.length > 1) ? ' e-spanclicked' : ''));\n }\n };\n Selection.prototype.rowCellSelectionHandler = function (rowIndex, cellIndex) {\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n if (!this.isDragged) {\n this.selectRow(rowIndex, this.selectionSettings.enableToggle);\n }\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, this.selectionSettings.enableToggle);\n if (this.selectedRowCellIndexes.length) {\n this.updateAutoFillPosition();\n }\n this.drawBorders();\n }\n else if (this.isMultiShiftRequest) {\n if (this.parent.isCheckBoxSelection || (!this.parent.isCheckBoxSelection &&\n !closest(this.target, '.' + literals.rowCell).classList.contains(literals.gridChkBox))) {\n this.selectRowsByRange(isUndefined(this.prevRowIndex) ? rowIndex : this.prevRowIndex, rowIndex);\n }\n else {\n this.addRowsToSelection([rowIndex]);\n }\n this.selectCellsByRange(isUndefined(this.prevCIdxs) ? { rowIndex: rowIndex, cellIndex: cellIndex } : this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.updateAutoFillPosition();\n this.drawBorders();\n }\n else {\n this.addRowsToSelection([rowIndex]);\n this.addCellsToSelection([{ rowIndex: rowIndex, cellIndex: cellIndex }]);\n this.showHideBorders('none');\n }\n this.isDragged = false;\n };\n Selection.prototype.onCellFocused = function (e) {\n if (this.parent.frozenRows && e.container.isHeader && e.byKey) {\n if (e.keyArgs.action === 'upArrow') {\n if (this.parent.allowFiltering) {\n e.isJump = e.element.tagName === 'INPUT' ? true : false;\n }\n else {\n e.isJump = e.element.tagName === 'TH' ? true : false;\n }\n }\n else {\n if (e.keyArgs.action === 'downArrow') {\n var rIdx = Number(e.element.parentElement.getAttribute(literals.dataRowIndex));\n e.isJump = rIdx === 0 ? true : false;\n }\n else {\n if (e.keyArgs.action === 'ctrlHome') {\n e.isJump = true;\n }\n }\n }\n }\n var clear = this.parent.isFrozenGrid() ? (((e.container.isHeader && e.element.tagName !== 'TD' && e.isJump &&\n !this.selectionSettings.allowColumnSelection) ||\n ((e.container.isContent || e.element.tagName === 'TD') && !(e.container.isSelectable || e.element.tagName === 'TD')))\n && !(e.byKey && e.keyArgs.action === 'space')) : ((e.container.isHeader && e.isJump) ||\n (e.container.isContent && !e.container.isSelectable)) && !(e.byKey && e.keyArgs.action === 'space')\n && !(e.element.classList.contains('e-detailrowexpand') || e.element.classList.contains('e-detailrowcollapse'));\n var headerAction = (e.container.isHeader && e.element.tagName !== 'TD' && !closest(e.element, '.' + literals.rowCell))\n && !(e.byKey && e.keyArgs.action === 'space');\n if (!e.byKey || clear) {\n if (clear && !this.parent.isCheckBoxSelection) {\n this.clearSelection();\n }\n return;\n }\n var _a = e.container.isContent ? e.container.indexes : e.indexes, rowIndex = _a[0], cellIndex = _a[1];\n var prev = this.focus.getPrevIndexes();\n if (this.parent.frozenRows) {\n if (e.container.isHeader && (e.element.tagName === 'TD' || closest(e.element, '.' + literals.rowCell))) {\n var thLen = this.parent.getHeaderTable().querySelector('thead').childElementCount;\n rowIndex -= thLen;\n prev.rowIndex = !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex - thLen : null;\n }\n else {\n rowIndex += this.parent.frozenRows;\n prev.rowIndex = prev.rowIndex === 0 || !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex + this.parent.frozenRows : null;\n }\n }\n if (this.parent.isFrozenGrid()) {\n var cIdx = Number(e.element.getAttribute(literals.dataColIndex));\n var selectedIndexes = this.parent.getSelectedRowCellIndexes();\n if (selectedIndexes.length && prev.cellIndex === 0) {\n prev.cellIndex = selectedIndexes[selectedIndexes.length - 1].cellIndexes[0];\n }\n prev.cellIndex = !isNullOrUndefined(prev.cellIndex) ? (prev.cellIndex === cellIndex ? cIdx : cIdx - 1) : null;\n cellIndex = cIdx;\n }\n if (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) {\n rowIndex = parseInt(e.element.parentElement.getAttribute('data-rowindex'), 10);\n }\n if ((headerAction || (['ctrlPlusA', 'escape'].indexOf(e.keyArgs.action) === -1 &&\n e.keyArgs.action !== 'space' && rowIndex === prev.rowIndex && cellIndex === prev.cellIndex)) &&\n !this.selectionSettings.allowColumnSelection) {\n return;\n }\n this.preventFocus = true;\n var columnIndex = this.getKeyColIndex(e);\n if (this.needColumnSelection) {\n cellIndex = columnIndex;\n }\n if (this.parent.element.classList.contains('e-gridcell-read') && (e.keyArgs.action === 'tab' || e.keyArgs.action === 'shiftTab'\n || e.keyArgs.action === 'rightArrow' || e.keyArgs.action === 'leftArrow')) {\n var targetLabel = this.target.getAttribute('aria-label');\n targetLabel = this.target.innerHTML + ' column header ' + this.parent.getColumnByIndex(cellIndex).field;\n this.target.setAttribute('aria-label', targetLabel);\n }\n switch (e.keyArgs.action) {\n case 'downArrow':\n case 'upArrow':\n case 'enter':\n case 'shiftEnter':\n this.target = e.element;\n this.isKeyAction = true;\n this.applyDownUpKey(rowIndex, cellIndex);\n break;\n case 'rightArrow':\n case 'leftArrow':\n this.applyRightLeftKey(rowIndex, cellIndex);\n break;\n case 'shiftDown':\n case 'shiftUp':\n this.shiftDownKey(rowIndex, cellIndex);\n break;\n case 'shiftLeft':\n case 'shiftRight':\n this.applyShiftLeftRightKey(rowIndex, cellIndex);\n break;\n case 'home':\n case 'end':\n cellIndex = e.keyArgs.action === 'end' ? this.getLastColIndex(rowIndex) : 0;\n this.applyHomeEndKey(rowIndex, cellIndex);\n break;\n case 'ctrlHome':\n case 'ctrlEnd':\n this.applyCtrlHomeEndKey(rowIndex, cellIndex);\n break;\n case 'escape':\n this.clearSelection();\n break;\n case 'ctrlPlusA':\n this.ctrlPlusA();\n break;\n case 'space':\n this.applySpaceSelection(e.element);\n break;\n case 'tab':\n if (this.parent.editSettings.allowNextRowEdit) {\n this.selectRow(rowIndex);\n }\n break;\n }\n this.needColumnSelection = false;\n this.preventFocus = false;\n this.positionBorders();\n this.updateAutoFillPosition();\n };\n Selection.prototype.getKeyColIndex = function (e) {\n var uid;\n var index = null;\n var stackedHeader = e.element.querySelector('.e-stackedheadercelldiv');\n if (this.selectionSettings.allowColumnSelection && parentsUntil(e.element, 'e-columnheader')) {\n this.needColumnSelection = e.container.isHeader ? true : false;\n if (stackedHeader) {\n if (e.keyArgs.action === 'rightArrow' || e.keyArgs.action === 'leftArrow') {\n return index;\n }\n uid = stackedHeader.getAttribute('e-mappinguid');\n var innerColumn = this.getstackedColumns(this.parent.getColumnByUid(uid).columns);\n var lastIndex = this.parent.getColumnIndexByUid(innerColumn[innerColumn.length - 1].uid);\n var firstIndex = this.parent.getColumnIndexByUid(innerColumn[0].uid);\n index = this.prevColIndex >= lastIndex ? firstIndex : lastIndex;\n }\n else {\n index = this.parent.getColumnIndexByUid(e.element\n .querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n }\n }\n return index;\n };\n /**\n * Apply ctrl + A key selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.ctrlPlusA = function () {\n if (this.isRowType() && !this.isSingleSel()) {\n this.selectRowsByRange(0, this.getCurrentBatchRecordChanges().length - 1);\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange({ rowIndex: 0, cellIndex: 0 }, { rowIndex: this.parent.getRows().length - 1, cellIndex: this.parent.getColumns().length - 1 });\n }\n };\n Selection.prototype.applySpaceSelection = function (target) {\n if (target.classList.contains('e-checkselectall')) {\n this.checkedTarget = target;\n this.checkSelectAll(this.checkedTarget);\n }\n else {\n if (target.classList.contains('e-checkselect')) {\n this.checkedTarget = target;\n this.checkSelect(this.checkedTarget);\n }\n }\n };\n Selection.prototype.applyDownUpKey = function (rowIndex, cellIndex) {\n var gObj = this.parent;\n if (this.parent.isCheckBoxSelection && this.parent.checkAllRows === 'Check' && !this.selectionSettings.persistSelection &&\n !this.selectionSettings.checkboxOnly) {\n this.checkSelectAllAction(false);\n this.checkedTarget = null;\n }\n if (this.isRowType() && !this.selectionSettings.checkboxOnly) {\n if (this.parent.frozenRows) {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n else {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n };\n Selection.prototype.applyUpDown = function (rowIndex) {\n if (rowIndex < 0) {\n return;\n }\n if (!this.target) {\n this.target = this.parent.getRows()[0].children[this.parent.groupSettings.columns.length || 0];\n }\n var cIndex = parseInt(this.target.getAttribute(literals.dataColIndex), 10);\n var frzCols = this.parent.getFrozenColumns();\n if (frzCols) {\n if (cIndex >= frzCols) {\n this.target =\n this.contentRenderer.getMovableRowByIndex(rowIndex).getElementsByClassName(literals.rowCell)[cIndex - frzCols];\n }\n else {\n this.target = this.contentRenderer.getRowByIndex(rowIndex)\n .getElementsByClassName(literals.rowCell)[parseInt(cIndex.toString(), 10)];\n }\n }\n else {\n var row = this.contentRenderer.getRowByIndex(rowIndex);\n if (row) {\n this.target = row.getElementsByClassName(literals.rowCell)[parseInt(cIndex.toString(), 10)];\n }\n }\n this.addAttribute(this.target);\n if (this.parent.element.classList.contains('e-gridcell-read')) {\n var targetLabel = this.target.getAttribute('aria-label');\n targetLabel = this.target.innerHTML;\n this.target.setAttribute('aria-label', targetLabel);\n }\n };\n Selection.prototype.applyRightLeftKey = function (rowIndex, cellIndex) {\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n else if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n this.addAttribute(this.target);\n }\n };\n Selection.prototype.applyHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n else {\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n };\n /**\n * Apply shift+down key selection\n *\n * @param {number} rowIndex - specfies the rowIndex\n * @param {number} cellIndex - specifies the CellIndex\n * @returns {void}\n * @hidden\n */\n Selection.prototype.shiftDownKey = function (rowIndex, cellIndex) {\n this.isMultiShiftRequest = true;\n if (this.isRowType() && !this.isSingleSel()) {\n if (!isUndefined(this.prevRowIndex)) {\n this.selectRowsByRange(this.prevRowIndex, rowIndex);\n this.applyUpDown(rowIndex);\n }\n else if (this.isPartialSelection) {\n this.selectRow(rowIndex, true);\n }\n else {\n this.selectRow(0, true);\n }\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange(this.prevCIdxs || { rowIndex: 0, cellIndex: 0 }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.applyShiftLeftRightKey = function (rowIndex, cellIndex) {\n this.isMultiShiftRequest = true;\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumnsByRange(this.prevColIndex, cellIndex);\n }\n else {\n this.selectCellsByRange(this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.getstackedColumns = function (column) {\n var innerColumnIndexes = [];\n for (var i = 0, len = column.length; i < len; i++) {\n if (column[parseInt(i.toString(), 10)].columns) {\n this.getstackedColumns(column[parseInt(i.toString(), 10)].columns);\n }\n else {\n innerColumnIndexes.push(column[parseInt(i.toString(), 10)]);\n }\n }\n return innerColumnIndexes;\n };\n Selection.prototype.applyCtrlHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isRowType()) {\n this.selectRow(rowIndex, true);\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n };\n Selection.prototype.addRemoveClassesForRow = function (row, isAdd, clearAll) {\n var args = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n args[_i - 3] = arguments[_i];\n }\n if (row) {\n var cells = [].slice.call(row.getElementsByClassName(literals.rowCell));\n var detailIndentCell = row.querySelector('.e-detailrowcollapse') || row.querySelector('.e-detailrowexpand');\n var dragdropIndentCell = row.querySelector('.e-rowdragdrop');\n if (detailIndentCell) {\n cells.push(detailIndentCell);\n }\n if (dragdropIndentCell) {\n cells.push(dragdropIndentCell);\n }\n addRemoveActiveClasses.apply(void 0, [cells, isAdd].concat(args));\n }\n this.getRenderer().setSelection(row ? row.getAttribute('data-uid') : null, isAdd, clearAll);\n };\n Selection.prototype.isRowType = function () {\n return this.selectionSettings.mode === 'Row' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isCellType = function () {\n return this.selectionSettings.mode === 'Cell' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isSingleSel = function () {\n return this.selectionSettings.type === 'Single';\n };\n Selection.prototype.getRenderer = function () {\n if (isNullOrUndefined(this.contentRenderer)) {\n this.contentRenderer = this.factory.getRenderer(RenderType.Content);\n }\n return this.contentRenderer;\n };\n /**\n * Gets the collection of selected records.\n *\n * @returns {Object[]} returns the Object\n */\n Selection.prototype.getSelectedRecords = function () {\n var selectedData = [];\n if (!this.selectionSettings.persistSelection && this.selectedRecords.length) {\n selectedData = this.parent.getRowsObject().filter(function (row) { return row.isSelected; })\n .map(function (m) { return m.data; });\n }\n else {\n selectedData = this.persistSelectedData;\n }\n return selectedData;\n };\n /**\n * Select the column by passing start column index\n *\n * @param {number} index - specifies the index\n * @returns {void}\n */\n Selection.prototype.selectColumn = function (index) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(index.toString(), 10)])) {\n return;\n }\n var column = gObj.getColumnByIndex(index);\n var selectedCol = gObj.getColumnHeaderByUid(column.uid);\n var isColSelected = selectedCol.classList.contains('e-columnselection');\n if ((!gObj.selectionSettings.allowColumnSelection)) {\n return;\n }\n var isMultiColumns = this.selectedColumnsIndexes.length > 1 &&\n this.selectedColumnsIndexes.indexOf(index) > -1;\n this.clearColDependency();\n if (!isColSelected || !this.selectionSettings.enableToggle || isMultiColumns) {\n var args = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(args, events.columnSelecting);\n if (args.cancel) {\n this.disableInteracted();\n return;\n }\n if (!(gObj.selectionSettings.enableToggle && index === this.prevColIndex && isColSelected) || isMultiColumns) {\n this.updateColSelection(selectedCol, index);\n }\n var selectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(index);\n };\n /**\n * Select the columns by passing start and end column index\n *\n * @param {number} startIndex - specifies the start index\n * @param {number} endIndex - specifies the end index\n * @returns {void}\n */\n Selection.prototype.selectColumnsByRange = function (startIndex, endIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var indexes = [];\n if (gObj.selectionSettings.type === 'Single' || isNullOrUndefined(endIndex)) {\n indexes[0] = startIndex;\n }\n else {\n var min = startIndex < endIndex;\n for (var i = startIndex; min ? i <= endIndex : i >= endIndex; min ? i++ : i--) {\n indexes.push(i);\n }\n }\n this.selectColumns(indexes);\n };\n /**\n * Select the columns by passing column indexes\n *\n * @param {number[]} columnIndexes - specifies the columnIndexes\n * @returns {void}\n */\n Selection.prototype.selectColumns = function (columnIndexes) {\n var gObj = this.parent;\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n columnIndexes = [columnIndexes[0]];\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n this.clearColDependency();\n var selectingArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n for (var i = 0, len = columnIndexes.length; i < len; i++) {\n this.updateColSelection(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(columnIndexes[parseInt(i.toString(), 10)]).uid), columnIndexes[parseInt(i.toString(), 10)]);\n }\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n this.updateColProps(columnIndexes[0]);\n };\n /**\n * Select the column with existing column by passing column index\n *\n * @param {number} startIndex - specifies the start index\n * @returns {void}\n */\n Selection.prototype.selectColumnWithExisting = function (startIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var newCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(startIndex).uid);\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n this.clearColDependency();\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n if (this.selectedColumnsIndexes.indexOf(startIndex) > -1) {\n this.clearColumnSelection(startIndex);\n }\n else {\n var selectingArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: gObj.getColumnByIndex(startIndex),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n this.updateColSelection(newCol, startIndex);\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n column: gObj.getColumnByIndex(startIndex),\n columnIndexes: this.selectedColumnsIndexes,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(startIndex);\n };\n /**\n * Clear the column selection\n *\n * @param {number} clearIndex - specifies the clearIndex\n * @returns {void}\n */\n Selection.prototype.clearColumnSelection = function (clearIndex) {\n if (this.isColumnSelected) {\n var gObj = this.parent;\n if (!isNullOrUndefined(clearIndex) && this.selectedColumnsIndexes.indexOf(clearIndex) === -1) {\n return;\n }\n var index = !isNullOrUndefined(clearIndex) ? clearIndex :\n this.selectedColumnsIndexes[this.selectedColumnsIndexes.length - 1];\n var col = gObj.getColumnByIndex(index);\n var selectedCol = void 0;\n var column = gObj.getColumnByIndex(index);\n if (col.getFreezeTableName() === literals.frozenRight) {\n selectedCol = gObj.getFrozenRightColumnHeaderByIndex(index);\n }\n else if (col.getFreezeTableName() === 'movable') {\n selectedCol = gObj.getMovableColumnHeaderByIndex(index);\n }\n else {\n selectedCol = gObj.getColumnHeaderByUid(column.uid);\n }\n var deselectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted\n };\n var isCanceled = this.columnDeselect(deselectedArgs, events.columnDeselecting);\n if (isCanceled) {\n this.disableInteracted();\n return;\n }\n var selectedHeader = !isNullOrUndefined(clearIndex) ? [selectedCol] :\n [].slice.call(gObj.getHeaderContent().getElementsByClassName('e-columnselection'));\n var selectedCells = this.getSelectedColumnCells(clearIndex);\n for (var i = 0, len = selectedHeader.length; i < len; i++) {\n addRemoveActiveClasses([selectedHeader[parseInt(i.toString(), 10)]], false, 'e-columnselection');\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n addRemoveActiveClasses([selectedCells[parseInt(i.toString(), 10)]], false, 'e-columnselection');\n }\n if (!isNullOrUndefined(clearIndex)) {\n this.selectedColumnsIndexes.splice(this.selectedColumnsIndexes.indexOf(clearIndex), 1);\n this.parent.getColumns()[parseInt(clearIndex.toString(), 10)].isSelected = false;\n }\n else {\n this.columnDeselect(deselectedArgs, events.columnDeselected);\n this.selectedColumnsIndexes = [];\n this.isColumnSelected = false;\n this.parent.getColumns().filter(function (col) { return col.isSelected = false; });\n }\n }\n };\n Selection.prototype.getselectedCols = function () {\n var gObj = this.parent;\n var selectedCol;\n if (this.selectedColumnsIndexes.length > 1) {\n selectedCol = [];\n for (var i = 0; i < this.selectedColumnsIndexes.length; i++) {\n (selectedCol).push(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[parseInt(i.toString(), 10)]).uid));\n }\n }\n else {\n selectedCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[0]).uid);\n }\n return selectedCol;\n };\n Selection.prototype.getSelectedColumnCells = function (clearIndex) {\n var gObj = this.parent;\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows = isRowTemplate ? gObj.getRows() : gObj.getDataRows();\n var movableRows;\n var frRows;\n if (gObj.isFrozenGrid() && gObj.getContent().querySelector('.' + literals.movableContent)) {\n movableRows = isRowTemplate ? gObj.getMovableRows() : gObj.getMovableDataRows();\n rows = gObj.addMovableRows(rows, movableRows);\n if (gObj.getFrozenMode() === literals.leftRight) {\n frRows = isRowTemplate ? gObj.getFrozenRightRows() : gObj.getFrozenRightDataRows();\n rows = gObj.addMovableRows(rows, frRows);\n }\n }\n var seletedcells = [];\n var selectionString = !isNullOrUndefined(clearIndex) ? '[data-colindex=\"' + clearIndex + '\"]' : '.e-columnselection';\n for (var i = 0, len = rows.length; i < len; i++) {\n seletedcells = seletedcells.concat([].slice.call(rows[parseInt(i.toString(), 10)].querySelectorAll(selectionString)));\n }\n return seletedcells;\n };\n Selection.prototype.columnDeselect = function (args, event) {\n if (event === 'columnDeselected') {\n delete args.cancel;\n }\n this.onActionComplete(args, event);\n return args.cancel;\n };\n Selection.prototype.updateColProps = function (startIndex) {\n this.prevColIndex = startIndex;\n this.isColumnSelected = this.selectedColumnsIndexes.length && true;\n };\n Selection.prototype.clearColDependency = function () {\n this.clearColumnSelection();\n this.selectedColumnsIndexes = [];\n };\n Selection.prototype.updateColSelection = function (selectedCol, startIndex) {\n if (isNullOrUndefined(this.parent.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var left = this.parent.getFrozenLeftCount();\n var movable = this.parent.getMovableColumnsCount();\n var col = this.parent.getColumnByIndex(startIndex);\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows;\n this.selectedColumnsIndexes.push(startIndex);\n this.parent.getColumns()[parseInt(startIndex.toString(), 10)].isSelected = true;\n if (col.getFreezeTableName() === literals.frozenRight) {\n startIndex = startIndex - (left + movable);\n rows = isRowTemplate ? this.parent.getFrozenRightRows() : this.parent.getFrozenRightDataRows();\n }\n else if (col.getFreezeTableName() === 'movable') {\n startIndex = startIndex - left;\n rows = isRowTemplate ? this.parent.getMovableRows() : this.parent.getMovableDataRows();\n }\n else {\n startIndex = startIndex + this.parent.getIndentCount();\n rows = isRowTemplate ? this.parent.getRows() : this.parent.getDataRows();\n }\n addRemoveActiveClasses([selectedCol], true, 'e-columnselection');\n for (var j = 0, len = rows.length; j < len; j++) {\n if (rows[parseInt(j.toString(), 10)].classList.contains(literals.row)) {\n if ((rows[parseInt(j.toString(), 10)].classList.contains(literals.editedRow)\n || rows[parseInt(j.toString(), 10)].classList.contains(literals.addedRow))\n && this.parent.editSettings.mode === 'Normal'\n && !isNullOrUndefined(rows[parseInt(j.toString(), 10)].querySelector('tr').childNodes[parseInt(startIndex.toString(), 10)])) {\n addRemoveActiveClasses([rows[parseInt(j.toString(), 10)].querySelector('tr').childNodes[parseInt(startIndex.toString(), 10)]], true, 'e-columnselection');\n }\n else if (!isNullOrUndefined(rows[parseInt(j.toString(), 10)].childNodes[parseInt(startIndex.toString(), 10)])) {\n addRemoveActiveClasses([rows[parseInt(j.toString(), 10)].childNodes[parseInt(startIndex.toString(), 10)]], true, 'e-columnselection');\n }\n }\n }\n };\n Selection.prototype.headerSelectionHandler = function (colIndex) {\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n this.selectColumn(colIndex);\n }\n else if (this.isMultiShiftRequest) {\n this.selectColumnsByRange(isUndefined(this.prevColIndex) ? colIndex : this.prevColIndex, colIndex);\n }\n else {\n this.selectColumnWithExisting(colIndex);\n }\n };\n // eslint-disable-next-line camelcase\n Selection.prototype.addEventListener_checkbox = function () {\n var _this = this;\n this.parent.on(events.dataReady, this.dataReady, this);\n this.onDataBoundFunction = this.onDataBound.bind(this);\n this.parent.addEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.on(events.refreshInfinitePersistSelection, this.onDataBoundFunction);\n this.parent.on(events.contentReady, this.checkBoxSelectionChanged, this);\n this.parent.on(events.beforeRefreshOnDataChange, this.initPerisistSelection, this);\n this.parent.on(events.onEmpty, this.setCheckAllForEmptyGrid, this);\n this.actionCompleteFunc = this.actionCompleteHandler.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.click, this.clickHandler, this);\n this.resizeEndFn = function () {\n _this.updateAutoFillPosition();\n _this.drawBorders();\n };\n this.resizeEndFn.bind(this);\n this.parent.addEventListener(events.resizeStop, this.resizeEndFn);\n };\n // eslint-disable-next-line camelcase\n Selection.prototype.removeEventListener_checkbox = function () {\n this.parent.off(events.dataReady, this.dataReady);\n this.parent.removeEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.refreshInfinitePersistSelection, this.onDataBoundFunction);\n this.parent.off(events.onEmpty, this.setCheckAllForEmptyGrid);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.beforeRefreshOnDataChange, this.initPerisistSelection);\n };\n Selection.prototype.setCheckAllForEmptyGrid = function () {\n var checkAllBox = this.getCheckAllBox();\n if (checkAllBox) {\n this.parent.isCheckBoxSelection = true;\n var spanEle = checkAllBox.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n };\n Selection.prototype.dataReady = function (e) {\n this.isHeaderCheckboxClicked = false;\n var isInfinitecroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfinitecroll) {\n this.disableUI = !this.parent.enableImmutableMode && !(e.requestType == 'save' && e['action'] == 'add');\n this.clearSelection();\n this.setCheckAllState();\n this.disableUI = false;\n }\n };\n Selection.prototype.actionCompleteHandler = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n this.refreshPersistSelection();\n }\n };\n Selection.prototype.selectRowIndex = function (index) {\n this.parent.isSelectedRowIndexUpdating = true;\n if ((isNullOrUndefined(this.parent.selectedRowIndex) || this.parent.selectedRowIndex === -1) || !this.parent.enablePersistence) {\n this.parent.selectedRowIndex = index;\n }\n else {\n this.parent.selectedRowIndex = -1;\n }\n };\n Selection.prototype.disableInteracted = function () {\n this.isInteracted = false;\n };\n Selection.prototype.activeTarget = function () {\n this.actualTarget = this.isInteracted ? this.actualTarget : null;\n };\n return Selection;\n}());\nexport { Selection };\n","import { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { isActionPrevent } from '../base/util';\n/**\n * The `Search` module is used to handle search action.\n */\nvar Search = /** @class */ (function () {\n /**\n * Constructor for Grid search module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Search(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * Searches Grid records by given key.\n *\n * > You can customize the default search action by using [`searchSettings`](./searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n * @returns {void}\n */\n Search.prototype.search = function (searchString) {\n var gObj = this.parent;\n searchString = isNullOrUndefined(searchString) ? '' : searchString;\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.search, arg1: searchString });\n return;\n }\n if (searchString !== gObj.searchSettings.key) {\n gObj.searchSettings.key = searchString.toString();\n gObj.dataBind();\n }\n else if (this.refreshSearch) {\n gObj.refresh();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Search.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.searchComplete, this.onSearchComplete, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.actionCompleteFunc = this.onActionComplete.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.cancelBegin, this.cancelBeginEvent, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Search.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.searchComplete, this.onSearchComplete);\n this.parent.off(events.destroy, this.destroy);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.cancelBegin, this.cancelBeginEvent);\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n Search.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @param {NotifyArgs} e - specfies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (!isNullOrUndefined(e.properties.key)) {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin, searchString: this.parent.searchSettings.key\n });\n }\n else {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin\n });\n }\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onSearchComplete = function (e) {\n this.parent.trigger(events.actionComplete, extend(e, {\n searchString: this.parent.searchSettings.key, requestType: 'searching', type: events.actionComplete\n }));\n };\n /**\n * The function used to store the requestType\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onActionComplete = function (e) {\n this.refreshSearch = e.requestType !== 'searching';\n };\n Search.prototype.cancelBeginEvent = function (e) {\n if (e.requestType === 'searching') {\n this.parent.setProperties({ searchSettings: { key: '' } }, true);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Search.prototype.getModuleName = function () {\n return 'search';\n };\n return Search;\n}());\nexport { Search };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject, isGroupAdaptive, isActionPrevent, addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\n/**\n * The `ShowHide` module is used to control column visibility.\n */\nvar ShowHide = /** @class */ (function () {\n /**\n * Constructor for the show hide module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function ShowHide(parent) {\n this.colName = [];\n this.isShowHide = false;\n this.parent = parent;\n this.addEventListener();\n }\n ShowHide.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.batchCancel, handler: this.batchChanges },\n { event: events.batchCnfrmDlgCancel, handler: this.resetColumnState }\n ];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n ShowHide.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n ShowHide.prototype.batchChanges = function () {\n if (this.isShowHide) {\n this.isShowHide = false;\n this.setVisible(this.colName, this.changedCol);\n this.changedCol = this.colName = [];\n }\n };\n /**\n * Shows a column by column name.\n *\n * @param {string|string[]} columnName - Defines a single or collection of column names to show.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n ShowHide.prototype.show = function (columnName, showBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, showBy);\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[parseInt(i.toString(), 10)].visible = true;\n }\n this.setVisible(columns);\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} columnName - Defines a single or collection of column names to hide.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n ShowHide.prototype.hide = function (columnName, hideBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, hideBy);\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[parseInt(i.toString(), 10)].visible = false;\n }\n this.setVisible(columns);\n };\n ShowHide.prototype.getToggleFields = function (key) {\n var finalized = [];\n if (typeof key === 'string') {\n finalized = [key];\n }\n else {\n finalized = key;\n }\n return finalized;\n };\n ShowHide.prototype.getColumns = function (keys, getKeyBy) {\n var _this = this;\n var columns = iterateArrayOrObject(keys, function (key) {\n return iterateArrayOrObject(_this.parent.columnModel, function (item) {\n if (item[\"\" + getKeyBy] === key) {\n return item;\n }\n return undefined;\n })[0];\n });\n return columns;\n };\n ShowHide.prototype.batchActionPrevent = function (columns, changedStateColumns) {\n if (changedStateColumns === void 0) { changedStateColumns = []; }\n if (isActionPrevent(this.parent)) {\n this.colName = columns;\n this.changedCol = changedStateColumns;\n this.parent.closeEdit();\n return false;\n }\n return true;\n };\n ShowHide.prototype.resetColumnState = function () {\n if (this.isShowHide) {\n for (var i = 0; i < this.colName.length; i++) {\n this.colName[parseInt(i.toString(), 10)].visible = !this.colName[parseInt(i.toString(), 10)].visible;\n }\n }\n };\n /**\n * Shows or hides columns by given column collection.\n *\n * @private\n * @param {Column[]} columns - Specifies the columns.\n * @param {Column[]} changedStateColumns - specifies the changedStateColumns\n * @returns {void}\n */\n ShowHide.prototype.setVisible = function (columns, changedStateColumns) {\n var _this = this;\n if (changedStateColumns === void 0) { changedStateColumns = []; }\n this.isShowHide = true;\n if (!this.batchActionPrevent(columns, changedStateColumns)) {\n return;\n }\n changedStateColumns = (changedStateColumns.length > 0) ? changedStateColumns : columns;\n var args = {\n requestType: 'columnstate',\n cancel: false,\n columns: changedStateColumns\n };\n var cancel = 'cancel';\n if (this.parent.enableInfiniteScrolling && this.parent.allowGrouping\n && this.parent.groupModule.groupSettings.columns.length > 0) {\n this.parent.contentModule.visibleRows = [];\n }\n this.parent.trigger(events.actionBegin, args, function (showHideArgs) {\n var currentViewCols = _this.parent.getColumns();\n columns = isNullOrUndefined(columns) ? currentViewCols : columns;\n if (showHideArgs[\"\" + cancel]) {\n _this.parent.notify(events.resetColumns, { showHideArgs: showHideArgs });\n if (columns.length > 0) {\n columns[0].visible = true;\n }\n return;\n }\n if (isGroupAdaptive(_this.parent)) {\n _this.parent.contentModule.emptyVcRows();\n }\n if (_this.parent.allowSelection && _this.parent.getSelectedRecords().length &&\n !_this.parent.selectionSettings.persistSelection) {\n _this.parent.clearSelection();\n }\n if (_this.parent.enableColumnVirtualization) {\n var colsInCurrentView = columns.filter(function (col1) { return (currentViewCols.some(function (col2) { return col1.field === col2.field; })); });\n if (colsInCurrentView.length) {\n _this.parent.notify(events.columnVisibilityChanged, columns);\n }\n }\n else {\n _this.parent.notify(events.columnVisibilityChanged, columns);\n }\n var params = {\n requestType: 'columnstate',\n columns: changedStateColumns\n };\n _this.parent.trigger(events.actionComplete, params);\n if (_this.parent.columnQueryMode !== 'All') {\n _this.parent.refresh();\n }\n });\n if (this.parent.autoFit && !this.parent.groupSettings.columns.length) {\n this.parent.preventAdjustColumns();\n }\n };\n return ShowHide;\n}());\nexport { ShowHide };\n","import { Browser, EventHandler } from '@syncfusion/ej2-base';\nimport { addClass, removeClass } from '@syncfusion/ej2-base';\nimport { formatUnit, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getScrollBarWidth, getUpdateUsingRaf } from '../base/util';\nimport { scroll, contentReady, uiUpdate, onEmpty, headerRefreshed, textWrapRefresh, virtualScrollEdit, infiniteScrollHandler, closeFilterDialog } from '../base/constant';\nimport { lazyLoadScrollHandler, checkScrollReset } from '../base/constant';\nimport { ColumnWidthService } from '../services/width-controller';\nimport * as literals from '../base/string-literals';\nimport * as events from '../base/constant';\n/**\n * The `Scroll` module is used to handle scrolling behaviour.\n */\nvar Scroll = /** @class */ (function () {\n /**\n * Constructor for the Grid scrolling.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Scroll(parent) {\n //To maintain scroll state on grid actions.\n this.previousValues = { top: 0, left: 0 };\n this.oneTimeReady = true;\n this.parent = parent;\n this.widthService = new ColumnWidthService(parent);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Scroll.prototype.getModuleName = function () {\n return 'scroll';\n };\n /**\n * @param {boolean} uiupdate - specifies the uiupdate\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setWidth = function (uiupdate) {\n this.parent.element.style.width = formatUnit(this.parent.width);\n if (uiupdate) {\n this.widthService.setWidthToColumns();\n }\n if (this.parent.toolbarModule && this.parent.toolbarModule.toolbar &&\n this.parent.toolbarModule.toolbar.element) {\n var tlbrElement = this.parent.toolbarModule.toolbar.element;\n var tlbrLeftElement = tlbrElement.querySelector('.e-toolbar-left');\n var tlbrCenterElement = tlbrElement.querySelector('.e-toolbar-center');\n var tlbrRightElement = tlbrElement.querySelector('.e-toolbar-right');\n var tlbrItems = tlbrElement.querySelector('.e-toolbar-items');\n var tlbrLeftWidth = tlbrLeftElement ? tlbrLeftElement.clientWidth : 0;\n var tlbrCenterWidth = tlbrCenterElement ? tlbrCenterElement.clientWidth : 0;\n var tlbrRightWidth = tlbrRightElement ? tlbrRightElement.clientWidth : 0;\n var tlbrItemsWidth = tlbrItems ? tlbrItems.clientWidth : 0;\n var tlbrWidth = tlbrElement ? tlbrElement.clientWidth : 0;\n if (!this.parent.enableAdaptiveUI || tlbrLeftWidth > tlbrWidth || tlbrCenterWidth > tlbrWidth || tlbrRightWidth > tlbrWidth ||\n tlbrItemsWidth > tlbrWidth) {\n this.parent.toolbarModule.toolbar.refreshOverflow();\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setHeight = function () {\n var mHdrHeight = 0;\n var content = this.parent.getContent().querySelector('.' + literals.content);\n var height = this.parent.height;\n if (this.parent.isFrozenGrid() && this.parent.height !== 'auto' && this.parent.height.toString().indexOf('%') < 0) {\n height = parseInt(height, 10) - Scroll.getScrollBarWidth();\n }\n if (!this.parent.enableVirtualization && this.parent.frozenRows && this.parent.height !== 'auto') {\n var tbody = this.parent.getHeaderContent()\n .querySelector(literals.tbody + ':not(.e-masked-tbody)');\n mHdrHeight = tbody ? tbody.offsetHeight : 0;\n if (tbody && mHdrHeight) {\n var add = tbody.getElementsByClassName(literals.addedRow).length;\n var height_1 = add * this.parent.getRowHeight();\n mHdrHeight -= height_1;\n }\n else if (!this.parent.isInitialLoad && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && this.parent.getHeaderContent().querySelector('.e-masked-table')) {\n height = parseInt(height, 10) - (this.parent.frozenRows * this.parent.getRowHeight());\n }\n content.style.height = formatUnit(height - mHdrHeight);\n }\n else {\n content.style.height = formatUnit(height);\n }\n this.ensureOverflow(content);\n if (this.parent.isFrozenGrid()) {\n this.refresh();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setPadding = function () {\n var content = this.parent.getHeaderContent();\n var scrollWidth = Scroll.getScrollBarWidth() - this.getThreshold();\n var cssProps = this.getCssProperties();\n var padding = this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === literals.leftRight ? '0.5px' : '1px';\n content.querySelector('.' + literals.headerContent).style[cssProps.border] = scrollWidth > 0 ? padding : '0px';\n content.style[cssProps.padding] = scrollWidth > 0 ? scrollWidth + 'px' : '0px';\n };\n /**\n * @param {boolean} rtl - specifies the rtl\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.removePadding = function (rtl) {\n var cssProps = this.getCssProperties(rtl);\n var hDiv = this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n hDiv.style[cssProps.border] = '';\n hDiv.parentElement.style[cssProps.padding] = '';\n var footerDiv = this.parent.getFooterContent();\n if (footerDiv && footerDiv.classList.contains('e-footerpadding')) {\n footerDiv.classList.remove('e-footerpadding');\n }\n };\n /**\n * Refresh makes the Grid adoptable with the height of parent container.\n *\n * > The [`height`](./#height) must be set to 100%.\n *\n * @returns {void}\n */\n Scroll.prototype.refresh = function () {\n if (this.parent.height !== '100%') {\n return;\n }\n var content = this.parent.getContent();\n this.parent.element.style.height = '100%';\n var height = this.widthService.getSiblingsHeight(content);\n content.style.height = 'calc(100% - ' + height + 'px)'; //Set the height to the '.' + literals.gridContent;\n if (this.parent.isFrozenGrid()) {\n content.firstElementChild.style.height = 'calc(100% - ' + getScrollBarWidth() + 'px)';\n }\n };\n Scroll.prototype.getThreshold = function () {\n /* Some browsers places the scroller outside the content,\n * hence the padding should be adjusted.*/\n var appName = Browser.info.name;\n if (appName === 'mozilla') {\n return 0.5;\n }\n return 1;\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(onEmpty, this.wireEvents, this);\n this.parent.on(contentReady, this.wireEvents, this);\n this.parent.on(uiUpdate, this.onPropertyChanged, this);\n this.parent.on(textWrapRefresh, this.wireEvents, this);\n this.parent.on(headerRefreshed, this.setScrollLeft, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(onEmpty, this.wireEvents);\n this.parent.off(contentReady, this.wireEvents);\n this.parent.off(uiUpdate, this.onPropertyChanged);\n this.parent.off(textWrapRefresh, this.wireEvents);\n this.parent.off(headerRefreshed, this.setScrollLeft);\n this.unwireEvents();\n };\n Scroll.prototype.unwireEvents = function () {\n var frzCols = this.parent.isFrozenGrid();\n var mCont;\n var mHdr;\n if (this.content) {\n mCont = this.content.querySelector('.' + literals.movableContent);\n }\n if (this.header) {\n mHdr = this.header.querySelector('.' + literals.movableHeader);\n }\n var mScrollBar = this.parent.getContent() ? this.parent.getContent().querySelector('.e-movablescrollbar') : null;\n if (this.parent.frozenRows && ((this.header && !frzCols) || (frzCols && mHdr))) {\n EventHandler.remove(frzCols ? mHdr : this.header, 'touchstart pointerdown', this.setPageXY);\n EventHandler.remove(frzCols ? mHdr : this.header, 'touchmove pointermove', this.onTouchScroll);\n }\n if (this.parent.isFrozenGrid()) {\n if (mScrollBar) {\n EventHandler.remove(mScrollBar, 'scroll', this.onCustomScrollbarScroll);\n }\n if (mCont) {\n EventHandler.remove(mCont, 'scroll', this.onCustomScrollbarScroll);\n EventHandler.remove(mCont, 'touchstart pointerdown', this.setPageXY);\n if (!(/macintosh|ipad/.test(Browser.userAgent.toLowerCase()) && Browser.isDevice)) {\n EventHandler.remove(mCont, 'touchmove pointermove', this.onTouchScroll);\n }\n }\n if (mHdr) {\n EventHandler.remove(mHdr, 'scroll', this.onCustomScrollbarScroll);\n EventHandler.remove(mHdr, 'touchstart pointerdown', this.setPageXY);\n EventHandler.remove(mHdr, 'touchmove pointermove', this.onTouchScroll);\n }\n if (this.content) {\n EventHandler.remove(this.content, 'scroll', this.onFrozenContentScroll);\n }\n }\n else {\n if (this.content) {\n EventHandler.remove(this.content, 'scroll', this.contentScrollHandler);\n }\n if (this.header) {\n EventHandler.remove(this.header, 'scroll', this.headerScrollHandler);\n }\n this.contentScrollHandler = null;\n this.headerScrollHandler = null;\n }\n if (this.parent.aggregates.length && this.parent.getFooterContent()) {\n EventHandler.remove(this.parent.getFooterContent().firstChild, 'scroll', this.onContentScroll);\n }\n };\n Scroll.prototype.setScrollLeft = function () {\n if (this.parent.isFrozenGrid()) {\n this.parent.headerModule.getMovableHeader().scrollLeft = this.previousValues.left;\n }\n else {\n this.parent.getHeaderContent().querySelector('.' + literals.headerContent).scrollLeft = this.previousValues.left;\n }\n };\n Scroll.prototype.onFrozenContentScroll = function () {\n var _this = this;\n return function (e) {\n if (_this.content.querySelector(literals.tbody) === null || _this.parent.isPreventScrollEvent) {\n return;\n }\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling) {\n _this.parent.notify(infiniteScrollHandler, e);\n }\n _this.previousValues.top = e.target.scrollTop;\n };\n };\n Scroll.prototype.onContentScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n var isHeader = element.classList.contains(literals.headerContent);\n return function (e) {\n if (_this.content.querySelector(literals.tbody) === null || _this.parent.isPreventScrollEvent) {\n return;\n }\n var target = e.target;\n var left = target.scrollLeft;\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling && !_this.parent.isEdit) {\n _this.parent.notify(infiniteScrollHandler, { target: e.target, isLeft: _this.previousValues.left !== left });\n }\n if (_this.parent.groupSettings.columns.length && _this.parent.groupSettings.enableLazyLoading) {\n var isDown = _this.previousValues.top < _this.parent.getContent().firstElementChild.scrollTop;\n _this.parent.notify(lazyLoadScrollHandler, { scrollDown: isDown });\n }\n _this.parent.notify(virtualScrollEdit, {});\n var isFooter = target.classList.contains('e-summarycontent');\n if (_this.previousValues.left === left) {\n _this.previousValues.top = !isHeader ? _this.previousValues.top : target.scrollTop;\n return;\n }\n _this.parent.notify(closeFilterDialog, e);\n element.scrollLeft = left;\n if (isFooter) {\n _this.header.scrollLeft = left;\n }\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n };\n };\n Scroll.prototype.onCustomScrollbarScroll = function (mCont, mHdr) {\n var _this = this;\n var content = mCont;\n var header = mHdr;\n return function (e) {\n if (_this.content.querySelector(literals.tbody) === null) {\n return;\n }\n var target = e.target;\n var left = target.scrollLeft;\n if (_this.previousValues.left === left) {\n return;\n }\n content.scrollLeft = left;\n header.scrollLeft = left;\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n if (_this.parent.isDestroyed) {\n return;\n }\n };\n };\n Scroll.prototype.onTouchScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n var isFrozen = _this.parent.isFrozenGrid();\n var pageXY = _this.getPointXY(e);\n var left = element.scrollLeft + (_this.pageXY.x - pageXY.x);\n var mHdr = isFrozen ?\n _this.parent.getHeaderContent().querySelector('.' + literals.movableHeader) :\n _this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n var mCont = isFrozen ?\n _this.parent.getContent().querySelector('.' + literals.movableContent) :\n _this.parent.getContent().querySelector('.' + literals.content);\n if (_this.previousValues.left === left || (left < 0 || (mHdr.scrollWidth - mHdr.clientWidth) < left)) {\n return;\n }\n e.preventDefault();\n mHdr.scrollLeft = left;\n mCont.scrollLeft = left;\n if (isFrozen) {\n var scrollBar = _this.parent.getContent().querySelector('.e-movablescrollbar');\n scrollBar.scrollLeft = left;\n }\n _this.pageXY.x = pageXY.x;\n _this.previousValues.left = left;\n };\n };\n Scroll.prototype.setPageXY = function () {\n var _this = this;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n _this.pageXY = _this.getPointXY(e);\n };\n };\n Scroll.prototype.getPointXY = function (e) {\n var pageXY = { x: 0, y: 0 };\n if (e.touches && e.touches.length) {\n pageXY.x = e.touches[0].pageX;\n pageXY.y = e.touches[0].pageY;\n }\n else {\n pageXY.x = e.pageX;\n pageXY.y = e.pageY;\n }\n return pageXY;\n };\n Scroll.prototype.getScrollbleParent = function (node) {\n if (node === null) {\n return null;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parent = isNullOrUndefined(node.tagName) ? node.scrollingElement : node;\n var overflowY = document.defaultView.getComputedStyle(parent, null).overflowY;\n if (parent.scrollHeight > parent.clientHeight && overflowY !== 'hidden'\n && overflowY !== 'visible' || node.tagName === 'HTML' || node.tagName === 'BODY') {\n return node;\n }\n else {\n return this.getScrollbleParent(node.parentNode);\n }\n };\n /**\n * @param {boolean} isAdd - specifies whether adding/removing the event\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.addStickyListener = function (isAdd) {\n this.parentElement = this.getScrollbleParent(this.parent.element.parentElement);\n if (isAdd && this.parentElement) {\n this.eventElement = this.parentElement.tagName === 'HTML' || this.parentElement.tagName === 'BODY' ? document :\n this.parentElement;\n EventHandler.add(this.eventElement, 'scroll', this.makeStickyHeader, this);\n }\n else if (this.eventElement) {\n EventHandler.remove(this.eventElement, 'scroll', this.makeStickyHeader);\n this.eventElement = null;\n }\n };\n Scroll.prototype.wireEvents = function () {\n var _this = this;\n if (this.oneTimeReady) {\n var frzCols = this.parent.isFrozenGrid();\n this.content = this.parent.getContent().querySelector('.' + literals.content);\n this.header = this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n var mCont = this.content.querySelector('.' + literals.movableContent);\n var mHdr = this.header.querySelector('.' + literals.movableHeader);\n var mScrollBar = this.parent.getContent().querySelector('.e-movablescrollbar');\n if (this.parent.frozenRows) {\n EventHandler.add(frzCols ? mHdr : this.header, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(frzCols ? mHdr : this.header, 'touchmove pointermove', this.onTouchScroll(frzCols ? mCont : this.content), this);\n }\n if (this.parent.isFrozenGrid()) {\n EventHandler.add(mScrollBar, 'scroll', this.onCustomScrollbarScroll(mCont, mHdr), this);\n EventHandler.add(mCont, 'scroll', this.onCustomScrollbarScroll(mScrollBar, mHdr), this);\n EventHandler.add(mHdr, 'scroll', this.onCustomScrollbarScroll(mScrollBar, mCont), this);\n EventHandler.add(this.content, 'scroll', this.onFrozenContentScroll(), this);\n EventHandler.add(mHdr, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(mHdr, 'touchmove pointermove', this.onTouchScroll(mCont), this);\n EventHandler.add(mCont, 'touchstart pointerdown', this.setPageXY(), this);\n if (!(/macintosh|ipad/.test(Browser.userAgent.toLowerCase()) && Browser.isDevice)) {\n EventHandler.add(mCont, 'touchmove pointermove', this.onTouchScroll(mHdr), this);\n }\n }\n else {\n this.contentScrollHandler = this.onContentScroll(this.header);\n this.headerScrollHandler = this.onContentScroll(this.content);\n EventHandler.add(this.content, 'scroll', this.contentScrollHandler, this);\n EventHandler.add(this.header, 'scroll', this.headerScrollHandler, this);\n }\n if (this.parent.aggregates.length) {\n EventHandler.add(this.parent.getFooterContent().firstChild, 'scroll', this.onContentScroll(this.content), this);\n }\n if (this.parent.enableStickyHeader) {\n this.addStickyListener(true);\n }\n this.refresh();\n this.oneTimeReady = false;\n }\n var table = this.parent.getContentTable();\n var sLeft;\n var sHeight;\n var clientHeight;\n getUpdateUsingRaf(function () {\n sLeft = _this.header.scrollLeft;\n sHeight = table.scrollHeight;\n clientHeight = _this.parent.getContent().clientHeight;\n }, function () {\n var args = { cancel: false };\n _this.parent.notify(checkScrollReset, args);\n if (sHeight < clientHeight) {\n _this.setLastRowCell();\n }\n if (!_this.parent.enableVirtualization && !_this.parent.enableInfiniteScrolling) {\n if (!args.cancel) {\n if ((_this.parent.frozenRows > 0 || _this.parent.isFrozenGrid()) && _this.header.querySelector('.' + literals.movableHeader)) {\n _this.header.querySelector('.' + literals.movableHeader).scrollLeft = _this.previousValues.left;\n }\n else {\n _this.header.scrollLeft = _this.previousValues.left;\n }\n _this.content.scrollLeft = _this.previousValues.left;\n _this.content.scrollTop = _this.previousValues.top;\n }\n }\n if (!_this.parent.enableColumnVirtualization) {\n _this.content.scrollLeft = sLeft;\n }\n if (_this.parent.isFrozenGrid() && _this.header.querySelector('.' + literals.movableHeader)) {\n _this.header.querySelector('.' + literals.movableHeader).scrollLeft =\n _this.content.querySelector('.' + literals.movableContent).scrollLeft;\n }\n });\n this.parent.isPreventScrollEvent = false;\n };\n /**\n * @returns {void} returns void\n * @hidden\n */\n Scroll.prototype.setLastRowCell = function () {\n var table = this.parent.getContentTable();\n if (table.querySelector('tr:nth-last-child(2)')) {\n removeClass(table.querySelector('tr:nth-last-child(2)').querySelectorAll('td'), 'e-lastrowcell');\n }\n addClass(table.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n if (this.parent.isFrozenGrid()) {\n var mTable = this.parent.getContent().querySelector('.' + literals.movableContent);\n if (mTable.querySelector('tr:nth-last-child(2)')) {\n removeClass(mTable.querySelector('tr:nth-last-child(2)').querySelectorAll('td'), 'e-lastrowcell');\n }\n addClass(mTable.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n if (this.parent.getFrozenRightColumnsCount()) {\n var frTable = this.parent.getContent().querySelector('.e-frozen-right-content');\n if (frTable.querySelector('tr:nth-last-child(2)')) {\n removeClass(frTable.querySelector('tr:nth-last-child(2)').querySelectorAll('td'), 'e-lastrowcell');\n }\n addClass(frTable.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n }\n }\n };\n /**\n * @param {boolean} rtl - specifies the rtl\n * @returns {ScrollCss} returns the ScrollCss\n * @hidden\n */\n Scroll.prototype.getCssProperties = function (rtl) {\n var css = {};\n var enableRtl = isNullOrUndefined(rtl) ? this.parent.enableRtl : rtl;\n css.border = enableRtl ? 'borderLeftWidth' : 'borderRightWidth';\n css.padding = enableRtl ? 'paddingLeft' : 'paddingRight';\n return css;\n };\n Scroll.prototype.ensureOverflow = function (content) {\n content.style.overflowY = this.parent.height === 'auto' ? 'auto' : 'scroll';\n };\n Scroll.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n this.setPadding();\n this.oneTimeReady = true;\n if (this.parent.height === 'auto') {\n this.removePadding();\n }\n this.wireEvents();\n this.setHeight();\n var width = 'width';\n this.setWidth(!isNullOrUndefined(e.properties[\"\" + width]));\n };\n Scroll.prototype.makeStickyHeader = function () {\n if (this.parent.enableStickyHeader && this.parent.element && this.parent.getContent()) {\n var contentRect = this.parent.getContent().getClientRects()[0];\n if (contentRect) {\n var headerEle = this.parent.getHeaderContent();\n var toolbarEle = this.parent.element.querySelector('.e-toolbar');\n var groupHeaderEle = this.parent.element.querySelector('.e-groupdroparea');\n var height = headerEle.offsetHeight + (toolbarEle ? toolbarEle.offsetHeight : 0) +\n (groupHeaderEle ? groupHeaderEle.offsetHeight : 0);\n var parentTop = this.parentElement.getClientRects()[0].top;\n var top_1 = contentRect.top - (parentTop < 0 ? 0 : parentTop);\n var left = contentRect.left;\n var colMenuEle = document.body.querySelector('#' + this.parent.element.id + '_columnmenu');\n if (top_1 < height && contentRect.bottom > 0) {\n headerEle.classList.add('e-sticky');\n var elemTop = 0;\n if (groupHeaderEle && this.parent.groupSettings.showDropArea) {\n this.setSticky(groupHeaderEle, elemTop, contentRect.width, left, true);\n elemTop += groupHeaderEle.getClientRects()[0].height;\n }\n if (toolbarEle) {\n this.setSticky(toolbarEle, elemTop, contentRect.width, left, true);\n elemTop += toolbarEle.getClientRects()[0].height;\n }\n this.setSticky(headerEle, elemTop, contentRect.width, left, true);\n if (!isNullOrUndefined(colMenuEle)) {\n colMenuEle.style.position = 'fixed';\n colMenuEle.style.top = height + 'px';\n }\n }\n else {\n if (headerEle.classList.contains('e-sticky')) {\n this.setSticky(headerEle, null, null, null, false);\n if (toolbarEle) {\n this.setSticky(toolbarEle, null, null, null, false);\n }\n if (groupHeaderEle) {\n this.setSticky(groupHeaderEle, null, null, null, false);\n }\n var ccDlg = this.parent.element.querySelector('.e-ccdlg');\n if (ccDlg) {\n ccDlg.classList.remove('e-sticky');\n }\n if (!isNullOrUndefined(colMenuEle)) {\n colMenuEle.style.position = 'absolute';\n var topStyle = contentRect.top - parentTop;\n colMenuEle.style.top = topStyle + 'px';\n }\n }\n }\n this.parent.notify(events.stickyScrollComplete, {});\n }\n }\n };\n Scroll.prototype.setSticky = function (ele, top, width, left, isAdd) {\n if (isAdd) {\n ele.style.width = width + 'px';\n ele.classList.add('e-sticky');\n }\n else {\n ele.classList.remove('e-sticky');\n }\n ele.style.top = top != null ? top + 'px' : '';\n ele.style.left = left !== null ? parseInt(ele.style.left, 10) !== left ? left + 'px' : ele.style.left : '';\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.removeEventListener();\n //Remove Dom event\n var cont = this.parent.getContent().querySelector('.' + literals.content);\n EventHandler.remove(cont, 'scroll', this.onContentScroll);\n if (this.parent.enableStickyHeader) {\n this.addStickyListener(false);\n }\n //Remove padding\n this.removePadding();\n removeClass([this.parent.getHeaderContent().querySelector('.' + literals.headerContent)], literals.headerContent);\n removeClass([cont], literals.content);\n //Remove height\n cont.style.height = '';\n //Remove width\n this.parent.element.style.width = '';\n };\n /**\n * Function to get the scrollbar width of the browser.\n *\n * @returns {number} return the width\n * @hidden\n */\n Scroll.getScrollBarWidth = function () {\n return getScrollBarWidth();\n };\n return Scroll;\n}());\nexport { Scroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { compile } from '@syncfusion/ej2-base';\nimport { getEnumValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { Property, Collection, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the Grid's aggregate column.\n */\nvar AggregateColumn = /** @class */ (function (_super) {\n __extends(AggregateColumn, _super);\n function AggregateColumn() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.templateFn = {};\n return _this;\n }\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @returns {Function} returns the Function\n * @hidden\n */\n AggregateColumn.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Object} helper - specifies the helper\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setTemplate = function (helper) {\n if (helper === void 0) { helper = {}; }\n if (this.footerTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.Summary)] = { fn: compile(this.footerTemplate, helper),\n property: 'footerTemplate' };\n }\n if (this.groupFooterTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.GroupSummary)] = { fn: compile(this.groupFooterTemplate, helper),\n property: 'groupFooterTemplate' };\n }\n if (this.groupCaptionTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.CaptionSummary)] = { fn: compile(this.groupCaptionTemplate, helper),\n property: 'groupCaptionTemplate' };\n }\n };\n /**\n * @param {CellType} type - specifies the cell type\n * @returns {Object} returns the object\n * @hidden\n */\n AggregateColumn.prototype.getTemplate = function (type) {\n return this.templateFn[getEnumValue(CellType, type)];\n };\n /**\n * @param {Object} prop - returns the Object\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setPropertiesSilent = function (prop) {\n this.setProperties(prop, true);\n };\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"columnName\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"format\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"groupFooterTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"groupCaptionTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"customAggregate\", void 0);\n return AggregateColumn;\n}(ChildProperty));\nexport { AggregateColumn };\n/**\n * Configures the aggregate rows.\n */\nvar AggregateRow = /** @class */ (function (_super) {\n __extends(AggregateRow, _super);\n function AggregateRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], AggregateColumn)\n ], AggregateRow.prototype, \"columns\", void 0);\n return AggregateRow;\n}(ChildProperty));\nexport { AggregateRow };\n","import { Browser, remove, EventHandler, isUndefined, closest, classList } from '@syncfusion/ej2-base';\nimport { parentsUntil, isGroupAdaptive } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * The `Clipboard` module is used to handle clipboard copy action.\n */\nvar Clipboard = /** @class */ (function () {\n /**\n * Constructor for the Grid clipboard module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @hidden\n */\n function Clipboard(parent, serviceLocator) {\n this.copyContent = '';\n this.isSelect = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n /**\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.keyPressed, this.keyDownHandler, this);\n this.parent.on(events.click, this.clickHandler, this);\n this.parent.on(events.onEmpty, this.initialEnd, this);\n EventHandler.add(this.parent.element, 'keydown', this.pasteHandler, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.keyPressed, this.keyDownHandler);\n this.parent.off(events.contentReady, this.initialEnd);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.onEmpty, this.initialEnd);\n EventHandler.remove(this.parent.element, 'keydown', this.pasteHandler);\n };\n Clipboard.prototype.clickHandler = function (e) {\n var target = e.target;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n target = parentsUntil(target, 'e-rowcell');\n };\n Clipboard.prototype.pasteHandler = function (e) {\n var _this = this;\n var grid = this.parent;\n var isMacLike = /(Mac)/i.test(navigator.platform);\n if (e.keyCode === 67 && isMacLike && e.metaKey && !grid.isEdit) {\n this.copy();\n }\n if (e.keyCode === 86 && (e.ctrlKey || (isMacLike && e.metaKey)) && !grid.isEdit) {\n var target = closest(document.activeElement, '.' + literals.rowCell);\n if (!target || !grid.editSettings.allowEditing || grid.editSettings.mode !== 'Batch' ||\n grid.selectionSettings.mode !== 'Cell' || grid.selectionSettings.cellSelectionMode === 'Flow' || !this.clipBoardTextArea) {\n return;\n }\n this.activeElement = document.activeElement;\n this.clipBoardTextArea.value = '';\n var x_1 = window.scrollX;\n var y_1 = window.scrollY;\n this.clipBoardTextArea.focus();\n setTimeout(function () {\n _this.activeElement.focus();\n window.scrollTo(x_1, y_1);\n _this.paste(_this.clipBoardTextArea.value, _this.parent.getSelectedRowCellIndexes()[0].rowIndex, _this.parent.getSelectedRowCellIndexes()[0].cellIndexes[0]);\n }, 10);\n }\n };\n /**\n * Paste data from clipboard to selected cells.\n *\n * @param {boolean} data - Specifies the date for paste.\n * @param {boolean} rowIndex - Specifies the row index.\n * @param {boolean} colIndex - Specifies the column index.\n * @returns {void}\n */\n Clipboard.prototype.paste = function (data, rowIndex, colIndex) {\n var grid = this.parent;\n var cIdx = colIndex;\n var rIdx = rowIndex;\n var col;\n var value;\n var isAvail;\n if (!grid.editSettings.allowEditing || grid.editSettings.mode !== 'Batch' ||\n grid.selectionSettings.mode !== 'Cell' || grid.selectionSettings.cellSelectionMode === 'Flow') {\n return;\n }\n var rows = data.split('\\n');\n var cols;\n var dataRows = grid.getDataRows();\n var mRows;\n var frRows;\n var isFrozen = this.parent.isFrozenGrid();\n if (isFrozen) {\n mRows = grid.getMovableDataRows();\n if (grid.getFrozenRightColumnsCount()) {\n frRows = grid.getFrozenRightDataRows();\n }\n }\n for (var r = 0; r < rows.length; r++) {\n cols = rows[parseInt(r.toString(), 10)].split('\\t');\n cIdx = colIndex;\n if ((r === rows.length - 1 && rows[parseInt(r.toString(), 10)] === '') || isUndefined(grid.getRowByIndex(rIdx))) {\n cIdx++;\n break;\n }\n for (var c = 0; c < cols.length; c++) {\n isAvail = grid.getCellFromIndex(rIdx, cIdx);\n if (isFrozen) {\n var fTr = dataRows[parseInt(rIdx.toString(), 10)];\n var mTr = mRows[parseInt(rIdx.toString(), 10)];\n isAvail = !fTr.querySelector('[data-colindex=\"' + cIdx + '\"]') ?\n mTr.querySelector('[data-colindex=\"' + cIdx + '\"]') : true;\n if (frRows && !isAvail) {\n var frTr = frRows[parseInt(rIdx.toString(), 10)];\n isAvail = frTr.querySelector('[data-colindex=\"' + cIdx + '\"]');\n }\n }\n if (!isAvail) {\n cIdx++;\n break;\n }\n col = grid.getColumnByIndex(cIdx);\n value = col.getParser() ? col.getParser()(cols[parseInt(c.toString(), 10)]) : cols[parseInt(c.toString(), 10)];\n if (col.allowEditing && !col.isPrimaryKey && !col.template) {\n var args = {\n column: col,\n data: value,\n rowIndex: rIdx\n };\n this.parent.trigger(events.beforePaste, args);\n rIdx = args.rowIndex;\n if (!args.cancel) {\n if (grid.editModule) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseFloat(args.data));\n }\n else {\n grid.editModule.updateCell(rIdx, col.field, args.data);\n }\n }\n }\n }\n cIdx++;\n }\n rIdx++;\n }\n grid.selectionModule.selectCellsByRange({ rowIndex: rowIndex, cellIndex: colIndex }, { rowIndex: rIdx - 1, cellIndex: cIdx - 1 });\n var cell = this.parent.getCellFromIndex(rIdx - 1, cIdx - 1);\n if (cell) {\n classList(cell, ['e-focus', 'e-focused'], []);\n }\n };\n Clipboard.prototype.initialEnd = function () {\n this.l10n = this.serviceLocator.getService('localization');\n this.parent.off(events.contentReady, this.initialEnd);\n this.clipBoardTextArea = this.parent.createElement('textarea', {\n className: 'e-clipboard',\n styles: 'opacity: 0',\n attrs: { tabindex: '-1', 'aria-label': this.l10n.getConstant('ClipBoard') }\n });\n this.parent.element.appendChild(this.clipBoardTextArea);\n };\n Clipboard.prototype.keyDownHandler = function (e) {\n if (e.action === 'ctrlPlusC') {\n this.copy();\n }\n else if (e.action === 'ctrlShiftPlusH') {\n this.copy(true);\n }\n };\n Clipboard.prototype.setCopyData = function (withHeader) {\n if (window.getSelection().toString() === '') {\n var isFrozen = this.parent.isFrozenGrid();\n this.clipBoardTextArea.value = this.copyContent = '';\n var mRows = void 0;\n var frRows = void 0;\n var rows = this.parent.getDataRows();\n if (isFrozen) {\n mRows = this.parent.getMovableDataRows();\n if (this.parent.getFrozenMode() === literals.leftRight || this.parent.getFrozenMode() === 'Right') {\n frRows = this.parent.getFrozenRightRows();\n }\n }\n if (this.parent.selectionSettings.mode !== 'Cell') {\n var selectedIndexes = this.parent.getSelectedRowIndexes().sort(function (a, b) { return a - b; });\n if (withHeader) {\n var headerTextArray = [];\n for (var i = 0; i < this.parent.getVisibleColumns().length; i++) {\n headerTextArray[parseInt(i.toString(), 10)] = this.parent\n .getVisibleColumns()[parseInt(i.toString(), 10)].headerText;\n }\n this.getCopyData(headerTextArray, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < selectedIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var leftCols = [];\n var rightCols = [];\n var movableCols = [];\n if (isFrozen) {\n movableCols.push.apply(movableCols, [].slice.call(mRows[selectedIndexes[parseInt(i.toString(), 10)]].\n querySelectorAll('.e-rowcell:not(.e-hide)')));\n if (this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === literals.leftRight) {\n rightCols.push.apply(rightCols, [].slice.call(frRows[selectedIndexes[parseInt(i.toString(), 10)]].\n querySelectorAll('.e-rowcell:not(.e-hide)')));\n }\n if (this.parent.getFrozenMode() === 'Left' || this.parent.getFrozenMode() === literals.leftRight ||\n (this.parent.isFrozenGrid() && !this.parent.getFrozenMode())) {\n leftCols.push.apply(leftCols, [].slice.call(rows[selectedIndexes[parseInt(i.toString(), 10)]].\n querySelectorAll('.e-rowcell:not(.e-hide)')));\n }\n }\n else {\n var idx = selectedIndexes[parseInt(i.toString(), 10)];\n if (!isGroupAdaptive(this.parent) && (this.parent.enableVirtualization ||\n (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) ||\n (this.parent.groupSettings.columns.length && this.parent.groupSettings.enableLazyLoading))) {\n idx = rows.map(function (m) { return m.getAttribute('data-rowindex'); }).indexOf(selectedIndexes[parseInt(i.toString(), 10)].toString());\n }\n leftCols.push.apply(leftCols, [].slice.call(rows[parseInt(idx.toString(), 10)].querySelectorAll('.e-rowcell:not(.e-hide)')));\n }\n var cells = leftCols.concat(movableCols).concat(rightCols);\n this.getCopyData(cells, false, '\\t', withHeader);\n }\n }\n else {\n var obj = this.checkBoxSelection();\n if (obj.status) {\n if (withHeader) {\n var headers = [];\n for (var i = 0; i < obj.colIndexes.length; i++) {\n headers.push(this.parent.getColumnHeaderByIndex(obj.colIndexes[parseInt(i.toString(), 10)]));\n }\n this.getCopyData(headers, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < obj.rowIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var cells = [].slice.call(rows[obj.rowIndexes[parseInt(i.toString(), 10)]].\n getElementsByClassName('e-cellselectionbackground'));\n if (isFrozen) {\n cells.push.apply(cells, [].slice.call(mRows[obj.rowIndexes[parseInt(i.toString(), 10)]]\n .getElementsByClassName('e-cellselectionbackground')));\n if (frRows) {\n cells.push.apply(cells, [].slice.call(frRows[obj.rowIndexes[parseInt(i.toString(), 10)]]\n .getElementsByClassName('e-cellselectionbackground')));\n }\n }\n this.getCopyData(cells, false, '\\t', withHeader);\n }\n }\n else {\n this.getCopyData([].slice.call(this.parent.element.getElementsByClassName('e-cellselectionbackground')), true, '\\n', withHeader);\n }\n }\n var args = {\n data: this.copyContent,\n cancel: false\n };\n this.parent.trigger(events.beforeCopy, args);\n if (args.cancel) {\n return;\n }\n this.clipBoardTextArea.value = this.copyContent = args.data;\n if (!Browser.userAgent.match(/ipad|ipod|iphone/i)) {\n this.clipBoardTextArea.select();\n }\n else {\n this.clipBoardTextArea.setSelectionRange(0, this.clipBoardTextArea.value.length);\n }\n this.isSelect = true;\n }\n };\n Clipboard.prototype.getCopyData = function (cells, isCell, splitKey, withHeader) {\n var isElement = typeof cells[0] !== 'string';\n for (var j = 0; j < cells.length; j++) {\n if (withHeader && isCell) {\n var colIdx = parseInt(cells[parseInt(j.toString(), 10)].getAttribute(literals.dataColIndex), 10);\n this.copyContent += this.parent.getColumns()[parseInt(colIdx.toString(), 10)].headerText + '\\n';\n }\n if (isElement) {\n if (!cells[parseInt(j.toString(), 10)].classList.contains('e-hide')) {\n this.copyContent += cells[parseInt(j.toString(), 10)].innerText;\n }\n }\n else {\n this.copyContent += cells[parseInt(j.toString(), 10)];\n }\n if (j < cells.length - 1) {\n this.copyContent += splitKey;\n }\n }\n };\n /**\n * Copy selected rows or cells data into clipboard.\n *\n * @returns {void}\n * @param {boolean} withHeader - Specifies whether the column header data need to be copied or not.\n */\n Clipboard.prototype.copy = function (withHeader) {\n if (document.queryCommandSupported('copy') && this.clipBoardTextArea) {\n this.setCopyData(withHeader);\n document.execCommand('copy');\n this.clipBoardTextArea.blur();\n }\n if (this.isSelect) {\n window.getSelection().removeAllRanges();\n this.isSelect = false;\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Clipboard.prototype.getModuleName = function () {\n return 'clipboard';\n };\n /**\n * To destroy the clipboard\n *\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.destroy = function () {\n this.removeEventListener();\n if (this.clipBoardTextArea) {\n remove(this.clipBoardTextArea);\n }\n };\n Clipboard.prototype.checkBoxSelection = function () {\n var gridObj = this.parent;\n var obj = { status: false };\n if (gridObj.selectionSettings.mode === 'Cell') {\n var rowCellIndxes = gridObj.getSelectedRowCellIndexes();\n var str = void 0;\n var rowIndexes = [];\n var i = void 0;\n for (i = 0; i < rowCellIndxes.length; i++) {\n if (rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.length) {\n rowIndexes.push(rowCellIndxes[parseInt(i.toString(), 10)].rowIndex);\n }\n if (rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.length) {\n if (!str) {\n str = JSON.stringify(rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.sort());\n }\n if (str !== JSON.stringify(rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.sort())) {\n break;\n }\n }\n }\n rowIndexes.sort(function (a, b) { return a - b; });\n if (i === rowCellIndxes.length) {\n obj = { status: true, rowIndexes: rowIndexes, colIndexes: rowCellIndxes[0].cellIndexes };\n }\n }\n return obj;\n };\n return Clipboard;\n}());\nexport { Clipboard };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isNullOrUndefined, setValue, getValue } from '@syncfusion/ej2-base';\nimport { Component, ChildProperty, Browser, closest, extend } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, append, remove, classList, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { Property, Collection, Complex, Event, NotifyPropertyChanges, L10n } from '@syncfusion/ej2-base';\nimport { EventHandler, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { DataManager, DataUtil, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { createSpinner, hideSpinner, showSpinner, Tooltip } from '@syncfusion/ej2-popups';\nimport { iterateArrayOrObject, prepareColumns, parentsUntil, wrap, templateCompiler, isGroupAdaptive, refreshForeignData } from './util';\nimport { getRowHeight, setColumnIndex, Global, ispercentageWidth, renderMovable, getNumberFormat, getTransformValues } from './util';\nimport { setRowElements, resetRowIndex, compareChanges, getCellByColAndRowIndex, performComplexDataOperation } from './util';\nimport * as events from '../base/constant';\nimport { Render } from '../renderer/render';\nimport { RenderType } from './enum';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { CellRendererFactory } from '../services/cell-render-factory';\nimport { ServiceLocator } from '../services/service-locator';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { RendererFactory } from '../services/renderer-factory';\nimport { ColumnWidthService } from '../services/width-controller';\nimport { AriaService } from '../services/aria-service';\nimport { FocusStrategy } from '../services/focus-strategy';\nimport { PageSettings } from '../models/page-settings';\nimport { ColumnChooserSettings } from '../models/column-chooser-settings';\nimport { Selection } from '../actions/selection';\nimport { Search } from '../actions/search';\nimport { ShowHide } from '../actions/show-hide';\nimport { Scroll } from '../actions/scroll';\nimport { Print } from '../actions/print';\nimport { AggregateRow } from '../models/aggregate';\nimport { Clipboard } from '../actions/clipboard';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport * as literals from '../base/string-literals';\nimport { HeaderCellRenderer } from '../renderer/header-cell-renderer';\n/**\n * Represents the field name and direction of sort column.\n */\nvar SortDescriptor = /** @class */ (function (_super) {\n __extends(SortDescriptor, _super);\n function SortDescriptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"direction\", void 0);\n __decorate([\n Property(false)\n ], SortDescriptor.prototype, \"isFromGroup\", void 0);\n return SortDescriptor;\n}(ChildProperty));\nexport { SortDescriptor };\n/**\n * Configures the sorting behavior of Grid.\n */\nvar SortSettings = /** @class */ (function (_super) {\n __extends(SortSettings, _super);\n function SortSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], SortDescriptor)\n ], SortSettings.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], SortSettings.prototype, \"allowUnsort\", void 0);\n return SortSettings;\n}(ChildProperty));\nexport { SortSettings };\n/**\n * Represents the predicate for the filter column.\n */\nvar Predicate = /** @class */ (function (_super) {\n __extends(Predicate, _super);\n function Predicate() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], Predicate.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"matchCase\", void 0);\n __decorate([\n Property(false)\n ], Predicate.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"predicate\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualFilterValue\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualOperator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ejpredicate\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"uid\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"isForeignKey\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"condition\", void 0);\n return Predicate;\n}(ChildProperty));\nexport { Predicate };\n/**\n * Configures the infinite scroll behavior of Grid.\n */\nvar InfiniteScrollSettings = /** @class */ (function (_super) {\n __extends(InfiniteScrollSettings, _super);\n function InfiniteScrollSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], InfiniteScrollSettings.prototype, \"enableCache\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"maxBlocks\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"initialBlocks\", void 0);\n return InfiniteScrollSettings;\n}(ChildProperty));\nexport { InfiniteScrollSettings };\n/**\n * Configures the filtering behavior of the Grid.\n */\nvar FilterSettings = /** @class */ (function (_super) {\n __extends(FilterSettings, _super);\n function FilterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], Predicate)\n ], FilterSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('FilterBar')\n ], FilterSettings.prototype, \"type\", void 0);\n __decorate([\n Property('OnEnter')\n ], FilterSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], FilterSettings.prototype, \"showFilterBarStatus\", void 0);\n __decorate([\n Property(1500)\n ], FilterSettings.prototype, \"immediateModeDelay\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"operators\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"enableCaseSensitivity\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"showFilterBarOperator\", void 0);\n return FilterSettings;\n}(ChildProperty));\nexport { FilterSettings };\n/**\n * Configures the selection behavior of the Grid.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Row')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Flow')\n ], SelectionSettings.prototype, \"cellSelectionMode\", void 0);\n __decorate([\n Property('Single')\n ], SelectionSettings.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"checkboxOnly\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"persistSelection\", void 0);\n __decorate([\n Property('Default')\n ], SelectionSettings.prototype, \"checkboxMode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enableSimpleMultiRowSelection\", void 0);\n __decorate([\n Property(true)\n ], SelectionSettings.prototype, \"enableToggle\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"allowColumnSelection\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Configures the search behavior of the Grid.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property([])\n ], SearchSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('')\n ], SearchSettings.prototype, \"key\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"operator\", void 0);\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], SearchSettings.prototype, \"ignoreAccent\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n/**\n * Configures the row drop settings of the Grid.\n */\nvar RowDropSettings = /** @class */ (function (_super) {\n __extends(RowDropSettings, _super);\n function RowDropSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], RowDropSettings.prototype, \"targetID\", void 0);\n return RowDropSettings;\n}(ChildProperty));\nexport { RowDropSettings };\n/**\n * Configures the text wrap settings of the Grid.\n */\nvar TextWrapSettings = /** @class */ (function (_super) {\n __extends(TextWrapSettings, _super);\n function TextWrapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Both')\n ], TextWrapSettings.prototype, \"wrapMode\", void 0);\n return TextWrapSettings;\n}(ChildProperty));\nexport { TextWrapSettings };\n/**\n * Configures the resize behavior of the Grid.\n */\nvar ResizeSettings = /** @class */ (function (_super) {\n __extends(ResizeSettings, _super);\n function ResizeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Normal')\n ], ResizeSettings.prototype, \"mode\", void 0);\n return ResizeSettings;\n}(ChildProperty));\nexport { ResizeSettings };\n/**\n * Configures the group behavior of the Grid.\n */\nvar GroupSettings = /** @class */ (function (_super) {\n __extends(GroupSettings, _super);\n function GroupSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], GroupSettings.prototype, \"showDropArea\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"showToggleButton\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"showGroupedColumn\", void 0);\n __decorate([\n Property(true)\n ], GroupSettings.prototype, \"showUngroupButton\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"disablePageWiseAggregates\", void 0);\n __decorate([\n Property([])\n ], GroupSettings.prototype, \"columns\", void 0);\n __decorate([\n Property()\n ], GroupSettings.prototype, \"captionTemplate\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"enableLazyLoading\", void 0);\n return GroupSettings;\n}(ChildProperty));\nexport { GroupSettings };\n/**\n * Configures the edit behavior of the Grid.\n */\nvar EditSettings = /** @class */ (function (_super) {\n __extends(EditSettings, _super);\n function EditSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowAdding\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowDeleting\", void 0);\n __decorate([\n Property('Normal')\n ], EditSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"allowEditOnDblClick\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"showConfirmDialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"showDeleteConfirmDialog\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property('Top')\n ], EditSettings.prototype, \"newRowPosition\", void 0);\n __decorate([\n Property({})\n ], EditSettings.prototype, \"dialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowNextRowEdit\", void 0);\n return EditSettings;\n}(ChildProperty));\nexport { EditSettings };\n/**\n * Configures the Loading Indicator of the Grid.\n */\nvar LoadingIndicator = /** @class */ (function (_super) {\n __extends(LoadingIndicator, _super);\n function LoadingIndicator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Spinner')\n ], LoadingIndicator.prototype, \"indicatorType\", void 0);\n return LoadingIndicator;\n}(ChildProperty));\nexport { LoadingIndicator };\n/**\n * Represents the Grid component.\n * ```html\n *
    \n * \n * ```\n */\nvar Grid = /** @class */ (function (_super) {\n __extends(Grid, _super);\n /**\n * Constructor for creating the component\n *\n * @param {GridModel} options - specifies the options\n * @param {string | HTMLElement} element - specifies the element\n * @hidden\n */\n function Grid(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isPreventScrollEvent = false;\n _this.inViewIndexes = [];\n _this.keyA = false;\n _this.frozenRightCount = 0;\n _this.frozenLeftCount = 0;\n _this.tablesCount = 1;\n _this.movableCount = 0;\n _this.visibleFrozenLeft = 0;\n _this.visibleFrozenRight = 0;\n _this.visibleMovable = 0;\n _this.frozenLeftColumns = [];\n _this.frozenRightColumns = [];\n _this.movableColumns = [];\n _this.media = {};\n _this.isFreezeRefresh = false;\n /** @hidden */\n _this.tableIndex = 0;\n _this.componentRefresh = Component.prototype.refresh;\n /** @hidden */\n _this.isVirtualAdaptive = false;\n /** @hidden */\n /**\n * * If `requireTemplateRef` is set to false in the load event, then the template element can't be accessed in grid queryCellInfo, and rowDataBound events.\n * * By default, React's grid queryCellInfo and rowDataBound events allow access to the template element.\n * * Avoid accessing the template elements in the grid queryCellInfo and rowDataBound events to improve rendering performance by setting this value as false.\n *\n * @default true\n */\n _this.requireTemplateRef = true;\n /** @hidden */\n _this.vRows = [];\n /** @hidden */\n _this.vcRows = [];\n /** @hidden */\n _this.vGroupOffsets = {};\n /** @hidden */\n _this.rowUid = 0;\n /** @hidden */\n _this.isManualRefresh = false;\n /** @hidden */\n _this.isAutoFitColumns = false;\n /** @hidden */\n _this.enableDeepCompare = false;\n /** @hidden */\n _this.totalDataRecordsCount = 0;\n /** @hidden */\n _this.disableSelectedRecords = [];\n /** @hidden */\n _this.partialSelectedRecords = [];\n /** @hidden */\n _this.islazyloadRequest = false;\n /** @hidden */\n _this.lockcolPositionCount = 0;\n /** @hidden */\n _this.prevPageMoving = false;\n /** @hidden */\n _this.pageTemplateChange = false;\n /** @hidden */\n _this.isAutoGen = false;\n _this.mediaBindInstance = {};\n /** @hidden */\n _this.commandDelIndex = undefined;\n /** @hidden */\n _this.asyncTimeOut = 50;\n /** @hidden */\n _this.isExportGrid = false;\n // enable/disable logger for MVC & Core\n _this.enableLogger = true;\n _this.needsID = true;\n Grid_1.Inject(Selection);\n setValue('mergePersistData', _this.mergePersistGridData, _this);\n return _this;\n }\n Grid_1 = Grid;\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} returns the persist data\n */\n Grid.prototype.getPersistData = function () {\n var keyEntity = ['pageSettings', 'sortSettings',\n 'filterSettings', 'groupSettings', 'columns', 'searchSettings', 'selectedRowIndex', 'scrollPosition'];\n var ignoreOnPersist = {\n pageSettings: ['template', 'pageSizes', 'enableQueryString', 'totalRecordsCount', 'pageCount'],\n filterSettings: ['type', 'mode', 'showFilterBarStatus', 'immediateModeDelay', 'ignoreAccent'],\n groupSettings: ['showDropArea', 'showToggleButton', 'showGroupedColumn', 'showUngroupButton',\n 'disablePageWiseAggregates', 'hideCaptionCount'],\n searchSettings: ['fields', 'operator', 'ignoreCase'],\n sortSettings: [], columns: [], selectedRowIndex: [], scrollPosition: []\n };\n for (var i = 0; i < keyEntity.length; i++) {\n var currentObject = this[keyEntity[parseInt(i.toString(), 10)]];\n for (var _i = 0, _a = ignoreOnPersist[keyEntity[parseInt(i.toString(), 10)]]; _i < _a.length; _i++) {\n var val = _a[_i];\n delete currentObject[\"\" + val];\n }\n }\n var temp = this.pageSettings.template;\n var settings = Object.assign({ template: undefined }, this.pageSettings);\n this.setProperties({ pageSettings: settings }, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\n delete this.groupSettings['properties']['captionTemplate'];\n }\n this.pageTemplateChange = !isNullOrUndefined(this.pagerTemplate);\n var persistData = this.addOnPersist(keyEntity);\n settings.template = temp;\n this.setProperties({ pageSettings: settings }, true);\n return persistData;\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} Returns the module Declaration\n * @hidden\n */\n Grid.prototype.requiredModules = function () {\n this.setFrozenCount();\n this.enableInfiniteAggrgate();\n var modules = [];\n if (this.isDestroyed) {\n return modules;\n }\n if (this.allowFiltering) {\n modules.push({\n member: 'filter',\n args: [this, this.filterSettings, this.serviceLocator]\n });\n }\n if (this.allowExcelExport) {\n modules.push({\n member: 'ExcelExport',\n args: [this, this.serviceLocator]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this]\n });\n }\n if (this.allowSorting) {\n modules.push({\n member: 'sort',\n args: [this, this.sortSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.allowPaging) {\n modules.push({\n member: 'pager',\n args: [this, this.pageSettings]\n });\n }\n if (this.allowSelection) {\n modules.push({\n member: 'selection',\n args: [this, this.selectionSettings, this.serviceLocator]\n });\n }\n modules.push({\n member: 'resize',\n args: [this]\n });\n if (this.allowReordering) {\n modules.push({\n member: 'reorder',\n args: [this]\n });\n }\n if (this.allowRowDragAndDrop) {\n modules.push({\n member: 'rowDragAndDrop',\n args: [this]\n });\n }\n if (this.allowGrouping) {\n modules.push({\n member: 'group',\n args: [this, this.groupSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.aggregates.length) {\n modules.push({ member: 'aggregate', args: [this, this.serviceLocator] });\n }\n if (this.isDetail()) {\n modules.push({\n member: 'detailRow',\n args: [this, this.serviceLocator]\n });\n }\n if (this.toolbar || this.toolbarTemplate) {\n modules.push({\n member: 'toolbar',\n args: [this, this.serviceLocator]\n });\n }\n if (this.enableVirtualization || this.enableColumnVirtualization) {\n modules.push({\n member: 'virtualscroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.getFrozenColumns() || this.frozenRows || this.frozenRightCount || this.frozenLeftCount) {\n modules.push({ member: 'freeze', args: [this, this.serviceLocator] });\n }\n if (this.isCommandColumn(this.columns)) {\n modules.push({\n member: 'commandColumn',\n args: [this, this.serviceLocator]\n });\n }\n if (this.editSettings.allowAdding || this.editSettings.allowDeleting || this.editSettings.allowEditing) {\n modules.push({\n member: 'edit',\n args: [this, this.serviceLocator]\n });\n }\n this.extendRequiredModules(modules);\n return modules;\n };\n Grid.prototype.extendRequiredModules = function (modules) {\n if (this.enableInfiniteScrolling) {\n modules.push({\n member: 'infiniteScroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.groupSettings.enableLazyLoading) {\n modules.push({\n member: 'lazyLoadGroup',\n args: [this, this.serviceLocator]\n });\n }\n if (this.contextMenuItems) {\n modules.push({\n member: 'contextMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnMenu) {\n modules.push({\n member: 'columnMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnChooser) {\n modules.push({\n member: 'columnChooser',\n args: [this, this.serviceLocator]\n });\n }\n if (this.isForeignKeyEnabled(this.columns)) {\n modules.push({ member: 'foreignKey', args: [this, this.serviceLocator] });\n }\n if (this.enableLogger) {\n modules.push({ member: 'logger', args: [this] });\n }\n };\n /**\n * For internal use only - Initialize the event handler;\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.preRender = function () {\n this.serviceLocator = new ServiceLocator;\n this.initProperties();\n this.initializeServices();\n };\n Grid.prototype.initProperties = function () {\n this.isInitial = true;\n this.sortedColumns = [];\n this.inViewIndexes = [];\n this.mediaCol = [];\n this.isInitialLoad = false;\n this.allowServerDataBinding = false;\n this.ignoreCollectionWatch = true;\n this.mergeCells = {};\n this.isEdit = false;\n this.checkAllRows = 'None';\n this.isCheckBoxSelection = false;\n this.isPersistSelection = false;\n this.componentRefresh = Component.prototype.refresh;\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith', wildCard: 'wildcard',\n isNull: 'isnull', notNull: 'notnull', like: 'like'\n };\n this.defaultLocale = {\n EmptyRecord: 'No records to display',\n True: 'true',\n False: 'false',\n InvalidFilterMessage: 'Invalid Filter Data',\n GroupDropArea: 'Drag a column header here to group its column',\n UnGroup: 'Click here to ungroup',\n UnGroupButton: 'Click here to ungroup',\n GroupDisable: 'Grouping is disabled for this column',\n FilterbarTitle: '\\'s filter bar cell',\n EmptyDataSourceError: 'DataSource must not be empty at initial load since columns are generated from dataSource in AutoGenerate Column Grid',\n // Toolbar Items\n Add: 'Add',\n Edit: 'Edit',\n Cancel: 'Cancel',\n Update: 'Update',\n Delete: 'Delete',\n Print: 'Print',\n Pdfexport: 'PDF Export',\n Excelexport: 'Excel Export',\n Wordexport: 'Word Export',\n Csvexport: 'CSV Export',\n Search: 'Search',\n Columnchooser: 'Columns',\n Save: 'Save',\n Item: 'item',\n Items: 'items',\n EditOperationAlert: 'No records selected for edit operation',\n DeleteOperationAlert: 'No records selected for delete operation',\n SaveButton: 'Save',\n OKButton: 'OK',\n CancelButton: 'Cancel',\n EditFormTitle: 'Details of ',\n AddFormTitle: 'Add New Record',\n BatchSaveConfirm: 'Are you sure you want to save changes?',\n BatchSaveLostChanges: 'Unsaved changes will be lost. Are you sure you want to continue?',\n ConfirmDelete: 'Are you sure you want to Delete Record?',\n CancelEdit: 'Are you sure you want to Cancel the changes?',\n ChooseColumns: 'Choose Column',\n SearchColumns: 'search columns',\n Matchs: 'No matches found',\n FilterButton: 'Filter',\n ClearButton: 'Clear',\n StartsWith: 'Starts With',\n NotStartsWith: 'Does Not Start With',\n Like: 'Like',\n EndsWith: 'Ends With',\n NotEndsWith: 'Does Not End With',\n Contains: 'Contains',\n NotContains: 'Does Not Contain',\n IsNull: 'Null',\n NotNull: 'Not Null',\n IsEmpty: 'Empty',\n IsNotEmpty: 'Not Empty',\n Equal: 'Equal',\n NotEqual: 'Not Equal',\n LessThan: 'Less Than',\n LessThanOrEqual: 'Less Than Or Equal',\n GreaterThan: 'Greater Than',\n GreaterThanOrEqual: 'Greater Than Or Equal',\n ChooseDate: 'Choose a Date',\n EnterValue: 'Enter the value',\n Copy: 'Copy',\n Group: 'Group by this column',\n Ungroup: 'Ungroup by this column',\n GroupButton: 'Group button',\n UnGroupAria: 'ungroup button',\n GroupSeperator: 'Separator for the grouped columns',\n UnGroupIcon: 'ungroup the grouped column ',\n GroupedSortIcon: 'sort the grouped column ',\n GroupedDrag: 'Drag the grouped column',\n GroupCaption: ' is groupcaption cell',\n CheckBoxLabel: 'checkbox',\n autoFitAll: 'Autofit all columns',\n autoFit: 'Autofit this column',\n AutoFitAll: 'Autofit all columns',\n AutoFit: 'Autofit this column',\n Export: 'Export',\n FirstPage: 'First Page',\n LastPage: 'Last Page',\n PreviousPage: 'Previous Page',\n NextPage: 'Next Page',\n SortAscending: 'Sort Ascending',\n SortDescending: 'Sort Descending',\n EditRecord: 'Edit Record',\n DeleteRecord: 'Delete Record',\n FilterMenu: 'Filter',\n SelectAll: 'Select All',\n AddCurrentSelection: 'Add current selection to filter',\n Blanks: 'Blanks',\n FilterTrue: 'True',\n FilterFalse: 'False',\n NoResult: 'No matches found',\n ClearFilter: 'Clear Filter',\n Clear: 'Clear',\n NumberFilter: 'Number Filters',\n TextFilter: 'Text Filters',\n DateFilter: 'Date Filters',\n DateTimeFilter: 'DateTime Filters',\n MatchCase: 'Match Case',\n Between: 'Between',\n CustomFilter: 'Custom Filter',\n CustomFilterPlaceHolder: 'Enter the value',\n CustomFilterDatePlaceHolder: 'Choose a date',\n AND: 'AND',\n OR: 'OR',\n ShowRowsWhere: 'Show rows where:',\n FilterMenuDialogARIA: 'Filter menu dialog',\n ExcelFilterDialogARIA: 'Excel filter dialog',\n DialogEditARIA: 'Edit dialog',\n ColumnChooserDialogARIA: 'Column chooser',\n ColumnMenuDialogARIA: 'Column menu dialog',\n CustomFilterDialogARIA: 'Customer filter dialog',\n SortAtoZ: 'Sort A to Z',\n SortZtoA: 'Sort Z to A',\n SortByOldest: 'Sort by Oldest',\n SortByNewest: 'Sort by Newest',\n SortSmallestToLargest: 'Sort Smallest to Largest',\n SortLargestToSmallest: 'Sort Largest to Smallest',\n Sort: 'Sort',\n FilterDescription: 'Press Alt Down to open filter Menu',\n SortDescription: 'Press Enter to sort',\n ColumnMenuDescription: 'Press Alt Down to open Column Menu',\n GroupDescription: 'Press Ctrl space to group',\n ColumnHeader: ' column header ',\n TemplateCell: ' is template cell',\n CommandColumnAria: 'is Command column column header ',\n DialogEdit: 'Dialog edit',\n ClipBoard: 'clipboard',\n AscendingText: 'Ascending',\n DescendingText: 'Descending',\n NoneText: 'None',\n Expanded: 'Expanded',\n Collapsed: 'Collapsed'\n };\n this.keyConfigs = {\n downArrow: 'downarrow',\n upArrow: 'uparrow',\n rightArrow: 'rightarrow',\n leftArrow: 'leftarrow',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftRight: 'shift+rightarrow',\n shiftLeft: 'shift+leftarrow',\n home: 'home',\n end: 'end',\n escape: 'escape',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n ctrlAltPageUp: 'ctrl+alt+pageup',\n ctrlAltPageDown: 'ctrl+alt+pagedown',\n altPageUp: 'alt+pageup',\n altPageDown: 'alt+pagedown',\n altDownArrow: 'alt+downarrow',\n altUpArrow: 'alt+uparrow',\n ctrlDownArrow: 'ctrl+downarrow',\n ctrlUpArrow: 'ctrl+uparrow',\n ctrlPlusA: 'ctrl+A',\n ctrlPlusP: 'ctrl+P',\n insert: 'insert',\n delete: 'delete',\n f2: 'f2',\n enter: 'enter',\n ctrlEnter: 'ctrl+enter',\n shiftEnter: 'shift+enter',\n tab: 'tab',\n shiftTab: 'shift+tab',\n space: 'space',\n ctrlPlusC: 'ctrl+C',\n ctrlShiftPlusH: 'ctrl+shift+H',\n ctrlSpace: 'ctrl+space',\n ctrlLeftArrow: 'ctrl+leftarrow',\n ctrlRightArrow: 'ctrl+rightarrow'\n };\n };\n /**\n * For internal use only - To Initialize the component rendering.\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.render = function () {\n this.log(['module_missing', 'promise_enabled', 'locale_missing', 'check_datasource_columns']);\n this.ariaService.setOptions(this.element, { datarole: 'grid' });\n createSpinner({ target: this.element, cssClass: this.cssClass ? this.cssClass : null }, this.createElement);\n this.renderModule = new Render(this, this.serviceLocator);\n this.searchModule = new Search(this);\n this.scrollModule = new Scroll(this);\n this.notify(events.initialLoad, {});\n if (this.getDataModule().dataManager.dataSource.offline === true || this.getDataModule().dataManager.dataSource.url === undefined) {\n this.isVirtualAdaptive = true;\n }\n if (this.isReact) {\n var args = { requireTemplateRef: this.requireTemplateRef };\n this.trigger(events.load, args);\n if (!args.requireTemplateRef) {\n this.requireTemplateRef = args.requireTemplateRef;\n }\n }\n else {\n this.trigger(events.load);\n }\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n if (this.enablePersistence) {\n this.notify(events.columnsPrepared, {});\n }\n this.getMediaColumns();\n setColumnIndex(this.columns);\n this.checkLockColumns(this.columns);\n this.getColumns();\n this.processModel();\n this.gridRender();\n this.wireEvents();\n this.addListener();\n this.updateDefaultCursor();\n this.updateStackedFilter();\n if (this.loadingIndicator.indicatorType === 'Spinner') {\n this.showSpinner();\n }\n this.notify(events.initialEnd, {});\n if (this.loadingIndicator.indicatorType === 'Shimmer') {\n this.refreshMaskRow();\n }\n if (this.refreshing) {\n this.trigger('created');\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n Grid.prototype.showSpinner = function () {\n if (!this.isExportGrid) {\n showSpinner(this.element);\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n Grid.prototype.hideSpinner = function () {\n if (!this.isExportGrid) {\n hideSpinner(this.element);\n }\n };\n Grid.prototype.showMaskRow = function (axisDirection, dialogElement) {\n if (isNullOrUndefined(this.headerModule) || isNullOrUndefined(this.contentModule)) {\n return;\n }\n var gridHeader = this.getHeaderContent().firstChild;\n var gridContent = this.getContent().firstChild;\n var gridFooter = this.getFooterContent();\n if (dialogElement) {\n var dialogHolder = dialogElement.querySelector('.e-checkboxlist');\n var maskRowCount = Math.floor(dialogHolder.getBoundingClientRect().height / this.getRowHeight());\n var maskTemplate = '
    '\n + '
    '\n + this.getShimmerTemplate() + this.getShimmerTemplate() + '
    ';\n dialogHolder.innerHTML = '';\n for (var i = 0; i < maskRowCount; i++) {\n dialogHolder.innerHTML += maskTemplate;\n var maskSpan = [].slice.call(dialogHolder\n .querySelectorAll('.e-mask:not(.e-mask-checkbox-filter-intent):not(.e-mask-checkbox-filter-span-intent)'));\n maskSpan[0].classList.add('e-mask-checkbox-filter-intent');\n maskSpan[1].classList.add('e-mask-checkbox-filter-span-intent');\n }\n return;\n }\n if ((!this.enableRtl && !this.getHeaderContent().style.paddingRight)\n || (this.enableRtl && !this.getHeaderContent().style.paddingLeft)) {\n gridContent.style.overflowY = 'hidden';\n }\n if (!this.isInitialLoad && !this.getColumns().length) {\n var contentHeight = gridContent.getBoundingClientRect().height;\n var maskTableHeight = contentHeight === 0 ? this.allowPaging ? this.pageSettings.pageSize * this.getRowHeight()\n : window.innerHeight : contentHeight;\n var contentRowCount = Math.ceil(maskTableHeight / this.getRowHeight());\n if (this.rowRenderingMode !== 'Vertical') {\n this.headerMaskTable = this.createEmptyMaskTable(gridHeader, 1);\n }\n this.contentMaskTable = this.createEmptyMaskTable(gridContent, contentRowCount);\n return;\n }\n this.maskRowContentScroll = this.enableVirtualization && axisDirection ? true : false;\n if (!this.contentMaskTable && !(this.isFrozenGrid() && this.enableColumnVirtualization && axisDirection === 'X')) {\n var content = gridContent;\n if (this.isFrozenGrid()) {\n if (!this.isInitialLoad && !this.enableVirtualization && this.frozenRows && this.height !== 'auto') {\n var contentHeight = content.getBoundingClientRect().height - (this.frozenRows * this.getRowHeight());\n content.style.height = contentHeight + 'px';\n }\n content = content.querySelector('.e-frozen-left-content, .e-frozen-right-content');\n }\n else if (this.enableVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n if (!isNullOrUndefined(content.querySelector('tbody'))) {\n this.contentMaskTable = this.createMaskTable(content, this.getContentMaskColumns(), axisDirection);\n }\n }\n if (!this.headerMaskTable && (this.isFrozenGrid() || (this.enableColumnVirtualization && axisDirection === 'X'))\n && !((this.isFrozenGrid() && ((this.enableVirtualization && axisDirection === 'Y')\n || (this.enableColumnVirtualization && axisDirection === 'X')\n || (this.enableInfiniteScrolling && axisDirection === 'down'))))) {\n var content = gridHeader;\n if (this.isFrozenGrid()) {\n content = content.querySelector('.e-frozen-left-header, .e-frozen-right-header');\n }\n else if (this.enableColumnVirtualization && axisDirection === 'X') {\n content = content.querySelector('.e-virtualtable');\n }\n this.headerMaskTable = this.createMaskTable(content, this.getContentMaskColumns(), axisDirection);\n }\n if (!this.movableHeaderMaskTable && this.isFrozenGrid() && !((this.enableVirtualization && axisDirection === 'Y')\n || (this.enableInfiniteScrolling && axisDirection === 'down'))) {\n var content = gridHeader.querySelector('.e-movableheader');\n if (this.enableColumnVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n this.movableHeaderMaskTable = this.createMaskTable(content, this.getMovableContentMaskColumns(), axisDirection);\n }\n if (!this.rightHeaderMaskTable && this.isFrozenGrid() && this.getFrozenMode() === 'Left-Right'\n && !((this.enableVirtualization && axisDirection === 'Y') || (this.enableInfiniteScrolling && axisDirection === 'down'))) {\n this.rightHeaderMaskTable = this.createMaskTable(gridHeader\n .querySelector('.e-frozen-right-header'), this.getRightContentMaskColumns(), axisDirection);\n }\n if (!this.movableContentMaskTable && this.isFrozenGrid()) {\n var content = gridContent.querySelector('.e-movablecontent');\n if (this.enableColumnVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n if (!isNullOrUndefined(content.querySelector('tbody'))) {\n this.movableContentMaskTable = this.createMaskTable(content, this.getMovableContentMaskColumns(), axisDirection);\n }\n }\n if (!this.rightContentMaskTable && this.isFrozenGrid() && this.getFrozenMode() === 'Left-Right') {\n this.rightContentMaskTable = this.createMaskTable(gridContent\n .querySelector('.e-frozen-right-content'), this.getRightContentMaskColumns(), axisDirection);\n }\n if (gridFooter && gridFooter.querySelector('.e-summaryrow')) {\n var gridFooterContent = gridFooter.firstChild;\n if (!this.footerContentMaskTable) {\n var footerContent = gridFooterContent;\n if (this.isFrozenGrid()) {\n footerContent = footerContent.querySelector('.e-frozen-left-footercontent, .e-frozen-right-footercontent');\n }\n this.footerContentMaskTable = this.createMaskTable(footerContent);\n }\n if (this.isFrozenGrid()) {\n if (!this.movableFooterContentMaskTable) {\n this.movableFooterContentMaskTable = this.createMaskTable(gridFooterContent\n .querySelector('.e-movablefootercontent'));\n }\n if (this.getFrozenMode() === 'Left-Right' && !this.rightFooterContentMaskTable) {\n this.rightFooterContentMaskTable = this.createMaskTable(gridFooterContent\n .querySelector('.e-frozen-right-footercontent'));\n }\n }\n }\n if (!(this.enableVirtualization && axisDirection)) {\n EventHandler.add(gridContent, 'scroll', this.translateMaskRow, this);\n }\n };\n Grid.prototype.getContentMaskColumns = function () {\n var columns = this.getColumns();\n if (this.isFrozenGrid()) {\n if (this.getFrozenMode() === 'Left' || this.getFrozenMode() === 'Left-Right') {\n columns = this.frozenColumns ? columns.slice(0, this.frozenColumns) : this.getFrozenLeftColumns();\n }\n else if (this.getFrozenMode() === 'Right') {\n columns = this.getFrozenRightColumns();\n }\n }\n return columns;\n };\n Grid.prototype.getMovableContentMaskColumns = function () {\n var gridColumns = this.getColumns();\n var columns = this.frozenColumns ? gridColumns.slice(this.frozenColumns, gridColumns.length)\n : this.getMovableColumns();\n return columns;\n };\n Grid.prototype.getRightContentMaskColumns = function () {\n return this.getFrozenRightColumns();\n };\n Grid.prototype.createEmptyMaskTable = function (maskElement, rowCount) {\n var table = this.createElement('table', { className: 'e-table e-masked-table' });\n var tbody = this.createElement('tbody', { className: 'e-masked-tbody' });\n var row = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {\n style: 'height: ' + this.getRowHeight() + 'px;'\n } });\n var cell = this.createElement('td', { className: 'e-masked-cell e-rowcell' });\n cell.innerHTML = this.getShimmerTemplate();\n row.appendChild(cell);\n for (var i = 0; i < rowCount; i++) {\n tbody.appendChild(row.cloneNode(true));\n }\n table.appendChild(tbody);\n maskElement.appendChild(table);\n return table;\n };\n Grid.prototype.createMaskTable = function (element, columns, axisDirection) {\n var parentElement = element;\n var header = closest(parentElement, '.e-gridheader') ? true : false;\n var content = closest(parentElement, '.e-gridcontent') ? true : false;\n var footer = closest(parentElement, '.e-gridfooter') ? true : false;\n var gridContent = this.getContent().firstChild;\n var gridContentScrollHeight = gridContent.scrollHeight;\n var table = parentElement.querySelector('table');\n if (this.isFrozenGrid()) {\n if (content) {\n parentElement.style.overflow = 'hidden';\n }\n parentElement.style.position = 'relative';\n }\n var maskTable = table.cloneNode();\n maskTable.removeAttribute('role');\n maskTable.removeAttribute('id');\n maskTable.removeAttribute('aria-multiselectable');\n maskTable.removeAttribute('aria-colcount');\n maskTable.removeAttribute('aria-rowcount');\n maskTable.style.position = 'absolute';\n maskTable.style.zIndex = '1';\n maskTable.style.width = table.getBoundingClientRect().width + 'px';\n if (header && !(this.enableColumnVirtualization && axisDirection === 'X')) {\n maskTable.style.transform = 'translate(0px,'\n + table.querySelector('thead').getBoundingClientRect().height + 'px)';\n }\n maskTable.setAttribute('class', 'e-table e-masked-table');\n var maskColgroup = table.querySelector('colgroup').cloneNode(true);\n maskColgroup.removeAttribute('id');\n maskColgroup.setAttribute('class', 'e-masked-colgroup');\n maskTable.appendChild(maskColgroup);\n if (header && this.enableColumnVirtualization && axisDirection === 'X') {\n var row = this.createMaskRow(maskColgroup, columns);\n var thead = table.querySelector('thead');\n var rows = [].slice.call(thead.querySelectorAll('tr'));\n var maskTHead = thead.cloneNode();\n maskTHead.removeAttribute('role');\n maskTHead.setAttribute('class', 'e-masked-thead');\n var rowCount = rows.length;\n for (var i = 0; i < rowCount; i++) {\n maskTHead.appendChild(row.cloneNode(true));\n maskTHead.childNodes[parseInt(i.toString(), 10)].style\n .height = rows[parseInt(i.toString(), 10)].getBoundingClientRect().height + 'px';\n }\n maskTable.appendChild(maskTHead);\n }\n var maskTBody = table.querySelector('tbody').cloneNode();\n maskTBody.removeAttribute('role');\n maskTBody.setAttribute('class', 'e-masked-tbody');\n var tbody = table.querySelector('tbody');\n if (content || (header && this.isFrozenGrid())) {\n var rowCountElement = gridContent;\n var rowCount = header && this.isFrozenGrid() ? this.frozenRows\n : Math.ceil(rowCountElement.getBoundingClientRect().height / this.getRowHeight());\n if (tbody.querySelector('.e-emptyrow') || !tbody.childNodes.length || (content && this.childGrid)) {\n var row = this.createMaskRow(maskColgroup, columns);\n var altRow = row.cloneNode(true);\n altRow.classList.add('e-altrow');\n for (var i = 0; i < rowCount; i++) {\n var altNumber = content && this.isFrozenGrid() && this.frozenRows ? this.frozenRows + 1 : 1;\n maskTBody.appendChild((i + altNumber) % 2 === 0 ? altRow.cloneNode(true) : row.cloneNode(true));\n }\n }\n else {\n var rowsQuery = 'tr:not([style*=\"display:none\"]):not([style*=\"display: none\"])';\n var rows = [].slice.call(tbody.querySelectorAll(rowsQuery));\n var addEditRow = tbody.querySelector('.e-addedrow, .e-editedrow');\n var addEditRowIndex = void 0;\n if (addEditRow) {\n addEditRowIndex = rows.indexOf(addEditRow);\n if (addEditRow.classList.contains('e-addedrow')) {\n rows.splice(addEditRowIndex, 2);\n }\n else {\n rows.splice(addEditRowIndex, 1);\n }\n }\n rowCount = (header && this.isFrozenGrid()) || (this.enableVirtualization && axisDirection) ? rows.length\n : rowCount <= rows.length ? rowCount : rows.length;\n for (var i = 0; i < rowCount; i++) {\n maskTBody.appendChild(this.applyMaskRow(rows[parseInt(i.toString(), 10)].cloneNode(true), rows[parseInt(i.toString(), 10)].getBoundingClientRect().height));\n }\n if (addEditRow && addEditRow.classList.contains('e-editedrow') && addEditRowIndex < rowCount) {\n var addEditMaskRow = maskTBody.childNodes[parseInt(addEditRowIndex.toString(), 10)];\n addEditMaskRow.style.height = this.getRowHeight() + 'px';\n addEditMaskRow.classList.add('e-row');\n if (addEditRow.classList.contains('e-altrow')) {\n addEditMaskRow.classList.add('e-altrow');\n }\n }\n }\n }\n maskTable.appendChild(maskTBody);\n if (footer) {\n var tfoot = table.querySelector('tfoot');\n var maskTFoot = tfoot.cloneNode();\n maskTFoot.setAttribute('class', 'e-masked-tfoot');\n var rows = [].slice.call(tfoot.querySelectorAll('tr'));\n for (var i = 0; i < rows.length; i++) {\n maskTFoot.appendChild(this.applyMaskRow(rows[parseInt(i.toString(), 10)].cloneNode(true), rows[parseInt(i.toString(), 10)].getBoundingClientRect().height));\n }\n maskTable.appendChild(maskTFoot);\n }\n parentElement.insertBefore(maskTable, parentElement.firstChild);\n if (header && this.isFrozenGrid() && tbody\n .getBoundingClientRect().height < maskTable.querySelector('tbody').getBoundingClientRect().height) {\n var maskTableHolderHeight = maskTable.querySelector('tbody')\n .getBoundingClientRect().height - tbody.getBoundingClientRect().height;\n var maskTableHolder = this.createElement('div', { className: 'e-masked-table-holder', attrs: {\n style: 'height: ' + maskTableHolderHeight + 'px;'\n } });\n parentElement.appendChild(maskTableHolder);\n }\n else if (header && this.isFrozenGrid() && !(this.enableColumnVirtualization && axisDirection === 'X')) {\n maskTable.style.height = parentElement\n .getBoundingClientRect().height - table.querySelector('thead').getBoundingClientRect().height + 'px';\n }\n if (content && !(this.enableVirtualization && axisDirection)) {\n var minScrollTop = gridContentScrollHeight - maskTable.getBoundingClientRect().height;\n minScrollTop = minScrollTop < 0 ? 0 : minScrollTop;\n var scrollTop = gridContent.scrollTop <= minScrollTop ? gridContent.scrollTop : minScrollTop;\n if (this.enableVirtualization) {\n scrollTop -= getTransformValues(closest(parentElement, '.e-virtualtable')).height;\n }\n maskTable.style.transform = 'translate(0px,' + scrollTop + 'px)';\n }\n return maskTable;\n };\n Grid.prototype.applyMaskRow = function (row, rowHeight) {\n var maskRow = row;\n maskRow.removeAttribute('role');\n maskRow.removeAttribute('aria-rowindex');\n maskRow.removeAttribute('data-rowindex');\n maskRow.removeAttribute('data-uid');\n maskRow.classList.add('e-masked-row');\n maskRow.style.height = rowHeight + 'px';\n var maskCells = [].slice.call(maskRow.childNodes);\n for (var i = 0; i < maskCells.length; i++) {\n var maskCell = maskCells[parseInt(i.toString(), 10)];\n var displayAsCheckBoxCell = maskCell.firstChild && maskCell.firstChild.classList\n && maskCell.firstChild.classList.contains('e-checkbox-wrapper');\n maskCell.removeAttribute('role');\n maskCell.removeAttribute('tabindex');\n maskCell.removeAttribute('aria-label');\n maskCell.removeAttribute('data-colindex');\n maskCell.removeAttribute('aria-colindex');\n maskCell.removeAttribute('index');\n maskCell.removeAttribute('ej-mappingname');\n maskCell.removeAttribute('ej-mappingvalue');\n maskCell.removeAttribute('e-mappinguid');\n maskCell.removeAttribute('aria-expanded');\n maskCell.classList.add('e-masked-cell');\n maskCell.innerHTML = this.getShimmerTemplate();\n if (maskCell.classList.contains('e-recordplusexpand') || maskCell.classList.contains('e-recordpluscollapse')) {\n maskCell.firstChild.classList.add('e-mask-group-intent');\n }\n else if (maskCell.classList.contains('e-gridchkbox') || displayAsCheckBoxCell) {\n maskCell.firstChild.classList.add('e-mask-checkbox-intent');\n }\n else if (maskCell.classList.contains('e-rowdragdrop')) {\n maskCell.firstChild.classList.add('e-mask-drag-intent');\n }\n else if (maskCell.classList.contains('e-indentcell')) {\n maskCell.innerHTML = '';\n }\n }\n return maskRow;\n };\n Grid.prototype.createMaskRow = function (refColgroup, refColumns) {\n var colgroup = refColgroup;\n var columns = refColumns;\n var row = this.createElement('tr', { className: 'e-masked-row e-row' });\n if (this.rowRenderingMode !== 'Vertical') {\n row.style.height = this.getRowHeight() + 'px';\n }\n var td = this.createElement('td', { className: 'e-masked-cell e-rowcell' });\n for (var i = 0, colIndex = 0; i < colgroup.childNodes.length; i++) {\n var col = colgroup.childNodes[parseInt(i.toString(), 10)];\n var localTD = td.cloneNode();\n localTD.innerHTML = this.getShimmerTemplate();\n if (!(col.classList.contains('e-group-intent') || col.classList.contains('e-detail-intent')\n || col.classList.contains('e-drag-intent'))) {\n if (this.rowRenderingMode === 'Vertical' && columns[parseInt(colIndex.toString(), 10)]) {\n localTD.setAttribute('data-cell', columns[parseInt(colIndex.toString(), 10)].headerText ?\n columns[parseInt(colIndex.toString(), 10)].headerText : columns[parseInt(colIndex.toString(), 10)].field);\n }\n if (col.style.display === 'none') {\n localTD.classList.add('e-hide');\n }\n else {\n localTD.style.textAlign = columns[parseInt(colIndex.toString(), 10)]\n && columns[parseInt(colIndex.toString(), 10)].textAlign ?\n columns[parseInt(colIndex.toString(), 10)].textAlign.toLowerCase()\n : this.enableRtl ? 'right' : 'left';\n if (columns[parseInt(colIndex.toString(), 10)] && (columns[parseInt(colIndex.toString(), 10)].type === 'checkbox'\n || columns[parseInt(colIndex.toString(), 10)].displayAsCheckBox)) {\n localTD.firstChild.classList.add('e-mask-checkbox-intent');\n }\n }\n colIndex++;\n }\n else {\n if (col.classList.contains('e-group-intent')) {\n localTD.firstChild.classList.add('e-mask-group-intent');\n }\n else if (col.classList.contains('e-detail-intent')) {\n localTD.firstChild.classList.add('e-mask-detail-intent');\n }\n else if (col.classList.contains('e-drag-intent')) {\n localTD.firstChild.classList.add('e-mask-drag-intent');\n }\n }\n row.appendChild(localTD);\n }\n return row;\n };\n Grid.prototype.getShimmerTemplate = function () {\n if (this.maskRowContentScroll) {\n return '';\n }\n return '';\n };\n Grid.prototype.addShimmerEffect = function () {\n this.maskRowContentScroll = false;\n var maskSpan = [].slice.call(this.element.querySelectorAll('.e-mask:not(.e-shimmer-wave)'));\n for (var i = 0; i < maskSpan.length; i++) {\n if (maskSpan[parseInt(i.toString(), 10)]) {\n maskSpan[parseInt(i.toString(), 10)].classList.add('e-shimmer-wave');\n }\n }\n };\n Grid.prototype.translateMaskRow = function (e) {\n var target = e.target;\n var maskTables = target.querySelectorAll('.e-masked-table');\n for (var i = 0; i < maskTables.length; i++) {\n var maskTable = maskTables[parseInt(i.toString(), 10)];\n if (maskTable) {\n var minScrollTop = target.scrollHeight - maskTable.getBoundingClientRect().height;\n minScrollTop = minScrollTop < 0 ? 0 : minScrollTop;\n var scrollTop = target.scrollTop <= minScrollTop ? target.scrollTop : minScrollTop;\n if (this.enableVirtualization) {\n scrollTop -= getTransformValues(closest(maskTable, '.e-virtualtable')).height;\n }\n maskTable.style.transform = 'translate(0px,' + scrollTop + 'px)';\n }\n }\n };\n Grid.prototype.removeMaskRow = function () {\n if (!isNullOrUndefined(this.contentModule)) {\n var gridContent = this.getContent().firstChild;\n EventHandler.remove(gridContent, 'scroll', this.translateMaskRow);\n }\n var maskTables = [this.headerMaskTable, this.movableHeaderMaskTable, this.rightHeaderMaskTable,\n this.contentMaskTable, this.movableContentMaskTable, this.rightContentMaskTable, this.footerContentMaskTable,\n this.movableFooterContentMaskTable, this.rightFooterContentMaskTable];\n for (var i = 0; i < maskTables.length; i++) {\n var maskTable = maskTables[parseInt(i.toString(), 10)];\n if (maskTable) {\n if (this.isFrozenGrid() && !closest(maskTable, '.e-gridfooter')) {\n var parent_1 = maskTable.parentElement;\n parent_1.style.overflow = '';\n parent_1.style.position = '';\n if (closest(maskTable, '.e-frozen-left-header') || closest(maskTable, '.e-movableheader')\n || closest(maskTable, '.e-frozen-right-header')) {\n var maskTableHolder = parent_1.querySelector('.e-masked-table-holder');\n if (maskTableHolder) {\n remove(maskTableHolder);\n }\n }\n }\n remove(maskTable);\n }\n }\n this.headerMaskTable = null;\n this.movableHeaderMaskTable = null;\n this.rightHeaderMaskTable = null;\n this.contentMaskTable = null;\n this.movableContentMaskTable = null;\n this.rightContentMaskTable = null;\n this.footerContentMaskTable = null;\n this.movableFooterContentMaskTable = null;\n this.rightFooterContentMaskTable = null;\n };\n Grid.prototype.refreshMaskRow = function () {\n var gridHeader = this.getHeaderContent().firstChild;\n var gridContent = this.getContent().firstChild;\n if (!this.isInitialLoad && !this.getColumns().length) {\n return;\n }\n if (this.contentMaskTable && gridContent.querySelector('.e-masked-table')) {\n var content = gridContent;\n if (this.isFrozenGrid()) {\n content = content.querySelector('.e-frozen-left-content, .e-frozen-right-content');\n }\n else if (this.enableVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n this.refreshMaskRowColgroupWidth(content);\n }\n if (this.headerMaskTable && this.isFrozenGrid()) {\n this.refreshMaskRowColgroupWidth(gridHeader.querySelector('.e-frozen-left-header, .e-frozen-right-header'));\n }\n if (this.movableHeaderMaskTable && this.isFrozenGrid()) {\n var content = gridHeader.querySelector('.e-movableheader');\n if (this.enableColumnVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n this.refreshMaskRowColgroupWidth(content);\n }\n if (this.rightHeaderMaskTable && this.isFrozenGrid() && this.getFrozenMode() === 'Left-Right') {\n this.refreshMaskRowColgroupWidth(gridHeader.querySelector('.e-frozen-right-header'));\n }\n if (this.movableContentMaskTable && this.isFrozenGrid()) {\n var content = gridContent.querySelector('.e-movablecontent');\n if (this.enableColumnVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n this.refreshMaskRowColgroupWidth(content);\n }\n if (this.rightContentMaskTable && this.isFrozenGrid() && this.getFrozenMode() === 'Left-Right') {\n this.refreshMaskRowColgroupWidth(gridContent.querySelector('.e-frozen-right-content'));\n }\n };\n Grid.prototype.refreshMaskRowColgroupWidth = function (content) {\n var table = content.querySelector('table:not(.e-masked-table)');\n var colgroup = table.querySelector(literals.colGroup).cloneNode(true);\n var maskTable = content.querySelector('.e-masked-table');\n colgroup.removeAttribute('id');\n colgroup.setAttribute('class', 'e-masked-colgroup');\n for (var i = 0; i < colgroup.childNodes.length; i++) {\n colgroup.childNodes[parseInt(i.toString(), 10)].removeAttribute('class');\n }\n remove(maskTable.querySelector('.e-masked-colgroup'));\n maskTable.insertBefore(colgroup, maskTable.firstChild);\n maskTable.style.width = table.getBoundingClientRect().width + 'px';\n };\n Grid.prototype.updateStackedFilter = function () {\n if (this.allowFiltering && this.filterSettings.type === 'FilterBar' &&\n this.getHeaderContent().getElementsByClassName('e-stackedheadercell').length) {\n this.getHeaderContent().classList.add('e-stackedfilter');\n }\n else {\n this.getHeaderContent().classList.remove('e-stackedfilter');\n }\n };\n Grid.prototype.getMediaColumns = function () {\n if (!this.enableColumnVirtualization) {\n var gcol = this.getColumns();\n this.getShowHideService = this.serviceLocator.getService('showHideService');\n if (!isNullOrUndefined(gcol)) {\n for (var index = 0; index < gcol.length; index++) {\n if (!isNullOrUndefined(gcol[parseInt(index.toString(), 10)].hideAtMedia)\n && (isNullOrUndefined(gcol[parseInt(index.toString(), 10)].visible)\n || gcol[parseInt(index.toString(), 10)].visible)) {\n this.pushMediaColumn(gcol[parseInt(index.toString(), 10)], index);\n }\n }\n }\n }\n };\n Grid.prototype.pushMediaColumn = function (col, index) {\n this.mediaCol.push(col);\n this.media[col.uid] = window.matchMedia(col.hideAtMedia);\n this.mediaQueryUpdate(index, this.media[col.uid]);\n this.mediaBindInstance[parseInt(index.toString(), 10)] = this.mediaQueryUpdate.bind(this, index);\n this.media[col.uid].addListener(this.mediaBindInstance[parseInt(index.toString(), 10)]);\n };\n /**\n * @param {Column} col - specifies the column\n * @returns {void}\n * @hidden\n */\n Grid.prototype.updateMediaColumns = function (col) {\n if (!this.enableColumnVirtualization) {\n var index = this.getColumnIndexByUid(col.uid);\n for (var i = 0; i < this.mediaCol.length; i++) {\n if (col.uid === this.mediaCol[parseInt(i.toString(), 10)].uid) {\n this.mediaCol.splice(i, 1);\n return;\n }\n }\n this.pushMediaColumn(col, index);\n }\n };\n /**\n * @param {number} columnIndex - specifies the column index\n * @param {MediaQueryList} e - specifies the MediaQueryList\n * @returns {void}\n * @hidden\n */\n Grid.prototype.mediaQueryUpdate = function (columnIndex, e) {\n var col = this.getColumns()[parseInt(columnIndex.toString(), 10)];\n if (this.mediaCol.some(function (mediaColumn) { return mediaColumn.uid === col.uid; })) {\n col.visible = e.matches;\n if (this.isInitialLoad) {\n this.invokedFromMedia = true;\n if (col.visible) {\n this.showHider.show(col.headerText, 'headerText');\n }\n else {\n this.showHider.hide(col.headerText, 'headerText');\n }\n }\n }\n };\n Grid.prototype.refreshMediaCol = function () {\n this.isInitialLoad = true;\n var footerContent = this.element.querySelector('.' + literals.gridFooter);\n if (this.aggregates.length && this.element.scrollHeight > this.height && footerContent) {\n addClass([footerContent], ['e-footerpadding']);\n }\n var checkboxColumn = this.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length && this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n this.isCheckBoxSelection = false;\n }\n if (this.rowRenderingMode === 'Vertical') {\n if (this.enableHover) {\n this.setProperties({ enableAdaptiveUI: true, enableHover: false }, true);\n removeClass([this.element], 'e-gridhover');\n }\n }\n if (this.enableAdaptiveUI && this.scrollModule) {\n this.scrollModule.refresh();\n }\n };\n Grid.prototype.removeMediaListener = function () {\n for (var i = 0; i < this.mediaCol.length; i++) {\n this.media[this.mediaCol[parseInt(i.toString(), 10)].uid]\n .removeListener(this.mediaBindInstance[this.mediaCol[parseInt(i.toString(), 10)].index]);\n }\n };\n /**\n * For internal use only - Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.eventInitializer = function () {\n //eventInitializer\n };\n /**\n * Destroys the component (detaches/removes all event handlers, attributes, classes, and empties the component element).\n *\n * @function destroy\n * @returns {void}\n */\n Grid.prototype.destroy = function () {\n var gridElement = this.element;\n if (!gridElement) {\n return;\n }\n var hasGridChild = gridElement.querySelector('.' + literals.gridHeader) &&\n gridElement.querySelector('.' + literals.gridContent) ? true : false;\n if (hasGridChild) {\n this.unwireEvents();\n }\n this.removeListener();\n this.removeMediaListener();\n this.notify(events.destroy, {});\n this.destroyDependentModules();\n if (this.isReact || this.isVue) {\n this.destroyTemplate(['template']);\n }\n if (hasGridChild) {\n _super.prototype.destroy.call(this);\n }\n this.toolTipObj.destroy();\n if (this.isReact && !Browser.isIE) {\n this.element.innerHTML = '';\n }\n var modules = ['renderModule', 'headerModule', 'contentModule', 'valueFormatterService',\n 'serviceLocator', 'ariaService', 'keyboardModule', 'widthService', 'searchModule', 'showHider',\n 'scrollModule', 'printModule', 'clipboardModule', 'focusModule'];\n for (var i = 0; i < modules.length; i++) {\n if (this[modules[parseInt(i.toString(), 10)]]) {\n this[modules[parseInt(i.toString(), 10)]] = null;\n }\n }\n this.element.innerHTML = '';\n classList(this.element, [], ['e-rtl', 'e-gridhover', 'e-responsive', 'e-default', 'e-device', 'e-grid-min-height']);\n this.isFreezeRefresh = false;\n };\n Grid.prototype.destroyDependentModules = function () {\n var gridElement = this.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.scrollModule.destroy();\n this.keyboardModule.destroy();\n this.focusModule.destroy();\n this.clipboardModule.destroy();\n this.printModule.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Grid.prototype.getModuleName = function () {\n return 'grid';\n };\n Grid.prototype.enableBoxSelection = function () {\n if (this.enableAutoFill) {\n this.selectionSettings.cellSelectionMode = 'BoxWithBorder';\n this.element.classList.add('e-afenabled');\n }\n else {\n this.element.classList.remove('e-afenabled');\n }\n };\n Grid.prototype.setCSSClass = function (oldCSSClass) {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {GridModel} newProp - Defines new properties\n * @param {GridModel} oldProp - Defines old properties\n * @returns {void}\n * @hidden\n */\n Grid.prototype.onPropertyChanged = function (newProp, oldProp) {\n var requireRefresh = false;\n var requireGridRefresh = false;\n var freezeRefresh = false;\n var checkCursor;\n var args = { requestType: 'refresh' };\n var childGridParent = null;\n var parentInstance = null;\n if (this.isDestroyed) {\n return;\n }\n this.log('module_missing');\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n var properties = Object.keys(newProp);\n if (properties.indexOf('columns') > -1) {\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n }\n this.updateColumnObject();\n requireGridRefresh = true;\n }\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'allowPaging':\n this.notify(events.uiUpdate, { module: 'pager', enable: this.allowPaging });\n requireRefresh = true;\n break;\n case 'pageSettings':\n if (this.pageTemplateChange) {\n this.pageTemplateChange = false;\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n break;\n }\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n if (isNullOrUndefined(newProp.pageSettings.currentPage) && isNullOrUndefined(newProp.pageSettings.pageSize)\n && isNullOrUndefined(newProp.pageSettings.totalRecordsCount)\n || !isNullOrUndefined(oldProp.pageSettings) &&\n ((newProp.pageSettings.currentPage !== oldProp.pageSettings.currentPage)\n && !this.enableColumnVirtualization && !this.enableVirtualization\n && this.pageSettings.totalRecordsCount <= this.pageSettings.pageSize)) {\n requireRefresh = true;\n }\n break;\n case 'allowSorting':\n this.notify(events.uiUpdate, { module: 'sort', enable: this.allowSorting });\n requireRefresh = true;\n checkCursor = true;\n break;\n case 'allowFiltering':\n this.updateStackedFilter();\n this.notify(events.uiUpdate, { module: 'filter', enable: this.allowFiltering });\n requireRefresh = true;\n if (this.filterSettings.type !== 'FilterBar') {\n this.refreshHeader();\n }\n break;\n case 'height':\n case 'width':\n this.notify(events.uiUpdate, { module: 'scroll', properties: { width: newProp.width, height: newProp.height } });\n if (this.allowPaging) {\n this.pagerModule.refresh();\n }\n break;\n case 'allowReordering':\n this.headerModule.refreshUI();\n checkCursor = true;\n break;\n case 'allowRowDragAndDrop':\n this.notify(events.uiUpdate, { module: 'rowDragAndDrop', enable: this.allowRowDragAndDrop });\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'allowSelection':\n this.notify(events.uiUpdate, { module: 'selection', enable: this.allowSelection });\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'enableAutoFill':\n if (this.selectionModule) {\n this.enableBoxSelection();\n this.selectionModule.updateAutoFillPosition();\n }\n break;\n case 'rowTemplate':\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n requireRefresh = true;\n break;\n case 'detailTemplate':\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n requireRefresh = true;\n break;\n case 'allowGrouping':\n this.notify(events.uiUpdate, { module: 'group', enable: this.allowGrouping });\n this.headerModule.refreshUI();\n requireRefresh = true;\n checkCursor = true;\n break;\n case 'enableInfiniteScrolling':\n case 'childGrid':\n requireRefresh = true;\n childGridParent = this.parentDetails ? document.querySelector(\"#\" + this.parentDetails.parentID) : null;\n parentInstance = childGridParent ? childGridParent.ej2_instances[0] : null;\n if (this.childGrid && parentInstance && isNullOrUndefined(parentInstance.childGrid.childGrid)) {\n var childGridObject = Object.assign({}, parentInstance.childGrid, { childGrid: newProp.childGrid });\n parentInstance.setProperties({ childGrid: childGridObject }, true);\n while (!isNullOrUndefined(parentInstance.parentDetails)) {\n var currentParent = document.querySelector(\"#\" + parentInstance.parentDetails.parentID);\n var currentParentInstance = currentParent ? currentParent.ej2_instances[0] : null;\n if (currentParentInstance) {\n var currentChildObject = Object.assign({}, currentParentInstance.childGrid);\n currentChildObject.childGrid = parentInstance.childGrid;\n currentParentInstance.setProperties({ childGrid: currentChildObject }, true);\n }\n parentInstance = currentParentInstance;\n }\n }\n break;\n case 'toolbar':\n this.notify(events.uiUpdate, { module: 'toolbar' });\n break;\n case 'groupSettings':\n this.notify(events.inBoundModelChanged, {\n module: 'group', properties: newProp.groupSettings,\n oldProperties: oldProp.groupSettings\n });\n break;\n case 'aggregates':\n if (!this.aggregates.length && this.allowGrouping && this.groupSettings.columns.length) {\n requireRefresh = true;\n }\n this.notify(events.uiUpdate, { module: 'aggregate', properties: newProp });\n break;\n case 'frozenColumns':\n case 'frozenRows':\n case 'enableVirtualization':\n case 'currencyCode':\n case 'locale':\n this.log('frozen_rows_columns');\n freezeRefresh = true;\n requireGridRefresh = true;\n break;\n case 'query':\n if (!this.getDataModule().isQueryInvokedFromData) {\n requireRefresh = true;\n }\n this.getDataModule().isQueryInvokedFromData = false;\n break;\n case 'autoFit':\n if (this.autoFit) {\n this.preventAdjustColumns();\n }\n else {\n this.restoreAdjustColumns();\n }\n break;\n default:\n this.extendedPropertyChange(prop, newProp, requireGridRefresh);\n }\n }\n if (checkCursor) {\n this.updateDefaultCursor();\n }\n if (requireGridRefresh) {\n if (freezeRefresh || this.getFrozenColumns() || this.frozenRows) {\n this.freezeRefresh();\n }\n else {\n this.refresh();\n }\n }\n else if (requireRefresh) {\n this.notify(events.modelChanged, args);\n requireRefresh = false;\n this.maintainSelection(newProp.selectedRowIndex);\n }\n };\n Grid.prototype.extendedPropertyChange = function (prop, newProp, requireGridRefresh) {\n switch (prop) {\n case 'enableRtl':\n this.updateRTL();\n if (this.allowPaging) {\n this.element.querySelector('.e-gridpager').ej2_instances[0].enableRtl = newProp.enableRtl;\n this.element.querySelector('.e-gridpager').ej2_instances[0].dataBind();\n }\n if (this.height !== 'auto') {\n this.scrollModule.removePadding(!newProp.enableRtl);\n this.scrollModule.setPadding();\n }\n if (this.toolbar && this.toolbarModule) {\n this.toolbarModule.getToolbar().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.toolbarModule.getToolbar().ej2_instances[0].dataBind();\n }\n if (this.contextMenuItems && this.contextMenuModule) {\n this.contextMenuModule.getContextMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.contextMenuModule.getContextMenu().ej2_instances[0].dataBind();\n }\n if (this.showColumnMenu && this.columnMenuModule) {\n this.columnMenuModule.getColumnMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.columnMenuModule.getColumnMenu().ej2_instances[0].dataBind();\n }\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n this.refreshHeader();\n }\n this.notify(events.rtlUpdated, {});\n break;\n case 'enableAltRow':\n this.renderModule.refresh();\n break;\n case 'allowResizing':\n this.headerModule.refreshUI();\n this.updateResizeLines();\n break;\n case 'rowHeight':\n if (this.rowHeight) {\n addClass([this.element], 'e-grid-min-height');\n }\n else {\n removeClass([this.element], 'e-grid-min-height');\n }\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'gridLines':\n this.updateGridLines();\n break;\n case 'showColumnMenu':\n this.headerModule.refreshUI();\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: true });\n break;\n case 'columnMenuItems':\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: this.columnMenuItems });\n break;\n case 'contextMenuItems':\n this.notify(events.uiUpdate, { module: 'contextMenu', enable: this.contextMenuItems });\n break;\n case 'showColumnChooser':\n this.notify(events.uiUpdate, { module: 'columnChooser', enable: this.showColumnChooser });\n break;\n case 'filterSettings':\n this.updateStackedFilter();\n this.notify(events.inBoundModelChanged, { module: 'filter', properties: newProp.filterSettings });\n break;\n case 'searchSettings':\n this.notify(events.inBoundModelChanged, { module: 'search', properties: newProp.searchSettings });\n break;\n case 'sortSettings':\n this.notify(events.inBoundModelChanged, { module: 'sort' });\n break;\n case 'selectionSettings':\n this.notify(events.inBoundModelChanged, { module: 'selection', properties: newProp.selectionSettings });\n break;\n case 'editSettings':\n this.notify(events.inBoundModelChanged, { module: 'edit', properties: newProp.editSettings });\n break;\n case 'allowTextWrap':\n case 'textWrapSettings':\n if (this.allowTextWrap) {\n this.applyTextWrap();\n }\n else {\n this.removeTextWrap();\n }\n this.notify(events.freezeRender, { case: 'textwrap', isModeChg: (prop === 'textWrapSettings') });\n break;\n case 'dataSource':\n // eslint-disable-next-line no-case-declarations\n var pending_1 = this.getDataModule().getState();\n if (Object.getPrototypeOf(newProp).deepWatch) {\n var pKeyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0, props = Object.keys(newProp.dataSource); i < props.length; i++) {\n this.setRowData(getValue(pKeyField, this.dataSource[props[parseInt(i.toString(), 10)]]), this.dataSource[props[parseInt(i.toString(), 10)]]);\n }\n }\n else if (pending_1.isPending) {\n var gResult = !isNullOrUndefined(this.dataSource) ? this.dataSource.result : [];\n var names = (pending_1.group || []);\n for (var i = 0; i < names.length; i++) {\n gResult = DataUtil.group(gResult, names[parseInt(i.toString(), 10)], pending_1.aggregates || []);\n }\n this.dataSource = {\n result: gResult, count: this.dataSource.count,\n aggregates: this.dataSource.aggregates\n };\n this.getDataModule().setState({});\n pending_1.resolver(this.dataSource);\n }\n else {\n this.getDataModule().setState({ isDataChanged: false });\n this.notify(events.dataSourceModified, {});\n if (!requireGridRefresh) {\n this.renderModule.refresh();\n if (this.isCheckBoxSelection) {\n this.notify(events.beforeRefreshOnDataChange, {});\n }\n }\n }\n this.scrollRefresh();\n break;\n case 'enableHover':\n // eslint-disable-next-line no-case-declarations\n var action = newProp.enableHover ? addClass : removeClass;\n action([this.element], 'e-gridhover');\n break;\n case 'selectedRowIndex':\n if (!this.isSelectedRowIndexUpdating) {\n this.selectRow(newProp.selectedRowIndex);\n }\n this.isSelectedRowIndexUpdating = false;\n break;\n case 'resizeSettings':\n this.widthService.setWidthToTable();\n break;\n case 'enableAdaptiveUI':\n this.notify(events.setFullScreenDialog, {});\n break;\n case 'rowRenderingMode':\n this.enableVerticalRendering();\n this.notify(events.rowModeChange, {});\n this.refresh();\n break;\n case 'enableStickyHeader':\n this.scrollModule.addStickyListener(newProp.enableStickyHeader);\n break;\n }\n };\n Grid.prototype.maintainSelection = function (index) {\n var _this = this;\n if (index !== -1) {\n var fn_1 = function () {\n _this.selectRow(index);\n _this.off(events.contentReady, fn_1);\n };\n this.on(events.contentReady, fn_1, this);\n }\n };\n /**\n * @param {Object} prop - Defines the property\n * @param {boolean} muteOnChange - Defines the mute on change\n * @returns {void}\n * @private\n */\n Grid.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n var filterSettings = 'filterSettings';\n if (prop[\"\" + filterSettings] && this.filterModule && muteOnChange) {\n this.filterModule.refreshFilter();\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setTablesCount = function () {\n var frozenCols = this.getFrozenColumns();\n var frozenLeft = this.getFrozenLeftColumnsCount();\n var frozenRight = this.getFrozenRightColumnsCount();\n if (frozenCols && !frozenLeft && !frozenRight) {\n this.tablesCount = 2;\n }\n else if (!frozenCols && (frozenLeft || frozenRight)) {\n if ((frozenLeft && !frozenRight) || (frozenRight && !frozenLeft)) {\n this.tablesCount = 2;\n }\n else if (frozenLeft && frozenRight) {\n this.tablesCount = 3;\n }\n }\n };\n /**\n * @hidden\n * @returns {number} - Returns the tables count\n */\n Grid.prototype.getTablesCount = function () {\n return this.tablesCount;\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.updateDefaultCursor = function () {\n var headerCells = [].slice.call(this.getHeaderContent().querySelectorAll('.e-headercell:not(.e-stackedheadercell)'));\n var stdHdrCell = [].slice.call(this.getHeaderContent().getElementsByClassName('e-stackedheadercell'));\n var cols = this.getColumns();\n if (this.enableColumnVirtualization && this.getFrozenColumns()) {\n var cells = this.contentModule.getHeaderCells();\n headerCells = cells.length ? cells : headerCells;\n }\n for (var i = 0; i < headerCells.length; i++) {\n var cell = headerCells[parseInt(i.toString(), 10)];\n if (this.allowGrouping || this.allowReordering || this.allowSorting) {\n if (!cols[parseInt(i.toString(), 10)].allowReordering || !cols[parseInt(i.toString(), 10)].allowSorting\n || !cols[parseInt(i.toString(), 10)].allowGrouping) {\n cell.classList.add('e-defaultcursor');\n }\n else {\n cell.classList.add('e-mousepointer');\n }\n }\n }\n for (var count = 0; count < stdHdrCell.length; count++) {\n if (this.allowReordering) {\n stdHdrCell[parseInt(count.toString(), 10)].classList.add('e-mousepointer');\n }\n }\n };\n Grid.prototype.updateColumnModel = function (columns, isRecursion) {\n for (var i = 0, len = columns.length; i < len; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.updateColumnModel(columns[parseInt(i.toString(), 10)].columns, true);\n }\n else {\n this.columnModel.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n if (isNullOrUndefined(isRecursion) || !isRecursion) {\n this.updateColumnLevelFrozen();\n this.updateFrozenColumns();\n this.updateLockableColumns();\n }\n };\n Grid.prototype.updateColumnLevelFrozen = function () {\n var cols = this.columnModel;\n var leftCols = [];\n var rightCols = [];\n var movableCols = [];\n if (this.frozenLeftCount || this.frozenRightCount) {\n for (var i = 0, len = cols.length; i < len; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var col = cols[parseInt(i.toString(), 10)];\n if (col.freeze === 'Left') {\n col.freezeTable = literals.frozenLeft;\n leftCols.push(col);\n }\n else if (col.freeze === 'Right') {\n col.freezeTable = literals.frozenRight;\n rightCols.push(col);\n }\n else {\n col.freezeTable = 'movable';\n movableCols.push(col);\n }\n }\n this.columnModel = leftCols.concat(movableCols).concat(rightCols);\n }\n };\n Grid.prototype.updateFrozenColumns = function () {\n if (this.frozenLeftCount || this.frozenRightCount) {\n return;\n }\n var cols = this.columnModel;\n var directFrozenCount = this.frozenColumns;\n var totalFrozenCount = this.getFrozenColumns();\n var count = 0;\n for (var i = 0, len = cols.length; i < len; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var col = cols[parseInt(i.toString(), 10)];\n if (directFrozenCount) {\n if (i < directFrozenCount) {\n col.freezeTable = literals.frozenLeft;\n }\n else {\n col.freezeTable = 'movable';\n }\n }\n if (col.isFrozen && i >= directFrozenCount) {\n col.freezeTable = literals.frozenLeft;\n cols.splice(this.frozenColumns + count, 0, cols.splice(i, 1)[0]);\n count++;\n }\n else if (totalFrozenCount && !directFrozenCount) {\n col.freezeTable = 'movable';\n }\n if (!totalFrozenCount && !directFrozenCount && !isNullOrUndefined(col.freezeTable)) {\n col.freezeTable = undefined;\n }\n }\n };\n Grid.prototype.getFrozenLeftCount = function () {\n return this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n };\n Grid.prototype.isFrozenGrid = function () {\n return this.getFrozenColumns() !== 0 || this.getFrozenLeftColumnsCount() !== 0 || this.getFrozenRightColumnsCount() !== 0;\n };\n Grid.prototype.getFrozenMode = function () {\n return this.frozenName;\n };\n Grid.prototype.updateLockableColumns = function () {\n var cols = this.columnModel;\n var frozenCount = 0;\n var movableCount = 0;\n var frozenColumns = this.getFrozenColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].lockColumn) {\n if (i < frozenColumns) {\n cols.splice(frozenCount, 0, cols.splice(i, 1)[0]);\n frozenCount++;\n }\n else {\n cols.splice(frozenColumns + movableCount, 0, cols.splice(i, 1)[0]);\n movableCount++;\n }\n }\n }\n };\n Grid.prototype.checkLockColumns = function (cols) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n this.checkLockColumns(cols[parseInt(i.toString(), 10)].columns);\n }\n else if (cols[parseInt(i.toString(), 10)].lockColumn) {\n this.lockcolPositionCount++;\n }\n }\n };\n /**\n * Gets the columns from the Grid.\n *\n * @param {boolean} isRefresh - Defines the boolean whether to refresh\n * @returns {Column[]} - returns the column\n */\n Grid.prototype.getColumns = function (isRefresh) {\n var _this = this;\n var inview = this.inViewIndexes.map(function (v) { return v - _this.groupSettings.columns.length; }).filter(function (v) { return v > -1; });\n var vLen = inview.length;\n if (!this.enableColumnVirtualization || isNullOrUndefined(this.columnModel) || this.columnModel.length === 0 || isRefresh) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n var columns = vLen === 0 ? this.columnModel :\n this.columnModel.slice(inview[0], inview[vLen - 1] + 1);\n if (this.contentModule && this.enableColumnVirtualization && this.isFrozenGrid() && inview.length\n && inview[0] > 0) {\n var frozenCols = this.contentModule.ensureFrozenCols(columns);\n columns = frozenCols;\n }\n return columns;\n };\n /**\n * @private\n * @param {string} stackedHeader - Defines the stacked header\n * @param {Column[]} col - Defines the column\n * @returns {Column} Returns the Column\n */\n Grid.prototype.getStackedHeaderColumnByHeaderText = function (stackedHeader, col) {\n for (var i = 0; i < col.length; i++) {\n var individualColumn = col[parseInt(i.toString(), 10)];\n if (individualColumn.field === stackedHeader || individualColumn.headerText === stackedHeader) {\n this.stackedColumn = individualColumn;\n break;\n }\n else if (individualColumn.columns) {\n this.getStackedHeaderColumnByHeaderText(stackedHeader, individualColumn.columns);\n }\n }\n return this.stackedColumn;\n };\n /**\n * @private\n * @returns {number[]} Returns the column indexes\n */\n Grid.prototype.getColumnIndexesInView = function () {\n return this.inViewIndexes;\n };\n /**\n * @private\n * @returns {Query} - returns the query\n */\n Grid.prototype.getQuery = function () {\n return this.query;\n };\n /**\n * @private\n * @returns {object} - returns the locale constants\n */\n Grid.prototype.getLocaleConstants = function () {\n return this.defaultLocale;\n };\n /**\n * @param {number[]} indexes - specifies the indexes\n * @returns {void}\n * @private\n */\n Grid.prototype.setColumnIndexesInView = function (indexes) {\n this.inViewIndexes = indexes;\n };\n /**\n * Gets the visible columns from the Grid.\n *\n * @returns {Column[]} returns the column\n */\n Grid.prototype.getVisibleColumns = function () {\n return this.getCurrentVisibleColumns();\n };\n /**\n * Gets the header div of the Grid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getHeaderContent = function () {\n return this.headerModule.getPanel();\n };\n /**\n * Sets the header div of the Grid to replace the old header.\n *\n * @param {Element} element - Specifies the Grid header.\n *\n * @returns {void}\n */\n Grid.prototype.setGridHeaderContent = function (element) {\n this.headerModule.setPanel(element);\n };\n /**\n * Gets the content table of the Grid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getContentTable = function () {\n return this.contentModule.getTable();\n };\n /**\n * Sets the content table of the Grid to replace the old content table.\n *\n * @param {Element} element - Specifies the Grid content table.\n *\n * @returns {void}\n */\n Grid.prototype.setGridContentTable = function (element) {\n this.contentModule.setTable(element);\n };\n /**\n * Gets the content div of the Grid.\n *\n * @returns {Element} Returns the element\n */\n Grid.prototype.getContent = function () {\n return this.contentModule.getPanel();\n };\n /**\n * Sets the content div of the Grid to replace the old Grid content.\n *\n * @param {Element} element - Specifies the Grid content.\n *\n * @returns {void}\n */\n Grid.prototype.setGridContent = function (element) {\n this.contentModule.setPanel(element);\n };\n /**\n * Gets the header table element of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getHeaderTable = function () {\n return this.headerModule.getTable();\n };\n /**\n * Sets the header table of the Grid to replace the old one.\n *\n * @param {Element} element - Specifies the Grid header table.\n *\n * @returns {void}\n */\n Grid.prototype.setGridHeaderTable = function (element) {\n this.headerModule.setTable(element);\n };\n /**\n * Gets the footer div of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getFooterContent = function () {\n this.footerElement = this.element.getElementsByClassName(literals.gridFooter)[0];\n return this.footerElement;\n };\n /**\n * Gets the footer table element of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getFooterContentTable = function () {\n this.footerElement = this.element.getElementsByClassName(literals.gridFooter)[0];\n return this.footerElement.firstChild.firstChild;\n };\n /**\n * Gets the pager of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getPager = function () {\n return this.gridPager; //get element from pager\n };\n /**\n * Sets the pager of the Grid to replace the old pager.\n *\n * @param {Element} element - Specifies the Grid pager.\n *\n * @returns {void}\n */\n Grid.prototype.setGridPager = function (element) {\n this.gridPager = element;\n };\n /**\n * Gets a row by index.\n *\n * @param {number} index - Specifies the row index.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getRowByIndex = function (index) {\n if (this.enableVirtualization && this.groupSettings.enableLazyLoading) {\n return this.lazyLoadRender.getRowByIndex(index);\n }\n else {\n return this.contentModule.getRowByIndex(index);\n }\n };\n /**\n * Gets a movable tables row by index.\n *\n * @param {number} index - Specifies the row index.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getMovableRowByIndex = function (index) {\n return this.contentModule.getMovableRowByIndex(index);\n };\n /**\n * Gets a frozen tables row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenRowByIndex = function (index) {\n return this.getFrozenDataRows()[parseInt(index.toString(), 10)];\n };\n /**\n * Gets all the data rows of the Grid.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets a frozen right tables row element by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenRightRowByIndex = function (index) {\n return this.contentModule.getFrozenRightRowByIndex(index);\n };\n /**\n * Get a row information based on cell\n *\n * @param {Element | EventTarget} target - specifies the element\n *\n * @returns {RowInfo} returns the row info\n */\n Grid.prototype.getRowInfo = function (target) {\n var ele = target;\n var args = { target: target };\n if (!isNullOrUndefined(target) && isNullOrUndefined(parentsUntil(ele, 'e-detailrowcollapse')\n && isNullOrUndefined(parentsUntil(ele, 'e-recordplusexpand')))) {\n var cell = closest(ele, '.' + literals.rowCell);\n if (!cell) {\n var row = closest(ele, '.' + literals.row);\n if (!isNullOrUndefined(row) && !row.classList.contains('e-addedrow')) {\n var rowObj = this.getRowObjectFromUID(row.getAttribute('data-uid'));\n var rowIndex = parseInt(row.getAttribute(literals.dataRowIndex), 10);\n args = { row: row, rowData: rowObj.data, rowIndex: rowIndex };\n }\n return args;\n }\n var cellIndex = parseInt(cell.getAttribute(literals.dataColIndex), 10);\n if (!isNullOrUndefined(cell) && !isNaN(cellIndex)) {\n var row_1 = closest(cell, '.' + literals.row);\n var rowIndex = parseInt(row_1.getAttribute(literals.dataRowIndex), 10);\n var frzCols = this.getFrozenColumns();\n var tableName = this.columnModel[parseInt(cellIndex.toString(), 10)].getFreezeTableName();\n var rows = this.contentModule.getRows();\n var index = cellIndex + this.getIndentCount();\n if (this.isFrozenGrid()) {\n if (tableName === literals.frozenLeft) {\n rows = this.contentModule.getRows();\n }\n else if (tableName === 'movable') {\n index = cellIndex - frzCols - this.frozenLeftCount;\n rows = this.contentModule.getMovableRows();\n }\n else if (tableName === literals.frozenRight) {\n index = cellIndex - (this.frozenLeftCount + this.movableCount);\n rows = this.contentModule.getFrozenRightRows();\n }\n }\n var rowsObject = rows.filter(function (r) { return r.uid === row_1.getAttribute('data-uid'); });\n var rowData = {};\n var column = void 0;\n if (Object.keys(rowsObject).length) {\n rowData = rowsObject[0].data;\n column = rowsObject[0].cells[parseInt(index.toString(), 10)].column;\n }\n args = { cell: cell, cellIndex: cellIndex, row: row_1, rowIndex: rowIndex, rowData: rowData, column: column, target: target };\n }\n }\n return args;\n };\n /**\n * Gets the Grid's movable content rows from frozen grid.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getMovableRows = function () {\n return this.contentModule.getMovableRowElements();\n };\n /**\n * Gets the Grid's frozen right content rows from frozen grid.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getFrozenRightRows = function () {\n return this.contentModule.getFrozenRightRowElements();\n };\n /**\n * Gets all the Grid's data rows.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getDataRows = function () {\n return this.getAllDataRows();\n };\n /**\n * @param {boolean} includeAdd - specifies includeAdd\n * @returns {Element[]} returns the element\n * @hidden\n */\n Grid.prototype.getAllDataRows = function (includeAdd) {\n if (isNullOrUndefined(this.getContentTable().querySelector(literals.tbody))) {\n return [];\n }\n var tbody = this.isFrozenGrid() ? this.getFrozenLeftContentTbody()\n : this.getContentTable().querySelector(literals.tbody);\n var rows = [].slice.call(tbody.children);\n if (this.frozenRows) {\n var hdrTbody = this.isFrozenGrid() ? this.getHeaderContent().querySelector('.' + literals.frozenHeader).querySelector(literals.tbody)\n : this.getHeaderTable().querySelector(literals.tbody);\n var freezeRows = [].slice.call(hdrTbody.children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * @param {HTMLElement[]} fRows - Defines the frozen Rows\n * @param {HTMLElement[]} mrows - Defines the movable Rows\n * @returns {HTMLElement[]} Returns the element\n * @hidden\n */\n Grid.prototype.addMovableRows = function (fRows, mrows) {\n for (var i = 0, len = mrows.length; i < len; i++) {\n fRows.push(mrows[parseInt(i.toString(), 10)]);\n }\n return fRows;\n };\n Grid.prototype.generateDataRows = function (rows, includAdd) {\n var dRows = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n if (rows[parseInt(i.toString(), 10)].classList.contains(literals.row)\n && (!rows[parseInt(i.toString(), 10)].classList.contains('e-hiddenrow') || includAdd)) {\n if (this.isCollapseStateEnabled()) {\n dRows[parseInt(rows[parseInt(i.toString(), 10)].getAttribute('data-rowindex'), 10)] = rows[parseInt(i.toString(), 10)];\n }\n else {\n dRows.push(rows[parseInt(i.toString(), 10)]);\n }\n }\n }\n return dRows;\n };\n /**\n * Gets all the Grid's movable table data rows.\n *\n * @returns {Element[]} Returns the element\n */\n Grid.prototype.getMovableDataRows = function () {\n return this.getAllMovableDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n * @hidden\n */\n Grid.prototype.getAllMovableDataRows = function (includeAdd) {\n if (!this.isFrozenGrid()) {\n return [];\n }\n var rows = [].slice.call(this.getContent().querySelector('.' + literals.movableContent).querySelector(literals.tbody).children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.tbody).children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Gets all the Grid's frozen table data rows.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getFrozenDataRows = function () {\n return this.getAllFrozenDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n * @hidden\n */\n Grid.prototype.getAllFrozenDataRows = function (includeAdd) {\n var rows = [].slice.call(this.getContent().querySelector('.' + literals.frozenContent).querySelector(literals.tbody).children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.' + literals.frozenHeader).querySelector(literals.tbody).children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Gets all the Grid's frozen right table data rows.\n *\n * @returns {Element[]} Returns the Element\n */\n Grid.prototype.getFrozenRightDataRows = function () {\n return this.getAllFrozenRightDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n * @hidden\n */\n Grid.prototype.getAllFrozenRightDataRows = function (includeAdd) {\n if (this.getFrozenMode() !== 'Right' && this.getFrozenMode() !== 'Left-Right') {\n return [];\n }\n var rows = [].slice.call(this.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody).children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.e-frozen-right-header').querySelector(literals.tbody).children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Updates particular cell value based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {string } field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n *\n * @returns {void}\n */\n Grid.prototype.setCellValue = function (key, field, value) {\n var cells = 'cells';\n var rowData = 'data';\n var rowIdx = 'index';\n var rowuID = 'uid';\n var isRight = this.getFrozenMode() === 'Right';\n var pkName = this.getPrimaryKeyFieldNames()[0];\n var cell = new CellRenderer(this, this.serviceLocator);\n var fieldIdx = this.getColumnIndexByField(field);\n var col = this.getColumnByField(field);\n var rowObjects = col.getFreezeTableName() === 'movable' ? this.contentModule.getMovableRows() :\n col.getFreezeTableName() === 'frozen-right' ? this.getFrozenRightRowsObject() : this.contentModule.getRows();\n var selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n var tr = selectedRow ? this.element.querySelector('[data-uid=' + selectedRow[\"\" + rowuID] + ']') : null;\n if (!isNullOrUndefined(tr)) {\n if (typeof value === 'string') {\n value = this.sanitize(value);\n }\n setValue(field, value, selectedRow[\"\" + rowData]);\n var left = this.getFrozenLeftColumnsCount() || this.getFrozenColumns();\n var movable = this.getMovableColumnsCount();\n if (this.isRowDragable() && !isRight) {\n left++;\n }\n var frIdx = left + movable;\n var td = this.enableVirtualization ? tr.children[parseInt(fieldIdx.toString(), 10)]\n : this.getCellFromIndex(selectedRow[\"\" + rowIdx], fieldIdx);\n if (!isNullOrUndefined(td)) {\n var Idx = col.getFreezeTableName() === 'movable' ? left : col.getFreezeTableName() === 'frozen-right' ? frIdx : 0;\n if (this.groupSettings.columns.length) {\n fieldIdx = fieldIdx + this.groupSettings.columns.length;\n }\n if (this.childGrid || this.detailTemplate) {\n fieldIdx++;\n }\n if (this.isRowDragable() && !isRight) {\n fieldIdx++;\n }\n var sRow = selectedRow[\"\" + cells][fieldIdx - Idx];\n cell.refreshTD(td, sRow, selectedRow[\"\" + rowData], { index: selectedRow[\"\" + rowIdx] });\n if (this.isReact) {\n td = this.enableVirtualization ? tr.children[parseInt(fieldIdx.toString(), 10)]\n : this.getCellFromIndex(selectedRow[\"\" + rowIdx], fieldIdx);\n }\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n /* tslint:disable:no-string-literal */\n if (!isNullOrUndefined(selectedRow) && !isNullOrUndefined(selectedRow['changes'])) {\n selectedRow['changes'][\"\" + field] = value;\n }\n /* tslint:disable:no-string-literal */\n this.trigger(events.queryCellInfo, {\n cell: td, column: col, data: selectedRow[\"\" + rowData]\n });\n if (this.isReact && td.getAttribute('tabindex') === '0' && td.classList.contains('e-focused')) {\n td.focus();\n }\n }\n }\n else {\n return;\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @param {boolean} renderTemplates - Defines renderTemplates need to invoke\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactColumnTemplateByUid = function (columnUid, renderTemplates) {\n var _this = this;\n if (this.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.clearTemplate(['columnTemplate'], undefined, function () {\n var isChildGrid = _this.childGrid && _this.element.querySelectorAll('.e-childgrid').length ? true : false;\n var rows = isChildGrid ? _this.getContentTable().querySelectorAll('.e-row') :\n _this.getDataRows();\n _this.refreshReactTemplateTD(rows, isChildGrid);\n var mCont = _this.getContent().querySelector('.' + literals.movableContent);\n var frCont = _this.getContent().querySelector('.e-frozen-right-content');\n if (mCont && mCont.querySelectorAll('.e-templatecell').length) {\n _this.refreshReactTemplateTD(_this.getMovableDataRows(), isChildGrid, true);\n }\n if (frCont && frCont.querySelectorAll('.e-templatecell').length) {\n _this.refreshReactTemplateTD(_this.getFrozenRightDataRows(), isChildGrid, true);\n }\n if (renderTemplates) {\n _this.renderTemplates();\n }\n });\n }\n };\n /**\n * @param {Element[] | NodeListOf} rows - Defines the rows\n * @param {boolean} isChildGrid - Defines whether it is a Hierarchy Grid.\n * @param {boolean} isFrozen - Defines whether it is a Frozen Grid\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactTemplateTD = function (rows, isChildGrid, isFrozen) {\n var cells = 'cells';\n var rowIdx = 'index';\n var indent = this.getIndentCount();\n var childIndent = 0;\n var isChildRow = false;\n for (var j = 0; j < rows.length; j++) {\n var rowsObj = this.getRowObjectFromUID(rows[parseInt(j.toString(), 10)].getAttribute('data-uid'));\n if (isChildGrid && !rowsObj && parentsUntil(rows[parseInt(j.toString(), 10)], 'e-childgrid')) {\n var gridObj = parentsUntil(rows[parseInt(j.toString(), 10)], 'e-childgrid').ej2_instances[0];\n rowsObj = gridObj.getRowObjectFromUID(rows[parseInt(j.toString(), 10)].getAttribute('data-uid'));\n childIndent = gridObj.getIndentCount();\n isChildRow = true;\n }\n if (rowsObj && rowsObj.isDataRow && !isNullOrUndefined(rowsObj.index) &&\n !rows[parseInt(j.toString(), 10)].classList.contains('e-editedrow')) {\n for (var i = 0; i < rowsObj[\"\" + cells].length; i++) {\n var cell = rowsObj[\"\" + cells][parseInt(i.toString(), 10)];\n if (cell.isTemplate) {\n var cellRenderer = new CellRenderer(this, this.serviceLocator);\n var td = isChildGrid ? rows[parseInt(j.toString(), 10)]\n .children[cell.index + (isChildRow ? childIndent : indent)] : this.getCellFromIndex(j, isFrozen ? cell.index : i - indent);\n cellRenderer.refreshTD(td, cell, rowsObj.data, { index: rowsObj[\"\" + rowIdx] });\n }\n }\n }\n isChildRow = false;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshGroupCaptionFooterTemplate = function () {\n var isChildGrid = this.childGrid && this.element.querySelectorAll('.e-childgrid').length ? true : false;\n var rows = this.getContentTable().querySelectorAll('.e-groupcaptionrow, .e-groupfooterrow');\n for (var i = 0; i < rows.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var gridObj = this;\n var rowsObj = this.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n if (isChildGrid && !rowsObj && parentsUntil(rows[parseInt(i.toString(), 10)], 'e-childgrid')) {\n gridObj = parentsUntil(rows[parseInt(i.toString(), 10)], 'e-childgrid').ej2_instances[0];\n rowsObj = gridObj.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n }\n if (rowsObj) {\n var cells = rowsObj.cells.filter(function (cell) { return cell.isDataCell; });\n var args = { cells: cells, data: rowsObj.data, dataUid: rowsObj.uid };\n gridObj.notify(events.refreshAggregateCell, args);\n }\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactHeaderTemplateByUid = function (columnUid) {\n if (this.isReact) {\n var cells = 'cells';\n var rowsObj = this.headerModule.rows;\n var cellIndex = this.getNormalizedColumnIndex(columnUid);\n for (var j = 0; j < rowsObj.length; j++) {\n var cell = rowsObj[parseInt(j.toString(), 10)][\"\" + cells][parseInt(cellIndex.toString(), 10)];\n if (cell && cell.column.uid === columnUid) {\n var headerCellRenderer = new HeaderCellRenderer(this, this.serviceLocator);\n var td = parentsUntil(this.element.querySelectorAll('[e-mappinguid=' + columnUid + ']')[0], 'e-templatecell');\n headerCellRenderer.refresh(cell, td);\n }\n }\n }\n };\n /**\n * Updates and refresh the particular row values based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {Object} rowData - To update new data for the particular row.\n *\n * @returns {void}\n */\n Grid.prototype.setRowData = function (key, rowData) {\n var rowuID = 'uid';\n var rowObjects = this.contentModule.getRows();\n var pkName = this.getPrimaryKeyFieldNames()[0];\n if (this.groupSettings.columns.length > 0 && this.aggregates.length > 0) {\n rowObjects = rowObjects.filter(function (row) { return row.isDataRow; });\n }\n var selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n var selectRowEle = selectedRow ? [].slice.call(this.element.querySelectorAll('[data-uid=' + selectedRow[\"\" + rowuID] + ']')) : undefined;\n if (!isNullOrUndefined(selectedRow) && selectRowEle.length) {\n selectedRow.changes = rowData;\n if (this.isFrozenGrid()) {\n var currentTbl = parentsUntil(selectRowEle[0], 'e-table');\n var currentTblName = currentTbl.parentElement.matches('.e-frozen-left-header,.e-frozen-left-content') ? 'left'\n : currentTbl.parentElement.matches('.e-frozen-right-header,.e-frozen-right-content') ? 'right' : 'movable';\n var mTr = this.getMovableRowsObject()[selectedRow.index];\n this.setFrozenRowData(mTr, rowData);\n if (currentTblName === 'left') {\n var lTr = this.getRowsObject()[selectedRow.index];\n this.setFrozenRowData(lTr, rowData);\n }\n if (currentTblName === 'right' || this.frozenRightColumns.length > 0) {\n var rTr = this.getFrozenRightRowsObject()[selectedRow.index];\n this.setFrozenRowData(rTr, rowData);\n }\n }\n else if (this.frozenRows) {\n var fRowTr = this.getRowsObject()[selectedRow.index];\n this.setFrozenRowData(fRowTr, rowData);\n }\n else {\n this.setFrozenRowData(selectedRow, rowData);\n }\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n }\n else {\n return;\n }\n };\n Grid.prototype.setFrozenRowData = function (fTr, rowData) {\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this);\n fTr.changes = rowData;\n refreshForeignData(fTr, this.getForeignKeyColumns(), fTr.changes);\n rowRenderer.refresh(fTr, this.getColumns(), true);\n };\n /**\n * Gets a cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getCellFromIndex = function (rowIndex, columnIndex) {\n var col = this.getColumnByIndex(columnIndex);\n return getCellByColAndRowIndex(this, col, rowIndex, columnIndex);\n };\n /**\n * Gets a movable table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n if (this.frozenName === 'Left-Right' && columnIndex >= this.movableCount) {\n return undefined;\n }\n var index = this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n return this.getMovableDataRows()[parseInt(rowIndex.toString(), 10)] &&\n this.getMovableDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(literals.rowCell)[columnIndex - index];\n };\n /**\n * Gets a frozen right table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n var index = this.getFrozenLeftColumnsCount() + this.getMovableColumnsCount();\n var rows = this.getFrozenRightDataRows();\n return rows[parseInt(rowIndex.toString(), 10)] && rows[parseInt(rowIndex.toString(), 10)]\n .getElementsByClassName(literals.rowCell)[columnIndex - index];\n };\n /**\n * Gets a column header by column index.\n *\n * @param {number} index - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getColumnHeaderByIndex = function (index) {\n return this.getHeaderTable().getElementsByClassName('e-headercell')[parseInt(index.toString(), 10)];\n };\n /**\n * Gets a movable column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getMovableColumnHeaderByIndex = function (index) {\n var left = this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n return this.getMovableVirtualHeader().getElementsByClassName('e-headercell')[index - left];\n };\n /**\n * Gets a frozen right column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n var left = this.getFrozenLeftColumnsCount() + this.getMovableColumnsCount();\n return this.getFrozenRightHeader().getElementsByClassName('e-headercell')[index - left];\n };\n /**\n * Gets a frozen left column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.getFrozenVirtualHeader().getElementsByClassName('e-headercell')[parseInt(index.toString(), 10)];\n };\n /**\n * @param {string} uid - Defines the uid\n * @param {boolean} isMovable - Defines isMovable\n * @param {boolean} isFrozenRight - Defines isFrozenRight\n * @returns {Row} Returns the row object\n * @hidden\n */\n Grid.prototype.getRowObjectFromUID = function (uid, isMovable, isFrozenRight) {\n var rows = this.contentModule.getRows();\n var row = this.rowObject(rows, uid);\n if (this.isFrozenGrid()) {\n if (!row || isMovable || isFrozenRight) {\n row = this.rowObject(this.contentModule.getMovableRows(), uid);\n if ((!row && this.getFrozenMode() === 'Left-Right') || isFrozenRight) {\n row = this.rowObject(this.contentModule.getFrozenRightRows(), uid);\n }\n return row;\n }\n }\n if (isNullOrUndefined(row) && this.enableVirtualization && this.groupSettings.columns.length > 0) {\n row = this.rowObject(this.vRows, uid);\n return row;\n }\n return row;\n };\n Grid.prototype.rowObject = function (rows, uid) {\n if (rows) {\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.uid === uid) {\n return row;\n }\n }\n }\n return null;\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n */\n Grid.prototype.getRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n */\n Grid.prototype.getMovableRowsObject = function () {\n var rows = [];\n if (this.isFrozenGrid()) {\n rows = this.contentModule.getMovableRows();\n }\n return rows;\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n */\n Grid.prototype.getFrozenRightRowsObject = function () {\n var rows = [];\n if (this.getFrozenMode() === 'Right' || this.getFrozenMode() === 'Left-Right') {\n rows = this.contentModule.getFrozenRightRows();\n }\n return rows;\n };\n /**\n * Gets a column header by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getColumnHeaderByField = function (field) {\n var column = this.getColumnByField(field);\n return column ? this.getColumnHeaderByUid(column.uid) : undefined;\n };\n /**\n * Gets a column header by UID.\n *\n * @param {string} uid - Specifies the column uid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getColumnHeaderByUid = function (uid) {\n var element = this.getHeaderContent().querySelector('[e-mappinguid=' + uid + ']');\n return element ? element.parentElement : undefined;\n };\n /**\n * @hidden\n * @param {number} index - Defines the index\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByIndex = function (index) {\n var column;\n this.getColumns().some(function (col, i) {\n column = col;\n return i === index;\n });\n return column;\n };\n /**\n * Gets a Column by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item) {\n if (item.field === field) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets a column index by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {number} Returns the index by field\n */\n Grid.prototype.getColumnIndexByField = function (field) {\n var cols = this.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].field === field) {\n return i;\n }\n }\n return -1;\n };\n /**\n * Gets a column by UID.\n *\n * @param {string} uid - Specifies the column UID.\n *\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByUid = function (uid) {\n return iterateArrayOrObject(this.getColumns().concat(this.getStackedColumns(this.columns)), function (item) {\n if (item.uid === uid) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * @param {Column[]} columns - Defines the columns\n * @param {Column[]} stackedColumn - Defines the stacked columns\n * @returns {Column[]} Returns the columns\n * @hidden\n */\n Grid.prototype.getStackedColumns = function (columns, stackedColumn) {\n if (stackedColumn === void 0) { stackedColumn = []; }\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (column.columns) {\n stackedColumn.push(column);\n this.getStackedColumns(column.columns, stackedColumn);\n }\n }\n return stackedColumn;\n };\n /**\n * Gets a column index by UID.\n *\n * @param {string} uid - Specifies the column UID.\n *\n * @returns {number} Returns the column by index\n */\n Grid.prototype.getColumnIndexByUid = function (uid) {\n var index = iterateArrayOrObject(this.getColumns(), function (item, index) {\n if (item.uid === uid) {\n return index;\n }\n return undefined;\n })[0];\n return !isNullOrUndefined(index) ? index : -1;\n };\n /**\n * Gets UID by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {string} Returns the column by field\n */\n Grid.prototype.getUidByColumnField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item) {\n if (item.field === field) {\n return item.uid;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets column index by column uid value.\n *\n * @private\n * @param {string} uid - Specifies the column uid.\n * @returns {number} Returns the column by field\n */\n Grid.prototype.getNormalizedColumnIndex = function (uid) {\n var index = this.getColumnIndexByUid(uid);\n return index + this.getIndentCount();\n };\n /**\n * Gets indent cell count.\n *\n * @private\n * @returns {number} Returns the indent count\n */\n Grid.prototype.getIndentCount = function () {\n var index = 0;\n if (this.allowGrouping) {\n index += this.groupSettings.columns.length;\n }\n if (this.isDetail()) {\n index++;\n }\n if (this.isRowDragable() && isNullOrUndefined(this.rowDropSettings.targetID)) {\n index++;\n }\n /**\n * TODO: index normalization based on the stacked header, grouping and detailTemplate\n * and frozen should be handled here\n */\n return index;\n };\n /**\n * Gets the collection of column fields.\n *\n * @returns {string[]} Returns the Field names\n */\n Grid.prototype.getColumnFieldNames = function () {\n var columnNames = [];\n var column;\n for (var i = 0, len = this.getColumns().length; i < len; i++) {\n column = this.getColumns()[parseInt(i.toString(), 10)];\n if (column.visible) {\n columnNames.push(column.field);\n }\n }\n return columnNames;\n };\n /**\n * Gets a compiled row template.\n *\n * @returns {Function} Returns the row TEmplate\n * @private\n */\n Grid.prototype.getRowTemplate = function () {\n return this.rowTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n *\n * @private\n * @returns {Function} Returns the Detail template\n */\n Grid.prototype.getDetailTemplate = function () {\n return this.detailTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n *\n * @private\n * @returns {Function}Returns the Edit template\n */\n Grid.prototype.getEditTemplate = function () {\n return this.editTemplateFn;\n };\n /**\n * Gets a compiled dialog edit header template.\n *\n * @private\n * @returns {Function} returns template function\n */\n Grid.prototype.getEditHeaderTemplate = function () {\n return this.editHeaderTemplateFn;\n };\n /**\n * Gets a compiled dialog edit footer template.\n *\n * @private\n * @returns {Function} Returns the Footer template\n */\n Grid.prototype.getEditFooterTemplate = function () {\n return this.editFooterTemplateFn;\n };\n /**\n * Get the names of the primary key columns of the Grid.\n *\n * @returns {string[]} Returns the field names\n */\n Grid.prototype.getPrimaryKeyFieldNames = function () {\n var keys = [];\n for (var k = 0; k < this.columnModel.length; k++) {\n if (this.columnModel[parseInt(k.toString(), 10)].isPrimaryKey) {\n keys.push(this.columnModel[parseInt(k.toString(), 10)].field);\n }\n }\n return keys;\n };\n /**\n * Refreshes the Grid header and content.\n *\n * @returns {void}\n */\n Grid.prototype.refresh = function () {\n if (!this.isDestroyed) {\n this.isManualRefresh = true;\n this.headerModule.refreshUI();\n this.updateStackedFilter();\n this.renderModule.refresh();\n }\n };\n /**\n * Refreshes the Grid header.\n *\n * @returns {void}\n */\n Grid.prototype.refreshHeader = function () {\n this.headerModule.refreshUI();\n };\n /**\n * Gets the collection of selected rows.\n *\n * @returns {Element[]} Returns the element\n */\n Grid.prototype.getSelectedRows = function () {\n return this.selectionModule ? this.selectionModule.selectedRecords : [];\n };\n /**\n * Gets the collection of selected row indexes.\n *\n * @returns {number[]} Returns the Selected row indexes\n */\n Grid.prototype.getSelectedRowIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowIndexes : [];\n };\n /**\n * Gets the collection of selected row and cell indexes.\n *\n * @returns {number[]} Returns the Selected row cell indexes\n */\n Grid.prototype.getSelectedRowCellIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowCellIndexes : [];\n };\n /**\n * Gets the collection of selected records.\n *\n * @returns {Object[]} Returns the selected records\n * @isGenericType true\n */\n Grid.prototype.getSelectedRecords = function () {\n return this.selectionModule ? this.selectionModule.getSelectedRecords() : [];\n };\n /**\n * Gets the collection of selected columns uid.\n *\n * @returns {string[]} Returns the selected column uid\n * @isGenericType true\n */\n Grid.prototype.getSelectedColumnsUid = function () {\n var _this = this;\n var uid = [];\n if (this.selectionModule) {\n this.selectionModule.selectedColumnsIndexes.filter(function (i) { return uid.push(_this.getColumns()[parseInt(i.toString(), 10)].uid); });\n }\n return uid;\n };\n /**\n * Gets the data module.\n *\n * @returns {Data} Returns the data\n */\n Grid.prototype.getDataModule = function () {\n return this.renderModule.data;\n };\n /**\n * Shows a column by its column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} showBy - Defines the column key either as field name or header text.\n *\n * @returns {void}\n */\n Grid.prototype.showColumns = function (keys, showBy) {\n showBy = showBy ? showBy : 'headerText';\n this.showHider.show(keys, showBy);\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n *\n * @returns {void}\n */\n Grid.prototype.hideColumns = function (keys, hideBy) {\n hideBy = hideBy ? hideBy : 'headerText';\n this.showHider.hide(keys, hideBy);\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen column\n */\n Grid.prototype.getFrozenColumns = function () {\n return this.frozenColumns + this.getFrozenCount(this.columns, 0, 0);\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Right column count\n */\n Grid.prototype.getFrozenRightColumnsCount = function () {\n return this.frozenRightCount;\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Left column\n */\n Grid.prototype.getFrozenLeftColumnsCount = function () {\n return this.frozenLeftCount;\n };\n /**\n * @hidden\n * @returns {number} Returns the movable column count\n */\n Grid.prototype.getMovableColumnsCount = function () {\n return this.movableCount;\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setFrozenCount = function () {\n this.frozenLeftCount = this.frozenRightCount = this.movableCount = 0;\n this.visibleFrozenLeft = this.visibleFrozenRight = this.visibleMovable = 0;\n this.frozenLeftColumns = [];\n this.frozenRightColumns = [];\n this.movableColumns = [];\n this.splitFrozenCount(this.columns);\n if (this.frozenColumns && (this.frozenLeftCount || this.frozenRightCount)) {\n this.setProperties({ frozenColumns: 0 }, true);\n }\n this.setTablesCount();\n if (this.frozenLeftCount && !this.frozenRightCount) {\n this.frozenName = 'Left';\n }\n else if (this.frozenRightCount && !this.frozenLeftCount) {\n this.frozenName = 'Right';\n }\n else if (this.frozenLeftCount && this.frozenRightCount) {\n this.frozenName = 'Left-Right';\n }\n else if (this.frozenColumns || this.frozenRows) {\n this.frozenName = 'Left';\n }\n else {\n this.frozenName = undefined;\n }\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen left count\n */\n Grid.prototype.getVisibleFrozenLeftCount = function () {\n return this.visibleFrozenLeft;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen Right count\n */\n Grid.prototype.getVisibleFrozenRightCount = function () {\n return this.visibleFrozenRight;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible movable count\n */\n Grid.prototype.getVisibleMovableCount = function () {\n return this.visibleMovable;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getFrozenRightColumns = function () {\n return this.frozenRightColumns;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getFrozenLeftColumns = function () {\n return this.frozenLeftColumns;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getMovableColumns = function () {\n return this.movableColumns;\n };\n Grid.prototype.splitFrozenCount = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.splitFrozenCount(columns[parseInt(i.toString(), 10)].columns);\n }\n else {\n if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenRight++;\n }\n this.frozenRightColumns.push(columns[parseInt(i.toString(), 10)]);\n this.frozenRightCount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Left') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenLeft++;\n }\n this.frozenLeftColumns.push(columns[parseInt(i.toString(), 10)]);\n this.frozenLeftCount++;\n }\n else {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleMovable++;\n }\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n this.movableCount++;\n }\n }\n }\n };\n /**\n * @hidden\n * @returns {number} Returns the visible frozen columns count\n */\n Grid.prototype.getVisibleFrozenColumns = function () {\n return this.getVisibleFrozenColumnsCount() + this.getVisibleFrozenCount(this.columns, 0);\n };\n /**\n * Get the current Filter operator and field.\n *\n * @returns {FilterUI} Returns the filter UI\n */\n Grid.prototype.getFilterUIInfo = function () {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n };\n Grid.prototype.getVisibleFrozenColumnsCount = function () {\n var visibleFrozenColumns = 0;\n var columns = this.columnModel;\n for (var i = 0; i < this.frozenColumns; i++) {\n if (columns[parseInt(i.toString(), 10)].visible) {\n visibleFrozenColumns++;\n }\n }\n if (this.frozenLeftCount || this.frozenRightCount) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].visible && (columns[parseInt(i.toString(), 10)].freeze === 'Left'\n || columns[parseInt(i.toString(), 10)].freeze === 'Right')) {\n visibleFrozenColumns++;\n }\n }\n }\n return visibleFrozenColumns;\n };\n Grid.prototype.getVisibleFrozenCount = function (cols, cnt) {\n if (!this.frozenLeftCount && !this.frozenRightCount) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n cnt = this.getVisibleFrozenCount(cols[parseInt(i.toString(), 10)].columns, cnt);\n }\n else {\n if (cols[parseInt(i.toString(), 10)].isFrozen && cols[parseInt(i.toString(), 10)].visible) {\n cnt++;\n }\n }\n }\n }\n return cnt;\n };\n Grid.prototype.getFrozenCount = function (cols, cnt, index) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n cnt = this.getFrozenCount(cols[parseInt(i.toString(), 10)].columns, cnt, index);\n }\n else {\n if (cols[parseInt(i.toString(), 10)].isFrozen && index > this.frozenColumns - 1) {\n cnt++;\n }\n index++;\n }\n }\n return cnt;\n };\n /**\n * Navigates to the specified target page.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n *\n * @returns {void}\n */\n Grid.prototype.goToPage = function (pageNo) {\n if (this.pagerModule) {\n this.pagerModule.goToPage(pageNo);\n }\n };\n /**\n * Defines the text of external message.\n *\n * @param {string} message - Defines the message to update.\n *\n * @returns {void}\n */\n Grid.prototype.updateExternalMessage = function (message) {\n if (this.pagerModule) {\n this.pagerModule.updateExternalMessage(message);\n }\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n *\n * @returns {void}\n */\n Grid.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n if (this.sortModule) {\n this.sortModule.sortColumn(columnName, direction, isMultiSort);\n }\n };\n /**\n * Remove the existing columns along with the grid actions like sorting, filtering, searching, grouping, aggregate, etc., and grid will refresh with new columns based on the updated new data source.\n * > * If no columns are specified while changing the data source, then the columns are auto generated in the Grid based on the list of columns in the updated data source.\n *\n * @param {Object | DataManager | DataResult} dataSource - Assign the new datasource.\n * @param {Column[] | string[] | ColumnModel[]} columns - Defines columns.\n * @returns {void}\n *\n *\n * ```typescript\n * \n *
    \n * \n * ```\n *\n */\n Grid.prototype.changeDataSource = function (dataSource, columns) {\n this.setProperties({ sortSettings: { columns: [] } }, true);\n this.setProperties({ filterSettings: { columns: [] } }, true);\n this.setProperties({ searchSettings: { key: '' } }, true);\n if (this.allowGrouping) {\n this.setProperties({ groupSettings: { columns: [] } }, true);\n }\n if (columns && columns.length) {\n this.setProperties({ columns: columns }, true);\n }\n if (dataSource) {\n if (isNullOrUndefined(columns)) {\n this.setProperties({ columns: [] }, true);\n }\n this.setProperties({ dataSource: dataSource }, true);\n }\n this.freezeRefresh();\n };\n /**\n * Clears all the sorted columns of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.clearSorting = function () {\n if (this.sortModule) {\n this.sortModule.clearSorting();\n }\n };\n /**\n * Remove sorted column by field name.\n *\n * @param {string} field - Defines the column field name to remove sort.\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeSortColumn = function (field) {\n if (this.sortModule) {\n this.sortModule.removeSortColumn(field);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.clearGridActions = function () {\n this.setProperties({ sortSettings: { columns: [] } }, true);\n this.setProperties({ filterSettings: { columns: [] } }, true);\n this.setProperties({ searchSettings: { key: '' } }, true);\n if (this.allowGrouping) {\n this.setProperties({ groupSettings: { columns: [] } }, false);\n }\n else {\n this.freezeRefresh();\n }\n };\n /**\n * Filters grid row by column name with the given options.\n *\n * @param {string} fieldName - Defines the field name of the column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query and another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, the grid filters the records with exact match. if false, it filters case\n * insensitive records (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true,\n * then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n *\n * @returns {void}\n */\n Grid.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n if (this.filterModule) {\n this.filterModule.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n }\n };\n /**\n * Clears all the filtered rows of the Grid.\n *\n * @param {string[]} fields - Defines the Fields\n * @returns {void}\n */\n Grid.prototype.clearFiltering = function (fields) {\n if (this.filterModule) {\n this.filterModule.clearFiltering(fields);\n }\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n if (this.filterModule) {\n this.filterModule.removeFilteredColsByField(field, isClearFilterBar);\n }\n };\n /**\n * Selects a row by given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n *\n * @returns {void}\n */\n Grid.prototype.selectRow = function (index, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectRow(index, isToggle);\n }\n };\n /**\n * Selects a collection of rows by indexes.\n *\n * @param {number[]} rowIndexes - Specifies the row indexes.\n *\n * @returns {void}\n */\n Grid.prototype.selectRows = function (rowIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectRows(rowIndexes);\n }\n };\n /**\n * Deselects the current selected rows and cells.\n *\n * @returns {void}\n */\n Grid.prototype.clearSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearSelection();\n }\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n *\n * @returns {void}\n */\n Grid.prototype.selectCell = function (cellIndex, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectCell(cellIndex, isToggle);\n }\n };\n /**\n * Selects a range of cells from start and end indexes.\n *\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n *\n * @returns {void}\n */\n Grid.prototype.selectCellsByRange = function (startIndex, endIndex) {\n this.selectionModule.selectCellsByRange(startIndex, endIndex);\n };\n /**\n * Searches Grid records using the given key.\n * You can customize the default search option by using the\n * [`searchSettings`](./#searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n *\n * @returns {void}\n */\n Grid.prototype.search = function (searchString) {\n if (this.searchModule) {\n this.searchModule.search(searchString);\n }\n };\n /**\n * By default, prints all the pages of the Grid and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./#printmode).\n *\n * @returns {void}\n */\n Grid.prototype.print = function () {\n if (this.printModule) {\n this.printModule.print();\n }\n };\n /**\n * Delete a record with Given options. If fieldname and data is not given then grid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldname - Defines the primary key field, 'Name of the column'.\n * @param {Object} data - Defines the JSON data of the record to be deleted.\n * @returns {void}\n */\n Grid.prototype.deleteRecord = function (fieldname, data) {\n if (this.editModule) {\n this.editModule.deleteRecord(fieldname, data);\n }\n };\n /**\n * Starts edit the selected row. At least one row must be selected before invoking this method.\n * `editSettings.allowEditing` should be true.\n * {% codeBlock src='grid/startEdit/index.md' %}{% endcodeBlock %}\n *\n * @returns {void}\n */\n Grid.prototype.startEdit = function () {\n if (this.editModule) {\n this.editModule.startEdit();\n }\n };\n /**\n * If Grid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n Grid.prototype.endEdit = function () {\n if (this.editModule) {\n this.editModule.endEdit();\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n Grid.prototype.closeEdit = function () {\n if (this.editModule) {\n this.editModule.closeEdit();\n }\n };\n /**\n * Adds a new record to the Grid. Without passing parameters, it adds empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added\n * @returns {void}\n */\n Grid.prototype.addRecord = function (data, index) {\n if (this.editModule) {\n this.editModule.addRecord(data, index);\n }\n };\n /**\n * Delete any visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n Grid.prototype.deleteRow = function (tr) {\n if (this.editModule) {\n this.editModule.deleteRow(tr);\n }\n };\n /**\n * Changes a particular cell into edited state based on the row index and field name provided in the `batch` mode.\n *\n * @param {number} index - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform batch edit.\n *\n * @returns {void}\n */\n Grid.prototype.editCell = function (index, field) {\n if (this.editModule) {\n this.editModule.editCell(index, field);\n }\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n * {% codeBlock src='grid/saveCell/index.md' %}{% endcodeBlock %}\n */\n Grid.prototype.saveCell = function () {\n if (this.editModule) {\n this.editModule.saveCell();\n }\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n *\n * @returns {void}\n */\n Grid.prototype.updateCell = function (rowIndex, field, value) {\n if (this.editModule) {\n this.editModule.updateCell(rowIndex, field, value);\n }\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * {% codeBlock src='grid/updateRow/index.md' %}{% endcodeBlock %}\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n *\n * @returns {void}\n */\n Grid.prototype.updateRow = function (index, data) {\n if (this.editModule) {\n this.editModule.updateRow(index, data);\n }\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} Returns the batch changes\n */\n Grid.prototype.getBatchChanges = function () {\n if (this.editModule) {\n return this.editModule.getBatchChanges();\n }\n return {};\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n *\n * @returns {void}\n */\n Grid.prototype.enableToolbarItems = function (items, isEnable) {\n if (this.toolbarModule) {\n this.toolbarModule.enableItems(items, isEnable);\n }\n };\n /**\n * Copy the selected rows or cells data into clipboard.\n *\n * @param {boolean} withHeader - Specifies whether the column header text needs to be copied along with rows or cells.\n * @returns {void}\n */\n Grid.prototype.copy = function (withHeader) {\n if (this.clipboardModule) {\n this.clipboardModule.copy(withHeader);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.recalcIndentWidth = function () {\n var _this = this;\n if (!this.getHeaderTable().querySelector('.e-emptycell')) {\n return;\n }\n if ((!this.groupSettings.columns.length && !this.isDetail() && !this.isRowDragable()) ||\n this.getHeaderTable().querySelector('.e-emptycell').getAttribute('indentRefreshed') ||\n !this.getContentTable()) {\n return;\n }\n var indentWidth = this.getHeaderTable().querySelector('.e-emptycell').parentElement.offsetWidth;\n var headerCol = [].slice.call(this.getHeaderTable().querySelector(literals.colGroup).childNodes);\n var contentCol = [].slice.call(this.getContentTable().querySelector(literals.colGroup).childNodes);\n var perPixel = indentWidth / 30;\n var i = this.getFrozenMode() === 'Right' ? this.frozenRightCount : 0;\n var parentOffset = this.element.offsetWidth;\n var applyWidth = function (index, width) {\n if (ispercentageWidth(_this)) {\n var newWidth = (width / parentOffset * 100).toFixed(1) + '%';\n headerCol[parseInt(index.toString(), 10)].style.width = newWidth;\n contentCol[parseInt(index.toString(), 10)].style.width = newWidth;\n }\n else {\n headerCol[parseInt(index.toString(), 10)].style.width = width + 'px';\n contentCol[parseInt(index.toString(), 10)].style.width = width + 'px';\n }\n _this.notify(events.columnWidthChanged, { index: index, width: width });\n };\n if (perPixel >= 1) {\n indentWidth = (30 / perPixel);\n }\n if (indentWidth < 1) {\n indentWidth = 1;\n }\n if (this.enableColumnVirtualization || this.isAutoGen || (this.columns.length === this.groupSettings.columns.length)) {\n indentWidth = 30;\n }\n while (i < this.groupSettings.columns.length) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isDetail()) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isRowDragable()) {\n applyWidth(i, indentWidth);\n }\n this.isAutoGen = false;\n this.getHeaderTable().querySelector('.e-emptycell').setAttribute('indentRefreshed', 'true');\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.resetIndentWidth = function () {\n if (ispercentageWidth(this)) {\n this.getHeaderTable().querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.widthService.setWidthToColumns();\n this.recalcIndentWidth();\n if (this.autoFit) {\n this.preventAdjustColumns();\n }\n }\n if ((this.width === 'auto' || typeof (this.width) === 'string' && this.width.indexOf('%') !== -1)\n && this.getColumns().filter(function (col) { return (!col.width || col.width === 'auto') && col.minWidth; }).length > 0) {\n var tgridWidth = this.widthService.getTableWidth(this.getColumns());\n this.widthService.setMinwidthBycalculation(tgridWidth);\n }\n if (this.isFrozenGrid() && this.widthService) {\n this.widthService.refreshFrozenScrollbar();\n }\n if (this.allowTextWrap && this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns isRowDragable\n */\n Grid.prototype.isRowDragable = function () {\n return this.allowRowDragAndDrop && !this.rowDropSettings.targetID;\n };\n /**\n * Changes the Grid column positions by field names.\n *\n * @param {string} fromFName - Defines the origin field name.\n * @param {string} toFName - Defines the destination field name.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumns = function (fromFName, toFName) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumns(fromFName, toFName);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByIndex multiple times,\n * then you won't get the same results every time.\n *\n * @param {number} fromIndex - Defines the origin field index.\n * @param {number} toIndex - Defines the destination field index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumnByIndex = function (fromIndex, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByIndex(fromIndex, toIndex);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByTargetIndex multiple times,\n * then you will get the same results every time.\n *\n * @param {string} fieldName - Defines the field name.\n * @param {number} toIndex - Defines the destination field index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumnByTargetIndex = function (fieldName, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByTargetIndex(fieldName, toIndex);\n }\n };\n /**\n * Changes the Grid Row position with given indexes.\n *\n * @param {number} fromIndexes - Defines the origin Indexes.\n * @param {number} toIndex - Defines the destination Index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderRows = function (fromIndexes, toIndex) {\n if (this.rowDragAndDropModule) {\n this.rowDragAndDropModule.reorderRows(fromIndexes, toIndex);\n }\n };\n /**\n * @param {ReturnType} e - Defines the Return type\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshDataSource = function (e) {\n this.notify('refreshdataSource', e);\n };\n /**\n * @param {boolean} enable -Defines the enable\n * @returns {void}\n * @hidden\n */\n Grid.prototype.disableRowDD = function (enable) {\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n var headerRows = headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell');\n var rows = this.getRows();\n var disValue = enable ? 'none' : '';\n setStyleAttribute(headerTable.querySelector(literals.colGroup).childNodes[0], { 'display': disValue });\n setStyleAttribute(contentTable.querySelector(literals.colGroup).childNodes[0], { 'display': disValue });\n for (var i = 0; i < this.getRows().length; i++) {\n var ele = rows[parseInt(i.toString(), 10)].firstElementChild;\n if (enable) {\n addClass([ele], 'e-hide');\n }\n else {\n removeClass([ele], ['e-hide']);\n }\n }\n for (var j = 0; j < headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell').length; j++) {\n var ele = headerRows[parseInt(j.toString(), 10)];\n if (enable) {\n addClass([ele], 'e-hide');\n }\n else {\n removeClass([ele], ['e-hide']);\n }\n }\n };\n /**\n * Changes the column width to automatically fit its content to ensure that the width shows the content without wrapping/hiding.\n * > * This method ignores the hidden columns.\n * > * Uses the `autoFitColumns` method in the `dataBound` event to resize at initial rendering.\n *\n * @param {string |string[]} fieldNames - Defines the column names.\n * @returns {void}\n *\n *\n * ```typescript\n *
    \n * \n * ```\n *\n */\n Grid.prototype.autoFitColumns = function (fieldNames) {\n if (this.resizeModule) {\n this.resizeModule.autoFitColumns(fieldNames);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.preventAdjustColumns = function () {\n if (this.isFrozenGrid() || (this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical')\n || (this.allowResizing && this.resizeSettings.mode === 'Auto')) {\n return;\n }\n var columns = this.getColumns();\n var headerTable = this.getHeaderTable();\n var tableWidth = 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].visible) {\n if (this.groupSettings.columns.length\n && this.groupSettings.columns.indexOf(columns[parseInt(i.toString(), 10)].field) > -1) {\n var headerCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll(':not(.e-group-intent):not(.e-detail-intent):not(.e-drag-intent)'));\n if (headerCol[parseInt(i.toString(), 10)].style.display === 'none') {\n continue;\n }\n }\n if (columns[parseInt(i.toString(), 10)].width) {\n tableWidth += parseFloat(columns[parseInt(i.toString(), 10)].width.toString());\n }\n else {\n tableWidth = 0;\n break;\n }\n }\n }\n if (tableWidth) {\n var percentageWidth = this.isPercentageWidthGrid();\n var unit = this.widthUnit(percentageWidth);\n var contentTable = this.getContentTable();\n if (this.groupSettings.columns.length || this.isDetail() || this.isRowDragable()) {\n var indentWidth = this.defaultIndentWidth(percentageWidth);\n var indentWidthUnitFormat = indentWidth.toString() + unit;\n var headerIndentCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n var contentIndentCol = [].slice.call(contentTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n for (var i = 0; i < headerIndentCol.length; i++) {\n headerIndentCol[parseInt(i.toString(), 10)].style.setProperty('width', indentWidthUnitFormat);\n contentIndentCol[parseInt(i.toString(), 10)].style.setProperty('width', indentWidthUnitFormat);\n tableWidth += indentWidth;\n }\n }\n if ((percentageWidth && tableWidth < 100)\n || (!percentageWidth && tableWidth < contentTable.parentElement.clientWidth)) {\n addClass([headerTable, contentTable], ['e-tableborder']);\n }\n var tableWidthUnitFormat = tableWidth.toString() + unit;\n headerTable.style.setProperty('width', tableWidthUnitFormat);\n contentTable.style.setProperty('width', tableWidthUnitFormat);\n }\n else {\n this.restoreAdjustColumns();\n }\n };\n Grid.prototype.restoreAdjustColumns = function () {\n if (this.isFrozenGrid() || (this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical')\n || (this.allowResizing && this.resizeSettings.mode === 'Auto')) {\n return;\n }\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n removeClass([headerTable, contentTable], ['e-tableborder']);\n headerTable.style.removeProperty('width');\n contentTable.style.removeProperty('width');\n if (this.groupSettings.columns.length || this.isDetail() || this.isRowDragable()) {\n var percentageWidth = this.isPercentageWidthGrid();\n var indentWidthUnitFormat_1 = this.defaultIndentWidth(percentageWidth).toString() + this.widthUnit(percentageWidth);\n var headerIndentCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n headerIndentCol.forEach(function (element) {\n element.style.setProperty('width', indentWidthUnitFormat_1);\n });\n headerTable.querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.recalcIndentWidth();\n }\n };\n Grid.prototype.widthUnit = function (percentageWidth) {\n return percentageWidth ? '%' : 'px';\n };\n Grid.prototype.defaultIndentWidth = function (percentageWidth) {\n return percentageWidth ? parseFloat((30 / this.element.offsetWidth * 100).toFixed(1)) : 30;\n };\n Grid.prototype.isPercentageWidthGrid = function () {\n return this.getColumns()[0].width.toString().indexOf('%') > -1;\n };\n /**\n * @param {number} x - Defines the number\n * @param {number} y - Defines the number\n * @param {Element} target - Defines the Element\n * @returns {void}\n * @hidden\n */\n Grid.prototype.createColumnchooser = function (x, y, target) {\n if (this.columnChooserModule) {\n this.columnChooserModule.renderColumnChooser(x, y, target);\n }\n };\n Grid.prototype.initializeServices = function () {\n this.serviceLocator.register('widthService', this.widthService = new ColumnWidthService(this));\n this.serviceLocator.register('cellRendererFactory', new CellRendererFactory);\n this.serviceLocator.register('rendererFactory', new RendererFactory);\n this.serviceLocator.register('localization', this.localeObj = new L10n(this.getModuleName(), this.defaultLocale, this.locale));\n this.serviceLocator.register('valueFormatter', this.valueFormatterService = new ValueFormatter(this.locale));\n this.serviceLocator.register('showHideService', this.showHider = new ShowHide(this));\n this.serviceLocator.register('ariaService', this.ariaService = new AriaService());\n this.serviceLocator.register('focus', this.focusModule = new FocusStrategy(this));\n };\n Grid.prototype.processModel = function () {\n var gCols = this.groupSettings.columns;\n var sCols = this.sortSettings.columns;\n var flag;\n var j;\n if (this.allowGrouping) {\n var _loop_1 = function (i, len) {\n j = 0;\n for (var sLen = sCols.length; j < sLen; j++) {\n if (sCols[parseInt(j.toString(), 10)].field === gCols[parseInt(i.toString(), 10)]) {\n flag = true;\n break;\n }\n }\n if (!flag) {\n sCols.push({ field: gCols[parseInt(i.toString(), 10)], direction: 'Ascending', isFromGroup: true });\n }\n else {\n if (this_1.allowSorting) {\n this_1.sortedColumns.push(sCols[parseInt(j.toString(), 10)].field);\n }\n else {\n sCols[parseInt(j.toString(), 10)].direction = 'Ascending';\n }\n }\n if (!this_1.groupSettings.showGroupedColumn) {\n var column = this_1.enableColumnVirtualization ?\n this_1.columns.filter(function (c) { return c.field === gCols[parseInt(i.toString(), 10)]; })[0]\n : this_1.getColumnByField(gCols[parseInt(i.toString(), 10)]);\n if (column) {\n column.visible = false;\n }\n else {\n this_1.log('initial_action', { moduleName: 'group', columnName: gCols[parseInt(i.toString(), 10)] });\n }\n }\n };\n var this_1 = this;\n for (var i = 0, len = gCols.length; i < len; i++) {\n _loop_1(i, len);\n }\n }\n if (!gCols.length) {\n for (var i = 0; i < sCols.length; i++) {\n this.sortedColumns.push(sCols[parseInt(i.toString(), 10)].field);\n }\n }\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n this.editTemplateFn = templateCompiler(this.editSettings.template);\n this.editHeaderTemplateFn = templateCompiler(this.editSettings.headerTemplate);\n this.editFooterTemplateFn = templateCompiler(this.editSettings.footerTemplate);\n if (!isNullOrUndefined(this.parentDetails)) {\n var value = isNullOrUndefined(this.parentDetails.parentKeyFieldValue) ? 'undefined' :\n this.parentDetails.parentKeyFieldValue;\n this.query.where(this.queryString, 'equal', value, true);\n }\n this.initForeignColumn();\n };\n Grid.prototype.initForeignColumn = function () {\n if (this.isForeignKeyEnabled(this.getColumns())) {\n this.notify(events.initForeignKeyColumn, this.getForeignKeyColumns());\n }\n };\n Grid.prototype.enableVerticalRendering = function () {\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n else {\n this.element.classList.remove('e-row-responsive');\n }\n };\n Grid.prototype.gridRender = function () {\n var _a;\n this.updateRTL();\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n if (this.enableHover) {\n this.element.classList.add('e-gridhover');\n }\n if (Browser.isDevice) {\n this.element.classList.add('e-device');\n }\n if (this.rowHeight) {\n this.element.classList.add('e-grid-min-height');\n }\n if (this.cssClass) {\n if (this.cssClass.indexOf(' ') !== -1) {\n (_a = this.element.classList).add.apply(_a, this.cssClass.split(' '));\n }\n else {\n this.element.classList.add(this.cssClass);\n }\n }\n // If the below if statement is removed, then drag and drop between grids will not work in firefox browser.\n if (this.allowRowDragAndDrop && this.rowDropSettings.targetID && Browser.info.name === 'mozilla') {\n this.element.classList.add('e-disableuserselect');\n }\n classList(this.element, ['e-responsive', 'e-default'], []);\n var rendererFactory = this.serviceLocator.getService('rendererFactory');\n this.headerModule = rendererFactory.getRenderer(RenderType.Header);\n this.contentModule = rendererFactory.getRenderer(RenderType.Content);\n this.printModule = new Print(this, this.scrollModule);\n this.clipboardModule = new Clipboard(this, this.serviceLocator);\n this.renderModule.render();\n this.eventInitializer();\n this.createGridPopUpElement();\n this.widthService.setWidthToColumns();\n this.updateGridLines();\n this.applyTextWrap();\n this.createTooltip(); //for clip mode ellipsis\n this.enableBoxSelection();\n };\n Grid.prototype.dataReady = function () {\n this.scrollModule.setWidth();\n this.scrollModule.setHeight();\n if (this.height !== 'auto') {\n this.scrollModule.setPadding();\n }\n };\n Grid.prototype.updateRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n Grid.prototype.createGridPopUpElement = function () {\n var popup = this.createElement('div', { className: 'e-gridpopup', styles: 'display:none;' });\n var content = this.createElement('div', { className: literals.content, attrs: { tabIndex: '-1' } });\n append([content, this.createElement('div', { className: 'e-uptail e-tail' })], popup);\n content.appendChild(this.createElement('span'));\n append([content, this.createElement('div', { className: 'e-downtail e-tail' })], popup);\n this.element.appendChild(popup);\n };\n Grid.prototype.updateGridLines = function () {\n classList(this.element, [], ['e-verticallines', 'e-horizontallines', 'e-hidelines', 'e-bothlines']);\n switch (this.gridLines) {\n case 'Horizontal':\n this.element.classList.add('e-horizontallines');\n break;\n case 'Vertical':\n this.element.classList.add('e-verticallines');\n break;\n case 'None':\n this.element.classList.add('e-hidelines');\n break;\n case 'Both':\n this.element.classList.add('e-bothlines');\n break;\n }\n this.updateResizeLines();\n };\n Grid.prototype.updateResizeLines = function () {\n if (this.allowResizing &&\n !(this.gridLines === 'Vertical' || this.gridLines === 'Both')) {\n this.element.classList.add('e-resize-lines');\n }\n else {\n this.element.classList.remove('e-resize-lines');\n }\n };\n /**\n * The function is used to apply text wrap\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.applyTextWrap = function () {\n if (this.allowTextWrap) {\n var headerRows = [].slice.call(this.element.getElementsByClassName('e-columnheader'));\n switch (this.textWrapSettings.wrapMode) {\n case 'Header':\n wrap(this.element, false);\n wrap(this.getContent(), false);\n wrap(headerRows, true);\n break;\n case 'Content':\n wrap(this.getContent(), true);\n wrap(this.element, false);\n wrap(headerRows, false);\n break;\n default:\n wrap(this.element, true);\n wrap(this.getContent(), false);\n wrap(headerRows, false);\n }\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n }\n };\n /**\n * The function is used to remove text wrap\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeTextWrap = function () {\n wrap(this.element, false);\n var headerRows = [].slice.call(this.element.getElementsByClassName('e-columnheader'));\n wrap(headerRows, false);\n wrap(this.getContent(), false);\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n };\n /**\n * The function is used to add Tooltip to the grid cell that has ellipsiswithtooltip clip mode.\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.createTooltip = function () {\n this.toolTipObj = new Tooltip({\n opensOn: 'custom',\n content: '',\n cssClass: this.cssClass ? this.cssClass : null\n }, this.element);\n };\n /** @hidden\n * @returns {void}\n */\n Grid.prototype.freezeRefresh = function () {\n this.isFreezeRefresh = true;\n if (this.enableVirtualization || this.enableInfiniteScrolling) {\n this.pageSettings.currentPage = 1;\n }\n this.componentRefresh();\n };\n Grid.prototype.getTooltipStatus = function (element) {\n var headerTable = this.getHeaderTable();\n var headerDivTag = 'e-gridheader';\n var htable = this.createTable(headerTable, headerDivTag, 'header');\n var ctable = this.createTable(headerTable, headerDivTag, 'content');\n var table = element.classList.contains('e-headercell') ? htable : ctable;\n var ele = element.classList.contains('e-headercell') ? 'th' : 'tr';\n table.querySelector(ele).className = element.className;\n table.querySelector(ele).innerHTML = element.innerHTML;\n var width = table.querySelector(ele).getBoundingClientRect().width;\n document.body.removeChild(htable);\n document.body.removeChild(ctable);\n if (width > element.getBoundingClientRect().width) {\n return true;\n }\n return false;\n };\n Grid.prototype.mouseMoveHandler = function (e) {\n if (this.isEllipsisTooltip()) {\n var element = parentsUntil(e.target, 'e-ellipsistooltip');\n if (this.prevElement !== element || e.type === 'mouseout') {\n this.toolTipObj.close();\n }\n var tagName = e.target.tagName;\n var elemNames = ['A', 'BUTTON', 'INPUT'];\n if (element && e.type !== 'mouseout' && !(Browser.isDevice && elemNames.indexOf(tagName) !== -1)) {\n if (element.getAttribute('data-tooltip-id')) {\n return;\n }\n if (this.getTooltipStatus(element)) {\n var col = this.getColumns()[parseInt(element.getAttribute(literals.dataColIndex), 10)];\n var domSetter = col.disableHtmlEncode ? 'innerText' : 'innerHTML';\n var contentDiv = this.createElement('div');\n if (element.getElementsByClassName('e-headertext').length) {\n var innerElement = element.getElementsByClassName('e-headertext')[0];\n contentDiv[\"\" + domSetter] = this.sanitize(innerElement.innerText);\n this.toolTipObj.content = contentDiv;\n }\n else {\n contentDiv[\"\" + domSetter] = this.sanitize(element.innerText);\n this.toolTipObj.content = contentDiv;\n }\n this.prevElement = element;\n if (this.enableHtmlSanitizer) {\n this.toolTipObj.enableHtmlSanitizer = true;\n }\n if (col.disableHtmlEncode) {\n this.toolTipObj.enableHtmlParse = false;\n }\n this.toolTipObj['open'](element);\n }\n }\n }\n this.hoverFrozenRows(e);\n };\n /**\n * @param {MouseEvent} e - Defines the mouse event\n * @returns {void}\n * @hidden\n */\n Grid.prototype.hoverFrozenRows = function (e) {\n if (this.isFrozenGrid()) {\n var row = parentsUntil(e.target, literals.row);\n if ([].slice.call(this.element.getElementsByClassName('e-frozenhover')).length && e.type === 'mouseout') {\n var rows = [].slice.call(this.element.getElementsByClassName('e-frozenhover'));\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].classList.remove('e-frozenhover');\n }\n }\n else if (row) {\n var rows = [].slice.call(this.element.querySelectorAll('tr[data-rowindex=\"' + row.getAttribute(literals.dataRowIndex) + '\"]'));\n rows.splice(rows.indexOf(row), 1);\n for (var i = 0; i < rows.length; i++) {\n if (row.getAttribute('aria-selected') !== 'true' && rows[parseInt(i.toString(), 10)]) {\n rows[parseInt(i.toString(), 10)].classList.add('e-frozenhover');\n }\n else if (rows[parseInt(i.toString(), 10)]) {\n rows[parseInt(i.toString(), 10)].classList.remove('e-frozenhover');\n }\n }\n }\n }\n };\n Grid.prototype.isEllipsisTooltip = function () {\n var cols = this.getColumns();\n if (this.clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n }\n return false;\n };\n Grid.prototype.scrollHandler = function () {\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n };\n /**\n * To create table for ellipsiswithtooltip\n *\n * @param {Element} table - Defines the table\n * @param {string} tag - Defines the tag\n * @param {string} type - Defines the type\n * @returns {HTMLDivElement} Returns the HTML div ELement\n * @hidden\n */\n Grid.prototype.createTable = function (table, tag, type) {\n var myTableDiv = this.createElement('div');\n myTableDiv.className = this.element.className;\n myTableDiv.style.cssText = 'display: inline-block;visibility:hidden;position:absolute';\n var mySubDiv = this.createElement('div');\n mySubDiv.className = tag;\n var myTable = this.createElement('table', { attrs: { role: 'grid' } });\n myTable.className = table.className;\n myTable.style.cssText = 'table-layout: auto;width: auto';\n var ele = (type === 'header') ? 'th' : 'td';\n var myTr = this.createElement('tr');\n var mytd = this.createElement(ele);\n myTr.appendChild(mytd);\n myTable.appendChild(myTr);\n mySubDiv.appendChild(myTable);\n myTableDiv.appendChild(mySubDiv);\n document.body.appendChild(myTableDiv);\n return myTableDiv;\n };\n Grid.prototype.onKeyPressed = function (e) {\n if (e.action === 'tab' || e.action === 'shiftTab') {\n this.toolTipObj.close();\n }\n };\n /**\n * Binding events to the element while component creation.\n *\n * @hidden\n * @returns {void}\n */\n Grid.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'touchend', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n EventHandler.add(this.element, 'dblclick', this.dblClickHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyPressHandler, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.add(window, 'resize', this.resetIndentWidth, this);\n if (this.allowKeyboard) {\n this.element.tabIndex = this.element.tabIndex === -1 ? 0 : this.element.tabIndex;\n }\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.getContent().firstElementChild, 'scroll', this.scrollHandler, this);\n EventHandler.add(this.element, 'mousemove', this.mouseMoveHandler, this);\n EventHandler.add(this.element, 'mouseout', this.mouseMoveHandler, this);\n EventHandler.add(this.getContent(), 'touchstart', this.tapEvent, this);\n EventHandler.add(document.body, 'keydown', this.keyDownHandler, this);\n };\n /**\n * Unbinding events from the element while component destroy.\n *\n * @hidden\n * @returns {void}\n */\n Grid.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.mouseClickHandler);\n EventHandler.remove(this.element, 'touchend', this.mouseClickHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'dblclick', this.dblClickHandler);\n EventHandler.remove(this.getContent().firstElementChild, 'scroll', this.scrollHandler);\n EventHandler.remove(this.element, 'mousemove', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'mouseout', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'keydown', this.keyPressHandler);\n EventHandler.remove(this.getContent(), 'touchstart', this.tapEvent);\n EventHandler.remove(document.body, 'keydown', this.keyDownHandler);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.remove(window, 'resize', this.resetIndentWidth);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.addListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.on(events.dataReady, this.dataReady, this);\n this.on(events.contentReady, this.recalcIndentWidth, this);\n this.on(events.headerRefreshed, this.recalcIndentWidth, this);\n this.dataBoundFunction = this.refreshMediaCol.bind(this);\n this.addEventListener(events.dataBound, this.dataBoundFunction);\n this.on(events.keyPressed, this.onKeyPressed, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(events.dataReady, this.dataReady);\n this.off(events.contentReady, this.recalcIndentWidth);\n this.off(events.headerRefreshed, this.recalcIndentWidth);\n this.removeEventListener(events.dataBound, this.dataBoundFunction);\n this.off(events.keyPressed, this.onKeyPressed);\n };\n /**\n * Get current visible data of grid.\n *\n * @returns {Object[]} Returns the current view records\n *\n * @isGenericType true\n */\n Grid.prototype.getCurrentViewRecords = function () {\n if (isGroupAdaptive(this)) {\n return isNullOrUndefined(this.currentViewData.records) ?\n this.currentViewData : this.currentViewData.records;\n }\n if (this.groupSettings.enableLazyLoading) {\n return this.currentViewData;\n }\n return (this.allowGrouping && this.groupSettings.columns.length && this.currentViewData.length\n && this.currentViewData.records) ? this.currentViewData.records\n : this.currentViewData;\n };\n Grid.prototype.mouseClickHandler = function (e) {\n if (this.isChildGrid(e) || (parentsUntil(e.target, 'e-gridpopup') && e.touches) ||\n this.element.getElementsByClassName('e-cloneproperties').length || this.checkEdit(e)) {\n return;\n }\n if (((!this.allowRowDragAndDrop && (parentsUntil(e.target, literals.gridContent) ||\n e.target.tagName === 'TD')) || (!(this.allowGrouping || this.allowReordering) &&\n parentsUntil(e.target, 'e-gridheader'))) && e.touches) {\n return;\n }\n if (parentsUntil(e.target, 'e-gridheader') && this.allowRowDragAndDrop &&\n !(parentsUntil(e.target, 'e-filterbarcell')) && (e.target &&\n ['A', 'BUTTON', 'INPUT'].indexOf(e.target.tagName) === -1)) {\n e.preventDefault();\n }\n var args = this.getRowInfo(e.target);\n var cancel = 'cancel';\n args[\"\" + cancel] = false;\n var isDataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n isDataRow = rowObj ? rowObj.isDataRow : false;\n }\n if (isDataRow) {\n this.trigger(events.recordClick, args);\n }\n this.notify(events.click, e);\n };\n Grid.prototype.checkEdit = function (e) {\n var tr = parentsUntil(e.target, literals.row);\n var isEdit = this.editSettings.mode !== 'Batch' &&\n this.isEdit && tr && (tr.classList.contains(literals.editedRow) || tr.classList.contains(literals.addedRow));\n return !parentsUntil(e.target, 'e-unboundcelldiv') && (isEdit || (parentsUntil(e.target, literals.rowCell) &&\n parentsUntil(e.target, literals.rowCell).classList.contains('e-editedbatchcell')));\n };\n Grid.prototype.dblClickHandler = function (e) {\n var grid = parentsUntil(e.target, 'e-grid');\n if (isNullOrUndefined(grid) || grid.id !== this.element.id || closest(e.target, '.e-unboundcelldiv')) {\n return;\n }\n var dataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n dataRow = rowObj ? rowObj.isDataRow : false;\n }\n var args = this.getRowInfo(e.target);\n args.target = e.target;\n if (dataRow) {\n this.trigger(events.recordDoubleClick, args);\n }\n this.notify(events.dblclick, e);\n };\n Grid.prototype.focusOutHandler = function (e) {\n if (this.isChildGrid(e)) {\n return;\n }\n if (!parentsUntil(e.target, 'e-grid')) {\n this.element.querySelector('.e-gridpopup').style.display = 'None';\n }\n var filterClear = this.element.querySelector('.e-cancel:not(.e-hide)');\n if (filterClear && !filterClear.parentElement.classList.contains('e-tbar-btn')) {\n filterClear.classList.add('e-hide');\n }\n var relatedTarget = e.relatedTarget;\n var ariaOwns = relatedTarget ? relatedTarget.getAttribute('aria-owns') : null;\n if ((!relatedTarget || (!parentsUntil(relatedTarget, 'e-grid') &&\n (!isNullOrUndefined(ariaOwns) &&\n (ariaOwns)) !== e.target.getAttribute('aria-owns')))\n && !this.keyPress && this.isEdit && !Browser.isDevice) {\n if (this.editSettings.mode === 'Batch' && !((parentsUntil(relatedTarget, 'e-ddl') || parentsUntil(relatedTarget, 'e-ddt')) &&\n parentsUntil(relatedTarget, 'e-input-group')) && (parentsUntil(relatedTarget, 'e-uploader') || !isNullOrUndefined(parentsUntil(relatedTarget, 'e-input-group')))) {\n this.editModule.saveCell();\n this.notify(events.editNextValCell, {});\n }\n if (this.editSettings.mode === 'Normal') {\n this.editModule.editFormValidate();\n }\n }\n this.keyPress = false;\n };\n Grid.prototype.isChildGrid = function (e) {\n var gridElement = parentsUntil(e.target, 'e-grid');\n if ((gridElement && gridElement.id !== this.element.id) || (parentsUntil(e.target, 'e-unboundcelldiv') &&\n isNullOrUndefined(gridElement))) {\n return true;\n }\n return false;\n };\n /**\n * @param {Object} persistedData - Defines the persisted data\n * @returns {void}\n * @hidden\n */\n Grid.prototype.mergePersistGridData = function (persistedData) {\n var data = this.getLocalData();\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n if (this.enableVirtualization && dataObj.pageSettings) {\n dataObj.pageSettings.currentPage = 1;\n }\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof this[\"\" + key] === 'object') && !isNullOrUndefined(this[\"\" + key])) {\n if (Array.isArray(this[\"\" + key]) && key === 'columns') {\n setColumnIndex(this[\"\" + key]);\n this.mergeColumns(dataObj[\"\" + key], this[\"\" + key]);\n this[\"\" + key] = dataObj[\"\" + key];\n }\n else {\n extend(this[\"\" + key], dataObj[\"\" + key]);\n }\n }\n else {\n this[\"\" + key] = dataObj[\"\" + key];\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n Grid.prototype.mergeColumns = function (storedColumn, columns) {\n var storedColumns = storedColumn;\n var _loop_2 = function (i) {\n var localCol = columns.filter(function (tCol) { return tCol.index === storedColumns[parseInt(i.toString(), 10)].index; })[0];\n if (!isNullOrUndefined(localCol)) {\n if (localCol.columns && localCol.columns.length) {\n this_2.mergeColumns(storedColumns[parseInt(i.toString(), 10)].columns, localCol.columns);\n storedColumns[parseInt(i.toString(), 10)] = extend(localCol, storedColumns[parseInt(i.toString(), 10)], {}, true);\n }\n else {\n storedColumns[parseInt(i.toString(), 10)] = extend(localCol, storedColumns[parseInt(i.toString(), 10)], {}, true);\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_2(i);\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns the isDetail\n */\n Grid.prototype.isDetail = function () {\n return !isNullOrUndefined(this.detailTemplate) || !isNullOrUndefined(this.childGrid);\n };\n Grid.prototype.isCommandColumn = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.isCommandColumn(col.columns);\n }\n return !!(col.commands || col.commandsTemplate);\n });\n };\n Grid.prototype.isForeignKeyEnabled = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.isForeignKeyEnabled(col.columns);\n }\n return !!(col.dataSource && col.foreignKeyValue);\n });\n };\n Grid.prototype.keyPressHandler = function (e) {\n var presskey = extend(e, { cancel: false });\n this.trigger('keyPressed', presskey);\n if (presskey.cancel === true) {\n e.stopImmediatePropagation();\n }\n };\n Grid.prototype.keyDownHandler = function (e) {\n if (e.altKey) {\n if (e.keyCode === 74) { //alt j\n if (this.keyA) { //alt A J\n this.notify(events.groupCollapse, { target: e.target, collapse: false });\n this.keyA = false;\n }\n else {\n if (this.focusModule && this.focusModule.currentInfo && this.focusModule.currentInfo.element) {\n removeClass([this.focusModule.currentInfo.element, this.focusModule.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.focusModule.currentInfo.element.tabIndex = -1;\n }\n if (!this.element.classList.contains('e-childgrid')) {\n this.element.focus();\n }\n }\n }\n if (e.keyCode === 87) { //alt w\n var focusModule = this.focusModule;\n if (focusModule) {\n if (!this.currentViewData.length) {\n return;\n }\n focusModule.focusContent();\n focusModule.addOutline();\n }\n }\n if (e.keyCode === 65) { //alt A\n this.keyA = true;\n }\n if (e.keyCode === 72 && this.keyA) { //alt A H\n this.notify(events.groupCollapse, { target: e.target, collapse: true });\n this.keyA = false;\n }\n }\n if (e.keyCode === 13) {\n this.notify(events.enterKeyHandler, e);\n }\n };\n Grid.prototype.keyActionHandler = function (e) {\n if (this.isChildGrid(e) ||\n (this.isEdit && e.action !== 'escape' && e.action !== 'enter' && e.action !== 'shiftEnter'\n && e.action !== 'tab' && e.action !== 'shiftTab')) {\n return;\n }\n else {\n this.keyPress = true;\n }\n if (this.allowKeyboard) {\n if (e.action === 'ctrlPlusP') {\n e.preventDefault();\n this.print();\n }\n this.notify(events.keyPressed, e);\n }\n };\n /**\n * @param {Function[]} modules - Defines the modules\n * @returns {void}\n * @hidden\n */\n Grid.prototype.setInjectedModules = function (modules) {\n this.injectedModules = modules;\n };\n Grid.prototype.updateColumnObject = function () {\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n setColumnIndex(this.columns);\n this.initForeignColumn();\n this.notify(events.autoCol, {});\n };\n /**\n * Gets the foreign columns from Grid.\n *\n * @returns {Column[]} Returns Foreign key column\n */\n Grid.prototype.getForeignKeyColumns = function () {\n return this.getColumns().filter(function (col) {\n return col.isForeignColumn();\n });\n };\n /**\n * @hidden\n * @returns {number} Returns row height\n */\n Grid.prototype.getRowHeight = function () {\n return this.rowHeight ? this.rowHeight : getRowHeight(this.element);\n };\n /**\n * Refreshes the Grid column changes.\n *\n * @returns {void}\n */\n Grid.prototype.refreshColumns = function () {\n this.setFrozenCount();\n var fCnt = this.getContent().querySelector('.e-frozen-left-content');\n var frCnt = this.getContent().querySelector('.e-frozen-right-content');\n var isColFrozen = !this.frozenRightCount && !this.frozenLeftCount;\n var isFrozen = this.getFrozenColumns() !== 0;\n if (!isFrozen && ((!fCnt && this.frozenLeftCount) || (!frCnt && this.frozenRightCount) || (fCnt && !this.frozenLeftCount)\n || (frCnt && !this.frozenRightCount))) {\n this.tableIndex = 0;\n this.tablesCount = 1;\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.freezeRefresh();\n }\n else if (isColFrozen && ((this.getFrozenColumns() === 1 && !fCnt) || (this.getFrozenColumns() === 0 && fCnt))) {\n this.tableIndex = 0;\n this.tablesCount = 1;\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.freezeRefresh();\n }\n else {\n this.isPreventScrollEvent = true;\n this.updateColumnObject();\n this.checkLockColumns(this.getColumns());\n this.refresh();\n if (this.isFrozenGrid()) {\n var mTbl = this.contentModule.getMovableContent().querySelector('.' + literals.table);\n remove(mTbl.querySelector(literals.colGroup));\n var colGroup = ((this.getHeaderContent()\n .querySelector('.' + literals.movableHeader).querySelector(literals.colGroup)).cloneNode(true));\n mTbl.insertBefore(colGroup, mTbl.querySelector(literals.tbody));\n if (this.getFrozenMode() === 'Left-Right') {\n var frTbl = this.contentModule.getFrozenRightContent().querySelector('.' + literals.table);\n remove(frTbl.querySelector(literals.colGroup));\n var colGrp = ((this.getHeaderContent()\n .querySelector('.e-frozen-right-header').querySelector(literals.colGroup)).cloneNode(true));\n frTbl.insertBefore(colGrp, frTbl.querySelector(literals.tbody));\n }\n }\n }\n if (this.isFrozenGrid()) {\n var left = this.getContent().querySelector('.e-movablescrollbar').scrollLeft;\n this.headerModule.getMovableHeader().scrollLeft = left;\n this.contentModule.getMovableContent().scrollLeft = left;\n }\n };\n /**\n * Export Grid data to Excel file(.xlsx).\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns the excelexport\n */\n Grid.prototype.excelExport = function (excelExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n workbook, isBlob) {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, false, isBlob) : null;\n };\n /**\n * Export Grid data to CSV file.\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns csv export\n */\n Grid.prototype.csvExport = function (excelExportProperties, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isMultipleExport, workbook, isBlob) {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, true, isBlob) : null;\n };\n /**\n * Export Grid data to PDF document.\n *\n * @param {pdfExportProperties} pdfExportProperties - Defines the export properties of the Grid.\n * @param {isMultipleExport} isMultipleExport - Define to enable multiple export.\n * @param {pdfDoc} pdfDoc - Defined the Pdf Document if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n *\n * @returns {Promise} Returns pdfexport\n */\n Grid.prototype.pdfExport = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n return this.pdfExportModule ? this.pdfExportModule.Map(this, pdfExportProperties, isMultipleExport, pdfDoc, isBlob) : null;\n };\n /**\n * Groups a column by column name.\n *\n * @param {string} columnName - Defines the column name to group.\n *\n * @returns {void}\n */\n Grid.prototype.groupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.groupColumn(columnName);\n }\n };\n /**\n * Expands all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.groupExpandAll = function () {\n if (this.groupModule) {\n this.groupModule.expandAll();\n }\n };\n /**\n * Collapses all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.groupCollapseAll = function () {\n if (this.groupModule) {\n this.groupModule.collapseAll();\n }\n };\n /**\n * Expands or collapses grouped rows by target element.\n *\n * @param {Element} target - Defines the target element of the grouped row.\n * @returns {void}\n */\n // public expandCollapseRows(target: Element): void {\n // if (this.groupModule) {\n // this.groupModule.expandCollapseRows(target);\n // }\n // }\n /**\n * Clears all the grouped columns of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.clearGrouping = function () {\n if (this.groupModule) {\n this.groupModule.clearGrouping();\n }\n };\n /**\n * Ungroups a column by column name.\n *\n * {% codeBlock src='grid/ungroupColumn/index.md' %}{% endcodeBlock %}\n *\n * @param {string} columnName - Defines the column name to ungroup.\n *\n * @returns {void}\n */\n Grid.prototype.ungroupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.ungroupColumn(columnName);\n }\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} x - Defines the X axis.\n * @param {number} y - Defines the Y axis.\n *\n * @returns {void}\n */\n Grid.prototype.openColumnChooser = function (x, y) {\n if (this.columnChooserModule) {\n this.columnChooserModule.openColumnChooser(x, y);\n }\n };\n Grid.prototype.scrollRefresh = function () {\n var _this = this;\n var refresh = function () {\n _this.scrollModule.refresh();\n _this.off(events.contentReady, refresh);\n };\n this.on(events.contentReady, refresh, this);\n };\n /**\n * Collapses a detail row with the given target.\n *\n * @param {Element} target - Defines the expanded element to collapse.\n * @returns {void}\n */\n // public detailCollapse(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.collapse(target);\n // }\n // }\n /**\n * Collapses all the detail rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.detailCollapseAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.collapseAll();\n }\n };\n /**\n * Expands a detail row with the given target.\n *\n * @param {Element} target - Defines the collapsed element to expand.\n * @returns {void}\n */\n // public detailExpand(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.expand(target);\n // }\n // }\n /**\n * Expands all the detail rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.detailExpandAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.expandAll();\n }\n };\n /**\n * Deselects the currently selected cells.\n *\n * @returns {void}\n */\n Grid.prototype.clearCellSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearCellSelection();\n }\n };\n /**\n * Deselects the currently selected rows.\n *\n * @returns {void}\n */\n Grid.prototype.clearRowSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearRowSelection();\n }\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n *\n * @returns {void}\n */\n Grid.prototype.selectCells = function (rowCellIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectCells(rowCellIndexes);\n }\n };\n /**\n * Selects a range of rows from start and end row indexes.\n *\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n *\n * @returns {void}\n */\n Grid.prototype.selectRowsByRange = function (startIndex, endIndex) {\n if (this.selectionModule) {\n this.selectionModule.selectRowsByRange(startIndex, endIndex);\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns whether context menu is open or not\n */\n Grid.prototype.isContextMenuOpen = function () {\n return this.contextMenuModule && this.contextMenuModule.isOpen;\n };\n /**\n * @param {Function} module - Defines the module\n * @returns {boolean} return the injected modules\n * @hidden\n */\n Grid.prototype.ensureModuleInjected = function (module) {\n return this.getInjectedModules().indexOf(module) >= 0;\n };\n /**\n * Destroys the given template reference.\n *\n * @param {string[]} propertyNames - Defines the collection of template name.\n * @param {any} index - specifies the index\n *\n * @returns {void}\n */\n // eslint-disable-next-line\n Grid.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * @param {string | string[]} type - Defines the type\n * @param {Object} args - Defines the arguments\n * @returns {void}\n * @hidden\n * @private\n */\n Grid.prototype.log = function (type, args) {\n // eslint-disable-next-line\n this.loggerModule ? this.loggerModule.log(type, args) : (function () { return 0; })();\n };\n /**\n * @param {Element} element - Defines the element\n * @returns {void}\n * @hidden\n */\n Grid.prototype.applyBiggerTheme = function (element) {\n if (this.element.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n };\n /**\n * @hidden\n * @returns {Object} Returns the previous row data\n */\n Grid.prototype.getPreviousRowData = function () {\n var previousRowData = this.getRowsObject()[this.getRows().length - 1].data;\n return previousRowData;\n };\n /**\n * Hides the scrollbar placeholder of Grid content when grid content is not overflown.\n *\n * @returns {void}\n */\n Grid.prototype.hideScroll = function () {\n var content = this.getContent().querySelector('.' + literals.content);\n var scrollBar = this.getContent().querySelector('.e-scrollbar');\n if (content.scrollHeight <= content.clientHeight) {\n this.scrollModule.removePadding();\n content.style.overflowY = 'auto';\n }\n if (this.isFrozenGrid() && scrollBar) {\n var mvblScrollBar = this.getContent().querySelector('.e-movablescrollbar');\n var mvblChild = this.getContent().querySelector('.e-movablechild');\n scrollBar.style.display = 'flex';\n if (mvblScrollBar.offsetWidth >= mvblChild.offsetWidth) {\n scrollBar.style.display = 'none';\n this.notify(events.frozenHeight, 0);\n }\n }\n };\n /**\n * Get row index by primary key or row data.\n *\n * @param {string | Object} value - Defines the primary key value.\n *\n * @returns {number} Returns the index\n */\n Grid.prototype.getRowIndexByPrimaryKey = function (value) {\n var pkName = this.getPrimaryKeyFieldNames()[0];\n value = typeof value === 'object' ? value[\"\" + pkName] : value;\n var rows = this.getRowsObject();\n for (var i = 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].isDetailRow || rows[parseInt(i.toString(), 10)].isCaptionRow) {\n continue;\n }\n var pKvalue = rows[parseInt(i.toString(), 10)].data[\"\" + pkName];\n if (pkName.split('.').length > 1) {\n pKvalue = performComplexDataOperation(pkName, rows[parseInt(i.toString(), 10)].data);\n }\n if (pKvalue === value) {\n return rows[parseInt(i.toString(), 10)].index;\n }\n }\n return -1;\n };\n /**\n * @param {string} field - Defines the field name\n * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByFieldFromAllCols = function (field) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if (field === gCols[parseInt(i.toString(), 10)].field || (gCols[parseInt(i.toString(), 10)].isForeignColumn() &&\n field === gCols[parseInt(i.toString(), 10)].foreignKeyValue)) {\n column = gCols[parseInt(i.toString(), 10)];\n }\n }\n return column;\n };\n /**\n * @param {string} uid - Defines the uid\n * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByUidFromAllCols = function (uid) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if (uid === gCols[parseInt(i.toString(), 10)].uid) {\n column = gCols[parseInt(i.toString(), 10)];\n }\n }\n return column;\n };\n /**\n * Get all filtered records from the Grid and it returns array of objects for the local dataSource, returns a promise object if the Grid has remote data.\n *\n * @returns {Object[] | Promise} Returns the filtered records\n */\n Grid.prototype.getFilteredRecords = function () {\n if (this.allowFiltering && this.filterSettings.columns.length) {\n var query = this.renderModule.data.generateQuery(true);\n if (this.dataSource && this.renderModule.data.isRemote() && this.dataSource instanceof DataManager) {\n return this.renderModule.data.getData(this.dataSource, query);\n }\n else {\n if (this.dataSource instanceof DataManager) {\n return this.dataSource.executeLocal(query);\n }\n else {\n return new DataManager(this.dataSource, query).executeLocal(query);\n }\n }\n }\n return [];\n };\n Grid.prototype.getUserAgent = function () {\n var userAgent = Browser.userAgent.toLowerCase();\n return /iphone|ipod|ipad|macintosh/.test(userAgent);\n };\n /**\n * @param {TouchEventArgs} e - Defines the TouchEventArgs\n * @returns {void}\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n // eslint-disable-next-line\n Grid.prototype.tapEvent = function (e) {\n if (this.getUserAgent()) {\n if (!Global.timer) {\n Global.timer = setTimeout(function () {\n Global.timer = null;\n }, 300);\n }\n else {\n clearTimeout(Global.timer);\n Global.timer = null;\n this.dblClickHandler(e);\n this.notify(events.doubleTap, e);\n }\n }\n };\n /**\n * @param {string} prefix - specifies the prefix\n * @returns {string} returns the row uid\n * @hidden\n */\n Grid.prototype.getRowUid = function (prefix) {\n return \"\" + prefix + this.rowUid++;\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getMovableVirtualContent = function () {\n return this.getContent().querySelector('.' + literals.movableContent);\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenVirtualContent = function () {\n return this.getContent().querySelector('.' + literals.frozenContent);\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getMovableVirtualHeader = function () {\n return this.getHeaderContent().querySelector('.' + literals.movableHeader);\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenVirtualHeader = function () {\n return this.getHeaderContent().querySelector('.' + literals.frozenHeader);\n };\n /**\n * @param {string} uid - specifies the uid\n * @returns {Element} returns the element\n * @hidden\n */\n Grid.prototype.getRowElementByUID = function (uid) {\n var rowEle;\n var rows = [];\n if (this.isFrozenGrid()) {\n var fRows = [].slice.call(this.getFrozenVirtualContent().querySelector(literals.tbody).children);\n var mRows = [].slice.call(this.getMovableVirtualContent().querySelector(literals.tbody).children);\n var frozenRigtRows = [];\n if (this.tablesCount === 3) {\n frozenRigtRows = [].slice.call(this.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody).children);\n }\n if (this.frozenRows) {\n rows = [].slice.call(this.getFrozenVirtualHeader().querySelector(literals.tbody).children);\n rows = rows.concat([].slice.call(this.getMovableVirtualHeader().querySelector(literals.tbody).children));\n if (this.tablesCount === 3) {\n var frHdr = this.getHeaderContent().querySelector('.e-frozen-right-header');\n rows = rows.concat([].slice.call(frHdr.querySelector(literals.tbody).children)).concat(frozenRigtRows);\n }\n rows = rows.concat(fRows).concat(mRows);\n }\n else {\n rows = fRows.concat(mRows).concat(frozenRigtRows);\n }\n }\n else {\n var cntRows = [].slice.call(this.getContent().querySelector(literals.tbody).children);\n if (this.frozenRows) {\n rows = [].slice.call(this.getHeaderContent().querySelector(literals.tbody).children);\n rows = rows.concat(cntRows);\n }\n else {\n rows = cntRows;\n }\n }\n for (var _i = 0, rows_2 = rows; _i < rows_2.length; _i++) {\n var row = rows_2[_i];\n if (row.getAttribute('data-uid') === uid) {\n rowEle = row;\n break;\n }\n }\n return rowEle;\n };\n /**\n * Gets the hidden columns from the Grid.\n *\n * @returns {Column[]} Returns the Column\n */\n Grid.prototype.getHiddenColumns = function () {\n var cols = [];\n for (var _i = 0, _a = this.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible === false) {\n cols.push(col);\n }\n }\n return cols;\n };\n /**\n * Calculates the page size by parent element height\n *\n * @param {number | string } containerHeight - specifies the container height\n * @returns {number} returns the page size\n */\n Grid.prototype.calculatePageSizeByParentHeight = function (containerHeight) {\n if (this.allowPaging) {\n if ((this.allowTextWrap && this.textWrapSettings.wrapMode === 'Header') || (!this.allowTextWrap)) {\n var pagesize = 0;\n if (containerHeight.indexOf('%') !== -1) {\n containerHeight = parseInt(containerHeight, 10) / 100 * this.element.clientHeight;\n }\n var nonContentHeight = this.getNoncontentHeight() + this.getRowHeight();\n if (containerHeight > nonContentHeight) {\n var contentHeight = 0;\n contentHeight = containerHeight - this.getNoncontentHeight();\n pagesize = (contentHeight / this.getRowHeight());\n }\n if (pagesize > 0) {\n return Math.floor(pagesize);\n }\n }\n }\n return 0;\n };\n Grid.prototype.getNoncontentHeight = function () {\n var height = 0;\n if (!isNullOrUndefined(this.getHeaderContent().clientHeight)) {\n height += this.getHeaderContent().clientHeight;\n }\n if (this.toolbar && !isNullOrUndefined(this.element.querySelector('.e-toolbar').clientHeight)) {\n height += this.element.querySelector('.e-toolbar').clientHeight;\n }\n if (this.allowPaging && !isNullOrUndefined(this.element.querySelector('.e-gridpager').clientHeight)) {\n height += this.element.querySelector('.e-gridpager').clientHeight;\n }\n if (this.showColumnChooser && !isNullOrUndefined(this.element.querySelector('.e-columnheader').clientHeight)) {\n height += this.element.querySelector('.e-columnheader').clientHeight;\n }\n if (this.allowGrouping && this.groupSettings.showDropArea && !isNullOrUndefined(this.element.querySelector('.e-groupdroparea').clientHeight)) {\n height += this.element.querySelector('.e-groupdroparea').clientHeight;\n }\n if (this.aggregates.length > 0 && !isNullOrUndefined(this.element.querySelector('.e-summaryrow').clientHeight)) {\n for (var i = 0; i < this.element.getElementsByClassName('e-summaryrow').length; i++) {\n height += this.element.getElementsByClassName('e-summaryrow')[parseInt(i.toString(), 10)].clientHeight;\n }\n }\n return height;\n };\n /**\n *To perform aggregate operation on a column.\n *\n * @param {AggregateColumnModel} summaryCol - Pass Aggregate Column details.\n * @param {Object} summaryData - Pass JSON Array for which its field values to be calculated.\n *\n * @returns {number} returns the summary values\n */\n Grid.prototype.getSummaryValues = function (summaryCol, summaryData) {\n return DataUtil.aggregates[summaryCol.type.toLowerCase()](summaryData, summaryCol.field);\n };\n /**\n * Sends a Post request to export Grid to Excel file in server side.\n *\n * @param {string} url - Pass Url for server side excel export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverExcelExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to Pdf file in server side.\n *\n * @param {string} url - Pass Url for server side pdf export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverPdfExport = function (url) {\n this.isExcel = false;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to CSV file in server side.\n *\n * @param {string} url - Pass Url for server side pdf export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverCsvExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * @param {string} url - Defines exporting url\n * @returns {void}\n * @hidden\n */\n Grid.prototype.exportGrid = function (url) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var grid = this;\n var query = grid.getDataModule().generateQuery(true);\n var state = new UrlAdaptor().processQuery(new DataManager({ url: '' }), query);\n var queries = JSON.parse(state.data);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var gridModel = JSON.parse(this.addOnPersist(['allowGrouping', 'allowPaging', 'pageSettings', 'sortSettings', 'allowPdfExport', 'allowExcelExport', 'aggregates',\n 'filterSettings', 'groupSettings', 'columns', 'locale', 'searchSettings']));\n var include = ['field', 'headerText', 'type', 'format', 'visible', 'foreignKeyValue', 'foreignKeyField',\n 'template', 'index', 'width', 'textAlign', 'headerTextAlign', 'columns'];\n gridModel.filterSettings.columns = queries.where;\n gridModel.searchSettings.fields = queries.search && queries.search[0]['fields'] || [];\n gridModel.sortSettings.columns = queries.sorted;\n gridModel.columns = this.setHeaderText(gridModel.columns, include);\n var form = this.createElement('form', { id: 'ExportForm', styles: 'display:none;' });\n var gridInput = this.createElement('input', { id: 'gridInput', attrs: { name: 'gridModel' } });\n gridInput.value = JSON.stringify(gridModel);\n form.method = 'POST';\n form.action = url;\n form.appendChild(gridInput);\n document.body.appendChild(form);\n form.submit();\n form.remove();\n };\n /**\n * @param {Column[]} columns - Defines array of columns\n * @param {string[]} include - Defines array of sting\n * @returns {Column[]} returns array of columns\n * @hidden\n */\n Grid.prototype.setHeaderText = function (columns, include) {\n for (var i = 0; i < columns.length; i++) {\n var column = this.getColumnByUid(columns[parseInt(i.toString(), 10)].uid);\n columns[parseInt(i.toString(), 10)].headerText = column.headerText;\n if (!isNullOrUndefined(column.template)) {\n columns[parseInt(i.toString(), 10)].template = 'true';\n }\n if (columns[parseInt(i.toString(), 10)].format) {\n columns[parseInt(i.toString(), 10)].format = getNumberFormat(this.getFormat(columns[parseInt(i.toString(), 10)].format), columns[parseInt(i.toString(), 10)].type, this.isExcel, this.currencyCode);\n }\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.setHeaderText(columns[parseInt(i.toString(), 10)].columns, include);\n }\n var keys = Object.keys(columns[parseInt(i.toString(), 10)]);\n for (var j = 0; j < keys.length; j++) {\n if (include.indexOf(keys[parseInt(j.toString(), 10)]) < 0) {\n delete columns[parseInt(i.toString(), 10)][keys[parseInt(j.toString(), 10)]];\n }\n }\n }\n return columns;\n };\n Grid.prototype.getFormat = function (format) {\n return typeof (format) === 'object' ? !isNullOrUndefined(format.format) ?\n format.format : format.skeleton : format;\n };\n /**\n * @hidden\n * @returns {boolean} returns the isCollapseStateEnabled\n */\n Grid.prototype.isCollapseStateEnabled = function () {\n var isExpanded = 'isExpanded';\n return this[\"\" + isExpanded] === false;\n };\n /**\n * @param {number} key - Defines the primary key value.\n * @param {Object} rowData - Defines the rowData\n * @returns {void}\n */\n Grid.prototype.updateRowValue = function (key, rowData) {\n var args = {\n requestType: 'save', data: rowData\n };\n this.showSpinner();\n this.notify(events.updateData, args);\n this.refresh();\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setForeignKeyData = function () {\n this.dataBind();\n var colpending = this.getDataModule().getForeignKeyDataState();\n if (colpending.isPending) {\n this.getDataModule().setForeignKeyDataState({});\n colpending.resolver();\n }\n else {\n this.getDataModule().setForeignKeyDataState({ isDataChanged: false });\n if (this.contentModule || this.headerModule) {\n this.renderModule.render();\n }\n }\n };\n /**\n * @param {string} field - specifies the field\n * @returns {void}\n * @hidden\n */\n Grid.prototype.resetFilterDlgPosition = function (field) {\n var header = this.getColumnHeaderByField(field);\n if (header) {\n var target = header.querySelector('.e-filtermenudiv');\n var filterDlg = this.element.querySelector('.e-filter-popup');\n if (target && filterDlg) {\n var gClient = this.element.getBoundingClientRect();\n var fClient = target.getBoundingClientRect();\n if (filterDlg) {\n if ((filterDlg.offsetWidth + fClient.right) > gClient.right) {\n filterDlg.style.left = ((fClient.right - filterDlg.offsetWidth) - gClient.left).toString() + 'px';\n }\n else {\n filterDlg.style.left = (fClient.right - gClient.left).toString() + 'px';\n }\n }\n }\n }\n };\n /**\n * @param {any} callBack - specifies the callBack method\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line\n Grid.prototype.renderTemplates = function (callBack) {\n var isReactChild = this.parentDetails && this.parentDetails.parentInstObj && this.parentDetails.parentInstObj.isReact;\n if (isReactChild && this['portals']) {\n this.parentDetails.parentInstObj['portals'] = this.parentDetails.parentInstObj['portals']\n .concat(this['portals']);\n this.parentDetails.parentInstObj.renderTemplates(callBack);\n this['portals'] = undefined;\n }\n else {\n var portals = 'portals';\n this.notify('reactTemplateRender', this[\"\" + portals]);\n this.renderReactTemplates(callBack);\n }\n };\n /**\n * Apply the changes to the Grid without refreshing the rows.\n *\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @returns {void}\n */\n Grid.prototype.batchUpdate = function (changes) {\n this.processRowChanges(changes);\n };\n /**\n * Apply the changes to the Grid in one batch after 50ms without refreshing the rows.\n *\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @returns {void}\n */\n Grid.prototype.batchAsyncUpdate = function (changes) {\n this.processBulkRowChanges(changes);\n };\n Grid.prototype.processBulkRowChanges = function (changes) {\n var _this = this;\n if (!this.dataToBeUpdated) {\n this.dataToBeUpdated = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n setTimeout(function () {\n _this.processRowChanges(_this.dataToBeUpdated);\n _this.dataToBeUpdated = null;\n }, this.asyncTimeOut);\n }\n else {\n var loopstring = [literals.addedRecords, literals.changedRecords, literals.deletedRecords];\n var keyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < loopstring.length; i++) {\n if (changes[loopstring[parseInt(i.toString(), 10)]]) {\n compareChanges(this, changes, loopstring[parseInt(i.toString(), 10)], keyField);\n }\n }\n }\n };\n Grid.prototype.processRowChanges = function (changes) {\n var _this = this;\n var keyField = this.getPrimaryKeyFieldNames()[0];\n changes = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n var promise = this.getDataModule().saveChanges(changes, keyField, {}, this.getDataModule().generateQuery().requiresCount());\n if (this.getDataModule().isRemote()) {\n promise.then(function () {\n _this.setNewData();\n });\n }\n else {\n this.setNewData();\n }\n };\n Grid.prototype.setNewData = function () {\n var _this = this;\n var oldValues = JSON.parse(JSON.stringify(this.getCurrentViewRecords()));\n var getData = this.getDataModule().getData({}, this.getDataModule().generateQuery().requiresCount());\n getData.then(function (e) {\n _this.bulkRefresh(e.result, oldValues, e.count);\n });\n };\n Grid.prototype.deleteRowElement = function (row) {\n var tr = this.getRowElementByUID(row.uid);\n var index = parseInt(tr.getAttribute(literals.dataRowIndex), 10);\n remove(tr);\n if (this.getFrozenColumns()) {\n var mtr = this.getMovableRows()[parseInt(index.toString(), 10)];\n remove(mtr);\n }\n };\n Grid.prototype.bulkRefresh = function (result, oldValues, count) {\n var _this = this;\n var rowObj = this.getRowsObject();\n var keyField = this.getPrimaryKeyFieldNames()[0];\n var _loop_3 = function (i) {\n if (!result.filter(function (e) { return e[\"\" + keyField] === rowObj[parseInt(i.toString(), 10)].data[\"\" + keyField]; }).length) {\n this_3.deleteRowElement(rowObj[parseInt(i.toString(), 10)]);\n rowObj.splice(i, 1);\n i--;\n }\n out_i_1 = i;\n };\n var this_3 = this, out_i_1;\n for (var i = 0; i < rowObj.length; i++) {\n _loop_3(i);\n i = out_i_1;\n }\n var _loop_4 = function (i) {\n var isRowExist;\n oldValues.filter(function (e) {\n if (e[\"\" + keyField] === result[parseInt(i.toString(), 10)][\"\" + keyField]) {\n if (e !== result[parseInt(i.toString(), 10)]) {\n _this.setRowData(result[parseInt(i.toString(), 10)][\"\" + keyField], result[parseInt(i.toString(), 10)]);\n }\n isRowExist = true;\n }\n });\n if (!isRowExist) {\n this_4.renderRowElement(result[parseInt(i.toString(), 10)], i);\n }\n };\n var this_4 = this;\n for (var i = 0; i < result.length; i++) {\n _loop_4(i);\n }\n this.currentViewData = result;\n var rows = [].slice.call(this.getContentTable().getElementsByClassName(literals.row));\n resetRowIndex(this, this.getRowsObject(), rows);\n setRowElements(this);\n if (this.allowPaging) {\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: { totalRecordsCount: count } });\n }\n };\n Grid.prototype.renderRowElement = function (data, index) {\n var row = new RowRenderer(this.serviceLocator, null, this);\n var model = new RowModelGenerator(this);\n var modelData = model.generateRows([data]);\n var tr = row.render(modelData[0], this.getColumns());\n var mTr;\n var mTbody;\n this.addRowObject(modelData[0], index);\n var tbody = this.getContentTable().querySelector(literals.tbody);\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (this.getFrozenColumns()) {\n var moveTbody = this.getContent().querySelector('.' + literals.movableContent).querySelector(literals.tbody);\n (moveTbody.firstElementChild).parentNode.removeChild(moveTbody.firstElementChild);\n }\n }\n if (this.getFrozenColumns()) {\n mTr = renderMovable(tr, this.getFrozenColumns(), this);\n if (this.frozenRows && index < this.frozenRows) {\n mTbody = this.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.tbody);\n }\n else {\n mTbody = this.getContent().querySelector('.' + literals.movableContent).querySelector(literals.tbody);\n }\n mTbody.appendChild(mTr);\n if (this.height === 'auto') {\n this.notify(events.frozenHeight, {});\n }\n }\n if (this.frozenRows && index < this.frozenRows) {\n tbody = this.getHeaderContent().querySelector(literals.tbody);\n }\n else {\n tbody = this.getContent().querySelector(literals.tbody);\n }\n tbody = this.getContent().querySelector(literals.tbody);\n tbody.appendChild(tr);\n };\n Grid.prototype.addRowObject = function (row, index) {\n var frzCols = this.getFrozenColumns();\n if (frzCols) {\n var mRows = this.getMovableRowsObject();\n var mRow = row.clone();\n mRow.cells = mRow.cells.slice(frzCols);\n row.cells = row.cells.slice(0, frzCols);\n mRows.splice(index, 1, mRow);\n }\n this.getRowsObject().splice(index, 1, row);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.updateVisibleExpandCollapseRows = function () {\n var rows = this.getRowsObject();\n for (var i = 0, len = rows.length; i < len; i++) {\n if ((rows[parseInt(i.toString(), 10)].isDataRow || rows[parseInt(i.toString(), 10)].isAggregateRow)\n && this.getRowElementByUID(rows[parseInt(i.toString(), 10)].uid).style.display === 'none') {\n rows[parseInt(i.toString(), 10)].visible = false;\n }\n else {\n rows[parseInt(i.toString(), 10)].visible = true;\n }\n }\n };\n /**\n * Method to sanitize any suspected untrusted strings and scripts before rendering them.\n *\n * @param {string} value - Specifies the html value to sanitize\n * @returns {string} Returns the sanitized html string\n * @hidden\n */\n Grid.prototype.sanitize = function (value) {\n if (this.enableHtmlSanitizer) {\n return SanitizeHtmlHelper.sanitize(value);\n }\n return value;\n };\n /**\n * @param {string | number} height - specifies the height\n * @returns {number | string} - specifies the height number\n * @hidden\n */\n Grid.prototype.getHeight = function (height) {\n if (!Number.isInteger(height) && height.indexOf('%') !== -1) {\n height = parseInt(height, 10) / 100 * this.element.clientHeight;\n }\n else if (!Number.isInteger(height) && this.height !== 'auto') {\n height = parseInt(height, 10);\n }\n else {\n height = this.height;\n }\n return height;\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right content\n */\n Grid.prototype.getFrozenRightContent = function () {\n return this.getContent().querySelector('.e-frozen-right-content');\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header\n */\n Grid.prototype.getFrozenRightHeader = function () {\n return this.getHeaderContent().querySelector('.e-frozen-right-header');\n };\n /**\n * @hidden\n * @returns {Element} - returns movable header tbody\n */\n Grid.prototype.getMovableHeaderTbody = function () {\n return this.getMovableVirtualHeader().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns movable content tbody\n */\n Grid.prototype.getMovableContentTbody = function () {\n return this.getMovableVirtualContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen header tbody\n */\n Grid.prototype.getFrozenHeaderTbody = function () {\n return this.getFrozenVirtualHeader().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen left content tbody\n */\n Grid.prototype.getFrozenLeftContentTbody = function () {\n return this.getFrozenVirtualContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header tbody\n */\n Grid.prototype.getFrozenRightHeaderTbody = function () {\n return this.getFrozenRightHeader().querySelector(literals.tbody);\n };\n /**\n * @returns {Element} returns frozen right content tbody\n * @hidden\n */\n Grid.prototype.getFrozenRightContentTbody = function () {\n var cnt = this.getFrozenRightContent();\n var tbody;\n if (cnt) {\n tbody = this.getFrozenRightContent().querySelector(literals.tbody);\n }\n return tbody;\n };\n /**\n * @param {boolean} isCustom - Defines custom filter dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomFilter = function (isCustom) {\n if (this.filterModule) {\n this.filterModule.showCustomFilter(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * @param {boolean} isCustom - Defines custom sort dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomSort = function (isCustom) {\n if (this.sortModule) {\n this.sortModule.showCustomSort(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * To manually show the vertical row mode filter dialog\n *\n * @returns {void}\n */\n Grid.prototype.showAdaptiveFilterDialog = function () {\n if (this.enableAdaptiveUI) {\n this.showResponsiveCustomFilter(true);\n }\n };\n /**\n * To manually show the vertical row sort filter dialog\n *\n * @returns {void}\n */\n Grid.prototype.showAdaptiveSortDialog = function () {\n if (this.enableAdaptiveUI) {\n this.showResponsiveCustomSort(true);\n }\n };\n /**\n * @param {boolean} isColVirtualization - Defines column virtualization\n * @returns {Column[]} returns array of column models\n * @hidden\n */\n Grid.prototype.getCurrentVisibleColumns = function (isColVirtualization) {\n var cols = [];\n var gridCols = isColVirtualization ? this.getColumns() : this.columnModel;\n for (var _i = 0, gridCols_1 = gridCols; _i < gridCols_1.length; _i++) {\n var col = gridCols_1[_i];\n if (col.visible) {\n cols.push(col);\n }\n }\n return cols;\n };\n Grid.prototype.enableInfiniteAggrgate = function () {\n if (this.enableInfiniteScrolling && this.groupSettings.columns.length && !this.groupSettings.disablePageWiseAggregates\n && !this.groupSettings.enableLazyLoading) {\n this.setProperties({ groupSettings: { disablePageWiseAggregates: true } }, true);\n }\n };\n var Grid_1;\n __decorate([\n Property([])\n ], Grid.prototype, \"currentViewData\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"parentDetails\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"showHider\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableAltRow\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableHover\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAutoFill\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableStickyHeader\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, TextWrapSettings)\n ], Grid.prototype, \"textWrapSettings\", void 0);\n __decorate([\n Complex({}, ResizeSettings)\n ], Grid.prototype, \"resizeSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPaging\", void 0);\n __decorate([\n Complex({}, PageSettings)\n ], Grid.prototype, \"pageSettings\", void 0);\n __decorate([\n Complex({}, LoadingIndicator)\n ], Grid.prototype, \"loadingIndicator\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableVirtualMaskRow\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableColumnVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], Grid.prototype, \"searchSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowSorting\", void 0);\n __decorate([\n Property('Ellipsis')\n ], Grid.prototype, \"clipMode\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowMultiSorting\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowExcelExport\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Complex({}, SortSettings)\n ], Grid.prototype, \"sortSettings\", void 0);\n __decorate([\n Complex({}, InfiniteScrollSettings)\n ], Grid.prototype, \"infiniteScrollSettings\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowSelection\", void 0);\n __decorate([\n Property(-1)\n ], Grid.prototype, \"selectedRowIndex\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], Grid.prototype, \"selectionSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property('Horizontal')\n ], Grid.prototype, \"rowRenderingMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAdaptiveUI\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowRowDragAndDrop\", void 0);\n __decorate([\n Complex({}, RowDropSettings)\n ], Grid.prototype, \"rowDropSettings\", void 0);\n __decorate([\n Complex({}, FilterSettings)\n ], Grid.prototype, \"filterSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowGrouping\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableImmutableMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnMenu\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"autoFit\", void 0);\n __decorate([\n Complex({}, GroupSettings)\n ], Grid.prototype, \"groupSettings\", void 0);\n __decorate([\n Complex({}, EditSettings)\n ], Grid.prototype, \"editSettings\", void 0);\n __decorate([\n Collection([], AggregateRow)\n ], Grid.prototype, \"aggregates\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnChooser\", void 0);\n __decorate([\n Complex({}, ColumnChooserSettings)\n ], Grid.prototype, \"columnChooserSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableHeaderFocus\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"width\", void 0);\n __decorate([\n Property('Default')\n ], Grid.prototype, \"gridLines\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"rowTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"detailTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"childGrid\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"queryString\", void 0);\n __decorate([\n Property('AllPages')\n ], Grid.prototype, \"printMode\", void 0);\n __decorate([\n Property('Expanded')\n ], Grid.prototype, \"hierarchyPrintMode\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], Grid.prototype, \"rowHeight\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"query\", void 0);\n __decorate([\n Property('USD')\n ], Grid.prototype, \"currencyCode\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbar\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"contextMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"columnMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbarTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"pagerTemplate\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenRows\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenColumns\", void 0);\n __decorate([\n Property('')\n ], Grid.prototype, \"cssClass\", void 0);\n __decorate([\n Property('All')\n ], Grid.prototype, \"columnQueryMode\", void 0);\n __decorate([\n Property({})\n ], Grid.prototype, \"currentAction\", void 0);\n __decorate([\n Property('22.2.12')\n ], Grid.prototype, \"ej2StatePersistenceVersion\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"queryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"headerCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordDoubleClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"printComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportDetailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeExcelExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePdfExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStartHelper\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"detailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenColumnChooser\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenAdaptiveDialog\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchCancel\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beginEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"commandClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSaved\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"keyPressed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"checkBoxChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeCopy\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePaste\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeAutoFill\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportGroupCaption\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupExpand\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupCollapse\", void 0);\n Grid = Grid_1 = __decorate([\n NotifyPropertyChanges\n ], Grid);\n return Grid;\n}(Component));\nexport { Grid };\n","/**\n * Specifies class names\n */\n/** @hidden */\nexport var rowCell = 'e-rowcell';\n/** @hidden */\nexport var gridHeader = 'e-gridheader';\n/** @hidden */\nexport var gridContent = 'e-gridcontent';\n/** @hidden */\nexport var gridFooter = 'e-gridfooter';\n/** @hidden */\nexport var headerContent = 'e-headercontent';\n/** @hidden */\nexport var movableContent = 'e-movablecontent';\n/** @hidden */\nexport var movableHeader = 'e-movableheader';\n/** @hidden */\nexport var frozenContent = 'e-frozencontent';\n/** @hidden */\nexport var frozenHeader = 'e-frozenheader';\n/** @hidden */\nexport var content = 'e-content';\n/** @hidden */\nexport var table = 'e-table';\n/** @hidden */\nexport var row = 'e-row';\n/** @hidden */\nexport var gridChkBox = 'e-gridchkbox';\n/** @hidden */\nexport var editedRow = 'e-editedrow';\n/** @hidden */\nexport var addedRow = 'e-addedrow';\n/**\n * Specifies repeated strings\n */\n/** @hidden */\nexport var changedRecords = 'changedRecords';\n/** @hidden */\nexport var addedRecords = 'addedRecords';\n/** @hidden */\nexport var deletedRecords = 'deletedRecords';\n/** @hidden */\nexport var leftRight = 'Left-Right';\n/** @hidden */\nexport var frozenRight = 'frozen-right';\n/** @hidden */\nexport var frozenLeft = 'frozen-left';\n/** @hidden */\nexport var dataColIndex = 'data-colindex';\n/** @hidden */\nexport var ariaColIndex = 'aria-colindex';\n/** @hidden */\nexport var dataRowIndex = 'data-rowindex';\n/** @hidden */\nexport var ariaRowIndex = 'aria-rowindex';\n/** @hidden */\nexport var tbody = 'tbody';\n/** @hidden */\nexport var colGroup = 'colgroup';\n/** @hidden */\nexport var open = 'open';\n/** @hidden */\nexport var change = 'change';\n/** @hidden */\nexport var focus = 'focus';\n/** @hidden */\nexport var create = 'created';\n/** @hidden */\nexport var beforeOpen = 'beforeOpen';\n/** @hidden */\nexport var downArrow = 'downArrow';\n/** @hidden */\nexport var upArrow = 'upArrow';\n/** @hidden */\nexport var pageUp = 'PageUp';\n/** @hidden */\nexport var pageDown = 'PageDown';\n/** @hidden */\nexport var enter = 'enter';\n/** @hidden */\nexport var shiftEnter = 'shiftEnter';\n/** @hidden */\nexport var tab = 'tab';\n/** @hidden */\nexport var shiftTab = 'shiftTab';\n","import { ChildProperty, compile as baseTemplateComplier, setValue, Internationalization, isUndefined, closest } from '@syncfusion/ej2-base';\nimport { extend as baseExtend, isNullOrUndefined, getValue, classList } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, addClass, attributes, remove, createElement, removeClass } from '@syncfusion/ej2-base';\nimport { isObject, select, selectAll } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate, UrlAdaptor, Deferred } from '@syncfusion/ej2-data';\nimport { Column } from '../models/column';\nimport { calculateRelativeBasedPosition } from '@syncfusion/ej2-popups';\nimport { Print } from '../actions/print';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\nimport * as literals from '../base/string-literals';\n//https://typescript.codeplex.com/discussions/401501\n/**\n * Function to check whether target object implement specific interface\n *\n * @param {Object} target - specifies the target\n * @param {string} checkFor - specifies the checkfors\n * @returns {boolean} returns the boolean\n * @hidden\n */\nexport function doesImplementInterface(target, checkFor) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return target.prototype && checkFor in target.prototype;\n}\n/**\n * Function to get value from provided data\n *\n * @param {string} field - specifies the field\n * @param {Object} data - specifies the data\n * @param {ColumnModel} column - specifies the column\n * @returns {Object} returns the object\n * @hidden\n */\n// eslint-disable-next-line\nexport function valueAccessor(field, data, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, data);\n}\n/**\n * Defines the method used to apply custom header cell values from external function and display this on each header cell rendered.\n *\n * @param {string} field - specifies the field\n * @param {ColumnModel} column - specifies the column\n * @returns {object} headerValueAccessor\n * @hidden\n */\nexport function headerValueAccessor(field, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, column);\n}\n/**\n * The function used to update Dom using requestAnimationFrame.\n *\n * @param {Function} updateFunction - Function that contains the actual action\n * @param {object} callBack - defines the callback\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function getUpdateUsingRaf(updateFunction, callBack) {\n requestAnimationFrame(function () {\n try {\n callBack(null, updateFunction());\n }\n catch (e) {\n callBack(e);\n }\n });\n}\n/**\n * @hidden\n * @param {PdfExportProperties | ExcelExportProperties} exportProperties - Defines the export properties\n * @returns {boolean} Returns isExportColumns\n */\nexport function isExportColumns(exportProperties) {\n return !isNullOrUndefined(exportProperties) &&\n !isNullOrUndefined(exportProperties.columns) && exportProperties.columns.length > 0;\n}\n/**\n * @param {PdfExportProperties | ExcelExportProperties} exportProperties - Defines the export properties\n * @param {IGrid} gObj - Defines the grid object\n * @returns {void}\n * @hidden\n */\nexport function updateColumnTypeForExportColumns(exportProperties, gObj) {\n var exportColumns = exportProperties.columns;\n var gridColumns = gObj.columns;\n for (var i = 0; i < exportColumns.length; i++) {\n if (gridColumns.length - 1 >= i) {\n if (gridColumns[parseInt(i.toString(), 10)].columns) {\n for (var j = 0; j < gridColumns[parseInt(i.toString(), 10)].columns.length; j++) {\n exportColumns[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)]\n .type = gridColumns[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)].type;\n }\n }\n else {\n exportColumns[parseInt(i.toString(), 10)].type = gridColumns[parseInt(i.toString(), 10)].type;\n }\n }\n }\n}\n/**\n * @hidden\n * @param {IGrid} grid - Defines the grid\n * @returns {void}\n */\nexport function updatecloneRow(grid) {\n var nRows = [];\n var actualRows = grid.vRows;\n for (var i = 0; i < actualRows.length; i++) {\n if (actualRows[parseInt(i.toString(), 10)].isDataRow) {\n nRows.push(actualRows[parseInt(i.toString(), 10)]);\n }\n else if (!actualRows[parseInt(i.toString(), 10)].isDataRow) {\n nRows.push(actualRows[parseInt(i.toString(), 10)]);\n if (!actualRows[parseInt(i.toString(), 10)].isExpand && actualRows[parseInt(i.toString(), 10)].isCaptionRow) {\n i += getCollapsedRowsCount(actualRows[parseInt(i.toString(), 10)], grid);\n }\n }\n }\n grid.vcRows = nRows;\n}\nvar count = 0;\n/**\n * @hidden\n * @param {Row} val - Defines the value\n * @param {IGrid} grid - Defines the grid\n * @returns {number} Returns the collapsed row count\n */\nexport function getCollapsedRowsCount(val, grid) {\n count = 0;\n var gSummary = 'gSummary';\n var total = 'count';\n var gLen = grid.groupSettings.columns.length;\n var records = 'records';\n var items = 'items';\n var value = val[\"\" + gSummary];\n var dataRowCnt = 0;\n var agrCnt = 'aggregatesCount';\n if (value === val.data[\"\" + total]) {\n if (grid.groupSettings.columns.length && !isNullOrUndefined(val[\"\" + agrCnt]) && val[\"\" + agrCnt]) {\n if (grid.groupSettings.columns.length !== 1) {\n count += (val.indent !== 0 && (value) < 2) ? (val[\"\" + gSummary] * ((gLen - val.indent) + (gLen - val.indent) * val[\"\" + agrCnt])) :\n (val[\"\" + gSummary] * ((gLen - val.indent) + (gLen - val.indent - 1) * val[\"\" + agrCnt])) + val[\"\" + agrCnt];\n }\n else if (grid.groupSettings.columns.length === 1) {\n count += (val[\"\" + gSummary] * (gLen - val.indent)) + val[\"\" + agrCnt];\n }\n }\n else if (grid.groupSettings.columns.length) {\n if (grid.groupSettings.columns.length !== 1) {\n count += val[\"\" + gSummary] * (grid.groupSettings.columns.length - val.indent);\n }\n else {\n count += val[\"\" + gSummary];\n }\n }\n return count;\n }\n else {\n for (var i = 0, len = val.data[\"\" + items].length; i < len; i++) {\n var gLevel = val.data[\"\" + items][parseInt(i.toString(), 10)];\n count += gLevel[\"\" + items].length + ((gLen !== grid.columns.length) &&\n !isNullOrUndefined(gLevel[\"\" + items][\"\" + records]) ? gLevel[\"\" + items][\"\" + records].length : 0);\n dataRowCnt += (!isNullOrUndefined(gLevel[\"\" + items][\"\" + records]) && !isNullOrUndefined(val[\"\" + agrCnt])) ? gLevel[\"\" + items][\"\" + records].length :\n gLevel[\"\" + items].length;\n if (gLevel[\"\" + items].GroupGuid && gLevel[\"\" + items].childLevels !== 0) {\n recursive(gLevel);\n }\n }\n count += val.data[\"\" + items].length;\n if (!isNullOrUndefined(val[\"\" + agrCnt])) {\n if (val[\"\" + agrCnt] && count && dataRowCnt !== 0) {\n count += ((count - dataRowCnt) * val[\"\" + agrCnt]) + val[\"\" + agrCnt];\n }\n }\n }\n return count;\n}\n/**\n * @param {Object[]} row - Defines the row\n * @returns {void}\n * @hidden\n */\nexport function recursive(row) {\n var items = 'items';\n var rCount = 'count';\n for (var j = 0, length_1 = row[\"\" + items].length; j < length_1; j++) {\n var nLevel = row[\"\" + items][parseInt(j.toString(), 10)];\n count += nLevel[\"\" + rCount];\n if (nLevel[\"\" + items].childLevels !== 0) {\n recursive(nLevel);\n }\n }\n}\n/**\n * @param {Object[]} collection - Defines the array\n * @param {Object} predicate - Defines the predicate\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function iterateArrayOrObject(collection, predicate) {\n var result = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n var pred = predicate(collection[parseInt(i.toString(), 10)], i);\n if (!isNullOrUndefined(pred)) {\n result.push(pred);\n }\n }\n return result;\n}\n/**\n * @param {Object[]} array - Defines the array\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function iterateExtend(array) {\n var obj = [];\n for (var i = 0; i < array.length; i++) {\n obj.push(baseExtend({}, getActualProperties(array[parseInt(i.toString(), 10)]), {}, true));\n }\n return obj;\n}\n/**\n * @param {string | Function} template - Defines the template\n * @returns {Function} Returns the function\n * @hidden\n */\nexport function templateCompiler(template) {\n if (template) {\n try {\n var validSelector = template[0] !== '<';\n if (typeof template === 'function') {\n return baseTemplateComplier(template);\n }\n else if (validSelector && document.querySelectorAll(template).length) {\n return baseTemplateComplier(document.querySelector(template).innerHTML.trim());\n }\n else {\n return baseTemplateComplier(template);\n }\n }\n catch (e) {\n return baseTemplateComplier(template);\n }\n }\n return undefined;\n}\n/**\n * @param {Element} node - Defines the column\n * @param {Object} customAttributes - Defines the index\n * @returns {void}\n * @hidden\n */\nexport function setStyleAndAttributes(node, customAttributes) {\n var copyAttr = {};\n var literals = ['style', 'class'];\n //Dont touch the original object - make a copy\n baseExtend(copyAttr, customAttributes, {});\n if ('style' in copyAttr) {\n setStyleAttribute(node, copyAttr[literals[0]]);\n delete copyAttr[literals[0]];\n }\n if ('class' in copyAttr) {\n addClass([node], copyAttr[literals[1]]);\n delete copyAttr[literals[1]];\n }\n attributes(node, copyAttr);\n}\n/**\n * @param {Object} copied - Defines the column\n * @param {Object} first - Defines the inndex\n * @param {Object} second - Defines the second object\n * @param {string[]} exclude - Defines the exclude\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function extend(copied, first, second, exclude) {\n var moved = baseExtend(copied, first, second);\n var values = Object.keys(moved);\n for (var i = 0; i < values.length; i++) {\n if (exclude && exclude.indexOf(values[parseInt(i.toString(), 10)]) !== -1) {\n delete moved[values[parseInt(i.toString(), 10)]];\n }\n }\n return moved;\n}\n/**\n * @param {Column[]} columnModel - Defines the column\n * @param {number} ind - Defines the inndex\n * @returns {number} - Returns the columnindex\n * @hidden\n */\nexport function setColumnIndex(columnModel, ind) {\n if (ind === void 0) { ind = 0; }\n for (var i = 0, len = columnModel.length; i < len; i++) {\n if (columnModel[parseInt(i.toString(), 10)].columns) {\n columnModel[parseInt(i.toString(), 10)].index = isNullOrUndefined(columnModel[parseInt(i.toString(), 10)].index) ? ind\n : columnModel[parseInt(i.toString(), 10)].index;\n ind++;\n ind = setColumnIndex(columnModel[parseInt(i.toString(), 10)].columns, ind);\n }\n else {\n columnModel[parseInt(i.toString(), 10)].index = isNullOrUndefined(columnModel[parseInt(i.toString(), 10)].index) ? ind\n : columnModel[parseInt(i.toString(), 10)].index;\n ind++;\n }\n }\n return ind;\n}\n/**\n * @param {Column[] | string[] | ColumnModel[]} columns - Defines the column\n * @param {boolean} autoWidth - Defines the autowidth\n * @param {IGrid} gObj - Defines the class name\n * @returns {Column} - Returns the columns\n * @hidden\n */\nexport function prepareColumns(columns, autoWidth, gObj) {\n for (var c = 0, len = columns.length; c < len; c++) {\n var column = void 0;\n if (typeof columns[parseInt(c.toString(), 10)] === 'string') {\n column = new Column({ field: columns[parseInt(c.toString(), 10)] }, gObj);\n }\n else if (!(columns[parseInt(c.toString(), 10)] instanceof Column) || columns[parseInt(c.toString(), 10)].columns) {\n if (!columns[parseInt(c.toString(), 10)].columns) {\n column = new Column(columns[parseInt(c.toString(), 10)], gObj);\n }\n else {\n columns[parseInt(c.toString(), 10)].columns = prepareColumns(columns[parseInt(c.toString(), 10)].columns, null, gObj);\n column = new Column(columns[parseInt(c.toString(), 10)], gObj);\n }\n }\n else {\n column = columns[parseInt(c.toString(), 10)];\n }\n if (column.type && column.type.toLowerCase() === 'checkbox') {\n column.allowReordering = false;\n }\n column.headerText = isNullOrUndefined(column.headerText) ? column.foreignKeyValue || column.field || '' : column.headerText;\n column.foreignKeyField = column.foreignKeyField || column.field;\n column.valueAccessor = (typeof column.valueAccessor === 'string' ? getValue(column.valueAccessor, window)\n : column.valueAccessor) || valueAccessor;\n column.width = autoWidth && isNullOrUndefined(column.width) ? 200 : column.width;\n if (isNullOrUndefined(column.visible)) {\n column.visible = true;\n }\n columns[parseInt(c.toString(), 10)] = column;\n }\n return columns;\n}\n/**\n * @param {HTMLElement} popUp - Defines the popup element\n * @param {MouseEvent | TouchEvent} e - Defines the moouse event\n * @param {string} className - Defines the class name\n * @returns {void}\n * @hidden\n */\nexport function setCssInGridPopUp(popUp, e, className) {\n var popUpSpan = popUp.querySelector('span');\n var position = popUp.parentElement.getBoundingClientRect();\n var targetPosition = e.target.getBoundingClientRect();\n popUpSpan.className = className;\n popUp.style.display = '';\n var isBottomTail = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY) > popUp.offsetHeight + 10;\n popUp.style.top = targetPosition.top - position.top +\n (isBottomTail ? -(popUp.offsetHeight + 10) : popUp.offsetHeight + 10) + 'px'; //10px for tail element\n popUp.style.left = getPopupLeftPosition(popUp, e, targetPosition, position.left) + 'px';\n if (isBottomTail) {\n popUp.querySelector('.e-downtail').style.display = '';\n popUp.querySelector('.e-uptail').style.display = 'none';\n }\n else {\n popUp.querySelector('.e-downtail').style.display = 'none';\n popUp.querySelector('.e-uptail').style.display = '';\n }\n}\n/**\n * @param {HTMLElement} popup - Defines the popup element\n * @param {MouseEvent | TouchEvent} e - Defines the mouse event\n * @param {Object} targetPosition - Defines the target position\n * @param {number} targetPosition.top - Defines the top position\n * @param {number} targetPosition.left - Defines the left position\n * @param {number} targetPosition.right - Defines the right position\n * @param {number} left - Defines the left position\n * @returns {number} Returns the popup left position\n * @hidden\n */\nfunction getPopupLeftPosition(popup, e, targetPosition, left) {\n var width = popup.offsetWidth / 2;\n var x = getPosition(e).x;\n if (x - targetPosition.left < width) {\n return targetPosition.left - left;\n }\n else if (targetPosition.right - x < width) {\n return targetPosition.right - left - width * 2;\n }\n else {\n return x - left - width;\n }\n}\n/**\n * @param {Object} obj - Defines the object\n * @returns {Object} Returns the Properties\n * @hidden\n */\nexport function getActualProperties(obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {string} selector - Defines the string selector\n * @param {boolean} isID - Defines the isID\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function parentsUntil(elem, selector, isID) {\n var parent = elem;\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n break;\n }\n parent = parent.parentElement;\n }\n return parent;\n}\n/**\n * @param {Element} element - Defines the element\n * @param {Element} elements - Defines the element\n * @returns {number} Returns the element index\n * @hidden\n */\nexport function getElementIndex(element, elements) {\n var index = -1;\n for (var i = 0, len = elements.length; i < len; i++) {\n if (elements[parseInt(i.toString(), 10)].isEqualNode(element)) {\n index = i;\n break;\n }\n }\n return index;\n}\n/**\n * @param {Object} value - Defines the value\n * @param {Object} collection - defines the collection\n * @returns {number} Returns the array\n * @hidden\n */\nexport function inArray(value, collection) {\n for (var i = 0, len = collection.length; i < len; i++) {\n if (collection[parseInt(i.toString(), 10)] === value) {\n return i;\n }\n }\n return -1;\n}\n/**\n * @param {Object} collection - Defines the collection\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getActualPropFromColl(collection) {\n var coll = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n // eslint-disable-next-line no-prototype-builtins\n if (collection[parseInt(i.toString(), 10)].hasOwnProperty('properties')) {\n coll.push(collection[parseInt(i.toString(), 10)].properties);\n }\n else {\n coll.push(collection[parseInt(i.toString(), 10)]);\n }\n }\n return coll;\n}\n/**\n * @param {Element} target - Defines the target element\n * @param {string} selector - Defines the selector\n * @returns {void}\n * @hidden\n */\nexport function removeElement(target, selector) {\n var elements = [].slice.call(target.querySelectorAll(selector));\n for (var i = 0; i < elements.length; i++) {\n remove(elements[parseInt(i.toString(), 10)]);\n }\n}\n/**\n * @param {MouseEvent | TouchEvent} e Defines the mouse event\n * @returns {IPosition} Returns the position\n * @hidden\n */\nexport function getPosition(e) {\n var position = {};\n position.x = (isNullOrUndefined(e.clientX) ? e.changedTouches[0].clientX :\n e.clientX);\n position.y = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY);\n return position;\n}\nvar uid = 0;\n/**\n * @param {string} prefix - Defines the prefix string\n * @returns {string} Returns the uid\n * @hidden\n */\nexport function getUid(prefix) {\n return prefix + uid++;\n}\n/**\n * @param {Element | DocumentFragment} elem - Defines the element\n * @param {Element[] | NodeList} children - Defines the Element\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function appendChildren(elem, children) {\n for (var i = 0, len = children.length; i < len; i++) {\n if (len === children.length) {\n elem.appendChild(children[parseInt(i.toString(), 10)]);\n }\n else {\n elem.appendChild(children[0]);\n }\n }\n return elem;\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {string} selector - Defines the selector\n * @param {boolean} isID - Defines isID\n * @returns {Element} Return the element\n * @hidden\n */\nexport function parents(elem, selector, isID) {\n var parent = elem;\n var parents = [];\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\n/**\n * @param {AggregateType | string} type - Defines the type\n * @param {Object} data - Defines the data\n * @param {AggregateColumnModel} column - Defines the column\n * @param {Object} context - Defines the context\n * @returns {Object} Returns the calculated aggragate\n * @hidden\n */\nexport function calculateAggregate(type, data, column, context) {\n if (type === 'Custom') {\n var temp = column.customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n return temp ? temp.call(context, data, column) : '';\n }\n return (column.field in data || data instanceof Array) ? DataUtil.aggregates[type.toLowerCase()](data, column.field) : null;\n}\n/** @hidden */\nvar scrollWidth = null;\n/** @hidden\n * @returns {number} - Returns the scrollbarwidth\n */\nexport function getScrollBarWidth() {\n if (scrollWidth !== null) {\n return scrollWidth;\n }\n var divNode = document.createElement('div');\n var value = 0;\n divNode.style.cssText = 'width:100px;height: 100px;overflow: scroll;position: absolute;top: -9999px;';\n document.body.appendChild(divNode);\n value = (divNode.offsetWidth - divNode.clientWidth) | 0;\n document.body.removeChild(divNode);\n return scrollWidth = value;\n}\n/** @hidden */\nvar rowHeight;\n/**\n * @param {HTMLElement} element - Defines the element\n * @returns {number} Returns the roww height\n * @hidden\n */\nexport function getRowHeight(element) {\n if (rowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: literals.table, styles: 'visibility: hidden', attrs: { role: 'grid' } });\n table.innerHTML = 'A';\n element.appendChild(table);\n var rect = table.querySelector('td').getBoundingClientRect();\n element.removeChild(table);\n rowHeight = Math.ceil(rect.height);\n return rowHeight;\n}\n/** @hidden */\nvar actualRowHeight;\n/**\n * @param {HTMLElement} element - Defines the HTMl element\n * @returns {number} Returns the row height\n * @hidden\n */\nexport function getActualRowHeight(element) {\n if (actualRowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: literals.table, styles: 'visibility: hidden', attrs: { role: 'grid' } });\n table.innerHTML = 'A';\n element.appendChild(table);\n var rect = table.querySelector('tr').getBoundingClientRect();\n element.removeChild(table);\n return rect.height;\n}\n/**\n * @param {string} field - Defines the field\n * @returns {boolean} - Returns is complex field\n * @hidden\n */\nexport function isComplexField(field) {\n return field.split('.').length > 1;\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the get complex field ID\n * @hidden\n */\nexport function getComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/\\./g, '___');\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the parsed column field id\n * @hidden\n */\nexport function getParsedFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/[^a-zA-Z0-9_.]/g, '\\\\$&');\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the set complex field ID\n * @hidden\n */\nexport function setComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/___/g, '.');\n}\n/**\n * @param {Column} col - Defines the column\n * @param {string} type - Defines the type\n * @param {Element} elem - Defines th element\n * @returns {boolean} Returns is Editable\n * @hidden\n */\nexport function isEditable(col, type, elem) {\n var row = parentsUntil(elem, literals.row);\n var isOldRow = !row ? true : row && !row.classList.contains('e-insertedrow');\n if (type === 'beginEdit' && isOldRow) {\n if (col.isIdentity || col.isPrimaryKey || !col.allowEditing) {\n return false;\n }\n return true;\n }\n else if (type === 'add' && col.isIdentity) {\n return false;\n }\n else {\n if (isOldRow && !col.allowEditing && !col.isIdentity && !col.isPrimaryKey) {\n return false;\n }\n return true;\n }\n}\n/**\n * @param {IGrid} inst - Defines the IGrid\n * @returns {boolean} Returns is action prevent in boolean\n * @hidden\n */\nexport function isActionPrevent(inst) {\n var dlg = select('#' + inst.element.id + 'EditConfirm', inst.element);\n return inst.editSettings.mode === 'Batch' &&\n (selectAll('.e-updatedtd', inst.element).length) && inst.editSettings.showConfirmDialog &&\n (dlg ? dlg.classList.contains('e-popup-close') : true);\n}\n/**\n * @param {any} elem - Defines the element\n * @param {boolean} action - Defines the boolean for action\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function wrap(elem, action) {\n var clName = 'e-wrap';\n elem = elem instanceof Array ? elem : [elem];\n for (var i = 0; i < elem.length; i++) {\n if (action) {\n elem[parseInt(i.toString(), 10)].classList.add(clName);\n }\n else {\n elem[parseInt(i.toString(), 10)].classList.remove(clName);\n }\n }\n}\n/**\n * @param {ServiceLocator} serviceLocator - Defines the service locator\n * @param {Column} column - Defines the column\n * @returns {void}\n * @hidden\n */\nexport function setFormatter(serviceLocator, column) {\n var fmtr = serviceLocator.getService('valueFormatter');\n var format = 'format';\n var args;\n if (column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly') {\n args = { type: column.type === 'dateonly' ? 'date' : column.type, skeleton: column.format };\n if ((typeof (column.format) === 'string') && column.format !== 'yMd') {\n args[\"\" + format] = column.format;\n }\n }\n switch (column.type) {\n case 'date':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'dateonly':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'datetime':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'number':\n column.setFormatter(fmtr.getFormatFunction({ format: column.format }));\n column.setParser(fmtr.getParserFunction({ format: column.format }));\n break;\n }\n}\n/**\n * @param {Element} cells - Defines the cell element\n * @param {boolean} add - Defines the add\n * @param {string} args - Defines the args\n * @returns {void}\n * @hidden\n */\nexport function addRemoveActiveClasses(cells, add) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n for (var i = 0, len = cells.length; i < len; i++) {\n if (add) {\n classList(cells[parseInt(i.toString(), 10)], args.slice(), []);\n cells[parseInt(i.toString(), 10)].setAttribute('aria-selected', 'true');\n }\n else {\n classList(cells[parseInt(i.toString(), 10)], [], args.slice());\n cells[parseInt(i.toString(), 10)].removeAttribute('aria-selected');\n }\n }\n}\n/**\n * @param {string} result - Defines th string\n * @returns {string} Returns the distinct staing values\n * @hidden\n */\nexport function distinctStringValues(result) {\n var temp = {};\n var res = [];\n for (var i = 0; i < result.length; i++) {\n if (!(result[parseInt(i.toString(), 10)] in temp)) {\n res.push(result[parseInt(i.toString(), 10)].toString());\n temp[result[parseInt(i.toString(), 10)]] = 1;\n }\n }\n return res;\n}\n/**\n * @param {Element} target - Defines the target\n * @param {Dialog} dialogObj - Defines the dialog\n * @returns {void}\n * @hidden\n */\nexport function getFilterMenuPostion(target, dialogObj) {\n var elementVisible = dialogObj.element.style.display;\n dialogObj.element.style.display = 'block';\n var dlgWidth = dialogObj.width;\n var newpos = calculateRelativeBasedPosition(target, dialogObj.element);\n dialogObj.element.style.display = elementVisible;\n dialogObj.element.style.top = (newpos.top + target.getBoundingClientRect().height) - 5 + 'px';\n var leftPos = ((newpos.left - dlgWidth) + target.clientWidth);\n if (leftPos < 1) {\n dialogObj.element.style.left = (dlgWidth + leftPos) - 16 + 'px'; // right calculation\n }\n else {\n dialogObj.element.style.left = leftPos + -4 + 'px';\n }\n}\n/**\n * @param {Object} args - Defines the args\n * @param {Popup} args.popup - Defines the args for popup\n * @param {Dialog} dialogObj - Defines the dialog obj\n * @returns {void}\n * @hidden\n */\nexport function getZIndexCalcualtion(args, dialogObj) {\n args.popup.element.style.zIndex = (dialogObj.zIndex + 1).toString();\n}\n/**\n * @param {Element} elem - Defines the element\n * @returns {void}\n * @hidden\n */\nexport function toogleCheckbox(elem) {\n var span = elem.querySelector('.e-frame');\n var input = span.previousSibling;\n if (span.classList.contains('e-check')) {\n input.checked = false;\n classList(span, ['e-uncheck'], ['e-check']);\n }\n else {\n input.checked = true;\n classList(span, ['e-check'], ['e-uncheck']);\n }\n}\n/**\n * @param {HTMLInputElement} elem - Defines the element\n * @param {boolean} checked - Defines is checked\n * @returns {void}\n * @hidden\n */\nexport function setChecked(elem, checked) {\n elem.checked = checked;\n}\n/**\n * @param {string} uid - Defines the string\n * @param {Element} elem - Defines the Element\n * @param {string} className - Defines the classname\n * @returns {Element} Returns the box wrap\n * @hidden\n */\nexport function createCboxWithWrap(uid, elem, className) {\n var div = createElement('div', { className: className });\n div.appendChild(elem);\n div.setAttribute('uid', uid);\n return div;\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {boolean} checked - Defines is checked\n * @returns {void}\n * @hidden\n */\nexport function removeAddCboxClasses(elem, checked) {\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n if (checked) {\n elem.classList.add('e-check');\n }\n else {\n elem.classList.add('e-uncheck');\n }\n}\n/**\n * Refresh the Row model's foreign data.\n *\n * @param {IRow} row - Grid Row model object.\n * @param {Column[]} columns - Foreign columns array.\n * @param {Object} data - Updated Row data.\n * @returns {void}\n * @hidden\n */\nexport function refreshForeignData(row, columns, data) {\n for (var i = 0; i < columns.length; i++) {\n setValue(columns[parseInt(i.toString(), 10)].field, getForeignData(columns[parseInt(i.toString(), 10)], data), row.foreignKeyData);\n }\n var cells = row.cells;\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].isForeignKey) {\n setValue('foreignKeyData', getValue(cells[parseInt(i.toString(), 10)].column.field, row.foreignKeyData), cells[parseInt(i.toString(), 10)]);\n }\n }\n}\n/**\n * Get the foreign data for the corresponding cell value.\n *\n * @param {Column} column - Foreign Key column\n * @param {Object} data - Row data.\n * @param {string | number} lValue - cell value.\n * @param {Object} foreignKeyData - foreign data source.\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getForeignData(column, data, lValue, foreignKeyData) {\n var fField = column.foreignKeyField;\n var key = (!isNullOrUndefined(lValue) ? lValue : valueAccessor(column.field, data, column));\n key = isNullOrUndefined(key) ? '' : key;\n var query = new Query();\n var fdata = foreignKeyData || ((column.dataSource instanceof DataManager) && column.dataSource.dataSource.json.length ?\n column.dataSource.dataSource.json : column.columnData);\n if (key.getDay) {\n query.where(getDatePredicate({ field: fField, operator: 'equal', value: key, matchCase: false }));\n }\n else {\n query.where(fField, '==', key, false);\n }\n return new DataManager(fdata).executeLocal(query);\n}\n/**\n * To use to get the column's object by the foreign key value.\n *\n * @param {string} foreignKeyValue - Defines ForeignKeyValue.\n * @param {Column[]} columns - Array of column object.\n * @returns {Column} Returns the element\n * @hidden\n */\nexport function getColumnByForeignKeyValue(foreignKeyValue, columns) {\n var column;\n return columns.some(function (col) {\n column = col;\n return col.foreignKeyValue === foreignKeyValue;\n }) && column;\n}\n/**\n * @param {number} value - Defines the date or month value\n * @returns {string} Returns string\n * @hidden\n */\nexport function padZero(value) {\n if (value < 10) {\n return '0' + value;\n }\n return String(value);\n}\n/**\n * @param {PredicateModel} filterObject - Defines the filterObject\n * @param {string} type - Defines the type\n * @param {boolean} isExecuteLocal - Defines whether the data actions performed in client and used for dateonly type field\n * @returns {Predicate} Returns the Predicate\n * @hidden\n */\nexport function getDatePredicate(filterObject, type, isExecuteLocal) {\n var datePredicate;\n var prevDate;\n var nextDate;\n var prevObj = baseExtend({}, getActualProperties(filterObject));\n var nextObj = baseExtend({}, getActualProperties(filterObject));\n if (isNullOrUndefined(filterObject.value) || filterObject.value === '') {\n datePredicate = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n return datePredicate;\n }\n var value = new Date(filterObject.value);\n if (type === 'dateonly' && !isExecuteLocal) {\n if (typeof (prevObj.value) === 'string') {\n prevObj.value = new Date(prevObj.value);\n }\n var dateOnlyString = prevObj.value.getFullYear() + '-' + padZero(prevObj.value.getMonth() + 1) + '-' + padZero(prevObj.value.getDate());\n var predicates = new Predicate(prevObj.field, prevObj.operator, dateOnlyString, false);\n datePredicate = predicates;\n }\n else {\n if (filterObject.operator === 'equal' || filterObject.operator === 'notequal') {\n if (type === 'datetime') {\n prevDate = new Date(value.setSeconds(value.getSeconds() - 1));\n nextDate = new Date(value.setSeconds(value.getSeconds() + 2));\n filterObject.value = new Date(value.setSeconds(nextDate.getSeconds() - 1));\n }\n else {\n prevDate = new Date(value.setHours(0) - 1);\n nextDate = new Date(value.setHours(24));\n }\n prevObj.value = prevDate;\n nextObj.value = nextDate;\n if (filterObject.operator === 'equal') {\n prevObj.operator = 'greaterthan';\n nextObj.operator = 'lessthan';\n }\n else if (filterObject.operator === 'notequal') {\n prevObj.operator = 'lessthanorequal';\n nextObj.operator = 'greaterthanorequal';\n }\n var predicateSt = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n var predicateEnd = new Predicate(nextObj.field, nextObj.operator, nextObj.value, false);\n datePredicate = filterObject.operator === 'equal' ? predicateSt.and(predicateEnd) : predicateSt.or(predicateEnd);\n }\n else {\n if (type === 'date' && (filterObject.operator === 'lessthanorequal' || filterObject.operator === 'greaterthan')) {\n prevObj.value = new Date(value.setHours(24) - 1);\n }\n if (typeof (prevObj.value) === 'string') {\n prevObj.value = new Date(prevObj.value);\n }\n var predicates = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n datePredicate = predicates;\n }\n }\n if (filterObject.setProperties) {\n filterObject.setProperties({ ejpredicate: datePredicate }, true);\n }\n else {\n filterObject.ejpredicate = datePredicate;\n }\n return datePredicate;\n}\n/**\n * @param {Element} ele - Defines the element\n * @param {number} frzCols - Defines the frozen columns\n * @param {IGrid} gObj - Defines the IGrid\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function renderMovable(ele, frzCols, gObj) {\n frzCols = frzCols && gObj && gObj.isRowDragable() ? frzCols + 1 : frzCols;\n var mEle = ele.cloneNode(true);\n for (var i = 0; i < frzCols; i++) {\n mEle.removeChild(mEle.children[0]);\n }\n for (var i = frzCols, len = ele.childElementCount; i < len; i++) {\n ele.removeChild(ele.children[ele.childElementCount - 1]);\n }\n return mEle;\n}\n/**\n * @param {IGrid} grid - Defines the IGrid\n * @returns {boolean} Returns true if group adaptive is true\n * @hidden\n */\nexport function isGroupAdaptive(grid) {\n return grid.enableVirtualization && grid.groupSettings.columns.length > 0 && grid.isVirtualAdaptive &&\n !grid.groupSettings.enableLazyLoading;\n}\n/**\n * @param {string} field - Defines the Field\n * @param {Object} object - Defines the objec\n * @returns {any} Returns the object\n * @hidden\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getObject(field, object) {\n if (field === void 0) { field = ''; }\n if (field) {\n var value = object;\n var splits = field.split('.');\n for (var i = 0; i < splits.length && !isNullOrUndefined(value); i++) {\n value = value[splits[parseInt(i.toString(), 10)]];\n if (isUndefined(value)) {\n var newCase = splits[parseInt(i.toString(), 10)].charAt(0).toUpperCase()\n + splits[parseInt(i.toString(), 10)].slice(1);\n value = object[\"\" + newCase] || object[(\"\" + newCase).charAt(0).toLowerCase() + (\"\" + newCase).slice(1)];\n }\n }\n return value;\n }\n}\n/**\n * @param {string | Object} format - defines the format\n * @param {string} colType - Defines the coltype\n * @returns {string} Returns the custom Data format\n * @hidden\n */\nexport function getCustomDateFormat(format, colType) {\n var intl = new Internationalization();\n var formatvalue;\n var formatter = 'format';\n var type = 'type';\n if (colType === 'date') {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[\"\" + type] ? format[\"\" + type] : 'date', format: format[\"\" + formatter] }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n else {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[\"\" + type] ? format[\"\" + type] : 'dateTime', format: format[\"\" + formatter] }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n return formatvalue;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {HierarchyGridPrintMode} hierarchyPrintMode - Defines the hierarchyPrintMode\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getExpandedState(gObj, hierarchyPrintMode) {\n var rows = gObj.getRowsObject();\n var obj = {};\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.isExpand && !row.isDetailRow) {\n var index = gObj.allowPaging && gObj.printMode === 'AllPages' ? row.index +\n (gObj.pageSettings.currentPage * gObj.pageSettings.pageSize) - gObj.pageSettings.pageSize : row.index;\n obj[parseInt(index.toString(), 10)] = {};\n obj[parseInt(index.toString(), 10)].isExpand = true;\n obj[parseInt(index.toString(), 10)].gridModel = getPrintGridModel(row.childGrid, hierarchyPrintMode);\n obj[parseInt(index.toString(), 10)].gridModel.query = gObj.childGrid.query;\n }\n }\n return obj;\n}\n/**\n * @param {IGrid} gObj - Defines the grid objct\n * @param {HierarchyGridPrintMode} hierarchyPrintMode - Defines the hierarchyPrintMode\n * @returns {IGrid} Returns the IGrid\n * @hidden\n */\nexport function getPrintGridModel(gObj, hierarchyPrintMode) {\n if (hierarchyPrintMode === void 0) { hierarchyPrintMode = 'Expanded'; }\n var printGridModel = {};\n if (!gObj) {\n return printGridModel;\n }\n var isFrozen = gObj.isFrozenGrid() && !gObj.getFrozenColumns();\n for (var _i = 0, _a = Print.printGridProp; _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'columns') {\n printGridModel[\"\" + key] = getActualPropFromColl(isFrozen ? gObj.getColumns() : gObj[\"\" + key]);\n }\n else if (key === 'allowPaging') {\n printGridModel[\"\" + key] = gObj.printMode === 'CurrentPage';\n }\n else {\n printGridModel[\"\" + key] = getActualProperties(gObj[\"\" + key]);\n }\n }\n printGridModel['enableHover'] = false;\n if (gObj.childGrid && hierarchyPrintMode !== 'None') {\n printGridModel.expandedRows = getExpandedState(gObj, hierarchyPrintMode);\n }\n return printGridModel;\n}\n/**\n * @param {Object} copied - Defines the copied object\n * @param {Object} first - Defines the first object\n * @param {Object} second - Defines the second object\n * @param {boolean} deep - Defines the deep\n * @returns {Object} Returns the extended object\n * @hidden\n */\nexport function extendObjWithFn(copied, first, second, deep) {\n var res = copied || {};\n var len = arguments.length;\n if (deep) {\n len = len - 1;\n }\n for (var i = 1; i < len; i++) {\n // eslint-disable-next-line prefer-rest-params\n if (!arguments[parseInt(i.toString(), 10)]) {\n continue;\n }\n // eslint-disable-next-line prefer-rest-params\n var obj1 = arguments[parseInt(i.toString(), 10)];\n var keys = Object.keys(Object.getPrototypeOf(obj1)).length ?\n Object.keys(obj1).concat(getPrototypesOfObj(obj1)) : Object.keys(obj1);\n for (var i_1 = 0; i_1 < keys.length; i_1++) {\n var source = res[keys[parseInt(i_1.toString(), 10)]];\n var cpy = obj1[keys[parseInt(i_1.toString(), 10)]];\n var cln = void 0;\n if (deep && (isObject(cpy) || Array.isArray(cpy))) {\n if (isObject(cpy)) {\n cln = source ? source : {};\n res[keys[parseInt(i_1.toString(), 10)]] = baseExtend({}, cln, cpy, deep);\n }\n else {\n cln = source ? source : [];\n res[keys[parseInt(i_1.toString(), 10)]] = baseExtend([], cln, cpy, deep);\n }\n }\n else {\n res[keys[parseInt(i_1.toString(), 10)]] = cpy;\n }\n }\n }\n return res;\n}\n/**\n * @param {Object} obj - Defines the obj\n * @returns {string[]} Returns the string\n * @hidden\n */\nfunction getPrototypesOfObj(obj) {\n var keys = [];\n while (Object.getPrototypeOf(obj) && Object.keys(Object.getPrototypeOf(obj)).length) {\n keys = keys.concat(Object.keys(Object.getPrototypeOf(obj)));\n obj = Object.getPrototypeOf(obj);\n }\n return keys;\n}\n/**\n * @param {Column[]} column - Defines the Column\n * @returns {number} Returns the column Depth\n * @hidden\n */\nexport function measureColumnDepth(column) {\n var max = 0;\n for (var i = 0; i < column.length; i++) {\n var depth = checkDepth(column[parseInt(i.toString(), 10)], 0);\n if (max < depth) {\n max = depth;\n }\n }\n return max + 1;\n}\n/**\n * @param {Column} col - Defines the Column\n * @param {number} index - Defines the index\n * @returns {number} Returns the depth\n * @hidden\n */\nexport function checkDepth(col, index) {\n var max = index;\n var indices = [];\n if (col.columns) {\n index++;\n for (var i = 0; i < col.columns.length; i++) {\n indices[parseInt(i.toString(), 10)] = checkDepth(col.columns[parseInt(i.toString(), 10)], index);\n }\n for (var j = 0; j < indices.length; j++) {\n if (max < indices[parseInt(j.toString(), 10)]) {\n max = indices[parseInt(j.toString(), 10)];\n }\n }\n index = max;\n }\n return index;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {PredicateModel[]} filteredCols - Defines the PredicateModel\n * @returns {void}\n * @hidden\n */\nexport function refreshFilteredColsUid(gObj, filteredCols) {\n for (var i = 0; i < filteredCols.length; i++) {\n filteredCols[parseInt(i.toString(), 10)].uid = filteredCols[parseInt(i.toString(), 10)].isForeignKey ?\n getColumnByForeignKeyValue(filteredCols[parseInt(i.toString(), 10)].field, gObj.getForeignKeyColumns()).uid\n : gObj.enableColumnVirtualization ? getColumnModelByFieldName(gObj, filteredCols[parseInt(i.toString(), 10)].field).uid\n : gObj.getColumnByField(filteredCols[parseInt(i.toString(), 10)].field).uid;\n }\n}\n/** @hidden */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Global;\n(function (Global) {\n // eslint-disable-next-line prefer-const\n Global.timer = null;\n})(Global || (Global = {}));\n/**\n * @param {Element} element - Defines the element\n * @returns {Object} Returns the transform values\n * @hidden\n */\nexport function getTransformValues(element) {\n var style = document.defaultView.getComputedStyle(element, null);\n var transformV = style.getPropertyValue('transform');\n var replacedTv = transformV.replace(/,/g, '');\n var translateX = parseFloat((replacedTv).split(' ')[4]);\n var translateY = parseFloat((replacedTv).split(' ')[5]);\n return { width: translateX, height: translateY };\n}\n/**\n * @param {Element} rootElement - Defines the root Element\n * @param {Element} element - Defines the element\n * @returns {void}\n * @hidden\n */\nexport function applyBiggerTheme(rootElement, element) {\n if (rootElement.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n}\n/**\n * @param {HTMLElement} mTD - Defines the movable TD\n * @param {HTMLElement} fTD - Defines the Frozen TD\n * @returns {void}\n * @hidden\n */\nexport function alignFrozenEditForm(mTD, fTD) {\n if (mTD && fTD) {\n var mHeight = closest(mTD, '.' + literals.row).getBoundingClientRect().height;\n var fHeight = closest(fTD, '.' + literals.row).getBoundingClientRect().height;\n if (mHeight > fHeight) {\n fTD.style.height = mHeight + 'px';\n }\n else {\n mTD.style.height = fHeight + 'px';\n }\n }\n}\n/**\n * @param {Element} row - Defines row element\n * @param {IGrid} gridObj - Defines grid object\n * @returns {boolean} Returns isRowEnteredInGrid\n * @hidden\n */\nexport function ensureLastRow(row, gridObj) {\n var cntOffset = gridObj.getContent().firstElementChild.offsetHeight;\n return row && row.getBoundingClientRect().top > cntOffset;\n}\n/**\n * @param {Element} row - Defines row element\n * @param {number} rowTop - Defines row top number\n * @returns {boolean} Returns first row is true\n * @hidden\n */\nexport function ensureFirstRow(row, rowTop) {\n return row && row.getBoundingClientRect().top < rowTop;\n}\n/**\n * @param {number} index - Defines index\n * @param {IGrid} gObj - Defines grid object\n * @returns {boolean} Returns isRowEnteredInGrid\n * @hidden\n */\nexport function isRowEnteredInGrid(index, gObj) {\n var rowHeight = gObj.getRowHeight();\n var startIndex = gObj.getContent().firstElementChild.scrollTop / rowHeight;\n var endIndex = startIndex + (gObj.getContent().firstElementChild.offsetHeight / rowHeight);\n return index < endIndex && index > startIndex;\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Object} data - Defines the query\n * @returns {number} Returns the edited data index\n * @hidden\n */\nexport function getEditedDataIndex(gObj, data) {\n var keyField = gObj.getPrimaryKeyFieldNames()[0];\n var dataIndex;\n gObj.getCurrentViewRecords().filter(function (e, index) {\n if (keyField.includes('.')) {\n var currentValue = getObject(keyField, e);\n var originalValue = getObject(keyField, data);\n if (currentValue === originalValue) {\n dataIndex = index;\n }\n }\n else {\n if (e[\"\" + keyField] === data[\"\" + keyField]) {\n dataIndex = index;\n }\n }\n });\n return dataIndex;\n}\n/**\n * @param {Object} args - Defines the argument\n * @param {Query} query - Defines the query\n * @returns {FilterStateObj} Returns the filter state object\n * @hidden\n */\nexport function eventPromise(args, query) {\n var state = getStateEventArgument(query);\n var def = new Deferred();\n state.dataSource = def.resolve;\n state.action = args;\n return { state: state, deffered: def };\n}\n/**\n * @param {Query} query - Defines the query\n * @returns {Object} Returns the state event argument\n * @hidden\n */\nexport function getStateEventArgument(query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return data;\n}\n/**\n * @param {IGrid} gObj - Defines the Igrid\n * @returns {boolean} Returns the ispercentageWidth\n * @hidden\n */\nexport function ispercentageWidth(gObj) {\n var columns = gObj.getVisibleColumns();\n var percentageCol = 0;\n var undefinedWidthCol = 0;\n for (var i = 0; i < columns.length; i++) {\n if (isUndefined(columns[parseInt(i.toString(), 10)].width)) {\n undefinedWidthCol++;\n }\n else if (columns[parseInt(i.toString(), 10)].width.toString().indexOf('%') !== -1) {\n percentageCol++;\n }\n }\n return (gObj.width === 'auto' || typeof (gObj.width) === 'string' && gObj.width.indexOf('%') !== -1) &&\n !gObj.groupSettings.showGroupedColumn && gObj.groupSettings.columns.length\n && percentageCol && !undefinedWidthCol;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {Row[]} rows - Defines the row\n * @param {HTMLTableRowElement[]} rowElms - Row elements\n * @param {number} index - Row index\n * @param {number} startRowIndex - Start Row Index\n * @returns {void}\n * @hidden\n */\nexport function resetRowIndex(gObj, rows, rowElms, index, startRowIndex) {\n var startIndex = index ? index : 0;\n for (var i = startRowIndex ? startRowIndex : 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)] && rows[parseInt(i.toString(), 10)].isDataRow) {\n rows[parseInt(i.toString(), 10)].index = startIndex;\n rows[parseInt(i.toString(), 10)].isAltRow = gObj.enableAltRow ? startIndex % 2 !== 0 : false;\n rowElms[parseInt(i.toString(), 10)].setAttribute(literals.dataRowIndex, startIndex.toString());\n rowElms[parseInt(i.toString(), 10)].setAttribute(literals.ariaRowIndex, (startIndex + 1).toString());\n if (rows[parseInt(i.toString(), 10)].isAltRow) {\n rowElms[parseInt(i.toString(), 10)].classList.add('e-altrow');\n }\n else {\n rowElms[parseInt(i.toString(), 10)].classList.remove('e-altrow');\n }\n for (var j = 0; j < rowElms[parseInt(i.toString(), 10)].cells.length; j++) {\n rowElms[parseInt(i.toString(), 10)].cells[parseInt(j.toString(), 10)].setAttribute('index', startIndex.toString());\n }\n startIndex++;\n }\n }\n if (!rows.length) {\n gObj.renderModule.emptyRow(true);\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Object} changes - Defines the changes\n * @param {string} type - Defines the type\n * @param {string} keyField - Defines the keyfield\n * @returns {void}\n * @hidden\n */\nexport function compareChanges(gObj, changes, type, keyField) {\n var newArray = gObj.dataToBeUpdated[\"\" + type].concat(changes[\"\" + type]).reduce(function (r, o) {\n r[o[\"\" + keyField]] = r[o[\"\" + keyField]] === undefined ? o : Object.assign(r[o[\"\" + keyField]], o);\n return r;\n }, {});\n gObj.dataToBeUpdated[\"\" + type] = Object.keys(newArray).map(function (k) { return newArray[\"\" + k]; });\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @returns {void}\n * @hidden\n */\nexport function setRowElements(gObj) {\n if (gObj.isFrozenGrid()) {\n (gObj).contentModule.rowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-movableheader .e-row, .e-movablecontent .e-row'));\n var cls = gObj.getFrozenMode() === literals.leftRight ? '.e-frozen-left-header .e-row, .e-frozen-left-content .e-row'\n : '.e-frozenheader .e-row, .e-frozencontent .e-row';\n (gObj).contentModule.freezeRowElements =\n [].slice.call(gObj.element.querySelectorAll(cls));\n if (gObj.getFrozenMode() === literals.leftRight) {\n gObj.contentModule.frozenRightRowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-frozen-right-header .e-row, .e-frozen-right-content .e-row'));\n }\n }\n else {\n (gObj).contentModule.rowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-row:not(.e-addedrow)'));\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Cell} cells - Defines the callback function\n * @param {freezeTable} tableName - Defines the row\n * @returns {Cell[]} Returns the cell\n * @hidden\n */\nexport function splitFrozenRowObjectCells(gObj, cells, tableName) {\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n var right = gObj.getFrozenRightColumnsCount();\n var frozenMode = gObj.getFrozenMode();\n var drag = gObj.isRowDragable() ? 1 : 0;\n var rightIndex = frozenMode === 'Right' ? left + movable : left + movable + drag;\n var mvblIndex = frozenMode === 'Right' ? left : left + drag;\n var mvblEndIdx = frozenMode === 'Right' ? cells.length - right - drag\n : right ? cells.length - right : cells.length;\n if (tableName === literals.frozenLeft) {\n cells = cells.slice(0, left ? left + drag : cells.length);\n }\n else if (tableName === literals.frozenRight) {\n cells = cells.slice(rightIndex, cells.length);\n }\n else if (tableName === 'movable') {\n cells = cells.slice(mvblIndex, mvblEndIdx);\n }\n return cells;\n}\n/**\n * @param {IGrid} gObj - Defines the grid object.\n * @param {boolean} visibleOnly - Defines to return only visible columns.\n * @returns {{frozenLeft: Column[], movable: Column[], frozenRight: Column[]}} - Returns all frozenLeft, movable and frozenRight Columns as object.\n * @hidden\n */\nexport function getExactFrozenMovableColumn(gObj, visibleOnly) {\n var columnModel = gObj.getColumns();\n var movableColumns = [];\n var frozenLeftColumns = [];\n var frozenRightColumns = [];\n for (var i = 0; i < columnModel.length; i++) {\n if (isNullOrUndefined(visibleOnly) || !visibleOnly || visibleOnly === columnModel[parseInt(i.toString(), 10)].visible) {\n if (columnModel[parseInt(i.toString(), 10)].freeze === 'Left' || columnModel[parseInt(i.toString(), 10)].freezeTable === 'frozen-left') {\n frozenLeftColumns.push(columnModel[parseInt(i.toString(), 10)]);\n }\n else if (columnModel[parseInt(i.toString(), 10)].freeze === 'Right' || columnModel[parseInt(i.toString(), 10)].freezeTable === 'frozen-right') {\n frozenRightColumns.push(columnModel[parseInt(i.toString(), 10)]);\n }\n else {\n movableColumns.push(columnModel[parseInt(i.toString(), 10)]);\n }\n }\n }\n return { frozenLeft: frozenLeftColumns, movable: movableColumns, frozenRight: frozenRightColumns };\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function gridActionHandler(gObj, callBack, rows, force, rowObj) {\n if (rows[0].length || force) {\n if (rowObj) {\n callBack(literals.frozenLeft, rows[0], rowObj[0]);\n }\n else {\n callBack(literals.frozenLeft, rows[0]);\n }\n }\n if (gObj.isFrozenGrid() && (rows[1].length || force)) {\n if (rowObj) {\n callBack('movable', rows[1], rowObj[1]);\n }\n else {\n callBack('movable', rows[1]);\n }\n }\n if ((gObj.getFrozenMode() === literals.leftRight || gObj.getFrozenMode() === 'Right') && (rows[2].length || force)) {\n if (rowObj) {\n callBack(literals.frozenRight, rows[2], rowObj[2]);\n }\n else {\n callBack(literals.frozenRight, rows[2]);\n }\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid\n * @returns {Row} Returns the row\n * @hidden\n */\nexport function getGridRowObjects(gObj) {\n return [gObj.getFrozenMode() !== 'Right' ? gObj.getRowsObject() : [], gObj.getMovableRowsObject(), gObj.getFrozenRightRowsObject()];\n}\n/**\n * @param {IGrid} gObj - Defines the grid\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function getGridRowElements(gObj) {\n return [\n gObj.getFrozenMode() !== 'Right' ? gObj.getAllDataRows(true) : [],\n gObj.getAllMovableDataRows(true), gObj.getAllFrozenRightDataRows(true)\n ];\n}\n/**\n * @param {Element} row - Defines the row\n * @param {number} start - Defines the start index\n * @param {number} end - Defines the end index\n * @returns {void}\n * @hidden\n */\nexport function sliceElements(row, start, end) {\n var cells = row.children;\n var len = cells.length;\n var k = 0;\n for (var i = 0; i < len; i++, k++) {\n if (i >= start && i < end) {\n continue;\n }\n row.removeChild(row.children[parseInt(k.toString(), 10)]);\n k--;\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid Object\n * @param {Column} col - Defines the column\n * @param {number} rowIndex - Defines the rowindex\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function getCellsByTableName(gObj, col, rowIndex) {\n if (col.getFreezeTableName() === 'movable') {\n return [].slice.call(gObj.getMovableDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(literals.rowCell));\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\n return [].slice.call(gObj.getFrozenRightDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(literals.rowCell));\n }\n else {\n return [].slice.call(gObj.getDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(literals.rowCell));\n }\n}\n/**\n * @param {IGrid} gObj - Defines the column\n * @param {Column} col - Defines the index\n * @param {number} rowIndex - Defines the rules\n * @param {number} index - Defines the movable column rules\n * @returns {Element} Returns the Element\n * @hidden\n */\nexport function getCellByColAndRowIndex(gObj, col, rowIndex, index) {\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n index = col.getFreezeTableName() === 'movable' ? index - left : col.getFreezeTableName() === literals.frozenRight\n ? index - (left + movable) : index;\n return getCellsByTableName(gObj, col, rowIndex)[parseInt(index.toString(), 10)];\n}\n/**\n * @param {Column} col - Defines the column\n * @param {number} index - Defines the index\n * @param {Object} rules - Defines the rules\n * @param {Object} mRules - Defines the movable column rules\n * @param {Object} frRules - Defines the Frozen rules\n * @param {number} len - Defines the length\n * @param {boolean} isCustom - Defines custom form validation\n * @returns {void}\n * @hidden\n */\nexport function setValidationRuels(col, index, rules, mRules, frRules, len, isCustom) {\n if (isCustom) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else {\n if (col.getFreezeTableName() === literals.frozenLeft\n || (!index && col.getFreezeTableName() === literals.frozenRight) || len === 1) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === 'movable' || !col.getFreezeTableName()) {\n mRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\n frRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @returns {Element} Returns the Element\n * @hidden\n */\nexport function getMovableTbody(gObj) {\n var tbody;\n if (gObj.isFrozenGrid()) {\n tbody = gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top' ? gObj.getMovableHeaderTbody()\n : gObj.getMovableContentTbody();\n }\n return tbody;\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @returns {Element} Returns the Element\n * @hidden\n */\nexport function getFrozenRightTbody(gObj) {\n var tbody;\n if (gObj.getFrozenMode() === literals.leftRight) {\n tbody = gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top' ? gObj.getFrozenRightHeaderTbody()\n : gObj.getFrozenRightContentTbody();\n }\n return tbody;\n}\n/**\n * @param {Element} tbody - Table body\n * @param {Element} mTbody - Movanle table body\n * @param {Element} frTbody - Frozen right table body\n * @param {Element[]} tr - Table rows\n * @param {Element[]} mTr - Movable table rows\n * @param {Element[]} frTr - Frozen right table rows\n * @param {Function} callBack - Callback function\n * @returns {void}\n * @hidden\n */\nexport function setRowsInTbody(tbody, mTbody, frTbody, tr, mTr, frTr, callBack) {\n if (tbody && tr) {\n callBack(tbody, tr);\n }\n if (mTbody && mTr) {\n callBack(mTbody, mTr);\n }\n if (frTbody && frTr) {\n callBack(frTbody, frTr);\n }\n}\n/**\n * @param {string} numberFormat - Format\n * @param {string} type - Value type\n * @param {boolean} isExcel - Boolean property\n * @param {string} currencyCode - Specifies the currency code to be used for formatting.\n * @returns {string} returns formated value\n * @hidden\n */\nexport function getNumberFormat(numberFormat, type, isExcel, currencyCode) {\n var format;\n var intl = new Internationalization();\n if (type === 'number') {\n try {\n format = intl.getNumberPattern({ format: numberFormat, currency: currencyCode, useGrouping: true }, true);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n else if (type === 'date' || type === 'time' || type === 'datetime') {\n try {\n format = intl.getDatePattern({ skeleton: numberFormat, type: type }, isExcel);\n if (isNullOrUndefined(format)) {\n // eslint-disable-next-line\n throw 'error';\n }\n }\n catch (error) {\n try {\n format = intl.getDatePattern({ format: numberFormat, type: type }, isExcel);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n }\n else {\n format = numberFormat;\n }\n if (type !== 'number') {\n var patternRegex = /G|H|c|'| a|yy|y|EEEE|E/g;\n var mtch_1 = { 'G': '', 'H': 'h', 'c': 'd', '\\'': '\"', ' a': ' AM/PM', 'yy': 'yy', 'y': 'yyyy', 'EEEE': 'dddd', 'E': 'ddd' };\n format = format.replace(patternRegex, function (pattern) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return mtch_1[\"\" + pattern];\n });\n }\n return format;\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @returns {void}\n * @hidden\n */\nexport function addBiggerDialog(gObj) {\n if (gObj.enableAdaptiveUI) {\n var dialogs = document.getElementsByClassName('e-responsive-dialog');\n for (var i = 0; i < dialogs.length; i++) {\n dialogs[parseInt(i.toString(), 10)].classList.add('e-bigger');\n }\n }\n}\n/**\n * @param {string} value - specifies the trr\n * @param {Object} mapObject - specifies the idx\n * @returns {Object | string} returns object or string\n * @hidden\n */\nexport function performComplexDataOperation(value, mapObject) {\n var returnObj;\n var length = value.split('.').length;\n var splits = value.split('.');\n var duplicateMap = mapObject;\n for (var i = 0; i < length; i++) {\n returnObj = duplicateMap[splits[parseInt(i.toString(), 10)]];\n duplicateMap = returnObj;\n }\n return returnObj;\n}\n/**\n * @param {Object} tr - specifies the trr\n * @param {number} idx - specifies the idx\n * @param {string} displayVal - specifies the displayval\n * @param {Row} rows - specifies the rows\n * @param {IGrid} parent - Grid instance\n * @param {boolean} isContent - check for content renderer\n * @returns {void}\n * @hidden\n */\nexport function setDisplayValue(tr, idx, displayVal, rows, parent, isContent) {\n var trs = Object.keys(tr);\n var actualIndex = idx;\n for (var i = 0; i < trs.length; i++) {\n var td = tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)];\n if (parent && !parent.isFrozenGrid() && !parent.isRowDragable()) {\n td = (!isNullOrUndefined(td) && (parseInt(td.getAttribute('data-colindex'), 10) === idx))\n ? td : tr[parseInt(i.toString(), 10)].querySelector(\"td[data-colindex=\\\"\" + idx + \"\\\"]\");\n if (isNullOrUndefined(td)) {\n continue;\n }\n else {\n idx = td.cellIndex;\n }\n }\n if (tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell').length && td) {\n setStyleAttribute(tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)], { 'display': displayVal });\n if (tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)].classList.contains('e-hide')) {\n removeClass([tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)]], ['e-hide']);\n }\n if (isContent && parent.isRowDragable()) {\n var index = parent.getFrozenColumns() ? idx : idx + 1;\n rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(index.toString(), 10)].visible = displayVal === '' ? true : false;\n }\n else {\n rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(idx.toString(), 10)].visible = displayVal === '' ? true : false;\n if (rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(idx.toString(), 10)].visible === false) {\n tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)].classList.add('e-hide');\n }\n }\n idx = actualIndex;\n }\n }\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function addRemoveEventListener(parent, evt, isOn, module) {\n for (var _i = 0, evt_1 = evt; _i < evt_1.length; _i++) {\n var inst = evt_1[_i];\n if (isOn) {\n parent.on(inst.event, inst.handler, module);\n }\n else {\n parent.off(inst.event, inst.handler);\n }\n }\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function createEditElement(parent, column, classNames, attr) {\n var complexFieldName = getComplexFieldID(column.field);\n attr = Object.assign(attr, {\n id: parent.element.id + complexFieldName,\n name: complexFieldName, 'e-mappinguid': column.uid\n });\n return parent.createElement('input', {\n className: classNames, attrs: attr\n });\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @param {string} uid - Defines column's uid\n * @returns {Column} returns column model\n * @hidden\n */\nexport function getColumnModelByUid(gObj, uid) {\n var column;\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.uid === uid) {\n column = col;\n break;\n }\n }\n return column;\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @param {string} field - Defines column's uid\n * @returns {Column} returns column model\n * @hidden\n */\nexport function getColumnModelByFieldName(gObj, field) {\n var column;\n if (!gObj.columnModel) {\n gObj.getColumns();\n }\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.field === field) {\n column = col;\n break;\n }\n }\n return column;\n}\n/**\n * @param {string} id - Defines component id\n * @param {string[]} evts - Defines events\n * @param {object} handlers - Defines event handlers\n * @param {any} instance - Defines class instance\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function registerEventHandlers(id, evts, handlers, instance) {\n instance.eventHandlers[\"\" + id] = {};\n for (var i = 0; i < evts.length; i++) {\n instance.eventHandlers[\"\" + id][evts[parseInt(i.toString(), 10)]] = handlers[evts[parseInt(i.toString(), 10)]];\n }\n}\n/**\n * @param {any} component - Defines component instance\n * @param {string[]} evts - Defines events\n * @param {any} instance - Defines class instance\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function removeEventHandlers(component, evts, instance) {\n for (var i = 0; i < evts.length; i++) {\n if (component.isDestroyed) {\n break;\n }\n component.removeEventListener(evts[parseInt(i.toString(), 10)], instance.eventHandlers[component.element.id][evts[parseInt(i.toString(), 10)]]);\n }\n}\n/**\n * @param {IGrid | IXLFilter} parent - Defines parent instance\n * @param {string[]} templates - Defines the templates name which are needs to clear\n * @returns {void}\n * @hidden\n */\nexport function clearReactVueTemplates(parent, templates) {\n parent.destroyTemplate(templates);\n if (parent.isReact) {\n parent.renderTemplates();\n }\n}\n/**\n *\n * @param { Element } row - Defines row element\n * @returns { number } row index\n */\nexport function getRowIndexFromElement(row) {\n return parseInt(row.getAttribute(literals.dataRowIndex), 10);\n}\n/**\n *\n * @param { string[] } fields - Defines grouped fields\n * @param { values } values - Defines caption keys\n * @param { any } instance - Defines dynamic class instance\n * @returns { Predicate } returns filter predicate\n */\n// eslint-disable-next-line\nexport function generateExpandPredicates(fields, values, instance) {\n var filterCols = [];\n for (var i = 0; i < fields.length; i++) {\n var column = instance.parent.getColumnByField(fields[parseInt(i.toString(), 10)]);\n var value = values[parseInt(i.toString(), 10)] === 'null' ? null : values[parseInt(i.toString(), 10)];\n var pred = {\n field: fields[parseInt(i.toString(), 10)], predicate: 'or', uid: column.uid, operator: 'equal', type: column.type,\n matchCase: instance.allowCaseSensitive, ignoreAccent: instance.parent.filterSettings.ignoreAccent\n };\n if (value === '' || isNullOrUndefined(value)) {\n filterCols = filterCols.concat(CheckBoxFilterBase.generateNullValuePredicates(pred));\n }\n else {\n filterCols.push(extend({}, { value: value }, pred));\n }\n }\n return CheckBoxFilterBase.getPredicate(filterCols);\n}\n/**\n *\n * @param { Predicate } pred - Defines filter predicate\n * @returns { Predicate[] } Returns formed predicate\n */\nexport function getPredicates(pred) {\n var predicateList = [];\n for (var _i = 0, _a = Object.keys(pred); _i < _a.length; _i++) {\n var prop = _a[_i];\n predicateList.push(pred[\"\" + prop]);\n }\n return predicateList;\n}\n/**\n *\n * @param { number } index - Defines group caption indent\n * @param { Row[] } rowsObject - Defines rows object\n * @returns { { fields: string[], keys: string[] } } Returns grouped keys and values\n */\nexport function getGroupKeysAndFields(index, rowsObject) {\n var fields = [];\n var keys = [];\n for (var i = index; i >= 0; i--) {\n if (rowsObject[parseInt(i.toString(), 10)].isCaptionRow\n && fields.indexOf(rowsObject[parseInt(i.toString(), 10)].data.field) === -1\n && (rowsObject[parseInt(i.toString(), 10)].indent < rowsObject[parseInt(index.toString(), 10)].indent || i === index)) {\n fields.push(rowsObject[parseInt(i.toString(), 10)].data.field);\n keys.push(rowsObject[parseInt(i.toString(), 10)].data.key);\n if (rowsObject[parseInt(i.toString(), 10)].indent === 0) {\n break;\n }\n }\n }\n return { fields: fields, keys: keys };\n}\n// eslint-disable-next-line\n/**\n *\n * @param { number[][] } checkActiveMatrix - Defines matrix to check\n * @param { number[] } checkCellIndex - Defines index to check\n * @param { boolean } next - Defines select next or previous index\n * @returns { number[] } - Returns next active current index\n */\nexport function findCellIndex(checkActiveMatrix, checkCellIndex, next) {\n var activeMatrix = checkActiveMatrix;\n var cellIndex = checkCellIndex;\n var currentCellIndexPass = false;\n if (next) {\n for (var i = cellIndex[0]; i < activeMatrix.length; i++) {\n var rowCell = activeMatrix[parseInt(i.toString(), 10)];\n for (var j = 0; j < rowCell.length; j++) {\n if (currentCellIndexPass && activeMatrix[parseInt(i.toString(), 10)][parseInt(j.toString(), 10)] === 1) {\n cellIndex = [i, j];\n return cellIndex;\n }\n if (!currentCellIndexPass && cellIndex.toString() === [i, j].toString()) {\n currentCellIndexPass = true;\n }\n }\n }\n }\n else {\n for (var i = cellIndex[0]; i >= 0; i--) {\n var rowCell = activeMatrix[parseInt(i.toString(), 10)];\n for (var j = rowCell.length - 1; j >= 0; j--) {\n if (currentCellIndexPass && activeMatrix[parseInt(i.toString(), 10)][parseInt(j.toString(), 10)] === 1) {\n cellIndex = [i, j];\n return cellIndex;\n }\n if (!currentCellIndexPass && cellIndex.toString() === [i, j].toString()) {\n currentCellIndexPass = true;\n }\n }\n }\n }\n return cellIndex;\n}\n/**\n *\n * @param { string } string - Defines string need to capitalized first letter\n * @returns { string } - Returns capitalized first letter string\n */\nexport function capitalizeFirstLetter(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n","/* tslint:disable-next-line:max-line-length */\nimport { EventHandler, isNullOrUndefined, extend, classList, addClass, removeClass, Browser, getValue, setValue } from '@syncfusion/ej2-base';\nimport { parentsUntil, getUid, appendChildren, getDatePredicate, getObject, extendObjWithFn, eventPromise, setChecked, clearReactVueTemplates, padZero } from '../base/util';\nimport { remove, debounce, Internationalization, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate } from '@syncfusion/ej2-data';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport * as events from '../base/constant';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getForeignData } from '../base/util';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { getFilterMenuPostion, toogleCheckbox, createCboxWithWrap, removeAddCboxClasses, getColumnByForeignKeyValue } from '../base/util';\n/**\n * @hidden\n * `CheckBoxFilterBase` module is used to handle filtering action.\n */\nvar CheckBoxFilterBase = /** @class */ (function () {\n /**\n * Constructor for checkbox filtering module\n *\n * @param {IXLFilter} parent - specifies the IXLFilter\n * @hidden\n */\n function CheckBoxFilterBase(parent) {\n this.isExecuteLocal = false;\n this.existingPredicate = {};\n this.foreignKeyQuery = new Query();\n /** @hidden */\n this.filterState = true;\n this.values = {};\n this.renderEmpty = false;\n this.isCheckboxFilterTemplate = false;\n this.parent = parent;\n this.id = this.parent.element.id;\n this.valueFormatter = new ValueFormatter(this.parent.locale);\n this.cBoxTrue = createCheckBox(this.parent.createElement, false, { checked: true, label: ' ' });\n this.cBoxFalse = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.cBoxTrue.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { type: 'checkbox' }\n }), this.cBoxTrue.firstChild);\n this.cBoxFalse.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { 'type': 'checkbox' }\n }), this.cBoxFalse.firstChild);\n this.cBoxFalse.querySelector('.e-frame').classList.add('e-uncheck');\n if (this.parent.enableRtl) {\n addClass([this.cBoxTrue, this.cBoxFalse], ['e-rtl']);\n }\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([this.cBoxTrue, this.cBoxFalse], this.parent.cssClass.split(' '));\n }\n else {\n addClass([this.cBoxTrue, this.cBoxFalse], [this.parent.cssClass]);\n }\n }\n }\n /**\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.destroy = function () {\n this.closeDialog();\n };\n CheckBoxFilterBase.prototype.wireEvents = function () {\n EventHandler.add(this.dlg, 'click', this.clickHandler, this);\n EventHandler.add(this.dlg, 'keyup', this.keyupHandler, this);\n this.searchHandler = debounce(this.searchBoxKeyUp, 200);\n var elem = this.dialogObj.element.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.add(elem, 'keyup', this.searchHandler, this);\n }\n };\n CheckBoxFilterBase.prototype.unWireEvents = function () {\n EventHandler.remove(this.dlg, 'click', this.clickHandler);\n EventHandler.remove(this.dlg, 'keyup', this.keyupHandler);\n var elem = this.dialogObj.element.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.remove(elem, 'keyup', this.searchHandler);\n }\n };\n CheckBoxFilterBase.prototype.foreignKeyFilter = function (args, fColl, mPredicate) {\n var _this = this;\n var fPredicate = {};\n var filterCollection = [];\n var query = this.foreignKeyQuery.clone();\n this.options.column.dataSource.\n executeQuery(query.where(mPredicate)).then(function (e) {\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: _this.options.column });\n args.ejpredicate = fPredicate.predicate.predicates;\n var fpred = fPredicate.predicate.predicates;\n for (var i = 0; i < fpred.length; i++) {\n filterCollection.push({\n field: fpred[parseInt(i.toString(), 10)].field,\n predicate: 'or',\n matchCase: fpred[parseInt(i.toString(), 10)].ignoreCase,\n ignoreAccent: fpred[parseInt(i.toString(), 10)].ignoreAccent,\n operator: fpred[parseInt(i.toString(), 10)].operator,\n value: fpred[parseInt(i.toString(), 10)].value,\n type: _this.options.type\n });\n }\n args.filterCollection = filterCollection.length ? filterCollection :\n fColl.filter(function (col) { return col.field = _this.options.field; });\n _this.options.handler(args);\n });\n };\n CheckBoxFilterBase.prototype.foreignFilter = function (args, value) {\n var operator = this.options.isRemote ?\n (this.options.column.type === 'string' ? 'contains' : 'equal') : (this.options.column.type ? 'contains' : 'equal');\n var initalPredicate = new Predicate(this.options.column.foreignKeyValue, operator, value, true, this.options.ignoreAccent);\n this.foreignKeyFilter(args, [args.filterCollection], initalPredicate);\n };\n CheckBoxFilterBase.prototype.searchBoxClick = function (e) {\n var target = e.target;\n if (target.classList.contains('e-searchclear')) {\n this.sInput.value = target.classList.contains('e-chkcancel-icon') ? '' : this.sInput.value;\n if (this.isCheckboxFilterTemplate) {\n this.parent.notify('refreshCheckbox', { event: e });\n }\n else {\n this.refreshCheckboxes();\n }\n this.updateSearchIcon();\n this.sInput.focus();\n }\n };\n CheckBoxFilterBase.prototype.searchBoxKeyUp = function (e) {\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer') {\n this.parent.showMaskRow(undefined, this.dialogObj.element);\n }\n if (this.isCheckboxFilterTemplate) {\n this.parent.notify('refreshCheckbox', { event: e });\n }\n else {\n this.refreshCheckboxes();\n }\n this.updateSearchIcon();\n };\n CheckBoxFilterBase.prototype.updateSearchIcon = function () {\n if (this.sInput.value.length) {\n classList(this.sIcon, ['e-chkcancel-icon'], ['e-search-icon']);\n document.body.querySelector('.e-chkcancel-icon').setAttribute('title', this.localeObj.getConstant('Clear'));\n }\n else {\n classList(this.sIcon, ['e-search-icon'], ['e-chkcancel-icon']);\n document.body.querySelector('.e-search-icon').setAttribute('title', this.localeObj.getConstant('Search'));\n }\n };\n /**\n * Gets the localized label by locale keyword.\n *\n * @param {string} key - Defines localization key\n * @returns {string} - returns localization label\n */\n CheckBoxFilterBase.prototype.getLocalizedLabel = function (key) {\n return this.localeObj.getConstant(key);\n };\n CheckBoxFilterBase.prototype.updateDataSource = function () {\n var dataSource = this.options.dataSource;\n var str = 'object';\n if (!(dataSource instanceof DataManager)) {\n for (var i = 0; i < dataSource.length; i++) {\n // eslint-disable-next-line valid-typeof\n if (typeof dataSource !== str) {\n var obj = {};\n obj[this.options.field] = dataSource[parseInt(i.toString(), 10)];\n dataSource[parseInt(i.toString(), 10)] = obj;\n }\n }\n }\n };\n CheckBoxFilterBase.prototype.updateModel = function (options) {\n this.options = options;\n this.existingPredicate = options.actualPredicate || {};\n this.options.dataSource = options.dataSource;\n this.options.dataManager = options.dataManager ? options.dataManager : options.dataSource;\n this.updateDataSource();\n this.options.type = options.type;\n this.options.format = options.format || '';\n this.options.ignoreAccent = options.ignoreAccent || false;\n this.options.filteredColumns = options.filteredColumns || this.parent.filterSettings.columns;\n this.options.query = options.query || new Query();\n this.options.allowCaseSensitive = options.allowCaseSensitive || false;\n this.options.uid = options.column.uid;\n this.options.disableHtmlEncode = options.column.disableHtmlEncode || false;\n this.values = {};\n this.localeObj = options.localeObj;\n this.isFiltered = options.filteredColumns.length;\n };\n CheckBoxFilterBase.prototype.getAndSetChkElem = function (options) {\n this.dlg = this.parent.createElement('div', {\n id: this.id + this.options.type + '_excelDlg',\n attrs: { uid: this.options.column.uid },\n className: 'e-checkboxfilter e-filter-popup'\n });\n this.sBox = this.parent.createElement('div', { className: 'e-searchcontainer' });\n if (!options.hideSearchbox) {\n this.sInput = this.parent.createElement('input', {\n id: this.id + '_SearchBox',\n className: 'e-searchinput'\n });\n this.sIcon = this.parent.createElement('span', {\n className: 'e-searchclear e-search-icon e-icons e-input-group-icon', attrs: {\n type: 'text', title: this.getLocalizedLabel('Search')\n }\n });\n this.searchBox = this.parent.createElement('span', { className: 'e-searchbox e-fields' });\n this.searchBox.appendChild(this.sInput);\n this.sBox.appendChild(this.searchBox);\n var inputargs = {\n element: this.sInput, floatLabelType: 'Never', properties: {\n placeholder: this.getLocalizedLabel('Search'),\n cssClass: this.parent.cssClass\n }\n };\n Input.createInput(inputargs, this.parent.createElement);\n this.searchBox.querySelector('.e-input-group').appendChild(this.sIcon);\n }\n this.spinner = this.parent.createElement('div', { className: 'e-spinner' }); //for spinner\n this.cBox = this.parent.createElement('div', {\n id: this.id + this.options.type + '_CheckBoxList',\n className: 'e-checkboxlist e-fields'\n });\n this.spinner.appendChild(this.cBox);\n this.sBox.appendChild(this.spinner);\n return this.sBox;\n };\n CheckBoxFilterBase.prototype.showDialog = function (options) {\n var args = {\n requestType: events.filterBeforeOpen,\n columnName: this.options.field, columnType: this.options.type, cancel: false\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrBegin, args);\n if (args.cancel) {\n options.cancel = args.cancel;\n return;\n }\n this.dialogObj = new Dialog({\n visible: false, content: this.sBox,\n close: this.closeDialog.bind(this),\n enableRtl: this.parent.enableRtl,\n width: (!isNullOrUndefined(parentsUntil(options.target, 'e-bigger')))\n || this.parent.element.classList.contains('e-device') ? 260 : 255,\n target: this.parent.element, animationSettings: { effect: 'None' },\n buttons: [{\n click: this.btnClick.bind(this),\n buttonModel: {\n content: this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton'),\n cssClass: this.parent.cssClass ? 'e-primary' + ' ' + this.parent.cssClass : 'e-primary',\n isPrimary: true\n }\n },\n {\n click: this.btnClick.bind(this),\n buttonModel: { cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n content: this.getLocalizedLabel(this.isExcel ? 'CancelButton' : 'ClearButton') }\n }],\n created: this.dialogCreated.bind(this),\n open: this.dialogOpen.bind(this),\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n this.dialogObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveFilter(options);\n this.dlg.setAttribute('aria-label', this.getLocalizedLabel('ExcelFilterDialogARIA'));\n if (options.isResponsiveFilter) {\n var responsiveCnt = document.querySelector('.e-responsive-dialog > .e-dlg-content > .e-mainfilterdiv');\n responsiveCnt.appendChild(this.dlg);\n }\n else {\n this.parent.element.appendChild(this.dlg);\n }\n this.dialogObj.appendTo(this.dlg);\n this.dialogObj.element.style.maxHeight = options.isResponsiveFilter ? 'none' : this.options.height + 'px';\n this.dialogObj.show();\n var content = this.dialogObj.element.querySelector('.e-dlg-content');\n content.appendChild(this.sBox);\n this.wireEvents();\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer') {\n this.parent.showMaskRow(undefined, this.dialogObj.element);\n }\n else {\n createSpinner({ target: this.spinner, cssClass: this.parent.cssClass ? this.parent.cssClass : null }, this.parent.createElement);\n showSpinner(this.spinner);\n }\n this.getAllData();\n };\n CheckBoxFilterBase.prototype.renderResponsiveFilter = function (options) {\n if (options.isResponsiveFilter) {\n this.dialogObj.buttons = [{}];\n this.dialogObj.position = { X: '', Y: '' };\n this.dialogObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n this.dialogObj.width = '100%';\n }\n };\n CheckBoxFilterBase.prototype.dialogCreated = function (e) {\n if (this.options.isResponsiveFilter) {\n this.dialogObj.element.style.left = '0px';\n }\n else {\n if (!Browser.isDevice) {\n getFilterMenuPostion(this.options.target, this.dialogObj);\n }\n else {\n this.dialogObj.position = { X: 'center', Y: 'center' };\n }\n }\n if (this.options.column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, e);\n }\n };\n CheckBoxFilterBase.prototype.openDialog = function (options) {\n this.updateModel(options);\n this.getAndSetChkElem(options);\n this.showDialog(options);\n };\n CheckBoxFilterBase.prototype.closeDialog = function () {\n if (this.dialogObj && !this.dialogObj.isDestroyed) {\n this.isBlanks = false;\n var filterTemplateCol = this.options.columns.filter(function (col) { return col.getFilterItemTemplate(); });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var registeredTemplate = this.parent.registeredTemplate;\n if (filterTemplateCol.length && !isNullOrUndefined(registeredTemplate) && registeredTemplate.filterItemTemplate) {\n this.parent.destroyTemplate(['filterItemTemplate']);\n }\n if ((this.parent.isReact || this.parent.isVue) && this.parent.destroyTemplate !== undefined) {\n clearReactVueTemplates(this.parent, ['filterItemTemplate']);\n }\n this.parent.notify(events.filterMenuClose, { field: this.options.field });\n this.dialogObj.destroy();\n this.unWireEvents();\n remove(this.dlg);\n this.dlg = null;\n this.parent.notify(events.filterDialogClose, {});\n }\n };\n /**\n * @param {Column} col - Defines column details\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.clearFilter = function (col) {\n // eslint-disable-next-line max-len\n var args = { instance: this, handler: this.clearFilter, cancel: false };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n this.options.handler({ action: 'clear-filter', field: col ? col.field : this.options.field });\n };\n CheckBoxFilterBase.prototype.btnClick = function (e) {\n if (this.filterState) {\n if ((e.target.tagName.toLowerCase() === 'input' && e.target.classList.contains('e-searchinput')) ||\n e.keyCode === 13) {\n if (!this.isCheckboxFilterTemplate) {\n this.fltrBtnHandler();\n }\n }\n else {\n var text = e.target.firstChild.textContent.toLowerCase();\n if (this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton').toLowerCase() === text) {\n if (!this.isCheckboxFilterTemplate) {\n this.fltrBtnHandler();\n }\n }\n else if (this.getLocalizedLabel('ClearButton').toLowerCase() === text) {\n this.clearFilter();\n }\n }\n this.closeDialog();\n }\n else if (!(e.target.tagName.toLowerCase() === 'input')) {\n this.clearFilter();\n this.closeDialog();\n }\n if (this.options.column.showColumnMenu) {\n this.parent.notify(events.afterFilterColumnMenuClose, {});\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.fltrBtnHandler = function () {\n var _this = this;\n var checked = [].slice.call(this.cBox.querySelectorAll('.e-check:not(.e-selectall):not(.e-add-current)'));\n var check = checked;\n var optr = 'equal';\n var ddlValue = this.dialogObj.element.querySelector('.e-dropdownlist');\n if (ddlValue) {\n this.options.operator = optr = ddlValue.ej2_instances[0].value;\n }\n this.isMenuNotEqual = this.options.operator === 'notequal';\n var searchInput;\n if (!this.options.hideSearchbox) {\n searchInput = this.searchBox.querySelector('.e-searchinput');\n }\n var caseSen = this.options.allowCaseSensitive;\n var defaults = {\n field: this.options.field, predicate: this.isMenuNotEqual ? 'and' : 'or', uid: this.options.uid,\n operator: optr, type: this.options.type, matchCase: caseSen, ignoreAccent: this.options.ignoreAccent\n };\n var isNotEqual = this.itemsCnt !== checked.length && this.itemsCnt - checked.length < checked.length;\n if (isNotEqual && searchInput && searchInput.value === '') {\n optr = this.isMenuNotEqual ? 'equal' : 'notequal';\n checked = [].slice.call(this.cBox.querySelectorAll('.e-uncheck:not(.e-selectall)'));\n defaults.predicate = this.isMenuNotEqual ? 'or' : 'and';\n defaults.operator = optr;\n }\n var value;\n var val;\n var length;\n var fObj;\n var coll = [];\n if (checked.length !== this.itemsCnt || (searchInput && searchInput.value && searchInput.value !== '')) {\n for (var i = 0; i < checked.length; i++) {\n value = this.values[parentsUntil(checked[parseInt(i.toString(), 10)], 'e-ftrchk').getAttribute('uid')];\n fObj = extend({}, { value: value }, defaults);\n if (value && !value.toString().length) {\n fObj.operator = isNotEqual ? 'notequal' : 'equal';\n }\n if (value === '' || isNullOrUndefined(value)) {\n coll = coll.concat(CheckBoxFilterBase.generateNullValuePredicates(defaults));\n }\n else {\n coll.push(fObj);\n }\n var args = {\n instance: this, handler: this.fltrBtnHandler, arg1: fObj.field, arg2: fObj.predicate, arg3: fObj.operator,\n arg4: fObj.matchCase, arg5: fObj.ignoreAccent, arg6: fObj.value, cancel: false\n };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n }\n if ((this.options.type === 'date' || this.options.type === 'datetime') && check.length) {\n length = check.length - 1;\n val = this.values[parentsUntil(check[parseInt(length.toString(), 10)], 'e-ftrchk').getAttribute('uid')];\n if (isNullOrUndefined(val) && isNotEqual) {\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: 'equal',\n predicate: 'and', value: null\n });\n }\n }\n if (this.cBox.querySelector('.e-add-current') && this.cBox.querySelector('.e-add-current').classList.contains('e-check')) {\n var existingPredicate_1 = this.existingPredicate[this.options.field];\n if (existingPredicate_1) {\n var _loop_1 = function (j) {\n if (!coll.some(function (data) {\n return data\n .value === existingPredicate_1[parseInt(j.toString(), 10)].value;\n })) {\n coll.push(existingPredicate_1[parseInt(j.toString(), 10)]);\n }\n };\n for (var j = 0; j < existingPredicate_1.length; j++) {\n _loop_1(j);\n }\n }\n else {\n return;\n }\n }\n this.initiateFilter(coll);\n }\n else {\n var isClearFilter = this.options.filteredColumns.some(function (value) {\n return _this.options.field === value.field;\n });\n if (isClearFilter) {\n this.clearFilter();\n }\n }\n };\n // eslint-disable-next-line\n /** @hidden */\n CheckBoxFilterBase.generateNullValuePredicates = function (defaults) {\n var coll = [];\n if (defaults.type === 'string') {\n coll.push({\n field: defaults.field, ignoreAccent: defaults.ignoreAccent, matchCase: defaults.matchCase,\n operator: defaults.operator, predicate: defaults.predicate, value: ''\n });\n }\n coll.push({\n field: defaults.field,\n matchCase: defaults.matchCase, operator: defaults.operator, predicate: defaults.predicate, value: null\n });\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: defaults.operator,\n predicate: defaults.predicate, value: undefined\n });\n return coll;\n };\n // eslint-disable-next-line\n /** @hidden */\n CheckBoxFilterBase.prototype.initiateFilter = function (fColl) {\n var firstVal = fColl[0];\n var predicate;\n if (!isNullOrUndefined(firstVal)) {\n predicate = firstVal.ejpredicate ? firstVal.ejpredicate :\n new Predicate(firstVal.field, firstVal.operator, firstVal.value, !firstVal.matchCase, firstVal.ignoreAccent);\n for (var j = 1; j < fColl.length; j++) {\n predicate = fColl[parseInt(j.toString(), 10)].ejpredicate !== undefined ?\n predicate[fColl[parseInt(j.toString(), 10)].predicate](fColl[parseInt(j.toString(), 10)].ejpredicate) :\n predicate[fColl[parseInt(j.toString(), 10)].predicate](fColl[parseInt(j.toString(), 10)].field, fColl[parseInt(j.toString(), 10)].operator, fColl[parseInt(j.toString(), 10)].value, !fColl[parseInt(j.toString(), 10)].matchCase, fColl[parseInt(j.toString(), 10)].ignoreAccent);\n }\n var args = {\n action: 'filtering', filterCollection: fColl, field: this.options.field,\n ejpredicate: Predicate.or(predicate)\n };\n this.options.handler(args);\n }\n };\n CheckBoxFilterBase.prototype.isForeignColumn = function (col) {\n return col.isForeignColumn ? col.isForeignColumn() : false;\n };\n CheckBoxFilterBase.prototype.refreshCheckboxes = function () {\n var _this = this;\n var val = this.sInput.value;\n var column = this.options.column;\n var query = this.isForeignColumn(column) ? this.foreignKeyQuery.clone() : this.options.query.clone();\n var foreignQuery = this.options.query.clone();\n var pred = query.queries.filter(function (e) { return e && e.fn === 'onWhere'; })[0];\n query.queries = [];\n foreignQuery.queries = [];\n var parsed = (this.options.type !== 'string' && parseFloat(val)) ? parseFloat(val) : val;\n var operator = this.options.isRemote ?\n (this.options.type === 'string' ? 'contains' : 'equal') : (this.options.type ? 'contains' : 'equal');\n var matchCase = true;\n var ignoreAccent = this.options.ignoreAccent;\n var field = this.isForeignColumn(column) ? column.foreignKeyValue : column.field;\n parsed = (parsed === '' || parsed === undefined) ? undefined : parsed;\n var coll = [];\n var defaults = {\n field: field, predicate: 'or', uid: this.options.uid,\n operator: 'equal', type: this.options.type, matchCase: matchCase, ignoreAccent: ignoreAccent\n };\n var predicte;\n var moduleName = this.options.dataManager.adaptor.getModuleName;\n if (this.options.type === 'boolean') {\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1) {\n parsed = 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1) {\n parsed = 'false';\n }\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n // eslint-disable-next-line no-constant-condition\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? true : 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n // eslint-disable-next-line no-constant-condition\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? false : 'false';\n }\n operator = 'equal';\n }\n if ((this.options.type === 'date' || this.options.type === 'datetime' || this.options.type === 'dateonly') && this.options.format) {\n var intl = new Internationalization();\n var format = typeof (this.options.format) === 'string' ? this.options.format :\n this.options.format.format;\n if (format) {\n parsed = intl.parseDate(val, { format: format }) || new Date(val);\n }\n else {\n parsed = new Date(val);\n }\n if (this.options.type === 'dateonly') {\n parsed = parsed.getFullYear() + '-' + padZero(parsed.getMonth() + 1) + '-' + padZero(parsed.getDate());\n }\n }\n this.addDistinct(query);\n var args = {\n requestType: events.filterSearchBegin,\n filterModel: this, columnName: field, column: column,\n operator: operator, matchCase: matchCase, ignoreAccent: ignoreAccent, filterChoiceCount: null,\n query: query, value: parsed\n };\n this.parent.trigger(events.actionBegin, args, function (filterargs) {\n // eslint-disable-next-line no-self-assign\n filterargs.operator = filterargs.operator;\n predicte = new Predicate(field, filterargs.operator, args.value, filterargs.matchCase, filterargs.ignoreAccent);\n if (_this.options.type === 'date' || _this.options.type === 'datetime' || _this.options.type === 'dateonly') {\n operator = 'equal';\n var filterObj = {\n field: field, operator: operator, value: parsed, matchCase: matchCase,\n ignoreAccent: ignoreAccent\n };\n if (!isNullOrUndefined(parsed)) {\n predicte = getDatePredicate(filterObj, _this.options.type);\n }\n }\n if (val && typeof val === 'string' && _this.isBlanks &&\n _this.getLocalizedLabel('Blanks').toLowerCase().indexOf(val.toLowerCase()) >= 0) {\n coll = coll.concat(CheckBoxFilterBase.generateNullValuePredicates(defaults));\n var emptyValPredicte = CheckBoxFilterBase.generatePredicate(coll);\n emptyValPredicte.predicates.push(predicte);\n query.where(emptyValPredicte);\n }\n else if (val.length) {\n predicte = !isNullOrUndefined(pred) ? predicte.and(pred.e) : predicte;\n query.where(predicte);\n }\n else if (!isNullOrUndefined(pred)) {\n query.where(pred.e);\n }\n filterargs.filterChoiceCount = !isNullOrUndefined(filterargs.filterChoiceCount) ? filterargs.filterChoiceCount : 1000;\n var fPredicate = {};\n showSpinner(_this.spinner);\n _this.renderEmpty = false;\n if (_this.isForeignColumn(column) && val.length) {\n var colData = ('result' in column.dataSource) ? new DataManager(column.dataSource.result) :\n column.dataSource;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n colData.executeQuery(query).then(function (e) {\n var columnData = _this.options.column.columnData;\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: column });\n if (fPredicate.predicate.predicates.length) {\n foreignQuery.where(fPredicate.predicate);\n }\n else {\n _this.renderEmpty = true;\n }\n _this.options.column.columnData = columnData;\n foreignQuery.take(filterargs.filterChoiceCount);\n _this.search(filterargs, foreignQuery);\n });\n }\n else {\n query.take(filterargs.filterChoiceCount);\n _this.search(filterargs, query);\n }\n });\n };\n CheckBoxFilterBase.prototype.search = function (args, query) {\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.filterEvent(args, query);\n }\n else {\n this.processSearch(query);\n }\n };\n CheckBoxFilterBase.prototype.getPredicateFromCols = function (columns, isExecuteLocal) {\n var predicates = CheckBoxFilterBase.getPredicate(columns, isExecuteLocal);\n var predicateList = [];\n var fPredicate = {};\n var isGrid = this.parent.getForeignKeyColumns !== undefined;\n var foreignColumn = isGrid ? this.parent.getForeignKeyColumns() : [];\n for (var _i = 0, _a = Object.keys(predicates); _i < _a.length; _i++) {\n var prop = _a[_i];\n var col = void 0;\n if (isGrid && !this.parent.getColumnByField(prop)) {\n col = getColumnByForeignKeyValue(prop, foreignColumn);\n }\n if (col) {\n this.parent.notify(events.generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(Predicate.or(fPredicate.predicate.predicates));\n }\n }\n else {\n predicateList.push(predicates[\"\" + prop]);\n }\n }\n return predicateList.length && Predicate.and(predicateList);\n };\n CheckBoxFilterBase.prototype.getQuery = function () {\n return this.parent.getQuery ? this.parent.getQuery().clone() : new Query();\n };\n CheckBoxFilterBase.prototype.getAllData = function () {\n var _this = this;\n this.customQuery = false;\n var query = this.getQuery();\n query.requiresCount(); //consider take query\n this.addDistinct(query);\n var args = {\n requestType: events.filterChoiceRequest, query: query, filterChoiceCount: null\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.trigger(events.actionBegin, args, function (args) {\n args.filterChoiceCount = !isNullOrUndefined(args.filterChoiceCount) ? args.filterChoiceCount : 1000;\n query.take(args.filterChoiceCount);\n if (!args.query.distincts.length) {\n _this.customQuery = true;\n _this.queryGenerate(query);\n }\n if (_this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.filterEvent(args, query);\n }\n else {\n _this.processDataOperation(query, true);\n }\n });\n };\n CheckBoxFilterBase.prototype.addDistinct = function (query) {\n var filteredColumn = DataUtil.distinct(this.options.filteredColumns, 'field');\n if (filteredColumn.indexOf(this.options.column.field) <= -1) {\n filteredColumn = filteredColumn.concat(this.options.column.field);\n }\n query.distinct(filteredColumn);\n return query;\n };\n CheckBoxFilterBase.prototype.filterEvent = function (args, query) {\n var _this = this;\n var defObj = eventPromise(args, query);\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n _this.dataSuccess(e);\n });\n };\n CheckBoxFilterBase.prototype.processDataOperation = function (query, isInitial) {\n var _this = this;\n this.options.dataSource = this.options.dataSource instanceof DataManager ?\n this.options.dataSource : new DataManager(this.options.dataSource);\n var allPromise = [];\n var runArray = [];\n if (this.isForeignColumn(this.options.column) && isInitial) {\n var colData = ('result' in this.options.column.dataSource) ?\n new DataManager(this.options.column.dataSource.result) :\n this.options.column.dataSource;\n this.foreignKeyQuery.params = query.params;\n allPromise.push(colData.executeQuery(this.foreignKeyQuery));\n runArray.push(function (data) { return _this.foreignKeyData = data; });\n }\n allPromise.push(this.options.dataSource.executeQuery(query));\n runArray.push(this.dataSuccess.bind(this));\n var i = 0;\n Promise.all(allPromise).then(function (e) {\n for (var j = 0; j < e.length; j++) {\n runArray[i++](e[parseInt(j.toString(), 10)].result);\n }\n });\n };\n CheckBoxFilterBase.prototype.dataSuccess = function (e) {\n this.fullData = e;\n var args1 = { dataSource: this.fullData, executeQuery: true, field: this.options.field };\n this.parent.notify(events.beforeCheckboxRenderer, args1);\n if (args1.executeQuery) {\n var query = new Query();\n if (!this.customQuery) {\n this.isExecuteLocal = true;\n this.queryGenerate(query);\n this.isExecuteLocal = false;\n }\n // query.select(this.options.field);\n var result = new DataManager(args1.dataSource).executeLocal(query);\n var col = this.options.column;\n this.filteredData = CheckBoxFilterBase.getDistinct(result, this.options.field, col, this.foreignKeyData, this).records || [];\n }\n var data = args1.executeQuery ? this.filteredData : args1.dataSource;\n this.processDataSource(null, true, data, args1);\n if (this.sInput) {\n this.sInput.focus();\n }\n var args = {\n requestType: events.filterAfterOpen,\n columnName: this.options.field, columnType: this.options.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrComplete, args);\n if (this.isCheckboxFilterTemplate) {\n hideSpinner(this.spinner);\n }\n };\n CheckBoxFilterBase.prototype.queryGenerate = function (query) {\n if (this.parent.searchSettings && this.parent.searchSettings.key.length) {\n var sSettings = this.parent.searchSettings;\n var fields = sSettings.fields.length ? sSettings.fields : this.options.columns.map(function (f) { return f.field; });\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n if ((this.options.filteredColumns.length)) {\n var cols = [];\n for (var i = 0; i < this.options.filteredColumns.length; i++) {\n var filterColumn = this.options.filteredColumns[parseInt(i.toString(), 10)];\n if (this.options.uid) {\n filterColumn.uid = filterColumn.uid || this.parent.getColumnByField(filterColumn.field).uid;\n if (filterColumn.uid !== this.options.uid) {\n cols.push(this.options.filteredColumns[parseInt(i.toString(), 10)]);\n }\n }\n else {\n if (filterColumn.field !== this.options.field) {\n cols.push(this.options.filteredColumns[parseInt(i.toString(), 10)]);\n }\n }\n }\n var predicate = this.getPredicateFromCols(cols, this.isExecuteLocal);\n if (predicate) {\n query.where(predicate);\n }\n }\n };\n CheckBoxFilterBase.prototype.processDataSource = function (query, isInitial, dataSource, args) {\n showSpinner(this.spinner);\n // query = query ? query : this.options.query.clone();\n // query.requiresCount();\n // let result: Object = new DataManager(dataSource as JSON[]).executeLocal(query);\n // let res: { result: Object[] } = result as { result: Object[] };\n this.isExecuteLocal = true;\n this.updateResult();\n this.isExecuteLocal = false;\n var args1 = { dataSource: this.fullData, isCheckboxFilterTemplate: false, column: this.options.column,\n element: this.cBox, type: this.options.type, format: this.options.type, btnObj: this.options.isResponsiveFilter ? null :\n this.dialogObj.btnObj[0], searchBox: this.searchBox };\n this.parent.notify(events.beforeCheckboxfilterRenderer, args1);\n this.isCheckboxFilterTemplate = args1.isCheckboxFilterTemplate;\n if (!this.isCheckboxFilterTemplate) {\n this.createFilterItems(dataSource, isInitial, args);\n }\n };\n CheckBoxFilterBase.prototype.processSearch = function (query) {\n this.processDataOperation(query);\n };\n CheckBoxFilterBase.prototype.updateResult = function () {\n this.result = {};\n var predicate = this.getPredicateFromCols(this.options.filteredColumns, this.isExecuteLocal);\n var query = new Query();\n if (predicate) {\n query.where(predicate);\n }\n this.parent.notify(events.beforeCheckboxRendererQuery, { query: query });\n var result = new DataManager(this.fullData).executeLocal(query);\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n this.result[getObject(this.options.field, res)] = true;\n }\n };\n CheckBoxFilterBase.prototype.clickHandler = function (e) {\n var target = e.target;\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && parentsUntil(target, 'e-mask-ftrchk')) {\n return;\n }\n var elem = parentsUntil(target, 'e-checkbox-wrapper');\n if (parentsUntil(target, 'e-searchbox')) {\n this.searchBoxClick(e);\n }\n if (elem && !this.isCheckboxFilterTemplate) {\n var selectAll = elem.querySelector('.e-selectall');\n if (selectAll) {\n this.updateAllCBoxes(!selectAll.classList.contains('e-check'));\n }\n else {\n toogleCheckbox(elem.parentElement);\n }\n this.updateIndeterminatenBtn();\n elem.querySelector('.e-chk-hidden').focus();\n }\n this.setFocus(parentsUntil(elem, 'e-ftrchk'));\n };\n CheckBoxFilterBase.prototype.keyupHandler = function (e) {\n this.setFocus(parentsUntil(e.target, 'e-ftrchk'));\n };\n CheckBoxFilterBase.prototype.setFocus = function (elem) {\n var prevElem = this.dlg.querySelector('.e-chkfocus');\n if (prevElem) {\n prevElem.classList.remove('e-chkfocus');\n }\n if (elem) {\n elem.classList.add('e-chkfocus');\n }\n };\n CheckBoxFilterBase.prototype.updateAllCBoxes = function (checked) {\n var cBoxes = [].slice.call(this.cBox.querySelectorAll('.e-frame:not(.e-add-current)'));\n for (var _i = 0, cBoxes_1 = cBoxes; _i < cBoxes_1.length; _i++) {\n var cBox = cBoxes_1[_i];\n removeAddCboxClasses(cBox, checked);\n setChecked(cBox.previousSibling, checked);\n }\n };\n CheckBoxFilterBase.prototype.dialogOpen = function () {\n if (this.parent.element.classList.contains('e-device')) {\n this.dialogObj.element.querySelector('.e-input-group').classList.remove('e-input-focus');\n if (!this.options.isResponsiveFilter) {\n this.dialogObj.element.querySelector('.e-btn').focus();\n }\n }\n };\n CheckBoxFilterBase.prototype.createCheckbox = function (value, checked, data) {\n var elem = checked ? this.cBoxTrue.cloneNode(true) :\n this.cBoxFalse.cloneNode(true);\n setChecked(elem.querySelector('input'), checked);\n var label = elem.querySelector('.e-label');\n var dummyData = extendObjWithFn({}, data, { column: this.options.column, parent: this.parent });\n var innerText = this.options.disableHtmlEncode ? 'textContent' : 'innerHTML';\n label[\"\" + innerText] = !isNullOrUndefined(value) && value.toString().length ?\n this.parent.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(value) : value : this.getLocalizedLabel('Blanks');\n if (label.innerHTML === this.getLocalizedLabel('Blanks')) {\n this.isBlanks = true;\n }\n if (typeof value === 'boolean') {\n label.innerHTML = value === true ? this.getLocalizedLabel('FilterTrue') : this.getLocalizedLabel('FilterFalse');\n }\n addClass([label], ['e-checkboxfiltertext']);\n if (this.options.template && data[this.options.column.field] !== this.getLocalizedLabel('SelectAll')\n && data[this.options.column.field] !== this.getLocalizedLabel('AddCurrentSelection')) {\n label.innerHTML = '';\n var isReactCompiler = this.parent.isReact && this.options.column.filter\n && typeof (this.options.column.filter.itemTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n this.options.template(dummyData, this.parent, 'filterItemTemplate', null, null, null, label);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(label, this.options.template(dummyData, this.parent, 'filterItemTemplate'));\n }\n }\n return elem;\n };\n CheckBoxFilterBase.prototype.updateIndeterminatenBtn = function () {\n var cnt = this.cBox.children.length - 1;\n var className = [];\n var disabled = false;\n var elem = this.cBox.querySelector('.e-selectall');\n var selected = this.cBox.querySelectorAll('.e-check:not(.e-selectall):not(.e-add-current)').length;\n if (this.cBox.querySelector('.e-add-current')) {\n cnt -= 1;\n }\n var btn;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n btn.disabled = false;\n }\n var input = elem.previousSibling;\n setChecked(input, false);\n input.indeterminate = false;\n if (cnt === selected) {\n className = ['e-check'];\n setChecked(input, true);\n }\n else if (selected) {\n className = ['e-stop'];\n input.indeterminate = true;\n }\n else {\n className = ['e-uncheck'];\n disabled = true;\n if (btn) {\n btn.disabled = true;\n }\n }\n if (btn) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([elem], className);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n };\n CheckBoxFilterBase.prototype.createFilterItems = function (data, isInitial, args1) {\n var _a, _b;\n var cBoxes = this.parent.createElement('div');\n var btn;\n var disabled = false;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n }\n var nullCounter = -1;\n var key = 'ejValue';\n if (!args1.executeQuery) {\n key = args1.field;\n }\n for (var i = 0; i < data.length; i++) {\n var val = getValue(key, data[parseInt(i.toString(), 10)]);\n if (val === '' || isNullOrUndefined(val)) {\n nullCounter = nullCounter + 1;\n }\n }\n this.itemsCnt = nullCounter !== -1 ? data.length - nullCounter : data.length;\n if (data.length && !this.renderEmpty) {\n var selectAllValue = this.getLocalizedLabel('SelectAll');\n var innerDiv = this.cBox.querySelector('.e-checkfltrnmdiv');\n if (innerDiv) {\n innerDiv.classList.remove('e-checkfltrnmdiv');\n }\n var checkBox = this.createCheckbox(selectAllValue, false, (_a = {}, _a[this.options.field] = selectAllValue, _a));\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([checkBox], this.parent.cssClass.split(' '));\n }\n else {\n addClass([checkBox], [this.parent.cssClass]);\n }\n }\n var selectAll = createCboxWithWrap(getUid('cbox'), checkBox, 'e-ftrchk');\n selectAll.querySelector('.e-frame').classList.add('e-selectall');\n cBoxes.appendChild(selectAll);\n var predicate = new Predicate('field', 'equal', this.options.field);\n if (this.options.foreignKeyValue) {\n predicate = predicate.or('field', 'equal', this.options.foreignKeyValue);\n }\n var isColFiltered = new DataManager(this.options.filteredColumns).executeLocal(new Query().where(predicate)).length;\n if (this.sInput.value) {\n var predicateCheckBox = this.createCheckbox(this.getLocalizedLabel('AddCurrentSelection'), false, (_b = {},\n _b[this.options.field] = this.getLocalizedLabel('AddCurrentSelection'),\n _b));\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([predicateCheckBox], this.parent.cssClass.split(' '));\n }\n else {\n addClass([predicateCheckBox], [this.parent.cssClass]);\n }\n }\n var predicateElement = createCboxWithWrap(getUid('cbox'), predicateCheckBox, 'e-ftrchk');\n predicateElement.querySelector('.e-frame').classList.add('e-add-current');\n cBoxes.appendChild(predicateElement);\n }\n var isRndere = void 0;\n for (var i = 0; i < data.length; i++) {\n var uid = getUid('cbox');\n this.values[\"\" + uid] = getValue(key, data[parseInt(i.toString(), 10)]);\n var value = getValue(this.options.field, data[parseInt(i.toString(), 10)]);\n if (this.options.formatFn) {\n value = this.valueFormatter.toView(value, this.options.formatFn);\n }\n var args_1 = { value: value, column: this.options.column, data: data[parseInt(i.toString(), 10)] };\n this.parent.notify(events.filterCboxValue, args_1);\n value = args_1.value;\n if ((value === '' || isNullOrUndefined(value))) {\n if (isRndere) {\n continue;\n }\n isRndere = true;\n }\n var checkbox = this.createCheckbox(value, this.getCheckedState(isColFiltered, this.values[\"\" + uid]), getValue('dataObj', data[parseInt(i.toString(), 10)]));\n cBoxes.appendChild(createCboxWithWrap(uid, checkbox, 'e-ftrchk'));\n }\n this.cBox.innerHTML = '';\n appendChildren(this.cBox, [].slice.call(cBoxes.children));\n this.updateIndeterminatenBtn();\n if (btn) {\n btn.disabled = false;\n }\n disabled = false;\n }\n else {\n cBoxes.appendChild(this.parent.createElement('span', { innerHTML: this.getLocalizedLabel('NoResult') }));\n this.cBox.innerHTML = '';\n this.cBox.appendChild(this.parent.createElement('div', { className: 'e-checkfltrnmdiv' }));\n appendChildren(this.cBox.children[0], [].slice.call(cBoxes.children));\n if (btn) {\n btn.disabled = true;\n }\n disabled = true;\n }\n if (btn && data.length) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n var args = { requestType: events.filterChoiceRequest, dataSource: this.renderEmpty ? [] : data };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrComplete, args);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n hideSpinner(this.spinner);\n };\n CheckBoxFilterBase.prototype.getCheckedState = function (isColFiltered, value) {\n if (!this.isFiltered || !isColFiltered) {\n return true;\n }\n else {\n var checkState = this.sInput.value ? true : this.result[\"\" + value];\n return this.options.operator === 'notequal' ? !checkState : checkState;\n }\n };\n CheckBoxFilterBase.getDistinct = function (json, field, column, foreignKeyData, checkboxFilter) {\n var len = json.length;\n var result = [];\n var value;\n var ejValue = 'ejValue';\n var lookup = {};\n var isForeignKey = column && column.isForeignColumn ? column.isForeignColumn() : false;\n while (len--) {\n value = json[parseInt(len.toString(), 10)];\n value = getObject(field, value); //local remote diff, check with mdu\n var currentFilterValue = (typeof value === 'string') && !(isNullOrUndefined(checkboxFilter)) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !(isNullOrUndefined(checkboxFilter.parent)) && !(isNullOrUndefined(checkboxFilter.parent.filterSettings)) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !(isNullOrUndefined(checkboxFilter.parent.filterSettings.enableCaseSensitivity)) ? value.toLowerCase() : value;\n if (!(currentFilterValue in lookup)) {\n var obj = {};\n obj[\"\" + ejValue] = value;\n lookup[\"\" + currentFilterValue] = true;\n if (isForeignKey) {\n var foreignDataObj = getForeignData(column, {}, value, foreignKeyData)[0];\n setValue(events.foreignKeyData, foreignDataObj, json[parseInt(len.toString(), 10)]);\n value = getValue(column.foreignKeyValue, foreignDataObj);\n }\n setValue(field, isNullOrUndefined(value) ? null : value, obj);\n setValue('dataObj', json[parseInt(len.toString(), 10)], obj);\n result.push(obj);\n }\n }\n return DataUtil.group(DataUtil.sort(result, field, DataUtil.fnAscending), 'ejValue');\n };\n CheckBoxFilterBase.getPredicate = function (columns, isExecuteLocal) {\n var cols = DataUtil.distinct(columns, 'field', true) || [];\n var collection = [];\n var pred = {};\n for (var i = 0; i < cols.length; i++) {\n collection = new DataManager(columns).executeLocal(new Query().where('field', 'equal', cols[parseInt(i.toString(), 10)].field));\n if (collection.length !== 0) {\n pred[cols[parseInt(i.toString(), 10)].field] = CheckBoxFilterBase.generatePredicate(collection, isExecuteLocal);\n }\n }\n return pred;\n };\n CheckBoxFilterBase.generatePredicate = function (cols, isExecuteLocal) {\n var len = cols ? cols.length : 0;\n var predicate;\n var operate = 'or';\n var first = CheckBoxFilterBase.updateDateFilter(cols[0]);\n first.ignoreAccent = !isNullOrUndefined(first.ignoreAccent) ? first.ignoreAccent : false;\n if (first.type === 'date' || first.type === 'datetime' || first.type === 'dateonly') {\n predicate = getDatePredicate(first, first.type, isExecuteLocal);\n }\n else {\n predicate = first.ejpredicate ? first.ejpredicate :\n new Predicate(first.field, first.operator, first.value, !CheckBoxFilterBase.getCaseValue(first), first.ignoreAccent);\n }\n for (var p = 1; p < len; p++) {\n cols[parseInt(p.toString(), 10)] = CheckBoxFilterBase.updateDateFilter(cols[parseInt(p.toString(), 10)]);\n if (len > 2 && p > 1 && cols[parseInt(p.toString(), 10)].predicate === 'or') {\n if (cols[parseInt(p.toString(), 10)].type === 'date' || cols[parseInt(p.toString(), 10)].type === 'datetime' || cols[parseInt(p.toString(), 10)].type === 'dateonly') {\n predicate.predicates.push(getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type, isExecuteLocal));\n }\n else {\n predicate.predicates.push(new Predicate(cols[parseInt(p.toString(), 10)].field, cols[parseInt(p.toString(), 10)].operator, cols[parseInt(p.toString(), 10)].value, !CheckBoxFilterBase.getCaseValue(cols[parseInt(p.toString(), 10)]), cols[parseInt(p.toString(), 10)].ignoreAccent));\n }\n }\n else {\n if (cols[parseInt(p.toString(), 10)].type === 'date' || cols[parseInt(p.toString(), 10)].type === 'datetime' || cols[parseInt(p.toString(), 10)].type === 'dateonly') {\n if (cols[parseInt(p.toString(), 10)].predicate === 'and' && cols[parseInt(p.toString(), 10)].operator === 'equal') {\n predicate = predicate[\"\" + operate](getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type, isExecuteLocal), cols[parseInt(p.toString(), 10)].type, cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n else {\n predicate = predicate[(cols[parseInt(p.toString(), 10)].predicate)](getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type, isExecuteLocal), cols[parseInt(p.toString(), 10)].type, cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n }\n else {\n predicate = cols[parseInt(p.toString(), 10)].ejpredicate ?\n predicate[cols[parseInt(p.toString(), 10)]\n .predicate](cols[parseInt(p.toString(), 10)].ejpredicate) :\n predicate[(cols[parseInt(p.toString(), 10)].predicate)](cols[parseInt(p.toString(), 10)].field, cols[parseInt(p.toString(), 10)].operator, cols[parseInt(p.toString(), 10)].value, !CheckBoxFilterBase.getCaseValue(cols[parseInt(p.toString(), 10)]), cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n }\n }\n return predicate || null;\n };\n CheckBoxFilterBase.getCaseValue = function (filter) {\n if (isNullOrUndefined(filter.matchCase)) {\n if (filter.type === 'string' || isNullOrUndefined(filter.type) && typeof (filter.value) === 'string') {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n return filter.matchCase;\n }\n };\n CheckBoxFilterBase.updateDateFilter = function (filter) {\n if ((filter.type === 'date' || filter.type === 'datetime' || filter.type === 'dateonly' || filter.value instanceof Date)) {\n filter.type = filter.type || 'date';\n }\n return filter;\n };\n return CheckBoxFilterBase;\n}());\nexport { CheckBoxFilterBase };\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Cell\n *\n * @hidden\n */\nvar Cell = /** @class */ (function () {\n function Cell(options) {\n this.isSpanned = false;\n this.isRowSpanned = false;\n merge(this, options);\n }\n Cell.prototype.clone = function () {\n var cell = new Cell({});\n merge(cell, this);\n return cell;\n };\n return Cell;\n}());\nexport { Cell };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { merge, isNullOrUndefined, extend, Property } from '@syncfusion/ej2-base';\nimport { Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getUid, templateCompiler, getForeignData, getObject } from '../base/util';\n/**\n * Represents Grid `Column` model class.\n */\nvar Column = /** @class */ (function () {\n function Column(options, parent) {\n var _this = this;\n /**\n * If `disableHtmlEncode` is set to true, it encodes the HTML of the header and content cells.\n *\n * @default true\n */\n this.disableHtmlEncode = true;\n /**\n * If `allowSorting` set to false, then it disables sorting option of a particular column.\n * By default all columns are sortable.\n *\n * @default true\n */\n this.allowSorting = true;\n /**\n * If `allowResizing` is set to false, it disables resize option of a particular column.\n * By default all the columns can be resized.\n *\n * @default true\n */\n this.allowResizing = true;\n /**\n * If `allowFiltering` set to false, then it disables filtering option and filter bar element of a particular column.\n * By default all columns are filterable.\n *\n * @default true\n */\n this.allowFiltering = true;\n /**\n * If `allowGrouping` set to false, then it disables grouping of a particular column.\n * By default all columns are groupable.\n *\n * @default true\n */\n this.allowGrouping = true;\n /**\n * If `allowReordering` set to false, then it disables reorder of a particular column.\n * By default all columns can be reorder.\n *\n * @default true\n */\n this.allowReordering = true;\n /**\n * If `showColumnMenu` set to false, then it disable the column menu of a particular column.\n * By default column menu will show for all columns\n *\n * @default true\n */\n this.showColumnMenu = true;\n /**\n * If `enableGroupByFormat` set to true, then it groups the particular column by formatted values.\n *\n * @default true\n */\n this.enableGroupByFormat = false;\n /**\n * If `allowEditing` set to false, then it disables editing of a particular column.\n * By default all columns are editable.\n *\n * @default true\n */\n this.allowEditing = true;\n /**\n * It is used to customize the default filter options for a specific columns.\n * * type - Specifies the filter type as menu or checkbox.\n * * ui - to render custom component for specific column it has following functions.\n * * ui.create – It is used for creating custom components.\n * * ui.read - It is used for read the value from the component.\n * * ui.write - It is used to apply component model as dynamically.\n * {% codeBlock src=\"grid/filter-menu-api/index.ts\" %}{% endcodeBlock %}\n *\n * > Check the [`Filter UI`](../../grid/filtering/filter-menu/#custom-component-in-filter-menu) for its customization.\n *\n * @default {}\n */\n this.filter = {};\n /**\n * If `showInColumnChooser` set to false, then hide the particular column in column chooser.\n * By default all columns are displayed in column Chooser.\n *\n * @default true\n */\n this.showInColumnChooser = true;\n /**\n * Defines the `IEditCell` object to customize default edit cell.\n *\n * @default {}\n */\n this.edit = {};\n /**\n * If `allowSearching` set to false, then it disables Searching of a particular column.\n * By default all columns allow Searching.\n *\n * @default true\n */\n this.allowSearching = true;\n /**\n * If `autoFit` set to true, then the particular column content width will be\n * adjusted based on its content in the initial rendering itself.\n * Setting this property as true is equivalent to calling `autoFitColumns` method in the `dataBound` event.\n *\n * @default false\n */\n this.autoFit = false;\n this.sortDirection = 'Descending';\n /**\n * @returns {Function} returns the edit template\n * @hidden */\n this.getEditTemplate = function () { return _this.editTemplateFn; };\n /**\n * @returns {Function} returns the filter template\n * @hidden */\n this.getFilterTemplate = function () { return _this.filterTemplateFn; };\n merge(this, options);\n this.parent = parent;\n if (this.type === 'none') {\n this.type = null;\n }\n else if (this.type) {\n this.type = typeof (this.type) === 'string' ? this.type.toLowerCase() : undefined;\n }\n if (this.editType) {\n this.editType = this.editType.toLowerCase();\n }\n if (isNullOrUndefined(this.uid)) {\n this.uid = getUid('grid-column');\n }\n var valueFormatter = new ValueFormatter();\n if (options.format && (options.format.skeleton || (options.format.format &&\n typeof options.format.format === 'string'))) {\n this.setFormatter(valueFormatter.getFormatFunction(extend({}, options.format)));\n this.setParser(valueFormatter.getParserFunction(options.format));\n }\n this.toJSON = function () {\n var col = {};\n var skip = ['filter', 'dataSource', 'headerText', 'template', 'headerTemplate', 'edit',\n 'editTemplate', 'filterTemplate', 'commandsTemplate', 'parent'];\n var keys = Object.keys(_this);\n for (var i = 0; i < keys.length; i++) {\n if (keys[parseInt(i.toString(), 10)] === 'columns') {\n col[keys[parseInt(i.toString(), 10)]] = [];\n for (var j = 0; j < _this[keys[parseInt(i.toString(), 10)]].length; j++) {\n col[keys[parseInt(i.toString(), 10)]].push(_this[keys[parseInt(i.toString(), 10)]][parseInt(j.toString(), 10)].toJSON());\n }\n }\n else if (skip.indexOf(keys[parseInt(i.toString(), 10)]) < 0) {\n col[keys[parseInt(i.toString(), 10)]] = _this[keys[parseInt(i.toString(), 10)]];\n }\n }\n return col;\n };\n if (!this.field) {\n this.allowFiltering = false;\n this.allowGrouping = false;\n this.allowSorting = false;\n if (this.columns) {\n this.allowResizing = this.columns.some(function (col) {\n return col.allowResizing;\n });\n }\n }\n if (this.commands && !this.textAlign) {\n this.textAlign = 'Right';\n }\n if (this.template || this.commandsTemplate) {\n this.templateFn = templateCompiler(this.template || this.commandsTemplate);\n }\n if (this.headerTemplate) {\n this.headerTemplateFn = templateCompiler(this.headerTemplate);\n }\n if (!isNullOrUndefined(this.filter) && this.filter.itemTemplate) {\n this.fltrTemplateFn = templateCompiler(this.filter.itemTemplate);\n }\n if (this.editTemplate) {\n this.editTemplateFn = templateCompiler(this.editTemplate);\n }\n if (this.filterTemplate) {\n this.filterTemplateFn = templateCompiler(this.filterTemplate);\n }\n if (this.isForeignColumn() &&\n (isNullOrUndefined(this.editType) || this.editType === 'dropdownedit' || this.editType === 'defaultedit')) {\n this.editType = 'dropdownedit';\n if (this.edit.params && this.edit.params.dataSource) {\n this.edit.params.ddEditedData = true;\n }\n this.edit.params = extend({\n dataSource: this.dataSource,\n query: new Query(), fields: { value: this.foreignKeyField || this.field, text: this.foreignKeyValue }\n }, this.edit.params);\n }\n if (this.sortComparer) {\n var a_1 = this.sortComparer;\n this.sortComparer = function (x, y, xObj, yObj) {\n if (typeof a_1 === 'string') {\n a_1 = getObject(a_1, window);\n }\n if (_this.sortDirection === 'Descending') {\n var z = x;\n x = y;\n y = z;\n var obj = xObj;\n xObj = yObj;\n yObj = obj;\n }\n return a_1(x, y, xObj, yObj);\n };\n }\n if (!this.sortComparer && this.isForeignColumn()) {\n this.sortComparer = function (x, y) {\n x = getObject(_this.foreignKeyValue, getForeignData(_this, {}, x)[0]);\n y = getObject(_this.foreignKeyValue, getForeignData(_this, {}, y)[0]);\n return _this.sortDirection === 'Descending' ? DataUtil.fnDescending(x, y) : DataUtil.fnAscending(x, y);\n };\n }\n }\n /**\n * @returns {string} returns the sort direction\n * @hidden */\n Column.prototype.getSortDirection = function () {\n return this.sortDirection;\n };\n /**\n * @param {string} direction - specifies the direction\n * @returns {void}\n * @hidden\n */\n Column.prototype.setSortDirection = function (direction) {\n this.sortDirection = direction;\n };\n /**\n * @returns {freezeTable} returns the FreezeTable\n * @hidden */\n Column.prototype.getFreezeTableName = function () {\n return this.freezeTable;\n };\n /**\n * @param {Column} column - specifies the column\n * @returns {void}\n * @hidden\n */\n Column.prototype.setProperties = function (column) {\n //Angular two way binding\n var keys = Object.keys(column);\n for (var i = 0; i < keys.length; i++) {\n this[keys[parseInt(i.toString(), 10)]] = column[keys[parseInt(i.toString(), 10)]];\n //Refresh the react columnTemplates on state change\n if (this.parent && this.parent.isReact) {\n if (keys[parseInt(i.toString(), 10)] === 'template') {\n this.templateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n this.parent.refreshReactColumnTemplateByUid(this.uid, true);\n }\n else if (keys[parseInt(i.toString(), 10)] === 'headerTemplate') {\n this.headerTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n this.parent.refreshReactHeaderTemplateByUid(this.uid);\n }\n else if (keys[parseInt(i.toString(), 10)] === 'editTemplate') {\n this.editTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n }\n }\n }\n };\n /**\n * @returns {boolean} returns true for foreign column\n * @hidden\n * It defines the column is foreign key column or not.\n */\n Column.prototype.isForeignColumn = function () {\n return !!(this.dataSource && this.foreignKeyValue);\n };\n /**\n * @returns {Function} returns the function\n * @hidden\n */\n Column.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n Column.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getParser = function () {\n return this.parserFn;\n };\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n Column.prototype.setParser = function (value) {\n this.parserFn = value;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getColumnTemplate = function () {\n return this.templateFn;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getHeaderTemplate = function () {\n return this.headerTemplateFn;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getFilterItemTemplate = function () {\n return this.fltrTemplateFn;\n };\n /**\n * @returns {string} returns the string\n * @hidden */\n Column.prototype.getDomSetter = function () {\n return this.disableHtmlEncode ? 'textContent' : 'innerHTML';\n };\n return Column;\n}());\nexport { Column };\n/**\n * Define options for custom command buttons.\n */\nvar CommandColumnModel = /** @class */ (function () {\n function CommandColumnModel() {\n }\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"title\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"buttonOption\", void 0);\n return CommandColumnModel;\n}());\nexport { CommandColumnModel };\n/**\n * Defines Grid column\n */\nvar GridColumn = /** @class */ (function (_super) {\n __extends(GridColumn, _super);\n function GridColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], GridColumn.prototype, \"columns\", void 0);\n return GridColumn;\n}(Column));\nexport { GridColumn };\n/**\n * Defines stacked grid column\n */\nvar StackedColumn = /** @class */ (function (_super) {\n __extends(StackedColumn, _super);\n function StackedColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return StackedColumn;\n}(GridColumn));\nexport { StackedColumn };\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Row\n *\n * @hidden\n */\nvar Row = /** @class */ (function () {\n function Row(options, parent) {\n merge(this, options);\n this.parent = parent;\n }\n Row.prototype.clone = function () {\n var row = new Row({});\n merge(row, this);\n row.cells = this.cells.map(function (cell) { return cell.clone(); });\n return row;\n };\n /**\n * Replaces the row data and grid refresh the particular row element only.\n *\n * @param {Object} data - To update new data for the particular row.\n * @returns {void}\n */\n Row.prototype.setRowValue = function (data) {\n if (!this.parent) {\n return;\n }\n var key = this.data[this.parent.getPrimaryKeyFieldNames()[0]];\n this.parent.setRowData(key, data);\n };\n /**\n * Replaces the given field value and refresh the particular cell element only.\n *\n * @param {string} field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n * @returns {void}\n */\n Row.prototype.setCellValue = function (field, value) {\n if (!this.parent) {\n return;\n }\n var isValDiff = !(this.data[\"\" + field].toString() === value.toString());\n if (isValDiff) {\n var pKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var key = this.data[\"\" + pKeyField];\n this.parent.setCellValue(key, field, value);\n this.makechanges(pKeyField, this.data);\n }\n else {\n return;\n }\n };\n Row.prototype.makechanges = function (key, data) {\n if (!this.parent) {\n return;\n }\n var gObj = this.parent;\n var dataManager = gObj.getDataModule().dataManager;\n dataManager.update(key, data);\n };\n return Row;\n}());\nexport { Row };\n","import { isNullOrUndefined, attributes } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject } from '../base/util';\nimport { CellType } from '../base/enum';\n/**\n * `CellMergeRender` module.\n *\n * @hidden\n */\nvar CellMergeRender = /** @class */ (function () {\n function CellMergeRender(serviceLocator, parent) {\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n }\n CellMergeRender.prototype.render = function (cellArgs, row, i, td) {\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[parseInt(i.toString(), 10)].cellType\n || CellType.Data);\n var colSpan = row.cells[parseInt(i.toString(), 10)].cellSpan ? row.cells[parseInt(i.toString(), 10)].cellSpan :\n (cellArgs.colSpan + i) <= row.cells.length ? cellArgs.colSpan : row.cells.length - i;\n var rowSpan = cellArgs.rowSpan;\n var visible = 0;\n var spannedCell;\n if (row.index > 0) {\n var rowsObject = this.parent.isFrozenGrid() ?\n this.parent.contentModule.tempFreezeRows : this.parent.getRowsObject();\n var cells = this.parent.groupSettings.columns.length > 0 &&\n !rowsObject[row.index - 1].isDataRow ? rowsObject[row.index].cells : rowsObject[row.index - 1].cells;\n var targetCell_1 = row.cells[parseInt(i.toString(), 10)];\n var uid_1 = 'uid';\n spannedCell = cells.filter(function (cell) { return cell.column.uid === targetCell_1.column[\"\" + uid_1]; })[0];\n }\n var colSpanLen = spannedCell && spannedCell.colSpanRange > 1 && spannedCell.rowSpanRange > 1 ?\n spannedCell.colSpanRange : colSpan;\n for (var j = i + 1; j < i + colSpanLen && j < row.cells.length; j++) {\n if (row.cells[parseInt(j.toString(), 10)].visible === false) {\n visible++;\n }\n else {\n row.cells[parseInt(j.toString(), 10)].isSpanned = true;\n }\n }\n if (visible > 0) {\n for (var j = i + colSpan; j < i + colSpan + visible && j < row.cells.length; j++) {\n row.cells[parseInt(j.toString(), 10)].isSpanned = true;\n }\n if (i + colSpan + visible >= row.cells.length) {\n colSpan -= (i + colSpan + visible) - row.cells.length;\n }\n }\n if (row.cells[parseInt(i.toString(), 10)].cellSpan) {\n row.data[cellArgs.column.field] = row.cells[parseInt(i.toString(), 10)].spanText;\n td = cellRenderer.render(row.cells[parseInt(i.toString(), 10)], row.data, { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' });\n }\n if (colSpan > 1) {\n attributes(td, { 'colSpan': colSpan.toString(), 'aria-colSpan': colSpan.toString() });\n }\n if (rowSpan > 1) {\n attributes(td, { 'rowspan': rowSpan.toString(), 'aria-rowspan': rowSpan.toString() });\n row.cells[parseInt(i.toString(), 10)].isRowSpanned = true;\n row.cells[parseInt(i.toString(), 10)].rowSpanRange = Number(rowSpan);\n if (colSpan > 1) {\n row.cells[parseInt(i.toString(), 10)].colSpanRange = Number(colSpan);\n }\n }\n if (row.index > 0 && (spannedCell.rowSpanRange > 1)) {\n row.cells[parseInt(i.toString(), 10)].isSpanned = true;\n row.cells[parseInt(i.toString(), 10)].rowSpanRange = Number(spannedCell.rowSpanRange - 1);\n row.cells[parseInt(i.toString(), 10)].colSpanRange = spannedCell.rowSpanRange > 0 ? spannedCell.colSpanRange : 1;\n }\n if (this.parent.enableColumnVirtualization && !row.cells[parseInt(i.toString(), 10)].cellSpan &&\n !this.containsKey(cellArgs.column.field, cellArgs.data[cellArgs.column.field])) {\n this.backupMergeCells(cellArgs.column.field, cellArgs.data[cellArgs.column.field], cellArgs.colSpan);\n }\n return td;\n };\n CellMergeRender.prototype.backupMergeCells = function (fName, data, span) {\n this.setMergeCells(this.generteKey(fName, data), span);\n };\n CellMergeRender.prototype.generteKey = function (fname, data) {\n return fname + '__' + data.toString();\n };\n CellMergeRender.prototype.splitKey = function (key) {\n return key.split('__');\n };\n CellMergeRender.prototype.containsKey = function (fname, data) {\n // eslint-disable-next-line no-prototype-builtins\n return this.getMergeCells().hasOwnProperty(this.generteKey(fname, data));\n };\n CellMergeRender.prototype.getMergeCells = function () {\n return this.parent.mergeCells;\n };\n CellMergeRender.prototype.setMergeCells = function (key, span) {\n this.parent.mergeCells[\"\" + key] = span;\n };\n CellMergeRender.prototype.updateVirtualCells = function (rows) {\n var mCells = this.getMergeCells();\n for (var _i = 0, _a = Object.keys(mCells); _i < _a.length; _i++) {\n var key = _a[_i];\n var value = mCells[\"\" + key];\n var merge = this.splitKey(key);\n var columnIndex = this.getIndexFromAllColumns(merge[0]);\n var vColumnIndices = this.parent.getColumnIndexesInView();\n var span = value - (vColumnIndices[0] - columnIndex);\n if (columnIndex < vColumnIndices[0] && span > 1) {\n for (var _b = 0, rows_1 = rows; _b < rows_1.length; _b++) {\n var row = rows_1[_b];\n if (row.data[merge[0]].toString() === merge[1].toString()) {\n row.cells[0].cellSpan = span;\n row.cells[0].spanText = merge[1];\n break;\n }\n }\n }\n }\n return rows;\n };\n CellMergeRender.prototype.getIndexFromAllColumns = function (field) {\n var index = iterateArrayOrObject(this.parent.getVisibleColumns(), function (item, index) {\n if (item.field === field) {\n return index;\n }\n return undefined;\n })[0];\n return index;\n };\n return CellMergeRender;\n}());\nexport { CellMergeRender };\n","import { remove, addClass } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { doesImplementInterface, setStyleAndAttributes, appendChildren, extendObjWithFn } from '../base/util';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { foreignKeyData } from '../base/constant';\nimport { CellType } from '../base/enum';\nimport * as literals from '../base/string-literals';\n/**\n * CellRenderer class which responsible for building cell content.\n *\n * @hidden\n */\nvar CellRenderer = /** @class */ (function () {\n function CellRenderer(parent, locator) {\n this.localizer = locator.getService('localization');\n this.formatter = locator.getService('valueFormatter');\n this.parent = parent;\n this.element = this.parent.createElement('TD', { className: literals.rowCell, attrs: { tabindex: '-1' } });\n this.rowChkBox = this.parent.createElement('input', { className: 'e-checkselect', attrs: { 'type': 'checkbox',\n 'aria-label': this.localizer.getConstant('CheckBoxLabel') } });\n }\n /**\n * Function to return the wrapper for the TD content\n *\n * @returns {string | Element} returns the string\n */\n CellRenderer.prototype.getGui = function () {\n return '';\n };\n /**\n * Function to format the cell value.\n *\n * @param {Column} column - specifies the column\n * @param {Object} value - specifies the value\n * @param {Object} data - specifies the data\n * @returns {string} returns the format\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CellRenderer.prototype.format = function (column, value, data) {\n if (!isNullOrUndefined(column.format)) {\n if (column.type === 'number' && isNaN(parseInt(value, 10))) {\n value = null;\n }\n value = this.formatter.toView(value, column.getFormatter());\n }\n return isNullOrUndefined(value) ? '' : value.toString();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CellRenderer.prototype.evaluate = function (node, cell, data, attributes, fData, isEdit) {\n var _a;\n var result;\n if (cell.column.template) {\n var isReactCompiler = this.parent.isReact && typeof (cell.column.template) !== 'string' && cell.column.template.prototype && !(cell.column.template.prototype).CSPTemplate;\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var literals_1 = ['index'];\n var dummyData = extendObjWithFn({}, data, (_a = {}, _a[foreignKeyData] = fData, _a.column = cell.column, _a));\n var templateID = this.parent.element.id + cell.column.uid;\n var str = 'isStringTemplate';\n if (isReactCompiler || isReactChild) {\n var copied = { 'index': attributes[literals_1[0]] };\n cell.column.getColumnTemplate()(extend(copied, dummyData), this.parent, 'columnTemplate', templateID, this.parent[\"\" + str], null, node);\n }\n else {\n result = cell.column.getColumnTemplate()(extend({ 'index': attributes[literals_1[0]] }, dummyData), this.parent, 'template', templateID, this.parent[\"\" + str], undefined, undefined, this.parent['root']);\n }\n if (!isReactCompiler && !isReactChild) {\n appendChildren(node, result);\n }\n this.parent.notify('template-result', { template: result });\n result = null;\n node.setAttribute('aria-label', node.innerText + this.localizer.getConstant('TemplateCell') +\n this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n return false;\n }\n return true;\n };\n /**\n * Function to invoke the custom formatter available in the column object.\n *\n * @param {Column} column - specifies the column\n * @param {Object} value - specifies the value\n * @param {Object} data - specifies the data\n * @returns {Object} returns the object\n */\n CellRenderer.prototype.invokeFormatter = function (column, value, data) {\n if (!isNullOrUndefined(column.formatter)) {\n if (doesImplementInterface(column.formatter, 'getValue')) {\n var formatter = column.formatter;\n value = new formatter().getValue(column, data);\n }\n else if (typeof column.formatter === 'function') {\n value = column.formatter(column, data);\n }\n else {\n value = column.formatter.getValue(column, data);\n }\n }\n return value;\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @param {boolean} isExpand - specifies the boolean for expand\n * @param {boolean} isEdit - specifies the boolean for edit\n * @returns {Element} returns the element\n */\n CellRenderer.prototype.render = function (cell, data, attributes, isExpand, isEdit) {\n return this.refreshCell(cell, data, attributes, isEdit);\n };\n /**\n * Function to refresh the cell content based on Column object.\n *\n * @param {Element} td - specifies the element\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attribute\n * @returns {void}\n */\n CellRenderer.prototype.refreshTD = function (td, cell, data, attributes) {\n var isEdit = this.parent.editSettings.mode === 'Batch' && td.classList.contains('e-editedbatchcell');\n if (this.parent.isReact) {\n var cellIndex = td.cellIndex;\n var parentRow = td.parentElement;\n remove(td);\n var newTD = this.refreshCell(cell, data, attributes, isEdit);\n this.cloneAttributes(newTD, td);\n if (parentRow.cells.length !== cellIndex - 1) {\n parentRow.insertBefore(newTD, parentRow.cells[parseInt(cellIndex.toString(), 10)]);\n }\n else {\n parentRow.appendChild(newTD);\n }\n }\n else {\n var node = this.refreshCell(cell, data, attributes, isEdit);\n td.innerHTML = '';\n td.setAttribute('aria-label', node.getAttribute('aria-label'));\n var elements = [].slice.call(node.childNodes);\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n td.appendChild(elem);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n CellRenderer.prototype.cloneAttributes = function (target, source) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var attrs = source.attributes;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var i = attrs.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var attr;\n while (i--) {\n attr = attrs[parseInt(i.toString(), 10)];\n target.setAttribute(attr.name, attr.value);\n }\n };\n CellRenderer.prototype.refreshCell = function (cell, data, attributes, isEdit) {\n var _a;\n var node = this.element.cloneNode();\n var column = cell.column;\n var fData;\n if (cell.isForeignKey) {\n fData = cell.foreignKeyData[0] || (_a = {}, _a[column.foreignKeyValue] = column.format ? null : '', _a);\n }\n //Prepare innerHtml\n var innerHtml = this.getGui();\n var value = cell.isForeignKey ? this.getValue(column.foreignKeyValue, fData, column) :\n this.getValue(column.field, data, column);\n if ((column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly') && !isNullOrUndefined(value)) {\n value = new Date(value);\n }\n value = this.format(column, value, data);\n innerHtml = value.toString();\n if (column.type === 'boolean' && !column.displayAsCheckBox) {\n var localeStr = (value !== 'true' && value !== 'false') ? null : value === 'true' ? 'True' : 'False';\n innerHtml = localeStr ? this.localizer.getConstant(localeStr) : innerHtml;\n }\n var fromFormatter = this.invokeFormatter(column, value, data);\n innerHtml = !isNullOrUndefined(column.formatter) ? isNullOrUndefined(fromFormatter) ? '' : fromFormatter.toString() : innerHtml;\n node.setAttribute('aria-label', innerHtml + this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n if (this.evaluate(node, cell, data, attributes, fData, isEdit) && column.type !== 'checkbox') {\n this.appendHtml(node, this.parent.sanitize(innerHtml), column.getDomSetter ? column.getDomSetter() : 'innerHTML');\n }\n else if (column.type === 'checkbox') {\n node.classList.add(literals.gridChkBox);\n node.setAttribute('aria-label', this.localizer.getConstant('CheckBoxLabel'));\n if (this.parent.selectionSettings.persistSelection) {\n value = value === 'true';\n }\n else {\n value = false;\n }\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n if (this.parent.cssClass) {\n addClass([checkWrap], [this.parent.cssClass]);\n }\n this.rowChkBox.id = 'checkbox-' + cell.rowID;\n checkWrap.insertBefore(this.rowChkBox.cloneNode(), checkWrap.firstChild);\n node.appendChild(checkWrap);\n }\n if (this.parent.checkAllRows === 'Check' && this.parent.enableVirtualization) {\n cell.isSelected = true;\n }\n this.setAttributes(node, cell, attributes);\n if (column.type === 'boolean' && column.displayAsCheckBox) {\n var checked = isNaN(parseInt(value.toString(), 10)) ? value === 'true' : parseInt(value.toString(), 10) > 0;\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: checked, label: ' ' });\n node.innerHTML = '';\n node.classList.add('e-gridchkbox-cell');\n checkWrap.classList.add('e-checkbox-disabled');\n if (this.parent.cssClass) {\n addClass([checkWrap], [this.parent.cssClass]);\n }\n node.appendChild(checkWrap);\n node.setAttribute('aria-label', checked + this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHTML\n * @param {string} property - specifies the element\n * @returns {Element} returns the element\n */\n CellRenderer.prototype.appendHtml = function (node, innerHtml, property) {\n if (property === void 0) { property = 'innerHTML'; }\n node[\"\" + property] = innerHtml;\n return node;\n };\n /**\n * @param {HTMLElement} node - specifies the node\n * @param {cell} cell - specifies the cell\n * @param {Object} attributes - specifies the attributes\n * @returns {void}\n * @hidden\n */\n CellRenderer.prototype.setAttributes = function (node, cell, attributes) {\n var column = cell.column;\n this.buildAttributeFromCell(node, cell, column.type === 'checkbox');\n setStyleAndAttributes(node, attributes);\n setStyleAndAttributes(node, cell.attributes);\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n setStyleAndAttributes(node, { 'data-cell': column.headerText });\n }\n if (column.textAlign) {\n node.style.textAlign = column.textAlign;\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')\n && !(this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Content'\n || this.parent.textWrapSettings.wrapMode === 'Both'))) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n };\n CellRenderer.prototype.buildAttributeFromCell = function (node, cell, isCheckBoxType) {\n var attr = {};\n var prop = { 'colindex': literals.dataColIndex };\n var classes = [];\n if (cell.colSpan) {\n attr.colSpan = cell.colSpan;\n }\n if (cell.rowSpan) {\n attr.rowSpan = cell.rowSpan;\n }\n if (cell.isTemplate) {\n classes.push('e-templatecell');\n }\n if (cell.isSelected) {\n classes.push.apply(classes, ['e-selectionbackground', 'e-active']);\n if (isCheckBoxType) {\n node.querySelector('.e-frame').classList.add('e-check');\n }\n }\n if (cell.isColumnSelected) {\n classes.push.apply(classes, ['e-columnselection']);\n }\n if (cell.cellType === CellType.Header) {\n attr[prop.colindex] = cell.colIndex;\n attr[literals.ariaColIndex] = cell.colIndex + 1;\n }\n else if (!isNullOrUndefined(cell.index)) {\n attr[prop.colindex] = cell.index;\n attr[literals.ariaColIndex] = cell.index + 1;\n }\n if (!cell.visible) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(node, attr);\n };\n CellRenderer.prototype.getValue = function (field, data, column) {\n return column.valueAccessor(field, data, column);\n };\n return CellRenderer;\n}());\nexport { CellRenderer };\n","import { isNullOrUndefined, extend, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { attributes as addAttributes } from '@syncfusion/ej2-base';\nimport { rowDataBound, queryCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, getObject, extendObjWithFn } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { CellMergeRender } from './cell-merge-renderer';\nimport * as literals from '../base/string-literals';\n/**\n * RowRenderer class which responsible for building row content.\n *\n * @hidden\n */\nvar RowRenderer = /** @class */ (function () {\n function RowRenderer(serviceLocator, cellType, parent) {\n this.isSpan = false;\n this.cellType = cellType;\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n this.element = this.parent.createElement('tr');\n }\n /* eslint-disable */\n /**\n * Function to render the row content based on Column[] and data.\n *\n * @param {Row} row - specifies the row\n * @param {Column[]} columns - specifies the columns\n * @param {Object} attributes - specifies the attributes\n * @param {string} rowTemplate - specifies the rowTemplate\n * @param {Element} cloneNode - specifies the cloneNode\n * @returns {Element} returns the element\n */\n /* eslint-enable */\n RowRenderer.prototype.render = function (row, columns, attributes, rowTemplate, cloneNode) {\n return this.refreshRow(row, columns, attributes, rowTemplate, cloneNode);\n };\n /* eslint-disable */\n /**\n * Function to refresh the row content based on Column[] and data.\n *\n * @param {Row} row - specifies the row\n * @param {Column[]} columns - specifies the column\n * @param {boolean} isChanged - specifies isChanged\n * @param {Object} attributes - specifies the attributes\n * @param {string} rowTemplate - specifies the rowTemplate\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.refresh = function (row, columns, isChanged, attributes, rowTemplate) {\n var _this = this;\n if (isChanged) {\n row.data = extendObjWithFn({}, row.changes);\n this.refreshMergeCells(row);\n }\n var node = this.parent.element.querySelector('[data-uid=' + row.uid + ']');\n var tr = this.refreshRow(row, columns, attributes, rowTemplate, null, isChanged);\n var cells = [].slice.call(tr.cells);\n var tempCells = [].slice.call(node.querySelectorAll('.e-templatecell'));\n if (this.parent.isReact && tempCells.length) {\n var _loop_1 = function (col) {\n if (col.template) {\n setTimeout(function () {\n _this.parent.refreshReactColumnTemplateByUid(col.uid, true);\n }, 0);\n return \"break\";\n }\n };\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n var state_1 = _loop_1(col);\n if (state_1 === \"break\")\n break;\n }\n }\n var attr = [].slice.call(tr.attributes);\n attr.map(function (item) {\n node.setAttribute(item['name'], item['value']);\n });\n node.innerHTML = '';\n for (var _a = 0, cells_1 = cells; _a < cells_1.length; _a++) {\n var cell = cells_1[_a];\n node.appendChild(cell);\n }\n };\n // tslint:disable-next-line:max-func-body-length\n RowRenderer.prototype.refreshRow = function (row, columns, attributes, rowTemplate, cloneNode, isEdit) {\n var tr = !isNullOrUndefined(cloneNode) ? cloneNode : this.element.cloneNode();\n var rowArgs = { data: row.data };\n var cellArgs = { data: row.data };\n var chekBoxEnable = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox' && col.field; })[0];\n var value = false;\n if (chekBoxEnable) {\n value = getObject(chekBoxEnable.field, rowArgs.data);\n }\n var selIndex = this.parent.getSelectedRowIndexes();\n if (row.isDataRow) {\n row.isSelected = selIndex.indexOf(row.index) > -1 || value;\n }\n if (row.isDataRow && this.parent.isCheckBoxSelection\n && this.parent.checkAllRows === 'Check' && this.parent.enableVirtualization) {\n row.isSelected = true;\n if (selIndex.indexOf(row.index) === -1) {\n selIndex.push(row.index);\n }\n }\n this.buildAttributeFromRow(tr, row);\n addAttributes(tr, extend({}, attributes, {}));\n setStyleAndAttributes(tr, row.attributes);\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var _loop_2 = function (i, len) {\n var cell = row.cells[parseInt(i.toString(), 10)];\n cell.isSelected = row.isSelected;\n cell.isColumnSelected = cell.column.isSelected;\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[parseInt(i.toString(), 10)].cellType\n || CellType.Data);\n var attrs = { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' };\n if (row.isExpand && row.cells[parseInt(i.toString(), 10)].cellType === CellType.DetailExpand) {\n attrs['class'] = this_1.parent.isPrinting ? 'e-detailrowcollapse' : 'e-detailrowexpand';\n }\n var td = cellRenderer.render(row.cells[parseInt(i.toString(), 10)], row.data, attrs, row.isExpand, isEdit);\n if (row.cells[parseInt(i.toString(), 10)].cellType !== CellType.Filter) {\n if (row.cells[parseInt(i.toString(), 10)].cellType === CellType.Data\n || row.cells[parseInt(i.toString(), 10)].cellType === CellType.CommandColumn) {\n var isReactChild = this_1.parent.parentDetails && this_1.parent.parentDetails.parentInstObj &&\n this_1.parent.parentDetails.parentInstObj.isReact;\n if (((this_1.parent.isReact && this_1.parent.requireTemplateRef) || (isReactChild &&\n this_1.parent.parentDetails.parentInstObj.requireTemplateRef)) && cell.isTemplate) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = this_1;\n thisRef_1.parent.renderTemplates(function () {\n var ariaAttr = td.getAttribute('aria-label');\n td.setAttribute('aria-label', td.innerText + ariaAttr);\n thisRef_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[parseInt(i.toString(), 10)].foreignKeyData,\n requestType: thisRef_1.parent.requestTypeAction\n }));\n });\n }\n else {\n this_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[parseInt(i.toString(), 10)].foreignKeyData,\n requestType: this_1.parent.requestTypeAction\n }));\n }\n var isRowSpanned = false;\n if (row.index > 0 && this_1.isSpan) {\n var rowsObject = this_1.parent.isFrozenGrid() ?\n this_1.parent.contentModule.tempFreezeRows : this_1.parent.getRowsObject();\n var prevRowCells = this_1.parent.groupSettings.columns.length > 0 &&\n !rowsObject[row.index - 1].isDataRow ? rowsObject[row.index].cells : rowsObject[row.index - 1].cells;\n var uid_1 = 'uid';\n var prevRowCell = prevRowCells.filter(function (cell) {\n return cell.column.uid === row.cells[parseInt(i.toString(), 10)].column[\"\" + uid_1];\n })[0];\n isRowSpanned = prevRowCell.isRowSpanned ? prevRowCell.isRowSpanned : prevRowCell.rowSpanRange > 1;\n }\n if (cellArgs.colSpan > 1 || row.cells[parseInt(i.toString(), 10)].cellSpan > 1 || cellArgs.rowSpan > 1\n || isRowSpanned) {\n this_1.isSpan = true;\n var cellMerge = new CellMergeRender(this_1.serviceLocator, this_1.parent);\n td = cellMerge.render(cellArgs, row, i, td);\n }\n }\n if (!row.cells[parseInt(i.toString(), 10)].isSpanned) {\n tr.appendChild(td);\n }\n }\n };\n var this_1 = this;\n for (var i = 0, len = row.cells.length; i < len; i++) {\n _loop_2(i, len);\n }\n var args = { row: tr, rowHeight: this.parent.rowHeight };\n if (row.isDataRow) {\n var eventArg_1 = extend(rowArgs, args);\n eventArg_1.isSelectable = true;\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var cellTemplate = eventArg_1.row.querySelectorAll('.e-templatecell');\n if (((this.parent.isReact && this.parent.requireTemplateRef) || (isReactChild &&\n this.parent.parentDetails.parentInstObj.requireTemplateRef)) && cellTemplate.length) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_2 = this;\n thisRef_2.parent.renderTemplates(function () {\n thisRef_2.parent.trigger(rowDataBound, eventArg_1);\n });\n }\n else {\n this.parent.trigger(rowDataBound, eventArg_1);\n }\n row.isSelectable = eventArg_1.isSelectable;\n var isDraggable = this.parent.isRowDragable();\n if (this.parent.allowPaging && this.parent.selectionSettings.persistSelection) {\n var primaryKey_1 = this.parent.getPrimaryKeyFieldNames()[0];\n var pKey_1 = row.data ? row.data[\"\" + primaryKey_1] : null;\n var SelectedRecords = eventArg_1.isSelectable ? this.parent.partialSelectedRecords :\n this.parent.disableSelectedRecords;\n if (!SelectedRecords.some(function (data) { return data[\"\" + primaryKey_1] === pKey_1; })) {\n SelectedRecords.push(row.data);\n }\n }\n if (!eventArg_1.isSelectable) {\n this.parent.selectionModule.isPartialSelection = true;\n row.isSelected = false;\n var chkBox = args.row.querySelectorAll('.e-rowcell.e-gridchkbox');\n var isDrag = eventArg_1.row.querySelector('.e-rowdragdrop');\n var cellIdx = this.parent.groupSettings.columns.length + (isDrag || this.parent.isDetail() ? 1 : 0);\n for (var i = 0; i < chkBox.length; i++) {\n chkBox[parseInt(i.toString(), 10)].firstElementChild.classList.add('e-checkbox-disabled');\n chkBox[parseInt(i.toString(), 10)].querySelector('.e-frame').classList.remove('e-check');\n }\n if (row.cells.length) {\n for (var i = cellIdx; i < row.cells.length; i++) {\n var cell = eventArg_1.row.querySelector('.e-rowcell[data-colindex=\"' + row.cells[parseInt(i.toString(), 10)].index + '\"]');\n if (cell) {\n removeClass([cell], ['e-selectionbackground', 'e-active']);\n }\n }\n }\n if (isDrag) {\n removeClass([isDrag], ['e-selectionbackground', 'e-active']);\n }\n }\n if (this.parent.childGrid || isDraggable || this.parent.detailTemplate) {\n var td = tr.querySelectorAll('.e-rowcell:not(.e-hide)')[0];\n if (td) {\n td.classList.add('e-detailrowvisible');\n }\n }\n }\n if (this.parent.enableVirtualization) {\n rowArgs.rowHeight = this.parent.rowHeight;\n }\n if (rowArgs.rowHeight) {\n tr.style.height = rowArgs.rowHeight + 'px';\n }\n else if (this.parent.rowHeight && (tr.querySelector('.e-headercell') || tr.querySelector('.e-groupcaption'))) {\n tr.style.height = this.parent.rowHeight + 'px';\n }\n if (row.cssClass) {\n tr.classList.add(row.cssClass);\n }\n if (row.lazyLoadCssClass) {\n tr.classList.add(row.lazyLoadCssClass);\n }\n if (this.parent.rowRenderingMode === 'Vertical' && this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Header'\n || this.parent.textWrapSettings.wrapMode === 'Both')) {\n tr.classList.add('e-verticalwrap');\n }\n var vFTable = this.parent.enableColumnVirtualization && this.parent.frozenColumns !== 0;\n if (!vFTable && this.parent.aggregates.length && this.parent.element.scrollHeight > this.parent.height) {\n for (var i = 0; i < this.parent.aggregates.length; i++) {\n var property = 'properties';\n var column = 'columns';\n if (this.parent.aggregates[parseInt(i.toString(), 10)][\"\" + property][\"\" + column][0].footerTemplate) {\n var summarycell = [].slice.call(tr.getElementsByClassName('e-summarycell'));\n if (summarycell.length) {\n var lastSummaryCell = (summarycell[summarycell.length - 1]);\n addClass([lastSummaryCell], ['e-lastsummarycell']);\n var firstSummaryCell = (summarycell[0]);\n addClass([firstSummaryCell], ['e-firstsummarycell']);\n }\n }\n }\n }\n return tr;\n };\n RowRenderer.prototype.refreshMergeCells = function (row) {\n for (var _i = 0, _a = row.cells; _i < _a.length; _i++) {\n var cell = _a[_i];\n cell.isSpanned = false;\n }\n return row;\n };\n /* eslint-disable */\n /**\n * Function to check and add alternative row css class.\n *\n * @param {Element} tr - specifies the tr element\n * @param {Row} row - specifies the row\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.buildAttributeFromRow = function (tr, row) {\n var attr = {};\n var prop = { 'rowindex': literals.dataRowIndex, 'dataUID': 'data-uid', 'ariaSelected': 'aria-selected' };\n var classes = [];\n if (row.isDataRow) {\n classes.push(literals.row);\n }\n if (row.isAltRow) {\n classes.push('e-altrow');\n }\n if (row.isCaptionRow) {\n classes.push('e-groupcaptionrow');\n }\n if (row.isAggregateRow && row.parentUid) {\n classes.push('e-groupfooterrow');\n }\n if (!isNullOrUndefined(row.index)) {\n attr[literals.ariaRowIndex] = row.index + 1;\n attr[prop.rowindex] = row.index;\n }\n if (row.rowSpan) {\n attr.rowSpan = row.rowSpan;\n }\n if (row.uid) {\n attr[prop.dataUID] = row.uid;\n }\n if (row.isSelected) {\n attr[prop.ariaSelected] = true;\n }\n if (row.visible === false) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(tr, attr);\n };\n return RowRenderer;\n}());\nexport { RowRenderer };\n","/**\n * AriaService\n *\n * @hidden\n */\nvar AriaService = /** @class */ (function () {\n function AriaService() {\n }\n AriaService.prototype.setOptions = function (target, options) {\n var props = Object.keys(options);\n for (var i = 0; i < props.length; i++) {\n setStateAndProperties(target, config[props[parseInt(i.toString(), 10)]], options[props[parseInt(i.toString(), 10)]]);\n }\n };\n AriaService.prototype.setExpand = function (target, expand) {\n setStateAndProperties(target, config.expand, expand);\n };\n AriaService.prototype.setSort = function (target, direction) {\n setStateAndProperties(target, config.sort, direction, typeof direction === 'boolean');\n };\n AriaService.prototype.setBusy = function (target, isBusy) {\n setStateAndProperties(target, config.busy, isBusy);\n setStateAndProperties(target, config.invalid, null, true);\n };\n AriaService.prototype.setGrabbed = function (target, isGrabbed, remove) {\n setStateAndProperties(target, config.grabbed, isGrabbed, remove);\n };\n AriaService.prototype.setDropTarget = function (target, isTarget) {\n setStateAndProperties(target, config.dropeffect, 'copy', !isTarget);\n };\n return AriaService;\n}());\nexport { AriaService };\n/**\n * @param {HTMLElement} target - specifies the target\n * @param {string} attribute - specifies the attribute\n * @param {ValueType} value - specifies the value\n * @param {boolean} remove - specifies the boolean for remove\n * @returns {void}\n * @hidden\n */\nfunction setStateAndProperties(target, attribute, value, remove) {\n if (remove && target) {\n target.removeAttribute(attribute);\n return;\n }\n if (target) {\n target.setAttribute(attribute, value);\n }\n}\nvar config = {\n expand: 'aria-expanded',\n role: 'role',\n datarole: 'data-role',\n selected: 'aria-selected',\n multiselectable: 'aria-multiselectable',\n sort: 'aria-sort',\n busy: 'aria-busy',\n invalid: 'aria-invalid',\n grabbed: 'aria-grabbed',\n dropeffect: 'aria-dropeffect',\n haspopup: 'aria-haspopup',\n level: 'aria-level',\n colcount: 'aria-colcount',\n rowcount: 'aria-rowcount'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { EventHandler, getValue, closest, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, extend, Browser } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport * as event from '../base/constant';\nimport { Row } from '../models/row';\nimport { RowModelGenerator } from './row-model-generator';\nimport { parentsUntil, addRemoveEventListener, findCellIndex } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * FocusStrategy class\n *\n * @hidden\n */\nvar FocusStrategy = /** @class */ (function () {\n function FocusStrategy(parent) {\n this.currentInfo = {};\n this.oneTime = true;\n this.swap = {};\n /** @hidden */\n this.isInfiniteScroll = false;\n this.forget = false;\n this.skipFocus = true;\n this.focusByClick = false;\n this.firstHeaderCellClick = false;\n this.prevIndexes = {};\n this.refMatrix = this.refreshMatrix(true);\n this.actions = ['downArrow', 'upArrow'];\n this.isVirtualScroll = false;\n this.parent = parent;\n this.rowModelGen = new RowModelGenerator(this.parent);\n this.addEventListener();\n }\n FocusStrategy.prototype.focusCheck = function (e) {\n var target = e.target;\n this.focusByClick = true;\n this.firstHeaderCellClick = true;\n this.skipFocus = target.classList.contains('e-grid');\n };\n FocusStrategy.prototype.onFocus = function (e) {\n if (this.parent.isDestroyed || Browser.isDevice || this.parent.enableVirtualization\n || this.parent.element.querySelector('.e-masked-table') || (!this.parent.isInitialLoad && e\n && e.target === this.parent.element && this.parent.element.querySelector('.e-spin-show'))) {\n return;\n }\n this.setActive(!this.parent.enableHeaderFocus && this.parent.frozenRows === 0, this.parent.isFrozenGrid());\n if (!this.parent.enableHeaderFocus && !this.parent.getCurrentViewRecords().length && ((this.parent.editSettings.mode !== 'Batch')\n || (this.parent.editSettings.mode === 'Batch' && this.parent.editModule && !this.parent.editModule.getBatchChanges()[literals.addedRecords].length))) {\n this.getContent().matrix.\n generate(this.rowModelGen.generateRows({ rows: [new Row({ isDataRow: true })] }), this.getContent().selector, false);\n }\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n if (this.skipFocus && !(e && e.target === this.parent.element)) {\n this.focus(e);\n this.skipFocus = false;\n }\n };\n FocusStrategy.prototype.passiveFocus = function (e) {\n if (this.parent.isDestroyed) {\n return;\n }\n var firstHeaderCell = this.parent.getHeaderContent().querySelector('.e-headercell');\n var lastRowCell = this.parent.getContentTable().querySelector('tr:last-child td:last-child');\n if ((e.target === firstHeaderCell || lastRowCell) && e.relatedTarget && !parentsUntil(e.relatedTarget, 'e-grid')\n && !this.firstHeaderCellClick) {\n this.currentInfo.element = e.target;\n this.currentInfo.elementToFocus = e.target;\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n this.firstHeaderCellClick = false;\n if (e.target && e.target.classList.contains('e-detailcell')) {\n this.currentInfo.skipAction = false;\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n };\n FocusStrategy.prototype.onBlur = function (e) {\n // The below boolean condition for gantt team focus fix.\n var isGantt = parentsUntil(e.target, 'e-gantt') && e.target.classList.contains('e-rowcell')\n && (!isNullOrUndefined(e.target.nextElementSibling)\n && e.target.nextElementSibling.classList.contains('e-rowcell')) ? true : false;\n if ((this.parent.isEdit || e && (!e.relatedTarget || closest(e.relatedTarget, '.e-grid'))\n && !(this.parent.element.classList.contains('e-childgrid') && !this.parent.element.matches(':focus-within')))\n && !(!isGantt && isNullOrUndefined(e.relatedTarget) && parseInt(e.target.getAttribute('data-colindex'), 10) === 0\n && parseInt(e.target.getAttribute('index'), 10) === 0) && !(!isGantt && isNullOrUndefined(e.relatedTarget)\n && !closest(document.activeElement, '.e-grid') && !isNullOrUndefined(e['sourceCapabilities']))) {\n return;\n }\n this.removeFocus();\n this.skipFocus = true;\n this.currentInfo.skipAction = false;\n this.setLastContentCellTabIndex();\n this.setFirstFocusableTabIndex();\n this.firstHeaderCellClick = false;\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.setFirstFocusableTabIndex = function () {\n var gObj = this.parent;\n gObj.element.tabIndex = -1;\n if (gObj.allowGrouping && gObj.groupSettings.showDropArea) {\n var groupModule = gObj.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length > 0) {\n groupModule.element.tabIndex = -1;\n focusableGroupedItems[0].tabIndex = 0;\n }\n else {\n groupModule.element.tabIndex = 0;\n }\n return;\n }\n if (gObj.toolbar || gObj.toolbarTemplate) {\n var toolbarElement = gObj.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n if (focusableToolbarItems.length > 0 && focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input')) {\n toolbarElement.tabIndex = -1;\n focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').tabIndex = 0;\n }\n else {\n toolbarElement.tabIndex = 0;\n }\n return;\n }\n if (gObj.getColumns().length) {\n var firstHeaderCell = gObj.getHeaderContent().querySelector('.e-headercell');\n firstHeaderCell.tabIndex = 0;\n if (this.parent.isFrozenGrid() && (this.parent.getFrozenMode() === 'Left'\n || this.parent.getFrozenMode() === literals.leftRight)) {\n this.setActive(false, true);\n }\n else {\n this.setActive(false);\n }\n if (!isNullOrUndefined(this.active) && (isNullOrUndefined(this.active.target) || !this.active.target.classList.contains('e-columnmenu'))) {\n var firstHeaderCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstHeaderCellIndex[0]][firstHeaderCellIndex[1]] === 0) {\n firstHeaderCellIndex = findCellIndex(this.active.matrix.matrix, firstHeaderCellIndex, true);\n }\n this.active.matrix.current = firstHeaderCellIndex;\n }\n return;\n }\n };\n FocusStrategy.prototype.setLastContentCellTabIndex = function () {\n var contentTable = this.parent.getContentTable();\n if (contentTable.rows[contentTable.rows.length - 1]) {\n var lastCell = contentTable.rows[contentTable.rows.length - 1].lastElementChild;\n lastCell.tabIndex = 0;\n }\n };\n FocusStrategy.prototype.onClick = function (e, force) {\n if (parentsUntil(e.target, 'e-filterbarcell') && (parentsUntil(e.target, 'e-multiselect') ||\n e.target.classList.contains('e-input-group-icon'))) {\n return;\n }\n var isContent = !isNullOrUndefined(closest(e.target, '.' + literals.gridContent));\n var isHeader = !isNullOrUndefined(closest(e.target, '.' + literals.gridHeader));\n isContent = isContent && isHeader ? !isContent : isContent;\n var isFrozen = !isNullOrUndefined(closest(e.target, '.' + literals.frozenContent)) ||\n !isNullOrUndefined(closest(e.target, '.' + literals.frozenHeader));\n var isFrozenRight = false;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n isFrozenRight = !isNullOrUndefined(closest(e.target, '.e-frozen-right-content')) ||\n !isNullOrUndefined(closest(e.target, '.e-frozen-right-header'));\n isFrozen = isFrozen && !isFrozenRight;\n }\n if (!isContent && isNullOrUndefined(closest(e.target, '.' + literals.gridHeader)) ||\n e.target.classList.contains(literals.content) ||\n !isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n return;\n }\n this.setActive(isContent, isFrozen, isFrozenRight);\n if (!isContent && isNullOrUndefined(closest(e.target, '.' + literals.gridHeader))) {\n this.clearOutline();\n return;\n }\n var beforeArgs = { cancel: false, byKey: false, byClick: !isNullOrUndefined(e.target), clickArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel || closest(e.target, '.e-inline-edit')) {\n return;\n }\n this.setActive(isContent, isFrozen, isFrozenRight);\n if (this.getContent()) {\n var returnVal = this.getContent().onClick(e, force);\n if (returnVal === false) {\n return;\n }\n if (this.parent.isFrozenGrid() && isHeader && e.target === this.parent.getHeaderContent().firstChild\n && this.active.matrix.current[0] === -1 && this.active.matrix.current[1] === this.active.matrix.columns) {\n this.active.matrix.current = [0, 0];\n }\n this.focus();\n if (this.currentInfo.element.classList.contains('e-rowcell')) {\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n }\n };\n FocusStrategy.prototype.onKeyPress = function (e) {\n var isFrozenGrid = this.parent.isFrozenGrid();\n if (this.parent.allowPaging) {\n var pagerElement = this.parent.pagerModule.pagerObj.element;\n var focusablePagerElements = this.parent.pagerModule.pagerObj.getFocusablePagerElements(pagerElement, []);\n if (this.parent.childGrid && this.allowToPaging(e) && focusablePagerElements.length) {\n focusablePagerElements[0].tabIndex = 0;\n }\n if (this.parent.pagerModule.pagerObj.checkPagerHasFocus()) {\n if (e.action === 'shiftTab' && focusablePagerElements.length && focusablePagerElements[0] === e.target) {\n this.setActive(true);\n var lastHeaderCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastHeaderCellIndex[0]][lastHeaderCellIndex[1]] === 0) {\n lastHeaderCellIndex = findCellIndex(this.active.matrix.matrix, lastHeaderCellIndex, false);\n }\n this.active.matrix.current = this.parent.editSettings.mode === 'Batch' ?\n this.isValidBatchEditCell(lastHeaderCellIndex) ? lastHeaderCellIndex :\n this.findBatchEditCell(lastHeaderCellIndex, false) : lastHeaderCellIndex;\n e.preventDefault();\n this.focus(e);\n return;\n }\n if (!(e.action === 'tab' && this.parent.element.classList.contains('e-childgrid')\n && ((!this.parent.pageSettings.pageSizes && focusablePagerElements.length\n && focusablePagerElements[focusablePagerElements.length - 1] === e.target)\n || (this.parent.pagerModule.pagerObj.getDropDownPage() === e.target)))) {\n this.parent.pagerModule.pagerObj.changePagerFocus(e);\n return;\n }\n else {\n var parentCell = parentsUntil(this.parent.element, 'e-detailcell');\n removeClass([this.parent.element], ['e-focus']);\n removeClass([parentCell], ['e-focused']);\n parentCell.tabIndex = -1;\n }\n }\n if (this.parent.pagerModule.pagerObj.element.tabIndex === 0 && (e.keyCode === 38 || (e.shiftKey && e.keyCode === 9))) {\n e.preventDefault();\n this.focus(e);\n return;\n }\n else if (this.parent.pagerModule.pagerObj.element.tabIndex === 0 && e.keyCode === 9) {\n e.preventDefault();\n this.parent.pagerModule.pagerObj.setPagerFocus();\n return;\n }\n if (this.parent.pagerModule.pagerObj.checkFirstPagerFocus()) {\n var lastRow = this.getContent().matrix.rows;\n var lastColumn = this.getContent().matrix.columns;\n this.getContent().matrix.current = [lastRow, lastColumn];\n }\n }\n if (this.skipOn(e)) {\n return;\n }\n if (e.target && parentsUntil(e.target, 'e-gridcontent') && !isFrozenGrid) {\n var rows = [].slice.call(this.parent.getContentTable().rows);\n var lastCell = rows[rows.length - 1].lastElementChild;\n if (e.target === lastCell) {\n this.setActive(true);\n this.setLastContentCellActive();\n }\n }\n if (e.action === 'shiftTab' && e.target && (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea'))) {\n if (e.target === this.parent.element) {\n if (this.parent.element.classList.contains('e-childgrid')) {\n this.focusOutFromChildGrid(e);\n }\n return;\n }\n if (parentsUntil(e.target, 'e-groupdroparea')) {\n if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n return;\n }\n if (parentsUntil(e.target, 'e-toolbar')) {\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n e.preventDefault();\n if (focusableGroupedItems.length > 0) {\n focusableGroupedItems[focusableGroupedItems.length - 1].focus();\n }\n else {\n groupModule.element.focus();\n }\n }\n else if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n return;\n }\n }\n var focusFirstHeaderCell = false;\n if (e.action === 'tab' && e.target && (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea'))) {\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea\n && (e.target === this.parent.element || e.target.classList.contains('e-groupdroparea'))) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length > 0) {\n e.preventDefault();\n focusableGroupedItems[0].focus();\n return;\n }\n if (!e.target.classList.contains('e-groupdroparea')) {\n e.preventDefault();\n groupModule.element.focus();\n return;\n }\n }\n if ((this.parent.toolbar || this.parent.toolbarTemplate) && (e.target === this.parent.element\n || parentsUntil(e.target, 'e-groupdroparea')\n || e.target.classList.contains('e-toolbar'))) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n if (focusableToolbarItems.length > 0) {\n e.preventDefault();\n focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').focus();\n return;\n }\n if (!e.target.classList.contains('e-toolbar')) {\n e.preventDefault();\n toolbarElement.focus();\n return;\n }\n }\n if (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea')) {\n focusFirstHeaderCell = true;\n }\n }\n if (focusFirstHeaderCell) {\n if (isFrozenGrid && (this.parent.getFrozenMode() === 'Left'\n || this.parent.getFrozenMode() === literals.leftRight)) {\n this.setActive(false, true);\n }\n else if (this.parent.allowGrouping && this.parent.groupSettings.columns.length === this.parent.columns.length) {\n this.setActive(true);\n }\n else {\n this.setActive(false);\n }\n this.active.matrix.current = [0, -1];\n }\n this.activeKey = e.action;\n var beforeArgs = { cancel: false, byKey: true, byClick: false, keyArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel) {\n return;\n }\n var bValue = this.getContent().matrix.current;\n var prevActiveName = this.getActiveName();\n var prevBatchValue = this.active && this.active.matrix.current ?\n [this.active.matrix.current[0], this.active.matrix.current[1]] : undefined;\n this.currentInfo.outline = true;\n var swapInfo = this.getContent().jump(e.action, bValue);\n this.swap = swapInfo;\n if (swapInfo.swap && !(isFrozenGrid && this.parent.editSettings.mode === 'Batch'\n && (e.action === 'tab' || e.action === 'shiftTab'))) {\n this.setActive(!swapInfo.toHeader, swapInfo.toFrozen, swapInfo.toFrozenRight);\n this.getContent().matrix.current = this.getContent().getNextCurrent(bValue, swapInfo, this.active, e.action);\n this.prevIndexes = {};\n }\n this.setActiveByKey(e.action, this.getContent());\n var returnVal = isFrozenGrid && this.parent.editSettings.mode === 'Batch' && e.target && (e.action === 'tab'\n || e.action === 'shiftTab') && (parentsUntil(e.target, 'e-gridheader')\n || parentsUntil(e.target, 'e-gridcontent')) ? undefined\n : this.content.lastIdxCell ? false : this.getContent().onKeyPress(e);\n if (e.target && parentsUntil(e.target, 'e-gridheader')) {\n if (!isFrozenGrid) {\n if (e.action === 'tab' && bValue.toString() === this.active.matrix.current.toString()) {\n var nextHeaderCellIndex = findCellIndex(this.active.matrix.matrix, this.active.matrix.current, true);\n var lastHeaderCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastHeaderCellIndex[0]][lastHeaderCellIndex[1]] === 0) {\n lastHeaderCellIndex = findCellIndex(this.active.matrix.matrix, lastHeaderCellIndex, false);\n }\n if (this.active.matrix.current.toString() === lastHeaderCellIndex.toString()) {\n returnVal = true;\n this.setActive(true);\n var firstContentCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(this.active.matrix.matrix, [0, 0], true);\n }\n this.active.matrix.current = this.parent.editSettings.mode === 'Batch' ?\n this.isValidBatchEditCell(firstContentCellIndex) ? firstContentCellIndex :\n this.findBatchEditCell(firstContentCellIndex, true) : firstContentCellIndex;\n }\n else if (this.active.matrix.current.toString() !== nextHeaderCellIndex.toString()) {\n this.active.matrix.current = nextHeaderCellIndex;\n }\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString()) {\n var previousCellIndex = findCellIndex(this.active.matrix.matrix, this.active.matrix.current, false);\n if (previousCellIndex.toString() === this.active.matrix.current.toString()) {\n this.focusOutFromHeader(e);\n return;\n }\n if (this.active.matrix.current.toString() !== previousCellIndex.toString() && !returnVal) {\n returnVal = true;\n this.active.matrix.current = previousCellIndex;\n }\n }\n }\n else {\n if (this.parent.editSettings.mode === 'Batch' && (e.action === 'tab' || e.action === 'shiftTab')) {\n this.setFrozenBatchEditCell(prevActiveName, prevBatchValue, e.action === 'tab' ? true : false);\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString() && !swapInfo.swap\n && !(this.parent.editSettings.mode === 'Batch' && !(this.getActiveName() === prevActiveName))) {\n this.focusOutFromHeader(e);\n return;\n }\n }\n }\n if (e.target && parentsUntil(e.target, 'e-gridcontent')) {\n if (!isFrozenGrid) {\n if (this.parent.editSettings.mode === 'Batch' && (e.action === 'tab' || e.action === 'shiftTab')) {\n this.active.matrix.current = this.findBatchEditCell(prevBatchValue, e.action === 'tab' ? true : false);\n if (e.action === 'tab' && prevBatchValue.toString() === this.active.matrix.current.toString()) {\n this.parent.editModule.editModule.addBatchRow = true;\n }\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString()) {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length === this.parent.columns.length) {\n this.focusOutFromHeader(e);\n return;\n }\n var firstContentCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(this.active.matrix.matrix, [0, 0], true);\n }\n if (!returnVal && (firstContentCellIndex.toString() === this.active.matrix.current.toString()\n || (this.parent.editSettings.mode === 'Batch'\n && prevBatchValue.toString() === this.active.matrix.current.toString()))) {\n returnVal = true;\n this.setActive(false);\n this.setLastContentCellActive();\n }\n }\n }\n else {\n if (this.parent.editSettings.mode === 'Batch' && (e.action === 'tab' || e.action === 'shiftTab')) {\n this.setFrozenBatchEditCell(prevActiveName, prevBatchValue, e.action === 'tab' ? true : false);\n if (e.action === 'tab' && prevBatchValue.toString() === this.active.matrix.current.toString()\n && this.getActiveName() === prevActiveName) {\n this.parent.editModule.editModule.addBatchRow = true;\n }\n }\n }\n }\n if (returnVal === false) {\n this.clearIndicator();\n if (e.action === 'shiftTab' && bValue.toString() === [0, 0].toString()) {\n this.parent.element.tabIndex = -1;\n }\n if (this.parent.allowPaging && !this.parent.pagerModule.pagerObj.checkPagerHasFocus() && this.allowToPaging(e)\n && bValue.toString() !== [0, 0].toString()) {\n e.preventDefault();\n if (e.keyCode === 40) {\n this.parent.pagerModule.pagerObj.setPagerContainerFocus();\n return;\n }\n else if (e.keyCode === 9) {\n this.parent.pagerModule.pagerObj.setPagerFocus();\n return;\n }\n }\n if (this.parent.element.classList.contains('e-childgrid')) {\n this.focusOutFromChildGrid(e);\n }\n return;\n }\n e.preventDefault();\n this.focus(e);\n };\n FocusStrategy.prototype.isValidBatchEditCell = function (cellIndex) {\n var cell = this.active.getTable().rows[cellIndex[0]].cells[cellIndex[1]];\n var tr = closest(cell, 'tr');\n var cellColIndex = parseInt(cell.getAttribute('data-colindex'), 10);\n var cellCol = this.parent.getColumns()[parseInt(cellColIndex.toString(), 10)];\n if (this.active.matrix.matrix[cellIndex[0]][cellIndex[1]] === 1\n && (!tr.classList.contains('e-row') || (tr.classList.contains('e-insertedrow') || !cellCol.isPrimaryKey) && cellCol.allowEditing)) {\n return true;\n }\n return false;\n };\n FocusStrategy.prototype.findBatchEditCell = function (currentCellIndex, next, limitRow) {\n var cellIndex = currentCellIndex;\n var tempCellIndex = currentCellIndex;\n var cellIndexObtain = false;\n while (!cellIndexObtain) {\n var prevTempCellIndex = tempCellIndex;\n tempCellIndex = findCellIndex(this.active.matrix.matrix, tempCellIndex, next);\n if ((prevTempCellIndex.toString() === tempCellIndex.toString())\n || (limitRow && prevTempCellIndex[0] !== tempCellIndex[0])) {\n cellIndexObtain = true;\n continue;\n }\n if (this.isValidBatchEditCell(tempCellIndex)) {\n cellIndex = tempCellIndex;\n cellIndexObtain = true;\n }\n }\n return cellIndex;\n };\n FocusStrategy.prototype.setFrozenBatchEditCell = function (currentActiveName, currentCellIndex, next, nextRow) {\n var gObj = this.parent;\n var nextCell;\n var nextSection = false;\n if (nextRow !== undefined) {\n nextCell = [nextRow, next ? 0 : this.active.matrix.matrix[parseInt(nextRow.toString(), 10)].length - 1];\n }\n else {\n nextCell = next ? [currentCellIndex[0], currentCellIndex[1] + 1] : [currentCellIndex[0], currentCellIndex[1] - 1];\n }\n if (this.active.matrix.matrix[nextCell[0]] && this.active.matrix.matrix[nextCell[0]][nextCell[1]]) {\n if (this.isValidBatchEditCell(nextCell)) {\n this.active.matrix.current = nextCell;\n }\n else {\n var prevNextCell = nextCell;\n nextCell = this.findBatchEditCell(nextCell, next, true);\n if (prevNextCell.toString() === nextCell.toString()) {\n nextSection = true;\n }\n else {\n this.active.matrix.current = nextCell;\n }\n }\n }\n else {\n nextSection = true;\n }\n if (nextSection) {\n var activeName = this.getActiveName();\n var frozenMode = gObj.getFrozenMode();\n var rowIndex = nextCell[0];\n var rowDec = rowIndex - 1;\n var rowInc = rowIndex + 1;\n var notPrev = !next && rowDec === -1;\n var notNext = next && rowInc > this.active.matrix.matrix.length - 1;\n var returnCurrentActiveName = ((activeName === 'FrozenLeftHeader' || (activeName === 'Movableheader'\n && frozenMode === 'Right')) && notPrev) || ((activeName === 'FrozenRightContent' || (activeName === 'MovableContent'\n && frozenMode === 'Left')) && notNext);\n if (returnCurrentActiveName) {\n this.setActiveByName(currentActiveName);\n this.active.matrix.current = currentCellIndex;\n }\n else {\n var frozenLeftRightPrev = frozenMode === 'Left-Right' && !next;\n var frozenLeftRightNext = frozenMode === 'Left-Right' && next;\n var frozenLeftNotNext = frozenMode === 'Left' && notNext;\n var frozenLeftNext = frozenMode === 'Left' && next;\n var frozenRightPrev = frozenMode === 'Right' && !next;\n var frozenRightNotPrev = frozenMode === 'Right' && notPrev;\n var content = (activeName === 'Movableheader' && frozenLeftNotNext) || (activeName === 'FrozenRightHeader'\n && notNext) || (activeName === 'FrozenLeftContent' && !notPrev) || (activeName === 'MovableContent'\n && !frozenRightNotPrev) || activeName === 'FrozenRightContent';\n var frozenContent = ((activeName === 'Movableheader' || activeName === 'MovableContent')\n && !frozenLeftRightNext) || ((activeName === 'FrozenRightHeader' || activeName === 'FrozenRightContent')\n && frozenLeftRightNext);\n var frozenRightContent = ((activeName === 'FrozenLeftHeader' || activeName === 'FrozenLeftContent')\n && frozenLeftRightPrev) || ((activeName === 'Movableheader' || activeName === 'MovableContent')\n && frozenLeftRightNext);\n this.setActive(content, frozenContent, frozenRightContent);\n var nextIndex = (activeName === 'Movableheader' && frozenLeftNotNext)\n || (activeName === 'FrozenRightHeader' && notNext) ? 0\n : ((activeName === 'Movableheader' || activeName === 'MovableContent') && frozenLeftNext)\n || ((activeName === 'FrozenRightHeader' || activeName === 'FrozenRightContent') && next) ? rowInc\n : (activeName === 'FrozenLeftContent' && notPrev)\n || (activeName === 'MovableContent' && frozenRightNotPrev) ? this.active.matrix.matrix.length - 1\n : ((activeName === 'FrozenLeftHeader' || activeName === 'FrozenLeftContent') && !next)\n || ((activeName === 'Movableheader' || activeName === 'MovableContent') && frozenRightPrev) ? rowDec\n : rowIndex;\n this.setFrozenBatchEditCell(currentActiveName, currentCellIndex, next, nextIndex);\n }\n }\n };\n FocusStrategy.prototype.getActiveName = function () {\n var activeName;\n if (this.active) {\n var activeTable = this.active.getTable();\n activeName = parentsUntil(activeTable, 'e-frozen-left-header') ? 'FrozenLeftHeader' :\n parentsUntil(activeTable, 'e-movableheader') ? 'Movableheader' :\n parentsUntil(activeTable, 'e-frozen-right-header') ? 'FrozenRightHeader' :\n parentsUntil(activeTable, 'e-frozen-left-content') ? 'FrozenLeftContent' :\n parentsUntil(activeTable, 'e-movablecontent') ? 'MovableContent' :\n parentsUntil(activeTable, 'e-frozen-right-content') ? 'FrozenRightContent' :\n undefined;\n }\n return activeName;\n };\n FocusStrategy.prototype.setActiveByName = function (activeName) {\n var frozenMode = this.parent.getFrozenMode();\n switch (activeName) {\n case 'FrozenLeftHeader':\n this.setActive(false, true);\n break;\n case 'Movableheader':\n this.setActive(false);\n break;\n case 'FrozenRightHeader':\n this.setActive(false, frozenMode === 'Right' ? true : false, frozenMode === 'Right' ? false : true);\n break;\n case 'FrozenLeftContent':\n this.setActive(true, true);\n break;\n case 'MovableContent':\n this.setActive(true);\n break;\n case 'FrozenRightContent':\n this.setActive(true, frozenMode === 'Right' ? true : false, frozenMode === 'Right' ? false : true);\n break;\n }\n };\n FocusStrategy.prototype.setLastContentCellActive = function () {\n var lastContentCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastContentCellIndex[0]][lastContentCellIndex[1]] === 0) {\n lastContentCellIndex = findCellIndex(this.active.matrix.matrix, lastContentCellIndex, false);\n }\n this.active.matrix.current = lastContentCellIndex;\n };\n FocusStrategy.prototype.focusOutFromChildGrid = function (e) {\n var parentTable = parentsUntil(this.parent.element, 'e-table');\n var parentGrid = parentsUntil(parentTable, 'e-grid').ej2_instances[0];\n var parentCell = parentsUntil(this.parent.element, 'e-detailcell');\n var uid = parentsUntil(this.parent.element, 'e-detailrow').getAttribute('data-uid');\n var parentRows = [].slice.call(parentGrid.getContentTable().rows);\n var parentRowIndex = parentRows.map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n if (e.action === 'tab' && parentRowIndex >= parentRows.length - 1) {\n return;\n }\n removeClass([this.parent.element], ['e-focus']);\n removeClass([parentCell], ['e-focused']);\n parentCell.tabIndex = -1;\n e.preventDefault();\n var nextFocusCell;\n parentGrid.focusModule.removeFocus();\n if (e.action === 'shiftTab') {\n var previousRow = parentRows[parentRowIndex - 1];\n var rowCells = previousRow.cells;\n for (var i = rowCells.length - 1; i >= 0; i--) {\n nextFocusCell = rowCells[parseInt(i.toString(), 10)];\n if (!nextFocusCell.classList.contains('e-hide')) {\n parentGrid.focusModule.active.matrix.current = [parentRowIndex - 1, i];\n break;\n }\n }\n }\n else {\n nextFocusCell = parentRows[parentRowIndex + 1].cells[0];\n parentGrid.focusModule.active.matrix.current = [parentRowIndex + 1, 0];\n }\n parentGrid.focusModule.currentInfo.element = nextFocusCell;\n parentGrid.focusModule.currentInfo.elementToFocus = nextFocusCell;\n addClass([nextFocusCell], ['e-focused', 'e-focus']);\n nextFocusCell.tabIndex = 0;\n nextFocusCell.focus();\n };\n FocusStrategy.prototype.focusOutFromHeader = function (e) {\n this.removeFocus();\n if (this.parent.toolbar || this.parent.toolbarTemplate) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n e.preventDefault();\n if (focusableToolbarItems.length > 0) {\n focusableToolbarItems[focusableToolbarItems.length - 1].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').focus();\n }\n else {\n toolbarElement.focus();\n }\n return;\n }\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n e.preventDefault();\n if (focusableGroupedItems.length > 0) {\n focusableGroupedItems[focusableGroupedItems.length - 1].focus();\n }\n else {\n groupModule.element.focus();\n }\n return;\n }\n if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n };\n FocusStrategy.prototype.allowToPaging = function (e) {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.allowAdding && e.keyCode !== 40) {\n return false;\n }\n return true;\n };\n FocusStrategy.prototype.skipOn = function (e) {\n var target = e.target;\n if (!target) {\n return false;\n }\n if (this.currentInfo.skipAction) {\n this.clearIndicator();\n return true;\n }\n if (['pageUp', 'pageDown', 'altDownArrow'].indexOf(e.action) > -1) {\n this.clearIndicator();\n return true;\n }\n if (this.parent.allowGrouping) {\n var focusableGroupedItems = this.parent.groupModule.getFocusableGroupedItems();\n if (parentsUntil(e.target, 'e-groupheadercell')\n && !((e.target === focusableGroupedItems[0] && e.action === 'shiftTab')\n || (e.target === focusableGroupedItems[focusableGroupedItems.length - 1] && e.action === 'tab'))) {\n return true;\n }\n }\n if (this.parent.toolbar || this.parent.toolbarTemplate) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = toolbarElement\n .querySelectorAll('.e-toolbar-item:not(.e-overlay):not(.e-hidden)');\n if (parentsUntil(e.target, 'e-toolbar-item')\n && !(focusableToolbarItems.length > 0 && ((parentsUntil(e.target, 'e-toolbar-item') === focusableToolbarItems[0] && e.action === 'shiftTab')\n || (parentsUntil(e.target, 'e-toolbar-item') === focusableToolbarItems[focusableToolbarItems.length - 1] && e.action === 'tab')))) {\n return true;\n }\n }\n var th = closest(target, 'th') && !closest(target, 'th').tabIndex;\n if (e.target.classList.contains('e-filterbaroperator') && (e.keyCode === 13 || e.keyCode === 27)) {\n var inputTarget = closest(e.target, '.e-filterbarcell');\n inputTarget.querySelector('input').focus();\n }\n if (th && closest(document.activeElement, '.e-filterbarcell') !== null) {\n this.removeFocus();\n }\n var filterCell = closest(document.activeElement, '.e-filterbarcell') !== null;\n if (this.parent.enableHeaderFocus && filterCell) {\n var matrix = this.active.matrix;\n var current = matrix.current;\n filterCell = matrix.matrix[current[0]].lastIndexOf(1) !== current[1];\n }\n return (e.action === 'delete'\n || (this.parent.editSettings.mode !== 'Batch' && (this.parent.isEdit || ['insert', 'f2'].indexOf(e.action) > -1))\n || ((filterCell && this.parent.enableHeaderFocus) || (filterCell && e.action !== 'tab' && e.action !== 'shiftTab') ||\n closest(document.activeElement, '#' + this.parent.element.id + '_searchbar') !== null\n && ['enter', 'leftArrow', 'rightArrow',\n 'shiftLeft', 'shiftRight', 'ctrlPlusA'].indexOf(e.action) > -1)\n || (closest(target, '.' + literals.gridContent) === null && closest(target, '.' + literals.gridHeader) === null\n && !(e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea')))\n || (e.action === 'space' && (!target.classList.contains(literals.gridChkBox) && closest(target, '.' + literals.gridChkBox) === null\n && closest(target, '.e-headerchkcelldiv') === null))) || closest(target, '.e-filter-popup') !== null;\n };\n FocusStrategy.prototype.focusVirtualElement = function (e) {\n var _this = this;\n if (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) {\n var data = { virtualData: {}, isAdd: false, isCancel: false };\n this.parent.notify(event.getVirtualData, data);\n var isKeyFocus = this.actions.some(function (value) { return value === _this.activeKey; });\n var isSelected = this.parent.contentModule ?\n this.parent.contentModule.selectedRowIndex > -1 : false;\n if (data.isAdd || Object.keys(data.virtualData).length || isKeyFocus || data.isCancel || isSelected) {\n this.parent.notify(event.resetVirtualFocus, { isCancel: false });\n data.isCancel = false;\n this.parent.contentModule.selectedRowIndex = -1;\n if (isKeyFocus) {\n this.activeKey = this.empty;\n this.parent.notify('virtaul-key-handler', e);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n if (this.isVirtualScroll || this.isInfiniteScroll) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n this.currentInfo.elementToFocus.focus();\n }\n }\n }\n this.isVirtualScroll = this.isInfiniteScroll = false;\n };\n FocusStrategy.prototype.getFocusedElement = function () {\n return this.currentInfo.elementToFocus;\n };\n FocusStrategy.prototype.getContent = function () {\n return this.active || this.content;\n };\n FocusStrategy.prototype.setActive = function (content, isFrozen, isFrozenRight) {\n this.active = content ? isFrozen ? this.fContent : isFrozenRight ? this.frContent : this.content :\n isFrozen ? this.fHeader : isFrozenRight ? this.frHeader : this.header;\n };\n FocusStrategy.prototype.setFocusedElement = function (element, e) {\n var _this = this;\n this.currentInfo.elementToFocus = element;\n setTimeout(function () {\n if (!isNullOrUndefined(_this.currentInfo.elementToFocus)) {\n if (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling) {\n _this.focusVirtualElement(e);\n }\n else {\n _this.currentInfo.elementToFocus.focus();\n }\n }\n }, 0);\n };\n FocusStrategy.prototype.focus = function (e) {\n this.parent.notify(event.virtaulCellFocus, e);\n this.removeFocus();\n this.addFocus(this.getContent().getFocusInfo(), e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FocusStrategy.prototype.removeFocus = function (e) {\n if (!this.currentInfo.element) {\n return;\n }\n if (this.parent.isReact && this.currentInfo.element.classList.contains('e-rowcell') && !this.currentInfo.element.parentElement) {\n this.currentInfo.element = this.parent.getCellFromIndex(this.prevIndexes.rowIndex, this.prevIndexes.cellIndex);\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.currentInfo.element.tabIndex = -1;\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.addOutline = function () {\n var info = this.getContent().getFocusInfo();\n if (info.element) {\n addClass([info.element], ['e-focused']);\n addClass([info.elementToFocus], ['e-focus']);\n }\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.focusHeader = function () {\n this.setActive(false, this.parent.isFrozenGrid());\n this.resetFocus();\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.focusContent = function () {\n this.setActive(true, this.parent.isFrozenGrid());\n this.resetFocus();\n };\n FocusStrategy.prototype.resetFocus = function () {\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n this.focus();\n };\n FocusStrategy.prototype.addFocus = function (info, e) {\n this.currentInfo = info;\n this.currentInfo.outline = info.outline && (!isNullOrUndefined(e) || this.isVirtualScroll);\n if (this.isInfiniteScroll) {\n this.currentInfo.outline = true;\n }\n if (!info.element) {\n return;\n }\n var isFocused = info.elementToFocus.classList.contains('e-focus');\n if (isFocused) {\n return;\n }\n if (this.currentInfo.outline) {\n addClass([info.element], ['e-focused']);\n }\n addClass([info.elementToFocus], ['e-focus']);\n info.element.tabIndex = 0;\n if (!isFocused) {\n this.setFocusedElement(info.elementToFocus, e);\n }\n this.parent.notify(event.cellFocused, {\n element: info.elementToFocus,\n parent: info.element,\n indexes: this.getContent().matrix.current,\n byKey: !isNullOrUndefined(e),\n byClick: isNullOrUndefined(e),\n keyArgs: e,\n isJump: this.swap.swap,\n container: this.getContent().getInfo(e),\n outline: !isNullOrUndefined(e),\n swapInfo: this.swap\n });\n var _a = this.getContent().matrix.current, rowIndex = _a[0], cellIndex = _a[1];\n this.prevIndexes = { rowIndex: rowIndex, cellIndex: cellIndex };\n this.focusedColumnUid = this.parent.getColumnByIndex(cellIndex).uid;\n this.focusByClick = false;\n };\n FocusStrategy.prototype.refreshMatrix = function (content) {\n var _this = this;\n return function (e) {\n if (content && (e.args && e.args.isFrozen) && !_this.fContent) {\n _this.fContent = new FixedContentFocus(_this.parent);\n }\n else if (content && !_this.frContent && (e.args && e.args.renderFrozenRightContent)) {\n _this.frContent = new FixedRightContentFocus(_this.parent);\n }\n else if (content && !_this.content) {\n _this.content = new ContentFocus(_this.parent);\n }\n if (!content && (e.args && e.args.isFrozen) && !_this.fHeader) {\n _this.fHeader = new FixedHeaderFocus(_this.parent);\n }\n else if (!content && (e.args && e.args.renderFrozenRightContent) && !_this.frHeader) {\n _this.frHeader = new FixedRightHeaderFocus(_this.parent);\n }\n else if (!content && !_this.header) {\n _this.header = new HeaderFocus(_this.parent);\n }\n var cFocus = content ? (e.args && e.args.isFrozen) ? _this.fContent : (e.args && e.args.renderFrozenRightContent)\n ? _this.frContent : _this.content : (e.args && e.args.isFrozen) ? _this.fHeader : (e.args && e.args.renderFrozenRightContent)\n ? _this.frHeader : _this.header;\n var rows = content ? e.rows.slice(_this.parent.frozenRows) : e.rows;\n var updateRow = content ? e.rows.slice(0, _this.parent.frozenRows) : e.rows;\n if (_this.parent.isCollapseStateEnabled() && content) {\n rows = rows.filter(function (x) { return x.visible !== false; });\n }\n var isRowTemplate = !isNullOrUndefined(_this.parent.rowTemplate);\n var matrix = cFocus.matrix.generate(updateRow, cFocus.selector, isRowTemplate);\n if (e.name === 'batchAdd' && _this.parent.isFrozenGrid()) {\n var mRows = _this.parent.getMovableRowsObject().slice(_this.parent.frozenRows);\n var newMovableRows = mRows.map(function (row) { return row.clone(); });\n var newFrozenRows = rows.map(function (row) { return row.clone(); });\n _this.fContent.matrix.generate(newFrozenRows, _this.fContent.selector, isRowTemplate);\n _this.content.matrix.generate(newMovableRows, _this.content.selector, isRowTemplate);\n if (_this.parent.getFrozenMode() === literals.leftRight) {\n var frRows = _this.parent.getFrozenRightRowsObject().slice(_this.parent.frozenRows);\n var newfrRows = frRows.map(function (row) { return row.clone(); });\n _this.frContent.matrix.generate(newfrRows, _this.frContent.selector, isRowTemplate);\n }\n }\n else {\n cFocus.matrix.generate(rows, cFocus.selector, isRowTemplate);\n }\n if (!(_this.parent.isFrozenGrid() && ((e.args && (e.args.requestType === 'sorting'\n || e.args.requestType === 'batchsave' || e.args.requestType === 'paging'))\n || e.name === 'batchAdd' || e.name === 'batchCancel'))) {\n cFocus.generateRows(updateRow, {\n matrix: matrix, handlerInstance: (e.args && e.args.isFrozen) ? _this.fHeader\n : (e.args && e.args.renderFrozenRightContent) ? _this.frHeader : _this.header\n });\n }\n if (!Browser.isDevice && e && e.args) {\n if (!_this.focusByClick && e.args.requestType === 'paging' && !_this.parent.pagerModule.pagerObj.checkPagerHasFocus()) {\n _this.skipFocus = false;\n _this.parent.element.focus();\n }\n if (e.args.requestType === 'grouping') {\n _this.skipFocus = true;\n }\n }\n if (e && e.args && e.args.requestType === 'virtualscroll') {\n if (_this.currentInfo.uid) {\n var index_1;\n var bool = e.rows.some(function (row, i) {\n index_1 = i;\n return row.uid === _this.currentInfo.uid;\n });\n if (bool) {\n _this.content.matrix.current[0] = index_1;\n _this.content.matrix.current[1] = _this.parent.getColumnIndexByUid(_this.focusedColumnUid) || 0;\n var focusElement = _this.getContent().getFocusInfo().elementToFocus;\n if (focusElement) {\n var cellPosition = focusElement.getBoundingClientRect();\n var gridPosition = _this.parent.element.getBoundingClientRect();\n if (cellPosition.top >= 0 && cellPosition.left >= 0 &&\n cellPosition.right <= Math.min(gridPosition.right, window.innerWidth ||\n document.documentElement.clientWidth) &&\n cellPosition.bottom <= Math.min(gridPosition.bottom, window.innerHeight ||\n document.documentElement.clientHeight)) {\n _this.isVirtualScroll = true;\n _this.focus();\n }\n }\n }\n }\n else if (e.args.focusElement && e.args.focusElement.classList.contains('e-filtertext')) {\n var focusElement = _this.parent.element.querySelector('#' + e.args.focusElement.id);\n if (focusElement) {\n focusElement.focus();\n }\n }\n }\n if (e && e.args && e.args.requestType === 'infiniteScroll') {\n _this.isInfiniteScroll = true;\n }\n };\n };\n FocusStrategy.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.add(this.parent.element, 'mousedown', this.focusCheck, this);\n EventHandler.add(this.parent.element, 'touchstart', this.focusCheck, this);\n EventHandler.add(this.parent.element, 'focus', this.onFocus, this);\n this.parent.element.addEventListener('focus', this.passiveHandler = function (e) { return _this.passiveFocus(e); }, true);\n EventHandler.add(this.parent.element, 'focusout', this.onBlur, this);\n this.evtHandlers = [{ event: event.keyPressed, handler: this.onKeyPress },\n { event: event.click, handler: this.onClick },\n { event: event.contentReady, handler: this.refMatrix },\n { event: event.partialRefresh, handler: this.refMatrix },\n { event: event.refreshExpandandCollapse, handler: this.refMatrix },\n { event: event.headerRefreshed, handler: this.refreshMatrix() },\n { event: event.closeEdit, handler: this.restoreFocus },\n { event: event.restoreFocus, handler: this.restoreFocus },\n { event: 'start-edit', handler: this.clearIndicator },\n { event: 'start-add', handler: this.clearIndicator },\n { event: 'sorting-complete', handler: this.restoreFocus },\n { event: 'filtering-complete', handler: this.filterfocus },\n { event: 'grouping-complete', handler: this.restoreFocusWithAction },\n { event: 'ungrouping-complete', handler: this.restoreFocusWithAction },\n { event: event.batchAdd, handler: this.refMatrix },\n { event: event.batchCancel, handler: this.refMatrix },\n { event: event.batchDelete, handler: this.refMatrix },\n { event: event.detailDataBound, handler: this.refMatrix },\n { event: event.onEmpty, handler: this.refMatrix },\n { event: event.cellFocused, handler: this.internalCellFocus }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n FocusStrategy.prototype.filterfocus = function () {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n this.restoreFocus();\n }\n };\n FocusStrategy.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(this.parent.element, 'mousedown', this.focusCheck);\n EventHandler.remove(this.parent.element, 'touchstart', this.focusCheck);\n EventHandler.remove(this.parent.element, 'focus', this.onFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n this.parent.element.removeEventListener('focus', this.passiveHandler, true);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n FocusStrategy.prototype.destroy = function () {\n this.removeEventListener();\n };\n FocusStrategy.prototype.restoreFocus = function () {\n var groupModule = this.parent.groupModule;\n if (this.parent.allowGrouping && groupModule && (groupModule.groupSortFocus || groupModule.groupTextFocus)) {\n groupModule.groupSortFocus = false;\n groupModule.groupTextFocus = false;\n return;\n }\n this.firstHeaderCellClick = true;\n this.addFocus(this.getContent().getFocusInfo());\n };\n FocusStrategy.prototype.restoreFocusWithAction = function (e) {\n if (!this.parent.enableInfiniteScrolling) {\n var matrix = this.getContent().matrix;\n var current = matrix.current;\n switch (e.requestType) {\n case 'grouping':\n case 'ungrouping':\n current[1] = current.length &&\n !this.parent.groupSettings.showGroupedColumn && !isNullOrUndefined(matrix.matrix[current[0]]) ?\n matrix.matrix[current[0]].indexOf(1) : e.requestType === 'grouping' ? current[1] + 1 : current[1] - 1;\n break;\n }\n this.getContent().matrix.current = current;\n var groupModule = this.parent.groupModule;\n if (this.parent.allowGrouping && groupModule && groupModule.groupCancelFocus) {\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length) {\n if (focusableGroupedItems[0].parentElement.getAttribute('ej-mappingname') === e.columnName) {\n focusableGroupedItems[3].focus();\n }\n else {\n focusableGroupedItems[0].focus();\n }\n }\n else {\n groupModule.element.focus();\n }\n groupModule.groupCancelFocus = false;\n return;\n }\n this.addFocus(this.getContent().getFocusInfo());\n }\n };\n FocusStrategy.prototype.clearOutline = function () {\n this.getContent().matrix.current = this.getContent().matrix.get(0, -1, [0, 1], 'downArrow', this.getContent().validator());\n this.clearIndicator();\n };\n FocusStrategy.prototype.clearIndicator = function () {\n if (!this.currentInfo.element || !this.currentInfo.elementToFocus) {\n return;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focus', 'e-focused']);\n };\n FocusStrategy.prototype.getPrevIndexes = function () {\n var forget = this.forget;\n this.forget = false;\n return forget || !Object.keys(this.prevIndexes).length ? { rowIndex: null, cellIndex: null } : this.prevIndexes;\n };\n FocusStrategy.prototype.forgetPrevious = function () {\n this.forget = true;\n };\n FocusStrategy.prototype.setActiveByKey = function (action, active) {\n var _this = this;\n if (!this.parent.isFrozenGrid() && this.parent.frozenRows === 0) {\n return;\n }\n // eslint-disable-next-line prefer-const\n var info;\n var actions = {\n 'home': function () { return ({ toHeader: !info.isContent, toFrozen: true }); },\n 'end': function () { return ({ toHeader: !info.isContent, toFrozen: false }); },\n 'ctrlHome': function () { return ({ toHeader: true, toFrozen: _this.parent.isFrozenGrid() }); },\n 'ctrlEnd': function () { return ({ toHeader: false, toFrozen: false }); }\n };\n if (!(action in actions)) {\n return;\n }\n info = active.getInfo();\n var swap = actions[\"\" + action]();\n this.setActive(!swap.toHeader, swap.toFrozen);\n this.getContent().matrix.current = active.matrix.current;\n };\n FocusStrategy.prototype.internalCellFocus = function (e) {\n if (!(e.byKey && e.container.isContent && e.keyArgs.action === 'enter'\n && (e.parent.classList.contains('e-detailcell') ||\n e.parent.classList.contains('e-unboundcell')))) {\n return;\n }\n this.clearIndicator();\n var focusEle = this.getContent().getFocusable(this.getFocusedElement());\n this.setFocusedElement(focusEle);\n this.currentInfo.skipAction = true;\n };\n return FocusStrategy;\n}());\nexport { FocusStrategy };\n/**\n * Create matrix from row collection which act as mental model for cell navigation\n *\n * @hidden\n */\nvar Matrix = /** @class */ (function () {\n function Matrix() {\n this.matrix = [];\n this.current = [];\n }\n Matrix.prototype.set = function (rowIndex, columnIndex, allow) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.columns));\n this.matrix[parseInt(rowIndex.toString(), 10)] = this.matrix[parseInt(rowIndex.toString(), 10)] || [];\n this.matrix[parseInt(rowIndex.toString(), 10)][parseInt(columnIndex.toString(), 10)] = allow ? 1 : 0;\n };\n Matrix.prototype.get = function (rowIndex, columnIndex, navigator, action, validator) {\n var tmp = columnIndex;\n if (rowIndex + navigator[0] < 0) {\n return [rowIndex, columnIndex];\n }\n rowIndex = Math.max(0, Math.min(rowIndex + navigator[0], this.rows));\n var emptyTable = true;\n if (isNullOrUndefined(this.matrix[parseInt(rowIndex.toString(), 10)])) {\n return null;\n }\n columnIndex = Math.max(0, Math.min(columnIndex + navigator[1], this.matrix[parseInt(rowIndex.toString(), 10)].length - 1));\n if (tmp + navigator[1] > this.matrix[parseInt(rowIndex.toString(), 10)].length - 1\n && validator(rowIndex, columnIndex, action)) {\n return [rowIndex, tmp];\n }\n var first = this.first(this.matrix[parseInt(rowIndex.toString(), 10)], columnIndex, navigator, true, action);\n columnIndex = first === null ? tmp : first;\n var val = getValue(rowIndex + \".\" + columnIndex, this.matrix);\n if (rowIndex === this.rows && (action === 'downArrow' || action === 'enter')) {\n navigator[0] = -1;\n }\n if (first === null) {\n for (var i = 0; i < this.rows; i++) {\n if (this.matrix[parseInt(i.toString(), 10)].some(function (v) { return v === 1; })) {\n emptyTable = false;\n break;\n }\n }\n if (emptyTable) {\n rowIndex = this.current.length ? this.current[0] : 0;\n return [rowIndex, columnIndex];\n }\n }\n return this.inValid(val) || !validator(rowIndex, columnIndex, action) ?\n this.get(rowIndex, tmp, navigator, action, validator) : [rowIndex, columnIndex];\n };\n Matrix.prototype.first = function (vector, index, navigator, moveTo, action) {\n if (((index < 0 || index === vector.length) && this.inValid(vector[parseInt(index.toString(), 10)])\n && (action !== 'upArrow' && action !== 'downArrow')) || !vector.some(function (v) { return v === 1; })) {\n return null;\n }\n return !this.inValid(vector[parseInt(index.toString(), 10)]) ? index :\n this.first(vector, (['upArrow', 'downArrow', 'shiftUp', 'shiftDown'].indexOf(action) !== -1) ? moveTo ? 0 : ++index : index + navigator[1], navigator, false, action);\n };\n Matrix.prototype.select = function (rowIndex, columnIndex) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.matrix[parseInt(rowIndex.toString(), 10)].length - 1));\n this.current = [rowIndex, columnIndex];\n };\n Matrix.prototype.generate = function (rows, selector, isRowTemplate) {\n this.rows = rows.length - 1;\n this.matrix = [];\n for (var i = 0; i < rows.length; i++) {\n var cells = rows[parseInt(i.toString(), 10)].cells.filter(function (c) { return c.isSpanned !== true; });\n this.columns = Math.max(cells.length - 1, this.columns | 0);\n var incrementNumber = 0;\n for (var j = 0; j < cells.length; j++) {\n if (cells[parseInt(j.toString(), 10)].column && cells[parseInt(j.toString(), 10)].column.columns) {\n incrementNumber = this.columnsCount(cells[parseInt(j.toString(), 10)].column.columns, incrementNumber);\n }\n else {\n incrementNumber++;\n }\n this.set(i, j, rows[parseInt(i.toString(), 10)].visible === false ?\n false : selector(rows[parseInt(i.toString(), 10)], cells[parseInt(j.toString(), 10)], isRowTemplate));\n }\n this.columns = Math.max(incrementNumber - 1, this.columns | 0);\n }\n return this.matrix;\n };\n Matrix.prototype.columnsCount = function (rowColumns, currentColumnCount) {\n var columns = rowColumns;\n var incrementNumber = currentColumnCount;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n incrementNumber = this.columnsCount(columns[parseInt(i.toString(), 10)].columns, incrementNumber);\n }\n else {\n incrementNumber++;\n }\n }\n return incrementNumber;\n };\n Matrix.prototype.inValid = function (value) {\n return value === 0 || value === undefined;\n };\n return Matrix;\n}());\nexport { Matrix };\n/**\n * @hidden\n */\nvar ContentFocus = /** @class */ (function () {\n function ContentFocus(parent) {\n var _this = this;\n this.matrix = new Matrix();\n this.lastIdxCell = false;\n this.parent = parent;\n this.keyActions = {\n 'rightArrow': [0, 1],\n 'tab': [0, 1],\n 'leftArrow': [0, -1],\n 'shiftTab': [0, -1],\n 'upArrow': [-1, 0],\n 'downArrow': [1, 0],\n 'shiftUp': [-1, 0],\n 'shiftDown': [1, 0],\n 'shiftRight': [0, 1],\n 'shiftLeft': [0, -1],\n 'enter': [1, 0],\n 'shiftEnter': [-1, 0]\n };\n this.indexesByKey = function (action) {\n var opt = {\n 'home': [_this.matrix.current[0], -1, 0, 1],\n 'end': [_this.matrix.current[0], _this.matrix.columns + 1, 0, -1],\n 'ctrlHome': [0, -1, 0, 1],\n 'ctrlEnd': [_this.matrix.rows, _this.matrix.columns + 1, 0, -1]\n };\n return opt[\"\" + action] || null;\n };\n }\n ContentFocus.prototype.getTable = function () {\n return (this.parent.isFrozenGrid() ?\n this.parent.getContent().querySelector('.e-movablecontent .e-table') :\n this.parent.getContentTable());\n };\n ContentFocus.prototype.onKeyPress = function (e) {\n var navigator = this.keyActions[e.action];\n var current = this.getCurrentFromAction(e.action, navigator, e.action in this.keyActions, e);\n if (!current) {\n return;\n }\n if (((['tab', 'shiftTab'].indexOf(e.action) > -1 && this.matrix.current || []).toString() === current.toString())\n || (this.parent.allowPaging && !this.parent.pagerModule.pagerObj.checkPagerHasFocus()\n && this.matrix.current[0] === this.matrix.rows && ((this.parent.editSettings.mode === 'Batch'\n && this.parent.editSettings.allowAdding && e.keyCode === 40) || (e.keyCode === 40)))) {\n if (current.toString() === [this.matrix.rows, this.matrix.columns].toString() ||\n current.toString() === [0, 0].toString() || (this.matrix.current[0] === this.matrix.rows &&\n this.matrix.current.toString() === current.toString()) || (this.parent.allowGrouping &&\n this.parent.infiniteScrollSettings.enableCache && current.toString() === [0, 1].toString())) {\n return false;\n }\n else {\n current = this.editNextRow(current[0], current[1], e.action);\n }\n }\n this.matrix.select(current[0], current[1]);\n };\n ContentFocus.prototype.editNextRow = function (rowIndex, cellIndex, action) {\n var gObj = this.parent;\n var editNextRow = gObj.editSettings.allowNextRowEdit && (gObj.isEdit || gObj.isLastCellPrimaryKey);\n var visibleIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[0].field);\n var cell = this.getTable().rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n if (action === 'tab' && editNextRow) {\n rowIndex++;\n var index = (this.getTable().rows[parseInt(rowIndex.toString(), 10)].getElementsByClassName('e-indentcell').length +\n this.getTable().rows[parseInt(rowIndex.toString(), 10)].getElementsByClassName('e-detailrowcollapse').length);\n cellIndex = visibleIndex + index;\n }\n if (action === 'shiftTab' && editNextRow) {\n rowIndex--;\n cellIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[gObj.getVisibleColumns().length - 1].field);\n }\n return !cell.classList.contains(literals.rowCell) && !cell.classList.contains('e-headercell') &&\n !cell.classList.contains('e-groupcaption') && !cell.classList.contains('e-filterbarcell') ?\n this.editNextRow(rowIndex, cellIndex, action) : [rowIndex, cellIndex];\n };\n ContentFocus.prototype.getCurrentFromAction = function (action, navigator, isPresent, e) {\n if (navigator === void 0) { navigator = [0, 0]; }\n if (!isPresent && !this.indexesByKey(action) || (this.matrix.current.length === 0)) {\n return null;\n }\n if (!this.shouldFocusChange(e)) {\n return this.matrix.current;\n }\n // eslint-disable-next-line\n var _a = this.indexesByKey(action) || this.matrix.current.concat(navigator), rowIndex = _a[0], cellIndex = _a[1], rN = _a[2], cN = _a[3];\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length && this.parent.aggregates.length && action === 'enter') {\n for (var i = rowIndex; i < this.matrix.matrix.length; i++) {\n var row = this.getTable().rows[i + 1];\n if (row && row.cells[parseInt(cellIndex.toString(), 10)] && row.cells[parseInt(cellIndex.toString(), 10)].classList.contains('e-rowcell')) {\n return [i + 1, cellIndex];\n }\n if (i === this.matrix.matrix.length - 1) {\n return [rowIndex, cellIndex];\n }\n }\n }\n if (action === 'ctrlEnd' || action === 'end') {\n var lastContentCellIndex = [this.matrix.matrix.length - 1,\n this.matrix.matrix[this.matrix.matrix.length - 1].length - 1];\n if (action === 'end') {\n lastContentCellIndex = [rowIndex, this.matrix.matrix[parseInt(rowIndex.toString(), 10)].length - 1];\n }\n if (this.matrix.matrix[lastContentCellIndex[0]][lastContentCellIndex[1]] === 0) {\n lastContentCellIndex = findCellIndex(this.matrix.matrix, lastContentCellIndex, false);\n }\n rowIndex = lastContentCellIndex[0];\n cellIndex = lastContentCellIndex[1] + 1;\n }\n var current = this.matrix.get(rowIndex, cellIndex, [rN, cN], action, this.validator());\n return current;\n };\n ContentFocus.prototype.onClick = function (e, force) {\n var target = e.target;\n this.target = target;\n target = (target.classList.contains(literals.rowCell) ? target : closest(target, 'td'));\n target = target ? target : closest(e.target, 'td.e-detailrowcollapse')\n || closest(e.target, 'td.e-detailrowexpand');\n target = closest(e.target, 'td.e-detailcell') ?\n isNullOrUndefined(closest(closest(e.target, '.e-grid'), 'td.e-detailcell')) ? null : target : target;\n target = target && closest(target, 'table').classList.contains(literals.table) ? target : null;\n if (!target) {\n return false;\n }\n var _a = [target.parentElement.rowIndex, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var _b = this.matrix.current, oRowIndex = _b[0], oCellIndex = _b[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val) || (!force && oRowIndex === rowIndex && oCellIndex === cellIndex) ||\n (!parentsUntil(e.target, literals.rowCell) && !parentsUntil(e.target, 'e-groupcaption')\n && !parentsUntil(e.target, 'e-recordpluscollapse') && !parentsUntil(e.target, 'e-recordplusexpand')\n && !parentsUntil(e.target, 'e-detailrowcollapse') && !parentsUntil(e.target, 'e-detailrowexpand')\n && !parentsUntil(e.target, 'e-templatecell'))) {\n return false;\n }\n this.matrix.select(rowIndex, cellIndex);\n };\n ContentFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n this.matrix.current = [rowIndex, cellIndex];\n info.element = !isNullOrUndefined(this.getTable().rows[parseInt(rowIndex.toString(), 10)]) ?\n this.getTable().rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)] : null;\n if (!info.element) {\n return info;\n }\n info.elementToFocus = !info.element.classList.contains('e-unboundcell') && !info.element.classList.contains('e-detailcell')\n ? this.getFocusable(info.element) : info.element;\n info.elementToFocus = info.element.classList.contains('e-detailcell') && info.element.querySelector('.e-childgrid')\n ? info.element.querySelector('.e-childgrid') : info.elementToFocus;\n info.outline = true;\n info.uid = info.element.parentElement.getAttribute('data-uid');\n return info;\n };\n ContentFocus.prototype.getFocusable = function (element) {\n var query = 'button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n var isTemplate = !isNullOrUndefined(closest(element, '.e-templatecell'));\n if (this.parent.isEdit) {\n query = 'input:not([type=\"hidden\"]), select:not([aria-hidden=\"true\"]), textarea';\n }\n var child = [].slice.call(element.querySelectorAll(query));\n /* Select the first focusable child element\n * if no child found then select the cell itself.\n * if Grid is in editable state, check for editable control inside child.\n */\n return child.length ? isTemplate && child.length > 1 ? this.target ? this.target : element : child[0] : element;\n };\n ContentFocus.prototype.selector = function (row, cell, isRowTemplate) {\n var types = [CellType.Expand, CellType.GroupCaption, CellType.CaptionSummary, CellType.GroupSummary];\n return ((row.isDataRow && cell.visible && (cell.isDataCell || cell.isTemplate))\n || (row.isDataRow && cell.cellType === CellType.DetailExpand && isNullOrUndefined(cell.visible))\n || (!row.isDataRow && types.indexOf(cell.cellType) > -1\n && !((cell.cellType === CellType.GroupSummary || cell.cellType === CellType.CaptionSummary)\n && !(cell.isDataCell && cell.visible)))\n || (cell.column && cell.visible && cell.column.type === 'checkbox')\n || (cell.cellType === CellType.CommandColumn)\n || (row.isDataRow && isRowTemplate))\n && !(row.edit === 'delete' && row.isDirty);\n };\n ContentFocus.prototype.nextRowFocusValidate = function (index) {\n var lastIndex = index;\n for (var i = index, len = this.matrix.rows; i <= len; i++) {\n if (this.matrix.matrix[parseInt(index.toString(), 10)].indexOf(1) === -1) {\n index = index + 1;\n }\n else {\n return index;\n }\n }\n this.lastIdxCell = true;\n return lastIndex;\n };\n ContentFocus.prototype.previousRowFocusValidate = function (index) {\n var firstIndex = index;\n for (var i = index, len = 0; i >= len; i--) {\n if (this.matrix.matrix[parseInt(index.toString(), 10)].indexOf(1) === -1) {\n index = index - 1;\n if (index < 0) {\n this.lastIdxCell = true;\n return firstIndex;\n }\n }\n else {\n return index;\n }\n }\n return firstIndex;\n };\n ContentFocus.prototype.jump = function (action, current) {\n var frozenSwap = (this.parent.getFrozenLeftCount() &&\n ((action === 'leftArrow' || action === 'shiftTab') && current[1] === 0))\n || (current[0] < this.matrix.matrix.length - 1 && action === 'tab' && this.parent.getFrozenMode() === 'Left'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n var right = ((action === 'rightArrow' || action === 'tab')\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'shiftTab' && this.parent.getFrozenMode() === 'Right'\n && current[1] === this.matrix.matrix[current[0]].indexOf(1));\n var frSwap = this.parent.getFrozenMode() === literals.leftRight && right;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenSwap = right;\n }\n this.lastIdxCell = false;\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var headerSwap = ((action === 'upArrow' || enterFrozen) && current[0] === 0)\n || (action === 'shiftTab' && this.parent.getFrozenMode() === 'Right' && current[0] === 0\n && current[1] === this.matrix.matrix[current[0]].indexOf(1));\n if (!this.parent.isFrozenGrid() && action === 'tab' &&\n current[1] === this.matrix.matrix[current[0]].lastIndexOf(1) && this.matrix.matrix.length - 1 !== current[0]) {\n this.matrix.current[0] = this.nextRowFocusValidate(this.matrix.current[0] + 1);\n this.matrix.current[1] = -1;\n frozenSwap = this.parent.isFrozenGrid();\n }\n if (!this.parent.isFrozenGrid() && action === 'shiftTab' &&\n current[0] !== 0 && this.matrix.matrix[current[0]].indexOf(1) === current[1]) {\n this.matrix.current[0] = this.previousRowFocusValidate(this.matrix.current[0] - 1);\n this.matrix.current[1] = this.matrix.matrix[current[0]].length;\n }\n var isHeaderFocus = false;\n var row = document.activeElement.parentElement;\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && row.classList.contains(literals.row)) {\n var rowIndex = parseInt(row.getAttribute(literals.dataRowIndex), 10);\n isHeaderFocus = rowIndex > 0;\n }\n if (action === 'shiftTab' && this.parent.getFrozenMode() === 'Right' && current[0] === 0\n && current[1] === this.matrix.matrix[current[0]].indexOf(1)) {\n this.matrix.current[0] = -1;\n }\n var info = {\n swap: !isHeaderFocus ? ((action === 'upArrow' || enterFrozen) && current[0] === 0) || frozenSwap || frSwap : false,\n toHeader: headerSwap,\n toFrozen: frozenSwap,\n toFrozenRight: frSwap\n };\n return info;\n };\n ContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current = [];\n if (this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === literals.leftRight) {\n if (action === 'leftArrow' || action === 'shiftTab') {\n current[0] = previous[0];\n current[1] = this.matrix.matrix[current[0]].length;\n }\n if (this.parent.getFrozenMode() === literals.leftRight && (action === 'rightArrow' || action === 'tab')) {\n current[0] = previous[0];\n current[1] = -1;\n }\n if (this.parent.getFrozenMode() === 'Right' && action === 'tab') {\n current[0] = previous[0] + 1;\n current[1] = -1;\n }\n }\n else if (action === 'rightArrow' || action === 'tab') {\n current[0] = previous[0];\n current[1] = -1;\n }\n if (action === 'downArrow' || action === 'enter') {\n current[0] = -1;\n current[1] = previous[1];\n }\n if (action === 'shiftTab' && this.parent.getFrozenMode() === 'Left') {\n current[0] = previous[0] - 1;\n current[1] = this.matrix.matrix[current[0]].length;\n }\n return current;\n };\n ContentFocus.prototype.generateRows = function (rows, optionals) {\n var _a;\n var matrix = optionals.matrix, handlerInstance = optionals.handlerInstance;\n var len = handlerInstance.matrix.matrix.length;\n var defaultLen = this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar' ? len + 1 : len;\n handlerInstance.matrix.matrix = handlerInstance.matrix.matrix.slice(0, defaultLen); //Header matrix update.\n handlerInstance.matrix.rows = defaultLen;\n (_a = handlerInstance.matrix.matrix).push.apply(_a, matrix);\n handlerInstance.matrix.rows += matrix.length;\n };\n ContentFocus.prototype.getInfo = function (e) {\n var info = this.getFocusInfo();\n var _a = this.matrix.current, rIndex = _a[0], cIndex = _a[1];\n var isData = info.element.classList.contains(literals.rowCell);\n var isSelectable = isData || (e && e.action !== 'enter' && (info.element.classList.contains('e-detailrowcollapse')\n || info.element.classList.contains('e-detailrowexpand')));\n // eslint-disable-next-line\n var _b = [Math.min(parseInt(info.element.parentElement.getAttribute(literals.dataRowIndex), 10), rIndex),\n Math.min(parseInt(info.element.getAttribute(literals.dataColIndex), 10), cIndex)], rowIndex = _b[0], cellIndex = _b[1];\n if (this.parent.allowGrouping && this.parent.groupSettings.enableLazyLoading && isData) {\n rowIndex = this.parent.getDataRows().indexOf(info.element.parentElement);\n }\n return { isContent: true, isDataCell: isData, indexes: [rowIndex, cellIndex], isSelectable: isSelectable };\n };\n ContentFocus.prototype.validator = function () {\n var table = this.getTable();\n return function (rowIndex, cellIndex, action) {\n if (!isNullOrUndefined(table.rows[parseInt(rowIndex.toString(), 10)])) {\n var cell = void 0;\n cellIndex = table.querySelector('.e-emptyrow') ? 0 : cellIndex;\n if (table.rows[parseInt(rowIndex.toString(), 10)].cells[0].classList.contains('e-editcell')) {\n cell = table.rows[parseInt(rowIndex.toString(), 10)].cells[0].querySelectorAll('td')[parseInt(cellIndex.toString(), 10)];\n }\n else {\n cell = table.rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n }\n var isCellWidth = cell.getBoundingClientRect().width !== 0;\n if (action === 'enter' || action === 'shiftEnter') {\n return isCellWidth && cell.classList.contains(literals.rowCell);\n }\n if ((action === 'shiftUp' || action === 'shiftDown') && cell.classList.contains(literals.rowCell)) {\n return isCellWidth;\n }\n else if (action !== 'shiftUp' && action !== 'shiftDown') {\n return isCellWidth;\n }\n }\n return false;\n };\n };\n ContentFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, _b = _a[0], rIndex = _b === void 0 ? -1 : _b, _c = _a[1], cIndex = _c === void 0 ? -1 : _c;\n if (rIndex < 0 || cIndex < 0) {\n return true;\n }\n var cell = getValue(rIndex + \".cells.\" + cIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'shiftEnter' ?\n cell.classList.contains(literals.rowCell) && !cell.classList.contains('e-unboundcell')\n || cell.classList.contains('e-editedbatchcell') && !cell.classList.contains('e-detailcell') : true;\n };\n ContentFocus.prototype.getGridSeletion = function () {\n return this.parent.allowSelection && this.parent.selectionSettings.allowColumnSelection;\n };\n return ContentFocus;\n}());\nexport { ContentFocus };\n/**\n * @hidden\n */\nvar HeaderFocus = /** @class */ (function (_super) {\n __extends(HeaderFocus, _super);\n function HeaderFocus(parent) {\n return _super.call(this, parent) || this;\n }\n HeaderFocus.prototype.getTable = function () {\n return (this.parent.isFrozenGrid() ?\n this.parent.getHeaderContent().querySelector('.e-movableheader .e-table') :\n this.parent.getHeaderTable());\n };\n HeaderFocus.prototype.onClick = function (e) {\n var target = e.target;\n this.target = target;\n target = (target.classList.contains('e-headercell') ? target : closest(target, 'th'));\n if (!target && this.parent.frozenRows !== 0) {\n target = (e.target.classList.contains(literals.rowCell) ? e.target :\n closest(e.target, 'td'));\n }\n if (e.target.classList.contains('e-columnheader') ||\n e.target.querySelector('.e-stackedheadercell')) {\n return false;\n }\n if (!target) {\n return;\n }\n var _a = [target.parentElement.rowIndex, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val)) {\n return false;\n }\n this.matrix.select(target.parentElement.rowIndex, target.cellIndex);\n };\n HeaderFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n info.element = this.getTable().rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n if (!isNullOrUndefined(info.element)) {\n info.elementToFocus = this.getFocusable(info.element);\n info.outline = !info.element.classList.contains('e-filterbarcell');\n }\n return info;\n };\n HeaderFocus.prototype.selector = function (row, cell) {\n return (cell.visible && (cell.column.field !== undefined || cell.isTemplate || !isNullOrUndefined(cell.column.template)\n || !isNullOrUndefined(cell.column.commands))) || cell.column.type === 'checkbox' || cell.cellType === CellType.StackedHeader;\n };\n HeaderFocus.prototype.jump = function (action, current) {\n var frozenSwap = (this.parent.getFrozenLeftCount() &&\n (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') && (current[1] === 0\n || current[1] === this.matrix.matrix[current[0]].indexOf(1))) || (this.parent.getFrozenMode() === 'Left' && action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n var right = ((action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion())\n || action === 'tab') && (current[1] === this.matrix.columns || current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)))\n || (current[0] > 0 && action === 'shiftTab' && this.parent.getFrozenMode() === 'Right'\n && current[1] === this.matrix.matrix[current[0]].indexOf(1));\n var frSwap = this.parent.getFrozenMode() === literals.leftRight && right;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenSwap = right;\n }\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var isLastCell;\n var lastRow;\n var headerSwap = frozenSwap && !(this.parent.getFrozenMode() === 'Left' && action === 'tab'\n && current[0] === this.matrix.matrix.length - 1) || frSwap;\n var fMatrix = this.parent.focusModule.fHeader && this.parent.focusModule.fHeader.matrix.matrix;\n var isPresent = fMatrix && !isNullOrUndefined(fMatrix[current[0]]);\n if (this.parent.enableHeaderFocus && action === 'tab') {\n lastRow = this.matrix.matrix.length - 1 === current[0];\n isLastCell = current[1] === this.matrix.matrix[current[0]].lastIndexOf(1);\n if (isLastCell) {\n if (!lastRow) {\n this.matrix.current[0] = this.matrix.current[0] + 1;\n }\n else {\n this.matrix.current[0] = 0;\n }\n this.matrix.current[1] = -1;\n }\n if (this.parent.isFrozenGrid() && lastRow && isLastCell) {\n frozenSwap = true;\n headerSwap = false;\n }\n }\n if (action === 'tab' && this.parent.getFrozenMode() === 'Left' && current[0] === this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)) {\n this.matrix.current[0] = -1;\n }\n return {\n swap: ((action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && (frozenSwap || frSwap)) || (action === 'tab' && lastRow && isLastCell),\n toHeader: headerSwap,\n toFrozen: frozenSwap,\n toFrozenRight: frSwap\n };\n };\n HeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current1 = [];\n if (this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === literals.leftRight) {\n if (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') {\n current1[0] = previous[0];\n current1[1] = this.matrix.matrix[current1[0]].length;\n }\n if (this.parent.getFrozenMode() === literals.leftRight\n && (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab')) {\n current1[0] = previous[0];\n current1[1] = -1;\n }\n }\n else if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current1[0] = previous[0];\n current1[1] = -1;\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current1[0] = this.matrix.matrix.length;\n current1[1] = previous[1];\n }\n if (this.parent.getFrozenMode() === 'Left' && action === 'shiftTab') {\n current1[0] = previous[0] === -1 ? this.matrix.matrix.length - 1 : previous[0] - 1;\n current1[1] = this.matrix.matrix[current1[0]].length;\n }\n if (this.parent.getFrozenMode() === 'Right' && action === 'tab') {\n current1[0] = previous[0] + 1;\n current1[1] = -1;\n }\n return current1;\n };\n HeaderFocus.prototype.generateRows = function (rows) {\n var length = this.matrix.matrix.length;\n if (this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar') {\n this.matrix.rows = ++this.matrix.rows;\n var cells = rows[0].cells;\n var incrementNumber = 0;\n var headerTable = this.getHeaderType() === 'FixedHeaderFocus' && this.parent.getFrozenMode() !== 'Right' ? literals.frozenLeft :\n this.getHeaderType() === 'FixedHeaderFocus' || this.getHeaderType() === 'FixedRightHeaderFocus' ? literals.frozenRight : 'movable';\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].column && cells[parseInt(i.toString(), 10)].column.columns) {\n incrementNumber = this.checkFilterColumn(cells[parseInt(i.toString(), 10)].column.columns, length, incrementNumber, headerTable);\n }\n else {\n if (!this.parent.isFrozenGrid() || (this.parent.isFrozenGrid()\n && cells[parseInt(i.toString(), 10)].column.freezeTable === headerTable)) {\n this.matrix.set(length, incrementNumber, cells[parseInt(i.toString(), 10)].visible && cells[parseInt(i.toString(), 10)].column.allowFiltering !== false);\n incrementNumber++;\n }\n }\n }\n }\n };\n HeaderFocus.prototype.checkFilterColumn = function (rowColumns, rowIndex, columnIndex, headerTable) {\n var columns = rowColumns;\n var incrementNumber = columnIndex;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n incrementNumber = this.checkFilterColumn(columns[parseInt(i.toString(), 10)].columns, rowIndex, incrementNumber, headerTable);\n }\n else {\n if (!this.parent.isFrozenGrid() || (this.parent.isFrozenGrid()\n && columns[parseInt(i.toString(), 10)].freezeTable === headerTable)) {\n this.matrix.set(rowIndex, incrementNumber, columns[parseInt(i.toString(), 10)].visible && columns[parseInt(i.toString(), 10)].allowFiltering !== false);\n incrementNumber++;\n }\n }\n }\n return incrementNumber;\n };\n HeaderFocus.prototype.getInfo = function (e) {\n return extend(_super.prototype.getInfo.call(this, e), { isContent: false, isHeader: true });\n };\n HeaderFocus.prototype.validator = function () {\n return function () { return true; };\n };\n HeaderFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, rowIndex = _a[0], columnIndex = _a[1];\n if (rowIndex < 0 || columnIndex < 0) {\n return true;\n }\n var cell = getValue(rowIndex + \".cells.\" + columnIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'altDownArrow' ? !cell.classList.contains('e-headercell') : true;\n };\n HeaderFocus.prototype.getHeaderType = function () {\n return 'HeaderFocus';\n };\n return HeaderFocus;\n}(ContentFocus));\nexport { HeaderFocus };\nvar FixedContentFocus = /** @class */ (function (_super) {\n __extends(FixedContentFocus, _super);\n function FixedContentFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedContentFocus.prototype.getTable = function () {\n return this.parent.getContent().querySelector('.e-frozencontent .e-table');\n };\n FixedContentFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var toHeader = ((action === 'upArrow' || enterFrozen) && current[0] === 0)\n || (action === 'shiftTab' && this.parent.getFrozenMode() !== 'Right'\n && current[0] === 0 && current[1] === this.matrix.matrix[current[0]].indexOf(1));\n var fSwap = (action === 'upArrow' || enterFrozen) && current[0] === 0;\n var frSwap = action === 'shiftTab' && this.parent.getFrozenMode() === literals.leftRight\n && current[1] === this.matrix.matrix[current[0]].indexOf(1);\n if (this.parent.getFrozenMode() === 'Right') {\n var swap = toHeader || ((action === 'shiftTab' || action === 'leftArrow') && current[1] === 0)\n || (action === 'tab' && current[0] < this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n return { swap: swap, toHeader: toHeader, toFrozen: fSwap };\n }\n if (action === 'shiftTab' && current[0] === 0 && current[1] === this.matrix.matrix[current[0]].indexOf(1)) {\n this.matrix.current[0] = -1;\n }\n return {\n swap: toHeader || ((action === 'tab' || action === 'rightArrow')\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'shiftTab' && current[1] === this.matrix.matrix[current[0]].indexOf(1)),\n toHeader: toHeader,\n toFrozen: fSwap,\n toFrozenRight: frSwap\n };\n };\n FixedContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current2 = [];\n if (this.parent.getFrozenMode() === 'Right') {\n if (action === 'rightArrow' || action === 'tab') {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n if (action === 'shiftTab') {\n current2[0] = previous[0] - 1;\n current2[1] = this.matrix.matrix[current2[0]].length;\n }\n }\n else {\n if (action === 'tab' && this.parent.enableHeaderFocus) {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n if (action === 'leftArrow' || action === 'shiftTab') {\n current2[0] = previous[0];\n current2[1] = this.matrix.matrix[previous[0]].length;\n }\n }\n if (action === 'downArrow' || action === 'enter') {\n current2[0] = -1;\n current2[1] = previous[1];\n }\n if (action === 'tab' && this.parent.getFrozenMode() !== 'Right') {\n current2[0] = previous[0] + 1;\n current2[1] = -1;\n }\n return current2;\n };\n return FixedContentFocus;\n}(ContentFocus));\nexport { FixedContentFocus };\nvar FixedHeaderFocus = /** @class */ (function (_super) {\n __extends(FixedHeaderFocus, _super);\n function FixedHeaderFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedHeaderFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var hMatrix = this.parent.focusModule.header && this.parent.focusModule.header.matrix.matrix;\n var isPresent = hMatrix && !isNullOrUndefined(hMatrix[current[0]]);\n if (this.parent.getFrozenMode() === 'Right') {\n var frSwap_1 = ((action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion())\n || action === 'shiftTab') && (current[1] === 0 || current[1] === this.matrix.matrix[current[0]].indexOf(1)))\n || (current[0] < this.matrix.matrix.length - 1 && action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n var swap = ((action === 'downArrow' || enterFrozen || (action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && frSwap_1);\n var toFrozen = (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1;\n if (action === 'tab' && current[0] === this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)) {\n this.matrix.current[0] = -1;\n }\n return { swap: swap, toHeader: frSwap_1, toFrozen: toFrozen };\n }\n var frSwap = current[0] > 0 && action === 'shiftTab' && this.parent.getFrozenMode() === literals.leftRight\n && current[1] === this.matrix.matrix[current[0]].indexOf(1);\n return {\n swap: (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1 || ((action === 'rightArrow' ||\n (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') &&\n (current[1] === this.matrix.columns || current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)) && isPresent)\n || (action === 'tab' && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'shiftTab' && current[1] === this.matrix.matrix[current[0]].indexOf(1) && current[0] > 0),\n toHeader: (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') &&\n (current[1] === this.matrix.columns || current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'tab' && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'shiftTab' && current[1] === this.matrix.matrix[current[0]].indexOf(1) && current[0] > 0),\n toFrozen: (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1,\n toFrozenRight: frSwap\n };\n };\n FixedHeaderFocus.prototype.getTable = function () {\n return (this.parent.getHeaderContent().querySelector('.e-frozenheader .e-table'));\n };\n FixedHeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current3 = [];\n if (this.parent.getFrozenMode() === 'Right') {\n if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current3[0] = previous[0];\n current3[1] = -1;\n }\n if (action === 'shiftTab') {\n current3[0] = previous[0] === -1 ? this.matrix.matrix.length - 1 : previous[0] - 1;\n current3[1] = this.matrix.matrix[current3[0]].length;\n }\n }\n else {\n if (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') {\n current3[0] = previous[0];\n current3[1] = this.matrix.matrix[current3[0]].length;\n }\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current3[0] = this.matrix.matrix.length;\n current3[1] = previous[1];\n }\n if (action === 'tab' && this.parent.getFrozenMode() !== 'Right') {\n current3[0] = previous[0] + 1;\n current3[1] = -1;\n }\n return current3;\n };\n FixedHeaderFocus.prototype.getHeaderType = function () {\n return 'FixedHeaderFocus';\n };\n return FixedHeaderFocus;\n}(HeaderFocus));\nexport { FixedHeaderFocus };\n/** @hidden */\nvar SearchBox = /** @class */ (function () {\n function SearchBox(searchBox) {\n this.searchBox = searchBox;\n }\n SearchBox.prototype.searchFocus = function (args) {\n args.target.parentElement.classList.add('e-input-focus');\n if (args.target.classList.contains('e-input') && args.target.classList.contains('e-search') && args.target.value) {\n var sIcon = args.target.parentElement.querySelector('.e-sicon');\n sIcon.classList.add('e-clear-icon');\n sIcon.setAttribute('title', 'Clear');\n (sIcon).style.cursor = 'pointer';\n }\n };\n SearchBox.prototype.searchBlur = function (args) {\n var relatedTarget = args.relatedTarget ? args.relatedTarget : null;\n if (relatedTarget && relatedTarget.classList.contains('e-sicon')) {\n if (relatedTarget.classList.contains('e-clear-icon')) {\n args.target.parentElement.classList.remove('e-input-focus');\n }\n }\n else {\n args.target.parentElement.classList.remove('e-input-focus');\n }\n if (args.target.classList.contains('e-search') && relatedTarget && !(relatedTarget.classList.contains('e-sicon e-clear-icon'))\n && !(relatedTarget.classList.contains('e-sicon'))) {\n var sIcon = args.target.parentElement.querySelector('.e-sicon');\n sIcon.classList.remove('e-clear-icon');\n sIcon.removeAttribute('title');\n sIcon.style.cursor = 'default';\n }\n };\n SearchBox.prototype.wireEvent = function () {\n if (this.searchBox) {\n EventHandler.add(this.searchBox, 'focus', this.searchFocus, this);\n EventHandler.add(this.searchBox, 'blur', this.searchBlur, this);\n }\n };\n SearchBox.prototype.unWireEvent = function () {\n if (this.searchBox) {\n EventHandler.remove(this.searchBox, 'focus', this.searchFocus);\n EventHandler.remove(this.searchBox, 'blur', this.searchBlur);\n }\n };\n return SearchBox;\n}());\nexport { SearchBox };\nvar FixedRightContentFocus = /** @class */ (function (_super) {\n __extends(FixedRightContentFocus, _super);\n function FixedRightContentFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedRightContentFocus.prototype.getTable = function () {\n return this.parent.getContent().querySelector('.e-frozen-right-content .e-table');\n };\n FixedRightContentFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var toHeader = (action === 'upArrow' || enterFrozen) && current[0] === 0;\n var toFrozenSwap = this.parent.getFrozenMode() === literals.leftRight && action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1);\n return {\n swap: toHeader || ((action === 'shiftTab' || action === 'leftArrow') && current[1] === 0)\n || (action === 'tab' && current[0] < this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)),\n toHeader: toHeader,\n toFrozenRight: toHeader,\n toFrozen: toFrozenSwap\n };\n };\n FixedRightContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current2 = [];\n if (action === 'rightArrow' || action === 'tab') {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n if (action === 'downArrow' || action === 'enter') {\n current2[0] = -1;\n current2[1] = previous[1];\n }\n if (action === 'shiftTab') {\n current2[0] = previous[0] - 1;\n current2[1] = this.matrix.matrix[current2[0]].length;\n }\n return current2;\n };\n return FixedRightContentFocus;\n}(ContentFocus));\nexport { FixedRightContentFocus };\nvar FixedRightHeaderFocus = /** @class */ (function (_super) {\n __extends(FixedRightHeaderFocus, _super);\n function FixedRightHeaderFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedRightHeaderFocus.prototype.jump = function (action, current) {\n var headerMat = this.parent.focusModule.header && this.parent.focusModule.header.matrix.matrix;\n var isPresent = headerMat && !isNullOrUndefined(headerMat[current[0]]);\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var frozenSwap = (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion())\n || action === 'shiftTab') && (current[1] === 0 || current[1] === this.matrix.matrix[current[0]].indexOf(1))\n || (current[0] < this.matrix.matrix.length - 1 && action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n var swap = ((action === 'downArrow' || enterFrozen || (action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && frozenSwap);\n var fSwap = action === 'tab' && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1);\n var frSwap = (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1;\n if (action === 'tab' && current[0] === this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)) {\n this.matrix.current[0] = -1;\n }\n return { swap: swap, toHeader: frozenSwap, toFrozen: fSwap, toFrozenRight: frSwap };\n };\n FixedRightHeaderFocus.prototype.getTable = function () {\n return (this.parent.getHeaderContent().querySelector('.e-frozen-right-header .e-table'));\n };\n FixedRightHeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current3 = [];\n if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current3[0] = previous[0];\n current3[1] = -1;\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current3[0] = this.matrix.matrix.length;\n current3[1] = previous[1];\n }\n if (action === 'shiftTab') {\n current3[0] = previous[0] === -1 ? this.matrix.matrix.length - 1 : previous[0] - 1;\n current3[1] = this.matrix.matrix[current3[0]].length;\n }\n return current3;\n };\n FixedRightHeaderFocus.prototype.getHeaderType = function () {\n return 'FixedRightHeaderFocus';\n };\n return FixedRightHeaderFocus;\n}(HeaderFocus));\nexport { FixedRightHeaderFocus };\n","import { isNullOrUndefined, getValue, setValue } from '@syncfusion/ej2-base';\nimport { Row } from '../models/row';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\nimport { getUid } from '../base/util';\nimport { getForeignData } from '../../grid/base/util';\nimport * as events from '../base/constant';\n/**\n * RowModelGenerator is used to generate grid data rows.\n *\n * @hidden\n */\nvar RowModelGenerator = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function RowModelGenerator(parent) {\n this.parent = parent;\n }\n RowModelGenerator.prototype.generateRows = function (data, args) {\n var rows = [];\n var startIndex = this.parent.enableVirtualization && args ? args.startIndex : 0;\n startIndex = this.parent.enableInfiniteScrolling && args ? this.getInfiniteIndex(args) : startIndex;\n if (this.parent.enableImmutableMode && args && args.startIndex) {\n startIndex = args.startIndex;\n }\n for (var i = 0, len = Object.keys(data).length; i < len; i++, startIndex++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(data[parseInt(i.toString(), 10)], startIndex);\n }\n return rows;\n };\n RowModelGenerator.prototype.ensureColumns = function () {\n //TODO: generate dummy column for group, detail here;\n var cols = [];\n if (this.parent.detailTemplate || this.parent.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n cols.push(this.generateCell(args, null, CellType.DetailExpand));\n }\n if (this.parent.isRowDragable()) {\n cols.push(this.generateCell({}, null, CellType.RowDragIcon));\n }\n return cols;\n };\n RowModelGenerator.prototype.generateRow = function (data, index, cssClass, indent, pid, tIndex, parentUid) {\n var options = {};\n options.foreignKeyData = {};\n options.uid = getUid('grid-row');\n options.data = data;\n options.index = index;\n options.indent = indent;\n options.tIndex = tIndex;\n options.isDataRow = true;\n options.parentGid = pid;\n options.parentUid = parentUid;\n if (this.parent.isPrinting) {\n if (this.parent.hierarchyPrintMode === 'All') {\n options.isExpand = true;\n }\n else if (this.parent.hierarchyPrintMode === 'Expanded' && this.parent.expandedRows && this.parent.expandedRows[parseInt(index.toString(), 10)]) {\n options.isExpand = this.parent.expandedRows[parseInt(index.toString(), 10)].isExpand;\n }\n }\n options.cssClass = cssClass;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isSelected = this.parent.getSelectedRowIndexes().indexOf(index) > -1;\n this.refreshForeignKeyRow(options);\n var cells = this.ensureColumns();\n var row = new Row(options, this.parent);\n row.cells = this.parent.getFrozenMode() === 'Right' ? this.generateCells(options).concat(cells)\n : cells.concat(this.generateCells(options));\n return row;\n };\n RowModelGenerator.prototype.refreshForeignKeyRow = function (options) {\n var foreignKeyColumns = this.parent.getForeignKeyColumns();\n for (var i = 0; i < foreignKeyColumns.length; i++) {\n setValue(foreignKeyColumns[parseInt(i.toString(), 10)].field, getForeignData(foreignKeyColumns[parseInt(i.toString(), 10)], options.data), options.foreignKeyData);\n }\n };\n RowModelGenerator.prototype.generateCells = function (options) {\n var dummies = this.parent.getColumns();\n var tmp = [];\n for (var i = 0; i < dummies.length; i++) {\n tmp.push(this.generateCell(dummies[parseInt(i.toString(), 10)], options.uid, isNullOrUndefined(dummies[parseInt(i.toString(), 10)].commands) ? undefined : CellType.CommandColumn, null, i, options.foreignKeyData));\n }\n return tmp;\n };\n /**\n *\n * @param {Column} column - Defines column details\n * @param {string} rowId - Defines row id\n * @param {CellType} cellType - Defines cell type\n * @param {number} colSpan - Defines colSpan\n * @param {number} oIndex - Defines index\n * @param {Object} foreignKeyData - Defines foreign key data\n * @returns {Cell} returns cell model\n * @hidden\n */\n RowModelGenerator.prototype.generateCell = function (column, rowId, cellType, colSpan, oIndex, foreignKeyData) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(column.field || column.template),\n 'isTemplate': !isNullOrUndefined(column.template),\n 'rowID': rowId,\n 'column': column,\n 'cellType': !isNullOrUndefined(cellType) ? cellType : CellType.Data,\n 'colSpan': colSpan,\n 'commands': column.commands,\n 'isForeignKey': column.isForeignColumn && column.isForeignColumn(),\n 'foreignKeyData': column.isForeignColumn && column.isForeignColumn() && getValue(column.field, foreignKeyData)\n };\n if (opt.isDataCell || opt.column.type === 'checkbox' || opt.commands) {\n opt.index = oIndex;\n }\n return new Cell(opt);\n };\n RowModelGenerator.prototype.refreshRows = function (input) {\n for (var i = 0; i < input.length; i++) {\n this.refreshForeignKeyRow(input[parseInt(i.toString(), 10)]);\n input[parseInt(i.toString(), 10)].cells = this.generateCells(input[parseInt(i.toString(), 10)]);\n }\n return input;\n };\n RowModelGenerator.prototype.getInfiniteIndex = function (args) {\n return args.requestType === 'infiniteScroll' || args.requestType === 'delete' || args.action === 'add'\n ? (isNullOrUndefined(args.startIndex) ? args['index'] : args.startIndex) : 0;\n };\n return RowModelGenerator;\n}());\nexport { RowModelGenerator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Row } from '../models/row';\nimport { Column } from '../models/column';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { calculateAggregate, getUid } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\n/**\n * Summary row model generator\n *\n * @hidden\n */\nvar SummaryModelGenerator = /** @class */ (function () {\n /**\n * Constructor for Summary row model generator\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function SummaryModelGenerator(parent) {\n this.parent = parent;\n }\n SummaryModelGenerator.prototype.getData = function () {\n var _this = this;\n var rows = [];\n var row = this.parent.aggregates.slice();\n for (var i = 0; i < row.length; i++) {\n var columns = row[parseInt(i.toString(), 10)].columns.filter(function (column) {\n return !(column.footerTemplate || column.groupFooterTemplate || column.groupCaptionTemplate)\n || _this.columnSelector(column);\n });\n if (columns.length) {\n rows.push({ columns: columns });\n }\n }\n return rows;\n };\n SummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.footerTemplate !== undefined;\n };\n SummaryModelGenerator.prototype.getColumns = function (start, end) {\n var columns = [];\n if (this.parent.detailTemplate || !isNullOrUndefined(this.parent.childGrid)) {\n columns.push(new Column({}));\n }\n if (this.parent.allowGrouping) {\n for (var i = 0; i < this.parent.groupSettings.columns.length; i++) {\n columns.push(new Column({}));\n }\n }\n if (this.parent.isRowDragable() && !start) {\n columns.push(new Column({}));\n }\n columns.push.apply(columns, this.parent.getColumns());\n end = end && !start ? end + this.parent.getIndentCount() : end;\n return isNullOrUndefined(start) ? columns : columns.slice(start, end);\n };\n SummaryModelGenerator.prototype.generateRows = function (input, args, start, end, columns) {\n if (input.length === 0) {\n if (args === undefined || !args.count) {\n return [];\n }\n }\n var data = this.buildSummaryData(input, args);\n var rows = [];\n var row = this.getData();\n for (var i = 0; i < row.length; i++) {\n rows.push(this.getGeneratedRow(row[parseInt(i.toString(), 10)], data[parseInt(i.toString(), 10)], args ? args.level : undefined, start, end, args ? args.parentUid : undefined, columns));\n }\n return rows;\n };\n SummaryModelGenerator.prototype.getGeneratedRow = function (summaryRow, data, raw, start, end, parentUid, columns) {\n var tmp = [];\n var indents = this.getIndentByLevel();\n var isDetailGridAlone = !isNullOrUndefined(this.parent.childGrid);\n var indentLength = !start ? this.parent.getIndentCount() : 0;\n if (this.parent.groupSettings.columns.length && this.parent.allowRowDragAndDrop) {\n indents.push('e-indentcelltop');\n }\n else if (this.parent.isRowDragable() && !start) {\n indents = ['e-indentcelltop'];\n }\n var values = columns ? columns : this.getColumns(start, end);\n for (var i = 0; i < values.length; i++) {\n tmp.push(this.getGeneratedCell(values[parseInt(i.toString(), 10)], summaryRow, i >= indentLength ? this.getCellType() :\n i === 0 && this.parent.childGrid ? CellType.DetailFooterIntent : CellType.Indent, indents[parseInt(i.toString(), 10)], isDetailGridAlone));\n }\n var row = new Row({ data: data, attributes: { class: 'e-summaryrow' } });\n row.cells = tmp;\n row.uid = getUid('grid-row');\n row.parentUid = parentUid;\n row.isAggregateRow = true;\n row.visible = tmp.some(function (cell) { return cell.isDataCell && cell.visible; });\n return row;\n };\n SummaryModelGenerator.prototype.getGeneratedCell = function (column, summaryRow, cellType, indent, isDetailGridAlone) {\n //Get the summary column by display\n var sColumn = summaryRow.columns.filter(function (scolumn) { return scolumn.columnName === column.field; })[0];\n var attrs = {\n 'style': { 'textAlign': column.textAlign },\n 'e-mappinguid': column.uid, index: column.index\n };\n if (indent) {\n attrs.class = indent;\n }\n if (isNullOrUndefined(indent) && isDetailGridAlone) {\n attrs.class = 'e-detailindentcelltop';\n }\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(sColumn),\n 'isTemplate': sColumn && !isNullOrUndefined(sColumn.footerTemplate\n || sColumn.groupFooterTemplate || sColumn.groupCaptionTemplate),\n 'column': sColumn || {},\n 'attributes': attrs,\n 'cellType': cellType\n };\n opt.column.headerText = column.headerText;\n return new Cell(opt);\n };\n SummaryModelGenerator.prototype.buildSummaryData = function (data, args) {\n var dummy = [];\n var summaryRows = this.getData();\n var single = {};\n for (var i = 0; i < summaryRows.length; i++) {\n single = {};\n var column = summaryRows[parseInt(i.toString(), 10)].columns;\n for (var j = 0; j < column.length; j++) {\n single = this.setTemplate(column[parseInt(j.toString(), 10)], (args && args.aggregates) ? args : data, single);\n }\n dummy.push(single);\n }\n return dummy;\n };\n SummaryModelGenerator.prototype.getIndentByLevel = function () {\n return this.parent.groupSettings.columns.map(function () { return 'e-indentcelltop'; });\n };\n SummaryModelGenerator.prototype.setTemplate = function (column, data, single) {\n var types = column.type;\n var helper = {};\n var formatFn = column.getFormatter() || (function () { return function (a) { return a; }; })();\n var group = data;\n if (!(types instanceof Array)) {\n types = [column.type];\n }\n for (var i = 0; i < types.length; i++) {\n var key = column.field + ' - ' + types[parseInt(i.toString(), 10)].toLowerCase();\n var disp = column.columnName;\n var val = types[parseInt(i.toString(), 10)] !== 'Custom' && group.aggregates && key in group.aggregates ? group.aggregates[\"\" + key] :\n calculateAggregate(types[parseInt(i.toString(), 10)], group.aggregates ? group : data, column, this.parent);\n single[\"\" + disp] = single[\"\" + disp] || {};\n single[\"\" + disp][\"\" + key] = val;\n single[\"\" + disp][types[parseInt(i.toString(), 10)]] = !isNullOrUndefined(val) ? formatFn(val) : ' ';\n if (group.field) {\n single[\"\" + disp].field = group.field;\n single[\"\" + disp].key = group.key;\n }\n }\n helper.format = column.getFormatter();\n column.setTemplate(helper);\n return single;\n };\n SummaryModelGenerator.prototype.getCellType = function () {\n return CellType.Summary;\n };\n return SummaryModelGenerator;\n}());\nexport { SummaryModelGenerator };\nvar GroupSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(GroupSummaryModelGenerator, _super);\n function GroupSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GroupSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupFooterTemplate !== undefined;\n };\n GroupSummaryModelGenerator.prototype.getIndentByLevel = function (level) {\n if (level === void 0) { level = this.parent.groupSettings.columns.length; }\n if (this.parent.allowRowDragAndDrop && this.parent.groupSettings.columns.length) {\n level -= 1;\n }\n return this.parent.groupSettings.columns.map(function (v, indx) { return indx <= level - 1 ? '' : 'e-indentcelltop'; });\n };\n GroupSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.GroupSummary;\n };\n return GroupSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { GroupSummaryModelGenerator };\nvar CaptionSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(CaptionSummaryModelGenerator, _super);\n function CaptionSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CaptionSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupCaptionTemplate !== undefined;\n };\n CaptionSummaryModelGenerator.prototype.getData = function () {\n var initVal = { columns: [] };\n return [_super.prototype.getData.call(this).reduce(function (prev, cur) {\n prev.columns = prev.columns.concat(cur.columns);\n return prev;\n }, initVal)];\n };\n CaptionSummaryModelGenerator.prototype.isEmpty = function () {\n return (this.getData()[0].columns || []).length === 0;\n };\n CaptionSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.CaptionSummary;\n };\n return CaptionSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { CaptionSummaryModelGenerator };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Internationalization, setCulture } from '@syncfusion/ej2-base';\n/**\n * ValueFormatter class to globalize the value.\n *\n * @hidden\n */\nvar ValueFormatter = /** @class */ (function () {\n function ValueFormatter(cultureName) {\n this.intl = new Internationalization();\n if (!isNullOrUndefined(cultureName)) {\n this.intl.culture = cultureName;\n }\n }\n ValueFormatter.prototype.getFormatFunction = function (format) {\n if (format.type) {\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n ValueFormatter.prototype.getParserFunction = function (format) {\n if (format.type) {\n return this.intl.getDateParser(format);\n }\n else {\n return this.intl.getNumberParser(format);\n }\n };\n ValueFormatter.prototype.fromView = function (value, format, type) {\n if ((type === 'date' || type === 'datetime' || type === 'number') && (!isNullOrUndefined(format))) {\n return format(value);\n }\n else {\n return value;\n }\n };\n ValueFormatter.prototype.toView = function (value, format) {\n var result = value;\n if (!isNullOrUndefined(format) && !isNullOrUndefined(value)) {\n result = format(value);\n }\n return result;\n };\n ValueFormatter.prototype.setCulture = function (cultureName) {\n if (!isNullOrUndefined(cultureName)) {\n setCulture(cultureName);\n }\n };\n return ValueFormatter;\n}());\nexport { ValueFormatter };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { formatUnit } from '@syncfusion/ej2-base';\nimport { columnWidthChanged, preventFrozenScrollRefresh } from '../base/constant';\nimport { Column } from '../models/column';\nimport { parentsUntil, ispercentageWidth, getScrollBarWidth } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * ColumnWidthService\n *\n * @hidden\n */\nvar ColumnWidthService = /** @class */ (function () {\n function ColumnWidthService(parent) {\n this.parent = parent;\n }\n ColumnWidthService.prototype.setWidthToColumns = function () {\n var i = 0;\n var indexes = this.parent.getColumnIndexesInView();\n var wFlag = true;\n var totalColumnsWidth = 0;\n if (this.parent.allowGrouping) {\n for (var len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n wFlag = false;\n continue;\n }\n this.setColumnWidth(new Column({ width: '30px' }), i);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n var columns = this.parent.getColumns();\n for (var j = 0; j < columns.length; j++) {\n this.setColumnWidth(columns[parseInt(j.toString(), 10)], wFlag && this.parent.enableColumnVirtualization ? undefined : j + i);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), columns.length);\n }\n totalColumnsWidth = this.getTableWidth(this.parent.getColumns());\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(totalColumnsWidth);\n }\n };\n ColumnWidthService.prototype.setMinwidthBycalculation = function (tWidth) {\n var difference = 0;\n var collection = this.parent.getColumns().filter(function (a) {\n return isNullOrUndefined(a.width) || a.width === 'auto';\n });\n if (collection.length) {\n if (!isNullOrUndefined(this.parent.width) && this.parent.width !== 'auto' &&\n typeof (this.parent.width) === 'string' && this.parent.width.indexOf('%') === -1) {\n difference = (typeof this.parent.width === 'string' ? parseInt(this.parent.width, 10) : this.parent.width) - tWidth;\n }\n else {\n difference = this.parent.element.getBoundingClientRect().width - tWidth;\n }\n var tmWidth = 0;\n for (var _i = 0, collection_1 = collection; _i < collection_1.length; _i++) {\n var cols = collection_1[_i];\n tmWidth += !isNullOrUndefined(cols.minWidth) ?\n ((typeof cols.minWidth === 'string' ? parseInt(cols.minWidth, 10) : cols.minWidth)) : 0;\n }\n for (var i = 0; i < collection.length; i++) {\n if (tWidth === 0 && this.parent.allowResizing && this.isWidthUndefined() && (i !== collection.length - 1)) {\n this.setUndefinedColumnWidth(collection);\n }\n var index = this.parent.getColumnIndexByField(collection[parseInt(i.toString(), 10)].field) + this.parent.getIndentCount();\n if (tWidth !== 0 && difference < tmWidth) {\n this.setWidth(collection[parseInt(i.toString(), 10)].minWidth, index);\n }\n else if (tWidth !== 0 && difference > tmWidth) {\n this.setWidth('', index, true);\n }\n }\n }\n };\n ColumnWidthService.prototype.setUndefinedColumnWidth = function (collection) {\n for (var k = 0; k < collection.length; k++) {\n if (k !== collection.length - 1) {\n collection[parseInt(k.toString(), 10)].width = 200;\n this.setWidth(200, this.parent.getColumnIndexByField(collection[parseInt(k.toString(), 10)].field));\n }\n }\n };\n ColumnWidthService.prototype.setColumnWidth = function (column, index, module) {\n if (this.parent.getColumns().length < 1) {\n return;\n }\n var columnIndex = isNullOrUndefined(index) ? this.parent.getNormalizedColumnIndex(column.uid) : index;\n var cWidth = this.getWidth(column);\n var tgridWidth = this.getTableWidth(this.parent.getColumns());\n if (cWidth !== null) {\n this.setWidth(cWidth, columnIndex);\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(tgridWidth);\n }\n if ((this.parent.allowResizing && module === 'resize') || (this.parent.getFrozenColumns() && this.parent.allowResizing)) {\n this.setWidthToTable();\n }\n this.parent.notify(columnWidthChanged, { index: columnIndex, width: cWidth, column: column, module: module });\n }\n };\n ColumnWidthService.prototype.setWidth = function (width, index, clear) {\n if (this.parent.groupSettings.columns.length > index && ispercentageWidth(this.parent)) {\n var elementWidth = this.parent.element.offsetWidth;\n width = (30 / elementWidth * 100).toFixed(1) + '%';\n }\n var header = this.parent.getHeaderTable();\n var content = this.parent.getContentTable();\n var fWidth = formatUnit(width);\n var headerCol;\n var frzCols = this.parent.getFrozenColumns();\n var isDraggable = this.parent.isRowDragable();\n frzCols = frzCols && isDraggable ? frzCols + 1 : frzCols;\n var mHdr = this.parent.getHeaderContent().querySelector('.' + literals.movableHeader);\n var mCont = this.parent.getContent().querySelector('.' + literals.movableContent);\n var freezeLeft = this.parent.getFrozenLeftColumnsCount();\n var freezeRight = this.parent.getFrozenRightColumnsCount();\n var movableCount = this.parent.getMovableColumnsCount();\n var isColFrozen = freezeLeft !== 0 || freezeRight !== 0;\n if (frzCols && index >= frzCols) {\n if (!mHdr || !mHdr.querySelector(literals.colGroup)) {\n return;\n }\n headerCol = mHdr\n .querySelector(literals.colGroup + ':not(.e-masked-colgroup)').children[index - frzCols];\n }\n else if (this.parent.enableColumnVirtualization && frzCols && this.parent.contentModule.isXaxis()\n && mHdr.scrollLeft > 0) {\n var colGroup = mHdr.querySelector(literals.colGroup);\n headerCol = colGroup.children[(colGroup.children.length - 1) - index];\n }\n else if (isColFrozen) {\n var target = void 0;\n if (freezeLeft && !freezeRight) {\n index = isDraggable ? index - 1 : index;\n target = index < freezeLeft ? header : mHdr;\n }\n else if (!freezeLeft && freezeRight) {\n target = index >= movableCount ? header : mHdr;\n }\n else if (freezeLeft && freezeRight) {\n index = isDraggable ? index - 1 : index;\n var frHdr = this.parent.getFrozenRightHeader();\n target = index < freezeLeft ? header : index < (freezeLeft + movableCount) ? mHdr : frHdr;\n }\n headerCol = this.getColumnLevelFrozenColgroup(index, freezeLeft, movableCount, target);\n if (!headerCol) {\n return;\n }\n }\n else {\n headerCol = header.querySelector(literals.colGroup).children[parseInt(index.toString(), 10)];\n }\n if (headerCol && !clear) {\n headerCol.style.width = fWidth;\n }\n else if (headerCol && clear) {\n headerCol.style.width = '';\n }\n var contentCol;\n if (frzCols && index >= frzCols) {\n contentCol = this.parent.getContent().querySelector('.' + literals.movableContent)\n .querySelector(literals.colGroup + ':not(.e-masked-colgroup)').children[index - frzCols];\n }\n else if (this.parent.enableColumnVirtualization && frzCols && this.parent.contentModule.isXaxis()\n && mCont.scrollLeft > 0) {\n var colGroup = this.parent.getContent().querySelector('.' + literals.movableContent)\n .querySelector(literals.colGroup);\n contentCol = colGroup.children[(colGroup.children.length - 1) - index];\n }\n else if (isColFrozen) {\n var target = void 0;\n if (freezeLeft && !freezeRight) {\n target = index < freezeLeft ? content : mCont;\n }\n if (!freezeLeft && freezeRight) {\n target = index >= movableCount ? content : mCont;\n }\n if (freezeLeft && freezeRight) {\n var frCont = this.parent.getContent().querySelector('.e-frozen-right-content');\n target = index < freezeLeft ? content : index < (freezeLeft + movableCount) ? mCont : frCont;\n }\n contentCol = this.getColumnLevelFrozenColgroup(index, freezeLeft, movableCount, target);\n }\n else {\n contentCol = content.querySelector(literals.colGroup).children[parseInt(index.toString(), 10)];\n }\n if (contentCol && !clear) {\n if (contentCol.style.width !== headerCol.style.width && this.parent.isFrozenGrid() && this.parent['reorderModule'] &&\n this.parent['reorderModule'].element && this.parent['reorderModule'].destElement) {\n contentCol.style.display = this.parent.getColumnByIndex(index).visible ? '' : 'none';\n }\n contentCol.style.width = fWidth;\n }\n else if (contentCol && clear) {\n contentCol.style.width = '';\n }\n if (!this.parent.enableColumnVirtualization) {\n var edit = this.parent.element.querySelectorAll('.e-table.e-inline-edit');\n var editTableCol = [];\n for (var i = 0; i < edit.length; i++) {\n if (parentsUntil(edit[parseInt(i.toString(), 10)], 'e-grid').id === this.parent.element.id) {\n for (var j = 0; j < edit[parseInt(i.toString(), 10)].querySelector('colgroup').children.length; j++) {\n editTableCol.push(edit[parseInt(i.toString(), 10)].querySelector('colgroup').children[parseInt(j.toString(), 10)]);\n }\n }\n }\n if (edit.length && editTableCol.length) {\n editTableCol[parseInt(index.toString(), 10)].style.width = fWidth;\n }\n }\n if (this.parent.isFrozenGrid()) {\n this.refreshFrozenScrollbar();\n }\n };\n ColumnWidthService.prototype.getColumnLevelFrozenColgroup = function (index, left, movable, ele) {\n if (!ele || !ele.querySelector(literals.colGroup)) {\n return null;\n }\n var columns = this.parent.getColumns();\n var isDrag = this.parent.isRowDragable();\n var frzMode = this.parent.getFrozenMode();\n var headerCol;\n var colGroup = [].slice.call(ele.querySelector(literals.colGroup + ':not(.e-masked-colgroup)').children);\n if (frzMode === 'Right' && isDrag && index === (movable + this.parent.getFrozenRightColumnsCount())) {\n headerCol = colGroup[colGroup.length - 1];\n }\n else if (isDrag && index === -1) {\n headerCol = colGroup[0];\n }\n else if (columns[parseInt(index.toString(), 10)].freeze === 'Left') {\n headerCol = colGroup[isDrag ? (index + 1) : index];\n }\n else if (columns[parseInt(index.toString(), 10)].freeze === 'Right') {\n headerCol = colGroup[index - (left + movable)];\n }\n else {\n headerCol = colGroup[index - left];\n }\n return headerCol;\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnWidthService.prototype.refreshFrozenScrollbar = function () {\n var args = { cancel: false };\n this.parent.notify(preventFrozenScrollRefresh, args);\n if (args.cancel) {\n return;\n }\n var scrollWidth = getScrollBarWidth();\n var frozenScrollbar = this.parent.element.querySelector('.e-frozenscrollbar');\n var movableScrollbar = this.parent.element.querySelector('.e-movablescrollbar');\n var frozencontent = this.parent.getContent().querySelector('.' + literals.frozenContent);\n var movableContent = this.parent.getContent().querySelector('.' + literals.movableContent);\n var frozenWidth = frozencontent.firstElementChild.getBoundingClientRect().width;\n var movableWidth = movableContent.firstElementChild.getBoundingClientRect().width;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenWidth = frozenWidth + scrollWidth;\n }\n frozenScrollbar.style.width = frozenWidth + 'px';\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var frozenRightScrollbar = this.parent.element.querySelector('.e-frozen-right-scrollbar');\n var frozenRightWidth = this.parent.getContent().querySelector('.e-frozen-right-content')\n .firstElementChild.getBoundingClientRect().width;\n if (this.parent.height !== 'auto') {\n frozenRightWidth = frozenRightWidth + scrollWidth;\n }\n frozenRightScrollbar.style.width = frozenRightWidth + 'px';\n }\n else {\n if (this.parent.enableColumnVirtualization) {\n var placeHolder = this.parent.getMovableVirtualContent().querySelector('.e-virtualtrack');\n if (placeHolder) {\n movableWidth = placeHolder.scrollWidth;\n }\n }\n if (this.parent.getFrozenMode() !== 'Right' && this.parent.height !== 'auto') {\n movableWidth = movableWidth + scrollWidth;\n }\n }\n movableScrollbar.firstElementChild.style.width = movableWidth + 'px';\n };\n ColumnWidthService.prototype.getSiblingsHeight = function (element) {\n var previous = this.getHeightFromDirection(element, 'previous');\n var next = this.getHeightFromDirection(element, 'next');\n return previous + next;\n };\n ColumnWidthService.prototype.getHeightFromDirection = function (element, direction) {\n var sibling = element[direction + 'ElementSibling'];\n var result = 0;\n var classList = [literals.gridHeader, literals.gridFooter, 'e-groupdroparea', 'e-gridpager', 'e-toolbar', 'e-temp-toolbar'];\n while (sibling) {\n if (classList.some(function (value) { return sibling.classList.contains(value); })) {\n result += sibling.offsetHeight;\n }\n sibling = sibling[direction + 'ElementSibling'];\n }\n return result;\n };\n ColumnWidthService.prototype.isWidthUndefined = function () {\n var isWidUndefCount = this.parent.getColumns().filter(function (col) {\n return isNullOrUndefined(col.width) && isNullOrUndefined(col.minWidth);\n }).length;\n return (this.parent.getColumns().length === isWidUndefCount);\n };\n ColumnWidthService.prototype.getWidth = function (column) {\n if (isNullOrUndefined(column.width) && this.parent.allowResizing\n && isNullOrUndefined(column.minWidth) && !this.isWidthUndefined()) {\n column.width = 200;\n }\n if (this.parent.isFrozenGrid() && isNullOrUndefined(column.width) &&\n (column.getFreezeTableName() === literals.frozenLeft || column.getFreezeTableName() === literals.frozenRight)) {\n column.width = 200;\n }\n if (!column.width) {\n return null;\n }\n var width = parseInt(column.width.toString(), 10);\n if (column.minWidth && width < parseInt(column.minWidth.toString(), 10)) {\n return column.minWidth;\n }\n else if ((column.maxWidth && width > parseInt(column.maxWidth.toString(), 10))) {\n return column.maxWidth;\n }\n else {\n return column.width;\n }\n };\n ColumnWidthService.prototype.getTableWidth = function (columns) {\n var tWidth = 0;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n var cWidth = this.getWidth(column);\n if (column.width === 'auto') {\n cWidth = 0;\n }\n if (column.visible !== false && cWidth !== null) {\n tWidth += parseInt(cWidth.toString(), 10);\n }\n }\n return tWidth;\n };\n ColumnWidthService.prototype.calcMovableOrFreezeColWidth = function (tableType) {\n var columns = this.parent.getColumns().slice();\n var left = this.parent.getFrozenLeftColumnsCount() || this.parent.getFrozenColumns();\n var movable = this.parent.getMovableColumnsCount();\n var right = this.parent.getFrozenRightColumnsCount();\n if (tableType === 'movable') {\n if (right) {\n columns.splice(left + movable, columns.length);\n }\n if (left) {\n columns.splice(0, left);\n }\n }\n else if (tableType === 'freeze-left') {\n columns.splice(left, columns.length);\n }\n else if (tableType === 'freeze-right') {\n columns.splice(0, left + movable);\n }\n return formatUnit(this.getTableWidth(columns));\n };\n ColumnWidthService.prototype.setWidthToFrozenRightTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze-right');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n var headerTbl = this.parent.getHeaderContent().querySelector('.e-frozen-right-header')\n .querySelector('.' + literals.table + ':not(.e-masked-table)');\n var cntTbl = this.parent.getContent().querySelector('.e-frozen-right-content')\n .querySelector('.' + literals.table + ':not(.e-masked-table)');\n headerTbl.style.width = freezeWidth;\n cntTbl.style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToFrozenLeftTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze-left');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n this.parent.getHeaderTable().style.width = freezeWidth;\n this.parent.getContentTable().style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToMovableTable = function () {\n var movableWidth = '';\n var isColUndefined = this.parent.getColumns().filter(function (a) { return isNullOrUndefined(a.width); }).length >= 1;\n var isWidthAuto = this.parent.getColumns().filter(function (a) { return (a.width === 'auto'); }).length >= 1;\n var movableHeader = this.parent.getHeaderContent().querySelector('.' + literals.movableHeader);\n var movableContent = this.parent.getContent().querySelector('.' + literals.movableContent);\n if (typeof this.parent.width === 'number' && !isColUndefined && !isWidthAuto && !this.parent.resizeModule.resizeProcess) {\n movableWidth = formatUnit(this.parent.width - parseInt(this.calcMovableOrFreezeColWidth('freeze').split('px')[0], 10) - 5);\n }\n else if (!isColUndefined && !isWidthAuto) {\n movableWidth = this.calcMovableOrFreezeColWidth('movable');\n }\n movableWidth = this.isAutoResize() ? '100%' : movableWidth;\n if (movableHeader.firstElementChild) {\n if (movableHeader.firstElementChild.classList.contains('e-masked-table')) {\n movableHeader.childNodes[1].style.width = movableWidth;\n }\n else {\n movableHeader.firstElementChild.style.width = movableWidth;\n }\n }\n if (movableContent.firstElementChild.classList.contains('e-masked-table')) {\n movableContent.childNodes[1].style.width = movableWidth;\n }\n else {\n movableContent.firstElementChild.style.width = movableWidth;\n }\n };\n ColumnWidthService.prototype.setWidthToFrozenEditTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n this.parent.element.querySelectorAll('.e-table.e-inline-edit')[0].style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToMovableEditTable = function () {\n var movableWidth = this.calcMovableOrFreezeColWidth('movable');\n movableWidth = this.isAutoResize() ? '100%' : movableWidth;\n this.parent.element.querySelectorAll('.e-table.e-inline-edit')[1].style.width = movableWidth;\n };\n ColumnWidthService.prototype.setWidthToTable = function () {\n var tWidth = formatUnit(this.getTableWidth(this.parent.getColumns()));\n if (this.parent.isFrozenGrid()) {\n if (this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount()) {\n this.setWidthToFrozenLeftTable();\n }\n this.setWidthToMovableTable();\n if (this.parent.getFrozenRightColumnsCount()) {\n this.setWidthToFrozenRightTable();\n }\n }\n else {\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }));\n }\n tWidth = this.isAutoResize() ? '100%' : tWidth;\n this.parent.getHeaderTable().style.width = tWidth;\n this.parent.getContentTable().style.width = tWidth;\n }\n var edit = this.parent.element.querySelector('.e-table.e-inline-edit');\n if (edit && this.parent.getFrozenColumns()) {\n this.setWidthToFrozenEditTable();\n this.setWidthToMovableEditTable();\n }\n else if (edit) {\n edit.style.width = tWidth;\n }\n };\n ColumnWidthService.prototype.isAutoResize = function () {\n return this.parent.allowResizing && this.parent.resizeSettings.mode === 'Auto';\n };\n return ColumnWidthService;\n}());\nexport { ColumnWidthService };\n","/* eslint-disable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\nimport { createElement, attributes, addClass, removeClass, detach, classList } from '@syncfusion/ej2-base';\nimport { closest, formatUnit, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nvar CLASSNAMES = {\n RTL: 'e-rtl',\n DISABLE: 'e-disabled',\n INPUT: 'e-input',\n TEXTAREA: 'e-multi-line-input',\n INPUTGROUP: 'e-input-group',\n FLOATINPUT: 'e-float-input',\n FLOATLINE: 'e-float-line',\n FLOATTEXT: 'e-float-text',\n FLOATTEXTCONTENT: 'e-float-text-content',\n CLEARICON: 'e-clear-icon',\n CLEARICONHIDE: 'e-clear-icon-hide',\n LABELTOP: 'e-label-top',\n LABELBOTTOM: 'e-label-bottom',\n NOFLOATLABEL: 'e-no-float-label',\n INPUTCUSTOMTAG: 'e-input-custom-tag',\n FLOATCUSTOMTAG: 'e-float-custom-tag'\n};\n/**\n * Base for Input creation through util methods.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Input;\n(function (Input) {\n var privateInputObj = {\n container: null,\n buttons: [],\n clearButton: null\n };\n var floatType;\n var isBindClearAction = true;\n /**\n * Create a wrapper to input element with multiple span elements and set the basic properties to input based components.\n * ```\n * E.g : Input.createInput({ element: element, floatLabelType : \"Auto\", properties: { placeholder: 'Search' } });\n * ```\n *\n */\n function createInput(args, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var inputObject = { container: null, buttons: [], clearButton: null };\n floatType = args.floatLabelType;\n isBindClearAction = args.bindClearAction;\n if (isNullOrUndefined(args.floatLabelType) || args.floatLabelType === 'Never') {\n inputObject.container = createInputContainer(args, CLASSNAMES.INPUTGROUP, CLASSNAMES.INPUTCUSTOMTAG, 'span', makeElement);\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n addClass([args.element], CLASSNAMES.INPUT);\n inputObject.container.appendChild(args.element);\n }\n else {\n createFloatingInput(args, inputObject, makeElement);\n }\n bindInitialEvent(args);\n if (!isNullOrUndefined(args.properties) && !isNullOrUndefined(args.properties.showClearButton) &&\n args.properties.showClearButton) {\n setClearButton(args.properties.showClearButton, args.element, inputObject, true, makeElement);\n inputObject.clearButton.setAttribute('role', 'button');\n if (inputObject.container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n addClass([inputObject.container], CLASSNAMES.INPUTGROUP);\n }\n }\n if (!isNullOrUndefined(args.buttons)) {\n for (var i = 0; i < args.buttons.length; i++) {\n inputObject.buttons.push(appendSpan(args.buttons[i], inputObject.container, makeElement));\n }\n }\n if (!isNullOrUndefined(args.element) && args.element.tagName === 'TEXTAREA') {\n addClass([inputObject.container], CLASSNAMES.TEXTAREA);\n }\n validateInputType(inputObject.container, args.element);\n inputObject = setPropertyValue(args, inputObject);\n createSpanElement(inputObject.container, makeElement);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n privateInputObj = inputObject;\n return inputObject;\n }\n Input.createInput = createInput;\n function bindInitialEvent(args) {\n checkInputValue(args.floatLabelType, args.element);\n args.element.addEventListener('focus', function () {\n var parent = getParentNode(this);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline')\n || parent.classList.contains('e-filled')) {\n parent.classList.add('e-input-focus');\n }\n if (args.floatLabelType === 'Auto') {\n setTimeout(function () {\n Input.calculateWidth(args.element, parent);\n }, 80);\n }\n });\n args.element.addEventListener('blur', function () {\n var parent = getParentNode(this);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline')\n || parent.classList.contains('e-filled')) {\n parent.classList.remove('e-input-focus');\n }\n if (args.floatLabelType === 'Auto' && args.element.value === '') {\n setTimeout(function () {\n Input.calculateWidth(args.element, parent);\n }, 80);\n }\n });\n args.element.addEventListener('input', function () {\n checkInputValue(floatType, args.element);\n });\n }\n Input.bindInitialEvent = bindInitialEvent;\n function checkInputValue(floatLabelType, inputElement) {\n var inputValue = inputElement.value;\n var inputParent = inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputValue !== '' && !isNullOrUndefined(inputValue)) {\n if (inputParent && inputParent.classList.contains('e-input-group')) {\n inputParent.classList.add('e-valid-input');\n }\n else if (grandParent && grandParent.classList.contains('e-input-group')) {\n grandParent.classList.add('e-valid-input');\n }\n }\n else if (floatLabelType !== 'Always') {\n if (inputParent && inputParent.classList.contains('e-input-group')) {\n inputParent.classList.remove('e-valid-input');\n }\n else if (grandParent && grandParent.classList.contains('e-input-group')) {\n grandParent.classList.remove('e-valid-input');\n }\n }\n }\n function _focusFn() {\n var label = getParentNode(this).getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(label)) {\n addClass([label], CLASSNAMES.LABELTOP);\n if (label.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function _blurFn() {\n var parent = getParentNode(this);\n if ((parent.getElementsByTagName('textarea')[0]) ? parent.getElementsByTagName('textarea')[0].value === '' :\n parent.getElementsByTagName('input')[0].value === '') {\n var label = parent.getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(label)) {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function wireFloatingEvents(element) {\n element.addEventListener('focus', _focusFn);\n element.addEventListener('blur', _blurFn);\n }\n Input.wireFloatingEvents = wireFloatingEvents;\n function unwireFloatingEvents(element) {\n element.removeEventListener('focus', _focusFn);\n element.removeEventListener('blur', _blurFn);\n }\n function createFloatingInput(args, inputObject, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (args.floatLabelType === 'Auto') {\n wireFloatingEvents(args.element);\n }\n if (isNullOrUndefined(inputObject.container)) {\n inputObject.container = createInputContainer(args, CLASSNAMES.FLOATINPUT, CLASSNAMES.FLOATCUSTOMTAG, 'div', makeElement);\n inputObject.container.classList.add(CLASSNAMES.INPUTGROUP);\n if (args.element.parentNode) {\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n }\n }\n else {\n if (!isNullOrUndefined(args.customTag)) {\n inputObject.container.classList.add(CLASSNAMES.FLOATCUSTOMTAG);\n }\n inputObject.container.classList.add(CLASSNAMES.FLOATINPUT);\n }\n var floatLinelement = makeElement('span', { className: CLASSNAMES.FLOATLINE });\n var floatLabelElement = makeElement('label', { className: CLASSNAMES.FLOATTEXT });\n if (!isNullOrUndefined(args.element.id) && args.element.id !== '') {\n floatLabelElement.id = 'label_' + args.element.id.replace(/ /g, '_');\n attributes(args.element, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(args.element.placeholder) && args.element.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceHolder(args.element.placeholder);\n args.element.removeAttribute('placeholder');\n }\n if (!isNullOrUndefined(args.properties) && !isNullOrUndefined(args.properties.placeholder) &&\n args.properties.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceHolder(args.properties.placeholder);\n }\n if (!floatLabelElement.innerText) {\n inputObject.container.classList.add(CLASSNAMES.NOFLOATLABEL);\n }\n if (inputObject.container.classList.contains('e-float-icon-left')) {\n var inputWrap = inputObject.container.querySelector('.e-input-in-wrap');\n inputWrap.appendChild(args.element);\n inputWrap.appendChild(floatLinelement);\n inputWrap.appendChild(floatLabelElement);\n }\n else {\n inputObject.container.appendChild(args.element);\n inputObject.container.appendChild(floatLinelement);\n inputObject.container.appendChild(floatLabelElement);\n }\n updateLabelState(args.element.value, floatLabelElement);\n if (args.floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([floatLabelElement], CLASSNAMES.LABELBOTTOM);\n }\n addClass([floatLabelElement], CLASSNAMES.LABELTOP);\n }\n if (args.floatLabelType === 'Auto') {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n args.element.addEventListener('input', function (event) {\n updateLabelState(args.element.value, floatLabelElement, args.element);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n args.element.addEventListener('blur', function (event) {\n updateLabelState(args.element.value, floatLabelElement);\n });\n }\n if (!isNullOrUndefined(args.element.getAttribute('id'))) {\n floatLabelElement.setAttribute('for', args.element.getAttribute('id'));\n }\n }\n function checkFloatLabelType(type, container) {\n if (type === 'Always' && container.classList.contains('e-outline')) {\n container.classList.add('e-valid-input');\n }\n }\n function setPropertyValue(args, inputObject) {\n if (!isNullOrUndefined(args.properties)) {\n for (var _i = 0, _a = Object.keys(args.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n setCssClass(args.properties.cssClass, [inputObject.container]);\n checkFloatLabelType(args.floatLabelType, inputObject.container);\n break;\n case 'enabled':\n setEnabled(args.properties.enabled, args.element, args.floatLabelType, inputObject.container);\n break;\n case 'enableRtl':\n setEnableRtl(args.properties.enableRtl, [inputObject.container]);\n break;\n case 'placeholder':\n setPlaceholder(args.properties.placeholder, args.element);\n break;\n case 'readonly':\n setReadonly(args.properties.readonly, args.element);\n break;\n }\n }\n }\n return inputObject;\n }\n function updateIconState(value, button, readonly) {\n if (!isNullOrUndefined(button)) {\n if (value && !readonly) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n }\n function updateLabelState(value, label, element) {\n if (element === void 0) { element = null; }\n if (value) {\n addClass([label], CLASSNAMES.LABELTOP);\n if (label.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n else {\n var isNotFocused = element != null ? element !== document.activeElement : true;\n if (isNotFocused) {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function getParentNode(element) {\n var parentNode = isNullOrUndefined(element.parentNode) ? element\n : element.parentNode;\n if (parentNode && parentNode.classList.contains('e-input-in-wrap')) {\n parentNode = parentNode.parentNode;\n }\n return parentNode;\n }\n /**\n * To create clear button.\n */\n function createClearButton(element, inputObject, initial, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = makeElement('span', { className: CLASSNAMES.CLEARICON });\n var container = inputObject.container;\n if (!isNullOrUndefined(initial)) {\n container.appendChild(button);\n }\n else {\n var baseElement = inputObject.container.classList.contains(CLASSNAMES.FLOATINPUT) ?\n inputObject.container.querySelector('.' + CLASSNAMES.FLOATTEXT) : element;\n baseElement.insertAdjacentElement('afterend', button);\n }\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n wireClearBtnEvents(element, button, container);\n button.setAttribute('aria-label', 'close');\n return button;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function wireClearBtnEvents(element, button, container) {\n if (isBindClearAction === undefined || isBindClearAction) {\n button.addEventListener('click', function (event) {\n if (!(element.classList.contains(CLASSNAMES.DISABLE) || element.readOnly)) {\n event.preventDefault();\n if (element !== document.activeElement) {\n element.focus();\n }\n element.value = '';\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n element.addEventListener('input', function (event) {\n updateIconState(element.value, button);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n element.addEventListener('focus', function (event) {\n updateIconState(element.value, button, element.readOnly);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n element.addEventListener('blur', function (event) {\n setTimeout(function () {\n if (!isNullOrUndefined(button)) {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n button = !isNullOrUndefined(element) && element.classList.contains('e-combobox') ? null : button;\n }\n }, 200);\n });\n }\n Input.wireClearBtnEvents = wireClearBtnEvents;\n function destroy() {\n privateInputObj = null;\n }\n Input.destroy = destroy;\n function validateLabel(element, floatLabelType) {\n var parent = getParentNode(element);\n if (parent.classList.contains(CLASSNAMES.FLOATINPUT) && floatLabelType === 'Auto') {\n var label = getParentNode(element).getElementsByClassName('e-float-text')[0];\n updateLabelState(element.value, label, element);\n }\n }\n /**\n * To create input box contianer.\n */\n function createInputContainer(args, className, tagClass, tag, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container;\n if (!isNullOrUndefined(args.customTag)) {\n container = makeElement(args.customTag, { className: className });\n container.classList.add(tagClass);\n }\n else {\n container = makeElement(tag, { className: className });\n }\n container.classList.add('e-control-wrapper');\n return container;\n }\n function encodePlaceHolder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanEle = document.createElement('span');\n spanEle.innerHTML = '';\n var hiddenInput = (spanEle.children[0]);\n result = hiddenInput.placeholder;\n }\n return result;\n }\n /**\n * Sets the value to the input element.\n * ```\n * E.g : Input.setValue('content', element, \"Auto\", true );\n * ```\n *\n * @param {string} value - Specify the value of the input element.\n * @param {HTMLInputElement | HTMLTextAreaElement} element - The element on which the specified value is updated.\n * @param {string} floatLabelType - Specify the float label type of the input element.\n * @param {boolean} clearButton - Boolean value to specify whether the clear icon is enabled / disabled on the input.\n */\n function setValue(value, element, floatLabelType, clearButton) {\n element.value = value;\n if (floatLabelType === 'Auto' && value === '') {\n calculateWidth(element, element.parentElement);\n }\n if ((!isNullOrUndefined(floatLabelType)) && floatLabelType === 'Auto') {\n validateLabel(element, floatLabelType);\n }\n if (!isNullOrUndefined(clearButton) && clearButton) {\n var parentElement = getParentNode(element);\n if (!isNullOrUndefined(parentElement)) {\n var button = parentElement.getElementsByClassName(CLASSNAMES.CLEARICON)[0];\n if (!isNullOrUndefined(button)) {\n if (element.value && !isNullOrUndefined(parentElement) && parentElement.classList.contains('e-input-focus')) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n }\n }\n checkInputValue(floatLabelType, element);\n }\n Input.setValue = setValue;\n /**\n * Sets the single or multiple cssClass to wrapper of input element.\n * ```\n * E.g : Input.setCssClass('e-custom-class', [element]);\n * ```\n *\n * @param {string} cssClass - Css class names which are needed to add.\n * @param {Element[] | NodeList} elements - The elements which are needed to add / remove classes.\n * @param {string} oldClass\n * - Css class names which are needed to remove. If old classes are need to remove, can give this optional parameter.\n */\n function setCssClass(cssClass, elements, oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNullOrUndefined(cssClass) && cssClass !== '') {\n addClass(elements, cssClass.split(' '));\n }\n }\n Input.setCssClass = setCssClass;\n /**\n * Set the width to the placeholder when it overflows on the button such as spinbutton, clearbutton, icon etc\n * ```\n * E.g : Input.calculateWidth(element, container);\n * ```\n *\n * @param {any} element - Input element which is need to add.\n * @param {HTMLElement} container - The parent element which is need to get the label span to calculate width\n */\n function calculateWidth(element, container, moduleName) {\n var elementWidth = moduleName === 'multiselect' ? element : element.clientWidth - parseInt(getComputedStyle(element, null).getPropertyValue('padding-left'), 10);\n if (!isNullOrUndefined(container.getElementsByClassName('e-float-text-content')[0])) {\n if (container.getElementsByClassName('e-float-text-content')[0].classList.contains('e-float-text-overflow')) {\n container.getElementsByClassName('e-float-text-content')[0].classList.remove('e-float-text-overflow');\n }\n if (elementWidth < container.getElementsByClassName('e-float-text-content')[0].clientWidth || elementWidth === container.getElementsByClassName('e-float-text-content')[0].clientWidth) {\n container.getElementsByClassName('e-float-text-content')[0].classList.add('e-float-text-overflow');\n }\n }\n }\n Input.calculateWidth = calculateWidth;\n /**\n * Set the width to the wrapper of input element.\n * ```\n * E.g : Input.setWidth('200px', container);\n * ```\n *\n * @param {number | string} width - Width value which is need to add.\n * @param {HTMLElement} container - The element on which the width is need to add.\n */\n function setWidth(width, container) {\n if (typeof width === 'number') {\n container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n calculateWidth(container.firstChild, container);\n }\n Input.setWidth = setWidth;\n /**\n * Set the placeholder attribute to the input element.\n * ```\n * E.g : Input.setPlaceholder('Search here', element);\n * ```\n *\n * @param {string} placeholder - Placeholder value which is need to add.\n * @param {HTMLInputElement | HTMLTextAreaElement} element - The element on which the placeholder is need to add.\n */\n function setPlaceholder(placeholder, element) {\n placeholder = encodePlaceHolder(placeholder);\n var parentElement = getParentNode(element);\n if (parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n parentElement.getElementsByClassName('e-float-text-content')[0] ? parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].children[0].textContent = placeholder : parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = placeholder;\n parentElement.classList.remove(CLASSNAMES.NOFLOATLABEL);\n element.removeAttribute('placeholder');\n }\n else {\n parentElement.classList.add(CLASSNAMES.NOFLOATLABEL);\n parentElement.getElementsByClassName('e-float-text-content')[0] ? parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].children[0].textContent = '' : parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n }\n else {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n attributes(element, { 'placeholder': placeholder });\n }\n else {\n element.removeAttribute('placeholder');\n }\n }\n }\n Input.setPlaceholder = setPlaceholder;\n /**\n * Set the read only attribute to the input element\n * ```\n * E.g : Input.setReadonly(true, element);\n * ```\n *\n * @param {boolean} isReadonly\n * - Boolean value to specify whether to set read only. Setting \"True\" value enables read only.\n * @param {HTMLInputElement | HTMLTextAreaElement} element\n * - The element which is need to enable read only.\n */\n function setReadonly(isReadonly, element, floatLabelType) {\n if (isReadonly) {\n attributes(element, { readonly: '' });\n }\n else {\n element.removeAttribute('readonly');\n }\n if (!isNullOrUndefined(floatLabelType)) {\n validateLabel(element, floatLabelType);\n }\n }\n Input.setReadonly = setReadonly;\n /**\n * Displays the element direction from right to left when its enabled.\n * ```\n * E.g : Input.setEnableRtl(true, [inputObj.container]);\n * ```\n *\n * @param {boolean} isRtl\n * - Boolean value to specify whether to set RTL. Setting \"True\" value enables the RTL mode.\n * @param {Element[] | NodeList} elements\n * - The elements that are needed to enable/disable RTL.\n */\n function setEnableRtl(isRtl, elements) {\n if (isRtl) {\n addClass(elements, CLASSNAMES.RTL);\n }\n else {\n removeClass(elements, CLASSNAMES.RTL);\n }\n }\n Input.setEnableRtl = setEnableRtl;\n /**\n * Enables or disables the given input element.\n * ```\n * E.g : Input.setEnabled(false, element);\n * ```\n *\n * @param {boolean} isEnable\n * - Boolean value to specify whether to enable or disable.\n * @param {HTMLInputElement | HTMLTextAreaElement} element\n * - Element to be enabled or disabled.\n */\n function setEnabled(isEnable, element, floatLabelType, inputContainer) {\n var disabledAttrs = { 'disabled': 'disabled', 'aria-disabled': 'true' };\n var considerWrapper = isNullOrUndefined(inputContainer) ? false : true;\n if (isEnable) {\n element.classList.remove(CLASSNAMES.DISABLE);\n removeAttributes(disabledAttrs, element);\n if (considerWrapper) {\n removeClass([inputContainer], CLASSNAMES.DISABLE);\n }\n }\n else {\n element.classList.add(CLASSNAMES.DISABLE);\n addAttributes(disabledAttrs, element);\n if (considerWrapper) {\n addClass([inputContainer], CLASSNAMES.DISABLE);\n }\n }\n if (!isNullOrUndefined(floatLabelType)) {\n validateLabel(element, floatLabelType);\n }\n }\n Input.setEnabled = setEnabled;\n function setClearButton(isClear, element, inputObject, initial, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (isClear) {\n inputObject.clearButton = createClearButton(element, inputObject, initial, makeElement);\n }\n else {\n remove(inputObject.clearButton);\n inputObject.clearButton = null;\n }\n }\n Input.setClearButton = setClearButton;\n /**\n * Removing the multiple attributes from the given element such as \"disabled\",\"id\" , etc.\n * ```\n * E.g : Input.removeAttributes({ 'disabled': 'disabled', 'aria-disabled': 'true' }, element);\n * ```\n *\n * @param {string} attrs\n * - Array of attributes which are need to removed from the element.\n * @param {HTMLInputElement | HTMLElement} element\n * - Element on which the attributes are needed to be removed.\n */\n function removeAttributes(attrs, element) {\n for (var _i = 0, _a = Object.keys(attrs); _i < _a.length; _i++) {\n var key = _a[_i];\n var parentElement = getParentNode(element);\n if (key === 'disabled') {\n element.classList.remove(CLASSNAMES.DISABLE);\n }\n if (key === 'disabled' && parentElement.classList.contains(CLASSNAMES.INPUTGROUP)) {\n parentElement.classList.remove(CLASSNAMES.DISABLE);\n }\n if (key === 'placeholder' && parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n else {\n element.removeAttribute(key);\n }\n }\n }\n Input.removeAttributes = removeAttributes;\n /**\n * Adding the multiple attributes to the given element such as \"disabled\",\"id\" , etc.\n * ```\n * E.g : Input.addAttributes({ 'id': 'inputpopup' }, element);\n * ```\n *\n * @param {string} attrs\n * - Array of attributes which is added to element.\n * @param {HTMLInputElement | HTMLElement} element\n * - Element on which the attributes are needed to be added.\n */\n function addAttributes(attrs, element) {\n for (var _i = 0, _a = Object.keys(attrs); _i < _a.length; _i++) {\n var key = _a[_i];\n var parentElement = getParentNode(element);\n if (key === 'disabled') {\n element.classList.add(CLASSNAMES.DISABLE);\n }\n if (key === 'disabled' && parentElement.classList.contains(CLASSNAMES.INPUTGROUP)) {\n parentElement.classList.add(CLASSNAMES.DISABLE);\n }\n if (key === 'placeholder' && parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = attrs[\"\" + key];\n }\n else {\n element.setAttribute(key, attrs[\"\" + key]);\n }\n }\n }\n Input.addAttributes = addAttributes;\n function removeFloating(input) {\n var container = input.container;\n if (!isNullOrUndefined(container) && container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n var inputEle = container.querySelector('textarea') ? container.querySelector('textarea') :\n container.querySelector('input');\n var placeholder = container.querySelector('.' + CLASSNAMES.FLOATTEXT).textContent;\n var clearButton = container.querySelector('.e-clear-icon') !== null;\n detach(container.querySelector('.' + CLASSNAMES.FLOATLINE));\n detach(container.querySelector('.' + CLASSNAMES.FLOATTEXT));\n classList(container, [CLASSNAMES.INPUTGROUP], [CLASSNAMES.FLOATINPUT]);\n unwireFloatingEvents(inputEle);\n attributes(inputEle, { 'placeholder': placeholder });\n inputEle.classList.add(CLASSNAMES.INPUT);\n if (!clearButton && inputEle.tagName === 'INPUT') {\n inputEle.removeAttribute('required');\n }\n }\n }\n Input.removeFloating = removeFloating;\n function addFloating(input, type, placeholder, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container = closest(input, '.' + CLASSNAMES.INPUTGROUP);\n floatType = type;\n if (type !== 'Never') {\n var customTag = container.tagName;\n customTag = customTag !== 'DIV' && customTag !== 'SPAN' ? customTag : null;\n var args = { element: input, floatLabelType: type,\n customTag: customTag, properties: { placeholder: placeholder } };\n var iconEle = container.querySelector('.e-clear-icon');\n var inputObj = { container: container };\n input.classList.remove(CLASSNAMES.INPUT);\n createFloatingInput(args, inputObj, makeElement);\n createSpanElement(inputObj.container, makeElement);\n calculateWidth(args.element, inputObj.container);\n var isPrependIcon = container.classList.contains('e-float-icon-left');\n if (isNullOrUndefined(iconEle)) {\n if (isPrependIcon) {\n var inputWrap = container.querySelector('.e-input-in-wrap');\n iconEle = inputWrap.querySelector('.e-input-group-icon');\n }\n else {\n iconEle = container.querySelector('.e-input-group-icon');\n }\n }\n if (isNullOrUndefined(iconEle)) {\n if (isPrependIcon) {\n iconEle = container.querySelector('.e-input-group-icon');\n }\n }\n else {\n var floatLine = container.querySelector('.' + CLASSNAMES.FLOATLINE);\n var floatText = container.querySelector('.' + CLASSNAMES.FLOATTEXT);\n var wrapper = isPrependIcon ? container.querySelector('.e-input-in-wrap') : container;\n wrapper.insertBefore(input, iconEle);\n wrapper.insertBefore(floatLine, iconEle);\n wrapper.insertBefore(floatText, iconEle);\n }\n }\n checkFloatLabelType(type, input.parentElement);\n }\n Input.addFloating = addFloating;\n /**\n * Create the span inside the label and add the label text into the span textcontent\n * ```\n * E.g : Input.createSpanElement(inputObject, makeElement);\n * ```\n *\n * @param {InputObject} inputObject\n * - Element which is need to get the label\n * @param {createElementParams} makeElement\n * - Element which is need to create the span\n */\n function createSpanElement(inputObject, makeElement) {\n if (inputObject.classList.contains('e-outline') && inputObject.getElementsByClassName('e-float-text')[0]) {\n var labelSpanElement = makeElement('span', { className: CLASSNAMES.FLOATTEXTCONTENT });\n labelSpanElement.innerHTML = inputObject.getElementsByClassName('e-float-text')[0].innerHTML;\n inputObject.getElementsByClassName('e-float-text')[0].innerHTML = '';\n inputObject.getElementsByClassName('e-float-text')[0].appendChild(labelSpanElement);\n }\n }\n Input.createSpanElement = createSpanElement;\n /**\n * Enable or Disable the ripple effect on the icons inside the Input. Ripple effect is only applicable for material theme.\n * ```\n * E.g : Input.setRipple(true, [inputObjects]);\n * ```\n *\n * @param {boolean} isRipple\n * - Boolean value to specify whether to enable the ripple effect.\n * @param {InputObject[]} inputObj\n * - Specify the collection of input objects.\n */\n function setRipple(isRipple, inputObj) {\n for (var i = 0; i < inputObj.length; i++) {\n _internalRipple(isRipple, inputObj[parseInt(i.toString())].container);\n }\n }\n Input.setRipple = setRipple;\n function _internalRipple(isRipple, container, button) {\n var argsButton = [];\n argsButton.push(button);\n var buttons = isNullOrUndefined(button) ?\n container.querySelectorAll('.e-input-group-icon') : argsButton;\n if (isRipple && buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[parseInt(index.toString())].addEventListener('mousedown', _onMouseDownRipple, false);\n buttons[parseInt(index.toString())].addEventListener('mouseup', _onMouseUpRipple, false);\n }\n }\n else if (buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[parseInt(index.toString())].removeEventListener('mousedown', _onMouseDownRipple, this);\n buttons[parseInt(index.toString())].removeEventListener('mouseup', _onMouseUpRipple, this);\n }\n }\n }\n function _onMouseRipple(container, button) {\n if (!container.classList.contains('e-disabled') && !container.querySelector('input').readOnly) {\n button.classList.add('e-input-btn-ripple');\n }\n }\n function _onMouseDownRipple() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var ele = this;\n var parentEle = this.parentElement;\n while (!parentEle.classList.contains('e-input-group')) {\n parentEle = parentEle.parentElement;\n }\n _onMouseRipple(parentEle, ele);\n }\n function _onMouseUpRipple() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var ele = this;\n setTimeout(function () {\n ele.classList.remove('e-input-btn-ripple');\n }, 500);\n }\n function createIconEle(iconClass, makeElement) {\n var button = makeElement('span', { className: iconClass });\n button.classList.add('e-input-group-icon');\n return button;\n }\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.addIcon('append', 'e-icon-spin', inputObj.container, inputElement);\n * ```\n *\n * @param {string} position - Specify the icon placement on the input.Possible values are append and prepend.\n * @param {string | string[]} icons - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n * @param {HTMLElement} input - The inputElement on which created span element is going to prepend.\n */\n /* eslint-disable @typescript-eslint/indent */\n function addIcon(position, icons, container, input, internalCreate) {\n /* eslint-enable @typescript-eslint/indent */\n var result = typeof (icons) === 'string' ? icons.split(',')\n : icons;\n if (position.toLowerCase() === 'append') {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var icon = result_1[_i];\n appendSpan(icon, container, internalCreate);\n }\n }\n else {\n for (var _a = 0, result_2 = result; _a < result_2.length; _a++) {\n var icon = result_2[_a];\n prependSpan(icon, container, input, internalCreate);\n }\n }\n if (container.getElementsByClassName('e-input-group-icon')[0] && container.getElementsByClassName('e-float-text-overflow')[0]) {\n container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n }\n Input.addIcon = addIcon;\n /**\n * Creates a new span element with the given icons added and prepend it in input element.\n * ```\n * E.g : Input.prependSpan('e-icon-spin', inputObj.container, inputElement);\n * ```\n *\n * @param {string} iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n * @param {HTMLElement} inputElement - The inputElement on which created span element is going to prepend.\n */\n /* eslint-disable @typescript-eslint/indent */\n function prependSpan(iconClass, container, inputElement, internalCreateElement) {\n /* eslint-enable @typescript-eslint/indent */\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = createIconEle(iconClass, makeElement);\n container.classList.add('e-float-icon-left');\n var innerWrapper = container.querySelector('.e-input-in-wrap');\n if (isNullOrUndefined(innerWrapper)) {\n innerWrapper = makeElement('span', { className: 'e-input-in-wrap' });\n inputElement.parentNode.insertBefore(innerWrapper, inputElement);\n var result = container.querySelectorAll(inputElement.tagName + ' ~ *');\n innerWrapper.appendChild(inputElement);\n for (var i = 0; i < result.length; i++) {\n var element = result[parseInt(i.toString())];\n var parentElement = innerWrapper.parentElement;\n if (!(element.classList.contains('e-float-line')) || (!(parentElement && parentElement.classList.contains('e-filled')) && parentElement)) {\n innerWrapper.appendChild(element);\n }\n }\n }\n innerWrapper.parentNode.insertBefore(button, innerWrapper);\n _internalRipple(true, container, button);\n return button;\n }\n Input.prependSpan = prependSpan;\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.appendSpan('e-icon-spin', inputObj.container);\n * ```\n *\n * @param {string} iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n */\n function appendSpan(iconClass, container, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = createIconEle(iconClass, makeElement);\n var wrap = (container.classList.contains('e-float-icon-left')) ? container.querySelector('.e-input-in-wrap') :\n container;\n wrap.appendChild(button);\n _internalRipple(true, container, button);\n return button;\n }\n Input.appendSpan = appendSpan;\n function validateInputType(containerElement, input) {\n if (input.type === 'hidden') {\n containerElement.classList.add('e-hidden');\n }\n else if (containerElement.classList.contains('e-hidden')) {\n containerElement.classList.remove('e-hidden');\n }\n }\n Input.validateInputType = validateInputType;\n})(Input || (Input = {}));\n/* eslint-enable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, Property, Event, Browser, L10n, getUniqueID } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, detach, closest } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getValue, formatUnit, setValue, merge } from '@syncfusion/ej2-base';\nimport { Internationalization, getNumericObject } from '@syncfusion/ej2-base';\nimport { Input } from '../input/input';\nvar ROOT = 'e-control-wrapper e-numeric';\nvar SPINICON = 'e-input-group-icon';\nvar SPINUP = 'e-spin-up';\nvar SPINDOWN = 'e-spin-down';\nvar ERROR = 'e-error';\nvar INCREMENT = 'increment';\nvar DECREMENT = 'decrement';\nvar INTREGEXP = new RegExp('^(-)?(\\\\d*)$');\nvar DECIMALSEPARATOR = '.';\nvar COMPONENT = 'e-numerictextbox';\nvar CONTROL = 'e-control';\nvar NUMERIC_FOCUS = 'e-input-focus';\nvar HIDDENELEMENT = 'e-numeric-hidden';\nvar wrapperAttributes = ['title', 'style', 'class'];\nvar selectionTimeOut = 0;\n/**\n * Represents the NumericTextBox component that allows the user to enter only numeric values.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar NumericTextBox = /** @class */ (function (_super) {\n __extends(NumericTextBox, _super);\n /**\n *\n * @param {NumericTextBoxModel} options - Specifies the NumericTextBox model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function NumericTextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isVue = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isDynamicChange = false;\n _this.numericOptions = options;\n return _this;\n }\n NumericTextBox.prototype.preRender = function () {\n this.isPrevFocused = false;\n this.decimalSeparator = '.';\n // eslint-disable-next-line no-useless-escape\n this.intRegExp = new RegExp('/^(-)?(\\d*)$/');\n this.isCalled = false;\n var ejInstance = getValue('ej2_instances', this.element);\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [CONTROL, COMPONENT, 'e-lib']);\n this.angularTagName = null;\n this.formEle = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.angularTagName = this.element.tagName;\n var input = this.createElement('input');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id' && attributeName !== 'class') {\n input.setAttribute(this.element.attributes[index].nodeName, this.element.attributes[index].nodeValue);\n input.innerHTML = this.element.innerHTML;\n }\n else if (attributeName === 'class') {\n input.setAttribute(attributeName, this.element.className.split(' ').filter(function (item) { return item.indexOf('ng-') !== 0; }).join(' '));\n }\n }\n if (this.element.hasAttribute('name')) {\n this.element.removeAttribute('name');\n }\n this.element.classList.remove('e-control', 'e-numerictextbox');\n this.element.appendChild(input);\n this.element = input;\n setValue('ej2_instances', ejInstance, this.element);\n }\n attributes(this.element, { 'role': 'spinbutton', 'tabindex': '0', 'autocomplete': 'off' });\n var localeText = {\n incrementTitle: 'Increment value', decrementTitle: 'Decrement value', placeholder: this.placeholder\n };\n this.l10n = new L10n('numerictextbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (!this.element.hasAttribute('id')) {\n this.element.setAttribute('id', getUniqueID('numerictextbox'));\n }\n this.isValidState = true;\n this.inputStyle = null;\n this.inputName = null;\n this.cultureInfo = {};\n this.initCultureInfo();\n this.initCultureFunc();\n this.prevValue = this.value;\n this.updateHTMLAttrToElement();\n this.checkAttributes(false);\n if (this.formEle) {\n this.inputEleValue = this.value;\n }\n this.validateMinMax();\n this.validateStep();\n if (this.placeholder === null) {\n this.updatePlaceholder();\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.render = function () {\n if (this.element.tagName.toLowerCase() === 'input') {\n this.createWrapper();\n if (this.showSpinButton) {\n this.spinBtnCreation();\n }\n this.setElementWidth(this.width);\n if (!this.container.classList.contains('e-input-group')) {\n this.container.classList.add('e-input-group');\n }\n this.changeValue(this.value === null || isNaN(this.value) ?\n null : this.strictMode ? this.trimValue(this.value) : this.value);\n this.wireEvents();\n if (this.value !== null && !isNaN(this.value)) {\n if (this.decimals) {\n this.setProperties({ value: this.roundNumber(this.value, this.decimals) }, true);\n }\n }\n if (this.element.getAttribute('value') || this.value) {\n this.element.setAttribute('value', this.element.value);\n this.hiddenInput.setAttribute('value', this.hiddenInput.value);\n }\n this.elementPrevValue = this.element.value;\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n }\n };\n NumericTextBox.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'step', 'disabled', 'readonly', 'style', 'name', 'placeholder'];\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.element.getAttribute(prop) === 'disabled' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.element.getAttribute(prop) === 'readonly' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['value'] === undefined)) || isDynamic) {\n var setNumber = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n this.setProperties(setValue(prop, setNumber, {}), !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['min'] === undefined)) || isDynamic) {\n var minValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (minValue !== null && !isNaN(minValue)) {\n this.setProperties(setValue(prop, minValue, {}), !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['max'] === undefined)) || isDynamic) {\n var maxValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (maxValue !== null && !isNaN(maxValue)) {\n this.setProperties(setValue(prop, maxValue, {}), !isDynamic);\n }\n }\n break;\n case 'step':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['step'] === undefined)) || isDynamic) {\n var stepValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (stepValue !== null && !isNaN(stepValue)) {\n this.setProperties(setValue(prop, stepValue, {}), !isDynamic);\n }\n }\n break;\n case 'style':\n this.inputStyle = this.element.getAttribute(prop);\n break;\n case 'name':\n this.inputName = this.element.getAttribute(prop);\n break;\n default:\n {\n var value = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if ((value !== null && !isNaN(value)) || (prop === 'value')) {\n this.setProperties(setValue(prop, value, {}), true);\n }\n }\n break;\n }\n }\n }\n };\n NumericTextBox.prototype.updatePlaceholder = function () {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n };\n NumericTextBox.prototype.initCultureFunc = function () {\n this.instance = new Internationalization(this.locale);\n };\n NumericTextBox.prototype.initCultureInfo = function () {\n this.cultureInfo.format = this.format;\n if (getValue('currency', this) !== null) {\n setValue('currency', this.currency, this.cultureInfo);\n this.setProperties({ currencyCode: this.currency }, true);\n }\n };\n /* Wrapper creation */\n NumericTextBox.prototype.createWrapper = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = this.getNumericValidClassList(this.cssClass);\n }\n var inputObj = Input.createInput({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValue,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton,\n enabled: this.enabled\n }\n }, this.createElement);\n this.inputWrapper = inputObj;\n this.container = inputObj.container;\n this.container.setAttribute('class', ROOT + ' ' + this.container.getAttribute('class'));\n this.updateHTMLAttrToWrapper();\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n this.hiddenInput = (this.createElement('input', { attrs: { type: 'text',\n 'validateHidden': 'true', 'class': HIDDENELEMENT } }));\n this.inputName = this.inputName !== null ? this.inputName : this.element.id;\n this.element.removeAttribute('name');\n if (this.isAngular && this.angularTagName === 'EJS-NUMERICTEXTBOX' && this.cloneElement.id.length > 0) {\n attributes(this.hiddenInput, { 'name': this.cloneElement.id });\n }\n else {\n attributes(this.hiddenInput, { 'name': this.inputName });\n }\n this.container.insertBefore(this.hiddenInput, this.container.childNodes[1]);\n this.updateDataAttribute(false);\n if (this.inputStyle !== null) {\n attributes(this.container, { 'style': this.inputStyle });\n }\n };\n NumericTextBox.prototype.updateDataAttribute = function (isDynamic) {\n var attr = {};\n if (!isDynamic) {\n for (var a = 0; a < this.element.attributes.length; a++) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n else {\n attr = this.htmlAttributes;\n }\n for (var _i = 0, _a = Object.keys(attr); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key.indexOf('data') === 0) {\n this.hiddenInput.setAttribute(key, attr[\"\" + key]);\n }\n }\n };\n NumericTextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) < 0) {\n this.element.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n };\n NumericTextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getNumericValidClassList(newClass), [this.container], this.getNumericValidClassList(oldClass));\n };\n NumericTextBox.prototype.getNumericValidClassList = function (numericClassName) {\n var result = numericClassName;\n if (!isNullOrUndefined(numericClassName) && numericClassName !== '') {\n result = (numericClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n NumericTextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) > -1) {\n if (pro === 'class') {\n var updatedClassValue = this.getNumericValidClassList(this.htmlAttributes[\"\" + pro]);\n if (updatedClassValue !== '') {\n addClass([this.container], updatedClassValue.split(' '));\n }\n }\n else if (pro === 'style') {\n var numericStyle = this.container.getAttribute(pro);\n numericStyle = !isNullOrUndefined(numericStyle) ? (numericStyle + this.htmlAttributes[\"\" + pro]) :\n this.htmlAttributes[\"\" + pro];\n this.container.setAttribute(pro, numericStyle);\n }\n else {\n this.container.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n }\n };\n NumericTextBox.prototype.setElementWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n /* Spinner creation */\n NumericTextBox.prototype.spinBtnCreation = function () {\n this.spinDown = Input.appendSpan(SPINICON + ' ' + SPINDOWN, this.container, this.createElement);\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle')\n });\n this.spinUp = Input.appendSpan(SPINICON + ' ' + SPINUP, this.container, this.createElement);\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle')\n });\n this.wireSpinBtnEvents();\n };\n NumericTextBox.prototype.validateMinMax = function () {\n if (!(typeof (this.min) === 'number' && !isNaN(this.min))) {\n this.setProperties({ min: -(Number.MAX_VALUE) }, true);\n }\n if (!(typeof (this.max) === 'number' && !isNaN(this.max))) {\n this.setProperties({ max: Number.MAX_VALUE }, true);\n }\n if (this.decimals !== null) {\n if (this.min !== -(Number.MAX_VALUE)) {\n this.setProperties({ min: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.min)) }, true);\n }\n if (this.max !== (Number.MAX_VALUE)) {\n this.setProperties({ max: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.max)) }, true);\n }\n }\n this.setProperties({ min: this.min > this.max ? this.max : this.min }, true);\n if (this.min !== -(Number.MAX_VALUE)) {\n attributes(this.element, { 'aria-valuemin': this.min.toString() });\n }\n if (this.max !== (Number.MAX_VALUE)) {\n attributes(this.element, { 'aria-valuemax': this.max.toString() });\n }\n };\n NumericTextBox.prototype.formattedValue = function (decimals, value) {\n return this.instance.getNumberFormat({\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals, useGrouping: false\n })(value);\n };\n NumericTextBox.prototype.validateStep = function () {\n if (this.decimals !== null) {\n this.setProperties({ step: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.step)) }, true);\n }\n };\n NumericTextBox.prototype.action = function (operation, event) {\n this.isInteract = true;\n var value = this.isFocused ? this.instance.getNumberParser({ format: 'n' })(this.element.value) : this.value;\n this.changeValue(this.performAction(value, this.step, operation));\n this.raiseChangeEvent(event);\n };\n NumericTextBox.prototype.checkErrorClass = function () {\n if (this.isValidState) {\n removeClass([this.container], ERROR);\n }\n else {\n addClass([this.container], ERROR);\n }\n attributes(this.element, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n NumericTextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n NumericTextBox.prototype.resetHandler = function (e) {\n e.preventDefault();\n if (!(this.inputWrapper.clearButton.classList.contains('e-clear-icon-hide')) || this.inputWrapper.container.classList.contains('e-static-clear')) {\n this.clear(e);\n }\n this.isInteract = true;\n this.raiseChangeEvent(e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n NumericTextBox.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n this.setElementValue('');\n this.hiddenInput.value = '';\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.resetFormHandler = function () {\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.updateValue(null);\n }\n else {\n this.updateValue(this.inputEleValue);\n }\n };\n NumericTextBox.prototype.setSpinButton = function () {\n if (!isNullOrUndefined(this.spinDown)) {\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle'),\n 'aria-label': this.l10n.getConstant('decrementTitle')\n });\n }\n if (!isNullOrUndefined(this.spinUp)) {\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle'),\n 'aria-label': this.l10n.getConstant('incrementTitle')\n });\n }\n };\n NumericTextBox.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'input', this.inputHandler, this);\n EventHandler.add(this.element, 'keypress', this.keyPressHandler, this);\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'paste', this.pasteHandler, this);\n if (this.enabled) {\n this.bindClearEvent();\n if (this.formEle) {\n EventHandler.add(this.formEle, 'reset', this.resetFormHandler, this);\n }\n }\n };\n NumericTextBox.prototype.wireSpinBtnEvents = function () {\n /* bind spin button events */\n EventHandler.add(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n };\n NumericTextBox.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'blur', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'input', this.inputHandler);\n EventHandler.remove(this.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.element, 'keypress', this.keyPressHandler);\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'paste', this.pasteHandler);\n if (this.formEle) {\n EventHandler.remove(this.formEle, 'reset', this.resetFormHandler);\n }\n };\n NumericTextBox.prototype.unwireSpinBtnEvents = function () {\n /* unbind spin button events */\n EventHandler.remove(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n };\n NumericTextBox.prototype.changeHandler = function (event) {\n event.stopPropagation();\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n };\n NumericTextBox.prototype.raiseChangeEvent = function (event) {\n if (this.prevValue !== this.value || this.prevValue !== this.inputValue) {\n var eventArgs = {};\n this.changeEventArgs = { value: this.value, previousValue: this.prevValue, isInteracted: this.isInteract,\n isInteraction: this.isInteract, event: event };\n if (event) {\n this.changeEventArgs.event = event;\n }\n if (this.changeEventArgs.event === undefined) {\n this.changeEventArgs.isInteracted = false;\n this.changeEventArgs.isInteraction = false;\n }\n merge(eventArgs, this.changeEventArgs);\n this.prevValue = this.value;\n this.isInteract = false;\n this.elementPrevValue = this.element.value;\n this.preventChange = false;\n this.trigger('change', eventArgs);\n }\n };\n NumericTextBox.prototype.pasteHandler = function () {\n var _this = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var beforeUpdate = this.element.value;\n setTimeout(function () {\n if (!_this.numericRegex().test(_this.element.value)) {\n _this.setElementValue(beforeUpdate);\n }\n });\n };\n NumericTextBox.prototype.preventHandler = function () {\n var _this = this;\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n setTimeout(function () {\n if (_this.element.selectionStart > 0) {\n var currentPos = _this.element.selectionStart;\n var prevPos = _this.element.selectionStart - 1;\n var start = 0;\n var valArray = _this.element.value.split('');\n var numericObject = getNumericObject(_this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var ignoreKeyCode = decimalSeparator.charCodeAt(0);\n if (_this.element.value[prevPos] === ' ' && _this.element.selectionStart > 0 && !iOS) {\n if (isNullOrUndefined(_this.prevVal)) {\n _this.element.value = _this.element.value.trim();\n }\n else if (prevPos !== 0) {\n _this.element.value = _this.prevVal;\n }\n else if (prevPos === 0) {\n _this.element.value = _this.element.value.trim();\n }\n _this.element.setSelectionRange(prevPos, prevPos);\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 1]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 1]) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.value = _this.element.value.substring(0, prevPos) +\n _this.element.value.substring(currentPos, _this.element.value.length);\n _this.element.setSelectionRange(prevPos, prevPos);\n if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) && _this.element.selectionStart > 0\n && _this.element.value.length) {\n _this.preventHandler();\n }\n }\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 2])) && _this.element.selectionStart > 1 &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 2]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 2]) &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.setSelectionRange(prevPos, prevPos);\n _this.nextEle = _this.element.value[_this.element.selectionStart];\n _this.cursorPosChanged = true;\n _this.preventHandler();\n }\n }\n if (_this.cursorPosChanged === true && _this.element.value[_this.element.selectionStart] === _this.nextEle &&\n isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1]))) {\n _this.element.setSelectionRange(_this.element.selectionStart + 1, _this.element.selectionStart + 1);\n _this.cursorPosChanged = false;\n _this.nextEle = null;\n }\n if (_this.element.value.trim() === '') {\n _this.element.setSelectionRange(start, start);\n }\n if (_this.element.selectionStart > 0) {\n if ((_this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === 45) && _this.element.selectionStart > 1) {\n if (isNullOrUndefined(_this.prevVal)) {\n // eslint-disable-next-line no-self-assign\n _this.element.value = _this.element.value;\n }\n else {\n _this.element.value = _this.prevVal;\n }\n _this.element.setSelectionRange(_this.element.selectionStart, _this.element.selectionStart);\n }\n if (_this.element.value[_this.element.selectionStart - 1] === decimalSeparator && _this.decimals === 0 && _this.validateDecimalOnType) {\n _this.element.value = _this.element.value.substring(0, prevPos) +\n _this.element.value.substring(currentPos, _this.element.value.length);\n }\n }\n _this.prevVal = _this.element.value;\n }\n });\n };\n NumericTextBox.prototype.keyUpHandler = function () {\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n if (!iOS && Browser.isDevice) {\n this.preventHandler();\n }\n var parseValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parseValue = parseValue === null || isNaN(parseValue) ? null : parseValue;\n this.hiddenInput.value = parseValue || parseValue === 0 ? parseValue.toString() : null;\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.inputHandler = function (event) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-this-alias\n var numerictextboxObj = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n var fireFox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n if ((fireFox || iOS) && Browser.isDevice) {\n this.preventHandler();\n }\n /* istanbul ignore next */\n if (this.isAngular\n && this.element.value !== getValue('decimal', getNumericObject(this.locale))\n && this.element.value !== getValue('minusSign', getNumericObject(this.locale))) {\n var parsedValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parsedValue = isNaN(parsedValue) ? null : parsedValue;\n numerictextboxObj.localChange({ value: parsedValue });\n this.preventChange = true;\n }\n if (this.isVue) {\n var current = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n var previous = this.instance.getNumberParser({ format: 'n' })(this.elementPrevValue);\n //EJ2-54963-if type \".\" or \".0\" or \"-.0\" it converts to \"0\" automatically when binding v-model\n var nonZeroRegex = new RegExp('[^0-9]+$');\n if (nonZeroRegex.test(this.element.value) || ((this.elementPrevValue.indexOf('.') !== -1 || this.elementPrevValue.indexOf('-') !== -1) && this.element.value[this.element.value.length - 1] === '0')) {\n current = this.value;\n }\n var eventArgs = {\n event: event,\n value: (current === null || isNaN(current) ? null : current),\n previousValue: (previous === null || isNaN(previous) ? null : previous)\n };\n this.preventChange = true;\n this.elementPrevValue = this.element.value;\n this.trigger('input', eventArgs);\n }\n };\n NumericTextBox.prototype.keyDownHandler = function (event) {\n if (!this.readonly) {\n switch (event.keyCode) {\n case 38:\n event.preventDefault();\n this.action(INCREMENT, event);\n break;\n case 40:\n event.preventDefault();\n this.action(DECREMENT, event);\n break;\n default: break;\n }\n }\n };\n NumericTextBox.prototype.performAction = function (value, step, operation) {\n if (value === null || isNaN(value)) {\n value = 0;\n }\n var updatedValue = operation === INCREMENT ? value + step : value - step;\n updatedValue = this.correctRounding(value, step, updatedValue);\n return this.strictMode ? this.trimValue(updatedValue) : updatedValue;\n };\n NumericTextBox.prototype.correctRounding = function (value, step, result) {\n var floatExp = new RegExp('[,.](.*)');\n var floatValue = floatExp.test(value.toString());\n var floatStep = floatExp.test(step.toString());\n if (floatValue || floatStep) {\n var valueCount = floatValue ? floatExp.exec(value.toString())[0].length : 0;\n var stepCount = floatStep ? floatExp.exec(step.toString())[0].length : 0;\n var max = Math.max(valueCount, stepCount);\n return value = this.roundValue(result, max);\n }\n return result;\n };\n NumericTextBox.prototype.roundValue = function (result, precision) {\n precision = precision || 0;\n var divide = Math.pow(10, precision);\n return result *= divide, result = Math.round(result) / divide;\n };\n NumericTextBox.prototype.updateValue = function (value, event) {\n if (event) {\n this.isInteract = true;\n }\n if (value !== null && !isNaN(value)) {\n if (this.decimals) {\n value = this.roundNumber(value, this.decimals);\n }\n }\n this.inputValue = value;\n this.changeValue(value === null || isNaN(value) ? null : this.strictMode ? this.trimValue(value) : value);\n /* istanbul ignore next */\n if (!this.isDynamicChange) {\n this.raiseChangeEvent(event);\n }\n };\n NumericTextBox.prototype.updateCurrency = function (prop, propVal) {\n setValue(prop, propVal, this.cultureInfo);\n this.updateValue(this.value);\n };\n NumericTextBox.prototype.changeValue = function (value) {\n if (!(value || value === 0)) {\n value = null;\n this.setProperties({ value: value }, true);\n }\n else {\n var numberOfDecimals = this.getNumberOfDecimals(value);\n this.setProperties({ value: this.roundNumber(value, numberOfDecimals) }, true);\n }\n this.modifyText();\n if (!this.strictMode) {\n this.validateState();\n }\n };\n NumericTextBox.prototype.modifyText = function () {\n if (this.value || this.value === 0) {\n var value = this.formatNumber();\n var elementValue = this.isFocused ? value : this.instance.getNumberFormat(this.cultureInfo)(this.value);\n this.setElementValue(elementValue);\n attributes(this.element, { 'aria-valuenow': value });\n this.hiddenInput.value = this.value.toString();\n if (this.value !== null && this.serverDecimalSeparator) {\n this.hiddenInput.value = this.hiddenInput.value.replace('.', this.serverDecimalSeparator);\n }\n }\n else {\n this.setElementValue('');\n this.element.removeAttribute('aria-valuenow');\n this.hiddenInput.value = null;\n }\n };\n NumericTextBox.prototype.setElementValue = function (val, element) {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, this.showClearButton);\n };\n NumericTextBox.prototype.validateState = function () {\n this.isValidState = true;\n if (this.value || this.value === 0) {\n this.isValidState = !(this.value > this.max || this.value < this.min);\n }\n this.checkErrorClass();\n };\n NumericTextBox.prototype.getNumberOfDecimals = function (value) {\n var numberOfDecimals;\n // eslint-disable-next-line no-useless-escape\n var EXPREGEXP = new RegExp('[eE][\\-+]?([0-9]+)');\n var valueString = value.toString();\n if (EXPREGEXP.test(valueString)) {\n var result = EXPREGEXP.exec(valueString);\n if (!isNullOrUndefined(result)) {\n valueString = value.toFixed(Math.min(parseInt(result[1], 10), 20));\n }\n }\n var decimalPart = valueString.split('.')[1];\n numberOfDecimals = !decimalPart || !decimalPart.length ? 0 : decimalPart.length;\n if (this.decimals !== null) {\n numberOfDecimals = numberOfDecimals < this.decimals ? numberOfDecimals : this.decimals;\n }\n return numberOfDecimals;\n };\n NumericTextBox.prototype.formatNumber = function () {\n var numberOfDecimals = this.getNumberOfDecimals(this.value);\n return this.instance.getNumberFormat({\n maximumFractionDigits: numberOfDecimals,\n minimumFractionDigits: numberOfDecimals, useGrouping: false\n })(this.value);\n };\n NumericTextBox.prototype.trimValue = function (value) {\n if (value > this.max) {\n return this.max;\n }\n if (value < this.min) {\n return this.min;\n }\n return value;\n };\n NumericTextBox.prototype.roundNumber = function (value, precision) {\n var result = value;\n var decimals = precision || 0;\n var result1 = result.toString().split('e');\n result = Math.round(Number(result1[0] + 'e' + (result1[1] ? (Number(result1[1]) + decimals) : decimals)));\n var result2 = result.toString().split('e');\n result = Number(result2[0] + 'e' + (result2[1] ? (Number(result2[1]) - decimals) : -decimals));\n return Number(result.toFixed(decimals));\n };\n NumericTextBox.prototype.cancelEvent = function (event) {\n event.preventDefault();\n return false;\n };\n NumericTextBox.prototype.keyPressHandler = function (event) {\n if (!this.enabled || this.readonly) {\n return true;\n }\n if (!Browser.isDevice && Browser.info.version === '11.0' && event.keyCode === 13) {\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n return true;\n }\n if (event.which === 0 || event.metaKey || event.ctrlKey || event.keyCode === 8 || event.keyCode === 13) {\n return true;\n }\n var currentChar = String.fromCharCode(event.which);\n var decimalSeparator = getValue('decimal', getNumericObject(this.locale));\n var isAlterNumPadDecimalChar = event.code === 'NumpadDecimal' && currentChar !== decimalSeparator;\n //EJ2-59813-replace the culture decimal separator value with numberpad decimal separator value when culture decimal separator and numberpad decimal separator are different\n if (isAlterNumPadDecimalChar) {\n currentChar = decimalSeparator;\n }\n var text = this.element.value;\n text = text.substring(0, this.element.selectionStart) + currentChar + text.substring(this.element.selectionEnd);\n if (!this.numericRegex().test(text)) {\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n else {\n //EJ2-59813-update the numberpad decimal separator and update the cursor position\n if (isAlterNumPadDecimalChar) {\n var start = this.element.selectionStart + 1;\n this.element.value = text;\n this.element.setSelectionRange(start, start);\n event.preventDefault();\n event.stopPropagation();\n }\n return true;\n }\n };\n NumericTextBox.prototype.numericRegex = function () {\n var numericObject = getNumericObject(this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var fractionRule = '*';\n if (decimalSeparator === DECIMALSEPARATOR) {\n decimalSeparator = '\\\\' + decimalSeparator;\n }\n if (this.decimals === 0 && this.validateDecimalOnType) {\n return INTREGEXP;\n }\n if (this.decimals && this.validateDecimalOnType) {\n fractionRule = '{0,' + this.decimals + '}';\n }\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n return new RegExp('^(-)?(((\\\\d+(' + decimalSeparator + '\\\\d' + fractionRule +\n ')?)|(' + decimalSeparator + '\\\\d' + fractionRule + ')))?$');\n };\n NumericTextBox.prototype.mouseWheel = function (event) {\n event.preventDefault();\n var delta;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var rawEvent = event;\n if (rawEvent.wheelDelta) {\n delta = rawEvent.wheelDelta / 120;\n }\n else if (rawEvent.detail) {\n delta = -rawEvent.detail / 3;\n }\n if (delta > 0) {\n this.action(INCREMENT, event);\n }\n else if (delta < 0) {\n this.action(DECREMENT, event);\n }\n this.cancelEvent(event);\n };\n NumericTextBox.prototype.focusHandler = function (event) {\n var _this = this;\n clearTimeout(selectionTimeOut);\n this.focusEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('focus', this.focusEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n this.isFocused = true;\n removeClass([this.container], ERROR);\n this.prevValue = this.value;\n if ((this.value || this.value === 0)) {\n var formatValue_1 = this.formatNumber();\n this.setElementValue(formatValue_1);\n if (!this.isPrevFocused) {\n if (!Browser.isDevice && Browser.info.version === '11.0') {\n this.element.setSelectionRange(0, formatValue_1.length);\n }\n else {\n var delay = (Browser.isDevice && Browser.isIos) ? 600 : 0;\n selectionTimeOut = setTimeout(function () {\n _this.element.setSelectionRange(0, formatValue_1.length);\n }, delay);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.add(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel, this);\n }\n };\n NumericTextBox.prototype.focusOutHandler = function (event) {\n var _this = this;\n this.blurEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('blur', this.blurEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.isPrevFocused) {\n event.preventDefault();\n if (Browser.isDevice) {\n var value_1 = this.element.value;\n this.element.focus();\n this.isPrevFocused = false;\n var ele_1 = this.element;\n setTimeout(function () {\n _this.setElementValue(value_1, ele_1);\n }, 200);\n }\n }\n else {\n this.isFocused = false;\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput);\n if (!Browser.isDevice) {\n EventHandler.remove(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel);\n }\n }\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var focusEvent = document.createEvent('FocusEvent');\n focusEvent.initEvent('focusout', false, true);\n element.dispatchEvent(focusEvent);\n }\n };\n NumericTextBox.prototype.mouseDownOnSpinner = function (event) {\n var _this = this;\n if (this.isFocused) {\n this.isPrevFocused = true;\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var result = this.getElementData(event);\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.add(target, 'mouseleave', this.mouseUpClick, this);\n this.timeOut = setInterval(function () {\n _this.isCalled = true;\n _this.action(action, event);\n }, 150);\n EventHandler.add(document, 'mouseup', this.mouseUpClick, this);\n };\n NumericTextBox.prototype.touchMoveOnSpinner = function (event) {\n var target;\n if (event.type === 'touchmove') {\n var touchEvent = event.touches;\n target = touchEvent.length && document.elementFromPoint(touchEvent[0].pageX, touchEvent[0].pageY);\n }\n else {\n target = document.elementFromPoint(event.clientX, event.clientY);\n }\n if (!(target.classList.contains(SPINICON))) {\n clearInterval(this.timeOut);\n }\n };\n NumericTextBox.prototype.mouseUpOnSpinner = function (event) {\n this.prevValue = this.value;\n if (this.isPrevFocused) {\n this.element.focus();\n if (!Browser.isDevice) {\n this.isPrevFocused = false;\n }\n }\n if (!Browser.isDevice) {\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.remove(target, 'mouseleave', this.mouseUpClick);\n if (!this.isCalled) {\n this.action(action, event);\n }\n this.isCalled = false;\n EventHandler.remove(document, 'mouseup', this.mouseUpClick);\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.getElementData = function (event) {\n if ((event.which && event.which === 3) || (event.button && event.button === 2)\n || !this.enabled || this.readonly) {\n return false;\n }\n clearInterval(this.timeOut);\n return true;\n };\n NumericTextBox.prototype.floatLabelTypeUpdate = function () {\n Input.removeFloating(this.inputWrapper);\n var hiddenInput = this.hiddenInput;\n this.hiddenInput.remove();\n Input.addFloating(this.element, this.floatLabelType, this.placeholder, this.createElement);\n this.container.insertBefore(hiddenInput, this.container.childNodes[1]);\n };\n NumericTextBox.prototype.mouseUpClick = function (event) {\n event.stopPropagation();\n clearInterval(this.timeOut);\n this.isCalled = false;\n if (this.spinUp) {\n EventHandler.remove(this.spinUp, 'mouseleave', this.mouseUpClick);\n }\n if (this.spinDown) {\n EventHandler.remove(this.spinDown, 'mouseleave', this.mouseUpClick);\n }\n };\n /**\n * Increments the NumericTextBox value with the specified step value.\n *\n * @param {number} step - Specifies the value used to increment the NumericTextBox value.\n * if its not given then numeric value will be incremented based on the step property value.\n * @returns {void}\n */\n NumericTextBox.prototype.increment = function (step) {\n if (step === void 0) { step = this.step; }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, INCREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Decrements the NumericTextBox value with specified step value.\n *\n * @param {number} step - Specifies the value used to decrement the NumericTextBox value.\n * if its not given then numeric value will be decremented based on the step property value.\n * @returns {void}\n */\n NumericTextBox.prototype.decrement = function (step) {\n if (step === void 0) { step = this.step; }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, DECREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n NumericTextBox.prototype.destroy = function () {\n this.unwireEvents();\n detach(this.hiddenInput);\n if (this.showSpinButton) {\n this.unwireSpinBtnEvents();\n detach(this.spinUp);\n detach(this.spinDown);\n }\n var attrArray = ['aria-labelledby', 'role', 'autocomplete', 'aria-readonly',\n 'aria-disabled', 'autocapitalize', 'spellcheck', 'aria-autocomplete', 'tabindex',\n 'aria-valuemin', 'aria-valuemax', 'aria-valuenow', 'aria-invalid'];\n for (var i = 0; i < attrArray.length; i++) {\n this.element.removeAttribute(attrArray[i]);\n }\n this.element.classList.remove('e-input');\n this.container.insertAdjacentElement('afterend', this.element);\n detach(this.container);\n this.spinUp = null;\n this.spinDown = null;\n this.container = null;\n this.hiddenInput = null;\n this.changeEventArgs = null;\n this.blurEventArgs = null;\n this.focusEventArgs = null;\n this.inputWrapper = null;\n Input.destroy();\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns */\n /**\n * Returns the value of NumericTextBox with the format applied to the NumericTextBox.\n *\n */\n NumericTextBox.prototype.getText = function () {\n return this.element.value;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.element && this.enabled) {\n this.element.focus();\n addClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusOut = function () {\n if (document.activeElement === this.element && this.enabled) {\n this.element.blur();\n removeClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string}\n */\n NumericTextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {NumericTextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {NumericTextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n this.setElementWidth(newProp.width);\n Input.calculateWidth(this.element, this.container);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n Input.setEnabled(newProp.enabled, this.element);\n this.bindClearEvent();\n break;\n case 'enableRtl':\n Input.setEnableRtl(newProp.enableRtl, [this.container]);\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.element);\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n else {\n this.element.removeAttribute('aria-readonly');\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.updateDataAttribute(true);\n this.checkAttributes(true);\n Input.validateInputType(this.container, this.element);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.element);\n Input.calculateWidth(this.element, this.container);\n break;\n case 'step':\n this.step = newProp.step;\n this.validateStep();\n break;\n case 'showSpinButton':\n this.updateSpinButton(newProp);\n break;\n case 'showClearButton':\n this.updateClearButton(newProp);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n this.floatLabelTypeUpdate();\n break;\n case 'value':\n this.isDynamicChange = (this.isAngular || this.isVue) && this.preventChange;\n this.updateValue(newProp.value);\n if (this.isDynamicChange) {\n this.preventChange = false;\n this.isDynamicChange = false;\n }\n break;\n case 'min':\n case 'max':\n setValue(prop, getValue(prop, newProp), this);\n this.validateMinMax();\n this.updateValue(this.value);\n break;\n case 'strictMode':\n this.strictMode = newProp.strictMode;\n this.updateValue(this.value);\n this.validateState();\n break;\n case 'locale':\n this.initCultureFunc();\n this.l10n.setLocale(this.locale);\n this.setSpinButton();\n this.updatePlaceholder();\n Input.setPlaceholder(this.placeholder, this.element);\n this.updateValue(this.value);\n break;\n case 'currency':\n {\n var propVal = getValue(prop, newProp);\n this.setProperties({ currencyCode: propVal }, true);\n this.updateCurrency(prop, propVal);\n }\n break;\n case 'currencyCode':\n {\n var propValue = getValue(prop, newProp);\n this.setProperties({ currency: propValue }, true);\n this.updateCurrency('currency', propValue);\n }\n break;\n case 'format':\n setValue(prop, getValue(prop, newProp), this);\n this.initCultureInfo();\n this.updateValue(this.value);\n break;\n case 'decimals':\n this.decimals = newProp.decimals;\n this.updateValue(this.value);\n }\n }\n };\n NumericTextBox.prototype.updateClearButton = function (newProp) {\n Input.setClearButton(newProp.showClearButton, this.element, this.inputWrapper, undefined, this.createElement);\n this.bindClearEvent();\n };\n NumericTextBox.prototype.updateSpinButton = function (newProp) {\n if (newProp.showSpinButton) {\n this.spinBtnCreation();\n }\n else {\n detach(this.spinUp);\n detach(this.spinDown);\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n NumericTextBox.prototype.getModuleName = function () {\n return 'numerictextbox';\n };\n __decorate([\n Property('')\n ], NumericTextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"value\", void 0);\n __decorate([\n Property(-(Number.MAX_VALUE))\n ], NumericTextBox.prototype, \"min\", void 0);\n __decorate([\n Property(Number.MAX_VALUE)\n ], NumericTextBox.prototype, \"max\", void 0);\n __decorate([\n Property(1)\n ], NumericTextBox.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property({})\n ], NumericTextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"showSpinButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('n2')\n ], NumericTextBox.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"decimals\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currency\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currencyCode\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"strictMode\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"validateDecimalOnType\", void 0);\n __decorate([\n Property('Never')\n ], NumericTextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"blur\", void 0);\n NumericTextBox = __decorate([\n NotifyPropertyChanges\n ], NumericTextBox);\n return NumericTextBox;\n}(Component));\nexport { NumericTextBox };\n","/* eslint-disable no-inner-declarations */\nimport { extend, merge, isNullOrUndefined, getValue, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { attributes, prepend, isVisible, append, addClass } from '@syncfusion/ej2-base';\nimport { compile } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nexport var cssClass = {\n li: 'e-list-item',\n ul: 'e-list-parent e-ul',\n group: 'e-list-group-item',\n icon: 'e-list-icon',\n text: 'e-list-text',\n check: 'e-list-check',\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: 'e-list-url',\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: 'e-list-img',\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n};\n/**\n * Base List Generator\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var ListBase;\n(function (ListBase) {\n /**\n *\n * Default mapped fields.\n */\n ListBase.defaultMappedFields = {\n id: 'id',\n text: 'text',\n url: 'url',\n value: 'value',\n isChecked: 'isChecked',\n enabled: 'enabled',\n expanded: 'expanded',\n selected: 'selected',\n iconCss: 'iconCss',\n child: 'child',\n isVisible: 'isVisible',\n hasChildren: 'hasChildren',\n tooltip: 'tooltip',\n htmlAttributes: 'htmlAttributes',\n urlAttributes: 'urlAttributes',\n imageAttributes: 'imageAttributes',\n imageUrl: 'imageUrl',\n groupBy: null,\n sortBy: null\n };\n var defaultAriaAttributes = {\n level: 1,\n listRole: 'presentation',\n itemRole: 'presentation',\n groupItemRole: 'group',\n itemText: 'list-item',\n wrapperRole: 'presentation'\n };\n var defaultListBaseOptions = {\n showCheckBox: false,\n showIcon: false,\n enableHtmlSanitizer: false,\n expandCollapse: false,\n fields: ListBase.defaultMappedFields,\n ariaAttributes: defaultAriaAttributes,\n listClass: '',\n itemClass: '',\n processSubChild: false,\n sortOrder: 'None',\n template: null,\n groupTemplate: null,\n headerTemplate: null,\n expandIconClass: 'e-icon-collapsible',\n moduleName: 'list',\n expandIconPosition: 'Right',\n itemNavigable: false\n };\n /**\n * Function helps to created and return the UL Li element based on your data.\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} createListFromJson - Specifies the list options that need to provide.\n */\n function createList(createElement, dataSource, \n // eslint-disable-next-line\n options, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var type = typeofData(dataSource).typeof;\n if (type === 'string' || type === 'number') {\n return createListFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n }\n else {\n return createListFromJson(createElement, dataSource, options, ariaAttributes.level, isSingleLevel, componentInstance);\n }\n }\n ListBase.createList = createList;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - returns the list options that need to provide.\n */\n function createListFromArray(createElement, dataSource, \n // tslint:disable-next-line\n // eslint-disable-next-line\n isSingleLevel, options, componentInstance) {\n var subChild = createListItemFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n return generateUL(createElement, subChild, null, options);\n }\n ListBase.createListFromArray = createListFromArray;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} subChild - returns the list options that need to provide.\n */\n function createListItemFromArray(createElement, dataSource, \n // eslint-disable-next-line\n isSingleLevel, options, componentInstance) {\n var subChild = [];\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n var li = void 0;\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n options: curOpt\n };\n curOpt.itemCreating(curData);\n }\n if (isSingleLevel) {\n li = generateSingleLevelLI(createElement, dataSource[i], undefined, null, null, [], null, id, i, options);\n }\n else {\n li = generateLI(createElement, dataSource[i], undefined, null, null, options, componentInstance);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n item: li,\n options: curOpt\n };\n curOpt.itemCreated(curData);\n }\n subChild.push(li);\n }\n return subChild;\n }\n ListBase.createListItemFromArray = createListItemFromArray;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {number} level? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} child - returns the list options that need to provide.\n */\n function createListItemFromJson(createElement, dataSource, \n // eslint-disable-next-line\n options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var fields = (componentInstance &&\n (componentInstance.getModuleName() === 'listview' || componentInstance.getModuleName() === 'multiselect'))\n ? curOpt.fields : extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var id;\n var checkboxElement = [];\n if (level) {\n ariaAttributes.level = level;\n }\n var child = [];\n var li;\n var anchorElement;\n if (dataSource && dataSource.length && !isNullOrUndefined(typeofData(dataSource).item) &&\n // eslint-disable-next-line no-prototype-builtins\n !typeofData(dataSource).item.hasOwnProperty(fields.id)) {\n id = generateId(); // generate id for drop-down-list option.\n }\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], fields);\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreating(curData);\n }\n var curItem = dataSource[i];\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], fields);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.id) && !isNullOrUndefined(fieldData[fields.id])) {\n id = fieldData[fields.id];\n }\n var innerEle = [];\n if (curOpt.showCheckBox) {\n if (curOpt.itemNavigable && (fieldData[fields.url] || fieldData[fields.urlAttributes])) {\n checkboxElement.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n else {\n innerEle.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n }\n if (isSingleLevel === true) {\n // eslint-disable-next-line no-prototype-builtins\n if (curOpt.showIcon && fieldData.hasOwnProperty(fields.iconCss) && !isNullOrUndefined(fieldData[fields.iconCss])) {\n innerEle.push(createElement('span', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] }));\n }\n li = generateSingleLevelLI(createElement, curItem, fieldData, fields, curOpt.itemClass, innerEle, \n // eslint-disable-next-line no-prototype-builtins\n (curItem.hasOwnProperty('isHeader') &&\n curItem.isHeader) ? true : false, id, i, options);\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n }\n else {\n li = generateLI(createElement, curItem, fieldData, fields, curOpt.itemClass, options, componentInstance);\n li.classList.add(cssClass.level + '-' + ariaAttributes.level);\n li.setAttribute('aria-level', ariaAttributes.level.toString());\n if (ariaAttributes.groupItemRole == 'presentation') {\n li.removeAttribute('aria-level');\n }\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.tooltip)) {\n li.setAttribute('title', fieldData[fields.tooltip]);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled] === false) {\n li.classList.add(cssClass.disabled);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.isVisible) && fieldData[fields.isVisible] === false) {\n li.style.display = 'none';\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.imageUrl) && !isNullOrUndefined(fieldData[fields.imageUrl])\n && !curOpt.template) {\n var attr = { src: fieldData[fields.imageUrl] };\n merge(attr, fieldData[fields.imageAttributes]);\n var imageElemnt = createElement('img', { className: cssClass.image, attrs: attr });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', imageElemnt);\n }\n else {\n prepend([imageElemnt], li.firstElementChild);\n }\n }\n // eslint-disable-next-line no-prototype-builtins\n if (curOpt.showIcon && fieldData.hasOwnProperty(fields.iconCss) &&\n !isNullOrUndefined(fieldData[fields.iconCss]) && !curOpt.template) {\n var iconElement = createElement('div', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', iconElement);\n }\n else {\n prepend([iconElement], li.firstElementChild);\n }\n }\n if (innerEle.length) {\n prepend(innerEle, li.firstElementChild);\n }\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n processSubChild(createElement, fieldData, fields, dataSource, curOpt, li, ariaAttributes.level);\n }\n if (anchorElement) {\n addClass([li], [cssClass.navigable]);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n item: li,\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreated(curData);\n }\n checkboxElement = [];\n child.push(li);\n }\n return child;\n }\n ListBase.createListItemFromJson = createListItemFromJson;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {number} level? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - Specifies the list options that need to provide.\n */\n function createListFromJson(createElement, dataSource, \n // eslint-disable-next-line\n options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var li = createListItemFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance);\n return generateUL(createElement, li, curOpt.listClass, options);\n }\n ListBase.createListFromJson = createListFromJson;\n /**\n * Return the next or previous visible element.\n *\n * @param {Element[]|NodeList} elementArray - An element array to find next or previous element.\n * @param {Element} li - An element to find next or previous after this element.\n * @param {boolean} isPrevious? - Specify when the need get previous element from array.\n */\n function getSiblingLI(elementArray, element, isPrevious) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n if (!elementArray || !elementArray.length) {\n return void 0;\n }\n var siblingLI;\n var liIndex;\n var liCollections = Array.prototype.slice.call(elementArray);\n if (element) {\n liIndex = indexOf(element, liCollections);\n }\n else {\n liIndex = (isPrevious === true ? liCollections.length : -1);\n }\n siblingLI = liCollections[liIndex + (isPrevious === true ? -1 : 1)];\n while (siblingLI && (!isVisible(siblingLI) || siblingLI.classList.contains(cssClass.disabled))) {\n liIndex = liIndex + (isPrevious === true ? -1 : 1);\n siblingLI = liCollections[liIndex];\n }\n return siblingLI;\n }\n ListBase.getSiblingLI = getSiblingLI;\n /**\n * Return the index of the li element\n *\n * @param {Element} item - An element to find next or previous after this element.\n * @param {Element[]} elementArray - An element array to find index of given li.\n */\n function indexOf(item, elementArray) {\n if (!elementArray || !item) {\n return void 0;\n }\n else {\n var liCollections = elementArray;\n liCollections = Array.prototype.slice.call(elementArray);\n return liCollections.indexOf(item);\n }\n }\n ListBase.indexOf = indexOf;\n /**\n * Returns the grouped data from given dataSource.\n *\n * @param {{Object}[]} dataSource - The JSON data which is necessary to process.\n * @param {FieldsMapping} fields - Fields that are mapped from the data source.\n * @param {SortOrder} sortOrder- Specifies final result sort order.\n */\n function groupDataSource(dataSource, fields, sortOrder) {\n if (sortOrder === void 0) { sortOrder = 'None'; }\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var cusQuery = new Query().group(curFields.groupBy);\n // need to remove once sorting issues fixed in DataManager\n cusQuery = addSorting(sortOrder, 'key', cusQuery);\n var ds = getDataSource(dataSource, cusQuery);\n dataSource = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[j].items;\n var grpItem = {};\n var hdr = 'isHeader';\n grpItem[curFields.text] = ds[j].key;\n grpItem[\"\" + hdr] = true;\n var newtext = curFields.text;\n if (newtext === 'id') {\n newtext = 'text';\n grpItem[\"\" + newtext] = ds[j].key;\n }\n grpItem._id = 'group-list-item-' + (ds[j].key ?\n ds[j].key.toString().trim() : 'undefined');\n grpItem.items = itemObj;\n dataSource.push(grpItem);\n for (var k = 0; k < itemObj.length; k++) {\n dataSource.push(itemObj[k]);\n }\n }\n return dataSource;\n }\n ListBase.groupDataSource = groupDataSource;\n /**\n * Returns a sorted query object.\n *\n * @param {SortOrder} sortOrder - Specifies that sort order.\n * @param {string} sortBy - Specifies sortBy fields.\n * @param {Query} query - Pass if any existing query.\n */\n function addSorting(sortOrder, sortBy, query) {\n if (query === void 0) { query = new Query(); }\n if (sortOrder === 'Ascending') {\n query.sortBy(sortBy, 'ascending', true);\n }\n else if (sortOrder === 'Descending') {\n query.sortBy(sortBy, 'descending', true);\n }\n else {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[i].fn === 'onSortBy') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n }\n ListBase.addSorting = addSorting;\n /**\n * Return an array of JSON Data that processed based on queries.\n *\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n *\n * @param {Query} query - Specifies query that need to process.\n */\n function getDataSource(dataSource, query) {\n // eslint-disable-next-line\n return new DataManager(dataSource)\n .executeLocal(query);\n }\n ListBase.getDataSource = getDataSource;\n /**\n * Created JSON data based the UL and LI element\n *\n * @param {HTMLElement|Element} element - UL element that need to convert as a JSON\n * @param {ListBaseOptions} options? - Specifies listbase option for fields.\n */\n function createJsonFromElement(element, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var fields = extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var curEle = element.cloneNode(true);\n // eslint-disable-next-line\n var jsonAr = [];\n curEle.classList.add('json-parent');\n var childs = curEle.querySelectorAll('.json-parent>li');\n curEle.classList.remove('json-parent');\n for (var i = 0; i < childs.length; i++) {\n var li = childs[i];\n var anchor = li.querySelector('a');\n var ul = li.querySelector('ul');\n // eslint-disable-next-line\n var json = {};\n var childNodes = anchor ? anchor.childNodes : li.childNodes;\n var keys = Object.keys(childNodes);\n for (var i_1 = 0; i_1 < childNodes.length; i_1++) {\n if (!(childNodes[Number(keys[i_1])]).hasChildNodes()) {\n json[fields.text] = childNodes[Number(keys[i_1])].textContent;\n }\n }\n var attributes_1 = getAllAttributes(li);\n if (attributes_1.id) {\n json[fields.id] = attributes_1.id;\n delete attributes_1.id;\n }\n else {\n json[fields.id] = generateId();\n }\n if (Object.keys(attributes_1).length) {\n json[fields.htmlAttributes] = attributes_1;\n }\n if (anchor) {\n attributes_1 = getAllAttributes(anchor);\n if (Object.keys(attributes_1).length) {\n json[fields.urlAttributes] = attributes_1;\n }\n }\n if (ul) {\n json[fields.child] = createJsonFromElement(ul, options);\n }\n jsonAr.push(json);\n }\n return jsonAr;\n }\n ListBase.createJsonFromElement = createJsonFromElement;\n function typeofData(data) {\n var match = { typeof: null, item: null };\n for (var i = 0; i < data.length; i++) {\n if (!isNullOrUndefined(data[i])) {\n return match = { typeof: typeof data[i], item: data[i] };\n }\n }\n return match;\n }\n function setAttribute(element, elementAttributes) {\n var attr = {};\n merge(attr, elementAttributes);\n if (attr.class) {\n addClass([element], attr.class.split(' '));\n delete attr.class;\n }\n attributes(element, attr);\n }\n function getAllAttributes(element) {\n var attributes = {};\n var attr = element.attributes;\n for (var index = 0; index < attr.length; index++) {\n attributes[attr[index].nodeName] = attr[index].nodeValue;\n }\n return attributes;\n }\n /**\n * Created UL element from content template.\n *\n * @param {string} template - that need to convert and generate li element.\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n * @param {ListBaseOptions} options? - Specifies listbase option for fields.\n */\n function renderContentTemplate(createElement, template, dataSource, \n // eslint-disable-next-line\n fields, options, componentInstance) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n var ulElement = createElement('ul', { className: cssClass.ul, attrs: { role: 'presentation' } });\n var curOpt = extend({}, defaultListBaseOptions, options);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n // eslint-disable-next-line\n var compiledString = compileTemplate(template);\n var liCollection = [];\n var value;\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], curFields);\n var curItem = dataSource[i];\n var isHeader = curItem.isHeader;\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreating(curData);\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], curFields);\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n }\n var li = createElement('li', {\n id: id + '-' + i,\n className: isHeader ? cssClass.group : cssClass.li, attrs: { role: 'presentation' }\n });\n if (isHeader) {\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n li.innerText = curItem;\n }\n else {\n li.innerText = fieldData[curFields.text];\n }\n }\n else {\n var currentID = isHeader ? curOpt.groupTemplateID : curOpt.templateID;\n if (isHeader) {\n if (componentInstance && componentInstance.getModuleName() != 'listview') {\n // eslint-disable-next-line\n var compiledElement = compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate), li);\n }\n }\n else {\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n // eslint-disable-next-line\n var compiledElement = compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate), li);\n }\n }\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n item: li,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreated(curData);\n }\n liCollection.push(li);\n }\n append(liCollection, ulElement);\n return ulElement;\n }\n ListBase.renderContentTemplate = renderContentTemplate;\n /**\n * Created header items from group template.\n *\n * @param {string} template - that need to convert and generate li element.\n *\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n *\n * @param {FieldsMapping} fields - Specifies fields for mapping the dataSource.\n *\n * @param {Element[]} headerItems? - Specifies listbase header items.\n */\n // tslint:disable-next-line\n function renderGroupTemplate(groupTemplate, groupDataSource, fields, \n // eslint-disable-next-line\n headerItems, options, componentInstance) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compileTemplate(groupTemplate);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var curOpt = extend({}, defaultListBaseOptions, options);\n var category = curFields.groupBy;\n for (var _i = 0, headerItems_1 = headerItems; _i < headerItems_1.length; _i++) {\n var header = headerItems_1[_i];\n var headerData = {};\n headerData[\"\" + category] = header.textContent;\n header.innerHTML = '';\n if (componentInstance && componentInstance.getModuleName() !== \"listview\") {\n // eslint-disable-next-line\n var compiledElement = compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, header);\n if (compiledElement) {\n append(compiledElement, header);\n }\n }\n else {\n append(compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), header);\n }\n }\n return headerItems;\n }\n ListBase.renderGroupTemplate = renderGroupTemplate;\n function generateId() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n ListBase.generateId = generateId;\n function processSubChild(createElement, fieldData, fields, ds, options, element, level) {\n // Get SubList\n var subDS = fieldData[fields.child] || [];\n var hasChildren = fieldData[fields.hasChildren];\n //Create Sub child\n if (subDS.length) {\n hasChildren = true;\n element.classList.add(cssClass.hasChild);\n if (options.processSubChild) {\n var subLi = createListFromJson(createElement, subDS, options, ++level);\n element.appendChild(subLi);\n }\n }\n // Create expand and collapse node\n if (!!options.expandCollapse && hasChildren && !options.template) {\n element.firstElementChild.classList.add(cssClass.iconWrapper);\n // eslint-disable-next-line @typescript-eslint/ban-types\n var expandElement = options.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', { className: 'e-icons ' + options.expandIconClass })], element.querySelector('.' + cssClass.textContent));\n }\n }\n function generateSingleLevelLI(createElement, item, fieldData, fields, className, innerElements, grpLI, id, index, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var value = item;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number' && typeof item !== 'boolean') {\n dataSource = item;\n text = (typeof fieldData[fields.text] === 'boolean' || typeof fieldData[fields.text] === 'number') ?\n fieldData[fields.text] : (fieldData[fields.text] || '');\n value = fieldData[fields.value];\n }\n var elementID;\n if (!isNullOrUndefined(dataSource) && !isNullOrUndefined(fieldData[fields.id])\n && fieldData[fields.id] !== '') {\n elementID = id;\n }\n else {\n elementID = id + '-' + index;\n }\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n id: elementID, attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n // eslint-disable-next-line no-prototype-builtins\n if (dataSource && fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled].toString() === 'false') {\n li.classList.add(cssClass.disabled);\n }\n if (grpLI) {\n li.innerText = text;\n }\n else {\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n // eslint-disable-next-line no-prototype-builtins\n if (dataSource && fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n if (innerElements.length && !curOpt.itemNavigable) {\n append(innerElements, li);\n }\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n li.appendChild(anchorTag(createElement, dataSource, fields, text, innerElements, curOpt.itemNavigable));\n }\n else {\n if (innerElements.length && curOpt.itemNavigable) {\n append(innerElements, li);\n }\n li.appendChild(document.createTextNode(text));\n }\n }\n return li;\n }\n function getModuleClass(moduleName) {\n var moduleClass;\n // eslint-disable-next-line\n return moduleClass = {\n li: \"e-\" + moduleName + \"-item\",\n ul: \"e-\" + moduleName + \"-parent e-ul\",\n group: \"e-\" + moduleName + \"-group-item\",\n icon: \"e-\" + moduleName + \"-icon\",\n text: \"e-\" + moduleName + \"-text\",\n check: \"e-\" + moduleName + \"-check\",\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: \"e-\" + moduleName + \"-url\",\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: \"e-\" + moduleName + \"-img\",\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n };\n }\n function anchorTag(createElement, dataSource, fields, text, innerElements, isFullNavigation) {\n var fieldData = getFieldValues(dataSource, fields);\n var attr = { href: fieldData[fields.url] };\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.urlAttributes) && fieldData[fields.urlAttributes]) {\n merge(attr, fieldData[fields.urlAttributes]);\n attr.href = fieldData[fields.url] ? fieldData[fields.url] :\n fieldData[fields.urlAttributes].href;\n }\n var anchorTag;\n if (!isFullNavigation) {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url, innerHTML: text });\n }\n else {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url });\n var anchorWrapper = createElement('div', { className: cssClass.anchorWrap });\n if (innerElements && innerElements.length) {\n append(innerElements, anchorWrapper);\n }\n anchorWrapper.appendChild(document.createTextNode(text));\n append([anchorWrapper], anchorTag);\n }\n setAttribute(anchorTag, attr);\n return anchorTag;\n }\n // tslint:disable-next-line\n /* tslint:disable:align */\n function generateLI(createElement, item, fieldData, \n // eslint-disable-next-line\n fields, className, options, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var uID;\n var grpLI;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number') {\n dataSource = item;\n text = fieldData[fields.text] || '';\n // tslint:disable-next-line\n uID = (isNullOrUndefined(fieldData['_id'])) ? fieldData[fields.id] : fieldData['_id'];\n // eslint-disable-next-line no-prototype-builtins\n grpLI = (item.hasOwnProperty('isHeader') && item.isHeader)\n ? true : false;\n }\n if (options && options.enableHtmlSanitizer) {\n // eslint-disable-next-line no-self-assign\n text = text;\n }\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n if (!isNullOrUndefined(uID) === true) {\n li.setAttribute('data-uid', uID);\n }\n else {\n li.setAttribute('data-uid', generateId());\n }\n if (grpLI && options && options.groupTemplate) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compileTemplate(options.groupTemplate);\n if (componentInstance && componentInstance.getModuleName() !== \"listview\") {\n // eslint-disable-next-line\n var compiledElement = compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), li);\n }\n }\n else if (!grpLI && options && options.template) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compileTemplate(options.template);\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n // eslint-disable-next-line\n var compiledElement = compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate), li);\n }\n }\n else {\n var innerDiv = createElement('div', {\n className: cssClass.textContent,\n attrs: (ariaAttributes.wrapperRole !== '' ? { role: ariaAttributes.wrapperRole } : {})\n });\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n innerDiv.appendChild(anchorTag(createElement, dataSource, fields, text, null, curOpt.itemNavigable));\n }\n else {\n var element = createElement('span', {\n className: cssClass.text,\n attrs: (ariaAttributes.itemText !== '' ? { role: ariaAttributes.itemText } : {})\n });\n if (options && options.enableHtmlSanitizer) {\n element.innerText = SanitizeHtmlHelper.sanitize(text);\n }\n else {\n element.innerHTML = text;\n }\n innerDiv.appendChild(element);\n }\n li.appendChild(innerDiv);\n }\n return li;\n }\n /**\n * Returns UL element based on the given LI element.\n *\n * @param {HTMLElement[]} liElement - Specifies array of LI element.\n *\n * @param {string} className? - Specifies class name that need to be added in UL element.\n *\n * @param {ListBaseOptions} options? - Specifies ListBase options.\n */\n function generateUL(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n cssClass = getModuleClass(curOpt.moduleName);\n var ulElement = createElement('ul', {\n className: cssClass.ul + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.listRole !== '' ? { role: ariaAttributes.listRole } : {})\n });\n append(liElement, ulElement);\n return ulElement;\n }\n ListBase.generateUL = generateUL;\n /**\n * Returns LI element with additional DIV tag based on the given LI element.\n *\n * @param {liElement} liElement - Specifies LI element.\n *\n * @param {string} className? - Specifies class name that need to be added in created DIV element.\n *\n * @param {ListBaseOptions} options? - Specifies ListBase options.\n */\n function generateIcon(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n // eslint-disable-next-line @typescript-eslint/ban-types\n var expandElement = curOpt.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', {\n className: 'e-icons ' + curOpt.expandIconClass + ' ' +\n (isNullOrUndefined(className) ? '' : className)\n })], liElement.querySelector('.' + cssClass.textContent));\n return liElement;\n }\n ListBase.generateIcon = generateIcon;\n})(ListBase || (ListBase = {}));\n/**\n * Used to get dataSource item from complex data using fields.\n *\n * @param {Object} dataSource - Specifies an JSON or String data.\n *\n * @param {FieldsMapping} fields - Fields that are mapped from the dataSource.\n */\nexport function getFieldValues(dataItem, fields) {\n var fieldData = {};\n if (isNullOrUndefined(dataItem) || typeof (dataItem) === 'string' || typeof (dataItem) === 'number'\n || !isNullOrUndefined(dataItem.isHeader)) {\n return dataItem;\n }\n else {\n for (var _i = 0, _a = Object.keys(fields); _i < _a.length; _i++) {\n var field = _a[_i];\n var dataField = fields[\"\" + field];\n var value = !isNullOrUndefined(dataField) &&\n typeof (dataField) === 'string' ? getValue(dataField, dataItem) : undefined;\n if (!isNullOrUndefined(value)) {\n fieldData[\"\" + dataField] = value;\n }\n }\n }\n return fieldData;\n}\nfunction compileTemplate(template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelector(template)) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return undefined;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-hscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_HSCROLLCON = 'e-hscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVRIGHTARROW = 'e-nav-right-arrow';\nvar CLS_NAVLEFTARROW = 'e-nav-left-arrow';\nvar CLS_HSCROLLNAV = 'e-scroll-nav';\nvar CLS_HSCROLLNAVRIGHT = 'e-scroll-right-nav';\nvar CLS_HSCROLLNAVLEFT = 'e-scroll-left-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_RIGHTOVERLAY = 'e-scroll-right-overlay';\nvar CLS_LEFTOVERLAY = 'e-scroll-left-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * HScroll module is introduces horizontal scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs horizontal scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
    \n * \n * ```\n */\nvar HScroll = /** @class */ (function (_super) {\n __extends(HScroll, _super);\n /**\n * Initializes a new instance of the HScroll class.\n *\n * @param {HScrollModel} options - Specifies HScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which horizontal scrolling applies.\n */\n function HScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n HScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var element = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (element.id === '') {\n element.id = getUniqueID('hscroll');\n this.uniqueId = true;\n }\n element.style.display = 'block';\n if (this.enableRtl) {\n element.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the horizontal scroll rendering\n *\n * @private\n * @returns {void}\n */\n HScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlay(this.element);\n }\n this.setScrollState();\n };\n HScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetWidth;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n HScroll.prototype.initialize = function () {\n var scrollEle = this.createElement('div', { className: CLS_HSCROLLCON });\n var scrollDiv = this.createElement('div', { className: CLS_HSCROLLBAR });\n scrollDiv.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollEle.appendChild(ele_1);\n }\n scrollDiv.appendChild(scrollEle);\n ele.appendChild(scrollDiv);\n scrollDiv.style.overflowX = 'hidden';\n this.scrollEle = scrollDiv;\n this.scrollItems = scrollEle;\n };\n HScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n HScroll.prototype.getModuleName = function () {\n return 'hScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n HScroll.prototype.destroy = function () {\n var ele = this.element;\n ele.style.display = '';\n ele.classList.remove(CLS_ROOT);\n ele.classList.remove(CLS_DEVICE);\n ele.classList.remove(CLS_RTL);\n var nav = selectAll('.e-' + ele.id + '_nav.' + CLS_HSCROLLNAV, ele);\n var overlay = selectAll('.' + CLS_OVERLAY, ele);\n [].slice.call(overlay).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n ele.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (nav.length > 0) {\n detach(nav[0]);\n if (!isNullOrUndefined(nav[1])) {\n detach(nav[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the HScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, HScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n HScroll.prototype.disable = function (value) {\n var navEles = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n }\n else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEles).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n HScroll.prototype.createOverlay = function (element) {\n var id = element.id.concat('_nav');\n var rightOverlayEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_RIGHTOVERLAY });\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightEle = this.createElement('div', { id: id.concat('_right'), className: clsRight });\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n rightEle.appendChild(navItem);\n var leftEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_LEFTOVERLAY });\n if (this.ieCheck) {\n rightEle.classList.add('e-ie-align');\n }\n element.appendChild(rightOverlayEle);\n element.appendChild(rightEle);\n element.insertBefore(leftEle, element.firstChild);\n this.eventBinding([rightEle]);\n };\n HScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightAttributes = { 'role': 'button', 'id': id.concat('_right'), 'aria-label': 'Scroll right' };\n var nav = this.createElement('div', { className: clsRight, attrs: rightAttributes });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsLeft = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVLEFT);\n var leftAttributes = { 'role': 'button', 'id': id.concat('_left'), 'aria-label': 'Scroll left' };\n var navEle = this.createElement('div', { className: clsLeft + ' ' + CLS_DISABLE, attrs: leftAttributes });\n navEle.setAttribute('aria-disabled', 'true');\n var navLeftItem = this.createElement('div', { className: CLS_NAVLEFTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navEle.appendChild(navLeftItem);\n nav.appendChild(navItem);\n element.appendChild(nav);\n element.insertBefore(navEle, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navEle.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navEle]);\n };\n HScroll.prototype.onKeyPress = function (e) {\n var _this = this;\n if (e.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, e.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n HScroll.prototype.onKeyUp = function (e) {\n if (e.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n e.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n HScroll.prototype.eventBinding = function (ele) {\n var _this = this;\n [].slice.call(ele).forEach(function (el) {\n new Touch(el, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n el.addEventListener('keydown', _this.onKeyPress.bind(_this));\n el.addEventListener('keyup', _this.onKeyUp.bind(_this));\n el.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n el.addEventListener('touchend', _this.repeatScroll.bind(_this));\n el.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(el, 'click', _this.clickEventHandler, _this);\n });\n };\n HScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n HScroll.prototype.tabHoldHandler = function (e) {\n var _this = this;\n var trgt = e.originalEvent.target;\n trgt = this.contains(trgt, CLS_HSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDis = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDis, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n HScroll.prototype.contains = function (ele, className) {\n return ele.classList.contains(className);\n };\n HScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var rootEle = this.element;\n var classList = trgt.classList;\n if (classList.contains(CLS_HSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (this.contains(rootEle, CLS_RTL) && this.browserCheck) {\n scrollDis = -scrollDis;\n }\n if ((!this.contains(rootEle, CLS_RTL) || this.browserCheck) || this.ieCheck) {\n if (classList.contains(CLS_NAVRIGHTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n else {\n if (classList.contains(CLS_NAVLEFTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n };\n HScroll.prototype.clickEventHandler = function (e) {\n this.eleScrolling(this.scrollStep, e.target, false);\n };\n HScroll.prototype.swipeHandler = function (e) {\n var swipeEle = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceX / (e.velocity * 10);\n }\n else {\n distance = e.distanceX / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Left') {\n swipeEle.scrollLeft += distance * step;\n }\n else if (e.swipeDirection === 'Right') {\n swipeEle.scrollLeft -= distance * step;\n }\n start -= 0.5;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollLeft += scrollVal;\n }\n else {\n this.scrollEle.scrollLeft -= scrollVal;\n }\n if (this.enableRtl && this.scrollEle.scrollLeft > 0) {\n this.scrollEle.scrollLeft = 0;\n }\n };\n HScroll.prototype.frameScrollRequest = function (scrollVal, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollVal, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollVal -= el.offsetWidth;\n });\n }\n var animate = function () {\n var scrollValue;\n var scrollStep;\n if (_this.contains(_this.element, CLS_RTL) && _this.browserCheck) {\n scrollValue = -scrollVal;\n scrollStep = -step;\n }\n else {\n scrollValue = scrollVal;\n scrollStep = step;\n }\n if (scrollValue < step) {\n window.cancelAnimationFrame(scrollStep);\n }\n else {\n _this.scrollUpdating(scrollStep, action);\n scrollVal -= scrollStep;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.touchHandler = function (e) {\n var ele = this.scrollEle;\n var distance = e.distanceX;\n if ((this.ieCheck) && this.contains(this.element, CLS_RTL)) {\n distance = -distance;\n }\n if (e.scrollDirection === 'Left') {\n ele.scrollLeft = ele.scrollLeft + distance;\n }\n else if (e.scrollDirection === 'Right') {\n ele.scrollLeft = ele.scrollLeft - distance;\n }\n };\n HScroll.prototype.arrowDisabling = function (addDisable, removeDisable) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisable) ? removeDisable : addDisable;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisable)) {\n classList(arrowIcon, [CLS_NAVRIGHTARROW], [CLS_NAVLEFTARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVLEFTARROW], [CLS_NAVRIGHTARROW]);\n }\n }\n else if (addDisable && removeDisable) {\n addDisable.classList.add(CLS_DISABLE);\n addDisable.setAttribute('aria-disabled', 'true');\n addDisable.removeAttribute('tabindex');\n removeDisable.classList.remove(CLS_DISABLE);\n removeDisable.setAttribute('aria-disabled', 'false');\n removeDisable.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n HScroll.prototype.scrollHandler = function (e) {\n var target = e.target;\n var width = target.offsetWidth;\n var rootEle = this.element;\n var navLeftEle = this.element.querySelector('.' + CLS_HSCROLLNAVLEFT);\n var navRightEle = this.element.querySelector('.' + CLS_HSCROLLNAVRIGHT);\n var leftOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n var rightOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n var scrollLeft = target.scrollLeft;\n if (scrollLeft <= 0) {\n scrollLeft = -scrollLeft;\n }\n if (this.isDevice) {\n if (this.enableRtl && !(this.browserCheck || this.ieCheck)) {\n leftOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n rightOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n }\n if (scrollLeft < OVERLAY_MAXWID) {\n leftOverlay.style.width = scrollLeft + 'px';\n }\n else {\n leftOverlay.style.width = '40px';\n }\n if ((target.scrollWidth - Math.ceil(width + scrollLeft)) < OVERLAY_MAXWID) {\n rightOverlay.style.width = (target.scrollWidth - Math.ceil(width + scrollLeft)) + 'px';\n }\n else {\n rightOverlay.style.width = '40px';\n }\n }\n if (scrollLeft === 0) {\n this.arrowDisabling(navLeftEle, navRightEle);\n }\n else if (Math.ceil(width + scrollLeft + .1) >= target.scrollWidth) {\n this.arrowDisabling(navRightEle, navLeftEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_HSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {HScrollModel} newProp - It contains the new value of data.\n * @param {HScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n HScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.element.classList.add(CLS_RTL) : this.element.classList.remove(CLS_RTL);\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], HScroll.prototype, \"scrollStep\", void 0);\n HScroll = __decorate([\n NotifyPropertyChanges\n ], HScroll);\n return HScroll;\n}(Component));\nexport { HScroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID, removeClass } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach, createElement as buildTag } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-vscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_VSCROLLBAR = 'e-vscroll-bar';\nvar CLS_VSCROLLCON = 'e-vscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVUPARROW = 'e-nav-up-arrow';\nvar CLS_NAVDOWNARROW = 'e-nav-down-arrow';\nvar CLS_VSCROLLNAV = 'e-scroll-nav';\nvar CLS_VSCROLLNAVUP = 'e-scroll-up-nav';\nvar CLS_VSCROLLNAVDOWN = 'e-scroll-down-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_UPOVERLAY = 'e-scroll-up-overlay';\nvar CLS_DOWNOVERLAY = 'e-scroll-down-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * VScroll module is introduces vertical scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs vertical scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
    \n * \n * ```\n */\nvar VScroll = /** @class */ (function (_super) {\n __extends(VScroll, _super);\n /**\n * Initializes a new instance of the VScroll class.\n *\n * @param {VScrollModel} options - Specifies VScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which vertical scrolling applies.\n */\n function VScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var ele = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (ele.id === '') {\n ele.id = getUniqueID('vscroll');\n this.uniqueId = true;\n }\n ele.style.display = 'block';\n if (this.enableRtl) {\n ele.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the vertical scroll rendering\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollEventHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlayElement(this.element);\n }\n this.setScrollState();\n EventHandler.add(this.element, 'wheel', this.wheelEventHandler, this);\n };\n VScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetHeight;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n VScroll.prototype.initialize = function () {\n var scrollCnt = buildTag('div', { className: CLS_VSCROLLCON });\n var scrollBar = buildTag('div', { className: CLS_VSCROLLBAR });\n scrollBar.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollCnt.appendChild(ele_1);\n }\n scrollBar.appendChild(scrollCnt);\n ele.appendChild(scrollBar);\n scrollBar.style.overflow = 'hidden';\n this.scrollEle = scrollBar;\n this.scrollItems = scrollCnt;\n };\n VScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n VScroll.prototype.getModuleName = function () {\n return 'vScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n VScroll.prototype.destroy = function () {\n var el = this.element;\n el.style.display = '';\n removeClass([this.element], [CLS_ROOT, CLS_DEVICE, CLS_RTL]);\n var navs = selectAll('.e-' + el.id + '_nav.' + CLS_VSCROLLNAV, el);\n var overlays = selectAll('.' + CLS_OVERLAY, el);\n [].slice.call(overlays).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n el.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (navs.length > 0) {\n detach(navs[0]);\n if (!isNullOrUndefined(navs[1])) {\n detach(navs[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollEventHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the VScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, VScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n VScroll.prototype.disable = function (value) {\n var navEle = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n }\n else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEle).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n VScroll.prototype.createOverlayElement = function (element) {\n var id = element.id.concat('_nav');\n var downOverlayEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_DOWNOVERLAY });\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var downEle = buildTag('div', { id: id.concat('down'), className: clsDown });\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n downEle.appendChild(navItem);\n var upEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_UPOVERLAY });\n if (this.ieCheck) {\n downEle.classList.add('e-ie-align');\n }\n element.appendChild(downOverlayEle);\n element.appendChild(downEle);\n element.insertBefore(upEle, element.firstChild);\n this.eventBinding([downEle]);\n };\n VScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var nav = buildTag('div', { id: id.concat('_down'), className: clsDown });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsUp = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVUP);\n var navElement = buildTag('div', { id: id.concat('_up'), className: clsUp + ' ' + CLS_DISABLE });\n navElement.setAttribute('aria-disabled', 'true');\n var navUpItem = buildTag('div', { className: CLS_NAVUPARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navElement.appendChild(navUpItem);\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n element.appendChild(nav);\n element.insertBefore(navElement, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navElement.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navElement]);\n };\n VScroll.prototype.onKeyPress = function (ev) {\n var _this = this;\n if (ev.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, ev.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n VScroll.prototype.onKeyUp = function (ev) {\n if (ev.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n ev.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n VScroll.prototype.eventBinding = function (element) {\n var _this = this;\n [].slice.call(element).forEach(function (ele) {\n new Touch(ele, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n ele.addEventListener('keydown', _this.onKeyPress.bind(_this));\n ele.addEventListener('keyup', _this.onKeyUp.bind(_this));\n ele.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n ele.addEventListener('touchend', _this.repeatScroll.bind(_this));\n ele.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(ele, 'click', _this.clickEventHandler, _this);\n });\n };\n VScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n VScroll.prototype.tabHoldHandler = function (ev) {\n var _this = this;\n var trgt = ev.originalEvent.target;\n trgt = this.contains(trgt, CLS_VSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDistance = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDistance, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n VScroll.prototype.contains = function (element, className) {\n return element.classList.contains(className);\n };\n VScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var classList = trgt.classList;\n if (classList.contains(CLS_VSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (classList.contains(CLS_NAVDOWNARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else if (classList.contains(CLS_NAVUPARROW)) {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n };\n VScroll.prototype.clickEventHandler = function (event) {\n this.eleScrolling(this.scrollStep, event.target, false);\n };\n VScroll.prototype.wheelEventHandler = function (e) {\n e.preventDefault();\n this.frameScrollRequest(this.scrollStep, (e.deltaY > 0 ? 'add' : ''), false);\n };\n VScroll.prototype.swipeHandler = function (e) {\n var swipeElement = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceY / (e.velocity * 10);\n }\n else {\n distance = e.distanceY / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Up') {\n swipeElement.scrollTop += distance * step;\n }\n else if (e.swipeDirection === 'Down') {\n swipeElement.scrollTop -= distance * step;\n }\n start -= 0.02;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollTop += scrollVal;\n }\n else {\n this.scrollEle.scrollTop -= scrollVal;\n }\n };\n VScroll.prototype.frameScrollRequest = function (scrollValue, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollValue, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollValue -= el.offsetHeight;\n });\n }\n var animate = function () {\n if (scrollValue < step) {\n window.cancelAnimationFrame(step);\n }\n else {\n _this.scrollUpdating(step, action);\n scrollValue -= step;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.touchHandler = function (e) {\n var el = this.scrollEle;\n var distance = e.distanceY;\n if (e.scrollDirection === 'Up') {\n el.scrollTop = el.scrollTop + distance;\n }\n else if (e.scrollDirection === 'Down') {\n el.scrollTop = el.scrollTop - distance;\n }\n };\n VScroll.prototype.arrowDisabling = function (addDisableCls, removeDisableCls) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisableCls) ? removeDisableCls : addDisableCls;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisableCls)) {\n classList(arrowIcon, [CLS_NAVDOWNARROW], [CLS_NAVUPARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVUPARROW], [CLS_NAVDOWNARROW]);\n }\n }\n else {\n addDisableCls.classList.add(CLS_DISABLE);\n addDisableCls.setAttribute('aria-disabled', 'true');\n addDisableCls.removeAttribute('tabindex');\n removeDisableCls.classList.remove(CLS_DISABLE);\n removeDisableCls.setAttribute('aria-disabled', 'false');\n removeDisableCls.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n VScroll.prototype.scrollEventHandler = function (e) {\n var target = e.target;\n var height = target.offsetHeight;\n var navUpEle = this.element.querySelector('.' + CLS_VSCROLLNAVUP);\n var navDownEle = this.element.querySelector('.' + CLS_VSCROLLNAVDOWN);\n var upOverlay = this.element.querySelector('.' + CLS_UPOVERLAY);\n var downOverlay = this.element.querySelector('.' + CLS_DOWNOVERLAY);\n var scrollTop = target.scrollTop;\n if (scrollTop <= 0) {\n scrollTop = -scrollTop;\n }\n if (this.isDevice) {\n if (scrollTop < OVERLAY_MAXWID) {\n upOverlay.style.height = scrollTop + 'px';\n }\n else {\n upOverlay.style.height = '40px';\n }\n if ((target.scrollHeight - Math.ceil(height + scrollTop)) < OVERLAY_MAXWID) {\n downOverlay.style.height = (target.scrollHeight - Math.ceil(height + scrollTop)) + 'px';\n }\n else {\n downOverlay.style.height = '40px';\n }\n }\n if (scrollTop === 0) {\n this.arrowDisabling(navUpEle, navDownEle);\n }\n else if (Math.ceil(height + scrollTop + .1) >= target.scrollHeight) {\n this.arrowDisabling(navDownEle, navUpEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_VSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {VScrollModel} newProp - It contains the new value of data.\n * @param {VScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n VScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(CLS_RTL);\n }\n else {\n this.element.classList.remove(CLS_RTL);\n }\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], VScroll.prototype, \"scrollStep\", void 0);\n VScroll = __decorate([\n NotifyPropertyChanges\n ], VScroll);\n return VScroll;\n}(Component));\nexport { VScroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, EventHandler, Property, Event } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, isVisible, closest, attributes, detach, classList, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { selectAll, setStyleAttribute as setStyle, select } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, getUniqueID, formatUnit, Collection, compile as templateCompiler } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, Browser, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { calculatePosition } from '@syncfusion/ej2-popups';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_ITEMS = 'e-toolbar-items';\nvar CLS_ITEM = 'e-toolbar-item';\nvar CLS_RTL = 'e-rtl';\nvar CLS_SEPARATOR = 'e-separator';\nvar CLS_POPUPICON = 'e-popup-up-icon';\nvar CLS_POPUPDOWN = 'e-popup-down-icon';\nvar CLS_POPUPOPEN = 'e-popup-open';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_POPUPTEXT = 'e-toolbar-text';\nvar CLS_TBARTEXT = 'e-popup-text';\nvar CLS_TBAROVERFLOW = 'e-overflow-show';\nvar CLS_POPOVERFLOW = 'e-overflow-hide';\nvar CLS_TBARBTN = 'e-tbar-btn';\nvar CLS_TBARNAV = 'e-hor-nav';\nvar CLS_TBARSCRLNAV = 'e-scroll-nav';\nvar CLS_TBARRIGHT = 'e-toolbar-right';\nvar CLS_TBARLEFT = 'e-toolbar-left';\nvar CLS_TBARCENTER = 'e-toolbar-center';\nvar CLS_TBARPOS = 'e-tbar-pos';\nvar CLS_HSCROLLCNT = 'e-hscroll-content';\nvar CLS_VSCROLLCNT = 'e-vscroll-content';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_POPUPNAV = 'e-hor-nav';\nvar CLS_POPUPCLASS = 'e-toolbar-pop';\nvar CLS_POPUP = 'e-toolbar-popup';\nvar CLS_TBARBTNTEXT = 'e-tbar-btn-text';\nvar CLS_TBARNAVACT = 'e-nav-active';\nvar CLS_TBARIGNORE = 'e-ignore';\nvar CLS_POPPRI = 'e-popup-alone';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_MULTIROW = 'e-toolbar-multirow';\nvar CLS_MULTIROWPOS = 'e-multirow-pos';\nvar CLS_MULTIROW_SEPARATOR = 'e-multirow-separator';\nvar CLS_EXTENDABLE_SEPARATOR = 'e-extended-separator';\nvar CLS_EXTEANDABLE_TOOLBAR = 'e-extended-toolbar';\nvar CLS_EXTENDABLECLASS = 'e-toolbar-extended';\nvar CLS_EXTENDPOPUP = 'e-expended-nav';\nvar CLS_EXTENDEDPOPOPEN = 'e-tbar-extended';\n/**\n * An item object that is used to configure Toolbar commands.\n */\nvar Item = /** @class */ (function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], Item.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property(true)\n ], Item.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], Item.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], Item.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], Item.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], Item.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], Item.prototype, \"align\", void 0);\n __decorate([\n Event()\n ], Item.prototype, \"click\", void 0);\n __decorate([\n Property(-1)\n ], Item.prototype, \"tabIndex\", void 0);\n return Item;\n}(ChildProperty));\nexport { Item };\n/**\n * The Toolbar control contains a group of commands that are aligned horizontally.\n * ```html\n *
    \n * \n * ```\n */\nvar Toolbar = /** @class */ (function (_super) {\n __extends(Toolbar, _super);\n /**\n * Initializes a new instance of the Toolbar class.\n *\n * @param {ToolbarModel} options - Specifies Toolbar model properties as options.\n * @param { string | HTMLElement} element - Specifies the element that is rendered as a Toolbar.\n */\n function Toolbar(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.resizeContext = _this.resize.bind(_this);\n _this.orientationChangeContext = _this.orientationChange.bind(_this);\n /**\n * Contains the keyboard configuration of the Toolbar.\n */\n _this.keyConfigs = {\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n popupOpen: 'enter',\n popupClose: 'escape',\n tab: 'tab',\n home: 'home',\n end: 'end'\n };\n return _this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}.\n */\n Toolbar.prototype.destroy = function () {\n var _this = this;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n var btnItems = this.element.querySelectorAll('.e-control.e-btn');\n [].slice.call(btnItems).forEach(function (el) {\n if (!isNOU(el) && !isNOU(el.ej2_instances) && !isNOU(el.ej2_instances[0]) && !(el.ej2_instances[0].isDestroyed)) {\n el.ej2_instances[0].destroy();\n }\n });\n this.unwireEvents();\n this.tempId.forEach(function (ele) {\n if (!isNOU(_this.element.querySelector(ele))) {\n document.body.appendChild(_this.element.querySelector(ele)).style.display = 'none';\n }\n });\n this.destroyItems();\n while (this.element.lastElementChild) {\n this.element.removeChild(this.element.lastElementChild);\n }\n if (this.trgtEle) {\n this.element.appendChild(this.ctrlTem);\n this.trgtEle = null;\n this.ctrlTem = null;\n }\n if (this.popObj) {\n this.popObj.destroy();\n detach(this.popObj.element);\n }\n if (this.activeEle) {\n this.activeEle = null;\n }\n this.popObj = null;\n this.tbarAlign = null;\n this.tbarItemsCol = [];\n this.remove(this.element, 'e-toolpop');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(' '));\n }\n this.element.removeAttribute('style');\n ['aria-disabled', 'aria-orientation', 'role'].forEach(function (attrb) {\n return _this.element.removeAttribute(attrb);\n });\n _super.prototype.destroy.call(this);\n };\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.preRender = function () {\n var eventArgs = { enableCollision: this.enableCollision, scrollStep: this.scrollStep };\n this.trigger('beforeCreate', eventArgs);\n this.enableCollision = eventArgs.enableCollision;\n this.scrollStep = eventArgs.scrollStep;\n this.scrollModule = null;\n this.popObj = null;\n this.tempId = [];\n this.tbarItemsCol = this.items;\n this.isVertical = this.element.classList.contains(CLS_VERTICAL) ? true : false;\n this.isExtendedOpen = false;\n this.popupPriCount = 0;\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL);\n }\n };\n Toolbar.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n window.addEventListener('resize', this.resizeContext);\n window.addEventListener('orientationchange', this.orientationChangeContext);\n if (this.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n };\n Toolbar.prototype.wireKeyboardEvent = function () {\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs\n });\n EventHandler.add(this.element, 'keydown', this.docKeyDown, this);\n this.updateTabIndex('0');\n };\n Toolbar.prototype.updateTabIndex = function (tabIndex) {\n var ele = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n if (!isNOU(ele) && !isNOU(ele.firstElementChild)) {\n var dataTabIndex = ele.firstElementChild.getAttribute('data-tabindex');\n if (dataTabIndex && dataTabIndex === '-1' && ele.firstElementChild.tagName !== 'INPUT') {\n ele.firstElementChild.setAttribute('tabindex', tabIndex);\n }\n }\n };\n Toolbar.prototype.unwireKeyboardEvent = function () {\n if (this.keyModule) {\n EventHandler.remove(this.element, 'keydown', this.docKeyDown);\n this.keyModule.destroy();\n this.keyModule = null;\n }\n };\n Toolbar.prototype.docKeyDown = function (e) {\n if (e.target.tagName === 'INPUT') {\n return;\n }\n var popCheck = !isNOU(this.popObj) && isVisible(this.popObj.element) && this.overflowMode !== 'Extended';\n if (e.keyCode === 9 && e.target.classList.contains('e-hor-nav') === true && popCheck) {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n var keyCheck = (e.keyCode === 40 || e.keyCode === 38 || e.keyCode === 35 || e.keyCode === 36);\n if (keyCheck) {\n e.preventDefault();\n }\n };\n Toolbar.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n this.destroyScroll();\n this.unwireKeyboardEvent();\n window.removeEventListener('resize', this.resizeContext);\n window.removeEventListener('orientationchange', this.orientationChangeContext);\n EventHandler.remove(document, 'scroll', this.docEvent);\n EventHandler.remove(document, 'click', this.docEvent);\n };\n Toolbar.prototype.clearProperty = function () {\n this.tbarEle = [];\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n };\n Toolbar.prototype.docEvent = function (e) {\n var popEle = closest(e.target, '.e-popup');\n if (this.popObj && isVisible(this.popObj.element) && !popEle && this.overflowMode === 'Popup') {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n };\n Toolbar.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n if (this.tbarAlign) {\n this.add(this.scrollModule.element, CLS_TBARPOS);\n }\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Toolbar.prototype.destroyItems = function () {\n if (this.element) {\n [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM)).forEach(function (el) { detach(el); });\n }\n if (this.tbarAlign) {\n var tbarItems = this.element.querySelector('.' + CLS_ITEMS);\n [].slice.call(tbarItems.children).forEach(function (el) {\n detach(el);\n });\n this.tbarAlign = false;\n this.remove(tbarItems, CLS_TBARPOS);\n }\n this.clearProperty();\n };\n Toolbar.prototype.destroyMode = function () {\n if (this.scrollModule) {\n this.remove(this.scrollModule.element, CLS_RTL);\n this.destroyScroll();\n }\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n this.remove(this.element, CLS_EXTEANDABLE_TOOLBAR);\n var tempEle = this.element.querySelector('.e-toolbar-multirow');\n if (tempEle) {\n this.remove(tempEle, CLS_MULTIROW);\n }\n if (this.popObj) {\n this.popupRefresh(this.popObj.element, true);\n }\n };\n Toolbar.prototype.add = function (ele, val) {\n ele.classList.add(val);\n };\n Toolbar.prototype.remove = function (ele, val) {\n ele.classList.remove(val);\n };\n Toolbar.prototype.elementFocus = function (ele) {\n var fChild = ele.firstElementChild;\n if (fChild) {\n fChild.focus();\n this.activeEleSwitch(ele);\n }\n else {\n ele.focus();\n }\n };\n Toolbar.prototype.clstElement = function (tbrNavChk, trgt) {\n var clst;\n if (tbrNavChk && this.popObj && isVisible(this.popObj.element)) {\n clst = this.popObj.element.querySelector('.' + CLS_ITEM);\n }\n else if (this.element === trgt || tbrNavChk) {\n clst = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n }\n else {\n clst = closest(trgt, '.' + CLS_ITEM);\n }\n return clst;\n };\n Toolbar.prototype.keyHandling = function (clst, e, trgt, navChk, scrollChk) {\n var popObj = this.popObj;\n var rootEle = this.element;\n var popAnimate = { name: 'FadeOut', duration: 100 };\n var value = e.action === 'moveUp' ? 'previous' : 'next';\n var ele;\n var nodes;\n switch (e.action) {\n case 'moveRight':\n if (this.isVertical) {\n return;\n }\n if (rootEle === trgt) {\n this.elementFocus(clst);\n }\n else if (!navChk) {\n this.eleFocus(clst, 'next');\n }\n break;\n case 'moveLeft':\n if (this.isVertical) {\n return;\n }\n if (!navChk) {\n this.eleFocus(clst, 'previous');\n }\n break;\n case 'home':\n case 'end':\n if (clst) {\n var popupCheck = closest(clst, '.e-popup');\n var extendedPopup = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && extendedPopup && extendedPopup.classList.contains('e-popup-open')) {\n popupCheck = e.action === 'end' ? extendedPopup : null;\n }\n if (popupCheck) {\n if (isVisible(this.popObj.element)) {\n nodes = [].slice.call(popupCheck.children);\n if (e.action === 'home') {\n ele = this.focusFirstVisibleEle(nodes);\n }\n else {\n ele = this.focusLastVisibleEle(nodes);\n }\n }\n }\n else {\n nodes = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')');\n if (e.action === 'home') {\n ele = this.focusFirstVisibleEle(nodes);\n }\n else {\n ele = this.focusLastVisibleEle(nodes);\n }\n }\n if (ele) {\n this.elementFocus(ele);\n }\n }\n break;\n case 'moveUp':\n case 'moveDown':\n if (!this.isVertical) {\n if (popObj && closest(trgt, '.e-popup')) {\n var popEle = popObj.element;\n var popFrstEle = popEle.firstElementChild;\n if ((value === 'previous' && popFrstEle === clst)) {\n popEle.lastElementChild.firstChild.focus();\n }\n else if (value === 'next' && popEle.lastElementChild === clst) {\n popFrstEle.firstChild.focus();\n }\n else {\n this.eleFocus(clst, value);\n }\n }\n else if (e.action === 'moveDown' && popObj && isVisible(popObj.element)) {\n this.elementFocus(clst);\n }\n }\n else {\n if (e.action === 'moveUp') {\n this.eleFocus(clst, 'previous');\n }\n else {\n this.eleFocus(clst, 'next');\n }\n }\n break;\n case 'tab':\n if (!scrollChk && !navChk) {\n var ele_1 = clst.firstElementChild;\n if (rootEle === trgt) {\n if (this.activeEle) {\n this.activeEle.focus();\n }\n else {\n this.activeEleRemove(ele_1);\n ele_1.focus();\n }\n }\n }\n break;\n case 'popupClose':\n if (popObj && this.overflowMode !== 'Extended') {\n popObj.hide(popAnimate);\n }\n break;\n case 'popupOpen':\n if (!navChk) {\n return;\n }\n if (popObj && !isVisible(popObj.element)) {\n popObj.element.style.top = rootEle.offsetHeight + 'px';\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n else {\n popObj.hide(popAnimate);\n }\n break;\n }\n };\n Toolbar.prototype.keyActionHandler = function (e) {\n var trgt = e.target;\n if (trgt.tagName === 'INPUT' || trgt.tagName === 'TEXTAREA' || this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n e.preventDefault();\n var tbrNavChk = trgt.classList.contains(CLS_TBARNAV);\n var tbarScrollChk = trgt.classList.contains(CLS_TBARSCRLNAV);\n var clst = this.clstElement(tbrNavChk, trgt);\n if (clst || tbarScrollChk) {\n this.keyHandling(clst, e, trgt, tbrNavChk, tbarScrollChk);\n }\n };\n /**\n * Specifies the value to disable/enable the Toolbar component.\n * When set to `true`, the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, Toolbar will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n Toolbar.prototype.disable = function (value) {\n var rootEle = this.element;\n if (value) {\n rootEle.classList.add(CLS_DISABLE);\n }\n else {\n rootEle.classList.remove(CLS_DISABLE);\n }\n if (this.activeEle) {\n this.activeEle.setAttribute('tabindex', this.activeEle.getAttribute('data-tabindex'));\n }\n if (this.scrollModule) {\n this.scrollModule.disable(value);\n }\n if (this.popObj) {\n if (isVisible(this.popObj.element) && this.overflowMode !== 'Extended') {\n this.popObj.hide();\n }\n rootEle.querySelector('#' + rootEle.id + '_nav').setAttribute('tabindex', !value ? '0' : '-1');\n }\n };\n Toolbar.prototype.eleContains = function (el) {\n return el.classList.contains(CLS_SEPARATOR) || el.classList.contains(CLS_DISABLE) || el.getAttribute('disabled') || el.classList.contains(CLS_HIDDEN) || !isVisible(el) || !el.classList.contains(CLS_ITEM);\n };\n Toolbar.prototype.focusFirstVisibleEle = function (nodes) {\n var element;\n var index = 0;\n while (index < nodes.length) {\n var ele = nodes[parseInt(index.toString(), 10)];\n if (!ele.classList.contains(CLS_HIDDEN) && !ele.classList.contains(CLS_DISABLE)) {\n return ele;\n }\n index++;\n }\n return element;\n };\n Toolbar.prototype.focusLastVisibleEle = function (nodes) {\n var element;\n var index = nodes.length - 1;\n while (index >= 0) {\n var ele = nodes[parseInt(index.toString(), 10)];\n if (!ele.classList.contains(CLS_HIDDEN) && !ele.classList.contains(CLS_DISABLE)) {\n return ele;\n }\n index--;\n }\n return element;\n };\n Toolbar.prototype.eleFocus = function (closest, pos) {\n var sib = Object(closest)[pos + 'ElementSibling'];\n if (sib) {\n var skipEle = this.eleContains(sib);\n if (skipEle) {\n this.eleFocus(sib, pos);\n return;\n }\n this.elementFocus(sib);\n }\n else if (this.tbarAlign) {\n var elem = Object(closest.parentElement)[pos + 'ElementSibling'];\n if (!isNOU(elem) && elem.children.length === 0) {\n elem = Object(elem)[pos + 'ElementSibling'];\n }\n if (!isNOU(elem) && elem.children.length > 0) {\n if (pos === 'next') {\n var el = elem.querySelector('.' + CLS_ITEM);\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n el.firstElementChild.focus();\n this.activeEleSwitch(el);\n }\n }\n else {\n var el = elem.lastElementChild;\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n this.elementFocus(el);\n }\n }\n }\n }\n else if (!isNOU(closest)) {\n var tbrItems = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')' + ':not(.' + CLS_DISABLE + ')' + ':not(.' + CLS_HIDDEN + ')');\n if (pos === 'next' && tbrItems) {\n this.elementFocus(tbrItems[0]);\n }\n else if (pos === 'previous' && tbrItems) {\n this.elementFocus(tbrItems[tbrItems.length - 1]);\n }\n }\n };\n Toolbar.prototype.clickHandler = function (e) {\n var _this = this;\n var trgt = e.target;\n var ele = this.element;\n var isPopupElement = !isNOU(closest(trgt, '.' + CLS_POPUPCLASS));\n var clsList = trgt.classList;\n var popupNav = closest(trgt, ('.' + CLS_TBARNAV));\n if (!popupNav) {\n popupNav = trgt;\n }\n if (!ele.children[0].classList.contains('e-hscroll') && !ele.children[0].classList.contains('e-vscroll')\n && (clsList.contains(CLS_TBARNAV))) {\n clsList = trgt.querySelector('.e-icons').classList;\n }\n if (clsList.contains(CLS_POPUPICON) || clsList.contains(CLS_POPUPDOWN)) {\n this.popupClickHandler(ele, popupNav, CLS_RTL);\n }\n var itemObj;\n var clst = closest(e.target, '.' + CLS_ITEM);\n if ((isNOU(clst) || clst.classList.contains(CLS_DISABLE)) && !popupNav.classList.contains(CLS_TBARNAV)) {\n return;\n }\n if (clst) {\n var tempItem = this.items[this.tbarEle.indexOf(clst)];\n itemObj = tempItem;\n }\n var eventArgs = { originalEvent: e, item: itemObj };\n if (itemObj && !isNOU(itemObj.click)) {\n this.trigger('items[' + this.tbarEle.indexOf(clst) + '].click', eventArgs);\n }\n if (!eventArgs.cancel) {\n this.trigger('clicked', eventArgs, function (clickedArgs) {\n if (!isNOU(_this.popObj) && isPopupElement && !clickedArgs.cancel && _this.overflowMode === 'Popup' &&\n clickedArgs.item && clickedArgs.item.type !== 'Input') {\n _this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n });\n }\n };\n Toolbar.prototype.popupClickHandler = function (ele, popupNav, CLS_RTL) {\n var popObj = this.popObj;\n if (isVisible(popObj.element)) {\n popupNav.classList.remove(CLS_TBARNAVACT);\n popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n else {\n if (ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = true;\n popObj.position = { X: 'left', Y: 'top' };\n }\n if (popObj.offsetX === 0 && !ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = false;\n popObj.position = { X: 'right', Y: 'top' };\n }\n popObj.dataBind();\n popObj.refreshPosition();\n popObj.element.style.top = this.getElementOffsetY() + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '0px';\n }\n popupNav.classList.add(CLS_TBARNAVACT);\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.render = function () {\n this.initialize();\n this.renderControl();\n this.wireEvents();\n this.renderComplete();\n };\n Toolbar.prototype.initialize = function () {\n var width = formatUnit(this.width);\n var height = formatUnit(this.height);\n if (Browser.info.name !== 'msie' || this.height !== 'auto' || this.overflowMode === 'MultiRow') {\n setStyle(this.element, { 'height': height });\n }\n setStyle(this.element, { 'width': width });\n var ariaAttr = {\n 'role': 'toolbar', 'aria-disabled': 'false',\n 'aria-orientation': !this.isVertical ? 'horizontal' : 'vertical'\n };\n attributes(this.element, ariaAttr);\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n Toolbar.prototype.renderControl = function () {\n var ele = this.element;\n this.trgtEle = (ele.children.length > 0) ? ele.querySelector('div') : null;\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n this.renderItems();\n this.renderLayout();\n };\n Toolbar.prototype.renderLayout = function () {\n this.renderOverflowMode();\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.popObj.element.childElementCount > 1 && this.checkPopupRefresh(this.element, this.popObj.element)) {\n this.popupRefresh(this.popObj.element, false);\n }\n this.separator();\n };\n Toolbar.prototype.itemsAlign = function (items, itemEleDom) {\n var innerItem;\n var innerPos;\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n for (var i = 0; i < items.length; i++) {\n innerItem = this.renderSubComponent(items[parseInt(i.toString(), 10)], i);\n if (this.tbarEle.indexOf(innerItem) === -1) {\n this.tbarEle.push(innerItem);\n }\n if (!this.tbarAlign) {\n this.tbarItemAlign(items[parseInt(i.toString(), 10)], itemEleDom, i);\n }\n innerPos = itemEleDom.querySelector('.e-toolbar-' + items[parseInt(i.toString(), 10)].align.toLowerCase());\n if (innerPos) {\n if (!(items[parseInt(i.toString(), 10)].showAlwaysInPopup && items[parseInt(i.toString(), 10)].overflow !== 'Show')) {\n this.tbarAlgEle[(items[parseInt(i.toString(), 10)].align + 's').toLowerCase()].push(innerItem);\n }\n innerPos.appendChild(innerItem);\n }\n else {\n itemEleDom.appendChild(innerItem);\n }\n }\n if (this.isReact) {\n var portals = 'portals';\n this.notify('render-react-toolbar-template', this[\"\" + portals]);\n this.renderReactTemplates();\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Toolbar.prototype.changeOrientation = function () {\n var ele = this.element;\n if (this.isVertical) {\n ele.classList.remove(CLS_VERTICAL);\n this.isVertical = false;\n if (this.height === 'auto' || this.height === '100%') {\n ele.style.height = this.height;\n }\n ele.setAttribute('aria-orientation', 'horizontal');\n }\n else {\n ele.classList.add(CLS_VERTICAL);\n this.isVertical = true;\n ele.setAttribute('aria-orientation', 'vertical');\n setStyle(this.element, { 'height': formatUnit(this.height), 'width': formatUnit(this.width) });\n }\n this.destroyMode();\n this.refreshOverflow();\n };\n Toolbar.prototype.initScroll = function (element, innerItems) {\n if (!this.scrollModule && this.checkOverflow(element, innerItems[0])) {\n if (this.tbarAlign) {\n this.element.querySelector('.' + CLS_ITEMS + ' .' + CLS_TBARCENTER).removeAttribute('style');\n }\n if (this.isVertical) {\n this.scrollModule = new VScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n else {\n this.scrollModule = new HScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n if (this.cssClass) {\n addClass([innerItems[0]], this.cssClass.split(' '));\n }\n this.remove(this.scrollModule.element, CLS_TBARPOS);\n setStyle(this.element, { overflow: 'hidden' });\n }\n };\n Toolbar.prototype.itemWidthCal = function (items) {\n var _this = this;\n var width = 0;\n var style;\n [].slice.call(selectAll('.' + CLS_ITEM, items)).forEach(function (el) {\n if (isVisible(el)) {\n style = window.getComputedStyle(el);\n width += _this.isVertical ? el.offsetHeight : el.offsetWidth;\n width += parseFloat(_this.isVertical ? style.marginTop : style.marginRight);\n width += parseFloat(_this.isVertical ? style.marginBottom : style.marginLeft);\n }\n });\n return width;\n };\n Toolbar.prototype.getScrollCntEle = function (innerItem) {\n var trgClass = (this.isVertical) ? '.e-vscroll-content' : '.e-hscroll-content';\n return innerItem.querySelector(trgClass);\n };\n Toolbar.prototype.checkOverflow = function (element, innerItem) {\n if (isNOU(element) || isNOU(innerItem) || !isVisible(element)) {\n return false;\n }\n var eleWidth = this.isVertical ? element.offsetHeight : element.offsetWidth;\n var itemWidth = this.isVertical ? innerItem.offsetHeight : innerItem.offsetWidth;\n if (this.tbarAlign || this.scrollModule || (eleWidth === itemWidth)) {\n itemWidth = this.itemWidthCal(this.scrollModule ? this.getScrollCntEle(innerItem) : innerItem);\n }\n var popNav = element.querySelector('.' + CLS_TBARNAV);\n var scrollNav = element.querySelector('.' + CLS_TBARSCRLNAV);\n var navEleWidth = 0;\n if (popNav) {\n navEleWidth = this.isVertical ? popNav.offsetHeight : popNav.offsetWidth;\n }\n else if (scrollNav) {\n navEleWidth = this.isVertical ? (scrollNav.offsetHeight * (2)) : (scrollNav.offsetWidth * 2);\n }\n if (itemWidth > eleWidth - navEleWidth) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * Refresh the whole Toolbar component without re-rendering.\n * - It is used to manually refresh the Toolbar overflow modes such as scrollable, popup, multi row, and extended.\n * - It will refresh the Toolbar component after loading items dynamically.\n *\n * @returns {void}.\n */\n Toolbar.prototype.refreshOverflow = function () {\n this.resize();\n };\n Toolbar.prototype.toolbarAlign = function (innerItems) {\n if (this.tbarAlign) {\n this.add(innerItems, CLS_TBARPOS);\n this.itemPositioning();\n }\n };\n Toolbar.prototype.renderOverflowMode = function () {\n var ele = this.element;\n var innerItems = ele.querySelector('.' + CLS_ITEMS);\n var priorityCheck = this.popupPriCount > 0;\n if (ele && ele.children.length > 0) {\n this.offsetWid = ele.offsetWidth;\n this.remove(this.element, 'e-toolpop');\n if (Browser.info.name === 'msie' && this.height === 'auto') {\n ele.style.height = '';\n }\n switch (this.overflowMode) {\n case 'Scrollable':\n if (isNOU(this.scrollModule)) {\n this.initScroll(ele, [].slice.call(ele.getElementsByClassName(CLS_ITEMS)));\n }\n break;\n case 'Popup':\n this.add(this.element, 'e-toolpop');\n if (this.tbarAlign) {\n this.removePositioning();\n }\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n break;\n case 'MultiRow':\n this.add(innerItems, CLS_MULTIROW);\n if (this.checkOverflow(ele, innerItems) && this.tbarAlign) {\n this.removePositioning();\n this.add(innerItems, CLS_MULTIROWPOS);\n }\n if (ele.style.overflow === 'hidden') {\n ele.style.overflow = '';\n }\n if (Browser.info.name === 'msie' || ele.style.height !== 'auto') {\n ele.style.height = 'auto';\n }\n break;\n case 'Extended':\n this.add(this.element, CLS_EXTEANDABLE_TOOLBAR);\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n }\n }\n };\n Toolbar.prototype.setOverflowAttributes = function (ele) {\n this.createPopupEle(ele, [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, ele)));\n var ariaAttr = {\n 'tabindex': '0', 'role': 'button', 'aria-haspopup': 'true',\n 'aria-label': 'overflow'\n };\n attributes(this.element.querySelector('.' + CLS_TBARNAV), ariaAttr);\n };\n Toolbar.prototype.separator = function () {\n var element = this.element;\n var eleItem = [].slice.call(element.querySelectorAll('.' + CLS_SEPARATOR));\n var multiVar = element.querySelector('.' + CLS_MULTIROW_SEPARATOR);\n var extendVar = element.querySelector('.' + CLS_EXTENDABLE_SEPARATOR);\n var eleInlineItem = this.overflowMode === 'MultiRow' ? multiVar : extendVar;\n if (eleInlineItem !== null) {\n if (this.overflowMode === 'MultiRow') {\n eleInlineItem.classList.remove(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleInlineItem.classList.remove(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n for (var i = 0; i <= eleItem.length - 1; i++) {\n if (eleItem[parseInt(i.toString(), 10)].offsetLeft < 30 && eleItem[parseInt(i.toString(), 10)].offsetLeft !== 0) {\n if (this.overflowMode === 'MultiRow') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n }\n };\n Toolbar.prototype.createPopupEle = function (ele, innerEle) {\n var innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var vertical = this.isVertical;\n if (!innerNav) {\n this.createPopupIcon(ele);\n }\n innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var innerNavDom = (vertical ? innerNav.offsetHeight : innerNav.offsetWidth);\n var eleWidth = ((vertical ? ele.offsetHeight : ele.offsetWidth) - (innerNavDom));\n this.element.classList.remove('e-rtl');\n setStyle(this.element, { direction: 'initial' });\n this.checkPriority(ele, innerEle, eleWidth, true);\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n this.element.style.removeProperty('direction');\n this.createPopup();\n };\n Toolbar.prototype.pushingPoppedEle = function (tbarObj, popupPri, ele, eleHeight, sepHeight) {\n var element = tbarObj.element;\n var poppedEle = [].slice.call(selectAll('.' + CLS_POPUP, element.querySelector('.' + CLS_ITEMS)));\n var nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n var nodeIndex = 0;\n var nodePri = 0;\n poppedEle.forEach(function (el, index) {\n nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n if (el.classList.contains(CLS_TBAROVERFLOW) && nodes.length > 0) {\n if (tbarObj.tbResize && nodes.length > index) {\n ele.insertBefore(el, nodes[parseInt(index.toString(), 10)]);\n ++nodePri;\n }\n else {\n ele.insertBefore(el, ele.children[nodes.length]);\n ++nodePri;\n }\n }\n else if (el.classList.contains(CLS_TBAROVERFLOW)) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (tbarObj.tbResize && el.classList.contains(CLS_POPOVERFLOW) && ele.children.length > 0 && nodes.length === 0) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (el.classList.contains(CLS_POPOVERFLOW)) {\n popupPri.push(el);\n }\n else if (tbarObj.tbResize) {\n ele.insertBefore(el, ele.childNodes[nodeIndex + nodePri]);\n ++nodeIndex;\n }\n else {\n ele.appendChild(el);\n }\n if (el.classList.contains(CLS_SEPARATOR)) {\n setStyle(el, { display: '', height: sepHeight + 'px' });\n }\n else {\n setStyle(el, { display: '', height: eleHeight + 'px' });\n }\n });\n popupPri.forEach(function (el) {\n ele.appendChild(el);\n });\n var tbarEle = selectAll('.' + CLS_ITEM, element.querySelector('.' + CLS_ITEMS));\n for (var i = tbarEle.length - 1; i >= 0; i--) {\n var tbarElement = tbarEle[parseInt(i.toString(), 10)];\n if (tbarElement.classList.contains(CLS_SEPARATOR) && this.overflowMode !== 'Extended') {\n setStyle(tbarElement, { display: 'none' });\n }\n else {\n break;\n }\n }\n };\n Toolbar.prototype.createPopup = function () {\n var element = this.element;\n var sepHeight;\n var sepItem;\n if (this.overflowMode === 'Extended') {\n sepItem = element.querySelector('.' + CLS_SEPARATOR);\n sepHeight =\n (element.style.height === 'auto' || element.style.height === '') ? null : (sepItem && sepItem.offsetHeight);\n }\n var eleItem = element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_POPUP + ')');\n var eleHeight = (element.style.height === 'auto' || element.style.height === '') ? null : (eleItem && eleItem.offsetHeight);\n var ele;\n var popupPri = [];\n if (select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element)) {\n ele = select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element);\n }\n else {\n var extendEle = this.createElement('div', {\n id: element.id + '_popup', className: CLS_POPUPCLASS + ' ' + CLS_EXTENDABLECLASS\n });\n var popupEle = this.createElement('div', { id: element.id + '_popup', className: CLS_POPUPCLASS });\n ele = this.overflowMode === 'Extended' ? extendEle : popupEle;\n }\n this.pushingPoppedEle(this, popupPri, ele, eleHeight, sepHeight);\n this.popupInit(element, ele);\n };\n Toolbar.prototype.getElementOffsetY = function () {\n return (this.overflowMode === 'Extended' && window.getComputedStyle(this.element).getPropertyValue('box-sizing') === 'border-box' ?\n this.element.clientHeight : this.element.offsetHeight);\n };\n Toolbar.prototype.popupInit = function (element, ele) {\n if (!this.popObj) {\n element.appendChild(ele);\n if (this.cssClass) {\n addClass([ele], this.cssClass.split(' '));\n }\n setStyle(this.element, { overflow: '' });\n var eleStyles = window.getComputedStyle(this.element);\n var popup = new Popup(null, {\n relateTo: this.element,\n offsetY: (this.isVertical) ? 0 : this.getElementOffsetY(),\n enableRtl: this.enableRtl,\n open: this.popupOpen.bind(this),\n close: this.popupClose.bind(this),\n collision: { Y: this.enableCollision ? 'flip' : 'none' },\n position: this.enableRtl ? { X: 'left', Y: 'top' } : { X: 'right', Y: 'top' }\n });\n if (this.overflowMode === 'Extended') {\n popup.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n popup.offsetX = 0;\n }\n popup.appendTo(ele);\n EventHandler.add(document, 'scroll', this.docEvent.bind(this));\n EventHandler.add(document, 'click ', this.docEvent.bind(this));\n popup.element.style.maxHeight = popup.element.offsetHeight + 'px';\n if (this.isVertical) {\n popup.element.style.visibility = 'hidden';\n }\n if (this.isExtendedOpen) {\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popupNav.firstElementChild, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.element.querySelector('.' + CLS_EXTENDABLECLASS).classList.add(CLS_POPUPOPEN);\n }\n else {\n popup.hide();\n }\n this.popObj = popup;\n }\n else {\n var popupEle = this.popObj.element;\n setStyle(popupEle, { maxHeight: '', display: 'block' });\n setStyle(popupEle, { maxHeight: popupEle.offsetHeight + 'px', display: '' });\n }\n };\n Toolbar.prototype.tbarPopupHandler = function (isOpen) {\n if (this.overflowMode === 'Extended') {\n if (isOpen) {\n this.add(this.element, CLS_EXTENDEDPOPOPEN);\n }\n else {\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupOpen = function (e) {\n var popObj = this.popObj;\n if (!this.isVertical) {\n popObj.offsetY = this.getElementOffsetY();\n popObj.dataBind();\n }\n var popupEle = this.popObj.element;\n var toolEle = this.popObj.element.parentElement;\n var popupNav = toolEle.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'true');\n setStyle(popObj.element, { height: 'auto', maxHeight: '' });\n popObj.element.style.maxHeight = popObj.element.offsetHeight + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '';\n }\n var popupElePos = popupEle.offsetTop + popupEle.offsetHeight + calculatePosition(toolEle).top;\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.tbarPopupHandler(true);\n var scrollVal = isNOU(window.scrollY) ? 0 : window.scrollY;\n if (!this.isVertical && ((window.innerHeight + scrollVal) < popupElePos) && (this.element.offsetTop < popupEle.offsetHeight)) {\n var overflowHeight = (popupEle.offsetHeight - ((popupElePos - window.innerHeight - scrollVal) + 5));\n popObj.height = overflowHeight + 'px';\n for (var i = 0; i <= popupEle.childElementCount; i++) {\n var ele = popupEle.children[parseInt(i.toString(), 10)];\n if (ele.offsetTop + ele.offsetHeight > overflowHeight) {\n overflowHeight = ele.offsetTop;\n break;\n }\n }\n setStyle(popObj.element, { maxHeight: overflowHeight + 'px' });\n }\n else if (this.isVertical) {\n var tbEleData = this.element.getBoundingClientRect();\n setStyle(popObj.element, { maxHeight: (tbEleData.top + this.element.offsetHeight) + 'px', bottom: 0, visibility: '' });\n }\n if (popObj) {\n var popupOffset = popupEle.getBoundingClientRect();\n if (popupOffset.right > document.documentElement.clientWidth && popupOffset.width > toolEle.getBoundingClientRect().width) {\n popObj.collision = { Y: 'none' };\n popObj.dataBind();\n }\n popObj.refreshPosition();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupClose = function (e) {\n var element = this.element;\n var popupNav = element.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'false');\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.remove(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPDOWN], [CLS_POPUPICON]);\n this.tbarPopupHandler(false);\n };\n Toolbar.prototype.checkPriority = function (ele, inEle, eleWidth, pre) {\n var popPriority = this.popupPriCount > 0;\n var len = inEle.length;\n var eleWid = eleWidth;\n var eleOffset;\n var checkoffset;\n var sepCheck = 0;\n var itemCount = 0;\n var itemPopCount = 0;\n var checkClass = function (ele, val) {\n var rVal = false;\n val.forEach(function (cls) {\n if (ele.classList.contains(cls)) {\n rVal = true;\n }\n });\n return rVal;\n };\n for (var i = len - 1; i >= 0; i--) {\n var mrgn = void 0;\n var compuStyle = window.getComputedStyle(inEle[parseInt(i.toString(), 10)]);\n if (this.isVertical) {\n mrgn = parseFloat((compuStyle).marginTop);\n mrgn += parseFloat((compuStyle).marginBottom);\n }\n else {\n mrgn = parseFloat((compuStyle).marginRight);\n mrgn += parseFloat((compuStyle).marginLeft);\n }\n var fstEleCheck = inEle[parseInt(i.toString(), 10)] === this.tbarEle[0];\n if (fstEleCheck) {\n this.tbarEleMrgn = mrgn;\n }\n eleOffset = this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight : inEle[parseInt(i.toString(), 10)].offsetWidth;\n var eleWid_1 = fstEleCheck ? (eleOffset + mrgn) : eleOffset;\n if (checkClass(inEle[parseInt(i.toString(), 10)], [CLS_POPPRI]) && popPriority) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n if (this.isVertical) {\n checkoffset =\n (inEle[parseInt(i.toString(), 10)].offsetTop + inEle[parseInt(i.toString(), 10)].offsetHeight + mrgn) > eleWidth;\n }\n else {\n checkoffset =\n (inEle[parseInt(i.toString(), 10)].offsetLeft + inEle[parseInt(i.toString(), 10)].offsetWidth + mrgn) > eleWidth;\n }\n if (checkoffset) {\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_SEPARATOR)) {\n if (this.overflowMode === 'Extended') {\n var sepEle = inEle[parseInt(i.toString(), 10)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n itemPopCount++;\n }\n itemCount++;\n }\n else if (this.overflowMode === 'Popup') {\n if (sepCheck > 0 && itemCount === itemPopCount) {\n var sepEle = inEle[i + itemCount + (sepCheck - 1)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n setStyle(sepEle, { display: 'none' });\n }\n }\n sepCheck++;\n itemCount = 0;\n itemPopCount = 0;\n }\n }\n else {\n itemCount++;\n }\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_TBAROVERFLOW) && pre) {\n eleWidth -= ((this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight :\n inEle[parseInt(i.toString(), 10)].offsetWidth) + (mrgn));\n }\n else if (!checkClass(inEle[parseInt(i.toString(), 10)], [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n else {\n eleWidth -= ((this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight :\n inEle[parseInt(i.toString(), 10)].offsetWidth) + (mrgn));\n }\n }\n }\n if (pre) {\n var popedEle = selectAll('.' + CLS_ITEM + ':not(.' + CLS_POPUP + ')', this.element);\n this.checkPriority(ele, popedEle, eleWid, false);\n }\n };\n Toolbar.prototype.createPopupIcon = function (element) {\n var id = element.id.concat('_nav');\n var className = 'e-' + element.id.concat('_nav ' + CLS_POPUPNAV);\n className = this.overflowMode === 'Extended' ? className + ' ' + CLS_EXTENDPOPUP : className;\n var nav = this.createElement('div', { id: id, className: className });\n if (Browser.info.name === 'msie' || Browser.info.name === 'edge') {\n nav.classList.add('e-ie-align');\n }\n var navItem = this.createElement('div', { className: CLS_POPUPDOWN + ' e-icons' });\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n nav.setAttribute('role', 'button');\n element.appendChild(nav);\n };\n Toolbar.prototype.tbarPriRef = function (inEle, indx, sepPri, el, des, elWid, wid, ig, eleStyles) {\n var ignoreCount = ig;\n var popEle = this.popObj.element;\n var query = '.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_TBAROVERFLOW + ')';\n var priEleCnt = selectAll('.' + CLS_POPUP + ':not(.' + CLS_TBAROVERFLOW + ')', popEle).length;\n var checkClass = function (ele, val) {\n return ele.classList.contains(val);\n };\n if (selectAll(query, inEle).length === 0) {\n var eleSep = inEle.children[indx - (indx - sepPri) - 1];\n var ignoreCheck = (!isNOU(eleSep) && checkClass(eleSep, CLS_TBARIGNORE));\n if ((!isNOU(eleSep) && checkClass(eleSep, CLS_SEPARATOR) && !isVisible(eleSep)) || ignoreCheck) {\n eleSep.style.display = 'unset';\n var eleSepWidth = eleSep.offsetWidth + (parseFloat(window.getComputedStyle(eleSep).marginRight) * 2);\n var prevSep = eleSep.previousElementSibling;\n if ((elWid + eleSepWidth) < wid || des) {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n if (!isNOU(prevSep)) {\n prevSep.style.display = '';\n }\n }\n else {\n setStyle(el, eleStyles);\n if (prevSep.classList.contains(CLS_SEPARATOR)) {\n prevSep.style.display = 'none';\n }\n }\n eleSep.style.display = '';\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n }\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - priEleCnt]);\n }\n };\n Toolbar.prototype.popupRefresh = function (popupEle, destroy) {\n var _this = this;\n var ele = this.element;\n var isVer = this.isVertical;\n var innerEle = ele.querySelector('.' + CLS_ITEMS);\n var popNav = ele.querySelector('.' + CLS_TBARNAV);\n if (isNOU(popNav)) {\n return;\n }\n innerEle.removeAttribute('style');\n popupEle.style.display = 'block';\n var dimension;\n if (isVer) {\n dimension = ele.offsetHeight - (popNav.offsetHeight + innerEle.offsetHeight);\n }\n else {\n dimension = ele.offsetWidth - (popNav.offsetWidth + innerEle.offsetWidth);\n }\n var popupEleWidth = 0;\n [].slice.call(popupEle.children).forEach(function (el) {\n popupEleWidth += _this.popupEleWidth(el);\n setStyle(el, { 'position': '' });\n });\n if ((dimension + (isVer ? popNav.offsetHeight : popNav.offsetWidth)) > (popupEleWidth) && this.popupPriCount === 0) {\n destroy = true;\n }\n this.popupEleRefresh(dimension, popupEle, destroy);\n popupEle.style.display = '';\n if (popupEle.children.length === 0 && popNav && this.popObj) {\n detach(popNav);\n popNav = null;\n this.popObj.destroy();\n detach(this.popObj.element);\n this.popObj = null;\n }\n };\n Toolbar.prototype.ignoreEleFetch = function (index, innerEle) {\n var ignoreEle = [].slice.call(innerEle.querySelectorAll('.' + CLS_TBARIGNORE));\n var ignoreInx = [];\n var count = 0;\n if (ignoreEle.length > 0) {\n ignoreEle.forEach(function (ele) {\n ignoreInx.push([].slice.call(innerEle.children).indexOf(ele));\n });\n }\n else {\n return 0;\n }\n ignoreInx.forEach(function (val) {\n if (val <= index) {\n count++;\n }\n });\n return count;\n };\n Toolbar.prototype.checkPopupRefresh = function (root, popEle) {\n popEle.style.display = 'block';\n var elWid = this.popupEleWidth(popEle.firstElementChild);\n popEle.firstElementChild.style.removeProperty('Position');\n var tbarWidth = root.offsetWidth - root.querySelector('.' + CLS_TBARNAV).offsetWidth;\n var tbarItemsWid = root.querySelector('.' + CLS_ITEMS).offsetWidth;\n popEle.style.removeProperty('display');\n if (tbarWidth > (elWid + tbarItemsWid)) {\n return true;\n }\n return false;\n };\n Toolbar.prototype.popupEleWidth = function (el) {\n el.style.position = 'absolute';\n var elWidth = this.isVertical ? el.offsetHeight : el.offsetWidth;\n var btnText = el.querySelector('.' + CLS_TBARBTNTEXT);\n if (el.classList.contains('e-tbtn-align') || el.classList.contains(CLS_TBARTEXT)) {\n var btn = el.children[0];\n if (!isNOU(btnText) && el.classList.contains(CLS_TBARTEXT)) {\n btnText.style.display = 'none';\n }\n else if (!isNOU(btnText) && el.classList.contains(CLS_POPUPTEXT)) {\n btnText.style.display = 'block';\n }\n btn.style.minWidth = '0%';\n elWidth = parseFloat(!this.isVertical ? el.style.minWidth : el.style.minHeight);\n btn.style.minWidth = '';\n btn.style.minHeight = '';\n if (!isNOU(btnText)) {\n btnText.style.display = '';\n }\n }\n return elWidth;\n };\n Toolbar.prototype.popupEleRefresh = function (width, popupEle, destroy) {\n var popPriority = this.popupPriCount > 0;\n var eleSplice = this.tbarEle;\n var priEleCnt;\n var index;\n var innerEle = this.element.querySelector('.' + CLS_ITEMS);\n var ignoreCount = 0;\n var _loop_1 = function (el) {\n if (el.classList.contains(CLS_POPPRI) && popPriority && !destroy) {\n return \"continue\";\n }\n var elWidth = this_1.popupEleWidth(el);\n if (el === this_1.tbarEle[0]) {\n elWidth += this_1.tbarEleMrgn;\n }\n el.style.position = '';\n if (elWidth < width || destroy) {\n var inlineStyles = { minWidth: el.style.minWidth, height: el.style.height, minHeight: el.style.minHeight };\n setStyle(el, { minWidth: '', height: '', minHeight: '' });\n if (!el.classList.contains(CLS_POPOVERFLOW)) {\n el.classList.remove(CLS_POPUP);\n }\n index = this_1.tbarEle.indexOf(el);\n if (this_1.tbarAlign) {\n var pos = this_1.items[parseInt(index.toString(), 10)].align;\n index = this_1.tbarAlgEle[(pos + 's').toLowerCase()].indexOf(el);\n eleSplice = this_1.tbarAlgEle[(pos + 's').toLowerCase()];\n innerEle = this_1.element.querySelector('.' + CLS_ITEMS + ' .' + 'e-toolbar-' + pos.toLowerCase());\n }\n var sepBeforePri_1 = 0;\n if (this_1.overflowMode !== 'Extended') {\n eleSplice.slice(0, index).forEach(function (el) {\n if (el.classList.contains(CLS_TBAROVERFLOW) || el.classList.contains(CLS_SEPARATOR)) {\n if (el.classList.contains(CLS_SEPARATOR)) {\n el.style.display = '';\n width -= el.offsetWidth;\n }\n sepBeforePri_1++;\n }\n });\n }\n ignoreCount = this_1.ignoreEleFetch(index, innerEle);\n if (el.classList.contains(CLS_TBAROVERFLOW)) {\n this_1.tbarPriRef(innerEle, index, sepBeforePri_1, el, destroy, elWidth, width, ignoreCount, inlineStyles);\n width -= el.offsetWidth;\n }\n else if (index === 0) {\n innerEle.insertBefore(el, innerEle.firstChild);\n width -= el.offsetWidth;\n }\n else {\n priEleCnt = selectAll('.' + CLS_TBAROVERFLOW, this_1.popObj.element).length;\n innerEle.insertBefore(el, innerEle.children[(index + ignoreCount) - priEleCnt]);\n width -= el.offsetWidth;\n }\n el.style.height = '';\n }\n else {\n return \"break\";\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = [].slice.call(popupEle.children); _i < _a.length; _i++) {\n var el = _a[_i];\n var state_1 = _loop_1(el);\n if (state_1 === \"break\")\n break;\n }\n var checkOverflow = this.checkOverflow(this.element, this.element.getElementsByClassName(CLS_ITEMS)[0]);\n if (checkOverflow && !destroy) {\n this.renderOverflowMode();\n }\n };\n Toolbar.prototype.removePositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n this.remove(item, CLS_TBARPOS);\n var innerItem = [].slice.call(item.childNodes);\n innerItem[1].removeAttribute('style');\n innerItem[2].removeAttribute('style');\n };\n Toolbar.prototype.refreshPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n this.add(item, CLS_TBARPOS);\n this.itemPositioning();\n };\n Toolbar.prototype.itemPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n var margin;\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n var innerItem;\n if (this.scrollModule) {\n var trgClass = (this.isVertical) ? CLS_VSCROLLCNT : CLS_HSCROLLCNT;\n innerItem = [].slice.call(item.querySelector('.' + trgClass).children);\n }\n else {\n innerItem = [].slice.call(item.childNodes);\n }\n if (this.isVertical) {\n margin = innerItem[0].offsetHeight + innerItem[2].offsetHeight;\n }\n else {\n margin = innerItem[0].offsetWidth + innerItem[2].offsetWidth;\n }\n var tbarWid = this.isVertical ? this.element.offsetHeight : this.element.offsetWidth;\n if (popupNav) {\n tbarWid -= (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth);\n var popWid = (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth) + 'px';\n innerItem[2].removeAttribute('style');\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[2].style.top = popWid;\n }\n else {\n innerItem[2].style.bottom = popWid;\n }\n }\n else {\n if (this.enableRtl) {\n innerItem[2].style.left = popWid;\n }\n else {\n innerItem[2].style.right = popWid;\n }\n }\n }\n if (tbarWid <= margin) {\n return;\n }\n var value = (((tbarWid - margin)) - (!this.isVertical ? innerItem[1].offsetWidth : innerItem[1].offsetHeight)) / 2;\n innerItem[1].removeAttribute('style');\n var mrgn = ((!this.isVertical ? innerItem[0].offsetWidth : innerItem[0].offsetHeight) + value) + 'px';\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[1].style.marginBottom = mrgn;\n }\n else {\n innerItem[1].style.marginTop = mrgn;\n }\n }\n else {\n if (this.enableRtl) {\n innerItem[1].style.marginRight = mrgn;\n }\n else {\n innerItem[1].style.marginLeft = mrgn;\n }\n }\n };\n Toolbar.prototype.tbarItemAlign = function (item, itemEle, pos) {\n var _this = this;\n if (item.showAlwaysInPopup && item.overflow !== 'Show') {\n return;\n }\n var alignDiv = [];\n alignDiv.push(this.createElement('div', { className: CLS_TBARLEFT }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARCENTER }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARRIGHT }));\n if (pos === 0 && item.align !== 'Left') {\n alignDiv.forEach(function (ele) {\n itemEle.appendChild(ele);\n });\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n else if (item.align !== 'Left') {\n var alignEle = itemEle.childNodes;\n var leftAlign_1 = alignDiv[0];\n [].slice.call(alignEle).forEach(function (el) {\n _this.tbarAlgEle.lefts.push(el);\n leftAlign_1.appendChild(el);\n });\n itemEle.appendChild(leftAlign_1);\n itemEle.appendChild(alignDiv[1]);\n itemEle.appendChild(alignDiv[2]);\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n };\n Toolbar.prototype.ctrlTemplate = function () {\n var _this = this;\n this.ctrlTem = this.trgtEle.cloneNode(true);\n this.add(this.trgtEle, CLS_ITEMS);\n this.tbarEle = [];\n var innerEle = [].slice.call(this.trgtEle.children);\n innerEle.forEach(function (ele) {\n if (ele.tagName === 'DIV') {\n _this.tbarEle.push(ele);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n _this.add(ele, CLS_ITEM);\n }\n });\n };\n Toolbar.prototype.renderItems = function () {\n var ele = this.element;\n var items = this.items;\n if (this.trgtEle != null) {\n this.ctrlTemplate();\n }\n else if (ele && items.length > 0) {\n var itemEleDom = void 0;\n if (ele && ele.children.length > 0) {\n itemEleDom = ele.querySelector('.' + CLS_ITEMS);\n }\n if (!itemEleDom) {\n itemEleDom = this.createElement('div', { className: CLS_ITEMS });\n }\n this.itemsAlign(items, itemEleDom);\n ele.appendChild(itemEleDom);\n }\n };\n Toolbar.prototype.setAttr = function (attr, element) {\n var key = Object.keys(attr);\n var keyVal;\n for (var i = 0; i < key.length; i++) {\n keyVal = key[parseInt(i.toString(), 10)];\n if (keyVal === 'class') {\n this.add(element, attr[\"\" + keyVal]);\n }\n else {\n element.setAttribute(keyVal, attr[\"\" + keyVal]);\n }\n }\n };\n /**\n * Enables or disables the specified Toolbar item.\n *\n * @param {number|HTMLElement|NodeList} items - DOM element or an array of items to be enabled or disabled.\n * @param {boolean} isEnable - Boolean value that determines whether the command should be enabled or disabled.\n * By default, `isEnable` is set to true.\n * @returns {void}.\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n var elements = items;\n var len = elements.length;\n var ele;\n if (isNOU(isEnable)) {\n isEnable = true;\n }\n var enable = function (isEnable, ele) {\n if (isEnable) {\n ele.classList.remove(CLS_DISABLE);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n }\n else {\n ele.classList.add(CLS_DISABLE);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'true');\n }\n }\n };\n if (!isNOU(len) && len >= 1) {\n for (var a = 0, element = [].slice.call(elements); a < len; a++) {\n var itemElement = element[parseInt(a.toString(), 10)];\n if (typeof (itemElement) === 'number') {\n ele = this.getElementByIndex(itemElement);\n if (isNOU(ele)) {\n return;\n }\n else {\n elements[parseInt(a.toString(), 10)] = ele;\n }\n }\n else {\n ele = itemElement;\n }\n enable(isEnable, ele);\n }\n if (isEnable) {\n removeClass(elements, CLS_DISABLE);\n }\n else {\n addClass(elements, CLS_DISABLE);\n }\n }\n else {\n if (typeof (elements) === 'number') {\n ele = this.getElementByIndex(elements);\n if (isNOU(ele)) {\n return;\n }\n }\n else {\n ele = items;\n }\n enable(isEnable, ele);\n }\n };\n Toolbar.prototype.getElementByIndex = function (index) {\n if (this.tbarEle[parseInt(index.toString(), 10)]) {\n return this.tbarEle[parseInt(index.toString(), 10)];\n }\n return null;\n };\n /**\n * Adds new items to the Toolbar that accepts an array as Toolbar items.\n *\n * @param {ItemModel[]} items - DOM element or an array of items to be added to the Toolbar.\n * @param {number} index - Number value that determines where the command is to be added. By default, index is 0.\n * @returns {void}.\n */\n Toolbar.prototype.addItems = function (items, index) {\n var innerItems;\n this.extendedOpen();\n var itemsDiv = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(itemsDiv)) {\n this.itemsRerender(items);\n return;\n }\n var innerEle;\n var itemAgn = 'Left';\n if (isNOU(index)) {\n index = 0;\n }\n items.forEach(function (e) {\n if (!isNOU(e.align) && e.align !== 'Left' && itemAgn === 'Left') {\n itemAgn = e.align;\n }\n });\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n if (isNOU(item.type)) {\n item.type = 'Button';\n }\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n item.align = itemAgn;\n innerEle = this.renderSubComponent(item, index);\n if (this.tbarEle.length >= index && innerItems.length >= 0) {\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var algIndex = item.align[0] === 'L' ? 0 : item.align[0] === 'C' ? 1 : 2;\n var ele = void 0;\n if (!this.tbarAlign && itemAgn !== 'Left') {\n this.tbarItemAlign(item, itemsDiv, 1);\n this.tbarAlign = true;\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.appendChild(innerEle);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].push(innerEle);\n this.refreshPositioning();\n }\n else if (this.tbarAlign) {\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.insertBefore(innerEle, ele.children[parseInt(index.toString(), 10)]);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].splice(index, 0, innerEle);\n this.refreshPositioning();\n }\n else if (innerItems.length === 0) {\n innerItems = selectAll('.' + CLS_ITEMS, this.element);\n innerItems[0].appendChild(innerEle);\n }\n else {\n innerItems[0].parentNode.insertBefore(innerEle, innerItems[parseInt(index.toString(), 10)]);\n }\n this.items.splice(index, 0, item);\n if (item.template) {\n this.tbarEle.splice(this.tbarEle.length - 1, 1);\n }\n this.tbarEle.splice(index, 0, innerEle);\n index++;\n this.offsetWid = itemsDiv.offsetWidth;\n }\n }\n itemsDiv.style.width = '';\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Removes the items from the Toolbar. Acceptable arguments are index of item/HTMLElement/node list.\n *\n * @param {number|HTMLElement|NodeList|HTMLElement[]} args\n * Index or DOM element or an Array of item which is to be removed from the Toolbar.\n * @returns {void}.\n */\n Toolbar.prototype.removeItems = function (args) {\n var elements = args;\n var index;\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (typeof (elements) === 'number') {\n index = parseInt(args.toString(), 10);\n this.removeItemByIndex(index, innerItems);\n }\n else {\n if (elements && elements.length > 1) {\n for (var _i = 0, _a = [].slice.call(elements); _i < _a.length; _i++) {\n var ele = _a[_i];\n index = this.tbarEle.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n }\n }\n else {\n var ele = (elements && elements.length && elements.length === 1) ? elements[0] : args;\n index = innerItems.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n }\n }\n this.resize();\n };\n Toolbar.prototype.removeItemByIndex = function (index, innerItems) {\n if (this.tbarEle[parseInt(index.toString(), 10)] && innerItems[parseInt(index.toString(), 10)]) {\n var eleIdx = this.tbarEle.indexOf(innerItems[parseInt(index.toString(), 10)]);\n if (this.tbarAlign) {\n var indexAgn = this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].indexOf(this.tbarEle[parseInt(eleIdx.toString(), 10)]);\n this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].splice(parseInt(indexAgn.toString(), 10), 1);\n }\n if (this.isReact) {\n this.clearToolbarTemplate(innerItems[parseInt(index.toString(), 10)]);\n }\n var btnItem = innerItems[parseInt(index.toString(), 10)].querySelector('.e-control.e-btn');\n if (!isNOU(btnItem) && !isNOU(btnItem.ej2_instances[0]) && !(btnItem.ej2_instances[0].isDestroyed)) {\n btnItem.ej2_instances[0].destroy();\n }\n detach(innerItems[parseInt(index.toString(), 10)]);\n this.items.splice(eleIdx, 1);\n this.tbarEle.splice(eleIdx, 1);\n }\n };\n Toolbar.prototype.templateRender = function (templateProp, innerEle, item, index) {\n var itemType = item.type;\n var eleObj = templateProp;\n var isComponent;\n if (typeof (templateProp) === 'object') {\n isComponent = typeof (eleObj.appendTo) === 'function';\n }\n if (typeof (templateProp) === 'string' || !isComponent) {\n var templateFn = void 0;\n var val = templateProp;\n var regEx = new RegExp(/<(?=.*? .*?\\/ ?>|br|hr|input|!--|wbr)[a-z]+.*?>|<([a-z]+).*?<\\/\\1>/i);\n val = (typeof (templateProp) === 'string') ? templateProp.trim() : templateProp;\n try {\n if (typeof (templateProp) === 'object' && !isNOU(templateProp.tagName)) {\n innerEle.appendChild(templateProp);\n }\n else if (typeof (templateProp) === 'string' && regEx.test(val)) {\n innerEle.innerHTML = val;\n }\n else if (document.querySelectorAll(val).length) {\n var ele = document.querySelector(val);\n var tempStr = ele.outerHTML.trim();\n innerEle.appendChild(ele);\n ele.style.display = '';\n if (!isNOU(tempStr)) {\n this.tempId.push(val);\n }\n }\n else {\n templateFn = templateCompiler(val);\n }\n }\n catch (e) {\n templateFn = templateCompiler(val);\n }\n var tempArray = void 0;\n if (!isNOU(templateFn)) {\n var toolbarTemplateID = this.element.id + index + '_template';\n tempArray = templateFn({}, this, 'template', toolbarTemplateID, this.isStringTemplate);\n }\n if (!isNOU(tempArray) && tempArray.length > 0) {\n [].slice.call(tempArray).forEach(function (ele) {\n if (!isNOU(ele.tagName)) {\n ele.style.display = '';\n }\n innerEle.appendChild(ele);\n });\n }\n }\n else if (itemType === 'Input') {\n var ele = this.createElement('input');\n if (item.id) {\n ele.id = item.id;\n }\n else {\n ele.id = getUniqueID('tbr-ipt');\n }\n innerEle.appendChild(ele);\n eleObj.appendTo(ele);\n }\n this.add(innerEle, CLS_TEMPLATE);\n this.tbarEle.push(innerEle);\n };\n Toolbar.prototype.buttonRendering = function (item, innerEle) {\n var dom = this.createElement('button', { className: CLS_TBARBTN });\n dom.setAttribute('type', 'button');\n var textStr = item.text;\n var iconCss;\n var iconPos;\n if (item.id) {\n dom.id = item.id;\n }\n else {\n dom.id = getUniqueID('e-tbr-btn');\n }\n var btnTxt = this.createElement('span', { className: 'e-tbar-btn-text' });\n if (textStr) {\n btnTxt.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(textStr) : textStr;\n dom.appendChild(btnTxt);\n dom.classList.add('e-tbtn-txt');\n }\n else {\n this.add(innerEle, 'e-tbtn-align');\n }\n if (item.prefixIcon || item.suffixIcon) {\n if ((item.prefixIcon && item.suffixIcon) || item.prefixIcon) {\n iconCss = item.prefixIcon + ' e-icons';\n iconPos = 'Left';\n }\n else {\n iconCss = item.suffixIcon + ' e-icons';\n iconPos = 'Right';\n }\n }\n var btnObj = new Button({ iconCss: iconCss, iconPosition: iconPos });\n btnObj.createElement = this.createElement;\n btnObj.appendTo(dom);\n if (item.width) {\n setStyle(dom, { 'width': formatUnit(item.width) });\n }\n return dom;\n };\n Toolbar.prototype.renderSubComponent = function (item, index) {\n var dom;\n var innerEle = this.createElement('div', { className: CLS_ITEM });\n var tempDom = this.createElement('div', {\n innerHTML: this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(item.tooltipText) : item.tooltipText\n });\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n if (item.htmlAttributes) {\n this.setAttr(item.htmlAttributes, innerEle);\n }\n if (item.tooltipText) {\n innerEle.setAttribute('title', tempDom.textContent);\n }\n if (item.cssClass) {\n innerEle.className = innerEle.className + ' ' + item.cssClass;\n }\n if (item.template) {\n this.templateRender(item.template, innerEle, item, index);\n }\n else {\n switch (item.type) {\n case 'Button':\n dom = this.buttonRendering(item, innerEle);\n dom.setAttribute('tabindex', isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('data-tabindex', isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('aria-label', (item.text || item.tooltipText));\n dom.setAttribute('aria-disabled', 'false');\n innerEle.appendChild(dom);\n innerEle.addEventListener('click', this.itemClick.bind(this));\n break;\n case 'Separator':\n this.add(innerEle, CLS_SEPARATOR);\n break;\n }\n }\n if (item.showTextOn) {\n var sTxt = item.showTextOn;\n if (sTxt === 'Toolbar') {\n this.add(innerEle, CLS_POPUPTEXT);\n this.add(innerEle, 'e-tbtn-align');\n }\n else if (sTxt === 'Overflow') {\n this.add(innerEle, CLS_TBARTEXT);\n }\n }\n if (item.overflow) {\n var overflow = item.overflow;\n if (overflow === 'Show') {\n this.add(innerEle, CLS_TBAROVERFLOW);\n }\n else if (overflow === 'Hide') {\n if (!innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPOVERFLOW);\n }\n }\n }\n if (item.overflow !== 'Show' && item.showAlwaysInPopup && !innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPPRI);\n this.popupPriCount++;\n }\n if (item.disabled) {\n this.add(innerEle, CLS_DISABLE);\n }\n if (item.visible === false) {\n this.add(innerEle, CLS_HIDDEN);\n }\n return innerEle;\n };\n Toolbar.prototype.getDataTabindex = function (ele) {\n return isNOU(ele.getAttribute('data-tabindex')) ? '-1' : ele.getAttribute('data-tabindex');\n };\n Toolbar.prototype.itemClick = function (e) {\n this.activeEleSwitch(e.currentTarget);\n };\n Toolbar.prototype.activeEleSwitch = function (ele) {\n this.activeEleRemove(ele.firstElementChild);\n this.activeEle.focus();\n };\n Toolbar.prototype.activeEleRemove = function (curEle) {\n if (!isNOU(this.activeEle)) {\n this.activeEle.setAttribute('tabindex', this.getDataTabindex(this.activeEle));\n }\n this.activeEle = curEle;\n if (this.getDataTabindex(this.activeEle) === '-1') {\n if (isNOU(this.trgtEle) && !curEle.parentElement.classList.contains(CLS_TEMPLATE)) {\n this.updateTabIndex('-1');\n curEle.removeAttribute('tabindex');\n }\n else {\n this.activeEle.setAttribute('tabindex', this.getDataTabindex(this.activeEle));\n }\n }\n };\n Toolbar.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - Returns the module name as string.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.itemsRerender = function (newProp) {\n this.items = this.tbarItemsCol;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n this.destroyMode();\n this.destroyItems();\n this.items = newProp;\n this.tbarItemsCol = this.items;\n this.renderItems();\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Toolbar.prototype.resize = function () {\n var ele = this.element;\n this.tbResize = true;\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.overflowMode === 'Popup') {\n this.popObj.hide();\n }\n var checkOverflow = this.checkOverflow(ele, ele.getElementsByClassName(CLS_ITEMS)[0]);\n if (!checkOverflow) {\n this.destroyScroll();\n var multirowele = ele.querySelector('.' + CLS_ITEMS);\n if (!isNOU(multirowele)) {\n this.remove(multirowele, CLS_MULTIROWPOS);\n if (this.tbarAlign) {\n this.add(multirowele, CLS_TBARPOS);\n }\n }\n }\n if (checkOverflow && this.scrollModule && (this.offsetWid === ele.offsetWidth)) {\n return;\n }\n if (this.offsetWid > ele.offsetWidth || checkOverflow) {\n this.renderOverflowMode();\n }\n if (this.popObj) {\n if (this.overflowMode === 'Extended') {\n var eleStyles = window.getComputedStyle(this.element);\n this.popObj.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n }\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.popupRefresh(this.popObj.element, false);\n if (this.tbarAlign) {\n this.refreshPositioning();\n }\n }\n if (this.element.querySelector('.' + CLS_HSCROLLBAR)) {\n this.scrollStep = this.element.querySelector('.' + CLS_HSCROLLBAR).offsetWidth;\n }\n this.offsetWid = ele.offsetWidth;\n this.tbResize = false;\n this.separator();\n };\n Toolbar.prototype.orientationChange = function () {\n var _this = this;\n setTimeout(function () {\n _this.resize();\n }, 500);\n };\n Toolbar.prototype.extendedOpen = function () {\n var sib = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && sib) {\n this.isExtendedOpen = sib.classList.contains(CLS_POPUPOPEN);\n }\n };\n Toolbar.prototype.updateHideEleTabIndex = function (ele, isHidden, isElement, eleIndex, innerItems) {\n if (isElement) {\n eleIndex = innerItems.indexOf(ele);\n }\n var nextEle = innerItems[++eleIndex];\n while (nextEle) {\n var skipEle = this.eleContains(nextEle);\n if (!skipEle) {\n var dataTabIndex = nextEle.firstElementChild.getAttribute('data-tabindex');\n if (isHidden && dataTabIndex === '-1') {\n nextEle.firstElementChild.setAttribute('tabindex', '0');\n }\n else if (dataTabIndex !== nextEle.firstElementChild.getAttribute('tabindex')) {\n nextEle.firstElementChild.setAttribute('tabindex', dataTabIndex);\n }\n break;\n }\n nextEle = innerItems[++eleIndex];\n }\n };\n Toolbar.prototype.clearToolbarTemplate = function (templateEle) {\n if (this.registeredTemplate && this.registeredTemplate[\"\" + 'template']) {\n var registeredTemplates = this.registeredTemplate;\n for (var index = 0; index < registeredTemplates[\"\" + 'template'].length; index++) {\n var registeredItem = registeredTemplates[\"\" + 'template'][parseInt(index.toString(), 10)].rootNodes[0];\n var closestItem = closest(registeredItem, '.' + CLS_ITEM);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate(['template'], [registeredTemplates[\"\" + 'template'][parseInt(index.toString(), 10)]]);\n break;\n }\n }\n }\n else if (this.portals && this.portals.length > 0) {\n var portals = this.portals;\n for (var index = 0; index < portals.length; index++) {\n var portalItem = portals[parseInt(index.toString(), 10)];\n var closestItem = closest(portalItem.containerInfo, '.' + CLS_ITEM);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate(['template'], index);\n break;\n }\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {ToolbarModel} newProp - It contains new value of the data.\n * @param {ToolbarModel} oldProp - It contains old value of the data.\n * @returns {void}\n * @private\n */\n Toolbar.prototype.onPropertyChanged = function (newProp, oldProp) {\n var tEle = this.element;\n var wid = tEle.offsetWidth;\n this.extendedOpen();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProb = Object.keys(newProp.items);\n for (var i = 0; i < changedProb.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[parseInt(i.toString(), 10)], 10);\n var property = Object.keys(newProp.items[parseInt(index.toString(), 10)])[0];\n var newProperty = Object(newProp.items[parseInt(index.toString(), 10)])[\"\" + property];\n if (this.tbarAlign || property === 'align') {\n this.refresh();\n this.trigger('created');\n break;\n }\n var popupPriCheck = property === 'showAlwaysInPopup' && !newProperty;\n var booleanCheck = property === 'overflow' && this.popupPriCount !== 0;\n if ((popupPriCheck) || (this.items[parseInt(index.toString(), 10)].showAlwaysInPopup) && booleanCheck) {\n --this.popupPriCount;\n }\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var itemCol = [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, tEle));\n if (this.isReact && this.items[parseInt(index.toString(), 10)].template) {\n this.clearToolbarTemplate(itemCol[parseInt(index.toString(), 10)]);\n }\n detach(itemCol[parseInt(index.toString(), 10)]);\n this.tbarEle.splice(index, 1);\n this.addItems([this.items[parseInt(index.toString(), 10)]], index);\n this.items.splice(index, 1);\n if (this.items[parseInt(index.toString(), 10)].template) {\n this.tbarEle.splice(this.items.length, 1);\n }\n }\n }\n else {\n this.itemsRerender(newProp.items);\n }\n break;\n case 'width':\n setStyle(tEle, { 'width': formatUnit(newProp.width) });\n this.refreshOverflow();\n break;\n case 'height':\n setStyle(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'overflowMode':\n this.destroyMode();\n this.renderOverflowMode();\n if (this.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n this.refreshOverflow();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n else {\n this.remove(tEle, CLS_RTL);\n }\n if (!isNOU(this.scrollModule)) {\n if (newProp.enableRtl) {\n this.add(this.scrollModule.element, CLS_RTL);\n }\n else {\n this.remove(this.scrollModule.element, CLS_RTL);\n }\n }\n if (!isNOU(this.popObj)) {\n if (newProp.enableRtl) {\n this.add(this.popObj.element, CLS_RTL);\n }\n else {\n this.remove(this.popObj.element, CLS_RTL);\n }\n }\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n break;\n case 'scrollStep':\n if (this.scrollModule) {\n this.scrollModule.scrollStep = this.scrollStep;\n }\n break;\n case 'enableCollision':\n if (this.popObj) {\n this.popObj.collision = { Y: this.enableCollision ? 'flip' : 'none' };\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.split(' '));\n }\n break;\n case 'allowKeyboard':\n this.unwireKeyboardEvent();\n if (newProp.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n break;\n }\n }\n };\n /**\n * Shows or hides the Toolbar item that is in the specified index.\n *\n * @param {number | HTMLElement} index - Index value of target item or DOM element of items to be hidden or shown.\n * @param {boolean} value - Based on this Boolean value, item will be hide (true) or show (false). By default, value is false.\n * @returns {void}.\n */\n Toolbar.prototype.hideItem = function (index, value) {\n var isElement = (typeof (index) === 'object') ? true : false;\n var eleIndex = index;\n var ele;\n if (!isElement && isNOU(eleIndex)) {\n return;\n }\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (isElement) {\n ele = index;\n }\n else if (this.tbarEle[parseInt(eleIndex.toString(), 10)]) {\n var innerItems_1 = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n ele = innerItems_1[parseInt(eleIndex.toString(), 10)];\n }\n if (ele) {\n if (value) {\n ele.classList.add(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n if (isNOU(ele.firstElementChild.getAttribute('tabindex')) ||\n ele.firstElementChild.getAttribute('tabindex') !== '-1') {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n }\n else {\n ele.classList.remove(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n this.refreshOverflow();\n }\n };\n __decorate([\n Collection([], Item)\n ], Toolbar.prototype, \"items\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Toolbar.prototype, \"cssClass\", void 0);\n __decorate([\n Property('Scrollable')\n ], Toolbar.prototype, \"overflowMode\", void 0);\n __decorate([\n Property()\n ], Toolbar.prototype, \"scrollStep\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableCollision\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"clicked\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"beforeCreate\", void 0);\n Toolbar = __decorate([\n NotifyPropertyChanges\n ], Toolbar);\n return Toolbar;\n}(Component));\nexport { Toolbar };\n","/**\n * Collision module.\n */\nimport { calculatePosition } from './position';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar parentDocument;\nvar targetContainer;\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {HTMLElement} viewPortElement - specifies the element\n * @param {CollisionCoordinates} axis - specifies the collision coordinates\n * @param {OffsetPosition} position - specifies the position\n * @returns {void}\n */\nexport function fit(element, viewPortElement, axis, position) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n if (axis === void 0) { axis = { X: false, Y: false }; }\n if (!axis.Y && !axis.X) {\n return { left: 0, top: 0 };\n }\n var elemData = element.getBoundingClientRect();\n targetContainer = viewPortElement;\n parentDocument = element.ownerDocument;\n if (!position) {\n position = calculatePosition(element, 'left', 'top');\n }\n var zoomingFactor = 1;\n var parentWithZoomStyle = element.closest('[style*=\"zoom\"]');\n if (parentWithZoomStyle) {\n zoomingFactor = parseFloat(getComputedStyle(parentWithZoomStyle).zoom);\n }\n if (axis.X) {\n var containerWidth = targetContainer ? getTargetContainerWidth() : getViewPortWidth();\n var containerLeft = ContainerLeft() / zoomingFactor;\n var containerRight = ContainerRight() / zoomingFactor;\n var overLeft = containerLeft - position.left;\n var overRight = position.left + elemData.width - containerRight;\n if (elemData.width > containerWidth) {\n if (overLeft > 0 && overRight <= 0) {\n position.left = containerRight - elemData.width;\n }\n else if (overRight > 0 && overLeft <= 0) {\n position.left = containerLeft;\n }\n else {\n position.left = overLeft > overRight ? (containerRight - elemData.width) : containerLeft;\n }\n }\n else if (overLeft > 0) {\n position.left += overLeft;\n }\n else if (overRight > 0) {\n position.left -= overRight;\n }\n }\n if (axis.Y) {\n var containerHeight = targetContainer ? getTargetContainerHeight() : getViewPortHeight();\n var containerTop = ContainerTop() / zoomingFactor;\n var containerBottom = ContainerBottom() / zoomingFactor;\n var overTop = containerTop - position.top;\n var overBottom = position.top + elemData.height - containerBottom;\n if (elemData.height > containerHeight) {\n if (overTop > 0 && overBottom <= 0) {\n position.top = containerBottom - elemData.height;\n }\n else if (overBottom > 0 && overTop <= 0) {\n position.top = containerTop;\n }\n else {\n position.top = overTop > overBottom ? (containerBottom - elemData.height) : containerTop;\n }\n }\n else if (overTop > 0) {\n position.top += overTop;\n }\n else if (overBottom > 0) {\n position.top -= overBottom;\n }\n }\n return position;\n}\n/**\n *\n * @param {HTMLElement} element - specifies the html element\n * @param {HTMLElement} viewPortElement - specifies the html element\n * @param {number} x - specifies the number\n * @param {number} y - specifies the number\n * @returns {string[]} - returns the string value\n */\nexport function isCollide(element, viewPortElement, x, y) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n var elemOffset = calculatePosition(element, 'left', 'top');\n if (x) {\n elemOffset.left = x;\n }\n if (y) {\n elemOffset.top = y;\n }\n var data = [];\n targetContainer = viewPortElement;\n parentDocument = element.ownerDocument;\n var elementRect = element.getBoundingClientRect();\n var top = elemOffset.top;\n var left = elemOffset.left;\n var right = elemOffset.left + elementRect.width;\n var bottom = elemOffset.top + elementRect.height;\n // eslint-disable-next-line\n var topData = '', leftData = '';\n var yAxis = topCollideCheck(top, bottom);\n var xAxis = leftCollideCheck(left, right);\n if (yAxis.topSide) {\n data.push('top');\n }\n if (xAxis.rightSide) {\n data.push('right');\n }\n if (xAxis.leftSide) {\n data.push('left');\n }\n if (yAxis.bottomSide) {\n data.push('bottom');\n }\n return data;\n}\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {HTMLElement} target - specifies the element\n * @param {number} offsetX - specifies the number\n * @param {number} offsetY - specifies the number\n * @param {string} positionX - specifies the string value\n * @param {string} positionY - specifies the string value\n * @param {HTMLElement} viewPortElement - specifies the element\n * @param {CollisionCoordinates} axis - specifies the collision axis\n * @param {boolean} fixedParent - specifies the boolean\n * @returns {void}\n */\nexport function flip(element, target, offsetX, offsetY, positionX, positionY, viewPortElement, \n/* eslint-disable */\naxis, fixedParent) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n if (axis === void 0) { axis = { X: true, Y: true }; }\n if (!target || !element || !positionX || !positionY || (!axis.X && !axis.Y)) {\n return;\n }\n var tEdge = { TL: null,\n TR: null,\n BL: null,\n BR: null\n }, eEdge = {\n TL: null,\n TR: null,\n BL: null,\n BR: null\n /* eslint-enable */\n };\n var elementRect;\n if (window.getComputedStyle(element).display === 'none') {\n var oldVisibility = element.style.visibility;\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n elementRect = element.getBoundingClientRect();\n element.style.removeProperty('display');\n element.style.visibility = oldVisibility;\n }\n else {\n elementRect = element.getBoundingClientRect();\n }\n var pos = {\n posX: positionX, posY: positionY, offsetX: offsetX, offsetY: offsetY, position: { left: 0, top: 0 }\n };\n targetContainer = viewPortElement;\n parentDocument = target.ownerDocument;\n updateElementData(target, tEdge, pos, fixedParent, elementRect);\n setPosition(eEdge, pos, elementRect);\n if (axis.X) {\n leftFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n if (axis.Y && tEdge.TL.top > -1) {\n topFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n setPopup(element, pos, elementRect);\n}\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client rect\n * @returns {void}\n */\nfunction setPopup(element, pos, elementRect) {\n //eslint-disable-next-line\n var left = 0, top = 0;\n if (element.offsetParent != null\n && (getComputedStyle(element.offsetParent).position === 'absolute' ||\n getComputedStyle(element.offsetParent).position === 'relative')) {\n var data = calculatePosition(element.offsetParent, 'left', 'top', false, elementRect);\n left = data.left;\n top = data.top;\n }\n var scaleX = 1;\n var scaleY = 1;\n if (element.offsetParent) {\n var transformStyle = getComputedStyle(element.offsetParent).transform;\n if (transformStyle !== 'none') {\n var matrix = new DOMMatrix(transformStyle);\n scaleX = matrix.a;\n scaleY = matrix.d;\n }\n }\n element.style.top = ((pos.position.top / scaleY) + pos.offsetY - (top)) + 'px';\n element.style.left = ((pos.position.left / scaleX) + pos.offsetX - (left)) + 'px';\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifies the offset\n * @param {PositionLocation} pos - specifies theloaction\n * @param {boolean} fixedParent - specifies the boolean\n * @param {ClientRect} elementRect - specifies the client rect\n * @returns {void}\n */\nfunction updateElementData(target, edge, pos, fixedParent, elementRect) {\n pos.position = calculatePosition(target, pos.posX, pos.posY, fixedParent, elementRect);\n edge.TL = calculatePosition(target, 'left', 'top', fixedParent, elementRect);\n edge.TR = calculatePosition(target, 'right', 'top', fixedParent, elementRect);\n edge.BR = calculatePosition(target, 'left', 'bottom', fixedParent, elementRect);\n edge.BL = calculatePosition(target, 'right', 'bottom', fixedParent, elementRect);\n}\n/**\n *\n * @param {EdgeOffset} eStatus - specifies the status\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client\n * @returns {void}\n */\nfunction setPosition(eStatus, pos, elementRect) {\n eStatus.TL = { top: pos.position.top + pos.offsetY, left: pos.position.left + pos.offsetX };\n eStatus.TR = { top: eStatus.TL.top, left: eStatus.TL.left + elementRect.width };\n eStatus.BL = { top: eStatus.TL.top + elementRect.height,\n left: eStatus.TL.left };\n eStatus.BR = { top: eStatus.TL.top + elementRect.height,\n left: eStatus.TL.left + elementRect.width };\n}\n/**\n *\n * @param {number} left - specifies the number\n * @param {number} right - specifies the number\n * @returns {LeftCorners} - returns the value\n */\nfunction leftCollideCheck(left, right) {\n //eslint-disable-next-line\n var leftSide = false, rightSide = false;\n if (((left - getBodyScrollLeft()) < ContainerLeft())) {\n leftSide = true;\n }\n if (right > ContainerRight()) {\n rightSide = true;\n }\n return { leftSide: leftSide, rightSide: rightSide };\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifes the element\n * @param {EdgeOffset} tEdge - specifies the edge offset\n * @param {PositionLocation} pos - specifes the location\n * @param {ClientRect} elementRect - specifies the client\n * @param {boolean} deepCheck - specifies the boolean value\n * @returns {void}\n */\nfunction leftFlip(target, edge, tEdge, pos, elementRect, deepCheck) {\n var collideSide = leftCollideCheck(edge.TL.left, edge.TR.left);\n if ((tEdge.TL.left - getBodyScrollLeft()) <= ContainerLeft()) {\n collideSide.leftSide = false;\n }\n if (tEdge.TR.left > ContainerRight()) {\n collideSide.rightSide = false;\n }\n if ((collideSide.leftSide && !collideSide.rightSide) || (!collideSide.leftSide && collideSide.rightSide)) {\n if (pos.posX === 'right') {\n pos.posX = 'left';\n }\n else {\n pos.posX = 'right';\n }\n pos.offsetX = pos.offsetX + elementRect.width;\n pos.offsetX = -1 * pos.offsetX;\n pos.position = calculatePosition(target, pos.posX, pos.posY, false);\n setPosition(edge, pos, elementRect);\n if (deepCheck) {\n leftFlip(target, edge, tEdge, pos, elementRect, false);\n }\n }\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifies the offset\n * @param {EdgeOffset} tEdge - specifies the offset\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client rect\n * @param {boolean} deepCheck - specifies the boolean\n * @returns {void}\n */\nfunction topFlip(target, edge, tEdge, pos, elementRect, deepCheck) {\n var collideSide = topCollideCheck(edge.TL.top, edge.BL.top);\n if ((tEdge.TL.top - getBodyScrollTop()) <= ContainerTop()) {\n collideSide.topSide = false;\n }\n if (tEdge.BL.top >= ContainerBottom() && target.getBoundingClientRect().bottom < window.innerHeight) {\n collideSide.bottomSide = false;\n }\n if ((collideSide.topSide && !collideSide.bottomSide) || (!collideSide.topSide && collideSide.bottomSide)) {\n if (pos.posY === 'top') {\n pos.posY = 'bottom';\n }\n else {\n pos.posY = 'top';\n }\n pos.offsetY = pos.offsetY + elementRect.height;\n pos.offsetY = -1 * pos.offsetY;\n pos.position = calculatePosition(target, pos.posX, pos.posY, false, elementRect);\n setPosition(edge, pos, elementRect);\n if (deepCheck) {\n topFlip(target, edge, tEdge, pos, elementRect, false);\n }\n }\n}\n/**\n *\n * @param {number} top - specifies the number\n * @param {number} bottom - specifies the number\n * @returns {TopCorners} - retyrns the value\n */\nfunction topCollideCheck(top, bottom) {\n //eslint-disable-next-line\n var topSide = false, bottomSide = false;\n if ((top - getBodyScrollTop()) < ContainerTop()) {\n topSide = true;\n }\n if (bottom > ContainerBottom()) {\n bottomSide = true;\n }\n return { topSide: topSide, bottomSide: bottomSide };\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerWidth() {\n return targetContainer.getBoundingClientRect().width;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerHeight() {\n return targetContainer.getBoundingClientRect().height;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerLeft() {\n return targetContainer.getBoundingClientRect().left;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerTop() {\n return targetContainer.getBoundingClientRect().top;\n}\n//eslint-disable-next-line\nfunction ContainerTop() {\n if (targetContainer) {\n return getTargetContainerTop();\n }\n return 0;\n}\n//eslint-disable-next-line\nfunction ContainerLeft() {\n if (targetContainer) {\n return getTargetContainerLeft();\n }\n return 0;\n}\n//eslint-disable-next-line\nfunction ContainerRight() {\n if (targetContainer) {\n return (getBodyScrollLeft() + getTargetContainerLeft() + getTargetContainerWidth());\n }\n return (getBodyScrollLeft() + getViewPortWidth());\n}\n//eslint-disable-next-line\nfunction ContainerBottom() {\n if (targetContainer) {\n return (getBodyScrollTop() + getTargetContainerTop() + getTargetContainerHeight());\n }\n return (getBodyScrollTop() + getViewPortHeight());\n}\n/**\n * @returns {void}\n */\nfunction getBodyScrollTop() {\n // if(targetContainer)\n // return targetContainer.scrollTop;\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\n/**\n * @returns {void}\n */\nfunction getBodyScrollLeft() {\n // if(targetContainer)\n // return targetContainer.scrollLeft;\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\n/**\n * @returns {void}\n */\nfunction getViewPortHeight() {\n return window.innerHeight;\n}\n/**\n * @returns {void}\n */\nfunction getViewPortWidth() {\n var windowWidth = window.innerWidth;\n var documentReact = document.documentElement.getBoundingClientRect();\n var offsetWidth = (isNullOrUndefined(document.documentElement)) ? 0 : documentReact.width;\n return windowWidth - (windowWidth - offsetWidth);\n}\n","/**\n * Position library\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar elementRect;\nvar popupRect;\nvar element;\nvar parentDocument;\nvar fixedParent = false;\n/**\n *\n * @param {HTMLElement} anchor - specifies the element\n * @param {HTMLElement} element - specifies the element\n * @returns {OffsetPosition} - returns the value\n */\nexport function calculateRelativeBasedPosition(anchor, element) {\n var fixedElement = false;\n var anchorPos = { left: 0, top: 0 };\n var tempAnchor = anchor;\n if (!anchor || !element) {\n return anchorPos;\n }\n if (isNullOrUndefined(element.offsetParent) && element.style.position === 'fixed') {\n fixedElement = true;\n }\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left += anchor.offsetLeft;\n anchorPos.top += anchor.offsetTop;\n anchor = anchor.offsetParent;\n }\n anchor = tempAnchor;\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left -= anchor.scrollLeft;\n anchorPos.top -= anchor.scrollTop;\n anchor = anchor.parentElement;\n }\n return anchorPos;\n}\n/**\n *\n * @param {Element} currentElement - specifies the element\n * @param {string} positionX - specifies the position\n * @param {string} positionY - specifies the position\n * @param {boolean} parentElement - specifies the boolean\n * @param {ClientRect} targetValues - specifies the client\n * @returns {OffsetPosition} - returns the position\n */\nexport function calculatePosition(currentElement, positionX, positionY, parentElement, targetValues) {\n popupRect = undefined;\n popupRect = targetValues;\n fixedParent = parentElement ? true : false;\n if (!currentElement) {\n return { left: 0, top: 0 };\n }\n if (!positionX) {\n positionX = 'left';\n }\n if (!positionY) {\n positionY = 'top';\n }\n parentDocument = currentElement.ownerDocument;\n element = currentElement;\n var pos = { left: 0, top: 0 };\n return updatePosition(positionX.toLowerCase(), positionY.toLowerCase(), pos);\n}\n/**\n *\n * @param {number} value - specifies the number\n * @param {OffsetPosition} pos - specifies the position\n * @returns {void}\n */\nfunction setPosx(value, pos) {\n pos.left = value;\n}\n/**\n *\n * @param {number} value - specifies the number\n * @param {OffsetPosition} pos - specifies the position\n * @returns {void}\n */\nfunction setPosy(value, pos) {\n pos.top = value;\n}\n/**\n *\n * @param {string} posX - specifies the position\n * @param {string} posY - specifies the position\n * @param {OffsetPosition} pos - specifies the position\n * @returns {OffsetPosition} - returns the postion\n */\nfunction updatePosition(posX, posY, pos) {\n elementRect = element.getBoundingClientRect();\n switch (posY + posX) {\n case 'topcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'topright':\n setPosx(getElementRight(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'centercenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerright':\n setPosx(getElementRight(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'bottomcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomright':\n setPosx(getElementRight(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementBottom(), pos);\n break;\n default:\n case 'topleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementTop(), pos);\n break;\n }\n element = null;\n return pos;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getBodyScrollTop() {\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getBodyScrollLeft() {\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementBottom() {\n return fixedParent ? elementRect.bottom : elementRect.bottom + getBodyScrollTop();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementVCenter() {\n return getElementTop() + (elementRect.height / 2);\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementTop() {\n return fixedParent ? elementRect.top : elementRect.top + getBodyScrollTop();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementLeft() {\n return elementRect.left + getBodyScrollLeft();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementRight() {\n var popupWidth = (element && (element.classList.contains('e-date-wrapper') || element.classList.contains('e-datetime-wrapper') || element.classList.contains('e-date-range-wrapper') || element.classList.contains('e-ddl') || element.classList.contains('e-multiselect'))) ? (popupRect ? popupRect.width : 0) :\n (popupRect && (elementRect.width >= popupRect.width) ? popupRect.width : 0);\n return elementRect.right + getBodyScrollLeft() - popupWidth;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementHCenter() {\n return getElementLeft() + (elementRect.width / 2);\n}\n","/**\n * Resize library\n */\nimport { isNullOrUndefined as isNOU, createElement, EventHandler, detach, Browser } from '@syncfusion/ej2-base';\n/* eslint-disable */\nvar elementClass = ['north-west', 'north', 'north-east', 'west', 'east', 'south-west', 'south', 'south-east'];\nvar RESIZE_HANDLER = 'e-resize-handle';\nvar FOCUSED_HANDLER = 'e-focused-handle';\nvar DIALOG_RESIZABLE = 'e-dlg-resizable';\nvar RESTRICT_LEFT = ['e-restrict-left'];\nvar RESIZE_WITHIN_VIEWPORT = 'e-resize-viewport';\nvar dialogBorderResize = ['north', 'west', 'east', 'south'];\nvar targetElement;\nvar selectedHandler;\nvar originalWidth = 0;\nvar originalHeight = 0;\nvar originalX = 0;\nvar originalY = 0;\nvar originalMouseX = 0;\nvar originalMouseY = 0;\nvar minHeight;\nvar maxHeight;\nvar minWidth;\nvar maxWidth;\nvar containerElement;\nvar resizeStart = null;\nvar resize = null;\nvar resizeEnd = null;\n/* eslint-enable */\nvar resizeWestWidth;\nvar setLeft = true;\nvar previousWidth = 0;\nvar setWidth = true;\n// eslint-disable-next-line\nvar proxy;\n/**\n *\n * @param {ResizeArgs} args - specifies the resize args\n * @returns {void}\n */\nexport function createResize(args) {\n resizeStart = args.resizeBegin;\n resize = args.resizing;\n resizeEnd = args.resizeComplete;\n targetElement = getDOMElement(args.element);\n containerElement = getDOMElement(args.boundary);\n var directions = args.direction.split(' ');\n for (var i = 0; i < directions.length; i++) {\n if (dialogBorderResize.indexOf(directions[i]) >= 0 && directions[i]) {\n setBorderResizeElm(directions[i]);\n }\n else if (directions[i].trim() !== '') {\n var resizeHandler = createElement('div', { className: 'e-icons ' + RESIZE_HANDLER + ' ' + 'e-' + directions[i] });\n targetElement.appendChild(resizeHandler);\n }\n }\n minHeight = args.minHeight;\n minWidth = args.minWidth;\n maxWidth = args.maxWidth;\n maxHeight = args.maxHeight;\n if (args.proxy && args.proxy.element && args.proxy.element.classList.contains('e-dialog')) {\n wireEvents(args.proxy);\n }\n else {\n wireEvents();\n }\n}\n/**\n *\n * @param {string} direction - specifies the string\n * @returns {void}\n */\nfunction setBorderResizeElm(direction) {\n calculateValues();\n var borderBottom = createElement('span', {\n attrs: {\n 'unselectable': 'on', 'contenteditable': 'false'\n }\n });\n borderBottom.setAttribute('class', 'e-dialog-border-resize e-' + direction);\n if (direction === 'south') {\n borderBottom.style.height = '2px';\n borderBottom.style.width = '100%';\n borderBottom.style.bottom = '0px';\n borderBottom.style.left = '0px';\n }\n if (direction === 'north') {\n borderBottom.style.height = '2px';\n borderBottom.style.width = '100%';\n borderBottom.style.top = '0px';\n borderBottom.style.left = '0px';\n }\n if (direction === 'east') {\n borderBottom.style.height = '100%';\n borderBottom.style.width = '2px';\n borderBottom.style.right = '0px';\n borderBottom.style.top = '0px';\n }\n if (direction === 'west') {\n borderBottom.style.height = '100%';\n borderBottom.style.width = '2px';\n borderBottom.style.left = '0px';\n borderBottom.style.top = '0px';\n }\n targetElement.appendChild(borderBottom);\n}\n/**\n *\n * @param {string} element - specifies the element\n * @returns {HTMLElement} - returns the element\n */\nfunction getDOMElement(element) {\n var domElement;\n if (!isNOU(element)) {\n if (typeof (element) === 'string') {\n domElement = document.querySelector(element);\n }\n else {\n domElement = element;\n }\n }\n return domElement;\n}\n// eslint-disable-next-line\nfunction wireEvents(args) {\n if (isNOU(args)) {\n args = this;\n }\n var resizers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (var i = 0; i < resizers.length; i++) {\n selectedHandler = resizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, args);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, args);\n }\n var borderResizers = targetElement.querySelectorAll('.e-dialog-border-resize');\n if (!isNOU(borderResizers)) {\n for (var i = 0; i < borderResizers.length; i++) {\n selectedHandler = borderResizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, args);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, args);\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {string} e - specifies the string\n * @returns {string} - returns the string\n */\nfunction getEventType(e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the mouse event\n * @returns {void}\n */\nfunction onMouseDown(e) {\n e.preventDefault();\n targetElement = e.target.parentElement;\n calculateValues();\n originalMouseX = e.pageX;\n originalMouseY = e.pageY;\n e.target.classList.add(FOCUSED_HANDLER);\n if (!isNOU(resizeStart)) {\n proxy = this;\n if (resizeStart(e, proxy) === true) {\n return;\n }\n }\n if (this.targetEle && targetElement && targetElement.querySelector('.' + DIALOG_RESIZABLE)) {\n containerElement = this.target === ('body' || 'document.body' || document.body) ? null : this.targetEle;\n maxWidth = this.targetEle.clientWidth;\n maxHeight = this.targetEle.clientHeight;\n }\n var target = (isNOU(containerElement)) ? document : containerElement;\n EventHandler.add(target, 'mousemove', onMouseMove, this);\n EventHandler.add(document, 'mouseup', onMouseUp, this);\n for (var i = 0; i < RESTRICT_LEFT.length; i++) {\n if (targetElement.classList.contains(RESTRICT_LEFT[i])) {\n setLeft = false;\n }\n else {\n setLeft = true;\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onMouseUp(e) {\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n var target = (isNOU(containerElement)) ? document : containerElement;\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.remove(target, 'mousemove', onMouseMove);\n EventHandler.remove(target, touchMoveEvent, onMouseMove);\n EventHandler.remove(target, eventName, onMouseMove);\n if (!isNOU(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n document.body.querySelector('.' + FOCUSED_HANDLER).classList.remove(FOCUSED_HANDLER);\n }\n if (!isNOU(resizeEnd)) {\n proxy = this;\n resizeEnd(e, proxy);\n }\n EventHandler.remove(document, 'mouseup', onMouseUp);\n EventHandler.remove(document, touchEndEvent, onMouseUp);\n}\n/* istanbul ignore next */\n/**\n * @returns {void}\n */\nfunction calculateValues() {\n originalWidth = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('width').replace('px', ''));\n originalHeight = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('height').replace('px', ''));\n originalX = targetElement.getBoundingClientRect().left;\n originalY = targetElement.getBoundingClientRect().top;\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onTouchStart(e) {\n targetElement = e.target.parentElement;\n calculateValues();\n var dialogResizeElement = targetElement.classList.contains('e-dialog');\n if ((e.target.classList.contains(RESIZE_HANDLER) || e.target.classList.contains('e-dialog-border-resize')) && dialogResizeElement) {\n e.target.classList.add(FOCUSED_HANDLER);\n }\n var coordinates = e.touches ? e.changedTouches[0] : e;\n originalMouseX = coordinates.pageX;\n originalMouseY = coordinates.pageY;\n if (!isNOU(resizeStart)) {\n proxy = this;\n if (resizeStart(e, proxy) === true) {\n return;\n }\n }\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n var target = (isNOU(containerElement)) ? document : containerElement;\n EventHandler.add(target, touchMoveEvent, onMouseMove, this);\n EventHandler.add(document, touchEndEvent, onMouseUp, this);\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onMouseMove(e) {\n if (e.target.classList.contains(RESIZE_HANDLER) && e.target.classList.contains(FOCUSED_HANDLER)) {\n selectedHandler = e.target;\n }\n else if (!isNOU(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n selectedHandler = document.body.querySelector('.' + FOCUSED_HANDLER);\n }\n if (!isNOU(selectedHandler)) {\n var resizeTowards = '';\n for (var i = 0; i < elementClass.length; i++) {\n if (selectedHandler.classList.contains('e-' + elementClass[i])) {\n resizeTowards = elementClass[i];\n }\n }\n if (!isNOU(resize)) {\n proxy = this;\n resize(e, proxy);\n }\n switch (resizeTowards) {\n case 'south':\n resizeSouth(e);\n break;\n case 'north':\n resizeNorth(e);\n break;\n case 'west':\n resizeWest(e);\n break;\n case 'east':\n resizeEast(e);\n break;\n case 'south-east':\n resizeSouth(e);\n resizeEast(e);\n break;\n case 'south-west':\n resizeSouth(e);\n resizeWest(e);\n break;\n case 'north-east':\n resizeNorth(e);\n resizeEast(e);\n break;\n case 'north-west':\n resizeNorth(e);\n resizeWest(e);\n break;\n default: break;\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {HTMLElement} element - specifies the eleemnt\n * @returns {ClientRect} - returns the client\n */\nfunction getClientRectValues(element) {\n return element.getBoundingClientRect();\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeSouth(e) {\n var documentHeight = document.documentElement.clientHeight;\n var calculateValue = false;\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var currentpageY = coordinates.pageY;\n var targetRectValues = getClientRectValues(targetElement);\n var containerRectValues;\n if (!isNOU(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n if (!isNOU(containerElement)) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && ((documentHeight - currentpageY) >= 0 || (targetRectValues.top < 0))) {\n calculateValue = true;\n }\n var calculatedHeight = originalHeight + (currentpageY - originalMouseY);\n calculatedHeight = (calculatedHeight > minHeight) ? calculatedHeight : minHeight;\n var containerTop = 0;\n if (!isNOU(containerElement)) {\n containerTop = containerRectValues.top;\n }\n var borderValue = isNOU(containerElement) ? 0 : containerElement.offsetHeight - containerElement.clientHeight;\n var topWithoutborder = (targetRectValues.top - containerTop) - (borderValue / 2);\n topWithoutborder = (topWithoutborder < 0) ? 0 : topWithoutborder;\n if (targetRectValues.top > 0 && (topWithoutborder + calculatedHeight) > maxHeight) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.height = (maxHeight - parseInt(topWithoutborder.toString(), 10)) + 'px';\n return;\n }\n var targetTop = 0;\n if (calculateValue) {\n if (targetRectValues.top < 0 && (documentHeight + (targetRectValues.height + targetRectValues.top) > 0)) {\n targetTop = targetRectValues.top;\n if ((calculatedHeight + targetTop) <= 30) {\n calculatedHeight = (targetRectValues.height - (targetRectValues.height + targetRectValues.top)) + 30;\n }\n }\n if (((calculatedHeight + targetRectValues.top) >= maxHeight)) {\n targetElement.style.height = targetRectValues.height +\n (documentHeight - (targetRectValues.height + targetRectValues.top)) + 'px';\n }\n var calculatedTop = (isNOU(containerElement)) ? targetTop : topWithoutborder;\n if (calculatedHeight >= minHeight && ((calculatedHeight + calculatedTop) <= maxHeight)) {\n targetElement.style.height = calculatedHeight + 'px';\n }\n }\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeNorth(e) {\n var calculateValue = false;\n var boundaryRectValues;\n var pageY = (getEventType(e.type) === 'mouse') ? e.pageY : e.touches[0].pageY;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement)) {\n boundaryRectValues = getClientRectValues(containerElement);\n }\n if (!isNOU(containerElement) && (targetRectValues.top - boundaryRectValues.top) > 0) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && pageY > 0) {\n calculateValue = true;\n }\n var currentHeight = originalHeight - (pageY - originalMouseY);\n if (calculateValue) {\n if (currentHeight >= minHeight && currentHeight <= maxHeight) {\n var containerTop = 0;\n if (!isNOU(containerElement)) {\n containerTop = boundaryRectValues.top;\n }\n var top_1 = (originalY - containerTop) + (pageY - originalMouseY);\n top_1 = top_1 > 0 ? top_1 : 1;\n targetElement.style.height = currentHeight + 'px';\n targetElement.style.top = top_1 + 'px';\n }\n }\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeWest(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var rectValues;\n if (!isNOU(containerElement)) {\n rectValues = getClientRectValues(containerElement);\n }\n var pageX = (getEventType(e.type) === 'mouse') ? e.pageX : e.touches[0].pageX;\n var targetRectValues = getClientRectValues(targetElement);\n var borderValue = isNOU(containerElement) ? 0 : containerElement.offsetWidth - containerElement.clientWidth;\n /* eslint-disable */\n var left = isNOU(containerElement) ? 0 : rectValues.left;\n var containerWidth = isNOU(containerElement) ? 0 : rectValues.width;\n /* eslint-enable */\n if (isNOU(resizeWestWidth)) {\n if (!isNOU(containerElement)) {\n resizeWestWidth = (((targetRectValues.left - left) - borderValue / 2)) + targetRectValues.width;\n resizeWestWidth = resizeWestWidth + (containerWidth - borderValue - resizeWestWidth);\n }\n else {\n resizeWestWidth = documentWidth;\n }\n }\n if (!isNOU(containerElement) &&\n (Math.floor((targetRectValues.left - rectValues.left) + targetRectValues.width +\n (rectValues.right - targetRectValues.right)) - borderValue) <= maxWidth) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && pageX >= 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth - (pageX - originalMouseX);\n if (setLeft) {\n calculatedWidth = (calculatedWidth > resizeWestWidth) ? resizeWestWidth : calculatedWidth;\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n var containerLeft = 0;\n if (!isNOU(containerElement)) {\n containerLeft = rectValues.left;\n }\n var left_1 = (originalX - containerLeft) + (pageX - originalMouseX);\n left_1 = (left_1 > 0) ? left_1 : 1;\n if (calculatedWidth !== previousWidth && setWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n if (setLeft) {\n targetElement.style.left = left_1 + 'px';\n if (left_1 === 1) {\n setWidth = false;\n }\n else {\n setWidth = true;\n }\n }\n }\n }\n previousWidth = calculatedWidth;\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeEast(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var containerRectValues;\n if (!isNOU(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var pageX = coordinates.pageX;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement) && (((targetRectValues.left - containerRectValues.left) + targetRectValues.width) <= maxWidth\n || (targetRectValues.right - containerRectValues.left) >= targetRectValues.width)) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && (documentWidth - pageX) > 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth + (pageX - originalMouseX);\n var containerLeft = 0;\n if (!isNOU(containerElement)) {\n containerLeft = containerRectValues.left;\n }\n if (((targetRectValues.left - containerLeft) + calculatedWidth) > maxWidth) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.width = maxWidth - (targetRectValues.left - containerLeft) + 'px';\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {number} minimumHeight - specifies the number\n * @returns {void}\n */\nexport function setMinHeight(minimumHeight) {\n minHeight = minimumHeight;\n}\n/**\n *\n * @param {number} value - specifies the number value\n * @returns {void}\n */\nexport function setMaxWidth(value) {\n maxWidth = value;\n}\n/**\n *\n * @param {number} value - specifies the number value\n * @returns {void}\n */\nexport function setMaxHeight(value) {\n maxHeight = value;\n}\n/**\n * @returns {void}\n */\nexport function removeResize() {\n var handlers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (var i = 0; i < handlers.length; i++) {\n detach(handlers[i]);\n }\n var borderResizers = targetElement.querySelectorAll('.e-dialog-border-resize');\n if (!isNOU(borderResizers)) {\n for (var i = 0; i < borderResizers.length; i++) {\n detach(borderResizers[i]);\n }\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, Event, Collection, L10n, Complex, compile, createElement } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, detach, attributes, prepend, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, isBlazor } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, append, EventHandler, Draggable, extend } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper, Browser } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup, PositionData, getZindexPartial } from '../popup/popup';\nimport { createResize, removeResize, setMinHeight, setMaxWidth, setMaxHeight } from '../common/resize';\nvar ButtonProps = /** @class */ (function (_super) {\n __extends(ButtonProps, _super);\n function ButtonProps() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], ButtonProps.prototype, \"isFlat\", void 0);\n __decorate([\n Property()\n ], ButtonProps.prototype, \"buttonModel\", void 0);\n __decorate([\n Property('Button')\n ], ButtonProps.prototype, \"type\", void 0);\n __decorate([\n Event()\n ], ButtonProps.prototype, \"click\", void 0);\n return ButtonProps;\n}(ChildProperty));\nexport { ButtonProps };\n/**\n * Configures the animation properties for both open and close the dialog.\n */\nvar AnimationSettings = /** @class */ (function (_super) {\n __extends(AnimationSettings, _super);\n function AnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Fade')\n ], AnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], AnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property(0)\n ], AnimationSettings.prototype, \"delay\", void 0);\n return AnimationSettings;\n}(ChildProperty));\nexport { AnimationSettings };\nvar ROOT = 'e-dialog';\nvar RTL = 'e-rtl';\nvar DLG_HEADER_CONTENT = 'e-dlg-header-content';\nvar DLG_HEADER = 'e-dlg-header';\nvar DLG_FOOTER_CONTENT = 'e-footer-content';\nvar MODAL_DLG = 'e-dlg-modal';\nvar DLG_CONTENT = 'e-dlg-content';\nvar DLG_CLOSE_ICON = 'e-icon-dlg-close';\nvar DLG_OVERLAY = 'e-dlg-overlay';\nvar DLG_TARGET = 'e-dlg-target';\nvar DLG_CONTAINER = 'e-dlg-container';\nvar SCROLL_DISABLED = 'e-scroll-disabled';\nvar DLG_PRIMARY_BUTTON = 'e-primary';\nvar ICON = 'e-icons';\nvar POPUP_ROOT = 'e-popup';\nvar DEVICE = 'e-device';\nvar FULLSCREEN = 'e-dlg-fullscreen';\nvar DLG_CLOSE_ICON_BTN = 'e-dlg-closeicon-btn';\nvar DLG_HIDE = 'e-popup-close';\nvar DLG_SHOW = 'e-popup-open';\nvar DLG_UTIL_DEFAULT_TITLE = 'Information';\nvar DLG_UTIL_ROOT = 'e-scroll-disabled';\nvar DLG_UTIL_ALERT = 'e-alert-dialog';\nvar DLG_UTIL_CONFIRM = 'e-confirm-dialog';\nvar DLG_RESIZABLE = 'e-dlg-resizable';\nvar DLG_RESTRICT_LEFT_VALUE = 'e-restrict-left';\nvar DLG_RESTRICT_WIDTH_VALUE = 'e-resize-viewport';\nvar DLG_REF_ELEMENT = 'e-dlg-ref-element';\nvar DLG_USER_ACTION_CLOSED = 'user action';\nvar DLG_CLOSE_ICON_CLOSED = 'close icon';\nvar DLG_ESCAPE_CLOSED = 'escape';\nvar DLG_OVERLAYCLICK_CLOSED = 'overlayClick';\nvar DLG_DRAG = 'e-draggable';\n/**\n * Represents the dialog component that displays the information and get input from the user.\n * Two types of dialog components are `Modal and Modeless (non-modal)` depending on its interaction with parent application.\n * ```html\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar Dialog = /** @class */ (function (_super) {\n __extends(Dialog, _super);\n /*\n * * Constructor for creating the widget\n *\n * @param\n * @param\n * @hidden\n */\n function Dialog(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.needsID = true;\n return _this;\n }\n /**\n *Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.render = function () {\n this.initialize();\n this.initRender();\n this.wireEvents();\n if (this.width === '100%') {\n this.element.style.width = '';\n }\n if (this.minHeight !== '') {\n this.element.style.minHeight = formatUnit(this.minHeight);\n }\n if (this.enableResize) {\n this.setResize();\n if (this.animationSettings.effect === 'None') {\n this.getMinHeight();\n }\n }\n this.renderComplete();\n };\n Dialog.prototype.initializeValue = function () {\n this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n };\n /**\n *Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.preRender = function () {\n var _this = this;\n this.initializeValue();\n this.headerContent = null;\n this.allowMaxHeight = true;\n this.preventVisibility = true;\n this.clonedEle = this.element.cloneNode(true);\n this.closeIconClickEventHandler = function (event) {\n _this.dlgClosedBy = DLG_CLOSE_ICON_CLOSED;\n _this.hide(event);\n };\n this.dlgOverlayClickEventHandler = function (event) {\n _this.dlgClosedBy = DLG_OVERLAYCLICK_CLOSED;\n event.preventFocus = false;\n _this.trigger('overlayClick', event, function (overlayClickEventArgs) {\n if (!overlayClickEventArgs.preventFocus) {\n _this.focusContent();\n }\n _this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n });\n };\n var localeText = { close: 'Close' };\n this.l10n = new L10n('dialog', localeText, this.locale);\n this.checkPositionData();\n if (isNullOrUndefined(this.target)) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.target = document.body;\n this.isProtectedOnChange = prevOnChange;\n }\n };\n Dialog.prototype.updatePersistData = function () {\n if (this.enablePersistence) {\n this.setProperties({ width: parseFloat(this.element.style.width), height: parseFloat(this.element.style.height),\n position: { X: parseFloat(this.dragObj.element.style.left), Y: parseFloat(this.dragObj.element.style.top) } }, true);\n }\n };\n Dialog.prototype.isNumberValue = function (value) {\n var isNumber = /^[-+]?\\d*\\.?\\d+$/.test(value);\n return isNumber;\n };\n Dialog.prototype.checkPositionData = function () {\n if (!isNullOrUndefined(this.position)) {\n if (!isNullOrUndefined(this.position.X) && (typeof (this.position.X) !== 'number')) {\n var isNumber = this.isNumberValue(this.position.X);\n if (isNumber) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.X = parseFloat(this.position.X);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n if (!isNullOrUndefined(this.position.Y) && (typeof (this.position.Y) !== 'number')) {\n var isNumber = this.isNumberValue(this.position.Y);\n if (isNumber) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.Y = parseFloat(this.position.Y);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n }\n };\n Dialog.prototype.getEle = function (list, selector) {\n var element = undefined;\n for (var i = 0; i < list.length; i++) {\n if (list[i].classList.contains(selector)) {\n element = list[i];\n break;\n }\n }\n return element;\n };\n /* istanbul ignore next */\n Dialog.prototype.getMinHeight = function () {\n var computedHeaderHeight = '0px';\n var computedFooterHeight = '0px';\n if (!isNullOrUndefined(this.element.querySelector('.' + DLG_HEADER_CONTENT))) {\n computedHeaderHeight = getComputedStyle(this.headerContent).height;\n }\n var footerEle = this.getEle(this.element.children, DLG_FOOTER_CONTENT);\n if (!isNullOrUndefined(footerEle)) {\n computedFooterHeight = getComputedStyle(footerEle).height;\n }\n var headerHeight = parseInt(computedHeaderHeight.slice(0, computedHeaderHeight.indexOf('p')), 10);\n var footerHeight = parseInt(computedFooterHeight.slice(0, computedFooterHeight.indexOf('p')), 10);\n setMinHeight(headerHeight + 30 + (isNaN(footerHeight) ? 0 : footerHeight));\n return (headerHeight + 30 + footerHeight);\n };\n Dialog.prototype.onResizeStart = function (args, dialogObj) {\n dialogObj.trigger('resizeStart', args);\n return args.cancel;\n };\n Dialog.prototype.onResizing = function (args, dialogObj) {\n dialogObj.trigger('resizing', args);\n };\n Dialog.prototype.onResizeComplete = function (args, dialogObj) {\n dialogObj.trigger('resizeStop', args);\n this.updatePersistData();\n };\n Dialog.prototype.setResize = function () {\n if (this.enableResize) {\n if (this.isBlazorServerRender() && !isNullOrUndefined(this.element.querySelector('.e-icons.e-resize-handle'))) {\n return;\n }\n this.element.classList.add(DLG_RESIZABLE);\n var computedHeight = getComputedStyle(this.element).minHeight;\n var computedWidth = getComputedStyle(this.element).minWidth;\n var direction = '';\n for (var i = 0; i < this.resizeHandles.length; i++) {\n if (this.resizeHandles[i] === 'All') {\n direction = 'south north east west north-east north-west south-east south-west';\n break;\n }\n else {\n var directionValue = '';\n switch (this.resizeHandles[i].toString()) {\n case 'SouthEast':\n directionValue = 'south-east';\n break;\n case 'SouthWest':\n directionValue = 'south-west';\n break;\n case 'NorthEast':\n directionValue = 'north-east';\n break;\n case 'NorthWest':\n directionValue = 'north-west';\n break;\n default:\n directionValue = this.resizeHandles[i].toString();\n break;\n }\n direction += directionValue.toLocaleLowerCase() + ' ';\n }\n }\n if (this.enableRtl && direction.trim() === 'south-east') {\n direction = 'south-west';\n }\n else if (this.enableRtl && direction.trim() === 'south-west') {\n direction = 'south-east';\n }\n if (this.isModal && this.enableRtl) {\n this.element.classList.add(DLG_RESTRICT_LEFT_VALUE);\n }\n else if (this.isModal && this.target === document.body) {\n this.element.classList.add(DLG_RESTRICT_WIDTH_VALUE);\n }\n createResize({\n element: this.element,\n direction: direction,\n minHeight: parseInt(computedHeight.slice(0, computedWidth.indexOf('p')), 10),\n maxHeight: this.targetEle.clientHeight,\n minWidth: parseInt(computedWidth.slice(0, computedWidth.indexOf('p')), 10),\n maxWidth: this.targetEle.clientWidth,\n boundary: this.target === document.body ? null : this.targetEle,\n resizeBegin: this.onResizeStart.bind(this),\n resizeComplete: this.onResizeComplete.bind(this),\n resizing: this.onResizing.bind(this),\n proxy: this\n });\n this.wireWindowResizeEvent();\n }\n else {\n removeResize();\n this.unWireWindowResizeEvent();\n if (this.isModal) {\n this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n }\n else {\n this.element.classList.remove(DLG_RESTRICT_WIDTH_VALUE);\n }\n this.element.classList.remove(DLG_RESIZABLE);\n }\n };\n Dialog.prototype.getFocusElement = function (target) {\n var value = 'input,select,textarea,button:enabled,a,[contenteditable=\"true\"],[tabindex]';\n var items = target.querySelectorAll(value);\n return { element: items[items.length - 1] };\n };\n /* istanbul ignore next */\n Dialog.prototype.keyDown = function (event) {\n var _this = this;\n if (event.keyCode === 9) {\n if (this.isModal) {\n var buttonObj = void 0;\n if (!isNullOrUndefined(this.btnObj)) {\n buttonObj = this.btnObj[this.btnObj.length - 1];\n }\n if ((isNullOrUndefined(this.btnObj)) && (!isNullOrUndefined(this.ftrTemplateContent))) {\n buttonObj = this.getFocusElement(this.ftrTemplateContent);\n }\n if (isNullOrUndefined(this.btnObj) && isNullOrUndefined(this.ftrTemplateContent) && !isNullOrUndefined(this.contentEle)) {\n buttonObj = this.getFocusElement(this.contentEle);\n }\n if (!isNullOrUndefined(buttonObj) && document.activeElement === buttonObj.element && !event.shiftKey) {\n event.preventDefault();\n this.focusableElements(this.element).focus();\n }\n if (document.activeElement === this.focusableElements(this.element) && event.shiftKey) {\n event.preventDefault();\n if (!isNullOrUndefined(buttonObj)) {\n buttonObj.element.focus();\n }\n }\n }\n }\n var element = document.activeElement;\n var isTagName = (['input', 'textarea'].indexOf(element.tagName.toLowerCase()) > -1);\n var isContentEdit = false;\n if (!isTagName) {\n isContentEdit = element.hasAttribute('contenteditable') && element.getAttribute('contenteditable') === 'true';\n }\n if (event.keyCode === 27 && this.closeOnEscape) {\n this.dlgClosedBy = DLG_ESCAPE_CLOSED;\n var query = document.querySelector('.e-popup-open:not(.e-dialog)');\n // 'document.querySelector' is used to find the elements rendered based on body\n if (!(!isNullOrUndefined(query) && !query.classList.contains('e-toolbar-pop'))) {\n this.hide(event);\n }\n }\n if ((event.keyCode === 13 && !event.ctrlKey && element.tagName.toLowerCase() !== 'textarea' &&\n isTagName && !isNullOrUndefined(this.primaryButtonEle)) ||\n (event.keyCode === 13 && event.ctrlKey && (element.tagName.toLowerCase() === 'textarea' ||\n isContentEdit)) && !isNullOrUndefined(this.primaryButtonEle)) {\n var buttonIndex_1;\n var firstPrimary = this.buttons.some(function (data, index) {\n buttonIndex_1 = index;\n // eslint-disable-next-line\n var buttonModel = data.buttonModel;\n return !isNullOrUndefined(buttonModel) && buttonModel.isPrimary === true;\n });\n if (firstPrimary && typeof (this.buttons[buttonIndex_1].click) === 'function') {\n setTimeout(function () {\n _this.buttons[buttonIndex_1].click.call(_this, event);\n });\n }\n }\n };\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.initialize = function () {\n if (!isNullOrUndefined(this.target)) {\n this.targetEle = ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target;\n }\n if (!this.isBlazorServerRender()) {\n addClass([this.element], ROOT);\n }\n if (Browser.isDevice) {\n addClass([this.element], DEVICE);\n }\n if (!this.isBlazorServerRender()) {\n this.setCSSClass();\n }\n this.setMaxHeight();\n };\n /**\n * Initialize the rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.initRender = function () {\n var _this = this;\n this.initialRender = true;\n if (!this.isBlazorServerRender()) {\n attributes(this.element, { role: 'dialog' });\n }\n if (this.zIndex === 1000) {\n this.setzIndex(this.element, false);\n this.calculatezIndex = true;\n }\n else {\n this.calculatezIndex = false;\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.element.getElementsByClassName('e-dlg-header-content')[0];\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.contentEle)) {\n this.contentEle = this.element.querySelector('#' + this.element.id + '_dialog-content');\n }\n if (!this.isBlazorServerRender()) {\n this.setTargetContent();\n if (this.header !== '' && !isNullOrUndefined(this.header)) {\n this.setHeader();\n }\n this.renderCloseIcon();\n this.setContent();\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setFooterTemplate();\n }\n else if (!isNullOrUndefined(this.buttons[0].buttonModel)) {\n this.setButton();\n }\n }\n if (this.isBlazorServerRender()) {\n if (!isNullOrUndefined(this.buttons[0].buttonModel) && this.footerTemplate === '') {\n this.setButton();\n }\n }\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n if (!this.isBlazorServerRender()) {\n attributes(this.element, { 'aria-modal': (this.isModal ? 'true' : 'false') });\n if (this.isModal) {\n this.setIsModal();\n }\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.dlgContainer)) {\n this.dlgContainer = this.element.parentElement;\n for (var i = 0, childNodes = this.dlgContainer.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains('e-dlg-overlay')) {\n this.dlgOverlay = childNodes[i];\n }\n }\n }\n if (this.element.classList.contains(DLG_UTIL_ALERT) !== true && this.element.classList.contains(DLG_UTIL_CONFIRM) !== true\n && !isNullOrUndefined(this.element.parentElement)) {\n var parentEle = this.isModal ? this.dlgContainer.parentElement : this.element.parentElement;\n this.refElement = this.createElement('div', { className: DLG_REF_ELEMENT });\n parentEle.insertBefore(this.refElement, (this.isModal ? this.dlgContainer : this.element));\n }\n if (!isNullOrUndefined(this.targetEle)) {\n // eslint-disable-next-line\n this.isModal ? this.targetEle.appendChild(this.dlgContainer) : this.targetEle.appendChild(this.element);\n }\n this.popupObj = new Popup(this.element, {\n height: this.height,\n width: this.width,\n zIndex: this.zIndex,\n relateTo: this.target,\n actionOnScroll: 'none',\n enableRtl: this.enableRtl,\n // eslint-disable-next-line\n open: function (event) {\n var eventArgs = {\n container: _this.isModal ? _this.dlgContainer : _this.element,\n element: _this.element,\n target: _this.target,\n preventFocus: false\n };\n if (_this.enableResize) {\n _this.resetResizeIcon();\n }\n _this.trigger('open', eventArgs, function (openEventArgs) {\n if (!openEventArgs.preventFocus) {\n _this.focusContent();\n }\n });\n },\n // eslint-disable-next-line\n close: function (event) {\n if (_this.isModal) {\n addClass([_this.dlgOverlay], 'e-fade');\n }\n _this.unBindEvent(_this.element);\n if (_this.isModal) {\n _this.dlgContainer.style.display = 'none';\n }\n _this.trigger('close', _this.closeArgs);\n var activeEle = document.activeElement;\n if (!isNullOrUndefined(activeEle) && !isNullOrUndefined((activeEle).blur)) {\n activeEle.blur();\n }\n if (!isNullOrUndefined(_this.storeActiveElement) && !isNullOrUndefined(_this.storeActiveElement.focus)) {\n _this.storeActiveElement.focus();\n }\n }\n });\n this.positionChange();\n this.setEnableRTL();\n if (!this.isBlazorServerRender()) {\n addClass([this.element], DLG_HIDE);\n if (this.isModal) {\n this.setOverlayZindex();\n }\n }\n if (this.visible) {\n this.show();\n }\n else {\n if (this.isModal) {\n this.dlgOverlay.style.display = 'none';\n }\n }\n this.initialRender = false;\n };\n Dialog.prototype.resetResizeIcon = function () {\n var dialogConHeight = this.getMinHeight();\n if (this.targetEle.offsetHeight < dialogConHeight) {\n var className = this.enableRtl ? 'e-south-west' : 'e-south-east';\n var resizeIcon = this.element.querySelector('.' + className);\n if (!isNullOrUndefined(resizeIcon)) {\n resizeIcon.style.bottom = '-' + dialogConHeight.toString() + 'px';\n }\n }\n };\n Dialog.prototype.setOverlayZindex = function (zIndexValue) {\n var zIndex;\n if (isNullOrUndefined(zIndexValue)) {\n zIndex = parseInt(this.element.style.zIndex, 10) ? parseInt(this.element.style.zIndex, 10) : this.zIndex;\n }\n else {\n zIndex = zIndexValue;\n }\n this.dlgOverlay.style.zIndex = (zIndex - 1).toString();\n this.dlgContainer.style.zIndex = zIndex.toString();\n };\n Dialog.prototype.positionChange = function () {\n if (this.isModal) {\n if (!isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y))) {\n this.setPopupPosition();\n }\n else if ((!isNaN(parseFloat(this.position.X)) && isNaN(parseFloat(this.position.Y)))\n || (isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y)))) {\n this.setPopupPosition();\n }\n else {\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n this.dlgContainer.classList.add('e-dlg-' + this.position.X + '-' + this.position.Y);\n }\n }\n else {\n this.setPopupPosition();\n }\n };\n Dialog.prototype.setPopupPosition = function () {\n this.popupObj.setProperties({\n position: {\n X: this.position.X, Y: this.position.Y\n }\n });\n };\n Dialog.prototype.setAllowDragging = function () {\n var _this = this;\n var handleContent = '.' + DLG_HEADER_CONTENT;\n if (!this.element.classList.contains(DLG_DRAG)) {\n this.dragObj = new Draggable(this.element, {\n clone: false,\n isDragScroll: true,\n abort: '.e-dlg-closeicon-btn',\n handle: handleContent,\n dragStart: function (event) {\n _this.trigger('dragStart', event, function (dragEventArgs) {\n if (isBlazor()) {\n dragEventArgs.bindEvents(event.dragElement);\n }\n });\n },\n dragStop: function (event) {\n if (_this.isModal) {\n if (!isNullOrUndefined(_this.position)) {\n _this.dlgContainer.classList.remove('e-dlg-' + _this.position.X + '-' + _this.position.Y);\n }\n // Reset the dialog position after drag completion.\n _this.element.style.position = 'relative';\n }\n _this.trigger('dragStop', event);\n _this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n _this.updatePersistData();\n },\n drag: function (event) {\n _this.trigger('drag', event);\n }\n });\n if (!isNullOrUndefined(this.targetEle)) {\n this.dragObj.dragArea = this.targetEle;\n }\n }\n };\n Dialog.prototype.setButton = function () {\n if (!this.isBlazorServerRender()) {\n this.buttonContent = [];\n this.btnObj = [];\n // eslint-disable-next-line\n var primaryBtnFlag = true;\n for (var i = 0; i < this.buttons.length; i++) {\n var buttonType = !isNullOrUndefined(this.buttons[i].type) ? this.buttons[i].type.toLowerCase() : 'button';\n var btn = this.createElement('button', { className: this.cssClass, attrs: { type: buttonType } });\n this.buttonContent.push(btn.outerHTML);\n }\n this.setFooterTemplate();\n }\n var footerBtn;\n for (var i = 0, childNodes = this.element.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(DLG_FOOTER_CONTENT)) {\n footerBtn = childNodes[i].querySelectorAll('button');\n }\n }\n for (var i = 0; i < this.buttons.length; i++) {\n if (!this.isBlazorServerRender()) {\n this.btnObj[i] = new Button(this.buttons[i].buttonModel);\n }\n if (this.isBlazorServerRender()) {\n this.ftrTemplateContent = this.element.querySelector('.' + DLG_FOOTER_CONTENT);\n }\n if (!isNullOrUndefined(this.ftrTemplateContent) && footerBtn.length > 0) {\n if (typeof (this.buttons[i].click) === 'function') {\n EventHandler.add(footerBtn[i], 'click', this.buttons[i].click, this);\n }\n if (typeof (this.buttons[i].click) === 'object') {\n EventHandler.add(footerBtn[i], 'click', this.buttonClickHandler.bind(this, i), this);\n }\n }\n if (!this.isBlazorServerRender() && !isNullOrUndefined(this.ftrTemplateContent)) {\n this.btnObj[i].appendTo(this.ftrTemplateContent.children[i]);\n if (this.buttons[i].isFlat) {\n this.btnObj[i].element.classList.add('e-flat');\n }\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n }\n };\n Dialog.prototype.buttonClickHandler = function (index) {\n this.trigger('buttons[' + index + '].click', {});\n };\n Dialog.prototype.setContent = function () {\n this.contentEle = this.createElement('div', { className: DLG_CONTENT, id: this.element.id + '_dialog-content' });\n if (this.innerContentElement) {\n this.contentEle.appendChild(this.innerContentElement);\n }\n else if (!isNullOrUndefined(this.content) && this.content !== '' || !this.initialRender) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (typeof (this.content) === 'string' && !isBlazor()) {\n this.setTemplate(this.content, this.contentEle, 'content');\n }\n else if (this.content instanceof HTMLElement) {\n this.contentEle.appendChild(this.content);\n }\n else {\n this.setTemplate(this.content, this.contentEle, 'content');\n }\n }\n if (!isNullOrUndefined(this.headerContent)) {\n this.element.insertBefore(this.contentEle, this.element.children[1]);\n }\n else {\n this.element.insertBefore(this.contentEle, this.element.children[0]);\n }\n if (this.height === 'auto') {\n if (!this.isBlazorServerRender() && Browser.isIE && this.element.style.width === '' && !isNullOrUndefined(this.width)) {\n this.element.style.width = formatUnit(this.width);\n }\n this.setMaxHeight();\n }\n };\n Dialog.prototype.setTemplate = function (template, toElement, prop) {\n var templateFn;\n var templateProps;\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (toElement.classList.contains(DLG_HEADER)) {\n templateProps = this.element.id + 'header';\n }\n else if (toElement.classList.contains(DLG_FOOTER_CONTENT)) {\n templateProps = this.element.id + 'footerTemplate';\n }\n else {\n templateProps = this.element.id + 'content';\n }\n var templateValue;\n if (!isNullOrUndefined(template.outerHTML)) {\n toElement.appendChild(template);\n }\n else if ((typeof template === 'string') || (typeof template !== 'string') || (isBlazor() && !this.isStringTemplate)) {\n if ((typeof template === 'string')) {\n template = this.sanitizeHelper(template);\n }\n if (this.isVue || typeof template !== 'string') {\n templateFn = compile(template);\n templateValue = template;\n }\n else {\n toElement.innerHTML = template;\n }\n }\n var fromElements = [];\n if (!isNullOrUndefined(templateFn)) {\n var isString = (isBlazor() &&\n !this.isStringTemplate && (templateValue).indexOf('
    Blazor') === 0) ?\n this.isStringTemplate : true;\n for (var _i = 0, _a = templateFn({}, this, prop, templateProps, isString); _i < _a.length; _i++) {\n var item = _a[_i];\n fromElements.push(item);\n }\n append([].slice.call(fromElements), toElement);\n }\n };\n /*\n * @returns {void}\n * @hidden\n * @value\n */\n Dialog.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var dialogItem = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(dialogItem, dialogItem, beforeEvent);\n this.trigger('beforeSanitizeHtml', dialogItem);\n if (dialogItem.cancel && !isNullOrUndefined(dialogItem.helper)) {\n value = dialogItem.helper(value);\n }\n else if (!dialogItem.cancel) {\n value = SanitizeHtmlHelper.serializeValue(dialogItem, value);\n }\n }\n return value;\n };\n Dialog.prototype.setMaxHeight = function () {\n if (!this.allowMaxHeight) {\n return;\n }\n var display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = (!isNullOrUndefined(this.target)) && (this.targetEle.offsetHeight < window.innerHeight) ?\n (this.targetEle.offsetHeight - 20) + 'px' : (window.innerHeight - 20) + 'px';\n this.element.style.display = display;\n if (Browser.isIE && this.height === 'auto' && !isNullOrUndefined(this.contentEle)\n && this.element.offsetHeight < this.contentEle.offsetHeight) {\n this.element.style.height = 'inherit';\n }\n };\n Dialog.prototype.setEnableRTL = function () {\n if (!this.isBlazorServerRender()) {\n // eslint-disable-next-line\n this.enableRtl ? addClass([this.element], RTL) : removeClass([this.element], RTL);\n }\n if (!isNullOrUndefined(this.element.querySelector('.e-resize-handle'))) {\n removeResize();\n this.setResize();\n }\n };\n Dialog.prototype.setTargetContent = function () {\n var _this = this;\n if (isNullOrUndefined(this.content) || this.content === '') {\n var isContent = this.element.innerHTML.replace(/\\s|<(\\/?|\\/?)(!--!--)>/g, '') !== '';\n if (this.element.children.length > 0 || isContent) {\n this.innerContentElement = document.createDocumentFragment();\n [].slice.call(this.element.childNodes).forEach(function (el) {\n if (el.nodeType !== 8) {\n _this.innerContentElement.appendChild(el);\n }\n });\n }\n }\n };\n Dialog.prototype.setHeader = function () {\n if (this.headerEle) {\n this.headerEle.innerHTML = '';\n }\n else {\n this.headerEle = this.createElement('div', { id: this.element.id + '_title', className: DLG_HEADER });\n }\n this.createHeaderContent();\n this.headerContent.appendChild(this.headerEle);\n this.setTemplate(this.header, this.headerEle, 'header');\n attributes(this.element, { 'aria-labelledby': this.element.id + '_title' });\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n };\n Dialog.prototype.setFooterTemplate = function () {\n if (this.ftrTemplateContent) {\n this.ftrTemplateContent.innerHTML = '';\n }\n else {\n this.ftrTemplateContent = this.createElement('div', {\n className: DLG_FOOTER_CONTENT\n });\n }\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setTemplate(this.footerTemplate, this.ftrTemplateContent, 'footerTemplate');\n }\n else {\n this.ftrTemplateContent.innerHTML = this.buttonContent.join('');\n }\n this.element.appendChild(this.ftrTemplateContent);\n };\n Dialog.prototype.createHeaderContent = function () {\n if (isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.createElement('div', { id: this.element.id + '_dialog-header', className: DLG_HEADER_CONTENT });\n }\n };\n Dialog.prototype.renderCloseIcon = function () {\n if (this.showCloseIcon) {\n this.closeIcon = this.createElement('button', { className: DLG_CLOSE_ICON_BTN, attrs: { type: 'button' } });\n this.closeIconBtnObj = new Button({ cssClass: 'e-flat', iconCss: DLG_CLOSE_ICON + ' ' + ICON });\n this.closeIconTitle();\n if (!isNullOrUndefined(this.headerContent)) {\n prepend([this.closeIcon], this.headerContent);\n }\n else {\n this.createHeaderContent();\n prepend([this.closeIcon], this.headerContent);\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n }\n this.closeIconBtnObj.appendTo(this.closeIcon);\n }\n };\n Dialog.prototype.closeIconTitle = function () {\n this.l10n.setLocale(this.locale);\n var closeIconTitle = this.l10n.getConstant('close');\n this.closeIcon.setAttribute('title', closeIconTitle);\n this.closeIcon.setAttribute('aria-label', closeIconTitle);\n };\n Dialog.prototype.setCSSClass = function (oldCSSClass) {\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n if (this.isModal && !isNullOrUndefined(this.dlgContainer)) {\n removeClass([this.dlgContainer], oldCSSClass.split(' '));\n }\n }\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n if (this.isModal && !isNullOrUndefined(this.dlgContainer)) {\n addClass([this.dlgContainer], this.cssClass.split(' '));\n }\n }\n };\n Dialog.prototype.setIsModal = function () {\n this.dlgContainer = this.createElement('div', { className: DLG_CONTAINER });\n this.setCSSClass();\n this.element.classList.remove(DLG_SHOW);\n this.element.parentNode.insertBefore(this.dlgContainer, this.element);\n this.dlgContainer.appendChild(this.element);\n addClass([this.element], MODAL_DLG);\n this.dlgOverlay = this.createElement('div', { className: DLG_OVERLAY });\n this.dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.dlgContainer.appendChild(this.dlgOverlay);\n };\n Dialog.prototype.getValidFocusNode = function (items) {\n var node;\n for (var u = 0; u < items.length; u++) {\n node = items[u];\n if ((node.clientHeight > 0 || (node.tagName.toLowerCase() === 'a' && node.hasAttribute('href'))) && node.tabIndex > -1 &&\n !node.disabled && !this.disableElement(node, '[disabled],[aria-disabled=\"true\"],[type=\"hidden\"]')) {\n return node;\n }\n else {\n node = null;\n }\n }\n return node;\n };\n Dialog.prototype.focusableElements = function (content) {\n if (!isNullOrUndefined(content)) {\n var value = 'input,select,textarea,button,a,[contenteditable=\"true\"],[tabindex]';\n var items = content.querySelectorAll(value);\n return this.getValidFocusNode(items);\n }\n return null;\n };\n Dialog.prototype.getAutoFocusNode = function (container) {\n var node = container.querySelector('.' + DLG_CLOSE_ICON_BTN);\n var value = '[autofocus]';\n var items = container.querySelectorAll(value);\n var validNode = this.getValidFocusNode(items);\n if (isBlazor()) {\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n if (!isNullOrUndefined(validNode)) {\n node = validNode;\n }\n else {\n validNode = this.focusableElements(this.contentEle);\n if (!isNullOrUndefined(validNode)) {\n return node = validNode;\n }\n else if (!isNullOrUndefined(this.primaryButtonEle)) {\n return this.element.querySelector('.' + DLG_PRIMARY_BUTTON);\n }\n }\n return node;\n };\n Dialog.prototype.disableElement = function (element, t) {\n var elementMatch = element ? element.matches || element.webkitMatchesSelector || element.msGetRegionContent : null;\n if (elementMatch) {\n for (; element; element = element.parentNode) {\n if (element instanceof Element && elementMatch.call(element, t)) {\n /* istanbul ignore next */\n return element;\n }\n }\n }\n return null;\n };\n Dialog.prototype.focusContent = function () {\n var element = this.getAutoFocusNode(this.element);\n var node = !isNullOrUndefined(element) ? element : this.element;\n var userAgent = Browser.userAgent;\n if (userAgent.indexOf('MSIE ') > 0 || userAgent.indexOf('Trident/') > 0) {\n this.element.focus();\n }\n node.focus();\n this.unBindEvent(this.element);\n this.bindEvent(this.element);\n };\n Dialog.prototype.bindEvent = function (element) {\n EventHandler.add(element, 'keydown', this.keyDown, this);\n };\n Dialog.prototype.unBindEvent = function (element) {\n EventHandler.remove(element, 'keydown', this.keyDown);\n };\n Dialog.prototype.updateSanitizeContent = function () {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = this.sanitizeHelper(this.content);\n }\n };\n Dialog.prototype.isBlazorServerRender = function () {\n return isBlazor() && this.isServerRendered;\n };\n /**\n * Module required function\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.getModuleName = function () {\n return 'dialog';\n };\n /**\n * Called internally if any of the property value changed\n *\n * @param {DialogModel} newProp - specifies the new property\n * @param {DialogModel} oldProp - specifies the old property\n * @private\n * @returns {void}\n */\n Dialog.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'content':\n if (!isNullOrUndefined(this.content) && this.content !== '') {\n if (this.isBlazorServerRender()) {\n this.contentEle = this.element.querySelector('.e-dlg-content');\n }\n if (!isNullOrUndefined(this.contentEle) && this.contentEle.getAttribute('role') !== 'dialog') {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = '';\n }\n if (typeof (this.content) === 'function') {\n this.clearTemplate(['content']);\n detach(this.contentEle);\n this.contentEle = null;\n this.setContent();\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n typeof (this.content) === 'string' ? (this.isBlazorServerRender() && (this.contentEle.innerText === '')) ?\n this.contentEle.insertAdjacentHTML('beforeend', this.sanitizeHelper(this.content)) :\n this.updateSanitizeContent() : this.contentEle.appendChild(this.content);\n }\n this.setMaxHeight();\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-dlg-content'))) {\n this.setContent();\n }\n }\n }\n else if (!isNullOrUndefined(this.contentEle)) {\n detach(this.contentEle);\n this.contentEle = null;\n }\n break;\n case 'header':\n if (this.header === '' || isNullOrUndefined(this.header)) {\n if (this.headerEle) {\n detach(this.headerEle);\n this.headerEle = null;\n }\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-dlg-header-content'))) {\n this.setHeader();\n }\n }\n break;\n case 'footerTemplate':\n if (this.footerTemplate === '' || isNullOrUndefined(this.footerTemplate)) {\n if (!this.ftrTemplateContent) {\n return;\n }\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n this.buttons = [{}];\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-footer-content'))) {\n this.setFooterTemplate();\n }\n this.buttons = [{}];\n }\n break;\n case 'showCloseIcon':\n if (this.element.getElementsByClassName(DLG_CLOSE_ICON).length > 0) {\n if (!this.showCloseIcon && (this.header === '' || isNullOrUndefined(this.header))) {\n detach(this.headerContent);\n this.headerContent = null;\n }\n else if (!this.showCloseIcon) {\n detach(this.closeIcon);\n }\n else {\n if (this.isBlazorServerRender()) {\n this.wireEvents();\n }\n }\n }\n else {\n if (!this.isBlazorServerRender()) {\n this.renderCloseIcon();\n }\n this.wireEvents();\n }\n break;\n case 'locale':\n if (this.showCloseIcon) {\n this.closeIconTitle();\n }\n break;\n case 'visible':\n // eslint-disable-next-line\n this.visible ? this.show() : this.hide();\n break;\n case 'isModal':\n this.updateIsModal();\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n this.updatePersistData();\n break;\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n this.updatePersistData();\n break;\n case 'zIndex':\n this.popupObj.zIndex = this.zIndex;\n if (this.isModal) {\n this.setOverlayZindex(this.zIndex);\n }\n if (this.element.style.zIndex !== this.zIndex.toString()) {\n this.calculatezIndex = false;\n }\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'buttons': {\n var buttonCount = this.buttons.length;\n if (!isNullOrUndefined(this.ftrTemplateContent) && !this.isBlazorServerRender()) {\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n }\n for (var i = 0; i < buttonCount; i++) {\n if (!isNullOrUndefined(this.buttons[i].buttonModel)) {\n this.footerTemplate = '';\n this.setButton();\n }\n }\n break;\n }\n case 'allowDragging':\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n else {\n this.dragObj.destroy();\n }\n break;\n case 'target':\n this.setTarget(newProp.target);\n break;\n case 'position':\n this.checkPositionData();\n if (this.isModal) {\n var positionX = !isNullOrUndefined(oldProp.position) && !isNullOrUndefined(oldProp.position.X) ? oldProp.position.X : this.position.X;\n var positionY = !isNullOrUndefined(oldProp.position) && !isNullOrUndefined(oldProp.position.Y) ? oldProp.position.Y : this.position.Y;\n if (this.dlgContainer.classList.contains('e-dlg-' + positionX + '-' + positionY)) {\n this.dlgContainer.classList.remove('e-dlg-' + positionX + '-' + positionY);\n }\n }\n this.positionChange();\n this.updatePersistData();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n case 'enableResize':\n this.setResize();\n break;\n case 'minHeight':\n if (this.minHeight !== '') {\n this.element.style.minHeight = formatUnit(this.minHeight);\n }\n break;\n }\n }\n };\n Dialog.prototype.setTarget = function (target) {\n this.popupObj.relateTo = target;\n this.target = target;\n this.targetEle = ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target;\n if (this.dragObj) {\n this.dragObj.dragArea = this.targetEle;\n }\n this.setMaxHeight();\n if (this.isModal) {\n this.updateIsModal();\n }\n if (this.enableResize) {\n this.setResize();\n }\n };\n Dialog.prototype.updateIsModal = function () {\n this.element.setAttribute('aria-modal', this.isModal ? 'true' : 'false');\n if (this.isModal) {\n if (isNullOrUndefined(this.dlgOverlay)) {\n this.setIsModal();\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n if (!isNullOrUndefined(this.targetEle)) {\n this.targetEle.appendChild(this.dlgContainer);\n }\n }\n }\n else {\n removeClass([this.element], MODAL_DLG);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n detach(this.dlgOverlay);\n while (this.dlgContainer.firstChild) {\n this.dlgContainer.parentElement.insertBefore(this.dlgContainer.firstChild, this.dlgContainer);\n }\n this.dlgContainer.parentElement.removeChild(this.dlgContainer);\n }\n if (this.visible) {\n this.show();\n }\n this.positionChange();\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n };\n Dialog.prototype.setzIndex = function (zIndexElement, setPopupZindex) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n var currentzIndex = getZindexPartial(zIndexElement);\n this.zIndex = currentzIndex > this.zIndex ? currentzIndex : this.zIndex;\n this.isProtectedOnChange = prevOnChange;\n if (setPopupZindex) {\n this.popupObj.zIndex = this.zIndex;\n }\n };\n Dialog.prototype.windowResizeHandler = function () {\n setMaxWidth(this.targetEle.clientWidth);\n setMaxHeight(this.targetEle.clientHeight);\n this.setMaxHeight();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.getPersistData = function () {\n return this.addOnPersist(['width', 'height', 'position']);\n };\n /**\n * To destroy the widget\n *\n * @returns {void}\n */\n Dialog.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n var classArray = [RTL, MODAL_DLG, DLG_RESIZABLE, DLG_RESTRICT_LEFT_VALUE, FULLSCREEN, DEVICE];\n var attrs = ['role', 'aria-modal', 'aria-labelledby', 'aria-describedby', 'aria-grabbed', 'tabindex', 'style'];\n removeClass([this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n if (!isNullOrUndefined(this.element) && this.element.classList.contains(FULLSCREEN)) {\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n if (this.isModal) {\n removeClass([(!isNullOrUndefined(this.targetEle) ? this.targetEle : document.body)], SCROLL_DISABLED);\n }\n this.unWireEvents();\n if (!isNullOrUndefined(this.btnObj)) {\n for (var i = 0; i < this.btnObj.length; i++) {\n this.btnObj[i].destroy();\n }\n }\n if (!isNullOrUndefined(this.closeIconBtnObj)) {\n this.closeIconBtnObj.destroy();\n }\n if (!isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n if (!isNullOrUndefined(this.popupObj.element) && this.popupObj.element.classList.contains(POPUP_ROOT)) {\n this.popupObj.destroy();\n }\n removeClass([this.element], classArray);\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n removeClass([this.element], this.cssClass.split(' '));\n }\n if (!isNullOrUndefined(this.refElement) && !isNullOrUndefined(this.refElement.parentElement)) {\n this.refElement.parentElement.insertBefore((this.isModal ? this.dlgContainer : this.element), this.refElement);\n detach(this.refElement);\n this.refElement = undefined;\n }\n if (this.isModal && !this.isBlazorServerRender()) {\n detach(this.dlgOverlay);\n this.dlgContainer.parentNode.insertBefore(this.element, this.dlgContainer);\n detach(this.dlgContainer);\n }\n if (!this.isBlazorServerRender()) {\n this.element.innerHTML = this.clonedEle.innerHTML;\n }\n if (this.isBlazorServerRender()) {\n if (!isNullOrUndefined(this.element.children)) {\n for (var i = 0; i <= this.element.children.length; i++) {\n i = i - i;\n detach(this.element.children[i]);\n }\n }\n }\n for (var i = 0; i < attrs.length; i++) {\n this.element.removeAttribute(attrs[i]);\n }\n this.ftrTemplateContent = null;\n this.headerContent = null;\n this.contentEle = null;\n if (!this.isBlazorServerRender()) {\n _super.prototype.destroy.call(this);\n }\n else {\n this.isDestroyed = true;\n }\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n };\n Dialog.prototype.wireWindowResizeEvent = function () {\n window.addEventListener('resize', this.windowResizeHandler.bind(this));\n };\n Dialog.prototype.unWireWindowResizeEvent = function () {\n window.removeEventListener('resize', this.windowResizeHandler.bind(this));\n };\n /**\n * Binding event to the element while widget creation\n *\n * @returns {void}\n * @hidden\n */\n Dialog.prototype.wireEvents = function () {\n if (this.isBlazorServerRender() && this.showCloseIcon) {\n this.closeIcon = this.element.getElementsByClassName('e-dlg-closeicon-btn')[0];\n }\n if (this.showCloseIcon) {\n EventHandler.add(this.closeIcon, 'click', this.closeIconClickEventHandler, this);\n }\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n };\n /**\n * Unbinding event to the element while widget destroy\n *\n * @returns {void}\n * @hidden\n */\n Dialog.prototype.unWireEvents = function () {\n if (this.showCloseIcon) {\n EventHandler.remove(this.closeIcon, 'click', this.closeIconClickEventHandler);\n }\n if (this.isModal) {\n EventHandler.remove(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler);\n }\n if (this.buttons.length > 0 && !isNullOrUndefined(this.buttons[0].buttonModel) && this.footerTemplate === '') {\n for (var i = 0; i < this.buttons.length; i++) {\n if (typeof (this.buttons[i].click) === 'function') {\n EventHandler.remove(this.ftrTemplateContent.children[i], 'click', this.buttons[i].click);\n }\n }\n }\n };\n /**\n * Refreshes the dialog's position when the user changes its header and footer height/width dynamically.\n *\n * @returns {void}\n */\n Dialog.prototype.refreshPosition = function () {\n this.popupObj.refreshPosition();\n if (this.element.classList.contains(MODAL_DLG)) {\n this.positionChange();\n }\n };\n /**\n * Returns the current width and height of the Dialog\n *\n * @returns {DialogDimension}- returns the dialog element Dimension.\n * @public\n */\n Dialog.prototype.getDimension = function () {\n var dialogWidth = this.element.offsetWidth;\n var dialogHeight = this.element.offsetHeight;\n return { width: dialogWidth, height: dialogHeight };\n };\n /**\n * Opens the dialog if it is in hidden state.\n * To open the dialog with full screen width, set the parameter to true.\n *\n * @param { boolean } isFullScreen - Enable the fullScreen Dialog.\n * @returns {void}\n */\n Dialog.prototype.show = function (isFullScreen) {\n var _this = this;\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (!this.element.classList.contains(DLG_SHOW) || (!isNullOrUndefined(isFullScreen))) {\n if (!isNullOrUndefined(isFullScreen)) {\n this.fullScreen(isFullScreen);\n }\n var eventArgs_1 = isBlazor() ? {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n maxHeight: this.element.style.maxHeight\n } : {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n target: this.target,\n maxHeight: this.element.style.maxHeight\n };\n this.trigger('beforeOpen', eventArgs_1, function (beforeOpenArgs) {\n if (!beforeOpenArgs.cancel) {\n if (_this.element.style.maxHeight !== eventArgs_1.maxHeight) {\n _this.allowMaxHeight = false;\n _this.element.style.maxHeight = eventArgs_1.maxHeight;\n }\n _this.storeActiveElement = document.activeElement;\n _this.element.tabIndex = -1;\n if (_this.isModal && (!isNullOrUndefined(_this.dlgOverlay))) {\n _this.dlgOverlay.style.display = 'block';\n _this.dlgContainer.style.display = 'flex';\n removeClass([_this.dlgOverlay], 'e-fade');\n if (!isNullOrUndefined(_this.targetEle)) {\n if (_this.targetEle === document.body) {\n _this.dlgContainer.style.position = 'fixed';\n }\n else {\n _this.dlgContainer.style.position = 'absolute';\n }\n _this.dlgOverlay.style.position = 'absolute';\n _this.element.style.position = 'relative';\n addClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n }\n else {\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }\n var openAnimation = {\n name: _this.animationSettings.effect + 'In',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n var zIndexElement = (_this.isModal) ? _this.element.parentElement : _this.element;\n if (_this.calculatezIndex) {\n _this.setzIndex(zIndexElement, true);\n setStyleAttribute(_this.element, { 'zIndex': _this.zIndex });\n if (_this.isModal) {\n _this.setOverlayZindex(_this.zIndex);\n }\n }\n // eslint-disable-next-line\n _this.animationSettings.effect === 'None' ? _this.popupObj.show() : _this.popupObj.show(openAnimation);\n _this.dialogOpen = true;\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.visible = true;\n _this.preventVisibility = true;\n _this.isProtectedOnChange = prevOnChange;\n }\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Closes the dialog if it is in visible state.\n *\n * @param { Event } event - specifies the event\n * @returns {void}\n */\n Dialog.prototype.hide = function (event) {\n var _this = this;\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (this.preventVisibility) {\n var eventArgs = isBlazor() ? {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event\n } : {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n target: this.target,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event,\n closedBy: this.dlgClosedBy\n };\n this.closeArgs = eventArgs;\n this.trigger('beforeClose', eventArgs, function (beforeCloseArgs) {\n if (!beforeCloseArgs.cancel) {\n if (_this.isModal) {\n if (!isNullOrUndefined(_this.targetEle)) {\n removeClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }\n if (document.body.classList.contains(DLG_TARGET) &&\n document.body.classList.contains(SCROLL_DISABLED)) {\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n var closeAnimation = {\n name: _this.animationSettings.effect + 'Out',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n // eslint-disable-next-line\n _this.animationSettings.effect === 'None' ? _this.popupObj.hide() : _this.popupObj.hide(closeAnimation);\n _this.dialogOpen = false;\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.visible = false;\n _this.preventVisibility = false;\n _this.isProtectedOnChange = prevOnChange;\n }\n _this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n });\n }\n };\n // eslint-disable-next-line\n /**\n * Specifies to view the Full screen Dialog.\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.fullScreen = function (args) {\n /* eslint-disable */\n var top = this.element.offsetTop;\n var left = this.element.offsetLeft;\n /* eslint-enable */\n if (args) {\n this.element.style.top = document.scrollingElement.scrollTop + 'px';\n addClass([this.element], FULLSCREEN);\n var display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = (!isNullOrUndefined(this.target)) ?\n (this.targetEle.offsetHeight) + 'px' : (window.innerHeight) + 'px';\n this.element.style.display = display;\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && !isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n }\n else {\n removeClass([this.element], FULLSCREEN);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n }\n return args;\n };\n /**\n * Returns the dialog button instances.\n * Based on that, you can dynamically change the button states.\n *\n * @param { number } index - Index of the button.\n * @returns {Button} - returns the button element\n */\n Dialog.prototype.getButtons = function (index) {\n if (!isNullOrUndefined(index)) {\n return this.btnObj[index];\n }\n return this.btnObj;\n };\n __decorate([\n Property('')\n ], Dialog.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"showCloseIcon\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"isModal\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"header\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"enableResize\", void 0);\n __decorate([\n Property(['South-East'])\n ], Dialog.prototype, \"resizeHandles\", void 0);\n __decorate([\n Property('auto')\n ], Dialog.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"minHeight\", void 0);\n __decorate([\n Property('100%')\n ], Dialog.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"cssClass\", void 0);\n __decorate([\n Property(1000)\n ], Dialog.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], Dialog.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"allowDragging\", void 0);\n __decorate([\n Collection([{}], ButtonProps)\n ], Dialog.prototype, \"buttons\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"closeOnEscape\", void 0);\n __decorate([\n Complex({}, AnimationSettings)\n ], Dialog.prototype, \"animationSettings\", void 0);\n __decorate([\n Complex({ X: 'center', Y: 'center' }, PositionData)\n ], Dialog.prototype, \"position\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"overlayClick\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"destroyed\", void 0);\n Dialog = __decorate([\n NotifyPropertyChanges\n ], Dialog);\n return Dialog;\n}(Component));\nexport { Dialog };\n/**\n * Base for creating Alert and Confirmation Dialog through util method.\n */\n// eslint-disable-next-line\nexport var DialogUtility;\n(function (DialogUtility) {\n /**\n * An alert dialog box is used to display warning like messages to the users.\n * ```\n * Eg : DialogUtility.alert('Alert message');\n *\n * ```\n */\n /* istanbul ignore next */\n /**\n *\n * @param {AlertDialogArgs} args - specifies the string\n * @returns {Dialog} - returns the dialog element.\n */\n function alert(args) {\n // eslint-disable-next-line\n var dialogComponent;\n var dialogElement = createElement('div', { 'className': DLG_UTIL_ALERT });\n document.body.appendChild(dialogElement);\n var alertDialogObj;\n var okButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }];\n if (typeof (args) === 'string') {\n alertDialogObj = createDialog({ content: args,\n position: { X: 'center', Y: 'top' },\n isModal: true, header: DLG_UTIL_DEFAULT_TITLE,\n buttons: okButtonModel }, dialogElement);\n }\n else {\n alertDialogObj = createDialog(alertOptions(args), dialogElement);\n }\n alertDialogObj.close = function () {\n if (args && args.close) {\n args.close.apply(alertDialogObj);\n }\n alertDialogObj.destroy();\n if (alertDialogObj.element.classList.contains('e-dlg-modal')) {\n alertDialogObj.element.parentElement.remove();\n alertDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n }\n else {\n alertDialogObj.element.remove();\n }\n };\n return alertDialogObj;\n }\n DialogUtility.alert = alert;\n /**\n * A confirm dialog displays a specified message along with ‘OK’ and ‘Cancel’ button.\n * ```\n * Eg : DialogUtility.confirm('Confirm dialog message');\n *\n * ```\n */\n /* istanbul ignore next */\n /**\n *\n * @param {ConfirmDialogArgs} args - specifies the args\n * @returns {Dialog} - returns te element\n */\n function confirm(args) {\n // eslint-disable-next-line\n var dialogComponent;\n var dialogElement = createElement('div', { 'className': DLG_UTIL_CONFIRM });\n document.body.appendChild(dialogElement);\n var confirmDialogObj;\n var okCancelButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }, {\n buttonModel: { content: 'Cancel' },\n click: function () {\n this.hide();\n }\n }];\n if (typeof (args) === 'string') {\n confirmDialogObj = createDialog({ position: { X: 'center', Y: 'top' }, content: args, isModal: true,\n header: DLG_UTIL_DEFAULT_TITLE, buttons: okCancelButtonModel\n }, dialogElement);\n }\n else {\n confirmDialogObj = createDialog(confirmOptions(args), dialogElement);\n }\n confirmDialogObj.close = function () {\n if (args && args.close) {\n args.close.apply(confirmDialogObj);\n }\n confirmDialogObj.destroy();\n if (confirmDialogObj.element.classList.contains('e-dlg-modal')) {\n confirmDialogObj.element.parentElement.remove();\n confirmDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n }\n else {\n confirmDialogObj.element.remove();\n }\n };\n return confirmDialogObj;\n }\n DialogUtility.confirm = confirm;\n // eslint-disable-next-line\n function createDialog(options, element) {\n var dialogObject = new Dialog(options);\n dialogObject.appendTo(element);\n return dialogObject;\n }\n // eslint-disable-next-line\n function alertOptions(option) {\n var options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setAlertButtonModel(options, option);\n return options;\n }\n // eslint-disable-next-line\n function confirmOptions(option) {\n var options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setConfirmButtonModel(options, option);\n return options;\n }\n // eslint-disable-next-line\n function formOptions(options, option) {\n options.header = !isNullOrUndefined(option.title) ? option.title : null;\n options.content = !isNullOrUndefined(option.content) ? option.content : '';\n options.isModal = !isNullOrUndefined(option.isModal) ? option.isModal : true;\n options.showCloseIcon = !isNullOrUndefined(option.showCloseIcon) ? option.showCloseIcon : false;\n options.allowDragging = !isNullOrUndefined(option.isDraggable) ? option.isDraggable : false;\n options.closeOnEscape = !isNullOrUndefined(option.closeOnEscape) ? option.closeOnEscape : false;\n options.position = !isNullOrUndefined(option.position) ? option.position : { X: 'center', Y: 'top' };\n options.animationSettings = !isNullOrUndefined(option.animationSettings) ? option.animationSettings :\n { effect: 'Fade', duration: 400, delay: 0 };\n options.cssClass = !isNullOrUndefined(option.cssClass) ? option.cssClass : '';\n options.zIndex = !isNullOrUndefined(option.zIndex) ? option.zIndex : 1000;\n options.open = !isNullOrUndefined(option.open) ? option.open : null;\n options.width = !isNullOrUndefined(option.width) ? option.width : 'auto';\n options.height = !isNullOrUndefined(option.height) ? option.height : 'auto';\n return options;\n }\n // eslint-disable-next-line\n function setAlertButtonModel(options, option) {\n var alertButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }];\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, alertButtonModel[0]);\n }\n else {\n options.buttons = alertButtonModel;\n }\n return options;\n }\n // eslint-disable-next-line\n function setConfirmButtonModel(options, option) {\n var okButtonModel = {\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n };\n var cancelButtonModel = {\n buttonModel: { content: 'Cancel' },\n click: function () {\n this.hide();\n }\n };\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, okButtonModel);\n }\n else {\n options.buttons[0] = okButtonModel;\n }\n if (!isNullOrUndefined(option.cancelButton)) {\n options.buttons[1] = formButtonModel(options.buttons[1], option.cancelButton, cancelButtonModel);\n }\n else {\n options.buttons[1] = cancelButtonModel;\n }\n return options;\n }\n // eslint-disable-next-line\n function formButtonModel(buttonModel, option, buttonPropModel) {\n var buttonProps = buttonPropModel;\n if (!isNullOrUndefined(option.text)) {\n buttonProps.buttonModel.content = option.text;\n }\n if (!isNullOrUndefined(option.icon)) {\n buttonProps.buttonModel.iconCss = option.icon;\n }\n if (!isNullOrUndefined(option.cssClass)) {\n buttonProps.buttonModel.cssClass = option.cssClass;\n }\n if (!isNullOrUndefined(option.click)) {\n buttonProps.click = option.click;\n }\n return buttonProps;\n }\n})(DialogUtility || (DialogUtility = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { setStyleAttribute, addClass, removeClass, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit } from '@syncfusion/ej2-base';\nimport { Browser } from '@syncfusion/ej2-base';\nimport { calculatePosition, calculateRelativeBasedPosition } from '../common/position';\nimport { Animation, Property, Event, Component } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { EventHandler } from '@syncfusion/ej2-base';\nimport { flip, fit, isCollide } from '../common/collision';\n/**\n * Specifies the offset position values.\n */\nvar PositionData = /** @class */ (function (_super) {\n __extends(PositionData, _super);\n function PositionData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('left')\n ], PositionData.prototype, \"X\", void 0);\n __decorate([\n Property('top')\n ], PositionData.prototype, \"Y\", void 0);\n return PositionData;\n}(ChildProperty));\nexport { PositionData };\n// don't use space in classNames\nvar CLASSNAMES = {\n ROOT: 'e-popup',\n RTL: 'e-rtl',\n OPEN: 'e-popup-open',\n CLOSE: 'e-popup-close'\n};\n/**\n * Represents the Popup Component\n * ```html\n *
    \n *
    Popup Content
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar Popup = /** @class */ (function (_super) {\n __extends(Popup, _super);\n function Popup(element, options) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Called internally if any of the property value changed.\n *\n * @param {PopupModel} newProp - specifies the new property\n * @param {PopupModel} oldProp - specifies the old property\n * @private\n * @returns {void}\n */\n Popup.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'zIndex':\n setStyleAttribute(this.element, { 'zIndex': newProp.zIndex });\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'position':\n case 'relateTo':\n this.refreshPosition();\n break;\n case 'offsetX':\n // eslint-disable-next-line\n var x = newProp.offsetX - oldProp.offsetX;\n this.element.style.left = (parseInt(this.element.style.left, 10) + (x)).toString() + 'px';\n break;\n case 'offsetY':\n // eslint-disable-next-line\n var y = newProp.offsetY - oldProp.offsetY;\n this.element.style.top = (parseInt(this.element.style.top, 10) + (y)).toString() + 'px';\n break;\n case 'content':\n this.setContent();\n break;\n case 'actionOnScroll':\n if (newProp.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n else {\n this.unwireScrollEvents();\n }\n break;\n }\n }\n };\n /**\n * gets the Component module name.\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.getModuleName = function () {\n return 'popup';\n };\n /**\n * To resolve if any collision occurs.\n *\n * @returns {void}\n */\n Popup.prototype.resolveCollision = function () {\n this.checkCollision();\n };\n /**\n * gets the persisted state properties of the Component.\n *\n * @returns {void}\n */\n Popup.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To destroy the control.\n *\n * @returns {void}\n */\n Popup.prototype.destroy = function () {\n if (this.element.classList.contains('e-popup-open')) {\n this.unwireEvents();\n }\n this.element.classList.remove(CLASSNAMES.ROOT, CLASSNAMES.RTL, CLASSNAMES.OPEN, CLASSNAMES.CLOSE);\n this.content = null;\n this.relateTo = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.render = function () {\n this.element.classList.add(CLASSNAMES.ROOT);\n var styles = {};\n if (this.zIndex !== 1000) {\n styles.zIndex = this.zIndex;\n }\n if (this.width !== 'auto') {\n styles.width = formatUnit(this.width);\n }\n if (this.height !== 'auto') {\n styles.height = formatUnit(this.height);\n }\n setStyleAttribute(this.element, styles);\n this.fixedParent = false;\n this.setEnableRtl();\n this.setContent();\n };\n Popup.prototype.wireEvents = function () {\n if (Browser.isDevice) {\n EventHandler.add(window, 'orientationchange', this.orientationOnChange, this);\n }\n if (this.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n };\n Popup.prototype.wireScrollEvents = function () {\n if (this.getRelateToElement()) {\n for (var _i = 0, _a = this.getScrollableParent(this.getRelateToElement()); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'scroll', this.scrollRefresh, this);\n }\n }\n };\n Popup.prototype.unwireEvents = function () {\n if (Browser.isDevice) {\n EventHandler.remove(window, 'orientationchange', this.orientationOnChange);\n }\n if (this.actionOnScroll !== 'none') {\n this.unwireScrollEvents();\n }\n };\n Popup.prototype.unwireScrollEvents = function () {\n if (this.getRelateToElement()) {\n for (var _i = 0, _a = this.getScrollableParent(this.getRelateToElement()); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'scroll', this.scrollRefresh);\n }\n }\n };\n Popup.prototype.getRelateToElement = function () {\n var relateToElement = this.relateTo === '' || isNullOrUndefined(this.relateTo) ?\n document.body : this.relateTo;\n this.setProperties({ relateTo: relateToElement }, true);\n return ((typeof this.relateTo) === 'string') ?\n document.querySelector(this.relateTo) : this.relateTo;\n };\n Popup.prototype.scrollRefresh = function (e) {\n if (this.actionOnScroll === 'reposition') {\n if (!isNullOrUndefined(this.element) && !(this.element.offsetParent === e.target ||\n (this.element.offsetParent && this.element.offsetParent.tagName === 'BODY' &&\n e.target.parentElement == null))) {\n this.refreshPosition();\n }\n }\n else if (this.actionOnScroll === 'hide') {\n this.hide();\n }\n if (this.actionOnScroll !== 'none') {\n if (this.getRelateToElement()) {\n var targetVisible = this.isElementOnViewport(this.getRelateToElement(), e.target);\n if (!targetVisible && !this.targetInvisibleStatus) {\n this.trigger('targetExitViewport');\n this.targetInvisibleStatus = true;\n }\n else if (targetVisible) {\n this.targetInvisibleStatus = false;\n }\n }\n }\n };\n /**\n * This method is to get the element visibility on viewport when scroll\n * the page. This method will returns true even though 1 px of element\n * part is in visible.\n *\n * @param {HTMLElement} relateToElement - specifies the element\n * @param {HTMLElement} scrollElement - specifies the scroll element\n * @returns {boolean} - retruns the boolean\n */\n // eslint-disable-next-line\n Popup.prototype.isElementOnViewport = function (relateToElement, scrollElement) {\n var scrollParents = this.getScrollableParent(relateToElement);\n for (var parent_3 = 0; parent_3 < scrollParents.length; parent_3++) {\n if (this.isElementVisible(relateToElement, scrollParents[parent_3])) {\n continue;\n }\n else {\n return false;\n }\n }\n return true;\n };\n Popup.prototype.isElementVisible = function (relateToElement, scrollElement) {\n var rect = this.checkGetBoundingClientRect(relateToElement);\n if (!rect.height || !rect.width) {\n return false;\n }\n if (!isNullOrUndefined(this.checkGetBoundingClientRect(scrollElement))) {\n var parent_4 = scrollElement.getBoundingClientRect();\n return !(rect.bottom < parent_4.top) &&\n (!(rect.bottom > parent_4.bottom) &&\n (!(rect.right > parent_4.right) &&\n !(rect.left < parent_4.left)));\n }\n else {\n var win = window;\n var windowView = {\n top: win.scrollY,\n left: win.scrollX,\n right: win.scrollX + win.outerWidth,\n bottom: win.scrollY + win.outerHeight\n };\n var off = calculatePosition(relateToElement);\n var ele = {\n top: off.top,\n left: off.left,\n right: off.left + rect.width,\n bottom: off.top + rect.height\n };\n var elementView = {\n top: windowView.bottom - ele.top,\n left: windowView.right - ele.left,\n bottom: ele.bottom - windowView.top,\n right: ele.right - windowView.left\n };\n return elementView.top > 0\n && elementView.left > 0\n && elementView.right > 0\n && elementView.bottom > 0;\n }\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.preRender = function () {\n //There is no event handler\n };\n Popup.prototype.setEnableRtl = function () {\n this.reposition();\n // eslint-disable-next-line\n this.enableRtl ? this.element.classList.add(CLASSNAMES.RTL) : this.element.classList.remove(CLASSNAMES.RTL);\n };\n Popup.prototype.setContent = function () {\n if (!isNullOrUndefined(this.content)) {\n this.element.innerHTML = '';\n if (typeof (this.content) === 'string') {\n this.element.textContent = this.content;\n }\n else {\n var relateToElem = this.getRelateToElement();\n // eslint-disable-next-line\n var props = this.content.props;\n if (!relateToElem.classList.contains('e-dropdown-btn') || isNullOrUndefined(props)) {\n this.element.appendChild(this.content);\n }\n }\n }\n };\n Popup.prototype.orientationOnChange = function () {\n var _this = this;\n setTimeout(function () {\n _this.refreshPosition();\n }, 200);\n };\n // eslint-disable-next-line\n /**\n * Based on the `relative` element and `offset` values, `Popup` element position will refreshed.\n *\n * @returns {void}\n */\n Popup.prototype.refreshPosition = function (target, collision) {\n if (!isNullOrUndefined(target)) {\n this.checkFixedParent(target);\n }\n this.reposition();\n if (!collision) {\n this.checkCollision();\n }\n };\n Popup.prototype.reposition = function () {\n var pos;\n var position;\n var relateToElement = this.getRelateToElement();\n if (typeof this.position.X === 'number' && typeof this.position.Y === 'number') {\n pos = { left: this.position.X, top: this.position.Y };\n }\n else if ((typeof this.position.X === 'string' && typeof this.position.Y === 'number') ||\n (typeof this.position.X === 'number' && typeof this.position.Y === 'string')) {\n var parentDisplay = void 0;\n var display = this.element.style.display;\n this.element.style.display = 'block';\n if (this.element.classList.contains('e-dlg-modal')) {\n parentDisplay = this.element.parentElement.style.display;\n this.element.parentElement.style.display = 'block';\n }\n position = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY);\n if (typeof this.position.X === 'string') {\n pos = { left: position.left, top: this.position.Y };\n }\n else {\n pos = { left: this.position.X, top: position.top };\n }\n this.element.style.display = display;\n if (this.element.classList.contains('e-dlg-modal')) {\n this.element.parentElement.style.display = parentDisplay;\n }\n }\n else if (relateToElement) {\n var height = this.element.clientHeight;\n var display = this.element.style.display;\n this.element.style.display = 'block';\n pos = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY, height);\n this.element.style.display = display;\n }\n else {\n pos = { left: 0, top: 0 };\n }\n if (!isNullOrUndefined(pos)) {\n this.element.style.left = pos.left + 'px';\n this.element.style.top = pos.top + 'px';\n }\n };\n Popup.prototype.checkGetBoundingClientRect = function (ele) {\n var eleRect;\n try {\n eleRect = ele.getBoundingClientRect();\n return eleRect;\n }\n catch (error) {\n return null;\n }\n };\n Popup.prototype.getAnchorPosition = function (anchorEle, ele, position, offsetX, offsetY, height) {\n if (height === void 0) { height = 0; }\n var eleRect = this.checkGetBoundingClientRect(ele);\n var anchorRect = this.checkGetBoundingClientRect(anchorEle);\n if (isNullOrUndefined(eleRect) || isNullOrUndefined(anchorRect)) {\n return null;\n }\n var anchor = anchorEle;\n var anchorPos = { left: 0, top: 0 };\n if (ele.offsetParent && ele.offsetParent.tagName === 'BODY' && anchorEle.tagName === 'BODY') {\n anchorPos = calculatePosition(anchorEle);\n }\n else {\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName !== 'BODY')) {\n ele = ele.parentElement;\n }\n anchorPos = calculateRelativeBasedPosition(anchor, ele);\n }\n switch (position.X) {\n default:\n case 'left':\n break;\n case 'center':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.left += (window.innerWidth / 2 - eleRect.width / 2);\n }\n else if (this.targetType === 'container') {\n anchorPos.left += (anchorRect.width / 2 - eleRect.width / 2);\n }\n else {\n anchorPos.left += (anchorRect.width / 2);\n }\n break;\n case 'right':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.left += (window.innerWidth - eleRect.width);\n }\n else if (this.targetType === 'container') {\n anchorPos.left += (anchorRect.width - eleRect.width);\n }\n else {\n anchorPos.left += (anchorRect.width);\n }\n break;\n }\n switch (position.Y) {\n default:\n case 'top':\n break;\n case 'center':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.top += (window.innerHeight / 2 - eleRect.height / 2);\n }\n else if (this.targetType === 'container') {\n anchorPos.top += (anchorRect.height / 2 - eleRect.height / 2);\n }\n else {\n anchorPos.top += (anchorRect.height / 2);\n }\n break;\n case 'bottom':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.top += (window.innerHeight - eleRect.height);\n }\n else if (this.targetType === 'container' && !ele.classList.contains('e-dialog')) {\n anchorPos.top += (anchorRect.height - eleRect.height);\n }\n else if (this.targetType === 'container' && ele.classList.contains('e-dialog')) {\n anchorPos.top += (anchorRect.height - height);\n }\n else {\n anchorPos.top += (anchorRect.height);\n }\n break;\n }\n anchorPos.left += offsetX;\n anchorPos.top += offsetY;\n return anchorPos;\n };\n Popup.prototype.callFlip = function (param) {\n var relateToElement = this.getRelateToElement();\n flip(this.element, relateToElement, this.offsetX, this.offsetY, this.position.X, this.position.Y, this.viewPortElement, param, this.fixedParent);\n };\n Popup.prototype.callFit = function (param) {\n if (isCollide(this.element, this.viewPortElement).length !== 0) {\n if (isNullOrUndefined(this.viewPortElement)) {\n var data = fit(this.element, this.viewPortElement, param);\n if (param.X) {\n this.element.style.left = data.left + 'px';\n }\n if (param.Y) {\n this.element.style.top = data.top + 'px';\n }\n }\n else {\n var elementRect = this.checkGetBoundingClientRect(this.element);\n var viewPortRect = this.checkGetBoundingClientRect(this.viewPortElement);\n if (isNullOrUndefined(elementRect) || isNullOrUndefined(viewPortRect)) {\n return null;\n }\n if (param && param.Y === true) {\n if (viewPortRect.top > elementRect.top) {\n this.element.style.top = '0px';\n }\n else if (viewPortRect.bottom < elementRect.bottom) {\n this.element.style.top = parseInt(this.element.style.top, 10) - (elementRect.bottom - viewPortRect.bottom) + 'px';\n }\n }\n if (param && param.X === true) {\n if (viewPortRect.right < elementRect.right) {\n this.element.style.left = parseInt(this.element.style.left, 10) - (elementRect.right - viewPortRect.right) + 'px';\n }\n else if (viewPortRect.left > elementRect.left) {\n this.element.style.left = parseInt(this.element.style.left, 10) + (viewPortRect.left - elementRect.left) + 'px';\n }\n }\n }\n }\n };\n Popup.prototype.checkCollision = function () {\n var horz = this.collision.X;\n var vert = this.collision.Y;\n if (horz === 'none' && vert === 'none') {\n return;\n }\n if (horz === 'flip' && vert === 'flip') {\n this.callFlip({ X: true, Y: true });\n }\n else if (horz === 'fit' && vert === 'fit') {\n this.callFit({ X: true, Y: true });\n }\n else {\n if (horz === 'flip') {\n this.callFlip({ X: true, Y: false });\n }\n else if (vert === 'flip') {\n this.callFlip({ Y: true, X: false });\n }\n if (horz === 'fit') {\n this.callFit({ X: true, Y: false });\n }\n else if (vert === 'fit') {\n this.callFit({ X: false, Y: true });\n }\n }\n };\n /**\n * Shows the popup element from screen.\n *\n * @returns {void}\n * @param {AnimationModel} animationOptions - specifies the model\n * @param { HTMLElement } relativeElement - To calculate the zIndex value dynamically.\n */\n Popup.prototype.show = function (animationOptions, relativeElement) {\n var _this = this;\n var relateToElement = this.getRelateToElement();\n if (relateToElement.classList.contains('e-filemanager')) {\n this.fmDialogContainer = this.element.getElementsByClassName('e-file-select-wrap')[0];\n }\n this.wireEvents();\n if (!isNullOrUndefined(this.fmDialogContainer) && Browser.isIos) {\n this.fmDialogContainer.style.display = 'block';\n }\n if (this.zIndex === 1000 || !isNullOrUndefined(relativeElement)) {\n var zIndexElement = (isNullOrUndefined(relativeElement)) ? this.element : relativeElement;\n this.zIndex = getZindexPartial(zIndexElement);\n setStyleAttribute(this.element, { 'zIndex': this.zIndex });\n }\n animationOptions = (!isNullOrUndefined(animationOptions) && typeof animationOptions === 'object') ?\n animationOptions : this.showAnimation;\n if (this.collision.X !== 'none' || this.collision.Y !== 'none') {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.checkCollision();\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n }\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.begin = function () {\n if (!_this.isDestroyed) {\n removeClass([_this.element], CLASSNAMES.CLOSE);\n addClass([_this.element], CLASSNAMES.OPEN);\n }\n };\n animationOptions.end = function () {\n if (!_this.isDestroyed) {\n _this.trigger('open');\n }\n };\n new Animation(animationOptions).animate(this.element);\n }\n else {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.trigger('open');\n }\n };\n /**\n * Hides the popup element from screen.\n *\n * @param {AnimationModel} animationOptions - To give the animation options.\n * @returns {void}\n */\n Popup.prototype.hide = function (animationOptions) {\n var _this = this;\n animationOptions = (!isNullOrUndefined(animationOptions) && typeof animationOptions === 'object') ?\n animationOptions : this.hideAnimation;\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.end = function () {\n if (!_this.isDestroyed) {\n removeClass([_this.element], CLASSNAMES.OPEN);\n addClass([_this.element], CLASSNAMES.CLOSE);\n _this.trigger('close');\n }\n };\n new Animation(animationOptions).animate(this.element);\n }\n else {\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n this.trigger('close');\n }\n this.unwireEvents();\n };\n /**\n * Gets scrollable parent elements for the given element.\n *\n * @returns {void}\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n */\n Popup.prototype.getScrollableParent = function (element) {\n this.checkFixedParent(element);\n return getScrollableParent(element, this.fixedParent);\n };\n Popup.prototype.checkFixedParent = function (element) {\n var parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if (parentStyle.position === 'fixed' && !isNullOrUndefined(this.element) && this.element.offsetParent &&\n this.element.offsetParent.tagName === 'BODY' && getComputedStyle(this.element.offsetParent).overflow !== 'hidden') {\n this.element.style.top = window.scrollY > parseInt(this.element.style.top, 10) ?\n formatUnit(window.scrollY - parseInt(this.element.style.top, 10))\n : formatUnit(parseInt(this.element.style.top, 10) - window.scrollY);\n this.element.style.position = 'fixed';\n this.fixedParent = true;\n }\n parent = parent.parentElement;\n if (!isNullOrUndefined(this.element) && isNullOrUndefined(this.element.offsetParent) && parentStyle.position === 'fixed'\n && this.element.style.position === 'fixed') {\n this.fixedParent = true;\n }\n }\n };\n __decorate([\n Property('auto')\n ], Popup.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Popup.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"content\", void 0);\n __decorate([\n Property('container')\n ], Popup.prototype, \"targetType\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"viewPortElement\", void 0);\n __decorate([\n Property({ X: 'none', Y: 'none' })\n ], Popup.prototype, \"collision\", void 0);\n __decorate([\n Property('')\n ], Popup.prototype, \"relateTo\", void 0);\n __decorate([\n Complex({}, PositionData)\n ], Popup.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Popup.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Popup.prototype, \"offsetY\", void 0);\n __decorate([\n Property(1000)\n ], Popup.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], Popup.prototype, \"enableRtl\", void 0);\n __decorate([\n Property('reposition')\n ], Popup.prototype, \"actionOnScroll\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"showAnimation\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"hideAnimation\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"targetExitViewport\", void 0);\n Popup = __decorate([\n NotifyPropertyChanges\n ], Popup);\n return Popup;\n}(Component));\nexport { Popup };\n/**\n * Gets scrollable parent elements for the given element.\n *\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n * @param {boolean} fixedParent - specifies the parent element\n * @private\n * @returns {void}\n */\nexport function getScrollableParent(element, fixedParent) {\n var eleStyle = getComputedStyle(element);\n var scrollParents = [];\n var overflowRegex = /(auto|scroll)/;\n var parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if (!(eleStyle.position === 'absolute' && parentStyle.position === 'static')\n && overflowRegex.test(parentStyle.overflow + parentStyle.overflowY + parentStyle.overflowX)) {\n scrollParents.push(parent);\n }\n parent = parent.parentElement;\n }\n if (!fixedParent) {\n scrollParents.push(document);\n }\n return scrollParents;\n}\n/**\n * Gets the maximum z-index of the given element.\n *\n * @returns {void}\n * @param { HTMLElement } element - Specify the element to get the maximum z-index of it.\n * @private\n */\nexport function getZindexPartial(element) {\n // upto body traversal\n var parent = element.parentElement;\n var parentZindex = [];\n while (parent) {\n if (parent.tagName !== 'BODY') {\n var index = document.defaultView.getComputedStyle(parent, null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(parent, null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n parentZindex.push(index);\n }\n parent = parent.parentElement;\n }\n else {\n break;\n }\n }\n var childrenZindex = [];\n for (var i = 0; i < document.body.children.length; i++) {\n if (!element.isEqualNode(document.body.children[i])) {\n var index = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n childrenZindex.push(index);\n }\n }\n }\n childrenZindex.push('999');\n var siblingsZindex = [];\n if (!isNullOrUndefined(element.parentElement) && element.parentElement.tagName !== 'BODY') {\n var childNodes = [].slice.call(element.parentElement.children);\n for (var i = 0; i < childNodes.length; i++) {\n if (!element.isEqualNode(childNodes[i])) {\n var index = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n siblingsZindex.push(index);\n }\n }\n }\n }\n var finalValue = parentZindex.concat(childrenZindex, siblingsZindex);\n // eslint-disable-next-line\n var currentZindexValue = Math.max.apply(Math, finalValue) + 1;\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n/**\n * Gets the maximum z-index of the page.\n *\n * @returns {void}\n * @param { HTMLElement } tagName - Specify the tagName to get the maximum z-index of it.\n * @private\n */\nexport function getMaxZindex(tagName) {\n if (tagName === void 0) { tagName = ['*']; }\n var maxZindex = [];\n for (var i = 0; i < tagName.length; i++) {\n var elements = document.getElementsByTagName(tagName[i]);\n for (var i_1 = 0; i_1 < elements.length; i_1++) {\n var index = document.defaultView.getComputedStyle(elements[i_1], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(elements[i_1], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n maxZindex.push(index);\n }\n }\n }\n // eslint-disable-next-line\n var currentZindexValue = Math.max.apply(Math, maxZindex) + 1;\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n","import { isNullOrUndefined, classList, createElement, Browser } from '@syncfusion/ej2-base';\nvar globalTimeOut = {};\nvar DEFT_MAT_WIDTH = 30;\nvar DEFT_MAT3_WIDTH = 30;\nvar DEFT_FAB_WIDTH = 30;\nvar DEFT_FLUENT_WIDTH = 30;\nvar DEFT_BOOT_WIDTH = 30;\nvar DEFT_BOOT4_WIDTH = 36;\nvar DEFT_BOOT5_WIDTH = 36;\nvar CLS_SHOWSPIN = 'e-spin-show';\nvar CLS_HIDESPIN = 'e-spin-hide';\nvar CLS_MATERIALSPIN = 'e-spin-material';\nvar CLS_MATERIAL3SPIN = 'e-spin-material3';\nvar CLS_FABRICSPIN = 'e-spin-fabric';\nvar CLS_FLUENTSPIN = 'e-spin-fluent';\nvar CLS_TAILWINDSPIN = 'e-spin-tailwind';\nvar CLS_BOOTSPIN = 'e-spin-bootstrap';\nvar CLS_BOOT4SPIN = 'e-spin-bootstrap4';\nvar CLS_BOOT5SPIN = 'e-spin-bootstrap5';\nvar CLS_HIGHCONTRASTSPIN = 'e-spin-high-contrast';\nvar CLS_SPINWRAP = 'e-spinner-pane';\nvar CLS_SPININWRAP = 'e-spinner-inner';\nvar CLS_SPINCIRCLE = 'e-path-circle';\nvar CLS_SPINARC = 'e-path-arc';\nvar CLS_SPINLABEL = 'e-spin-label';\nvar CLS_SPINTEMPLATE = 'e-spin-template';\nvar spinTemplate = null;\nvar spinCSSClass = null;\n// eslint-disable-next-line\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : blazorSpinner({ action: \"Create\", options: {target: targetElement}, type: \"\" });\n * ```\n *\n * @param {string} action - specifies the string\n * @param {CreateArgs} options - specifies the args\n * @param {string} target - specifies the target\n * @param {string} type - specifes the type\n * @returns {void}\n * @private\n */\nexport function Spinner(action, options, target, type) {\n switch (action) {\n case 'Create':\n /* eslint-disable */\n var element = document.querySelector(options.target);\n var args = { type: type, target: element, cssClass: options.cssClass,\n label: options.label, width: options.width };\n /* eslint-enable */\n createSpinner(args);\n break;\n case 'Show':\n showSpinner(document.querySelector(target));\n break;\n case 'Hide':\n hideSpinner(document.querySelector(target));\n break;\n case 'Set':\n // eslint-disable-next-line\n var setArgs = { cssClass: options.cssClass, type: type };\n setSpinner(setArgs);\n break;\n }\n}\n/**\n * Create a spinner for the specified target element.\n * ```\n * E.g : createSpinner({ target: targetElement, width: '34px', label: 'Loading..' });\n * ```\n *\n * @param {SpinnerArgs} args - specifies the args\n * @param {CreateElementArgs} internalCreateElement - specifis the element args\n * @returns {void}\n * @private\n */\nexport function createSpinner(args, internalCreateElement) {\n var _a;\n if (!args.target) {\n return;\n }\n var radius;\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n // eslint-disable-next-line\n var container = create_spinner_container(args.target, makeElement);\n if (!isNullOrUndefined(args.cssClass)) {\n var classNames = args.cssClass.split(' ').filter(function (className) { return className.trim() !== ''; });\n (_a = container.wrap.classList).add.apply(_a, classNames);\n }\n if (!isNullOrUndefined(args.template) || !isNullOrUndefined(spinTemplate)) {\n var template = !isNullOrUndefined(args.template) ? args.template : spinTemplate;\n container.wrap.classList.add(CLS_SPINTEMPLATE);\n replaceContent(container.wrap, template, spinCSSClass);\n }\n else {\n var theme = !isNullOrUndefined(args.type) ? args.type : getTheme(container.wrap);\n var width = !isNullOrUndefined(args.width) ? args.width : undefined;\n radius = calculateRadius(width, theme);\n setTheme(theme, container.wrap, radius, makeElement);\n if (!isNullOrUndefined(args.label)) {\n createLabel(container.inner_wrap, args.label, makeElement);\n }\n }\n container.wrap.classList.add(CLS_HIDESPIN);\n container = null;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} label - specifies the string\n * @param {createElementParams} makeElement - specifies the element\n * @returns {HTMLElement} - returns the element\n */\nfunction createLabel(container, label, makeElement) {\n var labelEle = makeElement('div', {});\n labelEle.classList.add(CLS_SPINLABEL);\n labelEle.innerHTML = label;\n container.appendChild(labelEle);\n return labelEle;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createMaterialSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Material', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_MATERIALSPIN);\n mat_calculate_attributes(radius, container, 'Material', CLS_MATERIALSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createMaterial3Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Material3', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_MATERIAL3SPIN);\n mat_calculate_attributes(radius, container, 'Material3', CLS_MATERIAL3SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrap4Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap4', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_BOOT4SPIN);\n mat_calculate_attributes(radius, container, 'Bootstrap4', CLS_BOOT4SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrap5Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap5', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_BOOT5SPIN);\n mat_calculate_attributes(radius, container, 'Bootstrap5', CLS_BOOT5SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} uniqueID - specifies the id.\n * @param {number} radius - specifies the radius\n * @returns {void}\n */\nfunction startMatAnimate(container, uniqueID, radius) {\n var globalObject = {};\n var timeOutVar = 0;\n globalTimeOut[\"\" + uniqueID].timeOut = 0;\n globalObject[\"\" + uniqueID] = globalVariables(uniqueID, radius, 0, 0);\n // eslint-disable-next-line\n var spinnerInfo = { uniqueID: uniqueID, container: container, globalInfo: globalObject, timeOutVar: timeOutVar };\n animateMaterial(spinnerInfo);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createFabricSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Fabric', radius: radius };\n create_fabric_element(container, uniqueID, CLS_FABRICSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FABRICSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createFluentSinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Fluent', radius: radius };\n create_fabric_element(container, uniqueID, CLS_FLUENTSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FLUENTSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createTailwindSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Tailwind', radius: radius };\n create_fabric_element(container, uniqueID, CLS_TAILWINDSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_TAILWINDSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createHighContrastSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'HighContrast', radius: radius };\n create_fabric_element(container, uniqueID, CLS_HIGHCONTRASTSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_HIGHCONTRASTSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @returns {string} - returns the string\n */\nfunction getTheme(container) {\n var theme = window.getComputedStyle(container, ':after').getPropertyValue('content');\n return theme.replace(/['\"]+/g, '');\n}\n/**\n *\n * @param {string} theme - specifies the theme\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction setTheme(theme, container, radius, makeElement) {\n var innerContainer = container.querySelector('.' + CLS_SPININWRAP);\n var svg = innerContainer.querySelector('svg');\n if (!isNullOrUndefined(svg)) {\n innerContainer.removeChild(svg);\n }\n switch (theme) {\n case 'Material':\n createMaterialSpinner(innerContainer, radius, makeElement);\n break;\n case 'Material3':\n createMaterial3Spinner(innerContainer, radius, makeElement);\n break;\n case 'Fabric':\n createFabricSpinner(innerContainer, radius, makeElement);\n break;\n case 'Fluent':\n createFluentSinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap':\n createBootstrapSpinner(innerContainer, radius, makeElement);\n break;\n case 'HighContrast':\n createHighContrastSpinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap4':\n createBootstrap4Spinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap5':\n createBootstrap5Spinner(innerContainer, radius, makeElement);\n break;\n case 'Tailwind':\n case 'Tailwind-dark':\n createTailwindSpinner(innerContainer, radius, makeElement);\n break;\n }\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrapSpinner(innerContainer, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap', radius: radius };\n create_bootstrap_element(innerContainer, uniqueID, makeElement);\n boot_calculate_attributes(innerContainer, radius);\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {string} uniqueID - specifies the id\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_bootstrap_element(innerContainer, uniqueID, makeElement) {\n var svgBoot = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var viewBoxValue = 64;\n var trans = 32;\n var defaultRadius = 2;\n svgBoot.setAttribute('id', uniqueID);\n svgBoot.setAttribute('class', CLS_BOOTSPIN);\n svgBoot.setAttribute('viewBox', '0 0 ' + viewBoxValue + ' ' + viewBoxValue);\n innerContainer.insertBefore(svgBoot, innerContainer.firstChild);\n for (var item = 0; item <= 7; item++) {\n var bootCircle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n bootCircle.setAttribute('class', CLS_SPINCIRCLE + '_' + item);\n bootCircle.setAttribute('r', defaultRadius + '');\n bootCircle.setAttribute('transform', 'translate(' + trans + ',' + trans + ')');\n svgBoot.appendChild(bootCircle);\n }\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {number} radius - specifies the radius\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction boot_calculate_attributes(innerContainer, radius) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var x = 0;\n var y = 0;\n var rad = 24;\n svg.style.width = svg.style.height = radius + 'px';\n var startArc = 90;\n for (var item = 0; item <= 7; item++) {\n var start = defineArcPoints(x, y, rad, startArc);\n var circleEle = svg.querySelector('.' + CLS_SPINCIRCLE + '_' + item);\n circleEle.setAttribute('cx', start.x + '');\n circleEle.setAttribute('cy', start.y + '');\n startArc = startArc >= 360 ? 0 : startArc;\n startArc = startArc + 45;\n }\n}\n/**\n *\n * @param {number} begin - specifies the number\n * @param {number} stop - specifirs the number\n * @returns {number[]} - returns the array of number\n */\nfunction generateSeries(begin, stop) {\n var series = [];\n var start = begin;\n var end = stop;\n // eslint-disable-next-line\n var increment = false, count = 1;\n formSeries(start);\n /**\n *\n * @param {number} i - specifies the number\n * @returns {void}\n */\n function formSeries(i) {\n series.push(i);\n if (i !== end || count === 1) {\n if (i <= start && i > 1 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n else if (i === 1) {\n i = 7;\n i = parseFloat((i + 0.2).toFixed(2));\n increment = true;\n }\n else if (i < 8 && increment) {\n i = parseFloat((i + 0.2).toFixed(2));\n if (i === 8) {\n increment = false;\n }\n }\n else if (i <= 8 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n ++count;\n formSeries(i);\n }\n }\n return series;\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @returns {void}\n */\nfunction animateBootstrap(innerContainer) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var id = svg.getAttribute('id');\n for (var i = 1; i <= 8; i++) {\n var circleEle = (innerContainer.getElementsByClassName('e-path-circle_' +\n (i === 8 ? 0 : i))[0]);\n rotation(circleEle, i, i, generateSeries(i, i), id);\n }\n /**\n *\n * @param {SVGCircleElement} circle - specifies the circl element\n * @param {number} start - specifies the number\n * @param {number} end - specifies the end number\n * @param {number} series - specifies the series\n * @param {string} id - specifies the id\n * @returns {void}\n */\n function rotation(circle, start, end, series, id) {\n var count = 0;\n boot_animate(start);\n // eslint-disable-next-line\n function boot_animate(radius) {\n if (globalTimeOut[\"\" + id].isAnimate) {\n ++count;\n circle.setAttribute('r', radius + '');\n if (count >= series.length) {\n count = 0;\n }\n // eslint-disable-next-line\n globalTimeOut[id].timeOut = setTimeout(boot_animate.bind(null, series[count]), 18);\n }\n }\n }\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} template - specifies the template\n * @param {string} cssClass - specifies the css class.\n * @returns {void}\n */\nfunction replaceContent(container, template, cssClass) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var inner = container.querySelector('.e-spinner-inner');\n inner.innerHTML = template;\n}\n/**\n *\n * @param {string} width - specifies the width\n * @param {string} theme - specifies the string\n * @returns {number} - returns the number\n */\nfunction calculateRadius(width, theme) {\n var defaultSize;\n switch (theme) {\n case 'Material':\n defaultSize = DEFT_MAT_WIDTH;\n break;\n case 'Material3':\n defaultSize = DEFT_MAT3_WIDTH;\n break;\n case 'Fabric':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Tailwind':\n case 'Tailwind-dark':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Fluent':\n defaultSize = DEFT_FLUENT_WIDTH;\n break;\n case 'Bootstrap4':\n defaultSize = DEFT_BOOT4_WIDTH;\n break;\n case 'Bootstrap5':\n defaultSize = DEFT_BOOT5_WIDTH;\n break;\n default:\n defaultSize = DEFT_BOOT_WIDTH;\n }\n width = width ? parseFloat(width + '') : defaultSize;\n return theme === 'Bootstrap' ? width : width / 2;\n}\n/**\n *\n * @param {string} id - specifies the id\n * @param {number} radius - specifies the radius\n * @param {number} count - specifies the number count\n * @param {number} previousId - specifies the previous id\n * @returns {GlobalVariables} - returns the variables\n */\nfunction globalVariables(id, radius, count, previousId) {\n return {\n radius: radius,\n count: count,\n previousId: previousId\n };\n}\n/**\n * @returns {string} - returns the string\n */\n// eslint-disable-next-line\nfunction random_generator() {\n var random = '';\n var combine = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n for (var i = 0; i < 5; i++) {\n random += combine.charAt(Math.floor(Math.random() * combine.length));\n }\n return random;\n}\n/**\n *\n * @param {HTMLElement} innerCon - specifies the element\n * @param {string} uniqueID - specifies the unique id\n * @param {string} themeClass - specifies the string\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_fabric_element(innerCon, uniqueID, themeClass, makeElement) {\n var svgFabric = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgFabric.setAttribute('id', uniqueID);\n svgFabric.setAttribute('class', themeClass);\n var fabricCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n var fabricCircleArc = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCircleArc.setAttribute('class', CLS_SPINARC);\n innerCon.insertBefore(svgFabric, innerCon.firstChild);\n svgFabric.appendChild(fabricCirclePath);\n svgFabric.appendChild(fabricCircleArc);\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {string} uniqueID - specifies the unique id\n * @param {createElementParams} makeElement - specifies the element\n * @param {string} cls - specifies the string\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_material_element(innerContainer, uniqueID, makeElement, cls) {\n var svgMaterial = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var matCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n svgMaterial.setAttribute('class', cls);\n svgMaterial.setAttribute('id', uniqueID);\n matCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n innerContainer.insertBefore(svgMaterial, innerContainer.firstChild);\n svgMaterial.appendChild(matCirclePath);\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_spinner_container(target, makeElement) {\n var spinnerContainer = makeElement('div', {});\n var spinnerInnerContainer = makeElement('div', {});\n spinnerContainer.classList.add(CLS_SPINWRAP);\n spinnerInnerContainer.classList.add(CLS_SPININWRAP);\n target.appendChild(spinnerContainer);\n spinnerContainer.appendChild(spinnerInnerContainer);\n // eslint-disable-next-line\n return { wrap: spinnerContainer, inner_wrap: spinnerInnerContainer };\n}\n/**\n *\n * @param {SpinnerInfo} spinnerInfo - specifies the spinner\n * @returns {void}\n */\nfunction animateMaterial(spinnerInfo) {\n var start = 1;\n var end = 149;\n var duration = 1333;\n var max = 75;\n createCircle(start, end, easeAnimation, duration, spinnerInfo.globalInfo[spinnerInfo.uniqueID].count, max, spinnerInfo);\n spinnerInfo.globalInfo[spinnerInfo.uniqueID].count = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].count % 4;\n}\n/**\n *\n * @param {number} start - specifies the number\n * @param {number} end - specifies the end number\n * @param {Function} easing - specifies the function\n * @param {number} duration - specifies the duration\n * @param {number} count - specifies the count\n * @param {number} max - specifies the max number\n * @param {SpinnerInfo} spinnerInfo - specifies the spinner info\n * @returns {void}\n */\nfunction createCircle(start, end, easing, duration, count, max, spinnerInfo) {\n var id = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId;\n var startTime = new Date().getTime();\n var change = end - start;\n var diameter = getSize((spinnerInfo.globalInfo[spinnerInfo.uniqueID].radius * 2) + '');\n var strokeSize = getStrokeSize(diameter);\n var rotate = -90 * (spinnerInfo.globalInfo[spinnerInfo.uniqueID].count || 0);\n mat_animation(spinnerInfo);\n // eslint-disable-next-line\n function mat_animation(spinnerInfo) {\n var currentTime = Math.max(0, Math.min(new Date().getTime() - startTime, duration));\n updatePath(easing(currentTime, start, change, duration), spinnerInfo.container);\n if (id === spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId && currentTime < duration) {\n // eslint-disable-next-line\n globalTimeOut[spinnerInfo.uniqueID].timeOut = setTimeout(mat_animation.bind(null, spinnerInfo), 1);\n }\n else {\n animateMaterial(spinnerInfo);\n }\n }\n /**\n *\n * @param {number} value - specifies the number value\n * @param {HTMLElement} container - specifies the container\n * @returns {void}\n */\n function updatePath(value, container) {\n if (!isNullOrUndefined(container.querySelector('svg.e-spin-material')) || !isNullOrUndefined(container.querySelector('svg.e-spin-material3'))) {\n var svg = void 0;\n if (!isNullOrUndefined(container.querySelector('svg.e-spin-material')) && !isNullOrUndefined(container.querySelector('svg.e-spin-material').querySelector('path.e-path-circle'))) {\n svg = container.querySelector('svg.e-spin-material');\n }\n else if (!isNullOrUndefined(container.querySelector('svg.e-spin-material3')) && !isNullOrUndefined(container.querySelector('svg.e-spin-material3').querySelector('path.e-path-circle'))) {\n svg = container.querySelector('svg.e-spin-material3');\n }\n if (!isNullOrUndefined(svg)) {\n var path = svg.querySelector('path.e-path-circle');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, value, max) + '');\n path.setAttribute('transform', 'rotate(' + (rotate) + ' ' + diameter / 2 + ' ' + diameter / 2 + ')');\n }\n }\n }\n}\n/**\n *\n * @param {number} radius - specifies the number\n * @param {HTMLElement} container - specifies the element\n * @param {string} type - specifies the string type\n * @param {string} cls - specifies the string\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction mat_calculate_attributes(radius, container, type, cls) {\n var diameter = radius * 2;\n var svg = container.querySelector('svg.' + cls);\n var path = svg.querySelector('path.e-path-circle');\n var strokeSize = getStrokeSize(diameter);\n var transformOrigin = (diameter / 2) + 'px';\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.width = svg.style.height = diameter + 'px';\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n path.setAttribute('d', drawArc(diameter, strokeSize));\n if (type === 'Material' || type === 'Material3') {\n path.setAttribute('stroke-width', strokeSize + '');\n path.setAttribute('stroke-dasharray', ((diameter - strokeSize) * Math.PI * 0.75) + '');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, 1, 75) + '');\n }\n}\n/**\n *\n * @param {string} value - specifies the value\n * @returns {number} - returns the number\n */\nfunction getSize(value) {\n var parsed = parseFloat(value);\n return parsed;\n}\n/**\n *\n * @param {number} diameter - specifies the diameter\n * @param {number} strokeSize - specifies the size\n * @returns {string} - returns the string\n */\nfunction drawArc(diameter, strokeSize) {\n var radius = diameter / 2;\n var offset = strokeSize / 2;\n return 'M' + radius + ',' + offset\n + 'A' + (radius - offset) + ',' + (radius - offset) + ' 0 1 1 ' + offset + ',' + radius;\n}\n/**\n *\n * @param {number} diameter - specifies the number\n * @returns {number} - returns the number\n */\nfunction getStrokeSize(diameter) {\n return 10 / 100 * diameter;\n}\n/**\n *\n * @param {number} diameter - specifies the number\n * @param {number} strokeSize - specifies the stroke size\n * @param {number} value - specifies the value\n * @param {number} max - specifies the max number\n * @returns {number} - returns the number\n */\nfunction getDashOffset(diameter, strokeSize, value, max) {\n return (diameter - strokeSize) * Math.PI * ((3 * (max) / 100) - (value / 100));\n}\n/**\n *\n * @param {number} current - specifies the number\n * @param {number} start - specifies the stroke size\n * @param {number} change - specifies the value\n * @param {number} duration - specifies the max number\n * @returns {number} - returns the number\n */\nfunction easeAnimation(current, start, change, duration) {\n var timestamp = (current /= duration) * current;\n var timecount = timestamp * current;\n return start + change * (6 * timecount * timestamp + -15 * timestamp * timestamp + 10 * timecount);\n}\n/**\n *\n * @param {number} radius - specifies the number\n * @param {HTMLElement} innerConainer - specifies the element\n * @param {string} trgClass - specifies the class\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction fb_calculate_attributes(radius, innerConainer, trgClass) {\n var centerX = radius;\n var centerY = radius;\n var diameter = radius * 2;\n // eslint-disable-next-line\n var startArc = 315, endArc = 45;\n var svg = innerConainer.querySelector('.' + trgClass);\n var circle = svg.querySelector('.e-path-circle');\n var path = svg.querySelector('.e-path-arc');\n var transformOrigin = (diameter / 2) + 'px';\n circle.setAttribute('d', defineCircle(centerX, centerY, radius));\n path.setAttribute('d', defineArc(centerX, centerY, radius, startArc, endArc));\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n svg.style.width = svg.style.height = diameter + 'px';\n}\n/**\n *\n * @param {number} centerX - specifies the number\n * @param {number} centerY - specifies the stroke size\n * @param {number} radius - specifies the value\n * @param {number} angle - specifies the max number\n * @returns {number} - returns the number\n */\nfunction defineArcPoints(centerX, centerY, radius, angle) {\n var radians = (angle - 90) * Math.PI / 180.0;\n return {\n x: centerX + (radius * Math.cos(radians)),\n y: centerY + (radius * Math.sin(radians))\n };\n}\n/**\n *\n * @param {number} x - specifies the number\n * @param {number} y - specifies the stroke size\n * @param {number} radius - specifies the radius\n * @param {number} startArc - specifies the value\n * @param {number} endArc - specifies the max number\n * @returns {number} - returns the number\n */\nfunction defineArc(x, y, radius, startArc, endArc) {\n var start = defineArcPoints(x, y, radius, endArc);\n var end = defineArcPoints(x, y, radius, startArc);\n var d = [\n 'M', start.x, start.y,\n 'A', radius, radius, 0, 0, 0, end.x, end.y\n ].join(' ');\n return d;\n}\n/**\n *\n * @param {number} x - specifies the number\n * @param {number} y - specifies the stroke size\n * @param {number} radius - specifies the value\n * @returns {string} - returns the string\n */\nfunction defineCircle(x, y, radius) {\n var d = [\n 'M', x, y,\n 'm', -radius, 0,\n 'a', radius, radius, 0, 1, 0, radius * 2, 0,\n 'a', radius, radius, 0, 1, 0, -radius * 2, 0\n ].join(' ');\n return d;\n}\n/**\n * Function to show the Spinner.\n *\n * @param {HTMLElement} container - Specify the target of the Spinner.\n * @returns {void}\n * @private\n */\nexport function showSpinner(container) {\n showHideSpinner(container, false);\n container = null;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {boolean} isHide - specifies the boolean\n * @returns {void}\n */\nfunction showHideSpinner(container, isHide) {\n var spinnerWrap;\n if (container) {\n if (container.classList.contains(CLS_SPINWRAP)) {\n spinnerWrap = container;\n }\n else {\n var spinWrapCollection = container.querySelectorAll('.' + CLS_SPINWRAP);\n if (Browser.isIE) {\n for (var i = 0; i < spinWrapCollection.length; i++) {\n // eslint-disable-next-line\n if (spinWrapCollection[i].parentElement && spinWrapCollection[i].parentElement === container) {\n // eslint-disable-next-line\n spinnerWrap = spinWrapCollection[i];\n break;\n }\n }\n }\n else {\n spinnerWrap = Array.from(spinWrapCollection).find(function (wrap) { return wrap.parentElement === container; }) || null;\n }\n }\n }\n if (container && spinnerWrap) {\n var inner = spinnerWrap.querySelector('.' + CLS_SPININWRAP);\n var spinCheck = void 0;\n // eslint-disable-next-line\n spinCheck = isHide ? !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_HIDESPIN) :\n !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_SHOWSPIN);\n if (spinCheck) {\n var svgEle = spinnerWrap.querySelector('svg');\n if (isNullOrUndefined(svgEle)) {\n return;\n }\n var id = svgEle.getAttribute('id');\n globalTimeOut[\"\" + id].isAnimate = !isHide;\n switch (globalTimeOut[\"\" + id].type) {\n case 'Material':\n case 'Material3':\n // eslint-disable-next-line\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : startMatAnimate(inner, id, globalTimeOut[id].radius);\n break;\n case 'Bootstrap':\n // eslint-disable-next-line\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : animateBootstrap(inner);\n break;\n }\n }\n // eslint-disable-next-line\n isHide ? classList(spinnerWrap, [CLS_HIDESPIN], [CLS_SHOWSPIN]) : classList(spinnerWrap, [CLS_SHOWSPIN], [CLS_HIDESPIN]);\n container = null;\n }\n}\n/**\n * Function to hide the Spinner.\n *\n * @param {HTMLElement} container - Specify the target of the Spinner.\n * @returns {void}\n * @private\n */\nexport function hideSpinner(container) {\n showHideSpinner(container, true);\n container = null;\n}\n// eslint-disable-next-line\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : setSpinner({ cssClass: 'custom-css'; type: 'Material' });\n * ```\n *\n * @param {SetSpinnerArgs} args - specifies the args\n * @param {createElementParams} internalCreateElement - specifies the element params\n * @returns {void}\n * @private\n */\nexport function setSpinner(args, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (args.template !== undefined) {\n spinTemplate = args.template;\n if (args.template !== undefined) {\n spinCSSClass = args.cssClass;\n }\n }\n var container = document.querySelectorAll('.' + CLS_SPINWRAP);\n for (var index = 0; index < container.length; index++) {\n ensureTemplate(args.template, container[index], args.type, args.cssClass, makeElement);\n }\n}\n/**\n *\n * @param {string} template - specifies the string\n * @param {HTMLElement} container - specifies the container\n * @param {string} theme - specifies the theme\n * @param {string} cssClass - specifies the string class\n * @param {createElementParams} makeEle - specifies the params\n * @returns {void}\n */\nfunction ensureTemplate(template, container, theme, cssClass, makeEle) {\n if (isNullOrUndefined(template) && !container.classList.contains(CLS_SPINTEMPLATE)) {\n replaceTheme(container, theme, cssClass, makeEle);\n if (container.classList.contains(CLS_SHOWSPIN)) {\n container.classList.remove(CLS_SHOWSPIN);\n showSpinner(container);\n }\n else {\n container.classList.remove(CLS_HIDESPIN);\n hideSpinner(container);\n }\n }\n else {\n spinTemplate = template;\n if (!isNullOrUndefined(cssClass)) {\n spinCSSClass = cssClass;\n }\n if (!isNullOrUndefined(spinTemplate)) {\n replaceContent(container, spinTemplate, spinCSSClass);\n }\n }\n}\n/**\n *\n * @param {HTMLElement} container - specifies the container\n * @param {string} theme - specifies the theme\n * @param {string} cssClass - specifies the string class\n * @param {createElementParams} makeEle - specifies the params\n * @returns {void}\n */\nfunction replaceTheme(container, theme, cssClass, makeEle) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var svgElement = container.querySelector('svg');\n if (!isNullOrUndefined(svgElement)) {\n var radius = theme === 'Bootstrap' ? parseFloat(svgElement.style.height) : parseFloat(svgElement.style.height) / 2;\n var classNames = svgElement.getAttribute('class');\n var svgClassList = classNames.split(/\\s/);\n if (svgClassList.indexOf('e-spin-material') >= 0) {\n var id = svgElement.getAttribute('id');\n clearTimeout(globalTimeOut[\"\" + id].timeOut);\n }\n setTheme(theme, container, radius, makeEle);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, Event, append, compile } from '@syncfusion/ej2-base';\nimport { EventHandler, Touch, Browser, Animation as PopupAnimation } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getUniqueID, formatUnit, select, selectAll } from '@syncfusion/ej2-base';\nimport { attributes, closest, removeClass, addClass, remove } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Complex, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '../popup/popup';\nimport { calculatePosition } from '../common/position';\nimport { isCollide, fit } from '../common/collision';\nvar TOUCHEND_HIDE_DELAY = 1500;\nvar TAPHOLD_THRESHOLD = 500;\nvar SHOW_POINTER_TIP_GAP = 0;\nvar HIDE_POINTER_TIP_GAP = 8;\nvar MOUSE_TRAIL_GAP = 2;\nvar POINTER_ADJUST = 2;\nvar ROOT = 'e-tooltip';\nvar RTL = 'e-rtl';\nvar DEVICE = 'e-bigger';\nvar ICON = 'e-icons';\nvar CLOSE = 'e-tooltip-close';\nvar TOOLTIP_WRAP = 'e-tooltip-wrap';\nvar CONTENT = 'e-tip-content';\nvar ARROW_TIP = 'e-arrow-tip';\nvar ARROW_TIP_OUTER = 'e-arrow-tip-outer';\nvar ARROW_TIP_INNER = 'e-arrow-tip-inner';\nvar TIP_BOTTOM = 'e-tip-bottom';\nvar TIP_TOP = 'e-tip-top';\nvar TIP_LEFT = 'e-tip-left';\nvar TIP_RIGHT = 'e-tip-right';\nvar POPUP_ROOT = 'e-popup';\nvar POPUP_OPEN = 'e-popup-open';\nvar POPUP_CLOSE = 'e-popup-close';\nvar POPUP_LIB = 'e-lib';\nvar HIDE_POPUP = 'e-hidden';\nvar POPUP_CONTAINER = 'e-tooltip-popup-container';\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ effect: 'FadeIn', duration: 150, delay: 0 })\n ], Animation.prototype, \"open\", void 0);\n __decorate([\n Property({ effect: 'FadeOut', duration: 150, delay: 0 })\n ], Animation.prototype, \"close\", void 0);\n return Animation;\n}(ChildProperty));\nexport { Animation };\n/**\n * Represents the Tooltip component that displays a piece of information about the target element on mouse hover.\n * ```html\n *
    Show Tooltip
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /* eslint-enable */\n /**\n * Constructor for creating the Tooltip Component\n *\n * @param {TooltipModel} options - specifies the options for the constructor\n * @param {string| HTMLElement} element - specifies the element for the constructor\n *\n */\n function Tooltip(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseMoveEvent = null;\n _this.mouseMoveTarget = null;\n _this.containerElement = null;\n _this.isBodyContainer = true;\n return _this;\n }\n Tooltip.prototype.initialize = function () {\n this.formatPosition();\n addClass([this.element], ROOT);\n };\n Tooltip.prototype.formatPosition = function () {\n var _a, _b;\n if (this.position.indexOf('Top') === 0 || this.position.indexOf('Bottom') === 0) {\n _a = this.position.split(/(?=[A-Z])/), this.tooltipPositionY = _a[0], this.tooltipPositionX = _a[1];\n }\n else {\n _b = this.position.split(/(?=[A-Z])/), this.tooltipPositionX = _b[0], this.tooltipPositionY = _b[1];\n }\n };\n Tooltip.prototype.renderArrow = function () {\n this.setTipClass(this.position);\n var tip = this.createElement('div', { className: ARROW_TIP + ' ' + this.tipClass });\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_OUTER + ' ' + this.tipClass }));\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_INNER + ' ' + this.tipClass }));\n this.tooltipEle.appendChild(tip);\n };\n Tooltip.prototype.setTipClass = function (position) {\n if (position.indexOf('Right') === 0) {\n this.tipClass = TIP_LEFT;\n }\n else if (position.indexOf('Bottom') === 0) {\n this.tipClass = TIP_TOP;\n }\n else if (position.indexOf('Left') === 0) {\n this.tipClass = TIP_RIGHT;\n }\n else {\n this.tipClass = TIP_BOTTOM;\n }\n };\n Tooltip.prototype.renderPopup = function (target) {\n var elePos = this.mouseTrail ? { top: 0, left: 0 } : this.getTooltipPosition(target);\n this.tooltipEle.classList.remove(POPUP_LIB);\n this.popupObj = new Popup(this.tooltipEle, {\n height: this.height,\n width: this.width,\n position: { X: elePos.left, Y: elePos.top },\n enableRtl: this.enableRtl,\n open: this.openPopupHandler.bind(this),\n close: this.closePopupHandler.bind(this)\n });\n };\n Tooltip.prototype.getScalingFactor = function () {\n var eleRect = this.tooltipEle.getBoundingClientRect();\n var xScalingFactor = (Math.round(eleRect.width) / this.tooltipEle.offsetWidth) || 1;\n var yScalingFactor = (Math.round(eleRect.height) / this.tooltipEle.offsetHeight) || 1;\n return {\n x: isFinite(xScalingFactor) ? xScalingFactor : 1,\n y: isFinite(yScalingFactor) ? yScalingFactor : 1\n };\n };\n Tooltip.prototype.getTooltipPosition = function (target) {\n this.tooltipEle.style.display = 'block';\n var parentWithZoomStyle = this.element.closest('[style*=\"zoom\"]');\n if (parentWithZoomStyle) {\n if (!parentWithZoomStyle.contains(this.tooltipEle)) {\n this.tooltipEle.style.zoom = getComputedStyle(parentWithZoomStyle).zoom;\n }\n }\n var pos = calculatePosition(target, this.tooltipPositionX, this.tooltipPositionY, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n var scalingFactors = this.getScalingFactor();\n var offsetPos = this.calculateTooltipOffset(this.position, scalingFactors.x, scalingFactors.y);\n var collisionPosition = this.calculateElementPosition(pos, offsetPos);\n var collisionLeft = collisionPosition[0];\n var collisionTop = collisionPosition[1];\n var elePos = this.collisionFlipFit(target, collisionLeft, collisionTop);\n elePos.left = elePos.left / scalingFactors.x;\n elePos.top = elePos.top / scalingFactors.y;\n this.tooltipEle.style.display = '';\n return elePos;\n };\n Tooltip.prototype.windowResize = function () {\n this.reposition(this.findTarget());\n };\n Tooltip.prototype.reposition = function (target) {\n if (this.popupObj && target) {\n var elePos = this.getTooltipPosition(target);\n this.popupObj.position = { X: elePos.left, Y: elePos.top };\n this.popupObj.dataBind();\n }\n };\n Tooltip.prototype.openPopupHandler = function () {\n if (!this.mouseTrail && this.needTemplateReposition()) {\n this.reposition(this.findTarget());\n }\n this.trigger('afterOpen', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.closePopupHandler = function () {\n if (this.isReact && !(this.opensOn === 'Click' && typeof (this.content) === 'function')) {\n this.clearTemplate(['content']);\n }\n this.clear();\n this.trigger('afterClose', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.calculateTooltipOffset = function (position, xScalingFactor, yScalingFactor) {\n if (xScalingFactor === void 0) { xScalingFactor = 1; }\n if (yScalingFactor === void 0) { yScalingFactor = 1; }\n var pos = { top: 0, left: 0 };\n var tipWidth, tipHeight, tooltipEleWidth, tooltipEleHeight, arrowEle;\n var tipAdjust, tipHeightAdjust, tipWidthAdjust;\n if (xScalingFactor != 1 || yScalingFactor != 1) {\n var tooltipEleRect = this.tooltipEle.getBoundingClientRect();\n var arrowEleRect = void 0;\n tooltipEleWidth = Math.round(tooltipEleRect.width);\n tooltipEleHeight = Math.round(tooltipEleRect.height);\n arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (arrowEle) {\n arrowEleRect = arrowEle.getBoundingClientRect();\n }\n tipWidth = arrowEle ? Math.round(arrowEleRect.width) : 0;\n tipHeight = arrowEle ? Math.round(arrowEleRect.height) : 0;\n tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (tooltipEleHeight - (this.tooltipEle.clientHeight * yScalingFactor));\n tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (tooltipEleWidth - (this.tooltipEle.clientWidth * xScalingFactor));\n }\n else {\n tooltipEleWidth = this.tooltipEle.offsetWidth;\n tooltipEleHeight = this.tooltipEle.offsetHeight;\n arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n tipWidth = arrowEle ? arrowEle.offsetWidth : 0;\n tipHeight = arrowEle ? arrowEle.offsetHeight : 0;\n tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (this.tooltipEle.offsetHeight - this.tooltipEle.clientHeight);\n tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (this.tooltipEle.offsetWidth - this.tooltipEle.clientWidth);\n }\n if (this.mouseTrail) {\n tipAdjust += MOUSE_TRAIL_GAP;\n }\n switch (position) {\n case 'RightTop':\n pos.left += tipWidth + tipAdjust;\n pos.top -= tooltipEleHeight - tipHeightAdjust;\n break;\n case 'RightCenter':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'RightBottom':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tipHeightAdjust);\n break;\n case 'BottomRight':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n case 'BottomCenter':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n case 'BottomLeft':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'LeftBottom':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tipHeightAdjust);\n break;\n case 'LeftCenter':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'LeftTop':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight - tipHeightAdjust);\n break;\n case 'TopLeft':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'TopRight':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n default:\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n }\n pos.left += this.offsetX;\n pos.top += this.offsetY;\n return pos;\n };\n Tooltip.prototype.updateTipPosition = function (position) {\n var selEle = selectAll('.' + ARROW_TIP + ',.' + ARROW_TIP_OUTER + ',.' + ARROW_TIP_INNER, this.tooltipEle);\n var removeList = [TIP_BOTTOM, TIP_TOP, TIP_LEFT, TIP_RIGHT];\n removeClass(selEle, removeList);\n this.setTipClass(position);\n addClass(selEle, this.tipClass);\n };\n Tooltip.prototype.adjustArrow = function (target, position, tooltipPositionX, tooltipPositionY) {\n if (this.showTipPointer === false) {\n return;\n }\n this.updateTipPosition(position);\n var leftValue;\n var topValue;\n this.tooltipEle.style.display = 'block';\n var tooltipWidth = this.tooltipEle.clientWidth;\n var tooltipHeight = this.tooltipEle.clientHeight;\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n var tipWidth = arrowEle.offsetWidth;\n var tipHeight = arrowEle.offsetHeight;\n this.tooltipEle.style.display = '';\n if (this.tipClass === TIP_BOTTOM || this.tipClass === TIP_TOP) {\n if (this.tipClass === TIP_BOTTOM) {\n topValue = '99.9%';\n // Arrow icon aligned -2px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 2) + 'px';\n }\n else {\n topValue = -(tipHeight - 1) + 'px';\n // Arrow icon aligned -6px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 6) + 'px';\n }\n if (target) {\n var tipPosExclude = tooltipPositionX !== 'Center' || (tooltipWidth > target.offsetWidth) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionX === 'Left') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n leftValue = (tooltipWidth - tipWidth - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionX === 'Right') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n leftValue = POINTER_ADJUST + 'px';\n }\n else if ((tipPosExclude) && (this.tipPointerPosition === 'End' || this.tipPointerPosition === 'Start')) {\n leftValue = (this.tipPointerPosition === 'End') ? ((target.offsetWidth + ((this.tooltipEle.offsetWidth - target.offsetWidth) / 2)) - (tipWidth / 2)) - POINTER_ADJUST + 'px'\n : ((this.tooltipEle.offsetWidth - target.offsetWidth) / 2) - (tipWidth / 2) + POINTER_ADJUST + 'px';\n }\n else {\n leftValue = ((tooltipWidth / 2) - (tipWidth / 2)) + 'px';\n }\n }\n }\n else {\n if (this.tipClass === TIP_RIGHT) {\n leftValue = '99.9%';\n // Arrow icon aligned -2px left from ArrowOuterTip div\n arrowInnerELe.style.left = '-' + (tipWidth - 2) + 'px';\n }\n else {\n leftValue = -(tipWidth - 1) + 'px';\n // Arrow icon aligned -2px from ArrowOuterTip width\n arrowInnerELe.style.left = (-(tipWidth) + (tipWidth - 2)) + 'px';\n }\n var tipPosExclude = tooltipPositionY !== 'Center' || (tooltipHeight > target.offsetHeight) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionY === 'Top') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n topValue = (tooltipHeight - tipHeight - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionY === 'Bottom') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n topValue = POINTER_ADJUST + 'px';\n }\n else {\n topValue = ((tooltipHeight / 2) - (tipHeight / 2)) + 'px';\n }\n }\n arrowEle.style.top = topValue;\n arrowEle.style.left = leftValue;\n };\n Tooltip.prototype.renderContent = function (target) {\n var tooltipContent = select('.' + CONTENT, this.tooltipEle);\n if (this.cssClass) {\n addClass([this.tooltipEle], this.cssClass.split(' '));\n }\n if (target && !isNullOrUndefined(target.getAttribute('title'))) {\n target.setAttribute('data-content', target.getAttribute('title'));\n target.removeAttribute('title');\n }\n if (!isNullOrUndefined(this.content)) {\n tooltipContent.innerHTML = '';\n if (this.content instanceof HTMLElement) {\n tooltipContent.appendChild(this.content);\n }\n else if (typeof this.content === 'string') {\n if (this.enableHtmlSanitizer) {\n this.setProperties({ content: SanitizeHtmlHelper.sanitize(this.content) }, true);\n }\n var tempFunction = compile(this.content);\n var tempArr = tempFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent);\n if (tempArr) {\n if (this.enableHtmlParse) {\n var nodeList = tempArr.length;\n for (var i = 0; i < nodeList; i++) {\n tooltipContent[append(tempArr, tooltipContent), 'innerHTML'] = this.content;\n }\n }\n else {\n tooltipContent['textContent'] = this.content;\n }\n }\n }\n else {\n var templateFunction = compile(this.content);\n var tempArr = templateFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent);\n if (tempArr) {\n append(tempArr, tooltipContent);\n }\n this.renderReactTemplates();\n }\n }\n else {\n if (target && !isNullOrUndefined(target.getAttribute('data-content'))) {\n tooltipContent.innerHTML = target.getAttribute('data-content');\n }\n }\n };\n Tooltip.prototype.renderCloseIcon = function () {\n if (!this.isSticky) {\n return;\n }\n var tipClose = this.createElement('div', { className: ICON + ' ' + CLOSE });\n this.tooltipEle.appendChild(tipClose);\n EventHandler.add(tipClose, Browser.touchStartEvent, this.onStickyClose, this);\n };\n Tooltip.prototype.addDataTooltipId = function (target, id) {\n attributes(target, { 'data-tooltip-id': id });\n };\n Tooltip.prototype.removeDataTooltipId = function (target) {\n target.removeAttribute('data-tooltip-id');\n };\n Tooltip.prototype.tapHoldHandler = function (evt) {\n clearTimeout(this.autoCloseTimer);\n this.targetHover(evt.originalEvent);\n };\n Tooltip.prototype.touchEndHandler = function (e) {\n var _this = this;\n if (this.isSticky) {\n return;\n }\n var close = function () {\n _this.close();\n };\n this.autoCloseTimer = setTimeout(close, TOUCHEND_HIDE_DELAY);\n };\n Tooltip.prototype.targetClick = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target)) {\n return;\n }\n if (target.getAttribute('data-tooltip-id') === null) {\n this.targetHover(e);\n }\n else if (!this.isSticky) {\n this.hideTooltip(this.animation.close, e, target);\n }\n };\n Tooltip.prototype.targetHover = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target) || (target.getAttribute('data-tooltip-id') !== null && this.closeDelay === 0)) {\n return;\n }\n var targetList = [].slice.call(selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document));\n for (var _i = 0, targetList_1 = targetList; _i < targetList_1.length; _i++) {\n var target_1 = targetList_1[_i];\n this.restoreElement(target_1);\n }\n this.showTooltip(target, this.animation.open, e);\n };\n Tooltip.prototype.mouseMoveBeforeOpen = function (e) {\n this.mouseMoveEvent = e;\n };\n Tooltip.prototype.mouseMoveBeforeRemove = function () {\n if (this.mouseMoveTarget) {\n EventHandler.remove(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen);\n }\n };\n Tooltip.prototype.showTooltip = function (target, showAnimation, e) {\n var _this = this;\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n if (this.openDelay && this.mouseTrail) {\n this.mouseMoveBeforeRemove();\n this.mouseMoveTarget = target;\n EventHandler.add(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen, this);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n var observeCallback = function (beforeRenderArgs) {\n _this.beforeRenderCallback(beforeRenderArgs, target, e, showAnimation);\n };\n this.trigger('beforeRender', this.tooltipEventArgs, observeCallback.bind(this));\n };\n Tooltip.prototype.beforeRenderCallback = function (beforeRenderArgs, target, e, showAnimation) {\n if (beforeRenderArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n }\n else {\n this.isHidden = false;\n if (isNullOrUndefined(this.tooltipEle)) {\n this.ctrlId = this.element.getAttribute('id') ?\n getUniqueID(this.element.getAttribute('id')) : getUniqueID('tooltip');\n this.tooltipEle = this.createElement('div', {\n className: TOOLTIP_WRAP + ' ' + POPUP_ROOT + ' ' + POPUP_LIB, attrs: {\n role: 'tooltip', 'aria-hidden': 'false', 'id': this.ctrlId + '_content'\n }, styles: 'width:' +\n formatUnit(this.width) + ';height:' + formatUnit(this.height) + ';position:absolute;'\n });\n if (Object.keys(this.htmlAttributes).length !== 0) {\n for (var attr in this.htmlAttributes) {\n if (attr === \"class\") {\n this.tooltipEle.classList.add(this.htmlAttributes[\"\" + attr]);\n }\n else {\n this.tooltipEle.setAttribute(attr, this.htmlAttributes[\"\" + attr]);\n }\n }\n }\n this.tooltipBeforeRender(target, this);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n else {\n if (target) {\n this.adjustArrow(target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n this.addDataTooltipId(target, this.ctrlId + '_content');\n this.renderContent(target);\n PopupAnimation.stop(this.tooltipEle);\n this.reposition(target);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n }\n }\n };\n Tooltip.prototype.appendContainer = function (ctrlObj) {\n if (typeof this.container == 'string') {\n if (this.container === 'body') {\n this.containerElement = document.body;\n }\n else {\n this.isBodyContainer = false;\n this.containerElement = select(this.container, document);\n }\n }\n else if (this.container instanceof HTMLElement) {\n this.containerElement = this.container;\n this.isBodyContainer = this.containerElement.tagName === 'BODY';\n }\n if (!this.isBodyContainer) {\n addClass([this.containerElement], POPUP_CONTAINER);\n }\n this.containerElement.appendChild(ctrlObj.tooltipEle);\n };\n Tooltip.prototype.tooltipBeforeRender = function (target, ctrlObj) {\n if (target) {\n if (Browser.isDevice) {\n addClass([ctrlObj.tooltipEle], DEVICE);\n }\n if (ctrlObj.width !== 'auto') {\n ctrlObj.tooltipEle.style.maxWidth = formatUnit(ctrlObj.width);\n }\n ctrlObj.tooltipEle.appendChild(ctrlObj.createElement('div', { className: CONTENT }));\n this.appendContainer(ctrlObj);\n removeClass([ctrlObj.tooltipEle], HIDE_POPUP);\n ctrlObj.addDataTooltipId(target, ctrlObj.ctrlId + '_content');\n ctrlObj.renderContent(target);\n addClass([ctrlObj.tooltipEle], POPUP_OPEN);\n if (ctrlObj.showTipPointer) {\n ctrlObj.renderArrow();\n }\n ctrlObj.renderCloseIcon();\n ctrlObj.renderPopup(target);\n ctrlObj.adjustArrow(target, ctrlObj.position, ctrlObj.tooltipPositionX, ctrlObj.tooltipPositionY);\n PopupAnimation.stop(ctrlObj.tooltipEle);\n ctrlObj.reposition(target);\n }\n };\n Tooltip.prototype.tooltipAfterRender = function (target, e, showAnimation, ctrlObj) {\n if (target) {\n removeClass([ctrlObj.tooltipEle], POPUP_OPEN);\n addClass([ctrlObj.tooltipEle], POPUP_CLOSE);\n ctrlObj.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: ctrlObj.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n if (ctrlObj.needTemplateReposition() && !ctrlObj.mouseTrail) {\n ctrlObj.tooltipEle.style.display = 'none';\n }\n var observeCallback = function (observedArgs) {\n ctrlObj.beforeOpenCallback(observedArgs, target, showAnimation, e);\n };\n ctrlObj.trigger('beforeOpen', ctrlObj.tooltipEventArgs, observeCallback.bind(ctrlObj));\n }\n };\n Tooltip.prototype.beforeOpenCallback = function (observedArgs, target, showAnimation, e) {\n var _this = this;\n if (observedArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n this.restoreElement(target);\n }\n else {\n var openAnimation_1 = {\n name: showAnimation.effect,\n duration: showAnimation.duration,\n delay: showAnimation.delay,\n timingFunction: 'easeOut'\n };\n if (showAnimation.effect === 'None') {\n openAnimation_1 = undefined;\n }\n if (this.openDelay > 0) {\n var show = function () {\n if (_this.mouseTrail) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', _this.onMouseMove, _this);\n }\n if (_this.popupObj) {\n _this.popupObj.show(openAnimation_1, target);\n if (_this.mouseMoveEvent && _this.mouseTrail) {\n _this.onMouseMove(_this.mouseMoveEvent);\n }\n }\n };\n this.showTimer = setTimeout(show, this.openDelay);\n }\n else {\n if (this.popupObj) {\n this.popupObj.show(openAnimation_1, target);\n }\n }\n }\n if (e) {\n this.wireMouseEvents(e, target);\n }\n };\n Tooltip.prototype.needTemplateReposition = function () {\n // eslint-disable-next-line\n var tooltip = this;\n return !isNullOrUndefined(tooltip.viewContainerRef)\n && typeof tooltip.viewContainerRef !== 'string';\n };\n Tooltip.prototype.checkCollision = function (target, x, y) {\n var elePos = {\n left: x, top: y, position: this.position,\n horizontal: this.tooltipPositionX, vertical: this.tooltipPositionY\n };\n var affectedPos = isCollide(this.tooltipEle, this.checkCollideTarget(), x, y);\n if (affectedPos.length > 0) {\n elePos.horizontal = affectedPos.indexOf('left') >= 0 ? 'Right' : affectedPos.indexOf('right') >= 0 ? 'Left' :\n this.tooltipPositionX;\n elePos.vertical = affectedPos.indexOf('top') >= 0 ? 'Bottom' : affectedPos.indexOf('bottom') >= 0 ? 'Top' :\n this.tooltipPositionY;\n }\n return elePos;\n };\n Tooltip.prototype.calculateElementPosition = function (pos, offsetPos) {\n return [this.isBodyContainer ? pos.left + offsetPos.left :\n (pos.left - this.containerElement.offsetLeft) + offsetPos.left + window.pageXOffset + this.containerElement.scrollLeft,\n this.isBodyContainer ? pos.top + offsetPos.top :\n (pos.top - this.containerElement.offsetTop) + offsetPos.top + window.pageYOffset + this.containerElement.scrollTop];\n };\n Tooltip.prototype.collisionFlipFit = function (target, x, y) {\n var elePos = this.checkCollision(target, x, y);\n var newpos = elePos.position;\n if (this.tooltipPositionY !== elePos.vertical) {\n newpos = ((this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + this.tooltipPositionX : this.tooltipPositionX + elePos.vertical);\n }\n if (this.tooltipPositionX !== elePos.horizontal) {\n if (newpos.indexOf('Left') === 0) {\n elePos.vertical = (newpos === 'LeftTop' || newpos === 'LeftCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Left');\n }\n if (newpos.indexOf('Right') === 0) {\n elePos.vertical = (newpos === 'RightTop' || newpos === 'RightCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Right');\n }\n elePos.horizontal = this.tooltipPositionX;\n }\n this.tooltipEventArgs = {\n type: null, cancel: false, target: target, event: null,\n element: this.tooltipEle, collidedPosition: newpos\n };\n this.trigger('beforeCollision', this.tooltipEventArgs);\n if (this.tooltipEventArgs.cancel) {\n newpos = this.position;\n }\n else {\n var elePosVertical = elePos.vertical;\n var elePosHorizontal = elePos.horizontal;\n if (elePos.position !== newpos) {\n var pos = calculatePosition(target, elePosHorizontal, elePosVertical, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n var scalingFactors = this.getScalingFactor();\n var offsetPos = this.calculateTooltipOffset(newpos, scalingFactors.x, scalingFactors.y);\n offsetPos.top -= this.getOffSetPosition('TopBottom', newpos, this.offsetY);\n offsetPos.left -= this.getOffSetPosition('RightLeft', newpos, this.offsetX);\n elePos.position = newpos;\n var elePosition = this.calculateElementPosition(pos, offsetPos);\n elePos.left = elePosition[0];\n elePos.top = elePosition[1];\n }\n else {\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n }\n }\n var eleOffset = { left: elePos.left, top: elePos.top };\n var position = this.isBodyContainer ?\n fit(this.tooltipEle, this.checkCollideTarget(), { X: true, Y: this.windowCollision }, eleOffset) : eleOffset;\n this.tooltipEle.style.display = 'block';\n if (this.showTipPointer && (newpos.indexOf('Bottom') === 0 || newpos.indexOf('Top') === 0)) {\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n var arrowleft = parseInt(arrowEle.style.left, 10) - (position.left - elePos.left);\n if (arrowleft < 0) {\n arrowleft = 0;\n }\n else if ((arrowleft + arrowEle.offsetWidth) > this.tooltipEle.clientWidth) {\n arrowleft = this.tooltipEle.clientWidth - arrowEle.offsetWidth;\n }\n arrowEle.style.left = arrowleft.toString() + 'px';\n }\n this.tooltipEle.style.display = '';\n eleOffset.left = position.left;\n eleOffset.top = position.top;\n return eleOffset;\n };\n Tooltip.prototype.getOffSetPosition = function (positionString, newPos, offsetType) {\n return ((positionString.indexOf(this.position.split(/(?=[A-Z])/)[0]) !== -1) &&\n (positionString.indexOf(newPos.split(/(?=[A-Z])/)[0]) !== -1)) ? (2 * offsetType) : 0;\n };\n Tooltip.prototype.checkCollideTarget = function () {\n return !this.windowCollision && this.target ? this.element : null;\n };\n Tooltip.prototype.hideTooltip = function (hideAnimation, e, targetElement) {\n var _this = this;\n if (this.closeDelay > 0) {\n clearTimeout(this.hideTimer);\n clearTimeout(this.showTimer);\n var hide = function () {\n if (_this.closeDelay && _this.tooltipEle && _this.isTooltipOpen) {\n return;\n }\n _this.tooltipHide(hideAnimation, e, targetElement);\n };\n this.hideTimer = setTimeout(hide, this.closeDelay);\n }\n else {\n this.tooltipHide(hideAnimation, e, targetElement);\n }\n };\n Tooltip.prototype.tooltipHide = function (hideAnimation, e, targetElement) {\n var _this = this;\n var target;\n if (e) {\n target = this.target ? (targetElement || e.target) : this.element;\n }\n else {\n target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n // this line commented for close the tooltip popup element even the target element destroyed in a page.\n //if (isNullOrUndefined(target)) { return; }\n this.trigger('beforeClose', this.tooltipEventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.mouseMoveBeforeRemove();\n _this.popupHide(hideAnimation, target);\n }\n else {\n _this.isHidden = false;\n }\n });\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.popupHide = function (hideAnimation, target) {\n if (target) {\n this.restoreElement(target);\n }\n this.isHidden = true;\n var closeAnimation = {\n name: hideAnimation.effect,\n duration: hideAnimation.duration,\n delay: hideAnimation.delay,\n timingFunction: 'easeIn'\n };\n if (hideAnimation.effect === 'None') {\n closeAnimation = undefined;\n }\n if (this.popupObj) {\n this.popupObj.hide(closeAnimation);\n }\n };\n Tooltip.prototype.restoreElement = function (target) {\n this.unwireMouseEvents(target);\n if (!isNullOrUndefined(target.getAttribute('data-content'))) {\n target.setAttribute('title', target.getAttribute('data-content'));\n target.removeAttribute('data-content');\n }\n this.removeDataTooltipId(target);\n };\n Tooltip.prototype.clear = function () {\n if (this.tooltipEle) {\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n }\n if (this.isHidden) {\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n this.tooltipEle = null;\n this.popupObj = null;\n }\n };\n Tooltip.prototype.tooltipHover = function (e) {\n if (this.tooltipEle) {\n this.isTooltipOpen = true;\n }\n };\n Tooltip.prototype.tooltipMouseOut = function (e) {\n this.isTooltipOpen = false;\n this.hideTooltip(this.animation.close, e, this.findTarget());\n };\n Tooltip.prototype.onMouseOut = function (e) {\n var enteredElement = e.relatedTarget;\n // don't close the tooltip only if it is tooltip content element\n if (enteredElement && !this.mouseTrail) {\n var checkForTooltipElement = closest(enteredElement, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT);\n if (checkForTooltipElement) {\n EventHandler.add(checkForTooltipElement, 'mouseleave', this.tooltipElementMouseOut, this);\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n if (this.closeDelay === 0) {\n this.clear();\n }\n }\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n this.clear();\n }\n };\n Tooltip.prototype.tooltipElementMouseOut = function (e) {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n EventHandler.remove(this.element, 'mouseleave', this.tooltipElementMouseOut);\n this.clear();\n };\n Tooltip.prototype.onStickyClose = function (e) {\n this.close();\n };\n Tooltip.prototype.onMouseMove = function (event) {\n var eventPageX = 0;\n var eventPageY = 0;\n if (event.type.indexOf('touch') > -1) {\n event.preventDefault();\n eventPageX = event.touches[0].pageX;\n eventPageY = event.touches[0].pageY;\n }\n else {\n eventPageX = event.pageX;\n eventPageY = event.pageY;\n }\n PopupAnimation.stop(this.tooltipEle);\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n this.adjustArrow(event.target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n var scalingFactors = this.getScalingFactor();\n var pos = this.calculateTooltipOffset(this.position, scalingFactors.x, scalingFactors.y);\n var x = eventPageX + pos.left + this.offsetX;\n var y = eventPageY + pos.top + this.offsetY;\n var elePos = this.checkCollision(event.target, x, y);\n if (this.tooltipPositionX !== elePos.horizontal || this.tooltipPositionY !== elePos.vertical) {\n var newpos = (this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + elePos.horizontal : elePos.horizontal + elePos.vertical;\n elePos.position = newpos;\n this.adjustArrow(event.target, elePos.position, elePos.horizontal, elePos.vertical);\n var colpos = this.calculateTooltipOffset(elePos.position, scalingFactors.x, scalingFactors.y);\n elePos.left = eventPageX + colpos.left - this.offsetX;\n elePos.top = eventPageY + colpos.top - this.offsetY;\n }\n this.tooltipEle.style.left = elePos.left + 'px';\n this.tooltipEle.style.top = elePos.top + 'px';\n };\n Tooltip.prototype.keyDown = function (event) {\n if (!isNullOrUndefined(this.targetsList) && !isNullOrUndefined(this.target)) {\n var target = [].slice.call(selectAll(this.target, this.element));\n if (target.length !== this.targetsList.length) {\n this.unwireEvents(this.opensOn);\n this.wireEvents(this.opensOn);\n }\n }\n if (this.tooltipEle && event.keyCode === 27) {\n this.close();\n }\n };\n Tooltip.prototype.touchEnd = function (e) {\n if (this.tooltipEle && closest(e.target, '.' + ROOT) === null && !this.isSticky) {\n this.close();\n }\n };\n Tooltip.prototype.scrollHandler = function (e) {\n if (this.tooltipEle && !this.isSticky) {\n if (!(closest(e.target, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT))) {\n this.close();\n }\n }\n };\n /**\n * Core method that initializes the control rendering.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.render = function () {\n this.initialize();\n this.wireEvents(this.opensOn);\n this.renderComplete();\n };\n /**\n * Initializes the values of private members.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.preRender = function () {\n this.tipClass = TIP_BOTTOM;\n this.tooltipPositionX = 'Center';\n this.tooltipPositionY = 'Top';\n this.isHidden = true;\n };\n /**\n * Binding events to the Tooltip element.\n *\n * @hidden\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.wireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_1 = triggerList; _i < triggerList_1.length; _i++) {\n var opensOn = triggerList_1[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.wireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.add(this.element, Browser.touchStartEvent, this.targetClick, this);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n this.touchModule = new Touch(this.element, {\n tapHoldThreshold: TAPHOLD_THRESHOLD,\n tapHold: this.tapHoldHandler.bind(this)\n });\n EventHandler.add(this.element, Browser.touchEndEvent, this.touchEndHandler, this);\n }\n else {\n EventHandler.add(this.element, 'mouseover', this.targetHover, this);\n }\n }\n }\n EventHandler.add(document, 'touchend', this.touchEnd, this);\n EventHandler.add(document, 'scroll wheel', this.scrollHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(document, 'keydown', this.keyDown, this);\n };\n Tooltip.prototype.getTriggerList = function (trigger) {\n if (trigger === 'Auto') {\n trigger = (Browser.isDevice) ? 'Hover' : 'Hover Focus';\n }\n return trigger.split(' ');\n };\n Tooltip.prototype.wireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n if (this.element.nodeName !== \"BODY\") {\n EventHandler.add(this.element, 'focusin', this.targetHover, this);\n }\n else {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n this.targetsList = targetList;\n for (var _i = 0, targetList_2 = targetList; _i < targetList_2.length; _i++) {\n var target = targetList_2[_i];\n EventHandler.add(target, 'focus', this.targetHover, this);\n }\n }\n }\n else {\n EventHandler.add(this.element, 'focus', this.targetHover, this);\n }\n };\n Tooltip.prototype.wireMouseEvents = function (e, target) {\n if (this.tooltipEle) {\n if (!this.isSticky) {\n if (e.type === 'focus') {\n EventHandler.add(target, 'blur', this.onMouseOut, this);\n }\n if (e.type === 'focusin') {\n EventHandler.add(target, 'focusout', this.onMouseOut, this);\n }\n if (e.type === 'mouseover') {\n EventHandler.add(target, 'mouseleave', this.onMouseOut, this);\n }\n if (this.closeDelay) {\n EventHandler.add(this.tooltipEle, 'mouseenter', this.tooltipHover, this);\n EventHandler.add(this.tooltipEle, 'mouseleave', this.tooltipMouseOut, this);\n }\n }\n if (this.mouseTrail && this.openDelay === 0) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', this.onMouseMove, this);\n }\n }\n };\n /**\n * Unbinding events from the element on widget destroy.\n *\n * @hidden\n *\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.unwireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_2 = triggerList; _i < triggerList_2.length; _i++) {\n var opensOn = triggerList_2[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.unwireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.targetClick);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n if (this.touchModule) {\n this.touchModule.destroy();\n }\n EventHandler.remove(this.element, Browser.touchEndEvent, this.touchEndHandler);\n }\n else {\n EventHandler.remove(this.element, 'mouseover', this.targetHover);\n }\n }\n }\n EventHandler.remove(document, 'touchend', this.touchEnd);\n EventHandler.remove(document, 'scroll wheel', this.scrollHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n EventHandler.remove(document, 'keydown', this.keyDown);\n };\n Tooltip.prototype.unwireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n if (this.element.nodeName === 'BODY') {\n EventHandler.remove(this.element, 'focusin', this.targetHover);\n }\n else {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n for (var _i = 0, targetList_3 = targetList; _i < targetList_3.length; _i++) {\n var target = targetList_3[_i];\n EventHandler.remove(target, 'focus', this.targetHover);\n }\n }\n }\n else {\n EventHandler.remove(this.element, 'focus', this.targetHover);\n }\n };\n Tooltip.prototype.unwireMouseEvents = function (target) {\n if (!this.isSticky) {\n var triggerList = this.getTriggerList(this.opensOn);\n for (var _i = 0, triggerList_3 = triggerList; _i < triggerList_3.length; _i++) {\n var opensOn = triggerList_3[_i];\n if (opensOn === 'Focus') {\n EventHandler.remove(target, 'blur', this.onMouseOut);\n EventHandler.remove(target, 'focusout', this.onMouseOut);\n }\n if (opensOn === 'Hover' && !Browser.isDevice) {\n EventHandler.remove(target, 'mouseleave', this.onMouseOut);\n }\n }\n if (this.closeDelay) {\n EventHandler.remove(target, 'mouseenter', this.tooltipHover);\n EventHandler.remove(target, 'mouseleave', this.tooltipMouseOut);\n }\n }\n if (this.mouseTrail) {\n EventHandler.remove(target, 'mousemove touchstart mouseenter', this.onMouseMove);\n }\n };\n Tooltip.prototype.findTarget = function () {\n var target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n return target;\n };\n /**\n * Core method to return the component name.\n *\n * @private\n *\n * @returns {string} - this method returns module name.\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * Returns the properties to be maintained in the persisted state.\n *\n * @private\n *\n * @returns {string} - this method returns persisted data.\n */\n Tooltip.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Called internally, if any of the property value changed.\n *\n * @private\n *\n * @param {TooltipModel} newProp - this param gives new property values to the method\n * @param {TooltipModel} oldProp - this param gives old property values to the method\n * @returns {void}\n *\n */\n Tooltip.prototype.onPropertyChanged = function (newProp, oldProp) {\n var targetElement = this.findTarget();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.width = this.tooltipEle.style.maxWidth = formatUnit(newProp.width);\n this.reposition(targetElement);\n }\n break;\n case 'height':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.height = formatUnit(newProp.height);\n this.reposition(targetElement);\n }\n break;\n case 'content':\n if (this.tooltipEle) {\n this.renderContent();\n }\n break;\n case 'opensOn':\n this.unwireEvents(oldProp.opensOn);\n this.wireEvents(newProp.opensOn);\n break;\n case 'position':\n this.formatPosition();\n if (this.tooltipEle && targetElement) {\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n arrowInnerELe.style.top = arrowInnerELe.style.left = null;\n this.reposition(targetElement);\n }\n break;\n case 'tipPointerPosition':\n if (this.tooltipEle && targetElement) {\n this.reposition(targetElement);\n }\n break;\n case 'offsetX':\n if (this.tooltipEle) {\n var x = newProp.offsetX - oldProp.offsetX;\n this.tooltipEle.style.left = (parseInt(this.tooltipEle.style.left, 10) + (x)).toString() + 'px';\n }\n break;\n case 'offsetY':\n if (this.tooltipEle) {\n var y = newProp.offsetY - oldProp.offsetY;\n this.tooltipEle.style.top = (parseInt(this.tooltipEle.style.top, 10) + (y)).toString() + 'px';\n }\n break;\n case 'cssClass':\n if (this.tooltipEle) {\n if (oldProp.cssClass) {\n removeClass([this.tooltipEle], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.tooltipEle], newProp.cssClass.split(' '));\n }\n }\n break;\n case 'enableRtl':\n if (this.tooltipEle) {\n if (this.enableRtl) {\n addClass([this.tooltipEle], RTL);\n }\n else {\n removeClass([this.tooltipEle], RTL);\n }\n }\n break;\n case 'container':\n if (!isNullOrUndefined(this.containerElement)) {\n removeClass([this.containerElement], POPUP_CONTAINER);\n }\n this.container = newProp.container;\n if (this.tooltipEle && targetElement) {\n this.appendContainer(this);\n this.reposition(targetElement);\n }\n }\n }\n };\n /**\n * It is used to show the Tooltip on the specified target with specific animation settings.\n *\n * @param {HTMLElement} element - Target element where the Tooltip is to be displayed. (It is an optional parameter)\n * @param {TooltipAnimationSettings} animation - Sets the specific animation, while showing the Tooltip on the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.open = function (element, animation) {\n if (isNullOrUndefined(animation)) {\n animation = this.animation.open;\n }\n if (isNullOrUndefined(element)) {\n element = this.element;\n }\n if (element.style.display === 'none') {\n return;\n }\n this.showTooltip(element, animation);\n };\n /**\n * It is used to hide the Tooltip with specific animation effect.\n *\n * @param {TooltipAnimationSettings} animation - Sets the specific animation when hiding Tooltip from the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.close = function (animation) {\n if (!animation) {\n animation = this.animation.close;\n }\n this.hideTooltip(animation);\n };\n /**\n * It is used to refresh the Tooltip content and its position.\n *\n * @param {HTMLElement} target - Target element where the Tooltip content or position needs to be refreshed.\n * @returns {void}\n */\n Tooltip.prototype.refresh = function (target) {\n if (this.tooltipEle) {\n this.renderContent(target);\n }\n if (this.popupObj && target) {\n this.reposition(target);\n }\n };\n /**\n * It is used to destroy the Tooltip component.\n * @method destroy\n * @returns {void}\n * @memberof Tooltip\n */\n Tooltip.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n removeClass([this.element], ROOT);\n this.unwireEvents(this.opensOn);\n this.unwireMouseEvents(this.element);\n this.tooltipEle = null;\n this.popupObj = null;\n var currentTarget = selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', this.element);\n for (var _i = 0, currentTarget_1 = currentTarget; _i < currentTarget_1.length; _i++) {\n var target = currentTarget_1[_i];\n this.restoreElement(target);\n }\n };\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"height\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"content\", void 0);\n __decorate([\n Property('body')\n ], Tooltip.prototype, \"container\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"target\", void 0);\n __decorate([\n Property('TopCenter')\n ], Tooltip.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetY\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"showTipPointer\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableHtmlParse\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"windowCollision\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"tipPointerPosition\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"opensOn\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"mouseTrail\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isSticky\", void 0);\n __decorate([\n Complex({}, Animation)\n ], Tooltip.prototype, \"animation\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"openDelay\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"closeDelay\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property('')\n ], Tooltip.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeRender\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeCollision\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"destroyed\", void 0);\n Tooltip = __decorate([\n NotifyPropertyChanges\n ], Tooltip);\n return Tooltip;\n}(Component));\nexport { Tooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * React Component Base\n */\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { extend, isNullOrUndefined, setValue, getValue, isObject } from '@syncfusion/ej2-base';\nvar defaulthtmlkeys = ['alt', 'className', 'disabled', 'form', 'id',\n 'readOnly', 'style', 'tabIndex', 'title', 'type', 'name',\n 'onClick', 'onFocus', 'onBlur'];\nvar delayUpdate = ['accordion', 'tab', 'splitter'];\nvar reactUid = 0;\nvar isColEName = new RegExp('\\]');\n// tslint:disable\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar ComponentBase = /** @class */ (function (_super) {\n __extends(ComponentBase, _super);\n function ComponentBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.mountingState = false;\n _this.attrKeys = [];\n _this.cachedTimeOut = 0;\n _this.isAppendCalled = false;\n _this.initRenderCalled = false;\n _this.isReactForeceUpdate = false;\n _this.isReact = true;\n _this.isshouldComponentUpdateCalled = false;\n _this.isCreated = false;\n return _this;\n }\n // Lifecycle methods are changed by React team and so we can deprecate this method and use\n // Reference link:https://reactjs.org/docs/react-component.html#unsafe_componentWillMount\n // tslint:disable-next-line:no-any\n ComponentBase.prototype.componentDidMount = function () {\n this.refreshChild(true);\n this.canDelayUpdate = delayUpdate.indexOf(this.getModuleName()) !== -1;\n // Used timeout to resolve template binding\n // Reference link: https://github.com/facebook/react/issues/10309#issuecomment-318433235\n // tslint:disable-next-line:no-any\n this.renderReactComponent();\n if (this.portals && this.portals.length) {\n this.mountingState = true;\n this.renderReactTemplates();\n this.mountingState = false;\n }\n };\n ComponentBase.prototype.componentDidUpdate = function (prev) {\n if (!this.isshouldComponentUpdateCalled && this.initRenderCalled && !this.isReactForeceUpdate) {\n if (prev !== this.props) {\n this.isshouldComponentUpdateCalled = true;\n this.refreshProperties(this.props, this.props);\n }\n }\n };\n ComponentBase.prototype.renderReactComponent = function () {\n var ele = this.reactElement;\n if (ele && !this.isAppendCalled) {\n this.isAppendCalled = true;\n this.appendTo(ele);\n }\n };\n // Lifecycle methods are changed by React team and so we can deprecate this method and use\n // Reference link:https://reactjs.org/docs/react-component.html#unsafe_componentwillreceiveprops\n // tslint:disable-next-line:no-any\n /**\n * @private\n */\n ComponentBase.prototype.shouldComponentUpdate = function (nextProps) {\n this.isshouldComponentUpdateCalled = true;\n if (!this.initRenderCalled) {\n this.updateProperties(nextProps, true);\n return true;\n }\n if (!this.isAppendCalled) {\n clearTimeout(this.cachedTimeOut);\n this.isAppendCalled = true;\n this.appendTo(this.reactElement);\n }\n this.updateProperties(nextProps);\n return true;\n };\n /**\n * @private\n */\n ComponentBase.prototype.updateProperties = function (nextProps, silent) {\n var _this = this;\n var dProps = extend({}, nextProps);\n var keys = Object.keys(nextProps);\n // The statelessTemplates props value is taken from sample level property or default component property.\n var statelessTemplates = !isNullOrUndefined(this.props['statelessTemplates']) ? this.props['statelessTemplates'] :\n (!isNullOrUndefined(this['statelessTemplateProps']) ? this['statelessTemplateProps'] : []);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var propkey = keys_1[_i];\n var isClassName = propkey === 'className';\n if (propkey === 'children') {\n continue;\n }\n if (!isClassName && !isNullOrUndefined(this.htmlattributes[\"\" + propkey]) &&\n this.htmlattributes[\"\" + propkey] !== dProps[\"\" + propkey]) {\n this.htmlattributes[\"\" + propkey] = dProps[\"\" + propkey];\n }\n if (this.compareValues(this.props[\"\" + propkey], nextProps[\"\" + propkey])) {\n delete dProps[\"\" + propkey];\n }\n else if (this.attrKeys.indexOf(propkey) !== -1) {\n if (isClassName) {\n this.clsName = true;\n var propsClsName = this.props[\"\" + propkey].split(' ');\n for (var i = 0; i < propsClsName.length; i++) {\n this.element.classList.remove(propsClsName[parseInt(i.toString(), 10)]);\n }\n var dpropsClsName = dProps[\"\" + propkey].split(' ');\n for (var j = 0; j < dpropsClsName.length; j++) {\n this.element.classList.add(dpropsClsName[parseInt(j.toString(), 10)]);\n }\n }\n else if (propkey !== 'disabled' && !this.properties.hasOwnProperty(propkey)) {\n delete dProps[\"\" + propkey];\n }\n }\n else if (propkey === 'value' && nextProps[\"\" + propkey] === this[\"\" + propkey]) {\n delete dProps[\"\" + propkey];\n }\n else if (statelessTemplates.indexOf(propkey) > -1 && ((propkey === 'content' && typeof dProps[\"\" + propkey] === 'function') || (nextProps[\"\" + propkey].toString() === this[\"\" + propkey].toString()))) {\n delete dProps[\"\" + propkey];\n }\n }\n if (dProps['children']) {\n delete dProps['children'];\n }\n // tslint:disable-next-line:no-any\n if (this.initRenderCalled && (this.canDelayUpdate || this.props.delayUpdate)) {\n setTimeout(function () {\n _this.refreshProperties(dProps, nextProps, silent);\n });\n }\n else {\n this.refreshProperties(dProps, nextProps, silent);\n }\n };\n ComponentBase.prototype.refreshProperties = function (dProps, nextProps, silent) {\n var statelessTemplates = !isNullOrUndefined(this.props['statelessTemplates']) ? this.props['statelessTemplates'] : [];\n if (Object.keys(dProps).length) {\n if (!silent) {\n // tslint:disable-next-line:no-any\n this.processComplexTemplate(dProps, this);\n }\n this.setProperties(dProps, silent);\n }\n if (statelessTemplates.indexOf('directiveTemplates') === -1) {\n this.refreshChild(silent, nextProps);\n }\n };\n ComponentBase.prototype.processComplexTemplate = function (curObject, context) {\n var compTemplate = context.complexTemplate;\n if (compTemplate) {\n for (var prop in compTemplate) {\n var PropVal = compTemplate[\"\" + prop];\n if (curObject[\"\" + prop]) {\n setValue(PropVal, getValue(prop, curObject), curObject);\n }\n }\n }\n };\n ComponentBase.prototype.getDefaultAttributes = function () {\n var _this = this;\n this.isReact = true;\n var propKeys = Object.keys(this.props);\n var stringValue = ['autocomplete', 'dropdownlist', 'combobox'];\n // if ((stringValue.indexOf(this.getModuleName()) !== -1) && (!isNullOrUndefined(this.props[\"value\"]))) {\n // this.value = (<{ [key: string]: Object }>this.props)[\"value\"];\n // }\n if (!this.htmlattributes) {\n this.htmlattributes = {};\n }\n this.attrKeys = defaulthtmlkeys.concat(this.controlAttributes || []);\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var prop = propKeys_1[_i];\n if (prop.indexOf('data-') !== -1 || prop.indexOf('aria-') !== -1 || this.attrKeys.indexOf(prop) !== -1) {\n if (this.htmlattributes[\"\" + prop] !== this.props[\"\" + prop]) {\n this.htmlattributes[\"\" + prop] = this.props[\"\" + prop];\n }\n }\n }\n if (!this.htmlattributes.ref) {\n /* tslint:disable:no-any */\n this.htmlattributes.ref = function (ele) {\n _this.reactElement = ele;\n };\n var keycompoentns = ['autocomplete', 'combobox', 'dropdownlist', 'dropdowntree', 'multiselect',\n 'listbox', 'colorpicker', 'numerictextbox', 'textbox',\n 'uploader', 'maskedtextbox', 'slider', 'datepicker', 'datetimepicker', 'daterangepicker', 'timepicker', 'checkbox', 'switch', 'radio'];\n if (keycompoentns.indexOf(this.getModuleName()) !== -1) {\n this.htmlattributes.key = '' + ComponentBase.reactUid;\n ComponentBase.reactUid++;\n }\n }\n if (this.clsName) {\n var clsList = this.element.classList;\n var className = this.htmlattributes['className'];\n for (var i = 0; i < clsList.length; i++) {\n if ((className.indexOf(clsList[parseInt(i.toString(), 10)]) === -1)) {\n this.htmlattributes['className'] = this.htmlattributes['className'] + ' ' + clsList[parseInt(i.toString(), 10)];\n }\n }\n this.clsName = false;\n }\n return this.htmlattributes;\n };\n /* tslint:disable:no-any */\n ComponentBase.prototype.trigger = function (eventName, eventProp, successHandler) {\n var _this = this;\n if (this.isDestroyed !== true && this.modelObserver) {\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n if ((eventName === 'change' || eventName === 'input')) {\n if (this.props.onChange && eventProp.event) {\n this.props.onChange.call(undefined, {\n syntheticEvent: eventProp.event,\n nativeEvent: { text: eventProp.value },\n value: eventProp.value,\n target: this\n });\n }\n }\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n if (eventName === 'created') {\n setTimeout(function () {\n _this.isCreated = true;\n if (!_this.isDestroyed) {\n _this.modelObserver.notify(eventName, eventProp, successHandler);\n }\n }, 10);\n }\n else {\n this.modelObserver.notify(eventName, eventProp, successHandler);\n }\n this.isProtectedOnChange = prevDetection;\n }\n };\n ComponentBase.prototype.compareValues = function (value1, value2) {\n var typeVal = typeof value1;\n var typeVal2 = typeof value2;\n if (typeVal === typeVal2) {\n if (value1 === value2) {\n return true;\n }\n if ((!isNullOrUndefined(value1) && value1.constructor) !== (!isNullOrUndefined(value2) && value2.constructor)) {\n return false;\n }\n if (value1 instanceof Date ||\n value1 instanceof RegExp ||\n value1 instanceof String ||\n value1 instanceof Number) {\n return value1.toString() === value2.toString();\n }\n if (isObject(value1) || Array.isArray(value1)) {\n var tempVal = value1;\n var tempVal2 = value2;\n if (isObject(tempVal)) {\n tempVal = [value1];\n tempVal2 = [value2];\n }\n return this.compareObjects(tempVal, tempVal2).status;\n }\n if (value1.constructor &&\n value1.constructor.name === value2.constructor.name &&\n (value1.constructor.name === 'Query' ||\n value1.constructor.name === 'DataManager')) {\n if (JSON.stringify(value1) === JSON.stringify(value2)) {\n return true;\n }\n }\n }\n return false;\n };\n ComponentBase.prototype.compareObjects = function (oldProps, newProps, propName) {\n var status = true;\n var lenSimilarity = (oldProps.length === newProps.length);\n var diffArray = [];\n var templateProps = !isNullOrUndefined(this['templateProps']) ? this['templateProps'] : [];\n if (lenSimilarity) {\n for (var i = 0, len = newProps.length; i < len; i++) {\n var curObj = {};\n var oldProp = oldProps[parseInt(i.toString(), 10)];\n var newProp = newProps[parseInt(i.toString(), 10)];\n var keys = Object.keys(newProp);\n if (keys.length !== 0) {\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n var oldValue = oldProp[\"\" + key];\n var newValue = newProp[\"\" + key];\n if (key === 'items') {\n for (var _j = 0; _j < newValue.length; _j++) {\n if (this.getModuleName() === 'richtexteditor' && typeof (newValue[parseInt(_j.toString(), 10)]) === 'object') {\n return { status: true };\n }\n }\n }\n if (this.getModuleName() === 'grid' && key === 'field') {\n curObj[\"\" + key] = newValue;\n }\n if (!oldProp.hasOwnProperty(key) || !((templateProps.length > 0 && templateProps.indexOf(\"\" + key) === -1 && typeof (newValue) === 'function') ? this.compareValues(oldValue.toString(), newValue.toString()) : this.compareValues(oldValue, newValue))) {\n if (!propName) {\n return { status: false };\n }\n status = false;\n curObj[\"\" + key] = newValue;\n }\n }\n }\n else if (newProps[parseInt(i.toString(), 10)] === oldProps[parseInt(i.toString(), 10)]) {\n status = true;\n }\n else {\n if (!propName) {\n return { status: false };\n }\n status = false;\n }\n if (this.getModuleName() === 'grid' && propName === 'columns' && isNullOrUndefined(curObj['field'])) {\n curObj['field'] = undefined;\n }\n if (Object.keys(curObj).length) {\n diffArray.push({ index: i, value: curObj, key: propName });\n }\n }\n }\n else {\n status = false;\n }\n return { status: status, changedProperties: diffArray };\n };\n ComponentBase.prototype.refreshChild = function (silent, props) {\n if (this.checkInjectedModules) {\n var prevModule = this.getInjectedModules() || [];\n var curModule = this.getInjectedServices() || [];\n for (var _i = 0, curModule_1 = curModule; _i < curModule_1.length; _i++) {\n var mod = curModule_1[_i];\n if (prevModule.indexOf(mod) === -1) {\n prevModule.push(mod);\n }\n }\n this.injectedModules = prevModule;\n }\n if (this.directivekeys) {\n var changedProps = [];\n var directiveValue = this.validateChildren({}, this.directivekeys, (props || this.props));\n if (directiveValue && Object.keys(directiveValue).length) {\n if (!silent && this.skipRefresh) {\n for (var _a = 0, _b = this.skipRefresh; _a < _b.length; _a++) {\n var fields = _b[_a];\n delete directiveValue[\"\" + fields];\n }\n }\n if (this.prevProperties) {\n var dKeys = Object.keys(this.prevProperties);\n for (var i = 0; i < dKeys.length; i++) {\n var key = dKeys[parseInt(i.toString(), 10)];\n if (!directiveValue.hasOwnProperty(key)) {\n continue;\n }\n var compareOutput = this.compareObjects(this.prevProperties[\"\" + key], directiveValue[\"\" + key], key);\n if (compareOutput.status) {\n delete directiveValue[\"\" + key];\n }\n else {\n if (compareOutput.changedProperties.length) {\n changedProps = changedProps.concat(compareOutput.changedProperties);\n }\n var obj = {};\n obj[\"\" + key] = directiveValue[\"\" + key];\n this.prevProperties = extend(this.prevProperties, obj);\n }\n }\n }\n else {\n this.prevProperties = extend({}, directiveValue, {}, true);\n }\n if (changedProps.length) {\n if (this.getModuleName() === 'grid' && key === 'columns') {\n for (var _c1 = 0, allColumns = this.columns; _c1 < allColumns.length; _c1++) {\n var compareField1 = getValue('field', allColumns[parseInt(_c1.toString(), 10)]);\n var compareField2 = getValue(_c1 + '.value.field', changedProps);\n if (compareField1 === compareField2) {\n var propInstance = getValue(changedProps[parseInt(_c1.toString(), 10)].key + '.' + changedProps[parseInt(_c1.toString(), 10)].index, this);\n if (propInstance && propInstance.setProperties) {\n propInstance.setProperties(changedProps[parseInt(_c1.toString(), 10)].value);\n }\n else {\n extend(propInstance, changedProps[parseInt(_c1.toString(), 10)].value);\n }\n }\n else {\n this.setProperties(directiveValue, silent);\n }\n }\n }\n else {\n for (var _c = 0, changedProps_1 = changedProps; _c < changedProps_1.length; _c++) {\n var changes = changedProps_1[_c];\n var propInstance_1 = getValue(changes.key + '.' + changes.index, this);\n if (propInstance_1 && propInstance_1.setProperties) {\n propInstance_1.setProperties(changes.value);\n }\n else {\n extend(propInstance_1, changes.value);\n }\n }\n }\n }\n else {\n this.setProperties(directiveValue, silent);\n }\n }\n }\n };\n ComponentBase.prototype.componentWillUnmount = function () {\n clearTimeout(this.cachedTimeOut);\n var modulesName = ['dropdowntree', 'checkbox'];\n // tslint:disable-next-line:no-any\n if (this.initRenderCalled && this.isAppendCalled && this.element && ((!modulesName.indexOf(this.getModuleName())) ? document.body.contains(this.element) : true) && !this.isDestroyed && this.isCreated) {\n this.destroy();\n }\n };\n // tslint:disable:no-any\n ComponentBase.prototype.appendReactElement = function (element, container) {\n var portal = ReactDOM.createPortal(element, container);\n if (!this.portals) {\n this.portals = [portal];\n }\n else {\n this.portals.push(portal);\n }\n };\n // tslint:disable:no-any\n ComponentBase.prototype.renderReactTemplates = function (callback) {\n this.isReactForeceUpdate = true;\n if (callback) {\n this.forceUpdate(callback);\n }\n else {\n this.forceUpdate();\n }\n this.isReactForeceUpdate = false;\n };\n // tslint:disable:no-any\n ComponentBase.prototype.clearTemplate = function (templateNames, index, callback) {\n var _this = this;\n var tempPortal = [];\n if (templateNames && templateNames.length) {\n Array.prototype.forEach.call(templateNames, function (propName) {\n var indexCount = 0;\n var propIndexCount = 0;\n _this.portals.forEach(function (portal) {\n if (portal.propName === propName) {\n tempPortal.push(propIndexCount);\n propIndexCount++;\n }\n });\n if (!isNullOrUndefined(index) && _this.portals[index] && _this.portals[index].propName === propName) {\n _this.portals.splice(index, 1);\n indexCount++;\n }\n else {\n for (var i = 0; i < _this.portals.length; i++) {\n if (_this.portals[parseInt(i.toString(), 10)].propName === propName) {\n _this.portals.splice(i, 1);\n i--;\n }\n }\n }\n });\n }\n else {\n this.portals = [];\n }\n this.renderReactTemplates(callback);\n };\n /* tslint:disable:no-any */\n ComponentBase.prototype.validateChildren = function (childCache, mapper, props) {\n var flag = false;\n var childs = React.Children.toArray(props.children);\n for (var _i = 0, childs_1 = childs; _i < childs_1.length; _i++) {\n var child = childs_1[_i];\n var ifield = this.getChildType(child);\n var key = mapper[\"\" + ifield];\n if (ifield && mapper) {\n // tslint:disable\n var childProps = this.getChildProps(React.Children.toArray(child.props.children), key);\n if (childProps.length) {\n flag = true;\n // tslint:disable\n childCache[child.type.propertyName || ifield] = childProps;\n }\n }\n }\n if (flag) {\n return childCache;\n }\n return null;\n };\n // tslint:disable:no-any\n ComponentBase.prototype.getChildType = function (child) {\n if (child.type && child.type.isDirective) {\n return child.type.moduleName || '';\n }\n return '';\n };\n ComponentBase.prototype.getChildProps = function (subChild, matcher) {\n var ret = [];\n for (var _i = 0, subChild_1 = subChild; _i < subChild_1.length; _i++) {\n var child = subChild_1[_i];\n var accessProp = false;\n var key = void 0;\n if (typeof matcher === 'string') {\n accessProp = true;\n key = matcher;\n }\n else {\n key = Object.keys(matcher)[0];\n }\n var prop = child.props;\n // tslint:disable-next-line:no-any\n var field = this.getChildType(child);\n if (field === key) {\n if (accessProp || !prop.children) {\n // tslint:disable\n var cacheVal = extend({}, prop, {}, true);\n // tslint:disable\n this.processComplexTemplate(cacheVal, child.type);\n ret.push(cacheVal);\n }\n else {\n var cachedValue = this.validateChildren(extend({}, prop), matcher[\"\" + key], prop) || prop;\n if (cachedValue['children']) {\n delete cachedValue['children'];\n }\n // tslint:disable\n this.processComplexTemplate(cachedValue, child.type);\n ret.push(cachedValue);\n }\n }\n }\n return ret;\n };\n // tslint:disable:no-any\n ComponentBase.prototype.getInjectedServices = function () {\n var childs = React.Children.toArray(this.props.children);\n for (var _i = 0, childs_2 = childs; _i < childs_2.length; _i++) {\n var child = childs_2[_i];\n /* tslint:disable:no-any */\n if (child.type.isService) {\n return child.props.services;\n }\n }\n return [];\n };\n /**\n * @private\n */\n ComponentBase.reactUid = 1;\n return ComponentBase;\n}(React.Component));\nexport { ComponentBase };\n/* tslint:enable:no-any */\n","// eslint-disable-next-line\nexport function applyMixins(derivedClass, baseClass) {\n // tslint:disable:typedef\n baseClass.forEach(function (baseClass) {\n Object.getOwnPropertyNames(baseClass.prototype).forEach(function (name) {\n if (name !== 'isMounted' && name !== 'replaceState') {\n derivedClass.prototype[\"\" + name] = baseClass.prototype[\"\" + name];\n }\n });\n });\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\n/**\n * Directory base\n */\nvar ComplexBase = /** @class */ (function (_super) {\n __extends(ComplexBase, _super);\n function ComplexBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ComplexBase.prototype.render = function () {\n return null;\n };\n ComplexBase.isDirective = true;\n return ComplexBase;\n}(React.PureComponent));\nexport { ComplexBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Dependency injection\n */\nimport * as React from 'react';\nvar Inject = /** @class */ (function (_super) {\n __extends(Inject, _super);\n function Inject() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // eslint-disable-next-line\n Inject.prototype.render = function () {\n return null;\n };\n Inject.isService = true;\n return Inject;\n}(React.PureComponent));\nexport { Inject };\n","/**\n * Template compiler for react\n */\nimport { setTemplateEngine, getTemplateEngine, extend } from '@syncfusion/ej2-base';\nimport * as ReactDOM from 'react-dom';\nimport * as React from 'react';\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar stringCompiler = getTemplateEngine();\n// eslint-disable-next-line\nexport function compile(templateElement, helper) {\n if (typeof templateElement === 'string' || (templateElement.prototype && templateElement.prototype.CSPTemplate && typeof templateElement === 'function')) {\n return stringCompiler(templateElement, helper);\n }\n else {\n return function (data, component, prop, element) {\n var actTemplate = templateElement;\n var actData = data;\n if (typeof actTemplate === 'object') {\n actTemplate = templateElement.template;\n actData = extend({}, data, templateElement.data || {});\n }\n var cEle;\n if (element) {\n cEle = element;\n }\n else {\n cEle = document.createElement('div');\n }\n var rele = React.createElement(actTemplate, actData);\n var portal = ReactDOM.createPortal(rele, cEle);\n portal.propName = prop;\n if (!component.portals) {\n component.portals = [portal];\n }\n else {\n component.portals.push(portal);\n }\n if (!element) {\n return [cEle];\n }\n };\n }\n}\nsetTemplateEngine({ compile: compile });\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `ButtonComponent` represents the react Button Component.\n * ```ts\n * \n * ```\n */\nvar ButtonComponent = /** @class */ (function (_super) {\n __extends(ButtonComponent, _super);\n function ButtonComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n ButtonComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('button', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return ButtonComponent;\n}(Button));\nexport { ButtonComponent };\napplyMixins(ButtonComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the react CheckBox Component.\n * ```ts\n * \n * ```\n */\nvar CheckBoxComponent = /** @class */ (function (_super) {\n __extends(CheckBoxComponent, _super);\n function CheckBoxComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n CheckBoxComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return CheckBoxComponent;\n}(CheckBox));\nexport { CheckBoxComponent };\napplyMixins(CheckBoxComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { DatePicker } from '@syncfusion/ej2-calendars';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the Essential JS 2 React DatePicker Component.\n * ```ts\n * \n * ```\n */\nvar DatePickerComponent = /** @class */ (function (_super) {\n __extends(DatePickerComponent, _super);\n function DatePickerComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n DatePickerComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return DatePickerComponent;\n}(DatePicker));\nexport { DatePickerComponent };\napplyMixins(DatePickerComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * The DropDownList component contains a list of predefined values, from which the user can choose a single value.\n * ```\n * \n * ```\n */\nvar DropDownListComponent = /** @class */ (function (_super) {\n __extends(DropDownListComponent, _super);\n function DropDownListComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = [\"headerTemplate\", \"valueTemplate\", \"itemTemplate\"];\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n DropDownListComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return DropDownListComponent;\n}(DropDownList));\nexport { DropDownListComponent };\napplyMixins(DropDownListComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ComplexBase } from '@syncfusion/ej2-react-base';\n/**\n * `ColumnDirective` represent a column of the react Grid.\n * It must be contained in a Grid component(`GridComponent`).\n * ```tsx\n * \n * \n * \n * \n * \n * \n * ```\n */\nvar ColumnDirective = /** @class */ (function (_super) {\n __extends(ColumnDirective, _super);\n function ColumnDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnDirective.moduleName = 'column';\n ColumnDirective.complexTemplate = { 'filter.itemTemplate': 'filter.itemTemplate' };\n return ColumnDirective;\n}(ComplexBase));\nexport { ColumnDirective };\nvar ColumnsDirective = /** @class */ (function (_super) {\n __extends(ColumnsDirective, _super);\n function ColumnsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnsDirective.propertyName = 'columns';\n ColumnsDirective.moduleName = 'columns';\n return ColumnsDirective;\n}(ComplexBase));\nexport { ColumnsDirective };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Grid } from '@syncfusion/ej2-grids';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `GridComponent` represents the react Grid.\n * ```tsx\n * \n * ```\n */\nvar GridComponent = /** @class */ (function (_super) {\n __extends(GridComponent, _super);\n function GridComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.directivekeys = { 'columns': { 'column': { 'stackedColumns': 'stackedColumn' } }, 'aggregates': { 'aggregate': { 'aggregateColumns': 'aggregateColumn' } } };\n _this.statelessTemplateProps = null;\n _this.templateProps = [\"template\", \"headerTemplate\", \"commandsTemplate\", \"filter.itemTemplate\", \"editTemplate\", \"filterTemplate\"];\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n GridComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return GridComponent;\n}(Grid));\nexport { GridComponent };\napplyMixins(GridComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React NumericTextBox Component\n * ```html\n * \n * ```\n */\nvar NumericTextBoxComponent = /** @class */ (function (_super) {\n __extends(NumericTextBoxComponent, _super);\n function NumericTextBoxComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n NumericTextBoxComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return NumericTextBoxComponent;\n}(NumericTextBox));\nexport { NumericTextBoxComponent };\napplyMixins(NumericTextBoxComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, Event, EventHandler, L10n, setValue, getValue, isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, detach, Internationalization, getUniqueID, closest } from '@syncfusion/ej2-base';\nimport { addClass, removeClass } from '@syncfusion/ej2-base';\nimport { Input } from '../input/input';\nvar HIDE_CLEAR = 'e-clear-icon-hide';\nvar TEXTBOX_FOCUS = 'e-input-focus';\nvar containerAttr = ['title', 'style', 'class'];\n/**\n * Represents the TextBox component that allows the user to enter the values based on it's type.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar TextBox = /** @class */ (function (_super) {\n __extends(TextBox, _super);\n /**\n *\n * @param {TextBoxModel} options - Specifies the TextBox model.\n * @param {string | HTMLInputElement | HTMLTextAreaElement} element - Specifies the element to render as component.\n * @private\n */\n function TextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousValue = null;\n _this.isAngular = false;\n _this.isHiddenInput = false;\n _this.isForm = false;\n _this.inputPreviousValue = null;\n _this.isVue = false;\n _this.textboxOptions = options;\n return _this;\n }\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {TextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {TextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n TextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'floatLabelType':\n Input.removeFloating(this.textboxWrapper);\n Input.addFloating(this.respectiveElement, this.floatLabelType, this.placeholder);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n this.bindClearEvent();\n break;\n case 'width':\n Input.setWidth(newProp.width, this.textboxWrapper.container);\n break;\n case 'value':\n {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n if (!this.isBlank(this.value)) {\n this.value = this.value.toString();\n }\n this.isProtectedOnChange = prevOnChange;\n Input.setValue(this.value, this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n this.inputPreviousValue = this.respectiveElement.value;\n /* istanbul ignore next */\n if ((this.isAngular || this.isVue) && this.preventChange === true) {\n this.previousValue = this.isAngular ? this.value : this.previousValue;\n this.preventChange = false;\n }\n else if (isNullOrUndefined(this.isAngular) || !this.isAngular\n || (this.isAngular && !this.preventChange) || (this.isAngular && isNullOrUndefined(this.preventChange))) {\n this.raiseChangeEvent();\n }\n }\n break;\n case 'htmlAttributes':\n {\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.checkAttributes(true);\n this.multiline && !isNullOrUndefined(this.textarea) ? Input.validateInputType(this.textboxWrapper.container, this.textarea) : Input.validateInputType(this.textboxWrapper.container, this.element);\n }\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.respectiveElement);\n break;\n case 'type':\n if (this.respectiveElement.tagName !== 'TEXTAREA') {\n this.respectiveElement.setAttribute('type', this.type);\n Input.validateInputType(this.textboxWrapper.container, this.element);\n this.raiseChangeEvent();\n }\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.respectiveElement, this.textboxWrapper);\n this.bindClearEvent();\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.textboxWrapper.container]);\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n Input.calculateWidth(this.respectiveElement, this.textboxWrapper.container);\n break;\n case 'autocomplete':\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n }\n else {\n this.removeAttributes(['autocomplete']);\n }\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n break;\n }\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n TextBox.prototype.getModuleName = function () {\n return 'textbox';\n };\n TextBox.prototype.isBlank = function (str) {\n return (!str || /^\\s*$/.test(str));\n };\n TextBox.prototype.preRender = function () {\n this.cloneElement = this.element.cloneNode(true);\n this.formElement = closest(this.element, 'form');\n if (!isNullOrUndefined(this.formElement)) {\n this.isForm = true;\n }\n /* istanbul ignore next */\n if (this.element.tagName === 'EJS-TEXTBOX') {\n var ejInstance = getValue('ej2_instances', this.element);\n var inputElement = this.multiline ?\n this.createElement('textarea') :\n this.createElement('input');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id' && attributeName !== 'class') {\n inputElement.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n inputElement.innerHTML = this.element.innerHTML;\n if (attributeName === 'name') {\n this.element.removeAttribute('name');\n }\n }\n else if (attributeName === 'class') {\n inputElement.setAttribute(attributeName, this.element.className.split(' ').filter(function (item) { return item.indexOf('ng-') !== 0; }).join(' '));\n }\n }\n this.element.appendChild(inputElement);\n this.element = inputElement;\n setValue('ej2_instances', ejInstance, this.element);\n }\n this.updateHTMLAttrToElement();\n this.checkAttributes(false);\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['value'] === undefined)) && this.element.value !== '') {\n this.setProperties({ value: this.element.value }, true);\n }\n if (this.element.tagName !== 'TEXTAREA') {\n this.element.setAttribute('type', this.type);\n }\n if (this.type === 'text') {\n this.element.setAttribute('role', 'textbox');\n }\n this.globalize = new Internationalization(this.locale);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('textbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (!this.element.hasAttribute('id')) {\n this.element.setAttribute('id', getUniqueID('textbox'));\n }\n if (!this.element.hasAttribute('name')) {\n this.element.setAttribute('name', this.element.getAttribute('id'));\n }\n if (this.element.tagName === 'INPUT' && this.multiline) {\n this.isHiddenInput = true;\n this.textarea = this.createElement('textarea');\n this.element.parentNode.insertBefore(this.textarea, this.element);\n this.element.setAttribute('type', 'hidden');\n this.textarea.setAttribute('name', this.element.getAttribute('name'));\n this.element.removeAttribute('name');\n this.textarea.setAttribute('role', this.element.getAttribute('role'));\n this.element.removeAttribute('role');\n this.textarea.setAttribute('id', getUniqueID('textarea'));\n var apiAttributes = ['placeholder', 'disabled', 'value', 'readonly', 'type', 'autocomplete'];\n for (var index = 0; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (this.element.hasAttribute(attributeName) && containerAttr.indexOf(attributeName) < 0 &&\n !(attributeName === 'id' || attributeName === 'type' || attributeName === 'e-mappinguid')) {\n // e-mappinguid attribute is handled for Grid component.\n this.textarea.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n if (apiAttributes.indexOf(attributeName) < 0) {\n this.element.removeAttribute(attributeName);\n index--;\n }\n }\n }\n }\n };\n TextBox.prototype.checkAttributes = function (isDynamic) {\n var attrs = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['placeholder', 'disabled', 'value', 'readonly', 'type', 'autocomplete'];\n for (var _i = 0, attrs_1 = attrs; _i < attrs_1.length; _i++) {\n var key = attrs_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(key))) {\n switch (key) {\n case 'disabled':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.element.getAttribute(key) === 'disabled' || this.element.getAttribute(key) === '' ||\n this.element.getAttribute(key) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.element.getAttribute(key) === 'readonly' || this.element.getAttribute(key) === ''\n || this.element.getAttribute(key) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'autocomplete':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['autocomplete'] === undefined)) || isDynamic) {\n var autoCompleteTxt = this.element.autocomplete === 'off' ? 'off' : 'on';\n this.setProperties({ autocomplete: autoCompleteTxt }, !isDynamic);\n }\n break;\n case 'value':\n if (((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['value'] === undefined)) || isDynamic) && this.element.value !== '') {\n this.setProperties({ value: this.element.value }, !isDynamic);\n }\n break;\n case 'type':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['type'] === undefined)) || isDynamic) {\n this.setProperties({ type: this.element.type }, !isDynamic);\n }\n break;\n }\n }\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n TextBox.prototype.render = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = this.getInputValidClassList(this.cssClass);\n }\n this.respectiveElement = (this.isHiddenInput) ? this.textarea : this.element;\n this.textboxWrapper = Input.createInput({\n element: this.respectiveElement,\n floatLabelType: this.floatLabelType,\n properties: {\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n cssClass: updatedCssClassValue,\n readonly: this.readonly,\n placeholder: this.placeholder,\n showClearButton: this.showClearButton\n }\n });\n this.updateHTMLAttrToWrapper();\n if (this.isHiddenInput) {\n this.respectiveElement.parentNode.insertBefore(this.element, this.respectiveElement);\n }\n this.wireEvents();\n if (!isNullOrUndefined(this.value)) {\n Input.setValue(this.value, this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n }\n if (!isNullOrUndefined(this.value)) {\n this.initialValue = this.value;\n this.setInitialValue();\n }\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n }\n else if (!isNullOrUndefined(this.textboxOptions) && (this.textboxOptions['autocomplete'] !== undefined)) {\n this.removeAttributes(['autocomplete']);\n }\n this.previousValue = this.value;\n this.inputPreviousValue = this.value;\n this.respectiveElement.defaultValue = this.respectiveElement.value;\n Input.setWidth(this.width, this.textboxWrapper.container);\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n };\n TextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = this.getInputValidClassList(this.htmlAttributes[\"\" + key]);\n if (updatedClassValues !== '') {\n addClass([this.textboxWrapper.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = this.textboxWrapper.container.getAttribute(key);\n setStyle = !isNullOrUndefined(setStyle) ? (setStyle + this.htmlAttributes[\"\" + key]) :\n this.htmlAttributes[\"\" + key];\n this.textboxWrapper.container.setAttribute(key, setStyle);\n }\n else {\n this.textboxWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n TextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) < 0) {\n this.multiline && !isNullOrUndefined(this.textarea) ? this.textarea.setAttribute(key, this.htmlAttributes[\"\" + key]) : this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n TextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getInputValidClassList(newClass), [this.textboxWrapper.container], this.getInputValidClassList(oldClass));\n };\n TextBox.prototype.getInputValidClassList = function (inputClassName) {\n var result = inputClassName;\n if (!isNullOrUndefined(inputClassName) && inputClassName !== '') {\n result = (inputClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n TextBox.prototype.setInitialValue = function () {\n if (!this.isAngular) {\n this.respectiveElement.setAttribute('value', this.initialValue);\n }\n };\n TextBox.prototype.wireEvents = function () {\n EventHandler.add(this.respectiveElement, 'focus', this.focusHandler, this);\n EventHandler.add(this.respectiveElement, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.respectiveElement, 'keydown', this.keydownHandler, this);\n EventHandler.add(this.respectiveElement, 'input', this.inputHandler, this);\n EventHandler.add(this.respectiveElement, 'change', this.changeHandler, this);\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.resetForm, this);\n }\n this.bindClearEvent();\n if (!isNullOrUndefined(this.textboxWrapper.container.querySelector('.e-float-text')) && this.floatLabelType === 'Auto'\n && this.textboxWrapper.container.classList.contains('e-autofill') &&\n this.textboxWrapper.container.classList.contains('e-outline')) {\n EventHandler.add((this.textboxWrapper.container.querySelector('.e-float-text')), 'animationstart', this.animationHandler, this);\n }\n };\n TextBox.prototype.animationHandler = function () {\n this.textboxWrapper.container.classList.add('e-valid-input');\n var label = this.textboxWrapper.container.querySelector('.e-float-text');\n if (!isNullOrUndefined(label)) {\n label.classList.add('e-label-top');\n if (label.classList.contains('e-label-bottom')) {\n label.classList.remove('e-label-bottom');\n }\n }\n };\n TextBox.prototype.resetValue = function (value) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.value = value;\n this.isProtectedOnChange = prevOnChange;\n };\n TextBox.prototype.resetForm = function () {\n if (this.isAngular) {\n this.resetValue('');\n }\n else {\n this.resetValue(this.initialValue);\n }\n if (!isNullOrUndefined(this.textboxWrapper)) {\n var label = this.textboxWrapper.container.querySelector('.e-float-text');\n if (!isNullOrUndefined(label) && this.floatLabelType !== 'Always') {\n if ((isNullOrUndefined(this.initialValue) || this.initialValue === '')) {\n label.classList.add('e-label-bottom');\n label.classList.remove('e-label-top');\n }\n else if (this.initialValue !== '') {\n label.classList.add('e-label-top');\n label.classList.remove('e-label-bottom');\n }\n }\n }\n };\n TextBox.prototype.focusHandler = function (args) {\n var eventArgs = {\n container: this.textboxWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('focus', eventArgs);\n };\n TextBox.prototype.focusOutHandler = function (args) {\n if (!(this.previousValue === null && this.value === null && this.respectiveElement.value === '') &&\n (this.previousValue !== this.value)) {\n this.raiseChangeEvent(args, true);\n }\n var eventArgs = {\n container: this.textboxWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('blur', eventArgs);\n };\n TextBox.prototype.keydownHandler = function (args) {\n if ((args.keyCode === 13 || args.keyCode === 9) && !((this.previousValue === null || this.previousValue === \"\") && (this.value === null || this.value === \"\") && this.respectiveElement.value === \"\")) {\n this.setProperties({ value: this.respectiveElement.value }, true);\n }\n };\n TextBox.prototype.inputHandler = function (args) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-this-alias\n var textboxObj = this;\n var eventArgs = {\n event: args,\n value: this.respectiveElement.value,\n previousValue: this.inputPreviousValue,\n container: this.textboxWrapper.container\n };\n this.inputPreviousValue = this.respectiveElement.value;\n /* istanbul ignore next */\n if (this.isAngular) {\n textboxObj.localChange({ value: this.respectiveElement.value });\n this.preventChange = true;\n }\n if (this.isVue) {\n this.preventChange = true;\n }\n this.trigger('input', eventArgs);\n args.stopPropagation();\n };\n TextBox.prototype.changeHandler = function (args) {\n this.setProperties({ value: this.respectiveElement.value }, true);\n if (this.previousValue != this.value) {\n this.raiseChangeEvent(args, true);\n }\n args.stopPropagation();\n };\n TextBox.prototype.raiseChangeEvent = function (event, interaction) {\n var eventArgs = {\n event: event,\n value: this.value,\n previousValue: this.previousValue,\n container: this.textboxWrapper.container,\n isInteraction: interaction ? interaction : false,\n isInteracted: interaction ? interaction : false\n };\n this.preventChange = false;\n this.trigger('change', eventArgs);\n this.previousValue = this.value;\n //EJ2CORE-738:For this task we update the textarea value to the input when input tag with multiline is present\n if (this.element.tagName === 'INPUT' && this.multiline && Browser.info.name === 'mozilla') {\n this.element.value = this.respectiveElement.value;\n }\n };\n TextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n if (this.enabled) {\n EventHandler.add(this.textboxWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler, this);\n }\n else {\n EventHandler.remove(this.textboxWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler);\n }\n }\n };\n TextBox.prototype.resetInputHandler = function (event) {\n event.preventDefault();\n if (!(this.textboxWrapper.clearButton.classList.contains(HIDE_CLEAR)) || this.textboxWrapper.container.classList.contains('e-static-clear')) {\n Input.setValue('', this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n this.setProperties({ value: this.respectiveElement.value }, true);\n var eventArgs = {\n event: event,\n value: this.respectiveElement.value,\n previousValue: this.inputPreviousValue,\n container: this.textboxWrapper.container\n };\n this.trigger('input', eventArgs);\n this.inputPreviousValue = this.respectiveElement.value;\n this.raiseChangeEvent(event, true);\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n }\n };\n TextBox.prototype.unWireEvents = function () {\n EventHandler.remove(this.respectiveElement, 'focus', this.focusHandler);\n EventHandler.remove(this.respectiveElement, 'blur', this.focusOutHandler);\n EventHandler.remove(this.respectiveElement, 'keydown', this.keydownHandler);\n EventHandler.remove(this.respectiveElement, 'input', this.inputHandler);\n EventHandler.remove(this.respectiveElement, 'change', this.changeHandler);\n if (this.isForm) {\n EventHandler.remove(this.formElement, 'reset', this.resetForm);\n }\n if (!isNullOrUndefined(this.textboxWrapper.container.querySelector('.e-float-text')) && this.floatLabelType === 'Auto'\n && this.textboxWrapper.container.classList.contains('e-outline') &&\n this.textboxWrapper.container.classList.contains('e-autofill')) {\n EventHandler.remove((this.textboxWrapper.container.querySelector('.e-float-text')), 'animationstart', this.animationHandler);\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also, it maintains the initial TextBox element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n TextBox.prototype.destroy = function () {\n this.unWireEvents();\n if (this.element.tagName === 'INPUT' && this.multiline) {\n detach(this.textboxWrapper.container.getElementsByTagName('textarea')[0]);\n this.respectiveElement = this.element;\n this.element.removeAttribute('type');\n }\n this.respectiveElement.value = this.respectiveElement.defaultValue;\n this.respectiveElement.classList.remove('e-input');\n this.removeAttributes(['aria-disabled', 'aria-readonly', 'aria-labelledby']);\n if (!isNullOrUndefined(this.textboxWrapper)) {\n this.textboxWrapper.container.insertAdjacentElement('afterend', this.respectiveElement);\n detach(this.textboxWrapper.container);\n }\n this.textboxWrapper = null;\n Input.destroy();\n _super.prototype.destroy.call(this);\n };\n /**\n * Adding the icons to the TextBox component.\n *\n * @param { string } position - Specify the icon placement on the TextBox. Possible values are append and prepend.\n * @param { string | string[] } icons - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for TextBox.\n * @returns {void}\n */\n TextBox.prototype.addIcon = function (position, icons) {\n Input.addIcon(position, icons, this.textboxWrapper.container, this.respectiveElement, this.createElement);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n */\n TextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns */\n /**\n * Adding the multiple attributes as key-value pair to the TextBox element.\n *\n * @param {string} attributes - Specifies the attributes to be add to TextBox element.\n * @returns {void}\n */\n TextBox.prototype.addAttributes = function (attributes) {\n for (var _i = 0, _a = Object.keys(attributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'disabled') {\n this.setProperties({ enabled: false }, true);\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n }\n else if (key === 'readonly') {\n this.setProperties({ readonly: true }, true);\n Input.setReadonly(this.readonly, this.respectiveElement);\n }\n else if (key === 'class') {\n this.respectiveElement.classList.add(attributes[\"\" + key]);\n }\n else if (key === 'placeholder') {\n this.setProperties({ placeholder: attributes[\"\" + key] }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n }\n else if (key === 'rows' && this.respectiveElement.tagName === 'TEXTAREA') {\n this.respectiveElement.setAttribute(key, attributes[\"\" + key]);\n }\n else {\n this.respectiveElement.setAttribute(key, attributes[\"\" + key]);\n }\n }\n };\n /**\n * Removing the multiple attributes as key-value pair to the TextBox element.\n *\n * @param { string[] } attributes - Specifies the attributes name to be removed from TextBox element.\n * @returns {void}\n */\n TextBox.prototype.removeAttributes = function (attributes) {\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var key = attributes_1[_i];\n if (key === 'disabled') {\n this.setProperties({ enabled: true }, true);\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n }\n else if (key === 'readonly') {\n this.setProperties({ readonly: false }, true);\n Input.setReadonly(this.readonly, this.respectiveElement);\n }\n else if (key === 'placeholder') {\n this.setProperties({ placeholder: null }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n }\n else {\n this.respectiveElement.removeAttribute(key);\n }\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n TextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.respectiveElement && this.enabled) {\n this.respectiveElement.focus();\n if (this.textboxWrapper.container.classList.contains('e-input-group')\n || this.textboxWrapper.container.classList.contains('e-outline')\n || this.textboxWrapper.container.classList.contains('e-filled')) {\n addClass([this.textboxWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n TextBox.prototype.focusOut = function () {\n if (document.activeElement === this.respectiveElement && this.enabled) {\n this.respectiveElement.blur();\n if (this.textboxWrapper.container.classList.contains('e-input-group')\n || this.textboxWrapper.container.classList.contains('e-outline')\n || this.textboxWrapper.container.classList.contains('e-filled')) {\n removeClass([this.textboxWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n __decorate([\n Property('text')\n ], TextBox.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"value\", void 0);\n __decorate([\n Property('Never')\n ], TextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property('')\n ], TextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('on')\n ], TextBox.prototype, \"autocomplete\", void 0);\n __decorate([\n Property({})\n ], TextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"multiline\", void 0);\n __decorate([\n Property(true)\n ], TextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"width\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"input\", void 0);\n TextBox = __decorate([\n NotifyPropertyChanges\n ], TextBox);\n return TextBox;\n}(Component));\nexport { TextBox };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React TextBox Component\n * ```html\n * \n * ```\n */\nvar TextBoxComponent = /** @class */ (function (_super) {\n __extends(TextBoxComponent, _super);\n function TextBoxComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n TextBoxComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return TextBoxComponent;\n}(TextBox));\nexport { TextBoxComponent };\napplyMixins(TextBoxComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, Event, closest, Collection, Complex, attributes, detach, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, select, isVisible } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Browser, formatUnit, L10n } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, isNullOrUndefined as isNOU, selectAll, addClass, removeClass, remove } from '@syncfusion/ej2-base';\nimport { EventHandler, rippleEffect, Touch, compile, Animation } from '@syncfusion/ej2-base';\nimport { getRandomId, SanitizeHtmlHelper, Draggable } from '@syncfusion/ej2-base';\nimport { Toolbar } from '../toolbar/toolbar';\nvar CLS_TAB = 'e-tab';\nvar CLS_HEADER = 'e-tab-header';\nvar CLS_BLA_TEM = 'blazor-template';\nvar CLS_CONTENT = 'e-content';\nvar CLS_NEST = 'e-nested';\nvar CLS_ITEMS = 'e-items';\nvar CLS_ITEM = 'e-item';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_RTL = 'e-rtl';\nvar CLS_ACTIVE = 'e-active';\nvar CLS_DISABLE = 'e-disable';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_FOCUS = 'e-focused';\nvar CLS_ICONS = 'e-icons';\nvar CLS_ICON = 'e-icon';\nvar CLS_ICON_TAB = 'e-icon-tab';\nvar CLS_ICON_CLOSE = 'e-close-icon';\nvar CLS_CLOSE_SHOW = 'e-close-show';\nvar CLS_TEXT = 'e-tab-text';\nvar CLS_INDICATOR = 'e-indicator';\nvar CLS_WRAP = 'e-tab-wrap';\nvar CLS_TEXT_WRAP = 'e-text-wrap';\nvar CLS_TAB_ICON = 'e-tab-icon';\nvar CLS_TB_ITEMS = 'e-toolbar-items';\nvar CLS_TB_ITEM = 'e-toolbar-item';\nvar CLS_TB_POP = 'e-toolbar-pop';\nvar CLS_TB_POPUP = 'e-toolbar-popup';\nvar CLS_HOR_NAV = 'e-hor-nav';\nvar CLS_POPUP_OPEN = 'e-popup-open';\nvar CLS_POPUP_CLOSE = 'e-popup-close';\nvar CLS_PROGRESS = 'e-progress';\nvar CLS_IGNORE = 'e-ignore';\nvar CLS_OVERLAY = 'e-overlay';\nvar CLS_HSCRCNT = 'e-hscroll-content';\nvar CLS_VSCRCNT = 'e-vscroll-content';\nvar CLS_VTAB = 'e-vertical-tab';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_VLEFT = 'e-vertical-left';\nvar CLS_VRIGHT = 'e-vertical-right';\nvar CLS_HBOTTOM = 'e-horizontal-bottom';\nvar CLS_FILL = 'e-fill-mode';\nvar TABITEMPREFIX = 'tabitem_';\nvar CLS_REORDER_ACTIVE_ITEM = 'e-reorder-active-item';\n/**\n * Objects used for configuring the Tab selecting item action properties.\n */\nvar TabActionSettings = /** @class */ (function (_super) {\n __extends(TabActionSettings, _super);\n function TabActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideLeftIn')\n ], TabActionSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(600)\n ], TabActionSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], TabActionSettings.prototype, \"easing\", void 0);\n return TabActionSettings;\n}(ChildProperty));\nexport { TabActionSettings };\n/**\n * Objects used for configuring the Tab animation properties.\n */\nvar TabAnimationSettings = /** @class */ (function (_super) {\n __extends(TabAnimationSettings, _super);\n function TabAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'SlideLeftIn', duration: 600, easing: 'ease' }, TabActionSettings)\n ], TabAnimationSettings.prototype, \"previous\", void 0);\n __decorate([\n Complex({ effect: 'SlideRightIn', duration: 600, easing: 'ease' }, TabActionSettings)\n ], TabAnimationSettings.prototype, \"next\", void 0);\n return TabAnimationSettings;\n}(ChildProperty));\nexport { TabAnimationSettings };\n/**\n * Objects used for configuring the Tab item header properties.\n */\nvar Header = /** @class */ (function (_super) {\n __extends(Header, _super);\n function Header() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Header.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], Header.prototype, \"iconCss\", void 0);\n __decorate([\n Property('left')\n ], Header.prototype, \"iconPosition\", void 0);\n return Header;\n}(ChildProperty));\nexport { Header };\n/**\n * An array of object that is used to configure the Tab.\n */\nvar TabItem = /** @class */ (function (_super) {\n __extends(TabItem, _super);\n function TabItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({}, Header)\n ], TabItem.prototype, \"header\", void 0);\n __decorate([\n Property(null)\n ], TabItem.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property('')\n ], TabItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], TabItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TabItem.prototype, \"disabled\", void 0);\n __decorate([\n Property(true)\n ], TabItem.prototype, \"visible\", void 0);\n __decorate([\n Property()\n ], TabItem.prototype, \"id\", void 0);\n __decorate([\n Property(-1)\n ], TabItem.prototype, \"tabIndex\", void 0);\n return TabItem;\n}(ChildProperty));\nexport { TabItem };\n/**\n * Tab is a content panel to show multiple contents in a single space, one at a time.\n * Each Tab item has an associated content, that will be displayed based on the active Tab header item.\n * ```html\n *
    \n * \n * ```\n */\nvar Tab = /** @class */ (function (_super) {\n __extends(Tab, _super);\n /**\n * Initializes a new instance of the Tab class.\n *\n * @param {TabModel} options - Specifies Tab model properties as options.\n * @param {string | HTMLElement} element - Specifies the element that is rendered as a Tab.\n */\n function Tab(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.show = {};\n _this.hide = {};\n _this.maxHeight = 0;\n _this.title = 'Close';\n _this.isInteracted = false;\n _this.lastIndex = 0;\n _this.isAdd = false;\n _this.isIconAlone = false;\n _this.draggableItems = [];\n _this.resizeContext = _this.refreshActiveTabBorder.bind(_this);\n /**\n * Contains the keyboard configuration of the Tab.\n */\n _this.keyConfigs = {\n tab: 'tab',\n home: 'home',\n end: 'end',\n enter: 'enter',\n space: 'space',\n delete: 'delete',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow'\n };\n return _this;\n }\n /**\n * Removes the component from the DOM and detaches all its related event handlers, attributes and classes.\n *\n * @returns {void}\n */\n Tab.prototype.destroy = function () {\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n if (!isNOU(this.tbObj)) {\n this.tbObj.destroy();\n this.tbObj = null;\n }\n this.unWireEvents();\n this.element.removeAttribute('aria-disabled');\n this.expTemplateContent();\n if (!this.isTemplate) {\n while (this.element.firstElementChild) {\n remove(this.element.firstElementChild);\n }\n }\n else {\n var cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n this.element.classList.remove(CLS_TEMPLATE);\n if (!isNOU(cntEle)) {\n cntEle.innerHTML = this.cnt;\n }\n }\n if (this.btnCls) {\n this.btnCls = null;\n }\n this.hdrEle = null;\n this.cntEle = null;\n this.tbItems = null;\n this.tbItem = null;\n this.tbPop = null;\n this.prevItem = null;\n this.popEle = null;\n this.bdrLine = null;\n this.content = null;\n this.dragItem = null;\n this.cloneElement = null;\n this.draggingItems = [];\n if (this.draggableItems && this.draggableItems.length > 0) {\n for (var i = 0; i < this.draggableItems.length; i++) {\n this.draggableItems[i].destroy();\n this.draggableItems[i] = null;\n }\n this.draggableItems = [];\n }\n _super.prototype.destroy.call(this);\n this.trigger('destroyed');\n };\n /**\n * Refresh the tab component\n *\n * @returns {void}\n */\n Tab.prototype.refresh = function () {\n if (this.isReact) {\n this.clearTemplate();\n }\n _super.prototype.refresh.call(this);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Initialize component\n *\n * @private\n * @returns {void}\n */\n Tab.prototype.preRender = function () {\n var nested = closest(this.element, '.' + CLS_CONTENT);\n this.prevIndex = 0;\n this.isNested = false;\n this.isPopup = false;\n this.initRender = true;\n this.isSwiped = false;\n this.itemIndexArray = [];\n this.templateEle = [];\n if (this.allowDragAndDrop) {\n this.dragArea = !isNOU(this.dragArea) ? this.dragArea : '#' + this.element.id + ' ' + ('.' + CLS_HEADER);\n }\n if (!isNOU(nested)) {\n nested.parentElement.classList.add(CLS_NEST);\n this.isNested = true;\n }\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : (name === 'edge') ? 'e-edge' : (name === 'safari') ? 'e-safari' : '';\n setStyle(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n this.setCssClass(this.element, this.cssClass, true);\n attributes(this.element, { 'aria-disabled': 'false' });\n this.setCssClass(this.element, css, true);\n this.updatePopAnimationConfig();\n };\n /**\n * Initialize the component rendering\n *\n * @private\n * @returns {void}\n */\n Tab.prototype.render = function () {\n this.btnCls = this.createElement('span', { className: CLS_ICONS + ' ' + CLS_ICON_CLOSE, attrs: { title: this.title } });\n this.tabId = this.element.id.length > 0 ? ('-' + this.element.id) : getRandomId();\n this.renderContainer();\n this.wireEvents();\n this.initRender = false;\n if (this.isReact && this.portals && this.portals.length > 0) {\n this.renderReactTemplates(function () {\n this.refreshActiveBorder();\n });\n }\n };\n Tab.prototype.renderContainer = function () {\n var ele = this.element;\n this.items.forEach(function (item, index) {\n if (isNOU(item.id) && !isNOU(item.setProperties)) {\n item.setProperties({ id: TABITEMPREFIX + index.toString() }, true);\n }\n });\n if (this.items.length > 0 && ele.children.length === 0) {\n ele.appendChild(this.createElement('div', { className: CLS_CONTENT }));\n this.setOrientation(this.headerPlacement, this.createElement('div', { className: CLS_HEADER }));\n this.isTemplate = false;\n }\n else if (this.element.children.length > 0) {\n this.isTemplate = true;\n ele.classList.add(CLS_TEMPLATE);\n var header = ele.querySelector('.' + CLS_HEADER);\n if (header && this.headerPlacement === 'Bottom') {\n this.setOrientation(this.headerPlacement, header);\n }\n }\n if (!isNOU(select('.' + CLS_HEADER, this.element)) && !isNOU(select('.' + CLS_CONTENT, this.element))) {\n this.renderHeader();\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n if (!isNOU(this.tbItems)) {\n rippleEffect(this.tbItems, { selector: '.e-tab-wrap' });\n }\n this.renderContent();\n if (selectAll('.' + CLS_TB_ITEM, this.element).length > 0) {\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n this.bdrLine = this.createElement('div', { className: CLS_INDICATOR + ' ' + CLS_HIDDEN + ' ' + CLS_IGNORE });\n var scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!isNOU(scrCnt)) {\n scrCnt.insertBefore(this.bdrLine, scrCnt.firstChild);\n }\n else {\n this.tbItems.insertBefore(this.bdrLine, this.tbItems.firstChild);\n }\n this.setContentHeight(true);\n this.select(this.selectedItem);\n }\n this.setRTL(this.enableRtl);\n }\n };\n Tab.prototype.renderHeader = function () {\n var _this = this;\n var hdrPlace = this.headerPlacement;\n var tabItems = [];\n this.hdrEle = this.getTabHeader();\n this.addVerticalClass();\n if (!this.isTemplate) {\n tabItems = this.parseObject(this.items, 0);\n }\n else {\n if (this.element.children.length > 1 && this.element.children[1].classList.contains(CLS_HEADER)) {\n this.setProperties({ headerPlacement: 'Bottom' }, true);\n }\n var count = this.hdrEle.children.length;\n var hdrItems = [];\n for (var i = 0; i < count; i++) {\n hdrItems.push(this.hdrEle.children.item(i));\n }\n if (count > 0) {\n var tabItems_1 = this.createElement('div', { className: CLS_ITEMS });\n this.hdrEle.appendChild(tabItems_1);\n hdrItems.forEach(function (item, index) {\n _this.lastIndex = index;\n var attr = {\n className: CLS_ITEM, id: CLS_ITEM + _this.tabId + '_' + index\n };\n var txt = _this.createElement('span', {\n className: CLS_TEXT, attrs: { 'role': 'presentation' }\n }).outerHTML;\n var cont = _this.createElement('div', {\n className: CLS_TEXT_WRAP, innerHTML: txt + _this.btnCls.outerHTML\n }).outerHTML;\n var wrap = _this.createElement('div', {\n className: CLS_WRAP, innerHTML: cont,\n attrs: { role: 'tab', tabIndex: '-1', 'aria-selected': 'false', 'aria-controls': CLS_CONTENT + _this.tabId + '_' + index, 'aria-disabled': 'false' }\n });\n wrap.querySelector('.' + CLS_TEXT).appendChild(item);\n tabItems_1.appendChild(_this.createElement('div', attr));\n selectAll('.' + CLS_ITEM, tabItems_1)[index].appendChild(wrap);\n });\n }\n }\n this.tbObj = new Toolbar({\n width: (hdrPlace === 'Left' || hdrPlace === 'Right') ? 'auto' : '100%',\n height: (hdrPlace === 'Left' || hdrPlace === 'Right') ? '100%' : 'auto',\n overflowMode: this.overflowMode,\n items: (tabItems.length !== 0) ? tabItems : [],\n clicked: this.clickHandler.bind(this),\n scrollStep: this.scrollStep,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n cssClass: this.cssClass\n });\n this.tbObj.isStringTemplate = true;\n this.tbObj.createElement = this.createElement;\n this.tbObj.appendTo(this.hdrEle);\n attributes(this.hdrEle, { role: 'tablist' });\n if (!isNOU(this.element.getAttribute('aria-label'))) {\n this.hdrEle.setAttribute('aria-label', this.element.getAttribute('aria-label'));\n this.element.removeAttribute('aria-label');\n }\n else if (!isNOU(this.element.getAttribute('aria-labelledby'))) {\n this.hdrEle.setAttribute('aria-labelledby', this.element.getAttribute('aria-labelledby'));\n this.element.removeAttribute('aria-labelledby');\n }\n this.setCloseButton(this.showCloseButton);\n var toolbarHeader = this.tbObj.element.querySelector('.' + CLS_TB_ITEMS);\n if (!isNOU(toolbarHeader)) {\n if (isNOU(toolbarHeader.id) || toolbarHeader.id === '') {\n toolbarHeader.id = this.element.id + '_' + 'tab_header_items';\n }\n }\n };\n Tab.prototype.renderContent = function () {\n this.cntEle = select('.' + CLS_CONTENT, this.element);\n var hdrItem = selectAll('.' + CLS_TB_ITEM, this.element);\n if (this.isTemplate) {\n this.cnt = (this.cntEle.children.length > 0) ? this.cntEle.innerHTML : '';\n var contents = this.cntEle.children;\n for (var i = 0; i < hdrItem.length; i++) {\n if (contents.length - 1 >= i) {\n addClass([contents.item(i)], CLS_ITEM);\n attributes(contents.item(i), { 'role': 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + i });\n contents.item(i).id = CLS_CONTENT + this.tabId + '_' + i;\n }\n }\n }\n };\n Tab.prototype.reRenderItems = function () {\n this.renderContainer();\n if (!isNOU(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n };\n Tab.prototype.parseObject = function (items, index) {\n var _this = this;\n var tbItems = Array.prototype.slice.call(selectAll('.e-tab-header .' + CLS_TB_ITEM, this.element));\n var maxId = this.lastIndex;\n if (!this.isReplace && tbItems.length > 0) {\n var idList_1 = [];\n tbItems.forEach(function (item) {\n idList_1.push(_this.getIndexFromEle(item.id));\n });\n maxId = Math.max.apply(Math, idList_1);\n }\n var tItems = [];\n var txtWrapEle;\n var spliceArray = [];\n var i = 0;\n items.forEach(function (item, i) {\n var pos = (isNOU(item.header) || isNOU(item.header.iconPosition)) ? '' : item.header.iconPosition;\n var css = (isNOU(item.header) || isNOU(item.header.iconCss)) ? '' : item.header.iconCss;\n if ((isNOU(item.headerTemplate)) && (isNOU(item.header) || isNOU(item.header.text) ||\n ((item.header.text.length === 0)) && (css === ''))) {\n spliceArray.push(i);\n return;\n }\n var txt = item.headerTemplate || item.header.text;\n if (typeof txt === 'string' && _this.enableHtmlSanitizer) {\n txt = SanitizeHtmlHelper.sanitize(txt);\n }\n var itemIndex;\n if (_this.isReplace && !isNOU(_this.tbId) && _this.tbId !== '') {\n itemIndex = parseInt(_this.tbId.substring(_this.tbId.lastIndexOf('_') + 1), 10);\n _this.tbId = '';\n }\n else {\n itemIndex = index + i;\n }\n _this.lastIndex = ((tbItems.length === 0) ? i : ((_this.isReplace) ? (itemIndex) : (maxId + 1 + i)));\n var disabled = (item.disabled) ? ' ' + CLS_DISABLE + ' ' + CLS_OVERLAY : '';\n var hidden = (item.visible === false) ? ' ' + CLS_HIDDEN : '';\n txtWrapEle = _this.createElement('div', { className: CLS_TEXT, attrs: { 'role': 'presentation' } });\n var tHtml = ((txt instanceof Object) ? txt.outerHTML : txt);\n var txtEmpty = (!isNOU(tHtml) && tHtml !== '');\n if (!isNOU(txt.tagName)) {\n txtWrapEle.appendChild(txt);\n }\n else {\n _this.headerTextCompile(txtWrapEle, txt, i);\n }\n var tEle;\n var icon = _this.createElement('span', {\n className: CLS_ICONS + ' ' + CLS_TAB_ICON + ' ' + CLS_ICON + '-' + pos + ' ' + css\n });\n var tCont = _this.createElement('div', { className: CLS_TEXT_WRAP });\n tCont.appendChild(txtWrapEle);\n if ((txt !== '' && txt !== undefined) && css !== '') {\n if ((pos === 'left' || pos === 'top')) {\n tCont.insertBefore(icon, tCont.firstElementChild);\n }\n else {\n tCont.appendChild(icon);\n }\n tEle = txtWrapEle;\n _this.isIconAlone = false;\n }\n else {\n tEle = ((css === '') ? txtWrapEle : icon);\n if (tEle === icon) {\n detach(txtWrapEle);\n tCont.appendChild(icon);\n _this.isIconAlone = true;\n }\n }\n var tabIndex = isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString();\n var wrapAttrs = (item.disabled) ? {} : { tabIndex: tabIndex, 'data-tabindex': tabIndex, role: 'tab', 'aria-selected': 'false', 'aria-disabled': 'false' };\n tCont.appendChild(_this.btnCls.cloneNode(true));\n var wrap = _this.createElement('div', { className: CLS_WRAP, attrs: wrapAttrs });\n wrap.appendChild(tCont);\n if (_this.itemIndexArray === []) {\n _this.itemIndexArray.push(CLS_ITEM + _this.tabId + '_' + _this.lastIndex);\n }\n else {\n _this.itemIndexArray.splice((index + i), 0, CLS_ITEM + _this.tabId + '_' + _this.lastIndex);\n }\n var attrObj = {\n id: CLS_ITEM + _this.tabId + '_' + _this.lastIndex, 'data-id': item.id\n };\n var tItem = { htmlAttributes: attrObj, template: wrap };\n tItem.cssClass = ((item.cssClass !== undefined) ? item.cssClass : ' ') + ' ' + disabled + ' ' + hidden + ' '\n + ((css !== '') ? 'e-i' + pos : '') + ' ' + ((!txtEmpty) ? CLS_ICON : '');\n if (pos === 'top' || pos === 'bottom') {\n _this.element.classList.add('e-vertical-icon');\n }\n tItems.push(tItem);\n i++;\n });\n if (!this.isAdd) {\n spliceArray.forEach(function (spliceItemIndex) {\n _this.items.splice(spliceItemIndex, 1);\n });\n }\n if (this.isIconAlone) {\n this.element.classList.add(CLS_ICON_TAB);\n }\n else {\n this.element.classList.remove(CLS_ICON_TAB);\n }\n return tItems;\n };\n Tab.prototype.removeActiveClass = function () {\n var tabHeader = this.getTabHeader();\n if (tabHeader) {\n var tabItems = selectAll('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE, tabHeader);\n [].slice.call(tabItems).forEach(function (node) { return node.classList.remove(CLS_ACTIVE); });\n [].slice.call(tabItems).forEach(function (node) { return node.firstElementChild.setAttribute('aria-selected', 'false'); });\n }\n };\n Tab.prototype.checkPopupOverflow = function (ele) {\n this.tbPop = select('.' + CLS_TB_POP, this.element);\n var popIcon = select('.e-hor-nav', this.element);\n var tbrItems = select('.' + CLS_TB_ITEMS, this.element);\n var lastChild = tbrItems.lastChild;\n var isOverflow = false;\n if (!this.isVertical() && ((this.enableRtl && ((popIcon.offsetLeft + popIcon.offsetWidth) > tbrItems.offsetLeft))\n || (!this.enableRtl && popIcon.offsetLeft < tbrItems.offsetWidth))) {\n isOverflow = true;\n }\n else if (this.isVertical() && (popIcon.offsetTop < lastChild.offsetTop + lastChild.offsetHeight)) {\n isOverflow = true;\n }\n if (isOverflow) {\n ele.classList.add(CLS_TB_POPUP);\n this.tbPop.insertBefore(ele, selectAll('.' + CLS_TB_POPUP, this.tbPop)[0]);\n }\n return true;\n };\n Tab.prototype.popupHandler = function (target) {\n var ripEle = target.querySelector('.e-ripple-element');\n if (!isNOU(ripEle)) {\n ripEle.outerHTML = '';\n target.querySelector('.' + CLS_WRAP).classList.remove('e-ripple');\n }\n this.tbItem = selectAll('.' + CLS_TB_ITEMS + ' .' + CLS_TB_ITEM, this.hdrEle);\n var lastChild = this.tbItem[this.tbItem.length - 1];\n if (this.tbItem.length !== 0) {\n target.classList.remove(CLS_TB_POPUP);\n target.removeAttribute('style');\n this.tbItems.appendChild(target);\n this.actEleId = target.id;\n if (this.checkPopupOverflow(lastChild)) {\n var prevEle = this.tbItems.lastChild.previousElementSibling;\n this.checkPopupOverflow(prevEle);\n }\n this.isPopup = true;\n }\n return selectAll('.' + CLS_TB_ITEM, this.tbItems).length - 1;\n };\n Tab.prototype.setCloseButton = function (val) {\n var trg = select('.' + CLS_HEADER, this.element);\n if (val === true) {\n trg.classList.add(CLS_CLOSE_SHOW);\n }\n else {\n trg.classList.remove(CLS_CLOSE_SHOW);\n }\n this.tbObj.refreshOverflow();\n this.refreshActiveTabBorder();\n };\n Tab.prototype.prevCtnAnimation = function (prev, current) {\n var animation;\n var checkRTL = this.enableRtl || this.element.classList.contains(CLS_RTL);\n if (this.isPopup || prev <= current) {\n if (this.animation.previous.effect === 'SlideLeftIn') {\n animation = {\n name: 'SlideLeftOut',\n duration: this.animation.previous.duration, timingFunction: this.animation.previous.easing\n };\n }\n else {\n animation = null;\n }\n }\n else {\n if (this.animation.next.effect === 'SlideRightIn') {\n animation = {\n name: 'SlideRightOut',\n duration: this.animation.next.duration, timingFunction: this.animation.next.easing\n };\n }\n else {\n animation = null;\n }\n }\n return animation;\n };\n Tab.prototype.triggerPrevAnimation = function (oldCnt, prevIndex) {\n var _this = this;\n var animateObj = this.prevCtnAnimation(prevIndex, this.selectedItem);\n if (!isNOU(animateObj)) {\n animateObj.begin = function () {\n setStyle(oldCnt, { 'position': 'absolute' });\n oldCnt.classList.add(CLS_PROGRESS);\n oldCnt.classList.add('e-view');\n };\n animateObj.end = function () {\n oldCnt.style.display = 'none';\n oldCnt.classList.remove(CLS_ACTIVE);\n oldCnt.classList.remove(CLS_PROGRESS);\n oldCnt.classList.remove('e-view');\n setStyle(oldCnt, { 'display': '', 'position': '' });\n if (oldCnt.childNodes.length === 0 && !_this.isTemplate) {\n detach(oldCnt);\n }\n };\n new Animation(animateObj).animate(oldCnt);\n }\n else {\n oldCnt.classList.remove(CLS_ACTIVE);\n }\n };\n Tab.prototype.triggerAnimation = function (id, value) {\n var _this = this;\n var prevIndex = this.prevIndex;\n var oldCnt;\n var itemCollection = [].slice.call(this.element.querySelector('.' + CLS_CONTENT).children);\n itemCollection.forEach(function (item) {\n if (item.id === _this.prevActiveEle) {\n oldCnt = item;\n }\n });\n var prevEle = this.tbItem[prevIndex];\n var newCnt = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (isNOU(oldCnt) && !isNOU(prevEle)) {\n var idNo = this.extIndex(prevEle.id);\n oldCnt = this.getTrgContent(this.cntEle, idNo);\n }\n if (!isNOU(newCnt)) {\n this.prevActiveEle = newCnt.id;\n }\n var isPrevent = isNOU(this.animation) || this.animation.next === {} || this.animation.previous === {}\n || isNOU(this.animation.next.effect) || isNOU(this.animation.previous.effect)\n || this.animation.previous.effect == 'None' || this.animation.next.effect == 'None';\n if (this.initRender || value === false || this.animation === {} || isPrevent) {\n if (oldCnt && oldCnt !== newCnt) {\n oldCnt.classList.remove(CLS_ACTIVE);\n }\n return;\n }\n var cnt = select('.' + CLS_CONTENT, this.element);\n var animateObj;\n if (this.prevIndex > this.selectedItem && !this.isPopup) {\n var openEff = this.animation.previous.effect;\n animateObj = {\n name: ((openEff === 'None') ? '' : ((openEff !== 'SlideLeftIn') ? openEff : 'SlideLeftIn')),\n duration: this.animation.previous.duration,\n timingFunction: this.animation.previous.easing\n };\n }\n else if (this.isPopup || this.prevIndex < this.selectedItem || this.prevIndex === this.selectedItem) {\n var clsEff = this.animation.next.effect;\n animateObj = {\n name: ((clsEff === 'None') ? '' : ((clsEff !== 'SlideRightIn') ? clsEff : 'SlideRightIn')),\n duration: this.animation.next.duration,\n timingFunction: this.animation.next.easing\n };\n }\n animateObj.progress = function () {\n cnt.classList.add(CLS_PROGRESS);\n _this.setActiveBorder();\n };\n animateObj.end = function () {\n cnt.classList.remove(CLS_PROGRESS);\n newCnt.classList.add(CLS_ACTIVE);\n };\n if (!this.initRender && !isNOU(oldCnt)) {\n this.triggerPrevAnimation(oldCnt, prevIndex);\n }\n this.isPopup = false;\n if (animateObj.name === '') {\n newCnt.classList.add(CLS_ACTIVE);\n }\n else {\n new Animation(animateObj).animate(newCnt);\n }\n };\n Tab.prototype.keyPressed = function (trg) {\n var trgParent = closest(trg, '.' + CLS_HEADER + ' .' + CLS_TB_ITEM);\n var trgIndex = this.getEleIndex(trgParent);\n if (!isNOU(this.popEle) && trg.classList.contains('e-hor-nav')) {\n (this.popEle.classList.contains(CLS_POPUP_OPEN)) ? this.popObj.hide(this.hide) : this.popObj.show(this.show);\n }\n else if (trg.classList.contains('e-scroll-nav')) {\n trg.click();\n }\n else {\n if (!isNOU(trgParent) && trgParent.classList.contains(CLS_ACTIVE) === false) {\n this.selectTab(trgIndex, null, true);\n if (!isNOU(this.popEle)) {\n this.popObj.hide(this.hide);\n }\n }\n }\n };\n Tab.prototype.getTabHeader = function () {\n if (isNOU(this.element)) {\n return undefined;\n }\n var headers = [].slice.call(this.element.children).filter(function (e) { return e.classList.contains(CLS_HEADER); });\n if (headers.length > 0) {\n return headers[0];\n }\n else {\n var wrap = [].slice.call(this.element.children).filter(function (e) { return !e.classList.contains(CLS_BLA_TEM); })[0];\n if (!wrap) {\n return undefined;\n }\n return [].slice.call(wrap.children).filter(function (e) { return e.classList.contains(CLS_HEADER); })[0];\n }\n };\n Tab.prototype.getEleIndex = function (item) {\n return Array.prototype.indexOf.call(selectAll('.' + CLS_TB_ITEM, this.getTabHeader()), item);\n };\n Tab.prototype.extIndex = function (id) {\n return id.replace(CLS_ITEM + this.tabId + '_', '');\n };\n Tab.prototype.expTemplateContent = function () {\n var _this = this;\n this.templateEle.forEach(function (eleStr) {\n if (!isNOU(_this.element.querySelector(eleStr))) {\n document.body.appendChild(_this.element.querySelector(eleStr)).style.display = 'none';\n }\n });\n };\n Tab.prototype.templateCompile = function (ele, cnt, index) {\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content', index);\n if (tempEle.childNodes.length !== 0) {\n ele.appendChild(tempEle);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Tab.prototype.compileElement = function (ele, val, prop, index) {\n var templateFn;\n if (typeof val === 'string') {\n val = val.trim();\n if (this.isVue) {\n templateFn = compile(SanitizeHtmlHelper.sanitize(val));\n }\n else {\n ele.innerHTML = SanitizeHtmlHelper.sanitize(val);\n }\n }\n else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNOU(templateFn)) {\n templateFUN = templateFn({}, this, prop);\n }\n if (!isNOU(templateFn) && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Tab.prototype.headerTextCompile = function (element, text, index) {\n this.compileElement(element, text, 'headerTemplate', index);\n };\n Tab.prototype.getContent = function (ele, cnt, callType, index) {\n var eleStr;\n cnt = isNOU(cnt) ? \"\" : cnt;\n if (typeof cnt === 'string' || isNOU(cnt.innerHTML)) {\n if (typeof cnt === 'string' && this.enableHtmlSanitizer) {\n cnt = SanitizeHtmlHelper.sanitize(cnt);\n }\n if (cnt[0] === '.' || cnt[0] === '#') {\n if (document.querySelectorAll(cnt).length) {\n var eleVal = document.querySelector(cnt);\n eleStr = eleVal.outerHTML.trim();\n if (callType === 'clone') {\n ele.appendChild(eleVal.cloneNode(true));\n }\n else {\n ele.appendChild(eleVal);\n eleVal.style.display = '';\n }\n }\n else {\n this.templateCompile(ele, cnt, index);\n }\n }\n else {\n this.templateCompile(ele, cnt, index);\n }\n }\n else {\n ele.appendChild(cnt);\n }\n if (!isNOU(eleStr)) {\n if (this.templateEle.indexOf(cnt.toString()) === -1) {\n this.templateEle.push(cnt.toString());\n }\n }\n };\n Tab.prototype.getTrgContent = function (cntEle, no) {\n var ele;\n if (this.element.classList.contains(CLS_NEST)) {\n ele = select('.' + CLS_NEST + '> .' + CLS_CONTENT + ' > #' + CLS_CONTENT + this.tabId + '_' + no, this.element);\n }\n else {\n ele = this.findEle(cntEle.children, CLS_CONTENT + this.tabId + '_' + no);\n }\n return ele;\n };\n Tab.prototype.findEle = function (items, key) {\n var ele;\n for (var i = 0; i < items.length; i++) {\n if (items[i].id === key) {\n ele = items[i];\n break;\n }\n }\n return ele;\n };\n Tab.prototype.isVertical = function () {\n var isVertical = (this.headerPlacement === 'Left' || this.headerPlacement === 'Right') ? true : false;\n this.scrCntClass = (isVertical) ? CLS_VSCRCNT : CLS_HSCRCNT;\n return isVertical;\n };\n Tab.prototype.addVerticalClass = function () {\n if (this.isVertical()) {\n var tbPos = (this.headerPlacement === 'Left') ? CLS_VLEFT : CLS_VRIGHT;\n addClass([this.hdrEle], [CLS_VERTICAL, tbPos]);\n if (!this.element.classList.contains(CLS_NEST)) {\n addClass([this.element], [CLS_VTAB, tbPos]);\n }\n else {\n addClass([this.hdrEle], [CLS_VTAB, tbPos]);\n }\n }\n if (this.headerPlacement === 'Bottom') {\n addClass([this.hdrEle], [CLS_HBOTTOM]);\n }\n };\n Tab.prototype.updatePopAnimationConfig = function () {\n this.show = { name: (this.isVertical() ? 'FadeIn' : 'SlideDown'), duration: 100 };\n this.hide = { name: (this.isVertical() ? 'FadeOut' : 'SlideUp'), duration: 100 };\n };\n Tab.prototype.changeOrientation = function (place) {\n this.setOrientation(place, this.hdrEle);\n var activeTab = this.hdrEle.querySelector('.' + CLS_ACTIVE);\n var isVertical = this.hdrEle.classList.contains(CLS_VERTICAL) ? true : false;\n removeClass([this.element], [CLS_VTAB]);\n removeClass([this.hdrEle], [CLS_VERTICAL, CLS_VLEFT, CLS_VRIGHT]);\n if (isVertical !== this.isVertical()) {\n this.changeToolbarOrientation();\n if (!isNOU(activeTab) && activeTab.classList.contains(CLS_TB_POPUP)) {\n this.popupHandler(activeTab);\n }\n }\n this.addVerticalClass();\n this.setActiveBorder();\n this.focusItem();\n };\n Tab.prototype.focusItem = function () {\n var curActItem = select(' #' + CLS_ITEM + this.tabId + '_' + this.selectedItem, this.hdrEle);\n if (!isNOU(curActItem)) {\n curActItem.firstElementChild.focus();\n }\n };\n Tab.prototype.changeToolbarOrientation = function () {\n this.tbObj.setProperties({ height: (this.isVertical() ? '100%' : 'auto'), width: (this.isVertical() ? 'auto' : '100%') }, true);\n this.tbObj.changeOrientation();\n this.updatePopAnimationConfig();\n };\n Tab.prototype.setOrientation = function (place, ele) {\n var headerPos = Array.prototype.indexOf.call(this.element.children, ele);\n var contentPos = Array.prototype.indexOf.call(this.element.children, this.element.querySelector('.' + CLS_CONTENT));\n if (place === 'Bottom' && (contentPos > headerPos)) {\n this.element.appendChild(ele);\n }\n else {\n removeClass([ele], [CLS_HBOTTOM]);\n this.element.insertBefore(ele, select('.' + CLS_CONTENT, this.element));\n }\n };\n Tab.prototype.setCssClass = function (ele, cls, val) {\n if (cls === '') {\n return;\n }\n var list = cls.split(' ');\n for (var i = 0; i < list.length; i++) {\n if (val) {\n ele.classList.add(list[i]);\n }\n else {\n ele.classList.remove(list[i]);\n }\n }\n };\n Tab.prototype.setContentHeight = function (val) {\n if (this.element.classList.contains(CLS_FILL)) {\n removeClass([this.element], [CLS_FILL]);\n }\n if (isNOU(this.cntEle)) {\n return;\n }\n var hdrEle = this.getTabHeader();\n if (this.heightAdjustMode === 'None') {\n if (this.height === 'auto') {\n return;\n }\n else {\n if (!this.isVertical()) {\n setStyle(this.cntEle, { 'height': (this.element.clientHeight - hdrEle.offsetHeight) + 'px' });\n }\n }\n }\n else if (this.heightAdjustMode === 'Fill') {\n addClass([this.element], [CLS_FILL]);\n setStyle(this.element, { 'height': '100%' });\n this.cntEle.style.height = 'calc(100% - ' + this.hdrEle.offsetHeight + 'px)';\n }\n else if (this.heightAdjustMode === 'Auto') {\n if (this.isTemplate === true) {\n var cnt = selectAll('.' + CLS_CONTENT + ' > .' + CLS_ITEM, this.element);\n for (var i = 0; i < cnt.length; i++) {\n cnt[i].setAttribute('style', 'display:block; visibility: visible');\n this.maxHeight = Math.max(this.maxHeight, this.getHeight(cnt[i]));\n cnt[i].style.removeProperty('display');\n cnt[i].style.removeProperty('visibility');\n }\n }\n else {\n this.cntEle = select('.' + CLS_CONTENT, this.element);\n if (val === true) {\n this.cntEle.appendChild(this.createElement('div', {\n id: (CLS_CONTENT + this.tabId + '_' + 0), className: CLS_ITEM + ' ' + CLS_ACTIVE,\n attrs: { 'role': 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + 0 }\n }));\n }\n var ele = this.cntEle.children.item(0);\n for (var i = 0; i < this.items.length; i++) {\n this.getContent(ele, this.items[i].content, 'clone', i);\n this.maxHeight = Math.max(this.maxHeight, this.getHeight(ele));\n while (ele.firstChild) {\n ele.removeChild(ele.firstChild);\n }\n }\n if (this.isReact) {\n this.clearTemplate(['content']);\n }\n this.templateEle = [];\n this.getContent(ele, this.items[0].content, 'render', 0);\n if (this.prevIndex !== this.selectedItem) {\n ele.classList.remove(CLS_ACTIVE);\n }\n }\n setStyle(this.cntEle, { 'height': this.maxHeight + 'px' });\n }\n else {\n setStyle(this.cntEle, { 'height': 'auto' });\n }\n };\n Tab.prototype.getHeight = function (ele) {\n var cs = window.getComputedStyle(ele);\n return ele.offsetHeight + parseFloat(cs.getPropertyValue('padding-top')) + parseFloat(cs.getPropertyValue('padding-bottom')) +\n parseFloat(cs.getPropertyValue('margin-top')) + parseFloat(cs.getPropertyValue('margin-bottom'));\n };\n Tab.prototype.setActiveBorder = function () {\n var trgHdrEle = this.getTabHeader();\n var trg = select('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE, trgHdrEle);\n if (isNOU(trg)) {\n return;\n }\n if (!this.reorderActiveTab) {\n if (trg.classList.contains(CLS_TB_POPUP) && !this.bdrLine.classList.contains(CLS_HIDDEN)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n if (trgHdrEle && !trgHdrEle.classList.contains(CLS_REORDER_ACTIVE_ITEM)) {\n trgHdrEle.classList.add(CLS_REORDER_ACTIVE_ITEM);\n }\n }\n else if (trgHdrEle) {\n trgHdrEle.classList.remove(CLS_REORDER_ACTIVE_ITEM);\n }\n var root = closest(trg, '.' + CLS_TAB);\n if (this.element !== root) {\n return;\n }\n this.tbItems = select('.' + CLS_TB_ITEMS, trgHdrEle);\n var bar = select('.' + CLS_INDICATOR, trgHdrEle);\n var scrollCnt = select('.' + CLS_TB_ITEMS + ' .' + this.scrCntClass, trgHdrEle);\n if (this.isVertical()) {\n setStyle(bar, { 'left': '', 'right': '' });\n var tbHeight = (isNOU(scrollCnt)) ? this.tbItems.offsetHeight : scrollCnt.offsetHeight;\n if (tbHeight !== 0) {\n setStyle(bar, { 'top': trg.offsetTop + 'px', 'height': trg.offsetHeight + 'px' });\n }\n else {\n setStyle(bar, { 'top': 0, 'height': 0 });\n }\n }\n else {\n if (this.overflowMode === 'MultiRow') {\n var top_1 = this.headerPlacement === 'Bottom' ? trg.offsetTop : trg.offsetHeight + trg.offsetTop;\n setStyle(bar, { 'top': top_1 + 'px', 'height': '' });\n }\n else {\n setStyle(bar, { 'top': '', 'height': '' });\n }\n var tbWidth = (isNOU(scrollCnt)) ? this.tbItems.offsetWidth : scrollCnt.offsetWidth;\n if (tbWidth !== 0) {\n setStyle(bar, { 'left': trg.offsetLeft + 'px', 'right': tbWidth - (trg.offsetLeft + trg.offsetWidth) + 'px' });\n }\n else {\n setStyle(bar, { 'left': 'auto', 'right': 'auto' });\n }\n }\n if (!isNOU(this.bdrLine) && !trg.classList.contains(CLS_TB_POPUP)) {\n this.bdrLine.classList.remove(CLS_HIDDEN);\n }\n };\n Tab.prototype.setActive = function (value, skipDataBind, isInteracted) {\n if (skipDataBind === void 0) { skipDataBind = false; }\n if (isInteracted === void 0) { isInteracted = false; }\n this.tbItem = selectAll('.' + CLS_TB_ITEM, this.getTabHeader());\n var trg = this.tbItem[value];\n if (value < 0 || isNaN(value) || this.tbItem.length === 0) {\n return;\n }\n if (value >= 0 && !skipDataBind) {\n this.allowServerDataBinding = false;\n this.setProperties({ selectedItem: value }, true);\n this.allowServerDataBinding = true;\n if (!this.initRender) {\n this.serverDataBind();\n }\n }\n if (trg.classList.contains(CLS_ACTIVE)) {\n this.setActiveBorder();\n return;\n }\n if (!this.isTemplate) {\n attributes(trg.firstElementChild, { 'aria-controls': CLS_CONTENT + this.tabId + '_' + value });\n }\n var id = trg.id;\n this.removeActiveClass();\n trg.classList.add(CLS_ACTIVE);\n trg.firstElementChild.setAttribute('aria-selected', 'true');\n var no = Number(this.extIndex(id));\n if (isNOU(this.prevActiveEle)) {\n this.prevActiveEle = CLS_CONTENT + this.tabId + '_' + no;\n }\n if (this.isTemplate) {\n if (select('.' + CLS_CONTENT, this.element).children.length > 0) {\n var trg_1 = this.findEle(select('.' + CLS_CONTENT, this.element).children, CLS_CONTENT + this.tabId + '_' + no);\n if (!isNOU(trg_1)) {\n trg_1.classList.add(CLS_ACTIVE);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n }\n else {\n this.cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n var item = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (isNOU(item)) {\n this.cntEle.appendChild(this.createElement('div', {\n id: CLS_CONTENT + this.tabId + '_' + this.extIndex(id), className: CLS_ITEM + ' ' + CLS_ACTIVE,\n attrs: { role: 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + this.extIndex(id) }\n }));\n var eleTrg = this.getTrgContent(this.cntEle, this.extIndex(id));\n var itemIndex = Array.prototype.indexOf.call(this.itemIndexArray, id);\n this.getContent(eleTrg, this.items[itemIndex].content, 'render', itemIndex);\n }\n else {\n item.classList.add(CLS_ACTIVE);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n this.setActiveBorder();\n this.refreshItemVisibility(trg);\n if (!this.initRender && !skipDataBind) {\n var eventArg = {\n previousItem: this.prevItem,\n previousIndex: this.prevIndex,\n selectedItem: trg,\n selectedIndex: value,\n selectedContent: select('#' + CLS_CONTENT + this.tabId + '_' + this.selectingID, this.content),\n isSwiped: this.isSwiped,\n isInteracted: isInteracted,\n preventFocus: false\n };\n this.trigger('selected', eventArg, function (selectEventArgs) {\n if (!selectEventArgs.preventFocus) {\n trg.firstElementChild.focus();\n }\n });\n }\n };\n Tab.prototype.setItems = function (items) {\n this.isReplace = true;\n this.tbItems = select('.' + CLS_TB_ITEMS, this.getTabHeader());\n this.tbObj.items = this.parseObject(items, 0);\n this.tbObj.dataBind();\n this.isReplace = false;\n };\n Tab.prototype.setRTL = function (value) {\n this.tbObj.enableRtl = value;\n this.tbObj.dataBind();\n this.setCssClass(this.element, CLS_RTL, value);\n this.refreshActiveBorder();\n };\n Tab.prototype.refreshActiveBorder = function () {\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n this.setActiveBorder();\n };\n Tab.prototype.showPopup = function (config) {\n var tbPop = select('.e-popup.e-toolbar-pop', this.hdrEle);\n if (tbPop.classList.contains('e-popup-close')) {\n var tbPopObj = (tbPop && tbPop.ej2_instances[0]);\n tbPopObj.position.X = (this.headerPlacement === 'Left') ? 'left' : 'right';\n tbPopObj.dataBind();\n tbPopObj.show(config);\n }\n };\n Tab.prototype.bindDraggable = function () {\n var _this = this;\n if (this.allowDragAndDrop) {\n var tabHeader = this.element.querySelector('.' + CLS_HEADER);\n if (tabHeader) {\n var items = Array.prototype.slice.call(tabHeader.querySelectorAll('.' + CLS_TB_ITEM));\n items.forEach(function (element) {\n _this.initializeDrag(element);\n });\n }\n }\n };\n Tab.prototype.wireEvents = function () {\n this.bindDraggable();\n window.addEventListener('resize', this.resizeContext);\n EventHandler.add(this.element, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.element, 'keydown', this.spaceKeyDown, this);\n if (!isNOU(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n this.keyModule = new KeyboardEvents(this.element, { keyAction: this.keyHandler.bind(this), keyConfigs: this.keyConfigs });\n this.tabKeyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyHandler.bind(this),\n keyConfigs: { openPopup: 'shift+f10', tab: 'tab', shiftTab: 'shift+tab' },\n eventName: 'keydown'\n });\n };\n Tab.prototype.unWireEvents = function () {\n if (!isNOU(this.keyModule)) {\n this.keyModule.destroy();\n }\n if (!isNOU(this.tabKeyModule)) {\n this.tabKeyModule.destroy();\n }\n if (!isNOU(this.cntEle) && !isNOU(this.touchModule)) {\n this.touchModule.destroy();\n this.touchModule = null;\n }\n window.removeEventListener('resize', this.resizeContext);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'keydown', this.spaceKeyDown);\n this.element.classList.remove(CLS_RTL);\n this.element.classList.remove(CLS_FOCUS);\n };\n Tab.prototype.clickHandler = function (args) {\n this.element.classList.remove(CLS_FOCUS);\n var trg = args.originalEvent.target;\n var trgParent = closest(trg, '.' + CLS_TB_ITEM);\n var trgIndex = this.getEleIndex(trgParent);\n if (trg.classList.contains(CLS_ICON_CLOSE)) {\n this.removeTab(trgIndex);\n }\n else if (this.isVertical() && closest(trg, '.' + CLS_HOR_NAV)) {\n this.showPopup(this.show);\n }\n else {\n this.isPopup = false;\n if (!isNOU(trgParent) && (trgIndex !== this.selectedItem)) {\n this.selectTab(trgIndex, args.originalEvent, true);\n }\n }\n };\n Tab.prototype.swipeHandler = function (e) {\n if (e.velocity < 3 && isNOU(e.originalEvent.changedTouches)) {\n return;\n }\n if (this.isNested) {\n this.element.setAttribute('data-swipe', 'true');\n }\n var nestedTab = this.element.querySelector('[data-swipe=\"true\"]');\n if (nestedTab) {\n nestedTab.removeAttribute('data-swipe');\n return;\n }\n this.isSwiped = true;\n if (e.swipeDirection === 'Right' && this.selectedItem !== 0) {\n for (var k = this.selectedItem - 1; k >= 0; k--) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.selectTab(k, null, true);\n break;\n }\n }\n }\n else if (e.swipeDirection === 'Left' && (this.selectedItem !== selectAll('.' + CLS_TB_ITEM, this.element).length - 1)) {\n for (var i = this.selectedItem + 1; i < this.tbItem.length; i++) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN)) {\n this.selectTab(i, null, true);\n break;\n }\n }\n }\n this.isSwiped = false;\n };\n Tab.prototype.spaceKeyDown = function (e) {\n if ((e.keyCode === 32 && e.which === 32) || (e.keyCode === 35 && e.which === 35)) {\n var clstHead = closest(e.target, '.' + CLS_HEADER);\n if (!isNOU(clstHead)) {\n e.preventDefault();\n }\n }\n };\n Tab.prototype.keyHandler = function (e) {\n if (this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n this.element.classList.add(CLS_FOCUS);\n var trg = e.target;\n var tabHeader = this.getTabHeader();\n var actEle = select('.' + CLS_ACTIVE, tabHeader);\n this.popEle = select('.' + CLS_TB_POP, tabHeader);\n if (!isNOU(this.popEle)) {\n this.popObj = this.popEle.ej2_instances[0];\n }\n var item = closest(document.activeElement, '.' + CLS_TB_ITEM);\n var trgParent = closest(trg, '.' + CLS_TB_ITEM);\n switch (e.action) {\n case 'space':\n case 'enter':\n if (trg.parentElement.classList.contains(CLS_DISABLE)) {\n return;\n }\n if (e.action === 'enter' && trg.classList.contains('e-hor-nav')) {\n this.showPopup(this.show);\n break;\n }\n this.keyPressed(trg);\n break;\n case 'tab':\n case 'shiftTab':\n if (trg.classList.contains(CLS_WRAP)\n && closest(trg, '.' + CLS_TB_ITEM).classList.contains(CLS_ACTIVE) === false) {\n trg.setAttribute('tabindex', trg.getAttribute('data-tabindex'));\n }\n if (this.popObj && isVisible(this.popObj.element)) {\n this.popObj.hide(this.hide);\n }\n if (!isNOU(actEle) && actEle.children.item(0).getAttribute('tabindex') === '-1') {\n actEle.children.item(0).setAttribute('tabindex', '0');\n }\n break;\n case 'moveLeft':\n case 'moveRight':\n if (!isNOU(item)) {\n this.refreshItemVisibility(item);\n }\n break;\n case 'openPopup':\n e.preventDefault();\n if (!isNOU(this.popEle) && this.popEle.classList.contains(CLS_POPUP_CLOSE)) {\n this.popObj.show(this.show);\n }\n break;\n case 'delete':\n if (this.showCloseButton === true && !isNOU(trgParent)) {\n var nxtSib = trgParent.nextSibling;\n if (!isNOU(nxtSib) && nxtSib.classList.contains(CLS_TB_ITEM)) {\n nxtSib.firstElementChild.focus();\n }\n this.removeTab(this.getEleIndex(trgParent));\n }\n this.setActiveBorder();\n break;\n }\n };\n Tab.prototype.refreshItemVisibility = function (target) {\n var scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!this.isVertical() && !isNOU(scrCnt)) {\n var scrBar = select('.e-hscroll-bar', this.tbItems);\n scrBar.removeAttribute('tabindex');\n var scrStart = scrBar.scrollLeft;\n var scrEnd = scrStart + scrBar.offsetWidth;\n var eleStart = target.offsetLeft;\n var eleWidth = target.offsetWidth;\n var eleEnd = target.offsetLeft + target.offsetWidth;\n if ((scrStart < eleStart) && (scrEnd < eleEnd)) {\n var eleViewRange = scrEnd - eleStart;\n scrBar.scrollLeft = scrStart + (eleWidth - eleViewRange);\n }\n else {\n if ((scrStart > eleStart) && (scrEnd > eleEnd)) {\n var eleViewRange = eleEnd - scrStart;\n scrBar.scrollLeft = scrStart - (eleWidth - eleViewRange);\n }\n }\n }\n else {\n return;\n }\n };\n Tab.prototype.getIndexFromEle = function (id) {\n return parseInt(id.substring(id.lastIndexOf('_') + 1), 10);\n };\n Tab.prototype.hoverHandler = function (e) {\n var trg = e.target;\n if (!isNOU(trg.classList) && trg.classList.contains(CLS_ICON_CLOSE)) {\n trg.setAttribute('title', new L10n('tab', { closeButtonTitle: this.title }, this.locale).getConstant('closeButtonTitle'));\n }\n };\n Tab.prototype.evalOnPropertyChangeItems = function (newProp, oldProp) {\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProp = Object.keys(newProp.items);\n for (var i = 0; i < changedProp.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[i], 10);\n var properties = Object.keys(newProp.items[index]);\n for (var j = 0; j < properties.length; j++) {\n var oldVal = Object(oldProp.items[index])[properties[j]];\n var newVal = Object(newProp.items[index])[properties[j]];\n var hdr = this.element.querySelectorAll('.' + CLS_TB_ITEM)[index];\n var itemIndex = void 0;\n if (hdr && !isNOU(hdr.id) && hdr.id !== '') {\n itemIndex = this.getIndexFromEle(hdr.id);\n }\n else {\n itemIndex = index;\n }\n var hdrItem = select('.' + CLS_TB_ITEMS + ' #' + CLS_ITEM + this.tabId + '_' + itemIndex, this.element);\n var cntItem = select('.' + CLS_CONTENT + ' #' + CLS_CONTENT + this.tabId + '_' + itemIndex, this.element);\n if (properties[j] === 'header' || properties[j] === 'headerTemplate') {\n var icon = (isNOU(this.items[index].header) ||\n isNOU(this.items[index].header.iconCss)) ? '' : this.items[index].header.iconCss;\n var textVal = this.items[index].headerTemplate || this.items[index].header.text;\n if (properties[j] === 'headerTemplate') {\n this.clearTabTemplate(hdrItem, properties[j], CLS_TB_ITEM);\n }\n if ((textVal === '') && (icon === '')) {\n this.removeTab(index);\n }\n else {\n this.tbId = hdr.id;\n var arr = [];\n arr.push(this.items[index]);\n this.items.splice(index, 1);\n this.itemIndexArray.splice(index, 1);\n this.tbObj.items.splice(index, 1);\n var isHiddenEle = hdrItem.classList.contains(CLS_HIDDEN);\n detach(hdrItem);\n this.isReplace = true;\n this.addTab(arr, index);\n if (isHiddenEle) {\n this.hideTab(index);\n }\n this.isReplace = false;\n }\n }\n if (properties[j] === 'content' && !isNOU(cntItem)) {\n var strVal = typeof newVal === 'string' || isNOU(newVal.innerHTML);\n if (strVal && (newVal[0] === '.' || newVal[0] === '#') && newVal.length) {\n var eleVal = document.querySelector(newVal);\n cntItem.appendChild(eleVal);\n eleVal.style.display = '';\n }\n else if (newVal === '' && oldVal[0] === '#') {\n document.body.appendChild(this.element.querySelector(oldVal)).style.display = 'none';\n cntItem.innerHTML = newVal;\n }\n else if (this.isAngular || this.isReact) {\n this.clearTabTemplate(cntItem, properties[j], CLS_ITEM);\n cntItem.innerHTML = '';\n this.templateCompile(cntItem, newVal, index);\n }\n else if (typeof newVal !== 'function') {\n cntItem.innerHTML = newVal;\n }\n }\n if (properties[j] === 'cssClass') {\n if (!isNOU(hdrItem)) {\n hdrItem.classList.remove(oldVal);\n hdrItem.classList.add(newVal);\n }\n if (!isNOU(cntItem)) {\n cntItem.classList.remove(oldVal);\n cntItem.classList.add(newVal);\n }\n }\n if (properties[j] === 'disabled') {\n this.enableTab(index, ((newVal === true) ? false : true));\n }\n if (properties[j] === 'visible') {\n this.hideTab(index, ((newVal === true) ? false : true));\n }\n }\n }\n }\n else {\n this.lastIndex = 0;\n if (isNOU(this.tbObj)) {\n this.reRenderItems();\n }\n else {\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n this.setItems(newProp.items);\n if (this.templateEle.length > 0) {\n this.expTemplateContent();\n }\n this.templateEle = [];\n var selectElement = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n while (selectElement.firstElementChild) {\n detach(selectElement.firstElementChild);\n }\n this.select(this.selectedItem);\n this.draggableItems = [];\n this.bindDraggable();\n }\n }\n };\n Tab.prototype.clearTabTemplate = function (templateEle, templateName, className) {\n if (!this.clearTemplates) {\n return;\n }\n if (this.registeredTemplate && this.registeredTemplate[templateName]) {\n var registeredTemplates = this.registeredTemplate;\n for (var index = 0; index < registeredTemplates[templateName].length; index++) {\n var registeredItem = registeredTemplates[templateName][index].rootNodes[0];\n var closestItem = closest(registeredItem, '.' + className);\n if (!isNullOrUndefined(closestItem) && closestItem === templateEle) {\n this.clearTemplate([templateName], [registeredTemplates[templateName][index]]);\n break;\n }\n }\n }\n else if (this.portals && this.portals.length > 0) {\n var portals = this.portals;\n for (var index = 0; index < portals.length; index++) {\n var portalItem = portals[index];\n var closestItem = closest(portalItem.containerInfo, '.' + className);\n if (!isNullOrUndefined(closestItem) && closestItem === templateEle) {\n this.clearTemplate([templateName], index);\n break;\n }\n }\n }\n };\n Tab.prototype.initializeDrag = function (target) {\n var _this = this;\n var dragObj = new Draggable(target, {\n dragArea: this.dragArea,\n dragTarget: '.' + CLS_TB_ITEM,\n clone: true,\n helper: this.helper.bind(this),\n dragStart: this.itemDragStart.bind(this),\n drag: function (e) {\n var dragIndex = _this.getEleIndex(_this.dragItem);\n var dropIndex;\n var dropItem;\n var dragArgs = {\n draggedItem: _this.dragItem,\n event: e.event,\n target: e.target,\n droppedItem: e.target.closest('.' + CLS_TB_ITEM),\n clonedElement: _this.cloneElement,\n index: dragIndex\n };\n if (!isNOU(e.target.closest('.' + CLS_TAB)) && !e.target.closest('.' + CLS_TAB).isEqualNode(_this.element) &&\n _this.dragArea !== '.' + CLS_HEADER) {\n _this.trigger('dragging', dragArgs);\n }\n else {\n if (!(e.target.closest(_this.dragArea)) && _this.overflowMode !== 'Popup') {\n document.body.style.cursor = 'not-allowed';\n addClass([_this.cloneElement], CLS_HIDDEN);\n if (_this.dragItem.classList.contains(CLS_HIDDEN)) {\n removeClass([_this.dragItem], CLS_HIDDEN);\n }\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'visible';\n }\n else {\n document.body.style.cursor = '';\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'hidden';\n if (_this.cloneElement.classList.contains(CLS_HIDDEN)) {\n removeClass([_this.cloneElement], CLS_HIDDEN);\n }\n }\n if (_this.overflowMode === 'Scrollable' && !isNOU(_this.element.querySelector('.e-hscroll'))) {\n var scrollRightNavEle = _this.element.querySelector('.e-scroll-right-nav');\n var scrollLeftNavEle = _this.element.querySelector('.e-scroll-left-nav');\n var hscrollBar = _this.element.querySelector('.e-hscroll-bar');\n if (!isNOU(scrollRightNavEle) && Math.abs((scrollRightNavEle.offsetWidth / 2) +\n scrollRightNavEle.offsetLeft) > _this.cloneElement.offsetLeft + _this.cloneElement.offsetWidth) {\n hscrollBar.scrollLeft -= 10;\n }\n if (!isNOU(scrollLeftNavEle) && Math.abs((scrollLeftNavEle.offsetLeft + scrollLeftNavEle.offsetWidth) -\n _this.cloneElement.offsetLeft) > (scrollLeftNavEle.offsetWidth / 2)) {\n hscrollBar.scrollLeft += 10;\n }\n }\n _this.cloneElement.style.pointerEvents = 'none';\n dropItem = closest(e.target, '.' + CLS_TB_ITEM + '.e-draggable');\n var scrollContentWidth = 0;\n if (_this.overflowMode === 'Scrollable' && !isNOU(_this.element.querySelector('.e-hscroll'))) {\n scrollContentWidth = _this.element.querySelector('.e-hscroll-content').offsetWidth;\n }\n if (dropItem != null && !dropItem.isSameNode(_this.dragItem) &&\n dropItem.closest('.' + CLS_TAB).isSameNode(_this.dragItem.closest('.' + CLS_TAB))) {\n dropIndex = _this.getEleIndex(dropItem);\n if (dropIndex < dragIndex &&\n (Math.abs((dropItem.offsetLeft + dropItem.offsetWidth) -\n _this.cloneElement.offsetLeft) > (dropItem.offsetWidth / 2))) {\n _this.dragAction(dropItem, dragIndex, dropIndex);\n }\n if (dropIndex > dragIndex &&\n (Math.abs(dropItem.offsetWidth / 2) + dropItem.offsetLeft -\n scrollContentWidth) < _this.cloneElement.offsetLeft + _this.cloneElement.offsetWidth) {\n _this.dragAction(dropItem, dragIndex, dropIndex);\n }\n }\n _this.droppedIndex = _this.getEleIndex(_this.dragItem);\n _this.trigger('dragging', dragArgs);\n }\n },\n dragStop: this.itemDragStop.bind(this)\n });\n this.draggableItems.push(dragObj);\n };\n Tab.prototype.helper = function (e) {\n this.cloneElement = this.createElement('div');\n if (e.element) {\n this.cloneElement = (e.element.cloneNode(true));\n addClass([this.cloneElement], 'e-tab-clone-element');\n if (this.element.querySelector('.' + CLS_HEADER).classList.contains(CLS_CLOSE_SHOW)) {\n addClass([this.cloneElement], CLS_CLOSE_SHOW);\n }\n removeClass([this.cloneElement.querySelector('.' + CLS_WRAP)], 'e-ripple');\n if (!isNOU(this.cloneElement.querySelector('.e-ripple-element'))) {\n remove(this.cloneElement.querySelector('.e-ripple-element'));\n }\n document.body.appendChild(this.cloneElement);\n }\n return this.cloneElement;\n };\n Tab.prototype.itemDragStart = function (e) {\n var _this = this;\n this.draggingItems = this.items.map(function (x) { return x; });\n this.dragItem = e.element;\n var dragArgs = {\n draggedItem: e.element,\n event: e.event,\n target: e.target,\n droppedItem: null,\n index: this.getEleIndex(this.dragItem),\n clonedElement: this.cloneElement,\n cancel: false\n };\n this.trigger('onDragStart', dragArgs, function (tabitemDragArgs) {\n if (tabitemDragArgs.cancel) {\n var dragObj = e.element.ej2_instances[0];\n if (!isNullOrUndefined(dragObj)) {\n dragObj.intDestroy(e.event);\n }\n detach(_this.cloneElement);\n }\n else {\n _this.removeActiveClass();\n addClass([_this.tbItems.querySelector('.' + CLS_INDICATOR)], CLS_HIDDEN);\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'hidden';\n }\n });\n };\n Tab.prototype.dragAction = function (dropItem, dragsIndex, dropIndex) {\n if (this.items.length > 0) {\n var item = this.draggingItems[dragsIndex];\n this.draggingItems.splice(dragsIndex, 1);\n this.draggingItems.splice(dropIndex, 0, item);\n }\n if (this.overflowMode === 'MultiRow') {\n dropItem.parentNode.insertBefore(this.dragItem, dropItem.nextElementSibling);\n }\n if (dragsIndex > dropIndex) {\n if (!(this.dragItem.parentElement).isSameNode(dropItem.parentElement)) {\n if (this.overflowMode === 'Extended') {\n if (dropItem.isSameNode(dropItem.parentElement.lastChild)) {\n var popupContainer = this.dragItem.parentNode;\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n popupContainer.insertBefore(dropItem.parentElement.lastChild, popupContainer.childNodes[0]);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement.lastChild), this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n else {\n var lastEle = (dropItem.parentElement).lastChild;\n if (dropItem.isSameNode(lastEle)) {\n var popupContainer = this.dragItem.parentNode;\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n popupContainer.insertBefore(lastEle, popupContainer.childNodes[0]);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement).lastChild, this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n }\n else {\n this.dragItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n if (dragsIndex < dropIndex) {\n if (!(this.dragItem.parentElement).isSameNode(dropItem.parentElement)) {\n if (this.overflowMode === 'Extended') {\n this.dragItem.parentElement.appendChild(dropItem.parentElement.firstElementChild);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem.nextSibling);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement).lastChild, this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n else {\n this.dragItem.parentNode.insertBefore(this.dragItem, dropItem.nextElementSibling);\n }\n }\n };\n Tab.prototype.itemDragStop = function (e) {\n var _this = this;\n detach(this.cloneElement);\n this.cloneElement = null;\n this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'visible';\n document.body.style.cursor = '';\n var dragStopArgs = {\n draggedItem: this.dragItem,\n event: e.event,\n target: e.target,\n droppedItem: this.tbItem[this.droppedIndex],\n clonedElement: null,\n index: this.droppedIndex,\n cancel: false\n };\n this.trigger('dragged', dragStopArgs, function (tabItemDropArgs) {\n if (tabItemDropArgs.cancel) {\n _this.refresh();\n }\n else {\n if (_this.items.length > 0 && _this.draggingItems.length > 0) {\n _this.items = _this.draggingItems;\n _this.selectedItem = _this.droppedIndex;\n _this.refresh();\n }\n else {\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = '';\n removeClass([_this.tbItems.querySelector('.' + CLS_INDICATOR)], CLS_HIDDEN);\n _this.selectTab(_this.droppedIndex, null, true);\n }\n }\n });\n this.dragItem = null;\n };\n /**\n * Enables or disables the specified Tab item. On passing value as `false`, the item will be disabled.\n *\n * @param {number} index - Index value of target Tab item.\n * @param {boolean} value - Boolean value that determines whether the command should be enabled or disabled.\n * By default, isEnable is true.\n * @returns {void}.\n */\n Tab.prototype.enableTab = function (index, value) {\n var tbItems = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(tbItems)) {\n return;\n }\n if (value === true) {\n tbItems.classList.remove(CLS_DISABLE, CLS_OVERLAY);\n tbItems.firstElementChild.setAttribute('tabindex', tbItems.firstElementChild.getAttribute('data-tabindex'));\n }\n else {\n tbItems.classList.add(CLS_DISABLE, CLS_OVERLAY);\n tbItems.firstElementChild.removeAttribute('tabindex');\n if (tbItems.classList.contains(CLS_ACTIVE)) {\n this.select(index + 1);\n }\n }\n if (!isNOU(this.items[index])) {\n this.items[index].disabled = !value;\n this.dataBind();\n }\n tbItems.firstElementChild.setAttribute('aria-disabled', (value === true) ? 'false' : 'true');\n };\n /**\n * Adds new items to the Tab that accepts an array as Tab items.\n *\n * @param {TabItemModel[]} items - An array of item that is added to the Tab.\n * @param {number} index - Number value that determines where the items to be added. By default, index is 0.\n * @returns {void}.\n */\n Tab.prototype.addTab = function (items, index) {\n var _this = this;\n var addArgs = { addedItems: items, cancel: false };\n if (!this.isReplace) {\n this.trigger('adding', addArgs, function (tabAddingArgs) {\n if (!tabAddingArgs.cancel) {\n _this.addingTabContent(items, index);\n }\n });\n }\n else {\n this.addingTabContent(items, index);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Tab.prototype.addingTabContent = function (items, index) {\n var _this = this;\n var lastEleIndex = 0;\n this.hdrEle = select('.' + CLS_HEADER, this.element);\n if (isNOU(this.hdrEle)) {\n this.items = items;\n this.reRenderItems();\n this.bindDraggable();\n }\n else {\n var itemsCount = selectAll('.e-tab-header .' + CLS_TB_ITEM, this.element).length;\n if (itemsCount !== 0) {\n lastEleIndex = this.lastIndex + 1;\n }\n if (isNOU(index)) {\n index = itemsCount - 1;\n }\n if (itemsCount < index || index < 0 || isNaN(index)) {\n return;\n }\n if (itemsCount === 0 && !isNOU(this.hdrEle)) {\n this.hdrEle.style.display = '';\n }\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n this.tbItems = select('.' + CLS_TB_ITEMS, this.getTabHeader());\n this.isAdd = true;\n var tabItems_2 = this.parseObject(items, index);\n this.isAdd = false;\n var i_1 = 0;\n var textValue_1;\n items.forEach(function (item, place) {\n textValue_1 = item.headerTemplate || item.header.text;\n if (!(isNOU(item.headerTemplate || item.header) || isNOU(textValue_1) ||\n (textValue_1.length === 0) && !isNOU(item.header) && isNOU(item.header.iconCss))) {\n if (tabItems_2[place]) {\n if (isNOU(item.id)) {\n item.id = CLS_ITEM + _this.tabId + '_' + TABITEMPREFIX + (lastEleIndex + place).toString();\n }\n tabItems_2[place].htmlAttributes['data-id'] = item.id;\n }\n _this.items.splice((index + i_1), 0, item);\n i_1++;\n }\n if (_this.isTemplate && !isNOU(item.header) && !isNOU(item.header.text)) {\n var no = lastEleIndex + place;\n var ele = _this.createElement('div', {\n id: CLS_CONTENT + _this.tabId + '_' + no, className: CLS_ITEM,\n attrs: { role: 'tabpanel', 'aria-labelledby': CLS_ITEM + '_' + no }\n });\n _this.cntEle.insertBefore(ele, _this.cntEle.children[(index + place)]);\n var eleTrg = _this.getTrgContent(_this.cntEle, no.toString());\n _this.getContent(eleTrg, item.content, 'render', index);\n }\n });\n this.tbObj.addItems(tabItems_2, index);\n if (!this.isReplace) {\n this.trigger('added', { addedItems: items });\n }\n if (this.selectedItem === index) {\n this.select(index);\n }\n else {\n this.setActiveBorder();\n this.tbItem = selectAll('.' + CLS_TB_ITEM, this.getTabHeader());\n }\n this.bindDraggable();\n }\n };\n /**\n * Removes the items in the Tab from the specified index.\n *\n * @param {number} index - Index of target item that is going to be removed.\n * @returns {void}.\n */\n Tab.prototype.removeTab = function (index) {\n var _this = this;\n var trg = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(trg)) {\n return;\n }\n var removeArgs = { removedItem: trg, removedIndex: index, cancel: false };\n this.trigger('removing', removeArgs, function (tabRemovingArgs) {\n if (!tabRemovingArgs.cancel) {\n var header = select('#' + CLS_ITEM + _this.tabId + '_' + _this.extIndex(trg.id), select('.' + CLS_TB_ITEMS, _this.element));\n if (!isNOU(header)) {\n _this.clearTabTemplate(header, 'headerTemplate', CLS_TB_ITEM);\n }\n _this.tbObj.removeItems(index);\n if (_this.allowDragAndDrop && (index !== Array.prototype.indexOf.call(_this.itemIndexArray, trg.id))) {\n index = Array.prototype.indexOf.call(_this.itemIndexArray, trg.id);\n }\n var targetEleIndex = _this.itemIndexArray.indexOf(trg.id);\n _this.items.splice(targetEleIndex, 1);\n _this.itemIndexArray.splice(targetEleIndex, 1);\n _this.refreshActiveBorder();\n var cntTrg = select('#' + CLS_CONTENT + _this.tabId + '_' + _this.extIndex(trg.id), select('.' + CLS_CONTENT, _this.element));\n if (!isNOU(cntTrg)) {\n _this.clearTabTemplate(cntTrg, 'content', CLS_ITEM);\n detach(cntTrg);\n }\n _this.trigger('removed', tabRemovingArgs);\n if (_this.draggableItems && _this.draggableItems.length > 0) {\n _this.draggableItems[index].destroy();\n _this.draggableItems[index] = null;\n _this.draggableItems.splice(index, 1);\n }\n if (trg.classList.contains(CLS_ACTIVE)) {\n index = (index > selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_TB_POPUP + ')', _this.element).length - 1) ? index - 1 : index;\n _this.enableAnimation = false;\n _this.selectedItem = index;\n _this.select(index);\n }\n else if (index !== _this.selectedItem) {\n if (index < _this.selectedItem) {\n index = _this.itemIndexArray.indexOf(_this.tbItem[_this.selectedItem].id);\n _this.setProperties({ selectedItem: index > -1 ? index : _this.selectedItem }, true);\n _this.prevIndex = _this.selectedItem;\n }\n _this.tbItem = selectAll('.' + CLS_TB_ITEM, _this.getTabHeader());\n }\n if (selectAll('.' + CLS_TB_ITEM, _this.element).length === 0) {\n _this.hdrEle.style.display = 'none';\n }\n _this.enableAnimation = true;\n }\n });\n };\n /**\n * Shows or hides the Tab that is in the specified index.\n *\n * @param {number} index - Index value of target item.\n * @param {boolean} value - Based on this Boolean value, item will be hide (false) or show (true). By default, value is true.\n * @returns {void}.\n */\n Tab.prototype.hideTab = function (index, value) {\n var items;\n var item = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(item)) {\n return;\n }\n if (isNOU(value)) {\n value = true;\n }\n this.bdrLine.classList.add(CLS_HIDDEN);\n if (value === true) {\n item.classList.add(CLS_HIDDEN);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN + ')', this.tbItems);\n if (items.length !== 0 && item.classList.contains(CLS_ACTIVE)) {\n if (index !== 0) {\n for (var i = index - 1; i >= 0; i--) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN)) {\n this.select(i);\n break;\n }\n else if (i === 0) {\n for (var k = index + 1; k < this.tbItem.length; k++) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n }\n }\n else {\n for (var k = index + 1; k < this.tbItem.length; k++) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n }\n else if (items.length === 0) {\n this.element.classList.add(CLS_HIDDEN);\n }\n }\n else {\n this.element.classList.remove(CLS_HIDDEN);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN + ')', this.tbItems);\n item.classList.remove(CLS_HIDDEN);\n if (items.length === 0) {\n this.select(index);\n }\n }\n this.setActiveBorder();\n if (!isNullOrUndefined(item.firstElementChild)) {\n item.firstElementChild.setAttribute('aria-hidden', '' + value);\n }\n if (this.overflowMode === 'Popup' && this.tbObj) {\n this.tbObj.refreshOverflow();\n }\n };\n Tab.prototype.selectTab = function (args, event, isInteracted) {\n if (event === void 0) { event = null; }\n if (isInteracted === void 0) { isInteracted = false; }\n this.isInteracted = isInteracted;\n this.select(args, event);\n };\n /**\n * Specifies the index or HTMLElement to select an item from the Tab.\n *\n * @param {number | HTMLElement} args - Index or DOM element is used for selecting an item from the Tab.\n * @param {Event} event - An event which takes place in DOM.\n * @returns {void}\n */\n Tab.prototype.select = function (args, event) {\n var _this = this;\n var tabHeader = this.getTabHeader();\n this.tbItems = select('.' + CLS_TB_ITEMS, tabHeader);\n this.tbItem = selectAll('.' + CLS_TB_ITEM, tabHeader);\n this.content = select('.' + CLS_CONTENT, this.element);\n this.prevItem = this.tbItem[this.prevIndex];\n if (isNOU(this.selectedItem) || (this.selectedItem < 0) || (this.tbItem.length <= this.selectedItem) || isNaN(this.selectedItem)) {\n this.selectedItem = 0;\n }\n else {\n this.selectedID = this.extIndex(this.tbItem[this.selectedItem].id);\n }\n var trg = this.tbItem[args];\n if (isNOU(trg)) {\n this.selectedID = '0';\n }\n else {\n this.selectingID = this.extIndex(trg.id);\n }\n if (!isNOU(this.prevItem) && !this.prevItem.classList.contains(CLS_DISABLE)) {\n this.prevItem.children.item(0).setAttribute('tabindex', this.prevItem.firstElementChild.getAttribute('tabindex'));\n }\n var eventArg = {\n event: event,\n previousItem: this.prevItem,\n previousIndex: this.prevIndex,\n selectedItem: this.tbItem[this.selectedItem],\n selectedIndex: this.selectedItem,\n selectedContent: !isNOU(this.content) ?\n select('#' + CLS_CONTENT + this.tabId + '_' + this.selectedID, this.content) : null,\n selectingItem: trg,\n selectingIndex: args,\n selectingContent: !isNOU(this.content) ?\n select('#' + CLS_CONTENT + this.tabId + '_' + this.selectingID, this.content) : null,\n isSwiped: this.isSwiped,\n isInteracted: this.isInteracted,\n cancel: false\n };\n if (!this.initRender) {\n this.trigger('selecting', eventArg, function (selectArgs) {\n if (!selectArgs.cancel) {\n _this.selectingContent(args, _this.isInteracted);\n }\n });\n }\n else {\n this.selectingContent(args, this.isInteracted);\n }\n this.isInteracted = false;\n };\n Tab.prototype.selectingContent = function (args, isInteracted) {\n if (typeof args === 'number') {\n if (!isNOU(this.tbItem[args]) && (this.tbItem[args].classList.contains(CLS_DISABLE) ||\n this.tbItem[args].classList.contains(CLS_HIDDEN))) {\n for (var i = args + 1; i < this.items.length; i++) {\n if (this.items[i].disabled === false && this.items[i].visible === true) {\n args = i;\n break;\n }\n else {\n args = 0;\n }\n }\n }\n if (this.tbItem.length > args && args >= 0 && !isNaN(args)) {\n this.prevIndex = this.selectedItem;\n this.prevItem = this.tbItem[this.prevIndex];\n if (this.tbItem[args].classList.contains(CLS_TB_POPUP) && this.reorderActiveTab) {\n this.setActive(this.popupHandler(this.tbItem[args]), null, isInteracted);\n if ((!isNOU(this.items) && this.items.length > 0) && this.allowDragAndDrop) {\n this.tbItem = selectAll('.' + CLS_TB_ITEMS + ' .' + CLS_TB_ITEM, this.hdrEle);\n var item = this.items[args];\n this.items.splice(args, 1);\n this.items.splice(this.tbItem.length - 1, 0, item);\n var itemId = this.itemIndexArray[args];\n this.itemIndexArray.splice(args, 1);\n this.itemIndexArray.splice(this.tbItem.length - 1, 0, itemId);\n }\n }\n else {\n this.setActive(args, null, isInteracted);\n }\n }\n else {\n this.setActive(0, null, isInteracted);\n }\n }\n else if (args instanceof (HTMLElement)) {\n this.setActive(this.getEleIndex(args), null, isInteracted);\n }\n };\n /**\n * Gets the item index from the Tab.\n *\n * @param {string} tabItemId - Item ID is used for getting index from the Tab.\n * @returns {number} - It returns item index.\n */\n Tab.prototype.getItemIndex = function (tabItemId) {\n var tabIndex;\n for (var i = 0; i < this.tbItem.length; i++) {\n var value = this.tbItem[i].getAttribute('data-id');\n if (tabItemId === value) {\n tabIndex = i;\n break;\n }\n }\n return tabIndex;\n };\n /**\n * Specifies the value to disable/enable the Tab component.\n * When set to `true`, the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, Tab will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n Tab.prototype.disable = function (value) {\n this.setCssClass(this.element, CLS_DISABLE, value);\n this.element.setAttribute('aria-disabled', '' + value);\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - It returns the persisted state.\n */\n Tab.prototype.getPersistData = function () {\n return this.addOnPersist(['selectedItem', 'actEleId']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Tab.prototype.getModuleName = function () {\n return 'tab';\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {TabModel} newProp - It contains the new value of data.\n * @param {TabModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n Tab.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n setStyle(this.element, { width: formatUnit(newProp.width) });\n break;\n case 'height':\n setStyle(this.element, { height: formatUnit(newProp.height) });\n this.setContentHeight(false);\n break;\n case 'cssClass':\n var headerEle = this.element.querySelector('.' + CLS_HEADER);\n if (oldProp.cssClass !== '' && !isNullOrUndefined(oldProp.cssClass)) {\n this.setCssClass(this.element, oldProp.cssClass, false);\n this.setCssClass(this.element, newProp.cssClass, true);\n if (!isNullOrUndefined(headerEle)) {\n this.setCssClass(headerEle, oldProp.cssClass, false);\n this.setCssClass(headerEle, newProp.cssClass, true);\n }\n }\n else {\n this.setCssClass(this.element, newProp.cssClass, true);\n if (!isNullOrUndefined(headerEle)) {\n this.setCssClass(headerEle, newProp.cssClass, true);\n }\n }\n break;\n case 'items':\n this.evalOnPropertyChangeItems(newProp, oldProp);\n break;\n case 'showCloseButton':\n this.setCloseButton(newProp.showCloseButton);\n break;\n case 'reorderActiveTab':\n this.refreshActiveTabBorder();\n break;\n case 'selectedItem':\n this.selectedItem = oldProp.selectedItem;\n this.select(newProp.selectedItem);\n break;\n case 'headerPlacement':\n this.changeOrientation(newProp.headerPlacement);\n break;\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n case 'overflowMode':\n this.tbObj.overflowMode = newProp.overflowMode;\n this.tbObj.dataBind();\n this.refreshActiveTabBorder();\n break;\n case 'heightAdjustMode':\n this.setContentHeight(false);\n this.select(this.selectedItem);\n break;\n case 'scrollStep':\n if (this.tbObj) {\n this.tbObj.scrollStep = this.scrollStep;\n }\n break;\n case 'allowDragAndDrop':\n this.bindDraggable();\n break;\n case 'dragArea':\n if (this.allowDragAndDrop) {\n this.draggableItems.forEach(function (item) {\n item.dragArea = _this.dragArea;\n });\n this.refresh();\n }\n break;\n }\n }\n };\n /**\n * To refresh the active tab contents.\n *\n * @returns {void}\n */\n Tab.prototype.refreshActiveTab = function () {\n if (this.isReact && this.isTemplate) {\n this.clearTemplate();\n }\n if (!this.isTemplate) {\n if (this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE)) {\n detach(this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).children[0]);\n detach(this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).children[0]);\n var item = this.items[this.selectedItem];\n var pos = (isNOU(item.header) || isNOU(item.header.iconPosition)) ? '' : item.header.iconPosition;\n var css = (isNOU(item.header) || isNOU(item.header.iconCss)) ? '' : item.header.iconCss;\n var text = item.headerTemplate || item.header.text;\n var txtWrap = this.createElement('div', { className: CLS_TEXT, attrs: { 'role': 'presentation' } });\n if (!isNOU(text.tagName)) {\n txtWrap.appendChild(text);\n }\n else {\n this.headerTextCompile(txtWrap, text, this.selectedItem);\n }\n var tEle = void 0;\n var icon = this.createElement('span', {\n className: CLS_ICONS + ' ' + CLS_TAB_ICON + ' ' + CLS_ICON + '-' + pos + ' ' + css\n });\n var tConts = this.createElement('div', { className: CLS_TEXT_WRAP });\n tConts.appendChild(txtWrap);\n if ((text !== '' && text !== undefined) && css !== '') {\n if ((pos === 'left' || pos === 'top')) {\n tConts.insertBefore(icon, tConts.firstElementChild);\n }\n else {\n tConts.appendChild(icon);\n }\n tEle = txtWrap;\n this.isIconAlone = false;\n }\n else {\n tEle = ((css === '') ? txtWrap : icon);\n if (tEle === icon) {\n detach(txtWrap);\n tConts.appendChild(icon);\n this.isIconAlone = true;\n }\n }\n var tabIndex = isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString();\n var wrapAtt = (item.disabled) ? {} : { tabIndex: tabIndex, 'data-tabindex': tabIndex, role: 'tab', 'aria-selected': 'true', 'aria-disabled': 'false' };\n tConts.appendChild(this.btnCls.cloneNode(true));\n var wraper = this.createElement('div', { className: CLS_WRAP, attrs: wrapAtt });\n wraper.appendChild(tConts);\n if (pos === 'top' || pos === 'bottom') {\n this.element.classList.add('e-vertical-icon');\n }\n this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).appendChild(wraper);\n var crElem = this.createElement('div');\n var cnt = item.content;\n var eleStr = void 0;\n if (typeof cnt === 'string' || isNOU(cnt.innerHTML)) {\n if (typeof cnt === 'string' && this.enableHtmlSanitizer) {\n cnt = SanitizeHtmlHelper.sanitize(cnt);\n }\n if (cnt[0] === '.' || cnt[0] === '#') {\n if (document.querySelectorAll(cnt).length) {\n var eleVal = document.querySelector(cnt);\n eleStr = eleVal.outerHTML.trim();\n crElem.appendChild(eleVal);\n eleVal.style.display = '';\n }\n else {\n this.compileElement(crElem, cnt, 'content', this.selectedItem);\n }\n }\n else {\n this.compileElement(crElem, cnt, 'content', this.selectedItem);\n }\n }\n else {\n crElem.appendChild(cnt);\n }\n if (!isNOU(eleStr)) {\n if (this.templateEle.indexOf(cnt.toString()) === -1) {\n this.templateEle.push(cnt.toString());\n }\n }\n this.element.querySelector('.' + CLS_ITEM + '.' + CLS_ACTIVE).appendChild(crElem);\n }\n }\n else {\n var tabItems = this.element.querySelector('.' + CLS_TB_ITEMS);\n var element = this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE);\n var index = this.getIndexFromEle(element.id);\n var header = element.innerText;\n var detachContent = this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).children[0];\n var mainContents = detachContent.innerHTML;\n detach(element);\n detach(detachContent);\n var attr = {\n className: CLS_TB_ITEM + ' ' + CLS_TEMPLATE + ' ' + CLS_ACTIVE, id: CLS_ITEM + this.tabId + '_' + index\n };\n var txtString = this.createElement('span', {\n className: CLS_TEXT, innerHTML: header, attrs: { 'role': 'presentation' }\n }).outerHTML;\n var conte = this.createElement('div', {\n className: CLS_TEXT_WRAP, innerHTML: txtString + this.btnCls.outerHTML\n }).outerHTML;\n var tabIndex = element.firstElementChild.getAttribute('data-tabindex');\n var wrap = this.createElement('div', {\n className: CLS_WRAP, innerHTML: conte,\n attrs: { tabIndex: tabIndex, 'data-tabindex': tabIndex, role: 'tab', 'aria-controls': CLS_CONTENT + this.tabId + '_' + index, 'aria-selected': 'true', 'aria-disabled': 'false' }\n });\n tabItems.insertBefore(this.createElement('div', attr), tabItems.children[index + 1]);\n this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).appendChild(wrap);\n var crElem = this.createElement('div', { innerHTML: mainContents });\n this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).appendChild(crElem);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * To refresh the active tab indicator.\n *\n * @returns {void}\n */\n Tab.prototype.refreshActiveTabBorder = function () {\n var activeEle = select('.' + CLS_TB_ITEM + '.' + CLS_TB_POPUP + '.' + CLS_ACTIVE, this.element);\n if (!isNOU(activeEle) && this.reorderActiveTab) {\n this.select(this.getEleIndex(activeEle));\n }\n this.refreshActiveBorder();\n };\n __decorate([\n Collection([], TabItem)\n ], Tab.prototype, \"items\", void 0);\n __decorate([\n Property('100%')\n ], Tab.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tab.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Tab.prototype, \"cssClass\", void 0);\n __decorate([\n Property(0)\n ], Tab.prototype, \"selectedItem\", void 0);\n __decorate([\n Property('Top')\n ], Tab.prototype, \"headerPlacement\", void 0);\n __decorate([\n Property('Content')\n ], Tab.prototype, \"heightAdjustMode\", void 0);\n __decorate([\n Property('Scrollable')\n ], Tab.prototype, \"overflowMode\", void 0);\n __decorate([\n Property('Dynamic')\n ], Tab.prototype, \"loadOn\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"showCloseButton\", void 0);\n __decorate([\n Property(true)\n ], Tab.prototype, \"reorderActiveTab\", void 0);\n __decorate([\n Property()\n ], Tab.prototype, \"scrollStep\", void 0);\n __decorate([\n Property()\n ], Tab.prototype, \"dragArea\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(true)\n ], Tab.prototype, \"clearTemplates\", void 0);\n __decorate([\n Complex({}, TabAnimationSettings)\n ], Tab.prototype, \"animation\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"adding\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"added\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"selecting\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"selected\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"removed\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"onDragStart\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"dragging\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"dragged\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"destroyed\", void 0);\n Tab = __decorate([\n NotifyPropertyChanges\n ], Tab);\n return Tab;\n}(Component));\nexport { Tab };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Tab } from '@syncfusion/ej2-navigations';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React Tab Component.\n * ```html\n * \n * ```\n */\nvar TabComponent = /** @class */ (function (_super) {\n __extends(TabComponent, _super);\n function TabComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = { 'tabItems': 'tabItem' };\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n TabComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return TabComponent;\n}(Tab));\nexport { TabComponent };\napplyMixins(TabComponent, [ComponentBase, React.Component]);\n","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar pkg = require('./../../package.json');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed in ' + version));\n }\n\n if (isDeprecated && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","/**\n * Exports a boolean value reporting whether is client side or server side by checking on the window object\n */\nconst isClient = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nexport default isClient;\n","/**\n * Exports a boolean value reporting whether the given API is supported or not\n */\nconst isApiSupported = (api) => (typeof window !== 'undefined' ? api in window : false);\nexport default isApiSupported;\n","const cache = new Map();\n/**\n * A tiny wrapper around console.warn that makes sure the message is only displayed once.\n * Used mainly to avoid polluting server side logs\n * @param message\n */\nconst warnOnce = (message) => {\n if (cache.has(message))\n return;\n cache.set(message, true);\n // eslint-disable-next-line no-console\n console.warn(message);\n};\nexport default warnOnce;\n","import { useEffect, useState } from 'react';\nimport isClient from './shared/isClient';\nimport isAPISupported from './shared/isAPISupported';\nimport warnOnce from './shared/warnOnce';\nconst errorMessage = 'matchMedia is not supported, this could happen both because window.matchMedia is not supported by' +\n ' your current browser or you\\'re using the useMediaQuery hook whilst server side rendering.';\n/**\n * Accepts a media query string then uses the\n * [window.matchMedia](https://developer.mozilla.org/en-US/docs/Web/API/Window/matchMedia) API to determine if it\n * matches with the current document.
    \n * It also monitor the document changes to detect when it matches or stops matching the media query.
    \n * Returns the validity state of the given media query.\n *\n */\nconst useMediaQuery = (mediaQuery) => {\n if (!isClient || !isAPISupported('matchMedia')) {\n warnOnce(errorMessage);\n return false;\n }\n const [isVerified, setIsVerified] = useState(!!window.matchMedia(mediaQuery).matches);\n useEffect(() => {\n const mediaQueryList = window.matchMedia(mediaQuery);\n const documentChangeHandler = () => { setIsVerified(!!mediaQueryList.matches); };\n try {\n mediaQueryList.addEventListener('change', documentChangeHandler);\n }\n catch (e) {\n // Safari isn't supporting mediaQueryList.addEventListener\n mediaQueryList.addListener(documentChangeHandler);\n }\n documentChangeHandler();\n return () => {\n try {\n mediaQueryList.removeEventListener('change', documentChangeHandler);\n }\n catch (e) {\n // Safari isn't supporting mediaQueryList.removeEventListener\n mediaQueryList.removeListener(documentChangeHandler);\n }\n };\n }, [mediaQuery]);\n return isVerified;\n};\nexport default useMediaQuery;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar decode = decodeURIComponent;\nvar encode = encodeURIComponent;\nvar pairSplitRegExp = /; */;\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n * obs-text = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string');\n }\n\n var obj = {}\n var opt = options || {};\n var pairs = str.split(pairSplitRegExp);\n var dec = opt.decode || decode;\n\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i];\n var eq_idx = pair.indexOf('=');\n\n // skip things that don't look like key=value\n if (eq_idx < 0) {\n continue;\n }\n\n var key = pair.substr(0, eq_idx).trim()\n var val = pair.substr(++eq_idx, pair.length).trim();\n\n // quoted values\n if ('\"' == val[0]) {\n val = val.slice(1, -1);\n }\n\n // only assign once\n if (undefined == obj[key]) {\n obj[key] = tryDecode(val, dec);\n }\n }\n\n return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n * => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n var opt = options || {};\n var enc = opt.encode || encode;\n\n if (typeof enc !== 'function') {\n throw new TypeError('option encode is invalid');\n }\n\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid');\n }\n\n var value = enc(val);\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError('argument val is invalid');\n }\n\n var str = name + '=' + value;\n\n if (null != opt.maxAge) {\n var maxAge = opt.maxAge - 0;\n if (isNaN(maxAge)) throw new Error('maxAge should be a Number');\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + opt.expires.toUTCString();\n }\n\n if (opt.httpOnly) {\n str += '; HttpOnly';\n }\n\n if (opt.secure) {\n str += '; Secure';\n }\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string'\n ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n try {\n return decode(str);\n } catch (e) {\n return str;\n }\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\n// -- Inlined from fbjs --\n\nvar emptyObject = {};\n\nif (process.env.NODE_ENV !== 'production') {\n Object.freeze(emptyObject);\n}\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction _invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nvar warning = function(){};\n\nif (process.env.NODE_ENV !== 'production') {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\n// /-- Inlined from fbjs --\n\nvar MIXINS_KEY = 'mixins';\n\n// Helper function to allow the creation of anonymous functions which do not\n// have .name set to the name of the variable being assigned to.\nfunction identity(fn) {\n return fn;\n}\n\nvar ReactPropTypeLocationNames;\nif (process.env.NODE_ENV !== 'production') {\n ReactPropTypeLocationNames = {\n prop: 'prop',\n context: 'context',\n childContext: 'child context'\n };\n} else {\n ReactPropTypeLocationNames = {};\n}\n\nfunction factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) {\n /**\n * Policies that describe methods in `ReactClassInterface`.\n */\n\n var injectedMixins = [];\n\n /**\n * Composite components are higher-level components that compose other composite\n * or host components.\n *\n * To create a new type of `ReactClass`, pass a specification of\n * your new class to `React.createClass`. The only requirement of your class\n * specification is that you implement a `render` method.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return
    Hello World
    ;\n * }\n * });\n *\n * The class specification supports a specific protocol of methods that have\n * special meaning (e.g. `render`). See `ReactClassInterface` for\n * more the comprehensive protocol. Any other properties and methods in the\n * class specification will be available on the prototype.\n *\n * @interface ReactClassInterface\n * @internal\n */\n var ReactClassInterface = {\n /**\n * An array of Mixin objects to include when defining your component.\n *\n * @type {array}\n * @optional\n */\n mixins: 'DEFINE_MANY',\n\n /**\n * An object containing properties and methods that should be defined on\n * the component's constructor instead of its prototype (static methods).\n *\n * @type {object}\n * @optional\n */\n statics: 'DEFINE_MANY',\n\n /**\n * Definition of prop types for this component.\n *\n * @type {object}\n * @optional\n */\n propTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types for this component.\n *\n * @type {object}\n * @optional\n */\n contextTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types this component sets for its children.\n *\n * @type {object}\n * @optional\n */\n childContextTypes: 'DEFINE_MANY',\n\n // ==== Definition methods ====\n\n /**\n * Invoked when the component is mounted. Values in the mapping will be set on\n * `this.props` if that prop is not specified (i.e. using an `in` check).\n *\n * This method is invoked before `getInitialState` and therefore cannot rely\n * on `this.state` or use `this.setState`.\n *\n * @return {object}\n * @optional\n */\n getDefaultProps: 'DEFINE_MANY_MERGED',\n\n /**\n * Invoked once before the component is mounted. The return value will be used\n * as the initial value of `this.state`.\n *\n * getInitialState: function() {\n * return {\n * isOn: false,\n * fooBaz: new BazFoo()\n * }\n * }\n *\n * @return {object}\n * @optional\n */\n getInitialState: 'DEFINE_MANY_MERGED',\n\n /**\n * @return {object}\n * @optional\n */\n getChildContext: 'DEFINE_MANY_MERGED',\n\n /**\n * Uses props from `this.props` and state from `this.state` to render the\n * structure of the component.\n *\n * No guarantees are made about when or how often this method is invoked, so\n * it must not have side effects.\n *\n * render: function() {\n * var name = this.props.name;\n * return
    Hello, {name}!
    ;\n * }\n *\n * @return {ReactComponent}\n * @required\n */\n render: 'DEFINE_ONCE',\n\n // ==== Delegate methods ====\n\n /**\n * Invoked when the component is initially created and about to be mounted.\n * This may have side effects, but any external subscriptions or data created\n * by this method must be cleaned up in `componentWillUnmount`.\n *\n * @optional\n */\n componentWillMount: 'DEFINE_MANY',\n\n /**\n * Invoked when the component has been mounted and has a DOM representation.\n * However, there is no guarantee that the DOM node is in the document.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been mounted (initialized and rendered) for the first time.\n *\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidMount: 'DEFINE_MANY',\n\n /**\n * Invoked before the component receives new props.\n *\n * Use this as an opportunity to react to a prop transition by updating the\n * state using `this.setState`. Current props are accessed via `this.props`.\n *\n * componentWillReceiveProps: function(nextProps, nextContext) {\n * this.setState({\n * likesIncreasing: nextProps.likeCount > this.props.likeCount\n * });\n * }\n *\n * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n * transition may cause a state change, but the opposite is not true. If you\n * need it, you are probably looking for `componentWillUpdate`.\n *\n * @param {object} nextProps\n * @optional\n */\n componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Invoked while deciding if the component should be updated as a result of\n * receiving new props, state and/or context.\n *\n * Use this as an opportunity to `return false` when you're certain that the\n * transition to the new props/state/context will not require a component\n * update.\n *\n * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n * return !equal(nextProps, this.props) ||\n * !equal(nextState, this.state) ||\n * !equal(nextContext, this.context);\n * }\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @return {boolean} True if the component should update.\n * @optional\n */\n shouldComponentUpdate: 'DEFINE_ONCE',\n\n /**\n * Invoked when the component is about to update due to a transition from\n * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n * and `nextContext`.\n *\n * Use this as an opportunity to perform preparation before an update occurs.\n *\n * NOTE: You **cannot** use `this.setState()` in this method.\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @param {ReactReconcileTransaction} transaction\n * @optional\n */\n componentWillUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component's DOM representation has been updated.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been updated.\n *\n * @param {object} prevProps\n * @param {?object} prevState\n * @param {?object} prevContext\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component is about to be removed from its parent and have\n * its DOM representation destroyed.\n *\n * Use this as an opportunity to deallocate any external resources.\n *\n * NOTE: There is no `componentDidUnmount` since your component will have been\n * destroyed by that point.\n *\n * @optional\n */\n componentWillUnmount: 'DEFINE_MANY',\n\n /**\n * Replacement for (deprecated) `componentWillMount`.\n *\n * @optional\n */\n UNSAFE_componentWillMount: 'DEFINE_MANY',\n\n /**\n * Replacement for (deprecated) `componentWillReceiveProps`.\n *\n * @optional\n */\n UNSAFE_componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Replacement for (deprecated) `componentWillUpdate`.\n *\n * @optional\n */\n UNSAFE_componentWillUpdate: 'DEFINE_MANY',\n\n // ==== Advanced methods ====\n\n /**\n * Updates the component's currently mounted DOM representation.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n * @overridable\n */\n updateComponent: 'OVERRIDE_BASE'\n };\n\n /**\n * Similar to ReactClassInterface but for static methods.\n */\n var ReactClassStaticInterface = {\n /**\n * This method is invoked after a component is instantiated and when it\n * receives new props. Return an object to update state in response to\n * prop changes. Return null to indicate no change to state.\n *\n * If an object is returned, its keys will be merged into the existing state.\n *\n * @return {object || null}\n * @optional\n */\n getDerivedStateFromProps: 'DEFINE_MANY_MERGED'\n };\n\n /**\n * Mapping from class specification keys to special processing functions.\n *\n * Although these are declared like instance properties in the specification\n * when defining classes using `React.createClass`, they are actually static\n * and are accessible on the constructor instead of the prototype. Despite\n * being static, they must be defined outside of the \"statics\" key under\n * which all other static methods are defined.\n */\n var RESERVED_SPEC_KEYS = {\n displayName: function(Constructor, displayName) {\n Constructor.displayName = displayName;\n },\n mixins: function(Constructor, mixins) {\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n mixSpecIntoComponent(Constructor, mixins[i]);\n }\n }\n },\n childContextTypes: function(Constructor, childContextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, childContextTypes, 'childContext');\n }\n Constructor.childContextTypes = _assign(\n {},\n Constructor.childContextTypes,\n childContextTypes\n );\n },\n contextTypes: function(Constructor, contextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, contextTypes, 'context');\n }\n Constructor.contextTypes = _assign(\n {},\n Constructor.contextTypes,\n contextTypes\n );\n },\n /**\n * Special case getDefaultProps which should move into statics but requires\n * automatic merging.\n */\n getDefaultProps: function(Constructor, getDefaultProps) {\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps = createMergedResultFunction(\n Constructor.getDefaultProps,\n getDefaultProps\n );\n } else {\n Constructor.getDefaultProps = getDefaultProps;\n }\n },\n propTypes: function(Constructor, propTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, propTypes, 'prop');\n }\n Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n },\n statics: function(Constructor, statics) {\n mixStaticSpecIntoComponent(Constructor, statics);\n },\n autobind: function() {}\n };\n\n function validateTypeDef(Constructor, typeDef, location) {\n for (var propName in typeDef) {\n if (typeDef.hasOwnProperty(propName)) {\n // use a warning instead of an _invariant so components\n // don't show up in prod but only in __DEV__\n if (process.env.NODE_ENV !== 'production') {\n warning(\n typeof typeDef[propName] === 'function',\n '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n 'React.PropTypes.',\n Constructor.displayName || 'ReactClass',\n ReactPropTypeLocationNames[location],\n propName\n );\n }\n }\n }\n }\n\n function validateMethodOverride(isAlreadyDefined, name) {\n var specPolicy = ReactClassInterface.hasOwnProperty(name)\n ? ReactClassInterface[name]\n : null;\n\n // Disallow overriding of base class methods unless explicitly allowed.\n if (ReactClassMixin.hasOwnProperty(name)) {\n _invariant(\n specPolicy === 'OVERRIDE_BASE',\n 'ReactClassInterface: You are attempting to override ' +\n '`%s` from your class specification. Ensure that your method names ' +\n 'do not overlap with React methods.',\n name\n );\n }\n\n // Disallow defining methods more than once unless explicitly allowed.\n if (isAlreadyDefined) {\n _invariant(\n specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED',\n 'ReactClassInterface: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be due ' +\n 'to a mixin.',\n name\n );\n }\n }\n\n /**\n * Mixin helper which handles policy validation and reserved\n * specification keys when building React classes.\n */\n function mixSpecIntoComponent(Constructor, spec) {\n if (!spec) {\n if (process.env.NODE_ENV !== 'production') {\n var typeofSpec = typeof spec;\n var isMixinValid = typeofSpec === 'object' && spec !== null;\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n isMixinValid,\n \"%s: You're attempting to include a mixin that is either null \" +\n 'or not an object. Check the mixins included by the component, ' +\n 'as well as any mixins they include themselves. ' +\n 'Expected object but got %s.',\n Constructor.displayName || 'ReactClass',\n spec === null ? null : typeofSpec\n );\n }\n }\n\n return;\n }\n\n _invariant(\n typeof spec !== 'function',\n \"ReactClass: You're attempting to \" +\n 'use a component class or function as a mixin. Instead, just use a ' +\n 'regular object.'\n );\n _invariant(\n !isValidElement(spec),\n \"ReactClass: You're attempting to \" +\n 'use a component as a mixin. Instead, just use a regular object.'\n );\n\n var proto = Constructor.prototype;\n var autoBindPairs = proto.__reactAutoBindPairs;\n\n // By handling mixins before any other properties, we ensure the same\n // chaining order is applied to methods with DEFINE_MANY policy, whether\n // mixins are listed before or after these methods in the spec.\n if (spec.hasOwnProperty(MIXINS_KEY)) {\n RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n }\n\n for (var name in spec) {\n if (!spec.hasOwnProperty(name)) {\n continue;\n }\n\n if (name === MIXINS_KEY) {\n // We have already handled mixins in a special case above.\n continue;\n }\n\n var property = spec[name];\n var isAlreadyDefined = proto.hasOwnProperty(name);\n validateMethodOverride(isAlreadyDefined, name);\n\n if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n RESERVED_SPEC_KEYS[name](Constructor, property);\n } else {\n // Setup methods on prototype:\n // The following member methods should not be automatically bound:\n // 1. Expected ReactClass methods (in the \"interface\").\n // 2. Overridden methods (that were mixed in).\n var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n var isFunction = typeof property === 'function';\n var shouldAutoBind =\n isFunction &&\n !isReactClassMethod &&\n !isAlreadyDefined &&\n spec.autobind !== false;\n\n if (shouldAutoBind) {\n autoBindPairs.push(name, property);\n proto[name] = property;\n } else {\n if (isAlreadyDefined) {\n var specPolicy = ReactClassInterface[name];\n\n // These cases should already be caught by validateMethodOverride.\n _invariant(\n isReactClassMethod &&\n (specPolicy === 'DEFINE_MANY_MERGED' ||\n specPolicy === 'DEFINE_MANY'),\n 'ReactClass: Unexpected spec policy %s for key %s ' +\n 'when mixing in component specs.',\n specPolicy,\n name\n );\n\n // For methods which are defined more than once, call the existing\n // methods before calling the new property, merging if appropriate.\n if (specPolicy === 'DEFINE_MANY_MERGED') {\n proto[name] = createMergedResultFunction(proto[name], property);\n } else if (specPolicy === 'DEFINE_MANY') {\n proto[name] = createChainedFunction(proto[name], property);\n }\n } else {\n proto[name] = property;\n if (process.env.NODE_ENV !== 'production') {\n // Add verbose displayName to the function, which helps when looking\n // at profiling tools.\n if (typeof property === 'function' && spec.displayName) {\n proto[name].displayName = spec.displayName + '_' + name;\n }\n }\n }\n }\n }\n }\n }\n\n function mixStaticSpecIntoComponent(Constructor, statics) {\n if (!statics) {\n return;\n }\n\n for (var name in statics) {\n var property = statics[name];\n if (!statics.hasOwnProperty(name)) {\n continue;\n }\n\n var isReserved = name in RESERVED_SPEC_KEYS;\n _invariant(\n !isReserved,\n 'ReactClass: You are attempting to define a reserved ' +\n 'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' +\n 'as an instance property instead; it will still be accessible on the ' +\n 'constructor.',\n name\n );\n\n var isAlreadyDefined = name in Constructor;\n if (isAlreadyDefined) {\n var specPolicy = ReactClassStaticInterface.hasOwnProperty(name)\n ? ReactClassStaticInterface[name]\n : null;\n\n _invariant(\n specPolicy === 'DEFINE_MANY_MERGED',\n 'ReactClass: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be ' +\n 'due to a mixin.',\n name\n );\n\n Constructor[name] = createMergedResultFunction(Constructor[name], property);\n\n return;\n }\n\n Constructor[name] = property;\n }\n }\n\n /**\n * Merge two objects, but throw if both contain the same key.\n *\n * @param {object} one The first object, which is mutated.\n * @param {object} two The second object\n * @return {object} one after it has been mutated to contain everything in two.\n */\n function mergeIntoWithNoDuplicateKeys(one, two) {\n _invariant(\n one && two && typeof one === 'object' && typeof two === 'object',\n 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'\n );\n\n for (var key in two) {\n if (two.hasOwnProperty(key)) {\n _invariant(\n one[key] === undefined,\n 'mergeIntoWithNoDuplicateKeys(): ' +\n 'Tried to merge two objects with the same key: `%s`. This conflict ' +\n 'may be due to a mixin; in particular, this may be caused by two ' +\n 'getInitialState() or getDefaultProps() methods returning objects ' +\n 'with clashing keys.',\n key\n );\n one[key] = two[key];\n }\n }\n return one;\n }\n\n /**\n * Creates a function that invokes two functions and merges their return values.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n function createMergedResultFunction(one, two) {\n return function mergedResult() {\n var a = one.apply(this, arguments);\n var b = two.apply(this, arguments);\n if (a == null) {\n return b;\n } else if (b == null) {\n return a;\n }\n var c = {};\n mergeIntoWithNoDuplicateKeys(c, a);\n mergeIntoWithNoDuplicateKeys(c, b);\n return c;\n };\n }\n\n /**\n * Creates a function that invokes two functions and ignores their return vales.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n function createChainedFunction(one, two) {\n return function chainedFunction() {\n one.apply(this, arguments);\n two.apply(this, arguments);\n };\n }\n\n /**\n * Binds a method to the component.\n *\n * @param {object} component Component whose method is going to be bound.\n * @param {function} method Method to be bound.\n * @return {function} The bound method.\n */\n function bindAutoBindMethod(component, method) {\n var boundMethod = method.bind(component);\n if (process.env.NODE_ENV !== 'production') {\n boundMethod.__reactBoundContext = component;\n boundMethod.__reactBoundMethod = method;\n boundMethod.__reactBoundArguments = null;\n var componentName = component.constructor.displayName;\n var _bind = boundMethod.bind;\n boundMethod.bind = function(newThis) {\n for (\n var _len = arguments.length,\n args = Array(_len > 1 ? _len - 1 : 0),\n _key = 1;\n _key < _len;\n _key++\n ) {\n args[_key - 1] = arguments[_key];\n }\n\n // User is trying to bind() an autobound method; we effectively will\n // ignore the value of \"this\" that the user is trying to use, so\n // let's warn.\n if (newThis !== component && newThis !== null) {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n false,\n 'bind(): React component methods may only be bound to the ' +\n 'component instance. See %s',\n componentName\n );\n }\n } else if (!args.length) {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n false,\n 'bind(): You are binding a component method to the component. ' +\n 'React does this for you automatically in a high-performance ' +\n 'way, so you can safely remove this call. See %s',\n componentName\n );\n }\n return boundMethod;\n }\n var reboundMethod = _bind.apply(boundMethod, arguments);\n reboundMethod.__reactBoundContext = component;\n reboundMethod.__reactBoundMethod = method;\n reboundMethod.__reactBoundArguments = args;\n return reboundMethod;\n };\n }\n return boundMethod;\n }\n\n /**\n * Binds all auto-bound methods in a component.\n *\n * @param {object} component Component whose method is going to be bound.\n */\n function bindAutoBindMethods(component) {\n var pairs = component.__reactAutoBindPairs;\n for (var i = 0; i < pairs.length; i += 2) {\n var autoBindKey = pairs[i];\n var method = pairs[i + 1];\n component[autoBindKey] = bindAutoBindMethod(component, method);\n }\n }\n\n var IsMountedPreMixin = {\n componentDidMount: function() {\n this.__isMounted = true;\n }\n };\n\n var IsMountedPostMixin = {\n componentWillUnmount: function() {\n this.__isMounted = false;\n }\n };\n\n /**\n * Add more to the ReactClass base class. These are all legacy features and\n * therefore not already part of the modern ReactComponent.\n */\n var ReactClassMixin = {\n /**\n * TODO: This will be deprecated because state should always keep a consistent\n * type signature and the only use case for this, is to avoid that.\n */\n replaceState: function(newState, callback) {\n this.updater.enqueueReplaceState(this, newState, callback);\n },\n\n /**\n * Checks whether or not this composite component is mounted.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function() {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n this.__didWarnIsMounted,\n '%s: isMounted is deprecated. Instead, make sure to clean up ' +\n 'subscriptions and pending requests in componentWillUnmount to ' +\n 'prevent memory leaks.',\n (this.constructor && this.constructor.displayName) ||\n this.name ||\n 'Component'\n );\n this.__didWarnIsMounted = true;\n }\n return !!this.__isMounted;\n }\n };\n\n var ReactClassComponent = function() {};\n _assign(\n ReactClassComponent.prototype,\n ReactComponent.prototype,\n ReactClassMixin\n );\n\n /**\n * Creates a composite component class given a class specification.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n *\n * @param {object} spec Class specification (which must define `render`).\n * @return {function} Component constructor function.\n * @public\n */\n function createClass(spec) {\n // To keep our warnings more understandable, we'll use a little hack here to\n // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n // unnecessarily identify a class without displayName as 'Constructor'.\n var Constructor = identity(function(props, context, updater) {\n // This constructor gets overridden by mocks. The argument is used\n // by mocks to assert on what gets mounted.\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n this instanceof Constructor,\n 'Something is calling a React component directly. Use a factory or ' +\n 'JSX instead. See: https://fb.me/react-legacyfactory'\n );\n }\n\n // Wire up auto-binding\n if (this.__reactAutoBindPairs.length) {\n bindAutoBindMethods(this);\n }\n\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n\n this.state = null;\n\n // ReactClasses doesn't have constructors. Instead, they use the\n // getInitialState and componentWillMount methods for initialization.\n\n var initialState = this.getInitialState ? this.getInitialState() : null;\n if (process.env.NODE_ENV !== 'production') {\n // We allow auto-mocks to proceed as if they're returning null.\n if (\n initialState === undefined &&\n this.getInitialState._isMockFunction\n ) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n initialState = null;\n }\n }\n _invariant(\n typeof initialState === 'object' && !Array.isArray(initialState),\n '%s.getInitialState(): must return an object or null',\n Constructor.displayName || 'ReactCompositeComponent'\n );\n\n this.state = initialState;\n });\n Constructor.prototype = new ReactClassComponent();\n Constructor.prototype.constructor = Constructor;\n Constructor.prototype.__reactAutoBindPairs = [];\n\n injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n mixSpecIntoComponent(Constructor, IsMountedPreMixin);\n mixSpecIntoComponent(Constructor, spec);\n mixSpecIntoComponent(Constructor, IsMountedPostMixin);\n\n // Initialize the defaultProps property after all mixins have been merged.\n if (Constructor.getDefaultProps) {\n Constructor.defaultProps = Constructor.getDefaultProps();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // This is a tag to indicate that the use of these method names is ok,\n // since it's used with createClass. If it's not, then it's likely a\n // mistake so we'll warn you to use the static property, property\n // initializer or constructor respectively.\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps.isReactClassApproved = {};\n }\n if (Constructor.prototype.getInitialState) {\n Constructor.prototype.getInitialState.isReactClassApproved = {};\n }\n }\n\n _invariant(\n Constructor.prototype.render,\n 'createClass(...): Class specification must implement a `render` method.'\n );\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n !Constructor.prototype.componentShouldUpdate,\n '%s has a method called ' +\n 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n 'The name is phrased as a question because the function is ' +\n 'expected to return a value.',\n spec.displayName || 'A component'\n );\n warning(\n !Constructor.prototype.componentWillRecieveProps,\n '%s has a method called ' +\n 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?',\n spec.displayName || 'A component'\n );\n warning(\n !Constructor.prototype.UNSAFE_componentWillRecieveProps,\n '%s has a method called UNSAFE_componentWillRecieveProps(). ' +\n 'Did you mean UNSAFE_componentWillReceiveProps()?',\n spec.displayName || 'A component'\n );\n }\n\n // Reduce time spent doing lookups by setting these on the prototype.\n for (var methodName in ReactClassInterface) {\n if (!Constructor.prototype[methodName]) {\n Constructor.prototype[methodName] = null;\n }\n }\n\n return Constructor;\n }\n\n return createClass;\n}\n\nmodule.exports = factory;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar React = require('react');\nvar factory = require('./factory');\n\nif (typeof React === 'undefined') {\n throw Error(\n 'create-react-class could not find the React object. If you are using script tags, ' +\n 'make sure that React is being loaded before create-react-class.'\n );\n}\n\n// Hack to grab NoopUpdateQueue from isomorphic React\nvar ReactNoopUpdateQueue = new React.Component().updater;\n\nmodule.exports = factory(\n React.Component,\n React.isValidElement,\n ReactNoopUpdateQueue\n);\n","/*!\n Copyright (c) 2015 Jed Watson.\n Based on code that is Copyright 2013-2015, Facebook, Inc.\n All rights reserved.\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar canUseDOM = !!(\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.document &&\n\t\twindow.document.createElement\n\t);\n\n\tvar ExecutionEnvironment = {\n\n\t\tcanUseDOM: canUseDOM,\n\n\t\tcanUseWorkers: typeof Worker !== 'undefined',\n\n\t\tcanUseEventListeners:\n\t\t\tcanUseDOM && !!(window.addEventListener || window.attachEvent),\n\n\t\tcanUseViewport: canUseDOM && !!window.screen\n\n\t};\n\n\tif (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\tdefine(function () {\n\t\t\treturn ExecutionEnvironment;\n\t\t});\n\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = ExecutionEnvironment;\n\t} else {\n\t\twindow.ExecutionEnvironment = ExecutionEnvironment;\n\t}\n\n}());\n","var isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tObject.keys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tObject.keys(source).forEach(function(key) {\n\t\tif (!options.isMergeableObject(source[key]) || !target[key]) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = deepmerge(target[key], source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nexport default deepmerge_1;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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 */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\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 */\nfunction 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\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\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 */\nvar nativeObjectToString = objectProto.toString;\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 */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\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 */\nfunction 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\nexport default baseGetTag;\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 */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\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 */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\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 */\nfunction 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\nexport default isPlainObject;\n","var isProduction = process.env.NODE_ENV === 'production';\nfunction warning(condition, message) {\n if (!isProduction) {\n if (condition) {\n return;\n }\n\n var text = \"Warning: \" + message;\n\n if (typeof console !== 'undefined') {\n console.warn(text);\n }\n\n try {\n throw Error(text);\n } catch (x) {}\n }\n}\n\nexport default warning;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\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 */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import eq from './eq.js';\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 */\nfunction 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\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\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 */\nfunction 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\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\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 */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\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 */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\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 */\nfunction 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\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction 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// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\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 */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\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 */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\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 */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\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 */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\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 */\nfunction 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\nexport default isFunction;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\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 */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\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 */\nfunction 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\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\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 */\nfunction 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\nexport default baseIsNative;\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 */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\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 */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\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 */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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 */\nfunction 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\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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 */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\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 */\nfunction 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\nexport default hashSet;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction 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// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\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 */\nfunction 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\nexport default isKeyable;\n","import isKeyable from './_isKeyable.js';\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 */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","import getMapData from './_getMapData.js';\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 */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\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 */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\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 */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\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 */\nfunction 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\nexport default mapCacheSet;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\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 */\nfunction 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// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\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 */\nfunction 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\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\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 */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\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 */\nfunction 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\nexport default arrayEach;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n","import defineProperty from './_defineProperty.js';\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 */\nfunction 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\nexport default baseAssignValue;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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 */\nfunction 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\nexport default assignValue;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\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 */\nfunction 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\nexport default copyObject;\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 */\nfunction 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\nexport default baseTimes;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\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 */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\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 */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\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 */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\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 */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\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 */\nfunction 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\nexport default isIndex;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\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 */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar 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 identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\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 */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\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 */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar 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\nexport default nodeUtil;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\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 */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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 */\nfunction 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\nexport default arrayLikeKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\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 */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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 */\nfunction 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\nexport default baseKeys;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\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 */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\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 */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","import copyObject from './_copyObject.js';\nimport keys from './keys.js';\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 */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\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 */\nfunction 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\nexport default nativeKeysIn;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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 */\nfunction 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\nexport default baseKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\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 */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\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 */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n","import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\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 */\nfunction 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\nexport default cloneBuffer;\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 */\nfunction 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\nexport default copyArray;\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 */\nfunction 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\nexport default arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\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 */\nvar 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\nexport default getSymbols;\n","import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\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 */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\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 */\nfunction 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\nexport default arrayPush;\n","import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\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 */\nvar 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\nexport default getSymbolsIn;\n","import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\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 */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\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 */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\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 */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\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 */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\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 */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((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\nexport default getTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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 */\nfunction 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\nexport default initCloneArray;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","import Uint8Array from './_Uint8Array.js';\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 */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nexport default cloneArrayBuffer;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\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 */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\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 */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nexport default cloneRegExp;\n","import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\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 */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\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 */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar 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/**\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 */\nfunction 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\nexport default initCloneByTag;\n","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\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 */\nvar 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\nexport default baseCreate;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\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 */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nexport default initCloneObject;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\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 */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n","import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\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 */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\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 */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n","import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\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 */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n","import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar 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 identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\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 */\nfunction 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\nexport default baseClone;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\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 */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nexport default clone;\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 */\nfunction 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\nexport default arrayMap;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\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 */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\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 */\nfunction 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`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\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 */\nfunction 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\nexport default memoizeCapped;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\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 */\nvar 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\nexport default stringToPath;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\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 */\nfunction 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\nexport default toKey;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\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 */\nfunction 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\nexport default baseToString;\n","import baseToString from './_baseToString.js';\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 */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import arrayMap from './_arrayMap.js';\nimport copyArray from './_copyArray.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\nimport stringToPath from './_stringToPath.js';\nimport toKey from './_toKey.js';\nimport toString from './toString.js';\n\n/**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\nfunction toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n}\n\nexport default toPath;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\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 */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nexport default cloneDeep;\n","import * as React from 'react';\nimport { FormikContextType } from './types';\nimport invariant from 'tiny-warning';\n\nexport const FormikContext = React.createContext>(\n undefined as any\n);\nFormikContext.displayName = 'FormikContext';\n\nexport const FormikProvider = FormikContext.Provider;\nexport const FormikConsumer = FormikContext.Consumer;\n\nexport function useFormikContext() {\n const formik = React.useContext>(FormikContext);\n\n invariant(\n !!formik,\n `Formik context is undefined, please verify you are calling useFormikContext() as child of a component.`\n );\n\n return formik;\n}\n","import clone from 'lodash/clone';\nimport toPath from 'lodash/toPath';\nimport * as React from 'react';\n\n// Assertions\n\n/** @private is the value an empty array? */\nexport const isEmptyArray = (value?: any) =>\n Array.isArray(value) && value.length === 0;\n\n/** @private is the given object a Function? */\nexport const isFunction = (obj: any): obj is Function =>\n typeof obj === 'function';\n\n/** @private is the given object an Object? */\nexport const isObject = (obj: any): obj is Object =>\n obj !== null && typeof obj === 'object';\n\n/** @private is the given object an integer? */\nexport const isInteger = (obj: any): boolean =>\n String(Math.floor(Number(obj))) === obj;\n\n/** @private is the given object a string? */\nexport const isString = (obj: any): obj is string =>\n Object.prototype.toString.call(obj) === '[object String]';\n\n/** @private is the given object a NaN? */\n// eslint-disable-next-line no-self-compare\nexport const isNaN = (obj: any): boolean => obj !== obj;\n\n/** @private Does a React component have exactly 0 children? */\nexport const isEmptyChildren = (children: any): boolean =>\n React.Children.count(children) === 0;\n\n/** @private is the given object/value a promise? */\nexport const isPromise = (value: any): value is PromiseLike =>\n isObject(value) && isFunction(value.then);\n\n/** @private is the given object/value a type of synthetic event? */\nexport const isInputEvent = (value: any): value is React.SyntheticEvent =>\n value && isObject(value) && isObject(value.target);\n\n/**\n * Same as document.activeElement but wraps in a try-catch block. In IE it is\n * not safe to call document.activeElement if there is nothing focused.\n *\n * The activeElement will be null only if the document or document body is not\n * yet defined.\n *\n * @param {?Document} doc Defaults to current document.\n * @return {Element | null}\n * @see https://github.com/facebook/fbjs/blob/master/packages/fbjs/src/core/dom/getActiveElement.js\n */\nexport function getActiveElement(doc?: Document): Element | null {\n doc = doc || (typeof document !== 'undefined' ? document : undefined);\n if (typeof doc === 'undefined') {\n return null;\n }\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\n\n/**\n * Deeply get a value from an object via its path.\n */\nexport function getIn(\n obj: any,\n key: string | string[],\n def?: any,\n p: number = 0\n) {\n const path = toPath(key);\n while (obj && p < path.length) {\n obj = obj[path[p++]];\n }\n\n // check if path is not in the end\n if (p !== path.length && !obj) {\n return def;\n }\n\n return obj === undefined ? def : obj;\n}\n\n/**\n * Deeply set a value from in object via it's path. If the value at `path`\n * has changed, return a shallow copy of obj with `value` set at `path`.\n * If `value` has not changed, return the original `obj`.\n *\n * Existing objects / arrays along `path` are also shallow copied. Sibling\n * objects along path retain the same internal js reference. Since new\n * objects / arrays are only created along `path`, we can test if anything\n * changed in a nested structure by comparing the object's reference in\n * the old and new object, similar to how russian doll cache invalidation\n * works.\n *\n * In earlier versions of this function, which used cloneDeep, there were\n * issues whereby settings a nested value would mutate the parent\n * instead of creating a new object. `clone` avoids that bug making a\n * shallow copy of the objects along the update path\n * so no object is mutated in place.\n *\n * Before changing this function, please read through the following\n * discussions.\n *\n * @see https://github.com/developit/linkstate\n * @see https://github.com/jaredpalmer/formik/pull/123\n */\nexport function setIn(obj: any, path: string, value: any): any {\n let res: any = clone(obj); // this keeps inheritance when obj is a class\n let resVal: any = res;\n let i = 0;\n let pathArray = toPath(path);\n\n for (; i < pathArray.length - 1; i++) {\n const currentPath: string = pathArray[i];\n let currentObj: any = getIn(obj, pathArray.slice(0, i + 1));\n\n if (currentObj && (isObject(currentObj) || Array.isArray(currentObj))) {\n resVal = resVal[currentPath] = clone(currentObj);\n } else {\n const nextPath: string = pathArray[i + 1];\n resVal = resVal[currentPath] =\n isInteger(nextPath) && Number(nextPath) >= 0 ? [] : {};\n }\n }\n\n // Return original object if new value is the same as current\n if ((i === 0 ? obj : resVal)[pathArray[i]] === value) {\n return obj;\n }\n\n if (value === undefined) {\n delete resVal[pathArray[i]];\n } else {\n resVal[pathArray[i]] = value;\n }\n\n // If the path array has a single element, the loop did not run.\n // Deleting on `resVal` had no effect in this scenario, so we delete on the result instead.\n if (i === 0 && value === undefined) {\n delete res[pathArray[i]];\n }\n\n return res;\n}\n\n/**\n * Recursively a set the same value for all keys and arrays nested object, cloning\n * @param object\n * @param value\n * @param visited\n * @param response\n */\nexport function setNestedObjectValues(\n object: any,\n value: any,\n visited: any = new WeakMap(),\n response: any = {}\n): T {\n for (let k of Object.keys(object)) {\n const val = object[k];\n if (isObject(val)) {\n if (!visited.get(val)) {\n visited.set(val, true);\n // In order to keep array values consistent for both dot path and\n // bracket syntax, we need to check if this is an array so that\n // this will output { friends: [true] } and not { friends: { \"0\": true } }\n response[k] = Array.isArray(val) ? [] : {};\n setNestedObjectValues(val, value, visited, response[k]);\n }\n } else {\n response[k] = value;\n }\n }\n\n return response;\n}\n","import deepmerge from 'deepmerge';\nimport isPlainObject from 'lodash/isPlainObject';\nimport * as React from 'react';\nimport isEqual from 'react-fast-compare';\nimport invariant from 'tiny-warning';\nimport { FieldConfig } from './Field';\nimport { FormikProvider } from './FormikContext';\nimport {\n FieldHelperProps,\n FieldInputProps,\n FieldMetaProps,\n FormikConfig,\n FormikErrors,\n FormikHandlers,\n FormikHelpers,\n FormikProps,\n FormikState,\n FormikTouched,\n FormikValues,\n} from './types';\nimport {\n getActiveElement,\n getIn,\n isEmptyChildren,\n isFunction,\n isObject,\n isPromise,\n isString,\n setIn,\n setNestedObjectValues,\n} from './utils';\n\ntype FormikMessage =\n | { type: 'SUBMIT_ATTEMPT' }\n | { type: 'SUBMIT_FAILURE' }\n | { type: 'SUBMIT_SUCCESS' }\n | { type: 'SET_ISVALIDATING'; payload: boolean }\n | { type: 'SET_ISSUBMITTING'; payload: boolean }\n | { type: 'SET_VALUES'; payload: Values }\n | { type: 'SET_FIELD_VALUE'; payload: { field: string; value?: any } }\n | { type: 'SET_FIELD_TOUCHED'; payload: { field: string; value?: boolean } }\n | { type: 'SET_FIELD_ERROR'; payload: { field: string; value?: string } }\n | { type: 'SET_TOUCHED'; payload: FormikTouched }\n | { type: 'SET_ERRORS'; payload: FormikErrors }\n | { type: 'SET_STATUS'; payload: any }\n | {\n type: 'SET_FORMIK_STATE';\n payload: (s: FormikState) => FormikState;\n }\n | {\n type: 'RESET_FORM';\n payload: FormikState;\n };\n\n// State reducer\nfunction formikReducer(\n state: FormikState,\n msg: FormikMessage\n) {\n switch (msg.type) {\n case 'SET_VALUES':\n return { ...state, values: msg.payload };\n case 'SET_TOUCHED':\n return { ...state, touched: msg.payload };\n case 'SET_ERRORS':\n if (isEqual(state.errors, msg.payload)) {\n return state;\n }\n\n return { ...state, errors: msg.payload };\n case 'SET_STATUS':\n return { ...state, status: msg.payload };\n case 'SET_ISSUBMITTING':\n return { ...state, isSubmitting: msg.payload };\n case 'SET_ISVALIDATING':\n return { ...state, isValidating: msg.payload };\n case 'SET_FIELD_VALUE':\n return {\n ...state,\n values: setIn(state.values, msg.payload.field, msg.payload.value),\n };\n case 'SET_FIELD_TOUCHED':\n return {\n ...state,\n touched: setIn(state.touched, msg.payload.field, msg.payload.value),\n };\n case 'SET_FIELD_ERROR':\n return {\n ...state,\n errors: setIn(state.errors, msg.payload.field, msg.payload.value),\n };\n case 'RESET_FORM':\n return { ...state, ...msg.payload };\n case 'SET_FORMIK_STATE':\n return msg.payload(state);\n case 'SUBMIT_ATTEMPT':\n return {\n ...state,\n touched: setNestedObjectValues>(\n state.values,\n true\n ),\n isSubmitting: true,\n submitCount: state.submitCount + 1,\n };\n case 'SUBMIT_FAILURE':\n return {\n ...state,\n isSubmitting: false,\n };\n case 'SUBMIT_SUCCESS':\n return {\n ...state,\n isSubmitting: false,\n };\n default:\n return state;\n }\n}\n\n// Initial empty states // objects\nconst emptyErrors: FormikErrors = {};\nconst emptyTouched: FormikTouched = {};\n\n// This is an object that contains a map of all registered fields\n// and their validate functions\ninterface FieldRegistry {\n [field: string]: {\n validate: (value: any) => string | Promise | undefined;\n };\n}\n\nexport function useFormik({\n validateOnChange = true,\n validateOnBlur = true,\n validateOnMount = false,\n isInitialValid,\n enableReinitialize = false,\n onSubmit,\n ...rest\n}: FormikConfig) {\n const props = {\n validateOnChange,\n validateOnBlur,\n validateOnMount,\n onSubmit,\n ...rest,\n };\n const initialValues = React.useRef(props.initialValues);\n const initialErrors = React.useRef(props.initialErrors || emptyErrors);\n const initialTouched = React.useRef(props.initialTouched || emptyTouched);\n const initialStatus = React.useRef(props.initialStatus);\n const isMounted = React.useRef(false);\n const fieldRegistry = React.useRef({});\n if (__DEV__) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n invariant(\n typeof isInitialValid === 'undefined',\n 'isInitialValid has been deprecated and will be removed in future versions of Formik. Please use initialErrors or validateOnMount instead.'\n );\n // eslint-disable-next-line\n }, []);\n }\n\n React.useEffect(() => {\n isMounted.current = true;\n\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n const [, setIteration] = React.useState(0);\n const stateRef = React.useRef>({\n values: props.initialValues,\n errors: props.initialErrors || emptyErrors,\n touched: props.initialTouched || emptyTouched,\n status: props.initialStatus,\n isSubmitting: false,\n isValidating: false,\n submitCount: 0,\n });\n\n const state = stateRef.current;\n\n const dispatch = React.useCallback((action: FormikMessage) => {\n const prev = stateRef.current;\n\n stateRef.current = formikReducer(prev, action);\n\n // force rerender\n if (prev !== stateRef.current) setIteration(x => x + 1);\n }, []);\n\n const runValidateHandler = React.useCallback(\n (values: Values, field?: string): Promise> => {\n return new Promise((resolve, reject) => {\n const maybePromisedErrors = (props.validate as any)(values, field);\n if (maybePromisedErrors == null) {\n // use loose null check here on purpose\n resolve(emptyErrors);\n } else if (isPromise(maybePromisedErrors)) {\n (maybePromisedErrors as Promise).then(\n errors => {\n resolve(errors || emptyErrors);\n },\n actualException => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Warning: An unhandled error was caught during validation in `,\n actualException\n );\n }\n\n reject(actualException);\n }\n );\n } else {\n resolve(maybePromisedErrors);\n }\n });\n },\n [props.validate]\n );\n\n /**\n * Run validation against a Yup schema and optionally run a function if successful\n */\n const runValidationSchema = React.useCallback(\n (values: Values, field?: string): Promise> => {\n const validationSchema = props.validationSchema;\n const schema = isFunction(validationSchema)\n ? validationSchema(field)\n : validationSchema;\n const promise =\n field && schema.validateAt\n ? schema.validateAt(field, values)\n : validateYupSchema(values, schema);\n return new Promise((resolve, reject) => {\n promise.then(\n () => {\n resolve(emptyErrors);\n },\n (err: any) => {\n // Yup will throw a validation error if validation fails. We catch those and\n // resolve them into Formik errors. We can sniff if something is a Yup error\n // by checking error.name.\n // @see https://github.com/jquense/yup#validationerrorerrors-string--arraystring-value-any-path-string\n if (err.name === 'ValidationError') {\n resolve(yupToFormErrors(err));\n } else {\n // We throw any other errors\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Warning: An unhandled error was caught during validation in `,\n err\n );\n }\n\n reject(err);\n }\n }\n );\n });\n },\n [props.validationSchema]\n );\n\n const runSingleFieldLevelValidation = React.useCallback(\n (field: string, value: void | string): Promise => {\n return new Promise(resolve =>\n resolve(fieldRegistry.current[field].validate(value) as string)\n );\n },\n []\n );\n\n const runFieldLevelValidations = React.useCallback(\n (values: Values): Promise> => {\n const fieldKeysWithValidation: string[] = Object.keys(\n fieldRegistry.current\n ).filter(f => isFunction(fieldRegistry.current[f].validate));\n\n // Construct an array with all of the field validation functions\n const fieldValidations: Promise[] =\n fieldKeysWithValidation.length > 0\n ? fieldKeysWithValidation.map(f =>\n runSingleFieldLevelValidation(f, getIn(values, f))\n )\n : [Promise.resolve('DO_NOT_DELETE_YOU_WILL_BE_FIRED')]; // use special case ;)\n\n return Promise.all(fieldValidations).then((fieldErrorsList: string[]) =>\n fieldErrorsList.reduce((prev, curr, index) => {\n if (curr === 'DO_NOT_DELETE_YOU_WILL_BE_FIRED') {\n return prev;\n }\n if (curr) {\n prev = setIn(prev, fieldKeysWithValidation[index], curr);\n }\n return prev;\n }, {})\n );\n },\n [runSingleFieldLevelValidation]\n );\n\n // Run all validations and return the result\n const runAllValidations = React.useCallback(\n (values: Values) => {\n return Promise.all([\n runFieldLevelValidations(values),\n props.validationSchema ? runValidationSchema(values) : {},\n props.validate ? runValidateHandler(values) : {},\n ]).then(([fieldErrors, schemaErrors, validateErrors]) => {\n const combinedErrors = deepmerge.all>(\n [fieldErrors, schemaErrors, validateErrors],\n { arrayMerge }\n );\n return combinedErrors;\n });\n },\n [\n props.validate,\n props.validationSchema,\n runFieldLevelValidations,\n runValidateHandler,\n runValidationSchema,\n ]\n );\n\n // Run all validations methods and update state accordingly\n const validateFormWithHighPriority = useEventCallback(\n (values: Values = state.values) => {\n dispatch({ type: 'SET_ISVALIDATING', payload: true });\n return runAllValidations(values).then(combinedErrors => {\n if (!!isMounted.current) {\n dispatch({ type: 'SET_ISVALIDATING', payload: false });\n dispatch({ type: 'SET_ERRORS', payload: combinedErrors });\n }\n return combinedErrors;\n });\n }\n );\n\n React.useEffect(() => {\n if (\n validateOnMount &&\n isMounted.current === true &&\n isEqual(initialValues.current, props.initialValues)\n ) {\n validateFormWithHighPriority(initialValues.current);\n }\n }, [validateOnMount, validateFormWithHighPriority]);\n\n const resetForm = React.useCallback(\n (nextState?: Partial>) => {\n const values =\n nextState && nextState.values\n ? nextState.values\n : initialValues.current;\n const errors =\n nextState && nextState.errors\n ? nextState.errors\n : initialErrors.current\n ? initialErrors.current\n : props.initialErrors || {};\n const touched =\n nextState && nextState.touched\n ? nextState.touched\n : initialTouched.current\n ? initialTouched.current\n : props.initialTouched || {};\n const status =\n nextState && nextState.status\n ? nextState.status\n : initialStatus.current\n ? initialStatus.current\n : props.initialStatus;\n initialValues.current = values;\n initialErrors.current = errors;\n initialTouched.current = touched;\n initialStatus.current = status;\n\n const dispatchFn = () => {\n dispatch({\n type: 'RESET_FORM',\n payload: {\n isSubmitting: !!nextState && !!nextState.isSubmitting,\n errors,\n touched,\n status,\n values,\n isValidating: !!nextState && !!nextState.isValidating,\n submitCount:\n !!nextState &&\n !!nextState.submitCount &&\n typeof nextState.submitCount === 'number'\n ? nextState.submitCount\n : 0,\n },\n });\n };\n\n if (props.onReset) {\n const maybePromisedOnReset = (props.onReset as any)(\n state.values,\n imperativeMethods\n );\n\n if (isPromise(maybePromisedOnReset)) {\n (maybePromisedOnReset as Promise).then(dispatchFn);\n } else {\n dispatchFn();\n }\n } else {\n dispatchFn();\n }\n },\n [props.initialErrors, props.initialStatus, props.initialTouched, props.onReset]\n );\n\n React.useEffect(() => {\n if (\n isMounted.current === true &&\n !isEqual(initialValues.current, props.initialValues)\n ) {\n if (enableReinitialize) {\n initialValues.current = props.initialValues;\n resetForm();\n if (validateOnMount) {\n validateFormWithHighPriority(initialValues.current);\n }\n }\n }\n }, [\n enableReinitialize,\n props.initialValues,\n resetForm,\n validateOnMount,\n validateFormWithHighPriority,\n ]);\n\n React.useEffect(() => {\n if (\n enableReinitialize &&\n isMounted.current === true &&\n !isEqual(initialErrors.current, props.initialErrors)\n ) {\n initialErrors.current = props.initialErrors || emptyErrors;\n dispatch({\n type: 'SET_ERRORS',\n payload: props.initialErrors || emptyErrors,\n });\n }\n }, [enableReinitialize, props.initialErrors]);\n\n React.useEffect(() => {\n if (\n enableReinitialize &&\n isMounted.current === true &&\n !isEqual(initialTouched.current, props.initialTouched)\n ) {\n initialTouched.current = props.initialTouched || emptyTouched;\n dispatch({\n type: 'SET_TOUCHED',\n payload: props.initialTouched || emptyTouched,\n });\n }\n }, [enableReinitialize, props.initialTouched]);\n\n React.useEffect(() => {\n if (\n enableReinitialize &&\n isMounted.current === true &&\n !isEqual(initialStatus.current, props.initialStatus)\n ) {\n initialStatus.current = props.initialStatus;\n dispatch({\n type: 'SET_STATUS',\n payload: props.initialStatus,\n });\n }\n }, [enableReinitialize, props.initialStatus, props.initialTouched]);\n\n const validateField = useEventCallback((name: string) => {\n // This will efficiently validate a single field by avoiding state\n // changes if the validation function is synchronous. It's different from\n // what is called when using validateForm.\n\n if (\n fieldRegistry.current[name] &&\n isFunction(fieldRegistry.current[name].validate)\n ) {\n const value = getIn(state.values, name);\n const maybePromise = fieldRegistry.current[name].validate(value);\n if (isPromise(maybePromise)) {\n // Only flip isValidating if the function is async.\n dispatch({ type: 'SET_ISVALIDATING', payload: true });\n return maybePromise\n .then((x: any) => x)\n .then((error: string) => {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: { field: name, value: error },\n });\n dispatch({ type: 'SET_ISVALIDATING', payload: false });\n });\n } else {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: {\n field: name,\n value: maybePromise as string | undefined,\n },\n });\n return Promise.resolve(maybePromise as string | undefined);\n }\n } else if (props.validationSchema) {\n dispatch({ type: 'SET_ISVALIDATING', payload: true });\n return runValidationSchema(state.values, name)\n .then((x: any) => x)\n .then((error: any) => {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: { field: name, value: getIn(error, name) },\n });\n dispatch({ type: 'SET_ISVALIDATING', payload: false });\n });\n }\n\n return Promise.resolve();\n });\n\n const registerField = React.useCallback((name: string, { validate }: any) => {\n fieldRegistry.current[name] = {\n validate,\n };\n }, []);\n\n const unregisterField = React.useCallback((name: string) => {\n delete fieldRegistry.current[name];\n }, []);\n\n const setTouched = useEventCallback(\n (touched: FormikTouched, shouldValidate?: boolean) => {\n dispatch({ type: 'SET_TOUCHED', payload: touched });\n const willValidate =\n shouldValidate === undefined ? validateOnBlur : shouldValidate;\n return willValidate\n ? validateFormWithHighPriority(state.values)\n : Promise.resolve();\n }\n );\n\n const setErrors = React.useCallback((errors: FormikErrors) => {\n dispatch({ type: 'SET_ERRORS', payload: errors });\n }, []);\n\n const setValues = useEventCallback(\n (values: React.SetStateAction, shouldValidate?: boolean) => {\n const resolvedValues = isFunction(values) ? values(state.values) : values;\n\n dispatch({ type: 'SET_VALUES', payload: resolvedValues });\n const willValidate =\n shouldValidate === undefined ? validateOnChange : shouldValidate;\n return willValidate\n ? validateFormWithHighPriority(resolvedValues)\n : Promise.resolve();\n }\n );\n\n const setFieldError = React.useCallback(\n (field: string, value: string | undefined) => {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: { field, value },\n });\n },\n []\n );\n\n const setFieldValue = useEventCallback(\n (field: string, value: any, shouldValidate?: boolean) => {\n dispatch({\n type: 'SET_FIELD_VALUE',\n payload: {\n field,\n value,\n },\n });\n const willValidate =\n shouldValidate === undefined ? validateOnChange : shouldValidate;\n return willValidate\n ? validateFormWithHighPriority(setIn(state.values, field, value))\n : Promise.resolve();\n }\n );\n\n const executeChange = React.useCallback(\n (eventOrTextValue: string | React.ChangeEvent, maybePath?: string) => {\n // By default, assume that the first argument is a string. This allows us to use\n // handleChange with React Native and React Native Web's onChangeText prop which\n // provides just the value of the input.\n let field = maybePath;\n let val = eventOrTextValue;\n let parsed;\n // If the first argument is not a string though, it has to be a synthetic React Event (or a fake one),\n // so we handle like we would a normal HTML change event.\n if (!isString(eventOrTextValue)) {\n // If we can, persist the event\n // @see https://reactjs.org/docs/events.html#event-pooling\n if ((eventOrTextValue as any).persist) {\n (eventOrTextValue as React.ChangeEvent).persist();\n }\n const target = eventOrTextValue.target\n ? (eventOrTextValue as React.ChangeEvent).target\n : (eventOrTextValue as React.ChangeEvent).currentTarget;\n\n const {\n type,\n name,\n id,\n value,\n checked,\n outerHTML,\n options,\n multiple,\n } = target;\n\n field = maybePath ? maybePath : name ? name : id;\n if (!field && __DEV__) {\n warnAboutMissingIdentifier({\n htmlContent: outerHTML,\n documentationAnchorLink: 'handlechange-e-reactchangeeventany--void',\n handlerName: 'handleChange',\n });\n }\n val = /number|range/.test(type)\n ? ((parsed = parseFloat(value)), isNaN(parsed) ? '' : parsed)\n : /checkbox/.test(type) // checkboxes\n ? getValueForCheckbox(getIn(state.values, field!), checked, value)\n : options && multiple // \" +\n\t\t\t\"\";\n\n\t\t// Support: iOS <=7 - 8 only\n\t\t// Boolean attributes and \"value\" are not treated correctly in some XML documents\n\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t}\n\n\t\t// Support: iOS <=7 - 8 only\n\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\trbuggyQSA.push( \"~=\" );\n\t\t}\n\n\t\t// Support: iOS 8 only\n\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t}\n\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\trbuggyQSA.push( \":checked\" );\n\t\t}\n\n\t\t// Support: Windows 8 Native Apps\n\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tdocumentElement.appendChild( el ).disabled = true;\n\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t}\n\n\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t// Adding a temporary attribute to the document before the selection works\n\t\t// around the issue.\n\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"name\", \"\" );\n\t\tel.appendChild( input );\n\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t}\n\t} );\n\n\tif ( !support.cssHas ) {\n\n\t\t// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n\t\t// Our regular `try-catch` mechanism fails to detect natively-unsupported\n\t\t// pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n\t\t// in browsers that parse the `:has()` argument as a forgiving selector list.\n\t\t// https://drafts.csswg.org/selectors/#relational now requires the argument\n\t\t// to be parsed unforgivingly, but browsers have not yet fully adjusted.\n\t\trbuggyQSA.push( \":has\" );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = function( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a === document || a.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b === document || b.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t};\n\n\treturn document;\n}\n\nfind.matches = function( expr, elements ) {\n\treturn find( expr, null, null, elements );\n};\n\nfind.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn find( expr, document, null, [ elem ] ).length > 0;\n};\n\nfind.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn jQuery.contains( context, elem );\n};\n\n\nfind.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (see trac-13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\tif ( val !== undefined ) {\n\t\treturn val;\n\t}\n\n\treturn elem.getAttribute( name );\n};\n\nfind.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\njQuery.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\t//\n\t// Support: Android <=4.0+\n\t// Testing for detecting duplicates is unpredictable so instead assume we can't\n\t// depend on duplicate detection in all browsers without a stable sort.\n\thasDuplicate = !support.sortStable;\n\tsortInput = !support.sortStable && slice.call( results, 0 );\n\tsort.call( results, sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tsplice.call( results, duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\njQuery.fn.uniqueSort = function() {\n\treturn this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );\n};\n\nExpr = jQuery.expr = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\tATTR: function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || \"\" )\n\t\t\t\t.replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\tCHILD: function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" )\n\t\t\t\t);\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr.CHILD.test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\tTAG: function( nodeNameSelector ) {\n\t\t\tvar expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn nodeName( elem, expectedNodeName );\n\t\t\t\t};\n\t\t},\n\n\t\tCLASS: function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace + \")\" + className +\n\t\t\t\t\t\"(\" + whitespace + \"|$)\" ) ) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\tATTR: function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = find.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\tif ( operator === \"=\" ) {\n\t\t\t\t\treturn result === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"!=\" ) {\n\t\t\t\t\treturn result !== check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"^=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) === 0;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"*=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"$=\" ) {\n\t\t\t\t\treturn check && result.slice( -check.length ) === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"~=\" ) {\n\t\t\t\t\treturn ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" )\n\t\t\t\t\t\t.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"|=\" ) {\n\t\t\t\t\treturn result === check || result.slice( 0, check.length + 1 ) === check + \"-\";\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t};\n\t\t},\n\n\t\tCHILD: function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || ( parent[ expando ] = {} );\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\t\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\t\t\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\tPSEUDO: function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// https://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tfind.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as jQuery does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\tnot: markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrimCSS, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element\n\t\t\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\thas: markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn find( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\tcontains: markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// https://www.w3.org/TR/selectors/#lang-pseudo\n\t\tlang: markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tfind.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\ttarget: function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\troot: function( elem ) {\n\t\t\treturn elem === documentElement;\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === safeActiveElement() &&\n\t\t\t\tdocument.hasFocus() &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\tenabled: createDisabledPseudo( false ),\n\t\tdisabled: createDisabledPseudo( true ),\n\n\t\tchecked: function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\treturn ( nodeName( elem, \"input\" ) && !!elem.checked ) ||\n\t\t\t\t( nodeName( elem, \"option\" ) && !!elem.selected );\n\t\t},\n\n\t\tselected: function( elem ) {\n\n\t\t\t// Support: IE <=11+\n\t\t\t// Accessing the selectedIndex property\n\t\t\t// forces the browser to treat the default option as\n\t\t\t// selected when in an optgroup.\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\tempty: function( elem ) {\n\n\t\t\t// https://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !Expr.pseudos.empty( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\theader: function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"button\" ||\n\t\t\t\tnodeName( elem, \"button\" );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"text\" &&\n\n\t\t\t\t// Support: IE <10 only\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear\n\t\t\t\t// with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\tfirst: createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\tlast: createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\teq: createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\teven: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\todd: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tlt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i;\n\n\t\t\tif ( argument < 0 ) {\n\t\t\t\ti = argument + length;\n\t\t\t} else if ( argument > length ) {\n\t\t\t\ti = length;\n\t\t\t} else {\n\t\t\t\ti = argument;\n\t\t\t}\n\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tgt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos.nth = Expr.pseudos.eq;\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rleadingCombinator.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrimCSS, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\tif ( parseOnly ) {\n\t\treturn soFar.length;\n\t}\n\n\treturn soFar ?\n\t\tfind.error( selector ) :\n\n\t\t// Cache the tokens\n\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\tif ( skip && nodeName( elem, skip ) ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = outerCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tfind( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem, matcherOut,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed ||\n\t\t\t\tmultipleContexts( selector || \"*\",\n\t\t\t\t\tcontext.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems;\n\n\t\tif ( matcher ) {\n\n\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter\n\t\t\t// or preexisting results,\n\t\t\tmatcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t[] :\n\n\t\t\t\t// ...otherwise use results directly\n\t\t\t\tresults;\n\n\t\t\t// Find primary matches\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t} else {\n\t\t\tmatcherOut = matcherIn;\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tvar ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element\n\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 )\n\t\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrimCSS, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find.TAG( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: iOS <=7 - 9 only\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching\n\t\t\t// elements by id. (see trac-14142)\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tjQuery.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\nfunction compile( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n}\n\n/**\n * A low-level selection function that works with jQuery's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nfunction select( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find.ID(\n\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\tcontext\n\t\t\t) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr.needsContext.test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) &&\n\t\t\t\t\t\ttestContext( context.parentNode ) || context\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n}\n\n// One-time assignments\n\n// Support: Android <=4.0 - 4.1+\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Android <=4.0 - 4.1+\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\njQuery.find = find;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.unique = jQuery.uniqueSort;\n\n// These have always been private, but they used to be documented as part of\n// Sizzle so let's maintain them for now for backwards compatibility purposes.\nfind.compile = compile;\nfind.select = select;\nfind.setDocument = setDocument;\nfind.tokenize = tokenize;\n\nfind.escape = jQuery.escapeSelector;\nfind.getText = jQuery.text;\nfind.isXML = jQuery.isXMLDoc;\nfind.selectors = jQuery.expr;\nfind.support = jQuery.support;\nfind.uniqueSort = jQuery.uniqueSort;\n\n\t/* eslint-enable */\n\n} )();\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to jQuery#find\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.error );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the error, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getErrorHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getErrorHook();\n\n\t\t\t\t\t\t\t\t// The deprecated alias of the above. While the name suggests\n\t\t\t\t\t\t\t\t// returning the stack, not an error instance, jQuery just passes\n\t\t\t\t\t\t\t\t// it directly to `console.warn` so both will work; an instance\n\t\t\t\t\t\t\t\t// just better cooperates with source maps.\n\t\t\t\t\t\t\t\t} else if ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n// captured before the async barrier to get the original error cause\n// which may otherwise be hidden.\njQuery.Deferred.exceptionHook = function( error, asyncError ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message,\n\t\t\terror.stack, asyncError );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
    \" ],\n\tcol: [ 2, \"\", \"
    \" ],\n\ttr: [ 2, \"\", \"
    \" ],\n\ttd: [ 3, \"\", \"
    \" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", true );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, isSetup ) {\n\n\t// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !isSetup ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\tif ( !saved ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tdataPriv.set( this, type, false );\n\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering\n\t\t\t\t// the native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, jQuery.event.trigger(\n\t\t\t\t\tsaved[ 0 ],\n\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\tthis\n\t\t\t\t) );\n\n\t\t\t\t// Abort handling of the native event by all jQuery handlers while allowing\n\t\t\t\t// native handlers on the same element to run. On target, this is achieved\n\t\t\t\t// by stopping immediate propagation just on the jQuery event. However,\n\t\t\t\t// the native event is re-wrapped by a jQuery one on each level of the\n\t\t\t\t// propagation so the only way to stop it for jQuery is to stop it for\n\t\t\t\t// everyone via native `stopPropagation()`. This is not a problem for\n\t\t\t\t// focus/blur which don't bubble, but it does also stop click on checkboxes\n\t\t\t\t// and radios. We accept this limitation.\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.isImmediatePropagationStopped = returnTrue;\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (trac-504, trac-13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\n\tfunction focusMappedHandler( nativeEvent ) {\n\t\tif ( document.documentMode ) {\n\n\t\t\t// Support: IE 11+\n\t\t\t// Attach a single focusin/focusout handler on the document while someone wants\n\t\t\t// focus/blur. This is because the former are synchronous in IE while the latter\n\t\t\t// are async. In other browsers, all those handlers are invoked synchronously.\n\n\t\t\t// `handle` from private data would already wrap the event, but we need\n\t\t\t// to change the `type` here.\n\t\t\tvar handle = dataPriv.get( this, \"handle\" ),\n\t\t\t\tevent = jQuery.event.fix( nativeEvent );\n\t\t\tevent.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n\t\t\tevent.isSimulated = true;\n\n\t\t\t// First, handle focusin/focusout\n\t\t\thandle( nativeEvent );\n\n\t\t\t// ...then, handle focus/blur\n\t\t\t//\n\t\t\t// focus/blur don't bubble while focusin/focusout do; simulate the former by only\n\t\t\t// invoking the handler at the lower level.\n\t\t\tif ( event.target === event.currentTarget ) {\n\n\t\t\t\t// The setup part calls `leverageNative`, which, in turn, calls\n\t\t\t\t// `jQuery.event.add`, so event handle will already have been set\n\t\t\t\t// by this point.\n\t\t\t\thandle( event );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// For non-IE browsers, attach a single capturing handler on the document\n\t\t\t// while someone wants focusin/focusout.\n\t\t\tjQuery.event.simulate( delegateType, nativeEvent.target,\n\t\t\t\tjQuery.event.fix( nativeEvent ) );\n\t\t}\n\t}\n\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\tvar attaches;\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, true );\n\n\t\t\tif ( document.documentMode ) {\n\n\t\t\t\t// Support: IE 9 - 11+\n\t\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\t\tattaches = dataPriv.get( this, delegateType );\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t}\n\t\t\t\tdataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );\n\t\t\t} else {\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tvar attaches;\n\n\t\t\tif ( document.documentMode ) {\n\t\t\t\tattaches = dataPriv.get( this, delegateType ) - 1;\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t\tdataPriv.remove( this, delegateType );\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.set( this, delegateType, attaches );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Return false to indicate standard teardown should be applied\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n\n\t// Support: Firefox <=44\n\t// Firefox doesn't have focus(in | out) events\n\t// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\t//\n\t// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n\t// focus(in | out) events fire after focus & blur events,\n\t// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n\t// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n\t//\n\t// Support: IE 9 - 11+\n\t// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,\n\t// attach a single handler for both events in IE.\n\tjQuery.event.special[ delegateType ] = {\n\t\tsetup: function() {\n\n\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType );\n\n\t\t\t// Support: IE 9 - 11+\n\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.addEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\tdataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );\n\t\t},\n\t\tteardown: function() {\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType ) - 1;\n\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.removeEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( dataHolder, delegateType );\n\t\t\t} else {\n\t\t\t\tdataPriv.set( dataHolder, delegateType, attaches );\n\t\t\t}\n\t\t}\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (trac-8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Re-enable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew jQuery#find here for performance reasons:\n\t\t\t// https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (trac-8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"box-sizing:content-box;border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is `display: block`\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tisCustomProp = rcustomProp.test( name ),\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, trac-12537)\n\t// .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\n\t\t// Support: IE <=9 - 11+\n\t\t// IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n\t\t// it's only available as `\"cssFloat\"`. We no longer modify properties\n\t\t// sent to `.css()` apart from camelCasing, so we need to check both.\n\t\t// Normally, this would create difference in behavior: if\n\t\t// `getPropertyValue` returns an empty string, the value returned\n\t\t// by `.css()` would be `undefined`. This is usually the case for\n\t\t// disconnected elements. However, in IE even disconnected elements\n\t\t// with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( isCustomProp && ret ) {\n\n\t\t\t// Support: Firefox 105+, Chrome <=105+\n\t\t\t// Spec requires trimming whitespace for custom properties (gh-4926).\n\t\t\t// Firefox only trims leading whitespace. Chrome just collapses\n\t\t\t// both leading & trailing whitespace to a single space.\n\t\t\t//\n\t\t\t// Fall back to `undefined` if empty string returned.\n\t\t\t// This collapses a missing definition with property defined\n\t\t\t// and set to an empty string but there's no standard API\n\t\t\t// allowing us to differentiate them without a performance penalty\n\t\t\t// and returning `undefined` aligns with older jQuery.\n\t\t\t//\n\t\t\t// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" ) || undefined;\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0,\n\t\tmarginDelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\t// Count margin delta separately to only add it after scroll gutter adjustment.\n\t\t// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n\t\tif ( box === \"margin\" ) {\n\t\t\tmarginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta + marginDelta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\tanimationIterationCount: true,\n\t\taspectRatio: true,\n\t\tborderImageSlice: true,\n\t\tcolumnCount: true,\n\t\tflexGrow: true,\n\t\tflexShrink: true,\n\t\tfontWeight: true,\n\t\tgridArea: true,\n\t\tgridColumn: true,\n\t\tgridColumnEnd: true,\n\t\tgridColumnStart: true,\n\t\tgridRow: true,\n\t\tgridRowEnd: true,\n\t\tgridRowStart: true,\n\t\tlineHeight: true,\n\t\topacity: true,\n\t\torder: true,\n\t\torphans: true,\n\t\tscale: true,\n\t\twidows: true,\n\t\tzIndex: true,\n\t\tzoom: true,\n\n\t\t// SVG-related\n\t\tfillOpacity: true,\n\t\tfloodOpacity: true,\n\t\tstopOpacity: true,\n\t\tstrokeMiterlimit: true,\n\t\tstrokeOpacity: true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (trac-2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// trac-1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"