{"version":3,"file":"main.js","mappings":"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Aa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,GAAI,UAAW,CAAC,GAAI,WAAY,CAAC,GAAI,YAAa,CAAC,GAAI,WAAY,CAAC,IAAK,UAAW,CAAC,EAAG,WAAY,CAAC,GAAI,WAAY,CAAC,EAAG,oBAAqB,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,sBAAuB,CAAC,EAAG,WAAY,CAAC,GAAI,eAAgB,CAAC,IAAK,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,aAAc,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,QAAS,CAAC,EAAG,QAAS,CAAC,EAAG,QAAS,CAAC,EAAG,aAAc,CAAC,EAAG,QAAS,CAAC,EAAG,SAAU,CAAC,EAAG,WAAY,CAAC,EAAG,SAAU,CAAC,EAAG,aAAc,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,QAAS,CAAC,EAAG,QAAS,CAAC,EAAG,QAAS,CAAC,EAAG,aAAc,CAAC,EAAG,QAAS,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,WAAY,CAAC,EAAG,cAAe,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,aAAc,CAAC,GAAI,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,iBAAkB,CAAC,GAAI,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,KAAM,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,eAAgB,CAAC,EAAG,YAAa,CAAC,EAAG,yBAA0B,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,qBAAsB,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,2BAA4B,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,aAAc,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,eAAgB,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,GAAI,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,CAAE1sC,EAAG,gBAAiBzQ,EAAG,KAAMm9C,EAAG,iBAAmB,CAAC,EAAG,aAAc,CAAC,EAAG,QAAS,CAAC,EAAG,oBAAqB,CAAC,EAAG,QAAS,CAAC,GAAI,UAAW,CAAC,GAAI,UAAW,CAAC,EAAG,YAAa,CAAC,GAAI,eAAgB,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,aAAc,CAAC,EAAG,UAAW,CAAC,EAAG,cAAe,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,cAAe,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,aAAc,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,QAAS,CAAC,EAAG,WAAY,CAAC,EAAG,cAAe,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,aAAc,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,gBAAiB,CAAC,EAAG,eAAgB,CAAC,EAAG,WAAY,CAAC,EAAG,aAAc,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,GAAI,0BAA2B,CAAC,EAAG,QAAS,CAAC,EAAG,QAAS,CAAC,EAAG,QAAS,CAAC,GAAI,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,GAAI,UAAW,CAAC,EAAG,kBAAmB,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,iBAAkB,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,qBAAsB,CAAC,EAAG,oBAAqB,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,CAAE1sC,EAAG,UAAWzQ,EAAG,IAAKm9C,EAAG,aAAe,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,kBAAmB,CAAC,EAAG,cAAe,CAAC,EAAG,SAAU,CAAC,EAAG,kBAAmB,CAAC,EAAG,mBAAoB,CAAC,EAAG,oBAAqB,CAAC,EAAG,YAAa,CAAC,EAAG,oBAAqB,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,qBAAsB,CAAC,EAAG,sBAAuB,CAAC,EAAG,mBAAoB,CAAC,EAAG,oBAAqB,CAAC,EAAG,mBAAoB,CAAC,EAAG,kBAAmB,CAAC,EAAG,WAAY,CAAC,EAAG,qBAAsB,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,yBAA0B,CAAC,EAAG,WAAY,CAAC,EAAG,yBAA0B,CAAC,EAAG,oBAAqB,CAAC,EAAG,gBAAiB,CAAC,EAAG,sBAAuB,CAAC,EAAG,WAAY,CAAC,EAAG,uBAAwB,CAAC,EAAG,iBAAkB,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,qBAAsB,CAAC,EAAG,mBAAoB,CAAC,EAAG,sBAAuB,CAAC,EAAG,UAAW,CAAC,EAAG,0BAA2B,CAAC,EAAG,uBAAwB,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,aAAc,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,GAAI,sBAAuB,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,CAAE1sC,EAAG,SAAUzQ,EAAG,IAAKm9C,EAAG,YAAc,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,SAAU,CAAC,EAAG,aAAc,CAAC,EAAG,gBAAiB,CAAC,EAAG,QAAS,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,WAAY,CAAC,EAAG,eAAgB,CAAC,EAAG,aAAc,CAAC,EAAG,eAAgB,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,CAAE1sC,EAAG,QAASzQ,EAAG,KAAMm9C,EAAG,WAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,uBAAwB,CAAC,EAAG,0BAA2B,CAAC,EAAG,SAAU,CAAC,EAAG,QAAS,CAAC,EAAG,CAAE1sC,EAAG,QAASzQ,EAAG,MAAOm9C,EAAG,WAAa,CAAC,EAAG,CAAE1sC,EAAG,QAASzQ,EAAG,MAAOm9C,EAAG,WAAa,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,aAAc,CAAC,EAAG,WAAY,CAAC,EAAG,8BAA+B,CAAC,EAAG,cAAe,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,cAAe,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,CAAE1sC,EAAG,QAASzQ,EAAG,KAAMm9C,EAAG,YAAc,CAAC,EAAG,CAAE1sC,EAAG,YAAazQ,EAAG,IAAKm9C,EAAG,WAAa,CAAC,EAAG,CAAE1sC,EAAG,OAAQzQ,EAAG,IAAKm9C,EAAG,UAAY,CAAC,EAAG,SAAU,CAAC,EAAG,mBAAoB,CAAC,EAAG,cAAe,CAAC,EAAG,CAAE1sC,EAAG,UAAWzQ,EAAG,IAAKm9C,EAAG,YAAc,CAAC,EAAG,UAAW,CAAC,EAAG,mBAAoB,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,QAAS,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,CAAE1sC,EAAG,SAAUzQ,EAAG,IAAKm9C,EAAG,YAAc,CAAC,EAAG,cAAe,CAAC,EAAG,CAAE1sC,EAAG,YAAazQ,EAAG,KAAMm9C,EAAG,WAAa,CAAC,EAAG,CAAE1sC,EAAG,SAAUzQ,EAAG,IAAKm9C,EAAG,YAAc,CAAC,EAAG,CAAE1sC,EAAG,UAAWzQ,EAAG,IAAKm9C,EAAG,aAAe,CAAC,EAAG,CAAE1sC,EAAG,UAAWzQ,EAAG,IAAKm9C,EAAG,YAAc,CAAC,EAAG,cAAe,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,eAAgB,CAAC,EAAG,YAAa,CAAC,EAAG,QAAS,CAAC,EAAG,CAAE1sC,EAAG,cAAezQ,EAAG,KAAMm9C,EAAG,cAAgB,CAAC,EAAG,YAAa,CAAC,EAAG,CAAE1sC,EAAG,OAAQzQ,EAAG,KAAMm9C,EAAG,WAAa,CAAC,EAAG,CAAE1sC,EAAG,OAAQzQ,EAAG,KAAMm9C,EAAG,WAAa,CAAC,EAAG,CAAE1sC,EAAG,OAAQzQ,EAAG,IAAKm9C,EAAG,UAAY,CAAC,EAAG,CAAE1sC,EAAG,OAAQzQ,EAAG,IAAKm9C,EAAG,UAAY,CAAC,EAAG,CAAE1sC,EAAG,QAASzQ,EAAG,MAAOm9C,EAAG,gBAAkB,CAAC,EAAG,CAAE1sC,EAAG,QAASzQ,EAAG,MAAOm9C,EAAG,gBAAkB,CAAC,EAAG,CAAE1sC,EAAG,OAAQzQ,EAAG,IAAIm4C,IAAoB+E,EAAY,CAAC,CAAC,IAAK,UAAW,CAAC,KAAM,cAAgB,CAAC,EAAG,CAAEzsC,EAAG,OAAQzQ,EAAG,IAAIm4C,IAAoB+E,EAAY,CAAC,CAAC,IAAK,UAAW,CAAC,KAAM,cAAgB,CAAC,EAAG,aAAc,CAAC,EAAG,eAAgB,CAAC,EAAG,WAAY,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,aAAc,CAAC,EAAG,kBAAmB,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,iBAAkB,CAAC,EAAG,QAAS,CAAC,EAAG,oBAAqB,CAAC,EAAG,oBAAqB,CAAC,EAAG,QAAS,CAAC,EAAG,QAAS,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,mBAAoB,CAAC,EAAG,CAAEzsC,EAAG,UAAWzQ,EAAG,IAAKm9C,EAAG,uBAAyB,CAAC,EAAG,iBAAkB,CAAC,EAAG,iBAAkB,CAAC,EAAG,CAAE1sC,EAAG,QAASzQ,EAAG,KAAMm9C,EAAG,gBAAkB,CAAC,EAAG,CAAE1sC,EAAG,QAASzQ,EAAG,KAAMm9C,EAAG,kBAAoB,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,oBAAqB,CAAC,EAAG,sBAAuB,CAAC,EAAG,CAAE1sC,EAAG,UAAWzQ,EAAG,MAAOm9C,EAAG,mBAAqB,CAAC,EAAG,CAAE1sC,EAAG,UAAWzQ,EAAG,MAAOm9C,EAAG,mBAAqB,CAAC,EAAG,YAAa,CAAC,EAAG,eAAgB,CAAC,EAAG,CAAE1sC,EAAG,UAAWzQ,EAAG,IAAKm9C,EAAG,sBAAwB,CAAC,EAAG,CAAE1sC,EAAG,UAAWzQ,EAAG,IAAKm9C,EAAG,wBAA0B,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,CAAE1sC,EAAG,UAAWzQ,EAAG,MAAOm9C,EAAG,aAAe,CAAC,EAAG,CAAE1sC,EAAG,UAAWzQ,EAAG,MAAOm9C,EAAG,aAAe,CAAC,EAAG,gBAAiB,CAAC,EAAG,iBAAkB,CAAC,EAAG,iBAAkB,CAAC,EAAG,UAAW,CAAC,EAAG,eAAgB,CAAC,EAAG,iBAAkB,CAAC,EAAG,gBAAiB,CAAC,EAAG,iBAAkB,CAAC,EAAG,aAAc,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,eAAgB,CAAC,EAAG,cAAe,CAAC,EAAG,WAAY,CAAC,EAAG,aAAc,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,oBAAqB,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,kBAAmB,CAAC,EAAG,mBAAoB,CAAC,EAAG,CAAE1sC,EAAG,sBAAuBzQ,EAAG,KAAMm9C,EAAG,cAAgB,CAAC,EAAG,CAAE1sC,EAAG,uBAAwBzQ,EAAG,KAAMm9C,EAAG,cAAgB,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,cAAe,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,aAAc,CAAC,EAAG,WAAY,CAAC,EAAG,cAAe,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,mBAAoB,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,oBAAqB,CAAC,EAAG,qBAAsB,CAAC,EAAG,eAAgB,CAAC,EAAG,cAAe,CAAC,EAAG,gBAAiB,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,aAAc,CAAC,EAAG,WAAY,CAAC,EAAG,CAAE1sC,EAAG,OAAQzQ,EAAG,IAAKm9C,EAAG,UAAY,CAAC,EAAG,CAAE1sC,EAAG,OAAQzQ,EAAG,IAAKm9C,EAAG,UAAY,CAAC,EAAG,CAAE1sC,EAAG,QAASzQ,EAAG,MAAOm9C,EAAG,WAAa,CAAC,EAAG,CAAE1sC,EAAG,QAASzQ,EAAG,MAAOm9C,EAAG,WAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,2BAA4B,CAAC,EAAG,2BAA4B,CAAC,EAAG,0BAA2B,CAAC,EAAG,4BAA6B,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,cAAe,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,sBAAuB,CAAC,EAAG,YAAa,CAAC,EAAG,2BAA4B,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,CAAE1sC,EAAG,YAAazQ,EAAG,IAAKm9C,EAAG,eAAiB,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,CAAE1sC,EAAG,UAAWzQ,EAAG,IAAKm9C,EAAG,aAAe,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,eAAgB,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,cAAe,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,GAAI,aAAc,CAAC,GAAI,gBAAiB,CAAC,EAAG,gBAAiB,CAAC,EAAG,iBAAkB,CAAC,EAAG,UAAW,CAAC,EAAG,cAAe,CAAC,GAAI,qBAAsB,CAAC,EAAG,sBAAuB,CAAC,EAAG,eAAgB,CAAC,EAAG,gBAAiB,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,GAAI,WAAY,CAAC,IAAK,cAAe,CAAC,GAAI,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,GAAI,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,GAAI,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,GAAI,YAAa,CAAC,EAAG,iBAAkB,CAAC,EAAG,0BAA2B,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,mBAAoB,CAAC,EAAG,mBAAoB,CAAC,EAAG,cAAe,CAAC,EAAG,wBAAyB,CAAC,EAAG,UAAW,CAAC,EAAG,qBAAsB,CAAC,EAAG,uBAAwB,CAAC,EAAG,UAAW,CAAC,EAAG,uBAAwB,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,GAAI,YAAa,CAAC,EAAG,aAAc,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,sBAAuB,CAAC,EAAG,uBAAwB,CAAC,EAAG,aAAc,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,GAAI,YAAa,CAAC,EAAG,UAAW,CAAC,GAAI,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,iBAAkB,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,aAAc,CAAC,EAAG,WAAY,CAAC,IAAK,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,GAAI,UAAW,CAAC,GAAI,uBAAwB,CAAC,GAAI,WAAY,CAAC,EAAG,WAAY,CAAC,GAAI,cAAe,CAAC,EAAG,aAAc,CAAC,GAAI,uBAAwB,CAAC,EAAG,wBAAyB,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,mBAAoB,CAAC,EAAG,oBAAqB,CAAC,EAAG,wBAAyB,CAAC,EAAG,yBAA0B,CAAC,EAAG,0BAA2B,CAAC,EAAG,8BAA+B,CAAC,EAAG,gBAAiB,CAAC,EAAG,cAAe,CAAC,IAAK,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,aAAc,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,gBAAiB,CAAC,EAAG,kBAAmB,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,CAAE1sC,EAAG,UAAWzQ,EAAG,IAAKm9C,EAAG,aAAe,CAAC,EAAG,aAAc,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,aAAc,CAAC,EAAG,YAAa,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,YAAa,CAAC,EAAG,aAAc,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,qBAAsB,CAAC,EAAG,uBAAwB,CAAC,EAAG,yBAA0B,CAAC,EAAG,sBAAuB,CAAC,EAAG,mBAAoB,CAAC,EAAG,oBAAqB,CAAC,EAAG,sBAAuB,CAAC,EAAG,wBAAyB,CAAC,EAAG,uBAAwB,CAAC,EAAG,wBAAyB,CAAC,EAAG,qBAAsB,CAAC,EAAG,uBAAwB,CAAC,EAAG,mBAAoB,CAAC,EAAG,oBAAqB,CAAC,EAAG,sBAAuB,CAAC,EAAG,wBAAyB,CAAC,EAAG,uBAAwB,CAAC,EAAG,wBAAyB,CAAC,EAAG,qBAAsB,CAAC,EAAG,uBAAwB,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,kBAAmB,CAAC,EAAG,WAAY,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,aAAc,CAAC,EAAG,YAAa,CAAC,EAAG,cAAe,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,aAAc,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,aAAc,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,cAAe,CAAC,EAAG,CAAE1sC,EAAG,oBAAqBzQ,EAAG,IAAKm9C,EAAG,yBAA2B,CAAC,EAAG,CAAE1sC,EAAG,qBAAsBzQ,EAAG,IAAKm9C,EAAG,0BAA4B,CAAC,GAAI,YAAa,CAAC,EAAG,cAAe,CAAC,EAAG,aAAc,CAAC,EAAG,YAAa,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,kBAAmB,CAAC,EAAG,iBAAkB,CAAC,EAAG,UAAW,CAAC,EAAG,aAAc,CAAC,EAAG,cAAe,CAAC,EAAG,eAAgB,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,YAAa,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,WAAY,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,aAAc,CAAC,EAAG,cAAe,CAAC,EAAG,aAAc,CAAC,EAAG,cAAe,CAAC,GAAI,aAAc,CAAC,EAAG,cAAe,CAAC,EAAG,aAAc,CAAC,EAAG,YAAa,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,YAAa,CAAC,EAAG,aAAc,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,cAAe,CAAC,EAAG,YAAa,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,cAAe,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,aAAc,CAAC,EAAG,cAAe,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,aAAc,CAAC,EAAG,SAAU,CAAC,EAAG,QAAS,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,aAAc,CAAC,EAAG,cAAe,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,CAAE1sC,EAAG,YAAazQ,EAAG,IAAKm9C,EAAG,eAAiB,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,CAAE1sC,EAAG,QAASzQ,EAAG,IAAKm9C,EAAG,WAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,CAAE1sC,EAAG,aAAczQ,EAAG,IAAKm9C,EAAG,gBAAkB,CAAC,EAAG,CAAE1sC,EAAG,aAAczQ,EAAG,IAAKm9C,EAAG,gBAAkB,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,cAAe,CAAC,EAAG,cAAe,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,QAAS,CAAC,EAAG,QAAS,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,CAAE1sC,EAAG,aAAczQ,EAAG,IAAKm9C,EAAG,wBAA0B,CAAC,EAAG,CAAE1sC,EAAG,mBAAoBzQ,EAAG,IAAKm9C,EAAG,8BAAgC,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,CAAE1sC,EAAG,SAAUzQ,EAAG,MAAOm9C,EAAG,YAAc,CAAC,EAAG,CAAE1sC,EAAG,SAAUzQ,EAAG,MAAOm9C,EAAG,YAAc,CAAC,EAAG,WAAY,CAAC,EAAG,CAAE1sC,EAAG,kBAAmBzQ,EAAG,IAAKm9C,EAAG,uBAAyB,CAAC,EAAG,CAAE1sC,EAAG,QAASzQ,EAAG,IAAKm9C,EAAG,uBAAyB,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,cAAe,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,iBAAkB,CAAC,EAAG,WAAY,CAAC,EAAG,QAAS,CAAC,EAAG,QAAS,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,CAAE1sC,EAAG,SAAUzQ,EAAG,IAAKm9C,EAAG,YAAc,CAAC,EAAG,CAAE1sC,EAAG,SAAUzQ,EAAG,IAAKm9C,EAAG,YAAc,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,CAAE1sC,EAAG,UAAWzQ,EAAG,MAAOm9C,EAAG,oBAAsB,CAAC,EAAG,CAAE1sC,EAAG,UAAWzQ,EAAG,MAAOm9C,EAAG,oBAAsB,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,aAAc,CAAC,EAAG,aAAc,CAAC,EAAG,WAAY,CAAC,EAAG,aAAc,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,CAAE1sC,EAAG,UAAWzQ,EAAG,KAAMm9C,EAAG,aAAe,CAAC,MAAO,CAAEn9C,EAAG,IAAIm4C,IAAoB+E,EAAY,CAAC,CAAC,MAAO,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,GAAI,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,eAAiB,CAAC,KAAM,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,eAA/p0B,MCPME,EAAa,IAAIjF,IAAI,CACvB,CAAC,GAAI,UACL,CAAC,GAAI,SACL,CAAC,GAAI,UACL,CAAC,GAAI,QACL,CAAC,GAAI,UAKT/wD,OAAO3M,UAAU4iE,YAwDjB,SAASC,EAAWC,EAAOz2D,GACvB,OAAO,SAAgBvF,GACnB,IAAIy1D,EACAwG,EAAU,EACVx4C,EAAS,GACb,KAAQgyC,EAAQuG,EAAM1qC,KAAKtxB,IACnBi8D,IAAYxG,EAAMjwD,QAClBie,GAAUzjB,EAAKk8D,UAAUD,EAASxG,EAAMjwD,QAG5Cie,GAAUle,EAAI0pB,IAAIwmC,EAAM,GAAG7C,WAAW,IAEtCqJ,EAAUxG,EAAMjwD,MAAQ,EAE5B,OAAOie,EAASzjB,EAAKk8D,UAAUD,EACnC,CACJ,CAQ0BF,EAAW,WAAYF,GAOlBE,EAAW,cAAe,IAAInF,IAAI,CAC7D,CAAC,GAAI,UACL,CAAC,GAAI,SACL,CAAC,IAAK,aAQgBmF,EAAW,eAAgB,IAAInF,IAAI,CACzD,CAAC,GAAI,SACL,CAAC,GAAI,QACL,CAAC,GAAI,QACL,CAAC,IAAK,aC7GH,IAAIuF,GAOAC,GCFX,SAASC,GAAU1jE,GAAO,MAAuB,oBAFjD,SAAiBA,GAAO,OAAOd,OAAOqB,UAAU0wC,SAAS7vC,KAAKpB,EAAK,CAElC2jE,CAAO3jE,EAA2B,EDJnE,SAAWwjE,GAEPA,EAAYA,EAAiB,IAAI,GAAK,MAEtCA,EAAYA,EAAkB,KAAI,GAAK,MAC1C,CALD,CAKGA,KAAgBA,GAAc,CAAC,IAElC,SAAWC,GAKPA,EAAaA,EAAmB,KAAI,GAAK,OAMzCA,EAAaA,EAAoB,MAAI,GAAK,QAK1CA,EAAaA,EAAwB,UAAI,GAAK,YAK9CA,EAAaA,EAAwB,UAAI,GAAK,YAK9CA,EAAaA,EAAmB,KAAI,GAAK,MAC5C,CA3BD,CA2BGA,KAAiBA,GAAe,CAAC,IC5BpC,MAAMG,GAAkB1kE,OAAOqB,UAAUY,eAEzC,SAAS2zC,GAAKpuC,EAAQxF,GACpB,OAAO0iE,GAAgBxiE,KAAKsF,EAAQxF,EACtC,CAIA,SAAS,GAAQlB,GAef,OAdgBU,MAAMH,UAAUyM,MAAM5L,KAAK4F,UAAW,GAE9ChB,SAAQ,SAAUixB,GACxB,GAAKA,EAAL,CAEA,GAAsB,iBAAXA,EACT,MAAM,IAAI9W,UAAU8W,EAAS,kBAG/B/3B,OAAO4L,KAAKmsB,GAAQjxB,SAAQ,SAAU9E,GACpClB,EAAIkB,GAAO+1B,EAAO/1B,EACpB,GARsB,CASxB,IAEOlB,CACT,CAIA,SAAS6jE,GAAgBC,EAAKC,EAAKC,GACjC,MAAO,GAAGjgE,OAAO+/D,EAAI92D,MAAM,EAAG+2D,GAAMC,EAAaF,EAAI92D,MAAM+2D,EAAM,GACnE,CAEA,SAASE,GAAmBliC,GAG1B,QAAIA,GAAK,OAAUA,GAAK,WAEpBA,GAAK,OAAUA,GAAK,YACH,OAAhBA,GAA2C,QAAZ,MAAJA,QAE5BA,GAAK,GAAQA,GAAK,KACZ,KAANA,MACAA,GAAK,IAAQA,GAAK,QAClBA,GAAK,KAAQA,GAAK,QAElBA,EAAI,cAEV,CAEA,SAAS,GAAeA,GAEtB,GAAIA,EAAI,MAAQ,CAEd,MAAMmiC,EAAa,QADnBniC,GAAK,QAC6B,IAC5BoiC,EAAa,OAAc,KAAJpiC,GAE7B,OAAO70B,OAAO8sD,aAAakK,EAAYC,EACzC,CACA,OAAOj3D,OAAO8sD,aAAaj4B,EAC7B,CAEA,MAAMqiC,GAAkB,6CAElBC,GAAkB,IAAI3rC,OAAO0rC,GAAentC,OAAS,IADnC,6BACmDA,OAAQ,MAE7EqtC,GAAyB,sCA6B/B,SAASC,GAAY53D,GACnB,OAAIA,EAAIxJ,QAAQ,MAAQ,EAAYwJ,EAC7BA,EAAIxB,QAAQi5D,GAAgB,KACrC,CAEA,SAASI,GAAa73D,GACpB,OAAIA,EAAIxJ,QAAQ,MAAQ,GAAKwJ,EAAIxJ,QAAQ,KAAO,EAAYwJ,EAErDA,EAAIxB,QAAQk5D,IAAiB,SAAUvH,EAAO2H,EAASC,GAC5D,OAAID,GApCR,SAA+B3H,EAAOn7D,GACpC,GAA2B,KAAvBA,EAAKs4D,WAAW,IAAsBqK,GAAuBrjD,KAAKtf,GAAO,CAC3E,MAAMo5D,EAAiC,MAA1Bp5D,EAAK,GAAGwC,cACjBusB,SAAS/uB,EAAKqL,MAAM,GAAI,IACxB0jB,SAAS/uB,EAAKqL,MAAM,GAAI,IAE5B,OAAIi3D,GAAkBlJ,GACb,GAAcA,GAGhB+B,CACT,CAEA,MAAM6H,EAAU,EAAW7H,GAC3B,OAAI6H,IAAY7H,EACP6H,EAGF7H,CACT,CAkBW8H,CAAqB9H,EAAO4H,EACrC,GACF,CAEA,MAAMG,GAAsB,SACtBC,GAAyB,UACzBC,GAAoB,CACxB,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,UAGP,SAASC,GAAmBjL,GAC1B,OAAOgL,GAAkBhL,EAC3B,CAEA,SAASkL,GAAYt4D,GACnB,OAAIk4D,GAAoB5jD,KAAKtU,GACpBA,EAAIxB,QAAQ25D,GAAwBE,IAEtCr4D,CACT,CAEA,MAAMu4D,GAAmB,uBAEzB,SAASC,GAAUx4D,GACjB,OAAOA,EAAIxB,QAAQ+5D,GAAkB,OACvC,CAEA,SAASE,GAASrK,GAChB,OAAQA,GACN,KAAK,EACL,KAAK,GACH,OAAO,EAEX,OAAO,CACT,CAGA,SAASsK,GAActK,GACrB,GAAIA,GAAQ,MAAUA,GAAQ,KAAU,OAAO,EAC/C,OAAQA,GACN,KAAK,EACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,IACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,MACH,OAAO,EAEX,OAAO,CACT,CAKA,SAASuK,GAAavL,GACpB,OAAO,EAAU94C,KAAK84C,IAAO,EAAU94C,KAAK84C,EAC9C,CASA,SAASwL,GAAgBxL,GACvB,OAAQA,GACN,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACH,OAAO,EACT,QACE,OAAO,EAEb,CAIA,SAASyL,GAAoB74D,GA+C3B,OA5CAA,EAAMA,EAAI6mB,OAAOroB,QAAQ,OAAQ,KAQP,MAAtB,IAAIhH,gBACNwI,EAAMA,EAAIxB,QAAQ,KAAM,MAmCnBwB,EAAIxI,cAAc4I,aAC3B,CAMA,MAAM04D,GAAM,CAAEC,MAAK,UAAS,GCtRb,SAASC,GAAgBjG,EAAOpwC,EAAOs2C,GACpD,IAAIC,EAAOC,EAAOC,EAAQC,EAE1B,MAAM//B,EAAMy5B,EAAMuG,OACZC,EAASxG,EAAMqE,IAKrB,IAHArE,EAAMqE,IAAMz0C,EAAQ,EACpBu2C,EAAQ,EAEDnG,EAAMqE,IAAM99B,GAAK,CAEtB,GADA8/B,EAASrG,EAAMoE,IAAI7J,WAAWyF,EAAMqE,KACrB,KAAXgC,IACFF,IACc,IAAVA,GAAa,CACfC,GAAQ,EACR,KACF,CAKF,GAFAE,EAAUtG,EAAMqE,IAChBrE,EAAMyG,GAAGC,OAAOC,UAAU3G,GACX,KAAXqG,EACF,GAAIC,IAAYtG,EAAMqE,IAAM,EAE1B8B,SACK,GAAID,EAET,OADAlG,EAAMqE,IAAMmC,GACJ,CAGd,CAEA,IAAII,GAAY,EAShB,OAPIR,IACFQ,EAAW5G,EAAMqE,KAInBrE,EAAMqE,IAAMmC,EAELI,CACT,CC3Ce,SAASC,GAAsB55D,EAAK2iB,EAAO2W,GACxD,IAAI80B,EACAgJ,EAAMz0C,EAEV,MAAMxE,EAAS,CACb07C,IAAI,EACJzC,IAAK,EACLp3D,IAAK,IAGP,GAA4B,KAAxBA,EAAIstD,WAAW8J,GAAuB,CAExC,IADAA,IACOA,EAAM99B,GAAK,CAEhB,GADA80B,EAAOpuD,EAAIstD,WAAW8J,GACT,KAAThJ,EAA0B,OAAOjwC,EACrC,GAAa,KAATiwC,EAAyB,OAAOjwC,EACpC,GAAa,KAATiwC,EAIF,OAHAjwC,EAAOi5C,IAAMA,EAAM,EACnBj5C,EAAOne,IAAM63D,GAAY73D,EAAIK,MAAMsiB,EAAQ,EAAGy0C,IAC9Cj5C,EAAO07C,IAAK,EACL17C,EAEI,KAATiwC,GAAyBgJ,EAAM,EAAI99B,EACrC89B,GAAO,EAITA,GACF,CAGA,OAAOj5C,CACT,CAIA,IAAI+6C,EAAQ,EACZ,KAAO9B,EAAM99B,IACX80B,EAAOpuD,EAAIstD,WAAW8J,GAET,KAAThJ,MAGAA,EAAO,IAAiB,MAATA,IAEnB,GAAa,KAATA,GAAyBgJ,EAAM,EAAI99B,EAAvC,CACE,GAAgC,KAA5Bt5B,EAAIstD,WAAW8J,EAAM,GAAe,MACxCA,GAAO,CAET,KAJA,CAMA,GAAa,KAAThJ,IACF8K,IACIA,EAAQ,IAAM,OAAO/6C,EAG3B,GAAa,KAATiwC,EAAuB,CACzB,GAAc,IAAV8K,EAAe,MACnBA,GACF,CAEA9B,GAZA,CAeF,OAAIz0C,IAAUy0C,GACA,IAAV8B,IAEJ/6C,EAAOne,IAAM63D,GAAY73D,EAAIK,MAAMsiB,EAAOy0C,IAC1Cj5C,EAAOi5C,IAAMA,EACbj5C,EAAO07C,IAAK,GALgB17C,CAO9B,CCpEe,SAAS27C,GAAgB95D,EAAK2iB,EAAO2W,EAAKygC,GACvD,IAAI3L,EACAgJ,EAAMz0C,EAEV,MAAMowC,EAAQ,CAEZ8G,IAAI,EAEJG,cAAc,EAEd5C,IAAK,EAELp3D,IAAK,GAELo5D,OAAQ,GAGV,GAAIW,EAGFhH,EAAM/yD,IAAM+5D,EAAW/5D,IACvB+yD,EAAMqG,OAASW,EAAWX,WACrB,CACL,GAAIhC,GAAO99B,EAAO,OAAOy5B,EAEzB,IAAIqG,EAASp5D,EAAIstD,WAAW8J,GAC5B,GAAe,KAAXgC,GAAsC,KAAXA,GAAsC,KAAXA,EAA2B,OAAOrG,EAE5FpwC,IACAy0C,IAGe,KAAXgC,IAAmBA,EAAS,IAEhCrG,EAAMqG,OAASA,CACjB,CAEA,KAAOhC,EAAM99B,GAAK,CAEhB,GADA80B,EAAOpuD,EAAIstD,WAAW8J,GAClBhJ,IAAS2E,EAAMqG,OAIjB,OAHArG,EAAMqE,IAAMA,EAAM,EAClBrE,EAAM/yD,KAAO63D,GAAY73D,EAAIK,MAAMsiB,EAAOy0C,IAC1CrE,EAAM8G,IAAK,EACJ9G,EACF,GAAa,KAAT3E,GAA0C,KAAjB2E,EAAMqG,OACxC,OAAOrG,EACW,KAAT3E,GAAyBgJ,EAAM,EAAI99B,GAC5C89B,IAGFA,GACF,CAKA,OAFArE,EAAMiH,cAAe,EACrBjH,EAAM/yD,KAAO63D,GAAY73D,EAAIK,MAAMsiB,EAAOy0C,IACnCrE,CACT,CCvDA,MAAMkH,GAAgB,CAAC,EAuGvB,SAASC,KA6BPzkE,KAAK4lD,MAAQ,GAAO,CAAC,EAAG4e,GAC1B,CAnIAA,GAAcE,YAAc,SAAUv3C,EAAQw3C,EAAK58D,EAAS68D,EAAKC,GAC/D,MAAM30C,EAAQ/C,EAAOw3C,GAErB,MAAQ,QAAUE,EAAIC,YAAY50C,GAAS,IACnC2yC,GAAW3yC,EAAMwlB,SACjB,SACV,EAEA8uB,GAAcO,WAAa,SAAU53C,EAAQw3C,EAAK58D,EAAS68D,EAAKC,GAC9D,MAAM30C,EAAQ/C,EAAOw3C,GAErB,MAAQ,OAASE,EAAIC,YAAY50C,GAAS,UAClC2yC,GAAW11C,EAAOw3C,GAAKjvB,SACvB,iBACV,EAEA8uB,GAAcQ,MAAQ,SAAU73C,EAAQw3C,EAAK58D,EAAS68D,EAAKC,GACzD,MAAM30C,EAAQ/C,EAAOw3C,GACfx6C,EAAO+F,EAAM/F,KAAOi4C,GAAYlyC,EAAM/F,MAAMiH,OAAS,GAC3D,IASI6zC,EATAC,EAAW,GACXC,EAAY,GAEhB,GAAIh7C,EAAM,CACR,MAAM9rB,EAAM8rB,EAAK1hB,MAAM,UACvBy8D,EAAW7mE,EAAI,GACf8mE,EAAY9mE,EAAIuM,MAAM,GAAGC,KAAK,GAChC,CASA,GALEo6D,EADEl9D,EAAQq9D,WACIr9D,EAAQq9D,UAAUl1C,EAAMwlB,QAASwvB,EAAUC,IAE3CtC,GAAW3yC,EAAMwlB,SAGG,IAAhCuvB,EAAYlkE,QAAQ,QACtB,OAAOkkE,EAAc,KAMvB,GAAI96C,EAAM,CACR,MAAM3rB,EAAI0xB,EAAMm1C,UAAU,SACpBC,EAAWp1C,EAAMq1C,MAAQr1C,EAAMq1C,MAAM36D,QAAU,GAEjDpM,EAAI,EACN8mE,EAAS//D,KAAK,CAAC,QAASwC,EAAQy9D,WAAaN,KAE7CI,EAAS9mE,GAAK8mE,EAAS9mE,GAAGoM,QAC1B06D,EAAS9mE,GAAG,IAAM,IAAMuJ,EAAQy9D,WAAaN,GAI/C,MAAMO,EAAW,CACfF,MAAOD,GAGT,MAAO,aAAaT,EAAIC,YAAYW,MAAaR,kBACnD,CAEA,MAAO,aAAaJ,EAAIC,YAAY50C,MAAU+0C,kBAChD,EAEAT,GAAc1Y,MAAQ,SAAU3+B,EAAQw3C,EAAK58D,EAAS68D,EAAKC,GACzD,MAAM30C,EAAQ/C,EAAOw3C,GAUrB,OAHAz0C,EAAMq1C,MAAMr1C,EAAMm1C,UAAU,QAAQ,GAClCR,EAAIa,mBAAmBx1C,EAAM4lB,SAAU/tC,EAAS68D,GAE3CC,EAAIc,YAAYx4C,EAAQw3C,EAAK58D,EACtC,EAEAy8D,GAAcoB,UAAY,SAAUz4C,EAAQw3C,EAAK58D,GAC/C,OAAOA,EAAQ89D,SAAW,WAAa,QACzC,EACArB,GAAcsB,UAAY,SAAU34C,EAAQw3C,EAAK58D,GAC/C,OAAOA,EAAQg+D,OAAUh+D,EAAQ89D,SAAW,WAAa,SAAY,IACvE,EAEArB,GAAc10D,KAAO,SAAUqd,EAAQw3C,GACrC,OAAO9B,GAAW11C,EAAOw3C,GAAKjvB,QAChC,EAEA8uB,GAAcwB,WAAa,SAAU74C,EAAQw3C,GAC3C,OAAOx3C,EAAOw3C,GAAKjvB,OACrB,EACA8uB,GAAcyB,YAAc,SAAU94C,EAAQw3C,GAC5C,OAAOx3C,EAAOw3C,GAAKjvB,OACrB,EA4CA+uB,GAAStmE,UAAU2mE,YAAc,SAAsB50C,GACrD,IAAI1xB,EAAGw5D,EAAGtvC,EAEV,IAAKwH,EAAMq1C,MAAS,MAAO,GAI3B,IAFA78C,EAAS,GAEJlqB,EAAI,EAAGw5D,EAAI9nC,EAAMq1C,MAAM7mE,OAAQF,EAAIw5D,EAAGx5D,IACzCkqB,GAAU,IAAMm6C,GAAW3yC,EAAMq1C,MAAM/mE,GAAG,IAAM,KAAOqkE,GAAW3yC,EAAMq1C,MAAM/mE,GAAG,IAAM,IAGzF,OAAOkqB,CACT,EAWA+7C,GAAStmE,UAAUwnE,YAAc,SAAsBx4C,EAAQw3C,EAAK58D,GAClE,MAAMmoB,EAAQ/C,EAAOw3C,GACrB,IAAIj8C,EAAS,GAGb,GAAIwH,EAAMrhB,OACR,MAAO,GAULqhB,EAAMg2C,QAA4B,IAAnBh2C,EAAMi2C,SAAkBxB,GAAOx3C,EAAOw3C,EAAM,GAAG91D,SAChE6Z,GAAU,MAIZA,KAA8B,IAAnBwH,EAAMi2C,QAAiB,KAAO,KAAOj2C,EAAM3pB,IAGtDmiB,GAAU1oB,KAAK8kE,YAAY50C,GAGL,IAAlBA,EAAMi2C,SAAiBp+D,EAAQ89D,WACjCn9C,GAAU,MAIZ,IAAI09C,GAAS,EACb,GAAIl2C,EAAMg2C,QACRE,GAAS,EAEa,IAAlBl2C,EAAMi2C,SACJxB,EAAM,EAAIx3C,EAAOzuB,QAAQ,CAC3B,MAAM2nE,EAAYl5C,EAAOw3C,EAAM,IAER,WAAnB0B,EAAU3mE,MAAqB2mE,EAAUx3D,SAIX,IAAvBw3D,EAAUF,SAAkBE,EAAU9/D,MAAQ2pB,EAAM3pB,OAD7D6/D,GAAS,EAMb,CAMJ,OAFA19C,GAAU09C,EAAS,MAAQ,IAEpB19C,CACT,EAUA+7C,GAAStmE,UAAUmoE,aAAe,SAAUn5C,EAAQplB,EAAS68D,GAC3D,IAAIl8C,EAAS,GACb,MAAMk9B,EAAQ5lD,KAAK4lD,MAEnB,IAAK,IAAIpnD,EAAI,EAAGwhE,EAAM7yC,EAAOzuB,OAAQF,EAAIwhE,EAAKxhE,IAAK,CACjD,MAAMkB,EAAOytB,EAAO3uB,GAAGkB,UAEI,IAAhBkmD,EAAMlmD,GACfgpB,GAAUk9B,EAAMlmD,GAAMytB,EAAQ3uB,EAAGuJ,EAAS68D,EAAK5kE,MAE/C0oB,GAAU1oB,KAAK2lE,YAAYx4C,EAAQ3uB,EAAGuJ,EAE1C,CAEA,OAAO2gB,CACT,EAYA+7C,GAAStmE,UAAUunE,mBAAqB,SAAUv4C,EAAQplB,EAAS68D,GACjE,IAAIl8C,EAAS,GAEb,IAAK,IAAIlqB,EAAI,EAAGwhE,EAAM7yC,EAAOzuB,OAAQF,EAAIwhE,EAAKxhE,IAC5C,OAAQ2uB,EAAO3uB,GAAGkB,MAChB,IAAK,OAML,IAAK,cACL,IAAK,aACHgpB,GAAUyE,EAAO3uB,GAAGk3C,QACpB,MANF,IAAK,QACHhtB,GAAU1oB,KAAK0lE,mBAAmBv4C,EAAO3uB,GAAGs3C,SAAU/tC,EAAS68D,GAC/D,MAKF,IAAK,YACL,IAAK,YACHl8C,GAAU,KAOhB,OAAOA,CACT,EAWA+7C,GAAStmE,UAAU0B,OAAS,SAAUstB,EAAQplB,EAAS68D,GACrD,IAAIl8C,EAAS,GACb,MAAMk9B,EAAQ5lD,KAAK4lD,MAEnB,IAAK,IAAIpnD,EAAI,EAAGwhE,EAAM7yC,EAAOzuB,OAAQF,EAAIwhE,EAAKxhE,IAAK,CACjD,MAAMkB,EAAOytB,EAAO3uB,GAAGkB,KAEV,WAATA,EACFgpB,GAAU1oB,KAAKsmE,aAAan5C,EAAO3uB,GAAGs3C,SAAU/tC,EAAS68D,QACzB,IAAhBhf,EAAMlmD,GACtBgpB,GAAUk9B,EAAMlmD,GAAMytB,EAAQ3uB,EAAGuJ,EAAS68D,EAAK5kE,MAE/C0oB,GAAU1oB,KAAK2lE,YAAYx4C,EAAQ3uB,EAAGuJ,EAAS68D,EAEnD,CAEA,OAAOl8C,CACT,EAEA,YC5SA,SAAS69C,KAUPvmE,KAAKwmE,UAAY,GAOjBxmE,KAAKymE,UAAY,IACnB,CAMAF,GAAMpoE,UAAUuoE,SAAW,SAAUnnE,GACnC,IAAK,IAAIf,EAAI,EAAGA,EAAIwB,KAAKwmE,UAAU9nE,OAAQF,IACzC,GAAIwB,KAAKwmE,UAAUhoE,GAAGe,OAASA,EAC7B,OAAOf,EAGX,OAAQ,CACV,EAIA+nE,GAAMpoE,UAAUwoE,YAAc,WAC5B,MAAM35B,EAAOhtC,KACP4mE,EAAS,CAAC,IAGhB55B,EAAKw5B,UAAU5iE,SAAQ,SAAUijE,GAC1BA,EAAKptB,SAEVotB,EAAKC,IAAIljE,SAAQ,SAAUmjE,GACrBH,EAAO7lE,QAAQgmE,GAAW,GAC5BH,EAAOrhE,KAAKwhE,EAEhB,GACF,IAEA/5B,EAAKy5B,UAAY,CAAC,EAElBG,EAAOhjE,SAAQ,SAAUojE,GACvBh6B,EAAKy5B,UAAUO,GAAS,GACxBh6B,EAAKw5B,UAAU5iE,SAAQ,SAAUijE,GAC1BA,EAAKptB,UAENutB,GAASH,EAAKC,IAAI/lE,QAAQimE,GAAS,GAEvCh6B,EAAKy5B,UAAUO,GAAOzhE,KAAKshE,EAAKpT,IAClC,GACF,GACF,EA2BA8S,GAAMpoE,UAAU8oE,GAAK,SAAU1nE,EAAMk0D,EAAI1rD,GACvC,MAAM0C,EAAQzK,KAAK0mE,SAASnnE,GACtB2nE,EAAMn/D,GAAW,CAAC,EAExB,IAAe,IAAX0C,EAAgB,MAAM,IAAI08D,MAAM,0BAA4B5nE,GAEhES,KAAKwmE,UAAU/7D,GAAOgpD,GAAKA,EAC3BzzD,KAAKwmE,UAAU/7D,GAAOq8D,IAAMI,EAAIJ,KAAO,GACvC9mE,KAAKymE,UAAY,IACnB,EA0BAF,GAAMpoE,UAAUipE,OAAS,SAAUC,EAAYC,EAAU7T,EAAI1rD,GAC3D,MAAM0C,EAAQzK,KAAK0mE,SAASW,GACtBH,EAAMn/D,GAAW,CAAC,EAExB,IAAe,IAAX0C,EAAgB,MAAM,IAAI08D,MAAM,0BAA4BE,GAEhErnE,KAAKwmE,UAAU9gD,OAAOjb,EAAO,EAAG,CAC9BlL,KAAM+nE,EACN7tB,SAAS,EACTga,KACAqT,IAAKI,EAAIJ,KAAO,KAGlB9mE,KAAKymE,UAAY,IACnB,EA0BAF,GAAMpoE,UAAUopE,MAAQ,SAAUC,EAAWF,EAAU7T,EAAI1rD,GACzD,MAAM0C,EAAQzK,KAAK0mE,SAASc,GACtBN,EAAMn/D,GAAW,CAAC,EAExB,IAAe,IAAX0C,EAAgB,MAAM,IAAI08D,MAAM,0BAA4BK,GAEhExnE,KAAKwmE,UAAU9gD,OAAOjb,EAAQ,EAAG,EAAG,CAClClL,KAAM+nE,EACN7tB,SAAS,EACTga,KACAqT,IAAKI,EAAIJ,KAAO,KAGlB9mE,KAAKymE,UAAY,IACnB,EAyBAF,GAAMpoE,UAAUoH,KAAO,SAAU+hE,EAAU7T,EAAI1rD,GAC7C,MAAMm/D,EAAMn/D,GAAW,CAAC,EAExB/H,KAAKwmE,UAAUjhE,KAAK,CAClBhG,KAAM+nE,EACN7tB,SAAS,EACTga,KACAqT,IAAKI,EAAIJ,KAAO,KAGlB9mE,KAAKymE,UAAY,IACnB,EAcAF,GAAMpoE,UAAUoJ,OAAS,SAAUkgE,EAAMC,GAClCppE,MAAMC,QAAQkpE,KAASA,EAAO,CAACA,IAEpC,MAAM/+C,EAAS,GAef,OAZA++C,EAAK7jE,SAAQ,SAAUrE,GACrB,MAAMolE,EAAM3kE,KAAK0mE,SAASnnE,GAE1B,GAAIolE,EAAM,EAAG,CACX,GAAI+C,EAAiB,OACrB,MAAM,IAAIP,MAAM,oCAAsC5nE,EACxD,CACAS,KAAKwmE,UAAU7B,GAAKlrB,SAAU,EAC9B/wB,EAAOnjB,KAAKhG,EACd,GAAGS,MAEHA,KAAKymE,UAAY,KACV/9C,CACT,EAYA69C,GAAMpoE,UAAUwpE,WAAa,SAAUF,EAAMC,GACtCppE,MAAMC,QAAQkpE,KAASA,EAAO,CAACA,IAEpCznE,KAAKwmE,UAAU5iE,SAAQ,SAAUijE,GAAQA,EAAKptB,SAAU,CAAM,IAE9Dz5C,KAAKuH,OAAOkgE,EAAMC,EACpB,EAcAnB,GAAMpoE,UAAUypE,QAAU,SAAUH,EAAMC,GACnCppE,MAAMC,QAAQkpE,KAASA,EAAO,CAACA,IAEpC,MAAM/+C,EAAS,GAef,OAZA++C,EAAK7jE,SAAQ,SAAUrE,GACrB,MAAMolE,EAAM3kE,KAAK0mE,SAASnnE,GAE1B,GAAIolE,EAAM,EAAG,CACX,GAAI+C,EAAiB,OACrB,MAAM,IAAIP,MAAM,oCAAsC5nE,EACxD,CACAS,KAAKwmE,UAAU7B,GAAKlrB,SAAU,EAC9B/wB,EAAOnjB,KAAKhG,EACd,GAAGS,MAEHA,KAAKymE,UAAY,KACV/9C,CACT,EAWA69C,GAAMpoE,UAAU0pE,SAAW,SAAUC,GAMnC,OALuB,OAAnB9nE,KAAKymE,WACPzmE,KAAK2mE,cAIA3mE,KAAKymE,UAAUqB,IAAc,EACtC,EAEA,YCxUA,SAASC,GAAOroE,EAAM6G,EAAK4/D,GAMzBnmE,KAAKN,KAAWA,EAOhBM,KAAKuG,IAAWA,EAOhBvG,KAAKulE,MAAW,KAOhBvlE,KAAKwK,IAAW,KAWhBxK,KAAKmmE,QAAWA,EAOhBnmE,KAAKyjE,MAAW,EAOhBzjE,KAAK81C,SAAW,KAQhB91C,KAAK01C,QAAW,GAOhB11C,KAAKgoE,OAAW,GAWhBhoE,KAAKmqB,KAAW,GAOhBnqB,KAAKioE,KAAW,KAQhBjoE,KAAKkmE,OAAW,EAQhBlmE,KAAK6O,QAAW,CAClB,CAOAk5D,GAAM5pE,UAAUknE,UAAY,SAAoB9lE,GAC9C,IAAKS,KAAKulE,MAAS,OAAQ,EAE3B,MAAMA,EAAQvlE,KAAKulE,MAEnB,IAAK,IAAI/mE,EAAI,EAAGwhE,EAAMuF,EAAM7mE,OAAQF,EAAIwhE,EAAKxhE,IAC3C,GAAI+mE,EAAM/mE,GAAG,KAAOe,EAAQ,OAAOf,EAErC,OAAQ,CACV,EAOAupE,GAAM5pE,UAAU+pE,SAAW,SAAmBC,GACxCnoE,KAAKulE,MACPvlE,KAAKulE,MAAMhgE,KAAK4iE,GAEhBnoE,KAAKulE,MAAQ,CAAC4C,EAElB,EAOAJ,GAAM5pE,UAAUiqE,QAAU,SAAkB7oE,EAAMtC,GAChD,MAAM0nE,EAAM3kE,KAAKqlE,UAAU9lE,GACrB4oE,EAAW,CAAC5oE,EAAMtC,GAEpB0nE,EAAM,EACR3kE,KAAKkoE,SAASC,GAEdnoE,KAAKulE,MAAMZ,GAAOwD,CAEtB,EAOAJ,GAAM5pE,UAAUkqE,QAAU,SAAkB9oE,GAC1C,MAAMolE,EAAM3kE,KAAKqlE,UAAU9lE,GAC3B,IAAItC,EAAQ,KAIZ,OAHI0nE,GAAO,IACT1nE,EAAQ+C,KAAKulE,MAAMZ,GAAK,IAEnB1nE,CACT,EAQA8qE,GAAM5pE,UAAUmqE,SAAW,SAAmB/oE,EAAMtC,GAClD,MAAM0nE,EAAM3kE,KAAKqlE,UAAU9lE,GAEvBolE,EAAM,EACR3kE,KAAKkoE,SAAS,CAAC3oE,EAAMtC,IAErB+C,KAAKulE,MAAMZ,GAAK,GAAK3kE,KAAKulE,MAAMZ,GAAK,GAAK,IAAM1nE,CAEpD,EAEA,YCzLA,SAASsrE,GAAW7G,EAAKqC,EAAIa,GAC3B5kE,KAAK0hE,IAAMA,EACX1hE,KAAK4kE,IAAMA,EACX5kE,KAAKmtB,OAAS,GACdntB,KAAKwoE,YAAa,EAClBxoE,KAAK+jE,GAAKA,CACZ,CAGAwE,GAAUpqE,UAAU4pE,MAAQ,GAE5B,YCbMU,GAAe,YACfC,GAAe,MCMrB,SAASC,GAAap+D,GACpB,MAAO,aAAasU,KAAKtU,EAC3B,CCGA,MAAMq+D,GAAU,+BAIVC,GAAsB,gBAEtBC,GAAiB,iBACjBC,GAAc,CAClBppC,EAAG,IACH2B,EAAG,IACH0nC,GAAI,KAGN,SAASC,GAAWvO,EAAOn7D,GACzB,OAAOwpE,GAAYxpE,EAAKwC,cAC1B,CAEA,SAASmnE,GAAgBC,GACvB,IAAIC,EAAkB,EAEtB,IAAK,IAAI5qE,EAAI2qE,EAAazqE,OAAS,EAAGF,GAAK,EAAGA,IAAK,CACjD,MAAM0xB,EAAQi5C,EAAa3qE,GAER,SAAf0xB,EAAMxwB,MAAoB0pE,IAC5Bl5C,EAAMwlB,QAAUxlB,EAAMwlB,QAAQ3sC,QAAQ+/D,GAAgBG,KAGrC,cAAf/4C,EAAMxwB,MAAuC,SAAfwwB,EAAM/F,MACtCi/C,IAGiB,eAAfl5C,EAAMxwB,MAAwC,SAAfwwB,EAAM/F,MACvCi/C,GAEJ,CACF,CAEA,SAASC,GAAcF,GACrB,IAAIC,EAAkB,EAEtB,IAAK,IAAI5qE,EAAI2qE,EAAazqE,OAAS,EAAGF,GAAK,EAAGA,IAAK,CACjD,MAAM0xB,EAAQi5C,EAAa3qE,GAER,SAAf0xB,EAAMxwB,MAAoB0pE,GACxBR,GAAQ/pD,KAAKqR,EAAMwlB,WACrBxlB,EAAMwlB,QAAUxlB,EAAMwlB,QACnB3sC,QAAQ,OAAQ,KAGhBA,QAAQ,UAAW,KAAKA,QAAQ,WAAY,QAC5CA,QAAQ,cAAe,UAAUA,QAAQ,SAAU,KAEnDA,QAAQ,0BAA2B,OAEnCA,QAAQ,qBAAsB,OAC9BA,QAAQ,6BAA8B,QAI1B,cAAfmnB,EAAMxwB,MAAuC,SAAfwwB,EAAM/F,MACtCi/C,IAGiB,eAAfl5C,EAAMxwB,MAAwC,SAAfwwB,EAAM/F,MACvCi/C,GAEJ,CACF,CC7EA,MAAME,GAAgB,OAChBC,GAAW,QACXC,GAAa,IAEnB,SAASC,GAAWl/D,EAAKE,EAAOktD,GAC9B,OAAOptD,EAAIK,MAAM,EAAGH,GAASktD,EAAKptD,EAAIK,MAAMH,EAAQ,EACtD,CAEA,SAASi/D,GAAiBv8C,EAAQmwC,GAChC,IAAInC,EAEJ,MAAMwO,EAAQ,GAEd,IAAK,IAAInrE,EAAI,EAAGA,EAAI2uB,EAAOzuB,OAAQF,IAAK,CACtC,MAAM0xB,EAAQ/C,EAAO3uB,GAEforE,EAAYz8C,EAAO3uB,GAAGilE,MAE5B,IAAKtI,EAAIwO,EAAMjrE,OAAS,EAAGy8D,GAAK,KAC1BwO,EAAMxO,GAAGsI,OAASmG,GADWzO,KAKnC,GAFAwO,EAAMjrE,OAASy8D,EAAI,EAEA,SAAfjrC,EAAMxwB,KAAmB,SAE7B,IAAIoQ,EAAOogB,EAAMwlB,QACbisB,EAAM,EACN99B,EAAM/zB,EAAKpR,OAGfmrE,EACA,KAAOlI,EAAM99B,GAAK,CAChB0lC,GAASxJ,UAAY4B,EACrB,MAAMmI,EAAIP,GAAShzC,KAAKzmB,GACxB,IAAKg6D,EAAK,MAEV,IAAIC,GAAU,EACVC,GAAW,EACfrI,EAAMmI,EAAEr/D,MAAQ,EAChB,MAAMw/D,EAAqB,MAATH,EAAE,GAKpB,IAAII,EAAW,GAEf,GAAIJ,EAAEr/D,MAAQ,GAAK,EACjBy/D,EAAWp6D,EAAK+nD,WAAWiS,EAAEr/D,MAAQ,QAErC,IAAK0wD,EAAI38D,EAAI,EAAG28D,GAAK,IACI,cAAnBhuC,EAAOguC,GAAGz7D,MAA2C,cAAnBytB,EAAOguC,GAAGz7D,MAD1By7D,IAEtB,GAAKhuC,EAAOguC,GAAGzlB,QAAf,CAEAw0B,EAAW/8C,EAAOguC,GAAGzlB,QAAQmiB,WAAW1qC,EAAOguC,GAAGzlB,QAAQh3C,OAAS,GACnE,KAHwB,CAU5B,IAAIyrE,EAAW,GAEf,GAAIxI,EAAM99B,EACRsmC,EAAWr6D,EAAK+nD,WAAW8J,QAE3B,IAAKxG,EAAI38D,EAAI,EAAG28D,EAAIhuC,EAAOzuB,SACF,cAAnByuB,EAAOguC,GAAGz7D,MAA2C,cAAnBytB,EAAOguC,GAAGz7D,MADfy7D,IAEjC,GAAKhuC,EAAOguC,GAAGzlB,QAAf,CAEAy0B,EAAWh9C,EAAOguC,GAAGzlB,QAAQmiB,WAAW,GACxC,KAHwB,CAO5B,MAAMuS,EAAkBjH,GAAe+G,IAAahH,GAAYp4D,OAAO8sD,aAAasS,IAC9EG,EAAkBlH,GAAegH,IAAajH,GAAYp4D,OAAO8sD,aAAauS,IAE9EG,EAAmBrH,GAAaiH,GAChCK,EAAmBtH,GAAakH,GAqCtC,GAnCII,EACFR,GAAU,EACDM,IACHC,GAAoBF,IACxBL,GAAU,IAIVO,EACFN,GAAW,EACFI,IACHG,GAAoBF,IACxBL,GAAW,IAIE,KAAbG,GAAsC,MAATL,EAAE,IAC7BI,GAAY,IAAgBA,GAAY,KAE1CF,EAAWD,GAAU,GAIrBA,GAAWC,IAQbD,EAAUK,EACVJ,EAAWK,GAGRN,GAAYC,EAAjB,CAQA,GAAIA,EAEF,IAAK7O,EAAIwO,EAAMjrE,OAAS,EAAGy8D,GAAK,EAAGA,IAAK,CACtC,IAAIt3D,EAAO8lE,EAAMxO,GACjB,GAAIwO,EAAMxO,GAAGsI,MAAQmG,EAAa,MAClC,GAAI/lE,EAAK2mE,SAAWP,GAAYN,EAAMxO,GAAGsI,QAAUmG,EAAW,CAG5D,IAAIa,EACAC,EAHJ7mE,EAAO8lE,EAAMxO,GAIT8O,GACFQ,EAAYnN,EAAMyG,GAAGh8D,QAAQ4iE,OAAO,GACpCD,EAAapN,EAAMyG,GAAGh8D,QAAQ4iE,OAAO,KAErCF,EAAYnN,EAAMyG,GAAGh8D,QAAQ4iE,OAAO,GACpCD,EAAapN,EAAMyG,GAAGh8D,QAAQ4iE,OAAO,IAMvCz6C,EAAMwlB,QAAU+zB,GAAUv5C,EAAMwlB,QAASo0B,EAAEr/D,MAAOigE,GAClDv9C,EAAOtpB,EAAKqsB,OAAOwlB,QAAU+zB,GAC3Bt8C,EAAOtpB,EAAKqsB,OAAOwlB,QAAS7xC,EAAK89D,IAAK8I,GAExC9I,GAAO+I,EAAWhsE,OAAS,EACvBmF,EAAKqsB,QAAU1xB,IAAKmjE,GAAO8I,EAAU/rE,OAAS,GAElDoR,EAAOogB,EAAMwlB,QACb7R,EAAM/zB,EAAKpR,OAEXirE,EAAMjrE,OAASy8D,EACf,SAAS0O,CACX,CACF,CAGEE,EACFJ,EAAMpkE,KAAK,CACT2qB,MAAO1xB,EACPmjE,IAAKmI,EAAEr/D,MACP+/D,OAAQP,EACRxG,MAAOmG,IAEAI,GAAYC,IACrB/5C,EAAMwlB,QAAU+zB,GAAUv5C,EAAMwlB,QAASo0B,EAAEr/D,MAAO++D,IA/CpD,MAJMS,IACF/5C,EAAMwlB,QAAU+zB,GAAUv5C,EAAMwlB,QAASo0B,EAAEr/D,MAAO++D,IAoDxD,CACF,CACF,CChKA,MAAMoB,GAAS,CACb,CAAC,YJbY,SAAoBtN,GACjC,IAAI/yD,EAGJA,EAAM+yD,EAAMoE,IAAI34D,QAAQ0/D,GAAa,MAGrCl+D,EAAMA,EAAIxB,QAAQ2/D,GAAS,KAE3BpL,EAAMoE,IAAMn3D,CACd,GIIE,CAAC,QCpBY,SAAgB+yD,GAC7B,IAAIptC,EAEAotC,EAAMkL,YACRt4C,EAAiB,IAAIotC,EAAMyK,MAAM,SAAU,GAAI,GAC/C73C,EAAMwlB,QAAW4nB,EAAMoE,IACvBxxC,EAAM1lB,IAAW,CAAC,EAAG,GACrB0lB,EAAM4lB,SAAW,GACjBwnB,EAAMnwC,OAAO5nB,KAAK2qB,IAElBotC,EAAMyG,GAAGmC,MAAMj3C,MAAMquC,EAAMoE,IAAKpE,EAAMyG,GAAIzG,EAAMsH,IAAKtH,EAAMnwC,OAE/D,GDSE,CAAC,SErBY,SAAiBmwC,GAC9B,MAAMnwC,EAASmwC,EAAMnwC,OAGrB,IAAK,IAAI3uB,EAAI,EAAGw5D,EAAI7qC,EAAOzuB,OAAQF,EAAIw5D,EAAGx5D,IAAK,CAC7C,MAAMqsE,EAAM19C,EAAO3uB,GACF,WAAbqsE,EAAInrE,MACN49D,EAAMyG,GAAGC,OAAO/0C,MAAM47C,EAAIn1B,QAAS4nB,EAAMyG,GAAIzG,EAAMsH,IAAKiG,EAAI/0B,SAEhE,CACF,GFYE,CAAC,UHRY,SAAkBwnB,GAC/B,MAAMwN,EAAcxN,EAAMnwC,OAR5B,IAAqB5iB,EAUnB,GAAK+yD,EAAMyG,GAAGh8D,QAAQgjE,QAEtB,IAAK,IAAI5P,EAAI,EAAGnD,EAAI8S,EAAYpsE,OAAQy8D,EAAInD,EAAGmD,IAAK,CAClD,GAA4B,WAAxB2P,EAAY3P,GAAGz7D,OACd49D,EAAMyG,GAAGgH,QAAQC,QAAQF,EAAY3P,GAAGzlB,SAC3C,SAGF,IAAIvoB,EAAS29C,EAAY3P,GAAGrlB,SAExBm1B,EAAgB,EAIpB,IAAK,IAAIzsE,EAAI2uB,EAAOzuB,OAAS,EAAGF,GAAK,EAAGA,IAAK,CAC3C,MAAM0sE,EAAe/9C,EAAO3uB,GAG5B,GAA0B,eAAtB0sE,EAAaxrE,MAiBjB,GAR0B,gBAAtBwrE,EAAaxrE,OArCF6K,EAsCE2gE,EAAax1B,QArC3B,YAAY72B,KAAKtU,IAqCsB0gE,EAAgB,GACtDA,IAEEtC,GAAYuC,EAAax1B,UAC3Bu1B,OAGAA,EAAgB,IAEM,SAAtBC,EAAaxrE,MAAmB49D,EAAMyG,GAAGgH,QAAQlsD,KAAKqsD,EAAax1B,SAAU,CAC/E,MAAM5lC,EAAOo7D,EAAax1B,QAC1B,IAAIy1B,EAAQ7N,EAAMyG,GAAGgH,QAAQrQ,MAAM5qD,GAGnC,MAAMs7D,EAAQ,GACd,IAAI3H,EAAQyH,EAAazH,MACrB4H,EAAU,EAKVF,EAAMzsE,OAAS,GACI,IAAnBysE,EAAM,GAAG1gE,OACTjM,EAAI,GACmB,iBAAvB2uB,EAAO3uB,EAAI,GAAGkB,OAChByrE,EAAQA,EAAMvgE,MAAM,IAGtB,IAAK,IAAI0gE,EAAK,EAAGA,EAAKH,EAAMzsE,OAAQ4sE,IAAM,CACxC,MAAMrlD,EAAMklD,EAAMG,GAAIrlD,IAChBslD,EAAUjO,EAAMyG,GAAGyH,cAAcvlD,GACvC,IAAKq3C,EAAMyG,GAAG0H,aAAaF,GAAY,SAEvC,IAAIG,EAAUP,EAAMG,GAAIx7D,KAWtB47D,EALGP,EAAMG,GAAIj+C,OAEiB,YAArB89C,EAAMG,GAAIj+C,QAAyB,YAAYxO,KAAK6sD,GAGnDpO,EAAMyG,GAAG4H,kBAAkBD,GAF3BpO,EAAMyG,GAAG4H,kBAAkB,UAAYD,GAAS3iE,QAAQ,WAAY,IAFpEu0D,EAAMyG,GAAG4H,kBAAkB,UAAYD,GAAS3iE,QAAQ,aAAc,IAOlF,MAAM44D,EAAMwJ,EAAMG,GAAI7gE,MAEtB,GAAIk3D,EAAM0J,EAAS,CACjB,MAAMn7C,EAAU,IAAIotC,EAAMyK,MAAM,OAAQ,GAAI,GAC5C73C,EAAMwlB,QAAU5lC,EAAKlF,MAAMygE,EAAS1J,GACpCzxC,EAAMuzC,MAAUA,EAChB2H,EAAM7lE,KAAK2qB,EACb,CAEA,MAAM07C,EAAY,IAAItO,EAAMyK,MAAM,YAAa,IAAK,GACpD6D,EAAQrG,MAAU,CAAC,CAAC,OAAQgG,IAC5BK,EAAQnI,MAAUA,IAClBmI,EAAQ5D,OAAU,UAClB4D,EAAQzhD,KAAU,OAClBihD,EAAM7lE,KAAKqmE,GAEX,MAAMC,EAAY,IAAIvO,EAAMyK,MAAM,OAAQ,GAAI,GAC9C8D,EAAQn2B,QAAUg2B,EAClBG,EAAQpI,MAAUA,EAClB2H,EAAM7lE,KAAKsmE,GAEX,MAAMC,EAAY,IAAIxO,EAAMyK,MAAM,aAAc,KAAM,GACtD+D,EAAQrI,QAAYA,EACpBqI,EAAQ9D,OAAU,UAClB8D,EAAQ3hD,KAAU,OAClBihD,EAAM7lE,KAAKumE,GAEXT,EAAUF,EAAMG,GAAIvL,SACtB,CACA,GAAIsL,EAAUv7D,EAAKpR,OAAQ,CACzB,MAAMwxB,EAAU,IAAIotC,EAAMyK,MAAM,OAAQ,GAAI,GAC5C73C,EAAMwlB,QAAU5lC,EAAKlF,MAAMygE,GAC3Bn7C,EAAMuzC,MAAUA,EAChB2H,EAAM7lE,KAAK2qB,EACb,CAGA46C,EAAY3P,GAAGrlB,SAAW3oB,EAASs0C,GAAet0C,EAAQ3uB,EAAG4sE,EAC/D,OA7FE,IADA5sE,IACO2uB,EAAO3uB,GAAGilE,QAAUyH,EAAazH,OAA4B,cAAnBt2C,EAAO3uB,GAAGkB,MACzDlB,GA6FN,CACF,CACF,GG9GE,CAAC,eF6DY,SAAkB8+D,GAC/B,IAAIyO,EAEJ,GAAKzO,EAAMyG,GAAGh8D,QAAQikE,YAEtB,IAAKD,EAASzO,EAAMnwC,OAAOzuB,OAAS,EAAGqtE,GAAU,EAAGA,IAChB,WAA9BzO,EAAMnwC,OAAO4+C,GAAQrsE,OAErBmpE,GAAoBhqD,KAAKy+C,EAAMnwC,OAAO4+C,GAAQr2B,UAChDwzB,GAAe5L,EAAMnwC,OAAO4+C,GAAQj2B,UAGlC8yB,GAAQ/pD,KAAKy+C,EAAMnwC,OAAO4+C,GAAQr2B,UACpC2zB,GAAa/L,EAAMnwC,OAAO4+C,GAAQj2B,UAGxC,GE5EE,CAAC,cD4JY,SAAsBwnB,GAEnC,GAAKA,EAAMyG,GAAGh8D,QAAQikE,YAEtB,IAAK,IAAID,EAASzO,EAAMnwC,OAAOzuB,OAAS,EAAGqtE,GAAU,EAAGA,IACpB,WAA9BzO,EAAMnwC,OAAO4+C,GAAQrsE,MACpB4pE,GAAczqD,KAAKy+C,EAAMnwC,OAAO4+C,GAAQr2B,UAI7Cg0B,GAAgBpM,EAAMnwC,OAAO4+C,GAAQj2B,SAAUwnB,EAEnD,GCrKE,CAAC,YGnBY,SAAoBA,GACjC,IAAI2O,EAAMxwC,EACV,MAAMqvC,EAAcxN,EAAMnwC,OACpB6qC,EAAI8S,EAAYpsE,OAEtB,IAAK,IAAIy8D,EAAI,EAAGA,EAAInD,EAAGmD,IAAK,CAC1B,GAA4B,WAAxB2P,EAAY3P,GAAGz7D,KAAmB,SAEtC,MAAMytB,EAAS29C,EAAY3P,GAAGrlB,SACxBjS,EAAM1W,EAAOzuB,OAEnB,IAAKutE,EAAO,EAAGA,EAAOpoC,EAAKooC,IACC,iBAAtB9+C,EAAO8+C,GAAMvsE,OACfytB,EAAO8+C,GAAMvsE,KAAO,QAIxB,IAAKusE,EAAOxwC,EAAO,EAAGwwC,EAAOpoC,EAAKooC,IACN,SAAtB9+C,EAAO8+C,GAAMvsE,MACbusE,EAAO,EAAIpoC,GACe,SAA1B1W,EAAO8+C,EAAO,GAAGvsE,KAEnBytB,EAAO8+C,EAAO,GAAGv2B,QAAUvoB,EAAO8+C,GAAMv2B,QAAUvoB,EAAO8+C,EAAO,GAAGv2B,SAE/Du2B,IAASxwC,IAAQtO,EAAOsO,GAAQtO,EAAO8+C,IAE3CxwC,KAIAwwC,IAASxwC,IACXtO,EAAOzuB,OAAS+8B,EAEpB,CACF,IHTA,SAASywC,KAMPlsE,KAAKmsE,MAAQ,IAAI,GAEjB,IAAK,IAAI3tE,EAAI,EAAGA,EAAIosE,GAAOlsE,OAAQF,IACjCwB,KAAKmsE,MAAM5mE,KAAKqlE,GAAOpsE,GAAG,GAAIosE,GAAOpsE,GAAG,GAE5C,CAOA0tE,GAAK/tE,UAAUiuE,QAAU,SAAU9O,GACjC,MAAM1X,EAAQ5lD,KAAKmsE,MAAMtE,SAAS,IAElC,IAAK,IAAIrpE,EAAI,EAAGw5D,EAAIpS,EAAMlnD,OAAQF,EAAIw5D,EAAGx5D,IACvConD,EAAMpnD,GAAG8+D,EAEb,EAEA4O,GAAK/tE,UAAUkuE,MAAQ,GAEvB,YIxDA,SAASC,GAAY5K,EAAKqC,EAAIa,EAAKz3C,GACjCntB,KAAK0hE,IAAMA,EAGX1hE,KAAK+jE,GAASA,EAEd/jE,KAAK4kE,IAAMA,EAMX5kE,KAAKmtB,OAASA,EAEdntB,KAAKusE,OAAS,GACdvsE,KAAKwsE,OAAS,GACdxsE,KAAKysE,OAAS,GACdzsE,KAAK0sE,OAAS,GAYd1sE,KAAK2sE,QAAU,GAMf3sE,KAAK4sE,UAAa,EAClB5sE,KAAK6sE,KAAa,EAClB7sE,KAAK8sE,QAAa,EAClB9sE,KAAK+sE,OAAa,EAClB/sE,KAAKgtE,UAAc,EACnBhtE,KAAKitE,YAAc,EAInBjtE,KAAKktE,WAAa,OAElBltE,KAAKyjE,MAAQ,EAIb,MAAMhgD,EAAIzjB,KAAK0hE,IAEf,IAAK,IAAIx0C,EAAQ,EAAGy0C,EAAM,EAAGwL,EAAS,EAAGlgD,EAAS,EAAG+yC,EAAMv8C,EAAE/kB,OAAQ0uE,GAAe,EAAOzL,EAAM3B,EAAK2B,IAAO,CAC3G,MAAMhK,EAAKl0C,EAAEo0C,WAAW8J,GAExB,IAAKyL,EAAc,CACjB,GAAIpK,GAAQrL,GAAK,CACfwV,IAEW,IAAPxV,EACF1qC,GAAU,EAAIA,EAAS,EAEvBA,IAEF,QACF,CACEmgD,GAAe,CAEnB,CAEW,KAAPzV,GAAegK,IAAQ3B,EAAM,IACpB,KAAPrI,GAAegK,IACnB3hE,KAAKusE,OAAOhnE,KAAK2nB,GACjBltB,KAAKwsE,OAAOjnE,KAAKo8D,GACjB3hE,KAAKysE,OAAOlnE,KAAK4nE,GACjBntE,KAAK0sE,OAAOnnE,KAAK0nB,GACjBjtB,KAAK2sE,QAAQpnE,KAAK,GAElB6nE,GAAe,EACfD,EAAS,EACTlgD,EAAS,EACTC,EAAQy0C,EAAM,EAElB,CAGA3hE,KAAKusE,OAAOhnE,KAAKke,EAAE/kB,QACnBsB,KAAKwsE,OAAOjnE,KAAKke,EAAE/kB,QACnBsB,KAAKysE,OAAOlnE,KAAK,GACjBvF,KAAK0sE,OAAOnnE,KAAK,GACjBvF,KAAK2sE,QAAQpnE,KAAK,GAElBvF,KAAK8sE,QAAU9sE,KAAKusE,OAAO7tE,OAAS,CACtC,CAIA4tE,GAAWnuE,UAAUoH,KAAO,SAAU7F,EAAM6G,EAAK4/D,GAC/C,MAAMj2C,EAAQ,IAAI,GAAMxwB,EAAM6G,EAAK4/D,GAQnC,OAPAj2C,EAAMg2C,OAAQ,EAEVC,EAAU,GAAGnmE,KAAKyjE,QACtBvzC,EAAMuzC,MAAQzjE,KAAKyjE,MACf0C,EAAU,GAAGnmE,KAAKyjE,QAEtBzjE,KAAKmtB,OAAO5nB,KAAK2qB,GACVA,CACT,EAEAo8C,GAAWnuE,UAAUkvE,QAAU,SAAkBR,GAC/C,OAAO7sE,KAAKusE,OAAOM,GAAQ7sE,KAAKysE,OAAOI,IAAS7sE,KAAKwsE,OAAOK,EAC9D,EAEAP,GAAWnuE,UAAUmvE,eAAiB,SAAyB3uE,GAC7D,IAAK,IAAIklC,EAAM7jC,KAAK8sE,QAASnuE,EAAOklC,KAC9B7jC,KAAKusE,OAAO5tE,GAAQqB,KAAKysE,OAAO9tE,GAAQqB,KAAKwsE,OAAO7tE,IADjBA,KAKzC,OAAOA,CACT,EAGA2tE,GAAWnuE,UAAUovE,WAAa,SAAqB5L,GACrD,IAAK,IAAI99B,EAAM7jC,KAAK0hE,IAAIhjE,OAAQijE,EAAM99B,EAAK89B,IAAO,CAEhD,IAAKqB,GADMhjE,KAAK0hE,IAAI7J,WAAW8J,IACX,KACtB,CACA,OAAOA,CACT,EAGA2K,GAAWnuE,UAAUqvE,eAAiB,SAAyB7L,EAAK8L,GAClE,GAAI9L,GAAO8L,EAAO,OAAO9L,EAEzB,KAAOA,EAAM8L,GACX,IAAKzK,GAAQhjE,KAAK0hE,IAAI7J,aAAa8J,IAAS,OAAOA,EAAM,EAE3D,OAAOA,CACT,EAGA2K,GAAWnuE,UAAUuvE,UAAY,SAAoB/L,EAAKhJ,GACxD,IAAK,IAAI90B,EAAM7jC,KAAK0hE,IAAIhjE,OAAQijE,EAAM99B,GAChC7jC,KAAK0hE,IAAI7J,WAAW8J,KAAShJ,EADQgJ,KAG3C,OAAOA,CACT,EAGA2K,GAAWnuE,UAAUwvE,cAAgB,SAAwBhM,EAAKhJ,EAAM8U,GACtE,GAAI9L,GAAO8L,EAAO,OAAO9L,EAEzB,KAAOA,EAAM8L,GACX,GAAI9U,IAAS34D,KAAK0hE,IAAI7J,aAAa8J,GAAQ,OAAOA,EAAM,EAE1D,OAAOA,CACT,EAGA2K,GAAWnuE,UAAUyvE,SAAW,SAAmBC,EAAOtgD,EAAK4/C,EAAQW,GACrE,GAAID,GAAStgD,EACX,MAAO,GAGT,MAAMwgD,EAAQ,IAAIzvE,MAAMivB,EAAMsgD,GAE9B,IAAK,IAAIrvE,EAAI,EAAGquE,EAAOgB,EAAOhB,EAAOt/C,EAAKs/C,IAAQruE,IAAK,CACrD,IAAIwvE,EAAa,EACjB,MAAMC,EAAYjuE,KAAKusE,OAAOM,GAC9B,IACIpxC,EADAyyC,EAAQD,EAUZ,IALExyC,EAFEoxC,EAAO,EAAIt/C,GAAOugD,EAEb9tE,KAAKwsE,OAAOK,GAAQ,EAEpB7sE,KAAKwsE,OAAOK,GAGdqB,EAAQzyC,GAAQuyC,EAAab,GAAQ,CAC1C,MAAMxV,EAAK33D,KAAK0hE,IAAI7J,WAAWqW,GAE/B,GAAIlL,GAAQrL,GACC,IAAPA,EACFqW,GAAc,GAAKA,EAAahuE,KAAK2sE,QAAQE,IAAS,EAEtDmB,QAEG,MAAIE,EAAQD,EAAYjuE,KAAKysE,OAAOI,IAIzC,MAFAmB,GAGF,CAEAE,GACF,CAKEH,EAAMvvE,GAHJwvE,EAAab,EAGJ,IAAI7uE,MAAM0vE,EAAab,EAAS,GAAGtiE,KAAK,KAAO7K,KAAK0hE,IAAI92D,MAAMsjE,EAAOzyC,GAErEz7B,KAAK0hE,IAAI92D,MAAMsjE,EAAOzyC,EAErC,CAEA,OAAOsyC,EAAMljE,KAAK,GACpB,EAGAyhE,GAAWnuE,UAAU4pE,MAAQ,GAE7B,YC/MA,SAASoG,GAAS7Q,EAAOuP,GACvB,MAAMlL,EAAMrE,EAAMiP,OAAOM,GAAQvP,EAAMmP,OAAOI,GACxChpC,EAAMy5B,EAAMkP,OAAOK,GAEzB,OAAOvP,EAAMoE,IAAI92D,MAAM+2D,EAAK99B,EAC9B,CAEA,SAASuqC,GAAc7jE,GACrB,MAAMme,EAAS,GACTmb,EAAMt5B,EAAI7L,OAEhB,IAAIijE,EAAM,EACNhK,EAAKptD,EAAIstD,WAAW8J,GACpB0M,GAAY,EACZhD,EAAU,EACV5jC,EAAU,GAEd,KAAOk6B,EAAM99B,GACA,MAAP8zB,IACG0W,GAOH5mC,GAAWl9B,EAAI42D,UAAUkK,EAAS1J,EAAM,GACxC0J,EAAU1J,IANVj5C,EAAOnjB,KAAKkiC,EAAUl9B,EAAI42D,UAAUkK,EAAS1J,IAC7Cl6B,EAAU,GACV4jC,EAAU1J,EAAM,IAQpB0M,EAAoB,KAAP1W,EACbgK,IAEAhK,EAAKptD,EAAIstD,WAAW8J,GAKtB,OAFAj5C,EAAOnjB,KAAKkiC,EAAUl9B,EAAI42D,UAAUkK,IAE7B3iD,CACT,CC9CA,SAAS4lD,GAAsBhR,EAAOiR,GACpC,MAAM1qC,EAAMy5B,EAAMkP,OAAO+B,GACzB,IAAI5M,EAAMrE,EAAMiP,OAAOgC,GAAajR,EAAMmP,OAAO8B,GAEjD,MAAM5K,EAASrG,EAAMoE,IAAI7J,WAAW8J,KAEpC,GAAe,KAAXgC,GACW,KAAXA,GACW,KAAXA,EACF,OAAQ,EAGV,GAAIhC,EAAM99B,EAAK,CAGb,IAAKm/B,GAFM1F,EAAMoE,IAAI7J,WAAW8J,IAI9B,OAAQ,CAEZ,CAEA,OAAOA,CACT,CAIA,SAAS6M,GAAuBlR,EAAOiR,GACrC,MAAMrhD,EAAQowC,EAAMiP,OAAOgC,GAAajR,EAAMmP,OAAO8B,GAC/C1qC,EAAMy5B,EAAMkP,OAAO+B,GACzB,IAAI5M,EAAMz0C,EAGV,GAAIy0C,EAAM,GAAK99B,EAAO,OAAQ,EAE9B,IAAI8zB,EAAK2F,EAAMoE,IAAI7J,WAAW8J,KAE9B,GAAIhK,EAAK,IAAeA,EAAK,GAAe,OAAQ,EAEpD,OAAS,CAEP,GAAIgK,GAAO99B,EAAO,OAAQ,EAI1B,GAFA8zB,EAAK2F,EAAMoE,IAAI7J,WAAW8J,OAEtBhK,GAAM,IAAeA,GAAM,IAA/B,CASA,GAAW,KAAPA,GAA6B,KAAPA,EACxB,MAGF,OAAQ,CAPR,CAHE,GAAIgK,EAAMz0C,GAAS,GAAM,OAAQ,CAWrC,CAEA,OAAIy0C,EAAM99B,IACR8zB,EAAK2F,EAAMoE,IAAI7J,WAAW8J,IAErBqB,GAAQrL,KAEH,EAGLgK,CACT,CCxEA,MCSM8M,GAAc,kIAEdC,GAAc,mCAMdC,GAAc,IAAIr4C,OAAO,OAASm4C,GAAW,IAAMC,GAA1B,uHAEzBE,GAAyB,IAAIt4C,OAAO,OAASm4C,GAAW,IAAMC,GAAY,KCd1EG,GAAiB,CACrB,CAAC,6CAA8C,oCAAoC,GACnF,CAAC,QAAgB,OAAS,GAC1B,CAAC,OAAgB,OAAS,GAC1B,CAAC,WAAgB,KAAS,GAC1B,CAAC,eAAgB,SAAS,GAC1B,CAAC,IAAIv4C,OAAO,QFXd,CACE,UACA,UACA,QACA,OACA,WACA,aACA,OACA,UACA,SACA,MACA,WACA,KACA,UACA,SACA,MACA,MACA,KACA,KACA,WACA,aACA,SACA,SACA,OACA,QACA,WACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,KACA,OACA,SACA,SACA,KACA,OACA,OACA,OACA,WACA,MACA,WACA,KACA,WACA,SACA,IACA,QACA,SACA,UACA,UACA,QACA,QACA,KACA,QACA,KACA,QACA,QACA,KACA,QACA,MEnDkCzrB,KAAK,KAAO,mBAAoB,KAAM,MAAM,GAC9E,CAAC,IAAIyrB,OAAOs4C,GAAuB/5C,OAAS,SAAW,MAAM,ICM/D,MAAM,GAAS,CAGb,CAAC,QL8BY,SAAgByoC,EAAOiR,EAAWO,EAASC,GAExD,GAAIR,EAAY,EAAIO,EAAW,OAAO,EAEtC,IAAIE,EAAWT,EAAY,EAE3B,GAAIjR,EAAMoP,OAAOsC,GAAY1R,EAAMsP,UAAa,OAAO,EAGvD,GAAItP,EAAMoP,OAAOsC,GAAY1R,EAAMsP,WAAa,EAAK,OAAO,EAM5D,IAAIjL,EAAMrE,EAAMiP,OAAOyC,GAAY1R,EAAMmP,OAAOuC,GAChD,GAAIrN,GAAOrE,EAAMkP,OAAOwC,GAAa,OAAO,EAE5C,MAAMC,EAAU3R,EAAMoE,IAAI7J,WAAW8J,KACrC,GAAgB,MAAZsN,GAAuC,KAAZA,GAAuC,KAAZA,EAA2B,OAAO,EAE5F,GAAItN,GAAOrE,EAAMkP,OAAOwC,GAAa,OAAO,EAE5C,MAAME,EAAW5R,EAAMoE,IAAI7J,WAAW8J,KACtC,GAAiB,MAAbuN,GAAyC,KAAbA,GAAyC,KAAbA,IAA6BlM,GAAQkM,GAC/F,OAAO,EAKT,GAAgB,KAAZD,GAA2BjM,GAAQkM,GAAa,OAAO,EAE3D,KAAOvN,EAAMrE,EAAMkP,OAAOwC,IAAW,CACnC,MAAMrX,EAAK2F,EAAMoE,IAAI7J,WAAW8J,GAEhC,GAAW,MAAPhK,GAA6B,KAAPA,GAA6B,KAAPA,IAAuBqL,GAAQrL,GAAO,OAAO,EAE7FgK,GACF,CAEA,IAAIwN,EAAWhB,GAAQ7Q,EAAOiR,EAAY,GACtC/hE,EAAU2iE,EAAS1mE,MAAM,KAC7B,MAAM2mE,EAAS,GACf,IAAK,IAAI5wE,EAAI,EAAGA,EAAIgO,EAAQ9N,OAAQF,IAAK,CACvC,MAAMsrE,EAAIt9D,EAAQhO,GAAG4yB,OACrB,IAAK04C,EAAG,CAGN,GAAU,IAANtrE,GAAWA,IAAMgO,EAAQ9N,OAAS,EACpC,SAEA,OAAO,CAEX,CAEA,IAAK,WAAWmgB,KAAKirD,GAAM,OAAO,EACC,KAA/BA,EAAEjS,WAAWiS,EAAEprE,OAAS,GAC1B0wE,EAAO7pE,KAAyB,KAApBukE,EAAEjS,WAAW,GAAqB,SAAW,SAC5B,KAApBiS,EAAEjS,WAAW,GACtBuX,EAAO7pE,KAAK,QAEZ6pE,EAAO7pE,KAAK,GAEhB,CAGA,GADA4pE,EAAWhB,GAAQ7Q,EAAOiR,GAAWn9C,QACN,IAA3B+9C,EAASpuE,QAAQ,KAAe,OAAO,EAC3C,GAAIu8D,EAAMoP,OAAO6B,GAAajR,EAAMsP,WAAa,EAAK,OAAO,EAC7DpgE,EAAU4hE,GAAae,GACnB3iE,EAAQ9N,QAAyB,KAAf8N,EAAQ,IAAWA,EAAQ6iE,QAC7C7iE,EAAQ9N,QAA0C,KAAhC8N,EAAQA,EAAQ9N,OAAS,IAAW8N,EAAQrD,MAIlE,MAAMmmE,EAAc9iE,EAAQ9N,OAC5B,GAAoB,IAAhB4wE,GAAqBA,IAAgBF,EAAO1wE,OAAU,OAAO,EAEjE,GAAIqwE,EAAU,OAAO,EAErB,MAAMQ,EAAgBjS,EAAM4P,WAC5B5P,EAAM4P,WAAa,QAInB,MAAMsC,EAAkBlS,EAAMyG,GAAGmC,MAAMiG,MAAMtE,SAAS,cAGhD4H,EAAa,CAAClB,EAAW,GADdjR,EAAM/3D,KAAK,aAAc,QAAS,GAE1CiF,IAAMilE,EAEGnS,EAAM/3D,KAAK,aAAc,QAAS,GAC1CiF,IAAM,CAAC+jE,EAAWA,EAAY,GAErBjR,EAAM/3D,KAAK,UAAW,KAAM,GACpCiF,IAAM,CAAC+jE,EAAWA,EAAY,GAEzC,IAAK,IAAI/vE,EAAI,EAAGA,EAAIgO,EAAQ9N,OAAQF,IAAK,CACvC,MAAMkxE,EAAWpS,EAAM/3D,KAAK,UAAW,KAAM,GACzC6pE,EAAO5wE,KACTkxE,EAASnK,MAAS,CAAC,CAAC,QAAS,cAAgB6J,EAAO5wE,MAGtD,MAAMmxE,EAAWrS,EAAM/3D,KAAK,SAAU,GAAI,GAC1CoqE,EAASj6B,QAAWlpC,EAAQhO,GAAG4yB,OAC/Bu+C,EAAS75B,SAAW,GAEpBwnB,EAAM/3D,KAAK,WAAY,MAAO,EAChC,CAKA,IAAIqqE,EAHJtS,EAAM/3D,KAAK,WAAY,MAAO,GAC9B+3D,EAAM/3D,KAAK,cAAe,SAAU,GAGpC,IAAIsqE,EAAqB,EAEzB,IAAKb,EAAWT,EAAY,EAAGS,EAAWF,KACpCxR,EAAMoP,OAAOsC,GAAY1R,EAAMsP,WADcoC,IAAY,CAG7D,IAAIc,GAAY,EAChB,IAAK,IAAItxE,EAAI,EAAGw5D,EAAIwX,EAAgB9wE,OAAQF,EAAIw5D,EAAGx5D,IACjD,GAAIgxE,EAAgBhxE,GAAG8+D,EAAO0R,EAAUF,GAAS,GAAO,CACtDgB,GAAY,EACZ,KACF,CAGF,GAAIA,EAAa,MAEjB,GADAX,EAAWhB,GAAQ7Q,EAAO0R,GAAU59C,QAC/B+9C,EAAY,MACjB,GAAI7R,EAAMoP,OAAOsC,GAAY1R,EAAMsP,WAAa,EAAK,MAQrD,GAPApgE,EAAU4hE,GAAae,GACnB3iE,EAAQ9N,QAAyB,KAAf8N,EAAQ,IAAWA,EAAQ6iE,QAC7C7iE,EAAQ9N,QAA0C,KAAhC8N,EAAQA,EAAQ9N,OAAS,IAAW8N,EAAQrD,MAIlE0mE,GAAsBP,EAAc9iE,EAAQ9N,OACxCmxE,EArLwB,MAqLwB,MAEpD,GAAIb,IAAaT,EAAY,EAAG,CACZjR,EAAM/3D,KAAK,aAAc,QAAS,GAC1CiF,IAAMolE,EAAa,CAACrB,EAAY,EAAG,EAC/C,CAEkBjR,EAAM/3D,KAAK,UAAW,KAAM,GACpCiF,IAAM,CAACwkE,EAAUA,EAAW,GAEtC,IAAK,IAAIxwE,EAAI,EAAGA,EAAI8wE,EAAa9wE,IAAK,CACpC,MAAMuxE,EAAYzS,EAAM/3D,KAAK,UAAW,KAAM,GAC1C6pE,EAAO5wE,KACTuxE,EAAUxK,MAAS,CAAC,CAAC,QAAS,cAAgB6J,EAAO5wE,MAGvD,MAAMmxE,EAAWrS,EAAM/3D,KAAK,SAAU,GAAI,GAC1CoqE,EAASj6B,QAAWlpC,EAAQhO,GAAKgO,EAAQhO,GAAG4yB,OAAS,GACrDu+C,EAAS75B,SAAW,GAEpBwnB,EAAM/3D,KAAK,WAAY,MAAO,EAChC,CACA+3D,EAAM/3D,KAAK,WAAY,MAAO,EAChC,CAYA,OAVIqqE,IACFtS,EAAM/3D,KAAK,cAAe,SAAU,GACpCqqE,EAAW,GAAKZ,GAGlB1R,EAAM/3D,KAAK,cAAe,SAAU,GACpCkqE,EAAW,GAAKT,EAEhB1R,EAAM4P,WAAaqC,EACnBjS,EAAMuP,KAAOmC,GACN,CACT,EK3M+B,CAAC,YAAa,cAC3C,CAAC,OCvBY,SAAe1R,EAAOiR,EAAWO,GAC9C,GAAIxR,EAAMoP,OAAO6B,GAAajR,EAAMsP,UAAY,EAAK,OAAO,EAE5D,IAAIoC,EAAWT,EAAY,EACvB9yC,EAAOuzC,EAEX,KAAOA,EAAWF,GAChB,GAAIxR,EAAM+P,QAAQ2B,GAChBA,QADF,CAKA,KAAI1R,EAAMoP,OAAOsC,GAAY1R,EAAMsP,WAAa,GAKhD,MAJEoC,IACAvzC,EAAOuzC,CAJT,CAUF1R,EAAMuP,KAAOpxC,EAEb,MAAMvL,EAAUotC,EAAM/3D,KAAK,aAAc,OAAQ,GAIjD,OAHA2qB,EAAMwlB,QAAU4nB,EAAMsQ,SAASW,EAAW9yC,EAAM,EAAI6hC,EAAMsP,WAAW,GAAS,KAC9E18C,EAAM1lB,IAAU,CAAC+jE,EAAWjR,EAAMuP,OAE3B,CACT,GDHE,CAAC,QExBY,SAAgBvP,EAAOiR,EAAWO,EAASC,GACxD,IAAIpN,EAAMrE,EAAMiP,OAAOgC,GAAajR,EAAMmP,OAAO8B,GAC7C1qC,EAAMy5B,EAAMkP,OAAO+B,GAGvB,GAAIjR,EAAMoP,OAAO6B,GAAajR,EAAMsP,WAAa,EAAK,OAAO,EAE7D,GAAIjL,EAAM,EAAI99B,EAAO,OAAO,EAE5B,MAAM8/B,EAASrG,EAAMoE,IAAI7J,WAAW8J,GAEpC,GAAe,MAAXgC,GAAqC,KAAXA,EAC5B,OAAO,EAIT,IAAIqM,EAAMrO,EACVA,EAAMrE,EAAMoQ,UAAU/L,EAAKgC,GAE3B,IAAI3D,EAAM2B,EAAMqO,EAEhB,GAAIhQ,EAAM,EAAK,OAAO,EAEtB,MAAMgI,EAAS1K,EAAMoE,IAAI92D,MAAMolE,EAAKrO,GAC9B3sC,EAASsoC,EAAMoE,IAAI92D,MAAM+2D,EAAK99B,GAEpC,GAAe,KAAX8/B,GACE3uC,EAAOj0B,QAAQ+J,OAAO8sD,aAAa+L,KAAY,EACjD,OAAO,EAKX,GAAIoL,EAAU,OAAO,EAGrB,IAAIC,EAAWT,EACX0B,GAAgB,EAEpB,MACEjB,MACIA,GAAYF,MAMhBnN,EAAMqO,EAAM1S,EAAMiP,OAAOyC,GAAY1R,EAAMmP,OAAOuC,GAClDnrC,EAAMy5B,EAAMkP,OAAOwC,KAEfrN,EAAM99B,GAAOy5B,EAAMoP,OAAOsC,GAAY1R,EAAMsP,aAOhD,GAAItP,EAAMoE,IAAI7J,WAAW8J,KAASgC,KAE9BrG,EAAMoP,OAAOsC,GAAY1R,EAAMsP,WAAa,IAKhDjL,EAAMrE,EAAMoQ,UAAU/L,EAAKgC,GAGvBhC,EAAMqO,EAAMhQ,IAGhB2B,EAAMrE,EAAMiQ,WAAW5L,GAEnBA,EAAM99B,KAAV,CAEAosC,GAAgB,EAEhB,KAJ0B,CAQ5BjQ,EAAM1C,EAAMoP,OAAO6B,GAEnBjR,EAAMuP,KAAOmC,GAAYiB,EAAgB,EAAI,GAE7C,MAAM//C,EAAUotC,EAAM/3D,KAAK,QAAS,OAAQ,GAM5C,OALA2qB,EAAM/F,KAAU6K,EAChB9E,EAAMwlB,QAAU4nB,EAAMsQ,SAASW,EAAY,EAAGS,EAAUhP,GAAK,GAC7D9vC,EAAM83C,OAAUA,EAChB93C,EAAM1lB,IAAU,CAAC+jE,EAAWjR,EAAMuP,OAE3B,CACT,EFnE+B,CAAC,YAAa,YAAa,aAAc,SACtE,CAAC,aGvBY,SAAqBvP,EAAOiR,EAAWO,EAASC,GAC7D,IAAIpN,EAAMrE,EAAMiP,OAAOgC,GAAajR,EAAMmP,OAAO8B,GAC7C1qC,EAAMy5B,EAAMkP,OAAO+B,GAEvB,MAAM2B,EAAa5S,EAAMwP,QAGzB,GAAIxP,EAAMoP,OAAO6B,GAAajR,EAAMsP,WAAa,EAAK,OAAO,EAG7D,GAAkC,KAA9BtP,EAAMoE,IAAI7J,WAAW8J,GAAwB,OAAO,EAIxD,GAAIoN,EAAU,OAAO,EAErB,MAAMoB,EAAa,GACbC,EAAa,GACbC,EAAa,GACbC,EAAa,GAEbd,EAAkBlS,EAAMyG,GAAGmC,MAAMiG,MAAMtE,SAAS,cAEhD0H,EAAgBjS,EAAM4P,WAC5B5P,EAAM4P,WAAa,aACnB,IACI8B,EADAuB,GAAgB,EAqBpB,IAAKvB,EAAWT,EAAWS,EAAWF,EAASE,IAAY,CASzD,MAAMwB,EAAclT,EAAMoP,OAAOsC,GAAY1R,EAAMsP,UAKnD,GAHAjL,EAAMrE,EAAMiP,OAAOyC,GAAY1R,EAAMmP,OAAOuC,GAC5CnrC,EAAMy5B,EAAMkP,OAAOwC,GAEfrN,GAAO99B,EAET,MAGF,GAAoC,KAAhCy5B,EAAMoE,IAAI7J,WAAW8J,OAA2B6O,EAAa,CAI/D,IACIC,EACAC,EAFAC,EAAUrT,EAAMoP,OAAOsC,GAAY,EAKL,KAA9B1R,EAAMoE,IAAI7J,WAAW8J,IAGvBA,IACAgP,IACAD,GAAY,EACZD,GAAmB,GACoB,IAA9BnT,EAAMoE,IAAI7J,WAAW8J,IAC9B8O,GAAmB,GAEdnT,EAAMqP,QAAQqC,GAAY2B,GAAW,GAAM,GAG9ChP,IACAgP,IACAD,GAAY,GAKZA,GAAY,GAGdD,GAAmB,EAGrB,IAAIxjD,EAAS0jD,EAIb,IAHAR,EAAU5qE,KAAK+3D,EAAMiP,OAAOyC,IAC5B1R,EAAMiP,OAAOyC,GAAYrN,EAElBA,EAAM99B,GAAK,CAChB,MAAM8zB,EAAK2F,EAAMoE,IAAI7J,WAAW8J,GAEhC,IAAIqB,GAAQrL,GAOV,MANW,IAAPA,EACF1qC,GAAU,GAAKA,EAASqwC,EAAMqP,QAAQqC,IAAa0B,EAAY,EAAI,IAAM,EAEzEzjD,IAMJ00C,GACF,CAEA4O,EAAgB5O,GAAO99B,EAEvBusC,EAAW7qE,KAAK+3D,EAAMqP,QAAQqC,IAC9B1R,EAAMqP,QAAQqC,GAAY1R,EAAMoP,OAAOsC,GAAY,GAAKyB,EAAmB,EAAI,GAE/EJ,EAAU9qE,KAAK+3D,EAAMoP,OAAOsC,IAC5B1R,EAAMoP,OAAOsC,GAAY/hD,EAAS0jD,EAElCL,EAAU/qE,KAAK+3D,EAAMmP,OAAOuC,IAC5B1R,EAAMmP,OAAOuC,GAAYrN,EAAMrE,EAAMiP,OAAOyC,GAC5C,QACF,CAGA,GAAIuB,EAAiB,MAGrB,IAAIT,GAAY,EAChB,IAAK,IAAItxE,EAAI,EAAGw5D,EAAIwX,EAAgB9wE,OAAQF,EAAIw5D,EAAGx5D,IACjD,GAAIgxE,EAAgBhxE,GAAG8+D,EAAO0R,EAAUF,GAAS,GAAO,CACtDgB,GAAY,EACZ,KACF,CAGF,GAAIA,EAAW,CAKbxS,EAAMwP,QAAUkC,EAEQ,IAApB1R,EAAMsP,YAIRuD,EAAU5qE,KAAK+3D,EAAMiP,OAAOyC,IAC5BoB,EAAW7qE,KAAK+3D,EAAMqP,QAAQqC,IAC9BsB,EAAU/qE,KAAK+3D,EAAMmP,OAAOuC,IAC5BqB,EAAU9qE,KAAK+3D,EAAMoP,OAAOsC,IAC5B1R,EAAMoP,OAAOsC,IAAa1R,EAAMsP,WAGlC,KACF,CAEAuD,EAAU5qE,KAAK+3D,EAAMiP,OAAOyC,IAC5BoB,EAAW7qE,KAAK+3D,EAAMqP,QAAQqC,IAC9BsB,EAAU/qE,KAAK+3D,EAAMmP,OAAOuC,IAC5BqB,EAAU9qE,KAAK+3D,EAAMoP,OAAOsC,IAI5B1R,EAAMoP,OAAOsC,IAAa,CAC5B,CAEA,MAAM4B,EAAYtT,EAAMsP,UACxBtP,EAAMsP,UAAY,EAElB,MAAMhB,EAAWtO,EAAM/3D,KAAK,kBAAmB,aAAc,GAC7DqmE,EAAQ5D,OAAS,IACjB,MAAM6I,EAAQ,CAACtC,EAAW,GAC1B3C,EAAQphE,IAASqmE,EAEjBvT,EAAMyG,GAAGmC,MAAM4K,SAASxT,EAAOiR,EAAWS,GAEzB1R,EAAM/3D,KAAK,mBAAoB,cAAe,GACvDyiE,OAAS,IAEjB1K,EAAMwP,QAAUoD,EAChB5S,EAAM4P,WAAaqC,EACnBsB,EAAM,GAAKvT,EAAMuP,KAIjB,IAAK,IAAIruE,EAAI,EAAGA,EAAI8xE,EAAU5xE,OAAQF,IACpC8+D,EAAMiP,OAAO/tE,EAAI+vE,GAAa4B,EAAU3xE,GACxC8+D,EAAMmP,OAAOjuE,EAAI+vE,GAAa+B,EAAU9xE,GACxC8+D,EAAMoP,OAAOluE,EAAI+vE,GAAa8B,EAAU7xE,GACxC8+D,EAAMqP,QAAQnuE,EAAI+vE,GAAa6B,EAAW5xE,GAI5C,OAFA8+D,EAAMsP,UAAYgE,GAEX,CACT,EHrL+B,CAAC,YAAa,YAAa,aAAc,SACtE,CAAC,KIxBY,SAAatT,EAAOiR,EAAWO,EAASC,GACrD,MAAMlrC,EAAMy5B,EAAMkP,OAAO+B,GAEzB,GAAIjR,EAAMoP,OAAO6B,GAAajR,EAAMsP,WAAa,EAAK,OAAO,EAE7D,IAAIjL,EAAMrE,EAAMiP,OAAOgC,GAAajR,EAAMmP,OAAO8B,GACjD,MAAM5K,EAASrG,EAAMoE,IAAI7J,WAAW8J,KAGpC,GAAe,KAAXgC,GACW,KAAXA,GACW,KAAXA,EACF,OAAO,EAKT,IAAIoN,EAAM,EACV,KAAOpP,EAAM99B,GAAK,CAChB,MAAM8zB,EAAK2F,EAAMoE,IAAI7J,WAAW8J,KAChC,GAAIhK,IAAOgM,IAAWX,GAAQrL,GAAO,OAAO,EACxCA,IAAOgM,GAAUoN,GACvB,CAEA,GAAIA,EAAM,EAAK,OAAO,EAEtB,GAAIhC,EAAU,OAAO,EAErBzR,EAAMuP,KAAO0B,EAAY,EAEzB,MAAMr+C,EAASotC,EAAM/3D,KAAK,KAAM,KAAM,GAItC,OAHA2qB,EAAM1lB,IAAS,CAAC+jE,EAAWjR,EAAMuP,MACjC38C,EAAM83C,OAAS1pE,MAAMyyE,EAAM,GAAGlmE,KAAKC,OAAO8sD,aAAa+L,KAEhD,CACT,EJX+B,CAAC,YAAa,YAAa,aAAc,SACtE,CAAC,OJ4DY,SAAerG,EAAOiR,EAAWO,EAASC,GACvD,IAAIlrC,EAAK89B,EAAKz0C,EAAOgD,EACjB8+C,EAAWT,EACXxB,GAAQ,EAGZ,GAAIzP,EAAMoP,OAAOsC,GAAY1R,EAAMsP,WAAa,EAAK,OAAO,EAQ5D,GAAItP,EAAM2P,YAAc,GACpB3P,EAAMoP,OAAOsC,GAAY1R,EAAM2P,YAAc,GAC7C3P,EAAMoP,OAAOsC,GAAY1R,EAAMsP,UACjC,OAAO,EAGT,IAgBIoE,EACAC,EACAC,EAlBAC,GAAyB,EAmB7B,GAfIpC,GAA+B,cAArBzR,EAAM4P,YAMd5P,EAAMoP,OAAOsC,IAAa1R,EAAMsP,YAClCuE,GAAyB,IAQxBD,EAAiB1C,GAAsBlR,EAAO0R,KAAc,GAO/D,GANAgC,GAAY,EACZ9jD,EAAQowC,EAAMiP,OAAOyC,GAAY1R,EAAMmP,OAAOuC,GAC9CiC,EAAc/jE,OAAOowD,EAAMoE,IAAI92D,MAAMsiB,EAAOgkD,EAAiB,IAIzDC,GAA0C,IAAhBF,EAAmB,OAAO,MACnD,OAAKC,EAAiB5C,GAAqBhR,EAAO0R,KAAc,GAGrE,OAAO,EAFPgC,GAAY,CAGd,CAIA,GAAIG,GACE7T,EAAMiQ,WAAW2D,IAAmB5T,EAAMkP,OAAOwC,GAAW,OAAO,EAIzE,GAAID,EAAU,OAAO,EAGrB,MAAMqC,EAAiB9T,EAAMoE,IAAI7J,WAAWqZ,EAAiB,GAGvDG,EAAa/T,EAAMnwC,OAAOzuB,OAE5BsyE,GACF9gD,EAAcotC,EAAM/3D,KAAK,oBAAqB,KAAM,GAChC,IAAhB0rE,IACF/gD,EAAMq1C,MAAQ,CAAC,CAAC,QAAS0L,MAG3B/gD,EAAcotC,EAAM/3D,KAAK,mBAAoB,KAAM,GAGrD,MAAM+rE,EAAY,CAACtC,EAAU,GAC7B9+C,EAAM1lB,IAAS8mE,EACfphD,EAAM83C,OAASl9D,OAAO8sD,aAAawZ,GAMnC,IAAIG,GAAe,EACnB,MAAM/B,EAAkBlS,EAAMyG,GAAGmC,MAAMiG,MAAMtE,SAAS,QAEhD0H,EAAgBjS,EAAM4P,WAG5B,IAFA5P,EAAM4P,WAAa,OAEZ8B,EAAWF,GAAS,CACzBnN,EAAMuP,EACNrtC,EAAMy5B,EAAMkP,OAAOwC,GAEnB,MAAM2B,EAAUrT,EAAMoP,OAAOsC,GAAYkC,GAAkB5T,EAAMiP,OAAOyC,GAAY1R,EAAMmP,OAAOuC,IACjG,IAAI/hD,EAAS0jD,EAEb,KAAOhP,EAAM99B,GAAK,CAChB,MAAM8zB,EAAK2F,EAAMoE,IAAI7J,WAAW8J,GAEhC,GAAW,IAAPhK,EACF1qC,GAAU,GAAKA,EAASqwC,EAAMqP,QAAQqC,IAAa,MAC9C,IAAW,KAAPrX,EAGT,MAFA1qC,GAGF,CAEA00C,GACF,CAEA,MAAM6P,EAAe7P,EACrB,IAAI8P,EAIFA,EAFED,GAAgB3tC,EAEE,EAEA5W,EAAS0jD,EAK3Bc,EAAoB,IAAKA,EAAoB,GAIjD,MAAMtE,EAASwD,EAAUc,EAGzBvhD,EAAeotC,EAAM/3D,KAAK,iBAAkB,KAAM,GAClD2qB,EAAM83C,OAASl9D,OAAO8sD,aAAawZ,GACnC,MAAMM,EAAY,CAAC1C,EAAU,GAC7B9+C,EAAM1lB,IAASknE,EACXV,IACF9gD,EAAM/F,KAAOmzC,EAAMoE,IAAI92D,MAAMsiB,EAAOgkD,EAAiB,IAIvD,MAAMS,EAAWrU,EAAMyP,MACjBuD,EAAYhT,EAAMmP,OAAOuC,GACzBqB,EAAY/S,EAAMoP,OAAOsC,GAMzB4C,EAAgBtU,EAAM2P,WAyC5B,GAxCA3P,EAAM2P,WAAa3P,EAAMsP,UACzBtP,EAAMsP,UAAYO,EAElB7P,EAAMyP,OAAQ,EACdzP,EAAMmP,OAAOuC,GAAYwC,EAAelU,EAAMiP,OAAOyC,GACrD1R,EAAMoP,OAAOsC,GAAY/hD,EAErBukD,GAAgB3tC,GAAOy5B,EAAM+P,QAAQ2B,EAAW,GAQlD1R,EAAMuP,KAAOjpC,KAAK6pC,IAAInQ,EAAMuP,KAAO,EAAGiC,GAEtCxR,EAAMyG,GAAGmC,MAAM4K,SAASxT,EAAO0R,EAAUF,GAAS,GAI/CxR,EAAMyP,QAASwE,IAClBxE,GAAQ,GAIVwE,EAAgBjU,EAAMuP,KAAOmC,EAAY,GAAK1R,EAAM+P,QAAQ/P,EAAMuP,KAAO,GAEzEvP,EAAMsP,UAAYtP,EAAM2P,WACxB3P,EAAM2P,WAAa2E,EACnBtU,EAAMmP,OAAOuC,GAAYsB,EACzBhT,EAAMoP,OAAOsC,GAAYqB,EACzB/S,EAAMyP,MAAQ4E,EAEdzhD,EAAeotC,EAAM/3D,KAAK,kBAAmB,MAAO,GACpD2qB,EAAM83C,OAASl9D,OAAO8sD,aAAawZ,GAEnCpC,EAAW1R,EAAMuP,KACjB6E,EAAU,GAAK1C,EAEXA,GAAYF,EAAW,MAK3B,GAAIxR,EAAMoP,OAAOsC,GAAY1R,EAAMsP,UAAa,MAGhD,GAAItP,EAAMoP,OAAOsC,GAAY1R,EAAMsP,WAAa,EAAK,MAGrD,IAAIkD,GAAY,EAChB,IAAK,IAAItxE,EAAI,EAAGw5D,EAAIwX,EAAgB9wE,OAAQF,EAAIw5D,EAAGx5D,IACjD,GAAIgxE,EAAgBhxE,GAAG8+D,EAAO0R,EAAUF,GAAS,GAAO,CACtDgB,GAAY,EACZ,KACF,CAEF,GAAIA,EAAa,MAGjB,GAAIkB,EAAW,CAEb,GADAE,EAAiB1C,GAAsBlR,EAAO0R,GAC1CkC,EAAiB,EAAK,MAC1BhkD,EAAQowC,EAAMiP,OAAOyC,GAAY1R,EAAMmP,OAAOuC,EAChD,MAEE,GADAkC,EAAiB5C,GAAqBhR,EAAO0R,GACzCkC,EAAiB,EAAK,MAG5B,GAAIE,IAAmB9T,EAAMoE,IAAI7J,WAAWqZ,EAAiB,GAAM,KACrE,CAoBA,OAhBEhhD,EADE8gD,EACM1T,EAAM/3D,KAAK,qBAAsB,MAAO,GAExC+3D,EAAM/3D,KAAK,oBAAqB,MAAO,GAEjD2qB,EAAM83C,OAASl9D,OAAO8sD,aAAawZ,GAEnCE,EAAU,GAAKtC,EACf1R,EAAMuP,KAAOmC,EAEb1R,EAAM4P,WAAaqC,EAGfxC,GAxPN,SAA8BzP,EAAOqH,GACnC,MAAMlB,EAAQnG,EAAMmG,MAAQ,EAE5B,IAAK,IAAIjlE,EAAImmE,EAAM,EAAG3M,EAAIsF,EAAMnwC,OAAOzuB,OAAS,EAAGF,EAAIw5D,EAAGx5D,IACpD8+D,EAAMnwC,OAAO3uB,GAAGilE,QAAUA,GAAkC,mBAAzBnG,EAAMnwC,OAAO3uB,GAAGkB,OACrD49D,EAAMnwC,OAAO3uB,EAAI,GAAGqQ,QAAS,EAC7ByuD,EAAMnwC,OAAO3uB,GAAGqQ,QAAS,EACzBrQ,GAAK,EAGX,CA+OIqzE,CAAoBvU,EAAO+T,IAGtB,CACT,EI7S+B,CAAC,YAAa,YAAa,eACxD,CAAC,YK5BY,SAAoB/T,EAAOiR,EAAWuD,EAAU/C,GAC7D,IAAIpN,EAAMrE,EAAMiP,OAAOgC,GAAajR,EAAMmP,OAAO8B,GAC7C1qC,EAAMy5B,EAAMkP,OAAO+B,GACnBS,EAAWT,EAAY,EAG3B,GAAIjR,EAAMoP,OAAO6B,GAAajR,EAAMsP,WAAa,EAAK,OAAO,EAE7D,GAAkC,KAA9BtP,EAAMoE,IAAI7J,WAAW8J,GAAwB,OAAO,EAExD,SAASoQ,EAAa/C,GACpB,MAAMF,EAAUxR,EAAMwP,QAEtB,GAAIkC,GAAYF,GAAWxR,EAAM+P,QAAQ2B,GAEvC,OAAO,KAGT,IAAIgD,GAAiB,EASrB,GALI1U,EAAMoP,OAAOsC,GAAY1R,EAAMsP,UAAY,IAAKoF,GAAiB,GAGjE1U,EAAMoP,OAAOsC,GAAY,IAAKgD,GAAiB,IAE9CA,EAAgB,CACnB,MAAMxC,EAAkBlS,EAAMyG,GAAGmC,MAAMiG,MAAMtE,SAAS,aAChD0H,EAAgBjS,EAAM4P,WAC5B5P,EAAM4P,WAAa,YAGnB,IAAI4C,GAAY,EAChB,IAAK,IAAItxE,EAAI,EAAGw5D,EAAIwX,EAAgB9wE,OAAQF,EAAIw5D,EAAGx5D,IACjD,GAAIgxE,EAAgBhxE,GAAG8+D,EAAO0R,EAAUF,GAAS,GAAO,CACtDgB,GAAY,EACZ,KACF,CAIF,GADAxS,EAAM4P,WAAaqC,EACfO,EAEF,OAAO,IAEX,CAEA,MAAMnO,EAAMrE,EAAMiP,OAAOyC,GAAY1R,EAAMmP,OAAOuC,GAC5CnrC,EAAMy5B,EAAMkP,OAAOwC,GAGzB,OAAO1R,EAAMoE,IAAI92D,MAAM+2D,EAAK99B,EAAM,EACpC,CAEA,IAAIt5B,EAAM+yD,EAAMoE,IAAI92D,MAAM+2D,EAAK99B,EAAM,GAErCA,EAAMt5B,EAAI7L,OACV,IAAIwlE,GAAY,EAEhB,IAAKvC,EAAM,EAAGA,EAAM99B,EAAK89B,IAAO,CAC9B,MAAMhK,EAAKptD,EAAIstD,WAAW8J,GAC1B,GAAW,KAAPhK,EACF,OAAO,EACF,GAAW,KAAPA,EAAqB,CAC9BuM,EAAWvC,EACX,KACF,CAAO,GAAW,KAAPhK,EAAsB,CAC/B,MAAMsa,EAAcF,EAAY/C,GACZ,OAAhBiD,IACF1nE,GAAO0nE,EACPpuC,EAAMt5B,EAAI7L,OACVswE,IAEJ,MAAO,GAAW,KAAPrX,IACTgK,IACIA,EAAM99B,GAA+B,KAAxBt5B,EAAIstD,WAAW8J,IAAe,CAC7C,MAAMsQ,EAAcF,EAAY/C,GACZ,OAAhBiD,IACF1nE,GAAO0nE,EACPpuC,EAAMt5B,EAAI7L,OACVswE,IAEJ,CAEJ,CAEA,GAAI9K,EAAW,GAAsC,KAAjC35D,EAAIstD,WAAWqM,EAAW,GAAsB,OAAO,EAI3E,IAAKvC,EAAMuC,EAAW,EAAGvC,EAAM99B,EAAK89B,IAAO,CACzC,MAAMhK,EAAKptD,EAAIstD,WAAW8J,GAC1B,GAAW,KAAPhK,EAAa,CACf,MAAMsa,EAAcF,EAAY/C,GACZ,OAAhBiD,IACF1nE,GAAO0nE,EACPpuC,EAAMt5B,EAAI7L,OACVswE,IAEJ,MAAO,IAAIhM,GAAQrL,GAGjB,KAEJ,CAIA,MAAMua,EAAU5U,EAAMyG,GAAGoO,QAAQhO,qBAAqB55D,EAAKo3D,EAAK99B,GAChE,IAAKquC,EAAQ9N,GAAM,OAAO,EAE1B,MAAM1/C,EAAO44C,EAAMyG,GAAGyH,cAAc0G,EAAQ3nE,KAC5C,IAAK+yD,EAAMyG,GAAG0H,aAAa/mD,GAAS,OAAO,EAE3Ci9C,EAAMuQ,EAAQvQ,IAGd,MAAMyQ,EAAazQ,EACb0Q,EAAgBrD,EAIhB9hD,EAAQy0C,EACd,KAAOA,EAAM99B,EAAK89B,IAAO,CACvB,MAAMhK,EAAKptD,EAAIstD,WAAW8J,GAC1B,GAAW,KAAPhK,EAAa,CACf,MAAMsa,EAAcF,EAAY/C,GACZ,OAAhBiD,IACF1nE,GAAO0nE,EACPpuC,EAAMt5B,EAAI7L,OACVswE,IAEJ,MAAO,IAAIhM,GAAQrL,GAGjB,KAEJ,CAIA,IAUIpoD,EAVA+iE,EAAWhV,EAAMyG,GAAGoO,QAAQ9N,eAAe95D,EAAKo3D,EAAK99B,GACzD,KAAOyuC,EAAS/N,cAAc,CAC5B,MAAM0N,EAAcF,EAAY/C,GAChC,GAAoB,OAAhBiD,EAAsB,MAC1B1nE,GAAO0nE,EACPtQ,EAAM99B,EACNA,EAAMt5B,EAAI7L,OACVswE,IACAsD,EAAWhV,EAAMyG,GAAGoO,QAAQ9N,eAAe95D,EAAKo3D,EAAK99B,EAAKyuC,EAC5D,CAaA,IAVI3Q,EAAM99B,GAAO3W,IAAUy0C,GAAO2Q,EAASlO,IACzC70D,EAAQ+iE,EAAS/nE,IACjBo3D,EAAM2Q,EAAS3Q,MAEfpyD,EAAQ,GACRoyD,EAAMyQ,EACNpD,EAAWqD,GAIN1Q,EAAM99B,GAAK,CAEhB,IAAKm/B,GADMz4D,EAAIstD,WAAW8J,IACN,MACpBA,GACF,CAEA,GAAIA,EAAM99B,GAA+B,KAAxBt5B,EAAIstD,WAAW8J,IAC1BpyD,EAMF,IAHAA,EAAQ,GACRoyD,EAAMyQ,EACNpD,EAAWqD,EACJ1Q,EAAM99B,GAAK,CAEhB,IAAKm/B,GADMz4D,EAAIstD,WAAW8J,IACN,MACpBA,GACF,CAIJ,GAAIA,EAAM99B,GAA+B,KAAxBt5B,EAAIstD,WAAW8J,GAE9B,OAAO,EAGT,MAAM9oC,EAAQuqC,GAAmB74D,EAAIK,MAAM,EAAGs5D,IAC9C,QAAKrrC,IAODk2C,SAEgC,IAAzBzR,EAAMsH,IAAI2N,aACnBjV,EAAMsH,IAAI2N,WAAa,CAAC,QAEiB,IAAhCjV,EAAMsH,IAAI2N,WAAW15C,KAC9BykC,EAAMsH,IAAI2N,WAAW15C,GAAS,CAAEtpB,QAAOmV,SAGzC44C,EAAMuP,KAAOmC,IATQ,EAWvB,GLpLE,CAAC,aDbY,SAAqB1R,EAAOiR,EAAWO,EAASC,GAC7D,IAAIpN,EAAMrE,EAAMiP,OAAOgC,GAAajR,EAAMmP,OAAO8B,GAC7C1qC,EAAMy5B,EAAMkP,OAAO+B,GAGvB,GAAIjR,EAAMoP,OAAO6B,GAAajR,EAAMsP,WAAa,EAAK,OAAO,EAE7D,IAAKtP,EAAMyG,GAAGh8D,QAAQ0yB,KAAQ,OAAO,EAErC,GAAkC,KAA9B6iC,EAAMoE,IAAI7J,WAAW8J,GAAwB,OAAO,EAExD,IAAIwN,EAAW7R,EAAMoE,IAAI92D,MAAM+2D,EAAK99B,GAEhCrlC,EAAI,EACR,KAAOA,EAAIqwE,GAAenwE,SACpBmwE,GAAerwE,GAAG,GAAGqgB,KAAKswD,GADE3wE,KAGlC,GAAIA,IAAMqwE,GAAenwE,OAAU,OAAO,EAE1C,GAAIqwE,EAEF,OAAOF,GAAerwE,GAAG,GAG3B,IAAIwwE,EAAWT,EAAY,EAI3B,IAAKM,GAAerwE,GAAG,GAAGqgB,KAAKswD,GAC7B,KAAOH,EAAWF,KACZxR,EAAMoP,OAAOsC,GAAY1R,EAAMsP,WADVoC,IAOzB,GAJArN,EAAMrE,EAAMiP,OAAOyC,GAAY1R,EAAMmP,OAAOuC,GAC5CnrC,EAAMy5B,EAAMkP,OAAOwC,GACnBG,EAAW7R,EAAMoE,IAAI92D,MAAM+2D,EAAK99B,GAE5BgrC,GAAerwE,GAAG,GAAGqgB,KAAKswD,GAAW,CACf,IAApBA,EAASzwE,QAAgBswE,IAC7B,KACF,CAIJ1R,EAAMuP,KAAOmC,EAEb,MAAM9+C,EAAUotC,EAAM/3D,KAAK,aAAc,GAAI,GAI7C,OAHA2qB,EAAM1lB,IAAU,CAAC+jE,EAAWS,GAC5B9+C,EAAMwlB,QAAU4nB,EAAMsQ,SAASW,EAAWS,EAAU1R,EAAMsP,WAAW,IAE9D,CACT,ECrC+B,CAAC,YAAa,YAAa,eACxD,CAAC,UM5BY,SAAkBtP,EAAOiR,EAAWO,EAASC,GAC1D,IAAIpN,EAAMrE,EAAMiP,OAAOgC,GAAajR,EAAMmP,OAAO8B,GAC7C1qC,EAAMy5B,EAAMkP,OAAO+B,GAGvB,GAAIjR,EAAMoP,OAAO6B,GAAajR,EAAMsP,WAAa,EAAK,OAAO,EAE7D,IAAIjV,EAAM2F,EAAMoE,IAAI7J,WAAW8J,GAE/B,GAAW,KAAPhK,GAAsBgK,GAAO99B,EAAO,OAAO,EAG/C,IAAI4/B,EAAQ,EAEZ,IADA9L,EAAK2F,EAAMoE,IAAI7J,aAAa8J,GACd,KAAPhK,GAAsBgK,EAAM99B,GAAO4/B,GAAS,GACjDA,IACA9L,EAAK2F,EAAMoE,IAAI7J,aAAa8J,GAG9B,GAAI8B,EAAQ,GAAM9B,EAAM99B,IAAQm/B,GAAQrL,GAAQ,OAAO,EAEvD,GAAIoX,EAAU,OAAO,EAIrBlrC,EAAMy5B,EAAMkQ,eAAe3pC,EAAK89B,GAChC,MAAM6Q,EAAMlV,EAAMqQ,cAAc9pC,EAAK,GAAM89B,GACvC6Q,EAAM7Q,GAAOqB,GAAQ1F,EAAMoE,IAAI7J,WAAW2a,EAAM,MAClD3uC,EAAM2uC,GAGRlV,EAAMuP,KAAO0B,EAAY,EAEzB,MAAM3C,EAAWtO,EAAM/3D,KAAK,eAAgB,IAAMuF,OAAO24D,GAAQ,GACjEmI,EAAQ5D,OAAS,WAAWp9D,MAAM,EAAG64D,GACrCmI,EAAQphE,IAAS,CAAC+jE,EAAWjR,EAAMuP,MAEnC,MAAM4F,EAAanV,EAAM/3D,KAAK,SAAU,GAAI,GAQ5C,OAPAktE,EAAQ/8B,QAAW4nB,EAAMoE,IAAI92D,MAAM+2D,EAAK99B,GAAKzS,OAC7CqhD,EAAQjoE,IAAW,CAAC+jE,EAAWjR,EAAMuP,MACrC4F,EAAQ38B,SAAW,GAEFwnB,EAAM/3D,KAAK,gBAAiB,IAAMuF,OAAO24D,IAAS,GAC3DuE,OAAS,WAAWp9D,MAAM,EAAG64D,IAE9B,CACT,ENlB+B,CAAC,YAAa,YAAa,eACxD,CAAC,WO/BY,SAAmBnG,EAAOiR,EAAWO,GAClD,MAAMU,EAAkBlS,EAAMyG,GAAGmC,MAAMiG,MAAMtE,SAAS,aAGtD,GAAIvK,EAAMoP,OAAO6B,GAAajR,EAAMsP,WAAa,EAAK,OAAO,EAE7D,MAAM2C,EAAgBjS,EAAM4P,WAC5B5P,EAAM4P,WAAa,YAGnB,IACIvJ,EADAF,EAAQ,EAERuL,EAAWT,EAAY,EAE3B,KAAOS,EAAWF,IAAYxR,EAAM+P,QAAQ2B,GAAWA,IAAY,CAGjE,GAAI1R,EAAMoP,OAAOsC,GAAY1R,EAAMsP,UAAY,EAAK,SAKpD,GAAItP,EAAMoP,OAAOsC,IAAa1R,EAAMsP,UAAW,CAC7C,IAAIjL,EAAMrE,EAAMiP,OAAOyC,GAAY1R,EAAMmP,OAAOuC,GAChD,MAAMnrC,EAAMy5B,EAAMkP,OAAOwC,GAEzB,GAAIrN,EAAM99B,IACR8/B,EAASrG,EAAMoE,IAAI7J,WAAW8J,IAEf,KAAXgC,GAAqC,KAAXA,KAC5BhC,EAAMrE,EAAMoQ,UAAU/L,EAAKgC,GAC3BhC,EAAMrE,EAAMiQ,WAAW5L,GAEnBA,GAAO99B,IAAK,CACd4/B,EAAoB,KAAXE,EAAyB,EAAI,EACtC,KACF,CAGN,CAGA,GAAIrG,EAAMoP,OAAOsC,GAAY,EAAK,SAGlC,IAAIc,GAAY,EAChB,IAAK,IAAItxE,EAAI,EAAGw5D,EAAIwX,EAAgB9wE,OAAQF,EAAIw5D,EAAGx5D,IACjD,GAAIgxE,EAAgBhxE,GAAG8+D,EAAO0R,EAAUF,GAAS,GAAO,CACtDgB,GAAY,EACZ,KACF,CAEF,GAAIA,EAAa,KACnB,CAEA,IAAKrM,EAEH,OAAO,EAGT,MAAM/tB,EAAU4nB,EAAMsQ,SAASW,EAAWS,EAAU1R,EAAMsP,WAAW,GAAOx7C,OAE5EksC,EAAMuP,KAAOmC,EAAW,EAExB,MAAMpD,EAAatO,EAAM/3D,KAAK,eAAgB,IAAMuF,OAAO24D,GAAQ,GACnEmI,EAAQ5D,OAAWl9D,OAAO8sD,aAAa+L,GACvCiI,EAAQphE,IAAW,CAAC+jE,EAAWjR,EAAMuP,MAErC,MAAM4F,EAAanV,EAAM/3D,KAAK,SAAU,GAAI,GAU5C,OATAktE,EAAQ/8B,QAAWA,EACnB+8B,EAAQjoE,IAAW,CAAC+jE,EAAWjR,EAAMuP,KAAO,GAC5C4F,EAAQ38B,SAAW,GAEAwnB,EAAM/3D,KAAK,gBAAiB,IAAMuF,OAAO24D,IAAS,GAC7DuE,OAAWl9D,OAAO8sD,aAAa+L,GAEvCrG,EAAM4P,WAAaqC,GAEZ,CACT,GP/CE,CAAC,YQhCY,SAAoBjS,EAAOiR,EAAWO,GACnD,MAAMU,EAAkBlS,EAAMyG,GAAGmC,MAAMiG,MAAMtE,SAAS,aAChD0H,EAAgBjS,EAAM4P,WAC5B,IAAI8B,EAAWT,EAAY,EAI3B,IAHAjR,EAAM4P,WAAa,YAGZ8B,EAAWF,IAAYxR,EAAM+P,QAAQ2B,GAAWA,IAAY,CAGjE,GAAI1R,EAAMoP,OAAOsC,GAAY1R,EAAMsP,UAAY,EAAK,SAGpD,GAAItP,EAAMoP,OAAOsC,GAAY,EAAK,SAGlC,IAAIc,GAAY,EAChB,IAAK,IAAItxE,EAAI,EAAGw5D,EAAIwX,EAAgB9wE,OAAQF,EAAIw5D,EAAGx5D,IACjD,GAAIgxE,EAAgBhxE,GAAG8+D,EAAO0R,EAAUF,GAAS,GAAO,CACtDgB,GAAY,EACZ,KACF,CAEF,GAAIA,EAAa,KACnB,CAEA,MAAMp6B,EAAU4nB,EAAMsQ,SAASW,EAAWS,EAAU1R,EAAMsP,WAAW,GAAOx7C,OAE5EksC,EAAMuP,KAAOmC,EAEM1R,EAAM/3D,KAAK,iBAAkB,IAAK,GAC7CiF,IAAW,CAAC+jE,EAAWjR,EAAMuP,MAErC,MAAM4F,EAAanV,EAAM/3D,KAAK,SAAU,GAAI,GAS5C,OARAktE,EAAQ/8B,QAAWA,EACnB+8B,EAAQjoE,IAAW,CAAC+jE,EAAWjR,EAAMuP,MACrC4F,EAAQ38B,SAAW,GAEnBwnB,EAAM/3D,KAAK,kBAAmB,KAAM,GAEpC+3D,EAAM4P,WAAaqC,GAEZ,CACT,IRLA,SAASmD,KAMP1yE,KAAKmsE,MAAQ,IAAI,GAEjB,IAAK,IAAI3tE,EAAI,EAAGA,EAAI,GAAOE,OAAQF,IACjCwB,KAAKmsE,MAAM5mE,KAAK,GAAO/G,GAAG,GAAI,GAAOA,GAAG,GAAI,CAAEsoE,KAAM,GAAOtoE,GAAG,IAAM,IAAIoM,SAE5E,CAIA8nE,GAAYv0E,UAAU2yE,SAAW,SAAUxT,EAAOiR,EAAWO,GAC3D,MAAMlpB,EAAQ5lD,KAAKmsE,MAAMtE,SAAS,IAC5B7H,EAAMpa,EAAMlnD,OACZi0E,EAAarV,EAAMyG,GAAGh8D,QAAQ4qE,WACpC,IAAI9F,EAAO0B,EACPqE,GAAgB,EAEpB,KAAO/F,EAAOiC,IACZxR,EAAMuP,KAAOA,EAAOvP,EAAMgQ,eAAeT,KACrCA,GAAQiC,OAIRxR,EAAMoP,OAAOG,GAAQvP,EAAMsP,YANV,CAUrB,GAAItP,EAAMmG,OAASkP,EAAY,CAC7BrV,EAAMuP,KAAOiC,EACb,KACF,CAQA,MAAM+D,EAAWvV,EAAMuP,KACvB,IAAIzI,GAAK,EAET,IAAK,IAAI5lE,EAAI,EAAGA,EAAIwhE,EAAKxhE,IAEvB,GADA4lE,EAAKxe,EAAMpnD,GAAG8+D,EAAOuP,EAAMiC,GAAS,GAChC1K,EAAI,CACN,GAAIyO,GAAYvV,EAAMuP,KACpB,MAAM,IAAI1F,MAAM,0CAElB,KACF,CAIF,IAAK/C,EAAI,MAAM,IAAI+C,MAAM,mCAIzB7J,EAAMyP,OAAS6F,EAGXtV,EAAM+P,QAAQ/P,EAAMuP,KAAO,KAC7B+F,GAAgB,GAGlB/F,EAAOvP,EAAMuP,KAETA,EAAOiC,GAAWxR,EAAM+P,QAAQR,KAClC+F,GAAgB,EAChB/F,IACAvP,EAAMuP,KAAOA,EAEjB,CACF,EAOA6F,GAAYv0E,UAAU8wB,MAAQ,SAAUyyC,EAAKqC,EAAIa,EAAKkO,GACpD,IAAKpR,EAAO,OAEZ,MAAMpE,EAAQ,IAAIt9D,KAAKqsE,MAAM3K,EAAKqC,EAAIa,EAAKkO,GAE3C9yE,KAAK8wE,SAASxT,EAAOA,EAAMuP,KAAMvP,EAAMwP,QACzC,EAEA4F,GAAYv0E,UAAUkuE,MAAQ,GAE9B,YShIA,SAAS0G,GAAarR,EAAKqC,EAAIa,EAAKkO,GAClC9yE,KAAK0hE,IAAMA,EACX1hE,KAAK4kE,IAAMA,EACX5kE,KAAK+jE,GAAKA,EACV/jE,KAAKmtB,OAAS2lD,EACd9yE,KAAKgzE,YAAc10E,MAAMw0E,EAAUp0E,QAEnCsB,KAAK2hE,IAAM,EACX3hE,KAAK6jE,OAAS7jE,KAAK0hE,IAAIhjE,OACvBsB,KAAKyjE,MAAQ,EACbzjE,KAAKizE,QAAU,GACfjzE,KAAKkzE,aAAe,EAIpBlzE,KAAK03D,MAAQ,CAAC,EAGd13D,KAAKmzE,WAAa,GAGlBnzE,KAAKozE,iBAAmB,GAGxBpzE,KAAKqzE,UAAY,CAAC,EAClBrzE,KAAKszE,kBAAmB,EAIxBtzE,KAAKuzE,UAAY,CACnB,CAIAR,GAAY50E,UAAUq1E,YAAc,WAClC,MAAMtjD,EAAQ,IAAI,GAAM,OAAQ,GAAI,GAKpC,OAJAA,EAAMwlB,QAAU11C,KAAKizE,QACrB/iD,EAAMuzC,MAAQzjE,KAAKkzE,aACnBlzE,KAAKmtB,OAAO5nB,KAAK2qB,GACjBlwB,KAAKizE,QAAU,GACR/iD,CACT,EAKA6iD,GAAY50E,UAAUoH,KAAO,SAAU7F,EAAM6G,EAAK4/D,GAC5CnmE,KAAKizE,SACPjzE,KAAKwzE,cAGP,MAAMtjD,EAAQ,IAAI,GAAMxwB,EAAM6G,EAAK4/D,GACnC,IAAIsN,EAAa,KAqBjB,OAnBItN,EAAU,IAEZnmE,KAAKyjE,QACLzjE,KAAKmzE,WAAanzE,KAAKozE,iBAAiBjqE,OAG1C+mB,EAAMuzC,MAAQzjE,KAAKyjE,MAEf0C,EAAU,IAEZnmE,KAAKyjE,QACLzjE,KAAKozE,iBAAiB7tE,KAAKvF,KAAKmzE,YAChCnzE,KAAKmzE,WAAa,GAClBM,EAAa,CAAEN,WAAYnzE,KAAKmzE,aAGlCnzE,KAAKkzE,aAAelzE,KAAKyjE,MACzBzjE,KAAKmtB,OAAO5nB,KAAK2qB,GACjBlwB,KAAKgzE,YAAYztE,KAAKkuE,GACfvjD,CACT,EAQA6iD,GAAY50E,UAAUu1E,WAAa,SAAUxmD,EAAOymD,GAClD,MAAM9vC,EAAM7jC,KAAK6jE,OACXF,EAAS3jE,KAAK0hE,IAAI7J,WAAW3qC,GAG7Bg9C,EAAWh9C,EAAQ,EAAIltB,KAAK0hE,IAAI7J,WAAW3qC,EAAQ,GAAK,GAE9D,IAAIy0C,EAAMz0C,EACV,KAAOy0C,EAAM99B,GAAO7jC,KAAK0hE,IAAI7J,WAAW8J,KAASgC,GAAUhC,IAE3D,MAAMiS,EAAQjS,EAAMz0C,EAGdi9C,EAAWxI,EAAM99B,EAAM7jC,KAAK0hE,IAAI7J,WAAW8J,GAAO,GAElDyI,EAAkBjH,GAAe+G,IAAahH,GAAYp4D,OAAO8sD,aAAasS,IAC9EG,EAAkBlH,GAAegH,IAAajH,GAAYp4D,OAAO8sD,aAAauS,IAE9EG,EAAmBrH,GAAaiH,GAChCK,EAAmBtH,GAAakH,GAEhC0J,GACHtJ,KAAsBF,GAAmBC,GAAoBF,GAC1D0J,GACHxJ,KAAsBF,GAAmBG,GAAoBF,GAKhE,MAAO,CAAE0J,SAHSF,IAAmBF,IAAiBG,GAAkB1J,GAGrD4J,UAFDF,IAAmBH,IAAiBE,GAAkBxJ,GAE1C3rE,OAAQk1E,EACxC,EAGAb,GAAY50E,UAAU4pE,MAAQ,GAE9B,YChHA,SAASkM,GAAkBtc,GACzB,OAAQA,GACN,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,IACL,KAAK,IACL,KAAK,IACH,OAAO,EACT,QACE,OAAO,EAEb,CCpCA,MAAMuc,GAAY,0CCClB,MAAMC,GAAU,GAEhB,IAAK,IAAI31E,EAAI,EAAGA,EAAI,IAAKA,IAAO21E,GAAQ5uE,KAAK,GCwC7C,SAAS6uE,GAAa9W,EAAO6V,GAC3B,IAAIjjD,EACJ,MAAMmkD,EAAc,GACdxwC,EAAMsvC,EAAWz0E,OAEvB,IAAK,IAAIF,EAAI,EAAGA,EAAIqlC,EAAKrlC,IAAK,CAC5B,MAAM81E,EAAanB,EAAW30E,GAE9B,GAA0B,MAAtB81E,EAAW3Q,OACb,SAGF,IAAwB,IAApB2Q,EAAW/mD,IACb,SAGF,MAAMgnD,EAAWpB,EAAWmB,EAAW/mD,KAEvC2C,EAAgBotC,EAAMnwC,OAAOmnD,EAAWpkD,OACxCA,EAAMxwB,KAAU,SAChBwwB,EAAM3pB,IAAU,IAChB2pB,EAAMi2C,QAAU,EAChBj2C,EAAM83C,OAAU,KAChB93C,EAAMwlB,QAAU,GAEhBxlB,EAAgBotC,EAAMnwC,OAAOonD,EAASrkD,OACtCA,EAAMxwB,KAAU,UAChBwwB,EAAM3pB,IAAU,IAChB2pB,EAAMi2C,SAAW,EACjBj2C,EAAM83C,OAAU,KAChB93C,EAAMwlB,QAAU,GAE8B,SAA1C4nB,EAAMnwC,OAAOonD,EAASrkD,MAAQ,GAAGxwB,MACY,MAA7C49D,EAAMnwC,OAAOonD,EAASrkD,MAAQ,GAAGwlB,SACnC2+B,EAAY9uE,KAAKgvE,EAASrkD,MAAQ,EAEtC,CAQA,KAAOmkD,EAAY31E,QAAQ,CACzB,MAAMF,EAAI61E,EAAYlrE,MACtB,IAAIgyD,EAAI38D,EAAI,EAEZ,KAAO28D,EAAImC,EAAMnwC,OAAOzuB,QAAmC,YAAzB4+D,EAAMnwC,OAAOguC,GAAGz7D,MAChDy7D,IAGFA,IAEI38D,IAAM28D,IACRjrC,EAAQotC,EAAMnwC,OAAOguC,GACrBmC,EAAMnwC,OAAOguC,GAAKmC,EAAMnwC,OAAO3uB,GAC/B8+D,EAAMnwC,OAAO3uB,GAAK0xB,EAEtB,CACF,CDlGA,qCACGznB,MAAM,IAAI7E,SAAQ,SAAU+zD,GAAMwc,GAAQxc,EAAGE,WAAW,IAAM,CAAE,ICkHnE,UACEiZ,SAvHF,SAAiCxT,EAAOyR,GACtC,MAAM7hD,EAAQowC,EAAMqE,IACdgC,EAASrG,EAAMoE,IAAI7J,WAAW3qC,GAEpC,GAAI6hD,EAAU,OAAO,EAErB,GAAe,MAAXpL,EAA0B,OAAO,EAErC,MAAM6Q,EAAUlX,EAAMoW,WAAWpW,EAAMqE,KAAK,GAC5C,IAAI3B,EAAMwU,EAAQ91E,OAClB,MAAMi5D,EAAK7sD,OAAO8sD,aAAa+L,GAE/B,GAAI3D,EAAM,EAAK,OAAO,EAEtB,IAAI9vC,EAEA8vC,EAAM,IACR9vC,EAAgBotC,EAAM/3D,KAAK,OAAQ,GAAI,GACvC2qB,EAAMwlB,QAAUiiB,EAChBqI,KAGF,IAAK,IAAIxhE,EAAI,EAAGA,EAAIwhE,EAAKxhE,GAAK,EAC5B0xB,EAAgBotC,EAAM/3D,KAAK,OAAQ,GAAI,GACvC2qB,EAAMwlB,QAAUiiB,EAAKA,EAErB2F,EAAM6V,WAAW5tE,KAAK,CACpBo+D,SACAjlE,OAAQ,EACRwxB,MAAOotC,EAAMnwC,OAAOzuB,OAAS,EAC7B6uB,KAAM,EACNmD,KAAM8jD,EAAQT,SACdptD,MAAO6tD,EAAQR,YAMnB,OAFA1W,EAAMqE,KAAO6S,EAAQ91E,QAEd,CACT,EAiFE01E,YAfF,SAAoC9W,GAClC,MAAM0V,EAAc1V,EAAM0V,YACpBnvC,EAAMy5B,EAAM0V,YAAYt0E,OAE9B01E,GAAY9W,EAAOA,EAAM6V,YAEzB,IAAK,IAAIlH,EAAO,EAAGA,EAAOpoC,EAAKooC,IACzB+G,EAAY/G,IAAS+G,EAAY/G,GAAMkH,YACzCiB,GAAY9W,EAAO0V,EAAY/G,GAAMkH,WAG3C,GCvEA,SAAS,GAAa7V,EAAO6V,GAG3B,IAAK,IAAI30E,EAFG20E,EAAWz0E,OAEJ,EAAGF,GAAK,EAAGA,IAAK,CACjC,MAAM81E,EAAanB,EAAW30E,GAE9B,GAA0B,KAAtB81E,EAAW3Q,QAAgD,KAAtB2Q,EAAW3Q,OAClD,SAIF,IAAwB,IAApB2Q,EAAW/mD,IACb,SAGF,MAAMgnD,EAAWpB,EAAWmB,EAAW/mD,KAOjCknD,EAAWj2E,EAAI,GACV20E,EAAW30E,EAAI,GAAG+uB,MAAQ+mD,EAAW/mD,IAAM,GAE3C4lD,EAAW30E,EAAI,GAAGmlE,SAAW2Q,EAAW3Q,QACxCwP,EAAW30E,EAAI,GAAG0xB,QAAUokD,EAAWpkD,MAAQ,GAE/CijD,EAAWmB,EAAW/mD,IAAM,GAAG2C,QAAUqkD,EAASrkD,MAAQ,EAE/DynC,EAAK7sD,OAAO8sD,aAAa0c,EAAW3Q,QAEpCiI,EAAYtO,EAAMnwC,OAAOmnD,EAAWpkD,OAC1C07C,EAAQlsE,KAAU+0E,EAAW,cAAgB,UAC7C7I,EAAQrlE,IAAUkuE,EAAW,SAAW,KACxC7I,EAAQzF,QAAU,EAClByF,EAAQ5D,OAAUyM,EAAW9c,EAAKA,EAAKA,EACvCiU,EAAQl2B,QAAU,GAElB,MAAMo2B,EAAYxO,EAAMnwC,OAAOonD,EAASrkD,OACxC47C,EAAQpsE,KAAU+0E,EAAW,eAAiB,WAC9C3I,EAAQvlE,IAAUkuE,EAAW,SAAW,KACxC3I,EAAQ3F,SAAW,EACnB2F,EAAQ9D,OAAUyM,EAAW9c,EAAKA,EAAKA,EACvCmU,EAAQp2B,QAAU,GAEd++B,IACFnX,EAAMnwC,OAAOgmD,EAAW30E,EAAI,GAAG0xB,OAAOwlB,QAAU,GAChD4nB,EAAMnwC,OAAOgmD,EAAWmB,EAAW/mD,IAAM,GAAG2C,OAAOwlB,QAAU,GAC7Dl3C,IAEJ,CACF,CAiBA,UACEsyE,SAnHF,SAA4BxT,EAAOyR,GACjC,MAAM7hD,EAAQowC,EAAMqE,IACdgC,EAASrG,EAAMoE,IAAI7J,WAAW3qC,GAEpC,GAAI6hD,EAAU,OAAO,EAErB,GAAe,KAAXpL,GAAsC,KAAXA,EAA2B,OAAO,EAEjE,MAAM6Q,EAAUlX,EAAMoW,WAAWpW,EAAMqE,IAAgB,KAAXgC,GAE5C,IAAK,IAAInlE,EAAI,EAAGA,EAAIg2E,EAAQ91E,OAAQF,IAAK,CACzB8+D,EAAM/3D,KAAK,OAAQ,GAAI,GAC/BmwC,QAAU5qC,OAAO8sD,aAAa+L,GAEpCrG,EAAM6V,WAAW5tE,KAAK,CAGpBo+D,SAIAjlE,OAAQ81E,EAAQ91E,OAIhBwxB,MAAOotC,EAAMnwC,OAAOzuB,OAAS,EAK7B6uB,KAAM,EAKNmD,KAAM8jD,EAAQT,SACdptD,MAAO6tD,EAAQR,WAEnB,CAIA,OAFA1W,EAAMqE,KAAO6S,EAAQ91E,QAEd,CACT,EAyEE01E,YAfF,SAAgC9W,GAC9B,MAAM0V,EAAc1V,EAAM0V,YACpBnvC,EAAMy5B,EAAM0V,YAAYt0E,OAE9B,GAAY4+D,EAAOA,EAAM6V,YAEzB,IAAK,IAAIlH,EAAO,EAAGA,EAAOpoC,EAAKooC,IACzB+G,EAAY/G,IAAS+G,EAAY/G,GAAMkH,YACzC,GAAY7V,EAAO0V,EAAY/G,GAAMkH,WAG3C,GClHA,MAAMuB,GAAc,yIAEdC,GAAc,qDCApB,MAAMC,GAAa,uCACbC,GAAa,4BCHnB,SAASC,GAAmB3B,GAC1B,MAAM4B,EAAgB,CAAC,EACjBlxC,EAAMsvC,EAAWz0E,OAEvB,IAAKmlC,EAAK,OAGV,IAAImxC,EAAY,EACZC,GAAgB,EACpB,MAAMC,EAAQ,GAEd,IAAK,IAAIC,EAAY,EAAGA,EAAYtxC,EAAKsxC,IAAa,CACpD,MAAMC,EAASjC,EAAWgC,GAoB1B,GAlBAD,EAAM3vE,KAAK,GAMP4tE,EAAW6B,GAAWrR,SAAWyR,EAAOzR,QAAUsR,IAAiBG,EAAOllD,MAAQ,IACpF8kD,EAAYG,GAGdF,EAAeG,EAAOllD,MAMtBklD,EAAO12E,OAAS02E,EAAO12E,QAAU,GAE5B02E,EAAOzuD,MAAO,SAOdouD,EAAch2E,eAAeq2E,EAAOzR,UACvCoR,EAAcK,EAAOzR,QAAU,EAAE,GAAI,GAAI,GAAI,GAAI,GAAI,IAGvD,MAAM0R,EAAeN,EAAcK,EAAOzR,SAASyR,EAAO1kD,KAAO,EAAI,GAAM0kD,EAAO12E,OAAS,GAE3F,IAAI42E,EAAYN,EAAYE,EAAMF,GAAa,EAE3CO,EAAkBD,EAEtB,KAAOA,EAAYD,EAAcC,GAAaJ,EAAMI,GAAa,EAAG,CAClE,MAAME,EAASrC,EAAWmC,GAE1B,GAAIE,EAAO7R,SAAWyR,EAAOzR,SAEzB6R,EAAO9kD,MAAQ8kD,EAAOjoD,IAAM,GAAG,CACjC,IAAIkoD,GAAa,EAiBjB,IARID,EAAO7uD,OAASyuD,EAAO1kD,QACpB8kD,EAAO92E,OAAS02E,EAAO12E,QAAU,GAAM,IACtC82E,EAAO92E,OAAS,GAAM,GAAK02E,EAAO12E,OAAS,GAAM,IACnD+2E,GAAa,KAKdA,EAAY,CAKf,MAAMC,EAAWJ,EAAY,IAAMnC,EAAWmC,EAAY,GAAG5kD,KACzDwkD,EAAMI,EAAY,GAAK,EACvB,EAEJJ,EAAMC,GAAaA,EAAYG,EAAYI,EAC3CR,EAAMI,GAAaI,EAEnBN,EAAO1kD,MAAQ,EACf8kD,EAAOjoD,IAAQ4nD,EACfK,EAAO7uD,OAAQ,EACf4uD,GAAmB,EAGnBN,GAAgB,EAChB,KACF,CACF,CACF,EAEyB,IAArBM,IAQFR,EAAcK,EAAOzR,SAASyR,EAAO1kD,KAAO,EAAI,IAAO0kD,EAAO12E,QAAU,GAAK,GAAM62E,EAEvF,CACF,CCnFA,MAAM,GAAS,CACb,CAAC,ORaY,SAAejY,EAAOyR,GACnC,IAAIpN,EAAMrE,EAAMqE,IAEhB,KAAOA,EAAMrE,EAAMuG,SAAWoQ,GAAiB3W,EAAMoE,IAAI7J,WAAW8J,KAClEA,IAGF,OAAIA,IAAQrE,EAAMqE,MAEboN,IAAUzR,EAAM2V,SAAW3V,EAAMoE,IAAI92D,MAAM0yD,EAAMqE,IAAKA,IAE3DrE,EAAMqE,IAAMA,GAEL,EACT,GQ1BE,CAAC,UPxBY,SAAkBrE,EAAOyR,GACtC,IAAKzR,EAAMyG,GAAGh8D,QAAQgjE,QAAS,OAAO,EACtC,GAAIzN,EAAMiW,UAAY,EAAG,OAAO,EAEhC,MAAM5R,EAAMrE,EAAMqE,IAGlB,GAAIA,EAAM,EAFErE,EAAMuG,OAEC,OAAO,EAC1B,GAAkC,KAA9BvG,EAAMoE,IAAI7J,WAAW8J,GAAsB,OAAO,EACtD,GAAsC,KAAlCrE,EAAMoE,IAAI7J,WAAW8J,EAAM,GAAoB,OAAO,EAC1D,GAAsC,KAAlCrE,EAAMoE,IAAI7J,WAAW8J,EAAM,GAAoB,OAAO,EAE1D,MAAMjH,EAAQ4C,EAAM2V,QAAQvY,MAAMwZ,IAClC,IAAKxZ,EAAO,OAAO,EAEnB,MAAMF,EAAQE,EAAM,GAEdhtB,EAAO4vB,EAAMyG,GAAGgH,QAAQ4K,aAAarY,EAAMoE,IAAI92D,MAAM+2D,EAAMnH,EAAM97D,SACvE,IAAKgvC,EAAM,OAAO,EAElB,IAAIznB,EAAMynB,EAAKznB,IAIf,GAAIA,EAAIvnB,QAAU87D,EAAM97D,OAAQ,OAAO,EAGvCunB,EAAMA,EAAIld,QAAQ,OAAQ,IAE1B,MAAMwiE,EAAUjO,EAAMyG,GAAGyH,cAAcvlD,GACvC,IAAKq3C,EAAMyG,GAAG0H,aAAaF,GAAU,OAAO,EAE5C,IAAKwD,EAAQ,CACXzR,EAAM2V,QAAU3V,EAAM2V,QAAQroE,MAAM,GAAI4vD,EAAM97D,QAE9C,MAAMktE,EAAUtO,EAAM/3D,KAAK,YAAa,IAAK,GAC7CqmE,EAAQrG,MAAQ,CAAC,CAAC,OAAQgG,IAC1BK,EAAQ5D,OAAS,UACjB4D,EAAQzhD,KAAO,OAECmzC,EAAM/3D,KAAK,OAAQ,GAAI,GAC/BmwC,QAAU4nB,EAAMyG,GAAG4H,kBAAkB1lD,GAE7C,MAAM6lD,EAAUxO,EAAM/3D,KAAK,aAAc,KAAM,GAC/CumE,EAAQ9D,OAAS,UACjB8D,EAAQ3hD,KAAO,MACjB,CAGA,OADAmzC,EAAMqE,KAAO17C,EAAIvnB,OAAS87D,EAAM97D,QACzB,CACT,GOzBE,CAAC,UC1BY,SAAkB4+D,EAAOyR,GACtC,IAAIpN,EAAMrE,EAAMqE,IAEhB,GAAkC,KAA9BrE,EAAMoE,IAAI7J,WAAW8J,GAAyB,OAAO,EAEzD,MAAMiU,EAAOtY,EAAM2V,QAAQv0E,OAAS,EAC9BmlC,EAAMy5B,EAAMuG,OAMlB,IAAKkL,EACH,GAAI6G,GAAQ,GAAwC,KAAnCtY,EAAM2V,QAAQpb,WAAW+d,GACxC,GAAIA,GAAQ,GAA4C,KAAvCtY,EAAM2V,QAAQpb,WAAW+d,EAAO,GAAa,CAE5D,IAAIC,EAAKD,EAAO,EAChB,KAAOC,GAAM,GAA0C,KAArCvY,EAAM2V,QAAQpb,WAAWge,EAAK,IAAaA,IAE7DvY,EAAM2V,QAAU3V,EAAM2V,QAAQroE,MAAM,EAAGirE,GACvCvY,EAAM/3D,KAAK,YAAa,KAAM,EAChC,MACE+3D,EAAM2V,QAAU3V,EAAM2V,QAAQroE,MAAM,GAAI,GACxC0yD,EAAM/3D,KAAK,YAAa,KAAM,QAGhC+3D,EAAM/3D,KAAK,YAAa,KAAM,GAOlC,IAHAo8D,IAGOA,EAAM99B,GAAOm/B,GAAQ1F,EAAMoE,IAAI7J,WAAW8J,KAASA,IAG1D,OADArE,EAAMqE,IAAMA,GACL,CACT,GDVE,CAAC,SNpBY,SAAiBrE,EAAOyR,GACrC,IAAIpN,EAAMrE,EAAMqE,IAChB,MAAM99B,EAAMy5B,EAAMuG,OAElB,GAAkC,KAA9BvG,EAAMoE,IAAI7J,WAAW8J,GAAsB,OAAO,EAItD,GAHAA,IAGIA,GAAO99B,EAAK,OAAO,EAEvB,IAAIiyC,EAAMxY,EAAMoE,IAAI7J,WAAW8J,GAE/B,GAAY,KAARmU,EAAc,CAOhB,IANK/G,GACHzR,EAAM/3D,KAAK,YAAa,KAAM,GAGhCo8D,IAEOA,EAAM99B,IACXiyC,EAAMxY,EAAMoE,IAAI7J,WAAW8J,GACtBqB,GAAQ8S,KACbnU,IAIF,OADArE,EAAMqE,IAAMA,GACL,CACT,CAEA,IAAIoU,EAAazY,EAAMoE,IAAIC,GAE3B,GAAImU,GAAO,OAAUA,GAAO,OAAUnU,EAAM,EAAI99B,EAAK,CACnD,MAAMmyC,EAAM1Y,EAAMoE,IAAI7J,WAAW8J,EAAM,GAEnCqU,GAAO,OAAUA,GAAO,QAC1BD,GAAczY,EAAMoE,IAAIC,EAAM,GAC9BA,IAEJ,CAEA,MAAMsU,EAAU,KAAOF,EAEvB,IAAKhH,EAAQ,CACX,MAAM7+C,EAAQotC,EAAM/3D,KAAK,eAAgB,GAAI,GAEzCuwE,EAAM,KAAwB,IAAjB3B,GAAQ2B,GACvB5lD,EAAMwlB,QAAUqgC,EAEhB7lD,EAAMwlB,QAAUugC,EAGlB/lD,EAAM83C,OAASiO,EACf/lD,EAAM/F,KAAS,QACjB,CAGA,OADAmzC,EAAMqE,IAAMA,EAAM,GACX,CACT,GMpCE,CAAC,YE9BY,SAAmBrE,EAAOyR,GACvC,IAAIpN,EAAMrE,EAAMqE,IAGhB,GAAW,KAFArE,EAAMoE,IAAI7J,WAAW8J,GAEN,OAAO,EAEjC,MAAMz0C,EAAQy0C,EACdA,IACA,MAAM99B,EAAMy5B,EAAMuG,OAGlB,KAAOlC,EAAM99B,GAAqC,KAA9By5B,EAAMoE,IAAI7J,WAAW8J,IAAwBA,IAEjE,MAAMgC,EAASrG,EAAMoE,IAAI92D,MAAMsiB,EAAOy0C,GAChCuU,EAAevS,EAAOjlE,OAE5B,GAAI4+D,EAAMgW,mBAAqBhW,EAAM+V,UAAU6C,IAAiB,IAAMhpD,EAGpE,OAFK6hD,IAAQzR,EAAM2V,SAAWtP,GAC9BrG,EAAMqE,KAAOuU,GACN,EAGT,IACIC,EADAC,EAAWzU,EAIf,MAA4D,KAApDwU,EAAa7Y,EAAMoE,IAAI3gE,QAAQ,IAAKq1E,KAAmB,CAI7D,IAHAA,EAAWD,EAAa,EAGjBC,EAAWvyC,GAA0C,KAAnCy5B,EAAMoE,IAAI7J,WAAWue,IAA6BA,IAE3E,MAAMC,EAAeD,EAAWD,EAEhC,GAAIE,IAAiBH,EAAc,CAEjC,IAAKnH,EAAQ,CACX,MAAM7+C,EAAQotC,EAAM/3D,KAAK,cAAe,OAAQ,GAChD2qB,EAAM83C,OAASrE,EACfzzC,EAAMwlB,QAAU4nB,EAAMoE,IAAI92D,MAAM+2D,EAAKwU,GAClCptE,QAAQ,MAAO,KACfA,QAAQ,WAAY,KACzB,CAEA,OADAu0D,EAAMqE,IAAMyU,GACL,CACT,CAGA9Y,EAAM+V,UAAUgD,GAAgBF,CAClC,CAOA,OAJA7Y,EAAMgW,kBAAmB,EAEpBvE,IAAQzR,EAAM2V,SAAWtP,GAC9BrG,EAAMqE,KAAOuU,GACN,CACT,GF1BE,CAAC,gBAAmB,GAAgBpF,UACpC,CAAC,WAAmB,GAAWA,UAC/B,CAAC,OG/BY,SAAexT,EAAOyR,GACnC,IAAIpW,EAAM9/B,EAAOy9C,EAAKlqE,EAClBsY,EAAO,GACPnV,EAAQ,GACR2d,EAAQowC,EAAMqE,IACd4U,GAAiB,EAErB,GAAwC,KAApCjZ,EAAMoE,IAAI7J,WAAWyF,EAAMqE,KAAwB,OAAO,EAE9D,MAAMmC,EAASxG,EAAMqE,IACf99B,EAAMy5B,EAAMuG,OACZ2S,EAAalZ,EAAMqE,IAAM,EACzBuC,EAAW5G,EAAMyG,GAAGoO,QAAQ5O,eAAejG,EAAOA,EAAMqE,KAAK,GAGnE,GAAIuC,EAAW,EAAK,OAAO,EAE3B,IAAIvC,EAAMuC,EAAW,EACrB,GAAIvC,EAAM99B,GAAqC,KAA9By5B,EAAMoE,IAAI7J,WAAW8J,GAAsB,CAW1D,IALA4U,GAAiB,EAIjB5U,IACOA,EAAM99B,IACX80B,EAAO2E,EAAMoE,IAAI7J,WAAW8J,GACvBqB,GAAQrK,IAAkB,KAATA,GAFNgJ,KAIlB,GAAIA,GAAO99B,EAAO,OAAO,EAMzB,GAFA3W,EAAQy0C,EACR2U,EAAMhZ,EAAMyG,GAAGoO,QAAQhO,qBAAqB7G,EAAMoE,IAAKC,EAAKrE,EAAMuG,QAC9DyS,EAAIlS,GAAI,CAWV,IAVA1/C,EAAO44C,EAAMyG,GAAGyH,cAAc8K,EAAI/rE,KAC9B+yD,EAAMyG,GAAG0H,aAAa/mD,GACxBi9C,EAAM2U,EAAI3U,IAEVj9C,EAAO,GAKTwI,EAAQy0C,EACDA,EAAM99B,IACX80B,EAAO2E,EAAMoE,IAAI7J,WAAW8J,GACvBqB,GAAQrK,IAAkB,KAATA,GAFNgJ,KAQlB,GADA2U,EAAMhZ,EAAMyG,GAAGoO,QAAQ9N,eAAe/G,EAAMoE,IAAKC,EAAKrE,EAAMuG,QACxDlC,EAAM99B,GAAO3W,IAAUy0C,GAAO2U,EAAIlS,GAMpC,IALA70D,EAAQ+mE,EAAI/rE,IACZo3D,EAAM2U,EAAI3U,IAIHA,EAAM99B,IACX80B,EAAO2E,EAAMoE,IAAI7J,WAAW8J,GACvBqB,GAAQrK,IAAkB,KAATA,GAFNgJ,KAKtB,EAEIA,GAAO99B,GAAqC,KAA9By5B,EAAMoE,IAAI7J,WAAW8J,MAErC4U,GAAiB,GAEnB5U,GACF,CAEA,GAAI4U,EAAgB,CAIlB,QAAoC,IAAzBjZ,EAAMsH,IAAI2N,WAA8B,OAAO,EAmB1D,GAjBI5Q,EAAM99B,GAAqC,KAA9By5B,EAAMoE,IAAI7J,WAAW8J,IACpCz0C,EAAQy0C,EAAM,EACdA,EAAMrE,EAAMyG,GAAGoO,QAAQ5O,eAAejG,EAAOqE,GACzCA,GAAO,EACT9oC,EAAQykC,EAAMoE,IAAI92D,MAAMsiB,EAAOy0C,KAE/BA,EAAMuC,EAAW,GAGnBvC,EAAMuC,EAAW,EAKdrrC,IAASA,EAAQykC,EAAMoE,IAAI92D,MAAM4rE,EAAYtS,IAElD93D,EAAMkxD,EAAMsH,IAAI2N,WAAWnP,GAAmBvqC,KACzCzsB,EAEH,OADAkxD,EAAMqE,IAAMmC,GACL,EAETp/C,EAAOtY,EAAIsY,KACXnV,EAAQnD,EAAImD,KACd,CAMA,IAAKw/D,EAAQ,CACXzR,EAAMqE,IAAM6U,EACZlZ,EAAMuG,OAASK,EAEf,MACMqB,EAAQ,CAAC,CAAC,OAAQ7gD,IADR44C,EAAM/3D,KAAK,YAAa,IAAK,GAErCggE,MAASA,EACbh2D,GACFg2D,EAAMhgE,KAAK,CAAC,QAASgK,IAGvB+tD,EAAMiW,YACNjW,EAAMyG,GAAGC,OAAO8M,SAASxT,GACzBA,EAAMiW,YAENjW,EAAM/3D,KAAK,aAAc,KAAM,EACjC,CAIA,OAFA+3D,EAAMqE,IAAMA,EACZrE,EAAMuG,OAAShgC,GACR,CACT,GHtGE,CAAC,QIhCY,SAAgBy5B,EAAOyR,GACpC,IAAIpW,EAAMjjB,EAAS7c,EAAO8oC,EAAKv1D,EAAKkqE,EAAK/mE,EAAO2d,EAC5CxI,EAAO,GACX,MAAMo/C,EAASxG,EAAMqE,IACf99B,EAAMy5B,EAAMuG,OAElB,GAAwC,KAApCvG,EAAMoE,IAAI7J,WAAWyF,EAAMqE,KAAwB,OAAO,EAC9D,GAA4C,KAAxCrE,EAAMoE,IAAI7J,WAAWyF,EAAMqE,IAAM,GAAsB,OAAO,EAElE,MAAM6U,EAAalZ,EAAMqE,IAAM,EACzBuC,EAAW5G,EAAMyG,GAAGoO,QAAQ5O,eAAejG,EAAOA,EAAMqE,IAAM,GAAG,GAGvE,GAAIuC,EAAW,EAAK,OAAO,EAG3B,GADAvC,EAAMuC,EAAW,EACbvC,EAAM99B,GAAqC,KAA9By5B,EAAMoE,IAAI7J,WAAW8J,GAAsB,CAQ1D,IADAA,IACOA,EAAM99B,IACX80B,EAAO2E,EAAMoE,IAAI7J,WAAW8J,GACvBqB,GAAQrK,IAAkB,KAATA,GAFNgJ,KAIlB,GAAIA,GAAO99B,EAAO,OAAO,EAkBzB,IAdA3W,EAAQy0C,EACR2U,EAAMhZ,EAAMyG,GAAGoO,QAAQhO,qBAAqB7G,EAAMoE,IAAKC,EAAKrE,EAAMuG,QAC9DyS,EAAIlS,KACN1/C,EAAO44C,EAAMyG,GAAGyH,cAAc8K,EAAI/rE,KAC9B+yD,EAAMyG,GAAG0H,aAAa/mD,GACxBi9C,EAAM2U,EAAI3U,IAEVj9C,EAAO,IAMXwI,EAAQy0C,EACDA,EAAM99B,IACX80B,EAAO2E,EAAMoE,IAAI7J,WAAW8J,GACvBqB,GAAQrK,IAAkB,KAATA,GAFNgJ,KAQlB,GADA2U,EAAMhZ,EAAMyG,GAAGoO,QAAQ9N,eAAe/G,EAAMoE,IAAKC,EAAKrE,EAAMuG,QACxDlC,EAAM99B,GAAO3W,IAAUy0C,GAAO2U,EAAIlS,GAMpC,IALA70D,EAAQ+mE,EAAI/rE,IACZo3D,EAAM2U,EAAI3U,IAIHA,EAAM99B,IACX80B,EAAO2E,EAAMoE,IAAI7J,WAAW8J,GACvBqB,GAAQrK,IAAkB,KAATA,GAFNgJ,UAKlBpyD,EAAQ,GAGV,GAAIoyD,GAAO99B,GAAqC,KAA9By5B,EAAMoE,IAAI7J,WAAW8J,GAErC,OADArE,EAAMqE,IAAMmC,GACL,EAETnC,GACF,KAAO,CAIL,QAAoC,IAAzBrE,EAAMsH,IAAI2N,WAA8B,OAAO,EAmB1D,GAjBI5Q,EAAM99B,GAAqC,KAA9By5B,EAAMoE,IAAI7J,WAAW8J,IACpCz0C,EAAQy0C,EAAM,EACdA,EAAMrE,EAAMyG,GAAGoO,QAAQ5O,eAAejG,EAAOqE,GACzCA,GAAO,EACT9oC,EAAQykC,EAAMoE,IAAI92D,MAAMsiB,EAAOy0C,KAE/BA,EAAMuC,EAAW,GAGnBvC,EAAMuC,EAAW,EAKdrrC,IAASA,EAAQykC,EAAMoE,IAAI92D,MAAM4rE,EAAYtS,IAElD93D,EAAMkxD,EAAMsH,IAAI2N,WAAWnP,GAAmBvqC,KACzCzsB,EAEH,OADAkxD,EAAMqE,IAAMmC,GACL,EAETp/C,EAAOtY,EAAIsY,KACXnV,EAAQnD,EAAImD,KACd,CAMA,IAAKw/D,EAAQ,CACXr5B,EAAU4nB,EAAMoE,IAAI92D,MAAM4rE,EAAYtS,GAEtC,MAAM/2C,EAAS,GACfmwC,EAAMyG,GAAGC,OAAO/0C,MACdymB,EACA4nB,EAAMyG,GACNzG,EAAMsH,IACNz3C,GAGF,MAAM+C,EAAQotC,EAAM/3D,KAAK,QAAS,MAAO,GACnCggE,EAAQ,CAAC,CAAC,MAAO7gD,GAAO,CAAC,MAAO,KACtCwL,EAAMq1C,MAAQA,EACdr1C,EAAM4lB,SAAW3oB,EACjB+C,EAAMwlB,QAAUA,EAEZnmC,GACFg2D,EAAMhgE,KAAK,CAAC,QAASgK,GAEzB,CAIA,OAFA+tD,EAAMqE,IAAMA,EACZrE,EAAMuG,OAAShgC,GACR,CACT,GJpGE,CAAC,WH9BY,SAAmBy5B,EAAOyR,GACvC,IAAIpN,EAAMrE,EAAMqE,IAEhB,GAAkC,KAA9BrE,EAAMoE,IAAI7J,WAAW8J,GAAwB,OAAO,EAExD,MAAMz0C,EAAQowC,EAAMqE,IACd99B,EAAMy5B,EAAMuG,OAElB,OAAS,CACP,KAAMlC,GAAO99B,EAAK,OAAO,EAEzB,MAAM8zB,EAAK2F,EAAMoE,IAAI7J,WAAW8J,GAEhC,GAAW,KAAPhK,EAAqB,OAAO,EAChC,GAAW,KAAPA,EAAqB,KAC3B,CAEA,MAAM1xC,EAAMq3C,EAAMoE,IAAI92D,MAAMsiB,EAAQ,EAAGy0C,GAEvC,GAAIgT,GAAY91D,KAAKoH,GAAM,CACzB,MAAMslD,EAAUjO,EAAMyG,GAAGyH,cAAcvlD,GACvC,IAAKq3C,EAAMyG,GAAG0H,aAAaF,GAAY,OAAO,EAE9C,IAAKwD,EAAQ,CACX,MAAMnD,EAAYtO,EAAM/3D,KAAK,YAAa,IAAK,GAC/CqmE,EAAQrG,MAAU,CAAC,CAAC,OAAQgG,IAC5BK,EAAQ5D,OAAU,WAClB4D,EAAQzhD,KAAU,OAEAmzC,EAAM/3D,KAAK,OAAQ,GAAI,GACjCmwC,QAAU4nB,EAAMyG,GAAG4H,kBAAkB1lD,GAE7C,MAAM6lD,EAAYxO,EAAM/3D,KAAK,aAAc,KAAM,GACjDumE,EAAQ9D,OAAU,WAClB8D,EAAQ3hD,KAAU,MACpB,CAGA,OADAmzC,EAAMqE,KAAO17C,EAAIvnB,OAAS,GACnB,CACT,CAEA,GAAIg2E,GAAS71D,KAAKoH,GAAM,CACtB,MAAMslD,EAAUjO,EAAMyG,GAAGyH,cAAc,UAAYvlD,GACnD,IAAKq3C,EAAMyG,GAAG0H,aAAaF,GAAY,OAAO,EAE9C,IAAKwD,EAAQ,CACX,MAAMnD,EAAYtO,EAAM/3D,KAAK,YAAa,IAAK,GAC/CqmE,EAAQrG,MAAU,CAAC,CAAC,OAAQgG,IAC5BK,EAAQ5D,OAAU,WAClB4D,EAAQzhD,KAAU,OAEAmzC,EAAM/3D,KAAK,OAAQ,GAAI,GACjCmwC,QAAU4nB,EAAMyG,GAAG4H,kBAAkB1lD,GAE7C,MAAM6lD,EAAYxO,EAAM/3D,KAAK,aAAc,KAAM,GACjDumE,EAAQ9D,OAAU,WAClB8D,EAAQ3hD,KAAU,MACpB,CAGA,OADAmzC,EAAMqE,KAAO17C,EAAIvnB,OAAS,GACnB,CACT,CAEA,OAAO,CACT,GGjCE,CAAC,cKrBY,SAAsB4+D,EAAOyR,GAC1C,IAAKzR,EAAMyG,GAAGh8D,QAAQ0yB,KAAQ,OAAO,EAGrC,MAAMoJ,EAAMy5B,EAAMuG,OACZlC,EAAMrE,EAAMqE,IAClB,GAAkC,KAA9BrE,EAAMoE,IAAI7J,WAAW8J,IACrBA,EAAM,GAAK99B,EACb,OAAO,EAIT,MAAM8zB,EAAK2F,EAAMoE,IAAI7J,WAAW8J,EAAM,GACtC,GAAW,KAAPhK,GACO,KAAPA,GACO,KAAPA,IArBN,SAAmBA,GAEjB,MAAM8e,EAAU,GAAL9e,EACX,OAAQ8e,GAAM,IAAiBA,GAAM,GACvC,CAkBOC,CAAS/e,GACZ,OAAO,EAGT,MAAM+C,EAAQ4C,EAAMoE,IAAI92D,MAAM+2D,GAAKjH,MAAMiU,IACzC,IAAKjU,EAAS,OAAO,EAErB,IAAKqU,EAAQ,CACX,MAAM7+C,EAAQotC,EAAM/3D,KAAK,cAAe,GAAI,GAC5C2qB,EAAMwlB,QAAUglB,EAAM,GAtCLnwD,EAwCF2lB,EAAMwlB,QAvChB,YAAY72B,KAAKtU,IAuCU+yD,EAAMiW,YArC1C,SAAsBhpE,GACpB,MAAO,aAAasU,KAAKtU,EAC3B,CAoCQ,CAAY2lB,EAAMwlB,UAAU4nB,EAAMiW,WACxC,CA1CF,IAAqBhpE,EA4CnB,OADA+yD,EAAMqE,KAAOjH,EAAM,GAAGh8D,QACf,CACT,GLVE,CAAC,SF/BY,SAAiB4+D,EAAOyR,GACrC,MAAMpN,EAAMrE,EAAMqE,IACZ99B,EAAMy5B,EAAMuG,OAElB,GAAkC,KAA9BvG,EAAMoE,IAAI7J,WAAW8J,GAAsB,OAAO,EAEtD,GAAIA,EAAM,GAAK99B,EAAK,OAAO,EAI3B,GAAW,KAFAy5B,EAAMoE,IAAI7J,WAAW8J,EAAM,GAEb,CACvB,MAAMjH,EAAQ4C,EAAMoE,IAAI92D,MAAM+2D,GAAKjH,MAAMka,IACzC,GAAIla,EAAO,CACT,IAAKqU,EAAQ,CACX,MAAMpW,EAAqC,MAA9B+B,EAAM,GAAG,GAAG34D,cAAwBusB,SAASosC,EAAM,GAAG9vD,MAAM,GAAI,IAAM0jB,SAASosC,EAAM,GAAI,IAEhGxqC,EAAUotC,EAAM/3D,KAAK,eAAgB,GAAI,GAC/C2qB,EAAMwlB,QAAUmsB,GAAkBlJ,GAAQ,GAAcA,GAAQ,GAAc,OAC9EzoC,EAAM83C,OAAUtN,EAAM,GACtBxqC,EAAM/F,KAAU,QAClB,CAEA,OADAmzC,EAAMqE,KAAOjH,EAAM,GAAGh8D,QACf,CACT,CACF,KAAO,CACL,MAAMg8D,EAAQ4C,EAAMoE,IAAI92D,MAAM+2D,GAAKjH,MAAMma,IACzC,GAAIna,EAAO,CACT,MAAM6H,EAAU,EAAW7H,EAAM,IACjC,GAAI6H,IAAY7H,EAAM,GAAI,CACxB,IAAKqU,EAAQ,CACX,MAAM7+C,EAAUotC,EAAM/3D,KAAK,eAAgB,GAAI,GAC/C2qB,EAAMwlB,QAAU6sB,EAChBryC,EAAM83C,OAAUtN,EAAM,GACtBxqC,EAAM/F,KAAU,QAClB,CAEA,OADAmzC,EAAMqE,KAAOjH,EAAM,GAAGh8D,QACf,CACT,CACF,CACF,CAEA,OAAO,CACT,IEHMi4E,GAAU,CACd,CAAC,gBDgEY,SAAqBrZ,GAClC,MAAM0V,EAAc1V,EAAM0V,YACpBnvC,EAAMy5B,EAAM0V,YAAYt0E,OAE9Bo2E,GAAkBxX,EAAM6V,YAExB,IAAK,IAAIlH,EAAO,EAAGA,EAAOpoC,EAAKooC,IACzB+G,EAAY/G,IAAS+G,EAAY/G,GAAMkH,YACzC2B,GAAkB9B,EAAY/G,GAAMkH,WAG1C,GC1EE,CAAC,gBAAmB,GAAgBiB,aACpC,CAAC,WAAmB,GAAWA,aAG/B,CAAC,iBM5CY,SAAyB9W,GACtC,IAAI2O,EAAMxwC,EACNgoC,EAAQ,EACZ,MAAMt2C,EAASmwC,EAAMnwC,OACf0W,EAAMy5B,EAAMnwC,OAAOzuB,OAEzB,IAAKutE,EAAOxwC,EAAO,EAAGwwC,EAAOpoC,EAAKooC,IAG5B9+C,EAAO8+C,GAAM9F,QAAU,GAAG1C,IAC9Bt2C,EAAO8+C,GAAMxI,MAAQA,EACjBt2C,EAAO8+C,GAAM9F,QAAU,GAAG1C,IAEJ,SAAtBt2C,EAAO8+C,GAAMvsE,MACbusE,EAAO,EAAIpoC,GACe,SAA1B1W,EAAO8+C,EAAO,GAAGvsE,KAEnBytB,EAAO8+C,EAAO,GAAGv2B,QAAUvoB,EAAO8+C,GAAMv2B,QAAUvoB,EAAO8+C,EAAO,GAAGv2B,SAE/Du2B,IAASxwC,IAAQtO,EAAOsO,GAAQtO,EAAO8+C,IAE3CxwC,KAIAwwC,IAASxwC,IACXtO,EAAOzuB,OAAS+8B,EAEpB,INsBA,SAASm7C,KAMP52E,KAAKmsE,MAAQ,IAAI,GAEjB,IAAK,IAAI3tE,EAAI,EAAGA,EAAI,GAAOE,OAAQF,IACjCwB,KAAKmsE,MAAM5mE,KAAK,GAAO/G,GAAG,GAAI,GAAOA,GAAG,IAS1CwB,KAAK62E,OAAS,IAAI,GAElB,IAAK,IAAIr4E,EAAI,EAAGA,EAAIm4E,GAAQj4E,OAAQF,IAClCwB,KAAK62E,OAAOtxE,KAAKoxE,GAAQn4E,GAAG,GAAIm4E,GAAQn4E,GAAG,GAE/C,CAKAo4E,GAAaz4E,UAAU8lE,UAAY,SAAU3G,GAC3C,MAAMqE,EAAMrE,EAAMqE,IACZ/b,EAAQ5lD,KAAKmsE,MAAMtE,SAAS,IAC5B7H,EAAMpa,EAAMlnD,OACZi0E,EAAarV,EAAMyG,GAAGh8D,QAAQ4qE,WAC9Bjb,EAAQ4F,EAAM5F,MAEpB,QAA0B,IAAfA,EAAMiK,GAEf,YADArE,EAAMqE,IAAMjK,EAAMiK,IAIpB,IAAIyC,GAAK,EAET,GAAI9G,EAAMmG,MAAQkP,GAChB,IAAK,IAAIn0E,EAAI,EAAGA,EAAIwhE,EAAKxhE,IASvB,GAJA8+D,EAAMmG,QACNW,EAAKxe,EAAMpnD,GAAG8+D,GAAO,GACrBA,EAAMmG,QAEFW,EAAI,CACN,GAAIzC,GAAOrE,EAAMqE,IAAO,MAAM,IAAIwF,MAAM,0CACxC,KACF,OAcF7J,EAAMqE,IAAMrE,EAAMuG,OAGfO,GAAM9G,EAAMqE,MACjBjK,EAAMiK,GAAOrE,EAAMqE,GACrB,EAIAiV,GAAaz4E,UAAU2yE,SAAW,SAAUxT,GAC1C,MAAM1X,EAAQ5lD,KAAKmsE,MAAMtE,SAAS,IAC5B7H,EAAMpa,EAAMlnD,OACZ6uB,EAAM+vC,EAAMuG,OACZ8O,EAAarV,EAAMyG,GAAGh8D,QAAQ4qE,WAEpC,KAAOrV,EAAMqE,IAAMp0C,GAAK,CAOtB,MAAMq2C,EAAUtG,EAAMqE,IACtB,IAAIyC,GAAK,EAET,GAAI9G,EAAMmG,MAAQkP,EAChB,IAAK,IAAIn0E,EAAI,EAAGA,EAAIwhE,EAAKxhE,IAEvB,GADA4lE,EAAKxe,EAAMpnD,GAAG8+D,GAAO,GACjB8G,EAAI,CACN,GAAIR,GAAWtG,EAAMqE,IAAO,MAAM,IAAIwF,MAAM,0CAC5C,KACF,CAIJ,GAAI/C,GACF,GAAI9G,EAAMqE,KAAOp0C,EAAO,WAI1B+vC,EAAM2V,SAAW3V,EAAMoE,IAAIpE,EAAMqE,MACnC,CAEIrE,EAAM2V,SACR3V,EAAMkW,aAEV,EAOAoD,GAAaz4E,UAAU8wB,MAAQ,SAAU1kB,EAAKw5D,EAAIa,EAAKkO,GACrD,MAAMxV,EAAQ,IAAIt9D,KAAKqsE,MAAM9hE,EAAKw5D,EAAIa,EAAKkO,GAE3C9yE,KAAK8wE,SAASxT,GAEd,MAAM1X,EAAQ5lD,KAAK62E,OAAOhP,SAAS,IAC7B7H,EAAMpa,EAAMlnD,OAElB,IAAK,IAAIF,EAAI,EAAGA,EAAIwhE,EAAKxhE,IACvBonD,EAAMpnD,GAAG8+D,EAEb,EAEAsZ,GAAaz4E,UAAUkuE,MAAQ,GAE/B,YO5LA,SAAS,GAAQzuE,GAWf,OAVgBU,MAAMH,UAAUyM,MAAM5L,KAAK4F,UAAW,GAE9ChB,SAAQ,SAAUixB,GACnBA,GAEL/3B,OAAO4L,KAAKmsB,GAAQjxB,SAAQ,SAAU9E,GACpClB,EAAIkB,GAAO+1B,EAAO/1B,EACpB,GACF,IAEOlB,CACT,CAEA,SAAS,GAAQA,GAAO,OAAOd,OAAOqB,UAAU0wC,SAAS7vC,KAAKpB,EAAK,CAInE,SAASk5E,GAAYl5E,GAAO,MAAuB,sBAAhB,GAAOA,EAA6B,CAEvE,SAAS,GAAU2M,GAAO,OAAOA,EAAIxB,QAAQ,uBAAwB,OAAQ,CAI7E,MAAMguE,GAAiB,CACrBC,WAAW,EACXC,YAAY,EACZC,SAAS,GAUX,MAAMC,GAAiB,CACrB,QAAS,CACPlwC,SAAU,SAAUn3B,EAAM6xD,EAAK30B,GAC7B,MAAMoqC,EAAOtnE,EAAKlF,MAAM+2D,GAQxB,OANK30B,EAAKqqC,GAAGvd,OAEX9sB,EAAKqqC,GAAGvd,KAAO,IAAIxjC,OACjB,UAAY0W,EAAKqqC,GAAGC,SAAWtqC,EAAKqqC,GAAGE,qBAAuBvqC,EAAKqqC,GAAGG,SAAU,MAGhFxqC,EAAKqqC,GAAGvd,KAAKj7C,KAAKu4D,GACbA,EAAK1c,MAAM1tB,EAAKqqC,GAAGvd,MAAM,GAAGp7D,OAE9B,CACT,GAEF,SAAU,QACV,OAAQ,QACR,KAAM,CACJuoC,SAAU,SAAUn3B,EAAM6xD,EAAK30B,GAC7B,MAAMoqC,EAAOtnE,EAAKlF,MAAM+2D,GAkBxB,OAhBK30B,EAAKqqC,GAAGI,UAEXzqC,EAAKqqC,GAAGI,QAAU,IAAInhD,OACpB,IACA0W,EAAKqqC,GAAGC,SAGR,sBAAwBtqC,EAAKqqC,GAAGK,WAAa,SAAW1qC,EAAKqqC,GAAGM,gBAAkB,IAClF3qC,EAAKqqC,GAAGO,SACR5qC,EAAKqqC,GAAGQ,oBACR7qC,EAAKqqC,GAAGG,SAER,MAIAxqC,EAAKqqC,GAAGI,QAAQ54D,KAAKu4D,GAEnBzV,GAAO,GAAuB,MAAlB7xD,EAAK6xD,EAAM,IACvBA,GAAO,GAAuB,MAAlB7xD,EAAK6xD,EAAM,GADqB,EAEzCyV,EAAK1c,MAAM1tB,EAAKqqC,GAAGI,SAAS,GAAG/4E,OAEjC,CACT,GAEF,UAAW,CACTuoC,SAAU,SAAUn3B,EAAM6xD,EAAK30B,GAC7B,MAAMoqC,EAAOtnE,EAAKlF,MAAM+2D,GAOxB,OALK30B,EAAKqqC,GAAGS,SACX9qC,EAAKqqC,GAAGS,OAAS,IAAIxhD,OACnB,IAAM0W,EAAKqqC,GAAGU,eAAiB,IAAM/qC,EAAKqqC,GAAGW,gBAAiB,MAG9DhrC,EAAKqqC,GAAGS,OAAOj5D,KAAKu4D,GACfA,EAAK1c,MAAM1tB,EAAKqqC,GAAGS,QAAQ,GAAGp5E,OAEhC,CACT,IAMEu5E,GAAkB,0VAGlBC,GAAe,8EAA8EzvE,MAAM,KA0BzG,SAAS0vE,GAASnrC,GAEhB,MAAMqqC,EAAKrqC,EAAKqqC,GC7IH,SAAUe,GACvB,MAAMf,EAAK,CAAC,EACZe,EAAOA,GAAQ,CAAC,EAEhBf,EAAGgB,QAAU,EAAIxjD,OACjBwiD,EAAGiB,OAAS,EAAGzjD,OACfwiD,EAAGkB,MAAQ,EAAE1jD,OACbwiD,EAAGmB,MAAQ,EAAE3jD,OAGbwiD,EAAGoB,SAAW,CAACpB,EAAGkB,MAAOlB,EAAGmB,MAAOnB,EAAGiB,QAAQztE,KAAK,KAGnDwsE,EAAGqB,QAAU,CAACrB,EAAGkB,MAAOlB,EAAGiB,QAAQztE,KAAK,KAIxC,MAAM8tE,EAAkB,QAwKxB,OAnKAtB,EAAGuB,kBAAoB,eAAmCvB,EAAGoB,SAAW,IAAMpB,EAAGgB,QAAU,IAI3FhB,EAAGwB,QAED,yFAGFxB,EAAGC,SAAW,YAAcD,EAAGqB,QAAU,uBAEzCrB,EAAGO,SAED,kFAEFP,EAAGQ,oBAED,cAAkCR,EAAGoB,SAArC,QACSL,EAAK,OAAS,WAAa,MAAQ,uBAAyBf,EAAGoB,SAAW,KAErFpB,EAAGG,SAED,iBAGcH,EAAGqB,QAAU,IAAMC,EAHjC,qCAIoBtB,EAAGqB,QAJvB,wBAKoBrB,EAAGqB,QALvB,wBAMoBrB,EAAGqB,QANvB,wBAOoBrB,EAAGqB,QAPvB,yBAQoBrB,EAAGqB,QARvB,qBAWiBrB,EAAGuB,kBAXpB,qCAuBiBvB,EAAGqB,QAAU,YACvBN,EAAK,OACF,6BACA,SAGJ,OAASf,EAAGqB,QA7BlB,WAgCerB,EAAGqB,QAhClB,cAmCkBrB,EAAGqB,QAnCrB,iBAqCiBrB,EAAGqB,QArCpB,kBA4CFrB,EAAGU,eAED,iEAEFV,EAAGyB,OAED,wBAKFzB,EAAGM,gBAGD,MACEN,EAAGyB,OACH,IACAzB,EAAGuB,kBAHL,UAMFvB,EAAGK,WAED,MACEL,EAAGyB,OADL,OAGUzB,EAAGuB,kBAHb,QAKUvB,EAAGuB,kBAAoB,QAAUvB,EAAGuB,kBAAoB,UAAYvB,EAAGuB,kBALjF,KAQFvB,EAAG0B,SAED,eAIgB1B,EAAGK,WAAa,SAAWL,EAAGK,WAJ9C,KAOFL,EAAG2B,eAED,MACE3B,EAAGwB,QADL,aAGgBxB,EAAGK,WAHnB,qBAMFL,EAAG4B,qBAED,YAAc5B,EAAGK,WAAa,oBAEhCL,EAAGW,gBAEDX,EAAG0B,SAAW1B,EAAGQ,oBAEnBR,EAAG6B,sBAED7B,EAAG2B,eAAiB3B,EAAGQ,oBAEzBR,EAAGE,qBAEDF,EAAG0B,SAAW1B,EAAGO,SAAWP,EAAGQ,oBAEjCR,EAAG8B,2BAED9B,EAAG2B,eAAiB3B,EAAGO,SAAWP,EAAGQ,oBAEvCR,EAAG+B,iCAED/B,EAAG4B,qBAAuB5B,EAAGO,SAAWP,EAAGQ,oBAO7CR,EAAGgC,oBAED,sDAAwDhC,EAAGoB,SAAW,SAExEpB,EAAGiC,gBAEC,kBAAsCjC,EAAGqB,QAAzC,KACMrB,EAAGU,eAAiB,IAAMV,EAAG6B,sBAAwB,IAE/D7B,EAAGkC,eAGC,mCAA0ClC,EAAGoB,SAA7C,qBAC0BpB,EAAG8B,2BAA6B9B,EAAGG,SAAW,IAE5EH,EAAGmC,qBAGC,mCAA0CnC,EAAGoB,SAA7C,qBAC0BpB,EAAG+B,iCAAmC/B,EAAGG,SAAW,IAE3EH,CACT,CD7CuB,CAAUrqC,EAAKysC,UAG9BC,EAAO1sC,EAAK2sC,SAAS/uE,QAW3B,SAASgvE,EAAOC,GAAO,OAAOA,EAAI9wE,QAAQ,SAAUsuE,EAAGyC,SAAU,CATjE9sC,EAAK+sC,YAEA/sC,EAAKgtC,mBACRN,EAAKn0E,KAAK0yE,IAEZyB,EAAKn0E,KAAK8xE,EAAGyB,QAEbzB,EAAGyC,SAAWJ,EAAK7uE,KAAK,KAIxBwsE,EAAG4C,YAAc3jD,OAAOsjD,EAAMvC,EAAGiC,iBAAkB,KACnDjC,EAAG6C,WAAa5jD,OAAOsjD,EAAMvC,EAAGkC,gBAAiB,KACjDlC,EAAG8C,iBAAmB7jD,OAAOsjD,EAAMvC,EAAGmC,sBAAuB,KAC7DnC,EAAG+C,gBAAkB9jD,OAAOsjD,EAAMvC,EAAGgC,qBAAsB,KAM3D,MAAMgB,EAAU,GAIhB,SAASC,EAAa/6E,EAAM8E,GAC1B,MAAM,IAAI8iE,MAAM,+BAAiC5nE,EAAO,MAAQ8E,EAClE,CAJA2oC,EAAKutC,aAAe,CAAC,EAMrBz9E,OAAO4L,KAAKskC,EAAKwtC,aAAa52E,SAAQ,SAAUrE,GAC9C,MAAM8E,EAAM2oC,EAAKwtC,YAAYj7E,GAG7B,GAAY,OAAR8E,EAAgB,OAEpB,MAAMo2E,EAAW,CAAExzC,SAAU,KAAMyG,KAAM,MAIzC,GAFAV,EAAKutC,aAAah7E,GAAQk7E,EAhKmB,oBAAhB,GAkKhBp2E,GAiBX,OAlLN,SAAmBzG,GAAO,MAAuB,oBAAhB,GAAOA,EAA2B,CAkKzD88E,CAASr2E,EAAI4iC,UAEN6vC,GAAWzyE,EAAI4iC,UACxBwzC,EAASxzC,SAAW5iC,EAAI4iC,SAExBqzC,EAAY/6E,EAAM8E,GAJlBo2E,EAASxzC,SAlEjB,SAA0BowC,GACxB,OAAO,SAAUvnE,EAAM6xD,GACrB,MAAMyV,EAAOtnE,EAAKlF,MAAM+2D,GAExB,OAAI0V,EAAGx4D,KAAKu4D,GACHA,EAAK1c,MAAM2c,GAAI,GAAG34E,OAEpB,CACT,CACF,CAyD4Bi8E,CAAgBt2E,EAAI4iC,eAOtC6vC,GAAWzyE,EAAIu2E,WACjBH,EAASG,UAAYv2E,EAAIu2E,UACfv2E,EAAIu2E,UAGdN,EAAY/6E,EAAM8E,GAFlBo2E,EAASG,UAhER,SAAUlgB,EAAO1tB,GACtBA,EAAK4tC,UAAUlgB,EACjB,IAjHF,SAAmB98D,GAAO,MAAuB,oBAAhB,GAAOA,EAA2B,CAuL3D,CAASyG,GAKbi2E,EAAY/6E,EAAM8E,GAJhBg2E,EAAQ90E,KAAKhG,EAKjB,IAMA86E,EAAQz2E,SAAQ,SAAUi3E,GACnB7tC,EAAKutC,aAAavtC,EAAKwtC,YAAYK,MAMxC7tC,EAAKutC,aAAaM,GAAO5zC,SACvB+F,EAAKutC,aAAavtC,EAAKwtC,YAAYK,IAAQ5zC,SAC7C+F,EAAKutC,aAAaM,GAAOD,UACvB5tC,EAAKutC,aAAavtC,EAAKwtC,YAAYK,IAAQD,UAC/C,IAKA5tC,EAAKutC,aAAa,IAAM,CAAEtzC,SAAU,KAAM2zC,UApGnC,SAAUlgB,EAAO1tB,GACtBA,EAAK4tC,UAAUlgB,EACjB,GAuGA,MAAMogB,EAAQh+E,OAAO4L,KAAKskC,EAAKutC,cAC5Bv2E,QAAO,SAAUzE,GAEhB,OAAOA,EAAKb,OAAS,GAAKsuC,EAAKutC,aAAah7E,EAC9C,IACCiL,IAAI,IACJK,KAAK,KAERmiC,EAAKqqC,GAAG0D,YAAczkD,OAAO,oBAA2B+gD,EAAGoB,SAAW,MAAQqC,EAAQ,IAAK,KAC3F9tC,EAAKqqC,GAAG2D,cAAgB1kD,OAAO,oBAA2B+gD,EAAGoB,SAAW,MAAQqC,EAAQ,IAAK,MAC7F9tC,EAAKqqC,GAAG4D,gBAAkB3kD,OAAO,IAAM0W,EAAKqqC,GAAG2D,cAAcnmD,OAAQ,KAErEmY,EAAKqqC,GAAGrM,QAAU10C,OAChB,IAAM0W,EAAKqqC,GAAG0D,YAAYlmD,OAAS,MAAQmY,EAAKqqC,GAAG+C,gBAAgBvlD,OAAS,MAC5E,KAxIJ,SAAyBmY,GACvBA,EAAKkuC,WAAa,EAClBluC,EAAKmuC,eAAiB,EACxB,CA4IEC,CAAepuC,EACjB,CAOA,SAASquC,GAAOruC,EAAMqiC,GACpB,MAAMniD,EAAQ8f,EAAKkuC,UACb3tD,EAAMyf,EAAKsuC,eACXxrE,EAAOk9B,EAAKmuC,eAAevwE,MAAMsiB,EAAOK,GAO9CvtB,KAAKqtB,OAAS2f,EAAKuuC,WAAWx5E,cAM9B/B,KAAKyK,MAAQyiB,EAAQmiD,EAMrBrvE,KAAK+/D,UAAYxyC,EAAM8hD,EAMvBrvE,KAAKw7E,IAAM1rE,EAMX9P,KAAK8P,KAAOA,EAMZ9P,KAAKimB,IAAMnW,CACb,CAEA,SAAS2rE,GAAazuC,EAAMqiC,GAC1B,MAAM3U,EAAQ,IAAI2gB,GAAMruC,EAAMqiC,GAI9B,OAFAriC,EAAKutC,aAAa7f,EAAMrtC,QAAQutD,UAAUlgB,EAAO1tB,GAE1C0tB,CACT,CAwCA,SAASghB,GAAWC,EAAS5zE,GAC3B,KAAM/H,gBAAgB07E,IACpB,OAAO,IAAIA,GAAUC,EAAS5zE,GAjUlC,IAAuBnK,EAoUhBmK,IApUgBnK,EAqUF+9E,EApUZ7+E,OAAO4L,KAAK9K,GAAO,CAAC,GAAGyL,QAAO,SAAUuyE,EAAKxgB,GAElD,OAAOwgB,GAAO7E,GAAeh4E,eAAeq8D,EAC9C,IAAG,KAkUCrzD,EAAU4zE,EACVA,EAAU,CAAC,IAIf37E,KAAKy5E,SAAW,GAAO,CAAC,EAAG1C,GAAgBhvE,GAG3C/H,KAAKk7E,WAAa,EAClBl7E,KAAKs7E,gBAAkB,EACvBt7E,KAAKu7E,WAAa,GAClBv7E,KAAKm7E,eAAiB,GAEtBn7E,KAAKw6E,YAAc,GAAO,CAAC,EAAGrD,GAAgBwE,GAC9C37E,KAAKu6E,aAAe,CAAC,EAErBv6E,KAAK25E,SAAWzB,GAChBl4E,KAAKg6E,mBAAoB,EAEzBh6E,KAAKq3E,GAAK,CAAC,EAEXc,GAAQn4E,KACV,CASA07E,GAAUv9E,UAAUqqB,IAAM,SAAc6E,EAAQwuD,GAG9C,OAFA77E,KAAKw6E,YAAYntD,GAAUwuD,EAC3B1D,GAAQn4E,MACDA,IACT,EAQA07E,GAAUv9E,UAAU6/B,IAAM,SAAcj2B,GAEtC,OADA/H,KAAKy5E,SAAW,GAAOz5E,KAAKy5E,SAAU1xE,GAC/B/H,IACT,EAOA07E,GAAUv9E,UAAU0gB,KAAO,SAAe/O,GAKxC,GAHA9P,KAAKm7E,eAAiBrrE,EACtB9P,KAAKk7E,WAAa,GAEbprE,EAAKpR,OAAU,OAAO,EAE3B,IAAIk3D,EAAGkmB,EAAIC,EAAI/b,EAAKqP,EAAOjpE,EAAMixE,EAAI2E,EAASC,EAG9C,GAAIj8E,KAAKq3E,GAAG0D,YAAYl8D,KAAK/O,GAG3B,IAFAunE,EAAKr3E,KAAKq3E,GAAG2D,cACb3D,EAAGtX,UAAY,EACgB,QAAvBnK,EAAIyhB,EAAG9gD,KAAKzmB,KAElB,GADAkwD,EAAMhgE,KAAKk8E,aAAapsE,EAAM8lD,EAAE,GAAIyhB,EAAGtX,WACnCC,EAAK,CACPhgE,KAAKu7E,WAAa3lB,EAAE,GACpB51D,KAAKk7E,UAAYtlB,EAAEnrD,MAAQmrD,EAAE,GAAGl3D,OAChCsB,KAAKs7E,eAAiB1lB,EAAEnrD,MAAQmrD,EAAE,GAAGl3D,OAASshE,EAC9C,KACF,CA2CJ,OAvCIhgE,KAAKy5E,SAASzC,WAAah3E,KAAKu6E,aAAa,WAE/CyB,EAAUlsE,EAAKkS,OAAOhiB,KAAKq3E,GAAG+C,iBAC1B4B,GAAW,IAETh8E,KAAKk7E,UAAY,GAAKc,EAAUh8E,KAAKk7E,YAC0D,QAA5FY,EAAKhsE,EAAK4qD,MAAM16D,KAAKy5E,SAASvC,QAAUl3E,KAAKq3E,GAAG6C,WAAal6E,KAAKq3E,GAAG8C,qBACxE9K,EAAQyM,EAAGrxE,MAAQqxE,EAAG,GAAGp9E,QAErBsB,KAAKk7E,UAAY,GAAK7L,EAAQrvE,KAAKk7E,aACrCl7E,KAAKu7E,WAAa,GAClBv7E,KAAKk7E,UAAY7L,EACjBrvE,KAAKs7E,eAAiBQ,EAAGrxE,MAAQqxE,EAAG,GAAGp9E,UAO7CsB,KAAKy5E,SAASxC,YAAcj3E,KAAKu6E,aAAa,aAEhD0B,EAASnsE,EAAK/O,QAAQ,KAClBk7E,GAAU,GAGmC,QAA1CF,EAAKjsE,EAAK4qD,MAAM16D,KAAKq3E,GAAG4C,gBAC3B5K,EAAQ0M,EAAGtxE,MAAQsxE,EAAG,GAAGr9E,OACzB0H,EAAO21E,EAAGtxE,MAAQsxE,EAAG,GAAGr9E,QAEpBsB,KAAKk7E,UAAY,GAAK7L,EAAQrvE,KAAKk7E,WAClC7L,IAAUrvE,KAAKk7E,WAAa90E,EAAOpG,KAAKs7E,kBAC3Ct7E,KAAKu7E,WAAa,UAClBv7E,KAAKk7E,UAAY7L,EACjBrvE,KAAKs7E,eAAiBl1E,KAMvBpG,KAAKk7E,WAAa,CAC3B,EASAQ,GAAUv9E,UAAU6sE,QAAU,SAAkBl7D,GAC9C,OAAO9P,KAAKq3E,GAAGrM,QAAQnsD,KAAK/O,EAC9B,EAWA4rE,GAAUv9E,UAAU+9E,aAAe,SAAuBpsE,EAAMud,EAAQs0C,GAEtE,OAAK3hE,KAAKu6E,aAAaltD,EAAOtrB,eAGvB/B,KAAKu6E,aAAaltD,EAAOtrB,eAAeklC,SAASn3B,EAAM6xD,EAAK3hE,MAF1D,CAGX,EAkBA07E,GAAUv9E,UAAUu8D,MAAQ,SAAgB5qD,GAC1C,MAAM4Y,EAAS,GACf,IAAI2mD,EAAQ,EAGRrvE,KAAKk7E,WAAa,GAAKl7E,KAAKm7E,iBAAmBrrE,IACjD4Y,EAAOnjB,KAAKk2E,GAAYz7E,KAAMqvE,IAC9BA,EAAQrvE,KAAKs7E,gBAIf,IAAIlE,EAAO/H,EAAQv/D,EAAKlF,MAAMykE,GAASv/D,EAGvC,KAAO9P,KAAK6e,KAAKu4D,IACf1uD,EAAOnjB,KAAKk2E,GAAYz7E,KAAMqvE,IAE9B+H,EAAOA,EAAKxsE,MAAM5K,KAAKs7E,gBACvBjM,GAASrvE,KAAKs7E,eAGhB,OAAI5yD,EAAOhqB,OACFgqB,EAGF,IACT,EAQAgzD,GAAUv9E,UAAUw3E,aAAe,SAAuB7lE,GAKxD,GAHA9P,KAAKm7E,eAAiBrrE,EACtB9P,KAAKk7E,WAAa,GAEbprE,EAAKpR,OAAQ,OAAO,KAEzB,MAAMk3D,EAAI51D,KAAKq3E,GAAG4D,gBAAgB1kD,KAAKzmB,GACvC,IAAK8lD,EAAG,OAAO,KAEf,MAAMoK,EAAMhgE,KAAKk8E,aAAapsE,EAAM8lD,EAAE,GAAIA,EAAE,GAAGl3D,QAC/C,OAAKshE,GAELhgE,KAAKu7E,WAAa3lB,EAAE,GACpB51D,KAAKk7E,UAAYtlB,EAAEnrD,MAAQmrD,EAAE,GAAGl3D,OAChCsB,KAAKs7E,eAAiB1lB,EAAEnrD,MAAQmrD,EAAE,GAAGl3D,OAASshE,EAEvCyb,GAAYz7E,KAAM,IANR,IAOnB,EAiBA07E,GAAUv9E,UAAUu7E,KAAO,SAAejS,EAAM0U,GAG9C,OAFA1U,EAAOnpE,MAAMC,QAAQkpE,GAAQA,EAAO,CAACA,GAEhC0U,GAOLn8E,KAAK25E,SAAW35E,KAAK25E,SAASh4E,OAAO8lE,GAClCjwD,OACAxT,QAAO,SAAUma,EAAIwmD,EAAKtmE,GACzB,OAAO8f,IAAO9f,EAAIsmE,EAAM,EAC1B,IACCyX,UAEHjE,GAAQn4E,MACDA,OAdLA,KAAK25E,SAAWlS,EAAK78D,QACrB5K,KAAKg6E,mBAAoB,EACzB7B,GAAQn4E,MACDA,KAYX,EAOA07E,GAAUv9E,UAAUy8E,UAAY,SAAoBlgB,GAI7CA,EAAMrtC,SAAUqtC,EAAMz0C,IAAM,UAAYy0C,EAAMz0C,KAE9B,YAAjBy0C,EAAMrtC,QAAyB,YAAYxO,KAAK67C,EAAMz0C,OACxDy0C,EAAMz0C,IAAM,UAAYy0C,EAAMz0C,IAElC,EAOAy1D,GAAUv9E,UAAU47E,UAAY,WAChC,EAEA,YE9nBMsC,GAAS,WAGT3d,GAAO,GAUP4d,GAAgB,QAChBC,GAAgB,aAChBC,GAAkB,4BAGlBj0D,GAAS,CACd,SAAY,kDACZ,YAAa,iDACb,gBAAiB,iBAKZk0D,GAAQ74C,KAAK64C,MACbC,GAAqB5xE,OAAO8sD,aAUlC,SAAStxC,GAAM5mB,GACd,MAAM,IAAIi9E,WAAWp0D,GAAO7oB,GAC7B,CA6BA,SAASk9E,GAAUC,EAAQziD,GAC1B,MAAM0iD,EAAQD,EAAOp0E,MAAM,KAC3B,IAAIigB,EAAS,GACTo0D,EAAMp+E,OAAS,IAGlBgqB,EAASo0D,EAAM,GAAK,IACpBD,EAASC,EAAM,IAIhB,MACMlwE,EA/BP,SAAamwE,EAAO3iD,GACnB,MAAM1R,EAAS,GACf,IAAIhqB,EAASq+E,EAAMr+E,OACnB,KAAOA,KACNgqB,EAAOhqB,GAAU07B,EAAS2iD,EAAMr+E,IAEjC,OAAOgqB,CACR,CAwBiBle,EAFhBqyE,EAASA,EAAO9zE,QAAQyzE,GAAiB,MACnB/zE,MAAM,KACA2xB,GAAUvvB,KAAK,KAC3C,OAAO6d,EAAS9b,CACjB,CAeA,SAASowE,GAAWrpB,GACnB,MAAMqI,EAAS,GACf,IAAIihB,EAAU,EACd,MAAMv+E,EAASi1D,EAAOj1D,OACtB,KAAOu+E,EAAUv+E,GAAQ,CACxB,MAAMzB,EAAQ02D,EAAOkE,WAAWolB,KAChC,GAAIhgF,GAAS,OAAUA,GAAS,OAAUggF,EAAUv+E,EAAQ,CAE3D,MAAMq3D,EAAQpC,EAAOkE,WAAWolB,KACR,QAAX,MAARlnB,GACJiG,EAAOz2D,OAAe,KAARtI,IAAkB,KAAe,KAAR84D,GAAiB,QAIxDiG,EAAOz2D,KAAKtI,GACZggF,IAEF,MACCjhB,EAAOz2D,KAAKtI,EAEd,CACA,OAAO++D,CACR,CAUA,MAmCMkhB,GAAe,SAASC,EAAOC,GAGpC,OAAOD,EAAQ,GAAK,IAAMA,EAAQ,MAAgB,GAARC,IAAc,EACzD,EAOMC,GAAQ,SAASC,EAAOC,EAAWC,GACxC,IAAIpiB,EAAI,EAGR,IAFAkiB,EAAQE,EAAYf,GAAMa,EA1Kd,KA0K8BA,GAAS,EACnDA,GAASb,GAAMa,EAAQC,GACOD,EAAQG,IAA2BriB,GAAKsD,GACrE4e,EAAQb,GAAMa,EA3JM5e,IA6JrB,OAAO+d,GAAMrhB,EAAI,GAAsBkiB,GAASA,EAhLpC,IAiLb,EASM,GAAS,SAASx3B,GAEvB,MAAMkW,EAAS,GACT0hB,EAAc53B,EAAMpnD,OAC1B,IAAIF,EAAI,EACJklB,EA5LY,IA6LZi6D,EA9Le,GAoMfC,EAAQ93B,EAAMh9C,YAlMD,KAmMb80E,EAAQ,IACXA,EAAQ,GAGT,IAAK,IAAIziB,EAAI,EAAGA,EAAIyiB,IAASziB,EAExBrV,EAAM+R,WAAWsD,IAAM,KAC1B70C,GAAM,aAEP01C,EAAOz2D,KAAKugD,EAAM+R,WAAWsD,IAM9B,IAAK,IAAI1wD,EAAQmzE,EAAQ,EAAIA,EAAQ,EAAI,EAAGnzE,EAAQizE,GAAwC,CAO3F,MAAMG,EAAOr/E,EACb,IAAK,IAAIs/E,EAAI,EAAG1iB,EAAIsD,IAA0BtD,GAAKsD,GAAM,CAEpDj0D,GAASizE,GACZp3D,GAAM,iBAGP,MAAM62D,GA9FqBphB,EA8FAjW,EAAM+R,WAAWptD,OA7F7B,IAAQsxD,EAAY,GACvBA,EAAY,GAAlB,GAEJA,GAAa,IAAQA,EAAY,GAC7BA,EAAY,GAEhBA,GAAa,IAAQA,EAAY,IAC7BA,EAAY,GAEb2C,GAsFDye,GAASze,IACZp4C,GAAM,iBAEH62D,EAAQV,IAAOJ,GAAS79E,GAAKs/E,IAChCx3D,GAAM,YAGP9nB,GAAK2+E,EAAQW,EACb,MAAMhU,EAAI1O,GAAKuiB,EAhPL,EAgPoBviB,GAAKuiB,EA/OzB,MA+O8CviB,EAAIuiB,EAE5D,GAAIR,EAAQrT,EACX,MAGD,MAAMiU,EAAarf,GAAOoL,EACtBgU,EAAIrB,GAAMJ,GAAS0B,IACtBz3D,GAAM,YAGPw3D,GAAKC,CAEN,CAEA,MAAMC,EAAMhiB,EAAOt9D,OAAS,EAC5Bi/E,EAAON,GAAM7+E,EAAIq/E,EAAMG,EAAa,GAARH,GAIxBpB,GAAMj+E,EAAIw/E,GAAO3B,GAAS34D,GAC7B4C,GAAM,YAGP5C,GAAK+4D,GAAMj+E,EAAIw/E,GACfx/E,GAAKw/E,EAGLhiB,EAAOt2C,OAAOlnB,IAAK,EAAGklB,EAEvB,CAtIoB,IAASq4C,EAwI7B,OAAOjxD,OAAOgxD,iBAAiBE,EAChC,EASM,GAAS,SAASlW,GACvB,MAAMkW,EAAS,GAMT0hB,GAHN53B,EAAQk3B,GAAWl3B,IAGOpnD,OAG1B,IAAIglB,EA/RY,IAgSZ45D,EAAQ,EACRK,EAlSe,GAqSnB,IAAK,MAAMM,KAAgBn4B,EACtBm4B,EAAe,KAClBjiB,EAAOz2D,KAAKm3E,GAAmBuB,IAIjC,MAAMC,EAAcliB,EAAOt9D,OAC3B,IAAIy/E,EAAiBD,EAWrB,IALIA,GACHliB,EAAOz2D,KAjTS,KAqTV44E,EAAiBT,GAAa,CAIpC,IAAI9nB,EAAIymB,GACR,IAAK,MAAM4B,KAAgBn4B,EACtBm4B,GAAgBv6D,GAAKu6D,EAAeroB,IACvCA,EAAIqoB,GAMN,MAAMG,EAAwBD,EAAiB,EAC3CvoB,EAAIlyC,EAAI+4D,IAAOJ,GAASiB,GAASc,IACpC93D,GAAM,YAGPg3D,IAAU1nB,EAAIlyC,GAAK06D,EACnB16D,EAAIkyC,EAEJ,IAAK,MAAMqoB,KAAgBn4B,EAI1B,GAHIm4B,EAAev6D,KAAO45D,EAAQjB,IACjC/1D,GAAM,YAEH23D,IAAiBv6D,EAAG,CAEvB,IAAI26D,EAAIf,EACR,IAAK,IAAIliB,EAAIsD,IAA0BtD,GAAKsD,GAAM,CACjD,MAAMoL,EAAI1O,GAAKuiB,EAxVP,EAwVsBviB,GAAKuiB,EAvV3B,MAuVgDviB,EAAIuiB,EAC5D,GAAIU,EAAIvU,EACP,MAED,MAAMwU,EAAUD,EAAIvU,EACdiU,EAAarf,GAAOoL,EAC1B9N,EAAOz2D,KACNm3E,GAAmBQ,GAAapT,EAAIwU,EAAUP,EAAY,KAE3DM,EAAI5B,GAAM6B,EAAUP,EACrB,CAEA/hB,EAAOz2D,KAAKm3E,GAAmBQ,GAAamB,EAAG,KAC/CV,EAAON,GAAMC,EAAOc,EAAuBD,IAAmBD,GAC9DZ,EAAQ,IACNa,CACH,GAGCb,IACA55D,CAEH,CACA,OAAOs4C,EAAOnxD,KAAK,GACpB,EAoEA,GAzBiB,CAMhB,QAAW,QAQX,KAAQ,CACP,OAAUmyE,GACV,OA9SiBuB,GAAczzE,OAAOgxD,iBAAiByiB,IAgTxD,OAAU,GACV,OAAU,GACV,QA/Be,SAASz4B,GACxB,OAAO82B,GAAU92B,GAAO,SAAS6N,GAChC,OAAO4oB,GAAc19D,KAAK80C,GACvB,OAAS,GAAOA,GAChBA,CACJ,GACD,EA0BC,UAnDiB,SAAS7N,GAC1B,OAAO82B,GAAU92B,GAAO,SAAS6N,GAChC,OAAO2oB,GAAcz9D,KAAK80C,GACvB,GAAOA,EAAO/oD,MAAM,GAAG7I,eACvB4xD,CACJ,GACD,GC1XM/yC,GAAS,CACb9iB,QCfF,CACEiK,QAAS,CAEP0yB,MAAM,EAGNorC,UAAU,EAGVE,QAAQ,EAGRP,WAAY,YAGZuF,SAAS,EAGTiB,aAAa,EAObrB,OAAQ,OAQRvF,UAAW,KAGXuN,WAAY,KAGdryD,WAAY,CACVk+D,KAAM,CAAC,EACPtY,MAAO,CAAC,EACRlC,OAAQ,CAAC,ID1BXya,KEfF,CACE12E,QAAS,CAEP0yB,MAAM,EAGNorC,UAAU,EAGVE,QAAQ,EAGRP,WAAY,YAGZuF,SAAS,EAGTiB,aAAa,EAObrB,OAAQ,OAQRvF,UAAW,KAGXuN,WAAY,IAGdryD,WAAY,CAEVk+D,KAAM,CACJ54B,MAAO,CACL,YACA,QACA,SACA,cAIJsgB,MAAO,CACLtgB,MAAO,CACL,cAIJoe,OAAQ,CACNpe,MAAO,CACL,QAEF84B,OAAQ,CACN,gBACA,qBF9CNC,WGjBF,CACE52E,QAAS,CAEP0yB,MAAM,EAGNorC,UAAU,EAGVE,QAAQ,EAGRP,WAAY,YAGZuF,SAAS,EAGTiB,aAAa,EAObrB,OAAQ,OAQRvF,UAAW,KAGXuN,WAAY,IAGdryD,WAAY,CAEVk+D,KAAM,CACJ54B,MAAO,CACL,YACA,QACA,SACA,cAIJsgB,MAAO,CACLtgB,MAAO,CACL,aACA,OACA,QACA,UACA,KACA,aACA,WACA,OACA,YACA,cAIJoe,OAAQ,CACNpe,MAAO,CACL,WACA,YACA,WACA,SACA,SACA,cACA,QACA,OACA,UACA,QAEF84B,OAAQ,CACN,gBACA,WACA,sBHrDFE,GAAe,oCACfC,GAAe,oCAErB,SAASpT,GAAcxlD,GAErB,MAAM1b,EAAM0b,EAAImL,OAAOrvB,cAEvB,OAAO68E,GAAa//D,KAAKtU,IAAOs0E,GAAahgE,KAAKtU,EACpD,CAEA,MAAMu0E,GAAsB,CAAC,QAAS,SAAU,WAEhD,SAAStT,GAAevlD,GACtB,MAAM84D,EAAS,EAAY94D,GAAK,GAEhC,GAAI84D,EAAO/lB,YAOJ+lB,EAAOlmB,UAAYimB,GAAoB/9E,QAAQg+E,EAAOlmB,WAAa,GACtE,IACEkmB,EAAO/lB,SAAW,WAAiB+lB,EAAO/lB,SAC5C,CAAE,MAAOgmB,GAAW,CAIxB,OAAO,EAAa,EAAaD,GACnC,CAEA,SAASpT,GAAmB1lD,GAC1B,MAAM84D,EAAS,EAAY94D,GAAK,GAEhC,GAAI84D,EAAO/lB,YAOJ+lB,EAAOlmB,UAAYimB,GAAoB/9E,QAAQg+E,EAAOlmB,WAAa,GACtE,IACEkmB,EAAO/lB,SAAW,aAAmB+lB,EAAO/lB,SAC9C,CAAE,MAAOgmB,GAAW,CAKxB,OAAO,EAAa,EAAaD,GAAS,EAAatnB,aAAe,IACxE,CAuIA,SAASwnB,GAAYC,EAAYn3E,GAC/B,KAAM/H,gBAAgBi/E,IACpB,OAAO,IAAIA,GAAWC,EAAYn3E,GAG/BA,GACE,GAAem3E,KAClBn3E,EAAUm3E,GAAc,CAAC,EACzBA,EAAa,WAWjBl/E,KAAKgkE,OAAS,IAAI,GASlBhkE,KAAKkmE,MAAQ,IAAI,GASjBlmE,KAAKw+E,KAAO,IAAI,GAuBhBx+E,KAAKm/E,SAAW,IAAI,GASpBn/E,KAAK+qE,QAAU,IAAI,GAiBnB/qE,KAAKyrE,aAAeA,GAQpBzrE,KAAKwrE,cAAgBA,GAOrBxrE,KAAK2rE,kBAAoBA,GAUzB3rE,KAAKo/E,MAAQ,EAQbp/E,KAAKmyE,QAAU,GAAa,CAAC,EAAG,GAEhCnyE,KAAK+H,QAAU,CAAC,EAChB/H,KAAKq/E,UAAUH,GAEXn3E,GAAW/H,KAAKg+B,IAAIj2B,EAC1B,CAqBAk3E,GAAW9gF,UAAU6/B,IAAM,SAAUj2B,GAEnC,OADA,GAAa/H,KAAK+H,QAASA,GACpB/H,IACT,EAYAi/E,GAAW9gF,UAAUkhF,UAAY,SAAUC,GACzC,MAAMtyC,EAAOhtC,KAEb,GAAI,GAAes/E,GAAU,CAC3B,MAAMJ,EAAaI,EAEnB,KADAA,EAAU1+D,GAAOs+D,IACD,MAAM,IAAI/X,MAAM,+BAAiC+X,EAAa,gBAChF,CAEA,IAAKI,EAAW,MAAM,IAAInY,MAAM,8CAchC,OAZImY,EAAQv3E,SAAWilC,EAAKhP,IAAIshD,EAAQv3E,SAEpCu3E,EAAQh/D,YACVxjB,OAAO4L,KAAK42E,EAAQh/D,YAAY1c,SAAQ,SAAUrE,GAC5C+/E,EAAQh/D,WAAW/gB,GAAMqmD,OAC3B5Y,EAAKztC,GAAM4sE,MAAMxE,WAAW2X,EAAQh/D,WAAW/gB,GAAMqmD,OAEnD05B,EAAQh/D,WAAW/gB,GAAMm/E,QAC3B1xC,EAAKztC,GAAMs3E,OAAOlP,WAAW2X,EAAQh/D,WAAW/gB,GAAMm/E,OAE1D,IAEK1+E,IACT,EAmBAi/E,GAAW9gF,UAAUoJ,OAAS,SAAUkgE,EAAMC,GAC5C,IAAIh/C,EAAS,GAERpqB,MAAMC,QAAQkpE,KAASA,EAAO,CAACA,IAEpC,CAAC,OAAQ,QAAS,UAAU7jE,SAAQ,SAAUojE,GAC5Ct+C,EAASA,EAAO/mB,OAAO3B,KAAKgnE,GAAOmF,MAAM5kE,OAAOkgE,GAAM,GACxD,GAAGznE,MAEH0oB,EAASA,EAAO/mB,OAAO3B,KAAKgkE,OAAO6S,OAAOtvE,OAAOkgE,GAAM,IAEvD,MAAM8X,EAAS9X,EAAKzjE,QAAO,SAAUzE,GAAQ,OAAOmpB,EAAO3nB,QAAQxB,GAAQ,CAAE,IAE7E,GAAIggF,EAAO7gF,SAAWgpE,EACpB,MAAM,IAAIP,MAAM,iDAAmDoY,GAGrE,OAAOv/E,IACT,EASAi/E,GAAW9gF,UAAUypE,QAAU,SAAUH,EAAMC,GAC7C,IAAIh/C,EAAS,GAERpqB,MAAMC,QAAQkpE,KAASA,EAAO,CAACA,IAEpC,CAAC,OAAQ,QAAS,UAAU7jE,SAAQ,SAAUojE,GAC5Ct+C,EAASA,EAAO/mB,OAAO3B,KAAKgnE,GAAOmF,MAAMvE,QAAQH,GAAM,GACzD,GAAGznE,MAEH0oB,EAASA,EAAO/mB,OAAO3B,KAAKgkE,OAAO6S,OAAOjP,QAAQH,GAAM,IAExD,MAAM8X,EAAS9X,EAAKzjE,QAAO,SAAUzE,GAAQ,OAAOmpB,EAAO3nB,QAAQxB,GAAQ,CAAE,IAE7E,GAAIggF,EAAO7gF,SAAWgpE,EACpB,MAAM,IAAIP,MAAM,kDAAoDoY,GAEtE,OAAOv/E,IACT,EAkBAi/E,GAAW9gF,UAAU+f,IAAM,SAAUshE,GACnC,MAAMC,EAAO,CAACz/E,MAAM2B,OAAOrD,MAAMH,UAAUyM,MAAM5L,KAAK4F,UAAW,IAEjE,OADA46E,EAAO76E,MAAM66E,EAAQC,GACdz/E,IACT,EAiBAi/E,GAAW9gF,UAAU8wB,MAAQ,SAAUyyC,EAAKkD,GAC1C,GAAmB,iBAARlD,EACT,MAAM,IAAIyF,MAAM,iCAGlB,MAAM7J,EAAQ,IAAIt9D,KAAKw+E,KAAKnS,MAAM3K,EAAK1hE,KAAM4kE,GAI7C,OAFA5kE,KAAKw+E,KAAKpS,QAAQ9O,GAEXA,EAAMnwC,MACf,EAaA8xD,GAAW9gF,UAAU0B,OAAS,SAAU6hE,EAAKkD,GAG3C,OAFAA,EAAMA,GAAO,CAAC,EAEP5kE,KAAKm/E,SAASt/E,OAAOG,KAAKivB,MAAMyyC,EAAKkD,GAAM5kE,KAAK+H,QAAS68D,EAClE,EAWAqa,GAAW9gF,UAAUuhF,YAAc,SAAUhe,EAAKkD,GAChD,MAAMtH,EAAQ,IAAIt9D,KAAKw+E,KAAKnS,MAAM3K,EAAK1hE,KAAM4kE,GAK7C,OAHAtH,EAAMkL,YAAa,EACnBxoE,KAAKw+E,KAAKpS,QAAQ9O,GAEXA,EAAMnwC,MACf,EAUA8xD,GAAW9gF,UAAUmoE,aAAe,SAAU5E,EAAKkD,GAGjD,OAFAA,EAAMA,GAAO,CAAC,EAEP5kE,KAAKm/E,SAASt/E,OAAOG,KAAK0/E,YAAYhe,EAAKkD,GAAM5kE,KAAK+H,QAAS68D,EACxE,EAEA,aIjjBA,SAAWjlD,GACP,IAAMokD,EAAK4b,KACXhgE,EAAE,kBAAkB4b,MAAK,SAAU/8B,EAAGgG,GAClCmb,EAAEnb,GAAGi2B,KAAKspC,EAAGlkE,OAAO8f,EAAEnb,GAAGi2B,SACzB9a,EAAEnb,GAAGV,YAAY,gBACrB,GACH,CAND,CAMGL,8DCTH,IAAMm8E,EAAU,SAACC,GACb,OAAQA,EAAW,GAAK,IAAM,IAAMA,CACxC,EAEM9wC,EAAiB,SAAA9xC,GACnB,GAAI,4DAA4D4hB,KAAK5hB,GACjE,OAAOA,EAEN,GAAIA,EAAO,CACZ,IAAM0hC,EAAO,IAAInjB,KAAKve,GAStB,OAPa0hC,EAAKiQ,cAOJ,IANFgxC,EAAQjhD,EAAKgQ,WAAa,GAMV,IALlBixC,EAAQjhD,EAAK+P,WAKiB,IAJ7BkxC,EAAQjhD,EAAKmhD,YAI6B,IAHxCF,EAAQjhD,EAAKohD,cAG0C,IAFtDH,EAAQjhD,EAAKqhD,aAG/B,CAEA,MAAO,EACX,EAEMphD,EAAuB,SAAC3hC,GAC1B,GAAI,4DAA4D4hB,KAAK5hB,GACjE,OAAOA,EAEN,GAAIA,EAAO,CACZ,IAAM0hC,EAAO,IAAInjB,KAAKve,GAMtB,OAJa0hC,EAAKiQ,cAIJ,IAHFgxC,EAAQjhD,EAAKgQ,WAAa,GAGV,IAFlBixC,EAAQjhD,EAAK+P,UAG3B,CAEA,MAAO,EACX,gICYA,SAAShkB,EAAkB/G,EAAQlf,GAC/B,IAAMw7E,EAAiBzjD,gBAAgB7Y,GAGvC,OAFAs8D,EAAex7E,SAAWA,EAEnBw7E,CACX,CAGA,SAAS/gE,EAASu0C,EAAIysB,GAClB,IAAIx1B,EACJ,OAAO,WAAmB,QAAAy1B,EAAAv7E,UAAAlG,OAAN+gF,EAAI,IAAAnhF,MAAA6hF,GAAAl4E,EAAA,EAAAA,EAAAk4E,EAAAl4E,IAAJw3E,EAAIx3E,GAAArD,UAAAqD,GAChByiD,GACA1Q,aAAa0Q,GAEjB,IAAMrhC,EAAUrpB,KAChB0qD,EAAQ7qC,YAAW,WACf4zC,EAAG9uD,MAAM0kB,EAASo2D,EACtB,GAAGS,EACP,CACJ,CAEA,SAAS97D,EAAiBg8D,GAGtB,GAAIA,EAAWr/E,QAAQ,MAAQ,EAC3B,OAAOq/E,EAAW33E,MAAM,KAAK,GAIjC,IAAMskC,EAAUqzC,EAAW1lB,MAAM,iBAEjC,OAAI3tB,EAAQruC,OAAS,EACVquC,EAAQ,QADnB,CAIJ,CAAC,SAEc4kB,EAAuBf,GAAA,OAAAyvB,EAAA17E,MAAC,KAADC,UAAA,UAAAy7E,IAUrC,OAVqCA,GAAA/vB,EAAAA,EAAAA,GAAAC,IAAAA,MAAtC,SAAAC,EAAuCc,GAAY,IAAAgvB,EAAAC,EAAAC,EAAAC,EAAAxhD,EAAAyhD,EAAAC,EAAA,OAAApwB,IAAAA,MAAA,SAAAE,GAAA,cAAAA,EAAAC,KAAAD,EAAArqD,MAAA,OAIkB,OAH3Dk6E,EAAe/9E,KAAKC,UAAU8uD,GAC9BivB,EAAS,IAAI9yC,KAAK,CAAC6yC,GAAe,CAAE5gF,KAAM,qBAAsB6gF,SAChEC,EAA2BD,EAAOK,YAAY,IAAIC,kBAAkB,SACpEJ,EAAqB,IAAIK,SAASN,GAAyB/vB,EAAArqD,KAAA,EAC9Cq6E,EAAmBxhD,OAAM,OAAlC,OAAJA,EAAIwxB,EAAAmB,KAAAnB,EAAArqD,KAAG,EACQ64B,EAAK8hD,cAAa,OACoC,OADrEL,EAAMjwB,EAAAmB,KACN+uB,EAAiBK,KAAKl2E,OAAO8sD,aAAYjzD,MAAnBmG,QAAM1M,EAAAA,EAAAA,GAAiB,IAAI6iF,WAAWP,MAASjwB,EAAAgB,OAAA,SAEpE7sC,mBAAmB+7D,IAAe,yBAAAlwB,EAAAE,OAAA,GAAAH,EAAA,MAC5C7rD,MAAA,KAAAC,UAAA,UAEcstD,EAA2BwC,GAAA,OAAAwsB,EAAAv8E,MAAC,KAADC,UAAA,UAAAs8E,IAMzC,OANyCA,GAAA5wB,EAAAA,EAAAA,GAAAC,IAAAA,MAA1C,SAAAQ,EAA2CQ,GAAW,IAAAgvB,EAAAC,EAAAW,EAAAliD,EAAA,OAAAsxB,IAAAA,MAAA,SAAAU,GAAA,cAAAA,EAAAP,KAAAO,EAAA7qD,MAAA,OAGC,OAF7Cm6E,EAAS,IAAI9yC,KAAK,CAAC2zC,EAAU5qD,mBAAmB+6B,KAAgB,CAAE7xD,KAAM,qBAAsB6gF,SAC9FC,EAA2BD,EAAOK,YAAY,IAAIS,oBAAoB,SACtEF,EAAO,IAAIL,SAASN,GAAyBvvB,EAAA7qD,KAAA,EAChC+6E,EAAKliD,OAAM,OACnB,OADLA,EAAIgyB,EAAAW,KAAAX,EAAAqwB,GACH/+E,KAAI0uD,EAAA7qD,KAAA,EAAa64B,EAAKnvB,OAAM,cAAAmhD,EAAAswB,GAAAtwB,EAAAW,KAAAX,EAAAQ,OAAA,SAAAR,EAAAqwB,GAAvBryD,MAAKjwB,KAAAiyD,EAAAqwB,GAAArwB,EAAAswB,KAAA,yBAAAtwB,EAAAN,OAAA,GAAAI,EAAA,MACpBpsD,MAAA,KAAAC,UAAA,CAED,SAASw8E,EAAU72E,GAIf,IAHA,IAAMi3E,EAAgBC,KAAKl3E,GACrBy1D,EAAMwhB,EAAc9iF,OACpBgjF,EAAQ,IAAIT,WAAW,IAAIU,YAAY3hB,IACpCxhE,EAAI,EAAGA,EAAIwhE,EAAKxhE,IACrBkjF,EAAMljF,GAAKgjF,EAAc3pB,WAAWr5D,GAExC,OAAOkjF,CACX,+BCpHA,SAASlpC,EAAgBzzB,EAAe68D,GACpC,IAAM1/C,EAAYviB,EAAE,uBACpBuiB,EAAUW,QACV9d,EAAcvN,KAAKqqE,GAEnB98D,EAAcnhB,SAAQ,SAACC,EAAM4G,GACzB,IAAMq3E,EACF,sFAC0Cr3E,EAAQ,iBACvBnN,IAAtBuG,EAAKsxB,aAA6B,kBAAoB4sD,EAAYl+E,EAAKsxB,cAAgB,SAAW,IACnG,aAAe4sD,EAAYl+E,EAAK+zC,cAHpC,qBAIqBmqC,EAAYl+E,EAAKm0C,WAAa,SAGvD9V,EAAUvG,OAAOmmD,GAEjBniE,EAAE,OAASlV,GAAOu3E,YAAY,CAC1B/kF,MAAOghB,OAAOwG,SAASw9D,OAAS,IAAMhkE,OAAOuC,cAAcshC,UAAY,kBAAoB8/B,EAAW,OAAS/9E,EAAK8gB,GACpHu9D,gBAAiB,IACjBC,SAAU,QACVC,KAAM,OAIgB33E,EAAQ,GADV,GACkC,GAClCsa,EAAcrmB,OAFd,GAGpBwjC,EAAUvG,OAAO,iCAEzB,GACJ,CAEA,SAASkmD,EAAkB3T,EAAOmU,GAC9B,OAAInU,EAAM/4C,aAAektD,EAAOltD,cACpB,EACR+4C,EAAM/4C,aAAektD,EAAOltD,aACrB,EACJ,CACX,CAEA,SAAS4sD,EAAYjyE,GAKjB,OAJIA,EAAKpR,OAAS,KACdoR,EAAOA,EAAK/G,QAAQ,WAAYu5E,IAG7BxyE,CACX,CAEA,SAASwyE,EAAgB/3E,EAAKg4E,EAAQC,GAClC,OAAOD,EAAS,QACpB,+CChDA,SAASx2C,EAAa1tC,GAElB,IAFuC,IAAhBokF,EAAQ79E,UAAAlG,OAAA,QAAApB,IAAAsH,UAAA,GAAAA,UAAA,GAAG,IAC5Bk4E,EAAQ,GACLt+E,EAAI,EAAGA,EAAIolC,KAAK8+C,KAAKrkF,EAAIK,OAAS+jF,GAAWjkF,IAClDs+E,EAAMv3E,KAAKlH,EAAIuM,MAAMpM,EAAIikF,GAAWjkF,EAAI,GAAKikF,IAEjD,OAAO3F,CACX,CAEA,SAAS52C,EAAUnH,GACf,OAAO,IAAIlP,SAAQ,SAACC,EAASC,GACzBpQ,EAAEqG,KAAK,CACHC,IAAK8Y,EACLxY,YAAa,mBACbC,SAAU,OACV9mB,KAAM,MACN0mB,QAAS,SAAUgH,GACf0C,EAAQ1C,EACZ,EACA9G,MAAO,SAAUA,GACbyJ,EAAOzJ,EACX,GAER,GACJ,wECxBA,IAAM+6B,EAAW,CACbshC,WAAU,SAAC91E,GACP,MAAO,OAAPlL,OAAckL,EAAK,6BACvB,EACAo6B,SAAQ,SAAChqC,GACL,IAMM2lF,EAAkB,uBANL,CACf,eACA,mBACA,mBAGwD/3E,KAAK,KAAO,KACxE,OAAOyrB,OAAOssD,GAAiB/jE,KAAK5hB,EACxC,oFCPJ,GAAImI,SAASC,eAAe,8BAA+B,KAgL9C2sB,EAAT,SAASA,EAAaliB,EAAMoiB,GAExB,IACM7I,GADS2I,EAAagJ,SAAWhJ,EAAagJ,OAAS51B,SAAStF,cAAc,YAC7Dm7B,WAAW,MAClC5R,EAAQ6I,KAAOA,EAKf,OAJgB7I,EAAQ2+B,YAAYl4C,GAGdN,MADH,EAGvB,EAzLkBuQ,EAAQ,MACXA,EAAQ,MAEvBjD,IAAAA,IAAQkD,EAAAA,IACRlD,IAAAA,IAAQmD,EAAAA,IAER,IAAMkM,EAAkB,WACpBhM,EAAWC,eAAeC,QAAQ8L,GACjChM,IACDA,EAAW,IAEf,IAAIrD,IAAJ,CAAQ,CACJqB,GAAI,8BACJmC,WAAY,CAAC,EACbrb,KAAM,WACF,MAAO,CACHyb,kBAAmBzC,OAAOuC,cAAcE,kBACxC/f,WAAY,CACRsE,KAAM,GACNwnB,UAAW,CACPG,KAAM,CACF3G,IAAK,qBACLM,YAAa,mBACb7mB,KAAM,QAEV83B,aAAc,SAAUzvB,GACpB,OAAOvE,MAAMhB,UAAUuF,EAC3B,GAEJskB,cAAc,EACdC,iBAAiB,EACjBC,eAAe,EACf1C,SAAU1J,EACVkN,OAAQ,CACJpoB,KAAM,OACNqoB,MAAO,UAGfjY,SAAU,CACN6U,YAAa,EACbC,MAAM,EACNzqB,KAAM,UACNoiB,UAAW,CAAC,GAAI,GAAI,GAAI,IACxBsI,cAAc,GAElB5d,QAAS,CAAC,EACV+T,UAAWtC,OAAOuC,cAAcC,UAEhCuB,OAAQ,CACJ0L,SAAS,GAEbjL,eAAgB,GAChBpD,OAAQ,GAEhB,EACAtf,QAAS,WACLC,KAAKqjB,cAELrjB,KAAKugB,UAAUwC,eAAgB,CACnC,EACAxhB,QAAS,WACT,EACAsB,QAAS,CACL4iB,SAAU,SAAU9c,GAChB3I,KAAKqf,OAAO9Z,KAAKoD,EACrB,EACA2W,WAAY,SAAU7U,GAClBzK,KAAKqf,OAAOqG,OAAOjb,EAAO,EAC9B,EACA4Y,YAAa,SAAU7e,GACnBxE,KAAKwM,QAAU,CACX,CAAE,MAAS,aAAc,MAAS,cAAe,YAAc,EAAO,MAAS,OAC/E,CAAE,MAAS,WAAY,MAAS,YAAa,YAAc,EAAO,MAAS,OAC3E,CAAE,MAAS,kBAAmB,MAAS,mBAAoB,YAAc,EAAO,MAAS,OACzF,CAAE,MAAS,eAAgB,MAAS,gBAAiB,YAAc,EAAO,MAAS,OACnF,CAAE,MAAS,SAAU,MAAS,SAAU,YAAc,EAAO,SAAY,8PAAgQ,MAAS,QAGtV,IAAIsqB,EAAa,GAEjBA,GAAc,8KACdA,GAAc,6KAEV92B,KAAKwM,QAAQjH,KAAK,CAAE,MAAS,IAAK,YAAc,EAAO,SAAYuxB,EAAY,MAAS,MAEhG,EACAxG,WAAY,SAAkCjF,GAC1CA,EAAKG,QAAQ,GAAG+E,iBAAiB,aAAa3sB,SAAQ,SAAA4nB,GAClD,IAAMjc,EAAQoQ,EAAE6L,GAASvmB,KAAK,SAEzB,mBAAmB4Z,KAAKtP,IAEzBoQ,EAAE6L,GAASG,KAAK,QAASpc,EAEjC,GACJ,EACA4T,gBAAiB,SAAU3e,GACvB,IAAM6mB,EAAOrrB,KAAK8L,MAAMuf,KAAKnoB,cACzBc,EAAS,CAAC,EACJ,OAANQ,GAAoB,KAANA,IACdR,EAAS,CAAEitB,MAAO,KAAMC,QAAS,IACjC7F,EAAK7e,QAAQ5I,SAAQ,SAAUkgB,GACvBA,EAAEjX,OACF7I,EAAOktB,QAAQ3rB,KAAK,CAChBsH,MAAOiX,EAAEjX,MACTskB,SAAU,WACVl0B,MAAOuH,EAAE4sB,QAGrB,KAEJ/F,EAAK1qB,WAAWqD,OAAOA,EAC3B,EACAsT,KAAM,SAAU3O,GACZ3I,KAAKupB,MAAQ,EACjB,EACA6B,gBAAiB,SAAU5mB,GACvB,IAAMsD,EAAQ9H,KACRqrB,EAAOrrB,KAAK8L,MAAMuf,KAAKnoB,cAC7BmoB,EAAKG,QAAQ6F,OAAO,YAEpBhG,EAAKG,QAAQC,GAAG,WAAY,sBACxB,SAAUjnB,GACNA,EAAEoa,iBACF,IAAMikE,EAASx3D,EAAKnH,SAASvE,EAAE3f,MAAM6rB,QAAQ,gBACrB,OAApBg3D,EAAOC,UACP7kE,OAAOyS,KAAK,gDAAkDmyD,EAAOC,SAAU,SAEvF,IACJz3D,EAAKG,QAAQC,GAAG,QAAS,oBACrB,SAAUjnB,GACNA,EAAEoa,iBACF,IAAMikE,EAASx3D,EAAKnH,SAASvE,EAAE3f,MAAM6rB,QAAQ,gBAC7C5N,OAAOyS,KAAK,gDAAkDmyD,EAAOC,SAAU,SACnF,IACJz3D,EAAKG,QAAQC,GAAG,QAAS,mBACrB,SAAUjnB,GACNA,EAAEoa,iBACF,IAAMikE,EAASx3D,EAAKnH,SAASvE,EAAE3f,MAAM6rB,QAAQ,gBAC7CmE,EAAAA,EAAMC,KAAK,wCAA0C4yD,EAAOE,gBACvDj9D,MAAK,SAACsH,GACCA,EAASnoB,KAAKmhB,QACd3B,SAASqE,SAEThhB,EAAM2d,SACF,CACI,QAAW,6BAAF9jB,OAA+ByrB,EAASnoB,KAAKA,MACtD,WAAa,GAG7B,IAAE,OAAO,SAAAqhB,GACLxe,EAAM2d,SACF,CACI,QAAW,iDACX,WAAa,GAEzB,GACR,IAEJzlB,KAAKswB,WAAWjF,EACpB,KAGR1L,EAAE,aAAakS,UAAS,SAAUrtB,GAC9B,GAAIA,EAAEstB,QAAUnS,EAAE3f,MAAM+xB,cAAgB,EAAG,CACvC/xB,KAAKwP,MAAQwiB,EAAahyB,KAAKiyB,YAAajyB,KAAKkyB,MAEjD,IAAMC,EAAQnyB,KAAKoyB,aAAa,cAGfhtB,SAASC,eAAe,+BAA+BgtB,uBAAuB,kBAAkB,GAAG1D,cAAc,YAAY2D,WACrIH,GAAO3iB,MAAQmQ,EAAE3f,MAAMuyB,YACpC,CACJ,IAa6BntB,SAASitB,uBAAuB,iBAAiB,GAAG1D,cAAc,4BAC1Ek6B,SAAW,WAC5BzoC,eAAeoO,QAAQrC,EAAiBnsB,KAAK/C,MACjD,CACJ,wBCrMA,iBAQE,WAGA,IAAIK,EAUA0lF,EAAkB,sBAIlBC,EAAiB,4BAMjBC,EAAc,yBAgBdC,EAAwB,GACxBC,EAAoB,GACpBC,EAA0B,GAC1BC,EAAgB,IAChBC,EAAkB,IAiBlBC,EAAW,IACXC,EAAmB,iBAEnBC,EAAM,IAGNC,EAAmB,WAKnBC,EAAY,CACd,CAAC,MAAON,GACR,CAAC,OAtCkB,GAuCnB,CAAC,UAtCsB,GAuCvB,CAAC,QArCmB,GAsCpB,CAAC,aAAcH,GACf,CAAC,OAjCkB,KAkCnB,CAAC,UAAWC,GACZ,CAAC,eAAgBC,GACjB,CAAC,QAASE,IAIRM,EAAU,qBACVC,EAAW,iBAEXC,EAAU,mBACVC,EAAU,gBAEVC,EAAW,iBACXC,EAAU,oBACVC,EAAS,6BACTC,EAAS,eACTC,EAAY,kBAEZC,EAAY,kBACZC,EAAa,mBAEbC,EAAY,kBACZC,EAAS,eACTC,EAAY,kBACZC,EAAY,kBAEZC,EAAa,mBAGbC,EAAiB,uBACjBC,EAAc,oBACdC,EAAa,wBACbC,EAAa,wBACbC,EAAU,qBACVC,EAAW,sBACXC,EAAW,sBACXC,EAAW,sBACXC,EAAkB,6BAClBC,EAAY,uBACZC,EAAY,uBAGZC,EAAuB,iBACvBC,EAAsB,qBACtBC,EAAwB,gCAGxBC,EAAgB,4BAChBC,EAAkB,WAClBC,EAAmBvvD,OAAOqvD,EAAc9wD,QACxCixD,EAAqBxvD,OAAOsvD,EAAgB/wD,QAG5CkxD,EAAW,mBACXC,EAAa,kBACbC,GAAgB,mBAGhBC,GAAe,mDACfC,GAAgB,QAChBC,GAAa,mGAMbC,GAAe,sBACfC,GAAkBhwD,OAAO+vD,GAAaxxD,QAGtC0xD,GAAc,OAGdC,GAAe,KAGfC,GAAgB,4CAChBC,GAAgB,oCAChBC,GAAiB,QAGjBC,GAAc,4CAYdC,GAA6B,mBAG7BC,GAAe,WAMfC,GAAe,kCAGfC,GAAU,OAGVC,GAAa,qBAGbC,GAAa,aAGbC,GAAe,8BAGfC,GAAY,cAGZC,GAAW,mBAGXC,GAAU,8CAGVC,GAAY,OAGZC,GAAoB,yBAGpBC,GAAgB,kBAIhBC,GAAeC,gDACfC,GAAiB,kBACjBC,GAAe,4BAKfC,GAAe,4BACfC,GAAa,iBACbC,GAAeC,8OAGfC,GAAS,OACTC,GAAW,IAAMV,GAAgB,IACjCW,GAAU,IAAMJ,GAAe,IAC/BK,GAAU,IAAMX,GAAe,IAC/BY,GAAW,OACXC,GAAY,IAAMX,GAAiB,IACnCY,GAAU,IAAMX,GAAe,IAC/BY,GAAS,KAAOhB,GAAgBO,GAAeM,GAAWV,GAAiBC,GAAeC,GAAe,IACzGY,GAAS,2BAETC,GAAc,KAAOlB,GAAgB,IACrCmB,GAAa,kCACbC,GAAa,qCACbC,GAAU,IAAMhB,GAAe,IAC/BiB,GAAQ,UAGRC,GAAc,MAAQR,GAAU,IAAMC,GAAS,IAC/CQ,GAAc,MAAQH,GAAU,IAAML,GAAS,IAC/CS,GAAkB,gCAClBC,GAAkB,gCAClBC,GAZa,MAAQf,GAAU,IAAMK,GAAS,IAYtB,IACxBW,GAAW,IAAMtB,GAAa,KAI9BuB,GAAQD,GAAWD,IAHP,MAAQL,GAAQ,MAAQ,CAACJ,GAAaC,GAAYC,IAAYh+E,KAAK,KAAO,IAAMw+E,GAAWD,GAAW,MAIlHG,GAAU,MAAQ,CAAChB,GAAWK,GAAYC,IAAYh+E,KAAK,KAAO,IAAMy+E,GACxEE,GAAW,MAAQ,CAACb,GAAcN,GAAU,IAAKA,GAASO,GAAYC,GAAYV,IAAUt9E,KAAK,KAAO,IAGxG4+E,GAASnzD,OAAO4xD,GAAQ,KAMxBwB,GAAcpzD,OAAO+xD,GAAS,KAG9BsB,GAAYrzD,OAAOoyD,GAAS,MAAQA,GAAS,KAAOc,GAAWF,GAAO,KAGtEM,GAAgBtzD,OAAO,CACzBwyD,GAAU,IAAMN,GAAU,IAAMU,GAAkB,MAAQ,CAACd,GAASU,GAAS,KAAKj+E,KAAK,KAAO,IAC9Fo+E,GAAc,IAAME,GAAkB,MAAQ,CAACf,GAASU,GAAUE,GAAa,KAAKn+E,KAAK,KAAO,IAChGi+E,GAAU,IAAME,GAAc,IAAME,GACpCJ,GAAU,IAAMK,GAtBD,mDADA,mDA0Bfb,GACAiB,IACA1+E,KAAK,KAAM,KAGTg/E,GAAevzD,OAAO,IAAMyyD,GAAQtB,GAAiBC,GAAeK,GAAa,KAGjF+B,GAAmB,qEAGnBC,GAAe,CACjB,QAAS,SAAU,WAAY,OAAQ,QAAS,eAAgB,eAChE,WAAY,YAAa,aAAc,aAAc,MAAO,OAAQ,SACpE,UAAW,SAAU,MAAO,SAAU,SAAU,YAAa,aAC7D,oBAAqB,cAAe,cAAe,UACnD,IAAK,eAAgB,WAAY,WAAY,cAI3CC,IAAmB,EAGnBC,GAAiB,CAAC,EACtBA,GAAelF,GAAckF,GAAejF,GAC5CiF,GAAehF,GAAWgF,GAAe/E,GACzC+E,GAAe9E,GAAY8E,GAAe7E,GAC1C6E,GAAe5E,GAAmB4E,GAAe3E,GACjD2E,GAAe1E,IAAa,EAC5B0E,GAAepG,GAAWoG,GAAenG,GACzCmG,GAAepF,GAAkBoF,GAAelG,GAChDkG,GAAenF,GAAemF,GAAejG,GAC7CiG,GAAehG,GAAYgG,GAAe/F,GAC1C+F,GAAe7F,GAAU6F,GAAe5F,GACxC4F,GAAe3F,GAAa2F,GAAezF,GAC3CyF,GAAexF,GAAUwF,GAAevF,GACxCuF,GAAerF,IAAc,EAG7B,IAAIsF,GAAgB,CAAC,EACrBA,GAAcrG,GAAWqG,GAAcpG,GACvCoG,GAAcrF,GAAkBqF,GAAcpF,GAC9CoF,GAAcnG,GAAWmG,GAAclG,GACvCkG,GAAcnF,GAAcmF,GAAclF,GAC1CkF,GAAcjF,GAAWiF,GAAchF,GACvCgF,GAAc/E,GAAY+E,GAAc9F,GACxC8F,GAAc7F,GAAa6F,GAAc5F,GACzC4F,GAAc1F,GAAa0F,GAAczF,GACzCyF,GAAcxF,GAAawF,GAAcvF,GACzCuF,GAAc9E,GAAY8E,GAAc7E,GACxC6E,GAAc5E,GAAa4E,GAAc3E,IAAa,EACtD2E,GAAcjG,GAAYiG,GAAchG,GACxCgG,GAActF,IAAc,EAG5B,IA4EIuF,GAAgB,CAClB,KAAM,KACN,IAAK,IACL,KAAM,IACN,KAAM,IACN,SAAU,QACV,SAAU,SAIRC,GAAiBC,WACjBC,GAAeh8D,SAGfi8D,GAA8B,iBAAV,EAAAC,GAAsB,EAAAA,GAAU,EAAAA,EAAO1tF,SAAWA,QAAU,EAAA0tF,EAGhFC,GAA0B,iBAARz9C,MAAoBA,MAAQA,KAAKlwC,SAAWA,QAAUkwC,KAGxE09C,GAAOH,IAAcE,IAAYzoF,SAAS,cAATA,GAGjC2oF,GAA4C3tF,IAAYA,EAAQ4tF,UAAY5tF,EAG5E6tF,GAAaF,IAA4C57B,IAAWA,EAAO67B,UAAY77B,EAGvF+7B,GAAgBD,IAAcA,GAAW7tF,UAAY2tF,GAGrDI,GAAcD,IAAiBP,GAAWne,QAG1C4e,GAAY,WACd,IAEE,IAAIn2C,EAAQg2C,IAAcA,GAAW9qE,SAAW8qE,GAAW9qE,QAAQ,QAAQ80B,MAE3E,OAAIA,GAKGk2C,IAAeA,GAAYE,SAAWF,GAAYE,QAAQ,OACnE,CAAE,MAAOzmF,GAAI,CACf,CAZe,GAeX0mF,GAAoBF,IAAYA,GAASG,cACzCC,GAAaJ,IAAYA,GAASK,OAClCC,GAAYN,IAAYA,GAASO,MACjCC,GAAeR,IAAYA,GAAStQ,SACpC+Q,GAAYT,IAAYA,GAASU,MACjCC,GAAmBX,IAAYA,GAASY,aAc5C,SAASjnF,GAAMknF,EAAMC,EAASrM,GAC5B,OAAQA,EAAK/gF,QACX,KAAK,EAAG,OAAOmtF,EAAK7sF,KAAK8sF,GACzB,KAAK,EAAG,OAAOD,EAAK7sF,KAAK8sF,EAASrM,EAAK,IACvC,KAAK,EAAG,OAAOoM,EAAK7sF,KAAK8sF,EAASrM,EAAK,GAAIA,EAAK,IAChD,KAAK,EAAG,OAAOoM,EAAK7sF,KAAK8sF,EAASrM,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE3D,OAAOoM,EAAKlnF,MAAMmnF,EAASrM,EAC7B,CAYA,SAASsM,GAAgBhP,EAAOiP,EAAQC,EAAUzkD,GAIhD,IAHA,IAAI/8B,GAAS,EACT/L,EAAkB,MAATq+E,EAAgB,EAAIA,EAAMr+E,SAE9B+L,EAAQ/L,GAAQ,CACvB,IAAIzB,EAAQ8/E,EAAMtyE,GAClBuhF,EAAOxkD,EAAavqC,EAAOgvF,EAAShvF,GAAQ8/E,EAC9C,CACA,OAAOv1C,CACT,CAWA,SAAS0kD,GAAUnP,EAAOkP,GAIxB,IAHA,IAAIxhF,GAAS,EACT/L,EAAkB,MAATq+E,EAAgB,EAAIA,EAAMr+E,SAE9B+L,EAAQ/L,IAC8B,IAAzCutF,EAASlP,EAAMtyE,GAAQA,EAAOsyE,KAIpC,OAAOA,CACT,CAWA,SAASoP,GAAepP,EAAOkP,GAG7B,IAFA,IAAIvtF,EAAkB,MAATq+E,EAAgB,EAAIA,EAAMr+E,OAEhCA,MAC0C,IAA3CutF,EAASlP,EAAMr+E,GAASA,EAAQq+E,KAItC,OAAOA,CACT,CAYA,SAASqP,GAAWrP,EAAOsP,GAIzB,IAHA,IAAI5hF,GAAS,EACT/L,EAAkB,MAATq+E,EAAgB,EAAIA,EAAMr+E,SAE9B+L,EAAQ/L,GACf,IAAK2tF,EAAUtP,EAAMtyE,GAAQA,EAAOsyE,GAClC,OAAO,EAGX,OAAO,CACT,CAWA,SAASuP,GAAYvP,EAAOsP,GAM1B,IALA,IAAI5hF,GAAS,EACT/L,EAAkB,MAATq+E,EAAgB,EAAIA,EAAMr+E,OACnC6tF,EAAW,EACX7jE,EAAS,KAEJje,EAAQ/L,GAAQ,CACvB,IAAIzB,EAAQ8/E,EAAMtyE,GACd4hF,EAAUpvF,EAAOwN,EAAOsyE,KAC1Br0D,EAAO6jE,KAActvF,EAEzB,CACA,OAAOyrB,CACT,CAWA,SAAS8jE,GAAczP,EAAO9/E,GAE5B,SADsB,MAAT8/E,EAAgB,EAAIA,EAAMr+E,SACpB+tF,GAAY1P,EAAO9/E,EAAO,IAAM,CACrD,CAWA,SAASyvF,GAAkB3P,EAAO9/E,EAAO0vF,GAIvC,IAHA,IAAIliF,GAAS,EACT/L,EAAkB,MAATq+E,EAAgB,EAAIA,EAAMr+E,SAE9B+L,EAAQ/L,GACf,GAAIiuF,EAAW1vF,EAAO8/E,EAAMtyE,IAC1B,OAAO,EAGX,OAAO,CACT,CAWA,SAASmiF,GAAS7P,EAAOkP,GAKvB,IAJA,IAAIxhF,GAAS,EACT/L,EAAkB,MAATq+E,EAAgB,EAAIA,EAAMr+E,OACnCgqB,EAASpqB,MAAMI,KAEV+L,EAAQ/L,GACfgqB,EAAOje,GAASwhF,EAASlP,EAAMtyE,GAAQA,EAAOsyE,GAEhD,OAAOr0D,CACT,CAUA,SAASmkE,GAAU9P,EAAOttE,GAKxB,IAJA,IAAIhF,GAAS,EACT/L,EAAS+Q,EAAO/Q,OAChBuuB,EAAS8vD,EAAMr+E,SAEV+L,EAAQ/L,GACfq+E,EAAM9vD,EAASxiB,GAASgF,EAAOhF,GAEjC,OAAOsyE,CACT,CAcA,SAAS+P,GAAY/P,EAAOkP,EAAUzkD,EAAaulD,GACjD,IAAItiF,GAAS,EACT/L,EAAkB,MAATq+E,EAAgB,EAAIA,EAAMr+E,OAKvC,IAHIquF,GAAaruF,IACf8oC,EAAcu1C,IAAQtyE,MAEfA,EAAQ/L,GACf8oC,EAAcykD,EAASzkD,EAAau1C,EAAMtyE,GAAQA,EAAOsyE,GAE3D,OAAOv1C,CACT,CAcA,SAASwlD,GAAiBjQ,EAAOkP,EAAUzkD,EAAaulD,GACtD,IAAIruF,EAAkB,MAATq+E,EAAgB,EAAIA,EAAMr+E,OAIvC,IAHIquF,GAAaruF,IACf8oC,EAAcu1C,IAAQr+E,IAEjBA,KACL8oC,EAAcykD,EAASzkD,EAAau1C,EAAMr+E,GAASA,EAAQq+E,GAE7D,OAAOv1C,CACT,CAYA,SAASylD,GAAUlQ,EAAOsP,GAIxB,IAHA,IAAI5hF,GAAS,EACT/L,EAAkB,MAATq+E,EAAgB,EAAIA,EAAMr+E,SAE9B+L,EAAQ/L,GACf,GAAI2tF,EAAUtP,EAAMtyE,GAAQA,EAAOsyE,GACjC,OAAO,EAGX,OAAO,CACT,CASA,IAAImQ,GAAYC,GAAa,UAmC7B,SAASC,GAAYC,EAAYhB,EAAWiB,GAC1C,IAAI5kE,EAOJ,OANA4kE,EAASD,GAAY,SAASpwF,EAAO6B,EAAKuuF,GACxC,GAAIhB,EAAUpvF,EAAO6B,EAAKuuF,GAExB,OADA3kE,EAAS5pB,GACF,CAEX,IACO4pB,CACT,CAaA,SAAS6kE,GAAcxQ,EAAOsP,EAAWmB,EAAWC,GAIlD,IAHA,IAAI/uF,EAASq+E,EAAMr+E,OACf+L,EAAQ+iF,GAAaC,EAAY,GAAK,GAElCA,EAAYhjF,MAAYA,EAAQ/L,GACtC,GAAI2tF,EAAUtP,EAAMtyE,GAAQA,EAAOsyE,GACjC,OAAOtyE,EAGX,OAAQ,CACV,CAWA,SAASgiF,GAAY1P,EAAO9/E,EAAOuwF,GACjC,OAAOvwF,GAAUA,EAidnB,SAAuB8/E,EAAO9/E,EAAOuwF,GACnC,IAAI/iF,EAAQ+iF,EAAY,EACpB9uF,EAASq+E,EAAMr+E,OAEnB,OAAS+L,EAAQ/L,GACf,GAAIq+E,EAAMtyE,KAAWxN,EACnB,OAAOwN,EAGX,OAAQ,CACV,CA1dMijF,CAAc3Q,EAAO9/E,EAAOuwF,GAC5BD,GAAcxQ,EAAO4Q,GAAWH,EACtC,CAYA,SAASI,GAAgB7Q,EAAO9/E,EAAOuwF,EAAWb,GAIhD,IAHA,IAAIliF,EAAQ+iF,EAAY,EACpB9uF,EAASq+E,EAAMr+E,SAEV+L,EAAQ/L,GACf,GAAIiuF,EAAW5P,EAAMtyE,GAAQxN,GAC3B,OAAOwN,EAGX,OAAQ,CACV,CASA,SAASkjF,GAAU1wF,GACjB,OAAOA,GAAUA,CACnB,CAWA,SAAS4wF,GAAS9Q,EAAOkP,GACvB,IAAIvtF,EAAkB,MAATq+E,EAAgB,EAAIA,EAAMr+E,OACvC,OAAOA,EAAUovF,GAAQ/Q,EAAOkP,GAAYvtF,EAAUglF,CACxD,CASA,SAASyJ,GAAaruF,GACpB,OAAO,SAASwF,GACd,OAAiB,MAAVA,EAAiBhH,EAAYgH,EAAOxF,EAC7C,CACF,CASA,SAASivF,GAAezpF,GACtB,OAAO,SAASxF,GACd,OAAiB,MAAVwF,EAAiBhH,EAAYgH,EAAOxF,EAC7C,CACF,CAeA,SAASkvF,GAAWX,EAAYpB,EAAUzkD,EAAaulD,EAAWO,GAMhE,OALAA,EAASD,GAAY,SAASpwF,EAAOwN,EAAO4iF,GAC1C7lD,EAAculD,GACTA,GAAY,EAAO9vF,GACpBgvF,EAASzkD,EAAavqC,EAAOwN,EAAO4iF,EAC1C,IACO7lD,CACT,CA+BA,SAASsmD,GAAQ/Q,EAAOkP,GAKtB,IAJA,IAAIvjE,EACAje,GAAS,EACT/L,EAASq+E,EAAMr+E,SAEV+L,EAAQ/L,GAAQ,CACvB,IAAI+oC,EAAUwkD,EAASlP,EAAMtyE,IACzBg9B,IAAYnqC,IACdorB,EAASA,IAAWprB,EAAYmqC,EAAW/e,EAAS+e,EAExD,CACA,OAAO/e,CACT,CAWA,SAASulE,GAAUvqE,EAAGuoE,GAIpB,IAHA,IAAIxhF,GAAS,EACTie,EAASpqB,MAAMolB,KAEVjZ,EAAQiZ,GACfgF,EAAOje,GAASwhF,EAASxhF,GAE3B,OAAOie,CACT,CAwBA,SAASwlE,GAASv6B,GAChB,OAAOA,EACHA,EAAO/oD,MAAM,EAAGujF,GAAgBx6B,GAAU,GAAG5qD,QAAQw9E,GAAa,IAClE5yB,CACN,CASA,SAASy6B,GAAUvC,GACjB,OAAO,SAAS5uF,GACd,OAAO4uF,EAAK5uF,EACd,CACF,CAYA,SAASoxF,GAAW/pF,EAAQ9E,GAC1B,OAAOotF,GAASptF,GAAO,SAASV,GAC9B,OAAOwF,EAAOxF,EAChB,GACF,CAUA,SAASwvF,GAAS52B,EAAO54D,GACvB,OAAO44D,EAAMhlB,IAAI5zC,EACnB,CAWA,SAASyvF,GAAgBC,EAAYC,GAInC,IAHA,IAAIhkF,GAAS,EACT/L,EAAS8vF,EAAW9vF,SAEf+L,EAAQ/L,GAAU+tF,GAAYgC,EAAYD,EAAW/jF,GAAQ,IAAM,IAC5E,OAAOA,CACT,CAWA,SAASikF,GAAcF,EAAYC,GAGjC,IAFA,IAAIhkF,EAAQ+jF,EAAW9vF,OAEhB+L,KAAWgiF,GAAYgC,EAAYD,EAAW/jF,GAAQ,IAAM,IACnE,OAAOA,CACT,CA8BA,IAAIkkF,GAAeZ,GAjxBG,CAEpB,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IACtB,EAAQ,IAAM,EAAQ,IACtB,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IACtB,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IACnC,EAAQ,KAAM,EAAQ,KACtB,EAAQ,KAAM,EAAQ,KACtB,EAAQ,KAER,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAC1B,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACtF,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACtF,EAAU,IAAM,EAAU,IAC1B,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,KAAM,EAAU,KAC1B,EAAU,KAAM,EAAU,KAC1B,EAAU,KAAM,EAAU,MAouBxBa,GAAiBb,GAhuBH,CAChB,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,UAouBP,SAASc,GAAiB12B,GACxB,MAAO,KAAOgyB,GAAchyB,EAC9B,CAqBA,SAAS22B,GAAWn7B,GAClB,OAAOk2B,GAAahrE,KAAK80C,EAC3B,CAqCA,SAASo7B,GAAWvkF,GAClB,IAAIC,GAAS,EACTie,EAASpqB,MAAMkM,EAAI43E,MAKvB,OAHA53E,EAAI5G,SAAQ,SAAS3G,EAAO6B,GAC1B4pB,IAASje,GAAS,CAAC3L,EAAK7B,EAC1B,IACOyrB,CACT,CAUA,SAASsmE,GAAQnD,EAAMoD,GACrB,OAAO,SAASC,GACd,OAAOrD,EAAKoD,EAAUC,GACxB,CACF,CAWA,SAASC,GAAepS,EAAO52C,GAM7B,IALA,IAAI17B,GAAS,EACT/L,EAASq+E,EAAMr+E,OACf6tF,EAAW,EACX7jE,EAAS,KAEJje,EAAQ/L,GAAQ,CACvB,IAAIzB,EAAQ8/E,EAAMtyE,GACdxN,IAAUkpC,GAAelpC,IAAUimF,IACrCnG,EAAMtyE,GAASy4E,EACfx6D,EAAO6jE,KAAc9hF,EAEzB,CACA,OAAOie,CACT,CASA,SAAS0mE,GAAWpxD,GAClB,IAAIvzB,GAAS,EACTie,EAASpqB,MAAM0/B,EAAIokD,MAKvB,OAHApkD,EAAIp6B,SAAQ,SAAS3G,GACnByrB,IAASje,GAASxN,CACpB,IACOyrB,CACT,CASA,SAAS2mE,GAAWrxD,GAClB,IAAIvzB,GAAS,EACTie,EAASpqB,MAAM0/B,EAAIokD,MAKvB,OAHApkD,EAAIp6B,SAAQ,SAAS3G,GACnByrB,IAASje,GAAS,CAACxN,EAAOA,EAC5B,IACOyrB,CACT,CAmDA,SAAS4mE,GAAW37B,GAClB,OAAOm7B,GAAWn7B,GAiDpB,SAAqBA,GACnB,IAAIjrC,EAASihE,GAAU5pB,UAAY,EACnC,KAAO4pB,GAAU9qE,KAAK80C,MAClBjrC,EAEJ,OAAOA,CACT,CAtDM6mE,CAAY57B,GACZu5B,GAAUv5B,EAChB,CASA,SAAS67B,GAAc77B,GACrB,OAAOm7B,GAAWn7B,GAmDpB,SAAwBA,GACtB,OAAOA,EAAO+G,MAAMivB,KAAc,EACpC,CApDM8F,CAAe97B,GA7kBrB,SAAsBA,GACpB,OAAOA,EAAOlrD,MAAM,GACtB,CA4kBMinF,CAAa/7B,EACnB,CAUA,SAASw6B,GAAgBx6B,GAGvB,IAFA,IAAIlpD,EAAQkpD,EAAOj1D,OAEZ+L,KAAW+7E,GAAa3nE,KAAK80C,EAAOjpD,OAAOD,MAClD,OAAOA,CACT,CASA,IAAIklF,GAAmB5B,GA38BH,CAClB,QAAS,IACT,OAAQ,IACR,OAAQ,IACR,SAAU,IACV,QAAS,MA4gCX,IAs3eI6B,GAt3ee,SAAUC,EAAaxmE,GAIxC,IA6BMymE,EA7BFxxF,GAHJ+qB,EAAqB,MAAXA,EAAkBqhE,GAAOkF,GAAEG,SAASrF,GAAK5tF,SAAUusB,EAASumE,GAAEI,KAAKtF,GAAMX,MAG/DzrF,MAChBkd,GAAO6N,EAAQ7N,KACf2rD,GAAQ99C,EAAQ89C,MAChBnlE,GAAWqnB,EAAQrnB,SACnB4hC,GAAOva,EAAQua,KACf9mC,GAASusB,EAAQvsB,OACjBw5B,GAASjN,EAAQiN,OACjBxrB,GAASue,EAAQve,OACjBiT,GAAYsL,EAAQtL,UAGpBkyE,GAAa3xF,EAAMH,UACnB+xF,GAAYluF,GAAS7D,UACrBgyF,GAAcrzF,GAAOqB,UAGrBiyF,GAAa/mE,EAAQ,sBAGrBgnE,GAAeH,GAAUrhD,SAGzB9vC,GAAiBoxF,GAAYpxF,eAG7BuxF,GAAY,EAGZC,IACET,EAAM,SAASv5D,KAAK65D,IAAcA,GAAW1nF,MAAQ0nF,GAAW1nF,KAAK8nF,UAAY,KACvE,iBAAmBV,EAAO,GAQtCW,GAAuBN,GAAYthD,SAGnC6hD,GAAmBL,GAAarxF,KAAKlC,IAGrC6zF,GAAUjG,GAAKkF,EAGfgB,GAAat6D,GAAO,IACtB+5D,GAAarxF,KAAKD,IAAgBgK,QAAQs9E,GAAc,QACvDt9E,QAAQ,yDAA0D,SAAW,KAI5E8nF,GAAS/F,GAAgBzhE,EAAQwnE,OAASvzF,EAC1CU,GAASqrB,EAAQrrB,OACjBijF,GAAa53D,EAAQ43D,WACrB6P,GAAcD,GAASA,GAAOC,YAAcxzF,EAC5CyzF,GAAe/B,GAAQlyF,GAAOk0F,eAAgBl0F,IAC9Cm0F,GAAen0F,GAAOo0F,OACtBC,GAAuBhB,GAAYgB,qBACnCzrE,GAASuqE,GAAWvqE,OACpB0rE,GAAmBpzF,GAASA,GAAOqzF,mBAAqB/zF,EACxDg0F,GAActzF,GAASA,GAAOC,SAAWX,EACzCi0F,GAAiBvzF,GAASA,GAAOwzF,YAAcl0F,EAE/CP,GAAkB,WACpB,IACE,IAAI8uF,EAAO4F,GAAU30F,GAAQ,kBAE7B,OADA+uF,EAAK,CAAC,EAAG,GAAI,CAAC,GACPA,CACT,CAAE,MAAOrnF,GAAI,CACf,CANqB,GASjBktF,GAAkBroE,EAAQ2wB,eAAiB0wC,GAAK1wC,cAAgB3wB,EAAQ2wB,aACxE23C,GAASn2E,IAAQA,GAAKo2E,MAAQlH,GAAKlvE,KAAKo2E,KAAOp2E,GAAKo2E,IACpDC,GAAgBxoE,EAAQxJ,aAAe6qE,GAAK7qE,YAAcwJ,EAAQxJ,WAGlEiyE,GAAaluD,GAAK8+C,KAClBqP,GAAcnuD,GAAK64C,MACnBuV,GAAmBl1F,GAAOm1F,sBAC1BC,GAAiBrB,GAASA,GAAOsB,SAAW70F,EAC5C80F,GAAiB/oE,EAAQgpE,SACzBC,GAAarC,GAAWplF,KACxB0nF,GAAavD,GAAQlyF,GAAO4L,KAAM5L,IAClC01F,GAAY5uD,GAAKC,IACjB4uD,GAAY7uD,GAAK6pC,IACjBilB,GAAYl3E,GAAKo2E,IACjBe,GAAiBtpE,EAAQiF,SACzBskE,GAAehvD,GAAKivD,OACpBC,GAAgB7C,GAAW7T,QAG3B2W,GAAWtB,GAAUpoE,EAAS,YAC9BwyC,GAAM41B,GAAUpoE,EAAS,OACzBwG,GAAU4hE,GAAUpoE,EAAS,WAC7BykB,GAAM2jD,GAAUpoE,EAAS,OACzB2pE,GAAUvB,GAAUpoE,EAAS,WAC7B4pE,GAAexB,GAAU30F,GAAQ,UAGjCo2F,GAAUF,IAAW,IAAIA,GAGzBG,GAAY,CAAC,EAGbC,GAAqBC,GAASN,IAC9BO,GAAgBD,GAASx3B,IACzB03B,GAAoBF,GAASxjE,IAC7B2jE,GAAgBH,GAASvlD,IACzB2lD,GAAoBJ,GAASL,IAG7BU,GAAc11F,GAASA,GAAOG,UAAYb,EAC1Cq2F,GAAgBD,GAAcA,GAAYE,QAAUt2F,EACpDu2F,GAAiBH,GAAcA,GAAY7kD,SAAWvxC,EAyH1D,SAASw2F,GAAO72F,GACd,GAAI82F,GAAa92F,KAAWsB,GAAQtB,MAAYA,aAAiB+2F,IAAc,CAC7E,GAAI/2F,aAAiBg3F,GACnB,OAAOh3F,EAET,GAAI8B,GAAeC,KAAK/B,EAAO,eAC7B,OAAOi3F,GAAaj3F,EAExB,CACA,OAAO,IAAIg3F,GAAch3F,EAC3B,CAUA,IAAIk3F,GAAc,WAChB,SAAS7vF,IAAU,CACnB,OAAO,SAASk2D,GACd,IAAK45B,GAAS55B,GACZ,MAAO,CAAC,EAEV,GAAIy2B,GACF,OAAOA,GAAaz2B,GAEtBl2D,EAAOnG,UAAYq8D,EACnB,IAAI9xC,EAAS,IAAIpkB,EAEjB,OADAA,EAAOnG,UAAYb,EACZorB,CACT,CACF,CAdiB,GAqBjB,SAAS2rE,KAET,CASA,SAASJ,GAAch3F,EAAOq3F,GAC5Bt0F,KAAKu0F,YAAct3F,EACnB+C,KAAKw0F,YAAc,GACnBx0F,KAAKy0F,YAAcH,EACnBt0F,KAAKk7E,UAAY,EACjBl7E,KAAK00F,WAAap3F,CACpB,CA+EA,SAAS02F,GAAY/2F,GACnB+C,KAAKu0F,YAAct3F,EACnB+C,KAAKw0F,YAAc,GACnBx0F,KAAK20F,QAAU,EACf30F,KAAK40F,cAAe,EACpB50F,KAAK60F,cAAgB,GACrB70F,KAAK80F,cAAgBnR,EACrB3jF,KAAK+0F,UAAY,EACnB,CA+GA,SAASC,GAAKC,GACZ,IAAIxqF,GAAS,EACT/L,EAAoB,MAAXu2F,EAAkB,EAAIA,EAAQv2F,OAG3C,IADAsB,KAAKkmD,UACIz7C,EAAQ/L,GAAQ,CACvB,IAAI+yC,EAAQwjD,EAAQxqF,GACpBzK,KAAKg+B,IAAIyT,EAAM,GAAIA,EAAM,GAC3B,CACF,CA+FA,SAASyjD,GAAUD,GACjB,IAAIxqF,GAAS,EACT/L,EAAoB,MAAXu2F,EAAkB,EAAIA,EAAQv2F,OAG3C,IADAsB,KAAKkmD,UACIz7C,EAAQ/L,GAAQ,CACvB,IAAI+yC,EAAQwjD,EAAQxqF,GACpBzK,KAAKg+B,IAAIyT,EAAM,GAAIA,EAAM,GAC3B,CACF,CA4GA,SAAS0jD,GAASF,GAChB,IAAIxqF,GAAS,EACT/L,EAAoB,MAAXu2F,EAAkB,EAAIA,EAAQv2F,OAG3C,IADAsB,KAAKkmD,UACIz7C,EAAQ/L,GAAQ,CACvB,IAAI+yC,EAAQwjD,EAAQxqF,GACpBzK,KAAKg+B,IAAIyT,EAAM,GAAIA,EAAM,GAC3B,CACF,CA+FA,SAAS2jD,GAAS3lF,GAChB,IAAIhF,GAAS,EACT/L,EAAmB,MAAV+Q,EAAiB,EAAIA,EAAO/Q,OAGzC,IADAsB,KAAKq1F,SAAW,IAAIF,KACX1qF,EAAQ/L,GACfsB,KAAKwoB,IAAI/Y,EAAOhF,GAEpB,CA2CA,SAAS6qF,GAAML,GACb,IAAIhwF,EAAOjF,KAAKq1F,SAAW,IAAIH,GAAUD,GACzCj1F,KAAKoiF,KAAOn9E,EAAKm9E,IACnB,CAoGA,SAASmT,GAAct4F,EAAOu4F,GAC5B,IAAIC,EAAQl3F,GAAQtB,GAChBy4F,GAASD,GAASE,GAAY14F,GAC9B24F,GAAUH,IAAUC,GAASvD,GAASl1F,GACtC44F,GAAUJ,IAAUC,IAAUE,GAAUhK,GAAa3uF,GACrD64F,EAAcL,GAASC,GAASE,GAAUC,EAC1CntE,EAASotE,EAAc7H,GAAUhxF,EAAMyB,OAAQoM,IAAU,GACzDpM,EAASgqB,EAAOhqB,OAEpB,IAAK,IAAII,KAAO7B,GACTu4F,IAAaz2F,GAAeC,KAAK/B,EAAO6B,IACvCg3F,IAEQ,UAAPh3F,GAEC82F,IAAkB,UAAP92F,GAA0B,UAAPA,IAE9B+2F,IAAkB,UAAP/2F,GAA0B,cAAPA,GAA8B,cAAPA,IAEtDi3F,GAAQj3F,EAAKJ,KAElBgqB,EAAOnjB,KAAKzG,GAGhB,OAAO4pB,CACT,CASA,SAASstE,GAAYjZ,GACnB,IAAIr+E,EAASq+E,EAAMr+E,OACnB,OAAOA,EAASq+E,EAAMkZ,GAAW,EAAGv3F,EAAS,IAAMpB,CACrD,CAUA,SAAS44F,GAAgBnZ,EAAOr5D,GAC9B,OAAOyyE,GAAYC,GAAUrZ,GAAQsZ,GAAU3yE,EAAG,EAAGq5D,EAAMr+E,QAC7D,CASA,SAAS43F,GAAavZ,GACpB,OAAOoZ,GAAYC,GAAUrZ,GAC/B,CAWA,SAASwZ,GAAiBjyF,EAAQxF,EAAK7B,IAChCA,IAAUK,IAAcs2D,GAAGtvD,EAAOxF,GAAM7B,IACxCA,IAAUK,KAAewB,KAAOwF,KACnCkyF,GAAgBlyF,EAAQxF,EAAK7B,EAEjC,CAYA,SAASw5F,GAAYnyF,EAAQxF,EAAK7B,GAChC,IAAIy5F,EAAWpyF,EAAOxF,GAChBC,GAAeC,KAAKsF,EAAQxF,IAAQ80D,GAAG8iC,EAAUz5F,KAClDA,IAAUK,GAAewB,KAAOwF,IACnCkyF,GAAgBlyF,EAAQxF,EAAK7B,EAEjC,CAUA,SAAS05F,GAAa5Z,EAAOj+E,GAE3B,IADA,IAAIJ,EAASq+E,EAAMr+E,OACZA,KACL,GAAIk1D,GAAGmpB,EAAMr+E,GAAQ,GAAII,GACvB,OAAOJ,EAGX,OAAQ,CACV,CAaA,SAASk4F,GAAevJ,EAAYrB,EAAQC,EAAUzkD,GAIpD,OAHAqvD,GAASxJ,GAAY,SAASpwF,EAAO6B,EAAKuuF,GACxCrB,EAAOxkD,EAAavqC,EAAOgvF,EAAShvF,GAAQowF,EAC9C,IACO7lD,CACT,CAWA,SAASsvD,GAAWxyF,EAAQuwB,GAC1B,OAAOvwB,GAAUyyF,GAAWliE,EAAQnsB,GAAKmsB,GAASvwB,EACpD,CAwBA,SAASkyF,GAAgBlyF,EAAQxF,EAAK7B,GACzB,aAAP6B,GAAsB/B,GACxBA,GAAeuH,EAAQxF,EAAK,CAC1B,cAAgB,EAChB,YAAc,EACd,MAAS7B,EACT,UAAY,IAGdqH,EAAOxF,GAAO7B,CAElB,CAUA,SAAS+5F,GAAO1yF,EAAQ2yF,GAMtB,IALA,IAAIxsF,GAAS,EACT/L,EAASu4F,EAAMv4F,OACfgqB,EAASpqB,EAAMI,GACf2rB,EAAiB,MAAV/lB,IAEFmG,EAAQ/L,GACfgqB,EAAOje,GAAS4f,EAAO/sB,EAAY42B,GAAI5vB,EAAQ2yF,EAAMxsF,IAEvD,OAAOie,CACT,CAWA,SAAS2tE,GAAUliC,EAAQ+iC,EAAOC,GAShC,OARIhjC,GAAWA,IACTgjC,IAAU75F,IACZ62D,EAASA,GAAUgjC,EAAQhjC,EAASgjC,GAElCD,IAAU55F,IACZ62D,EAASA,GAAU+iC,EAAQ/iC,EAAS+iC,IAGjC/iC,CACT,CAkBA,SAASijC,GAAUn6F,EAAOo6F,EAASC,EAAYx4F,EAAKwF,EAAQqlE,GAC1D,IAAIjhD,EACA6uE,EArkFc,EAqkFLF,EACTG,EArkFc,EAqkFLH,EACTI,EArkFiB,EAqkFRJ,EAKb,GAHIC,IACF5uE,EAASpkB,EAASgzF,EAAWr6F,EAAO6B,EAAKwF,EAAQqlE,GAAS2tB,EAAWr6F,IAEnEyrB,IAAWprB,EACb,OAAOorB,EAET,IAAK0rE,GAASn3F,GACZ,OAAOA,EAET,IAAIw4F,EAAQl3F,GAAQtB,GACpB,GAAIw4F,GAEF,GADA/sE,EA68GJ,SAAwBq0D,GACtB,IAAIr+E,EAASq+E,EAAMr+E,OACfgqB,EAAS,IAAIq0D,EAAM7+E,YAAYQ,GAG/BA,GAA6B,iBAAZq+E,EAAM,IAAkBh+E,GAAeC,KAAK+9E,EAAO,WACtEr0D,EAAOje,MAAQsyE,EAAMtyE,MACrBie,EAAOo9B,MAAQi3B,EAAMj3B,OAEvB,OAAOp9B,CACT,CAv9GagvE,CAAez6F,IACnBs6F,EACH,OAAOnB,GAAUn5F,EAAOyrB,OAErB,CACL,IAAIniB,EAAMoxF,GAAO16F,GACb26F,EAASrxF,GAAO29E,GAAW39E,GAAO49E,EAEtC,GAAIgO,GAASl1F,GACX,OAAO46F,GAAY56F,EAAOs6F,GAE5B,GAAIhxF,GAAO+9E,GAAa/9E,GAAOs9E,GAAY+T,IAAWtzF,GAEpD,GADAokB,EAAU8uE,GAAUI,EAAU,CAAC,EAAIE,GAAgB76F,IAC9Cs6F,EACH,OAAOC,EA+nEf,SAAuB3iE,EAAQvwB,GAC7B,OAAOyyF,GAAWliE,EAAQkjE,GAAaljE,GAASvwB,EAClD,CAhoEY0zF,CAAc/6F,EAnH1B,SAAsBqH,EAAQuwB,GAC5B,OAAOvwB,GAAUyyF,GAAWliE,EAAQojE,GAAOpjE,GAASvwB,EACtD,CAiHiC4zF,CAAaxvE,EAAQzrB,IAknEtD,SAAqB43B,EAAQvwB,GAC3B,OAAOyyF,GAAWliE,EAAQsjE,GAAWtjE,GAASvwB,EAChD,CAnnEY8zF,CAAYn7F,EAAO65F,GAAWpuE,EAAQzrB,QAEvC,CACL,IAAKitF,GAAc3jF,GACjB,OAAOjC,EAASrH,EAAQ,CAAC,EAE3ByrB,EA49GN,SAAwBpkB,EAAQiC,EAAKgxF,GACnC,IAAIc,EAAO/zF,EAAOpG,YAClB,OAAQqI,GACN,KAAKs+E,EACH,OAAOyT,GAAiBh0F,GAE1B,KAAKy/E,EACL,KAAKC,EACH,OAAO,IAAIqU,GAAM/zF,GAEnB,KAAKwgF,EACH,OA5nDN,SAAuByT,EAAUhB,GAC/B,IAAI7W,EAAS6W,EAASe,GAAiBC,EAAS7X,QAAU6X,EAAS7X,OACnE,OAAO,IAAI6X,EAASr6F,YAAYwiF,EAAQ6X,EAASC,WAAYD,EAASE,WACxE,CAynDaC,CAAcp0F,EAAQizF,GAE/B,KAAKxS,EAAY,KAAKC,EACtB,KAAKC,EAAS,KAAKC,EAAU,KAAKC,EAClC,KAAKC,EAAU,KAAKC,EAAiB,KAAKC,EAAW,KAAKC,EACxD,OAAOoT,GAAgBr0F,EAAQizF,GAEjC,KAAKnT,EACH,OAAO,IAAIiU,EAEb,KAAKhU,EACL,KAAKK,EACH,OAAO,IAAI2T,EAAK/zF,GAElB,KAAKkgF,EACH,OA/nDN,SAAqBoU,GACnB,IAAIlwE,EAAS,IAAIkwE,EAAO16F,YAAY06F,EAAO/jE,OAAQmyD,GAAQzwD,KAAKqiE,IAEhE,OADAlwE,EAAOq3C,UAAY64B,EAAO74B,UACnBr3C,CACT,CA2nDamwE,CAAYv0F,GAErB,KAAKmgF,EACH,OAAO,IAAI4T,EAEb,KAAK1T,EACH,OAxnDemU,EAwnDIx0F,EAvnDhBqvF,GAAgB72F,GAAO62F,GAAc30F,KAAK85F,IAAW,CAAC,EAD/D,IAAqBA,CA0nDrB,CA9/GeC,CAAe97F,EAAOsJ,EAAKgxF,EACtC,CACF,CAEA5tB,IAAUA,EAAQ,IAAI2rB,IACtB,IAAI0D,EAAUrvB,EAAMz1C,IAAIj3B,GACxB,GAAI+7F,EACF,OAAOA,EAETrvB,EAAM3rC,IAAI/gC,EAAOyrB,GAEbgjE,GAAMzuF,GACRA,EAAM2G,SAAQ,SAASq1F,GACrBvwE,EAAOF,IAAI4uE,GAAU6B,EAAU5B,EAASC,EAAY2B,EAAUh8F,EAAO0sE,GACvE,IACS4hB,GAAMtuF,IACfA,EAAM2G,SAAQ,SAASq1F,EAAUn6F,GAC/B4pB,EAAOsV,IAAIl/B,EAAKs4F,GAAU6B,EAAU5B,EAASC,EAAYx4F,EAAK7B,EAAO0sE,GACvE,IAGF,IAIInqE,EAAQi2F,EAAQn4F,GAJLm6F,EACVD,EAAS0B,GAAeC,GACxB3B,EAASS,GAASvvF,IAEkBzL,GASzC,OARAivF,GAAU1sF,GAASvC,GAAO,SAASg8F,EAAUn6F,GACvCU,IAEFy5F,EAAWh8F,EADX6B,EAAMm6F,IAIRxC,GAAY/tE,EAAQ5pB,EAAKs4F,GAAU6B,EAAU5B,EAASC,EAAYx4F,EAAK7B,EAAO0sE,GAChF,IACOjhD,CACT,CAwBA,SAAS0wE,GAAe90F,EAAQuwB,EAAQr1B,GACtC,IAAId,EAASc,EAAMd,OACnB,GAAc,MAAV4F,EACF,OAAQ5F,EAGV,IADA4F,EAASxH,GAAOwH,GACT5F,KAAU,CACf,IAAII,EAAMU,EAAMd,GACZ2tF,EAAYx3D,EAAO/1B,GACnB7B,EAAQqH,EAAOxF,GAEnB,GAAK7B,IAAUK,KAAewB,KAAOwF,KAAa+nF,EAAUpvF,GAC1D,OAAO,CAEX,CACA,OAAO,CACT,CAYA,SAASo8F,GAAUxN,EAAM3L,EAAMT,GAC7B,GAAmB,mBAARoM,EACT,MAAM,IAAI9tE,GAAUilE,GAEtB,OAAOnjE,IAAW,WAAagsE,EAAKlnF,MAAMrH,EAAWmiF,EAAO,GAAGS,EACjE,CAaA,SAASoZ,GAAevc,EAAOttE,EAAQw8E,EAAUU,GAC/C,IAAIliF,GAAS,EACTooB,EAAW25D,GACX+M,GAAW,EACX76F,EAASq+E,EAAMr+E,OACfgqB,EAAS,GACT8wE,EAAe/pF,EAAO/Q,OAE1B,IAAKA,EACH,OAAOgqB,EAELujE,IACFx8E,EAASm9E,GAASn9E,EAAQ2+E,GAAUnC,KAElCU,GACF95D,EAAW65D,GACX6M,GAAW,GAEJ9pF,EAAO/Q,QAtvFG,MAuvFjBm0B,EAAWy7D,GACXiL,GAAW,EACX9pF,EAAS,IAAI2lF,GAAS3lF,IAExBgqF,EACA,OAAShvF,EAAQ/L,GAAQ,CACvB,IAAIzB,EAAQ8/E,EAAMtyE,GACd+f,EAAuB,MAAZyhE,EAAmBhvF,EAAQgvF,EAAShvF,GAGnD,GADAA,EAAS0vF,GAAwB,IAAV1vF,EAAeA,EAAQ,EAC1Cs8F,GAAY/uE,GAAaA,EAAU,CAErC,IADA,IAAIkvE,EAAcF,EACXE,KACL,GAAIjqF,EAAOiqF,KAAiBlvE,EAC1B,SAASivE,EAGb/wE,EAAOnjB,KAAKtI,EACd,MACU41B,EAASpjB,EAAQ+a,EAAUmiE,IACnCjkE,EAAOnjB,KAAKtI,EAEhB,CACA,OAAOyrB,CACT,CAlkCAorE,GAAO6F,iBAAmB,CAQxB,OAAU5T,EAQV,SAAYC,EAQZ,YAAeC,GAQf,SAAY,GAQZ,QAAW,CAQT,EAAK6N,KAKTA,GAAO31F,UAAYk2F,GAAWl2F,UAC9B21F,GAAO31F,UAAUD,YAAc41F,GAE/BG,GAAc91F,UAAYg2F,GAAWE,GAAWl2F,WAChD81F,GAAc91F,UAAUD,YAAc+1F,GAsHtCD,GAAY71F,UAAYg2F,GAAWE,GAAWl2F,WAC9C61F,GAAY71F,UAAUD,YAAc81F,GAoGpCgB,GAAK72F,UAAU+nD,MAvEf,WACElmD,KAAKq1F,SAAWpC,GAAeA,GAAa,MAAQ,CAAC,EACrDjzF,KAAKoiF,KAAO,CACd,EAqEA4S,GAAK72F,UAAkB,OAzDvB,SAAoBW,GAClB,IAAI4pB,EAAS1oB,KAAK0yC,IAAI5zC,WAAekB,KAAKq1F,SAASv2F,GAEnD,OADAkB,KAAKoiF,MAAQ15D,EAAS,EAAI,EACnBA,CACT,EAsDAssE,GAAK72F,UAAU+1B,IA3Cf,SAAiBp1B,GACf,IAAImG,EAAOjF,KAAKq1F,SAChB,GAAIpC,GAAc,CAChB,IAAIvqE,EAASzjB,EAAKnG,GAClB,OAAO4pB,IAAWu6D,EAAiB3lF,EAAYorB,CACjD,CACA,OAAO3pB,GAAeC,KAAKiG,EAAMnG,GAAOmG,EAAKnG,GAAOxB,CACtD,EAqCA03F,GAAK72F,UAAUu0C,IA1Bf,SAAiB5zC,GACf,IAAImG,EAAOjF,KAAKq1F,SAChB,OAAOpC,GAAgBhuF,EAAKnG,KAASxB,EAAayB,GAAeC,KAAKiG,EAAMnG,EAC9E,EAwBAk2F,GAAK72F,UAAU6/B,IAZf,SAAiBl/B,EAAK7B,GACpB,IAAIgI,EAAOjF,KAAKq1F,SAGhB,OAFAr1F,KAAKoiF,MAAQpiF,KAAK0yC,IAAI5zC,GAAO,EAAI,EACjCmG,EAAKnG,GAAQm0F,IAAgBh2F,IAAUK,EAAa2lF,EAAiBhmF,EAC9D+C,IACT,EAwHAk1F,GAAU/2F,UAAU+nD,MApFpB,WACElmD,KAAKq1F,SAAW,GAChBr1F,KAAKoiF,KAAO,CACd,EAkFA8S,GAAU/2F,UAAkB,OAvE5B,SAAyBW,GACvB,IAAImG,EAAOjF,KAAKq1F,SACZ5qF,EAAQksF,GAAa1xF,EAAMnG,GAE/B,QAAI2L,EAAQ,KAIRA,GADYxF,EAAKvG,OAAS,EAE5BuG,EAAKkE,MAELuc,GAAO1mB,KAAKiG,EAAMwF,EAAO,KAEzBzK,KAAKoiF,MACA,EACT,EAyDA8S,GAAU/2F,UAAU+1B,IA9CpB,SAAsBp1B,GACpB,IAAImG,EAAOjF,KAAKq1F,SACZ5qF,EAAQksF,GAAa1xF,EAAMnG,GAE/B,OAAO2L,EAAQ,EAAInN,EAAY2H,EAAKwF,GAAO,EAC7C,EA0CAyqF,GAAU/2F,UAAUu0C,IA/BpB,SAAsB5zC,GACpB,OAAO63F,GAAa32F,KAAKq1F,SAAUv2F,IAAQ,CAC7C,EA8BAo2F,GAAU/2F,UAAU6/B,IAlBpB,SAAsBl/B,EAAK7B,GACzB,IAAIgI,EAAOjF,KAAKq1F,SACZ5qF,EAAQksF,GAAa1xF,EAAMnG,GAQ/B,OANI2L,EAAQ,KACRzK,KAAKoiF,KACPn9E,EAAKM,KAAK,CAACzG,EAAK7B,KAEhBgI,EAAKwF,GAAO,GAAKxN,EAEZ+C,IACT,EA0GAm1F,GAASh3F,UAAU+nD,MAtEnB,WACElmD,KAAKoiF,KAAO,EACZpiF,KAAKq1F,SAAW,CACd,KAAQ,IAAIL,GACZ,IAAO,IAAKn5B,IAAOq5B,IACnB,OAAU,IAAIF,GAElB,EAgEAG,GAASh3F,UAAkB,OArD3B,SAAwBW,GACtB,IAAI4pB,EAASkxE,GAAW55F,KAAMlB,GAAa,OAAEA,GAE7C,OADAkB,KAAKoiF,MAAQ15D,EAAS,EAAI,EACnBA,CACT,EAkDAysE,GAASh3F,UAAU+1B,IAvCnB,SAAqBp1B,GACnB,OAAO86F,GAAW55F,KAAMlB,GAAKo1B,IAAIp1B,EACnC,EAsCAq2F,GAASh3F,UAAUu0C,IA3BnB,SAAqB5zC,GACnB,OAAO86F,GAAW55F,KAAMlB,GAAK4zC,IAAI5zC,EACnC,EA0BAq2F,GAASh3F,UAAU6/B,IAdnB,SAAqBl/B,EAAK7B,GACxB,IAAIgI,EAAO20F,GAAW55F,KAAMlB,GACxBsjF,EAAOn9E,EAAKm9E,KAIhB,OAFAn9E,EAAK+4B,IAAIl/B,EAAK7B,GACd+C,KAAKoiF,MAAQn9E,EAAKm9E,MAAQA,EAAO,EAAI,EAC9BpiF,IACT,EA0DAo1F,GAASj3F,UAAUqqB,IAAM4sE,GAASj3F,UAAUoH,KAnB5C,SAAqBtI,GAEnB,OADA+C,KAAKq1F,SAASr3D,IAAI/gC,EAAOgmF,GAClBjjF,IACT,EAiBAo1F,GAASj3F,UAAUu0C,IANnB,SAAqBz1C,GACnB,OAAO+C,KAAKq1F,SAAS3iD,IAAIz1C,EAC3B,EAsGAq4F,GAAMn3F,UAAU+nD,MA3EhB,WACElmD,KAAKq1F,SAAW,IAAIH,GACpBl1F,KAAKoiF,KAAO,CACd,EAyEAkT,GAAMn3F,UAAkB,OA9DxB,SAAqBW,GACnB,IAAImG,EAAOjF,KAAKq1F,SACZ3sE,EAASzjB,EAAa,OAAEnG,GAG5B,OADAkB,KAAKoiF,KAAOn9E,EAAKm9E,KACV15D,CACT,EAyDA4sE,GAAMn3F,UAAU+1B,IA9ChB,SAAkBp1B,GAChB,OAAOkB,KAAKq1F,SAASnhE,IAAIp1B,EAC3B,EA6CAw2F,GAAMn3F,UAAUu0C,IAlChB,SAAkB5zC,GAChB,OAAOkB,KAAKq1F,SAAS3iD,IAAI5zC,EAC3B,EAiCAw2F,GAAMn3F,UAAU6/B,IArBhB,SAAkBl/B,EAAK7B,GACrB,IAAIgI,EAAOjF,KAAKq1F,SAChB,GAAIpwF,aAAgBiwF,GAAW,CAC7B,IAAI2E,EAAQ50F,EAAKowF,SACjB,IAAKx5B,IAAQg+B,EAAMn7F,OAASo7F,IAG1B,OAFAD,EAAMt0F,KAAK,CAACzG,EAAK7B,IACjB+C,KAAKoiF,OAASn9E,EAAKm9E,KACZpiF,KAETiF,EAAOjF,KAAKq1F,SAAW,IAAIF,GAAS0E,EACtC,CAGA,OAFA50F,EAAK+4B,IAAIl/B,EAAK7B,GACd+C,KAAKoiF,KAAOn9E,EAAKm9E,KACVpiF,IACT,EAqcA,IAAI62F,GAAWkD,GAAeC,IAU1BC,GAAgBF,GAAeG,IAAiB,GAWpD,SAASC,GAAU9M,EAAYhB,GAC7B,IAAI3jE,GAAS,EAKb,OAJAmuE,GAASxJ,GAAY,SAASpwF,EAAOwN,EAAO4iF,GAE1C,OADA3kE,IAAW2jE,EAAUpvF,EAAOwN,EAAO4iF,EAErC,IACO3kE,CACT,CAYA,SAAS0xE,GAAard,EAAOkP,EAAUU,GAIrC,IAHA,IAAIliF,GAAS,EACT/L,EAASq+E,EAAMr+E,SAEV+L,EAAQ/L,GAAQ,CACvB,IAAIzB,EAAQ8/E,EAAMtyE,GACdg9B,EAAUwkD,EAAShvF,GAEvB,GAAe,MAAXwqC,IAAoBjd,IAAaltB,EAC5BmqC,GAAYA,IAAY4yD,GAAS5yD,GAClCklD,EAAWllD,EAASjd,IAE1B,IAAIA,EAAWid,EACX/e,EAASzrB,CAEjB,CACA,OAAOyrB,CACT,CAsCA,SAAS4xE,GAAWjN,EAAYhB,GAC9B,IAAI3jE,EAAS,GAMb,OALAmuE,GAASxJ,GAAY,SAASpwF,EAAOwN,EAAO4iF,GACtChB,EAAUpvF,EAAOwN,EAAO4iF,IAC1B3kE,EAAOnjB,KAAKtI,EAEhB,IACOyrB,CACT,CAaA,SAAS6xE,GAAYxd,EAAOyd,EAAOnO,EAAWoO,EAAU/xE,GACtD,IAAIje,GAAS,EACT/L,EAASq+E,EAAMr+E,OAKnB,IAHA2tF,IAAcA,EAAYqO,IAC1BhyE,IAAWA,EAAS,MAEXje,EAAQ/L,GAAQ,CACvB,IAAIzB,EAAQ8/E,EAAMtyE,GACd+vF,EAAQ,GAAKnO,EAAUpvF,GACrBu9F,EAAQ,EAEVD,GAAYt9F,EAAOu9F,EAAQ,EAAGnO,EAAWoO,EAAU/xE,GAEnDmkE,GAAUnkE,EAAQzrB,GAEVw9F,IACV/xE,EAAOA,EAAOhqB,QAAUzB,EAE5B,CACA,OAAOyrB,CACT,CAaA,IAAIiyE,GAAUC,KAYVC,GAAeD,IAAc,GAUjC,SAASZ,GAAW11F,EAAQ2nF,GAC1B,OAAO3nF,GAAUq2F,GAAQr2F,EAAQ2nF,EAAUvjF,GAC7C,CAUA,SAASwxF,GAAgB51F,EAAQ2nF,GAC/B,OAAO3nF,GAAUu2F,GAAav2F,EAAQ2nF,EAAUvjF,GAClD,CAWA,SAASoyF,GAAcx2F,EAAQ9E,GAC7B,OAAO8sF,GAAY9sF,GAAO,SAASV,GACjC,OAAOg4E,GAAWxyE,EAAOxF,GAC3B,GACF,CAUA,SAASi8F,GAAQz2F,EAAQ02F,GAMvB,IAHA,IAAIvwF,EAAQ,EACR/L,GAHJs8F,EAAOC,GAASD,EAAM12F,IAGJ5F,OAED,MAAV4F,GAAkBmG,EAAQ/L,GAC/B4F,EAASA,EAAO42F,GAAMF,EAAKvwF,OAE7B,OAAQA,GAASA,GAAS/L,EAAU4F,EAAShH,CAC/C,CAaA,SAAS69F,GAAe72F,EAAQ82F,EAAUC,GACxC,IAAI3yE,EAAS0yE,EAAS92F,GACtB,OAAO/F,GAAQ+F,GAAUokB,EAASmkE,GAAUnkE,EAAQ2yE,EAAY/2F,GAClE,CASA,SAASg3F,GAAWr+F,GAClB,OAAa,MAATA,EACKA,IAAUK,EAn7FJ,qBARL,gBA67FFi0F,IAAkBA,MAAkBz0F,GAAOG,GA23FrD,SAAmBA,GACjB,IAAIs+F,EAAQx8F,GAAeC,KAAK/B,EAAOs0F,IACnChrF,EAAMtJ,EAAMs0F,IAEhB,IACEt0F,EAAMs0F,IAAkBj0F,EACxB,IAAIk+F,GAAW,CACjB,CAAE,MAAOh3F,GAAI,CAEb,IAAIkkB,EAAS+nE,GAAqBzxF,KAAK/B,GACnCu+F,IACED,EACFt+F,EAAMs0F,IAAkBhrF,SAEjBtJ,EAAMs0F,KAGjB,OAAO7oE,CACT,CA54FM+yE,CAAUx+F,GA+5GhB,SAAwBA,GACtB,OAAOwzF,GAAqBzxF,KAAK/B,EACnC,CAh6GMy+F,CAAez+F,EACrB,CAWA,SAAS0+F,GAAO1+F,EAAO2+F,GACrB,OAAO3+F,EAAQ2+F,CACjB,CAUA,SAASC,GAAQv3F,EAAQxF,GACvB,OAAiB,MAAVwF,GAAkBvF,GAAeC,KAAKsF,EAAQxF,EACvD,CAUA,SAASg9F,GAAUx3F,EAAQxF,GACzB,OAAiB,MAAVwF,GAAkBxF,KAAOhC,GAAOwH,EACzC,CAyBA,SAASy3F,GAAiBC,EAAQ/P,EAAUU,GAS1C,IARA,IAAI95D,EAAW85D,EAAaD,GAAoBF,GAC5C9tF,EAASs9F,EAAO,GAAGt9F,OACnBu9F,EAAYD,EAAOt9F,OACnBw9F,EAAWD,EACXE,EAAS79F,EAAM29F,GACfG,EAAYC,IACZ3zE,EAAS,GAENwzE,KAAY,CACjB,IAAInf,EAAQif,EAAOE,GACfA,GAAYjQ,IACdlP,EAAQ6P,GAAS7P,EAAOqR,GAAUnC,KAEpCmQ,EAAY3J,GAAU1V,EAAMr+E,OAAQ09F,GACpCD,EAAOD,IAAavP,IAAeV,GAAavtF,GAAU,KAAOq+E,EAAMr+E,QAAU,KAC7E,IAAI02F,GAAS8G,GAAYnf,GACzBz/E,CACN,CACAy/E,EAAQif,EAAO,GAEf,IAAIvxF,GAAS,EACT6xF,EAAOH,EAAO,GAElB1C,EACA,OAAShvF,EAAQ/L,GAAUgqB,EAAOhqB,OAAS09F,GAAW,CACpD,IAAIn/F,EAAQ8/E,EAAMtyE,GACd+f,EAAWyhE,EAAWA,EAAShvF,GAASA,EAG5C,GADAA,EAAS0vF,GAAwB,IAAV1vF,EAAeA,EAAQ,IACxCq/F,EACEhO,GAASgO,EAAM9xE,GACfqI,EAASnK,EAAQ8B,EAAUmiE,IAC5B,CAEL,IADAuP,EAAWD,IACFC,GAAU,CACjB,IAAIxkC,EAAQykC,EAAOD,GACnB,KAAMxkC,EACE42B,GAAS52B,EAAOltC,GAChBqI,EAASmpE,EAAOE,GAAW1xE,EAAUmiE,IAE3C,SAAS8M,CAEb,CACI6C,GACFA,EAAK/2F,KAAKilB,GAEZ9B,EAAOnjB,KAAKtI,EACd,CACF,CACA,OAAOyrB,CACT,CA8BA,SAAS6zE,GAAWj4F,EAAQ02F,EAAMvb,GAGhC,IAAIoM,EAAiB,OADrBvnF,EAASsH,GAAOtH,EADhB02F,EAAOC,GAASD,EAAM12F,KAEMA,EAASA,EAAO42F,GAAMz/D,GAAKu/D,KACvD,OAAe,MAARnP,EAAevuF,EAAYqH,GAAMknF,EAAMvnF,EAAQm7E,EACxD,CASA,SAAS+c,GAAgBv/F,GACvB,OAAO82F,GAAa92F,IAAUq+F,GAAWr+F,IAAU4mF,CACrD,CAsCA,SAAS4Y,GAAYx/F,EAAO2+F,EAAOvE,EAASC,EAAY3tB,GACtD,OAAI1sE,IAAU2+F,IAGD,MAAT3+F,GAA0B,MAAT2+F,IAAmB7H,GAAa92F,KAAW82F,GAAa6H,GACpE3+F,GAAUA,GAAS2+F,GAAUA,EAmBxC,SAAyBt3F,EAAQs3F,EAAOvE,EAASC,EAAYoF,EAAW/yB,GACtE,IAAIgzB,EAAWp+F,GAAQ+F,GACnBs4F,EAAWr+F,GAAQq9F,GACnBiB,EAASF,EAAW7Y,EAAW6T,GAAOrzF,GACtCw4F,EAASF,EAAW9Y,EAAW6T,GAAOiE,GAKtCmB,GAHJF,EAASA,GAAUhZ,EAAUS,EAAYuY,IAGhBvY,EACrB0Y,GAHJF,EAASA,GAAUjZ,EAAUS,EAAYwY,IAGhBxY,EACrB2Y,EAAYJ,GAAUC,EAE1B,GAAIG,GAAa9K,GAAS7tF,GAAS,CACjC,IAAK6tF,GAASyJ,GACZ,OAAO,EAETe,GAAW,EACXI,GAAW,CACb,CACA,GAAIE,IAAcF,EAEhB,OADApzB,IAAUA,EAAQ,IAAI2rB,IACdqH,GAAY/Q,GAAatnF,GAC7B44F,GAAY54F,EAAQs3F,EAAOvE,EAASC,EAAYoF,EAAW/yB,GA81EnE,SAAoBrlE,EAAQs3F,EAAOr1F,EAAK8wF,EAASC,EAAYoF,EAAW/yB,GACtE,OAAQpjE,GACN,KAAKu+E,EACH,GAAKxgF,EAAOm0F,YAAcmD,EAAMnD,YAC3Bn0F,EAAOk0F,YAAcoD,EAAMpD,WAC9B,OAAO,EAETl0F,EAASA,EAAOo8E,OAChBkb,EAAQA,EAAMlb,OAEhB,KAAKmE,EACH,QAAKvgF,EAAOm0F,YAAcmD,EAAMnD,aAC3BiE,EAAU,IAAIzb,GAAW38E,GAAS,IAAI28E,GAAW2a,KAKxD,KAAK7X,EACL,KAAKC,EACL,KAAKK,EAGH,OAAOzwB,IAAItvD,GAASs3F,GAEtB,KAAK3X,EACH,OAAO3/E,EAAO/E,MAAQq8F,EAAMr8F,MAAQ+E,EAAO0sB,SAAW4qE,EAAM5qE,QAE9D,KAAKwzD,EACL,KAAKE,EAIH,OAAOpgF,GAAWs3F,EAAQ,GAE5B,KAAKxX,EACH,IAAI+Y,EAAUpO,GAEhB,KAAKtK,EACH,IAAI2Y,EAxnLe,EAwnLH/F,EAGhB,GAFA8F,IAAYA,EAAU/N,IAElB9qF,EAAO89E,MAAQwZ,EAAMxZ,OAASgb,EAChC,OAAO,EAGT,IAAIpE,EAAUrvB,EAAMz1C,IAAI5vB,GACxB,GAAI00F,EACF,OAAOA,GAAW4C,EAEpBvE,GAloLqB,EAqoLrB1tB,EAAM3rC,IAAI15B,EAAQs3F,GAClB,IAAIlzE,EAASw0E,GAAYC,EAAQ74F,GAAS64F,EAAQvB,GAAQvE,EAASC,EAAYoF,EAAW/yB,GAE1F,OADAA,EAAc,OAAErlE,GACTokB,EAET,KAAKi8D,EACH,GAAIgP,GACF,OAAOA,GAAc30F,KAAKsF,IAAWqvF,GAAc30F,KAAK48F,GAG9D,OAAO,CACT,CA55EQyB,CAAW/4F,EAAQs3F,EAAOiB,EAAQxF,EAASC,EAAYoF,EAAW/yB,GAExE,KAvvGuB,EAuvGjB0tB,GAAiC,CACrC,IAAIiG,EAAeP,GAAYh+F,GAAeC,KAAKsF,EAAQ,eACvDi5F,EAAeP,GAAYj+F,GAAeC,KAAK48F,EAAO,eAE1D,GAAI0B,GAAgBC,EAAc,CAChC,IAAIC,EAAeF,EAAeh5F,EAAOrH,QAAUqH,EAC/Cm5F,EAAeF,EAAe3B,EAAM3+F,QAAU2+F,EAGlD,OADAjyB,IAAUA,EAAQ,IAAI2rB,IACfoH,EAAUc,EAAcC,EAAcpG,EAASC,EAAY3tB,EACpE,CACF,CACA,IAAKszB,EACH,OAAO,EAGT,OADAtzB,IAAUA,EAAQ,IAAI2rB,IA05ExB,SAAsBhxF,EAAQs3F,EAAOvE,EAASC,EAAYoF,EAAW/yB,GACnE,IAAIyzB,EAjqLmB,EAiqLP/F,EACZqG,EAAWvE,GAAW70F,GACtBq5F,EAAYD,EAASh/F,OACrBk/F,EAAWzE,GAAWyC,GACtBK,EAAY2B,EAASl/F,OAEzB,GAAIi/F,GAAa1B,IAAcmB,EAC7B,OAAO,EAET,IAAI3yF,EAAQkzF,EACZ,KAAOlzF,KAAS,CACd,IAAI3L,EAAM4+F,EAASjzF,GACnB,KAAM2yF,EAAYt+F,KAAO88F,EAAQ78F,GAAeC,KAAK48F,EAAO98F,IAC1D,OAAO,CAEX,CAEA,IAAI++F,EAAal0B,EAAMz1C,IAAI5vB,GACvBw5F,EAAan0B,EAAMz1C,IAAI0nE,GAC3B,GAAIiC,GAAcC,EAChB,OAAOD,GAAcjC,GAASkC,GAAcx5F,EAE9C,IAAIokB,GAAS,EACbihD,EAAM3rC,IAAI15B,EAAQs3F,GAClBjyB,EAAM3rC,IAAI49D,EAAOt3F,GAEjB,IAAIy5F,EAAWX,EACf,OAAS3yF,EAAQkzF,GAAW,CAE1B,IAAIjH,EAAWpyF,EADfxF,EAAM4+F,EAASjzF,IAEXuzF,EAAWpC,EAAM98F,GAErB,GAAIw4F,EACF,IAAI2G,EAAWb,EACX9F,EAAW0G,EAAUtH,EAAU53F,EAAK88F,EAAOt3F,EAAQqlE,GACnD2tB,EAAWZ,EAAUsH,EAAUl/F,EAAKwF,EAAQs3F,EAAOjyB,GAGzD,KAAMs0B,IAAa3gG,EACVo5F,IAAasH,GAAYtB,EAAUhG,EAAUsH,EAAU3G,EAASC,EAAY3tB,GAC7Es0B,GACD,CACLv1E,GAAS,EACT,KACF,CACAq1E,IAAaA,EAAkB,eAAPj/F,EAC1B,CACA,GAAI4pB,IAAWq1E,EAAU,CACvB,IAAIG,EAAU55F,EAAOpG,YACjBigG,EAAUvC,EAAM19F,YAGhBggG,GAAWC,KACV,gBAAiB75F,MAAU,gBAAiBs3F,IACzB,mBAAXsC,GAAyBA,aAAmBA,GACjC,mBAAXC,GAAyBA,aAAmBA,IACvDz1E,GAAS,EAEb,CAGA,OAFAihD,EAAc,OAAErlE,GAChBqlE,EAAc,OAAEiyB,GACTlzE,CACT,CAx9ES01E,CAAa95F,EAAQs3F,EAAOvE,EAASC,EAAYoF,EAAW/yB,EACrE,CA5DS00B,CAAgBphG,EAAO2+F,EAAOvE,EAASC,EAAYmF,GAAa9yB,GACzE,CAkFA,SAAS20B,GAAYh6F,EAAQuwB,EAAQ0pE,EAAWjH,GAC9C,IAAI7sF,EAAQ8zF,EAAU7/F,OAClBA,EAAS+L,EACT+zF,GAAgBlH,EAEpB,GAAc,MAAVhzF,EACF,OAAQ5F,EAGV,IADA4F,EAASxH,GAAOwH,GACTmG,KAAS,CACd,IAAIxF,EAAOs5F,EAAU9zF,GACrB,GAAK+zF,GAAgBv5F,EAAK,GAClBA,EAAK,KAAOX,EAAOW,EAAK,MACtBA,EAAK,KAAMX,GAEnB,OAAO,CAEX,CACA,OAASmG,EAAQ/L,GAAQ,CAEvB,IAAII,GADJmG,EAAOs5F,EAAU9zF,IACF,GACXisF,EAAWpyF,EAAOxF,GAClB2/F,EAAWx5F,EAAK,GAEpB,GAAIu5F,GAAgBv5F,EAAK,IACvB,GAAIyxF,IAAap5F,KAAewB,KAAOwF,GACrC,OAAO,MAEJ,CACL,IAAIqlE,EAAQ,IAAI2rB,GAChB,GAAIgC,EACF,IAAI5uE,EAAS4uE,EAAWZ,EAAU+H,EAAU3/F,EAAKwF,EAAQuwB,EAAQ80C,GAEnE,KAAMjhD,IAAWprB,EACTm/F,GAAYgC,EAAU/H,EAAUgI,EAA+CpH,EAAY3tB,GAC3FjhD,GAEN,OAAO,CAEX,CACF,CACA,OAAO,CACT,CAUA,SAASi2E,GAAa1hG,GACpB,SAAKm3F,GAASn3F,KA05FE4uF,EA15FiB5uF,EA25FxBszF,IAAeA,MAAc1E,MAx5FxB/U,GAAW75E,GAAS2zF,GAAazJ,IAChCtoE,KAAKw0E,GAASp2F,IAs5F/B,IAAkB4uF,CAr5FlB,CA2CA,SAAS+S,GAAa3hG,GAGpB,MAAoB,mBAATA,EACFA,EAEI,MAATA,EACK4hG,GAEW,iBAAT5hG,EACFsB,GAAQtB,GACX6hG,GAAoB7hG,EAAM,GAAIA,EAAM,IACpC8hG,GAAY9hG,GAEX+hG,GAAS/hG,EAClB,CASA,SAASgiG,GAAS36F,GAChB,IAAK46F,GAAY56F,GACf,OAAOiuF,GAAWjuF,GAEpB,IAAIokB,EAAS,GACb,IAAK,IAAI5pB,KAAOhC,GAAOwH,GACjBvF,GAAeC,KAAKsF,EAAQxF,IAAe,eAAPA,GACtC4pB,EAAOnjB,KAAKzG,GAGhB,OAAO4pB,CACT,CASA,SAASy2E,GAAW76F,GAClB,IAAK8vF,GAAS9vF,GACZ,OA09FJ,SAAsBA,GACpB,IAAIokB,EAAS,GACb,GAAc,MAAVpkB,EACF,IAAK,IAAIxF,KAAOhC,GAAOwH,GACrBokB,EAAOnjB,KAAKzG,GAGhB,OAAO4pB,CACT,CAl+FW02E,CAAa96F,GAEtB,IAAI+6F,EAAUH,GAAY56F,GACtBokB,EAAS,GAEb,IAAK,IAAI5pB,KAAOwF,GACD,eAAPxF,IAAyBugG,GAAYtgG,GAAeC,KAAKsF,EAAQxF,KACrE4pB,EAAOnjB,KAAKzG,GAGhB,OAAO4pB,CACT,CAWA,SAAS42E,GAAOriG,EAAO2+F,GACrB,OAAO3+F,EAAQ2+F,CACjB,CAUA,SAAS2D,GAAQlS,EAAYpB,GAC3B,IAAIxhF,GAAS,EACTie,EAAS82E,GAAYnS,GAAc/uF,EAAM+uF,EAAW3uF,QAAU,GAKlE,OAHAm4F,GAASxJ,GAAY,SAASpwF,EAAO6B,EAAKuuF,GACxC3kE,IAASje,GAASwhF,EAAShvF,EAAO6B,EAAKuuF,EACzC,IACO3kE,CACT,CASA,SAASq2E,GAAYlqE,GACnB,IAAI0pE,EAAYkB,GAAa5qE,GAC7B,OAAwB,GAApB0pE,EAAU7/F,QAAe6/F,EAAU,GAAG,GACjCmB,GAAwBnB,EAAU,GAAG,GAAIA,EAAU,GAAG,IAExD,SAASj6F,GACd,OAAOA,IAAWuwB,GAAUypE,GAAYh6F,EAAQuwB,EAAQ0pE,EAC1D,CACF,CAUA,SAASO,GAAoB9D,EAAMyD,GACjC,OAAIkB,GAAM3E,IAAS4E,GAAmBnB,GAC7BiB,GAAwBxE,GAAMF,GAAOyD,GAEvC,SAASn6F,GACd,IAAIoyF,EAAWxiE,GAAI5vB,EAAQ02F,GAC3B,OAAQtE,IAAap5F,GAAao5F,IAAa+H,EAC3CoB,GAAMv7F,EAAQ02F,GACdyB,GAAYgC,EAAU/H,EAAUgI,EACtC,CACF,CAaA,SAASoB,GAAUx7F,EAAQuwB,EAAQkrE,EAAUzI,EAAY3tB,GACnDrlE,IAAWuwB,GAGf8lE,GAAQ9lE,GAAQ,SAAS4pE,EAAU3/F,GAEjC,GADA6qE,IAAUA,EAAQ,IAAI2rB,IAClBlB,GAASqK,IA+BjB,SAAuBn6F,EAAQuwB,EAAQ/1B,EAAKihG,EAAUC,EAAW1I,EAAY3tB,GAC3E,IAAI+sB,EAAWuJ,GAAQ37F,EAAQxF,GAC3B2/F,EAAWwB,GAAQprE,EAAQ/1B,GAC3Bk6F,EAAUrvB,EAAMz1C,IAAIuqE,GAExB,GAAIzF,EAEF,YADAzC,GAAiBjyF,EAAQxF,EAAKk6F,GAGhC,IAAI72F,EAAWm1F,EACXA,EAAWZ,EAAU+H,EAAW3/F,EAAM,GAAKwF,EAAQuwB,EAAQ80C,GAC3DrsE,EAEAi8F,EAAWp3F,IAAa7E,EAE5B,GAAIi8F,EAAU,CACZ,IAAI9D,EAAQl3F,GAAQkgG,GAChB7I,GAAUH,GAAStD,GAASsM,GAC5ByB,GAAWzK,IAAUG,GAAUhK,GAAa6S,GAEhDt8F,EAAWs8F,EACPhJ,GAASG,GAAUsK,EACjB3hG,GAAQm4F,GACVv0F,EAAWu0F,EAEJyJ,GAAkBzJ,GACzBv0F,EAAWi0F,GAAUM,GAEdd,GACP2D,GAAW,EACXp3F,EAAW01F,GAAY4G,GAAU,IAE1ByB,GACP3G,GAAW,EACXp3F,EAAWw2F,GAAgB8F,GAAU,IAGrCt8F,EAAW,GAGNi+F,GAAc3B,IAAa9I,GAAY8I,IAC9Ct8F,EAAWu0F,EACPf,GAAYe,GACdv0F,EAAWk+F,GAAc3J,GAEjBtC,GAASsC,KAAa5f,GAAW4f,KACzCv0F,EAAW21F,GAAgB2G,KAI7BlF,GAAW,CAEf,CACIA,IAEF5vB,EAAM3rC,IAAIygE,EAAUt8F,GACpB69F,EAAU79F,EAAUs8F,EAAUsB,EAAUzI,EAAY3tB,GACpDA,EAAc,OAAE80B,IAElBlI,GAAiBjyF,EAAQxF,EAAKqD,EAChC,CA1FMm+F,CAAch8F,EAAQuwB,EAAQ/1B,EAAKihG,EAAUD,GAAWxI,EAAY3tB,OAEjE,CACH,IAAIxnE,EAAWm1F,EACXA,EAAW2I,GAAQ37F,EAAQxF,GAAM2/F,EAAW3/F,EAAM,GAAKwF,EAAQuwB,EAAQ80C,GACvErsE,EAEA6E,IAAa7E,IACf6E,EAAWs8F,GAEblI,GAAiBjyF,EAAQxF,EAAKqD,EAChC,CACF,GAAG81F,GACL,CAuFA,SAASsI,GAAQxjB,EAAOr5D,GACtB,IAAIhlB,EAASq+E,EAAMr+E,OACnB,GAAKA,EAIL,OAAOq3F,GADPryE,GAAKA,EAAI,EAAIhlB,EAAS,EACJA,GAAUq+E,EAAMr5D,GAAKpmB,CACzC,CAWA,SAASkjG,GAAYnT,EAAYoT,EAAWC,GAExCD,EADEA,EAAU/hG,OACAkuF,GAAS6T,GAAW,SAASxU,GACvC,OAAI1tF,GAAQ0tF,GACH,SAAShvF,GACd,OAAO89F,GAAQ99F,EAA2B,IAApBgvF,EAASvtF,OAAeutF,EAAS,GAAKA,EAC9D,EAEKA,CACT,IAEY,CAAC4S,IAGf,IAAIp0F,GAAS,EACbg2F,EAAY7T,GAAS6T,EAAWrS,GAAUuS,OAE1C,IAAIj4E,EAAS62E,GAAQlS,GAAY,SAASpwF,EAAO6B,EAAKuuF,GACpD,IAAIuT,EAAWhU,GAAS6T,GAAW,SAASxU,GAC1C,OAAOA,EAAShvF,EAClB,IACA,MAAO,CAAE,SAAY2jG,EAAU,QAAWn2F,EAAO,MAASxN,EAC5D,IAEA,OA5xFJ,SAAoB8/E,EAAO8jB,GACzB,IAAIniG,EAASq+E,EAAMr+E,OAGnB,IADAq+E,EAAMvlE,KAAKqpF,GACJniG,KACLq+E,EAAMr+E,GAAUq+E,EAAMr+E,GAAQzB,MAEhC,OAAO8/E,CACT,CAoxFW+jB,CAAWp4E,GAAQ,SAASpkB,EAAQs3F,GACzC,OA04BJ,SAAyBt3F,EAAQs3F,EAAO8E,GACtC,IAAIj2F,GAAS,EACTs2F,EAAcz8F,EAAOs8F,SACrBI,EAAcpF,EAAMgF,SACpBliG,EAASqiG,EAAYriG,OACrBuiG,EAAeP,EAAOhiG,OAE1B,OAAS+L,EAAQ/L,GAAQ,CACvB,IAAIgqB,EAASw4E,GAAiBH,EAAYt2F,GAAQu2F,EAAYv2F,IAC9D,GAAIie,EACF,OAAIje,GAASw2F,EACJv4E,EAGFA,GAAmB,QADdg4E,EAAOj2F,IACiB,EAAI,EAE5C,CAQA,OAAOnG,EAAOmG,MAAQmxF,EAAMnxF,KAC9B,CAn6BW02F,CAAgB78F,EAAQs3F,EAAO8E,EACxC,GACF,CA0BA,SAASU,GAAW98F,EAAQ2yF,EAAO5K,GAKjC,IAJA,IAAI5hF,GAAS,EACT/L,EAASu4F,EAAMv4F,OACfgqB,EAAS,CAAC,IAELje,EAAQ/L,GAAQ,CACvB,IAAIs8F,EAAO/D,EAAMxsF,GACbxN,EAAQ89F,GAAQz2F,EAAQ02F,GAExB3O,EAAUpvF,EAAO+9F,IACnBqG,GAAQ34E,EAAQuyE,GAASD,EAAM12F,GAASrH,EAE5C,CACA,OAAOyrB,CACT,CA0BA,SAAS44E,GAAYvkB,EAAOttE,EAAQw8E,EAAUU,GAC5C,IAAI5rF,EAAU4rF,EAAaiB,GAAkBnB,GACzChiF,GAAS,EACT/L,EAAS+Q,EAAO/Q,OAChB49F,EAAOvf,EAQX,IANIA,IAAUttE,IACZA,EAAS2mF,GAAU3mF,IAEjBw8E,IACFqQ,EAAO1P,GAAS7P,EAAOqR,GAAUnC,OAE1BxhF,EAAQ/L,GAKf,IAJA,IAAI8uF,EAAY,EACZvwF,EAAQwS,EAAOhF,GACf+f,EAAWyhE,EAAWA,EAAShvF,GAASA,GAEpCuwF,EAAYzsF,EAAQu7F,EAAM9xE,EAAUgjE,EAAWb,KAAgB,GACjE2P,IAASvf,GACXr3D,GAAO1mB,KAAKs9F,EAAM9O,EAAW,GAE/B9nE,GAAO1mB,KAAK+9E,EAAOyQ,EAAW,GAGlC,OAAOzQ,CACT,CAWA,SAASwkB,GAAWxkB,EAAOykB,GAIzB,IAHA,IAAI9iG,EAASq+E,EAAQykB,EAAQ9iG,OAAS,EAClCqhE,EAAYrhE,EAAS,EAElBA,KAAU,CACf,IAAI+L,EAAQ+2F,EAAQ9iG,GACpB,GAAIA,GAAUqhE,GAAat1D,IAAUilB,EAAU,CAC7C,IAAIA,EAAWjlB,EACXsrF,GAAQtrF,GACVib,GAAO1mB,KAAK+9E,EAAOtyE,EAAO,GAE1Bg3F,GAAU1kB,EAAOtyE,EAErB,CACF,CACA,OAAOsyE,CACT,CAWA,SAASkZ,GAAWiB,EAAOC,GACzB,OAAOD,EAAQnF,GAAYa,MAAkBuE,EAAQD,EAAQ,GAC/D,CAiCA,SAASwK,GAAW/tC,EAAQjwC,GAC1B,IAAIgF,EAAS,GACb,IAAKirC,GAAUjwC,EAAI,GAAKA,EAAI+/D,EAC1B,OAAO/6D,EAIT,GACMhF,EAAI,IACNgF,GAAUirC,IAEZjwC,EAAIquE,GAAYruE,EAAI,MAElBiwC,GAAUA,SAELjwC,GAET,OAAOgF,CACT,CAUA,SAASi5E,GAAS9V,EAAM3+D,GACtB,OAAO00E,GAAYC,GAAShW,EAAM3+D,EAAO2xE,IAAWhT,EAAO,GAC7D,CASA,SAASiW,GAAWzU,GAClB,OAAO2I,GAAYvmF,GAAO49E,GAC5B,CAUA,SAAS0U,GAAe1U,EAAY3pE,GAClC,IAAIq5D,EAAQttE,GAAO49E,GACnB,OAAO8I,GAAYpZ,EAAOsZ,GAAU3yE,EAAG,EAAGq5D,EAAMr+E,QAClD,CAYA,SAAS2iG,GAAQ/8F,EAAQ02F,EAAM/9F,EAAOq6F,GACpC,IAAKlD,GAAS9vF,GACZ,OAAOA,EAST,IALA,IAAImG,GAAS,EACT/L,GAHJs8F,EAAOC,GAASD,EAAM12F,IAGJ5F,OACdqhE,EAAYrhE,EAAS,EACrBsjG,EAAS19F,EAEI,MAAV09F,KAAoBv3F,EAAQ/L,GAAQ,CACzC,IAAII,EAAMo8F,GAAMF,EAAKvwF,IACjBtI,EAAWlF,EAEf,GAAY,cAAR6B,GAA+B,gBAARA,GAAiC,cAARA,EAClD,OAAOwF,EAGT,GAAImG,GAASs1D,EAAW,CACtB,IAAI22B,EAAWsL,EAAOljG,IACtBqD,EAAWm1F,EAAaA,EAAWZ,EAAU53F,EAAKkjG,GAAU1kG,KAC3CA,IACf6E,EAAWiyF,GAASsC,GAChBA,EACCX,GAAQiF,EAAKvwF,EAAQ,IAAM,GAAK,CAAC,EAE1C,CACAgsF,GAAYuL,EAAQljG,EAAKqD,GACzB6/F,EAASA,EAAOljG,EAClB,CACA,OAAOwF,CACT,CAUA,IAAI29F,GAAe/O,GAAqB,SAASrH,EAAM5mF,GAErD,OADAiuF,GAAQl1D,IAAI6tD,EAAM5mF,GACX4mF,CACT,EAH6BgT,GAazBqD,GAAmBnlG,GAA4B,SAAS8uF,EAAMl4B,GAChE,OAAO52D,GAAe8uF,EAAM,WAAY,CACtC,cAAgB,EAChB,YAAc,EACd,MAASsW,GAASxuC,GAClB,UAAY,GAEhB,EAPwCkrC,GAgBxC,SAASuD,GAAY/U,GACnB,OAAO8I,GAAY1mF,GAAO49E,GAC5B,CAWA,SAASgV,GAAUtlB,EAAO7vD,EAAOK,GAC/B,IAAI9iB,GAAS,EACT/L,EAASq+E,EAAMr+E,OAEfwuB,EAAQ,IACVA,GAASA,EAAQxuB,EAAS,EAAKA,EAASwuB,IAE1CK,EAAMA,EAAM7uB,EAASA,EAAS6uB,GACpB,IACRA,GAAO7uB,GAETA,EAASwuB,EAAQK,EAAM,EAAMA,EAAML,IAAW,EAC9CA,KAAW,EAGX,IADA,IAAIxE,EAASpqB,EAAMI,KACV+L,EAAQ/L,GACfgqB,EAAOje,GAASsyE,EAAMtyE,EAAQyiB,GAEhC,OAAOxE,CACT,CAWA,SAAS45E,GAASjV,EAAYhB,GAC5B,IAAI3jE,EAMJ,OAJAmuE,GAASxJ,GAAY,SAASpwF,EAAOwN,EAAO4iF,GAE1C,QADA3kE,EAAS2jE,EAAUpvF,EAAOwN,EAAO4iF,GAEnC,MACS3kE,CACX,CAcA,SAAS65E,GAAgBxlB,EAAO9/E,EAAOulG,GACrC,IAAIC,EAAM,EACNC,EAAgB,MAAT3lB,EAAgB0lB,EAAM1lB,EAAMr+E,OAEvC,GAAoB,iBAATzB,GAAqBA,GAAUA,GAASylG,GAn/H3B/e,WAm/H0D,CAChF,KAAO8e,EAAMC,GAAM,CACjB,IAAIliC,EAAOiiC,EAAMC,IAAU,EACvBl4E,EAAWuyD,EAAMvc,GAEJ,OAAbh2C,IAAsB6vE,GAAS7vE,KAC9Bg4E,EAAch4E,GAAYvtB,EAAUutB,EAAWvtB,GAClDwlG,EAAMjiC,EAAM,EAEZkiC,EAAOliC,CAEX,CACA,OAAOkiC,CACT,CACA,OAAOC,GAAkB5lB,EAAO9/E,EAAO4hG,GAAU2D,EACnD,CAeA,SAASG,GAAkB5lB,EAAO9/E,EAAOgvF,EAAUuW,GACjD,IAAIC,EAAM,EACNC,EAAgB,MAAT3lB,EAAgB,EAAIA,EAAMr+E,OACrC,GAAa,IAATgkG,EACF,OAAO,EAST,IALA,IAAIE,GADJ3lG,EAAQgvF,EAAShvF,KACQA,EACrB4lG,EAAsB,OAAV5lG,EACZ6lG,EAAczI,GAASp9F,GACvB8lG,EAAiB9lG,IAAUK,EAExBmlG,EAAMC,GAAM,CACjB,IAAIliC,EAAMuxB,IAAa0Q,EAAMC,GAAQ,GACjCl4E,EAAWyhE,EAASlP,EAAMvc,IAC1BwiC,EAAex4E,IAAaltB,EAC5B2lG,EAAyB,OAAbz4E,EACZ04E,EAAiB14E,GAAaA,EAC9B24E,EAAc9I,GAAS7vE,GAE3B,GAAIo4E,EACF,IAAIQ,EAASZ,GAAcU,OAE3BE,EADSL,EACAG,IAAmBV,GAAcQ,GACjCH,EACAK,GAAkBF,IAAiBR,IAAeS,GAClDH,EACAI,GAAkBF,IAAiBC,IAAcT,IAAeW,IAChEF,IAAaE,IAGbX,EAAch4E,GAAYvtB,EAAUutB,EAAWvtB,GAEtDmmG,EACFX,EAAMjiC,EAAM,EAEZkiC,EAAOliC,CAEX,CACA,OAAOiyB,GAAUiQ,EA1jIC/e,WA2jIpB,CAWA,SAAS0f,GAAetmB,EAAOkP,GAM7B,IALA,IAAIxhF,GAAS,EACT/L,EAASq+E,EAAMr+E,OACf6tF,EAAW,EACX7jE,EAAS,KAEJje,EAAQ/L,GAAQ,CACvB,IAAIzB,EAAQ8/E,EAAMtyE,GACd+f,EAAWyhE,EAAWA,EAAShvF,GAASA,EAE5C,IAAKwN,IAAUmpD,GAAGppC,EAAU8xE,GAAO,CACjC,IAAIA,EAAO9xE,EACX9B,EAAO6jE,KAAwB,IAAVtvF,EAAc,EAAIA,CACzC,CACF,CACA,OAAOyrB,CACT,CAUA,SAAS46E,GAAarmG,GACpB,MAAoB,iBAATA,EACFA,EAELo9F,GAASp9F,GACJymF,GAEDzmF,CACV,CAUA,SAASsmG,GAAatmG,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAIsB,GAAQtB,GAEV,OAAO2vF,GAAS3vF,EAAOsmG,IAAgB,GAEzC,GAAIlJ,GAASp9F,GACX,OAAO42F,GAAiBA,GAAe70F,KAAK/B,GAAS,GAEvD,IAAIyrB,EAAUzrB,EAAQ,GACtB,MAAkB,KAAVyrB,GAAkB,EAAIzrB,IAAU,IAAa,KAAOyrB,CAC9D,CAWA,SAAS86E,GAASzmB,EAAOkP,EAAUU,GACjC,IAAIliF,GAAS,EACTooB,EAAW25D,GACX9tF,EAASq+E,EAAMr+E,OACf66F,GAAW,EACX7wE,EAAS,GACT4zE,EAAO5zE,EAEX,GAAIikE,EACF4M,GAAW,EACX1mE,EAAW65D,QAER,GAAIhuF,GAjtIU,IAitIkB,CACnC,IAAIs/B,EAAMiuD,EAAW,KAAOwX,GAAU1mB,GACtC,GAAI/+C,EACF,OAAOoxD,GAAWpxD,GAEpBu7D,GAAW,EACX1mE,EAAWy7D,GACXgO,EAAO,IAAIlH,EACb,MAEEkH,EAAOrQ,EAAW,GAAKvjE,EAEzB+wE,EACA,OAAShvF,EAAQ/L,GAAQ,CACvB,IAAIzB,EAAQ8/E,EAAMtyE,GACd+f,EAAWyhE,EAAWA,EAAShvF,GAASA,EAG5C,GADAA,EAAS0vF,GAAwB,IAAV1vF,EAAeA,EAAQ,EAC1Cs8F,GAAY/uE,GAAaA,EAAU,CAErC,IADA,IAAIk5E,EAAYpH,EAAK59F,OACdglG,KACL,GAAIpH,EAAKoH,KAAel5E,EACtB,SAASivE,EAGTxN,GACFqQ,EAAK/2F,KAAKilB,GAEZ9B,EAAOnjB,KAAKtI,EACd,MACU41B,EAASypE,EAAM9xE,EAAUmiE,KAC7B2P,IAAS5zE,GACX4zE,EAAK/2F,KAAKilB,GAEZ9B,EAAOnjB,KAAKtI,GAEhB,CACA,OAAOyrB,CACT,CAUA,SAAS+4E,GAAUn9F,EAAQ02F,GAGzB,OAAiB,OADjB12F,EAASsH,GAAOtH,EADhB02F,EAAOC,GAASD,EAAM12F,aAEUA,EAAO42F,GAAMz/D,GAAKu/D,IACpD,CAYA,SAAS2I,GAAWr/F,EAAQ02F,EAAM4I,EAAStM,GACzC,OAAO+J,GAAQ/8F,EAAQ02F,EAAM4I,EAAQ7I,GAAQz2F,EAAQ02F,IAAQ1D,EAC/D,CAaA,SAASuM,GAAU9mB,EAAOsP,EAAWyX,EAAQrW,GAI3C,IAHA,IAAI/uF,EAASq+E,EAAMr+E,OACf+L,EAAQgjF,EAAY/uF,GAAU,GAE1B+uF,EAAYhjF,MAAYA,EAAQ/L,IACtC2tF,EAAUtP,EAAMtyE,GAAQA,EAAOsyE,KAEjC,OAAO+mB,EACHzB,GAAUtlB,EAAQ0Q,EAAY,EAAIhjF,EAASgjF,EAAYhjF,EAAQ,EAAI/L,GACnE2jG,GAAUtlB,EAAQ0Q,EAAYhjF,EAAQ,EAAI,EAAKgjF,EAAY/uF,EAAS+L,EAC1E,CAYA,SAASs5F,GAAiB9mG,EAAOk8C,GAC/B,IAAIzwB,EAASzrB,EAIb,OAHIyrB,aAAkBsrE,KACpBtrE,EAASA,EAAOzrB,SAEX6vF,GAAY3zC,GAAS,SAASzwB,EAAQs7E,GAC3C,OAAOA,EAAOnY,KAAKlnF,MAAMq/F,EAAOlY,QAASe,GAAU,CAACnkE,GAASs7E,EAAOvkB,MACtE,GAAG/2D,EACL,CAYA,SAASu7E,GAAQjI,EAAQ/P,EAAUU,GACjC,IAAIjuF,EAASs9F,EAAOt9F,OACpB,GAAIA,EAAS,EACX,OAAOA,EAAS8kG,GAASxH,EAAO,IAAM,GAKxC,IAHA,IAAIvxF,GAAS,EACTie,EAASpqB,EAAMI,KAEV+L,EAAQ/L,GAIf,IAHA,IAAIq+E,EAAQif,EAAOvxF,GACfyxF,GAAY,IAEPA,EAAWx9F,GACdw9F,GAAYzxF,IACdie,EAAOje,GAAS6uF,GAAe5wE,EAAOje,IAAUsyE,EAAOif,EAAOE,GAAWjQ,EAAUU,IAIzF,OAAO6W,GAASjJ,GAAY7xE,EAAQ,GAAIujE,EAAUU,EACpD,CAWA,SAASuX,GAAc1kG,EAAOiQ,EAAQ00F,GAMpC,IALA,IAAI15F,GAAS,EACT/L,EAASc,EAAMd,OACf0lG,EAAa30F,EAAO/Q,OACpBgqB,EAAS,CAAC,IAELje,EAAQ/L,GAAQ,CACvB,IAAIzB,EAAQwN,EAAQ25F,EAAa30F,EAAOhF,GAASnN,EACjD6mG,EAAWz7E,EAAQlpB,EAAMiL,GAAQxN,EACnC,CACA,OAAOyrB,CACT,CASA,SAAS27E,GAAoBpnG,GAC3B,OAAOkjG,GAAkBljG,GAASA,EAAQ,EAC5C,CASA,SAASqnG,GAAarnG,GACpB,MAAuB,mBAATA,EAAsBA,EAAQ4hG,EAC9C,CAUA,SAAS5D,GAASh+F,EAAOqH,GACvB,OAAI/F,GAAQtB,GACHA,EAEF0iG,GAAM1iG,EAAOqH,GAAU,CAACrH,GAASsnG,GAAa11D,GAAS5xC,GAChE,CAWA,IAAIunG,GAAW7C,GAWf,SAAS8C,GAAU1nB,EAAO7vD,EAAOK,GAC/B,IAAI7uB,EAASq+E,EAAMr+E,OAEnB,OADA6uB,EAAMA,IAAQjwB,EAAYoB,EAAS6uB,GAC1BL,GAASK,GAAO7uB,EAAUq+E,EAAQslB,GAAUtlB,EAAO7vD,EAAOK,EACrE,CAQA,IAAIysB,GAAe03C,IAAmB,SAAS/sE,GAC7C,OAAO+lE,GAAK1wC,aAAar1B,EAC3B,EAUA,SAASkzE,GAAYnX,EAAQ6W,GAC3B,GAAIA,EACF,OAAO7W,EAAO91E,QAEhB,IAAIlM,EAASgiF,EAAOhiF,OAChBgqB,EAASooE,GAAcA,GAAYpyF,GAAU,IAAIgiF,EAAOxiF,YAAYQ,GAGxE,OADAgiF,EAAOgkB,KAAKh8E,GACLA,CACT,CASA,SAAS4vE,GAAiBvX,GACxB,IAAIr4D,EAAS,IAAIq4D,EAAY7iF,YAAY6iF,EAAY0X,YAErD,OADA,IAAIxX,GAAWv4D,GAAQsV,IAAI,IAAIijD,GAAWF,IACnCr4D,CACT,CA+CA,SAASiwE,GAAgBgM,EAAYpN,GACnC,IAAI7W,EAAS6W,EAASe,GAAiBqM,EAAWjkB,QAAUikB,EAAWjkB,OACvE,OAAO,IAAIikB,EAAWzmG,YAAYwiF,EAAQikB,EAAWnM,WAAYmM,EAAWjmG,OAC9E,CAUA,SAASwiG,GAAiBjkG,EAAO2+F,GAC/B,GAAI3+F,IAAU2+F,EAAO,CACnB,IAAIgJ,EAAe3nG,IAAUK,EACzBulG,EAAsB,OAAV5lG,EACZ4nG,EAAiB5nG,GAAUA,EAC3B6lG,EAAczI,GAASp9F,GAEvB+lG,EAAepH,IAAUt+F,EACzB2lG,EAAsB,OAAVrH,EACZsH,EAAiBtH,GAAUA,EAC3BuH,EAAc9I,GAASuB,GAE3B,IAAMqH,IAAcE,IAAgBL,GAAe7lG,EAAQ2+F,GACtDkH,GAAeE,GAAgBE,IAAmBD,IAAcE,GAChEN,GAAaG,GAAgBE,IAC5B0B,GAAgB1B,IACjB2B,EACH,OAAO,EAET,IAAMhC,IAAcC,IAAgBK,GAAelmG,EAAQ2+F,GACtDuH,GAAeyB,GAAgBC,IAAmBhC,IAAcC,GAChEG,GAAa2B,GAAgBC,IAC5B7B,GAAgB6B,IACjB3B,EACH,OAAQ,CAEZ,CACA,OAAO,CACT,CAsDA,SAAS4B,GAAYrlB,EAAMslB,EAAUC,EAASC,GAU5C,IATA,IAAIC,GAAa,EACbC,EAAa1lB,EAAK/gF,OAClB0mG,EAAgBJ,EAAQtmG,OACxB2mG,GAAa,EACbC,EAAaP,EAASrmG,OACtB6mG,EAAc/S,GAAU2S,EAAaC,EAAe,GACpD18E,EAASpqB,EAAMgnG,EAAaC,GAC5BC,GAAeP,IAEVI,EAAYC,GACnB58E,EAAO28E,GAAaN,EAASM,GAE/B,OAASH,EAAYE,IACfI,GAAeN,EAAYC,KAC7Bz8E,EAAOs8E,EAAQE,IAAczlB,EAAKylB,IAGtC,KAAOK,KACL78E,EAAO28E,KAAe5lB,EAAKylB,KAE7B,OAAOx8E,CACT,CAaA,SAAS+8E,GAAiBhmB,EAAMslB,EAAUC,EAASC,GAWjD,IAVA,IAAIC,GAAa,EACbC,EAAa1lB,EAAK/gF,OAClBgnG,GAAgB,EAChBN,EAAgBJ,EAAQtmG,OACxBqpD,GAAc,EACd49C,EAAcZ,EAASrmG,OACvB6mG,EAAc/S,GAAU2S,EAAaC,EAAe,GACpD18E,EAASpqB,EAAMinG,EAAcI,GAC7BH,GAAeP,IAEVC,EAAYK,GACnB78E,EAAOw8E,GAAazlB,EAAKylB,GAG3B,IADA,IAAIj4E,EAASi4E,IACJn9C,EAAa49C,GACpBj9E,EAAOuE,EAAS86B,GAAcg9C,EAASh9C,GAEzC,OAAS29C,EAAeN,IAClBI,GAAeN,EAAYC,KAC7Bz8E,EAAOuE,EAAS+3E,EAAQU,IAAiBjmB,EAAKylB,MAGlD,OAAOx8E,CACT,CAUA,SAAS0tE,GAAUvhE,EAAQkoD,GACzB,IAAItyE,GAAS,EACT/L,EAASm2B,EAAOn2B,OAGpB,IADAq+E,IAAUA,EAAQz+E,EAAMI,MACf+L,EAAQ/L,GACfq+E,EAAMtyE,GAASoqB,EAAOpqB,GAExB,OAAOsyE,CACT,CAYA,SAASga,GAAWliE,EAAQr1B,EAAO8E,EAAQgzF,GACzC,IAAIsO,GAASthG,EACbA,IAAWA,EAAS,CAAC,GAKrB,IAHA,IAAImG,GAAS,EACT/L,EAASc,EAAMd,SAEV+L,EAAQ/L,GAAQ,CACvB,IAAII,EAAMU,EAAMiL,GAEZtI,EAAWm1F,EACXA,EAAWhzF,EAAOxF,GAAM+1B,EAAO/1B,GAAMA,EAAKwF,EAAQuwB,GAClDv3B,EAEA6E,IAAa7E,IACf6E,EAAW0yB,EAAO/1B,IAEhB8mG,EACFpP,GAAgBlyF,EAAQxF,EAAKqD,GAE7Bs0F,GAAYnyF,EAAQxF,EAAKqD,EAE7B,CACA,OAAOmC,CACT,CAkCA,SAASuhG,GAAiB7Z,EAAQ8Z,GAChC,OAAO,SAASzY,EAAYpB,GAC1B,IAAIJ,EAAOttF,GAAQ8uF,GAActB,GAAkB6K,GAC/CpvD,EAAcs+D,EAAcA,IAAgB,CAAC,EAEjD,OAAOja,EAAKwB,EAAYrB,EAAQ2U,GAAY1U,EAAU,GAAIzkD,EAC5D,CACF,CASA,SAASu+D,GAAeC,GACtB,OAAOrE,IAAS,SAASr9F,EAAQ2hG,GAC/B,IAAIx7F,GAAS,EACT/L,EAASunG,EAAQvnG,OACjB44F,EAAa54F,EAAS,EAAIunG,EAAQvnG,EAAS,GAAKpB,EAChD4oG,EAAQxnG,EAAS,EAAIunG,EAAQ,GAAK3oG,EAWtC,IATAg6F,EAAc0O,EAAStnG,OAAS,GAA0B,mBAAd44F,GACvC54F,IAAU44F,GACXh6F,EAEA4oG,GAASC,GAAeF,EAAQ,GAAIA,EAAQ,GAAIC,KAClD5O,EAAa54F,EAAS,EAAIpB,EAAYg6F,EACtC54F,EAAS,GAEX4F,EAASxH,GAAOwH,KACPmG,EAAQ/L,GAAQ,CACvB,IAAIm2B,EAASoxE,EAAQx7F,GACjBoqB,GACFmxE,EAAS1hG,EAAQuwB,EAAQpqB,EAAO6sF,EAEpC,CACA,OAAOhzF,CACT,GACF,CAUA,SAASy1F,GAAezM,EAAUG,GAChC,OAAO,SAASJ,EAAYpB,GAC1B,GAAkB,MAAdoB,EACF,OAAOA,EAET,IAAKmS,GAAYnS,GACf,OAAOC,EAASD,EAAYpB,GAM9B,IAJA,IAAIvtF,EAAS2uF,EAAW3uF,OACpB+L,EAAQgjF,EAAY/uF,GAAU,EAC9B0nG,EAAWtpG,GAAOuwF,IAEdI,EAAYhjF,MAAYA,EAAQ/L,KACa,IAA/CutF,EAASma,EAAS37F,GAAQA,EAAO27F,KAIvC,OAAO/Y,CACT,CACF,CASA,SAASuN,GAAcnN,GACrB,OAAO,SAASnpF,EAAQ2nF,EAAUmP,GAMhC,IALA,IAAI3wF,GAAS,EACT27F,EAAWtpG,GAAOwH,GAClB9E,EAAQ47F,EAAS92F,GACjB5F,EAASc,EAAMd,OAEZA,KAAU,CACf,IAAII,EAAMU,EAAMiuF,EAAY/uF,IAAW+L,GACvC,IAA+C,IAA3CwhF,EAASma,EAAStnG,GAAMA,EAAKsnG,GAC/B,KAEJ,CACA,OAAO9hG,CACT,CACF,CA8BA,SAAS+hG,GAAgBC,GACvB,OAAO,SAAS3yC,GAGd,IAAI66B,EAAaM,GAFjBn7B,EAAS9kB,GAAS8kB,IAGd67B,GAAc77B,GACdr2D,EAEA66D,EAAMq2B,EACNA,EAAW,GACX76B,EAAOjpD,OAAO,GAEd67F,EAAW/X,EACXiW,GAAUjW,EAAY,GAAG3jF,KAAK,IAC9B8oD,EAAO/oD,MAAM,GAEjB,OAAOutD,EAAImuC,KAAgBC,CAC7B,CACF,CASA,SAASC,GAAiBpsE,GACxB,OAAO,SAASu5B,GACd,OAAOm5B,GAAY2Z,GAAMC,GAAO/yC,GAAQ5qD,QAAQ0gF,GAAQ,KAAMrvD,EAAU,GAC1E,CACF,CAUA,SAASusE,GAAWtO,GAClB,OAAO,WAIL,IAAI5Y,EAAO76E,UACX,OAAQ66E,EAAK/gF,QACX,KAAK,EAAG,OAAO,IAAI25F,EACnB,KAAK,EAAG,OAAO,IAAIA,EAAK5Y,EAAK,IAC7B,KAAK,EAAG,OAAO,IAAI4Y,EAAK5Y,EAAK,GAAIA,EAAK,IACtC,KAAK,EAAG,OAAO,IAAI4Y,EAAK5Y,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC/C,KAAK,EAAG,OAAO,IAAI4Y,EAAK5Y,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACxD,KAAK,EAAG,OAAO,IAAI4Y,EAAK5Y,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACjE,KAAK,EAAG,OAAO,IAAI4Y,EAAK5Y,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC1E,KAAK,EAAG,OAAO,IAAI4Y,EAAK5Y,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAErF,IAAImnB,EAAczS,GAAWkE,EAAKl6F,WAC9BuqB,EAAS2vE,EAAK1zF,MAAMiiG,EAAannB,GAIrC,OAAO2U,GAAS1rE,GAAUA,EAASk+E,CACrC,CACF,CA8CA,SAASC,GAAWC,GAClB,OAAO,SAASzZ,EAAYhB,EAAWmB,GACrC,IAAI4Y,EAAWtpG,GAAOuwF,GACtB,IAAKmS,GAAYnS,GAAa,CAC5B,IAAIpB,EAAW0U,GAAYtU,EAAW,GACtCgB,EAAa3kF,GAAK2kF,GAClBhB,EAAY,SAASvtF,GAAO,OAAOmtF,EAASma,EAAStnG,GAAMA,EAAKsnG,EAAW,CAC7E,CACA,IAAI37F,EAAQq8F,EAAczZ,EAAYhB,EAAWmB,GACjD,OAAO/iF,GAAS,EAAI27F,EAASna,EAAWoB,EAAW5iF,GAASA,GAASnN,CACvE,CACF,CASA,SAASypG,GAAWtZ,GAClB,OAAOuZ,IAAS,SAASC,GACvB,IAAIvoG,EAASuoG,EAAMvoG,OACf+L,EAAQ/L,EACRwoG,EAASjT,GAAc91F,UAAUgpG,KAKrC,IAHI1Z,GACFwZ,EAAM7qB,UAED3xE,KAAS,CACd,IAAIohF,EAAOob,EAAMx8F,GACjB,GAAmB,mBAARohF,EACT,MAAM,IAAI9tE,GAAUilE,GAEtB,GAAIkkB,IAAWvjG,GAAgC,WAArByjG,GAAYvb,GACpC,IAAIloF,EAAU,IAAIswF,GAAc,IAAI,EAExC,CAEA,IADAxpF,EAAQ9G,EAAU8G,EAAQ/L,IACjB+L,EAAQ/L,GAAQ,CAGvB,IAAI2oG,EAAWD,GAFfvb,EAAOob,EAAMx8F,IAGTxF,EAAmB,WAAZoiG,EAAwBC,GAAQzb,GAAQvuF,EAMjDqG,EAJEsB,GAAQsiG,GAAWtiG,EAAK,KACX,KAAXA,EAAK,KACJA,EAAK,GAAGvG,QAAqB,GAAXuG,EAAK,GAElBtB,EAAQyjG,GAAYniG,EAAK,KAAKN,MAAMhB,EAASsB,EAAK,IAElC,GAAf4mF,EAAKntF,QAAe6oG,GAAW1b,GACtCloF,EAAQ0jG,KACR1jG,EAAQwjG,KAAKtb,EAErB,CACA,OAAO,WACL,IAAIpM,EAAO76E,UACP3H,EAAQwiF,EAAK,GAEjB,GAAI97E,GAA0B,GAAf87E,EAAK/gF,QAAeH,GAAQtB,GACzC,OAAO0G,EAAQ6jG,MAAMvqG,GAAOA,QAK9B,IAHA,IAAIwN,EAAQ,EACRie,EAAShqB,EAASuoG,EAAMx8F,GAAO9F,MAAM3E,KAAMy/E,GAAQxiF,IAE9CwN,EAAQ/L,GACfgqB,EAASu+E,EAAMx8F,GAAOzL,KAAKgB,KAAM0oB,GAEnC,OAAOA,CACT,CACF,GACF,CAqBA,SAAS++E,GAAa5b,EAAMwL,EAASvL,EAASiZ,EAAUC,EAAS0C,EAAeC,EAAcC,EAAQC,EAAKC,GACzG,IAAIC,EAAQ1Q,EAAU/T,EAClB0kB,EA5iKa,EA4iKJ3Q,EACT4Q,EA5iKiB,EA4iKL5Q,EACZ4N,EAAsB,GAAV5N,EACZ6Q,EAtiKa,IAsiKJ7Q,EACTgB,EAAO4P,EAAY3qG,EAAYqpG,GAAW9a,GA6C9C,OA3CA,SAASloF,IAKP,IAJA,IAAIjF,EAASkG,UAAUlG,OACnB+gF,EAAOnhF,EAAMI,GACb+L,EAAQ/L,EAEL+L,KACLg1E,EAAKh1E,GAAS7F,UAAU6F,GAE1B,GAAIw6F,EACF,IAAI9+D,EAAcgiE,GAAUxkG,GACxBykG,EAvhIZ,SAAsBrrB,EAAO52C,GAI3B,IAHA,IAAIznC,EAASq+E,EAAMr+E,OACfgqB,EAAS,EAENhqB,KACDq+E,EAAMr+E,KAAYynC,KAClBzd,EAGN,OAAOA,CACT,CA6gI2B2/E,CAAa5oB,EAAMt5C,GASxC,GAPI4+D,IACFtlB,EAAOqlB,GAAYrlB,EAAMslB,EAAUC,EAASC,IAE1CyC,IACFjoB,EAAOgmB,GAAiBhmB,EAAMioB,EAAeC,EAAc1C,IAE7DvmG,GAAU0pG,EACNnD,GAAavmG,EAASopG,EAAO,CAC/B,IAAIQ,EAAanZ,GAAe1P,EAAMt5C,GACtC,OAAOoiE,GACL1c,EAAMwL,EAASoQ,GAAc9jG,EAAQwiC,YAAa2lD,EAClDrM,EAAM6oB,EAAYV,EAAQC,EAAKC,EAAQppG,EAE3C,CACA,IAAIkoG,EAAcoB,EAASlc,EAAU9rF,KACjCyzD,EAAKw0C,EAAYrB,EAAY/a,GAAQA,EAczC,OAZAntF,EAAS+gF,EAAK/gF,OACVkpG,EACFnoB,EAg4CN,SAAiB1C,EAAOykB,GACtB,IAAIgH,EAAYzrB,EAAMr+E,OAClBA,EAAS+zF,GAAU+O,EAAQ9iG,OAAQ8pG,GACnCC,EAAWrS,GAAUrZ,GAEzB,KAAOr+E,KAAU,CACf,IAAI+L,EAAQ+2F,EAAQ9iG,GACpBq+E,EAAMr+E,GAAUq3F,GAAQtrF,EAAO+9F,GAAaC,EAASh+F,GAASnN,CAChE,CACA,OAAOy/E,CACT,CA14Ca2rB,CAAQjpB,EAAMmoB,GACZM,GAAUxpG,EAAS,GAC5B+gF,EAAKrD,UAEH2rB,GAASF,EAAMnpG,IACjB+gF,EAAK/gF,OAASmpG,GAEZ7nG,MAAQA,OAAS0qF,IAAQ1qF,gBAAgB2D,IAC3C8vD,EAAK4kC,GAAQsO,GAAWlzC,IAEnBA,EAAG9uD,MAAMiiG,EAAannB,EAC/B,CAEF,CAUA,SAASkpB,GAAe3c,EAAQ4c,GAC9B,OAAO,SAAStkG,EAAQ2nF,GACtB,OAh/DJ,SAAsB3nF,EAAQ0nF,EAAQC,EAAUzkD,GAI9C,OAHAwyD,GAAW11F,GAAQ,SAASrH,EAAO6B,EAAKwF,GACtC0nF,EAAOxkD,EAAaykD,EAAShvF,GAAQ6B,EAAKwF,EAC5C,IACOkjC,CACT,CA2+DWqhE,CAAavkG,EAAQ0nF,EAAQ4c,EAAW3c,GAAW,CAAC,EAC7D,CACF,CAUA,SAAS6c,GAAoB33E,EAAU43E,GACrC,OAAO,SAAS9rG,EAAO2+F,GACrB,IAAIlzE,EACJ,GAAIzrB,IAAUK,GAAas+F,IAAUt+F,EACnC,OAAOyrG,EAKT,GAHI9rG,IAAUK,IACZorB,EAASzrB,GAEP2+F,IAAUt+F,EAAW,CACvB,GAAIorB,IAAWprB,EACb,OAAOs+F,EAEW,iBAAT3+F,GAAqC,iBAAT2+F,GACrC3+F,EAAQsmG,GAAatmG,GACrB2+F,EAAQ2H,GAAa3H,KAErB3+F,EAAQqmG,GAAarmG,GACrB2+F,EAAQ0H,GAAa1H,IAEvBlzE,EAASyI,EAASl0B,EAAO2+F,EAC3B,CACA,OAAOlzE,CACT,CACF,CASA,SAASsgF,GAAWC,GAClB,OAAOjC,IAAS,SAASvG,GAEvB,OADAA,EAAY7T,GAAS6T,EAAWrS,GAAUuS,OACnCgB,IAAS,SAASliB,GACvB,IAAIqM,EAAU9rF,KACd,OAAOipG,EAAUxI,GAAW,SAASxU,GACnC,OAAOtnF,GAAMsnF,EAAUH,EAASrM,EAClC,GACF,GACF,GACF,CAWA,SAASypB,GAAcxqG,EAAQyqG,GAG7B,IAAIC,GAFJD,EAAQA,IAAU7rG,EAAY,IAAMimG,GAAa4F,IAEzBzqG,OACxB,GAAI0qG,EAAc,EAChB,OAAOA,EAAc1H,GAAWyH,EAAOzqG,GAAUyqG,EAEnD,IAAIzgF,EAASg5E,GAAWyH,EAAOrX,GAAWpzF,EAAS4wF,GAAW6Z,KAC9D,OAAOra,GAAWqa,GACd1E,GAAUjV,GAAc9mE,GAAS,EAAGhqB,GAAQmM,KAAK,IACjD6d,EAAO9d,MAAM,EAAGlM,EACtB,CA4CA,SAAS2qG,GAAY5b,GACnB,OAAO,SAASvgE,EAAOK,EAAKiF,GAa1B,OAZIA,GAAuB,iBAARA,GAAoB2zE,GAAej5E,EAAOK,EAAKiF,KAChEjF,EAAMiF,EAAOl1B,GAGf4vB,EAAQo8E,GAASp8E,GACbK,IAAQjwB,GACViwB,EAAML,EACNA,EAAQ,GAERK,EAAM+7E,GAAS/7E,GA57CrB,SAAmBL,EAAOK,EAAKiF,EAAMi7D,GAKnC,IAJA,IAAIhjF,GAAS,EACT/L,EAAS8zF,GAAUV,IAAYvkE,EAAML,IAAUsF,GAAQ,IAAK,GAC5D9J,EAASpqB,EAAMI,GAEZA,KACLgqB,EAAO+kE,EAAY/uF,IAAW+L,GAASyiB,EACvCA,GAASsF,EAEX,OAAO9J,CACT,CAq7CW6gF,CAAUr8E,EAAOK,EADxBiF,EAAOA,IAASl1B,EAAa4vB,EAAQK,EAAM,GAAK,EAAK+7E,GAAS92E,GAC3Bi7D,EACrC,CACF,CASA,SAAS+b,GAA0Br4E,GACjC,OAAO,SAASl0B,EAAO2+F,GAKrB,MAJsB,iBAAT3+F,GAAqC,iBAAT2+F,IACvC3+F,EAAQwsG,GAASxsG,GACjB2+F,EAAQ6N,GAAS7N,IAEZzqE,EAASl0B,EAAO2+F,EACzB,CACF,CAmBA,SAAS2M,GAAc1c,EAAMwL,EAASqS,EAAUvjE,EAAa2lD,EAASiZ,EAAUC,EAAS4C,EAAQC,EAAKC,GACpG,IAAI6B,EArxKc,EAqxKJtS,EAMdA,GAAYsS,EAAUvmB,EAAoBC,EA5xKlB,GA6xKxBgU,KAAasS,EAAUtmB,EAA0BD,MAG/CiU,IAAW,GAEb,IAAI5zD,EAAU,CACZooD,EAAMwL,EAASvL,EAVC6d,EAAU5E,EAAWznG,EAFtBqsG,EAAU3E,EAAU1nG,EAGdqsG,EAAUrsG,EAAYynG,EAFvB4E,EAAUrsG,EAAY0nG,EAYzB4C,EAAQC,EAAKC,GAG5Bp/E,EAASghF,EAAS/kG,MAAMrH,EAAWmmC,GAKvC,OAJI8jE,GAAW1b,IACb+d,GAAQlhF,EAAQ+a,GAElB/a,EAAOyd,YAAcA,EACd0jE,GAAgBnhF,EAAQmjE,EAAMwL,EACvC,CASA,SAASyS,GAAYxD,GACnB,IAAIza,EAAOjoD,GAAK0iE,GAChB,OAAO,SAASnyC,EAAQ41C,GAGtB,GAFA51C,EAASs1C,GAASt1C,IAClB41C,EAAyB,MAAbA,EAAoB,EAAItX,GAAUuX,GAAUD,GAAY,OACnD3X,GAAej+B,GAAS,CAGvC,IAAI81C,GAAQp7D,GAASslB,GAAU,KAAK1rD,MAAM,KAI1C,SADAwhG,GAAQp7D,GAFIg9C,EAAKoe,EAAK,GAAK,MAAQA,EAAK,GAAKF,KAEnB,KAAKthG,MAAM,MACvB,GAAK,MAAQwhG,EAAK,GAAKF,GACvC,CACA,OAAOle,EAAK13B,EACd,CACF,CASA,IAAIsvC,GAAc31D,IAAQ,EAAIshD,GAAW,IAAIthD,GAAI,CAAC,EAAE,KAAK,IAAO01C,EAAmB,SAAS/zE,GAC1F,OAAO,IAAIq+B,GAAIr+B,EACjB,EAF4Ey6F,GAW5E,SAASC,GAAc/O,GACrB,OAAO,SAAS92F,GACd,IAAIiC,EAAMoxF,GAAOrzF,GACjB,OAAIiC,GAAO69E,EACF2K,GAAWzqF,GAEhBiC,GAAOk+E,EACF4K,GAAW/qF,GAn6I1B,SAAqBA,EAAQ9E,GAC3B,OAAOotF,GAASptF,GAAO,SAASV,GAC9B,MAAO,CAACA,EAAKwF,EAAOxF,GACtB,GACF,CAi6IasrG,CAAY9lG,EAAQ82F,EAAS92F,GACtC,CACF,CA2BA,SAAS+lG,GAAWxe,EAAMwL,EAASvL,EAASiZ,EAAUC,EAAS4C,EAAQC,EAAKC,GAC1E,IAAIG,EAl4KiB,EAk4KL5Q,EAChB,IAAK4Q,GAA4B,mBAARpc,EACvB,MAAM,IAAI9tE,GAAUilE,GAEtB,IAAItkF,EAASqmG,EAAWA,EAASrmG,OAAS,EAS1C,GARKA,IACH24F,IAAW,GACX0N,EAAWC,EAAU1nG,GAEvBuqG,EAAMA,IAAQvqG,EAAYuqG,EAAMrV,GAAUwX,GAAUnC,GAAM,GAC1DC,EAAQA,IAAUxqG,EAAYwqG,EAAQkC,GAAUlC,GAChDppG,GAAUsmG,EAAUA,EAAQtmG,OAAS,EAEjC24F,EAAUhU,EAAyB,CACrC,IAAIqkB,EAAgB3C,EAChB4C,EAAe3C,EAEnBD,EAAWC,EAAU1nG,CACvB,CACA,IAAI2H,EAAOgjG,EAAY3qG,EAAYgqG,GAAQzb,GAEvCpoD,EAAU,CACZooD,EAAMwL,EAASvL,EAASiZ,EAAUC,EAAS0C,EAAeC,EAC1DC,EAAQC,EAAKC,GAkBf,GAfI7iG,GA26BN,SAAmBA,EAAM4vB,GACvB,IAAIwiE,EAAUpyF,EAAK,GACfqlG,EAAaz1E,EAAO,GACpB01E,EAAalT,EAAUiT,EACvB/Q,EAAWgR,EAAa,IAExBC,EACAF,GAAchnB,GA50MA,GA40MmB+T,GACjCiT,GAAchnB,GAAmB+T,GAAW9T,GAAqBt+E,EAAK,GAAGvG,QAAUm2B,EAAO,IAC5E,KAAdy1E,GAAqDz1E,EAAO,GAAGn2B,QAAUm2B,EAAO,IA90MlE,GA80M0EwiE,EAG5F,IAAMkC,IAAYiR,EAChB,OAAOvlG,EAr1MQ,EAw1MbqlG,IACFrlG,EAAK,GAAK4vB,EAAO,GAEjB01E,GA31Me,EA21MDlT,EAA2B,EAz1MnB,GA41MxB,IAAIp6F,EAAQ43B,EAAO,GACnB,GAAI53B,EAAO,CACT,IAAI8nG,EAAW9/F,EAAK,GACpBA,EAAK,GAAK8/F,EAAWD,GAAYC,EAAU9nG,EAAO43B,EAAO,IAAM53B,EAC/DgI,EAAK,GAAK8/F,EAAW5V,GAAelqF,EAAK,GAAIi+E,GAAeruD,EAAO,EACrE,EAEA53B,EAAQ43B,EAAO,MAEbkwE,EAAW9/F,EAAK,GAChBA,EAAK,GAAK8/F,EAAWU,GAAiBV,EAAU9nG,EAAO43B,EAAO,IAAM53B,EACpEgI,EAAK,GAAK8/F,EAAW5V,GAAelqF,EAAK,GAAIi+E,GAAeruD,EAAO,KAGrE53B,EAAQ43B,EAAO,MAEb5vB,EAAK,GAAKhI,GAGRqtG,EAAahnB,IACfr+E,EAAK,GAAgB,MAAXA,EAAK,GAAa4vB,EAAO,GAAK49D,GAAUxtF,EAAK,GAAI4vB,EAAO,KAGrD,MAAX5vB,EAAK,KACPA,EAAK,GAAK4vB,EAAO,IAGnB5vB,EAAK,GAAK4vB,EAAO,GACjB5vB,EAAK,GAAKslG,CAGZ,CA/9BIE,CAAUhnE,EAASx+B,GAErB4mF,EAAOpoD,EAAQ,GACf4zD,EAAU5zD,EAAQ,GAClBqoD,EAAUroD,EAAQ,GAClBshE,EAAWthE,EAAQ,GACnBuhE,EAAUvhE,EAAQ,KAClBqkE,EAAQrkE,EAAQ,GAAKA,EAAQ,KAAOnmC,EAC/B2qG,EAAY,EAAIpc,EAAKntF,OACtB8zF,GAAU/uD,EAAQ,GAAK/kC,EAAQ,KAEX,GAAV24F,IACZA,IAAW,IAERA,GA56KY,GA46KDA,EAGd3uE,EA56KgB,GA26KP2uE,GAA8BA,GAAWlU,EApgBtD,SAAqB0I,EAAMwL,EAASyQ,GAClC,IAAIzP,EAAOsO,GAAW9a,GAwBtB,OAtBA,SAASloF,IAMP,IALA,IAAIjF,EAASkG,UAAUlG,OACnB+gF,EAAOnhF,EAAMI,GACb+L,EAAQ/L,EACRynC,EAAcgiE,GAAUxkG,GAErB8G,KACLg1E,EAAKh1E,GAAS7F,UAAU6F,GAE1B,IAAIu6F,EAAWtmG,EAAS,GAAK+gF,EAAK,KAAOt5C,GAAes5C,EAAK/gF,EAAS,KAAOynC,EACzE,GACAgpD,GAAe1P,EAAMt5C,GAGzB,OADAznC,GAAUsmG,EAAQtmG,QACLopG,EACJS,GACL1c,EAAMwL,EAASoQ,GAAc9jG,EAAQwiC,YAAa7oC,EAClDmiF,EAAMulB,EAAS1nG,EAAWA,EAAWwqG,EAAQppG,GAG1CiG,GADG3E,MAAQA,OAAS0qF,IAAQ1qF,gBAAgB2D,EAAW00F,EAAOxM,EACpD7rF,KAAMy/E,EACzB,CAEF,CA2eairB,CAAY7e,EAAMwL,EAASyQ,GAC1BzQ,GAAWjU,GAAgC,IAAXiU,GAAqD2N,EAAQtmG,OAG9F+oG,GAAa9iG,MAAMrH,EAAWmmC,GA9O3C,SAAuBooD,EAAMwL,EAASvL,EAASiZ,GAC7C,IAAIiD,EAtsKa,EAssKJ3Q,EACTgB,EAAOsO,GAAW9a,GAkBtB,OAhBA,SAASloF,IAQP,IAPA,IAAIuhG,GAAa,EACbC,EAAavgG,UAAUlG,OACvB2mG,GAAa,EACbC,EAAaP,EAASrmG,OACtB+gF,EAAOnhF,EAAMgnG,EAAaH,GAC1B1xC,EAAMzzD,MAAQA,OAAS0qF,IAAQ1qF,gBAAgB2D,EAAW00F,EAAOxM,IAE5DwZ,EAAYC,GACnB7lB,EAAK4lB,GAAaN,EAASM,GAE7B,KAAOF,KACL1lB,EAAK4lB,KAAezgG,YAAYsgG,GAElC,OAAOvgG,GAAM8uD,EAAIu0C,EAASlc,EAAU9rF,KAAMy/E,EAC5C,CAEF,CAuNakrB,CAAc9e,EAAMwL,EAASvL,EAASiZ,QAJ/C,IAAIr8E,EAhmBR,SAAoBmjE,EAAMwL,EAASvL,GACjC,IAAIkc,EA90Ja,EA80JJ3Q,EACTgB,EAAOsO,GAAW9a,GAMtB,OAJA,SAASloF,IAEP,OADU3D,MAAQA,OAAS0qF,IAAQ1qF,gBAAgB2D,EAAW00F,EAAOxM,GAC3DlnF,MAAMqjG,EAASlc,EAAU9rF,KAAM4E,UAC3C,CAEF,CAulBiBgmG,CAAW/e,EAAMwL,EAASvL,GASzC,OAAO+d,IADM5kG,EAAOg9F,GAAc2H,IACJlhF,EAAQ+a,GAAUooD,EAAMwL,EACxD,CAcA,SAASwT,GAAuBnU,EAAU+H,EAAU3/F,EAAKwF,GACvD,OAAIoyF,IAAap5F,GACZs2D,GAAG8iC,EAAUvG,GAAYrxF,MAAUC,GAAeC,KAAKsF,EAAQxF,GAC3D2/F,EAEF/H,CACT,CAgBA,SAASoU,GAAoBpU,EAAU+H,EAAU3/F,EAAKwF,EAAQuwB,EAAQ80C,GAOpE,OANIyqB,GAASsC,IAAatC,GAASqK,KAEjC90B,EAAM3rC,IAAIygE,EAAU/H,GACpBoJ,GAAUpJ,EAAU+H,EAAUnhG,EAAWwtG,GAAqBnhC,GAC9DA,EAAc,OAAE80B,IAEX/H,CACT,CAWA,SAASqU,GAAgB9tG,GACvB,OAAOmjG,GAAcnjG,GAASK,EAAYL,CAC5C,CAeA,SAASigG,GAAYngB,EAAO6e,EAAOvE,EAASC,EAAYoF,EAAW/yB,GACjE,IAAIyzB,EApgLmB,EAogLP/F,EACZmR,EAAYzrB,EAAMr+E,OAClBu9F,EAAYL,EAAMl9F,OAEtB,GAAI8pG,GAAavM,KAAemB,GAAanB,EAAYuM,GACvD,OAAO,EAGT,IAAIwC,EAAarhC,EAAMz1C,IAAI6oD,GACvB+gB,EAAan0B,EAAMz1C,IAAI0nE,GAC3B,GAAIoP,GAAclN,EAChB,OAAOkN,GAAcpP,GAASkC,GAAc/gB,EAE9C,IAAItyE,GAAS,EACTie,GAAS,EACT4zE,EAlhLqB,EAkhLbjF,EAAoC,IAAIjC,GAAW93F,EAM/D,IAJAqsE,EAAM3rC,IAAI++C,EAAO6e,GACjBjyB,EAAM3rC,IAAI49D,EAAO7e,KAGRtyE,EAAQ+9F,GAAW,CAC1B,IAAIyC,EAAWluB,EAAMtyE,GACjBuzF,EAAWpC,EAAMnxF,GAErB,GAAI6sF,EACF,IAAI2G,EAAWb,EACX9F,EAAW0G,EAAUiN,EAAUxgG,EAAOmxF,EAAO7e,EAAOpT,GACpD2tB,EAAW2T,EAAUjN,EAAUvzF,EAAOsyE,EAAO6e,EAAOjyB,GAE1D,GAAIs0B,IAAa3gG,EAAW,CAC1B,GAAI2gG,EACF,SAEFv1E,GAAS,EACT,KACF,CAEA,GAAI4zE,GACF,IAAKrP,GAAU2O,GAAO,SAASoC,EAAU9B,GACnC,IAAK5N,GAASgO,EAAMJ,KACf+O,IAAajN,GAAYtB,EAAUuO,EAAUjN,EAAU3G,EAASC,EAAY3tB,IAC/E,OAAO2yB,EAAK/2F,KAAK22F,EAErB,IAAI,CACNxzE,GAAS,EACT,KACF,OACK,GACDuiF,IAAajN,IACXtB,EAAUuO,EAAUjN,EAAU3G,EAASC,EAAY3tB,GACpD,CACLjhD,GAAS,EACT,KACF,CACF,CAGA,OAFAihD,EAAc,OAAEoT,GAChBpT,EAAc,OAAEiyB,GACTlzE,CACT,CAyKA,SAASs+E,GAASnb,GAChB,OAAO+V,GAAYC,GAAShW,EAAMvuF,EAAW4tG,IAAUrf,EAAO,GAChE,CASA,SAASsN,GAAW70F,GAClB,OAAO62F,GAAe72F,EAAQoE,GAAMyvF,GACtC,CAUA,SAASe,GAAa50F,GACpB,OAAO62F,GAAe72F,EAAQ2zF,GAAQF,GACxC,CASA,IAAIuP,GAAWpU,GAAiB,SAASrH,GACvC,OAAOqH,GAAQh/D,IAAI23D,EACrB,EAFyBqe,GAWzB,SAAS9C,GAAYvb,GAKnB,IAJA,IAAInjE,EAAUmjE,EAAKtsF,KAAO,GACtBw9E,EAAQoW,GAAUzqE,GAClBhqB,EAASK,GAAeC,KAAKm0F,GAAWzqE,GAAUq0D,EAAMr+E,OAAS,EAE9DA,KAAU,CACf,IAAIuG,EAAO83E,EAAMr+E,GACbysG,EAAYlmG,EAAK4mF,KACrB,GAAiB,MAAbsf,GAAqBA,GAAatf,EACpC,OAAO5mF,EAAK1F,IAEhB,CACA,OAAOmpB,CACT,CASA,SAASy/E,GAAUtc,GAEjB,OADa9sF,GAAeC,KAAK80F,GAAQ,eAAiBA,GAASjI,GACrD1lD,WAChB,CAaA,SAASw6D,KACP,IAAIj4E,EAASorE,GAAO7H,UAAYA,GAEhC,OADAvjE,EAASA,IAAWujE,GAAW2S,GAAel2E,EACvC9jB,UAAUlG,OAASgqB,EAAO9jB,UAAU,GAAIA,UAAU,IAAM8jB,CACjE,CAUA,SAASkxE,GAAWpvF,EAAK1L,GACvB,IAgYiB7B,EACbyC,EAjYAuF,EAAOuF,EAAI6qF,SACf,OAiYgB,WADZ31F,SADazC,EA/XA6B,KAiYmB,UAARY,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAVzC,EACU,OAAVA,GAlYDgI,EAAmB,iBAAPnG,EAAkB,SAAW,QACzCmG,EAAKuF,GACX,CASA,SAASi1F,GAAan7F,GAIpB,IAHA,IAAIokB,EAAShgB,GAAKpE,GACd5F,EAASgqB,EAAOhqB,OAEbA,KAAU,CACf,IAAII,EAAM4pB,EAAOhqB,GACbzB,EAAQqH,EAAOxF,GAEnB4pB,EAAOhqB,GAAU,CAACI,EAAK7B,EAAO2iG,GAAmB3iG,GACnD,CACA,OAAOyrB,CACT,CAUA,SAAS+oE,GAAUntF,EAAQxF,GACzB,IAAI7B,EAlxJR,SAAkBqH,EAAQxF,GACxB,OAAiB,MAAVwF,EAAiBhH,EAAYgH,EAAOxF,EAC7C,CAgxJgBssG,CAAS9mG,EAAQxF,GAC7B,OAAO6/F,GAAa1hG,GAASA,EAAQK,CACvC,CAoCA,IAAI66F,GAAcnG,GAA+B,SAAS1tF,GACxD,OAAc,MAAVA,EACK,IAETA,EAASxH,GAAOwH,GACTgoF,GAAY0F,GAAiB1tF,IAAS,SAASw0F,GACpD,OAAO3H,GAAqBnyF,KAAKsF,EAAQw0F,EAC3C,IACF,EARqCuS,GAiBjCtT,GAAgB/F,GAA+B,SAAS1tF,GAE1D,IADA,IAAIokB,EAAS,GACNpkB,GACLuoF,GAAUnkE,EAAQyvE,GAAW7zF,IAC7BA,EAASysF,GAAazsF,GAExB,OAAOokB,CACT,EAPuC2iF,GAgBnC1T,GAAS2D,GA2Eb,SAASgQ,GAAQhnG,EAAQ02F,EAAMuQ,GAO7B,IAJA,IAAI9gG,GAAS,EACT/L,GAHJs8F,EAAOC,GAASD,EAAM12F,IAGJ5F,OACdgqB,GAAS,IAEJje,EAAQ/L,GAAQ,CACvB,IAAII,EAAMo8F,GAAMF,EAAKvwF,IACrB,KAAMie,EAAmB,MAAVpkB,GAAkBinG,EAAQjnG,EAAQxF,IAC/C,MAEFwF,EAASA,EAAOxF,EAClB,CACA,OAAI4pB,KAAYje,GAAS/L,EAChBgqB,KAEThqB,EAAmB,MAAV4F,EAAiB,EAAIA,EAAO5F,SAClB8sG,GAAS9sG,IAAWq3F,GAAQj3F,EAAKJ,KACjDH,GAAQ+F,IAAWqxF,GAAYrxF,GACpC,CA4BA,SAASwzF,GAAgBxzF,GACvB,MAAqC,mBAAtBA,EAAOpG,aAA8BghG,GAAY56F,GAE5D,CAAC,EADD6vF,GAAWpD,GAAazsF,GAE9B,CA4EA,SAASo2F,GAAcz9F,GACrB,OAAOsB,GAAQtB,IAAU04F,GAAY14F,OAChCm0F,IAAoBn0F,GAASA,EAAMm0F,IAC1C,CAUA,SAAS2E,GAAQ94F,EAAOyB,GACtB,IAAIgB,SAAczC,EAGlB,SAFAyB,EAAmB,MAAVA,EAAiB+kF,EAAmB/kF,KAGlC,UAARgB,GACU,UAARA,GAAoB2nF,GAASxoE,KAAK5hB,KAChCA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQyB,CACjD,CAYA,SAASynG,GAAelpG,EAAOwN,EAAOnG,GACpC,IAAK8vF,GAAS9vF,GACZ,OAAO,EAET,IAAI5E,SAAc+K,EAClB,SAAY,UAAR/K,EACK8/F,GAAYl7F,IAAWyxF,GAAQtrF,EAAOnG,EAAO5F,QACrC,UAARgB,GAAoB+K,KAASnG,IAE7BsvD,GAAGtvD,EAAOmG,GAAQxN,EAG7B,CAUA,SAAS0iG,GAAM1iG,EAAOqH,GACpB,GAAI/F,GAAQtB,GACV,OAAO,EAET,IAAIyC,SAAczC,EAClB,QAAY,UAARyC,GAA4B,UAARA,GAA4B,WAARA,GAC/B,MAATzC,IAAiBo9F,GAASp9F,MAGvBkpF,GAActnE,KAAK5hB,KAAWipF,GAAarnE,KAAK5hB,IAC1C,MAAVqH,GAAkBrH,KAASH,GAAOwH,GACvC,CAwBA,SAASijG,GAAW1b,GAClB,IAAIwb,EAAWD,GAAYvb,GACvB+P,EAAQ9H,GAAOuT,GAEnB,GAAoB,mBAATzL,KAAyByL,KAAYrT,GAAY71F,WAC1D,OAAO,EAET,GAAI0tF,IAAS+P,EACX,OAAO,EAET,IAAI32F,EAAOqiG,GAAQ1L,GACnB,QAAS32F,GAAQ4mF,IAAS5mF,EAAK,EACjC,EA9SK8tF,IAAY4E,GAAO,IAAI5E,GAAS,IAAIpR,YAAY,MAAQmD,GACxDjpB,IAAO87B,GAAO,IAAI97B,KAAQuoB,GAC1Bv0D,IAAW8nE,GAAO9nE,GAAQC,YAAcy0D,GACxCz2C,IAAO6pD,GAAO,IAAI7pD,KAAQ22C,GAC1BuO,IAAW2E,GAAO,IAAI3E,KAAYpO,KACrC+S,GAAS,SAAS16F,GAChB,IAAIyrB,EAAS4yE,GAAWr+F,GACpBo7F,EAAO3vE,GAAU47D,EAAYrnF,EAAMiB,YAAcZ,EACjDmuG,EAAapT,EAAOhF,GAASgF,GAAQ,GAEzC,GAAIoT,EACF,OAAQA,GACN,KAAKrY,GAAoB,OAAOtO,EAChC,KAAKwO,GAAe,OAAOlP,EAC3B,KAAKmP,GAAmB,OAAOhP,EAC/B,KAAKiP,GAAe,OAAO/O,EAC3B,KAAKgP,GAAmB,OAAO7O,EAGnC,OAAOl8D,CACT,GA8SF,IAAIgjF,GAAatb,GAAatZ,GAAa60B,GAS3C,SAASzM,GAAYjiG,GACnB,IAAIo7F,EAAOp7F,GAASA,EAAMiB,YAG1B,OAAOjB,KAFqB,mBAARo7F,GAAsBA,EAAKl6F,WAAcgyF,GAG/D,CAUA,SAASyP,GAAmB3iG,GAC1B,OAAOA,GAAUA,IAAUm3F,GAASn3F,EACtC,CAWA,SAASyiG,GAAwB5gG,EAAK2/F,GACpC,OAAO,SAASn6F,GACd,OAAc,MAAVA,IAGGA,EAAOxF,KAAS2/F,IACpBA,IAAanhG,GAAcwB,KAAOhC,GAAOwH,IAC9C,CACF,CAoIA,SAASu9F,GAAShW,EAAM3+D,EAAO+hE,GAE7B,OADA/hE,EAAQslE,GAAUtlE,IAAU5vB,EAAauuF,EAAKntF,OAAS,EAAKwuB,EAAO,GAC5D,WAML,IALA,IAAIuyD,EAAO76E,UACP6F,GAAS,EACT/L,EAAS8zF,GAAU/S,EAAK/gF,OAASwuB,EAAO,GACxC6vD,EAAQz+E,EAAMI,KAET+L,EAAQ/L,GACfq+E,EAAMtyE,GAASg1E,EAAKvyD,EAAQziB,GAE9BA,GAAS,EAET,IADA,IAAImhG,EAAYttG,EAAM4uB,EAAQ,KACrBziB,EAAQyiB,GACf0+E,EAAUnhG,GAASg1E,EAAKh1E,GAG1B,OADAmhG,EAAU1+E,GAAS+hE,EAAUlS,GACtBp4E,GAAMknF,EAAM7rF,KAAM4rG,EAC3B,CACF,CAUA,SAAShgG,GAAOtH,EAAQ02F,GACtB,OAAOA,EAAKt8F,OAAS,EAAI4F,EAASy2F,GAAQz2F,EAAQ+9F,GAAUrH,EAAM,GAAI,GACxE,CAgCA,SAASiF,GAAQ37F,EAAQxF,GACvB,IAAY,gBAARA,GAAgD,mBAAhBwF,EAAOxF,KAIhC,aAAPA,EAIJ,OAAOwF,EAAOxF,EAChB,CAgBA,IAAI8qG,GAAUiC,GAAS5J,IAUnBpiF,GAAagyE,IAAiB,SAAShG,EAAM3L,GAC/C,OAAOwK,GAAK7qE,WAAWgsE,EAAM3L,EAC/B,EAUI0hB,GAAciK,GAAS3J,IAY3B,SAAS2H,GAAgBlmG,EAASmoG,EAAWzU,GAC3C,IAAIxiE,EAAUi3E,EAAY,GAC1B,OAAOlK,GAAYj+F,EA1brB,SAA2BkxB,EAAQk3E,GACjC,IAAIrtG,EAASqtG,EAAQrtG,OACrB,IAAKA,EACH,OAAOm2B,EAET,IAAIkrC,EAAYrhE,EAAS,EAGzB,OAFAqtG,EAAQhsC,IAAcrhE,EAAS,EAAI,KAAO,IAAMqtG,EAAQhsC,GACxDgsC,EAAUA,EAAQlhG,KAAKnM,EAAS,EAAI,KAAO,KACpCm2B,EAAO9rB,QAAQ09E,GAAe,uBAAyBslB,EAAU,SAC1E,CAib8BC,CAAkBn3E,EAqHhD,SAA2Bk3E,EAAS1U,GAOlC,OANAnL,GAAUtI,GAAW,SAASqmB,GAC5B,IAAIhtG,EAAQ,KAAOgtG,EAAK,GACnB5S,EAAU4S,EAAK,KAAQzd,GAAcuf,EAAS9uG,IACjD8uG,EAAQxmG,KAAKtI,EAEjB,IACO8uG,EAAQv0F,MACjB,CA7HwDy0F,CAtjBxD,SAAwBp3E,GACtB,IAAI6lC,EAAQ7lC,EAAO6lC,MAAMgsB,IACzB,OAAOhsB,EAAQA,EAAM,GAAGjyD,MAAMk+E,IAAkB,EAClD,CAmjB0EulB,CAAer3E,GAASwiE,IAClG,CAWA,SAASwU,GAAShgB,GAChB,IAAIjY,EAAQ,EACRu4B,EAAa,EAEjB,OAAO,WACL,IAAIC,EAAQ1Z,KACR2Z,EApiNK,IAoiNmBD,EAAQD,GAGpC,GADAA,EAAaC,EACTC,EAAY,GACd,KAAMz4B,GAziNE,IA0iNN,OAAOhvE,UAAU,QAGnBgvE,EAAQ,EAEV,OAAOiY,EAAKlnF,MAAMrH,EAAWsH,UAC/B,CACF,CAUA,SAASuxF,GAAYpZ,EAAOqF,GAC1B,IAAI33E,GAAS,EACT/L,EAASq+E,EAAMr+E,OACfqhE,EAAYrhE,EAAS,EAGzB,IADA0jF,EAAOA,IAAS9kF,EAAYoB,EAAS0jF,IAC5B33E,EAAQ23E,GAAM,CACrB,IAAIkqB,EAAOrW,GAAWxrF,EAAOs1D,GACzB9iE,EAAQ8/E,EAAMuvB,GAElBvvB,EAAMuvB,GAAQvvB,EAAMtyE,GACpBsyE,EAAMtyE,GAASxN,CACjB,CAEA,OADA8/E,EAAMr+E,OAAS0jF,EACRrF,CACT,CASA,IAAIwnB,GAvTJ,SAAuB1Y,GACrB,IAAInjE,EAAS6jF,GAAQ1gB,GAAM,SAAS/sF,GAIlC,OAh0MiB,MA6zMb44D,EAAM0qB,MACR1qB,EAAMxR,QAEDpnD,CACT,IAEI44D,EAAQhvC,EAAOgvC,MACnB,OAAOhvC,CACT,CA6SmB8jF,EAAc,SAAS74C,GACxC,IAAIjrC,EAAS,GAOb,OAN6B,KAAzBirC,EAAOkE,WAAW,IACpBnvC,EAAOnjB,KAAK,IAEdouD,EAAO5qD,QAAQq9E,IAAY,SAAS1rB,EAAOvG,EAAQs4C,EAAOC,GACxDhkF,EAAOnjB,KAAKknG,EAAQC,EAAU3jG,QAAQ+9E,GAAc,MAAS3yB,GAAUuG,EACzE,IACOhyC,CACT,IASA,SAASwyE,GAAMj+F,GACb,GAAoB,iBAATA,GAAqBo9F,GAASp9F,GACvC,OAAOA,EAET,IAAIyrB,EAAUzrB,EAAQ,GACtB,MAAkB,KAAVyrB,GAAkB,EAAIzrB,IAAU,IAAa,KAAOyrB,CAC9D,CASA,SAAS2qE,GAASxH,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAOwE,GAAarxF,KAAK6sF,EAC3B,CAAE,MAAOrnF,GAAI,CACb,IACE,OAAQqnF,EAAO,EACjB,CAAE,MAAOrnF,GAAI,CACf,CACA,MAAO,EACT,CA2BA,SAAS0vF,GAAavwF,GACpB,GAAIA,aAAmBqwF,GACrB,OAAOrwF,EAAQgpG,QAEjB,IAAIjkF,EAAS,IAAIurE,GAActwF,EAAQ4wF,YAAa5wF,EAAQ8wF,WAI5D,OAHA/rE,EAAO8rE,YAAc4B,GAAUzyF,EAAQ6wF,aACvC9rE,EAAOwyD,UAAav3E,EAAQu3E,UAC5BxyD,EAAOgsE,WAAa/wF,EAAQ+wF,WACrBhsE,CACT,CAqIA,IAAIkK,GAAa+uE,IAAS,SAAS5kB,EAAOttE,GACxC,OAAO0wF,GAAkBpjB,GACrBuc,GAAevc,EAAOwd,GAAY9qF,EAAQ,EAAG0wF,IAAmB,IAChE,EACN,IA4BIyM,GAAejL,IAAS,SAAS5kB,EAAOttE,GAC1C,IAAIw8E,EAAWxwD,GAAKhsB,GAIpB,OAHI0wF,GAAkBlU,KACpBA,EAAW3uF,GAEN6iG,GAAkBpjB,GACrBuc,GAAevc,EAAOwd,GAAY9qF,EAAQ,EAAG0wF,IAAmB,GAAOQ,GAAY1U,EAAU,IAC7F,EACN,IAyBI4gB,GAAiBlL,IAAS,SAAS5kB,EAAOttE,GAC5C,IAAIk9E,EAAalxD,GAAKhsB,GAItB,OAHI0wF,GAAkBxT,KACpBA,EAAarvF,GAER6iG,GAAkBpjB,GACrBuc,GAAevc,EAAOwd,GAAY9qF,EAAQ,EAAG0wF,IAAmB,GAAO7iG,EAAWqvF,GAClF,EACN,IAqOA,SAAS1oE,GAAU84D,EAAOsP,EAAWmB,GACnC,IAAI9uF,EAAkB,MAATq+E,EAAgB,EAAIA,EAAMr+E,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAI+L,EAAqB,MAAb+iF,EAAoB,EAAIwc,GAAUxc,GAI9C,OAHI/iF,EAAQ,IACVA,EAAQ+nF,GAAU9zF,EAAS+L,EAAO,IAE7B8iF,GAAcxQ,EAAO4jB,GAAYtU,EAAW,GAAI5hF,EACzD,CAqCA,SAASqiG,GAAc/vB,EAAOsP,EAAWmB,GACvC,IAAI9uF,EAAkB,MAATq+E,EAAgB,EAAIA,EAAMr+E,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAI+L,EAAQ/L,EAAS,EAOrB,OANI8uF,IAAclwF,IAChBmN,EAAQu/F,GAAUxc,GAClB/iF,EAAQ+iF,EAAY,EAChBgF,GAAU9zF,EAAS+L,EAAO,GAC1BgoF,GAAUhoF,EAAO/L,EAAS,IAEzB6uF,GAAcxQ,EAAO4jB,GAAYtU,EAAW,GAAI5hF,GAAO,EAChE,CAgBA,SAASygG,GAAQnuB,GAEf,OADsB,MAATA,EAAgB,EAAIA,EAAMr+E,QACvB67F,GAAYxd,EAAO,GAAK,EAC1C,CA+FA,SAASgwB,GAAKhwB,GACZ,OAAQA,GAASA,EAAMr+E,OAAUq+E,EAAM,GAAKz/E,CAC9C,CAyEA,IAAI0vG,GAAerL,IAAS,SAAS3F,GACnC,IAAIiR,EAASrgB,GAASoP,EAAQqI,IAC9B,OAAQ4I,EAAOvuG,QAAUuuG,EAAO,KAAOjR,EAAO,GAC1CD,GAAiBkR,GACjB,EACN,IAyBIC,GAAiBvL,IAAS,SAAS3F,GACrC,IAAI/P,EAAWxwD,GAAKugE,GAChBiR,EAASrgB,GAASoP,EAAQqI,IAO9B,OALIpY,IAAaxwD,GAAKwxE,GACpBhhB,EAAW3uF,EAEX2vG,EAAO9jG,MAED8jG,EAAOvuG,QAAUuuG,EAAO,KAAOjR,EAAO,GAC1CD,GAAiBkR,EAAQtM,GAAY1U,EAAU,IAC/C,EACN,IAuBIkhB,GAAmBxL,IAAS,SAAS3F,GACvC,IAAIrP,EAAalxD,GAAKugE,GAClBiR,EAASrgB,GAASoP,EAAQqI,IAM9B,OAJA1X,EAAkC,mBAAdA,EAA2BA,EAAarvF,IAE1D2vG,EAAO9jG,MAED8jG,EAAOvuG,QAAUuuG,EAAO,KAAOjR,EAAO,GAC1CD,GAAiBkR,EAAQ3vG,EAAWqvF,GACpC,EACN,IAmCA,SAASlxD,GAAKshD,GACZ,IAAIr+E,EAAkB,MAATq+E,EAAgB,EAAIA,EAAMr+E,OACvC,OAAOA,EAASq+E,EAAMr+E,EAAS,GAAKpB,CACtC,CAsFA,IAAI8vG,GAAOzL,GAAS0L,IAsBpB,SAASA,GAAQtwB,EAAOttE,GACtB,OAAQstE,GAASA,EAAMr+E,QAAU+Q,GAAUA,EAAO/Q,OAC9C4iG,GAAYvkB,EAAOttE,GACnBstE,CACN,CAoFA,IAAIuwB,GAAStG,IAAS,SAASjqB,EAAOykB,GACpC,IAAI9iG,EAAkB,MAATq+E,EAAgB,EAAIA,EAAMr+E,OACnCgqB,EAASsuE,GAAOja,EAAOykB,GAM3B,OAJAD,GAAWxkB,EAAO6P,GAAS4U,GAAS,SAAS/2F,GAC3C,OAAOsrF,GAAQtrF,EAAO/L,IAAW+L,EAAQA,CAC3C,IAAG+M,KAAK0pF,KAEDx4E,CACT,IA0EA,SAAS0zD,GAAQW,GACf,OAAgB,MAATA,EAAgBA,EAAQ+V,GAAc9zF,KAAK+9E,EACpD,CAiaA,IAAIwwB,GAAQ5L,IAAS,SAAS3F,GAC5B,OAAOwH,GAASjJ,GAAYyB,EAAQ,EAAGmE,IAAmB,GAC5D,IAyBIqN,GAAU7L,IAAS,SAAS3F,GAC9B,IAAI/P,EAAWxwD,GAAKugE,GAIpB,OAHImE,GAAkBlU,KACpBA,EAAW3uF,GAENkmG,GAASjJ,GAAYyB,EAAQ,EAAGmE,IAAmB,GAAOQ,GAAY1U,EAAU,GACzF,IAuBIwhB,GAAY9L,IAAS,SAAS3F,GAChC,IAAIrP,EAAalxD,GAAKugE,GAEtB,OADArP,EAAkC,mBAAdA,EAA2BA,EAAarvF,EACrDkmG,GAASjJ,GAAYyB,EAAQ,EAAGmE,IAAmB,GAAO7iG,EAAWqvF,EAC9E,IA+FA,SAAS+gB,GAAM3wB,GACb,IAAMA,IAASA,EAAMr+E,OACnB,MAAO,GAET,IAAIA,EAAS,EAOb,OANAq+E,EAAQuP,GAAYvP,GAAO,SAASjmE,GAClC,GAAIqpF,GAAkBrpF,GAEpB,OADApY,EAAS8zF,GAAU17E,EAAMpY,OAAQA,IAC1B,CAEX,IACOuvF,GAAUvvF,GAAQ,SAAS+L,GAChC,OAAOmiF,GAAS7P,EAAOoQ,GAAa1iF,GACtC,GACF,CAuBA,SAASkjG,GAAU5wB,EAAOkP,GACxB,IAAMlP,IAASA,EAAMr+E,OACnB,MAAO,GAET,IAAIgqB,EAASglF,GAAM3wB,GACnB,OAAgB,MAAZkP,EACKvjE,EAEFkkE,GAASlkE,GAAQ,SAAS5R,GAC/B,OAAOnS,GAAMsnF,EAAU3uF,EAAWwZ,EACpC,GACF,CAsBA,IAAI82F,GAAUjM,IAAS,SAAS5kB,EAAOttE,GACrC,OAAO0wF,GAAkBpjB,GACrBuc,GAAevc,EAAOttE,GACtB,EACN,IAoBIo+F,GAAMlM,IAAS,SAAS3F,GAC1B,OAAOiI,GAAQ3X,GAAY0P,EAAQmE,IACrC,IAyBI2N,GAAQnM,IAAS,SAAS3F,GAC5B,IAAI/P,EAAWxwD,GAAKugE,GAIpB,OAHImE,GAAkBlU,KACpBA,EAAW3uF,GAEN2mG,GAAQ3X,GAAY0P,EAAQmE,IAAoBQ,GAAY1U,EAAU,GAC/E,IAuBI8hB,GAAUpM,IAAS,SAAS3F,GAC9B,IAAIrP,EAAalxD,GAAKugE,GAEtB,OADArP,EAAkC,mBAAdA,EAA2BA,EAAarvF,EACrD2mG,GAAQ3X,GAAY0P,EAAQmE,IAAoB7iG,EAAWqvF,EACpE,IAkBIqhB,GAAMrM,GAAS+L,IA6DnB,IAAIO,GAAUtM,IAAS,SAAS3F,GAC9B,IAAIt9F,EAASs9F,EAAOt9F,OAChButF,EAAWvtF,EAAS,EAAIs9F,EAAOt9F,EAAS,GAAKpB,EAGjD,OADA2uF,EAA8B,mBAAZA,GAA0B+P,EAAO7yF,MAAO8iF,GAAY3uF,EAC/DqwG,GAAU3R,EAAQ/P,EAC3B,IAiCA,SAASjlB,GAAM/pE,GACb,IAAIyrB,EAASorE,GAAO72F,GAEpB,OADAyrB,EAAO+rE,WAAY,EACZ/rE,CACT,CAqDA,SAASy+E,GAAKlqG,EAAOixG,GACnB,OAAOA,EAAYjxG,EACrB,CAkBA,IAAIkxG,GAAYnH,IAAS,SAAS/P,GAChC,IAAIv4F,EAASu4F,EAAMv4F,OACfwuB,EAAQxuB,EAASu4F,EAAM,GAAK,EAC5Bh6F,EAAQ+C,KAAKu0F,YACb2Z,EAAc,SAAS5pG,GAAU,OAAO0yF,GAAO1yF,EAAQ2yF,EAAQ,EAEnE,QAAIv4F,EAAS,GAAKsB,KAAKw0F,YAAY91F,SAC7BzB,aAAiB+2F,IAAiB+B,GAAQ7oE,KAGhDjwB,EAAQA,EAAM2N,MAAMsiB,GAAQA,GAASxuB,EAAS,EAAI,KAC5C81F,YAAYjvF,KAAK,CACrB,KAAQ4hG,GACR,KAAQ,CAAC+G,GACT,QAAW5wG,IAEN,IAAI22F,GAAch3F,EAAO+C,KAAKy0F,WAAW0S,MAAK,SAASpqB,GAI5D,OAHIr+E,IAAWq+E,EAAMr+E,QACnBq+E,EAAMx3E,KAAKjI,GAENy/E,CACT,KAbS/8E,KAAKmnG,KAAK+G,EAcrB,IAiPA,IAAIE,GAAUvI,IAAiB,SAASn9E,EAAQzrB,EAAO6B,GACjDC,GAAeC,KAAK0pB,EAAQ5pB,KAC5B4pB,EAAO5pB,GAET03F,GAAgB9tE,EAAQ5pB,EAAK,EAEjC,IAqIA,IAAI+B,GAAOgmG,GAAW5iF,IAqBlBoqF,GAAWxH,GAAWiG,IA2G1B,SAASlpG,GAAQypF,EAAYpB,GAE3B,OADW1tF,GAAQ8uF,GAAcnB,GAAY2K,IACjCxJ,EAAYsT,GAAY1U,EAAU,GAChD,CAsBA,SAASqiB,GAAajhB,EAAYpB,GAEhC,OADW1tF,GAAQ8uF,GAAclB,GAAiB8N,IACtC5M,EAAYsT,GAAY1U,EAAU,GAChD,CAyBA,IAAIsiB,GAAU1I,IAAiB,SAASn9E,EAAQzrB,EAAO6B,GACjDC,GAAeC,KAAK0pB,EAAQ5pB,GAC9B4pB,EAAO5pB,GAAKyG,KAAKtI,GAEjBu5F,GAAgB9tE,EAAQ5pB,EAAK,CAAC7B,GAElC,IAoEA,IAAIuxG,GAAY7M,IAAS,SAAStU,EAAY2N,EAAMvb,GAClD,IAAIh1E,GAAS,EACTmtF,EAAwB,mBAARoD,EAChBtyE,EAAS82E,GAAYnS,GAAc/uF,EAAM+uF,EAAW3uF,QAAU,GAKlE,OAHAm4F,GAASxJ,GAAY,SAASpwF,GAC5ByrB,IAASje,GAASmtF,EAASjzF,GAAMq2F,EAAM/9F,EAAOwiF,GAAQ8c,GAAWt/F,EAAO+9F,EAAMvb,EAChF,IACO/2D,CACT,IA8BI+lF,GAAQ5I,IAAiB,SAASn9E,EAAQzrB,EAAO6B,GACnD03F,GAAgB9tE,EAAQ5pB,EAAK7B,EAC/B,IA4CA,SAASuN,GAAI6iF,EAAYpB,GAEvB,OADW1tF,GAAQ8uF,GAAcT,GAAW2S,IAChClS,EAAYsT,GAAY1U,EAAU,GAChD,CAiFA,IAAIyiB,GAAY7I,IAAiB,SAASn9E,EAAQzrB,EAAO6B,GACvD4pB,EAAO5pB,EAAM,EAAI,GAAGyG,KAAKtI,EAC3B,IAAG,WAAa,MAAO,CAAC,GAAI,GAAK,IAmSjC,IAAI0xG,GAAShN,IAAS,SAAStU,EAAYoT,GACzC,GAAkB,MAAdpT,EACF,MAAO,GAET,IAAI3uF,EAAS+hG,EAAU/hG,OAMvB,OALIA,EAAS,GAAKynG,GAAe9Y,EAAYoT,EAAU,GAAIA,EAAU,IACnEA,EAAY,GACH/hG,EAAS,GAAKynG,GAAe1F,EAAU,GAAIA,EAAU,GAAIA,EAAU,MAC5EA,EAAY,CAACA,EAAU,KAElBD,GAAYnT,EAAYkN,GAAYkG,EAAW,GAAI,GAC5D,IAoBI7O,GAAMD,IAAU,WAClB,OAAOjH,GAAKlvE,KAAKo2E,KACnB,EAyDA,SAASiW,GAAIhc,EAAMnoE,EAAGwiF,GAGpB,OAFAxiF,EAAIwiF,EAAQ5oG,EAAYomB,EACxBA,EAAKmoE,GAAa,MAALnoE,EAAamoE,EAAKntF,OAASglB,EACjC2mF,GAAWxe,EAAMvI,EAAehmF,EAAWA,EAAWA,EAAWA,EAAWomB,EACrF,CAmBA,SAAS0jD,GAAO1jD,EAAGmoE,GACjB,IAAInjE,EACJ,GAAmB,mBAARmjE,EACT,MAAM,IAAI9tE,GAAUilE,GAGtB,OADAt/D,EAAIsmF,GAAUtmF,GACP,WAOL,QANMA,EAAI,IACRgF,EAASmjE,EAAKlnF,MAAM3E,KAAM4E,YAExB8e,GAAK,IACPmoE,EAAOvuF,GAEForB,CACT,CACF,CAqCA,IAAIzc,GAAO01F,IAAS,SAAS9V,EAAMC,EAASiZ,GAC1C,IAAI1N,EAv4Ta,EAw4TjB,GAAI0N,EAASrmG,OAAQ,CACnB,IAAIsmG,EAAU7V,GAAe4V,EAAUoD,GAAUl8F,KACjDorF,GAAWjU,CACb,CACA,OAAOinB,GAAWxe,EAAMwL,EAASvL,EAASiZ,EAAUC,EACtD,IA+CI4J,GAAUjN,IAAS,SAASr9F,EAAQxF,EAAKimG,GAC3C,IAAI1N,EAAUwX,EACd,GAAI9J,EAASrmG,OAAQ,CACnB,IAAIsmG,EAAU7V,GAAe4V,EAAUoD,GAAUyG,KACjDvX,GAAWjU,CACb,CACA,OAAOinB,GAAWvrG,EAAKu4F,EAAS/yF,EAAQygG,EAAUC,EACpD,IAqJA,SAAS9lF,GAAS2sE,EAAM3L,EAAMn4E,GAC5B,IAAI+mG,EACAC,EACAC,EACAtmF,EACAumF,EACAC,EACAC,EAAiB,EACjBC,GAAU,EACVC,GAAS,EACT9I,GAAW,EAEf,GAAmB,mBAAR1a,EACT,MAAM,IAAI9tE,GAAUilE,GAUtB,SAASssB,EAAWC,GAClB,IAAI9vB,EAAOqvB,EACPhjB,EAAUijB,EAKd,OAHAD,EAAWC,EAAWzxG,EACtB6xG,EAAiBI,EACjB7mF,EAASmjE,EAAKlnF,MAAMmnF,EAASrM,EAE/B,CAqBA,SAAS+vB,EAAaD,GACpB,IAAIE,EAAoBF,EAAOL,EAM/B,OAAQA,IAAiB5xG,GAAcmyG,GAAqBvvB,GACzDuvB,EAAoB,GAAOJ,GANJE,EAAOJ,GAM8BH,CACjE,CAEA,SAASU,IACP,IAAIH,EAAO3d,KACX,GAAI4d,EAAaD,GACf,OAAOI,EAAaJ,GAGtBN,EAAUpvF,GAAW6vF,EA3BvB,SAAuBH,GACrB,IAEIK,EAAc1vB,GAFMqvB,EAAOL,GAI/B,OAAOG,EACH5c,GAAUmd,EAAaZ,GAJDO,EAAOJ,IAK7BS,CACN,CAmBqCC,CAAcN,GACnD,CAEA,SAASI,EAAaJ,GAKpB,OAJAN,EAAU3xG,EAINipG,GAAYuI,EACPQ,EAAWC,IAEpBT,EAAWC,EAAWzxG,EACforB,EACT,CAcA,SAASonF,IACP,IAAIP,EAAO3d,KACPme,EAAaP,EAAaD,GAM9B,GAJAT,EAAWlqG,UACXmqG,EAAW/uG,KACXkvG,EAAeK,EAEXQ,EAAY,CACd,GAAId,IAAY3xG,EACd,OAzEN,SAAqBiyG,GAMnB,OAJAJ,EAAiBI,EAEjBN,EAAUpvF,GAAW6vF,EAAcxvB,GAE5BkvB,EAAUE,EAAWC,GAAQ7mF,CACtC,CAkEasnF,CAAYd,GAErB,GAAIG,EAIF,OAFAr1D,GAAai1D,GACbA,EAAUpvF,GAAW6vF,EAAcxvB,GAC5BovB,EAAWJ,EAEtB,CAIA,OAHID,IAAY3xG,IACd2xG,EAAUpvF,GAAW6vF,EAAcxvB,IAE9Bx3D,CACT,CAGA,OA3GAw3D,EAAOupB,GAASvpB,IAAS,EACrBkU,GAASrsF,KACXqnG,IAAYrnG,EAAQqnG,QAEpBJ,GADAK,EAAS,YAAatnG,GACHyqF,GAAUiX,GAAS1hG,EAAQinG,UAAY,EAAG9uB,GAAQ8uB,EACrEzI,EAAW,aAAcx+F,IAAYA,EAAQw+F,SAAWA,GAoG1DuJ,EAAUh6F,OApCV,WACMm5F,IAAY3xG,GACd08C,GAAai1D,GAEfE,EAAiB,EACjBL,EAAWI,EAAeH,EAAWE,EAAU3xG,CACjD,EA+BAwyG,EAAUG,MA7BV,WACE,OAAOhB,IAAY3xG,EAAYorB,EAASinF,EAAa/d,KACvD,EA4BOke,CACT,CAoBA,IAAII,GAAQvO,IAAS,SAAS9V,EAAMpM,GAClC,OAAO4Z,GAAUxN,EAAM,EAAGpM,EAC5B,IAqBI0wB,GAAQxO,IAAS,SAAS9V,EAAM3L,EAAMT,GACxC,OAAO4Z,GAAUxN,EAAM4d,GAASvpB,IAAS,EAAGT,EAC9C,IAoEA,SAAS8sB,GAAQ1gB,EAAMukB,GACrB,GAAmB,mBAARvkB,GAAmC,MAAZukB,GAAuC,mBAAZA,EAC3D,MAAM,IAAIryF,GAAUilE,GAEtB,IAAIqtB,EAAW,WACb,IAAI5wB,EAAO76E,UACP9F,EAAMsxG,EAAWA,EAASzrG,MAAM3E,KAAMy/E,GAAQA,EAAK,GACnD/nB,EAAQ24C,EAAS34C,MAErB,GAAIA,EAAMhlB,IAAI5zC,GACZ,OAAO44D,EAAMxjC,IAAIp1B,GAEnB,IAAI4pB,EAASmjE,EAAKlnF,MAAM3E,KAAMy/E,GAE9B,OADA4wB,EAAS34C,MAAQA,EAAM15B,IAAIl/B,EAAK4pB,IAAWgvC,EACpChvC,CACT,EAEA,OADA2nF,EAAS34C,MAAQ,IAAK60C,GAAQ+D,OAASnb,IAChCkb,CACT,CAyBA,SAASE,GAAOlkB,GACd,GAAwB,mBAAbA,EACT,MAAM,IAAItuE,GAAUilE,GAEtB,OAAO,WACL,IAAIvD,EAAO76E,UACX,OAAQ66E,EAAK/gF,QACX,KAAK,EAAG,OAAQ2tF,EAAUrtF,KAAKgB,MAC/B,KAAK,EAAG,OAAQqsF,EAAUrtF,KAAKgB,KAAMy/E,EAAK,IAC1C,KAAK,EAAG,OAAQ4M,EAAUrtF,KAAKgB,KAAMy/E,EAAK,GAAIA,EAAK,IACnD,KAAK,EAAG,OAAQ4M,EAAUrtF,KAAKgB,KAAMy/E,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE9D,OAAQ4M,EAAU1nF,MAAM3E,KAAMy/E,EAChC,CACF,CApCA8sB,GAAQ+D,MAAQnb,GA2FhB,IAAIqb,GAAWhM,IAAS,SAAS3Y,EAAM4kB,GAKrC,IAAIC,GAJJD,EAAmC,GAArBA,EAAW/xG,QAAeH,GAAQkyG,EAAW,IACvD7jB,GAAS6jB,EAAW,GAAIriB,GAAUuS,OAClC/T,GAAS2N,GAAYkW,EAAY,GAAIriB,GAAUuS,QAEtBjiG,OAC7B,OAAOijG,IAAS,SAASliB,GAIvB,IAHA,IAAIh1E,GAAS,EACT/L,EAAS+zF,GAAUhT,EAAK/gF,OAAQgyG,KAE3BjmG,EAAQ/L,GACf+gF,EAAKh1E,GAASgmG,EAAWhmG,GAAOzL,KAAKgB,KAAMy/E,EAAKh1E,IAElD,OAAO9F,GAAMknF,EAAM7rF,KAAMy/E,EAC3B,GACF,IAmCIkxB,GAAUhP,IAAS,SAAS9V,EAAMkZ,GACpC,IAAIC,EAAU7V,GAAe4V,EAAUoD,GAAUwI,KACjD,OAAOtG,GAAWxe,EAAMzI,EAAmB9lF,EAAWynG,EAAUC,EAClE,IAkCI4L,GAAejP,IAAS,SAAS9V,EAAMkZ,GACzC,IAAIC,EAAU7V,GAAe4V,EAAUoD,GAAUyI,KACjD,OAAOvG,GAAWxe,EAAMxI,EAAyB/lF,EAAWynG,EAAUC,EACxE,IAwBI6L,GAAQ7J,IAAS,SAASnb,EAAM2V,GAClC,OAAO6I,GAAWxe,EAAMtI,EAAiBjmF,EAAWA,EAAWA,EAAWkkG,EAC5E,IAgaA,SAAS5tC,GAAG32D,EAAO2+F,GACjB,OAAO3+F,IAAU2+F,GAAU3+F,GAAUA,GAAS2+F,GAAUA,CAC1D,CAyBA,IAAIvnC,GAAKm1C,GAA0B7N,IAyB/BvnC,GAAMo1C,IAA0B,SAASvsG,EAAO2+F,GAClD,OAAO3+F,GAAS2+F,CAClB,IAoBIjG,GAAc6G,GAAgB,WAAa,OAAO53F,SAAW,CAA/B,IAAsC43F,GAAkB,SAASv/F,GACjG,OAAO82F,GAAa92F,IAAU8B,GAAeC,KAAK/B,EAAO,YACtDk0F,GAAqBnyF,KAAK/B,EAAO,SACtC,EAyBIsB,GAAUD,EAAMC,QAmBhB4sF,GAAgBD,GAAoBkD,GAAUlD,IA75PlD,SAA2BjuF,GACzB,OAAO82F,GAAa92F,IAAUq+F,GAAWr+F,IAAU4nF,CACrD,EAs7PA,SAAS2a,GAAYviG,GACnB,OAAgB,MAATA,GAAiBuuG,GAASvuG,EAAMyB,UAAYo4E,GAAW75E,EAChE,CA2BA,SAASkjG,GAAkBljG,GACzB,OAAO82F,GAAa92F,IAAUuiG,GAAYviG,EAC5C,CAyCA,IAAIk1F,GAAWD,IAAkByZ,GAmB7BtgB,GAASD,GAAagD,GAAUhD,IAxgQpC,SAAoBnuF,GAClB,OAAO82F,GAAa92F,IAAUq+F,GAAWr+F,IAAU+mF,CACrD,EA8qQA,SAAS8sB,GAAQ7zG,GACf,IAAK82F,GAAa92F,GAChB,OAAO,EAET,IAAIsJ,EAAM+0F,GAAWr+F,GACrB,OAAOsJ,GAAO09E,GA9yWF,yBA8yWc19E,GACC,iBAAjBtJ,EAAM+zB,SAA4C,iBAAd/zB,EAAMsC,OAAqB6gG,GAAcnjG,EACzF,CAiDA,SAAS65E,GAAW75E,GAClB,IAAKm3F,GAASn3F,GACZ,OAAO,EAIT,IAAIsJ,EAAM+0F,GAAWr+F,GACrB,OAAOsJ,GAAO29E,GAAW39E,GAAO49E,GA32WrB,0BA22W+B59E,GA/1W/B,kBA+1WkDA,CAC/D,CA4BA,SAASwqG,GAAU9zG,GACjB,MAAuB,iBAATA,GAAqBA,GAAS+sG,GAAU/sG,EACxD,CA4BA,SAASuuG,GAASvuG,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GAASwmF,CAC7C,CA2BA,SAAS2Q,GAASn3F,GAChB,IAAIyC,SAAczC,EAClB,OAAgB,MAATA,IAA0B,UAARyC,GAA4B,YAARA,EAC/C,CA0BA,SAASq0F,GAAa92F,GACpB,OAAgB,MAATA,GAAiC,iBAATA,CACjC,CAmBA,IAAIsuF,GAAQD,GAAY8C,GAAU9C,IA5xQlC,SAAmBruF,GACjB,OAAO82F,GAAa92F,IAAU06F,GAAO16F,IAAUmnF,CACjD,EA4+QA,SAAS/nB,GAASp/D,GAChB,MAAuB,iBAATA,GACX82F,GAAa92F,IAAUq+F,GAAWr+F,IAAUonF,CACjD,CA8BA,SAAS+b,GAAcnjG,GACrB,IAAK82F,GAAa92F,IAAUq+F,GAAWr+F,IAAUqnF,EAC/C,OAAO,EAET,IAAI9pB,EAAQu2B,GAAa9zF,GACzB,GAAc,OAAVu9D,EACF,OAAO,EAET,IAAI69B,EAAOt5F,GAAeC,KAAKw7D,EAAO,gBAAkBA,EAAMt8D,YAC9D,MAAsB,mBAARm6F,GAAsBA,aAAgBA,GAClDhI,GAAarxF,KAAKq5F,IAAS3H,EAC/B,CAmBA,IAAIhW,GAAW8Q,GAAe4C,GAAU5C,IA59QxC,SAAsBvuF,GACpB,OAAO82F,GAAa92F,IAAUq+F,GAAWr+F,IAAUunF,CACrD,EA4gRA,IAAIkH,GAAQD,GAAY2C,GAAU3C,IAngRlC,SAAmBxuF,GACjB,OAAO82F,GAAa92F,IAAU06F,GAAO16F,IAAUwnF,CACjD,EAohRA,SAASnjB,GAASrkE,GAChB,MAAuB,iBAATA,IACVsB,GAAQtB,IAAU82F,GAAa92F,IAAUq+F,GAAWr+F,IAAUynF,CACpE,CAmBA,SAAS2V,GAASp9F,GAChB,MAAuB,iBAATA,GACX82F,GAAa92F,IAAUq+F,GAAWr+F,IAAU0nF,CACjD,CAmBA,IAAIiH,GAAeD,GAAmByC,GAAUzC,IAvjRhD,SAA0B1uF,GACxB,OAAO82F,GAAa92F,IAClBuuG,GAASvuG,EAAMyB,WAAaurF,GAAeqR,GAAWr+F,GAC1D,EA4oRA,IAAIs3D,GAAKi1C,GAA0BlK,IAyB/BhrC,GAAMk1C,IAA0B,SAASvsG,EAAO2+F,GAClD,OAAO3+F,GAAS2+F,CAClB,IAyBA,SAASrqE,GAAQt0B,GACf,IAAKA,EACH,MAAO,GAET,GAAIuiG,GAAYviG,GACd,OAAOqkE,GAASrkE,GAASuyF,GAAcvyF,GAASm5F,GAAUn5F,GAE5D,GAAIq0F,IAAer0F,EAAMq0F,IACvB,OAv8VN,SAAyBrzF,GAIvB,IAHA,IAAIgH,EACAyjB,EAAS,KAEJzjB,EAAOhH,EAASmI,QAAQC,MAC/BqiB,EAAOnjB,KAAKN,EAAKhI,OAEnB,OAAOyrB,CACT,CA+7VasoF,CAAgB/zG,EAAMq0F,OAE/B,IAAI/qF,EAAMoxF,GAAO16F,GAGjB,OAFWsJ,GAAO69E,EAAS2K,GAAcxoF,GAAOk+E,EAAS2K,GAAa3/E,IAE1DxS,EACd,CAyBA,SAASqsG,GAASrsG,GAChB,OAAKA,GAGLA,EAAQwsG,GAASxsG,MACHumF,GAAYvmF,KAAU,IAxkYtB,uBAykYAA,EAAQ,GAAK,EAAI,GAGxBA,GAAUA,EAAQA,EAAQ,EAPd,IAAVA,EAAcA,EAAQ,CAQjC,CA4BA,SAAS+sG,GAAU/sG,GACjB,IAAIyrB,EAAS4gF,GAASrsG,GAClBg0G,EAAYvoF,EAAS,EAEzB,OAAOA,GAAWA,EAAUuoF,EAAYvoF,EAASuoF,EAAYvoF,EAAU,CACzE,CA6BA,SAASwoF,GAASj0G,GAChB,OAAOA,EAAQo5F,GAAU2T,GAAU/sG,GAAQ,EAAG0mF,GAAoB,CACpE,CAyBA,SAAS8lB,GAASxsG,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAIo9F,GAASp9F,GACX,OAAOymF,EAET,GAAI0Q,GAASn3F,GAAQ,CACnB,IAAI2+F,EAAgC,mBAAjB3+F,EAAM22F,QAAwB32F,EAAM22F,UAAY32F,EACnEA,EAAQm3F,GAASwH,GAAUA,EAAQ,GAAMA,CAC3C,CACA,GAAoB,iBAAT3+F,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQixF,GAASjxF,GACjB,IAAIk0G,EAAWjqB,GAAWroE,KAAK5hB,GAC/B,OAAQk0G,GAAY/pB,GAAUvoE,KAAK5hB,GAC/BqtF,GAAartF,EAAM2N,MAAM,GAAIumG,EAAW,EAAI,GAC3ClqB,GAAWpoE,KAAK5hB,GAASymF,GAAOzmF,CACvC,CA0BA,SAASojG,GAAcpjG,GACrB,OAAO85F,GAAW95F,EAAOg7F,GAAOh7F,GAClC,CAqDA,SAAS4xC,GAAS5xC,GAChB,OAAgB,MAATA,EAAgB,GAAKsmG,GAAatmG,EAC3C,CAoCA,IAAI8H,GAASghG,IAAe,SAASzhG,EAAQuwB,GAC3C,GAAIqqE,GAAYrqE,IAAW2qE,GAAY3qE,GACrCkiE,GAAWliE,EAAQnsB,GAAKmsB,GAASvwB,QAGnC,IAAK,IAAIxF,KAAO+1B,EACV91B,GAAeC,KAAK61B,EAAQ/1B,IAC9B23F,GAAYnyF,EAAQxF,EAAK+1B,EAAO/1B,GAGtC,IAiCIsyG,GAAWrL,IAAe,SAASzhG,EAAQuwB,GAC7CkiE,GAAWliE,EAAQojE,GAAOpjE,GAASvwB,EACrC,IA+BI+sG,GAAetL,IAAe,SAASzhG,EAAQuwB,EAAQkrE,EAAUzI,GACnEP,GAAWliE,EAAQojE,GAAOpjE,GAASvwB,EAAQgzF,EAC7C,IA8BIga,GAAavL,IAAe,SAASzhG,EAAQuwB,EAAQkrE,EAAUzI,GACjEP,GAAWliE,EAAQnsB,GAAKmsB,GAASvwB,EAAQgzF,EAC3C,IAmBIrwB,GAAK+/B,GAAShQ,IA8DlB,IAAIjH,GAAW4R,IAAS,SAASr9F,EAAQ2hG,GACvC3hG,EAASxH,GAAOwH,GAEhB,IAAImG,GAAS,EACT/L,EAASunG,EAAQvnG,OACjBwnG,EAAQxnG,EAAS,EAAIunG,EAAQ,GAAK3oG,EAMtC,IAJI4oG,GAASC,GAAeF,EAAQ,GAAIA,EAAQ,GAAIC,KAClDxnG,EAAS,KAGF+L,EAAQ/L,GAMf,IALA,IAAIm2B,EAASoxE,EAAQx7F,GACjBjL,EAAQy4F,GAAOpjE,GACf08E,GAAc,EACdC,EAAchyG,EAAMd,SAEf6yG,EAAaC,GAAa,CACjC,IAAI1yG,EAAMU,EAAM+xG,GACZt0G,EAAQqH,EAAOxF,IAEf7B,IAAUK,GACTs2D,GAAG32D,EAAOkzF,GAAYrxF,MAAUC,GAAeC,KAAKsF,EAAQxF,MAC/DwF,EAAOxF,GAAO+1B,EAAO/1B,GAEzB,CAGF,OAAOwF,CACT,IAqBImtG,GAAe9P,IAAS,SAASliB,GAEnC,OADAA,EAAKl6E,KAAKjI,EAAWwtG,IACdnmG,GAAM+sG,GAAWp0G,EAAWmiF,EACrC,IA+RA,SAASvrD,GAAI5vB,EAAQ02F,EAAM+N,GACzB,IAAIrgF,EAAmB,MAAVpkB,EAAiBhH,EAAYy9F,GAAQz2F,EAAQ02F,GAC1D,OAAOtyE,IAAWprB,EAAYyrG,EAAergF,CAC/C,CA2DA,SAASm3E,GAAMv7F,EAAQ02F,GACrB,OAAiB,MAAV12F,GAAkBgnG,GAAQhnG,EAAQ02F,EAAMc,GACjD,CAoBA,IAAI6V,GAAShJ,IAAe,SAASjgF,EAAQzrB,EAAO6B,GACrC,MAAT7B,GACyB,mBAAlBA,EAAM4xC,WACf5xC,EAAQwzF,GAAqBzxF,KAAK/B,IAGpCyrB,EAAOzrB,GAAS6B,CAClB,GAAGqjG,GAAStD,KA4BR+S,GAAWjJ,IAAe,SAASjgF,EAAQzrB,EAAO6B,GACvC,MAAT7B,GACyB,mBAAlBA,EAAM4xC,WACf5xC,EAAQwzF,GAAqBzxF,KAAK/B,IAGhC8B,GAAeC,KAAK0pB,EAAQzrB,GAC9ByrB,EAAOzrB,GAAOsI,KAAKzG,GAEnB4pB,EAAOzrB,GAAS,CAAC6B,EAErB,GAAG6hG,IAoBCkR,GAASlQ,GAASpF,IA8BtB,SAAS7zF,GAAKpE,GACZ,OAAOk7F,GAAYl7F,GAAUixF,GAAcjxF,GAAU26F,GAAS36F,EAChE,CAyBA,SAAS2zF,GAAO3zF,GACd,OAAOk7F,GAAYl7F,GAAUixF,GAAcjxF,GAAQ,GAAQ66F,GAAW76F,EACxE,CAsGA,IAAIwtG,GAAQ/L,IAAe,SAASzhG,EAAQuwB,EAAQkrE,GAClDD,GAAUx7F,EAAQuwB,EAAQkrE,EAC5B,IAiCI2R,GAAY3L,IAAe,SAASzhG,EAAQuwB,EAAQkrE,EAAUzI,GAChEwI,GAAUx7F,EAAQuwB,EAAQkrE,EAAUzI,EACtC,IAsBIya,GAAO/K,IAAS,SAAS1iG,EAAQ2yF,GACnC,IAAIvuE,EAAS,CAAC,EACd,GAAc,MAAVpkB,EACF,OAAOokB,EAET,IAAI6uE,GAAS,EACbN,EAAQrK,GAASqK,GAAO,SAAS+D,GAG/B,OAFAA,EAAOC,GAASD,EAAM12F,GACtBizF,IAAWA,EAASyD,EAAKt8F,OAAS,GAC3Bs8F,CACT,IACAjE,GAAWzyF,EAAQ40F,GAAa50F,GAASokB,GACrC6uE,IACF7uE,EAAS0uE,GAAU1uE,EAAQspF,EAAwDjH,KAGrF,IADA,IAAIrsG,EAASu4F,EAAMv4F,OACZA,KACL+iG,GAAU/4E,EAAQuuE,EAAMv4F,IAE1B,OAAOgqB,CACT,IA2CA,IAAIsnE,GAAOgX,IAAS,SAAS1iG,EAAQ2yF,GACnC,OAAiB,MAAV3yF,EAAiB,CAAC,EAnmT3B,SAAkBA,EAAQ2yF,GACxB,OAAOmK,GAAW98F,EAAQ2yF,GAAO,SAASh6F,EAAO+9F,GAC/C,OAAO6E,GAAMv7F,EAAQ02F,EACvB,GACF,CA+lT+BiX,CAAS3tG,EAAQ2yF,EAChD,IAoBA,SAASib,GAAO5tG,EAAQ+nF,GACtB,GAAc,MAAV/nF,EACF,MAAO,CAAC,EAEV,IAAI9E,EAAQotF,GAASsM,GAAa50F,IAAS,SAASuB,GAClD,MAAO,CAACA,EACV,IAEA,OADAwmF,EAAYsU,GAAYtU,GACjB+U,GAAW98F,EAAQ9E,GAAO,SAASvC,EAAO+9F,GAC/C,OAAO3O,EAAUpvF,EAAO+9F,EAAK,GAC/B,GACF,CA0IA,IAAImX,GAAUhI,GAAczhG,IA0BxB0pG,GAAYjI,GAAclS,IA4K9B,SAASxoF,GAAOnL,GACd,OAAiB,MAAVA,EAAiB,GAAK+pF,GAAW/pF,EAAQoE,GAAKpE,GACvD,CAiNA,IAAIwvB,GAAY0yE,IAAiB,SAAS99E,EAAQqL,EAAMtpB,GAEtD,OADAspB,EAAOA,EAAKhyB,cACL2mB,GAAUje,EAAQ4nG,GAAWt+E,GAAQA,EAC9C,IAiBA,SAASs+E,GAAW1+C,GAClB,OAAO2+C,GAAWzjE,GAAS8kB,GAAQ5xD,cACrC,CAoBA,SAAS2kG,GAAO/yC,GAEd,OADAA,EAAS9kB,GAAS8kB,KACDA,EAAO5qD,QAAQu+E,GAASqH,IAAc5lF,QAAQ2gF,GAAa,GAC9E,CAqHA,IAAI6oB,GAAY/L,IAAiB,SAAS99E,EAAQqL,EAAMtpB,GACtD,OAAOie,GAAUje,EAAQ,IAAM,IAAMspB,EAAKhyB,aAC5C,IAsBIywG,GAAYhM,IAAiB,SAAS99E,EAAQqL,EAAMtpB,GACtD,OAAOie,GAAUje,EAAQ,IAAM,IAAMspB,EAAKhyB,aAC5C,IAmBI0wG,GAAapM,GAAgB,eA0NjC,IAAIqM,GAAYlM,IAAiB,SAAS99E,EAAQqL,EAAMtpB,GACtD,OAAOie,GAAUje,EAAQ,IAAM,IAAMspB,EAAKhyB,aAC5C,IA+DA,IAAI4wG,GAAYnM,IAAiB,SAAS99E,EAAQqL,EAAMtpB,GACtD,OAAOie,GAAUje,EAAQ,IAAM,IAAM6nG,GAAWv+E,EAClD,IAqiBA,IAAI6+E,GAAYpM,IAAiB,SAAS99E,EAAQqL,EAAMtpB,GACtD,OAAOie,GAAUje,EAAQ,IAAM,IAAMspB,EAAKppB,aAC5C,IAmBI2nG,GAAajM,GAAgB,eAqBjC,SAASI,GAAM9yC,EAAQk/C,EAAS3M,GAI9B,OAHAvyC,EAAS9kB,GAAS8kB,IAClBk/C,EAAU3M,EAAQ5oG,EAAYu1G,KAEdv1G,EArybpB,SAAwBq2D,GACtB,OAAOm2B,GAAiBjrE,KAAK80C,EAC/B,CAoybam/C,CAAen/C,GA1jb5B,SAAsBA,GACpB,OAAOA,EAAO+G,MAAMkvB,KAAkB,EACxC,CAwjbsCmpB,CAAap/C,GAzrcnD,SAAoBA,GAClB,OAAOA,EAAO+G,MAAMksB,KAAgB,EACtC,CAurc6DosB,CAAWr/C,GAE7DA,EAAO+G,MAAMm4C,IAAY,EAClC,CA0BA,IAAII,GAAUtR,IAAS,SAAS9V,EAAMpM,GACpC,IACE,OAAO96E,GAAMknF,EAAMvuF,EAAWmiF,EAChC,CAAE,MAAOj7E,GACP,OAAOssG,GAAQtsG,GAAKA,EAAI,IAAI2iE,GAAM3iE,EACpC,CACF,IA4BI0uG,GAAUlM,IAAS,SAAS1iG,EAAQ6uG,GAKtC,OAJAjnB,GAAUinB,GAAa,SAASr0G,GAC9BA,EAAMo8F,GAAMp8F,GACZ03F,GAAgBlyF,EAAQxF,EAAKmN,GAAK3H,EAAOxF,GAAMwF,GACjD,IACOA,CACT,IAoGA,SAAS69F,GAASllG,GAChB,OAAO,WACL,OAAOA,CACT,CACF,CAgDA,IAAIm2G,GAAOrM,KAuBPsM,GAAYtM,IAAW,GAkB3B,SAASlI,GAAS5hG,GAChB,OAAOA,CACT,CA4CA,SAASgvF,GAASJ,GAChB,OAAO+S,GAA4B,mBAAR/S,EAAqBA,EAAOuL,GAAUvL,EAjte/C,GAktepB,CAsGA,IAAIynB,GAAS3R,IAAS,SAAS3G,EAAMvb,GACnC,OAAO,SAASn7E,GACd,OAAOi4F,GAAWj4F,EAAQ02F,EAAMvb,EAClC,CACF,IAyBI8zB,GAAW5R,IAAS,SAASr9F,EAAQm7E,GACvC,OAAO,SAASub,GACd,OAAOuB,GAAWj4F,EAAQ02F,EAAMvb,EAClC,CACF,IAsCA,SAASl3E,GAAMjE,EAAQuwB,EAAQ9sB,GAC7B,IAAIvI,EAAQkJ,GAAKmsB,GACbs+E,EAAcrY,GAAcjmE,EAAQr1B,GAEzB,MAAXuI,GACEqsF,GAASv/D,KAAYs+E,EAAYz0G,SAAWc,EAAMd,UACtDqJ,EAAU8sB,EACVA,EAASvwB,EACTA,EAAStE,KACTmzG,EAAcrY,GAAcjmE,EAAQnsB,GAAKmsB,KAE3C,IAAImyC,IAAUotB,GAASrsF,IAAY,UAAWA,IAAcA,EAAQi/D,OAChE4wB,EAAS9gB,GAAWxyE,GAqBxB,OAnBA4nF,GAAUinB,GAAa,SAAS7M,GAC9B,IAAIza,EAAOh3D,EAAOyxE,GAClBhiG,EAAOgiG,GAAcza,EACjB+L,IACFtzF,EAAOnG,UAAUmoG,GAAc,WAC7B,IAAIhS,EAAWt0F,KAAKy0F,UACpB,GAAIztB,GAASstB,EAAU,CACrB,IAAI5rE,EAASpkB,EAAOtE,KAAKu0F,aAKzB,OAJc7rE,EAAO8rE,YAAc4B,GAAUp2F,KAAKw0F,cAE1CjvF,KAAK,CAAE,KAAQsmF,EAAM,KAAQjnF,UAAW,QAAWN,IAC3DokB,EAAO+rE,UAAYH,EACZ5rE,CACT,CACA,OAAOmjE,EAAKlnF,MAAML,EAAQuoF,GAAU,CAAC7sF,KAAK/C,SAAU2H,WACtD,EAEJ,IAEON,CACT,CAkCA,SAAS4lG,KAET,CA+CA,IAAIsJ,GAAOxK,GAAWpc,IA8BlB6mB,GAAYzK,GAAW5c,IAiCvBsnB,GAAW1K,GAAW/b,IAwB1B,SAAS+R,GAAShE,GAChB,OAAO2E,GAAM3E,GAAQ7N,GAAa+N,GAAMF,IAh3X1C,SAA0BA,GACxB,OAAO,SAAS12F,GACd,OAAOy2F,GAAQz2F,EAAQ02F,EACzB,CACF,CA42XmD2Y,CAAiB3Y,EACpE,CAsEA,IAAI4Y,GAAQvK,KAsCRwK,GAAaxK,IAAY,GAoB7B,SAASgC,KACP,MAAO,EACT,CAeA,SAASM,KACP,OAAO,CACT,CA8JA,IAAInjF,GAAMsgF,IAAoB,SAASgL,EAAQC,GAC7C,OAAOD,EAASC,CAClB,GAAG,GAuBCrxB,GAAOonB,GAAY,QAiBnBkK,GAASlL,IAAoB,SAASmL,EAAUC,GAClD,OAAOD,EAAWC,CACpB,GAAG,GAuBCz3B,GAAQqtB,GAAY,SAwKxB,IAgaMj1E,GAhaFs/E,GAAWrL,IAAoB,SAASsL,EAAYC,GACtD,OAAOD,EAAaC,CACtB,GAAG,GAuBCC,GAAQxK,GAAY,SAiBpByK,GAAWzL,IAAoB,SAAS0L,EAASC,GACnD,OAAOD,EAAUC,CACnB,GAAG,GAgmBH,OA1iBA3gB,GAAOvsB,MAp6MP,SAAe7jD,EAAGmoE,GAChB,GAAmB,mBAARA,EACT,MAAM,IAAI9tE,GAAUilE,GAGtB,OADAt/D,EAAIsmF,GAAUtmF,GACP,WACL,KAAMA,EAAI,EACR,OAAOmoE,EAAKlnF,MAAM3E,KAAM4E,UAE5B,CACF,EA25MAkvF,GAAO+T,IAAMA,GACb/T,GAAO/uF,OAASA,GAChB+uF,GAAOsd,SAAWA,GAClBtd,GAAOud,aAAeA,GACtBvd,GAAOwd,WAAaA,GACpBxd,GAAO7sB,GAAKA,GACZ6sB,GAAO1sB,OAASA,GAChB0sB,GAAO7nF,KAAOA,GACd6nF,GAAOof,QAAUA,GACjBpf,GAAO8a,QAAUA,GACjB9a,GAAO4gB,UAl8KP,WACE,IAAK9vG,UAAUlG,OACb,MAAO,GAET,IAAIzB,EAAQ2H,UAAU,GACtB,OAAOrG,GAAQtB,GAASA,EAAQ,CAACA,EACnC,EA67KA62F,GAAO9sB,MAAQA,GACf8sB,GAAO6gB,MApgTP,SAAe53B,EAAOqF,EAAM8jB,GAExB9jB,GADG8jB,EAAQC,GAAeppB,EAAOqF,EAAM8jB,GAAS9jB,IAAS9kF,GAClD,EAEAk1F,GAAUwX,GAAU5nB,GAAO,GAEpC,IAAI1jF,EAAkB,MAATq+E,EAAgB,EAAIA,EAAMr+E,OACvC,IAAKA,GAAU0jF,EAAO,EACpB,MAAO,GAMT,IAJA,IAAI33E,EAAQ,EACR8hF,EAAW,EACX7jE,EAASpqB,EAAMwzF,GAAWpzF,EAAS0jF,IAEhC33E,EAAQ/L,GACbgqB,EAAO6jE,KAAc8V,GAAUtlB,EAAOtyE,EAAQA,GAAS23E,GAEzD,OAAO15D,CACT,EAm/SAorE,GAAO8gB,QAl+SP,SAAiB73B,GAMf,IALA,IAAItyE,GAAS,EACT/L,EAAkB,MAATq+E,EAAgB,EAAIA,EAAMr+E,OACnC6tF,EAAW,EACX7jE,EAAS,KAEJje,EAAQ/L,GAAQ,CACvB,IAAIzB,EAAQ8/E,EAAMtyE,GACdxN,IACFyrB,EAAO6jE,KAActvF,EAEzB,CACA,OAAOyrB,CACT,EAs9SAorE,GAAOnyF,OA97SP,WACE,IAAIjD,EAASkG,UAAUlG,OACvB,IAAKA,EACH,MAAO,GAMT,IAJA,IAAI+gF,EAAOnhF,EAAMI,EAAS,GACtBq+E,EAAQn4E,UAAU,GAClB6F,EAAQ/L,EAEL+L,KACLg1E,EAAKh1E,EAAQ,GAAK7F,UAAU6F,GAE9B,OAAOoiF,GAAUtuF,GAAQw+E,GAASqZ,GAAUrZ,GAAS,CAACA,GAAQwd,GAAY9a,EAAM,GAClF,EAk7SAqU,GAAO+gB,KA3tCP,SAAchb,GACZ,IAAIn7F,EAAkB,MAATm7F,EAAgB,EAAIA,EAAMn7F,OACnCkqG,EAAajI,KASjB,OAPA9G,EAASn7F,EAAckuF,GAASiN,GAAO,SAASoQ,GAC9C,GAAsB,mBAAXA,EAAK,GACd,MAAM,IAAIlsF,GAAUilE,GAEtB,MAAO,CAAC4lB,EAAWqB,EAAK,IAAKA,EAAK,GACpC,IALkB,GAOXtI,IAAS,SAASliB,GAEvB,IADA,IAAIh1E,GAAS,IACJA,EAAQ/L,GAAQ,CACvB,IAAIurG,EAAOpQ,EAAMpvF,GACjB,GAAI9F,GAAMslG,EAAK,GAAIjqG,KAAMy/E,GACvB,OAAO96E,GAAMslG,EAAK,GAAIjqG,KAAMy/E,EAEhC,CACF,GACF,EAwsCAqU,GAAOghB,SA9qCP,SAAkBjgF,GAChB,OAz5YF,SAAsBA,GACpB,IAAIr1B,EAAQkJ,GAAKmsB,GACjB,OAAO,SAASvwB,GACd,OAAO80F,GAAe90F,EAAQuwB,EAAQr1B,EACxC,CACF,CAo5YSu1G,CAAa3d,GAAUviE,EA/ieZ,GAgjepB,EA6qCAi/D,GAAOqO,SAAWA,GAClBrO,GAAOsa,QAAUA,GACjBta,GAAO5C,OAtuHP,SAAgB/yF,EAAW62G,GACzB,IAAItsF,EAASyrE,GAAWh2F,GACxB,OAAqB,MAAd62G,EAAqBtsF,EAASouE,GAAWpuE,EAAQssF,EAC1D,EAouHAlhB,GAAOmhB,MAzuMP,SAASA,EAAMppB,EAAMic,EAAO5B,GAE1B,IAAIx9E,EAAS2hF,GAAWxe,EA7+TN,EA6+T6BvuF,EAAWA,EAAWA,EAAWA,EAAWA,EAD3FwqG,EAAQ5B,EAAQ5oG,EAAYwqG,GAG5B,OADAp/E,EAAOyd,YAAc8uE,EAAM9uE,YACpBzd,CACT,EAquMAorE,GAAOohB,WA7rMP,SAASA,EAAWrpB,EAAMic,EAAO5B,GAE/B,IAAIx9E,EAAS2hF,GAAWxe,EAAM1I,EAAuB7lF,EAAWA,EAAWA,EAAWA,EAAWA,EADjGwqG,EAAQ5B,EAAQ5oG,EAAYwqG,GAG5B,OADAp/E,EAAOyd,YAAc+uE,EAAW/uE,YACzBzd,CACT,EAyrMAorE,GAAO50E,SAAWA,GAClB40E,GAAO/D,SAAWA,GAClB+D,GAAO2d,aAAeA,GACtB3d,GAAOoc,MAAQA,GACfpc,GAAOqc,MAAQA,GACfrc,GAAOlhE,WAAaA,GACpBkhE,GAAO8Y,aAAeA,GACtB9Y,GAAO+Y,eAAiBA,GACxB/Y,GAAOqhB,KAt0SP,SAAcp4B,EAAOr5D,EAAGwiF,GACtB,IAAIxnG,EAAkB,MAATq+E,EAAgB,EAAIA,EAAMr+E,OACvC,OAAKA,EAIE2jG,GAAUtlB,GADjBr5D,EAAKwiF,GAASxiF,IAAMpmB,EAAa,EAAI0sG,GAAUtmF,IACnB,EAAI,EAAIA,EAAGhlB,GAH9B,EAIX,EAg0SAo1F,GAAOshB,UArySP,SAAmBr4B,EAAOr5D,EAAGwiF,GAC3B,IAAIxnG,EAAkB,MAATq+E,EAAgB,EAAIA,EAAMr+E,OACvC,OAAKA,EAKE2jG,GAAUtlB,EAAO,GADxBr5D,EAAIhlB,GADJglB,EAAKwiF,GAASxiF,IAAMpmB,EAAa,EAAI0sG,GAAUtmF,KAEhB,EAAI,EAAIA,GAJ9B,EAKX,EA8xSAowE,GAAOuhB,eAzvSP,SAAwBt4B,EAAOsP,GAC7B,OAAQtP,GAASA,EAAMr+E,OACnBmlG,GAAU9mB,EAAO4jB,GAAYtU,EAAW,IAAI,GAAM,GAClD,EACN,EAsvSAyH,GAAOwhB,UAjtSP,SAAmBv4B,EAAOsP,GACxB,OAAQtP,GAASA,EAAMr+E,OACnBmlG,GAAU9mB,EAAO4jB,GAAYtU,EAAW,IAAI,GAC5C,EACN,EA8sSAyH,GAAO36D,KA/qSP,SAAc4jD,EAAO9/E,EAAOiwB,EAAOK,GACjC,IAAI7uB,EAAkB,MAATq+E,EAAgB,EAAIA,EAAMr+E,OACvC,OAAKA,GAGDwuB,GAAyB,iBAATA,GAAqBi5E,GAAeppB,EAAO9/E,EAAOiwB,KACpEA,EAAQ,EACRK,EAAM7uB,GAzvIV,SAAkBq+E,EAAO9/E,EAAOiwB,EAAOK,GACrC,IAAI7uB,EAASq+E,EAAMr+E,OAWnB,KATAwuB,EAAQ88E,GAAU98E,IACN,IACVA,GAASA,EAAQxuB,EAAS,EAAKA,EAASwuB,IAE1CK,EAAOA,IAAQjwB,GAAaiwB,EAAM7uB,EAAUA,EAASsrG,GAAUz8E,IACrD,IACRA,GAAO7uB,GAET6uB,EAAML,EAAQK,EAAM,EAAI2jF,GAAS3jF,GAC1BL,EAAQK,GACbwvD,EAAM7vD,KAAWjwB,EAEnB,OAAO8/E,CACT,CA2uISw4B,CAASx4B,EAAO9/E,EAAOiwB,EAAOK,IAN5B,EAOX,EAsqSAumE,GAAO9vF,OA3vOP,SAAgBqpF,EAAYhB,GAE1B,OADW9tF,GAAQ8uF,GAAcf,GAAcgO,IACnCjN,EAAYsT,GAAYtU,EAAW,GACjD,EAyvOAyH,GAAOjlC,QAvqOP,SAAiBw+B,EAAYpB,GAC3B,OAAOsO,GAAY/vF,GAAI6iF,EAAYpB,GAAW,EAChD,EAsqOA6H,GAAO0hB,YAhpOP,SAAqBnoB,EAAYpB,GAC/B,OAAOsO,GAAY/vF,GAAI6iF,EAAYpB,GAAWzI,EAChD,EA+oOAsQ,GAAO2hB,aAxnOP,SAAsBpoB,EAAYpB,EAAUuO,GAE1C,OADAA,EAAQA,IAAUl9F,EAAY,EAAI0sG,GAAUxP,GACrCD,GAAY/vF,GAAI6iF,EAAYpB,GAAWuO,EAChD,EAsnOA1G,GAAOoX,QAAUA,GACjBpX,GAAO4hB,YAviSP,SAAqB34B,GAEnB,OADsB,MAATA,EAAgB,EAAIA,EAAMr+E,QACvB67F,GAAYxd,EAAOyG,GAAY,EACjD,EAqiSAsQ,GAAO6hB,aA/gSP,SAAsB54B,EAAOyd,GAE3B,OADsB,MAATzd,EAAgB,EAAIA,EAAMr+E,QAKhC67F,GAAYxd,EADnByd,EAAQA,IAAUl9F,EAAY,EAAI0sG,GAAUxP,IAFnC,EAIX,EAygSA1G,GAAO8hB,KAz9LP,SAAc/pB,GACZ,OAAOwe,GAAWxe,EA5wUD,IA6wUnB,EAw9LAiI,GAAOsf,KAAOA,GACdtf,GAAOuf,UAAYA,GACnBvf,GAAO+hB,UA3/RP,SAAmBhc,GAKjB,IAJA,IAAIpvF,GAAS,EACT/L,EAAkB,MAATm7F,EAAgB,EAAIA,EAAMn7F,OACnCgqB,EAAS,CAAC,IAELje,EAAQ/L,GAAQ,CACvB,IAAIurG,EAAOpQ,EAAMpvF,GACjBie,EAAOuhF,EAAK,IAAMA,EAAK,EACzB,CACA,OAAOvhF,CACT,EAk/RAorE,GAAOgiB,UA38GP,SAAmBxxG,GACjB,OAAiB,MAAVA,EAAiB,GAAKw2F,GAAcx2F,EAAQoE,GAAKpE,GAC1D,EA08GAwvF,GAAOiiB,YAj7GP,SAAqBzxG,GACnB,OAAiB,MAAVA,EAAiB,GAAKw2F,GAAcx2F,EAAQ2zF,GAAO3zF,GAC5D,EAg7GAwvF,GAAOya,QAAUA,GACjBza,GAAOnjB,QA56RP,SAAiBoM,GAEf,OADsB,MAATA,EAAgB,EAAIA,EAAMr+E,QACvB2jG,GAAUtlB,EAAO,GAAI,GAAK,EAC5C,EA06RA+W,GAAOkZ,aAAeA,GACtBlZ,GAAOoZ,eAAiBA,GACxBpZ,GAAOqZ,iBAAmBA,GAC1BrZ,GAAO6d,OAASA,GAChB7d,GAAO8d,SAAWA,GAClB9d,GAAO0a,UAAYA,GACnB1a,GAAO7H,SAAWA,GAClB6H,GAAO2a,MAAQA,GACf3a,GAAOprF,KAAOA,GACdorF,GAAOmE,OAASA,GAChBnE,GAAOtpF,IAAMA,GACbspF,GAAOkiB,QA1rGP,SAAiB1xG,EAAQ2nF,GACvB,IAAIvjE,EAAS,CAAC,EAMd,OALAujE,EAAW0U,GAAY1U,EAAU,GAEjC+N,GAAW11F,GAAQ,SAASrH,EAAO6B,EAAKwF,GACtCkyF,GAAgB9tE,EAAQujE,EAAShvF,EAAO6B,EAAKwF,GAASrH,EACxD,IACOyrB,CACT,EAmrGAorE,GAAOmiB,UArpGP,SAAmB3xG,EAAQ2nF,GACzB,IAAIvjE,EAAS,CAAC,EAMd,OALAujE,EAAW0U,GAAY1U,EAAU,GAEjC+N,GAAW11F,GAAQ,SAASrH,EAAO6B,EAAKwF,GACtCkyF,GAAgB9tE,EAAQ5pB,EAAKmtF,EAAShvF,EAAO6B,EAAKwF,GACpD,IACOokB,CACT,EA8oGAorE,GAAO/mD,QAphCP,SAAiBlY,GACf,OAAOkqE,GAAY3H,GAAUviE,EAxveX,GAyvepB,EAmhCAi/D,GAAOoiB,gBAh/BP,SAAyBlb,EAAMyD,GAC7B,OAAOK,GAAoB9D,EAAM5D,GAAUqH,EA7xezB,GA8xepB,EA++BA3K,GAAOyY,QAAUA,GACjBzY,GAAOge,MAAQA,GACfhe,GAAO4d,UAAYA,GACnB5d,GAAOwf,OAASA,GAChBxf,GAAOyf,SAAWA,GAClBzf,GAAOvrF,MAAQA,GACfurF,GAAOyc,OAASA,GAChBzc,GAAOqiB,OAzzBP,SAAgBzyF,GAEd,OADAA,EAAIsmF,GAAUtmF,GACPi+E,IAAS,SAASliB,GACvB,OAAO8gB,GAAQ9gB,EAAM/7D,EACvB,GACF,EAqzBAowE,GAAOie,KAAOA,GACdje,GAAOsiB,OAnhGP,SAAgB9xG,EAAQ+nF,GACtB,OAAO6lB,GAAO5tG,EAAQisG,GAAO5P,GAAYtU,IAC3C,EAkhGAyH,GAAOuiB,KA73LP,SAAcxqB,GACZ,OAAOzkB,GAAO,EAAGykB,EACnB,EA43LAiI,GAAOwiB,QAr4NP,SAAiBjpB,EAAYoT,EAAWC,EAAQwF,GAC9C,OAAkB,MAAd7Y,EACK,IAEJ9uF,GAAQkiG,KACXA,EAAyB,MAAbA,EAAoB,GAAK,CAACA,IAGnCliG,GADLmiG,EAASwF,EAAQ5oG,EAAYojG,KAE3BA,EAAmB,MAAVA,EAAiB,GAAK,CAACA,IAE3BF,GAAYnT,EAAYoT,EAAWC,GAC5C,EA03NA5M,GAAO0f,KAAOA,GACd1f,GAAO0c,SAAWA,GAClB1c,GAAO2f,UAAYA,GACnB3f,GAAO4f,SAAWA,GAClB5f,GAAO6c,QAAUA,GACjB7c,GAAO8c,aAAeA,GACtB9c,GAAO4a,UAAYA,GACnB5a,GAAO9D,KAAOA,GACd8D,GAAOoe,OAASA,GAChBpe,GAAOkL,SAAWA,GAClBlL,GAAOyiB,WA/rBP,SAAoBjyG,GAClB,OAAO,SAAS02F,GACd,OAAiB,MAAV12F,EAAiBhH,EAAYy9F,GAAQz2F,EAAQ02F,EACtD,CACF,EA4rBAlH,GAAOsZ,KAAOA,GACdtZ,GAAOuZ,QAAUA,GACjBvZ,GAAO0iB,UApsRP,SAAmBz5B,EAAOttE,EAAQw8E,GAChC,OAAQlP,GAASA,EAAMr+E,QAAU+Q,GAAUA,EAAO/Q,OAC9C4iG,GAAYvkB,EAAOttE,EAAQkxF,GAAY1U,EAAU,IACjDlP,CACN,EAisRA+W,GAAO2iB,YAxqRP,SAAqB15B,EAAOttE,EAAQk9E,GAClC,OAAQ5P,GAASA,EAAMr+E,QAAU+Q,GAAUA,EAAO/Q,OAC9C4iG,GAAYvkB,EAAOttE,EAAQnS,EAAWqvF,GACtC5P,CACN,EAqqRA+W,GAAOwZ,OAASA,GAChBxZ,GAAO8f,MAAQA,GACf9f,GAAO+f,WAAaA,GACpB/f,GAAO+c,MAAQA,GACf/c,GAAO/jE,OAxvNP,SAAgBs9D,EAAYhB,GAE1B,OADW9tF,GAAQ8uF,GAAcf,GAAcgO,IACnCjN,EAAYkjB,GAAO5P,GAAYtU,EAAW,IACxD,EAsvNAyH,GAAOz8E,OAzmRP,SAAgB0lE,EAAOsP,GACrB,IAAI3jE,EAAS,GACb,IAAMq0D,IAASA,EAAMr+E,OACnB,OAAOgqB,EAET,IAAIje,GAAS,EACT+2F,EAAU,GACV9iG,EAASq+E,EAAMr+E,OAGnB,IADA2tF,EAAYsU,GAAYtU,EAAW,KAC1B5hF,EAAQ/L,GAAQ,CACvB,IAAIzB,EAAQ8/E,EAAMtyE,GACd4hF,EAAUpvF,EAAOwN,EAAOsyE,KAC1Br0D,EAAOnjB,KAAKtI,GACZukG,EAAQj8F,KAAKkF,GAEjB,CAEA,OADA82F,GAAWxkB,EAAOykB,GACX94E,CACT,EAulRAorE,GAAOx5B,KAluLP,SAAcuxB,EAAM3+D,GAClB,GAAmB,mBAAR2+D,EACT,MAAM,IAAI9tE,GAAUilE,GAGtB,OAAO2e,GAAS9V,EADhB3+D,EAAQA,IAAU5vB,EAAY4vB,EAAQ88E,GAAU98E,GAElD,EA6tLA4mE,GAAO1X,QAAUA,GACjB0X,GAAO4iB,WAhtNP,SAAoBrpB,EAAY3pE,EAAGwiF,GAOjC,OALExiF,GADGwiF,EAAQC,GAAe9Y,EAAY3pE,EAAGwiF,GAASxiF,IAAMpmB,GACpD,EAEA0sG,GAAUtmF,IAELnlB,GAAQ8uF,GAAc6I,GAAkB6L,IACvC1U,EAAY3pE,EAC1B,EAysNAowE,GAAO91D,IAv6FP,SAAa15B,EAAQ02F,EAAM/9F,GACzB,OAAiB,MAAVqH,EAAiBA,EAAS+8F,GAAQ/8F,EAAQ02F,EAAM/9F,EACzD,EAs6FA62F,GAAO6iB,QA54FP,SAAiBryG,EAAQ02F,EAAM/9F,EAAOq6F,GAEpC,OADAA,EAAkC,mBAAdA,EAA2BA,EAAah6F,EAC3C,MAAVgH,EAAiBA,EAAS+8F,GAAQ/8F,EAAQ02F,EAAM/9F,EAAOq6F,EAChE,EA04FAxD,GAAO8iB,QA1rNP,SAAiBvpB,GAEf,OADW9uF,GAAQ8uF,GAAciJ,GAAe8L,IACpC/U,EACd,EAwrNAyG,GAAOlpF,MAhjRP,SAAemyE,EAAO7vD,EAAOK,GAC3B,IAAI7uB,EAAkB,MAATq+E,EAAgB,EAAIA,EAAMr+E,OACvC,OAAKA,GAGD6uB,GAAqB,iBAAPA,GAAmB44E,GAAeppB,EAAO7vD,EAAOK,IAChEL,EAAQ,EACRK,EAAM7uB,IAGNwuB,EAAiB,MAATA,EAAgB,EAAI88E,GAAU98E,GACtCK,EAAMA,IAAQjwB,EAAYoB,EAASsrG,GAAUz8E,IAExC80E,GAAUtlB,EAAO7vD,EAAOK,IAVtB,EAWX,EAmiRAumE,GAAO6a,OAASA,GAChB7a,GAAO+iB,WAx3QP,SAAoB95B,GAClB,OAAQA,GAASA,EAAMr+E,OACnB2kG,GAAetmB,GACf,EACN,EAq3QA+W,GAAOgjB,aAn2QP,SAAsB/5B,EAAOkP,GAC3B,OAAQlP,GAASA,EAAMr+E,OACnB2kG,GAAetmB,EAAO4jB,GAAY1U,EAAU,IAC5C,EACN,EAg2QA6H,GAAOrrF,MA5hEP,SAAekrD,EAAQojD,EAAWvpF,GAKhC,OAJIA,GAAyB,iBAATA,GAAqB24E,GAAexyC,EAAQojD,EAAWvpF,KACzEupF,EAAYvpF,EAAQlwB,IAEtBkwB,EAAQA,IAAUlwB,EAAYqmF,EAAmBn2D,IAAU,IAI3DmmC,EAAS9kB,GAAS8kB,MAEQ,iBAAbojD,GACO,MAAbA,IAAsBr8B,GAASq8B,OAEpCA,EAAYxT,GAAawT,KACPjoB,GAAWn7B,GACpB8wC,GAAUjV,GAAc77B,GAAS,EAAGnmC,GAGxCmmC,EAAOlrD,MAAMsuG,EAAWvpF,GAZtB,EAaX,EA0gEAsmE,GAAOkjB,OAnsLP,SAAgBnrB,EAAM3+D,GACpB,GAAmB,mBAAR2+D,EACT,MAAM,IAAI9tE,GAAUilE,GAGtB,OADA91D,EAAiB,MAATA,EAAgB,EAAIslE,GAAUwX,GAAU98E,GAAQ,GACjDy0E,IAAS,SAASliB,GACvB,IAAI1C,EAAQ0C,EAAKvyD,GACb0+E,EAAYnH,GAAUhlB,EAAM,EAAGvyD,GAKnC,OAHI6vD,GACF8P,GAAU+e,EAAW7uB,GAEhBp4E,GAAMknF,EAAM7rF,KAAM4rG,EAC3B,GACF,EAsrLA9X,GAAO1c,KAl1QP,SAAc2F,GACZ,IAAIr+E,EAAkB,MAATq+E,EAAgB,EAAIA,EAAMr+E,OACvC,OAAOA,EAAS2jG,GAAUtlB,EAAO,EAAGr+E,GAAU,EAChD,EAg1QAo1F,GAAOxpE,KArzQP,SAAcyyD,EAAOr5D,EAAGwiF,GACtB,OAAMnpB,GAASA,EAAMr+E,OAId2jG,GAAUtlB,EAAO,GADxBr5D,EAAKwiF,GAASxiF,IAAMpmB,EAAa,EAAI0sG,GAAUtmF,IAChB,EAAI,EAAIA,GAH9B,EAIX,EAgzQAowE,GAAOmjB,UArxQP,SAAmBl6B,EAAOr5D,EAAGwiF,GAC3B,IAAIxnG,EAAkB,MAATq+E,EAAgB,EAAIA,EAAMr+E,OACvC,OAAKA,EAKE2jG,GAAUtlB,GADjBr5D,EAAIhlB,GADJglB,EAAKwiF,GAASxiF,IAAMpmB,EAAa,EAAI0sG,GAAUtmF,KAEnB,EAAI,EAAIA,EAAGhlB,GAJ9B,EAKX,EA8wQAo1F,GAAOojB,eAzuQP,SAAwBn6B,EAAOsP,GAC7B,OAAQtP,GAASA,EAAMr+E,OACnBmlG,GAAU9mB,EAAO4jB,GAAYtU,EAAW,IAAI,GAAO,GACnD,EACN,EAsuQAyH,GAAOqjB,UAjsQP,SAAmBp6B,EAAOsP,GACxB,OAAQtP,GAASA,EAAMr+E,OACnBmlG,GAAU9mB,EAAO4jB,GAAYtU,EAAW,IACxC,EACN,EA8rQAyH,GAAOsjB,IApuPP,SAAan6G,EAAOixG,GAElB,OADAA,EAAYjxG,GACLA,CACT,EAkuPA62F,GAAOujB,SA9oLP,SAAkBxrB,EAAM3L,EAAMn4E,GAC5B,IAAIqnG,GAAU,EACV7I,GAAW,EAEf,GAAmB,mBAAR1a,EACT,MAAM,IAAI9tE,GAAUilE,GAMtB,OAJIoR,GAASrsF,KACXqnG,EAAU,YAAarnG,IAAYA,EAAQqnG,QAAUA,EACrD7I,EAAW,aAAcx+F,IAAYA,EAAQw+F,SAAWA,GAEnDrnF,GAAS2sE,EAAM3L,EAAM,CAC1B,QAAWkvB,EACX,QAAWlvB,EACX,SAAYqmB,GAEhB,EA+nLAzS,GAAOqT,KAAOA,GACdrT,GAAOviE,QAAUA,GACjBuiE,GAAOqe,QAAUA,GACjBre,GAAOse,UAAYA,GACnBte,GAAOwjB,OArfP,SAAgBr6G,GACd,OAAIsB,GAAQtB,GACH2vF,GAAS3vF,EAAOi+F,IAElBb,GAASp9F,GAAS,CAACA,GAASm5F,GAAUmO,GAAa11D,GAAS5xC,IACrE,EAifA62F,GAAOuM,cAAgBA,GACvBvM,GAAO7E,UA10FP,SAAmB3qF,EAAQ2nF,EAAUzkD,GACnC,IAAIiuD,EAAQl3F,GAAQ+F,GAChBizG,EAAY9hB,GAAStD,GAAS7tF,IAAWsnF,GAAatnF,GAG1D,GADA2nF,EAAW0U,GAAY1U,EAAU,GACd,MAAfzkD,EAAqB,CACvB,IAAI6wD,EAAO/zF,GAAUA,EAAOpG,YAE1BspC,EADE+vE,EACY9hB,EAAQ,IAAI4C,EAAO,GAE1BjE,GAAS9vF,IACFwyE,GAAWuhB,GAAQlE,GAAWpD,GAAazsF,IAG3C,CAAC,CAEnB,CAIA,OAHCizG,EAAYrrB,GAAY8N,IAAY11F,GAAQ,SAASrH,EAAOwN,EAAOnG,GAClE,OAAO2nF,EAASzkD,EAAavqC,EAAOwN,EAAOnG,EAC7C,IACOkjC,CACT,EAszFAssD,GAAO0jB,MArnLP,SAAe3rB,GACb,OAAOgc,GAAIhc,EAAM,EACnB,EAonLAiI,GAAOyZ,MAAQA,GACfzZ,GAAO0Z,QAAUA,GACjB1Z,GAAO2Z,UAAYA,GACnB3Z,GAAO2jB,KAzmQP,SAAc16B,GACZ,OAAQA,GAASA,EAAMr+E,OAAU8kG,GAASzmB,GAAS,EACrD,EAwmQA+W,GAAO4jB,OA/kQP,SAAgB36B,EAAOkP,GACrB,OAAQlP,GAASA,EAAMr+E,OAAU8kG,GAASzmB,EAAO4jB,GAAY1U,EAAU,IAAM,EAC/E,EA8kQA6H,GAAO6jB,SAxjQP,SAAkB56B,EAAO4P,GAEvB,OADAA,EAAkC,mBAAdA,EAA2BA,EAAarvF,EACpDy/E,GAASA,EAAMr+E,OAAU8kG,GAASzmB,EAAOz/E,EAAWqvF,GAAc,EAC5E,EAsjQAmH,GAAO8jB,MAhyFP,SAAetzG,EAAQ02F,GACrB,OAAiB,MAAV12F,GAAwBm9F,GAAUn9F,EAAQ02F,EACnD,EA+xFAlH,GAAO4Z,MAAQA,GACf5Z,GAAO6Z,UAAYA,GACnB7Z,GAAO+jB,OApwFP,SAAgBvzG,EAAQ02F,EAAM4I,GAC5B,OAAiB,MAAVt/F,EAAiBA,EAASq/F,GAAWr/F,EAAQ02F,EAAMsJ,GAAaV,GACzE,EAmwFA9P,GAAOgkB,WAzuFP,SAAoBxzG,EAAQ02F,EAAM4I,EAAStM,GAEzC,OADAA,EAAkC,mBAAdA,EAA2BA,EAAah6F,EAC3C,MAAVgH,EAAiBA,EAASq/F,GAAWr/F,EAAQ02F,EAAMsJ,GAAaV,GAAUtM,EACnF,EAuuFAxD,GAAOrkF,OAASA,GAChBqkF,GAAOikB,SAhrFP,SAAkBzzG,GAChB,OAAiB,MAAVA,EAAiB,GAAK+pF,GAAW/pF,EAAQ2zF,GAAO3zF,GACzD,EA+qFAwvF,GAAO8Z,QAAUA,GACjB9Z,GAAO2S,MAAQA,GACf3S,GAAOkkB,KA3mLP,SAAc/6G,EAAO0G,GACnB,OAAOgtG,GAAQrM,GAAa3gG,GAAU1G,EACxC,EA0mLA62F,GAAO+Z,IAAMA,GACb/Z,GAAOga,MAAQA,GACfha,GAAOia,QAAUA,GACjBja,GAAOka,IAAMA,GACbla,GAAOmkB,UAj3PP,SAAmBz4G,EAAOiQ,GACxB,OAAOy0F,GAAc1kG,GAAS,GAAIiQ,GAAU,GAAIgnF,GAClD,EAg3PA3C,GAAOokB,cA/1PP,SAAuB14G,EAAOiQ,GAC5B,OAAOy0F,GAAc1kG,GAAS,GAAIiQ,GAAU,GAAI4xF,GAClD,EA81PAvN,GAAOma,QAAUA,GAGjBna,GAAOmB,QAAUkd,GACjBre,GAAOqkB,UAAY/F,GACnBte,GAAOruF,OAAS2rG,GAChBtd,GAAOskB,WAAa/G,GAGpB9oG,GAAMurF,GAAQA,IAKdA,GAAOtrE,IAAMA,GACbsrE,GAAOmf,QAAUA,GACjBnf,GAAOhgE,UAAYA,GACnBggE,GAAOue,WAAaA,GACpBve,GAAOpR,KAAOA,GACdoR,GAAOukB,MAprFP,SAAelkD,EAAQ+iC,EAAOC,GAa5B,OAZIA,IAAU75F,IACZ65F,EAAQD,EACRA,EAAQ55F,GAEN65F,IAAU75F,IAEZ65F,GADAA,EAAQsS,GAAStS,KACCA,EAAQA,EAAQ,GAEhCD,IAAU55F,IAEZ45F,GADAA,EAAQuS,GAASvS,KACCA,EAAQA,EAAQ,GAE7Bb,GAAUoT,GAASt1C,GAAS+iC,EAAOC,EAC5C,EAuqFArD,GAAO6Y,MA7jLP,SAAe1vG,GACb,OAAOm6F,GAAUn6F,EArzVI,EAszVvB,EA4jLA62F,GAAOwkB,UApgLP,SAAmBr7G,GACjB,OAAOm6F,GAAUn6F,EAAO+0G,EAC1B,EAmgLAle,GAAOykB,cAr+KP,SAAuBt7G,EAAOq6F,GAE5B,OAAOF,GAAUn6F,EAAO+0G,EADxB1a,EAAkC,mBAAdA,EAA2BA,EAAah6F,EAE9D,EAm+KAw2F,GAAO0kB,UA7hLP,SAAmBv7G,EAAOq6F,GAExB,OAAOF,GAAUn6F,EAz1VI,EAw1VrBq6F,EAAkC,mBAAdA,EAA2BA,EAAah6F,EAE9D,EA2hLAw2F,GAAO2kB,WA18KP,SAAoBn0G,EAAQuwB,GAC1B,OAAiB,MAAVA,GAAkBukE,GAAe90F,EAAQuwB,EAAQnsB,GAAKmsB,GAC/D,EAy8KAi/D,GAAO4S,OAASA,GAChB5S,GAAO4kB,UA1xCP,SAAmBz7G,EAAO8rG,GACxB,OAAiB,MAAT9rG,GAAiBA,GAAUA,EAAS8rG,EAAe9rG,CAC7D,EAyxCA62F,GAAOkgB,OAASA,GAChBlgB,GAAO3lD,SAz9EP,SAAkBwlB,EAAQt2C,EAAQyc,GAChC65B,EAAS9kB,GAAS8kB,GAClBt2C,EAASkmF,GAAalmF,GAEtB,IAAI3e,EAASi1D,EAAOj1D,OAKhB6uB,EAJJuM,EAAWA,IAAax8B,EACpBoB,EACA23F,GAAU2T,GAAUlwE,GAAW,EAAGp7B,GAItC,OADAo7B,GAAYzc,EAAO3e,SACA,GAAKi1D,EAAO/oD,MAAMkvB,EAAUvM,IAAQlQ,CACzD,EA88EAy2E,GAAOlgC,GAAKA,GACZkgC,GAAO6kB,OAj7EP,SAAgBhlD,GAEd,OADAA,EAAS9kB,GAAS8kB,KACAmyB,EAAmBjnE,KAAK80C,GACtCA,EAAO5qD,QAAQ68E,EAAiBgJ,IAChCj7B,CACN,EA66EAmgC,GAAO8kB,aA55EP,SAAsBjlD,GAEpB,OADAA,EAAS9kB,GAAS8kB,KACA2yB,GAAgBznE,KAAK80C,GACnCA,EAAO5qD,QAAQs9E,GAAc,QAC7B1yB,CACN,EAw5EAmgC,GAAOh6C,MA57OP,SAAeuzC,EAAYhB,EAAW6Z,GACpC,IAAIra,EAAOttF,GAAQ8uF,GAAcjB,GAAa+N,GAI9C,OAHI+L,GAASC,GAAe9Y,EAAYhB,EAAW6Z,KACjD7Z,EAAY/uF,GAEPuuF,EAAKwB,EAAYsT,GAAYtU,EAAW,GACjD,EAu7OAyH,GAAOjzF,KAAOA,GACdizF,GAAO7vE,UAAYA,GACnB6vE,GAAO+kB,QArxHP,SAAiBv0G,EAAQ+nF,GACvB,OAAOe,GAAY9oF,EAAQq8F,GAAYtU,EAAW,GAAI2N,GACxD,EAoxHAlG,GAAOua,SAAWA,GAClBva,GAAOgZ,cAAgBA,GACvBhZ,GAAOglB,YAjvHP,SAAqBx0G,EAAQ+nF,GAC3B,OAAOe,GAAY9oF,EAAQq8F,GAAYtU,EAAW,GAAI6N,GACxD,EAgvHApG,GAAOrX,MAAQA,GACfqX,GAAOlwF,QAAUA,GACjBkwF,GAAOwa,aAAeA,GACtBxa,GAAOilB,MArtHP,SAAez0G,EAAQ2nF,GACrB,OAAiB,MAAV3nF,EACHA,EACAq2F,GAAQr2F,EAAQq8F,GAAY1U,EAAU,GAAIgM,GAChD,EAktHAnE,GAAOklB,WAtrHP,SAAoB10G,EAAQ2nF,GAC1B,OAAiB,MAAV3nF,EACHA,EACAu2F,GAAav2F,EAAQq8F,GAAY1U,EAAU,GAAIgM,GACrD,EAmrHAnE,GAAOmlB,OArpHP,SAAgB30G,EAAQ2nF,GACtB,OAAO3nF,GAAU01F,GAAW11F,EAAQq8F,GAAY1U,EAAU,GAC5D,EAopHA6H,GAAOolB,YAxnHP,SAAqB50G,EAAQ2nF,GAC3B,OAAO3nF,GAAU41F,GAAgB51F,EAAQq8F,GAAY1U,EAAU,GACjE,EAunHA6H,GAAO5/D,IAAMA,GACb4/D,GAAOz/B,GAAKA,GACZy/B,GAAO1/B,IAAMA,GACb0/B,GAAOphD,IAzgHP,SAAapuC,EAAQ02F,GACnB,OAAiB,MAAV12F,GAAkBgnG,GAAQhnG,EAAQ02F,EAAMa,GACjD,EAwgHA/H,GAAO+L,MAAQA,GACf/L,GAAOiZ,KAAOA,GACdjZ,GAAO+K,SAAWA,GAClB/K,GAAOjhE,SA5pOP,SAAkBw6D,EAAYpwF,EAAOuwF,EAAW0Y,GAC9C7Y,EAAamS,GAAYnS,GAAcA,EAAa59E,GAAO49E,GAC3DG,EAAaA,IAAc0Y,EAAS8D,GAAUxc,GAAa,EAE3D,IAAI9uF,EAAS2uF,EAAW3uF,OAIxB,OAHI8uF,EAAY,IACdA,EAAYgF,GAAU9zF,EAAS8uF,EAAW,IAErClsB,GAAS+rB,GACXG,GAAa9uF,GAAU2uF,EAAWtsF,QAAQ9D,EAAOuwF,IAAc,IAC7D9uF,GAAU+tF,GAAYY,EAAYpwF,EAAOuwF,IAAc,CAChE,EAkpOAsG,GAAO/yF,QA9lSP,SAAiBg8E,EAAO9/E,EAAOuwF,GAC7B,IAAI9uF,EAAkB,MAATq+E,EAAgB,EAAIA,EAAMr+E,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAI+L,EAAqB,MAAb+iF,EAAoB,EAAIwc,GAAUxc,GAI9C,OAHI/iF,EAAQ,IACVA,EAAQ+nF,GAAU9zF,EAAS+L,EAAO,IAE7BgiF,GAAY1P,EAAO9/E,EAAOwN,EACnC,EAqlSAqpF,GAAOqlB,QAlqFP,SAAiBhlD,EAAQjnC,EAAOK,GAS9B,OARAL,EAAQo8E,GAASp8E,GACbK,IAAQjwB,GACViwB,EAAML,EACNA,EAAQ,GAERK,EAAM+7E,GAAS/7E,GArsVnB,SAAqB4mC,EAAQjnC,EAAOK,GAClC,OAAO4mC,GAAUs+B,GAAUvlE,EAAOK,IAAQ4mC,EAASq+B,GAAUtlE,EAAOK,EACtE,CAssVS6rF,CADPjlD,EAASs1C,GAASt1C,GACSjnC,EAAOK,EACpC,EAypFAumE,GAAO+d,OAASA,GAChB/d,GAAO6B,YAAcA,GACrB7B,GAAOv1F,QAAUA,GACjBu1F,GAAO3I,cAAgBA,GACvB2I,GAAO0L,YAAcA,GACrB1L,GAAOqM,kBAAoBA,GAC3BrM,GAAOulB,UAtwKP,SAAmBp8G,GACjB,OAAiB,IAAVA,IAA4B,IAAVA,GACtB82F,GAAa92F,IAAUq+F,GAAWr+F,IAAU8mF,CACjD,EAowKA+P,GAAO3B,SAAWA,GAClB2B,GAAOzI,OAASA,GAChByI,GAAOwlB,UA7sKP,SAAmBr8G,GACjB,OAAO82F,GAAa92F,IAA6B,IAAnBA,EAAM2tF,WAAmBwV,GAAcnjG,EACvE,EA4sKA62F,GAAOzmB,QAzqKP,SAAiBpwE,GACf,GAAa,MAATA,EACF,OAAO,EAET,GAAIuiG,GAAYviG,KACXsB,GAAQtB,IAA0B,iBAATA,GAA4C,mBAAhBA,EAAMyoB,QAC1DysE,GAASl1F,IAAU2uF,GAAa3uF,IAAU04F,GAAY14F,IAC1D,OAAQA,EAAMyB,OAEhB,IAAI6H,EAAMoxF,GAAO16F,GACjB,GAAIsJ,GAAO69E,GAAU79E,GAAOk+E,EAC1B,OAAQxnF,EAAMmlF,KAEhB,GAAI8c,GAAYjiG,GACd,OAAQgiG,GAAShiG,GAAOyB,OAE1B,IAAK,IAAII,KAAO7B,EACd,GAAI8B,GAAeC,KAAK/B,EAAO6B,GAC7B,OAAO,EAGX,OAAO,CACT,EAopKAg1F,GAAOylB,QAtnKP,SAAiBt8G,EAAO2+F,GACtB,OAAOa,GAAYx/F,EAAO2+F,EAC5B,EAqnKA9H,GAAO0lB,YAnlKP,SAAqBv8G,EAAO2+F,EAAOtE,GAEjC,IAAI5uE,GADJ4uE,EAAkC,mBAAdA,EAA2BA,EAAah6F,GAClCg6F,EAAWr6F,EAAO2+F,GAASt+F,EACrD,OAAOorB,IAAWprB,EAAYm/F,GAAYx/F,EAAO2+F,EAAOt+F,EAAWg6F,KAAgB5uE,CACrF,EAglKAorE,GAAOgd,QAAUA,GACjBhd,GAAOzB,SA1hKP,SAAkBp1F,GAChB,MAAuB,iBAATA,GAAqBm1F,GAAen1F,EACpD,EAyhKA62F,GAAOhd,WAAaA,GACpBgd,GAAOid,UAAYA,GACnBjd,GAAO0X,SAAWA,GAClB1X,GAAOvI,MAAQA,GACfuI,GAAO2lB,QA11JP,SAAiBn1G,EAAQuwB,GACvB,OAAOvwB,IAAWuwB,GAAUypE,GAAYh6F,EAAQuwB,EAAQ4qE,GAAa5qE,GACvE,EAy1JAi/D,GAAO4lB,YAvzJP,SAAqBp1G,EAAQuwB,EAAQyiE,GAEnC,OADAA,EAAkC,mBAAdA,EAA2BA,EAAah6F,EACrDghG,GAAYh6F,EAAQuwB,EAAQ4qE,GAAa5qE,GAASyiE,EAC3D,EAqzJAxD,GAAO6lB,MAvxJP,SAAe18G,GAIb,OAAOo/D,GAASp/D,IAAUA,IAAUA,CACtC,EAmxJA62F,GAAO8lB,SAvvJP,SAAkB38G,GAChB,GAAIyuG,GAAWzuG,GACb,MAAM,IAAIkqE,GAtsXM,mEAwsXlB,OAAOw3B,GAAa1hG,EACtB,EAmvJA62F,GAAO+lB,MAxsJP,SAAe58G,GACb,OAAgB,MAATA,CACT,EAusJA62F,GAAOgmB,OAjuJP,SAAgB78G,GACd,OAAiB,OAAVA,CACT,EAguJA62F,GAAOz3B,SAAWA,GAClBy3B,GAAOM,SAAWA,GAClBN,GAAOC,aAAeA,GACtBD,GAAOsM,cAAgBA,GACvBtM,GAAOpZ,SAAWA,GAClBoZ,GAAOimB,cArlJP,SAAuB98G,GACrB,OAAO8zG,GAAU9zG,IAAUA,IAAS,kBAAqBA,GAASwmF,CACpE,EAolJAqQ,GAAOpI,MAAQA,GACfoI,GAAOxyB,SAAWA,GAClBwyB,GAAOuG,SAAWA,GAClBvG,GAAOlI,aAAeA,GACtBkI,GAAOkmB,YAn/IP,SAAqB/8G,GACnB,OAAOA,IAAUK,CACnB,EAk/IAw2F,GAAOmmB,UA/9IP,SAAmBh9G,GACjB,OAAO82F,GAAa92F,IAAU06F,GAAO16F,IAAU2nF,CACjD,EA89IAkP,GAAOomB,UA38IP,SAAmBj9G,GACjB,OAAO82F,GAAa92F,IAn6XP,oBAm6XiBq+F,GAAWr+F,EAC3C,EA08IA62F,GAAOjpF,KAz/RP,SAAckyE,EAAOg6B,GACnB,OAAgB,MAATh6B,EAAgB,GAAKuV,GAAWtzF,KAAK+9E,EAAOg6B,EACrD,EAw/RAjjB,GAAOye,UAAYA,GACnBze,GAAOr4D,KAAOA,GACdq4D,GAAOhrF,YAh9RP,SAAqBi0E,EAAO9/E,EAAOuwF,GACjC,IAAI9uF,EAAkB,MAATq+E,EAAgB,EAAIA,EAAMr+E,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAI+L,EAAQ/L,EAKZ,OAJI8uF,IAAclwF,IAEhBmN,GADAA,EAAQu/F,GAAUxc,IACF,EAAIgF,GAAU9zF,EAAS+L,EAAO,GAAKgoF,GAAUhoF,EAAO/L,EAAS,IAExEzB,GAAUA,EArvMrB,SAA2B8/E,EAAO9/E,EAAOuwF,GAEvC,IADA,IAAI/iF,EAAQ+iF,EAAY,EACjB/iF,KACL,GAAIsyE,EAAMtyE,KAAWxN,EACnB,OAAOwN,EAGX,OAAOA,CACT,CA8uMQ0vG,CAAkBp9B,EAAO9/E,EAAOwN,GAChC8iF,GAAcxQ,EAAO4Q,GAAWljF,GAAO,EAC7C,EAo8RAqpF,GAAO0e,UAAYA,GACnB1e,GAAO2e,WAAaA,GACpB3e,GAAOv/B,GAAKA,GACZu/B,GAAOx/B,IAAMA,GACbw/B,GAAOjwD,IAhfP,SAAak5C,GACX,OAAQA,GAASA,EAAMr+E,OACnB07F,GAAard,EAAO8hB,GAAUlD,IAC9Br+F,CACN,EA6eAw2F,GAAOsmB,MApdP,SAAer9B,EAAOkP,GACpB,OAAQlP,GAASA,EAAMr+E,OACnB07F,GAAard,EAAO4jB,GAAY1U,EAAU,GAAI0P,IAC9Cr+F,CACN,EAidAw2F,GAAOumB,KAjcP,SAAct9B,GACZ,OAAO8Q,GAAS9Q,EAAO8hB,GACzB,EAgcA/K,GAAOwmB,OAvaP,SAAgBv9B,EAAOkP,GACrB,OAAO4B,GAAS9Q,EAAO4jB,GAAY1U,EAAU,GAC/C,EAsaA6H,GAAOrmB,IAlZP,SAAasP,GACX,OAAQA,GAASA,EAAMr+E,OACnB07F,GAAard,EAAO8hB,GAAUS,IAC9BhiG,CACN,EA+YAw2F,GAAOymB,MAtXP,SAAex9B,EAAOkP,GACpB,OAAQlP,GAASA,EAAMr+E,OACnB07F,GAAard,EAAO4jB,GAAY1U,EAAU,GAAIqT,IAC9ChiG,CACN,EAmXAw2F,GAAOuX,UAAYA,GACnBvX,GAAO6X,UAAYA,GACnB7X,GAAO0mB,WAztBP,WACE,MAAO,CAAC,CACV,EAwtBA1mB,GAAO2mB,WAzsBP,WACE,MAAO,EACT,EAwsBA3mB,GAAO4mB,SAzrBP,WACE,OAAO,CACT,EAwrBA5mB,GAAOqgB,SAAWA,GAClBrgB,GAAO6mB,IA77RP,SAAa59B,EAAOr5D,GAClB,OAAQq5D,GAASA,EAAMr+E,OAAU6hG,GAAQxjB,EAAOitB,GAAUtmF,IAAMpmB,CAClE,EA47RAw2F,GAAO8mB,WAliCP,WAIE,OAHIlwB,GAAKkF,IAAM5vF,OACb0qF,GAAKkF,EAAIe,IAEJ3wF,IACT,EA8hCA8zF,GAAOoW,KAAOA,GACdpW,GAAOlC,IAAMA,GACbkC,GAAO+mB,IAj5EP,SAAalnD,EAAQj1D,EAAQyqG,GAC3Bx1C,EAAS9kB,GAAS8kB,GAGlB,IAAImnD,GAFJp8G,EAASsrG,GAAUtrG,IAEM4wF,GAAW37B,GAAU,EAC9C,IAAKj1D,GAAUo8G,GAAap8G,EAC1B,OAAOi1D,EAET,IAAI6M,GAAO9hE,EAASo8G,GAAa,EACjC,OACE5R,GAAcnX,GAAYvxB,GAAM2oC,GAChCx1C,EACAu1C,GAAcpX,GAAWtxB,GAAM2oC,EAEnC,EAo4EArV,GAAOinB,OA32EP,SAAgBpnD,EAAQj1D,EAAQyqG,GAC9Bx1C,EAAS9kB,GAAS8kB,GAGlB,IAAImnD,GAFJp8G,EAASsrG,GAAUtrG,IAEM4wF,GAAW37B,GAAU,EAC9C,OAAQj1D,GAAUo8G,EAAYp8G,EACzBi1D,EAASu1C,GAAcxqG,EAASo8G,EAAW3R,GAC5Cx1C,CACN,EAo2EAmgC,GAAOhlD,SA30EP,SAAkB6kB,EAAQj1D,EAAQyqG,GAChCx1C,EAAS9kB,GAAS8kB,GAGlB,IAAImnD,GAFJp8G,EAASsrG,GAAUtrG,IAEM4wF,GAAW37B,GAAU,EAC9C,OAAQj1D,GAAUo8G,EAAYp8G,EACzBwqG,GAAcxqG,EAASo8G,EAAW3R,GAASx1C,EAC5CA,CACN,EAo0EAmgC,GAAOxlE,SA1yEP,SAAkBqlC,EAAQqnD,EAAO9U,GAM/B,OALIA,GAAkB,MAAT8U,EACXA,EAAQ,EACCA,IACTA,GAASA,GAEJroB,GAAe9jD,GAAS8kB,GAAQ5qD,QAAQw9E,GAAa,IAAKy0B,GAAS,EAC5E,EAoyEAlnB,GAAOjB,OA1rFP,SAAgBqE,EAAOC,EAAO8jB,GA2B5B,GA1BIA,GAA+B,kBAAZA,GAAyB9U,GAAejP,EAAOC,EAAO8jB,KAC3E9jB,EAAQ8jB,EAAW39G,GAEjB29G,IAAa39G,IACK,kBAAT65F,GACT8jB,EAAW9jB,EACXA,EAAQ75F,GAEe,kBAAT45F,IACd+jB,EAAW/jB,EACXA,EAAQ55F,IAGR45F,IAAU55F,GAAa65F,IAAU75F,GACnC45F,EAAQ,EACRC,EAAQ,IAGRD,EAAQoS,GAASpS,GACbC,IAAU75F,GACZ65F,EAAQD,EACRA,EAAQ,GAERC,EAAQmS,GAASnS,IAGjBD,EAAQC,EAAO,CACjB,IAAI+jB,EAAOhkB,EACXA,EAAQC,EACRA,EAAQ+jB,CACV,CACA,GAAID,GAAY/jB,EAAQ,GAAKC,EAAQ,EAAG,CACtC,IAAImV,EAAO1Z,KACX,OAAOH,GAAUyE,EAASoV,GAAQnV,EAAQD,EAAQ9M,GAAe,QAAUkiB,EAAO,IAAI5tG,OAAS,KAAOy4F,EACxG,CACA,OAAOlB,GAAWiB,EAAOC,EAC3B,EAspFArD,GAAOzqF,OA5+NP,SAAgBgkF,EAAYpB,EAAUzkD,GACpC,IAAIqkD,EAAOttF,GAAQ8uF,GAAcP,GAAckB,GAC3CjB,EAAYnoF,UAAUlG,OAAS,EAEnC,OAAOmtF,EAAKwB,EAAYsT,GAAY1U,EAAU,GAAIzkD,EAAaulD,EAAW8J,GAC5E,EAw+NA/C,GAAOqnB,YAh9NP,SAAqB9tB,EAAYpB,EAAUzkD,GACzC,IAAIqkD,EAAOttF,GAAQ8uF,GAAcL,GAAmBgB,GAChDjB,EAAYnoF,UAAUlG,OAAS,EAEnC,OAAOmtF,EAAKwB,EAAYsT,GAAY1U,EAAU,GAAIzkD,EAAaulD,EAAWkN,GAC5E,EA48NAnG,GAAOsnB,OA/wEP,SAAgBznD,EAAQjwC,EAAGwiF,GAMzB,OAJExiF,GADGwiF,EAAQC,GAAexyC,EAAQjwC,EAAGwiF,GAASxiF,IAAMpmB,GAChD,EAEA0sG,GAAUtmF,GAETg+E,GAAW7yD,GAAS8kB,GAASjwC,EACtC,EAywEAowE,GAAO/qF,QApvEP,WACE,IAAI02E,EAAO76E,UACP+uD,EAAS9kB,GAAS4wC,EAAK,IAE3B,OAAOA,EAAK/gF,OAAS,EAAIi1D,EAASA,EAAO5qD,QAAQ02E,EAAK,GAAIA,EAAK,GACjE,EAgvEAqU,GAAOprE,OAtoGP,SAAgBpkB,EAAQ02F,EAAM+N,GAG5B,IAAIt+F,GAAS,EACT/L,GAHJs8F,EAAOC,GAASD,EAAM12F,IAGJ5F,OAOlB,IAJKA,IACHA,EAAS,EACT4F,EAAShH,KAEFmN,EAAQ/L,GAAQ,CACvB,IAAIzB,EAAkB,MAAVqH,EAAiBhH,EAAYgH,EAAO42F,GAAMF,EAAKvwF,KACvDxN,IAAUK,IACZmN,EAAQ/L,EACRzB,EAAQ8rG,GAEVzkG,EAASwyE,GAAW75E,GAASA,EAAM+B,KAAKsF,GAAUrH,CACpD,CACA,OAAOqH,CACT,EAmnGAwvF,GAAOwgB,MAAQA,GACfxgB,GAAOjE,aAAeA,EACtBiE,GAAOunB,OA15NP,SAAgBhuB,GAEd,OADW9uF,GAAQ8uF,GAAc2I,GAAc8L,IACnCzU,EACd,EAw5NAyG,GAAO1R,KA/0NP,SAAciL,GACZ,GAAkB,MAAdA,EACF,OAAO,EAET,GAAImS,GAAYnS,GACd,OAAO/rB,GAAS+rB,GAAciC,GAAWjC,GAAcA,EAAW3uF,OAEpE,IAAI6H,EAAMoxF,GAAOtK,GACjB,OAAI9mF,GAAO69E,GAAU79E,GAAOk+E,EACnB4I,EAAWjL,KAEb6c,GAAS5R,GAAY3uF,MAC9B,EAo0NAo1F,GAAO4e,UAAYA,GACnB5e,GAAOznD,KA/xNP,SAAcghD,EAAYhB,EAAW6Z,GACnC,IAAIra,EAAOttF,GAAQ8uF,GAAcJ,GAAYqV,GAI7C,OAHI4D,GAASC,GAAe9Y,EAAYhB,EAAW6Z,KACjD7Z,EAAY/uF,GAEPuuF,EAAKwB,EAAYsT,GAAYtU,EAAW,GACjD,EA0xNAyH,GAAOwnB,YAhsRP,SAAqBv+B,EAAO9/E,GAC1B,OAAOslG,GAAgBxlB,EAAO9/E,EAChC,EA+rRA62F,GAAOynB,cApqRP,SAAuBx+B,EAAO9/E,EAAOgvF,GACnC,OAAO0W,GAAkB5lB,EAAO9/E,EAAO0jG,GAAY1U,EAAU,GAC/D,EAmqRA6H,GAAO0nB,cAjpRP,SAAuBz+B,EAAO9/E,GAC5B,IAAIyB,EAAkB,MAATq+E,EAAgB,EAAIA,EAAMr+E,OACvC,GAAIA,EAAQ,CACV,IAAI+L,EAAQ83F,GAAgBxlB,EAAO9/E,GACnC,GAAIwN,EAAQ/L,GAAUk1D,GAAGmpB,EAAMtyE,GAAQxN,GACrC,OAAOwN,CAEX,CACA,OAAQ,CACV,EAyoRAqpF,GAAO2nB,gBArnRP,SAAyB1+B,EAAO9/E,GAC9B,OAAOslG,GAAgBxlB,EAAO9/E,GAAO,EACvC,EAonRA62F,GAAO4nB,kBAzlRP,SAA2B3+B,EAAO9/E,EAAOgvF,GACvC,OAAO0W,GAAkB5lB,EAAO9/E,EAAO0jG,GAAY1U,EAAU,IAAI,EACnE,EAwlRA6H,GAAO6nB,kBAtkRP,SAA2B5+B,EAAO9/E,GAEhC,GADsB,MAAT8/E,EAAgB,EAAIA,EAAMr+E,OAC3B,CACV,IAAI+L,EAAQ83F,GAAgBxlB,EAAO9/E,GAAO,GAAQ,EAClD,GAAI22D,GAAGmpB,EAAMtyE,GAAQxN,GACnB,OAAOwN,CAEX,CACA,OAAQ,CACV,EA8jRAqpF,GAAO6e,UAAYA,GACnB7e,GAAOpsF,WA3oEP,SAAoBisD,EAAQt2C,EAAQyc,GAOlC,OANA65B,EAAS9kB,GAAS8kB,GAClB75B,EAAuB,MAAZA,EACP,EACAu8D,GAAU2T,GAAUlwE,GAAW,EAAG65B,EAAOj1D,QAE7C2e,EAASkmF,GAAalmF,GACfs2C,EAAO/oD,MAAMkvB,EAAUA,EAAWzc,EAAO3e,SAAW2e,CAC7D,EAooEAy2E,GAAOygB,SAAWA,GAClBzgB,GAAO8nB,IAzUP,SAAa7+B,GACX,OAAQA,GAASA,EAAMr+E,OACnBovF,GAAQ/Q,EAAO8hB,IACf,CACN,EAsUA/K,GAAO+nB,MA7SP,SAAe9+B,EAAOkP,GACpB,OAAQlP,GAASA,EAAMr+E,OACnBovF,GAAQ/Q,EAAO4jB,GAAY1U,EAAU,IACrC,CACN,EA0SA6H,GAAOrvF,SA7hEP,SAAkBkvD,EAAQ5rD,EAASm+F,GAIjC,IAAIljD,EAAW8wC,GAAO6F,iBAElBuM,GAASC,GAAexyC,EAAQ5rD,EAASm+F,KAC3Cn+F,EAAUzK,GAEZq2D,EAAS9kB,GAAS8kB,GAClB5rD,EAAUspG,GAAa,CAAC,EAAGtpG,EAASi7C,EAAU6nD,IAE9C,IAIIiR,EACAC,EALAC,EAAU3K,GAAa,CAAC,EAAGtpG,EAAQi0G,QAASh5D,EAASg5D,QAASnR,IAC9DoR,EAAcvzG,GAAKszG,GACnBE,EAAgB7tB,GAAW2tB,EAASC,GAIpCxxG,EAAQ,EACR0xG,EAAcp0G,EAAQo0G,aAAe50B,GACrC1yD,EAAS,WAGTunF,EAAe9lF,IAChBvuB,EAAQ4wG,QAAUpxB,IAAW1yD,OAAS,IACvCsnF,EAAYtnF,OAAS,KACpBsnF,IAAgBl2B,GAAgBc,GAAeQ,IAAW1yD,OAAS,KACnE9sB,EAAQs0G,UAAY90B,IAAW1yD,OAAS,KACzC,KAMEynF,EAAY,kBACbv9G,GAAeC,KAAK+I,EAAS,cACzBA,EAAQu0G,UAAY,IAAIvzG,QAAQ,MAAO,KACvC,6BAA+BihF,GAAmB,KACnD,KAENr2B,EAAO5qD,QAAQqzG,GAAc,SAAS1hD,EAAO6hD,EAAaC,EAAkBC,EAAiBC,EAAezvF,GAsB1G,OArBAuvF,IAAqBA,EAAmBC,GAGxC5nF,GAAU8+B,EAAO/oD,MAAMH,EAAOwiB,GAAQlkB,QAAQy+E,GAAmBqH,IAG7D0tB,IACFT,GAAa,EACbjnF,GAAU,YAAc0nF,EAAc,UAEpCG,IACFX,GAAe,EACflnF,GAAU,OAAS6nF,EAAgB,eAEjCF,IACF3nF,GAAU,iBAAmB2nF,EAAmB,+BAElD/xG,EAAQwiB,EAASytC,EAAMh8D,OAIhBg8D,CACT,IAEA7lC,GAAU,OAIV,IAAI8nF,EAAW59G,GAAeC,KAAK+I,EAAS,aAAeA,EAAQ40G,SACnE,GAAKA,GAKA,GAAI91B,GAA2BhoE,KAAK89F,GACvC,MAAM,IAAIx1C,GA3idmB,2DAsid7BtyC,EAAS,iBAAmBA,EAAS,QASvCA,GAAUknF,EAAelnF,EAAO9rB,QAAQy8E,EAAsB,IAAM3wD,GACjE9rB,QAAQ08E,EAAqB,MAC7B18E,QAAQ28E,EAAuB,OAGlC7wD,EAAS,aAAe8nF,GAAY,OAAS,SAC1CA,EACG,GACA,wBAEJ,qBACCb,EACI,mBACA,KAEJC,EACG,uFAEA,OAEJlnF,EACA,gBAEF,IAAInM,EAASuqF,IAAQ,WACnB,OAAOjxG,GAASi6G,EAAaK,EAAY,UAAYznF,GAClDlwB,MAAMrH,EAAW4+G,EACtB,IAKA,GADAxzF,EAAOmM,OAASA,EACZi8E,GAAQpoF,GACV,MAAMA,EAER,OAAOA,CACT,EA26DAorE,GAAO8oB,MApsBP,SAAel5F,EAAGuoE,GAEhB,IADAvoE,EAAIsmF,GAAUtmF,IACN,GAAKA,EAAI+/D,EACf,MAAO,GAET,IAAIh5E,EAAQk5E,EACRjlF,EAAS+zF,GAAU/uE,EAAGigE,GAE1BsI,EAAW0U,GAAY1U,GACvBvoE,GAAKigE,EAGL,IADA,IAAIj7D,EAASulE,GAAUvvF,EAAQutF,KACtBxhF,EAAQiZ,GACfuoE,EAASxhF,GAEX,OAAOie,CACT,EAqrBAorE,GAAOwV,SAAWA,GAClBxV,GAAOkW,UAAYA,GACnBlW,GAAOod,SAAWA,GAClBpd,GAAO+oB,QAx5DP,SAAiB5/G,GACf,OAAO4xC,GAAS5xC,GAAO8E,aACzB,EAu5DA+xF,GAAO2V,SAAWA,GAClB3V,GAAOgpB,cApuIP,SAAuB7/G,GACrB,OAAOA,EACHo5F,GAAU2T,GAAU/sG,IAAQ,iBAAmBwmF,GACpC,IAAVxmF,EAAcA,EAAQ,CAC7B,EAiuIA62F,GAAOjlD,SAAWA,GAClBilD,GAAOipB,QAn4DP,SAAiB9/G,GACf,OAAO4xC,GAAS5xC,GAAO0N,aACzB,EAk4DAmpF,GAAO1iE,KA12DP,SAAcuiC,EAAQw1C,EAAOjD,GAE3B,IADAvyC,EAAS9kB,GAAS8kB,MACHuyC,GAASiD,IAAU7rG,GAChC,OAAO4wF,GAASv6B,GAElB,IAAKA,KAAYw1C,EAAQ5F,GAAa4F,IACpC,OAAOx1C,EAET,IAAI66B,EAAagB,GAAc77B,GAC3B86B,EAAae,GAAc2Z,GAI/B,OAAO1E,GAAUjW,EAHLD,GAAgBC,EAAYC,GAC9BC,GAAcF,EAAYC,GAAc,GAET5jF,KAAK,GAChD,EA61DAipF,GAAOkpB,QAx0DP,SAAiBrpD,EAAQw1C,EAAOjD,GAE9B,IADAvyC,EAAS9kB,GAAS8kB,MACHuyC,GAASiD,IAAU7rG,GAChC,OAAOq2D,EAAO/oD,MAAM,EAAGujF,GAAgBx6B,GAAU,GAEnD,IAAKA,KAAYw1C,EAAQ5F,GAAa4F,IACpC,OAAOx1C,EAET,IAAI66B,EAAagB,GAAc77B,GAG/B,OAAO8wC,GAAUjW,EAAY,EAFnBE,GAAcF,EAAYgB,GAAc2Z,IAAU,GAEvBt+F,KAAK,GAC5C,EA6zDAipF,GAAOmpB,UAxyDP,SAAmBtpD,EAAQw1C,EAAOjD,GAEhC,IADAvyC,EAAS9kB,GAAS8kB,MACHuyC,GAASiD,IAAU7rG,GAChC,OAAOq2D,EAAO5qD,QAAQw9E,GAAa,IAErC,IAAK5yB,KAAYw1C,EAAQ5F,GAAa4F,IACpC,OAAOx1C,EAET,IAAI66B,EAAagB,GAAc77B,GAG/B,OAAO8wC,GAAUjW,EAFLD,GAAgBC,EAAYgB,GAAc2Z,KAElBt+F,KAAK,GAC3C,EA6xDAipF,GAAOopB,SAtvDP,SAAkBvpD,EAAQ5rD,GACxB,IAAIrJ,EAnvdmB,GAovdnBy+G,EAnvdqB,MAqvdzB,GAAI/oB,GAASrsF,GAAU,CACrB,IAAIgvG,EAAY,cAAehvG,EAAUA,EAAQgvG,UAAYA,EAC7Dr4G,EAAS,WAAYqJ,EAAUiiG,GAAUjiG,EAAQrJ,QAAUA,EAC3Dy+G,EAAW,aAAcp1G,EAAUw7F,GAAax7F,EAAQo1G,UAAYA,CACtE,CAGA,IAAIrC,GAFJnnD,EAAS9kB,GAAS8kB,IAEKj1D,OACvB,GAAIowF,GAAWn7B,GAAS,CACtB,IAAI66B,EAAagB,GAAc77B,GAC/BmnD,EAAYtsB,EAAW9vF,MACzB,CACA,GAAIA,GAAUo8G,EACZ,OAAOnnD,EAET,IAAIpmC,EAAM7uB,EAAS4wF,GAAW6tB,GAC9B,GAAI5vF,EAAM,EACR,OAAO4vF,EAET,IAAIz0F,EAAS8lE,EACTiW,GAAUjW,EAAY,EAAGjhE,GAAK1iB,KAAK,IACnC8oD,EAAO/oD,MAAM,EAAG2iB,GAEpB,GAAIwpF,IAAcz5G,EAChB,OAAOorB,EAASy0F,EAKlB,GAHI3uB,IACFjhE,GAAQ7E,EAAOhqB,OAAS6uB,GAEtBmtD,GAASq8B,IACX,GAAIpjD,EAAO/oD,MAAM2iB,GAAKvL,OAAO+0F,GAAY,CACvC,IAAIr8C,EACAyG,EAAYz4C,EAMhB,IAJKquF,EAAUqG,SACbrG,EAAYzgF,GAAOygF,EAAUliF,OAAQga,GAASm4C,GAAQzwD,KAAKwgF,IAAc,MAE3EA,EAAUh3C,UAAY,EACdrF,EAAQq8C,EAAUxgF,KAAK4qC,IAC7B,IAAIk8C,EAAS3iD,EAAMjwD,MAErBie,EAASA,EAAO9d,MAAM,EAAGyyG,IAAW//G,EAAYiwB,EAAM8vF,EACxD,OACK,GAAI1pD,EAAO5yD,QAAQwiG,GAAawT,GAAYxpF,IAAQA,EAAK,CAC9D,IAAI9iB,EAAQie,EAAO5f,YAAYiuG,GAC3BtsG,GAAS,IACXie,EAASA,EAAO9d,MAAM,EAAGH,GAE7B,CACA,OAAOie,EAASy0F,CAClB,EAisDArpB,GAAOwpB,SA5qDP,SAAkB3pD,GAEhB,OADAA,EAAS9kB,GAAS8kB,KACAkyB,EAAiBhnE,KAAK80C,GACpCA,EAAO5qD,QAAQ48E,EAAegK,IAC9Bh8B,CACN,EAwqDAmgC,GAAOypB,SAvpBP,SAAkB5xD,GAChB,IAAIhnC,IAAO2rE,GACX,OAAOzhD,GAAS8c,GAAUhnC,CAC5B,EAqpBAmvE,GAAO8e,UAAYA,GACnB9e,GAAOwe,WAAaA,GAGpBxe,GAAOv4D,KAAO33B,GACdkwF,GAAO0pB,UAAYlP,GACnBxa,GAAO5lB,MAAQ6+B,GAEfxkG,GAAMurF,IACAj/D,GAAS,CAAC,EACdmlE,GAAWlG,IAAQ,SAASjI,EAAMya,GAC3BvnG,GAAeC,KAAK80F,GAAO31F,UAAWmoG,KACzCzxE,GAAOyxE,GAAcza,EAEzB,IACOh3D,IACH,CAAE,OAAS,IAWjBi/D,GAAO2pB,QA/ihBK,UAkjhBZvxB,GAAU,CAAC,OAAQ,UAAW,QAAS,aAAc,UAAW,iBAAiB,SAASoa,GACxFxS,GAAOwS,GAAYngE,YAAc2tD,EACnC,IAGA5H,GAAU,CAAC,OAAQ,SAAS,SAASoa,EAAY77F,GAC/CupF,GAAY71F,UAAUmoG,GAAc,SAAS5iF,GAC3CA,EAAIA,IAAMpmB,EAAY,EAAIk1F,GAAUwX,GAAUtmF,GAAI,GAElD,IAAIgF,EAAU1oB,KAAK40F,eAAiBnqF,EAChC,IAAIupF,GAAYh0F,MAChBA,KAAK2sG,QAUT,OARIjkF,EAAOksE,aACTlsE,EAAOosE,cAAgBrC,GAAU/uE,EAAGgF,EAAOosE,eAE3CpsE,EAAOqsE,UAAUxvF,KAAK,CACpB,KAAQktF,GAAU/uE,EAAGigE,GACrB,KAAQ2iB,GAAc59E,EAAOisE,QAAU,EAAI,QAAU,MAGlDjsE,CACT,EAEAsrE,GAAY71F,UAAUmoG,EAAa,SAAW,SAAS5iF,GACrD,OAAO1jB,KAAKo8E,UAAUkqB,GAAY5iF,GAAG04D,SACvC,CACF,IAGA8P,GAAU,CAAC,SAAU,MAAO,cAAc,SAASoa,EAAY77F,GAC7D,IAAI/K,EAAO+K,EAAQ,EACfizG,EAjihBe,GAiihBJh+G,GA/hhBG,GA+hhByBA,EAE3Cs0F,GAAY71F,UAAUmoG,GAAc,SAASra,GAC3C,IAAIvjE,EAAS1oB,KAAK2sG,QAMlB,OALAjkF,EAAOmsE,cAActvF,KAAK,CACxB,SAAYo7F,GAAY1U,EAAU,GAClC,KAAQvsF,IAEVgpB,EAAOksE,aAAelsE,EAAOksE,cAAgB8oB,EACtCh1F,CACT,CACF,IAGAwjE,GAAU,CAAC,OAAQ,SAAS,SAASoa,EAAY77F,GAC/C,IAAIkzG,EAAW,QAAUlzG,EAAQ,QAAU,IAE3CupF,GAAY71F,UAAUmoG,GAAc,WAClC,OAAOtmG,KAAK29G,GAAU,GAAG1gH,QAAQ,EACnC,CACF,IAGAivF,GAAU,CAAC,UAAW,SAAS,SAASoa,EAAY77F,GAClD,IAAImzG,EAAW,QAAUnzG,EAAQ,GAAK,SAEtCupF,GAAY71F,UAAUmoG,GAAc,WAClC,OAAOtmG,KAAK40F,aAAe,IAAIZ,GAAYh0F,MAAQA,KAAK49G,GAAU,EACpE,CACF,IAEA5pB,GAAY71F,UAAUy2G,QAAU,WAC9B,OAAO50G,KAAKgE,OAAO66F,GACrB,EAEA7K,GAAY71F,UAAU0C,KAAO,SAASwrF,GACpC,OAAOrsF,KAAKgE,OAAOqoF,GAAW0gB,MAChC,EAEA/Y,GAAY71F,UAAUkwG,SAAW,SAAShiB,GACxC,OAAOrsF,KAAKo8E,UAAUv7E,KAAKwrF,EAC7B,EAEA2H,GAAY71F,UAAUqwG,UAAY7M,IAAS,SAAS3G,EAAMvb,GACxD,MAAmB,mBAARub,EACF,IAAIhH,GAAYh0F,MAElBA,KAAKwK,KAAI,SAASvN,GACvB,OAAOs/F,GAAWt/F,EAAO+9F,EAAMvb,EACjC,GACF,IAEAuU,GAAY71F,UAAU4xB,OAAS,SAASs8D,GACtC,OAAOrsF,KAAKgE,OAAOusG,GAAO5P,GAAYtU,IACxC,EAEA2H,GAAY71F,UAAUyM,MAAQ,SAASsiB,EAAOK,GAC5CL,EAAQ88E,GAAU98E,GAElB,IAAIxE,EAAS1oB,KACb,OAAI0oB,EAAOksE,eAAiB1nE,EAAQ,GAAKK,EAAM,GACtC,IAAIymE,GAAYtrE,IAErBwE,EAAQ,EACVxE,EAASA,EAAOuuF,WAAW/pF,GAClBA,IACTxE,EAASA,EAAOysF,KAAKjoF,IAEnBK,IAAQjwB,IAEVorB,GADA6E,EAAMy8E,GAAUz8E,IACD,EAAI7E,EAAO0sF,WAAW7nF,GAAO7E,EAAO4B,KAAKiD,EAAML,IAEzDxE,EACT,EAEAsrE,GAAY71F,UAAU+4G,eAAiB,SAAS7qB,GAC9C,OAAOrsF,KAAKo8E,UAAU+6B,UAAU9qB,GAAWjQ,SAC7C,EAEA4X,GAAY71F,UAAUozB,QAAU,WAC9B,OAAOvxB,KAAKsqB,KAAKq5D,EACnB,EAGAqW,GAAWhG,GAAY71F,WAAW,SAAS0tF,EAAMya,GAC/C,IAAIuX,EAAgB,qCAAqCh/F,KAAKynF,GAC1DwX,EAAU,kBAAkBj/F,KAAKynF,GACjCyX,EAAajqB,GAAOgqB,EAAW,QAAwB,QAAdxX,EAAuB,QAAU,IAAOA,GACjF0X,EAAeF,GAAW,QAAQj/F,KAAKynF,GAEtCyX,IAGLjqB,GAAO31F,UAAUmoG,GAAc,WAC7B,IAAIrpG,EAAQ+C,KAAKu0F,YACb9U,EAAOq+B,EAAU,CAAC,GAAKl5G,UACvBq5G,EAAShhH,aAAiB+2F,GAC1B/H,EAAWxM,EAAK,GAChBy+B,EAAUD,GAAU1/G,GAAQtB,GAE5BixG,EAAc,SAASjxG,GACzB,IAAIyrB,EAASq1F,EAAWp5G,MAAMmvF,GAAQjH,GAAU,CAAC5vF,GAAQwiF,IACzD,OAAQq+B,GAAWxpB,EAAY5rE,EAAO,GAAKA,CAC7C,EAEIw1F,GAAWL,GAAoC,mBAAZ5xB,GAA6C,GAAnBA,EAASvtF,SAExEu/G,EAASC,GAAU,GAErB,IAAI5pB,EAAWt0F,KAAKy0F,UAChB0pB,IAAan+G,KAAKw0F,YAAY91F,OAC9B0/G,EAAcJ,IAAiB1pB,EAC/B+pB,EAAWJ,IAAWE,EAE1B,IAAKH,GAAgBE,EAAS,CAC5BjhH,EAAQohH,EAAWphH,EAAQ,IAAI+2F,GAAYh0F,MAC3C,IAAI0oB,EAASmjE,EAAKlnF,MAAM1H,EAAOwiF,GAE/B,OADA/2D,EAAO8rE,YAAYjvF,KAAK,CAAE,KAAQ4hG,GAAM,KAAQ,CAAC+G,GAAc,QAAW5wG,IACnE,IAAI22F,GAAcvrE,EAAQ4rE,EACnC,CACA,OAAI8pB,GAAeC,EACVxyB,EAAKlnF,MAAM3E,KAAMy/E,IAE1B/2D,EAAS1oB,KAAKmnG,KAAK+G,GACZkQ,EAAeN,EAAUp1F,EAAOzrB,QAAQ,GAAKyrB,EAAOzrB,QAAWyrB,EACxE,EACF,IAGAwjE,GAAU,CAAC,MAAO,OAAQ,QAAS,OAAQ,SAAU,YAAY,SAASoa,GACxE,IAAIza,EAAOoE,GAAWqW,GAClBx+B,EAAY,0BAA0BjpD,KAAKynF,GAAc,MAAQ,OACjE0X,EAAe,kBAAkBn/F,KAAKynF,GAE1CxS,GAAO31F,UAAUmoG,GAAc,WAC7B,IAAI7mB,EAAO76E,UACX,GAAIo5G,IAAiBh+G,KAAKy0F,UAAW,CACnC,IAAIx3F,EAAQ+C,KAAK/C,QACjB,OAAO4uF,EAAKlnF,MAAMpG,GAAQtB,GAASA,EAAQ,GAAIwiF,EACjD,CACA,OAAOz/E,KAAK8nE,IAAW,SAAS7qE,GAC9B,OAAO4uF,EAAKlnF,MAAMpG,GAAQtB,GAASA,EAAQ,GAAIwiF,EACjD,GACF,CACF,IAGAua,GAAWhG,GAAY71F,WAAW,SAAS0tF,EAAMya,GAC/C,IAAIyX,EAAajqB,GAAOwS,GACxB,GAAIyX,EAAY,CACd,IAAIj/G,EAAMi/G,EAAWx+G,KAAO,GACvBR,GAAeC,KAAKm0F,GAAWr0F,KAClCq0F,GAAUr0F,GAAO,IAEnBq0F,GAAUr0F,GAAKyG,KAAK,CAAE,KAAQ+gG,EAAY,KAAQyX,GACpD,CACF,IAEA5qB,GAAUsU,GAAanqG,EAlthBA,GAkthB+BiC,MAAQ,CAAC,CAC7D,KAAQ,UACR,KAAQjC,IAIV02F,GAAY71F,UAAUwuG,MAh9dtB,WACE,IAAIjkF,EAAS,IAAIsrE,GAAYh0F,KAAKu0F,aAOlC,OANA7rE,EAAO8rE,YAAc4B,GAAUp2F,KAAKw0F,aACpC9rE,EAAOisE,QAAU30F,KAAK20F,QACtBjsE,EAAOksE,aAAe50F,KAAK40F,aAC3BlsE,EAAOmsE,cAAgBuB,GAAUp2F,KAAK60F,eACtCnsE,EAAOosE,cAAgB90F,KAAK80F,cAC5BpsE,EAAOqsE,UAAYqB,GAAUp2F,KAAK+0F,WAC3BrsE,CACT,EAw8dAsrE,GAAY71F,UAAUi+E,QA97dtB,WACE,GAAIp8E,KAAK40F,aAAc,CACrB,IAAIlsE,EAAS,IAAIsrE,GAAYh0F,MAC7B0oB,EAAOisE,SAAW,EAClBjsE,EAAOksE,cAAe,CACxB,MACElsE,EAAS1oB,KAAK2sG,SACPhY,UAAY,EAErB,OAAOjsE,CACT,EAq7dAsrE,GAAY71F,UAAUlB,MA36dtB,WACE,IAAI8/E,EAAQ/8E,KAAKu0F,YAAYt3F,QACzBuvB,EAAMxsB,KAAK20F,QACXc,EAAQl3F,GAAQw+E,GAChBuhC,EAAU9xF,EAAM,EAChBg8E,EAAY/S,EAAQ1Y,EAAMr+E,OAAS,EACnC6/G,EA8pIN,SAAiBrxF,EAAOK,EAAKkjF,GAC3B,IAAIhmG,GAAS,EACT/L,EAAS+xG,EAAW/xG,OAExB,OAAS+L,EAAQ/L,GAAQ,CACvB,IAAIuG,EAAOwrG,EAAWhmG,GAClB23E,EAAOn9E,EAAKm9E,KAEhB,OAAQn9E,EAAKvF,MACX,IAAK,OAAawtB,GAASk1D,EAAM,MACjC,IAAK,YAAa70D,GAAO60D,EAAM,MAC/B,IAAK,OAAa70D,EAAMklE,GAAUllE,EAAKL,EAAQk1D,GAAO,MACtD,IAAK,YAAal1D,EAAQslE,GAAUtlE,EAAOK,EAAM60D,GAErD,CACA,MAAO,CAAE,MAASl1D,EAAO,IAAOK,EAClC,CA9qIaixF,CAAQ,EAAGhW,EAAWxoG,KAAK+0F,WAClC7nE,EAAQqxF,EAAKrxF,MACbK,EAAMgxF,EAAKhxF,IACX7uB,EAAS6uB,EAAML,EACfziB,EAAQ6zG,EAAU/wF,EAAOL,EAAQ,EACjCuzE,EAAYzgG,KAAK60F,cACjB4pB,EAAahe,EAAU/hG,OACvB6tF,EAAW,EACXmyB,EAAYjsB,GAAU/zF,EAAQsB,KAAK80F,eAEvC,IAAKW,IAAW6oB,GAAW9V,GAAa9pG,GAAUggH,GAAahgH,EAC7D,OAAOqlG,GAAiBhnB,EAAO/8E,KAAKw0F,aAEtC,IAAI9rE,EAAS,GAEb+wE,EACA,KAAO/6F,KAAY6tF,EAAWmyB,GAAW,CAMvC,IAHA,IAAIC,GAAa,EACb1hH,EAAQ8/E,EAHZtyE,GAAS+hB,KAKAmyF,EAAYF,GAAY,CAC/B,IAAIx5G,EAAOw7F,EAAUke,GACjB1yB,EAAWhnF,EAAKgnF,SAChBvsF,EAAOuF,EAAKvF,KACZ8qB,EAAWyhE,EAAShvF,GAExB,GA7zDY,GA6zDRyC,EACFzC,EAAQutB,OACH,IAAKA,EAAU,CACpB,GAj0Da,GAi0DT9qB,EACF,SAAS+5F,EAET,MAAMA,CAEV,CACF,CACA/wE,EAAO6jE,KAActvF,CACvB,CACA,OAAOyrB,CACT,EA+3dAorE,GAAO31F,UAAU8oE,GAAKknC,GACtBra,GAAO31F,UAAU6oE,MA1iQjB,WACE,OAAOA,GAAMhnE,KACf,EAyiQA8zF,GAAO31F,UAAUygH,OA7gQjB,WACE,OAAO,IAAI3qB,GAAcj0F,KAAK/C,QAAS+C,KAAKy0F,UAC9C,EA4gQAX,GAAO31F,UAAUiI,KAp/PjB,WACMpG,KAAK00F,aAAep3F,IACtB0C,KAAK00F,WAAanjE,GAAQvxB,KAAK/C,UAEjC,IAAIoJ,EAAOrG,KAAKk7E,WAAal7E,KAAK00F,WAAWh2F,OAG7C,MAAO,CAAE,KAAQ2H,EAAM,MAFXA,EAAO/I,EAAY0C,KAAK00F,WAAW10F,KAAKk7E,aAGtD,EA6+PA4Y,GAAO31F,UAAUqpG,MA77PjB,SAAsBvqG,GAIpB,IAHA,IAAIyrB,EACA9c,EAAS5L,KAEN4L,aAAkByoF,IAAY,CACnC,IAAIsY,EAAQzY,GAAatoF,GACzB+gG,EAAMzxB,UAAY,EAClByxB,EAAMjY,WAAap3F,EACforB,EACFgH,EAAS6kE,YAAcoY,EAEvBjkF,EAASikF,EAEX,IAAIj9E,EAAWi9E,EACf/gG,EAASA,EAAO2oF,WAClB,CAEA,OADA7kE,EAAS6kE,YAAct3F,EAChByrB,CACT,EA46PAorE,GAAO31F,UAAUi+E,QAt5PjB,WACE,IAAIn/E,EAAQ+C,KAAKu0F,YACjB,GAAIt3F,aAAiB+2F,GAAa,CAChC,IAAI6qB,EAAU5hH,EAUd,OATI+C,KAAKw0F,YAAY91F,SACnBmgH,EAAU,IAAI7qB,GAAYh0F,QAE5B6+G,EAAUA,EAAQziC,WACVoY,YAAYjvF,KAAK,CACvB,KAAQ4hG,GACR,KAAQ,CAAC/qB,IACT,QAAW9+E,IAEN,IAAI22F,GAAc4qB,EAAS7+G,KAAKy0F,UACzC,CACA,OAAOz0F,KAAKmnG,KAAK/qB,GACnB,EAu4PA0X,GAAO31F,UAAUykC,OAASkxD,GAAO31F,UAAUy1F,QAAUE,GAAO31F,UAAUlB,MAv3PtE,WACE,OAAO8mG,GAAiB/jG,KAAKu0F,YAAav0F,KAAKw0F,YACjD,EAw3PAV,GAAO31F,UAAU+vE,MAAQ4lB,GAAO31F,UAAU4uG,KAEtCzb,KACFwC,GAAO31F,UAAUmzF,IAj+PnB,WACE,OAAOtxF,IACT,GAi+PO8zF,EACR,CAKOjE,GAQNnF,GAAKkF,EAAIA,IAIT,aACE,OAAOA,EACR,mCAaL,EAAE5wF,KAAKgB,sDCjzhBP,IAAI8+G,EAAc,SAAU3gG,GAC1B,OAAO0U,EAAS,CAAC,OAAQ,WAAY,SAAU,QAAS,MAAO,MAAO,WAAY,UAAW1U,EAAGze,KAClG,EAEIq/G,EAAyB,SAAU5gG,GACrC,OAAO0U,EAAS,CAAC,QAAS,YAAa1U,EAAGze,KAC5C,EASIs/G,EAAmB,SAAU7gG,EAAI5e,GAAQ,OAAO4e,EAAGiU,aAAc,WAAa7yB,EAAQ,EAEtF0/G,EAAU,SAAUhiH,GACtB,MAAI,UAAWiQ,OACNA,OAAOysG,MAAM18G,GAIG,iBAAZ,GAAwBA,GAAUA,CACjD,EAKIiiH,EAAoB,WAEtB,IADA,IAAIzvG,EAAS,GAAIuwD,EAAMp7D,UAAUlG,OACzBshE,KAAQvwD,EAAQuwD,GAAQp7D,UAAWo7D,GAE3C,OAAOvwD,EAAOqqC,OAAM,SAAU78C,GAC5B,OAAOA,OACT,GACF,EAqBIs8G,EAAU,SAAU4F,EAAKC,GAC3B,GAAID,aAAe7oF,QAAU8oF,aAAe9oF,OAC1C,OAAOijF,EAAQ4F,EAAItqF,OAAQuqF,EAAIvqF,SAAW0kF,EAAQ4F,EAAIE,MAAOD,EAAIC,OAGnE,GAAI/gH,MAAMC,QAAQ4gH,IAAQ7gH,MAAMC,QAAQ6gH,GAAM,CAC5C,GAAID,EAAIzgH,SAAW0gH,EAAI1gH,OAAU,OAAO,EAExC,IAAK,IAAIF,EAAI,EAAGA,EAAI2gH,EAAIzgH,OAAQF,IAC9B,IAAK+6G,EAAQ4F,EAAI3gH,GAAI4gH,EAAI5gH,IACvB,OAAO,EAIX,OAAO,CACT,CAGA,OAAI41F,EAAS+qB,IAAQ/qB,EAASgrB,GACrBtiH,OAAO4L,KAAKy2G,GAAKrlE,OAAM,SAAUh7C,GACtC,OAAOy6G,EAAQ4F,EAAIrgH,GAAMsgH,EAAItgH,GAC/B,KAAMhC,OAAO4L,KAAK02G,GAAKtlE,OAAM,SAAUh7C,GACrC,OAAOy6G,EAAQ4F,EAAIrgH,GAAMsgH,EAAItgH,GAC/B,OAGEmgH,EAAQE,KAAQF,EAAQG,KAIrBD,IAAQC,CACjB,EAqBIE,EAAU,SAAUnhG,GACtB,OAAI+gG,EAAkB/gG,GAAc,KAEjB,SAAfA,EAAG5U,QAA6B4U,EAE/B+gG,EAAkB/gG,EAAGO,MAElBwgG,EAAkB/gG,EAAGohG,YAAuC,KAAzBD,EAAQnhG,EAAGohG,YAFZphG,EAAGO,IAG/C,EAKI8gG,EAAU,SAAUxkB,EAAM39E,EAAQoiG,GAGpC,QAFa,IAARA,IAAiBA,OAAMniH,IAEvB09F,IAAS39E,EAAU,OAAOoiG,EAE/B,IAAIxiH,EAAQogB,EAaZ,OAZA29E,EAAKvyF,MAAM,KAAKqxC,OAAM,SAAUj0C,GAC9B,OAAIA,KAAQ5I,GACVA,EAAQA,EAAM4I,IAEP,IAGT5I,EAAQwiH,GAED,EACT,IAEOxiH,CACT,EAmDIiiB,EAAW,SAAUu0C,EAAIysB,EAAMhwD,GAIjC,YAHc,IAATgwD,IAAkBA,EAAO,QACf,IAAVhwD,IAAmBA,EAAQ,CAAEwvF,WAAW,IAEhC,IAATx/B,EACKzsB,EAKF,WAEL,IADA,IAAIgsB,EAAO,GAAIzf,EAAMp7D,UAAUlG,OACvBshE,KAAQyf,EAAMzf,GAAQp7D,UAAWo7D,GASzChmB,aAAa2lE,IACbA,EAAU9/F,YARE,WACV8/F,EAAU,KAGLzvF,EAAMwvF,WAAajsD,EAAG9uD,WAAM,EAAQ86E,EAC3C,GAG4BS,KACZzsB,EAAG9uD,WAAM,EAAQ86E,EACnC,EAhBA,IAAIkgC,CAiBN,EAKIC,EAAa,SAAU/4C,EAAMjhB,GAC/B,OAAKA,EAIAihB,GAIgB,iBAAVjhB,IACTA,EAAQi6D,EAAej6D,IAGlB7gD,EAAO,CAAC,EAAG6gD,EAAOi6D,EAAeh5C,KAP/Bg5C,EAAej6D,GAJfi6D,EAAeh5C,EAY1B,EAKIg5C,EAAiB,SAAUj6D,GAE7B,OAAKA,EAIDwuC,EAASxuC,GAEJ9oD,OAAO4L,KAAKk9C,GAAOv8C,QAAO,SAAUqnD,EAAMub,GAC/C,IAAIj3C,EAAS,GAiBb,OAdEA,GADkB,IAAhB4wB,EAAMqmB,GACC,GACA3tE,MAAMC,QAAQqnD,EAAMqmB,KAEpBmoB,EAASxuC,EAAMqmB,IADfrmB,EAAMqmB,GAIN,CAACrmB,EAAMqmB,KAIE,IAAhBrmB,EAAMqmB,KACRvb,EAAKub,GAAQj3C,GAGR07B,CACT,GAAG,CAAC,GAGe,iBAAV9K,GACTk6D,EAAK,+CACE,CAAC,GAGHl6D,EAAMn9C,MAAM,KAAKY,QAAO,SAAUqnD,EAAMmW,GAC7C,IAAIk5C,EAnGQ,SAAUl5C,GACxB,IAAI7xC,EAAS,GACTz1B,EAAOsnE,EAAKp+D,MAAM,KAAK,GAM3B,OAJIoqB,EAASg0C,EAAM,OACjB7xC,EAAS6xC,EAAKp+D,MAAM,KAAKmC,MAAM,GAAGC,KAAK,KAAKpC,MAAM,MAG7C,CAAElJ,KAAMA,EAAMy1B,OAAQA,EAC/B,CA0FqBgrF,CAAUn5C,GAC3B,OAAKk5C,EAAWxgH,MAIhBmxD,EAAKqvD,EAAWxgH,MAAQwgH,EAAW/qF,OAC5B07B,GAJEA,CAKX,GAAG,CAAC,GAxCK,CAAC,CAyCZ,EAKIovD,EAAO,SAAU9uF,GACnBb,QAAQ2vF,KAAM,kBAAoB9uF,EACpC,EAKIivF,EAAc,SAAUjvF,GAAW,OAAO,IAAIm2C,MAAO,kBAAoBn2C,EAAW,EAKpFojE,EAAW,SAAUx2F,GAAO,OAAe,OAARA,GAAgBA,GAAsB,iBAARA,IAAsBU,MAAMC,QAAQX,EAAM,EAK3GsiH,EAAa,SAAUr0B,GAAQ,MAAuB,mBAATA,CAAqB,EAKlEs0B,EAAW,SAAUhiG,EAAIiiG,GAC3B,OAAIjiG,EAAG1c,UACE0c,EAAG1c,UAAUs5B,SAASqlF,KAGtBjiG,EAAGiiG,UAAU1lD,MAAM,IAAIpkC,OAAQ,UAAY8pF,EAAY,WAClE,EAkCIC,EAAc,SAAUliG,EAAIiiG,EAAWh0E,GACzC,GAAKjuB,GAAOiiG,EAAZ,CAEA,IAAI9hH,MAAMC,QAAQ6hH,GAKlB,OAAIh0E,EArCS,SAAUjuB,EAAIiiG,GACvBjiG,EAAG1c,UACL0c,EAAG1c,UAAU+mB,IAAI43F,GAIdD,EAAShiG,EAAIiiG,KAChBjiG,EAAGiiG,WAAa,IAAMA,EAE1B,CA6BWn8G,CAASka,EAAIiiG,QAxBN,SAAUjiG,EAAIiiG,GAC9B,GAAIjiG,EAAG1c,UACL0c,EAAG1c,UAAU4V,OAAO+oG,QAItB,GAAID,EAAShiG,EAAIiiG,GAAY,CAC3B,IAAIE,EAAM,IAAIhqF,OAAQ,UAAY8pF,EAAY,WAC9CjiG,EAAGiiG,UAAYjiG,EAAGiiG,UAAUr3G,QAAQu3G,EAAK,IAC3C,CACF,CAiBEx8G,CAAYqa,EAAIiiG,GARdA,EAAUx8G,SAAQ,SAAUC,GAAQ,OAAOw8G,EAAYliG,EAAIta,EAAMuoC,EAAS,GAH3C,CAYnC,EAKI7a,EAAU,SAAUgvF,GACtB,GAAIL,EAAW5hH,MAAMK,MACnB,OAAOL,MAAMK,KAAK4hH,GAMpB,IAHA,IAAIxjC,EAAQ,GACRr+E,EAAS6hH,EAAU7hH,OAEdF,EAAI,EAAGA,EAAIE,EAAQF,IAC1Bu+E,EAAMx3E,KAAKg7G,EAAU/hH,IAIvB,OAAOu+E,CACT,EAKIyjC,EAAc,SAAUD,GAC1B,GAAIjiH,MAAMC,QAAQgiH,GAChB,MAAO,GAAG5+G,OAAQ4+G,GAEpB,IAAIxjC,EAAQxrD,EAAQgvF,GACpB,OAAOE,EAAa1jC,GAAS,CAACwjC,GAAaxjC,CAC7C,EAKIh4E,EAAS,SAAUsY,GAErB,IADA,IAAIqjG,EAAS,GAAI1gD,EAAMp7D,UAAUlG,OAAS,EAClCshE,KAAQ,GAAI0gD,EAAQ1gD,GAAQp7D,UAAWo7D,EAAM,GAGrD,GAAIkgD,EAAWpjH,OAAOiI,QACpB,OAAOjI,OAAOiI,OAAOJ,MAAM7H,OAAQ,CAAEugB,GAAS1b,OAAQ++G,IAIxD,GAAc,MAAVrjG,EACF,MAAM,IAAIU,UAAU,8CAItB,IAAI4iG,EAAK7jH,OAAOugB,GAWhB,OATAqjG,EAAO98G,SAAQ,SAAUsrF,GAEZ,MAAPA,GACFpyF,OAAO4L,KAAKwmF,GAAKtrF,SAAQ,SAAU9E,GACjC6hH,EAAG7hH,GAAOowF,EAAIpwF,EAChB,GAEJ,IAEO6hH,CACT,EAEIh8F,EAAK,EACLi8F,EAAa,OAmBb38F,EAAY,SAAUs8F,EAAWl0B,GAEnC,IADA,IAAItP,EAAQz+E,MAAMC,QAAQgiH,GAAaA,EAAYhvF,EAAQgvF,GAClD/hH,EAAI,EAAGA,EAAIu+E,EAAMr+E,OAAQF,IAChC,GAAI6tF,EAAUtP,EAAMv+E,IAClB,OAAOA,EAIX,OAAQ,CACV,EAKIqC,EAAO,SAAU0/G,EAAWl0B,GAC9B,IAAItP,EAAQz+E,MAAMC,QAAQgiH,GAAaA,EAAYhvF,EAAQgvF,GACvD57C,EAAM1gD,EAAU84D,EAAOsP,GAE3B,OAAgB,IAAT1nB,OAAarnE,EAAYy/E,EAAMpY,EACxC,EAEIk8C,EAAqB,SAAUC,GACjC,IAAKA,EACH,OAAO,EAGT,IAAIv6G,EAAMu6G,EAAMh3G,iBAAiBvD,IAEjC,MAAO,6CAA6CsY,KAAKtY,EAC3D,EA2BIw6G,EAAe,SAAUj7D,GAC3B,GAAqB,iBAAVA,EAAsB,OAAOA,EAExC,GAAqB,iBAAVA,EAAsB,OAAOx3B,SAASw3B,GAEjD,IAAIt7C,EAAM,CAAC,EACX,IAAK,IAAIghB,KAAWs6B,EAClBt7C,EAAIghB,GAAW8C,SAASw3B,EAAMt6B,IAGhC,OAAOhhB,CACT,EAEIsnG,EAAQ,SAAUz0F,EAAQwX,GAC5B,OAAOu/D,EAAS/2E,IAAW+2E,EAASv/D,IAIpC/3B,OAAO4L,KAAKmsB,GAAQjxB,SAAQ,SAAU9E,GACpC,IAAIlB,EAAKojH,EAET,GAAI5sB,EAASv/D,EAAO/1B,IAMlB,OALMue,EAAOve,IACXiG,EAAOsY,IAAUzf,EAAM,CAAC,GAAOkB,GAAO,CAAC,EAAGlB,SAG5Ck0G,EAAMz0F,EAAOve,GAAM+1B,EAAO/1B,IAI5BiG,EAAOsY,IAAU2jG,EAAQ,CAAC,GAASliH,GAAO+1B,EAAO/1B,GAAMkiH,GACzD,IAEO3jG,GAlBEA,CAmBX,EAEI4jG,EAAuB,SAAU9iG,EAAIynC,GAKvC,GAJIznC,EAAGmJ,WACLs+B,EAAQg6D,EAAW,WAAYh6D,IAG7Bk5D,EAAY3gG,GA6Bd,MA5BgB,UAAZA,EAAGze,OACLkmD,EAAQg6D,EAAY,SAAWzhG,EAAG+iG,SAAW,YAAc,IAAMt7D,IAG/DznC,EAAG00F,UACLjtD,EAAQg6D,EAAW,CAAE3+C,MAAO9iD,EAAG00F,SAAWjtD,IAIxCznC,EAAGi+E,WAAa,GAAKj+E,EAAGi+E,UAAY,SACtCx2C,EAAQg6D,EAAY,OAAUzhG,EAAY,UAAIynC,IAG5CznC,EAAGioB,UAAY,IACjBwf,EAAQg6D,EAAY,OAAUzhG,EAAY,UAAIynC,IAGhC,WAAZznC,EAAGze,OACLkmD,EAAQg6D,EAAW,UAAWh6D,GACf,KAAXznC,EAAGsvD,MACL7nB,EAAQg6D,EAAY,aAAgBzhG,EAAM,IAAIynC,IAGjC,KAAXznC,EAAG0lB,MACL+hB,EAAQg6D,EAAY,aAAgBzhG,EAAM,IAAIynC,KAI3CA,EAGT,GA1jBgB,SAAUznC,GAC1B,OAAO0U,EAAS,CAAC,OAAQ,OAAQ,QAAS,iBAAkB,QAAS1U,EAAGze,KAC1E,CAwjBMyhH,CAAYhjG,GAAK,CACnB,IAAIijG,EAAajjG,EAAGqU,MAAQtlB,OAAOiR,EAAGqU,MAAQ,GAAK,WAAa,QAEhE,GAAgB,SAAZrU,EAAGze,KACL,OAAOkgH,EAAW,yBAA0Bh6D,GAG9C,GAAgB,mBAAZznC,EAAGze,KACL,OAAOkgH,EAAY,0BAA4BwB,EAAax7D,GAG9D,GAAgB,UAAZznC,EAAGze,KACL,OAAOkgH,EAAW,sBAAuBh6D,GAG3C,GAAgB,SAAZznC,EAAGze,KACL,OAAOkgH,EAAW,yBAA0Bh6D,GAG9C,GAAgB,SAAZznC,EAAGze,KACL,OAAOkgH,EAAY,eAAiBwB,EAAax7D,EAErD,CAEA,OAAOA,CACT,EAEIn2C,EAAS,SAAU7R,GACrB,OAAIsiH,EAAWpjH,OAAO2S,QACb3S,OAAO2S,OAAO7R,GAKhBd,OAAO4L,KAAK9K,GAAK4M,KAAI,SAAU4wD,GAAK,OAAOx9D,EAAIw9D,EAAI,GAC5D,EAkCIvoC,EAAW,SAAUw6D,EAAYxpF,GACnC,OAAqC,IAA9BwpF,EAAWtsF,QAAQ8C,EAC5B,EAEI48G,EAAe,SAAUpiH,GAC3B,OAAOC,MAAMC,QAAQF,IAAuB,IAAfA,EAAIK,MACnC,EAEI2iH,EAAoB,SAAUzjH,EAAKiI,EAAM5I,GAC3CH,OAAOC,eAAea,EAAKiI,EAAM,CAC/B2X,cAAc,EACdC,UAAU,EACVxgB,MAAOA,GAEX,EAIIqkH,EAAS,KAETC,EAAa,SAAqBC,QAChB,IAAfA,IAAwBA,EAAa,CAAC,GAE3CxhH,KAAKkiC,UAAY,CAAC,EAClBliC,KAAK8xG,MAAM0P,EACb,EAEIC,EAAqB,CAAEC,OAAQ,CAAElkG,cAAc,IAEnDikG,EAAmBC,OAAOxtF,IAAM,WAC9B,OAAOotF,CACT,EAEAG,EAAmBC,OAAO1jF,IAAM,SAAU/gC,GACxCqkH,EAASrkH,GAAS,IACpB,EAEAskH,EAAWpjH,UAAUwjH,UAAY,SAAoBD,GACnD,QAAS1hH,KAAKkiC,UAAUw/E,EAC1B,EAEAH,EAAWpjH,UAAUyjH,cAAgB,SAAwBF,EAAQtzG,GAC9DpO,KAAKkiC,UAAUw/E,KAClB1hH,KAAKkiC,UAAUw/E,GAAU,CAAC,GAG5B1hH,KAAKkiC,UAAUw/E,GAAQG,WAAazzG,CACtC,EAEAmzG,EAAWpjH,UAAU2jH,cAAgB,SAAwBJ,GAC3D,OAAK1hH,KAAKkiC,UAAUw/E,IAAY1hH,KAAKkiC,UAAUw/E,GAAQG,WAIhD7hH,KAAKkiC,UAAUw/E,GAAQG,WAHrB,IAIX,EAEAN,EAAWpjH,UAAUwkF,WAAa,SAAqB++B,EAAQ5iH,EAAKmG,GAClE,IAAI+rB,EAAU,KAOd,OAHEA,EAHGhxB,KAAK+hH,WAAWL,EAAQ5iH,GAGjBkB,KAAKkiC,UAAUw/E,GAAQzsG,SAASnW,GAFhCkB,KAAKgiH,mBAAmBN,GAK7BxB,EAAWlvF,GAAWA,EAAQrsB,WAAM,EAAQM,GAAQ+rB,CAC7D,EAKAuwF,EAAWpjH,UAAU8jH,gBAAkB,SAA0BP,EAAQ70G,EAAO/N,EAAKmG,GACnF,IAAKjF,KAAK2hH,UAAUD,GAClB,OAAO1hH,KAAK2iF,WAAW++B,EAAQ5iH,EAAKmG,GAGtC,IAAIi9G,EAAOliH,KAAKkiC,UAAUw/E,GAAQS,QAAUniH,KAAKkiC,UAAUw/E,GAAQS,OAAOt1G,GAC1E,IAAKq1G,IAASA,EAAKpjH,GACjB,OAAOkB,KAAK2iF,WAAW++B,EAAQ5iH,EAAKmG,GAGtC,IAAI+rB,EAAUkxF,EAAKpjH,GACnB,OAAOohH,EAAWlvF,GAAWA,EAAQrsB,WAAM,EAAQM,GAAQ+rB,CAC7D,EAEAuwF,EAAWpjH,UAAU6jH,mBAAqB,SAA6BN,GACrE,OAAI1hH,KAAK+hH,WAAWL,EAAQ,YACnB1hH,KAAKkiC,UAAUw/E,GAAQzsG,SAASmtG,SAGlCpiH,KAAKkiC,UAAUmgF,GAAGptG,SAASmtG,QACpC,EAEAb,EAAWpjH,UAAUi0B,aAAe,SAAuBsvF,EAAQ5iH,EAAKwjH,GAGtE,YAFoB,IAAbA,IAAsBA,EAAW,IAEnCtiH,KAAKuiH,aAAab,EAAQ5iH,GAIxBkB,KAAKkiC,UAAUw/E,GAAQn1G,WAAWzN,GAHhCwjH,CAIX,EAEAf,EAAWpjH,UAAU4jH,WAAa,SAAqBL,EAAQ5iH,GAC7D,SACEkB,KAAK2hH,UAAUD,IACT1hH,KAAKkiC,UAAUw/E,GAAQzsG,UACvBjV,KAAKkiC,UAAUw/E,GAAQzsG,SAASnW,GAE1C,EAEAyiH,EAAWpjH,UAAUokH,aAAe,SAAuBb,EAAQ5iH,GACjE,SACEkB,KAAK2hH,UAAUD,IACT1hH,KAAKkiC,UAAUw/E,GAAQn1G,YACvBvM,KAAKkiC,UAAUw/E,GAAQn1G,WAAWzN,GAE5C,EAEAyiH,EAAWpjH,UAAU2zG,MAAQ,SAAkB0P,GAC7C1P,EAAM9xG,KAAKkiC,UAAWs/E,EACxB,EAEAD,EAAWpjH,UAAUqkH,WAAa,SAAqBd,EAAQ5iH,EAAKkyB,GAC5DhxB,KAAK2hH,UAAUD,KACnB1hH,KAAKkiC,UAAUw/E,GAAU,CACvBzsG,SAAU,CAAC,EACX1I,WAAY,CAAC,IAIZvM,KAAKkiC,UAAUw/E,GAAQzsG,WAC1BjV,KAAKkiC,UAAUw/E,GAAQzsG,SAAW,CAAC,GAGrCjV,KAAKkiC,UAAUw/E,GAAQzsG,SAASnW,GAAOkyB,CACzC,EAEAuwF,EAAWpjH,UAAUskH,aAAe,SAAuBf,EAAQ5iH,EAAK4jH,GAChE1iH,KAAK2hH,UAAUD,KACnB1hH,KAAKkiC,UAAUw/E,GAAU,CACvBzsG,SAAU,CAAC,EACX1I,WAAY,CAAC,IAIjBvM,KAAKkiC,UAAUw/E,GAAQn1G,WAAWzN,GAAO4jH,CAC3C,EAEA5lH,OAAOsgB,iBAAkBmkG,EAAWpjH,UAAWsjH,GAE/C,IAAIkB,EAAU,CACZ7kH,QAAS,IAAIyjH,EAAW,CACtBc,GAAI,CACFptG,SAAU,CAAC,EACX1I,WAAY,CAAC,EACb41G,OAAQ,CAAC,MAKXS,EAAgB,UAEhBC,EAAqB,WAAgC,EAEzDA,EAAmBC,iBAAmB,SAA2BC,GAC/D,IAAKA,EACH,MAAM9C,EAAY,mDAEtB,EAEA4C,EAAmBG,UAAY,SAAoBD,EAAQE,QAC/B,IAAnBA,IAA4BA,EAAiB,MAEpDjjH,KAAK8iH,iBAAiBC,GAClBE,IACFN,EAAQI,GAAUE,GAGpBL,EAAgBG,CAClB,EAEAF,EAAmBK,UAAY,WAC7B,OAAOP,EAAQC,EACjB,EAIA,IAAIO,EAAW,SAASA,EAAUC,EAAUz+F,QACxB,IAAby+F,IAAsBA,EAAW,WAC1B,IAAPz+F,IAAgBA,EAAK,MAE1B3kB,KAAKqjH,KAAO1+F,GAAM,KAGhB3kB,KAAK8F,MADHs9G,GAAYA,aAAoBD,EACrBC,EAASt9G,MAET,EAEjB,EAEAq9G,EAAShlH,UAA4B,mBAAXH,OAAwBA,OAAOC,SAAW,cAAgB,WAChF,IAAIqlH,EAAStjH,KAEXyK,EAAQ,EACZ,MAAO,CACLrE,KAAM,WACJ,MAAO,CAAEnJ,MAAOqmH,EAAOx9G,MAAM2E,KAAUpE,KAAMoE,EAAQ64G,EAAOx9G,MAAMpH,OACpE,EAEJ,EAKAykH,EAAShlH,UAAUqqB,IAAM,SAAclC,GACnC,IAAIla,GAELA,EAAMpM,KAAK8F,OAAOP,KAAKZ,MACtByH,EAAKpM,KAAKujH,gBAAgBj9F,GAE9B,EAKA68F,EAAShlH,UAAUolH,gBAAkB,SAA0Bj9F,GAC3D,IAAIg9F,EAAStjH,KAEf,OAAI1B,MAAMC,QAAQ+nB,GACTA,EAAM9b,KAAI,SAAUhG,GAIzB,OAHAA,EAAEg/G,MAAStE,EAAkB16G,EAAEg/G,OAAmB,KAAVh/G,EAAEg/G,MAC1Ch/G,EAAE6+G,KAAQnE,EAAkB16G,EAAE6+G,MAAkBC,EAAOD,MAAQ,KAAzB7+G,EAAE6+G,KAEjC7+G,CACT,KAGF8hB,EAAMk9F,MAAStE,EAAkB54F,EAAMk9F,OAAuB,KAAdl9F,EAAMk9F,MACtDl9F,EAAM+8F,KAAQnE,EAAkB54F,EAAM+8F,MAAsBrjH,KAAKqjH,MAAQ,KAA3B/8F,EAAM+8F,KAE7C,CAAC/8F,GACV,EAKA68F,EAAShlH,UAAUslH,WAAa,WAC9BzjH,KAAK8F,MAAMlC,SAAQ,SAAUpF,GAC3BA,EAAEiqB,IAAMy3F,EAAW1hH,EAAEilH,YAAcjlH,EAAEilH,aAAejlH,EAAEiqB,GACxD,GACF,EAKA06F,EAAShlH,UAAU05G,OAAS,SAAiBlzF,EAAI2B,GAC/C,IAAIziB,EAAOhD,EAAKb,KAAK8F,OAAO,SAAUtH,GAAK,OAAOA,EAAEmmB,KAAOA,CAAI,IAC/D,GAAK9gB,EAAL,CAIA,IAAI8gE,EAAM3kE,KAAK8F,MAAM/E,QAAQ8C,GAC7B7D,KAAK8F,MAAM4f,OAAOi/C,EAAK,GACvB9gE,EAAK2/G,MAAQl9F,EAAMk9F,MACnBxjH,KAAK8F,MAAMP,KAAK1B,EALhB,CAMF,EAKAs/G,EAAShlH,UAAUulH,IAAM,SAAcF,GACnC,IAAIF,EAAStjH,KAgBf,OAAOA,KAAK8F,MAAM9B,QAdH,SAAUH,GACvB,IAAI8/G,GAAe,EACfC,GAAY,EAShB,OARK1E,EAAkBsE,KACrBG,EAAe9/G,EAAK2/G,QAAUA,GAG3BtE,EAAkBoE,EAAOD,QAC5BO,EAAY//G,EAAKw/G,OAASC,EAAOD,MAG5BO,GAAaD,CACtB,IAEmCn5G,KAAI,SAAUhG,GAAK,OAAOA,EAAEikB,GAAK,GACtE,EAKA06F,EAAShlH,UAAU0lH,IAAM,SAAcL,GACnC,IAAIF,EAAStjH,KAgBf,QAASA,KAAK8F,MAAM9B,QAdL,SAAUH,GACvB,IAAI8/G,GAAe,EACfC,GAAY,EAShB,OARK1E,EAAkBsE,KACrBG,EAAe9/G,EAAK2/G,QAAUA,GAG3BtE,EAAkBoE,EAAOD,QAC5BO,EAAY//G,EAAKw/G,OAASC,EAAOD,MAG5BO,GAAaD,CACtB,IAEqCjlH,MACvC,EAKAykH,EAAShlH,UAAU+nD,MAAQ,SAAgBs9D,GACvC,IAAIF,EAAStjH,KAEX4jH,EAAY1E,EAAkBl/G,KAAKqjH,MAAQ,WAAc,OAAO,CAAM,EAAI,SAAU7kH,GAAK,OAAOA,EAAE6kH,OAASC,EAAOD,IAAM,EACxHM,EAAe,SAAUnlH,GAAK,OAAOA,EAAEglH,QAAUA,CAAO,EACnC,IAArB5+G,UAAUlG,OACZilH,EAAe,WAAc,OAAO,CAAM,EACjCzE,EAAkBsE,KAC3BA,EAAQ,MAGV,IAAK,IAAIhlH,EAAI,EAAGA,EAAIwB,KAAK8F,MAAMpH,SAAUF,EACnColH,EAAU5jH,KAAK8F,MAAMtH,KAAOmlH,EAAa3jH,KAAK8F,MAAMtH,MACtDwB,KAAK8F,MAAM4f,OAAOlnB,EAAG,KACnBA,EAGR,EAKA2kH,EAAShlH,UAAU2lH,QAAU,SAAkBj3G,EAAO22G,EAAOh5G,GACzD,IAAI84G,EAAStjH,UACA,IAARwK,IAAiBA,GAAM,GAE9B,IAAIu5G,GAAiB7E,EAAkBryG,KAAWA,EAAMgmB,SAAS,KAC7DmxF,EAAc,SAAUl+G,GAC1B,IAAIyiB,EAASziB,EAAMuD,QAAO,SAAUgkF,EAAY/mE,GAC9C,OAAK44F,EAAkBoE,EAAOD,OAAS/8F,EAAM+8F,OAASC,EAAOD,MAIxDh2B,EAAW/mE,EAAMzZ,SACpBwgF,EAAW/mE,EAAMzZ,OAAS,IAG5BwgF,EAAW/mE,EAAMzZ,OAAOtH,KAAKiF,EAAM8b,EAAMmC,IAAMnC,GAExC+mE,GATEA,CAUX,GAAG,CAAC,GAGJ,OAAI02B,EACKt0G,EAAO8Y,GAAQ,IAAM,GAGvBA,CACT,EAEA,GAAI22F,EAAkBryG,GACpB,OAAOm3G,EAAYhkH,KAAK8F,OAG1B,IAAIm+G,EAAW/E,EAAkBsE,GAAS14G,OAAO+B,GAAU22G,EAAQ,IAAM32G,EACrET,EAAMpM,KAAKkkH,sBAAsBD,GAC/BE,EAAY/3G,EAAI+3G,UAChBC,EAAQh4G,EAAIg4G,MAEdC,EAAYrkH,KAAK8F,MAAMuD,QAAO,SAAUqnD,EAAMub,GAShD,OARIk4C,EAAUl4C,IACZvb,EAAK4zD,QAAQ/+G,KAAK0mE,GAGhBm4C,EAAMn4C,IACRvb,EAAKoW,IAAIvhE,KAAK0mE,GAGTvb,CACT,GAAG,CAAE4zD,QAAS,GAAIx9C,IAAK,KAIvB,OAAOk9C,EAFPK,EAAYA,EAAUC,QAAQ5lH,OAAS2lH,EAAUC,QAAUD,EAAUv9C,IAGvE,EAKAq8C,EAAShlH,UAAUy1E,MAAQ,WACvB,IAAI0vC,EAAStjH,KAEf,OAAIA,KAAKqjH,KACArjH,KAAK8F,MAAM9B,QAAO,SAAUQ,GAAK,OAAOA,EAAE6+G,OAASC,EAAOD,IAAM,IAAG3kH,OAGrEsB,KAAK8F,MAAMpH,MACpB,EAKAykH,EAAShlH,UAAUomH,UAAY,SAAoB5/F,GACjD,IAAI2B,EAAQzlB,EAAKb,KAAK8F,OAAO,SAAUtH,GAAK,OAAOA,EAAEmmB,KAAOA,CAAI,IAEhE,OAAO2B,EAAQA,EAAMmC,SAAMnrB,CAC7B,EAKA6lH,EAAShlH,UAAU+vE,MAAQ,SAAgBrhE,EAAO22G,QAC/B,IAAVA,IAAmBA,EAAQ,MAElC,IAAIS,EAAW/E,EAAkBsE,GAAS32G,EAAS22G,EAAQ,IAAM32G,EAC7D6tD,EAAQ16D,KAAKwkH,OAAOP,GAExB,OAAOvpD,GAASA,EAAMjyC,GACxB,EAKA06F,EAAShlH,UAAUsmH,UAAY,SAAoB53G,EAAO22G,GACxD,IAAIj7F,EAASvoB,KAAK8jH,QAAQj3G,EAAO22G,GAAO,GAExC,OAAQj7F,EAAO7pB,QAAU6pB,EAAO,GAAGs+C,WAASvpE,CAC9C,EAKA6lH,EAAShlH,UAAUu0C,IAAM,SAAc7lC,EAAO22G,GAG5C,YAFiB,IAAVA,IAAmBA,EAAQ,QAEzBxjH,KAAKkuE,MAAMrhE,EAAO22G,EAC7B,EAKAL,EAAShlH,UAAUumH,YAAc,SAAsBnlH,EAAMsnE,EAAM28C,QAChD,IAAVA,IAAmBA,EAAQ,MAElC,IAAIl9F,EAAQtmB,KAAK8jH,QAAQvkH,EAAMikH,GAAO,GAAOx/G,QAAO,SAAUQ,GAAK,OAAOA,EAAEqiE,OAASA,CAAM,IAAG,GAE9F,OAAQvgD,GAASA,EAAMmC,UAAQnrB,CACjC,EAKA6lH,EAAShlH,UAAUwmH,SAAW,SAAmBplH,EAAMsnE,EAAM28C,QAC3C,IAAT38C,IAAkBA,EAAO,iBACf,IAAV28C,IAAmBA,EAAQ,MAElC,IAAIl9F,EAAQtmB,KAAK8jH,QAAQvkH,EAAMikH,GAAO,GAAOx/G,QAAO,SAAUQ,GAAK,OAAOA,EAAEqiE,OAASA,CAAM,IAAG,GAE9F,OAAQvgD,GAASA,EAAMmC,UAAQnrB,CACjC,EAKA6lH,EAAShlH,UAAUymH,WAAa,SAAqBjgG,GACnD,IAAIkgG,EAAY,SAAUhhH,GAAQ,OAAOA,EAAK8gB,KAAOA,CAAI,EACrDrmB,MAAMC,QAAQomB,KAChBkgG,EAAY,SAAUhhH,GAAQ,OAAgC,IAAzB8gB,EAAG5jB,QAAQ8C,EAAK8gB,GAAY,GAGnE,IAAK,IAAInmB,EAAI,EAAGA,EAAIwB,KAAK8F,MAAMpH,SAAUF,EACnCqmH,EAAU7kH,KAAK8F,MAAMtH,MACvBwB,KAAK8F,MAAM4f,OAAOlnB,EAAG,KACnBA,EAGR,EAKA2kH,EAAShlH,UAAUkZ,OAAS,SAAiBxK,EAAO22G,EAAOH,GACzD,IAAInE,EAAkBryG,GAetB,IAXA,IAK6BhJ,EALzBogH,EAAW/E,EAAkBsE,GAAS14G,OAAO+B,GAAU22G,EAAQ,IAAM32G,EACrET,EAAMpM,KAAKkkH,sBAAsBD,GAC/BE,EAAY/3G,EAAI+3G,UAChBC,EAAQh4G,EAAIg4G,MACdr3E,EAAU,SAAUlpC,GAAQ,OAAOsgH,EAAUtgH,IAASugH,EAAMvgH,EAAO,EAO9DrF,EAAI,EAAGA,EAAIwB,KAAK8F,MAAMpH,SAAUF,EANZqF,EAOV7D,KAAK8F,MAAMtH,IANxB0gH,EAAkBmE,GAAgBt2E,EAAQlpC,GAEvCkpC,EAAQlpC,IAASA,EAAKw/G,OAASA,KAKpCrjH,KAAK8F,MAAM4f,OAAOlnB,EAAG,KACnBA,EAGR,EAEA2kH,EAAShlH,UAAU+lH,sBAAwB,SAAgCD,GACvE,IAAIX,EAAStjH,KAEX8kH,EAAc,WAAc,OAAO,CAAM,EACzCnB,EAAe,WAAc,OAAO,CAAM,EAC1CoB,EAAc,WAAc,OAAO,CAAM,EACzCnB,EAAY,WAAc,OAAO,CAAM,EAEvCx3G,EAxiBc,SAAU63G,GAC5B,IAAIp9C,EAAO,KAMX,GALIh0C,EAASoxF,EAAU,OACrBp9C,EAAOo9C,EAASx7G,MAAM,KAAKU,MAC3B86G,EAAWA,EAASl7G,QAAS,IAAM89D,EAAO,KAGxB,MAAhBo9C,EAAS,GACX,MAAO,CACLt/F,GAAIs/F,EAASr5G,MAAM,GACnBi8D,KAAMA,EACNtnE,KAAM,KACNikH,MAAO,MAIX,IAAIA,EAAQ,KACRjkH,EAAO0kH,EACX,GAAIpxF,EAASoxF,EAAU,KAAM,CAC3B,IAAInnC,EAAQmnC,EAASx7G,MAAM,KAC3B+6G,EAAQ1mC,EAAM,GACdv9E,EAAOu9E,EAAMlyE,MAAM,GAAGC,KAAK,IAC7B,CAEA,MAAO,CACL8Z,GAAI,KACJ6+F,MAAOA,EACPjkH,KAAMA,EACNsnE,KAAMA,EAEV,CA0gBYm+C,CAAcf,GAClBt/F,EAAKvY,EAAIuY,GACTkiD,EAAOz6D,EAAIy6D,KACX28C,EAAQp3G,EAAIo3G,MACZjkH,EAAO6M,EAAI7M,KAOjB,GALIsnE,IACFi+C,EAAc,SAAUjhH,GAAQ,OAAOA,EAAKgjE,OAASA,CAAM,GAIzDliD,EACF,MAAO,CACLw/F,UAAW,SAAUtgH,GAAQ,OAAOihH,EAAYjhH,IAAS,SAAWA,GAAQ,OAAO8gB,IAAO9gB,EAAK8gB,EAAK,CAAG,EACvGy/F,MAAO,WAAc,OAAO,CAAO,GAMrCT,EAFEzE,EAAkBsE,GAEL,SAAU3/G,GAAQ,OAAOq7G,EAAkBr7G,EAAK2/G,MAAQ,EAExD,SAAU3/G,GAAQ,OAAOA,EAAK2/G,QAAUA,CAAO,EAG3DtE,EAAkB3/G,IAAkB,MAATA,IAC9BwlH,EAAc,SAAUlhH,GAAQ,OAAOA,EAAKgJ,QAAUtN,CAAM,GAGzD2/G,EAAkBl/G,KAAKqjH,QAC1BO,EAAY,SAAU//G,GAAQ,OAAOA,EAAKw/G,OAASC,EAAOD,IAAM,GAalE,MAAO,CACLc,UAVc,SAAUtgH,GACxB,OAAO+/G,EAAU//G,IAASkhH,EAAYlhH,IAASihH,EAAYjhH,IAAS8/G,EAAa9/G,EACnF,EASEugH,MANU,SAAUvgH,GACpB,OAAO+/G,EAAU//G,IAASihH,EAAYjhH,IAASA,EAAKgJ,QAAW22G,EAAQ,IAAMjkH,CAC/E,EAMF,EAEA4jH,EAAShlH,UAAUqmH,OAAS,SAAiBP,GAC3C,IAAI/E,EAAkB+E,GAAtB,CAIA,IAAI73G,EAAMpM,KAAKkkH,sBAAsBD,GAC/BE,EAAY/3G,EAAI+3G,UAChBC,EAAQh4G,EAAIg4G,MAElB,OAAOpkH,KAAK8F,MAAMuD,QAAO,SAAUqnD,EAAM7sD,EAAM8gE,EAAKtmE,GAClD,IAAI4mH,EAAStgD,IAAQtmE,EAAIK,OAAS,EAClC,OAAIgyD,EAAK4zD,QACAW,EAASv0D,EAAK4zD,QAAU5zD,GAG7ByzD,EAAUtgH,KACZ6sD,EAAK4zD,QAAUzgH,GAGbugH,EAAMvgH,KACR6sD,EAAKoW,IAAMjjE,GAIRohH,EAIEv0D,EAAK4zD,SAAW5zD,EAAKoW,IAHnBpW,EAIX,GAAG,CAAC,EA1BJ,CA2BF,EAEA,IAmBIw0D,EAAgBngH,EAAO,CAAC,EAnBP,CACnB28G,OAAQ,KACRvR,MAAO,EACPgV,aAAc,SACd3D,WAAY,KACZ4D,cAAe,SACfC,SAAS,EACTC,WAAY,KACZC,OAAQ,QACRC,QAAQ,EACRC,UAAU,EACVC,MAAM,EACNC,UAAU,EACVlsF,KAAM,aACNmsF,oBAAoB,EACpBC,KAAM,KACNC,YAAa,eAKXC,EAAgB,SAAUC,GAC5B,IAAIC,EAAazG,EAAQ,yBAA0BwG,EAAK,CAAC,GAEzD,OAAOjhH,EAAO,CAAC,EAAGmgH,EAAee,EACnC,EAEIC,EAAY,WAAc,OAAOhB,CAAe,EAEhDiB,EAAY,SAAUC,GACxBlB,EAAgBngH,EAAO,CAAC,EAAGmgH,EAAekB,EAC5C,EAKA,SAASC,EAAWvF,GAClB,OAAKA,EAAM77G,KAKP67G,EAAM77G,KAAKoH,MACNy0G,EAAM77G,KAAKoH,QAGVy0G,EAAM77G,KAAe,YAAKpE,EAAKigH,EAAM77G,KAAKqhH,YAAY,SAAU7lF,GAAK,MAAkB,UAAXA,EAAElhC,IAAkB,IARjG,IASX,CAkBA,SAASgnH,EAAezF,GACtB,GAAIuF,EAAUvF,GACZ,MAAO,CAACA,GAGV,IAAIhrE,EArBN,SAA0BgrE,GACxB,OAAIxiH,MAAMC,QAAQuiH,GACTA,EAGLxiH,MAAMC,QAAQuiH,EAAMhrE,UACfgrE,EAAMhrE,SAGXgrE,EAAMh3G,kBAAoBxL,MAAMC,QAAQuiH,EAAMh3G,iBAAiBgsC,UAC1DgrE,EAAMh3G,iBAAiBgsC,SAGzB,EACT,CAOiB0wE,CAAgB1F,GAE/B,OAAOhrE,EAASzsC,QAAO,SAAU+hE,EAAOq7C,GACtC,IAAIC,EAAaH,EAAcE,GAK/B,OAJIC,EAAWhoH,QACb0sE,EAAM7lE,KAAKZ,MAAMymE,EAAOs7C,GAGnBt7C,CACT,GAAG,GACL,CAGA,SAASu7C,EAAiB7F,GACxB,OAAKA,EAAMh3G,iBAEJg3G,EAAMh3G,iBAAiBuuF,KAAKtwF,QAAQsE,MAFL,IAGxC,CAEA,SAASu6G,EAAqBhpH,EAAKgL,EAAW4W,GAE5C,GAAI0gG,EAAWtiH,EAAIgL,IAAa,CAC9B,IAAIi+G,EAAcjpH,EAAIgL,GACtBhL,EAAIgL,GAAa,CAACi+G,EACpB,CAGI3H,EAAkBthH,EAAIgL,MACxBhL,EAAIgL,GAAa,IAGnBhL,EAAIgL,GAAWrD,KAAKia,EACtB,CAoBA,SAASsnG,EAAkBhG,EAAOl4G,EAAW4W,GACvCshG,EAAMh3G,iBATZ,SAAmC28G,EAAM79G,EAAW4W,GAE7CinG,EAAK38G,iBAAiBrC,YACzBg/G,EAAK38G,iBAAiBrC,UAAY,CAAC,GAGrCm/G,EAAoBH,EAAK38G,iBAAiBrC,UAAWmB,EAAW4W,EAClE,CAGIunG,CAAyBjG,EAAOl4G,EAAW4W,GAnB/C,SAAgCinG,EAAM79G,EAAW4W,GAC3C0/F,EAAkBuH,EAAKxhH,KAAKwmB,MAC9Bg7F,EAAKxhH,KAAKwmB,GAAK,CAAC,GAGlBm7F,EAAoBH,EAAKxhH,KAAKwmB,GAAI7iB,EAAW4W,EAC/C,CAiBEwnG,CAAsBlG,EAAOl4G,EAAW4W,EAC1C,CAEA,SAASynG,EAAmBnG,EAAOz0G,GAEjC,OAAIy0G,EAAMh3G,kBACE68G,EAAgB7F,IAAU,CAAEn4G,MAAO,UAC7BA,MAMb0D,GAASA,EAAM66G,WAAa76G,EAAM66G,UAAUC,MAAuB,WAAdrG,EAAMv6G,IACvD,SAILu6G,EAAM77G,KAAKsgE,OAASu5C,EAAY,CAAEp/G,KAAMohH,EAAM77G,KAAKsgE,MAAM7lE,MAAQ,SAC5D,QAGF,QACT,CAiBA,SAAS0nH,EAAkBjoH,EAAG22C,GAE5B,OAAIx3C,MAAMC,QAAQu3C,IAAaA,EAAS,GAC/BA,EAAS,GAIdA,GAKG32C,GACT,CAKA,IAAIkoH,EAAW,WAAsB,EAErCA,EAASC,SAAW,SAAmBnpG,EAAI8sE,EAAS61B,GAClD,IAAIz0G,EAAQg7G,EAASE,aAAat8B,EAAS61B,GACvC/4G,EAAUg+G,EAAcjF,EAAMz3F,SAElC,MAAO,CACL9pB,KAAM8nH,EAASG,YAAYrpG,EAAI2iG,GAC/B3iG,GAAIA,EACJspG,QAASx8B,EAAQi8B,UAAUt/C,QAC3B8/C,QAAOz8B,EAAQi8B,UAAUQ,QAAgD,IAAhCz8B,EAAQi8B,UAAUS,gBAA6BrqH,EACxFkmH,MAAO6D,EAASO,aAAazpG,EAAI8sE,EAAS61B,GAC1C+G,GAAI/G,EAAMz3F,QACVy+F,WAAY78B,EAAQhuF,MACpB2K,UAAWk5G,EAAMr6G,kBACjB4+G,QAASt9G,EAAQs9G,QACjBC,WAAYv9G,EAAQu9G,WACpByC,OAAQV,EAASW,cAAc7pG,EAAI2iG,EAAOz0G,GAC1Ck5G,OAAQ8B,EAASY,cAAc9pG,EAAI2iG,IAAU/4G,EAAQw9G,OACrDl5G,MAAOA,EACP8jG,MAAOkX,EAASa,aAAa/pG,EAAI2iG,EAAO/4G,GACxC69C,MAAOyhE,EAASc,aAAahqG,EAAI8sE,EAAS61B,GAC1CvhG,YAAa0rE,EAAQi8B,UAAUv2C,WAAasa,EAAQi8B,UAAU3nG,UAC9D6oG,UAAWn9B,EAAQi8B,UAAUkB,QAC7BzC,SAAU59G,EAAQ49G,WAAa7E,EAAMr6G,kBACrCi/G,KAAM39G,EAAQ29G,OAAS5E,EAAMr6G,kBAC7B4hH,aAAchB,EAASiB,oBAAoBxH,GAE/C,EAEAuG,EAASkB,cAAgB,SAAwBzH,GAC/C,OAAKA,EAAMr6G,kBAEE+4G,EAAQ,2CAA4CsB,GAF1B,IAKzC,EAKAuG,EAASc,aAAe,SAAuBhqG,EAAI8sE,EAAS61B,GAC1D,IAAIl7D,EAAQ,GAWZ,GAVKqlC,EAAQhuF,OAAWguF,GAAYA,EAAQ68B,aAC1CliE,EAAQo5D,EAAiB7gG,EAAI,UAG3B8sE,EAAQhuF,OAAS41B,EAAS,CAAC,SAAU,iBAAkBo4D,EAAQhuF,MAAM2oD,OACvEA,EAAQqlC,EAAQhuF,MAAM2oD,MACbqlC,EAAQhuF,QACjB2oD,EAAQqlC,EAAQhuF,OAGd6jH,EAAMr6G,kBACR,OAAOm/C,EAIT,IAAI4iE,EAAa3I,EAAej6D,GAChC,OAAKsgE,IAAYN,mBAIV7gH,EAAO,CAAC,EAAGk8G,EAAqB9iG,EAAI,CAAC,GAAIqqG,GAHvCA,CAIX,EAKAnB,EAASiB,oBAAsB,SAA8BxH,GAC3D,IAAIz0G,EAAQy0G,EAAM77G,KAAKoH,OAASxL,EAAKigH,EAAM77G,KAAKqhH,YAAY,SAAU7lF,GAAK,MAAkB,UAAXA,EAAElhC,IAAkB,IAEtG,OAAO8M,GAASA,EAAMpP,KACxB,EAQAoqH,EAASa,aAAe,SAAuB/pG,EAAI2iG,EAAO/4G,GACxD,IAAIooG,EAAQ6O,EAAiB7gG,EAAI,SAC7BsqG,EAAe1gH,GAAW,UAAWA,EAAWA,EAAQooG,MAAQ,EAMpE,OAJKA,GAAS2Q,EAAMr6G,mBAAqBq6G,EAAMr6G,kBAAkB9D,SAC/DwtG,EAAQ2Q,EAAMr6G,kBAAkB9D,OAAO,kBAGpCyxF,EAASq0B,IAITvJ,EAAkB/O,KACrBsY,EAAY3iE,MAAQqqD,GAGf4Q,EAAa0H,IAPX1H,EAAa5Q,GAASsY,EAQjC,EAOApB,EAASY,cAAgB,SAAwB9pG,EAAI2iG,GAEnD,IAAIyE,EAASvG,EAAiB7gG,EAAI,eAQlC,IALKonG,GAAUzE,EAAMr6G,mBAAqBq6G,EAAMr6G,kBAAkB9D,SAChE4iH,EAASzE,EAAMr6G,kBAAkB9D,OAAO,yBAIrC4iH,GAAUzE,EAAMr6G,kBAAmB,CACtC,IAAIma,EAASymG,EAASkB,cAAczH,GACpCyE,EAAS3kG,GAAUA,EAAO2kG,MAC5B,CAOA,IALKA,GAAUW,IAAYX,SACzBA,EAASW,IAAYX,QAInBA,GAAUzE,EAAMr6G,mBAAqBosB,EAAS0yF,EAAQ,SAAU,CAClE,IACM58G,GADIm4G,EAAMr6G,kBAAkB7E,SAASyK,OAAS,CAAE1D,MAAO,UAC3CA,MAElB,IAAKA,EACH,OAAO48G,EAGTA,EAASA,EAAOx8G,QAAQ,QAASJ,EACnC,CAEA,OAAO48G,CACT,EAOA8B,EAASO,aAAe,SAAuBzpG,EAAI8sE,EAAS61B,QACzC,IAAVA,IAAmBA,EAAQ,CAAC,GAEnC,IAAI0C,EAAQ,KAKZ,OAJI1C,EAAMr6G,mBAAqBy4G,EAAkBsE,KAC/CA,EAAQ1C,EAAMr6G,kBAAkB9D,QAAUm+G,EAAMr6G,kBAAkB9D,OAAO,kBAGnEu8G,EAAkBsE,GAr9Cb,SAAUrlG,GACvB,IAAIqlG,EAAQxE,EAAiB7gG,EAAI,SACjC,GAAI+gG,EAAkBsE,GAAQ,CAC5B,IAAI9kG,EAAO4gG,EAAQnhG,GAEfO,IACF8kG,EAAQxE,EAAiBtgG,EAAM,SAEnC,CAEA,OAAQwgG,EAAkBsE,GAAiB,KAARA,CACrC,CA08C6CkF,CAASvqG,GAAjBqlG,CACrC,EAQA6D,EAASE,aAAe,SAAuBt8B,EAAS61B,GACtD,GAAI71B,EAAQiE,IACV,MAAO,CAAE44B,WAAY78B,EAAQiE,KAG/B,IAAI7iF,EAAQg6G,EAAUvF,GACtB,IAAKz0G,EACH,OAAO,KAIT,IAAIs8G,GAAa,UAAU9pG,KAAKxS,EAAMy7G,aAp7C1B,SAAU9sB,EAAM39E,GAC5B,IAAIzf,EAAMyf,EACNurG,EAAe,KAwBnB,OAtBkB5tB,EAAKvyF,MAAM,KAAKY,QAAO,SAAUw/G,EAAShjH,GAC1D,OAAW,MAAPjI,GAA8B,iBAARA,EAEjBirH,IAAW,EAGhBhjH,KAAQjI,GACVA,EAAMA,EAAIiI,GACV+iH,EAAgC,OAAjBA,EAAwB/iH,EAAO+iH,EAAe,IAAM/iH,EAE5DgjH,IAAW,GAGbA,IAAW,CACpB,IAAG,EASL,CAy5CuDvd,CAAQj/F,EAAMy7G,WAAYhH,EAAMz3F,SACjF89F,KAAU96G,EAAM66G,YAAa76G,EAAM66G,UAAUC,MAEjD,OAAKwB,EAIE,CAAEb,WAAYz7G,EAAMy7G,WAAYX,KAAMA,GAHpC,CAAEW,WAAY,KAAMX,KAAMA,EAIrC,EAMAE,EAASG,YAAc,SAAsBrpG,EAAI2iG,GAC/C,IAAIvhH,EAAOy/G,EAAiB7gG,EAAI,QAEhC,IAAK5e,IAASuhH,EAAMr6G,kBAClB,OAAO0X,EAAG5e,KAOZ,IAJKA,GAAQuhH,EAAMr6G,mBAAqBq6G,EAAMr6G,kBAAkB9D,SAC9DpD,EAAOuhH,EAAMr6G,kBAAkB9D,OAAO,iBAAmBm+G,EAAMr6G,kBAAkB9D,OAAa,OAG3FpD,GAAQuhH,EAAMr6G,kBAAmB,CACpC,IAAIma,EAASymG,EAASkB,cAAczH,GACpC,OAAIlgG,GAAUs/F,EAAWt/F,EAAOrhB,MACZqhB,EAAOrhB,KAAK0M,KAAK60G,EAAMr6G,kBAElCqiH,GAGFhI,EAAMr6G,kBAAkBlH,IACjC,CAEA,OAAOA,CACT,EAKA8nH,EAASW,cAAgB,SAAwB7pG,EAAI2iG,EAAOz0G,GAC1D,GAAIA,GAASA,EAAMy7G,WACjB,OAAO,WACL,OAAOtI,EAAQnzG,EAAMy7G,WAAYhH,EAAMz3F,QACzC,EAGF,GAAIy3F,EAAMr6G,kBAAmB,CAC3B,IAAIu0F,EAAOgkB,EAAiB7gG,EAAI,eAAkB2iG,EAAMr6G,kBAAkB9D,QAAUm+G,EAAMr6G,kBAAkB9D,OAAO,sBACnH,GAAIq4F,EACF,OAAO,WACL,OAAOwkB,EAAQxkB,EAAM8lB,EAAMr6G,kBAC7B,EAGF,IAAIma,EAASymG,EAASkB,cAAczH,GACpC,GAAIlgG,GAAUs/F,EAAWt/F,EAAO3jB,OAAQ,CACtC,IAAI6rH,EAAcloG,EAAO3jB,MAAMgP,KAAK60G,EAAMr6G,mBAE1C,OAAO,WACL,OAAOqiH,GACT,CACF,CAEA,IACMjjH,GADIi7G,EAAMr6G,kBAAkB7E,SAASyK,OAAS,CAAExG,KAAM,UAC3CA,KAEjB,OAAO,WACL,OAAOi7G,EAAMr6G,kBAAkBZ,EACjC,CACF,CAEA,OAAQsY,EAAGze,MACX,IAAK,WAAY,OAAO,WACtB,IAAIqpH,EAAM3jH,SAASmrB,iBAAkB,eAAmBpS,EAAO,KAAI,MAGnE,GADA4qG,EAAMx3F,EAAQw3F,GAAK/kH,QAAO,SAAUma,GAAM,OAAOA,EAAG6G,OAAS,IACxD+jG,EAAIrqH,OAET,OAAOqqH,EAAIv+G,KAAI,SAAUmrC,GAAY,OAAOA,EAAS14C,KAAO,GAC9D,EACA,IAAK,QAAS,OAAO,WACnB,IAAI8rH,EAAM3jH,SAASmrB,iBAAkB,eAAmBpS,EAAO,KAAI,MAC/D6qG,EAAMnoH,EAAKkoH,GAAK,SAAU5qG,GAAM,OAAOA,EAAG6G,OAAS,IAEvD,OAAOgkG,GAAOA,EAAI/rH,KACpB,EACA,IAAK,OAAQ,OAAO,SAAUosB,GAC5B,OAAOkI,EAAQpT,EAAGigB,MACpB,EACA,IAAK,kBAAmB,OAAO,WAC7B,OAAO7M,EAAQpT,EAAGpW,SAAS/D,QAAO,SAAUkjE,GAAO,OAAOA,EAAIr4C,QAAU,IAAGrkB,KAAI,SAAU08D,GAAO,OAAOA,EAAIjqE,KAAO,GACpH,EACA,QAAS,OAAO,WACd,OAAOkhB,GAAMA,EAAGlhB,KAClB,EAEF,EAEA,IAAIgsH,GAAQ,CAAC,EAETC,GAAgB,WAA2B,EAE3CC,GAAkB,CAAEvjE,MAAO,CAAEpoC,cAAc,IAE/C0rG,GAAc1gG,IAAM,SAAcjpB,EAAM6M,GACpC,IAAI66B,EAAW76B,EAAI66B,SACfl/B,EAAUqE,EAAIrE,QACdqhH,EAAah9G,EAAIg9G,WAEvBH,GAAM1pH,GAAQ,CACZ0nC,SAAUA,EACVl/B,QAASA,EACTqhH,WAAYA,EAEhB,EAEAD,GAAgBvjE,MAAM1xB,IAAM,WAC1B,OAAO+0F,EACT,EAEAC,GAAcx2E,IAAM,SAAcnzC,GAChC,QAAS0pH,GAAM1pH,EACjB,EAEA2pH,GAAcG,YAAc,SAAsB9pH,GAChD,SAAU0pH,GAAM1pH,KAAS0pH,GAAM1pH,GAAMwI,QAAQwX,UAC/C,EAEA2pG,GAAcI,cAAgB,SAAwB/pH,GACpD,SAAU0pH,GAAM1pH,KAAS0pH,GAAM1pH,GAAMwI,QAAQwhH,iBAC/C,EAEAL,GAAcM,aAAe,SAAuBjqH,GAClD,SAAU0pH,GAAM1pH,KAAS0pH,GAAM1pH,GAAMwI,QAAQ0hH,UAC/C,EAEAP,GAAc7xG,OAAS,SAAiBiwD,UAC/B2hD,GAAM3hD,EACf,EAEA4hD,GAAcQ,cAAgB,SAAwBpiD,GACpD,OAAO2hD,GAAM3hD,IAAa2hD,GAAM3hD,GAAU8hD,UAC5C,EAEAF,GAAcx3D,WAAa,SAAqB4V,GAC9C,OAAO2hD,GAAM3hD,IAAa2hD,GAAM3hD,GAAUv/D,OAC5C,EAEAmhH,GAAcS,mBAAqB,SAA6BriD,GAC9D,OAAO2hD,GAAM3hD,GAAY2hD,GAAM3hD,GAAUrgC,SAAW,IACtD,EAEAnqC,OAAOsgB,iBAAkB8rG,GAAeC,IAIxC,IAAIS,GAAU,SAAUnrG,GACtB,MAAyB,oBAAVorG,OAAyB3J,EAAW2J,QAAUprG,aAAeorG,OAAWprG,GAAOA,EAAIqrG,UACpG,EAEIC,GAAkB,SAAUC,GAC9B,OAAKA,EAEmB,iBAATA,EAAoBA,EAAKvhH,MAAM,KAAOuhH,EAFjC,EAGtB,EAEIC,IAAkB,EAiBlBC,GAAmB,SAAU/rG,EAAIvV,EAAW8lB,GAC9CvQ,EAAG+rG,iBAAiBthH,EAAW8lB,IAAIu7F,IAAkB,CAAEE,SAAS,GAClE,EAIIC,GAAkB,CACpBC,SAAU,KACV9qG,WAAW,EACX6oG,SAAS,EACT5E,MAAO,KACPiE,QAAQ,EACRloH,KAAM,KACNqmD,MAAO,CAAC,EACRiiE,GAAI,KACJxC,SAAS,EACTM,UAAU,EACVD,MAAM,EACNH,OAAQ,aACRpV,MAAO,EACPmV,WAAY,CACVgF,QAAS,UACTC,UAAW,YACXC,MAAO,QACPC,QAAS,UACTC,SAAU,WACVC,MAAO,UAIPC,GAAQ,SAAgB7iH,QACT,IAAZA,IAAqBA,EAAU,CAAC,GAErC/H,KAAK2kB,IA52CDA,GAAM,OACRA,EAAK,EAELi8F,EAAaA,EAAW73G,QAAQ,OAAQ,UAG1C4b,IACYi8F,EAAW73G,QAAQ,OAAQ+B,OAAO6Z,KAs2C9C3kB,KAAKme,GAAKpW,EAAQoW,GAClBne,KAAKoB,SAAU,EACfpB,KAAKqjH,KAAOt7G,EAAQs7G,KACpBhC,EAAkBrhH,KAAM,eAAgB,IACxCqhH,EAAkBrhH,KAAM,WAAY,IACpCqhH,EAAkBrhH,KAAM,SAAU,IAClCA,KAAKmwG,MAAQ,EACbnwG,KAAK4lD,MAAQ,CAAC,EACd5lD,KAAK6qH,eAAgB,EACrB7qH,KAAK8qH,SAAS/iH,GACd/H,KAAKslH,WAAavgH,EAAO,CAAC,EAAGqlH,GAAgB9E,YAC7Cv9G,EAAUhD,EAAO,CAAC,EAAGqlH,GAAiBriH,GACtC/H,KAAK+qH,OAAU7L,EAAkBn3G,EAAQooG,OAAyB,EAAhBpoG,EAAQooG,MAC1DnwG,KAAK2lH,SAAW59G,EAAQ49G,SACxB3lH,KAAK0lH,KAAO39G,EAAQ29G,KACpB1lH,KAAKq/G,MAAQt3G,EAAQs3G,OAxwDgB,CACrCkL,WAAW,EACXD,SAAS,EACTK,OAAO,EACPD,UAAU,EACVF,MAAO,KACPC,QAAS,KACTO,WAAW,EACX/3C,SAAS,EACT3rD,UAAU,EACV2jG,SAAS,GA+vDT5J,EAAkBrhH,KAAM,KAAM+H,EAAQ8/G,IACtCxG,EAAkBrhH,KAAM,oBAAqB+H,EAAQH,WACrD5H,KAAKkrH,WAAalrH,KAAKyG,kBAAoB+4G,EAAQ,yBAA0Bx/G,KAAKyG,wBAAqBnJ,EACvG0C,KAAK63G,OAAO9vG,GAEZ/H,KAAKqoH,aAAeroH,KAAK/C,MACzB+C,KAAKoB,SAAU,CACjB,EAEI+pH,GAAuB,CAAEC,UAAW,CAAE5tG,cAAc,GAAO6tG,WAAY,CAAE7tG,cAAc,GAAO8tG,WAAY,CAAE9tG,cAAc,GAAOq9D,MAAO,CAAEr9D,cAAc,GAAOvgB,MAAO,CAAEugB,cAAc,GAAOkqG,MAAO,CAAElqG,cAAc,GAAO+tG,aAAc,CAAE/tG,cAAc,IAE7P2tG,GAAqBC,UAAUl3F,IAAM,WACnC,OAAKl0B,KAAK6nH,IAAO7nH,KAAK6nH,GAAGjiG,WAIlB5lB,KAAK6nH,GAAGjiG,WAHN,CAAEqhB,SAAU,WAAc,OAAOpX,QAAQC,SAAQ,EAAO,EAInE,EAEAq7F,GAAqBE,WAAWn3F,IAAM,WACpC,QAASl0B,KAAK4lD,MAAMt+B,UAAYtnB,KAAK6qH,aACvC,EAEAM,GAAqBG,WAAWp3F,IAAM,WACpC,SAAUl0B,KAAKme,KAAMne,KAAKme,GAAG1e,SAC/B,EAKA0rH,GAAqBtwC,MAAM3mD,IAAM,WAC/B,GAAIl0B,KAAKwrH,OACP,OAAOxrH,KAAKwrH,OAGd,IAAI3wC,EAAQ,KASZ,OARI76E,KAAKkrH,YAAclrH,KAAKkrH,WAAWrwC,QACrCA,EAAQqlC,EAAWlgH,KAAKkrH,WAAWrwC,OAAS76E,KAAKkrH,WAAWrwC,MAAM77E,KAAKgB,KAAKyG,mBAAqBzG,KAAKkrH,WAAWrwC,QAG9GA,GAAS76E,KAAKme,KACjB08D,EAAQmkC,EAAiBh/G,KAAKme,GAAI,QAG/B08D,GAAS76E,KAAKyG,kBACVzG,KAAKyG,kBAAkB9D,QAAU3C,KAAKyG,kBAAkB9D,OAAO,cAGjEk4E,CACT,EAMAswC,GAAqBluH,MAAMi3B,IAAM,WAC/B,GAAKgsF,EAAWlgH,KAAK+nH,QAIrB,OAAO/nH,KAAK+nH,QACd,EAEAoD,GAAqBzD,MAAMxzF,IAAM,WAC/B,OAAOl0B,KAAKyrH,MACd,EAMAN,GAAqBI,aAAar3F,IAAM,WACtC,OAAIl0B,KAAKyG,mBAAqBzG,KAAKkrH,aACxBlrH,KAAKkrH,WAAWK,eAGtBvrH,KAAKme,IAIc,aAAjBne,KAAKme,GAAGze,IACjB,EAKAkrH,GAAMzsH,UAAU4uC,QAAU,SAAkBhlC,GACxC,IAAIu7G,EAAStjH,KAEf,IAAK+H,EACH,OAAO,EAGT,GAAIA,EAAQ4c,GACV,OAAO3kB,KAAK2kB,KAAO5c,EAAQ4c,GAG7B,IAAI+mG,EAAqBxM,EAAkBn3G,EAAQs7G,MAAQ,WAAc,OAAO,CAAM,EAAI,SAAU1+F,GAAM,OAAOA,IAAO2+F,EAAOD,IAAM,EACrI,QAAKqI,EAAmB3jH,EAAQs7G,aAIX/lH,IAAjByK,EAAQxI,WAAwCjC,IAAlByK,EAAQy7G,aAIpBlmH,IAAlByK,EAAQy7G,MACHxjH,KAAKT,OAASwI,EAAQxI,UAGVjC,IAAjByK,EAAQxI,KACHS,KAAKwjH,QAAUz7G,EAAQy7G,MAGzBz7G,EAAQxI,OAASS,KAAKT,MAAQwI,EAAQy7G,QAAUxjH,KAAKwjH,OAC9D,EAKAoH,GAAMzsH,UAAU2sH,SAAW,SAAmB/iH,GACxC/H,KAAKme,KAAOpW,EAAQsiH,WACtBrqH,KAAKme,GAAGwtG,eAAiB3rH,KAAK2kB,GAElC,EAKAimG,GAAMzsH,UAAUytH,QAAU,SAAkBC,GAC1C7rH,KAAK8rH,YAAcD,CACrB,EAEAjB,GAAMzsH,UAAU4tH,aAAe,SAAuBC,GACpD,OAAOhsH,KAAK8rH,cAAgBE,CAC9B,EAKApB,GAAMzsH,UAAU05G,OAAS,SAAiB9vG,GACtC,IA/9C4Bw9G,EAAQpV,EAAO8b,EA+9CvC3I,EAAStjH,KAmCf,GAjCAA,KAAKqqH,SAAWtiH,EAAQsiH,UAAY,KACpCrqH,KAAKuf,UAAYxX,EAAQwX,WAAavf,KAAKuf,YAAa,EACxDvf,KAAKooH,QAAUrgH,EAAQqgH,SAAWpoH,KAAKooH,UAAW,GAG7ClJ,EAAkBn3G,EAAQy7G,QAAUz7G,EAAQy7G,QAAUxjH,KAAKwjH,OAAStD,EAAWlgH,KAAKorH,UAAUvT,SACjG73G,KAAKorH,UAAUvT,OAAO73G,KAAK2kB,GAAI,CAAE6+F,MAAOz7G,EAAQy7G,QAElDxjH,KAAKwjH,MAAStE,EAAkBn3G,EAAQy7G,OACnCtE,EAAkBl/G,KAAKwjH,OAAsB,KAAbxjH,KAAKwjH,MADOz7G,EAAQy7G,MAEzDxjH,KAAKT,MAAS2/G,EAAkBn3G,EAAQxI,MAA+BwI,EAAQxI,KAA/BuL,OAAO/C,EAAQxI,QAAyBS,KAAKT,MAAQ,KACrGS,KAAK4lD,WAA0BtoD,IAAlByK,EAAQ69C,MAAsBi6D,EAAe93G,EAAQ69C,OAAS5lD,KAAK4lD,MAChF5lD,KAAKyrH,YAA2BnuH,IAAlByK,EAAQ2/G,MAAsB3/G,EAAQ2/G,MAAQ1nH,KAAKyrH,OACjEzrH,KAAKqM,MAAQtE,EAAQsE,OAASrM,KAAKqM,MACnCrM,KAAKynH,YAA4BnqH,IAAnByK,EAAQ0/G,OAAuB1/G,EAAQ0/G,OAASznH,KAAKynH,OACnEznH,KAAKqlH,WAAWt9G,EAAQs9G,UAAWrlH,KAAKqlH,WAAsBrlH,KAAKyG,kBACnEzG,KAAKslH,WAAalxB,EAASrsF,EAAQu9G,YAAcxT,EAAM9xG,KAAKslH,WAAYv9G,EAAQu9G,YAActlH,KAAKslH,WACnGtlH,KAAK+nH,OAAS7H,EAAWn4G,EAAQggH,QAAUhgH,EAAQggH,OAAS/nH,KAAK+nH,OACjE/nH,KAAKwrH,OAASzjH,EAAQ8yE,OAAS76E,KAAKwrH,OACpCxrH,KAAKulH,OAAUx9G,EAAc,OAAIgiH,GAAgBhiH,EAAQw9G,QAAUvlH,KAAKulH,OACxEvlH,KAAKmwG,OAr/CyBoV,EAq/CDvlH,KAAKulH,OAr/CIpV,EAq/CIpoG,EAAQooG,OAASnwG,KAAKmwG,MAr/CnB8b,EAq/C0BjsH,KAAK+qH,OAp/CvD,iBAAV5a,EACFoV,EAAOl8G,QAAO,SAAUqnD,EAAMlsD,GAEnC,OADAksD,EAAKlsD,GAAK2rG,EACHz/C,CACT,GAAG,CAAC,GAGC60D,EAAOl8G,QAAO,SAAUqnD,EAAMlsD,GACnC,MAAqB,iBAAV2rG,GAAsB3rG,KAAK2rG,GACpCz/C,EAAKlsD,GAAK2rG,EAAM3rG,GACTksD,GAGkB,iBAAhBu7D,GACTv7D,EAAKlsD,GAAKynH,EACHv7D,IAGTA,EAAKlsD,GAAMynH,GAAeA,EAAYznH,IAAO,EAEtCksD,EACT,GAAG,CAAC,IAg+CJ1wD,KAAKksH,qBACLlsH,KAAKmsH,0BAOiB7uH,IAAlByK,EAAQ69C,QACV5lD,KAAKq/G,MAAM/3F,SAAWtnB,KAAKqrH,YAGmB,IAA5CvuH,OAAO4L,KAAKX,EAAQ69C,OAAS,CAAC,GAAGlnD,QAAgBsB,KAAKoB,QAAS,CACjE,IAAIgrH,EAAYpsH,KAAKq/G,MAAM2L,UAC3BhrH,KAAKorH,UAAUnkF,SAAU,IAAOjnC,KAAO,IAAI8lB,MAAK,WAC9Cw9F,EAAOjE,MAAM2L,UAAYoB,CAC3B,GACF,CAGIpsH,KAAKq/G,MAAM2L,gBAA+B1tH,IAAlByK,EAAQ69C,OAAuB5lD,KAAKoB,SAC9DpB,KAAKorH,UAAUnkF,SAAU,IAAOjnC,KAAO,IAGzCA,KAAKoB,SAAU,EACfpB,KAAKqsH,oBAGArsH,KAAKme,KAGVne,KAAKssH,gBACLtsH,KAAKusH,kBACP,EAKA3B,GAAMzsH,UAAUyoB,MAAQ,WACpB,IAAI08F,EAAStjH,KAEXA,KAAKwsH,qBACPxsH,KAAKwsH,mBAAmB9M,WAAY,SAC7B1/G,KAAKwsH,oBAGd,IAAIz8B,EA39DiC,CACrCw6B,WAAW,EACXD,SAAS,EACTK,OAAO,EACPD,UAAU,EACVF,MAAO,KACPC,QAAS,KACTO,WAAW,EACX/3C,SAAS,EACT3rD,UAAU,EACV2jG,SAAS,GAk9DTnuH,OAAO4L,KAAK1I,KAAKq/G,OAAOr7G,QAAO,SAAUo5E,GAAQ,MAAgB,aAATA,CAAqB,IAAGx5E,SAAQ,SAAUw5E,GAChGkmC,EAAOjE,MAAMjiC,GAAQ2S,EAAS3S,EAChC,IAGAp9E,KAAKqoH,aAAeroH,KAAK/C,MACzB+C,KAAKq/G,MAAM4L,SAAU,EAErBjrH,KAAKqsH,oBACLrsH,KAAKmsH,qBACLnsH,KAAKssH,eAAc,GACnBtsH,KAAKusH,kBACLvsH,KAAKysH,sBACP,EAKA7B,GAAMzsH,UAAUuuH,SAAW,SAAmBrN,GAC1C,IAAIiE,EAAStjH,KAEX2sH,EAAU,CACZjC,SAAU,QACVC,MAAO,WACPH,MAAO,UACPC,QAAS,QACTH,QAAS,YACTC,UAAW,WAGbztH,OAAO4L,KAAK22G,GAAOz7G,SAAQ,SAAUw5E,GACnCkmC,EAAOjE,MAAMjiC,GAAQiiC,EAAMjiC,GAEvBuvC,EAAQvvC,SAAkC9/E,IAAzB+hH,EAAMsN,EAAQvvC,MACjCkmC,EAAOjE,MAAMsN,EAAQvvC,KAAUiiC,EAAMjiC,GAEzC,SAGsB9/E,IAApB+hH,EAAMkL,gBACYjtH,IAAlB+hH,EAAMiL,cACUhtH,IAAhB+hH,EAAMsL,YACartH,IAAnB+hH,EAAMqL,UAEN1qH,KAAKmsH,qBAEPnsH,KAAKssH,gBACLtsH,KAAKusH,kBACLvsH,KAAKysH,sBACP,EAKA7B,GAAMzsH,UAAU+tH,mBAAqB,WACjC,IAAI5I,EAAStjH,KAGfA,KAAK4sH,aAAahpH,SAAQ,SAAU68B,GAAK,OAAOA,EAAE5zB,MAAM1J,SAAW,IACnEnD,KAAK4sH,aAAe,GAGpB,IAAIlhG,EAAS5uB,OAAO4L,KAAK1I,KAAK4lD,OAAOv8C,QAAO,SAAUqnD,EAAMpvB,GAK1D,OAJI4nF,GAAcM,aAAaloF,IAC7BovB,EAAKnrD,KAAK,CAAE0+G,SAAUX,EAAO19D,MAAMtkB,GAAG,GAAI/hC,KAAM+hC,IAG3CovB,CACT,GAAG,IAEEhlC,EAAOhtB,QAAWsB,KAAK6nH,IAAO7nH,KAAK6nH,GAAGrmH,KAG3CkqB,EAAO9nB,SAAQ,SAAUipH,GACrB,IAAI5I,EAAW4I,EAAM5I,SACjB1kH,EAAOstH,EAAMttH,KAEf6M,EAAMk3G,EAAOuE,GAAG/7G,MAAMm4G,GACtB9lG,EAAK7f,MAAMC,QAAQ6N,GAAOA,EAAI,GAAKA,EACvC,GAAK+R,EAAL,CAIA,IAAIpW,EAAU,CACZ8/G,GAAIvE,EAAOuE,GACXxC,QAAS/B,EAAO+B,QAChBC,WAAYhC,EAAOgC,WACnBnV,MAAOmT,EAAOnT,MACdqT,MAAOF,EAAOE,MACd+B,OAAQjC,EAAOiC,OAAO16G,KAAK,KAC3B0U,UAAW+jG,EAAO/jG,UAClB8qG,SAAU/G,EAAO3+F,IAIfu7F,EAAW/hG,EAAGjc,SAChB6F,EAAQH,UAAYuW,EACpBpW,EAAQoW,GAAKA,EAAG3c,IAChBuG,EAAQggH,OAASV,EAASW,cAAc7pG,EAAG3c,IAAK2c,EAAG2uG,UAEnD/kH,EAAQoW,GAAKA,EACbpW,EAAQggH,OAASV,EAASW,cAAc7pG,EAAI,CAAC,IAG/CmlG,EAAOsJ,aAAarnH,KAAK,CAAEhG,KAAMA,EAAMsN,MAAO,IAAI+9G,GAAM7iH,IAvBxD,CAwBF,GACF,EAKA6iH,GAAMzsH,UAAU4uH,QAAU,SAAkBxmH,GAG1C,QAFe,IAARA,IAAiBA,EAAM,OAEzBA,EAGH,OAFAvG,KAAKgtH,SAASppH,SAAQ,SAAUk6E,GAAK,OAAOA,EAAEivC,SAAW,SACzD/sH,KAAKgtH,SAAW,IAIlBhtH,KAAKgtH,SAAShpH,QAAO,SAAU85E,GAAK,OAAOv3E,EAAIsY,KAAKi/D,EAAEv3E,IAAM,IAAG3C,SAAQ,SAAUk6E,GAAK,OAAOA,EAAEivC,SAAW,IAC1G/sH,KAAKgtH,SAAWhtH,KAAKgtH,SAAShpH,QAAO,SAAU85E,GAAK,OAAQv3E,EAAIsY,KAAKi/D,EAAEv3E,IAAM,GAC/E,EAKAqkH,GAAMzsH,UAAUmuH,cAAgB,SAAwBW,GACpD,IAAI3J,EAAStjH,KAGf,QAFmB,IAAZitH,IAAqBA,GAAU,GAEjCjtH,KAAKqlH,UAAWrlH,KAAKsrH,WAA1B,CACA,IAAI4B,EAAe,SAAU/uG,GAC3BkiG,EAAYliG,EAAImlG,EAAOgC,WAAWqF,MAAOrH,EAAOjE,MAAMsL,OACtDtK,EAAYliG,EAAImlG,EAAOgC,WAAWoF,SAAUpH,EAAOjE,MAAMqL,UACzDrK,EAAYliG,EAAImlG,EAAOgC,WAAWgF,QAAShH,EAAOjE,MAAMiL,SACxDjK,EAAYliG,EAAImlG,EAAOgC,WAAWiF,UAAWjH,EAAOjE,MAAMkL,WAGtD0C,IACF5M,EAAYliG,EAAImlG,EAAOgC,WAAWkF,OAAO,GACzCnK,EAAYliG,EAAImlG,EAAOgC,WAAWmF,SAAS,KAIxCvL,EAAkBoE,EAAOjE,MAAMmL,QAAUlH,EAAOjE,MAAM2L,WACzD3K,EAAYliG,EAAImlG,EAAOgC,WAAWkF,MAAOlH,EAAOjE,MAAMmL,QAGnDtL,EAAkBoE,EAAOjE,MAAMoL,UAAYnH,EAAOjE,MAAM2L,WAC3D3K,EAAYliG,EAAImlG,EAAOgC,WAAWmF,QAASnH,EAAOjE,MAAMoL,QAE5D,EAEA,GAAK1L,EAAuB/+G,KAAKme,IAAjC,CAKA,IAAI4qG,EAAM3jH,SAASmrB,iBAAkB,eAAmBvwB,KAAKme,GAAO,KAAI,MACxEoT,EAAQw3F,GAAKnlH,QAAQspH,EAHrB,MAFEA,EAAaltH,KAAKme,GAxB4B,CA8BlD,EAKAysG,GAAMzsH,UAAUguH,mBAAqB,WACjC,IAAI7I,EAAStjH,KAKf,GAFAA,KAAK+sH,QAAQ,SAER/sH,KAAKme,GAAV,CAEA,IAAIgvG,EAAS,WACX7J,EAAOjE,MAAMiL,SAAU,EACvBhH,EAAOjE,MAAMkL,WAAY,EACrBjH,EAAO+B,UACThF,EAAYiD,EAAOnlG,GAAImlG,EAAOgC,WAAWgF,SAAS,GAClDjK,EAAYiD,EAAOnlG,GAAImlG,EAAOgC,WAAWiF,WAAW,IAItDjH,EAAOyJ,QAAQ,eACjB,EAEIK,EAAatO,EAAY9+G,KAAKme,IAAM,QAAU,SAC9CkvG,EAAU,WACZ/J,EAAOjE,MAAMsL,OAAQ,EACrBrH,EAAOjE,MAAMqL,UAAW,EACpBpH,EAAO+B,UACThF,EAAYiD,EAAOnlG,GAAImlG,EAAOgC,WAAWoF,UAAU,GACnDrK,EAAYiD,EAAOnlG,GAAImlG,EAAOgC,WAAWqF,OAAO,IAIlDrH,EAAOyJ,QAAQ,gBACjB,EAEA,GAAI/sH,KAAKyG,mBAAqBy5G,EAAWlgH,KAAKyG,kBAAkB6mH,OAe9D,OAdAttH,KAAKyG,kBAAkB6mH,MAAM,QAASD,GACtCrtH,KAAKyG,kBAAkB6mH,MAAM,OAAQH,GACrCntH,KAAKgtH,SAASznH,KAAK,CACjBgB,IAAK,cACLwmH,QAAS,WACPzJ,EAAO78G,kBAAkB8mH,KAAK,QAASF,EACzC,SAEFrtH,KAAKgtH,SAASznH,KAAK,CACjBgB,IAAK,aACLwmH,QAAS,WACPzJ,EAAO78G,kBAAkB8mH,KAAK,OAAQJ,EACxC,IAKJ,GAAKntH,KAAKme,GAAV,CAEA+rG,GAAiBlqH,KAAKme,GAAIivG,EAAYC,GAEtC,IAAIG,EAAYzO,EAAuB/+G,KAAKme,IAAM,SAAW,OAC7D+rG,GAAiBlqH,KAAKme,GAAIqvG,EAAWL,GACrCntH,KAAKgtH,SAASznH,KAAK,CACjBgB,IAAK,cACLwmH,QAAS,WACPzJ,EAAOnlG,GAAGsvG,oBAAoBL,EAAYC,EAC5C,IAGFrtH,KAAKgtH,SAASznH,KAAK,CACjBgB,IAAK,aACLwmH,QAAS,WACPzJ,EAAOnlG,GAAGsvG,oBAAoBD,EAAWL,EAC3C,GAjBsB,CA7CA,CAgE1B,EAEAvC,GAAMzsH,UAAUuvH,kBAAoB,WAElC,OAA0B,OAAtB1tH,KAAKqoH,cAAwC,KAAfroH,KAAK/C,QAAgB6hH,EAAY9+G,KAAKme,MAIjEne,KAAK/C,QAAU+C,KAAKqoH,YAC7B,EAKAuC,GAAMzsH,UAAUwvH,qBAAuB,WAErC,OAAI3tH,KAAKyG,kBACCzG,KAAKyG,kBAAkB7E,SAASyK,OAASrM,KAAKyG,kBAAkB7E,SAASyK,MAAM1D,OAAU,QAG/F3I,KAAKqM,OAASrM,KAAKqM,MAAM86G,KACpB,SAGLrI,EAAY9+G,KAAKme,IACZ,QAGF,QACT,EAKAysG,GAAMzsH,UAAUyvH,oBAAsB,SAA8BC,GAChE,IAAIvK,EAAStjH,KAGf,OAAKA,KAAKulH,OAAO7mH,QAAUsB,KAAKyG,mBAAqBq4G,EAAY9+G,KAAKme,IAC7D,GAAGxc,OAAQ3B,KAAKulH,QAAS/6G,KAAI,SAAUiU,GAC5C,MAAY,UAARA,GAAmB6kG,EAAOj3G,OAASi3G,EAAOj3G,MAAM86G,KAC3C,SAGF1oG,CACT,IAIKze,KAAKulH,OAAO/6G,KAAI,SAAUhG,GAC/B,MAAU,UAANA,EACKqpH,EAGFrpH,CACT,GACF,EAKAomH,GAAMzsH,UAAUkuH,kBAAoB,WAChC,IAAI/I,EAAStjH,KAGf,GADAA,KAAK+sH,QAAQ,aACR/sH,KAAKynH,QAAWznH,KAAKme,GAA1B,CAEA,IAAI+R,EAAQ,CAAEwvF,WAAW,GACrBjsD,EAAKzzD,KAAKqqH,SAAW,WACvB,IAAIhtG,EAASimG,EAAO8H,UAAU0C,cAAe,IAAOxK,EAAe,UAC/DjmG,GAAUA,EAAOgiG,MAAM2L,WACzB1H,EAAO8H,UAAUnkF,SAAU,IAAOq8E,EAAe,SAErD,EAAI,WAEA,IADA,IAAI7jC,EAAO,GAAIzf,EAAMp7D,UAAUlG,OACvBshE,KAAQyf,EAAMzf,GAAQp7D,UAAWo7D,IAGvB,IAAhByf,EAAK/gF,QAAgBkrH,GAAQnqC,EAAK,OACpCA,EAAK,GAAK6jC,EAAOrmH,OAGnBqmH,EAAOjE,MAAMpsC,SAAU,EACvBqwC,EAAOkJ,mBAAqBt8F,EAC5BozF,EAAO8H,UAAUnkF,SAAU,IAAOq8E,EAAS,GAAI7jC,EAAK,GACtD,EAEI2tC,EAAaptH,KAAK2tH,uBAClBpI,EAASvlH,KAAK4tH,oBAAoBR,GAGtC,GAAIv6F,EAAS0yF,EAAQ6H,GAAa,CAChC,IAAIpH,EAAM,KACN8B,EAAa,KACbiG,GAAa,EAcjB,GAZI/tH,KAAKqM,OAASrM,KAAKqM,MAAMy7G,aAC3B9B,EAAMhmH,KAAK6nH,GACXC,EAAa9nH,KAAKqM,MAAMy7G,WACxBiG,GAAa,IAIVjG,GAAc9nH,KAAKyG,mBAAqBzG,KAAKyG,kBAAkB7E,SAASyK,QAC3E25G,EAAMhmH,KAAKyG,kBACXqhH,EAAa9nH,KAAKyG,kBAAkB7E,SAASyK,MAAMxG,MAAQ,SAGzDmgH,GAAO8B,EAAY,CACrB,IAAIkG,EAAc9uG,EAASu0C,EAAIzzD,KAAKmwG,MAAMid,GAAal9F,GACnD68F,EAAU/G,EAAI9jH,OAAO4lH,EAAYkG,GACrChuH,KAAKgtH,SAASznH,KAAK,CACjBgB,IAAK,cACLwmH,QAAS,WACPzJ,EAAOuE,GAAG1iH,WAAU,WAClB4nH,GACF,GACF,IAIEgB,IACFxI,EAASA,EAAOvhH,QAAO,SAAUQ,GAAK,OAAOA,IAAM4oH,CAAY,IAEnE,CACF,CAGA7H,EAAO3hH,SAAQ,SAAUY,GACvB,IAAIwpH,EAAc9uG,EAASu0C,EAAI6vD,EAAOnT,MAAM3rG,GAAI0rB,GAEhDozF,EAAO2K,2BAA2BzpH,EAAGwpH,GACrC1K,EAAO4K,sBAAsB1pH,EAAGwpH,EAClC,GApEwC,CAqE1C,EAEApD,GAAMzsH,UAAU8vH,2BAA6B,SAAqCxvG,EAAKwoB,GACnF,IAAIq8E,EAAStjH,KAEVA,KAAKyG,oBAEVzG,KAAKyG,kBAAkBzD,IAAIyb,EAAKwoB,GAChCjnC,KAAKgtH,SAASznH,KAAK,CACjBgB,IAAK,YACLwmH,QAAS,WACPzJ,EAAO78G,kBAAkB8mH,KAAK9uG,EAAKwoB,EACrC,IAEJ,EAEA2jF,GAAMzsH,UAAU+vH,sBAAwB,SAAgCzvG,EAAKwoB,GACzE,IAAIq8E,EAAStjH,KAEf,GAAKA,KAAKme,KAAMne,KAAKyG,kBAArB,CAGA,IAAI0nH,EAAc,SAAUhwG,GAC1B+rG,GAAiB/rG,EAAIM,EAAKwoB,GAC1Bq8E,EAAO0J,SAASznH,KAAK,CACnBgB,IAAK,eACLwmH,QAAS,WACP5uG,EAAGsvG,oBAAoBhvG,EAAKwoB,EAC9B,GAEJ,EAGA,GADAknF,EAAYnuH,KAAKme,IACZ4gG,EAAuB/+G,KAAKme,IAAjC,CAIA,IAAI4qG,EAAM3jH,SAASmrB,iBAAkB,eAAmBvwB,KAAKme,GAAO,KAAI,MACxEoT,EAAQw3F,GAAKnlH,SAAQ,SAAUua,GAEzBA,EAAGwtG,gBAAkBxtG,IAAOmlG,EAAOnlG,IAIvCgwG,EAAYhwG,EACd,GAVA,CAhBkD,CA2BpD,EAKAysG,GAAMzsH,UAAUouH,gBAAkB,WAC9B,IAAIjJ,EAAStjH,KAEf,GAAKA,KAAK0lH,MAAS1lH,KAAKme,IAAO+hG,EAAWlgH,KAAKme,GAAGskG,cAAlD,CAEA,IAAI2L,EAAiB,SAAUjwG,GAC7BA,EAAGskG,aAAa,gBAAiBa,EAAO+H,WAAa,OAAS,SAC9DltG,EAAGskG,aAAa,eAAgBa,EAAOjE,MAAMoL,QAAU,OAAS,QAClE,EAEA,GAAK1L,EAAuB/+G,KAAKme,IAAjC,CAKA,IAAI4qG,EAAM3jH,SAASmrB,iBAAkB,eAAmBvwB,KAAKme,GAAO,KAAI,MACxEoT,EAAQw3F,GAAKnlH,QAAQwqH,EAHrB,MAFEA,EAAepuH,KAAKme,GARqD,CAc7E,EAKAysG,GAAMzsH,UAAUsuH,qBAAuB,WAChCzsH,KAAK2lH,UAAa3lH,KAAKme,IAAO+hG,EAAWlgH,KAAKme,GAAGkwG,oBAAuBruH,KAAKorH,UAAU7iG,QAE5FvoB,KAAKme,GAAGkwG,kBAAkBruH,KAAKq/G,MAAMmL,MAAQ,GAAMxqH,KAAKorH,UAAU7iG,OAAOg8F,UAAUvkH,KAAK2kB,KAAO,GACjG,EAKAimG,GAAMzsH,UAAUgF,QAAU,WAEpBnD,KAAKwsH,qBACPxsH,KAAKwsH,mBAAmB9M,WAAY,GAGtC1/G,KAAK+sH,UACL/sH,KAAK4sH,aAAahpH,SAAQ,SAAU68B,GAAK,OAAOA,EAAE5zB,MAAM1J,SAAW,IACnEnD,KAAK4sH,aAAe,EACtB,EAEA9vH,OAAOsgB,iBAAkBwtG,GAAMzsH,UAAWgtH,IAI1C,IAAImD,GAAW,SAAmBxoH,QACjB,IAAVA,IAAmBA,EAAQ,IAEhC9F,KAAK8F,MAAQA,GAAS,GACtB9F,KAAKuuH,UAAYvuH,KAAK8F,MAAMuD,QAAO,SAAUklH,EAAW1qH,GAEtD,OADA0qH,EAAU1qH,EAAK8gB,IAAM9gB,EACd0qH,CACT,GAAG,CAAC,EACN,EAEIC,GAAuB,CAAE9vH,OAAQ,CAAE8e,cAAc,IAErD8wG,GAASnwH,UAA4B,mBAAXH,OAAwBA,OAAOC,SAAW,cAAgB,WAChF,IAAIqlH,EAAStjH,KAEXyK,EAAQ,EACZ,MAAO,CACLrE,KAAM,WACJ,MAAO,CAAEnJ,MAAOqmH,EAAOx9G,MAAM2E,KAAUpE,KAAMoE,EAAQ64G,EAAOx9G,MAAMpH,OACpE,EAEJ,EAMA8vH,GAAqB9vH,OAAOw1B,IAAM,WAChC,OAAOl0B,KAAK8F,MAAMpH,MACpB,EAKA4vH,GAASnwH,UAAU0C,KAAO,SAAiB4tH,GACzC,OAAO5tH,EAAKb,KAAK8F,OAAO,SAAUjC,GAAQ,OAAOA,EAAKkpC,QAAQ0hF,EAAU,GAC1E,EAMAH,GAASnwH,UAAUuwH,SAAW,SAAmB/pG,GAC/C,OAAO3kB,KAAKuuH,UAAU5pG,IAAO,IAC/B,EAKA2pG,GAASnwH,UAAU6F,OAAS,SAAiByqH,GAE3C,OAAInwH,MAAMC,QAAQkwH,GACTzuH,KAAK8F,MAAM9B,QAAO,SAAUH,GAAQ,OAAO4qH,EAAQpiF,MAAK,SAAUupB,GAAK,OAAO/xD,EAAKkpC,QAAQ6oB,EAAI,GAAI,IAGrG51D,KAAK8F,MAAM9B,QAAO,SAAUH,GAAQ,OAAOA,EAAKkpC,QAAQ0hF,EAAU,GAC3E,EAKAH,GAASnwH,UAAUqM,IAAM,SAAcmkH,GACrC,OAAO3uH,KAAK8F,MAAM0E,IAAImkH,EACxB,EAKAL,GAASnwH,UAAUkZ,OAAS,SAAiBo3G,GAC3C,IAAI5qH,EAAO,KAOX,KALEA,EADE4qH,aAAmB7D,GACd6D,EAEAzuH,KAAKa,KAAK4tH,IAGN,OAAO,KAEpB,IAAIhkH,EAAQzK,KAAK8F,MAAM/E,QAAQ8C,GAI/B,OAHA7D,KAAK8F,MAAM4f,OAAOjb,EAAO,UAClBzK,KAAKuuH,UAAU1qH,EAAK8gB,IAEpB9gB,CACT,EAKAyqH,GAASnwH,UAAUoH,KAAO,SAAe1B,GACvC,KAAOA,aAAgB+mH,IACrB,MAAM3K,EAAY,oEAGpB,IAAKp8G,EAAK8gB,GACR,MAAMs7F,EAAY,6BAGpB,GAAIjgH,KAAK0uH,SAAS7qH,EAAK8gB,IACrB,MAAMs7F,EAAa,iBAAoBp8G,EAAO,GAAI,sBAGpD7D,KAAK8F,MAAMP,KAAK1B,GAChB7D,KAAKuuH,UAAU1qH,EAAK8gB,IAAM9gB,CAC5B,EAEA/G,OAAOsgB,iBAAkBkxG,GAASnwH,UAAWqwH,IAE7C,IAAII,GAAkB,SAA0BlwD,EAAMmpD,GACpD7nH,KAAK2kB,GAAKkjG,EAAGgH,KACb7uH,KAAK8uH,MAAQpwD,EACb1+D,KAAK+uH,SAAU,EAGf/uH,KAAKuoB,OAAS,IAAI46F,EAASzkD,EAAKn2C,OAAQvoB,KAAK2kB,GAC/C,EAEIqqG,GAAuB,CAAE3P,MAAO,CAAE7hG,cAAc,GAAOooC,MAAO,CAAEpoC,cAAc,GAAOkO,OAAQ,CAAElO,cAAc,GAAOgkG,WAAY,CAAEhkG,cAAc,GAAOkkG,OAAQ,CAAElkG,cAAc,IAEnLwxG,GAAqB3P,MAAMnrF,IAAM,WAC7B,IAAIovF,EAAStjH,KAEf,OAAOA,KAAK8uH,MAAMpjG,OAAO5lB,MAAM9B,QAAO,SAAU4f,GAAK,OAAOA,EAAEy/F,OAASC,EAAO3+F,EAAI,IAAGtb,QAAO,SAAUuyE,EAAK/uE,GAWzG,OAVIA,EAAM22G,QACH5nC,EAAK,IAAO/uE,EAAW,SAC1B+uE,EAAK,IAAO/uE,EAAW,OAAM,CAAC,GAGhC+uE,EAAK,IAAO/uE,EAAW,OAAIA,EAAMtN,MAAQsN,EAAMwyG,OAGjDzjC,EAAI/uE,EAAMtN,MAAQsN,EAAMwyG,MAEjBzjC,CACT,GAAG,CAAC,EACN,EAEAozC,GAAqBppE,MAAM1xB,IAAM,WAC/B,OAAOl0B,KAAK8uH,MAAMlpE,KACpB,EAEAopE,GAAqBtjG,OAAOwI,IAAM,WAChC,OAAO,IAAIo6F,GAAStuH,KAAK8uH,MAAMpjG,OAAO1nB,OAAO,CAAEq/G,KAAMrjH,KAAK2kB,KAC5D,EAEAqqG,GAAqBxN,WAAWttF,IAAM,WACpC,OAAOl0B,KAAK8uH,MAAMtN,UACpB,EAEAwN,GAAqBtN,OAAOxtF,IAAM,WAChC,OAAOl0B,KAAK8uH,MAAMpN,MACpB,EAEAsN,GAAqBtN,OAAO1jF,IAAM,SAAU35B,GAC1CrE,KAAK8uH,MAAMpN,OAASr9G,CACtB,EAEAuqH,GAAgBzwH,UAAU8wH,SAAW,WAIjC,IAHA,IAAI7iH,EAEAqzE,EAAO,GAAIzf,EAAMp7D,UAAUlG,OACvBshE,KAAQyf,EAAMzf,GAAQp7D,UAAWo7D,GAC3C,OAAQ5zD,EAAMpM,KAAK8uH,OAAOG,SAAStqH,MAAMyH,EAAKqzE,EAChD,EAEAmvC,GAAgBzwH,UAAU05G,OAAS,WAI/B,IAHA,IAAIzrG,EAEAqzE,EAAO,GAAIzf,EAAMp7D,UAAUlG,OACvBshE,KAAQyf,EAAMzf,GAAQp7D,UAAWo7D,GAC3C,OAAQ5zD,EAAMpM,KAAK8uH,OAAOjX,OAAOlzG,MAAMyH,EAAKqzE,EAC9C,EAEAmvC,GAAgBzwH,UAAU+wH,OAAS,SAAiB92C,GAClD,IAAI+2C,EAAapqH,EAAO,CAAC,EAAGqzE,EAAM,CAAEirC,KAAMrjH,KAAK2kB,KAE/C,OAAO3kB,KAAK8uH,MAAMI,OAAOC,EAC3B,EAEAP,GAAgBzwH,UAAUixH,MAAQ,WAChCpvH,KAAK+uH,SAAU,CACjB,EAEAH,GAAgBzwH,UAAUkxH,OAAS,WACjCrvH,KAAK+uH,SAAU,CACjB,EAEAH,GAAgBzwH,UAAUkZ,OAAS,SAAiBiwD,GAClD,OAAOtnE,KAAK8uH,MAAMz3G,OAAOiwD,EAC3B,EAEAsnD,GAAgBzwH,UAAUu9B,OAAS,SAAiBn8B,EAAMikH,GACxD,OAAOxjH,KAAK8uH,MAAMpzF,OAAOn8B,EAAMikH,EAAOxjH,KAAK2kB,GAC7C,EAEAiqG,GAAgBzwH,UAAUsH,OAAS,WAI/B,IAHA,IAAI2G,EAEAqzE,EAAO,GAAIzf,EAAMp7D,UAAUlG,OACvBshE,KAAQyf,EAAMzf,GAAQp7D,UAAWo7D,GAC3C,OAAQ5zD,EAAMpM,KAAK8uH,OAAOrpH,OAAOd,MAAMyH,EAAKqzE,EAC9C,EAEAmvC,GAAgBzwH,UAAU8oC,SAAW,SAAmB3pB,EAAYrgB,EAAOm7E,GAGzE,YAFgB,IAATA,IAAkBA,EAAO,CAAC,GAE7Bp4E,KAAK+uH,QAAkBl/F,QAAQC,SAAQ,GAEpC9vB,KAAK8uH,MAAM7nF,SAAS3pB,EAAYrgB,EAAO8H,EAAO,CAAC,EAAG,CAAEs+G,KAAMrjH,KAAK2kB,IAAMyzD,GAAQ,CAAC,GACvF,EAEAw2C,GAAgBzwH,UAAUmxH,OAAS,WAI/B,IAHA,IAAIljH,EAEAqzE,EAAO,GAAIzf,EAAMp7D,UAAUlG,OACvBshE,KAAQyf,EAAMzf,GAAQp7D,UAAWo7D,GAC3C,OAAQ5zD,EAAMpM,KAAK8uH,OAAOQ,OAAO3qH,MAAMyH,EAAKqzE,EAC9C,EAEAmvC,GAAgBzwH,UAAU0nB,YAAc,SAAsBpW,EAAQ2oE,GAGpE,YAFgB,IAATA,IAAkBA,EAAO,CAAC,GAE7Bp4E,KAAK+uH,QAAkBl/F,QAAQC,SAAQ,GAEpC9vB,KAAK8uH,MAAMjpG,YAAYpW,EAAQ1K,EAAO,CAAC,EAAG,CAAEs+G,KAAMrjH,KAAK2kB,IAAMyzD,GAAQ,CAAC,GAC/E,EAEAw2C,GAAgBzwH,UAAUoxH,eAAiB,SAAyBn3C,GAGlE,YAFgB,IAATA,IAAkBA,EAAO,CAAC,GAE7Bp4E,KAAK+uH,QAAkBl/F,QAAQC,SAAQ,GAEpC9vB,KAAK8uH,MAAMS,eAAexqH,EAAO,CAAC,EAAG,CAAEs+G,KAAMrjH,KAAK2kB,IAAMyzD,GAAQ,CAAC,GAC1E,EAEAw2C,GAAgBzwH,UAAUgF,QAAU,kBAC3BnD,KAAK2kB,UACL3kB,KAAK8uH,KACd,EAEAF,GAAgBzwH,UAAUyoB,MAAQ,SAAgB6nG,GAChD,OAAOzuH,KAAK8uH,MAAMloG,MAAM9pB,OAAOiI,OAAO,CAAC,EAAG0pH,GAAW,CAAC,EAAG,CAAEpL,KAAMrjH,KAAK2kB,KACxE,EAEAiqG,GAAgBzwH,UAAUi/E,KAAO,WAI7B,IAHA,IAAIhxE,EAEAqzE,EAAO,GAAIzf,EAAMp7D,UAAUlG,OACvBshE,KAAQyf,EAAMzf,GAAQp7D,UAAWo7D,GAC3C,OAAQ5zD,EAAMpM,KAAK8uH,OAAO1xC,KAAKz4E,MAAMyH,EAAKqzE,EAAK99E,OAAQ,CAAC3B,KAAK2kB,KAC/D,EAEAiqG,GAAgBzwH,UAAU2vH,cAAgB,WAItC,IAHA,IAAI1hH,EAEAqzE,EAAO,GAAIzf,EAAMp7D,UAAUlG,OACvBshE,KAAQyf,EAAMzf,GAAQp7D,UAAWo7D,GAC3C,OAAQ5zD,EAAMpM,KAAK8uH,OAAOhB,cAAcnpH,MAAMyH,EAAKqzE,EACrD,EAEA3iF,OAAOsgB,iBAAkBwxG,GAAgBzwH,UAAW6wH,IAEpD,IAAIQ,GAAY,KAEZC,GAAe,WACjB,OAAOD,EACT,EAqBIjnH,GAAQ,CACVuyB,QAAS,WACP,OAAI96B,KAAK4lB,aAAei7F,EAAmB7gH,KAAK8sH,QACvC,CACLlnG,WAAY5lB,KAAK4lB,YAId,CAAC,CACV,EACA8pG,aAAc,WAEZ,IAAI7O,EAAmB7gH,KAAK8sH,UAA0C,IAA/B9sH,KAAK4B,SAAS+tH,aAArD,CAKK3vH,KAAK6L,SACRs6G,EAAUnmH,KAAK4B,SAASguH,eAAiB,CAAC,GAG5C,IAAI7nH,EAAUg+G,EAAc/lH,QAGvBA,KAAK6L,SAAY7L,KAAK4B,SAASguH,eAAiB,MAAM/wG,KAAK7e,KAAK4B,SAASguH,cAAcxE,cAC1FprH,KAAK4lB,WAAa,IAAIgpG,GAAgBa,KAAgBzvH,OAGxD,IApC8B6vH,EAoC1BC,GApC0BD,EAoCI7vH,KAAK4B,SAAS4jH,UAnC9CpxB,EAASy7B,KAAeA,EAAWjqG,aA2CrC,GALM5lB,KAAK4lB,aAAc7d,EAAQy9G,QAAWsK,IAC1C9vH,KAAK4lB,WAAa,IAAIgpG,GAAgBa,KAAgBzvH,OAInD8vH,GAAc9vH,KAAK4lB,WAAxB,CAKA,IAAKkqG,GAAa9vH,KAAK4lB,WACX5lB,KAAK4B,SAASktH,MACpBiB,KAAKC,eAAehwH,KAAK4lB,WAAY,SAAU5lB,KAAK4lB,WAAW2C,QAGhEvoB,KAAK4B,SAAS4oB,WACjBxqB,KAAK4B,SAAS4oB,SAAW,CAAC,GAG5BxqB,KAAK4B,SAAS4oB,SAASziB,EAAQo9G,cAAgB,UAAY,WACzD,OAAOnlH,KAAK4lB,WAAW2C,MACzB,EACAvoB,KAAK4B,SAAS4oB,SAASziB,EAAQq9G,eAAiB,UAAY,WAC1D,OAAOplH,KAAK4lB,WAAW8F,OAAO5lB,MAAMuD,QAAO,SAAUuyE,EAAK/uE,GACxD,OAAIA,EAAM22G,OACH5nC,EAAK,IAAO/uE,EAAW,SAC1B+uE,EAAK,IAAO/uE,EAAW,OAAM,CAAC,GAGhC+uE,EAAK,IAAO/uE,EAAW,OAAIA,EAAMtN,MAAQsN,EAAMwyG,MAExCzjC,IAGTA,EAAI/uE,EAAMtN,MAAQsN,EAAMwyG,MAEjBzjC,EACT,GAAG,CAAC,EACN,CA/BA,CAxBA,CAwDF,EACA17E,cAAe,WACTF,KAAK4lB,YAAc5lB,KAAK6uH,OAAS7uH,KAAK4lB,WAAWjB,IACnD3kB,KAAK4lB,WAAW2C,OAAO29B,OAE3B,GAQF,SAAS+pE,GAAW9xG,EAAIkL,GACtB,OAAKA,GAAYA,EAAQzD,WAIlByD,EAAQzD,WAAW8F,OAAOgjG,SAASvwG,EAAGwtG,gBAHpC,IAIX,CACA,IAAIuE,GAAY,CACdjkH,KAAM,SAAekS,EAAI8sE,EAAS61B,GAChC,IAAIsK,EAAYtK,EAAMz3F,QAAQzD,WAC9B,GAAKwlG,EAAL,CAQA,IAAI+E,EAAe9I,EAASC,SAASnpG,EAAI8sE,EAAS61B,GAClDsK,EAAU8D,OAAOiB,EAHjB,CAIF,EACAC,SAAU,SAAmBjyG,EAAI8sE,EAAS61B,GACxC,IAAIj0G,EAAQojH,GAAU9xG,EAAI2iG,EAAMz3F,SAC5Bm6F,EAAQ6D,EAASO,aAAazpG,EAAI8sE,EAAS61B,GAG1Cj0G,GAAS22G,IAAU32G,EAAM22G,QAG9B32G,EAAMgrG,OAAO,CAAE2L,MAAOA,IAGtB32G,EAAMzL,SAAU,EAClB,EACAy2G,OAAQ,SAAiB15F,EAAI8sE,EAAS61B,GACpC,IAAIj0G,EAAQojH,GAAU9xG,EAAI2iG,EAAMz3F,SAGhC,MAAKxc,GAAUA,EAAMzL,SAAWm4G,EAAQtuB,EAAQhuF,MAAOguF,EAAQ3oF,WAA/D,CACA,IAAIkhH,EAAQ6D,EAASO,aAAazpG,EAAI8sE,EAAS61B,GAC3Cl7D,EAAQyhE,EAASc,aAAahqG,EAAI8sE,EAAS61B,GAE/Cj0G,EAAMgrG,OAAO,CACX2L,MAAOA,EACP59D,MAAOA,GAN4E,CAQvF,EACAv0B,OAAQ,SAAiBlT,EAAI8sE,EAAS7+E,GACpC,IAAIid,EAAUjd,EAAIid,QAEdxc,EAAQojH,GAAU9xG,EAAIkL,GACrBxc,GAELwc,EAAQzD,WAAW8V,OAAO7uB,EAC5B,GAKEwjH,GAAY,SAAoBC,EAAavoH,EAASwoH,QACvC,IAAZxoH,IAAqBA,EAAU,CAAE09G,UAAU,SACvB,IAApB8K,IAA6BA,EAAkB,MAEpDvwH,KAAKuoB,OAAS,IAAI46F,EAClBnjH,KAAK0rB,OAAS,IAAI4iG,GAClBtuH,KAAKwwH,cAAcF,GACnBtwH,KAAKywH,QAAS,EACdzwH,KAAKylH,WAAYvG,EAAkBn3G,GAAWA,EAAQ09G,WAAY19G,EAAQ09G,SAC1EzlH,KAAK0wH,KAAOH,GAAmB,CAC7BI,IAAK,CACHxrH,UAAW,SAAUupB,GAAM,OAAOwxF,EAAWxxF,GAAMA,IAAOmB,QAAQC,SAAW,EAC7E3jB,MAAO,WAAa,EACpBohH,KAAM,WAAa,GAGzB,EAEIqD,GAAuB,CAAEhrE,MAAO,CAAEpoC,cAAc,GAAOgkG,WAAY,CAAEhkG,cAAc,GAAO6hG,MAAO,CAAE7hG,cAAc,GAAOkkG,OAAQ,CAAElkG,cAAc,IAChJqzG,GAAoB,CAAEjrE,MAAO,CAAEpoC,cAAc,GAAOgkG,WAAY,CAAEhkG,cAAc,GAAOkkG,OAAQ,CAAElkG,cAAc,IAKnHqzG,GAAkBjrE,MAAM1xB,IAAM,WAK5B,OAAOg1F,GAActjE,KACvB,EAKAgrE,GAAqBhrE,MAAM1xB,IAAM,WAK/B,OAAOg1F,GAActjE,KACvB,EAEAgrE,GAAqBpP,WAAWttF,IAAM,WACpC,OAAO2uF,EAAmBK,WAC5B,EAEA2N,GAAkBrP,WAAWttF,IAAM,WACjC,OAAO2uF,EAAmBK,WAC5B,EAEA0N,GAAqBvR,MAAMnrF,IAAM,WAC/B,OAAOl0B,KAAK0rB,OAAO5lB,MAAMuD,QAAO,SAAUuyE,EAAK/uE,GAC3C,IAAIjP,EAEN,OAAIiP,EAAM22G,OACR5nC,EAAK,IAAO/uE,EAAW,SAAQjP,EAAM,CAAC,GAAOiP,EAAMtN,MAAQsN,EAAMwyG,MAAOzhH,GAEjEg+E,IAGTA,EAAI/uE,EAAMtN,MAAQsN,EAAMwyG,MAEjBzjC,EACT,GAAG,CAAC,EACN,EAKAg1C,GAAqBlP,OAAOxtF,IAAM,WAChC,OAAOm8F,GAAU3O,MACnB,EAKAkP,GAAqBlP,OAAO1jF,IAAM,SAAU/gC,GAC1CozH,GAAU3O,OAASzkH,CACrB,EAEA4zH,GAAkBnP,OAAOxtF,IAAM,WAC7B,OAAO2uF,EAAmBK,YAAYxB,MACxC,EAKAmP,GAAkBnP,OAAO1jF,IAAM,SAAU/gC,GACvC,IAAI6zH,EAAa7zH,IAAU4lH,EAAmBK,YAAYxB,OAC1DmB,EAAmBK,YAAYxB,OAASzkH,EACpC6zH,GAAcT,GAAUK,MAAQL,GAAUK,KAAKC,KACjDN,GAAUK,KAAKC,IAAIxkH,MAAM,gBAE7B,EAMAkkH,GAAUn/B,OAAS,SAAiBo/B,EAAavoH,GAK/C,OAAO,IAAIsoH,GAAUC,EAAavoH,EACpC,EAKAsoH,GAAU5qH,OAAS,SAAiBlG,EAAM6rH,EAAWrjH,QAChC,IAAZA,IAAqBA,EAAU,CAAC,GAEvCsoH,GAAUU,aAAaxxH,EAAM6rH,GAG7B,IAAI4F,EAAa5F,EAAUrjH,SAAW,CAAC,EACvCsoH,GAAUY,OAAO1xH,EAAM,CACrB6rH,UAAWA,EACXhC,WAAarhH,GAAWA,EAAQqhH,YAAegC,EAAUhC,WACzDrhH,QAAShD,EAAO,CAAE0kH,WAAW,EAAOlqG,WAAW,GAAQyxG,EAAYjpH,GAAW,CAAC,IAEnF,EAMAsoH,GAAUh5G,OAAS,SAAiB9X,GAKlC2pH,GAAc7xG,OAAO9X,EACvB,EAKA8wH,GAAUlyH,UAAU8wH,SAAW,SAAmBiC,EAAM1P,GACtD6O,GAAUpB,SAASiC,EAAM1P,EAC3B,EAKA6O,GAAUpB,SAAW,SAAmBiC,EAAM1P,GAC1C,IAAI5jH,EAEN,GAAIw2F,EAAS88B,GACXrO,EAAmBK,YAAYpR,MAAMof,OADvC,CAMA,GAAI1P,EAAY,CACd,IAAIE,EAASwP,GAAQ1P,EAAWjiH,KAChCiiH,EAAaz8G,EAAO,CAAC,EAAGy8G,GACxBqB,EAAmBK,YAAYpR,QAAQl0G,EAAM,CAAC,GAAO8jH,GAAUF,EAAY5jH,GAC7E,CAEIszH,IAEFb,GAAU3O,OAASwP,EAXrB,CAaF,EAKAb,GAAUlyH,UAAU+wH,OAAS,SAAiBiC,GAC1C,IAAI7N,EAAStjH,KAGXoxH,EAAkB,CAAE7xH,KAAM4xH,EAAU5xH,KAAMikH,MAAO2N,EAAU3N,MAAO4E,SAAS,GAC3EiJ,EAAWF,EAAU/I,QAAUpoH,KAAK0rB,OAAO7qB,KAAKuwH,GAAmB,KAEnEC,IAEFF,EAAU9R,MAAQgS,EAAShS,MAC3BgS,EAASluH,UACTnD,KAAK0rB,OAAOrU,OAAOg6G,IAIrB,IAAIp0H,EAAQk0H,EAAU9I,aAClBx7G,EAAQ,IAAI+9G,GAAMuG,GAatB,OAZAnxH,KAAK0rB,OAAOnmB,KAAKsH,GAGbA,EAAM0S,UACRvf,KAAK0wH,KAAKC,IAAIxrH,WAAU,WAAc,OAAOm+G,EAAOr8E,SAAU,IAAOp6B,EAAQ,GAAI5P,GAAS4P,EAAM5P,MAAO,CAAEomH,KAAM8N,EAAU9N,MAAS,IAElIrjH,KAAKsxH,UAAUzkH,EAAO5P,GAAS4P,EAAM5P,MAAO,CAAE0zE,SAAS,IAAQ7qD,MAAK,SAAU4C,GAC5E7b,EAAMwyG,MAAMmL,MAAQ9hG,EAAO8hG,MAC3B39G,EAAMwyG,MAAMoL,SAAW/hG,EAAO8hG,KAChC,IAGK39G,CACT,EAKAwjH,GAAUlyH,UAAUi/E,KAAO,SAAe79E,EAAM8/G,EAAOvvB,QACtC,IAARA,IAAiBA,EAAM,MAE9B,IAAIjjF,EAAQ7M,KAAK8tH,cAAcvuH,OAAMjC,EAAWwyF,GAC3CjjF,GAAUwyG,GAIfxyG,EAAM6/G,SAASrN,EACjB,EAKAgR,GAAUlyH,UAAUu9B,OAAS,SAAiBn8B,EAAMikH,EAAO1zB,GACzD,IAAIjjF,EAAQqzG,EAAW3gH,EAAK4D,SAAW5D,EAAOS,KAAK8tH,cAAcvuH,EAAMikH,EAAO1zB,GACzEjjF,IAGAA,EAAMu7G,UACTv7G,EAAM1J,UACNnD,KAAKuoB,OAAOlR,OAAOxK,EAAMtN,KAAMsN,EAAM22G,MAAO32G,EAAMw2G,MAClDrjH,KAAK0rB,OAAOrU,OAAOxK,IAEvB,EAKAwjH,GAAUlyH,UAAUsH,OAAS,SAAiBlG,EAAM6rH,EAAWrjH,QAC1C,IAAZA,IAAqBA,EAAU,CAAC,GAEvCsoH,GAAU5qH,OAAOlG,EAAM6rH,EAAWrjH,EACpC,EAEAsoH,GAAUlyH,UAAUyoB,MAAQ,SAAgB6nG,GACxC,IAAInL,EAAStjH,KAGf,OAAOA,KAAK0wH,KAAKC,IAAIxrH,YAAY2gB,MAAK,WACpC,OAAOw9F,EAAOoN,KAAKC,IAAIxrH,WACzB,IAAG2gB,MAAK,WACNw9F,EAAO53F,OAAO1nB,OAAOyqH,GAAS7qH,SAAQ,SAAUiJ,GAC9CA,EAAM++G,QAAQ,MACd/+G,EAAM+Z,QACN08F,EAAO/6F,OAAOlR,OAAOxK,EAAMtN,KAAMsN,EAAM22G,MAAOiL,GAAWA,EAAQpL,KACnE,GACF,GACF,EAKAgN,GAAUlyH,UAAU05G,OAAS,SAAiBlzF,EAAIvY,GAC9C,IAAIo3G,EAAQp3G,EAAIo3G,MAENxjH,KAAK8tH,cAAe,IAAMnpG,IAItC3kB,KAAKuoB,OAAOsvF,OAAOlzF,EAAI,CAAE6+F,MAAOA,GAClC,EAMA6M,GAAUlyH,UAAUkZ,OAAS,SAAiB9X,GAC5C8wH,GAAUh5G,OAAO9X,EACnB,EAKA8wH,GAAUlyH,UAAU8oC,SAAW,SAAmBsqF,EAAiBt0H,EAAOmP,GACtE,IAAIk3G,EAAStjH,UACA,IAARoM,IAAiBA,EAAM,CAAC,GAC7B,IAAI2iE,EAAS3iE,EAAI2iE,OACbs0C,EAAOj3G,EAAIi3G,KAEjB,GAAIrjH,KAAKywH,OAAU,OAAO5gG,QAAQC,SAAQ,GAG1C,GAAIovF,EAAkBqS,GACpB,OAAOvxH,KAAKuvH,eAAe,CAAExgD,OAAQA,EAAQs0C,KAAMA,IAIrD,GAAwB,MAApBkO,EACF,OAAOvxH,KAAK6lB,iBAAYvoB,EAAW,CAAEyxE,OAAQA,EAAQs0C,KAAMA,IAI7D,GAAI,aAAaxkG,KAAK0yG,GAAkB,CACtC,IAAIC,EAAUD,EAAgB72D,MAAM,cAAc,GAClD,OAAO16D,KAAK6lB,YAAY2rG,EAC1B,CAEA,IAAI3kH,EAAQ7M,KAAK8tH,cAAcyD,GAC/B,IAAK1kH,EACH,OAAO7M,KAAKyxH,qBAAqBF,GAG9BxiD,IAAUliE,EAAMwyG,MAAMpsC,SAAU,QACvB31E,IAAVL,IACFA,EAAQ4P,EAAM5P,OAGhB,IAAIy0H,EAAoB1xH,KAAKsxH,UAAUzkH,EAAO5P,GAG9C,OAFA4P,EAAM++G,QAAQ8F,GAEPA,EAAkB5rG,MAAK,SAAU4C,GAOtC,OANKqmD,GAAUliE,EAAMk/G,aAAa2F,KAEhC7kH,EAAM++G,QAAQ,MACdtI,EAAOqO,yBAAyB,CAACjpG,GAAS26F,IAGrC36F,EAAO8hG,KAChB,GACF,EAKA6F,GAAUlyH,UAAUixH,MAAQ,WAG1B,OAFApvH,KAAKywH,QAAS,EAEPzwH,IACT,EAKAqwH,GAAUlyH,UAAUkxH,OAAS,WAG3B,OAFArvH,KAAKywH,QAAS,EAEPzwH,IACT,EAKAqwH,GAAUlyH,UAAU0nB,YAAc,SAAsBpW,EAAQrD,GAC5D,IAAIk3G,EAAStjH,UACA,IAARoM,IAAiBA,EAAM,CAAC,GAC7B,IAAI2iE,EAAS3iE,EAAI2iE,OACbs0C,EAAOj3G,EAAIi3G,KAEjB,GAAIrjH,KAAKywH,OAAU,OAAO5gG,QAAQC,SAAQ,GAE1C,IAAI2+F,EAAU,KACVmD,GAAiB,EAiBrB,MAfsB,iBAAXniH,EACTg/G,EAAU,CAAEjL,MAAO/zG,EAAQ4zG,KAAMA,GACxBjvB,EAAS3kF,IAClBg/G,EAAU3xH,OAAO4L,KAAK+G,GAAQjF,KAAI,SAAU1L,GAC1C,MAAO,CAAES,KAAMT,EAAKukH,KAAMA,EAAMG,MAAO,KACzC,IACAoO,GAAiB,GAEjBnD,EADSnwH,MAAMC,QAAQkR,GACbA,EAAOjF,KAAI,SAAU1L,GAC7B,MAAsB,iBAARA,EAAmBhC,OAAOiI,OAAO,CAAEs+G,KAAMA,GAAQvkH,GAAO,CAAES,KAAMT,EAAKukH,KAAMA,EAC3F,IAEU,CAAEG,MAAO,KAAMH,KAAMA,GAG1BxzF,QAAQ6zF,IACb1jH,KAAK0rB,OAAO1nB,OAAOyqH,GAASjkH,KAAI,SAAUqC,GAAS,OAAOy2G,EAAOgO,UAAUzkH,EAAO+kH,EAAiBniH,EAAO5C,EAAMtN,MAAQsN,EAAM5P,MAAQ,KACtI6oB,MAAK,SAAUuQ,GAKf,OAJK04C,GACHu0C,EAAOqO,yBAAyBt7F,EAASgtF,GAGpChtF,EAAQyjB,OAAM,SAAUgwB,GAAK,OAAOA,EAAE0gD,KAAO,GACtD,GACF,EAKA6F,GAAUlyH,UAAUoxH,eAAiB,SAAyBnjH,GAC1D,IAAIk3G,EAAStjH,UACA,IAARoM,IAAiBA,EAAM,CAAC,GAC7B,IAAI2iE,EAAS3iE,EAAI2iE,OACbs0C,EAAOj3G,EAAIi3G,KAEjB,OAAIrjH,KAAKywH,OAAiB5gG,QAAQC,SAAQ,GAEnCD,QAAQ6zF,IACb1jH,KAAK0rB,OAAO1nB,OAAO,CAAEq/G,KAAMA,IAAQ74G,KAAI,SAAUqC,GAAS,OAAOy2G,EAAOgO,UAAUzkH,EAAOA,EAAM5P,MAAQ,KACvG6oB,MAAK,SAAUuQ,GAKf,OAJK04C,GACHu0C,EAAOqO,yBAAyBt7F,EAASgtF,GAGpChtF,EAAQyjB,OAAM,SAAUgwB,GAAK,OAAOA,EAAE0gD,KAAO,GACtD,GACF,EAKA6F,GAAUlyH,UAAUmxH,OAAS,SAAiBryH,EAAO2oD,EAAO79C,QACvC,IAAZA,IAAqBA,EAAU,CAAC,GAEvC,IAAI8E,EAAQ,CACVtN,KAAOwI,GAAWA,EAAQxI,MAAS,UACnCqmD,MAAOi6D,EAAej6D,GACtB8hE,MAAOlI,EAAQ,QAASz3G,GAAS,GACjC8iH,eAAe,EACf,cAAIQ,GACF,QAASrrH,KAAK4lD,MAAMt+B,UAAYtnB,KAAK6qH,aACvC,GAGEgH,EAAc/0H,OAAO4L,KAAKmE,EAAM+4C,OAAO5hD,OAAOklH,GAAcM,cAahE,OAZIqI,EAAYnzH,QAAUqJ,GAAWqsF,EAASrsF,EAAQ0H,UACpD5C,EAAM+/G,aAAeiF,EAAYrnH,KAAI,SAAUq8D,GAC7C,IACMirD,EADIjlH,EAAM+4C,MAAMihB,GACA,GAEtB,MAAO,CACLtnE,KAAMsnE,EACNh6D,MAAO,CAAE5P,MAAO8K,EAAQ0H,OAAOqiH,IAEnC,KAGK9xH,KAAKsxH,UAAUzkH,EAAO5P,GAAO6oB,MAAK,SAAU4C,GACjD,IAAIH,EAAS,GACTwpG,EAAU,CAAC,EAMf,OALArpG,EAAOH,OAAO3kB,SAAQ,SAAUY,GAC9B+jB,EAAOhjB,KAAKf,EAAEikB,KACdspG,EAAQvtH,EAAEqiE,MAAQriE,EAAEikB,GACtB,IAEO,CACL+hG,MAAO9hG,EAAO8hG,MACdjiG,OAAQA,EACRypG,YAAaD,EAEjB,GACF,EAKA1B,GAAUlyH,UAAUgF,QAAU,WAC5BnD,KAAK0wH,KAAKC,IAAIpD,KAAK,gBACrB,EAKA8C,GAAUlyH,UAAUqyH,cAAgB,SAAwBF,GACxD,IAAIhN,EAAStjH,KAEVswH,GAELxzH,OAAO4L,KAAK4nH,GAAa1sH,SAAQ,SAAUiJ,GACzC,IAAI9E,EAAUhD,EAAO,CAAC,EAAG,CAAExF,KAAMsN,EAAO+4C,MAAO0qE,EAAYzjH,KAC3Dy2G,EAAO4L,OAAOnnH,EAChB,GACF,EAKAsoH,GAAUlyH,UAAU8zH,eAAiB,SAAyB3B,GAC5D,IAAIliH,EAAS,KAKb,OAJIkiH,EAAY4B,aAAe5zH,MAAMC,QAAQ+xH,EAAY4B,eACvD9jH,EAASkiH,EAAY4B,YAAY,IAG5B9jH,GAAUy0G,EAAmBK,YAAYpB,cAAc9hH,KAAK0hH,OACrE,EAKA2O,GAAUlyH,UAAUg0H,oBAAsB,SAA8BtlH,EAAOg6D,EAAM5hE,EAAMmtH,QACzE,IAATntH,IAAkBA,EAAO,CAAC,QACX,IAAfmtH,IAAwBA,EAAa,MAE5C,IAAI7yH,EAAOS,KAAKqyH,qBAAqBxlH,GACjCmoB,EAASh1B,KAAKsyH,oBAAoBzrD,EAAMurD,GAE5C,OAAOvP,EAAmBK,YAAYjB,gBAAgBjiH,KAAK0hH,OAAQ70G,EAAMtN,KAAMsnE,EAAKtnE,KAAM,CAACA,EAAMy1B,EAAQ/vB,GAC3G,EAKAorH,GAAUlyH,UAAUo0H,2BAA6B,SAAqC30H,EAAK0pE,GACzF,GAAIhpE,MAAMC,QAAQX,GAChB,OAAOA,EAGT,IAAIwrH,EAAaF,GAAcQ,cAAcpiD,GAC7C,OAAK8hD,GAAeh1B,EAASx2F,GAItBwrH,EAAW//G,QAAO,SAAUqnD,EAAM8hE,GAKvC,OAJIA,KAAa50H,GACf8yD,EAAKnrD,KAAK3H,EAAI40H,IAGT9hE,CACT,GAAG,IATM9yD,CAUX,EAKAyyH,GAAUlyH,UAAUm0H,oBAAsB,SAA8BzrD,EAAMurD,QACtD,IAAfA,IAAwBA,EAAa,MAE5C,IAAIp9F,EAASh1B,KAAKuyH,2BAA2B1rD,EAAK7xC,OAAQ6xC,EAAKtnE,MAC/D,OAAIsnE,EAAK9+D,QAAQ0hH,WAAaz0F,GAAUA,EAAO,GAEtC,CADao9F,GAAcvP,EAAmBK,YAAY9wF,aAAapyB,KAAK0hH,OAAQ1sF,EAAO,GAAIA,EAAO,KACtFrzB,OAAOqzB,EAAOpqB,MAAM,IAGtCoqB,CACT,EAKAq7F,GAAUlyH,UAAUk0H,qBAAuB,SAA+BxlH,GACxE,OAAOA,EAAMguE,OAASgoC,EAAmBK,YAAY9wF,aAAapyB,KAAK0hH,OAAQ70G,EAAMtN,KAAMsN,EAAMtN,KACnG,EAOA8wH,GAAUlyH,UAAUs0H,wBAA0B,SAAkCz9F,EAAQsyC,GACtF,IAAI8hD,EAAaF,GAAcQ,cAAcpiD,GAC7C,IAAK8hD,EACH,OAAOp0F,EAGT,GAAIo/D,EAASp/D,GAAS,CAIpB,GAFco0F,EAAW/8E,MAAK,SAAU9sC,GAAQ,OAA8C,IAAvCzC,OAAO4L,KAAKssB,GAAQj0B,QAAQxB,EAAc,IAG/F,OAAOy1B,EAGTA,EAAS,CAACA,EACZ,CAGA,OAAOA,EAAO3rB,QAAO,SAAUqnD,EAAMzzD,EAAO0nE,GAG1C,OAFAjU,EAAK04D,EAAWzkD,IAAQ1nE,EAEjByzD,CACT,GAAG,CAAC,EACN,EAKA2/D,GAAUlyH,UAAUu0H,MAAQ,SAAgB7lH,EAAO5P,EAAO4pE,GACtD,IAAIy8C,EAAStjH,KAEXorH,EAAYlC,GAAcS,mBAAmB9iD,EAAKtnE,MAClDy1B,EAAS12B,MAAMC,QAAQsoE,EAAK7xC,QAAUzD,EAAQs1C,EAAK7xC,QAAU6xC,EAAK7xC,OACjEA,IACHA,EAAS,IAGX,IAAIo9F,EAAa,KACjB,IAAKhH,GAAkC,mBAAdA,EACvB,OAAOv7F,QAAQE,OAAOkwF,EAAa,sBAAyBp5C,EAAS,KAAI,cAI3E,GAAIA,EAAK9+D,QAAQ0hH,WAAa58G,EAAM+/G,aAAc,CAChD,IAAIvvG,EAASxc,EAAKgM,EAAM+/G,cAAc,SAAUnsF,GAAK,OAAOA,EAAElhC,OAASsnE,EAAKtnE,IAAM,IAC9E8d,IACF+0G,EAAa/0G,EAAOxQ,MAAMguE,MAC1B7lD,EAAS,CAAC3X,EAAOxQ,MAAM5P,OAAO0E,OAAOqzB,EAAOpqB,MAAM,IAEtD,KAAyB,aAAdi8D,EAAKtnE,MAAuBsN,EAAM0+G,eAE3Cv2F,EAASA,EAAOt2B,OAASs2B,EAAS,EAAC,IAGrC,GAAI6xC,EAAK9+D,QAAQsjF,OAAQ,CACvB,IAAIw2B,EAAa7hH,KAAKiyH,eAAeplH,EAAM+4C,OACzB,gBAAdihB,EAAKtnE,MACPy1B,EAAOzvB,KAAKs8G,EAEhB,CAEA,IAAIn5F,EAAS0iG,EAAUnuH,EAAO+C,KAAKyyH,wBAAwBz9F,EAAQ6xC,EAAKtnE,OAGxE,OAAI2gH,EAAWx3F,EAAO5C,MACb4C,EAAO5C,MAAK,SAAUrW,GAC3B,IAAIkjH,GAAW,EACX1tH,EAAO,CAAC,EAQZ,OAPI3G,MAAMC,QAAQkR,GAChBkjH,EAAWljH,EAAOqqC,OAAM,SAAUgwB,GAAK,OAAQsqB,EAAStqB,GAAKA,EAAE0gD,MAAQ1gD,CAAI,KAE3E6oD,EAAWv+B,EAAS3kF,GAAUA,EAAO+6G,MAAQ/6G,EAC7CxK,EAAOwK,EAAOxK,MAGT,CACLulH,MAAOmI,EACP1tH,KAAMyjB,EAAOzjB,KACbsjB,OAAQoqG,EAAW,GAAK,CAACrP,EAAOsP,kBAAkB/lH,EAAOg6D,EAAM5hE,EAAMmtH,IAEzE,KAGGh+B,EAAS1rE,KACZA,EAAS,CAAE8hG,MAAO9hG,EAAQzjB,KAAM,CAAC,IAG5B,CACLulH,MAAO9hG,EAAO8hG,MACdvlH,KAAMyjB,EAAOzjB,KACbsjB,OAAQG,EAAO8hG,MAAQ,GAAK,CAACxqH,KAAK4yH,kBAAkB/lH,EAAOg6D,EAAMn+C,EAAOzjB,KAAMmtH,KAElF,EAKA/B,GAAUY,OAAS,SAAiB1xH,EAAM6M,GACtC,IAAIg/G,EAAYh/G,EAAIg/G,UAChBrjH,EAAUqE,EAAIrE,QACdqhH,EAAah9G,EAAIg9G,WAEnBniF,EAAWi5E,EAAWkL,GAAaA,EAAYA,EAAUnkF,SACzDmkF,EAAUzoC,YACZkgC,EAAmBK,YAAYV,WAAW6N,GAAU3O,OAAQniH,EAAM6rH,EAAUzoC,YAG9EumC,GAAc1gG,IAAIjpB,EAAM,CACtB0nC,SAAUA,EACVl/B,QAASA,EACTqhH,WAAYA,GAEhB,EAKAiH,GAAUU,aAAe,SAAuBxxH,EAAM6rH,GACpD,IAAIlL,EAAWkL,KAIVlL,EAAWkL,EAAUnkF,UACxB,MAAMg5E,EACH,mCAAqC1gH,EAAO,oDAGnD,EAKA8wH,GAAUlyH,UAAUy0H,kBAAoB,SAA4B/lH,EAAOg6D,EAAM5hE,EAAMmtH,GACnF,IAAI9O,EAAStjH,KAEf,MAAO,CACL2kB,GAAI9X,EAAM8X,GACV0+F,KAAMx2G,EAAMw2G,KACZx2G,MAAOA,EAAMtN,KACbkpB,IAAKzoB,KAAKmyH,oBAAoBtlH,EAAOg6D,EAAM5hE,EAAMmtH,GACjDvrD,KAAMA,EAAKtnE,KACXikH,MAAO32G,EAAM22G,MACbC,WAAY,WACV,OAAOH,EAAO6O,oBAAoBtlH,EAAOg6D,EAAM5hE,EAAMmtH,EACvD,EAEJ,EAKA/B,GAAUlyH,UAAU2vH,cAAgB,SAAwBvuH,EAAMikH,EAAO1zB,GACvE,GAAgB,MAAZvwF,EAAK,GACP,OAAOS,KAAK0rB,OAAOgjG,SAASnvH,EAAKqL,MAAM,IAGzC,IAAKs0G,EAAkBsE,GACrB,OAAOxjH,KAAK0rB,OAAO7qB,KAAK,CAAEtB,KAAMA,EAAMikH,MAAOA,EAAOH,KAAMvzB,IAG5D,GAAIj9D,EAAStzB,EAAM,KAAM,CACvB,IAAI6M,EAAM7M,EAAKkJ,MAAM,KACfoqH,EAAazmH,EAAI,GACjBqmB,EAAYrmB,EAAIxB,MAAM,GACxBiC,EAAQ7M,KAAK0rB,OAAO7qB,KAAK,CAAEtB,KAAMkzB,EAAU5nB,KAAK,KAAM24G,MAAOqP,EAAYxP,KAAMvzB,IACnF,GAAIjjF,EACF,OAAOA,CAEX,CAEA,OAAO7M,KAAK0rB,OAAO7qB,KAAK,CAAEtB,KAAMA,EAAMikH,MAAO,KAAMH,KAAMvzB,GAC3D,EAKAugC,GAAUlyH,UAAUszH,qBAAuB,SAA+BlyH,EAAMikH,GAC9E,IAAIsP,EAAW5T,EAAkBsE,GAASjkH,GAAe2/G,EAAkBsE,GAAuB,GAAdA,EAAQ,KAAYjkH,EAExG,OAAOswB,QAAQE,OAAOkwF,EACnB,qCAAwC6S,EAAW,4BAExD,EAKAzC,GAAUlyH,UAAUwzH,yBAA2B,SAAmCt7F,EAASgtF,GACvF,IAAIC,EAAStjH,KAEX+yH,EAAW18F,EAAQ7rB,KAAI,SAAUke,GAAU,MAAO,CAAG/D,GAAI+D,EAAO/D,GAAO,IAC3E3kB,KAAKuoB,OAAOq8F,WAAWmO,EAASvoH,KAAI,SAAUorD,GAAK,OAAOA,EAAEjxC,EAAI,KAEhE0R,EAAQzyB,SAAQ,SAAU8kB,GACxB46F,EAAO/6F,OAAOlR,OAAOqR,EAAO7b,MAAO6b,EAAO86F,MAAOH,EACnD,IACA,IAAI2P,EAAY38F,EAAQhtB,QAAO,SAAUqnD,EAAMub,GAG7C,OAFAvb,EAAKnrD,KAAKZ,MAAM+rD,EAAMub,EAAK1jD,QAEpBmoC,CACT,GAAG,IAEH1wD,KAAKuoB,OAAOC,IAAIwqG,GAGhBhzH,KAAK0rB,OAAO1nB,OAAO+uH,GAAUnvH,SAAQ,SAAUiJ,GAC7C,IAAI6b,EAAS7nB,EAAKw1B,GAAS,SAAUiL,GAAK,OAAOA,EAAE3c,KAAO9X,EAAM8X,EAAI,IACpE9X,EAAM6/G,SAAS,CACbz5C,SAAS,EACTu3C,MAAO9hG,EAAO8hG,MACdQ,WAAW,GAEf,GACF,EAEAqF,GAAUlyH,UAAU80H,YAAc,SAAsBpmH,EAAO5P,GAE7D,OAAoB,IAAhB4P,EAAM66G,WAKN76G,EAAMy+G,aAAcpF,IAAYN,sBAK5B/4G,EAAMw+G,aAAenM,EAAkBjiH,IAAoB,KAAVA,GAAgBwjH,EAAaxjH,IACxF,EAEAozH,GAAUlyH,UAAU+0H,YAAc,SAAsBrmH,GAEtD,YAAoBvP,IAAhBuP,EAAM66G,MACD76G,EAAM66G,MAGR1nH,KAAKylH,QACd,EAKA4K,GAAUlyH,UAAUmzH,UAAY,SAAoBzkH,EAAO5P,EAAOmP,GAC9D,IAAIk3G,EAAStjH,UACA,IAARoM,IAAiBA,EAAM,CAAC,GAC7B,IAAIukE,EAAUvkE,EAAIukE,QAEhBwiD,EAAer2H,OAAO4L,KAAKmE,EAAM+4C,OAAO5hD,OAAOklH,GAAcI,eAejE,GAbAz8G,EAAMg+G,eAAgB,EACtBsI,EAAavvH,SAAQ,SAAUijE,GAC7B,IAAIusD,EAAclK,GAAcx3D,WAAWmV,GACvCn+C,EAAS46F,EAAOoP,MAAM7lH,EAAO5P,EAAO,CAAEsC,KAAMsnE,EAAM7xC,OAAQnoB,EAAM+4C,MAAMihB,GAAO9+D,QAASqrH,IAE1F,GAAIlT,EAAWx3F,EAAO5C,MAAS,MAAMm6F,EAAY,iCACjD,IAAK7rB,EAAS1rE,GAAW,MAAMu3F,EAAY,qDAEd,IAAzBv3F,EAAOzjB,KAAKqiB,WACdza,EAAMg+G,eAAgB,EAE1B,IAEI7qH,KAAKizH,YAAYpmH,EAAO5P,GAC1B,OAAO4yB,QAAQC,QAAQ,CAAE06F,OAAO,EAAM7lG,GAAI9X,EAAM8X,GAAI9X,MAAOA,EAAMtN,KAAMikH,MAAO32G,EAAM22G,MAAOj7F,OAAQ,KAGrG,IAAI8qG,EAAW,GACX9qG,EAAS,GACT+qG,GAAc,EA0BlB,OAzBIpT,EAAWrzG,EAAM6gH,qBACnB7gH,EAAMwyG,MAAM4L,QAAUp+G,EAAM6gH,qBAI9B5wH,OAAO4L,KAAKmE,EAAM+4C,OAAO5hD,QAAO,SAAU6iE,GACxC,OAAK8J,IAAYu4C,GAAcx2E,IAAIm0B,IAE5BqiD,GAAcG,YAAYxiD,EACnC,IAAGx6B,MAAK,SAAUw6B,GAChB,IAAIusD,EAAclK,GAAcx3D,WAAWmV,GACvCn+C,EAAS46F,EAAOoP,MAAM7lH,EAAO5P,EAAO,CAAEsC,KAAMsnE,EAAM7xC,OAAQnoB,EAAM+4C,MAAMihB,GAAO9+D,QAASqrH,IAW1F,OAVIlT,EAAWx3F,EAAO5C,MACpButG,EAAS9tH,KAAKmjB,IACJA,EAAO8hG,OAASlH,EAAO4P,YAAYrmH,IAC7C0b,EAAOhjB,KAAKZ,MAAM4jB,EAAQG,EAAOH,QACjC+qG,GAAc,GAGdD,EAAS9tH,KAAK,IAAIsqB,SAAQ,SAAUC,GAAW,OAAOA,EAAQpH,EAAS,KAGlE4qG,CACT,IAEIA,EACKzjG,QAAQC,QAAQ,CAAE06F,OAAO,EAAOjiG,OAAQA,EAAQ5D,GAAI9X,EAAM8X,GAAI9X,MAAOA,EAAMtN,KAAMikH,MAAO32G,EAAM22G,QAGhG3zF,QAAQ6zF,IAAI2P,GAAUvtG,MAAK,SAAUuQ,GAC1C,OAAOA,EAAQhtB,QAAO,SAAUqnD,EAAMv8B,GAClC,IAAI/nB,EAQN,OANK+nB,EAAEq2F,QACJp+G,EAAMskD,EAAKnoC,QAAQhjB,KAAKZ,MAAMyH,EAAK+nB,EAAE5L,QAGxCmoC,EAAK85D,MAAQ95D,EAAK85D,OAASr2F,EAAEq2F,MAEtB95D,CACT,GAAG,CAAE85D,OAAO,EAAMjiG,OAAQA,EAAQ5D,GAAI9X,EAAM8X,GAAI9X,MAAOA,EAAMtN,KAAMikH,MAAO32G,EAAM22G,OAClF,GACF,EAEA1mH,OAAOsgB,iBAAkBizG,GAAUlyH,UAAWyyH,IAC9C9zH,OAAOsgB,iBAAkBizG,GAAWQ,IAIpC,IAAI0C,GAAiB,SAAUt2H,GAC7B,OAAIm3F,EAASn3F,GACJH,OAAO4L,KAAKzL,GAAOoM,QAAO,SAAUqnD,EAAM5xD,GAG/C,OAFA4xD,EAAK5xD,GAAOy0H,GAAet2H,EAAM6B,IAE1B4xD,CACT,GAAG,CAAC,GAGFwvD,EAAWjjH,GACNA,EAAM,MAAO,CAAC,MAAO,MAAO,QAG9BA,CACT,EAwBIu2H,GAAiB,SAAyB3N,EAAM4N,GAClDzzH,KAAK6lH,KAAOA,EACZ7lH,KAAKyzH,QAAUA,CACjB,EAEIC,GAAuB,CAAEhS,OAAQ,CAAElkG,cAAc,IAErDk2G,GAAqBhS,OAAOxtF,IAAM,WAChC,OAAOl0B,KAAK6lH,KAAKnE,MACnB,EAEAgS,GAAqBhS,OAAO1jF,IAAM,SAAU/gC,GAC1C6iH,EAAK,2FACP,EAEA0T,GAAer1H,UAAU2jH,cAAgB,SAAwBJ,GAC/D,OAAO1hH,KAAK6lH,KAAK8N,kBAAkBjS,GAAU1hH,KAAK0hH,OACpD,EAEA8R,GAAer1H,UAAUyjH,cAAgB,SAAwBF,EAAQzkH,GACvE+C,KAAK6lH,KAAK+N,kBAAkBlS,GAAU1hH,KAAK0hH,OAAQzkH,EACrD,EAEAu2H,GAAer1H,UAAUwkF,WAAa,SAAqBiN,EAAG9wF,EAAKmG,GACjE,IAAI+1F,EAAQh7F,KAAY,QAAI,aAAelB,EACvC+0H,EAAc5uH,EAMlB,OAJI3G,MAAMC,QAAQ0G,KAChB4uH,EAAc,GAAGlyH,OAAOgD,MAAM,GAAIM,IAGhCjF,KAAK6lH,KAAKiO,GAAG94B,GACRh7F,KAAK6lH,KAAK/7C,EAAEkxB,EAAM64B,GAIvB7zH,KAAK6lH,KAAKiO,GAAG94B,EAAMh7F,KAAK6lH,KAAKkO,gBACxB/zH,KAAK6lH,KAAK/7C,EAAEkxB,EAAMh7F,KAAK6lH,KAAKkO,eAAgBF,GAI9C7zH,KAAK6lH,KAAK/7C,EAAI9pE,KAAY,QAAI,qBAAuB6zH,EAC9D,EAEAL,GAAer1H,UAAUi0B,aAAe,SAAuBw9D,EAAG9wF,EAAKwjH,QACjD,IAAbA,IAAsBA,EAAW,IAExC,IAAItnB,EAAQh7F,KAAY,QAAI,eAAiBlB,EAC7C,OAAIkB,KAAK6lH,KAAKiO,GAAG94B,GACRh7F,KAAK6lH,KAAK/7C,EAAEkxB,GAGdsnB,CACT,EAEAkR,GAAer1H,UAAU8jH,gBAAkB,SAA0BryB,EAAG/iF,EAAO/N,EAAKmG,GAClF,IAAI+1F,EAAQh7F,KAAY,QAAI,WAAa6M,EAAQ,IAAM/N,EACvD,OAAIkB,KAAK6lH,KAAKiO,GAAG94B,GACRh7F,KAAK6lH,KAAK/7C,EAAEkxB,EAAM/1F,GAGpBjF,KAAK2iF,WAAWiN,EAAG9wF,EAAKmG,EACjC,EAEAuuH,GAAer1H,UAAU2zG,MAAQ,SAAkB0P,GAC/C,IAAI8B,EAAStjH,KAEflD,OAAO4L,KAAK84G,GAAY59G,SAAQ,SAAUowH,GACtC,IAAIp2H,EAIF+uG,EAAQmF,EAAM,CAAC,EAAG0N,EAASwU,EAAY,IAAO1Q,EAAc,QAAIA,EAAOuC,KAAK5wG,SAAU,CAAC,IAEvFysG,EAAS5P,EAAMnF,EAhGD,SAAU+U,GAE9B,IAAIF,EAAa,CAAC,EAiBlB,OAhBIE,EAAOzsG,WACTusG,EAAWvsG,SAAWs+G,GAAe7R,EAAOzsG,WAG1CysG,EAAOS,SACTX,EAAWW,OAASoR,GAAe7R,EAAOS,SAGxCT,EAAOn1G,aACTi1G,EAAWj1G,WAAam1G,EAAOn1G,YAG5B2yG,EAAkBwC,EAAOG,cAC5BL,EAAWK,WAAaH,EAAOG,YAG1BL,CACT,CA4E8ByS,CAAgBzS,EAAWwS,KACrD1Q,EAAOuC,KAAKqO,mBAAmBF,IAAap2H,EAAM,CAAC,GAAO0lH,EAAOmQ,SAAW/R,EAAQ9jH,IAChF8jH,EAAOG,YACTyB,EAAOuC,KAAK+N,kBAAkBI,EAAWtS,EAAOG,WAEpD,GACF,EAEA2R,GAAer1H,UAAUqkH,WAAa,SAAqBd,EAAQ5iH,EAAK7B,GACpE,IAAIW,EAAKojH,EAEXhhH,KAAK8xG,QAAQkP,EAAQ,CAAC,GAASU,GAAU,CACrCzsG,UAAYrX,EAAM,CAAC,EAAGA,EAAIkB,GAAO7B,EAAOW,IACvCojH,GACP,EAEAwS,GAAer1H,UAAUskH,aAAe,SAAuBf,EAAQ5iH,EAAK7B,GACxE,IAAIW,EAAKojH,EAEXhhH,KAAK8xG,QAAQkP,EAAQ,CAAC,GAASU,GAAU,CACrCn1G,YAAc3O,EAAM,CAAC,EAAGA,EAAIkB,GAAO7B,EAAOW,IACzCojH,GACP,EAEAlkH,OAAOsgB,iBAAkBo2G,GAAer1H,UAAWu1H,IAEnD,IAmCI52G,GACAq3G,GACAC,GAXAC,GAAQ,CACVC,WA3Be,WAAc,MAAO,CACpC7oG,GAAI,CAAC,SACH,EA0BF8oG,MApBU,SAAUnoH,GAGpB,OAFaA,EAAImc,OAEN7pB,OACF,CACL+sB,GAAI,CAAC,UAIF,CACLA,GAAI,CAAC,SAAU,QAEnB,EASE0+F,QAPY,WAAc,MAAO,CACjC1+F,GAAI,GACF,EAMF07F,KA1BS,WAAc,MAAO,CAC9B17F,GAAI,CAAC,UACH,GAiCA+oG,GAAgB,SAAsB5zG,EAAQ6zG,GAprC/B,IAAUx3H,EAqrC3B+C,KAAKq/E,UAAUz+D,GACfwzG,GAAiBp0H,KACby0H,IACF33G,GAAM23G,GAERz0H,KAAK00H,YA1rCsBz3H,EA2rCzB,IAAIozH,GAAU,KAAM,CAAE5K,SAAU7kG,GAAUA,EAAO6kG,UAAYzlH,MA1rC/DwvH,GAAYvyH,EAELA,GA0rCP+C,KAAK20H,QAAQ30H,KAAK4gB,QAClB5gB,KAAK40H,UAAU50H,KAAK4gB,OACtB,EAEIi0G,GAAuB,CAAEC,WAAY,CAAEt3G,cAAc,GAAOoD,OAAQ,CAAEpD,cAAc,IACpFu3G,GAAoB,CAAED,WAAY,CAAEt3G,cAAc,GAAOoD,OAAQ,CAAEpD,cAAc,IAErFg3G,GAAcQ,cAAgB,SAAwBjS,EAAQjlG,GAC5D+kG,EAAmBG,UAAUD,EAAQjlG,EACvC,EAEA02G,GAAcn1C,UAAY,SAAoB41C,GAC5C9O,EAAU8O,EACZ,EAEAT,GAAcU,QAAU,SAAkBz7F,EAAMwpF,GAE9C,GADAkD,EAAU,CAAE1sF,KAAMA,IACbwpF,EAAL,CAIA,IAAK/C,EAAW+C,GACd,MAAM,IAAI97C,MAAM,4CAGlBktD,GAAM56F,GAAQwpF,CANd,CAOF,EAEAuR,GAAct2G,IAAM,SAAcshE,EAAQz3E,GAGxC,YAFmB,IAAZA,IAAqBA,EAAU,CAAC,GAElCm4G,EAAW1gC,GAKX40C,QAQL50C,EAAO,CAAE6wC,UAAWA,GAAWlN,SAAUA,EAAUgS,MAAO9E,GAAUzqE,OAAS79C,IAPtEosH,KACHA,GAAiB,SAEnBA,GAAe5uH,KAAK,CAAEi6E,OAAQA,EAAQz3E,QAASA,KARxC+3G,EAAK,yCAahB,EACA0U,GAAcY,QAAU,SAAkBX,EAAMr8C,GAC1Ct7D,IAAO23G,IAAS33G,KAOpBA,GAAM23G,EACNL,GAAiB,IAAII,GAAcp8C,GAEnCi4C,GAAUK,KAAO0D,GAxuEQ,WACzB,IACE,IAAIh8C,EAAOt7E,OAAOC,eAAe,CAAC,EAAG,UAAW,CAC9Cm3B,IAAK,WACH+1F,IAAkB,CACpB,IAEFhsG,OAAOisG,iBAAiB,cAAe,KAAM9xC,GAC7Cn6D,OAAOwvG,oBAAoB,cAAe,KAAMr1C,EAClD,CAAE,MAAO5zE,GACPylH,IAAkB,CACpB,CAEF,CA6tEEoL,GAEAv4G,GAAIvU,MAAMA,IACVuU,GAAIozG,UAAU,WAAYA,IACtBiE,KACFA,GAAevwH,SAAQ,SAAUwI,GAC7B,IAAIozE,EAASpzE,EAAIozE,OACbz3E,EAAUqE,EAAIrE,QAEpBysH,GAAct2G,IAAIshE,EAAQz3E,EAC5B,IACAosH,GAAiB,MAErB,EAEAU,GAAqBC,WAAW5gG,IAAM,WACpC,OAAO2uF,EAAmBK,WAC5B,EAEA6R,GAAkBD,WAAW5gG,IAAM,WACjC,OAAO2uF,EAAmBK,WAC5B,EAEA2R,GAAqBj0G,OAAOsT,IAAM,WAChC,OAAOgyF,GACT,EAEA6O,GAAkBn0G,OAAOsT,IAAM,WAC7B,OAAOgyF,GACT,EAEAsO,GAAcr2H,UAAUw2H,QAAU,SAAkB/zG,GAChD,IAAI0iG,EAAStjH,KAEfA,KAAK2wH,IAAM,IAAI7zG,GAAI,CACjB7X,KAAM,WAAc,MAAO,CACzBsjB,OAAQ+6F,EAAOoR,WAAWnsG,OAC1BmD,OAAQ43F,EAAOoR,WAAWhpG,OACxB,GAER,EAEA8oG,GAAcr2H,UAAUy2H,UAAY,SAAoBh0G,GACpD,IAAI0iG,EAAStjH,KAEXwhH,EAAa5gG,EAAO4gG,WAClBqE,EAAOjlG,EAAOilG,KACdC,EAAcllG,EAAOklG,YACrBpE,EAAS9gG,EAAO8gG,OAClB4T,EAAkB,WAChB9T,GACF8B,EAAOwR,WAAWhjB,MAAM0P,GAG1B8B,EAAOoR,WAAWnsG,OAAOk7F,YAC3B,EAGIoC,GACF2O,GAAcQ,cAAc,OAAQ,IAAIxB,GAAe3N,EAAMC,IAC7DD,EAAK8K,IAAIzuH,OAAO,SAAUozH,IACC,oBAAXr3G,QAChBje,KAAK2wH,IAAI3tH,IAAI,gBAAiBsyH,GAG5B9T,GACFxhH,KAAK80H,WAAWhjB,MAAM0P,GAGpBE,IAAWmE,GACb7lH,KAAK00H,WAAWzF,SAASvN,EAE7B,EAEA8S,GAAcr2H,UAAUkhF,UAAY,SAAoB41C,GACtD9O,EAAU8O,EACZ,EAEAn4H,OAAOsgB,iBAAkBo3G,GAAcr2H,UAAW02H,IAClD/3H,OAAOsgB,iBAAkBo3G,GAAeO,IAExCP,GAAcjsH,MAAQA,GACtBisH,GAActE,UAAYA,GAC1BsE,GAAcnE,UAAYA,GAC1BmE,GAAcrR,SAAWA,EAOzB,IAeIvlH,GAEAqX,GAAW,CACbmtG,SAAU,SAAUv1G,GAAS,MAAQ,OAASA,EAAQ,qBAAwB,EAC9E06D,MAAO,SAAU16D,EAAOT,GACtB,IAAIiR,EAASjR,EAAI,GAGjB,MAAQ,OAASS,EAAQ,mBAFTT,EAAI,GAEsC,eAAiB,IAAMiR,CACrF,EACEk4G,MAAO,SAAU1oH,GAAS,MAAQ,OAASA,EAAQ,+CAAkD,EACrG2oH,WAAY,SAAU3oH,GAAS,MAAQ,OAASA,EAAQ,+EAAkF,EAC1I4oH,UAAW,SAAU5oH,GAAS,MAAQ,OAASA,EAAQ,kDAAqD,EAC5G6oH,aAAc,SAAU7oH,GAAS,MAAQ,OAASA,EAAQ,iEAAoE,EAC9Hu6D,OAAQ,SAAUv6D,EAAOT,GACvB,IAAIiR,EAASjR,EAAI,GAGjB,MAAQ,OAASS,EAAQ,oBAFTT,EAAI,GAEuC,eAAiB,IAAMiR,CACtF,EACEs4G,QAAS,SAAU9oH,EAAOT,GAIxB,MAAQ,OAASS,EAAQ,0BAHfT,EAAI,GAG6C,QAFjDA,EAAI,EAGlB,EACEwpH,UAAW,SAAU/oH,GAAS,MAAQ,OAASA,EAAQ,8BAAiC,EACxFgpH,YAAa,SAAUhpH,GAAS,MAAQ,OAASA,EAAQ,mBAAsB,EAC/EipH,aAAc,SAAUjpH,EAAOT,GAI7B,MAAQ,OAASS,EAAQ,oBAHfT,EAAI,GAGuC,QAF3CA,EAAI,EAGlB,EACE8lH,YAAa,SAAUrlH,EAAOT,GAG5B,MAAQ,OAASS,EAAQ,0BAFZT,EAAI,EAGrB,EACE2pH,QAAS,SAAUlpH,EAAOT,QACX,IAARA,IAAiBA,EAAM,IAC5B,IAAI4pH,EAAW5pH,EAAI,GAEnB,YAFyC,IAAb4pH,IAAsBA,EAAW,KAErD,OAASnpH,EAAQ,0CAA6CmpH,GAAyB,MAAbA,EAAwB,IAAMA,EAAX,IAAuB,iBAChI,EACEC,OAAQ,SAAUppH,EAAOT,GAGvB,MAAQ,OAASS,EAAQ,+CAFZT,EAAI,GAEkE,SACvF,EACE8pH,WAAY,SAAUrpH,EAAOT,GAI3B,MAAQ,OAASS,EAAQ,kBAHbT,EAAI,GAGqC,cAFxCA,EAAI,GAE6D,SAClF,EACEkS,MAAO,SAAUzR,GAAS,MAAQ,OAASA,EAAQ,8BAAiC,EACpFspH,SAAU,SAAUtpH,GAAS,MAAQ,OAASA,EAAQ,8BAAiC,EACvFupH,IAAK,SAAUvpH,GAAS,MAAQ,OAASA,EAAQ,6BAAgC,EACjFi/C,MAAO,SAAUj/C,GAAS,MAAQ,OAASA,EAAQ,yBAA4B,EAC/EwpH,SAAU,SAAUxpH,GAAS,MAAQ,OAASA,EAAQ,8BAAiC,EACvFypH,QAAS,SAAUzpH,GAAS,MAAQ,OAASA,EAAQ,2BAA8B,EACnF0pH,GAAI,SAAU1pH,GAAS,MAAQ,OAASA,EAAQ,mCAAsC,EACtF2pH,WAAY,SAAU3pH,GAAS,MAAQ,OAASA,EAAQ,2CAA8C,EACtGnO,OAAQ,SAAUmO,EAAOT,GACvB,IAAI1N,EAAS0N,EAAI,GACby3B,EAAMz3B,EAAI,GAEd,OAAIy3B,EACM,OAASh3B,EAAQ,2BAA6BnO,EAAS,QAAUmlC,EAGnE,OAASh3B,EAAQ,mBAAqBnO,CAChD,EACAmlC,IAAK,SAAUh3B,EAAOT,GAGpB,MAAQ,OAASS,EAAQ,kCAFZT,EAAI,GAEqD,aAC1E,EACEqqH,UAAW,SAAU5pH,EAAOT,GAG1B,MAAQ,OAASS,EAAQ,kBAFfT,EAAI,GAEqC,UACvD,EACEsqH,MAAO,SAAU7pH,GAAS,MAAQ,OAASA,EAAQ,oCAAuC,EAC1F4gE,IAAK,SAAU5gE,EAAOT,GAGpB,MAAQ,OAASS,EAAQ,2BAFZT,EAAI,GAE8C,aACnE,EACEuqH,UAAW,SAAU9pH,EAAOT,GAG1B,MAAQ,OAASS,EAAQ,kBAFfT,EAAI,GAEqC,UACvD,EACE83B,QAAS,SAAUr3B,GAAS,MAAQ,OAASA,EAAQ,4CAA+C,EACpGo0D,MAAO,SAAUp0D,GAAS,MAAQ,OAASA,EAAQ,0BAA6B,EAChFya,SAAU,SAAUza,GAAS,MAAQ,OAASA,EAAQ,oBAAuB,EAC7E+pH,YAAa,SAAU/pH,EAAOT,GAG5B,MAAQ,OAASS,EAAQ,+BAFZT,EAAI,GAEkD,uBACvE,EACEg2E,KAAM,SAAUv1E,EAAOT,GAGrB,MAAQ,OAASS,EAAQ,2BAzHR,SAAUu1E,GAC7B,IACIy0C,EAAY,KAEZr4H,EAAa,IADjB4jF,EAAOl1E,OAAOk1E,GAAQy0C,GACD,EAAIjzF,KAAK64C,MAAM74C,KAAK2V,IAAI6oC,GAAQx+C,KAAK2V,IAAIs9E,IAC9D,OAAsD,GAA5Cz0C,EAAOx+C,KAAKg7B,IAAIi4D,EAAWr4H,IAAIs4H,QAAQ,GAAU,IAJ/C,CAAC,OAAQ,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAISt4H,EAC1E,CAmH0D,CAF3C4N,EAAI,GAGnB,EACE6Z,IAAK,SAAUpZ,GAAS,MAAQ,OAASA,EAAQ,2BAA8B,GAG7E60G,GAAS,CACXniH,KAAM,KACN0V,SAAUA,GACV1I,WAAY,CAAC,GAQf,SAASy9F,GAAW+sB,GAClB,GAAoB,OAAhBA,IAAwC,IAAhBA,IAAwC,IAAhBA,EAClD,OAAOC,IAGT,IAAI7iE,EAASjnD,OAAO6pH,GAEpB,OAAIpd,MAAMxlD,GACDA,EAGFA,EAAS,EAAIvwB,KAAK8+C,KAAKvuB,GAAUvwB,KAAK64C,MAAMtoB,EACrD,CAzIgC,oBAAhBl0C,aA0HdA,YAAYowG,UAAUpB,WAAWrxH,GAAM,CAAC,GAAO8jH,GAAOniH,MAAQmiH,GAAQ9jH,KAiBxE,IAAIq5H,GAAyB,IAa7B,SAASC,GAAiCC,GACxC,IAAIx4F,EAAO,IAAInjB,KAAK27G,EAAUC,WAC1BC,EAAqB14F,EAAK24F,oBAC9B34F,EAAK44F,WAAW,EAAG,GACnB,IAAIC,EAAmC74F,EAAKy4F,UAAYH,GAExD,OAAOI,EAAqBJ,GAAyBO,CACvD,CAEA,IAAIC,GAAuB,KACvBC,GAA2B,IAC3BC,GAA4B,EAE5BC,GAAW,CACbC,kBAAmB,OACnBC,UAAW,IACXC,kBAAmB,QAGnBC,GAAI,YACJC,IAAK,CACH,gBACA,gBACA,iBAEFC,KAAM,WACNC,MAAO,CACL,eACA,eACA,gBAIFC,GAAI,aACJC,IAAK,cACLC,KAAM,uBACNC,IAAK,eACLC,KAAM,wBAENC,GAAI,sBACJC,KAAM,+BACNC,OAAQ,wCAGRC,SAAU,aACVC,UAAW,QACXC,WAAY,kBACZC,aAAc,4BA2ChB,SAASC,GAAQC,EAAUC,GACzB,GAAIt0H,UAAUlG,OAAS,EACrB,MAAM,IAAIqf,UAAU,iCAAmCnZ,UAAUlG,OAAS,YAG5E,GAAiB,OAAbu6H,EACF,OAAO,IAAIz9G,KAAKw7G,KAGlB,IAAIjvH,EAAUmxH,GAAgB,CAAC,EAE3BC,EAA+C,MAA5BpxH,EAAQoxH,iBAA2BxB,GAA4B3tB,GAAUjiG,EAAQoxH,kBACxG,GAAyB,IAArBA,GAA+C,IAArBA,GAA+C,IAArBA,EACtD,MAAM,IAAIx8C,WAAW,sCAIvB,GAAIs8C,aAAoBz9G,MACD,iBAAby9G,GAAsE,kBAA7Cn8H,OAAOqB,UAAU0wC,SAAS7vC,KAAKi6H,GAGhE,OAAO,IAAIz9G,KAAKy9G,EAAS7B,WACpB,GAAwB,iBAAb6B,GAAsE,oBAA7Cn8H,OAAOqB,UAAU0wC,SAAS7vC,KAAKi6H,GACxE,OAAO,IAAIz9G,KAAKy9G,GACX,GAA0B,iBAAbA,GAAsE,oBAA7Cn8H,OAAOqB,UAAU0wC,SAAS7vC,KAAKi6H,GAC1E,OAAO,IAAIz9G,KAAKw7G,KAGlB,IAAIoC,EA0CN,SAA0BC,GACxB,IAEIC,EAFAF,EAAc,CAAC,EACfr8C,EAAQs8C,EAAW5wH,MAAMmvH,GAASC,mBAGlCD,GAASE,UAAUj5G,KAAKk+D,EAAM,KAChCq8C,EAAYz6F,KAAO,KACnB26F,EAAav8C,EAAM,KAEnBq8C,EAAYz6F,KAAOo+C,EAAM,GACzBu8C,EAAav8C,EAAM,GACf66C,GAASG,kBAAkBl5G,KAAKu6G,EAAYz6F,QAC9Cy6F,EAAYz6F,KAAO06F,EAAW5wH,MAAMmvH,GAASG,mBAAmB,GAChEuB,EAAaD,EAAW5+D,OAAO2+D,EAAYz6F,KAAKjgC,OAAQ26H,EAAW36H,UAIvE,GAAI46H,EAAY,CACd,IAAIppG,EAAQ0nG,GAASgB,SAASriG,KAAK+iG,GAC/BppG,GACFkpG,EAAY7pB,KAAO+pB,EAAWvwH,QAAQmnB,EAAM,GAAI,IAChDkpG,EAAYR,SAAW1oG,EAAM,IAE7BkpG,EAAY7pB,KAAO+pB,CAEvB,CAEA,OAAOF,CACT,CAtEoBG,CAAgBN,GAE9BO,EAsEN,SAAoBH,EAAYF,GAC9B,IAGIjpG,EAHAupG,EAAa7B,GAASK,IAAIkB,GAC1BO,EAAe9B,GAASO,MAAMgB,GAMlC,GADAjpG,EAAQ0nG,GAASM,KAAK3hG,KAAK8iG,IAAeK,EAAanjG,KAAK8iG,GACjD,CACT,IAAIM,EAAazpG,EAAM,GACvB,MAAO,CACLue,KAAMngB,SAASqrG,EAAY,IAC3BC,eAAgBP,EAAWzuH,MAAM+uH,EAAWj7H,QAEhD,CAIA,GADAwxB,EAAQ0nG,GAASI,GAAGzhG,KAAK8iG,IAAeI,EAAWljG,KAAK8iG,GAC7C,CACT,IAAIQ,EAAgB3pG,EAAM,GAC1B,MAAO,CACLue,KAAoC,IAA9BngB,SAASurG,EAAe,IAC9BD,eAAgBP,EAAWzuH,MAAMivH,EAAcn7H,QAEnD,CAGA,MAAO,CACL+vC,KAAM,KAEV,CApGwBqrF,CAAUV,EAAYz6F,KAAMw6F,GAC9C1qF,EAAO+qF,EAAgB/qF,KAGvB9P,EAkGN,SAAoB06F,EAAY5qF,GAE9B,GAAa,OAATA,EACF,OAAO,KAGT,IAAIve,EACAyO,EACA6P,EACAurF,EAGJ,GAA0B,IAAtBV,EAAW36H,OAGb,OAFAigC,EAAO,IAAInjB,KAAK,IACXw+G,eAAevrF,GACb9P,EAKT,GADAzO,EAAQ0nG,GAASQ,GAAG7hG,KAAK8iG,GAKvB,OAHA16F,EAAO,IAAInjB,KAAK,GAGXy+G,GAAaxrF,EAFlBD,EAAQlgB,SAAS4B,EAAM,GAAI,IAAM,IAMjCyO,EAAKq7F,eAAevrF,EAAMD,GACnB7P,GAJE,IAAInjB,KAAKw7G,KASpB,GADA9mG,EAAQ0nG,GAASS,IAAI9hG,KAAK8iG,GACf,CACT16F,EAAO,IAAInjB,KAAK,GAChB,IAAI0+G,EAAY5rG,SAAS4B,EAAM,GAAI,IAEnC,OA2LJ,SAAgCue,EAAMyrF,GACpC,GAAIA,EAAY,EACd,OAAO,EAGT,IAAIC,EAAaC,GAAgB3rF,GACjC,GAAI0rF,GAAcD,EAAY,IAC5B,OAAO,EAET,IAAKC,GAAcD,EAAY,IAC7B,OAAO,EAGT,OAAO,CACT,CAzMSG,CAAsB5rF,EAAMyrF,IAIjCv7F,EAAKq7F,eAAevrF,EAAM,EAAGyrF,GACtBv7F,GAJE,IAAInjB,KAAKw7G,IAKpB,CAIA,GADA9mG,EAAQ0nG,GAASU,KAAK/hG,KAAK8iG,GAChB,CACT16F,EAAO,IAAInjB,KAAK,GAChBgzB,EAAQlgB,SAAS4B,EAAM,GAAI,IAAM,EACjC,IAAIoqG,EAAMhsG,SAAS4B,EAAM,GAAI,IAE7B,OAAK+pG,GAAaxrF,EAAMD,EAAO8rF,IAI/B37F,EAAKq7F,eAAevrF,EAAMD,EAAO8rF,GAC1B37F,GAJE,IAAInjB,KAAKw7G,IAKpB,CAIA,GADA9mG,EAAQ0nG,GAASW,IAAIhiG,KAAK8iG,GAIxB,OAAKkB,GAAiB9rF,EAFtBsrF,EAAOzrG,SAAS4B,EAAM,GAAI,IAAM,GAMzBsqG,GAAiB/rF,EAAMsrF,GAHrB,IAAIv+G,KAAKw7G,KAQpB,GADA9mG,EAAQ0nG,GAASY,KAAKjiG,KAAK8iG,GAChB,CACTU,EAAOzrG,SAAS4B,EAAM,GAAI,IAAM,EAChC,IAAIuqG,EAAYnsG,SAAS4B,EAAM,GAAI,IAAM,EAEzC,OAAKqqG,GAAiB9rF,EAAMsrF,EAAMU,GAI3BD,GAAiB/rF,EAAMsrF,EAAMU,GAH3B,IAAIj/G,KAAKw7G,IAIpB,CAGA,OAAO,IACT,CA1La0D,CAFUlB,EAAgBI,eAEAnrF,GAErC,GAAIkrE,MAAMh7E,GACR,OAAO,IAAInjB,KAAKw7G,KAGlB,GAAIr4F,EAAM,CACR,IAEI1R,EAFA0tG,EAAYh8F,EAAKy4F,UACjB7nB,EAAO,EAGX,GAAI6pB,EAAY7pB,OACdA,EAgLN,SAAoB+pB,GAClB,IAAIppG,EACA0qG,EACAC,EAIJ,GADA3qG,EAAQ0nG,GAASa,GAAGliG,KAAK+iG,GAIvB,OAAKwB,GAFLF,EAAQvwC,WAAWn6D,EAAM,GAAGnnB,QAAQ,IAAK,OAMjC6xH,EAAQ,GAAMnD,GAHbT,IAQX,GADA9mG,EAAQ0nG,GAASc,KAAKniG,KAAK+iG,GAKzB,OAAKwB,GAHLF,EAAQtsG,SAAS4B,EAAM,GAAI,IAC3B2qG,EAAUxwC,WAAWn6D,EAAM,GAAGnnB,QAAQ,IAAK,OAMnC6xH,EAAQ,GAAMnD,GACpBoD,EAAUnD,GAJHV,IASX,GADA9mG,EAAQ0nG,GAASe,OAAOpiG,KAAK+iG,GAClB,CACTsB,EAAQtsG,SAAS4B,EAAM,GAAI,IAC3B2qG,EAAUvsG,SAAS4B,EAAM,GAAI,IAC7B,IAAI6qG,EAAU1wC,WAAWn6D,EAAM,GAAGnnB,QAAQ,IAAK,MAE/C,OAAK+xH,GAAaF,EAAOC,EAASE,GAI1BH,EAAQ,GAAMnD,GACpBoD,EAAUnD,GACA,IAAVqD,EALO/D,GAMX,CAGA,OAAO,IACT,CAjOagE,CAAU5B,EAAY7pB,MAEzBoK,MAAMpK,IACR,OAAO,IAAI/zF,KAAKw7G,KAIpB,GAAIoC,EAAYR,UAEd,GADA3rG,EA2NN,SAAwBguG,GACtB,IAAI/qG,EACAgrG,EAQAN,EAJJ,GADA1qG,EAAQ0nG,GAASiB,UAAUtiG,KAAK0kG,GAE9B,OAAO,EAOT,GADA/qG,EAAQ0nG,GAASkB,WAAWviG,KAAK0kG,GAI/B,OAFAL,EAAQtsG,SAAS4B,EAAM,GAAI,IAEtBirG,MAILD,EAAiBN,EAAQnD,GACJ,MAAbvnG,EAAM,IAAegrG,EAAiBA,GAJrClE,IASX,GADA9mG,EAAQ0nG,GAASmB,aAAaxiG,KAAK0kG,GACxB,CACTL,EAAQtsG,SAAS4B,EAAM,GAAI,IAC3B,IAAI2qG,EAAUvsG,SAAS4B,EAAM,GAAI,IAEjC,OAAKirG,GAAiBP,EAAOC,IAI7BK,EAAiBN,EAAQnD,GAAuBoD,EAAUnD,GACrC,MAAbxnG,EAAM,IAAegrG,EAAiBA,GAJrClE,GAKX,CAEA,OAAO,CACT,CAnQeoE,CAAchC,EAAYR,UAC/Bjf,MAAM1sF,GACR,OAAO,IAAIzR,KAAKw7G,UAIlB/pG,EAASiqG,GAAgC,IAAI17G,KAAKm/G,EAAYprB,IAC9DtiF,EAASiqG,GAAgC,IAAI17G,KAAKm/G,EAAYprB,EAAOtiF,IAGvE,OAAO,IAAIzR,KAAKm/G,EAAYprB,EAAOtiF,EACrC,CACE,OAAO,IAAIzR,KAAKw7G,IAEpB,CAuPA,SAASwD,GAAkBa,EAAatB,EAAMO,GAC5CP,EAAOA,GAAQ,EACfO,EAAMA,GAAO,EACb,IAAI37F,EAAO,IAAInjB,KAAK,GACpBmjB,EAAKq7F,eAAeqB,EAAa,EAAG,GACpC,IACIC,EAAc,EAAPvB,EAAWO,EAAM,GADH37F,EAAK48F,aAAe,GAG7C,OADA58F,EAAK68F,WAAW78F,EAAK88F,aAAeH,GAC7B38F,CACT,CAIA,IAAI+8F,GAAgB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAC7DC,GAA0B,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAE3E,SAASvB,GAAiB3rF,GACxB,OAAOA,EAAO,KAAQ,GAAMA,EAAO,GAAM,GAAKA,EAAO,KAAQ,CAC/D,CAEA,SAASwrF,GAAcxrF,EAAMD,EAAO7P,GAClC,GAAI6P,EAAQ,GAAKA,EAAQ,GACvB,OAAO,EAGT,GAAY,MAAR7P,EAAc,CAChB,GAAIA,EAAO,EACT,OAAO,EAGT,IAAIw7F,EAAaC,GAAgB3rF,GACjC,GAAI0rF,GAAcx7F,EAAOg9F,GAAwBntF,GAC/C,OAAO,EAET,IAAK2rF,GAAcx7F,EAAO+8F,GAAcltF,GACtC,OAAO,CAEX,CAEA,OAAO,CACT,CAkBA,SAAS+rF,GAAkB9rF,EAAMsrF,EAAMO,GACrC,QAAIP,EAAO,GAAKA,EAAO,MAIZ,MAAPO,KAAgBA,EAAM,GAAKA,EAAM,GAKvC,CAEA,SAASQ,GAAcF,EAAOC,EAASE,GACrC,OAAa,MAATH,KAAkBA,EAAQ,GAAKA,GAAS,QAI7B,MAAXC,KAAoBA,EAAU,GAAKA,GAAW,OAInC,MAAXE,KAAoBA,EAAU,GAAKA,GAAW,KAKpD,CAEA,SAASI,GAAkBP,EAAOC,GAChC,OAAe,MAAXA,KAAoBA,EAAU,GAAKA,EAAU,GAKnD,CAmEA,SAASx8G,GAAS84G,EAAW+B,GAC3B,GAAIt0H,UAAUlG,OAAS,EACrB,MAAM,IAAIqf,UAAU,iCAAmCnZ,UAAUlG,OAAS,YAG5E,IAAIigC,EAAOq6F,GAAO7B,EAAW+B,GAC7B,OAAQvf,MAAMh7E,EAChB,CAEA,IAAIi9F,GAAuB,CACzBC,iBAAkB,CAChBC,IAAK,qBACLlgC,MAAO,+BAGTmgC,SAAU,CACRD,IAAK,WACLlgC,MAAO,qBAGTogC,YAAa,gBAEbC,iBAAkB,CAChBH,IAAK,qBACLlgC,MAAO,+BAGTsgC,SAAU,CACRJ,IAAK,WACLlgC,MAAO,qBAGTugC,YAAa,CACXL,IAAK,eACLlgC,MAAO,yBAGTwgC,OAAQ,CACNN,IAAK,SACLlgC,MAAO,mBAGTygC,MAAO,CACLP,IAAK,QACLlgC,MAAO,kBAGT0gC,aAAc,CACZR,IAAK,gBACLlgC,MAAO,0BAGT2gC,QAAS,CACPT,IAAK,UACLlgC,MAAO,oBAGT4gC,YAAa,CACXV,IAAK,eACLlgC,MAAO,yBAGT6gC,OAAQ,CACNX,IAAK,SACLlgC,MAAO,mBAGT8gC,WAAY,CACVZ,IAAK,cACLlgC,MAAO,wBAGT+gC,aAAc,CACZb,IAAK,gBACLlgC,MAAO,2BA2BX,SAASghC,GAAmBn9C,GAC1B,OAAO,SAAUy5C,GACf,IAAInxH,EAAUmxH,GAAgB,CAAC,EAC3B1pH,EAAQzH,EAAQyH,MAAQ1E,OAAO/C,EAAQyH,OAASiwE,EAAKo9C,aAEzD,OADap9C,EAAKq9C,QAAQttH,IAAUiwE,EAAKq9C,QAAQr9C,EAAKo9C,aAExD,CACF,CAEA,IAqBIE,GAAa,CACfp+F,KAAMi+F,GAAkB,CACtBE,QAvBc,CAChBE,KAAM,mBACNC,KAAM,aACNC,OAAQ,WACRC,MAAO,cAoBLN,aAAc,SAGhBttB,KAAMqtB,GAAkB,CACtBE,QArBc,CAChBE,KAAM,iBACNC,KAAM,cACNC,OAAQ,YACRC,MAAO,UAkBLN,aAAc,SAGhBO,SAAUR,GAAkB,CAC1BE,QAnBkB,CACpBE,KAAM,yBACNC,KAAM,yBACNC,OAAQ,qBACRC,MAAO,sBAgBLN,aAAc,UAIdQ,GAAuB,CACzBC,SAAU,qBACVC,UAAW,mBACXC,MAAO,eACPC,SAAU,kBACVC,SAAU,cACV9hC,MAAO,KAOT,SAAS+hC,GAAiBl+C,GACxB,OAAO,SAAUm+C,EAAY1E,GAC3B,IAAInxH,EAAUmxH,GAAgB,CAAC,EAC3B1pH,EAAQzH,EAAQyH,MAAQ1E,OAAO/C,EAAQyH,OAASiwE,EAAKo9C,aAUzD,OANgB,gBAHF90H,EAAQshB,QAAUve,OAAO/C,EAAQshB,SAAW,eAG1Bo2D,EAAKo+C,iBACrBp+C,EAAKo+C,iBAAiBruH,IAAUiwE,EAAKo+C,iBAAiBp+C,EAAKq+C,wBAE3Dr+C,EAAKhwE,OAAOD,IAAUiwE,EAAKhwE,OAAOgwE,EAAKo9C,eAE3Cp9C,EAAKs+C,iBAAmBt+C,EAAKs+C,iBAAiBH,GAAcA,EAE1E,CACF,CA2HA,IAAI3O,GAAW,CACb+O,cA5BF,SAAwBjH,EAAamC,GACnC,IAAI/kE,EAASjnD,OAAO6pH,GAYhBkH,EAAS9pE,EAAS,IACtB,GAAI8pE,EAAS,IAAMA,EAAS,GAC1B,OAAQA,EAAS,IACf,KAAK,EACH,OAAO9pE,EAAS,KAClB,KAAK,EACH,OAAOA,EAAS,KAClB,KAAK,EACH,OAAOA,EAAS,KAGtB,OAAOA,EAAS,IAClB,EAKE+pE,IAAKP,GAAgB,CACnBluH,OA7HY,CACd0uH,OAAQ,CAAC,IAAK,KACdC,YAAa,CAAC,KAAM,MACpBC,KAAM,CAAC,gBAAiB,gBA2HtBxB,aAAc,SAGhByB,QAASX,GAAgB,CACvBluH,OA5HgB,CAClB0uH,OAAQ,CAAC,IAAK,IAAK,IAAK,KACxBC,YAAa,CAAC,KAAM,KAAM,KAAM,MAChCC,KAAM,CAAC,cAAe,cAAe,cAAe,gBA0HlDxB,aAAc,OACdkB,iBAAkB,SAAUO,GAC1B,OAAOpxH,OAAOoxH,GAAW,CAC3B,IAGF9vF,MAAOmvF,GAAgB,CACrBluH,OA1Hc,CAChB0uH,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAChEC,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3FC,KAAM,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,aAwHnHxB,aAAc,SAGhBvC,IAAKqD,GAAgB,CACnBluH,OAzHY,CACd0uH,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACvChB,MAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAC5CiB,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACxDC,KAAM,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,aAsHvExB,aAAc,SAGhB0B,UAAWZ,GAAgB,CACzBluH,OAvHkB,CACpB0uH,OAAQ,CACNK,GAAI,IACJC,GAAI,IACJC,SAAU,KACVC,KAAM,IACNC,QAAS,UACTC,UAAW,YACXC,QAAS,UACTC,MAAO,SAETX,YAAa,CACXI,GAAI,KACJC,GAAI,KACJC,SAAU,WACVC,KAAM,OACNC,QAAS,UACTC,UAAW,YACXC,QAAS,UACTC,MAAO,SAETV,KAAM,CACJG,GAAI,OACJC,GAAI,OACJC,SAAU,WACVC,KAAM,OACNC,QAAS,UACTC,UAAW,YACXC,QAAS,UACTC,MAAO,UA2FPlC,aAAc,OACdgB,iBAzF4B,CAC9BM,OAAQ,CACNK,GAAI,IACJC,GAAI,IACJC,SAAU,KACVC,KAAM,IACNC,QAAS,iBACTC,UAAW,mBACXC,QAAS,iBACTC,MAAO,YAETX,YAAa,CACXI,GAAI,KACJC,GAAI,KACJC,SAAU,WACVC,KAAM,OACNC,QAAS,iBACTC,UAAW,mBACXC,QAAS,iBACTC,MAAO,YAETV,KAAM,CACJG,GAAI,OACJC,GAAI,OACJC,SAAU,WACVC,KAAM,OACNC,QAAS,iBACTC,UAAW,mBACXC,QAAS,iBACTC,MAAO,aA6DPC,sBAAuB,UA6B3B,SAASC,GAAcx/C,GACrB,OAAO,SAAUy/C,EAAahG,GAC5B,IAAIvlE,EAAS7oD,OAAOo0H,GAChBn3H,EAAUmxH,GAAgB,CAAC,EAC3B1pH,EAAQzH,EAAQyH,MAEhB2vH,EAAgB3vH,GAASiwE,EAAK2/C,cAAc5vH,IAAWiwE,EAAK2/C,cAAc3/C,EAAK4/C,mBAC/EC,EAAc3rE,EAAO+G,MAAMykE,GAE/B,IAAKG,EACH,OAAO,KAET,IAIIriI,EAJAsiI,EAAgBD,EAAY,GAE5BE,EAAiBhwH,GAASiwE,EAAK+/C,cAAchwH,IAAWiwE,EAAK+/C,cAAc//C,EAAKggD,mBAgBpF,OAZExiI,EADoD,mBAAlDH,OAAOqB,UAAU0wC,SAAS7vC,KAAKwgI,GACzBA,EAAcv7G,WAAU,SAAU4uF,GACxC,OAAOA,EAAQh0F,KAAK80C,EACtB,IAiBN,SAAkBrvD,EAAQ+nF,GACxB,IAAK,IAAIvtF,KAAOwF,EACd,GAAIA,EAAOvF,eAAeD,IAAQutF,EAAU/nF,EAAOxF,IACjD,OAAOA,CAGb,CArBc+5G,CAAQ2mB,GAAe,SAAU3sB,GACvC,OAAOA,EAAQh0F,KAAK80C,EACtB,IAGF12D,EAAQwiF,EAAKigD,cAAgBjgD,EAAKigD,cAAcziI,GAASA,EAGlD,CACLA,MAHFA,EAAQ8K,EAAQ23H,cAAgB33H,EAAQ23H,cAAcziI,GAASA,EAI7Dq9D,KAAM3G,EAAO/oD,MAAM20H,EAAc7gI,QAErC,CACF,CAUA,IAtE8B+gF,GAiI1B/kB,GAAQ,CACVsjE,eAlI4Bv+C,GAkIO,CACjC0/C,aA7D4B,wBA8D5BQ,aA7D4B,OA8D5BD,cAAe,SAAUziI,GACvB,OAAOqxB,SAASrxB,EAAO,GACzB,GAtIK,SAAUiiI,EAAahG,GAC5B,IAAIvlE,EAAS7oD,OAAOo0H,GAChBn3H,EAAUmxH,GAAgB,CAAC,EAE3BoG,EAAc3rE,EAAO+G,MAAM+kB,GAAK0/C,cACpC,IAAKG,EACH,OAAO,KAET,IAAIC,EAAgBD,EAAY,GAE5BM,EAAcjsE,EAAO+G,MAAM+kB,GAAKkgD,cACpC,IAAKC,EACH,OAAO,KAET,IAAI3iI,EAAQwiF,GAAKigD,cAAgBjgD,GAAKigD,cAAcE,EAAY,IAAMA,EAAY,GAGlF,MAAO,CACL3iI,MAHFA,EAAQ8K,EAAQ23H,cAAgB33H,EAAQ23H,cAAcziI,GAASA,EAI7Dq9D,KAAM3G,EAAO/oD,MAAM20H,EAAc7gI,QAErC,GAoHAw/H,IAAKe,GAAa,CAChBG,cAlEmB,CACrBjB,OAAQ,UACRC,YAAa,6DACbC,KAAM,8DAgEJgB,kBAAmB,OACnBG,cA/DmB,CACrB3b,IAAK,CAAC,MAAO,YA+DX4b,kBAAmB,QAGrBnB,QAASW,GAAa,CACpBG,cAhEuB,CACzBjB,OAAQ,WACRC,YAAa,YACbC,KAAM,kCA8DJgB,kBAAmB,OACnBG,cA7DuB,CACzB3b,IAAK,CAAC,KAAM,KAAM,KAAM,OA6DtB4b,kBAAmB,MACnBC,cAAe,SAAUj1H,GACvB,OAAOA,EAAQ,CACjB,IAGF+jC,MAAOywF,GAAa,CAClBG,cAjEqB,CACvBjB,OAAQ,eACRC,YAAa,sDACbC,KAAM,6FA+DJgB,kBAAmB,OACnBG,cA9DqB,CACvBrB,OAAQ,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACtFta,IAAK,CAAC,OAAQ,MAAO,QAAS,OAAQ,QAAS,QAAS,QAAS,OAAQ,MAAO,MAAO,MAAO,QA6D5F4b,kBAAmB,QAGrBnF,IAAK2E,GAAa,CAChBG,cA9DmB,CACrBjB,OAAQ,YACRhB,MAAO,2BACPiB,YAAa,kCACbC,KAAM,gEA2DJgB,kBAAmB,OACnBG,cA1DmB,CACrBrB,OAAQ,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACnDta,IAAK,CAAC,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,SAyDjD4b,kBAAmB,QAGrBlB,UAAWU,GAAa,CACtBG,cA1DyB,CAC3BjB,OAAQ,6DACRta,IAAK,kFAyDHwb,kBAAmB,MACnBG,cAxDyB,CAC3B3b,IAAK,CACH2a,GAAI,MACJC,GAAI,MACJC,SAAU,OACVC,KAAM,OACNC,QAAS,WACTC,UAAW,aACXC,QAAS,WACTC,MAAO,WAgDPU,kBAAmB,SAanBI,GAAW,CACbC,eA1bF,SAAyB5vG,EAAO0jD,EAAO7rE,GAGrC,IAAI2gB,EASJ,OAXA3gB,EAAUA,GAAW,CAAC,EAIpB2gB,EADyC,iBAAhCkzG,GAAqB1rG,GACrB0rG,GAAqB1rG,GACX,IAAV0jD,EACAgoD,GAAqB1rG,GAAO4rG,IAE5BF,GAAqB1rG,GAAO0rE,MAAM7yF,QAAQ,YAAa6qE,GAG9D7rE,EAAQg4H,UACNh4H,EAAQi4H,WAAa,EAChB,MAAQt3G,EAERA,EAAS,OAIbA,CACT,EAsaEq0G,WAAYA,GACZkD,eA7WF,SAAyB/vG,EAAOyO,EAAMuhG,EAAUn4H,GAC9C,OAAOs1H,GAAqBntG,EAC9B,EA4WE++F,SAAUA,GACVv0D,MAAOA,GACP3yD,QAAS,CACPo4H,aAAc,EACdC,sBAAuB,IAwB3B,SAASC,GAAmBlJ,EAAW+B,GACrC,GAAIt0H,UAAUlG,OAAS,EACrB,MAAM,IAAIqf,UAAU,iCAAmCnZ,UAAUlG,OAAS,YAG5E,IAEIigC,EAAOq6F,GAAO7B,EAAW+B,GACzBoB,EAAM37F,EAAK48F,YACXD,GAAQhB,EAJO,EAIc,EAAI,GAAKA,EAJvB,EAQnB,OAFA37F,EAAK68F,WAAW78F,EAAK88F,aAAeH,GACpC38F,EAAK2hG,YAAY,EAAG,EAAG,EAAG,GACnB3hG,CACT,CAIA,SAAS4hG,GAAmBpJ,EAAW+B,GACrC,GAAIt0H,UAAUlG,OAAS,EACrB,MAAM,IAAIqf,UAAU,iCAAmCnZ,UAAUlG,OAAS,YAG5E,IAAIigC,EAAOq6F,GAAO7B,EAAW+B,GACzBzqF,EAAO9P,EAAK6hG,iBAEZC,EAA4B,IAAIjlH,KAAK,GACzCilH,EAA0BzG,eAAevrF,EAAO,EAAG,EAAG,GACtDgyF,EAA0BH,YAAY,EAAG,EAAG,EAAG,GAC/C,IAAII,EAAkBL,GAAkBI,EAA2BvH,GAE/DyH,EAA4B,IAAInlH,KAAK,GACzCmlH,EAA0B3G,eAAevrF,EAAM,EAAG,GAClDkyF,EAA0BL,YAAY,EAAG,EAAG,EAAG,GAC/C,IAAIM,EAAkBP,GAAkBM,EAA2BzH,GAEnE,OAAIv6F,EAAKy4F,WAAasJ,EAAgBtJ,UAC7B3oF,EAAO,EACL9P,EAAKy4F,WAAawJ,EAAgBxJ,UACpC3oF,EAEAA,EAAO,CAElB,CAiBA,IAAIoyF,GAAuB,OAI3B,SAASC,GAAe3J,EAAW+B,GACjC,GAAIt0H,UAAUlG,OAAS,EACrB,MAAM,IAAIqf,UAAU,iCAAmCnZ,UAAUlG,OAAS,YAG5E,IAAIigC,EAAOq6F,GAAO7B,EAAW+B,GACzBoC,EAAO+E,GAAkB1hG,EAAMu6F,GAAc9B,UAvBnD,SAAgCD,EAAW+B,GACzC,GAAIt0H,UAAUlG,OAAS,EACrB,MAAM,IAAIqf,UAAU,iCAAmCnZ,UAAUlG,OAAS,YAG5E,IAAI+vC,EAAO8xF,GAAkBpJ,EAAW+B,GACpC6H,EAAkB,IAAIvlH,KAAK,GAI/B,OAHAulH,EAAgB/G,eAAevrF,EAAM,EAAG,GACxCsyF,EAAgBT,YAAY,EAAG,EAAG,EAAG,GAC1BD,GAAkBU,EAAiB7H,EAEhD,CAY+D8H,CAAsBriG,EAAMu6F,GAAc9B,UAKvG,OAAOxzF,KAAK0wE,MAAMgnB,EAAOuF,IAAwB,CACnD,CAIA,SAASI,GAAgB9J,EAAW+B,GAClC,GAAIt0H,UAAUlG,OAAS,EACrB,MAAM,IAAIqf,UAAU,iCAAmCnZ,UAAUlG,OAAS,YAG5E,IAAIqJ,EAAUmxH,GAAgB,CAAC,EAC3BxX,EAAS35G,EAAQ25G,OACjBwf,EAAqBxf,GAAUA,EAAO35G,SAAW25G,EAAO35G,QAAQo4H,aAChEgB,EAA4C,MAAtBD,EAA6B,EAAIl3B,GAAUk3B,GACjEf,EAAuC,MAAxBp4H,EAAQo4H,aAAuBgB,EAAsBn3B,GAAUjiG,EAAQo4H,cAG1F,KAAMA,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAIxjD,WAAW,oDAGvB,IAAIh+C,EAAOq6F,GAAO7B,EAAWpvH,GACzBuyH,EAAM37F,EAAK48F,YACXD,GAAQhB,EAAM6F,EAAe,EAAI,GAAK7F,EAAM6F,EAIhD,OAFAxhG,EAAK68F,WAAW78F,EAAK88F,aAAeH,GACpC38F,EAAK2hG,YAAY,EAAG,EAAG,EAAG,GACnB3hG,CACT,CAIA,SAASyiG,GAAgBjK,EAAW+B,GAClC,GAAIt0H,UAAUlG,OAAS,EACrB,MAAM,IAAIqf,UAAU,iCAAmCnZ,UAAUlG,OAAS,YAG5E,IAAIigC,EAAOq6F,GAAO7B,EAAW+B,GACzBzqF,EAAO9P,EAAK6hG,iBAEZz4H,EAAUmxH,GAAgB,CAAC,EAC3BxX,EAAS35G,EAAQ25G,OACjB2f,EAA8B3f,GAChCA,EAAO35G,SACP25G,EAAO35G,QAAQq4H,sBACbkB,EAC6B,MAA/BD,EACI,EACAr3B,GAAUq3B,GACZjB,EAC+B,MAAjCr4H,EAAQq4H,sBACJkB,EACAt3B,GAAUjiG,EAAQq4H,uBAGxB,KAAMA,GAAyB,GAAKA,GAAyB,GAC3D,MAAM,IAAIzjD,WAAW,6DAGvB,IAAI4kD,EAAsB,IAAI/lH,KAAK,GACnC+lH,EAAoBvH,eAAevrF,EAAO,EAAG,EAAG2xF,GAChDmB,EAAoBjB,YAAY,EAAG,EAAG,EAAG,GACzC,IAAII,EAAkBO,GAAeM,EAAqBrI,GAEtDsI,EAAsB,IAAIhmH,KAAK,GACnCgmH,EAAoBxH,eAAevrF,EAAM,EAAG2xF,GAC5CoB,EAAoBlB,YAAY,EAAG,EAAG,EAAG,GACzC,IAAIM,EAAkBK,GAAeO,EAAqBtI,GAE1D,OAAIv6F,EAAKy4F,WAAasJ,EAAgBtJ,UAC7B3oF,EAAO,EACL9P,EAAKy4F,WAAawJ,EAAgBxJ,UACpC3oF,EAEAA,EAAO,CAElB,CA+BA,IAAIgzF,GAAyB,OAI7B,SAASC,GAAYvK,EAAW+B,GAC9B,GAAIt0H,UAAUlG,OAAS,EACrB,MAAM,IAAIqf,UAAU,iCAAmCnZ,UAAUlG,OAAS,YAG5E,IAAIigC,EAAOq6F,GAAO7B,EAAW+B,GACzBoC,EAAO2F,GAAetiG,EAAMu6F,GAAc9B,UArChD,SAA6BD,EAAW+B,GACtC,GAAIt0H,UAAUlG,OAAS,EACrB,MAAM,IAAIqf,UAAU,iCAAmCnZ,UAAUlG,OAAS,YAG5E,IAAIqJ,EAAUmxH,GAAgB,CAAC,EAC3BxX,EAAS35G,EAAQ25G,OACjB2f,EAA8B3f,GAChCA,EAAO35G,SACP25G,EAAO35G,QAAQq4H,sBACbkB,EAC6B,MAA/BD,EACI,EACAr3B,GAAUq3B,GACZjB,EAC+B,MAAjCr4H,EAAQq4H,sBACJkB,EACAt3B,GAAUjiG,EAAQq4H,uBAEpB3xF,EAAO2yF,GAAejK,EAAW+B,GACjCyI,EAAY,IAAInmH,KAAK,GAIzB,OAHAmmH,EAAU3H,eAAevrF,EAAM,EAAG2xF,GAClCuB,EAAUrB,YAAY,EAAG,EAAG,EAAG,GACpBW,GAAeU,EAAWzI,EAEvC,CAY4D0I,CAAmBjjG,EAAMu6F,GAAc9B,UAKjG,OAAOxzF,KAAK0wE,MAAMgnB,EAAOmG,IAA0B,CACrD,CAEA,IAAII,GAGQ,WAHRA,GAII,OAJJA,GAKO,UALPA,GAMS,YANTA,GAOO,UAPPA,GAQK,QAiDLC,GAAa,CAEfC,EAAG,SAAUpjG,EAAMzO,EAAO++F,GACxB,IAAIiP,EAAMv/F,EAAK6hG,iBAAmB,EAAI,EAAI,EAC1C,OAAQtwG,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAO++F,EAASiP,IAAIA,EAAK,CAAC1uH,MAAO,gBAEnC,IAAK,QACH,OAAOy/G,EAASiP,IAAIA,EAAK,CAAC1uH,MAAO,WAGnC,QACE,OAAOy/G,EAASiP,IAAIA,EAAK,CAAC1uH,MAAO,SAEvC,EAGAk2B,EAAG,SAAU/G,EAAMzO,EAAO++F,EAAUlnH,GAUlC,IAAIi6H,EAAarjG,EAAK6hG,iBAGlB/xF,EAAOuzF,EAAa,EAAIA,EAAa,EAAIA,EAG7C,MAAc,OAAV9xG,EAEK+xG,GADYxzF,EAAO,IACW,GAIzB,OAAVve,EACK++F,EAAS+O,cAAcvvF,EAAM,CAACyzF,KAAM,SAItCD,GAAgBxzF,EAAMve,EAAMxxB,OACrC,EAGAyjI,EAAG,SAAUxjG,EAAMzO,EAAO++F,EAAUlnH,GAClC,IAAIq6H,EAAiBhB,GAAeziG,EAAM52B,GACtCs6H,EAAWD,EAAiB,EAAIA,EAAiB,EAAIA,EAGzD,MAAc,OAAVlyG,EAEK+xG,GADYI,EAAW,IACO,GAIzB,OAAVnyG,EACK++F,EAAS+O,cAAcqE,EAAU,CAACH,KAAM,SAI1CD,GAAgBI,EAAUnyG,EAAMxxB,OACzC,EAGA4jI,EAAG,SAAU3jG,EAAMzO,EAAO++F,EAAUlnH,GAIlC,OAAOk6H,GAHW1B,GAAkB5hG,EAAM52B,GAGNmoB,EAAMxxB,OAC5C,EAWA+8D,EAAG,SAAU98B,EAAMzO,EAAO++F,EAAUlnH,GAElC,OAAOk6H,GADItjG,EAAK6hG,iBACatwG,EAAMxxB,OACrC,EAGA6jI,EAAG,SAAU5jG,EAAMzO,EAAO++F,EAAUlnH,GAClC,IAAIu2H,EAAU16F,KAAK8+C,MAAM/jD,EAAK6jG,cAAgB,GAAK,GACnD,OAAQtyG,GAEN,IAAK,IACH,OAAOplB,OAAOwzH,GAEhB,IAAK,KACH,OAAO2D,GAAgB3D,EAAS,GAElC,IAAK,KACH,OAAOrP,EAAS+O,cAAcM,EAAS,CAAC4D,KAAM,YAEhD,IAAK,MACH,OAAOjT,EAASqP,QAAQA,EAAS,CAAC9uH,MAAO,cAAe6Z,QAAS,eAEnE,IAAK,QACH,OAAO4lG,EAASqP,QAAQA,EAAS,CAAC9uH,MAAO,SAAU6Z,QAAS,eAG9D,QACE,OAAO4lG,EAASqP,QAAQA,EAAS,CAAC9uH,MAAO,OAAQ6Z,QAAS,eAEhE,EAGAg1D,EAAG,SAAU1/C,EAAMzO,EAAO++F,EAAUlnH,GAClC,IAAIu2H,EAAU16F,KAAK8+C,MAAM/jD,EAAK6jG,cAAgB,GAAK,GACnD,OAAQtyG,GAEN,IAAK,IACH,OAAOplB,OAAOwzH,GAEhB,IAAK,KACH,OAAO2D,GAAgB3D,EAAS,GAElC,IAAK,KACH,OAAOrP,EAAS+O,cAAcM,EAAS,CAAC4D,KAAM,YAEhD,IAAK,MACH,OAAOjT,EAASqP,QAAQA,EAAS,CAAC9uH,MAAO,cAAe6Z,QAAS,eAEnE,IAAK,QACH,OAAO4lG,EAASqP,QAAQA,EAAS,CAAC9uH,MAAO,SAAU6Z,QAAS,eAG9D,QACE,OAAO4lG,EAASqP,QAAQA,EAAS,CAAC9uH,MAAO,OAAQ6Z,QAAS,eAEhE,EAGAo5G,EAAG,SAAU9jG,EAAMzO,EAAO++F,EAAUlnH,GAClC,IAAIymC,EAAQ7P,EAAK6jG,cACjB,OAAQtyG,GAEN,IAAK,IACH,OAAOplB,OAAO0jC,EAAQ,GAExB,IAAK,KACH,OAAOyzF,GAAgBzzF,EAAQ,EAAG,GAEpC,IAAK,KACH,OAAOygF,EAAS+O,cAAcxvF,EAAQ,EAAG,CAAC0zF,KAAM,UAElD,IAAK,MACH,OAAOjT,EAASzgF,MAAMA,EAAO,CAACh/B,MAAO,cAAe6Z,QAAS,eAE/D,IAAK,QACH,OAAO4lG,EAASzgF,MAAMA,EAAO,CAACh/B,MAAO,SAAU6Z,QAAS,eAG1D,QACE,OAAO4lG,EAASzgF,MAAMA,EAAO,CAACh/B,MAAO,OAAQ6Z,QAAS,eAE5D,EAGAq5G,EAAG,SAAU/jG,EAAMzO,EAAO++F,EAAUlnH,GAClC,IAAIymC,EAAQ7P,EAAK6jG,cACjB,OAAQtyG,GAEN,IAAK,IACH,OAAOplB,OAAO0jC,EAAQ,GAExB,IAAK,KACH,OAAOyzF,GAAgBzzF,EAAQ,EAAG,GAEpC,IAAK,KACH,OAAOygF,EAAS+O,cAAcxvF,EAAQ,EAAG,CAAC0zF,KAAM,UAElD,IAAK,MACH,OAAOjT,EAASzgF,MAAMA,EAAO,CAACh/B,MAAO,cAAe6Z,QAAS,eAE/D,IAAK,QACH,OAAO4lG,EAASzgF,MAAMA,EAAO,CAACh/B,MAAO,SAAU6Z,QAAS,eAG1D,QACE,OAAO4lG,EAASzgF,MAAMA,EAAO,CAACh/B,MAAO,OAAQ6Z,QAAS,eAE5D,EAGAy0D,EAAG,SAAUn/C,EAAMzO,EAAO++F,EAAUlnH,GAClC,IAAIgyH,EAAO2H,GAAW/iG,EAAM52B,GAE5B,MAAc,OAAVmoB,EACK++F,EAAS+O,cAAcjE,EAAM,CAACmI,KAAM,SAGtCD,GAAgBlI,EAAM7pG,EAAMxxB,OACrC,EAGAikI,EAAG,SAAUhkG,EAAMzO,EAAO++F,EAAUlnH,GAClC,IAAI66H,EAAU9B,GAAcniG,EAAM52B,GAElC,MAAc,OAAVmoB,EACK++F,EAAS+O,cAAc4E,EAAS,CAACV,KAAM,SAGzCD,GAAgBW,EAAS1yG,EAAMxxB,OACxC,EAGA+hC,EAAG,SAAU9B,EAAMzO,EAAO++F,EAAUlnH,GAClC,IAAI86H,EAAalkG,EAAK88F,aAEtB,MAAc,OAAVvrG,EACK++F,EAAS+O,cAAc6E,EAAY,CAACX,KAAM,SAG5CD,GAAgBY,EAAY3yG,EAAMxxB,OAC3C,EAGAokI,EAAG,SAAUnkG,EAAMzO,EAAO++F,EAAUlnH,GAClC,IAAImyH,EAzfR,SAA0B/C,EAAW+B,GACnC,GAAIt0H,UAAUlG,OAAS,EACrB,MAAM,IAAIqf,UAAU,iCAAmCnZ,UAAUlG,OAAS,YAG5E,IAAIigC,EAAOq6F,GAAO7B,EAAW+B,GACzByB,EAAYh8F,EAAKy4F,UACrBz4F,EAAKokG,YAAY,EAAG,GACpBpkG,EAAK2hG,YAAY,EAAG,EAAG,EAAG,GAC1B,IACI1tG,EAAa+nG,EADUh8F,EAAKy4F,UAEhC,OAAOxzF,KAAK64C,MAAM7pD,EAfM,OAe8B,CACxD,CA6eoBowG,CAAgBrkG,EAAM52B,GAEtC,MAAc,OAAVmoB,EACK++F,EAAS+O,cAAc9D,EAAW,CAACgI,KAAM,cAG3CD,GAAgB/H,EAAWhqG,EAAMxxB,OAC1C,EAGAukI,EAAG,SAAUtkG,EAAMzO,EAAO++F,EAAUlnH,GAClC,IAAI0yH,EAAY97F,EAAK48F,YACrB,OAAQrrG,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAO++F,EAASqL,IAAIG,EAAW,CAACjrH,MAAO,cAAe6Z,QAAS,eAEjE,IAAK,QACH,OAAO4lG,EAASqL,IAAIG,EAAW,CAACjrH,MAAO,SAAU6Z,QAAS,eAE5D,IAAK,SACH,OAAO4lG,EAASqL,IAAIG,EAAW,CAACjrH,MAAO,QAAS6Z,QAAS,eAG3D,QACE,OAAO4lG,EAASqL,IAAIG,EAAW,CAACjrH,MAAO,OAAQ6Z,QAAS,eAE9D,EAGA7kB,EAAG,SAAUm6B,EAAMzO,EAAO++F,EAAUlnH,GAClC,IAAI0yH,EAAY97F,EAAK48F,YACjB2H,GAAmBzI,EAAY1yH,EAAQo4H,aAAe,GAAK,GAAM,EACrE,OAAQjwG,GAEN,IAAK,IACH,OAAOplB,OAAOo4H,GAEhB,IAAK,KACH,OAAOjB,GAAgBiB,EAAgB,GAEzC,IAAK,KACH,OAAOjU,EAAS+O,cAAckF,EAAgB,CAAChB,KAAM,QACvD,IAAK,MACH,OAAOjT,EAASqL,IAAIG,EAAW,CAACjrH,MAAO,cAAe6Z,QAAS,eAEjE,IAAK,QACH,OAAO4lG,EAASqL,IAAIG,EAAW,CAACjrH,MAAO,SAAU6Z,QAAS,eAE5D,IAAK,SACH,OAAO4lG,EAASqL,IAAIG,EAAW,CAACjrH,MAAO,QAAS6Z,QAAS,eAG3D,QACE,OAAO4lG,EAASqL,IAAIG,EAAW,CAACjrH,MAAO,OAAQ6Z,QAAS,eAE9D,EAGAsW,EAAG,SAAUhB,EAAMzO,EAAO++F,EAAUlnH,GAClC,IAAI0yH,EAAY97F,EAAK48F,YACjB2H,GAAmBzI,EAAY1yH,EAAQo4H,aAAe,GAAK,GAAM,EACrE,OAAQjwG,GAEN,IAAK,IACH,OAAOplB,OAAOo4H,GAEhB,IAAK,KACH,OAAOjB,GAAgBiB,EAAgBhzG,EAAMxxB,QAE/C,IAAK,KACH,OAAOuwH,EAAS+O,cAAckF,EAAgB,CAAChB,KAAM,QACvD,IAAK,MACH,OAAOjT,EAASqL,IAAIG,EAAW,CAACjrH,MAAO,cAAe6Z,QAAS,eAEjE,IAAK,QACH,OAAO4lG,EAASqL,IAAIG,EAAW,CAACjrH,MAAO,SAAU6Z,QAAS,eAE5D,IAAK,SACH,OAAO4lG,EAASqL,IAAIG,EAAW,CAACjrH,MAAO,QAAS6Z,QAAS,eAG3D,QACE,OAAO4lG,EAASqL,IAAIG,EAAW,CAACjrH,MAAO,OAAQ6Z,QAAS,eAE9D,EAGA7qB,EAAG,SAAUmgC,EAAMzO,EAAO++F,EAAUlnH,GAClC,IAAI0yH,EAAY97F,EAAK48F,YACjB4H,EAA6B,IAAd1I,EAAkB,EAAIA,EACzC,OAAQvqG,GAEN,IAAK,IACH,OAAOplB,OAAOq4H,GAEhB,IAAK,KACH,OAAOlB,GAAgBkB,EAAcjzG,EAAMxxB,QAE7C,IAAK,KACH,OAAOuwH,EAAS+O,cAAcmF,EAAc,CAACjB,KAAM,QAErD,IAAK,MACH,OAAOjT,EAASqL,IAAIG,EAAW,CAACjrH,MAAO,cAAe6Z,QAAS,eAEjE,IAAK,QACH,OAAO4lG,EAASqL,IAAIG,EAAW,CAACjrH,MAAO,SAAU6Z,QAAS,eAE5D,IAAK,SACH,OAAO4lG,EAASqL,IAAIG,EAAW,CAACjrH,MAAO,QAAS6Z,QAAS,eAG3D,QACE,OAAO4lG,EAASqL,IAAIG,EAAW,CAACjrH,MAAO,OAAQ6Z,QAAS,eAE9D,EAGApe,EAAG,SAAU0zB,EAAMzO,EAAO++F,GACxB,IACImU,EADQzkG,EAAK0kG,cACiB,IAAO,EAAI,KAAO,KAEpD,OAAQnzG,GACN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAO++F,EAASsP,UAAU6E,EAAoB,CAAC5zH,MAAO,cAAe6Z,QAAS,eAChF,IAAK,QACH,OAAO4lG,EAASsP,UAAU6E,EAAoB,CAAC5zH,MAAO,SAAU6Z,QAAS,eAE3E,QACE,OAAO4lG,EAASsP,UAAU6E,EAAoB,CAAC5zH,MAAO,OAAQ6Z,QAAS,eAE7E,EAGA2a,EAAG,SAAUrF,EAAMzO,EAAO++F,GACxB,IACImU,EADAxI,EAAQj8F,EAAK0kG,cAUjB,OAPED,EADY,KAAVxI,EACmBiH,GACF,IAAVjH,EACYiH,GAECjH,EAAQ,IAAO,EAAI,KAAO,KAG1C1qG,GACN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAO++F,EAASsP,UAAU6E,EAAoB,CAAC5zH,MAAO,cAAe6Z,QAAS,eAChF,IAAK,QACH,OAAO4lG,EAASsP,UAAU6E,EAAoB,CAAC5zH,MAAO,SAAU6Z,QAAS,eAE3E,QACE,OAAO4lG,EAASsP,UAAU6E,EAAoB,CAAC5zH,MAAO,OAAQ6Z,QAAS,eAE7E,EAGAi6G,EAAG,SAAU3kG,EAAMzO,EAAO++F,GACxB,IACImU,EADAxI,EAAQj8F,EAAK0kG,cAYjB,OATED,EADExI,GAAS,GACUiH,GACZjH,GAAS,GACGiH,GACZjH,GAAS,EACGiH,GAEAA,GAGf3xG,GACN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAO++F,EAASsP,UAAU6E,EAAoB,CAAC5zH,MAAO,cAAe6Z,QAAS,eAChF,IAAK,QACH,OAAO4lG,EAASsP,UAAU6E,EAAoB,CAAC5zH,MAAO,SAAU6Z,QAAS,eAE3E,QACE,OAAO4lG,EAASsP,UAAU6E,EAAoB,CAAC5zH,MAAO,OAAQ6Z,QAAS,eAE7E,EAGAlqB,EAAG,SAAUw/B,EAAMzO,EAAO++F,EAAUlnH,GAClC,IAAI6yH,EAAQj8F,EAAK0kG,cAAgB,GAMjC,OAJc,IAAVzI,IACFA,EAAQ,IAGI,OAAV1qG,EACK++F,EAAS+O,cAAcpD,EAAO,CAACsH,KAAM,SAGvCD,GAAgBrH,EAAO1qG,EAAMxxB,OACtC,EAGA6kI,EAAG,SAAU5kG,EAAMzO,EAAO++F,EAAUlnH,GAClC,IAAI6yH,EAAQj8F,EAAK0kG,cAEjB,MAAc,OAAVnzG,EACK++F,EAAS+O,cAAcpD,EAAO,CAACsH,KAAM,SAGvCD,GAAgBrH,EAAO1qG,EAAMxxB,OACtC,EAGA8kI,EAAG,SAAU7kG,EAAMzO,EAAO++F,EAAUlnH,GAClC,IAAI6yH,EAAQj8F,EAAK0kG,cAAgB,GAEjC,MAAc,OAAVnzG,EACK++F,EAAS+O,cAAcpD,EAAO,CAACsH,KAAM,SAGvCD,GAAgBrH,EAAO1qG,EAAMxxB,OACtC,EAGA08D,EAAG,SAAUz8B,EAAMzO,EAAO++F,EAAUlnH,GAClC,IAAI6yH,EAAQj8F,EAAK0kG,cAMjB,OAJc,IAAVzI,IACFA,EAAQ,IAGI,OAAV1qG,EACK++F,EAAS+O,cAAcpD,EAAO,CAACsH,KAAM,SAGvCD,GAAgBrH,EAAO1qG,EAAMxxB,OACtC,EAGAk3D,EAAG,SAAUj3B,EAAMzO,EAAO++F,EAAUlnH,GAClC,IAAI8yH,EAAUl8F,EAAK8kG,gBAEnB,MAAc,OAAVvzG,EACK++F,EAAS+O,cAAcnD,EAAS,CAACqH,KAAM,WAGzCD,GAAgBpH,EAAS3qG,EAAMxxB,OACxC,EAGA+kB,EAAG,SAAUkb,EAAMzO,EAAO++F,EAAUlnH,GAClC,IAAIgzH,EAAUp8F,EAAK+kG,gBAEnB,MAAc,OAAVxzG,EACK++F,EAAS+O,cAAcjD,EAAS,CAACmH,KAAM,WAGzCD,GAAgBlH,EAAS7qG,EAAMxxB,OACxC,EAGAilI,EAAG,SAAUhlG,EAAMzO,EAAO++F,EAAUlnH,GAClC,IAAI67H,EAAiB1zG,EAAMxxB,OACvBmlI,EAAellG,EAAKmlG,qBAExB,OAAO7B,GADiBr+F,KAAK64C,MAAMonD,EAAejgG,KAAKg7B,IAAI,GAAIglE,EAAiB,IACtCA,EAC5C,EAGAG,EAAG,SAAUplG,EAAMzO,EAAO++F,EAAUlnH,GAClC,IACIi8H,GADej8H,EAAQk8H,eAAiBtlG,GACV24F,oBAElC,GAAuB,IAAnB0M,EACF,MAAO,IAGT,OAAQ9zG,GAEN,IAAK,IACH,OAAOg0G,GAAkCF,GAK3C,IAAK,OACL,IAAK,KACH,OAAOG,GAAeH,GAOxB,QACE,OAAOG,GAAeH,EAAgB,KAE5C,EAGAlgH,EAAG,SAAU6a,EAAMzO,EAAO++F,EAAUlnH,GAClC,IACIi8H,GADej8H,EAAQk8H,eAAiBtlG,GACV24F,oBAElC,OAAQpnG,GAEN,IAAK,IACH,OAAOg0G,GAAkCF,GAK3C,IAAK,OACL,IAAK,KACH,OAAOG,GAAeH,GAOxB,QACE,OAAOG,GAAeH,EAAgB,KAE5C,EAGAI,EAAG,SAAUzlG,EAAMzO,EAAO++F,EAAUlnH,GAClC,IACIi8H,GADej8H,EAAQk8H,eAAiBtlG,GACV24F,oBAElC,OAAQpnG,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,MAAO,MAAQm0G,GAAoBL,EAAgB,KAGrD,QACE,MAAO,MAAQG,GAAeH,EAAgB,KAEpD,EAGAM,EAAG,SAAU3lG,EAAMzO,EAAO++F,EAAUlnH,GAClC,IACIi8H,GADej8H,EAAQk8H,eAAiBtlG,GACV24F,oBAElC,OAAQpnG,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,MAAO,MAAQm0G,GAAoBL,EAAgB,KAGrD,QACE,MAAO,MAAQG,GAAeH,EAAgB,KAEpD,EAGAl6D,EAAG,SAAUnrC,EAAMzO,EAAO++F,EAAUlnH,GAClC,IAAIw8H,EAAex8H,EAAQk8H,eAAiBtlG,EAE5C,OAAOsjG,GADSr+F,KAAK64C,MAAM8nD,EAAanN,UAAY,KAClBlnG,EAAMxxB,OAC1C,EAGA8lI,EAAG,SAAU7lG,EAAMzO,EAAO++F,EAAUlnH,GAGlC,OAAOk6H,IAFYl6H,EAAQk8H,eAAiBtlG,GACfy4F,UACKlnG,EAAMxxB,OAC1C,GAGF,SAASujI,GAAiB9tE,EAAQswE,GAGhC,IAFA,IAAIC,EAAOvwE,EAAS,EAAI,IAAM,GAC1B6H,EAASp4B,KAAK+gG,IAAIxwE,GAAQtlB,WACvBmtB,EAAOt9D,OAAS+lI,GACrBzoE,EAAS,IAAMA,EAEjB,OAAO0oE,EAAO1oE,CAChB,CAEA,SAASmoE,GAAgBl3G,EAAQ23G,GAC/B,IAAIC,EAAYD,GAAkB,GAC9BF,EAAOz3G,EAAS,EAAI,IAAM,IAC1B63G,EAAYlhG,KAAK+gG,IAAI13G,GAGzB,OAAOy3G,EAFKzC,GAAgBr+F,KAAK64C,MAAMqoD,EAAY,IAAK,GAElCD,EADR5C,GAAgB6C,EAAY,GAAI,EAEhD,CAEA,SAASZ,GAAmCj3G,EAAQ23G,GAClD,OAAI33G,EAAS,IAAO,GACPA,EAAS,EAAI,IAAM,KAChBg1G,GAAgBr+F,KAAK+gG,IAAI13G,GAAU,GAAI,GAEhDk3G,GAAel3G,EAAQ23G,EAChC,CAEA,SAASP,GAAqBp3G,EAAQ23G,GACpC,IAAIF,EAAOz3G,EAAS,EAAI,IAAM,IAC1B63G,EAAYlhG,KAAK+gG,IAAI13G,GACrB2tG,EAAQh3F,KAAK64C,MAAMqoD,EAAY,IAC/BjK,EAAUiK,EAAY,GAC1B,GAAgB,IAAZjK,EACF,OAAO6J,EAAO55H,OAAO8vH,GAEvB,IAAIiK,EAAYD,GAAkB,GAClC,OAAOF,EAAO55H,OAAO8vH,GAASiK,EAAY5C,GAAgBpH,EAAS,EACrE,CAEA,SAASkK,GAAmBlyB,EAASkqB,EAAYh1H,GAC/C,OAAQ8qG,GACN,IAAK,IACH,OAAOkqB,EAAWp+F,KAAK,CAACnvB,MAAO,UACjC,IAAK,KACH,OAAOutH,EAAWp+F,KAAK,CAACnvB,MAAO,WACjC,IAAK,MACH,OAAOutH,EAAWp+F,KAAK,CAACnvB,MAAO,SAEjC,QACE,OAAOutH,EAAWp+F,KAAK,CAACnvB,MAAO,SAErC,CAEA,SAASw1H,GAAmBnyB,EAASkqB,EAAYh1H,GAC/C,OAAQ8qG,GACN,IAAK,IACH,OAAOkqB,EAAWxtB,KAAK,CAAC//F,MAAO,UACjC,IAAK,KACH,OAAOutH,EAAWxtB,KAAK,CAAC//F,MAAO,WACjC,IAAK,MACH,OAAOutH,EAAWxtB,KAAK,CAAC//F,MAAO,SAEjC,QACE,OAAOutH,EAAWxtB,KAAK,CAAC//F,MAAO,SAErC,CAkCA,IAAIy1H,GAAiB,CACnBC,EAAGF,GACHG,EAlCF,SAAgCtyB,EAASkqB,EAAYh1H,GACnD,IAQIq9H,EARA9F,EAAczsB,EAAQn4C,MAAM,aAC5B2qE,EAAc/F,EAAY,GAC1BgG,EAAchG,EAAY,GAE9B,IAAKgG,EACH,OAAOP,GAAkBlyB,EAASkqB,GAKpC,OAAQsI,GACN,IAAK,IACHD,EAAiBrI,EAAWK,SAAS,CAAC5tH,MAAO,UAC7C,MACF,IAAK,KACH41H,EAAiBrI,EAAWK,SAAS,CAAC5tH,MAAO,WAC7C,MACF,IAAK,MACH41H,EAAiBrI,EAAWK,SAAS,CAAC5tH,MAAO,SAC7C,MAEF,QACE41H,EAAiBrI,EAAWK,SAAS,CAAC5tH,MAAO,SAIjD,OAAO41H,EACJr8H,QAAQ,WAAYg8H,GAAkBM,EAAatI,IACnDh0H,QAAQ,WAAYi8H,GAAkBM,EAAavI,GACxD,GA4BA,SAASwI,GAAiBpO,EAAWqO,EAAatM,GAChD,GAAIt0H,UAAUlG,OAAS,EACrB,MAAM,IAAIqf,UAAU,kCAAoCnZ,UAAUlG,OAAS,YAI7E,OA1jDF,SAA0By4H,EAAWqO,EAAatM,GAChD,GAAIt0H,UAAUlG,OAAS,EACrB,MAAM,IAAIqf,UAAU,kCAAoCnZ,UAAUlG,OAAS,YAG7E,IAAIi8H,EAAY3B,GAAO7B,EAAW+B,GAAc9B,UAC5CqO,EAASz7B,GAAUw7B,GACvB,OAAO,IAAIhqH,KAAKm/G,EAAY8K,EAC9B,CAkjDSC,CAAgBvO,GADVntB,GAAUw7B,GACoBtM,EAC7C,CAEA,IAAIyM,GAAkB,CAAC,IAAK,KAAM,KAAM,QAExC,SAASC,GAAiB11G,GACxB,OAA2C,IAApCy1G,GAAgB5kI,QAAQmvB,EACjC,CAEA,SAAS21G,GAAoB31G,GAC3B,MAAM,IAAIysD,WACR,gEACEzsD,EACA,qCAEN,CAaA,IAAI41G,GAAyB,wDAIzBC,GAA6B,oCAE7BC,GAAsB,aACtBC,GAAoB,MAoSxB,SAAS73H,GAAO+oH,EAAW+O,EAAgBhN,GACzC,GAAIt0H,UAAUlG,OAAS,EACrB,MAAM,IAAIqf,UACR,kCAAoCnZ,UAAUlG,OAAS,YAI3D,IAAIynI,EAAYr7H,OAAOo7H,GACnBn+H,EAAUmxH,GAAgB,CAAC,EAE3BxX,EAAS35G,EAAQ25G,QAAUme,GAE3BwB,EACF3f,EAAO35G,SAAW25G,EAAO35G,QAAQq4H,sBAC/BkB,EAC6B,MAA/BD,EACI,EACAr3B,GAAUq3B,GACZjB,EAC+B,MAAjCr4H,EAAQq4H,sBACJkB,EACAt3B,GAAUjiG,EAAQq4H,uBAGxB,KAAMA,GAAyB,GAAKA,GAAyB,GAC3D,MAAM,IAAIzjD,WACR,6DAIJ,IAAIukD,EAAqBxf,EAAO35G,SAAW25G,EAAO35G,QAAQo4H,aACtDgB,EACoB,MAAtBD,EAA6B,EAAIl3B,GAAUk3B,GACzCf,EACsB,MAAxBp4H,EAAQo4H,aACJgB,EACAn3B,GAAUjiG,EAAQo4H,cAGxB,KAAMA,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAIxjD,WAAW,oDAGvB,IAAK+kC,EAAOuN,SACV,MAAM,IAAItyC,WAAW,yCAGvB,IAAK+kC,EAAOqb,WACV,MAAM,IAAIpgD,WAAW,2CAGvB,IAAI4nD,EAAevL,GAAO7B,EAAWpvH,GAErC,IAAKsW,GAAQkmH,EAAcx8H,GACzB,MAAO,eAMT,IACIq+H,EAAUb,GAAgBhB,EADTrN,GAAgCqN,GACOx8H,GAExDs+H,EAAmB,CACrBjG,sBAAuBA,EACvBD,aAAcA,EACdze,OAAQA,EACRuiB,cAAeM,GAsCjB,OAnCa4B,EACVzrE,MAAMqrE,IACNv7H,KAAI,SAAS22D,GACZ,IAAImlE,EAAiBnlE,EAAU,GAC/B,MAAuB,MAAnBmlE,GAA6C,MAAnBA,GAErBC,EADatB,GAAeqB,IACdnlE,EAAWugD,EAAOqb,WAAYsJ,GAE9CllE,CACT,IACCt2D,KAAK,IACL6vD,MAAMorE,IACNt7H,KAAI,SAAS22D,GAEZ,GAAkB,OAAdA,EACF,MAAO,IAGT,IAAImlE,EAAiBnlE,EAAU,GAC/B,GAAuB,MAAnBmlE,EACF,OAA0BnlE,EAmBnBzG,MAAMsrE,IAAqB,GAAGj9H,QAAQk9H,GAAmB,KAhBlE,IAAIO,EAAY1E,GAAWwE,GAC3B,OAAIE,IACGz+H,EAAQ0+H,sBAAwBb,GAAiBzkE,IACpD0kE,GAAoB1kE,GAEfqlE,EAAUJ,EAASjlE,EAAWugD,EAAOuN,SAAUoX,IAGjDllE,CACT,IACCt2D,KAAK,GAGV,CA2BA,SAAS67H,GAASvP,EAAWwP,EAAoBzN,GAC/C,GAAIt0H,UAAUlG,OAAS,EACrB,MAAM,IAAIqf,UAAU,kCAAoCnZ,UAAUlG,OAAS,YAG7E,IAAIigC,EAAOq6F,GAAO7B,EAAW+B,GACzB0N,EAAgB5N,GAAO2N,EAAoBzN,GAC/C,OAAOv6F,EAAKy4F,UAAYwP,EAAcxP,SACxC,CAuBA,SAASyP,GAAU1P,EAAWwP,EAAoBzN,GAChD,GAAIt0H,UAAUlG,OAAS,EACrB,MAAM,IAAIqf,UAAU,kCAAoCnZ,UAAUlG,OAAS,YAG7E,IAAIigC,EAAOq6F,GAAO7B,EAAW+B,GACzB0N,EAAgB5N,GAAO2N,EAAoBzN,GAC/C,OAAOv6F,EAAKy4F,UAAYwP,EAAcxP,SACxC,CA0BA,SAAS0P,GAAWC,EAAeC,EAAgB9N,GACjD,GAAIt0H,UAAUlG,OAAS,EACrB,MAAM,IAAIqf,UAAU,kCAAoCnZ,UAAUlG,OAAS,YAG7E,IAAIuoI,EAAWjO,GAAO+N,EAAe7N,GACjCgO,EAAYlO,GAAOgO,EAAgB9N,GACvC,OAAO+N,EAAS7P,YAAc8P,EAAU9P,SAC1C,CAIA,SAAS+P,GAAWhQ,EAAWiQ,EAAUlO,GACvC,GAAIt0H,UAAUlG,OAAS,EACrB,MAAM,IAAIqf,UAAU,kCAAoCnZ,UAAUlG,OAAS,YAG7E,IAAIqJ,EAAUmxH,GAAgB,CAAC,EAC3BxX,EAAS35G,EAAQ25G,OACjBwf,EAAqBxf,GAAUA,EAAO35G,SAAW25G,EAAO35G,QAAQo4H,aAChEgB,EAA4C,MAAtBD,EAA6B,EAAIl3B,GAAUk3B,GACjEf,EAAuC,MAAxBp4H,EAAQo4H,aAAuBgB,EAAsBn3B,GAAUjiG,EAAQo4H,cAG1F,KAAMA,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAIxjD,WAAW,oDAGvB,IAAIh+C,EAAOq6F,GAAO7B,EAAW+B,GACzBoB,EAAMtwB,GAAUo9B,GAOhB9L,IAHYhB,EAAM,EACM,GAAK,EAEV6F,EAAe,EAAI,GAAK7F,EAL9B37F,EAAK48F,YAQtB,OADA58F,EAAK68F,WAAW78F,EAAK88F,aAAeH,GAC7B38F,CACT,CAwDA,IAII0oG,GACK,iBADLA,GAEI,qBAFJA,GAGS,kCAHTA,GAII,qBAJJA,GAKO,qBALPA,GAMO,qBANPA,GAOO,iBAPPA,GAQO,iBARPA,GASM,YATNA,GAUM,YAVNA,GAYW,MAZXA,GAaS,WAbTA,GAcW,WAdXA,GAeU,WAfVA,GAiBe,SAjBfA,GAkBiB,QAlBjBA,GAmBe,aAnBfA,GAoBiB,aApBjBA,GAqBgB,aAGhBC,GACoB,2BADpBA,GAEK,0BAFLA,GAGoB,oCAHpBA,GAIQ,2BAJRA,GAKuB,sCAG3B,SAASC,GAAqB10B,EAASl/C,EAAQ+rE,GAC7C,IAAIJ,EAAc3rE,EAAO+G,MAAMm4C,GAE/B,IAAKysB,EACH,OAAO,KAGT,IAAIriI,EAAQqxB,SAASgxG,EAAY,GAAI,IAErC,MAAO,CACLriI,MAAOyiI,EAAgBA,EAAcziI,GAASA,EAC9Cq9D,KAAM3G,EAAO/oD,MAAM00H,EAAY,GAAG5gI,QAEtC,CAEA,SAAS8oI,GAAsB30B,EAASl/C,GACtC,IAAI2rE,EAAc3rE,EAAO+G,MAAMm4C,GAE/B,OAAKysB,EAKkB,MAAnBA,EAAY,GACP,CACLriI,MAAO,EACPq9D,KAAM3G,EAAO/oD,MAAM,IAShB,CACL3N,OAN4B,MAAnBqiI,EAAY,GAAa,GAAK,IAlEd,MAmEfA,EAAY,GAAKhxG,SAASgxG,EAAY,GAAI,IAAM,GAlE/B,KAmEfA,EAAY,GAAKhxG,SAASgxG,EAAY,GAAI,IAAM,GAlEnC,KAmEbA,EAAY,GAAKhxG,SAASgxG,EAAY,GAAI,IAAM,IAQ5DhlE,KAAM3G,EAAO/oD,MAAM00H,EAAY,GAAG5gI,SAtB3B,IAwBX,CAEA,SAAS+oI,GAAsB9zE,EAAQ+rE,GACrC,OAAO6H,GAAoBF,GAAiC1zE,EAAQ+rE,EACtE,CAEA,SAASgI,GAAchkH,EAAGiwC,EAAQ+rE,GAChC,OAAQh8G,GACN,KAAK,EACH,OAAO6jH,GAAoBF,GAA6B1zE,EAAQ+rE,GAClE,KAAK,EACH,OAAO6H,GAAoBF,GAA2B1zE,EAAQ+rE,GAChE,KAAK,EACH,OAAO6H,GAAoBF,GAA6B1zE,EAAQ+rE,GAClE,KAAK,EACH,OAAO6H,GAAoBF,GAA4B1zE,EAAQ+rE,GACjE,QACE,OAAO6H,GAAoB,IAAIjxG,OAAO,UAAY5S,EAAI,KAAMiwC,EAAQ+rE,GAE1E,CAEA,SAASiI,GAAoBjkH,EAAGiwC,EAAQ+rE,GACtC,OAAQh8G,GACN,KAAK,EACH,OAAO6jH,GAAoBF,GAAmC1zE,EAAQ+rE,GACxE,KAAK,EACH,OAAO6H,GAAoBF,GAAiC1zE,EAAQ+rE,GACtE,KAAK,EACH,OAAO6H,GAAoBF,GAAmC1zE,EAAQ+rE,GACxE,KAAK,EACH,OAAO6H,GAAoBF,GAAkC1zE,EAAQ+rE,GACvE,QACE,OAAO6H,GAAoB,IAAIjxG,OAAO,YAAc5S,EAAI,KAAMiwC,EAAQ+rE,GAE5E,CAEA,SAASkI,GAAsBC,GAC7B,OAAQA,GACN,IAAK,UACH,OAAO,EACT,IAAK,UACH,OAAO,GACT,IAAK,KACL,IAAK,OACL,IAAK,YACH,OAAO,GAIT,QACE,OAAO,EAEb,CAEA,SAASC,GAAuBC,EAAcC,GAC5C,IAOIt/G,EAPAu/G,EAAcD,EAAc,EAK5BE,EAAiBD,EAAcD,EAAc,EAAIA,EAGrD,GAAIE,GAAkB,GACpBx/G,EAASq/G,GAAgB,QACpB,CACL,IAAII,EAAWD,EAAiB,GAGhCx/G,EAASq/G,EAF0C,IAA7BnkG,KAAK64C,MAAM0rD,EAAW,MACpBJ,GAAgBI,EAAW,IACY,IAAM,EACvE,CAEA,OAAOF,EAAcv/G,EAAS,EAAIA,CACpC,CAEA,IAAI0/G,GAAkB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAC/DC,GAA4B,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAG7E,SAASC,GAAmB75F,GAC1B,OAAOA,EAAO,KAAQ,GAAMA,EAAO,GAAM,GAAKA,EAAO,KAAQ,CAC/D,CA6CA,IAAI85F,GAAU,CAEZxG,EAAG,CACDyG,SAAU,IACVv5G,MAAO,SAAU0kC,EAAQzjC,EAAOwqC,EAAO3yD,GACrC,OAAQmoB,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOwqC,EAAMwjE,IAAIvqE,EAAQ,CAACnkD,MAAO,iBAC/BkrD,EAAMwjE,IAAIvqE,EAAQ,CAACnkD,MAAO,WAE9B,IAAK,QACH,OAAOkrD,EAAMwjE,IAAIvqE,EAAQ,CAACnkD,MAAO,WAGnC,QACE,OAAOkrD,EAAMwjE,IAAIvqE,EAAQ,CAACnkD,MAAO,UAC/BkrD,EAAMwjE,IAAIvqE,EAAQ,CAACnkD,MAAO,iBAC1BkrD,EAAMwjE,IAAIvqE,EAAQ,CAACnkD,MAAO,WAElC,EACAwuB,IAAK,SAAUW,EAAM1hC,EAAO8K,GAI1B,OAFA42B,EAAKq7F,eAAyB,IAAV/8H,EAAc,IAAM,EAAG,EAAG,GAC9C0hC,EAAK2hG,YAAY,EAAG,EAAG,EAAG,GACnB3hG,CACT,GAIF+G,EAAG,CAUD8iG,SAAU,IACVv5G,MAAO,SAAU0kC,EAAQzjC,EAAOwqC,EAAO3yD,GACrC,IAAI23H,EAAgB,SAAUjxF,GAC5B,MAAO,CACLA,KAAMA,EACNg6F,eAA0B,OAAVv4G,EAEpB,EAEA,OAAQA,GACN,IAAK,IACH,OAAOw3G,GAAa,EAAG/zE,EAAQ+rE,GACjC,IAAK,KACH,OAAOhlE,EAAMsjE,cAAcrqE,EAAQ,CAACuuE,KAAM,OAAQxC,cAAeA,IACnE,QACE,OAAOgI,GAAax3G,EAAMxxB,OAAQi1D,EAAQ+rE,GAEhD,EACAz4F,SAAU,SAAUtI,EAAM1hC,EAAO8K,GAC/B,OAAO9K,EAAMwrI,gBAAkBxrI,EAAMwxC,KAAO,CAC9C,EACAzQ,IAAK,SAAUW,EAAM1hC,EAAO8K,GAC1B,IAAIigI,EAAc5G,GAAeziG,EAAM52B,GAEvC,GAAI9K,EAAMwrI,eAAgB,CACxB,IAAIC,EAAyBZ,GAAsB7qI,EAAMwxC,KAAMu5F,GAG/D,OAFArpG,EAAKq7F,eAAe0O,EAAwB,EAAG,GAC/C/pG,EAAK2hG,YAAY,EAAG,EAAG,EAAG,GACnB3hG,CACT,CAEA,IAAI8P,EAAOu5F,EAAc,EAAI/qI,EAAMwxC,KAAO,EAAIxxC,EAAMwxC,KAGpD,OAFA9P,EAAKq7F,eAAevrF,EAAM,EAAG,GAC7B9P,EAAK2hG,YAAY,EAAG,EAAG,EAAG,GACnB3hG,CACT,GAIFwjG,EAAG,CACDqG,SAAU,IACVv5G,MAAO,SAAU0kC,EAAQzjC,EAAOwqC,EAAO3yD,GACrC,IAAI23H,EAAgB,SAAUjxF,GAC5B,MAAO,CACLA,KAAMA,EACNg6F,eAA0B,OAAVv4G,EAEpB,EAEA,OAAQA,GACN,IAAK,IACH,OAAOw3G,GAAa,EAAG/zE,EAAQ+rE,GACjC,IAAK,KACH,OAAOhlE,EAAMsjE,cAAcrqE,EAAQ,CAACuuE,KAAM,OAAQxC,cAAeA,IACnE,QACE,OAAOgI,GAAax3G,EAAMxxB,OAAQi1D,EAAQ+rE,GAEhD,EACAz4F,SAAU,SAAUtI,EAAM1hC,EAAO8K,GAC/B,OAAO9K,EAAMwrI,gBAAkBxrI,EAAMwxC,KAAO,CAC9C,EACAzQ,IAAK,SAAUW,EAAM1hC,EAAO8K,GAC1B,IAAIigI,EAAcrpG,EAAK6hG,iBAEvB,GAAIvjI,EAAMwrI,eAAgB,CACxB,IAAIC,EAAyBZ,GAAsB7qI,EAAMwxC,KAAMu5F,GAG/D,OAFArpG,EAAKq7F,eAAe0O,EAAwB,EAAG3gI,EAAQq4H,uBACvDzhG,EAAK2hG,YAAY,EAAG,EAAG,EAAG,GACnBW,GAAetiG,EAAM52B,EAC9B,CAEA,IAAI0mC,EAAOu5F,EAAc,EAAI/qI,EAAMwxC,KAAO,EAAIxxC,EAAMwxC,KAGpD,OAFA9P,EAAKq7F,eAAevrF,EAAM,EAAG1mC,EAAQq4H,uBACrCzhG,EAAK2hG,YAAY,EAAG,EAAG,EAAG,GACnBW,GAAetiG,EAAM52B,EAC9B,GAIFu6H,EAAG,CACDkG,SAAU,IACVv5G,MAAO,SAAU0kC,EAAQzjC,EAAOwqC,EAAO3yD,GACrC,OACS4/H,GADK,MAAVz3G,EACwB,EAGFA,EAAMxxB,OAHDi1D,EAIjC,EACA31B,IAAK,SAAUW,EAAM1hC,EAAO8K,GAC1B,IAAI4gI,EAAkB,IAAIntH,KAAK,GAG/B,OAFAmtH,EAAgB3O,eAAe/8H,EAAO,EAAG,GACzC0rI,EAAgBrI,YAAY,EAAG,EAAG,EAAG,GAC9BD,GAAkBsI,EAC3B,GAIFltE,EAAG,CACD+sE,SAAU,IACVv5G,MAAO,SAAU0kC,EAAQzjC,EAAOwqC,EAAO3yD,GACrC,OACS4/H,GADK,MAAVz3G,EACwB,EAGFA,EAAMxxB,OAHDi1D,EAIjC,EACA31B,IAAK,SAAUW,EAAM1hC,EAAO8K,GAG1B,OAFA42B,EAAKq7F,eAAe/8H,EAAO,EAAG,GAC9B0hC,EAAK2hG,YAAY,EAAG,EAAG,EAAG,GACnB3hG,CACT,GAIF4jG,EAAG,CACDiG,SAAU,IACVv5G,MAAO,SAAU0kC,EAAQzjC,EAAOwqC,EAAO3yD,GACrC,OAAQmoB,GAEN,IAAK,IACL,IAAK,KACH,OAAOw3G,GAAax3G,EAAMxxB,OAAQi1D,GAEpC,IAAK,KACH,OAAO+G,EAAMsjE,cAAcrqE,EAAQ,CAACuuE,KAAM,YAE5C,IAAK,MACH,OAAOxnE,EAAM4jE,QAAQ3qE,EAAQ,CAACnkD,MAAO,cAAe6Z,QAAS,gBAC3DqxC,EAAM4jE,QAAQ3qE,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eAErD,IAAK,QACH,OAAOqxC,EAAM4jE,QAAQ3qE,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eAG1D,QACE,OAAOqxC,EAAM4jE,QAAQ3qE,EAAQ,CAACnkD,MAAO,OAAQ6Z,QAAS,gBACpDqxC,EAAM4jE,QAAQ3qE,EAAQ,CAACnkD,MAAO,cAAe6Z,QAAS,gBACtDqxC,EAAM4jE,QAAQ3qE,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eAEzD,EACA4d,SAAU,SAAUtI,EAAM1hC,EAAO8K,GAC/B,OAAO9K,GAAS,GAAKA,GAAS,CAChC,EACA+gC,IAAK,SAAUW,EAAM1hC,EAAO8K,GAG1B,OAFA42B,EAAKokG,YAA0B,GAAb9lI,EAAQ,GAAQ,GAClC0hC,EAAK2hG,YAAY,EAAG,EAAG,EAAG,GACnB3hG,CACT,GAIF0/C,EAAG,CACDmqD,SAAU,IACVv5G,MAAO,SAAU0kC,EAAQzjC,EAAOwqC,EAAO3yD,GACrC,OAAQmoB,GAEN,IAAK,IACL,IAAK,KACH,OAAOw3G,GAAax3G,EAAMxxB,OAAQi1D,GAEpC,IAAK,KACH,OAAO+G,EAAMsjE,cAAcrqE,EAAQ,CAACuuE,KAAM,YAE5C,IAAK,MACH,OAAOxnE,EAAM4jE,QAAQ3qE,EAAQ,CAACnkD,MAAO,cAAe6Z,QAAS,gBAC3DqxC,EAAM4jE,QAAQ3qE,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eAErD,IAAK,QACH,OAAOqxC,EAAM4jE,QAAQ3qE,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eAG1D,QACE,OAAOqxC,EAAM4jE,QAAQ3qE,EAAQ,CAACnkD,MAAO,OAAQ6Z,QAAS,gBACpDqxC,EAAM4jE,QAAQ3qE,EAAQ,CAACnkD,MAAO,cAAe6Z,QAAS,gBACtDqxC,EAAM4jE,QAAQ3qE,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eAEzD,EACA4d,SAAU,SAAUtI,EAAM1hC,EAAO8K,GAC/B,OAAO9K,GAAS,GAAKA,GAAS,CAChC,EACA+gC,IAAK,SAAUW,EAAM1hC,EAAO8K,GAG1B,OAFA42B,EAAKokG,YAA0B,GAAb9lI,EAAQ,GAAQ,GAClC0hC,EAAK2hG,YAAY,EAAG,EAAG,EAAG,GACnB3hG,CACT,GAIF8jG,EAAG,CACD+F,SAAU,IACVv5G,MAAO,SAAU0kC,EAAQzjC,EAAOwqC,EAAO3yD,GACrC,IAAI23H,EAAgB,SAAUziI,GAC5B,OAAOA,EAAQ,CACjB,EAEA,OAAQizB,GAEN,IAAK,IACH,OAAOq3G,GAAoBF,GAAuB1zE,EAAQ+rE,GAE5D,IAAK,KACH,OAAOgI,GAAa,EAAG/zE,EAAQ+rE,GAEjC,IAAK,KACH,OAAOhlE,EAAMsjE,cAAcrqE,EAAQ,CAACuuE,KAAM,QAASxC,cAAeA,IAEpE,IAAK,MACH,OAAOhlE,EAAMlsB,MAAMmlB,EAAQ,CAACnkD,MAAO,cAAe6Z,QAAS,gBACzDqxC,EAAMlsB,MAAMmlB,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eAEnD,IAAK,QACH,OAAOqxC,EAAMlsB,MAAMmlB,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eAGxD,QACE,OAAOqxC,EAAMlsB,MAAMmlB,EAAQ,CAACnkD,MAAO,OAAQ6Z,QAAS,gBAClDqxC,EAAMlsB,MAAMmlB,EAAQ,CAACnkD,MAAO,cAAe6Z,QAAS,gBACpDqxC,EAAMlsB,MAAMmlB,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eAEvD,EACA4d,SAAU,SAAUtI,EAAM1hC,EAAO8K,GAC/B,OAAO9K,GAAS,GAAKA,GAAS,EAChC,EACA+gC,IAAK,SAAUW,EAAM1hC,EAAO8K,GAG1B,OAFA42B,EAAKokG,YAAY9lI,EAAO,GACxB0hC,EAAK2hG,YAAY,EAAG,EAAG,EAAG,GACnB3hG,CACT,GAIF+jG,EAAG,CACD8F,SAAU,IACVv5G,MAAO,SAAU0kC,EAAQzjC,EAAOwqC,EAAO3yD,GACrC,IAAI23H,EAAgB,SAAUziI,GAC5B,OAAOA,EAAQ,CACjB,EAEA,OAAQizB,GAEN,IAAK,IACH,OAAOq3G,GAAoBF,GAAuB1zE,EAAQ+rE,GAE5D,IAAK,KACH,OAAOgI,GAAa,EAAG/zE,EAAQ+rE,GAEjC,IAAK,KACH,OAAOhlE,EAAMsjE,cAAcrqE,EAAQ,CAACuuE,KAAM,QAASxC,cAAeA,IAEpE,IAAK,MACH,OAAOhlE,EAAMlsB,MAAMmlB,EAAQ,CAACnkD,MAAO,cAAe6Z,QAAS,gBACzDqxC,EAAMlsB,MAAMmlB,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eAEnD,IAAK,QACH,OAAOqxC,EAAMlsB,MAAMmlB,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eAGxD,QACE,OAAOqxC,EAAMlsB,MAAMmlB,EAAQ,CAACnkD,MAAO,OAAQ6Z,QAAS,gBAClDqxC,EAAMlsB,MAAMmlB,EAAQ,CAACnkD,MAAO,cAAe6Z,QAAS,gBACpDqxC,EAAMlsB,MAAMmlB,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eAEvD,EACA4d,SAAU,SAAUtI,EAAM1hC,EAAO8K,GAC/B,OAAO9K,GAAS,GAAKA,GAAS,EAChC,EACA+gC,IAAK,SAAUW,EAAM1hC,EAAO8K,GAG1B,OAFA42B,EAAKokG,YAAY9lI,EAAO,GACxB0hC,EAAK2hG,YAAY,EAAG,EAAG,EAAG,GACnB3hG,CACT,GAIFm/C,EAAG,CACD0qD,SAAU,IACVv5G,MAAO,SAAU0kC,EAAQzjC,EAAOwqC,EAAO3yD,GACrC,OAAQmoB,GACN,IAAK,IACH,OAAOq3G,GAAoBF,GAAsB1zE,GACnD,IAAK,KACH,OAAO+G,EAAMsjE,cAAcrqE,EAAQ,CAACuuE,KAAM,SAC5C,QACE,OAAOwF,GAAax3G,EAAMxxB,OAAQi1D,GAExC,EACA1sB,SAAU,SAAUtI,EAAM1hC,EAAO8K,GAC/B,OAAO9K,GAAS,GAAKA,GAAS,EAChC,EACA+gC,IAAK,SAAUW,EAAM1hC,EAAO8K,GAC1B,OAAOk5H,GA7kBb,SAAqB9J,EAAWyR,EAAW1P,GACzC,GAAIt0H,UAAUlG,OAAS,EACrB,MAAM,IAAIqf,UAAU,kCAAoCnZ,UAAUlG,OAAS,YAG7E,IAAIigC,EAAOq6F,GAAO7B,EAAW+B,GACzBa,EAAO/vB,GAAU4+B,GACjBtN,EAAOoG,GAAW/iG,EAAMu6F,GAAgBa,EAE5C,OADAp7F,EAAK68F,WAAW78F,EAAK88F,aAAsB,EAAPH,GAC7B38F,CACT,CAmkB4BkqG,CAAWlqG,EAAM1hC,EAAO8K,GAAUA,EAC1D,GAIF46H,EAAG,CACD6F,SAAU,IACVv5G,MAAO,SAAU0kC,EAAQzjC,EAAOwqC,EAAO3yD,GACrC,OAAQmoB,GACN,IAAK,IACH,OAAOq3G,GAAoBF,GAAsB1zE,GACnD,IAAK,KACH,OAAO+G,EAAMsjE,cAAcrqE,EAAQ,CAACuuE,KAAM,SAC5C,QACE,OAAOwF,GAAax3G,EAAMxxB,OAAQi1D,GAExC,EACA1sB,SAAU,SAAUtI,EAAM1hC,EAAO8K,GAC/B,OAAO9K,GAAS,GAAKA,GAAS,EAChC,EACA+gC,IAAK,SAAUW,EAAM1hC,EAAO8K,GAC1B,OAAOs4H,GA1jBb,SAAwBlJ,EAAW2R,EAAc5P,GAC/C,GAAIt0H,UAAUlG,OAAS,EACrB,MAAM,IAAIqf,UAAU,kCAAoCnZ,UAAUlG,OAAS,YAG7E,IAAIigC,EAAOq6F,GAAO7B,EAAW+B,GACzB0J,EAAU54B,GAAU8+B,GACpBxN,EAAOwF,GAAcniG,EAAMu6F,GAAgB0J,EAE/C,OADAjkG,EAAK68F,WAAW78F,EAAK88F,aAAsB,EAAPH,GAC7B38F,CACT,CAgjB+BoqG,CAAcpqG,EAAM1hC,EAAO8K,GAAUA,EAChE,GAIF04B,EAAG,CACD+nG,SAAU,GACVv5G,MAAO,SAAU0kC,EAAQzjC,EAAOwqC,EAAO3yD,GACrC,OAAQmoB,GACN,IAAK,IACH,OAAOq3G,GAAoBF,GAAsB1zE,GACnD,IAAK,KACH,OAAO+G,EAAMsjE,cAAcrqE,EAAQ,CAACuuE,KAAM,SAC5C,QACE,OAAOwF,GAAax3G,EAAMxxB,OAAQi1D,GAExC,EACA1sB,SAAU,SAAUtI,EAAM1hC,EAAO8K,GAC/B,IACIoyH,EAAamO,GADN3pG,EAAK6hG,kBAEZhyF,EAAQ7P,EAAK6jG,cACjB,OAAIrI,EACKl9H,GAAS,GAAKA,GAASorI,GAA0B75F,GAEjDvxC,GAAS,GAAKA,GAASmrI,GAAgB55F,EAElD,EACAxQ,IAAK,SAAUW,EAAM1hC,EAAO8K,GAG1B,OAFA42B,EAAK68F,WAAWv+H,GAChB0hC,EAAK2hG,YAAY,EAAG,EAAG,EAAG,GACnB3hG,CACT,GAIFmkG,EAAG,CACD0F,SAAU,GACVv5G,MAAO,SAAU0kC,EAAQzjC,EAAOwqC,EAAO3yD,GACrC,OAAQmoB,GACN,IAAK,IACL,IAAK,KACH,OAAOq3G,GAAoBF,GAA2B1zE,GACxD,IAAK,KACH,OAAO+G,EAAMsjE,cAAcrqE,EAAQ,CAACuuE,KAAM,SAC5C,QACE,OAAOwF,GAAax3G,EAAMxxB,OAAQi1D,GAExC,EACA1sB,SAAU,SAAUtI,EAAM1hC,EAAO8K,GAG/B,OADiBugI,GADN3pG,EAAK6hG,kBAGPvjI,GAAS,GAAKA,GAAS,IAEvBA,GAAS,GAAKA,GAAS,GAElC,EACA+gC,IAAK,SAAUW,EAAM1hC,EAAO8K,GAG1B,OAFA42B,EAAKokG,YAAY,EAAG9lI,GACpB0hC,EAAK2hG,YAAY,EAAG,EAAG,EAAG,GACnB3hG,CACT,GAIFskG,EAAG,CACDuF,SAAU,GACVv5G,MAAO,SAAU0kC,EAAQzjC,EAAOwqC,EAAO3yD,GACrC,OAAQmoB,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOwqC,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,cAAe6Z,QAAS,gBACvDqxC,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,QAAS6Z,QAAS,gBAC5CqxC,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eAEjD,IAAK,QACH,OAAOqxC,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eAEtD,IAAK,SACH,OAAOqxC,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,QAAS6Z,QAAS,gBACnDqxC,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eAG/C,QACE,OAAOqxC,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,OAAQ6Z,QAAS,gBAChDqxC,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,cAAe6Z,QAAS,gBAClDqxC,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,QAAS6Z,QAAS,gBAC5CqxC,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eAErD,EACA4d,SAAU,SAAUtI,EAAM1hC,EAAO8K,GAC/B,OAAO9K,GAAS,GAAKA,GAAS,CAChC,EACA+gC,IAAK,SAAUW,EAAM1hC,EAAO8K,GAG1B,OAFA42B,EAAOwoG,GAAUxoG,EAAM1hC,EAAO8K,IACzBu4H,YAAY,EAAG,EAAG,EAAG,GACnB3hG,CACT,GAIFn6B,EAAG,CACDgkI,SAAU,GACVv5G,MAAO,SAAU0kC,EAAQzjC,EAAOwqC,EAAO3yD,GACrC,IAAI23H,EAAgB,SAAUziI,GAC5B,IAAI+rI,EAA8C,EAA9BplG,KAAK64C,OAAOx/E,EAAQ,GAAK,GAC7C,OAAQA,EAAQ8K,EAAQo4H,aAAe,GAAK,EAAI6I,CAClD,EAEA,OAAQ94G,GAEN,IAAK,IACL,IAAK,KACH,OAAOw3G,GAAax3G,EAAMxxB,OAAQi1D,EAAQ+rE,GAE5C,IAAK,KACH,OAAOhlE,EAAMsjE,cAAcrqE,EAAQ,CAACuuE,KAAM,MAAOxC,cAAeA,IAElE,IAAK,MACH,OAAOhlE,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,cAAe6Z,QAAS,gBACvDqxC,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,QAAS6Z,QAAS,gBAC5CqxC,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eAEjD,IAAK,QACH,OAAOqxC,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eAEtD,IAAK,SACH,OAAOqxC,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,QAAS6Z,QAAS,gBACnDqxC,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eAG/C,QACE,OAAOqxC,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,OAAQ6Z,QAAS,gBAChDqxC,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,cAAe6Z,QAAS,gBAClDqxC,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,QAAS6Z,QAAS,gBAC5CqxC,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eAErD,EACA4d,SAAU,SAAUtI,EAAM1hC,EAAO8K,GAC/B,OAAO9K,GAAS,GAAKA,GAAS,CAChC,EACA+gC,IAAK,SAAUW,EAAM1hC,EAAO8K,GAG1B,OAFA42B,EAAOwoG,GAAUxoG,EAAM1hC,EAAO8K,IACzBu4H,YAAY,EAAG,EAAG,EAAG,GACnB3hG,CACT,GAIFgB,EAAG,CACD6oG,SAAU,GACVv5G,MAAO,SAAU0kC,EAAQzjC,EAAOwqC,EAAO3yD,GACrC,IAAI23H,EAAgB,SAAUziI,GAC5B,IAAI+rI,EAA8C,EAA9BplG,KAAK64C,OAAOx/E,EAAQ,GAAK,GAC7C,OAAQA,EAAQ8K,EAAQo4H,aAAe,GAAK,EAAI6I,CAClD,EAEA,OAAQ94G,GAEN,IAAK,IACL,IAAK,KACH,OAAOw3G,GAAax3G,EAAMxxB,OAAQi1D,EAAQ+rE,GAE5C,IAAK,KACH,OAAOhlE,EAAMsjE,cAAcrqE,EAAQ,CAACuuE,KAAM,MAAOxC,cAAeA,IAElE,IAAK,MACH,OAAOhlE,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,cAAe6Z,QAAS,gBACvDqxC,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,QAAS6Z,QAAS,gBAC5CqxC,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eAEjD,IAAK,QACH,OAAOqxC,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eAEtD,IAAK,SACH,OAAOqxC,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,QAAS6Z,QAAS,gBACnDqxC,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eAG/C,QACE,OAAOqxC,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,OAAQ6Z,QAAS,gBAChDqxC,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,cAAe6Z,QAAS,gBAClDqxC,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,QAAS6Z,QAAS,gBAC5CqxC,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eAErD,EACA4d,SAAU,SAAUtI,EAAM1hC,EAAO8K,GAC/B,OAAO9K,GAAS,GAAKA,GAAS,CAChC,EACA+gC,IAAK,SAAUW,EAAM1hC,EAAO8K,GAG1B,OAFA42B,EAAOwoG,GAAUxoG,EAAM1hC,EAAO8K,IACzBu4H,YAAY,EAAG,EAAG,EAAG,GACnB3hG,CACT,GAIFngC,EAAG,CACDgqI,SAAU,GACVv5G,MAAO,SAAU0kC,EAAQzjC,EAAOwqC,EAAO3yD,GACrC,IAAI23H,EAAgB,SAAUziI,GAC5B,OAAc,IAAVA,EACK,EAEFA,CACT,EAEA,OAAQizB,GAEN,IAAK,IACL,IAAK,KACH,OAAOw3G,GAAax3G,EAAMxxB,OAAQi1D,GAEpC,IAAK,KACH,OAAO+G,EAAMsjE,cAAcrqE,EAAQ,CAACuuE,KAAM,QAE5C,IAAK,MACH,OAAOxnE,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,cAAe6Z,QAAS,aAAcq2G,cAAeA,KACpFhlE,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,QAAS6Z,QAAS,aAAcq2G,cAAeA,KACzEhlE,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,aAAcq2G,cAAeA,IAE9E,IAAK,QACH,OAAOhlE,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,aAAcq2G,cAAeA,IAEnF,IAAK,SACH,OAAOhlE,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,QAAS6Z,QAAS,aAAcq2G,cAAeA,KAChFhlE,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,aAAcq2G,cAAeA,IAG5E,QACE,OAAOhlE,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,OAAQ6Z,QAAS,aAAcq2G,cAAeA,KAC7EhlE,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,cAAe6Z,QAAS,aAAcq2G,cAAeA,KAC/EhlE,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,QAAS6Z,QAAS,aAAcq2G,cAAeA,KACzEhlE,EAAM4/D,IAAI3mE,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,aAAcq2G,cAAeA,IAElF,EACAz4F,SAAU,SAAUtI,EAAM1hC,EAAO8K,GAC/B,OAAO9K,GAAS,GAAKA,GAAS,CAChC,EACA+gC,IAAK,SAAUW,EAAM1hC,EAAO8K,GAG1B,OAFA42B,EAt0BN,SAAuBw4F,EAAWiQ,EAAUlO,GAC1C,GAAIt0H,UAAUlG,OAAS,EACrB,MAAM,IAAIqf,UAAU,kCAAoCnZ,UAAUlG,OAAS,YAG7E,IAAI47H,EAAMtwB,GAAUo9B,GAEhB9M,EAAM,GAAM,IACdA,GAAY,GAGd,IACI37F,EAAOq6F,GAAO7B,EAAW+B,GAMzBoC,IAHYhB,EAAM,EACM,GAAK,EALd,EAOmB,EAAI,GAAKA,EAL9B37F,EAAK48F,YAQtB,OADA58F,EAAK68F,WAAW78F,EAAK88F,aAAeH,GAC7B38F,CACT,CAgzBasqG,CAAatqG,EAAM1hC,EAAO8K,GACjC42B,EAAK2hG,YAAY,EAAG,EAAG,EAAG,GACnB3hG,CACT,GAIF1zB,EAAG,CACDu9H,SAAU,GACVv5G,MAAO,SAAU0kC,EAAQzjC,EAAOwqC,EAAO3yD,GACrC,OAAQmoB,GACN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOwqC,EAAM6jE,UAAU5qE,EAAQ,CAACnkD,MAAO,cAAe6Z,QAAS,gBAC7DqxC,EAAM6jE,UAAU5qE,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eACvD,IAAK,QACH,OAAOqxC,EAAM6jE,UAAU5qE,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eAE5D,QACE,OAAOqxC,EAAM6jE,UAAU5qE,EAAQ,CAACnkD,MAAO,OAAQ6Z,QAAS,gBACtDqxC,EAAM6jE,UAAU5qE,EAAQ,CAACnkD,MAAO,cAAe6Z,QAAS,gBACxDqxC,EAAM6jE,UAAU5qE,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eAE3D,EACA2U,IAAK,SAAUW,EAAM1hC,EAAO8K,GAE1B,OADA42B,EAAK2hG,YAAYsH,GAAqB3qI,GAAQ,EAAG,EAAG,GAC7C0hC,CACT,GAIFqF,EAAG,CACDwkG,SAAU,GACVv5G,MAAO,SAAU0kC,EAAQzjC,EAAOwqC,EAAO3yD,GACrC,OAAQmoB,GACN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOwqC,EAAM6jE,UAAU5qE,EAAQ,CAACnkD,MAAO,cAAe6Z,QAAS,gBAC7DqxC,EAAM6jE,UAAU5qE,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eACvD,IAAK,QACH,OAAOqxC,EAAM6jE,UAAU5qE,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eAE5D,QACE,OAAOqxC,EAAM6jE,UAAU5qE,EAAQ,CAACnkD,MAAO,OAAQ6Z,QAAS,gBACtDqxC,EAAM6jE,UAAU5qE,EAAQ,CAACnkD,MAAO,cAAe6Z,QAAS,gBACxDqxC,EAAM6jE,UAAU5qE,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eAE3D,EACA2U,IAAK,SAAUW,EAAM1hC,EAAO8K,GAE1B,OADA42B,EAAK2hG,YAAYsH,GAAqB3qI,GAAQ,EAAG,EAAG,GAC7C0hC,CACT,GAIF2kG,EAAG,CACDkF,SAAU,GACVv5G,MAAO,SAAU0kC,EAAQzjC,EAAOwqC,EAAO3yD,GACrC,OAAQmoB,GACN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOwqC,EAAM6jE,UAAU5qE,EAAQ,CAACnkD,MAAO,cAAe6Z,QAAS,gBAC7DqxC,EAAM6jE,UAAU5qE,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eACvD,IAAK,QACH,OAAOqxC,EAAM6jE,UAAU5qE,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eAE5D,QACE,OAAOqxC,EAAM6jE,UAAU5qE,EAAQ,CAACnkD,MAAO,OAAQ6Z,QAAS,gBACtDqxC,EAAM6jE,UAAU5qE,EAAQ,CAACnkD,MAAO,cAAe6Z,QAAS,gBACxDqxC,EAAM6jE,UAAU5qE,EAAQ,CAACnkD,MAAO,SAAU6Z,QAAS,eAE3D,EACA2U,IAAK,SAAUW,EAAM1hC,EAAO8K,GAE1B,OADA42B,EAAK2hG,YAAYsH,GAAqB3qI,GAAQ,EAAG,EAAG,GAC7C0hC,CACT,GAIFx/B,EAAG,CACDqpI,SAAU,GACVv5G,MAAO,SAAU0kC,EAAQzjC,EAAOwqC,EAAO3yD,GACrC,OAAQmoB,GACN,IAAK,IACH,OAAOq3G,GAAoBF,GAAyB1zE,GACtD,IAAK,KACH,OAAO+G,EAAMsjE,cAAcrqE,EAAQ,CAACuuE,KAAM,SAC5C,QACE,OAAOwF,GAAax3G,EAAMxxB,OAAQi1D,GAExC,EACA1sB,SAAU,SAAUtI,EAAM1hC,EAAO8K,GAC/B,OAAO9K,GAAS,GAAKA,GAAS,EAChC,EACA+gC,IAAK,SAAUW,EAAM1hC,EAAO8K,GAC1B,IAAImhI,EAAOvqG,EAAK0kG,eAAiB,GAQjC,OAPI6F,GAAQjsI,EAAQ,GAClB0hC,EAAK2hG,YAAYrjI,EAAQ,GAAI,EAAG,EAAG,GACzBisI,GAAkB,KAAVjsI,EAGlB0hC,EAAK2hG,YAAYrjI,EAAO,EAAG,EAAG,GAF9B0hC,EAAK2hG,YAAY,EAAG,EAAG,EAAG,GAIrB3hG,CACT,GAIF4kG,EAAG,CACDiF,SAAU,GACVv5G,MAAO,SAAU0kC,EAAQzjC,EAAOwqC,EAAO3yD,GACrC,OAAQmoB,GACN,IAAK,IACH,OAAOq3G,GAAoBF,GAAyB1zE,GACtD,IAAK,KACH,OAAO+G,EAAMsjE,cAAcrqE,EAAQ,CAACuuE,KAAM,SAC5C,QACE,OAAOwF,GAAax3G,EAAMxxB,OAAQi1D,GAExC,EACA1sB,SAAU,SAAUtI,EAAM1hC,EAAO8K,GAC/B,OAAO9K,GAAS,GAAKA,GAAS,EAChC,EACA+gC,IAAK,SAAUW,EAAM1hC,EAAO8K,GAE1B,OADA42B,EAAK2hG,YAAYrjI,EAAO,EAAG,EAAG,GACvB0hC,CACT,GAIF6kG,EAAG,CACDgF,SAAU,GACVv5G,MAAO,SAAU0kC,EAAQzjC,EAAOwqC,EAAO3yD,GACrC,OAAQmoB,GACN,IAAK,IACH,OAAOq3G,GAAoBF,GAAyB1zE,GACtD,IAAK,KACH,OAAO+G,EAAMsjE,cAAcrqE,EAAQ,CAACuuE,KAAM,SAC5C,QACE,OAAOwF,GAAax3G,EAAMxxB,OAAQi1D,GAExC,EACA1sB,SAAU,SAAUtI,EAAM1hC,EAAO8K,GAC/B,OAAO9K,GAAS,GAAKA,GAAS,EAChC,EACA+gC,IAAK,SAAUW,EAAM1hC,EAAO8K,GAO1B,OANW42B,EAAK0kG,eAAiB,IACrBpmI,EAAQ,GAClB0hC,EAAK2hG,YAAYrjI,EAAQ,GAAI,EAAG,EAAG,GAEnC0hC,EAAK2hG,YAAYrjI,EAAO,EAAG,EAAG,GAEzB0hC,CACT,GAIFy8B,EAAG,CACDotE,SAAU,GACVv5G,MAAO,SAAU0kC,EAAQzjC,EAAOwqC,EAAO3yD,GACrC,OAAQmoB,GACN,IAAK,IACH,OAAOq3G,GAAoBF,GAAyB1zE,GACtD,IAAK,KACH,OAAO+G,EAAMsjE,cAAcrqE,EAAQ,CAACuuE,KAAM,SAC5C,QACE,OAAOwF,GAAax3G,EAAMxxB,OAAQi1D,GAExC,EACA1sB,SAAU,SAAUtI,EAAM1hC,EAAO8K,GAC/B,OAAO9K,GAAS,GAAKA,GAAS,EAChC,EACA+gC,IAAK,SAAUW,EAAM1hC,EAAO8K,GAC1B,IAAI6yH,EAAQ39H,GAAS,GAAKA,EAAQ,GAAKA,EAEvC,OADA0hC,EAAK2hG,YAAY1F,EAAO,EAAG,EAAG,GACvBj8F,CACT,GAIFi3B,EAAG,CACD4yE,SAAU,GACVv5G,MAAO,SAAU0kC,EAAQzjC,EAAOwqC,EAAO3yD,GACrC,OAAQmoB,GACN,IAAK,IACH,OAAOq3G,GAAoBF,GAAwB1zE,GACrD,IAAK,KACH,OAAO+G,EAAMsjE,cAAcrqE,EAAQ,CAACuuE,KAAM,WAC5C,QACE,OAAOwF,GAAax3G,EAAMxxB,OAAQi1D,GAExC,EACA1sB,SAAU,SAAUtI,EAAM1hC,EAAO8K,GAC/B,OAAO9K,GAAS,GAAKA,GAAS,EAChC,EACA+gC,IAAK,SAAUW,EAAM1hC,EAAO8K,GAE1B,OADA42B,EAAKwqG,cAAclsI,EAAO,EAAG,GACtB0hC,CACT,GAIFlb,EAAG,CACD+kH,SAAU,GACVv5G,MAAO,SAAU0kC,EAAQzjC,EAAOwqC,EAAO3yD,GACrC,OAAQmoB,GACN,IAAK,IACH,OAAOq3G,GAAoBF,GAAwB1zE,GACrD,IAAK,KACH,OAAO+G,EAAMsjE,cAAcrqE,EAAQ,CAACuuE,KAAM,WAC5C,QACE,OAAOwF,GAAax3G,EAAMxxB,OAAQi1D,GAExC,EACA1sB,SAAU,SAAUtI,EAAM1hC,EAAO8K,GAC/B,OAAO9K,GAAS,GAAKA,GAAS,EAChC,EACA+gC,IAAK,SAAUW,EAAM1hC,EAAO8K,GAE1B,OADA42B,EAAKyqG,cAAcnsI,EAAO,GACnB0hC,CACT,GAIFglG,EAAG,CACD6E,SAAU,GACVv5G,MAAO,SAAU0kC,EAAQzjC,EAAOwqC,EAAO3yD,GAIrC,OAAO2/H,GAAax3G,EAAMxxB,OAAQi1D,GAHd,SAAU12D,GAC5B,OAAO2mC,KAAK64C,MAAMx/E,EAAQ2mC,KAAKg7B,IAAI,GAAoB,EAAf1uC,EAAMxxB,QAChD,GAEF,EACAs/B,IAAK,SAAUW,EAAM1hC,EAAO8K,GAE1B,OADA42B,EAAK0qG,mBAAmBpsI,GACjB0hC,CACT,GAIFolG,EAAG,CACDyE,SAAU,GACVv5G,MAAO,SAAU0kC,EAAQzjC,EAAOwqC,EAAO3yD,GACrC,OAAQmoB,GACN,IAAK,IACH,OAAOs3G,GAAqBF,GAAuC3zE,GACrE,IAAK,KACH,OAAO6zE,GAAqBF,GAAwB3zE,GACtD,IAAK,OACH,OAAO6zE,GAAqBF,GAAuC3zE,GACrE,IAAK,QACH,OAAO6zE,GAAqBF,GAA0C3zE,GAExE,QACE,OAAO6zE,GAAqBF,GAA2B3zE,GAE7D,EACA31B,IAAK,SAAUW,EAAM1hC,EAAO8K,GAC1B,OAAO,IAAIyT,KAAKmjB,EAAKy4F,UAAYn6H,EACnC,GAIF6mB,EAAG,CACD0kH,SAAU,GACVv5G,MAAO,SAAU0kC,EAAQzjC,EAAOwqC,EAAO3yD,GACrC,OAAQmoB,GACN,IAAK,IACH,OAAOs3G,GAAqBF,GAAuC3zE,GACrE,IAAK,KACH,OAAO6zE,GAAqBF,GAAwB3zE,GACtD,IAAK,OACH,OAAO6zE,GAAqBF,GAAuC3zE,GACrE,IAAK,QACH,OAAO6zE,GAAqBF,GAA0C3zE,GAExE,QACE,OAAO6zE,GAAqBF,GAA2B3zE,GAE7D,EACA31B,IAAK,SAAUW,EAAM1hC,EAAO8K,GAC1B,OAAO,IAAIyT,KAAKmjB,EAAKy4F,UAAYn6H,EACnC,GAIF6sE,EAAG,CACD0+D,SAAU,GACVv5G,MAAO,SAAU0kC,EAAQzjC,EAAOwqC,EAAO3yD,GACrC,OAAO0/H,GAAqB9zE,EAC9B,EACA31B,IAAK,SAAUW,EAAM1hC,EAAO8K,GAC1B,OAAO,IAAIyT,KAAa,IAARve,EAClB,GAIFunI,EAAG,CACDgE,SAAU,GACVv5G,MAAO,SAAU0kC,EAAQzjC,EAAOwqC,EAAO3yD,GACrC,OAAO0/H,GAAqB9zE,EAC9B,EACA31B,IAAK,SAAUW,EAAM1hC,EAAO8K,GAC1B,OAAO,IAAIyT,KAAKve,EAClB,IAIAqsI,GAAyB,GAazBC,GAA2B,wDAE3BC,GAAwB,aACxBC,GAAsB,MAEtBC,GAAsB,KAsc1B,SAASC,GAAqBhrG,GAC5B,IAAIirG,EAAgB,IAAIpuH,KAAK,GAY7B,OAXAouH,EAAcC,YACZlrG,EAAK6hG,iBACL7hG,EAAK6jG,cACL7jG,EAAK88F,cAEPmO,EAAcE,SACZnrG,EAAK0kG,cACL1kG,EAAK8kG,gBACL9kG,EAAK+kG,gBACL/kG,EAAKmlG,sBAEA8F,CACT,CAWA,SAASG,GAAaprG,EAAMqrG,GAC1B,GAAoB,iBAATrrG,EACT,OAAOtgB,GAAQsgB,GAAQA,EAAO,KAGhC,IAAIogD,EAlNN,SACEkrD,EACAC,EACAC,EACAjR,GAEA,GAAIt0H,UAAUlG,OAAS,EACrB,MAAM,IAAIqf,UACR,kCAAoCnZ,UAAUlG,OAAS,YAI3D,IAAI26H,EAAavuH,OAAOm/H,GACpBG,EAAet/H,OAAOo/H,GACtBniI,EAAUmxH,GAAgB,CAAC,EAE3BxX,EAAS35G,EAAQ25G,QAAUme,GAE/B,IAAKne,EAAOhnD,MACV,MAAM,IAAIiiB,WAAW,sCAGvB,IAAI0kD,EACF3f,EAAO35G,SAAW25G,EAAO35G,QAAQq4H,sBAC/BkB,EAC6B,MAA/BD,EACI,EACAr3B,GAAUq3B,GACZjB,EAC+B,MAAjCr4H,EAAQq4H,sBACJkB,EACAt3B,GAAUjiG,EAAQq4H,uBAGxB,KAAMA,GAAyB,GAAKA,GAAyB,GAC3D,MAAM,IAAIzjD,WACR,6DAIJ,IAAIukD,EAAqBxf,EAAO35G,SAAW25G,EAAO35G,QAAQo4H,aACtDgB,EACoB,MAAtBD,EAA6B,EAAIl3B,GAAUk3B,GACzCf,EACsB,MAAxBp4H,EAAQo4H,aACJgB,EACAn3B,GAAUjiG,EAAQo4H,cAGxB,KAAMA,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAIxjD,WAAW,oDAGvB,GAAqB,KAAjBytD,EACF,MAAmB,KAAf/Q,EACKL,GAAOmR,EAAepiI,GAEtB,IAAIyT,KAAKw7G,KAIpB,IAeIx4H,EAfA6rI,EAAe,CACjBjK,sBAAuBA,EACvBD,aAAcA,EACdze,OAAQA,GAIN4oB,EAAU,CACZ,CACE9B,SAAUc,GACVtrG,IAAK2rG,GACLl/H,MAAO,IAMP0iB,EAASi9G,EAAa1vE,MAAM6uE,IAEhC,IAAK/qI,EAAI,EAAGA,EAAI2uB,EAAOzuB,OAAQF,IAAK,CAClC,IAAI0xB,EAAQ/C,EAAO3uB,IAEduJ,EAAQ0+H,sBAAwBb,GAAiB11G,IACpD21G,GAAoB31G,GAGtB,IAAIo2G,EAAiBp2G,EAAM,GACvBq6G,EAAShC,GAAQjC,GACrB,GAAIiE,EAAQ,CACV,IAAI3K,EAAc2K,EAAOt7G,MACvBoqG,EACAnpG,EACAwxF,EAAOhnD,MACP2vE,GAGF,IAAKzK,EACH,OAAO,IAAIpkH,KAAKw7G,KAGlBsT,EAAQ/kI,KAAK,CACXijI,SAAU+B,EAAO/B,SACjBxqG,IAAKusG,EAAOvsG,IACZiJ,SAAUsjG,EAAOtjG,SACjBhqC,MAAO2iI,EAAY3iI,MACnBwN,MAAO6/H,EAAQ5rI,SAGjB26H,EAAauG,EAAYtlE,IAC3B,KAAO,CASL,GAPc,OAAVpqC,EACFA,EAAQ,IACoB,MAAnBo2G,IACTp2G,EAA6BA,EAkFtBwqC,MAAM8uE,IAAuB,GAAGzgI,QAAQ0gI,GAAqB,MA9EpC,IAA9BpQ,EAAWt4H,QAAQmvB,GAGrB,OAAO,IAAI1U,KAAKw7G,KAFhBqC,EAAaA,EAAWzuH,MAAMslB,EAAMxxB,OAIxC,CACF,CAGA,GAAI26H,EAAW36H,OAAS,GAAKgrI,GAAoB7qH,KAAKw6G,GACpD,OAAO,IAAI79G,KAAKw7G,KAGlB,IAAIwT,EAAwBF,EACzB9/H,KAAI,SAASwhF,GACZ,OAAOA,EAAOw8C,QAChB,IACChxH,MAAK,SAASvM,EAAG+4B,GAChB,OAAOA,EAAI/4B,CACb,IACCjH,QAAO,SAASwkI,EAAU/9H,EAAOsyE,GAChC,OAAOA,EAAMh8E,QAAQynI,KAAc/9H,CACrC,IACCD,KAAI,SAASg+H,GACZ,OAAO8B,EACJtmI,QAAO,SAASgoF,GACf,OAAOA,EAAOw8C,WAAaA,CAC7B,IACCpsD,SACL,IACC5xE,KAAI,SAASigI,GACZ,OAAOA,EAAY,EACrB,IAEE9rG,EAAOq6F,GAAOmR,EAAepiI,GAEjC,GAAI4xG,MAAMh7E,GACR,OAAO,IAAInjB,KAAKw7G,KAMlB,IAAIoP,EAAUb,GAAgB5mG,EAAMu4F,GAAgCv4F,IAEpE,IAAKngC,EAAI,EAAGA,EAAIgsI,EAAsB9rI,OAAQF,IAAK,CACjD,IAAIwtF,EAASw+C,EAAsBhsI,GAEnC,GACEwtF,EAAO/kD,WACN+kD,EAAO/kD,SAASm/F,EAASp6C,EAAO/uF,MAAOotI,GAExC,OAAO,IAAI7uH,KAAKw7G,KAGlBoP,EAAUp6C,EAAOhuD,IAAIooG,EAASp6C,EAAO/uF,MAAOotI,EAC9C,CAEA,OAAOjE,CACT,CAgCen3G,CAAM0P,EAAMqrG,EAAU,IAAIxuH,MAIvC,OAAK6C,GAAQ0gE,IAAW3wE,GAAO2wE,EAAQirD,KAAcrrG,EAI9CogD,EAHE,IAIX,CAEA,IA8BIxX,GAAQ,CACVtgC,SA/BmB,SAAUhqC,EAAOmP,QACvB,IAARA,IAAiBA,EAAM,CAAC,GAC7B,IAAIs+H,EAAct+H,EAAIs+H,YAClBC,EAAYv+H,EAAIu+H,eAA8B,IAAdA,IAAuBA,GAAY,GACvE,IAAIv8H,EAAShC,EAAIgC,OAWjB,YATsB,IAAXA,IACTA,EAASu8H,EACTA,GAAY,GAGd1tI,EAAQ8sI,GAAY9sI,EAAOmR,GAC3Bs8H,EAAcX,GAAYW,EAAat8H,MAGlCnR,IAAUytI,KAIRhE,GAAQzpI,EAAOytI,IAAiBC,GAAa7D,GAAU7pI,EAAOytI,GACvE,EAYE3iI,QAVY,CACZ0hH,WAAW,EACXp+B,QAAQ,GASR+9B,WALe,CAAC,cAAe,YAAa,WAa1CmM,GAAQ,CACVlT,GAAI,YACJuoB,GAAI,2BACJC,GAAI,eACJC,GAAI,gBACJC,GAAI,mBACJC,GAAI,2DACJC,GAAI,4BACJC,GAAI,qBACJ32E,GAAI,qBACJ42E,GAAI,kBACJC,GAAI,qBACJC,GAAI,qBACJC,GAAI,yBACJC,GAAI,aACJC,GAAI,4BACJC,GAAI,iBACJC,GAAI,eACJC,GAAI,mBACJC,GAAI,mBACJC,GAAI,qDACJC,GAAI,qBAGFC,GAAc,CAChB1pB,GAAI,cACJuoB,GAAI,6BACJC,GAAI,iBACJC,GAAI,kBACJC,GAAI,qBACJC,GAAI,6DACJC,GAAI,8BACJC,GAAI,uBACJ32E,GAAI,uBACJ42E,GAAI,oBACJC,GAAI,uBACJC,GAAI,uBACJC,GAAI,2BACJC,GAAI,eACJC,GAAI,8BACJC,GAAI,mBACJC,GAAI,iBACJC,GAAI,qBACJC,GAAI,qBACJC,GAAI,uDACJC,GAAI,uBAGFE,GAAe,CACjB3pB,GAAI,eACJuoB,GAAI,8BACJC,GAAI,iBACJC,GAAI,mBACJC,GAAI,sBACJC,GAAI,wEACJC,GAAI,+BACJC,GAAI,wBACJ32E,GAAI,wBACJ62E,GAAI,wBACJD,GAAI,qBACJE,GAAI,wBACJC,GAAI,4BACJC,GAAI,gBACJC,GAAI,+BACJC,GAAI,oBACJC,GAAI,kBACJC,GAAI,sBACJC,GAAI,sBACJC,GAAI,kEACJC,GAAI,wBAGFG,GAAY,CACd5pB,GAAI,iBACJuoB,GAAI,gCACJC,GAAI,oBACJC,GAAI,qBACJC,GAAI,wBACJC,GAAI,0EACJC,GAAI,iCACJC,GAAI,0BACJ32E,GAAI,0BACJ42E,GAAI,uBACJC,GAAI,0BACJC,GAAI,0BACJC,GAAI,8BACJC,GAAI,kBACJC,GAAI,iCACJC,GAAI,sBACJC,GAAI,oBACJC,GAAI,wBACJC,GAAI,wBACJC,GAAI,oEACJC,GAAI,0BAGF7kG,GAAW,SAAUhqC,EAAOmP,QACjB,IAARA,IAAiBA,EAAM,CAAC,GAC7B,IAAIs1G,EAASt1G,EAAIs1G,OAEjB,OAAIpjH,MAAMC,QAAQtB,GACTA,EAAM68C,OAAM,SAAUz1C,GAAO,OAAO4iC,GAAS5iC,EAAK,CAACq9G,GAAU,IAIhEA,GAIE6T,GAAM7T,IAAW6T,GAAMlT,IAAIxjG,KAAK5hB,GAH/BH,OAAO4L,KAAK6sH,IAAOlpF,MAAK,SAAU6/F,GAAO,OAAO3W,GAAM2W,GAAKrtH,KAAK5hB,EAAQ,GAInF,EAIIkvI,GAAU,CACZllG,SAAUA,GACVmiF,WAJiB,CAAC,WAOhBgjB,GAAa,SAAUnvI,EAAOmP,QACnB,IAARA,IAAiBA,EAAM,CAAC,GAC7B,IAAIs1G,EAASt1G,EAAIs1G,OAEjB,OAAIpjH,MAAMC,QAAQtB,GACTA,EAAM68C,OAAM,SAAUz1C,GAAO,OAAO+nI,GAAW/nI,EAAK,CAACq9G,GAAU,IAIlEA,GAIEuqB,GAAUvqB,IAAWuqB,GAAU5pB,IAAIxjG,KAAK5hB,GAHvCH,OAAO4L,KAAKujI,IAAW5/F,MAAK,SAAU6/F,GAAO,OAAOD,GAAUC,GAAKrtH,KAAK5hB,EAAQ,GAI3F,EAIIu4H,GAAa,CACfvuF,SAAUmlG,GACVhjB,WAJiB,CAAC,WAOhBijB,GAAa,SAAUpvI,EAAOmP,QACnB,IAARA,IAAiBA,EAAM,CAAC,GAC7B,IAAIs1G,EAASt1G,EAAIs1G,OAEjB,OAAIpjH,MAAMC,QAAQtB,GACTA,EAAM68C,OAAM,SAAUz1C,GAAO,OAAOgoI,GAAWhoI,EAAK,CAACq9G,GAAU,IAIlEA,GAIEsqB,GAAatqB,IAAWsqB,GAAa3pB,IAAIxjG,KAAK5hB,GAH7CH,OAAO4L,KAAKsjI,IAAc3/F,MAAK,SAAU6/F,GAAO,OAAOF,GAAaE,GAAKrtH,KAAK5hB,EAAQ,GAIjG,EAIIw4H,GAAY,CACdxuF,SAAUolG,GACVjjB,WAJiB,CAAC,WAOhBkjB,GAAa,SAAUrvI,EAAOmP,QACnB,IAARA,IAAiBA,EAAM,CAAC,GAC7B,IAAIs1G,EAASt1G,EAAIs1G,OAEjB,OAAIpjH,MAAMC,QAAQtB,GACTA,EAAM68C,OAAM,SAAUz1C,GAAO,OAAOioI,GAAWjoI,EAAK,CAACq9G,GAAU,IAIlEA,GAIEqqB,GAAYrqB,IAAWqqB,GAAY1pB,IAAIxjG,KAAK5hB,GAH3CH,OAAO4L,KAAKqjI,IAAa1/F,MAAK,SAAU6/F,GAAO,OAAOH,GAAYG,GAAKrtH,KAAK5hB,EAAQ,GAI/F,EAIIy4H,GAAe,CACjBzuF,SAAUqlG,GACVljB,WAJiB,CAAC,WAoChBhiD,GAAS,CACXngC,SA9Be,SAAUhqC,EAAOmP,QACnB,IAARA,IAAiBA,EAAM,CAAC,GAC7B,IAAIs+H,EAAct+H,EAAIs+H,YAClBC,EAAYv+H,EAAIu+H,eAA8B,IAAdA,IAAuBA,GAAY,GACvE,IAAIv8H,EAAShC,EAAIgC,OAWjB,YATsB,IAAXA,IACTA,EAASu8H,EACTA,GAAY,GAGd1tI,EAAQ8sI,GAAY9sI,EAAOmR,GAC3Bs8H,EAAcX,GAAYW,EAAat8H,MAGlCnR,IAAUytI,KAIR7D,GAAS5pI,EAAOytI,IAAiBC,GAAa7D,GAAU7pI,EAAOytI,GACxE,EAWE3iI,QATc,CACd0hH,WAAW,EACXp+B,QAAQ,GAQR+9B,WALiB,CAAC,cAAe,YAAa,WAQ5CmjB,GAAa,SAAUtvI,EAAOmP,QACnB,IAARA,IAAiBA,EAAM,CAAC,GAC7B,IAAIqhE,EAAMrhE,EAAIqhE,IACV5pC,EAAMz3B,EAAIy3B,IAEd,OAAIvlC,MAAMC,QAAQtB,GACTA,EAAM68C,OAAM,SAAUz1C,GAAO,OAAOkoI,GAAWloI,EAAK,CAAEopE,IAAKA,EAAK5pC,IAAKA,GAAQ,IAG/E32B,OAAOugE,IAAQxwE,GAASiQ,OAAO22B,IAAQ5mC,CAChD,EAII04H,GAAU,CACZ1uF,SAAUslG,GACVnjB,WAJiB,CAAC,MAAO,QAkBvBwM,GAAY,CACd3uF,SAZe,SAAUhqC,EAAOmP,GAChC,IAAIs+H,EAAct+H,EAAIs+H,YAEtB,OAAO5/H,OAAO7N,KAAW6N,OAAO4/H,EAClC,EASE3iI,QARc,CACd0hH,WAAW,GAQXL,WALiB,CAAC,gBAQpB,SAASojB,GAAe1oH,GACvB,OAAOA,GAAKA,EAAEjmB,YAAcf,OAAOqB,UAAUY,eAAeC,KAAK8kB,EAAG,WAAaA,EAAW,QAAIA,CACjG,CAEA,SAAS2oH,GAAqBh5E,EAAI1E,GACjC,OAAiC0E,EAA1B1E,EAAS,CAAE/xD,QAAS,CAAC,GAAgB+xD,EAAO/xD,SAAU+xD,EAAO/xD,OACrE,CAEA,IAAI0vI,GAAiBD,IAAqB,SAAU19E,EAAQ/xD,GAO5D,SAASe,EAAQH,GAAwT,OAAtOG,EAArD,mBAAXC,QAAoD,iBAApBA,OAAOC,SAAmC,SAAiBL,GAAO,cAAcA,CAAK,EAAsB,SAAiBA,GAAO,OAAOA,GAAyB,mBAAXI,QAAyBJ,EAAIM,cAAgBF,QAAUJ,IAAQI,OAAOG,UAAY,gBAAkBP,CAAK,EAAYG,EAAQH,EAAM,CAL9Vd,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQc,QAIR,SAAsBgoD,GAGpB,KAFgC,iBAAVA,GAAsBA,aAAiBh7C,QAE9C,CACb,IAAI6hI,EAcJ,MAXEA,EADY,OAAV7mF,EACY,OAIM,YAFpB6mF,EAAc5uI,EAAQ+nD,KAEUA,EAAM5nD,aAAe4nD,EAAM5nD,YAAYa,eAAe,QACtE+mD,EAAM5nD,YAAYqB,KAElB,KAAKoC,OAAOgrI,GAIxB,IAAI5uH,UAAU,gCAAgCpc,OAAOgrI,EAAa,KAC1E,CACF,EAEA59E,EAAO/xD,QAAUA,EAAQc,QACzBixD,EAAO/xD,QAAQc,QAAUd,EAAQc,OACjC,IAEA0uI,GAAcE,IAEd,IAAIE,GAAiBH,IAAqB,SAAU19E,EAAQ/xD,GAE5DF,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQc,QAUR,SAAsByM,IACpB,EAAIsiI,EAAc/uI,SAASyM,GAC3B,IAAIuiI,EAAYviI,EAAIxB,QAAQ,SAAU,IAEtC,IAAKgkI,EAAWluH,KAAKiuH,GACnB,OAAO,EAQT,IALA,IACI3vD,EACA6vD,EACAC,EAHArxB,EAAM,EAKDp9G,EAAIsuI,EAAUpuI,OAAS,EAAGF,GAAK,EAAGA,IACzC2+E,EAAQ2vD,EAAU3rE,UAAU3iE,EAAGA,EAAI,GACnCwuI,EAAS1+G,SAAS6uD,EAAO,IAMrBy+B,GAJAqxB,IACFD,GAAU,IAEI,GACLA,EAAS,GAAK,EAKhBA,EAGTC,GAAgBA,EAGlB,QAAUrxB,EAAM,IAAO,IAAIkxB,EAC7B,EAzCA,IAAID,EAEJ,SAAgCjvI,GAAO,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CAAEE,QAASF,EAAO,CAF1EJ,CAAuBkvI,IAK3C,IAAIK,EAAa,wOAsCjBh+E,EAAO/xD,QAAUA,EAAQc,QACzBixD,EAAO/xD,QAAQc,QAAUd,EAAQc,OACjC,IAEIovI,GAAeV,GAAcI,IAI7B/W,GAAc,CAChB5uF,SAHe,SAAUhqC,GAAS,OAAOiwI,GAAapiI,OAAO7N,GAAS,GAgDpE64H,GAAe,CACjB7uF,SA3Ce,SAAUhqC,EAAOmP,QACnB,IAARA,IAAiBA,EAAM,CAAC,GAC7B,IAAIqhE,EAAMrhE,EAAIqhE,IACV5pC,EAAMz3B,EAAIy3B,IACVspG,EAAc/gI,EAAI+gI,iBAAkC,IAAhBA,IAAyBA,EAAc,MAC/E,IAAI/+H,EAAShC,EAAIgC,YAEK,IAAXA,IACTA,EAAS++H,EACTA,EAAc,MAGhB,IAAIC,EAAUrD,GAAYj/H,OAAO2iE,GAAMr/D,GACnCi/H,EAAUtD,GAAYj/H,OAAO+4B,GAAMz1B,GACnCk/H,EAAUvD,GAAYj/H,OAAO7N,GAAQmR,GAEzC,SAAKg/H,GAAYC,GAAYC,KAIT,OAAhBH,EACKzG,GAAQ4G,EAASF,IAAYvG,GAASyG,EAASD,GAGpC,OAAhBF,EACKzG,GAAQ4G,EAASF,KAAatG,GAAUwG,EAASD,IAAYxG,GAASyG,EAASD,IAGpE,OAAhBF,EACKtG,GAASyG,EAASD,KAAavG,GAAUwG,EAASF,IAAY1G,GAAQ4G,EAASF,IAGjFtG,GAAUwG,EAASD,IAAYvG,GAAUwG,EAASF,IACtDvG,GAASyG,EAASD,IAAY3G,GAAQ4G,EAASF,GACpD,EAUErlI,QARc,CACdsjF,QAAQ,GAQR+9B,WALiB,CAAC,MAAO,MAAO,cAAe,WAoB7C8I,GAAc,CAChBjrF,SAbe,SAAUhqC,EAAOmP,GAGhC,QAAS29H,GAAY9sI,EAFRmP,EAAIgC,OAGnB,EAUErG,QARc,CACdsjF,QAAQ,GAQR+9B,WALiB,CAAC,WAQhBmkB,GAAa,SAAUtwI,EAAOmP,QACnB,IAARA,IAAiBA,EAAM,CAAC,GAC7B,IAAI4pH,EAAW5pH,EAAI4pH,cAA4B,IAAbA,IAAsBA,EAAW,KACnE,IAAIjf,EAAY3qG,EAAI2qG,UAEpB,QAFkD,IAAdA,IAAuBA,EAAY,KAEnEmI,EAAkBjiH,IAAoB,KAAVA,EAC9B,OAAO,EAGT,GAAIqB,MAAMC,QAAQtB,GAChB,OAAOA,EAAM68C,OAAM,SAAUz1C,GAAO,OAAOkpI,GAAWlpI,EAAK,CAAE2xH,SAAUA,EAAUjf,UAAWA,GAAc,IAI5G,GAAyB,IAArB7pG,OAAO8oH,GACT,MAAO,UAAUn3G,KAAK5hB,GAMxB,IAFY,IAAIq5B,OAAQ,gBAAkBygF,EAAY,OADzB,MAAbif,EAAmB,IAAO,MAAQA,EAAW,KACa,yBAE9Dn3G,KAAK5hB,GACf,OAAO,EAGT,IAAIuwI,EAAcnjD,WAAWptF,GAG7B,OAAOuwI,GAAgBA,CACzB,EAIIzX,GAAU,CACZ9uF,SAAUsmG,GACVnkB,WAJiB,CAAC,WAAY,cAO5BqkB,GAAa,SAAUxwI,EAAOmP,GAChC,IAAI1N,EAAS0N,EAAI,GAEjB,GAAI9N,MAAMC,QAAQtB,GAChB,OAAOA,EAAM68C,OAAM,SAAUz1C,GAAO,OAAOopI,GAAWppI,EAAK,CAAC3F,GAAU,IAExE,IAAIgvI,EAAS5iI,OAAO7N,GAEpB,MAAO,WAAW4hB,KAAK6uH,IAAWA,EAAOhvI,SAAWwO,OAAOxO,EAC7D,EAEIu3H,GAAS,CACXhvF,SAAUwmG,IAGRE,GAAa,iCA0BbzX,GAAa,CACfjvF,SAZe,SAAU7I,EAAOhyB,GAChC,IAAIoD,EAAQpD,EAAI,GACZ4I,EAAS5I,EAAI,GAEbwhI,EAASptB,EAAYpiF,GAAOp6B,QAAO,SAAUk2D,GAAQ,OAAOyzE,GAAW9uH,KAAKq7C,EAAK36D,KAAO,IAC5F,OAAsB,IAAlBquI,EAAOlvI,QAGJmxB,QAAQ6zF,IAAIkqB,EAAOpjI,KAAI,SAAUshD,GAAS,OArB/B,SAAUoO,EAAM1qD,EAAOwF,GACzC,IAAIiX,EAAMhO,OAAOgO,KAAOhO,OAAO4vH,UAC/B,OAAO,IAAIh+G,SAAQ,SAAUC,GAC3B,IAAIg8B,EAAQ,IAAIR,MAChBQ,EAAMgiF,QAAU,WAAc,OAAOh+G,EAAQ,CAAE06F,OAAO,GAAU,EAChE1+D,EAAMiiF,OAAS,WAAc,OAAOj+G,EAAQ,CAC1C06F,MAAO1+D,EAAMt8C,QAAUtC,OAAOsC,IAAUs8C,EAAM92C,SAAW9H,OAAO8H,IAC9D,EAEJ82C,EAAM4V,IAAMz1C,EAAI0hB,gBAAgBusB,EAClC,GACF,CAU0D8zE,CAAcliF,EAAOt8C,EAAOwF,EAAS,IAC/F,GAMIi5H,GAAUxB,IAAqB,SAAU19E,EAAQ/xD,GAErDF,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQc,QAER,WACE,IAAIF,EAAMgH,UAAUlG,OAAS,QAAsBpB,IAAjBsH,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC3EmrF,EAAWnrF,UAAUlG,OAAS,EAAIkG,UAAU,QAAKtH,EAErD,IAAK,IAAIwB,KAAOixF,OACU,IAAbnyF,EAAIkB,KACblB,EAAIkB,GAAOixF,EAASjxF,IAIxB,OAAOlB,CACT,EAEAmxD,EAAO/xD,QAAUA,EAAQc,QACzBixD,EAAO/xD,QAAQc,QAAUd,EAAQc,OACjC,IAEA0uI,GAAcyB,IAEd,IAAIC,GAAiBzB,IAAqB,SAAU19E,EAAQ/xD,GAE5DF,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQc,QASR,SAAsByM,EAAKxC,GAEzB,IAAI0lE,EACA5pC,GAFJ,EAAIgpG,EAAc/uI,SAASyM,GAIF,WAArBxM,EAAQgK,IACV0lE,EAAM1lE,EAAQ0lE,KAAO,EACrB5pC,EAAM97B,EAAQ87B,MAGd4pC,EAAM7oE,UAAU,GAChBi/B,EAAMj/B,UAAU,IAGlB,IAAIo7D,EAAMmuE,UAAU5jI,GAAK9B,MAAM,SAAS/J,OAAS,EACjD,OAAOshE,GAAOyN,SAAuB,IAAR5pC,GAAuBm8B,GAAOn8B,EAC7D,EAvBA,IAAIgpG,EAEJ,SAAgCjvI,GAAO,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CAAEE,QAASF,EAAO,CAF1EJ,CAAuBkvI,IAI3C,SAAS3uI,EAAQH,GAAwT,OAAtOG,EAArD,mBAAXC,QAAoD,iBAApBA,OAAOC,SAAmC,SAAiBL,GAAO,cAAcA,CAAK,EAAsB,SAAiBA,GAAO,OAAOA,GAAyB,mBAAXI,QAAyBJ,EAAIM,cAAgBF,QAAUJ,IAAQI,OAAOG,UAAY,gBAAkBP,CAAK,EAAYG,EAAQH,EAAM,CAqB9VmxD,EAAO/xD,QAAUA,EAAQc,QACzBixD,EAAO/xD,QAAQc,QAAUd,EAAQc,OACjC,IAEA0uI,GAAc0B,IAEd,IAAIE,GAAW3B,IAAqB,SAAU19E,EAAQ/xD,GAEtDF,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQc,QAcR,SAAgByM,EAAKxC,IACnB,EAAI8kI,EAAc/uI,SAASyM,GAC3BxC,GAAU,EAAIkpH,EAAOnzH,SAASiK,EAASsmI,GAGnCtmI,EAAQumI,oBAA8C,MAAxB/jI,EAAIA,EAAI7L,OAAS,KACjD6L,EAAMA,EAAI42D,UAAU,EAAG52D,EAAI7L,OAAS,IAKtC,IAFA,IAAIo+E,EAAQvyE,EAAI9B,MAAM,KAEbjK,EAAI,EAAGA,EAAIs+E,EAAMp+E,OAAQF,IAChC,GAAIs+E,EAAMt+E,GAAGE,OAAS,GACpB,OAAO,EAIX,GAAIqJ,EAAQwmI,YAAa,CACvB,IAAIC,EAAM1xD,EAAM3zE,MAEhB,IAAK2zE,EAAMp+E,SAAW,8CAA8CmgB,KAAK2vH,GACvE,OAAO,EAIT,GAAI,wDAAwD3vH,KAAK2vH,GAC/D,OAAO,CAEX,CAEA,IAAK,IAAIvzE,EAAMwzE,EAAK,EAAGA,EAAK3xD,EAAMp+E,OAAQ+vI,IAAM,CAO9C,GANAxzE,EAAO6hB,EAAM2xD,GAET1mI,EAAQ2mI,oBACVzzE,EAAOA,EAAKlyD,QAAQ,KAAM,MAGvB,6BAA6B8V,KAAKo8C,GACrC,OAAO,EAIT,GAAI,kBAAkBp8C,KAAKo8C,GACzB,OAAO,EAGT,GAAgB,MAAZA,EAAK,IAAwC,MAA1BA,EAAKA,EAAKv8D,OAAS,GACxC,OAAO,CAEX,CAEA,OAAO,CACT,EAhEA,IAAImuI,EAAgBrvI,EAAuBkvI,IAEvCzb,EAASzzH,EAAuBywI,IAEpC,SAASzwI,EAAuBI,GAAO,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CAAEE,QAASF,EAAO,CAE9F,IAAIywI,EAAuB,CACzBE,aAAa,EACbG,mBAAmB,EACnBJ,oBAAoB,GAyDtBv/E,EAAO/xD,QAAUA,EAAQc,QACzBixD,EAAO/xD,QAAQc,QAAUd,EAAQc,OACjC,IAEI6wI,GAASnC,GAAc4B,IAEvBQ,GAASnC,IAAqB,SAAU19E,EAAQ/xD,GAEpDF,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQc,QASR,SAAS+wI,EAAKtkI,GACZ,IAAIlL,EAAUuF,UAAUlG,OAAS,QAAsBpB,IAAjBsH,UAAU,GAAmBA,UAAU,GAAK,GAIlF,IAHA,EAAIioI,EAAc/uI,SAASyM,KAC3BlL,EAAUyL,OAAOzL,IAGf,OAAOwvI,EAAKtkI,EAAK,IAAMskI,EAAKtkI,EAAK,GAC5B,GAAgB,MAAZlL,EACT,QAAKyvI,EAAUjwH,KAAKtU,IAIRA,EAAI9B,MAAM,KAAK+O,MAAK,SAAUvM,EAAG+4B,GAC3C,OAAO/4B,EAAI+4B,CACb,IACa,IAAM,IACd,GAAgB,MAAZ3kC,EAAiB,CAC1B,IAAI0vI,EAASxkI,EAAI9B,MAAM,KACnBumI,GAAqB,EAMrBC,EAA2BJ,EAAKE,EAAOA,EAAOrwI,OAAS,GAAI,GAC3DwwI,EAAyBD,EAA2B,EAAI,EAE5D,GAAIF,EAAOrwI,OAASwwI,EAClB,OAAO,EAIT,GAAY,OAAR3kI,EACF,OAAO,EACuB,OAArBA,EAAIkwD,OAAO,EAAG,IACvBs0E,EAAO1/D,QACP0/D,EAAO1/D,QACP2/D,GAAqB,GACmB,OAA/BzkI,EAAIkwD,OAAOlwD,EAAI7L,OAAS,KACjCqwI,EAAO5lI,MACP4lI,EAAO5lI,MACP6lI,GAAqB,GAGvB,IAAK,IAAIxwI,EAAI,EAAGA,EAAIuwI,EAAOrwI,SAAUF,EAGnC,GAAkB,KAAduwI,EAAOvwI,IAAaA,EAAI,GAAKA,EAAIuwI,EAAOrwI,OAAS,EAAG,CACtD,GAAIswI,EACF,OAAO,EAGTA,GAAqB,CACvB,MAAO,GAAIC,GAA4BzwI,IAAMuwI,EAAOrwI,OAAS,QAAU,IAAKywI,EAAUtwH,KAAKkwH,EAAOvwI,IAChG,OAAO,EAIX,OAAIwwI,EACKD,EAAOrwI,QAAU,EAGnBqwI,EAAOrwI,SAAWwwI,CAC3B,CAEA,OAAO,CACT,EAzEA,IAAIrC,EAEJ,SAAgCjvI,GAAO,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CAAEE,QAASF,EAAO,CAF1EJ,CAAuBkvI,IAI3C,IAAIoC,EAAY,+CACZK,EAAY,mBAsEhBpgF,EAAO/xD,QAAUA,EAAQc,QACzBixD,EAAO/xD,QAAQc,QAAUd,EAAQc,OACjC,IAEI+wI,GAAOrC,GAAcoC,IAErBQ,GAAY3C,IAAqB,SAAU19E,EAAQ/xD,GAEvDF,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQc,QAkCR,SAAiByM,EAAKxC,GAIpB,IAHA,EAAI8kI,EAAc/uI,SAASyM,GAC3BxC,GAAU,EAAIkpH,EAAOnzH,SAASiK,EAASsnI,GAEnCtnI,EAAQunI,sBAAwBvnI,EAAQwnI,mBAAoB,CAC9D,IAAIC,EAAgBjlI,EAAImwD,MAAMrrB,GAE9B,GAAImgG,EACFjlI,EAAMilI,EAAc,QACf,GAAIznI,EAAQunI,qBACjB,OAAO,CAEX,CAEA,IAAIxyD,EAAQvyE,EAAI9B,MAAM,KAClBo0E,EAASC,EAAM3zE,MACfmgD,EAAOwzB,EAAMjyE,KAAK,KAClB4kI,EAAe5yD,EAAO96E,cAE1B,GAAIgG,EAAQ2nI,6BAAgD,cAAjBD,GAAiD,mBAAjBA,GAAoC,CAU7G,IAAIE,GAFJrmF,EAAOA,EAAKvnD,eAEQ0G,MAAM,KAAK,GAE/B,KAAK,EAAImnI,EAAc9xI,SAAS6xI,EAAS5mI,QAAQ,IAAK,IAAK,CACzD0kE,IAAK,EACL5pC,IAAK,KAEL,OAAO,EAKT,IAFA,IAAIgsG,EAAcF,EAASlnI,MAAM,KAExBjK,EAAI,EAAGA,EAAIqxI,EAAYnxI,OAAQF,IACtC,IAAKsxI,EAAcjxH,KAAKgxH,EAAYrxI,IAClC,OAAO,CAGb,CAEA,KAAK,EAAIoxI,EAAc9xI,SAASwrD,EAAM,CACpCzlB,IAAK,QACA,EAAI+rG,EAAc9xI,SAAS++E,EAAQ,CACxCh5C,IAAK,MAEL,OAAO,EAGT,KAAK,EAAIksG,EAAQjyI,SAAS++E,EAAQ,CAChC0xD,YAAaxmI,EAAQwmI,cACnB,CACF,IAAKxmI,EAAQioI,gBACX,OAAO,EAGT,KAAK,EAAIC,EAAMnyI,SAAS++E,GAAS,CAC/B,IAAKA,EAAOn1E,WAAW,OAASm1E,EAAO1uC,SAAS,KAC9C,OAAO,EAGT,IAAI+hG,EAAkBrzD,EAAOpiB,OAAO,EAAGoiB,EAAOn+E,OAAS,GAEvD,GAA+B,IAA3BwxI,EAAgBxxI,UAAiB,EAAIuxI,EAAMnyI,SAASoyI,GACtD,OAAO,CAEX,CACF,CAEA,GAAgB,MAAZ5mF,EAAK,GAEP,OADAA,EAAOA,EAAK1+C,MAAM,EAAG0+C,EAAK5qD,OAAS,GAC5BqJ,EAAQooI,sBAAwBC,EAAoBvxH,KAAKyqC,GAAQ+mF,EAAgBxxH,KAAKyqC,GAM/F,IAHA,IAAIupD,EAAU9qG,EAAQooI,sBAAwBG,EAAoBC,EAC9DC,EAAalnF,EAAK7gD,MAAM,KAEnBgmI,EAAK,EAAGA,EAAK+B,EAAW9xI,OAAQ+vI,IACvC,IAAK57B,EAAQh0F,KAAK2xH,EAAW/B,IAC3B,OAAO,EAIX,OAAO,CACT,EA1HA,IAAI5B,EAAgBrvI,EAAuBkvI,IAEvCzb,EAASzzH,EAAuBywI,IAEhC2B,EAAgBpyI,EAAuB0wI,IAEvC6B,EAAUvyI,EAAuB4wI,IAEjC6B,EAAQzyI,EAAuBoxI,IAEnC,SAASpxI,EAAuBI,GAAO,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CAAEE,QAASF,EAAO,CAE9F,IAAIyxI,EAAwB,CAC1BE,oBAAoB,EACpBD,sBAAsB,EACtBa,uBAAuB,EACvB5B,aAAa,GAMXl/F,EAAc,wKACdkhG,EAAgB,yCAChBT,EAAgB,aAChBO,EAAkB,kGAClBC,EAAoB,gFACpBF,EAAsB,gLAiG1BrhF,EAAO/xD,QAAUA,EAAQc,QACzBixD,EAAO/xD,QAAQc,QAAUd,EAAQc,OACjC,IAEI2yI,GAAUjE,GAAc4C,IAI5B,IAmBI9wH,GAAQ,CACV2oB,SApBe,SAAUhqC,EAAOmP,QACnB,IAARA,IAAiBA,EAAM,CAAC,GAC7B,IAAI80G,EAAW90G,EAAI80G,cAA4B,IAAbA,IAAsBA,GAAW,GACnE,IAAI5mD,EALN,SAAkC18D,EAAK45D,GAAW,IAAIn6C,EAAS,CAAC,EAAG,IAAK,IAAI+9C,KAAKx9D,EAASd,OAAOqB,UAAUY,eAAeC,KAAKpB,EAAKw9D,KAA8B,IAAxB5D,EAAQz2D,QAAQq6D,KAAW/9C,EAAO+9C,GAAKx9D,EAAIw9D,IAAI,OAAO/9C,CAAQ,CAK3LqzH,CAAyBtkI,EAAK,CAAC,aACtCrE,EAAUuyD,EAEV4mD,IAAa5iH,MAAMC,QAAQtB,KAC7BA,EAAQ6N,OAAO7N,GAAOwL,MAAM,KAAK+B,KAAI,SAAUmmI,GAAY,OAAOA,EAASv/G,MAAQ,KAGrF,IAAIw/G,EAAmB7rI,EAAO,CAAC,EAAGgD,GAElC,OAAIzJ,MAAMC,QAAQtB,GACTA,EAAM68C,OAAM,SAAUz1C,GAAO,OAAOosI,GAAQ3lI,OAAOzG,GAAMusI,EAAmB,IAG9EH,GAAQ3lI,OAAO7N,GAAQ2zI,EAChC,GAMIC,GAAa,SAAU5zI,EAAO8K,GAChC,OAAIzJ,MAAMC,QAAQtB,GACTA,EAAM68C,OAAM,SAAUz1C,GAAO,OAAOwsI,GAAWxsI,EAAK0D,EAAU,IAGhEwpB,EAAQxpB,GAASskC,MAAK,SAAUxoC,GAErC,OAAOA,GAAQ5G,CACjB,GACF,EAEIo5H,GAAW,CACbpvF,SAAU4pG,IAUR1a,GAAW,CACblvF,SARe,WAEf,IADA,IAAIw4C,EAAO,GAAIzf,EAAMp7D,UAAUlG,OACvBshE,KAAQyf,EAAMzf,GAAQp7D,UAAWo7D,GAEzC,OAAQ6wE,GAAWlsI,WAAM,EAAQ86E,EACnC,GAWI22C,GAAM,CACRnvF,SANe,SAAU7I,EAAO0yG,GAChC,IAAI7vE,EAAQ,IAAI3qC,OAAQ,KAAQw6G,EAAWjmI,KAAK,KAAQ,KAAO,KAC/D,OAAO21G,EAAYpiF,GAAO0b,OAAM,SAAUogB,GAAQ,OAAO+G,EAAMpiD,KAAKq7C,EAAK36D,KAAO,GAClF,GAQIusD,GAAQ,CACV7kB,SAHe,SAAU7I,GAAS,OAAQ9/B,MAAMC,QAAQ6/B,GAASA,EAAQ,CAACA,IAAQ0b,OAAM,SAAUogB,GAAQ,MAAO,iCAAiCr7C,KAAKq7C,EAAK36D,KAAO,GAAI,GAcrK+2H,GAAU,CACZrvF,SATe,SAAUhqC,GACzB,OAAIqB,MAAMC,QAAQtB,GACTA,EAAM68C,OAAM,SAAUz1C,GAAO,MAAO,aAAawa,KAAK/T,OAAOzG,GAAO,IAGtE,aAAawa,KAAK/T,OAAO7N,GAClC,GAuBIs5H,GAAK,CACPtvF,SAlBe,SAAUhqC,EAAOmP,QACnB,IAARA,IAAiBA,EAAM,CAAC,GAC7B,IAAI/M,EAAU+M,EAAI/M,QAMlB,YAN4C,IAAZA,IAAqBA,EAAU,GAE3D6/G,EAAkBjiH,KACpBA,EAAQ,IAGNqB,MAAMC,QAAQtB,GACTA,EAAM68C,OAAM,SAAUz1C,GAAO,OAAOwqI,GAAKxqI,EAAKhF,EAAU,IAG1DwvI,GAAK5xI,EAAOoC,EACrB,EAME+pH,WAJiB,CAAC,YAmBhBoN,GAAa,CACfvvF,SAbe,SAAUhqC,GAKzB,OAJIiiH,EAAkBjiH,KACpBA,EAAQ,IAGNqB,MAAMC,QAAQtB,GACTA,EAAM68C,OAAM,SAAUz1C,GAAO,OAAQwqI,GAAKxqI,EAAK,KAAOsqI,GAAOtqI,EAAO,IAGtEwqI,GAAK5xI,EAAO,KAAO0xI,GAAO1xI,EACnC,GAaIunC,GAAK,CACPyC,SARe,SAAUhqC,EAAOmP,GAIhC,YAHa,IAARA,IAAiBA,EAAM,IAGrBnP,IAFKmP,EAAI,EAGlB,GAaI2kI,GAAS,CACX9pG,SARe,SAAUhqC,EAAOmP,GAIhC,YAHa,IAARA,IAAiBA,EAAM,IAGrBnP,IAFKmP,EAAI,EAGlB,GA0CI1N,GAAS,CACXuoC,SArBe,SAAUhqC,EAAOmP,GAChC,IAAI1N,EAAS0N,EAAI,GACby3B,EAAMz3B,EAAI,GAEd,YAF+B,IAARy3B,IAAiBA,OAAMvmC,IAE1C4hH,EAAkBjiH,KAItByB,EAASwO,OAAOxO,GACK,iBAAVzB,IACTA,EAAQ6N,OAAO7N,IAGZA,EAAMyB,SACTzB,EAAQs0B,EAAQt0B,IAzBN,SAAUA,EAAOyB,EAAQmlC,GACrC,YAAYvmC,IAARumC,EACK5mC,EAAMyB,SAAWA,GAI1BmlC,EAAM32B,OAAO22B,GAEN5mC,EAAMyB,QAAUA,GAAUzB,EAAMyB,QAAUmlC,EACnD,CAmBSmtG,CAAQ/zI,EAAOyB,EAAQmlC,GAChC,GAMIotG,GAAa,SAAUh0I,EAAOmP,GAChC,IAAI1N,EAAS0N,EAAI,GAEjB,OAAI8yG,EAAkBjiH,GACbyB,GAAU,EAGfJ,MAAMC,QAAQtB,GACTA,EAAM68C,OAAM,SAAUz1C,GAAO,OAAO4sI,GAAW5sI,EAAK,CAAC3F,GAAU,IAGjEoM,OAAO7N,GAAOyB,QAAUA,CACjC,EAEImlC,GAAM,CACRoD,SAAUgqG,IAGRC,GAAa,SAAUj0I,EAAOmP,GAChC,IAAIy3B,EAAMz3B,EAAI,GAEd,OAAI8yG,EAAkBjiH,IAAoB,KAAVA,IAI5BqB,MAAMC,QAAQtB,GACTA,EAAMyB,OAAS,GAAKzB,EAAM68C,OAAM,SAAUz1C,GAAO,OAAO6sI,GAAW7sI,EAAK,CAACw/B,GAAO,IAGlF32B,OAAOjQ,IAAU4mC,EAC1B,EAEI4yF,GAAY,CACdxvF,SAAUiqG,IAQRxa,GAAQ,CACVzvF,SANe,SAAU7I,EAAOs4F,GAChC,IAAIz1D,EAAQ,IAAI3qC,OAASogG,EAAM7rH,KAAK,KAAK9B,QAAQ,IAAK,MAAS,IAAM,KACrE,OAAOy3G,EAAYpiF,GAAO0b,OAAM,SAAUogB,GAAQ,OAAO+G,EAAMpiD,KAAKq7C,EAAKx6D,KAAO,GAClF,GAMIyxI,GAAa,SAAUl0I,EAAOmP,GAChC,IAAI1N,EAAS0N,EAAI,GAEjB,OAAI8yG,EAAkBjiH,KAIlBqB,MAAMC,QAAQtB,GACTA,EAAM68C,OAAM,SAAUz1C,GAAO,OAAO8sI,GAAW9sI,EAAK,CAAC3F,GAAU,IAGjEoM,OAAO7N,GAAOyB,QAAUA,EACjC,EAEI+uE,GAAM,CACRxmC,SAAUkqG,IAGRC,GAAa,SAAUn0I,EAAOmP,GAChC,IAAIqhE,EAAMrhE,EAAI,GAEd,OAAI8yG,EAAkBjiH,IAAoB,KAAVA,IAI5BqB,MAAMC,QAAQtB,GACTA,EAAMyB,OAAS,GAAKzB,EAAM68C,OAAM,SAAUz1C,GAAO,OAAO+sI,GAAW/sI,EAAK,CAACopE,GAAO,IAGlFvgE,OAAOjQ,IAAUwwE,EAC1B,EAEIkpD,GAAY,CACd1vF,SAAUmqG,IAGRvF,GAAK,kBACLxpB,GAAK,WAgBLn+E,GAAU,CACZ+C,SAfe,SAAUhqC,GACzB,IAAIo0I,EAAY,SAAUhtI,GACxB,IAAIitI,EAAWxmI,OAAOzG,GAEtB,OAAOg+G,GAAGxjG,KAAKyyH,IAAazF,GAAGhtH,KAAKyyH,EACtC,EAEA,OAAIhzI,MAAMC,QAAQtB,GACTA,EAAM68C,MAAMu3F,GAGdA,EAAUp0I,EACnB,GAMIs0I,GAAa,SAAUt0I,EAAOmP,GAChC,IAAI07G,EAAa17G,EAAI07G,WAMrB,MAJ0B,iBAAfA,IACTA,EAAa,IAAIxxF,OAAOwxF,IAGtBxpH,MAAMC,QAAQtB,GACTA,EAAM68C,OAAM,SAAUz1C,GAAO,OAAOktI,GAAWltI,EAAK,CAAEyjH,WAAYA,GAAe,IAGnFA,EAAWjpG,KAAK/T,OAAO7N,GAChC,EAIIgkE,GAAQ,CACVh6B,SAAUsqG,GACVnoB,WAJiB,CAAC,eAuBhB9hG,GAAW,CACb2f,SAjBe,SAAUhqC,EAAOmP,QACnB,IAARA,IAAiBA,EAAM,IAC5B,IAAIolI,EAAkBplI,EAAI,GAE1B,YAFuD,IAApBolI,IAA6BA,GAAkB,IAE9EtyB,EAAkBjiH,KAAUwjH,EAAaxjH,OAK/B,IAAVA,IAAmBu0I,MAId1mI,OAAO7N,GAAOm0B,OAAO1yB,OAChC,GAuCIk4H,GAAc,CAChB3vF,SAlCe,SAAUhqC,EAAOmP,QACnB,IAARA,IAAiBA,EAAM,IAC5B,IAAIqlI,EAAgBrlI,EAAI,GAGpBkb,EAFelb,EAAIxB,MAAM,GAEDioB,SAAS/nB,OAAO2mI,GAAergH,QAE3D,IAAK9J,EACH,MAAO,CACLkjG,OAAO,EACPvlH,KAAM,CACJqiB,SAAUA,IAKhB,IAAImjG,EAAWhK,EAAaxjH,IAAU,EAAC,EAAO,UAAMK,GAAWu1B,SAAS51B,GAIxE,MAAO,CACLutH,QAHFC,EAAUA,IAAY3/G,OAAO7N,GAAOm0B,OAAO1yB,QAIzCuG,KAAM,CACJqiB,SAAUA,GAGhB,EASEvf,QAPc,CACd0hH,WAAW,EACXF,kBAAkB,IAkBhBnnC,GAAO,CACTn7C,SAXe,SAAU7I,EAAOhyB,GAChC,IAAIg2E,EAAOh2E,EAAI,GAEf,GAAIutG,MAAMv3B,GACR,OAAO,EAET,IAAIsvD,EAAuB,KAAfxkI,OAAOk1E,GACnB,OAAOo+B,EAAYpiF,GAAO0b,OAAM,SAAUogB,GAAQ,OAAOA,EAAKkoB,MAAQsvD,CAAO,GAC/E,GAMIC,GAAUlF,IAAqB,SAAU19E,EAAQ/xD,GAErDF,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQc,QAwCR,SAAemoB,EAAKle,GAGlB,IAFA,EAAI8kI,EAAc/uI,SAASmoB,IAEtBA,GAAOA,EAAIvnB,QAAU,MAAQ,SAASmgB,KAAKoH,GAC9C,OAAO,EAGT,GAA+B,IAA3BA,EAAIllB,QAAQ,WACd,OAAO,EAIT,IAAI83D,EAAUE,EAAM8B,EAAM7B,EAAUC,EAAM24E,EAAUnpI,EAAOopI,EAO3D,GARA9pI,GAAU,EAAIkpH,EAAOnzH,SAASiK,EAAS+pI,GAEvCrpI,EAAQwd,EAAIxd,MAAM,KAClBwd,EAAMxd,EAAM4mE,QACZ5mE,EAAQwd,EAAIxd,MAAM,KAClBwd,EAAMxd,EAAM4mE,QACZ5mE,EAAQwd,EAAIxd,MAAM,OAEdA,EAAM/J,OAAS,GAGjB,GAFAm6D,EAAWpwD,EAAM4mE,QAAQttE,cAErBgG,EAAQgqI,yBAAmE,IAAzChqI,EAAQiqI,UAAUjxI,QAAQ83D,GAC9D,OAAO,MAEJ,IAAI9wD,EAAQkqI,iBACjB,OAAO,EACF,GAAyB,OAArBhsH,EAAIw0C,OAAO,EAAG,GAAa,CACpC,IAAK1yD,EAAQmqI,6BACX,OAAO,EAGTzpI,EAAM,GAAKwd,EAAIw0C,OAAO,EACxB,EAIA,GAFAx0C,EAAMxd,EAAMoC,KAAK,OAEL,KAARob,EACF,OAAO,EAMT,GAHAxd,EAAQwd,EAAIxd,MAAM,KAClBwd,EAAMxd,EAAM4mE,QAEA,KAARppD,IAAele,EAAQoqI,aACzB,OAAO,EAKT,GAFA1pI,EAAQwd,EAAIxd,MAAM,KAEdA,EAAM/J,OAAS,EAAG,CACpB,GAAIqJ,EAAQqqI,cACV,OAAO,EAKT,IAFAr5E,EAAOtwD,EAAM4mE,SAEJtuE,QAAQ,MAAQ,GAAKg4D,EAAKtwD,MAAM,KAAK/J,OAAS,EACrD,OAAO,CAEX,CAEAs6D,EAAWvwD,EAAMoC,KAAK,KACtB+mI,EAAW,KACXC,EAAO,KACP,IAAIQ,EAAar5E,EAAS0B,MAAM43E,GAE5BD,GACFx3E,EAAO,GACPg3E,EAAOQ,EAAW,GAClBT,EAAWS,EAAW,IAAM,OAG5Bx3E,GADApyD,EAAQuwD,EAASvwD,MAAM,MACV4mE,QAET5mE,EAAM/J,SACRkzI,EAAWnpI,EAAMoC,KAAK,OAI1B,GAAiB,OAAb+mI,IACF34E,EAAO3qC,SAASsjH,EAAU,KAErB,WAAW/yH,KAAK+yH,IAAa34E,GAAQ,GAAKA,EAAO,OACpD,OAAO,EAIX,MAAK,EAAIg3E,EAAMnyI,SAAS+8D,KAAU,EAAIk1E,EAAQjyI,SAAS+8D,EAAM9yD,IAAc8pI,IAAS,EAAI5B,EAAMnyI,SAAS+zI,EAAM,IAC3G,OAAO,EAKT,GAFAh3E,EAAOA,GAAQg3E,EAEX9pI,EAAQwqI,iBAAmBC,EAAU33E,EAAM9yD,EAAQwqI,gBACrD,OAAO,EAGT,GAAIxqI,EAAQ0qI,gBAAkBD,EAAU33E,EAAM9yD,EAAQ0qI,gBACpD,OAAO,EAGT,OAAO,CACT,EA7IA,IAAI5F,EAAgBrvI,EAAuBkvI,IAEvCqD,EAAUvyI,EAAuB4wI,IAEjC6B,EAAQzyI,EAAuBoxI,IAE/B3d,EAASzzH,EAAuBywI,IAEpC,SAASzwI,EAAuBI,GAAO,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CAAEE,QAASF,EAAO,CAE9F,IAAIk0I,EAAsB,CACxBE,UAAW,CAAC,OAAQ,QAAS,OAC7BzD,aAAa,EACb0D,kBAAkB,EAClBE,cAAc,EACdJ,wBAAwB,EACxBrD,mBAAmB,EACnBJ,oBAAoB,EACpB4D,8BAA8B,GAE5BI,EAAe,+BAEnB,SAAS53D,EAAS98E,GAChB,MAA+C,oBAAxCd,OAAOqB,UAAU0wC,SAAS7vC,KAAKpB,EACxC,CAEA,SAAS40I,EAAU33E,EAAM9tB,GACvB,IAAK,IAAIvuC,EAAI,EAAGA,EAAIuuC,EAAQruC,OAAQF,IAAK,CACvC,IAAIk8D,EAAQ3tB,EAAQvuC,GAEpB,GAAIq8D,IAASH,GAASggB,EAAShgB,IAAUA,EAAM77C,KAAKg8C,GAClD,OAAO,CAEX,CAEA,OAAO,CACT,CA2GA9L,EAAO/xD,QAAUA,EAAQc,QACzBixD,EAAO/xD,QAAQc,QAAUd,EAAQc,OACjC,IAEI40I,GAAQlG,GAAcmF,IAkBtB1rH,GAAM,CACRghB,SAjBe,SAAUhqC,EAAO8K,QACf,IAAZA,IAAqBA,EAAU,CAAC,GAEjCm3G,EAAkBjiH,KACpBA,EAAQ,IAGV,IAAI2zI,EAAmB7rI,EAAO,CAAC,EAAGgD,GAElC,OAAIzJ,MAAMC,QAAQtB,GACTA,EAAM68C,OAAM,SAAUz1C,GAAO,OAAOquI,GAAMruI,EAAKusI,EAAmB,IAGpE8B,GAAMz1I,EAAO2zI,EACtB,GAQIzb,GAAqBr4H,OAAO61I,OAAO,CACrCprE,MAAOA,GACPiuD,WAAYA,GACZC,UAAWA,GACXC,aAAcA,GACdH,MAAO4W,GACP/kE,OAAQA,GACRuuD,QAASA,GACTC,UAAWA,GACXC,YAAaA,GACbC,aAAcA,GACd5D,YAAaA,GACb6D,QAASA,GACTE,OAAQA,GACRC,WAAYA,GACZ53G,MAAOA,GACP83G,IAAKA,GACLtqE,MAAOA,GACPuqE,SAAUA,GACVC,QAASA,GACT53H,OAAQA,GACR63H,GAAIA,GACJC,WAAYA,GACZua,OAAQA,GACRvsG,GAAIA,GACJX,IAAKA,GACL4yF,UAAWA,GACXC,MAAOA,GACPjpD,IAAKA,GACLkpD,UAAWA,GACXR,SAAUA,GACVjyF,QAASA,GACT+8B,MAAOA,GACP35C,SAAUA,GACVsvG,YAAaA,GACbx0C,KAAMA,GACNn8D,IAAKA,KAsBH2sH,GAAU,SAAUzzB,EAAKC,GAC3B,IAAIuP,EAAS,CACXjE,SAAU,SAAUvL,EAAKC,GAAO,OAAOD,GAAOC,CAAK,EACnDuL,MAAO,SAAUxL,EAAKC,GAAO,OAAOD,GAAOC,CAAK,EAChDkL,QAAS,SAAUnL,EAAKC,GAAO,OAAOD,GAAOC,CAAK,EAClDmL,UAAW,SAAUpL,EAAKC,GAAO,OAAOD,GAAOC,CAAK,EACpDoL,MAAO,SAAUrL,EAAKC,GAAO,OAAOD,GAAOC,CAAK,EAChDqL,QAAS,SAAUtL,EAAKC,GAAO,OAAOD,GAAOC,CAAK,EAClDnsC,QAAS,SAAUksC,EAAKC,GAAO,OAAOD,GAAOC,CAAK,EAClD93F,SAAU,SAAU63F,EAAKC,GAAO,OAAOD,GAAOC,CAAK,EACnD4L,UAAW,SAAU7L,EAAKC,GAAO,OAAOD,GAAOC,CAAK,GAGtD,OAAOtiH,OAAO4L,KAAKimH,GAAQtlH,QAAO,SAAUg2G,EAAOjiC,GAGjD,OAFAiiC,EAAMjiC,GAAQuxC,EAAOvxC,GAAM+hC,EAAI/hC,GAAOgiC,EAAIhiC,IAEnCiiC,CACT,GAAG,CAAC,EACN,EAEIwzB,GAAW,SAAUrvB,EAAOn8G,GAG9B,YAFc,IAATA,IAAkBA,GAAO,GAEvBvK,OAAO4L,KAAK86G,GAAOn6G,QAAO,SAAUg2G,EAAOxyG,GAChD,IAAKwyG,EAEH,OADAA,EAAQt6G,EAAO,CAAC,EAAGy+G,EAAM32G,IAK3B,IAAIimI,EAAiC,IAAvBjmI,EAAM9L,QAAQ,KAC5B,OAAIsG,GAAQyrI,EACHF,GAAQC,GAASrvB,EAAM32G,IAASwyG,IAC7Bh4G,GAAQyrI,EACXzzB,EAGTA,EAAQuzB,GAAQvzB,EAAOmE,EAAM32G,GAG/B,GAAG,KACL,EAuDI+Y,GAAa,KAEbmtH,GAAmB,EAEnBC,GAAqB,CACvBrjB,cAAc,EACdnK,OAAQ,CACNytB,cAAe,CACbt0I,KAAM,gBACNb,QAAS,WAKP,OAJKkC,KAAK8sH,OAAOzjG,QAAQ4pH,gBACvBjzI,KAAK8sH,OAAOzjG,QAAQ4pH,cAkcrB,CACLC,KAAM,CAAC,EACPC,UAAW,SAAoBntB,GAC7BhmH,KAAKkzI,KAAKltB,EAAIotB,KAAOptB,CACvB,EACAqtB,YAAa,SAAsBrtB,UAC1BhmH,KAAKkzI,KAAKltB,EAAIotB,IACvB,IAtcWpzI,KAAK8sH,OAAOzjG,QAAQ4pH,aAC7B,IAGJzzI,MAAO,CACL4zI,IAAK,CACH1zI,KAAM,CAACoL,OAAQoC,QACfpP,QAAS,WAGP,MAAQ,WAFRi1I,EAGF,GAEFxzI,KAAM,CACJG,KAAMoL,OACNhN,QAAS,MAEX27B,KAAM,CACJ/5B,KAAM,CAACoL,OAAQ9I,UACflE,QAAS,WACP,OAAOooH,IAAYzsF,IACrB,GAEF8rF,OAAQ,CACN7lH,KAAMpB,MACN2oC,SAAU,WAMR,OAAO,CACT,EACAnpC,QAAS,WACP,IAAIynH,EAASW,IAAYX,OACzB,MAAsB,iBAAXA,EACFA,EAAO98G,MAAM,KAGf88G,CACT,GAEF3/D,MAAO,CACLlmD,KAAM,CAAC5C,OAAQgO,QACfhN,QAAS,MAEXyhB,UAAW,CACT7f,KAAMC,QACN7B,SAAS,GAEXsqH,QAAS,CACP1oH,KAAMC,QACN7B,SAAS,GAEX4pH,MAAO,CACLhoH,KAAMC,QACN7B,QAAS,WAAc,OAAOooH,IAAYT,QAAU,GAEtDvmG,SAAU,CACRxf,KAAMwN,OACNpP,QAAS,WAAc,OAAOooH,IAAY/V,OAAS,CAAG,GAExD5pG,IAAK,CACH7G,KAAMoL,OACNhN,QAAS,QAEXw1I,KAAM,CACJ5zI,KAAMC,QACN7B,SAAS,IAGb4E,MAAO,CACLkjD,MAAO,CACLv+C,MAAM,EACNmY,QAAS,SAAkBnb,EAAKob,GAC9Bzf,KAAKuzI,kBAAoBh6B,EAAQl1G,EAAKob,EACxC,IAGJxa,KAAM,WAAc,MAAO,CACzBgQ,SAAU,GACVhY,WAAOK,EACPk2I,aAAa,EACbnrB,kBAAc/qH,EACd+hH,MAtnUmC,CACrCkL,WAAW,EACXD,SAAS,EACTK,OAAO,EACPD,UAAU,EACVF,MAAO,KACPC,QAAS,KACTO,WAAW,EACX/3C,SAAS,EACT3rD,UAAU,EACV2jG,SAAS,GA6mUP+G,YAAa,CAAC,EACdnH,eAAe,EACf4oB,eAAe,EACf9uH,GAAI,KACF,EACJ6F,SAAU,CACRnM,QAAS,WACP,OAAOre,KAAKq/G,MAAMmL,KACpB,EACAkpB,UAAW,WACT,IAAIpwB,EAAStjH,KAET4lD,EAAQi6D,EAAe7/G,KAAK4lD,OAEhC,OAAO9oD,OAAO4L,KAAKk9C,GAAO5hD,OAAOklH,GAAcM,cAAch/G,KAAI,SAAUq8D,GACzE,IAAI8sE,EAAU/tF,EAAMihB,GAAM,GAG1B,OAFA+sE,GAAmBtwB,EAAQqwB,GAEpBA,CACT,GACF,EACAE,iBAAkB,WAChB,IAAIvwB,EAAStjH,KAGTyrB,EADMqoH,GAAmB9zI,MAChByrB,GAEb,OAAOs+F,GAAgBt+F,GAAMzrB,KAAKulH,QAAU,IAAI/6G,KAAI,SAAUhG,GAC5D,MAAU,UAANA,EACK8+G,EAAOywB,gBAGTvvI,CACT,GACF,EACA6mH,WAAY,WACV,IAAIzlE,EAAQi6D,EAAe7/G,KAAK4lD,OAC5BilE,EAAgB7qH,KAAK6qH,cAErBQ,EAAazlE,EAAMt+B,UAAYujG,EAGnC,OAFA7qH,KAAKq/G,MAAM/3F,SAAW+jG,EAEfA,CACT,EACAhG,QAAS,WACP,IAAI/B,EAAStjH,KAETg0I,EAAQ9tB,IAAYZ,WACxB,OAAOxoH,OAAO4L,KAAK1I,KAAKq/G,OAAOh2G,QAAO,SAAUg8G,EAASjoC,GACvD,IAAIgjC,EAAa4zB,GAASA,EAAM52D,IAAUA,EAC1C,OAAI8hC,EAAkBoE,EAAOjE,MAAMjiC,KAI/BgjC,IACFiF,EAAQjF,GAAakD,EAAOjE,MAAMjiC,IAJ3BioC,CAQX,GAAG,CAAC,EACN,GAEFxlH,OAAQ,SAAiBV,GACvB,IAAImkH,EAAStjH,KAEbA,KAAKi0I,gBACL,IAAIjuB,EAAMkuB,GAAoBl0I,MAG1Bc,EAAOd,KAAKm0I,aAAar2I,QAE7B,IAAKoiH,EAAWp/G,GAKd,OAAO3B,EAAEa,KAAKuG,IAAKvG,KAAKS,OAAO3C,SAGjC,IAAIstE,EAAQtqE,EAAKklH,GAMjB,OAJAO,EAAcn7C,GAAOxnE,SAAQ,SAAUkiD,GACrCsuF,GAAap1I,KAAKskH,EAAQx9D,EAC5B,IAEO9lD,KAAKszI,KAAOlsB,EAAiBjoH,EAAGisE,GAASjsE,EAAEa,KAAKuG,IAAK6kE,EAC9D,EACAlrE,cAAe,WAEbF,KAAKizI,cAAcI,YAAYrzI,KACjC,EACAq0I,UAAW,WACTr0I,KAAKizI,cAAcE,UAAUnzI,MAC7BA,KAAKyzI,eAAgB,CACvB,EACAa,YAAa,WACXt0I,KAAKizI,cAAcI,YAAYrzI,MAC/BA,KAAKyzI,eAAgB,CACvB,EACA5wI,QAAS,CACP6pH,SAAU,SAAmBrN,GAC3B,IAAIiE,EAAStjH,KAEblD,OAAO4L,KAAK22G,GAAOz7G,SAAQ,SAAUw5E,GACnCkmC,EAAOjE,MAAMjiC,GAAQiiC,EAAMjiC,EAC7B,GACF,EACAm3D,UAAW,SAAoB/vI,GAC7B,IAAIvH,EAwFV,SAA2BA,GACzB,GAAI2sH,GAAQ3sH,GACV,MAA6B,SAAtBA,EAAMogB,OAAO3d,KAAkB6xB,EAAQt0B,EAAMogB,OAAO+gB,OAASnhC,EAAMogB,OAAOpgB,MAGnF,OAAOA,CACT,CA9FkBu3I,CAAiBhwI,GAC7BxE,KAAK/C,MAAQA,EACb+C,KAAKq/G,MAAM4L,QAAUjrH,KAAKqoH,eAAiBprH,CAC7C,EACA2pB,MAAO,WACL5mB,KAAKiV,SAAW,GAChBjV,KAAKy0I,mBAAqB,KAC1Bz0I,KAAKqoH,aAAeroH,KAAK/C,MACzB,IAAIoiH,EA3uU6B,CACrCkL,WAAW,EACXD,SAAS,EACTK,OAAO,EACPD,UAAU,EACVF,MAAO,KACPC,QAAS,KACTO,WAAW,EACX/3C,SAAS,EACT3rD,UAAU,EACV2jG,SAAS,GAkuULjrH,KAAK0sH,SAASrN,EAChB,EACAp4E,SAAU,WAGR,IAFA,IAAIq8E,EAAStjH,KACTy/E,EAAO,GAAIzf,EAAMp7D,UAAUlG,OACvBshE,KAAQyf,EAAMzf,GAAQp7D,UAAWo7D,GAMzC,OAJIyf,EAAK/gF,OAAS,GAChBsB,KAAKu0I,UAAU90D,EAAK,IAGfz/E,KAAK00I,iBAAiB5uH,MAAK,SAAU4C,GAG1C,OAFA46F,EAAOqxB,YAAYjsH,GAEZA,CACT,GACF,EACAgsH,eAAgB,WACd,IA6LuB1uB,EACvB4uB,EA9LItxB,EAAStjH,KAIb,OAFAA,KAAK0sH,SAAS,CAAEz5C,SAAS,IAElBrtD,GAAW0pG,OAAOtvH,KAAK/C,MAAO+C,KAAK4lD,MAAO,CAC/CrmD,KAAMS,KAAKT,KACXkQ,QAuLqBu2G,EAvLMhmH,KAwL7B40I,EAAY5uB,EAAIitB,cAAcC,KAE3BltB,EAAI0tB,UAAUrqI,QAAO,SAAUuyE,EAAK+3D,GACzC,OAAKiB,EAAUjB,IAIf/3D,EAAI+3D,GAAWiB,EAAUjB,GAAS12I,MAE3B2+E,GALEA,CAMX,GAAG,CAAC,IAjME8rC,MAAO1nH,KAAK0nH,QACX5hG,MAAK,SAAU4C,GAMhB,OALA46F,EAAOoJ,SAAS,CAAEz5C,SAAS,IACtBqwC,EAAO+H,YACV/H,EAAOoJ,SAAS,CAAElC,MAAO9hG,EAAO8hG,MAAOC,SAAU/hG,EAAO8hG,QAGnD9hG,CACT,GACF,EACAisH,YAAa,SAAsBvoI,GACjC,IAAImc,EAASnc,EAAImc,OACbypG,EAAc5lH,EAAI4lH,YAEtBhyH,KAAKiV,SAAWsT,EAChBvoB,KAAKgyH,YAAcjtH,EAAO,CAAC,EAAGitH,GAC9BhyH,KAAK0sH,SAAS,CACZlC,OAAQjiG,EAAO7pB,OACfusH,QAASjrH,KAAK/C,QAAU+C,KAAKqoH,aAC7BoC,UAAWliG,EAAO7pB,OAClBssH,WAAW,GAEf,EACAipB,cAAe,WACRruH,KACHA,GAAa6pG,MAAkB,IAAIY,GAAU,KAAM,CAAE5K,SAAUS,IAAYT,YA2KnF,SAAqCO,GAE/B9G,EAAkB8G,EAAIrhG,KAAOqhG,EAAIrhG,KAAOqhG,EAAIotB,MAC9CptB,EAAIrhG,GAAKouH,GACTA,MAGF,IAAIpuH,EAAKqhG,EAAIrhG,GACTyuH,EAAMptB,EAAIotB,IAEd,GAAIptB,EAAIytB,eAAkB9uH,IAAOyuH,GAAOptB,EAAIitB,cAAcC,KAAKvuH,GAC7D,OAIEA,IAAOyuH,GAAOptB,EAAIitB,cAAcC,KAAKvuH,KAAQqhG,GAC/CA,EAAIitB,cAAcI,YAAY,CAAED,IAAKzuH,IAGvCqhG,EAAIitB,cAAcE,UAAUntB,GAC5BA,EAAIrhG,GAAKyuH,CACX,CA7LMyB,CAA2B70I,KAC7B,IAIJ,SAASk0I,GAAqBluB,GAC5B,MAAO,CACLz9F,OAAQy9F,EAAI/wG,SACZoqG,MAAO2G,EAAI3G,MACXgG,QAASW,EAAIX,QACbmF,MAAOxE,EAAI3nG,QACX2zG,YAAahM,EAAIgM,YACjBprG,MAAO,WAAc,OAAOo/F,EAAIp/F,OAAS,EACzCqgB,SAAU,WAER,IADA,IAAIw4C,EAAO,GAAIzf,EAAMp7D,UAAUlG,OACvBshE,KAAQyf,EAAMzf,GAAQp7D,UAAWo7D,GAEzC,OAAOgmD,EAAI/+E,SAAStiC,MAAMqhH,EAAKvmC,EACnC,EACEimC,KAAM,CACJ,eAAgBM,EAAI3G,MAAMoL,QAAU,OAAS,QAC7C,gBAAiBzE,EAAIqF,WAAa,OAAS,SAGjD,CAqCA,SAASyoB,GAAoB9tB,GAG3B,OAFc9F,EAAW8F,EAAIvsF,MAAQusF,EAAIvsF,KAAO46F,GAAMrO,EAAIvsF,OAE3C,CACblR,OAAQy9F,EAAI/wG,SACZhY,MAAO+oH,EAAI/oH,MACXoiH,MAAO2G,EAAI3G,OAEf,CAEA,SAASy1B,GAAgBzoI,GAClBrM,KAAKwzI,cACRxzI,KAAKqoH,aAAeh8G,EAAMpP,OAG5B,IAAI83I,EAvCN,SAAyB/uB,EAAK35G,GAE5B,QAAK25G,EAAIgvB,mBAAoBhvB,EAAIzmG,YAK7BymG,EAAI/oH,QAAUoP,EAAMpP,SAKpB+oH,EAAIutB,mBAKHvtB,EAAIwtB,kBAA+Bl2I,IAAhB+O,EAAMpP,KAKhC,CAiBoBg4I,CAAej1I,KAAMqM,GACvCrM,KAAKuzI,kBAAmB,EACxBvzI,KAAK/C,MAAQoP,EAAMpP,MACnB+C,KAAKg1I,kBAAmB,EAEnBD,GAIL/0I,KAAK00I,iBAAiB5uH,KAAK9lB,KAAKuf,WAAavf,KAAKq/G,MAAM2L,UAAYhrH,KAAK20I,YAAc,SAAU7wH,GAAK,OAAOA,CAAG,EAClH,CAGA,SAASoxH,GAAsBlvB,GAC7B,IAUImvB,EAAanvB,EAAIovB,YACjB37G,EAAOq6G,GAAmB9tB,GA2B9B,OAxBKmvB,GAAcnvB,EAAIqvB,eAAiBrvB,EAAI9mG,WAC1Ci2H,EAAaj2H,GACX,WACE8mG,EAAI7gH,WAAU,WACZ,IAAI0mH,EAAiB7F,EAAI0uB,iBAEzB1uB,EAAIyuB,mBAAqB5oB,EACzBA,EAAe/lG,MAAK,SAAU4C,GACxBmjG,IAAmB7F,EAAIyuB,qBACzBzuB,EAAI2uB,YAAYjsH,GAChBs9F,EAAIyuB,mBAAqB,KAE7B,GACF,GACF,GACAh7G,EAAKva,UAAY8mG,EAAI9mG,UAIvB8mG,EAAIovB,YAAcD,EAElBnvB,EAAIqvB,aAAervB,EAAI9mG,UAGlB,CAAEmuG,QAtCK,SAAU7oH,GACtBwhH,EAAIuuB,UAAU/vI,GACdwhH,EAAI0G,SAAS,CAAE/B,OAAO,EAAMD,UAAU,GACxC,EAmC2ByC,OAhCd,WACXnH,EAAI0G,SAAS,CAAEpC,SAAS,EAAMC,WAAW,GAC3C,EA8B2C4qB,WAAYA,EACzD,CAGA,SAASf,GAAc3tB,GACrB,IAAIp6G,EAAQg6G,EAAUI,GAEtBzmH,KAAK+zI,gBAAkB/zI,KAAK+zI,iBAAmB9sB,EAAkBR,EAAMp6G,GAEvEyoI,GAAe91I,KAAKgB,KAAMqM,GAE1B,IAAID,EAAM8oI,GAAqBl1I,MAC3BqtH,EAAUjhH,EAAIihH,QACdF,EAAS/gH,EAAI+gH,OACbgoB,EAAa/oI,EAAI+oI,WACrBruB,EAAiBL,EAAMzmH,KAAK+zI,gBAAiB1mB,GAC7CvG,EAAiBL,EAAM,OAAQ0G,GAG/BntH,KAAK6zI,iBAAiBjwI,SAAQ,SAAU6a,GACtCqoG,EAAiBL,EAAMhoG,EAAK02H,EAC9B,IAEAn1I,KAAKwzI,aAAc,CACrB,CAmDA,SAASI,GAAoB5tB,EAAK2tB,EAAS2B,QACtB,IAAdA,IAAuBA,GAAY,GAExC,IAAIV,EAAY5uB,EAAIitB,cAAcC,KAKlC,GAJKltB,EAAIuvB,eACPvvB,EAAIuvB,aAAe,CAAC,IAGjBX,EAAUjB,IAAY2B,EACzB,OAAOtvB,EAAIsH,MAAM,gBAAgB,WAC/BsmB,GAAmB5tB,EAAK2tB,GAAS,EACnC,KAGGzzB,EAAW8F,EAAIuvB,aAAa5B,KAAaiB,EAAUjB,KACtD3tB,EAAIuvB,aAAa5B,GAAWiB,EAAUjB,GAASzxI,OAAO,SAAS,WACzD8jH,EAAI3G,MAAM2L,YACZhF,EAAIutB,kBAAmB,EACvBvtB,EAAI/+E,WAER,IAEJ,CAEA,IAAIuuG,GAAsB,CACxB9qB,SAAU,QACVC,MAAO,OACPL,QAAS,OACTC,UAAW,QACXC,MAAO,QACPC,QAAS,OACTx3C,QAAS,OACT+3C,UAAW,SASb,IAAIyqB,GAAmB,EAEnBC,GAAqB,CACvBn2I,KAAM,qBACNu7B,QAAS,WACP,MAAO,CACLm4G,cAAejzI,KAEnB,EACAwlH,OAAQ,CACNytB,cAAe,CACbt0I,KAAM,gBACNb,QAAS,WACP,OAAKkC,KAAK8sH,OAAOzjG,QAAQ4pH,cAIlBjzI,KAAK8sH,OAAOzjG,QAAQ4pH,cAHlB,IAIX,IAGJzzI,MAAO,CACL+G,IAAK,CACH7G,KAAMoL,OACNhN,QAAS,QAEXw1I,KAAM,CACJ5zI,KAAMC,QACN7B,SAAS,IAGbmH,KAAM,WAAc,MAAO,CACzBmuI,IAAM,OAAUqC,KAChBvC,KAAM,CAAC,EACPyC,UAAW,GACXC,eAAgB,CAAC,EACf,EACJprH,SAAU,CACRw7F,IAAK,WACH,IAAI1C,EAAStjH,KAETgmH,EAAM,CACRz9F,OAAQ,CAAC,EACT0e,SAAU,SAAUioD,GAClB,IAAI88B,EAAU1I,EAAOr8E,SAASioD,GAE9B,MAAO,CACLppE,KAAM,SAAe+vH,GACnB,OAAO7pB,EAAQlmG,MAAK,SAAUM,GAC5B,OAAIA,GAAW85F,EAAW21B,GACjBhmH,QAAQC,QAAQ+lH,KAGlBhmH,QAAQC,QAAQ1J,EACzB,GACF,EAEJ,EACAQ,MAAO,WAAc,OAAO08F,EAAO18F,OAAS,GAG9C,OAAOnX,EAAOzP,KAAKkzI,MAAMvxI,OAAQ7E,OAAO4L,KAAK1I,KAAK41I,gBAAgBprI,KAAI,SAAU1L,GAC5E,MAAO,CACLs0I,IAAKt0I,EACLugH,MAAOiE,EAAOsyB,eAAe92I,GAAKugH,MAClCpqG,SAAUquG,EAAOsyB,eAAe92I,GAAKypB,OAEzC,IACAvoB,KAAK21I,WAAYtsI,QAAO,SAAUuyE,EAAKxjD,GAevC,OAdAt7B,OAAO4L,KAAK8sI,IAAqB5xI,SAAQ,SAAUw5E,GACjD,IA5EW+hC,EAAKC,EA4EZC,EAAQjnF,EAASinF,OAASjnF,EAAS4tF,IACjC5oC,KAAQxB,EAKdA,EAAIwB,IAlFO+hC,EAkFYvjC,EAAIwB,GAlFXgiC,EAkFkBC,EAAMjiC,GA/EzC,CAAC+hC,EAAKC,GAFGo2B,GAiFuCp4D,KA/E1B,SAAUx5D,GAAK,OAAOA,CAAG,KA2E5Cg4D,EAAIwB,GAAQiiC,EAAMjiC,EAKtB,IAEAxB,EAAIrzD,OAAO6P,EAASg7G,KAAOh7G,EAASnjB,UAAYxF,EAAO2oB,EAAS4tF,IAAIz9F,QAAQlf,QAAO,SAAUysI,EAAMC,GACjG,OAAOD,EAAKn0I,OAAOo0I,EACrB,GAAG,IAEIn6D,CACT,GAAGoqC,EACL,GAEFjmH,QAAS,WACHC,KAAKizI,eACPjzI,KAAKizI,cAAcE,UAAUnzI,KAAM,WAEvC,EACAq0I,UAAW,WACLr0I,KAAKizI,eACPjzI,KAAKizI,cAAcE,UAAUnzI,KAAM,WAEvC,EACAs0I,YAAa,WACPt0I,KAAKizI,eACPjzI,KAAKizI,cAAcI,YAAYrzI,KAAM,WAEzC,EACAE,cAAe,WACTF,KAAKizI,eACPjzI,KAAKizI,cAAcI,YAAYrzI,KAAM,WAEzC,EACAH,OAAQ,SAAiBV,GACvB,IAAI62I,EAAQh2I,KAAKS,OAAO3C,SAAWkC,KAAKm0I,aAAar2I,SAAW,GAKhE,OAJIoiH,EAAW81B,KACbA,EAAQA,EAAMh2I,KAAKgmH,MAGdhmH,KAAKszI,KAAOlsB,EAAiBjoH,EAAG62I,GAAS72I,EAAEa,KAAKuG,IAAK,CAAEklB,GAAIzrB,KAAK2H,WAAY49D,MAAOvlE,KAAK2C,QAAUqzI,EAC3G,EACAnzI,QAAS,CACPswI,UAAW,SAAoB8C,EAAYC,GACzC,IAAIt4I,OAEU,IAATs4I,IAAkBA,EAAO,YACjB,aAATA,GAKJl2I,KAAKkzI,KAAOp2I,OAAOiI,OAAO,CAAC,EAAG/E,KAAKkzI,OAAQt1I,EAAM,CAAC,GAAOq4I,EAAW7C,KAAO6C,EAAYr4I,IACnFq4I,EAAW7tB,SAAWpoH,KAAK41I,eAAeK,EAAW7C,MACvDpzI,KAAKm2I,qBAAqBF,IAN1Bj2I,KAAK21I,UAAUpwI,KAAK0wI,EAQxB,EACA5C,YAAa,SAAsBjnI,EAAK8pI,GACtC,IAAI9C,EAAMhnI,EAAIgnI,SACA,IAAT8C,IAAkBA,EAAO,YAEjB,aAATA,GACFl2I,KAAKo2I,eAAehD,GAGtB,IAAIzuE,EAAM1gD,EAAUjkB,KAAK21I,WAAW,SAAU90E,GAAK,OAAOA,EAAEuyE,MAAQA,CAAK,KAC5D,IAATzuE,GACF3kE,KAAK21I,UAAUjwH,OAAOi/C,EAAK,EAE/B,EACA19B,SAAU,SAAmB76B,QACd,IAARA,IAAiBA,EAAM,CAAE2iE,QAAQ,IACtC,IAAIA,EAAS3iE,EAAI2iE,OAEjB,OAAOl/C,QAAQ6zF,IAAIj0G,EAAOzP,KAAKkzI,MAAM1oI,KAAI,SAAU4B,GAAO,OAAOA,EAAI2iE,EAAS,iBAAmB,cAAcjpD,MAAK,SAAUwb,GAAK,OAAOA,EAAEkpF,KAAO,GAAI,IAAG7oH,OAAQ3B,KAAK21I,UAAUnrI,KAAI,SAAU6rI,GAAO,OAAOA,EAAIpvG,SAAS,CAAE8nC,OAAQA,GAAW,MAC5OjpD,MAAK,SAAUuQ,GAAW,OAAOA,EAAQyjB,OAAM,SAAUxY,GAAK,OAAOA,CAAG,GAAI,GACjF,EACA1a,MAAO,WACL,IAAI08F,EAAStjH,KAKb,OAHAlD,OAAO4L,KAAK1I,KAAK41I,gBAAgBhyI,SAAQ,SAAU9E,GACjDwkH,EAAOgzB,QAAQhzB,EAAOsyB,eAAgB92I,EACxC,IACO2Q,EAAOzP,KAAKkzI,MAAMvxI,OAAQ3B,KAAK21I,WAAW/xI,SAAQ,SAAUwI,GAAO,OAAOA,EAAIwa,OAAS,GAChG,EACAuvH,qBAAsB,SAA+B/9G,GACnD,IAAIklC,EAAQt9D,KAAK41I,eAAex9G,EAASg7G,KACzCh7G,EAASs0F,SAASpvD,EAAM+hD,OACxBjnF,EAASu8G,YAAYr3E,GACrBt9D,KAAKs2I,QAAQt2I,KAAK41I,eAAgBx9G,EAASg7G,IAC7C,EACAgD,eAAgB,SAAyBhD,GACvC,IAAIx1I,EAEAw6B,EAAWp4B,KAAKkzI,KAAKE,GAErBh7G,GAAYA,EAASgwF,UAQvBpoH,KAAK41I,eAAiB7wI,EAAO,CAAC,EAAG/E,KAAK41I,iBAAkBh4I,EAAM,CAAC,GAAOw1I,GAAO,CACzE/zB,MAAOjnF,EAASinF,MAChB92F,OAAQ6P,EAASnjB,SACjB+8G,YAAa55F,EAAS45F,aACrBp0H,KAGPoC,KAAKs2I,QAAQt2I,KAAKkzI,KAAME,EAC1B,IAmEJt2I,OAAO4L,KAAKysH,IAAOvxH,SAAQ,SAAUijE,GACnCwpD,GAAU5qH,OAAOohE,EAAMsuD,GAAMtuD,GAAM5/B,SAAUliC,EAAO,CAAC,EAAGowH,GAAMtuD,GAAM9+D,QAAS,CAAEqhH,WAAY+L,GAAMtuD,GAAMuiD,aACzG,IAGAiH,GAAUpB,SAAS,CAAE5M,GAAIX,KAIzB8S,GAAcn1H,QAXA,SAYdm1H,GAAc+hB,UAzzBE,SAAU7qH,GACxB,IAAKA,EACH,OAAO,WACL,OAAOmnH,GAAS7yI,KAAK4lB,WAAWy5F,MAClC,EAGF,IAAImJ,EAtEU,SAAU98F,GACxB,OAAIptB,MAAMC,QAAQmtB,GACTA,EAAOriB,QAAO,SAAUqnD,EAAMub,GAOnC,OANIp5C,EAASo5C,EAAM,KACjBvb,EAAKub,EAAKxjE,MAAM,KAAK,IAAMwjE,EAE3Bvb,EAAKub,GAAQA,EAGRvb,CACT,GAAG,CAAC,GAGChlC,CACT,CAwDmBkvD,CAAUlvD,GAC3B,OAAO5uB,OAAO4L,KAAK8/G,GAAYn/G,QAAO,SAAUqnD,EAAMub,GACpD,IAAIp/D,EAAQ27G,EAAWv8C,GAqCvB,OApCAvb,EAAKub,GAAQ,WAEX,GAAIjsE,KAAK4lB,WAAWy5F,MAAMxyG,GACxB,OAAO7M,KAAK4lB,WAAWy5F,MAAMxyG,GAI/B,GAAyB,MAArB27G,EAAWv8C,GACb,OAAO4mE,GAAS7yI,KAAK4lB,WAAWy5F,OAAO,GAKzC,GADYxyG,EAAM9L,QAAQ,MACb,EACX,MAAO,CAAC,EAGV,IAAIqL,EAAMS,EAAMpE,MAAM,KAClB+6G,EAAQp3G,EAAI,GACZ7M,EAAO6M,EAAIxB,MAAM,GAMrB,OAJA44G,EAAQxjH,KAAK4lB,WAAWy5F,MAAO,IAAMmE,GAIxB,OAHbjkH,EAAOA,EAAKsL,KAAK,OAGG24G,EACXqvB,GAASrvB,GAGdA,GAASA,EAAMjkH,GACVikH,EAAMjkH,GAGR,CAAC,CACV,EAEOmxD,CACT,GAAG,CAAC,EACN,EA0wBA8jE,GAAcwe,mBAAqBA,GACnCxe,GAAckhB,mBAAqBA,GACnClhB,GAAcgiB,eA5Ed,SAAyB5uI,EAAW6uI,QACd,IAAfA,IAAwBA,EAAa,MAE1C,IAAI1uI,EAAUm4G,EAAWt4G,GAAaA,EAAUG,QAAUH,EAC1DG,EAAQ4nH,cAAe,EACvB,IAAI+mB,EAAM,CACRn3I,MAAQwI,EAAQxI,MAAQ,gBAAkB,iBAC1CC,MAAOuF,EAAO,CAAC,EAAGiuI,GAAmBxzI,OACrCyF,KAAM+tI,GAAmB/tI,KACzBulB,SAAUzlB,EAAO,CAAC,EAAGiuI,GAAmBxoH,UACxC3nB,QAASkC,EAAO,CAAC,EAAGiuI,GAAmBnwI,SACvC8sH,cAAc,EACdzvH,cAAe8yI,GAAmB9yI,cAClCslH,OAAQwtB,GAAmBxtB,QAIxBixB,IACHA,EAAa,SAAUzwB,GAAO,OAAOA,CAAK,GAG5C,IAAIp9G,EAAab,EAAQsE,OAAStE,EAAQsE,MAAM1D,OAAU,QAqC1D,OAnCA+tI,EAAI72I,OAAS,SAAUV,GACrB,IAAIvB,EAEJoC,KAAKi0I,gBACL,IAAI0C,EAAOzC,GAAoBl0I,MAC3ByH,EAAY1C,EAAO,CAAC,EAAG/E,KAAK2H,YAE5B0E,EAAQg6G,EAAUrmH,KAAK8sH,QAC3B9sH,KAAK+zI,gBAAkB/zI,KAAK+zI,iBAAmB9sB,EAAkBjnH,KAAK8sH,OAAQzgH,GAC9EyoI,GAAe91I,KAAKgB,KAAMqM,GAE1B,IAAID,EAAM8oI,GAAqBl1I,MAC3BqtH,EAAUjhH,EAAIihH,QACdF,EAAS/gH,EAAI+gH,OACbgoB,EAAa/oI,EAAI+oI,WAErBvuB,EAAoBn/G,EAAWmB,EAAWykH,GAC1CzG,EAAoBn/G,EAAW,OAAQ0lH,GACvCntH,KAAK6zI,iBAAiBjwI,SAAQ,SAAU6a,EAAKkmD,GAC3CiiD,EAAoBn/G,EAAWgX,EAAK02H,EACtC,IAIA,IAj7SqBa,EAAOhwB,EAk7SxBngH,GADQ8gH,EAAgB3mH,KAAK8sH,SAAW,CAAEjnH,KAAM,UACnCA,KACbrG,EAAQuF,EAAO,CAAC,EAAG/E,KAAK2C,SAAU/E,EAAM,CAAC,GAAOiI,GAAQwG,EAAMpP,MAAOW,GAAO64I,EAAWE,IAE3F,OAAOx3I,EAAE4I,EAAS,CAChBw9D,MAAOvlE,KAAK2C,OACZnD,MAAOA,EACPisB,GAAIhkB,IAx7SeuuI,EAy7SHh2I,KAAKS,OAz7SKulH,EAy7SGhmH,KAAK8sH,OAAOzjG,QAx7StCvsB,OAAO4L,KAAKstI,GAAO3sI,QAAO,SAAUhL,EAAKS,GAW9C,OAVAk3I,EAAMl3I,GAAK8E,SAAQ,SAAUk9G,GACtBA,EAAMz3F,UACT2sH,EAAMl3I,GAAKuqB,QAAU28F,EAChBlF,EAAM77G,OACT67G,EAAM77G,KAAO,CAAC,GAEhB67G,EAAM77G,KAAKnE,KAAOhC,EAEtB,IAEOT,EAAIsD,OAAOq0I,EAAMl3I,GAC1B,GAAG,KA66SH,EAEO43I,CACT,EAmBA,8BCh1ViE3nF,EAAO/xD,QAAsJ,SAAS8sE,GAAG,SAAStlE,EAAE88B,GAAG,GAAG5d,EAAE4d,GAAG,OAAO5d,EAAE4d,GAAGtkC,QAAQ,IAAI6jE,EAAEn9C,EAAE4d,GAAG,CAACtkC,QAAQ,CAAC,EAAE2nB,GAAG2c,EAAEs1G,QAAO,GAAI,OAAO9sE,EAAExoC,GAAGtiC,KAAK6hE,EAAE7jE,QAAQ6jE,EAAEA,EAAE7jE,QAAQwH,GAAGq8D,EAAE+1E,QAAO,EAAG/1E,EAAE7jE,OAAO,CAAC,IAAI0mB,EAAE,CAAC,EAAE,OAAOlf,EAAEoxD,EAAEkU,EAAEtlE,EAAEm7B,EAAEjc,EAAElf,EAAE0gI,EAAE,IAAI1gI,EAAE,EAAE,CAArM,CAAuM,CAAC,SAASslE,EAAEtlE,EAAEkf,GAAG,aAAa,SAAS4d,EAAEwoC,GAAG,OAAOA,GAAGA,EAAEjsE,WAAWisE,EAAE,CAAChsE,QAAQgsE,EAAE,CAAChtE,OAAOC,eAAeyH,EAAE,aAAa,CAACvH,OAAM,IAAKuH,EAAEtD,OAAOsD,EAAEqyI,eAAU,EAAO,IAAYr4I,EAAE8iC,EAAR5d,EAAE,KAAmBzY,EAAEq2B,EAAR5d,EAAE,KAAWlf,EAAE1G,QAAQU,EAAEV,QAAQ0G,EAAEqyI,UAAUr4I,EAAEV,QAAQ0G,EAAEtD,OAAO+J,EAAEnN,OAAO,EAAE,SAASgsE,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,GAAFA,CAAM,OAAOm9C,EAAEn9C,EAAE,IAAIllB,EAAEklB,EAAE,GAAG1lB,OAAOylB,EAAE,mBAAmBjlB,GAAIsrE,EAAE9sE,QAAQ,SAAS8sE,GAAG,OAAOxoC,EAAEwoC,KAAKxoC,EAAEwoC,GAAGrmD,GAAGjlB,EAAEsrE,KAAKrmD,EAAEjlB,EAAEqiE,GAAG,UAAUiJ,GAAG,GAAIgtE,MAAMx1G,CAAC,EAAE,SAASwoC,EAAEtlE,GAAG,IAAIkf,EAAEomD,EAAE9sE,QAAQ,CAACqC,QAAQ,SAAS,iBAAiB03I,MAAMA,IAAIrzH,EAAE,EAAE,SAASomD,EAAEtlE,GAAG,IAAIkf,EAAEomD,EAAE9sE,QAAQ,oBAAoBihB,QAAQA,OAAO2lB,MAAMA,KAAK3lB,OAAO,oBAAoB+uB,MAAMA,KAAKpJ,MAAMA,KAAKoJ,KAAKhrC,SAAS,cAATA,GAA0B,iBAAiBg1I,MAAMA,IAAItzH,EAAE,EAAE,SAASomD,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,GAAGm9C,EAAEn9C,EAAE,IAAIllB,EAAEklB,EAAE,IAAID,EAAE3mB,OAAOC,eAAeyH,EAAEof,EAAEF,EAAE,GAAG5mB,OAAOC,eAAe,SAAS+sE,EAAEtlE,EAAEkf,GAAG,GAAG4d,EAAEwoC,GAAGtlE,EAAEhG,EAAEgG,GAAE,GAAI88B,EAAE5d,GAAGm9C,EAAE,IAAI,OAAOp9C,EAAEqmD,EAAEtlE,EAAEkf,EAAE,CAAC,MAAMomD,GAAG,CAAC,GAAG,QAAQpmD,GAAG,QAAQA,EAAE,MAAM3F,UAAU,4BAA4B,MAAM,UAAU2F,IAAIomD,EAAEtlE,GAAGkf,EAAEzmB,OAAO6sE,CAAC,CAAC,EAAE,SAASA,EAAEtlE,EAAEkf,GAAGomD,EAAE9sE,SAAS0mB,EAAE,GAAFA,EAAM,WAAW,OAAO,GAAG5mB,OAAOC,eAAe,CAAC,EAAE,IAAI,CAACm3B,IAAI,WAAW,OAAO,CAAC,IAAIjpB,CAAC,GAAE,EAAE,SAAS6+D,EAAEtlE,GAAG,IAAIkf,EAAE,CAAC,EAAE3kB,eAAe+qE,EAAE9sE,QAAQ,SAAS8sE,EAAEtlE,GAAG,OAAOkf,EAAE1kB,KAAK8qE,EAAEtlE,EAAE,CAAC,EAAE,SAASslE,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,GAAGm9C,EAAEn9C,EAAE,IAAIomD,EAAE9sE,QAAQ0mB,EAAE,GAAG,SAASomD,EAAEtlE,EAAEkf,GAAG,OAAO4d,EAAE1d,EAAEkmD,EAAEtlE,EAAEq8D,EAAE,EAAEn9C,GAAG,EAAE,SAASomD,EAAEtlE,EAAEkf,GAAG,OAAOomD,EAAEtlE,GAAGkf,EAAEomD,CAAC,CAAC,EAAE,SAASA,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,IAAIm9C,EAAEn9C,EAAE,IAAIomD,EAAE9sE,QAAQ,SAAS8sE,GAAG,OAAOxoC,EAAEu/B,EAAEiJ,GAAG,CAAC,EAAE,SAASA,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,IAAIomD,EAAE9sE,QAAQ,SAAS8sE,GAAG,IAAIxoC,EAAEwoC,GAAG,MAAM/rD,UAAU+rD,EAAE,sBAAsB,OAAOA,CAAC,CAAC,EAAE,SAASA,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,GAAGm9C,EAAEn9C,EAAE,GAAGllB,EAAEklB,EAAE,IAAID,EAAEC,EAAE,GAAGzY,EAAE,YAAYwwD,EAAE,SAASqO,EAAEtlE,EAAEkf,GAAG,IAAIs0C,EAAEr4B,EAAE/b,EAAEshH,EAAEp7D,EAAErO,EAAEw7E,EAAEx2G,EAAEqpC,EAAErO,EAAEsmE,EAAE5iI,EAAE2qE,EAAErO,EAAEkoE,EAAE3/F,EAAE8lC,EAAErO,EAAE0pE,EAAEhxG,EAAE21C,EAAErO,EAAE6nE,EAAE59F,EAAEokC,EAAErO,EAAEy7E,EAAE1sD,EAAE/pD,EAAEogC,EAAEA,EAAEr8D,KAAKq8D,EAAEr8D,GAAG,CAAC,GAAGoxD,EAAE40B,EAAEv/E,GAAG6Y,EAAE2c,EAAEa,EAAEniC,EAAEmiC,EAAE98B,IAAI88B,EAAE98B,IAAI,CAAC,GAAGyG,GAAY,IAAI+sD,KAAbv3B,IAAI/c,EAAElf,GAAYkf,GAAEic,GAAGulG,GAAGphH,QAAG,IAASA,EAAEk0C,KAAMA,KAAKwyB,IAAI5mE,EAAE+b,EAAE7b,EAAEk0C,GAAGt0C,EAAEs0C,GAAGwyB,EAAExyB,GAAGv3B,GAAG,mBAAmB3c,EAAEk0C,GAAGt0C,EAAEs0C,GAAG7jC,GAAGwL,EAAEnhC,EAAEolB,EAAE0d,GAAGoE,GAAG5hB,EAAEk0C,IAAIp0C,EAAE,SAASkmD,GAAG,IAAItlE,EAAE,SAASA,EAAEkf,EAAE4d,GAAG,GAAGthC,gBAAgB8pE,EAAE,CAAC,OAAOllE,UAAUlG,QAAQ,KAAK,EAAE,OAAO,IAAIorE,EAAE,KAAK,EAAE,OAAO,IAAIA,EAAEtlE,GAAG,KAAK,EAAE,OAAO,IAAIslE,EAAEtlE,EAAEkf,GAAG,OAAO,IAAIomD,EAAEtlE,EAAEkf,EAAE4d,EAAE,CAAC,OAAOwoC,EAAEnlE,MAAM3E,KAAK4E,UAAU,EAAE,OAAOJ,EAAEyG,GAAG6+D,EAAE7+D,GAAGzG,CAAC,CAA3N,CAA6Nof,GAAGogB,GAAG,mBAAmBpgB,EAAEplB,EAAEwD,SAAShD,KAAK4kB,GAAGA,EAAEogB,KAAKwmD,EAAE2sD,UAAU3sD,EAAE2sD,QAAQ,CAAC,IAAIn/E,GAAGp0C,EAAEkmD,EAAErO,EAAE6mE,GAAG1sE,IAAIA,EAAEoC,IAAIv0C,EAAEmyC,EAAEoC,EAAEp0C,IAAI,EAAE63C,EAAEw7E,EAAE,EAAEx7E,EAAEsmE,EAAE,EAAEtmE,EAAEkoE,EAAE,EAAEloE,EAAE0pE,EAAE,EAAE1pE,EAAE6nE,EAAE,GAAG7nE,EAAEy7E,EAAE,GAAGz7E,EAAE27E,EAAE,GAAG37E,EAAE6mE,EAAE,IAAIx4D,EAAE9sE,QAAQy+D,CAAC,EAAE,SAASqO,EAAEtlE,GAAGslE,EAAE9sE,QAAQ,SAAS8sE,GAAG,IAAI,QAAQA,GAAG,CAAC,MAAMA,GAAG,OAAM,CAAE,CAAC,CAAC,EAAE,SAASA,EAAEtlE,GAAGslE,EAAE9sE,QAAQ,SAAS8sE,GAAG,MAAM,iBAAiBA,EAAE,OAAOA,EAAE,mBAAmBA,CAAC,CAAC,EAAE,SAASA,EAAEtlE,GAAGslE,EAAE9sE,QAAQ,CAAC,CAAC,EAAE,SAAS8sE,EAAEtlE,GAAGslE,EAAE9sE,QAAQ,SAAS8sE,EAAEtlE,GAAG,MAAM,CAAC+Y,aAAa,EAAEusD,GAAGtsD,eAAe,EAAEssD,GAAGrsD,WAAW,EAAEqsD,GAAG7sE,MAAMuH,EAAE,CAAC,EAAE,SAASslE,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,IAAIm9C,EAAEn9C,EAAE,IAAIomD,EAAE9sE,QAAQF,OAAO4L,MAAM,SAASohE,GAAG,OAAOxoC,EAAEwoC,EAAEjJ,EAAE,CAAC,EAAE,SAASiJ,EAAEtlE,GAAG,IAAIkf,EAAE,EAAE4d,EAAEsC,KAAKivD,SAAS/oB,EAAE9sE,QAAQ,SAAS8sE,GAAG,MAAM,UAAUnoE,YAAO,IAASmoE,EAAE,GAAGA,EAAE,QAAQpmD,EAAE4d,GAAGuN,SAAS,IAAI,CAAC,EAAE,SAASi7B,EAAEtlE,GAAG,IAAIkf,EAAE,CAAC,EAAEmrB,SAASi7B,EAAE9sE,QAAQ,SAAS8sE,GAAG,OAAOpmD,EAAE1kB,KAAK8qE,GAAGl/D,MAAM,GAAG,EAAE,CAAC,EAAE,SAASk/D,EAAEtlE,GAAGslE,EAAE9sE,QAAQ,SAAS8sE,GAAG,GAAG,MAAQA,EAAE,MAAM/rD,UAAU,yBAAyB+rD,GAAG,OAAOA,CAAC,CAAC,EAAE,SAASA,EAAEtlE,GAAGslE,EAAE9sE,QAAQ,gGAAgGyL,MAAM,IAAI,EAAE,SAASqhE,EAAEtlE,GAAGslE,EAAE9sE,SAAQ,CAAE,EAAE,SAAS8sE,EAAEtlE,GAAGA,EAAEof,EAAE,CAAC,EAAEutE,oBAAoB,EAAE,SAASrnB,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,GAAGE,EAAEi9C,EAAEn9C,EAAE,GAAGllB,EAAEklB,EAAE,EAAFA,CAAK,eAAeomD,EAAE9sE,QAAQ,SAAS8sE,EAAEtlE,EAAEkf,GAAGomD,IAAIjJ,EAAEiJ,EAAEpmD,EAAEomD,EAAEA,EAAE3rE,UAAUK,IAAI8iC,EAAEwoC,EAAEtrE,EAAE,CAACgf,cAAa,EAAGvgB,MAAMuH,GAAG,CAAC,EAAE,SAASslE,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,GAAFA,CAAM,QAAQm9C,EAAEn9C,EAAE,IAAIomD,EAAE9sE,QAAQ,SAAS8sE,GAAG,OAAOxoC,EAAEwoC,KAAKxoC,EAAEwoC,GAAGjJ,EAAEiJ,GAAG,CAAC,EAAE,SAASA,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,GAAGm9C,EAAE,qBAAqBriE,EAAE8iC,EAAEu/B,KAAKv/B,EAAEu/B,GAAG,CAAC,GAAGiJ,EAAE9sE,QAAQ,SAAS8sE,GAAG,OAAOtrE,EAAEsrE,KAAKtrE,EAAEsrE,GAAG,CAAC,EAAE,CAAC,EAAE,SAASA,EAAEtlE,GAAG,IAAIkf,EAAEkgB,KAAK8+C,KAAKphD,EAAEsC,KAAK64C,MAAM3S,EAAE9sE,QAAQ,SAAS8sE,GAAG,OAAO6vC,MAAM7vC,GAAGA,GAAG,GAAGA,EAAE,EAAExoC,EAAE5d,GAAGomD,EAAE,CAAC,EAAE,SAASA,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,IAAIomD,EAAE9sE,QAAQ,SAAS8sE,GAAG,OAAOhtE,OAAOwkC,EAAEwoC,GAAG,CAAC,EAAE,SAASA,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,IAAIomD,EAAE9sE,QAAQ,SAAS8sE,EAAEtlE,GAAG,IAAI88B,EAAEwoC,GAAG,OAAOA,EAAE,IAAIpmD,EAAEm9C,EAAE,GAAGr8D,GAAG,mBAAmBkf,EAAEomD,EAAEj7B,YAAYvN,EAAEu/B,EAAEn9C,EAAE1kB,KAAK8qE,IAAI,OAAOjJ,EAAE,GAAG,mBAAmBn9C,EAAEomD,EAAE8pB,WAAWtyD,EAAEu/B,EAAEn9C,EAAE1kB,KAAK8qE,IAAI,OAAOjJ,EAAE,IAAIr8D,GAAG,mBAAmBkf,EAAEomD,EAAEj7B,YAAYvN,EAAEu/B,EAAEn9C,EAAE1kB,KAAK8qE,IAAI,OAAOjJ,EAAE,MAAM9iD,UAAU,0CAA0C,CAAC,EAAE,SAAS+rD,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,GAAGm9C,EAAEn9C,EAAE,GAAGllB,EAAEklB,EAAE,IAAID,EAAEC,EAAE,IAAIzY,EAAEyY,EAAE,GAAGE,EAAEkmD,EAAE9sE,QAAQ,SAAS8sE,GAAG,IAAItlE,EAAEq8D,EAAE7iE,SAAS6iE,EAAE7iE,OAAOQ,EAAE,CAAC,EAAE8iC,EAAEtjC,QAAQ,CAAC,GAAG,KAAK8rE,EAAEp/D,OAAO,IAAIo/D,KAAKtlE,GAAGyG,EAAEzG,EAAEslE,EAAE,CAAC7sE,MAAMwmB,EAAEG,EAAEkmD,IAAI,CAAC,EAAE,SAASA,EAAEtlE,EAAEkf,GAAGlf,EAAEof,EAAEF,EAAE,EAAE,EAAE,SAASomD,EAAEtlE,GAAG,aAAaslE,EAAE9sE,QAAQ,CAACwC,MAAM,CAACgmB,QAAQ,CAAC9lB,KAAKC,QAAQ7B,SAAQ,GAAIu5I,SAAS,CAAC33I,KAAKsC,SAASlE,QAAQ,SAASgsE,EAAEtlE,GAAG,IAAIS,KAAK,WAAW,MAAM,CAACqyI,gBAAe,EAAG,EAAE50I,MAAM,CAACsf,OAAO,WAAWhiB,KAAKgiB,OAAOtjB,OAAO,IAAIsB,KAAKq3I,SAASr3I,KAAKgiB,OAAOhiB,KAAKu3I,eAAev3I,KAAKmM,MAAM,SAASnM,KAAKgiB,OAAOhiB,KAAKu3I,eAAe,EAAE/xH,QAAQ,SAASskD,GAAG9pE,KAAKs3I,eAAextE,CAAC,GAAGjnE,QAAQ,CAAC00I,cAAc,WAAW,IAAIztE,EAAEllE,UAAUlG,OAAO,QAAG,IAASkG,UAAU,GAAGA,UAAU,GAAG,KAAK,OAAe5E,KAAKs3I,eAAb,MAAMxtE,GAAuB9pE,KAAKs3I,eAAmCxtE,CAAC,GAAG,EAAE,SAASA,EAAEtlE,GAAG,aAAaslE,EAAE9sE,QAAQ,CAAC0F,MAAM,CAAC80I,iBAAiB,WAAWx3I,KAAKy3I,mBAAmB,GAAG50I,QAAQ,CAAC40I,kBAAkB,WAAW,IAAI3tE,EAAE9pE,KAAK03I,qBAAqBlzI,EAAExE,KAAK23I,wBAAwB,OAAO7tE,GAAG9pE,KAAK43I,WAAWC,IAAI73I,KAAK83I,SAAShuE,GAAGtlE,GAAGxE,KAAK43I,WAAWG,OAAO/3I,KAAK83I,SAAS93I,KAAK43I,WAAWC,IAAI73I,KAAKg4I,sBAAiB,CAAM,EAAEN,mBAAmB,WAAa,IAAI5tE,EAAE,EAAE,GAAG9pE,KAAK8L,MAAMmsI,aAAa,IAAI,IAAIzzI,EAAE,EAAEA,EAAExE,KAAKw3I,iBAAiBhzI,IAAIslE,GAAG9pE,KAAK8L,MAAMmsI,aAAaniG,SAAStxC,GAAG0zI,aAAa,OAAOpuE,CAAC,EAAE6tE,sBAAsB,WAAW,OAAO33I,KAAK03I,qBAAqB13I,KAAKg4I,eAAe,EAAEA,cAAc,WAAW,IAAIluE,IAAI9pE,KAAK8L,MAAMmsI,cAAcj4I,KAAK8L,MAAMmsI,aAAaniG,SAAS91C,KAAKw3I,kBAAkB,OAAO1tE,EAAEA,EAAEouE,aAAa,CAAC,EAAEN,SAAS,WAAW,MAAM,CAACC,IAAI73I,KAAK8L,MAAMmsI,aAAaj4I,KAAK8L,MAAMmsI,aAAa5wG,UAAU,EAAE0wG,OAAO/3I,KAAK8L,MAAMmsI,aAAaj4I,KAAK8L,MAAMmsI,aAAaC,aAAal4I,KAAK8L,MAAMmsI,aAAa5wG,UAAU,EAAE,EAAEywG,SAAS,SAAShuE,GAAG,OAAO9pE,KAAK8L,MAAMmsI,aAAaj4I,KAAK8L,MAAMmsI,aAAa5wG,UAAUyiC,EAAE,IAAI,GAAG,EAAE,SAASA,EAAEtlE,GAAG,aAAaslE,EAAE9sE,QAAQ,CAACiI,KAAK,WAAW,MAAM,CAACuyI,kBAAkB,EAAE,EAAE90I,MAAM,CAACy1I,gBAAgB,WAAWn4I,KAAKw3I,iBAAiB,CAAC,GAAG30I,QAAQ,CAACu1I,YAAY,WAAWp4I,KAAKw3I,iBAAiB,IAAIx3I,KAAKw3I,mBAAmBx3I,KAAKy3I,mBAAmBz3I,KAAKy3I,oBAAoB,EAAEY,cAAc,WAAWr4I,KAAKw3I,iBAAiBx3I,KAAKm4I,gBAAgBz5I,OAAO,IAAIsB,KAAKw3I,mBAAmBx3I,KAAKy3I,mBAAmBz3I,KAAKy3I,oBAAoB,EAAEa,gBAAgB,WAAWt4I,KAAKm4I,gBAAgBn4I,KAAKw3I,kBAAkBx3I,KAAKsxB,OAAOtxB,KAAKm4I,gBAAgBn4I,KAAKw3I,mBAAmBx3I,KAAKu4I,UAAUv4I,KAAKgiB,OAAOtjB,QAAQsB,KAAKsxB,OAAOtxB,KAAKgiB,QAAQhiB,KAAKw4I,sBAAsBx4I,KAAKgiB,OAAO,GAAG,GAAG,EAAE,SAAS8nD,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,IAAIomD,EAAE9sE,QAAQ,SAAS8sE,EAAEtlE,EAAEkf,GAAG,GAAG4d,EAAEwoC,QAAG,IAAStlE,EAAE,OAAOslE,EAAE,OAAOpmD,GAAG,KAAK,EAAE,OAAO,SAASA,GAAG,OAAOomD,EAAE9qE,KAAKwF,EAAEkf,EAAE,EAAE,KAAK,EAAE,OAAO,SAASA,EAAE4d,GAAG,OAAOwoC,EAAE9qE,KAAKwF,EAAEkf,EAAE4d,EAAE,EAAE,KAAK,EAAE,OAAO,SAAS5d,EAAE4d,EAAEu/B,GAAG,OAAOiJ,EAAE9qE,KAAKwF,EAAEkf,EAAE4d,EAAEu/B,EAAE,EAAE,OAAO,WAAW,OAAOiJ,EAAEnlE,MAAMH,EAAEI,UAAU,CAAC,CAAC,EAAE,SAASklE,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,IAAIm9C,EAAEn9C,EAAE,GAAGte,SAAS5G,EAAE8iC,EAAEu/B,IAAIv/B,EAAEu/B,EAAE/gE,eAAegqE,EAAE9sE,QAAQ,SAAS8sE,GAAG,OAAOtrE,EAAEqiE,EAAE/gE,cAAcgqE,GAAG,CAAC,CAAC,CAAC,EAAE,SAASA,EAAEtlE,EAAEkf,GAAGomD,EAAE9sE,SAAS0mB,EAAE,KAAKA,EAAE,GAAFA,EAAM,WAAW,OAAO,GAAG5mB,OAAOC,eAAe2mB,EAAE,GAAFA,CAAM,OAAO,IAAI,CAACwQ,IAAI,WAAW,OAAO,CAAC,IAAIjpB,CAAC,GAAE,EAAE,SAAS6+D,EAAEtlE,EAAEkf,GAAG,aAAa,IAAI4d,EAAE5d,EAAE,IAAIm9C,EAAEn9C,EAAE,IAAIllB,EAAEklB,EAAE,IAAID,EAAEC,EAAE,GAAGzY,EAAEyY,EAAE,GAAG+3C,EAAE/3C,EAAE,IAAIs0C,EAAEt0C,EAAE,IAAIic,EAAEjc,EAAE,IAAIE,EAAEF,EAAE,IAAIwhH,EAAExhH,EAAE,EAAFA,CAAK,YAAY+c,IAAI,GAAG/3B,MAAM,QAAQ,GAAGA,QAAQvJ,EAAE,aAAa6kC,EAAE,OAAO7P,EAAE,SAASuR,EAAE,WAAW,OAAO1lC,IAAI,EAAE8pE,EAAE9sE,QAAQ,SAAS8sE,EAAEtlE,EAAEkf,EAAE8mE,EAAE50B,EAAE9xC,EAAEg6D,GAAG9lB,EAAEt0C,EAAElf,EAAEgmF,GAAG,IAAIm5C,EAAES,EAAEx0C,EAAE6oD,EAAE,SAAS3uE,GAAG,IAAIrpC,GAAGqpC,KAAK24D,EAAE,OAAOA,EAAE34D,GAAG,OAAOA,GAAG,KAAK9lC,EAA0C,KAAK7P,EAAE,OAAO,WAAW,OAAO,IAAIzQ,EAAE1jB,KAAK8pE,EAAE,EAAE,OAAO,WAAW,OAAO,IAAIpmD,EAAE1jB,KAAK8pE,EAAE,CAAC,EAAE3O,EAAE32D,EAAE,YAAY42D,EAAExF,GAAGzhC,EAAEgxG,GAAE,EAAG1C,EAAE34D,EAAE3rE,UAAUu6I,EAAEjW,EAAEyC,IAAIzC,EAAEtjI,IAAIy2D,GAAG6sE,EAAE7sE,GAAG4uE,GAAG/jG,GAAGi4G,GAAGD,EAAE7iF,GAAG8sE,EAAE9sE,EAAEwF,EAAEq9E,EAAE,WAAWjU,OAAE,EAAOmU,EAAE,SAASn0I,GAAEi+H,EAAExtC,SAAWyjD,EAAE,GAAGC,IAAI/oD,EAAEhsE,EAAE+0H,EAAE35I,KAAK,IAAI8qE,OAAQhtE,OAAOqB,WAAWyxF,EAAExpF,OAAOu5B,EAAEiwD,EAAEz0B,GAAE,GAAI75B,GAAGr2B,EAAE2kF,EAAEs1C,IAAIzhH,EAAEmsE,EAAEs1C,EAAEx/F,IAAK01B,GAAGs9E,GAAGA,EAAEn5I,OAAO40B,IAAIgxG,GAAE,EAAGX,EAAE,WAAW,OAAOkU,EAAE15I,KAAKgB,KAAK,GAAGshC,IAAIw8C,IAAIr9C,IAAI0kG,GAAG1C,EAAEyC,IAAIzhH,EAAEg/G,EAAEyC,EAAEV,GAAG/oE,EAAEj3D,GAAGggI,EAAE/oE,EAAEN,GAAGz1B,EAAEkwB,EAAE,GAAG+tE,EAAE,CAACl0H,OAAO2rD,EAAEopE,EAAEiU,EAAEtkH,GAAGzrB,KAAKob,EAAE0gH,EAAEiU,EAAEz0G,GAAGixD,QAAQytC,GAAG5kD,EAAE,IAAIsmD,KAAKT,EAAES,KAAK3B,GAAGjkI,EAAEikI,EAAE2B,EAAET,EAAES,SAASvjE,EAAEA,EAAEskE,EAAEtkE,EAAEo2E,GAAGx2G,GAAG0kG,GAAG3gI,EAAEm/H,GAAG,OAAOA,CAAC,CAAC,EAAE,SAAS75D,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,GAAGm9C,EAAEn9C,EAAE,IAAIllB,EAAEklB,EAAE,IAAID,EAAEC,EAAE,GAAFA,CAAM,YAAYzY,EAAE,WAAW,EAAEwwD,EAAE,YAAYzD,EAAE,WAAW,IAAI8R,EAAEtlE,EAAEkf,EAAE,GAAFA,CAAM,UAAU4d,EAAE9iC,EAAEE,OAAOmiE,EAAE,IAAIp9C,EAAE,IAAI,IAAIjf,EAAEo0I,MAAMr/G,QAAQ,OAAO7V,EAAE,IAAIm1H,YAAYr0I,GAAGA,EAAEk9D,IAAI,eAAcoI,EAAEtlE,EAAEs0I,cAAc1zI,UAAWsrB,OAAOo5C,EAAEhM,MAAM+C,EAAE,SAASp9C,EAAE,oBAAoBo9C,EAAE,UAAUp9C,GAAGqmD,EAAEnjD,QAAQqxC,EAAE8R,EAAEmtE,EAAE31G,YAAY02B,EAAEyD,GAAGj9D,EAAE8iC,IAAI,OAAO02B,GAAG,EAAE8R,EAAE9sE,QAAQF,OAAOo0F,QAAQ,SAASpnB,EAAEtlE,GAAG,IAAIkf,EAAE,OAAO,OAAOomD,GAAG7+D,EAAEwwD,GAAGn6B,EAAEwoC,GAAGpmD,EAAE,IAAIzY,EAAEA,EAAEwwD,GAAG,KAAK/3C,EAAED,GAAGqmD,GAAGpmD,EAAEs0C,SAAI,IAASxzD,EAAEkf,EAAEm9C,EAAEn9C,EAAElf,EAAE,CAAC,EAAE,SAASslE,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,IAAIm9C,EAAEn9C,EAAE,IAAI/hB,OAAO,SAAS,aAAa6C,EAAEof,EAAE9mB,OAAOi8I,qBAAqB,SAASjvE,GAAG,OAAOxoC,EAAEwoC,EAAEjJ,EAAE,CAAC,EAAE,SAASiJ,EAAEtlE,GAAGA,EAAEof,EAAE9mB,OAAOm1F,qBAAqB,EAAE,SAASnoB,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,GAAGm9C,EAAEn9C,EAAE,GAAGllB,EAAEklB,EAAE,GAAFA,EAAM,GAAID,EAAEC,EAAE,GAAFA,CAAM,YAAYomD,EAAE9sE,QAAQ,SAAS8sE,EAAEtlE,GAAG,IAAIkf,EAAEzY,EAAE41D,EAAEiJ,GAAGrO,EAAE,EAAEzD,EAAE,GAAG,IAAIt0C,KAAKzY,EAAEyY,GAAGD,GAAG6d,EAAEr2B,EAAEyY,IAAIs0C,EAAEzyD,KAAKme,GAAG,KAAKlf,EAAE9F,OAAO+8D,GAAGn6B,EAAEr2B,EAAEyY,EAAElf,EAAEi3D,SAASj9D,EAAEw5D,EAAEt0C,IAAIs0C,EAAEzyD,KAAKme,IAAI,OAAOs0C,CAAC,CAAC,EAAE,SAAS8R,EAAEtlE,EAAEkf,GAAGomD,EAAE9sE,QAAQ0mB,EAAE,EAAE,EAAE,SAASomD,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,IAAIm9C,EAAEj9B,KAAK6pC,IAAI3D,EAAE9sE,QAAQ,SAAS8sE,GAAG,OAAOA,EAAE,EAAEjJ,EAAEv/B,EAAEwoC,GAAG,kBAAkB,CAAC,CAAC,EAAE,SAASA,EAAEtlE,EAAEkf,GAAG,aAAa,IAAI4d,EAAE5d,EAAE,GAAFA,EAAM,GAAIA,EAAE,GAAFA,CAAM5Y,OAAO,UAAS,SAASg/D,GAAG9pE,KAAKg5I,GAAGluI,OAAOg/D,GAAG9pE,KAAKyuI,GAAG,CAAC,IAAE,WAAW,IAAI3kE,EAAEtlE,EAAExE,KAAKg5I,GAAGt1H,EAAE1jB,KAAKyuI,GAAG,OAAO/qH,GAAGlf,EAAE9F,OAAO,CAACzB,WAAM,EAAOoJ,MAAK,IAAKyjE,EAAExoC,EAAE98B,EAAEkf,GAAG1jB,KAAKyuI,IAAI3kE,EAAEprE,OAAO,CAACzB,MAAM6sE,EAAEzjE,MAAK,GAAI,GAAE,EAAE,SAASyjE,EAAEtlE,EAAEkf,GAAG,aAAa,SAAS4d,EAAEwoC,GAAG,OAAOA,GAAGA,EAAEjsE,WAAWisE,EAAE,CAAChsE,QAAQgsE,EAAE,CAAChtE,OAAOC,eAAeyH,EAAE,aAAa,CAACvH,OAAM,IAAK,IAAYuB,EAAE8iC,EAAR5d,EAAE,KAAmBzY,EAAEq2B,EAAR5d,EAAE,KAAmBs0C,EAAE12B,EAAR5d,EAAE,KAAmBE,EAAE0d,EAAR5d,EAAE,KAAmB+c,EAAEa,EAAR5d,EAAE,KAAmBsgB,EAAE1C,EAAR5d,EAAE,KAAmBgiB,EAAEpE,EAAR5d,EAAE,KAAmBkyC,EAAEt0B,EAAR5d,EAAE,KAAWlf,EAAE1G,QAAQ,CAACoD,OAAO,CAAC8iC,EAAElmC,QAAQ4nC,EAAE5nC,QAAQ83D,EAAE93D,SAAS0B,MAAM,CAACvC,MAAM,CAACa,QAAQ,MAAMiK,QAAQ,CAACrI,KAAKpB,MAAMR,QAAQ,WAAW,MAAM,EAAE,GAAG2B,SAAS,CAACC,KAAKC,QAAQ7B,SAAQ,GAAIm7I,UAAU,CAACv5I,KAAKC,QAAQ7B,SAAQ,GAAIo7I,UAAU,CAACx5I,KAAKoL,OAAOhN,QAAQ,SAASq7I,WAAW,CAACz5I,KAAKC,QAAQ7B,SAAQ,GAAIojH,SAAS,CAACxhH,KAAKC,QAAQ7B,SAAQ,GAAIqoC,YAAY,CAACzmC,KAAKoL,OAAOhN,QAAQ,IAAIs7I,WAAW,CAAC15I,KAAKoL,OAAOhN,QAAQ,QAAQ06I,oBAAoB,CAAC94I,KAAKC,QAAQ7B,SAAQ,GAAIu7I,cAAc,CAAC35I,KAAKC,QAAQ7B,SAAQ,GAAI+6B,MAAM,CAACn5B,KAAKoL,OAAOhN,QAAQ,SAASw7I,aAAa,CAAC55I,KAAKoL,OAAOhN,QAAQ,OAAO2M,MAAM,CAAC/K,KAAKoL,OAAOhN,QAAQ,MAAMy7I,eAAe,CAAC75I,KAAKsC,SAASlE,QAAQ,SAASgsE,GAAG,OAAO9pE,KAAKyK,QAAQq/D,EAAE9pE,KAAKw5I,uBAAuB1vE,IAAI,iBAAY,IAAoBA,EAAE,aAAY,EAAGrpC,EAAE3iC,SAASgsE,IAAIA,EAAE/qE,eAAeiB,KAAK64B,OAAOixC,EAAE9pE,KAAK64B,OAAO1I,QAAQ2vF,KAAK,wCAAwC9/G,KAAK64B,MAA7C,uCAA6F,EAAGjV,EAAE9lB,SAASgsE,GAA3G,sDAAwKA,CAAC,GAAG2vE,SAAS,CAAC/5I,KAAKsC,SAASlE,QAAQ,SAASgsE,GAAG9pE,KAAKmM,MAAM,SAAS29D,EAAE,GAAGujD,QAAQ,CAAC3tH,KAAKsC,SAASlE,QAAQ,SAASgsE,GAAG9pE,KAAKmM,MAAM,QAAQ29D,EAAE,GAAG4vE,MAAM,CAACh6I,KAAKsC,SAASlE,QAAQ,WAAWkC,KAAK25I,aAAa35I,KAAKs4I,iBAAiB,GAAGC,SAAS,CAAC74I,KAAKC,QAAQ7B,SAAQ,GAAI87I,SAAS,CAACl6I,KAAKwN,OAAOpP,QAAQ,MAAM+7I,SAAS,CAACn6I,KAAKC,QAAQ7B,SAAQ,GAAIgP,WAAW,CAACpN,KAAKC,QAAQ7B,SAAQ,GAAIg8I,SAAS,CAACp6I,KAAKsC,SAASlE,QAAQ,SAASgsE,EAAEtlE,EAAEkf,GAAG,OAAOlf,GAAG,IAAIzC,cAAchB,QAAQ2iB,EAAE3hB,gBAAgB,CAAC,GAAGiC,OAAO,CAACtE,KAAKsC,SAASlE,QAAQ,SAASgsE,EAAEtlE,GAAG,IAAIkf,EAAE1jB,KAAK,OAAO8pE,EAAE9lE,QAAO,SAAS8lE,GAAG,IAAIxoC,EAAE5d,EAAE61H,eAAezvE,GAAG,MAAM,iBAAiBxoC,IAAIA,EAAEA,EAAEuN,YAAYnrB,EAAEo2H,SAAShwE,EAAExoC,EAAE98B,EAAE,GAAE,GAAGu1I,aAAa,CAACr6I,KAAKsC,SAASlE,QAAQ,SAASgsE,GAAG,MAAM,YAAW,EAAGrpC,EAAE3iC,SAASkC,KAAKg6I,eAAe,MAAMlwE,GAAE,EAAG9R,EAAEl6D,SAAS,CAAC,EAAEkC,KAAK64B,MAAMixC,IAAI9pE,KAAKmM,MAAM,iBAAiB29D,GAAGA,CAAC,GAAGmwE,qBAAqB,CAACv6I,KAAKC,QAAQ7B,SAAQ,GAAIo8I,OAAO,CAACx6I,KAAKC,QAAQ7B,SAAQ,GAAIq8I,QAAQ,CAACz6I,KAAKoL,QAAQ0hB,IAAI,CAAC9sB,KAAKoL,OAAOhN,QAAQ,QAAQ67I,YAAY,CAACj6I,KAAKC,QAAQ7B,SAAQ,IAAKmH,KAAK,WAAW,MAAM,CAAC+c,OAAO,GAAG0O,MAAK,EAAG0pH,aAAa,KAAKJ,eAAe,GAAG,EAAEt3I,MAAM,CAACzF,MAAM,SAAS6sE,GAAG9pE,KAAKo6I,aAAatwE,CAAC,EAAEswE,aAAa,SAAStwE,EAAEtlE,GAAGxE,KAAKkhH,SAASlhH,KAAKy5I,UAASz5I,KAAKy5I,SAAS3vE,GAAQ9pE,KAAKy5I,UAAU3vE,IAAItlE,GAAExE,KAAKy5I,SAAS3vE,EAAO,EAAE/hE,QAAQ,SAAS+hE,GAAG9pE,KAAKg6I,eAAelwE,CAAC,EAAEkwE,eAAe,YAAYh6I,KAAKu4I,UAAUv4I,KAAKi6I,uBAAuBj6I,KAAKo6I,aAAap6I,KAAKkhH,SAAS,GAAG,KAAK,EAAEA,SAAS,SAASp3C,GAAG9pE,KAAKo6I,aAAatwE,EAAE,GAAG,IAAI,GAAG/pE,QAAQ,WAAWC,KAAKo6I,aAAap6I,KAAK/C,MAAM+C,KAAKg6I,eAAeh6I,KAAK+H,QAAQ6C,MAAM,GAAG5K,KAAKs3I,eAAet3I,KAAKwlB,QAAQxlB,KAAKgD,IAAI,iBAAiBhD,KAAKq6I,aAAa,EAAEx3I,QAAQ,CAACyuB,OAAO,SAASw4C,GAAG,IAAI9pE,KAAKs6I,iBAAiBxwE,GAAG,CAAC,GAAG9pE,KAAKu4I,WAAWv4I,KAAKu6I,aAAazwE,KAAKA,EAAE9pE,KAAK+5I,aAAajwE,IAAI9pE,KAAKyK,MAAM,CAAC,IAAIq/D,EAAE/qE,eAAeiB,KAAKyK,OAAO,OAAO0lB,QAAQ2vF,KAAK,wCAAwC9/G,KAAKyK,MAA7C,uCAA6F,EAAGmZ,EAAE9lB,SAASgsE,GAAG,KAAMA,EAAEA,EAAE9pE,KAAKyK,MAAM,CAACzK,KAAKkhH,WAAWlhH,KAAKo6I,aAAap6I,KAAKo6I,aAAa,CAACtwE,GAAG9pE,KAAKkhH,SAASlhH,KAAKo6I,aAAa,GAAGz4I,QAAO,EAAGsJ,EAAEnN,SAASkC,KAAKo6I,cAAc,CAACtwE,IAAI9pE,KAAKo6I,aAAatwE,EAAE9pE,KAAKqtH,QAAQrtH,KAAKo6I,aAAa,CAACp6I,KAAKw6I,cAAc1wE,EAAE,EAAE2wE,SAAS,SAAS3wE,GAAG,IAAItlE,EAAExE,KAAK,GAAGA,KAAKkhH,SAAS,CAAC,IAAIx9F,GAAG,EAAE1jB,KAAKo6I,aAAax2I,SAAQ,SAAS09B,IAAIA,IAAIwoC,GAAGtlE,EAAEiG,OAAO62B,IAAIwoC,EAAEtlE,EAAEiG,QAAQ,iBAAY,IAAoB62B,EAAE,aAAY,EAAGb,EAAE3iC,SAASwjC,KAAKA,EAAE98B,EAAEq0B,SAASixC,EAAEtlE,EAAEq0B,UAAUnV,EAAE4d,EAAE,IAAGthC,KAAKo6I,aAAap6I,KAAKo6I,aAAap2I,QAAO,SAAS8lE,GAAG,OAAOA,IAAIpmD,CAAC,GAAE,MAAM1jB,KAAKo6I,aAAa,KAAKp6I,KAAKqtH,QAAQrtH,KAAKo6I,aAAa,EAAElnH,eAAe,WAAWlzB,KAAKo6I,aAAap6I,KAAKkhH,SAAS,GAAG,KAAKlhH,KAAKqtH,QAAQrtH,KAAKo6I,aAAa,EAAEI,cAAc,SAAS1wE,GAAG9pE,KAAKq5I,gBAAgBr5I,KAAK0wB,MAAM1wB,KAAK0wB,KAAK1wB,KAAK8L,MAAMkW,OAAO04H,QAAQ16I,KAAKw4I,sBAAsBx4I,KAAKgiB,OAAO,GAAG,EAAE24H,eAAe,SAAS7wE,IAAIA,EAAEzsD,SAASrd,KAAK8L,MAAM8uI,eAAe9wE,EAAEzsD,SAASrd,KAAK8L,MAAMkW,QAAQ8nD,EAAEzsD,SAASrd,KAAK8L,MAAM+uI,QAAQ/wE,EAAEzsD,OAAO5b,UAAUs5B,SAAS,iBAAiB+uC,EAAEzsD,SAASrd,KAAKwB,OAAOxB,KAAK0wB,KAAK1wB,KAAK8L,MAAMkW,OAAO04H,OAAO16I,KAAKP,WAAWO,KAAK0wB,MAAK,EAAG1wB,KAAK8L,MAAMkW,OAAO84H,SAAS,EAAER,iBAAiB,SAASxwE,GAAG,IAAItlE,EAAExE,KAAK,OAAOA,KAAK+6I,aAAa1uG,MAAK,SAAS3oB,GAAG,MAAM,iBAAY,IAAoBA,EAAE,aAAY,EAAG+c,EAAE3iC,SAAS4lB,IAAIlf,EAAEw2I,uBAAuBt3H,EAAEomD,GAAGpmD,IAAIomD,GAAGpmD,IAAIomD,EAAEtlE,EAAEiG,MAAM,GAAE,EAAEuwI,uBAAuB,SAASlxE,EAAEtlE,GAAG,SAASxE,KAAKyK,OAAOq/D,IAAItlE,EAAExE,KAAKyK,SAAUq/D,EAAE9pE,KAAK64B,SAASr0B,EAAExE,KAAK64B,QAAQixC,EAAE9pE,KAAK64B,SAASr0B,MAAMxE,KAAKyK,OAAOq/D,EAAE9pE,KAAKyK,SAASjG,EAAExE,KAAKyK,OAAQ,EAAE+uI,uBAAuB,SAAS1vE,GAAG,IAAItlE,EAAExE,KAAK,OAAOA,KAAK+H,QAAQnE,SAAQ,SAAS8f,IAAG,EAAGE,EAAE9lB,SAAS4lB,EAAElf,EAAEiG,WAAU,EAAGmZ,EAAE9lB,SAASgsE,KAAKA,EAAEpmD,EAAE,IAAGomD,CAAC,EAAEmxE,SAAS,WAAWj7I,KAAKgiB,OAAOtjB,OAAOsB,KAAKgiB,OAAO,GAAGhiB,KAAK8L,MAAMkW,OAAO04H,MAAM,EAAEQ,aAAa,WAAW,OAAOl7I,KAAKm7I,WAAWn7I,KAAKo7I,WAAWp7I,KAAKq7I,oBAAoBr7I,KAAKgiB,OAAO,SAAShiB,KAAKs7I,uBAAuBt7I,KAAKm7I,WAAU,EAAG,IAAIn7I,KAAKgiB,OAAOtjB,QAAQ,IAAIsB,KAAK+H,QAAQrJ,YAAYsB,KAAKs7I,0BAAqB,EAAO,EAAEA,mBAAmB,WAAWt7I,KAAK0wB,MAAK,EAAG1wB,KAAKmM,MAAM,cAAc,EAAEovI,cAAc,WAAWv7I,KAAK0wB,MAAK,EAAG1wB,KAAKmM,MAAM,eAAe,EAAEqvI,iBAAiB,YAAYx7I,KAAK8L,MAAMkW,OAAO/kB,MAAMyB,QAAQsB,KAAKo6I,cAAcp6I,KAAKi5I,YAAYj5I,KAAKo6I,aAAap6I,KAAKkhH,SAASlhH,KAAKo6I,aAAaxvI,MAAM,GAAG,GAAG,KAAK,EAAE2vI,aAAa,SAASzwE,GAAG,IAAItlE,EAAExE,KAAK0jB,GAAE,EAAG,OAAO1jB,KAAKg6I,eAAep2I,SAAQ,SAAS09B,IAAG,iBAAY,IAAoBA,EAAE,aAAY,EAAGb,EAAE3iC,SAASwjC,KAAKA,EAAE98B,EAAEq0B,SAASixC,GAAOxoC,IAAIwoC,KAATpmD,GAAE,EAAgB,IAAGA,CAAC,EAAE22H,aAAa,SAASvwE,GAAG9pE,KAAK65I,UAAU75I,KAAKg6I,eAAez0I,KAAKukE,EAAE,EAAE2xE,YAAY,WAAWz7I,KAAKm7I,WAAU,CAAE,EAAEO,UAAU,WAAW17I,KAAKm7I,WAAU,CAAE,GAAG3wH,SAAS,CAACmxH,gBAAgB,WAAW,MAAM,CAACjrH,KAAK1wB,KAAK47I,aAAapxE,QAAQxqE,KAAKkhH,SAASk6B,UAAUp7I,KAAKo7I,UAAUjC,WAAWn5I,KAAKm5I,WAAW0C,cAAc77I,KAAKm5I,WAAW3zH,QAAQxlB,KAAKs3I,eAAewE,IAAI,QAAQ97I,KAAKwsB,IAAI/sB,SAASO,KAAKP,SAAS,EAAE47I,kBAAkB,WAAW,OAAOr7I,KAAKw4I,sBAAsBx4I,KAAKkhH,QAAQ,EAAEk6B,UAAU,WAAW,QAAQp7I,KAAKgiB,MAAM,EAAE45H,aAAa,WAAW,OAAO57I,KAAKk6I,QAASl6I,KAAK0wB,OAAO1wB,KAAKs3I,cAAe,EAAEyE,kBAAkB,WAAW,GAAG/7I,KAAKg8I,cAAch8I,KAAKmmC,YAAY,OAAOnmC,KAAKmmC,WAAW,EAAEgyG,gBAAgB,WAAW,IAAIn4I,KAAK8M,aAAa9M,KAAKu4I,SAAS,OAAOv4I,KAAKg6I,eAAepvI,QAAQ,IAAIk/D,EAAE9pE,KAAKgiB,OAAOtjB,OAAOsB,KAAKgE,OAAOhE,KAAKg6I,eAAeh6I,KAAKgiB,OAAOhiB,MAAMA,KAAKg6I,eAAe,OAAOh6I,KAAKu4I,UAAUv4I,KAAKgiB,OAAOtjB,SAASsB,KAAKu6I,aAAav6I,KAAKgiB,SAAS8nD,EAAEhmB,QAAQ9jD,KAAKgiB,QAAQ8nD,CAAC,EAAEkyE,aAAa,WAAW,OAAOh8I,KAAKo6I,eAAe,YAAW,EAAG35G,EAAE3iC,SAASkC,KAAKo6I,gBAAe,EAAG57I,EAAEV,SAASkC,KAAKo6I,cAAc17I,QAAQsB,KAAK+6I,aAAar8I,OAAO,EAAEq8I,aAAa,WAAW,OAAO/6I,KAAKkhH,UAAUlhH,KAAKo6I,aAAap6I,KAAKo6I,aAAap6I,KAAKo6I,aAAa,GAAGz4I,OAAO3B,KAAKo6I,cAAc,EAAE,EAAE6B,gBAAgB,WAAW,OAAOj8I,KAAKkhH,UAAUlhH,KAAKi5I,YAAYj5I,KAAK0wB,MAAM,MAAM1wB,KAAKo6I,YAAY,GAAG,EAAE,SAAStwE,EAAEtlE,EAAEkf,GAAG,aAAa,SAAS4d,EAAEwoC,GAAG,OAAOA,GAAGA,EAAEjsE,WAAWisE,EAAE,CAAChsE,QAAQgsE,EAAE,CAAChtE,OAAOC,eAAeyH,EAAE,aAAa,CAACvH,OAAM,IAAK,IAAYuB,EAAE8iC,EAAR5d,EAAE,KAAmBzY,EAAEq2B,EAAR5d,EAAE,KAAmBs0C,EAAE12B,EAAR5d,EAAE,KAAWlf,EAAE1G,QAAQ,CAACkoB,KAAKxnB,EAAEV,QAAQo+I,QAAQjxI,EAAEnN,QAAQq+I,cAAcnkF,EAAEl6D,QAAQ,EAAE,SAASgsE,EAAEtlE,EAAEkf,GAAGomD,EAAE9sE,QAAQ,CAACc,QAAQ4lB,EAAE,IAAI7lB,YAAW,EAAG,EAAE,SAASisE,EAAEtlE,EAAEkf,GAAGomD,EAAE9sE,QAAQ,CAACc,QAAQ4lB,EAAE,IAAI7lB,YAAW,EAAG,EAAE,SAASisE,EAAEtlE,EAAEkf,GAAGomD,EAAE9sE,QAAQ,CAACc,QAAQ4lB,EAAE,IAAI7lB,YAAW,EAAG,EAAE,SAASisE,EAAEtlE,EAAEkf,GAAGomD,EAAE9sE,QAAQ,CAACc,QAAQ4lB,EAAE,IAAI7lB,YAAW,EAAG,EAAE,SAASisE,EAAEtlE,EAAEkf,GAAGomD,EAAE9sE,QAAQ,CAACc,QAAQ4lB,EAAE,IAAI7lB,YAAW,EAAG,EAAE,SAASisE,EAAEtlE,EAAEkf,GAAGomD,EAAE9sE,QAAQ,CAACc,QAAQ4lB,EAAE,IAAI7lB,YAAW,EAAG,EAAE,SAASisE,EAAEtlE,EAAEkf,GAAG,aAAa,SAAS4d,EAAEwoC,GAAG,OAAOA,GAAGA,EAAEjsE,WAAWisE,EAAE,CAAChsE,QAAQgsE,EAAE,CAACtlE,EAAE3G,YAAW,EAAG,IAAYW,EAAE8iC,EAAR5d,EAAE,KAAWlf,EAAE1G,QAAQ,SAASgsE,EAAEtlE,EAAEkf,GAAG,OAAOlf,KAAKslE,GAAE,EAAGtrE,EAAEV,SAASgsE,EAAEtlE,EAAE,CAACvH,MAAMymB,EAAEnG,YAAW,EAAGC,cAAa,EAAGC,UAAS,IAAKqsD,EAAEtlE,GAAGkf,EAAEomD,CAAC,CAAC,EAAE,SAASA,EAAEtlE,EAAEkf,GAAG,aAAa,SAAS4d,EAAEwoC,GAAG,OAAOA,GAAGA,EAAEjsE,WAAWisE,EAAE,CAAChsE,QAAQgsE,EAAE,CAACtlE,EAAE3G,YAAW,EAAG,IAAYW,EAAE8iC,EAAR5d,EAAE,KAAWlf,EAAE1G,QAAQ,SAASgsE,GAAG,GAAGxrE,MAAMC,QAAQurE,GAAG,CAAC,IAAI,IAAItlE,EAAE,EAAEkf,EAAEplB,MAAMwrE,EAAEprE,QAAQ8F,EAAEslE,EAAEprE,OAAO8F,IAAIkf,EAAElf,GAAGslE,EAAEtlE,GAAG,OAAOkf,CAAC,CAAC,OAAM,EAAGllB,EAAEV,SAASgsE,EAAE,CAAC,EAAE,SAASA,EAAEtlE,EAAEkf,GAAG,aAAa,SAAS4d,EAAEwoC,GAAG,OAAOA,GAAGA,EAAEjsE,WAAWisE,EAAE,CAAChsE,QAAQgsE,EAAE,CAACtlE,EAAE3G,YAAW,EAAG,IAAYW,EAAE8iC,EAAR5d,EAAE,KAAmBzY,EAAEq2B,EAAR5d,EAAE,KAAW+3C,EAAE,mBAAmBxwD,EAAEnN,SAAS,iBAAiBU,EAAEV,QAAQ,SAASgsE,GAAG,cAAcA,CAAC,EAAE,SAASA,GAAG,OAAOA,GAAG,mBAAmB7+D,EAAEnN,SAASgsE,EAAE5rE,cAAc+M,EAAEnN,SAASgsE,IAAI7+D,EAAEnN,QAAQK,UAAU,gBAAgB2rE,CAAC,EAAEtlE,EAAE1G,QAAQ,mBAAmBmN,EAAEnN,SAAS,WAAW29D,EAAEj9D,EAAEV,SAAS,SAASgsE,GAAG,YAAM,IAAoBA,EAAE,YAAYrO,EAAEqO,EAAE,EAAE,SAASA,GAAG,OAAOA,GAAG,mBAAmB7+D,EAAEnN,SAASgsE,EAAE5rE,cAAc+M,EAAEnN,SAASgsE,IAAI7+D,EAAEnN,QAAQK,UAAU,cAAS,IAAoB2rE,EAAE,YAAYrO,EAAEqO,EAAE,CAAC,EAAE,SAASA,EAAEtlE,EAAEkf,GAAGA,EAAE,IAAIA,EAAE,IAAIomD,EAAE9sE,QAAQ0mB,EAAE,GAAGplB,MAAMK,IAAI,EAAE,SAASmrE,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,GAAGm9C,EAAEv/B,EAAE/+B,OAAO++B,EAAE/+B,KAAK,CAACC,UAAUD,KAAKC,YAAYsnE,EAAE9sE,QAAQ,SAAS8sE,GAAG,OAAOjJ,EAAEr+D,UAAUmC,MAAMk8D,EAAEj8D,UAAU,CAAC,EAAE,SAASklE,EAAEtlE,EAAEkf,GAAGA,EAAE,IAAI,IAAI4d,EAAE5d,EAAE,GAAG5mB,OAAOgtE,EAAE9sE,QAAQ,SAAS8sE,EAAEtlE,EAAEkf,GAAG,OAAO4d,EAAEvkC,eAAe+sE,EAAEtlE,EAAEkf,EAAE,CAAC,EAAE,SAASomD,EAAEtlE,EAAEkf,GAAGA,EAAE,IAAIomD,EAAE9sE,QAAQ0mB,EAAE,GAAG5mB,OAAO4L,IAAI,EAAE,SAASohE,EAAEtlE,EAAEkf,GAAGA,EAAE,IAAIA,EAAE,IAAIA,EAAE,IAAIA,EAAE,IAAIomD,EAAE9sE,QAAQ0mB,EAAE,GAAG1lB,MAAM,EAAE,SAAS8rE,EAAEtlE,EAAEkf,GAAGA,EAAE,IAAIA,EAAE,IAAIomD,EAAE9sE,QAAQ0mB,EAAE,IAAIE,EAAE,WAAW,EAAE,SAASkmD,EAAEtlE,GAAGslE,EAAE9sE,QAAQ,SAAS8sE,GAAG,GAAG,mBAAmBA,EAAE,MAAM/rD,UAAU+rD,EAAE,uBAAuB,OAAOA,CAAC,CAAC,EAAE,SAASA,EAAEtlE,GAAGslE,EAAE9sE,QAAQ,WAAW,CAAC,EAAE,SAAS8sE,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,GAAGm9C,EAAEn9C,EAAE,IAAIllB,EAAEklB,EAAE,IAAIomD,EAAE9sE,QAAQ,SAAS8sE,GAAG,OAAO,SAAStlE,EAAEkf,EAAED,GAAG,IAAIxY,EAAEwwD,EAAEn6B,EAAE98B,GAAGwzD,EAAE6I,EAAEpF,EAAE/8D,QAAQihC,EAAEnhC,EAAEilB,EAAEu0C,GAAG,GAAG8R,GAAGpmD,GAAGA,GAAG,KAAKs0C,EAAEr4B,GAAG,IAAG10B,EAAEwwD,EAAE97B,OAAQ10B,EAAE,OAAM,OAAQ,KAAK+sD,EAAEr4B,EAAEA,IAAI,IAAImqC,GAAGnqC,KAAK87B,IAAIA,EAAE97B,KAAKjc,EAAE,OAAOomD,GAAGnqC,GAAG,EAAE,OAAOmqC,IAAI,CAAC,CAAC,CAAC,EAAE,SAASA,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,IAAIm9C,EAAEn9C,EAAE,EAAFA,CAAK,eAAellB,EAAE,aAAa8iC,EAAE,WAAW,OAAO18B,SAAS,CAA3B,IAAgC6e,EAAE,SAASqmD,EAAEtlE,GAAG,IAAI,OAAOslE,EAAEtlE,EAAE,CAAC,MAAMslE,GAAG,CAAC,EAAEA,EAAE9sE,QAAQ,SAAS8sE,GAAG,IAAItlE,EAAEkf,EAAEzY,EAAE,YAAO,IAAS6+D,EAAE,YAAY,OAAOA,EAAE,OAAO,iBAAiBpmD,EAAED,EAAEjf,EAAE1H,OAAOgtE,GAAGjJ,IAAIn9C,EAAEllB,EAAE8iC,EAAE98B,GAAG,WAAWyG,EAAEq2B,EAAE98B,KAAK,mBAAmBA,EAAE43I,OAAO,YAAYnxI,CAAC,CAAC,EAAE,SAAS6+D,EAAEtlE,EAAEkf,GAAG,aAAa,IAAI4d,EAAE5d,EAAE,GAAGm9C,EAAEn9C,EAAE,IAAIomD,EAAE9sE,QAAQ,SAAS8sE,EAAEtlE,EAAEkf,GAAGlf,KAAKslE,EAAExoC,EAAE1d,EAAEkmD,EAAEtlE,EAAEq8D,EAAE,EAAEn9C,IAAIomD,EAAEtlE,GAAGkf,CAAC,CAAC,EAAE,SAASomD,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,IAAIm9C,EAAEn9C,EAAE,IAAIllB,EAAEklB,EAAE,IAAIomD,EAAE9sE,QAAQ,SAAS8sE,GAAG,IAAItlE,EAAE88B,EAAEwoC,GAAGpmD,EAAEm9C,EAAEj9C,EAAE,GAAGF,EAAE,IAAI,IAAID,EAAExY,EAAEyY,EAAEomD,GAAGrO,EAAEj9D,EAAEolB,EAAEo0C,EAAE,EAAE/sD,EAAEvM,OAAOs5D,GAAGyD,EAAEz8D,KAAK8qE,EAAErmD,EAAExY,EAAE+sD,OAAOxzD,EAAEe,KAAKke,GAAG,OAAOjf,CAAC,CAAC,EAAE,SAASslE,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,GAAGte,SAAS0kE,EAAE9sE,QAAQskC,GAAGA,EAAE+6G,eAAe,EAAE,SAASvyE,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,IAAIomD,EAAE9sE,QAAQF,OAAO,KAAKq0F,qBAAqB,GAAGr0F,OAAO,SAASgtE,GAAG,MAAM,UAAUxoC,EAAEwoC,GAAGA,EAAErhE,MAAM,IAAI3L,OAAOgtE,EAAE,CAAC,EAAE,SAASA,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,IAAIm9C,EAAEn9C,EAAE,EAAFA,CAAK,YAAYllB,EAAEF,MAAMH,UAAU2rE,EAAE9sE,QAAQ,SAAS8sE,GAAG,YAAO,IAASA,IAAIxoC,EAAEhjC,QAAQwrE,GAAGtrE,EAAEqiE,KAAKiJ,EAAE,CAAC,EAAE,SAASA,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,IAAIomD,EAAE9sE,QAAQsB,MAAMC,SAAS,SAASurE,GAAG,MAAM,SAASxoC,EAAEwoC,EAAE,CAAC,EAAE,SAASA,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,GAAGomD,EAAE9sE,QAAQ,SAAS8sE,EAAEtlE,EAAEkf,EAAEm9C,GAAG,IAAI,OAAOA,EAAEr8D,EAAE88B,EAAE5d,GAAG,GAAGA,EAAE,IAAIlf,EAAEkf,EAAE,CAAC,MAAMlf,GAAG,IAAIhG,EAAEsrE,EAAE/iE,OAAO,WAAM,IAASvI,GAAG8iC,EAAE9iC,EAAEQ,KAAK8qE,IAAItlE,CAAC,CAAC,CAAC,EAAE,SAASslE,EAAEtlE,EAAEkf,GAAG,aAAa,IAAI4d,EAAE5d,EAAE,IAAIm9C,EAAEn9C,EAAE,IAAIllB,EAAEklB,EAAE,IAAID,EAAE,CAAC,EAAEC,EAAE,EAAFA,CAAKD,EAAEC,EAAE,EAAFA,CAAK,aAAY,WAAW,OAAO1jB,IAAI,IAAG8pE,EAAE9sE,QAAQ,SAAS8sE,EAAEtlE,EAAEkf,GAAGomD,EAAE3rE,UAAUmjC,EAAE7d,EAAE,CAACrd,KAAKy6D,EAAE,EAAEn9C,KAAKllB,EAAEsrE,EAAEtlE,EAAE,YAAY,CAAC,EAAE,SAASslE,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,EAAFA,CAAK,YAAYm9C,GAAE,EAAG,IAAI,IAAIriE,EAAE,CAAC,GAAG8iC,KAAK9iC,EAAEuI,OAAO,WAAW85D,GAAE,CAAE,EAAEviE,MAAMK,KAAKH,GAAE,WAAW,MAAM,CAAC,GAAE,CAAC,MAAMsrE,GAAG,CAACA,EAAE9sE,QAAQ,SAAS8sE,EAAEtlE,GAAG,IAAIA,IAAIq8D,EAAE,OAAM,EAAG,IAAIn9C,GAAE,EAAG,IAAI,IAAIllB,EAAE,CAAC,GAAGilB,EAAEjlB,EAAE8iC,KAAK7d,EAAErd,KAAK,WAAW,MAAM,CAACC,KAAKqd,GAAE,EAAG,EAAEllB,EAAE8iC,GAAG,WAAW,OAAO7d,CAAC,EAAEqmD,EAAEtrE,EAAE,CAAC,MAAMsrE,GAAG,CAAC,OAAOpmD,CAAC,CAAC,EAAE,SAASomD,EAAEtlE,GAAGslE,EAAE9sE,QAAQ,SAAS8sE,EAAEtlE,GAAG,MAAM,CAACvH,MAAMuH,EAAE6B,OAAOyjE,EAAE,CAAC,EAAE,SAASA,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,GAAFA,CAAM,QAAQm9C,EAAEn9C,EAAE,IAAIllB,EAAEklB,EAAE,GAAGD,EAAEC,EAAE,GAAGE,EAAE3Y,EAAE,EAAEwwD,EAAE3+D,OAAOw/I,cAAc,WAAW,OAAM,CAAE,EAAEtkF,GAAGt0C,EAAE,GAAFA,EAAM,WAAW,OAAO+3C,EAAE3+D,OAAOy/I,kBAAkB,CAAC,GAAG,IAAG58G,EAAE,SAASmqC,GAAGrmD,EAAEqmD,EAAExoC,EAAE,CAACrkC,MAAM,CAACuB,EAAE,OAAOyM,EAAE6yE,EAAE,CAAC,IAAI,EAAEl6D,EAAE,SAASkmD,EAAEtlE,GAAG,IAAIq8D,EAAEiJ,GAAG,MAAM,iBAAiBA,EAAEA,GAAG,iBAAiBA,EAAE,IAAI,KAAKA,EAAE,IAAItrE,EAAEsrE,EAAExoC,GAAG,CAAC,IAAIm6B,EAAEqO,GAAG,MAAM,IAAI,IAAItlE,EAAE,MAAM,IAAIm7B,EAAEmqC,EAAE,CAAC,OAAOA,EAAExoC,GAAG9iC,CAAC,EAAE0mI,EAAE,SAASp7D,EAAEtlE,GAAG,IAAIhG,EAAEsrE,EAAExoC,GAAG,CAAC,IAAIm6B,EAAEqO,GAAG,OAAM,EAAG,IAAItlE,EAAE,OAAM,EAAGm7B,EAAEmqC,EAAE,CAAC,OAAOA,EAAExoC,GAAGw8C,CAAC,EAAEr9C,EAAE,SAASqpC,GAAG,OAAO9R,GAAG74D,EAAEq9I,MAAM/gF,EAAEqO,KAAKtrE,EAAEsrE,EAAExoC,IAAI3B,EAAEmqC,GAAGA,CAAC,EAAE3qE,EAAE2qE,EAAE9sE,QAAQ,CAACy/I,IAAIn7G,EAAEk7G,MAAK,EAAGE,QAAQ94H,EAAE+4H,QAAQzX,EAAE0X,SAASn8G,EAAE,EAAE,SAASqpC,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,GAAGm9C,EAAEn9C,EAAE,GAAGllB,EAAEklB,EAAE,IAAIomD,EAAE9sE,QAAQ0mB,EAAE,GAAG5mB,OAAOsgB,iBAAiB,SAAS0sD,EAAEtlE,GAAGq8D,EAAEiJ,GAAG,IAAI,IAAIpmD,EAAED,EAAEjlB,EAAEgG,GAAGyG,EAAEwY,EAAE/kB,OAAO+8D,EAAE,EAAExwD,EAAEwwD,GAAGn6B,EAAE1d,EAAEkmD,EAAEpmD,EAAED,EAAEg4C,KAAKj3D,EAAEkf,IAAI,OAAOomD,CAAC,CAAC,EAAE,SAASA,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,IAAIm9C,EAAEn9C,EAAE,IAAIllB,EAAEklB,EAAE,GAAGD,EAAEC,EAAE,IAAIzY,EAAEyY,EAAE,GAAG+3C,EAAE/3C,EAAE,IAAIs0C,EAAEl7D,OAAO+/I,yBAAyBr4I,EAAEof,EAAEF,EAAE,GAAGs0C,EAAE,SAAS8R,EAAEtlE,GAAG,GAAGslE,EAAEtrE,EAAEsrE,GAAGtlE,EAAEif,EAAEjf,GAAE,GAAIi3D,EAAE,IAAI,OAAOzD,EAAE8R,EAAEtlE,EAAE,CAAC,MAAMslE,GAAG,CAAC,GAAG7+D,EAAE6+D,EAAEtlE,GAAG,OAAOq8D,GAAGv/B,EAAE1d,EAAE5kB,KAAK8qE,EAAEtlE,GAAGslE,EAAEtlE,GAAG,CAAC,EAAE,SAASslE,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,GAAGm9C,EAAEn9C,EAAE,IAAIE,EAAEplB,EAAE,CAAC,EAAEqwC,SAASprB,EAAE,iBAAiBxF,QAAQA,QAAQnhB,OAAOi8I,oBAAoBj8I,OAAOi8I,oBAAoB96H,QAAQ,GAAGhT,EAAE,SAAS6+D,GAAG,IAAI,OAAOjJ,EAAEiJ,EAAE,CAAC,MAAMA,GAAG,OAAOrmD,EAAE7Y,OAAO,CAAC,EAAEk/D,EAAE9sE,QAAQ4mB,EAAE,SAASkmD,GAAG,OAAOrmD,GAAG,mBAAmBjlB,EAAEQ,KAAK8qE,GAAG7+D,EAAE6+D,GAAGjJ,EAAEv/B,EAAEwoC,GAAG,CAAC,EAAE,SAASA,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,GAAGm9C,EAAEn9C,EAAE,IAAIllB,EAAEklB,EAAE,GAAFA,CAAM,YAAYD,EAAE3mB,OAAOqB,UAAU2rE,EAAE9sE,QAAQF,OAAOk0F,gBAAgB,SAASlnB,GAAG,OAAOA,EAAEjJ,EAAEiJ,GAAGxoC,EAAEwoC,EAAEtrE,GAAGsrE,EAAEtrE,GAAG,mBAAmBsrE,EAAE5rE,aAAa4rE,aAAaA,EAAE5rE,YAAY4rE,EAAE5rE,YAAYC,UAAU2rE,aAAahtE,OAAO2mB,EAAE,IAAI,CAAC,EAAE,SAASqmD,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,IAAIm9C,EAAEn9C,EAAE,GAAGllB,EAAEklB,EAAE,IAAIomD,EAAE9sE,QAAQ,SAAS8sE,EAAEtlE,GAAG,IAAIkf,GAAGm9C,EAAE/jE,QAAQ,CAAC,GAAGgtE,IAAIhtE,OAAOgtE,GAAGrmD,EAAE,CAAC,EAAEA,EAAEqmD,GAAGtlE,EAAEkf,GAAG4d,EAAEA,EAAEqiG,EAAEriG,EAAE21G,EAAEz4I,GAAE,WAAWklB,EAAE,EAAE,IAAG,SAASD,EAAE,CAAC,EAAE,SAASqmD,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,IAAIm9C,EAAEn9C,EAAE,IAAIomD,EAAE9sE,QAAQ,SAAS8sE,GAAG,OAAO,SAAStlE,EAAEkf,GAAG,IAAIllB,EAAEilB,EAAExY,EAAEH,OAAO+1D,EAAEr8D,IAAIi3D,EAAEn6B,EAAE5d,GAAGs0C,EAAE/sD,EAAEvM,OAAO,OAAO+8D,EAAE,GAAGA,GAAGzD,EAAE8R,EAAE,QAAG,GAAQtrE,EAAEyM,EAAE4sD,WAAW4D,IAAK,OAAOj9D,EAAE,OAAOi9D,EAAE,IAAIzD,IAAIv0C,EAAExY,EAAE4sD,WAAW4D,EAAE,IAAI,OAAOh4C,EAAE,MAAMqmD,EAAE7+D,EAAEP,OAAO+wD,GAAGj9D,EAAEsrE,EAAE7+D,EAAEL,MAAM6wD,EAAEA,EAAE,GAAkBh4C,EAAE,OAAhBjlB,EAAE,OAAO,IAAc,KAAM,CAAC,CAAC,EAAE,SAASsrE,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,IAAIm9C,EAAEj9B,KAAKC,IAAIrlC,EAAEolC,KAAK6pC,IAAI3D,EAAE9sE,QAAQ,SAAS8sE,EAAEtlE,GAAG,OAAOslE,EAAExoC,EAAEwoC,IAAK,EAAEjJ,EAAEiJ,EAAEtlE,EAAE,GAAGhG,EAAEsrE,EAAEtlE,EAAE,CAAC,EAAE,SAASslE,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,IAAIm9C,EAAEn9C,EAAE,EAAFA,CAAK,YAAYllB,EAAEklB,EAAE,IAAIomD,EAAE9sE,QAAQ0mB,EAAE,GAAGo5H,kBAAkB,SAAShzE,GAAG,GAAG,MAAQA,EAAE,OAAOA,EAAEjJ,IAAIiJ,EAAE,eAAetrE,EAAE8iC,EAAEwoC,GAAG,CAAC,EAAE,SAASA,EAAEtlE,EAAEkf,GAAG,aAAa,IAAI4d,EAAE5d,EAAE,IAAIm9C,EAAEn9C,EAAE,IAAIllB,EAAEklB,EAAE,IAAID,EAAEC,EAAE,IAAIzY,EAAEyY,EAAE,IAAI+3C,EAAE/3C,EAAE,IAAIs0C,EAAEt0C,EAAE,IAAIic,EAAEjc,EAAE,IAAIm9C,EAAEA,EAAE8iE,EAAE9iE,EAAEo2E,GAAGvzH,EAAE,GAAFA,EAAM,SAASomD,GAAGxrE,MAAMK,KAAKmrE,EAAE,IAAG,QAAQ,CAACnrE,KAAK,SAASmrE,GAAG,IAAItlE,EAAEkf,EAAEm9C,EAAEj9C,EAAEshH,EAAE1mI,EAAEsrE,GAAGrpC,EAAE,mBAAmBzgC,KAAKA,KAAK1B,MAAMa,EAAEyF,UAAUlG,OAAOslC,EAAE7kC,EAAE,EAAEyF,UAAU,QAAG,EAAOuvB,OAAE,IAAS6P,EAAE0B,EAAE,EAAE8kD,EAAE7qD,EAAEulG,GAAG,GAAG/wG,IAAI6P,EAAE1C,EAAE0C,EAAE7kC,EAAE,EAAEyF,UAAU,QAAG,EAAO,IAAI,MAAQ4lF,GAAG/pD,GAAGniC,OAAO2M,EAAEu/E,GAAG,IAAkB9mE,EAAE,IAAI+c,EAApBj8B,EAAEi3D,EAAEypE,EAAExmI,SAAmB8F,EAAEkhC,EAAEA,IAAIsyB,EAAEt0C,EAAEgiB,EAAEvR,EAAE6P,EAAEkhG,EAAEx/F,GAAGA,GAAGw/F,EAAEx/F,SAAS,IAAI9hB,EAAE4mE,EAAExrF,KAAKkmI,GAAGxhH,EAAE,IAAI+c,IAAIogC,EAAEj9C,EAAExd,QAAQC,KAAKq/B,IAAIsyB,EAAEt0C,EAAEgiB,EAAEvR,EAAE1Q,EAAEG,EAAEogB,EAAE,CAAC68B,EAAE5jE,MAAMyoC,IAAG,GAAIm7B,EAAE5jE,OAAO,OAAOymB,EAAEhlB,OAAOgnC,EAAEhiB,CAAC,GAAG,EAAE,SAASomD,EAAEtlE,EAAEkf,GAAG,aAAa,IAAI4d,EAAE5d,EAAE,IAAIm9C,EAAEn9C,EAAE,IAAIllB,EAAEklB,EAAE,IAAID,EAAEC,EAAE,GAAGomD,EAAE9sE,QAAQ0mB,EAAE,GAAFA,CAAMplB,MAAM,SAAQ,SAASwrE,EAAEtlE,GAAGxE,KAAKg5I,GAAGv1H,EAAEqmD,GAAG9pE,KAAKyuI,GAAG,EAAEzuI,KAAK+8I,GAAGv4I,CAAC,IAAE,WAAW,IAAIslE,EAAE9pE,KAAKg5I,GAAGx0I,EAAExE,KAAK+8I,GAAGr5H,EAAE1jB,KAAKyuI,KAAK,OAAO3kE,GAAGpmD,GAAGomD,EAAEprE,QAAQsB,KAAKg5I,QAAG,EAAOn4E,EAAE,IAAcA,EAAE,EAAZ,QAAQr8D,EAAMkf,EAAG,UAAUlf,EAAMslE,EAAEpmD,GAAQ,CAACA,EAAEomD,EAAEpmD,IAAI,GAAE,UAAUllB,EAAEw+I,UAAUx+I,EAAEF,MAAMgjC,EAAE,QAAQA,EAAE,UAAUA,EAAE,UAAU,EAAE,SAASwoC,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,IAAI4d,EAAEA,EAAEqiG,EAAEriG,EAAE21G,GAAGvzH,EAAE,GAAG,SAAS,CAAC3mB,eAAe2mB,EAAE,GAAGE,GAAG,EAAE,SAASkmD,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,IAAIm9C,EAAEn9C,EAAE,IAAIA,EAAE,GAAFA,CAAM,QAAO,WAAW,OAAO,SAASomD,GAAG,OAAOjJ,EAAEv/B,EAAEwoC,GAAG,CAAC,GAAE,EAAE,SAASA,EAAEtlE,GAAG,EAAE,SAASslE,EAAEtlE,EAAEkf,GAAG,aAAa,IAAI4d,EAAE5d,EAAE,GAAGm9C,EAAEn9C,EAAE,GAAGllB,EAAEklB,EAAE,GAAGD,EAAEC,EAAE,IAAIzY,EAAEyY,EAAE,IAAI+3C,EAAE/3C,EAAE,IAAI+4H,IAAIzkF,EAAEt0C,EAAE,IAAIic,EAAEjc,EAAE,IAAIE,EAAEF,EAAE,IAAIwhH,EAAExhH,EAAE,IAAI+c,EAAE/c,EAAE,GAAGvkB,EAAEukB,EAAE,IAAIsgB,EAAEtgB,EAAE,IAAIyQ,EAAEzQ,EAAE,IAAIgiB,EAAEhiB,EAAE,IAAI8mE,EAAE9mE,EAAE,GAAGkyC,EAAElyC,EAAE,IAAII,EAAEJ,EAAE,GAAGo6D,EAAEp6D,EAAE,IAAIigH,EAAEjgH,EAAE,IAAI0gH,EAAE1gH,EAAE,IAAIksE,EAAElsE,EAAE,IAAI+0H,EAAE/0H,EAAE,IAAIy3C,EAAEz3C,EAAE,GAAG03C,EAAE13C,EAAE,IAAIyhH,EAAEsT,EAAE70H,EAAE6+G,EAAEtnE,EAAEv3C,EAAE80H,EAAE9oD,EAAEhsE,EAAE4gH,EAAEljG,EAAEtjC,OAAO0kI,EAAEphG,EAAE/+B,KAAKo2I,EAAEjW,GAAGA,EAAElgI,UAAUygI,EAAE,YAAYK,EAAE7iG,EAAE,WAAWw2G,EAAEx2G,EAAE,eAAew8G,EAAE,CAAC,EAAE9rD,qBAAqBwxC,EAAEhjG,EAAE,mBAAmBhgB,EAAEggB,EAAE,WAAWmjG,EAAEnjG,EAAE,cAAc2iG,EAAExlI,OAAOmmI,GAAGqB,EAAE,mBAAmBE,EAAEjB,EAAEjiG,EAAE47G,QAAQnb,GAAGwB,IAAIA,EAAEN,KAAKM,EAAEN,GAAGka,UAAUC,EAAE5+I,GAAGw5D,GAAE,WAAW,OAAO,GAAGosE,EAAE3B,EAAE,CAAC,EAAE,IAAI,CAACvuG,IAAI,WAAW,OAAOuuG,EAAEziI,KAAK,IAAI,CAAC/C,MAAM,IAAIgO,CAAC,KAAKA,CAAC,IAAG,SAAS6+D,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE6jG,EAAE7C,EAAE99H,GAAG88B,UAAUghG,EAAE99H,GAAGi+H,EAAE34D,EAAEtlE,EAAEkf,GAAG4d,GAAGwoC,IAAIw4D,GAAGG,EAAEH,EAAE99H,EAAE88B,EAAE,EAAEmhG,EAAE2U,EAAE,SAASttE,GAAG,IAAItlE,EAAEmb,EAAEmqD,GAAGs6D,EAAEI,EAAEvB,IAAI,OAAOz+H,EAAEu4I,GAAGjzE,EAAEtlE,CAAC,EAAE0yI,EAAE5S,GAAG,iBAAiBE,EAAEvmI,SAAS,SAAS6rE,GAAG,MAAM,iBAAiBA,CAAC,EAAE,SAASA,GAAG,OAAOA,aAAa06D,CAAC,EAAEhB,EAAE,SAAS15D,EAAEtlE,EAAEkf,GAAG,OAAOomD,IAAIw4D,GAAGkB,EAAEV,EAAEt+H,EAAEkf,GAAG8mE,EAAE1gB,GAAGtlE,EAAEs5E,EAAEt5E,GAAE,GAAIgmF,EAAE9mE,GAAGm9C,EAAElhD,EAAEnb,IAAIkf,EAAEnG,YAAYsjD,EAAEiJ,EAAEw5D,IAAIx5D,EAAEw5D,GAAG9+H,KAAKslE,EAAEw5D,GAAG9+H,IAAG,GAAIkf,EAAE0gH,EAAE1gH,EAAE,CAACnG,WAAWomH,EAAE,GAAE,OAAQ9iE,EAAEiJ,EAAEw5D,IAAIb,EAAE34D,EAAEw5D,EAAEK,EAAE,EAAE,CAAC,IAAI75D,EAAEw5D,GAAG9+H,IAAG,GAAI44I,EAAEtzE,EAAEtlE,EAAEkf,IAAI++G,EAAE34D,EAAEtlE,EAAEkf,EAAE,EAAEy+G,EAAE,SAASr4D,EAAEtlE,GAAGgmF,EAAE1gB,GAAG,IAAI,IAAIpmD,EAAE4d,EAAEnN,EAAE3vB,EAAEsf,EAAEtf,IAAIq8D,EAAE,EAAEriE,EAAE8iC,EAAE5iC,OAAOF,EAAEqiE,GAAG2iE,EAAE15D,EAAEpmD,EAAE4d,EAAEu/B,KAAKr8D,EAAEkf,IAAI,OAAOomD,CAAC,EAAEuU,EAAE,SAASvU,EAAEtlE,GAAG,YAAO,IAASA,EAAE4/H,EAAEt6D,GAAGq4D,EAAEiC,EAAEt6D,GAAGtlE,EAAE,EAAE+9H,EAAE,SAASz4D,GAAG,IAAItlE,EAAEy4I,EAAEj+I,KAAKgB,KAAK8pE,EAAEgU,EAAEhU,GAAE,IAAK,QAAQ9pE,OAAOsiI,GAAGzhE,EAAElhD,EAAEmqD,KAAKjJ,EAAEiiE,EAAEh5D,QAAQtlE,IAAIq8D,EAAE7gE,KAAK8pE,KAAKjJ,EAAElhD,EAAEmqD,IAAIjJ,EAAE7gE,KAAKsjI,IAAItjI,KAAKsjI,GAAGx5D,KAAKtlE,EAAE,EAAE64I,EAAE,SAASvzE,EAAEtlE,GAAG,GAAGslE,EAAEhmD,EAAEgmD,GAAGtlE,EAAEs5E,EAAEt5E,GAAE,GAAIslE,IAAIw4D,IAAIzhE,EAAElhD,EAAEnb,IAAIq8D,EAAEiiE,EAAEt+H,GAAG,CAAC,IAAIkf,EAAEyhH,EAAEr7D,EAAEtlE,GAAG,OAAOkf,IAAIm9C,EAAElhD,EAAEnb,IAAIq8D,EAAEiJ,EAAEw5D,IAAIx5D,EAAEw5D,GAAG9+H,KAAKkf,EAAEnG,YAAW,GAAImG,CAAC,CAAC,EAAEqgH,EAAE,SAASj6D,GAAG,IAAI,IAAItlE,EAAEkf,EAAEg1H,EAAE50H,EAAEgmD,IAAIxoC,EAAE,GAAG9iC,EAAE,EAAEklB,EAAEhlB,OAAOF,GAAGqiE,EAAElhD,EAAEnb,EAAEkf,EAAEllB,OAAOgG,GAAG8+H,GAAG9+H,GAAGi3D,GAAGn6B,EAAE/7B,KAAKf,GAAG,OAAO88B,CAAC,EAAEg8G,GAAG,SAASxzE,GAAG,IAAI,IAAItlE,EAAEkf,EAAEomD,IAAIw4D,EAAEhhG,EAAEo3G,EAAEh1H,EAAEo/G,EAAEh/G,EAAEgmD,IAAItrE,EAAE,GAAGilB,EAAE,EAAE6d,EAAE5iC,OAAO+kB,IAAIo9C,EAAElhD,EAAEnb,EAAE88B,EAAE7d,OAAOC,IAAIm9C,EAAEyhE,EAAE99H,IAAIhG,EAAE+G,KAAKoa,EAAEnb,IAAI,OAAOhG,CAAC,EAAE8lI,IAAIE,EAAE,WAAW,GAAGxkI,gBAAgBwkI,EAAE,MAAMzmH,UAAU,gCAAgC,IAAI+rD,EAAEo7D,EAAEtgI,UAAUlG,OAAO,EAAEkG,UAAU,QAAG,GAAQJ,EAAE,SAASkf,GAAG1jB,OAAOsiI,GAAG99H,EAAExF,KAAK8jI,EAAEp/G,GAAGm9C,EAAE7gE,KAAKsjI,IAAIziE,EAAE7gE,KAAKsjI,GAAGx5D,KAAK9pE,KAAKsjI,GAAGx5D,IAAG,GAAIszE,EAAEp9I,KAAK8pE,EAAE65D,EAAE,EAAEjgH,GAAG,EAAE,OAAOllB,GAAGujI,GAAGqb,EAAE9a,EAAEx4D,EAAE,CAACtsD,cAAa,EAAGwgB,IAAIx5B,IAAI4yI,EAAEttE,EAAE,EAAE7+D,EAAEu5H,EAAEvB,GAAG,YAAW,WAAW,OAAOjjI,KAAK+8I,EAAE,IAAGtE,EAAE70H,EAAEy5H,EAAEliF,EAAEv3C,EAAE4/G,EAAE9/G,EAAE,IAAIE,EAAEgsE,EAAEhsE,EAAEmgH,EAAErgH,EAAE,IAAIE,EAAE2+G,EAAE7+G,EAAE,IAAIE,EAAE05H,GAAG9+I,IAAIklB,EAAE,KAAKzY,EAAEq3H,EAAE,uBAAuBC,GAAE,GAAIpjI,EAAEykB,EAAE,SAASkmD,GAAG,OAAOstE,EAAE32G,EAAEqpC,GAAG,GAAGrmD,EAAEA,EAAEs+G,EAAEt+G,EAAEyzH,EAAEzzH,EAAEwzH,GAAG3S,EAAE,CAACtmI,OAAOwmI,IAAI,IAAI,IAAI+Y,GAAG,iHAAiH90I,MAAM,KAAK+0I,GAAG,EAAED,GAAG7+I,OAAO8+I,IAAI/8G,EAAE88G,GAAGC,OAAO,IAAI,IAAIC,GAAGriF,EAAE36B,EAAEq2G,OAAO4G,GAAG,EAAED,GAAG/+I,OAAOg/I,IAAI15G,EAAEy5G,GAAGC,OAAOj6H,EAAEA,EAAEkgH,EAAElgH,EAAEwzH,GAAG3S,EAAE,SAAS,CAACqZ,IAAI,SAAS7zE,GAAG,OAAOjJ,EAAE8hE,EAAE74D,GAAG,IAAI64D,EAAE74D,GAAG64D,EAAE74D,GAAG06D,EAAE16D,EAAE,EAAE8zE,OAAO,SAAS9zE,GAAG,IAAIotE,EAAEptE,GAAG,MAAM/rD,UAAU+rD,EAAE,qBAAqB,IAAI,IAAItlE,KAAKm+H,EAAE,GAAGA,EAAEn+H,KAAKslE,EAAE,OAAOtlE,CAAC,EAAEq5I,UAAU,WAAW9b,GAAE,CAAE,EAAE+b,UAAU,WAAW/b,GAAE,CAAE,IAAIt+G,EAAEA,EAAEkgH,EAAElgH,EAAEwzH,GAAG3S,EAAE,SAAS,CAACpzC,OAAO7S,EAAEthF,eAAeymI,EAAEpmH,iBAAiB+kH,EAAE0a,yBAAyBQ,EAAEtE,oBAAoBhV,EAAE9xC,sBAAsBqrD,KAAK5a,GAAGj/G,EAAEA,EAAEkgH,EAAElgH,EAAEwzH,IAAI3S,GAAGtsE,GAAE,WAAW,IAAI8R,EAAE06D,IAAI,MAAM,UAAUmU,EAAE,CAAC7uE,KAAK,MAAM6uE,EAAE,CAAC1tI,EAAE6+D,KAAK,MAAM6uE,EAAE77I,OAAOgtE,GAAG,KAAI,OAAO,CAACtnE,UAAU,SAASsnE,GAAG,IAAI,IAAItlE,EAAEkf,EAAE4d,EAAE,CAACwoC,GAAGjJ,EAAE,EAAEj8D,UAAUlG,OAAOmiE,GAAGv/B,EAAE/7B,KAAKX,UAAUi8D,MAAM,GAAGn9C,EAAElf,EAAE88B,EAAE,IAAIs0B,EAAEpxD,SAAI,IAASslE,KAAKotE,EAAEptE,GAAG,OAAOpkC,EAAElhC,KAAKA,EAAE,SAASslE,EAAEtlE,GAAG,GAAG,mBAAmBkf,IAAIlf,EAAEkf,EAAE1kB,KAAKgB,KAAK8pE,EAAEtlE,KAAK0yI,EAAE1yI,GAAG,OAAOA,CAAC,GAAG88B,EAAE,GAAG98B,EAAEm0I,EAAEh0I,MAAM+9H,EAAEphG,EAAE,IAAIkjG,EAAEvB,GAAGgU,IAAIvzH,EAAE,EAAFA,CAAK8gH,EAAEvB,GAAGgU,EAAEzS,EAAEvB,GAAGrvC,SAAShwE,EAAE4gH,EAAE,UAAU5gH,EAAEggB,KAAK,QAAO,GAAIhgB,EAAE0d,EAAE/+B,KAAK,QAAO,EAAG,EAAE,SAASunE,EAAEtlE,EAAEkf,GAAGA,EAAE,GAAFA,CAAM,gBAAgB,EAAE,SAASomD,EAAEtlE,EAAEkf,GAAGA,EAAE,GAAFA,CAAM,aAAa,EAAE,SAASomD,EAAEtlE,EAAEkf,GAAGA,EAAE,IAAI,IAAI,IAAI4d,EAAE5d,EAAE,GAAGm9C,EAAEn9C,EAAE,GAAGllB,EAAEklB,EAAE,IAAID,EAAEC,EAAE,EAAFA,CAAK,eAAezY,EAAE,wbAAwbxC,MAAM,KAAKgzD,EAAE,EAAEA,EAAExwD,EAAEvM,OAAO+8D,IAAI,CAAC,IAAIzD,EAAE/sD,EAAEwwD,GAAG97B,EAAE2B,EAAE02B,GAAGp0C,EAAE+b,GAAGA,EAAExhC,UAAUylB,IAAIA,EAAEH,IAAIo9C,EAAEj9C,EAAEH,EAAEu0C,GAAGx5D,EAAEw5D,GAAGx5D,EAAEF,KAAK,CAAC,EAAE,SAASwrE,EAAEtlE,EAAEkf,IAAKomD,EAAE9sE,QAAQ0mB,EAAE,GAAFA,IAAUne,KAAK,CAACukE,EAAEnlD,GAAG,+6JAA+6J,IAC7vgC,EAAE,SAASmlD,EAAEtlE,GAAGslE,EAAE9sE,QAAQ,WAAW,IAAI8sE,EAAE,GAAG,OAAOA,EAAEj7B,SAAS,WAAW,IAAI,IAAIi7B,EAAE,GAAGtlE,EAAE,EAAEA,EAAExE,KAAKtB,OAAO8F,IAAI,CAAC,IAAIkf,EAAE1jB,KAAKwE,GAAGkf,EAAE,GAAGomD,EAAEvkE,KAAK,UAAUme,EAAE,GAAG,IAAIA,EAAE,GAAG,KAAKomD,EAAEvkE,KAAKme,EAAE,GAAG,CAAC,OAAOomD,EAAEj/D,KAAK,GAAG,EAAEi/D,EAAEtrE,EAAE,SAASgG,EAAEkf,GAAG,iBAAiBlf,IAAIA,EAAE,CAAC,CAAC,KAAKA,EAAE,MAAM,IAAI,IAAI88B,EAAE,CAAC,EAAEu/B,EAAE,EAAEA,EAAE7gE,KAAKtB,OAAOmiE,IAAI,CAAC,IAAIriE,EAAEwB,KAAK6gE,GAAG,GAAG,iBAAiBriE,IAAI8iC,EAAE9iC,IAAG,EAAG,CAAC,IAAIqiE,EAAE,EAAEA,EAAEr8D,EAAE9F,OAAOmiE,IAAI,CAAC,IAAIp9C,EAAEjf,EAAEq8D,GAAG,iBAAiBp9C,EAAE,IAAI6d,EAAE7d,EAAE,MAAMC,IAAID,EAAE,GAAGA,EAAE,GAAGC,EAAEA,IAAID,EAAE,GAAG,IAAIA,EAAE,GAAG,UAAUC,EAAE,KAAKomD,EAAEvkE,KAAKke,GAAG,CAAC,EAAEqmD,CAAC,CAAC,EAAE,SAASA,EAAEtlE,EAAEkf,GAAGA,EAAE,IAAI,IAAI4d,EAAE5d,EAAE,GAAFA,CAAMA,EAAE,IAAIA,EAAE,IAAI,KAAK,MAAMomD,EAAE9sE,QAAQskC,EAAEtkC,OAAO,EAAE,SAAS8sE,EAAEtlE,GAAGslE,EAAE9sE,QAAQ,SAAS8sE,EAAEtlE,EAAEkf,EAAE4d,GAAG,IAAIu/B,EAAEriE,EAAEsrE,EAAEA,GAAG,CAAC,EAAErmD,SAASqmD,EAAEhsE,QAAQ,WAAW2lB,GAAG,aAAaA,IAAIo9C,EAAEiJ,EAAEtrE,EAAEsrE,EAAEhsE,SAAS,IAAImN,EAAE,mBAAmBzM,EAAEA,EAAEuJ,QAAQvJ,EAAE,GAAGgG,IAAIyG,EAAEpL,OAAO2E,EAAE3E,OAAOoL,EAAE8yI,gBAAgBv5I,EAAEu5I,iBAAiBr6H,IAAIzY,EAAE+yI,SAASt6H,GAAG4d,EAAE,CAAC,IAAIm6B,EAAExwD,EAAEuf,WAAWvf,EAAEuf,SAAS,CAAC,GAAG1tB,OAAO4L,KAAK44B,GAAG19B,SAAQ,SAASkmE,GAAG,IAAItlE,EAAE88B,EAAEwoC,GAAGrO,EAAEqO,GAAG,WAAW,OAAOtlE,CAAC,CAAC,GAAE,CAAC,MAAM,CAACy5I,SAASp9E,EAAE7jE,QAAQwB,EAAEuJ,QAAQkD,EAAE,CAAC,EAAE,SAAS6+D,EAAEtlE,GAAGslE,EAAE9sE,QAAQ,CAAC6C,OAAO,WAAW,IAAIiqE,EAAE9pE,KAAKwE,EAAEslE,EAAEo0E,eAAex6H,EAAEomD,EAAEq0E,MAAMC,IAAI55I,EAAE,OAAOkf,EAAE,MAAM,CAAC26H,YAAY,oBAAoBC,MAAMx0E,EAAE6xE,gBAAgBp2E,MAAM,CAAC/4C,IAAIs9C,EAAEt9C,MAAM,CAAC9I,EAAE,MAAM,CAACtX,IAAI,SAASiyI,YAAY,kBAAkB5yH,GAAG,CAAC0vH,UAAU,SAAS32I,GAAGA,EAAEoa,iBAAiBkrD,EAAE6wE,eAAen2I,EAAE,IAAI,CAACkf,EAAE,MAAM,CAACtX,IAAI,kBAAkBiyI,YAAY,wBAAwB,CAACv0E,EAAEy0E,GAAGz0E,EAAEixE,cAAa,SAASv2I,GAAG,OAAOslE,EAAEkvE,GAAG,4BAA4B,CAACt1H,EAAE,OAAO,CAAC5kB,IAAI0F,EAAEiG,MAAM4zI,YAAY,gBAAgB,CAACv0E,EAAEkvE,GAAG,kBAAkB,CAAClvE,EAAE00E,GAAG,iBAAiB10E,EAAE20E,GAAG30E,EAAEyvE,eAAe/0I,IAAI,iBAAiB,KAAK,iBAAiBA,EAAEA,GAAG88B,EAAE,CAAC,EAAEA,EAAEwoC,EAAEjxC,OAAOr0B,EAAE88B,IAAIwoC,EAAE00E,GAAG,KAAK10E,EAAEo3C,SAASx9F,EAAE,SAAS,CAAC26H,YAAY,QAAQ94E,MAAM,CAAC9lE,SAASqqE,EAAErqE,SAASC,KAAK,SAAS,aAAa,iBAAiB+rB,GAAG,CAACmiB,MAAM,SAASlqB,GAAGomD,EAAE2wE,SAASj2I,EAAE,IAAI,CAACkf,EAAE,OAAO,CAAC6hD,MAAM,CAAC,cAAc,SAAS,CAACuE,EAAE00E,GAAG,SAAS10E,EAAE40E,MAAM,IAAI,CAACC,OAAO,iBAAiBn6I,EAAEA,GAAGq8D,EAAE,CAAC,EAAEA,EAAEiJ,EAAEjxC,OAAOr0B,EAAEq8D,GAAG45E,SAAS3wE,EAAE2wE,SAASv5B,SAASp3C,EAAEo3C,SAASzhH,SAASqqE,EAAErqE,WAAW,IAAI6hC,EAAEu/B,CAAC,IAAGiJ,EAAE00E,GAAG,KAAK96H,EAAE,QAAQ,CAACtX,IAAI,SAASiyI,YAAY,eAAe94E,MAAM,CAAC7lE,KAAK,SAAS45I,aAAaxvE,EAAEwvE,aAAa75I,SAASqqE,EAAErqE,SAAS0mC,YAAY2jC,EAAEiyE,kBAAkBnC,SAAS9vE,EAAE8vE,SAASh6I,UAAUkqE,EAAEqvE,WAAWx0H,GAAGmlD,EAAEqwE,QAAQl0F,KAAK,WAAW,gBAAgB6jB,EAAE8xE,aAAa,aAAa,qBAAqBgD,SAAS,CAAC3hJ,MAAM6sE,EAAE9nD,QAAQyJ,GAAG,CAACozH,QAAQ,CAAC,SAASr6I,GAAG,MAAM,WAAWA,IAAIslE,EAAEizE,GAAGv4I,EAAEkiB,QAAQ,SAAS,CAAC,EAAE,IAAIliB,EAAE1F,UAAUgrE,EAAE0xE,iBAAiBh3I,GAAG,IAAI,EAAE,SAASA,GAAG,MAAM,WAAWA,IAAIslE,EAAEizE,GAAGv4I,EAAEkiB,QAAQ,KAAK,GAAGliB,EAAE1F,MAAM0F,EAAEoa,sBAAsBkrD,EAAEsuE,YAAY5zI,IAAI,IAAI,EAAE,SAASA,GAAG,MAAM,WAAWA,IAAIslE,EAAEizE,GAAGv4I,EAAEkiB,QAAQ,OAAO,GAAGliB,EAAE1F,MAAM0F,EAAEoa,sBAAsBkrD,EAAEuuE,cAAc7zI,IAAI,IAAI,EAAE,SAASA,GAAG,MAAM,WAAWA,IAAIslE,EAAEizE,GAAGv4I,EAAEkiB,QAAQ,QAAQ,GAAGliB,EAAE1F,MAAM0F,EAAEoa,sBAAsBkrD,EAAEwuE,gBAAgB9zI,IAAI,IAAI,EAAE,SAASA,GAAG,MAAM,WAAWA,IAAIslE,EAAEizE,GAAGv4I,EAAEkiB,QAAQ,MAAM,EAAEliB,EAAE1F,UAAUgrE,EAAE4vE,MAAMl1I,GAAG,IAAI,GAAGs6I,MAAM,SAASt6I,GAAG,MAAM,WAAWA,IAAIslE,EAAEizE,GAAGv4I,EAAEkiB,QAAQ,MAAM,GAAGliB,EAAE1F,UAAUgrE,EAAEmxE,SAASz2I,GAAG,IAAI,EAAEk2I,KAAK5wE,EAAEoxE,aAAaJ,MAAMhxE,EAAEyxE,cAAcz1F,MAAM,SAASthD,GAAGslE,EAAE9nD,OAAOxd,EAAE6Y,OAAOpgB,KAAK,MAAM,GAAG6sE,EAAE00E,GAAG,KAAK96H,EAAE,MAAM,CAAC26H,YAAY,eAAe,CAAC36H,EAAE,SAAS,CAAC4iG,WAAW,CAAC,CAAC/mH,KAAK,OAAOw/I,QAAQ,SAAS9hJ,MAAM6sE,EAAEmyE,gBAAgBn0B,WAAW,oBAAoBu2B,YAAY,QAAQ94E,MAAM,CAAC9lE,SAASqqE,EAAErqE,SAASC,KAAK,SAAS6P,MAAM,mBAAmBkc,GAAG,CAACmiB,MAAMk8B,EAAE52C,iBAAiB,CAACxP,EAAE,OAAO,CAAC6hD,MAAM,CAAC,cAAc,SAAS,CAACuE,EAAE00E,GAAG,SAAS10E,EAAE00E,GAAG,KAAK10E,EAAEowE,OAAOpwE,EAAE40E,KAAKh7H,EAAE,IAAI,CAACtX,IAAI,gBAAgBiyI,YAAY,iBAAiB94E,MAAM,CAACtf,KAAK,kBAAkB6jB,EAAE00E,GAAG,KAAK10E,EAAEkvE,GAAG,UAAU,CAACt1H,EAAE,MAAM,CAAC4iG,WAAW,CAAC,CAAC/mH,KAAK,OAAOw/I,QAAQ,SAAS9hJ,MAAM6sE,EAAEwtE,eAAexvB,WAAW,mBAAmBu2B,YAAY,WAAW,CAACv0E,EAAE00E,GAAG,mBAAmB,KAAK10E,EAAE00E,GAAG,KAAK96H,EAAE,aAAa,CAAC6hD,MAAM,CAAChmE,KAAKuqE,EAAEsvE,aAAa,CAACtvE,EAAE8xE,aAAal4H,EAAE,KAAK,CAACtX,IAAI,eAAeiyI,YAAY,gBAAgBzF,MAAM,CAAC,aAAa9uE,EAAEovE,WAAW3zE,MAAM,CAACtf,KAAK,WAAWx6B,GAAG,CAAC0vH,UAAUrxE,EAAE2xE,YAAYp3G,QAAQylC,EAAE4xE,YAAY,CAAC5xE,EAAEy0E,GAAGz0E,EAAEquE,iBAAgB,SAAS3zI,EAAE88B,GAAG,OAAO5d,EAAE,KAAK,CAAC5kB,IAAIwiC,EAAEg9G,MAAM,CAACnzF,OAAO2e,EAAEwwE,iBAAiB91I,GAAG4gE,UAAU9jC,IAAIwoC,EAAE0tE,kBAAkBjyE,MAAM,CAACtf,KAAK,UAAUx6B,GAAG,CAACuzH,UAAU,SAASx6I,GAAGslE,EAAE0tE,iBAAiBl2G,CAAC,IAAI,CAAC5d,EAAE,IAAI,CAAC+H,GAAG,CAAC0vH,UAAU,SAASz3H,GAAGA,EAAE9E,iBAAiB8E,EAAEu7H,kBAAkBn1E,EAAEx4C,OAAO9sB,EAAE,IAAI,CAACslE,EAAEkvE,GAAG,SAAS,CAAClvE,EAAE00E,GAAG,eAAe10E,EAAE20E,GAAG30E,EAAEyvE,eAAe/0I,IAAI,eAAe,KAAK,iBAAiBA,EAAEA,GAAGq8D,EAAE,CAAC,EAAEA,EAAEiJ,EAAEjxC,OAAOr0B,EAAEq8D,KAAK,KAAK,IAAIA,CAAC,IAAGiJ,EAAE00E,GAAG,KAAK10E,EAAEquE,gBAAgBz5I,OAAOorE,EAAE40E,KAAKh7H,EAAE,KAAK,CAAC26H,YAAY,aAAa5yH,GAAG,CAAC0vH,UAAU,SAASrxE,GAAGA,EAAEm1E,iBAAiB,IAAI,CAACn1E,EAAEkvE,GAAG,aAAa,CAAClvE,EAAE00E,GAAG,kCAAkC,IAAI,GAAG10E,EAAE40E,QAAQ,EAAE,EAAEX,gBAAgB,GAAG,EAAE,SAASj0E,EAAEtlE,EAAEkf,GAAG,SAAS4d,EAAEwoC,EAAEtlE,GAAG,IAAI,IAAIkf,EAAE,EAAEA,EAAEomD,EAAEprE,OAAOglB,IAAI,CAAC,IAAI4d,EAAEwoC,EAAEpmD,GAAGm9C,EAAEj9C,EAAE0d,EAAE3c,IAAI,GAAGk8C,EAAE,CAACA,EAAEqyE,OAAO,IAAI,IAAI10I,EAAE,EAAEA,EAAEqiE,EAAEic,MAAMp+E,OAAOF,IAAIqiE,EAAEic,MAAMt+E,GAAG8iC,EAAEw7C,MAAMt+E,IAAI,KAAKA,EAAE8iC,EAAEw7C,MAAMp+E,OAAOF,IAAIqiE,EAAEic,MAAMv3E,KAAKk2D,EAAEn6B,EAAEw7C,MAAMt+E,GAAGgG,GAAG,KAAK,CAAK,IAAIif,EAAE,GAAV,IAAajlB,EAAE,EAAEA,EAAE8iC,EAAEw7C,MAAMp+E,OAAOF,IAAIilB,EAAEle,KAAKk2D,EAAEn6B,EAAEw7C,MAAMt+E,GAAGgG,IAAIof,EAAE0d,EAAE3c,IAAI,CAACA,GAAG2c,EAAE3c,GAAGuuH,KAAK,EAAEp2D,MAAMr5D,EAAE,CAAC,CAAC,CAAC,SAASo9C,EAAEiJ,GAAG,IAAI,IAAItlE,EAAE,GAAGkf,EAAE,CAAC,EAAE4d,EAAE,EAAEA,EAAEwoC,EAAEprE,OAAO4iC,IAAI,CAAC,IAAIu/B,EAAEiJ,EAAExoC,GAAG9iC,EAAEqiE,EAAE,GAAwB7I,EAAE,CAACzzB,IAAtBs8B,EAAE,GAA0B7xD,MAArB6xD,EAAE,GAA2Bq+E,UAAtBr+E,EAAE,IAAiCn9C,EAAEllB,GAAGklB,EAAEllB,GAAGs+E,MAAMv3E,KAAKyyD,GAAGxzD,EAAEe,KAAKme,EAAEllB,GAAG,CAACmmB,GAAGnmB,EAAEs+E,MAAM,CAAC9kB,IAAI,CAAC,OAAOxzD,CAAC,CAAC,SAAShG,EAAEsrE,EAAEtlE,GAAG,IAAIkf,EAAEvkB,IAAImiC,EAAEoE,EAAEA,EAAEhnC,OAAO,GAAG,GAAG,QAAQorE,EAAEq1E,SAAS79G,EAAEA,EAAE89G,YAAY17H,EAAE27H,aAAa76I,EAAE88B,EAAE89G,aAAa17H,EAAEm1H,YAAYr0I,GAAGkf,EAAE27H,aAAa76I,EAAEkf,EAAE47H,YAAY55G,EAAEngC,KAAKf,OAAO,CAAC,GAAG,WAAWslE,EAAEq1E,SAAS,MAAM,IAAIh4E,MAAM,sEAAsEzjD,EAAEm1H,YAAYr0I,EAAE,CAAC,CAAC,SAASif,EAAEqmD,GAAGA,EAAEy1C,WAAWggC,YAAYz1E,GAAG,IAAItlE,EAAEkhC,EAAE3kC,QAAQ+oE,GAAGtlE,GAAG,GAAGkhC,EAAEhgB,OAAOlhB,EAAE,EAAE,CAAC,SAASyG,EAAE6+D,GAAG,IAAItlE,EAAEY,SAAStF,cAAc,SAAS,OAAO0E,EAAE9E,KAAK,WAAWlB,EAAEsrE,EAAEtlE,GAAGA,CAAC,CAAC,SAASi3D,EAAEqO,EAAEtlE,GAAG,IAAIkf,EAAE4d,EAAEu/B,EAAE,GAAGr8D,EAAEg7I,UAAU,CAAC,IAAIhhJ,EAAE21B,IAAIzQ,EAAEsgB,IAAIA,EAAE/4B,EAAEzG,IAAI88B,EAAE02B,EAAE/rD,KAAK,KAAKyX,EAAEllB,GAAE,GAAIqiE,EAAE7I,EAAE/rD,KAAK,KAAKyX,EAAEllB,GAAE,EAAG,MAAMklB,EAAEzY,EAAEzG,GAAG88B,EAAE3B,EAAE1zB,KAAK,KAAKyX,GAAGm9C,EAAE,WAAWp9C,EAAEC,EAAE,EAAE,OAAO4d,EAAEwoC,GAAG,SAAStlE,GAAG,GAAGA,EAAE,CAAC,GAAGA,EAAE+/B,MAAMulC,EAAEvlC,KAAK//B,EAAEwK,QAAQ86D,EAAE96D,OAAOxK,EAAE06I,YAAYp1E,EAAEo1E,UAAU,OAAO59G,EAAEwoC,EAAEtlE,EAAE,MAAMq8D,GAAG,CAAC,CAAC,SAAS7I,EAAE8R,EAAEtlE,EAAEkf,EAAE4d,GAAG,IAAIu/B,EAAEn9C,EAAE,GAAG4d,EAAEiD,IAAI,GAAGulC,EAAE21E,WAAW31E,EAAE21E,WAAWC,QAAQl1D,EAAEhmF,EAAEq8D,OAAO,CAAC,IAAIriE,EAAE4G,SAASu6I,eAAe9+E,GAAGp9C,EAAEqmD,EAAEx3C,WAAW7O,EAAEjf,IAAIslE,EAAEy1E,YAAY97H,EAAEjf,IAAIif,EAAE/kB,OAAOorE,EAAEu1E,aAAa7gJ,EAAEilB,EAAEjf,IAAIslE,EAAE+uE,YAAYr6I,EAAE,CAAC,CAAC,SAASmhC,EAAEmqC,EAAEtlE,GAAG,IAAIkf,EAAElf,EAAE+/B,IAAIjD,EAAE98B,EAAEwK,MAAM6xD,EAAEr8D,EAAE06I,UAAU,GAAG59G,GAAGwoC,EAAE24C,aAAa,QAAQnhF,GAAGu/B,IAAIn9C,GAAG,mBAAmBm9C,EAAEolC,QAAQ,GAAG,MAAMviF,GAAG,uDAAuDs9D,KAAKs8B,SAAS14F,mBAAmBriB,KAAKC,UAAUq+D,MAAM,OAAOiJ,EAAE21E,WAAW31E,EAAE21E,WAAWC,QAAQh8H,MAAM,CAAC,KAAKomD,EAAEw1E,YAAYx1E,EAAEy1E,YAAYz1E,EAAEw1E,YAAYx1E,EAAE+uE,YAAYzzI,SAASu6I,eAAej8H,GAAG,CAAC,CAAC,IAAIE,EAAE,CAAC,EAAEshH,EAAE,SAASp7D,GAAG,IAAItlE,EAAE,OAAO,WAAW,YAAM,IAAoBA,IAAIA,EAAEslE,EAAEnlE,MAAM3E,KAAK4E,YAAYJ,CAAC,CAAC,EAAEi8B,EAAEykG,GAAE,WAAW,MAAM,eAAermH,KAAKZ,OAAO2hI,UAAUC,UAAU99I,cAAc,IAAG5C,EAAE+lI,GAAE,WAAW,OAAO9/H,SAAS2nG,MAAM3nG,SAAS06I,qBAAqB,QAAQ,EAAE,IAAG97G,EAAE,KAAK7P,EAAE,EAAEuR,EAAE,GAAGokC,EAAE9sE,QAAQ,SAAS8sE,EAAEtlE,QAAW,KAARA,EAAEA,GAAG,CAAC,GAAwBg7I,YAAYh7I,EAAEg7I,UAAU/+G,UAAK,IAAoBj8B,EAAE26I,WAAW36I,EAAE26I,SAAS,UAAU,IAAIz7H,EAAEm9C,EAAEiJ,GAAG,OAAOxoC,EAAE5d,EAAElf,GAAG,SAASslE,GAAG,IAAI,IAAItrE,EAAE,GAAGilB,EAAE,EAAEA,EAAEC,EAAEhlB,OAAO+kB,IAAI,CAAC,IAAIxY,EAAEyY,EAAED,IAAGg4C,EAAE73C,EAAE3Y,EAAE0Z,KAAMuuH,OAAO10I,EAAE+G,KAAKk2D,EAAE,CAAyB,IAArBqO,GAAcxoC,EAALu/B,EAAEiJ,GAAOtlE,GAAWif,EAAE,EAAEA,EAAEjlB,EAAEE,OAAO+kB,IAAI,CAAC,IAAIg4C,EAAO,GAAG,KAAVA,EAAEj9D,EAAEilB,IAAYyvH,KAAK,CAAC,IAAI,IAAIvzG,EAAE,EAAEA,EAAE87B,EAAEqhB,MAAMp+E,OAAOihC,IAAI87B,EAAEqhB,MAAMn9C,YAAY/b,EAAE63C,EAAE92C,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI6lE,EAAE,WAAW,IAAI1gB,EAAE,GAAG,OAAO,SAAStlE,EAAEkf,GAAG,OAAOomD,EAAEtlE,GAAGkf,EAAEomD,EAAE9lE,OAAOrE,SAASkL,KAAK,KAAK,CAAC,CAApF,EAAuF,EAAE,SAASi/D,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE,IAAI,iBAAiB4d,IAAIA,EAAE,CAAC,CAACwoC,EAAEnlD,GAAG2c,EAAE,MAAM5d,EAAE,GAAFA,CAAM4d,EAAE,CAAC,GAAGA,EAAEy+G,SAASj2E,EAAE9sE,QAAQskC,EAAEy+G,OAAO,iCCDriO,SAAS10D,EAAOpuF,GACrB,OAAOA,aAAiBue,MAAkD,kBAA1C1e,OAAOqB,UAAU0wC,SAAS7vC,KAAK/B,EACjE,CACO,SAAS+7H,EAAO/7H,GACrB,OAAIouF,EAAOpuF,GACF,IAAIue,KAAKve,EAAMm6H,WAGX,MAATn6H,EACK,IAAIue,KAAKw7G,KAGX,IAAIx7G,KAAKve,EAClB,CAIO,SAAS+iJ,EAAY/iJ,GAC1B,IAAIgjJ,EAAiBr7I,UAAUlG,OAAS,QAAsBpB,IAAjBsH,UAAU,GAAmBA,UAAU,GAAK,EAEzF,KAAMq7I,GAAkB,GAAKA,GAAkB,GAC7C,MAAM,IAAItjE,WAAW,wCAGvB,IAAIh+C,EAAOq6F,EAAO/7H,GAEdq+H,GADM38F,EAAKuhH,SACG,EAAID,GAAkB,EAGxC,OAFAthH,EAAKwhH,QAAQxhH,EAAK+P,UAAY4sF,GAC9B38F,EAAKmrG,SAAS,EAAG,EAAG,EAAG,GAChBnrG,CACT,CACO,SAASyhH,EAAgBnjJ,GAC9B,IAAIupC,EAAO5hC,UAAUlG,OAAS,QAAsBpB,IAAjBsH,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC5Ey7I,EAAsB75G,EAAKy5G,eAC3BA,OAAyC,IAAxBI,EAAiC,EAAIA,EACtDC,EAAwB95G,EAAK45F,sBAC7BA,OAAkD,IAA1BkgB,EAAmC,EAAIA,EAEnE,KAAMlgB,GAAyB,GAAKA,GAAyB,GAC3D,MAAM,IAAIzjD,WAAW,iDAOvB,IAJA,IAAIh+C,EAAOq6F,EAAO/7H,GACdwxC,EAAO9P,EAAKiQ,cACZ2xG,EAAuB,IAAI/kI,KAAK,GAE3Bhd,EAAIiwC,EAAO,EAAGjwC,GAAKiwC,EAAO,IACjC8xG,EAAqB1W,YAAYrrI,EAAG,EAAG4hI,GACvCmgB,EAAqBzW,SAAS,EAAG,EAAG,EAAG,GACvCyW,EAAuBP,EAAYO,EAAsBN,KAErDthH,EAAKy4F,WAAampB,EAAqBnpB,YALP54H,KAUtC,OAAO+hJ,CACT,CACO,SAASC,EAAQvjJ,GACtB,IAAIwjJ,EAAQ77I,UAAUlG,OAAS,QAAsBpB,IAAjBsH,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC7E87I,EAAuBD,EAAMR,eAC7BA,OAA0C,IAAzBS,EAAkC,EAAIA,EACvDC,EAAwBF,EAAMrgB,sBAC9BA,OAAkD,IAA1BugB,EAAmC,EAAIA,EAE/DhiH,EAAOq6F,EAAO/7H,GACd2jJ,EAAsBZ,EAAYrhH,EAAMshH,GACxCM,EAAuBH,EAAgBzhH,EAAM,CAC/CshH,eAAgBA,EAChB7f,sBAAuBA,IAErB9E,EAAOslB,EAAoBxpB,UAAYmpB,EAAqBnpB,UAChE,OAAOxzF,KAAK0wE,MAAMgnB,EAAO,QAA0B,CACrD,mBChEA,QATa,CACXulB,OAAQ,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACvHC,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3FC,SAAU,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YAC7EC,cAAe,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC1DC,YAAa,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAClDhB,eAAgB,EAChB7f,sBAAuB,GCLzB,IAAI8gB,EAAe,sGAEnB,SAASrmC,EAAIx2G,GAKX,IAJA,IAAI27D,EAAMp7D,UAAUlG,OAAS,QAAsBpB,IAAjBsH,UAAU,GAAmBA,UAAU,GAAK,EAC1Eo3D,EAAS,GAAGr6D,OAAOiiC,KAAK+gG,IAAItgI,IAC5BqgI,EAAOrgI,EAAM,EAAI,IAAM,GAEpB23D,EAAOt9D,OAASshE,GACrBhE,EAAS,IAAIr6D,OAAOq6D,GAGtB,OAAO0oE,EAAO1oE,CAChB,CAEA,SAASmlF,EAAUxiH,GACjB,OAAmD,GAA5CiF,KAAK0wE,MAAM31E,EAAK24F,oBAAsB,GAC/C,CAEA,SAAS6M,EAAel3G,GACtB,IAAI43G,EAAYjgI,UAAUlG,OAAS,QAAsBpB,IAAjBsH,UAAU,GAAmBA,UAAU,GAAK,GAChF8/H,EAAOz3G,EAAS,EAAI,IAAM,IAC1B63G,EAAYlhG,KAAK+gG,IAAI13G,GAErB4tG,EAAUiK,EAAY,GAC1B,OAAOJ,EAAO7pB,EAFFj3E,KAAK64C,MAAMqoD,EAAY,IAEV,GAAKD,EAAYhqB,EAAIggB,EAAS,EACzD,CAEA,IAAIumB,EAAW,SAAkBjiJ,EAAGywF,EAAGyxD,GACrC,IAAIttH,EAAO50B,EAAI,GAAK,KAAO,KAC3B,OAAOkiJ,EAActtH,EAAKutH,oBAAsBvtH,CAClD,EAEIwtH,EAAc,CAChBpf,EAAG,SAAWxjG,GACZ,IAAI+G,EAAI/G,EAAKiQ,cACb,OAAOlJ,GAAK,KAAO,GAAG/jC,OAAO+jC,GAAK,IAAI/jC,OAAO+jC,EAC/C,EAEAsyF,GAAI,SAAYr5F,GACd,OAAOk8E,EAAIl8E,EAAKiQ,cAAe,GAAG6rB,OAAO,EAC3C,EAEAy9D,KAAM,SAAcv5F,GAClB,OAAOk8E,EAAIl8E,EAAKiQ,cAAe,EACjC,EAEA6zF,EAAG,SAAW9jG,GACZ,OAAOA,EAAKgQ,WAAa,CAC3B,EAEAypF,GAAI,SAAYz5F,GACd,OAAOk8E,EAAIl8E,EAAKgQ,WAAa,EAAG,EAClC,EACA6yG,IAAK,SAAa7iH,EAAM+iF,GACtB,OAAOA,EAAOo/B,YAAYniH,EAAKgQ,WACjC,EACA8yG,KAAM,SAAc9iH,EAAM+iF,GACxB,OAAOA,EAAOm/B,OAAOliH,EAAKgQ,WAC5B,EAEAm0F,EAAG,SAAWnkG,GACZ,OAAOA,EAAK+P,SACd,EAEAgzG,GAAI,SAAY/iH,GACd,OAAOk8E,EAAIl8E,EAAK+P,UAAW,EAC7B,EAEA60F,EAAG,SAAW5kG,GACZ,OAAOA,EAAKmhD,UACd,EAEA24C,GAAI,SAAY95F,GACd,OAAOk8E,EAAIl8E,EAAKmhD,WAAY,EAC9B,EAEA3gF,EAAG,SAAWw/B,GACZ,IAAIi8F,EAAQj8F,EAAKmhD,WAEjB,OAAc,IAAV86C,EACK,GAGLA,EAAQ,GACHA,EAAQ,GAGVA,CACT,EAEA+mB,GAAI,WAEF,OAAO9mC,EADK0mC,EAAYpiJ,EAAEwF,MAAM48I,EAAa38I,WAC3B,EACpB,EAEAgxD,EAAG,SAAWj3B,GACZ,OAAOA,EAAKohD,YACd,EAEA6hE,GAAI,SAAYjjH,GACd,OAAOk8E,EAAIl8E,EAAKohD,aAAc,EAChC,EAEAt8D,EAAG,SAAWkb,GACZ,OAAOA,EAAKqhD,YACd,EAEA6hE,GAAI,SAAYljH,GACd,OAAOk8E,EAAIl8E,EAAKqhD,aAAc,EAChC,EAEA2jD,EAAG,SAAWhlG,GACZ,OAAOiF,KAAK64C,MAAM99C,EAAKmjH,kBAAoB,IAC7C,EAEAC,GAAI,SAAYpjH,GACd,OAAOk8E,EAAIj3E,KAAK64C,MAAM99C,EAAKmjH,kBAAoB,IAAK,EACtD,EAEAE,IAAK,SAAarjH,GAChB,OAAOk8E,EAAIl8E,EAAKmjH,kBAAmB,EACrC,EAEArhH,EAAG,SAAW9B,GACZ,OAAOA,EAAKuhH,QACd,EAEA+B,GAAI,SAAYtjH,EAAM+iF,GACpB,OAAOA,EAAOu/B,YAAYtiH,EAAKuhH,SACjC,EAEAgC,IAAK,SAAavjH,EAAM+iF,GACtB,OAAOA,EAAOs/B,cAAcriH,EAAKuhH,SACnC,EAEAiC,KAAM,SAAcxjH,EAAM+iF,GACxB,OAAOA,EAAOq/B,SAASpiH,EAAKuhH,SAC9B,EAEAzH,EAAG,SAAW95G,EAAM+iF,GAElB,OADmBA,EAAO0/B,UAAYA,GAClBziH,EAAKmhD,WAAYnhD,EAAKohD,cAAc,EAC1D,EAEA90E,EAAG,SAAW0zB,EAAM+iF,GAElB,OADmBA,EAAO0/B,UAAYA,GAClBziH,EAAKmhD,WAAYnhD,EAAKohD,cAAc,EAC1D,EAEAs9D,EAAG,SAAW1+G,GACZ,OAAOwlG,EAAegd,EAAUxiH,GAAO,IACzC,EAEAyjH,GAAI,SAAYzjH,GACd,OAAOwlG,EAAegd,EAAUxiH,GAClC,EAEAolG,EAAG,SAAWplG,GACZ,OAAOiF,KAAK64C,MAAM99C,EAAKy4F,UAAY,IACrC,EAEAtzG,EAAG,SAAW6a,GACZ,OAAOA,EAAKy4F,SACd,EACAt5C,EAAG,SAAWn/C,EAAM+iF,GAClB,OAAO8+B,EAAQ7hH,EAAM,CACnBshH,eAAgBv+B,EAAOu+B,eACvB7f,sBAAuB1e,EAAO0e,uBAElC,EACAiiB,GAAI,SAAY1jH,EAAM+iF,GACpB,OAAO7G,EAAI0mC,EAAYzjE,EAAEn/C,EAAM+iF,GAAS,EAC1C,GAEK,SAAStzG,EAAO/J,EAAKkG,GAC1B,IFnK0BtN,EEmKtB8K,EAAUnD,UAAUlG,OAAS,QAAsBpB,IAAjBsH,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/EuhI,EAAY57H,EAAMO,OAAOP,GAAO,2BAChCo0B,EAAOq6F,EAAO30H,GAElB,IFtKOgnF,EADmBpuF,EEuKT0hC,IFtKQg7E,MAAM18G,EAAMm6H,WEuKnC,MAAO,eAGT,IAAI1V,EAAS35G,EAAQ25G,QAAU,EAC/B,OAAOykB,EAAUp9H,QAAQm4I,GAAc,SAAUxmF,EAAO4nF,GACtD,OAAIA,IAI8B,mBAAvBf,EAAY7mF,GACd,GAAG/4D,OAAO4/I,EAAY7mF,GAAO/7B,EAAM+iF,IAGrChnD,EACT,GACF,CCrMA,SAASt8D,EAAmBC,GAAO,OAMnC,SAA4BA,GAAO,GAAIC,MAAMC,QAAQF,GAAM,CAAE,IAAK,IAAIG,EAAI,EAAGC,EAAO,IAAIH,MAAMD,EAAIK,QAASF,EAAIH,EAAIK,OAAQF,IAAOC,EAAKD,GAAKH,EAAIG,GAAM,OAAOC,CAAM,CAAE,CAN3H8jJ,CAAmBlkJ,IAI7D,SAA0BmkJ,GAAQ,GAAIxkJ,OAAOC,YAAYnB,OAAO0lJ,IAAkD,uBAAzC1lJ,OAAOqB,UAAU0wC,SAAS7vC,KAAKwjJ,GAAgC,OAAOlkJ,MAAMK,KAAK6jJ,EAAO,CAJ5FC,CAAiBpkJ,IAEtF,WAAgC,MAAM,IAAI0f,UAAU,kDAAoD,CAFV2kI,EAAsB,CAQpH,SAASC,EAAQr+I,EAAQs+I,GAAkB,IAAIl6I,EAAO5L,OAAO4L,KAAKpE,GAAS,GAAIxH,OAAOm1F,sBAAuB,CAAE,IAAI4wD,EAAU/lJ,OAAOm1F,sBAAsB3tF,GAAas+I,IAAgBC,EAAUA,EAAQ7+I,QAAO,SAAU8+I,GAAO,OAAOhmJ,OAAO+/I,yBAAyBv4I,EAAQw+I,GAAKvlI,UAAY,KAAI7U,EAAKnD,KAAKZ,MAAM+D,EAAMm6I,EAAU,CAAE,OAAOn6I,CAAM,CAEpV,SAASk+B,EAAcvpB,GAAU,IAAK,IAAI7e,EAAI,EAAGA,EAAIoG,UAAUlG,OAAQF,IAAK,CAAE,IAAIq2B,EAAyB,MAAhBjwB,UAAUpG,GAAaoG,UAAUpG,GAAK,CAAC,EAAOA,EAAI,EAAKmkJ,EAAQ9tH,GAAQ,GAAMjxB,SAAQ,SAAU9E,GAAOmpD,EAAgB5qC,EAAQve,EAAK+1B,EAAO/1B,GAAO,IAAehC,OAAOimJ,0BAA6BjmJ,OAAOsgB,iBAAiBC,EAAQvgB,OAAOimJ,0BAA0BluH,IAAmB8tH,EAAQ9tH,GAAQjxB,SAAQ,SAAU9E,GAAOhC,OAAOC,eAAesgB,EAAQve,EAAKhC,OAAO+/I,yBAAyBhoH,EAAQ/1B,GAAO,GAAM,CAAE,OAAOue,CAAQ,CAErgB,SAAS2lI,EAAe3kJ,EAAKG,GAAK,OAMlC,SAAyBH,GAAO,GAAIC,MAAMC,QAAQF,GAAM,OAAOA,CAAK,CAN3B4kJ,CAAgB5kJ,IAIzD,SAA+BA,EAAKG,GAAK,KAAMR,OAAOC,YAAYnB,OAAOuB,KAAgD,uBAAxCvB,OAAOqB,UAAU0wC,SAAS7vC,KAAKX,GAAkC,OAAU,IAAI6kJ,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAW1E,OAAKphJ,EAAW,IAAM,IAAK,IAAiCmhJ,EAA7BhQ,EAAKpwI,EAAIL,OAAOC,cAAmBklJ,GAAM1E,EAAKhQ,EAAGroI,QAAQC,QAAoB68I,EAAK39I,KAAKk5I,EAAGxhJ,QAAYuB,GAAK0kJ,EAAKxkJ,SAAWF,GAA3D2kJ,GAAK,GAAkE,CAAE,MAAOr8I,GAAOs8I,GAAK,EAAM1E,EAAK53I,CAAK,CAAE,QAAU,IAAWq8I,GAAsB,MAAhB1U,EAAW,QAAWA,EAAW,QAAK,CAAE,QAAU,GAAI2U,EAAI,MAAM1E,CAAI,CAAE,CAAE,OAAOwE,CAAM,CAJ1cG,CAAsBhlJ,EAAKG,IAE5F,WAA8B,MAAM,IAAIuf,UAAU,uDAAyD,CAFTulI,EAAoB,CAQtH,SAASr7F,EAAgBrqD,EAAKkB,EAAK7B,GAAiK,OAApJ6B,KAAOlB,EAAOd,OAAOC,eAAea,EAAKkB,EAAK,CAAE7B,MAAOA,EAAOsgB,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkB7f,EAAIkB,GAAO7B,EAAgBW,CAAK,CAIhN,IAAI2lJ,EAAmB,6FACnBC,EAAS,KAETC,EAAS,OAMTC,EAAY,QAIZC,EAAc,WAKdC,EAAO,OACPC,EAAQ,QAERC,EAAO,OACPC,EAAS,SACTC,EAAS,SACTC,EAAc,cACdC,EAAa,CAAC,EAEdC,EAAe,SAAsBj0H,EAAO+wC,EAAO7mC,GACrD,IACIyxD,EADA1+D,EAAS7uB,MAAMC,QAAQ2xB,GAASA,EAAQ,CAACA,GAI3C27D,EADsB,iBAAbzxD,EACF,SAAc0rB,GACnB,IAAI7oD,EAAQqxB,SAASw3B,EAAO,IAC5B,OAAOmC,EAAgB,CAAC,EAAG7tB,EAAUn9B,EACvC,EAEOm9B,EAGTjN,EAAOvpB,SAAQ,SAAU9E,GACvBolJ,EAAWplJ,GAAO,CAACmiE,EAAO4qB,EAC5B,GACF,EAEIu4D,EAAqB,SAA4B75I,GACnD,OAAOA,EAAIxB,QAAQ,sBAAuB,OAC5C,EAEIs7I,EAAkB,SAAyBrwB,GAC7C,OAAO,SAAUtS,GACf,IAAI3kC,EAAQ2kC,EAAOsS,GAEnB,IAAK11H,MAAMC,QAAQw+E,GACjB,MAAM,IAAI5V,MAAM,UAAUxlE,OAAOqyH,EAAW,oBAG9C,OAAO,IAAI19F,OAAOymD,EAAMvyE,IAAI45I,GAAoBv5I,KAAK,KACvD,CACF,EAEIy5I,EAAoB,SAA2BtwB,EAAWl1H,GAC5D,OAAO,SAAUgnD,EAAO47D,GACtB,IAAI3kC,EAAQ2kC,EAAOsS,GAEnB,IAAK11H,MAAMC,QAAQw+E,GACjB,MAAM,IAAI5V,MAAM,UAAUxlE,OAAOqyH,EAAW,oBAG9C,IAAIvpH,EAAQsyE,EAAMh8E,QAAQ+kD,GAE1B,GAAIr7C,EAAQ,EACV,MAAM,IAAI08D,MAAM,gBAGlB,OAAOlf,EAAgB,CAAC,EAAGnpD,EAAK2L,EAClC,CACF,EAwHA,SAAS85I,EAAW7+G,EAAGkwB,EAAGn1B,EAAGthC,EAAGsjI,EAAGh/G,EAAG+gI,GACpC,IAAI7lH,EAYJ,OAVI+G,EAAI,KAAOA,GAAK,GAClB/G,EAAO,IAAInjB,KAAKkqB,EAAI,IAAKkwB,EAAGn1B,EAAGthC,EAAGsjI,EAAGh/G,EAAG+gI,GAEpCnyD,SAAS1zD,EAAKiQ,gBAChBjQ,EAAKkrG,YAAYnkG,IAGnB/G,EAAO,IAAInjB,KAAKkqB,EAAGkwB,EAAGn1B,EAAGthC,EAAGsjI,EAAGh/G,EAAG+gI,GAG7B7lH,CACT,CAEA,SAAS8lH,IAGP,IAFA,IAAI9lH,EAEKwhD,EAAOv7E,UAAUlG,OAAQ+gF,EAAO,IAAInhF,MAAM6hF,GAAOl4E,EAAO,EAAGA,EAAOk4E,EAAMl4E,IAC/Ew3E,EAAKx3E,GAAQrD,UAAUqD,GAGzB,IAAIy9B,EAAI+5C,EAAK,GAab,OAXI/5C,EAAI,KAAOA,GAAK,GAClB+5C,EAAK,IAAM,IACX9gD,EAAO,IAAInjB,KAAKA,KAAKkpI,IAAI//I,MAAM6W,KAAMikE,IAEjC4S,SAAS1zD,EAAK6hG,mBAChB7hG,EAAKq7F,eAAet0F,IAGtB/G,EAAO,IAAInjB,KAAKA,KAAKkpI,IAAI//I,MAAM6W,KAAMikE,IAGhC9gD,CACT,CAqCO,SAAS1P,EAAM1kB,EAAK6D,GACzB,IAAIrG,EAAUnD,UAAUlG,OAAS,QAAsBpB,IAAjBsH,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAEnF,IACE,IAAI+/I,EAAkB58I,EAAQ25G,OAC1BkjC,OAA8B,IAApBD,EAA6B,EAAgBA,EACvDE,EAAsB98I,EAAQ+8I,WAC9BA,OAAqC,IAAxBD,EAAiC,IAAIrpI,KAASqpI,EAE3DjlB,EA5CR,SAAoBvG,EAAYjrH,EAAQszG,GACtC,IAAIv0F,EAAS/e,EAAOssD,MAAM6oF,GAE1B,IAAKp2H,EACH,MAAM,IAAIg6C,MAMZ,IAHA,IAAIzoE,EAASyuB,EAAOzuB,OAChBqmJ,EAAO,CAAC,EAEHvmJ,EAAI,EAAGA,EAAIE,EAAQF,GAAK,EAAG,CAClC,IAAI0xB,EAAQ/C,EAAO3uB,GACfwmJ,EAAUd,EAAWh0H,GAEzB,GAAK80H,EAQE,CACL,IAAI/jF,EAA8B,mBAAf+jF,EAAQ,GAAoBA,EAAQ,GAAGtjC,GAAUsjC,EAAQ,GACxEza,EAASya,EAAQ,GACjB/nJ,GAASgkE,EAAM1qC,KAAK8iG,IAAe,IAAI,GAE3C0rB,EAAOn+G,EAAc,CAAC,EAAGm+G,EAAM,CAAC,EADtBxa,EAAOttI,EAAOykH,IAExB2X,EAAaA,EAAWtwH,QAAQ9L,EAAO,GACzC,KAfc,CACZ,IAAI82B,EAAO7D,EAAMnnB,QAAQ,WAAY,IAErC,GAAiC,IAA7BswH,EAAWt4H,QAAQgzB,GAGrB,MAAM,IAAIozC,MAAM,aAFhBkyD,EAAaA,EAAW5+D,OAAO1mC,EAAKr1B,OAIxC,CAQF,CAEA,OAAOqmJ,CACT,CAWsBE,CAAW16I,EAAK6D,EAAQw2I,GACtCn2G,EAAOmxF,EAAYnxF,KACnBD,EAAQoxF,EAAYpxF,MACpB8rF,EAAMsF,EAAYtF,IAClB4qB,EAAOtlB,EAAYslB,KACnBC,EAASvlB,EAAYulB,OACrB9iE,EAASu9C,EAAYv9C,OACrB+iE,EAAcxlB,EAAYwlB,YAC1Blc,EAAOtJ,EAAYsJ,KACnBvqG,EAAOihG,EAAYjhG,KACnB1R,EAAS2yG,EAAY3yG,OACrBo4H,EAAUzlB,EAAYylB,QACtBtrB,EAAO6F,EAAY7F,KAEvB,GAAIp7F,EACF,OAAOA,EAGT,IAYIyT,EAZAkzG,EAAa,CAAC72G,EAAMD,EAAO8rF,EAAK4qB,EAAMC,EAAQ9iE,EAAQ+iE,GAG1D,GAFAE,EAAW,GAtIf,SAAkBJ,EAAMhc,GACtB,QAAa5rI,IAAT4nJ,QAA+B5nJ,IAAT4rI,EACxB,GAAIA,GACF,GAAIgc,EAAO,GACT,OAAOA,EAAO,QAEX,GAAa,KAATA,EACT,OAAO,EAIX,OAAOA,CACT,CA0HoBK,CAASD,EAAW,GAAIpc,QAE3B5rI,IAATy8H,QAAgCz8H,IAAVkxC,QAA+BlxC,IAARg9H,EAAmB,CAElE,IAAIkrB,EAAYpF,OAAyB9iJ,IAATmxC,EAAqBq2G,EAAa,IAAItpI,KAAKizB,EAAM,GAAI,CACnFwxG,eAAgB2E,EAAQ3E,eACxB7f,sBAAuBwkB,EAAQxkB,wBAEjC,OAAO,IAAI5kH,KAAKgqI,EAAUpuB,UAAyB,GAAZ2C,EAAO,GAAS,GAAK,KAAO,IACrE,CAGA,IAAIrxG,EApIR,SAA2Bo9B,GAMzB,IALA,IAAIg/F,EAAalgJ,UAAUlG,OAAS,QAAsBpB,IAAjBsH,UAAU,GAAmBA,UAAU,GAAK,IAAI4W,KACrFkN,EAAS,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC5B+8H,EAAY,CAACX,EAAWl2G,cAAek2G,EAAWn2G,WAAYm2G,EAAWp2G,UAAWo2G,EAAWhlE,WAAYglE,EAAW/kE,aAAc+kE,EAAW9kE,aAAc8kE,EAAWhD,mBACxK4D,GAAY,EAEPlnJ,EAAI,EAAGA,EAAI,EAAGA,SACJlB,IAAbwoD,EAAMtnD,GACRkqB,EAAOlqB,GAAKknJ,EAAYD,EAAUjnJ,GAAKkqB,EAAOlqB,IAE9CkqB,EAAOlqB,GAAKsnD,EAAMtnD,GAClBknJ,GAAY,GAIhB,OAAOh9H,CACT,CAoHiBi9H,CAAkBL,EAAYR,GAU3C,YARexnJ,IAAX2vB,GACFvE,EAAO,IAAe,GAATuE,EAAc,IAC3BmlB,EAAaqyG,EAAc9/I,WAAM,EAAQvG,EAAmBsqB,KAE5D0pB,EAAamyG,EAAW5/I,WAAM,EAAQvG,EAAmBsqB,SAI3CprB,IAAZ+nJ,GAAyBjzG,EAAW8tG,WAAamF,EAC5C,IAAI7pI,KAAKw7G,KAGX5kF,CACT,CAAE,MAAO5tC,GACP,OAAO,IAAIgX,KAAKw7G,IAClB,CACF,CC/VA,SAASj5H,EAAQH,GAaf,OATEG,EADoB,mBAAXC,QAAoD,iBAApBA,OAAOC,SACtC,SAAUL,GAClB,cAAcA,CAChB,EAEU,SAAUA,GAClB,OAAOA,GAAyB,mBAAXI,QAAyBJ,EAAIM,cAAgBF,QAAUJ,IAAQI,OAAOG,UAAY,gBAAkBP,CAC3H,EAGKG,EAAQH,EACjB,CAEA,SAAS,EAAgBA,EAAKkB,EAAK7B,GAYjC,OAXI6B,KAAOlB,EACTd,OAAOC,eAAea,EAAKkB,EAAK,CAC9B7B,MAAOA,EACPsgB,YAAY,EACZC,cAAc,EACdC,UAAU,IAGZ7f,EAAIkB,GAAO7B,EAGNW,CACT,CAEA,SAASgoJ,IAeP,OAdAA,EAAW9oJ,OAAOiI,QAAU,SAAUsY,GACpC,IAAK,IAAI7e,EAAI,EAAGA,EAAIoG,UAAUlG,OAAQF,IAAK,CACzC,IAAIq2B,EAASjwB,UAAUpG,GAEvB,IAAK,IAAIM,KAAO+1B,EACV/3B,OAAOqB,UAAUY,eAAeC,KAAK61B,EAAQ/1B,KAC/Cue,EAAOve,GAAO+1B,EAAO/1B,GAG3B,CAEA,OAAOue,CACT,EAEOuoI,EAASjhJ,MAAM3E,KAAM4E,UAC9B,CAEA,SAAS,EAAQN,EAAQs+I,GACvB,IAAIl6I,EAAO5L,OAAO4L,KAAKpE,GAEvB,GAAIxH,OAAOm1F,sBAAuB,CAChC,IAAI4wD,EAAU/lJ,OAAOm1F,sBAAsB3tF,GACvCs+I,IAAgBC,EAAUA,EAAQ7+I,QAAO,SAAU8+I,GACrD,OAAOhmJ,OAAO+/I,yBAAyBv4I,EAAQw+I,GAAKvlI,UACtD,KACA7U,EAAKnD,KAAKZ,MAAM+D,EAAMm6I,EACxB,CAEA,OAAOn6I,CACT,CAEA,SAASm9I,EAAexoI,GACtB,IAAK,IAAI7e,EAAI,EAAGA,EAAIoG,UAAUlG,OAAQF,IAAK,CACzC,IAAIq2B,EAAyB,MAAhBjwB,UAAUpG,GAAaoG,UAAUpG,GAAK,CAAC,EAEhDA,EAAI,EACN,EAAQ1B,OAAO+3B,IAAS,GAAMjxB,SAAQ,SAAU9E,GAC9C,EAAgBue,EAAQve,EAAK+1B,EAAO/1B,GACtC,IACShC,OAAOimJ,0BAChBjmJ,OAAOsgB,iBAAiBC,EAAQvgB,OAAOimJ,0BAA0BluH,IAEjE,EAAQ/3B,OAAO+3B,IAASjxB,SAAQ,SAAU9E,GACxChC,OAAOC,eAAesgB,EAAQve,EAAKhC,OAAO+/I,yBAAyBhoH,EAAQ/1B,GAC7E,GAEJ,CAEA,OAAOue,CACT,CAiBA,SAASyoI,EAAyBjxH,EAAQshG,GACxC,GAAc,MAAVthG,EAAgB,MAAO,CAAC,EAE5B,IAEI/1B,EAAKN,EAFL6e,EAlBN,SAAuCwX,EAAQshG,GAC7C,GAAc,MAAVthG,EAAgB,MAAO,CAAC,EAC5B,IAEI/1B,EAAKN,EAFL6e,EAAS,CAAC,EACV0oI,EAAajpJ,OAAO4L,KAAKmsB,GAG7B,IAAKr2B,EAAI,EAAGA,EAAIunJ,EAAWrnJ,OAAQF,IACjCM,EAAMinJ,EAAWvnJ,GACb23H,EAASp1H,QAAQjC,IAAQ,IAC7Bue,EAAOve,GAAO+1B,EAAO/1B,IAGvB,OAAOue,CACT,CAKe2oI,CAA8BnxH,EAAQshG,GAInD,GAAIr5H,OAAOm1F,sBAAuB,CAChC,IAAIg0D,EAAmBnpJ,OAAOm1F,sBAAsBp9D,GAEpD,IAAKr2B,EAAI,EAAGA,EAAIynJ,EAAiBvnJ,OAAQF,IACvCM,EAAMmnJ,EAAiBznJ,GACnB23H,EAASp1H,QAAQjC,IAAQ,GACxBhC,OAAOqB,UAAUgzF,qBAAqBnyF,KAAK61B,EAAQ/1B,KACxDue,EAAOve,GAAO+1B,EAAO/1B,GAEzB,CAEA,OAAOue,CACT,CAEA,SAAS,EAAehf,EAAKG,GAC3B,OAGF,SAAyBH,GACvB,GAAIC,MAAMC,QAAQF,GAAM,OAAOA,CACjC,CALS,CAAgBA,IAOzB,SAA+BA,EAAKG,GAClC,GAAsB,oBAAXR,UAA4BA,OAAOC,YAAYnB,OAAOuB,IAAO,OACxE,IAAI6kJ,EAAO,GACPC,GAAK,EACLC,GAAK,EACL1E,OAAKphJ,EAET,IACE,IAAK,IAAiCmhJ,EAA7BhQ,EAAKpwI,EAAIL,OAAOC,cAAmBklJ,GAAM1E,EAAKhQ,EAAGroI,QAAQC,QAChE68I,EAAK39I,KAAKk5I,EAAGxhJ,QAETuB,GAAK0kJ,EAAKxkJ,SAAWF,GAH8C2kJ,GAAK,GAKhF,CAAE,MAAOr8I,GACPs8I,GAAK,EACL1E,EAAK53I,CACP,CAAE,QACA,IACOq8I,GAAsB,MAAhB1U,EAAW,QAAWA,EAAW,QAC9C,CAAE,QACA,GAAI2U,EAAI,MAAM1E,CAChB,CACF,CAEA,OAAOwE,CACT,CAhCiC,CAAsB7kJ,EAAKG,IAkC5D,SAAqCqiE,EAAGqlF,GACtC,IAAKrlF,EAAG,OACR,GAAiB,iBAANA,EAAgB,OAAOslF,EAAkBtlF,EAAGqlF,GACvD,IAAIxiI,EAAI5mB,OAAOqB,UAAU0wC,SAAS7vC,KAAK6hE,GAAGj2D,MAAM,GAAI,GAC1C,WAAN8Y,GAAkBm9C,EAAE3iE,cAAawlB,EAAIm9C,EAAE3iE,YAAYqB,MACvD,GAAU,QAANmkB,GAAqB,QAANA,EAAa,OAAOplB,MAAMK,KAAK+kB,GAClD,GAAU,cAANA,GAAqB,2CAA2C7E,KAAK6E,GAAI,OAAOyiI,EAAkBtlF,EAAGqlF,EAC3G,CAzCkEE,CAA4B/nJ,EAAKG,IAmDnG,WACE,MAAM,IAAIuf,UAAU,4IACtB,CArDyG,EACzG,CA0CA,SAASooI,EAAkB9nJ,EAAK2hE,IACnB,MAAPA,GAAeA,EAAM3hE,EAAIK,UAAQshE,EAAM3hE,EAAIK,QAE/C,IAAK,IAAIF,EAAI,EAAGC,EAAO,IAAIH,MAAM0hE,GAAMxhE,EAAIwhE,EAAKxhE,IAAKC,EAAKD,GAAKH,EAAIG,GAEnE,OAAOC,CACT,CAMA,SAAS4nJ,IACP,OAAOA,EAAavpJ,OAAOiI,QAAU,SAAUkG,GAC7C,IAAK,IAAI+4B,EAAGrE,EAAI,EAAGA,EAAI/6B,UAAUlG,OAAQihC,IACvC,IAAK,IAAIc,KAAKuD,EAAIp/B,UAAU+6B,GAC1B7iC,OAAOqB,UAAUY,eAAeC,KAAKglC,EAAGvD,KAAOx1B,EAAEw1B,GAAKuD,EAAEvD,IAI5D,OAAOx1B,CACT,EAAGo7I,EAAW1hJ,MAAM3E,KAAM4E,UAC5B,CDpFAu/I,EAAa,IAAKR,EAAaC,GAC/BO,EAAa,KAAMV,GAAQ,SAAU39F,GACnC,IAAIrX,GAAO,IAAIjzB,MAAOozB,cAClB03G,EAAO1iH,KAAK64C,MAAMhuC,EAAO,KACzBxxC,EAAQqxB,SAASw3B,EAAO,IAE5B,OAAOmC,EAAgB,CAAC,EAAG27F,EAD3B3mJ,EAAyC,KAAhCA,EAAQ,GAAKqpJ,EAAO,EAAIA,GAAcrpJ,EAEjD,IACAknJ,EAAa,OAhFA,QAgFgBP,GAC7BO,EAAa,IAAKT,GAAW,SAAU59F,GACrC,OAAOmC,EAAgB,CAAC,EAAG47F,EAAOv1H,SAASw3B,EAAO,IAAM,EAC1D,IACAq+F,EAAa,KAAMV,GAAQ,SAAU39F,GACnC,OAAOmC,EAAgB,CAAC,EAAG47F,EAAOv1H,SAASw3B,EAAO,IAAM,EAC1D,IACAq+F,EAAa,MAAOE,EAAgB,eAAgBC,EAAkB,cAAeT,IACrFM,EAAa,OAAQE,EAAgB,UAAWC,EAAkB,SAAUT,IAC5EM,EAAa,IAAKT,EA5ER,OA6EVS,EAAa,KAAMV,EA7ET,OA8EVU,EAAa,CAAC,IAAK,KAAMT,EAAWI,GACpCK,EAAa,CAAC,KAAM,MAAOV,EAAQK,GACnCK,EAAa,IAAKT,EAAWK,GAC7BI,EAAa,KAAMV,EAAQM,GAC3BI,EAAa,IAAKT,EAAWM,GAC7BG,EAAa,KAAMV,EAAQO,GAC3BG,EAAa,IAAKX,GAAQ,SAAU19F,GAClC,OAAOmC,EAAgB,CAAC,EAAGg8F,EAAmC,IAAtB31H,SAASw3B,EAAO,IAC1D,IACAq+F,EAAa,KAAMV,GAAQ,SAAU39F,GACnC,OAAOmC,EAAgB,CAAC,EAAGg8F,EAAmC,GAAtB31H,SAASw3B,EAAO,IAC1D,IACAq+F,EAAa,MAzGA,QAyGeF,GAU5BE,EAAa,CAAC,IAAK,MARnB,SAAuBziC,GACrB,OAAOA,EAAO6kC,eAAiB,eACjC,IAMwC,SAAUzgG,EAAO47D,GACvD,IAAIwnB,EAA8B,mBAAhBxnB,EAAOwnB,KAAsBxnB,EAAOwnB,KAAKpjF,GAL7D,SAAqBA,GACnB,MAAoD,MAA7C,GAAGnkD,OAAOmkD,GAAO/jD,cAAc2I,OAAO,EAC/C,CAGsE87I,CAAY1gG,GAChF,MAAO,CACLojF,KAAMA,EAEV,IAkBAib,EAAa,CAAC,IAAK,MApII,kBAoIqB,SAAUr+F,GACpD,MAAO,CACL74B,QAlBsB1iB,EAkBGu7C,EAhBvB2gG,EAAQzD,EADAz4I,EAAImwD,MAAM,iBAAmB,CAAC,IAAK,IAAK,KAClB,GAC9Bo+B,EAAS2tD,EAAM,GACfvB,EAAOuB,EAAM,GACbtB,EAASsB,EAAM,GAEf5rB,EAA+B,GAArBvsG,SAAS42H,EAAM,IAAW52H,SAAS62H,EAAQ,IAEzC,IAAZtqB,EACK,EAGS,MAAX/hC,GAAkB+hC,GAAWA,IAbtC,IAA0BtwH,EAEpBk8I,EACA3tD,EACAosD,EACAC,EAEAtqB,CAaN,IACAspB,EAAa,IAAKR,GAAa,SAAU79F,GACvC,MAAO,CACLnnB,KAAM,IAAInjB,KAAK8S,SAASw3B,EAAO,KAEnC,IACAq+F,EAAa,IA1IQ,wBA0Ia,SAAUr+F,GAC1C,MAAO,CACLnnB,KAAM,IAAInjB,KAAyB,IAApB6uE,WAAWvkC,IAE9B,IACAq+F,EAAa,IAAKX,EAAQ,WAC1BW,EAAa,KAAME,EAAgB,eAAgBC,EAAkB,cAAe,YACpFH,EAAa,MAAOE,EAAgB,iBAAkBC,EAAkB,gBAAiB,YACzFH,EAAa,OAAQE,EAAgB,YAAaC,EAAkB,WAAY,YAChFH,EAAa,IAAKT,EAAW,QAC7BS,EAAa,KAAMV,EAAQ,QCE3B,IAAIiD,EAAc,CAAC,QAAS,QAAS,YACjCC,EAAe,CAAC,QAAS,QAAS,cAClCC,EAAkB,CAAC,KAAM,YAwBzBC,EAAU,SAAiB57I,EAAG+4B,GAChC,OAAO,WACL/4B,GAAKA,EAAEtG,MAAM3E,KAAM4E,WAAYo/B,GAAKA,EAAEr/B,MAAM3E,KAAM4E,UACpD,CACF,EAEIkiJ,EA7BgB,SAAuB77I,GACzC,OAAOA,EAAE5B,QAAO,SAAUs2B,EAAG10B,GAC3B,IAAK,IAAI+4B,KAAK/4B,EACZ,GAAK00B,EAAEqE,GAAqB,IAAK,IAAM0iH,EAAY3lJ,QAAQijC,GAAIrE,EAAEqE,GAAKqiH,EAAW,CAAC,EAAG1mH,EAAEqE,GAAI/4B,EAAE+4B,SAAS,IAAK,IAAM2iH,EAAa5lJ,QAAQijC,GAAI,CACxI,IAAIvD,EAAId,EAAEqE,aAAc1lC,MAAQqhC,EAAEqE,GAAK,CAACrE,EAAEqE,IACtCx/B,EAAIyG,EAAE+4B,aAAc1lC,MAAQ2M,EAAE+4B,GAAK,CAAC/4B,EAAE+4B,IAC1CrE,EAAEqE,GAAKvD,EAAE9+B,OAAO6C,EAClB,MAAO,IAAK,IAAMoiJ,EAAgB7lJ,QAAQijC,GACxC,IAAK,IAAIpgB,KAAK3Y,EAAE+4B,GACd,GAAIrE,EAAEqE,GAAGpgB,GAAI,CACX,IAAI4mE,EAAI7qD,EAAEqE,GAAGpgB,aAActlB,MAAQqhC,EAAEqE,GAAGpgB,GAAK,CAAC+b,EAAEqE,GAAGpgB,IAC/CzkB,EAAI8L,EAAE+4B,GAAGpgB,aAActlB,MAAQ2M,EAAE+4B,GAAGpgB,GAAK,CAAC3Y,EAAE+4B,GAAGpgB,IACnD+b,EAAEqE,GAAGpgB,GAAK4mE,EAAE7oF,OAAOxC,EACrB,MAAOwgC,EAAEqE,GAAGpgB,GAAK3Y,EAAE+4B,GAAGpgB,QAEnB,GAAI,QAAUogB,EAAG,IAAK,IAAIxlC,KAAKyM,EAAE+4B,GACtCrE,EAAEqE,GAAGxlC,GAAKmhC,EAAEqE,GAAGxlC,GAAKqoJ,EAAQlnH,EAAEqE,GAAGxlC,GAAIyM,EAAE+4B,GAAGxlC,IAAMyM,EAAE+4B,GAAGxlC,QAChDmhC,EAAEqE,GAAK/4B,EAAE+4B,QAdLrE,EAAEqE,GAAK/4B,EAAE+4B,GAiBtB,OAAOrE,CACT,GAAG,CAAC,EACN,EAUA,SAAS,GAAW+F,GAClB,IAMI/G,EAAO,IAAInjB,KAAKkqB,EANZ9gC,UAAUlG,OAAS,QAAsBpB,IAAjBsH,UAAU,GAAmBA,UAAU,GAAK,EACpEA,UAAUlG,OAAS,QAAsBpB,IAAjBsH,UAAU,GAAmBA,UAAU,GAAK,EACpEA,UAAUlG,OAAS,QAAsBpB,IAAjBsH,UAAU,GAAmBA,UAAU,GAAK,EACpEA,UAAUlG,OAAS,QAAsBpB,IAAjBsH,UAAU,GAAmBA,UAAU,GAAK,EACpEA,UAAUlG,OAAS,QAAsBpB,IAAjBsH,UAAU,GAAmBA,UAAU,GAAK,EACnEA,UAAUlG,OAAS,QAAsBpB,IAAjBsH,UAAU,GAAmBA,UAAU,GAAK,GAO7E,OAJI8gC,EAAI,KAAOA,GAAK,GAClB/G,EAAKkrG,YAAYnkG,GAGZ/G,CACT,CACA,SAAS,GAAYA,GACnB,OAAOA,aAAgBnjB,OAASm+F,MAAMh7E,EACxC,CACA,SAASooH,GAAiBpoH,GACxB,OAAOrgC,MAAMC,QAAQogC,IAAyB,IAAhBA,EAAKjgC,QAAgBigC,EAAKmb,MAAM,KAAgBnb,EAAK,IAAMA,EAAK,EAChG,CAIA,SAASqoH,GAAa/pJ,GACpB,IAAI0hC,EAAO,IAAInjB,KAAKve,GAEpB,GAAI,GAAY0hC,GACd,OAAOA,EAGT,IAAK,IAAIwhD,EAAOv7E,UAAUlG,OAAQuoJ,EAAS,IAAI3oJ,MAAM6hF,EAAO,EAAIA,EAAO,EAAI,GAAIl4E,EAAO,EAAGA,EAAOk4E,EAAMl4E,IACpGg/I,EAAOh/I,EAAO,GAAKrD,UAAUqD,GAG/B,OAAIg/I,EAAOvoJ,OACFsoJ,GAAariJ,WAAM,EAAQsiJ,GAG7B,IAAIzrI,IACb,CACA,SAAS0rI,GAAYjqJ,GACnB,IAAI0hC,EAAO,IAAInjB,KAAKve,GAGpB,OAFA0hC,EAAKwoH,SAAS,EAAG,GACjBxoH,EAAKmrG,SAAS,EAAG,EAAG,EAAG,GAChBnrG,CACT,CACA,SAASyoH,GAAanqJ,GACpB,IAAI0hC,EAAO,IAAInjB,KAAKve,GAGpB,OAFA0hC,EAAKwhH,QAAQ,GACbxhH,EAAKmrG,SAAS,EAAG,EAAG,EAAG,GAChBnrG,CACT,CACA,SAAS0oH,GAAWpqJ,GAClB,IAAI0hC,EAAO,IAAInjB,KAAKve,GAEpB,OADA0hC,EAAKmrG,SAAS,EAAG,EAAG,EAAG,GAChBnrG,CACT,CAiCA,SAASwoH,GAAShwB,EAAWmwB,GAC3B,IAAI3oH,EAAO,IAAInjB,KAAK27G,GAChB3oF,EAA8B,mBAAf84G,EAA4BA,EAAW3oH,EAAKgQ,YAAczhC,OAAOo6I,GAEhFC,EAAc,GADP5oH,EAAKiQ,cACmBJ,EAAQ,EAAG,GAAGE,UAC7C4rF,EAAM37F,EAAK+P,UAEf,OADA/P,EAAKwoH,SAAS34G,EAAO5K,KAAK6pC,IAAI6sD,EAAKitB,IAC5B5oH,CACT,CACA,SAAS6oH,GAAQrwB,EAAWswB,GAC1B,IAAI9oH,EAAO,IAAInjB,KAAK27G,GAChB1oF,EAA4B,mBAAdg5G,EAA2BA,EAAU9oH,EAAKiQ,eAAiB64G,EAE7E,OADA9oH,EAAKkrG,YAAYp7F,GACV9P,CACT,CACA,SAAS+oH,GAAWrqI,EAAQwX,GAC1B,IAAI8J,EAAO,IAAInjB,KAAK6B,GAChBkyF,EAAO,IAAI/zF,KAAKqZ,GAEpB,OADA8J,EAAKmrG,SAASv6B,EAAKzvB,WAAYyvB,EAAKxvB,aAAcwvB,EAAKvvB,cAChDrhD,CACT,CAOA,SAASg2E,GAAMt2G,EAAK+jF,GAClB,IAAK9jF,MAAMC,QAAQF,GACjB,MAAO,GAGT,IAAIqqB,EAAS,GACTs3C,EAAM3hE,EAAIK,OACVF,EAAI,EAGR,IAFA4jF,EAAOA,GAAQpiB,EAERxhE,EAAIwhE,GACTt3C,EAAOnjB,KAAKlH,EAAIuM,MAAMpM,EAAGA,GAAK4jF,IAGhC,OAAO15D,CACT,CAOA,SAAS0rE,GAASx2F,GAChB,MAA+C,oBAAxCd,OAAOqB,UAAU0wC,SAAS7vC,KAAKpB,EACxC,CAOA,SAASoyF,GAAKpyF,EAAK4B,GACjB,IAAK40F,GAASx2F,GAAM,MAAO,CAAC,EAEvBU,MAAMC,QAAQiB,KACjBA,EAAQ,CAACA,IAGX,IAAI82E,EAAM,CAAC,EAMX,OALA92E,EAAMoE,SAAQ,SAAUiC,GAClBA,KAAQjI,IACV04E,EAAIzwE,GAAQjI,EAAIiI,GAEpB,IACOywE,CACT,CAOA,SAASqxE,GAAUtqI,EAAQwX,GACzB,IAAKu/D,GAAS/2E,GACZ,MAAO,CAAC,EAGV,IAAIqL,EAASrL,EAcb,OAZI+2E,GAASv/D,IACX/3B,OAAO4L,KAAKmsB,GAAQjxB,SAAQ,SAAU9E,GACpC,IAAI7B,EAAQ43B,EAAO/1B,GAEfs1F,GAASn3F,IAAUm3F,GAAS/2E,EAAOve,MACrC7B,EAAQ0qJ,GAAUtqI,EAAOve,GAAM7B,IAGjCyrB,EAASm9H,EAAe,CAAC,EAAGn9H,EAAQ,EAAgB,CAAC,EAAG5pB,EAAK7B,GAC/D,IAGKyrB,CACT,CAUA,IAJ8B+qC,GAAI1E,GAJVjrC,GAQpB,IAJ0B2vC,GAIA,SAAU1E,EAAQ/xD,GAEhDF,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAiB,aAAI,EACrB,IASIolH,EATS,CACXy+B,OAAQ,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACvHC,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3FC,SAAU,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YAC7EC,cAAe,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC1DC,YAAa,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAClDhB,eAAgB,EAChB7f,sBAAuB,GAGzBpjI,EAAiB,QAAIolH,EACrBrzD,EAAO/xD,QAAUA,EAAQc,OACzB,EArBkC21D,GAA1B1E,GAAS,CAAE/xD,QAAS,CAAC,GAAgB+xD,GAAO/xD,SAAU+xD,GAAO/xD,SAyBjEk0H,GAAO,CACT02B,cA/BsB9jI,GA4BC,KA3BZA,GAAEjmB,YAAcf,OAAOqB,UAAUY,eAAeC,KAAK8kB,GAAG,WAAaA,GAAW,QAAIA,GA+B/F+jI,WAAY,OACZC,YAAa,MACbC,iBAAiB,GAGfC,GAAgB,KAChBC,GAAU,CAAC,EAEf,SAAS,GAAO1oJ,EAAM+E,EAAQ4jJ,GAC5B,GAAoB,iBAAT3oJ,EAAmB,OAAO0oJ,GAAQD,IAC7C,IAAIhwF,EAAIgwF,GAeR,OAbIC,GAAQ1oJ,KACVy4D,EAAIz4D,GAGF+E,IACF2jJ,GAAQ1oJ,GAAQ+E,EAChB0zD,EAAIz4D,GAGD2oJ,IACHF,GAAgBhwF,GAGXiwF,GAAQ1oJ,IAAS0oJ,GAAQD,GAClC,CAMA,SAASG,GAAU5oJ,GACjB,OAAO,GAAOA,EAAM,MAAM,EAC5B,CAmFA,SAAS6oJ,GAAgB3hC,GACvB,IAAI4hC,EAAQzjJ,UAAUlG,OAAS,QAAsBpB,IAAjBsH,UAAU,GAAmBA,UAAU,GAAKQ,SAASkjJ,KAEzF,IAAK7hC,GAAQA,IAAS4hC,EACpB,OAAO,KAGT,IAAIzP,EAAQ,SAAe37I,EAAO4I,GAChC,OAAO0iJ,iBAAiBtrJ,EAAO,MAAMurJ,iBAAiB3iJ,EACxD,EAIA,MAFY,gBACOgZ,KAAK+5H,EAAMnyB,EAAM,YAAcmyB,EAAMnyB,EAAM,cAAgBmyB,EAAMnyB,EAAM,eAC1EA,EAAO2hC,GAAgB3hC,EAAKlH,WAAY8oC,EAC1D,CA5HAJ,GAAQD,IAAiB92B,GA+HzB,IAAIu3B,GAAS,CACXlpJ,KAAM,QACNimH,OAAQ,CACNkjC,YAAa,CACX5qJ,QAAS,OAGb0B,MAAO,CACLkuB,QAAS,CACPhuB,KAAMC,QACN7B,SAAS,GAEX6qJ,aAAc,CACZjpJ,KAAMC,QACN7B,SAAS,IAGbmH,KAAM,WACJ,MAAO,CACL4yI,IAAK,GACL+Q,KAAM,GAEV,EACAlmJ,MAAO,CACLgrB,QAAS,CACPnO,WAAW,EACXC,QAAS,SAAiBnb,GACxB,IAAIyD,EAAQ9H,KAEZA,KAAKmF,WAAU,WACTd,GACFyD,EAAM+gJ,cAEV,GACF,IAGJtnJ,QAAS,WACP,IAAIokB,EAAS3lB,KAETA,KAAK2oJ,cACPvjJ,SAASkjJ,KAAKzP,YAAY74I,KAAKwB,KAGjCxB,KAAK8oJ,eAAiB,eAAgB1jJ,SAAW,aAAe,YAChEA,SAAS8kH,iBAAiBlqH,KAAK8oJ,eAAgB9oJ,KAAK+oJ,oBAEpD,IAAIC,EAAkBhpJ,KAAK6L,QAAQrK,IACnCxB,KAAKipJ,cAjJT,SAAqBx1F,GACnB,IAAIy1F,GAAY,EAChB,OAAO,WAGL,IAFA,IAAIphJ,EAAQ9H,KAEHmgF,EAAOv7E,UAAUlG,OAAQ+gF,EAAO,IAAInhF,MAAM6hF,GAAOl4E,EAAO,EAAGA,EAAOk4E,EAAMl4E,IAC/Ew3E,EAAKx3E,GAAQrD,UAAUqD,GAGrBihJ,IACJA,GAAY,EACZC,uBAAsB,WACpBD,GAAY,EACZz1F,EAAG9uD,MAAMmD,EAAO23E,EAClB,IACF,CACF,CAiIyB2pE,EAAY,WAC/B,OAAOzjI,EAAOkjI,cAChB,IACA7oJ,KAAKqpJ,cAAgBjB,GAAgBY,IAAoB/qI,OAEzDje,KAAKqpJ,cAAcn/B,iBAAiB,SAAUlqH,KAAKipJ,eAEnDhrI,OAAOisG,iBAAiB,SAAUlqH,KAAKipJ,cACzC,EACA/oJ,cAAe,WACTF,KAAK2oJ,cAAgB3oJ,KAAKwB,IAAI+9G,YAChCv/G,KAAKwB,IAAI+9G,WAAWggC,YAAYv/I,KAAKwB,KAGvC4D,SAASqoH,oBAAoBztH,KAAK8oJ,eAAgB9oJ,KAAK+oJ,oBAEvD/oJ,KAAKqpJ,cAAc57B,oBAAoB,SAAUztH,KAAKipJ,eAEtDhrI,OAAOwvG,oBAAoB,SAAUztH,KAAKipJ,cAC5C,EACApmJ,QAAS,CACPkmJ,mBAAoB,SAA4BtqI,GAC9C,GAAKze,KAAK0tB,QAAV,CACA,IAAIrQ,EAASoB,EAAIpB,OACbc,EAAKne,KAAKwB,IAEV2c,IAAOA,EAAG4c,SAAS1d,IACrBrd,KAAKmM,MAAM,eAAgBsS,EALJ,CAO3B,EACAoqI,aAAc,WACZ,GAAK7oJ,KAAK0tB,QAAV,CACA,IAAI47H,EAAQtpJ,KAAKwB,IACbwnJ,EAAkBhpJ,KAAK6L,QAAQrK,IAC/BmnJ,EAAe3oJ,KAAK2oJ,aAEnB3oJ,KAAKupJ,aACRvpJ,KAAKupJ,WAhKb,SAA6B/9H,GAC3B,IAAIg+H,EAAkBh+H,EAAQotH,MAAMr/G,QAChCkwH,EAAqBj+H,EAAQotH,MAAM8Q,WACvCl+H,EAAQotH,MAAMr/G,QAAU,QACxB/N,EAAQotH,MAAM8Q,WAAa,SAC3B,IAAIC,EAAS1rI,OAAOsqI,iBAAiB/8H,GACjChc,EAAQgc,EAAQo+H,YAAct7H,SAASq7H,EAAOE,WAAY,IAAMv7H,SAASq7H,EAAOG,YAAa,IAC7F90I,EAASwW,EAAQ0sH,aAAe5pH,SAASq7H,EAAOI,UAAW,IAAMz7H,SAASq7H,EAAOK,aAAc,IAGnG,OAFAx+H,EAAQotH,MAAMr/G,QAAUiwH,EACxBh+H,EAAQotH,MAAM8Q,WAAaD,EACpB,CACLj6I,MAAOA,EACPwF,OAAQA,EAEZ,CAkJ0Bi1I,CAAoBX,IAGxC,IAAIY,EAAmBlqJ,KAAKupJ,WAIxBY,EAhJV,SAA6BhsI,EAAIisI,EAAaC,EAAcC,GAC1D,IAAI1B,EAAO,EACP/Q,EAAM,EACN0S,EAAU,EACVz4H,EAAU,EACV04H,EAAersI,EAAGssI,wBAClBC,EAAKtlJ,SAASi3I,gBAAgBsO,YAC9BC,EAAKxlJ,SAASi3I,gBAAgBwO,aAuBlC,OArBIP,IACFC,EAAUtsI,OAAO6sI,YAAcN,EAAa5B,KAC5C92H,EAAU7T,OAAO8sI,YAAcP,EAAa3S,KAI5C+Q,EADE8B,EAAKF,EAAa5B,KAAOwB,GAAeI,EAAa1iG,MAAQsiG,EACxDG,EAAUC,EAAa5B,KAAO,EAC5B4B,EAAa5B,KAAO4B,EAAah7I,MAAQ,GAAKk7I,EAAK,EACrDH,EAEAA,EAAUC,EAAah7I,MAAQ46I,EAItCvS,EADE2S,EAAa3S,KAAOwS,GAAgBO,EAAKJ,EAAazS,QAAUsS,EAC5Dv4H,EAAU84H,EAAKJ,EAAa3S,IAAMwS,EAC/BG,EAAa3S,IAAM2S,EAAax1I,OAAS,GAAK41I,EAAK,EACtD94H,EAAU04H,EAAax1I,OAEvB8c,EAAUu4H,EAGX,CACLzB,KAAM,GAAGjnJ,OAAOinJ,EAAM,MACtB/Q,IAAK,GAAGl2I,OAAOk2I,EAAK,MAExB,CA8GiCmT,CAAoBhC,EAHnCkB,EAAiB16I,MAChB06I,EAAiBl1I,OAEiD2zI,GAC3EC,EAAOuB,EAAqBvB,KAC5B/Q,EAAMsS,EAAqBtS,IAE/B73I,KAAK4oJ,KAAOA,EACZ5oJ,KAAK63I,IAAMA,CAlBc,CAmB3B,IAIJ,SAASoT,GAAmBxmJ,EAAUm0I,EAAO6P,EAAQyC,EAASC,EAAsBC,EAElFC,EAAYC,EAAgBC,EAAmBC,GACrB,kBAAfH,IACTE,EAAoBD,EACpBA,EAAiBD,EACjBA,GAAa,GAIf,IAiBII,EAjBA1jJ,EAA4B,mBAAX0gJ,EAAwBA,EAAO1gJ,QAAU0gJ,EAsD9D,GApDIhkJ,GAAYA,EAAS5E,SACvBkI,EAAQlI,OAAS4E,EAAS5E,OAC1BkI,EAAQg2I,gBAAkBt5I,EAASs5I,gBACnCh2I,EAAQ2jJ,WAAY,EAEhBP,IACFpjJ,EAAQ4jJ,YAAa,IAKrBT,IACFnjJ,EAAQi2I,SAAWkN,GAKjBE,GAEFK,EAAO,SAAcpiI,IAEnBA,EAAUA,GACVrpB,KAAK8sH,QAAU9sH,KAAK8sH,OAAO8+B,YAC3B5rJ,KAAK4L,QAAU5L,KAAK4L,OAAOkhH,QAAU9sH,KAAK4L,OAAOkhH,OAAO8+B,aAGT,oBAAxBC,sBACrBxiI,EAAUwiI,qBAIRjT,GACFA,EAAM55I,KAAKgB,KAAMurJ,EAAkBliI,IAIjCA,GAAWA,EAAQyiI,uBACrBziI,EAAQyiI,sBAAsBtjI,IAAI4iI,EAEtC,EAIArjJ,EAAQgkJ,aAAeN,GACd7S,IACT6S,EAAOJ,EAAa,SAAUhiI,GAC5BuvH,EAAM55I,KAAKgB,KAAMwrJ,EAAqBniI,EAASrpB,KAAKgsJ,MAAMpqJ,SAASqqJ,YACrE,EAAI,SAAU5iI,GACZuvH,EAAM55I,KAAKgB,KAAMsrJ,EAAejiI,GAClC,GAGEoiI,EACF,GAAI1jJ,EAAQ4jJ,WAAY,CAEtB,IAAIO,EAAiBnkJ,EAAQlI,OAE7BkI,EAAQlI,OAAS,SAAkCV,EAAGkqB,GAEpD,OADAoiI,EAAKzsJ,KAAKqqB,GACH6iI,EAAe/sJ,EAAGkqB,EAC3B,CACF,KAAO,CAEL,IAAI8iI,EAAWpkJ,EAAQ2nH,aACvB3nH,EAAQ2nH,aAAey8B,EAAW,GAAGxqJ,OAAOwqJ,EAAUV,GAAQ,CAACA,EACjE,CAGF,OAAOhD,CACT,CAGA,IA68CI2D,GAl6CAC,GAAoBpB,GAAmB,CACzCprJ,OAzCmB,WACnB,IAAI8wH,EAAM3wH,KAENssJ,EAAK37B,EAAIutB,eAETE,EAAKztB,EAAIwtB,MAAMC,IAAMkO,EAEzB,OAAOlO,EAAG,aAAc,CACtB74E,MAAO,CACL,KAAQorD,EAAI+3B,YAAc,kBAE3B,CAAC/3B,EAAIjjG,QAAU0wH,EAAG,MAAO,CAC1BE,MAAO3tB,EAAI+3B,YAAc,oBAAsB/3B,EAAI+3B,YAAc,oBACjE9P,MAAO,CACLf,IAAKlnB,EAAIknB,IACT+Q,KAAMj4B,EAAIi4B,KACV9uH,SAAU,aAEX,CAAC62F,EAAIqoB,GAAG,YAAa,GAAKroB,EAAI+tB,MACnC,EAuBEX,gBArB4B,IAGFzgJ,UA3BPmrJ,GA8BEnrJ,WAMc,EAHLA,WAauF,OAAOA,OAAWA,OAAWA,GA6ChJivJ,GAAsBtB,GAAmB,CAC3CprJ,OAzCqB,WACrB,IAEIysJ,EAFMtsJ,KAEGk+I,eAETE,EAJMp+I,KAIGm+I,MAAMC,IAAMkO,EAEzB,OAAOlO,EAAG,MAAO,CACf74E,MAAO,CACL,MAAS,6BACT,QAAW,gBACX,MAAS,MACT,OAAU,QAEX,CAAC64E,EAAG,OAAQ,CACb74E,MAAO,CACL,EAAK,ukBAGX,EAuBEw4E,gBArB8B,IAGFzgJ,UAmBF,CAAC,EAhBJA,WAMc,EAHLA,WAaiF,OAAOA,OAAWA,OAAWA,GAsD5IkvJ,GAAsBvB,GAAmB,CAC3CprJ,OAlDqB,WACrB,IAAI8wH,EAAM3wH,KAENssJ,EAAK37B,EAAIutB,eAETE,EAAKztB,EAAIwtB,MAAMC,IAAMkO,EAEzB,OAAOlO,EAAG,MAAO,CACf74E,MAAO,CACL,MAAS,6BACT,QAAW,YACX,MAAS,MACT,OAAU,QAEX,CAAC64E,EAAG,OAAQ,CACb74E,MAAO,CACL,EAAK,gBACL,KAAQ,UAERorD,EAAI6tB,GAAG,KAAMJ,EAAG,OAAQ,CAC1B74E,MAAO,CACL,EAAK,qJAELorD,EAAI6tB,GAAG,KAAMJ,EAAG,OAAQ,CAC1B74E,MAAO,CACL,EAAK,+CAGX,EAuBEw4E,gBArB8B,IAGFzgJ,UAmBF,CAAC,EAhBJA,WAMc,EAHLA,WAaiF,OAAOA,OAAWA,OAAWA,GA6C5ImvJ,GAAsBxB,GAAmB,CAC3CprJ,OAzCqB,WACrB,IAEIysJ,EAFMtsJ,KAEGk+I,eAETE,EAJMp+I,KAIGm+I,MAAMC,IAAMkO,EAEzB,OAAOlO,EAAG,MAAO,CACf74E,MAAO,CACL,MAAS,6BACT,QAAW,gBACX,MAAS,MACT,OAAU,QAEX,CAAC64E,EAAG,OAAQ,CACb74E,MAAO,CACL,EAAK,2QAGX,EAuBEw4E,gBArB8B,IAGFzgJ,UAmBF,CAAC,EAhBJA,WAMc,EAHLA,WAaiF,OAAOA,OAAWA,OAAWA,GAyE5IovJ,GAAsBzB,GAAmB,CAC3CprJ,OAxCqB,WACrB,IAAI8wH,EAAM3wH,KAENssJ,EAAK37B,EAAIutB,eAETE,EAAKztB,EAAIwtB,MAAMC,IAAMkO,EAEzB,OAAOlO,EAAG,SAAUztB,EAAIg8B,GAAG,CACzBrO,MAAO,CAAC3tB,EAAI+3B,YAAc,QAAU/3B,EAAI+3B,YAAc,aAAe/3B,EAAI+3B,YAAc,aAAe/3B,EAAIjxH,KAAM,CAC9GD,SAAUkxH,EAAIlxH,WAEhB8lE,MAAO,CACL,KAAQ,SACR,SAAYorD,EAAIlxH,WAEjBkxH,EAAIhpH,YAAa,CAACy2I,EAAG,IAAK,CAC3BE,MAAO3tB,EAAI+3B,YAAc,SAAW/3B,EAAIjxH,QAE5C,EAuBEq+I,gBArB8B,IAGFzgJ,UAvCf,CACbkC,MAAO,CACLE,KAAMoL,OACNrL,SAAUE,SAEZ6lH,OAAQ,CACNkjC,YAAa,CACX5qJ,QAAS,QAmCUR,WAMc,EAHLA,WAa+F,OAAOA,OAAWA,OAAWA,GAE1JsvJ,GAAW,CACbrtJ,KAAM,YACN+gB,WAAY,CACVusI,WAAYH,IAEdlnC,OAAQ,CACN2iC,UAAW,CACTrqJ,QAAS,WACP,OAAOqqJ,EACT,GAEF3H,QAAS,CACP1iJ,QAAS,WACP,OAAO0iJ,CACT,GAEFkI,YAAa,CACX5qJ,QAAS,MAEXgvJ,iBAAkB,CAChBhvJ,aAASR,GAEXyvJ,iBAAkB,CAChBjvJ,aAASR,IAGbkC,MAAO,CACLwtJ,wBAAyB,CACvBttJ,KAAMsC,SACNlE,QAAS,WACP,OAAO,CACT,GAEFmvJ,SAAU,CACRvtJ,KAAM8b,KACN1d,QAAS,WACP,OAAO,IAAI0d,IACb,GAEF0xI,eAAgB,CACdxtJ,KAAMC,QACN7B,SAAS,GAEXqvJ,YAAa,CACXztJ,KAAMoL,OACNhN,QAAS,cAEXsvJ,cAAe,CACb1tJ,KAAMsC,SACNlE,QAAS,WACP,MAAO,EACT,GAEFuvJ,eAAgB,CACd3tJ,KAAMsC,SACNlE,QAAS,WACP,MAAO,EACT,IAGJ0sB,SAAU,CACRy1H,eAAgB,WACd,OAAOjgJ,KAAKmoJ,YAAYP,aAAa3H,gBAAkB,CACzD,EACAqN,UAAW,WACT,IAAIC,EAAkBvtJ,KAAKmoJ,YACvBN,EAAa0F,EAAgB1F,WAC7BE,EAAkBwF,EAAgBxF,gBAClCyF,EAAwBD,EAAgBzF,YACxCA,OAAwC,IAA1B0F,EAAmC,MAAQA,EAEzDC,EAAY,CACdC,MAAO,OACP70H,MAAO74B,KAAKsuC,WAAWtuC,KAAKitJ,SAAUpF,IAEpC8F,EAAa,CACfD,MAAO,QACP70H,MAAO74B,KAAKsuC,WAAWtuC,KAAKitJ,SAAUnF,IAExC,OAAOC,EAAkB,CAAC4F,EAAYF,GAAa,CAACA,EAAWE,EACjE,EACAC,KAAM,WACJ,IAAIlsC,EAAS1hH,KAAKmoJ,YACdyF,EAAOlsC,EAAOksC,MAAQlsC,EAAOkmC,aAAa3G,YAC9C,OAAO2M,EAAKjsJ,OAAOisJ,GAAMhjJ,MAAM5K,KAAKigJ,eAAgBjgJ,KAAKigJ,eAAiB,EAC5E,EACA4N,MAAO,WACL,IAAIp/G,EAAOzuC,KAAKitJ,SAASr+G,cACrBJ,EAAQxuC,KAAKitJ,SAASt+G,WACtBtwC,EAn1BV,SAAqBmoC,GAWnB,IAVA,IAAIy5G,EAAiBz5G,EAAKy5G,eACtBxxG,EAAOjI,EAAKiI,KACZD,EAAQhI,EAAKgI,MACbnwC,EAAM,GAEN4uJ,EAAW,GAAWx+G,EAAMD,EAAO,GACnCs/G,EAAqBb,EAASv+G,UAE9Bq/G,EAAsBD,GAAsBb,EAAS/M,SAAW,EAAID,GAAkB,EAEjFzhJ,EAAIuvJ,EAAqBvvJ,GAAKsvJ,EAAoBtvJ,IACzDH,EAAIkH,KAAK,GAAWkpC,EAAMD,EAAOhwC,EAAIsvJ,IAIvCb,EAAS9F,SAAS34G,EAAQ,EAAG,GAG7B,IAFA,IAAIw/G,EAAwBf,EAASv+G,UAE5B+/F,EAAK,EAAGA,GAAMuf,EAAuBvf,IAC5CpwI,EAAIkH,KAAK,GAAWkpC,EAAMD,EAAOigG,IAMnC,IAHA,IACIwf,EAAkB,IADAH,EAAqBC,EAAsB,GACjBC,EAEvCE,EAAM,EAAGA,GAAOD,EAAiBC,IACxC7vJ,EAAIkH,KAAK,GAAWkpC,EAAMD,EAAOw/G,EAAwBE,IAG3D,OAAO7vJ,CACT,CAozBgB8vJ,CAAY,CACpBlO,eAAgBjgJ,KAAKigJ,eACrBxxG,KAAMA,EACND,MAAOA,IAET,OAAOmmE,GAAMt2G,EAAK,EACpB,GAEFwE,QAAS,CACPurJ,iBAAkB,SAA0B1uJ,GAC1C,IAAIi/B,EAAO,IAAInjB,KAAKxb,KAAKitJ,UAEzB,OAAQvtJ,GACN,IAAK,YACHi/B,EAAKkrG,YAAYlrG,EAAKiQ,cAAgB,EAAGjQ,EAAKgQ,WAAa,EAAG,GAC9DhQ,EAAKmrG,SAAS,GAAI,GAAI,GAAI,KAC1B,MAEF,IAAK,YACHnrG,EAAKkrG,YAAYlrG,EAAKiQ,cAAgB,GACtC,MAEF,IAAK,aACHjQ,EAAKwoH,SAASxoH,EAAKgQ,WAAY,GAC/BhQ,EAAKmrG,SAAS,GAAI,GAAI,GAAI,KAC1B,MAEF,IAAK,aACHnrG,EAAKwoH,SAASxoH,EAAKgQ,WAAa,GAIpC,OAAO3uC,KAAKgtJ,wBAAwBruH,EAAMj/B,EAC5C,EACA2uJ,oBAAqB,WACnBruJ,KAAKmM,MAAM,iBAAkBg7I,GAASnnJ,KAAKitJ,UAAU,SAAU94H,GAC7D,OAAOA,EAAI,CACb,IAAI,aACN,EACAm6H,qBAAsB,WACpBtuJ,KAAKmM,MAAM,iBAAkBg7I,GAASnnJ,KAAKitJ,UAAU,SAAU94H,GAC7D,OAAOA,EAAI,CACb,IAAI,aACN,EACAo6H,0BAA2B,WACzBvuJ,KAAKmM,MAAM,iBAAkBq7I,GAAQxnJ,KAAKitJ,UAAU,SAAU94H,GAC5D,OAAOA,EAAI,CACb,IAAI,YACN,EACAq6H,2BAA4B,WAC1BxuJ,KAAKmM,MAAM,iBAAkBq7I,GAAQxnJ,KAAKitJ,UAAU,SAAU94H,GAC5D,OAAOA,EAAI,CACb,IAAI,YACN,EACAs6H,kBAAmB,SAA2Bf,GAC5C1tJ,KAAKmM,MAAM,cAAeuhJ,EAC5B,EACAgB,iBAAkB,SAA0BC,GACL,mBAA1B3uJ,KAAK8sJ,kBACd9sJ,KAAK8sJ,iBAAiB6B,EAE1B,EACAC,iBAAkB,SAA0BD,GACL,mBAA1B3uJ,KAAK+sJ,kBACd/sJ,KAAK+sJ,iBAAiB4B,EAE1B,EACAE,gBAAiB,SAAyBpwI,GACxC,IAAIpB,EAASoB,EAAIpB,OAEoB,QAAjCA,EAAO9T,QAAQoB,gBACjB0S,EAASA,EAAOkiG,YAGlB,IAAI90G,EAAQ4S,EAAO+U,aAAa,gBAEhC,GAAI3nB,EAAO,CACT,IAGIqkJ,EAAoB,EAHDrkJ,EAAMhC,MAAM,KAAK+B,KAAI,SAAU2pB,GACpD,OAAO7F,SAAS6F,EAAG,GACrB,IACyD,GACrDg6B,EAAM2gG,EAAkB,GACxBC,EAAMD,EAAkB,GAExBnwH,EAAO3+B,KAAK6tJ,MAAM1/F,GAAK4gG,GAC3B/uJ,KAAKmM,MAAM,SAAU,IAAIqP,KAAKmjB,GAChC,CACF,EACA2P,WAAY,SAAoB3P,EAAMqwH,GACpC,OAAO5gJ,EAAOuwB,EAAMqwH,EAAK,CACvBttC,OAAQ1hH,KAAKmoJ,YAAYP,cAE7B,EACAqH,aAAc,SAAsBtwH,GAClC,IAAIqwH,EAAMhvJ,KAAKmtJ,YACf,OAAOntJ,KAAKsuC,WAAW3P,EAAMqwH,EAC/B,EACAE,cAAe,SAAuBvwH,GACpC,OAAO3+B,KAAKwgJ,QAAQ7hH,EAAM3+B,KAAKmoJ,YAAYP,aAC7C,IAkIAuH,GAAsBlE,GAAmB,CAC3CprJ,OA3HqB,WACrB,IAAI8wH,EAAM3wH,KAENssJ,EAAK37B,EAAIutB,eAETE,EAAKztB,EAAIwtB,MAAMC,IAAMkO,EAEzB,OAAOlO,EAAG,MAAO,CACfE,MAAO3tB,EAAI+3B,YAAc,aAAe/3B,EAAI+3B,YAAc,wBACzD,CAACtK,EAAG,MAAO,CACZE,MAAO3tB,EAAI+3B,YAAc,oBACxB,CAACtK,EAAG,cAAe,CACpB74E,MAAO,CACL,KAAQ,cACR,SAAYorD,EAAIy9B,iBAAiB,cAEnC3iI,GAAI,CACF,MAASklG,EAAI49B,6BAEb59B,EAAI6tB,GAAG,KAAMJ,EAAG,cAAe,CACjC74E,MAAO,CACL,KAAQ,OACR,SAAYorD,EAAIy9B,iBAAiB,eAEnC3iI,GAAI,CACF,MAASklG,EAAI09B,uBAEb19B,EAAI6tB,GAAG,KAAMJ,EAAG,cAAe,CACjC74E,MAAO,CACL,KAAQ,eACR,SAAYorD,EAAIy9B,iBAAiB,cAEnC3iI,GAAI,CACF,MAASklG,EAAI69B,8BAEb79B,EAAI6tB,GAAG,KAAMJ,EAAG,cAAe,CACjC74E,MAAO,CACL,KAAQ,QACR,SAAYorD,EAAIy9B,iBAAiB,eAEnC3iI,GAAI,CACF,MAASklG,EAAI29B,wBAEb39B,EAAI6tB,GAAG,KAAMJ,EAAG,OAAQ,CAC1BE,MAAO3tB,EAAI+3B,YAAc,0BACxB/3B,EAAI4tB,GAAG5tB,EAAI28B,WAAW,SAAUzpJ,GACjC,OAAOu6I,EAAG,SAAU,CAClBt/I,IAAK+E,EAAK6pJ,MACVpP,MAAO3tB,EAAI+3B,YAAc,QAAU/3B,EAAI+3B,YAAc,aAAe/3B,EAAI+3B,YAAc,gBAAkB7kJ,EAAK6pJ,MAC7GnoF,MAAO,CACL,KAAQ,UAEV95C,GAAI,CACF,MAAS,SAAe2jI,GACtB,OAAOz+B,EAAI89B,kBAAkB5qJ,EAAK6pJ,MACpC,IAED,CAAC/8B,EAAI6tB,GAAG,aAAe7tB,EAAI8tB,GAAG56I,EAAKg1B,OAAS,aACjD,IAAI,IAAK,GAAI83F,EAAI6tB,GAAG,KAAMJ,EAAG,MAAO,CAClCE,MAAO3tB,EAAI+3B,YAAc,qBACxB,CAACtK,EAAG,QAAS,CACdE,MAAO3tB,EAAI+3B,YAAc,UAAY/3B,EAAI+3B,YAAc,eACtD,CAACtK,EAAG,QAAS,CAACA,EAAG,KAAM,CAACztB,EAAIu8B,eAAiB9O,EAAG,KAAM,CACvDE,MAAO3tB,EAAI+3B,YAAc,wBACtB/3B,EAAI+tB,KAAM/tB,EAAI6tB,GAAG,KAAM7tB,EAAI4tB,GAAG5tB,EAAIi9B,MAAM,SAAUtzB,GACrD,OAAO8jB,EAAG,KAAM,CACdt/I,IAAKw7H,GACJ,CAAC3J,EAAI6tB,GAAG7tB,EAAI8tB,GAAGnkB,KACpB,KAAK,KAAM3J,EAAI6tB,GAAG,KAAMJ,EAAG,QAAS,CAClC3yH,GAAI,CACF,MAASklG,EAAIk+B,kBAEdl+B,EAAI4tB,GAAG5tB,EAAIk9B,OAAO,SAAU1/F,EAAK3vD,GAClC,OAAO4/I,EAAG,KAAM,CACdt/I,IAAKN,EACL8/I,MAAO,CAAC3tB,EAAI+3B,YAAc,YAAa/3B,EAAIy8B,cAAcj/F,KACxD,CAACwiE,EAAIu8B,eAAiB9O,EAAG,KAAM,CAChCE,MAAO3tB,EAAI+3B,YAAc,eACzBnjF,MAAO,CACL,eAAgB/mE,EAAI,OAErB,CAACmyH,EAAI6tB,GAAG,iBAAmB7tB,EAAI8tB,GAAG9tB,EAAIu+B,cAAc/gG,EAAI,KAAO,kBAAoBwiE,EAAI+tB,KAAM/tB,EAAI6tB,GAAG,KAAM7tB,EAAI4tB,GAAGpwF,GAAK,SAAUwgG,EAAMxzF,GACvI,OAAOijF,EAAG,KAAM,CACdt/I,IAAKq8D,EACLkjF,YAAa,OACbC,MAAO3tB,EAAI08B,eAAesB,GAC1BppF,MAAO,CACL,eAAgB/mE,EAAI,IAAM28D,EAC1B,MAASw1D,EAAIs+B,aAAaN,IAE5BljI,GAAI,CACF,WAAc,SAAoB2jI,GAChC,OAAOz+B,EAAI+9B,iBAAiBC,EAC9B,EACA,WAAc,SAAoBS,GAChC,OAAOz+B,EAAIi+B,iBAAiBD,EAC9B,IAED,CAACvQ,EAAG,MAAO,CAACztB,EAAI6tB,GAAG7tB,EAAI8tB,GAAGkQ,EAAKjgH,eACpC,KAAK,EACP,IAAI,QACN,EAuBEqvG,gBArB8B,IAGFzgJ,UA7GPsvJ,GAgHEtvJ,WAMc,EAHLA,WAa+F,OAAOA,OAAWA,OAAWA,GAG1J+xJ,GAAW,CACb9vJ,KAAM,aACN+gB,WAAY,CACVusI,WAAYH,IAEdlnC,OAAQ,CACN2iC,UAAW,CACTrqJ,QAAS,WACP,OAAOqqJ,EACT,GAEFO,YAAa,CACX5qJ,QAAS,OAGb0B,MAAO,CACLwtJ,wBAAyB,CACvBttJ,KAAMsC,SACNlE,QAAS,WACP,OAAO,CACT,GAEFmvJ,SAAU,CACRvtJ,KAAM8b,KACN1d,QAAS,WACP,OAAO,IAAI0d,IACb,GAEF6xI,eAAgB,CACd3tJ,KAAMsC,SACNlE,QAAS,WACP,MAAO,EACT,IAGJ0sB,SAAU,CACR8kI,aAAc,WACZ,OAAOtvJ,KAAKitJ,SAASr+G,aACvB,EACAiyG,OAAQ,WACN,IAAIn/B,EAAS1hH,KAAKmoJ,YAEdtH,GADen/B,EAAOm/B,QAAUn/B,EAAOkmC,aAAa9G,aAC9Bt2I,KAAI,SAAUsF,EAAM0+B,GAC5C,MAAO,CACL1+B,KAAMA,EACN0+B,MAAOA,EAEX,IACA,OAAOmmE,GAAMksC,EAAQ,EACvB,GAEFh+I,QAAS,CACPurJ,iBAAkB,SAA0B1uJ,GAC1C,IAAIi/B,EAAO,IAAInjB,KAAKxb,KAAKitJ,UAEzB,OAAQvtJ,GACN,IAAK,YACHi/B,EAAKkrG,YAAYlrG,EAAKiQ,cAAgB,EAAG,GAAI,IAC7CjQ,EAAKmrG,SAAS,GAAI,GAAI,GAAI,KAC1B,MAEF,IAAK,YACHnrG,EAAKkrG,YAAYlrG,EAAKiQ,cAAgB,EAAG,EAAG,GAIhD,OAAO5uC,KAAKgtJ,wBAAwBruH,EAAMj/B,EAC5C,EACA6uJ,0BAA2B,WACzBvuJ,KAAKmM,MAAM,iBAAkBq7I,GAAQxnJ,KAAKitJ,UAAU,SAAU94H,GAC5D,OAAOA,EAAI,CACb,IAAI,YACN,EACAq6H,2BAA4B,WAC1BxuJ,KAAKmM,MAAM,iBAAkBq7I,GAAQxnJ,KAAKitJ,UAAU,SAAU94H,GAC5D,OAAOA,EAAI,CACb,IAAI,YACN,EACAs6H,kBAAmB,WACjBzuJ,KAAKmM,MAAM,cAAe,OAC5B,EACAojJ,YAAa,SAAqB9wI,GAChC,IAAIpB,EAASoB,EAAIpB,OAEoB,QAAjCA,EAAO9T,QAAQoB,gBACjB0S,EAASA,EAAOkiG,YAGlB,IAAI/wE,EAAQnxB,EAAO+U,aAAa,cAE5Boc,IAAUnxB,EAAO5b,UAAUs5B,SAAS,aACtC/6B,KAAKmM,MAAM,SAAUmiB,SAASkgB,EAAO,IAEzC,IAuFAghH,GAAsBvE,GAAmB,CAC3CprJ,OAhFqB,WACrB,IAAI8wH,EAAM3wH,KAENssJ,EAAK37B,EAAIutB,eAETE,EAAKztB,EAAIwtB,MAAMC,IAAMkO,EAEzB,OAAOlO,EAAG,MAAO,CACfE,MAAO3tB,EAAI+3B,YAAc,aAAe/3B,EAAI+3B,YAAc,yBACzD,CAACtK,EAAG,MAAO,CACZE,MAAO3tB,EAAI+3B,YAAc,oBACxB,CAACtK,EAAG,cAAe,CACpB74E,MAAO,CACL,KAAQ,cACR,SAAYorD,EAAIy9B,iBAAiB,cAEnC3iI,GAAI,CACF,MAASklG,EAAI49B,6BAEb59B,EAAI6tB,GAAG,KAAMJ,EAAG,cAAe,CACjC74E,MAAO,CACL,KAAQ,eACR,SAAYorD,EAAIy9B,iBAAiB,cAEnC3iI,GAAI,CACF,MAASklG,EAAI69B,8BAEb79B,EAAI6tB,GAAG,KAAMJ,EAAG,OAAQ,CAC1BE,MAAO3tB,EAAI+3B,YAAc,0BACxB,CAACtK,EAAG,SAAU,CACfE,MAAO3tB,EAAI+3B,YAAc,QAAU/3B,EAAI+3B,YAAc,YACrDnjF,MAAO,CACL,KAAQ,UAEV95C,GAAI,CACF,MAASklG,EAAI89B,oBAEd,CAAC99B,EAAI6tB,GAAG,aAAe7tB,EAAI8tB,GAAG9tB,EAAI2+B,cAAgB,iBAAkB,GAAI3+B,EAAI6tB,GAAG,KAAMJ,EAAG,MAAO,CAChGE,MAAO3tB,EAAI+3B,YAAc,qBACxB,CAACtK,EAAG,QAAS,CACdE,MAAO3tB,EAAI+3B,YAAc,UAAY/3B,EAAI+3B,YAAc,eACvDj9H,GAAI,CACF,MAASklG,EAAI4+B,cAEd5+B,EAAI4tB,GAAG5tB,EAAIkwB,QAAQ,SAAU1yF,EAAK3vD,GACnC,OAAO4/I,EAAG,KAAM,CACdt/I,IAAKN,GACJmyH,EAAI4tB,GAAGpwF,GAAK,SAAUwgG,EAAMxzF,GAC7B,OAAOijF,EAAG,KAAM,CACdt/I,IAAKq8D,EACLkjF,YAAa,OACbC,MAAO3tB,EAAI08B,eAAesB,EAAKngH,OAC/B+2B,MAAO,CACL,aAAcopF,EAAKngH,QAEpB,CAAC4vG,EAAG,MAAO,CAACztB,EAAI6tB,GAAG7tB,EAAI8tB,GAAGkQ,EAAK7+I,UACpC,IAAI,EACN,IAAI,MACN,EAuBEiuI,gBArB8B,IAGFzgJ,UAlEP+xJ,GAqEE/xJ,WAMc,EAHLA,WAa+F,OAAOA,OAAWA,OAAWA,GA2L1JmyJ,GAAsBxE,GAAmB,CAC3CprJ,OA1EqB,WACrB,IAAI8wH,EAAM3wH,KAENssJ,EAAK37B,EAAIutB,eAETE,EAAKztB,EAAIwtB,MAAMC,IAAMkO,EAEzB,OAAOlO,EAAG,MAAO,CACfE,MAAO3tB,EAAI+3B,YAAc,aAAe/3B,EAAI+3B,YAAc,wBACzD,CAACtK,EAAG,MAAO,CACZE,MAAO3tB,EAAI+3B,YAAc,oBACxB,CAACtK,EAAG,cAAe,CACpB74E,MAAO,CACL,KAAQ,cACR,SAAYorD,EAAIy9B,iBAAiB,gBAEnC3iI,GAAI,CACF,MAASklG,EAAI49B,6BAEb59B,EAAI6tB,GAAG,KAAMJ,EAAG,cAAe,CACjC74E,MAAO,CACL,KAAQ,eACR,SAAYorD,EAAIy9B,iBAAiB,gBAEnC3iI,GAAI,CACF,MAASklG,EAAI69B,8BAEb79B,EAAI6tB,GAAG,KAAMJ,EAAG,OAAQ,CAC1BE,MAAO3tB,EAAI+3B,YAAc,0BACxB,CAACtK,EAAG,OAAQ,CAACztB,EAAI6tB,GAAG7tB,EAAI8tB,GAAG9tB,EAAI++B,cAAe/+B,EAAI6tB,GAAG,KAAMJ,EAAG,OAAQ,CACvEE,MAAO3tB,EAAI+3B,YAAc,+BACvB/3B,EAAI6tB,GAAG,KAAMJ,EAAG,OAAQ,CAACztB,EAAI6tB,GAAG7tB,EAAI8tB,GAAG9tB,EAAIg/B,gBAAiB,GAAIh/B,EAAI6tB,GAAG,KAAMJ,EAAG,MAAO,CACzFE,MAAO3tB,EAAI+3B,YAAc,qBACxB,CAACtK,EAAG,QAAS,CACdE,MAAO3tB,EAAI+3B,YAAc,UAAY/3B,EAAI+3B,YAAc,cACvDj9H,GAAI,CACF,MAASklG,EAAI4+B,cAEd5+B,EAAI4tB,GAAG5tB,EAAIi/B,OAAO,SAAUzhG,EAAK3vD,GAClC,OAAO4/I,EAAG,KAAM,CACdt/I,IAAKN,GACJmyH,EAAI4tB,GAAGpwF,GAAK,SAAUwgG,EAAMxzF,GAC7B,OAAOijF,EAAG,KAAM,CACdt/I,IAAKq8D,EACLkjF,YAAa,OACbC,MAAO3tB,EAAI08B,eAAesB,GAC1BppF,MAAO,CACL,YAAaopF,IAEd,CAACvQ,EAAG,MAAO,CAACztB,EAAI6tB,GAAG7tB,EAAI8tB,GAAGkQ,OAC/B,IAAI,EACN,IAAI,MACN,EAuBE5Q,gBArB8B,IAGFzgJ,UAxKf,CACbiC,KAAM,YACN+gB,WAAY,CACVusI,WAAYH,IAEdlnC,OAAQ,CACNkjC,YAAa,CACX5qJ,QAAS,OAGb0B,MAAO,CACLwtJ,wBAAyB,CACvBttJ,KAAMsC,SACNlE,QAAS,WACP,OAAO,CACT,GAEFmvJ,SAAU,CACRvtJ,KAAM8b,KACN1d,QAAS,WACP,OAAO,IAAI0d,IACb,GAEF6xI,eAAgB,CACd3tJ,KAAMsC,SACNlE,QAAS,WACP,MAAO,EACT,GAEF+xJ,aAAc,CACZnwJ,KAAMsC,WAGVwoB,SAAU,CACRolI,MAAO,WACL,IAAI3C,EAAW,IAAIzxI,KAAKxb,KAAKitJ,UAE7B,MAAiC,mBAAtBjtJ,KAAK6vJ,aACP7vJ,KAAK6vJ,aAAa5C,GAGpBjtJ,KAAK8vJ,SAAS7C,EACvB,EACAyC,UAAW,WACT,OAAO1vJ,KAAK4vJ,MAAM,GAAG,EACvB,EACAD,SAAU,WACR,IAAIl0H,EAAO,SAAcp9B,GACvB,OAAOA,EAAIA,EAAIK,OAAS,EAC1B,EAEA,OAAO+8B,EAAKA,EAAKz7B,KAAK4vJ,OACxB,GAEF/sJ,QAAS,CACPurJ,iBAAkB,SAA0B1uJ,GAC1C,IAAIi/B,EAAO,IAAInjB,KAAKxb,KAAKitJ,UAEzB,OAAQvtJ,GACN,IAAK,cACHi/B,EAAKkrG,YAAY7pI,KAAK0vJ,UAAY,EAAG,GAAI,IACzC/wH,EAAKmrG,SAAS,GAAI,GAAI,GAAI,KAC1B,MAEF,IAAK,cACHnrG,EAAKkrG,YAAY7pI,KAAK2vJ,SAAW,EAAG,EAAG,GAI3C,OAAO3vJ,KAAKgtJ,wBAAwBruH,EAAMj/B,EAC5C,EACAowJ,SAAU,SAAkB7C,GAI1B,IAHA,IAAIyC,EAAsD,GAA1C9rH,KAAK64C,MAAMwwE,EAASr+G,cAAgB,IAChDghH,EAAQ,GAEHpxJ,EAAI,EAAGA,EAAI,GAAIA,IACtBoxJ,EAAMrqJ,KAAKmqJ,EAAYlxJ,GAGzB,OAAOm2G,GAAMi7C,EAAO,EACtB,EACArB,0BAA2B,WACzBvuJ,KAAKmM,MAAM,iBAAkBq7I,GAAQxnJ,KAAKitJ,UAAU,SAAU94H,GAC5D,OAAOA,EAAI,EACb,IAAI,cACN,EACAq6H,2BAA4B,WAC1BxuJ,KAAKmM,MAAM,iBAAkBq7I,GAAQxnJ,KAAKitJ,UAAU,SAAU94H,GAC5D,OAAOA,EAAI,EACb,IAAI,cACN,EACAo7H,YAAa,SAAqB9wI,GAChC,IAAIpB,EAASoB,EAAIpB,OAEoB,QAAjCA,EAAO9T,QAAQoB,gBACjB0S,EAASA,EAAOkiG,YAGlB,IAAI9wE,EAAOpxB,EAAO+U,aAAa,aAE3Bqc,IAASpxB,EAAO5b,UAAUs5B,SAAS,aACrC/6B,KAAKmM,MAAM,SAAUmiB,SAASmgB,EAAM,IAExC,IAoEqBnxC,WAMc,EAHLA,WAa+F,OAAOA,OAAWA,OAAWA,GAE1JyyJ,GAAgB,CAClBxwJ,KAAM,gBACNimH,OAAQ,CACNkjC,YAAa,CACX5qJ,QAAS,MAEXkyJ,mBAAoB,CAClBlyJ,QAAS,WACP,OAAO,WAAa,CACtB,IAGJ0B,MAAO,CACLvC,MAAO,CAAC,EACR8rG,aAAc,CACZjrG,QAAS,WACP,IAAI6gC,EAAO,IAAInjB,KAEf,OADAmjB,EAAKmrG,SAAS,EAAG,EAAG,EAAG,GAChBnrG,CACT,GAEFsxH,aAAc,CACZvwJ,KAAMoL,QAERkiJ,wBAAyB,CACvBttJ,KAAMsC,SACNlE,QAAS,WACP,OAAO,CACT,GAEFoyJ,aAAc,CACZxwJ,KAAMsC,SACNlE,QAAS,WACP,OAAO,CACT,GAEF4B,KAAM,CACJA,KAAMoL,OACNhN,QAAS,QAEXqyJ,WAAY,CACVzwJ,KAAMsC,SACNlE,QAAS,WACP,MAAO,EACT,GAEFovJ,eAAgB,CACdxtJ,KAAMC,QACN7B,aAASR,GAEXuyJ,aAAc,CACZnwJ,KAAMsC,UAERmrJ,YAAa,CACXztJ,KAAMoL,OACNhN,QAAS,cAEXmvJ,SAAUzxI,KAEV40I,cAAe,CACb1wJ,KAAMC,QACN7B,SAAS,IAGbmH,KAAM,WACJ,IAAIorJ,EAAS,CAAC,OAAQ,QAAS,QAC3B5lJ,EAAQm5B,KAAKC,IAAIwsH,EAAOtvJ,QAAQf,KAAKN,MAAO2wJ,EAAOtvJ,QAAQf,KAAKiwJ,eAEpE,MAAO,CACLvC,OAFqB,IAAXjjJ,EAAe4lJ,EAAO5lJ,GAAS,OAGzC6lJ,cAAe,IAAI90I,KAEvB,EACAgP,SAAU,CACR+lI,WAAY,WACV,IAAItzJ,EAAQqB,MAAMC,QAAQyB,KAAK/C,OAAS+C,KAAK/C,MAAQ,CAAC+C,KAAK/C,OACvDuN,EAAM,CACRikC,KAAMy4G,GACN14G,MAAO44G,GACPzoH,KAAM0oH,IAEJn6H,EAAQ1iB,EAAIxK,KAAKN,OAAS8K,EAAIm0B,KAClC,OAAO1hC,EAAM+G,OAAO,IAAawG,KAAI,SAAU2pB,GAC7C,OAAOjH,EAAMiH,EACf,GACF,EACAm7H,aAAc,WACZ,OAAOtvJ,KAAKswJ,cAAc1hH,aAC5B,EACA4hH,cAAe,WACb,OAAOxwJ,KAAKswJ,cAAc3hH,UAC5B,GAEFjsC,MAAO,CACLzF,MAAO,CACLsiB,WAAW,EACXC,QAAS,gBAEXytI,SAAU,CACRztI,QAAS,gBAEXupF,aAAc,CACZvpF,QAAS,iBAGb3c,QAAS,CACP4tJ,aAAc,WACZ,IAAIC,EAAe1wJ,KAAKitJ,SAExB,IAAK,GAAYyD,GAAe,CAC9B,IAAIhyJ,EAASsB,KAAKuwJ,WAAW7xJ,OAC7BgyJ,EAAe1J,GAAatoJ,EAAS,EAAIsB,KAAKuwJ,WAAW7xJ,EAAS,GAAKsB,KAAK+oG,aAC9E,CAEA/oG,KAAKswJ,cAAgBlJ,GAAasJ,EACpC,EACAplC,WAAY,SAAoB3sF,GAC9B,OAAO3+B,KAAKkwJ,aAAa,IAAI10I,KAAKmjB,GAAO3+B,KAAKuwJ,WAChD,EACAI,SAAU,SAAkBhyH,EAAMj/B,GAC3BM,KAAKsrH,WAAW3sF,KACnB3+B,KAAKmM,MAAM,SAAUwyB,EAAMj/B,EAAMM,KAAKuwJ,YAEtCvwJ,KAAKgwJ,mBAAmB,OAAQrxH,EAAMj/B,GAE1C,EACAkxJ,qBAAsB,SAA8B3D,EAAUvtJ,GAC5D,IAAImxJ,EAAc,IAAIr1I,KAAKxb,KAAKswJ,eAChCtwJ,KAAKswJ,cAAgBrD,EACrBjtJ,KAAKmM,MAAM,kBAAmB8gJ,GAC9BjtJ,KAAKgwJ,mBAAmB,kBAAmB/C,EAAU4D,EAAanxJ,EACpE,EACAoxJ,kBAAmB,SAA2BpD,GAC5C,IAAIqD,EAAW/wJ,KAAK0tJ,MACpB1tJ,KAAK0tJ,MAAQA,EACb1tJ,KAAKgwJ,mBAAmB,eAAgBtC,EAAOqD,EACjD,EACAC,iBAAkB,SAA0BviH,GAC1C,GAAkB,SAAdzuC,KAAKN,KAAiB,CACxB,IAAIi/B,EAAO3+B,KAAKixJ,gBAAgBxiH,GAChCzuC,KAAK2wJ,SAAShyH,EAAM,OACtB,MAIE,GAHA3+B,KAAK4wJ,qBAAqB,GAAWniH,EAAMzuC,KAAKwwJ,eAAgB,QAChExwJ,KAAK8wJ,kBAAkB,SAEnB9wJ,KAAKowJ,eAA4C,IAA3BpwJ,KAAKuwJ,WAAW7xJ,OAAc,CACtD,IAAIwyJ,EAAQ,IAAI11I,KAAKxb,KAAKuwJ,WAAW,IAErCW,EAAMrnB,YAAYp7F,GAElBzuC,KAAK2wJ,SAASO,EAAO,OACvB,CAEJ,EACAC,kBAAmB,SAA2B3iH,GAC5C,GAAkB,UAAdxuC,KAAKN,KAAkB,CACzB,IAAIi/B,EAAO3+B,KAAKoxJ,iBAAiB5iH,GACjCxuC,KAAK2wJ,SAAShyH,EAAM,QACtB,MAIE,GAHA3+B,KAAK4wJ,qBAAqB,GAAW5wJ,KAAKsvJ,aAAc9gH,GAAQ,SAChExuC,KAAK8wJ,kBAAkB,QAEnB9wJ,KAAKowJ,eAA4C,IAA3BpwJ,KAAKuwJ,WAAW7xJ,OAAc,CACtD,IAAI2yJ,EAAS,IAAI71I,KAAKxb,KAAKuwJ,WAAW,IAEtCc,EAAOxnB,YAAY7pI,KAAKsvJ,cAExBtvJ,KAAK2wJ,SAASxJ,GAASkK,EAAQ7iH,GAAQ,QACzC,CAEJ,EACA8iH,iBAAkB,SAA0B3yH,GAC1C3+B,KAAK2wJ,SAAShyH,EAAoB,SAAd3+B,KAAKN,KAAkB,OAAS,OACtD,EACA0xJ,iBAAkB,SAA0B5iH,GAC1C,OAAO,GAAWxuC,KAAKsvJ,aAAc9gH,EACvC,EACAyiH,gBAAiB,SAAyBxiH,GACxC,OAAO,GAAWA,EAAM,EAC1B,EACA8iH,eAAgB,SAAwBC,GACtC,IAAIC,EAAkBD,EAAS7iH,aAAe3uC,KAAKwwJ,cAC/CnrC,EAAU,GAEVmsC,EAASp6B,aAAc,IAAI57G,MAAOsuH,SAAS,EAAG,EAAG,EAAG,IACtDzkB,EAAQ9/G,KAAK,SAGXksJ,GACFpsC,EAAQ9/G,KAAK,qBAGf,IAAI+3D,EAAQt9D,KAAK0xJ,cAAcF,GAM/B,MAJgB,WAAVl0F,GAAsBm0F,GAC1BpsC,EAAQ9/G,KAAK+3D,GAGR+nD,EAAQ1jH,OAAO3B,KAAKmwJ,WAAWqB,EAAUxxJ,KAAKuwJ,WAAYlrC,EAAQx6G,KAAK,MAChF,EACA8mJ,gBAAiB,SAAyBnjH,GACxC,IAAI62E,EAAU,GAEd,GAAkB,UAAdrlH,KAAKN,KAAkB,CACrBM,KAAKwwJ,gBAAkBhiH,GACzB62E,EAAQ9/G,KAAK,UAGf,IAAIqsJ,EAAY5xJ,KAAKoxJ,iBAAiB5iH,GAMtC,OAJIxuC,KAAKgtJ,wBAAwB4E,EAAW,UAC1CvsC,EAAQ9/G,KAAK,YAGR8/G,CACT,CAEA,IAAImsC,EAAWxxJ,KAAKoxJ,iBAAiB5iH,GAErC,OADA62E,EAAQ9/G,KAAKvF,KAAK0xJ,cAAcF,IACzBnsC,EAAQ1jH,OAAO3B,KAAKmwJ,WAAWqB,EAAUxxJ,KAAKuwJ,WAAYlrC,EAAQx6G,KAAK,MAChF,EACAgnJ,eAAgB,SAAwBpjH,GACtC,IAAI42E,EAAU,GAEd,GAAkB,SAAdrlH,KAAKN,KAAiB,CACpBM,KAAKsvJ,eAAiB7gH,GACxB42E,EAAQ9/G,KAAK,UAGf,IAAIusJ,EAAa9xJ,KAAKixJ,gBAAgBxiH,GAMtC,OAJIzuC,KAAKgtJ,wBAAwB8E,EAAY,SAC3CzsC,EAAQ9/G,KAAK,YAGR8/G,CACT,CAEA,IAAImsC,EAAWxxJ,KAAKixJ,gBAAgBxiH,GAEpC,OADA42E,EAAQ9/G,KAAKvF,KAAK0xJ,cAAcF,IACzBnsC,EAAQ1jH,OAAO3B,KAAKmwJ,WAAWqB,EAAUxxJ,KAAKuwJ,WAAYlrC,EAAQx6G,KAAK,MAChF,EACA6mJ,cAAe,SAAuBF,GACpC,OAAIxxJ,KAAKsrH,WAAWkmC,GACX,WAGLxxJ,KAAKuwJ,WAAWlkH,MAAK,SAAUlY,GACjC,OAAOA,EAAEijG,YAAco6B,EAASp6B,SAClC,IACS,SAGF,EACT,EACA26B,aAAc,SAAsB5jG,GAClC,GAAkB,SAAdnuD,KAAKN,KAAiB,MAAO,GACjC,IAAIwtB,EAAQihC,EAAI,GAAGipE,UACf7pG,EAAM4gC,EAAI,GAAGipE,UAKjB,OAJap3H,KAAKuwJ,WAAWlkH,MAAK,SAAUlY,GAC1C,IAAIo7E,EAAOp7E,EAAEijG,UACb,OAAO7nB,GAAQriF,GAASqiF,GAAQhiF,CAClC,IACgB,GAAG5rB,OAAO3B,KAAK0oJ,YAAa,gBAAkB,EAChE,GAEF7oJ,OAAQ,WACN,IAAIV,EAAIyF,UAAU,GACd8oJ,EAAQ1tJ,KAAK0tJ,MACb4C,EAAgBtwJ,KAAKswJ,cAEzB,MAAc,SAAV5C,EACKvuJ,EAAEswJ,GAAqB,CAC5B,MAAS,CACP,wBAA2BzvJ,KAAKgtJ,wBAChC,SAAYsD,EACZ,eAAkBtwJ,KAAK6xJ,eACvB,aAAgB7xJ,KAAK6vJ,cAEvB,GAAM,CACJ,OAAU7vJ,KAAKgxJ,iBACf,eAAkBhxJ,KAAK4wJ,wBAKf,UAAVlD,EACKvuJ,EAAEqwJ,GAAqB,CAC5B,MAAS,CACP,wBAA2BxvJ,KAAKgtJ,wBAChC,SAAYsD,EACZ,eAAkBtwJ,KAAK2xJ,iBAEzB,GAAM,CACJ,OAAU3xJ,KAAKmxJ,kBACf,YAAenxJ,KAAK8wJ,kBACpB,eAAkB9wJ,KAAK4wJ,wBAKtBzxJ,EAAEgwJ,GAAqB,CAC5B,MAAS,CACP,wBAA2BnvJ,KAAKgtJ,wBAChC,SAAYsD,EACZ,eAAkBtwJ,KAAKuxJ,eACvB,cAAiBvxJ,KAAK+xJ,aACtB,YAAe/xJ,KAAKmtJ,YACpB,eAAiD,kBAAxBntJ,KAAKktJ,eAA+BltJ,KAAKktJ,eAA+B,SAAdltJ,KAAKN,MAE1F,MAAS,EAAgB,CAAC,EAAG,GAAGiC,OAAO3B,KAAK0oJ,YAAa,uBAAsC,SAAd1oJ,KAAKN,MACtF,GAAM,CACJ,OAAUM,KAAKsxJ,iBACf,YAAetxJ,KAAK8wJ,kBACpB,eAAkB9wJ,KAAK4wJ,uBAG7B,GAGEoB,GAAgB,CAClBzyJ,KAAM,gBACN+gB,WAAY,CACVyvI,cAAeA,IAEjBj1H,QAAS,WACP,MAAO,CACLgyH,iBAAkB9sJ,KAAK8sJ,iBACvBC,iBAAkB/sJ,KAAK+sJ,iBAE3B,EACAvnC,OAAQ,CACNkjC,YAAa,CACX5qJ,QAAS,OAGb0B,MAAOqmJ,EAAe,CAAC,EAAGkK,GAAcvwJ,OACxCyF,KAAM,WACJ,MAAO,CACLsrJ,WAAY,GACZ0B,UAAW,GACXC,aAAc,KAElB,EACA1nI,SAAU,CAER2nI,gBAAiB,WACf,IAAI3nJ,EAAM,CACRm0B,KAAM,EAEN6P,MAAO,GAEPC,KAAM,KAGR,OAAOjkC,EAAIxK,KAAKN,OAAS8K,EAAIm0B,IAC/B,EACAyzH,gBAAiB,WACf,OAAO/1D,GACT,EACAg2D,cAAe,WACb,OAAO/zJ,MAAMC,QAAQyB,KAAK+oG,cAAgB/oG,KAAK+oG,aAAe,CAAC/oG,KAAK+oG,aAAc/oG,KAAK+oG,aACzF,GAEFrmG,MAAO,CACLzF,MAAO,CACLsiB,WAAW,EACXC,QAAS,WACP,IAAI1X,EAAQ9H,KAEZA,KAAKuwJ,WAAaxJ,GAAiB/mJ,KAAK/C,OAAS+C,KAAK/C,MAAQ,CAAC,IAAIue,KAAKw7G,KAAM,IAAIx7G,KAAKw7G,MACvF,IAAIi7B,EAAYjyJ,KAAKuwJ,WAAW/lJ,KAAI,SAAU2pB,EAAG31B,GAC/C,OAAO4oJ,GAAaJ,GAAa7yH,EAAGrsB,EAAMuqJ,cAAc7zJ,IAC1D,IACAwB,KAAKsyJ,gBAAgBL,EACvB,IAGJpvJ,QAAS,CACP0vJ,aAAc,SAAsB5zH,EAAMj/B,GACxC,IAAI8yJ,EAAmB,EAAexyJ,KAAKuwJ,WAAY,GACnDkC,EAAaD,EAAiB,GAC9BE,EAAWF,EAAiB,GAE5B,GAAYC,KAAgB,GAAYC,IACtCD,EAAWr7B,UAAYz4F,EAAKy4F,UAC9Bp3H,KAAKuwJ,WAAa,CAAC5xH,EAAM8zH,GAEzBzyJ,KAAKuwJ,WAAa,CAACkC,EAAY9zH,GAGjC3+B,KAAK2wJ,SAAS3wJ,KAAKuwJ,WAAY7wJ,IAE/BM,KAAKuwJ,WAAa,CAAC5xH,EAAM,IAAInjB,KAAKw7G,KAEtC,EACA81B,iBAAkB,SAA0B6B,GAC1C3uJ,KAAKkyJ,aAAevD,CACtB,EACA5B,iBAAkB,WAChB/sJ,KAAKkyJ,aAAe,IACtB,EACAvB,SAAU,SAAkB9C,EAAOnuJ,GACjCM,KAAKmM,MAAM,SAAU0hJ,EAAOnuJ,EAC9B,EACAizJ,oBAAqB,SAA6B11J,GAChD+C,KAAKsyJ,gBAAgB,CAACr1J,EAAO+C,KAAKiyJ,UAAU,IAAK,EACnD,EACAW,kBAAmB,SAA2B31J,GAC5C+C,KAAKsyJ,gBAAgB,CAACtyJ,KAAKiyJ,UAAU,GAAIh1J,GAAQ,EACnD,EACAq1J,gBAAiB,SAAyBL,GACxC,IAAIY,EAAcjuJ,UAAUlG,OAAS,QAAsBpB,IAAjBsH,UAAU,GAAmBA,UAAU,GAAK,EAClFkuJ,EAAM9yJ,KAAK+yJ,eAAed,GAE9B,GAAIa,EAAK,CACP,IAAI7F,EAAW,IAAIzxI,KAAKy2I,EAAUY,IAClC5F,EAAS9F,SAAS8F,EAASt+G,YAA8B,IAAhBkkH,GAAqBC,EAAMA,IACpEb,EAAUY,GAAe5F,CAC3B,CAEAjtJ,KAAKiyJ,UAAYA,CACnB,EACAc,eAAgB,SAAwBd,GACtC,IAAIe,EAAa,EAAef,EAAW,GACvCgB,EAAeD,EAAW,GAC1BE,EAAgBF,EAAW,GAI3B13B,EAAkB,IAFP43B,EAActkH,cAAgBqkH,EAAarkH,gBAC1CskH,EAAcvkH,WAAaskH,EAAatkH,YAEpD8+B,EAAMztE,KAAKmyJ,gBACXtuH,EAAM7jC,KAAKoyJ,gBAEf,OAAI92B,EAAO7tD,EACFA,EAAM6tD,EAGXA,EAAOz3F,EACFA,EAAMy3F,EAGR,CACT,EACA63B,gBAAiB,SAAyB3B,EAAU4B,EAAcC,GAChE,IAAIhuC,EAAU,GAAG1jH,OAAO3B,KAAKmwJ,WAAWqB,EAAU4B,EAAcC,IAChE,GAAI,kBAAkBx0I,KAAKw0I,GAAa,OAAOhuC,EAE/C,IAAIlM,EAAU,SAAiBl0G,EAAM2uG,GACnC,IAAIngD,EAAK7uD,UAAUlG,OAAS,QAAsBpB,IAAjBsH,UAAU,GAAmBA,UAAU,GAAK,SAAUuvB,GACrF,OAAOA,EAAEijG,SACX,EACIn6H,EAAQw2D,EAAGxuD,GAGXquJ,EAAc,EADD1/C,EAAMppG,IAAIipD,GACkB,GACzCga,EAAM6lF,EAAY,GAClBzvH,EAAMyvH,EAAY,GAEtB,GAAI7lF,EAAM5pC,EAAK,CACb,IAAI2C,EAAO,CAAC3C,EAAK4pC,GACjBA,EAAMjnC,EAAK,GACX3C,EAAM2C,EAAK,EACb,CAEA,OAAOvpC,EAAQwwE,GAAOxwE,EAAQ4mC,CAChC,EAEA,OAA4B,IAAxBuvH,EAAa10J,QAAgBy6G,EAAQq4C,EAAU4B,GAC1C/tC,EAAQ1jH,OAAO,YAGI,IAAxByxJ,EAAa10J,QAAgBsB,KAAKkyJ,cAAgB/4C,EAAQq4C,EAAU,CAAC4B,EAAa,GAAIpzJ,KAAKkyJ,eACtF7sC,EAAQ1jH,OAAO,kBAGjB0jH,CACT,GAEFxlH,OAAQ,WACN,IAAI8lB,EAAS3lB,KAETb,EAAIyF,UAAU,GACd2uJ,EAAgBvzJ,KAAKiyJ,UAAUznJ,KAAI,SAAUyiJ,EAAUxiJ,GACzD,IAAIjL,EAAQqmJ,EAAe,CAAC,EAAGlgI,EAAOjlB,OAAQ,CAC5CusJ,SAAUA,EACVhwJ,MAAO0oB,EAAO4qI,WACdxnD,aAAcpjF,EAAO0sI,cAAc5nJ,GACnC0lJ,WAAYxqI,EAAOwtI,gBAEnB/C,eAAe,IAGb3kI,EAAK,CACP6F,OAAQ3L,EAAO4sI,aACf,kBAA6B,IAAV9nJ,EAAckb,EAAOgtI,oBAAsBhtI,EAAOitI,mBAEvE,OAAOzzJ,EAAE,iBAAkB,CACzB,MAAS0mJ,EAAe,CAAC,EAAGrmJ,GAC5B,GAAMqmJ,EAAe,CAAC,EAAGp6H,IAE7B,IACIi9H,EAAc1oJ,KAAK0oJ,YACvB,OAAOvpJ,EAAE,MAAO,CACd,MAAS,GAAGwC,OAAO+mJ,EAAa,mBAC/B,CAAC6K,GACN,GAuBF,IA0HIC,GAAsBvI,GAAmB,CAC3CprJ,OAzDqB,WACrB,IAAI8wH,EAAM3wH,KAENssJ,EAAK37B,EAAIutB,eAETE,EAAKztB,EAAIwtB,MAAMC,IAAMkO,EAEzB,OAAOlO,EAAG,MAAO,CACfE,MAAO3tB,EAAI+3B,YAAc,aACzB9P,MAAO,CACL9+G,SAAU,WACV25H,SAAU,WAEX,CAACrV,EAAG,MAAO,CACZhyI,IAAK,OACLkyI,MAAO3tB,EAAI+3B,YAAc,kBACzB9P,MAAO,CACLkR,YAAa,IAAMn5B,EAAI+iC,eAAiB,MAE1CjoI,GAAI,CACF,OAAUklG,EAAIgjC,eAEf,CAAChjC,EAAIqoB,GAAG,YAAa,GAAIroB,EAAI6tB,GAAG,KAAMJ,EAAG,MAAO,CACjDE,MAAO3tB,EAAI+3B,YAAc,oBACxB,CAACtK,EAAG,MAAO,CACZhyI,IAAK,QACLkyI,MAAO3tB,EAAI+3B,YAAc,mBACzB9P,MAAO,CACL5jI,OAAQ27G,EAAIijC,YACZ/b,IAAKlnB,EAAIkjC,UAEXpoI,GAAI,CACF,UAAaklG,EAAImjC,sBAGvB,EAuBE/V,gBArB8B,IAGFzgJ,UA1Gf,CACbkoH,OAAQ,CACNkjC,YAAa,CACX5qJ,QAAS,OAGbmH,KAAM,WACJ,MAAO,CACLyuJ,eAAgB,EAChBG,SAAU,GACVD,YAAa,GAEjB,EACA7zJ,QAAS,WACPC,KAAK0zJ,eAjCT,WACE,GAAsB,oBAAXz1I,OAAwB,OAAO,EAC1C,QAAuB3gB,IAAnB8uJ,GAA8B,OAAOA,GACzC,IAAI3yD,EAAQr0F,SAAStF,cAAc,OACnC25F,EAAMm/C,MAAM8Q,WAAa,SACzBjwD,EAAMm/C,MAAM6a,SAAW,SACvBh6D,EAAMm/C,MAAMppI,MAAQ,QACpBiqF,EAAMm/C,MAAM9+G,SAAW,WACvB2/D,EAAMm/C,MAAMf,IAAM,UAClBzyI,SAASkjJ,KAAKzP,YAAYp/C,GAC1B,IAAIs6D,EAAQ3uJ,SAAStF,cAAc,OAKnC,OAJAi0J,EAAMnb,MAAMppI,MAAQ,OACpBiqF,EAAMo/C,YAAYkb,GAClB3H,GAAiB3yD,EAAMmwD,YAAcmK,EAAMnK,YAC3CnwD,EAAM8lB,WAAWggC,YAAY9lD,GACtB2yD,EACT,CAiB0B4H,GACtB5uJ,SAAS8kH,iBAAiB,UAAWlqH,KAAKi0J,cAC5C,EACA/zJ,cAAe,WACbkF,SAAS8kH,iBAAiB,UAAWlqH,KAAKi0J,cAC5C,EACA1yJ,QAAS,WACPvB,KAAKmF,UAAUnF,KAAKk0J,aACtB,EACArxJ,QAAS,CACPqxJ,aAAc,WACZ,IAAIl8C,EAAOh4G,KAAK8L,MAAMksG,KACtB,GAAKA,EAAL,CACA,IAAIm8C,EAAuC,IAApBn8C,EAAK6yC,aAAqB7yC,EAAKo8C,aACtDp0J,KAAK4zJ,YAAcO,EAAmB,IAAM,GAAGxyJ,OAAOwyJ,EAAkB,KAAO,EAF9D,CAGnB,EACAR,aAAc,SAAsBl1I,GAClC,IAAIN,EAAKM,EAAI+3C,cACT49F,EAAej2I,EAAGi2I,aAClB/sH,EAAYlpB,EAAGkpB,UACnBrnC,KAAK6zJ,SAAW,GAAGlyJ,OAAmB,IAAZ0lC,EAAkB+sH,EAAc,IAC5D,EACAN,gBAAiB,SAAyBr1I,GACxCA,EAAIgQ,2BACJzuB,KAAKq0J,YAAa,EAClB,IAAIC,EAAYt0J,KAAK8L,MAAMyoJ,MAAMD,UACjCt0J,KAAKw0J,OAAS/1I,EAAIg2I,QAAUH,EAC5BlvJ,SAAS8kH,iBAAiB,YAAalqH,KAAK00J,cAC9C,EACAA,cAAe,SAAuBj2I,GACpC,GAAKze,KAAKq0J,WAAV,CACA,IAAII,EAAUh2I,EAAIg2I,QACdz8C,EAAOh4G,KAAK8L,MAAMksG,KAClBo8C,EAAep8C,EAAKo8C,aACpBvJ,EAAe7yC,EAAK6yC,aAEpBhT,GADU4c,EAAUz0J,KAAKw0J,QACTJ,EAAevJ,EACnC7yC,EAAK3wE,UAAYwwG,CAPW,CAQ9B,EACAoc,cAAe,WACTj0J,KAAKq0J,aACPr0J,KAAKq0J,YAAa,EAClBjvJ,SAASqoH,oBAAoB,YAAaztH,KAAK00J,eAEnD,IAmDqBp3J,WAMc,EAHLA,WAa+F,OAAOA,OAAWA,OAAWA,GAI1Jq3J,GAAY,SAAmB13J,GAEjC,OADAA,EAAQqxB,SAASrxB,EAAO,KACT,GAAK,IAAI0E,OAAO1E,GAAS,GAAG0E,OAAO1E,EACpD,EAEI23J,GAAkB,SAAyBl2J,EAAQ8zB,EAAMzqB,GAC3D,GAAIzJ,MAAMC,QAAQwJ,GAChB,OAAOA,EAAQ/D,QAAO,SAAUmwB,GAC9B,OAAOA,GAAK,GAAKA,EAAIz1B,CACvB,IAGE8zB,GAAQ,IACVA,EAAO,GAKT,IAFA,IAAIn0B,EAAM,GAEDG,EAAI,EAAGA,EAAIE,EAAQF,GAAKg0B,EAC/Bn0B,EAAIkH,KAAK/G,GAGX,OAAOH,CACT,EAEIy5I,GAAW,SAASA,EAAStsH,EAASm1F,GACxC,IAAIk0C,EAAWjwJ,UAAUlG,OAAS,QAAsBpB,IAAjBsH,UAAU,GAAmBA,UAAU,GAAK,EAGnF,GAAIiwJ,GAAY,EACd1L,uBAAsB,WACpB39H,EAAQ6b,UAAYs5E,CACtB,QAHF,CAOA,IACIm0C,GADan0C,EAAKn1F,EAAQ6b,WACNwtH,EAAW,GACnC1L,uBAAsB,WACpB,IAAI9hH,EAAY7b,EAAQ6b,UAAYytH,EAEhCztH,GAAas5E,EACfn1F,EAAQ6b,UAAYs5E,GAItBn1F,EAAQ6b,UAAYA,EACpBywG,EAAStsH,EAASm1F,EAAIk0C,EAAW,IACnC,GAdA,CAeF,EA4OIE,GAAsB9J,GAAmB,CAC3CprJ,OAtDqB,WACrB,IAAI8wH,EAAM3wH,KAENssJ,EAAK37B,EAAIutB,eAETE,EAAKztB,EAAIwtB,MAAMC,IAAMkO,EAEzB,OAAOlO,EAAG,MAAO,CACfE,MAAO3tB,EAAI+3B,YAAc,iBACxB/3B,EAAI4tB,GAAG5tB,EAAInkH,SAAS,SAAUuiJ,EAAKvwJ,GACpC,OAAO4/I,EAAG,qBAAsB,CAC9Bt/I,IAAKN,EACL8/I,MAAO3tB,EAAI+3B,YAAc,gBACxB,CAACtK,EAAG,KAAM,CACXE,MAAO3tB,EAAI+3B,YAAc,aACzBnjF,MAAO,CACL,YAAawpF,EAAIrvJ,KACjB,aAAclB,GAEhBitB,GAAI,CACF,MAASklG,EAAI4hC,eAEd5hC,EAAI4tB,GAAGwQ,EAAItnF,MAAM,SAAU5jE,EAAMs3D,GAClC,OAAOijF,EAAG,KAAM,CACdt/I,IAAK+E,EAAK5G,MACVqhJ,MAAO,CAAC3tB,EAAI+3B,YAAc,aAAc/3B,EAAIw/B,WAAWtsJ,EAAK5G,MAAO8xJ,EAAIrvJ,OACvE6lE,MAAO,CACL,aAAcpK,IAEf,CAACw1D,EAAI6tB,GAAG,aAAe7tB,EAAI8tB,GAAG56I,EAAKiM,MAAQ,aAChD,IAAI,IACN,IAAI,EACN,EAuBEiuI,gBArB8B,IAGFzgJ,UA1Nf,CACbiC,KAAM,cACN+gB,WAAY,CACV00I,kBAAmBxB,IAErBhuC,OAAQ,CACNkjC,YAAa,CACX5qJ,QAAS,OAGb0B,MAAO,CACLm/B,KAAMnjB,KACNy5I,eAAgB,CACdv1J,KAAMwN,OACNpP,QAAS,KAEXqyJ,WAAY,CACVzwJ,KAAMsC,SACNlE,QAAS,WACP,MAAO,EACT,GAEFo3J,YAAa52J,MACb62J,cAAe72J,MACf82J,cAAe92J,MACf+2J,SAAU,CACR31J,KAAMC,QACN7B,SAAS,GAEXw3J,WAAY,CACV51J,KAAMC,QACN7B,SAAS,GAEXy3J,WAAY,CACV71J,KAAMC,QACN7B,SAAS,GAEX03J,SAAU,CACR91J,KAAMwN,OACNpP,QAAS,GAEX23J,WAAY,CACV/1J,KAAMwN,OACNpP,QAAS,GAEX43J,WAAY,CACVh2J,KAAMwN,OACNpP,QAAS,GAEX63J,OAAQ,CACNj2J,KAAMC,QACN7B,SAAS,IAGb0sB,SAAU,CACRhe,QAAS,WACP,IAAIopJ,EAAO,GAiBX,OAhBI51J,KAAKq1J,UAAUO,EAAKrwJ,KAAK,CAC3B7F,KAAM,OACN+nE,KAAMznE,KAAK61J,iBAET71J,KAAKs1J,YAAYM,EAAKrwJ,KAAK,CAC7B7F,KAAM,SACN+nE,KAAMznE,KAAK81J,mBAET91J,KAAKu1J,YAAYK,EAAKrwJ,KAAK,CAC7B7F,KAAM,SACN+nE,KAAMznE,KAAK+1J,mBAET/1J,KAAK21J,QAAQC,EAAKrwJ,KAAK,CACzB7F,KAAM,OACN+nE,KAAMznE,KAAKg2J,gBAENJ,EAAK5xJ,QAAO,SAAUmwB,GAC3B,OAAOA,EAAEszC,KAAK/oE,OAAS,CACzB,GACF,GAEFgE,MAAO,CACLi8B,KAAM,CACJnf,QAAS,WACP,IAAI1X,EAAQ9H,KAEZA,KAAKmF,WAAU,WACb2C,EAAMmuJ,iBAAiBnuJ,EAAMmtJ,eAC/B,GACF,IAGJ1zJ,QAAS,WACPvB,KAAKi2J,iBAAiB,EACxB,EACApzJ,QAAS,CACPgzJ,aAAc,WACZ,IAAIlwI,EAAS3lB,KAEb,OAAO40J,GAAgB50J,KAAK21J,OAAS,GAAK,GAAI31J,KAAKw1J,SAAUx1J,KAAKk1J,aAAa1qJ,KAAI,SAAU0rJ,GAC3F,IAAIv3H,EAAO,IAAInjB,KAAKmK,EAAOgZ,MACvB7uB,EAAO6kJ,GAAUuB,GAarB,OAXIvwI,EAAOgwI,SACG,IAARO,IACFpmJ,EAAO,MAGL6uB,EAAKmhD,YAAc,KACrBo2E,GAAO,KAKJ,CACLj5J,MAFU0hC,EAAKmrG,SAASosB,GAGxBpmJ,KAAMA,EAEV,GACF,EACAgmJ,eAAgB,WACd,IAAI9sI,EAAShpB,KAEb,OAAO40J,GAAgB,GAAI50J,KAAKy1J,WAAYz1J,KAAKm1J,eAAe3qJ,KAAI,SAAU0rJ,GAE5E,MAAO,CACLj5J,MAFU,IAAIue,KAAKwN,EAAO2V,MAAMw3H,WAAWD,GAG3CpmJ,KAAM6kJ,GAAUuB,GAEpB,GACF,EACAH,eAAgB,WACd,IAAIpmI,EAAS3vB,KAEb,OAAO40J,GAAgB,GAAI50J,KAAK01J,WAAY11J,KAAKo1J,eAAe5qJ,KAAI,SAAU0rJ,GAE5E,MAAO,CACLj5J,MAFU,IAAIue,KAAKmU,EAAOgP,MAAM44F,WAAW2+B,GAG3CpmJ,KAAM6kJ,GAAUuB,GAEpB,GACF,EACAF,YAAa,WACX,IAAI31H,EAASrgC,KAEb,MAAO,CAAC,KAAM,MAAMwK,KAAI,SAAUsF,EAAMtR,GACtC,IAAImgC,EAAO,IAAInjB,KAAK6kB,EAAO1B,MAE3B,MAAO,CACL7uB,KAAMA,EACN7S,MAHU0hC,EAAKmrG,SAASnrG,EAAKmhD,WAAa,GAAS,GAAJthF,GAKnD,GACF,EACAy3J,iBAAkB,SAA0BpB,GAG1C,IAFA,IAAIuB,EAAWp2J,KAAKwB,IAAI+uB,iBAAiB,WAEhC/xB,EAAI,EAAGA,EAAI43J,EAAS13J,OAAQF,IAAK,CACxC,IAAIgtB,EAAU4qI,EAAS53J,GACnB63J,EAAgBjO,GAAgB58H,EAASxrB,KAAKwB,KAElD,GAAI60J,EAAe,CACjB,IAAI11C,EAAKn1F,EAAQ8oI,UACjBxc,GAASue,EAAe11C,EAAIk0C,EAC9B,CACF,CACF,EACAtC,aAAc,SAAsB9zI,GAClC,IAAIpB,EAASoB,EAAIpB,OACbm5C,EAAgB/3C,EAAI+3C,cACxB,GAAqC,OAAjCn5C,EAAO9T,QAAQoB,cAAnB,CACA,IAAIjL,EAAO82D,EAAcpkC,aAAa,aAClCkkI,EAAWhoI,SAASkoC,EAAcpkC,aAAa,cAAe,IAC9DmkI,EAAYjoI,SAASjR,EAAO+U,aAAa,cAAe,IACxDn1B,EAAQ+C,KAAKwM,QAAQ8pJ,GAAU7uF,KAAK8uF,GAAWt5J,MACnD+C,KAAKmM,MAAM,SAAUlP,EAAOyC,EALqB,CAMnD,IAgDqBpC,WAMc,EAHLA,WAa+F,OAAOA,OAAWA,OAAWA,GAI9J,SAASk5J,KACP,IACI/mJ,GADO7K,UAAUlG,OAAS,QAAsBpB,IAAjBsH,UAAU,GAAmBA,UAAU,GAAK,IAC7D6D,MAAM,KAExB,OAAIgH,EAAO/Q,QAAU,EAGZ,CACLk8H,MAHUtsG,SAAS7e,EAAO,GAAI,IAI9BorH,QAHYvsG,SAAS7e,EAAO,GAAI,KAO7B,IACT,CAEA,IA6IIgnJ,GAAsBxL,GAAmB,CAC3CprJ,OAxCqB,WACrB,IAAI8wH,EAAM3wH,KAENssJ,EAAK37B,EAAIutB,eAETE,EAAKztB,EAAIwtB,MAAMC,IAAMkO,EAEzB,OAAOlO,EAAG,qBAAsBztB,EAAI4tB,GAAG5tB,EAAIlpD,MAAM,SAAU5jE,GACzD,OAAOu6I,EAAG,MAAO,CACft/I,IAAK+E,EAAK5G,MACVqhJ,MAAO,CAAC3tB,EAAI+3B,YAAc,eAAgB/3B,EAAIw/B,WAAWtsJ,EAAK5G,QAC9DwuB,GAAI,CACF,MAAS,SAAe2jI,GACtB,OAAOz+B,EAAI4hC,aAAa1uJ,EAAK5G,MAC/B,IAED,CAAC0zH,EAAI6tB,GAAG,SAAW7tB,EAAI8tB,GAAG56I,EAAKiM,MAAQ,SAC5C,IAAI,EACN,EAuBEiuI,gBArB8B,IAGFzgJ,UAvHf,CACbiC,KAAM,cACN+gB,WAAY,CACV00I,kBAAmBxB,IAErBhuC,OAAQ,CACN2iC,UAAW,CACTrqJ,QAAS,WACP,OAAOqqJ,EACT,GAEFO,YAAa,CACX5qJ,QAAS,OAGb0B,MAAO,CACLm/B,KAAMnjB,KACNzT,QAAS,CACPrI,KAAM,CAAC5C,OAAQkF,UACflE,QAAS,WACP,MAAO,EACT,GAEFsQ,OAAQ,CACN1O,KAAMoL,OACNhN,QAAS,YAEXqyJ,WAAY,CACVzwJ,KAAMsC,SACNlE,QAAS,WACP,MAAO,EACT,IAGJ0sB,SAAU,CACRi9C,KAAM,WACJ,IAAI/+C,EAAS,GACT3gB,EAAU/H,KAAK+H,QAEnB,GAAuB,mBAAZA,EACT,OAAOA,KAAa,GAGtB,IAAImlB,EAAQspI,GAAYzuJ,EAAQmlB,OAC5BK,EAAMipI,GAAYzuJ,EAAQwlB,KAC1BiF,EAAOgkI,GAAYzuJ,EAAQyqB,MAC3Bw8H,EAAMjnJ,EAAQqG,QAAUpO,KAAKoO,OAEjC,GAAI8e,GAASK,GAAOiF,EAMlB,IALA,IAAIkkI,EAAexpI,EAAM2tG,QAAwB,GAAd3tG,EAAM0tG,MACrC+7B,EAAappI,EAAIstG,QAAsB,GAAZttG,EAAIqtG,MAC/Bg8B,EAAcpkI,EAAKqoG,QAAuB,GAAbroG,EAAKooG,MAClC56D,EAAMp8B,KAAK64C,OAAOk6E,EAAaD,GAAgBE,GAE1Cp4J,EAAI,EAAGA,GAAKwhE,EAAKxhE,IAAK,CAC7B,IAAIq4J,EAAcH,EAAel4J,EAAIo4J,EACjCh8B,EAAQh3F,KAAK64C,MAAMo6E,EAAc,IACjCh8B,EAAUg8B,EAAc,GACxB55J,EAAQ,IAAIue,KAAKxb,KAAK2+B,MAAMmrG,SAASlP,EAAOC,EAAS,GACzDnyG,EAAOnjB,KAAK,CACVtI,MAAOA,EACP6S,KAAM9P,KAAKsuC,WAAWrxC,EAAO+xJ,IAEjC,CAGF,OAAOtmI,CACT,GAEFnnB,QAAS,WACPvB,KAAKi2J,kBACP,EACApzJ,QAAS,CACPyrC,WAAY,SAAoB3P,EAAMqwH,GACpC,OAAO5gJ,EAAOuwB,EAAMqwH,EAAK,CACvBttC,OAAQ1hH,KAAKmoJ,YAAYP,cAE7B,EACAqO,iBAAkB,WAChB,IAAIzqI,EAAUxrB,KAAKwB,IAAImtB,cAAc,WACrC,GAAKnD,EAAL,CACA,IAAI6qI,EAAgBjO,GAAgB58H,EAASxrB,KAAKwB,KAClD,GAAK60J,GAxFM,SAAkB7qI,EAASm1F,GACtCn1F,IACFA,EAAQ6b,UAAYs5E,EAExB,CAsFMm2C,CAAWT,EADF7qI,EAAQ8oI,UAHG,CAKtB,EACA/B,aAAc,SAAsBt1J,GAClC+C,KAAKmM,MAAM,SAAUlP,EAAO,OAC9B,IAkCqBK,WAMc,EAHLA,WAa+F,OAAOA,OAAWA,OAAWA,GA0Q1Jy5J,GAAsB9L,GAAmB,CAC3CprJ,OArEqB,WACrB,IAAI8wH,EAAM3wH,KAENssJ,EAAK37B,EAAIutB,eAETE,EAAKztB,EAAIwtB,MAAMC,IAAMkO,EAEzB,OAAOlO,EAAG,MAAO,CACfE,MAAO3tB,EAAI+3B,YAAc,SACxB,CAAC/3B,EAAIqmC,eAAiB5Y,EAAG,MAAO,CACjCE,MAAO3tB,EAAI+3B,YAAc,gBACxB,CAACtK,EAAG,SAAU,CACfE,MAAO3tB,EAAI+3B,YAAc,QAAU/3B,EAAI+3B,YAAc,aAAe/3B,EAAI+3B,YAAc,qBACtFnjF,MAAO,CACL,KAAQ,UAEV95C,GAAI,CACF,MAASklG,EAAIsmC,mBAEd,CAACtmC,EAAI6tB,GAAG,WAAa7tB,EAAI8tB,GAAG9tB,EAAIphH,OAAS,cAAgBohH,EAAI+tB,KAAM/tB,EAAI6tB,GAAG,KAAMJ,EAAG,MAAO,CAC3FE,MAAO3tB,EAAI+3B,YAAc,iBACxB,CAAC/3B,EAAIumC,kBAAoB9Y,EAAG,eAAgB,CAC7C74E,MAAO,CACL,KAAQorD,EAAI4/B,WACZ,cAAe5/B,EAAIw/B,WACnB,QAAWx/B,EAAIumC,kBACf,OAAUvmC,EAAIwmC,aAEhB1rI,GAAI,CACF,OAAUklG,EAAI4hC,gBAEbnU,EAAG,eAAgBztB,EAAIymC,GAAG,CAC7B7xF,MAAO,CACL,KAAQorD,EAAI4/B,WACZ,cAAe5/B,EAAIw/B,WACnB,eAAgBx/B,EAAIukC,YACpB,iBAAkBvkC,EAAIwkC,cACtB,iBAAkBxkC,EAAIykC,cACtB,YAAazkC,EAAI6kC,SACjB,cAAe7kC,EAAI8kC,WACnB,cAAe9kC,EAAI+kC,WACnB,kBAAmB/kC,EAAIskC,gBAEzBxpI,GAAI,CACF,OAAUklG,EAAI4hC,eAEf,eAAgB5hC,EAAI0mC,0BAA0B,KAAU,IAC7D,EAuBEtZ,gBArB8B,IAGFzgJ,UAvPf,CACbiC,KAAM,YACN+gB,WAAY,CACVg3I,YAAavC,GACbwC,YAAad,IAEfjxC,OAAQ,CACN2iC,UAAW,CACTrqJ,QAAS,WACP,OAAOqqJ,EACT,GAEFO,YAAa,CACX5qJ,QAAS,OAGb0B,MAAO,CACLvC,MAAO,CAAC,EACR8rG,aAAc,CACZjrG,QAAS,WACP,IAAI6gC,EAAO,IAAInjB,KAEf,OADAmjB,EAAKmrG,SAAS,EAAG,EAAG,EAAG,GAChBnrG,CACT,GAEFvwB,OAAQ,CACNtQ,QAAS,YAEX05J,gBAAiB,CACf93J,KAAMoL,OACNhN,QAAS,cAEXk5J,eAAgB,CACdt3J,KAAMC,QACN7B,SAAS,GAEX25J,aAAc,CACZ/3J,KAAMsC,SACNlE,QAAS,WACP,OAAO,CACT,GAEFo5J,kBAAmB,CACjBx3J,KAAM,CAAC5C,OAAQkF,UACflE,QAAS,WACP,OAAO,IACT,GAEFo3J,YAAa52J,MACb62J,cAAe72J,MACf82J,cAAe92J,MACfk3J,SAAU,CACR91J,KAAMwN,OACNpP,QAAS,GAEX23J,WAAY,CACV/1J,KAAMwN,OACNpP,QAAS,GAEX43J,WAAY,CACVh2J,KAAMwN,OACNpP,QAAS,GAEXu3J,SAAU,CACR31J,KAAMC,QACN7B,aAASR,GAEXg4J,WAAY,CACV51J,KAAMC,QACN7B,aAASR,GAEXi4J,WAAY,CACV71J,KAAMC,QACN7B,aAASR,GAEXq4J,OAAQ,CACNj2J,KAAMC,QACN7B,aAASR,GAEX23J,eAAgB,CACdv1J,KAAMwN,OACNpP,QAAS,MAGbmH,KAAM,WACJ,MAAO,CACLsrJ,WAAYvJ,GAAahnJ,KAAK/C,MAAO+C,KAAK+oG,cAE9C,EACAv+E,SAAU,CACRjb,MAAO,WACL,IAAI49I,EAAcntJ,KAAKw3J,gBACnB74H,EAAO,IAAInjB,KAAKxb,KAAKuwJ,YACzB,OAAOvwJ,KAAKsuC,WAAW3P,EAAMwuH,EAC/B,EACAgK,YAAa,WACX,MAA8B,iBAAhBn3J,KAAKoO,OAAsBpO,KAAKoO,OAAS,UACzD,EACAipJ,yBAA0B,WACxB,IAAIvvJ,EAAQ9H,KAERgvJ,EAAMhvJ,KAAKm3J,YACXO,EAAe,CACjBrC,SAAU,SAASx2I,KAAKmwI,GACxBsG,WAAY,IAAIz2I,KAAKmwI,GACrBuG,WAAY,IAAI12I,KAAKmwI,GACrB2G,OAAQ,KAAK92I,KAAKmwI,IAEhBpxJ,EAAM,CAAC,EAIX,OAHAd,OAAO4L,KAAKgvJ,GAAc9zJ,SAAQ,SAAU9E,GAC1ClB,EAAIkB,GAA6B,kBAAfgJ,EAAMhJ,GAAqBgJ,EAAMhJ,GAAO44J,EAAa54J,EACzE,IACOlB,CACT,GAEF8E,MAAO,CACLzF,MAAO,CACLsiB,WAAW,EACXC,QAAS,WACPxf,KAAKuwJ,WAAavJ,GAAahnJ,KAAK/C,MAAO+C,KAAK+oG,aAClD,IAGJlmG,QAAS,CACPyrC,WAAY,SAAoB3P,EAAMqwH,GACpC,OAAO5gJ,EAAOuwB,EAAMqwH,EAAK,CACvBttC,OAAQ1hH,KAAKmoJ,YAAYP,cAE7B,EACA+P,eAAgB,SAAwB16J,GACtC,OAAO+C,KAAKy3J,aAAa,IAAIj8I,KAAKve,GACpC,EACA26J,eAAgB,SAAwBj5H,GACtC,IAAI1hC,EAAQ,IAAIue,KAAKmjB,GACrB,OAAO3+B,KAAK23J,eAAe16J,IAAU+C,KAAK23J,eAAe16J,EAAMk5J,WAAW,EAAG,EAAG,KAAOn2J,KAAK23J,eAAe16J,EAAMk5J,WAAW,GAAI,GAAI,KACtI,EACA0B,iBAAkB,SAA0Bl5H,GAC1C,IAAI1hC,EAAQ,IAAIue,KAAKmjB,GACrB,OAAO3+B,KAAK23J,eAAe16J,IAAU+C,KAAK23J,eAAe16J,EAAMs6H,WAAW,EAAG,KAAOv3H,KAAK23J,eAAe16J,EAAMs6H,WAAW,GAAI,KAC/H,EACAugC,eAAgB,SAAwBn5H,GACtC,IAAI1hC,EAAQ,IAAIue,KAAKmjB,GACjBo5H,EAAU96J,EAAM6iF,WAAa,GAAK,EAAI,GACtCk4E,EAAUD,EAAU,GACxB,OAAO/3J,KAAK23J,eAAe16J,IAAU+C,KAAK23J,eAAe16J,EAAM6sI,SAASiuB,EAAS,EAAG,EAAG,KAAO/3J,KAAK23J,eAAe16J,EAAM6sI,SAASkuB,EAAS,GAAI,GAAI,KACpJ,EACA1sC,WAAY,SAAoB3sF,EAAMj/B,GACpC,MAAa,SAATA,EACKM,KAAK43J,eAAej5H,GAGhB,WAATj/B,EACKM,KAAK63J,iBAAiBl5H,GAGlB,SAATj/B,EACKM,KAAK83J,eAAen5H,GAGtB3+B,KAAK23J,eAAeh5H,EAC7B,EACA4zH,aAAc,SAAsBt1J,EAAOyC,GACzC,IAAIi/B,EAAO,IAAInjB,KAAKve,GAEf+C,KAAKsrH,WAAWruH,EAAOyC,KAC1BM,KAAKuwJ,WAAa5xH,EAEb3+B,KAAK23J,eAAeh5H,IACvB3+B,KAAKmM,MAAM,SAAUwyB,EAAMj/B,GAGjC,EACAu3J,iBAAkB,WAChBj3J,KAAKmM,MAAM,aACb,EACAgkJ,WAAY,SAAoBlzJ,EAAOyC,GACrC,IAAI8xJ,EAAW,IAAIh2I,KAAKve,GAExB,OAAI+C,KAAKsrH,WAAWruH,EAAOyC,GAClB,WAGL8xJ,EAASp6B,YAAcp3H,KAAKuwJ,WAAWn5B,UAClC,SAGF,EACT,IA+DqB95H,WAMc,EAHLA,WAa+F,OAAOA,OAAWA,OAAWA,GAE1J26J,GAAY,CACd14J,KAAM,YACNimH,OAAQ,CACNkjC,YAAa,CACX5qJ,QAAS,OAGb0B,MAAOqmJ,EAAe,CAAC,EAAGkR,GAAoBv3J,OAC9CyF,KAAM,WACJ,MAAO,CACLwtJ,WAAY,IAAIj3I,KAAKw7G,KACrB07B,SAAU,IAAIl3I,KAAKw7G,KAEvB,EACAt0H,MAAO,CACLzF,MAAO,CACLsiB,WAAW,EACXC,QAAS,WACP,GAAIunI,GAAiB/mJ,KAAK/C,OAAQ,CAChC,IAAIi7J,EAAc,EAAel4J,KAAK/C,MAAO,GACzCw1J,EAAayF,EAAY,GACzBxF,EAAWwF,EAAY,GAE3Bl4J,KAAKyyJ,WAAaA,EAClBzyJ,KAAK0yJ,SAAWA,CAClB,MACE1yJ,KAAKyyJ,WAAa,IAAIj3I,KAAKw7G,KAC3Bh3H,KAAK0yJ,SAAW,IAAIl3I,KAAKw7G,IAE7B,IAGJn0H,QAAS,CACPs1J,WAAY,SAAoBz4J,EAAM+K,GACpC,IAAIk0B,EAAO,CAAC3+B,KAAKyyJ,WAAYzyJ,KAAK0yJ,UAClC1yJ,KAAKmM,MAAM,SAAUwyB,EAAe,SAATj/B,EAAkB,aAAeA,EAAM+K,EACpE,EACA2tJ,kBAAmB,SAA2Bz5H,EAAMj/B,GAClDM,KAAKyyJ,WAAa9zH,EAEZ3+B,KAAK0yJ,SAASt7B,WAAaz4F,EAAKy4F,YACpCp3H,KAAK0yJ,SAAW/zH,GAGlB3+B,KAAKm4J,WAAWz4J,EAAM,EACxB,EACA24J,gBAAiB,SAAyB15H,EAAMj/B,GAE9CM,KAAK0yJ,SAAW/zH,EAEV3+B,KAAKyyJ,WAAWr7B,WAAaz4F,EAAKy4F,YACtCp3H,KAAKyyJ,WAAa9zH,GAGpB3+B,KAAKm4J,WAAWz4J,EAAM,EACxB,EACA44J,kBAAmB,SAA2B35H,GAC5C,OAAO3+B,KAAKy3J,aAAa94H,EAAM,EACjC,EACA45H,gBAAiB,SAAyB55H,GACxC,OAAOA,EAAKy4F,UAAYp3H,KAAKyyJ,WAAWr7B,WAAap3H,KAAKy3J,aAAa94H,EAAM,EAC/E,GAEF9+B,OAAQ,WACN,IAAIV,EAAIyF,UAAU,GACdytJ,EAAgB/zJ,MAAMC,QAAQyB,KAAK+oG,cAAgB/oG,KAAK+oG,aAAe,CAAC/oG,KAAK+oG,aAAc/oG,KAAK+oG,cAChG2/C,EAAc1oJ,KAAK0oJ,YACvB,OAAOvpJ,EAAE,MAAO,CACd,MAAS,GAAGwC,OAAO+mJ,EAAa,mBAC/B,CAACvpJ,EAAE43J,GAAqB,CACzB,MAASlR,EAAe,CAAC,EAAGA,EAAe,CAAC,EAAG7lJ,KAAKU,OAAQ,CAC1DzD,MAAO+C,KAAKyyJ,WACZ1pD,aAAcspD,EAAc,GAC5BoF,aAAcz3J,KAAKs4J,qBAErB,GAAMzS,EAAe,CAAC,EAAGA,EAAe,CAAC,EAAG7lJ,KAAK2H,WAAY,CAC3D2pB,OAAQtxB,KAAKo4J,uBAEbj5J,EAAE43J,GAAqB,CACzB,MAASlR,EAAe,CAAC,EAAGA,EAAe,CAAC,EAAG7lJ,KAAKU,OAAQ,CAC1DzD,MAAO+C,KAAK0yJ,SACZ3pD,aAAcspD,EAAc,GAC5BoF,aAAcz3J,KAAKu4J,mBAErB,GAAM1S,EAAe,CAAC,EAAGA,EAAe,CAAC,EAAG7lJ,KAAK2H,WAAY,CAC3D2pB,OAAQtxB,KAAKq4J,sBAGnB,GAGEG,GAAgB,CAClBj5J,KAAM,gBACNimH,OAAQ,CACNkjC,YAAa,CACX5qJ,QAAS,OAGbkb,MAAO,CAAC,SAAU,0BAClBxZ,MAAOqmJ,EAAe,CAAC,EAAGkK,GAAcvwJ,MAAO,CAAC,EAAGu3J,GAAoBv3J,MAAO,CAC5Ei5J,cAAe,CACb/4J,KAAMC,QACN7B,aAASR,KAGb2H,KAAM,WACJ,MAAO,CACLyzJ,oBAAoB,EACpBz6E,aAAcj+E,KAAK/C,MAEvB,EACAutB,SAAU,CACRmuI,YAAa,WACX,MAAqC,kBAAvB34J,KAAKy4J,cAA8Bz4J,KAAKy4J,cAAgBz4J,KAAK04J,kBAC7E,GAEFh2J,MAAO,CACLzF,MAAO,SAAeoH,GACpBrE,KAAKi+E,aAAe55E,CACtB,GAEFxB,QAAS,CACP+1J,eAAgB,WACd54J,KAAK04J,oBAAqB,EAC1B14J,KAAKmM,MAAM,0BAA0B,EACvC,EACA0sJ,cAAe,WACb74J,KAAK04J,oBAAqB,EAC1B14J,KAAKmM,MAAM,0BAA0B,EACvC,EACAwkJ,SAAU,SAAkBhyH,EAAMj/B,GAChCM,KAAKmM,MAAM,SAAUwyB,EAAMj/B,EAC7B,EACA6yJ,aAAc,SAAsB5zH,EAAMj/B,GAC3B,SAATA,GACFM,KAAK64J,gBAGP,IAAIC,EAAWpR,GAAW/oH,EAAMqoH,GAAahnJ,KAAK/C,MAAO+C,KAAK+oG,eAE1D/oG,KAAKy3J,aAAa,IAAIj8I,KAAKs9I,MAE7BA,EAAWpR,GAAW/oH,EAAM3+B,KAAK+oG,cAE7B/oG,KAAKy3J,aAAa,IAAIj8I,KAAKs9I,KAE7B94J,KAAKi+E,aAAe66E,EAKxB94J,KAAK2wJ,SAASmI,EAAUp5J,EAC1B,GAEFG,OAAQ,WACN,IAAIV,EAAIyF,UAAU,GACdm0J,EAAgB,CAClBv5J,MAAOqmJ,EAAe,CAAC,EAAG71D,GAAKhwF,KAAKU,OAAQ5D,OAAO4L,KAAKqnJ,GAAcvwJ,QAAS,CAC7EE,KAAM,OACNzC,MAAO+C,KAAKi+E,eAEdxyD,GAAI,CACF6F,OAAQtxB,KAAKuyJ,eAGbyG,EAAY,CACdx5J,MAAOqmJ,EAAe,CAAC,EAAG71D,GAAKhwF,KAAKU,OAAQ5D,OAAO4L,KAAKquJ,GAAoBv3J,QAAS,CACnFw3J,gBAAgB,EAChB/5J,MAAO+C,KAAKi+E,eAEdxyD,GAAI,CACF6F,OAAQtxB,KAAK2wJ,SACbsI,WAAYj5J,KAAK44J,iBAGjBlQ,EAAc1oJ,KAAK0oJ,YACvB,OAAOvpJ,EAAE,MAAO,CAACA,EAAE4wJ,GAAejJ,EAAO,CAAC,CAAC,EAAGiS,KAAkB/4J,KAAK24J,aAAex5J,EAAE43J,GAAqBjQ,EAAO,CAAC,CACjH,MAAS,GAAGnlJ,OAAO+mJ,EAAa,mBAC/BsQ,MACL,GAGEE,GAAgB,CAClB35J,KAAM,gBACNimH,OAAQ,CACNkjC,YAAa,CACX5qJ,QAAS,OAGbkb,MAAO,CAAC,SAAU,0BAClBxZ,MAAOqmJ,EAAe,CAAC,EAAGmM,GAAcxyJ,MAAO,CAAC,EAAGy4J,GAAUz4J,MAAO,CAClEi5J,cAAe,CACb/4J,KAAMC,QACN7B,aAASR,KAGb2H,KAAM,WACJ,MAAO,CACLyzJ,oBAAoB,EACpBz6E,aAAcj+E,KAAK/C,MAEvB,EACAutB,SAAU,CACRmuI,YAAa,WACX,MAAqC,kBAAvB34J,KAAKy4J,cAA8Bz4J,KAAKy4J,cAAgBz4J,KAAK04J,kBAC7E,GAEFh2J,MAAO,CACLzF,MAAO,SAAeoH,GACpBrE,KAAKi+E,aAAe55E,CACtB,GAEFxB,QAAS,CACP+1J,eAAgB,WACd54J,KAAK04J,oBAAqB,EAC1B14J,KAAKmM,MAAM,0BAA0B,EACvC,EACA0sJ,cAAe,WACb74J,KAAK04J,oBAAqB,EAC1B14J,KAAKmM,MAAM,0BAA0B,EACvC,EACAwkJ,SAAU,SAAkB9C,EAAOnuJ,GACjCM,KAAKmM,MAAM,SAAU0hJ,EAAOnuJ,EAC9B,EACA6yJ,aAAc,SAAsB1E,EAAOnuJ,GACzC,IAAIoI,EAAQ9H,KAEC,SAATN,GACFM,KAAK64J,gBAGP,IAAIxG,EAAgB/zJ,MAAMC,QAAQyB,KAAK+oG,cAAgB/oG,KAAK+oG,aAAe,CAAC/oG,KAAK+oG,aAAc/oG,KAAK+oG,cAChGowD,EAAYtL,EAAMrjJ,KAAI,SAAUm0B,EAAMngC,GAExC,OAAOkpJ,GAAW/oH,EADPooH,GAAiBj/I,EAAM7K,OAAS6K,EAAM7K,MAAMuB,GAAK6zJ,EAAc7zJ,GAE5E,IAEI26J,EAAU,GAAG/hC,UAAY+hC,EAAU,GAAG/hC,YACxC+hC,EAAY,CAACA,EAAU,GAAIA,EAAU,KAGnCA,EAAU9sH,KAAKrsC,KAAKy3J,gBACtB0B,EAAYtL,EAAMrjJ,KAAI,SAAUm0B,EAAMngC,GACpC,OAAOkpJ,GAAW/oH,EAAM0zH,EAAc7zJ,GACxC,KAEc6tC,KAAKrsC,KAAKy3J,cACtBz3J,KAAKi+E,aAAek7E,EAKxBn5J,KAAK2wJ,SAASwI,EAAWz5J,EAC3B,GAEFG,OAAQ,WACN,IAAIV,EAAIyF,UAAU,GACdm0J,EAAgB,CAClBv5J,MAAOqmJ,EAAe,CAAC,EAAG71D,GAAKhwF,KAAKU,OAAQ5D,OAAO4L,KAAKspJ,GAAcxyJ,QAAS,CAC7EE,KAAM,OACNzC,MAAO+C,KAAKi+E,eAEdxyD,GAAI,CACF6F,OAAQtxB,KAAKuyJ,eAGbyG,EAAY,CACdx5J,MAAOqmJ,EAAe,CAAC,EAAG71D,GAAKhwF,KAAKU,OAAQ5D,OAAO4L,KAAKuvJ,GAAUz4J,QAAS,CACzEvC,MAAO+C,KAAKi+E,aACZ+4E,gBAAgB,IAElBvrI,GAAI,CACF6F,OAAQtxB,KAAK2wJ,SACbsI,WAAYj5J,KAAK44J,iBAGjBlQ,EAAc1oJ,KAAK0oJ,YACvB,OAAOvpJ,EAAE,MAAO,CAACA,EAAE6yJ,GAAelL,EAAO,CAAC,CAAC,EAAGiS,KAAkB/4J,KAAK24J,aAAex5J,EAAE84J,GAAWnR,EAAO,CAAC,CACvG,MAAS,GAAGnlJ,OAAO+mJ,EAAa,mBAC/BsQ,MACL,GAGEI,GAAe,CACjBt7J,QAASiyJ,GACTxgD,KAAMwnD,GACN+B,SAAUN,IAERa,GAAoB,CACtBv7J,QAASk0J,GACTziD,KAAM0oD,GACNa,SAAUI,IAER38H,GAAa,CACfh9B,KAAM,aACNu7B,QAAS,WACP,IAAIhzB,EAAQ9H,KAEZ,MAAO,CAELmoJ,UAAW,WACT,OAAOrgJ,EAAM45G,MACf,EACA8+B,QAASxgJ,KAAKwgJ,QACdkI,YAAa1oJ,KAAK0oJ,YAClBsH,mBAAoBhwJ,KAAKmM,MAAMF,KAAKjM,MAExC,EACAR,MAAOqmJ,EAAe,CAAC,EAAG2S,GAAch5J,MAAO,CAC7CvC,MAAO,CAAC,EACRq8J,UAAW,CACT55J,KAAMoL,OACNhN,QAAS,QAGX4B,KAAM,CACJA,KAAMoL,OAENhN,QAAS,QAEXsQ,OAAQ,CACN1O,KAAMoL,QAER07H,UAAW,CACT9mI,KAAM5C,QAER82G,MAAO,CACLl0G,KAAMC,QACN7B,SAAS,GAEXojH,SAAU,CACRxhH,KAAMC,QACN7B,SAAS,GAEXy7J,eAAgB,CACd75J,KAAMoL,QAERomH,KAAM,CACJxxH,KAAM,CAACoL,OAAQhO,SAEjBqpC,YAAa,CACXzmC,KAAMoL,OACNhN,QAAS,IAEX4O,SAAU,CACRhN,KAAMC,QACN7B,SAAS,GAEX2B,SAAU,CACRC,KAAMC,QACN7B,SAAS,GAEXm7I,UAAW,CACTv5I,KAAMC,QACN7B,SAAS,GAEX4qJ,YAAa,CACXhpJ,KAAMoL,OACNhN,QAAS,MAEX07J,WAAY,CAAC,EACbC,UAAW,CACT/5J,KAAM5C,OACNgB,QAAS,WACP,MAAO,CAAC,CACV,GAEF6qJ,aAAc,CACZjpJ,KAAMC,QACN7B,SAAS,GAEX4yB,KAAM,CACJhxB,KAAMC,QACN7B,aAASR,GAEXo8J,WAAY,CAAC,EACbC,WAAY,CACVj6J,KAAM5C,OACNgB,QAAS,WACP,MAAO,CAAC,CACV,GAEFkmE,OAAQ,CACNtkE,KAAMC,QACN7B,SAAS,GAEX87J,QAAS,CACPl6J,KAAMC,QACN7B,SAAS,GAEX+7J,YAAa,CACXn6J,KAAMoL,OACNhN,QAAS,MAEXg8J,gBAAiB,CACfp6J,KAAMsC,UAER+3J,UAAW,CACTr6J,KAAMpB,MACN8sH,UAAW,SAAmBnuH,GAC5B,OAAOqB,MAAMC,QAAQtB,IAAUA,EAAM68C,OAAM,SAAU3lB,GACnD,OAAOigE,GAASjgE,IAAwB,iBAAXA,EAAErkB,MAA0C,mBAAdqkB,EAAE6lI,OAC/D,GACF,EACAl8J,QAAS,WACP,MAAO,EACT,KAGJmH,KAAM,WACJ,MAAO,CAELg5E,aAAc,KACdg8E,UAAW,KACXC,aAAa,EACbC,cAAc,EAElB,EACA3vI,SAAU,CACR4vI,aAAc,WACZ,OAAQp6J,KAAKP,WAAkC,kBAAdO,KAAK0wB,KAAqB1wB,KAAK0wB,KAAO1wB,KAAKk6J,YAC9E,EACAG,oBAAqB,WACnB,OAAOr6J,KAAKu5J,iBAAmBv5J,KAAKkhH,SAAW,IAAM,MACvD,EACAo5C,YAAa,WACX,IAAI9vJ,EAAM,CACRm0B,KAAM,aACNm6H,SAAU,sBACVrqH,KAAM,OACND,MAAO,UACP+gE,KAAM,WACNwqB,KAAM,KAER,OAAO/5H,KAAKoO,QAAU5D,EAAIxK,KAAKN,OAAS8K,EAAIm0B,IAC9C,EACA4xH,WAAY,WACV,IAAItzJ,EAAQ+C,KAAK/C,MAEjB,OAAI+C,KAAKu6J,mBACPt9J,EAAQqB,MAAMC,QAAQtB,GAASA,EAAQ,IAC1BuN,IAAIxK,KAAKw6J,YAGpBx6J,KAAK4zG,OACP32G,EAAQqB,MAAMC,QAAQtB,GAASA,EAAM2N,MAAM,EAAG,GAAK,CAAC,KAAM,OAC7CJ,IAAIxK,KAAKw6J,YAGjBx6J,KAAKw6J,WAAWv9J,EACzB,EACA6S,KAAM,WACJ,IAAI6V,EAAS3lB,KAEb,OAAuB,OAAnBA,KAAKi6J,UACAj6J,KAAKi6J,UAGsB,mBAAzBj6J,KAAK85J,gBACP95J,KAAK85J,gBAAgB95J,KAAKuwJ,YAG9BvwJ,KAAKy6J,aAAaz6J,KAAKuwJ,YAIxBjyJ,MAAMC,QAAQyB,KAAKuwJ,YACdvwJ,KAAKuwJ,WAAW/lJ,KAAI,SAAU2pB,GACnC,OAAOxO,EAAO2oB,WAAWna,EAC3B,IAAGtpB,KAAK7K,KAAKq6J,qBAGRr6J,KAAKsuC,WAAWtuC,KAAKuwJ,YATnB,EAUX,EACAmK,cAAe,WACb,OAAQ16J,KAAKP,UAAYO,KAAKi5I,WAAaj5I,KAAK8P,MAAQ9P,KAAKm6J,YAC/D,EACAz4C,OAAQ,WACN,OAAIttB,GAASp0F,KAAKkxH,MACTy2B,GAAUQ,KAAanoJ,KAAKkxH,MAG9Bi3B,GAAUnoJ,KAAKkxH,KACxB,EACAqpC,kBAAmB,WAEjB,OAAOv6J,KAAKkhH,WAAalhH,KAAK4zG,QAAuC,IADzD,CAAC,OAAQ,QAAS,QACe7yG,QAAQf,KAAKN,KAC5D,GAEFgD,MAAO,CACL6tJ,WAAY,CACVhxI,WAAW,EACXC,QAAS,SAAiBnb,GACxBrE,KAAKi+E,aAAe55E,CACtB,GAEF+1J,aAAc,CACZ56I,QAAS,SAAiBnb,GACpBA,IACFrE,KAAKi+E,aAAej+E,KAAKuwJ,WAE7B,IAGJxwJ,QAAS,WACsB,WAAzBhC,EAAQiC,KAAKoO,SACf+hB,QAAQ2vF,KAAK,yHAEjB,EACAj9G,QAAS,CACP6rJ,iBAAkB,WAChB1uJ,KAAKm6J,cAAe,CACtB,EACAvL,iBAAkB,WAChB5uJ,KAAKm6J,cAAe,CACtB,EACAQ,mBAAoB,SAA4Bl8I,GAC9C,IAAIpB,EAASoB,EAAIpB,OAEZrd,KAAKwB,IAAIu5B,SAAS1d,IACrBrd,KAAK46J,YAET,EACAC,aAAc,SAAsB/7J,GAClC,OAAOs1F,GAASp0F,KAAKwmI,YAAcxmI,KAAKwmI,UAAU1nI,IAAQs1F,GAASp0F,KAAKoO,SAAWpO,KAAKoO,OAAOtP,EACjG,EACA0hJ,QAAS,SAAmB7hH,EAAM52B,GAChC,MAA4C,mBAAjC/H,KAAK66J,aAAa,WACpB76J,KAAK66J,aAAa,UAAlB76J,CAA6B2+B,EAAM52B,GAGrCy4I,EAAQ7hH,EAAM52B,EACvB,EACA2yH,UAAW,SAAmBz9H,EAAO+xJ,GAGnC,GAFAA,EAAMA,GAAOhvJ,KAAKs6J,YAEwB,mBAA/Bt6J,KAAK66J,aAAa,SAC3B,OAAO76J,KAAK66J,aAAa,QAAlB76J,CAA2B/C,EAAO+xJ,GAG3C,IAAIlK,EAAa,IAAItpI,KACrB,OAAOyT,EAAMhyB,EAAO+xJ,EAAK,CACvBttC,OAAQ1hH,KAAK0hH,OAAOkmC,aACpB9C,WAAYA,GAEhB,EACAx2G,WAAY,SAAoB3P,EAAMqwH,GAGpC,OAFAA,EAAMA,GAAOhvJ,KAAKs6J,YAE4B,mBAAnCt6J,KAAK66J,aAAa,aACpB76J,KAAK66J,aAAa,YAAlB76J,CAA+B2+B,EAAMqwH,GAGvC5gJ,EAAOuwB,EAAMqwH,EAAK,CACvBttC,OAAQ1hH,KAAK0hH,OAAOkmC,cAExB,EAEA4S,WAAY,SAAoBv9J,GAC9B,OAAQ+C,KAAKs5J,WACX,IAAK,OACH,OAAOr8J,aAAiBue,KAAO,IAAIA,KAAKve,EAAMm6H,WAAa,IAAI57G,KAAKw7G,KAEtE,IAAK,YACH,MAAwB,iBAAV/5H,EAAqB,IAAIue,KAAKve,GAAS,IAAIue,KAAKw7G,KAEhE,IAAK,SACH,MAAwB,iBAAV/5H,EAAqB+C,KAAK06H,UAAUz9H,GAAS,IAAIue,KAAKw7G,KAEtE,QACE,MAAwB,iBAAV/5H,EAAqB+C,KAAK06H,UAAUz9H,EAAO+C,KAAKs5J,WAAa,IAAI99I,KAAKw7G,KAE1F,EAEA8jC,WAAY,SAAoBn8H,GAC9B,IAAK,GAAYA,GAAO,OAAO,KAE/B,OAAQ3+B,KAAKs5J,WACX,IAAK,OACH,OAAO36H,EAET,IAAK,YACH,OAAOA,EAAKy4F,UAEd,IAAK,SACH,OAAOp3H,KAAKsuC,WAAW3P,GAEzB,QACE,OAAO3+B,KAAKsuC,WAAW3P,EAAM3+B,KAAKs5J,WAExC,EACAyB,UAAW,SAAmBp8H,EAAMj/B,GAClC,IAAIinB,IAAQ/hB,UAAUlG,OAAS,QAAsBpB,IAAjBsH,UAAU,KAAmBA,UAAU,GAE3E5E,KAAKi6J,UAAY,KACjB,IAAIh9J,EAAQqB,MAAMC,QAAQogC,GAAQA,EAAKn0B,IAAIxK,KAAK86J,YAAc96J,KAAK86J,WAAWn8H,GAQ9E,OAPA3+B,KAAKmM,MAAM,QAASlP,GACpB+C,KAAKmM,MAAM,SAAUlP,EAAOyC,GAExBinB,GACF3mB,KAAK46J,aAGA39J,CACT,EACAw9J,aAAc,SAAsBx9J,GAClC,OAAI+C,KAAKu6J,mBA75GO1M,EA85GM5wJ,EA75GnBqB,MAAMC,QAAQsvJ,IAAUA,EAAM/zG,MAAM,KAg6GnC95C,KAAK4zG,MACAmzC,GAAiB9pJ,GAGnB,GAAYA,GAr6GzB,IAAsB4wJ,CAs6GlB,EACAmN,2BAA4B,SAAoC/9J,GAC9D,IAAK+C,KAAKy6J,aAAax9J,GACrB,OAAO,EAGT,IAAIizJ,EAA4C,mBAAtBlwJ,KAAKkwJ,aAA8BlwJ,KAAKkwJ,aAAe,WAC/E,OAAO,CACT,EACIuH,EAA4C,mBAAtBz3J,KAAKy3J,aAA8Bz3J,KAAKy3J,aAAe,WAC/E,OAAO,CACT,EAMA,OAJKn5J,MAAMC,QAAQtB,KACjBA,EAAQ,CAACA,IAGJA,EAAM68C,OAAM,SAAU3lB,GAC3B,OAAQ+7H,EAAa/7H,KAAOsjI,EAAatjI,EAC3C,GACF,EACA8mI,oBAAqB,SAA6Bt8H,EAAMkvH,GACtD,GAAI7tJ,KAAKu6J,mBAAqB1M,EAAO,CACnC,IAAIqN,EAAYrN,EAAM7pJ,QAAO,SAAUmwB,GACrC,OAAOA,EAAEijG,YAAcz4F,EAAKy4F,SAC9B,IAMA,OAJI8jC,EAAUx8J,SAAWmvJ,EAAMnvJ,QAC7Bw8J,EAAU31J,KAAKo5B,GAGVu8H,CACT,CAEA,OAAOv8H,CACT,EACA2yH,iBAAkB,SAA0BjtJ,EAAK3E,EAAMmuJ,GACrDxpJ,EAAMrE,KAAKi7J,oBAAoB52J,EAAKwpJ,GAEhC7tJ,KAAK45J,QACP55J,KAAKi+E,aAAe55E,EAEpBrE,KAAK+6J,UAAU12J,EAAK3E,GACnBM,KAAKu6J,oBAAsB76J,IAASM,KAAKN,MAAiB,SAATA,GAEtD,EACAwmD,MAAO,WACLlmD,KAAK+6J,UAAU/6J,KAAK4zG,MAAQ,CAAC,KAAM,MAAQ,MAC3C5zG,KAAKmM,MAAM,QACb,EACAgvJ,YAAa,SAAqB18I,GAChCA,EAAIwgI,kBACJj/I,KAAKkmD,OACP,EACAk1G,kBAAmB,WACjB,IAAIn+J,EAAQ+C,KAAK+6J,UAAU/6J,KAAKi+E,cAChCj+E,KAAKmM,MAAM,UAAWlP,EACxB,EACAo+J,qBAAsB,SAA8B58I,GAClD,IAAIhU,EAAQgU,EAAI+3C,cAAcpkC,aAAa,cACvCvuB,EAAO7D,KAAK+5J,UAAUzrI,SAAS7jB,EAAO,KAE1C,GAAI2pF,GAASvwF,IAAiC,mBAAjBA,EAAKm2J,QAAwB,CACxD,IAAIr7H,EAAO96B,EAAKm2J,QAAQh6J,MAEpB2+B,GACF3+B,KAAK+6J,UAAUp8H,EAEnB,CACF,EACA28H,UAAW,SAAmB78I,GACxBze,KAAKo6J,cAAgBp6J,KAAKP,WAC9BO,KAAKk6J,aAAc,EACnBl6J,KAAKmM,MAAM,OAAQsS,GACnBze,KAAKmM,MAAM,eAAe,GAC5B,EACAyuJ,WAAY,WACL56J,KAAKo6J,eACVp6J,KAAKk6J,aAAc,EACnBl6J,KAAKmM,MAAM,SACXnM,KAAKmM,MAAM,eAAe,GAC5B,EACAuuI,KAAM,WAEA16I,KAAK8L,MAAMg6C,OACb9lD,KAAK8L,MAAMg6C,MAAM40F,MAErB,EACAI,MAAO,WACD96I,KAAK8L,MAAMg6C,OACb9lD,KAAK8L,MAAMg6C,MAAMg1F,OAErB,EACAygB,kBAAmB,WACjB,IAAIvyI,EAAShpB,KAEb,GAAKA,KAAK0M,UAA+B,OAAnB1M,KAAKi6J,UAA3B,CACA,IAAInqJ,EAAO9P,KAAKi6J,UAAU7oI,OAG1B,GAFApxB,KAAKi6J,UAAY,KAEJ,KAATnqJ,EAAJ,CAKA,IAAI6uB,EAEJ,GAAI3+B,KAAKu6J,kBACP57H,EAAO7uB,EAAKrH,MAAMzI,KAAKq6J,qBAAqB7vJ,KAAI,SAAU2pB,GACxD,OAAOnL,EAAO0xG,UAAUvmG,EAAE/C,OAC5B,SACK,GAAIpxB,KAAK4zG,MAAO,CACrB,IAAIv1G,EAAMyR,EAAKrH,MAAMzI,KAAKq6J,qBAEP,IAAfh8J,EAAIK,SAGNL,EAAMyR,EAAKrH,MAAMzI,KAAKq6J,oBAAoBjpI,SAG5CuN,EAAOtgC,EAAImM,KAAI,SAAU2pB,GACvB,OAAOnL,EAAO0xG,UAAUvmG,EAAE/C,OAC5B,GACF,MACEuN,EAAO3+B,KAAK06H,UAAU5qH,GAGpB9P,KAAKg7J,2BAA2Br8H,IAClC3+B,KAAK+6J,UAAUp8H,GACf3+B,KAAK06I,QAEL16I,KAAKmM,MAAM,cAAe2D,EA5B5B,MAFE9P,KAAKkmD,OAL8C,CAqCvD,EACAs1G,iBAAkB,SAA0B/8I,GAE1Cze,KAAKi6J,UAA2B,iBAARx7I,EAAmBA,EAAMA,EAAIpB,OAAOpgB,KAC9D,EACAw+J,mBAAoB,SAA4Bh9I,GAC9C,IAAIiI,EAAUjI,EAAIiI,QAEF,IAAZA,EACF1mB,KAAK46J,aACgB,KAAZl0I,GACT1mB,KAAKu7J,mBAET,EACAG,gBAAiB,SAAyBj9I,GAExCze,KAAKmM,MAAM,OAAQsS,EACrB,EACAk9I,iBAAkB,SAA0Bl9I,GAC1Cze,KAAKs7J,UAAU78I,GACfze,KAAKmM,MAAM,QAASsS,EACtB,EACAm9I,QAAS,SAAiBr8J,GACxB,SAAUS,KAAKS,OAAOlB,KAASS,KAAKm0I,aAAa50I,GACnD,EACAs8J,WAAY,SAAoBt8J,EAAM+iH,EAAU9iH,GAC9C,IAAIs8J,EAAS97J,KAAKm0I,aAAa50I,GAE/B,OAAIu8J,EACKA,EAAOt8J,IAAU8iH,EAGnBtiH,KAAKS,OAAOlB,IAAS+iH,CAC9B,EACAy5C,YAAa,WACX,IAAI58J,EAAIa,KAAKk+I,eACTwK,EAAc1oJ,KAAK0oJ,YAEnBlpJ,EAAQqmJ,EAAe,CACzBtmJ,KAAM,OACNG,KAAM,OACN45I,aAAc,MACdr8I,MAAO+C,KAAK8P,KACZwuI,MAAOt+I,KAAKw5J,YAAc,GAAG73J,OAAO3B,KAAK0oJ,YAAa,UACtD9oJ,UAAWI,KAAK0M,SAChBjN,SAAUO,KAAKP,SACf0mC,YAAanmC,KAAKmmC,aACjBnmC,KAAKy5J,WAEJx8J,EAAQuC,EAAMvC,MACdmjH,EAAY5gH,EAAM8+I,MAClB/4E,EAAQugF,EAAyBtmJ,EAAO,CAAC,QAAS,UAElD+lH,EAAS,CACXs5B,QAAS7+I,KAAKy7J,mBACd3gB,MAAO96I,KAAK27J,iBACZjhB,KAAM16I,KAAK07J,gBACX51G,MAAO9lD,KAAKw7J,iBACZxlJ,OAAQhW,KAAKu7J,mBAEXz1G,EAAQ9lD,KAAK67J,WAAW,QAAS18J,EAAE,QAAS,CAC9C,SAAY,CACV,MAASlC,GAEX,MAASmjH,EACT,MAASylC,EAAe,CAAC,EAAGtgF,GAC5B,GAAMsgF,EAAe,CAAC,EAAGtgC,GACzB,IAAO,UACL,CACF/lH,MAAOA,EACP+lH,OAAQA,IAENy2C,EAA6B,SAAdh8J,KAAKN,KAAkBP,EAAEqtJ,IAAuBrtJ,EAAEotJ,IAErE,OAAOptJ,EAAE,MAAO,CACd,MAAS,GAAGwC,OAAO+mJ,EAAa,kBAChC,GAAM,CACJ,WAAc1oJ,KAAK0uJ,iBACnB,WAAc1uJ,KAAK4uJ,iBACnB,MAAS5uJ,KAAKs7J,WAEhB,IAAO,gBACN,CAACx1G,EAAO9lD,KAAK06J,cAAgBv7J,EAAE,IAAK,CACrC,MAAS,GAAGwC,OAAO+mJ,EAAa,eAChC,GAAM,CACJ,MAAS1oJ,KAAKm7J,cAEf,CAACn7J,KAAK67J,WAAW,aAAc18J,EAAEstJ,OAA0BttJ,EAAE,IAAK,CACnE,MAAS,GAAGwC,OAAO+mJ,EAAa,mBAC/B,CAAC1oJ,KAAK67J,WAAW,gBAAiBG,MACvC,EACAC,cAAe,WACb,IAAI98J,EAAIa,KAAKk+I,eACT1zI,EAAMxK,KAAK4zG,MAAQylD,GAAoBD,GACvC8C,EAAY1xJ,EAAIxK,KAAKN,OAAS8K,EAAI1M,QAElC0B,EAAQqmJ,EAAe,CAAC,EAAG71D,GAAKhwF,KAAKU,OAAQ5D,OAAO4L,KAAKwzJ,EAAU18J,QAAS,CAC9EvC,MAAO+C,KAAKi+E,eAGVxyD,EAAKo6H,EAAe,CAAC,EAAG71D,GAAKhwF,KAAK2H,WAAYu0J,EAAUljJ,OAAS,IAAK,CACxEsY,OAAQtxB,KAAKsxJ,mBAGX57G,EAAUv2C,EAAE+8J,EAAWpV,EAAO,CAAC,CAAC,EAAG,CACrCtnJ,MAAOA,EACPisB,GAAIA,EACJrf,IAAK,aAEP,OAAOjN,EAAE,MAAO,CACd,MAAS,GAAGwC,OAAO3B,KAAK0oJ,YAAa,qBACpC,CAAC1oJ,KAAK67J,WAAW,UAAWnmH,EAAS,CACtCz4C,MAAO+C,KAAKi+E,aACZk+E,KAAMn8J,KAAKsxJ,oBAEf,EACA8K,cAAe,WACb,IAAIzsI,EAAS3vB,KAETb,EAAIa,KAAKk+I,eACTwK,EAAc1oJ,KAAK0oJ,YACvB,OAAOvpJ,EAAE,MAAO,CACd,MAAS,GAAGwC,OAAO+mJ,EAAa,wBAC/B,CAAC1oJ,KAAK67J,WAAW,UAAW,KAAM,CACnC5+J,MAAO+C,KAAKi+E,aACZk+E,KAAMn8J,KAAKsxJ,mBACTtxJ,KAAK+5J,UAAUvvJ,KAAI,SAAU2pB,EAAG31B,GAClC,OAAOW,EAAE,SAAU,CACjB,IAAOX,EACP,MAAS,CACP,aAAcA,EACd,KAAQ,UAEV,MAAS,GAAGmD,OAAO+mJ,EAAa,SAAS/mJ,OAAO+mJ,EAAa,cAAc/mJ,OAAO+mJ,EAAa,iBAC/F,GAAM,CACJ,MAAS/4H,EAAO0rI,uBAEjB,CAAClnI,EAAErkB,MACR,KACF,EACAusJ,aAAc,WAEZ,OAAOl9J,EADCa,KAAKk+I,gBACJ,MAAO,CACd,MAAS,GAAGv8I,OAAO3B,KAAK0oJ,YAAa,uBACpC,CAAC1oJ,KAAK67J,WAAW,SAAU,KAAM,CAClC5+J,MAAO+C,KAAKi+E,aACZk+E,KAAMn8J,KAAKsxJ,oBAEf,EACAgL,aAAc,WACZ,IAAIn9J,EAAIa,KAAKk+I,eACTwK,EAAc1oJ,KAAK0oJ,YACvB,OAAOvpJ,EAAE,MAAO,CACd,MAAS,GAAGwC,OAAO+mJ,EAAa,uBAC/B,CAAC1oJ,KAAK67J,WAAW,SAAU,KAAM,CAClC5+J,MAAO+C,KAAKi+E,aACZk+E,KAAMn8J,KAAKsxJ,mBACTtxJ,KAAK45J,QAAUz6J,EAAE,SAAU,CAC7B,MAAS,CACP,KAAQ,UAEV,MAAS,GAAGwC,OAAO+mJ,EAAa,SAAS/mJ,OAAO+mJ,EAAa,2BAC7D,GAAM,CACJ,MAAS1oJ,KAAKo7J,oBAEf,CAACp7J,KAAK65J,cAAgB,MAC3B,GAEFh6J,OAAQ,WACN,IAAI0hE,EAEApiE,EAAIyF,UAAU,GACd8jJ,EAAc1oJ,KAAK0oJ,YACnB1kF,EAAShkE,KAAKgkE,OACdvkE,EAAWO,KAAKP,SAChB88J,EAAUv8J,KAAK47J,QAAQ,YAAc57J,KAAK+5J,UAAUr7J,OAASsB,KAAKo8J,gBAAkB,KACpF1mH,EAAUv2C,EAAE,MAAO,CACrB,MAAS,GAAGwC,OAAO+mJ,EAAa,wBAC/B,CAAC1oJ,KAAK47J,QAAQ,UAAY57J,KAAKq8J,eAAiB,KAAMr8J,KAAKi8J,gBAAiBj8J,KAAK47J,QAAQ,WAAa57J,KAAK45J,QAAU55J,KAAKs8J,eAAiB,OAC9I,OAAOn9J,EAAE,MAAO,CACd,OAAUoiE,EAAS,CAAC,EAAG,EAAgBA,EAAQ,GAAG5/D,OAAO+mJ,EAAa,gBAAgB,GAAO,EAAgBnnF,EAAQ,GAAG5/D,OAAO+mJ,EAAa,qBAAsB1oJ,KAAK4zG,OAAQ,EAAgBryC,EAAQ,GAAG5/D,OAAO+mJ,EAAa,sBAAuB1kF,GAAS,EAAgBzC,EAAQ,WAAY9hE,GAAW8hE,IAC5S,CAAEyC,EAA8B,KAArBhkE,KAAK+7J,cAAuB/3F,EAWjB7kE,EAAE,MAAO,CAChC,MAAS,GAAGwC,OAAO+mJ,EAAa,qBAC/B,CAAC6T,EAAS7mH,IAbsCv2C,EAAEktJ,GAAmB,CACtE,IAAO,QACP,MAASrsJ,KAAK05J,WACd,MAAS15J,KAAK25J,WACd,MAAS,CACP,QAAW35J,KAAKo6J,aAChB,aAAgBp6J,KAAK2oJ,cAEvB,GAAM,CACJ,aAAgB3oJ,KAAK26J,qBAEtB,CAAC4B,EAAS7mH,KAGf,GAGFnZ,GAAWmlF,OAAS,GAEpBnlF,GAAW64F,QAAU,SAAiBt4G,GACpCA,EAAIlV,UAAU20B,GAAWh9B,KAAMg9B,GACjC,EAEsB,oBAAXte,QAA0BA,OAAOnB,KAC1Cyf,GAAW64F,QAAQn3G,OAAOnB,KAG5B8oI,EAASrpH,GAAY,CACnBwzH,cAAeA,GACfiC,cAAeA,GACfwK,UAAWzF,GACXkB,UAAWA,GACXO,cAAeA,GACfU,cAAeA,KAGjB,kCC/+HoEnqG,EAAO/xD,QAAgI,WAAY,aAAa,IAAI8sE,EAAEhtE,OAAO61I,OAAO,CAAC,GAAGnuI,EAAElG,MAAMC,QAAQ,SAASmlB,EAAEomD,GAAG,OAAO,MAAMA,CAAC,CAAC,SAASxoC,EAAEwoC,GAAG,OAAO,MAAMA,CAAC,CAAC,SAASjJ,EAAEiJ,GAAG,OAAM,IAAKA,CAAC,CAAC,SAAStrE,EAAEsrE,GAAG,MAAM,iBAAiBA,GAAG,iBAAiBA,GAAG,iBAAiBA,GAAG,kBAAkBA,CAAC,CAAC,SAAS7+D,EAAE6+D,GAAG,MAAM,mBAAmBA,CAAC,CAAC,SAASrmD,EAAEqmD,GAAG,OAAO,OAAOA,GAAG,iBAAiBA,CAAC,CAAC,IAAInqC,EAAE7iC,OAAOqB,UAAU0wC,SAAS,SAAS4sB,EAAEqO,GAAG,MAAM,oBAAoBnqC,EAAE3gC,KAAK8qE,EAAE,CAAC,SAAS9R,EAAE8R,GAAG,IAAItlE,EAAE6lF,WAAWv/E,OAAOg/D,IAAI,OAAOtlE,GAAG,GAAGo/B,KAAK64C,MAAMj4E,KAAKA,GAAG6tF,SAASvoB,EAAE,CAAC,SAASlmD,EAAEkmD,GAAG,OAAOxoC,EAAEwoC,IAAI,mBAAmBA,EAAEhkD,MAAM,mBAAmBgkD,EAAE2yF,KAAK,CAAC,SAASh8H,EAAEqpC,GAAG,OAAO,MAAMA,EAAE,GAAGxrE,MAAMC,QAAQurE,IAAIrO,EAAEqO,IAAIA,EAAEj7B,WAAWlP,EAAEp9B,KAAKC,UAAUsnE,EAAEo7D,EAAE,GAAGp6H,OAAOg/D,EAAE,CAAC,SAASo7D,EAAEp7D,EAAEtlE,GAAG,OAAOA,GAAGA,EAAEk4J,UAAUl4J,EAAEvH,MAAMuH,CAAC,CAAC,SAAS2vB,EAAE21C,GAAG,IAAItlE,EAAE6lF,WAAWvgB,GAAG,OAAO6vC,MAAMn1G,GAAGslE,EAAEtlE,CAAC,CAAC,SAASrF,EAAE2qE,EAAEtlE,GAAG,IAAI,IAAIkf,EAAE5mB,OAAOo0F,OAAO,MAAM5vD,EAAEwoC,EAAErhE,MAAM,KAAKo4D,EAAE,EAAEA,EAAEv/B,EAAE5iC,OAAOmiE,IAAIn9C,EAAE4d,EAAEu/B,KAAI,EAAG,OAAOr8D,EAAE,SAASslE,GAAG,OAAOpmD,EAAEomD,EAAE/nE,cAAc,EAAE,SAAS+nE,GAAG,OAAOpmD,EAAEomD,EAAE,CAAC,CAAC,IAAIlU,EAAEz2D,EAAE,kBAAiB,GAAIqrF,EAAErrF,EAAE,8BAA8B,SAASumC,EAAEokC,EAAEtlE,GAAG,IAAIkf,EAAEomD,EAAEprE,OAAO,GAAGglB,EAAE,CAAC,GAAGlf,IAAIslE,EAAEpmD,EAAE,GAAG,YAAYomD,EAAEprE,OAAOglB,EAAE,GAAG,IAAI4d,EAAEwoC,EAAE/oE,QAAQyD,GAAG,GAAG88B,GAAG,EAAE,OAAOwoC,EAAEpkD,OAAO4b,EAAE,EAAE,CAAC,CAAC,IAAIsuD,EAAE9yF,OAAOqB,UAAUY,eAAe,SAASilC,EAAE8lC,EAAEtlE,GAAG,OAAOorF,EAAE5wF,KAAK8qE,EAAEtlE,EAAE,CAAC,SAASmb,EAAEmqD,GAAG,IAAItlE,EAAE1H,OAAOo0F,OAAO,MAAM,OAAO,SAASxtE,GAAG,OAAOlf,EAAEkf,KAAKlf,EAAEkf,GAAGomD,EAAEpmD,GAAG,CAAC,CAAC,IAAIo6D,EAAE,SAASh6D,EAAEnE,GAAE,SAAUmqD,GAAG,OAAOA,EAAE/gE,QAAQ+0E,GAAE,SAAUhU,EAAEtlE,GAAG,OAAOA,EAAEA,EAAEmG,cAAc,EAAG,GAAG,IAAG+tI,EAAE/4H,GAAE,SAAUmqD,GAAG,OAAOA,EAAEp/D,OAAO,GAAGC,cAAcm/D,EAAEl/D,MAAM,EAAG,IAAGwwD,EAAE,aAAauoE,EAAEhkH,GAAE,SAAUmqD,GAAG,OAAOA,EAAE/gE,QAAQqyD,EAAE,OAAOr5D,aAAc,IAAOqiI,EAAEpiI,SAAS7D,UAAU8N,KAAK,SAAS69D,EAAEtlE,GAAG,OAAOslE,EAAE79D,KAAKzH,EAAE,EAAE,SAASslE,EAAEtlE,GAAG,SAASkf,EAAEA,GAAG,IAAI4d,EAAE18B,UAAUlG,OAAO,OAAO4iC,EAAEA,EAAE,EAAEwoC,EAAEnlE,MAAMH,EAAEI,WAAWklE,EAAE9qE,KAAKwF,EAAEkf,GAAGomD,EAAE9qE,KAAKwF,EAAE,CAAC,OAAOkf,EAAEi5I,QAAQ7yF,EAAEprE,OAAOglB,CAAC,EAAE,SAAS8gH,EAAE16D,EAAEtlE,GAAGA,EAAEA,GAAG,EAAE,IAAI,IAAIkf,EAAEomD,EAAEprE,OAAO8F,EAAE88B,EAAE,IAAIhjC,MAAMolB,GAAGA,KAAK4d,EAAE5d,GAAGomD,EAAEpmD,EAAElf,GAAG,OAAO88B,CAAC,CAAC,SAASm3G,EAAE3uE,EAAEtlE,GAAG,IAAI,IAAIkf,KAAKlf,EAAEslE,EAAEpmD,GAAGlf,EAAEkf,GAAG,OAAOomD,CAAC,CAAC,SAAS3O,EAAE2O,GAAG,IAAI,IAAItlE,EAAE,CAAC,EAAEkf,EAAE,EAAEA,EAAEomD,EAAEprE,OAAOglB,IAAIomD,EAAEpmD,IAAI+0H,EAAEj0I,EAAEslE,EAAEpmD,IAAI,OAAOlf,CAAC,CAAC,SAASy+H,EAAEn5D,EAAEtlE,EAAEkf,GAAG,CAAC,IAAIu5H,EAAE,SAASnzE,EAAEtlE,EAAEkf,GAAG,OAAM,CAAE,EAAEyhH,EAAE,SAASr7D,GAAG,OAAOA,CAAC,EAAE,SAASg5D,EAAEh5D,EAAEtlE,GAAG,GAAGslE,IAAItlE,EAAE,OAAM,EAAG,IAAIkf,EAAED,EAAEqmD,GAAGxoC,EAAE7d,EAAEjf,GAAG,IAAIkf,IAAI4d,EAAE,OAAO5d,IAAI4d,GAAGx2B,OAAOg/D,KAAKh/D,OAAOtG,GAAG,IAAI,IAAIq8D,EAAEviE,MAAMC,QAAQurE,GAAGtrE,EAAEF,MAAMC,QAAQiG,GAAG,GAAGq8D,GAAGriE,EAAE,OAAOsrE,EAAEprE,SAAS8F,EAAE9F,QAAQorE,EAAEhwB,OAAM,SAAUgwB,EAAEpmD,GAAG,OAAOo/G,EAAEh5D,EAAEtlE,EAAEkf,GAAI,IAAG,GAAGomD,aAAatuD,MAAMhX,aAAagX,KAAK,OAAOsuD,EAAEstD,YAAY5yH,EAAE4yH,UAAU,GAAGv2D,GAAGriE,EAAE,OAAM,EAAG,IAAIyM,EAAEnO,OAAO4L,KAAKohE,GAAGnqC,EAAE7iC,OAAO4L,KAAKlE,GAAG,OAAOyG,EAAEvM,SAASihC,EAAEjhC,QAAQuM,EAAE6uC,OAAM,SAAUp2B,GAAG,OAAOo/G,EAAEh5D,EAAEpmD,GAAGlf,EAAEkf,GAAI,GAAE,CAAC,MAAMomD,GAAG,OAAM,CAAE,CAAC,CAAC,SAAS24D,EAAE34D,EAAEtlE,GAAG,IAAI,IAAIkf,EAAE,EAAEA,EAAEomD,EAAEprE,OAAOglB,IAAI,GAAGo/G,EAAEh5D,EAAEpmD,GAAGlf,GAAG,OAAOkf,EAAE,OAAO,CAAC,CAAC,SAASi/G,EAAE74D,GAAG,IAAItlE,GAAE,EAAG,OAAO,WAAWA,IAAIA,GAAE,EAAGslE,EAAEnlE,MAAM3E,KAAK4E,WAAW,CAAC,CAAC,SAAS89H,EAAE54D,EAAEtlE,GAAG,OAAOslE,IAAItlE,EAAE,IAAIslE,GAAG,EAAEA,GAAG,EAAEtlE,EAAEslE,GAAGA,GAAGtlE,GAAGA,CAAC,CAAC,IAAI89H,EAAE,uBAAuB2U,EAAE,CAAC,YAAY,YAAY,UAAU1T,EAAE,CAAC,eAAe,UAAU,cAAc,UAAU,eAAe,UAAU,gBAAgB,YAAY,YAAY,cAAc,gBAAgB,iBAAiB,gBAAgB,mBAAmBD,EAAE,CAACs5B,sBAAsB9/J,OAAOo0F,OAAO,MAAMniB,QAAO,EAAG8tF,eAAc,EAAGC,UAAS,EAAGC,aAAY,EAAGC,aAAa,KAAKC,YAAY,KAAKC,gBAAgB,GAAGC,SAASrgK,OAAOo0F,OAAO,MAAMksE,cAAcngB,EAAEogB,eAAepgB,EAAEqgB,iBAAiBrgB,EAAEsgB,gBAAgBt6B,EAAEu6B,qBAAqBr4B,EAAEs4B,YAAYxgB,EAAEygB,OAAM,EAAGC,gBAAgBp6B,GAAG6T,EAAE,8JAA8J,SAAS9S,EAAEx6D,GAAG,IAAItlE,GAAGslE,EAAE,IAAIjS,WAAW,GAAG,OAAO,KAAKrzD,GAAG,KAAKA,CAAC,CAAC,SAASm0I,EAAE7uE,EAAEtlE,EAAEkf,EAAE4d,GAAGxkC,OAAOC,eAAe+sE,EAAEtlE,EAAE,CAACvH,MAAMymB,EAAEnG,aAAa+jB,EAAE7jB,UAAS,EAAGD,cAAa,GAAI,CAAC,IAAIgmH,EAAE,IAAIltG,OAAO,KAAK30B,OAAOy1I,EAAEviH,OAAO,YAAgBuoH,EAAE,aAAa,CAAC,EAAE/+D,EAAE,oBAAoBpgE,OAAOi5H,EAAE74D,GAAGpgE,OAAO2hI,UAAUC,UAAU99I,cAAcs7I,EAAEnG,GAAG,eAAer4H,KAAKq4H,GAAGnV,EAAEmV,GAAGA,EAAEn2I,QAAQ,YAAY,EAAEgjI,EAAEmT,GAAGA,EAAEn2I,QAAQ,SAAS,EAAEm2I,GAAGA,EAAEn2I,QAAQ,WAAW,IAAIohI,EAAE+U,GAAG,uBAAuBr4H,KAAKq4H,GAAGA,GAAG,cAAcr4H,KAAKq4H,GAAGA,GAAG,YAAYr4H,KAAKq4H,GAAG,IAAI3U,GAAE+a,GAAGpG,GAAGA,EAAEx8E,MAAM,kBAAkB6iF,GAAG,CAAC,EAAE76I,MAAM86I,IAAG,EAAG,GAAGn/D,EAAE,IAAI,IAAIo/D,GAAG,CAAC,EAAE3gJ,OAAOC,eAAe0gJ,GAAG,UAAU,CAACvpH,IAAI,WAAWspH,IAAG,CAAE,IAAIv/H,OAAOisG,iBAAiB,eAAe,KAAKuzB,GAAG,CAAC,MAAM3zE,GAAG,CAAC,IAAI4zE,GAAG,WAAW,YAAO,IAASnb,KAAIA,IAAGlkD,QAAG,IAAoB,EAAAmM,GAAS,EAAAA,EAAOpe,SAAS,WAAW,EAAAoe,EAAOpe,QAAQxH,IAAIg5F,SAAUr7B,EAAC,EAAE2I,GAAG7sD,GAAGpgE,OAAO4/I,6BAA6B,SAAS52F,GAAG6C,GAAG,MAAM,mBAAmBA,GAAG,cAAcjrD,KAAKirD,EAAEj7B,WAAW,CAAC,IAAIivH,GAAGC,GAAG,oBAAoB//J,QAAQipE,GAAGjpE,SAAS,oBAAoBggK,SAAS/2F,GAAG+2F,QAAQrb,SAASmb,GAAG,oBAAoBhwH,KAAKm5B,GAAGn5B,KAAKA,IAAI,WAAW,SAASg8B,IAAI9pE,KAAKg+B,IAAIlhC,OAAOo0F,OAAO,KAAK,CAAC,OAAOpnB,EAAE3rE,UAAUu0C,IAAI,SAASo3B,GAAG,OAAM,IAAK9pE,KAAKg+B,IAAI8rC,EAAE,EAAEA,EAAE3rE,UAAUqqB,IAAI,SAASshD,GAAG9pE,KAAKg+B,IAAI8rC,IAAG,CAAE,EAAEA,EAAE3rE,UAAU+nD,MAAM,WAAWlmD,KAAKg+B,IAAIlhC,OAAOo0F,OAAO,KAAK,EAAEpnB,CAAC,CAAxN,GAA4N,IAAIm0F,GAAG,KAAK,SAAS1pG,GAAGuV,QAAG,IAASA,IAAIA,EAAE,MAAMA,GAAGm0F,IAAIA,GAAGC,OAAOpoI,MAAMmoI,GAAGn0F,EAAEA,GAAGA,EAAEo0F,OAAOzyI,IAAI,CAAC,IAAI0yI,GAAG,WAAW,SAASr0F,EAAEA,EAAEtlE,EAAEkf,EAAE4d,EAAEu/B,EAAEriE,EAAEyM,EAAEwY,GAAGzjB,KAAKuG,IAAIujE,EAAE9pE,KAAKiF,KAAKT,EAAExE,KAAK81C,SAASpyB,EAAE1jB,KAAK8P,KAAKwxB,EAAEthC,KAAKgpH,IAAInoD,EAAE7gE,KAAKo+J,QAAG,EAAOp+J,KAAKqpB,QAAQ7qB,EAAEwB,KAAKq+J,eAAU,EAAOr+J,KAAKs+J,eAAU,EAAOt+J,KAAKu+J,eAAU,EAAOv+J,KAAKlB,IAAI0F,GAAGA,EAAE1F,IAAIkB,KAAK8J,iBAAiBmB,EAAEjL,KAAKyG,uBAAkB,EAAOzG,KAAK4L,YAAO,EAAO5L,KAAKw7E,KAAI,EAAGx7E,KAAKw+J,UAAS,EAAGx+J,KAAKy+J,cAAa,EAAGz+J,KAAK0+J,WAAU,EAAG1+J,KAAK2+J,UAAS,EAAG3+J,KAAK4+J,QAAO,EAAG5+J,KAAK6+J,aAAap7I,EAAEzjB,KAAK8+J,eAAU,EAAO9+J,KAAK++J,oBAAmB,CAAE,CAAC,OAAOjiK,OAAOC,eAAe+sE,EAAE3rE,UAAU,QAAQ,CAAC+1B,IAAI,WAAW,OAAOl0B,KAAKyG,iBAAiB,EAAE8W,YAAW,EAAGC,cAAa,IAAKssD,CAAC,CAA1kB,GAA8kBk1F,GAAG,SAASl1F,QAAG,IAASA,IAAIA,EAAE,IAAI,IAAItlE,EAAE,IAAI25J,GAAG,OAAO35J,EAAEsL,KAAKg6D,EAAEtlE,EAAEk6J,WAAU,EAAGl6J,CAAC,EAAE,SAAS8mI,GAAGxhE,GAAG,OAAO,IAAIq0F,QAAG,OAAO,OAAO,EAAOrzJ,OAAOg/D,GAAG,CAAC,SAASm1F,GAAGn1F,GAAG,IAAItlE,EAAE,IAAI25J,GAAGr0F,EAAEvjE,IAAIujE,EAAE7kE,KAAK6kE,EAAEh0B,UAAUg0B,EAAEh0B,SAASlrC,QAAQk/D,EAAEh6D,KAAKg6D,EAAEk/C,IAAIl/C,EAAEzgD,QAAQygD,EAAEhgE,iBAAiBggE,EAAE+0F,cAAc,OAAOr6J,EAAE45J,GAAGt0F,EAAEs0F,GAAG55J,EAAEg6J,SAAS10F,EAAE00F,SAASh6J,EAAE1F,IAAIgrE,EAAEhrE,IAAI0F,EAAEk6J,UAAU50F,EAAE40F,UAAUl6J,EAAE65J,UAAUv0F,EAAEu0F,UAAU75J,EAAE85J,UAAUx0F,EAAEw0F,UAAU95J,EAAE+5J,UAAUz0F,EAAEy0F,UAAU/5J,EAAEs6J,UAAUh1F,EAAEg1F,UAAUt6J,EAAEm6J,UAAS,EAAGn6J,CAAC,CAAC,mBAAmB06J,iBAAiBA,gBAAgB,IAAIC,GAAG,EAAEC,GAAG,GAAG/qG,GAAG,WAAW,IAAI,IAAIyV,EAAE,EAAEA,EAAEs1F,GAAG1gK,OAAOorE,IAAI,CAAC,IAAItlE,EAAE46J,GAAGt1F,GAAGtlE,EAAE66J,KAAK76J,EAAE66J,KAAKr7J,QAAO,SAAU8lE,GAAG,OAAOA,CAAE,IAAGtlE,EAAE86J,UAAS,CAAE,CAACF,GAAG1gK,OAAO,CAAC,EAAE6gK,GAAG,WAAW,SAASz1F,IAAI9pE,KAAKs/J,UAAS,EAAGt/J,KAAK2kB,GAAGw6I,KAAKn/J,KAAKq/J,KAAK,EAAE,CAAC,OAAOv1F,EAAE3rE,UAAUqhK,OAAO,SAAS11F,GAAG9pE,KAAKq/J,KAAK95J,KAAKukE,EAAE,EAAEA,EAAE3rE,UAAUshK,UAAU,SAAS31F,GAAG9pE,KAAKq/J,KAAKr/J,KAAKq/J,KAAKt+J,QAAQ+oE,IAAI,KAAK9pE,KAAKs/J,WAAWt/J,KAAKs/J,UAAS,EAAGF,GAAG75J,KAAKvF,MAAM,EAAE8pE,EAAE3rE,UAAUuhK,OAAO,SAASl7J,GAAGslE,EAAEzsD,QAAQysD,EAAEzsD,OAAOsiJ,OAAO3/J,KAAK,EAAE8pE,EAAE3rE,UAAUyhK,OAAO,SAAS91F,GAAG,IAAI,IAAItlE,EAAExE,KAAKq/J,KAAKr7J,QAAO,SAAU8lE,GAAG,OAAOA,CAAE,IAAGpmD,EAAE,EAAE4d,EAAE98B,EAAE9F,OAAOglB,EAAE4d,EAAE5d,IAAKlf,EAAEkf,GAAGm0F,QAAS,EAAE/tC,CAAC,CAAhb,GAAoby1F,GAAGliJ,OAAO,KAAK,IAAI27H,GAAG,GAAG,SAAS6mB,GAAG/1F,GAAGkvE,GAAGzzI,KAAKukE,GAAGy1F,GAAGliJ,OAAOysD,CAAC,CAAC,SAASg2F,KAAK9mB,GAAG7vI,MAAMo2J,GAAGliJ,OAAO27H,GAAGA,GAAGt6I,OAAO,EAAE,CAAC,IAAIqhK,GAAGzhK,MAAMH,UAAU6hK,GAAGljK,OAAOo0F,OAAO6uE,IAAI,CAAC,OAAO,MAAM,QAAQ,UAAU,SAAS,OAAO,WAAWn8J,SAAQ,SAAUkmE,GAAG,IAAItlE,EAAEu7J,GAAGj2F,GAAG6uE,EAAEqnB,GAAGl2F,GAAE,WAAY,IAAI,IAAIpmD,EAAE,GAAG4d,EAAE,EAAEA,EAAE18B,UAAUlG,OAAO4iC,IAAI5d,EAAE4d,GAAG18B,UAAU08B,GAAG,IAAIu/B,EAAEriE,EAAEgG,EAAEG,MAAM3E,KAAK0jB,GAAGzY,EAAEjL,KAAKigK,OAAO,OAAOn2F,GAAG,IAAI,OAAO,IAAI,UAAUjJ,EAAEn9C,EAAE,MAAM,IAAI,SAASm9C,EAAEn9C,EAAE9Y,MAAM,GAAG,OAAOi2D,GAAG51D,EAAEi1J,aAAar/F,GAAG51D,EAAEk1J,IAAIP,SAASphK,CAAE,GAAG,IAAG,IAAI4hK,GAAGtjK,OAAOi8I,oBAAoBinB,IAAIK,GAAG,CAAC,EAAEC,IAAG,EAAG,SAASC,GAAGz2F,GAAGw2F,GAAGx2F,CAAC,CAAC,IAAI02F,GAAG,CAACZ,OAAO38B,EAAEy8B,OAAOz8B,EAAEu8B,OAAOv8B,EAAEw8B,UAAUx8B,GAAGw9B,GAAG,WAAW,SAAS32F,EAAEA,EAAEpmD,EAAE4d,GAAG,QAAG,IAAS5d,IAAIA,GAAE,QAAI,IAAS4d,IAAIA,GAAE,GAAIthC,KAAK/C,MAAM6sE,EAAE9pE,KAAK0gK,QAAQh9I,EAAE1jB,KAAK2gK,KAAKr/H,EAAEthC,KAAKmgK,IAAI7+H,EAAEk/H,GAAG,IAAIjB,GAAGv/J,KAAK4gK,QAAQ,EAAEjoB,EAAE7uE,EAAE,SAAS9pE,MAAMwE,EAAEslE,GAAG,CAAC,IAAIxoC,EAAE,GAAG87G,EAAEtzE,EAAE+2F,UAAUb,QAAQ,IAAI,IAAIn/F,EAAE,EAAEriE,EAAE4hK,GAAG1hK,OAAOmiE,EAAEriE,EAAEqiE,IAAK83E,EAAE7uE,EAAErmD,EAAE28I,GAAGv/F,GAAGm/F,GAAGv8I,IAAIC,GAAG1jB,KAAKkgK,aAAap2F,EAAE,KAAK,CAAC,IAAI7+D,EAAEnO,OAAO4L,KAAKohE,GAAG,IAAIjJ,EAAE,EAAEA,EAAE51D,EAAEvM,OAAOmiE,IAAI,CAAC,IAAIp9C,EAAEq9I,GAAGh3F,EAAErmD,EAAExY,EAAE41D,GAAGw/F,QAAG,EAAO38I,EAAE4d,EAAE,CAAC,CAAC,CAAC,OAAOwoC,EAAE3rE,UAAU+hK,aAAa,SAASp2F,GAAG,IAAI,IAAItlE,EAAE,EAAEkf,EAAEomD,EAAEprE,OAAO8F,EAAEkf,EAAElf,IAAIu8J,GAAGj3F,EAAEtlE,IAAG,EAAGxE,KAAK2gK,KAAK,EAAE72F,CAAC,CAA9c,GAAkd,SAASi3F,GAAGj3F,EAAEpmD,EAAE4d,GAAG,OAAOwoC,GAAG9lC,EAAE8lC,EAAE,WAAWA,EAAEm2F,kBAAkBQ,GAAG32F,EAAEm2F,QAAQK,KAAKh/H,GAAGo8G,OAAOl5I,EAAEslE,KAAKrO,EAAEqO,KAAKhtE,OAAOw/I,aAAaxyE,IAAIA,EAAEk3F,UAAUC,GAAGn3F,IAAIA,aAAaq0F,QAAG,EAAO,IAAIsC,GAAG32F,EAAEpmD,EAAE4d,EAAE,CAAC,SAASw/H,GAAGh3F,EAAEpmD,EAAE4d,EAAEu/B,EAAEriE,EAAEyM,EAAEwY,QAAG,IAASA,IAAIA,GAAE,GAAI,IAAIkc,EAAE,IAAI4/H,GAAG9jG,EAAE3+D,OAAO+/I,yBAAyB/yE,EAAEpmD,GAAG,IAAI+3C,IAAG,IAAKA,EAAEj+C,aAAa,CAAC,IAAIw6C,EAAEyD,GAAGA,EAAEvnC,IAAItQ,EAAE63C,GAAGA,EAAEz9B,IAAIg6B,IAAIp0C,GAAG0d,IAAI++H,IAAI,IAAIz7J,UAAUlG,SAAS4iC,EAAEwoC,EAAEpmD,IAAI,IAAI+c,EAAEjiC,EAAE8iC,GAAGA,EAAE2+H,OAAOc,GAAGz/H,GAAE,EAAGr2B,GAAG,OAAOnO,OAAOC,eAAe+sE,EAAEpmD,EAAE,CAACnG,YAAW,EAAGC,cAAa,EAAG0W,IAAI,WAAW,IAAIxQ,EAAEs0C,EAAEA,EAAEh5D,KAAK8qE,GAAGxoC,EAAE,OAAOi+H,GAAGliJ,SAASsiB,EAAE+/H,SAASj/H,IAAIA,EAAE0/H,IAAIT,SAASl7J,EAAEkf,IAAIw9I,GAAGx9I,KAAKu9I,GAAGv9I,KAAKllB,EAAEklB,EAAEzmB,MAAMymB,CAAC,EAAEsa,IAAI,SAASx5B,GAAG,IAAIkf,EAAEs0C,EAAEA,EAAEh5D,KAAK8qE,GAAGxoC,EAAE,GAAGohG,EAAEh/G,EAAElf,GAAG,CAAC,GAAGof,EAAEA,EAAE5kB,KAAK8qE,EAAEtlE,OAAO,CAAC,GAAGwzD,EAAE,OAAO,IAAIx5D,GAAGyiK,GAAGv9I,KAAKu9I,GAAGz8J,GAAG,YAAYkf,EAAEzmB,MAAMuH,GAAG88B,EAAE98B,CAAC,CAACi8B,EAAEjiC,EAAEgG,GAAGA,EAAEy7J,OAAOc,GAAGv8J,GAAE,EAAGyG,GAAG00B,EAAEigI,QAAQ,CAAC,IAAIjgI,CAAC,CAAC,CAAC,SAASwhI,GAAGr3F,EAAEpmD,EAAE4d,GAAG,IAAI8/H,GAAGt3F,GAAG,CAAC,IAAIjJ,EAAEiJ,EAAEm2F,OAAO,OAAOz7J,EAAEslE,IAAI9R,EAAEt0C,IAAIomD,EAAEprE,OAAOklC,KAAKC,IAAIimC,EAAEprE,OAAOglB,GAAGomD,EAAEpkD,OAAOhC,EAAE,EAAE4d,GAAGu/B,IAAIA,EAAE6/F,SAAS7/F,EAAE8/F,MAAMI,GAAGz/H,GAAE,GAAG,GAAIA,GAAG5d,KAAKomD,KAAKpmD,KAAK5mB,OAAOqB,YAAY2rE,EAAEpmD,GAAG4d,EAAEA,GAAGwoC,EAAEu3F,QAAQxgG,GAAGA,EAAE+/F,QAAQt/H,EAAEu/B,GAAGigG,GAAGjgG,EAAE5jE,MAAMymB,EAAE4d,OAAE,EAAOu/B,EAAE6/F,QAAQ7/F,EAAE8/F,MAAM9/F,EAAEs/F,IAAIP,SAASt+H,IAAIwoC,EAAEpmD,GAAG4d,EAAEA,EAAE,CAAC,CAAC,SAASggI,GAAGx3F,EAAEpmD,GAAG,GAAGlf,EAAEslE,IAAI9R,EAAEt0C,GAAGomD,EAAEpkD,OAAOhC,EAAE,OAAO,CAAC,IAAI4d,EAAEwoC,EAAEm2F,OAAOn2F,EAAEu3F,QAAQ//H,GAAGA,EAAEs/H,SAASQ,GAAGt3F,IAAI9lC,EAAE8lC,EAAEpmD,YAAYomD,EAAEpmD,GAAG4d,GAAGA,EAAE6+H,IAAIP,SAAS,CAAC,CAAC,SAASsB,GAAGp3F,GAAG,IAAI,IAAIpmD,OAAE,EAAO4d,EAAE,EAAEu/B,EAAEiJ,EAAEprE,OAAO4iC,EAAEu/B,EAAEv/B,KAAK5d,EAAEomD,EAAExoC,KAAK5d,EAAEu8I,QAAQv8I,EAAEu8I,OAAOE,IAAIT,SAASl7J,EAAEkf,IAAIw9I,GAAGx9I,EAAE,CAAC,SAAS69I,GAAGz3F,GAAG,OAAO03F,GAAG13F,GAAE,GAAI6uE,EAAE7uE,EAAE,iBAAgB,GAAIA,CAAC,CAAC,SAAS03F,GAAG13F,EAAEtlE,GAAG48J,GAAGt3F,IAAIi3F,GAAGj3F,EAAEtlE,EAAEk5I,KAAK,CAAC,SAAS+jB,GAAG33F,GAAG,OAAOs3F,GAAGt3F,GAAG23F,GAAG33F,EAAE43F,YAAY53F,IAAIA,EAAEm2F,OAAO,CAAC,SAAS0B,GAAG73F,GAAG,SAASA,IAAIA,EAAE83F,cAAc,CAAC,SAASR,GAAGt3F,GAAG,SAASA,IAAIA,EAAE+3F,eAAe,CAAC,IAAIC,GAAG,YAAY,SAASb,GAAGn3F,GAAG,SAASA,IAAG,IAAKA,EAAE4yF,UAAU,CAAC,SAASqF,GAAGj4F,EAAEtlE,GAAG,GAAGy8J,GAAGn3F,GAAG,OAAOA,EAAE,IAAIpmD,EAAE,CAAC,EAAE,OAAOi1H,EAAEj1H,EAAEo+I,IAAG,GAAInpB,EAAEj1H,EAAE,gBAAgBlf,GAAGm0I,EAAEj1H,EAAE,MAAMo9I,GAAGp9I,EAAE,QAAQomD,EAAE,KAAKtlE,EAAEk5I,OAAOh6H,CAAC,CAAC,SAASs+I,GAAGl4F,EAAEtlE,EAAEkf,GAAG5mB,OAAOC,eAAe+sE,EAAEpmD,EAAE,CAACnG,YAAW,EAAGC,cAAa,EAAG0W,IAAI,WAAW,IAAI41C,EAAEtlE,EAAEkf,GAAG,GAAGu9I,GAAGn3F,GAAG,OAAOA,EAAE7sE,MAAM,IAAIqkC,EAAEwoC,GAAGA,EAAEm2F,OAAO,OAAO3+H,GAAGA,EAAE6+H,IAAIT,SAAS51F,CAAC,EAAE9rC,IAAI,SAAS8rC,GAAG,IAAIxoC,EAAE98B,EAAEkf,GAAGu9I,GAAG3/H,KAAK2/H,GAAGn3F,GAAGxoC,EAAErkC,MAAM6sE,EAAEtlE,EAAEkf,GAAGomD,CAAC,GAAG,CAAC,SAASm4F,GAAGn4F,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAEwoC,EAAEtlE,GAAG,GAAGy8J,GAAG3/H,GAAG,OAAOA,EAAE,IAAIu/B,EAAE,CAAC,SAAI5jE,GAAQ,IAAIqkC,EAAEwoC,EAAEtlE,GAAG,YAAO,IAAS88B,EAAE5d,EAAE4d,CAAC,EAAE,SAAIrkC,CAAMymB,GAAGomD,EAAEtlE,GAAGkf,CAAC,GAAG,OAAOi1H,EAAE93E,EAAEihG,IAAG,GAAIjhG,CAAC,CAAC,IAAIqhG,GAAG,oBAAoBC,GAAG,2BAA2B,SAASC,GAAGt4F,GAAG,OAAOu4F,GAAGv4F,GAAE,EAAG,CAAC,SAASu4F,GAAGv4F,EAAEtlE,GAAG,IAAIi3D,EAAEqO,GAAG,OAAOA,EAAE,GAAGs3F,GAAGt3F,GAAG,OAAOA,EAAE,IAAIpmD,EAAElf,EAAE29J,GAAGD,GAAG5gI,EAAEwoC,EAAEpmD,GAAG,GAAG4d,EAAE,OAAOA,EAAE,IAAIu/B,EAAE/jE,OAAOo0F,OAAOp0F,OAAOk0F,eAAelnB,IAAI6uE,EAAE7uE,EAAEpmD,EAAEm9C,GAAG83E,EAAE93E,EAAE,kBAAiB,GAAI83E,EAAE93E,EAAE,UAAUiJ,GAAGm3F,GAAGn3F,IAAI6uE,EAAE93E,EAAEihG,IAAG,IAAKt9J,GAAGm9J,GAAG73F,KAAK6uE,EAAE93E,EAAE,iBAAgB,GAAI,IAAI,IAAIriE,EAAE1B,OAAO4L,KAAKohE,GAAG7+D,EAAE,EAAEA,EAAEzM,EAAEE,OAAOuM,IAAIq3J,GAAGzhG,EAAEiJ,EAAEtrE,EAAEyM,GAAGzG,GAAG,OAAOq8D,CAAC,CAAC,SAASyhG,GAAGx4F,EAAEtlE,EAAEkf,EAAE4d,GAAGxkC,OAAOC,eAAe+sE,EAAEpmD,EAAE,CAACnG,YAAW,EAAGC,cAAa,EAAG0W,IAAI,WAAW,IAAI41C,EAAEtlE,EAAEkf,GAAG,OAAO4d,IAAIm6B,EAAEqO,GAAGA,EAAEs4F,GAAGt4F,EAAE,EAAE9rC,IAAI,WAAW,GAAG,CAAC,IAAIukI,GAAG5iJ,GAAE,SAAUmqD,GAAG,IAAItlE,EAAE,MAAMslE,EAAEp/D,OAAO,GAAGgZ,EAAE,OAAOomD,EAAEtlE,EAAEslE,EAAEl/D,MAAM,GAAGk/D,GAAGp/D,OAAO,GAAG42B,EAAE,OAAOwoC,EAAEpmD,EAAEomD,EAAEl/D,MAAM,GAAGk/D,GAAGp/D,OAAO,GAAG,MAAM,CAACnL,KAAKuqE,EAAExoC,EAAEwoC,EAAEl/D,MAAM,GAAGk/D,EAAEusC,KAAK3yF,EAAE8+I,QAAQlhI,EAAE6oF,QAAQ3lH,EAAG,IAAG,SAASi+J,GAAG34F,EAAEpmD,GAAG,SAAS4d,IAAI,IAAIwoC,EAAExoC,EAAEohI,IAAI,IAAIl+J,EAAEslE,GAAG,OAAOq5E,GAAGr5E,EAAE,KAAKllE,UAAU8e,EAAE,gBAAgB,IAAI,IAAIm9C,EAAEiJ,EAAEl/D,QAAQpM,EAAE,EAAEA,EAAEqiE,EAAEniE,OAAOF,IAAI2kJ,GAAGtiF,EAAEriE,GAAG,KAAKoG,UAAU8e,EAAE,eAAe,CAAC,OAAO4d,EAAEohI,IAAI54F,EAAExoC,CAAC,CAAC,SAASqhI,GAAG74F,EAAEtlE,EAAE88B,EAAE9iC,EAAEyM,EAAEwY,GAAG,IAAIkc,EAAE87B,EAAEzD,EAAEp0C,EAAE,IAAI+b,KAAKmqC,EAAErO,EAAEqO,EAAEnqC,GAAGq4B,EAAExzD,EAAEm7B,GAAG/b,EAAE2+I,GAAG5iI,GAAGjc,EAAE+3C,KAAK/3C,EAAEs0C,IAAIt0C,EAAE+3C,EAAEinG,OAAOjnG,EAAEqO,EAAEnqC,GAAG8iI,GAAGhnG,EAAEh4C,IAAIo9C,EAAEj9C,EAAEyyF,QAAQ56C,EAAEqO,EAAEnqC,GAAG10B,EAAE2Y,EAAErkB,KAAKk8D,EAAE73C,EAAE4+I,UAAUlhI,EAAE1d,EAAErkB,KAAKk8D,EAAE73C,EAAE4+I,QAAQ5+I,EAAEumG,QAAQvmG,EAAEoR,SAASymC,IAAIzD,IAAIA,EAAE0qG,IAAIjnG,EAAEqO,EAAEnqC,GAAGq4B,IAAI,IAAIr4B,KAAKn7B,EAAEkf,EAAEomD,EAAEnqC,KAAKnhC,GAAGolB,EAAE2+I,GAAG5iI,IAAIpgC,KAAKiF,EAAEm7B,GAAG/b,EAAE4+I,QAAQ,CAAC,SAASI,GAAG94F,EAAEtlE,EAAEhG,GAAG,IAAIyM,EAAE6+D,aAAaq0F,KAAKr0F,EAAEA,EAAE7kE,KAAKwmJ,OAAO3hF,EAAE7kE,KAAKwmJ,KAAK,CAAC,IAAI,IAAIhoI,EAAEqmD,EAAEtlE,GAAG,SAASm7B,IAAInhC,EAAEmG,MAAM3E,KAAK4E,WAAW8gC,EAAEz6B,EAAEy3J,IAAI/iI,EAAE,CAACjc,EAAED,GAAGxY,EAAEw3J,GAAG,CAAC9iI,IAAI2B,EAAE7d,EAAEi/I,MAAM7hG,EAAEp9C,EAAEo/I,SAAS53J,EAAEwY,GAAGi/I,IAAIn9J,KAAKo6B,GAAG10B,EAAEw3J,GAAG,CAACh/I,EAAEkc,IAAI10B,EAAE43J,QAAO,EAAG/4F,EAAEtlE,GAAGyG,CAAC,CAAC,SAAS6oH,GAAGhqD,EAAEtlE,EAAEkf,EAAEm9C,EAAEriE,GAAG,GAAG8iC,EAAE98B,GAAG,CAAC,GAAGw/B,EAAEx/B,EAAEkf,GAAG,OAAOomD,EAAEpmD,GAAGlf,EAAEkf,GAAGllB,UAAUgG,EAAEkf,IAAG,EAAG,GAAGsgB,EAAEx/B,EAAEq8D,GAAG,OAAOiJ,EAAEpmD,GAAGlf,EAAEq8D,GAAGriE,UAAUgG,EAAEq8D,IAAG,CAAE,CAAC,OAAM,CAAE,CAAC,SAASiiG,GAAGh5F,GAAG,OAAOtrE,EAAEsrE,GAAG,CAACwhE,GAAGxhE,IAAItlE,EAAEslE,GAAGuN,GAAGvN,QAAG,CAAM,CAAC,SAASi5F,GAAGj5F,GAAG,OAAOxoC,EAAEwoC,IAAIxoC,EAAEwoC,EAAEh6D,QAAO,IAAKg6D,EAAE40F,SAAS,CAAC,SAASrnF,GAAGvN,EAAE7+D,GAAG,IAAIwY,EAAEkc,EAAE87B,EAAEzD,EAAEp0C,EAAE,GAAG,IAAIH,EAAE,EAAEA,EAAEqmD,EAAEprE,OAAO+kB,IAAIC,EAAEic,EAAEmqC,EAAErmD,KAAK,kBAAkBkc,IAAIq4B,EAAEp0C,EAAE63C,EAAE73C,EAAEllB,OAAO,GAAG8F,EAAEm7B,GAAGA,EAAEjhC,OAAO,IAAIqkK,IAAIpjI,EAAE03C,GAAG13C,EAAE,GAAGh+B,OAAOsJ,GAAG,GAAG,KAAKtJ,OAAO8hB,KAAK,KAAKs/I,GAAG/qG,KAAKp0C,EAAE63C,GAAG6vE,GAAGtzE,EAAEloD,KAAK6vB,EAAE,GAAG7vB,MAAM6vB,EAAE0vC,SAASzrD,EAAEre,KAAKZ,MAAMif,EAAE+b,IAAInhC,EAAEmhC,GAAGojI,GAAG/qG,GAAGp0C,EAAE63C,GAAG6vE,GAAGtzE,EAAEloD,KAAK6vB,GAAG,KAAKA,GAAG/b,EAAEre,KAAK+lI,GAAG3rG,IAAIojI,GAAGpjI,IAAIojI,GAAG/qG,GAAGp0C,EAAE63C,GAAG6vE,GAAGtzE,EAAEloD,KAAK6vB,EAAE7vB,OAAO+wD,EAAEiJ,EAAEk5F,WAAW1hI,EAAE3B,EAAEp5B,MAAMmd,EAAEic,EAAE7gC,MAAMwiC,EAAEr2B,KAAK00B,EAAE7gC,IAAI,UAAU6C,OAAOsJ,EAAE,KAAKtJ,OAAO8hB,EAAE,OAAOG,EAAEre,KAAKo6B,KAAK,OAAO/b,CAAC,CAAC,IAAIq/I,GAAG,EAAEC,GAAG,EAAE,SAASC,GAAGr5F,EAAEpmD,EAAEic,EAAE87B,EAAEzD,EAAEp0C,GAAG,OAAOpf,EAAEm7B,IAAInhC,EAAEmhC,MAAMq4B,EAAEyD,EAAEA,EAAE97B,EAAEA,OAAE,GAAQkhC,EAAEj9C,KAAKo0C,EAAEkrG,IAAI,SAASp5F,EAAEpmD,EAAEm9C,EAAEriE,EAAEmhC,GAAG,GAAG2B,EAAEu/B,IAAIv/B,EAAEu/B,EAAEo/F,QAAQ,OAAOjB,KAA6B,GAAxB19H,EAAEu/B,IAAIv/B,EAAEu/B,EAAEr8B,MAAM9gB,EAAEm9C,EAAEr8B,KAAQ9gB,EAAE,OAAOs7I,KAA0M,IAAIvjG,EAAEzD,EAAE,GAA7MxzD,EAAEhG,IAAIyM,EAAEzM,EAAE,OAAOqiE,EAAEA,GAAG,CAAC,GAAGuiG,YAAY,CAACtlK,QAAQU,EAAE,IAAIA,EAAEE,OAAO,GAAGihC,IAAIujI,GAAG1kK,EAAEskK,GAAGtkK,GAAGmhC,IAAIsjI,KAAKzkK,EAAE,SAASsrE,GAAG,IAAI,IAAIpmD,EAAE,EAAEA,EAAEomD,EAAEprE,OAAOglB,IAAI,GAAGlf,EAAEslE,EAAEpmD,IAAI,OAAOplB,MAAMH,UAAUwD,OAAOgD,MAAM,GAAGmlE,GAAG,OAAOA,CAAC,CAApG,CAAsGtrE,IAAe,iBAAiBklB,EAAE,CAAC,IAAIE,OAAE,EAAOo0C,EAAE8R,EAAEgjD,QAAQhjD,EAAEgjD,OAAOsxC,IAAI96B,EAAEi6B,gBAAgB75I,GAAG+3C,EAAE6nE,EAAE85B,cAAc15I,GAAG,IAAIy6I,GAAG76B,EAAEk6B,qBAAqB95I,GAAGm9C,EAAEriE,OAAE,OAAO,EAAOsrE,GAAGjJ,GAAGA,EAAEwiG,MAAM/hI,EAAE1d,EAAE0/I,GAAGx5F,EAAEloE,SAAS,aAAa8hB,IAAI,IAAIy6I,GAAGz6I,EAAEm9C,EAAEriE,OAAE,OAAO,EAAOsrE,GAAGy5F,GAAG3/I,EAAEi9C,EAAEiJ,EAAEtrE,EAAEklB,EAAE,MAAM+3C,EAAE8nG,GAAG7/I,EAAEm9C,EAAEiJ,EAAEtrE,GAAG,OAAOgG,EAAEi3D,GAAGA,EAAEn6B,EAAEm6B,IAAIn6B,EAAE02B,IAAIwrG,GAAG/nG,EAAEzD,GAAG12B,EAAEu/B,IAAI,SAASiJ,GAAGrmD,EAAEqmD,EAAE8uE,QAAQ6qB,GAAG35F,EAAE8uE,OAAOn1H,EAAEqmD,EAAEw0E,QAAQmlB,GAAG35F,EAAEw0E,MAAM,CAA3D,CAA6Dz9E,GAAGpF,GAAGujG,IAAI,CAArqB,CAAuqBl1F,EAAEpmD,EAAEic,EAAE87B,EAAEzD,EAAE,CAAC,SAASwrG,GAAG15F,EAAEtlE,EAAEhG,GAAG,GAAGsrE,EAAEs0F,GAAG55J,EAAE,kBAAkBslE,EAAEvjE,MAAM/B,OAAE,EAAOhG,GAAE,GAAI8iC,EAAEwoC,EAAEh0B,UAAU,IAAI,IAAI7qC,EAAE,EAAEwY,EAAEqmD,EAAEh0B,SAASp3C,OAAOuM,EAAEwY,EAAExY,IAAI,CAAC,IAAI00B,EAAEmqC,EAAEh0B,SAAS7qC,GAAGq2B,EAAE3B,EAAEp5B,OAAOmd,EAAEic,EAAEy+H,KAAKv9F,EAAEriE,IAAI,QAAQmhC,EAAEp5B,MAAMi9J,GAAG7jI,EAAEn7B,EAAEhG,EAAE,CAAC,CAAC,SAASklK,GAAG55F,EAAEpmD,GAAG,IAAIm9C,EAAEriE,EAAEyM,EAAE00B,EAAE87B,EAAE,KAAK,GAAGj3D,EAAEslE,IAAI,iBAAiBA,EAAE,IAAIrO,EAAE,IAAIn9D,MAAMwrE,EAAEprE,QAAQmiE,EAAE,EAAEriE,EAAEsrE,EAAEprE,OAAOmiE,EAAEriE,EAAEqiE,IAAIpF,EAAEoF,GAAGn9C,EAAEomD,EAAEjJ,GAAGA,QAAQ,GAAG,iBAAiBiJ,EAAE,IAAIrO,EAAE,IAAIn9D,MAAMwrE,GAAGjJ,EAAE,EAAEA,EAAEiJ,EAAEjJ,IAAIpF,EAAEoF,GAAGn9C,EAAEm9C,EAAE,EAAEA,QAAQ,GAAGp9C,EAAEqmD,GAAG,GAAGi0F,IAAIj0F,EAAE9rE,OAAOC,UAAU,CAACw9D,EAAE,GAAG,IAAI,IAAIzD,EAAE8R,EAAE9rE,OAAOC,YAAY2lB,EAAEo0C,EAAE5xD,QAAQwd,EAAEvd,MAAMo1D,EAAEl2D,KAAKme,EAAEE,EAAE3mB,MAAMw+D,EAAE/8D,SAASklB,EAAEo0C,EAAE5xD,MAAM,MAAM,IAAI6E,EAAEnO,OAAO4L,KAAKohE,GAAGrO,EAAE,IAAIn9D,MAAM2M,EAAEvM,QAAQmiE,EAAE,EAAEriE,EAAEyM,EAAEvM,OAAOmiE,EAAEriE,EAAEqiE,IAAIlhC,EAAE10B,EAAE41D,GAAGpF,EAAEoF,GAAGn9C,EAAEomD,EAAEnqC,GAAGA,EAAEkhC,GAAG,OAAOv/B,EAAEm6B,KAAKA,EAAE,IAAIA,EAAEunG,UAAS,EAAGvnG,CAAC,CAAC,SAASkoG,GAAG75F,EAAEtlE,EAAEkf,EAAE4d,GAAG,IAAIu/B,EAAEriE,EAAEwB,KAAKm0I,aAAarqE,GAAGtrE,GAAGklB,EAAEA,GAAG,CAAC,EAAE4d,IAAI5d,EAAE+0H,EAAEA,EAAE,CAAC,EAAEn3G,GAAG5d,IAAIm9C,EAAEriE,EAAEklB,KAAKzY,EAAEzG,GAAGA,IAAIA,IAAIq8D,EAAE7gE,KAAKS,OAAOqpE,KAAK7+D,EAAEzG,GAAGA,IAAIA,GAAG,IAAIif,EAAEC,GAAGA,EAAE5iB,KAAK,OAAO2iB,EAAEzjB,KAAKk+I,eAAe,WAAW,CAACp9I,KAAK2iB,GAAGo9C,GAAGA,CAAC,CAAC,SAAS+iG,GAAG95F,GAAG,OAAOw5F,GAAGtjK,KAAK4B,SAAS,UAAUkoE,IAAIq7D,CAAC,CAAC,SAAS0+B,GAAG/5F,EAAEpmD,GAAG,OAAOlf,EAAEslE,IAAI,IAAIA,EAAE/oE,QAAQ2iB,GAAGomD,IAAIpmD,CAAC,CAAC,SAASonH,GAAGhhE,EAAEtlE,EAAEkf,EAAE4d,EAAEu/B,GAAG,IAAIriE,EAAE8kI,EAAE65B,SAAS34J,IAAIkf,EAAE,OAAOm9C,GAAGv/B,IAAIgiG,EAAE65B,SAAS34J,GAAGq/J,GAAGhjG,EAAEv/B,GAAG9iC,EAAEqlK,GAAGrlK,EAAEsrE,GAAGxoC,EAAEqiG,EAAEriG,KAAK98B,OAAE,IAASslE,CAAC,CAAC,SAASg6F,GAAGh6F,EAAEpmD,EAAE4d,EAAEu/B,EAAEriE,GAAG,GAAG8iC,GAAK7d,EAAE6d,GAAG,CAAC98B,EAAE88B,KAAKA,EAAE65B,EAAE75B,IAAI,IAAIr2B,OAAE,EAAO00B,EAAE,SAASn7B,GAAG,GAAG,UAAUA,GAAG,UAAUA,GAAGgmF,EAAEhmF,GAAGyG,EAAE6+D,MAAM,CAAC,IAAIrmD,EAAEqmD,EAAEvE,OAAOuE,EAAEvE,MAAM7lE,KAAKuL,EAAE41D,GAAGyiE,EAAEm6B,YAAY/5I,EAAED,EAAEjf,GAAGslE,EAAE80E,WAAW90E,EAAE80E,SAAS,CAAC,GAAG90E,EAAEvE,QAAQuE,EAAEvE,MAAM,CAAC,EAAE,CAAC,IAAI5lC,EAAE7b,EAAEtf,GAAGi3D,EAAEkoE,EAAEn/H,GAAGm7B,KAAK10B,GAAGwwD,KAAKxwD,IAAIA,EAAEzG,GAAG88B,EAAE98B,GAAGhG,KAAKsrE,EAAEr+C,KAAKq+C,EAAEr+C,GAAG,CAAC,IAAI,UAAU9pB,OAAO6C,IAAI,SAASslE,GAAGxoC,EAAE98B,GAAGslE,CAAC,GAAG,EAAE,IAAI,IAAIrO,KAAKn6B,EAAE3B,EAAE87B,EAAE,CAAM,OAAOqO,CAAC,CAAC,SAASi6F,GAAGj6F,EAAEtlE,GAAG,IAAIkf,EAAE1jB,KAAKgkK,eAAehkK,KAAKgkK,aAAa,IAAI1iI,EAAE5d,EAAEomD,GAAG,OAAOxoC,IAAI98B,GAAGu3E,GAAGz6C,EAAE5d,EAAEomD,GAAG9pE,KAAK4B,SAASm8I,gBAAgBj0E,GAAG9qE,KAAKgB,KAAKikK,aAAajkK,KAAKo+I,GAAGp+I,MAAM,aAAa2B,OAAOmoE,IAAG,GAAIxoC,CAAC,CAAC,SAAS4iI,GAAGp6F,EAAEtlE,EAAEkf,GAAG,OAAOq4D,GAAGjS,EAAE,WAAWnoE,OAAO6C,GAAG7C,OAAO+hB,EAAE,IAAI/hB,OAAO+hB,GAAG,KAAI,GAAIomD,CAAC,CAAC,SAASiS,GAAGjS,EAAEpmD,EAAE4d,GAAG,GAAG98B,EAAEslE,GAAG,IAAI,IAAIjJ,EAAE,EAAEA,EAAEiJ,EAAEprE,OAAOmiE,IAAIiJ,EAAEjJ,IAAI,iBAAiBiJ,EAAEjJ,IAAIsjG,GAAGr6F,EAAEjJ,GAAG,GAAGl/D,OAAO+hB,EAAE,KAAK/hB,OAAOk/D,GAAGv/B,QAAQ6iI,GAAGr6F,EAAEpmD,EAAE4d,EAAE,CAAC,SAAS6iI,GAAGr6F,EAAEtlE,EAAEkf,GAAGomD,EAAE00F,UAAS,EAAG10F,EAAEhrE,IAAI0F,EAAEslE,EAAE80F,OAAOl7I,CAAC,CAAC,SAAS0gJ,GAAGt6F,EAAEtlE,GAAG,GAAGA,GAAKi3D,EAAEj3D,GAAG,CAAC,IAAIkf,EAAEomD,EAAEr+C,GAAGq+C,EAAEr+C,GAAGgtH,EAAE,CAAC,EAAE3uE,EAAEr+C,IAAI,CAAC,EAAE,IAAI,IAAI6V,KAAK98B,EAAE,CAAC,IAAIq8D,EAAEn9C,EAAE4d,GAAG9iC,EAAEgG,EAAE88B,GAAG5d,EAAE4d,GAAGu/B,EAAE,GAAGl/D,OAAOk/D,EAAEriE,GAAGA,CAAC,CAAC,CAAM,OAAOsrE,CAAC,CAAC,SAAS40E,GAAG50E,EAAEpmD,EAAE4d,EAAEu/B,GAAGn9C,EAAEA,GAAG,CAAC2gJ,SAAS/iI,GAAG,IAAI,IAAI9iC,EAAE,EAAEA,EAAEsrE,EAAEprE,OAAOF,IAAI,CAAC,IAAIyM,EAAE6+D,EAAEtrE,GAAGgG,EAAEyG,GAAGyzI,GAAGzzI,EAAEyY,EAAE4d,GAAGr2B,IAAIA,EAAEq5J,QAAQr5J,EAAEwoD,GAAG6wG,OAAM,GAAI5gJ,EAAEzY,EAAEnM,KAAKmM,EAAEwoD,GAAG,CAAC,OAAOoN,IAAIn9C,EAAE6gJ,KAAK1jG,GAAGn9C,CAAC,CAAC,SAAS8gJ,GAAG16F,EAAEtlE,GAAG,IAAI,IAAIkf,EAAE,EAAEA,EAAElf,EAAE9F,OAAOglB,GAAG,EAAE,CAAC,IAAI4d,EAAE98B,EAAEkf,GAAG,iBAAiB4d,GAAGA,IAAIwoC,EAAEtlE,EAAEkf,IAAIlf,EAAEkf,EAAE,GAAG,CAAC,OAAOomD,CAAC,CAAC,SAAS26F,GAAG36F,EAAEtlE,GAAG,MAAM,iBAAiBslE,EAAEtlE,EAAEslE,EAAEA,CAAC,CAAC,SAAS46F,GAAG56F,GAAGA,EAAE66F,GAAGT,GAAGp6F,EAAEq5E,GAAGhvH,EAAE21C,EAAE20E,GAAGh+G,EAAEqpC,EAAEy0E,GAAGmlB,GAAG55F,EAAEkvE,GAAG2qB,GAAG75F,EAAE86F,GAAG9hC,EAAEh5D,EAAE2kE,GAAGhM,EAAE34D,EAAE+6F,GAAGd,GAAGj6F,EAAEg7F,GAAGlB,GAAG95F,EAAEizE,GAAGjS,GAAGhhE,EAAEstF,GAAG0M,GAAGh6F,EAAE00E,GAAGlT,GAAGxhE,EAAE40E,GAAGsgB,GAAGl1F,EAAEi7F,GAAGrmB,GAAG50E,EAAE6iF,GAAGyX,GAAGt6F,EAAEs5E,GAAGohB,GAAG16F,EAAEk7F,GAAGP,EAAE,CAAC,SAASQ,GAAGn7F,EAAEtlE,GAAG,IAAIslE,IAAIA,EAAEprE,OAAO,MAAM,CAAC,EAAE,IAAI,IAAIglB,EAAE,CAAC,EAAE4d,EAAE,EAAEu/B,EAAEiJ,EAAEprE,OAAO4iC,EAAEu/B,EAAEv/B,IAAI,CAAC,IAAI9iC,EAAEsrE,EAAExoC,GAAGr2B,EAAEzM,EAAEyG,KAAK,GAAGgG,GAAGA,EAAEs6D,OAAOt6D,EAAEs6D,MAAMzkE,aAAamK,EAAEs6D,MAAMzkE,KAAKtC,EAAE6qB,UAAU7kB,GAAGhG,EAAE6/J,YAAY75J,IAAIyG,GAAG,MAAMA,EAAEnK,MAAM4iB,EAAE5lB,UAAU4lB,EAAE5lB,QAAQ,KAAKyH,KAAK/G,OAAO,CAAC,IAAIilB,EAAExY,EAAEnK,KAAK6+B,EAAEjc,EAAED,KAAKC,EAAED,GAAG,IAAI,aAAajlB,EAAE+H,IAAIo5B,EAAEp6B,KAAKZ,MAAMg7B,EAAEnhC,EAAEs3C,UAAU,IAAInW,EAAEp6B,KAAK/G,EAAE,CAAC,CAAC,IAAI,IAAIi9D,KAAK/3C,EAAEA,EAAE+3C,GAAG3hB,MAAMorH,YAAYxhJ,EAAE+3C,GAAG,OAAO/3C,CAAC,CAAC,SAASwhJ,GAAGp7F,GAAG,OAAOA,EAAE40F,YAAY50F,EAAE+0F,cAAc,MAAM/0F,EAAEh6D,IAAI,CAAC,SAASq1J,GAAGr7F,GAAG,OAAOA,EAAE40F,WAAW50F,EAAE+0F,YAAY,CAAC,SAASuG,GAAG5gK,EAAEkf,EAAE4d,EAAEu/B,GAAG,IAAIriE,EAAEyM,EAAEnO,OAAO4L,KAAK44B,GAAG5iC,OAAO,EAAE+kB,EAAEC,IAAIA,EAAE2gJ,SAASp5J,EAAE00B,EAAEjc,GAAGA,EAAE6gJ,KAAK,GAAG7gJ,EAAE,CAAC,GAAGA,EAAE2hJ,YAAY,OAAO3hJ,EAAE2hJ,YAAY,GAAG5hJ,GAAGo9C,GAAGA,IAAIiJ,GAAGnqC,IAAIkhC,EAAE0jG,OAAOt5J,IAAI41D,EAAEykG,WAAW,OAAOzkG,EAAE,IAAI,IAAIpF,KAAKj9D,EAAE,CAAC,EAAEklB,EAAEA,EAAE+3C,IAAI,MAAMA,EAAE,KAAKj9D,EAAEi9D,GAAG8pG,GAAG/gK,EAAE88B,EAAEm6B,EAAE/3C,EAAE+3C,IAAI,MAAMj9D,EAAE,CAAC,EAAE,IAAI,IAAIw5D,KAAK12B,EAAE02B,KAAKx5D,IAAIA,EAAEw5D,GAAGwtG,GAAGlkI,EAAE02B,IAAI,OAAOt0C,GAAG5mB,OAAOw/I,aAAa54H,KAAKA,EAAE2hJ,YAAY7mK,GAAGm6I,EAAEn6I,EAAE,UAAUilB,GAAGk1H,EAAEn6I,EAAE,OAAOmhC,GAAGg5G,EAAEn6I,EAAE,aAAayM,GAAGzM,CAAC,CAAC,SAAS+mK,GAAGz7F,EAAEpmD,EAAE4d,EAAEu/B,GAAG,IAAIriE,EAAE,WAAW,IAAIklB,EAAEu6I,GAAG1pG,GAAGuV,GAAG,IAAIxoC,EAAE18B,UAAUlG,OAAOmiE,EAAEl8D,MAAM,KAAKC,WAAWi8D,EAAE,CAAC,GAAGriE,GAAG8iC,EAAEA,GAAG,iBAAiBA,IAAI98B,EAAE88B,GAAG,CAACA,GAAGwhI,GAAGxhI,KAAKA,EAAE,GAAG,OAAOizB,GAAG7wC,GAAG4d,KAAK9iC,GAAG,IAAI8iC,EAAE5iC,QAAQF,EAAEkgK,YAAYyG,GAAG3mK,SAAI,EAAO8iC,CAAC,EAAE,OAAOu/B,EAAEyjG,OAAOxnK,OAAOC,eAAe2mB,EAAE4d,EAAE,CAACpN,IAAI11B,EAAE+e,YAAW,EAAGC,cAAa,IAAKhf,CAAC,CAAC,SAASgnK,GAAG17F,EAAEtlE,GAAG,OAAO,WAAW,OAAOslE,EAAEtlE,EAAE,CAAC,CAAC,SAASihK,GAAGjhK,GAAG,MAAM,CAAC,SAAI+gE,GAAQ,IAAI/gE,EAAEkhK,YAAY,CAAC,IAAIhiJ,EAAElf,EAAEkhK,YAAY,CAAC,EAAE/sB,EAAEj1H,EAAE,iBAAgB,GAAIiiJ,GAAGjiJ,EAAElf,EAAE7B,OAAOmnE,EAAEtlE,EAAE,SAAS,CAAC,OAAOA,EAAEkhK,WAAW,EAAE,aAAIj+J,GAAsF,OAA1EjD,EAAEohK,iBAAiBD,GAAGnhK,EAAEohK,gBAAgB,CAAC,EAAEphK,EAAEmD,WAAWmiE,EAAEtlE,EAAE,cAAqBA,EAAEohK,eAAe,EAAE,SAAI5vB,GAAQ,OAAO,SAASlsE,GAAsD,OAAnDA,EAAE+7F,aAAaC,GAAGh8F,EAAE+7F,YAAY,CAAC,EAAE/7F,EAAEqqE,cAAqBrqE,EAAE+7F,WAAW,CAAnF,CAAqFrhK,EAAE,EAAE23J,KAAK/3B,EAAE5/H,EAAE2H,MAAM3H,GAAGuhK,OAAO,SAASj8F,GAAGA,GAAGhtE,OAAO4L,KAAKohE,GAAGlmE,SAAQ,SAAU8f,GAAG,OAAOs+I,GAAGx9J,EAAEslE,EAAEpmD,EAAG,GAAE,EAAE,CAAC,SAASiiJ,GAAG77F,EAAEtlE,EAAEkf,EAAE4d,EAAEu/B,GAAG,IAAIriE,GAAE,EAAG,IAAI,IAAIyM,KAAKzG,EAAEyG,KAAK6+D,EAAEtlE,EAAEyG,KAAKyY,EAAEzY,KAAKzM,GAAE,IAAKA,GAAE,EAAGwnK,GAAGl8F,EAAE7+D,EAAEq2B,EAAEu/B,IAAI,IAAI,IAAI51D,KAAK6+D,EAAE7+D,KAAKzG,IAAIhG,GAAE,SAAUsrE,EAAE7+D,IAAI,OAAOzM,CAAC,CAAC,SAASwnK,GAAGl8F,EAAEtlE,EAAEkf,EAAE4d,GAAGxkC,OAAOC,eAAe+sE,EAAEtlE,EAAE,CAAC+Y,YAAW,EAAGC,cAAa,EAAG0W,IAAI,WAAW,OAAOxQ,EAAE4d,GAAG98B,EAAE,GAAG,CAAC,SAASshK,GAAGh8F,EAAEtlE,GAAG,IAAI,IAAIkf,KAAKlf,EAAEslE,EAAEpmD,GAAGlf,EAAEkf,GAAG,IAAI,IAAIA,KAAKomD,EAAEpmD,KAAKlf,UAAUslE,EAAEpmD,EAAE,CAAC,SAASuiJ,KAAK,IAAIn8F,EAAEm0F,GAAG,OAAOn0F,EAAEo8F,gBAAgBp8F,EAAEo8F,cAAcT,GAAG37F,GAAG,CAAC,IAAIq8F,GAAGC,GAAGC,GAAG,KAAK,SAASC,GAAGx8F,EAAEtlE,GAAG,OAAOslE,EAAEjsE,YAAYkgK,IAAI,WAAWj0F,EAAE9rE,OAAOwzF,gBAAgB1nB,EAAEA,EAAEhsE,SAAS2lB,EAAEqmD,GAAGtlE,EAAEiB,OAAOqkE,GAAGA,CAAC,CAAC,SAASy8F,GAAGz8F,GAAG,GAAGtlE,EAAEslE,GAAG,IAAI,IAAIpmD,EAAE,EAAEA,EAAEomD,EAAEprE,OAAOglB,IAAI,CAAC,IAAIm9C,EAAEiJ,EAAEpmD,GAAG,GAAG4d,EAAEu/B,KAAKv/B,EAAEu/B,EAAE/2D,mBAAmBq7J,GAAGtkG,IAAI,OAAOA,CAAC,CAAC,CAAC,SAAS2lG,GAAG18F,EAAEtlE,GAAG2hK,GAAGnjK,IAAI8mE,EAAEtlE,EAAE,CAAC,SAASiiK,GAAG38F,EAAEtlE,GAAG2hK,GAAG54C,KAAKzjD,EAAEtlE,EAAE,CAAC,SAASkiK,GAAG58F,EAAEtlE,GAAG,IAAIkf,EAAEyiJ,GAAG,OAAO,SAAS7kI,IAAI,OAAO98B,EAAEG,MAAM,KAAKC,YAAY8e,EAAE6pG,KAAKzjD,EAAExoC,EAAE,CAAC,CAAC,SAASqlI,GAAG78F,EAAEtlE,EAAEkf,GAAGyiJ,GAAGr8F,EAAE64F,GAAGn+J,EAAEkf,GAAG,CAAC,EAAE8iJ,GAAGC,GAAGC,GAAG58F,GAAGq8F,QAAG,CAAM,CAAC,IAAIS,GAAG,WAAW,SAAS98F,EAAEA,QAAG,IAASA,IAAIA,GAAE,GAAI9pE,KAAK6mK,SAAS/8F,EAAE9pE,KAAKmrD,QAAO,EAAGnrD,KAAK8mK,QAAQ,GAAG9mK,KAAK+mK,SAAS,GAAG/mK,KAAK4L,OAAOw6J,IAAIt8F,GAAGs8F,KAAKpmK,KAAKyK,OAAO27J,GAAGY,SAASZ,GAAGY,OAAO,KAAKzhK,KAAKvF,MAAM,EAAE,CAAC,OAAO8pE,EAAE3rE,UAAU8oK,IAAI,SAASn9F,GAAG,GAAG9pE,KAAKmrD,OAAO,CAAC,IAAI3mD,EAAE4hK,GAAG,IAAI,OAAOA,GAAGpmK,KAAK8pE,GAAG,CAAC,QAAQs8F,GAAG5hK,CAAC,CAAC,CAAC,EAAEslE,EAAE3rE,UAAUstB,GAAG,WAAW26I,GAAGpmK,IAAI,EAAE8pE,EAAE3rE,UAAU23B,IAAI,WAAWswI,GAAGpmK,KAAK4L,MAAM,EAAEk+D,EAAE3rE,UAAUwyD,KAAK,SAASmZ,GAAG,GAAG9pE,KAAKmrD,OAAO,CAAC,IAAI3mD,OAAE,EAAOkf,OAAE,EAAO,IAAIlf,EAAE,EAAEkf,EAAE1jB,KAAK8mK,QAAQpoK,OAAO8F,EAAEkf,EAAElf,IAAIxE,KAAK8mK,QAAQtiK,GAAG0iK,WAAW,IAAI1iK,EAAE,EAAEkf,EAAE1jB,KAAK+mK,SAASroK,OAAO8F,EAAEkf,EAAElf,IAAIxE,KAAK+mK,SAASviK,KAAK,GAAGxE,KAAKgnK,OAAO,IAAIxiK,EAAE,EAAEkf,EAAE1jB,KAAKgnK,OAAOtoK,OAAO8F,EAAEkf,EAAElf,IAAIxE,KAAKgnK,OAAOxiK,GAAGmsD,MAAK,GAAI,IAAI3wD,KAAK6mK,UAAU7mK,KAAK4L,SAASk+D,EAAE,CAAC,IAAIxoC,EAAEthC,KAAK4L,OAAOo7J,OAAO79J,MAAMm4B,GAAGA,IAAIthC,OAAOA,KAAK4L,OAAOo7J,OAAOhnK,KAAKyK,OAAO62B,EAAEA,EAAE72B,MAAMzK,KAAKyK,MAAM,CAACzK,KAAK4L,YAAO,EAAO5L,KAAKmrD,QAAO,CAAE,CAAC,EAAE2e,CAAC,CAA/xB,GAAmyB,SAASq9F,KAAK,OAAOf,EAAE,CAAC,IAAIgB,GAAG,KAAK,SAASC,GAAGv9F,GAAG,IAAItlE,EAAE4iK,GAAG,OAAOA,GAAGt9F,EAAE,WAAWs9F,GAAG5iK,CAAC,CAAC,CAAC,SAAS8iK,GAAGx9F,GAAG,KAAKA,IAAIA,EAAEA,EAAEj+D,UAAU,GAAGi+D,EAAEy9F,UAAU,OAAM,EAAG,OAAM,CAAE,CAAC,SAASC,GAAG19F,EAAEtlE,GAAG,GAAGA,GAAG,GAAGslE,EAAE29F,iBAAgB,EAAGH,GAAGx9F,GAAG,YAAY,GAAGA,EAAE29F,gBAAgB,OAAO,GAAG39F,EAAEy9F,WAAW,OAAOz9F,EAAEy9F,UAAU,CAACz9F,EAAEy9F,WAAU,EAAG,IAAI,IAAI7jJ,EAAE,EAAEA,EAAEomD,EAAE9+D,UAAUtM,OAAOglB,IAAI8jJ,GAAG19F,EAAE9+D,UAAU0Y,IAAIgkJ,GAAG59F,EAAE,YAAY,CAAC,CAAC,SAAS69F,GAAG79F,EAAEtlE,GAAG,KAAKA,IAAIslE,EAAE29F,iBAAgB,EAAGH,GAAGx9F,KAAKA,EAAEy9F,WAAW,CAACz9F,EAAEy9F,WAAU,EAAG,IAAI,IAAI7jJ,EAAE,EAAEA,EAAEomD,EAAE9+D,UAAUtM,OAAOglB,IAAIikJ,GAAG79F,EAAE9+D,UAAU0Y,IAAIgkJ,GAAG59F,EAAE,cAAc,CAAC,CAAC,SAAS49F,GAAG59F,EAAEtlE,EAAEkf,EAAE4d,QAAG,IAASA,IAAIA,GAAE,GAAIu+H,KAAK,IAAIh/F,EAAEo9F,GAAGz/J,EAAE2oK,KAAK7lI,GAAGizB,GAAGuV,GAAG,IAAI7+D,EAAE6+D,EAAEloE,SAAS4C,GAAGif,EAAE,GAAG9hB,OAAO6C,EAAE,SAAS,GAAGyG,EAAE,IAAI,IAAI00B,EAAE,EAAE87B,EAAExwD,EAAEvM,OAAOihC,EAAE87B,EAAE97B,IAAIwjH,GAAGl4I,EAAE00B,GAAGmqC,EAAEpmD,GAAG,KAAKomD,EAAErmD,GAAGqmD,EAAE89F,eAAe99F,EAAE39D,MAAM,QAAQ3H,GAAG88B,IAAIizB,GAAGsM,GAAGriE,GAAGA,EAAEitB,MAAMq0I,IAAI,CAAC,IAAI+H,GAAG,GAAGC,GAAG,GAAGC,GAAG,CAAC,EAAEC,IAAG,EAAG3lD,IAAG,EAAG4lD,GAAG,EAAMC,GAAG,EAAEz8I,GAAGjQ,KAAKo2E,IAAI,GAAGvT,IAAIg/D,EAAE,CAAC,IAAI8qB,GAAGlqJ,OAAO8+I,YAAYoL,IAAI,mBAAmBA,GAAGv2E,KAAKnmE,KAAKrmB,SAASgjK,YAAY,SAASC,YAAY58I,GAAG,WAAW,OAAO08I,GAAGv2E,KAAK,EAAE,CAAC,IAAI02E,GAAG,SAASx+F,EAAEtlE,GAAG,GAAGslE,EAAE75C,MAAM,IAAIzrB,EAAEyrB,KAAK,OAAO,OAAO,GAAGzrB,EAAEyrB,KAAK,OAAO,EAAE,OAAO65C,EAAEnlD,GAAGngB,EAAEmgB,EAAE,EAAE,SAAS4jJ,KAAK,IAAIz+F,EAAEtlE,EAAE,IAAI0jK,GAAGz8I,KAAK42F,IAAG,EAAGwlD,GAAGrwJ,KAAK8wJ,IAAIL,GAAG,EAAEA,GAAGJ,GAAGnpK,OAAOupK,MAAMn+F,EAAE+9F,GAAGI,KAAK7gG,QAAQ0C,EAAE1C,SAAS5iE,EAAEslE,EAAEnlD,GAAGojJ,GAAGvjK,GAAG,KAAKslE,EAAEm9F,MAAM,IAAIvjJ,EAAEokJ,GAAGl9J,QAAQ02B,EAAEumI,GAAGj9J,QAAQq9J,GAAGJ,GAAGnpK,OAAOopK,GAAGppK,OAAO,EAAEqpK,GAAG,CAAC,EAAEC,GAAG3lD,IAAG,EAAG,SAASv4C,GAAG,IAAI,IAAItlE,EAAE,EAAEA,EAAEslE,EAAEprE,OAAO8F,IAAIslE,EAAEtlE,GAAG+iK,WAAU,EAAGC,GAAG19F,EAAEtlE,IAAG,EAAG,CAApE,CAAsEkf,GAAG,SAASomD,GAAkB,IAAf,IAAItlE,EAAEslE,EAAEprE,OAAY8F,KAAK,CAAC,IAAIkf,EAAEomD,EAAEtlE,GAAG88B,EAAE5d,EAAEmkG,GAAGvmF,GAAGA,EAAEknI,WAAW9kJ,GAAG4d,EAAEmnI,aAAannI,EAAEonI,cAAchB,GAAGpmI,EAAE,UAAU,CAAC,CAA1H,CAA4HA,GAAG+yB,KAAK62E,IAAI5H,EAAEw5B,UAAU5xB,GAAGixB,KAAK,QAAQ,CAAC,SAASwM,GAAG7+F,GAAG,IAAItlE,EAAEslE,EAAEnlD,GAAG,GAAG,MAAMojJ,GAAGvjK,KAAKslE,IAAIy1F,GAAGliJ,SAASysD,EAAE8+F,WAAW,CAAC,GAAGb,GAAGvjK,IAAG,EAAG69G,GAAG,CAAC,IAAI,IAAI3+F,EAAEmkJ,GAAGnpK,OAAO,EAAEglB,EAAEukJ,IAAIJ,GAAGnkJ,GAAGiB,GAAGmlD,EAAEnlD,IAAIjB,IAAImkJ,GAAGniJ,OAAOhC,EAAE,EAAE,EAAEomD,EAAE,MAAM+9F,GAAGtiK,KAAKukE,GAAGk+F,KAAKA,IAAG,EAAGa,GAAGN,IAAI,CAAC,CAAC,IAAIj9F,GAAG,UAAU7X,GAAG,GAAG9xD,OAAO2pE,GAAG,aAAaw9F,GAAG,GAAGnnK,OAAO2pE,GAAG,WAAWy9F,GAAG,GAAGpnK,OAAO2pE,GAAG,YAAY,SAAS09F,GAAGl/F,EAAEtlE,GAAG,OAAOykK,GAAGn/F,EAAE,KAAK,CAACmmC,MAAM,QAAQ,CAAC,IAAIi5D,GAAG,CAAC,EAAE,SAASD,GAAGvlJ,EAAE4d,EAAEu/B,GAAG,IAAIriE,OAAE,IAASqiE,EAAEiJ,EAAEjJ,EAAEp9C,EAAEjlB,EAAE+gB,UAAUogB,EAAEnhC,EAAE6I,KAAKo0D,EAAEj9D,EAAEyxG,MAAMj4C,OAAE,IAASyD,EAAE,MAAMA,EAAEj9D,EAAE2qK,QAAQ3qK,EAAE4qK,UAAU,IAAIxlJ,EAAE6c,EAAEykG,EAAE+4B,GAAG9pI,EAAE,SAAS21C,EAAEtlE,EAAEkf,QAAG,IAASA,IAAIA,EAAE,MAAM,IAAI4d,EAAE6hH,GAAGr5E,EAAE,KAAKpmD,EAAEwhH,EAAE1gI,GAAG,OAAOm7B,GAAG2B,GAAGA,EAAE2+H,QAAQ3+H,EAAE2+H,OAAOE,IAAIT,SAASp+H,CAAC,EAAEniC,GAAE,EAAGy2D,GAAE,EAAG,GAAGqrG,GAAGv9I,IAAIE,EAAE,WAAW,OAAOF,EAAEzmB,KAAK,EAAEkC,EAAEwiK,GAAGj+I,IAAI+9I,GAAG/9I,IAAIE,EAAE,WAAW,OAAOF,EAAEu8I,OAAOE,IAAIT,SAASh8I,CAAC,EAAEic,GAAE,GAAIn7B,EAAEkf,IAAIkyC,GAAE,EAAGz2D,EAAEukB,EAAE2oB,MAAK,SAAUy9B,GAAG,OAAO23F,GAAG33F,IAAI63F,GAAG73F,EAAG,IAAGlmD,EAAE,WAAW,OAAOF,EAAElZ,KAAI,SAAUs/D,GAAG,OAAOm3F,GAAGn3F,GAAGA,EAAE7sE,MAAMwkK,GAAG33F,IAAIA,EAAEm2F,OAAOE,IAAIT,SAAS+D,GAAG35F,IAAI7+D,EAAE6+D,GAAG31C,EAAE21C,EAAEg/F,SAAI,CAAO,GAAE,GAAGllJ,EAAE3Y,EAAEyY,GAAG4d,EAAE,WAAW,OAAOnN,EAAEzQ,EAAEolJ,GAAG,EAAE,WAAW,IAAI5jC,IAAIA,EAAEwjC,aAAa,OAAOjoI,GAAGA,IAAItM,EAAEzQ,EAAE4nD,GAAG,CAAC5lC,GAAG,EAAEu9F,EAAE3hG,GAAG3B,EAAE,CAAC,IAAI6qD,EAAE5mE,EAAEA,EAAE,WAAW,OAAO6/I,GAAGj5E,IAAI,CAAC,CAAC,IAAI9kD,EAAE,SAASokC,GAAGrpC,EAAEmvD,EAAEy5E,OAAO,WAAWl1I,EAAE21C,EAAEi/F,GAAG,CAAC,EAAE,GAAGrrB,KAAK,OAAOh4G,EAAEu9F,EAAE3hG,EAAE7d,GAAG0Q,EAAEmN,EAAEmyB,GAAG,CAAC7vC,IAAIgyC,EAAE,QAAG,EAAOlwB,IAAI9hB,IAAIq/G,EAAE,IAAIrzC,EAAE,IAAI05E,GAAGrL,GAAGr6I,EAAEq/G,EAAE,CAAC9b,MAAK,IAAKv3B,EAAEg5E,WAAWtnI,EAAE,IAAI0C,EAAE4xB,EAAE,GAAGszG,GAAG,OAAOt5E,EAAEq3E,IAAI,WAAW,GAAGr3E,EAAEzkC,OAAO,GAAG7pB,EAAE,CAAC,IAAIwoC,EAAE8lB,EAAE17D,OAAOyL,GAAGxgC,IAAIy2D,EAAEkU,EAAEz9B,MAAK,SAAUy9B,EAAEtlE,GAAG,OAAOk+H,EAAE54D,EAAE9lC,EAAEx/B,GAAI,IAAGk+H,EAAE54D,EAAE9lC,OAAOvD,GAAGA,IAAItM,EAAEmN,EAAEmyB,GAAG,CAACqW,EAAE9lC,IAAIklI,QAAG,EAAOllI,EAAE0B,IAAI1B,EAAE8lC,EAAE,MAAM8lB,EAAE17D,KAAK,EAAE,SAAS8jC,EAAE43B,EAAEioB,OAAOjoB,EAAEq3E,IAAI,SAASjvG,GAAG43B,EAAE3/D,MAAK,EAAG2/D,EAAEioB,OAAO,WAAW,OAAO8wD,GAAG/4E,EAAE,GAAGA,EAAEioB,OAAO,WAAW,GAAGqtB,GAAGA,IAAI+4B,KAAK/4B,EAAEujC,WAAW,CAAC,IAAI3+F,EAAEo7D,EAAEqkC,eAAerkC,EAAEqkC,aAAa,IAAIz/F,EAAE/oE,QAAQ6uF,GAAG,GAAG9lB,EAAEvkE,KAAKqqF,EAAE,MAAM+4E,GAAG/4E,EAAE,EAAEtuD,EAAE7d,EAAEmsE,EAAEq3E,MAAMjjI,EAAE4rD,EAAE17D,MAAM,SAAS8jC,GAAGktE,EAAEA,EAAE5X,MAAM,gBAAe,WAAY,OAAO19B,EAAE17D,KAAM,IAAG07D,EAAE17D,MAAM,WAAW07D,EAAEs3E,UAAU,CAAC,CAAC,SAASsC,GAAG1/F,GAAG,IAAItlE,EAAEslE,EAAE2/F,UAAU/lJ,EAAEomD,EAAEj+D,SAASi+D,EAAEj+D,QAAQ49J,UAAU,OAAO/lJ,IAAIlf,EAAEslE,EAAE2/F,UAAU3sK,OAAOo0F,OAAOxtE,GAAGlf,CAAC,CAAC,SAASklK,GAAG5/F,EAAEtlE,EAAEkf,GAAGm8I,KAAK,IAAI,GAAGr7J,EAAE,IAAI,IAAI88B,EAAE98B,EAAE88B,EAAEA,EAAEz1B,SAAS,CAAC,IAAIg1D,EAAEv/B,EAAE1/B,SAAS+nK,cAAc,GAAG9oG,EAAE,IAAI,IAAIriE,EAAE,EAAEA,EAAEqiE,EAAEniE,OAAOF,IAAI,IAAI,IAAG,IAAKqiE,EAAEriE,GAAGQ,KAAKsiC,EAAEwoC,EAAEtlE,EAAEkf,GAAG,MAAM,CAAC,MAAMomD,GAAG8/F,GAAG9/F,EAAExoC,EAAE,qBAAqB,CAAC,CAACsoI,GAAG9/F,EAAEtlE,EAAEkf,EAAE,CAAC,QAAQo8I,IAAI,CAAC,CAAC,SAAS3c,GAAGr5E,EAAEtlE,EAAEkf,EAAE4d,EAAEu/B,GAAG,IAAIriE,EAAE,KAAKA,EAAEklB,EAAEomD,EAAEnlE,MAAMH,EAAEkf,GAAGomD,EAAE9qE,KAAKwF,MAAMhG,EAAE6iK,QAAQz9I,EAAEplB,KAAKA,EAAEqrK,WAAWrrK,EAAEi+J,OAAM,SAAU3yF,GAAG,OAAO4/F,GAAG5/F,EAAExoC,EAAEu/B,EAAE,mBAAoB,IAAGriE,EAAEqrK,UAAS,EAAG,CAAC,MAAM//F,GAAG4/F,GAAG5/F,EAAExoC,EAAEu/B,EAAE,CAAC,OAAOriE,CAAC,CAAC,SAASorK,GAAG9/F,EAAEtlE,EAAEkf,GAAG,GAAG4/G,EAAE05B,aAAa,IAAI,OAAO15B,EAAE05B,aAAah+J,KAAK,KAAK8qE,EAAEtlE,EAAEkf,EAAE,CAAC,MAAMlf,GAAGA,IAAIslE,GAAGggG,GAAGtlK,EAAE,CAACslK,GAAGhgG,EAAE,CAAC,SAASggG,GAAGhgG,EAAEtlE,EAAEkf,GAAG,IAAI26D,GAAG,oBAAoBluD,QAAQ,MAAM25C,EAAE35C,QAAQ7J,MAAMwjD,EAAE,CAAC,IAAIigG,GAAGC,IAAG,EAAGC,GAAG,GAAGC,IAAG,EAAG,SAASC,KAAKD,IAAG,EAAG,IAAIpgG,EAAEmgG,GAAGr/J,MAAM,GAAGq/J,GAAGvrK,OAAO,EAAE,IAAI,IAAI8F,EAAE,EAAEA,EAAEslE,EAAEprE,OAAO8F,IAAIslE,EAAEtlE,IAAI,CAAC,GAAG,oBAAoBqrB,SAASo3C,GAAGp3C,SAAS,CAAC,IAAIu6I,GAAGv6I,QAAQC,UAAUi6I,GAAG,WAAWK,GAAGtkJ,KAAKqkJ,IAAIhoC,GAAGtiH,WAAWojH,EAAE,EAAE+mC,IAAG,CAAE,MAAM,GAAG3sB,GAAG,oBAAoBgtB,mBAAmBpjG,GAAGojG,mBAAmB,yCAAyCA,iBAAiBx7H,WAAWk7H,GAAG,oBAAoBO,cAAcrjG,GAAGqjG,cAAc,WAAWA,aAAaH,GAAG,EAAE,WAAWtqJ,WAAWsqJ,GAAG,EAAE,MAAM,CAAC,IAAII,GAAG,EAAEC,GAAG,IAAIH,iBAAiBF,IAAIM,GAAGrlK,SAASu6I,eAAe70I,OAAOy/J,KAAKC,GAAGE,QAAQD,GAAG,CAACE,eAAc,IAAKZ,GAAG,WAAWQ,IAAIA,GAAG,GAAG,EAAEE,GAAGxlK,KAAK6F,OAAOy/J,GAAG,EAAEP,IAAG,CAAE,CAAC,SAASnB,GAAG/+F,EAAEtlE,GAAG,IAAIkf,EAAE,GAAGumJ,GAAG1kK,MAAK,WAAY,GAAGukE,EAAE,IAAIA,EAAE9qE,KAAKwF,EAAE,CAAC,MAAMslE,GAAG4/F,GAAG5/F,EAAEtlE,EAAE,WAAW,MAAMkf,GAAGA,EAAElf,EAAG,IAAG0lK,KAAKA,IAAG,EAAGH,OAAOjgG,GAAG,oBAAoBj6C,QAAQ,OAAO,IAAIA,SAAQ,SAAUi6C,GAAGpmD,EAAEomD,CAAE,GAAE,CAAC,SAAS8gG,GAAG9gG,GAAG,OAAO,SAAStlE,EAAEkf,GAAG,QAAG,IAASA,IAAIA,EAAEu6I,IAAIv6I,EAAE,OAAO,SAASomD,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAEwoC,EAAEloE,SAAS0/B,EAAE98B,GAAGqmK,GAAGvpI,EAAE98B,GAAGkf,EAAE,CAAhD,CAAkDA,EAAEomD,EAAEtlE,EAAE,CAAC,CAAC,IAAIsmK,GAAGF,GAAG,eAAeG,GAAGH,GAAG,WAAWI,GAAGJ,GAAG,gBAAgBK,GAAGL,GAAG,WAAWM,GAAGN,GAAG,iBAAiBO,GAAGP,GAAG,aAAaQ,GAAGR,GAAG,aAAaS,GAAGT,GAAG,eAAeU,GAAGV,GAAG,kBAAkBW,GAAGX,GAAG,iBAAiBY,GAAGZ,GAAG,mBAAmBa,GAAGb,GAAG,iBAAqBc,GAAG,SAAaC,GAAG7uK,OAAO61I,OAAO,CAACkuB,UAAU,KAAKxhK,QAAQqsK,GAAGE,gBAAgB,SAAS9hG,GAAG,OAAOA,CAAC,EAAE19D,IAAI,SAAS09D,GAAG,OAAOi4F,GAAGj4F,GAAE,EAAG,EAAE+hG,WAAW,SAAS/hG,GAAG,OAAOi4F,GAAGj4F,GAAE,EAAG,EAAEgiG,MAAM7K,GAAG8K,MAAM9J,GAAG+J,OAAO,SAASliG,GAAG,IAAIpmD,EAAElf,EAAEslE,GAAG,IAAIxrE,MAAMwrE,EAAEprE,QAAQ,CAAC,EAAE,IAAI,IAAI4iC,KAAKwoC,EAAEpmD,EAAE4d,GAAG2gI,GAAGn4F,EAAExoC,GAAG,OAAO5d,CAAC,EAAEuoJ,MAAM,SAASniG,GAAG,OAAOm3F,GAAGn3F,GAAGA,EAAE7sE,MAAM6sE,CAAC,EAAEoiG,UAAU,SAASpiG,GAAG,GAAG23F,GAAG33F,GAAG,OAAOA,EAAE,IAAI,IAAItlE,EAAE,CAAC,EAAEkf,EAAE5mB,OAAO4L,KAAKohE,GAAGxoC,EAAE,EAAEA,EAAE5d,EAAEhlB,OAAO4iC,IAAI0gI,GAAGx9J,EAAEslE,EAAEpmD,EAAE4d,IAAI,OAAO98B,CAAC,EAAE2nK,UAAU,SAASriG,GAAG,IAAItlE,EAAE,IAAI+6J,GAAG77I,EAAEomD,GAAE,WAAYtlE,EAAEk7J,QAAS,IAAE,WAAYl7J,EAAEo7J,QAAS,IAAGt+H,EAAE5d,EAAEwQ,IAAI2sC,EAAEn9C,EAAEsa,IAAIx/B,EAAE,CAAC,SAAIvB,GAAQ,OAAOqkC,GAAG,EAAE,SAAIrkC,CAAM6sE,GAAGjJ,EAAEiJ,EAAE,GAAG,OAAO6uE,EAAEn6I,EAAEsjK,IAAG,GAAItjK,CAAC,EAAE4tK,WAAW,SAAStiG,GAAGA,EAAEq2F,KAAKr2F,EAAEq2F,IAAIP,QAAQ,EAAEyM,SAAS,SAASviG,GAAG,OAAO03F,GAAG13F,GAAE,GAAIA,CAAC,EAAEwiG,WAAW7K,GAAG8K,WAAWnL,GAAGoL,UAAU7K,GAAG8K,QAAQ,SAAS3iG,GAAG,OAAO23F,GAAG33F,IAAIs3F,GAAGt3F,EAAE,EAAE4iG,gBAAgBnL,GAAGoL,QAAQ,SAAS7iG,GAAG,OAAOhtE,OAAOw/I,aAAaxyE,IAAI6uE,EAAE7uE,EAAE,YAAW,GAAIA,CAAC,EAAE8iG,MAAM,SAAS9iG,EAAEtlE,GAAG,IAAIkf,EAAElf,GAAGA,EAAEk9J,QAAQ,OAAOh+I,EAAEomD,EAAEpmD,GAAGlf,CAAC,EAAE5E,SAASwiK,GAAGyK,gBAAgB,SAAS/iG,GAAG,OAAOu4F,GAAGv4F,GAAE,EAAG,EAAEt/C,SAAS,SAASs/C,EAAEtlE,GAAG,IAAIkf,EAAE4d,EAAEu/B,EAAE51D,EAAE6+D,GAAGjJ,GAAGn9C,EAAEomD,EAAExoC,EAAE2hG,IAAIv/G,EAAEomD,EAAE51C,IAAIoN,EAAEwoC,EAAE9rC,KAAK,IAAIx/B,EAAEk/I,KAAK,KAAK,IAAI4rB,GAAGrL,GAAGv6I,EAAEu/G,EAAE,CAAC9b,MAAK,IAAK1jG,EAAE,CAACqpJ,OAAOtuK,EAAE,SAAIvB,GAAQ,OAAOuB,GAAGA,EAAEmsH,OAAOnsH,EAAE69G,WAAWkjD,GAAGliJ,QAAQ7e,EAAEkhK,SAASlhK,EAAEvB,OAAOymB,GAAG,EAAE,SAAIzmB,CAAM6sE,GAAGxoC,EAAEwoC,EAAE,GAAG,OAAO6uE,EAAEl1H,EAAEq+I,IAAG,GAAInpB,EAAEl1H,EAAE,iBAAiBo9C,GAAGp9C,CAAC,EAAE/gB,MAAM,SAASonE,EAAEtlE,EAAEkf,GAAG,OAAOulJ,GAAGn/F,EAAEtlE,EAAEkf,EAAE,EAAEqpJ,YAAY,SAASjjG,EAAEtlE,GAAG,OAAOykK,GAAGn/F,EAAE,KAAKtlE,EAAE,EAAEwoK,gBAAgBhE,GAAGiE,gBAAgB,SAASnjG,EAAEtlE,GAAG,OAAOykK,GAAGn/F,EAAE,KAAK,CAACmmC,MAAM,QAAQ,EAAEi9D,YAAYtG,GAAGuG,YAAY,SAASrjG,GAAG,OAAO,IAAI88F,GAAG98F,EAAE,EAAEsjG,eAAe,SAAStjG,GAAGs8F,IAAIA,GAAGW,SAASxhK,KAAKukE,EAAE,EAAEujG,gBAAgBlG,GAAGrsI,QAAQ,SAASgvC,EAAEtlE,GAAGy5J,KAAKuL,GAAGvL,IAAIn0F,GAAGtlE,EAAE,EAAEghH,OAAO,SAAS17C,EAAEtlE,EAAEkf,QAAG,IAASA,IAAIA,GAAE,GAAI,IAAI4d,EAAE28H,GAAG,GAAG38H,EAAE,CAAC,IAAIu/B,EAAEv/B,EAAEz1B,SAASy1B,EAAEz1B,QAAQ49J,UAAU,GAAG5oG,GAAGiJ,KAAKjJ,EAAE,OAAOA,EAAEiJ,GAAG,GAAGllE,UAAUlG,OAAO,EAAE,OAAOglB,GAAGzY,EAAEzG,GAAGA,EAAExF,KAAKsiC,GAAG98B,CAAC,CAAC,EAAErF,EAAE,SAAS2qE,EAAEtlE,EAAEkf,GAAG,OAAOy/I,GAAGlF,GAAGn0F,EAAEtlE,EAAEkf,EAAE,GAAE,EAAG,EAAE4pJ,mBAAmB,WAAW,OAAOrP,IAAI,CAACqG,MAAMrG,GAAG,EAAEsP,SAAS,WAAW,OAAOtH,KAAKjwB,KAAK,EAAEw3B,SAAS,WAAW,OAAOvH,KAAK1gG,KAAK,EAAEkoG,aAAa,WAAW,OAAOxH,KAAKx+J,SAAS,EAAEimK,cAAc,SAAS5jG,EAAEpmD,GAAG,IAAI4d,EAAE98B,EAAEslE,GAAGA,EAAEzgE,QAAO,SAAUygE,EAAEtlE,GAAG,OAAOslE,EAAEtlE,GAAG,CAAC,EAAEslE,CAAE,GAAE,CAAC,GAAGA,EAAE,IAAI,IAAIjJ,KAAKn9C,EAAE,CAAC,IAAIllB,EAAE8iC,EAAEu/B,GAAGriE,EAAEgG,EAAEhG,IAAIyM,EAAEzM,GAAG8iC,EAAEu/B,GAAG,CAACnhE,KAAKlB,EAAEV,QAAQ4lB,EAAEm9C,IAAIriE,EAAEV,QAAQ4lB,EAAEm9C,GAAG,OAAOriE,IAAI8iC,EAAEu/B,GAAG,CAAC/iE,QAAQ4lB,EAAEm9C,IAAI,CAAC,OAAOv/B,CAAC,EAAEqsI,SAAS9E,GAAG7qI,IAAImjI,GAAGyM,IAAItM,GAAGuM,aAAa,SAASrpK,GAAG,OAAOslE,CAAC,EAAEgkG,WAAW,SAAShkG,GAAG,GAAGuU,EAAE,CAAC,IAAI75E,EAAEy5J,GAAGz5J,GAAGwkK,IAAG,WAAY,IAAItlJ,EAAElf,EAAEhD,IAAI8/B,EAAEwoC,EAAEtlE,EAAEA,EAAEupK,aAAa,GAAGrqJ,GAAG,IAAIA,EAAEknE,SAAS,CAAC,IAAI/pB,EAAEn9C,EAAEk1H,MAAM,IAAI,IAAIp6I,KAAK8iC,EAAEu/B,EAAEmtG,YAAY,KAAKrsK,OAAOnD,GAAG8iC,EAAE9iC,GAAG,CAAE,GAAE,CAAC,EAAEyvK,qBAAqB,SAASnkG,GAAG7+D,EAAE6+D,KAAKA,EAAE,CAACokG,OAAOpkG,IAAI,IAAItlE,EAAEslE,EAAEokG,OAAOxqJ,EAAEomD,EAAEqkG,iBAAiB7sI,EAAEwoC,EAAEskG,eAAevtG,EAAEiJ,EAAEqmC,MAAM3xG,OAAE,IAASqiE,EAAE,IAAIA,EAAEp9C,EAAEqmD,EAAE61C,QAAQ71C,EAAEukG,YAAY,IAAI1uI,EAAEmqC,EAAEwkG,QAAQ7yG,EAAE,KAAKzD,EAAE,EAAEp0C,EAAE,WAAW,IAAIkmD,EAAE,OAAOrO,IAAIqO,EAAErO,EAAEj3D,IAAIi4J,OAAM,SAAU3yF,GAAG,GAAGA,EAAEA,aAAa3C,MAAM2C,EAAE,IAAI3C,MAAMr8D,OAAOg/D,IAAInqC,EAAE,OAAO,IAAI9P,SAAQ,SAAUrrB,EAAEkf,GAAGic,EAAEmqC,GAAE,WAAY,OAAOtlE,GAAGwzD,IAAIyD,EAAE,KAAK73C,KAAM,IAAE,WAAY,OAAOF,EAAEomD,EAAG,GAAE9R,EAAE,EAAG,IAAG,MAAM8R,CAAE,IAAGhkD,MAAK,SAAUthB,GAAG,OAAOslE,IAAIrO,GAAGA,EAAEA,GAAGj3D,IAAIA,EAAE3G,YAAY,WAAW2G,EAAExG,OAAOwzF,gBAAgBhtF,EAAEA,EAAE1G,SAAS0G,EAAG,IAAG,EAAE,OAAO,WAAW,MAAM,CAACoD,UAAUgc,IAAIusF,MAAM3xG,EAAEmhH,QAAQl8F,EAAE6C,MAAMgb,EAAE9b,QAAQ9B,EAAE,CAAC,EAAE6qJ,cAAczD,GAAG0D,UAAUzD,GAAG0D,eAAezD,GAAG0D,UAAUzD,GAAG0D,gBAAgBzD,GAAG0D,YAAYzD,GAAG0D,YAAYzD,GAAG0D,cAAczD,GAAG0D,iBAAiBzD,GAAG0D,gBAAgBzD,GAAG0D,kBAAkBzD,GAAG0D,gBAAgB,SAASplG,EAAEtlE,QAAG,IAASA,IAAIA,EAAEy5J,IAAIwN,GAAG3hG,EAAEtlE,EAAE,IAAI2qK,GAAG,IAAIrR,GAAG,SAAS2F,GAAG35F,GAAG,OAAOslG,GAAGtlG,EAAEqlG,IAAIA,GAAGjpH,QAAQ4jB,CAAC,CAAC,SAASslG,GAAGtlG,EAAEpmD,GAAG,IAAI4d,EAAEu/B,EAAEriE,EAAEgG,EAAEslE,GAAG,MAAMtrE,IAAIilB,EAAEqmD,IAAIA,EAAEk3F,UAAUlkK,OAAOuyK,SAASvlG,IAAIA,aAAaq0F,IAAI,CAAC,GAAGr0F,EAAEm2F,OAAO,CAAC,IAAIh1J,EAAE6+D,EAAEm2F,OAAOE,IAAIx7I,GAAG,GAAGjB,EAAEgvB,IAAIznC,GAAG,OAAOyY,EAAE8E,IAAIvd,EAAE,CAAC,GAAGzM,EAAE,IAAI8iC,EAAEwoC,EAAEprE,OAAO4iC,KAAK8tI,GAAGtlG,EAAExoC,GAAG5d,QAAQ,GAAGu9I,GAAGn3F,GAAGslG,GAAGtlG,EAAE7sE,MAAMymB,QAAQ,IAAI4d,GAAGu/B,EAAE/jE,OAAO4L,KAAKohE,IAAIprE,OAAO4iC,KAAK8tI,GAAGtlG,EAAEjJ,EAAEv/B,IAAI5d,EAAE,CAAC,CAAC,IAAI4rJ,GAAG,EAAEhG,GAAG,WAAW,SAASx/F,EAAEA,EAAEtlE,EAAEkf,EAAE4d,EAAEu/B,IAAI,SAASiJ,EAAEtlE,QAAG,IAASA,IAAIA,EAAE4hK,IAAI5hK,GAAGA,EAAE2mD,QAAQ3mD,EAAEsiK,QAAQvhK,KAAKukE,EAAE,CAA/D,CAAiE9pE,KAAKomK,KAAKA,GAAGz1C,IAAIy1C,GAAGt8F,EAAEA,EAAEo0F,YAAO,IAASl+J,KAAK6nH,GAAG/9C,IAAIjJ,IAAIiJ,EAAE0+F,SAASxoK,MAAMshC,GAAGthC,KAAKqH,OAAOi6B,EAAEj6B,KAAKrH,KAAKspD,OAAOhoB,EAAEgoB,KAAKtpD,KAAKmnH,OAAO7lF,EAAE6lF,KAAKnnH,KAAKuvK,OAAOjuI,EAAEiuI,KAAKvvK,KAAKonE,OAAO9lC,EAAE8lC,QAAQpnE,KAAKqH,KAAKrH,KAAKspD,KAAKtpD,KAAKmnH,KAAKnnH,KAAKuvK,MAAK,EAAGvvK,KAAK0uB,GAAGhL,EAAE1jB,KAAK2kB,KAAK2qJ,GAAGtvK,KAAKmrD,QAAO,EAAGnrD,KAAKiwB,MAAK,EAAGjwB,KAAK2qH,MAAM3qH,KAAKmnH,KAAKnnH,KAAKwvK,KAAK,GAAGxvK,KAAKyvK,QAAQ,GAAGzvK,KAAK0vK,OAAO,IAAI5R,GAAG99J,KAAK2vK,UAAU,IAAI7R,GAAG99J,KAAK8nH,WAAW,GAAG78G,EAAEzG,GAAGxE,KAAK+nH,OAAOvjH,GAAGxE,KAAK+nH,OAAO,SAASj+C,GAAG,IAAI05D,EAAE3kH,KAAKirD,GAAG,CAAC,IAAItlE,EAAEslE,EAAErhE,MAAM,KAAK,OAAO,SAASqhE,GAAG,IAAI,IAAIpmD,EAAE,EAAEA,EAAElf,EAAE9F,OAAOglB,IAAI,CAAC,IAAIomD,EAAE,OAAOA,EAAEA,EAAEtlE,EAAEkf,GAAG,CAAC,OAAOomD,CAAC,CAAC,CAAC,CAA9H,CAAgItlE,GAAGxE,KAAK+nH,SAAS/nH,KAAK+nH,OAAOkb,IAAIjjI,KAAK/C,MAAM+C,KAAKmnH,UAAK,EAAOnnH,KAAKk0B,KAAK,CAAC,OAAO41C,EAAE3rE,UAAU+1B,IAAI,WAAW,IAAI41C,EAAE+1F,GAAG7/J,MAAM,IAAIwE,EAAExE,KAAK6nH,GAAG,IAAI/9C,EAAE9pE,KAAK+nH,OAAO/oH,KAAKwF,EAAEA,EAAE,CAAC,MAAMslE,GAAG,IAAI9pE,KAAKspD,KAAK,MAAMwgB,EAAE4/F,GAAG5/F,EAAEtlE,EAAE,uBAAuB7C,OAAO3B,KAAK8nH,WAAW,KAAK,CAAC,QAAQ9nH,KAAKqH,MAAMo8J,GAAG35F,GAAGg2F,KAAK9/J,KAAK4vK,aAAa,CAAC,OAAO9lG,CAAC,EAAEA,EAAE3rE,UAAUwhK,OAAO,SAAS71F,GAAG,IAAItlE,EAAEslE,EAAEnlD,GAAG3kB,KAAK2vK,UAAUj9H,IAAIluC,KAAKxE,KAAK2vK,UAAUnnJ,IAAIhkB,GAAGxE,KAAKyvK,QAAQlqK,KAAKukE,GAAG9pE,KAAK0vK,OAAOh9H,IAAIluC,IAAIslE,EAAE01F,OAAOx/J,MAAM,EAAE8pE,EAAE3rE,UAAUyxK,YAAY,WAAW,IAAI,IAAI9lG,EAAE9pE,KAAKwvK,KAAK9wK,OAAOorE,KAAK,CAAC,IAAItlE,EAAExE,KAAKwvK,KAAK1lG,GAAG9pE,KAAK2vK,UAAUj9H,IAAIluC,EAAEmgB,KAAKngB,EAAEi7J,UAAUz/J,KAAK,CAAC,IAAI0jB,EAAE1jB,KAAK0vK,OAAO1vK,KAAK0vK,OAAO1vK,KAAK2vK,UAAU3vK,KAAK2vK,UAAUjsJ,EAAE1jB,KAAK2vK,UAAUzpH,QAAQxiC,EAAE1jB,KAAKwvK,KAAKxvK,KAAKwvK,KAAKxvK,KAAKyvK,QAAQzvK,KAAKyvK,QAAQ/rJ,EAAE1jB,KAAKyvK,QAAQ/wK,OAAO,CAAC,EAAEorE,EAAE3rE,UAAU05G,OAAO,WAAW73G,KAAKmnH,KAAKnnH,KAAK2qH,OAAM,EAAG3qH,KAAKuvK,KAAKvvK,KAAKinK,MAAM0B,GAAG3oK,KAAK,EAAE8pE,EAAE3rE,UAAU8oK,IAAI,WAAW,GAAGjnK,KAAKmrD,OAAO,CAAC,IAAI2e,EAAE9pE,KAAKk0B,MAAM,GAAG41C,IAAI9pE,KAAK/C,OAAOwmB,EAAEqmD,IAAI9pE,KAAKqH,KAAK,CAAC,IAAI7C,EAAExE,KAAK/C,MAAM,GAAG+C,KAAK/C,MAAM6sE,EAAE9pE,KAAKspD,KAAK,CAAC,IAAI5lC,EAAE,yBAAyB/hB,OAAO3B,KAAK8nH,WAAW,KAAKq7B,GAAGnjJ,KAAK0uB,GAAG1uB,KAAK6nH,GAAG,CAAC/9C,EAAEtlE,GAAGxE,KAAK6nH,GAAGnkG,EAAE,MAAM1jB,KAAK0uB,GAAG1vB,KAAKgB,KAAK6nH,GAAG/9C,EAAEtlE,EAAE,CAAC,CAAC,EAAEslE,EAAE3rE,UAAUk+G,SAAS,WAAWr8G,KAAK/C,MAAM+C,KAAKk0B,MAAMl0B,KAAK2qH,OAAM,CAAE,EAAE7gD,EAAE3rE,UAAUuhK,OAAO,WAAW,IAAI,IAAI51F,EAAE9pE,KAAKwvK,KAAK9wK,OAAOorE,KAAK9pE,KAAKwvK,KAAK1lG,GAAG41F,QAAQ,EAAE51F,EAAE3rE,UAAU+oK,SAAS,WAAW,GAAGlnK,KAAK6nH,KAAK7nH,KAAK6nH,GAAGgoD,mBAAmBnqI,EAAE1lC,KAAK6nH,GAAGq2C,OAAO4I,QAAQ9mK,MAAMA,KAAKmrD,OAAO,CAAC,IAAI,IAAI2e,EAAE9pE,KAAKwvK,KAAK9wK,OAAOorE,KAAK9pE,KAAKwvK,KAAK1lG,GAAG21F,UAAUz/J,MAAMA,KAAKmrD,QAAO,EAAGnrD,KAAKqpK,QAAQrpK,KAAKqpK,QAAQ,CAAC,EAAEv/F,CAAC,CAAlkE,GAAskEgmG,GAAG,CAACvyJ,YAAW,EAAGC,cAAa,EAAG0W,IAAI+uG,EAAEjlG,IAAIilG,GAAG,SAAS8sC,GAAGjmG,EAAEtlE,EAAEkf,GAAGosJ,GAAG57I,IAAI,WAAW,OAAOl0B,KAAKwE,GAAGkf,EAAE,EAAEosJ,GAAG9xI,IAAI,SAAS8rC,GAAG9pE,KAAKwE,GAAGkf,GAAGomD,CAAC,EAAEhtE,OAAOC,eAAe+sE,EAAEpmD,EAAEosJ,GAAG,CAAC,SAASnkC,GAAG7hE,GAAG,IAAIpmD,EAAEomD,EAAEloE,SAAS,GAAG8hB,EAAElkB,OAAO,SAASsqE,EAAEtlE,GAAG,IAAIkf,EAAEomD,EAAEloE,SAASC,WAAW,CAAC,EAAEy/B,EAAEwoC,EAAEkmG,OAAOzO,GAAG,CAAC,GAAG1gG,EAAEiJ,EAAEloE,SAASquK,UAAU,IAAMnmG,EAAEj+D,SAAW00J,IAAG,GAAI,IAAIt1J,EAAE,SAASzM,GAAGqiE,EAAEt7D,KAAK/G,GAAG,IAAIyM,EAAEilK,GAAG1xK,EAAEgG,EAAEkf,EAAEomD,GAAGg3F,GAAGx/H,EAAE9iC,EAAEyM,OAAE,GAAO,GAAIzM,KAAKsrE,GAAGimG,GAAGjmG,EAAE,SAAStrE,EAAE,EAAE,IAAI,IAAIilB,KAAKjf,EAAEyG,EAAEwY,GAAG88I,IAAG,EAAG,CAAtO,CAAwOz2F,EAAEpmD,EAAElkB,OAAO,SAASsqE,GAAG,IAAItlE,EAAEslE,EAAEloE,SAAS8hB,EAAElf,EAAEnE,MAAM,GAAGqjB,EAAE,CAAC,IAAI4d,EAAEwoC,EAAEo8F,cAAcT,GAAG37F,GAAGvV,GAAGuV,GAAG+1F,KAAK,IAAIh/F,EAAEsiF,GAAGz/H,EAAE,KAAK,CAAComD,EAAEkmG,QAAQzO,GAAG,CAAC,GAAGjgI,GAAGwoC,EAAE,SAAS,GAAGg2F,KAAKvrG,KAAKtpD,EAAE41D,GAAGr8D,EAAE3E,OAAOghE,OAAO,GAAGp9C,EAAEo9C,GAAG,GAAGiJ,EAAEqmG,YAAYtvG,EAAEA,EAAEuvG,MAAM,CAAC,IAAI5xK,EAAEsrE,EAAEikG,YAAY,CAAC,EAAE,IAAI,IAAIpuI,KAAKkhC,EAAE,UAAUlhC,GAAGqiI,GAAGxjK,EAAEqiE,EAAElhC,EAAE,MAAM,IAAI,IAAIA,KAAKkhC,EAAEyjE,EAAE3kG,IAAIqiI,GAAGl4F,EAAEjJ,EAAElhC,EAAE,CAAC,CAA3S,CAA6SmqC,GAAGpmD,EAAE7gB,SAAS,SAASinE,EAAEtlE,GAAG,IAAI,IAAIkf,KAAKomD,EAAEloE,SAASpC,MAAMgF,EAAEslE,EAAEpmD,GAAG,mBAAmBlf,EAAEkf,GAAGu/G,EAAEmB,EAAE5/H,EAAEkf,GAAGomD,EAAE,CAAtF,CAAwFA,EAAEpmD,EAAE7gB,SAAS6gB,EAAEze,MAAM,SAAS6kE,GAAG,IAAItlE,EAAEslE,EAAEloE,SAASqD,KAA4Hw2D,EAAvHj3D,EAAEslE,EAAEumG,MAAMplK,EAAEzG,GAAG,SAASslE,EAAEtlE,GAAGq7J,KAAK,IAAI,OAAO/1F,EAAE9qE,KAAKwF,EAAEA,EAAE,CAAC,MAAMslE,GAAG,OAAO4/F,GAAG5/F,EAAEtlE,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQs7J,IAAI,CAAC,CAA3F,CAA6Ft7J,EAAEslE,GAAGtlE,GAAG,CAAC,KAASA,EAAE,CAAC,GAAG,IAAIkf,EAAE5mB,OAAO4L,KAAKlE,GAAG88B,EAAEwoC,EAAEloE,SAASpC,MAAMsqE,EAAEloE,SAASiB,QAAuB,IAAf,IAAIg+D,EAAEn9C,EAAEhlB,OAAYmiE,KAAK,CAAC,IAAIriE,EAAEklB,EAAEm9C,GAAGv/B,GAAG0C,EAAE1C,EAAE9iC,IAAI8lI,EAAE9lI,IAAIuxK,GAAGjmG,EAAE,QAAQtrE,EAAE,CAAC,IAAIilB,EAAEs9I,GAAGv8J,GAAGif,GAAGA,EAAEm9I,SAAS,CAAjU,CAAmU92F,OAAO,CAAC,IAAIxoC,EAAEy/H,GAAGj3F,EAAEumG,MAAM,CAAC,GAAG/uI,GAAGA,EAAEs/H,SAAS,CAACl9I,EAAE8G,UAAU,SAASs/C,EAAEtlE,GAAG,IAAIkf,EAAEomD,EAAEwmG,kBAAkBxzK,OAAOo0F,OAAO,MAAM5vD,EAAEo8G,KAAK,IAAI,IAAI78E,KAAKr8D,EAAE,CAAC,IAAIhG,EAAEgG,EAAEq8D,GAAGp9C,EAAExY,EAAEzM,GAAGA,EAAEA,EAAE01B,IAAIoN,IAAI5d,EAAEm9C,GAAG,IAAIyoG,GAAGx/F,EAAErmD,GAAGw/G,EAAEA,EAAEjkD,KAAKne,KAAKiJ,GAAGymG,GAAGzmG,EAAEjJ,EAAEriE,EAAE,CAAC,CAA7J,CAA+JsrE,EAAEpmD,EAAE8G,UAAU9G,EAAEhhB,OAAOghB,EAAEhhB,QAAQ66I,IAAI,SAASzzE,EAAEpmD,GAAG,IAAI,IAAI4d,KAAK5d,EAAE,CAAC,IAAIm9C,EAAEn9C,EAAE4d,GAAG,GAAG98B,EAAEq8D,GAAG,IAAI,IAAIriE,EAAE,EAAEA,EAAEqiE,EAAEniE,OAAOF,IAAIgyK,GAAG1mG,EAAExoC,EAAEu/B,EAAEriE,SAASgyK,GAAG1mG,EAAExoC,EAAEu/B,EAAE,CAAC,CAAxG,CAA0GiJ,EAAEpmD,EAAEhhB,MAAM,CAAC,IAAIs8E,GAAG,CAACmoC,MAAK,GAAI,SAASopD,GAAGzmG,EAAEtlE,EAAEkf,GAAG,IAAI4d,GAAGo8G,KAAKzyI,EAAEyY,IAAIosJ,GAAG57I,IAAIoN,EAAEmvI,GAAGjsK,GAAGksK,GAAGhtJ,GAAGosJ,GAAG9xI,IAAIilG,IAAI6sC,GAAG57I,IAAIxQ,EAAEwQ,IAAIoN,IAAG,IAAK5d,EAAEg0C,MAAM+4G,GAAGjsK,GAAGksK,GAAGhtJ,EAAEwQ,KAAK+uG,EAAE6sC,GAAG9xI,IAAIta,EAAEsa,KAAKilG,GAAGnmI,OAAOC,eAAe+sE,EAAEtlE,EAAEsrK,GAAG,CAAC,SAASW,GAAG3mG,GAAG,OAAO,WAAW,IAAItlE,EAAExE,KAAKswK,mBAAmBtwK,KAAKswK,kBAAkBxmG,GAAG,GAAGtlE,EAAE,OAAOA,EAAEmmH,OAAOnmH,EAAE63G,WAAWkjD,GAAGliJ,QAAQ7Y,EAAEk7J,SAASl7J,EAAEvH,KAAK,CAAC,CAAC,SAASyzK,GAAG5mG,GAAG,OAAO,WAAW,OAAOA,EAAE9qE,KAAKgB,KAAKA,KAAK,CAAC,CAAC,SAASwwK,GAAG1mG,EAAEtlE,EAAEkf,EAAE4d,GAAG,OAAOm6B,EAAE/3C,KAAK4d,EAAE5d,EAAEA,EAAEA,EAAElE,SAAS,iBAAiBkE,IAAIA,EAAEomD,EAAEpmD,IAAIomD,EAAE5nE,OAAOsC,EAAEkf,EAAE4d,EAAE,CAAC,SAASuqG,GAAG/hE,EAAEtlE,GAAG,GAAGslE,EAAE,CAAC,IAAI,IAAIpmD,EAAE5mB,OAAOo0F,OAAO,MAAM5vD,EAAEy8H,GAAGC,QAAQrb,QAAQ74E,GAAGhtE,OAAO4L,KAAKohE,GAAGjJ,EAAE,EAAEA,EAAEv/B,EAAE5iC,OAAOmiE,IAAI,CAAC,IAAIriE,EAAE8iC,EAAEu/B,GAAG,GAAG,WAAWriE,EAAE,CAAC,IAAIilB,EAAEqmD,EAAEtrE,GAAGG,KAAK,GAAG8kB,KAAKjf,EAAEilK,UAAU/lJ,EAAEllB,GAAGgG,EAAEilK,UAAUhmJ,QAAQ,GAAG,YAAYqmD,EAAEtrE,GAAG,CAAC,IAAImhC,EAAEmqC,EAAEtrE,GAAGV,QAAQ4lB,EAAEllB,GAAGyM,EAAE00B,GAAGA,EAAE3gC,KAAKwF,GAAGm7B,CAAC,CAAC,CAAC,CAAC,OAAOjc,CAAC,CAAC,CAAC,IAAI+nH,GAAG,EAAE,SAASklC,GAAG7mG,GAAG,IAAItlE,EAAEslE,EAAE/hE,QAAQ,GAAG+hE,EAAE8mG,MAAM,CAAC,IAAIltJ,EAAEitJ,GAAG7mG,EAAE8mG,OAAO,GAAGltJ,IAAIomD,EAAE+mG,aAAa,CAAC/mG,EAAE+mG,aAAantJ,EAAE,IAAI4d,EAAE,SAASwoC,GAAG,IAAItlE,EAAEkf,EAAEomD,EAAE/hE,QAAQu5B,EAAEwoC,EAAEgnG,cAAc,IAAI,IAAIjwG,KAAKn9C,EAAEA,EAAEm9C,KAAKv/B,EAAEu/B,KAAKr8D,IAAIA,EAAE,CAAC,GAAGA,EAAEq8D,GAAGn9C,EAAEm9C,IAAI,OAAOr8D,CAAC,CAA1G,CAA4GslE,GAAGxoC,GAAGm3G,EAAE3uE,EAAEinG,cAAczvI,IAAI98B,EAAEslE,EAAE/hE,QAAQipK,GAAGttJ,EAAEomD,EAAEinG,gBAAgBxxK,OAAOiF,EAAE8b,WAAW9b,EAAEjF,MAAMuqE,EAAE,CAAC,CAAC,OAAOtlE,CAAC,CAAC,SAASysK,GAAGvtJ,EAAE4d,EAAE9iC,EAAEyM,EAAEwY,GAAG,IAAIkc,EAAE87B,EAAEz7D,KAAKg4D,EAAEv0C,EAAE1b,QAAQi8B,EAAE/4B,EAAE,SAAS00B,EAAE7iC,OAAOo0F,OAAOjmF,IAAIimK,UAAUjmK,GAAG00B,EAAE10B,EAAEA,EAAEA,EAAEimK,WAAW,IAAIttJ,EAAEi9C,EAAE7I,EAAE0zF,WAAWjrH,GAAG7c,EAAE5jB,KAAKiF,KAAKye,EAAE1jB,KAAKR,MAAM8hC,EAAEthC,KAAK81C,SAASt3C,EAAEwB,KAAK4L,OAAOX,EAAEjL,KAAKyH,UAAUic,EAAE+H,IAAIq+C,EAAE9pE,KAAK6vH,WAAWgc,GAAG7zE,EAAEwtD,OAAOv6G,GAAGjL,KAAKg2I,MAAM,WAAW,OAAOv6E,EAAEh7D,QAAQ2kK,GAAGn6J,EAAEyY,EAAE0/I,YAAY3nG,EAAEh7D,OAAOwkK,GAAGzmK,EAAEyM,IAAIwwD,EAAEh7D,MAAM,EAAE3D,OAAOC,eAAeiD,KAAK,cAAc,CAACud,YAAW,EAAG2W,IAAI,WAAW,OAAOkxI,GAAGn6J,EAAEyY,EAAE0/I,YAAYpjK,KAAKg2I,QAAQ,IAAIpyH,IAAI5jB,KAAK4B,SAASo2D,EAAEh4D,KAAKS,OAAOT,KAAKg2I,QAAQh2I,KAAKm0I,aAAaixB,GAAGn6J,EAAEyY,EAAE0/I,YAAYpjK,KAAKS,SAASu3D,EAAEgmF,SAASh+I,KAAKo+I,GAAG,SAASt0E,EAAEpmD,EAAE4d,EAAEu/B,GAAG,IAAIriE,EAAE2kK,GAAGxjI,EAAEmqC,EAAEpmD,EAAE4d,EAAEu/B,EAAEpgC,GAAG,OAAOjiC,IAAIgG,EAAEhG,KAAKA,EAAE+/J,UAAUvmG,EAAEgmF,SAASx/I,EAAE6/J,UAAUpzJ,GAAGzM,CAAC,EAAEwB,KAAKo+I,GAAG,SAASt0E,EAAEtlE,EAAEkf,EAAE4d,GAAG,OAAO6hI,GAAGxjI,EAAEmqC,EAAEtlE,EAAEkf,EAAE4d,EAAEb,EAAE,CAAC,CAAC,SAAS0wI,GAAGrnG,EAAEtlE,EAAEkf,EAAE4d,EAAEu/B,GAAG,IAAIriE,EAAEygK,GAAGn1F,GAAG,OAAOtrE,EAAE6/J,UAAU36I,EAAEllB,EAAE8/J,UAAUh9H,EAAE98B,EAAE1D,QAAQtC,EAAEyG,OAAOzG,EAAEyG,KAAK,CAAC,IAAInE,KAAK0D,EAAE1D,MAAMtC,CAAC,CAAC,SAASysI,GAAGnhE,EAAEtlE,GAAG,IAAI,IAAIkf,KAAKlf,EAAEslE,EAAEhmD,EAAEJ,IAAIlf,EAAEkf,EAAE,CAAC,SAAS0tJ,GAAGtnG,GAAG,OAAOA,EAAEvqE,MAAMuqE,EAAEunG,QAAQvnG,EAAEwnG,aAAa,CAAC5M,GAAGuM,GAAG9yK,WAAW,IAAIozK,GAAG,CAACC,KAAK,SAAS1nG,EAAEtlE,GAAG,GAAGslE,EAAErjE,oBAAoBqjE,EAAErjE,kBAAkBiiK,cAAc5+F,EAAE7kE,KAAKwsK,UAAU,CAAC,IAAI/tJ,EAAEomD,EAAEynG,GAAGG,SAAShuJ,EAAEA,EAAE,MAAOomD,EAAErjE,kBAAkB,SAASqjE,EAAEtlE,GAAG,IAAIkf,EAAE,CAACiuJ,cAAa,EAAGC,aAAa9nG,EAAEl+D,OAAOpH,GAAGq8D,EAAEiJ,EAAE7kE,KAAK4sK,eAA6E,OAA9DvwI,EAAEu/B,KAAKn9C,EAAE7jB,OAAOghE,EAAEhhE,OAAO6jB,EAAEq6H,gBAAgBl9E,EAAEk9E,iBAAwB,IAAIj0E,EAAEhgE,iBAAiBuuF,KAAK30E,EAAE,CAAzL,CAA2LomD,EAAEs9F,KAAKzhK,OAAOnB,EAAEslE,EAAEk/C,SAAI,EAAOxkH,EAAG,EAAEktK,SAAS,SAASltK,EAAEkf,GAAG,IAAI4d,EAAE5d,EAAE5Z,kBAAkB,SAAStF,EAAEkf,EAAE4d,EAAEu/B,EAAEriE,GAAG,IAAIyM,EAAE41D,EAAE57D,KAAKm+J,YAAY3/I,EAAEjf,EAAE2vI,aAAax0G,KAAK10B,IAAIA,EAAEo5J,SAAS5gJ,IAAIqmD,IAAIrmD,EAAE4gJ,SAASp5J,GAAGzG,EAAE2vI,aAAaowB,OAAOt5J,EAAEs5J,OAAOt5J,GAAGzG,EAAE2vI,aAAaowB,MAAM9oG,KAAKj9D,GAAGgG,EAAE5C,SAASkwK,iBAAiBnyI,GAAGq4B,EAAExzD,EAAEsoH,OAAOtoH,EAAE5C,SAASgwK,aAAa/wG,EAAEr8D,EAAEsoH,OAAOjsD,EAAEr8D,EAAEutK,SAASvtK,EAAEutK,OAAOnmK,OAAOi1D,GAAGr8D,EAAE5C,SAASkwK,gBAAgBtzK,EAAE,IAAIolB,EAAEi9C,EAAE57D,KAAKsgE,OAAOuE,EAAEtlE,EAAEkhK,aAAaC,GAAGnhK,EAAEkhK,YAAY9hJ,EAAEo0C,EAAE/yD,MAAM+yD,EAAE/yD,KAAKsgE,OAAOuE,EAAEtlE,EAAE,YAAYi3D,GAAE,GAAIj3D,EAAE7B,OAAOihB,EAAE0d,EAAEA,GAAGwoC,EAAE,IAAIrpC,EAAEj8B,EAAE5C,SAASowK,iBAAiB,GAAGxtK,EAAEohK,iBAAiBD,GAAGnhK,EAAEohK,gBAAgBtkI,EAAEb,GAAGqpC,EAAEtlE,EAAE,cAAcA,EAAEmD,WAAWnD,EAAE5C,SAASowK,iBAAiB1wI,EAAEqlI,GAAGniK,EAAE88B,EAAEb,GAAG/c,GAAGlf,EAAE5C,SAASpC,MAAM,CAAC+gK,IAAG,GAAI,IAAI,IAAIr7B,EAAE1gI,EAAEwrK,OAAO77I,EAAE3vB,EAAE5C,SAASquK,WAAW,GAAG9wK,EAAE,EAAEA,EAAEg1B,EAAEz1B,OAAOS,IAAI,CAAC,IAAIy2D,EAAEzhC,EAAEh1B,GAAGqrF,EAAEhmF,EAAE5C,SAASpC,MAAM0lI,EAAEtvE,GAAGs6G,GAAGt6G,EAAE40B,EAAE9mE,EAAElf,EAAE,CAAC+7J,IAAG,GAAI/7J,EAAE5C,SAASC,UAAU6hB,CAAC,CAAC+3C,IAAIj3D,EAAE/D,OAAOwkK,GAAGzmK,EAAEqiE,EAAEx3C,SAAS7kB,EAAEytK,eAAe,CAAzxB,CAA2xBvuJ,EAAEjd,kBAAkBjC,EAAEiC,kBAAkB66B,EAAEz/B,UAAUy/B,EAAE75B,UAAUic,EAAE4d,EAAEwU,SAAS,EAAElR,OAAO,SAASklC,GAAG,IAAItlE,EAAEkf,EAAEomD,EAAEzgD,QAAQiY,EAAEwoC,EAAErjE,kBAAkB66B,EAAEmnI,aAAannI,EAAEmnI,YAAW,EAAGf,GAAGpmI,EAAE,YAAYwoC,EAAE7kE,KAAKwsK,YAAY/tJ,EAAE+kJ,aAAajkK,EAAE88B,GAAGimI,WAAU,EAAGO,GAAGviK,KAAKf,IAAIgjK,GAAGlmI,GAAE,GAAI,EAAEn+B,QAAQ,SAAS2mE,GAAG,IAAItlE,EAAEslE,EAAErjE,kBAAkBjC,EAAEkkK,eAAe5+F,EAAE7kE,KAAKwsK,UAAU9J,GAAGnjK,GAAE,GAAIA,EAAElB,WAAW,GAAG4uK,GAAGp1K,OAAO4L,KAAK6oK,IAAI,SAAShO,GAAG/kK,EAAEyM,EAAE00B,EAAE87B,EAAEzD,GAAG,IAAIt0C,EAAEllB,GAAG,CAAC,IAAIiiC,EAAEd,EAAE/9B,SAASktH,MAAM,GAAGrrG,EAAEjlB,KAAKA,EAAEiiC,EAAEh7B,OAAOjH,IAAI,mBAAmBA,EAAE,CAAC,IAAI0mI,EAAE,GAAGxhH,EAAEllB,EAAE2zK,OAAO3zK,EAAE,SAASsrE,EAAEtlE,GAAG,GAAGq8D,EAAEiJ,EAAExjD,QAAQgb,EAAEwoC,EAAEsoG,WAAW,OAAOtoG,EAAEsoG,UAAU,GAAG9wI,EAAEwoC,EAAEuoG,UAAU,OAAOvoG,EAAEuoG,SAAS,IAAI7zK,EAAE6nK,GAAG,GAAG7nK,GAAG8iC,EAAEwoC,EAAEwoG,UAAU,IAAIxoG,EAAEwoG,OAAOvxK,QAAQvC,IAAIsrE,EAAEwoG,OAAO/sK,KAAK/G,GAAGqiE,EAAEiJ,EAAEtkD,UAAU8b,EAAEwoC,EAAEyoG,aAAa,OAAOzoG,EAAEyoG,YAAY,GAAG/zK,IAAI8iC,EAAEwoC,EAAEwoG,QAAQ,CAAC,IAAIrnK,EAAE6+D,EAAEwoG,OAAO,CAAC9zK,GAAGmhC,GAAE,EAAG87B,EAAE,KAAKzD,EAAE,KAAKx5D,EAAEwE,IAAI,kBAAiB,WAAY,OAAO0iC,EAAEz6B,EAAEzM,EAAG,IAAG,IAAIiiC,EAAE,SAASqpC,GAAG,IAAI,IAAItlE,EAAE,EAAEkf,EAAEzY,EAAEvM,OAAO8F,EAAEkf,EAAElf,IAAIyG,EAAEzG,GAAGytK,eAAenoG,IAAI7+D,EAAEvM,OAAO,EAAE,OAAO+8D,IAAIzhB,aAAayhB,GAAGA,EAAE,MAAM,OAAOzD,IAAIhe,aAAage,GAAGA,EAAE,MAAM,EAAEktE,EAAEvC,GAAE,SAAUj/G,GAAGomD,EAAEuoG,SAAS/L,GAAG5iJ,EAAElf,GAAGm7B,EAAE10B,EAAEvM,OAAO,EAAE+hC,GAAE,EAAI,IAAGtM,EAAEwuG,GAAE,SAAUn+H,GAAG88B,EAAEwoC,EAAEsoG,aAAatoG,EAAExjD,OAAM,EAAGma,GAAE,GAAK,IAAGthC,EAAE2qE,EAAEo7D,EAAE/wG,GAAG,OAAO1Q,EAAEtkB,KAAKykB,EAAEzkB,GAAGukB,EAAEomD,EAAEuoG,WAAWlzK,EAAE2mB,KAAKo/G,EAAE/wG,GAAGvQ,EAAEzkB,EAAEyI,aAAazI,EAAEyI,UAAUke,KAAKo/G,EAAE/wG,GAAGmN,EAAEniC,EAAEmnB,SAASwjD,EAAEsoG,UAAU9L,GAAGnnK,EAAEmnB,MAAM9hB,IAAI88B,EAAEniC,EAAEqmB,WAAWskD,EAAEyoG,YAAYjM,GAAGnnK,EAAEqmB,QAAQhhB,GAAG,IAAIrF,EAAEgxG,MAAMrmC,EAAEtkD,SAAQ,EAAGi2C,EAAE57C,YAAW,WAAY47C,EAAE,KAAK/3C,EAAEomD,EAAEuoG,WAAW3uJ,EAAEomD,EAAExjD,SAASwjD,EAAEtkD,SAAQ,EAAGib,GAAE,GAAK,GAAEthC,EAAEgxG,OAAO,MAAM7uE,EAAEniC,EAAEwgH,WAAW3nD,EAAEn4C,YAAW,WAAYm4C,EAAE,KAAKt0C,EAAEomD,EAAEuoG,WAAWl+I,EAAE,KAAM,GAAEh1B,EAAEwgH,YAAYhgF,GAAE,EAAGmqC,EAAEtkD,QAAQskD,EAAEyoG,YAAYzoG,EAAEuoG,QAAQ,CAAC,CAAngC,CAAqgCntC,EAAE1mI,EAAEiiC,QAAG,IAASjiC,GAAG,OAAO,SAASsrE,EAAEtlE,EAAEkf,EAAE4d,EAAEu/B,GAAG,IAAIriE,EAAEwgK,KAAK,OAAOxgK,EAAEqgK,aAAa/0F,EAAEtrE,EAAEsgK,UAAU,CAAC75J,KAAKT,EAAE6kB,QAAQ3F,EAAEoyB,SAASxU,EAAE/6B,IAAIs6D,GAAGriE,CAAC,CAAxG,CAA0G0mI,EAAEj6H,EAAE00B,EAAE87B,EAAEzD,GAAG/sD,EAAEA,GAAG,CAAC,EAAE0lK,GAAGnyK,GAAG8iC,EAAEr2B,EAAEoB,QAAQ,SAASy9D,EAAEpmD,GAAG,IAAIm9C,EAAEiJ,EAAEz9D,OAAOy9D,EAAEz9D,MAAMxG,MAAM,QAAQrH,EAAEsrE,EAAEz9D,OAAOy9D,EAAEz9D,MAAM1D,OAAO,SAAS+a,EAAE6hD,QAAQ7hD,EAAE6hD,MAAM,CAAC,IAAI1E,GAAGn9C,EAAErX,MAAMpP,MAAM,IAAIgO,EAAEyY,EAAE+H,KAAK/H,EAAE+H,GAAG,CAAC,GAAGhI,EAAExY,EAAEzM,GAAGmhC,EAAEjc,EAAErX,MAAM+tB,SAASkH,EAAE7d,IAAIjf,EAAEif,IAAI,IAAIA,EAAE1iB,QAAQ4+B,GAAGlc,IAAIkc,KAAK10B,EAAEzM,GAAG,CAACmhC,GAAGh+B,OAAO8hB,IAAIxY,EAAEzM,GAAGmhC,CAAC,CAA9O,CAAgPnhC,EAAEuJ,QAAQkD,GAAG,IAAIkpB,EAAE,SAAS21C,EAAEtlE,EAAEq8D,GAAG,IAAIriE,EAAEgG,EAAEuD,QAAQvI,MAAM,IAAIkkB,EAAEllB,GAAG,CAAC,IAAIyM,EAAE,CAAC,EAAEwY,EAAEqmD,EAAEvE,MAAM5lC,EAAEmqC,EAAEtqE,MAAM,GAAG8hC,EAAE7d,IAAI6d,EAAE3B,GAAG,IAAI,IAAI87B,KAAKj9D,EAAE,CAAC,IAAIw5D,EAAE2rE,EAAEloE,GAAGq4D,GAAG7oH,EAAE00B,EAAE87B,EAAEzD,GAAE,IAAK87D,GAAG7oH,EAAEwY,EAAEg4C,EAAEzD,GAAE,EAAG,CAAC,OAAO/sD,CAAC,CAAC,CAA9J,CAAgKA,EAAEzM,GAAG,GAAGqiE,EAAEriE,EAAEuJ,QAAQ4jJ,YAAY,OAAO,SAASjoI,EAAEm9C,EAAEriE,EAAEyM,EAAEwY,GAAG,IAAIkc,EAAEjc,EAAE3b,QAAQ0zD,EAAE,CAAC,EAAEzD,EAAEr4B,EAAEngC,MAAM,GAAG8hC,EAAE02B,GAAG,IAAI,IAAIp0C,KAAKo0C,EAAEyD,EAAE73C,GAAGssJ,GAAGtsJ,EAAEo0C,EAAE6I,GAAGiJ,QAAQxoC,EAAE9iC,EAAE+mE,QAAQ0lE,GAAGxvE,EAAEj9D,EAAE+mE,OAAOjkC,EAAE9iC,EAAEgB,QAAQyrI,GAAGxvE,EAAEj9D,EAAEgB,OAAO,IAAIihC,EAAE,IAAIwwI,GAAGzyK,EAAEi9D,EAAEh4C,EAAExY,EAAEyY,GAAGwhH,EAAEvlG,EAAE9/B,OAAOb,KAAK,KAAKyhC,EAAE29G,GAAG39G,GAAG,GAAGykG,aAAai5B,GAAG,OAAOgT,GAAGjsC,EAAE1mI,EAAEiiC,EAAE70B,OAAO+zB,GAAG,GAAGn7B,EAAE0gI,GAAG,CAAC,IAAI,IAAI/wG,EAAE2uI,GAAG59B,IAAI,GAAG/lI,EAAE,IAAIb,MAAM61B,EAAEz1B,QAAQk3D,EAAE,EAAEA,EAAEzhC,EAAEz1B,OAAOk3D,IAAIz2D,EAAEy2D,GAAGu7G,GAAGh9I,EAAEyhC,GAAGp3D,EAAEiiC,EAAE70B,OAAO+zB,GAAG,OAAOxgC,CAAC,CAAC,CAAjW,CAAmWX,EAAE21B,EAAElpB,EAAE00B,EAAE87B,GAAG,IAAIt8D,EAAE8L,EAAEwgB,GAAG,GAAGxgB,EAAEwgB,GAAGxgB,EAAEunK,SAAS3xG,EAAEriE,EAAEuJ,QAAQ0qK,UAAU,CAAC,IAAI78G,EAAE3qD,EAAEnK,KAAKmK,EAAE,CAAC,EAAE2qD,IAAI3qD,EAAEnK,KAAK80D,EAAE,EAAE,SAASkU,GAAG,IAAI,IAAItlE,EAAEslE,EAAE2hF,OAAO3hF,EAAE2hF,KAAK,CAAC,GAAG/nI,EAAE,EAAEA,EAAEwuJ,GAAGxzK,OAAOglB,IAAI,CAAC,IAAI4d,EAAE4wI,GAAGxuJ,GAAGm9C,EAAEr8D,EAAE88B,GAAG9iC,EAAE+yK,GAAGjwI,GAAGu/B,IAAIriE,GAAGqiE,GAAGA,EAAE6xG,UAAUluK,EAAE88B,GAAGu/B,EAAE8xG,GAAGn0K,EAAEqiE,GAAGriE,EAAE,CAAC,CAAlI,CAAoIyM,GAAG,IAAIu/E,EAAE4mF,GAAG5yK,EAAEuJ,UAAUiwD,EAAE,OAAO,IAAImmG,GAAG,iBAAiBx8J,OAAOnD,EAAE2zK,KAAKxwK,OAAO6oF,EAAE,IAAI7oF,OAAO6oF,GAAG,IAAIv/E,OAAE,OAAO,OAAO,EAAO00B,EAAE,CAAC04D,KAAK75F,EAAEqD,UAAUsyB,EAAE1sB,UAAUtI,EAAEoH,IAAIyxD,EAAEliB,SAAS2lB,GAAGypE,EAAE,CAAC,CAAC,CAAC,SAASytC,GAAG7oG,EAAEtlE,GAAG,IAAIkf,EAAE,SAASA,EAAE4d,GAAGwoC,EAAEpmD,EAAE4d,GAAG98B,EAAEkf,EAAE4d,EAAE,EAAE,OAAO5d,EAAEgvJ,SAAQ,EAAGhvJ,CAAC,CAAC,IAAIkvJ,GAAG3vC,EAAE4vC,GAAGvvC,EAAEs5B,sBAAsB,SAASkW,GAAGhpG,EAAEtlE,EAAEkf,GAAG,QAAG,IAASA,IAAIA,GAAE,IAAKlf,EAAE,OAAOslE,EAAE,IAAI,IAAIxoC,EAAEu/B,EAAEriE,EAAEyM,EAAE8yJ,GAAGC,QAAQrb,QAAQn+I,GAAG1H,OAAO4L,KAAKlE,GAAGif,EAAE,EAAEA,EAAExY,EAAEvM,OAAO+kB,IAAI,YAAY6d,EAAEr2B,EAAEwY,MAAMo9C,EAAEiJ,EAAExoC,GAAG9iC,EAAEgG,EAAE88B,GAAG5d,GAAGsgB,EAAE8lC,EAAExoC,GAAGu/B,IAAIriE,GAAGi9D,EAAEoF,IAAIpF,EAAEj9D,IAAIs0K,GAAGjyG,EAAEriE,GAAG2iK,GAAGr3F,EAAExoC,EAAE9iC,IAAI,OAAOsrE,CAAC,CAAC,SAASipG,GAAGjpG,EAAEtlE,EAAEkf,GAAG,OAAOA,EAAE,WAAW,IAAI4d,EAAEr2B,EAAEzG,GAAGA,EAAExF,KAAK0kB,EAAEA,GAAGlf,EAAEq8D,EAAE51D,EAAE6+D,GAAGA,EAAE9qE,KAAK0kB,EAAEA,GAAGomD,EAAE,OAAOxoC,EAAEwxI,GAAGxxI,EAAEu/B,GAAGA,CAAC,EAAEr8D,EAAEslE,EAAE,WAAW,OAAOgpG,GAAG7nK,EAAEzG,GAAGA,EAAExF,KAAKgB,KAAKA,MAAMwE,EAAEyG,EAAE6+D,GAAGA,EAAE9qE,KAAKgB,KAAKA,MAAM8pE,EAAE,EAAEtlE,EAAEslE,CAAC,CAAC,SAAS+gG,GAAG/gG,EAAEpmD,GAAG,IAAI4d,EAAE5d,EAAEomD,EAAEA,EAAEnoE,OAAO+hB,GAAGlf,EAAEkf,GAAGA,EAAE,CAACA,GAAGomD,EAAE,OAAOxoC,EAAE,SAASwoC,GAAG,IAAI,IAAItlE,EAAE,GAAGkf,EAAE,EAAEA,EAAEomD,EAAEprE,OAAOglB,KAAK,IAAIlf,EAAEzD,QAAQ+oE,EAAEpmD,KAAKlf,EAAEe,KAAKukE,EAAEpmD,IAAI,OAAOlf,CAAC,CAAvF,CAAyF88B,GAAGA,CAAC,CAAC,SAAS0xI,GAAGlpG,EAAEtlE,EAAEkf,EAAE4d,GAAG,IAAIu/B,EAAE/jE,OAAOo0F,OAAOpnB,GAAG,MAAM,OAAOtlE,EAAEi0I,EAAE53E,EAAEr8D,GAAGq8D,CAAC,CAACgyG,GAAG5tK,KAAK,SAAS6kE,EAAEtlE,EAAEkf,GAAG,OAAOA,EAAEqvJ,GAAGjpG,EAAEtlE,EAAEkf,GAAGlf,GAAG,mBAAmBA,EAAEslE,EAAEipG,GAAGjpG,EAAEtlE,EAAE,EAAE++H,EAAE3/H,SAAQ,SAAUkmE,GAAG+oG,GAAG/oG,GAAG+gG,EAAG,IAAG5zB,EAAErzI,SAAQ,SAAUkmE,GAAG+oG,GAAG/oG,EAAE,KAAKkpG,EAAG,IAAGH,GAAGnwK,MAAM,SAASonE,EAAEpmD,EAAE4d,EAAEu/B,GAAG,GAAGiJ,IAAIyzE,KAAKzzE,OAAE,GAAQpmD,IAAI65H,KAAK75H,OAAE,IAASA,EAAE,OAAO5mB,OAAOo0F,OAAOpnB,GAAG,MAAM,IAAIA,EAAE,OAAOpmD,EAAE,IAAIllB,EAAE,CAAC,EAAE,IAAI,IAAIyM,KAAKwtI,EAAEj6I,EAAEsrE,GAAGpmD,EAAE,CAAC,IAAID,EAAEjlB,EAAEyM,GAAG00B,EAAEjc,EAAEzY,GAAGwY,IAAIjf,EAAEif,KAAKA,EAAE,CAACA,IAAIjlB,EAAEyM,GAAGwY,EAAEA,EAAE9hB,OAAOg+B,GAAGn7B,EAAEm7B,GAAGA,EAAE,CAACA,EAAE,CAAC,OAAOnhC,CAAC,EAAEq0K,GAAGrzK,MAAMqzK,GAAGhwK,QAAQgwK,GAAGrtD,OAAOqtD,GAAGroJ,SAAS,SAASs/C,EAAEtlE,EAAEkf,EAAE4d,GAAG,IAAIwoC,EAAE,OAAOtlE,EAAE,IAAIq8D,EAAE/jE,OAAOo0F,OAAO,MAAM,OAAOunD,EAAE53E,EAAEiJ,GAAGtlE,GAAGi0I,EAAE53E,EAAEr8D,GAAGq8D,CAAC,EAAEgyG,GAAG/3I,QAAQ,SAASgvC,EAAEtlE,GAAG,OAAOslE,EAAE,WAAW,IAAIpmD,EAAE5mB,OAAOo0F,OAAO,MAAM,OAAO4hF,GAAGpvJ,EAAEzY,EAAE6+D,GAAGA,EAAE9qE,KAAKgB,MAAM8pE,GAAGtlE,GAAGsuK,GAAGpvJ,EAAEzY,EAAEzG,GAAGA,EAAExF,KAAKgB,MAAMwE,GAAE,GAAIkf,CAAC,EAAElf,CAAC,EAAE,IAAIyuK,GAAG,SAASnpG,EAAEtlE,GAAG,YAAO,IAASA,EAAEslE,EAAEtlE,CAAC,EAAE,SAASwsK,GAAGlnG,EAAEpmD,EAAE4d,GAAG,GAAGr2B,EAAEyY,KAAKA,EAAEA,EAAE3b,SAAS,SAAS+hE,EAAEpmD,GAAG,IAAI4d,EAAEwoC,EAAEtqE,MAAM,GAAG8hC,EAAE,CAAC,IAAIu/B,EAAEriE,EAAEyM,EAAE,CAAC,EAAE,GAAGzG,EAAE88B,GAAG,IAAIu/B,EAAEv/B,EAAE5iC,OAAOmiE,KAAK,iBAAiBriE,EAAE8iC,EAAEu/B,MAAM51D,EAAE6Y,EAAEtlB,IAAI,CAACkB,KAAK,YAAY,GAAG+7D,EAAEn6B,GAAG,IAAI,IAAI7d,KAAK6d,EAAE9iC,EAAE8iC,EAAE7d,GAAGxY,EAAE6Y,EAAEL,IAAIg4C,EAAEj9D,GAAGA,EAAE,CAACkB,KAAKlB,GAAGsrE,EAAEtqE,MAAMyL,CAAC,CAAC,CAAhM,CAAkMyY,GAAG,SAASomD,EAAEpmD,GAAG,IAAI4d,EAAEwoC,EAAE07C,OAAO,GAAGlkF,EAAE,CAAC,IAAIu/B,EAAEiJ,EAAE07C,OAAO,CAAC,EAAE,GAAGhhH,EAAE88B,GAAG,IAAI,IAAI9iC,EAAE,EAAEA,EAAE8iC,EAAE5iC,OAAOF,IAAIqiE,EAAEv/B,EAAE9iC,IAAI,CAACG,KAAK2iC,EAAE9iC,SAAS,GAAGi9D,EAAEn6B,GAAG,IAAI,IAAIr2B,KAAKq2B,EAAE,CAAC,IAAI7d,EAAE6d,EAAEr2B,GAAG41D,EAAE51D,GAAGwwD,EAAEh4C,GAAGg1H,EAAE,CAAC95I,KAAKsM,GAAGwY,GAAG,CAAC9kB,KAAK8kB,EAAE,CAAC,CAAC,CAAtL,CAAwLC,GAAG,SAASomD,GAAG,IAAItlE,EAAEslE,EAAEw8C,WAAW,GAAG9hH,EAAE,IAAI,IAAIkf,KAAKlf,EAAE,CAAC,IAAI88B,EAAE98B,EAAEkf,GAAGzY,EAAEq2B,KAAK98B,EAAEkf,GAAG,CAACzX,KAAKq1B,EAAEu2E,OAAOv2E,GAAG,CAAC,CAA9F,CAAgG5d,IAAIA,EAAEorG,QAAQprG,EAAEwvJ,UAAUppG,EAAEknG,GAAGlnG,EAAEpmD,EAAEwvJ,QAAQ5xI,IAAI5d,EAAExiB,QAAQ,IAAI,IAAI2/D,EAAE,EAAEriE,EAAEklB,EAAExiB,OAAOxC,OAAOmiE,EAAEriE,EAAEqiE,IAAIiJ,EAAEknG,GAAGlnG,EAAEpmD,EAAExiB,OAAO2/D,GAAGv/B,GAAG,IAAI7d,EAAEkc,EAAE,CAAC,EAAE,IAAIlc,KAAKqmD,EAAE9R,EAAEv0C,GAAG,IAAIA,KAAKC,EAAEsgB,EAAE8lC,EAAErmD,IAAIu0C,EAAEv0C,GAAG,SAASu0C,EAAExzD,GAAG,IAAIq8D,EAAEgyG,GAAGruK,IAAIyuK,GAAGtzI,EAAEn7B,GAAGq8D,EAAEiJ,EAAEtlE,GAAGkf,EAAElf,GAAG88B,EAAE98B,EAAE,CAAC,OAAOm7B,CAAC,CAAC,SAAS2jI,GAAGx5F,EAAEtlE,EAAEkf,EAAE4d,GAAG,GAAG,iBAAiB5d,EAAE,CAAC,IAAIm9C,EAAEiJ,EAAEtlE,GAAG,GAAGw/B,EAAE68B,EAAEn9C,GAAG,OAAOm9C,EAAEn9C,GAAG,IAAIllB,EAAEslB,EAAEJ,GAAG,GAAGsgB,EAAE68B,EAAEriE,GAAG,OAAOqiE,EAAEriE,GAAG,IAAIyM,EAAEytI,EAAEl6I,GAAG,OAAOwlC,EAAE68B,EAAE51D,GAAG41D,EAAE51D,GAAG41D,EAAEn9C,IAAIm9C,EAAEriE,IAAIqiE,EAAE51D,EAAE,CAAC,CAAC,SAASilK,GAAGpmG,EAAEtlE,EAAEkf,EAAE4d,GAAG,IAAIu/B,EAAEr8D,EAAEslE,GAAGtrE,GAAGwlC,EAAEtgB,EAAEomD,GAAGrmD,EAAEC,EAAEomD,GAAGnqC,EAAEwzI,GAAGxzK,QAAQkhE,EAAEnhE,MAAM,GAAGigC,GAAG,EAAE,GAAGnhC,IAAIwlC,EAAE68B,EAAE,WAAWp9C,GAAE,OAAQ,GAAG,KAAKA,GAAGA,IAAIkgH,EAAE75D,GAAG,CAAC,IAAIrO,EAAE03G,GAAGroK,OAAO+1D,EAAEnhE,OAAO+7D,EAAE,GAAG97B,EAAE87B,KAAKh4C,GAAE,EAAG,CAAC,QAAG,IAASA,EAAE,CAACA,EAAE,SAASqmD,EAAEtlE,EAAEkf,GAAG,GAAIsgB,EAAEx/B,EAAE,WAAR,CAA0B,IAAI88B,EAAE98B,EAAE1G,QAAQ,OAAGgsE,GAAGA,EAAEloE,SAASC,gBAAW,IAASioE,EAAEloE,SAASC,UAAU6hB,SAAI,IAASomD,EAAEkmG,OAAOtsJ,GAAUomD,EAAEkmG,OAAOtsJ,GAAUzY,EAAEq2B,IAAI,aAAa8xI,GAAG5uK,EAAE9E,MAAM4hC,EAAEtiC,KAAK8qE,GAAGxoC,CAAtK,CAAuK,CAAhN,CAAkNA,EAAEu/B,EAAEiJ,GAAG,IAAI9R,EAAEsoG,GAAGC,IAAG,GAAIQ,GAAGt9I,GAAG88I,GAAGvoG,EAAE,CAAC,OAAOv0C,CAAC,CAAC,IAAI4vJ,GAAG,qBAAqB,SAASD,GAAGtpG,GAAG,IAAItlE,EAAEslE,GAAGA,EAAEj7B,WAAW6rB,MAAM24G,IAAI,OAAO7uK,EAAEA,EAAE,GAAG,EAAE,CAAC,SAAS8uK,GAAGxpG,EAAEtlE,GAAG,OAAO4uK,GAAGtpG,KAAKspG,GAAG5uK,EAAE,CAAC,SAAS2uK,GAAGrpG,EAAEpmD,GAAG,IAAIlf,EAAEkf,GAAG,OAAO4vJ,GAAG5vJ,EAAEomD,GAAG,GAAG,EAAE,IAAI,IAAIxoC,EAAE,EAAEu/B,EAAEn9C,EAAEhlB,OAAO4iC,EAAEu/B,EAAEv/B,IAAI,GAAGgyI,GAAG5vJ,EAAE4d,GAAGwoC,GAAG,OAAOxoC,EAAE,OAAO,CAAC,CAAC,SAASiyI,GAAGzpG,GAAG9pE,KAAKwzK,MAAM1pG,EAAE,CAAC,SAAS2pG,GAAG3pG,GAAGA,EAAEqoG,IAAI,EAAE,IAAI3tK,EAAE,EAAEslE,EAAErkE,OAAO,SAASqkE,GAAGA,EAAEA,GAAG,CAAC,EAAE,IAAIpmD,EAAE1jB,KAAKshC,EAAE5d,EAAEyuJ,IAAItxG,EAAEiJ,EAAE4pG,QAAQ5pG,EAAE4pG,MAAM,CAAC,GAAG,GAAG7yG,EAAEv/B,GAAG,OAAOu/B,EAAEv/B,GAAG,IAAI9iC,EAAE4yK,GAAGtnG,IAAIsnG,GAAG1tJ,EAAE3b,SAASkD,EAAE,SAAS6+D,GAAG9pE,KAAKwzK,MAAM1pG,EAAE,EAAE,OAAO7+D,EAAE9M,UAAUrB,OAAOo0F,OAAOxtE,EAAEvlB,YAAYD,YAAY+M,EAAEA,EAAEknK,IAAI3tK,IAAIyG,EAAElD,QAAQipK,GAAGttJ,EAAE3b,QAAQ+hE,GAAG7+D,EAAE2lK,MAAMltJ,EAAEzY,EAAElD,QAAQvI,OAAO,SAASsqE,GAAG,IAAItlE,EAAEslE,EAAE/hE,QAAQvI,MAAM,IAAI,IAAIkkB,KAAKlf,EAAEurK,GAAGjmG,EAAE3rE,UAAU,SAASulB,EAAE,CAA3E,CAA6EzY,GAAGA,EAAElD,QAAQyiB,UAAU,SAASs/C,GAAG,IAAItlE,EAAEslE,EAAE/hE,QAAQyiB,SAAS,IAAI,IAAI9G,KAAKlf,EAAE+rK,GAAGzmG,EAAE3rE,UAAUulB,EAAElf,EAAEkf,GAAG,CAA1E,CAA4EzY,GAAGA,EAAExF,OAAOie,EAAEje,OAAOwF,EAAE1C,MAAMmb,EAAEnb,MAAM0C,EAAEiT,IAAIwF,EAAExF,IAAI+4H,EAAErzI,SAAQ,SAAUkmE,GAAG7+D,EAAE6+D,GAAGpmD,EAAEomD,EAAG,IAAGtrE,IAAIyM,EAAElD,QAAQuY,WAAW9hB,GAAGyM,GAAGA,EAAE4lK,aAAantJ,EAAE3b,QAAQkD,EAAE8lK,cAAcjnG,EAAE7+D,EAAE6lK,cAAcr4B,EAAE,CAAC,EAAExtI,EAAElD,SAAS84D,EAAEv/B,GAAGr2B,EAAEA,CAAC,CAAC,CAAC,SAAS0oK,GAAG7pG,GAAG,OAAOA,IAAIsnG,GAAGtnG,EAAEuuB,KAAKtwF,UAAU+hE,EAAEvjE,IAAI,CAAC,SAASqtK,GAAG9pG,EAAEpmD,GAAG,OAAOlf,EAAEslE,GAAGA,EAAE/oE,QAAQ2iB,IAAI,EAAE,iBAAiBomD,EAAEA,EAAErhE,MAAM,KAAK1H,QAAQ2iB,IAAI,GAAG4d,EAAEwoC,EAAE,oBAAoBnqC,EAAE3gC,KAAKsiC,IAAIwoC,EAAEjrD,KAAK6E,IAAI,IAAI4d,CAAC,CAAC,SAASuyI,GAAG/pG,EAAEtlE,GAAG,IAAIkf,EAAEomD,EAAEpS,MAAMp2B,EAAEwoC,EAAEphE,KAAKm4D,EAAEiJ,EAAEioG,OAAOvzK,EAAEsrE,EAAEgjD,OAAO,IAAI,IAAI7hH,KAAKyY,EAAE,CAAC,IAAID,EAAEC,EAAEzY,GAAG,GAAGwY,EAAE,CAAC,IAAIkc,EAAElc,EAAElkB,KAAKogC,IAAIn7B,EAAEm7B,IAAIm0I,GAAGpwJ,EAAEzY,EAAEq2B,EAAEu/B,EAAE,CAAC,CAACriE,EAAEsL,iBAAiBgsC,cAAS,CAAM,CAAC,SAASg+H,GAAGhqG,EAAEtlE,EAAEkf,EAAE4d,GAAG,IAAIu/B,EAAEiJ,EAAEtlE,IAAIq8D,GAAGv/B,GAAGu/B,EAAEt6D,MAAM+6B,EAAE/6B,KAAKs6D,EAAEp6D,kBAAkBnD,WAAWwmE,EAAEtlE,GAAG,KAAKkhC,EAAEhiB,EAAElf,EAAE,EAAE,SAASA,GAAGA,EAAErG,UAAUq1K,MAAM,SAAShvK,GAAG,IAAIkf,EAAE1jB,KAAK0jB,EAAEmrG,KAAK4c,KAAK/nH,EAAE29I,QAAO,EAAG39I,EAAEs9I,UAAS,EAAGt9I,EAAEw6I,OAAO,IAAI0I,IAAG,GAAIljJ,EAAEw6I,OAAOtyJ,YAAO,EAAO8X,EAAEw6I,OAAOvtC,KAAI,EAAGnsH,GAAGA,EAAEmtK,aAAa,SAAS7nG,EAAEtlE,GAAG,IAAIkf,EAAEomD,EAAEloE,SAAS9E,OAAOo0F,OAAOpnB,EAAE5rE,YAAY6J,SAASu5B,EAAE98B,EAAEotK,aAAaluJ,EAAE9X,OAAOpH,EAAEoH,OAAO8X,EAAEkuJ,aAAatwI,EAAE,IAAIu/B,EAAEv/B,EAAEx3B,iBAAiB4Z,EAAE7hB,UAAUg/D,EAAEh/D,UAAU6hB,EAAEsuJ,iBAAiBnxG,EAAEp5D,UAAUic,EAAEouJ,gBAAgBjxG,EAAE/qB,SAASpyB,EAAE4tJ,cAAczwG,EAAEt6D,IAAI/B,EAAE3E,SAAS6jB,EAAE7jB,OAAO2E,EAAE3E,OAAO6jB,EAAEq6H,gBAAgBv5I,EAAEu5I,gBAAgB,CAA5T,CAA8Tr6H,EAAElf,GAAGkf,EAAE9hB,SAASovK,GAAGL,GAAGjtJ,EAAExlB,aAAasG,GAAG,CAAC,EAAEkf,GAAGA,EAAEugJ,aAAavgJ,EAAEA,EAAEy6H,MAAMz6H,EAAE,SAASomD,GAAG,IAAItlE,EAAEslE,EAAEloE,SAAS8hB,EAAElf,EAAEoH,OAAO,GAAG8X,IAAIlf,EAAEiuK,SAAS,CAAC,KAAK/uJ,EAAE9hB,SAAS6wK,UAAU/uJ,EAAE7X,SAAS6X,EAAEA,EAAE7X,QAAQ6X,EAAE1Y,UAAUzF,KAAKukE,EAAE,CAACA,EAAEj+D,QAAQ6X,EAAEomD,EAAEkiF,MAAMtoI,EAAEA,EAAEsoI,MAAMliF,EAAEA,EAAE9+D,UAAU,GAAG8+D,EAAEh+D,MAAM,CAAC,EAAEg+D,EAAE2/F,UAAU/lJ,EAAEA,EAAE+lJ,UAAU3sK,OAAOo0F,OAAO,MAAMpnB,EAAE0+F,SAAS,KAAK1+F,EAAEy9F,UAAU,KAAKz9F,EAAE29F,iBAAgB,EAAG39F,EAAE2+F,YAAW,EAAG3+F,EAAE4+F,cAAa,EAAG5+F,EAAE+lG,mBAAkB,CAAE,CAAtV,CAAwVnsJ,GAAG,SAASomD,GAAGA,EAAEiqG,QAAQj3K,OAAOo0F,OAAO,MAAMpnB,EAAE89F,eAAc,EAAG,IAAIpjK,EAAEslE,EAAEloE,SAASowK,iBAAiBxtK,GAAGmiK,GAAG78F,EAAEtlE,EAAE,CAAzG,CAA2Gkf,GAAG,SAASlf,GAAGA,EAAEutK,OAAO,KAAKvtK,EAAEw/J,aAAa,KAAK,IAAItgJ,EAAElf,EAAE5C,SAAS0/B,EAAE98B,EAAEsoH,OAAOppG,EAAEkuJ,aAAa/wG,EAAEv/B,GAAGA,EAAEjY,QAAQ7kB,EAAE/D,OAAOwkK,GAAGvhJ,EAAEouJ,gBAAgBjxG,GAAGr8D,EAAE2vI,aAAa7yG,EAAE8jI,GAAG5gK,EAAEqH,QAAQy1B,EAAEr8B,KAAKm+J,YAAY5+J,EAAE/D,QAAQqpE,EAAEtlE,EAAE45I,GAAG,SAASt0E,EAAEpmD,EAAE4d,EAAEu/B,GAAG,OAAOsiG,GAAG3+J,EAAEslE,EAAEpmD,EAAE4d,EAAEu/B,GAAE,EAAG,EAAEr8D,EAAE05I,eAAe,SAASp0E,EAAEpmD,EAAE4d,EAAEu/B,GAAG,OAAOsiG,GAAG3+J,EAAEslE,EAAEpmD,EAAE4d,EAAEu/B,GAAE,EAAG,EAAE,IAAIriE,EAAE8iC,GAAGA,EAAEr8B,KAAK67J,GAAGt8J,EAAE,SAAShG,GAAGA,EAAE+mE,OAAOuE,EAAE,MAAK,GAAIg3F,GAAGt8J,EAAE,aAAakf,EAAEsuJ,kBAAkBloG,EAAE,MAAK,EAAG,CAAvZ,CAAyZpmD,GAAGgkJ,GAAGhkJ,EAAE,oBAAe,GAAO,GAAI,SAASomD,GAAG,IAAItlE,EAAEqnI,GAAG/hE,EAAEloE,SAAS4jH,OAAO17C,GAAGtlE,IAAI+7J,IAAG,GAAIzjK,OAAO4L,KAAKlE,GAAGZ,SAAQ,SAAU8f,GAAGo9I,GAAGh3F,EAAEpmD,EAAElf,EAAEkf,GAAI,IAAG68I,IAAG,GAAI,CAAhH,CAAkH78I,GAAGioH,GAAGjoH,GAAG,SAASomD,GAAG,IAAItlE,EAAEslE,EAAEloE,SAASk5B,QAAQ,GAAGt2B,EAAE,CAAC,IAAIkf,EAAEzY,EAAEzG,GAAGA,EAAExF,KAAK8qE,GAAGtlE,EAAE,IAAIif,EAAEC,GAAG,OAAO,IAAI,IAAI4d,EAAEkoI,GAAG1/F,GAAGjJ,EAAEk9F,GAAGC,QAAQrb,QAAQj/H,GAAG5mB,OAAO4L,KAAKgb,GAAGllB,EAAE,EAAEA,EAAEqiE,EAAEniE,OAAOF,IAAI,CAAC,IAAImhC,EAAEkhC,EAAEriE,GAAG1B,OAAOC,eAAeukC,EAAE3B,EAAE7iC,OAAO+/I,yBAAyBn5H,EAAEic,GAAG,CAAC,CAAC,CAAzO,CAA2Ojc,GAAGgkJ,GAAGhkJ,EAAE,WAAWA,EAAE9hB,SAASuc,IAAIuF,EAAE/d,OAAO+d,EAAE9hB,SAASuc,GAAG,CAAC,CAAn1D,CAAq1Do1J,IAAI,SAASzpG,GAAG,IAAItlE,EAAE,CAAC0vB,IAAI,WAAW,OAAOl0B,KAAKqwK,KAAK,GAAG3sJ,EAAE,CAACwQ,IAAI,WAAW,OAAOl0B,KAAKgwK,MAAM,GAAGlzK,OAAOC,eAAe+sE,EAAE3rE,UAAU,QAAQqG,GAAG1H,OAAOC,eAAe+sE,EAAE3rE,UAAU,SAASulB,GAAGomD,EAAE3rE,UAAU61K,KAAK7S,GAAGr3F,EAAE3rE,UAAUm4I,QAAQgrB,GAAGx3F,EAAE3rE,UAAU+D,OAAO,SAAS4nE,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAEthC,KAAK,GAAGy7D,EAAEj3D,GAAG,OAAOgsK,GAAGlvI,EAAEwoC,EAAEtlE,EAAEkf,IAAIA,EAAEA,GAAG,CAAC,GAAG4lC,MAAK,EAAG,IAAIuX,EAAE,IAAIyoG,GAAGhoI,EAAEwoC,EAAEtlE,EAAEkf,GAAG,GAAGA,EAAEnE,UAAU,CAAC,IAAI/gB,EAAE,mCAAmCmD,OAAOk/D,EAAEinD,WAAW,KAAK+3C,KAAK1c,GAAG3+I,EAAE88B,EAAE,CAACu/B,EAAE5jE,OAAOqkC,EAAE9iC,GAAGshK,IAAI,CAAC,OAAO,WAAWj/F,EAAEqmG,UAAU,CAAC,CAAC,CAAte,CAAweqM,IAAI,SAASzpG,GAAG,IAAIpmD,EAAE,SAASomD,EAAE3rE,UAAU6E,IAAI,SAAS8mE,EAAExoC,GAAG,IAAIu/B,EAAE7gE,KAAK,GAAGwE,EAAEslE,GAAG,IAAI,IAAItrE,EAAE,EAAEyM,EAAE6+D,EAAEprE,OAAOF,EAAEyM,EAAEzM,IAAIqiE,EAAE79D,IAAI8mE,EAAEtrE,GAAG8iC,QAAQu/B,EAAEkzG,QAAQjqG,KAAKjJ,EAAEkzG,QAAQjqG,GAAG,KAAKvkE,KAAK+7B,GAAG5d,EAAE7E,KAAKirD,KAAKjJ,EAAE+mG,eAAc,GAAI,OAAO/mG,CAAC,EAAEiJ,EAAE3rE,UAAUmvH,MAAM,SAASxjD,EAAEtlE,GAAG,IAAIkf,EAAE1jB,KAAK,SAASshC,IAAI5d,EAAE6pG,KAAKzjD,EAAExoC,GAAG98B,EAAEG,MAAM+e,EAAE9e,UAAU,CAAC,OAAO08B,EAAEmyB,GAAGjvD,EAAEkf,EAAE1gB,IAAI8mE,EAAExoC,GAAG5d,CAAC,EAAEomD,EAAE3rE,UAAUovH,KAAK,SAASzjD,EAAEpmD,GAAG,IAAI4d,EAAEthC,KAAK,IAAI4E,UAAUlG,OAAO,OAAO4iC,EAAEyyI,QAAQj3K,OAAOo0F,OAAO,MAAM5vD,EAAE,GAAG98B,EAAEslE,GAAG,CAAC,IAAI,IAAIjJ,EAAE,EAAEriE,EAAEsrE,EAAEprE,OAAOmiE,EAAEriE,EAAEqiE,IAAIv/B,EAAEisF,KAAKzjD,EAAEjJ,GAAGn9C,GAAG,OAAO4d,CAAC,CAAC,IAAIr2B,EAAEwY,EAAE6d,EAAEyyI,QAAQjqG,GAAG,IAAIrmD,EAAE,OAAO6d,EAAE,IAAI5d,EAAE,OAAO4d,EAAEyyI,QAAQjqG,GAAG,KAAKxoC,EAAE,IAAI,IAAI3B,EAAElc,EAAE/kB,OAAOihC,KAAK,IAAI10B,EAAEwY,EAAEkc,MAAMjc,GAAGzY,EAAEwoD,KAAK/vC,EAAE,CAACD,EAAEiC,OAAOia,EAAE,GAAG,KAAK,CAAC,OAAO2B,CAAC,EAAEwoC,EAAE3rE,UAAUgO,MAAM,SAAS29D,GAAG,IAAItlE,EAAExE,KAAK0jB,EAAElf,EAAEuvK,QAAQjqG,GAAG,GAAGpmD,EAAE,CAACA,EAAEA,EAAEhlB,OAAO,EAAE8lI,EAAE9gH,GAAGA,EAAE,IAAI,IAAI4d,EAAEkjG,EAAE5/H,UAAU,GAAGi8D,EAAE,sBAAsBl/D,OAAOmoE,EAAE,KAAKtrE,EAAE,EAAEyM,EAAEyY,EAAEhlB,OAAOF,EAAEyM,EAAEzM,IAAI2kJ,GAAGz/H,EAAEllB,GAAGgG,EAAE88B,EAAE98B,EAAEq8D,EAAE,CAAC,OAAOr8D,CAAC,CAAC,CAAp0B,CAAs0B+uK,IAAI,SAASzpG,GAAGA,EAAE3rE,UAAU81K,QAAQ,SAASnqG,EAAEtlE,GAAG,IAAIkf,EAAE1jB,KAAKshC,EAAE5d,EAAEliB,IAAIq/D,EAAEn9C,EAAEquJ,OAAOvzK,EAAE6oK,GAAG3jJ,GAAGA,EAAEquJ,OAAOjoG,EAAEpmD,EAAEliB,IAAIq/D,EAAEn9C,EAAEwwJ,UAAUrzG,EAAEiJ,GAAGpmD,EAAEwwJ,UAAUxwJ,EAAEliB,IAAIsoE,EAAEtlE,GAAE,GAAIhG,IAAI8iC,IAAIA,EAAE6yI,QAAQ,MAAMzwJ,EAAEliB,MAAMkiB,EAAEliB,IAAI2yK,QAAQzwJ,GAAG,IAAI,IAAIzY,EAAEyY,EAAEzY,GAAGA,EAAE6hH,QAAQ7hH,EAAEY,SAASZ,EAAE6hH,SAAS7hH,EAAEY,QAAQkmK,QAAQ9mK,EAAEY,QAAQrK,IAAIyJ,EAAEzJ,IAAIyJ,EAAEA,EAAEY,OAAO,EAAEi+D,EAAE3rE,UAAU8zK,aAAa,WAAWjyK,KAAKwoK,UAAUxoK,KAAKwoK,SAAS3wD,QAAQ,EAAE/tC,EAAE3rE,UAAUmF,SAAS,WAAW,IAAIwmE,EAAE9pE,KAAK,IAAI8pE,EAAE+lG,kBAAkB,CAACnI,GAAG59F,EAAE,iBAAiBA,EAAE+lG,mBAAkB,EAAG,IAAIrrK,EAAEslE,EAAEj+D,SAASrH,GAAGA,EAAEqrK,mBAAmB/lG,EAAEloE,SAAS6wK,UAAU/sI,EAAElhC,EAAEwG,UAAU8+D,GAAGA,EAAEo0F,OAAOvtG,OAAOmZ,EAAEumG,MAAMpQ,QAAQn2F,EAAEumG,MAAMpQ,OAAOW,UAAU92F,EAAE4+F,cAAa,EAAG5+F,EAAEoqG,UAAUpqG,EAAEioG,OAAO,MAAMrK,GAAG59F,EAAE,aAAaA,EAAEyjD,OAAOzjD,EAAEtoE,MAAMsoE,EAAEtoE,IAAI2yK,QAAQ,MAAMrqG,EAAEgjD,SAAShjD,EAAEgjD,OAAOlhH,OAAO,KAAK,CAAC,CAAC,CAA/uB,CAAivB2nK,IAAI,SAASzpG,GAAG46F,GAAG56F,EAAE3rE,WAAW2rE,EAAE3rE,UAAUgH,UAAU,SAAS2kE,GAAG,OAAO++F,GAAG/+F,EAAE9pE,KAAK,EAAE8pE,EAAE3rE,UAAUi2K,QAAQ,WAAW,IAAItqG,EAAE9pE,KAAK0jB,EAAEomD,EAAEloE,SAAS0/B,EAAE5d,EAAE7jB,OAAOghE,EAAEn9C,EAAEkuJ,aAAa/wG,GAAGiJ,EAAE2+F,aAAa3+F,EAAEqqE,aAAaixB,GAAGt7F,EAAEj+D,QAAQg1D,EAAE57D,KAAKm+J,YAAYt5F,EAAErpE,OAAOqpE,EAAEqqE,cAAcrqE,EAAE+7F,aAAaC,GAAGh8F,EAAE+7F,YAAY/7F,EAAEqqE,eAAerqE,EAAEgjD,OAAOjsD,EAAE,IAAIriE,EAAEyM,EAAEgzJ,GAAGx6I,EAAE4iJ,GAAG,IAAI9xG,GAAGuV,GAAGu8F,GAAGv8F,EAAEtrE,EAAE8iC,EAAEtiC,KAAK8qE,EAAEm6F,aAAan6F,EAAEo0E,eAAe,CAAC,MAAM15I,GAAGklK,GAAGllK,EAAEslE,EAAE,UAAUtrE,EAAEsrE,EAAEioG,MAAM,CAAC,QAAQ1L,GAAG5iJ,EAAE8wC,GAAGtpD,EAAE,CAAC,OAAOzG,EAAEhG,IAAI,IAAIA,EAAEE,SAASF,EAAEA,EAAE,IAAIA,aAAa2/J,KAAK3/J,EAAEwgK,MAAMxgK,EAAEoN,OAAOi1D,EAAEriE,CAAC,CAAC,CAAtgB,CAAwgB+0K,IAAI,IAAIc,GAAG,CAACvpK,OAAOwrB,OAAOh4B,OAAOg2K,GAAG,CAAC/0K,KAAK,aAAakzK,UAAS,EAAGjzK,MAAM,CAAC+0K,QAAQF,GAAG78G,QAAQ68G,GAAGxwI,IAAI,CAAC/4B,OAAOoC,SAASrK,QAAQ,CAAC2xK,WAAW,WAAW,IAAI1qG,EAAE9pE,KAAKwE,EAAEslE,EAAEpS,MAAMh0C,EAAEomD,EAAEphE,KAAK44B,EAAEwoC,EAAE2qG,aAAa5zG,EAAEiJ,EAAE4qG,WAAW,GAAGpzI,EAAE,CAAC,IAAI9iC,EAAE8iC,EAAE/6B,IAAI0E,EAAEq2B,EAAE76B,kBAAkBgd,EAAE6d,EAAEx3B,iBAAiBtF,EAAEq8D,GAAG,CAACthE,KAAKo0K,GAAGlwJ,GAAGld,IAAI/H,EAAEiI,kBAAkBwE,GAAGyY,EAAEne,KAAKs7D,GAAG7gE,KAAK6jC,KAAKngB,EAAEhlB,OAAO4vB,SAAStuB,KAAK6jC,MAAMiwI,GAAGtvK,EAAEkf,EAAE,GAAGA,EAAE1jB,KAAK+xK,QAAQ/xK,KAAKy0K,aAAa,IAAI,CAAC,GAAG10K,QAAQ,WAAWC,KAAK03D,MAAM56D,OAAOo0F,OAAO,MAAMlxF,KAAK0I,KAAK,EAAE,EAAEisK,UAAU,WAAW,IAAI,IAAI7qG,KAAK9pE,KAAK03D,MAAMo8G,GAAG9zK,KAAK03D,MAAMoS,EAAE9pE,KAAK0I,KAAK,EAAEnH,QAAQ,WAAW,IAAIuoE,EAAE9pE,KAAKA,KAAKw0K,aAAax0K,KAAKkC,OAAO,WAAU,SAAUsC,GAAGqvK,GAAG/pG,GAAE,SAAUA,GAAG,OAAO8pG,GAAGpvK,EAAEslE,EAAG,GAAG,IAAG9pE,KAAKkC,OAAO,WAAU,SAAUsC,GAAGqvK,GAAG/pG,GAAE,SAAUA,GAAG,OAAO8pG,GAAGpvK,EAAEslE,EAAG,GAAG,GAAE,EAAE1oE,QAAQ,WAAWpB,KAAKw0K,YAAY,EAAE30K,OAAO,WAAW,IAAIiqE,EAAE9pE,KAAKS,OAAO3C,QAAQ0G,EAAE+hK,GAAGz8F,GAAGpmD,EAAElf,GAAGA,EAAEsF,iBAAiB,GAAG4Z,EAAE,CAAC,IAAI4d,EAAEqyI,GAAGjwJ,GAAGm9C,EAAE7gE,KAAKu0K,QAAQ/1K,EAAEwB,KAAKw3D,QAAQ,GAAGqJ,KAAKv/B,IAAIsyI,GAAG/yG,EAAEv/B,KAAK9iC,GAAG8iC,GAAGsyI,GAAGp1K,EAAE8iC,GAAG,OAAO98B,EAAE,IAAIyG,EAAEjL,KAAK03D,MAAMj0C,EAAEzjB,KAAK0I,KAAKi3B,EAAE,MAAMn7B,EAAE1F,IAAI4kB,EAAE20E,KAAK85E,KAAKzuJ,EAAEnd,IAAI,KAAK5E,OAAO+hB,EAAEnd,KAAK,IAAI/B,EAAE1F,IAAImM,EAAE00B,IAAIn7B,EAAEiC,kBAAkBwE,EAAE00B,GAAGl5B,kBAAkBi/B,EAAEjiB,EAAEkc,GAAGlc,EAAEle,KAAKo6B,KAAK3/B,KAAKy0K,aAAajwK,EAAExE,KAAK00K,WAAW/0I,GAAGn7B,EAAES,KAAKwsK,WAAU,CAAE,CAAC,OAAOjtK,GAAGslE,GAAGA,EAAE,EAAE,GAAG8qG,GAAG,CAACC,UAAUP,KAAK,SAASxqG,GAAG,IAAItlE,EAAE,CAAC0vB,IAAI,WAAW,OAAOovG,CAAC,GAAGxmI,OAAOC,eAAe+sE,EAAE,SAAStlE,GAAGslE,EAAEimD,KAAK,CAACjQ,KAAK8yD,GAAGntK,OAAOgzI,EAAEq8B,aAAa9D,GAAGhhD,eAAe8wC,IAAIh3F,EAAE9rC,IAAImjI,GAAGr3F,EAAEirG,OAAOzT,GAAGx3F,EAAE6jG,SAAS9E,GAAG/+F,EAAEkrG,WAAW,SAASlrG,GAAG,OAAOi3F,GAAGj3F,GAAGA,CAAC,EAAEA,EAAE/hE,QAAQjL,OAAOo0F,OAAO,MAAM+lD,EAAErzI,SAAQ,SAAUY,GAAGslE,EAAE/hE,QAAQvD,EAAE,KAAK1H,OAAOo0F,OAAO,KAAM,IAAGpnB,EAAE/hE,QAAQ+mH,MAAMhlD,EAAE2uE,EAAE3uE,EAAE/hE,QAAQuY,WAAWs0J,IAAI,SAAS9qG,GAAGA,EAAE5rD,IAAI,SAAS4rD,GAAG,IAAItlE,EAAExE,KAAKi1K,oBAAoBj1K,KAAKi1K,kBAAkB,IAAI,GAAGzwK,EAAEzD,QAAQ+oE,IAAI,EAAE,OAAO9pE,KAAK,IAAI0jB,EAAE8gH,EAAE5/H,UAAU,GAAG,OAAO8e,EAAEogC,QAAQ9jD,MAAMiL,EAAE6+D,EAAEsrD,SAAStrD,EAAEsrD,QAAQzwH,MAAMmlE,EAAEpmD,GAAGzY,EAAE6+D,IAAIA,EAAEnlE,MAAM,KAAK+e,GAAGlf,EAAEe,KAAKukE,GAAG9pE,IAAI,CAAC,CAA1O,CAA4O8pE,GAAG,SAASA,GAAGA,EAAEvhE,MAAM,SAASuhE,GAAG,OAAO9pE,KAAK+H,QAAQipK,GAAGhxK,KAAK+H,QAAQ+hE,GAAG9pE,IAAI,CAAC,CAA5E,CAA8E8pE,GAAG2pG,GAAG3pG,GAAG,SAASA,GAAGmtE,EAAErzI,SAAQ,SAAUY,GAAGslE,EAAEtlE,GAAG,SAASslE,EAAEpmD,GAAG,OAAOA,GAAG,cAAclf,GAAGi3D,EAAE/3C,KAAKA,EAAEnkB,KAAKmkB,EAAEnkB,MAAMuqE,EAAEpmD,EAAE1jB,KAAK+H,QAAQ+mH,MAAMrpH,OAAOie,IAAI,cAAclf,GAAGyG,EAAEyY,KAAKA,EAAE,CAACzX,KAAKyX,EAAEm0F,OAAOn0F,IAAI1jB,KAAK+H,QAAQvD,EAAE,KAAKslE,GAAGpmD,EAAEA,GAAG1jB,KAAK+H,QAAQvD,EAAE,KAAKslE,EAAE,CAAE,GAAE,CAA5O,CAA8OA,EAAE,CAAz5B,CAA25BypG,IAAIz2K,OAAOC,eAAew2K,GAAGp1K,UAAU,YAAY,CAAC+1B,IAAIwpH,KAAK5gJ,OAAOC,eAAew2K,GAAGp1K,UAAU,cAAc,CAAC+1B,IAAI,WAAW,OAAOl0B,KAAK8sH,QAAQ9sH,KAAK8sH,OAAO8+B,UAAU,IAAI9uJ,OAAOC,eAAew2K,GAAG,0BAA0B,CAACt2K,MAAMg0K,KAAKsC,GAAGl0K,QAAQqsK,GAAG,IAAIwJ,GAAG/1K,EAAE,eAAeg2K,GAAGh2K,EAAE,yCAAyCi2K,GAAG,SAAStrG,EAAEtlE,EAAEkf,GAAG,MAAM,UAAUA,GAAGyxJ,GAAGrrG,IAAI,WAAWtlE,GAAG,aAAakf,GAAG,WAAWomD,GAAG,YAAYpmD,GAAG,UAAUomD,GAAG,UAAUpmD,GAAG,UAAUomD,CAAC,EAAEurG,GAAGl2K,EAAE,wCAAwCm2K,GAAGn2K,EAAE,sCAAsCo2K,GAAG,SAASzrG,EAAEtlE,GAAG,OAAOgxK,GAAGhxK,IAAI,UAAUA,EAAE,QAAQ,oBAAoBslE,GAAGwrG,GAAG9wK,GAAGA,EAAE,MAAM,EAAEixK,GAAGt2K,EAAE,8XAA8Xu2K,GAAG,+BAA+BC,GAAG,SAAS7rG,GAAG,MAAM,MAAMA,EAAEp/D,OAAO,IAAI,UAAUo/D,EAAEl/D,MAAM,EAAE,EAAE,EAAEgrK,GAAG,SAAS9rG,GAAG,OAAO6rG,GAAG7rG,GAAGA,EAAEl/D,MAAM,EAAEk/D,EAAEprE,QAAQ,EAAE,EAAE82K,GAAG,SAAS1rG,GAAG,OAAO,MAAMA,IAAG,IAAKA,CAAC,EAAE,SAAS+rG,GAAG/rG,GAAG,IAAI,IAAItlE,EAAEslE,EAAE7kE,KAAKye,EAAEomD,EAAEjJ,EAAEiJ,EAAExoC,EAAEu/B,EAAEp6D,qBAAqBo6D,EAAEA,EAAEp6D,kBAAkBsrK,SAASlxG,EAAE57D,OAAOT,EAAEsxK,GAAGj1G,EAAE57D,KAAKT,IAAI,KAAK88B,EAAE5d,EAAEA,EAAE9X,SAAS8X,GAAGA,EAAEze,OAAOT,EAAEsxK,GAAGtxK,EAAEkf,EAAEze,OAAO,OAAO,SAAS6kE,EAAEtlE,GAAG,OAAG88B,EAAEwoC,IAAIxoC,EAAE98B,GAAUuxK,GAAGjsG,EAAE62C,GAAGn8G,IAAU,EAAE,CAAvD,CAAyDA,EAAE65I,YAAY75I,EAAE85I,MAAM,CAAC,SAASw3B,GAAGhsG,EAAEtlE,GAAG,MAAM,CAAC65I,YAAY03B,GAAGjsG,EAAEu0E,YAAY75I,EAAE65I,aAAaC,MAAMh9G,EAAEwoC,EAAEw0E,OAAO,CAACx0E,EAAEw0E,MAAM95I,EAAE85I,OAAO95I,EAAE85I,MAAM,CAAC,SAASy3B,GAAGjsG,EAAEtlE,GAAG,OAAOslE,EAAEtlE,EAAEslE,EAAE,IAAItlE,EAAEslE,EAAEtlE,GAAG,EAAE,CAAC,SAASm8G,GAAG72C,GAAG,OAAOxrE,MAAMC,QAAQurE,GAAG,SAASA,GAAG,IAAI,IAAItlE,EAAEkf,EAAE,GAAGm9C,EAAE,EAAEriE,EAAEsrE,EAAEprE,OAAOmiE,EAAEriE,EAAEqiE,IAAIv/B,EAAE98B,EAAEm8G,GAAG72C,EAAEjJ,MAAM,KAAKr8D,IAAIkf,IAAIA,GAAG,KAAKA,GAAGlf,GAAG,OAAOkf,CAAC,CAApG,CAAsGomD,GAAGrmD,EAAEqmD,GAAG,SAASA,GAAG,IAAItlE,EAAE,GAAG,IAAI,IAAIkf,KAAKomD,EAAEA,EAAEpmD,KAAKlf,IAAIA,GAAG,KAAKA,GAAGkf,GAAG,OAAOlf,CAAC,CAArE,CAAuEslE,GAAG,iBAAiBA,EAAEA,EAAE,EAAE,CAAC,IAAIksG,GAAG,CAACC,IAAI,6BAA6BC,KAAK,sCAAsCC,GAAGh3K,EAAE,snBAAsnBi3K,GAAGj3K,EAAE,kNAAiN,GAAIk3K,GAAG,SAASvsG,GAAG,OAAOqsG,GAAGrsG,IAAIssG,GAAGtsG,EAAE,EAAE,SAASwsG,GAAGxsG,GAAG,OAAOssG,GAAGtsG,GAAG,MAAM,SAASA,EAAE,YAAO,CAAM,CAAC,IAAIysG,GAAGz5K,OAAOo0F,OAAO,MAAUslF,GAAGr3K,EAAE,6CAA6C,SAASs3K,GAAG3sG,GAAG,MAAG,iBAAiBA,EAAS1kE,SAASupB,cAAcm7C,IAAa1kE,SAAStF,cAAc,OAAcgqE,CAAC,CAAC,IAAI4sG,GAAG55K,OAAO61I,OAAO,CAACkuB,UAAU,KAAK/gK,cAAc,SAASgqE,EAAEtlE,GAAG,IAAIkf,EAAEte,SAAStF,cAAcgqE,GAAG,MAAM,WAAWA,GAAGtlE,EAAES,MAAMT,EAAES,KAAKsgE,YAAO,IAAS/gE,EAAES,KAAKsgE,MAAM27C,UAAUx9F,EAAE++F,aAAa,WAAW,YAAY/+F,CAAC,EAAEizJ,gBAAgB,SAAS7sG,EAAEtlE,GAAG,OAAOY,SAASuxK,gBAAgBX,GAAGlsG,GAAGtlE,EAAE,EAAEm7I,eAAe,SAAS71E,GAAG,OAAO1kE,SAASu6I,eAAe71E,EAAE,EAAE8sG,cAAc,SAAS9sG,GAAG,OAAO1kE,SAASwxK,cAAc9sG,EAAE,EAAEu1E,aAAa,SAASv1E,EAAEtlE,EAAEkf,GAAGomD,EAAEu1E,aAAa76I,EAAEkf,EAAE,EAAE67H,YAAY,SAASz1E,EAAEtlE,GAAGslE,EAAEy1E,YAAY/6I,EAAE,EAAEq0I,YAAY,SAAS/uE,EAAEtlE,GAAGslE,EAAE+uE,YAAYr0I,EAAE,EAAE+6G,WAAW,SAASz1C,GAAG,OAAOA,EAAEy1C,UAAU,EAAE6/B,YAAY,SAASt1E,GAAG,OAAOA,EAAEs1E,WAAW,EAAE71I,QAAQ,SAASugE,GAAG,OAAOA,EAAEvgE,OAAO,EAAEstK,eAAe,SAAS/sG,EAAEtlE,GAAGslE,EAAE73C,YAAYztB,CAAC,EAAEsyK,cAAc,SAAShtG,EAAEtlE,GAAGslE,EAAE24C,aAAaj+G,EAAE,GAAG,IAAI87D,GAAG,CAAC4wB,OAAO,SAASpnB,EAAEtlE,GAAGuyK,GAAGvyK,EAAE,EAAEqzG,OAAO,SAAS/tC,EAAEtlE,GAAGslE,EAAE7kE,KAAKmH,MAAM5H,EAAES,KAAKmH,MAAM2qK,GAAGjtG,GAAE,GAAIitG,GAAGvyK,GAAG,EAAErB,QAAQ,SAAS2mE,GAAGitG,GAAGjtG,GAAE,EAAG,GAAG,SAASitG,GAAGjtG,EAAEpmD,GAAG,IAAIm9C,EAAEiJ,EAAE7kE,KAAKmH,IAAI,GAAGk1B,EAAEu/B,GAAG,CAAC,IAAIriE,EAAEsrE,EAAEzgD,QAAQ5F,EAAEqmD,EAAErjE,mBAAmBqjE,EAAEk/C,IAAIrpF,EAAEjc,EAAE,KAAKD,EAAEg4C,EAAE/3C,OAAE,EAAOD,EAAE,GAAGxY,EAAE41D,GAAGsiF,GAAGtiF,EAAEriE,EAAE,CAACmhC,GAAGnhC,EAAE,6BAA6B,CAAC,IAAIw5D,EAAE8R,EAAE7kE,KAAK+xK,SAASpzJ,EAAE,iBAAiBi9C,GAAG,iBAAiBA,EAAEpgC,EAAEwgI,GAAGpgG,GAAGqkE,EAAE1mI,EAAEsN,MAAM,GAAG8X,GAAG6c,EAAE,GAAGu3B,EAAE,CAAC,IAAI7jC,EAAEvQ,EAAEshH,EAAErkE,GAAGA,EAAE5jE,MAAMymB,EAAElf,EAAE2vB,IAAIuR,EAAEvR,EAAE1Q,GAAGjf,EAAE2vB,GAAGA,EAAEtB,SAASpP,IAAI0Q,EAAE5uB,KAAKke,GAAGG,GAAGshH,EAAErkE,GAAG,CAACp9C,GAAGwzJ,GAAGz4K,EAAEqiE,EAAEqkE,EAAErkE,KAAKA,EAAE5jE,MAAM,CAACwmB,EAAE,MAAM,GAAGG,EAAE,CAAC,GAAGF,GAAGwhH,EAAErkE,KAAKp9C,EAAE,OAAOyhH,EAAErkE,GAAGpF,EAAEw7G,GAAGz4K,EAAEqiE,EAAElhC,EAAE,MAAM,GAAGc,EAAE,CAAC,GAAG/c,GAAGm9C,EAAE5jE,QAAQwmB,EAAE,OAAOo9C,EAAE5jE,MAAM0iC,CAAC,CAAC,CAAC,CAAC,CAAC,SAASs3I,GAAGntG,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAEwoC,EAAEqmG,YAAY7uI,GAAG0C,EAAE1C,EAAE98B,KAAKy8J,GAAG3/H,EAAE98B,IAAI88B,EAAE98B,GAAGvH,MAAMymB,EAAE4d,EAAE98B,GAAGkf,EAAE,CAAC,IAAIwzJ,GAAG,IAAI/Y,GAAG,GAAG,CAAC,EAAE,IAAIgZ,GAAG,CAAC,SAAS,WAAW,SAAS,SAAS,WAAW,SAASC,GAAGttG,EAAEtlE,GAAG,OAAOslE,EAAEhrE,MAAM0F,EAAE1F,KAAKgrE,EAAE+0F,eAAer6J,EAAEq6J,eAAe/0F,EAAEvjE,MAAM/B,EAAE+B,KAAKujE,EAAE40F,YAAYl6J,EAAEk6J,WAAWp9H,EAAEwoC,EAAE7kE,QAAQq8B,EAAE98B,EAAES,OAAO,SAAS6kE,EAAEtlE,GAAG,GAAG,UAAUslE,EAAEvjE,IAAI,OAAM,EAAG,IAAImd,EAAEm9C,EAAEv/B,EAAE5d,EAAEomD,EAAE7kE,OAAOq8B,EAAE5d,EAAEA,EAAE6hD,QAAQ7hD,EAAEhkB,KAAKlB,EAAE8iC,EAAE5d,EAAElf,EAAES,OAAOq8B,EAAE5d,EAAEA,EAAE6hD,QAAQ7hD,EAAEhkB,KAAK,OAAOmhE,IAAIriE,GAAGg4K,GAAG31G,IAAI21G,GAAGh4K,EAAE,CAAlJ,CAAoJsrE,EAAEtlE,IAAIq8D,EAAEiJ,EAAEi1F,qBAAqBr7I,EAAElf,EAAEq6J,aAAav4I,OAAO,CAAC,SAAS+wJ,GAAGvtG,EAAEtlE,EAAEkf,GAAG,IAAIm9C,EAAEriE,EAAEyM,EAAE,CAAC,EAAE,IAAI41D,EAAEr8D,EAAEq8D,GAAGn9C,IAAIm9C,EAAEv/B,EAAE9iC,EAAEsrE,EAAEjJ,GAAG/hE,OAAOmM,EAAEzM,GAAGqiE,GAAG,OAAO51D,CAAC,CAAC,IAAIqsK,GAAG,CAACpmF,OAAOyzE,GAAG9sD,OAAO8sD,GAAGxhK,QAAQ,SAAS2mE,GAAG66F,GAAG76F,EAAEotG,GAAG,GAAG,SAASvS,GAAG76F,EAAEtlE,IAAIslE,EAAE7kE,KAAKqhH,YAAY9hH,EAAES,KAAKqhH,aAAa,SAASx8C,EAAEtlE,GAAG,IAAIkf,EAAE4d,EAAEu/B,EAAEriE,EAAEsrE,IAAIotG,GAAGjsK,EAAEzG,IAAI0yK,GAAGzzJ,EAAE8zJ,GAAGztG,EAAE7kE,KAAKqhH,WAAWx8C,EAAEzgD,SAASsW,EAAE43I,GAAG/yK,EAAES,KAAKqhH,WAAW9hH,EAAE6kB,SAASoyC,EAAE,GAAGzD,EAAE,GAAG,IAAIt0C,KAAKic,EAAE2B,EAAE7d,EAAEC,GAAGm9C,EAAElhC,EAAEjc,GAAG4d,GAAGu/B,EAAEv+D,SAASg/B,EAAErkC,MAAM4jE,EAAE22G,OAAOl2I,EAAE4tD,IAAIuoF,GAAG52G,EAAE,SAASr8D,EAAEslE,GAAGjJ,EAAE4+C,KAAK5+C,EAAE4+C,IAAIi4D,kBAAkB1/G,EAAEzyD,KAAKs7D,KAAK42G,GAAG52G,EAAE,OAAOr8D,EAAEslE,GAAGjJ,EAAE4+C,KAAK5+C,EAAE4+C,IAAI2Q,UAAU30D,EAAEl2D,KAAKs7D,IAAI,GAAGpF,EAAE/8D,OAAO,CAAC,IAAIklB,EAAE,WAAW,IAAI,IAAIF,EAAE,EAAEA,EAAE+3C,EAAE/8D,OAAOglB,IAAI+zJ,GAAGh8G,EAAE/3C,GAAG,WAAWlf,EAAEslE,EAAE,EAAEtrE,EAAEokK,GAAGp+J,EAAE,SAASof,GAAGA,GAAG,CAAsG,GAArGo0C,EAAEt5D,QAAQkkK,GAAGp+J,EAAE,aAAY,WAAY,IAAI,IAAIkf,EAAE,EAAEA,EAAEs0C,EAAEt5D,OAAOglB,IAAI+zJ,GAAGz/G,EAAEt0C,GAAG,mBAAmBlf,EAAEslE,EAAG,KAAOtrE,EAAE,IAAIklB,KAAKD,EAAEkc,EAAEjc,IAAI+zJ,GAAGh0J,EAAEC,GAAG,SAASomD,EAAEA,EAAE7+D,EAAE,CAAniB,CAAqiB6+D,EAAEtlE,EAAE,CAAC,IAAImzK,GAAG76K,OAAOo0F,OAAO,MAAM,SAASqmF,GAAGztG,EAAEtlE,GAAG,IAAIkf,EAAE4d,EAAEu/B,EAAE/jE,OAAOo0F,OAAO,MAAM,IAAIpnB,EAAE,OAAOjJ,EAAE,IAAIn9C,EAAE,EAAEA,EAAEomD,EAAEprE,OAAOglB,IAAI,CAAC,IAAI4d,EAAEwoC,EAAEpmD,IAAIwjG,YAAY5lF,EAAE4lF,UAAUywD,IAAI92G,EAAE+2G,GAAGt2I,IAAIA,EAAE98B,EAAE2rK,aAAa3rK,EAAE2rK,YAAYC,MAAM,CAAC,IAAI5xK,EAAE8iC,EAAEm+E,KAAK6jD,GAAG9+J,EAAE,cAAc,KAAK88B,EAAE/hC,MAAM+hC,EAAEm+E,IAAI,mBAAmBjhH,EAAE,CAACyN,KAAKzN,EAAEq5G,OAAOr5G,GAAGA,CAAC,CAAC8iC,EAAEm+E,IAAIn+E,EAAEm+E,KAAK6jD,GAAG9+J,EAAE5C,SAAS,aAAa0/B,EAAE/hC,KAAK,CAAC,OAAOshE,CAAC,CAAC,SAAS+2G,GAAG9tG,GAAG,OAAOA,EAAEi1E,SAAS,GAAGp9I,OAAOmoE,EAAEvqE,KAAK,KAAKoC,OAAO7E,OAAO4L,KAAKohE,EAAEo9C,WAAW,CAAC,GAAGr8G,KAAK,KAAK,CAAC,SAAS4sK,GAAG3tG,EAAEtlE,EAAEkf,EAAE4d,EAAEu/B,GAAG,IAAIriE,EAAEsrE,EAAE21C,KAAK31C,EAAE21C,IAAIj7G,GAAG,GAAGhG,EAAE,IAAIA,EAAEklB,EAAEslG,IAAIl/C,EAAEpmD,EAAE4d,EAAEu/B,EAAE,CAAC,MAAMv/B,GAAGooI,GAAGpoI,EAAE5d,EAAE2F,QAAQ,aAAa1nB,OAAOmoE,EAAEvqE,KAAK,KAAKoC,OAAO6C,EAAE,SAAS,CAAC,CAAC,IAAIqzK,GAAG,CAACv3G,GAAGg3G,IAAI,SAASQ,GAAGhuG,EAAEtlE,GAAG,IAAIhG,EAAEgG,EAAEsF,iBAAiB,KAAKw3B,EAAE9iC,KAAI,IAAKA,EAAE65F,KAAKtwF,QAAQgwK,cAAcr0J,EAAEomD,EAAE7kE,KAAKsgE,QAAQ7hD,EAAElf,EAAES,KAAKsgE,QAAQ,CAAC,IAAIt6D,EAAEwY,EAAEkc,EAAEn7B,EAAEwkH,IAAIvtD,EAAEqO,EAAE7kE,KAAKsgE,OAAO,CAAC,EAAEvN,EAAExzD,EAAES,KAAKsgE,OAAO,CAAC,EAAE,IAAIt6D,KAAKq2B,EAAE02B,EAAEioG,SAASp/F,EAAE7I,EAAEggH,kBAAkBhgH,EAAExzD,EAAES,KAAKsgE,MAAMkzE,EAAE,CAAC,EAAEzgF,IAAIA,EAAEv0C,EAAEu0C,EAAE/sD,GAAGwwD,EAAExwD,KAAKwY,GAAGw0J,GAAGt4I,EAAE10B,EAAEwY,EAAEjf,EAAES,KAAKo+J,KAAK,IAAIp4J,KAAKoyI,GAAGtZ,IAAI/rE,EAAE/6D,QAAQw+D,EAAEx+D,OAAOg7K,GAAGt4I,EAAE,QAAQq4B,EAAE/6D,OAAOw+D,EAAE/3C,EAAEs0C,EAAE/sD,MAAM0qK,GAAG1qK,GAAG00B,EAAEu4I,kBAAkBxC,GAAGE,GAAG3qK,IAAIoqK,GAAGpqK,IAAI00B,EAAEw4I,gBAAgBltK,GAAG,CAAC,CAAC,SAASgtK,GAAGnuG,EAAEtlE,EAAEkf,EAAE4d,GAAGA,GAAGwoC,EAAEvgE,QAAQxI,QAAQ,MAAM,EAAEq3K,GAAGtuG,EAAEtlE,EAAEkf,GAAG+xJ,GAAGjxK,GAAGgxK,GAAG9xJ,GAAGomD,EAAEquG,gBAAgB3zK,IAAIkf,EAAE,oBAAoBlf,GAAG,UAAUslE,EAAEvgE,QAAQ,OAAO/E,EAAEslE,EAAE24C,aAAaj+G,EAAEkf,IAAI2xJ,GAAG7wK,GAAGslE,EAAE24C,aAAaj+G,EAAE+wK,GAAG/wK,EAAEkf,IAAIiyJ,GAAGnxK,GAAGgxK,GAAG9xJ,GAAGomD,EAAEouG,kBAAkBxC,GAAGE,GAAGpxK,IAAIslE,EAAEuuG,eAAe3C,GAAGlxK,EAAEkf,GAAG00J,GAAGtuG,EAAEtlE,EAAEkf,EAAE,CAAC,SAAS00J,GAAGtuG,EAAEtlE,EAAEkf,GAAG,GAAG8xJ,GAAG9xJ,GAAGomD,EAAEquG,gBAAgB3zK,OAAO,CAAC,GAAG64I,IAAItb,GAAG,aAAaj4D,EAAEvgE,SAAS,gBAAgB/E,GAAG,KAAKkf,IAAIomD,EAAEwuG,OAAO,CAAC,IAAIh3I,EAAE,SAAS98B,GAAGA,EAAEiqB,2BAA2Bq7C,EAAE2jD,oBAAoB,QAAQnsF,EAAE,EAAEwoC,EAAEogD,iBAAiB,QAAQ5oF,GAAGwoC,EAAEwuG,QAAO,CAAE,CAACxuG,EAAE24C,aAAaj+G,EAAEkf,EAAE,CAAC,CAAC,IAAI60J,GAAG,CAACrnF,OAAO4mF,GAAGjgE,OAAOigE,IAAI,SAASU,GAAG1uG,EAAEtlE,GAAG,IAAIq8D,EAAEr8D,EAAEwkH,IAAIxqH,EAAEgG,EAAES,KAAKgG,EAAE6+D,EAAE7kE,KAAK,KAAKye,EAAEllB,EAAE6/I,cAAc36H,EAAEllB,EAAE8/I,SAAS56H,EAAEzY,IAAIyY,EAAEzY,EAAEozI,cAAc36H,EAAEzY,EAAEqzI,SAAS,CAAC,IAAI76H,EAAEoyJ,GAAGrxK,GAAGm7B,EAAEkhC,EAAE43G,mBAAmBn3I,EAAE3B,KAAKlc,EAAEsyJ,GAAGtyJ,EAAEk9F,GAAGhhF,KAAKlc,IAAIo9C,EAAE63G,aAAa73G,EAAE4hD,aAAa,QAAQh/F,GAAGo9C,EAAE63G,WAAWj1J,EAAE,CAAC,CAAC,IAAIk1J,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAG,CAAC/nF,OAAOsnF,GAAG3gE,OAAO2gE,IAAIU,GAAG,gBAAgB,SAASC,GAAGrvG,GAAG,IAAItlE,EAAEkf,EAAE4d,EAAEu/B,EAAEriE,EAAEyM,GAAE,EAAGwY,GAAE,EAAGkc,GAAE,EAAG87B,GAAE,EAAGzD,EAAE,EAAEp0C,EAAE,EAAE6c,EAAE,EAAEykG,EAAE,EAAE,IAAI5jG,EAAE,EAAEA,EAAEwoC,EAAEprE,OAAO4iC,IAAI,GAAG5d,EAAElf,EAAEA,EAAEslE,EAAEjS,WAAWv2B,GAAGr2B,EAAE,KAAKzG,GAAG,KAAKkf,IAAIzY,GAAE,QAAS,GAAGwY,EAAE,KAAKjf,GAAG,KAAKkf,IAAID,GAAE,QAAS,GAAGkc,EAAE,KAAKn7B,GAAG,KAAKkf,IAAIic,GAAE,QAAS,GAAG87B,EAAE,KAAKj3D,GAAG,KAAKkf,IAAI+3C,GAAE,QAAS,GAAG,MAAMj3D,GAAG,MAAMslE,EAAEjS,WAAWv2B,EAAE,IAAI,MAAMwoC,EAAEjS,WAAWv2B,EAAE,IAAI02B,GAAGp0C,GAAG6c,EAAE,CAAC,OAAOj8B,GAAG,KAAK,GAAGif,GAAE,EAAG,MAAM,KAAK,GAAGxY,GAAE,EAAG,MAAM,KAAK,GAAG00B,GAAE,EAAG,MAAM,KAAK,GAAGc,IAAI,MAAM,KAAK,GAAGA,IAAI,MAAM,KAAK,GAAG7c,IAAI,MAAM,KAAK,GAAGA,IAAI,MAAM,KAAK,IAAIo0C,IAAI,MAAM,KAAK,IAAIA,IAAI,GAAG,KAAKxzD,EAAE,CAAC,IAAI,IAAI2vB,EAAEmN,EAAE,EAAEniC,OAAE,EAAOg1B,GAAG,GAAG,OAAOh1B,EAAE2qE,EAAEp/D,OAAOypB,IAAIA,KAAKh1B,GAAG+5K,GAAGr6J,KAAK1f,KAAKs8D,GAAE,EAAG,CAAC,WAAM,IAASoF,GAAGqkE,EAAE5jG,EAAE,EAAEu/B,EAAEiJ,EAAEl/D,MAAM,EAAE02B,GAAGlQ,QAAQwkC,IAAI,SAASA,KAAKp3D,IAAIA,EAAE,KAAK+G,KAAKukE,EAAEl/D,MAAMs6H,EAAE5jG,GAAGlQ,QAAQ8zG,EAAE5jG,EAAE,CAAC,CAAC,QAAG,IAASu/B,EAAEA,EAAEiJ,EAAEl/D,MAAM,EAAE02B,GAAGlQ,OAAO,IAAI8zG,GAAGtvE,IAAIp3D,EAAE,IAAI8iC,EAAE,EAAEA,EAAE9iC,EAAEE,OAAO4iC,IAAIu/B,EAAEu4G,GAAGv4G,EAAEriE,EAAE8iC,IAAI,OAAOu/B,CAAC,CAAC,SAASu4G,GAAGtvG,EAAEtlE,GAAG,IAAIkf,EAAElf,EAAEzD,QAAQ,KAAK,GAAG2iB,EAAE,EAAE,MAAM,OAAO/hB,OAAO6C,EAAE,OAAO7C,OAAOmoE,EAAE,KAAK,IAAIxoC,EAAE98B,EAAEoG,MAAM,EAAE8Y,GAAGm9C,EAAEr8D,EAAEoG,MAAM8Y,EAAE,GAAG,MAAM,OAAO/hB,OAAO2/B,EAAE,OAAO3/B,OAAOmoE,GAAGnoE,OAAO,MAAMk/D,EAAE,IAAIA,EAAEA,EAAE,CAAC,SAASw4G,GAAGvvG,EAAEtlE,GAAG2rB,QAAQ7J,MAAM,mBAAmB3kB,OAAOmoE,GAAG,CAAC,SAASwvG,GAAGxvG,EAAEtlE,GAAG,OAAOslE,EAAEA,EAAEt/D,KAAI,SAAUs/D,GAAG,OAAOA,EAAEtlE,EAAG,IAAGR,QAAO,SAAU8lE,GAAG,OAAOA,CAAE,IAAG,EAAE,CAAC,SAASyvG,GAAGzvG,EAAEtlE,EAAEkf,EAAE4d,EAAEu/B,IAAIiJ,EAAEtqE,QAAQsqE,EAAEtqE,MAAM,KAAK+F,KAAKi0K,GAAG,CAACj6K,KAAKiF,EAAEvH,MAAMymB,EAAE+1J,QAAQ54G,GAAGv/B,IAAIwoC,EAAE4vG,OAAM,CAAE,CAAC,SAASC,GAAG7vG,EAAEtlE,EAAEkf,EAAE4d,EAAEu/B,IAAIA,EAAEiJ,EAAE8vG,eAAe9vG,EAAE8vG,aAAa,IAAI9vG,EAAEvE,QAAQuE,EAAEvE,MAAM,KAAKhgE,KAAKi0K,GAAG,CAACj6K,KAAKiF,EAAEvH,MAAMymB,EAAE+1J,QAAQ54G,GAAGv/B,IAAIwoC,EAAE4vG,OAAM,CAAE,CAAC,SAASG,GAAG/vG,EAAEtlE,EAAEkf,EAAE4d,GAAGwoC,EAAEgwG,SAASt1K,GAAGkf,EAAEomD,EAAEiwG,UAAUx0K,KAAKi0K,GAAG,CAACj6K,KAAKiF,EAAEvH,MAAMymB,GAAG4d,GAAG,CAAC,SAAS04I,GAAGlwG,EAAEtlE,EAAEkf,EAAE4d,EAAEu/B,EAAEriE,EAAEyM,EAAEwY,IAAIqmD,EAAEw8C,aAAax8C,EAAEw8C,WAAW,KAAK/gH,KAAKi0K,GAAG,CAACj6K,KAAKiF,EAAEu6I,QAAQr7H,EAAEzmB,MAAMqkC,EAAE4tD,IAAIruB,EAAEo5G,aAAaz7K,EAAE0oH,UAAUj8G,GAAGwY,IAAIqmD,EAAE4vG,OAAM,CAAE,CAAC,SAASQ,GAAGpwG,EAAEtlE,EAAEkf,GAAG,OAAOA,EAAE,MAAM/hB,OAAO6C,EAAE,MAAM7C,OAAOmoE,EAAE,MAAMA,EAAEtlE,CAAC,CAAC,SAAS21K,GAAG31K,EAAEkf,EAAE4d,EAAEu/B,EAAEriE,EAAEyM,EAAEwY,EAAEkc,GAAG,IAAI87B,GAAGoF,EAAEA,GAAGiJ,GAAGhiB,MAAMnoB,EAAEjc,EAAE,IAAI/hB,OAAO+hB,EAAE,+BAA+B/hB,OAAO+hB,EAAE,KAAK,UAAUA,IAAIA,EAAE,qBAAqBm9C,EAAE/Y,OAAO+Y,EAAEu5G,SAASz6I,EAAEjc,EAAE,IAAI/hB,OAAO+hB,EAAE,2BAA2B/hB,OAAO+hB,EAAE,KAAK,UAAUA,IAAIA,EAAE,YAAYm9C,EAAE2hG,iBAAiB3hG,EAAE2hG,QAAQ9+I,EAAEw2J,GAAG,IAAIx2J,EAAEic,IAAIkhC,EAAEw1C,cAAcx1C,EAAEw1C,KAAK3yF,EAAEw2J,GAAG,IAAIx2J,EAAEic,IAAIkhC,EAAEspD,iBAAiBtpD,EAAEspD,QAAQzmG,EAAEw2J,GAAG,IAAIx2J,EAAEic,IAAIkhC,EAAEw5G,eAAex5G,EAAEw5G,OAAO5+G,EAAEj3D,EAAE81K,eAAe91K,EAAE81K,aAAa,CAAC,IAAI7+G,EAAEj3D,EAAE+gH,SAAS/gH,EAAE+gH,OAAO,CAAC,GAAG,IAAIvtD,EAAEwhH,GAAG,CAACv8K,MAAMqkC,EAAElQ,OAAOqoJ,QAAQ95I,GAAGlc,GAAGo9C,IAAIiJ,IAAI9R,EAAEkvD,UAAUrmD,GAAG,IAAIj9C,EAAE63C,EAAE/3C,GAAGplB,MAAMC,QAAQqlB,GAAGplB,EAAEolB,EAAEkgC,QAAQkU,GAAGp0C,EAAEre,KAAKyyD,GAAGyD,EAAE/3C,GAAGE,EAAEplB,EAAE,CAACw5D,EAAEp0C,GAAG,CAACA,EAAEo0C,GAAGA,EAAExzD,EAAEk1K,OAAM,CAAE,CAAC,SAASa,GAAGzwG,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAEk5I,GAAG1wG,EAAE,IAAItlE,IAAIg2K,GAAG1wG,EAAE,UAAUtlE,GAAG,GAAG,MAAM88B,EAAE,OAAO63I,GAAG73I,GAAG,IAAG,IAAK5d,EAAE,CAAC,IAAIm9C,EAAE25G,GAAG1wG,EAAEtlE,GAAG,GAAG,MAAMq8D,EAAE,OAAOt+D,KAAKC,UAAUq+D,EAAE,CAAC,CAAC,SAAS25G,GAAG1wG,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE,GAAG,OAAOA,EAAEwoC,EAAEgwG,SAASt1K,IAAI,IAAI,IAAIq8D,EAAEiJ,EAAEiwG,UAAUv7K,EAAE,EAAEyM,EAAE41D,EAAEniE,OAAOF,EAAEyM,EAAEzM,IAAI,GAAGqiE,EAAEriE,GAAGe,OAAOiF,EAAE,CAACq8D,EAAEn7C,OAAOlnB,EAAE,GAAG,KAAK,CAAC,OAAOklB,UAAUomD,EAAEgwG,SAASt1K,GAAG88B,CAAC,CAAC,SAASm5I,GAAG3wG,EAAEtlE,GAAG,IAAI,IAAIkf,EAAEomD,EAAEiwG,UAAUz4I,EAAE,EAAEu/B,EAAEn9C,EAAEhlB,OAAO4iC,EAAEu/B,EAAEv/B,IAAI,CAAC,IAAI9iC,EAAEklB,EAAE4d,GAAG,GAAG98B,EAAEqa,KAAKrgB,EAAEe,MAAM,OAAOmkB,EAAEgC,OAAO4b,EAAE,GAAG9iC,CAAC,CAAC,CAAC,SAASg7K,GAAG1vG,EAAEtlE,GAAG,OAAOA,IAAI,MAAMA,EAAE0oB,QAAQ48C,EAAE58C,MAAM1oB,EAAE0oB,OAAO,MAAM1oB,EAAE+oB,MAAMu8C,EAAEv8C,IAAI/oB,EAAE+oB,MAAMu8C,CAAC,CAAC,SAAS4wG,GAAG5wG,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,GAAG,CAAC,EAAEm9C,EAAEv/B,EAAE6yB,OAAO31D,EAAE,MAAMyM,EAAEzM,EAAE8iC,EAAElQ,OAAOnmB,EAAE,WAAWtJ,OAAOnD,EAAE,iBAAiB,KAAKmD,OAAOnD,EAAE,WAAW,KAAKmD,OAAOnD,EAAE,MAAMqiE,IAAI51D,EAAE,MAAMtJ,OAAOsJ,EAAE,MAAM,IAAIwY,EAAEk3J,GAAGn2K,EAAEyG,GAAG6+D,EAAEz9D,MAAM,CAACpP,MAAM,IAAI0E,OAAO6C,EAAE,KAAKsjH,WAAWvlH,KAAKC,UAAUgC,GAAG41B,SAAS,aAAaz4B,OAAOnD,EAAE,OAAOmD,OAAO8hB,EAAE,KAAK,CAAC,SAASk3J,GAAG7wG,EAAEtlE,GAAG,IAAIkf,EAAE,SAASomD,GAAG,GAAGA,EAAEA,EAAE14C,OAAOunJ,GAAG7uG,EAAEprE,OAAOorE,EAAE/oE,QAAQ,KAAK,GAAG+oE,EAAEhhE,YAAY,KAAK6vK,GAAG,EAAE,OAAOG,GAAGhvG,EAAEhhE,YAAY,OAAO,EAAE,CAAC8xK,IAAI9wG,EAAEl/D,MAAM,EAAEkuK,IAAIh6K,IAAI,IAAIgrE,EAAEl/D,MAAMkuK,GAAG,GAAG,KAAK,CAAC8B,IAAI9wG,EAAEhrE,IAAI,MAAsB,IAAhB85K,GAAG9uG,EAAEgvG,GAAGC,GAAGC,GAAG,GAAQ6B,MAAMC,GAAGjC,GAAGkC,MAAMC,GAAGnC,IAAI,KAAKA,IAAIoC,GAAGpC,IAAI,MAAM,CAAC+B,IAAI9wG,EAAEl/D,MAAM,EAAEmuK,IAAIj6K,IAAIgrE,EAAEl/D,MAAMmuK,GAAG,EAAEC,IAAI,CAA7R,CAA+RlvG,GAAG,OAAO,OAAOpmD,EAAE5kB,IAAI,GAAG6C,OAAOmoE,EAAE,KAAKnoE,OAAO6C,GAAG,QAAQ7C,OAAO+hB,EAAEk3J,IAAI,MAAMj5K,OAAO+hB,EAAE5kB,IAAI,MAAM6C,OAAO6C,EAAE,IAAI,CAAC,SAASu2K,KAAK,OAAOnC,GAAG/gH,aAAaihH,GAAG,CAAC,SAAS+B,KAAK,OAAO/B,IAAIH,EAAE,CAAC,SAASmC,GAAGhxG,GAAG,OAAO,KAAKA,GAAG,KAAKA,CAAC,CAAC,SAASmxG,GAAGnxG,GAAG,IAAItlE,EAAE,EAAE,IAAIu0K,GAAGD,IAAI+B,MAAM,GAAGC,GAAGhxG,EAAEixG,MAAMC,GAAGlxG,QAAQ,GAAG,KAAKA,GAAGtlE,IAAI,KAAKslE,GAAGtlE,IAAI,IAAIA,EAAE,CAACw0K,GAAGF,GAAG,KAAK,CAAC,CAAC,SAASkC,GAAGlxG,GAAG,IAAI,IAAItlE,EAAEslE,GAAG+wG,OAAO/wG,EAAEixG,QAAQv2K,IAAI,CAAC,IAAI02K,GAAGC,GAAG,MAAMC,GAAG,MAAM,SAASC,GAAGvxG,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE45I,GAAG,OAAO,SAASr6G,IAAI,OAAOr8D,EAAEG,MAAM,KAAKC,YAAY02K,GAAGxxG,EAAEjJ,EAAEn9C,EAAE4d,EAAE,CAAC,CAAC,IAAIiyB,GAAGy2G,MAAM1sB,IAAIpwI,OAAOowI,GAAG,KAAK,IAAI,SAASi+B,GAAGzxG,EAAEtlE,EAAEkf,EAAE4d,GAAG,GAAGiyB,GAAG,CAAC,IAAIsN,EAAEqnG,GAAG1pK,EAAEgG,EAAEA,EAAEhG,EAAEg9K,SAAS,SAAS1xG,GAAG,GAAGA,EAAEzsD,SAASysD,EAAEtT,eAAesT,EAAEu+F,WAAWxnG,GAAGiJ,EAAEu+F,WAAW,GAAGv+F,EAAEzsD,OAAOo+J,gBAAgBr2K,SAAS,OAAO5G,EAAEmG,MAAM3E,KAAK4E,UAAU,CAAC,CAACs2K,GAAGhxD,iBAAiBpgD,EAAEtlE,EAAEg5I,GAAG,CAACglB,QAAQ9+I,EAAEymG,QAAQ7oF,GAAG5d,EAAE,CAAC,SAAS43J,GAAGxxG,EAAEtlE,EAAEkf,EAAE4d,IAAIA,GAAG45I,IAAIztD,oBAAoB3jD,EAAEtlE,EAAEg3K,UAAUh3K,EAAEkf,EAAE,CAAC,SAASg4J,GAAG5xG,EAAEtlE,GAAG,IAAIkf,EAAEomD,EAAE7kE,KAAKwmB,MAAM/H,EAAElf,EAAES,KAAKwmB,IAAI,CAAC,IAAIo1C,EAAEr8D,EAAES,KAAKwmB,IAAI,CAAC,EAAEjtB,EAAEsrE,EAAE7kE,KAAKwmB,IAAI,CAAC,EAAEyvJ,GAAG12K,EAAEwkH,KAAKl/C,EAAEk/C,IAAI,SAASl/C,GAAG,GAAGxoC,EAAEwoC,EAAEqxG,KAAK,CAAC,IAAI32K,EAAE64I,EAAE,SAAS,QAAQvzE,EAAEtlE,GAAG,GAAG7C,OAAOmoE,EAAEqxG,IAAIrxG,EAAEtlE,IAAI,WAAWslE,EAAEqxG,GAAG,CAAC75I,EAAEwoC,EAAEsxG,OAAOtxG,EAAE9zD,OAAO,GAAGrU,OAAOmoE,EAAEsxG,IAAItxG,EAAE9zD,QAAQ,WAAW8zD,EAAEsxG,IAAI,CAA7J,CAA+Jv6G,GAAG8hG,GAAG9hG,EAAEriE,EAAE+8K,GAAGD,GAAGD,GAAG72K,EAAE6kB,SAAS6xJ,QAAG,CAAM,CAAC,CAAC,IAAIS,GAAGC,GAAG,CAAC1qF,OAAOwqF,GAAG7jE,OAAO6jE,GAAGv4K,QAAQ,SAAS2mE,GAAG,OAAO4xG,GAAG5xG,EAAEotG,GAAG,GAAG,SAAS32G,GAAGuJ,EAAEtlE,GAAG,IAAIkf,EAAEomD,EAAE7kE,KAAK25I,YAAYl7H,EAAElf,EAAES,KAAK25I,UAAU,CAAC,IAAIpgJ,EAAEyM,EAAEwY,EAAEjf,EAAEwkH,IAAIrpF,EAAEmqC,EAAE7kE,KAAK25I,UAAU,CAAC,EAAEnjF,EAAEj3D,EAAES,KAAK25I,UAAU,CAAC,EAAE,IAAIpgJ,KAAK8iC,EAAEm6B,EAAEwkG,SAASp/F,EAAEpF,EAAEu8G,kBAAkBv8G,EAAEj3D,EAAES,KAAK25I,SAASnG,EAAE,CAAC,EAAEh9E,IAAI97B,EAAEnhC,KAAKi9D,IAAIh4C,EAAEjlB,GAAG,IAAI,IAAIA,KAAKi9D,EAAE,CAAC,GAAGxwD,EAAEwwD,EAAEj9D,GAAG,gBAAgBA,GAAG,cAAcA,EAAE,CAAC,GAAGgG,EAAEsxC,WAAWtxC,EAAEsxC,SAASp3C,OAAO,GAAGuM,IAAI00B,EAAEnhC,GAAG,SAAS,IAAIilB,EAAE6O,WAAW5zB,QAAQ+kB,EAAE87H,YAAY97H,EAAE6O,WAAW,GAAG,CAAC,GAAG,UAAU9zB,GAAG,aAAailB,EAAEla,QAAQ,CAACka,EAAEo4J,OAAO5wK,EAAE,IAAI+sD,EAAEt0C,EAAEzY,GAAG,GAAGH,OAAOG,GAAG6wK,GAAGr4J,EAAEu0C,KAAKv0C,EAAExmB,MAAM+6D,EAAE,MAAM,GAAG,cAAcx5D,GAAG43K,GAAG3yJ,EAAEla,UAAUma,EAAED,EAAE4yC,WAAW,EAAEslH,GAAGA,IAAIv2K,SAAStF,cAAc,QAAQu2D,UAAU,QAAQ10D,OAAOsJ,EAAE,UAAU,IAAI,IAAI2Y,EAAE+3J,GAAGr8B,WAAW77H,EAAE67H,YAAY77H,EAAE87H,YAAY97H,EAAE67H,YAAY,KAAK17H,EAAE07H,YAAY77H,EAAEo1H,YAAYj1H,EAAE07H,WAAW,MAAM,GAAGr0I,IAAI00B,EAAEnhC,GAAG,IAAIilB,EAAEjlB,GAAGyM,CAAC,CAAC,MAAM6+D,GAAG,CAAC,CAAC,CAAC,CAAC,SAASgyG,GAAGhyG,EAAEtlE,GAAG,OAAOslE,EAAEiyG,YAAY,WAAWjyG,EAAEvgE,SAAS,SAASugE,EAAEtlE,GAAG,IAAIkf,GAAE,EAAG,IAAIA,EAAEte,SAAS42K,gBAAgBlyG,CAAC,CAAC,MAAMA,GAAG,CAAC,OAAOpmD,GAAGomD,EAAE7sE,QAAQuH,CAAC,CAAvF,CAAyFslE,EAAEtlE,IAAI,SAASslE,EAAEtlE,GAAG,IAAIkf,EAAEomD,EAAE7sE,MAAM4jE,EAAEiJ,EAAEmyG,YAAY,GAAG36I,EAAEu/B,GAAG,CAAC,GAAGA,EAAE1M,OAAO,OAAOhgC,EAAEzQ,KAAKyQ,EAAE3vB,GAAG,GAAGq8D,EAAEzvC,KAAK,OAAO1N,EAAE0N,SAAS5sB,EAAE4sB,MAAM,CAAC,OAAO1N,IAAIlf,CAAC,CAArI,CAAuIslE,EAAEtlE,GAAG,CAAC,IAAI03K,GAAG,CAAChrF,OAAO3wB,GAAGs3C,OAAOt3C,IAAI47G,GAAGx8J,GAAE,SAAUmqD,GAAG,IAAItlE,EAAE,CAAC,EAAEkf,EAAE,QAAQ,OAAOomD,EAAErhE,MAAM,iBAAiB7E,SAAQ,SAAUkmE,GAAG,GAAGA,EAAE,CAAC,IAAIxoC,EAAEwoC,EAAErhE,MAAMib,GAAG4d,EAAE5iC,OAAO,IAAI8F,EAAE88B,EAAE,GAAGlQ,QAAQkQ,EAAE,GAAGlQ,OAAO,CAAE,IAAG5sB,CAAE,IAAG,SAASiqI,GAAG3kE,GAAG,IAAItlE,EAAE43K,GAAGtyG,EAAE8uE,OAAO,OAAO9uE,EAAEuyG,YAAY5jC,EAAE3uE,EAAEuyG,YAAY73K,GAAGA,CAAC,CAAC,SAAS43K,GAAGtyG,GAAG,OAAOxrE,MAAMC,QAAQurE,GAAG3O,EAAE2O,GAAG,iBAAiBA,EAAEqyG,GAAGryG,GAAGA,CAAC,CAAC,IAAIwyG,GAAGC,GAAG,MAAMC,GAAG,iBAAiBC,GAAG,SAAS3yG,EAAEtlE,EAAEkf,GAAG,GAAG64J,GAAG19J,KAAKra,GAAGslE,EAAE8uE,MAAMo1B,YAAYxpK,EAAEkf,QAAQ,GAAG84J,GAAG39J,KAAK6E,GAAGomD,EAAE8uE,MAAMo1B,YAAYrqC,EAAEn/H,GAAGkf,EAAE3a,QAAQyzK,GAAG,IAAI,iBAAiB,CAAC,IAAIl7I,EAAEo7I,GAAGl4K,GAAG,GAAGlG,MAAMC,QAAQmlB,GAAG,IAAI,IAAIm9C,EAAE,EAAEriE,EAAEklB,EAAEhlB,OAAOmiE,EAAEriE,EAAEqiE,IAAIiJ,EAAE8uE,MAAMt3G,GAAG5d,EAAEm9C,QAAQiJ,EAAE8uE,MAAMt3G,GAAG5d,CAAC,CAAC,EAAEi5J,GAAG,CAAC,SAAS,MAAM,MAAMD,GAAG/8J,GAAE,SAAUmqD,GAAG,GAAGwyG,GAAGA,IAAIl3K,SAAStF,cAAc,OAAO84I,MAAM,YAAY9uE,EAAEhmD,EAAEgmD,KAAKA,KAAKwyG,GAAG,OAAOxyG,EAAE,IAAI,IAAItlE,EAAEslE,EAAEp/D,OAAO,GAAGC,cAAcm/D,EAAEl/D,MAAM,GAAG8Y,EAAE,EAAEA,EAAEi5J,GAAGj+K,OAAOglB,IAAI,CAAC,IAAI4d,EAAEq7I,GAAGj5J,GAAGlf,EAAE,GAAG88B,KAAKg7I,GAAG,OAAOh7I,CAAC,CAAE,IAAG,SAASs7I,GAAG9yG,EAAEtlE,GAAG,IAAIq8D,EAAEr8D,EAAES,KAAKzG,EAAEsrE,EAAE7kE,KAAK,KAAKye,EAAEm9C,EAAEw7G,cAAc34J,EAAEm9C,EAAE+3E,QAAQl1H,EAAEllB,EAAE69K,cAAc34J,EAAEllB,EAAEo6I,QAAQ,CAAC,IAAI3tI,EAAEwY,EAAEkc,EAAEn7B,EAAEwkH,IAAIvtD,EAAEj9D,EAAE69K,YAAYrkH,EAAEx5D,EAAEq+K,iBAAiBr+K,EAAEo6I,OAAO,CAAC,EAAEh1H,EAAE63C,GAAGzD,EAAEv3B,EAAE27I,GAAG53K,EAAES,KAAK2zI,QAAQ,CAAC,EAAEp0I,EAAES,KAAK43K,gBAAgBv7I,EAAEb,EAAEw/H,QAAQxnB,EAAE,CAAC,EAAEh4G,GAAGA,EAAE,IAAIykG,EAAE,SAASp7D,EAAEtlE,GAAmB,IAAhB,IAAIkf,EAAE4d,EAAE,CAAC,EAAeu/B,EAAEiJ,EAAEjJ,EAAEp6D,oBAAoBo6D,EAAEA,EAAEp6D,kBAAkBsrK,SAASlxG,EAAE57D,OAAOye,EAAE+qH,GAAG5tE,EAAE57D,QAAQwzI,EAAEn3G,EAAE5d,IAAIA,EAAE+qH,GAAG3kE,EAAE7kE,QAAQwzI,EAAEn3G,EAAE5d,GAAG,IAAI,IAAIllB,EAAEsrE,EAAEtrE,EAAEA,EAAEoN,QAAQpN,EAAEyG,OAAOye,EAAE+qH,GAAGjwI,EAAEyG,QAAQwzI,EAAEn3G,EAAE5d,GAAG,OAAO4d,CAAC,CAApN,CAAsN98B,GAAM,IAAIif,KAAKG,EAAEF,EAAEwhH,EAAEzhH,KAAKg5J,GAAG98I,EAAElc,EAAE,IAAI,IAAIA,KAAKyhH,EAAEj6H,EAAEi6H,EAAEzhH,GAAGg5J,GAAG98I,EAAElc,EAAE,MAAMxY,EAAE,GAAGA,EAAE,CAAC,CAAC,IAAI6xK,GAAG,CAAC5rF,OAAO0rF,GAAG/kE,OAAO+kE,IAAIG,GAAG,MAAM,SAASC,GAAGlzG,EAAEtlE,GAAG,GAAGA,IAAIA,EAAEA,EAAE4sB,QAAQ,GAAG04C,EAAEroE,UAAU+C,EAAEzD,QAAQ,MAAM,EAAEyD,EAAEiE,MAAMs0K,IAAIn5K,SAAQ,SAAUY,GAAG,OAAOslE,EAAEroE,UAAU+mB,IAAIhkB,EAAG,IAAGslE,EAAEroE,UAAU+mB,IAAIhkB,OAAO,CAAC,IAAIkf,EAAE,IAAI/hB,OAAOmoE,EAAE13C,aAAa,UAAU,GAAG,KAAK1O,EAAE3iB,QAAQ,IAAIyD,EAAE,KAAK,GAAGslE,EAAE24C,aAAa,SAAS/+F,EAAElf,GAAG4sB,OAAO,CAAC,CAAC,SAAS6rJ,GAAGnzG,EAAEtlE,GAAG,GAAGA,IAAIA,EAAEA,EAAE4sB,QAAQ,GAAG04C,EAAEroE,UAAU+C,EAAEzD,QAAQ,MAAM,EAAEyD,EAAEiE,MAAMs0K,IAAIn5K,SAAQ,SAAUY,GAAG,OAAOslE,EAAEroE,UAAU4V,OAAO7S,EAAG,IAAGslE,EAAEroE,UAAU4V,OAAO7S,GAAGslE,EAAEroE,UAAU/C,QAAQorE,EAAEquG,gBAAgB,aAAa,CAAC,IAAI,IAAIz0J,EAAE,IAAI/hB,OAAOmoE,EAAE13C,aAAa,UAAU,GAAG,KAAKkP,EAAE,IAAI98B,EAAE,IAAIkf,EAAE3iB,QAAQugC,IAAI,GAAG5d,EAAEA,EAAE3a,QAAQu4B,EAAE,MAAM5d,EAAEA,EAAE0N,QAAQ04C,EAAE24C,aAAa,QAAQ/+F,GAAGomD,EAAEquG,gBAAgB,QAAQ,CAAC,CAAC,SAAS+E,GAAGpzG,GAAG,GAAGA,EAAE,CAAC,GAAG,iBAAiBA,EAAE,CAAC,IAAItlE,EAAE,CAAC,EAAE,OAAM,IAAKslE,EAAEvlC,KAAKk0G,EAAEj0I,EAAE24K,GAAGrzG,EAAEvqE,MAAM,MAAMk5I,EAAEj0I,EAAEslE,GAAGtlE,CAAC,CAAC,MAAM,iBAAiBslE,EAAEqzG,GAAGrzG,QAAG,CAAM,CAAC,CAAC,IAAIqzG,GAAGx9J,GAAE,SAAUmqD,GAAG,MAAM,CAACszG,WAAW,GAAGz7K,OAAOmoE,EAAE,UAAUuzG,aAAa,GAAG17K,OAAOmoE,EAAE,aAAawzG,iBAAiB,GAAG37K,OAAOmoE,EAAE,iBAAiByzG,WAAW,GAAG57K,OAAOmoE,EAAE,UAAU0zG,aAAa,GAAG77K,OAAOmoE,EAAE,aAAa2zG,iBAAiB,GAAG97K,OAAOmoE,EAAE,iBAAkB,IAAG4zG,GAAGr/F,IAAI0jD,EAAE47C,GAAG,aAAaC,GAAG,YAAYC,GAAG,aAAaC,GAAG,gBAAgBC,GAAG,YAAYC,GAAG,eAAeN,UAAK,IAASz/J,OAAOggK,sBAAiB,IAAShgK,OAAOigK,wBAAwBL,GAAG,mBAAmBC,GAAG,4BAAuB,IAAS7/J,OAAOkgK,qBAAgB,IAASlgK,OAAOmgK,uBAAuBL,GAAG,kBAAkBC,GAAG,uBAAuB,IAAIK,GAAGhgG,EAAEpgE,OAAOkrI,sBAAsBlrI,OAAOkrI,sBAAsBl9I,KAAKgS,QAAQ4B,WAAW,SAASiqD,GAAG,OAAOA,GAAG,EAAE,SAASw0G,GAAGx0G,GAAGu0G,IAAG,WAAYA,GAAGv0G,EAAG,GAAE,CAAC,SAASy0G,GAAGz0G,EAAEtlE,GAAG,IAAIkf,EAAEomD,EAAE2uG,qBAAqB3uG,EAAE2uG,mBAAmB,IAAI/0J,EAAE3iB,QAAQyD,GAAG,IAAIkf,EAAEne,KAAKf,GAAGw4K,GAAGlzG,EAAEtlE,GAAG,CAAC,SAASg6K,GAAG10G,EAAEtlE,GAAGslE,EAAE2uG,oBAAoB/yI,EAAEokC,EAAE2uG,mBAAmBj0K,GAAGy4K,GAAGnzG,EAAEtlE,EAAE,CAAC,SAASi6K,GAAG30G,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAEo9I,GAAG50G,EAAEtlE,GAAGq8D,EAAEv/B,EAAE5hC,KAAKlB,EAAE8iC,EAAEq+E,QAAQ10G,EAAEq2B,EAAEq9I,UAAU,IAAI99G,EAAE,OAAOn9C,IAAI,IAAID,EAAEo9C,IAAI88G,GAAGG,GAAGE,GAAGr+I,EAAE,EAAE87B,EAAE,WAAWqO,EAAE2jD,oBAAoBhqG,EAAEu0C,GAAGt0C,GAAG,EAAEs0C,EAAE,SAASxzD,GAAGA,EAAE6Y,SAASysD,KAAKnqC,GAAG10B,GAAGwwD,GAAG,EAAE57C,YAAW,WAAY8f,EAAE10B,GAAGwwD,GAAI,GAAEj9D,EAAE,GAAGsrE,EAAEogD,iBAAiBzmG,EAAEu0C,EAAE,CAAC,IAAI4mH,GAAG,yBAAyB,SAASF,GAAG50G,EAAEtlE,GAAG,IAAIkf,EAAE4d,EAAErjB,OAAOsqI,iBAAiBz+E,GAAGjJ,GAAGv/B,EAAEu8I,GAAG,UAAU,IAAIp1K,MAAM,MAAMjK,GAAG8iC,EAAEu8I,GAAG,aAAa,IAAIp1K,MAAM,MAAMwC,EAAE4zK,GAAGh+G,EAAEriE,GAAGilB,GAAG6d,EAAEy8I,GAAG,UAAU,IAAIt1K,MAAM,MAAMk3B,GAAG2B,EAAEy8I,GAAG,aAAa,IAAIt1K,MAAM,MAAMgzD,EAAEojH,GAAGp7J,EAAEkc,GAAGq4B,EAAE,EAAEp0C,EAAE,EAAE,OAAOpf,IAAIm5K,GAAG1yK,EAAE,IAAIyY,EAAEi6J,GAAG3lH,EAAE/sD,EAAE2Y,EAAEplB,EAAEE,QAAQ8F,IAAIo5K,GAAGniH,EAAE,IAAI/3C,EAAEk6J,GAAG5lH,EAAEyD,EAAE73C,EAAE+b,EAAEjhC,QAAQklB,GAAGF,GAAGs0C,EAAEp0B,KAAKC,IAAI54B,EAAEwwD,IAAI,EAAExwD,EAAEwwD,EAAEkiH,GAAGC,GAAG,MAAMl6J,IAAIi6J,GAAGn/K,EAAEE,OAAOihC,EAAEjhC,OAAO,EAAE,CAACgB,KAAKgkB,EAAEi8F,QAAQ3nD,EAAE2mH,UAAU/6J,EAAEk7J,aAAap7J,IAAIi6J,IAAIiB,GAAG//J,KAAKyiB,EAAEu8I,GAAG,aAAa,CAAC,SAASgB,GAAG/0G,EAAEtlE,GAAG,KAAKslE,EAAEprE,OAAO8F,EAAE9F,QAAQorE,EAAEA,EAAEnoE,OAAOmoE,GAAG,OAAOlmC,KAAKC,IAAIl/B,MAAM,KAAKH,EAAEgG,KAAI,SAAUhG,EAAEkf,GAAG,OAAOq7J,GAAGv6K,GAAGu6K,GAAGj1G,EAAEpmD,GAAI,IAAG,CAAC,SAASq7J,GAAGj1G,GAAG,OAAO,IAAI58D,OAAO48D,EAAEl/D,MAAM,GAAG,GAAG7B,QAAQ,IAAI,KAAK,CAAC,SAASi2K,GAAGl1G,EAAEtlE,GAAG,IAAIq8D,EAAEiJ,EAAEk/C,IAAI1nF,EAAEu/B,EAAEo+G,YAAYp+G,EAAEo+G,SAASv/D,WAAU,EAAG7+C,EAAEo+G,YAAY,IAAIzgL,EAAE0+K,GAAGpzG,EAAE7kE,KAAKm0I,YAAY,IAAI11H,EAAEllB,KAAK8iC,EAAEu/B,EAAEq+G,WAAW,IAAIr+G,EAAE+pB,SAAS,CAAC,IAAI,IAAIjrD,EAAEnhC,EAAE+lC,IAAIk3B,EAAEj9D,EAAEkB,KAAKs4D,EAAEx5D,EAAE4+K,WAAWx5J,EAAEplB,EAAE6+K,aAAa58I,EAAEjiC,EAAE8+K,iBAAiBp4C,EAAE1mI,EAAE2gL,YAAYhgL,EAAEX,EAAE4gL,cAAcxpH,EAAEp3D,EAAE6gL,kBAAkB70F,EAAEhsF,EAAE8gL,YAAY55I,EAAElnC,EAAE+gL,MAAM3vF,EAAEpxF,EAAEghL,WAAWx7I,EAAExlC,EAAEihL,eAAe9/J,EAAEnhB,EAAEkhL,aAAa5hG,EAAEt/E,EAAEmhL,OAAO77J,EAAEtlB,EAAEohL,YAAYlnC,EAAEl6I,EAAEqhL,gBAAgBzkH,EAAE58D,EAAEq2J,SAASlxB,EAAEyjC,GAAGhjC,EAAEgjC,GAAGt6C,OAAOsX,GAAGA,EAAEx4H,QAAQ+3H,EAAES,EAAE/6G,QAAQ+6G,EAAEA,EAAEx4H,OAAO,IAAI44H,GAAGb,EAAE8kC,aAAa3+F,EAAE20F,aAAa,IAAIj6B,GAAG1mD,GAAG,KAAKA,EAAE,CAAC,IAAI26D,EAAEjU,GAAGU,EAAEA,EAAEltE,EAAEmD,EAAEqpE,GAAG5uE,EAAEA,EAAEn1B,EAAEwiG,EAAEuB,GAAGrlI,EAAEA,EAAEykB,EAAEq5H,EAAEzY,GAAG7kH,GAAG6qE,EAAE26C,EAAEX,GAAGv5H,EAAE6yE,GAAGA,EAAEp4C,EAAEo9F,EAAE0B,GAAG1gH,GAAG8rE,EAAE6yC,EAAE+B,GAAGkU,GAAG10G,EAAE0+F,EAAEvuG,EAAE1Q,EAAE23C,GAAGA,EAAEmkH,MAAMnkH,GAAGknE,GAAE,IAAK3iG,IAAIoiG,EAAEkV,EAAE6oC,GAAG36C,GAAG5B,EAAE1iE,EAAEq+G,SAASv8C,GAAE,WAAYL,IAAIk8C,GAAG39G,EAAEoiE,GAAGu7C,GAAG39G,EAAE1F,IAAIooE,EAAE7jB,WAAW4iB,GAAGk8C,GAAG39G,EAAE43E,GAAGhW,GAAGA,EAAE5hE,IAAIiiE,GAAGA,EAAEjiE,GAAGA,EAAEq+G,SAAS,IAAK,IAAGp1G,EAAE7kE,KAAKkiC,MAAMy7H,GAAG94F,EAAE,UAAS,WAAY,IAAItlE,EAAEq8D,EAAE0+C,WAAW77F,EAAElf,GAAGA,EAAE86J,UAAU96J,EAAE86J,SAASx1F,EAAEhrE,KAAK4kB,GAAGA,EAAEnd,MAAMujE,EAAEvjE,KAAKmd,EAAEslG,IAAIi2D,UAAUv7J,EAAEslG,IAAIi2D,WAAW95C,GAAGA,EAAEtkE,EAAE0iE,EAAG,IAAG0Z,GAAGA,EAAEp8E,GAAGyhE,IAAIi8C,GAAG19G,EAAE43E,GAAG8lC,GAAG19G,EAAE1F,GAAGmjH,IAAG,WAAYE,GAAG39G,EAAE43E,GAAGlV,EAAE7jB,YAAY6+D,GAAG19G,EAAEoiE,GAAGgU,IAAI8oC,GAAGr9C,GAAG7iH,WAAW0jH,EAAEb,GAAG+7C,GAAG59G,EAAEpF,EAAE8nE,IAAK,KAAIz5D,EAAE7kE,KAAKkiC,OAAO3iC,GAAGA,IAAI2gI,GAAGA,EAAEtkE,EAAE0iE,IAAIjB,GAAG2U,GAAG1T,GAAG,CAAC,CAAC,CAAC,SAASy8C,GAAGl2G,EAAEtlE,GAAG,IAAIq8D,EAAEiJ,EAAEk/C,IAAI1nF,EAAEu/B,EAAEq+G,YAAYr+G,EAAEq+G,SAASx/D,WAAU,EAAG7+C,EAAEq+G,YAAY,IAAI1gL,EAAE0+K,GAAGpzG,EAAE7kE,KAAKm0I,YAAY,GAAG11H,EAAEllB,IAAI,IAAIqiE,EAAE+pB,SAAS,OAAOpmF,IAAI,IAAI88B,EAAEu/B,EAAEo+G,UAAU,CAAC,IAAIh0K,EAAEzM,EAAE+lC,IAAI5E,EAAEnhC,EAAEkB,KAAK+7D,EAAEj9D,EAAE++K,WAAWvlH,EAAEx5D,EAAEg/K,aAAa55J,EAAEplB,EAAEi/K,iBAAiBh9I,EAAEjiC,EAAEyhL,YAAY/6C,EAAE1mI,EAAE0hL,MAAM/gL,EAAEX,EAAE2hL,WAAWvqH,EAAEp3D,EAAE4hL,eAAe51F,EAAEhsF,EAAE6hL,WAAW36I,EAAElnC,EAAEq2J,SAASjlE,GAAE,IAAK3kF,IAAI82H,EAAE/9F,EAAE87I,GAAG56C,GAAGvlH,EAAEwU,EAAE1Q,EAAEiiB,GAAGA,EAAEw6I,MAAMx6I,GAAGo4C,EAAEjd,EAAEo+G,SAASt8C,GAAE,WAAY9hE,EAAE0+C,YAAY1+C,EAAE0+C,WAAW+/C,WAAWz+F,EAAE0+C,WAAW+/C,SAASx1F,EAAEhrE,KAAK,MAAM8wF,IAAI4uF,GAAG39G,EAAE7I,GAAGwmH,GAAG39G,EAAEj9C,IAAIk6D,EAAE4hC,WAAW9vB,GAAG4uF,GAAG39G,EAAEpF,GAAG7F,GAAGA,EAAEiL,KAAKr8D,IAAIrF,GAAGA,EAAE0hE,IAAIA,EAAEo+G,SAAS,IAAK,IAAGz0F,EAAEA,EAAE1mE,GAAGA,GAAG,CAAC,SAASA,IAAIg6D,EAAE4hC,aAAa51C,EAAE7kE,KAAKkiC,MAAM05B,EAAE0+C,cAAc1+C,EAAE0+C,WAAW+/C,WAAWz+F,EAAE0+C,WAAW+/C,SAAS,CAAC,IAAIx1F,EAAEhrE,KAAKgrE,GAAGrpC,GAAGA,EAAEogC,GAAG+uB,IAAI2uF,GAAG19G,EAAEpF,GAAG8iH,GAAG19G,EAAEj9C,GAAG06J,IAAG,WAAYE,GAAG39G,EAAEpF,GAAGqiB,EAAE4hC,YAAY6+D,GAAG19G,EAAE7I,GAAGh0B,IAAI+7I,GAAGpgK,GAAGE,WAAWi+D,EAAEn+D,GAAG8+J,GAAG59G,EAAElhC,EAAEm+C,IAAK,KAAIonD,GAAGA,EAAErkE,EAAEid,GAAG8R,GAAG5rD,GAAG85C,IAAI,CAAC,CAAC,SAASiiG,GAAGj2G,GAAG,MAAM,iBAAiBA,IAAI6vC,MAAM7vC,EAAE,CAAC,SAASg2G,GAAGh2G,GAAG,GAAGpmD,EAAEomD,GAAG,OAAM,EAAG,IAAItlE,EAAEslE,EAAE44F,IAAI,OAAOphI,EAAE98B,GAAGs7K,GAAGxhL,MAAMC,QAAQiG,GAAGA,EAAE,GAAGA,IAAIslE,EAAE6yF,SAAS7yF,EAAEprE,QAAQ,CAAC,CAAC,SAAS4hL,GAAGx2G,EAAEtlE,IAAG,IAAKA,EAAES,KAAKkiC,MAAM63I,GAAGx6K,EAAE,CAAC,IAAI+7K,GAAG,SAASz2G,GAAG,IAAI7+D,EAAEwY,EAAEkc,EAAE,CAAC,EAAE87B,EAAEqO,EAAE02G,QAAQxoH,EAAE8R,EAAE22G,QAAQ,IAAIx1K,EAAE,EAAEA,EAAEksK,GAAGz4K,SAASuM,EAAE,IAAI00B,EAAEw3I,GAAGlsK,IAAI,GAAGwY,EAAE,EAAEA,EAAEg4C,EAAE/8D,SAAS+kB,EAAE6d,EAAEm6B,EAAEh4C,GAAG0zJ,GAAGlsK,MAAM00B,EAAEw3I,GAAGlsK,IAAI1F,KAAKk2D,EAAEh4C,GAAG0zJ,GAAGlsK,KAAK,SAAS2Y,EAAEkmD,GAAG,IAAItlE,EAAEwzD,EAAEunD,WAAWz1C,GAAGxoC,EAAE98B,IAAIwzD,EAAEunF,YAAY/6I,EAAEslE,EAAE,CAAC,SAASrpC,EAAEqpC,EAAEtlE,EAAEkf,EAAEllB,EAAEyM,EAAEwY,EAAEg4C,GAAG,GAAGn6B,EAAEwoC,EAAEk/C,MAAM1nF,EAAE7d,KAAKqmD,EAAErmD,EAAEg4C,GAAGwjG,GAAGn1F,IAAIA,EAAE20F,cAAcxzJ,GAAG,SAAS6+D,EAAEtlE,EAAEkf,EAAEllB,GAAG,IAAIyM,EAAE6+D,EAAE7kE,KAAK,GAAGq8B,EAAEr2B,GAAG,CAAC,IAAIwY,EAAE6d,EAAEwoC,EAAErjE,oBAAoBwE,EAAEwmK,UAAU,GAAGnwI,EAAEr2B,EAAEA,EAAEwgJ,OAAOnqH,EAAEr2B,EAAEA,EAAEumK,OAAOvmK,EAAE6+D,GAAE,GAAIxoC,EAAEwoC,EAAErjE,mBAAmB,OAAOy+H,EAAEp7D,EAAEtlE,GAAG2vB,EAAEzQ,EAAEomD,EAAEk/C,IAAIxqH,GAAGqiE,EAAEp9C,IAAI,SAASqmD,EAAEtlE,EAAEkf,EAAEm9C,GAAa,IAAV,IAAIriE,EAAEyM,EAAE6+D,EAAO7+D,EAAExE,mBAAmB,GAAG66B,EAAE9iC,GAAGyM,EAAEA,EAAExE,kBAAkBsrK,QAAQ9sK,OAAOq8B,EAAE9iC,EAAEA,EAAE46I,YAAY,CAAC,IAAI56I,EAAE,EAAEA,EAAEmhC,EAAE+gJ,SAAShiL,SAASF,EAAEmhC,EAAE+gJ,SAASliL,GAAG04K,GAAGjsK,GAAGzG,EAAEe,KAAK0F,GAAG,KAAK,CAACkpB,EAAEzQ,EAAEomD,EAAEk/C,IAAInoD,EAAE,CAAtM,CAAwMiJ,EAAEtlE,EAAEkf,EAAEllB,IAAG,CAAE,CAAC,CAAnY,CAAqYsrE,EAAEtlE,EAAEkf,EAAEllB,GAAG,CAAC,IAAIolB,EAAEkmD,EAAE7kE,KAAKw7B,EAAEqpC,EAAEh0B,SAAS32C,EAAE2qE,EAAEvjE,IAAI+6B,EAAEniC,IAAI2qE,EAAEk/C,IAAIl/C,EAAEs0F,GAAGpmG,EAAE2+G,gBAAgB7sG,EAAEs0F,GAAGj/J,GAAG64D,EAAEl4D,cAAcX,EAAE2qE,GAAG8lB,EAAE9lB,GAAGlU,EAAEkU,EAAErpC,EAAEj8B,GAAG88B,EAAE1d,IAAI8hB,EAAEokC,EAAEtlE,GAAG2vB,EAAEzQ,EAAEomD,EAAEk/C,IAAIxqH,IAAIqiE,EAAEiJ,EAAE40F,YAAY50F,EAAEk/C,IAAIhxD,EAAE4+G,cAAc9sG,EAAEh6D,MAAMqkB,EAAEzQ,EAAEomD,EAAEk/C,IAAIxqH,KAAKsrE,EAAEk/C,IAAIhxD,EAAE2nF,eAAe71E,EAAEh6D,MAAMqkB,EAAEzQ,EAAEomD,EAAEk/C,IAAIxqH,GAAG,CAAC,CAAC,SAAS0mI,EAAEp7D,EAAEtlE,GAAG88B,EAAEwoC,EAAE7kE,KAAK07K,iBAAiBn8K,EAAEe,KAAKZ,MAAMH,EAAEslE,EAAE7kE,KAAK07K,eAAe72G,EAAE7kE,KAAK07K,cAAc,MAAM72G,EAAEk/C,IAAIl/C,EAAErjE,kBAAkBjF,IAAIgpF,EAAE1gB,IAAIpkC,EAAEokC,EAAEtlE,GAAGorF,EAAE9lB,KAAKitG,GAAGjtG,GAAGtlE,EAAEe,KAAKukE,GAAG,CAAC,SAAS31C,EAAE21C,EAAEtlE,EAAEkf,GAAG4d,EAAEwoC,KAAKxoC,EAAE5d,GAAGs0C,EAAEunD,WAAW77F,KAAKomD,GAAG9R,EAAEqnF,aAAav1E,EAAEtlE,EAAEkf,GAAGs0C,EAAE6gF,YAAY/uE,EAAEtlE,GAAG,CAAC,SAASoxD,EAAEkU,EAAEpmD,EAAE4d,GAAG,GAAG98B,EAAEkf,GAAG,IAAI,IAAIm9C,EAAE,EAAEA,EAAEn9C,EAAEhlB,SAASmiE,EAAEpgC,EAAE/c,EAAEm9C,GAAGv/B,EAAEwoC,EAAEk/C,IAAI,MAAK,EAAGtlG,EAAEm9C,QAAQriE,EAAEsrE,EAAEh6D,OAAOkoD,EAAE6gF,YAAY/uE,EAAEk/C,IAAIhxD,EAAE2nF,eAAe70I,OAAOg/D,EAAEh6D,OAAO,CAAC,SAAS06E,EAAE1gB,GAAG,KAAKA,EAAErjE,mBAAmBqjE,EAAEA,EAAErjE,kBAAkBsrK,OAAO,OAAOzwI,EAAEwoC,EAAEvjE,IAAI,CAAC,SAASm/B,EAAEokC,EAAEtlE,GAAG,IAAI,IAAIkf,EAAE,EAAEA,EAAEic,EAAEuxD,OAAOxyF,SAASglB,EAAEic,EAAEuxD,OAAOxtE,GAAGwzJ,GAAGptG,GAAGxoC,EAAEr2B,EAAE6+D,EAAE7kE,KAAKwmJ,QAAQnqH,EAAEr2B,EAAEimF,SAASjmF,EAAEimF,OAAOgmF,GAAGptG,GAAGxoC,EAAEr2B,EAAE25B,SAASpgC,EAAEe,KAAKukE,GAAG,CAAC,SAAS8lB,EAAE9lB,GAAG,IAAItlE,EAAE,GAAG88B,EAAE98B,EAAEslE,EAAEy0F,WAAWvmG,EAAE8+G,cAAchtG,EAAEk/C,IAAIxkH,QAAQ,IAAI,IAAIkf,EAAEomD,EAAEpmD,GAAG4d,EAAE98B,EAAEkf,EAAE2F,UAAUiY,EAAE98B,EAAEA,EAAE5C,SAASo8I,WAAWhmF,EAAE8+G,cAAchtG,EAAEk/C,IAAIxkH,GAAGkf,EAAEA,EAAE9X,OAAO01B,EAAE98B,EAAE4iK,KAAK5iK,IAAIslE,EAAEzgD,SAAS7kB,IAAIslE,EAAEu0F,WAAW/8H,EAAE98B,EAAEA,EAAE5C,SAASo8I,WAAWhmF,EAAE8+G,cAAchtG,EAAEk/C,IAAIxkH,EAAE,CAAC,SAASw/B,EAAE8lC,EAAEtlE,EAAEkf,EAAE4d,EAAEu/B,EAAEriE,GAAG,KAAK8iC,GAAGu/B,IAAIv/B,EAAEb,EAAE/c,EAAE4d,GAAG9iC,EAAEsrE,EAAEtlE,GAAE,EAAGkf,EAAE4d,EAAE,CAAC,SAAS3hB,EAAEmqD,GAAG,IAAItlE,EAAEkf,EAAEm9C,EAAEiJ,EAAE7kE,KAAK,GAAGq8B,EAAEu/B,GAAG,IAAIv/B,EAAE98B,EAAEq8D,EAAE4qF,OAAOnqH,EAAE98B,EAAEA,EAAErB,UAAUqB,EAAEslE,GAAGtlE,EAAE,EAAEA,EAAEm7B,EAAEx8B,QAAQzE,SAAS8F,EAAEm7B,EAAEx8B,QAAQqB,GAAGslE,GAAG,GAAGxoC,EAAE98B,EAAEslE,EAAEh0B,UAAU,IAAIpyB,EAAE,EAAEA,EAAEomD,EAAEh0B,SAASp3C,SAASglB,EAAE/D,EAAEmqD,EAAEh0B,SAASpyB,GAAG,CAAC,SAASo6D,EAAEhU,EAAEtlE,EAAEkf,GAAG,KAAKlf,GAAGkf,IAAIlf,EAAE,CAAC,IAAIq8D,EAAEiJ,EAAEtlE,GAAG88B,EAAEu/B,KAAKv/B,EAAEu/B,EAAEt6D,MAAMud,EAAE+8C,GAAGlhD,EAAEkhD,IAAIj9C,EAAEi9C,EAAEmoD,KAAK,CAAC,CAAC,SAASllG,EAAEgmD,EAAEtlE,GAAG,GAAG88B,EAAE98B,IAAI88B,EAAEwoC,EAAE7kE,MAAM,CAAC,IAAIye,EAAEm9C,EAAElhC,EAAEtoB,OAAO3Y,OAAO,EAAE,IAAI4iC,EAAE98B,GAAGA,EAAEiD,WAAWo5D,EAAEr8D,EAAE,SAASslE,EAAEtlE,GAAG,SAASkf,IAAI,KAAKA,EAAEjc,WAAWmc,EAAEkmD,EAAE,CAAC,OAAOpmD,EAAEjc,UAAUjD,EAAEkf,CAAC,CAAxE,CAA0EomD,EAAEk/C,IAAInoD,GAAGv/B,EAAE5d,EAAEomD,EAAErjE,oBAAoB66B,EAAE5d,EAAEA,EAAEquJ,SAASzwI,EAAE5d,EAAEze,OAAO6e,EAAEJ,EAAElf,GAAGkf,EAAE,EAAEA,EAAEic,EAAEtoB,OAAO3Y,SAASglB,EAAEic,EAAEtoB,OAAOqM,GAAGomD,EAAEtlE,GAAG88B,EAAE5d,EAAEomD,EAAE7kE,KAAKwmJ,OAAOnqH,EAAE5d,EAAEA,EAAErM,QAAQqM,EAAEomD,EAAEtlE,GAAGA,GAAG,MAAMof,EAAEkmD,EAAEk/C,IAAI,CAAC,SAAS0vB,EAAE5uE,EAAEtlE,EAAEkf,EAAEm9C,GAAG,IAAI,IAAIriE,EAAEklB,EAAEllB,EAAEqiE,EAAEriE,IAAI,CAAC,IAAIyM,EAAEzG,EAAEhG,GAAG,GAAG8iC,EAAEr2B,IAAImsK,GAAGttG,EAAE7+D,GAAG,OAAOzM,CAAC,CAAC,CAAC,SAAS48D,EAAE0O,EAAEtlE,EAAEhG,EAAEyM,EAAEwY,EAAEg4C,GAAG,GAAGqO,IAAItlE,EAAE,CAAC88B,EAAE98B,EAAEwkH,MAAM1nF,EAAEr2B,KAAKzG,EAAEyG,EAAEwY,GAAGw7I,GAAGz6J,IAAI,IAAIof,EAAEpf,EAAEwkH,IAAIl/C,EAAEk/C,IAAI,GAAGnoD,EAAEiJ,EAAEi1F,oBAAoBz9H,EAAE98B,EAAEq6J,aAAawT,UAAU7tC,EAAE16D,EAAEk/C,IAAIxkH,EAAEhG,GAAGgG,EAAEu6J,oBAAmB,OAAQ,GAAGl+F,EAAEr8D,EAAEg6J,WAAW39F,EAAEiJ,EAAE00F,WAAWh6J,EAAE1F,MAAMgrE,EAAEhrE,MAAM+hE,EAAEr8D,EAAEm6J,WAAW99F,EAAEr8D,EAAEo6J,SAASp6J,EAAEiC,kBAAkBqjE,EAAErjE,sBAAsB,CAAC,IAAIy+H,EAAE/wG,EAAE3vB,EAAES,KAAKq8B,EAAEnN,IAAImN,EAAE4jG,EAAE/wG,EAAEs3H,OAAOnqH,EAAE4jG,EAAEA,EAAEwsC,WAAWxsC,EAAEp7D,EAAEtlE,GAAG,IAAIrF,EAAE2qE,EAAEh0B,SAAS8f,EAAEpxD,EAAEsxC,SAAS,GAAGxU,EAAEnN,IAAIq2D,EAAEhmF,GAAG,CAAC,IAAI0gI,EAAE,EAAEA,EAAEvlG,EAAEk4E,OAAOn5G,SAASwmI,EAAEvlG,EAAEk4E,OAAOqtB,GAAGp7D,EAAEtlE,GAAG88B,EAAE4jG,EAAE/wG,EAAEs3H,OAAOnqH,EAAE4jG,EAAEA,EAAErtB,SAASqtB,EAAEp7D,EAAEtlE,EAAE,CAACkf,EAAElf,EAAEsL,MAAMwxB,EAAEniC,IAAImiC,EAAEs0B,GAAGz2D,IAAIy2D,GAAG,SAASkU,EAAEtlE,EAAEq8D,EAAEriE,EAAEyM,GAAG,IAAI,IAAIwY,EAAEkc,EAAE87B,EAAE73C,EAAE,EAAEshH,EAAE,EAAE/wG,EAAE3vB,EAAE9F,OAAO,EAAES,EAAEqF,EAAE,GAAGoxD,EAAEpxD,EAAE2vB,GAAGq2D,EAAE3pB,EAAEniE,OAAO,EAAEgnC,EAAEm7B,EAAE,GAAG+uB,EAAE/uB,EAAE2pB,GAAG7qE,GAAG1U,EAAE2Y,GAAGuQ,GAAG+wG,GAAG16C,GAAG9mE,EAAEvkB,GAAGA,EAAEqF,IAAIof,GAAGF,EAAEkyC,GAAGA,EAAEpxD,IAAI2vB,GAAGijJ,GAAGj4K,EAAEumC,IAAI01B,EAAEj8D,EAAEumC,EAAElnC,EAAEqiE,EAAEqkE,GAAG/lI,EAAEqF,IAAIof,GAAG8hB,EAAEm7B,IAAIqkE,IAAIkyC,GAAGxhH,EAAEg6B,IAAIx0B,EAAExF,EAAEg6B,EAAEpxF,EAAEqiE,EAAE2pB,GAAG50B,EAAEpxD,IAAI2vB,GAAGy7D,EAAE/uB,IAAI2pB,IAAI4sF,GAAGj4K,EAAEywF,IAAIx0B,EAAEj8D,EAAEywF,EAAEpxF,EAAEqiE,EAAE2pB,GAAG7qE,GAAGq4C,EAAEqnF,aAAav1E,EAAE3qE,EAAE6pH,IAAIhxD,EAAEonF,YAAYxpF,EAAEozD,MAAM7pH,EAAEqF,IAAIof,GAAGgsE,EAAE/uB,IAAI2pB,IAAI4sF,GAAGxhH,EAAElwB,IAAI01B,EAAExF,EAAElwB,EAAElnC,EAAEqiE,EAAEqkE,GAAGvlH,GAAGq4C,EAAEqnF,aAAav1E,EAAElU,EAAEozD,IAAI7pH,EAAE6pH,KAAKpzD,EAAEpxD,IAAI2vB,GAAGuR,EAAEm7B,IAAIqkE,KAAKxhH,EAAED,KAAKA,EAAE4zJ,GAAG7yK,EAAEof,EAAEuQ,IAAIzQ,EAAEic,EAAE2B,EAAEoE,EAAE5mC,KAAK2kB,EAAEiiB,EAAE5mC,KAAK45I,EAAEhzG,EAAElhC,EAAEof,EAAEuQ,IAAIsM,EAAEiF,EAAElnC,EAAEsrE,EAAE3qE,EAAE6pH,KAAI,EAAGnoD,EAAEqkE,GAAGkyC,GAAG37G,EAAEj3D,EAAEm7B,GAAG+F,IAAI01B,EAAEK,EAAE/1B,EAAElnC,EAAEqiE,EAAEqkE,GAAG1gI,EAAEm7B,QAAG,EAAOhgB,GAAGq4C,EAAEqnF,aAAav1E,EAAErO,EAAEutD,IAAI7pH,EAAE6pH,MAAMvoF,EAAEiF,EAAElnC,EAAEsrE,EAAE3qE,EAAE6pH,KAAI,EAAGnoD,EAAEqkE,GAAGx/F,EAAEm7B,IAAIqkE,IAAIthH,EAAEuQ,EAAE6P,EAAE8lC,EAAEpmD,EAAEm9C,EAAE2pB,EAAE,IAAI,KAAK3pB,EAAE2pB,EAAE,GAAGw+B,IAAInoD,EAAEqkE,EAAE16C,EAAEhsF,GAAG0mI,EAAE16C,GAAG1M,EAAEt5E,EAAEof,EAAEuQ,EAAE,CAAhnB,CAAknBvQ,EAAEzkB,EAAEy2D,EAAEp3D,EAAEi9D,GAAGn6B,EAAEs0B,IAAIt0B,EAAEwoC,EAAEh6D,OAAOkoD,EAAE6+G,eAAejzJ,EAAE,IAAIogB,EAAEpgB,EAAE,KAAKgyC,EAAE,EAAEA,EAAEl3D,OAAO,EAAEF,IAAI8iC,EAAEniC,GAAG2+E,EAAE3+E,EAAE,EAAEA,EAAET,OAAO,GAAG4iC,EAAEwoC,EAAEh6D,OAAOkoD,EAAE6+G,eAAejzJ,EAAE,IAAIkmD,EAAEh6D,OAAOtL,EAAEsL,MAAMkoD,EAAE6+G,eAAejzJ,EAAEpf,EAAEsL,MAAMwxB,EAAEnN,IAAImN,EAAE4jG,EAAE/wG,EAAEs3H,OAAOnqH,EAAE4jG,EAAEA,EAAE07C,YAAY17C,EAAEp7D,EAAEtlE,EAAE,CAAC,CAAC,CAAC,SAASm/H,EAAE75D,EAAEtlE,EAAEkf,GAAG,GAAGm9C,EAAEn9C,IAAI4d,EAAEwoC,EAAEl+D,QAAQk+D,EAAEl+D,OAAO3G,KAAK07K,cAAcn8K,OAAO,IAAI,IAAIhG,EAAE,EAAEA,EAAEgG,EAAE9F,SAASF,EAAEgG,EAAEhG,GAAGyG,KAAKwmJ,KAAK7mH,OAAOpgC,EAAEhG,GAAG,CAAC,IAAI4lI,EAAEjlI,EAAE,2CAA2C,SAASqlI,EAAE16D,EAAEtlE,EAAEkf,EAAEllB,GAAG,IAAIyM,EAAEwY,EAAEjf,EAAE+B,IAAIo5B,EAAEn7B,EAAES,KAAKw2D,EAAEj3D,EAAEsxC,SAAS,GAAGt3C,EAAEA,GAAGmhC,GAAGA,EAAE0jI,IAAI7+J,EAAEwkH,IAAIl/C,EAAEjJ,EAAEr8D,EAAEk6J,YAAYp9H,EAAE98B,EAAEq6J,cAAc,OAAOr6J,EAAEu6J,oBAAmB,GAAG,EAAG,GAAGz9H,EAAE3B,KAAK2B,EAAEr2B,EAAE00B,EAAE8rH,OAAOnqH,EAAEr2B,EAAEA,EAAEumK,OAAOvmK,EAAEzG,GAAE,GAAI88B,EAAEr2B,EAAEzG,EAAEiC,oBAAoB,OAAOy+H,EAAE1gI,EAAEkf,IAAG,EAAG,GAAG4d,EAAE7d,GAAG,CAAC,GAAG6d,EAAEm6B,GAAG,GAAGqO,EAAE+2G,gBAAgB,GAAGv/I,EAAEr2B,EAAE00B,IAAI2B,EAAEr2B,EAAEA,EAAE2zI,WAAWt9G,EAAEr2B,EAAEA,EAAEorD,YAAY,GAAGprD,IAAI6+D,EAAEzT,UAAU,OAAM,MAAO,CAAC,IAAI,IAAI2B,GAAE,EAAGp0C,EAAEkmD,EAAEw1E,WAAW7+G,EAAE,EAAEA,EAAEg7B,EAAE/8D,OAAO+hC,IAAI,CAAC,IAAI7c,IAAI4gH,EAAE5gH,EAAE63C,EAAEh7B,GAAG/c,EAAEllB,GAAG,CAACw5D,GAAE,EAAG,KAAK,CAACp0C,EAAEA,EAAEw7H,WAAW,CAAC,IAAIpnF,GAAGp0C,EAAE,OAAM,CAAE,MAAMgyC,EAAEpxD,EAAEi3D,EAAE/3C,GAAG,GAAG4d,EAAE3B,GAAG,CAAC,IAAIxL,GAAE,EAAG,IAAI,IAAIh1B,KAAKwgC,EAAE,IAAIykG,EAAEjlI,GAAG,CAACg1B,GAAE,EAAGuR,EAAElhC,EAAEkf,GAAG,KAAK,EAAEyQ,GAAGwL,EAAE2+G,OAAOmlB,GAAG9jI,EAAE2+G,MAAM,CAAC,MAAMx0E,EAAE7kE,OAAOT,EAAEsL,OAAOg6D,EAAE7kE,KAAKT,EAAEsL,MAAM,OAAM,CAAE,CAAC,OAAO,SAASg6D,EAAEtlE,EAAEhG,EAAEyM,GAAG,IAAIyY,EAAElf,GAAG,CAAC,IAAIif,EAAEg4C,GAAE,EAAG73C,EAAE,GAAG,GAAGF,EAAEomD,GAAGrO,GAAE,EAAGh7B,EAAEj8B,EAAEof,OAAO,CAAC,IAAIshH,EAAE5jG,EAAEwoC,EAAE8gB,UAAU,IAAIs6C,GAAGkyC,GAAGttG,EAAEtlE,GAAG42D,EAAE0O,EAAEtlE,EAAEof,EAAE,KAAK,KAAK3Y,OAAO,CAAC,GAAGi6H,EAAE,CAAC,GAAG,IAAIp7D,EAAE8gB,UAAU9gB,EAAEy4C,aAAa+f,KAAKx4D,EAAEquG,gBAAgB71C,GAAG9jI,GAAE,GAAIqiE,EAAEriE,IAAIgmI,EAAE16D,EAAEtlE,EAAEof,GAAG,OAAO+/G,EAAEn/H,EAAEof,GAAE,GAAIkmD,EAAErmD,EAAEqmD,EAAEA,EAAE,IAAIq0F,GAAGnmG,EAAEzuD,QAAQka,GAAG1hB,cAAc,CAAC,EAAE,QAAG,EAAO0hB,EAAE,CAAC,IAAI0Q,EAAE21C,EAAEk/C,IAAI7pH,EAAE64D,EAAEunD,WAAWprF,GAAG,GAAGsM,EAAEj8B,EAAEof,EAAEuQ,EAAE8qJ,SAAS,KAAK9/K,EAAE64D,EAAEonF,YAAYjrH,IAAImN,EAAE98B,EAAEoH,QAAQ,IAAI,IAAIgqD,EAAEpxD,EAAEoH,OAAO85B,EAAE8kD,EAAEhmF,GAAGoxD,GAAG,CAAC,IAAI,IAAIg6B,EAAE,EAAEA,EAAEjwD,EAAEx8B,QAAQzE,SAASkxF,EAAEjwD,EAAEx8B,QAAQysF,GAAGh6B,GAAG,GAAGA,EAAEozD,IAAIxkH,EAAEwkH,IAAItjF,EAAE,CAAC,IAAI,IAAI1B,EAAE,EAAEA,EAAErE,EAAEuxD,OAAOxyF,SAASslC,EAAErE,EAAEuxD,OAAOltD,GAAGkzI,GAAGthH,GAAG,IAAI9xC,EAAE8xC,EAAE3wD,KAAKwmJ,KAAK7mH,OAAO,GAAG9gB,EAAE++I,OAAO,IAAI,IAAInqB,EAAE50H,EAAE4+I,IAAI93J,MAAM,GAAGw5H,EAAE,EAAEA,EAAEsU,EAAEh6I,OAAO0lI,IAAIsU,EAAEtU,IAAI,MAAM2yC,GAAGnhH,GAAGA,EAAEA,EAAEhqD,MAAM,CAAC01B,EAAEniC,GAAG2+E,EAAE,CAAChU,GAAG,EAAE,GAAGxoC,EAAEwoC,EAAEvjE,MAAMoZ,EAAEmqD,EAAE,CAAC,CAAC,OAAO65D,EAAEn/H,EAAEof,EAAE63C,GAAGj3D,EAAEwkH,GAAG,CAAC1nF,EAAEwoC,IAAInqD,EAAEmqD,EAAE,CAAC,CAAt0K,CAAw0K,CAAC22G,QAAQ/J,GAAG8J,QAAQ,CAACjI,GAAGU,GAAG2C,GAAGM,GAAGY,GAAGz+F,EAAE,CAAC6S,OAAOovF,GAAGI,SAASJ,GAAGjpK,OAAO,SAASyyD,EAAEtlE,IAAG,IAAKslE,EAAE7kE,KAAKkiC,KAAK64I,GAAGl2G,EAAEtlE,GAAGA,GAAG,GAAG,CAAC,GAAG7C,OAAOk2K,MAAM91C,GAAG38H,SAAS8kH,iBAAiB,mBAAkB,WAAY,IAAIpgD,EAAE1kE,SAAS42K,cAAclyG,GAAGA,EAAEg3G,QAAQC,GAAGj3G,EAAE,QAAS,IAAG,IAAIk3G,GAAG,CAAC5wD,SAAS,SAAStmD,EAAEtlE,EAAEkf,EAAE4d,GAAG,WAAW5d,EAAEnd,KAAK+6B,EAAE0nF,MAAM1nF,EAAE0nF,IAAIi4D,UAAUre,GAAGl/I,EAAE,aAAY,WAAYs9J,GAAGtJ,iBAAiB5tG,EAAEtlE,EAAEkf,EAAG,IAAGw9J,GAAGp3G,EAAEtlE,EAAEkf,EAAE2F,SAASygD,EAAEm3G,UAAU,GAAGz2K,IAAIxL,KAAK8qE,EAAE/hE,QAAQo5K,MAAM,aAAaz9J,EAAEnd,KAAKiwK,GAAG1sG,EAAEpqE,SAASoqE,EAAEmyG,YAAYz3K,EAAE0iH,UAAU1iH,EAAE0iH,UAAUC,OAAOr9C,EAAEogD,iBAAiB,mBAAmBk3D,IAAIt3G,EAAEogD,iBAAiB,iBAAiBm3D,IAAIv3G,EAAEogD,iBAAiB,SAASm3D,IAAIt/C,IAAIj4D,EAAEg3G,QAAO,IAAK,EAAEpJ,iBAAiB,SAAS5tG,EAAEtlE,EAAEkf,GAAG,GAAG,WAAWA,EAAEnd,IAAI,CAAC26K,GAAGp3G,EAAEtlE,EAAEkf,EAAE2F,SAAS,IAAIiY,EAAEwoC,EAAEm3G,UAAUpgH,EAAEiJ,EAAEm3G,UAAU,GAAGz2K,IAAIxL,KAAK8qE,EAAE/hE,QAAQo5K,IAAOtgH,EAAEx0B,MAAK,SAAUy9B,EAAEtlE,GAAG,OAAOs+H,EAAEh5D,EAAExoC,EAAE98B,GAAI,MAAIslE,EAAEo3C,SAAS18G,EAAEvH,MAAMovC,MAAK,SAAUy9B,GAAG,OAAOw3G,GAAGx3G,EAAEjJ,EAAG,IAAGr8D,EAAEvH,QAAQuH,EAAElC,UAAUg/K,GAAG98K,EAAEvH,MAAM4jE,KAAKkgH,GAAGj3G,EAAE,SAAS,CAAC,GAAG,SAASo3G,GAAGp3G,EAAEtlE,EAAEkf,GAAG69J,GAAGz3G,EAAEtlE,IAAI64I,GAAGtZ,IAAIlkH,YAAW,WAAY0hK,GAAGz3G,EAAEtlE,EAAG,GAAE,EAAE,CAAC,SAAS+8K,GAAGz3G,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE98B,EAAEvH,MAAM4jE,EAAEiJ,EAAEo3C,SAAS,IAAIrgD,GAAGviE,MAAMC,QAAQ+iC,GAAG,CAAC,IAAI,IAAI9iC,EAAEyM,EAAEwY,EAAE,EAAEkc,EAAEmqC,EAAE/hE,QAAQrJ,OAAO+kB,EAAEkc,EAAElc,IAAI,GAAGxY,EAAE6+D,EAAE/hE,QAAQ0b,GAAGo9C,EAAEriE,EAAEikI,EAAEnhG,EAAE6/I,GAAGl2K,KAAK,EAAEA,EAAE4jB,WAAWrwB,IAAIyM,EAAE4jB,SAASrwB,QAAQ,GAAGskI,EAAEq+C,GAAGl2K,GAAGq2B,GAAG,YAAYwoC,EAAE03G,gBAAgB/9J,IAAIqmD,EAAE03G,cAAc/9J,IAAIo9C,IAAIiJ,EAAE03G,eAAe,EAAE,CAAC,CAAC,SAASF,GAAGx3G,EAAEtlE,GAAG,OAAOA,EAAEs1C,OAAM,SAAUt1C,GAAG,OAAOs+H,EAAEt+H,EAAEslE,EAAG,GAAE,CAAC,SAASq3G,GAAGr3G,GAAG,MAAM,WAAWA,EAAEA,EAAE+xG,OAAO/xG,EAAE7sE,KAAK,CAAC,SAASmkL,GAAGt3G,GAAGA,EAAEzsD,OAAO0+J,WAAU,CAAE,CAAC,SAASsF,GAAGv3G,GAAGA,EAAEzsD,OAAO0+J,YAAYjyG,EAAEzsD,OAAO0+J,WAAU,EAAGgF,GAAGj3G,EAAEzsD,OAAO,SAAS,CAAC,SAAS0jK,GAAGj3G,EAAEtlE,GAAG,IAAIkf,EAAEte,SAASgjK,YAAY,cAAc1kJ,EAAE+9J,UAAUj9K,GAAE,GAAG,GAAIslE,EAAE43G,cAAch+J,EAAE,CAAC,SAASi+J,GAAG73G,GAAG,OAAOA,EAAErjE,mBAAmBqjE,EAAE7kE,MAAM6kE,EAAE7kE,KAAKm0I,WAAWtvE,EAAE63G,GAAG73G,EAAErjE,kBAAkBsrK,OAAO,CAAC,IAAI/mC,GAAG,CAAC/+H,KAAK,SAAS69D,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE98B,EAAEvH,MAAM4jE,GAAGn9C,EAAEi+J,GAAGj+J,IAAIze,MAAMye,EAAEze,KAAKm0I,WAAW56I,EAAEsrE,EAAE83G,mBAAmB,SAAS93G,EAAE8uE,MAAMr/G,QAAQ,GAAGuwC,EAAE8uE,MAAMr/G,QAAQ+H,GAAGu/B,GAAGn9C,EAAEze,KAAKkiC,MAAK,EAAG63I,GAAGt7J,GAAE,WAAYomD,EAAE8uE,MAAMr/G,QAAQ/6B,CAAE,KAAIsrE,EAAE8uE,MAAMr/G,QAAQ+H,EAAE9iC,EAAE,MAAM,EAAEq5G,OAAO,SAAS/tC,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE98B,EAAEvH,OAAOqkC,IAAI98B,EAAElC,YAAYohB,EAAEi+J,GAAGj+J,IAAIze,MAAMye,EAAEze,KAAKm0I,YAAY11H,EAAEze,KAAKkiC,MAAK,EAAG7F,EAAE09I,GAAGt7J,GAAE,WAAYomD,EAAE8uE,MAAMr/G,QAAQuwC,EAAE83G,kBAAmB,IAAG5B,GAAGt8J,GAAE,WAAYomD,EAAE8uE,MAAMr/G,QAAQ,MAAO,KAAIuwC,EAAE8uE,MAAMr/G,QAAQ+H,EAAEwoC,EAAE83G,mBAAmB,OAAO,EAAEvwJ,OAAO,SAASy4C,EAAEtlE,EAAEkf,EAAE4d,EAAEu/B,GAAGA,IAAIiJ,EAAE8uE,MAAMr/G,QAAQuwC,EAAE83G,mBAAmB,GAAG/2C,GAAG,CAACx+H,MAAM20K,GAAG75I,KAAK6jG,IAAI62C,GAAG,CAACtiL,KAAKuL,OAAO60K,OAAOhgL,QAAQ4kC,IAAI5kC,QAAQ85B,KAAK3uB,OAAOpL,KAAKoL,OAAOsyK,WAAWtyK,OAAOyyK,WAAWzyK,OAAOuyK,aAAavyK,OAAO0yK,aAAa1yK,OAAOwyK,iBAAiBxyK,OAAO2yK,iBAAiB3yK,OAAOq0K,YAAYr0K,OAAOu0K,kBAAkBv0K,OAAOs0K,cAAct0K,OAAO+pJ,SAAS,CAAC3nJ,OAAOpC,OAAOhO,SAAS,SAASglL,GAAGh4G,GAAG,IAAItlE,EAAEslE,GAAGA,EAAEhgE,iBAAiB,OAAOtF,GAAGA,EAAE6zF,KAAKtwF,QAAQ0qK,SAASqP,GAAGvb,GAAG/hK,EAAEsxC,WAAWg0B,CAAC,CAAC,SAASi4G,GAAGj4G,GAAG,IAAItlE,EAAE,CAAC,EAAEkf,EAAEomD,EAAEloE,SAAS,IAAI,IAAI0/B,KAAK5d,EAAE7hB,UAAU2C,EAAE88B,GAAGwoC,EAAExoC,GAAG,IAAIu/B,EAAEn9C,EAAEsuJ,iBAAiB,IAAI,IAAI1wI,KAAKu/B,EAAEr8D,EAAEsf,EAAEwd,IAAIu/B,EAAEv/B,GAAG,OAAO98B,CAAC,CAAC,SAASw9K,GAAGl4G,EAAEtlE,GAAG,GAAG,iBAAiBqa,KAAKra,EAAE+B,KAAK,OAAOujE,EAAE,aAAa,CAACtqE,MAAMgF,EAAEsF,iBAAiBjI,WAAW,CAAC,IAAIogL,GAAG,SAASn4G,GAAG,OAAOA,EAAEvjE,KAAK4+J,GAAGr7F,EAAE,EAAEo4G,GAAG,SAASp4G,GAAG,MAAM,SAASA,EAAEvqE,IAAI,EAAEo8D,GAAG,CAACp8D,KAAK,aAAaC,MAAMqiL,GAAGpP,UAAS,EAAG5yK,OAAO,SAASiqE,GAAG,IAAItlE,EAAExE,KAAK0jB,EAAE1jB,KAAKS,OAAO3C,QAAQ,GAAG4lB,IAAIA,EAAEA,EAAE1f,OAAOi+K,KAAKvjL,OAAO,CAAC,IAAI4iC,EAAEthC,KAAKy5B,KAAKonC,EAAEn9C,EAAE,GAAG,GAAG,SAASomD,GAAG,KAAKA,EAAEA,EAAEl+D,QAAQ,GAAGk+D,EAAE7kE,KAAKm0I,WAAW,OAAM,CAAE,CAA1D,CAA4Dp5I,KAAK8sH,QAAQ,OAAOjsD,EAAE,IAAI51D,EAAE62K,GAAGjhH,GAAG,IAAI51D,EAAE,OAAO41D,EAAE,GAAG7gE,KAAKmiL,SAAS,OAAOH,GAAGl4G,EAAEjJ,GAAG,IAAIp9C,EAAE,gBAAgB9hB,OAAO3B,KAAK6uH,KAAK,KAAK5jH,EAAEnM,IAAI,MAAMmM,EAAEnM,IAAImM,EAAEyzJ,UAAUj7I,EAAE,UAAUA,EAAExY,EAAE1E,IAAI/H,EAAEyM,EAAEnM,KAAK,IAAIgM,OAAOG,EAAEnM,KAAKiC,QAAQ0iB,GAAGxY,EAAEnM,IAAI2kB,EAAExY,EAAEnM,IAAImM,EAAEnM,IAAI,IAAI6gC,GAAG10B,EAAEhG,OAAOgG,EAAEhG,KAAK,CAAC,IAAIm0I,WAAW2oC,GAAG/hL,MAAMy7D,EAAEz7D,KAAK+xK,OAAO/5G,EAAE8pH,GAAGrmH,GAAG,GAAGxwD,EAAEhG,KAAKqhH,YAAYr7G,EAAEhG,KAAKqhH,WAAWj6E,KAAK61I,MAAMj3K,EAAEhG,KAAKkiC,MAAK,GAAI6wB,GAAGA,EAAE/yD,OAAO,SAAS6kE,EAAEtlE,GAAG,OAAOA,EAAE1F,MAAMgrE,EAAEhrE,KAAK0F,EAAE+B,MAAMujE,EAAEvjE,GAAG,CAAjD,CAAmD0E,EAAE+sD,KAAKmtG,GAAGntG,MAAMA,EAAEvxD,oBAAoBuxD,EAAEvxD,kBAAkBsrK,OAAOrT,WAAW,CAAC,IAAI96I,EAAEo0C,EAAE/yD,KAAKm0I,WAAWX,EAAE,CAAC,EAAE94G,GAAG,GAAG,WAAW2B,EAAE,OAAOthC,KAAKmiL,UAAS,EAAGvf,GAAGh/I,EAAE,cAAa,WAAYpf,EAAE29K,UAAS,EAAG39K,EAAEytK,cAAe,IAAG+P,GAAGl4G,EAAEjJ,GAAG,GAAG,WAAWv/B,EAAE,CAAC,GAAG6jI,GAAGl6J,GAAG,OAAOwwD,EAAE,IAAIh7B,EAAEykG,EAAE,WAAWzkG,GAAG,EAAEmiI,GAAGjjI,EAAE,aAAaulG,GAAG09B,GAAGjjI,EAAE,iBAAiBulG,GAAG09B,GAAGh/I,EAAE,cAAa,SAAUkmD,GAAGrpC,EAAEqpC,CAAE,GAAE,CAAC,CAAC,OAAOjJ,CAAC,CAAC,GAAGuhH,GAAG3pC,EAAE,CAAClyI,IAAIuE,OAAOu3K,UAAUv3K,QAAQ+2K,WAAWO,GAAG3oJ,KAAK,IAAI6oJ,GAAG,CAAC9iL,MAAM4iL,GAAG7hL,YAAY,WAAW,IAAIupE,EAAE9pE,KAAKwE,EAAExE,KAAKi0K,QAAQj0K,KAAKi0K,QAAQ,SAASvwJ,EAAE4d,GAAG,IAAIu/B,EAAEwmG,GAAGv9F,GAAGA,EAAEoqG,UAAUpqG,EAAEioG,OAAOjoG,EAAEy4G,MAAK,GAAG,GAAIz4G,EAAEioG,OAAOjoG,EAAEy4G,KAAK1hH,IAAIr8D,EAAExF,KAAK8qE,EAAEpmD,EAAE4d,EAAE,CAAC,EAAEzhC,OAAO,SAASiqE,GAAG,IAAI,IAAItlE,EAAExE,KAAKuG,KAAKvG,KAAK8sH,OAAO7nH,KAAKsB,KAAK,OAAOmd,EAAE5mB,OAAOo0F,OAAO,MAAM5vD,EAAEthC,KAAKwiL,aAAaxiL,KAAK81C,SAAS+qB,EAAE7gE,KAAKS,OAAO3C,SAAS,GAAGU,EAAEwB,KAAK81C,SAAS,GAAG7qC,EAAE82K,GAAG/hL,MAAMyjB,EAAE,EAAEA,EAAEo9C,EAAEniE,OAAO+kB,KAAMu0C,EAAE6I,EAAEp9C,IAAIld,KAAK,MAAMyxD,EAAEl5D,KAAK,IAAIgM,OAAOktD,EAAEl5D,KAAKiC,QAAQ,aAAavC,EAAE+G,KAAKyyD,GAAGt0C,EAAEs0C,EAAEl5D,KAAKk5D,GAAGA,EAAE/yD,OAAO+yD,EAAE/yD,KAAK,CAAC,IAAIm0I,WAAWnuI,GAAG,GAAGq2B,EAAE,CAAC,IAAI3B,EAAE,GAAG87B,EAAE,GAAG,IAAIh4C,EAAE,EAAEA,EAAE6d,EAAE5iC,OAAO+kB,IAAI,CAAC,IAAIu0C,GAAGA,EAAE12B,EAAE7d,IAAIxe,KAAKm0I,WAAWnuI,EAAE+sD,EAAE/yD,KAAK08D,IAAI3J,EAAEgxD,IAAIyhC,wBAAwB/mI,EAAEs0C,EAAEl5D,KAAK6gC,EAAEp6B,KAAKyyD,GAAGyD,EAAEl2D,KAAKyyD,EAAE,CAACh4D,KAAKuiL,KAAKz4G,EAAEtlE,EAAE,KAAKm7B,GAAG3/B,KAAKyiL,QAAQhnH,CAAC,CAAC,OAAOqO,EAAEtlE,EAAE,KAAKhG,EAAE,EAAE4C,QAAQ,WAAW,IAAI0oE,EAAE9pE,KAAKwiL,aAAah+K,EAAExE,KAAKqiL,YAAYriL,KAAKT,MAAM,KAAK,QAAQuqE,EAAEprE,QAAQsB,KAAK0iL,QAAQ54G,EAAE,GAAGk/C,IAAIxkH,KAAKslE,EAAElmE,QAAQ++K,IAAI74G,EAAElmE,QAAQg/K,IAAI94G,EAAElmE,QAAQi/K,IAAI7iL,KAAK8iL,QAAQ19K,SAASkjJ,KAAKpQ,aAAapuE,EAAElmE,SAAQ,SAAUkmE,GAAG,GAAGA,EAAE7kE,KAAK89K,MAAM,CAAC,IAAIr/J,EAAEomD,EAAEk/C,IAAI1nF,EAAE5d,EAAEk1H,MAAM2lC,GAAG76J,EAAElf,GAAG88B,EAAE2tD,UAAU3tD,EAAE0hJ,gBAAgB1hJ,EAAE2hJ,mBAAmB,GAAGv/J,EAAEwmG,iBAAiB4zD,GAAGp6J,EAAEw/J,QAAQ,SAASp5G,EAAExoC,GAAGA,GAAGA,EAAEjkB,SAASqG,GAAG4d,IAAI,aAAaziB,KAAKyiB,EAAEmE,gBAAgB/hB,EAAE+pG,oBAAoBqwD,GAAGh0G,GAAGpmD,EAAEw/J,QAAQ,KAAK1E,GAAG96J,EAAElf,GAAG,EAAE,CAAE,IAAG,EAAE3B,QAAQ,CAAC6/K,QAAQ,SAAS54G,EAAEtlE,GAAG,IAAIk5K,GAAG,OAAM,EAAG,GAAG19K,KAAKmjL,SAAS,OAAOnjL,KAAKmjL,SAAS,IAAIz/J,EAAEomD,EAAEs5G,YAAYt5G,EAAE2uG,oBAAoB3uG,EAAE2uG,mBAAmB70K,SAAQ,SAAUkmE,GAAGmzG,GAAGv5J,EAAEomD,EAAG,IAAGkzG,GAAGt5J,EAAElf,GAAGkf,EAAEk1H,MAAMr/G,QAAQ,OAAOv5B,KAAKwB,IAAIq3I,YAAYn1H,GAAG,IAAI4d,EAAEo9I,GAAGh7J,GAAG,OAAO1jB,KAAKwB,IAAI+9I,YAAY77H,GAAG1jB,KAAKmjL,SAAS7hJ,EAAEw9I,YAAY,IAAI,SAAS6D,GAAG74G,GAAGA,EAAEk/C,IAAIk6D,SAASp5G,EAAEk/C,IAAIk6D,UAAUp5G,EAAEk/C,IAAIk2D,UAAUp1G,EAAEk/C,IAAIk2D,UAAU,CAAC,SAAS0D,GAAG94G,GAAGA,EAAE7kE,KAAKo+K,OAAOv5G,EAAEk/C,IAAIyhC,uBAAuB,CAAC,SAASo4B,GAAG/4G,GAAG,IAAItlE,EAAEslE,EAAE7kE,KAAK08D,IAAIj+C,EAAEomD,EAAE7kE,KAAKo+K,OAAO/hJ,EAAE98B,EAAEokJ,KAAKllI,EAAEklI,KAAK/nF,EAAEr8D,EAAEqzI,IAAIn0H,EAAEm0H,IAAI,GAAGv2G,GAAGu/B,EAAE,CAACiJ,EAAE7kE,KAAK89K,OAAM,EAAG,IAAIvkL,EAAEsrE,EAAEk/C,IAAI4vB,MAAMp6I,EAAEywF,UAAUzwF,EAAEwkL,gBAAgB,aAAarhL,OAAO2/B,EAAE,OAAO3/B,OAAOk/D,EAAE,OAAOriE,EAAEykL,mBAAmB,IAAI,CAAC,CAAC,IAAIK,GAAG,CAACC,WAAW5nH,GAAG6nH,gBAAgBlB,IAAI/O,GAAG3yJ,OAAO68I,YAAY2X,GAAG7B,GAAG3yJ,OAAOw8I,cAAciZ,GAAG9C,GAAG3yJ,OAAOy8I,eAAe6X,GAAG3B,GAAG3yJ,OAAO28I,gBAAgB+Y,GAAG/C,GAAG3yJ,OAAO08I,iBAAiB,SAASxzF,GAAG,IAAIuU,EAAE,OAAM,EAAG,GAAGg4F,GAAGvsG,GAAG,OAAM,EAAG,GAAGA,EAAEA,EAAE/nE,cAAc,MAAMw0K,GAAGzsG,GAAG,OAAOysG,GAAGzsG,GAAG,IAAItlE,EAAEY,SAAStF,cAAcgqE,GAAG,OAAOA,EAAE/oE,QAAQ,MAAM,EAAEw1K,GAAGzsG,GAAGtlE,EAAEtG,cAAc+f,OAAOwlK,oBAAoBj/K,EAAEtG,cAAc+f,OAAOylK,YAAYnN,GAAGzsG,GAAG,qBAAqBjrD,KAAKra,EAAEqqC,WAAW,EAAE4pG,EAAE86B,GAAGxrK,QAAQu+G,WAAWukB,IAAI4N,EAAE86B,GAAGxrK,QAAQuY,WAAWgjK,IAAI/P,GAAGp1K,UAAU+1K,UAAU71F,EAAEkiG,GAAGt9C,EAAEswC,GAAGp1K,UAAUwH,OAAO,SAASmkE,EAAEtlE,GAAG,OAAO,SAASslE,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAEwoC,EAAEtoE,IAAIgD,EAAEslE,EAAEloE,SAAS/B,SAASiqE,EAAEloE,SAAS/B,OAAOm/J,IAAI0I,GAAG59F,EAAE,eAAexoC,EAAE,WAAWwoC,EAAEmqG,QAAQnqG,EAAEsqG,UAAU1wJ,EAAE,EAAE,IAAI4lJ,GAAGx/F,EAAExoC,EAAE2hG,EAAE,CAAC77D,OAAO,WAAW0C,EAAE2+F,aAAa3+F,EAAE4+F,cAAchB,GAAG59F,EAAE,eAAe,IAAG,GAAIpmD,GAAE,EAAG,IAAIm9C,EAAEiJ,EAAEy/F,aAAa,GAAG1oG,EAAE,IAAI,IAAIriE,EAAE,EAAEA,EAAEqiE,EAAEniE,OAAOF,IAAIqiE,EAAEriE,GAAGyoK,MAAM,OAAO,MAAMn9F,EAAEgjD,SAAShjD,EAAE2+F,YAAW,EAAGf,GAAG59F,EAAE,YAAYA,CAAC,CAA5V,CAA8V9pE,KAAK8pE,EAAEA,GAAGuU,EAAEo4F,GAAG3sG,QAAG,EAAOtlE,EAAE,EAAE65E,GAAGx+D,YAAW,WAAYyjH,EAAEw5B,UAAU5xB,IAAIA,GAAGixB,KAAK,OAAOoX,GAAI,GAAE,GAAG,IAAgiBoQ,GAA5hBC,GAAG,2BAA2BC,GAAG,yBAAyBC,GAAGnkK,GAAE,SAAUmqD,GAAG,IAAItlE,EAAEslE,EAAE,GAAG/gE,QAAQ86K,GAAG,QAAQngK,EAAEomD,EAAE,GAAG/gE,QAAQ86K,GAAG,QAAQ,OAAO,IAAIvtJ,OAAO9xB,EAAE,gBAAgBkf,EAAE,IAAK,IAAOqgK,GAAG,CAACC,WAAW,CAAC,eAAeC,cAAc,SAASn6G,EAAEtlE,GAAGA,EAAEs7G,KAAK,IAAIp8F,EAAE82J,GAAG1wG,EAAE,SAASpmD,IAAIomD,EAAEu0E,YAAY97I,KAAKC,UAAUkhB,EAAE3a,QAAQ,OAAO,KAAKqoB,SAAS,IAAIkQ,EAAEi5I,GAAGzwG,EAAE,SAAQ,GAAIxoC,IAAIwoC,EAAEo6G,aAAa5iJ,EAAE,EAAE6iJ,QAAQ,SAASr6G,GAAG,IAAItlE,EAAE,GAAG,OAAOslE,EAAEu0E,cAAc75I,GAAG,eAAe7C,OAAOmoE,EAAEu0E,YAAY,MAAMv0E,EAAEo6G,eAAe1/K,GAAG,SAAS7C,OAAOmoE,EAAEo6G,aAAa,MAAM1/K,CAAC,GAAU4/K,GAAG,CAACJ,WAAW,CAAC,eAAeC,cAAc,SAASn6G,EAAEtlE,GAAGA,EAAEs7G,KAAK,IAAIp8F,EAAE82J,GAAG1wG,EAAE,SAASpmD,IAAIomD,EAAEuyG,YAAY95K,KAAKC,UAAU25K,GAAGz4J,KAAK,IAAI4d,EAAEi5I,GAAGzwG,EAAE,SAAQ,GAAIxoC,IAAIwoC,EAAEu6G,aAAa/iJ,EAAE,EAAE6iJ,QAAQ,SAASr6G,GAAG,IAAItlE,EAAE,GAAG,OAAOslE,EAAEuyG,cAAc73K,GAAG,eAAe7C,OAAOmoE,EAAEuyG,YAAY,MAAMvyG,EAAEu6G,eAAe7/K,GAAG,UAAU7C,OAAOmoE,EAAEu6G,aAAa,OAAO7/K,CAAC,GAAG8/K,GAAG,SAASx6G,GAAG,OAAO65G,GAAGA,IAAIv+K,SAAStF,cAAc,QAAQu2D,UAAUyT,EAAE65G,GAAG1xJ,WAAW,EAAEsyJ,GAAGplL,EAAE,6FAA6FqlL,GAAGrlL,EAAE,2DAA2DslL,GAAGtlL,EAAE,mSAAmSulL,GAAG,4EAA4EC,GAAG,yGAAyGC,GAAG,6BAA6BjjL,OAAOy1I,EAAEviH,OAAO,MAAMgwJ,GAAG,OAAOljL,OAAOijL,GAAG,SAASjjL,OAAOijL,GAAG,KAAKE,GAAG,IAAIxuJ,OAAO,KAAK30B,OAAOkjL,KAAKE,GAAG,aAAaC,GAAG,IAAI1uJ,OAAO,QAAQ30B,OAAOkjL,GAAG,WAAWI,GAAG,qBAAqBC,GAAG,SAASC,GAAG,QAAQC,GAAGjmL,EAAE,yBAAwB,GAAIkmL,GAAG,CAAC,EAAEC,GAAG,CAAC,OAAO,IAAI,OAAO,IAAI,SAAS,IAAI,QAAQ,IAAI,QAAQ,KAAK,OAAO,KAAK,QAAQ,KAAKC,GAAG,4BAA4BC,GAAG,mCAAmCC,GAAGtmL,EAAE,gBAAe,GAAIumL,GAAG,SAAS57G,EAAEtlE,GAAG,OAAOslE,GAAG27G,GAAG37G,IAAI,OAAOtlE,EAAE,EAAE,EAAE,SAASmhL,GAAG77G,EAAEtlE,GAAG,IAAIkf,EAAElf,EAAEghL,GAAGD,GAAG,OAAOz7G,EAAE/gE,QAAQ2a,GAAE,SAAUomD,GAAG,OAAOw7G,GAAGx7G,EAAG,GAAE,CAAC,SAAS87G,GAAG97G,EAAEtlE,GAAG,IAAI,IAAIkf,EAAE4d,EAAEu/B,EAAE,GAAGriE,EAAEgG,EAAEqhL,WAAW56K,EAAEzG,EAAEshL,YAAY7oC,EAAEx5H,EAAEjf,EAAEuhL,kBAAkB9oC,EAAEt9G,EAAE,EAAE87B,EAAE,WAAW,GAAG/3C,EAAEomD,EAAExoC,GAAG8jJ,GAAG9jJ,GAAG,CAAC,IAAIm6B,EAAE,EAAEh7B,EAAEa,EAAEv/B,cAAcmjI,EAAEmgD,GAAG5kJ,KAAK4kJ,GAAG5kJ,GAAG,IAAInK,OAAO,kBAAkBmK,EAAE,UAAU,MAAMq9C,EAAEhU,EAAE/gE,QAAQm8H,GAAE,SAAUp7D,EAAEpmD,EAAE4d,GAAG,OAAOm6B,EAAEn6B,EAAE5iC,OAAO0mL,GAAG3kJ,IAAI,aAAaA,IAAI/c,EAAEA,EAAE3a,QAAQ,sBAAsB,MAAMA,QAAQ,4BAA4B,OAAO28K,GAAGjlJ,EAAE/c,KAAKA,EAAEA,EAAE9Y,MAAM,IAAIpG,EAAE2kG,OAAO3kG,EAAE2kG,MAAMzlF,GAAG,EAAG,IAAGic,GAAGmqC,EAAEprE,OAAOo/E,EAAEp/E,OAAOorE,EAAEgU,EAAEl6D,EAAE6c,EAAEd,EAAE87B,EAAE97B,EAAE,KAAK,CAAC,IAAIxL,EAAE21C,EAAE/oE,QAAQ,KAAK,GAAG,IAAIozB,EAAE,CAAC,GAAG+wJ,GAAGrmK,KAAKirD,GAAG,CAAC,IAAI3qE,EAAE2qE,EAAE/oE,QAAQ,UAAU,GAAG5B,GAAG,EAAE,OAAOqF,EAAEwhL,mBAAmBxhL,EAAEyhL,SAASzhL,EAAEyhL,QAAQn8G,EAAE3I,UAAU,EAAEhiE,GAAGwgC,EAAEA,EAAExgC,EAAE,GAAG64D,EAAE74D,EAAE,GAAG,UAAU,CAAC,GAAGgmL,GAAGtmK,KAAKirD,GAAG,CAAC,IAAIlU,EAAEkU,EAAE/oE,QAAQ,MAAM,GAAG60D,GAAG,EAAE,OAAOoC,EAAEpC,EAAE,GAAG,UAAU,CAAC,IAAI40B,EAAE1gB,EAAEpP,MAAMuqH,IAAI,GAAGz6F,EAAE,OAAOxyB,EAAEwyB,EAAE,GAAG9rF,QAAQ,WAAW,IAAIgnC,EAAEokC,EAAEpP,MAAMsqH,IAAI,GAAGt/I,EAAE,CAAC,IAAIkqD,EAAEjwD,EAAE,OAAOq4B,EAAEtyB,EAAE,GAAGhnC,QAAQklB,EAAE8hB,EAAE,GAAGkqD,EAAEjwD,GAAG,UAAU,CAAC,IAAIqE,EAAE,WAAW,IAAIx/B,EAAEslE,EAAEpP,MAAMoqH,IAAI,GAAGtgL,EAAE,CAAC,IAAIkf,EAAE,CAACna,QAAQ/E,EAAE,GAAG+gE,MAAM,GAAGr4C,MAAMyS,GAAGq4B,EAAExzD,EAAE,GAAG9F,QAAQ,IAAI,IAAI4iC,OAAE,EAAOu/B,OAAE,IAASv/B,EAAEwoC,EAAEpP,MAAMqqH,OAAOlkH,EAAEiJ,EAAEpP,MAAMiqH,KAAK76G,EAAEpP,MAAMgqH,MAAM7jH,EAAE3zC,MAAMyS,EAAEq4B,EAAE6I,EAAE,GAAGniE,QAAQmiE,EAAEtzC,IAAIoS,EAAEjc,EAAE6hD,MAAMhgE,KAAKs7D,GAAG,GAAGv/B,EAAE,OAAO5d,EAAEwiK,WAAW5kJ,EAAE,GAAG02B,EAAE12B,EAAE,GAAG5iC,QAAQglB,EAAE6J,IAAIoS,EAAEjc,CAAC,CAAC,CAA1Q,GAA8Q,GAAGsgB,EAAE,OAAO,SAAS8lC,GAAG,IAAIpmD,EAAEomD,EAAEvgE,QAAQo2B,EAAEmqC,EAAEo8G,WAAW1nL,IAAI,MAAM8iC,GAAGmjJ,GAAG/gK,IAAIE,EAAE0d,GAAG7d,EAAEC,IAAI4d,IAAI5d,GAAGE,EAAEF,IAAI,IAAI,IAAI+3C,EAAExwD,EAAEyY,MAAMic,EAAEq4B,EAAE8R,EAAEvE,MAAM7mE,OAAO+hC,EAAE,IAAIniC,MAAM05D,GAAGktE,EAAE,EAAEA,EAAEltE,EAAEktE,IAAI,CAAC,IAAI/wG,EAAE21C,EAAEvE,MAAM2/D,GAAG/lI,EAAEg1B,EAAE,IAAIA,EAAE,IAAIA,EAAE,IAAI,GAAGyhC,EAAE,MAAMlyC,GAAG,SAASyQ,EAAE,GAAG3vB,EAAE2hL,4BAA4B3hL,EAAE4hL,qBAAqB3lJ,EAAEykG,GAAG,CAAC3lI,KAAK40B,EAAE,GAAGl3B,MAAM0oL,GAAGxmL,EAAEy2D,GAAG,CAAC6F,IAAIoF,EAAEt7D,KAAK,CAACgB,IAAImd,EAAE2iK,cAAc3iK,EAAE3hB,cAAcwjE,MAAM9kC,EAAEvT,MAAM48C,EAAE58C,MAAMK,IAAIu8C,EAAEv8C,MAAM+T,EAAE5d,GAAGlf,EAAE0oB,OAAO1oB,EAAE0oB,MAAMxJ,EAAE+c,EAAEg7B,EAAEqO,EAAE58C,MAAM48C,EAAEv8C,IAAI,CAAza,CAA2ayW,GAAG0hJ,GAAG1hJ,EAAEz6B,QAAQugE,IAAI9R,EAAE,GAAG,UAAU,CAAC,IAAIr4C,OAAE,EAAOm+D,OAAE,EAAOh6D,OAAE,EAAO,GAAGqQ,GAAG,EAAE,CAAC,IAAI2pD,EAAEhU,EAAEl/D,MAAMupB,KAAK6wJ,GAAGnmK,KAAKi/D,IAAIgnG,GAAGjmK,KAAKi/D,IAAIonG,GAAGrmK,KAAKi/D,IAAIqnG,GAAGtmK,KAAKi/D,KAAKh6D,EAAEg6D,EAAE/8E,QAAQ,IAAI,IAAI,IAAIozB,GAAGrQ,EAAEg6D,EAAEhU,EAAEl/D,MAAMupB,GAAGxU,EAAEmqD,EAAE3I,UAAU,EAAEhtC,EAAE,CAACA,EAAE,IAAIxU,EAAEmqD,GAAGnqD,GAAGq4C,EAAEr4C,EAAEjhB,QAAQ8F,EAAE2kG,OAAOxpF,GAAGnb,EAAE2kG,MAAMxpF,EAAEggB,EAAEhgB,EAAEjhB,OAAOihC,EAAE,CAAC,GAAGmqC,IAAIpmD,EAAE,OAAOlf,EAAE2kG,OAAO3kG,EAAE2kG,MAAMr/B,GAAG,OAAO,EAAEA,GAAO,UAAUrO,MAAU,SAASzD,EAAExzD,GAAGm7B,GAAGn7B,EAAEslE,EAAEA,EAAE3I,UAAU38D,EAAE,CAAC,SAASof,EAAEkmD,EAAEpmD,EAAEllB,GAAG,IAAIyM,EAAEwY,EAAE,GAAG,MAAMC,IAAIA,EAAEic,GAAG,MAAMnhC,IAAIA,EAAEmhC,GAAGmqC,EAAE,IAAIrmD,EAAEqmD,EAAE/nE,cAAckJ,EAAE41D,EAAEniE,OAAO,EAAEuM,GAAG,GAAG41D,EAAE51D,GAAGo7K,gBAAgB5iK,EAAExY,UAAUA,EAAE,EAAE,GAAGA,GAAG,EAAE,CAAC,IAAI,IAAIwwD,EAAEoF,EAAEniE,OAAO,EAAE+8D,GAAGxwD,EAAEwwD,IAAIj3D,EAAE+oB,KAAK/oB,EAAE+oB,IAAIszC,EAAEpF,GAAGl1D,IAAImd,EAAEllB,GAAGqiE,EAAEniE,OAAOuM,EAAEq2B,EAAEr2B,GAAG41D,EAAE51D,EAAE,GAAG1E,GAAG,KAAK,OAAOkd,EAAEjf,EAAE0oB,OAAO1oB,EAAE0oB,MAAM48C,EAAE,IAAG,EAAGpmD,EAAEllB,GAAG,MAAMilB,IAAIjf,EAAE0oB,OAAO1oB,EAAE0oB,MAAM48C,EAAE,IAAG,EAAGpmD,EAAEllB,GAAGgG,EAAE+oB,KAAK/oB,EAAE+oB,IAAIu8C,EAAEpmD,EAAEllB,GAAG,CAAColB,GAAG,CAAC,IAAImnH,GAAGqzB,GAAGkoB,GAAGC,GAAG/hJ,GAAGgiJ,GAAG3kC,GAAGjX,GAAG67C,GAAG,YAAYC,GAAG,eAAeC,GAAG,qCAAqCC,GAAG,iCAAiCC,GAAG,WAAWC,GAAG,WAAWC,GAAG,SAASviC,GAAG,kBAAkBwiC,GAAG,wBAAwBC,GAAG,kBAAkBxoC,GAAG,SAASyoC,GAAG,gBAAgBC,GAAGxnK,EAAE2kK,IAAIzuG,GAAG,UAAU,SAASuxG,GAAGt9G,EAAEtlE,EAAEkf,GAAG,MAAM,CAAChkB,KAAK,EAAE6G,IAAIujE,EAAEiwG,UAAUv1K,EAAEs1K,SAASuN,GAAG7iL,GAAG8iL,YAAY,CAAC,EAAE17K,OAAO8X,EAAEoyB,SAAS,GAAG,CAAC,SAASyxI,GAAGz9G,EAAEtlE,GAAGumI,GAAGvmI,EAAEs7G,MAAMu5D,GAAGmN,GAAGhiL,EAAEgjL,UAAUvqC,EAAE4E,GAAGr9I,EAAEi5J,aAAaxgB,EAAErS,GAAGpmI,EAAE+4J,iBAAiBtgB,EAAEz4I,EAAE44J,cAAckpB,GAAGhN,GAAG90K,EAAEg8K,QAAQ,iBAAiB+F,GAAGjN,GAAG90K,EAAEg8K,QAAQ,oBAAoBh8I,GAAG80I,GAAG90K,EAAEg8K,QAAQ,qBAAqBpiB,GAAG55J,EAAE2uE,WAAW,IAAIzvD,EAAE4d,EAAEu/B,EAAE,GAAGriE,GAAE,IAAKgG,EAAEijL,mBAAmBx8K,EAAEzG,EAAEkjL,WAAWjkK,GAAE,EAAGkc,GAAE,EAAG,SAAS87B,EAAEqO,GAAG,GAAG9R,EAAE8R,GAAGrmD,GAAGqmD,EAAE69G,YAAY79G,EAAE89G,GAAG99G,EAAEtlE,IAAIq8D,EAAEniE,QAAQorE,IAAIpmD,GAAGA,EAAEmkK,KAAK/9G,EAAEg+G,QAAQh+G,EAAEi+G,OAAOC,GAAGtkK,EAAE,CAACk3J,IAAI9wG,EAAEg+G,OAAO5hH,MAAM4D,IAAIxoC,IAAIwoC,EAAEm+G,UAAU,GAAGn+G,EAAEg+G,QAAQh+G,EAAEi+G,KAAK98K,EAAE6+D,EAAErO,EAAE,SAASqO,GAAG,IAAI,IAAItlE,EAAEslE,EAAEprE,OAAO8F,KAAK,CAAC,GAAG,IAAIslE,EAAEtlE,GAAG9E,KAAK,OAAOoqE,EAAEtlE,GAAGslE,EAAE3gE,KAAK,CAAC,CAA1E,CAA4Em4B,EAAEwU,UAAU2lB,GAAGA,EAAEosH,IAAIG,GAAGvsH,EAAE,CAACm/G,IAAI3vK,EAAE68K,OAAO5hH,MAAMj7D,QAAQ,CAAC,GAAG6+D,EAAEo+G,UAAU,CAAC,IAAI1pL,EAAEsrE,EAAEq+G,YAAY,aAAa7mJ,EAAE8hI,cAAc9hI,EAAE8hI,YAAY,CAAC,IAAI5kK,GAAGsrE,CAAC,CAACxoC,EAAEwU,SAASvwC,KAAKukE,GAAGA,EAAEl+D,OAAO01B,CAAC,CAAC,IAAIr2B,EAAEwwD,EAAEqO,EAAEh0B,SAASg0B,EAAEh0B,SAAS9xC,QAAO,SAAU8lE,GAAG,OAAOA,EAAEo+G,SAAU,IAAGlwH,EAAE8R,GAAGA,EAAEu5F,MAAM5/I,GAAE,GAAI+iK,GAAG18G,EAAEvjE,OAAOo5B,GAAE,GAAI,IAAI,IAAI/b,EAAE,EAAEA,EAAE4gB,GAAG9lC,OAAOklB,IAAI4gB,GAAG5gB,GAAGkmD,EAAEtlE,EAAE,CAAC,SAASwzD,EAAE8R,GAAG,IAAInqC,EAAE,IAAI,IAAIn7B,OAAE,GAAQA,EAAEslE,EAAEh0B,SAASg0B,EAAEh0B,SAASp3C,OAAO,KAAK,IAAI8F,EAAE9E,MAAM,MAAM8E,EAAEsL,MAAMg6D,EAAEh0B,SAAS3sC,KAAK,CAAC,OAAOy8K,GAAG97G,EAAE,CAACg2C,KAAKirB,GAAG86C,WAAWrhL,EAAEqhL,WAAWC,WAAWthL,EAAEshL,WAAWC,iBAAiBvhL,EAAEuhL,iBAAiBK,qBAAqB5hL,EAAE4hL,qBAAqBD,4BAA4B3hL,EAAE2hL,4BAA4BH,kBAAkBxhL,EAAE4jL,SAASC,kBAAkB7jL,EAAE6jL,kBAAkBn7J,MAAM,SAAS48C,EAAEtrE,EAAEyM,EAAE+sD,EAAEp0C,GAAG,IAAI6c,EAAEa,GAAGA,EAAE88H,IAAIxzB,GAAG9gE,GAAGuzE,GAAG,QAAQ58G,IAAIjiC,EAAE,SAASsrE,GAAG,IAAI,IAAItlE,EAAE,GAAGkf,EAAE,EAAEA,EAAEomD,EAAEprE,OAAOglB,IAAI,CAAC,IAAI4d,EAAEwoC,EAAEpmD,GAAG4kK,GAAGzpK,KAAKyiB,EAAE/hC,QAAQ+hC,EAAE/hC,KAAK+hC,EAAE/hC,KAAKwJ,QAAQw/K,GAAG,IAAI/jL,EAAEe,KAAK+7B,GAAG,CAAC,OAAO98B,CAAC,CAA1H,CAA4HhG,IAAI,IAAI0mI,EAAE/wG,EAAEizJ,GAAGt9G,EAAEtrE,EAAE8iC,GAAGb,IAAItM,EAAEiqI,GAAG39H,GAAG,WAAWykG,EAAE/wG,GAAG5tB,MAAM,WAAW2+H,EAAE3+H,KAAK2+H,EAAE40C,SAASp6K,MAAM,oBAAoBwlI,EAAE40C,SAASp6K,OAAOg+I,OAAOvpH,EAAE8zJ,WAAU,GAAI,IAAI,IAAI9oL,EAAE,EAAEA,EAAEonL,GAAG7nL,OAAOS,IAAIg1B,EAAEoyJ,GAAGpnL,GAAGg1B,EAAE3vB,IAAI2vB,EAAE1Q,IAAK,SAASqmD,GAAG,MAAM0wG,GAAG1wG,EAAE,WAAWA,EAAEu5F,KAAI,EAAG,CAA3C,CAA6ClvI,GAAGA,EAAEkvI,MAAM5/I,GAAE,IAAK+iK,GAAGryJ,EAAE5tB,OAAOo5B,GAAE,GAAIlc,EAAE,SAASqmD,GAAG,IAAItlE,EAAEslE,EAAEiwG,UAAUr2J,EAAElf,EAAE9F,OAAO,GAAGglB,EAAE,IAAI,IAAI4d,EAAEwoC,EAAEvE,MAAM,IAAIjnE,MAAMolB,GAAGm9C,EAAE,EAAEA,EAAEn9C,EAAEm9C,IAAIv/B,EAAEu/B,GAAG,CAACthE,KAAKiF,EAAEq8D,GAAGthE,KAAKtC,MAAMsF,KAAKC,UAAUgC,EAAEq8D,GAAG5jE,QAAQ,MAAMuH,EAAEq8D,GAAG3zC,QAAQoU,EAAEu/B,GAAG3zC,MAAM1oB,EAAEq8D,GAAG3zC,MAAMoU,EAAEu/B,GAAGtzC,IAAI/oB,EAAEq8D,GAAGtzC,UAAUu8C,EAAEu5F,MAAMv5F,EAAE4vG,OAAM,EAAG,CAApO,CAAsOvlJ,GAAGA,EAAEwzJ,YAAYa,GAAGr0J,GAAG,SAAS21C,GAAG,IAAItlE,EAAEg2K,GAAG1wG,EAAE,QAAQ,GAAGtlE,EAAEslE,EAAE+9G,GAAGrjL,EAAEwjL,GAAGl+G,EAAE,CAAC8wG,IAAIp2K,EAAE0hE,MAAM4D,QAAQ,CAAC,MAAM0wG,GAAG1wG,EAAE,YAAYA,EAAEi+G,MAAK,GAAI,IAAIrkK,EAAE82J,GAAG1wG,EAAE,aAAapmD,IAAIomD,EAAEg+G,OAAOpkK,EAAE,CAAC,CAAhJ,CAAkJyQ,GAAG,SAAS21C,GAAwB,MAAf0wG,GAAG1wG,EAAE,YAAoBA,EAAEusC,MAAK,EAAG,CAArD,CAAuDliF,IAAIzQ,IAAIA,EAAEyQ,GAAGlpB,EAAEwwD,EAAEtnC,IAAImN,EAAEnN,EAAE0sC,EAAEt7D,KAAK4uB,GAAG,EAAE5G,IAAI,SAASu8C,EAAEtlE,EAAEkf,GAAG,IAAIllB,EAAEqiE,EAAEA,EAAEniE,OAAO,GAAGmiE,EAAEniE,QAAQ,EAAE4iC,EAAEu/B,EAAEA,EAAEniE,OAAO,GAAG+8D,EAAEj9D,EAAE,EAAE2qG,MAAM,SAASr/B,EAAEtlE,EAAEkf,GAAG,GAAG4d,KAAK+7G,GAAG,aAAa/7G,EAAE/6B,KAAK+6B,EAAEw4I,SAAS3zI,cAAc2jC,GAAG,CAAC,IAAIjJ,EAAEpF,EAAEn6B,EAAEwU,SAAS,GAAGg0B,EAAEnqC,GAAGmqC,EAAE14C,OAAO,YAAYyvC,EAAEv/B,GAAG/6B,KAAK,UAAUs6D,EAAEt6D,IAAIujE,EAAEq9G,GAAGr9G,GAAGrO,EAAE/8D,OAAOuM,EAAE,aAAaA,GAAGwzI,GAAG5/H,KAAKirD,GAAG,GAAG,IAAItrE,EAAE,IAAI,GAAG,GAAG,CAACmhC,GAAG,aAAa10B,IAAI6+D,EAAEA,EAAE/gE,QAAQm+K,GAAG,MAAM,IAAIlvH,OAAE,EAAOp0C,OAAE,GAAQH,GAAG,MAAMqmD,IAAI9R,EAAE,SAAS8R,EAAEtlE,GAAG,IAAIkf,EAAElf,EAAEs/K,GAAGt/K,GAAGo/K,GAAG,GAAGlgK,EAAE7E,KAAKirD,GAAG,CAAC,IAAI,IAAIxoC,EAAEu/B,EAAEriE,EAAEyM,EAAE,GAAGwY,EAAE,GAAGkc,EAAEjc,EAAEq8C,UAAU,EAAEz+B,EAAE5d,EAAE6S,KAAKuzC,IAAI,EAAEjJ,EAAEv/B,EAAE72B,OAAOk1B,IAAIlc,EAAEle,KAAK/G,EAAEsrE,EAAEl/D,MAAM+0B,EAAEkhC,IAAI51D,EAAE1F,KAAKhD,KAAKC,UAAUhE,KAAK,IAAIi9D,EAAE09G,GAAG73I,EAAE,GAAGlQ,QAAQnmB,EAAE1F,KAAK,MAAM5D,OAAO85D,EAAE,MAAMh4C,EAAEle,KAAK,CAAC,WAAWk2D,IAAI97B,EAAEkhC,EAAEv/B,EAAE,GAAG5iC,MAAM,CAAC,OAAOihC,EAAEmqC,EAAEprE,SAAS+kB,EAAEle,KAAK/G,EAAEsrE,EAAEl/D,MAAM+0B,IAAI10B,EAAE1F,KAAKhD,KAAKC,UAAUhE,KAAK,CAACspH,WAAW78G,EAAEJ,KAAK,KAAKsiB,OAAO1J,EAAE,CAAC,CAApW,CAAsWqmD,EAAEs0F,KAAKx6I,EAAE,CAAClkB,KAAK,EAAEooH,WAAW9vD,EAAE8vD,WAAW36F,OAAO6qC,EAAE7qC,OAAOrd,KAAKg6D,GAAG,MAAMA,GAAGrO,EAAE/8D,QAAQ,MAAM+8D,EAAEA,EAAE/8D,OAAO,GAAGoR,OAAO8T,EAAE,CAAClkB,KAAK,EAAEoQ,KAAKg6D,IAAIlmD,GAAG63C,EAAEl2D,KAAKqe,EAAE,CAAC,CAAC,EAAEqiK,QAAQ,SAASn8G,EAAEtlE,EAAEkf,GAAG,GAAG4d,EAAE,CAAC,IAAIu/B,EAAE,CAACnhE,KAAK,EAAEoQ,KAAKg6D,EAAE40F,WAAU,GAAIp9H,EAAEwU,SAASvwC,KAAKs7D,EAAE,CAAC,IAAIn9C,CAAC,CAAC,SAASkkK,GAAG99G,EAAEtlE,GAAG,IAAIkf,EAAE4d,GAAGA,EAAEi5I,GAAG72J,EAAEomD,EAAE,UAAUpmD,EAAE5kB,IAAIwiC,GAAGwoC,EAAE4vG,OAAO5vG,EAAEhrE,MAAMgrE,EAAEs5F,cAAct5F,EAAEiwG,UAAUr7K,OAAO,SAASorE,GAAG,IAAItlE,EAAE+1K,GAAGzwG,EAAE,OAAOtlE,IAAIslE,EAAE19D,IAAI5H,EAAEslE,EAAEktG,SAAS,SAASltG,GAAW,IAAR,IAAItlE,EAAEslE,EAAOtlE,GAAG,CAAC,QAAG,IAASA,EAAEm5I,IAAI,OAAM,EAAGn5I,EAAEA,EAAEoH,MAAM,CAAC,OAAM,CAAE,CAA3E,CAA6Ek+D,GAAG,CAArI,CAAuIA,GAAG,SAASA,GAAG,IAAItlE,EAAE,aAAaslE,EAAEvjE,KAAK/B,EAAEg2K,GAAG1wG,EAAE,SAASA,EAAEo+G,UAAU1jL,GAAGg2K,GAAG1wG,EAAE,gBAAgBtlE,EAAEg2K,GAAG1wG,EAAE,iBAAiBA,EAAEo+G,UAAU1jL,GAAG,IAAqayG,EAAjayY,EAAE62J,GAAGzwG,EAAE,QAA4Q,GAApQpmD,IAAIomD,EAAEq+G,WAAW,OAAOzkK,EAAE,YAAYA,EAAEomD,EAAE2+G,qBAAqB3+G,EAAEgwG,SAAS,WAAWhwG,EAAEgwG,SAAS,gBAAgB,aAAahwG,EAAEvjE,KAAKujE,EAAEo+G,WAAWvO,GAAG7vG,EAAE,OAAOpmD,EAAE,SAASomD,EAAEtlE,GAAG,OAAOslE,EAAEw9G,YAAY,IAAI9iL,IAAIslE,EAAEw9G,YAAY,UAAU9iL,IAAIslE,EAAEw9G,YAAY9iL,EAAE,CAAvF,CAAyFslE,EAAE,UAAa,aAAaA,EAAEvjE,KAAK,GAAG0E,EAAEwvK,GAAG3wG,EAAEm9G,IAAI,CAAC,IAAI3lJ,EAAEonJ,GAAGz9K,GAAG41D,EAAEv/B,EAAE/hC,KAAKf,EAAE8iC,EAAEm4I,QAAQ3vG,EAAEq+G,WAAWtnH,EAAEiJ,EAAE2+G,kBAAkBjqL,EAAEsrE,EAAEo+G,UAAUj9K,EAAEhO,OAAO44E,EAAE,OAAa,GAAG5qE,EAAEwvK,GAAG3wG,EAAEm9G,IAAI,CAAC,IAAIxjK,EAAEqmD,EAAEs5F,cAAct5F,EAAEs5F,YAAY,CAAC,GAAGzjI,EAAE+oJ,GAAGz9K,GAAGwwD,EAAE97B,EAAEpgC,KAAKy4D,GAAGx5D,EAAEmhC,EAAE85I,QAAQh2J,EAAEg4C,GAAG2rH,GAAG,WAAW,GAAGt9G,IAAI9R,EAAEmwH,WAAW1sH,EAAEzD,EAAEywH,kBAAkBjqL,EAAEw5D,EAAEliB,SAASg0B,EAAEh0B,SAAS9xC,QAAO,SAAU8lE,GAAG,IAAIA,EAAEo+G,UAAU,OAAOp+G,EAAEl+D,OAAOosD,GAAE,CAAG,IAAGA,EAAEkwH,UAAUj9K,EAAEhO,OAAO44E,GAAG/L,EAAEh0B,SAAS,GAAGg0B,EAAE4vG,OAAM,CAAE,CAAE,CAAl0B,CAAo0B5vG,GAAG,SAASA,GAAG,SAASA,EAAEvjE,MAAMujE,EAAE6+G,SAASpO,GAAGzwG,EAAE,QAAQ,CAArD,CAAuDA,GAAG,SAASA,GAAG,IAAItlE,GAAGA,EAAE+1K,GAAGzwG,EAAE,SAASA,EAAEliE,UAAUpD,GAAG,MAAMg2K,GAAG1wG,EAAE,qBAAqBA,EAAE+nG,gBAAe,EAAG,CAAtG,CAAwG/nG,GAAG,IAAI,IAAIjJ,EAAE,EAAEA,EAAEylH,GAAG5nL,OAAOmiE,IAAIiJ,EAAEw8G,GAAGzlH,GAAGiJ,EAAEtlE,IAAIslE,EAAE,OAAO,SAASA,GAAG,IAAItlE,EAAEkf,EAAE4d,EAAEu/B,EAAEriE,EAAEyM,EAAEwY,EAAEkc,EAAE87B,EAAEqO,EAAEiwG,UAAU,IAAIv1K,EAAE,EAAEkf,EAAE+3C,EAAE/8D,OAAO8F,EAAEkf,EAAElf,IAAI,GAAG88B,EAAEu/B,EAAEpF,EAAEj3D,GAAGjF,KAAKf,EAAEi9D,EAAEj3D,GAAGvH,MAAMypL,GAAG7nK,KAAKyiB,GAAG,GAAGwoC,EAAE8+G,aAAY,GAAI39K,EAAE49K,GAAGvnJ,EAAEv4B,QAAQ29K,GAAG,QAAQplJ,EAAEA,EAAEv4B,QAAQi+K,GAAG,KAAKxiC,GAAG3lI,KAAKyiB,GAAGA,EAAEA,EAAEv4B,QAAQy7I,GAAG,IAAIhmJ,EAAE26K,GAAG36K,IAAImhC,EAAEmnJ,GAAGjoK,KAAKyiB,MAAMA,EAAEA,EAAE12B,MAAM,GAAG,IAAIK,IAAIA,EAAEpF,OAAO85B,GAAG,eAAe2B,EAAExd,EAAEwd,MAAMA,EAAE,aAAar2B,EAAE69K,QAAQnpJ,IAAI2B,EAAExd,EAAEwd,IAAIr2B,EAAEskK,OAAO9rJ,EAAEk3J,GAAGn8K,EAAE,UAAUmhC,EAAEw6I,GAAGrwG,EAAE,cAAcnoE,OAAO2/B,EAAE,KAAK7d,EAAE,MAAK,EAAG,EAAEg4C,EAAEj3D,IAAG,IAAK21K,GAAGrwG,EAAE,UAAUnoE,OAAOmiB,EAAEwd,IAAI7d,EAAE,MAAK,EAAG,EAAEg4C,EAAEj3D,IAAIm/H,EAAEriG,KAAKxd,EAAEwd,IAAI64I,GAAGrwG,EAAE,UAAUnoE,OAAOgiI,EAAEriG,IAAI7d,EAAE,MAAK,EAAG,EAAEg4C,EAAEj3D,OAAOyG,GAAGA,EAAEpF,OAAOikE,EAAEliE,WAAWi6I,GAAG/3E,EAAEvjE,IAAIujE,EAAEgwG,SAASp6K,KAAK4hC,GAAGi4I,GAAGzvG,EAAExoC,EAAE9iC,EAAEi9D,EAAEj3D,GAAGm7B,GAAGg6I,GAAG7vG,EAAExoC,EAAE9iC,EAAEi9D,EAAEj3D,GAAGm7B,QAAQ,GAAG8mJ,GAAG5nK,KAAKyiB,GAAGA,EAAEA,EAAEv4B,QAAQ09K,GAAG,KAAK9mJ,EAAEmnJ,GAAGjoK,KAAKyiB,MAAMA,EAAEA,EAAE12B,MAAM,GAAG,IAAIuvK,GAAGrwG,EAAExoC,EAAE9iC,EAAEyM,GAAE,EAAG,EAAEwwD,EAAEj3D,GAAGm7B,OAAO,CAAC,IAAIq4B,GAAG12B,EAAEA,EAAEv4B,QAAQ29K,GAAG,KAAKhsH,MAAMqsH,IAAInjK,EAAEo0C,GAAGA,EAAE,GAAGr4B,GAAE,EAAG/b,IAAI0d,EAAEA,EAAE12B,MAAM,IAAIgZ,EAAEllB,OAAO,IAAIooL,GAAGjoK,KAAK+E,KAAKA,EAAEA,EAAEhZ,MAAM,GAAG,GAAG+0B,GAAE,IAAKq6I,GAAGlwG,EAAExoC,EAAEu/B,EAAEriE,EAAEolB,EAAE+b,EAAE10B,EAAEwwD,EAAEj3D,GAAG,MAAMm1K,GAAG7vG,EAAExoC,EAAE/+B,KAAKC,UAAUhE,GAAGi9D,EAAEj3D,KAAKslE,EAAEliE,WAAW,UAAU05B,GAAGugH,GAAG/3E,EAAEvjE,IAAIujE,EAAEgwG,SAASp6K,KAAK4hC,IAAIi4I,GAAGzvG,EAAExoC,EAAE,OAAOm6B,EAAEj3D,GAAG,CAAn8B,CAAq8BslE,GAAGA,CAAC,CAAC,SAAS0+G,GAAG1+G,GAAG,IAAItlE,EAAE,GAAGA,EAAEg2K,GAAG1wG,EAAE,SAAS,CAAC,IAAIpmD,EAAE,SAASomD,GAAG,IAAItlE,EAAEslE,EAAEpP,MAAMisH,IAAI,GAAIniL,EAAJ,CAAa,IAAIkf,EAAE,CAAC,EAAEA,EAAEi6H,IAAIn5I,EAAE,GAAG4sB,OAAO,IAAIkQ,EAAE98B,EAAE,GAAG4sB,OAAOroB,QAAQ89K,GAAG,IAAIhmH,EAAEv/B,EAAEo5B,MAAMksH,IAA0G,OAAtG/lH,GAAGn9C,EAAEm3D,MAAMv5C,EAAEv4B,QAAQ69K,GAAG,IAAIx1J,OAAO1N,EAAEqlK,UAAUloH,EAAE,GAAGzvC,OAAOyvC,EAAE,KAAKn9C,EAAEslK,UAAUnoH,EAAE,GAAGzvC,SAAS1N,EAAEm3D,MAAMv5C,EAAS5d,CAAxL,CAAyL,CAAnO,CAAqOlf,GAAGkf,GAAG+0H,EAAE3uE,EAAEpmD,EAAE,CAAC,CAAC,SAASskK,GAAGl+G,EAAEtlE,GAAGslE,EAAEm/G,eAAen/G,EAAEm/G,aAAa,IAAIn/G,EAAEm/G,aAAa1jL,KAAKf,EAAE,CAAC,SAASkkL,GAAG5+G,GAAG,IAAItlE,EAAEslE,EAAEvqE,KAAKwJ,QAAQk+K,GAAG,IAAI,OAAOziL,GAAG,MAAMslE,EAAEvqE,KAAK,KAAKiF,EAAE,WAAWsiL,GAAGjoK,KAAKra,GAAG,CAACjF,KAAKiF,EAAEoG,MAAM,GAAG,GAAG6uK,SAAQ,GAAI,CAACl6K,KAAK,IAAIoC,OAAO6C,EAAE,KAAKi1K,SAAQ,EAAG,CAAC,SAASoP,GAAG/+G,GAAG,IAAItlE,EAAEslE,EAAEpP,MAAMssH,IAAI,GAAGxiL,EAAE,CAAC,IAAIkf,EAAE,CAAC,EAAE,OAAOlf,EAAEZ,SAAQ,SAAUkmE,GAAGpmD,EAAEomD,EAAEl/D,MAAM,KAAI,CAAG,IAAG8Y,CAAC,CAAC,CAAC,SAAS2jK,GAAGv9G,GAAG,IAAI,IAAItlE,EAAE,CAAC,EAAEkf,EAAE,EAAE4d,EAAEwoC,EAAEprE,OAAOglB,EAAE4d,EAAE5d,IAAIlf,EAAEslE,EAAEpmD,GAAGnkB,MAAMuqE,EAAEpmD,GAAGzmB,MAAM,OAAOuH,CAAC,CAAC,IAAI8jL,GAAG,eAAeC,GAAG,UAAU,SAASW,GAAGp/G,GAAG,OAAOs9G,GAAGt9G,EAAEvjE,IAAIujE,EAAEiwG,UAAUnvK,QAAQk/D,EAAEl+D,OAAO,CAAC,IAAgrBu9K,GAAGC,GAA/qBC,GAAG,CAACtF,GAAGK,GAAG,CAACkF,iBAAiB,SAASx/G,EAAEtlE,GAAG,GAAG,UAAUslE,EAAEvjE,IAAI,CAAC,IAAImd,EAAEomD,EAAEgwG,SAAS,IAAIp2J,EAAE,WAAW,OAAO,IAAI4d,OAAE,EAAO,IAAI5d,EAAE,UAAUA,EAAE,kBAAkB4d,EAAEi5I,GAAGzwG,EAAE,SAASpmD,EAAEhkB,MAAM4hC,IAAI5d,EAAE,YAAY4d,EAAE,IAAI3/B,OAAO+hB,EAAE,UAAU,WAAW4d,EAAE,CAAC,IAAIu/B,EAAE25G,GAAG1wG,EAAE,QAAO,GAAItrE,EAAEqiE,EAAE,MAAMl/D,OAAOk/D,EAAE,KAAK,GAAG51D,EAAE,MAAMuvK,GAAG1wG,EAAE,UAAS,GAAIrmD,EAAE+2J,GAAG1wG,EAAE,aAAY,GAAInqC,EAAEupJ,GAAGp/G,GAAG0+G,GAAG7oJ,GAAGk6I,GAAGl6I,EAAE,OAAO,YAAYioJ,GAAGjoJ,EAAEn7B,GAAGm7B,EAAEgoJ,WAAU,EAAGhoJ,EAAEkoJ,GAAG,IAAIlmL,OAAO2/B,EAAE,kBAAkB9iC,EAAEwpL,GAAGroJ,EAAE,CAACi7I,IAAIj7I,EAAEkoJ,GAAG3hH,MAAMvmC,IAAI,IAAI87B,EAAEytH,GAAGp/G,GAAG0wG,GAAG/+G,EAAE,SAAQ,GAAIo+G,GAAGp+G,EAAE,OAAO,SAASmsH,GAAGnsH,EAAEj3D,GAAGwjL,GAAGroJ,EAAE,CAACi7I,IAAI,IAAIj5K,OAAO2/B,EAAE,eAAe9iC,EAAE0nE,MAAMzK,IAAI,IAAIzD,EAAEkxH,GAAGp/G,GAAG,OAAO0wG,GAAGxiH,EAAE,SAAQ,GAAI6hH,GAAG7hH,EAAE,QAAQ12B,GAAGsmJ,GAAG5vH,EAAExzD,GAAGwjL,GAAGroJ,EAAE,CAACi7I,IAAI/5G,EAAEqF,MAAMlO,IAAI/sD,EAAE00B,EAAEooJ,MAAK,EAAGtkK,IAAIkc,EAAEmoJ,OAAOrkK,GAAGkc,CAAC,CAAC,CAAC,IAAc4pJ,GAAG,CAACl9K,MAAM,SAASy9D,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE98B,EAAEvH,MAAM4jE,EAAEr8D,EAAE0iH,UAAU1oH,EAAEsrE,EAAEvjE,IAAI0E,EAAE6+D,EAAEgwG,SAASp6K,KAAK,GAAGoqE,EAAEliE,UAAU,OAAO8yK,GAAG5wG,EAAExoC,EAAEu/B,IAAG,EAAG,GAAG,WAAWriE,GAAG,SAASsrE,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,GAAGA,EAAEywC,OAAO0M,EAAE,kJAAkJ,UAAUl/D,OAAO2/B,EAAE,UAAU,MAAM,MAAM9iC,EAAE,4DAA4DyM,EAAE,uBAAuBtJ,OAAOk/D,EAAE,KAAwCs5G,GAAGrwG,EAAE,SAAxC7+D,EAAE,GAAGtJ,OAAOsJ,EAAE,KAAKtJ,OAAOg5K,GAAGn2K,EAAEhG,IAAoB,MAAK,EAAG,CAA/X,CAAiYsrE,EAAExoC,EAAEu/B,QAAQ,GAAG,UAAUriE,GAAG,aAAayM,GAAG,SAAS6+D,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,GAAGA,EAAEywC,OAAO0M,EAAE05G,GAAGzwG,EAAE,UAAU,OAAOtrE,EAAE+7K,GAAGzwG,EAAE,eAAe,OAAO7+D,EAAEsvK,GAAGzwG,EAAE,gBAAgB,QAAQyvG,GAAGzvG,EAAE,UAAU,iBAAiBnoE,OAAO6C,EAAE,KAAK,OAAO7C,OAAO6C,EAAE,KAAK7C,OAAOk/D,EAAE,SAAS,SAASriE,EAAE,KAAKmD,OAAO6C,EAAE,KAAK,OAAO7C,OAAO6C,EAAE,KAAK7C,OAAOnD,EAAE,OAAO27K,GAAGrwG,EAAE,SAAS,WAAWnoE,OAAO6C,EAAE,KAAK,sBAAsB,qBAAqB7C,OAAOnD,EAAE,OAAOmD,OAAOsJ,EAAE,MAAM,0BAA0B,WAAWtJ,OAAO2/B,EAAE,MAAMu/B,EAAE,IAAIA,EAAE,KAAK,mBAAmB,4BAA4Bl/D,OAAOg5K,GAAGn2K,EAAE,qBAAqB,MAAM,iBAAiB7C,OAAOg5K,GAAGn2K,EAAE,6CAA6C,MAAM,SAAS7C,OAAOg5K,GAAGn2K,EAAE,OAAO,KAAK,MAAK,EAAG,CAA/oB,CAAipBslE,EAAExoC,EAAEu/B,QAAQ,GAAG,UAAUriE,GAAG,UAAUyM,GAAG,SAAS6+D,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE5d,GAAGA,EAAEywC,OAAO0M,EAAE05G,GAAGzwG,EAAE,UAAU,OAAOjJ,EAAEv/B,EAAE,MAAM3/B,OAAOk/D,EAAE,KAAKA,EAAE04G,GAAGzvG,EAAE,UAAU,MAAMnoE,OAAO6C,EAAE,KAAK7C,OAAOk/D,EAAE,MAAMs5G,GAAGrwG,EAAE,SAAS6wG,GAAGn2K,EAAEq8D,GAAG,MAAK,EAAG,CAApK,CAAsKiJ,EAAExoC,EAAEu/B,QAAQ,GAAG,UAAUriE,GAAG,aAAaA,GAAG,SAASsrE,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAEwoC,EAAEgwG,SAASp6K,KAAKmhE,EAAEn9C,GAAG,CAAC,EAAEllB,EAAEqiE,EAAEsmD,KAAKl8G,EAAE41D,EAAE1M,OAAO1wC,EAAEo9C,EAAEzvC,KAAKuO,GAAGnhC,GAAG,UAAU8iC,EAAEm6B,EAAEj9D,EAAE,SAAS,UAAU8iC,EAAE65I,GAAG,QAAQnjH,EAAE,sBAAsBv0C,IAAIu0C,EAAE,8BAA8B/sD,IAAI+sD,EAAE,MAAMr2D,OAAOq2D,EAAE,MAAM,IAAIp0C,EAAE+2J,GAAGn2K,EAAEwzD,GAAGr4B,IAAI/b,EAAE,qCAAqCjiB,OAAOiiB,IAAI21J,GAAGzvG,EAAE,QAAQ,IAAInoE,OAAO6C,EAAE,MAAM21K,GAAGrwG,EAAErO,EAAE73C,EAAE,MAAK,IAAKH,GAAGxY,IAAIkvK,GAAGrwG,EAAE,OAAO,iBAAiB,CAAnX,CAAqXA,EAAExoC,EAAEu/B,QAAQ,IAAIyiE,EAAE85B,cAAc5+J,GAAG,OAAOk8K,GAAG5wG,EAAExoC,EAAEu/B,IAAG,EAAG,OAAM,CAAE,EAAE/wD,KAAK,SAASg6D,EAAEtlE,GAAGA,EAAEvH,OAAOs8K,GAAGzvG,EAAE,cAAc,MAAMnoE,OAAO6C,EAAEvH,MAAM,KAAKuH,EAAE,EAAEi2B,KAAK,SAASqvC,EAAEtlE,GAAGA,EAAEvH,OAAOs8K,GAAGzvG,EAAE,YAAY,MAAMnoE,OAAO6C,EAAEvH,MAAM,KAAKuH,EAAE,GAAGglL,GAAG,CAAC3D,YAAW,EAAGrF,QAAQ6I,GAAG/iE,WAAWijE,GAAG/B,SAAS,SAAS19G,GAAG,MAAM,QAAQA,CAAC,EAAEg8G,WAAWvB,GAAG9mB,YAAY2X,GAAG2Q,iBAAiBvB,GAAGpnB,cAAciZ,GAAG9Y,gBAAgB+Y,GAAG0N,WAAW,SAASl6G,GAAG,OAAOA,EAAEzgE,QAAO,SAAUygE,EAAEtlE,GAAG,OAAOslE,EAAEnoE,OAAO6C,EAAEw/K,YAAY,GAAI,GAAE,IAAIn5K,KAAK,IAAI,CAA5F,CAA8Fw+K,KAAKI,GAAG9pK,GAAE,SAAUmqD,GAAG,OAAO3qE,EAAE,iFAAiF2qE,EAAE,IAAIA,EAAE,IAAK,IAAG,SAAS4/G,GAAG5/G,EAAEtlE,GAAGslE,IAAIq/G,GAAGM,GAAGjlL,EAAEw/K,YAAY,IAAIoF,GAAG5kL,EAAE44J,eAAengB,EAAE0sC,GAAG7/G,GAAG8/G,GAAG9/G,GAAE,GAAI,CAAC,SAAS6/G,GAAG7/G,GAAG,GAAGA,EAAE+/G,OAAO,SAAS//G,GAAG,OAAG,IAAIA,EAAEpqE,OAAiB,IAAIoqE,EAAEpqE,SAAuBoqE,EAAEu5F,MAAMv5F,EAAE8+G,aAAa9+G,EAAE+9G,IAAI/9G,EAAE6zE,KAAK/nF,EAAEkU,EAAEvjE,OAAO6iL,GAAGt/G,EAAEvjE,MAAM,SAASujE,GAAG,KAAKA,EAAEl+D,QAAQ,CAAC,GAAG,cAAck+D,EAAEA,EAAEl+D,QAAQrF,IAAI,OAAM,EAAG,GAAGujE,EAAE6zE,IAAI,OAAM,CAAE,CAAC,OAAM,CAAE,CAAhG,CAAkG7zE,KAAKhtE,OAAO4L,KAAKohE,GAAGhwB,MAAMqvI,MAAK,CAA9P,CAAgQr/G,GAAG,IAAIA,EAAEpqE,KAAK,CAAC,IAAI0pL,GAAGt/G,EAAEvjE,MAAM,SAASujE,EAAEvjE,KAAK,MAAMujE,EAAEgwG,SAAS,mBAAmB,OAAO,IAAI,IAAIt1K,EAAE,EAAEkf,EAAEomD,EAAEh0B,SAASp3C,OAAO8F,EAAEkf,EAAElf,IAAI,CAAC,IAAI88B,EAAEwoC,EAAEh0B,SAAStxC,GAAGmlL,GAAGroJ,GAAGA,EAAEuoJ,SAAS//G,EAAE+/G,QAAO,EAAG,CAAC,GAAG//G,EAAEm/G,aAAa,IAAIzkL,EAAE,EAAEkf,EAAEomD,EAAEm/G,aAAavqL,OAAO8F,EAAEkf,EAAElf,IAAI,CAAC,IAAIq8D,EAAEiJ,EAAEm/G,aAAazkL,GAAG0hE,MAAMyjH,GAAG9oH,GAAGA,EAAEgpH,SAAS//G,EAAE+/G,QAAO,EAAG,CAAC,CAAC,CAAC,SAASD,GAAG9/G,EAAEtlE,GAAG,GAAG,IAAIslE,EAAEpqE,KAAK,CAAC,IAAIoqE,EAAE+/G,QAAQ//G,EAAEusC,QAAQvsC,EAAEggH,YAAYtlL,GAAGslE,EAAE+/G,QAAQ//G,EAAEh0B,SAASp3C,SAAS,IAAIorE,EAAEh0B,SAASp3C,QAAQ,IAAIorE,EAAEh0B,SAAS,GAAGp2C,MAAM,YAAYoqE,EAAEigH,YAAW,GAAI,GAAGjgH,EAAEigH,YAAW,EAAGjgH,EAAEh0B,SAAS,IAAI,IAAIpyB,EAAE,EAAE4d,EAAEwoC,EAAEh0B,SAASp3C,OAAOglB,EAAE4d,EAAE5d,IAAIkmK,GAAG9/G,EAAEh0B,SAASpyB,GAAGlf,KAAKslE,EAAE6zE,KAAK,GAAG7zE,EAAEm/G,aAAa,IAAIvlK,EAAE,EAAE4d,EAAEwoC,EAAEm/G,aAAavqL,OAAOglB,EAAE4d,EAAE5d,IAAIkmK,GAAG9/G,EAAEm/G,aAAavlK,GAAGwiD,MAAM1hE,EAAE,CAAC,CAAC,IAAIwlL,GAAG,0DAA0DC,GAAG,gBAAgBC,GAAG,+FAA+FC,GAAG,CAACC,IAAI,GAAGC,IAAI,EAAE9K,MAAM,GAAG+K,MAAM,GAAGC,GAAG,GAAG3hC,KAAK,GAAG9gG,MAAM,GAAG0iI,KAAK,GAAGzV,OAAO,CAAC,EAAE,KAAK0V,GAAG,CAACL,IAAI,CAAC,MAAM,UAAUC,IAAI,MAAM9K,MAAM,QAAQ+K,MAAM,CAAC,IAAI,YAAYC,GAAG,CAAC,KAAK,WAAW3hC,KAAK,CAAC,OAAO,aAAa9gG,MAAM,CAAC,QAAQ,cAAc0iI,KAAK,CAAC,OAAO,aAAazV,OAAO,CAAC,YAAY,SAAS,QAAQ2V,GAAG,SAAS5gH,GAAG,MAAM,MAAMnoE,OAAOmoE,EAAE,gBAAgB,EAAE6gH,GAAG,CAACh6H,KAAK,4BAA4Bi6H,QAAQ,2BAA2B59I,KAAK09I,GAAG,0CAA0CG,KAAKH,GAAG,mBAAmBr7G,MAAMq7G,GAAG,oBAAoB5jH,IAAI4jH,GAAG,kBAAkBziH,KAAKyiH,GAAG,mBAAmB9hC,KAAK8hC,GAAG,6CAA6CtQ,OAAOsQ,GAAG,6CAA6C5iI,MAAM4iI,GAAG,8CAA8C,SAASI,GAAGhhH,EAAEtlE,GAAG,IAAIkf,EAAElf,EAAE,YAAY,MAAM88B,EAAE,GAAGu/B,EAAE,GAAG,IAAI,IAAIriE,KAAKsrE,EAAE,CAAC,IAAI7+D,EAAE8/K,GAAGjhH,EAAEtrE,IAAIsrE,EAAEtrE,IAAIsrE,EAAEtrE,GAAGi7K,QAAQ54G,GAAG,GAAGl/D,OAAOnD,EAAE,KAAKmD,OAAOsJ,EAAE,KAAKq2B,GAAG,IAAI3/B,OAAOnD,EAAE,MAAMmD,OAAOsJ,EAAE,IAAI,CAAC,OAAOq2B,EAAE,IAAI3/B,OAAO2/B,EAAE12B,MAAM,GAAG,GAAG,KAAKi2D,EAAEn9C,EAAE,MAAM/hB,OAAO2/B,EAAE,MAAM3/B,OAAOk/D,EAAEj2D,MAAM,GAAG,GAAG,MAAM8Y,EAAE4d,CAAC,CAAC,SAASypJ,GAAGjhH,GAAG,IAAIA,EAAE,MAAM,eAAe,GAAGxrE,MAAMC,QAAQurE,GAAG,MAAM,IAAInoE,OAAOmoE,EAAEt/D,KAAI,SAAUs/D,GAAG,OAAOihH,GAAGjhH,EAAG,IAAGj/D,KAAK,KAAK,KAAK,IAAIrG,EAAE0lL,GAAGrrK,KAAKirD,EAAE7sE,OAAOymB,EAAEsmK,GAAGnrK,KAAKirD,EAAE7sE,OAAOqkC,EAAE4oJ,GAAGrrK,KAAKirD,EAAE7sE,MAAM8L,QAAQkhL,GAAG,KAAK,GAAGngH,EAAEo9C,UAAU,CAAC,IAAIrmD,EAAE,GAAGriE,EAAE,GAAGyM,EAAE,GAAGwY,EAAE,SAASjf,GAAG,GAAGmmL,GAAGnmL,GAAGhG,GAAGmsL,GAAGnmL,GAAG2lL,GAAG3lL,IAAIyG,EAAE1F,KAAKf,QAAQ,GAAG,UAAUA,EAAE,CAAC,IAAIkf,EAAEomD,EAAEo9C,UAAU1oH,GAAGksL,GAAG,CAAC,OAAO,QAAQ,MAAM,QAAQ1mL,QAAO,SAAU8lE,GAAG,OAAOpmD,EAAEomD,EAAG,IAAGt/D,KAAI,SAAUs/D,GAAG,MAAM,UAAUnoE,OAAOmoE,EAAE,MAAO,IAAGj/D,KAAK,MAAM,MAAMI,EAAE1F,KAAKf,EAAE,EAAE,IAAI,IAAIm7B,KAAKmqC,EAAEo9C,UAAUzjG,EAAEkc,GAAG10B,EAAEvM,SAASmiE,GAAG,SAASiJ,GAAG,MAAM,mCAAmC,GAAGnoE,OAAOmoE,EAAEt/D,IAAIwgL,IAAIngL,KAAK,MAAM,gBAAgB,CAApG,CAAsGI,IAAIzM,IAAIqiE,GAAGriE,GAAG,IAAIi9D,EAAEj3D,EAAE,UAAU7C,OAAOmoE,EAAE7sE,MAAM,2BAA2BymB,EAAE,WAAW/hB,OAAOmoE,EAAE7sE,MAAM,4BAA4BqkC,EAAE,UAAU3/B,OAAOmoE,EAAE7sE,OAAO6sE,EAAE7sE,MAAM,MAAM,oBAAoB0E,OAAOk/D,GAAGl/D,OAAO85D,EAAE,IAAI,CAAC,OAAOj3D,GAAGkf,EAAEomD,EAAE7sE,MAAM,oBAAoB0E,OAAO2/B,EAAE,UAAU3/B,OAAOmoE,EAAE7sE,OAAO6sE,EAAE7sE,MAAM,IAAI,CAAC,SAAS+tL,GAAGlhH,GAAG,IAAItlE,EAAE8pB,SAASw7C,EAAE,IAAI,GAAGtlE,EAAE,MAAM,oBAAoB7C,OAAO6C,GAAG,IAAIkf,EAAEymK,GAAGrgH,GAAGxoC,EAAEmpJ,GAAG3gH,GAAG,MAAM,qBAAqB,GAAGnoE,OAAOY,KAAKC,UAAUsnE,GAAG,KAAK,GAAGnoE,OAAOY,KAAKC,UAAUkhB,GAAG,KAAK,cAAc,GAAG/hB,OAAOY,KAAKC,UAAU8+B,IAAI,GAAG,CAAC,IAAI2pJ,GAAG,CAACx/J,GAAG,SAASq+C,EAAEtlE,GAAGslE,EAAEohH,cAAc,SAASphH,GAAG,MAAM,MAAMnoE,OAAOmoE,EAAE,KAAKnoE,OAAO6C,EAAEvH,MAAM,IAAI,CAAC,EAAEgP,KAAK,SAAS69D,EAAEtlE,GAAGslE,EAAEqhH,SAAS,SAASznK,GAAG,MAAM,MAAM/hB,OAAO+hB,EAAE,MAAM/hB,OAAOmoE,EAAEvjE,IAAI,MAAM5E,OAAO6C,EAAEvH,MAAM,KAAK0E,OAAO6C,EAAE0iH,WAAW1iH,EAAE0iH,UAAUrhH,KAAK,OAAO,SAASlE,OAAO6C,EAAE0iH,WAAW1iH,EAAE0iH,UAAUqoD,KAAK,QAAQ,GAAG,IAAI,CAAC,EAAE6b,MAAMnoD,GAAGooD,GAAG,SAASvhH,GAAG9pE,KAAK+H,QAAQ+hE,EAAE9pE,KAAK8/G,KAAKh2C,EAAEg2C,MAAMu5D,GAAGr5K,KAAKywG,WAAW6oE,GAAGxvG,EAAE02G,QAAQ,iBAAiBxgL,KAAKsrL,WAAWhS,GAAGxvG,EAAE02G,QAAQ,WAAWxgL,KAAKsmH,WAAWmyB,EAAEA,EAAE,CAAC,EAAEwyC,IAAInhH,EAAEw8C,YAAY,IAAI9hH,EAAEslE,EAAEszF,eAAengB,EAAEj9I,KAAKurL,eAAe,SAASzhH,GAAG,QAAQA,EAAEliE,YAAYpD,EAAEslE,EAAEvjE,IAAI,EAAEvG,KAAKwrL,OAAO,EAAExrL,KAAK+9I,gBAAgB,GAAG/9I,KAAKqjK,KAAI,CAAE,EAAE,SAASooB,GAAG3hH,EAAEtlE,GAAG,IAAIkf,EAAE,IAAI2nK,GAAG7mL,GAAG88B,EAAEwoC,EAAE,WAAWA,EAAEvjE,IAAI,OAAOmlL,GAAG5hH,EAAEpmD,GAAG,YAAY,MAAM,CAAC7jB,OAAO,qBAAqB8B,OAAO2/B,EAAE,KAAKy8G,gBAAgBr6H,EAAEq6H,gBAAgB,CAAC,SAAS2tC,GAAG5hH,EAAEtlE,GAAG,GAAGslE,EAAEl+D,SAASk+D,EAAEu5F,IAAIv5F,EAAEu5F,KAAKv5F,EAAEl+D,OAAOy3J,KAAKv5F,EAAEigH,aAAajgH,EAAE6hH,gBAAgB,OAAOC,GAAG9hH,EAAEtlE,GAAG,GAAGslE,EAAEusC,OAAOvsC,EAAE+hH,cAAc,OAAOC,GAAGhiH,EAAEtlE,GAAG,GAAGslE,EAAE6zE,MAAM7zE,EAAEiiH,aAAa,OAAOC,GAAGliH,EAAEtlE,GAAG,GAAGslE,EAAE+9G,KAAK/9G,EAAEmiH,YAAY,OAAOC,GAAGpiH,EAAEtlE,GAAG,GAAG,aAAaslE,EAAEvjE,KAAKujE,EAAEq+G,YAAY3jL,EAAE6+J,IAAI,CAAC,GAAG,SAASv5F,EAAEvjE,IAAI,OAAO,SAASujE,EAAEtlE,GAAG,IAAIkf,EAAEomD,EAAE6+G,UAAU,YAAYrnJ,EAAE6qJ,GAAGriH,EAAEtlE,GAAGq8D,EAAE,MAAMl/D,OAAO+hB,GAAG/hB,OAAO2/B,EAAE,sBAAsB3/B,OAAO2/B,EAAE,KAAK,IAAI9iC,EAAEsrE,EAAEvE,OAAOuE,EAAE8vG,aAAawS,IAAItiH,EAAEvE,OAAO,IAAI5jE,OAAOmoE,EAAE8vG,cAAc,IAAIpvK,KAAI,SAAUs/D,GAAG,MAAM,CAACvqE,KAAKukB,EAAEgmD,EAAEvqE,MAAMtC,MAAM6sE,EAAE7sE,MAAMw8K,QAAQ3vG,EAAE2vG,QAAS,KAAI,KAAKxuK,EAAE6+D,EAAEgwG,SAAS,UAAsG,OAA3Ft7K,IAAIyM,GAAGq2B,IAAIu/B,GAAG,SAASriE,IAAIqiE,GAAG,IAAIl/D,OAAOnD,IAAIyM,IAAI41D,GAAG,GAAGl/D,OAAOnD,EAAE,GAAG,QAAQ,KAAKmD,OAAOsJ,IAAW41D,EAAE,GAAG,CAA/Y,CAAiZiJ,EAAEtlE,GAAG,IAAIkf,OAAE,EAAO,GAAGomD,EAAEliE,UAAU8b,EAAE,SAASomD,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAE98B,EAAEqtK,eAAe,KAAKsa,GAAG3nL,EAAEkf,GAAE,GAAI,MAAM,MAAM/hB,OAAOmoE,EAAE,KAAKnoE,OAAO0qL,GAAG7nL,EAAEkf,IAAI/hB,OAAO2/B,EAAE,IAAI3/B,OAAO2/B,GAAG,GAAG,IAAI,CAA/H,CAAiIwoC,EAAEliE,UAAUkiE,EAAEtlE,OAAO,CAAC,IAAI88B,OAAE,EAAOu/B,EAAEr8D,EAAE+mL,eAAezhH,KAAKA,EAAE4vG,OAAO5vG,EAAEu5F,KAAKxiG,KAAKv/B,EAAE+qJ,GAAGviH,EAAEtlE,IAAI,IAAIhG,OAAE,EAAOyM,EAAEzG,EAAEuD,QAAQukL,SAASzrH,GAAG51D,IAAG,IAAKA,EAAEshL,kBAAkB/tL,EAAE,SAASsrE,EAAEtlE,GAAG,IAAIkf,EAAEI,EAAEtf,GAAG88B,EAAEo3G,EAAEh1H,GAAGm9C,EAAE,SAASA,GAAG,OAAOiJ,EAAEtlE,KAAKq8D,EAAEr8D,EAAEslE,EAAEpmD,KAAKm9C,EAAEn9C,EAAEomD,EAAExoC,KAAKu/B,EAAEv/B,OAAE,CAAM,EAAE9iC,EAAEqiE,EAAE,gBAAgBA,EAAE,wBAAwB,GAAGriE,EAAE,OAAOA,EAAE,IAAIyM,EAAE41D,EAAE,cAAcA,EAAE,cAAcA,EAAE,mBAAmB,OAAG51D,QAAH,CAAa,CAAlO,CAAoOA,EAAE6+D,EAAEvjE,MAAM/H,IAAIA,EAAE,IAAImD,OAAOmoE,EAAEvjE,IAAI,MAAM,IAAIkd,EAAEqmD,EAAE+nG,eAAe,KAAKsa,GAAGriH,EAAEtlE,GAAE,GAAIkf,EAAE,MAAM/hB,OAAOnD,GAAGmD,OAAO2/B,EAAE,IAAI3/B,OAAO2/B,GAAG,IAAI3/B,OAAO8hB,EAAE,IAAI9hB,OAAO8hB,GAAG,GAAG,IAAI,CAAC,IAAI,IAAIkc,EAAE,EAAEA,EAAEn7B,EAAEisG,WAAW/xG,OAAOihC,IAAIjc,EAAElf,EAAEisG,WAAW9wE,GAAGmqC,EAAEpmD,GAAG,OAAOA,CAAC,CAAC,OAAOyoK,GAAGriH,EAAEtlE,IAAI,QAAQ,CAAC,SAASonL,GAAG9hH,EAAEtlE,GAAGslE,EAAE6hH,iBAAgB,EAAG,IAAIjoK,EAAElf,EAAE6+J,IAAI,OAAOv5F,EAAEu5F,MAAM7+J,EAAE6+J,IAAIv5F,EAAEu5F,KAAK7+J,EAAEu5I,gBAAgBx4I,KAAK,qBAAqB5D,OAAO+pL,GAAG5hH,EAAEtlE,GAAG,MAAMA,EAAE6+J,IAAI3/I,EAAE,MAAM/hB,OAAO6C,EAAEu5I,gBAAgBr/I,OAAO,GAAGiD,OAAOmoE,EAAEggH,YAAY,QAAQ,GAAG,IAAI,CAAC,SAASgC,GAAGhiH,EAAEtlE,GAAG,GAAGslE,EAAE+hH,eAAc,EAAG/hH,EAAE+9G,KAAK/9G,EAAEmiH,YAAY,OAAOC,GAAGpiH,EAAEtlE,GAAG,GAAGslE,EAAEggH,YAAY,CAAC,IAAI,IAAIpmK,EAAE,GAAG4d,EAAEwoC,EAAEl+D,OAAO01B,GAAG,CAAC,GAAGA,EAAEq8G,IAAI,CAACj6H,EAAE4d,EAAExiC,IAAI,KAAK,CAACwiC,EAAEA,EAAE11B,MAAM,CAAC,OAAO8X,EAAE,MAAM/hB,OAAO+pL,GAAG5hH,EAAEtlE,GAAG,KAAK7C,OAAO6C,EAAEgnL,SAAS,KAAK7pL,OAAO+hB,EAAE,KAAKgoK,GAAG5hH,EAAEtlE,EAAE,CAAC,OAAOonL,GAAG9hH,EAAEtlE,EAAE,CAAC,SAAS0nL,GAAGpiH,EAAEtlE,EAAEkf,EAAE4d,GAAG,OAAOwoC,EAAEmiH,aAAY,EAAGO,GAAG1iH,EAAEm/G,aAAar+K,QAAQpG,EAAEkf,EAAE4d,EAAE,CAAC,SAASkrJ,GAAG1iH,EAAEtlE,EAAEkf,EAAE4d,GAAG,IAAIwoC,EAAEprE,OAAO,OAAO4iC,GAAG,OAAO,IAAIu/B,EAAEiJ,EAAEuF,QAAQ,OAAOxO,EAAE+5G,IAAI,IAAIj5K,OAAOk/D,EAAE+5G,IAAI,MAAMj5K,OAAOnD,EAAEqiE,EAAEqF,OAAO,KAAKvkE,OAAO6qL,GAAG1iH,EAAEtlE,EAAEkf,EAAE4d,IAAI,GAAG3/B,OAAOnD,EAAEqiE,EAAEqF,QAAQ,SAAS1nE,EAAEsrE,GAAG,OAAOpmD,EAAEA,EAAEomD,EAAEtlE,GAAGslE,EAAEusC,KAAKy1E,GAAGhiH,EAAEtlE,GAAGknL,GAAG5hH,EAAEtlE,EAAE,CAAC,CAAC,SAASwnL,GAAGliH,EAAEtlE,EAAEkf,EAAE4d,GAAG,IAAIu/B,EAAEiJ,EAAE6zE,IAAIn/I,EAAEsrE,EAAE+Q,MAAM5vE,EAAE6+D,EAAEi/G,UAAU,IAAIpnL,OAAOmoE,EAAEi/G,WAAW,GAAGtlK,EAAEqmD,EAAEk/G,UAAU,IAAIrnL,OAAOmoE,EAAEk/G,WAAW,GAAG,OAAOl/G,EAAEiiH,cAAa,EAAG,GAAGpqL,OAAO2/B,GAAG,KAAK,MAAM3/B,OAAOk/D,EAAE,MAAM,YAAYl/D,OAAOnD,GAAGmD,OAAOsJ,GAAGtJ,OAAO8hB,EAAE,MAAM,UAAU9hB,QAAQ+hB,GAAGgoK,IAAI5hH,EAAEtlE,IAAI,IAAI,CAAC,SAAS6nL,GAAGviH,EAAEtlE,GAAG,IAAIkf,EAAE,IAAI4d,EAAE,SAASwoC,EAAEtlE,GAAG,IAAIkf,EAAEomD,EAAEw8C,WAAW,GAAI5iG,EAAJ,CAAa,IAAI4d,EAAEu/B,EAAEriE,EAAEyM,EAAEwY,EAAE,eAAekc,GAAE,EAAG,IAAI2B,EAAE,EAAEu/B,EAAEn9C,EAAEhlB,OAAO4iC,EAAEu/B,EAAEv/B,IAAI,CAAC9iC,EAAEklB,EAAE4d,GAAGr2B,GAAE,EAAG,IAAIwwD,EAAEj3D,EAAE8hH,WAAW9nH,EAAEe,MAAMk8D,IAAIxwD,IAAIwwD,EAAEqO,EAAEtrE,EAAEgG,EAAEs7G,OAAO70G,IAAI00B,GAAE,EAAGlc,GAAG,UAAU9hB,OAAOnD,EAAEe,KAAK,eAAeoC,OAAOnD,EAAEugJ,QAAQ,KAAKp9I,OAAOnD,EAAEvB,MAAM,WAAW0E,OAAOnD,EAAEvB,MAAM,iBAAiB0E,OAAOY,KAAKC,UAAUhE,EAAEvB,QAAQ,IAAI0E,OAAOnD,EAAE0wF,IAAI,QAAQvtF,OAAOnD,EAAEy7K,aAAaz7K,EAAE0wF,IAAI,IAAIvtF,OAAOnD,EAAE0wF,IAAI,MAAM,IAAIvtF,OAAOnD,EAAE0oH,UAAU,cAAcvlH,OAAOY,KAAKC,UAAUhE,EAAE0oH,YAAY,GAAG,MAAM,CAAC,OAAGvnF,EAASlc,EAAE7Y,MAAM,GAAG,GAAG,SAA1B,CAA/b,CAA4d,CAAzgB,CAA2gBk/D,EAAEtlE,GAAG88B,IAAI5d,GAAG4d,EAAE,KAAKwoC,EAAEhrE,MAAM4kB,GAAG,OAAO/hB,OAAOmoE,EAAEhrE,IAAI,MAAMgrE,EAAE19D,MAAMsX,GAAG,OAAO/hB,OAAOmoE,EAAE19D,IAAI,MAAM09D,EAAEktG,WAAWtzJ,GAAG,kBAAkBomD,EAAEu5F,MAAM3/I,GAAG,aAAaomD,EAAEliE,YAAY8b,GAAG,QAAQ/hB,OAAOmoE,EAAEvjE,IAAI,OAAO,IAAI,IAAIs6D,EAAE,EAAEA,EAAEr8D,EAAE8mL,WAAW5sL,OAAOmiE,IAAIn9C,GAAGlf,EAAE8mL,WAAWzqH,GAAGiJ,GAAG,GAAGA,EAAEvE,QAAQ7hD,GAAG,SAAS/hB,OAAOyqL,GAAGtiH,EAAEvE,OAAO,MAAMuE,EAAEtqE,QAAQkkB,GAAG,YAAY/hB,OAAOyqL,GAAGtiH,EAAEtqE,OAAO,MAAMsqE,EAAEy7C,SAAS7hG,GAAG,GAAG/hB,OAAOmpL,GAAGhhH,EAAEy7C,QAAO,GAAI,MAAMz7C,EAAEwwG,eAAe52J,GAAG,GAAG/hB,OAAOmpL,GAAGhhH,EAAEwwG,cAAa,GAAI,MAAMxwG,EAAEq+G,aAAar+G,EAAEo+G,YAAYxkK,GAAG,QAAQ/hB,OAAOmoE,EAAEq+G,WAAW,MAAMr+G,EAAEs5F,cAAc1/I,GAAG,GAAG/hB,OAAO,SAASmoE,EAAEtlE,EAAEkf,GAAG,IAAI4d,EAAEwoC,EAAE6zE,KAAK7gJ,OAAO4L,KAAKlE,GAAG6nC,MAAK,SAAUy9B,GAAG,IAAIpmD,EAAElf,EAAEslE,GAAG,OAAOpmD,EAAE+kK,mBAAmB/kK,EAAEmkK,IAAInkK,EAAEi6H,KAAK8uC,GAAG/oK,EAAG,IAAGm9C,IAAIiJ,EAAE+9G,GAAG,IAAIvmJ,EAAE,IAAI,IAAI9iC,EAAEsrE,EAAEl+D,OAAOpN,GAAG,CAAC,GAAGA,EAAE0pL,WAAW1pL,EAAE0pL,YAAYryG,IAAIr3E,EAAEm/I,IAAI,CAACr8G,GAAE,EAAG,KAAK,CAAC9iC,EAAEqpL,KAAKhnH,GAAE,GAAIriE,EAAEA,EAAEoN,MAAM,CAAC,IAAIX,EAAEnO,OAAO4L,KAAKlE,GAAGgG,KAAI,SAAUs/D,GAAG,OAAO2M,GAAGjyE,EAAEslE,GAAGpmD,EAAG,IAAG7Y,KAAK,KAAK,MAAM,mBAAmBlJ,OAAOsJ,EAAE,KAAKtJ,OAAO2/B,EAAE,aAAa,IAAI3/B,QAAQ2/B,GAAGu/B,EAAE,eAAel/D,OAAO,SAASmoE,GAAyB,IAAtB,IAAItlE,EAAE,KAAKkf,EAAEomD,EAAEprE,OAAYglB,GAAGlf,EAAE,GAAGA,EAAEslE,EAAEjS,aAAan0C,GAAG,OAAOlf,IAAI,CAAC,CAA/E,CAAiFyG,IAAI,GAAG,IAAI,CAAlf,CAAof6+D,EAAEA,EAAEs5F,YAAY5+J,GAAG,MAAMslE,EAAEz9D,QAAQqX,GAAG,gBAAgB/hB,OAAOmoE,EAAEz9D,MAAMpP,MAAM,cAAc0E,OAAOmoE,EAAEz9D,MAAM+tB,SAAS,gBAAgBz4B,OAAOmoE,EAAEz9D,MAAMy7G,WAAW,OAAOh+C,EAAE+nG,eAAe,CAAC,IAAIrzK,EAAE,SAASsrE,EAAEtlE,GAAG,IAAIkf,EAAEomD,EAAEh0B,SAAS,GAAG,GAAGpyB,GAAG,IAAIA,EAAEhkB,KAAK,CAAC,IAAI4hC,EAAEmqJ,GAAG/nK,EAAElf,EAAEuD,SAAS,MAAM,qCAAqCpG,OAAO2/B,EAAEzhC,OAAO,uBAAuB8B,OAAO2/B,EAAEy8G,gBAAgBvzI,KAAI,SAAUs/D,GAAG,MAAM,cAAcnoE,OAAOmoE,EAAE,IAAK,IAAGj/D,KAAK,KAAK,KAAK,CAAC,CAA3P,CAA6Pi/D,EAAEtlE,GAAGhG,IAAIklB,GAAG,GAAG/hB,OAAOnD,EAAE,KAAK,CAAC,OAAOklB,EAAEA,EAAE3a,QAAQ,KAAK,IAAI,IAAI+gE,EAAE8vG,eAAel2J,EAAE,MAAM/hB,OAAO+hB,EAAE,MAAM/hB,OAAOmoE,EAAEvjE,IAAI,MAAM5E,OAAOyqL,GAAGtiH,EAAE8vG,cAAc,MAAM9vG,EAAEqhH,WAAWznK,EAAEomD,EAAEqhH,SAASznK,IAAIomD,EAAEohH,gBAAgBxnK,EAAEomD,EAAEohH,cAAcxnK,IAAIA,CAAC,CAAC,SAAS+oK,GAAG3iH,GAAG,OAAO,IAAIA,EAAEpqE,OAAO,SAASoqE,EAAEvjE,KAAKujE,EAAEh0B,SAASzJ,KAAKogJ,IAAI,CAAC,SAASh2G,GAAG3M,EAAEtlE,GAAG,IAAIkf,EAAEomD,EAAEgwG,SAAS,cAAc,GAAGhwG,EAAE+9G,KAAK/9G,EAAEmiH,cAAcvoK,EAAE,OAAOwoK,GAAGpiH,EAAEtlE,EAAEiyE,GAAG,QAAQ,GAAG3M,EAAE6zE,MAAM7zE,EAAEiiH,aAAa,OAAOC,GAAGliH,EAAEtlE,EAAEiyE,IAAI,IAAIn1C,EAAEwoC,EAAEo+G,YAAYryG,GAAG,GAAG/qE,OAAOg/D,EAAEo+G,WAAWrnH,EAAE,YAAYl/D,OAAO2/B,EAAE,MAAM,UAAU3/B,OAAO,aAAamoE,EAAEvjE,IAAIujE,EAAE+9G,IAAInkK,EAAE,IAAI/hB,OAAOmoE,EAAE+9G,GAAG,MAAMlmL,OAAOwqL,GAAGriH,EAAEtlE,IAAI,YAAY,cAAc2nL,GAAGriH,EAAEtlE,IAAI,YAAYknL,GAAG5hH,EAAEtlE,GAAG,KAAKhG,EAAE8iC,EAAE,GAAG,cAAc,MAAM,QAAQ3/B,OAAOmoE,EAAEq+G,YAAY,YAAY,QAAQxmL,OAAOk/D,GAAGl/D,OAAOnD,EAAE,IAAI,CAAC,SAAS2tL,GAAGriH,EAAEtlE,EAAEkf,EAAE4d,EAAEu/B,GAAG,IAAIriE,EAAEsrE,EAAEh0B,SAAS,GAAGt3C,EAAEE,OAAO,CAAC,IAAIuM,EAAEzM,EAAE,GAAG,GAAG,IAAIA,EAAEE,QAAQuM,EAAE0yI,KAAK,aAAa1yI,EAAE1E,KAAK,SAAS0E,EAAE1E,IAAI,CAAC,IAAIkd,EAAEC,EAAElf,EAAE+mL,eAAetgL,GAAG,KAAK,KAAK,GAAG,MAAM,GAAGtJ,QAAQ2/B,GAAGoqJ,IAAIzgL,EAAEzG,IAAI7C,OAAO8hB,EAAE,CAAC,IAAIkc,EAAEjc,EAAE,SAASomD,EAAEtlE,GAAG,IAAI,IAAIkf,EAAE,EAAE4d,EAAE,EAAEA,EAAEwoC,EAAEprE,OAAO4iC,IAAI,CAAC,IAAIu/B,EAAEiJ,EAAExoC,GAAG,GAAG,IAAIu/B,EAAEnhE,KAAK,CAAC,GAAGgtL,GAAG7rH,IAAIA,EAAEooH,cAAcpoH,EAAEooH,aAAa58I,MAAK,SAAUy9B,GAAG,OAAO4iH,GAAG5iH,EAAE5D,MAAO,IAAG,CAACxiD,EAAE,EAAE,KAAK,EAAElf,EAAEq8D,IAAIA,EAAEooH,cAAcpoH,EAAEooH,aAAa58I,MAAK,SAAUy9B,GAAG,OAAOtlE,EAAEslE,EAAE5D,MAAO,OAAMxiD,EAAE,EAAE,CAAC,CAAC,OAAOA,CAAC,CAAlQ,CAAoQllB,EAAEgG,EAAE+mL,gBAAgB,EAAE9vH,EAAEoF,GAAG8rH,GAAG,MAAM,IAAIhrL,OAAOnD,EAAEgM,KAAI,SAAUs/D,GAAG,OAAOrO,EAAEqO,EAAEtlE,EAAG,IAAGqG,KAAK,KAAK,KAAKlJ,OAAOg+B,EAAE,IAAIh+B,OAAOg+B,GAAG,GAAG,CAAC,CAAC,SAAS+sJ,GAAG5iH,GAAG,YAAO,IAASA,EAAE6zE,KAAK,aAAa7zE,EAAEvjE,KAAK,SAASujE,EAAEvjE,GAAG,CAAC,SAASomL,GAAG7iH,EAAEtlE,GAAG,OAAO,IAAIslE,EAAEpqE,KAAKgsL,GAAG5hH,EAAEtlE,GAAG,IAAIslE,EAAEpqE,MAAMoqE,EAAE40F,UAAU,SAAS50F,GAAG,MAAM,MAAMnoE,OAAOY,KAAKC,UAAUsnE,EAAEh6D,MAAM,IAAI,CAA1D,CAA4Dg6D,GAAG,SAASA,GAAG,MAAM,MAAMnoE,OAAO,IAAImoE,EAAEpqE,KAAKoqE,EAAEg+C,WAAW8kE,GAAGrqL,KAAKC,UAAUsnE,EAAEh6D,OAAO,IAAI,CAAtF,CAAwFg6D,EAAE,CAAC,SAASsiH,GAAGtiH,GAAG,IAAI,IAAItlE,EAAE,GAAGkf,EAAE,GAAG4d,EAAE,EAAEA,EAAEwoC,EAAEprE,OAAO4iC,IAAI,CAAC,IAAIu/B,EAAEiJ,EAAExoC,GAAG9iC,EAAEouL,GAAG/rH,EAAE5jE,OAAO4jE,EAAE44G,QAAQ/1J,GAAG,GAAG/hB,OAAOk/D,EAAEthE,KAAK,KAAKoC,OAAOnD,EAAE,KAAKgG,GAAG,IAAI7C,OAAOk/D,EAAEthE,KAAK,MAAMoC,OAAOnD,EAAE,IAAI,CAAC,OAAOgG,EAAE,IAAI7C,OAAO6C,EAAEoG,MAAM,GAAG,GAAG,KAAK8Y,EAAE,MAAM/hB,OAAO6C,EAAE,MAAM7C,OAAO+hB,EAAE9Y,MAAM,GAAG,GAAG,MAAMpG,CAAC,CAAC,SAASooL,GAAG9iH,GAAG,OAAOA,EAAE/gE,QAAQ,UAAU,WAAWA,QAAQ,UAAU,UAAU,CAAC,SAAS8jL,GAAG/iH,EAAEtlE,GAAG,IAAI,OAAO,IAAIxC,SAAS8nE,EAAE,CAAC,MAAMpmD,GAAG,OAAOlf,EAAEe,KAAK,CAACuB,IAAI4c,EAAEi1C,KAAKmR,IAAIm5D,CAAC,CAAC,CAAC,SAAS6pD,GAAGhjH,GAAG,IAAItlE,EAAE1H,OAAOo0F,OAAO,MAAM,OAAO,SAASxtE,EAAE4d,EAAEu/B,IAAIv/B,EAAEm3G,EAAE,CAAC,EAAEn3G,IAAIw+E,YAAYx+E,EAAEw+E,KAAK,IAAIthH,EAAE8iC,EAAE6xC,WAAWroE,OAAOw2B,EAAE6xC,YAAYzvD,EAAEA,EAAE,GAAGlf,EAAEhG,GAAG,OAAOgG,EAAEhG,GAAG,IAAIyM,EAAE6+D,EAAEpmD,EAAE4d,GAAG7d,EAAE,CAAC,EAAEkc,EAAE,GAAG,OAAOlc,EAAE5jB,OAAOgtL,GAAG5hL,EAAEpL,OAAO8/B,GAAGlc,EAAEs6H,gBAAgB9yI,EAAE8yI,gBAAgBvzI,KAAI,SAAUs/D,GAAG,OAAO+iH,GAAG/iH,EAAEnqC,EAAG,IAAGn7B,EAAEhG,GAAGilB,CAAC,CAAC,CAAC,IAAI6S,OAAO,MAAM,iMAAiM7tB,MAAM,KAAKoC,KAAK,WAAW,OAAO,IAAIyrB,OAAO,MAAM,qBAAqB7tB,MAAM,KAAKoC,KAAK,yBAAyB,qBAAqB,IAAIkiL,GAAG3uC,GAAG4uC,IAAID,GAAG,SAASjjH,EAAEtlE,GAAG,IAAIkf,EAAE6jK,GAAGz9G,EAAE14C,OAAO5sB,IAAG,IAAKA,EAAEyoL,UAAUvD,GAAGhmK,EAAElf,GAAG,IAAI88B,EAAEmqJ,GAAG/nK,EAAElf,GAAG,MAAM,CAAC0oL,IAAIxpK,EAAE7jB,OAAOyhC,EAAEzhC,OAAOk+I,gBAAgBz8G,EAAEy8G,gBAAgB,EAAE,SAASj0E,GAAG,SAAStlE,EAAEA,EAAEkf,GAAG,IAAI4d,EAAExkC,OAAOo0F,OAAOpnB,GAAGjJ,EAAE,GAAGriE,EAAE,GAAG,GAAGklB,EAAE,IAAI,IAAIzY,KAAKyY,EAAE88J,UAAUl/I,EAAEk/I,SAAS12G,EAAE02G,SAAS,IAAI7+K,OAAO+hB,EAAE88J,UAAU98J,EAAE4iG,aAAahlF,EAAEglF,WAAWmyB,EAAE37I,OAAOo0F,OAAOpnB,EAAEw8C,YAAY,MAAM5iG,EAAE4iG,aAAa5iG,EAAE,YAAYzY,GAAG,eAAeA,IAAIq2B,EAAEr2B,GAAGyY,EAAEzY,IAAIq2B,EAAEw+E,KAAK,SAASh2C,EAAEtlE,EAAEkf,IAAIA,EAAEllB,EAAEqiE,GAAGt7D,KAAKukE,EAAE,EAAE,IAAIrmD,EAAEspK,GAAGvoL,EAAE4sB,OAAOkQ,GAAG,OAAO7d,EAAE8E,OAAOs4C,EAAEp9C,EAAE0pK,KAAK3uL,EAAEilB,CAAC,CAAC,MAAM,CAAC00D,QAAQ3zE,EAAE4oL,mBAAmBN,GAAGtoL,GAAG,GAAG6oL,GAAGL,GAAGxD,IAAI4D,mBAAmB,SAASE,GAAGxjH,GAAG,OAAOs0E,GAAGA,IAAIh5I,SAAStF,cAAc,QAAQu2D,UAAUyT,EAAE,iBAAiB,gBAAgBs0E,GAAG/nF,UAAUt1D,QAAQ,SAAS,CAAC,CAAC,IAAIwsL,KAAKlvG,GAAGivG,IAAG,GAAIE,KAAKnvG,GAAGivG,IAAG,GAAIG,GAAG9tK,GAAE,SAAUmqD,GAAG,IAAItlE,EAAEiyK,GAAG3sG,GAAG,OAAOtlE,GAAGA,EAAE6xD,SAAU,IAAGq3H,GAAGna,GAAGp1K,UAAUwH,OAAO,OAAO4tK,GAAGp1K,UAAUwH,OAAO,SAASmkE,EAAEtlE,GAAG,IAAIslE,EAAEA,GAAG2sG,GAAG3sG,MAAM1kE,SAASkjJ,MAAMx+E,IAAI1kE,SAASi3I,gBAAgB,OAAOr8I,KAAK,IAAI0jB,EAAE1jB,KAAK4B,SAAS,IAAI8hB,EAAE7jB,OAAO,CAAC,IAAIyhC,EAAE5d,EAAEjf,SAAS,GAAG68B,EAAE,GAAG,iBAAiBA,EAAE,MAAMA,EAAE52B,OAAO,KAAK42B,EAAEmsJ,GAAGnsJ,QAAQ,CAAC,IAAIA,EAAEspD,SAAS,OAAO5qF,KAAKshC,EAAEA,EAAE+0B,SAAS,MAAMyT,IAAIxoC,EAAE,SAASwoC,GAAG,GAAGA,EAAE6jH,UAAU,OAAO7jH,EAAE6jH,UAAU,IAAInpL,EAAEY,SAAStF,cAAc,OAAO,OAAO0E,EAAEq0I,YAAY/uE,EAAEs5G,WAAU,IAAK5+K,EAAE6xD,SAAS,CAAnI,CAAqIyT,IAAI,GAAGxoC,EAAE,CAAC,IAAIu/B,EAAEwsH,GAAG/rJ,EAAE,CAAC+mJ,mBAAkB,EAAGjC,qBAAqBmH,GAAGpH,4BAA4BqH,GAAGr6G,WAAWzvD,EAAEyvD,WAAWi1G,SAAS1kK,EAAE0kK,UAAUpoL,MAAMxB,EAAEqiE,EAAEhhE,OAAOoL,EAAE41D,EAAEk9E,gBAAgBr6H,EAAE7jB,OAAOrB,EAAEklB,EAAEq6H,gBAAgB9yI,CAAC,CAAC,CAAC,OAAOyiL,GAAG1uL,KAAKgB,KAAK8pE,EAAEtlE,EAAE,EAAE+uK,GAAGp7F,QAAQk1G,GAAG50C,EAAE86B,GAAG5H,IAAI4H,GAAGzG,OAAO,SAAShjG,EAAEtlE,GAAG,IAAIkf,EAAE,IAAI4lJ,GAAGrL,GAAGn0F,EAAEm5D,EAAE,CAACssC,MAAK,IAAK/qK,IAAIkf,EAAEm0F,OAAO,WAAWrzG,GAAE,WAAY,OAAOkf,EAAEujJ,KAAM,GAAE,EAAE,EAAEsM,EAAG,CAA35xG/uK,mBCVnF,IAAIzG,EAAU,eACd,SAASwyD,IACP,aACAxB,EAAO/xD,QAAUuzD,EAAsB,WACrC,OAAO/rD,CACT,EAAGuqD,EAAO/xD,QAAQa,YAAa,EAAMkxD,EAAO/xD,QAAiB,QAAI+xD,EAAO/xD,QACxE,IAAI8sE,EACFtlE,EAAI,CAAC,EACL88B,EAAIxkC,OAAOqB,UACXulB,EAAI4d,EAAEviC,eACN8hE,EAAI/jE,OAAOC,gBAAkB,SAAU+sE,EAAGtlE,EAAG88B,GAC3CwoC,EAAEtlE,GAAK88B,EAAErkC,KACX,EACAuB,EAAI,mBAAqBR,OAASA,OAAS,CAAC,EAC5CiN,EAAIzM,EAAEP,UAAY,aAClB0hC,EAAInhC,EAAEovL,eAAiB,kBACvBnyH,EAAIj9D,EAAEgzF,aAAe,gBACvB,SAASq8F,EAAO/jH,EAAGtlE,EAAG88B,GACpB,OAAOxkC,OAAOC,eAAe+sE,EAAGtlE,EAAG,CACjCvH,MAAOqkC,EACP/jB,YAAY,EACZC,cAAc,EACdC,UAAU,IACRqsD,EAAEtlE,EACR,CACA,IACEqpL,EAAO,CAAC,EAAG,GACb,CAAE,MAAO/jH,GACP+jH,EAAS,SAAgB/jH,EAAGtlE,EAAG88B,GAC7B,OAAOwoC,EAAEtlE,GAAK88B,CAChB,CACF,CACA,SAAS02E,EAAKluC,EAAGtlE,EAAG88B,EAAG5d,GACrB,IAAIllB,EAAIgG,GAAKA,EAAErG,qBAAqB2vL,EAAYtpL,EAAIspL,EAClD7iL,EAAInO,OAAOo0F,OAAO1yF,EAAEL,WACpBwhC,EAAI,IAAIouJ,EAAQrqK,GAAK,IACvB,OAAOm9C,EAAE51D,EAAG,UAAW,CACrBhO,MAAO+wL,EAAiBlkH,EAAGxoC,EAAG3B,KAC5B10B,CACN,CACA,SAASgjL,EAASnkH,EAAGtlE,EAAG88B,GACtB,IACE,MAAO,CACL5hC,KAAM,SACNwvF,IAAKplB,EAAE9qE,KAAKwF,EAAG88B,GAEnB,CAAE,MAAOwoC,GACP,MAAO,CACLpqE,KAAM,QACNwvF,IAAKplB,EAET,CACF,CACAtlE,EAAEwzG,KAAOA,EACT,IAAI74G,EAAI,iBACN64D,EAAI,iBACJp0C,EAAI,YACJH,EAAI,YACJiiB,EAAI,CAAC,EACP,SAASooJ,IAAa,CACtB,SAASI,IAAqB,CAC9B,SAASC,IAA8B,CACvC,IAAIjpD,EAAI,CAAC,EACT2oD,EAAO3oD,EAAGj6H,GAAG,WACX,OAAOjL,IACT,IACA,IAAIygC,EAAI3jC,OAAOk0F,eACb78D,EAAIsM,GAAKA,EAAEA,EAAEhxB,EAAO,MACtB0kB,GAAKA,IAAMmN,GAAK5d,EAAE1kB,KAAKm1B,EAAGlpB,KAAOi6H,EAAI/wG,GACrC,IAAIq2D,EAAI2jG,EAA2BhwL,UAAY2vL,EAAU3vL,UAAYrB,OAAOo0F,OAAOg0C,GACnF,SAASkpD,EAAsBtkH,GAC7B,CAAC,OAAQ,QAAS,UAAUlmE,SAAQ,SAAUY,GAC5CqpL,EAAO/jH,EAAGtlE,GAAG,SAAUslE,GACrB,OAAO9pE,KAAKquL,QAAQ7pL,EAAGslE,EACzB,GACF,GACF,CACA,SAASwkH,EAAcxkH,EAAGtlE,GACxB,SAASqtG,EAAOvwE,EAAGu/B,EAAGriE,EAAGyM,GACvB,IAAI00B,EAAIsuJ,EAASnkH,EAAExoC,GAAIwoC,EAAGjJ,GAC1B,GAAI,UAAYlhC,EAAEjgC,KAAM,CACtB,IAAI+7D,EAAI97B,EAAEuvD,IACR/vF,EAAIs8D,EAAEx+D,MACR,OAAOkC,GAAK,UAAYpB,EAAQoB,IAAMukB,EAAE1kB,KAAKG,EAAG,WAAaqF,EAAEsrB,QAAQ3wB,EAAEovL,SAASzoK,MAAK,SAAUgkD,GAC/F+nC,EAAO,OAAQ/nC,EAAGtrE,EAAGyM,EACvB,IAAG,SAAU6+D,GACX+nC,EAAO,QAAS/nC,EAAGtrE,EAAGyM,EACxB,IAAKzG,EAAEsrB,QAAQ3wB,GAAG2mB,MAAK,SAAUgkD,GAC/BrO,EAAEx+D,MAAQ6sE,EAAGtrE,EAAEi9D,EACjB,IAAG,SAAUqO,GACX,OAAO+nC,EAAO,QAAS/nC,EAAGtrE,EAAGyM,EAC/B,GACF,CACAA,EAAE00B,EAAEuvD,IACN,CACA,IAAI5tD,EACJu/B,EAAE7gE,KAAM,UAAW,CACjB/C,MAAO,SAAe6sE,EAAGpmD,GACvB,SAAS8qK,IACP,OAAO,IAAIhqL,GAAE,SAAUA,EAAG88B,GACxBuwE,EAAO/nC,EAAGpmD,EAAGlf,EAAG88B,EAClB,GACF,CACA,OAAOA,EAAIA,EAAIA,EAAExb,KAAK0oK,EAA4BA,GAA8BA,GAClF,GAEJ,CACA,SAASR,EAAiBxpL,EAAG88B,EAAG5d,GAC9B,IAAIm9C,EAAI1hE,EACR,OAAO,SAAUX,EAAGyM,GAClB,GAAI41D,IAAMj9C,EAAG,MAAMujD,MAAM,gCACzB,GAAItG,IAAMp9C,EAAG,CACX,GAAI,UAAYjlB,EAAG,MAAMyM,EACzB,MAAO,CACLhO,MAAO6sE,EACPzjE,MAAM,EAEV,CACA,IAAKqd,EAAE4vF,OAAS90G,EAAGklB,EAAEwrE,IAAMjkF,IAAK,CAC9B,IAAI00B,EAAIjc,EAAE+qK,SACV,GAAI9uJ,EAAG,CACL,IAAI87B,EAAIizH,EAAoB/uJ,EAAGjc,GAC/B,GAAI+3C,EAAG,CACL,GAAIA,IAAM/1B,EAAG,SACb,OAAO+1B,CACT,CACF,CACA,GAAI,SAAW/3C,EAAE4vF,OAAQ5vF,EAAEkuC,KAAOluC,EAAEirK,MAAQjrK,EAAEwrE,SAAS,GAAI,UAAYxrE,EAAE4vF,OAAQ,CAC/E,GAAIzyC,IAAM1hE,EAAG,MAAM0hE,EAAIp9C,EAAGC,EAAEwrE,IAC5BxrE,EAAEkrK,kBAAkBlrK,EAAEwrE,IACxB,KAAO,WAAaxrE,EAAE4vF,QAAU5vF,EAAE+tC,OAAO,SAAU/tC,EAAEwrE,KACrDruB,EAAIj9C,EACJ,IAAIshH,EAAI+oD,EAASzpL,EAAG88B,EAAG5d,GACvB,GAAI,WAAawhH,EAAExlI,KAAM,CACvB,GAAImhE,EAAIn9C,EAAErd,KAAOod,EAAIu0C,EAAGktE,EAAEh2C,MAAQxpD,EAAG,SACrC,MAAO,CACLzoC,MAAOioI,EAAEh2C,IACT7oF,KAAMqd,EAAErd,KAEZ,CACA,UAAY6+H,EAAExlI,OAASmhE,EAAIp9C,EAAGC,EAAE4vF,OAAS,QAAS5vF,EAAEwrE,IAAMg2C,EAAEh2C,IAC9D,CACF,CACF,CACA,SAASw/F,EAAoBlqL,EAAG88B,GAC9B,IAAI5d,EAAI4d,EAAEgyE,OACRzyC,EAAIr8D,EAAEvG,SAASylB,GACjB,GAAIm9C,IAAMiJ,EAAG,OAAOxoC,EAAEmtJ,SAAW,KAAM,UAAY/qK,GAAKlf,EAAEvG,SAAiB,SAAMqjC,EAAEgyE,OAAS,SAAUhyE,EAAE4tD,IAAMplB,EAAG4kH,EAAoBlqL,EAAG88B,GAAI,UAAYA,EAAEgyE,SAAW,WAAa5vF,IAAM4d,EAAEgyE,OAAS,QAAShyE,EAAE4tD,IAAM,IAAInxE,UAAU,oCAAsC2F,EAAI,aAAcgiB,EAC1R,IAAIlnC,EAAIyvL,EAASptH,EAAGr8D,EAAEvG,SAAUqjC,EAAE4tD,KAClC,GAAI,UAAY1wF,EAAEkB,KAAM,OAAO4hC,EAAEgyE,OAAS,QAAShyE,EAAE4tD,IAAM1wF,EAAE0wF,IAAK5tD,EAAEmtJ,SAAW,KAAM/oJ,EACrF,IAAIz6B,EAAIzM,EAAE0wF,IACV,OAAOjkF,EAAIA,EAAE5E,MAAQi7B,EAAE98B,EAAEqqL,YAAc5jL,EAAEhO,MAAOqkC,EAAEl7B,KAAO5B,EAAEsqL,QAAS,WAAaxtJ,EAAEgyE,SAAWhyE,EAAEgyE,OAAS,OAAQhyE,EAAE4tD,IAAMplB,GAAIxoC,EAAEmtJ,SAAW,KAAM/oJ,GAAKz6B,GAAKq2B,EAAEgyE,OAAS,QAAShyE,EAAE4tD,IAAM,IAAInxE,UAAU,oCAAqCujB,EAAEmtJ,SAAW,KAAM/oJ,EAC9P,CACA,SAASqpJ,EAAajlH,GACpB,IAAItlE,EAAI,CACNwqL,OAAQllH,EAAE,IAEZ,KAAKA,IAAMtlE,EAAEyqL,SAAWnlH,EAAE,IAAK,KAAKA,IAAMtlE,EAAE0qL,WAAaplH,EAAE,GAAItlE,EAAE2qL,SAAWrlH,EAAE,IAAK9pE,KAAKovL,WAAW7pL,KAAKf,EAC1G,CACA,SAAS6qL,EAAcvlH,GACrB,IAAItlE,EAAIslE,EAAEwlH,YAAc,CAAC,EACzB9qL,EAAE9E,KAAO,gBAAiB8E,EAAE0qF,IAAKplB,EAAEwlH,WAAa9qL,CAClD,CACA,SAASupL,EAAQjkH,GACf9pE,KAAKovL,WAAa,CAAC,CACjBJ,OAAQ,SACNllH,EAAElmE,QAAQmrL,EAAc/uL,MAAOA,KAAK4mB,OAAM,EAChD,CACA,SAASnX,EAAOjL,GACd,GAAIA,GAAK,KAAOA,EAAG,CACjB,IAAI88B,EAAI98B,EAAEyG,GACV,GAAIq2B,EAAG,OAAOA,EAAEtiC,KAAKwF,GACrB,GAAI,mBAAqBA,EAAE4B,KAAM,OAAO5B,EACxC,IAAKm1G,MAAMn1G,EAAE9F,QAAS,CACpB,IAAImiE,GAAK,EACPriE,EAAI,SAAS4H,IACX,OAASy6D,EAAIr8D,EAAE9F,QAAS,GAAIglB,EAAE1kB,KAAKwF,EAAGq8D,GAAI,OAAOz6D,EAAKnJ,MAAQuH,EAAEq8D,GAAIz6D,EAAKC,MAAO,EAAID,EACpF,OAAOA,EAAKnJ,MAAQ6sE,EAAG1jE,EAAKC,MAAO,EAAID,CACzC,EACF,OAAO5H,EAAE4H,KAAO5H,CAClB,CACF,CACA,MAAM,IAAIuf,UAAUhgB,EAAQyG,GAAK,mBACnC,CACA,OAAO0pL,EAAkB/vL,UAAYgwL,EAA4BttH,EAAE2pB,EAAG,cAAe,CACnFvtF,MAAOkxL,EACP3wK,cAAc,IACZqjD,EAAEstH,EAA4B,cAAe,CAC/ClxL,MAAOixL,EACP1wK,cAAc,IACZ0wK,EAAkB7+I,YAAcw+I,EAAOM,EAA4B1yH,EAAG,qBAAsBj3D,EAAE+qL,oBAAsB,SAAUzlH,GAChI,IAAItlE,EAAI,mBAAqBslE,GAAKA,EAAE5rE,YACpC,QAASsG,IAAMA,IAAM0pL,GAAqB,uBAAyB1pL,EAAE6qC,aAAe7qC,EAAEjF,MACxF,EAAGiF,EAAEugJ,KAAO,SAAUj7E,GACpB,OAAOhtE,OAAO0yL,eAAiB1yL,OAAO0yL,eAAe1lH,EAAGqkH,IAA+BrkH,EAAE+2F,UAAYstB,EAA4BN,EAAO/jH,EAAGrO,EAAG,sBAAuBqO,EAAE3rE,UAAYrB,OAAOo0F,OAAO1G,GAAI1gB,CACvM,EAAGtlE,EAAEirL,MAAQ,SAAU3lH,GACrB,MAAO,CACLykH,QAASzkH,EAEb,EAAGskH,EAAsBE,EAAcnwL,WAAY0vL,EAAOS,EAAcnwL,UAAWwhC,GAAG,WACpF,OAAO3/B,IACT,IAAIwE,EAAE8pL,cAAgBA,EAAe9pL,EAAEk5J,MAAQ,SAAU5zF,EAAGxoC,EAAG5d,EAAGm9C,EAAGriE,QACnE,IAAWA,IAAMA,EAAIqxB,SACrB,IAAI5kB,EAAI,IAAIqjL,EAAct2E,EAAKluC,EAAGxoC,EAAG5d,EAAGm9C,GAAIriE,GAC5C,OAAOgG,EAAE+qL,oBAAoBjuJ,GAAKr2B,EAAIA,EAAE7E,OAAO0f,MAAK,SAAUgkD,GAC5D,OAAOA,EAAEzjE,KAAOyjE,EAAE7sE,MAAQgO,EAAE7E,MAC9B,GACF,EAAGgoL,EAAsB5jG,GAAIqjG,EAAOrjG,EAAG/uB,EAAG,aAAcoyH,EAAOrjG,EAAGv/E,GAAG,WACnE,OAAOjL,IACT,IAAI6tL,EAAOrjG,EAAG,YAAY,WACxB,MAAO,oBACT,IAAIhmF,EAAEkE,KAAO,SAAUohE,GACrB,IAAItlE,EAAI1H,OAAOgtE,GACbxoC,EAAI,GACN,IAAK,IAAI5d,KAAKlf,EAAG88B,EAAE/7B,KAAKme,GACxB,OAAO4d,EAAE86C,UAAW,SAASh2E,IAC3B,KAAOk7B,EAAE5iC,QAAS,CAChB,IAAIorE,EAAIxoC,EAAEn4B,MACV,GAAI2gE,KAAKtlE,EAAG,OAAO4B,EAAKnJ,MAAQ6sE,EAAG1jE,EAAKC,MAAO,EAAID,CACrD,CACA,OAAOA,EAAKC,MAAO,EAAID,CACzB,CACF,EAAG5B,EAAEiL,OAASA,EAAQs+K,EAAQ5vL,UAAY,CACxCD,YAAa6vL,EACbnnK,MAAO,SAAepiB,GACpB,GAAIxE,KAAK0wD,KAAO,EAAG1wD,KAAKoG,KAAO,EAAGpG,KAAK4xD,KAAO5xD,KAAK2uL,MAAQ7kH,EAAG9pE,KAAKqG,MAAO,EAAIrG,KAAKyuL,SAAW,KAAMzuL,KAAKszG,OAAS,OAAQtzG,KAAKkvF,IAAMplB,EAAG9pE,KAAKovL,WAAWxrL,QAAQyrL,IAAiB7qL,EAAG,IAAK,IAAI88B,KAAKthC,KAAM,MAAQshC,EAAE52B,OAAO,IAAMgZ,EAAE1kB,KAAKgB,KAAMshC,KAAOq4E,OAAOr4E,EAAE12B,MAAM,MAAQ5K,KAAKshC,GAAKwoC,EACtR,EACAnZ,KAAM,WACJ3wD,KAAKqG,MAAO,EACZ,IAAIyjE,EAAI9pE,KAAKovL,WAAW,GAAGE,WAC3B,GAAI,UAAYxlH,EAAEpqE,KAAM,MAAMoqE,EAAEolB,IAChC,OAAOlvF,KAAK0vL,IACd,EACAd,kBAAmB,SAA2BpqL,GAC5C,GAAIxE,KAAKqG,KAAM,MAAM7B,EACrB,IAAI88B,EAAIthC,KACR,SAAS2vL,EAAOjsK,EAAGm9C,GACjB,OAAO51D,EAAEvL,KAAO,QAASuL,EAAEikF,IAAM1qF,EAAG88B,EAAEl7B,KAAOsd,EAAGm9C,IAAMv/B,EAAEgyE,OAAS,OAAQhyE,EAAE4tD,IAAMplB,KAAMjJ,CACzF,CACA,IAAK,IAAIA,EAAI7gE,KAAKovL,WAAW1wL,OAAS,EAAGmiE,GAAK,IAAKA,EAAG,CACpD,IAAIriE,EAAIwB,KAAKovL,WAAWvuH,GACtB51D,EAAIzM,EAAE8wL,WACR,GAAI,SAAW9wL,EAAEwwL,OAAQ,OAAOW,EAAO,OACvC,GAAInxL,EAAEwwL,QAAUhvL,KAAK0wD,KAAM,CACzB,IAAI/wB,EAAIjc,EAAE1kB,KAAKR,EAAG,YAChBi9D,EAAI/3C,EAAE1kB,KAAKR,EAAG,cAChB,GAAImhC,GAAK87B,EAAG,CACV,GAAIz7D,KAAK0wD,KAAOlyD,EAAEywL,SAAU,OAAOU,EAAOnxL,EAAEywL,UAAU,GACtD,GAAIjvL,KAAK0wD,KAAOlyD,EAAE0wL,WAAY,OAAOS,EAAOnxL,EAAE0wL,WAChD,MAAO,GAAIvvJ,GACT,GAAI3/B,KAAK0wD,KAAOlyD,EAAEywL,SAAU,OAAOU,EAAOnxL,EAAEywL,UAAU,OACjD,CACL,IAAKxzH,EAAG,MAAM0L,MAAM,0CACpB,GAAInnE,KAAK0wD,KAAOlyD,EAAE0wL,WAAY,OAAOS,EAAOnxL,EAAE0wL,WAChD,CACF,CACF,CACF,EACAz9H,OAAQ,SAAgBqY,EAAGtlE,GACzB,IAAK,IAAI88B,EAAIthC,KAAKovL,WAAW1wL,OAAS,EAAG4iC,GAAK,IAAKA,EAAG,CACpD,IAAIu/B,EAAI7gE,KAAKovL,WAAW9tJ,GACxB,GAAIu/B,EAAEmuH,QAAUhvL,KAAK0wD,MAAQhtC,EAAE1kB,KAAK6hE,EAAG,eAAiB7gE,KAAK0wD,KAAOmQ,EAAEquH,WAAY,CAChF,IAAI1wL,EAAIqiE,EACR,KACF,CACF,CACAriE,IAAM,UAAYsrE,GAAK,aAAeA,IAAMtrE,EAAEwwL,QAAUxqL,GAAKA,GAAKhG,EAAE0wL,aAAe1wL,EAAI,MACvF,IAAIyM,EAAIzM,EAAIA,EAAE8wL,WAAa,CAAC,EAC5B,OAAOrkL,EAAEvL,KAAOoqE,EAAG7+D,EAAEikF,IAAM1qF,EAAGhG,GAAKwB,KAAKszG,OAAS,OAAQtzG,KAAKoG,KAAO5H,EAAE0wL,WAAYxpJ,GAAK1lC,KAAKquC,SAASpjC,EACxG,EACAojC,SAAU,SAAkBy7B,EAAGtlE,GAC7B,GAAI,UAAYslE,EAAEpqE,KAAM,MAAMoqE,EAAEolB,IAChC,MAAO,UAAYplB,EAAEpqE,MAAQ,aAAeoqE,EAAEpqE,KAAOM,KAAKoG,KAAO0jE,EAAEolB,IAAM,WAAaplB,EAAEpqE,MAAQM,KAAK0vL,KAAO1vL,KAAKkvF,IAAMplB,EAAEolB,IAAKlvF,KAAKszG,OAAS,SAAUtzG,KAAKoG,KAAO,OAAS,WAAa0jE,EAAEpqE,MAAQ8E,IAAMxE,KAAKoG,KAAO5B,GAAIkhC,CAC1N,EACA2V,OAAQ,SAAgByuB,GACtB,IAAK,IAAItlE,EAAIxE,KAAKovL,WAAW1wL,OAAS,EAAG8F,GAAK,IAAKA,EAAG,CACpD,IAAI88B,EAAIthC,KAAKovL,WAAW5qL,GACxB,GAAI88B,EAAE4tJ,aAAeplH,EAAG,OAAO9pE,KAAKquC,SAAS/M,EAAEguJ,WAAYhuJ,EAAE6tJ,UAAWE,EAAc/tJ,GAAIoE,CAC5F,CACF,EACA,MAAS,SAAgBokC,GACvB,IAAK,IAAItlE,EAAIxE,KAAKovL,WAAW1wL,OAAS,EAAG8F,GAAK,IAAKA,EAAG,CACpD,IAAI88B,EAAIthC,KAAKovL,WAAW5qL,GACxB,GAAI88B,EAAE0tJ,SAAWllH,EAAG,CAClB,IAAIpmD,EAAI4d,EAAEguJ,WACV,GAAI,UAAY5rK,EAAEhkB,KAAM,CACtB,IAAImhE,EAAIn9C,EAAEwrE,IACVmgG,EAAc/tJ,EAChB,CACA,OAAOu/B,CACT,CACF,CACA,MAAMsG,MAAM,wBACd,EACAyoH,cAAe,SAAuBprL,EAAG88B,EAAG5d,GAC1C,OAAO1jB,KAAKyuL,SAAW,CACrBxwL,SAAUwR,EAAOjL,GACjBqqL,WAAYvtJ,EACZwtJ,QAASprK,GACR,SAAW1jB,KAAKszG,SAAWtzG,KAAKkvF,IAAMplB,GAAIpkC,CAC/C,GACClhC,CACL,CACAuqD,EAAO/xD,QAAUuzD,EAAqBxB,EAAO/xD,QAAQa,YAAa,EAAMkxD,EAAO/xD,QAAiB,QAAI+xD,EAAO/xD,iBC/S3G,SAASe,EAAQ8iE,GAGf,OAAO9R,EAAO/xD,QAAUe,EAAU,mBAAqBC,QAAU,iBAAmBA,OAAOC,SAAW,SAAU4iE,GAC9G,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAK,mBAAqB7iE,QAAU6iE,EAAE3iE,cAAgBF,QAAU6iE,IAAM7iE,OAAOG,UAAY,gBAAkB0iE,CACpH,EAAG9R,EAAO/xD,QAAQa,YAAa,EAAMkxD,EAAO/xD,QAAiB,QAAI+xD,EAAO/xD,QAASe,EAAQ8iE,EAC3F,CACA9R,EAAO/xD,QAAUe,EAASgxD,EAAO/xD,QAAQa,YAAa,EAAMkxD,EAAO/xD,QAAiB,QAAI+xD,EAAO/xD,wBCP/F,IAAI6yL,EAAU,EAAQ,KAAR,GACd9gI,EAAO/xD,QAAU6yL,EAGjB,IACEC,mBAAqBD,CACvB,CAAE,MAAOE,GACmB,iBAAfC,WACTA,WAAWF,mBAAqBD,EAEhC7tL,SAAS,IAAK,yBAAdA,CAAwC6tL,EAE5C,+BCdA,SAASI,EAAmBvsK,EAAGomD,EAAGtlE,EAAG88B,EAAGu/B,EAAG51D,EAAG00B,GAC5C,IACE,IAAInhC,EAAIklB,EAAEzY,GAAG00B,GACX87B,EAAIj9D,EAAEvB,KACV,CAAE,MAAOymB,GACP,YAAYlf,EAAEkf,EAChB,CACAllB,EAAE6H,KAAOyjE,EAAErO,GAAK5rC,QAAQC,QAAQ2rC,GAAG31C,KAAKwb,EAAGu/B,EAC7C,CACA,SAASvQ,EAAkB5sC,GACzB,OAAO,WACL,IAAIomD,EAAI9pE,KACNwE,EAAII,UACN,OAAO,IAAIirB,SAAQ,SAAUyR,EAAGu/B,GAC9B,IAAI51D,EAAIyY,EAAE/e,MAAMmlE,EAAGtlE,GACnB,SAAS0rL,EAAMxsK,GACbusK,EAAmBhlL,EAAGq2B,EAAGu/B,EAAGqvH,EAAOC,EAAQ,OAAQzsK,EACrD,CACA,SAASysK,EAAOzsK,GACdusK,EAAmBhlL,EAAGq2B,EAAGu/B,EAAGqvH,EAAOC,EAAQ,QAASzsK,EACtD,CACAwsK,OAAM,EACR,GACF,CACF,+CCxBA,SAASnyL,EAAQ8iE,GAGf,OAAO9iE,EAAU,mBAAqBC,QAAU,iBAAmBA,OAAOC,SAAW,SAAU4iE,GAC7F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAK,mBAAqB7iE,QAAU6iE,EAAE3iE,cAAgBF,QAAU6iE,IAAM7iE,OAAOG,UAAY,gBAAkB0iE,CACpH,EAAG9iE,EAAQ8iE,EACb,CCNA,SAASuvH,EAActmH,GACrB,IAAItrE,ECFN,SAAqBsrE,EAAGxoC,GACtB,GAAI,UAAYvjC,EAAQ+rE,KAAOA,EAAG,OAAOA,EACzC,IAAItlE,EAAIslE,EAAE9rE,OAAOqyL,aACjB,QAAI,IAAW7rL,EAAG,CAChB,IAAIhG,EAAIgG,EAAExF,KAAK8qE,EAAGxoC,GAAK,WACvB,GAAI,UAAYvjC,EAAQS,GAAI,OAAOA,EACnC,MAAM,IAAIuf,UAAU,+CACtB,CACA,OAAQ,WAAaujB,EAAIx2B,OAASoC,QAAQ48D,EAC5C,CDPUumH,CAAYvmH,EAAG,UACvB,MAAO,UAAY/rE,EAAQS,GAAKA,EAAIA,EAAI,EAC1C,CEJA,SAASypD,EAAgBzjD,EAAG88B,EAAGwoC,GAC7B,OAAQxoC,EAAI8uJ,EAAc9uJ,MAAO98B,EAAI1H,OAAOC,eAAeyH,EAAG88B,EAAG,CAC/DrkC,MAAO6sE,EACPvsD,YAAY,EACZC,cAAc,EACdC,UAAU,IACPjZ,EAAE88B,GAAKwoC,EAAGtlE,CACjB,+CCRA,SAAS2hJ,EAAkB7kH,EAAGr2B,IAC3B,MAAQA,GAAKA,EAAIq2B,EAAE5iC,UAAYuM,EAAIq2B,EAAE5iC,QACtC,IAAK,IAAI8F,EAAI,EAAGkf,EAAIplB,MAAM2M,GAAIzG,EAAIyG,EAAGzG,IAAKkf,EAAElf,GAAK88B,EAAE98B,GACnD,OAAOkf,CACT,CCAA,SAAStlB,EAAmBkjC,GAC1B,OCJF,SAA4BA,GAC1B,GAAIhjC,MAAMC,QAAQ+iC,GAAI,OAAO,EAAiBA,EAChD,CDES,CAAkBA,IEL3B,SAA0BA,GACxB,GAAI,oBAAsBtjC,QAAU,MAAQsjC,EAAEtjC,OAAOC,WAAa,MAAQqjC,EAAE,cAAe,OAAOhjC,MAAMK,KAAK2iC,EAC/G,CFGiC,CAAgBA,IGJjD,SAAqCA,EAAGr2B,GACtC,GAAIq2B,EAAG,CACL,GAAI,iBAAmBA,EAAG,OAAO,EAAiBA,EAAGr2B,GACrD,IAAI6+D,EAAI,CAAC,EAAEj7B,SAAS7vC,KAAKsiC,GAAG12B,MAAM,GAAI,GACtC,MAAO,WAAak/D,GAAKxoC,EAAEpjC,cAAgB4rE,EAAIxoC,EAAEpjC,YAAYqB,MAAO,QAAUuqE,GAAK,QAAUA,EAAIxrE,MAAMK,KAAK2iC,GAAK,cAAgBwoC,GAAK,2CAA2CjrD,KAAKirD,GAAK,EAAiBxoC,EAAGr2B,QAAK,CACtN,CACF,CHFuD,CAA2Bq2B,IILlF,WACE,MAAM,IAAIvjB,UAAU,uIACtB,CJGwF,EACxF,0EKJe,SAAS9R,EAAKwnD,EAAIq4B,GAC/B,OAAO,WACL,OAAOr4B,EAAG9uD,MAAMmnF,EAASlnF,UAC3B,CACF,wICAA,MAAOiqC,SAAQ,GAAI/xC,OAAOqB,WACpB,eAAC6yF,GAAkBl0F,OAEnBwzL,GAAU54H,EAGb56D,OAAOo0F,OAAO,MAHQq/F,IACrB,MAAMhmL,EAAM,EAASvL,KAAKuxL,GAC1B,OAAO74H,EAAMntD,KAASmtD,EAAMntD,GAAOA,EAAIK,MAAM,GAAI,GAAG7I,cAAc,GAFvD,IAAC21D,EAKhB,MAAM84H,EAAc9wL,IAClBA,EAAOA,EAAKqC,cACJwuL,GAAUD,EAAOC,KAAW7wL,GAGhC+wL,EAAa/wL,GAAQ6wL,UAAgBA,IAAU7wL,GAS/C,QAACnB,GAAWD,MASZ07G,EAAcy2E,EAAW,aAqB/B,MAAMtlG,EAAgBqlG,EAAW,eA2BjC,MAAMlvH,EAAWmvH,EAAW,UAQtB35G,EAAa25G,EAAW,YASxBp0H,EAAWo0H,EAAW,UAStBr8F,EAAYm8F,GAAoB,OAAVA,GAAmC,iBAAVA,EAiB/CnwF,EAAiB/7F,IACrB,GAAoB,WAAhBisL,EAAOjsL,GACT,OAAO,EAGT,MAAMlG,EAAY6yF,EAAe3sF,GACjC,QAAsB,OAAdlG,GAAsBA,IAAcrB,OAAOqB,WAAkD,OAArCrB,OAAOk0F,eAAe7yF,IAA0BH,OAAOwzF,eAAentF,GAAUrG,OAAOC,YAAYoG,EAAI,EAUnKgnF,EAASmlG,EAAW,QASpBE,EAASF,EAAW,QASpBG,EAASH,EAAW,QASpBI,EAAaJ,EAAW,YAsCxBK,EAAoBL,EAAW,oBAE9BM,EAAkBC,EAAWC,EAAYC,GAAa,CAAC,iBAAkB,UAAW,WAAY,WAAWzmL,IAAIgmL,GA2BtH,SAAS5sL,EAAQhG,EAAK61D,GAAI,WAACy9H,GAAa,GAAS,CAAC,GAEhD,GAAItzL,QACF,OAGF,IAAIY,EACAw5D,EAQJ,GALmB,iBAARp6D,IAETA,EAAM,CAACA,IAGLW,EAAQX,GAEV,IAAKY,EAAI,EAAGw5D,EAAIp6D,EAAIc,OAAQF,EAAIw5D,EAAGx5D,IACjCi1D,EAAGz0D,KAAK,KAAMpB,EAAIY,GAAIA,EAAGZ,OAEtB,CAEL,MAAM8K,EAAOwoL,EAAap0L,OAAOi8I,oBAAoBn7I,GAAOd,OAAO4L,KAAK9K,GAClEoiE,EAAMt3D,EAAKhK,OACjB,IAAII,EAEJ,IAAKN,EAAI,EAAGA,EAAIwhE,EAAKxhE,IACnBM,EAAM4J,EAAKlK,GACXi1D,EAAGz0D,KAAK,KAAMpB,EAAIkB,GAAMA,EAAKlB,EAEjC,CACF,CAEA,SAASi7G,EAAQj7G,EAAKkB,GACpBA,EAAMA,EAAIiD,cACV,MAAM2G,EAAO5L,OAAO4L,KAAK9K,GACzB,IACIqK,EADAzJ,EAAIkK,EAAKhK,OAEb,KAAOF,KAAM,GAEX,GADAyJ,EAAOS,EAAKlK,GACRM,IAAQmJ,EAAKlG,cACf,OAAOkG,EAGX,OAAO,IACT,CAEA,MAAMkpL,EAEsB,oBAAfnB,WAAmCA,WACvB,oBAAThjJ,KAAuBA,KAA0B,oBAAX/uB,OAAyBA,OAASm/F,OAGlFg0E,EAAoB/nK,IAAa2wF,EAAY3wF,IAAYA,IAAY8nK,EAoD3E,MA8HMvlG,GAAgBylG,EAKG,oBAAfpwG,YAA8B+P,EAAe/P,YAH9CsvG,GACEc,GAAcd,aAAiBc,GAHrB,IAACA,EAetB,MAiCMC,EAAad,EAAW,mBAWxB,EAAiB,GAAGzxL,oBAAoB,CAACnB,EAAKiI,IAAS9G,EAAeC,KAAKpB,EAAKiI,GAA/D,CAAsE/I,OAAOqB,WAS9Fu8E,EAAW81G,EAAW,UAEtBe,EAAoB,CAAC3zL,EAAKirH,KAC9B,MAAM2oE,EAAc10L,OAAOimJ,0BAA0BnlJ,GAC/C6zL,EAAqB,CAAC,EAE5B7tL,EAAQ4tL,GAAa,CAACl0K,EAAY/d,KAChC,IAAIsgE,GAC2C,KAA1CA,EAAMgpD,EAAQvrG,EAAY/d,EAAM3B,MACnC6zL,EAAmBlyL,GAAQsgE,GAAOviD,EACpC,IAGFxgB,OAAOsgB,iBAAiBxf,EAAK6zL,EAAmB,EAsD5CC,EAAQ,6BAERC,EAAQ,aAERC,EAAW,CACfD,QACAD,QACAG,YAAaH,EAAQA,EAAM/mL,cAAgBgnL,GAwB7C,MA+BMG,EAAYtB,EAAW,iBAQvBuB,GAAkBC,EAkBE,mBAAjB1nB,aAlBsC2nB,EAmB7Cn7G,EAAWq6G,EAAQe,aAlBfF,EACK1nB,aAGF2nB,GAAyB/hK,EAW7B,SAAS0T,KAAKivD,WAXsBs/F,EAWV,GAV3BhB,EAAQjnE,iBAAiB,WAAW,EAAEr1F,SAAQ5vB,WACxC4vB,IAAWs8J,GAAWlsL,IAASirB,GACjCiiK,EAAUzzL,QAAUyzL,EAAU9iH,OAAV8iH,EACtB,IACC,GAEKzjK,IACNyjK,EAAU5sL,KAAKmpB,GACfyiK,EAAQe,YAAYhiK,EAAO,IAAI,GAECxB,GAAO7O,WAAW6O,IAhBlC,IAAEsjK,EAAuBC,EAKb/hK,EAAOiiK,EAiBzC,MAAMC,EAAiC,oBAAnBC,eAClBA,eAAepmL,KAAKklL,GAAgC,oBAAZ/kH,SAA2BA,QAAQuhG,UAAYokB,EAIzF,GACExzL,UACA4sF,gBACAgH,SAlpBF,SAAkB9tF,GAChB,OAAe,OAARA,IAAiB21G,EAAY31G,IAA4B,OAApBA,EAAInG,cAAyB87G,EAAY31G,EAAInG,cACpF44E,EAAWzyE,EAAInG,YAAYi0F,WAAa9tF,EAAInG,YAAYi0F,SAAS9tF,EACxE,EAgpBEiuL,WApgBkB/B,IAClB,IAAIr6C,EACJ,OAAOq6C,IACgB,mBAAb9yJ,UAA2B8yJ,aAAiB9yJ,UAClDq5C,EAAWy5G,EAAM50J,UACY,cAA1Bu6G,EAAOo6C,EAAOC,KAEL,WAATr6C,GAAqBp/D,EAAWy5G,EAAM1hJ,WAAkC,sBAArB0hJ,EAAM1hJ,YAGhE,EA2fA0jJ,kBA9nBF,SAA2BluL,GACzB,IAAIqkB,EAMJ,OAJEA,EAD0B,oBAAhBi5D,aAAiCA,YAAkB,OACpDA,YAAY6wG,OAAOnuL,GAEnB,GAAUA,EAAU,QAAM8mF,EAAc9mF,EAAIq8E,QAEhDh4D,CACT,EAunBE44C,WACAjF,WACAg9C,UA9kBgBk3E,IAAmB,IAAVA,IAA4B,IAAVA,EA+kB3Cn8F,WACAgM,gBACA0wF,mBACAC,YACAC,aACAC,YACAj3E,cACA3uB,SACAqlG,SACAC,SACAj2G,WACA5D,aACA27G,SA9hBgBpuL,GAAQ+vF,EAAS/vF,IAAQyyE,EAAWzyE,EAAIquL,MA+hBxD7B,oBACAjlG,eACAglG,aACAhtL,UACAkuG,MAhaF,SAASA,IACP,MAAM,SAAC6gF,GAAYvB,EAAiBpxL,OAASA,MAAQ,CAAC,EAChD0oB,EAAS,CAAC,EACV+tE,EAAc,CAACpyF,EAAKvF,KACxB,MAAMgzH,EAAY6gE,GAAY95E,EAAQnwF,EAAQ5pB,IAAQA,EAClDshG,EAAc13E,EAAOopG,KAAe1xB,EAAc/7F,GACpDqkB,EAAOopG,GAAahgB,EAAMppF,EAAOopG,GAAYztH,GACpC+7F,EAAc/7F,GACvBqkB,EAAOopG,GAAahgB,EAAM,CAAC,EAAGztG,GACrB9F,EAAQ8F,GACjBqkB,EAAOopG,GAAaztH,EAAIuG,QAExB8d,EAAOopG,GAAaztH,CACtB,EAGF,IAAK,IAAI7F,EAAI,EAAGw5D,EAAIpzD,UAAUlG,OAAQF,EAAIw5D,EAAGx5D,IAC3CoG,UAAUpG,IAAMoF,EAAQgB,UAAUpG,GAAIi4F,GAExC,OAAO/tE,CACT,EA6YEjjB,OAjYa,CAACwF,EAAG+4B,EAAG8nD,GAAUolG,cAAa,CAAC,KAC5CttL,EAAQogC,GAAG,CAAC3/B,EAAKvF,KACXgtF,GAAWhV,EAAWzyE,GACxB4G,EAAEnM,GAAOmN,EAAK5H,EAAKynF,GAEnB7gF,EAAEnM,GAAOuF,CACX,GACC,CAAC6sL,eACGjmL,GA0XPmmB,KA7fY7mB,GAAQA,EAAI6mB,KACxB7mB,EAAI6mB,OAAS7mB,EAAIxB,QAAQ,qCAAsC,IA6f/D6pL,SAjXgBl9I,IACc,QAA1BA,EAAQmiB,WAAW,KACrBniB,EAAUA,EAAQ9qC,MAAM,IAEnB8qC,GA8WPm9I,SAlWe,CAAC30L,EAAa40L,EAAkBtzL,EAAOgyL,KACtDtzL,EAAYC,UAAYrB,OAAOo0F,OAAO4hG,EAAiB30L,UAAWqzL,GAClEtzL,EAAYC,UAAUD,YAAcA,EACpCpB,OAAOC,eAAemB,EAAa,QAAS,CAC1CjB,MAAO61L,EAAiB30L,YAE1BqB,GAAS1C,OAAOiI,OAAO7G,EAAYC,UAAWqB,EAAM,EA6VpDuzL,aAjVmB,CAACC,EAAWC,EAASjvL,EAAQkvL,KAChD,IAAI1zL,EACAhB,EACAqH,EACJ,MAAMg9J,EAAS,CAAC,EAIhB,GAFAowB,EAAUA,GAAW,CAAC,EAEL,MAAbD,EAAmB,OAAOC,EAE9B,EAAG,CAGD,IAFAzzL,EAAQ1C,OAAOi8I,oBAAoBi6C,GACnCx0L,EAAIgB,EAAMd,OACHF,KAAM,GACXqH,EAAOrG,EAAMhB,GACP00L,IAAcA,EAAWrtL,EAAMmtL,EAAWC,IAAcpwB,EAAOh9J,KACnEotL,EAAQptL,GAAQmtL,EAAUntL,GAC1Bg9J,EAAOh9J,IAAQ,GAGnBmtL,GAAuB,IAAXhvL,GAAoBgtF,EAAegiG,EACjD,OAASA,KAAehvL,GAAUA,EAAOgvL,EAAWC,KAAaD,IAAcl2L,OAAOqB,WAEtF,OAAO80L,CAAO,EA2Td3C,SACAE,aACAriJ,SAjTe,CAAC5jC,EAAK4oL,EAAcr5J,KACnCvvB,EAAMO,OAAOP,SACIjN,IAAbw8B,GAA0BA,EAAWvvB,EAAI7L,UAC3Co7B,EAAWvvB,EAAI7L,QAEjBo7B,GAAYq5J,EAAaz0L,OACzB,MAAMqhE,EAAYx1D,EAAIxJ,QAAQoyL,EAAcr5J,GAC5C,OAAsB,IAAfimC,GAAoBA,IAAcjmC,CAAQ,EA2SjDvI,QAhSeg/J,IACf,IAAKA,EAAO,OAAO,KACnB,GAAIhyL,EAAQgyL,GAAQ,OAAOA,EAC3B,IAAI/xL,EAAI+xL,EAAM7xL,OACd,IAAK29D,EAAS79D,GAAI,OAAO,KACzB,MAAMH,EAAM,IAAIC,MAAME,GACtB,KAAOA,KAAM,GACXH,EAAIG,GAAK+xL,EAAM/xL,GAEjB,OAAOH,CAAG,EAwRV+0L,aA7PmB,CAACx1L,EAAK61D,KACzB,MAEMx1D,GAFYL,GAAOA,EAAII,OAAOC,WAETe,KAAKpB,GAEhC,IAAI8qB,EAEJ,MAAQA,EAASzqB,EAASmI,UAAYsiB,EAAOriB,MAAM,CACjD,MAAM4jG,EAAOvhF,EAAOzrB,MACpBw2D,EAAGz0D,KAAKpB,EAAKqsG,EAAK,GAAIA,EAAK,GAC7B,GAoPAopF,SAzOe,CAACC,EAAQ/oL,KACxB,IAAIwiC,EACJ,MAAM1uC,EAAM,GAEZ,KAAwC,QAAhC0uC,EAAUumJ,EAAO/8J,KAAKhsB,KAC5BlM,EAAIkH,KAAKwnC,GAGX,OAAO1uC,CAAG,EAkOVizL,aACAvyL,eAAc,EACdw0L,WAAY,EACZhC,oBACAiC,cAzLqB51L,IACrB2zL,EAAkB3zL,GAAK,CAAC0f,EAAY/d,KAElC,GAAIu3E,EAAWl5E,KAA6D,IAArD,CAAC,YAAa,SAAU,UAAUmD,QAAQxB,GAC/D,OAAO,EAGT,MAAMtC,EAAQW,EAAI2B,GAEbu3E,EAAW75E,KAEhBqgB,EAAWC,YAAa,EAEpB,aAAcD,EAChBA,EAAWG,UAAW,EAInBH,EAAW0gB,MACd1gB,EAAW0gB,IAAM,KACf,MAAMmpC,MAAM,qCAAwC5nE,EAAO,IAAK,GAEpE,GACA,EAmKFk0L,YAhKkB,CAACC,EAAeC,KAClC,MAAM/1L,EAAM,CAAC,EAEPiwL,EAAUxvL,IACdA,EAAIuF,SAAQ3G,IACVW,EAAIX,IAAS,CAAI,GACjB,EAKJ,OAFAsB,EAAQm1L,GAAiB7F,EAAO6F,GAAiB7F,EAAO/iL,OAAO4oL,GAAejrL,MAAMkrL,IAE7E/1L,CAAG,EAsJVg2L,YAlOkBrpL,GACXA,EAAIxI,cAAcgH,QAAQ,yBAC/B,SAAkB6sD,EAAG0sF,EAAIuxC,GACvB,OAAOvxC,EAAG33I,cAAgBkpL,CAC5B,IA+NF3pF,KApJW,OAqJX4pF,eAnJqB,CAAC72L,EAAO8rG,IACb,MAAT9rG,GAAiBiQ,OAAOmlF,SAASp1F,GAASA,GAASA,EAAQ8rG,EAmJlE8P,UACAuE,OAAQ+zE,EACRC,mBACAQ,WACAmC,eA1IqB,CAAC3xG,EAAO,GAAI4xG,EAAWpC,EAASC,eACrD,IAAItnL,EAAM,GACV,MAAM,OAAC7L,GAAUs1L,EACjB,KAAO5xG,KACL73E,GAAOypL,EAASpwJ,KAAKivD,SAAWn0F,EAAO,GAGzC,OAAO6L,CAAG,EAoIV0pL,oBA1HF,SAA6B1D,GAC3B,SAAUA,GAASz5G,EAAWy5G,EAAM50J,SAAyC,aAA9B40J,EAAMvyL,OAAOwzF,cAA+B++F,EAAMvyL,OAAOC,UAC1G,EAyHEi2L,aAvHoBt2L,IACpB,MAAM+rE,EAAQ,IAAIrrE,MAAM,IAElB61L,EAAQ,CAACt/J,EAAQr2B,KAErB,GAAI41F,EAASv/D,GAAS,CACpB,GAAI80C,EAAM5oE,QAAQ8zB,IAAW,EAC3B,OAGF,KAAK,WAAYA,GAAS,CACxB80C,EAAMnrE,GAAKq2B,EACX,MAAMxX,EAAS9e,EAAQs2B,GAAU,GAAK,CAAC,EASvC,OAPAjxB,EAAQixB,GAAQ,CAAC53B,EAAO6B,KACtB,MAAMs1L,EAAeD,EAAMl3L,EAAOuB,EAAI,IACrCw7G,EAAYo6E,KAAkB/2K,EAAOve,GAAOs1L,EAAa,IAG5DzqH,EAAMnrE,QAAKlB,EAEJ+f,CACT,CACF,CAEA,OAAOwX,CAAM,EAGf,OAAOs/J,EAAMv2L,EAAK,EAAE,EA4FpBk0L,YACAuC,WAxFkB9D,GAClBA,IAAUn8F,EAASm8F,IAAUz5G,EAAWy5G,KAAWz5G,EAAWy5G,EAAMzqK,OAASgxD,EAAWy5G,EAAM9zB,OAwF9F6N,aAAcynB,EACdK,QCvuBF,SAASkC,EAAWtjK,EAAS2nC,EAAM/3C,EAAQ2zK,EAASnnK,GAClD+5C,MAAMnoE,KAAKgB,MAEPmnE,MAAMqtH,kBACRrtH,MAAMqtH,kBAAkBx0L,KAAMA,KAAK9B,aAEnC8B,KAAK2pE,OAAQ,IAAKxC,OAASwC,MAG7B3pE,KAAKgxB,QAAUA,EACfhxB,KAAKT,KAAO,aACZo5D,IAAS34D,KAAK24D,KAAOA,GACrB/3C,IAAW5gB,KAAK4gB,OAASA,GACzB2zK,IAAYv0L,KAAKu0L,QAAUA,GACvBnnK,IACFptB,KAAKotB,SAAWA,EAChBptB,KAAKosC,OAAShf,EAASgf,OAAShf,EAASgf,OAAS,KAEtD,CAEAgzC,EAAMyzG,SAASyB,EAAYntH,MAAO,CAChCvkC,OAAQ,WACN,MAAO,CAEL5R,QAAShxB,KAAKgxB,QACdzxB,KAAMS,KAAKT,KAEXk1L,YAAaz0L,KAAKy0L,YAClBtgI,OAAQn0D,KAAKm0D,OAEbxxB,SAAU3iC,KAAK2iC,SACf+xJ,WAAY10L,KAAK00L,WACjBC,aAAc30L,KAAK20L,aACnBhrH,MAAO3pE,KAAK2pE,MAEZ/oD,OAAQw+D,EAAM80G,aAAal0L,KAAK4gB,QAChC+3C,KAAM34D,KAAK24D,KACXvsB,OAAQpsC,KAAKosC,OAEjB,IAGF,MAAM,EAAYkoJ,EAAWn2L,UACvBqzL,EAAc,CAAC,EAErB,CACE,uBACA,iBACA,eACA,YACA,cACA,4BACA,iBACA,mBACA,kBACA,eACA,kBACA,mBAEA5tL,SAAQ+0D,IACR64H,EAAY74H,GAAQ,CAAC17D,MAAO07D,EAAK,IAGnC77D,OAAOsgB,iBAAiBk3K,EAAY9C,GACpC10L,OAAOC,eAAe,EAAW,eAAgB,CAACE,OAAO,IAGzDq3L,EAAW31L,KAAO,CAAC2nB,EAAOqyC,EAAM/3C,EAAQ2zK,EAASnnK,EAAUwnK,KACzD,MAAMC,EAAa/3L,OAAOo0F,OAAO,GAgBjC,OAdA9R,EAAM2zG,aAAazsK,EAAOuuK,GAAY,SAAgBj3L,GACpD,OAAOA,IAAQupE,MAAMhpE,SACvB,IAAG0H,GACe,iBAATA,IAGTyuL,EAAWt1L,KAAK61L,EAAYvuK,EAAM0K,QAAS2nC,EAAM/3C,EAAQ2zK,EAASnnK,GAElEynK,EAAWC,MAAQxuK,EAEnBuuK,EAAWt1L,KAAO+mB,EAAM/mB,KAExBq1L,GAAe93L,OAAOiI,OAAO8vL,EAAYD,GAElCC,CAAU,EAGnB,UCxFA,SAASE,EAAYxE,GACnB,OAAOnxG,EAAMghB,cAAcmwF,IAAUnxG,EAAM7gF,QAAQgyL,EACrD,CASA,SAASyE,GAAel2L,GACtB,OAAOsgF,EAAMjxC,SAASrvC,EAAK,MAAQA,EAAI8L,MAAM,GAAI,GAAK9L,CACxD,CAWA,SAASm2L,GAAUj6F,EAAMl8F,EAAKo2L,GAC5B,OAAKl6F,EACEA,EAAKr5F,OAAO7C,GAAK0L,KAAI,SAAc0lB,EAAO1xB,GAG/C,OADA0xB,EAAQ8kK,GAAe9kK,IACfglK,GAAQ12L,EAAI,IAAM0xB,EAAQ,IAAMA,CAC1C,IAAGrlB,KAAKqqL,EAAO,IAAM,IALHp2L,CAMpB,CAaA,MAAMq2L,GAAa/1G,EAAM2zG,aAAa3zG,EAAO,CAAC,EAAG,MAAM,SAAgBv5E,GACrE,MAAO,WAAWgZ,KAAKhZ,EACzB,IA8JA,SArIA,SAAoBjI,EAAK4/B,EAAUz1B,GACjC,IAAKq3E,EAAMgV,SAASx2F,GAClB,MAAM,IAAImgB,UAAU,4BAItByf,EAAWA,GAAY,IAAyBC,SAYhD,MAAM23J,GATNrtL,EAAUq3E,EAAM2zG,aAAahrL,EAAS,CACpCqtL,YAAY,EACZF,MAAM,EACN1zF,SAAS,IACR,GAAO,SAAiBm9C,EAAQ9pH,GAEjC,OAAQuqD,EAAM46B,YAAYnlF,EAAO8pH,GACnC,KAE2By2C,WAErBC,EAAUttL,EAAQstL,SAAWC,EAC7BJ,EAAOntL,EAAQmtL,KACf1zF,EAAUz5F,EAAQy5F,QAElB+zF,GADQxtL,EAAQ0lC,MAAwB,oBAATA,MAAwBA,OACpC2xC,EAAM60G,oBAAoBz2J,GAEnD,IAAK4hD,EAAMtI,WAAWu+G,GACpB,MAAM,IAAIt3K,UAAU,8BAGtB,SAASy3K,EAAav4L,GACpB,GAAc,OAAVA,EAAgB,MAAO,GAE3B,GAAImiF,EAAMiM,OAAOpuF,GACf,OAAOA,EAAM4hC,cAGf,IAAK02J,GAAWn2G,EAAMuxG,OAAO1zL,GAC3B,MAAM,IAAI,EAAW,gDAGvB,OAAImiF,EAAM+L,cAAcluF,IAAUmiF,EAAMwM,aAAa3uF,GAC5Cs4L,GAA2B,mBAAT9nJ,KAAsB,IAAIA,KAAK,CAACxwC,IAAU4zF,OAAOlyF,KAAK1B,GAG1EA,CACT,CAYA,SAASq4L,EAAer4L,EAAO6B,EAAKk8F,GAClC,IAAI38F,EAAMpB,EAEV,GAAIA,IAAU+9F,GAAyB,iBAAV/9F,EAC3B,GAAImiF,EAAMjxC,SAASrvC,EAAK,MAEtBA,EAAMs2L,EAAat2L,EAAMA,EAAI8L,MAAM,GAAI,GAEvC3N,EAAQsF,KAAKC,UAAUvF,QAClB,GACJmiF,EAAM7gF,QAAQtB,IAnGvB,SAAqBoB,GACnB,OAAO+gF,EAAM7gF,QAAQF,KAASA,EAAIguC,KAAK0oJ,EACzC,CAiGiCU,CAAYx4L,KACnCmiF,EAAMwxG,WAAW3zL,IAAUmiF,EAAMjxC,SAASrvC,EAAK,SAAWT,EAAM+gF,EAAM7tD,QAAQt0B,IAYhF,OATA6B,EAAMk2L,GAAel2L,GAErBT,EAAIuF,SAAQ,SAAcua,EAAI1T,IAC1B20E,EAAM46B,YAAY77F,IAAc,OAAPA,GAAgBqf,EAAS7B,QAEtC,IAAZ6lE,EAAmByzF,GAAU,CAACn2L,GAAM2L,EAAOyqL,GAAqB,OAAZ1zF,EAAmB1iG,EAAMA,EAAM,KACnF02L,EAAar3K,GAEjB,KACO,EAIX,QAAI42K,EAAY93L,KAIhBugC,EAAS7B,OAAOs5J,GAAUj6F,EAAMl8F,EAAKo2L,GAAOM,EAAav4L,KAElD,EACT,CAEA,MAAM0sE,EAAQ,GAER+rH,EAAiB54L,OAAOiI,OAAOowL,GAAY,CAC/CG,iBACAE,eACAT,gBAyBF,IAAK31G,EAAMgV,SAASx2F,GAClB,MAAM,IAAImgB,UAAU,0BAKtB,OA5BA,SAAS43K,EAAM14L,EAAO+9F,GACpB,IAAI5b,EAAM46B,YAAY/8G,GAAtB,CAEA,IAA8B,IAA1B0sE,EAAM5oE,QAAQ9D,GAChB,MAAMkqE,MAAM,kCAAoC6zB,EAAKnwF,KAAK,MAG5D8+D,EAAMpkE,KAAKtI,GAEXmiF,EAAMx7E,QAAQ3G,GAAO,SAAckhB,EAAIrf,IAKtB,OAJEsgF,EAAM46B,YAAY77F,IAAc,OAAPA,IAAgBk3K,EAAQr2L,KAChEw+B,EAAUrf,EAAIihE,EAAM9d,SAASxiE,GAAOA,EAAIsyB,OAAStyB,EAAKk8F,EAAM06F,KAI5DC,EAAMx3K,EAAI68E,EAAOA,EAAKr5F,OAAO7C,GAAO,CAACA,GAEzC,IAEA6qE,EAAMxgE,KAlB8B,CAmBtC,CAMAwsL,CAAM/3L,GAEC4/B,CACT,EC5MA,SAASg7B,GAAOjuD,GACd,MAAMqrL,EAAU,CACd,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,MAAO,IACP,MAAO,MAET,OAAOhxK,mBAAmBra,GAAKxB,QAAQ,oBAAoB,SAAkB2xD,GAC3E,OAAOk7H,EAAQl7H,EACjB,GACF,CAUA,SAASm7H,GAAqB7gK,EAAQjtB,GACpC/H,KAAK81L,OAAS,GAEd9gK,GAAU,GAAWA,EAAQh1B,KAAM+H,EACrC,CAEA,MAAM,GAAY8tL,GAAqB13L,UAEvC,GAAUw9B,OAAS,SAAgBp8B,EAAMtC,GACvC+C,KAAK81L,OAAOvwL,KAAK,CAAChG,EAAMtC,GAC1B,EAEA,GAAU4xC,SAAW,SAAkBknJ,GACrC,MAAMC,EAAUD,EAAU,SAAS94L,GACjC,OAAO84L,EAAQ/2L,KAAKgB,KAAM/C,EAAOu7D,GACnC,EAAIA,GAEJ,OAAOx4D,KAAK81L,OAAOtrL,KAAI,SAAcy/F,GACnC,OAAO+rF,EAAQ/rF,EAAK,IAAM,IAAM+rF,EAAQ/rF,EAAK,GAC/C,GAAG,IAAIp/F,KAAK,IACd,EAEA,YC5CA,SAAS,GAAOxG,GACd,OAAOugB,mBAAmBvgB,GACxB0E,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,IACrB,CAWe,SAASktL,GAAShwK,EAAK+O,EAAQjtB,GAE5C,IAAKitB,EACH,OAAO/O,EAGT,MAAM+vK,EAAUjuL,GAAWA,EAAQywD,QAAU,GAEvC09H,EAAcnuL,GAAWA,EAAQouL,UAEvC,IAAIC,EAUJ,GAPEA,EADEF,EACiBA,EAAYlhK,EAAQjtB,GAEpBq3E,EAAMyxG,kBAAkB77J,GACzCA,EAAO6Z,WACP,IAAI,GAAqB7Z,EAAQjtB,GAAS8mC,SAASmnJ,GAGnDI,EAAkB,CACpB,MAAMC,EAAgBpwK,EAAIllB,QAAQ,MAEX,IAAnBs1L,IACFpwK,EAAMA,EAAIrb,MAAM,EAAGyrL,IAErBpwK,KAA8B,IAAtBA,EAAIllB,QAAQ,KAAc,IAAM,KAAOq1L,CACjD,CAEA,OAAOnwK,CACT,CCQA,SAlEA,MACE,WAAA/nB,GACE8B,KAAKs2L,SAAW,EAClB,CAUA,GAAAp4K,CAAIq4K,EAAWC,EAAUzuL,GAOvB,OANA/H,KAAKs2L,SAAS/wL,KAAK,CACjBgxL,YACAC,WACAC,cAAa1uL,GAAUA,EAAQ0uL,YAC/BC,QAAS3uL,EAAUA,EAAQ2uL,QAAU,OAEhC12L,KAAKs2L,SAAS53L,OAAS,CAChC,CASA,KAAAi4L,CAAMhyK,GACA3kB,KAAKs2L,SAAS3xK,KAChB3kB,KAAKs2L,SAAS3xK,GAAM,KAExB,CAOA,KAAAuhC,GACMlmD,KAAKs2L,WACPt2L,KAAKs2L,SAAW,GAEpB,CAYA,OAAA1yL,CAAQ6vD,GACN2rB,EAAMx7E,QAAQ5D,KAAKs2L,UAAU,SAAwBn3L,GACzC,OAANA,GACFs0D,EAAGt0D,EAEP,GACF,GCjEF,IACEy3L,mBAAmB,EACnBC,mBAAmB,EACnBC,qBAAqB,GCDvB,IACEC,WAAW,EACX1xE,QAAS,CACPpxF,gBCJsC,oBAApBA,gBAAkCA,gBAAkB,GDKtEwJ,SEN+B,oBAAbA,SAA2BA,SAAW,KFOxDgQ,KGP2B,oBAATA,KAAuBA,KAAO,MHSlDukG,UAAW,CAAC,OAAQ,QAAS,OAAQ,OAAQ,MAAO,SIXhDglD,GAAkC,oBAAX/4K,QAA8C,oBAAb7Y,SAExD6xL,GAAkC,iBAAdr3C,WAA0BA,gBAAatiJ,EAmB3D45L,GAAwBF,MAC1BC,IAAc,CAAC,cAAe,eAAgB,MAAMl2L,QAAQk2L,GAAWE,SAAW,GAWhFC,GAE2B,oBAAtBC,mBAEPrqJ,gBAAgBqqJ,mBACc,mBAAvBrqJ,KAAKsqJ,cAIVr1G,GAAS+0G,IAAiB/4K,OAAOwG,SAASC,MAAQ,mBCvCxD,OACK,KACA,ICyFL,SA9CA,SAAwB8Y,GACtB,SAAS+5J,EAAUv8F,EAAM/9F,EAAOogB,EAAQ5S,GACtC,IAAIlL,EAAOy7F,EAAKvwF,KAEhB,GAAa,cAATlL,EAAsB,OAAO,EAEjC,MAAMi4L,EAAetqL,OAAOmlF,UAAU9yF,GAChC0lH,EAASx6G,GAASuwF,EAAKt8F,OAG7B,GAFAa,GAAQA,GAAQ6/E,EAAM7gF,QAAQ8e,GAAUA,EAAO3e,OAASa,EAEpD0lH,EAOF,OANI7lC,EAAMm0G,WAAWl2K,EAAQ9d,GAC3B8d,EAAO9d,GAAQ,CAAC8d,EAAO9d,GAAOtC,GAE9BogB,EAAO9d,GAAQtC,GAGTu6L,EAGLn6K,EAAO9d,IAAU6/E,EAAMgV,SAAS/2E,EAAO9d,MAC1C8d,EAAO9d,GAAQ,IASjB,OANeg4L,EAAUv8F,EAAM/9F,EAAOogB,EAAO9d,GAAOkL,IAEtC20E,EAAM7gF,QAAQ8e,EAAO9d,MACjC8d,EAAO9d,GA/Cb,SAAuBlB,GACrB,MAAMT,EAAM,CAAC,EACP8K,EAAO5L,OAAO4L,KAAKrK,GACzB,IAAIG,EACJ,MAAMwhE,EAAMt3D,EAAKhK,OACjB,IAAII,EACJ,IAAKN,EAAI,EAAGA,EAAIwhE,EAAKxhE,IACnBM,EAAM4J,EAAKlK,GACXZ,EAAIkB,GAAOT,EAAIS,GAEjB,OAAOlB,CACT,CAoCqB65L,CAAcp6K,EAAO9d,MAG9Bi4L,CACV,CAEA,GAAIp4G,EAAMkzG,WAAW90J,IAAa4hD,EAAMtI,WAAWt5C,EAASy3D,SAAU,CACpE,MAAMr3F,EAAM,CAAC,EAMb,OAJAwhF,EAAMg0G,aAAa51J,GAAU,CAACj+B,EAAMtC,KAClCs6L,EA1EN,SAAuBh4L,GAKrB,OAAO6/E,EAAMi0G,SAAS,gBAAiB9zL,GAAMiL,KAAIkwD,GAC3B,OAAbA,EAAM,GAAc,GAAKA,EAAM,IAAMA,EAAM,IAEtD,CAkEgBg9H,CAAcn4L,GAAOtC,EAAOW,EAAK,EAAE,IAGxCA,CACT,CAEA,OAAO,IACT,ECzDA,MAAMmyF,GAAW,CAEf4nG,aAAc,GAEdC,QAAS,CAAC,MAAO,OAAQ,SAEzBC,iBAAkB,CAAC,SAA0B5yL,EAAMi4B,GACjD,MAAM3W,EAAc2W,EAAQ46J,kBAAoB,GAC1CC,EAAqBxxK,EAAYxlB,QAAQ,qBAAuB,EAChEi3L,EAAkB54G,EAAMgV,SAASnvF,GAEnC+yL,GAAmB54G,EAAMkyG,WAAWrsL,KACtCA,EAAO,IAAIw4B,SAASx4B,IAKtB,GAFmBm6E,EAAMkzG,WAAWrtL,GAGlC,OAAO8yL,EAAqBx1L,KAAKC,UAAU,GAAeyC,IAASA,EAGrE,GAAIm6E,EAAM+L,cAAclmF,IACtBm6E,EAAM+S,SAASltF,IACfm6E,EAAMqzG,SAASxtL,IACfm6E,EAAMsxG,OAAOzrL,IACbm6E,EAAMuxG,OAAO1rL,IACbm6E,EAAM0xG,iBAAiB7rL,GAEvB,OAAOA,EAET,GAAIm6E,EAAMmzG,kBAAkBttL,GAC1B,OAAOA,EAAKy7E,OAEd,GAAItB,EAAMyxG,kBAAkB5rL,GAE1B,OADAi4B,EAAQ+6J,eAAe,mDAAmD,GACnEhzL,EAAK4pC,WAGd,IAAI+hJ,EAEJ,GAAIoH,EAAiB,CACnB,GAAIzxK,EAAYxlB,QAAQ,sCAAwC,EAC9D,OCvEO,SAA0BkE,EAAM8C,GAC7C,OAAO,GAAW9C,EAAM,IAAIizL,GAAS7yE,QAAQpxF,gBAAmBn3B,OAAOiI,OAAO,CAC5EswL,QAAS,SAASp4L,EAAO6B,EAAKk8F,EAAM7oB,GAClC,OAAI+lH,GAASC,QAAU/4G,EAAM+S,SAASl1F,IACpC+C,KAAK27B,OAAO78B,EAAK7B,EAAM4xC,SAAS,YACzB,GAGFsjC,EAAQmjH,eAAe3wL,MAAM3E,KAAM4E,UAC5C,GACCmD,GACL,CD4DeqwL,CAAiBnzL,EAAMjF,KAAKq4L,gBAAgBxpJ,WAGrD,IAAK+hJ,EAAaxxG,EAAMwxG,WAAW3rL,KAAUshB,EAAYxlB,QAAQ,wBAA0B,EAAG,CAC5F,MAAMu3L,EAAYt4L,KAAK4kE,KAAO5kE,KAAK4kE,IAAInnC,SAEvC,OAAO,GACLmzJ,EAAa,CAAC,UAAW3rL,GAAQA,EACjCqzL,GAAa,IAAIA,EACjBt4L,KAAKq4L,eAET,CACF,CAEA,OAAIL,GAAmBD,GACrB76J,EAAQ+6J,eAAe,oBAAoB,GAxEjD,SAAyBM,EAAUhuD,EAAQwrD,GACzC,GAAI32G,EAAM9d,SAASi3H,GACjB,IAEE,OADChuD,GAAUhoI,KAAK0sB,OAAOspK,GAChBn5G,EAAMhuD,KAAKmnK,EACpB,CAAE,MAAO/zL,GACP,GAAe,gBAAXA,EAAEjF,KACJ,MAAMiF,CAEV,CAGF,OAAQuxL,GAAWxzL,KAAKC,WAAW+1L,EACrC,CA4DaC,CAAgBvzL,IAGlBA,CACT,GAEAwzL,kBAAmB,CAAC,SAA2BxzL,GAC7C,MAAM0yL,EAAe33L,KAAK23L,cAAgB5nG,GAAS4nG,aAC7Cd,EAAoBc,GAAgBA,EAAad,kBACjD6B,EAAsC,SAAtB14L,KAAKotC,aAE3B,GAAIgyC,EAAM4xG,WAAW/rL,IAASm6E,EAAM0xG,iBAAiB7rL,GACnD,OAAOA,EAGT,GAAIA,GAAQm6E,EAAM9d,SAASr8D,KAAW4xL,IAAsB72L,KAAKotC,cAAiBsrJ,GAAgB,CAChG,MACMC,IADoBhB,GAAgBA,EAAaf,oBACP8B,EAEhD,IACE,OAAOn2L,KAAK0sB,MAAMhqB,EACpB,CAAE,MAAOT,GACP,GAAIm0L,EAAmB,CACrB,GAAe,gBAAXn0L,EAAEjF,KACJ,MAAM,EAAWZ,KAAK6F,EAAG,EAAWo0L,iBAAkB54L,KAAM,KAAMA,KAAKotB,UAEzE,MAAM5oB,CACR,CACF,CACF,CAEA,OAAOS,CACT,GAMA06G,QAAS,EAETk5E,eAAgB,aAChBC,eAAgB,eAEhBC,kBAAmB,EACnBC,eAAgB,EAEhBp0H,IAAK,CACHnnC,SAAUy6J,GAAS7yE,QAAQ5nF,SAC3BgQ,KAAMyqJ,GAAS7yE,QAAQ53E,MAGzBwrJ,eAAgB,SAAwB7sJ,GACtC,OAAOA,GAAU,KAAOA,EAAS,GACnC,EAEAlP,QAAS,CACPg8J,OAAQ,CACN,OAAU,oCACV,oBAAgB57L,KAKtB8hF,EAAMx7E,QAAQ,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,UAAW0vG,IAChEvjB,GAAS7yD,QAAQo2E,GAAU,CAAC,CAAC,IAG/B,YE1JM6lF,GAAoB/5G,EAAMq0G,YAAY,CAC1C,MAAO,gBAAiB,iBAAkB,eAAgB,OAC1D,UAAW,OAAQ,OAAQ,oBAAqB,sBAChD,gBAAiB,WAAY,eAAgB,sBAC7C,UAAW,cAAe,eCLtB2F,GAAap7L,OAAO,aAE1B,SAASq7L,GAAgBC,GACvB,OAAOA,GAAUxuL,OAAOwuL,GAAQloK,OAAOrvB,aACzC,CAEA,SAASwxH,GAAet2H,GACtB,OAAc,IAAVA,GAA4B,MAATA,EACdA,EAGFmiF,EAAM7gF,QAAQtB,GAASA,EAAMuN,IAAI+oH,IAAkBzoH,OAAO7N,EACnE,CAgBA,SAASs8L,GAAiBlwK,EAASpsB,EAAOq8L,EAAQt1L,EAAQw1L,GACxD,OAAIp6G,EAAMtI,WAAW9yE,GACZA,EAAOhF,KAAKgB,KAAM/C,EAAOq8L,IAG9BE,IACFv8L,EAAQq8L,GAGLl6G,EAAM9d,SAASrkE,GAEhBmiF,EAAM9d,SAASt9D,IACiB,IAA3B/G,EAAM8D,QAAQiD,GAGnBo7E,EAAM1E,SAAS12E,GACVA,EAAO6a,KAAK5hB,QADrB,OANA,EASF,CAsBA,MAAMw8L,GACJ,WAAAv7L,CAAYg/B,GACVA,GAAWl9B,KAAKg+B,IAAId,EACtB,CAEA,GAAAc,CAAIs7J,EAAQI,EAAgBC,GAC1B,MAAM3sJ,EAAOhtC,KAEb,SAAS45L,EAAU/d,EAAQge,EAASC,GAClC,MAAMC,EAAUV,GAAgBQ,GAEhC,IAAKE,EACH,MAAM,IAAI5yH,MAAM,0CAGlB,MAAMroE,EAAMsgF,EAAMy5B,QAAQ7rE,EAAM+sJ,KAE5Bj7L,QAAqBxB,IAAd0vC,EAAKluC,KAAmC,IAAbg7L,QAAmCx8L,IAAbw8L,IAAwC,IAAd9sJ,EAAKluC,MACzFkuC,EAAKluC,GAAO+6L,GAAWtmE,GAAesoD,GAE1C,CAEA,MAAMme,EAAa,CAAC98J,EAAS48J,IAC3B16G,EAAMx7E,QAAQs5B,GAAS,CAAC2+I,EAAQge,IAAYD,EAAU/d,EAAQge,EAASC,KAEzE,GAAI16G,EAAMghB,cAAck5F,IAAWA,aAAkBt5L,KAAK9B,YACxD87L,EAAWV,EAAQI,QACd,GAAGt6G,EAAM9d,SAASg4H,KAAYA,EAASA,EAAOloK,UArEtB,iCAAiCvS,KAqEmBy6K,EArEVloK,QAsEvE4oK,ED1EN,CAAeC,IACb,MAAMl7G,EAAS,CAAC,EAChB,IAAIjgF,EACAuF,EACA7F,EAsBJ,OApBAy7L,GAAcA,EAAWxxL,MAAM,MAAM7E,SAAQ,SAAgBipE,GAC3DruE,EAAIquE,EAAK9rE,QAAQ,KACjBjC,EAAM+tE,EAAK1L,UAAU,EAAG3iE,GAAG4yB,OAAOrvB,cAClCsC,EAAMwoE,EAAK1L,UAAU3iE,EAAI,GAAG4yB,QAEvBtyB,GAAQigF,EAAOjgF,IAAQq6L,GAAkBr6L,KAIlC,eAARA,EACEigF,EAAOjgF,GACTigF,EAAOjgF,GAAKyG,KAAKlB,GAEjB06E,EAAOjgF,GAAO,CAACuF,GAGjB06E,EAAOjgF,GAAOigF,EAAOjgF,GAAOigF,EAAOjgF,GAAO,KAAOuF,EAAMA,EAE3D,IAEO06E,CACR,EC+CgBm7G,CAAaZ,GAASI,QAC5B,GAAIt6G,EAAM6xG,UAAUqI,GACzB,IAAK,MAAOx6L,EAAK7B,KAAUq8L,EAAOrkG,UAChC2kG,EAAU38L,EAAO6B,EAAK66L,QAGd,MAAVL,GAAkBM,EAAUF,EAAgBJ,EAAQK,GAGtD,OAAO35L,IACT,CAEA,GAAAk0B,CAAIolK,EAAQ/uD,GAGV,GAFA+uD,EAASD,GAAgBC,GAEb,CACV,MAAMx6L,EAAMsgF,EAAMy5B,QAAQ74G,KAAMs5L,GAEhC,GAAIx6L,EAAK,CACP,MAAM7B,EAAQ+C,KAAKlB,GAEnB,IAAKyrI,EACH,OAAOttI,EAGT,IAAe,IAAXstI,EACF,OA5GV,SAAqBhgI,GACnB,MAAM4iB,EAASrwB,OAAOo0F,OAAO,MACvBipG,EAAW,mCACjB,IAAIz/H,EAEJ,KAAQA,EAAQy/H,EAAS5jK,KAAKhsB,IAC5B4iB,EAAOutC,EAAM,IAAMA,EAAM,GAG3B,OAAOvtC,CACT,CAkGiBitK,CAAYn9L,GAGrB,GAAImiF,EAAMtI,WAAWyzD,GACnB,OAAOA,EAAOvrI,KAAKgB,KAAM/C,EAAO6B,GAGlC,GAAIsgF,EAAM1E,SAAS6vD,GACjB,OAAOA,EAAOh0G,KAAKt5B,GAGrB,MAAM,IAAI8gB,UAAU,yCACtB,CACF,CACF,CAEA,GAAA20B,CAAI4mJ,EAAQ7qE,GAGV,GAFA6qE,EAASD,GAAgBC,GAEb,CACV,MAAMx6L,EAAMsgF,EAAMy5B,QAAQ74G,KAAMs5L,GAEhC,SAAUx6L,QAAqBxB,IAAd0C,KAAKlB,IAAwB2vH,IAAW8qE,GAAiBv5L,EAAMA,KAAKlB,GAAMA,EAAK2vH,GAClG,CAEA,OAAO,CACT,CAEA,OAAO6qE,EAAQ7qE,GACb,MAAMzhF,EAAOhtC,KACb,IAAIq6L,GAAU,EAEd,SAASC,EAAaT,GAGpB,GAFAA,EAAUR,GAAgBQ,GAEb,CACX,MAAM/6L,EAAMsgF,EAAMy5B,QAAQ7rE,EAAM6sJ,IAE5B/6L,GAAS2vH,IAAW8qE,GAAiBvsJ,EAAMA,EAAKluC,GAAMA,EAAK2vH,YACtDzhF,EAAKluC,GAEZu7L,GAAU,EAEd,CACF,CAQA,OANIj7G,EAAM7gF,QAAQ+6L,GAChBA,EAAO11L,QAAQ02L,GAEfA,EAAahB,GAGRe,CACT,CAEA,KAAAn0I,CAAMuoE,GACJ,MAAM/lH,EAAO5L,OAAO4L,KAAK1I,MACzB,IAAIxB,EAAIkK,EAAKhK,OACT27L,GAAU,EAEd,KAAO77L,KAAK,CACV,MAAMM,EAAM4J,EAAKlK,GACbiwH,IAAW8qE,GAAiBv5L,EAAMA,KAAKlB,GAAMA,EAAK2vH,GAAS,YACtDzuH,KAAKlB,GACZu7L,GAAU,EAEd,CAEA,OAAOA,CACT,CAEA,SAAAz/G,CAAUxsE,GACR,MAAM4+B,EAAOhtC,KACPk9B,EAAU,CAAC,EAsBjB,OApBAkiD,EAAMx7E,QAAQ5D,MAAM,CAAC/C,EAAOq8L,KAC1B,MAAMx6L,EAAMsgF,EAAMy5B,QAAQ37E,EAASo8J,GAEnC,GAAIx6L,EAGF,OAFAkuC,EAAKluC,GAAOy0H,GAAet2H,eACpB+vC,EAAKssJ,GAId,MAAM9wE,EAAap6G,EA9JzB,SAAsBkrL,GACpB,OAAOA,EAAOloK,OACXrvB,cAAcgH,QAAQ,mBAAmB,CAAC+0E,EAAGhf,EAAMv0D,IAC3Cu0D,EAAKn0D,cAAgBJ,GAElC,CAyJkCgwL,CAAajB,GAAUxuL,OAAOwuL,GAAQloK,OAE9Do3F,IAAe8wE,UACVtsJ,EAAKssJ,GAGdtsJ,EAAKw7E,GAAc+K,GAAet2H,GAElCigC,EAAQsrF,IAAc,CAAI,IAGrBxoH,IACT,CAEA,MAAA2B,IAAU64L,GACR,OAAOx6L,KAAK9B,YAAYyD,OAAO3B,QAASw6L,EAC1C,CAEA,MAAA53J,CAAO63J,GACL,MAAM78L,EAAMd,OAAOo0F,OAAO,MAM1B,OAJA9R,EAAMx7E,QAAQ5D,MAAM,CAAC/C,EAAOq8L,KACjB,MAATr8L,IAA2B,IAAVA,IAAoBW,EAAI07L,GAAUmB,GAAar7G,EAAM7gF,QAAQtB,GAASA,EAAM4N,KAAK,MAAQ5N,EAAM,IAG3GW,CACT,CAEA,CAACI,OAAOC,YACN,OAAOnB,OAAOm4F,QAAQj1F,KAAK4iC,UAAU5kC,OAAOC,WAC9C,CAEA,QAAA4wC,GACE,OAAO/xC,OAAOm4F,QAAQj1F,KAAK4iC,UAAUp4B,KAAI,EAAE8uL,EAAQr8L,KAAWq8L,EAAS,KAAOr8L,IAAO4N,KAAK,KAC5F,CAEA,IAAK7M,OAAOwzF,eACV,MAAO,cACT,CAEA,WAAO7yF,CAAK4xL,GACV,OAAOA,aAAiBvwL,KAAOuwL,EAAQ,IAAIvwL,KAAKuwL,EAClD,CAEA,aAAO5uL,CAAOusE,KAAUssH,GACtB,MAAMhwK,EAAW,IAAIxqB,KAAKkuE,GAI1B,OAFAssH,EAAQ52L,SAASyZ,GAAWmN,EAASwT,IAAI3gB,KAElCmN,CACT,CAEA,eAAOkwK,CAASpB,GACd,MAIMqB,GAJY36L,KAAKo5L,IAAep5L,KAAKo5L,IAAc,CACvDuB,UAAW,CAAC,IAGcA,UACtBx8L,EAAY6B,KAAK7B,UAEvB,SAASy8L,EAAef,GACtB,MAAME,EAAUV,GAAgBQ,GAE3Bc,EAAUZ,MAtNrB,SAAwBn8L,EAAK07L,GAC3B,MAAMuB,EAAez7G,EAAMw0G,YAAY,IAAM0F,GAE7C,CAAC,MAAO,MAAO,OAAO11L,SAAQ0iG,IAC5BxpG,OAAOC,eAAea,EAAK0oG,EAAau0F,EAAc,CACpD59L,MAAO,SAAS69L,EAAMC,EAAMC,GAC1B,OAAOh7L,KAAKsmG,GAAYtnG,KAAKgB,KAAMs5L,EAAQwB,EAAMC,EAAMC,EACzD,EACAx9K,cAAc,GACd,GAEN,CA4MQy9K,CAAe98L,EAAW07L,GAC1Bc,EAAUZ,IAAW,EAEzB,CAIA,OAFA36G,EAAM7gF,QAAQ+6L,GAAUA,EAAO11L,QAAQg3L,GAAkBA,EAAetB,GAEjEt5L,IACT,EAGFy5L,GAAaiB,SAAS,CAAC,eAAgB,iBAAkB,SAAU,kBAAmB,aAAc,kBAGpGt7G,EAAMmyG,kBAAkBkI,GAAat7L,WAAW,EAAElB,SAAQ6B,KACxD,IAAImuG,EAASnuG,EAAI,GAAG6L,cAAgB7L,EAAI8L,MAAM,GAC9C,MAAO,CACLspB,IAAK,IAAMj3B,EACX,GAAA+gC,CAAIk9J,GACFl7L,KAAKitG,GAAUiuF,CACjB,EACF,IAGF97G,EAAMo0G,cAAciG,IAEpB,YC/Re,SAAS0B,GAAcz4B,EAAKt1I,GACzC,MAAMxM,EAAS5gB,MAAQ,GACjBqpB,EAAU+D,GAAYxM,EACtBsc,EAAU,GAAav+B,KAAK0qB,EAAQ6T,SAC1C,IAAIj4B,EAAOokB,EAAQpkB,KAQnB,OANAm6E,EAAMx7E,QAAQ8+J,GAAK,SAAmBjvG,GACpCxuD,EAAOwuD,EAAGz0D,KAAK4hB,EAAQ3b,EAAMi4B,EAAQ09C,YAAaxtD,EAAWA,EAASgf,YAAS9uC,EACjF,IAEA4/B,EAAQ09C,YAED31E,CACT,CCzBe,SAASm2L,GAASn+L,GAC/B,SAAUA,IAASA,EAAMo+L,WAC3B,CCUA,SAASC,GAActqK,EAASpQ,EAAQ2zK,GAEtC,EAAWv1L,KAAKgB,KAAiB,MAAXgxB,EAAkB,WAAaA,EAAS,EAAWuqK,aAAc36K,EAAQ2zK,GAC/Fv0L,KAAKT,KAAO,eACd,CAEA6/E,EAAMyzG,SAASyI,GAAe,EAAY,CACxCD,YAAY,IAGd,YCXe,SAASG,GAAO1rK,EAASC,EAAQ3C,GAC9C,MAAM6rK,EAAiB7rK,EAASxM,OAAOq4K,eAClC7rK,EAASgf,QAAW6sJ,IAAkBA,EAAe7rK,EAASgf,QAGjErc,EAAO,IAAI,EACT,mCAAqC3C,EAASgf,OAC9C,CAAC,EAAWqvJ,gBAAiB,EAAW7C,kBAAkBh1J,KAAK64C,MAAMrvD,EAASgf,OAAS,KAAO,GAC9Fhf,EAASxM,OACTwM,EAASmnK,QACTnnK,IAPF0C,EAAQ1C,EAUZ,CC4BA,SA9CA,SAAqBsuK,EAAcjuH,GACjCiuH,EAAeA,GAAgB,GAC/B,MAAMh6G,EAAQ,IAAIpjF,MAAMo9L,GAClBC,EAAa,IAAIr9L,MAAMo9L,GAC7B,IAEIE,EAFA7uF,EAAO,EACP31B,EAAO,EAKX,OAFA3J,OAAcnwE,IAARmwE,EAAoBA,EAAM,IAEzB,SAAcouH,GACnB,MAAMjqG,EAAMp2E,KAAKo2E,MAEXkqG,EAAYH,EAAWvkH,GAExBwkH,IACHA,EAAgBhqG,GAGlBlQ,EAAMqrB,GAAQ8uF,EACdF,EAAW5uF,GAAQnb,EAEnB,IAAIpzF,EAAI44E,EACJ2kH,EAAa,EAEjB,KAAOv9L,IAAMuuG,GACXgvF,GAAcr6G,EAAMljF,KACpBA,GAAQk9L,EASV,GANA3uF,GAAQA,EAAO,GAAK2uF,EAEhB3uF,IAAS31B,IACXA,GAAQA,EAAO,GAAKskH,GAGlB9pG,EAAMgqG,EAAgBnuH,EACxB,OAGF,MAAMuuH,EAASF,GAAalqG,EAAMkqG,EAElC,OAAOE,EAASp4J,KAAK0wE,MAAmB,IAAbynF,EAAoBC,QAAU1+L,CAC3D,CACF,ECTA,SArCA,SAAkBm2D,EAAIwoI,GACpB,IAEIntF,EACApkD,EAHAiwE,EAAY,EACZ9D,EAAY,IAAOolE,EAIvB,MAAMpqF,EAAS,CAACpyB,EAAMmS,EAAMp2E,KAAKo2E,SAC/B+oC,EAAY/oC,EACZkd,EAAW,KACPpkD,IACF1Q,aAAa0Q,GACbA,EAAQ,MAEV+I,EAAG9uD,MAAM,KAAM86E,EAAK,EAqBtB,MAAO,CAlBW,IAAIA,KACpB,MAAMmS,EAAMp2E,KAAKo2E,MACXoqG,EAASpqG,EAAM+oC,EAChBqhE,GAAUnlE,EACbhlB,EAAOpyB,EAAMmS,IAEbkd,EAAWrvB,EACN/0B,IACHA,EAAQ7qC,YAAW,KACjB6qC,EAAQ,KACRmnD,EAAO/C,EAAQ,GACd+nB,EAAYmlE,IAEnB,EAGY,IAAMltF,GAAY+C,EAAO/C,GAGzC,ECrCaotF,GAAuB,CAACC,EAAUC,EAAkBH,EAAO,KACtE,IAAII,EAAgB,EACpB,MAAMC,EAAe,GAAY,GAAI,KAErC,OAAO,IAAS93L,IACd,MAAMoyI,EAASpyI,EAAEoyI,OACXtpH,EAAQ9oB,EAAE+3L,iBAAmB/3L,EAAE8oB,WAAQhwB,EACvCk/L,EAAgB5lD,EAASylD,EACzBI,EAAOH,EAAaE,GAG1BH,EAAgBzlD,EAchBulD,EAZa,CACXvlD,SACAtpH,QACA8gB,SAAU9gB,EAASspH,EAAStpH,OAAShwB,EACrCokF,MAAO86G,EACPC,KAAMA,QAAcn/L,EACpBo/L,UAAWD,GAAQnvK,GAVLspH,GAAUtpH,GAUeA,EAAQspH,GAAU6lD,OAAOn/L,EAChEqL,MAAOnE,EACP+3L,iBAA2B,MAATjvK,EAClB,CAAC8uK,EAAmB,WAAa,WAAW,GAGhC,GACbH,EAAK,EAGGU,GAAyB,CAACrvK,EAAOsvK,KAC5C,MAAML,EAA4B,MAATjvK,EAEzB,MAAO,CAAEspH,GAAWgmD,EAAU,GAAG,CAC/BL,mBACAjvK,QACAspH,WACEgmD,EAAU,GAAG,EAGNC,GAAkBppI,GAAO,IAAIgsB,IAASL,EAAMgzG,MAAK,IAAM3+H,KAAMgsB,KCtC1E,GAAey4G,GAAShB,sBAItB,WACE,MAAM4F,EAAO5E,GAASt4C,WAAa,kBAAkB/gI,KAAKq5K,GAASt4C,UAAUC,WACvEk9C,EAAiB33L,SAAStF,cAAc,KAC9C,IAAIk9L,EAQJ,SAASC,EAAWh3K,GAClB,IAAIvB,EAAOuB,EAWX,OATI62K,IAEFC,EAAet6E,aAAa,OAAQ/9F,GACpCA,EAAOq4K,EAAer4K,MAGxBq4K,EAAet6E,aAAa,OAAQ/9F,GAG7B,CACLA,KAAMq4K,EAAer4K,KACrBm0C,SAAUkkI,EAAelkI,SAAWkkI,EAAelkI,SAAS9vD,QAAQ,KAAM,IAAM,GAChF8xD,KAAMkiI,EAAeliI,KACrB74C,OAAQ+6K,EAAe/6K,OAAS+6K,EAAe/6K,OAAOjZ,QAAQ,MAAO,IAAM,GAC3E+b,KAAMi4K,EAAej4K,KAAOi4K,EAAej4K,KAAK/b,QAAQ,KAAM,IAAM,GACpEiwD,SAAU+jI,EAAe/jI,SACzBC,KAAM8jI,EAAe9jI,KACrBp0C,SAAiD,MAAtCk4K,EAAel4K,SAASna,OAAO,GACxCqyL,EAAel4K,SACf,IAAMk4K,EAAel4K,SAE3B,CAUA,OARAm4K,EAAYC,EAAWh/K,OAAOwG,SAASC,MAQhC,SAAyBw4K,GAC9B,MAAMn+G,EAAUK,EAAM9d,SAAS47H,GAAeD,EAAWC,GAAcA,EACvE,OAAQn+G,EAAOlmB,WAAamkI,EAAUnkI,UAClCkmB,EAAOlkB,OAASmiI,EAAUniI,IAChC,CACD,CAlDD,GAsDS,WACL,OAAO,CACT,EC9DJ,GAAeq9H,GAAShB,sBAGtB,CACE,KAAAp5H,CAAMv+D,EAAMtC,EAAOkgM,EAASniG,EAAMne,EAAQugH,GACxC,MAAMC,EAAS,CAAC99L,EAAO,IAAMqlB,mBAAmB3nB,IAEhDmiF,EAAM/iB,SAAS8gI,IAAYE,EAAO93L,KAAK,WAAa,IAAIiW,KAAK2hL,GAASG,eAEtEl+G,EAAM9d,SAAS05B,IAASqiG,EAAO93L,KAAK,QAAUy1F,GAE9C5b,EAAM9d,SAASub,IAAWwgH,EAAO93L,KAAK,UAAYs3E,IAEvC,IAAXugH,GAAmBC,EAAO93L,KAAK,UAE/BH,SAASi4L,OAASA,EAAOxyL,KAAK,KAChC,EAEA,IAAA+hB,CAAKrtB,GACH,MAAMm7D,EAAQt1D,SAASi4L,OAAO3iI,MAAM,IAAIpkC,OAAO,aAAe/2B,EAAO,cACrE,OAAQm7D,EAAQlkC,mBAAmBkkC,EAAM,IAAM,IACjD,EAEA,MAAArjD,CAAO9X,GACLS,KAAK89D,MAAMv+D,EAAM,GAAIic,KAAKo2E,MAAQ,MACpC,GAMF,CACE,KAAA9zB,GAAS,EACTlxC,KAAI,IACK,KAET,MAAAvV,GAAU,GCxBC,SAASkmL,GAAcC,EAASC,GAC7C,OAAID,ICHG,8BAA8B3+K,KDGP4+K,GENjB,SAAqBD,EAASE,GAC3C,OAAOA,EACHF,EAAQz0L,QAAQ,SAAU,IAAM,IAAM20L,EAAY30L,QAAQ,OAAQ,IAClEy0L,CACN,CFGWG,CAAYH,EAASC,GAEvBA,CACT,CGfA,MAAMG,GAAmBrN,GAAUA,aAAiB,GAAe,IAAKA,GAAUA,EAWnE,SAASsN,GAAYC,EAASC,GAE3CA,EAAUA,GAAW,CAAC,EACtB,MAAMn9K,EAAS,CAAC,EAEhB,SAASo9K,EAAe3gL,EAAQwX,EAAQ89J,GACtC,OAAIvzG,EAAMghB,cAAc/iF,IAAW+hE,EAAMghB,cAAcvrE,GAC9CuqD,EAAM0yB,MAAM9yG,KAAK,CAAC2zL,YAAWt1K,EAAQwX,GACnCuqD,EAAMghB,cAAcvrE,GACtBuqD,EAAM0yB,MAAM,CAAC,EAAGj9E,GACduqD,EAAM7gF,QAAQs2B,GAChBA,EAAOjqB,QAETiqB,CACT,CAGA,SAASopK,EAAoBhzL,EAAG+4B,EAAG2uJ,GACjC,OAAKvzG,EAAM46B,YAAYh2E,GAEXo7C,EAAM46B,YAAY/uG,QAAvB,EACE+yL,OAAe1gM,EAAW2N,EAAG0nL,GAF7BqL,EAAe/yL,EAAG+4B,EAAG2uJ,EAIhC,CAGA,SAASuL,EAAiBjzL,EAAG+4B,GAC3B,IAAKo7C,EAAM46B,YAAYh2E,GACrB,OAAOg6J,OAAe1gM,EAAW0mC,EAErC,CAGA,SAASm6J,EAAiBlzL,EAAG+4B,GAC3B,OAAKo7C,EAAM46B,YAAYh2E,GAEXo7C,EAAM46B,YAAY/uG,QAAvB,EACE+yL,OAAe1gM,EAAW2N,GAF1B+yL,OAAe1gM,EAAW0mC,EAIrC,CAGA,SAASo6J,EAAgBnzL,EAAG+4B,EAAGn+B,GAC7B,OAAIA,KAAQk4L,EACHC,EAAe/yL,EAAG+4B,GAChBn+B,KAAQi4L,EACVE,OAAe1gM,EAAW2N,QAD5B,CAGT,CAEA,MAAMozL,EAAW,CACfp4K,IAAKi4K,EACL5qF,OAAQ4qF,EACRj5L,KAAMi5L,EACNV,QAASW,EACTtG,iBAAkBsG,EAClB1F,kBAAmB0F,EACnBG,iBAAkBH,EAClBx+E,QAASw+E,EACTI,eAAgBJ,EAChBK,gBAAiBL,EACjBM,cAAeN,EACfvG,QAASuG,EACT/wJ,aAAc+wJ,EACdtF,eAAgBsF,EAChBrF,eAAgBqF,EAChBO,iBAAkBP,EAClBQ,mBAAoBR,EACpBS,WAAYT,EACZpF,iBAAkBoF,EAClBnF,cAAemF,EACfU,eAAgBV,EAChB1xK,UAAW0xK,EACXW,UAAWX,EACXY,WAAYZ,EACZa,YAAab,EACbc,WAAYd,EACZe,iBAAkBf,EAClBlF,eAAgBmF,EAChBlhK,QAAS,CAACjyB,EAAG+4B,IAAMi6J,EAAoBL,GAAgB3yL,GAAI2yL,GAAgB55J,IAAI,IASjF,OANAo7C,EAAMx7E,QAAQ9G,OAAO4L,KAAK5L,OAAOiI,OAAO,CAAC,EAAG+4L,EAASC,KAAW,SAA4Bl4L,GAC1F,MAAMisG,EAAQusF,EAASx4L,IAASo4L,EAC1BkB,EAAcrtF,EAAMgsF,EAAQj4L,GAAOk4L,EAAQl4L,GAAOA,GACvDu5E,EAAM46B,YAAYmlF,IAAgBrtF,IAAUssF,IAAqBx9K,EAAO/a,GAAQs5L,EACnF,IAEOv+K,CACT,CChGA,SAAgBA,IACd,MAAMw+K,EAAYvB,GAAY,CAAC,EAAGj9K,GAElC,IAaI2F,GAbA,KAACthB,EAAI,cAAEw5L,EAAa,eAAE3F,EAAc,eAAED,EAAc,QAAE37J,EAAO,KAAE67B,GAAQqmI,EAe3E,GAbAA,EAAUliK,QAAUA,EAAU,GAAav+B,KAAKu+B,GAEhDkiK,EAAUn5K,IAAMgwK,GAASsH,GAAc6B,EAAU5B,QAAS4B,EAAUn5K,KAAMrF,EAAOoU,OAAQpU,EAAO09K,kBAG5FvlI,GACF77B,EAAQc,IAAI,gBAAiB,SAC3BgjD,MAAMjoB,EAAK42E,UAAY,IAAM,KAAO52E,EAAKsmI,SAAW/hF,SAAS14F,mBAAmBm0C,EAAKsmI,WAAa,MAMlGjgH,EAAMkzG,WAAWrtL,GACnB,GAAIizL,GAAShB,uBAAyBgB,GAASd,+BAC7Cl6J,EAAQ+6J,oBAAe36L,QAClB,IAAiD,KAA5CipB,EAAc2W,EAAQ46J,kBAA6B,CAE7D,MAAOp4L,KAASytB,GAAU5G,EAAcA,EAAY9d,MAAM,KAAK+B,KAAI0lB,GAASA,EAAMkB,SAAQptB,OAAOrE,SAAW,GAC5Gu9B,EAAQ+6J,eAAe,CAACv4L,GAAQ,yBAA0BytB,GAAQtiB,KAAK,MACzE,CAOF,GAAIqtL,GAAShB,wBACXuH,GAAiBr/G,EAAMtI,WAAW2nH,KAAmBA,EAAgBA,EAAcW,IAE/EX,IAAoC,IAAlBA,GAA2Ba,GAAgBF,EAAUn5K,MAAO,CAEhF,MAAMs5K,EAAYzG,GAAkBD,GAAkB2G,GAAQ5yK,KAAKisK,GAE/D0G,GACFriK,EAAQc,IAAI86J,EAAgByG,EAEhC,CAGF,OAAOH,CACR,EC1CD,GAFwD,oBAAnBjyJ,gBAEG,SAAUvsB,GAChD,OAAO,IAAIiP,SAAQ,SAA4BC,EAASC,GACtD,MAAM0vK,EAAU15E,GAAcnlG,GAC9B,IAAI8+K,EAAcD,EAAQx6L,KAC1B,MAAM06L,EAAiB,GAAahhM,KAAK8gM,EAAQviK,SAAS09C,YAC1D,IACIglH,EACAC,EAAiBC,EACjBC,EAAaC,GAHb,aAAC5yJ,EAAY,iBAAEsxJ,EAAgB,mBAAEC,GAAsBc,EAK3D,SAASp5L,IACP05L,GAAeA,IACfC,GAAiBA,IAEjBP,EAAQT,aAAeS,EAAQT,YAAY3rD,YAAYusD,GAEvDH,EAAQQ,QAAUR,EAAQQ,OAAOxyE,oBAAoB,QAASmyE,EAChE,CAEA,IAAIrL,EAAU,IAAIpnJ,eAOlB,SAAS+yJ,IACP,IAAK3L,EACH,OAGF,MAAM4L,EAAkB,GAAaxhM,KACnC,0BAA2B41L,GAAWA,EAAQ6L,yBAahD5E,IAAO,SAAkBv+L,GACvB6yB,EAAQ7yB,GACRoJ,GACF,IAAG,SAAiBS,GAClBipB,EAAOjpB,GACPT,GACF,GAfiB,CACfpB,KAHoBmoC,GAAiC,SAAjBA,GAA4C,SAAjBA,EACxCmnJ,EAAQnnK,SAA/BmnK,EAAQ8L,aAGRj0J,OAAQmoJ,EAAQnoJ,OAChBk0J,WAAY/L,EAAQ+L,WACpBpjK,QAASijK,EACTv/K,SACA2zK,YAYFA,EAAU,IACZ,CAlCAA,EAAQ7jK,KAAK+uK,EAAQnsF,OAAO3oG,cAAe80L,EAAQx5K,KAAK,GAGxDsuK,EAAQ50E,QAAU8/E,EAAQ9/E,QAiCtB,cAAe40E,EAEjBA,EAAQ2L,UAAYA,EAGpB3L,EAAQgM,mBAAqB,WACtBhM,GAAkC,IAAvBA,EAAQiM,aAQD,IAAnBjM,EAAQnoJ,QAAkBmoJ,EAAQkM,aAAwD,IAAzClM,EAAQkM,YAAY1/L,QAAQ,WAKjF8e,WAAWqgL,EACb,EAIF3L,EAAQmM,QAAU,WACXnM,IAILxkK,EAAO,IAAI,EAAW,kBAAmB,EAAW4wK,aAAc//K,EAAQ2zK,IAG1EA,EAAU,KACZ,EAGAA,EAAQzmD,QAAU,WAGhB/9G,EAAO,IAAI,EAAW,gBAAiB,EAAW6wK,YAAahgL,EAAQ2zK,IAGvEA,EAAU,IACZ,EAGAA,EAAQsM,UAAY,WAClB,IAAIC,EAAsBrB,EAAQ9/E,QAAU,cAAgB8/E,EAAQ9/E,QAAU,cAAgB,mBAC9F,MAAMg4E,EAAe8H,EAAQ9H,cAAgB,GACzC8H,EAAQqB,sBACVA,EAAsBrB,EAAQqB,qBAEhC/wK,EAAO,IAAI,EACT+wK,EACAnJ,EAAab,oBAAsB,EAAWiK,UAAY,EAAWJ,aACrE//K,EACA2zK,IAGFA,EAAU,IACZ,OAGgBj3L,IAAhBoiM,GAA6BC,EAAe1H,eAAe,MAGvD,qBAAsB1D,GACxBn1G,EAAMx7E,QAAQ+7L,EAAe/8J,UAAU,SAA0Bv+B,EAAKvF,GACpEy1L,EAAQyM,iBAAiBliM,EAAKuF,EAChC,IAIG+6E,EAAM46B,YAAYylF,EAAQjB,mBAC7BjK,EAAQiK,kBAAoBiB,EAAQjB,iBAIlCpxJ,GAAiC,SAAjBA,IAClBmnJ,EAAQnnJ,aAAeqyJ,EAAQryJ,cAI7BuxJ,KACAmB,EAAmBE,GAAiB9D,GAAqByC,GAAoB,GAC/EpK,EAAQrqE,iBAAiB,WAAY41E,IAInCpB,GAAoBnK,EAAQ1xG,UAC5Bg9G,EAAiBE,GAAe7D,GAAqBwC,GAEvDnK,EAAQ1xG,OAAOqnC,iBAAiB,WAAY21E,GAE5CtL,EAAQ1xG,OAAOqnC,iBAAiB,UAAW61E,KAGzCN,EAAQT,aAAeS,EAAQQ,UAGjCL,EAAa9pL,IACNy+K,IAGLxkK,GAAQja,GAAUA,EAAOpW,KAAO,IAAI,GAAc,KAAMkhB,EAAQ2zK,GAAWz+K,GAC3Ey+K,EAAQ0M,QACR1M,EAAU,KAAI,EAGhBkL,EAAQT,aAAeS,EAAQT,YAAY7rD,UAAUysD,GACjDH,EAAQQ,SACVR,EAAQQ,OAAOiB,QAAUtB,IAAeH,EAAQQ,OAAO/1E,iBAAiB,QAAS01E,KAIrF,MAAM/mI,ECvLK,SAAuB5yC,GACpC,MAAMy0C,EAAQ,4BAA4BnkC,KAAKtQ,GAC/C,OAAOy0C,GAASA,EAAM,IAAM,EAC9B,CDoLqBymI,CAAc1B,EAAQx5K,KAEnC4yC,IAAsD,IAA1Cq/H,GAASlmD,UAAUjxI,QAAQ83D,GACzC9oC,EAAO,IAAI,EAAW,wBAA0B8oC,EAAW,IAAK,EAAW4iI,gBAAiB76K,IAM9F2zK,EAAQ74I,KAAKgkJ,GAAe,KAC9B,GACF,EEvJA,GA1CuB,CAAC0B,EAASzhF,KAC/B,IAEIuhF,EAFAG,EAAa,IAAIC,gBAIrB,MAAMZ,EAAU,SAAU5qL,GACxB,IAAKorL,EAAS,CACZA,GAAU,EACV7tD,IACA,MAAMvsI,EAAMgP,aAAkBqxD,MAAQrxD,EAAS9V,KAAKuhM,OACpDF,EAAWJ,MAAMn6L,aAAe,EAAaA,EAAM,IAAI,GAAcA,aAAeqgE,MAAQrgE,EAAIkqB,QAAUlqB,GAC5G,CACF,EAEA,IAAI4jD,EAAQi1D,GAAW9/F,YAAW,KAChC6gL,EAAQ,IAAI,EAAW,WAAW/gF,mBAA0B,EAAWohF,WAAU,GAChFphF,GAEH,MAAM0zB,EAAc,KACd+tD,IACF12I,GAAS1Q,aAAa0Q,GACtBA,EAAQ,KACR02I,EAAQx9L,SAAQq8L,IACdA,IACCA,EAAOxyE,oBAAsBwyE,EAAOxyE,oBAAoB,QAASizE,GAAWT,EAAO5sD,YAAYqtD,GAAS,IAE3GU,EAAU,KACZ,EAGFA,EAAQx9L,SAASq8L,GAAWA,GAAUA,EAAO/1E,kBAAoB+1E,EAAO/1E,iBAAiB,QAASw2E,KAElG,MAAM,OAACT,GAAUoB,EAIjB,OAFApB,EAAO5sD,YAAcA,EAEd,CAAC4sD,EAAQ,KACdv1I,GAAS1Q,aAAa0Q,GACtBA,EAAQ,IAAI,EACZ,ECzCS82I,GAAc,UAAW7sF,EAAO8sF,GAC3C,IAAIzhI,EAAM20C,EAAMlc,WAEhB,IAAKgpG,GAAazhI,EAAMyhI,EAEtB,kBADM9sF,GAIR,IACIpnF,EADAo0C,EAAM,EAGV,KAAOA,EAAM3B,GACXzyC,EAAMo0C,EAAM8/H,QACN9sF,EAAM/pG,MAAM+2D,EAAKp0C,GACvBo0C,EAAMp0C,CAEV,EAQam0K,GAAc,CAACnhH,EAAQkhH,EAAWE,EAAYC,EAAUppI,KACnE,MAAMv6D,EAPiBy/J,gBAAiBt3D,EAAUq7F,EAAWjpI,GAC7D,UAAW,MAAMm8C,KAASvO,QACjBo7F,GAAY7/G,YAAY6wG,OAAO79E,GAASA,QAAen8C,EAAO1tD,OAAO6pG,IAAU8sF,EAE1F,CAGmBI,CAAUthH,EAAQkhH,EAAWjpI,GAE9C,IACInyD,EADAq7E,EAAQ,EAERogH,EAAat9L,IACV6B,IACHA,GAAO,EACPu7L,GAAYA,EAASp9L,GACvB,EAGF,OAAO,IAAIu9L,eAAe,CACxB,UAAM30F,CAAKi0F,GACT,IACE,MAAM,KAACh7L,EAAI,MAAEpJ,SAAegB,EAASmI,OAErC,GAAIC,EAGF,OAFDy7L,SACCT,EAAW16K,QAIb,IAAIq5C,EAAM/iE,EAAMw7F,WAChB,GAAIkpG,EAAY,CACd,IAAIK,EAActgH,GAAS1hB,EAC3B2hI,EAAWK,EACb,CACAX,EAAWY,QAAQ,IAAIhhH,WAAWhkF,GACpC,CAAE,MAAO6J,GAEP,MADAg7L,EAAUh7L,GACJA,CACR,CACF,EACAgP,OAAOyrL,IACLO,EAAUP,GACHtjM,EAAS8I,WAEjB,CACDm7L,cAAe,GAChB,ECvDGC,GAAoC,mBAAVnjK,OAA2C,mBAAZojK,SAA8C,mBAAbthH,SAC1FuhH,GAA4BF,IAA8C,mBAAnBJ,eAGvDO,GAAaH,KAA4C,mBAAhBI,aACzCxM,GAA0C,IAAIwM,YAAjCh4L,GAAQwrL,GAAQv9H,OAAOjuD,IACtCmzJ,MAAOnzJ,GAAQ,IAAI02E,iBAAiB,IAAIH,SAASv2E,GAAKw2E,gBADtD,IAAEg1G,GAIN,MAAMl3K,GAAO,CAAC40C,KAAOgsB,KACnB,IACE,QAAShsB,KAAMgsB,EACjB,CAAE,MAAOj7E,GACP,OAAO,CACT,GAGIg+L,GAAwBH,IAA6BxjL,IAAK,KAC9D,IAAI4jL,GAAiB,EAErB,MAAMC,EAAiB,IAAIN,QAAQlK,GAASj2G,OAAQ,CAClDqmE,KAAM,IAAIy5C,eACVzuF,OAAQ,OACR,UAAIqvF,GAEF,OADAF,GAAiB,EACV,MACT,IACCvlK,QAAQwV,IAAI,gBAEf,OAAO+vJ,IAAmBC,CAAc,IAKpCE,GAAyBP,IAC7BxjL,IAAK,IAAMugE,EAAM0xG,iBAAiB,IAAIhwG,SAAS,IAAIwnE,QAG/Cu6C,GAAY,CAChBtiH,OAAQqiH,IAA0B,CAAEtsH,GAAQA,EAAIgyE,OAG7B,IAAEhyE,GAAvB6rH,KAAuB7rH,GAOpB,IAAIwK,SANL,CAAC,OAAQ,cAAe,OAAQ,WAAY,UAAUl9E,SAAQlE,KAC3DmjM,GAAUnjM,KAAUmjM,GAAUnjM,GAAQ0/E,EAAMtI,WAAWR,GAAI52E,IAAU42E,GAAQA,EAAI52E,KAChF,CAACkwF,EAAGhvE,KACF,MAAM,IAAI,EAAW,kBAAkBlhB,sBAA0B,EAAWojM,gBAAiBliL,EAAO,EACrG,KAIP,MA0BMmiL,GAAoBrlC,MAAOxgI,EAASorH,KACxC,MAAM5pJ,EAAS0gF,EAAM00G,eAAe52J,EAAQ8lK,oBAE5C,OAAiB,MAAVtkM,EA7Bag/J,OAAOpV,GACf,MAARA,EACK,EAGNlpE,EAAMuxG,OAAOroC,GACPA,EAAKlmE,KAGXhD,EAAM60G,oBAAoB3rC,UACb,IAAI85C,QAAQ95C,GAAMvnE,eAAe0X,WAG9CrZ,EAAMmzG,kBAAkBjqC,IAASlpE,EAAM+L,cAAcm9D,GAC/CA,EAAK7vD,YAGXrZ,EAAMyxG,kBAAkBvoC,KACzBA,GAAc,IAGblpE,EAAM9d,SAASgnF,UACFg6C,GAAWh6C,IAAO7vD,gBADlC,GAQwBwqG,CAAc36C,GAAQ5pJ,CAAM,ECpFhDwkM,GAAgB,CACpBppI,KCNF,KDOEzsB,IAAKA,GACLrO,MDoFamjK,IAAoB,OAAQvhL,IACzC,IAAI,IACFqF,EAAG,OACHqtF,EAAM,KACNruG,EAAI,OACJg7L,EAAM,YACNjB,EAAW,QACXr/E,EAAO,mBACPg/E,EAAkB,iBAClBD,EAAgB,aAChBtxJ,EAAY,QACZlQ,EAAO,gBACPshK,EAAkB,cAAa,aAC/B2E,GACEp9E,GAAcnlG,GAElBwsB,EAAeA,GAAgBA,EAAe,IAAIrrC,cAAgB,OAElE,IAGIqhM,EAAU7O,GAHT8O,EAAgBC,GAAgBrD,GAAUjB,GAAer/E,EAC5D,GAAe,CAACsgF,EAAQjB,GAAcr/E,GAAW,GAInD,MAAMiiF,EAAW,MACdwB,GAAYvjL,YAAW,KACtBwjL,GAAkBA,EAAehwD,aAAa,IAGhD+vD,GAAW,CAAI,EAGjB,IAAIG,EAEJ,IACE,GACE7E,GAAoB8D,IAAoC,QAAXlvF,GAA+B,SAAXA,GACG,KAAnEiwF,QAA6BR,GAAkB7lK,EAASj4B,IACzD,CACA,IAMIu+L,EANAC,EAAW,IAAIrB,QAAQn8K,EAAK,CAC9BqtF,OAAQ,OACRg1C,KAAMrjJ,EACN09L,OAAQ,SASV,GAJIvjH,EAAMkzG,WAAWrtL,KAAUu+L,EAAoBC,EAASvmK,QAAQhJ,IAAI,kBACtEgJ,EAAQ+6J,eAAeuL,GAGrBC,EAASn7C,KAAM,CACjB,MAAOq5C,EAAY1xF,GAAS0sF,GAC1B4G,EACArH,GAAqBW,GAAe6B,KAGtCz5L,EAAOy8L,GAAY+B,EAASn7C,KA3GT,MA2GmCq5C,EAAY1xF,EAAOqyF,GAC3E,CACF,CAEKljH,EAAM9d,SAASk9H,KAClBA,EAAkBA,EAAkB,UAAY,QAKlD,MAAMkF,EAAyB,gBAAiBtB,QAAQjkM,UACxDo2L,EAAU,IAAI6N,QAAQn8K,EAAK,IACtBk9K,EACHlD,OAAQoD,EACR/vF,OAAQA,EAAO3oG,cACfuyB,QAASA,EAAQ09C,YAAYh4C,SAC7B0lH,KAAMrjJ,EACN09L,OAAQ,OACRgB,YAAaD,EAAyBlF,OAAkBlhM,IAG1D,IAAI8vB,QAAiB4R,MAAMu1J,GAE3B,MAAMqP,EAAmBhB,KAA4C,WAAjBx1J,GAA8C,aAAjBA,GAEjF,GAAIw1J,KAA2BjE,GAAsBiF,GAAmB,CACtE,MAAM77L,EAAU,CAAC,EAEjB,CAAC,SAAU,aAAc,WAAWnE,SAAQiC,IAC1CkC,EAAQlC,GAAQunB,EAASvnB,EAAK,IAGhC,MAAMg+L,EAAwBzkH,EAAM00G,eAAe1mK,EAAS8P,QAAQhJ,IAAI,oBAEjEytK,EAAY1xF,GAAS0uF,GAAsBhC,GAChDkH,EACA3H,GAAqBW,GAAe8B,IAAqB,KACtD,GAELvxK,EAAW,IAAI0zD,SACb4gH,GAAYt0K,EAASk7H,KAnJF,MAmJ4Bq5C,GAAY,KACzD1xF,GAASA,IACT2zF,GAAoBhC,GAAU,GAC7BU,IACHv6L,EAEJ,CAEAqlC,EAAeA,GAAgB,OAE/B,IAAI02J,QAAqBjB,GAAUzjH,EAAMy5B,QAAQgqF,GAAWz1J,IAAiB,QAAQhgB,EAAUxM,GAM/F,OAJCgjL,GAAoBhC,IAErB0B,GAAeA,UAEF,IAAIzzK,SAAQ,CAACC,EAASC,KACjCyrK,GAAO1rK,EAASC,EAAQ,CACtB9qB,KAAM6+L,EACN5mK,QAAS,GAAav+B,KAAKyuB,EAAS8P,SACpCkP,OAAQhf,EAASgf,OACjBk0J,WAAYlzK,EAASkzK,WACrB1/K,SACA2zK,WACD,GAEL,CAAE,MAAOztL,GAGP,GAFA86L,IAEI96L,GAAoB,cAAbA,EAAIvH,MAAwB,SAASsf,KAAK/X,EAAIkqB,SACvD,MAAMl0B,OAAOiI,OACX,IAAI,EAAW,gBAAiB,EAAW67L,YAAahgL,EAAQ2zK,GAChE,CACEO,MAAOhuL,EAAIguL,OAAShuL,IAK1B,MAAM,EAAWnI,KAAKmI,EAAKA,GAAOA,EAAI6xD,KAAM/3C,EAAQ2zK,EACtD,CACD,ICzNDn1G,EAAMx7E,QAAQs/L,IAAe,CAACzvI,EAAIx2D,KAChC,GAAIw2D,EAAI,CACN,IACE32D,OAAOC,eAAe02D,EAAI,OAAQ,CAACx2D,SACrC,CAAE,MAAOuH,GAET,CACA1H,OAAOC,eAAe02D,EAAI,cAAe,CAACx2D,SAC5C,KAGF,MAAM8mM,GAAgBxC,GAAW,KAAKA,IAEhCyC,GAAoBpM,GAAYx4G,EAAMtI,WAAW8gH,IAAwB,OAAZA,IAAgC,IAAZA,EAEvF,GACeqM,IACXA,EAAW7kH,EAAM7gF,QAAQ0lM,GAAYA,EAAW,CAACA,GAEjD,MAAM,OAACvlM,GAAUulM,EACjB,IAAIC,EACAtM,EAEJ,MAAMuM,EAAkB,CAAC,EAEzB,IAAK,IAAI3lM,EAAI,EAAGA,EAAIE,EAAQF,IAAK,CAE/B,IAAImmB,EAIJ,GALAu/K,EAAgBD,EAASzlM,GAGzBo5L,EAAUsM,GAELF,GAAiBE,KACpBtM,EAAUsL,IAAev+K,EAAK7Z,OAAOo5L,IAAgBniM,oBAErCzE,IAAZs6L,GACF,MAAM,IAAI,EAAW,oBAAoBjzK,MAI7C,GAAIizK,EACF,MAGFuM,EAAgBx/K,GAAM,IAAMnmB,GAAKo5L,CACnC,CAEA,IAAKA,EAAS,CAEZ,MAAMwM,EAAUtnM,OAAOm4F,QAAQkvG,GAC5B35L,KAAI,EAAEma,EAAI24C,KAAW,WAAW34C,OACpB,IAAV24C,EAAkB,sCAAwC,mCAG/D,IAAI75C,EAAI/kB,EACL0lM,EAAQ1lM,OAAS,EAAI,YAAc0lM,EAAQ55L,IAAIu5L,IAAcl5L,KAAK,MAAQ,IAAMk5L,GAAaK,EAAQ,IACtG,0BAEF,MAAM,IAAI,EACR,wDAA0D3gL,EAC1D,kBAEJ,CAEA,OAAOm0K,CAAO,EE3DlB,SAASyM,GAA6BzjL,GAKpC,GAJIA,EAAOo+K,aACTp+K,EAAOo+K,YAAYsF,mBAGjB1jL,EAAOq/K,QAAUr/K,EAAOq/K,OAAOiB,QACjC,MAAM,IAAI,GAAc,KAAMtgL,EAElC,CASe,SAAS2jL,GAAgB3jL,GACtCyjL,GAA6BzjL,GAE7BA,EAAOsc,QAAU,GAAav+B,KAAKiiB,EAAOsc,SAG1Ctc,EAAO3b,KAAOk2L,GAAcn8L,KAC1B4hB,EACAA,EAAOi3K,mBAGgD,IAArD,CAAC,OAAQ,MAAO,SAAS92L,QAAQ6f,EAAO0yF,SAC1C1yF,EAAOsc,QAAQ+6J,eAAe,qCAAqC,GAKrE,OAFgBgM,GAAoBrjL,EAAOg3K,SAAW,GAASA,QAExDA,CAAQh3K,GAAQkF,MAAK,SAA6BsH,GAYvD,OAXAi3K,GAA6BzjL,GAG7BwM,EAASnoB,KAAOk2L,GAAcn8L,KAC5B4hB,EACAA,EAAO63K,kBACPrrK,GAGFA,EAAS8P,QAAU,GAAav+B,KAAKyuB,EAAS8P,SAEvC9P,CACT,IAAG,SAA4Bm0K,GAe7B,OAdKnG,GAASmG,KACZ8C,GAA6BzjL,GAGzB2gL,GAAUA,EAAOn0K,WACnBm0K,EAAOn0K,SAASnoB,KAAOk2L,GAAcn8L,KACnC4hB,EACAA,EAAO63K,kBACP8I,EAAOn0K,UAETm0K,EAAOn0K,SAAS8P,QAAU,GAAav+B,KAAK4iM,EAAOn0K,SAAS8P,WAIzDrN,QAAQE,OAAOwxK,EACxB,GACF,CChFO,MAAM9jF,GAAU,QCKjB+mF,GAAa,CAAC,EAGpB,CAAC,SAAU,UAAW,SAAU,WAAY,SAAU,UAAU5gM,SAAQ,CAAClE,EAAMlB,KAC7EgmM,GAAW9kM,GAAQ,SAAmB6wL,GACpC,cAAcA,IAAU7wL,GAAQ,KAAOlB,EAAI,EAAI,KAAO,KAAOkB,CAC/D,CAAC,IAGH,MAAM+kM,GAAqB,CAAC,EAW5BD,GAAW7M,aAAe,SAAsBvsE,EAAW/rH,EAAS2xB,GAClE,SAAS0zK,EAAcx9H,EAAKy9H,GAC1B,MAAO,uCAAoDz9H,EAAM,IAAOy9H,GAAQ3zK,EAAU,KAAOA,EAAU,GAC7G,CAGA,MAAO,CAAC/zB,EAAOiqE,EAAKkR,KAClB,IAAkB,IAAdgzC,EACF,MAAM,IAAI,EACRs5E,EAAcx9H,EAAK,qBAAuB7nE,EAAU,OAASA,EAAU,KACvE,EAAWulM,gBAef,OAXIvlM,IAAYolM,GAAmBv9H,KACjCu9H,GAAmBv9H,IAAO,EAE1B/2C,QAAQ2vF,KACN4kF,EACEx9H,EACA,+BAAiC7nE,EAAU,8CAK1C+rH,GAAYA,EAAUnuH,EAAOiqE,EAAKkR,EAAY,CAEzD,EAmCA,UACEysH,cAxBF,SAAuB98L,EAASslB,EAAQy3K,GACtC,GAAuB,iBAAZ/8L,EACT,MAAM,IAAI,EAAW,4BAA6B,EAAWg9L,sBAE/D,MAAMr8L,EAAO5L,OAAO4L,KAAKX,GACzB,IAAIvJ,EAAIkK,EAAKhK,OACb,KAAOF,KAAM,GAAG,CACd,MAAM0oE,EAAMx+D,EAAKlK,GACX4sH,EAAY/9F,EAAO65C,GACzB,GAAIkkD,EAAJ,CACE,MAAMnuH,EAAQ8K,EAAQm/D,GAChBx+C,OAAmBprB,IAAVL,GAAuBmuH,EAAUnuH,EAAOiqE,EAAKn/D,GAC5D,IAAe,IAAX2gB,EACF,MAAM,IAAI,EAAW,UAAYw+C,EAAM,YAAcx+C,EAAQ,EAAWq8K,qBAG5E,MACA,IAAqB,IAAjBD,EACF,MAAM,IAAI,EAAW,kBAAoB59H,EAAK,EAAW89H,eAE7D,CACF,EAIER,eC9EI,GAAap5E,GAAUo5E,WAS7B,MAAMS,GACJ,WAAA/mM,CAAYgnM,GACVllM,KAAK+vF,SAAWm1G,EAChBllM,KAAKmlM,aAAe,CAClB5Q,QAAS,IAAI,GACbnnK,SAAU,IAAI,GAElB,CAUA,aAAMmnK,CAAQ6Q,EAAaxkL,GACzB,IACE,aAAa5gB,KAAKyjM,SAAS2B,EAAaxkL,EAC1C,CAAE,MAAO9Z,GACP,GAAIA,aAAeqgE,MAAO,CACxB,IAAIk+H,EAEJl+H,MAAMqtH,kBAAoBrtH,MAAMqtH,kBAAkB6Q,EAAQ,CAAC,GAAMA,EAAQ,IAAIl+H,MAG7E,MAAMwC,EAAQ07H,EAAM17H,MAAQ07H,EAAM17H,MAAM5gE,QAAQ,QAAS,IAAM,GAC/D,IACOjC,EAAI6iE,MAGEA,IAAU7+D,OAAOhE,EAAI6iE,OAAOx7B,SAASw7B,EAAM5gE,QAAQ,YAAa,OACzEjC,EAAI6iE,OAAS,KAAOA,GAHpB7iE,EAAI6iE,MAAQA,CAKhB,CAAE,MAAOnlE,GAET,CACF,CAEA,MAAMsC,CACR,CACF,CAEA,QAAA28L,CAAS2B,EAAaxkL,GAGO,iBAAhBwkL,GACTxkL,EAASA,GAAU,CAAC,GACbqF,IAAMm/K,EAEbxkL,EAASwkL,GAAe,CAAC,EAG3BxkL,EAASi9K,GAAY79L,KAAK+vF,SAAUnvE,GAEpC,MAAM,aAAC+2K,EAAY,iBAAE2G,EAAgB,QAAEphK,GAAWtc,OAE7BtjB,IAAjBq6L,GACFvsE,GAAUy5E,cAAclN,EAAc,CACpCf,kBAAmB,GAAWe,aAAa,GAAW2N,SACtDzO,kBAAmB,GAAWc,aAAa,GAAW2N,SACtDxO,oBAAqB,GAAWa,aAAa,GAAW2N,WACvD,GAGmB,MAApBhH,IACEl/G,EAAMtI,WAAWwnH,GACnB19K,EAAO09K,iBAAmB,CACxBnI,UAAWmI,GAGblzE,GAAUy5E,cAAcvG,EAAkB,CACxC9lI,OAAQ,GAAW+sI,SACnBpP,UAAW,GAAWoP,WACrB,IAKP3kL,EAAO0yF,QAAU1yF,EAAO0yF,QAAUtzG,KAAK+vF,SAASujB,QAAU,OAAOvxG,cAGjE,IAAIyjM,EAAiBtoK,GAAWkiD,EAAM0yB,MACpC50E,EAAQg8J,OACRh8J,EAAQtc,EAAO0yF,SAGjBp2E,GAAWkiD,EAAMx7E,QACf,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,QAAS,WACjD0vG,WACQp2E,EAAQo2E,EAAO,IAI1B1yF,EAAOsc,QAAU,GAAav7B,OAAO6jM,EAAgBtoK,GAGrD,MAAMuoK,EAA0B,GAChC,IAAIC,GAAiC,EACrC1lM,KAAKmlM,aAAa5Q,QAAQ3wL,SAAQ,SAAoCsqG,GACjC,mBAAxBA,EAAYwoF,UAA0D,IAAhCxoF,EAAYwoF,QAAQ91K,KAIrE8kL,EAAiCA,GAAkCx3F,EAAYuoF,YAE/EgP,EAAwB3hJ,QAAQoqD,EAAYqoF,UAAWroF,EAAYsoF,UACrE,IAEA,MAAMmP,EAA2B,GAKjC,IAAI35E,EAJJhsH,KAAKmlM,aAAa/3K,SAASxpB,SAAQ,SAAkCsqG,GACnEy3F,EAAyBpgM,KAAK2oG,EAAYqoF,UAAWroF,EAAYsoF,SACnE,IAGA,IACIx2H,EADAxhE,EAAI,EAGR,IAAKknM,EAAgC,CACnC,MAAM1+H,EAAQ,CAACu9H,GAAgBt4L,KAAKjM,WAAO1C,GAO3C,IANA0pE,EAAMljB,QAAQn/C,MAAMqiE,EAAOy+H,GAC3Bz+H,EAAMzhE,KAAKZ,MAAMqiE,EAAO2+H,GACxB3lI,EAAMgH,EAAMtoE,OAEZstH,EAAUn8F,QAAQC,QAAQlP,GAEnBpiB,EAAIwhE,GACTgsD,EAAUA,EAAQlmG,KAAKkhD,EAAMxoE,KAAMwoE,EAAMxoE,MAG3C,OAAOwtH,CACT,CAEAhsD,EAAMylI,EAAwB/mM,OAE9B,IAAI0gM,EAAYx+K,EAIhB,IAFApiB,EAAI,EAEGA,EAAIwhE,GAAK,CACd,MAAM4lI,EAAcH,EAAwBjnM,KACtCqnM,EAAaJ,EAAwBjnM,KAC3C,IACE4gM,EAAYwG,EAAYxG,EAC1B,CAAE,MAAO94K,GACPu/K,EAAW7mM,KAAKgB,KAAMsmB,GACtB,KACF,CACF,CAEA,IACE0lG,EAAUu4E,GAAgBvlM,KAAKgB,KAAMo/L,EACvC,CAAE,MAAO94K,GACP,OAAOuJ,QAAQE,OAAOzJ,EACxB,CAKA,IAHA9nB,EAAI,EACJwhE,EAAM2lI,EAAyBjnM,OAExBF,EAAIwhE,GACTgsD,EAAUA,EAAQlmG,KAAK6/K,EAAyBnnM,KAAMmnM,EAAyBnnM,MAGjF,OAAOwtH,CACT,CAEA,MAAA85E,CAAOllL,GAGL,OAAOq1K,GADUsH,IADjB38K,EAASi9K,GAAY79L,KAAK+vF,SAAUnvE,IACE48K,QAAS58K,EAAOqF,KAC5BrF,EAAOoU,OAAQpU,EAAO09K,iBAClD,EAIFl/G,EAAMx7E,QAAQ,CAAC,SAAU,MAAO,OAAQ,YAAY,SAA6B0vG,GAE/E2xF,GAAM9mM,UAAUm1G,GAAU,SAASrtF,EAAKrF,GACtC,OAAO5gB,KAAKu0L,QAAQsJ,GAAYj9K,GAAU,CAAC,EAAG,CAC5C0yF,SACArtF,MACAhhB,MAAO2b,GAAU,CAAC,GAAG3b,OAEzB,CACF,IAEAm6E,EAAMx7E,QAAQ,CAAC,OAAQ,MAAO,UAAU,SAA+B0vG,GAGrE,SAASyyF,EAAmBC,GAC1B,OAAO,SAAoB//K,EAAKhhB,EAAM2b,GACpC,OAAO5gB,KAAKu0L,QAAQsJ,GAAYj9K,GAAU,CAAC,EAAG,CAC5C0yF,SACAp2E,QAAS8oK,EAAS,CAChB,eAAgB,uBACd,CAAC,EACL//K,MACAhhB,SAEJ,CACF,CAEAggM,GAAM9mM,UAAUm1G,GAAUyyF,IAE1Bd,GAAM9mM,UAAUm1G,EAAS,QAAUyyF,GAAmB,EACxD,IAEA,YCxNA,MAAME,GACJ,WAAA/nM,CAAYgoM,GACV,GAAwB,mBAAbA,EACT,MAAM,IAAInoL,UAAU,gCAGtB,IAAIooL,EAEJnmM,KAAKgsH,QAAU,IAAIn8F,SAAQ,SAAyBC,GAClDq2K,EAAiBr2K,CACnB,IAEA,MAAMI,EAAQlwB,KAGdA,KAAKgsH,QAAQlmG,MAAKhQ,IAChB,IAAKoa,EAAMk2K,WAAY,OAEvB,IAAI5nM,EAAI0xB,EAAMk2K,WAAW1nM,OAEzB,KAAOF,KAAM,GACX0xB,EAAMk2K,WAAW5nM,GAAGsX,GAEtBoa,EAAMk2K,WAAa,IAAI,IAIzBpmM,KAAKgsH,QAAQlmG,KAAOugL,IAClB,IAAIC,EAEJ,MAAMt6E,EAAU,IAAIn8F,SAAQC,IAC1BI,EAAMijH,UAAUrjH,GAChBw2K,EAAWx2K,CAAO,IACjBhK,KAAKugL,GAMR,OAJAr6E,EAAQl2G,OAAS,WACfoa,EAAMmjH,YAAYizD,EACpB,EAEOt6E,CAAO,EAGhBk6E,GAAS,SAAgBl1K,EAASpQ,EAAQ2zK,GACpCrkK,EAAMqxK,SAKVrxK,EAAMqxK,OAAS,IAAI,GAAcvwK,EAASpQ,EAAQ2zK,GAClD4R,EAAej2K,EAAMqxK,QACvB,GACF,CAKA,gBAAA+C,GACE,GAAItkM,KAAKuhM,OACP,MAAMvhM,KAAKuhM,MAEf,CAMA,SAAApuD,CAAUgpD,GACJn8L,KAAKuhM,OACPpF,EAASn8L,KAAKuhM,QAIZvhM,KAAKomM,WACPpmM,KAAKomM,WAAW7gM,KAAK42L,GAErBn8L,KAAKomM,WAAa,CAACjK,EAEvB,CAMA,WAAA9oD,CAAY8oD,GACV,IAAKn8L,KAAKomM,WACR,OAEF,MAAM37L,EAAQzK,KAAKomM,WAAWrlM,QAAQo7L,IACvB,IAAX1xL,GACFzK,KAAKomM,WAAW1gL,OAAOjb,EAAO,EAElC,CAMA,aAAOoqB,GACL,IAAI/e,EAIJ,MAAO,CACLoa,MAJY,IAAI+1K,IAAY,SAAkBtmK,GAC9C7pB,EAAS6pB,CACX,IAGE7pB,SAEJ,EAGF,YCxHA,MAAMywL,GAAiB,CACrBC,SAAU,IACVC,mBAAoB,IACpBC,WAAY,IACZC,WAAY,IACZC,GAAI,IACJC,QAAS,IACTC,SAAU,IACVC,4BAA6B,IAC7BC,UAAW,IACXC,aAAc,IACdC,eAAgB,IAChBC,YAAa,IACbC,gBAAiB,IACjBC,OAAQ,IACRC,gBAAiB,IACjBC,iBAAkB,IAClBC,MAAO,IACPC,SAAU,IACVC,YAAa,IACbC,SAAU,IACVC,OAAQ,IACRC,kBAAmB,IACnBC,kBAAmB,IACnBC,WAAY,IACZC,aAAc,IACdC,gBAAiB,IACjBC,UAAW,IACXC,SAAU,IACVC,iBAAkB,IAClBC,cAAe,IACfC,4BAA6B,IAC7BC,eAAgB,IAChBC,SAAU,IACVC,KAAM,IACNC,eAAgB,IAChBC,mBAAoB,IACpBC,gBAAiB,IACjBC,WAAY,IACZC,qBAAsB,IACtBC,oBAAqB,IACrBC,kBAAmB,IACnBC,UAAW,IACXC,mBAAoB,IACpBC,oBAAqB,IACrBC,OAAQ,IACRC,iBAAkB,IAClBC,SAAU,IACVC,gBAAiB,IACjBC,qBAAsB,IACtBC,gBAAiB,IACjBC,4BAA6B,IAC7BC,2BAA4B,IAC5BC,oBAAqB,IACrBC,eAAgB,IAChBC,WAAY,IACZC,mBAAoB,IACpBC,eAAgB,IAChBC,wBAAyB,IACzBC,sBAAuB,IACvBC,oBAAqB,IACrBC,aAAc,IACdC,YAAa,IACbC,8BAA+B,KAGjCxtM,OAAOm4F,QAAQsxG,IAAgB3iM,SAAQ,EAAE9E,EAAK7B,MAC5CspM,GAAetpM,GAAS6B,CAAG,IAG7B,YCxBA,MAAMkxB,GAnBN,SAASu6K,EAAeC,GACtB,MAAMnhL,EAAU,IAAI,GAAMmhL,GACpB1sL,EAAW7R,EAAK,GAAM9N,UAAUo2L,QAASlrK,GAa/C,OAVA+1D,EAAM35E,OAAOqY,EAAU,GAAM3f,UAAWkrB,EAAS,CAAC6nK,YAAY,IAG9D9xG,EAAM35E,OAAOqY,EAAUuL,EAAS,KAAM,CAAC6nK,YAAY,IAGnDpzK,EAASozE,OAAS,SAAgBg0G,GAChC,OAAOqF,EAAe1M,GAAY2M,EAAetF,GACnD,EAEOpnL,CACT,CAGcysL,CAAe,IAG7Bv6K,GAAMi1K,MAAQ,GAGdj1K,GAAMsrK,cAAgB,GACtBtrK,GAAMi2K,YAAc,GACpBj2K,GAAMorK,SAAWA,GACjBprK,GAAMytF,QAAUA,GAChBztF,GAAMy6K,WAAa,GAGnBz6K,GAAMskK,WAAa,EAGnBtkK,GAAM06K,OAAS16K,GAAMsrK,cAGrBtrK,GAAM0zF,IAAM,SAAa2P,GACvB,OAAOxjG,QAAQ6zF,IAAI2P,EACrB,EAEArjG,GAAMgnF,OC9CS,SAAgB58E,GAC7B,OAAO,SAAc/7B,GACnB,OAAO+7B,EAASz1B,MAAM,KAAMtG,EAC9B,CACF,ED6CA2xB,GAAM26K,aE7DS,SAAsBC,GACnC,OAAOxrH,EAAMgV,SAASw2G,KAAsC,IAAzBA,EAAQD,YAC7C,EF8DA36K,GAAM6tK,YAAcA,GAEpB7tK,GAAMypK,aAAe,GAErBzpK,GAAM66K,WAAata,GAAS,GAAenxG,EAAMkyG,WAAWf,GAAS,IAAI9yJ,SAAS8yJ,GAASA,GAE3FvgK,GAAM86K,WAAa7G,GAEnBj0K,GAAMu2K,eAAiB,GAEvBv2K,GAAMlyB,QAAUkyB,GAGhB,cGvFI+6K,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqB3tM,IAAjB4tM,EACH,OAAOA,EAAaluM,QAGrB,IAAI+xD,EAASg8I,EAAyBE,GAAY,CACjDtmL,GAAIsmL,EACJr0D,QAAQ,EACR55I,QAAS,CAAC,GAUX,OANAmuM,EAAoBF,GAAUjsM,KAAK+vD,EAAO/xD,QAAS+xD,EAAQA,EAAO/xD,QAASguM,GAG3Ej8I,EAAO6nF,QAAS,EAGT7nF,EAAO/xD,OACf,CAGAguM,EAAoBp1I,EAAIu1I,E5Q5BpBtuM,EAAW,GACfmuM,EAAoB5mE,EAAI,CAAC17G,EAAQ0iL,EAAU33I,EAAI+0E,KAC9C,IAAG4iE,EAAH,CAMA,IAAIC,EAAehvG,IACnB,IAAS79F,EAAI,EAAGA,EAAI3B,EAAS6B,OAAQF,IAAK,CAGzC,IAFA,IAAK4sM,EAAU33I,EAAI+0E,GAAY3rI,EAAS2B,GACpC+3L,GAAY,EACPp7H,EAAI,EAAGA,EAAIiwI,EAAS1sM,OAAQy8D,MACpB,EAAXqtE,GAAsB6iE,GAAgB7iE,IAAa1rI,OAAO4L,KAAKsiM,EAAoB5mE,GAAGtqF,OAAOh7C,GAASksM,EAAoB5mE,EAAEtlI,GAAKssM,EAASjwI,MAC9IiwI,EAAS1lL,OAAOy1C,IAAK,IAErBo7H,GAAY,EACT/tD,EAAW6iE,IAAcA,EAAe7iE,IAG7C,GAAG+tD,EAAW,CACb15L,EAAS6oB,OAAOlnB,IAAK,GACrB,IAAI8iC,EAAImyB,SACEn2D,IAANgkC,IAAiB5Y,EAAS4Y,EAC/B,CACD,CACA,OAAO5Y,CAnBP,CAJC8/G,EAAWA,GAAY,EACvB,IAAI,IAAIhqI,EAAI3B,EAAS6B,OAAQF,EAAI,GAAK3B,EAAS2B,EAAI,GAAG,GAAKgqI,EAAUhqI,IAAK3B,EAAS2B,GAAK3B,EAAS2B,EAAI,GACrG3B,EAAS2B,GAAK,CAAC4sM,EAAU33I,EAAI+0E,EAqBjB,E6QzBdwiE,EAAoBtnL,EAAKqrC,IACxB,IAAIg5D,EAASh5D,GAAUA,EAAOlxD,WAC7B,IAAOkxD,EAAiB,QACxB,IAAM,EAEP,OADAi8I,EAAoBvqK,EAAEsnF,EAAQ,CAAE98G,EAAG88G,IAC5BA,CAAM,ECLdijF,EAAoBvqK,EAAI,CAACzjC,EAAS6+E,KACjC,IAAI,IAAI/8E,KAAO+8E,EACXmvH,EAAoBnqI,EAAEgb,EAAY/8E,KAASksM,EAAoBnqI,EAAE7jE,EAAS8B,IAC5EhC,OAAOC,eAAeC,EAAS8B,EAAK,CAAEye,YAAY,EAAM2W,IAAK2nD,EAAW/8E,IAE1E,ECNDksM,EAAoBxgH,EAAI,WACvB,GAA0B,iBAAfwlG,WAAyB,OAAOA,WAC3C,IACC,OAAOhwL,MAAQ,IAAIgC,SAAS,cAAb,EAChB,CAAE,MAAOwC,GACR,GAAsB,iBAAXyZ,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxB+sL,EAAoBM,IAAOv8I,KAC1BA,EAASjyD,OAAOo0F,OAAOniC,IACXjZ,WAAUiZ,EAAOjZ,SAAW,IACxCh5C,OAAOC,eAAegyD,EAAQ,UAAW,CACxCxxC,YAAY,EACZygB,IAAK,KACJ,MAAM,IAAImpC,MAAM,0FAA4FpY,EAAOpqC,GAAG,IAGjHoqC,GCTRi8I,EAAoBnqI,EAAI,CAACjjE,EAAKiI,IAAU/I,OAAOqB,UAAUY,eAAeC,KAAKpB,EAAKiI,GCClFmlM,EAAoB1pK,EAAKtkC,IACH,oBAAXgB,QAA0BA,OAAOwzF,aAC1C10F,OAAOC,eAAeC,EAASgB,OAAOwzF,YAAa,CAAEv0F,MAAO,WAE7DH,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,GAAO,ECL9D+tM,EAAoBO,IAAOx8I,IAC1BA,EAAOkoC,MAAQ,GACVloC,EAAOjZ,WAAUiZ,EAAOjZ,SAAW,IACjCiZ,SCER,IAAIy8I,EAAkB,CACrB,IAAK,EACL,IAAK,GAaNR,EAAoB5mE,EAAEjpE,EAAKswI,GAA0C,IAA7BD,EAAgBC,GAGxD,IAAIC,EAAuB,CAACC,EAA4B1mM,KACvD,IAGIgmM,EAAUQ,GAHTL,EAAUQ,EAAa/b,GAAW5qL,EAGhBzG,EAAI,EAC3B,GAAG4sM,EAAS/+J,MAAM1nB,GAAgC,IAAxB6mL,EAAgB7mL,KAAa,CACtD,IAAIsmL,KAAYW,EACZZ,EAAoBnqI,EAAE+qI,EAAaX,KACrCD,EAAoBp1I,EAAEq1I,GAAYW,EAAYX,IAGhD,GAAGpb,EAAS,IAAInnK,EAASmnK,EAAQmb,EAClC,CAEA,IADGW,GAA4BA,EAA2B1mM,GACrDzG,EAAI4sM,EAAS1sM,OAAQF,IACzBitM,EAAUL,EAAS5sM,GAChBwsM,EAAoBnqI,EAAE2qI,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAOT,EAAoB5mE,EAAE17G,EAAO,EAGjCmjL,EAAqB7+J,KAAmB,aAAIA,KAAmB,cAAK,GACxE6+J,EAAmBjoM,QAAQ8nM,EAAqBz/L,KAAK,KAAM,IAC3D4/L,EAAmBtmM,KAAOmmM,EAAqBz/L,KAAK,KAAM4/L,EAAmBtmM,KAAK0G,KAAK4/L,QC9CvFb,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,OACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,OACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,OACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,OACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,OACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnEA,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QACnE,IAAIc,EAAsBd,EAAoB5mE,OAAE9mI,EAAW,CAAC,MAAM,IAAO0tM,EAAoB,QAC7Fc,EAAsBd,EAAoB5mE,EAAE0nE","sources":["webpack:///webpack/runtime/chunk loaded","webpack:///../node_modules/@progress/kendo-base-components-vue-wrapper/dist/es/index.js","webpack:///../node_modules/@progress/kendo-base-components-vue-wrapper/dist/es/kendo-base-component/index.js","webpack:///../node_modules/@progress/kendo-base-components-vue-wrapper/dist/es/kendo-base-datasource-component/index.js","webpack:///../node_modules/@progress/kendo-base-components-vue-wrapper/dist/es/kendo-base-input-component/index.js","webpack:///../node_modules/@progress/kendo-base-components-vue-wrapper/dist/es/kendo-shared-methods/index.js","webpack:///../node_modules/@progress/kendo-grid-vue-wrapper/dist/es/KendoGridColumn/Columns.js","webpack:///../node_modules/@progress/kendo-grid-vue-wrapper/dist/es/KendoGridColumn/index.js","webpack:///../node_modules/@progress/kendo-grid-vue-wrapper/dist/es/KendoGridToolbar/Toolbar.js","webpack:///../node_modules/@progress/kendo-grid-vue-wrapper/dist/es/KendoGridToolbar/index.js","webpack:///../node_modules/@progress/kendo-grid-vue-wrapper/dist/es/KendoGrid/AllowCopy.js","webpack:///../node_modules/@progress/kendo-grid-vue-wrapper/dist/es/KendoGrid/ColumnMenu.js","webpack:///../node_modules/@progress/kendo-grid-vue-wrapper/dist/es/KendoGrid/Editable.js","webpack:///../node_modules/@progress/kendo-grid-vue-wrapper/dist/es/KendoGrid/Excel.js","webpack:///../node_modules/@progress/kendo-grid-vue-wrapper/dist/es/KendoGrid/Filterable.js","webpack:///../node_modules/@progress/kendo-grid-vue-wrapper/dist/es/KendoGrid/GridProps.js","webpack:///../node_modules/@progress/kendo-grid-vue-wrapper/dist/es/KendoGrid/Groupable.js","webpack:///../node_modules/@progress/kendo-grid-vue-wrapper/dist/es/KendoGrid/KendoGridMixin.js","webpack:///../node_modules/@progress/kendo-grid-vue-wrapper/dist/es/KendoGrid/Messages.js","webpack:///../node_modules/@progress/kendo-grid-vue-wrapper/dist/es/KendoGrid/NoRecords.js","webpack:///../node_modules/@progress/kendo-grid-vue-wrapper/dist/es/KendoGrid/Pageable.js","webpack:///../node_modules/@progress/kendo-grid-vue-wrapper/dist/es/KendoGrid/Pdf.js","webpack:///../node_modules/@progress/kendo-grid-vue-wrapper/dist/es/KendoGrid/Scrollable.js","webpack:///../node_modules/@progress/kendo-grid-vue-wrapper/dist/es/KendoGrid/Sortable.js","webpack:///../node_modules/@progress/kendo-grid-vue-wrapper/dist/es/KendoGrid/index.js","webpack:///../node_modules/@progress/kendo-grid-vue-wrapper/dist/es/index.js","webpack:///../node_modules/@progress/kendo-grid-vue-wrapper/dist/es/kendo-grid-installer/index.js","webpack:///../Source/Account/Login.js","webpack:///../Source/Actionbar/Actionbar.js","webpack:///../Source/Alerts/Alerts.js","webpack:///../Source/ArchivedAssets/Index.js","webpack:///../Source/AssetTypes/Add.js","webpack:///../Source/AssetTypes/AddOrEditField.js","webpack:///../Source/AssetTypes/Details.js","webpack:///../Source/AssetTypes/Edit.js","webpack:///../Source/AssetTypes/Index.js","webpack:///../Source/AssetTypes/SetDefaultRights.js","webpack:///../Source/AssetTypes/ToggleMeterReadingFields.js","webpack:///../Source/Bottom/Bottom.js","webpack:///../Source/Contracts/Add.js","webpack:///../Source/Contracts/Details.js","webpack:///../Source/Contracts/Edit.js","webpack:///../Source/Contracts/Index.js","webpack:///../Source/Dashboard/Index.js","webpack:///../Source/Dashboard/RequestNewLease.js","webpack:///../Source/Documents/Assets/Add.js","webpack:///../Source/Documents/Assets/Delete.js","webpack:///../Source/Documents/Assets/View.js","webpack:///../Source/Documents/Contracts/Add.js","webpack:///../Source/Documents/Contracts/Delete.js","webpack:///../Source/Documents/Contracts/Edit.js","webpack:///../Source/DownloadQr/DownloadQr.js","webpack:///../Source/Grid/GridConfiguration.js","webpack:///../Source/LeasedAssets/Add.js","webpack:///../Source/LeasedAssets/BulkEdit.js","webpack:///../Source/LeasedAssets/Details.js","webpack:///../Source/LeasedAssets/Edit.js","webpack:///../Source/LeasedAssets/Index.js","webpack:///../Source/LeasedAssets/Remove.js","webpack:///../Source/LeasedAssets/Request.js","webpack:///../Source/LeasedAssets/Termination.js","webpack:///../Source/LeasedAssets/Upload.js","webpack:///../Source/Lessees/Add.js","webpack:///../Source/Lessees/Details.js","webpack:///../Source/Lessees/Edit.js","webpack:///../Source/Lessees/Index.js","webpack:///../Source/ManageAccounts/Add.js","webpack:///../Source/ManageAccounts/AddAccountRequest.js","webpack:///../Source/ManageAccounts/ApprovalAccounts.js","webpack:///../Source/ManageAccounts/Details.js","webpack:///../Source/ManageAccounts/EditAccountSettings.js","webpack:///../Source/ManageAccounts/EditAvailableFunctions.js","webpack:///../Source/ManageAccounts/EditMailSettings.js","webpack:///../Source/ManageAccounts/Index.js","webpack:///../Source/ManageAccounts/Offboard.js","webpack:///../Source/ManageMailSettings/Edit.js","webpack:///../Source/ManageMailSettings/Export.js","webpack:///../Source/ManageMailSettings/Index.js","webpack:///../Source/ManageMembers/Add.js","webpack:///../Source/ManageMembers/Edit.js","webpack:///../Source/ManageMembers/Index.js","webpack:///../Source/ManagePreviews/ManagePreviews.js","webpack:///../Source/ManageRoles/Add.js","webpack:///../Source/ManageRoles/Edit.js","webpack:///../Source/ManageRoles/Index.js","webpack:///../Source/ManageUsers/Add.js","webpack:///../Source/ManageUsers/AddRequest.js","webpack:///../Source/ManageUsers/ApprovalUsers.js","webpack:///../Source/ManageUsers/Edit.js","webpack:///../Source/ManageUsers/Index.js","webpack:///../Source/MenuPrivate/DropdownPrivate.js","webpack:///../Source/MenuPublic/MenuPublic.js","webpack:///../Source/MeterReadings/Add.js","webpack:///../Source/MeterReadings/AddMobile.js","webpack:///../Source/MeterReadings/Delete.js","webpack:///../Source/MeterReadings/Edit.js","webpack:///../Source/MeterReadings/ReadingTypes.js","webpack:///../Source/MeterReadings/View.js","webpack:///../Source/NonLeasedAssets/Add.js","webpack:///../Source/NonLeasedAssets/BulkEdit.js","webpack:///../Source/NonLeasedAssets/Details.js","webpack:///../Source/NonLeasedAssets/Edit.js","webpack:///../Source/NonLeasedAssets/Index.js","webpack:///../Source/NonLeasedAssets/Upload.js","webpack:///../Source/PersonalSettings/Edit.js","webpack:///../Source/PersonalSettings/Index.js","webpack:///../Source/Portfolios/Add.js","webpack:///../Source/Portfolios/AddConnection.js","webpack:///../Source/Portfolios/AddUser.js","webpack:///../Source/Portfolios/Details.js","webpack:///../Source/Portfolios/Edit.js","webpack:///../Source/Portfolios/Index.js","webpack:///../Source/Portfolios/UserRights.js","webpack:///../Source/PreviewPhoto/PhotoSelector.js","webpack:///../Source/QueryableGrid/Grid.js","webpack:///../Source/RedirectModal/SelectCountry.js","webpack:///../Source/Service/ContactUs.js","webpack:///../Source/Service/CustomerSupport.js","webpack:///../node_modules/mdurl/lib/decode.mjs","webpack:///../node_modules/mdurl/lib/encode.mjs","webpack:///../node_modules/mdurl/lib/format.mjs","webpack:///../node_modules/mdurl/lib/parse.mjs","webpack:///../node_modules/uc.micro/categories/P/regex.mjs","webpack:///../node_modules/uc.micro/categories/S/regex.mjs","webpack:///../node_modules/uc.micro/properties/Any/regex.mjs","webpack:///../node_modules/uc.micro/categories/Cc/regex.mjs","webpack:///../node_modules/uc.micro/categories/Cf/regex.mjs","webpack:///../node_modules/uc.micro/categories/Z/regex.mjs","webpack:///../node_modules/entities/lib/esm/generated/decode-data-html.js","webpack:///../node_modules/entities/lib/esm/generated/decode-data-xml.js","webpack:///../node_modules/entities/lib/esm/decode_codepoint.js","webpack:///../node_modules/entities/lib/esm/decode.js","webpack:///../node_modules/entities/lib/esm/generated/encode-html.js","webpack:///../node_modules/entities/lib/esm/escape.js","webpack:///../node_modules/entities/lib/esm/index.js","webpack:///../node_modules/markdown-it/lib/common/utils.mjs","webpack:///../node_modules/markdown-it/lib/helpers/parse_link_label.mjs","webpack:///../node_modules/markdown-it/lib/helpers/parse_link_destination.mjs","webpack:///../node_modules/markdown-it/lib/helpers/parse_link_title.mjs","webpack:///../node_modules/markdown-it/lib/renderer.mjs","webpack:///../node_modules/markdown-it/lib/ruler.mjs","webpack:///../node_modules/markdown-it/lib/token.mjs","webpack:///../node_modules/markdown-it/lib/rules_core/state_core.mjs","webpack:///../node_modules/markdown-it/lib/rules_core/normalize.mjs","webpack:///../node_modules/markdown-it/lib/rules_core/linkify.mjs","webpack:///../node_modules/markdown-it/lib/rules_core/replacements.mjs","webpack:///../node_modules/markdown-it/lib/rules_core/smartquotes.mjs","webpack:///../node_modules/markdown-it/lib/parser_core.mjs","webpack:///../node_modules/markdown-it/lib/rules_core/block.mjs","webpack:///../node_modules/markdown-it/lib/rules_core/inline.mjs","webpack:///../node_modules/markdown-it/lib/rules_core/text_join.mjs","webpack:///../node_modules/markdown-it/lib/rules_block/state_block.mjs","webpack:///../node_modules/markdown-it/lib/rules_block/table.mjs","webpack:///../node_modules/markdown-it/lib/rules_block/list.mjs","webpack:///../node_modules/markdown-it/lib/common/html_blocks.mjs","webpack:///../node_modules/markdown-it/lib/common/html_re.mjs","webpack:///../node_modules/markdown-it/lib/rules_block/html_block.mjs","webpack:///../node_modules/markdown-it/lib/parser_block.mjs","webpack:///../node_modules/markdown-it/lib/rules_block/code.mjs","webpack:///../node_modules/markdown-it/lib/rules_block/fence.mjs","webpack:///../node_modules/markdown-it/lib/rules_block/blockquote.mjs","webpack:///../node_modules/markdown-it/lib/rules_block/hr.mjs","webpack:///../node_modules/markdown-it/lib/rules_block/reference.mjs","webpack:///../node_modules/markdown-it/lib/rules_block/heading.mjs","webpack:///../node_modules/markdown-it/lib/rules_block/lheading.mjs","webpack:///../node_modules/markdown-it/lib/rules_block/paragraph.mjs","webpack:///../node_modules/markdown-it/lib/rules_inline/state_inline.mjs","webpack:///../node_modules/markdown-it/lib/rules_inline/text.mjs","webpack:///../node_modules/markdown-it/lib/rules_inline/linkify.mjs","webpack:///../node_modules/markdown-it/lib/rules_inline/escape.mjs","webpack:///../node_modules/markdown-it/lib/rules_inline/strikethrough.mjs","webpack:///../node_modules/markdown-it/lib/rules_inline/emphasis.mjs","webpack:///../node_modules/markdown-it/lib/rules_inline/autolink.mjs","webpack:///../node_modules/markdown-it/lib/rules_inline/entity.mjs","webpack:///../node_modules/markdown-it/lib/rules_inline/balance_pairs.mjs","webpack:///../node_modules/markdown-it/lib/parser_inline.mjs","webpack:///../node_modules/markdown-it/lib/rules_inline/newline.mjs","webpack:///../node_modules/markdown-it/lib/rules_inline/backticks.mjs","webpack:///../node_modules/markdown-it/lib/rules_inline/link.mjs","webpack:///../node_modules/markdown-it/lib/rules_inline/image.mjs","webpack:///../node_modules/markdown-it/lib/rules_inline/html_inline.mjs","webpack:///../node_modules/markdown-it/lib/rules_inline/fragments_join.mjs","webpack:///../node_modules/linkify-it/index.mjs","webpack:///../node_modules/linkify-it/lib/re.mjs","webpack:///../node_modules/punycode.js/punycode.es6.js","webpack:///../node_modules/markdown-it/lib/index.mjs","webpack:///../node_modules/markdown-it/lib/presets/default.mjs","webpack:///../node_modules/markdown-it/lib/presets/zero.mjs","webpack:///../node_modules/markdown-it/lib/presets/commonmark.mjs","webpack:///../Source/Shared/content.js","webpack:///../Source/Shared/date-utils.js","webpack:///../Source/Shared/grid-utils.js","webpack:///../Source/Shared/qr-utils.js","webpack:///../Source/Shared/request-utils.js","webpack:///../Source/Shared/validate-utils.js","webpack:///../Source/UploadStatus/Index.js","webpack:///../node_modules/lodash/lodash.js","webpack:///../node_modules/vee-validate/dist/vee-validate.esm.js","webpack:///../node_modules/vue-select/dist/vue-select.js","webpack:///../node_modules/date-format-parse/es/util.js","webpack:///../node_modules/date-format-parse/es/locale/en.js","webpack:///../node_modules/date-format-parse/es/format.js","webpack:///../node_modules/date-format-parse/es/parse.js","webpack:///../node_modules/vue2-datepicker/index.esm.js","webpack:///../node_modules/vue/dist/vue.min.js","webpack:///../node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack:///../node_modules/@babel/runtime/helpers/typeof.js","webpack:///../node_modules/@babel/runtime/regenerator/index.js","webpack:///../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack:///../node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack:///../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack:///../node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack:///../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack:///../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack:///../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack:///../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack:///../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack:///../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack:///../node_modules/axios/lib/helpers/bind.js","webpack:///../node_modules/axios/lib/utils.js","webpack:///../node_modules/axios/lib/core/AxiosError.js","webpack:///../node_modules/axios/lib/helpers/toFormData.js","webpack:///../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","webpack:///../node_modules/axios/lib/helpers/buildURL.js","webpack:///../node_modules/axios/lib/core/InterceptorManager.js","webpack:///../node_modules/axios/lib/defaults/transitional.js","webpack:///../node_modules/axios/lib/platform/browser/index.js","webpack:///../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","webpack:///../node_modules/axios/lib/platform/browser/classes/FormData.js","webpack:///../node_modules/axios/lib/platform/browser/classes/Blob.js","webpack:///../node_modules/axios/lib/platform/common/utils.js","webpack:///../node_modules/axios/lib/platform/index.js","webpack:///../node_modules/axios/lib/helpers/formDataToJSON.js","webpack:///../node_modules/axios/lib/defaults/index.js","webpack:///../node_modules/axios/lib/helpers/toURLEncodedForm.js","webpack:///../node_modules/axios/lib/helpers/parseHeaders.js","webpack:///../node_modules/axios/lib/core/AxiosHeaders.js","webpack:///../node_modules/axios/lib/core/transformData.js","webpack:///../node_modules/axios/lib/cancel/isCancel.js","webpack:///../node_modules/axios/lib/cancel/CanceledError.js","webpack:///../node_modules/axios/lib/core/settle.js","webpack:///../node_modules/axios/lib/helpers/speedometer.js","webpack:///../node_modules/axios/lib/helpers/throttle.js","webpack:///../node_modules/axios/lib/helpers/progressEventReducer.js","webpack:///../node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///../node_modules/axios/lib/helpers/cookies.js","webpack:///../node_modules/axios/lib/core/buildFullPath.js","webpack:///../node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///../node_modules/axios/lib/helpers/combineURLs.js","webpack:///../node_modules/axios/lib/core/mergeConfig.js","webpack:///../node_modules/axios/lib/helpers/resolveConfig.js","webpack:///../node_modules/axios/lib/adapters/xhr.js","webpack:///../node_modules/axios/lib/helpers/parseProtocol.js","webpack:///../node_modules/axios/lib/helpers/composeSignals.js","webpack:///../node_modules/axios/lib/helpers/trackStream.js","webpack:///../node_modules/axios/lib/adapters/fetch.js","webpack:///../node_modules/axios/lib/adapters/adapters.js","webpack:///../node_modules/axios/lib/helpers/null.js","webpack:///../node_modules/axios/lib/core/dispatchRequest.js","webpack:///../node_modules/axios/lib/env/data.js","webpack:///../node_modules/axios/lib/helpers/validator.js","webpack:///../node_modules/axios/lib/core/Axios.js","webpack:///../node_modules/axios/lib/cancel/CancelToken.js","webpack:///../node_modules/axios/lib/helpers/HttpStatusCode.js","webpack:///../node_modules/axios/lib/axios.js","webpack:///../node_modules/axios/lib/helpers/spread.js","webpack:///../node_modules/axios/lib/helpers/isAxiosError.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/harmony module decorator","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/node module decorator","webpack:///webpack/runtime/jsonp chunk loading","webpack:///webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.KendoSharedMethods = exports.KendoBaseInputComponent = exports.KendoBaseDatasourceComponent = exports.KendoBaseComponent = undefined;\n\nvar _kendoBaseComponent = require('./kendo-base-component');\n\nvar _kendoBaseComponent2 = _interopRequireDefault(_kendoBaseComponent);\n\nvar _kendoBaseDatasourceComponent = require('./kendo-base-datasource-component');\n\nvar _kendoBaseDatasourceComponent2 = _interopRequireDefault(_kendoBaseDatasourceComponent);\n\nvar _kendoBaseInputComponent = require('./kendo-base-input-component');\n\nvar _kendoBaseInputComponent2 = _interopRequireDefault(_kendoBaseInputComponent);\n\nvar _kendoSharedMethods = require('./kendo-shared-methods');\n\nvar _kendoSharedMethods2 = _interopRequireDefault(_kendoSharedMethods);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.KendoBaseComponent = _kendoBaseComponent2.default;\nexports.KendoBaseDatasourceComponent = _kendoBaseDatasourceComponent2.default;\nexports.KendoBaseInputComponent = _kendoBaseInputComponent2.default;\nexports.KendoSharedMethods = _kendoSharedMethods2.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _vue = require('vue');\n\nvar aVue = _interopRequireWildcard(_vue);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar allVue = aVue;\nvar gh = allVue.h;\nvar isV3 = allVue.version && allVue.version[0] === '3';\nvar createApp = allVue.createApp;\nexports.default = {\n name: 'baseComponent',\n props: {\n disabled: {\n type: Boolean,\n default: undefined\n },\n readonly: {\n type: Boolean,\n default: undefined\n }\n },\n render: function render(createElement) {\n var h = gh || createElement;\n return h('div');\n },\n created: function created() {\n this.createdMethod();\n },\n\n beforeDestroy: gh ? undefined : function () {\n this.destroyKendoWidget();\n },\n beforeUnmount: function beforeUnmount() {\n this.destroyKendoWidget();\n },\n setup: function setup() {\n var v3 = isV3;\n return {\n v3: v3\n };\n },\n\n beforeMount: function beforeMount() {\n if (this.v3) {\n this.createdMethod();\n var defaultSlot = this.v3 && this.$slots.default && typeof this.$slots.default === 'function' ? this.$slots.default() : this.$slots.default;\n var hasDataSource = !this.$props.dataSource;\n if (hasDataSource && defaultSlot) {\n var innerDatasource = defaultSlot.find(function (slot) {\n return slot.type && slot.type.name && slot.type.name.indexOf('datasource') !== -1;\n });\n if (innerDatasource) {\n var dataSourceOptions = this.parseOptions(innerDatasource, innerDatasource.type.mixins[0].mixins);\n this.widgetOptions.dataSource = dataSourceOptions;\n }\n }\n }\n },\n updated: function updated() {\n if (this.modelValue) {\n this.changeValue(this.modelValue);\n }\n },\n mounted: function mounted() {\n if (this.$el.classList && this.$el.classList.length > 0) {\n this.nativeClasses = [].concat(_toConsumableArray(this.$el.classList));\n } else {\n this.nativeClasses = [];\n }\n var props = this.v3 ? this.$props : this.$options.propsData;\n for (var key in props) {\n var that = this;\n\n if (key.toLowerCase().indexOf('template') !== -1) {\n var isFunction = this.widgetOptions[key] instanceof Function;\n\n if (isFunction) {\n this.widgetOptions[key] = this.transformTemplate(key);\n }\n }\n\n if (key === 'value') {\n that.$watch(key, function (newValue) {\n that.changeValue(newValue);\n });\n } else if (key === 'disabled') {\n that.$watch(key, function (newValue) {\n that.makeDisabled(newValue);\n });\n } else if (key === 'readonly') {\n that.$watch(key, function (newValue) {\n that.makeReadonly(newValue);\n });\n } else {\n that.$watch(key, function (newValue, oldValue) {\n // Vue always dispatches a change when inline complex objects are bound\n // https://github.com/telerik/kendo-ui-core/issues/3952\n if (JSON.stringify(oldValue) !== JSON.stringify(newValue)) {\n that.updateWidget();\n }\n });\n }\n }\n },\n\n watch: {\n $attrs: function $attrs() {\n this.toggleClasses();\n }\n },\n methods: {\n createdMethod: function createdMethod() {\n this.resolveWidgetOptions();\n this.$_nativeTemplates = [];\n if (!this.v3) {\n this.$on('kendowidgetready', this.ready);\n }\n },\n destroyKendoWidget: function destroyKendoWidget() {\n if (this.kendoWidget() && this.kendoWidget().destroy) {\n this.kendoWidget().destroy();\n if (this.$_nativeTemplates.length) {\n for (var i = 0; i < this.$_nativeTemplates.length; i++) {\n var currentTemplate = this.$_nativeTemplates[i];\n if (currentTemplate.unmount) {\n currentTemplate.unmount();\n } else {\n currentTemplate.$destroy();\n }\n }\n }\n }\n },\n toggleClasses: function toggleClasses() {\n var that = this;\n var $element = kendo.jQuery(that.$el);\n var $wrapper = that.kendoWidget().wrapper;\n\n if ($wrapper && $wrapper[0] !== $element[0]) {\n that.nativeClasses.forEach(function (item) {\n $wrapper.removeClass(item);\n });\n\n // Add to wrapper only the custom classes without the default Kendo ones\n if (that.kendoClasses) {\n that.nativeClasses = [].concat(_toConsumableArray(that.$el.classList)).filter(function (item) {\n return that.kendoClasses.indexOf(item) < 0;\n });\n } else {\n that.nativeClasses = [].concat(_toConsumableArray(that.$el.classList));\n }\n\n that.nativeClasses.forEach(function (item) {\n $wrapper.addClass(item);\n });\n }\n\n if (that.kendoClasses) {\n that.kendoClasses.forEach(function (item) {\n $element.addClass(item);\n });\n }\n },\n updateWidget: function updateWidget() {\n var that = this;\n\n that.resolveWidgetOptions();\n\n if (that._resolveChildren) {\n that._resolveChildren();\n }\n\n var currentWidget = that.kendoWidget();\n\n if (currentWidget && currentWidget.setOptions) {\n currentWidget.setOptions(that.widgetOptions);\n }\n },\n\n transformTemplate: function transformTemplate(key, val) {\n var that = this;\n var object;\n var props = that.v3 ? that.$props : that.$options.propsData;\n var templateDefinition = val || props[key];\n try {\n object = templateDefinition.call(that, {});\n } catch (e) {\n return templateDefinition;\n }\n\n if (!object.template) {\n return templateDefinition;\n }\n\n return function () {\n object = templateDefinition.apply(this, arguments);\n var kendoguid;\n if (that.v3) {\n var newTemplateArgs = typeof object.templateArgs === 'string' ? object.templateArgs : Object.assign({}, object.templateArgs);\n var tempComponent = (0, createApp)(Object.assign({}, object.template, {\n data: function data() {\n return Object.assign({}, object.template.data ? object.template.data() : {}, {\n templateArgs: newTemplateArgs\n });\n }\n }));\n kendoguid = 'kendo' + kendo.guid();\n\n that.$nextTick(function () {\n if (document.getElementById(kendoguid)) {\n tempComponent.mount('#' + kendoguid);\n that.$_nativeTemplates.push(tempComponent);\n }\n });\n } else {\n var newVue = allVue.default.extend(object);\n var vueObject = new newVue(object.template);\n vueObject.$data.templateArgs = object.templateArgs;\n kendoguid = 'kendo' + kendo.guid();\n that.$nextTick(function () {\n if (document.getElementById(kendoguid)) {\n vueObject.$mount('#' + kendoguid);\n that.$_nativeTemplates.push(vueObject);\n }\n });\n }\n\n return '
';\n };\n },\n resolveChildren: function resolveChildren(prop, name) {\n var defaultSlot = this.v3 && this.$slots.default && typeof this.$slots.default === 'function' ? this.$slots.default() : this.$slots.default;\n if (!this.widgetOptions[prop] && defaultSlot) {\n var items = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = defaultSlot[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var childSlot = _step.value;\n\n if (childSlot.tag && childSlot.tag.indexOf(name) !== -1 || childSlot.type && childSlot.type.name && childSlot.type.name.toLowerCase().indexOf(name) !== -1) {\n var childInstance = this.v3 ? childSlot : childSlot.componentInstance;\n var itemOptions = this.parseOptions(childInstance);\n\n if (itemOptions.dataSourceRef) {\n this.setInnerDataSource('dataSourceRef', 'dataSource', itemOptions);\n }\n\n items.push(itemOptions);\n this.handleWatcher(childInstance);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n if (items.length) {\n this.widgetOptions[prop] = items;\n }\n }\n },\n handleWatcher: function handleWatcher(childInstance) {\n var that = this;\n childInstance.stashedPropsData = JSON.stringify(that.v3 ? childInstance.$props : childInstance.$options.propsData);\n\n if (!that.v3 && !childInstance._isWatchAttached) {\n childInstance.$watch('$props', function () {\n var props = that.v3 ? childInstance.$props : childInstance.$options.propsData;\n var propsAsJson = JSON.stringify(props);\n var needsUpdate = childInstance.stashedPropsData !== propsAsJson;\n\n if (that.updateWidget && needsUpdate) {\n that.updateWidget();\n } else if (that._resolveInnerChildren) {\n that._resolveInnerChildren();\n }\n\n childInstance.stashedPropsData = propsAsJson;\n }, { deep: true });\n\n childInstance._isWatchAttached = true;\n }\n },\n makeDisabled: function makeDisabled(toDisable) {\n if (this.kendoWidget().enable) {\n this.kendoWidget().enable(!toDisable);\n }\n },\n makeReadonly: function makeReadonly(value) {\n if (this.kendoWidget().readonly) {\n this.kendoWidget().readonly(value);\n }\n },\n changeValue: function changeValue(newValue) {\n if (this.kendoWidget().value) {\n this.kendoWidget().value(newValue);\n }\n },\n resolveWidgetOptions: function resolveWidgetOptions() {\n this.widgetOptions = this.parseOptions();\n },\n getListeners: function getListeners() {\n if (this.v3) {\n var listeners = {};\n for (var key in this.$attrs) {\n if (key.startsWith('on')) {\n listeners[key] = this.$attrs[key];\n }\n }\n\n return listeners;\n } else {\n return this.$listeners;\n }\n },\n parseOptions: function parseOptions(component, defaultMixins) {\n var _this = this;\n\n var that = component || this;\n var options = {};\n var props = this.v3 ? component ? that.props : that.$props : that.$options.propsData;\n\n var _loop = function _loop(_key) {\n propOptions = _this.v3 ? component ? undefined : (that.$options.__props ? that.$options.__props[0][_key] : that.$options.props[_key]) || that.$options.__props[0][0][_key] : that.$options.props[_key];\n val = props[_key];\n\n if (_this.v3 && _key.indexOf('-') !== -1) {\n _key = _this.camelize(_key);\n }\n\n compositeProps = propOptions ? propOptions.kComposite : undefined;\n\n\n if (that.v3 || _this.v3) {\n var mixins = component ? defaultMixins || component.type.mixins : that.$options.mixins;\n if (mixins) {\n mixins.forEach(function (mixin) {\n if (mixin.props && mixin.name !== 'baseComponent' && mixin.name !== 'baseDataSourceComponent' && mixin.props[_key] !== undefined && (that.$props ? that.$props[_key] !== undefined : true)) {\n compositeProps = mixin.props[_key].kComposite;\n }\n });\n }\n }\n\n if (!compositeProps) {\n if (_key.toLowerCase().indexOf('template') !== -1 && val instanceof Function) {\n options[_key] = _this.transformTemplate(_key, val);\n } else {\n if (val !== undefined) {\n options[_key] = val;\n }\n }\n } else {\n if (val !== undefined) {\n _this.addCompositeProperty(options, compositeProps.split('.'), val);\n }\n }\n key = _key;\n };\n\n for (var key in props) {\n var propOptions;\n var val;\n var compositeProps;\n\n _loop(key);\n }\n\n if (that.getListeners) {\n if (this.v3) {\n Object.keys(that.$attrs).forEach(function (event) {\n var listeners = that.getListeners();\n var eventName = _this.v3 ? event : event.toLowerCase();\n if (listeners && listeners[eventName]) {\n var kendoIndex = event.lastIndexOf('kendo');\n var kendoEvent;\n if (kendoIndex !== -1) {\n kendoEvent = event.replace('kendo', '').toLowerCase();\n }\n\n if (_this.v3 && event.indexOf('onKendo') !== -1) {\n kendoEvent = event.replace('onKendo', '').toLowerCase();\n }\n var kendoEventProp = Object.keys(that.$props).find(function (e) {\n return e.toLowerCase() === _this.removeOn(event);\n });\n options[kendoEvent || kendoEventProp || _this.removeOn(event)] = listeners[eventName];\n }\n });\n } else {\n Object.keys(that.$props).forEach(function (event) {\n var listeners = that.getListeners();\n if (listeners && listeners[event.toLowerCase()]) {\n var kendoIndex = event.lastIndexOf('kendo');\n var kendoEvent;\n if (kendoIndex !== -1) {\n kendoEvent = event.replace('kendo', '').toLowerCase();\n }\n\n options[kendoEvent || event] = listeners[event.toLowerCase()];\n }\n });\n }\n }\n\n if (this.v3 && this.$props.modelValue) {\n options.value = this.$props.modelValue;\n }\n\n return options;\n },\n addCompositeProperty: function addCompositeProperty(obj, keys, val) {\n var lastKey = keys.pop();\n var lastObj = keys.reduce(function (obj, key) {\n obj[key] = _typeof(obj[key]) === 'object' ? obj[key] || {} : {};\n return obj[key];\n }, obj);\n\n if (lastKey.toLowerCase().indexOf('template') !== -1 && val instanceof Function) {\n lastObj[lastKey] = this.transformTemplate(lastKey, val);\n } else {\n lastObj[lastKey] = val;\n }\n },\n resolveInnerTags: function resolveInnerTags(tagName) {\n var items = [];\n var defaultSlot = this.v3 && this.$slots.default && typeof this.$slots.default === 'function' ? this.$slots.default() : this.$slots.default;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = defaultSlot[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var childSlot = _step2.value;\n\n if (childSlot.tag && childSlot.tag.indexOf(tagName) !== -1 || childSlot.type && childSlot.type.name && childSlot.type.name.toLowerCase().indexOf(tagName) !== -1) {\n var childOptions = childSlot.componentOptions;\n var childInstance = this.v3 ? childSlot : childSlot.componentInstance;\n var item = this.v3 ? childInstance.$props || childInstance.props : childOptions.propsData;\n\n if (this.v3) {\n var itemKeys = Object.keys(item);\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = itemKeys[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var propKey = _step3.value;\n\n if (propKey.indexOf('-') !== -1) {\n item[this.camelize(propKey)] = item[propKey];\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n\n if (!item.items) {\n item.items = childInstance.subitems;\n }\n\n items.push(item);\n this.handleWatcher(childInstance);\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return items;\n },\n ready: function ready() {\n var that = this;\n\n if (this.$el.classList.length > 0) {\n that.kendoClasses = [].concat(_toConsumableArray(that.$el.classList)).filter(function (item) {\n return that.nativeClasses.indexOf(item) < 0;\n });\n }\n var props = that.v3 ? that.$props : that.$options.propsData;\n if (props && props.disabled) {\n that.makeDisabled(true);\n }\n\n if (props && props.readonly) {\n that.makeReadonly(true);\n }\n },\n camelize: function camelize(str) {\n var arr = str.split('-');\n var capital = arr.map(function (item, index) {\n return index ? item.charAt(0).toUpperCase() + item.slice(1).toLowerCase() : item;\n });\n var capitalString = capital.join('');\n\n return capitalString;\n },\n removeOn: function removeOn(str) {\n\n if (str.indexOf('onKendo') !== -1) {\n return str.replace('onKendo', '').toLowerCase();\n }\n\n return str.replace('on', '').toLowerCase();\n }\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n name: 'baseDataSourceComponent',\n props: {\n dataSourceRef: {\n type: String,\n default: undefined\n }\n },\n render: function render(h) {\n return h('div');\n },\n\n methods: {\n findDataSource: function findDataSource() {\n var dataSource;\n if (this.$children) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = this.$children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var a = _step.value;\n\n if (this.$children.length && a.kendoDataSource) {\n dataSource = a.kendoDataSource;\n break;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n return dataSource;\n },\n setInnerDataSource: function setInnerDataSource() {\n var dataSourceRefProp = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'dataSourceRef';\n var rootProp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'dataSource';\n var subProp = arguments[2];\n\n var innerDataSource = this.findDataSource();\n\n if (innerDataSource) {\n if (!subProp) {\n this.widgetOptions[rootProp] = innerDataSource;\n } else {\n subProp[rootProp] = innerDataSource;\n }\n } else {\n var refString = subProp ? subProp[dataSourceRefProp] : this[dataSourceRefProp];\n var referredDataSource = this.getParentsRef(refString);\n\n if (referredDataSource) {\n this.attachEvents(referredDataSource);\n if (!subProp) {\n this.widgetOptions[rootProp] = referredDataSource.kendoDataSource;\n } else {\n subProp[rootProp] = referredDataSource.kendoDataSource;\n }\n }\n }\n },\n getParentsRef: function getParentsRef(anchor) {\n var parent = this.$parent;\n\n while (parent && !parent.$refs[anchor]) {\n parent = parent.$parent;\n }\n\n return parent ? parent.$refs[anchor] : undefined;\n },\n setDataSource: function setDataSource(newValue) {\n var newDataSourceRef = this.getParentsRef(newValue);\n var kendoWidget = this.kendoWidget();\n\n if (kendoWidget.setDataSource && newDataSourceRef) {\n kendoWidget.setDataSource(newDataSourceRef.kendoDataSource);\n } else if (kendoWidget.setDataSource) {\n kendoWidget.setDataSource(newValue);\n }\n },\n attachEvents: function attachEvents(referredDataSource) {\n if (referredDataSource.kendoDataSource) {\n referredDataSource.kendoDataSource.bind('change', function (ev) {\n if (referredDataSource.getListeners()['change']) {\n referredDataSource.$emit('change', ev);\n }\n });\n\n referredDataSource.kendoDataSource.bind('error', function (ev) {\n if (referredDataSource.getListeners()['error']) {\n referredDataSource.$emit('error', ev);\n }\n });\n\n referredDataSource.kendoDataSource.bind('push', function (ev) {\n if (referredDataSource.getListeners()['push']) {\n referredDataSource.$emit('push', ev);\n }\n });\n\n referredDataSource.kendoDataSource.bind('requestEnd', function (ev) {\n if (referredDataSource.getListeners()['requestend']) {\n referredDataSource.$emit('requestend', ev);\n }\n });\n\n referredDataSource.kendoDataSource.bind('requestStart', function (ev) {\n if (referredDataSource.getListeners()['requeststart']) {\n referredDataSource.$emit('requeststart', ev);\n }\n });\n\n referredDataSource.kendoDataSource.bind('sync', function (ev) {\n if (referredDataSource.getListeners()['sync']) {\n referredDataSource.$emit('sync', ev);\n }\n });\n }\n }\n },\n mounted: function mounted() {\n var that = this;\n\n that.$watch('dataSourceRef', function (newValue) {\n that.setDataSource(newValue);\n });\n that.$watch('dataSource', function (newValue) {\n that.setDataSource(newValue);\n });\n\n that.setInnerDataSource();\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _vue = require('vue');\n\nvar Vue = _interopRequireWildcard(_vue);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar allVue = Vue; // @ts-ignore\n\nvar gh = allVue.h;\nexports.default = {\n render: function render(createElement) {\n var h = gh || createElement;\n return h('input', {\n ref: 'valueInput',\n props: {\n value: this.value\n }\n });\n },\n\n model: {\n event: 'changemodel'\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n methods: {\n resolveInnerTags: function resolveInnerTags(tagName) {\n var items = [];\n var defaultSlot = this.v3 && this.$slots.default && typeof this.$slots.default === 'function' ? this.$slots.default() : this.$slots.default;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = defaultSlot[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var childSlot = _step.value;\n\n if (childSlot.tag && childSlot.tag.indexOf(tagName) !== -1 || childSlot.type && childSlot.type.name && childSlot.type.name.toLowerCase().indexOf(tagName) !== -1) {\n var childOptions = childSlot.componentOptions;\n var childInstance = this.v3 ? childSlot : childSlot.componentInstance;\n var item = this.v3 ? childInstance.$props || childInstance.props : childOptions.propsData;\n\n if (this.v3) {\n var itemKeys = Object.keys(item);\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = itemKeys[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var propKey = _step2.value;\n\n if (propKey.indexOf('-') !== -1) {\n item[this.camelize(propKey)] = item[propKey];\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n\n if (!item.items) {\n item.items = childInstance.subitems;\n }\n\n items.push(item);\n this.handleWatcher(childInstance);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return items;\n },\n handleWatcher: function handleWatcher(childInstance) {\n var that = this;\n\n if (!childInstance._isWatchAttached && childInstance.$watch) {\n childInstance.$watch('$props', function () {\n if (that.updateWidget) {\n that.updateWidget();\n } else if (that._resolveInnerChildren) {\n that._resolveInnerChildren();\n }\n }, { deep: true });\n\n childInstance._isWatchAttached = true;\n }\n },\n camelize: function camelize(str) {\n var arr = str.split('-');\n var capital = arr.map(function (item, index) {\n return index ? item.charAt(0).toUpperCase() + item.slice(1).toLowerCase() : item;\n });\n var capitalString = capital.join('');\n\n return capitalString;\n }\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n props: {\n aggregates: Array,\n attributes: Object,\n columns: Array,\n command: String | Array,\n editable: Function,\n editor: Function,\n encoded: Boolean,\n field: String,\n filterable: Boolean | Object,\n filterableCellDataSource: {\n type: Object,\n default: undefined,\n kComposite: 'filterable.cell.dataSource'\n },\n filterableCellDataTextField: {\n type: String,\n default: undefined,\n kComposite: 'filterable.cell.dataTextField'\n },\n filterableCellDelay: {\n type: Number,\n default: undefined,\n kComposite: 'filterable.cell.delay'\n },\n filterableCellInputWidth: {\n type: Number,\n default: undefined,\n kComposite: 'filterable.cell.inputWidth'\n },\n filterableCellSuggestionOperator: {\n type: String,\n default: undefined,\n kComposite: 'filterable.cell.suggestionOperator'\n },\n filterableCellMinLength: {\n type: Number,\n default: undefined,\n kComposite: 'filterable.cell.minLength'\n },\n filterableCellEnabled: {\n type: Boolean,\n default: undefined,\n kComposite: 'filterable.cell.enabled'\n },\n filterableCellOperator: {\n type: String,\n default: undefined,\n kComposite: 'filterable.cell.operator'\n },\n filterableCellShowOperators: {\n type: Boolean,\n default: undefined,\n kComposite: 'filterable.cell.showOperators'\n },\n filterableCellTemplate: {\n type: Function,\n default: undefined,\n kComposite: 'filterable.cell.template'\n },\n filterableMulti: {\n type: Boolean,\n default: undefined,\n kComposite: 'filterable.multi'\n },\n filterableDataSource: {\n type: [Object, Array],\n default: undefined,\n kComposite: 'filterable.dataSource'\n },\n filterableCheckAll: {\n type: Boolean,\n default: undefined,\n kComposite: 'filterable.checkAll'\n },\n filterableItemTemplate: {\n type: Function,\n default: undefined,\n kComposite: 'filterable.itemTemplate'\n },\n filterableOperators: {\n type: Object,\n default: undefined,\n kComposite: 'filterable.operators'\n },\n filterableSearch: {\n type: Boolean,\n default: undefined,\n kComposite: 'filterable.search'\n },\n filterableIgnoreCase: {\n type: Boolean,\n default: undefined,\n kComposite: 'filterable.ignoreCase'\n },\n filterableUi: {\n type: [String, Function],\n default: undefined,\n kComposite: 'filterable.ui'\n },\n footerAttributes: {\n type: Object,\n default: undefined,\n kComposite: 'footerAttributes'\n },\n footerTemplate: {\n type: [String, Function],\n default: undefined,\n kComposite: 'footerTemplate'\n },\n format: String,\n groupable: Boolean | Object,\n groupableSortCompare: {\n type: Function,\n default: undefined,\n kComposite: 'groupable.sort.compare'\n },\n groupableSortDir: {\n type: String,\n default: undefined,\n kComposite: 'groupable.sort.dir'\n },\n groupHeaderTemplate: {\n type: [String, Function],\n default: undefined,\n kComposite: 'groupHeaderTemplate'\n },\n groupHeaderColumnTemplate: {\n type: [String, Function],\n default: undefined,\n kComposite: 'groupHeaderColumnTemplate'\n },\n groupFooterTemplate: {\n type: [String, Function],\n default: undefined,\n kComposite: 'groupFooterTemplate'\n },\n headerAttributes: {\n type: Object,\n default: undefined,\n kComposite: 'headerAttributes'\n },\n headerTemplate: {\n type: [String, Function],\n default: undefined,\n kComposite: 'headerTemplate'\n },\n hidden: {\n type: Boolean,\n default: undefined,\n kComposite: 'hidden'\n },\n locked: Boolean,\n lockable: Boolean,\n media: String,\n minResizableWidth: {\n type: Number,\n default: undefined,\n kComposite: 'minResizableWidth'\n },\n minScreenWidth: {\n type: Number,\n default: undefined,\n kComposite: 'minScreenWidth'\n },\n selectable: Boolean,\n sortable: Boolean,\n sortableCompare: {\n type: Function,\n default: undefined,\n kComposite: 'sortable.compare'\n },\n sortableInitialDirection: {\n type: String,\n default: undefined,\n kComposite: 'sortable.initialDirection'\n },\n template: String | Function,\n title: String,\n width: String | Number,\n values: Array,\n menu: Boolean\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Columns = require('./Columns');\n\nvar _Columns2 = _interopRequireDefault(_Columns);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar KendoGridColumn = {\n name: 'kendo-grid-column',\n render: function render() {\n return null;\n },\n\n mixins: [_Columns2.default]\n};\n\nexports.default = KendoGridColumn;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n props: {\n iconClass: {\n type: String,\n default: undefined,\n kComposite: 'iconClass'\n },\n name: {\n type: String,\n default: undefined,\n kComposite: 'name'\n },\n template: {\n type: [String, Function],\n default: undefined,\n kComposite: 'template'\n },\n text: {\n type: String,\n default: undefined,\n kComposite: 'text'\n }\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Toolbar = require('./Toolbar');\n\nvar _Toolbar2 = _interopRequireDefault(_Toolbar);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar KendoGridToolbar = {\n name: 'kendo-grid-toolbar-item',\n render: function render() {\n return null;\n },\n\n mixins: [_Toolbar2.default]\n};\n\nexports.default = KendoGridToolbar;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n props: {\n allowCopyDelimeter: {\n type: String | Object,\n default: undefined,\n kComposite: 'allowCopy.delimeter'\n }\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n props: {\n columnMenuColumns: {\n type: Boolean,\n default: undefined,\n kComposite: 'columnMenu.columns'\n },\n columnMenuFilterable: {\n type: Boolean,\n default: undefined,\n kComposite: 'columnMenu.filterable'\n },\n columnMenuSortable: {\n type: Boolean,\n default: undefined,\n kComposite: 'columnMenu.sortable'\n },\n columnMenuMessagesColumns: {\n type: String,\n default: undefined,\n kComposite: 'columnMenu.messages.columns'\n },\n columnMenuMessagesFilter: {\n type: String,\n default: undefined,\n kComposite: 'columnMenu.messages.filter'\n },\n columnMenuMessagesSortAscending: {\n type: String,\n default: undefined,\n kComposite: 'columnMenu.messages.sortAscending'\n },\n columnMenuMessagesSortDescending: {\n type: String,\n default: undefined,\n kComposite: 'columnMenu.messages.sortDescending'\n },\n columnMenuMessagesSettings: {\n type: String,\n default: undefined,\n kComposite: 'columnMenu.messages.settings'\n },\n columnMenuMessagesDone: {\n type: String,\n default: undefined,\n kComposite: 'columnMenu.messages.done'\n },\n columnMenuMessagesLock: {\n type: String,\n default: undefined,\n kComposite: 'columnMenu.messages.lock'\n },\n columnMenuMessagesUnlock: {\n type: String,\n default: undefined,\n kComposite: 'columnMenu.messages.unlock'\n }\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n props: {\n editableConfirmation: {\n type: [Boolean, String, Function],\n default: undefined,\n kComposite: 'editable.confirmation'\n },\n editableCancelDelete: {\n type: String,\n default: undefined,\n kComposite: 'editable.cancelDelete'\n },\n editableConfirmDelete: {\n type: String,\n default: undefined,\n kComposite: 'editable.confirmDelete'\n },\n editableCreateAt: {\n type: String,\n default: undefined,\n kComposite: 'editable.createAt'\n },\n editableDestroy: {\n type: Boolean,\n default: undefined,\n kComposite: 'editable.destroy'\n },\n editableMode: {\n type: String,\n default: undefined,\n kComposite: 'editable.mode'\n },\n editableTemplate: {\n type: [String, Function],\n default: undefined,\n kComposite: 'editable.template'\n },\n editableUpdate: {\n type: Boolean,\n default: undefined,\n kComposite: 'editable.update'\n },\n editableWindow: {\n type: Object,\n default: undefined,\n kComposite: 'editable.window'\n }\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n props: {\n excelAllPages: {\n type: Boolean,\n default: undefined,\n kComposite: 'excel.allPages'\n },\n excelFileName: {\n type: String,\n default: undefined,\n kComposite: 'excel.fileName'\n },\n excelFilterable: {\n type: Boolean,\n default: undefined,\n kComposite: 'excel.filterable'\n },\n excelForceProxy: {\n type: Boolean,\n default: undefined,\n kComposite: 'excel.forceProxy'\n },\n excelProxyURL: {\n type: String,\n default: undefined,\n kComposite: 'excel.proxyURL'\n }\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n props: {\n filterableExtra: {\n type: Boolean,\n default: undefined,\n kComposite: 'filterable.extra'\n },\n filterableMessagesAnd: {\n type: String,\n default: undefined,\n kComposite: 'filterable.messages.and'\n },\n filterableMessagesClear: {\n type: String,\n default: undefined,\n kComposite: 'filterable.messages.clear'\n },\n filterableMessagesFilter: {\n type: String,\n default: undefined,\n kComposite: 'filterable.messages.filter'\n },\n filterableMessagesInfo: {\n type: String,\n default: undefined,\n kComposite: 'filterable.messages.info'\n },\n filterableMessagesIsFalse: {\n type: String,\n default: undefined,\n kComposite: 'filterable.messages.isFalse'\n },\n filterableMessagesIsTrue: {\n type: String,\n default: undefined,\n kComposite: 'filterable.messages.isTrue'\n },\n filterableMessagesOr: {\n type: String,\n default: undefined,\n kComposite: 'filterable.messages.or'\n },\n filterableMessagesSearch: {\n type: String,\n default: undefined,\n kComposite: 'filterable.messages.search'\n },\n filterableMessagesSelectValue: {\n type: String,\n default: undefined,\n kComposite: 'filterable.messages.selectValue'\n },\n filterableMessagesCancel: {\n type: String,\n default: undefined,\n kComposite: 'filterable.messages.cancel'\n },\n filterableMessagesSelectedItemsFormat: {\n type: String,\n default: undefined,\n kComposite: 'filterable.messages.selectedItemsFormat'\n },\n filterableMessagesOperator: {\n type: String,\n default: undefined,\n kComposite: 'filterable.messages.operator'\n },\n filterableMessagesValue: {\n type: String,\n default: undefined,\n kComposite: 'filterable.messages.value'\n },\n filterableMessagesCheckAll: {\n type: String,\n default: undefined,\n kComposite: 'filterable.messages.checkAll'\n },\n filterableMode: {\n type: String,\n default: undefined,\n kComposite: 'filterable.mode'\n },\n filterableOperatorsStringEq: {\n type: String,\n default: undefined,\n kComposite: 'filterable.operators.string.eq'\n },\n filterableOperatorsStringNeq: {\n type: String,\n default: undefined,\n kComposite: 'filterable.operators.string.neq'\n },\n filterableOperatorsStringIsnull: {\n type: String,\n default: undefined,\n kComposite: 'filterable.operators.string.isnull'\n },\n filterableOperatorsStringIsnotnull: {\n type: String,\n default: undefined,\n kComposite: 'filterable.operators.string.isnotnull'\n },\n filterableOperatorsStringIsempty: {\n type: String,\n default: undefined,\n kComposite: 'filterable.operators.string.isempty'\n },\n filterableOperatorsStringIsnotempty: {\n type: String,\n default: undefined,\n kComposite: 'filterable.operators.string.isnotempty'\n },\n filterableOperatorsStringStartswith: {\n type: String,\n default: undefined,\n kComposite: 'filterable.operators.string.startswith'\n },\n filterableOperatorsStringContains: {\n type: String,\n default: undefined,\n kComposite: 'filterable.operators.string.contains'\n },\n filterableOperatorsStringDoesnotcontain: {\n type: String,\n default: undefined,\n kComposite: 'filterable.operators.string.doesnotcontain'\n },\n filterableOperatorsStringEndswith: {\n type: String,\n default: undefined,\n kComposite: 'filterable.operators.string.endswith'\n },\n filterableOperatorsNumberEq: {\n type: String,\n default: undefined,\n kComposite: 'filterable.operators.number.eq'\n },\n filterableOperatorsNumberNeq: {\n type: String,\n default: undefined,\n kComposite: 'filterable.operators.number.neq'\n },\n filterableOperatorsNumberIsnull: {\n type: String,\n default: undefined,\n kComposite: 'filterable.operators.number.isnull'\n },\n filterableOperatorsNumberIsnotnull: {\n type: String,\n default: undefined,\n kComposite: 'filterable.operators.number.isnotnull'\n },\n filterableOperatorsNumberGte: {\n type: String,\n default: undefined,\n kComposite: 'filterable.operators.number.gte'\n },\n filterableOperatorsNumberGt: {\n type: String,\n default: undefined,\n kComposite: 'filterable.operators.number.gt'\n },\n filterableOperatorsNumberLte: {\n type: String,\n default: undefined,\n kComposite: 'filterable.operators.number.lte'\n },\n filterableOperatorsNumberLt: {\n type: String,\n default: undefined,\n kComposite: 'filterable.operators.number.lt'\n },\n filterableOperatorsDateEq: {\n type: String,\n default: undefined,\n kComposite: 'filterable.operators.date.eq'\n },\n filterableOperatorsDateNeq: {\n type: String,\n default: undefined,\n kComposite: 'filterable.operators.date.neq'\n },\n filterableOperatorsDateIsnull: {\n type: String,\n default: undefined,\n kComposite: 'filterable.operators.date.isnull'\n },\n filterableOperatorsDateIsnotnull: {\n type: String,\n default: undefined,\n kComposite: 'filterable.operators.date.isnotnull'\n },\n filterableOperatorsDateGte: {\n type: String,\n default: undefined,\n kComposite: 'filterable.operators.date.gte'\n },\n filterableOperatorsDateGt: {\n type: String,\n default: undefined,\n kComposite: 'filterable.operators.date.gt'\n },\n filterableOperatorsDateLte: {\n type: String,\n default: undefined,\n kComposite: 'filterable.operators.date.lte'\n },\n filterableOperatorsDateLt: {\n type: String,\n default: undefined,\n kComposite: 'filterable.operators.date.lt'\n },\n filterableOperatorsEnumsEq: {\n type: String,\n default: undefined,\n kComposite: 'filterable.operators.enums.eq'\n },\n filterableOperatorsEnumsNeq: {\n type: String,\n default: undefined,\n kComposite: 'filterable.operators.enums.neq'\n },\n filterableOperatorsEnumsIsnull: {\n type: String,\n default: undefined,\n kComposite: 'filterable.operators.enums.isnull'\n },\n filterableOperatorsEnumsIsnotnull: {\n type: String,\n default: undefined,\n kComposite: 'filterable.operators.enums.isnotnull'\n }\n }\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n allowCopy: {\n type: [Boolean, Object],\n default: undefined\n },\n altRowTemplate: {\n type: [String, Function],\n default: undefined\n },\n autoBind: {\n type: Boolean,\n default: undefined\n },\n columnResizeHandleWidth: {\n type: Number,\n default: undefined\n },\n columns: {\n type: Array,\n default: undefined\n },\n columnMenu: {\n type: [Boolean, Object],\n default: undefined\n },\n dataSource: {\n type: [Object, Array],\n default: undefined\n },\n detailTemplate: {\n type: [String, Function],\n default: undefined\n },\n editable: {\n type: [Boolean, Object, String],\n default: undefined\n },\n excel: {\n type: Object,\n default: undefined\n },\n filterable: {\n type: [Boolean, Object],\n default: undefined\n },\n groupable: {\n type: [Boolean, Object],\n default: undefined\n },\n height: {\n type: [Number, String],\n default: undefined\n },\n messages: {\n type: Object,\n default: undefined\n },\n mobile: {\n type: [Boolean, String],\n default: undefined\n },\n navigatable: {\n type: Boolean,\n default: undefined\n },\n noRecords: {\n type: [Boolean, Object],\n default: undefined\n },\n pageable: {\n type: [Boolean, Object],\n default: undefined\n },\n pdf: {\n type: Object,\n default: undefined\n },\n persistSelection: {\n type: Boolean,\n default: undefined\n },\n reorderable: {\n type: Boolean,\n default: undefined\n },\n resizable: {\n type: Boolean,\n default: undefined\n },\n rowTemplate: {\n type: [String, Function],\n default: undefined\n },\n scrollable: {\n type: [Boolean, Object],\n default: undefined\n },\n selectable: {\n type: [Boolean, String],\n default: undefined\n },\n sortable: {\n type: [Boolean, Object],\n default: undefined\n },\n toolbar: {\n type: [String, Function, Array],\n default: undefined\n },\n\n // Events\n beforeEdit: {\n type: Function,\n default: undefined\n },\n cancel: {\n type: Function,\n default: undefined\n },\n cellClose: {\n type: Function,\n default: undefined\n },\n change: {\n type: Function,\n default: undefined\n },\n columnHide: {\n type: Function,\n default: undefined\n },\n columnMenuInit: {\n type: Function,\n default: undefined\n },\n columnMenuOpen: {\n type: Function,\n default: undefined\n },\n columnReorder: {\n type: Function,\n default: undefined\n },\n columnResize: {\n type: Function,\n default: undefined\n },\n columnShow: {\n type: Function,\n default: undefined\n },\n dataBinding: {\n type: Function,\n default: undefined\n },\n dataBound: {\n type: Function,\n default: undefined\n },\n detailCollapse: {\n type: Function,\n default: undefined\n },\n detailExpand: {\n type: Function,\n default: undefined\n },\n detailInit: {\n type: Function,\n default: undefined\n },\n edit: {\n type: Function,\n default: undefined\n },\n excelExport: {\n type: Function,\n default: undefined\n },\n filter: {\n type: Function,\n default: undefined\n },\n group: {\n type: Function,\n default: undefined\n },\n groupCollapse: {\n type: Function,\n default: undefined\n },\n groupExpand: {\n type: Function,\n default: undefined\n },\n page: {\n type: Function,\n default: undefined\n },\n pdfExport: {\n type: Function,\n default: undefined\n },\n filterMenuInit: {\n type: Function,\n default: undefined\n },\n filterMenuOpen: {\n type: Function,\n default: undefined\n },\n remove: {\n type: Function,\n default: undefined\n },\n save: {\n type: Function,\n default: undefined\n },\n saveChanges: {\n type: Function,\n default: undefined\n },\n sort: {\n type: Function,\n default: undefined\n },\n columnLock: {\n type: Function,\n default: undefined\n },\n columnUnlock: {\n type: Function,\n default: undefined\n },\n navigate: {\n type: Function,\n default: undefined\n },\n rowReorder: {\n type: Function,\n default: undefined\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n props: {\n groupableEnabled: {\n type: Boolean,\n default: undefined,\n kComposite: 'groupable.enabled'\n },\n groupableShowFooter: {\n type: Boolean,\n default: undefined,\n kComposite: 'groupable.showFooter'\n },\n groupableSortCompare: {\n type: Function,\n default: undefined,\n kComposite: 'groupable.sort.compare'\n },\n groupableSortDir: {\n type: String,\n default: undefined,\n kComposite: 'groupable.sort.dir'\n },\n groupableMessagesEmpty: {\n type: String,\n default: undefined,\n kComposite: 'groupable.messages.empty'\n }\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _kendoBaseComponentsVueWrapper = require('@progress/kendo-base-components-vue-wrapper');\n\nvar _KendoGridColumn = require('../KendoGridColumn');\n\nvar _KendoGridColumn2 = _interopRequireDefault(_KendoGridColumn);\n\nvar _KendoGridToolbar = require('../KendoGridToolbar');\n\nvar _KendoGridToolbar2 = _interopRequireDefault(_KendoGridToolbar);\n\nvar _GridProps = require('./GridProps');\n\nvar _GridProps2 = _interopRequireDefault(_GridProps);\n\nvar _AllowCopy = require('./AllowCopy');\n\nvar _AllowCopy2 = _interopRequireDefault(_AllowCopy);\n\nvar _ColumnMenu = require('./ColumnMenu');\n\nvar _ColumnMenu2 = _interopRequireDefault(_ColumnMenu);\n\nvar _Editable = require('./Editable');\n\nvar _Editable2 = _interopRequireDefault(_Editable);\n\nvar _Excel = require('./Excel');\n\nvar _Excel2 = _interopRequireDefault(_Excel);\n\nvar _Filterable = require('./Filterable');\n\nvar _Filterable2 = _interopRequireDefault(_Filterable);\n\nvar _Groupable = require('./Groupable');\n\nvar _Groupable2 = _interopRequireDefault(_Groupable);\n\nvar _Messages = require('./Messages');\n\nvar _Messages2 = _interopRequireDefault(_Messages);\n\nvar _NoRecords = require('./NoRecords');\n\nvar _NoRecords2 = _interopRequireDefault(_NoRecords);\n\nvar _Pageable = require('./Pageable');\n\nvar _Pageable2 = _interopRequireDefault(_Pageable);\n\nvar _Pdf = require('./Pdf');\n\nvar _Pdf2 = _interopRequireDefault(_Pdf);\n\nvar _Scrollable = require('./Scrollable');\n\nvar _Scrollable2 = _interopRequireDefault(_Scrollable);\n\nvar _Sortable = require('./Sortable');\n\nvar _Sortable2 = _interopRequireDefault(_Sortable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n props: _GridProps2.default,\n emits: {\n 'kendowidgetready': null\n },\n mixins: [_kendoBaseComponentsVueWrapper.KendoBaseComponent, _kendoBaseComponentsVueWrapper.KendoBaseDatasourceComponent, _AllowCopy2.default, _ColumnMenu2.default, _Editable2.default, _Excel2.default, _Filterable2.default, _Groupable2.default, _Messages2.default, _NoRecords2.default, _Pageable2.default, _Pdf2.default, _Scrollable2.default, _Sortable2.default],\n mounted: function mounted() {\n this._resolveChildren();\n kendo.jQuery(this.$el).kendoGrid(this.widgetOptions);\n\n if (this.v3) {\n this.ready();\n this.$emit('kendowidgetready', this.kendoWidget());\n } else {\n this.$emit('kendowidgetready', this.kendoWidget());\n }\n },\n\n methods: {\n kendoWidget: function kendoWidget() {\n return kendo.jQuery(this.$el).getKendoGrid();\n },\n _resolveChildren: function _resolveChildren() {\n this.resolveChildren('columns', _KendoGridColumn2.default.name);\n this.resolveChildren('toolbar', _KendoGridToolbar2.default.name);\n }\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n props: {\n messagesCommandsCancel: {\n type: String,\n default: undefined,\n kComposite: 'messages.commands.cancel'\n },\n messagesCommandsCanceledit: {\n type: String,\n default: undefined,\n kComposite: 'messages.commands.canceledit'\n },\n messagesCommandsCreate: {\n type: String,\n default: undefined,\n kComposite: 'messages.commands.create'\n },\n messagesCommandsDestroy: {\n type: String,\n default: undefined,\n kComposite: 'messages.commands.destroy'\n },\n messagesCommandsEdit: {\n type: String,\n default: undefined,\n kComposite: 'messages.commands.edit'\n },\n messagesCommandsExcel: {\n type: String,\n default: undefined,\n kComposite: 'messages.commands.excel'\n },\n messagesCommandsSave: {\n type: String,\n default: undefined,\n kComposite: 'messages.commands.save'\n },\n messagesCommandsUpdate: {\n type: String,\n default: undefined,\n kComposite: 'messages.commands.update'\n },\n messagesNoRecords: {\n type: String,\n default: undefined,\n kComposite: 'messages.noRecords'\n },\n messagesExpandCollapseColumnHeader: {\n type: String,\n default: undefined,\n kComposite: 'messages.expandCollapseColumnHeader'\n }\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n props: {\n noRecordsTemplate: {\n type: [String, Function],\n default: undefined,\n kComposite: 'noRecords.template'\n }\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n props: {\n pageableAlwaysVisible: {\n type: Boolean,\n default: undefined,\n kComposite: 'pageable.alwaysVisible'\n },\n pageablePageSize: {\n type: Number,\n default: undefined,\n kComposite: 'pageable.pageSize'\n },\n pageablePreviousNext: {\n type: Boolean,\n default: undefined,\n kComposite: 'pageable.previousNext'\n },\n pageableNumeric: {\n type: Boolean,\n default: undefined,\n kComposite: 'pageable.numeric'\n },\n pageableButtonCount: {\n type: Number,\n default: undefined,\n kComposite: 'pageable.buttonCount'\n },\n pageableInput: {\n type: Boolean,\n default: undefined,\n kComposite: 'pageable.input'\n },\n pageablePageSizes: {\n type: [Boolean, Array],\n default: undefined,\n kComposite: 'pageable.pageSizes'\n },\n pageableRefresh: {\n type: Boolean,\n default: undefined,\n kComposite: 'pageable.refresh'\n },\n pageableResponsive: {\n type: Boolean,\n default: undefined,\n kComposite: 'pageable.responsive'\n },\n pageableInfo: {\n type: Boolean,\n default: undefined,\n kComposite: 'pageable.info'\n },\n pageableMessagesDisplay: {\n type: String,\n default: undefined,\n kComposite: 'pageable.messages.display'\n },\n pageableMessagesEmpty: {\n type: String,\n default: undefined,\n kComposite: 'pageable.messages.empty'\n },\n pageableMessagesPage: {\n type: String,\n default: undefined,\n kComposite: 'pageable.messages.page'\n },\n pageableMessagesOf: {\n type: String,\n default: undefined,\n kComposite: 'pageable.messages.of'\n },\n pageableMessagesItemsPerPage: {\n type: String,\n default: undefined,\n kComposite: 'pageable.messages.itemsPerPage'\n },\n pageableMessagesFirst: {\n type: String,\n default: undefined,\n kComposite: 'pageable.messages.first'\n },\n pageableMessagesLast: {\n type: String,\n default: undefined,\n kComposite: 'pageable.messages.last'\n },\n pageableMessagesNext: {\n type: String,\n default: undefined,\n kComposite: 'pageable.messages.next'\n },\n pageableMessagesPrevious: {\n type: String,\n default: undefined,\n kComposite: 'pageable.messages.previous'\n },\n pageableMessagesRefresh: {\n type: String,\n default: undefined,\n kComposite: 'pageable.messages.refresh'\n },\n pageableMessagesMorePages: {\n type: String,\n default: undefined,\n kComposite: 'pageable.messages.morePages'\n }\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n props: {\n pdfAllPages: {\n type: Boolean,\n default: undefined,\n kComposite: 'pdf.allPages'\n },\n pdfAuthor: {\n type: String,\n default: undefined,\n kComposite: 'pdf.author'\n },\n pdfAvoidLinks: {\n type: [Boolean, String],\n default: undefined,\n kComposite: 'pdf.avoidLinks'\n },\n pdfCreator: {\n type: String,\n default: undefined,\n kComposite: 'pdf.creator'\n },\n pdfDate: {\n type: Date,\n default: undefined,\n kComposite: 'pdf.date'\n },\n pdfFileName: {\n type: String,\n default: undefined,\n kComposite: 'pdf.fileName'\n },\n pdfForceProxy: {\n type: Boolean,\n default: undefined,\n kComposite: 'pdf.forceProxy'\n },\n pdfKeywords: {\n type: String,\n default: undefined,\n kComposite: 'pdf.keywords'\n },\n pdfLandscape: {\n type: Boolean,\n default: undefined,\n kComposite: 'pdf.landscape'\n },\n pdfMarginBottom: {\n type: [Number, String],\n default: undefined,\n kComposite: 'pdf.margin.bottom'\n },\n pdfMarginLeft: {\n type: [Number, String],\n default: undefined,\n kComposite: 'pdf.margin.left'\n },\n pdfMarginRight: {\n type: [Number, String],\n default: undefined,\n kComposite: 'pdf.margin.right'\n },\n pdfMarginTop: {\n type: [Number, String],\n default: undefined,\n kComposite: 'pdf.margin.top'\n },\n pdfPaperSize: {\n type: [String, Array],\n default: undefined,\n kComposite: 'pdf.paperSize'\n },\n pdfTemplate: {\n type: String,\n default: undefined,\n kComposite: 'pdf.template'\n },\n pdfRepeatHeaders: {\n type: Boolean,\n default: undefined,\n kComposite: 'pdf.repeatHeaders'\n },\n pdfScale: {\n type: Number,\n default: undefined,\n kComposite: 'pdf.scale'\n },\n pdfProxyURL: {\n type: String,\n default: undefined,\n kComposite: 'pdf.proxyURL'\n },\n pdfProxyTarget: {\n type: String,\n default: undefined,\n kComposite: 'pdf.proxyTarget'\n },\n pdfSubject: {\n type: String,\n default: undefined,\n kComposite: 'pdf.subject'\n },\n pdfTitle: {\n type: String,\n default: undefined,\n kComposite: 'pdf.title'\n }\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n props: {\n scrollableVirtual: {\n type: Boolean,\n default: undefined,\n kComposite: 'scrollable.virtual'\n },\n scrollableEndless: {\n type: Boolean,\n default: undefined,\n kComposite: 'scrollable.endless'\n }\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n props: {\n sortableAllowUnsort: {\n type: Boolean,\n default: undefined,\n kComposite: 'sortable.allowUnsort'\n },\n sortableShowIndexes: {\n type: Boolean,\n default: undefined,\n kComposite: 'sortable.showIndexes'\n },\n sortableInitialDirection: {\n type: String,\n default: undefined,\n kComposite: 'sortable.initialDirection'\n },\n sortableMode: {\n type: String,\n default: undefined,\n kComposite: 'sortable.mode'\n }\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _vue = require('vue');\n\nvar Vue = _interopRequireWildcard(_vue);\n\nvar _KendoGridMixin = require('./KendoGridMixin');\n\nvar _KendoGridMixin2 = _interopRequireDefault(_KendoGridMixin);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar allVue = Vue;\nvar gh = allVue.h;\nvar isV3 = allVue.version && allVue.version[0] === '3';\nexports.default = {\n name: 'kendo-grid',\n mixins: [_KendoGridMixin2.default],\n setup: function setup() {\n var v3 = isV3;\n return {\n v3: v3\n };\n },\n render: function render(createElement) {\n var h = gh || createElement;\n var defaultSlot = this.v3 && this.$slots.default && typeof this.$slots.default === 'function' ? this.$slots.default() : this.$slots.default;\n return h('div', [this.$slots['kendo-datasource'], defaultSlot]);\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.GridInstaller = exports.KendoGridInstaller = exports.GridColumn = exports.KendoGridColumn = exports.Grid = exports.KendoGrid = undefined;\n\nvar _KendoGrid = require('./KendoGrid');\n\nvar _KendoGrid2 = _interopRequireDefault(_KendoGrid);\n\nvar _KendoGridColumn = require('./KendoGridColumn');\n\nvar _KendoGridColumn2 = _interopRequireDefault(_KendoGridColumn);\n\nvar _kendoGridInstaller = require('./kendo-grid-installer');\n\nvar _kendoGridInstaller2 = _interopRequireDefault(_kendoGridInstaller);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.KendoGrid = _KendoGrid2.default;\nexports.Grid = _KendoGrid2.default;\nexports.KendoGridColumn = _KendoGridColumn2.default;\nexports.GridColumn = _KendoGridColumn2.default;\nexports.KendoGridInstaller = _kendoGridInstaller2.default;\nexports.GridInstaller = _kendoGridInstaller2.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _KendoGrid = require('../KendoGrid');\n\nvar _KendoGrid2 = _interopRequireDefault(_KendoGrid);\n\nvar _KendoGridColumn = require('../KendoGridColumn');\n\nvar _KendoGridColumn2 = _interopRequireDefault(_KendoGridColumn);\n\nvar _KendoGridToolbar = require('../KendoGridToolbar');\n\nvar _KendoGridToolbar2 = _interopRequireDefault(_KendoGridToolbar);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar KendoGridInstaller = function () {\n function KendoGridInstaller() {\n _classCallCheck(this, KendoGridInstaller);\n }\n\n _createClass(KendoGridInstaller, null, [{\n key: 'install',\n value: function install(Vue) {\n Vue.component(_KendoGrid2.default.name, _KendoGrid2.default);\n Vue.component(_KendoGridColumn2.default.name, _KendoGridColumn2.default);\n Vue.component(_KendoGridToolbar2.default.name, _KendoGridToolbar2.default);\n }\n }]);\n\n return KendoGridInstaller;\n}();\n\nexports.default = KendoGridInstaller;\n\n// Automatic installation if Vue has been added to the global scope.\n\nif (typeof window !== 'undefined' && window.Vue && window.Vue.use) {\n window.Vue.use(KendoGridInstaller);\n}","import Vue from 'vue'\r\n\r\nif (document.getElementById('pre-login-form')) {\r\n\r\n new Vue({\r\n el: '#pre-login-form',\r\n data: function () {\r\n return {\r\n isSubmitted: false,\r\n isValid: undefined,\r\n email: null,\r\n }\r\n },\r\n watch: {\r\n 'email': function (newValue) {\r\n this.isValid = this.validEmail(newValue);\r\n this.isSubmitted = !this.isValid;\r\n }\r\n },\r\n methods: {\r\n validateLogin: function (evt) {\r\n const form = evt.target;\r\n\r\n this.isSubmitted = true;\r\n this.isValid = this.validEmail(this.email);\r\n\r\n if (this.isValid) {\r\n form.submit();\r\n }\r\n\r\n evt.preventDefault();\r\n },\r\n validEmail: function (email) {\r\n if (!email)\r\n return false;\r\n\r\n const re = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return re.test(email);\r\n }\r\n }\r\n });\r\n}","import Vue from 'vue'\r\nimport \"./Actionbar.less\"\r\nimport { debounce } from \"../Shared/grid-utils\"\r\n\r\nmodule.export = Vue.component('actionbar', {\r\n name: 'actionbar',\r\n props: ['data'],\r\n data: function () {\r\n return {\r\n searchText: \"\",\r\n portfolio: \"\",\r\n activePreview: \"\"\r\n };\r\n },\r\n created: function () {\r\n this.onAutoSearch = debounce(() => {\r\n this.$emit('search', this.searchText)\r\n }, 500);\r\n },\r\n methods: {\r\n updateSearchText: function (searchValue) {\r\n this.searchText = searchValue;\r\n }\r\n }\r\n});","import Vue from 'vue'\r\n\r\nmodule.export = Vue.component('alerts', {\r\n name: 'alerts',\r\n props: {\r\n alerts: Array\r\n },\r\n data: function () {\r\n return { };\r\n },\r\n methods: {\r\n clearAlert: function (index) {\r\n //Clearing it on the parent since that is the one receiving the alerts as well.\r\n this.$parent.clearAlert(index);\r\n }\r\n },\r\n watch: {\r\n alerts: {\r\n immediate: true, \r\n handler (newValue, oldVal) {\r\n const _this = this;\r\n if (newValue && newValue.length > 0 && newValue !== oldVal) { \r\n for (let i = 0; i < newValue.length; i++) {\r\n if (newValue[i].showPopup) {\r\n $('#notification-message').removeAttr(\"style\");\r\n window.setTimeout(function () {\r\n $('#notification-message').fadeOut(750, function () {\r\n _this.clearAlert(i);\r\n });\r\n }, 3000);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n});","import Vue from 'vue'\r\nimport VeeValidate from \"vee-validate\"\r\nimport { GridInstaller } from '@progress/kendo-grid-vue-wrapper'\r\nimport vSelect from 'vue-select'\r\nimport \"../Grid/Grid.less\"\r\nimport { getSubMemberName} from '../Shared/grid-utils'\r\n\r\nif (document.getElementById('vue-archived-assets-overview')) {\r\n require(\"../Grid/GridConfiguration.js\");\r\n require(\"../Actionbar/Actionbar.js\");\r\n require(\"../Alerts/Alerts.js\");\r\n require(\"../QueryableGrid/Grid.js\");\r\n\r\n Vue.use(GridInstaller);\r\n Vue.use(VeeValidate);\r\n\r\n Vue.component('v-select', vSelect);\r\n const pagesizesession = \"pagesize\";\r\n let pagesize = sessionStorage.getItem(pagesizesession);\r\n if (!pagesize) {\r\n pagesize = 20;\r\n }\r\n\r\n new Vue({\r\n el: '#vue-archived-assets-overview',\r\n components: {},\r\n data: function () {\r\n return {\r\n actionbar: window.preLoadedData.Actionbar,\r\n GridConfiguration: window.preLoadedData.GridConfiguration,\r\n Grid: {\r\n config: window.preLoadedData.GridConfiguration,\r\n endpointQuery: \"/LeasedAssets/Query?queryArchivedAssets=true\",\r\n endpointFilterValues: \"/LeasedAssets/FetchFilterValues?queryArchivedAssets=true\", \r\n enableMultiSelect: true,\r\n renderFieldValues: this.getCustomFieldValues,\r\n renderRowActions: this.getCustomActions,\r\n rowClickEvent: this.onRowClicked,\r\n rowActionClickEvent: this.onRowActionClicked,\r\n rowSelectedEvent: this.onRowSelectionChanged,\r\n gridChangedEvent: this.onGridChanged,\r\n gridFilteredEvent: this.onGridFiltered,\r\n pageSizes: {\r\n default: 20,\r\n values: [10, 20, 30, 50]\r\n },\r\n selectAll: false,\r\n search: undefined,\r\n globalSelection: undefined,\r\n selectedCount: undefined,\r\n totalCount: undefined,\r\n export: undefined,\r\n customFilter: undefined,\r\n refreshData: undefined,\r\n refreshCurrentPage: undefined,\r\n setActionbar: undefined,\r\n },\r\n alerts: [],\r\n selectedAssets: [],\r\n assetCount: 0,\r\n assetFilter: {},\r\n assetSort: {},\r\n HasBranding: window.hasBranding\r\n };\r\n },\r\n mounted: function () {\r\n const _this = this;\r\n _this.Grid.setActionbar(_this.$refs.actionbar);\r\n },\r\n created: function () {\r\n this.actionbar.searchVisible = true;\r\n },\r\n methods: {\r\n /**\r\n * ActionBar Events\r\n */\r\n actionbarChangeColumns: function (e) {\r\n $('#grid-configuration-modal').modal('show');\r\n },\r\n actionbarSelectAll: function (e) {\r\n if (this.Grid.selectAll) {\r\n this.Grid.selectAll();\r\n }\r\n },\r\n actionbarSearch: function (e) {\r\n if (this.Grid.search) {\r\n this.Grid.search(e);\r\n }\r\n },\r\n actionbarExport: function (e) {\r\n if (this.Grid.export) {\r\n this.Grid.export();\r\n }\r\n },\r\n /**\r\n * Grid Events\r\n */\r\n loadColumns: function () {\r\n // this is not implemented here, the new QueryableGrid component handles this\r\n // this function is only here because the GridConfiguration component references this and we want to be backwards compatible\r\n },\r\n getCustomFieldValues: function (gridColumns) {\r\n const modifiedColumns = Object.assign([], gridColumns)\r\n for (let column of modifiedColumns) {\r\n if (column.field === \"portfolio\") {\r\n column.filterable = false;\r\n column.sortable = false;\r\n }\r\n }\r\n\r\n const fieldColumnsWithEmptyMessage = modifiedColumns.filter(x => typeof x.field !== \"undefined\" && ((x.field.startsWith(\"computedFields.\")) || (x.field.startsWith(\"assetTypeFields[\"))));\r\n if (fieldColumnsWithEmptyMessage.length > 0) {\r\n fieldColumnsWithEmptyMessage.forEach((potentialEmptyField) => {\r\n const fieldIndex = modifiedColumns.findIndex(x => x.field === potentialEmptyField.field);\r\n if (fieldIndex >= 0) {\r\n modifiedColumns[fieldIndex].template = function (dataItem) {\r\n\r\n if (potentialEmptyField.field.startsWith(\"computedFields\")) {\r\n const computedFieldName = getSubMemberName(potentialEmptyField.field);\r\n const computedFields = dataItem[\"computedFields\"];\r\n\r\n if (potentialEmptyField.type === 'number') {\r\n const numericValue = computedFields[computedFieldName];\r\n if (!numericValue) {\r\n return '';\r\n }\r\n\r\n return computedFields[computedFieldName];\r\n }\r\n } else if (potentialEmptyField.field.startsWith(\"assetTypeFields[\")) {\r\n const assetTypeFieldName = getSubMemberName(potentialEmptyField.field);\r\n const assetTypeFields = dataItem[\"assetTypeFields\"]; \r\n\r\n if (assetTypeFields[assetTypeFieldName] === undefined || assetTypeFields[assetTypeFieldName] === null) {\r\n return '';\r\n }\r\n\r\n return assetTypeFields[assetTypeFieldName];\r\n }\r\n else \r\n {\r\n return dataItem[potentialEmptyField.field];\r\n }\r\n };\r\n }\r\n });\r\n }\r\n return modifiedColumns;\r\n },\r\n getCustomActions: function () {\r\n let customFields = [];\r\n\r\n customFields.push(\r\n {\r\n 'title': ' ',\r\n 'filterable': false,\r\n 'template': '',\r\n 'width': '120px'\r\n });\r\n\r\n return customFields;\r\n },\r\n onRowClicked: function (item) {\r\n window.location.href = \"./LeasedAssets/Details?id=\" + item.id + \"&overviewUrl=\" + encodeURIComponent(window.location.pathname + window.location.hash);\r\n },\r\n onRowActionClicked: function (item, type) {\r\n if (!item)\r\n return;\r\n\r\n if (type === \"view\") {\r\n window.location.href = \"./LeasedAssets/Details?id=\" + item.id + \"&overviewUrl=\" + encodeURIComponent(window.location.pathname + window.location.hash);\r\n }\r\n },\r\n\r\n onGridChanged: function (selectedItems) {\r\n if (this.Grid.totalCount && this.Grid.selectedCount) {\r\n const selectAll = document.getElementById('actionbarSelectAll');\r\n if (selectAll.checked && this.Grid.selectedCount() < this.Grid.totalCount())\r\n selectAll.checked = false;\r\n }\r\n },\r\n\r\n findActionBarButton: function (event) {\r\n return this.actionbar.ItemsRight.find(f => f.event === event) ? this.actionbar.ItemsRight.find(f => f.event === event) : this.actionbar.ItemsLeft.find(f => f.event === event);\r\n }\r\n }\r\n });\r\n}","import Vue from 'vue'\r\n\r\nmodule.export = Vue.component('addassettypemodal',\r\n {\r\n name: 'addassettype',\r\n props: {\r\n data: Object\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n AddModel: {\r\n AssetTypeName: '',\r\n MasterAssetTypeName: '',\r\n DefaultFieldsToBeHidden: null,\r\n },\r\n loading: false\r\n };\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n save: function (e) {\r\n e.preventDefault();\r\n this.$validator.validateAll().then((isValid) => {\r\n if (isValid) {\r\n this.addAssetTypeCall();\r\n }\r\n });\r\n },\r\n addAssetTypeCall: function () {\r\n const _this = this;\r\n _this.clearAlert();\r\n $(\"#saveButton\").prop(\"disabled\", true);\r\n $.ajax({\r\n type: 'POST',\r\n url: '/AssetTypes/Add',\r\n data: JSON.stringify({\r\n assetTypeName: _this.AddModel.AssetTypeName,\r\n masterAssetTypeName: _this.AddModel.MasterAssetTypeName,\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n $('#add-asset-type').modal('hide');\r\n window.GeneralUtilities.loading(true);\r\n _this.$emit('redirect-to-details', data.data);\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not add Asset Type: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not add Asset Type due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n this.AddModel = Object.assign({}, this.data);\r\n this.$validator.reset();\r\n $('#add-asset-type').modal('hide');\r\n\r\n // Enable save button again.\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n }\r\n });","import Vue from 'vue'\r\n\r\nmodule.export = Vue.component('addoreditfieldmodal',\r\n {\r\n name: 'addoreditfield',\r\n props: {\r\n data: Object,\r\n fielddata: Object,\r\n editcontext: String\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n EditModel: Object.assign({}, this.data), //create deep a copy of the object\r\n field: undefined, \r\n ShowFeedback: false,\r\n changeFile: '',\r\n name: null,\r\n fieldType: '',\r\n isDefault: true,\r\n isLegacy: false,\r\n isExistingField: false,\r\n required: false,\r\n viewableBy: [],\r\n editableBy: [],\r\n\r\n // constants:\r\n fieldTypes: ['Text', 'Numeric', 'DateTime', 'Date'],\r\n users: ['Customer', (window.hasBranding ? 'DLL' : 'Vendor'), 'Partner'],\r\n disabledInformation: window.hasBranding\r\n ? 'DLL and Partner fields are disabled because they do not have access to non-DLL assets regardless.'\r\n : 'Vendor and Partner fields are disabled because they do not have access to non-Leased assets regardless.',\r\n existingFields: []\r\n };\r\n },\r\n watch: {\r\n fielddata: function () {\r\n this.field = this.fielddata ? Object.assign({}, this.fielddata) : undefined;\r\n if (this.field) {\r\n this.name = this.field.Name;\r\n this.fieldType = this.field.Type;\r\n this.required = this.field.Required;\r\n this.viewableBy = this.field.ViewableBy;\r\n this.editableBy = this.field.EditableBy;\r\n this.isDefault = this.field.IsDefault;\r\n this.isLegacy = this.field.IsLegacy;\r\n } else {\r\n this.name = null;\r\n this.fieldType = '';\r\n this.required = false;\r\n this.viewableBy = (this.EditModel.isLesseeAssetType ? ['Customer'] : []);\r\n this.editableBy = (this.EditModel.isLesseeAssetType ? ['Customer'] : []);\r\n this.existingFields = this.EditModel.ExistingFields;\r\n }\r\n }\r\n },\r\n mounted: function () {\r\n this.existingFields = this.EditModel.ExistingFields;\r\n if (!this.field && this.EditModel.isLesseeAssetType) {\r\n this.viewableBy = ['Customer'];\r\n this.editableBy = ['Customer'];\r\n }\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n validateName: function (evt) {\r\n if (evt && evt.target && evt.target.value) {\r\n const regex = /^[\\p{L}\\p{N}]+( [\\p{L}\\p{N}]+)*$/u;\r\n const value = evt.target.value;\r\n if (regex.test(value)) {\r\n // Input is valid\r\n this.$validator.errors.remove('name');\r\n } else {\r\n // Input is invalid\r\n this.$validator.errors.add({\r\n field: 'name',\r\n msg: 'Special characters are not allowed'\r\n });\r\n }\r\n }\r\n },\r\n save: function (e) {\r\n e.preventDefault();\r\n this.$validator.validateAll().then((result) => {\r\n if (result) {\r\n const _this = this;\r\n _this.clearAlert();\r\n let postUrl;\r\n let data = {\r\n id: _this.EditModel.AssetTypeId,\r\n name: _this.name,\r\n required: _this.required,\r\n type: _this.fieldType,\r\n viewableBy: !_this.isDefault ? _this.viewableBy.join(\",\") : \"\",\r\n editableBy: !_this.isDefault ? _this.editableBy.join(\",\") : \"\"\r\n }\r\n if (this.field) {\r\n data.originalName = _this.fielddata.Name;\r\n if (this.editcontext == 'general') {\r\n postUrl = '/AssetTypes/ChangeGeneralAssetTypeField'\r\n } else if (this.editcontext == 'specific') {\r\n postUrl = '/AssetTypes/ChangeSpecificAssetTypeField'\r\n }\r\n } else {\r\n postUrl = '/AssetTypes/AddAssetTypeField'\r\n }\r\n $(\"#saveButton\").prop(\"disabled\", true);\r\n $.ajax({\r\n type: 'POST',\r\n url: postUrl,\r\n data: JSON.stringify(data),\r\n success: function (data) {\r\n if (data.success) {\r\n /* TODO: Add logic for being unable to change field types and such\r\n if (data.data) {\r\n _this.ShowFeedback = true;\r\n // TODO: make coherent with actual file.\r\n _this.changeFile = data.data.file;\r\n } else { */\r\n _this.close();\r\n window.GeneralUtilities.loading(true);\r\n location.reload();\r\n /* } */\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not save changes: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n\r\n $(\"#saveButton\").prop(\"disabled\", false);\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not save changes due to a server error',\r\n \"isSuccess\": false\r\n });\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n }\r\n });\r\n },\r\n\r\n nameChanged: function(e) {\r\n let existingFieldType = this.existingFields.find(x => x['name'] === this.name);\r\n if (existingFieldType) {\r\n this.fieldType = existingFieldType.type;\r\n this.editableBy = existingFieldType.editableBy.split(',');\r\n this.viewableBy = existingFieldType.viewableBy.split(',');\r\n this.isExistingField = true;\r\n this.isDefault = true;\r\n } else {\r\n this.isExistingField = false;\r\n } \r\n },\r\n\r\n requiredChanged: function(e) {\r\n this.isDefault = false;\r\n },\r\n\r\n viewableByChanged: function(e) {\r\n this.isDefault = false;\r\n },\r\n\r\n editableByChanged: function(e) {\r\n this.isDefault = false;\r\n },\r\n\r\n reset: function (e) {\r\n e.preventDefault();\r\n const _this = this\r\n $.ajax({\r\n type: 'POST',\r\n url: '/AssetTypes/ResetAssetTypeFieldRights',\r\n data: JSON.stringify({\r\n id: _this.EditModel.AssetTypeId,\r\n name: _this.name,\r\n context: _this.editcontext\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n window.GeneralUtilities.loading(true);\r\n location.reload();\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not reset asset type field rights: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not reset asset type field rights due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n },\r\n download: function () {\r\n window.alert(this.changeFile);\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.ShowFeedback = false;\r\n this.clearAlert();\r\n this.field = undefined;\r\n this.EditModel = Object.assign({}, this.data);\r\n this.$emit('clearfield');\r\n $('#edit-assettype--add-field').modal('hide');\r\n\r\n // Enable save button again.\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n }\r\n });","import Vue from 'vue'\r\nimport VeeValidate from \"vee-validate\"\r\nimport { Grid, GridInstaller } from '@progress/kendo-grid-vue-wrapper'\r\nimport \"./Details.less\"\r\nimport \"../Grid/Grid.less\"\r\nimport { setColumnTemplate } from \"../Shared/grid-utils\"\r\n\r\nif (document.getElementById('asset-type-details')) {\r\n const alerts = require(\"../Alerts/Alerts.js\");\r\n require('./Edit.js');\r\n require('./AddOrEditField.js');\r\n require('./ToggleMeterReadingFields.js');\r\n Vue.use(GridInstaller);\r\n Vue.use(VeeValidate);\r\n\r\n new Vue({\r\n el: '#asset-type-details',\r\n components: {},\r\n data: {\r\n alerts: [],\r\n EditModel: window.detailModel,\r\n EditTypeField: null,\r\n EditTypeFieldContext: null,\r\n specificDataSource: {\r\n data: window.detailModel.AssetTypeFields,\r\n pageSize: 20\r\n },\r\n generalDataSource: {\r\n data: window.detailModel.GeneralAssetTypeFields,\r\n pageSize: 20\r\n },\r\n computedDataSource: {\r\n data: window.detailModel.ComputedFields,\r\n pageSize: 20\r\n },\r\n pageable: {\r\n buttonCount: 3,\r\n info: true,\r\n type: 'numeric',\r\n pageSizes: [10, 20, 30, 50],\r\n previousNext: true\r\n },\r\n skip: 0,\r\n take: 20,\r\n columns: {\r\n name: { 'field': 'Name', 'title': 'Name', 'filterable': false, 'width': '375px' },\r\n type: { 'field': 'Type', 'title': 'Type', 'filterable': false, 'width': '100px' },\r\n required: { 'field': 'Required', 'title': 'Required', 'filterable': false, 'width': '100px' },\r\n viewableBy: { 'field': \"ViewableBy\", 'title': 'Viewable by', 'filterable': false, 'width': '250px', 'template': \"#: ViewableBy == null ? ' ' : ViewableBy.sort().join(' / ') #\" },\r\n editableBy: { 'field': \"EditableBy\", 'title': 'Editable by', 'filterable': false, 'width': '250px', 'template': \"#: EditableBy == null ? ' ' : EditableBy.sort().join(' / ') #\" },\r\n isDMBI: { 'field': \"IsDMBI\", 'title': 'DMBI*', 'template': \"#= IsDMBI ? 'yes' : 'no' #\", 'filterable': false, 'width': '250px' },\r\n isDefault: { 'field': \"IsDefault\", 'title': 'Default setting', 'template': \"#= IsDefault ? 'yes' : 'no' #\", 'width': '150px' }\r\n }\r\n },\r\n computed: {\r\n specificColumns: function () {\r\n let specificColumns = [\r\n this.columns.name,\r\n this.columns.type,\r\n this.columns.required,\r\n this.columns.viewableBy,\r\n this.columns.editableBy\r\n ];\r\n\r\n specificColumns.push(\r\n setColumnTemplate(this.columns.isDefault, function (dataItem) {\r\n if (dataItem.IsLegacy) {\r\n return \"-\";\r\n }\r\n else {\r\n return dataItem.IsDefault ? \"yes\" : \"no\";\r\n }\r\n })\r\n );\r\n\r\n if (this.EditModel.Editable) {\r\n specificColumns.push({\r\n 'title': ' ',\r\n 'filterable': false,\r\n 'template': function (dataItem) {\r\n if (dataItem.IsStatic) {\r\n return 'Depending on the company settings, this field will be available for that company.';\r\n } else {\r\n return '';\r\n }\r\n },\r\n 'width': '90px'\r\n });\r\n }\r\n\r\n return specificColumns;\r\n },\r\n generalColumns: function () {\r\n let generalColumns = [\r\n this.columns.name,\r\n this.columns.type,\r\n this.columns.required,\r\n this.columns.viewableBy,\r\n this.columns.editableBy,\r\n this.columns.isDMBI,\r\n this.columns.isDefault\r\n ];\r\n\r\n if (this.EditModel.Editable) {\r\n generalColumns.push({ 'title': ' ', 'filterable': false, 'template': '', 'width': '90px' });\r\n }\r\n return generalColumns;\r\n },\r\n computedColumns: function () {\r\n let computedColumns = [\r\n this.columns.name,\r\n this.columns.type,\r\n setColumnTemplate(this.columns.required, \"-\"),\r\n this.columns.viewableBy,\r\n setColumnTemplate(this.columns.editableBy, \"-\"),\r\n setColumnTemplate(this.columns.isDefault, \"-\")\r\n ];\r\n\r\n computedColumns.push({\r\n 'title': ' ',\r\n 'filterable': false,\r\n 'template': function (dataItem) {\r\n return '' + dataItem.Information + '';\r\n },\r\n 'width': '90px'\r\n });\r\n return computedColumns;\r\n }\r\n },\r\n mounted: function () {\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n changeName: function () {\r\n $('#edit-assettype--change-name').modal('show');\r\n },\r\n addField: function () {\r\n $('#edit-assettype--add-field').modal('show');\r\n },\r\n toggleMeterReadingFields: function () {\r\n $('#assettype--toggle--meter-reading-fields').modal('show');\r\n },\r\n clearField: function () {\r\n this.EditTypeField = undefined;\r\n },\r\n gridOnDatabound: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n this.remove(grid);\r\n this.edit(grid);\r\n },\r\n // databound method for the second grid, so the two grids wont process the onbound for eachother twice.\r\n grid2OnDatabound: function (e) {\r\n const grid = this.$refs.grid2.kendoWidget();\r\n this.edit(grid);\r\n },\r\n edit: function (grid) {\r\n const _this = this\r\n grid.element.on('click', '.anchor-edit', function (e) {\r\n e.preventDefault();\r\n const fields = grid.element.attr('id') == \"asset-type-fields-grid\" ? window.detailModel.AssetTypeFields : window.detailModel.GeneralAssetTypeFields;\r\n const assetTypeField = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n grid.element.attr('id') == \"asset-type-fields-grid\" ? _this.EditTypeFieldContext = 'specific' : _this.EditTypeFieldContext = 'general';\r\n _this.EditTypeField = fields.find(x => x.Name == assetTypeField.Name);\r\n _this.addField();\r\n });\r\n },\r\n remove: function (grid) {\r\n const _this = this\r\n grid.element.on('click', '.anchor-remove', function (e) {\r\n e.preventDefault();\r\n const assetTypeField = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n $.ajax({\r\n type: 'POST',\r\n url: '/AssetTypes/RemoveAssetTypeField',\r\n data: JSON.stringify({\r\n id: _this.EditModel.AssetTypeId,\r\n name: assetTypeField.Name\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n window.GeneralUtilities.loading(true);\r\n location.reload();\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not remove asset type field: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not remove asset type field due to a server error',\r\n \"isSuccess\": false\r\n });\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n });\r\n }\r\n }\r\n });\r\n}","import Vue from 'vue'\r\n\r\nmodule.export = Vue.component('editassettypemodal',\r\n {\r\n name: 'editassettype',\r\n props: {\r\n data: Object\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n EditModel: Object.assign({}, this.data), //create deep a copy of the object\r\n ShowError: false,\r\n showWarning: true\r\n };\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n save: function (e) {\r\n e.preventDefault();\r\n const _this = this;\r\n _this.clearAlert();\r\n \r\n $(\"#saveButton\").prop(\"disabled\", true);\r\n $.ajax({\r\n type: 'POST',\r\n url: '/AssetTypes/Edit',\r\n data: JSON.stringify({\r\n assetTypeId: _this.EditModel.AssetTypeId,\r\n assetTypeName: _this.EditModel.AssetTypeName,\r\n masterAssetTypeName: _this.EditModel.MasterAssetTypeName\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n _this.close();\r\n let url = new URL(location.href);\r\n url.searchParams.delete('action');\r\n window.GeneralUtilities.loading(true);\r\n location.reload();\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not change name: {data.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not change name due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.ShowError = false;\r\n this.EditModel = Object.assign({}, this.data);\r\n $('#edit-assettype--change-name').modal('hide');\r\n\r\n // Enable save button again.\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n }\r\n });","import Vue from 'vue'\r\nimport VeeValidate from \"vee-validate\"\r\nimport axios from 'axios';\r\nimport \"./Index.less\"\r\nimport { Grid, GridInstaller } from '@progress/kendo-grid-vue-wrapper'\r\n\r\nif (document.getElementById('vue-asset-types-overview')) {\r\n const actionbar = require(\"../Actionbar/Actionbar.js\");\r\n const alerts = require(\"../Alerts/Alerts.js\");\r\n require(\"./Add.js\");\r\n require(\"./Edit.js\");\r\n require(\"./SetDefaultRights.js\");\r\n\r\n Vue.use(GridInstaller);\r\n Vue.use(VeeValidate);\r\n\r\n const pagesizesession = \"pagesize\";\r\n let pagesize = sessionStorage.getItem(pagesizesession);\r\n if (!pagesize) {\r\n pagesize = 20; \r\n }\r\n\r\n const v = new Vue({\r\n el: '#vue-asset-types-overview',\r\n components: {},\r\n data: function () {\r\n return {\r\n AddModel: {\r\n AssetTypeName: '',\r\n MasterAssetTypeName: '',\r\n DefaultFieldsToBeHidden: null,\r\n },\r\n EditModel: window.preLoadedData.DefaultFields,\r\n dataSource: { //new kendo.data.DataSource({\r\n data: [],\r\n serverPaging: true,\r\n serverFiltering: true,\r\n serverSorting: true,\r\n sort: { field: \"assetTypeName\", dir: \"asc\" },\r\n transport: {\r\n fetchPagedData: undefined,\r\n pagedData: undefined,\r\n read: function (options) {\r\n let pageToken = null;\r\n\r\n const sortingHasChanged = this.pagedData.previousSort && options.data.sort && this.pagedData.previousSort.length == 1 && options.data.sort.length == 1 && (this.pagedData.previousSort[0].dir !== options.data.sort[0].dir || this.pagedData.previousSort[0].field !== options.data.sort[0].field);\r\n\r\n if (this.pagedData.isApplyingFilter) {\r\n this.pagedData.offset.start = 1;\r\n this.pagedData.tokens.values = [];\r\n this.pagedData.tokens.index = -1;\r\n }\r\n\r\n if (this.pagedData.isApplyingFilter) {\r\n this.pagedData.isApplyingFilter = undefined;\r\n }\r\n\r\n if (((this.pagedData.previousSort == undefined || this.pagedData.previousSort.length == 0) && options.data.sort) ||\r\n ((options.data.sort == undefined || options.data.sort.length == 0) && this.pagedData.previousSort) ||\r\n sortingHasChanged) {\r\n this.pagedData.offset.start = 1;\r\n this.pagedData.tokens.values = [];\r\n this.pagedData.tokens.index = -1;\r\n pageToken = null;\r\n }\r\n this.pagedData.previousSort = options.data.sort;\r\n\r\n this.fetchPagedData(pageToken).then(\r\n (response) => {\r\n options.success(response);\r\n },\r\n (error) => {\r\n options.error(error);\r\n }\r\n );\r\n }\r\n },\r\n pageSize: pagesize,\r\n schema: {\r\n data: \"items\",\r\n total: \"totalCount\",\r\n model: {\r\n id: \"id\",\r\n fields: {}\r\n }\r\n }\r\n },//}),\r\n pagedData: {\r\n tokens: {\r\n index: -1,\r\n values: []\r\n }, \r\n offset: {\r\n start: 1,\r\n end: undefined\r\n },\r\n limit: 20,\r\n totalCount: 0,\r\n isFetching: undefined,\r\n isApplyingFilter: undefined,\r\n previousSort: undefined\r\n },\r\n pageSizes: {\r\n default: 20,\r\n values: [10, 20, 30, 50]\r\n },\r\n columns: [\r\n {\r\n 'field': 'selected',\r\n 'title': ' ',\r\n 'filterable': false,\r\n 'sortable': false,\r\n 'headerTemplate':\r\n `
\r\n \r\n \r\n \r\n \r\n
`,\r\n 'template':\r\n `
\r\n \r\n \r\n \r\n \r\n
`,\r\n 'width': '40px'\r\n },\r\n { 'field': 'assetTypeName', 'title': 'Asset Type', 'filterable': false },\r\n { 'field': 'masterAssetTypeName', 'title': 'Master Asset Type', 'filterable': false },\r\n { 'field': 'numberOfFields', 'title': 'Number of fields', 'filterable': false, 'sortable': false }\r\n ],\r\n actionbar: window.preLoadedData.Actionbar,\r\n search: {\r\n visible: true\r\n },\r\n alerts: []\r\n };\r\n },\r\n created: function () {\r\n this.actionbar.searchVisible = true;\r\n this.dataSource.transport.fetchPagedData = this.fetchPagedData;\r\n this.dataSource.transport.pagedData = this.pagedData;\r\n },\r\n mounted: function () {\r\n const deleteAssetTypeButton = this.actionbar.ItemsRight.find(f => f.event === \"ab-delete-asset-types\") ? this.actionbar.ItemsRight.find(f => f.event === \"ab-delete-asset-types\") : this.actionbar.ItemsLeft.find(f => f.event === \"ab-delete-asset-types\");\r\n if (deleteAssetTypeButton != null) {\r\n deleteAssetTypeButton.visible = false;\r\n }\r\n\r\n const addAssetTypeButton = this.actionbar.ItemsRight.find(f => f.event === \"ab-add-asset-type\") ? this.actionbar.ItemsRight.find(f => f.event === \"ab-add-asset-type\") : this.actionbar.ItemsLeft.find(f => f.event === \"ab-add-asset-type\");\r\n if (addAssetTypeButton != null) {\r\n addAssetTypeButton.visible = window.preLoadedData.rights.addAssetType;\r\n }\r\n\r\n const setDefaultRightsButton = this.actionbar.ItemsRight.find(f => f.event === \"ab-set-default-rights\") ? this.actionbar.ItemsRight.find(f => f.event === \"ab-set-default-rights\") : this.actionbar.ItemsLeft.find(f => f.event === \"ab-set-default-rights\");\r\n if (setDefaultRightsButton != null) {\r\n setDefaultRightsButton.visible = window.preLoadedData.rights.setDefaultRights;\r\n }\r\n\r\n const downloadComplianceButton = this.actionbar.ItemsRight.find(f => f.event === \"ab-download-compliance\") ? this.actionbar.ItemsRight.find(f => f.event === \"ab-download-compliance\") : this.actionbar.ItemsLeft.find(f => f.event === \"ab-download-compliance\");\r\n if (downloadComplianceButton != null) {\r\n downloadComplianceButton.visible = window.preLoadedData.rights.downloadCompliance;\r\n }\r\n\r\n const grid = this.$refs.grid.kendoWidget();\r\n const _this = this;\r\n\r\n const $pageSizeSelector = $(\"#pageSizeSelector\");\r\n\r\n $pageSizeSelector.kendoDropDownList({\r\n dataSource: _this.pageSizes.values,\r\n change: function () {\r\n if (!_this.pagedData.isFetching) {\r\n const newPageSize = parseInt($pageSizeSelector.val());\r\n const pageToken = _this.hasPrevToken() ? _this.pagedData.tokens.values[_this.pagedData.tokens.index] : null;\r\n // Only refetch the data when the page size is actually different.\r\n if (newPageSize !== _this.pagedData.limit) {\r\n _this.pagedData.limit = newPageSize;\r\n _this.refreshData();\r\n sessionStorage.setItem(pagesizesession, newPageSize);\r\n }\r\n }\r\n }\r\n });\r\n\r\n grid.element.on('click', '.visual-checkbox',\r\n function (e) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n const cb = this.querySelector(\"input[type='checkbox']\");\r\n cb.checked = !cb.checked;\r\n if (cb.checked) {\r\n $(this.parentElement).addClass(\"state-selected\");\r\n } else {\r\n $(this.parentElement).removeClass(\"state-selected\");\r\n }\r\n const dataItem = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n if (dataItem) {\r\n dataItem.selected = cb.checked;\r\n } else {\r\n grid.dataSource.data().forEach(item => item.selected = cb.checked );\r\n }\r\n\r\n _this.selectOnChange();\r\n grid.refresh();\r\n });\r\n \r\n if (!this.pagedData.offset.end) {\r\n this.pagedData.offset.end = this.pagedData.limit;\r\n }\r\n },\r\n computed: {\r\n columnsWithRights: function () {\r\n let columnsWithRights = JSON.parse(JSON.stringify(this.columns));\r\n if (window.preLoadedData.rights.addAssetType) {\r\n columnsWithRights.push({ 'title': ' ', 'filterable': false, 'template': '', 'width': '90px' });\r\n } else {\r\n columnsWithRights.push({ 'title': ' ', 'filterable': false, 'template': '', 'width': '90px' });\r\n }\r\n return columnsWithRights;\r\n },\r\n prevDisabled: function () {\r\n return !this.hasPrevToken() || this.pagedData.isFetching;\r\n },\r\n nextDisabled: function () {\r\n return !this.hasNextToken() || this.pagedData.isFetching;\r\n } \r\n },\r\n methods: {\r\n hasPrevToken: function () {\r\n return this.pagedData.tokens.index >= 0;\r\n },\r\n hasNextToken: function () {\r\n return this.pagedData.tokens.values.length > 0 &&\r\n (this.pagedData.tokens.index + 1) < (this.pagedData.tokens.values.length)\r\n },\r\n goToPrevPage: function (evt) {\r\n evt.preventDefault();\r\n const grid = this.$refs.grid.kendoWidget();\r\n if (this.hasPrevToken()) {\r\n this.pagedData.tokens.values.splice(this.pagedData.tokens.index + 1, 1);\r\n\r\n this.pagedData.tokens.index -= 1;\r\n const pageToken = this.pagedData.tokens.values[this.pagedData.tokens.index];\r\n\r\n this.fetchPagedData(pageToken, true).then((response) => {\r\n grid.dataSource.data(response.items);\r\n this.calculateOffset(false);\r\n });\r\n }\r\n },\r\n goToNextPage: function (evt) {\r\n evt.preventDefault();\r\n const grid = this.$refs.grid.kendoWidget();\r\n if (this.hasNextToken()) {\r\n this.pagedData.tokens.index += 1;\r\n this.fetchPagedData(this.pagedData.tokens.values[this.pagedData.tokens.index], false).then((response) => {\r\n grid.dataSource.data(response.items);\r\n this.calculateOffset(true);\r\n });\r\n }\r\n },\r\n calculateOffset: function (forward) {\r\n let newOffset = {};\r\n\r\n if (forward) {\r\n newOffset = {\r\n start: this.pagedData.offset.start + this.pagedData.limit,\r\n end: undefined\r\n };\r\n\r\n newOffset.end = (newOffset.start + this.pagedData.limit) - 1;\r\n }\r\n else {\r\n newOffset = {\r\n start: undefined,\r\n end: (this.pagedData.offset.start - 1)\r\n };\r\n\r\n newOffset.start = this.pagedData.offset.start - this.pagedData.limit;\r\n }\r\n\r\n Object.assign(this.pagedData.offset, newOffset);\r\n }, \r\n fetchPagedData: function (pageToken, previous) {\r\n const _this = this;\r\n const _previous = previous;\r\n return new Promise((resolve, reject) => {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const filter = grid.dataSource.filter();\r\n const sort = grid.dataSource.sort();\r\n _this.pagedData.isFetching = true;\r\n \r\n axios.post(\r\n '/AssetTypes/Query',\r\n {\r\n token: pageToken,\r\n limit: _this.pagedData.limit,\r\n filter: filter,\r\n sort: sort\r\n })\r\n .then(response => {\r\n if (response.data.pageToken && !_previous) {\r\n _this.pagedData.tokens.values.push(response.data.pageToken);\r\n }\r\n\r\n _this.pagedData.totalCount = response.data.totalCount;\r\n _this.pagedData.isFetching = false;\r\n\r\n if (response.data.totalCount > _this.pagedData.limit) {\r\n this.pagedData.offset.end = (_this.pagedData.offset.start + _this.pagedData.limit) - 1;\r\n }\r\n else {\r\n this.pagedData.offset.end = response.data.totalCount;\r\n }\r\n resolve(response.data);\r\n }).catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n /**\r\n * Refreshes the data in the grid and resets the selected page offset to the start.\r\n */\r\n refreshData: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n\r\n this.pagedData.tokens = {\r\n index: -1,\r\n values: []\r\n };\r\n\r\n this.pagedData.offset = {\r\n start: 1,\r\n end: undefined\r\n };\r\n\r\n this.fetchPagedData().then(\r\n (response) => {\r\n grid.dataSource.data(response.items);\r\n },\r\n (error) => {\r\n console.error(error);\r\n });\r\n },\r\n refreshGrid: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n grid.dataSource.read();\r\n },\r\n RedirectToDetails: function (id) {\r\n window.location.href = \"./AssetTypes/Details?id=\" + id;\r\n },\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n addTooltip: function addTooltipToTableHeaders(grid) {\r\n grid.element[0].querySelectorAll(\".k-header\").forEach(element => {\r\n const title = $(element).data(\"title\");\r\n\r\n if (!/<[a-z\\][\\s\\S]*>/i.test(title)) {\r\n\r\n $(element).attr('title', title);\r\n }\r\n });\r\n },\r\n actionbarSelectAll: function (checked) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n if (checked) {\r\n grid.dataSource.data().forEach(i => i.selected = true);\r\n } else {\r\n grid.dataSource.data().forEach(i => i.selected = false);\r\n }\r\n this.setHeaderSelectAll(grid, checked);\r\n this.selectOnChange();\r\n grid.refresh();\r\n },\r\n setHeaderSelectAll: function (grid, checked)\r\n {\r\n const cb = grid.element[0].querySelector(\".k-grid-header .visual-checkbox input[type='checkbox']\");\r\n cb.checked = checked;\r\n if (cb.checked) {\r\n $(cb.parentElement.parentElement).addClass(\"state-selected\");\r\n\r\n } else {\r\n $(cb.parentElement.parentElement).removeClass(\"state-selected\");\r\n }\r\n },\r\n actionbarDownloadCompliance: function () {\r\n window.open(\"/AssetTypes/DownloadCompliance\", \"_blank\");\r\n },\r\n actionbarAddAssetType: function () {\r\n $('#add-asset-type').modal('show');\r\n },\r\n\r\n actionbarSetDefaultRights: function () {\r\n $('#set-default-rights').modal('show');\r\n },\r\n actionbarDeleteAssetTypes: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const selectedItems = grid.dataSource.data().filter(i => i.selected);\r\n if (selectedItems.length >= 1) {\r\n $('#delete-asset-type').modal('show');\r\n } else {\r\n alert('Please select one or more Asset Type\\'s to delete');\r\n }\r\n },\r\n confirmedDeleteAssetType: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const selectedItems = grid.dataSource.data().filter(i => i.selected).map(i => i.id);\r\n const _this = this;\r\n $.ajax({\r\n type: \"POST\",\r\n url: \"/AssetTypes/Delete\",\r\n data: JSON.stringify({\r\n assetTypeIds: selectedItems\r\n }),\r\n success: function (data) {\r\n $(\"#delete-asset-type\").modal('hide');\r\n\r\n if (!data.success) {\r\n _this.addAlert({\r\n \"message\": data.message,\r\n \"isSuccess\": false\r\n });\r\n }\r\n else {\r\n _this.refreshGrid();\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert({\r\n \"message\": \"Could not delete Asset Type(\\'s)!\",\r\n \"isSuccess\": false\r\n });\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n },\r\n actionbarSearch: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n grid.dataSource.transport.pagedData.isApplyingFilter = true;\r\n let filter = {};\r\n if (e !== null && e !== '') {\r\n filter = { logic: 'or', filters: [] };\r\n grid.columns.forEach(function (x) {\r\n if (x.field) {\r\n filter.filters.push({\r\n field: x.field,\r\n operator: 'contains',\r\n value: e.trim()\r\n });\r\n }\r\n });\r\n }\r\n grid.dataSource.filter(filter);\r\n },\r\n gridOnDatabound: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n grid.element.unbind('dblclick');\r\n\r\n grid.element.on('dblclick', 'tbody tr[data-uid]',\r\n function (e) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n\r\n const selectedItems = grid.select().toArray().map(function (s) { return grid.dataItem(s).id; });\r\n if (selectedItems.length === 1) {\r\n window.location.href = \"./AssetTypes/Details?id=\" + selectedItems[0];\r\n }\r\n });\r\n\r\n grid.element.on('click', '.anchor-view',\r\n function (e) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n const selectedItems = grid.select().toArray().map(function (s) { return grid.dataItem(s).id; });\r\n if (selectedItems.length === 1) {\r\n window.location.href = \"./AssetTypes/Details?id=\" + selectedItems[0];\r\n }\r\n });\r\n\r\n grid.element.on('click', '.anchor-remove', function (e) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n const assetType = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n $.ajax({\r\n type: 'POST',\r\n url: '/AssetTypes/Delete',\r\n data: JSON.stringify({\r\n assetTypeIds: [assetType.Id]\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n location.reload();\r\n } else {\r\n _this.$emit('alert',\r\n {\r\n \"message\": \"Could not remove Asset Type.\",\r\n \"isSuccess\": false\r\n });\r\n _this.ShowError = true;\r\n }\r\n },\r\n error: function (data) {\r\n _this.ShowError = true;\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n });\r\n\r\n this.addTooltip(grid);\r\n },\r\n selectOnChange: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const selected = grid.dataSource.data().filter(i => i.selected);\r\n\r\n const selectAll = document.getElementById('actionbarSelectAll');\r\n if (selectAll.checked && selected.length < grid.tbody[0].rows.length) {\r\n selectAll.checked = false;\r\n }\r\n\r\n //Delete button Should only be visible when an item is selected.\r\n const deleteLesseeButton = this.actionbar.ItemsRight.find(f => f.event === \"ab-delete-asset-types\") ? this.actionbar.ItemsRight.find(f => f.event === \"ab-delete-asset-types\") : this.actionbar.ItemsLeft.find(f => f.event === \"ab-delete-asset-types\");\r\n if (deleteLesseeButton != null) {\r\n deleteLesseeButton.visible = selected.length > 0;\r\n }\r\n }\r\n }\r\n });\r\n $('.k-header').dblclick(function (e) {\r\n if (e.offsetY > $(this).outerHeight() - 2) {\r\n this.width = getTextWidth(this.textContent, this.font);\r\n //get column number\r\n const colNr = this.getAttribute(\"data-index\");\r\n //select column\r\n //add search in class k-grid-content\r\n let gridCols = document.getElementById(\"asset-type-management-grid\").getElementsByClassName(\"k-grid-content\")[0].querySelector(\"colgroup\").childNodes;\r\n gridCols[colNr].width = $(this).outerWidth();\r\n }\r\n })\r\n}\r\n","import Vue from 'vue'\r\n\r\nmodule.export = Vue.component('setdefaultrightsmodal',\r\n {\r\n name: 'setdefaultrights',\r\n props: {\r\n data: Array\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n EditModel: this.data, //create deep a copy of the object\r\n step: 1,\r\n fieldName: '',\r\n required: false,\r\n viewableBy: [],\r\n editableBy: [],\r\n\r\n currentField: null,\r\n\r\n //grid data\r\n dataSource: {\r\n data: [],\r\n },\r\n columns: [\r\n { 'field': 'FieldName', 'title': 'Name', 'filterable': false },\r\n { 'field': 'Required', 'title': 'Required', 'filterable': false },\r\n { 'field': \"ViewableBy.replace(/,/g, ' /')\", 'title': 'Viewable by', 'filterable': false },\r\n { 'field': \"EditableBy.replace(/,/g, ' /')\", 'title': 'Editable by', 'filterable': false }\r\n ],\r\n\r\n // constants:\r\n users: ['Customer', 'DLL', 'Partner']\r\n };\r\n },\r\n watch: {\r\n editableBy: {\r\n handler(newVal, oldVal) {\r\n let difference = newVal.filter(x => !oldVal.includes(x));\r\n if (difference.length > 0) {\r\n if (!this.viewableBy.includes(difference[0])) {\r\n this.viewableBy.push(difference[0]);\r\n }\r\n }\r\n\r\n },\r\n deep: true\r\n },\r\n viewableBy: {\r\n handler(newVal, oldVal) {\r\n let difference = oldVal.filter(x => !newVal.includes(x));\r\n if (difference.length > 0) {\r\n if (this.editableBy.includes(difference[0])) {\r\n const i = this.editableBy.indexOf(difference[0]);\r\n if (i > -1) {\r\n this.editableBy.splice(i, 1);\r\n }\r\n }\r\n }\r\n\r\n },\r\n deep: true\r\n },\r\n },\r\n mounted: function () {\r\n this.dataSource = this.EditModel;\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n gridOnDatabound: function () {\r\n const grid = this.$refs.fieldmaintenancegrid.kendoWidget();\r\n const _this = this;\r\n grid.element.on('click', 'tbody tr[data-uid]',\r\n function (e) {\r\n e.preventDefault();\r\n const dataItem = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n _this.currentField = dataItem;\r\n });\r\n },\r\n save: function (e) {\r\n e.preventDefault();\r\n const _this = this;\r\n _this.clearAlert();\r\n let postUrl;\r\n const data = {\r\n name: _this.fieldName,\r\n required: _this.required,\r\n viewableBy: _this.viewableBy.join(\",\"),\r\n editableBy: _this.editableBy.join(\",\"),\r\n isPortalDefault : true\r\n }\r\n if (this.currentField.Definition == 'General') {\r\n postUrl = '/AssetTypes/ChangeGeneralAssetTypeField'\r\n } else {\r\n postUrl = '/AssetTypes/ChangeSpecificAssetTypeField'\r\n }\r\n $(\"#saveButton\").prop(\"disabled\", true);\r\n $.ajax({\r\n type: 'POST',\r\n url: postUrl,\r\n data: JSON.stringify(data),\r\n success: function (data) {\r\n if (data.success) {\r\n _this.close();\r\n window.GeneralUtilities.loading(true);\r\n location.reload();\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not update default asset field values: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not update default asset field values due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n },\r\n next: function () {\r\n if (this.currentField != null) {\r\n this.step = 2;\r\n this.fieldName = this.currentField.FieldName;\r\n this.required = this.currentField.Required;\r\n this.viewableBy = this.currentField.ViewableBy.split(',');;\r\n this.editableBy = this.currentField.EditableBy.split(',');;\r\n }\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n const grid = this.$refs.fieldmaintenancegrid.kendoWidget();\r\n grid.clearSelection();\r\n $('#set-default-rights').modal('hide');\r\n this.clearAlert();\r\n this.currentField = null;\r\n this.step = 1;\r\n // Enable save button again.\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n }\r\n });","import Vue from 'vue'\r\nimport \"./ToggleMeterReadingFields.less\"\r\n\r\nmodule.export = Vue.component('togglemeterreadingfieldsmodal',\r\n {\r\n name: 'togglemeterreadingfields',\r\n props: {\r\n data: Object,\r\n fielddata: Object\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n EditModel: Object.assign({}, this.data),\r\n ShowError: false\r\n };\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n save: function (e) {\r\n e.preventDefault();\r\n this.clearAlert();\r\n const _this = this;\r\n if (this.EditModel.MeterReadingFieldsEnabled) {\r\n $.ajax({\r\n type: 'POST',\r\n url: '/AssetTypes/DisableMeterReadingFields',\r\n data: JSON.stringify({\r\n assetTypeId: _this.EditModel.AssetTypeId\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n _this.close();\r\n location.reload();\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could disable meter reading fields: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could disable meter reading fields due to a server error',\r\n \"isSuccess\": false\r\n });\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n } else {\r\n $.ajax({\r\n type: 'POST',\r\n url: '/AssetTypes/EnableMeterReadingFields',\r\n data: JSON.stringify({\r\n assetTypeId: _this.EditModel.AssetTypeId\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n _this.close();\r\n location.reload();\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could enable meter reading fields: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could enable meter reading fields due to a server error',\r\n \"isSuccess\": false\r\n });\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n }\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.ShowFeedback = false;\r\n this.clearAlert();\r\n this.EditModel = Object.assign({}, this.data);\r\n $('#edit-assettype--add-field').modal('hide');\r\n }\r\n }\r\n });","import Vue from 'vue'\r\nimport VeeValidate from \"vee-validate\"\r\n\r\nif (document.getElementById('bottom-container')) {\r\n require('../RedirectModal/SelectCountry.js');\r\n\r\n Vue.use(VeeValidate);\r\n\r\n new Vue({\r\n el: '#bottom-container',\r\n components: {},\r\n data: {\r\n SelectCountryModel: {\r\n title: '',\r\n elementId: 'bottom--select-country',\r\n hrefsProp: undefined,\r\n // Note: id prop equals index in allCountries array\r\n allCountries: [\r\n {\r\n id: 0,\r\n name: 'United States',\r\n hrefs: {\r\n privacyStatement: 'https://www.lesseedirect.com/usprivacy',\r\n disclaimer: '/Content/Disclaimer?country=US',\r\n termsAndConditions: '/Content/TermsAndConditions?country=US'\r\n }\r\n },\r\n {\r\n id: 1,\r\n name: 'Other Countries',\r\n hrefs: {\r\n privacyStatement: 'https://www.dllgroup.com/en/privacy-statement',\r\n disclaimer: '/Content/Disclaimer',\r\n termsAndConditions: '/Content/TermsAndConditions'\r\n }\r\n }\r\n ],\r\n countryId: -1\r\n }\r\n },\r\n methods: {\r\n showSelectCountry: function (title) {\r\n this.SelectCountryModel.title = title;\r\n this.SelectCountryModel.hrefsProp = this.camelCase(title);\r\n $(\"#bottom--select-country\").modal('show');\r\n },\r\n camelCase: function (str) {\r\n return str.replace(/(?:^\\w|[A-Z]|\\b\\w)/g, function (word, index) {\r\n return index == 0 ? word.toLowerCase() : word.toUpperCase();\r\n }).replace(/\\s+/g, '');\r\n }\r\n }\r\n }); \r\n\r\n const showSelectCountryQueryParameter = (new URLSearchParams(window.location.search)).get('showSelectCountry');\r\n if (showSelectCountryQueryParameter) {\r\n v.showSelectCountry(showSelectCountryQueryParameter);\r\n }\r\n}\r\n","import Vue from 'vue'\r\nimport axios from 'axios';\r\n\r\nmodule.export = Vue.component('addcontractmodal',\r\n {\r\n name: 'addcontract',\r\n props: {\r\n data: Object\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n HasBranding: window.hasBranding,\r\n AddModel: {\r\n ContractName: '',\r\n CsdEmail: '',\r\n Type: ''\r\n },\r\n contractList: [],\r\n TypesDisabled: false,\r\n Types: {\r\n 1: { id: 'DLL', val: 'DLL' },\r\n 2: { id: 'Non DLL', val: 'Non DLL' },\r\n },\r\n modalBeingShown: \"add\",\r\n dataSource: {\r\n data: [],\r\n serverPaging: true,\r\n serverFiltering: true,\r\n },\r\n pagedData: {\r\n tokens: {\r\n index: -1,\r\n values: []\r\n },\r\n offset: {\r\n start: 1,\r\n end: undefined\r\n },\r\n limit: 15,\r\n totalCount: 0,\r\n isFetching: undefined\r\n },\r\n columns: [\r\n {\r\n 'field': 'selected',\r\n 'title': ' ',\r\n 'filterable': false,\r\n 'template':\r\n `
\r\n \r\n \r\n
`,\r\n 'width': '40px'\r\n },\r\n { 'field': 'dllAgreementNumber', 'title': 'Contract name', 'filterable': false }, \r\n { 'field': 'customerName', 'title': 'Customer name', 'filterable': false }\r\n ],\r\n backOffices: [],\r\n backOfficeFilter: '',\r\n searchText: ''\r\n };\r\n },\r\n created: function () {\r\n this.AddModel.Type = (this.HasBranding ? 'DLL' : 'Leased');\r\n\r\n this.Types[Object.keys(this.Types)[0]].val = (this.HasBranding ? 'DLL' : 'Leased');\r\n this.Types[Object.keys(this.Types)[1]].val = (this.HasBranding ? 'Non DLL' : 'Non Leased');\r\n this.setBackOfficeReferences();\r\n },\r\n mounted: function () {\r\n if (!this.pagedData.offset.end) {\r\n this.pagedData.offset.end = this.pagedData.limit;\r\n }\r\n },\r\n watch: {\r\n modalBeingShown: function () {\r\n const _this = this;\r\n _this.clearAlert();\r\n }\r\n },\r\n computed: {\r\n prevDisabled: function () {\r\n return !this.hasPrevToken() || this.pagedData.isFetching;\r\n },\r\n nextDisabled: function () {\r\n return !this.hasNextToken() || this.pagedData.isFetching;\r\n }\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n hasPrevToken: function () {\r\n return this.pagedData.tokens.index >= 0;\r\n },\r\n hasNextToken: function () {\r\n return this.pagedData.tokens.values.length > 0 &&\r\n (this.pagedData.tokens.index + 1) < (this.pagedData.tokens.values.length)\r\n },\r\n goToPrevPage: function (evt) {\r\n evt.preventDefault();\r\n\r\n if (this.hasPrevToken()) {\r\n this.pagedData.tokens.values.splice(this.pagedData.tokens.index + 1, 1);\r\n\r\n this.pagedData.tokens.index -= 1;\r\n const pageToken = this.pagedData.tokens.values[this.pagedData.tokens.index];\r\n\r\n this.fetchPagedData(pageToken, true).then(() => {\r\n this.calculateOffset(false);\r\n });\r\n }\r\n },\r\n goToNextPage: function (evt) {\r\n evt.preventDefault();\r\n if (this.hasNextToken()) {\r\n this.pagedData.tokens.index += 1;\r\n\r\n this.fetchPagedData(this.pagedData.tokens.values[this.pagedData.tokens.index], false).then(() => {\r\n this.calculateOffset(true);\r\n });\r\n }\r\n },\r\n calculateOffset: function (forward) {\r\n let newOffset = {};\r\n\r\n if (forward) {\r\n newOffset = {\r\n start: this.pagedData.offset.start + this.pagedData.limit,\r\n end: undefined\r\n };\r\n\r\n newOffset.end = (newOffset.start + this.pagedData.limit) - 1;\r\n }\r\n else {\r\n newOffset = {\r\n start: undefined,\r\n end: (this.pagedData.offset.start - 1)\r\n };\r\n\r\n newOffset.start = this.pagedData.offset.start - this.pagedData.limit;\r\n }\r\n\r\n Object.assign(this.pagedData.offset, newOffset);\r\n },\r\n setBackOfficeReferences: function () {\r\n const _this = this;\r\n axios.get(\"/Contracts/GetBackOfficeReferences\")\r\n .then(response => {\r\n _this.backOffices = response.data.data.filter(x => {\r\n return (typeof x.source !== \"undefined\" && typeof x.instance !== \"undefined\");\r\n });\r\n }).catch(error => {\r\n console.error(error);\r\n });\r\n },\r\n backOfficeChanged: function () {\r\n this.pagedData.tokens.index = -1;\r\n this.pagedData.tokens.values = [];\r\n this.pagedData.totalCount = 0;\r\n\r\n this.dataSource = {};\r\n this.pagedData.isFetching = undefined;\r\n this.fetchPagedData();\r\n },\r\n fetchPagedData: function (pageToken, previous, searchTerm) {\r\n const _this = this;\r\n const _previous = previous;\r\n\r\n return new Promise((resolve, reject) => {\r\n _this.pagedData.isFetching = true;\r\n\r\n axios.post(\r\n '/Contracts/GetContractsFromBackOfficeAssets',\r\n {\r\n token: pageToken,\r\n limit: _this.pagedData.limit\r\n },\r\n {\r\n params: {\r\n source: _this.backOfficeFilter.source,\r\n instance: _this.backOfficeFilter.instance,\r\n search: searchTerm\r\n }\r\n })\r\n .then(response => {\r\n _this.dataSource = response.data.items.map((contract) => {\r\n return {\r\n selected: (_this.contractList.findIndex(item => item.dllAgreementNumber == contract.dllAgreementNumber) > -1),\r\n dllAgreementNumber: contract.dllAgreementNumber,\r\n customerName: contract.customerName\r\n };\r\n });\r\n\r\n if (response.data.pageToken && !_previous) {\r\n _this.pagedData.tokens.values.push(response.data.pageToken);\r\n }\r\n\r\n _this.pagedData.totalCount = response.data.totalCount;\r\n _this.pagedData.isFetching = false;\r\n\r\n if (response.data.totalCount > _this.pagedData.limit) {\r\n this.pagedData.offset.end = (_this.pagedData.offset.start + _this.pagedData.limit) - 1;\r\n }\r\n else {\r\n this.pagedData.offset.end = response.data.totalCount;\r\n }\r\n resolve();\r\n }).catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n searchTextChanged: function () {\r\n if (this.searchText.trim().length === 0) {\r\n this.searchContractList();\r\n }\r\n },\r\n searchContractList: function () {\r\n if (this.pagedData.isFetching)\r\n return;\r\n\r\n this.pagedData.tokens.index = -1;\r\n this.pagedData.tokens.values = [];\r\n this.pagedData.totalCount = 0;\r\n\r\n this.fetchPagedData(null, false, this.searchText.trim());\r\n },\r\n clearSelection() {\r\n if (this.$refs.grid){\r\n const grid = this.$refs.grid.kendoWidget();\r\n this.contractList = [];\r\n grid.dataSource.data().forEach(item => item.selected = false);\r\n grid.refresh();\r\n }\r\n },\r\n add: function (e) {\r\n e.preventDefault();\r\n const _this = this;\r\n _this.clearAlert();\r\n $(\"#saveButton\").prop(\"disabled\", true);\r\n if (this.modalBeingShown == 'search') {\r\n this.addContractsFromBackOffice();\r\n } else {\r\n if (_this.AddModel.ContractName) {\r\n const re = /^([&$\\+,:;=\\?@#\\s<>\\[\\]\\{\\}[\\/]|\\\\\\^%])+/;\r\n const isInvalidContractName = re.test(String(_this.AddModel.ContractName));\r\n if (isInvalidContractName) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not add contract due to invalid contract name',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n return;\r\n }\r\n }\r\n if (_this.AddModel.CsdEmail) {\r\n const re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n const isValidEmail = re.test(String(_this.AddModel.CsdEmail).toLowerCase());\r\n if (isValidEmail) {\r\n _this.addContractCall();\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not add contract due to invalid CSD email address',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n } else {\r\n this.addContractCall();\r\n }\r\n }\r\n },\r\n addContractsFromBackOffice: function () {\r\n const _this = this;\r\n $.ajax({\r\n type: 'POST',\r\n url: '/Contracts/AddContracts',\r\n data: JSON.stringify({\r\n contractNames: _this.contractList.map(item => { return item.dllAgreementNumber }),\r\n backOfficeSource: _this.backOfficeFilter.source \r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n _this.close();\r\n _this.$emit('contract-added');\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not add contract(s): ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not add contract(s) due to a server error',\r\n \"isSuccess\": false\r\n });\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n },\r\n addContractCall: function () {\r\n const _this = this;\r\n _this.clearAlert();\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: '/Contracts/Add',\r\n data: JSON.stringify({\r\n contractName: _this.AddModel.ContractName,\r\n csdEmail: _this.AddModel.CsdEmail,\r\n type: _this.AddModel.Type,\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n _this.close();\r\n _this.$emit('contract-added');\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not add contract: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not add contract due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n },\r\n typeOnChange: function () {\r\n if (this.AddModel.Type === \"Non DLL\" || this.AddModel.Type === \"Non Leased\") {\r\n this.AddModel.ContractName = \"Non Leased Assets\";\r\n } else if (this.AddModel.ContractName === \"Non Leased Assets\") {\r\n this.AddModel.ContractName = \"\";\r\n }\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n this.clearSelection();\r\n\r\n this.AddModel = Object.assign({}, this.data);\r\n this.AddModel.Type = (this.HasBranding ? 'DLL' : 'Leased');\r\n this.backOfficeFilter = '';\r\n\r\n this.dataSource = {};\r\n this.pagedData.isFetching = undefined;\r\n\r\n const $modal = $('#add-contract--add-contract');\r\n\r\n $modal.modal('hide');\r\n $modal.find(\"#saveButton\").removeAttr(\"disabled\");\r\n },\r\n gridOnDatabound: function (e) {\r\n const _this = this;\r\n const grid = _this.$refs.grid.kendoWidget();\r\n\r\n // Unregister previous checkbox click events\r\n grid.element.off('click', '.k-grid-content tr');\r\n grid.element.on('click', '.k-grid-content tr', function (e) {\r\n const item = grid.dataItem($(this).closest(\"tr[data-uid]\"));\r\n item.selected = !item.selected;\r\n if (item.selected) {\r\n _this.contractList.push(item);\r\n } else {\r\n _this.contractList.splice(_this.contractList.findIndex(i => i.dllAgreementNumber == item.dllAgreementNumber), 1);\r\n }\r\n grid.refresh();\r\n });\r\n }\r\n }\r\n });","import Vue from 'vue'\r\nimport axios from \"axios\"\r\nimport VeeValidate from \"vee-validate\"\r\nimport { Grid, GridInstaller } from '@progress/kendo-grid-vue-wrapper'\r\nimport \"./Details.less\"\r\nimport \"../Grid/Grid.less\"\r\n\r\nif (document.getElementById('contract-details')) {\r\n require(\"../Alerts/Alerts.js\");\r\n require('./Edit.js');\r\n require(\"../Documents/Contracts/Add.js\");\r\n require(\"../Documents/Contracts/Edit.js\");\r\n require(\"../Documents/Contracts/Delete.js\"); \r\n Vue.use(GridInstaller);\r\n Vue.use(VeeValidate);\r\n\r\n new Vue({\r\n el: '#contract-details',\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n EditModel: window.detailModel,\r\n AddPortfoliosModel: window.detailModel.SelectPortfolios,\r\n dataSource: {\r\n data: window.detailModel.Portfolios,\r\n pageSize: 20\r\n },\r\n pageable: {\r\n buttonCount: 3,\r\n info: true,\r\n type: 'numeric',\r\n pageSizes: [10, 20, 30, 50],\r\n previousNext: true\r\n },\r\n skip: 0,\r\n take: 20,\r\n columns: [],\r\n Documents: {\r\n selectedItem: null,\r\n dataSource: {\r\n data: window.detailModel.Documents.Values,\r\n pageSize: 10\r\n },\r\n pageable: {\r\n buttonCount: 3,\r\n info: true,\r\n type: 'numeric',\r\n pageSizes: [10, 20, 30, 50],\r\n previousNext: true\r\n },\r\n skip: 0,\r\n take: 20,\r\n columns: [\r\n { 'field': 'Country', 'type': 'text', 'title': 'Country', 'filterable': false },\r\n { 'field': 'DIN', 'type': 'text', 'title': 'DIN', 'filterable': false },\r\n { 'field': 'DocumentName', 'type': 'text', 'title': 'Document name', 'filterable': false },\r\n { 'field': 'Timestamp', 'type': 'datetime', 'title': 'Last modified', 'filterable': false, 'template': \"#= kendo.toString(kendo.parseDate(new Date(Timestamp)), 'yyyy/MM/dd HH:mm') #\" },\r\n { 'field': 'AddedBy', 'type': 'text', 'title': 'Added by', 'filterable': false },\r\n { 'field': 'DateAdded', 'type': 'date', 'title': 'Added on', 'filterable': false, 'format': '{0:yyyy/MM/dd}' }, {\r\n 'title': ' ',\r\n 'filterable': false,\r\n 'template': [\r\n '',\r\n '',\r\n ''\r\n ].join(''),\r\n 'width': '120px'\r\n }\r\n ]\r\n }\r\n }\r\n },\r\n created: function () {\r\n this.loadColumns();\r\n }, \r\n mounted: function () {\r\n if (getUrlParameter('action') === 'edit') {\r\n this.edit();\r\n }\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n edit: function () {\r\n $('#edit-contract--change-contract').modal('show');\r\n },\r\n preEditParent: function (preEditCsdmail) {\r\n this.EditModel.CsdEmail = preEditCsdmail;\r\n },\r\n addPortfolio: function () {\r\n $('#edit-contract--add-portfolio').modal('show');\r\n },\r\n addDocument: function () {\r\n $('#contract-details--add-document').modal('show');\r\n },\r\n loadColumns: function (e) {\r\n this.columns.push({ 'field': 'Name', 'title': 'Portfolio', 'filterable': false });\r\n let rowactions = '';\r\n if (window.detailModel.PortfolioDetailsUrl !== null) {\r\n rowactions += '';\r\n }\r\n else {\r\n rowactions += '';\r\n }\r\n this.columns.push({ 'title': ' ', 'filterable': false, 'template': rowactions, 'width': '90px' })\r\n },\r\n gridOnDatabound: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const _this = this;\r\n grid.element.off('click', '.anchor-view--portfolio');\r\n grid.element.off('click', '.anchor-remove--portfolio');\r\n grid.element.on('click', '.anchor-view--portfolio',\r\n function (e) {\r\n e.preventDefault();\r\n if (window.detailModel.PortfolioDetailsUrl !== null) {\r\n const portfolio = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n window.location.href = \"..\" + window.detailModel.PortfolioDetailsUrl + \"?id=\" + portfolio.Id;\r\n } \r\n });\r\n grid.element.on('click', '.anchor-remove--portfolio', function (e) {\r\n e.preventDefault();\r\n const portfolio = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n _this.clearAlert();\r\n $.ajax({\r\n type: 'POST',\r\n url: '/Contracts/RemovePortfolio',\r\n data: JSON.stringify({\r\n portfolioId: portfolio.Id,\r\n contractId: window.detailModel.ContractId\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n let url = new URL(location.href);\r\n url.searchParams.delete('action');\r\n window.location.href = url.href;\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not remove portfolio: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not remove portfolio due to a server error',\r\n \"isSuccess\": false\r\n });\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n });\r\n },\r\n documentChangedEvent: function (message) {\r\n const _this = this;\r\n\r\n this.addAlert({ \"message\": message, \"isSuccess\": true, \"showPopup\": true });\r\n\r\n const grid = this.$refs.documentgrid.kendoWidget();\r\n const currentDatasource = grid.dataSource;\r\n\r\n axios.get(\"/Documents/GetForContract?contractId=\" + window.detailModel.ContractId).then(((result) => {\r\n _this.Documents.dataSource.data = result.data.Documents.Values;\r\n _this.EditModel.Documents.Values = result.data.Documents.Values;\r\n\r\n currentDatasource.data(result.data.Documents.Values);\r\n\r\n // Re-sort using the intial storting\r\n currentDatasource.sort(currentDatasource.sort());\r\n grid.setDataSource(currentDatasource);\r\n }));\r\n },\r\n documentsGridOnDatabound: function (e) {\r\n const grid = this.$refs.documentgrid.kendoWidget();\r\n const _this = this;\r\n grid.element.off('click', '.anchor-view--document');\r\n grid.element.off('click', '.anchor-edit--document');\r\n grid.element.off('click', '.anchor-remove--document');\r\n\r\n grid.element.on('click', '.anchor-view--document',\r\n function (e) {\r\n e.preventDefault();\r\n const document = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n window.open(document.DownloadUrl, \"_blank\");\r\n });\r\n\r\n grid.element.on('click', '.anchor-edit--document',\r\n function (e) {\r\n e.preventDefault();\r\n const document = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n _this.Documents.selectedItem = Object.assign(\r\n {},\r\n document);\r\n\r\n $('#contract-details--edit-document').modal('show');\r\n });\r\n\r\n grid.element.on('click', '.anchor-remove--document',\r\n function (e) {\r\n e.preventDefault();\r\n const dataItem = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n\r\n _this.Documents.selectedItem = Object.assign({}, dataItem);\r\n\r\n $('#contract-details--delete-document').modal('show');\r\n });\r\n } \r\n }\r\n });\r\n\r\n function getUrlParameter(name) {\r\n name = name.replace(/[\\[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\r\n const regex = new RegExp('[\\\\?&]' + name + '=([^&#]*)');\r\n const results = regex.exec(location.search);\r\n return results === null ? '' : decodeURIComponent(results[1].replace(/\\+/g, ' '));\r\n }\r\n}","import Vue from 'vue'\r\n\r\nmodule.export = Vue.component('editcontractmodal',\r\n {\r\n name: 'editcontract',\r\n props: {\r\n data: Object\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n EditModel: Object.assign({}, this.data),\r\n HasBranding: window.hasBranding,\r\n Types: {\r\n 1: { id: 'DLL', val: (this.HasBranding ? 'DLL' : 'Leased') },\r\n 2: { id: 'Non DLL', val: (this.HasBranding ? 'Non DLL' : 'Non Leased') },\r\n }\r\n };\r\n },\r\n created: function () {\r\n this.Types[Object.keys(this.Types)[0]].val = (this.HasBranding ? 'DLL' : 'Leased');\r\n this.Types[Object.keys(this.Types)[1]].val = (this.HasBranding ? 'Non DLL' : 'Non Leased');\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n save: function (e) {\r\n e.preventDefault();\r\n const _this = this;\r\n $(\"#saveButton\").prop(\"disabled\", true);\r\n _this.clearAlert();\r\n const re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n const isValidMail = re.test(String(_this.EditModel.CsdEmail).toLowerCase());\r\n\r\n if (!isValidMail) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not edit contract due to invalid email address',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n } else {\r\n $.ajax({\r\n type: 'POST',\r\n url: '/Contracts/Edit',\r\n data: JSON.stringify({\r\n contractId: _this.EditModel.ContractId,\r\n contractName: _this.EditModel.ContractName,\r\n // EmailAddress attribute is used, null is valid but empty string is not\r\n csdEmail: _this.EditModel.CsdEmail === \"\" ? null : _this.EditModel.CsdEmail,\r\n type: _this.EditModel.Type\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n _this.$emit('pre-edit', _this.EditModel.CsdEmail);\r\n _this.close();\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not edit contract: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not edit contract due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n }\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n this.EditModel = Object.assign({}, this.data);\r\n $('#edit-contract--change-contract').modal('hide');\r\n\r\n // Enable save button again.\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n }\r\n });","import Vue from 'vue'\r\nimport VeeValidate from \"vee-validate\"\r\nimport { Grid, GridInstaller } from '@progress/kendo-grid-vue-wrapper'\r\n\r\nif (document.getElementById('vue-contracts-overview')) {\r\n const actionbar = require(\"../Actionbar/Actionbar.js\");\r\n const alerts = require(\"../Alerts/Alerts.js\");\r\n require(\"./Add.js\");\r\n require(\"./Edit.js\");\r\n\r\n Vue.use(GridInstaller);\r\n Vue.use(VeeValidate);\r\n\r\n new Vue({\r\n el: '#vue-contracts-overview',\r\n components: {},\r\n data: function () {\r\n return {\r\n GridConfiguration: window.preLoadedData.GridConfiguration,\r\n HasBranding: window.hasBranding,\r\n AddModel: {\r\n ContractName: '',\r\n CsdEmail: '',\r\n Type: (this.HasBranding ? \"DLL\" : \"Leased\")\r\n },\r\n dataSource: {\r\n data: [],\r\n transport: {\r\n read: {\r\n url: \"/Contracts/List\",\r\n contentType: \"application/json\",\r\n type: \"POST\"\r\n },\r\n parameterMap: function (options) {\r\n return kendo.stringify(options);\r\n }\r\n },\r\n serverPaging: true,\r\n serverFiltering: true,\r\n serverSorting: true,\r\n pageSize: 20,\r\n schema: {\r\n data: \"data\",\r\n total: \"total\"\r\n }\r\n },\r\n pageable: {\r\n buttonCount: 3,\r\n info: true,\r\n type: 'numeric',\r\n pageSizes: [10, 20, 30, 50],\r\n previousNext: true\r\n },\r\n columns: [\r\n {\r\n 'field': 'selected',\r\n 'title': ' ',\r\n 'filterable': false,\r\n 'sortable': false,\r\n 'headerTemplate':\r\n `
\r\n \r\n \r\n \r\n \r\n
`,\r\n 'template':\r\n `
\r\n \r\n \r\n \r\n \r\n
`,\r\n 'width': '40px'\r\n },\r\n { 'field': 'contractName', 'title': 'Contract', 'filterable': false },\r\n { 'field': 'backOffice', 'title': 'Source System', 'filterable': false, 'template': \"#: backOffice == null ? ' ' : backOffice #\" },\r\n { 'field': 'lessee', 'title': 'Lesseee', 'filterable': false, 'template': \"#: lessee == null ? ' ' : lessee #\" },\r\n { 'field': 'portfolios', 'title': 'Portfolios', 'filterable': false, 'template': '#: portfolios #' },\r\n { 'field': 'csdEmail', 'title': 'CSD email', 'filterable': false, 'template': \"#: csdEmail == null ? ' ' : csdEmail #\" },\r\n { 'field': 'type', 'title': 'Type', 'filterable': false, 'template': '#: type #' },\r\n { 'title': ' ', 'filterable': false, 'template': '', 'width': '60px' }\r\n ],\r\n actionbar: window.preLoadedData.Actionbar,\r\n search: {\r\n visible: true\r\n },\r\n alerts: []\r\n };\r\n }, \r\n created: function () {\r\n this.actionbar.searchVisible = true;\r\n\r\n const deleteContractButton = this.actionbar.ItemsRight.find(f => f.event === \"ab-delete-contracts\") ? this.actionbar.ItemsRight.find(f => f.event === \"ab-delete-contracts\") : this.actionbar.ItemsLeft.find(f => f.event === \"ab-delete-contracts\");\r\n if (deleteContractButton != null) {\r\n deleteContractButton.visible = window.preLoadedData.rights.deleteContract;\r\n }\r\n\r\n const addContractButton = this.actionbar.ItemsRight.find(f => f.event === \"ab-add-contract\") ? this.actionbar.ItemsRight.find(f => f.event === \"ab-add-contract\") : this.actionbar.ItemsLeft.find(f => f.event === \"ab-add-contract\");\r\n if (addContractButton != null) {\r\n addContractButton.visible = window.preLoadedData.rights.addContract;\r\n }\r\n },\r\n mounted: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const _this = this;\r\n grid.element.on('click', '.visual-checkbox',\r\n function (e) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n const cb = this.querySelector(\"input[type='checkbox']\");\r\n cb.checked = !cb.checked;\r\n if (cb.checked) {\r\n $(this.parentElement).addClass(\"state-selected\");\r\n } else {\r\n $(this.parentElement).removeClass(\"state-selected\");\r\n }\r\n const dataItem = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n if (dataItem) {\r\n dataItem.selected = cb.checked;\r\n } else {\r\n grid.dataSource.data().forEach(item => item.selected = cb.checked );\r\n }\r\n\r\n _this.selectOnChange();\r\n grid.refresh();\r\n });\r\n \r\n //Get Delete portfolios button and set visibility to false on page load. Should only be visible when an item is selected.\r\n const deleteContractsButton = this.actionbar.ItemsRight.find(f => f.event === \"ab-delete-contracts\") ? this.actionbar.ItemsRight.find(f => f.event === \"ab-delete-contracts\") : this.actionbar.ItemsLeft.find(f => f.event === \"ab-delete-contracts\");\r\n if (deleteContractsButton != null) {\r\n deleteContractsButton.visible = false;\r\n } \r\n },\r\n methods: {\r\n refreshGrid: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n grid.dataSource.read();\r\n },\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n addTooltip: function addTooltipToTableHeaders(grid) {\r\n grid.element[0].querySelectorAll(\".k-header\").forEach(element => {\r\n const title = $(element).data(\"title\");\r\n\r\n if (!/<[a-z\\][\\s\\S]*>/i.test(title)) {\r\n\r\n $(element).attr('title', title);\r\n }\r\n });\r\n },\r\n actionbarSelectAll: function (checked) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n if (checked) {\r\n grid.dataSource.data().forEach(i => i.selected = true);\r\n } else {\r\n grid.dataSource.data().forEach(i => i.selected = false);\r\n }\r\n this.setHeaderSelectAll(grid, checked);\r\n this.selectOnChange();\r\n grid.refresh();\r\n },\r\n setHeaderSelectAll: function (grid, checked)\r\n {\r\n const cb = grid.element[0].querySelector(\".k-grid-header .visual-checkbox input[type='checkbox']\");\r\n cb.checked = checked;\r\n if (cb.checked) {\r\n $(cb.parentElement.parentElement).addClass(\"state-selected\");\r\n\r\n } else {\r\n $(cb.parentElement.parentElement).removeClass(\"state-selected\");\r\n }\r\n },\r\n actionbarAddContract: function () {\r\n const addContract = this.$refs.addcontract;\r\n addContract.TypesDisabled = window.preLoadedData.HasDefaultContract;\r\n $('#add-contract--add-contract').modal('show');\r\n },\r\n actionbarDeleteContracts: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const selectedItems = grid.dataSource.data().filter(i => i.selected);\r\n if (selectedItems.length >= 1) {\r\n $('#delete-contract--confirm').modal('show');\r\n } else {\r\n alert('Please select one or more contracts to delete');\r\n }\r\n },\r\n confirmedDeleteContract: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const selectedItems = grid.dataSource.data().filter(i => i.selected).map(i => i.id);\r\n const _this = this;\r\n $.ajax({\r\n type: \"POST\",\r\n url: \"/Contracts/Delete\",\r\n data: JSON.stringify({\r\n contractIds: selectedItems\r\n }),\r\n success: function (data) {\r\n $(\"#delete-contract--confirm\").modal('hide');\r\n\r\n if (!data.success) {\r\n _this.addAlert({\r\n \"message\": data.data,\r\n \"isSuccess\": false\r\n });\r\n } else {\r\n _this.refreshGrid();\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert({\r\n \"message\": \"Could not delete contract(\\'s)!\",\r\n \"isSuccess\": false\r\n });\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n },\r\n actionbarSearch: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n let filter = {};\r\n if (e !== null && e !== '') {\r\n filter = { logic: 'or', filters: [] };\r\n grid.columns.forEach(function (x) {\r\n if (x.field) {\r\n filter.filters.push({\r\n field: x.field,\r\n operator: 'contains',\r\n value: e.trim()\r\n });\r\n }\r\n });\r\n }\r\n grid.dataSource.filter(filter);\r\n },\r\n gridOnDatabound: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n grid.element.unbind('dblclick');\r\n\r\n grid.element.on('dblclick', 'tbody tr[data-uid]',\r\n function (e) {\r\n const selectedItems = grid.select().toArray().map(function (s) { return grid.dataItem(s).id; });\r\n if (selectedItems.length === 1) {\r\n window.location.href = \"./Contracts/Details?id=\" + selectedItems[0];\r\n }\r\n });\r\n\r\n grid.element.on('click', '.anchor-view',\r\n function (e) {\r\n e.preventDefault();\r\n const selectedItems = grid.select().toArray().map(function (s) { return grid.dataItem(s).id; });\r\n if (selectedItems.length === 1) {\r\n window.location.href = \"./Contracts/Details?id=\" + selectedItems[0];\r\n }\r\n });\r\n\r\n grid.element.on('click', '.anchor-edit',\r\n function (e) {\r\n e.preventDefault();\r\n const selectedItems = grid.select().toArray().map(function (s) { return grid.dataItem(s).id; });\r\n if (selectedItems.length === 1) {\r\n window.location.href = \"./Contracts/Details?id=\" + selectedItems[0] + \"&action=edit\";\r\n }\r\n });\r\n\r\n this.addTooltip(grid);\r\n },\r\n selectOnChange: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const selected = grid.dataSource.data().filter(i => i.selected);\r\n\r\n const selectAll = document.getElementById('actionbarSelectAll');\r\n if (selectAll.checked && selected.length < grid.tbody[0].rows.length) {\r\n selectAll.checked = false;\r\n }\r\n\r\n //Delete button Should only be visible when an item is selected.\r\n const deleteContractsButton = this.actionbar.ItemsRight.find(f => f.event === \"ab-delete-contracts\") ? this.actionbar.ItemsRight.find(f => f.event === \"ab-delete-contracts\") : this.actionbar.ItemsLeft.find(f => f.event === \"ab-delete-contracts\");\r\n if (deleteContractsButton != null) {\r\n deleteContractsButton.visible = selected.length > 0;\r\n } \r\n }\r\n }\r\n });\r\n $('.k-header').dblclick(function (e) {\r\n if (e.offsetY > $(this).outerHeight() - 2) {\r\n this.width = getTextWidth(this.textContent, this.font);\r\n //get column number\r\n const colNr = this.getAttribute(\"data-index\");\r\n //select column\r\n //add search in class k-grid-content\r\n let gridCols = document.getElementById(\"contracts-grid\").getElementsByClassName(\"k-grid-content\")[0].querySelector(\"colgroup\").childNodes;\r\n gridCols[colNr].width = $(this).outerWidth();\r\n }\r\n })\r\n}","import Vue from 'vue'\r\nimport VeeValidate from \"vee-validate\"\r\nimport { Grid, GridInstaller } from '@progress/kendo-grid-vue-wrapper'\r\nimport axios from \"axios\"\r\nimport \"./Index.less\"\r\nimport \"../Styles/app.less\"\r\n\r\nif (document.getElementById('vue-asset-dashboard-overview')) {\r\n require(\"./RequestNewLease.js\");\r\n require(\"../Alerts/Alerts.js\");\r\n\r\n Vue.use(GridInstaller);\r\n Vue.use(VeeValidate);\r\n\r\n new Vue({\r\n el: '#vue-asset-dashboard-overview',\r\n components: {\r\n Grid\r\n },\r\n data: function () {\r\n return {\r\n alerts: [],\r\n provider: {\r\n context: null\r\n },\r\n isGraphLoading: false,\r\n chartInterval: \"Month\",\r\n chartIntervalOptions: [\"Month\", \"Quarter\", \"Half year\"],\r\n RequestNewLeaseModel: window.preLoadedData.RequestNewLeaseModel,\r\n ChartConfiguration: {\r\n type: 'line',\r\n data: {\r\n labels: window.preLoadedData.AvailableMonths,\r\n datasets: [{\r\n label: window.hasBranding ? 'DLL Assets' : 'Leased Assets',\r\n backgroundColor: window.chartColors.brandedBlue,\r\n borderColor: window.chartColors.brandedBlue,\r\n data: window.preLoadedData.DllAssets,\r\n fill: false,\r\n }, {\r\n label: window.hasBranding ? 'Non DLL Assets' : 'Non Leased Assets',\r\n fill: false,\r\n backgroundColor: window.chartColors.brandedPurple,\r\n borderColor: window.chartColors.brandedPurple,\r\n data: window.preLoadedData.LesseeAssets,\r\n }]\r\n },\r\n options: {\r\n responsive: true,\r\n backgroundColor: 'rgba(255,255,255)',\r\n title: {\r\n display: false,\r\n text: 'Overview of assets and experiation date'\r\n },\r\n tooltips: {\r\n mode: 'index',\r\n intersect: false,\r\n },\r\n hover: {\r\n mode: 'nearest',\r\n intersect: true\r\n },\r\n legend: {\r\n align: 'start',\r\n position: 'bottom',\r\n labels: {\r\n boxWidth: 15\r\n }\r\n },\r\n scales: {\r\n xAxes: [{\r\n display: true,\r\n scaleLabel: {\r\n display: true\r\n },\r\n ticks: {\r\n callback: function (value, index, values) {\r\n if (chartInterval.value === \"Month\") {\r\n return value;\r\n } else if (chartInterval.value === \"Quarter\" && index % 3 === 0) {\r\n return value;\r\n } else if (chartInterval.value === \"Half year\" && index % 6 === 0) {\r\n return value;\r\n } else {\r\n return '';\r\n }\r\n }\r\n }\r\n }],\r\n yAxes: [{\r\n display: true,\r\n scaleLabel: {\r\n display: true,\r\n labelString: 'Assets'\r\n }\r\n }]\r\n },\r\n onResize: function () {\r\n $('#asset-type-status-overview').height(arguments[1].height);\r\n }\r\n }\r\n },\r\n dataSource: {\r\n data: window.preLoadedData.AssetTypeStatusItems,\r\n pageSize: 5\r\n },\r\n pageable: {\r\n messages: {\r\n display: \"{1}/{2}\"\r\n }\r\n },\r\n skip: 0,\r\n take: 5,\r\n columns: [{\r\n field: \"AssetType\",\r\n title: \"Asset type\"\r\n }, {\r\n field: \"Brand\",\r\n title: \"Brand\"\r\n }, {\r\n field: \"StatusCounts\",\r\n title: \"Status\",\r\n template: function () {\r\n const dataItem = arguments[0];\r\n let html = \"\";\r\n if (dataItem.StatusCounts.Active > 0) {\r\n html += \"\";\r\n }\r\n else {\r\n html += \"\"\r\n }\r\n if (dataItem.StatusCounts.Blank > 0) {\r\n html += \"\";\r\n }\r\n else {\r\n html += \"\"\r\n }\r\n if (dataItem.StatusCounts.Terminated > 0) {\r\n html += \"\";\r\n }\r\n else {\r\n html += \"\"\r\n }\r\n return html;\r\n }\r\n }, {\r\n field: \"TotalAssets\",\r\n title: \"Total assets\"\r\n }],\r\n };\r\n },\r\n provide() {\r\n return {\r\n provider: this.provider\r\n }\r\n },\r\n mounted: function () {\r\n if (!document.getElementById('maincontent').classList.contains('mobile-view')) {\r\n const canvas = document.getElementById('canvas');\r\n this.provider.context = canvas.getContext('2d')\r\n window.myLine = new Chart(this.provider.context, this.ChartConfiguration);\r\n $('#asset-type-status-overview').height(canvas.height);\r\n }\r\n const faqHeight = $('#frequently-asked-questions').parents('.dashboard-box').height();\r\n $('#request-new-lease').parents('.dashboard-box').attr('style', 'min-height: ' + (faqHeight + 40 ) + 'px'); // set min height in case of longer paragraph and add the padding of 40 px\r\n const pager = $(\".k-grid-pager\");\r\n pager.find(\"button.k-pager-first, button.k-pager-last, select.k-dropdown, div.k-pager-numbers\").each(function (i) {\r\n $(this).remove();\r\n });\r\n pager.find(\"button.k-pager-nav\").each(function (i) {\r\n $(this).removeClass(\"k-button-flat\");\r\n $(this).removeClass(\"k-button-flat-base\");\r\n });\r\n const nextButton = pager.find(\"button.k-pager-nav\").last();\r\n nextButton.detach();\r\n pager.append(\"
\");\r\n $(\".k-pager-numbers-wrap.order-10\").append(nextButton);\r\n pager.detach();\r\n const legenda = $(\"#asset-type-status-bar\");\r\n legenda.append(pager);\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n requestedNewLease: function (message) {\r\n this.addAlert({ \"message\": message, \"isSuccess\": true, \"showPopup\": true });\r\n },\r\n requestNewLeaseForm: function () {\r\n $('#request-new-lease-modal').modal('show');\r\n },\r\n setChartData: function (labels, leasedAssetData, nonLeasedAssetData) {\r\n this.ChartConfiguration.data.labels = labels;\r\n this.ChartConfiguration.data.datasets[0].data = leasedAssetData;\r\n this.ChartConfiguration.data.datasets[1].data = nonLeasedAssetData;\r\n\r\n if (window.myLine) {\r\n window.myLine.destroy();\r\n }\r\n\r\n this.isGraphLoading = false;\r\n const canvas = document.getElementById('canvas');\r\n this.provider.context = canvas.getContext('2d')\r\n window.myLine = new Chart(this.provider.context, this.ChartConfiguration);\r\n },\r\n onIntervalChange: function () {\r\n const _this = this;\r\n this.setChartData([], [], []);\r\n this.isGraphLoading = true;\r\n const interval = this.chartInterval;\r\n let monthsToDisplay = 6;\r\n if (interval === \"Quarter\") {\r\n monthsToDisplay = 24;\r\n } else if (interval === \"Half year\") {\r\n monthsToDisplay = 36;\r\n }\r\n \r\n axios.get(`/Dashboard/GetChartData?monthsToDisplay=${monthsToDisplay}`).then(((result) => {\r\n _this.setChartData(result.data.availableMonths, result.data.dllAssets, result.data.lesseeAssets);\r\n }));\r\n }\r\n }\r\n });\r\n}","import Vue from 'vue'\r\nimport DatePicker from 'vue2-datepicker'\r\nimport 'vue2-datepicker/index.css'\r\nimport axios from \"axios\"\r\n\r\nmodule.export = Vue.component('requestnewlease',\r\n {\r\n name: \"requestnewlease\",\r\n props: {\r\n data: Object\r\n },\r\n components: {\r\n DatePicker\r\n },\r\n data: function () {\r\n return {\r\n alerts: [],\r\n RequestNewLeaseModel: structuredClone(this.data), //create deep a copy of the object\r\n };\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n validateBeforeSubmit: function (event) {\r\n event.preventDefault();\r\n const vueObject = this;\r\n\r\n this.$validator.validateAll().then((result) => {\r\n if (result) {\r\n const postData = JSON.stringify({\r\n Country: vueObject.RequestNewLeaseModel.Country,\r\n Industry: vueObject.RequestNewLeaseModel.Industry,\r\n ExtraInformation: vueObject.RequestNewLeaseModel.ExtraInformation,\r\n FirstName: vueObject.RequestNewLeaseModel.FirstName,\r\n LastName: vueObject.RequestNewLeaseModel.LastName,\r\n Email: vueObject.RequestNewLeaseModel.Email,\r\n TelephoneNumber: vueObject.RequestNewLeaseModel.TelephoneNumber\r\n });\r\n axios.post('/Forms/RequestNewLease',\r\n postData,\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n }).then((response) => {\r\n if (response.data.success) {\r\n this.$emit('lease-requested', \"Successfully sent new lease request\");\r\n this.closeModal();\r\n } else {\r\n this.addAlert(\r\n {\r\n \"message\": `Could not send lease request: ${response.data.data}`,\r\n \"isSuccess\": false\r\n });\r\n }\r\n }).catch(error => {\r\n console.error(error);\r\n this.addAlert(\r\n {\r\n \"message\": 'Could not send lease request due to a server error',\r\n \"isSuccess\": false\r\n });\r\n });\r\n } else {\r\n this.addAlert({\r\n \"message\": 'Some fields in the form are invalid',\r\n \"isSuccess\": false\r\n });\r\n }\r\n });\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.closeModal();\r\n },\r\n closeModal: function () {\r\n this.clearAlert();\r\n this.RequestNewLeaseModel = structuredClone(this.data);\r\n $('#request-new-lease-modal').modal('hide');\r\n }\r\n }\r\n });\r\n","import Vue from 'vue'\r\nimport DatePicker from 'vue2-datepicker'\r\nimport 'vue2-datepicker/index.css'\r\nimport axios from \"axios\"\r\n\r\nmodule.export = Vue.component('addAssetDocumentModal',\r\n {\r\n name: 'addAssetDocumentModal',\r\n props: {\r\n asset: Object,\r\n enabledTypes: Array,\r\n sourceSystem: String\r\n },\r\n components: {\r\n DatePicker\r\n },\r\n data: function () {\r\n return {\r\n alerts: [],\r\n relatedAsset: this.asset,\r\n formData: new FormData(),\r\n assignments: ['Contract', 'Asset'],\r\n newItem: {\r\n Assignment: ''\r\n },\r\n isSaved: false,\r\n isUploading: undefined,\r\n source: this.sourceSystem\r\n };\r\n },\r\n watch: {\r\n 'asset': function (newValue) {\r\n this.relatedAsset = newValue;\r\n },\r\n 'sourceSystem': function (newValue) {\r\n if (newValue) {\r\n this.source = newValue;\r\n }\r\n }\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n resetForm: function () {\r\n this.formData = new FormData();\r\n this.clearAlert();\r\n this.isSaved = false;\r\n this.isUploading = undefined;\r\n const form = document.getElementById(\"addForm\");\r\n form.reset();\r\n },\r\n validateBeforeSubmit: function (event) {\r\n this.$validator.validateAll().then((result) => {\r\n if (result) {\r\n $(\"#saveDocumentButton\").prop(\"disabled\", true);\r\n this.isUploading = true;\r\n this.formData.set(\"assignment\", this.newItem.Assignment);\r\n this.newItem.Assignment == 'Asset' ? this.formData.set(\"associatedString\", this.relatedAsset.Id) : this.formData.set(\"associatedString\", this.relatedAsset.ContractIdentifier.Value) ;\r\n axios.post('/documents/AddForAsset',\r\n this.formData,\r\n {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n }).then((response) => {\r\n this.isUploading = false;\r\n if (response.data.success) {\r\n this.isSaved = true;\r\n $(\"#saveDocumentButton\").prop(\"disabled\", false)\r\n $('#asset-details--add-document').modal('hide');\r\n this.$emit('document-added', \"Document(s) added succesfully\", \"ADDED\", Object.assign({}, this.newItem));\r\n this.resetForm();\r\n } else {\r\n this.addAlert(\r\n {\r\n \"message\": `Could not add document: ${response.data.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveDocumentButton\").prop(\"disabled\", false);\r\n }\r\n }).catch(error => {\r\n this.isUploading = false;\r\n $(\"#saveDocumentButton\").prop(\"disabled\", false)\r\n console.error(error);\r\n this.isSaved = false;\r\n if (error.message === 'Network Error') {\r\n this.addAlert(\r\n {\r\n \"message\": 'Uploading and scanning file took longer than expected. Please refresh page to see if upload was successful',\r\n \"isSuccess\": false\r\n });\r\n } else {\r\n this.addAlert(\r\n {\r\n \"message\": 'Could not add document due to a server error',\r\n \"isSuccess\": false\r\n });\r\n }\r\n });\r\n return;\r\n } else {\r\n this.addAlert(\r\n {\r\n \"message\": 'Some fields in the form are invalid',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveDocumentButton\").prop(\"disabled\", false);\r\n }\r\n });\r\n },\r\n documentChanged: function (e) {\r\n if (e.target.files.length > 0) {\r\n $(\"#saveDocumentButton\").prop(\"disabled\", false);\r\n } else {\r\n $(\"#saveDocumentButton\").prop(\"disabled\", true);\r\n }\r\n this.formData.delete('files');\r\n for (let i = 0; i < e.target.files.length; i++) {\r\n const selectedFile = e.target.files[i];\r\n this.newItem.Attachment = selectedFile;\r\n this.formData.append('files', this.newItem.Attachment, this.newItem.Attachment.name);\r\n }\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.resetForm();\r\n\r\n $('#asset-details--add-document').modal('hide');\r\n },\r\n }\r\n });","import Vue from 'vue'\r\nimport axios from \"axios\"\r\n\r\nmodule.export = Vue.component('deleteAssetDocumentModal',\r\n {\r\n name: 'deleteAssetDocumentModal',\r\n props: {\r\n item: Object\r\n },\r\n data: function () {\r\n return {\r\n alerts: [],\r\n formData: new FormData(),\r\n currentItem: {},\r\n isDeleted: false\r\n }\r\n },\r\n components: {},\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n resetForm: function () {\r\n this.currentItem = {};\r\n this.formData = new FormData();\r\n this.clearAlert();\r\n },\r\n validateBeforeSubmit: function (event) {\r\n this.$validator.validateAll().then((result) => {\r\n if (result) {\r\n this.clearAlert();\r\n $(\"#deleteButton\").prop(\"disabled\", true);\r\n\r\n this.formData.set(\"DocumentId\", this.currentItem.Id);\r\n\r\n axios.post('/Documents/DeleteForAsset', this.formData, {})\r\n .then((response) => {\r\n if (response.data.success) {\r\n this.isDeleted = true;\r\n $(\"#deleteButton\").prop(\"disabled\", false);\r\n $('#asset-details--delete-document').modal('hide');\r\n this.$emit('document-deleted', \"Document was deleted succesfully\", \"DELETED\", Object.assign({}, this.currentItem));\r\n this.resetForm();\r\n } else {\r\n this.addAlert(\r\n {\r\n \"message\": `Could not delete document: ${response.data.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#deleteButton\").prop(\"disabled\", false);\r\n }\r\n }).catch(error => {\r\n $(\"#deleteButton\").prop(\"disabled\", false)\r\n console.error(error);\r\n this.isDeleted = false;\r\n this.addAlert( \r\n {\r\n \"message\": 'Could not delete document due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#deleteButton\").prop(\"disabled\", false);\r\n });\r\n return;\r\n }\r\n });\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.resetForm();\r\n $('#asset-details--delete-document').modal('hide');\r\n },\r\n },\r\n watch: {\r\n 'item': function (newValue) {\r\n this.currentItem = newValue;\r\n }\r\n }\r\n });","import Vue from 'vue'\r\nimport { formatDateTimeToDate } from '../../Shared/date-utils';\r\n\r\nmodule.export = Vue.component('viewAssetDocumentModal',\r\n {\r\n name: 'viewAssetDocumentModal',\r\n props: {\r\n item: Object\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n currentItem: {},\r\n previewUrl: undefined\r\n };\r\n },\r\n methods: {\r\n formattedDate: function (date) {\r\n if (!date)\r\n return;\r\n return formatDateTimeToDate(date.toISOString());\r\n },\r\n close: function () {\r\n this.currentItem = {};\r\n $('#asset-details--view-document').modal('hide');\r\n },\r\n loadBlobData: function (uri) {\r\n return new Promise((resolve, reject) => {\r\n fetch(uri)\r\n .then((response) => {\r\n response.blob()\r\n .then((blob) => resolve(blob))\r\n .catch(e => reject(e));\r\n }).catch(e => reject(e));\r\n });\r\n }\r\n },\r\n computed: {\r\n showPreviewType: function () {\r\n if (this.currentItem.FileType && this.currentItem.FileType.includes(\"Image\")) {\r\n return 'image'\r\n }\r\n else if (this.currentItem.FileType && this.currentItem.FileType.includes(\"pdf\")) {\r\n return 'pdf'\r\n }\r\n else if (this.currentItem.FileType && this.currentItem.FileType.includes(\"docx\")) {\r\n return 'doc'\r\n }\r\n else {\r\n return undefined;\r\n }\r\n }\r\n },\r\n watch: {\r\n 'item': function (newValue) {\r\n this.currentItem = newValue;\r\n\r\n if (this.currentItem.FileType.includes(\"docx\")) {\r\n this.loadBlobData(this.currentItem.ViewUrl).then((data) => {\r\n\r\n // NOTE: docx is just a global variables because the dependency is loaded in the bundleBottom.js file\r\n docx.renderAsync(data, document.getElementById(\"preview-word-file\"), null)\r\n .catch(e => console.error(e))\r\n });\r\n }\r\n }\r\n }\r\n });","import Vue from 'vue'\r\nimport axios from \"axios\"\r\n\r\nmodule.export = Vue.component('addContractDocumentModal',\r\n {\r\n name: 'addContractDocumentModal',\r\n props: {\r\n contract: Object\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n relatedContract: this.contract,\r\n countries: this.contract.Documents.Countries,\r\n newItem: {\r\n country: this.contract.Documents.Countries.filter(c => c.CountryName === this.contract.Documents.DefaultCountry).length > 0 ? this.contract.Documents.DefaultCountry : '',\r\n searchDocument: ''\r\n },\r\n isSaved: false,\r\n dataSource: {\r\n data: []\r\n },\r\n columns: [\r\n { 'template': '
', 'width': '40px' },\r\n { 'field': 'DocumentName', 'title': 'Document name', 'filterable': false },\r\n { 'field': 'TimestampFromEpoch', 'title': 'Last modified', 'filterable': false, 'template': \"#= kendo.toString(kendo.parseDate(TimestampFromEpoch), 'yyyy/MM/dd HH:mm') #\", 'width': '200px' },\r\n {\r\n 'title': ' ',\r\n 'filterable': false,\r\n 'template': [\r\n ''\r\n ].join(''),\r\n 'width': '60px'\r\n }\r\n ],\r\n isFetching: undefined,\r\n documentList: []\r\n };\r\n },\r\n watch: {\r\n 'contract': function (newValue) {\r\n this.relatedContract = newValue;\r\n }\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n resetForm: function () {\r\n this.newItem = {\r\n country: this.contract.Documents.Countries.filter(c => c.CountryName === this.contract.Documents.DefaultCountry).length > 0 ? this.contract.Documents.DefaultCountry : '',\r\n searchDocument: ''\r\n },\r\n this.clearAlert();\r\n this.isSaved = false;\r\n this.dataSource = {};\r\n this.documentList = [];\r\n const form = document.getElementById(\"addForm\");\r\n form.reset();\r\n },\r\n searchKeydown: function(e) {\r\n if (this.newItem.country !== '' && this.newItem.searchDocument !== '' && e.keyCode == 13) {\r\n this.searchInLibraries();\r\n } \r\n },\r\n searchInLibraries: function() {\r\n const library = this.countries.filter(c => c.CountryName === this.newItem.country).map(c => c.Library);\r\n this.searchDocuments(library, 'Contract Number', this.newItem.searchDocument);\r\n },\r\n validateBeforeSubmit: function (event) {\r\n this.$validator.validateAll().then((result) => {\r\n if (result) {\r\n $(\"#saveDocumentButton\").prop(\"disabled\", true);\r\n axios.post('/Documents/AddForContract', { LinkedDocuments: this.documentList } , {})\r\n .then(response => {\r\n if (response.data.success) {\r\n this.isSaved = true;\r\n $(\"#saveDocumentButton\").prop(\"disabled\", false)\r\n $('#contract-details--add-document').modal('hide');\r\n this.$emit('document-added', \"Linked document(s) added succesfully\", \"ADDED\", Object.assign({}, this.newItem));\r\n this.resetForm();\r\n } else {\r\n this.addAlert(\r\n {\r\n \"message\": `Could not addlinked documents: ${response.data.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveDocumentButton\").prop(\"disabled\", false);\r\n }\r\n }).catch(error => {\r\n $(\"#saveDocumentButton\").prop(\"disabled\", false)\r\n console.error(error);\r\n this.isSaved = false;\r\n this.isFetching = false;\r\n this.addAlert(\r\n {\r\n \"message\": 'Could not add linked documents due to a server error',\r\n \"isSuccess\": false\r\n });\r\n }); \r\n } else {\r\n this.addAlert(\r\n {\r\n \"message\": 'Some fields in the form are invalid',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveDocumentButton\").prop(\"disabled\", false);\r\n }\r\n });\r\n },\r\n searchDocuments: function(template, param, value) {\r\n const _this = this;\r\n _this.isFetching = true;\r\n _this.dataSource = {};\r\n axios.get(`/Documents/SearchDocuments?template=${template}¶m=${param}&value=${value}`)\r\n .then(response => {\r\n const existingDocuments = _this.contract.Documents.Values;\r\n response.data.forEach((d) => {\r\n if (existingDocuments.find(ed => ed.DIN === d.DIN && ed.Timestamp === d.Timestamp)) {\r\n d.Selectable = false;\r\n d.Selected = false;\r\n } else {\r\n d.Selectable = true;\r\n d.Selected = false;\r\n }\r\n d.DocumentName = d.DocumentName\r\n d.TimestampFromEpoch = new Date(d.Timestamp);\r\n });\r\n _this.isFetching = false;\r\n _this.dataSource = response.data;\r\n }).catch(error => {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not search documents due to a server error',\r\n \"isSuccess\": false\r\n });\r\n _this.isFetching = false;\r\n });\r\n },\r\n selectedRows(e) {\r\n this.documentList = [];\r\n const _this = this;\r\n const isoCountryCode = this.countries.filter(c => c.CountryName === this.newItem.country).map(c => c.IsoCode)[0];\r\n const rows = e.sender.dataSource.data();\r\n rows.forEach(r => {\r\n if (r.Selected) {\r\n _this.documentList.push({ ContractId: _this.relatedContract.ContractId, Template: r.Template, DocumentName: r.DocumentName, DIN: r.DIN, Timestamp: r.Timestamp, IsoCountryCode: isoCountryCode });\r\n }\r\n });\r\n if (_this.documentList.length > 0) {\r\n $(\"#saveDocumentButton\").prop(\"disabled\", false);\r\n } else {\r\n $(\"#saveDocumentButton\").prop(\"disabled\", true);\r\n }\r\n },\r\n gridOnDatabound: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const _this = this;\r\n grid.element.off('click', '.anchor-view--document');\r\n grid.element.off('click', '.visual-checkbox');\r\n \r\n grid.element.on('click', '.anchor-view--document',\r\n function (e) {\r\n e.preventDefault();\r\n const document = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n window.open(document.DownloadUrl, \"_blank\");\r\n });\r\n\r\n grid.element.on('click', '.visual-checkbox',\r\n function (e) {\r\n e.preventDefault();\r\n const cb = this.querySelector(\"input[type='checkbox']\");\r\n if (!cb.disabled) {\r\n cb.checked = !cb.checked;\r\n const item = $(this).closest(\"tr[data-uid\");\r\n const index = item.index();\r\n const doc = grid.dataItem(item);\r\n doc.Selected = cb.checked;\r\n if (cb.checked) {\r\n $(this.parentElement).addClass(\"state-selected\");\r\n _this.dataSource[index].Selected = true;\r\n } else {\r\n $(this.parentElement).removeClass(\"state-selected\");\r\n _this.dataSource[index].Selected = false;\r\n }\r\n grid.trigger('change');\r\n }\r\n });\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.resetForm();\r\n this.isFetching = undefined;\r\n $('#contract-details--add-document').modal('hide');\r\n },\r\n }\r\n });","import Vue from 'vue'\r\nimport axios from \"axios\"\r\n\r\nmodule.export = Vue.component('deleteContractDocumentModal',\r\n {\r\n name: 'deleteContractDocumentModal',\r\n props: {\r\n item: Object\r\n },\r\n data: function () {\r\n return {\r\n alerts: [],\r\n currentItem: {},\r\n isDeleted: false\r\n }\r\n },\r\n components: {},\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n resetForm: function () {\r\n this.currentItem = {};\r\n this.clearAlert();\r\n },\r\n validateBeforeSubmit: function (event) {\r\n this.$validator.validateAll().then((result) => {\r\n if (result) {\r\n this.clearAlert();\r\n $(\"#deleteButton\").prop(\"disabled\", true);\r\n\r\n axios.post('/Documents/DeleteForContract', { LinkedDocumentId: this.currentItem.Id } , {})\r\n .then((response) => {\r\n if (response.data.success) {\r\n this.isDeleted = true;\r\n $(\"#deleteButton\").prop(\"disabled\", false);\r\n $('#contract-details--delete-document').modal('hide');\r\n this.$emit('document-deleted', \"Linked document was deleted succesfully\", \"DELETED\", Object.assign({}, this.currentItem));\r\n this.resetForm();\r\n } else {\r\n this.addAlert(\r\n {\r\n \"message\": `Could not delete linked document: ${response.data.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#deleteButton\").prop(\"disabled\", false);\r\n }\r\n }).catch(error => {\r\n $(\"#deleteButton\").prop(\"disabled\", false)\r\n console.error(error);\r\n this.isDeleted = false;\r\n this.addAlert( \r\n {\r\n \"message\": 'Could not delete linked document due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#deleteButton\").prop(\"disabled\", false);\r\n });\r\n return;\r\n }\r\n });\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.resetForm();\r\n $('#contract-details--delete-document').modal('hide');\r\n },\r\n },\r\n watch: {\r\n 'item': function (newValue) {\r\n this.currentItem = newValue;\r\n }\r\n }\r\n });","import Vue from 'vue'\r\nimport axios from \"axios\"\r\n\r\nmodule.export = Vue.component('editContractDocumentModal',\r\n {\r\n name: 'editContractDocumentModal',\r\n props: {\r\n item: Object\r\n },\r\n data: function () {\r\n return {\r\n alerts: [],\r\n currentItem: {},\r\n isSaved: false\r\n }\r\n },\r\n components: {},\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n resetForm: function () {\r\n this.currentItem = {};\r\n this.clearAlert();\r\n this.isSaved = false;\r\n const form = document.getElementById(\"editForm\");\r\n form.reset();\r\n },\r\n validateBeforeSubmit: function (event) {\r\n this.$validator.validateAll().then((result) => {\r\n if (result) {\r\n this.clearAlert();\r\n $(\"#saveDocumentButton\").prop(\"disabled\", true);\r\n\r\n axios.post('/Documents/EditForContract', { \r\n LinkedDocumentId: this.currentItem.Id,\r\n DocumentName: this.currentItem.DocumentName\r\n }, \r\n {})\r\n .then((response) => {\r\n if (response.data.success) {\r\n this.isSaved = true;\r\n $(\"#saveDocumentButton\").prop(\"disabled\", false);\r\n $('#contract-details--edit-document').modal('hide');\r\n this.$emit('document-edited', \"Linked document was edited succesfully\", \"EDITED\", Object.assign({}, this.currentItem));\r\n this.resetForm();\r\n } else {\r\n this.addAlert(\r\n {\r\n \"message\": `Could not edit linked document: ${response.data.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveDocumentButton\").prop(\"disabled\", false);\r\n }\r\n }).catch(error => {\r\n $(\"#saveDocumentButton\").prop(\"disabled\", false)\r\n console.error(error);\r\n this.isSaved = false;\r\n this.addAlert( \r\n {\r\n \"message\": 'Could not edit linked document due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveDocumentButton\").prop(\"disabled\", false);\r\n });\r\n return;\r\n }\r\n });\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.resetForm();\r\n $('#contract-details--edit-document').modal('hide');\r\n },\r\n },\r\n watch: {\r\n 'item': function (newValue) {\r\n this.currentItem = newValue;\r\n }\r\n }\r\n });","import Vue from 'vue'\r\nimport \"./DownloadQr.less\"\r\n\r\nmodule.export = Vue.component('downloadqrcodesmodal',\r\n {\r\n name: \"downloadqrcodesmodal\",\r\n data: function () {\r\n return {\r\n assetHistoryFilters: null,\r\n assetHistory: null,\r\n historyField: \"All fields\",\r\n detailsViewModel: window.detailModel,\r\n statusClass: 'asset-status disabled',\r\n companyName: window.preLoadedData.CompanyName\r\n };\r\n },\r\n methods: {\r\n download: function () {\r\n const companyName = this.companyName.replace(/ /g, \"_\");\r\n const container = $(\".qr-codes-container\");\r\n kendo.drawing.drawDOM(container, {\r\n paperSize: \"A4\",\r\n landscape: false,\r\n forcePageBreak: \".page-break\"\r\n }).then(function (group) {\r\n return kendo.drawing.exportPDF(group);\r\n })\r\n .done(function (data) {\r\n kendo.saveAs({\r\n dataURI: data,\r\n fileName: companyName + \"_Assets_QR_Export_\" + new Date().toJSON().slice(0, 10).replace(/-/g, '') + \".pdf\"\r\n });\r\n\r\n container.empty();\r\n });\r\n\r\n $('#download-qr-codes-modal').modal('hide');\r\n },\r\n close: function () {\r\n $(\".qr-codes-container\").empty();\r\n $('#download-qr-codes-modal').modal('hide');\r\n }\r\n }\r\n });","import Vue from 'vue'\r\n\r\nmodule.export = Vue.component('gridconfigurationmodal',\r\n {\r\n name: \"gridconfigurationmodal\",\r\n props: {\r\n data: Object\r\n },\r\n data: function () {\r\n return {\r\n alerts:[],\r\n SelectedColumns: this.data.SelectedColumns.slice(0),\r\n AvailableColumns: this.data.AvailableColumns.slice(0),\r\n GridName: this.data.GridName,\r\n ShowSelectAtLeastOne: false,\r\n dataSource: this.data.ColumnsConfiguration,\r\n originalDataSource: structuredClone(this.data.ColumnsConfiguration),\r\n checked: true,\r\n isSearching: false,\r\n dragging: false,\r\n draggedItem: null,\r\n displayedWarningDuringSearch: false,\r\n checkedNames: [],\r\n columns: [\r\n { \r\n 'field': 'Draggable', \r\n 'title': ' ', \r\n 'filterable': false, \r\n 'template': function(dataItem){ \r\n if (dataItem.Selected){\r\n return '
';\r\n }\r\n else {\r\n return \"\";\r\n }\r\n }, \r\n 'width': '40px' \r\n },\r\n { 'field': 'Selected', 'title': ' ', 'filterable': false, 'template': '
', 'width': '40px' },\r\n { 'field': 'DisplayName', 'title': 'Fields', 'filterable': false }\r\n ],\r\n searchText: ''\r\n };\r\n },\r\n watch: {\r\n data: function (newData) {\r\n this.SelectedColumns = newData.SelectedColumns.slice(0);\r\n\r\n this.dataSource = newData.ColumnsConfiguration;\r\n this.originalDataSource = structuredClone(newData.ColumnsConfiguration); \r\n }\r\n }, \r\n computed: {\r\n isDragging() {\r\n return (this.dragging) ? this.draggedItem : false;\r\n }\r\n },\r\n mounted: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const _this = this;\r\n\r\n grid.element.on('click', '.visual-checkbox',\r\n function (e) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n const cb = this.querySelector(\"input[type='checkbox']\");\r\n cb.checked = !cb.checked;\r\n const dataItem = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n const selectedItems = _this.dataSource.filter(item => item.Selected).map(item => item.Index); \r\n\r\n if (cb.checked) {\r\n dataItem.Selected = true;\r\n dataItem.Index = Math.max(...selectedItems) + 1;\r\n dataItem.SortOrder = `0_${dataItem.Index}`;\r\n _this.dataSource.find(x => x.Id == dataItem.Id).SortOrder = dataItem.SortOrder; \r\n $(this.parentElement).addClass(\"state-selected\");\r\n } else \r\n {\r\n dataItem.Selected = false;\r\n dataItem.SortOrder = `1_${dataItem.DisplayName}`;\r\n _this.dataSource.find(x => x.Id == dataItem.Id).SortOrder = dataItem.SortOrder; \r\n $(this.parentElement).removeClass(\"state-selected\");\r\n }\r\n\r\n _this.dataSource.find(x => x.Id == dataItem.Id).Selected = cb.checked;\r\n if (!_this.isSearching) {\r\n _this.dataSource.sort((a, b) => a.SortOrder.localeCompare(b.SortOrder, undefined, { numeric: true }));\r\n grid.dataSource.read();\r\n } else {\r\n if (!_this.displayedWarningDuringSearch) {\r\n _this.displayedWarningDuringSearch = true;\r\n _this.addAlert(\r\n {\r\n \"message\": 'Please click on X next to searchbox to apply changes and go back to full overview',\r\n \"isSuccess\": true,\r\n \"showPopup\": true\r\n });\r\n }\r\n }\r\n });\r\n\r\n grid.element.on('mousedown', '.visual-draggable', this.dragHandler);\r\n },\r\n created: function () {\r\n this.data.refreshColumns = this.refreshColumns;\r\n },\r\n methods: {\r\n mouseup: function (e) {\r\n if (this.dragging) {\r\n this.dropHandler(e);\r\n }\r\n\r\n this.dragging = false;\r\n $('html,body').css('cursor', 'auto');\r\n },\r\n\r\n dragHandler: function (e) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n\r\n const selectedItem = $(e.target).closest(\"tr[data-uid]\");\r\n if (selectedItem.length >= 1) {\r\n this.dragging = true;\r\n $('html,body').css('cursor', 'move');\r\n\r\n this.draggedItem = selectedItem;\r\n }\r\n },\r\n\r\n dropHandler: function (e) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n const grid = this.$refs.grid.kendoWidget();\r\n\r\n const selectedItem = $(e.target).closest(\"tr[data-uid]\");\r\n if (selectedItem.length >= 1 && !selectedItem.is(this.draggedItem)) {\r\n const droppedItem = grid.dataItem(this.draggedItem);\r\n const oldIndex = grid.dataSource.indexOf(droppedItem);\r\n\r\n let newIndex = grid.dataSource.indexOf(grid.dataItem(selectedItem));\r\n if (newIndex > oldIndex) {\r\n newIndex -= 1;\r\n }\r\n\r\n grid.dataSource.remove(droppedItem);\r\n grid.dataSource.insert(newIndex, droppedItem);\r\n\r\n let selectedCounter = 0;\r\n const selectedItemIds = grid.dataSource.data().filter(i => i.Selected).map(i => i.Id);\r\n selectedItemIds.forEach(itemId => {\r\n let item = this.dataSource.find(x => x.Id == itemId);\r\n item.Index = selectedCounter;\r\n item.SortOrder = \"0_\" + selectedCounter;\r\n selectedCounter++;\r\n });\r\n }\r\n },\r\n\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n save: function () {\r\n this.clearAlert();\r\n this.ShowSelectAtLeastOne = false;\r\n $(\"#saveButton\").prop(\"disabled\", true);\r\n //Save the currently selected columns in user preferences through AjaxelectedColumns.length call\r\n if (this.dataSource.filter(item => item.Selected).length < 1) {\r\n this.ShowSelectAtLeastOne = true;\r\n return;\r\n }\r\n\r\n const _this = this;\r\n const grid = this.$refs.grid.kendoWidget();\r\n const selectedIds = grid.dataSource.data().filter(item => item.Selected).map(item => item.Id);\r\n $.ajax({\r\n type: 'POST',\r\n url: '/GridConfiguration/Save',\r\n data: JSON.stringify({\r\n gridName: _this.GridName,\r\n selectedColumnIds: selectedIds\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n _this.data.SelectedColumns = grid.dataSource.data().filter(item => item.Selected)\r\n .map(x => ({ Id: x.Id, DisplayName: x.DisplayName, PropertyName: x.PropertyName }));\r\n location.reload();\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not save asset field selection: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not save asset field selection due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n this.ShowSelectAtLeastOne = false;\r\n this.displayedWarningDuringSearch = false;\r\n this.searchText = \"\";\r\n this.isSearching = false;\r\n\r\n $('#grid-configuration-modal').modal('hide');\r\n this.dataSource = structuredClone(this.originalDataSource);\r\n }, \r\n searchColumnList: function () {\r\n let filter = [];\r\n const grid = this.$refs.grid.kendoWidget();\r\n if (this.searchText && this.searchText.length >= 2) {\r\n this.isSearching = true;\r\n grid.hideColumn(0);\r\n filter.push({ field: 'DisplayName', operator: 'contains', value: this.searchText });\r\n } else {\r\n this.isSearching = false;\r\n grid.showColumn(0);\r\n this.dataSource.sort((a, b) => a.SortOrder.localeCompare(b.SortOrder, undefined, { numeric: true }));\r\n grid.dataSource.read(); \r\n }\r\n grid.dataSource.filter(filter);\r\n },\r\n clearSearch: function() {\r\n this.searchText = '';\r\n this.searchColumnList();\r\n this.displayedWarningDuringSearch = false;\r\n },\r\n\r\n refreshColumns: function (columns) {\r\n let index = 0;\r\n\r\n const newColumnsConfiguration = this.data.ColumnsConfiguration.map((field) => {\r\n const columnIndex = columns.findIndex(x => x.propertyName === field.PropertyName);\r\n field.Selected = columnIndex >= 0;\r\n\r\n if (field.Selected){\r\n field.Index = columnIndex; \r\n field.SortOrder = \"0_\" + columnIndex;\r\n }\r\n else {\r\n field.Index = columns.length + index;\r\n field.SortOrder = \"1_\" + field.DisplayName;\r\n }\r\n index++;\r\n\r\n return field;\r\n }); \r\n\r\n this.SelectedColumns = columns.map(x => x.id); \r\n this.dataSource = newColumnsConfiguration.sort((x, y) => x.Index - y.Index);\r\n }\r\n }\r\n });","import Vue from 'vue'\r\nimport axios from \"axios\"\r\nimport DatePicker from 'vue2-datepicker'\r\nimport 'vue2-datepicker/index.css'\r\nimport { fetchJson } from '../Shared/request-utils'\r\n\r\nmodule.export = Vue.component('leasedassetadd',\r\n {\r\n components: {\r\n DatePicker\r\n },\r\n name: \"leasedassetadd\",\r\n props: {\r\n AddModel: Object\r\n },\r\n data: function () {\r\n return {\r\n alerts: [],\r\n selectedType: null,\r\n dataSource: null,\r\n searchText: null,\r\n statuses: ['Booked', 'Terminated', 'Other'],\r\n customStatus: '',\r\n formData: {\r\n InvoiceLocation: {},\r\n AssetLocation: {}\r\n }\r\n };\r\n },\r\n mounted: function() {\r\n const _this = this;\r\n const $assetTypeSelector = $(\"#assetTypeSelectorForAdd\");\r\n\r\n _this.dataSource = new kendo.data.DataSource({\r\n serverFiltering: true,\r\n transport: {\r\n read: function (options) {\r\n if (options.data.filter &&\r\n options.data.filter.filters.length > 0 &&\r\n options.data.filter.filters[0].value.length > 0) {\r\n _this.searchText = options.data.filter.filters[0].value;\r\n \r\n }\r\n\r\n if (_this.searchText.length > 0){\r\n fetchJson('/LeasedAssets/GetAssetTypesForAdd?search=' + _this.searchText)\r\n .then(\r\n (result) => {\r\n options.success(result);\r\n },\r\n (error) => {\r\n console.error(error);\r\n }); \r\n }\r\n }\r\n },\r\n });\r\n\r\n $assetTypeSelector.kendoDropDownList({\r\n filter: true,\r\n placeholder: \"Search for asset type\",\r\n autoBind: false,\r\n minLength: 3,\r\n enforceMinLength: true,\r\n dataSource: _this.dataSource,\r\n dataTextField: \"Name\",\r\n dataValueField: \"Id\",\r\n template: ({ Name, MasterAssetTypeName }) => Name + ' (' + MasterAssetTypeName + ')',\r\n valueTemplate: () => _this.selectedType.Name + ' (' + _this.selectedType.MasterAssetTypeName + ')',\r\n select: (e) => {\r\n const convertArray = (items) => {\r\n if (items.length > 0){\r\n return items.slice(0, items.length)\r\n }\r\n\r\n return [];\r\n }\r\n\r\n _this.selectedType = {\r\n Id: e.dataItem.Id,\r\n MasterAssetTypeName: e.dataItem.MasterAssetTypeName,\r\n Name: e.dataItem.Name,\r\n Fields: convertArray(e.dataItem.Fields).map((field => ({...field, Value: undefined}))),\r\n RequiredGeneralFields: convertArray(e.dataItem.RequiredGeneralFields).map((field => ({...field, Value: undefined})))\r\n };\r\n }\r\n });\r\n\r\n $(\"#assetTypeSelectorForAdd-list .k-textbox\").attr(\"placeholder\", \"Search for asset type\"); \r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n autoFormat: function (evt) {\r\n if (evt && evt.target && evt.target.value) {\r\n\r\n if (evt.target.value.indexOf(\",\") > 0) {\r\n const matchingField = this.AddModel.AssetTypeFields.Value.find(x => x.Name === evt.target.name);\r\n\r\n if (matchingField) {\r\n matchingField.Value = evt.target.value.replaceAll(\",\", \".\");\r\n\r\n this.$validator.validate(evt.target.name, matchingField.Value).then((result) => {\r\n if (result) {\r\n const validatedField = this.$validator.fields.find({\r\n name: evt.target.name\r\n });\r\n\r\n this.$validator.reset(validatedField);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n },\r\n show: function () {\r\n this.selectedType = undefined;\r\n $('#leased-asset-add-modal').modal('show');\r\n },\r\n reset: function(){\r\n this.clearAlert(); \r\n this.selectedType = undefined;\r\n this.formData = {\r\n InvoiceLocation: {},\r\n AssetLocation: {}\r\n };\r\n\r\n const assetTypeSelector = $(\"#assetTypeSelectorForAdd\").data(\"kendoDropDownList\");\r\n assetTypeSelector.text(\"\");\r\n assetTypeSelector.value(\"\");\r\n }, \r\n save: function() {\r\n document.getElementById('formboxes').scrollTop = 0;\r\n this.$validator.validateAll().then((result) => {\r\n this.clearAlert();\r\n if (result) {\r\n const _this = this;\r\n const mdl = _this.formData;\r\n mdl.AssetStatusDll = _this.formData.AssetStatusDll == 'Other' ? _this.customStatus : _this.formData.AssetStatusDll;\r\n mdl[\"AssetTypeFields\"] = _this.selectedType.Fields.reduce(function (accumulator, current) {\r\n const name = current[\"Name\"];\r\n const value = current[\"Value\"];\r\n\r\n accumulator[name] = value;\r\n return accumulator;\r\n },\r\n {} /* Empty object, as initial value */);\r\n\r\n mdl[\"assetType\"] = _this.selectedType.Id;\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: '/LeasedAssets/Add',\r\n data: JSON.stringify(mdl),\r\n success: function (data) {\r\n if (data.success) {\r\n _this.reset();\r\n _this.addAlert(\r\n {\r\n \"message\": 'Successfully added asset',\r\n \"isSuccess\": true\r\n });\r\n }\r\n else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not add asset: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not add asset due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n return;\r\n } else {\r\n this.addAlert(\r\n {\r\n \"message\": 'Some fields in the form are invalid',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n });\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.reset();\r\n\r\n $('#leased-asset-add-modal').modal('hide');\r\n\r\n // Enable save button again.\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n },\r\n computed: {\r\n isTerminated() {\r\n return this.formData.AssetStatusDll == 'Terminated' || this.customStatus == 'Terminated'\r\n }\r\n }\r\n });\r\n","import Vue from 'vue'\r\nimport DatePicker from 'vue2-datepicker'\r\nimport 'vue2-datepicker/index.css'\r\nimport { splitToParts } from '../Shared/request-utils'\r\n\r\nmodule.export = Vue.component('leasedassetsbulkedit',\r\n {\r\n name: \"leasedassetsbulkedit\",\r\n props: {\r\n selectedAssets: Array,\r\n assetCount: Number,\r\n assetsShouldBeExcluded: Boolean,\r\n assetFilter: Object,\r\n isDllUser: Boolean\r\n },\r\n components: {\r\n DatePicker\r\n },\r\n data: function () {\r\n return {\r\n alerts: [],\r\n ShowConfirmation: false,\r\n ShowFeedback: false,\r\n statuses: ['Booked', 'Terminated', 'Other'],\r\n customStatus: '',\r\n terminatedCount: 0,\r\n changedCount: 0,\r\n unChangedCount: 0,\r\n visibleAssetTypeFields: [],\r\n someFieldNoEditRight: false,\r\n assetIdsWithNotEditableFields: [],\r\n bulkUpdateLocation: '',\r\n bulkUpdateNotification: '',\r\n bulkUpdateProgressPercentage: 0,\r\n Items: {\r\n Assets: {},\r\n User: { HasChanged: false },\r\n OrderNumber: { HasChanged: false },\r\n CostCenter: { HasChanged: false },\r\n MainCostCenter: { HasChanged: false },\r\n AgreementNumber: { HasChanged: false },\r\n AgreementLine: { HasChanged: false },\r\n AgreementLineStatus: { HasChanged: false }, \r\n AgreementType: { HasChanged: false }, \r\n AssetStatusDll: { HasChanged: false },\r\n AssetModel: { HasChanged: false },\r\n CustomerName: { HasChanged: false },\r\n CustomerReference: { HasChanged: false },\r\n OrganizationNumber: { HasChanged: false },\r\n InvoiceGroup: { HasChanged: false }, \r\n PartialStartNumber: { HasChanged: false }, \r\n InvoiceLocationStreet: { HasChanged: false },\r\n InvoiceLocationCity: { HasChanged: false },\r\n InvoiceLocationPostCode: { HasChanged: false },\r\n InvoiceLocationRegion: { HasChanged: false },\r\n InvoiceLocationCountry: { HasChanged: false },\r\n AssetLocationStreet: { HasChanged: false },\r\n AssetLocationCity: { HasChanged: false },\r\n AssetLocationPostCode: { HasChanged: false },\r\n AssetLocationRegion: { HasChanged: false },\r\n AssetLocationCountry: { HasChanged: false },\r\n AssetStatusCustomer: { HasChanged: false },\r\n ExtensionRent: { HasChanged: false },\r\n ExtensionDate: { HasChanged: false },\r\n AgreementTerminationDate: { HasChanged: false },\r\n CustomerGuaranteedResidualValue: { HasChanged: false },\r\n DealerGuaranteedResidualValue: { HasChanged: false },\r\n DllGuaranteedResidualValue: { HasChanged: false },\r\n Price: { HasChanged: false },\r\n BillingAmount: { HasChanged: false },\r\n StartDate: { HasChanged: false },\r\n EndDate: { HasChanged: false },\r\n Currency: { HasChanged: false },\r\n ProductSku: { HasChanged: false },\r\n ManufactureNumber: { HasChanged: false },\r\n SerialNumber: { HasChanged: false },\r\n Brand: { HasChanged: false },\r\n ProductName: { HasChanged: false },\r\n ContractIdentifier: { HasChanged: false }, \r\n DealerContactPerson: { HasChanged: false }, \r\n Insurance: { HasChanged: false },\r\n Note: { HasChanged: false },\r\n AssetTypeFields: []\r\n },\r\n InitalItems: {}\r\n };\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n isEditable: function(fieldName) {\r\n return window.preLoadedData.AllowedBulkEditFields.includes(fieldName);\r\n },\r\n validateBeforeSubmit: function () {\r\n this.$validator.validateAll().then((result) => {\r\n if (result) {\r\n const vueObject = this;\r\n vueObject.ShowConfirmation = true;\r\n }\r\n });\r\n },\r\n hideConfirmBulkEditAsset: function () {\r\n const vueObject = this;\r\n vueObject.ShowConfirmation = false;\r\n },\r\n confirmedBulkEditAsset: function (e) {\r\n e.preventDefault();\r\n const vueObject = this;\r\n if (!this.assetsShouldBeExcluded) {\r\n const totalCount = this.selectedAssets.length;\r\n this.Items.Assets = this.selectedAssets.filter(a => a.assetStatusDll !== 'Terminated').map((a) => ({\r\n id: a.id,\r\n assetTypeId: a.assetTypeId\r\n }));\r\n vueObject.terminatedCount = totalCount - this.Items.Assets.length;\r\n $(\"#saveButton\").prop(\"disabled\", true);\r\n const bulksize = 250;\r\n const assetsInParts = splitToParts(this.Items.Assets, bulksize);\r\n vueObject.changedCount = 0;\r\n vueObject.unChangedCount = 0;\r\n for (let i = 0; i < assetsInParts.length; i++) {\r\n setTimeout(() => {\r\n const items = JSON.parse(JSON.stringify(vueObject.Items));\r\n items.AssetStatusDll.Value = items.AssetStatusDll.Value == 'Other' ? vueObject.customStatus : items.AssetStatusDll.Value;\r\n items.Assets = items.Assets.slice(i * 250, (i + 1) * 250);\r\n items.AssetTypeFields = vueObject.visibleAssetTypeFields.map(a => ({\r\n Name: a.Name,\r\n Value: a.Value,\r\n HasChanged: a.HasChanged\r\n }));\r\n this.bulkUpdateLeasedAssets(vueObject, items).then((response) => {\r\n if (response.success) {\r\n vueObject.ShowFeedback = true;\r\n vueObject.ShowConfirmation = false;\r\n vueObject.bulkUpdateLocation = response.location;\r\n vueObject.changedCount = vueObject.changedCount + response.data.numberOfAssetsUpdatedSuccesfully;\r\n vueObject.unChangedCount = vueObject.unChangedCount + response.data.numberOfAssetsUpdatedFailed;\r\n if (!vueObject.someFieldNoEditRight) {\r\n vueObject.someFieldNoEditRight = response.someFieldNoEditRight;\r\n }\r\n if (response.data.assetIdsWithNotEditableFields.length > 0) {\r\n vueObject.assetIdsWithNotEditableFields.push(...response.data.assetIdsWithNotEditableFields);\r\n }\r\n } else {\r\n vueObject.addAlert(\r\n {\r\n \"message\": `Could not bulk edit asset(s): ${response.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n },\r\n (error) => {\r\n vueObject.addAlert(\r\n {\r\n \"message\": 'Could not bulk edit asset(s) due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n });\r\n }, 200);\r\n }\r\n } else {\r\n vueObject.ShowConfirmation = false;\r\n this.fetchPagedAssetIds().then((response) => {\r\n this.builkUpdateLeasedAssetsFromResponseRecursively(vueObject, response);\r\n },\r\n (error) => {\r\n vueObject.addAlert(\r\n {\r\n \"message\": 'Could not bulk edit asset(s) due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n });\r\n }\r\n },\r\n bulkUpdateLeasedAssets: function (vueObject, items) {\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n type: 'POST',\r\n url: '/BulkEdit/BulkUpdateLeasedAssets',\r\n data: JSON.stringify(items),\r\n success: function (response) {\r\n resolve(response);\r\n },\r\n error: function (error) {\r\n reject(error);\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n });\r\n },\r\n fetchPagedAssetIds: function (pageToken) {\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n type: 'POST',\r\n url: '/LeasedAssets/QueryIds',\r\n data: JSON.stringify(({\r\n token: pageToken,\r\n limit: 250,\r\n filter: this.assetFilter\r\n })),\r\n success: function (response) {\r\n resolve(response);\r\n },\r\n error: function (error) {\r\n reject(error);\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n });\r\n },\r\n builkUpdateLeasedAssetsFromResponseRecursively: function (vueObject, response) {\r\n if (response) {\r\n const token = response.pageToken;\r\n const items = JSON.parse(JSON.stringify(vueObject.Items));\r\n items.AssetStatusDll.Value = items.AssetStatusDll.Value == 'Other' ? vueObject.customStatus : items.AssetStatusDll.Value;\r\n const totalCount = response.items.length;\r\n items.Assets = response.items.filter(a => a.status !== \"Terminated\" && !this.selectedAssets.some(a2 => a2.id === a.id)).map((a) => ({\r\n id: a.id,\r\n assetTypeId: a.assetTypeDefinitionId\r\n }));\r\n vueObject.terminatedCount = totalCount - items.Assets.length;\r\n this.bulkUpdateLeasedAssets(vueObject, items).then((bulkEditResponse) => {\r\n if (bulkEditResponse.success) {\r\n vueObject.ShowConfirmation = false;\r\n vueObject.ShowFeedback = true;\r\n vueObject.bulkUpdateLocation = bulkEditResponse.location;\r\n vueObject.changedCount = vueObject.changedCount + bulkEditResponse.data.numberOfAssetsUpdatedSuccesfully;\r\n vueObject.unChangedCount = vueObject.unChangedCount + bulkEditResponse.data.numberOfAssetsUpdatedFailed;\r\n if (!vueObject.someFieldNoEditRight) {\r\n vueObject.someFieldNoEditRight = bulkEditResponse.someFieldNoEditRight;\r\n }\r\n if (bulkEditResponse.data.assetIdsWithNotEditableFields.length > 0) {\r\n vueObject.assetIdsWithNotEditableFields.push(...bulkEditResponse.data.assetIdsWithNotEditableFields);\r\n }\r\n } else {\r\n vueObject.addAlert(\r\n {\r\n \"message\": `Could not bulk edit asset(s): ${bulkEditResponse.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n if (token) {\r\n this.fetchPagedAssetIds(token).then((response) => {\r\n this.builkUpdateLeasedAssetsFromResponseRecursively(vueObject, response);\r\n },\r\n (error) => {\r\n vueObject.addAlert(\r\n {\r\n \"message\": 'Could not bulk edit asset(s) due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n });\r\n }\r\n },\r\n (error) => {\r\n vueObject.addAlert(\r\n {\r\n \"message\": 'Could not bulk edit asset(s) due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n });\r\n }\r\n },\r\n extractFileName(disposition) {\r\n const utf8FilenameRegex = /filename\\*=UTF-8''([\\w%\\-\\.]+)(?:; ?|$)/i;\r\n const asciiFilenameRegex = /^filename=([\"']?)(.*?[^\\\\])\\1(?:; ?|$)/i;\r\n \r\n let fileName = null;\r\n if (utf8FilenameRegex.test(disposition)) {\r\n fileName = decodeURIComponent(utf8FilenameRegex.exec(disposition)[1]);\r\n } else {\r\n // prevent ReDos attacks by anchoring the ascii regex to string start and\r\n // slicing off everything before 'filename='\r\n const filenameStart = disposition.toLowerCase().indexOf('filename=');\r\n if (filenameStart >= 0) {\r\n const partialDisposition = disposition.slice(filenameStart);\r\n const matches = asciiFilenameRegex.exec(partialDisposition );\r\n if (matches != null && matches[2]) {\r\n fileName = matches[2];\r\n }\r\n }\r\n }\r\n return fileName;\r\n }, \r\n download: function () {\r\n const self = this;\r\n const items = JSON.parse(JSON.stringify(this.Items));\r\n const changedFields = [];\r\n for (const key in items) {\r\n if (items[key].HasChanged) {\r\n changedFields.push({\r\n name: key,\r\n value: items[key].Value || null\r\n });\r\n }\r\n }\r\n\r\n var xhrOverride = new XMLHttpRequest();\r\n xhrOverride.responseType = 'arraybuffer'; \r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: '/BulkEdit/GetFailedAssetsExcelFile',\r\n xhr: function () {\r\n return xhrOverride;\r\n },\r\n data: JSON.stringify(({\r\n failedAssetsIds: this.assetIdsWithNotEditableFields,\r\n changedFields\r\n })),\r\n success: function (response, status, xhr) {\r\n\r\n var contentType = xhr.getResponseHeader(\"Content-Type\");\r\n var filename = self.extractFileName(xhr.getResponseHeader(\"Content-disposition\"));\r\n\r\n const blob = new Blob([response], { type: contentType });\r\n let link = document.createElement('a');\r\n link.href = window.URL.createObjectURL(blob);\r\n link.download = filename;\r\n link.click();\r\n },\r\n error: function (error) {\r\n console.error(error);\r\n },\r\n contentType: \"application/json\"\r\n });\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.bulkUpdateNotification = '';\r\n this.bulkUpdateProgressPercentage = 0;\r\n this.assetIdsWithNotEditableFields = [];\r\n this.ShowFeedback = false;\r\n this.clearAlert();\r\n this.Items = JSON.parse(JSON.stringify(this.InitalItems)); //Properties on the prototype chain and non-enumerable properties cannot be (deep)copied.\r\n\r\n $('#leased-assets-bulkedit-modal').modal('hide');\r\n\r\n // Enable save button again.\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n },\r\n getSpecificAssetTypeFields: function (assetTypeIds) {\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n type: 'POST',\r\n url: '/BulkEdit/GetSpecificAssetTypeFields',\r\n data: JSON.stringify(({\r\n assetTypeIds: assetTypeIds\r\n })),\r\n success: function (response) {\r\n resolve(response);\r\n },\r\n error: function (error) {\r\n reject(error);\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n });\r\n }, \r\n show: function (selectedAssets) {\r\n const _this = this;\r\n\r\n this.InitalItems = JSON.parse(JSON.stringify(this.Items)); //Properties on the prototype chain and non-enumerable properties cannot be (deep)copied.\r\n\r\n let assetTypeIds = [...new Set(selectedAssets.filter(a => a.assetStatusDll !== 'Terminated').map(a => a.assetTypeId))];\r\n\r\n this.getSpecificAssetTypeFields(assetTypeIds).then((response) => {\r\n this.visibleAssetTypeFields = response.map(a => ({\r\n Name: a.name,\r\n Type: a.type,\r\n Mandatory: false,\r\n Value: null,\r\n HasChanged: false\r\n }));\r\n $('#leased-assets-bulkedit-modal').modal('show');\r\n this.bulkUpdateNotification = '';\r\n this.bulkUpdateProgressPercentage = 0;\r\n const notifications = window.assetNotificationsHub;\r\n notifications.on(\"NotifyBulkUpdateStarted\", function (bulkUpdateId, total) {\r\n if (_this.bulkUpdateLocation.endsWith(bulkUpdateId)) {\r\n _this.bulkUpdateNotification = `Started editing ${total} assets.`;\r\n }\r\n });\r\n notifications.on(\"NotifyBulkUpdateProgress\", function (bulkUpdateId, progress, total) {\r\n if (_this.bulkUpdateLocation.endsWith(bulkUpdateId)) {\r\n _this.bulkUpdateProgressPercentage = parseInt(progress * 100 / total);\r\n }\r\n });\r\n notifications.on(\"NotifyBulkUpdateCompleted\", function (bulkUpdateId, total) {\r\n if (_this.bulkUpdateLocation.endsWith(bulkUpdateId)) {\r\n _this.bulkUpdateNotification = `${total} assets successfully edited!`;\r\n }\r\n });\r\n });\r\n },\r\n complete: function () {\r\n this.$emit('refresh-data');\r\n this.close();\r\n }\r\n }\r\n });\r\n","import Vue from 'vue'\r\nimport VeeValidate from \"vee-validate\"\r\nimport { formatDateTime, formatDateTimeToDate } from '../Shared/date-utils'\r\nimport { GridInstaller } from '@progress/kendo-grid-vue-wrapper'\r\nimport \"../Shared/Assets/Details.less\"\r\nimport axios from 'axios';\r\nimport { ReadingTypes } from '../MeterReadings/ReadingTypes.js'\r\n\r\nif (document.getElementById('vue-leased-asset-details')) {\r\n Vue.use(GridInstaller);\r\n Vue.use(VeeValidate);\r\n Vue.filter('formatDateTime', formatDateTime);\r\n\r\n require(\"../Alerts/Alerts.js\");\r\n require(\"../MeterReadings/Add.js\");\r\n require(\"../MeterReadings/Edit.js\");\r\n require(\"../MeterReadings/View.js\");\r\n require(\"../MeterReadings/Delete.js\");\r\n require(\"../Documents/Assets/Add.js\");\r\n require(\"../Documents/Assets/View.js\");\r\n require(\"../Documents/Assets/Delete.js\");\r\n require(\"../PreviewPhoto/PhotoSelector.js\");\r\n require(\"./Edit.js\");\r\n\r\n ReadingTypes.load(window.detailModel.MeterReadings.Attributes);\r\n new Vue({\r\n el: '#vue-leased-asset-details',\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n assetHistoryFilters: null,\r\n assetHistory: null,\r\n historyField: \"All fields\",\r\n detailsViewModel: window.detailModel,\r\n meterReadingsModalActive: false,\r\n statusClass: 'asset-status disabled',\r\n EditModel: window.detailModel,\r\n MeterReadings: {\r\n selectedItem: null,\r\n dataSource: {\r\n data: window.detailModel.MeterReadings.Values,\r\n pageSize: 10\r\n },\r\n pageable: {\r\n buttonCount: 3,\r\n info: true,\r\n type: 'numeric',\r\n pageSizes: [10, 20, 30, 50],\r\n previousNext: true\r\n },\r\n skip: 0,\r\n take: 20,\r\n columns: [\r\n { 'field': 'Date', 'type': 'date', 'title': 'Meter reading date', 'filterable': false, 'format': '{0:yyyy/MM/dd}' },\r\n { 'field': 'Value', 'type': 'numeric', 'title': 'Meter reading', 'filterable': false },\r\n {\r\n 'field': 'Type',\r\n 'type': 'text',\r\n 'title': 'Meter reading type',\r\n 'filterable': false,\r\n template: function () {\r\n const dataItem = arguments[0];\r\n\r\n return ReadingTypes.get(dataItem.Type).displayName;\r\n }\r\n },\r\n {\r\n 'field': 'Image',\r\n 'title': 'Image',\r\n 'type': 'text',\r\n 'filterable': false,\r\n template: function () {\r\n const dataItem = arguments[0];\r\n if (dataItem && dataItem.Attachment) {\r\n return \"Yes\";\r\n }\r\n\r\n return 'No image';\r\n }\r\n },\r\n {\r\n 'field': 'SourceSystem',\r\n 'type': 'text',\r\n 'title': 'Source',\r\n 'filterable': false,\r\n template: function () {\r\n const dataItem = arguments[0];\r\n\r\n if (dataItem && dataItem.SourceSystem) {\r\n return dataItem.SourceSystem;\r\n }\r\n\r\n return \"-\";\r\n }\r\n },\r\n {\r\n 'title': ' ',\r\n 'filterable': false,\r\n 'template': [\r\n '',\r\n '',\r\n ''\r\n ].join(''),\r\n 'width': '120px'\r\n }\r\n ],\r\n readingTypes: ReadingTypes.getAll(),\r\n CurrentSourceSystem: window.detailModel.MeterReadings.CurrentSourceSystem\r\n },\r\n Documents: {\r\n selectedItem: null,\r\n dataSource: {\r\n data: window.detailModel.Documents.Values,\r\n pageSize: 10\r\n },\r\n pageable: {\r\n buttonCount: 3,\r\n info: true,\r\n type: 'numeric',\r\n pageSizes: [10, 20, 30, 50],\r\n previousNext: true\r\n },\r\n skip: 0,\r\n take: 20,\r\n columns: [\r\n { 'field': 'Name', 'type': 'text', 'title': 'Name', 'filterable': false },\r\n { 'field': 'Assignment', 'type': 'text', 'title': 'Assignment', 'filterable': false },\r\n { 'field': 'CreationDate', 'type': 'date', 'title': 'Upload date', 'filterable': false, 'format': '{0:yyyy/MM/dd}' },\r\n { 'field': 'Author', 'type': 'text', 'title': 'Uploaded by', 'filterable': false },\r\n { 'field': 'FileType', 'type': 'text', 'title': 'Type', 'filterable': false },\r\n {\r\n 'title': 'Preview',\r\n 'filterable': false,\r\n 'template': '# if( Tags[0] ==\"Preview\") {## } #',\r\n 'width': '120px'\r\n },\r\n {\r\n 'title': ' ',\r\n 'filterable': false,\r\n 'template': [\r\n '',\r\n '',\r\n ''\r\n ].join(''),\r\n 'width': '120px'\r\n }\r\n ],\r\n CurrentSourceSystem: window.detailModel.Documents.CurrentSourceSystem\r\n },\r\n LinkedDocuments: {\r\n selectedItem: null,\r\n dataSource: {\r\n data: window.detailModel.LinkedDocuments.Values,\r\n pageSize: 10\r\n },\r\n pageable: {\r\n buttonCount: 3,\r\n info: true,\r\n type: 'numeric',\r\n pageSizes: [10, 20, 30, 50],\r\n previousNext: true\r\n },\r\n skip: 0,\r\n take: 20,\r\n columns: [\r\n { 'field': 'DocumentName', 'type': 'text', 'title': 'Document name', 'filterable': false },\r\n { 'field': 'Timestamp', 'type': 'datetime', 'title': 'Last modified', 'filterable': false, 'template': \"#= kendo.toString(kendo.parseDate(new Date(Timestamp)), 'yyyy/MM/dd HH:mm') #\" },\r\n {\r\n 'title': ' ',\r\n 'filterable': false,\r\n 'template': [\r\n ''\r\n ].join(''),\r\n 'width': '120px'\r\n }\r\n ]\r\n },\r\n SelectPreviewPhotoModel: {\r\n selectedPhoto: null,\r\n availablePhotos: []\r\n },\r\n ModalActive: false\r\n };\r\n },\r\n computed: {\r\n filteredAssetHistoryList: function () {\r\n const filterby = this.historyField;\r\n if (filterby == \"All fields\") {\r\n return this.assetHistory;\r\n } else {\r\n const filteredHistory = JSON.parse(JSON.stringify(this.assetHistory));\r\n return filteredHistory.filter(function (historyItem) {\r\n historyItem.changedFields = historyItem.changedFields.filter(function (changedField) {\r\n return changedField.name == filterby;\r\n })\r\n return historyItem.changedFields.length > 0;\r\n });\r\n }\r\n },\r\n assetLocation: function () {\r\n const street = this.detailsViewModel.AssetLocationStreet.Viewable ? this.detailsViewModel.AssetLocationStreet.Value : '';\r\n const city = this.detailsViewModel.AssetLocationCity.Viewable ? this.detailsViewModel.AssetLocationCity.Value : '';\r\n const postCode = this.detailsViewModel.AssetLocationPostCode.Viewable ? this.detailsViewModel.AssetLocationPostCode.Value : '';\r\n const region = this.detailsViewModel.AssetLocationRegion.Viewable ? this.detailsViewModel.AssetLocationRegion.Value : '';\r\n const country = this.detailsViewModel.AssetLocationCountry.Viewable ? this.detailsViewModel.AssetLocationCountry.Value : '';\r\n const text = [street, city, postCode, region, country].filter(Boolean).join(\", \");\r\n return text;\r\n },\r\n invoiceLocation: function () {\r\n const street = this.detailsViewModel.InvoiceLocationStreet.Viewable ? this.detailsViewModel.InvoiceLocationStreet.Value : '';\r\n const city = this.detailsViewModel.InvoiceLocationCity.Viewable ? this.detailsViewModel.InvoiceLocationCity.Value : '';\r\n const country = this.detailsViewModel.InvoiceLocationCountry.Viewable ? this.detailsViewModel.InvoiceLocationCountry.Value : '';\r\n const text = [street, city, country].filter(Boolean).join(\", \");\r\n return text;\r\n },\r\n viewableAssetTypeFieldList() {\r\n const list = this.detailsViewModel.AssetTypeFields.Value.filter(function (e) { return e.Viewable });\r\n return list;\r\n },\r\n viewableComputedFieldList() {\r\n const list = this.detailsViewModel.ComputedFields.Value.filter(function (e) { return e.Viewable });\r\n return list;\r\n }\r\n },\r\n mounted: function () {\r\n const _this = this;\r\n if (window.detailModel.AssetStatusDll.Value !== null) {\r\n if (window.detailModel.AssetStatusDll.Value.toLowerCase() === 'active' || window.detailModel.AssetStatusDll.Value.toLowerCase() === 'booked') {\r\n this.statusClass = 'asset-status active';\r\n } else if (window.detailModel.AssetStatusDll.Value.toLowerCase() === 'terminated') {\r\n this.statusClass = 'asset-status terminated';\r\n }\r\n }\r\n this.getAssetHistory();\r\n if (getUrlParameter('action') === 'edit') {\r\n this.edit();\r\n }\r\n\r\n const updatedModel = Object.assign({}, this.SelectPreviewPhotoModel,\r\n {\r\n availablePhotos: this.detailsViewModel.Documents.Values.filter(function (e) {\r\n return e.FileType.includes(\"Image\") && e.Assignment.includes(\"Asset\");\r\n }),\r\n selectedPhoto: null\r\n });\r\n\r\n const selectedPhotoIndex = updatedModel.availablePhotos.findIndex(v => v.Tags.includes(\"Preview\"));\r\n\r\n if (selectedPhotoIndex >= 0) {\r\n updatedModel.selectedPhoto = updatedModel.availablePhotos[selectedPhotoIndex];\r\n }\r\n\r\n this.SelectPreviewPhotoModel = updatedModel;\r\n const connection = window.assetNotificationsHub;\r\n connection.on(\"NotifyEdited\", function (assetId) {\r\n if (window.detailModel.Id === assetId) {\r\n _this.addAlert({ \"message\": 'Asset successfuly edited. Page will be refreshed.', \"isSuccess\": true, \"showPopup\": true });\r\n setTimeout(() => window.location.href = window.location.href.replace(\"&action=edit\", \"\"), 2000);\r\n }\r\n });\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n edit: function () {\r\n if (!window.detailModel.CanBeEdited || !window.detailModel.AssetTypeExists)\r\n {\r\n return;\r\n }\r\n this.EditModel = window.detailModel;\r\n $('#leased-asset-edit-modal').modal('show');\r\n },\r\n addMeterReading: function () {\r\n this.meterReadingsModalActive = true;\r\n $('#asset-details--add-meter-reading').modal('show');\r\n },\r\n meterReadingModalClosedEvent: function () {\r\n this.meterReadingsModalActive = false;\r\n },\r\n addDocument: function () {\r\n $('#asset-details--add-document').modal('show');\r\n },\r\n synchronizeMeterReadingDataOnViewModel(meterReadings){\r\n let mostRecentEntry = meterReadings.reduce((mostRecent, current) => {\r\n const mostRecentDate = new Date(mostRecent.Date);\r\n const currentDate = new Date(current.Date);\r\n return currentDate > mostRecentDate ? current : mostRecent;\r\n });\r\n\r\n const fieldsToUpdate = {\r\n \"Meter Reading Date\": formatDate(mostRecentEntry.Date),\r\n \"Meter Reading\": mostRecentEntry.Value,\r\n \"Meter Unit Type\": mostRecentEntry.Type\r\n }; \r\n\r\n this.detailsViewModel.AssetTypeFields.Value = this.detailsViewModel.AssetTypeFields.Value.map(field => {\r\n if (fieldsToUpdate.hasOwnProperty(field.Name)) {\r\n const newValue = fieldsToUpdate[field.Name];\r\n return Object.assign({}, field, { Value: newValue });\r\n }\r\n return field;\r\n }); \r\n },\r\n meterReadingChangedEvent: function (message, eventType, item) {\r\n const _this = this;\r\n\r\n this.addAlert({ \"message\": message, \"isSuccess\": true, \"showPopup\": true });\r\n\r\n const grid = this.$refs.metergrid.kendoWidget();\r\n const currentDatasource = grid.dataSource;\r\n\r\n axios.get(\"/MeterReadings/GetForleasedAsset?assetId=\" + window.detailModel.Id).then(((result) => {\r\n result.data.MeterReadings.Values = result.data.MeterReadings.Values.map((entry) => {\r\n const date = new Date(entry.Date);\r\n return Object.assign({}, entry, { Date: date });\r\n });\r\n\r\n _this.MeterReadings.dataSource.data = result.data.MeterReadings.Values;\r\n _this.detailsViewModel.MeterReadings.Values = result.data.MeterReadings.Values;\r\n\r\n _this.synchronizeMeterReadingDataOnViewModel(result.data.MeterReadings.Values);\r\n\r\n currentDatasource.data(result.data.MeterReadings.Values);\r\n\r\n // Re-sort using the intial storting\r\n currentDatasource.sort(currentDatasource.sort());\r\n grid.setDataSource(currentDatasource);\r\n }));\r\n },\r\n documentChangedEvent: function (message, eventType, item) {\r\n const _this = this;\r\n\r\n this.addAlert({ \"message\": message, \"isSuccess\": true, \"showPopup\": true });\r\n\r\n const grid = this.$refs.documentgrid.kendoWidget();\r\n const currentDatasource = grid.dataSource;\r\n\r\n axios.get(\"/Documents/GetForLeasedAsset?assetId=\" + window.detailModel.Id).then(((result) => {\r\n result.data.Documents.Values = result.data.Documents.Values.map((entry) => {\r\n const date = new Date(entry.CreationDate);\r\n return Object.assign({}, entry, { CreationDate: date });\r\n });\r\n\r\n _this.Documents.dataSource.data = result.data.Documents.Values;\r\n _this.detailsViewModel.Documents.Values = result.data.Documents.Values;\r\n\r\n const updatedModel = Object.assign({}, _this.SelectPreviewPhotoModel,\r\n {\r\n availablePhotos: result.data.Documents.Values.filter(function (e) {\r\n return e.FileType.includes(\"Image\") && e.Assignment.includes(\"Asset\");\r\n }),\r\n selectedPhoto: null\r\n });\r\n \r\n const selectedPhotoIndex = updatedModel.availablePhotos.findIndex(v => v.Tags.includes(\"Preview\"));\r\n\r\n if (selectedPhotoIndex >= 0) {\r\n updatedModel.selectedPhoto = updatedModel.availablePhotos[selectedPhotoIndex];\r\n }\r\n _this.SelectPreviewPhotoModel = updatedModel;\r\n currentDatasource.data(result.data.Documents.Values);\r\n\r\n // Re-sort using the intial storting\r\n currentDatasource.sort(currentDatasource.sort());\r\n grid.setDataSource(currentDatasource);\r\n }));\r\n },\r\n previewChangedEvent: function (message, newPreviewIndex) {\r\n this.SelectPreviewPhotoModel.selectedPhoto = this.SelectPreviewPhotoModel.availablePhotos[newPreviewIndex];\r\n this.documentChangedEvent(message);\r\n },\r\n getAssetHistory() {\r\n const _this = this;\r\n const id = this.detailsViewModel.Id;\r\n const assetTypeId = this.detailsViewModel.AssetTypeId;\r\n axios.get(\"/LeasedAssets/History?id=\" + id + \"&assetTypeId=\" + assetTypeId)\r\n .then(response => {\r\n _this.assetHistory = response.data.changeSets;\r\n _this.assetHistoryFilters = response.data.uniqueFilters;\r\n }).catch(error => {\r\n _this.ShowError = true;\r\n });\r\n },\r\n showPhotoSelector: function () {\r\n if (!window.detailModel.CanBeEdited || !window.detailModel.AssetTypeExists)\r\n {\r\n return;\r\n }\r\n this.ModalActive = true;\r\n $(\"#select-preview-photo\").modal('show');\r\n },\r\n exportHistory: function () {\r\n const _this = this;\r\n const id = this.detailsViewModel.Id;\r\n const assetTypeId = this.detailsViewModel.AssetTypeId;\r\n axios.get(\"/LeasedAssets/ExportHistory?id=\" + id + \"&assetTypeId=\" + assetTypeId, { responseType: 'blob' })\r\n .then(response => {\r\n const link = document.createElement('a');\r\n link.href = URL.createObjectURL(response.data);\r\n link.download = 'History_LeasedAsset_' + id + '_' + new Date().toISOString() + '.csv';\r\n link.click();\r\n URL.revokeObjectURL(link.href);\r\n }).catch(console.error);\r\n },\r\n formattedDate: function (date) {\r\n return formatDateTimeToDate(date);\r\n },\r\n meterReadingsGridOnDatabound: function (e) {\r\n const grid = this.$refs.metergrid.kendoWidget();\r\n const _this = this;\r\n grid.element.on('click', '.anchor-view',\r\n function (e) {\r\n e.preventDefault();\r\n const reading = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n _this.MeterReadings.selectedItem = Object.assign(\r\n {},\r\n reading,\r\n { Type: ReadingTypes.get(reading.Type).displayName });\r\n $('#asset-details--view-meter-reading').modal('show');\r\n });\r\n\r\n grid.element.on('click', '.anchor-edit',\r\n function (e) {\r\n e.preventDefault();\r\n const reading = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n\r\n const parsedDate = new Date(reading.Date);\r\n\r\n _this.MeterReadings.selectedItem = Object.assign(\r\n {},\r\n reading,\r\n { Date: formatDate(parsedDate) });\r\n\r\n $('#asset-details--edit-meter-reading').modal('show');\r\n });\r\n\r\n grid.element.on('click', '.anchor-remove',\r\n function (e) {\r\n e.preventDefault();\r\n const reading = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n\r\n _this.MeterReadings.selectedItem = Object.assign({}, reading);\r\n\r\n $('#asset-details--delete-meter-reading').modal('show');\r\n });\r\n },\r\n exportMeterReadings: function () {\r\n const id = this.detailsViewModel.Id;\r\n axios.get(\"/MeterReadings/ExportForLeasedAsset?id=\" + id, { responseType: 'blob' })\r\n .then(response => {\r\n const link = document.createElement('a');\r\n link.href = URL.createObjectURL(response.data);\r\n link.download = 'MeterReadings_LeasedAsset_' + new Date().toISOString() + '.xlsx';\r\n link.click();\r\n URL.revokeObjectURL(link.href);\r\n }).catch(console.error);\r\n },\r\n documentsGridOnDatabound: function (e) {\r\n const grid = this.$refs.documentgrid.kendoWidget();\r\n const _this = this;\r\n\r\n grid.element.on('click', '.anchor-view',\r\n function (e) {\r\n e.preventDefault();\r\n const document = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n _this.Documents.selectedItem = Object.assign(\r\n {},\r\n document);\r\n\r\n $('#asset-details--view-document').modal('show');\r\n });\r\n\r\n grid.element.on('click', '.anchor-download',\r\n function (e) {\r\n e.preventDefault();\r\n const document = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n window.open(document.DownloadUrl);\r\n });\r\n\r\n grid.element.on('click', '.anchor-remove',\r\n function (e) {\r\n e.preventDefault();\r\n const document = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n\r\n _this.Documents.selectedItem = Object.assign({}, document);\r\n\r\n $('#asset-details--delete-document').modal('show');\r\n });\r\n },\r\n linkedDocumentsGridOnDatabound: function (e) {\r\n const grid = this.$refs.linkeddocumentgrid.kendoWidget();\r\n grid.element.on('click', '.anchor-view--document',\r\n function (e) {\r\n e.preventDefault();\r\n const document = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n window.open(document.DownloadUrl, \"_blank\");\r\n });\r\n } \r\n }\r\n });\r\n}\r\n\r\nfunction formatDate(inputDate) {\r\n let date, month, year;\r\n\r\n date = inputDate.getDate();\r\n month = inputDate.getMonth() + 1;\r\n year = inputDate.getFullYear();\r\n\r\n date = date\r\n .toString()\r\n .padStart(2, '0');\r\n\r\n month = month\r\n .toString()\r\n .padStart(2, '0');\r\n\r\n // return as YYYY-MM-DD\r\n return year + \"-\" + month + \"-\" + date;\r\n}\r\n\r\nfunction getUrlParameter(name) {\r\n name = name.replace(/[\\[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\r\n const regex = new RegExp('[\\\\?&]' + name + '=([^&#]*)');\r\n const results = regex.exec(location.search);\r\n return results === null ? '' : decodeURIComponent(results[1].replace(/\\+/g, ' '));\r\n}\r\n","import Vue from 'vue'\r\nimport DatePicker from 'vue2-datepicker'\r\nimport 'vue2-datepicker/index.css'\r\nimport { formatDateTime } from '../Shared/date-utils'\r\n\r\nmodule.export = Vue.component('leasedassetedit',\r\n {\r\n name: \"leasedassetedit\",\r\n props: {\r\n data: Object\r\n },\r\n components: {\r\n DatePicker\r\n },\r\n data: function () {\r\n return {\r\n alerts: [],\r\n statuses: ['Booked', 'Terminated', 'Other'],\r\n customStatus: '',\r\n preselectedStatus: '',\r\n EditModel: structuredClone(this.data), //create deep a copy of the object\r\n overviewUrl: '',\r\n ShowError: false\r\n };\r\n },\r\n mounted: function () {\r\n let url = new URL(window.location);\r\n if (url.searchParams.has('overviewUrl')) {\r\n url = decodeURIComponent(url.searchParams.get('overviewUrl'));\r\n }\r\n this.overviewUrl = url;\r\n if (this.EditModel.AssetStatusDll.Value != 'Booked' && this.EditModel.AssetStatusDll.Value != 'Terminated') {\r\n this.preselectedStatus = 'Other';\r\n this.customStatus = JSON.parse(JSON.stringify(this.EditModel.AssetStatusDll.Value));\r\n } else {\r\n this.preselectedStatus = JSON.parse(JSON.stringify(this.EditModel.AssetStatusDll.Value));\r\n }\r\n },\r\n computed: {\r\n visibleAssetTypeFields: function () {\r\n return this.EditModel.AssetTypeFields.Value.filter(x => x.Editable == true);\r\n },\r\n isTerminated() {\r\n return this.EditModel.AssetStatusDll == 'Terminated' || this.customStatus == 'Terminated'\r\n }\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n autoFormat: function (evt) {\r\n if (evt && evt.target && evt.target.value) {\r\n\r\n if (evt.target.value.indexOf(\",\") > 0) {\r\n const matchingField = this.EditModel.AssetTypeFields.Value.find(x => x.Name === evt.target.name);\r\n\r\n if (matchingField) {\r\n matchingField.Value = evt.target.value.replaceAll(\",\", \".\");\r\n\r\n this.$validator.validate(evt.target.name, matchingField.Value).then((result) => {\r\n if (result) {\r\n const validatedField = this.$validator.fields.find({\r\n name: evt.target.name\r\n });\r\n\r\n this.$validator.reset(validatedField);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n },\r\n showHeader: function (id) {\r\n const headerElement = document.getElementById(id);\r\n\r\n if (!headerElement) {\r\n return true;\r\n }\r\n\r\n const element = headerElement.nextElementSibling;\r\n\r\n if (element.nodeName == \"LEGEND\") {\r\n return false;\r\n }\r\n return true;\r\n },\r\n validateBeforeSubmit: function () {\r\n this.$validator.validateAll().then((result) => {\r\n if (result) {\r\n const vueObject = this;\r\n $(\"#saveButton\").prop(\"disabled\", true);\r\n vueObject.EditModel.AssetStatusDll.Value = vueObject.preselectedStatus == 'Other' ? vueObject.customStatus : vueObject.preselectedStatus;\r\n\r\n const formattedAssetTypeFields = vueObject.EditModel.AssetTypeFields.Value.reduce(function (accumulator, current) {\r\n const name = current[\"Name\"];\r\n const type = current[\"Type\"];\r\n let value = current[\"Value\"];\r\n\r\n if (type === 'DateTime' && value != null && value.indexOf('T') > -1) {\r\n value = formatDateTime(value);\r\n }\r\n\r\n accumulator[name] = value;\r\n return accumulator;\r\n },\r\n {} /* Empty object, as initial value */);\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: '/LeasedAssets/Edit',\r\n data: JSON.stringify({\r\n Id: vueObject.EditModel.Id,\r\n AgreementNumber: vueObject.EditModel.AgreementNumber.Value,\r\n AgreementLine: vueObject.EditModel.AgreementLine.Value,\r\n AgreementLineStatus: vueObject.EditModel.AgreementLineStatus.Value,\r\n AgreementType: vueObject.EditModel.AgreementType.Value,\r\n ContractIdentifier: vueObject.EditModel.ContractIdentifier.Value,\r\n Customer: vueObject.EditModel.Customer.Value,\r\n OrganizationNumber: vueObject.EditModel.OrganizationNumber.Value,\r\n AssetModel: vueObject.EditModel.AssetModel.Value,\r\n AssetStatusDll: vueObject.EditModel.AssetStatusDll.Value,\r\n AssetLocationStreet: vueObject.EditModel.AssetLocationStreet.Value,\r\n AssetLocationCity: vueObject.EditModel.AssetLocationCity.Value,\r\n AssetLocationPostCode: vueObject.EditModel.AssetLocationPostCode.Value,\r\n AssetLocationRegion: vueObject.EditModel.AssetLocationRegion.Value,\r\n AssetLocationCountry: vueObject.EditModel.AssetLocationCountry.Value,\r\n InvoiceLocationStreet: vueObject.EditModel.InvoiceLocationStreet.Value,\r\n InvoiceLocationCity: vueObject.EditModel.InvoiceLocationCity.Value,\r\n InvoiceLocationCountry: vueObject.EditModel.InvoiceLocationCountry.Value,\r\n InvoiceGroup: vueObject.EditModel.InvoiceGroup.Value,\r\n PartialStartNumber: vueObject.EditModel.PartialStartNumber.Value,\r\n Price: vueObject.EditModel.Price.Value,\r\n CustomerGuaranteedResidualValue: vueObject.EditModel.CustomerGuaranteedResidualValue.Value,\r\n DllGuaranteedResidualValue: vueObject.EditModel.DllGuaranteedResidualValue.Value,\r\n DealerGuaranteedResidualValue: vueObject.EditModel.DealerGuaranteedResidualValue.Value,\r\n BillingAmount: vueObject.EditModel.BillingAmount.Value,\r\n StartDate: vueObject.EditModel.StartDate.Value,\r\n EndDate: vueObject.EditModel.EndDate.Value,\r\n ExtensionDate: vueObject.EditModel.ExtensionDate.Value,\r\n AgreementTerminationDate: vueObject.EditModel.AgreementTerminationDate.Value,\r\n ExtensionRent: vueObject.EditModel.ExtensionRent.Value,\r\n Currency: vueObject.EditModel.Currency.Value,\r\n ProductSKU: vueObject.EditModel.ProductSKU.Value,\r\n ManufactureNumber: vueObject.EditModel.ManufactureNumber.Value,\r\n SerialNumber: vueObject.EditModel.SerialNumber.Value,\r\n Brand: vueObject.EditModel.Brand.Value,\r\n ProductName: vueObject.EditModel.ProductName.Value,\r\n Insurance: vueObject.EditModel.Insurance.Value,\r\n User: vueObject.EditModel.User.Value,\r\n OrderNumber: vueObject.EditModel.OrderNumber.Value,\r\n CostCenter: vueObject.EditModel.CostCenter.Value,\r\n MainCostCenter: vueObject.EditModel.MainCostCenter.Value,\r\n AssetStatusCustomer: vueObject.EditModel.AssetStatusCustomer.Value,\r\n DealerContactPerson: vueObject.EditModel.DealerContactPerson.Value,\r\n CustomerReference: vueObject.EditModel.CustomerReference.Value,\r\n Note: vueObject.EditModel.Note.Value,\r\n AssetTypeFields: formattedAssetTypeFields\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n vueObject.close();\r\n } else {\r\n vueObject.addAlert(\r\n {\r\n \"message\": `Could not edit asset: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n },\r\n error: function (data) {\r\n vueObject.addAlert(\r\n {\r\n \"message\": 'Could not edit asset due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n } else {\r\n this.addAlert(\r\n {\r\n \"message\": 'Some fields in the form are invalid',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n });\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n this.EditModel = structuredClone(this.data);\r\n $('#leased-asset-edit-modal').modal('hide');\r\n\r\n // Enable save button again.\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n }\r\n });\r\n","import Vue from 'vue'\r\nimport VeeValidate from \"vee-validate\"\r\nimport { GridInstaller } from '@progress/kendo-grid-vue-wrapper'\r\nimport vSelect from 'vue-select'\r\nimport \"../Grid/Grid.less\"\r\nimport { fetchJson } from '../Shared/request-utils'\r\nimport { generateQrCodes } from '../Shared/qr-utils'\r\nimport { ReadingTypes } from '../MeterReadings/ReadingTypes.js'\r\nimport { getSubMemberName} from '../Shared/grid-utils'\r\n\r\nif (document.getElementById('vue-leased-assets-overview')) {\r\n require(\"../Grid/GridConfiguration.js\");\r\n require(\"../Actionbar/Actionbar.js\");\r\n require(\"../Alerts/Alerts.js\");\r\n require(\"./Termination.js\");\r\n require(\"./Request.js\");\r\n require(\"./Remove.js\");\r\n require(\"./Upload.js\");\r\n require(\"./Add.js\");\r\n require(\"../ManagePreviews/ManagePreviews.js\");\r\n require(\"../MeterReadings/ReadingTypes.js\");\r\n require(\"../MeterReadings/Add.js\");\r\n require(\"../Documents/Assets/Add.js\");\r\n require(\"./BulkEdit.js\");\r\n require(\"../DownloadQr/DownloadQr.js\");\r\n require(\"../QueryableGrid/Grid.js\");\r\n\r\n Vue.use(GridInstaller);\r\n Vue.use(VeeValidate);\r\n\r\n Vue.component('v-select', vSelect);\r\n const pagesizesession = \"pagesize\";\r\n let pagesize = sessionStorage.getItem(pagesizesession);\r\n if (!pagesize) {\r\n pagesize = 20; \r\n }\r\n\r\n let gridConfigChangeTimer = 0; \r\n\r\n new Vue({\r\n el: '#vue-leased-assets-overview',\r\n components: {},\r\n data: function () {\r\n return {\r\n actionbar: window.preLoadedData.Actionbar,\r\n GridConfiguration: window.preLoadedData.GridConfiguration,\r\n Grid: {\r\n config: window.preLoadedData.GridConfiguration,\r\n endpointQuery: \"/LeasedAssets/Query\",\r\n endpointFilterValues: \"/LeasedAssets/FetchFilterValues\",\r\n enableMultiSelect: true,\r\n renderFieldValues: this.getCustomFieldValues,\r\n renderRowActions: this.getCustomActions,\r\n rowClickEvent: this.onRowClicked,\r\n rowActionClickEvent: this.onRowActionClicked,\r\n rowSelectedEvent: this.onRowSelectionChanged,\r\n gridChangedEvent: this.onGridChanged,\r\n gridFilteredEvent: this.onGridFiltered,\r\n gridColumnReorderEvent: this.onGridColumnReordered,\r\n pageSizes: {\r\n default: 20,\r\n values: [10, 20, 30, 50]\r\n },\r\n selectAll: undefined,\r\n search: undefined,\r\n globalSelection: undefined,\r\n selectedCount: undefined,\r\n totalCount: undefined,\r\n export: undefined,\r\n customFilter: undefined,\r\n refreshLayout: undefined,\r\n refreshData: undefined,\r\n refreshCurrentPage: undefined,\r\n setActionbar: undefined,\r\n setActiveFilters: undefined,\r\n setActiveSorting: undefined,\r\n setPortfolioSelector: undefined\r\n },\r\n alerts: [],\r\n selectedAssets: [],\r\n assetCount: 0,\r\n assetsShouldBeExcluded: false,\r\n assetFilter: {},\r\n assetSort: {},\r\n assetsTerminatedCount: 0,\r\n assetsBackOfficeCount: 0,\r\n assetsBackOfficeIds: [],\r\n assetsToBeTerminatedCount: 0,\r\n assetsToBeRemovedCount: 0,\r\n activePortfolioFilterField: '',\r\n HasBranding: window.hasBranding,\r\n AssetRequest: {\r\n RequestDate: null,\r\n AdditionalInformation: '',\r\n FirstName: '',\r\n LastName: '',\r\n Email: '',\r\n PhoneNumber: '',\r\n AssetsToTerminate: [],\r\n AssetCount: 0,\r\n AssetsShouldBeExcluded: false,\r\n AssetFilter: {},\r\n },\r\n PartialTermination: {\r\n TerminationDate: new Date(),\r\n AssetsToTerminate: [],\r\n AssetCount: 0,\r\n AssetsShouldBeExcluded: false,\r\n AssetFilter: {},\r\n },\r\n MeterReadings: {\r\n readingTypes: [],\r\n CurrentSourceSystem: ''\r\n },\r\n detailsViewModel: null,\r\n meterReadingsModalActive: false,\r\n allowedPortfolios: window.preLoadedData.AllowedPortfolios,\r\n gridPreviews: [],\r\n selectedPreview: undefined,\r\n AddModel: {\r\n types: [],\r\n contractIdentifiers: [],\r\n allowedMeterUnitTypes: []\r\n },\r\n UploadModel: {\r\n contractIdentifiers: []\r\n },\r\n };\r\n },\r\n mounted: function () {\r\n const _this = this;\r\n _this.Grid.setActionbar(_this.$refs.actionbar);\r\n this.fetchGridPreviews();\r\n const portfolios = _this.allowedPortfolios.map(portfolio => portfolio.Name);\r\n kendo.jQuery(\"#portfolioSelector\").kendoMultiSelect({\r\n dataSource: portfolios,\r\n filter: \"contains\",\r\n tagTemplate: \"#:values.length# portfolio(s) selected\",\r\n placeholder: \"Select portfolio(s)\",\r\n autoClose: false,\r\n tagMode: \"single\",\r\n noDataTemplate: \"No portfolios available\",\r\n itemTemplate: `
\r\n #= data #\r\n \r\n \r\n
`,\r\n change: function () {\r\n const selected = this.value();\r\n const items = this.listView.content.find(\"li\");\r\n items.each(function () {\r\n const checkbox = $(this).find(\"input[type='checkbox']\");\r\n const value = checkbox.val();\r\n checkbox.prop(\"checked\", selected.indexOf(value) > -1);\r\n });\r\n\r\n _this.actionbarFilterPortfolio(selected);\r\n if (selected.length == 0) {\r\n this.tagList.children().each(function() {\r\n this.remove();\r\n });\r\n }\r\n },\r\n open: function () {\r\n const selected = this.value();\r\n const items = this.listView.content.find(\"li\");\r\n items.each(function () {\r\n const checkbox = $(this).find(\"input[type='checkbox']\");\r\n const value = checkbox.val();\r\n checkbox.prop(\"checked\", selected.indexOf(value) > -1);\r\n });\r\n }\r\n });\r\n const portfolioSelector = kendo.jQuery(\"#portfolioSelector\").getKendoMultiSelect();\r\n if (portfolioSelector) {\r\n _this.Grid.setPortfolioSelector(portfolioSelector);\r\n }\r\n\r\n $(\".navbar-filter .k-multiselect\").append(\"\");\r\n const connection = window.assetNotificationsHub;\r\n connection.on(\"NotifyAdded\", function () {\r\n _this.Grid.refreshCurrentPage();\r\n });\r\n connection.on(\"NotifyBulkUpdateCompleted\", function () {\r\n _this.Grid.refreshCurrentPage(true);\r\n });\r\n connection.on(\"NotifyTerminationCompleted\", function () {\r\n _this.Grid.refreshCurrentPage(true);\r\n });\r\n connection.on(\"NotifyBulkDeleteCompleted\", function () {\r\n _this.Grid.refreshCurrentPage(true);\r\n });\r\n connection.on(\"NotifyUploadCompleted\", function () {\r\n _this.Grid.refreshCurrentPage(true);\r\n });\r\n },\r\n created: function () {\r\n this.actionbar.searchVisible = true;\r\n this.actionbar.previewSelectorVisible = true;\r\n\r\n if (this.GridConfiguration.SelectedColumns.some(column => column.PropertyName === \"portfolio\")) {\r\n this.actionbar.portfolioFilterVisible = true;\r\n }\r\n\r\n //set extra rights\r\n const addAssetButton = this.actionbar.ItemsRight.find(f => f.event === \"ab-add-asset\") ? this.actionbar.ItemsRight.find(f => f.event === \"ab-add-asset\") : this.actionbar.ItemsLeft.find(f => f.event === \"ab-add-asset\");\r\n if (addAssetButton != null) {\r\n addAssetButton.visible = window.preLoadedData.rights.addAssetAllowed;\r\n }\r\n const uploadAssetsutton = this.actionbar.ItemsRight.find(f => f.event === \"ab-upload-assets\") ? this.actionbar.ItemsRight.find(f => f.event === \"ab-upload-assets\") : this.actionbar.ItemsLeft.find(f => f.event === \"ab-upload-assets\");\r\n if (uploadAssetsutton != null) {\r\n uploadAssetsutton.visible = window.preLoadedData.rights.assetUploadAllowed;\r\n } \r\n const uploadStatusButton = this.actionbar.ItemsRight.find(f => f.event === \"ab-upload-status\") ? this.actionbar.ItemsRight.find(f => f.event === \"ab-upload-status\") : this.actionbar.ItemsLeft.find(f => f.event === \"ab-upload-status\");\r\n if (uploadStatusButton != null) {\r\n uploadStatusButton.visible = window.preLoadedData.rights.assetUploadAllowed;\r\n }\r\n const generateQrButton = this.actionbar.ItemsRight.find(f => f.event === \"ab-generate-qr-code\") ? this.actionbar.ItemsRight.find(f => f.event === \"ab-generate-qr-code\") : this.actionbar.ItemsLeft.find(f => f.event === \"ab-generate-qr-code\");\r\n if (generateQrButton != null) {\r\n generateQrButton.visible = window.preLoadedData.rights.generateQrCodesAllowed;\r\n }\r\n },\r\n methods: {\r\n /**\r\n * ActionBar Events\r\n */\r\n actionbarChangeColumns: function (e) {\r\n if (this.selectedPreview){\r\n this.GridConfiguration.refreshColumns(this.selectedPreview.selectedColumns);\r\n }\r\n \r\n $('#grid-configuration-modal').modal('show');\r\n },\r\n actionbarSelectAll: function (e) {\r\n if (this.Grid.selectAll) {\r\n this.Grid.selectAll();\r\n }\r\n },\r\n actionbarFilterPortfolio: function (selected) {\r\n const portfolios = this.allowedPortfolios.filter(portfolio => selected.includes(portfolio.Name));\r\n if (portfolios.length > 0) {\r\n const connectionsPerField = [];\r\n portfolios.forEach(portfolio => {\r\n const connectionSet = connectionsPerField.find(connectionSet => connectionSet.fieldName === portfolio.FilterField);\r\n if (connectionSet) {\r\n portfolio.Connections.split(\",\").forEach(connection => {\r\n if (connectionSet.connectionValues.indexOf(connection) === -1) {\r\n connectionSet.connectionValues.push(connection);\r\n }\r\n });\r\n } else {\r\n connectionsPerField.push({\r\n fieldName: portfolio.FilterField,\r\n connectionValues: portfolio.Connections.split(\",\")\r\n });\r\n }\r\n });\r\n\r\n const filters = connectionsPerField.map(connection => {\r\n let filter = {};\r\n filter[\"field\"] = connection.fieldName;\r\n filter[\"operator\"] = \"eq\";\r\n filter[\"value\"] = connection.connectionValues;\r\n\r\n return filter;\r\n });\r\n\r\n const customFilter = {};\r\n customFilter[\"logic\"] = \"or\";\r\n customFilter[\"filters\"] = filters;\r\n\r\n this.Grid.customFilter(customFilter);\r\n } else {\r\n const customFilter = {};\r\n customFilter[\"logic\"] = \"and\";\r\n customFilter[\"filters\"] = [];\r\n\r\n this.Grid.customFilter(customFilter);\r\n }\r\n },\r\n actionbarSearch: function (e) {\r\n if (this.Grid.search) {\r\n this.Grid.search(e);\r\n }\r\n },\r\n actionbarExport: function (e) {\r\n if (this.Grid.export) {\r\n this.Grid.export();\r\n }\r\n },\r\n actionbarFullTermination: function (e) {\r\n if (this.prepareBulkData()) {\r\n if (!this.assetsShouldBeExcluded) {\r\n this.assetsTerminatedCount = this.selectedAssets.filter(i => i.assetStatusDll == \"Terminated\").length;\r\n let assetsBackOffice = this.selectedAssets.filter(i => i.assetReferences != null);\r\n this.assetsBackOfficeCount = assetsBackOffice.length;\r\n this.assetsBackOfficeIds = assetsBackOffice.map(i => i.id);\r\n this.assetsToBeTerminatedCount = this.selectedAssets.length - this.assetsBackOfficeCount - this.assetsTerminatedCount;\r\n this.$refs.assettermination.show();\r\n } else {\r\n this.fetchTerminationRemovalData().then((response) => {\r\n const selectedAssets = response.items.filter(a => !this.selectedAssets.some(a2 => a2.id === a.id)).map((a) => ({\r\n id: a.id,\r\n contractId: a.contractId,\r\n status: a.status,\r\n isBackofficeAsset: a.isBackofficeAsset\r\n }));\r\n this.assetsTerminatedCount = selectedAssets.filter(i => i.status == \"Terminated\").length;\r\n let assetsBackOffice = selectedAssets.filter(i => i.isBackofficeAsset);\r\n this.assetsBackOfficeCount = assetsBackOffice.length;\r\n this.assetsBackOfficeIds = assetsBackOffice.map(i => i.id);\r\n this.assetsToBeTerminatedCount = selectedAssets.length - this.assetsBackOfficeCount - this.assetsTerminatedCount;\r\n this.$refs.assettermination.show();\r\n });\r\n }\r\n }\r\n },\r\n actionbarAssetRequest: function (e) {\r\n const _this = this;\r\n if (this.prepareBulkData()) {\r\n $.ajax({\r\n type: 'GET',\r\n url: '/AssetRequest/GetPersonalSettings',\r\n success: function (response) {\r\n const personalSettings = Object.assign({}, response);\r\n const selectedContractIds = _this.selectedAssets.map(i => i.contractId);\r\n const assets = _this.selectedAssets.map(function (s) {\r\n return {\r\n \"assetId\": s.id,\r\n \"serialNumber\": s.serialNumber,\r\n \"contractId\": s.contractId,\r\n \"agreement\": s.agreementNumber,\r\n \"agreementLine\": s.contractLine,\r\n \"brand\": s.brand,\r\n \"model\": s.assetName\r\n };\r\n });\r\n _this.AssetRequest.FirstName = personalSettings.firstName;\r\n _this.AssetRequest.LastName = personalSettings.lastName;\r\n _this.AssetRequest.Email = personalSettings.email;\r\n _this.AssetRequest.PhoneNumber = personalSettings.phoneNumber;\r\n _this.AssetRequest.AssetsToTerminate = {\r\n \"contractId\": selectedContractIds[0],\r\n \"assets\": assets,\r\n };\r\n $(\"#asset-request-modal\").modal('show');\r\n },\r\n error: function (error) {\r\n reject(error);\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n }\r\n },\r\n actionbarRemoveAsset: function (e) {\r\n if (this.prepareBulkData()) {\r\n if (!this.assetsShouldBeExcluded) {\r\n let assetsBackOffice = this.selectedAssets.filter(i => i.assetReferences != null);\r\n this.assetsBackOfficeCount = assetsBackOffice.length;\r\n this.assetsBackOfficeIds = assetsBackOffice.map(i => i.id);\r\n this.assetsToBeRemovedCount = this.selectedAssets.length - this.assetsBackOfficeCount;\r\n this.$refs.assetremoval.show();\r\n } else { \r\n this.fetchTerminationRemovalData().then((response) => {\r\n const selectedAssets = response.items.filter(a => !this.selectedAssets.some(a2 => a2.id === a.id)).map((a) => ({\r\n id: a.id,\r\n contractId: a.contractId,\r\n status: a.status,\r\n isBackofficeAsset: a.isBackofficeAsset\r\n }));\r\n let assetsBackOffice = selectedAssets.filter(i => i.isBackofficeAsset);\r\n this.assetsBackOfficeCount = assetsBackOffice.length;\r\n this.assetsBackOfficeIds = assetsBackOffice.map(i => i.id);\r\n this.assetsToBeRemovedCount = selectedAssets.length - this.assetsBackOfficeCount;\r\n this.$refs.assetremoval.show();\r\n });\r\n }\r\n }\r\n },\r\n actionbarGenerateQrCode: function (e) {\r\n const vueObject = this;\r\n if (this.prepareBulkData()) {\r\n if (!this.assetsShouldBeExcluded) {\r\n generateQrCodes(this.selectedAssets, \"AddForLeasedAsset\");\r\n $(\"#download-qr-codes-modal\").modal('show');\r\n } else {\r\n this.fetchPagedQrData().then((response) => {\r\n generateQrCodes(response.items, \"AddForLeasedAsset\");\r\n $(\"#download-qr-codes-modal\").modal('show');\r\n },\r\n (error) => {\r\n vueObject.ShowError = true;\r\n vueObject.addAlert({\r\n \"message\": error.message,\r\n \"isSuccess\": false\r\n });\r\n });\r\n }\r\n }\r\n },\r\n actionbarUploadStatus: function (e) {\r\n window.location.href = \"./UploadStatus\";\r\n },\r\n actionbarUploadAssets: function (e) {\r\n const _this = this;\r\n this.clearAlert();\r\n\r\n $.ajax({\r\n type: 'GET',\r\n url: '/LeasedAssets/Upload',\r\n success: function (response) {\r\n _this.UploadModel = Object.assign({}, response)\r\n _this.$refs.leasedassetsupload.show(_this.UploadModel);\r\n\r\n // Disable focusin event listeners on Bootstrap modal to enable Kendo DropDownList filter\r\n $(\"#leased-assets-upload-modal\").on('shown.bs.modal', function (e) {\r\n $(document).off('focusin.modal');\r\n });\r\n },\r\n error: function (error) {\r\n reject(error);\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n\r\n },\r\n actionbarAddAsset: function (e) {\r\n const _this = this;\r\n _this.clearAlert();\r\n\r\n $.ajax({\r\n type: 'GET',\r\n url: '/LeasedAssets/Add',\r\n success: function (response) {\r\n _this.AddModel = Object.assign({}, response)\r\n _this.$refs.leasedassetadd.show();\r\n\r\n // Disable focusin event listeners on Bootstrap modal to enable Kendo DropDownList filter\r\n $(\"#leased-asset-add-modal\").on('shown.bs.modal', function (e) {\r\n $(document).off('focusin.modal');\r\n });\r\n },\r\n error: function (error) {\r\n reject(error);\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n },\r\n actionbarBulkEdit: function (e) {\r\n if (this.prepareBulkData()) {\r\n this.$refs.leasedassetsbulkedit.show(this.selectedAssets);\r\n }\r\n },\r\n actionbarManagePreviews: function (e) {\r\n this.$refs.managepreviews.show(this.gridPreviews, \"LeasedAssets\");\r\n },\r\n prepareBulkData: function () {\r\n if (this.Grid.globalSelection) {\r\n const globalSelection = this.Grid.globalSelection();\r\n this.selectedAssets = globalSelection.items;\r\n this.assetCount = this.Grid.selectedCount();\r\n this.assetsShouldBeExcluded = globalSelection.selectAll;\r\n this.assetFilter = globalSelection.filter;\r\n this.assetSort = globalSelection.sort;\r\n return true;\r\n }\r\n return false;\r\n },\r\n fetchTerminationRemovalData: function () {\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n type: 'POST',\r\n url: '/LeasedAssets/QueryTerminationRemovalData',\r\n data: JSON.stringify(({\r\n filter: this.assetFilter\r\n })),\r\n success: function (response) {\r\n resolve(response);\r\n },\r\n error: function (error) {\r\n reject(error);\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n });\r\n },\r\n fetchPagedAssetIds: function (pageToken) {\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n type: 'POST',\r\n url: '/LeasedAssets/QueryIds',\r\n data: JSON.stringify(({\r\n token: pageToken,\r\n limit: 250,\r\n filter: this.assetFilter,\r\n sort: this.assetSort\r\n })),\r\n success: function (response) {\r\n resolve(response);\r\n },\r\n error: function (error) {\r\n reject(error);\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n });\r\n },\r\n fetchPagedQrData: function () {\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n type: 'POST',\r\n url: '/LeasedAssets/QueryQrData',\r\n data: JSON.stringify(({\r\n limit: this.limit,\r\n filter: this.assetFilter,\r\n sort: this.assetSort\r\n })),\r\n success: function (response) {\r\n resolve(response);\r\n },\r\n error: function (error) {\r\n reject(error);\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n });\r\n },\r\n /**\r\n * Grid Events\r\n */\r\n loadColumns: function () {\r\n // this is not implemented here, the new QueryableGrid component handles this\r\n // this function is only here because the GridConfiguration component references this and we want to be backwards compatible\r\n },\r\n getCustomFieldValues: function (gridColumns) {\r\n const modifiedColumns = Object.assign([], gridColumns)\r\n for (let column of modifiedColumns) {\r\n if (column.field === \"portfolio\") {\r\n column.filterable = false;\r\n column.sortable = false;\r\n }\r\n }\r\n\r\n const fieldColumnsWithEmptyMessage = modifiedColumns.filter(x => typeof x.field !== \"undefined\" && ((x.field.startsWith(\"computedFields.\")) || (x.field.startsWith(\"assetTypeFields[\"))));\r\n if (fieldColumnsWithEmptyMessage.length > 0) {\r\n fieldColumnsWithEmptyMessage.forEach((potentialEmptyField) => {\r\n const fieldIndex = modifiedColumns.findIndex(x => x.field === potentialEmptyField.field);\r\n if (fieldIndex >= 0) {\r\n modifiedColumns[fieldIndex].template = function (dataItem) {\r\n\r\n if (potentialEmptyField.field.startsWith(\"computedFields\")) {\r\n const computedFieldName = getSubMemberName(potentialEmptyField.field);\r\n const computedFields = dataItem[\"computedFields\"];\r\n\r\n if (potentialEmptyField.type === 'number') {\r\n const numericValue = computedFields[computedFieldName];\r\n if (!numericValue) {\r\n return '';\r\n }\r\n\r\n return computedFields[computedFieldName];\r\n }\r\n } else if (potentialEmptyField.field.startsWith(\"assetTypeFields[\")) {\r\n const assetTypeFieldName = getSubMemberName(potentialEmptyField.field);\r\n const assetTypeFields = dataItem[\"assetTypeFields\"]; \r\n\r\n if (assetTypeFields[assetTypeFieldName] === undefined || assetTypeFields[assetTypeFieldName] === null) {\r\n return '';\r\n }\r\n\r\n return assetTypeFields[assetTypeFieldName];\r\n }\r\n else \r\n {\r\n return dataItem[potentialEmptyField.field];\r\n }\r\n };\r\n }\r\n });\r\n }\r\n return modifiedColumns;\r\n },\r\n getCustomActions: function () {\r\n let customFields = [];\r\n\r\n const customActions = [\r\n '',\r\n ];\r\n\r\n customFields.push(\r\n {\r\n 'title': ' ',\r\n 'filterable': false,\r\n 'template': function (dataItem) {\r\n const actions = [...customActions];\r\n if (dataItem.editAssetAllowed) {\r\n actions.push('');\r\n }\r\n if (dataItem.createMeterReadingAllowed) {\r\n actions.push('');\r\n }\r\n return actions.join('');\r\n },\r\n 'width': '120px'\r\n });\r\n\r\n return customFields;\r\n },\r\n onRowClicked: function (item) {\r\n window.location.href = \"./LeasedAssets/Details?id=\" + item.id + \"&overviewUrl=\" + encodeURIComponent(window.location.pathname + window.location.hash);;\r\n },\r\n onRowActionClicked: function (item, type) {\r\n if (!item)\r\n return;\r\n\r\n const _this = this;\r\n switch (type) {\r\n case \"view\":\r\n window.location.href = \"./LeasedAssets/Details?id=\" + item.id + \"&overviewUrl=\" + encodeURIComponent(window.location.pathname + window.location.hash);\r\n break;\r\n case \"edit\":\r\n window.location.href = \"./LeasedAssets/Details?id=\" + item.id + \"&action=edit&overviewUrl=\" + encodeURIComponent(window.location.pathname + window.location.hash);\r\n break;\r\n case \"add-meter-reading\":\r\n $.get(\"/MeterReadings/GetForleasedAsset?assetId=\" + item.id, function (assetModel) {\r\n ReadingTypes.load(assetModel.MeterReadings.Attributes);\r\n\r\n _this.MeterReadings.readingTypes = ReadingTypes.getAll();\r\n _this.MeterReadings.CurrentSourceSystem = assetModel.MeterReadings.CurrentSourceSystem;\r\n _this.detailsViewModel = assetModel;\r\n\r\n _this.meterReadingsModalActive = true;\r\n $('#asset-details--add-meter-reading').modal('show');\r\n });\r\n\r\n break;\r\n }\r\n },\r\n onRowSelectionChanged: function (item, selected) {\r\n if (selected) {\r\n console.log(\"item '\" + item.id + \"' was checked\")\r\n }\r\n else {\r\n console.log(\"item '\" + item.id + \"' was unchecked\")\r\n }\r\n },\r\n onGridChanged: function (selectedItems) {\r\n\r\n // NOTE: currently the selectedItems array only contains the items selected on the current page (not the items on the other pages as well)\r\n // And because of that, the authorization check (to determine whether the bulk operation controls should be enabled or not), is not complete \r\n // as there can be an asset on a other page which blocks the bulk operation enability.\r\n\r\n const bulkEditButton = this.findActionBarButton(\"ab-bulk-edit\");\r\n if (bulkEditButton != null) {\r\n bulkEditButton.enabled = selectedItems.length > 1;\r\n }\r\n\r\n const fullTerminationButton = this.findActionBarButton(\"ab-full-termination\");\r\n if (fullTerminationButton) {\r\n fullTerminationButton.enabled = selectedItems.length >= 1;\r\n }\r\n\r\n const assetRequestButton = this.findActionBarButton(\"ab-asset-request\");\r\n if (assetRequestButton) {\r\n assetRequestButton.enabled = selectedItems.length >= 1;\r\n }\r\n\r\n const partialTerminationButton = this.findActionBarButton(\"ab-partial-termination\");\r\n if (partialTerminationButton) {\r\n partialTerminationButton.enabled = selectedItems.length >= 1;\r\n }\r\n\r\n const removeButton = this.findActionBarButton(\"ab-remove-asset\");\r\n if (removeButton != null) {\r\n removeButton.enabled = selectedItems.length >= 1 && selectedItems.every(item => item.removeAssetAllowed === true);\r\n }\r\n\r\n const generateQrButton = this.findActionBarButton(\"ab-generate-qr-code\");\r\n if (generateQrButton) {\r\n generateQrButton.enabled = selectedItems.length >= 1;\r\n }\r\n\r\n if (this.Grid.totalCount && this.Grid.selectedCount) {\r\n const selectAll = document.getElementById('actionbarSelectAll');\r\n if (selectAll.checked && this.Grid.selectedCount() < this.Grid.totalCount())\r\n selectAll.checked = false;\r\n }\r\n },\r\n\r\n onGridColumnReordered: function(fieldName, newIndex, oldIndex){\r\n const _this = this;\r\n\r\n const changeOrder = (items) => {\r\n const changedItem = items.splice(--oldIndex, 1)[0];\r\n items.splice(--newIndex, 0, changedItem); \r\n }\r\n\r\n window.clearTimeout (gridConfigChangeTimer);\r\n\r\n gridConfigChangeTimer = window.setTimeout(() => {\r\n const newGridConfig = {..._this.GridConfiguration};\r\n\r\n changeOrder(newGridConfig.SelectedColumns);\r\n\r\n newGridConfig.ColumnsConfiguration[oldIndex].Index = newIndex;\r\n newGridConfig.ColumnsConfiguration[oldIndex].SortOrder = \"0_\" + newIndex;\r\n newGridConfig.ColumnsConfiguration[newIndex].Index = oldIndex;\r\n newGridConfig.ColumnsConfiguration[newIndex].SortOrder = \"0_\" + oldIndex;\r\n\r\n newGridConfig.ColumnsConfiguration = newGridConfig.ColumnsConfiguration.sort((x, y) => x.Index - y.Index) \r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: '/GridConfiguration/Save',\r\n contentType: 'application/json',\r\n dataType: 'json', \r\n data: JSON.stringify({\r\n gridName: _this.GridConfiguration.GridName,\r\n selectedColumnIds: newGridConfig.SelectedColumns.map(x => x.Id)\r\n }), \r\n success: function (response) {\r\n console.info(\"Stored new grid config\");\r\n _this.GridConfiguration = newGridConfig;\r\n },\r\n error: function (error) {\r\n console.error(error);\r\n },\r\n })\r\n }, 250); \r\n },\r\n\r\n findActionBarButton: function (event) {\r\n return this.actionbar.ItemsRight.find(f => f.event === event) ? this.actionbar.ItemsRight.find(f => f.event === event) : this.actionbar.ItemsLeft.find(f => f.event === event);\r\n },\r\n\r\n /**\r\n * Alerts\r\n */\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n meterReadingChangedEvent: function (message) {\r\n this.addAlert({ \"message\": message, \"isSuccess\": true, \"showPopup\": true });\r\n this.Grid.refreshCurrentPage(); \r\n },\r\n meterReadingModalClosedEvent: function () {\r\n this.meterReadingsModalActive = false;\r\n },\r\n documentChangedEvent: function (message) {\r\n this.addAlert({ \"message\": message, \"isSuccess\": true, \"showPopup\": true });\r\n },\r\n gridPreviewChangedEvent: function (message) {\r\n this.addAlert({ \"message\": message, \"isSuccess\": true, \"showPopup\": true });\r\n this.fetchGridPreviews();\r\n },\r\n setGridPreview: function (preview) { \r\n const _this = this;\r\n\r\n _this.selectedPreview = preview;\r\n _this.GridConfiguration.SelectedColumns = preview.selectedColumns.map(column => {\r\n let columnSettings = {};\r\n columnSettings[\"Id\"] = column.id;\r\n columnSettings[\"DisplayName\"] = column.displayName;\r\n columnSettings[\"PropertyName\"] = column.propertyName;\r\n columnSettings[\"PropertyType\"] = column.propertyType;\r\n\r\n return columnSettings;\r\n });\r\n },\r\n renderGridPreviewSelector() {\r\n const _this = this;\r\n kendo.jQuery(\"#previewSelector\").kendoDropDownList({\r\n dataTextField: \"name\",\r\n dataValueField: \"id\",\r\n dataSource: _this.gridPreviews,\r\n noDataTemplate: \"No previews available\",\r\n optionLabel: \"Select preview\",\r\n change: function () {\r\n const selected = this.value();\r\n const preview = _this.gridPreviews.find(preview => preview.id === selected);\r\n _this.setGridPreview(preview);\r\n if (preview.activeFilters) {\r\n _this.Grid.setActiveFilters(preview.activeFilters);\r\n }\r\n\r\n if (preview.activeSorting) {\r\n _this.Grid.setActiveSorting(preview.activeSorting);\r\n }\r\n\r\n _this.GridConfiguration.refreshColumns(preview.selectedColumns);\r\n _this.Grid.refreshLayout(preview);\r\n },\r\n });\r\n\r\n _this.actionbar.previewSelectorRendered = true;\r\n $(\".navbar-filter .k-picker\").append(\"\");\r\n },\r\n fetchGridPreviews: function() {\r\n let _this = this;\r\n\r\n fetchJson('/GridPreviews/List?gridType=LeasedAssets')\r\n .then(\r\n (result) => {\r\n _this.gridPreviews = result;\r\n this.renderGridPreviewSelector();\r\n },\r\n (error) => {\r\n console.error(error);\r\n });\r\n },\r\n refreshData: function () {\r\n },\r\n }\r\n });\r\n}","import Vue from 'vue'\r\nimport 'vue2-datepicker/index.css'\r\nimport axios from \"axios\"\r\n\r\nmodule.export = Vue.component('assetremovalmodal',\r\n {\r\n name: \"assetremovalmodal\",\r\n props: {\r\n selectedAssets: Array,\r\n assetCount: Number,\r\n assetsToBeRemovedCount: Number,\r\n assetsBackOfficeCount: Number,\r\n assetsBackOfficeIds: Array,\r\n assetsShouldBeExcluded: Boolean,\r\n assetFilter: Object\r\n },\r\n data: function () {\r\n return {\r\n alerts: []\r\n };\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n save: function () {\r\n this.clearAlert();\r\n let vueObject = this;\r\n $(\"#saveButton\").prop(\"disabled\", true);\r\n if (!this.assetsShouldBeExcluded) {\r\n const selectedAssets = vueObject.selectedAssets.map((a) => ({\r\n id: a.id,\r\n contractId: a.contractId,\r\n status: a.assetStatusDll,\r\n isBackofficeAsset: a.assetReferences != null\r\n })).filter(a => !a.isBackofficeAsset);\r\n this.removeAssets(selectedAssets).then((response) => {\r\n if (!response.success) {\r\n vueObject.addAlert({\r\n \"message\": response.message,\r\n \"isSuccess\": false\r\n });\r\n } else {\r\n this.close();\r\n this.$emit('alert', { \"message\": 'Asset(s) successfully removed', \"isSuccess\": true, \"showPopup\": true });\r\n }\r\n },\r\n (error) => {\r\n vueObject.addAlert({\r\n \"message\": error.message,\r\n \"isSuccess\": false\r\n });\r\n });\r\n } else {\r\n this.fetchPageRemovalData().then((response) => {\r\n this.removeAssetsFromResponseRecursively(vueObject, response);\r\n },\r\n (error) => {\r\n vueObject.ShowError = true;\r\n vueObject.addAlert({\r\n \"message\": error.message,\r\n \"isSuccess\": false\r\n });\r\n });\r\n }\r\n },\r\n\r\n removeAssets: function (selectedAssets) {\r\n let selectedContractIds = [...new Set(selectedAssets.map(i => i.contractId))];\r\n let selectedAssetIds = selectedAssets.map(i => i.id);\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n url: \"/LeasedAssets/Remove\",\r\n data: JSON.stringify({ contracts: selectedContractIds, assetIds: selectedAssetIds }),\r\n type: \"POST\",\r\n success: function (response) {\r\n resolve(response);\r\n },\r\n error: function (error) {\r\n reject(error);\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n });\r\n },\r\n fetchPageRemovalData: function (pageToken) {\r\n return new Promise((resolve, reject) => { \r\n $.ajax({\r\n type: 'POST',\r\n url: '/LeasedAssets/QueryTerminationRemovalData',\r\n data: JSON.stringify(({ \r\n token: pageToken,\r\n limit: 250,\r\n filter: this.assetFilter\r\n })),\r\n success: function (response) {\r\n resolve(response);\r\n },\r\n error: function (error) {\r\n reject(error);\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n });\r\n },\r\n removeAssetsFromResponseRecursively: function (vueObject, response) {\r\n if (response) {\r\n const token = response.pageToken;\r\n const selectedAssets = response.items.filter(a => !this.selectedAssets.some(a2 => a2.id === a.id)).map((a) => ({\r\n id: a.id,\r\n contractId: a.contractId,\r\n status: a.status,\r\n isBackofficeAsset: a.isBackofficeAsset\r\n })).filter(a => !a.isBackofficeAsset);\r\n \r\n this.removeAssets(selectedAssets).then((removalResponse) => {\r\n if (!removalResponse.success) {\r\n vueObject.addAlert(\r\n {\r\n \"message\": `Could not remove asset: ${removalResponse.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n if (token) {\r\n this.fetchPageRemovalData(token).then((response) => {\r\n this.removeAssetsFromResponseRecursively(vueObject, response);\r\n },\r\n (error) => {\r\n vueObject.addAlert(\r\n {\r\n \"message\": 'Could not remove asset due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }); \r\n } else {\r\n this.close();\r\n this.$emit('alert', { \"message\": 'Asset(s) successfully removed', \"isSuccess\": true, \"showPopup\": true });\r\n } \r\n },\r\n (error) => {\r\n vueObject.addAlert(\r\n {\r\n \"message\": 'Could not remove asset due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n });\r\n }\r\n },\r\n download: function () {\r\n axios.get('/LeasedAssets/GetBackOfficeAssetsExcelFile?backOfficeAssetsIds=' + this.assetsBackOfficeIds.join(','), { responseType: 'blob' })\r\n .then(response => {\r\n const link = document.createElement('a');\r\n link.href = URL.createObjectURL(response.data);\r\n link.download = 'Back-Office-Assets-To-Be-Removed_' + new Date().toISOString() + '.xlsx';\r\n link.click();\r\n URL.revokeObjectURL(link.href);\r\n }).catch(console.error);\r\n },\r\n finish: function () {\r\n this.$emit('refresh');\r\n this.close();\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n $('#asset-removal-modal').modal('hide');\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n show: function() {\r\n $('#asset-removal-modal').modal('show');\r\n }\r\n }\r\n });\r\n","import Vue from 'vue'\r\nimport DatePicker from 'vue2-datepicker'\r\nimport 'vue2-datepicker/index.css'\r\n\r\nmodule.export = Vue.component('assetrequestmodal',\r\n {\r\n name: \"assetrequestmodal\",\r\n props: {\r\n assetRequest: Object,\r\n assetCount: Number,\r\n assetsShouldBeExcluded: Boolean,\r\n assetFilter: Object\r\n },\r\n components: {\r\n DatePicker\r\n },\r\n data: function () {\r\n return {\r\n alerts: [],\r\n requestTypes: [\"Termination request\", \"Return request\", \"Extension request\", \"Buy Out request\"],\r\n requestType: null,\r\n RecursiveError: false\r\n };\r\n },\r\n mounted: function () {\r\n this.requestType = this.requestTypes[0];\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n send: function (e) {\r\n e.preventDefault();\r\n this.$validator.validateAll().then((result) => {\r\n this.clearAlert();\r\n if (result) {\r\n $(\"#sendbutton\").prop(\"disabled\", true);\r\n const vueObject = this;\r\n if (!this.assetsShouldBeExcluded) {\r\n this.sendRequestForAssets(vueObject, this.assetRequest.AssetsToTerminate.assets).then((response) => {\r\n if (response.success) {\r\n vueObject.$emit('alert',\r\n {\r\n \"message\": \"Your request is sent, you will be contacted.\",\r\n \"isSuccess\": true,\r\n \"showPopup\": true\r\n });\r\n vueObject.close();\r\n } else {\r\n vueObject.addAlert(\r\n {\r\n \"message\": `Could not send request: ${response.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#sendButton\").removeAttr(\"disabled\");\r\n }\r\n },\r\n (error) => {\r\n vueObject.addAlert(\r\n {\r\n \"message\": 'Could not send request due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#sendButton\").removeAttr(\"disabled\");\r\n });\r\n } else {\r\n this.fetchPagedTerminationData().then((response) => {\r\n this.sendRequestForAssetsFromResponseRecursively(vueObject, response);\r\n if (!vueObject.RecursiveError) {\r\n vueObject.$emit('alert',\r\n {\r\n \"message\": \"Your request is sent, you will be contacted.\",\r\n \"isSuccess\": true,\r\n \"showPopup\": true\r\n });\r\n vueObject.close();\r\n } else {\r\n vueObject.$emit('alert',\r\n {\r\n \"message\": \"Could not send request.\",\r\n \"isSuccess\": false,\r\n \"showPopup\": true\r\n });\r\n $(\"#sendButton\").prop(\"disabled\", false);\r\n }\r\n },\r\n (error) => {\r\n vueObject.addAlert(\r\n {\r\n \"message\": 'Could not send request due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#sendButton\").prop(\"disabled\", false);\r\n });\r\n }\r\n } else {\r\n this.addAlert(\r\n {\r\n \"message\": 'Some fields in the form are invalid',\r\n \"isSuccess\": false\r\n });\r\n $(\"#sendButton\").prop(\"disabled\", false);\r\n }\r\n });\r\n },\r\n sendRequestForAssets: function(vueObject, selectedAssets)\r\n {\r\n const selectedContractIds = selectedAssets.map(i => i.contractId);\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n type: 'POST',\r\n url: '/AssetRequest/SendRequestForAssets',\r\n data: JSON.stringify({\r\n requestType: vueObject.requestType.replace(\"request\", \"Request\").replaceAll(\" \", \"\"),\r\n requestDate: vueObject.assetRequest.RequestDate,\r\n assets: selectedAssets,\r\n contractId: selectedContractIds[0],\r\n additionalInformation: vueObject.assetRequest.AdditionalInformation,\r\n firstName: vueObject.assetRequest.FirstName,\r\n lastName: vueObject.assetRequest.LastName,\r\n email: vueObject.assetRequest.Email,\r\n phoneNumer: vueObject.assetRequest.PhoneNumber\r\n\r\n }),\r\n success: function (response) {\r\n resolve(response);\r\n },\r\n error: function (error) {\r\n reject(error);\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n });\r\n },\r\n fetchPagedTerminationData: function (pageToken) {\r\n return new Promise((resolve, reject) => { \r\n $.ajax({\r\n type: 'POST',\r\n url: '/LeasedAssets/QueryTerminationData',\r\n data: JSON.stringify(({ \r\n token: pageToken,\r\n limit: 250,\r\n filter: this.assetFilter\r\n })),\r\n success: function (response) {\r\n resolve(response);\r\n },\r\n error: function (error) {\r\n reject(error);\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n });\r\n },\r\n sendRequestForAssetsFromResponseRecursively: function (vueObject, response) {\r\n if (response) {\r\n const token = response.pageToken;\r\n const selectedAssets = response.items.filter(a => !this.assetRequest.AssetsToTerminate.assets.some(a2 => a2.id === a.id)).map((a) => ({\r\n id: a.id,\r\n contractId: a.contractId,\r\n status: a.status\r\n }));\r\n this.sendRequestForAssets(vueObject, selectedAssets).then((requestResponse) => {\r\n if (token) {\r\n this.fetchPagedTerminationData(token).then((response) => {\r\n this.sendRequestForAssetsFromResponseRecursively(vueObject, response);\r\n },\r\n (error) => {\r\n vueObject.RecursiveError = true;\r\n vueObject.addAlert(\r\n {\r\n \"message\": 'Could not request termination due to a server error',\r\n \"isSuccess\": false\r\n });\r\n }); \r\n } \r\n },\r\n (error) => {\r\n vueObject.RecursiveError = true;\r\n vueObject.addAlert(\r\n {\r\n \"message\": 'Could not request termination due to a server error',\r\n \"isSuccess\": false\r\n });\r\n });\r\n }\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n this.$validator.reset();\r\n $(\"#sendButton\").prop(\"disabled\", false);\r\n this.requestType = this.requestTypes[0];\r\n this.assetRequest.RequestDate = '';\r\n this.assetRequest.AdditionalInformation = '';\r\n this.assetRequest.FirstName = '';\r\n this.assetRequest.LastName = '';\r\n this.assetRequest.Email = '';\r\n this.assetRequest.PhoneNumber = '';\r\n $('#asset-request-modal').modal('hide');\r\n }\r\n }\r\n });","import Vue from 'vue'\r\nimport DatePicker from \"vue2-datepicker\"\r\nimport 'vue2-datepicker/index.css'\r\nimport axios from \"axios\"\r\n\r\nmodule.export = Vue.component('assetterminationmodal',\r\n {\r\n name: \"assetterminationmodal\",\r\n props: {\r\n selectedAssets: Array,\r\n assetCount: Number,\r\n assetsToBeTerminatedCount: Number,\r\n assetsBackOfficeCount: Number,\r\n assetsBackOfficeIds: Array,\r\n assetsTerminatedCount: Number,\r\n assetsShouldBeExcluded: Boolean,\r\n assetFilter: Object\r\n },\r\n components: {\r\n DatePicker\r\n },\r\n data: function () {\r\n return {\r\n alerts: [],\r\n ShowProgress: false,\r\n ShowSuccess: false,\r\n resultText: '',\r\n terminationNotification: '',\r\n terminationProgressPercentage: 0,\r\n assetTermination: {\r\n TerminationDate: null\r\n },\r\n failedAssetIds: [],\r\n };\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n save: function () {\r\n this.clearAlert();\r\n const vueObject = this;\r\n $(\"#saveButton\").prop(\"disabled\", true);\r\n if (!this.assetsShouldBeExcluded) {\r\n const selectedAssets = vueObject.selectedAssets.map((a) => ({\r\n id: a.id,\r\n contractId: a.contractId,\r\n status: a.assetStatusDll,\r\n isBackofficeAsset: a.assetReferences != null\r\n })).filter(a => !a.isBackofficeAsset);\r\n this.terminateAssets(vueObject, selectedAssets).then((response) => {\r\n if (response.success) {\r\n vueObject.resultText = \"Successfully terminated \" + response.successfulTerminationCount + \" assets. \" + (response.alreadyTerminatedCount > 0 ? response.alreadyTerminatedCount + \" were already terminated. \" : \"\") + (response.unsuccessfulTerminatedCount > 0 ? response.unsuccessfulTerminatedCount + \" Could not be terminated. Termination needs to be done in backoffice.\" : \"\");\r\n if (response.failedAssetIds.length > 0) {\r\n vueObject.failedAssetIds.push(...response.failedAssetIds);\r\n }\r\n vueObject.ShowProgress = true;\r\n } else {\r\n vueObject.addAlert(\r\n {\r\n \"message\": `Could not terminate asset: ${response.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n },\r\n (error) => {\r\n vueObject.addAlert(\r\n {\r\n \"message\": 'Could not terminate asset due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n });\r\n } else {\r\n this.fetchPagedTerminationData().then((response) => {\r\n this.terminateAssetsFromResponseRecursively(vueObject, response);\r\n },\r\n (error) => {\r\n vueObject.addAlert(\r\n {\r\n \"message\": 'Could not terminate asset due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n });\r\n }\r\n },\r\n terminateAssets: function(vueObject, selectedAssets) {\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n type: 'POST',\r\n url: '/AssetTermination/TerminateAssets',\r\n data: JSON.stringify({\r\n AssetsToTerminate: selectedAssets,\r\n TerminationDate: vueObject.assetTermination.TerminationDate\r\n }),\r\n success: function (response) {\r\n resolve(response);\r\n },\r\n error: function (error) {\r\n reject(error);\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n });\r\n },\r\n fetchPagedTerminationData: function (pageToken) {\r\n return new Promise((resolve, reject) => { \r\n $.ajax({\r\n type: 'POST',\r\n url: '/LeasedAssets/QueryTerminationRemovalData',\r\n data: JSON.stringify(({ \r\n token: pageToken,\r\n limit: 250,\r\n filter: this.assetFilter\r\n })),\r\n success: function (response) {\r\n resolve(response);\r\n },\r\n error: function (error) {\r\n reject(error);\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n });\r\n },\r\n terminateAssetsFromResponseRecursively: function (vueObject, response) {\r\n if (response) {\r\n const token = response.pageToken;\r\n const selectedAssets = response.items.filter(a => !this.selectedAssets.some(a2 => a2.id === a.id)).map((a) => ({\r\n id: a.id,\r\n contractId: a.contractId,\r\n status: a.status,\r\n isBackofficeAsset: a.isBackofficeAsset\r\n })).filter(a => !a.isBackofficeAsset);\r\n \r\n this.terminateAssets(vueObject, selectedAssets).then((terminationResponse) => {\r\n if (terminationResponse.success) {\r\n vueObject.resultText = \"Successfully terminated \" + terminationResponse.successfulTerminationCount + \" assets. \" + (terminationResponse.alreadyTerminatedCount > 0 ? terminationResponse.alreadyTerminatedCount + \" were already terminated. \" : \"\") + (terminationResponse.unsuccessfulTerminatedCount > 0 ? terminationResponse.unsuccessfulTerminatedCount + \" Could not be terminated. Termination needs to be done in backoffice.\" : \"\");\r\n if (terminationResponse.failedAssetIds.length > 0) {\r\n vueObject.failedAssetIds.push(...terminationResponse.failedAssetIds);\r\n }\r\n vueObject.ShowProgress = true;\r\n\r\n } else {\r\n vueObject.addAlert(\r\n {\r\n \"message\": `Could not terminate asset: ${terminationResponse.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n if (token) {\r\n this.fetchPagedTerminationData(token).then((response) => {\r\n this.terminateAssetsFromResponseRecursively(vueObject, response);\r\n },\r\n (error) => {\r\n vueObject.addAlert(\r\n {\r\n \"message\": 'Could not terminate asset due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }); \r\n } \r\n },\r\n (error) => {\r\n vueObject.addAlert(\r\n {\r\n \"message\": 'Could not terminate asset due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n });\r\n }\r\n },\r\n download: function () {\r\n axios.get('/LeasedAssets/GetBackOfficeAssetsExcelFile?backOfficeAssetsIds=' + this.assetsBackOfficeIds.join(','), { responseType: 'blob' })\r\n .then(response => {\r\n const link = document.createElement('a');\r\n link.href = URL.createObjectURL(response.data);\r\n link.download = 'Back-Office-Assets-To-Be-Terminated_' + new Date().toISOString() + '.xlsx';\r\n link.click();\r\n URL.revokeObjectURL(link.href);\r\n }).catch(console.error);\r\n },\r\n finish: function () {\r\n this.$emit('refresh');\r\n this.close();\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n this.ShowProgress = false;\r\n this.ShowSuccess = false;\r\n $('#asset-termination-modal').modal('hide');\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n show: function() {\r\n const _this = this;\r\n $('#asset-termination-modal').modal('show');\r\n this.terminationNotification = '';\r\n this.terminationProgressPercentage = 0;\r\n const notifications = window.assetNotificationsHub;\r\n notifications.on(\"NotifyTerminationStarted\", function (terminationid, total) {\r\n _this.terminationNotification = `Started terminating ${total} assets.`;\r\n });\r\n notifications.on(\"NotifyTerminationProgress\", function (terminationid, progress, total) {\r\n _this.terminationProgressPercentage = parseInt(progress * 100 / total);\r\n });\r\n notifications.on(\"NotifyTerminationCompleted\", function (terminationid, total) {\r\n _this.terminationNotification = `${total} assets successfully terminated!`;\r\n _this.ShowProgress = false;\r\n _this.ShowSuccess = true;\r\n });\r\n }\r\n }\r\n });\r\n","import Vue from 'vue'\r\nimport axios from \"axios\"\r\nimport { fetchJson } from '../Shared/request-utils'\r\n\r\nmodule.export = Vue.component('leasedassetsupload',\r\n {\r\n name: \"leasedassetsupload\",\r\n props: {\r\n UploadModel: Object\r\n },\r\n data: function () {\r\n return {\r\n alerts: [],\r\n contractIdentifier: null,\r\n selectedType: null,\r\n dataSource: null,\r\n searchText: null,\r\n files: new FormData(),\r\n required: false,\r\n ShowSuccess: false,\r\n ShowProgress: false,\r\n ShowError: false,\r\n uploadProgressPercentage: 0,\r\n uploadFileName: \"\",\r\n uploadNotification: \"\",\r\n\r\n };\r\n },\r\n mounted: function() {\r\n const _this = this;\r\n const $assetTypeSelector = $(\"#assetTypeSelectorForUpload\");\r\n\r\n _this.dataSource = new kendo.data.DataSource({\r\n serverFiltering: true,\r\n transport: {\r\n read: function (options) {\r\n if (options.data.filter &&\r\n options.data.filter.filters.length > 0 &&\r\n options.data.filter.filters[0].value.length > 0) {\r\n _this.searchText = options.data.filter.filters[0].value;\r\n }\r\n\r\n fetchJson('/LeasedAssets/GetAssetTypesForUpload?search=' + _this.searchText)\r\n .then(\r\n (result) => {\r\n options.success(result);\r\n },\r\n (error) => {\r\n console.error(error);\r\n });\r\n }\r\n },\r\n });\r\n\r\n $assetTypeSelector.kendoDropDownList({\r\n filter: true,\r\n placeholder: \"Search for asset type\",\r\n autoBind: false,\r\n minLength: 3,\r\n enforceMinLength: true,\r\n dataSource: _this.dataSource,\r\n dataTextField: \"assetTypeName\",\r\n dataValueField: \"id\",\r\n template: ({ assetTypeName, masterAssetTypeName }) => assetTypeName + ' (' + masterAssetTypeName + ')',\r\n valueTemplate: () => _this.selectedType.assetTypeName + ' (' + _this.selectedType.masterAssetTypeName + ')',\r\n select: (e) => {\r\n _this.selectedType = e.dataItem;\r\n }\r\n });\r\n\r\n $(\"#assetTypeSelectorForUpload-list .k-textbox\").attr(\"placeholder\", \"Search for asset type\");\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n startUpload() {\r\n const _this = this;\r\n\r\n this.files.set('selectedType', this.selectedType.id);\r\n\r\n axios.post('/UploadAssets/UploadLeasedAssets?contractId=' + this.contractIdentifier,\r\n this.files,\r\n {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n }).then(response => {\r\n if (response.data.success) {\r\n _this.ShowProgress = true;\r\n const notifications = window.assetNotificationsHub;\r\n notifications.on(\"NotifyUploadStarted\", function (uploadId, originalFileName, total) {\r\n if (uploadId == response.data.uploadId) {\r\n _this.uploadNotification = \"Upload started\";\r\n }\r\n });\r\n notifications.on(\"NotifyUploadValidationFailed\", function (uploadId, originalFileName, total) {\r\n if (uploadId == response.data.uploadId) {\r\n _this.uploadNotification = \"Upload validation failed\";\r\n setTimeout(function () {\r\n _this.addAlert(\r\n {\r\n \"message\": 'File contains errors, please check the upload status',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n _this.ShowError = true;\r\n _this.ShowProgress = false;\r\n _this.uploadFileName = \"\";\r\n _this.uploadNotification = \"\";\r\n }, 2000);\r\n }\r\n });\r\n notifications.on(\"NotifyUploadValidationSucceeded\", function (uploadId, originalFileName, total) {\r\n if (uploadId == response.data.uploadId) {\r\n _this.uploadNotification = \"Upload validation succeeded\";\r\n }\r\n });\r\n notifications.on(\"NotifyUploadProgress\", function (uploadId, originalFileName, progress, failed, total) {\r\n if (uploadId == response.data.uploadId) {\r\n _this.uploadNotification = `Uploading asset ${progress} of ${total} with ${failed} failed assets`;\r\n _this.uploadProgressPercentage = parseInt(progress * 100 / total);\r\n }\r\n });\r\n notifications.on(\"NotifyUploadCompleted\", function (uploadId, originalFileName, failed, total) {\r\n if (uploadId == response.data.uploadId) {\r\n if (failed >= 0 && total >= 0) {\r\n const successful = total - failed;\r\n _this.uploadNotification = `Upload has completed with ${successful} assets and ${failed} failed assets`;\r\n setTimeout(function () {\r\n _this.ShowSuccess = true;\r\n _this.ShowProgress = false;\r\n _this.uploadFileName = \"\";\r\n _this.uploadNotification = \"\";\r\n }, 2000);\r\n } else {\r\n _this.uploadNotification = \"Asset upload prematurely completed due to an error during upload validation.\"\r\n setTimeout(function () {\r\n this.addAlert(\r\n {\r\n \"message\": `Could not upload file. Please check in properties of uploaded file, if file is not accidentally locked or anyhow damaged: ${response.data.data}`,\r\n \"isSuccess\": false\r\n });\r\n _this.ShowSuccess = false;\r\n _this.ShowProgress = false;\r\n _this.uploadFileName = \"\";\r\n _this.uploadNotification = \"\";\r\n }, 2000);\r\n }\r\n }\r\n });\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not upload file. Please check in properties of uploaded file, if file is not accidentally locked or anyhow damaged: ${response.data.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n }).catch(error => {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not upload file. Please check in properties of uploaded file, if file is not accidentally locked or anyhow damaged',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n });\r\n },\r\n fileChange(fileList) {\r\n this.required = false;\r\n this.uploadFileName = \"\";\r\n this.uploadNotification = \"\";\r\n for (let i = 0; i < fileList.length; i++) {\r\n this.files.set(\"file\", fileList[i], fileList[i].name);\r\n this.uploadFileName += fileList[i].name;\r\n }\r\n },\r\n save() {\r\n $(\"#saveButton\").prop(\"disabled\", true);\r\n this.validate();\r\n if (!this.required) {\r\n this.startUpload();\r\n }\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n this.ShowSuccess = false;\r\n this.ShowError = false;\r\n this.selectedType = null;\r\n this.uploadProgressPercentage = 0;\r\n this.uploadFileName = \"\";\r\n this.uploadNotification = \"\";\r\n this.contractIdentifier = null;\r\n this.files = new FormData();\r\n this.required = false;\r\n document.getElementById(\"uploadForm\").reset();\r\n $('#leased-assets-upload-modal').modal('hide');\r\n\r\n // Enable save button again.\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n },\r\n show: function () {\r\n this.contractIdentifier = null;\r\n this.selectedType = null;\r\n this.files = new FormData();\r\n $('#leased-assets-upload-modal').modal('show');\r\n },\r\n validate: function () {\r\n this.required = !(this.selectedType != null && this.selectedType.id.length > 0 && this.files.get(\"file\"));\r\n },\r\n downloadTemplate: function () {\r\n axios.get('/UploadAssets/GetLeasedAssetsUploadTemplate?assetTypeFieldId=' + this.selectedType.id, { responseType: 'blob' })\r\n .then(response => {\r\n const link = document.createElement('a');\r\n link.href = URL.createObjectURL(response.data);\r\n link.download = 'LeasedTemplate_' + new Date().toISOString() + '.xlsx';\r\n link.click();\r\n URL.revokeObjectURL(link.href);\r\n }).catch(console.error);\r\n }\r\n },\r\n watch: {\r\n selectedType: function (val) {\r\n this.required = false;\r\n }\r\n }\r\n });\r\n\r\n","import Vue from 'vue'\r\nimport axios from 'axios';\r\n\r\nmodule.export = Vue.component('addlesseemodal',\r\n {\r\n name: 'addlessee',\r\n props: {\r\n data: Object\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n AddModel: {\r\n portfolio: '',\r\n CsdEmail: ''\r\n },\r\n lesseeList: [],\r\n dataSource: {\r\n data: [],\r\n serverPaging: true,\r\n serverFiltering: true,\r\n },\r\n pagedData: {\r\n tokens: {\r\n index: -1,\r\n values: []\r\n },\r\n offset: {\r\n start: 1,\r\n end: undefined\r\n },\r\n limit: 10,\r\n totalCount: 0,\r\n isFetching: undefined\r\n },\r\n columns: [\r\n {\r\n 'field': 'selected',\r\n 'title': ' ',\r\n 'filterable': false,\r\n 'template':\r\n `
\r\n \r\n \r\n
`,\r\n 'width': '40px'\r\n },\r\n { 'field': 'lesseeNumber', 'title': 'Lessee Number', 'filterable': false },\r\n { 'field': 'lesseeName', 'title': 'Lessee Name', 'filterable': false }\r\n ],\r\n backOffices: [],\r\n backOfficeFilter: '',\r\n searchText: ''\r\n };\r\n },\r\n created: function () {\r\n this.setBackOfficeReferences();\r\n },\r\n watch: {\r\n modalBeingShown: function () {\r\n this.clearAlert();\r\n }\r\n },\r\n computed: {\r\n prevDisabled: function () {\r\n return !this.hasPrevToken() || this.pagedData.isFetching;\r\n },\r\n nextDisabled: function () {\r\n return !this.hasNextToken() || this.pagedData.isFetching;\r\n }\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n hasPrevToken: function () {\r\n return this.pagedData.tokens.index >= 0;\r\n },\r\n hasNextToken: function () {\r\n return this.pagedData.tokens.values.length > 0 &&\r\n (this.pagedData.tokens.index + 1) < (this.pagedData.tokens.values.length)\r\n },\r\n goToPrevPage: function (evt) {\r\n evt.preventDefault();\r\n\r\n if (this.hasPrevToken()) {\r\n this.pagedData.tokens.values.splice(this.pagedData.tokens.index + 1, 1);\r\n\r\n this.pagedData.tokens.index -= 1;\r\n const pageToken = this.pagedData.tokens.values[this.pagedData.tokens.index];\r\n\r\n this.fetchPagedData(pageToken, true).then(() => {\r\n this.calculateOffset(false);\r\n });\r\n }\r\n },\r\n goToNextPage: function (evt) {\r\n evt.preventDefault();\r\n if (this.hasNextToken()) {\r\n this.pagedData.tokens.index += 1;\r\n\r\n this.fetchPagedData(this.pagedData.tokens.values[this.pagedData.tokens.index], false).then(() => {\r\n this.calculateOffset(true);\r\n });\r\n }\r\n },\r\n calculateOffset: function (forward) {\r\n let newOffset = {};\r\n\r\n if (forward) {\r\n newOffset = {\r\n start: this.pagedData.offset.start + this.pagedData.limit,\r\n end: undefined\r\n };\r\n\r\n newOffset.end = (newOffset.start + this.pagedData.limit) - 1;\r\n }\r\n else {\r\n newOffset = {\r\n start: undefined,\r\n end: (this.pagedData.offset.start - 1)\r\n };\r\n\r\n newOffset.start = this.pagedData.offset.start - this.pagedData.limit;\r\n }\r\n\r\n Object.assign(this.pagedData.offset, newOffset);\r\n },\r\n setBackOfficeReferences: function () {\r\n const _this = this;\r\n axios.get(\"/Lessees/GetBackOfficeReferences\")\r\n .then(response => {\r\n _this.backOffices = response.data.data.filter(x => {\r\n return (typeof x.source !== \"undefined\" && typeof x.instance !== \"undefined\");\r\n });\r\n\r\n _this.backOfficeFilter = _this.backOffices[0];\r\n this.fetchPagedData();\r\n }).catch(error => {\r\n // TODO: error msging hiervoor?\r\n });\r\n },\r\n backOfficeChanged: function () {\r\n this.pagedData.tokens.index = -1;\r\n this.pagedData.tokens.values = [];\r\n this.pagedData.totalCount = 0;\r\n\r\n this.fetchPagedData();\r\n },\r\n fetchPagedData: function (pageToken, previous, searchTerm) {\r\n const _this = this;\r\n const _previous = previous;\r\n\r\n return new Promise((resolve, reject) => {\r\n _this.pagedData.isFetching = true;\r\n\r\n axios.post(\r\n '/Lessees/GetLesseesFromBackOffice',\r\n {\r\n token: pageToken,\r\n limit: _this.pagedData.limit\r\n },\r\n {\r\n params: {\r\n source: _this.backOfficeFilter.source,\r\n instance: _this.backOfficeFilter.source,\r\n type: _this.backOfficeFilter.type,\r\n search: searchTerm\r\n }\r\n })\r\n .then(response => {\r\n _this.dataSource = response.data.items.map((lessee) => {\r\n return {\r\n selected: (_this.lesseeList.findIndex(item => item.lesseeNumber == lessee.lesseeNumber) > -1),\r\n lesseeNumber: lessee.lesseeNumber,\r\n lesseeName: lessee.lesseeName\r\n };\r\n });\r\n\r\n if (response.data.pageToken && !_previous) {\r\n _this.pagedData.tokens.values.push(response.data.pageToken);\r\n }\r\n\r\n _this.pagedData.totalCount = response.data.totalCount;\r\n _this.pagedData.isFetching = false;\r\n\r\n if (response.data.totalCount > _this.pagedData.limit) {\r\n this.pagedData.offset.end = (_this.pagedData.offset.start + _this.pagedData.limit) - 1;\r\n }\r\n else {\r\n this.pagedData.offset.end = response.data.totalCount;\r\n }\r\n resolve();\r\n }).catch(error => {\r\n reject(error);\r\n });\r\n });\r\n },\r\n searchTextChanged: function () {\r\n if (this.searchText.trim().length === 0) {\r\n this.searchLesseeList();\r\n }\r\n },\r\n searchLesseeList: function () {\r\n if (this.pagedData.isFetching)\r\n return;\r\n\r\n this.pagedData.tokens.index = -1;\r\n this.pagedData.tokens.values = [];\r\n this.pagedData.totalCount = 0;\r\n\r\n this.fetchPagedData(null, false, this.searchText.trim());\r\n },\r\n clearSelection() {\r\n const grid = this.$refs.grid.kendoWidget();\r\n this.lesseeList = [];\r\n grid.dataSource.data().forEach(item => item.selected = false);\r\n grid.refresh();\r\n },\r\n add: function (e) {\r\n e.preventDefault();\r\n this.addLesseesFromBackOffice();\r\n },\r\n addLesseesFromBackOffice: function () {\r\n const _this = this;\r\n _this.clearAlert();\r\n $(\"#saveButton\").prop(\"disabled\", true);\r\n $.ajax({\r\n type: 'POST',\r\n url: '/Lessees/Add',\r\n data: JSON.stringify({\r\n lessees: _this.lesseeList.map(item => { return { lesseeNumber: item.lesseeNumber, lesseeName: item.lesseeName } }),\r\n backOfficeSource: _this.backOfficeFilter.source\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n _this.close();\r\n _this.$emit('lessee-added');\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not add lessee(s): ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not add lessee(s) due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n this.clearSelection();\r\n this.AddModel = Object.assign({}, this.data);\r\n $('#add-lessee--add-lessee').modal('hide');\r\n\r\n // Enable save button again.\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n },\r\n gridOnDatabound: function (e) {\r\n const _this = this;\r\n const grid = _this.$refs.grid.kendoWidget();\r\n\r\n // Unregister previous checkbox click events\r\n grid.element.off('click', '.k-grid-content tr');\r\n grid.element.on('click', '.k-grid-content tr', function (e) {\r\n const item = grid.dataItem($(this).closest(\"tr[data-uid]\"));\r\n item.selected = !item.selected;\r\n if (item.selected) {\r\n _this.lesseeList.push(item);\r\n } else {\r\n _this.lesseeList.splice(_this.lesseeList.findIndex(i => i.lesseeNumber == item.lesseeNumber), 1);\r\n }\r\n grid.refresh();\r\n });\r\n }\r\n }\r\n });","import Vue from 'vue'\r\nimport VeeValidate from \"vee-validate\"\r\nimport { GridInstaller } from '@progress/kendo-grid-vue-wrapper'\r\nimport \"./Details.less\"\r\nimport \"../Grid/Grid.less\"\r\n\r\nif (document.getElementById('lessee-details')) {\r\n require('./Edit.js');\r\n Vue.use(GridInstaller);\r\n Vue.use(VeeValidate);\r\n\r\n new Vue({\r\n el: '#lessee-details',\r\n components: {},\r\n data: {\r\n alerts: [],\r\n EditModel: window.detailModel,\r\n dataSource: {\r\n data: window.detailModel.Contracts,\r\n pageSize: 20\r\n },\r\n pageable: {\r\n buttonCount: 3,\r\n info: true,\r\n type: 'numeric',\r\n pageSizes: [10, 20, 30, 50],\r\n previousNext: true\r\n },\r\n skip: 0,\r\n take: 20,\r\n columns: []\r\n },\r\n created: function () {\r\n this.loadColumns();\r\n },\r\n mounted: function () {\r\n if (getUrlParameter('action') === 'edit') {\r\n this.edit();\r\n }\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n edit: function () {\r\n $('#edit-lessee--change-lessee').modal('show');\r\n },\r\n loadColumns: function (e) {\r\n this.columns.push({ 'field': 'ContractName', 'title': 'Contract' });\r\n this.columns.push({ 'field': 'Portfolios', 'title': 'Portfolio(s)' });\r\n this.columns.push({\r\n 'title': ' ',\r\n 'filterable': false,\r\n 'template': function (dataItem) {\r\n if (window.detailModel.ContractDetailsUrl !== null && dataItem.IsPartOfMasterAssetPortfolio) {\r\n return '';\r\n } else {\r\n return '';\r\n }\r\n }, 'width': '90px'\r\n })\r\n },\r\n gridOnDatabound: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const _this = this;\r\n grid.element.on('click', '.anchor-view',\r\n function (e) {\r\n e.preventDefault();\r\n if (window.detailModel.ContractDetailsUrl !== null) {\r\n const contract = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n window.location.href = window.detailModel.ContractDetailsUrl + \"?id=\" + contract.ContractName;\r\n }\r\n });\r\n }\r\n }\r\n });\r\n\r\n function getUrlParameter(name) {\r\n name = name.replace(/[\\[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\r\n const regex = new RegExp('[\\\\?&]' + name + '=([^&#]*)');\r\n const results = regex.exec(location.search);\r\n return results === null ? '' : decodeURIComponent(results[1].replace(/\\+/g, ' '));\r\n }\r\n}","import Vue from 'vue'\r\n\r\nmodule.export = Vue.component('editlesseemodal',\r\n {\r\n name: 'editlessee',\r\n props: {\r\n data: Object\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n EditModel: Object.assign({}, this.data)\r\n };\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n save: function (e) {\r\n e.preventDefault();\r\n const _this = this;\r\n _this.clearAlert();\r\n $.ajax({\r\n type: 'POST',\r\n url: '/Lessees/Edit',\r\n data: JSON.stringify({\r\n lesseeNumber: _this.EditModel.LesseeNumber,\r\n lesseeName: _this.EditModel.LesseeName,\r\n // EmailAddress attribute is used, null is valid but empty string is not\r\n csdEmail: _this.EditModel.CsdEmail === \"\" ? null : _this.EditModel.CsdEmail\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n _this.close();\r\n location.reload();\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not edit lessee: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n }\r\n },\r\n error: function (data) {\r\n this.addAlert(\r\n {\r\n \"message\": 'Could not edit lessee due to a server error',\r\n \"isSuccess\": false\r\n });\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n this.EditModel = Object.assign({}, this.data);\r\n $('#edit-lessee--change-lessee').modal('hide');\r\n\r\n // Enable save button again.\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n }\r\n });","import Vue from 'vue'\r\nimport VeeValidate from \"vee-validate\"\r\nimport { GridInstaller } from '@progress/kendo-grid-vue-wrapper'\r\n\r\nif (document.getElementById('vue-lessees-overview')) {\r\n const actionbar = require(\"../Actionbar/Actionbar.js\");\r\n const alerts = require(\"../Alerts/Alerts.js\");\r\n require(\"./Add.js\");\r\n require(\"./Edit.js\");\r\n\r\n Vue.use(GridInstaller);\r\n Vue.use(VeeValidate);\r\n\r\n new Vue({\r\n el: '#vue-lessees-overview',\r\n components: {},\r\n data: function () {\r\n return {\r\n GridConfiguration: window.preLoadedData.GridConfiguration,\r\n AddModel: {\r\n LesseeName: '',\r\n CsdEmail: '',\r\n },\r\n dataSource: {\r\n data: [],\r\n transport: {\r\n read: {\r\n url: \"/Lessees/List\",\r\n contentType: \"application/json\",\r\n type: \"POST\"\r\n },\r\n parameterMap: function (options) {\r\n return kendo.stringify(options);\r\n }\r\n },\r\n serverPaging: true,\r\n serverFiltering: true,\r\n serverSorting: true,\r\n pageSize: 20,\r\n schema: {\r\n data: \"data\",\r\n total: \"total\"\r\n }\r\n },\r\n pageable: {\r\n buttonCount: 3,\r\n info: true,\r\n type: 'numeric',\r\n pageSizes: [10, 20, 30, 50],\r\n previousNext: true\r\n },\r\n columns: [\r\n {\r\n 'field': 'selected',\r\n 'title': ' ',\r\n 'filterable': false,\r\n 'sortable': false,\r\n 'headerTemplate':\r\n `
\r\n \r\n \r\n \r\n \r\n
`,\r\n 'template':\r\n `
\r\n \r\n \r\n \r\n \r\n
`,\r\n 'width': '40px'\r\n },\r\n { 'field': 'lesseeNumber', 'title': 'Lessee Number', 'filterable': false },\r\n { 'field': 'backOfficeSource', 'title': 'Source System', 'filterable': false },\r\n { 'field': 'lesseeName', 'title': 'Lessee Name', 'filterable': false, 'template': '#: lesseeName #' },\r\n { 'field': 'csdEmail', 'title': 'CSD email', 'filterable': false, 'template': '#: csdEmail #' },\r\n { 'title': ' ', 'filterable': false, 'template': '', 'width': '60px' }\r\n ],\r\n actionbar: window.preLoadedData.Actionbar,\r\n search: {\r\n visible: true\r\n },\r\n alerts: []\r\n };\r\n },\r\n\r\n created: function () {\r\n this.actionbar.searchVisible = true;\r\n\r\n const deleteLesseeButton = this.actionbar.ItemsRight.find(f => f.event === \"ab-delete-lessees\") ? this.actionbar.ItemsRight.find(f => f.event === \"ab-delete-lessees\") : this.actionbar.ItemsLeft.find(f => f.event === \"ab-delete-lessees\");\r\n if (deleteLesseeButton != null) {\r\n deleteLesseeButton.visible = window.preLoadedData.rights.deleteLessee;\r\n }\r\n\r\n const addLesseeButton = this.actionbar.ItemsRight.find(f => f.event === \"ab-add-lessee\") ? this.actionbar.ItemsRight.find(f => f.event === \"ab-add-lessee\") : this.actionbar.ItemsLeft.find(f => f.event === \"ab-add-lessee\");\r\n if (addLesseeButton != null) {\r\n addLesseeButton.visible = window.preLoadedData.rights.addLessee;\r\n }\r\n },\r\n mounted: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const _this = this;\r\n grid.element.on('click', '.visual-checkbox',\r\n function (e) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n const cb = this.querySelector(\"input[type='checkbox']\");\r\n cb.checked = !cb.checked;\r\n if (cb.checked) {\r\n $(this.parentElement).addClass(\"state-selected\");\r\n } else {\r\n $(this.parentElement).removeClass(\"state-selected\");\r\n }\r\n const dataItem = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n if (dataItem) {\r\n dataItem.selected = cb.checked;\r\n } else {\r\n grid.dataSource.data().forEach(item => item.selected = cb.checked );\r\n }\r\n\r\n _this.selectOnChange();\r\n grid.refresh();\r\n });\r\n \r\n //Get Delete Lessees button and set visibility to false on page load. Should only be visible when an item is selected.\r\n const deleteLesseeButton = this.actionbar.ItemsRight.find(f => f.event === \"ab-delete-lessees\") ? this.actionbar.ItemsRight.find(f => f.event === \"ab-delete-lessees\") : this.actionbar.ItemsLeft.find(f => f.event === \"ab-delete-lessees\");\r\n if (deleteLesseeButton != null) {\r\n deleteLesseeButton.visible = false;\r\n }\r\n },\r\n methods: {\r\n refreshGrid: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n grid.dataSource.read();\r\n },\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n addTooltip: function addTooltipToTableHeaders(grid) {\r\n grid.element[0].querySelectorAll(\".k-header\").forEach(element => {\r\n const title = $(element).data(\"title\");\r\n\r\n if (!/<[a-z\\][\\s\\S]*>/i.test(title)) {\r\n\r\n $(element).attr('title', title);\r\n }\r\n });\r\n },\r\n actionbarSelectAll: function (checked) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n if (checked) {\r\n grid.dataSource.data().forEach(i => i.selected = true);\r\n } else {\r\n grid.dataSource.data().forEach(i => i.selected = false);\r\n }\r\n this.setHeaderSelectAll(grid, checked);\r\n this.selectOnChange();\r\n grid.refresh();\r\n },\r\n setHeaderSelectAll: function (grid, checked)\r\n {\r\n const cb = grid.element[0].querySelector(\".k-grid-header .visual-checkbox input[type='checkbox']\");\r\n cb.checked = checked;\r\n if (cb.checked) {\r\n $(cb.parentElement.parentElement).addClass(\"state-selected\");\r\n\r\n } else {\r\n $(cb.parentElement.parentElement).removeClass(\"state-selected\");\r\n }\r\n },\r\n actionbarAddLessee: function () {\r\n const addLessee = this.$refs.addlessee;\r\n $('#add-lessee--add-lessee').modal('show');\r\n },\r\n actionbarDeleteLessees: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const selectedItems = grid.dataSource.data().filter(i => i.selected);\r\n if (selectedItems.length >= 1) {\r\n $('#delete-lessee--confirm').modal('show');\r\n } else {\r\n alert('Please select one or more lessees to delete');\r\n }\r\n },\r\n confirmedDeleteLessee: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const selectedItems = grid.dataSource.data().filter(i => i.selected).map(i => i.id);\r\n const _this = this;\r\n $.ajax({\r\n type: \"POST\",\r\n url: \"/Lessees/Delete\",\r\n data: JSON.stringify({\r\n lesseeNumbers: selectedItems\r\n }),\r\n success: function (data) {\r\n $(\"#delete-lessee--confirm\").modal('hide');\r\n\r\n if (!data.success) {\r\n _this.addAlert({\r\n \"message\": data.message,\r\n \"isSuccess\": false\r\n });\r\n } else {\r\n _this.refreshGrid();\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert({\r\n \"message\": \"Could not delete lessee(\\'s)!\",\r\n \"isSuccess\": false\r\n });\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n },\r\n actionbarSearch: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n let filter = {};\r\n if (e !== null && e !== '') {\r\n filter = { logic: 'or', filters: [] };\r\n grid.columns.forEach(function (x) {\r\n if (x.field) {\r\n filter.filters.push({\r\n field: x.field,\r\n operator: 'contains',\r\n value: e.trim()\r\n });\r\n }\r\n });\r\n }\r\n grid.dataSource.filter(filter);\r\n },\r\n gridOnDatabound: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n grid.element.unbind('dblclick');\r\n\r\n grid.element.on('dblclick', 'tbody tr[data-uid]',\r\n function (e) {\r\n const selectedItems = grid.select().toArray().map(function (s) { return grid.dataItem(s).id; });\r\n if (selectedItems.length === 1) {\r\n window.location.href = \"./Lessees/Details?id=\" + selectedItems[0];\r\n }\r\n });\r\n\r\n grid.element.on('click', '.anchor-view',\r\n function (e) {\r\n e.preventDefault();\r\n const selectedItems = grid.select().toArray().map(function (s) { return grid.dataItem(s).id; });\r\n if (selectedItems.length === 1) {\r\n window.location.href = \"./Lessees/Details?id=\" + selectedItems[0];\r\n }\r\n });\r\n\r\n grid.element.on('click', '.anchor-edit',\r\n function (e) {\r\n e.preventDefault();\r\n const selectedItems = grid.select().toArray().map(function (s) { return grid.dataItem(s).id; });\r\n if (selectedItems.length === 1) {\r\n window.location.href = \"./Lessees/Details?id=\" + selectedItems[0] + \"&action=edit\";\r\n }\r\n });\r\n\r\n this.addTooltip(grid);\r\n },\r\n selectOnChange: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const selected = grid.dataSource.data().filter(i => i.selected);\r\n\r\n const selectAll = document.getElementById('actionbarSelectAll');\r\n if (selectAll.checked && selected.length < grid.tbody[0].rows.length) {\r\n selectAll.checked = false;\r\n }\r\n\r\n //Delete button Should only be visible when an item is selected.\r\n const deleteLesseeButton = this.actionbar.ItemsRight.find(f => f.event === \"ab-delete-lessees\") ? this.actionbar.ItemsRight.find(f => f.event === \"ab-delete-lessees\") : this.actionbar.ItemsLeft.find(f => f.event === \"ab-delete-lessees\");\r\n if (deleteLesseeButton != null) {\r\n deleteLesseeButton.visible = selected.length > 0;\r\n }\r\n }\r\n }\r\n });\r\n $('.k-header').dblclick(function (e) {\r\n if (e.offsetY > $(this).outerHeight() - 2) {\r\n this.width = getTextWidth(this.textContent, this.font);\r\n //get column number\r\n const colNr = this.getAttribute(\"data-index\");\r\n //select column\r\n //add search in class k-grid-content\r\n const gridCols = document.getElementById(\"lessees-grid\").getElementsByClassName(\"k-grid-content\")[0].querySelector(\"colgroup\").childNodes;\r\n gridCols[colNr].width = $(this).outerWidth();\r\n }\r\n })\r\n}","import Vue from 'vue'\r\nimport \"./Add.less\"\r\n\r\nmodule.export = Vue.component('addaccountmodal',\r\n {\r\n name: 'addaccount',\r\n props: {\r\n data: Object\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n companyManagerSelection: 'findCompanyManager',\r\n portalUsers: Object.assign([], this.data.portalUsers),\r\n AddModel: {\r\n companyName: \"\",\r\n allCountries: Object.assign([], this.data.allCountries),\r\n selectedCountries: [],\r\n countryCode: \"\",\r\n catchAllEmailAddress: \"\",\r\n isDemoCompany: false,\r\n companyManagerEmail: \"\",\r\n companyManagerFirstName: \"\",\r\n companyManagerLastName: \"\",\r\n portalUsers: Object.assign([], this.data.portalUsers),\r\n accountFeatures: window.preLoadedData.AccountFeatures,\r\n },\r\n ErrorMessage: \"Could not add company\",\r\n currentStep: 0,\r\n maxSteps: 3\r\n };\r\n },\r\n computed: {\r\n demoCompanyStatus() {\r\n return this.isDemoCompany ? \"Yes\" : \"No\";\r\n },\r\n companyNameComputed() {\r\n return this.AddModel.companyName + (this.AddModel.isDemoCompany ? \" (Demo)\" : \"\");\r\n },\r\n selectedCountriesString() {\r\n return this.AddModel.selectedCountries.join(\", \");\r\n }\r\n },\r\n mounted: function () {\r\n const _this = this;\r\n const countries = _this.AddModel.allCountries;\r\n this.currentStep = 0;\r\n kendo.jQuery(\"#countriesSelectorAdd\").kendoMultiSelect({\r\n dataSource: countries,\r\n filter: \"contains\",\r\n tagTemplate: kendo.template($(\"#tagTemplate\").html()),\r\n placeholder: \"Select countries\",\r\n autoClose: false,\r\n tagMode: \"single\",\r\n noDataTemplate: \"No countries available\",\r\n dataTextField: \"Value\",\r\n dataValueField: \"Key\",\r\n itemTemplate: `
\r\n #= Value #\r\n \r\n \r\n
`,\r\n change: function () {\r\n const selected = this.value();\r\n const items = this.listView.content.find(\"li\");\r\n items.each(function () {\r\n const checkbox = $(this).find(\"input[type='checkbox']\");\r\n const value = checkbox.val();\r\n checkbox.prop(\"checked\", selected.indexOf(value) > -1);\r\n });\r\n\r\n _this.AddModel.selectedCountries = selected;\r\n if (selected.length == 0) {\r\n this.tagList.children().each(function () {\r\n this.remove();\r\n });\r\n }\r\n },\r\n open: function () {\r\n const selected = this.value();\r\n const items = this.listView.content.find(\"li\");\r\n items.each(function () {\r\n const checkbox = $(this).find(\"input[type='checkbox']\");\r\n const value = checkbox.val();\r\n checkbox.prop(\"checked\", selected.indexOf(value) > -1);\r\n });\r\n }\r\n });\r\n\r\n $(\".k-multiselect-wrap\").append(\"\");\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n next: function (e) {\r\n e.preventDefault();\r\n\r\n this.$validator.validateAll().then((isValid) => {\r\n if (isValid) {\r\n this.currentStep < this.maxSteps - 1 ? this.currentStep++ : null;\r\n }\r\n else {\r\n this.addAlert(\r\n {\r\n \"message\": 'Please fill in all required fields correctly',\r\n \"isSuccess\": false\r\n });\r\n }\r\n });\r\n },\r\n save: function (e) {\r\n e.preventDefault();\r\n const _this = this;\r\n _this.clearAlert();\r\n $(\"#saveAccountButton\").prop(\"disabled\", true);\r\n this.$validator.validateAll().then((isValid) => {\r\n if (isValid) {\r\n $.ajax({\r\n type: 'POST',\r\n url: '/Settings/ManageAccounts/Add',\r\n data: JSON.stringify({\r\n companyName: _this.AddModel.companyName,\r\n countryCode: _this.AddModel.countryCode,\r\n selectedCountries: _this.AddModel.selectedCountries,\r\n catchAllEmailAddress: _this.AddModel.catchAllEmailAddress,\r\n isDemoCompany: _this.AddModel.isDemoCompany,\r\n portalSuperAdmin: _this.AddModel.portalSuperAdmin,\r\n addNewUserAsCompanyManager: _this.companyManagerSelection == \"addCompanyManager\",\r\n companyManagerEmail: _this.AddModel.companyManagerEmail,\r\n companyManagerFirstName: _this.AddModel.companyManagerFirstName,\r\n companyManagerLastName: _this.AddModel.companyManagerLastName,\r\n accountFeatures: _this.AddModel.accountFeatures\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n window.location.href = window.location.href.replace(/[\\?#].*|$/, \"?added=1\");\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not add company: ${data.data.errorMessage}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveAccountButton\").removeAttr(\"disabled\");\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not add company due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveAccountButton\").removeAttr(\"disabled\");\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Please fill in all required fields correctly',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveAccountButton\").removeAttr(\"disabled\");\r\n }\r\n });\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n this.AddModel = Object.assign(this.data);\r\n // Enable save button again.\r\n $(\"#saveAccountButton\").removeAttr(\"disabled\");\r\n this.currentStep = 0;\r\n },\r\n getFeatureValues(feature) { \r\n if(feature.Attributes.length == 0) {\r\n return \"Yes\";\r\n }\r\n else {\r\n return feature.Attributes.filter(a => a.IsEnabled).map(a => a.Name).join(\", \");\r\n }\r\n },\r\n gridOnDatabound: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const _this = this;\r\n grid.element.on('click', '.visual-checkbox',\r\n function (e) {\r\n e.preventDefault();\r\n const cb = this.querySelector(\"input[type='checkbox']\");\r\n cb.checked = !cb.checked;\r\n const user = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n user.Selected = cb.checked;\r\n if (cb.checked) {\r\n $(this.parentElement).addClass(\"state-selected\");\r\n } else {\r\n $(this.parentElement).removeClass(\"state-selected\");\r\n }\r\n });\r\n }\r\n }\r\n });","import Vue from 'vue'\r\nimport \"./AddAccountRequest.less\"\r\n\r\nmodule.export = Vue.component('addaccountrequestmodal',\r\n {\r\n name: 'addaccountrequest',\r\n props: {\r\n data: Object\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n companyManagerSelection: 'findCompanyManager',\r\n AddAccountRequestModel: {\r\n companyName: \"\",\r\n allCountries: Object.assign([], this.data.allCountries),\r\n selectedCountries: [],\r\n countryCode: \"\",\r\n catchAllEmailAddress: \"\",\r\n remark: \"\",\r\n accountFeatures: window.preLoadedData.AccountFeatures,\r\n },\r\n ErrorMessage: \"Could not add company\",\r\n dataSource: {\r\n data: window.preLoadedData.AllRights\r\n },\r\n currentStep: 0,\r\n maxSteps: 3\r\n };\r\n },\r\n computed: {\r\n selectedCountriesString() {\r\n return this.AddAccountRequestModel.selectedCountries.join(\", \");\r\n }\r\n },\r\n mounted: function () {\r\n const _this = this;\r\n const countries = _this.AddAccountRequestModel.allCountries;\r\n this.currentStep = 0;\r\n kendo.jQuery(\"#countriesSelectorAddRequest\").kendoMultiSelect({\r\n dataSource: countries,\r\n filter: \"contains\",\r\n tagTemplate: kendo.template($(\"#tagTemplate\").html()),\r\n placeholder: \"Select countries\",\r\n autoClose: false,\r\n tagMode: \"single\",\r\n noDataTemplate: \"No countries available\",\r\n dataTextField: \"Value\",\r\n dataValueField: \"Key\",\r\n itemTemplate: `
\r\n #= Value #\r\n \r\n \r\n
`,\r\n change: function () {\r\n const selected = this.value();\r\n const items = this.listView.content.find(\"li\");\r\n items.each(function () {\r\n const checkbox = $(this).find(\"input[type='checkbox']\");\r\n const value = checkbox.val();\r\n checkbox.prop(\"checked\", selected.indexOf(value) > -1);\r\n });\r\n\r\n _this.AddAccountRequestModel.selectedCountries = selected;\r\n if (selected.length == 0) {\r\n this.tagList.children().each(function () {\r\n this.remove();\r\n });\r\n }\r\n },\r\n open: function () {\r\n const selected = this.value();\r\n const items = this.listView.content.find(\"li\");\r\n items.each(function () {\r\n const checkbox = $(this).find(\"input[type='checkbox']\");\r\n const value = checkbox.val();\r\n checkbox.prop(\"checked\", selected.indexOf(value) > -1);\r\n });\r\n }\r\n });\r\n\r\n $(\".k-multiselect-wrap\").append(\"\");\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n next: function (e) {\r\n e.preventDefault();\r\n\r\n this.$validator.validateAll().then((isValid) => {\r\n if (isValid) {\r\n this.currentStep < this.maxSteps - 1 ? this.currentStep++ : null;\r\n }\r\n else {\r\n this.addAlert(\r\n {\r\n \"message\": 'Please fill in all required fields correctly',\r\n \"isSuccess\": false\r\n });\r\n }\r\n });\r\n },\r\n save: function (e) {\r\n e.preventDefault();\r\n const _this = this;\r\n _this.clearAlert();\r\n $(\"#saveAccountRequestButton\").prop(\"disabled\", true);\r\n this.$validator.validateAll().then((isValid) => {\r\n if (isValid) {\r\n $.ajax({\r\n type: 'POST',\r\n url: '/Settings/ManageAccounts/AddAccountRequest',\r\n data: JSON.stringify({\r\n companyName: _this.AddAccountRequestModel.companyName,\r\n countryCode: _this.AddAccountRequestModel.countryCode,\r\n countriesActive: _this.AddAccountRequestModel.selectedCountries,\r\n catchAllEmailAddress: _this.AddAccountRequestModel.catchAllEmailAddress,\r\n remark: _this.AddAccountRequestModel.remark,\r\n accountFeatures: _this.AddAccountRequestModel.accountFeatures\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n window.location.href = window.location.href.replace(/[\\?#].*|$/, \"?added=1\");\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not add company: ${data.data.errorMessage}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveAccountRequestButton\").removeAttr(\"disabled\");\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not add company due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveAccountRequestButton\").removeAttr(\"disabled\");\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Please fill in all required fields correctly',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveAccountRequestButton\").removeAttr(\"disabled\");\r\n }\r\n });\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n this.AddAccountRequest = Object.assign(this.data);\r\n // Enable save button again.\r\n $(\"#saveAccountRequestButton\").removeAttr(\"disabled\");\r\n this.currentStep = 0;\r\n },\r\n getFeatureValues(feature) { \r\n if(feature.Attributes.length == 0) {\r\n return \"Yes\";\r\n }\r\n else {\r\n return feature.Attributes.filter(a => a.IsEnabled).map(a => a.Name).join(\", \");\r\n }\r\n },\r\n gridOnDatabound: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const _this = this;\r\n grid.element.on('click', '.visual-checkbox',\r\n function (e) {\r\n e.preventDefault();\r\n const cb = this.querySelector(\"input[type='checkbox']\");\r\n cb.checked = !cb.checked;\r\n const user = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n user.Selected = cb.checked;\r\n if (cb.checked) {\r\n $(this.parentElement).addClass(\"state-selected\");\r\n } else {\r\n $(this.parentElement).removeClass(\"state-selected\");\r\n }\r\n }\r\n );\r\n }\r\n }\r\n });","import Vue from 'vue'\r\nimport \"./ApprovalAccounts.less\"\r\n\r\nmodule.export = Vue.component('approvalaccountsmodal',\r\n {\r\n name: 'approvalaccounts',\r\n props: {\r\n data: Object,\r\n selectedAccounts: Array,\r\n accountCount: Number\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n EditModel: {\r\n companyStatus: \"\",\r\n },\r\n ErrorMessage: \"Could not change approval companies\",\r\n isSaving: false\r\n };\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n save: function (e) {\r\n e.preventDefault();\r\n const _this = this;\r\n _this.clearAlert();\r\n _this.isSaving = true;\r\n this.$validator.validateAll().then((isValid) => {\r\n if (isValid) {\r\n $.ajax({\r\n type: 'POST',\r\n url: '/Settings/ManageAccounts/ChangeApprovalAccounts',\r\n data: JSON.stringify({\r\n accountIds: _this.selectedAccounts.map(account => account.id),\r\n accountStatus: _this.EditModel.companyStatus,\r\n remark: _this.EditModel.remark\r\n }),\r\n success: function (data) {\r\n if (!data.success) {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not change approval for companies: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n _this.isSaving = false;\r\n } else {\r\n const status = _this.EditModel.companyStatus;\r\n _this.close();\r\n _this.$emit('approval-changed', `Company status successfully changed to ${status}`, status, Object.assign({}, this.newItem));\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not change approval for companies due to a server error',\r\n \"isSuccess\": false\r\n });\r\n _this.isSaving = false;\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Please fill in all required fields correctly',\r\n \"isSuccess\": false\r\n });\r\n _this.isSaving = false;\r\n }\r\n });\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n this.EditModel = Object.assign(this.data);\r\n $('#accountoverview-approval-accounts').modal('hide');\r\n this.isSaving = false;\r\n },\r\n }\r\n });","import Vue from 'vue'\r\nimport { fetchJson } from '../Shared/request-utils'\r\nimport { GridInstaller } from '@progress/kendo-grid-vue-wrapper'\r\nimport VeeValidate from \"vee-validate\"\r\nimport \"./Details.less\"\r\nimport { dllEmail } from '../Shared/validate-utils'\r\n\r\nif (document.getElementById('account-settings-details')) {\r\n\r\n\r\n require('./EditAccountSettings.js');\r\n require('./EditMailSettings.js');\r\n require('./EditAvailableFunctions.js');\r\n const alerts = require(\"../Alerts/Alerts.js\");\r\n\r\n Vue.use(GridInstaller);\r\n Vue.use(VeeValidate);\r\n VeeValidate.Validator.extend('dllemail', dllEmail);\r\n\r\n new Vue({\r\n el: '#account-settings-details',\r\n components: {},\r\n data: {\r\n alerts: [],\r\n EditModel: window.detailModel,\r\n MailSettings: {\r\n selectedItem: null,\r\n dataSource: {\r\n data: window.detailModel.MailSettings,\r\n pageSize: 10\r\n },\r\n pageable: {\r\n buttonCount: 3,\r\n info: true,\r\n type: 'numeric',\r\n pageSizes: [10, 20, 30, 50],\r\n previousNext: true\r\n },\r\n skip: 0,\r\n take: 20,\r\n columns: [\r\n { 'field': 'EmailType', 'type': 'text', 'hidden': true, 'filterable': false },\r\n { 'field': 'Title', 'type': 'text', 'title': 'Request type', 'filterable': false },\r\n { 'field': 'Email', 'type': 'text', 'template': '#= Email ? Email : \"No mail set up for country or company\" #', 'title': 'Email', 'filterable': false },\r\n { 'field': 'IsDefaultSetting', 'template': '#= IsDefaultSetting ? \"Yes\" : \"No\" #', 'type': 'text', 'title': 'Default setting', 'filterable': false },\r\n {\r\n 'title': ' ',\r\n 'filterable': false,\r\n 'template': function (dataItem) {\r\n const actions = [];\r\n if (window.detailModel.EditCompanyAllowed) {\r\n actions.push('
');\r\n } \r\n return actions.join('');\r\n },\r\n 'width': '120px'\r\n }\r\n ]\r\n },\r\n },\r\n methods: {\r\n editAccount: function () {\r\n $('#edit-account-settings-modal').modal('show');\r\n },\r\n editFunctions: function () {\r\n $('#edit-functions-modal').modal('show');\r\n },\r\n mailSettingsGridOnDatabound: function (e) {\r\n const grid = this.$refs.mailsetupgrid.kendoWidget();\r\n const _this = this;\r\n\r\n grid.element.on('click', '.anchor-edit',\r\n function (e) {\r\n e.preventDefault();\r\n const setting = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n _this.MailSettings.selectedItem = Object.assign({}, setting);\r\n _this.$refs.editmailsetup.show(_this.MailSettings.selectedItem);\r\n });\r\n },\r\n refreshGrid: function (message) {\r\n let _this = this;\r\n const grid = _this.$refs.mailsetupgrid.kendoWidget();\r\n const currentDatasource = grid.dataSource;\r\n\r\n fetchJson('/Settings/ManageAccounts/GetAccountDetails?id=' + _this.EditModel.AccountId)\r\n .then(\r\n (result) => {\r\n _this.EditModel = Object.assign({}, result);\r\n currentDatasource.data(_this.EditModel.MailSettings);\r\n grid.setDataSource(currentDatasource);\r\n\r\n if (message) {\r\n _this.addAlert({ \"message\": message, \"isSuccess\": true, \"showPopup\": true });\r\n }\r\n },\r\n (error) => {\r\n console.error(error);\r\n });\r\n },\r\n /**\r\n * Alerts\r\n */\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n },\r\n mounted: function () {\r\n const activeTab = sessionStorage.getItem(\"account.details.activeTab\");\r\n if (activeTab) {\r\n $(\"input[name='account-settings-tabs'][value='\" + activeTab + \"']\").prop(\"checked\", true);\r\n }\r\n }\r\n });\r\n}","import Vue from 'vue'\r\nimport DatePicker from 'vue2-datepicker'\r\nimport 'vue2-datepicker/index.css'\r\nimport \"./EditAccountSettings.less\"\r\n\r\nmodule.export = Vue.component('editaccountsettingsmodal',\r\n {\r\n name: 'editaccountsettings',\r\n props: {\r\n data: Object\r\n },\r\n components: {\r\n DatePicker\r\n },\r\n data: function () {\r\n return {\r\n alerts: [],\r\n EditModel: Object.assign({}, this.data),\r\n CompanyStatusOptions: ['Active', 'Pending', 'Rejected', 'Offboarded']\r\n };\r\n },\r\n computed: {\r\n isRejected: function () {\r\n return this.EditModel.CompanyStatus == \"Rejected\"\r\n }\r\n }, \r\n mounted: function () {\r\n const _this = this;\r\n const countries = _this.EditModel.AllCountries;\r\n kendo.jQuery(\"#countriesSelectorEdit\").kendoMultiSelect({\r\n dataSource: countries,\r\n value: _this.EditModel.SelectedCountries ?? [],\r\n filter: \"contains\",\r\n tagTemplate: kendo.template($(\"#tagTemplate\").html()),\r\n placeholder: \"Select countries\",\r\n autoClose: false,\r\n tagMode: \"single\",\r\n noDataTemplate: \"No countries available\",\r\n dataTextField: \"Value\",\r\n dataValueField: \"Key\",\r\n itemTemplate: `
\r\n #= Value #\r\n \r\n \r\n
`,\r\n change: function () {\r\n const selected = this.value();\r\n const items = this.listView.content.find(\"li\");\r\n items.each(function () {\r\n const checkbox = $(this).find(\"input[type='checkbox']\");\r\n const value = checkbox.val();\r\n checkbox.prop(\"checked\", selected.indexOf(value) > -1);\r\n });\r\n\r\n _this.EditModel.SelectedCountries = selected;\r\n if (selected.length == 0) {\r\n this.tagList.children().each(function () {\r\n this.remove();\r\n });\r\n }\r\n },\r\n open: function () {\r\n const selected = this.value();\r\n const items = this.listView.content.find(\"li\");\r\n items.each(function () {\r\n const checkbox = $(this).find(\"input[type='checkbox']\");\r\n const value = checkbox.val();\r\n checkbox.prop(\"checked\", selected.indexOf(value) > -1);\r\n });\r\n }\r\n });\r\n\r\n $(\".k-multiselect-wrap\").append(\"\");\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n show: function (data) {\r\n const _this = this;\r\n this.EditModel = Object.assign({}, data);\r\n const countriesSelector = kendo.jQuery(\"#countriesSelectorEdit\").getKendoMultiSelect();\r\n countriesSelector.value(this.EditModel.SelectedCountries);\r\n const items = countriesSelector.listView.content.find(\"li\");\r\n items.each(function () {\r\n const checkbox = $(this).find(\"input[type='checkbox']\");\r\n const value = checkbox.val();\r\n checkbox.prop(\"checked\", _this.EditModel.SelectedCountries.indexOf(value) > -1);\r\n }); \r\n $('#edit-account-settings-modal').modal('show');\r\n },\r\n save: function (e) {\r\n e.preventDefault();\r\n const _this = this;\r\n _this.clearAlert();\r\n $(\"#saveSettingsButton\").prop(\"disabled\", true);\r\n\r\n const trimmedCompanyName = this.EditModel.CompanyName.trim();\r\n\r\n this.$validator.validateAll().then((isValid) => {\r\n if (isValid) {\r\n $.ajax({\r\n type: 'PUT',\r\n url: '/Settings/ManageAccounts/EditAccountSettings',\r\n data: JSON.stringify({\r\n AccountId: this.EditModel.AccountId,\r\n CompanyName: trimmedCompanyName !== this.data.CompanyName ? trimmedCompanyName : null,\r\n CompanyManager: this.EditModel.CompanyManager,\r\n SelectedCompanyManager: this.EditModel.SelectedCompanyManager,\r\n CatchAllEmail: this.EditModel.CatchAllEmail,\r\n IsDemoCompany: this.EditModel.IsDemoCompany,\r\n Email: this.EditModel.Email,\r\n FirstContact: this.EditModel.FirstContact,\r\n PhoneNumber: this.EditModel.PhoneNumber,\r\n ProgramManager: this.EditModel.ProgramManager,\r\n CountryCode: this.EditModel.CountryCode,\r\n SelectedCountries: this.EditModel.SelectedCountries\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n _this.close();\r\n location.reload();\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not edit company settings: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveSettingsButton\").removeAttr(\"disabled\");\r\n }\r\n },\r\n error: function () {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not edit company settings due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveSettingsButton\").removeAttr(\"disabled\");\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not edit company settings due to incorrect or incomplete fields.',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveSettingsButton\").removeAttr(\"disabled\");\r\n }\r\n });\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n sessionStorage.setItem(\"account.details.activeTab\", 'general-info');\r\n $('#edit-account-settings-modal').modal('hide');\r\n }\r\n }\r\n });","import Vue from 'vue'\r\n\r\nmodule.export = Vue.component('editfunctionsmodal',\r\n {\r\n name: 'editfunctions',\r\n props: {\r\n data: Object\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts:[],\r\n EditModel: Object.assign({}, this.data)\r\n };\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n save: function (e) {\r\n e.preventDefault();\r\n const _this = this;\r\n _this.clearAlert();\r\n $(\"#saveFunctionsButton\").prop(\"disabled\", true);\r\n $.ajax({\r\n type: 'PUT',\r\n url: '/Settings/ManageAccounts/EditFeatures',\r\n data: JSON.stringify({\r\n AccountId: this.EditModel.AccountId,\r\n AccountFeatures: this.EditModel.AccountFeatures\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n _this.close();\r\n location.reload();\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not edit company features: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveFunctionsButton\").removeAttr(\"disabled\");\r\n }\r\n },\r\n error: function () {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not add company features due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveFunctionsButton\").removeAttr(\"disabled\");\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n sessionStorage.setItem(\"account.details.activeTab\", 'available-functions');\r\n $('#edit-functions-modal').modal('hide');\r\n }\r\n }\r\n });","import Vue from 'vue'\r\n\r\nmodule.export = Vue.component('editmailsetupmodal',\r\n {\r\n name: 'editmailsetup',\r\n props: {\r\n data: Object\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n EditModel: Object.assign({}, this.data),\r\n isSaving: false\r\n };\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n save: function (e) {\r\n e.preventDefault();\r\n this.clearAlert();\r\n\r\n this.$validator.validateAll().then((isValid) => {\r\n if (isValid) {\r\n this.saveMailSetup(this.EditModel);\r\n } else {\r\n this.addAlert(\r\n {\r\n \"message\": 'Could not edit mail settings due to an incomplete or invalid email address.',\r\n \"isSuccess\": false\r\n });\r\n }\r\n });\r\n \r\n },\r\n saveMailSetup: function (settings) {\r\n const _this = this;\r\n\r\n $.ajax({\r\n type: 'PUT',\r\n url: `/Settings/ManageAccounts/EditMailSettings?accountId=${_this.data.AccountId}`,\r\n data: JSON.stringify({\r\n Email: settings.Email,\r\n EmailType: settings.EmailType,\r\n IsDefaultSetting: settings.IsDefaultSetting,\r\n Title: settings.Title\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n _this.close();\r\n _this.$emit('mail-settings-changed', 'Email settings changed successfully');\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not change mail settings: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n }\r\n _this.isSaving = false;\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not change mail settings due to a server error',\r\n \"isSuccess\": false\r\n });\r\n _this.isSaving = false;\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n },\r\n reset: function () {\r\n let resetModel = Object.assign({}, this.EditModel);\r\n resetModel.Email = null;\r\n this.saveMailSetup(resetModel);\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n show: function(data) {\r\n this.EditModel = Object.assign({}, data);\r\n $('#accountsettings-edit-mail-setup').modal('show');\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n $('#accountsettings-edit-mail-setup').modal('hide');\r\n\r\n // Enable save button again.\r\n this.isSaving = false;\r\n }\r\n }\r\n }\r\n);\r\n","import Vue from 'vue'\r\nimport VeeValidate from \"vee-validate\"\r\nimport { Grid, GridInstaller } from '@progress/kendo-grid-vue-wrapper'\r\nimport { toArray } from 'lodash';\r\nimport \"../Grid/Grid.less\"\r\nimport { fetchJson } from '../Shared/request-utils'\r\nimport { dllEmail } from '../Shared/validate-utils'\r\n\r\nif (document.getElementById('vue-account-overview')) {\r\n const actionbar = require(\"../Actionbar/Actionbar.js\");\r\n const alerts = require(\"../Alerts/Alerts.js\");\r\n require(\"./Add.js\");\r\n require(\"./AddAccountRequest.js\");\r\n require(\"./ApprovalAccounts.js\");\r\n require(\"./Details.js\");\r\n require(\"./EditAccountSettings.js\");\r\n require(\"./Offboard.js\");\r\n\r\n Vue.use(GridInstaller);\r\n Vue.use(VeeValidate);\r\n VeeValidate.Validator.extend('dllemail', dllEmail);\r\n\r\n const pagesizesession = \"pagesize\";\r\n let pagesize = sessionStorage.getItem(pagesizesession);\r\n if (!pagesize) {\r\n pagesize = 20;\r\n }\r\n\r\n new Vue({\r\n el: '#vue-account-overview',\r\n components: {},\r\n data: function () {\r\n return {\r\n GridConfiguration: window.preLoadedData.GridConfiguration,\r\n HasBranding: window.hasBranding,\r\n ShowSelectBoxes: window.preLoadedData.ShowSelectBoxes,\r\n AddModel: {\r\n companyName: \"\",\r\n allCountries: window.preLoadedData.AllCountries,\r\n selectedCountries: [],\r\n countryCode: \"\",\r\n catchAllEmailAddress: \"\",\r\n isDemoCompany: false,\r\n companyManagerEmail: \"\",\r\n companyManagerFirstName: \"\",\r\n companyManagerLastName: \"\",\r\n portalUsers: window.preLoadedData.PortalUsers,\r\n accountFeatures: window.preLoadedData.AccountFeatures\r\n },\r\n AddAccountRequestModel: {\r\n companyName: \"\",\r\n allCountries: window.preLoadedData.AllCountries,\r\n selectedCountries: [],\r\n countryCode: \"\",\r\n catchAllEmailAddress: \"\",\r\n remark: \"\",\r\n portalUsers: window.preLoadedData.PortalUsers,\r\n accountFeatures: window.preLoadedData.AccountFeatures\r\n },\r\n EditModel: {\r\n companyStatus: \"\",\r\n AllCountries: window.preLoadedData.AllCountries,\r\n selectedCountries: [],\r\n countryCode: \"\",\r\n isRejected: false\r\n },\r\n OffboardModel: {},\r\n dataSource: {\r\n data: [],\r\n transport: {\r\n read: {\r\n url: \"/Settings/ManageAccounts/List\",\r\n contentType: \"application/json\",\r\n type: \"POST\"\r\n },\r\n parameterMap: function (options) {\r\n return kendo.stringify(options);\r\n }\r\n },\r\n serverPaging: true,\r\n serverFiltering: true,\r\n serverSorting: true,\r\n sort: { field: \"name\", dir: \"asc\" },\r\n pageSize: pagesize,\r\n schema: {\r\n data: \"data\",\r\n total: \"total\"\r\n }\r\n },\r\n pageable: {\r\n buttonCount: 3,\r\n info: true,\r\n type: 'numeric',\r\n pageSizes: [10, 20, 30, 50],\r\n previousNext: true\r\n },\r\n columns: {},\r\n actionbar: window.preLoadedData.Actionbar,\r\n\r\n search: {\r\n visible: true\r\n },\r\n alerts: [],\r\n selectedAccounts: [],\r\n accountCount: 0,\r\n };\r\n },\r\n created: function () {\r\n this.loadColumns();\r\n\r\n this.actionbar.searchVisible = true;\r\n },\r\n mounted: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const _this = this;\r\n\r\n //Disables the approval button on page load\r\n const approvalAccountsButton = this.findActionBarButton(\"ab-approval-accounts\");\r\n if (approvalAccountsButton != null) {\r\n approvalAccountsButton.enabled = false;\r\n }\r\n\r\n grid.element.on('click', '.visual-checkbox',\r\n function (e) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n const cb = this.querySelector(\"input[type='checkbox']\");\r\n cb.checked = !cb.checked;\r\n if (cb.checked) {\r\n $(this.parentElement).addClass(\"state-selected\");\r\n } else {\r\n $(this.parentElement).removeClass(\"state-selected\");\r\n }\r\n const dataItem = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n if (dataItem) {\r\n dataItem.selected = cb.checked;\r\n } else {\r\n grid.dataSource.data().forEach(item => item.selected = cb.checked );\r\n }\r\n\r\n _this.selectOnChange();\r\n grid.refresh();\r\n });\r\n },\r\n methods: {\r\n /**\r\n * ActionBar Events\r\n */\r\n actionbarSelectAll: function (checked) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n if (checked) {\r\n grid.dataSource.data().forEach(i => i.selected = true);\r\n } else {\r\n grid.dataSource.data().forEach(i => i.selected = false);\r\n }\r\n this.setHeaderSelectAll(grid, checked);\r\n this.selectOnChange();\r\n grid.refresh();\r\n },\r\n setHeaderSelectAll: function (grid, checked)\r\n {\r\n const cb = grid.element[0].querySelector(\".k-grid-header .visual-checkbox input[type='checkbox']\");\r\n cb.checked = checked;\r\n if (cb.checked) {\r\n $(cb.parentElement.parentElement).addClass(\"state-selected\");\r\n\r\n } else {\r\n $(cb.parentElement.parentElement).removeClass(\"state-selected\");\r\n }\r\n },\r\n actionbarSearch: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n let filter = {};\r\n let searchProperties = [\"Name\", \"Country\", \"Status\"];\r\n if (e !== null && e !== '') {\r\n filter = { logic: 'or', filters: [] };\r\n searchProperties.forEach(function (x) {\r\n if (x) {\r\n filter.filters.push({\r\n field: x,\r\n operator: 'contains',\r\n value: e\r\n });\r\n }\r\n });\r\n }\r\n grid.dataSource.filter(filter);\r\n },\r\n actionbarAddAccount: function (e) {\r\n $('#accountoverview-add-account').modal('show');\r\n },\r\n actionbarAddAccountRequest: function (e) {\r\n $('#accountoverview-add-account-request').modal('show');\r\n },\r\n actionbarApprovalAccounts: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const selected = grid.dataSource.data().filter(i => i.selected);\r\n if (selected) {\r\n this.selectedAccounts = selected;\r\n this.accountCount = selected.length;\r\n $('#accountoverview-approval-accounts').modal('show');\r\n }\r\n },\r\n actionbarExport: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n grid.setOptions({\r\n excel: {\r\n allPages: true\r\n }\r\n });\r\n grid.saveAsExcel();\r\n },\r\n\r\n /**\r\n * Grid Events\r\n */\r\n loadColumns: function (e) {\r\n var _this = this;\r\n this.columns = [\r\n { 'field': 'name', 'title': 'Name', 'filterable': false, 'width': '70%' },\r\n { 'field': 'country', 'title': 'Company Country Location', 'filterable': false, 'width': '70%' },\r\n { 'field': 'countriesActive', 'title': 'Servicing Location Countries', 'filterable': false, 'width': '70%' },\r\n { 'field': 'email', 'title': 'Catch-all Email Address', 'filterable': false, 'width': '70%' },\r\n { 'field': 'companyManager', 'title': this.HasBranding ? 'DLL Company Manager' : 'Company Manager', 'filterable': false, 'sortable': false, 'width': '70%' },\r\n { 'field': 'status', 'title': 'Status', 'filterable': false, 'width': '70%', 'template': '#: status #' },\r\n { 'field': 'dateCreated', 'title': 'Onboarded', 'filterable': false, 'width': '70%' }\r\n ];\r\n if (this.ShowSelectBoxes) {\r\n this.columns.unshift({\r\n 'field': 'selected',\r\n 'title': ' ',\r\n 'filterable': false,\r\n 'sortable': false,\r\n 'headerTemplate':\r\n `
\r\n \r\n \r\n \r\n \r\n
`,\r\n 'template':\r\n `
\r\n \r\n \r\n \r\n \r\n
`,\r\n 'width': '40px'\r\n });\r\n }\r\n this.columns.push(\r\n { \r\n 'title': ' ', \r\n 'filterable': false, \r\n 'template': function(dataItem) {\r\n const actions = [];\r\n\r\n if (dataItem.userHasAccess) {\r\n actions.push('');\r\n if (dataItem.editCompanyAllowed) {\r\n actions.push('');\r\n }\r\n if (dataItem.offboardCompanyAllowed) {\r\n actions.push('');\r\n }\r\n }\r\n return actions.join('');\r\n },\r\n 'width': '120px' \r\n });\r\n },\r\n addTooltip: function addTooltipToTableHeaders(grid) {\r\n grid.element[0].querySelectorAll(\".k-header\").forEach(element => {\r\n const title = $(element).data(\"title\");\r\n\r\n if (!/<[a-z\\][\\s\\S]*>/i.test(title)) {\r\n\r\n $(element).attr('title', title);\r\n }\r\n });\r\n },\r\n approvalChanged: function (message, eventType, item) {\r\n this.addAlert({ \"message\": message, \"isSuccess\": true, \"showPopup\": true });\r\n const grid = this.$refs.grid.kendoWidget();\r\n grid.dataSource.read();\r\n const approvalAccountsButton = this.findActionBarButton(\"ab-approval-accounts\");\r\n if (approvalAccountsButton != null) {\r\n approvalAccountsButton.enabled = false;\r\n }\r\n },\r\n accountOffboarded: function (message, eventType, item) {\r\n this.addAlert({ \"message\": message, \"isSuccess\": true, \"showPopup\": true });\r\n const grid = this.$refs.grid.kendoWidget();\r\n grid.dataSource.read();\r\n },\r\n gridOnDatabound: function (e) {\r\n var _this = this;\r\n const grid = this.$refs.grid.kendoWidget();\r\n\r\n grid.element.on('dblclick', 'tbody tr[data-uid]',\r\n function (e) {\r\n const selectedItems = grid.select().toArray().map(function (s) { return grid.dataItem(s); });\r\n if (selectedItems.length === 1 && selectedItems[0].userHasAccess) {\r\n window.location.href = \"./ManageAccounts/Details?id=\" + selectedItems[0].id;\r\n }\r\n });\r\n\r\n grid.element.on('click', '.anchor-view',\r\n function (e) {\r\n e.preventDefault();\r\n const selectedItems = grid.select().toArray().map(function (s) { return grid.dataItem(s).id; });\r\n if (selectedItems.length === 1) {\r\n window.location.href = \"./ManageAccounts/Details?id=\" + selectedItems[0];\r\n }\r\n });\r\n\r\n grid.element.on('click', '.anchor-edit',\r\n function (e) {\r\n e.preventDefault();\r\n const selectedItems = grid.select().toArray().map(function (s) { return grid.dataItem(s).id; });\r\n if (selectedItems.length === 1) {\r\n fetchJson('./ManageAccounts/GetAccountDetails?id=' + selectedItems[0])\r\n .then(\r\n (result) => {\r\n _this.EditModel = Object.assign({}, result);\r\n _this.$refs.accountsettingsedit.show(_this.EditModel);\r\n },\r\n (error) => {\r\n console.error(error);\r\n });\r\n }\r\n });\r\n\r\n grid.element.on('click', '.anchor-offboard',\r\n function (e) {\r\n e.preventDefault();\r\n const selectedItems = grid.select().toArray().map(function (s) { return grid.dataItem(s); });\r\n if (selectedItems.length === 1) {\r\n _this.OffboardModel = Object.assign({}, selectedItems[0]);\r\n _this.$refs.offboardaccount.show(_this.OffboardModel);\r\n }\r\n });\r\n\r\n this.addTooltip(grid);\r\n\r\n /*\r\n const approvalAccountsButton = this.findActionBarButton(\"ab-approval-accounts\");\r\n if (approvalAccountsButton != null) {\r\n approvalAccountsButton.enabled = false;\r\n }\r\n */\r\n },\r\n selectOnChange: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const selected = grid.dataSource.data().filter(i => i.selected);\r\n\r\n const selectAll = document.getElementById('actionbarSelectAll');\r\n if (selectAll) {\r\n if (selectAll.checked && selected.length < grid.tbody[0].rows.length) {\r\n selectAll.checked = false;\r\n }\r\n \r\n const approvalAccountsButton = this.findActionBarButton(\"ab-approval-accounts\");\r\n if (approvalAccountsButton != null) {\r\n approvalAccountsButton.enabled = selected.length >= 1 && selected.every(i => i.approveCompanyAllowed);\r\n }\r\n }\r\n },\r\n\r\n findActionBarButton: function (event) {\r\n return this.actionbar.ItemsRight.find(f => f.event === event) ? this.actionbar.ItemsRight.find(f => f.event === event) : this.actionbar.ItemsLeft.find(f => f.event === event);\r\n },\r\n\r\n /**\r\n * Alerts\r\n */\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n }\r\n });\r\n}","import Vue from 'vue'\r\n\r\nmodule.export = Vue.component('offboardaccountmodal',\r\n {\r\n name: \"offboardaccountmodal\",\r\n props: {\r\n data: Object\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n OffboardModel: Object.assign({}, this.data),\r\n };\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n show: function(data) {\r\n this.OffboardModel = Object.assign({}, data);\r\n $('#accountoverview-offboard-account').modal('show');\r\n },\r\n save: function (e) {\r\n e.preventDefault();\r\n const _this = this;\r\n _this.clearAlert();\r\n $(\"#saveOffboardButton\").prop(\"disabled\", true);\r\n $.ajax({\r\n type: 'POST',\r\n url: '/Settings/ManageAccounts/OffboardAccount',\r\n data: JSON.stringify({\r\n accountId: _this.OffboardModel.id\r\n }), \r\n success: function (data) {\r\n if (data.success) {\r\n _this.close();\r\n _this.$emit('account-offboarded', `Company successfully offboarded! ${data.data}`);\r\n $(\"#saveOffboardButton\").removeAttr(\"disabled\");\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not offboard company: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveOffboardButton\").removeAttr(\"disabled\");\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not offboard company due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveOffboardButton\").removeAttr(\"disabled\");\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n $('#accountoverview-offboard-account').modal('hide');\r\n }\r\n }\r\n });","import Vue from 'vue'\r\n\r\nmodule.export = Vue.component('editmailsettingsmodal',\r\n {\r\n name: 'editmailsettings',\r\n props: {\r\n data: Object\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n EditModel: Object.assign({}, this.data),\r\n isSaving: false\r\n };\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n save: function (e) {\r\n e.preventDefault();\r\n const _this = this;\r\n _this.clearAlert();\r\n\r\n _this.isSaving = true;\r\n\r\n this.$validator.validateAll().then((isValid) => {\r\n if (isValid) {\r\n $.ajax({\r\n type: 'POST',\r\n url: '/Settings/ManageMailSettings/Edit',\r\n data: JSON.stringify({\r\n country: _this.EditModel.country,\r\n requestNewLeaseEmail: _this.EditModel.requestNewLeaseEmail,\r\n messageUsEmail: _this.EditModel.messageUsEmail,\r\n terminationRequestEmail: _this.EditModel.terminationRequestEmail,\r\n returnRequestEmail: _this.EditModel.returnRequestEmail,\r\n extensionRequestEmail: _this.EditModel.extensionRequestEmail,\r\n buyOutRequestEmail: _this.EditModel.buyOutRequestEmail\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n _this.close();\r\n _this.$emit('mail-settings-changed', 'Default mail settings changed successfully');\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not change mail settings: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n }\r\n _this.isSaving = false;\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not change mail settings due to a server error',\r\n \"isSuccess\": false\r\n });\r\n _this.isSaving = false;\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not change default mail settings due to incorrect or incomplete fields.',\r\n \"isSuccess\": false\r\n });\r\n }\r\n });\r\n \r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n show: function(data) {\r\n this.EditModel = Object.assign({}, data);\r\n $('#emailoverview-edit-email-setting').modal('show');\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n $('#emailoverview-edit-email-setting').modal('hide');\r\n\r\n // Enable save button again.\r\n this.isSaving = false;\r\n }\r\n }\r\n }\r\n);\r\n","import Vue from 'vue'\r\n\r\nmodule.export = Vue.component('exportmailsettingsmodal',\r\n {\r\n name: 'exportmailsettings',\r\n props: {\r\n data: Object\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n exportMailSettingSelection: 'exportDefaultMailSettings'\r\n };\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n save: function (e) {\r\n e.preventDefault();\r\n const _this = this;\r\n _this.clearAlert();\r\n\r\n this.$validator.validateAll().then((isValid) => {\r\n if (isValid) {\r\n if (_this.exportMailSettingSelection == \"exportDefaultMailSettings\") {\r\n var grid = _this.$parent.$refs.grid.kendoWidget();\r\n grid.setOptions({\r\n excel: {\r\n allPages: true\r\n }\r\n });\r\n grid.saveAsExcel();\r\n }\r\n if (_this.exportMailSettingSelection == \"exportCompanyMailSettingsOverrides\") {\r\n $.ajax({\r\n type: 'GET',\r\n url: '/Settings/ManageMailSettings/GetCompanyMailSettingOverrides',\r\n success: function (data) {\r\n var workbook = new kendo.ooxml.Workbook({\r\n sheets: [\r\n {\r\n rows: [\r\n {\r\n cells: [\r\n { value: \"Company name\" },\r\n { value: \"Company location country\" },\r\n { value: \"Request new lease email\" },\r\n { value: \"Message us email\" },\r\n { value: \"Asset request - Termination request email\" },\r\n { value: \"Asset request - Return request email\" },\r\n { value: \"Asset request - Extension request email\" },\r\n { value: \"Asset request - Buy Out request email\" }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n });\r\n\r\n for (var i = 0; i < data.length; i++) {\r\n workbook.options.sheets[0].rows.push({\r\n cells: [\r\n { value: data[i].companyName },\r\n { value: data[i].companyLocationCountry },\r\n { value: data[i].requestNewLeaseEmail },\r\n { value: data[i].messageUsEmail },\r\n { value: data[i].terminationRequestEmail },\r\n { value: data[i].returnRequestEmail },\r\n { value: data[i].extensionRequestEmail },\r\n { value: data[i].buyOutRequestEmail }\r\n ]\r\n })\r\n }\r\n\r\n workbook.toDataURLAsync().then(function (dataURL) {\r\n kendo.saveAs({\r\n dataURI: dataURL,\r\n fileName: \"Export.xlsx\"\r\n });\r\n });\r\n },\r\n error: function (error) {\r\n console.error(error);\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n }\r\n\r\n _this.close();\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not export mail settings due to incorrect or incomplete fields.',\r\n \"isSuccess\": false\r\n });\r\n }\r\n });\r\n \r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n show: function () {\r\n $('#emailoverview-export-email-settings').modal('show');\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n $('#emailoverview-export-email-settings').modal('hide');\r\n }\r\n }\r\n }\r\n);\r\n","import Vue from 'vue'\r\nimport VeeValidate from \"vee-validate\"\r\nimport { GridInstaller } from '@progress/kendo-grid-vue-wrapper'\r\nimport \"../Grid/Grid.less\"\r\nimport { fetchJson } from '../Shared/request-utils'\r\nimport { dllEmail } from '../Shared/validate-utils'\r\n\r\nif (document.getElementById('vue-mail-settings-overview')) {\r\n const actionbar = require(\"../Actionbar/Actionbar.js\");\r\n const alerts = require(\"../Alerts/Alerts.js\");\r\n\r\n require('./Edit.js');\r\n require('./Export.js');\r\n\r\n Vue.use(GridInstaller);\r\n Vue.use(VeeValidate);\r\n VeeValidate.Validator.extend('dllemail', dllEmail);\r\n\r\n const pagesizesession = \"pagesize\";\r\n let pagesize = sessionStorage.getItem(pagesizesession);\r\n if (!pagesize) {\r\n pagesize = 20;\r\n }\r\n\r\n new Vue({\r\n el: '#vue-mail-settings-overview',\r\n components: {},\r\n data: function () {\r\n return {\r\n GridConfiguration: window.preLoadedData.GridConfiguration,\r\n HasBranding: window.hasBranding,\r\n ShowSelectBoxes: window.preLoadedData.ShowSelectBoxes,\r\n AddModel: {\r\n companyName: \"\",\r\n countries: window.preLoadedData.Countries,\r\n country: \"\",\r\n messageUsEmailAddress: \"\",\r\n portalSuperAdmin: \"cap.support@dllgroup.com\",\r\n companyManagerEmail: \"\",\r\n companyManagerFirstName: \"\",\r\n companyManagerLastName: \"\",\r\n portalUsers: window.preLoadedData.PortalUsers\r\n },\r\n EditModel: {\r\n companyStatus: \"\"\r\n },\r\n OffboardModel: {},\r\n dataSource: {\r\n data: [],\r\n transport: {\r\n read: {\r\n url: \"/Settings/ManageMailSettings/List\",\r\n contentType: \"application/json\",\r\n type: \"POST\"\r\n },\r\n parameterMap: function (options) {\r\n return kendo.stringify(options);\r\n }\r\n },\r\n serverPaging: false,\r\n serverFiltering: false,\r\n serverSorting: false,\r\n pageSize: pagesize,\r\n schema: {\r\n data: \"data\",\r\n total: \"total\"\r\n }\r\n },\r\n pageable: {\r\n buttonCount: 3,\r\n info: true,\r\n type: 'numeric',\r\n pageSizes: [10, 20, 30, 50],\r\n previousNext: true\r\n },\r\n columns: {},\r\n actionbar: window.preLoadedData.Actionbar,\r\n\r\n search: {\r\n visible: true\r\n },\r\n alerts: [],\r\n selectedAccounts: [],\r\n accountCount: 0,\r\n };\r\n },\r\n created: function () {\r\n this.loadColumns();\r\n\r\n this.actionbar.searchVisible = true;\r\n },\r\n mounted: function () {\r\n this.$refs.grid.kendoWidget();\r\n },\r\n methods: {\r\n actionbarSearch: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n let filter = {};\r\n if (e !== null && e !== '') {\r\n filter = { logic: 'or', filters: [] };\r\n grid.columns.forEach(function (x) {\r\n if (x.field) {\r\n filter.filters.push({\r\n field: x.field,\r\n operator: 'contains',\r\n value: e\r\n });\r\n }\r\n });\r\n }\r\n grid.dataSource.filter(filter);\r\n },\r\n actionbarExport: function (e) {\r\n this.$refs.exportmailsettings.show();\r\n },\r\n\r\n /**\r\n * Grid Events\r\n */\r\n loadColumns: function (e) {\r\n this.columns = [\r\n { 'field': 'country', 'title': 'Company location country', 'filterable': true, 'width': '70%' },\r\n { 'field': 'requestNewLeaseEmail', 'title': 'Request new lease email', 'filterable': false, 'width': '70%' },\r\n { 'field': 'messageUsEmail', 'title': 'Message us email', 'filterable': false, 'width': '70%' },\r\n { 'field': 'terminationRequestEmail', 'title': 'Asset request - Termination request email', 'filterable': false, 'width': '70%' },\r\n { 'field': 'returnRequestEmail', 'title': 'Asset request - Return request email', 'filterable': false, 'width': '70%' },\r\n { 'field': 'extensionRequestEmail', 'title': 'Asset request - Extension request email', 'filterable': false, 'width': '70%' },\r\n { 'field': 'buyOutRequestEmail', 'title': 'Asset request - Buy Out request email', 'filterable': false, 'width': '70%' },\r\n { 'title': ' ', 'template': '', 'filterable': false, 'width': '90px' }\r\n ];\r\n },\r\n addTooltip: function addTooltipToTableHeaders(grid) {\r\n grid.element[0].querySelectorAll(\".k-header\").forEach(element => {\r\n const title = $(element).data(\"title\");\r\n\r\n if (!/<[a-z\\][\\s\\S]*>/i.test(title)) {\r\n\r\n $(element).attr('title', title);\r\n }\r\n });\r\n },\r\n refreshGrid: function (message) {\r\n if (message) {\r\n this.addAlert({ \"message\": message, \"isSuccess\": true, \"showPopup\": true });\r\n }\r\n const grid = this.$refs.grid.kendoWidget();\r\n grid.dataSource.read();\r\n },\r\n gridOnDatabound: function (e) {\r\n var _this = this;\r\n const grid = this.$refs.grid.kendoWidget();\r\n\r\n grid.element.on('click', '.anchor-edit',\r\n function (e) {\r\n e.preventDefault();\r\n const selectedItems = grid.select().toArray().map(function (s) { return grid.dataItem(s).country; });\r\n if (selectedItems.length === 1) {\r\n fetchJson('./ManageMailSettings/GetMailSettings?country=' + selectedItems[0])\r\n .then(\r\n (result) => {\r\n _this.EditModel = Object.assign({}, result);\r\n _this.$refs.editmailsettings.show(_this.EditModel);\r\n },\r\n (error) => {\r\n console.error(error);\r\n });\r\n }\r\n });\r\n\r\n this.addTooltip(grid);\r\n },\r\n\r\n /**\r\n * Alerts\r\n */\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n }\r\n });\r\n}","import Vue from 'vue'\r\nimport \"./Add.less\"\r\n\r\nmodule.export = Vue.component('addmembermodal',\r\n {\r\n name: 'addmember',\r\n props: {\r\n data: Object\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n AddModel: Object.assign({}, this.data), //create deep a copy of the object,\r\n isSaving: false,\r\n countryValidator: undefined\r\n };\r\n },\r\n mounted: function() {\r\n const _this = this;\r\n const countries = _this.AddModel.allCountries;\r\n kendo.jQuery(\"#countriesSelectorAdd\").kendoMultiSelect({\r\n dataSource: countries,\r\n filter: \"contains\",\r\n tagTemplate: kendo.template($(\"#tagTemplate\").html()),\r\n placeholder: \"Select country\",\r\n autoClose: false,\r\n tagMode: \"single\",\r\n noDataTemplate: \"No countries available\",\r\n dataTextField: \"Value\",\r\n dataValueField: \"Key\",\r\n itemTemplate: `
\r\n #= Value #\r\n \r\n \r\n
`,\r\n change: function () {\r\n const selected = this.value();\r\n const items = this.listView.content.find(\"li\");\r\n items.each(function () {\r\n const checkbox = $(this).find(\"input[type='checkbox']\");\r\n const value = checkbox.val();\r\n checkbox.prop(\"checked\", selected.indexOf(value) > -1);\r\n });\r\n\r\n _this.AddModel.countries = selected;\r\n if (selected.length == 0) {\r\n this.tagList.children().each(function() {\r\n this.remove();\r\n });\r\n }\r\n },\r\n open: function () {\r\n const selected = this.value();\r\n const items = this.listView.content.find(\"li\");\r\n items.each(function () {\r\n const checkbox = $(this).find(\"input[type='checkbox']\");\r\n const value = checkbox.val();\r\n checkbox.prop(\"checked\", selected.indexOf(value) > -1);\r\n });\r\n }\r\n });\r\n\r\n this.countryValidator = kendo.jQuery(\"#countriesSelectorAdd\").kendoValidator({\r\n rules: {\r\n hasItems: function (input) {\r\n if(input.is(\"[name=countries]\")){\r\n var ms = input.data(\"kendoMultiSelect\");\r\n if(ms.value().length < 1){\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n },\r\n messages: {\r\n hasItems: \"Please select 1 or more countries.\"\r\n }\r\n }).data(\"kendoValidator\"); \r\n \r\n $(\"input[name=countries]\").on(\"blur\", function() {\r\n _this.countryValidator.validate();\r\n });\r\n\r\n $(\".k-multiselect-wrap\").append(\"\");\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n save: function (e) {\r\n e.preventDefault();\r\n const _this = this;\r\n _this.clearAlert();\r\n\r\n _this.isSaving = true;\r\n\r\n const re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n const isValidMail = re.test(String(_this.AddModel.email).toLowerCase());\r\n\r\n var isCountryValid = _this.countryValidator.validate();\r\n\r\n if (!isCountryValid) {\r\n _this.isSaving = false;\r\n } else {\r\n if (!isValidMail) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not add member due to invalid email address',\r\n \"isSuccess\": false\r\n });\r\n _this.isSaving = false;\r\n } else {\r\n $.ajax({\r\n type: 'POST',\r\n url: '/Settings/ManageMembers/Add',\r\n data: JSON.stringify({\r\n firstName: _this.AddModel.firstName,\r\n lastName: _this.AddModel.lastName,\r\n email: _this.AddModel.email,\r\n roleId: _this.AddModel.role,\r\n countries: _this.AddModel.countries\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n _this.close();\r\n _this.$emit('member-added', 'Member successfully added!');\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not add member: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n }\r\n _this.isSaving = false;\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not add member due to a server error',\r\n \"isSuccess\": false\r\n });\r\n _this.isSaving = false;\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n }\r\n }\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n show: function() {\r\n $('#memberoverview-add-member').modal('show');\r\n const multiSelect = kendo.jQuery('#countriesSelectorAdd').data(\"kendoMultiSelect\");\r\n multiSelect.value([]);\r\n const validator = this.$validator;\r\n validator.errors.clear();\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n this.AddModel = Object.assign({}, this.data);\r\n $('#memberoverview-add-member').modal('hide');\r\n // Enable save button again.\r\n this.isSaving = false;\r\n }\r\n }\r\n }\r\n);\r\n","import Vue from 'vue'\r\nimport \"./Edit.less\"\r\n\r\nmodule.export = Vue.component('editmembermodal',\r\n {\r\n name: 'editmember',\r\n props: {\r\n data: Object\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n EditModel: Object.assign({}, this.data), //create deep a copy of the object\r\n isSaving: false,\r\n countryValidator: undefined\r\n };\r\n },\r\n mounted: function() {\r\n const _this = this;\r\n const countries = _this.EditModel.allCountries;\r\n kendo.jQuery(\"#countriesSelectorEdit\").kendoMultiSelect({\r\n dataSource: countries,\r\n filter: \"contains\",\r\n tagTemplate: kendo.template($(\"#tagTemplate\").html()),\r\n placeholder: \"Select country\",\r\n autoClose: false,\r\n tagMode: \"single\",\r\n noDataTemplate: \"No countries available\",\r\n dataTextField: \"Value\",\r\n dataValueField: \"Key\",\r\n itemTemplate: `
\r\n #= Value #\r\n \r\n \r\n
`,\r\n change: function () {\r\n const selected = this.value();\r\n const items = this.listView.content.find(\"li\");\r\n items.each(function () {\r\n const checkbox = $(this).find(\"input[type='checkbox']\");\r\n const value = checkbox.val();\r\n checkbox.prop(\"checked\", selected.indexOf(value) > -1);\r\n });\r\n\r\n _this.EditModel.countries = selected;\r\n if (selected.length == 0) {\r\n this.tagList.children().each(function() {\r\n this.remove();\r\n });\r\n }\r\n },\r\n open: function () {\r\n const selected = this.value();\r\n const items = this.listView.content.find(\"li\");\r\n items.each(function () {\r\n const checkbox = $(this).find(\"input[type='checkbox']\");\r\n const value = checkbox.val();\r\n checkbox.prop(\"checked\", selected.indexOf(value) > -1);\r\n });\r\n }\r\n });\r\n\r\n this.countryValidator = kendo.jQuery(\"#countriesSelectorEdit\").kendoValidator({\r\n rules: {\r\n hasItems: function (input) {\r\n if(input.is(\"[name=countries]\")){\r\n var ms = input.data(\"kendoMultiSelect\");\r\n if(ms.value().length < 1){\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n },\r\n messages: {\r\n hasItems: \"Please select 1 or more countries.\"\r\n }\r\n }).data(\"kendoValidator\"); \r\n \r\n $(\"input[name=countries]\").on(\"blur\", function() {\r\n _this.countryValidator.validate();\r\n });\r\n\r\n $(\".k-multiselect-wrap\").append(\"\");\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n save: function (e) {\r\n e.preventDefault();\r\n const _this = this;\r\n _this.clearAlert();\r\n\r\n _this.isSaving = true;\r\n\r\n const re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n const isValidMail = re.test(String(_this.EditModel.email).toLowerCase());\r\n\r\n var isCountryValid = _this.countryValidator.validate();\r\n\r\n if (!isCountryValid) {\r\n _this.isSaving = false;\r\n } else {\r\n if (!isValidMail) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not add member due to invalid email address',\r\n \"isSuccess\": false\r\n });\r\n _this.isSaving = false;\r\n } else {\r\n $.ajax({\r\n type: 'POST',\r\n url: '/Settings/ManageMembers/Edit',\r\n data: JSON.stringify({\r\n id: _this.EditModel.id,\r\n firstName: _this.EditModel.firstName,\r\n lastName: _this.EditModel.lastName,\r\n email: _this.EditModel.email,\r\n roleId: _this.EditModel.role,\r\n countries: _this.EditModel.countries\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n _this.close();\r\n _this.$emit('member-changed');\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not edit member: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n }\r\n _this.isSaving = false;\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not edit member due to a server error',\r\n \"isSuccess\": false\r\n });\r\n _this.isSaving = false;\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n }\r\n }\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n show: function(data) {\r\n var _this = this;\r\n this.EditModel = Object.assign({}, data);\r\n const countriesSelector = kendo.jQuery(\"#countriesSelectorEdit\").getKendoMultiSelect();\r\n countriesSelector.value(this.EditModel.countries);\r\n const items = countriesSelector.listView.content.find(\"li\");\r\n items.each(function () {\r\n const checkbox = $(this).find(\"input[type='checkbox']\");\r\n const value = checkbox.val();\r\n checkbox.prop(\"checked\", _this.EditModel.countries.indexOf(value) > -1);\r\n }); \r\n $('#memberoverview-edit-member').modal('show');\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n $('#memberoverview-edit-member').modal('hide');\r\n\r\n // Enable save button again.\r\n this.isSaving = false;\r\n }\r\n }\r\n }\r\n);\r\n","import Vue from 'vue'\r\nimport VeeValidate from \"vee-validate\"\r\nimport { Grid, GridInstaller } from '@progress/kendo-grid-vue-wrapper'\r\nimport { toArray } from 'lodash';\r\nimport \"../Grid/Grid.less\"\r\nimport { fetchJson } from '../Shared/request-utils'\r\n\r\nif (document.getElementById('vue-members-overview')) {\r\n const actionbar = require(\"../Actionbar/Actionbar.js\");\r\n const alerts = require(\"../Alerts/Alerts.js\");\r\n require(\"./Add.js\");\r\n require(\"./Edit.js\");\r\n\r\n Vue.use(GridInstaller);\r\n Vue.use(VeeValidate);\r\n\r\n const pagesizesession = \"pagesize\";\r\n let pagesize = sessionStorage.getItem(pagesizesession);\r\n if (!pagesize) {\r\n pagesize = 20;\r\n }\r\n\r\n new Vue({\r\n el: '#vue-members-overview',\r\n components: {},\r\n data: function () {\r\n return {\r\n HasBranding: window.hasBranding,\r\n dataSource: {\r\n data: [],\r\n transport: {\r\n read: {\r\n url: \"/Settings/ManageMembers/List\",\r\n contentType: \"application/json\",\r\n type: \"POST\"\r\n },\r\n parameterMap: function (options) {\r\n return kendo.stringify(options);\r\n }\r\n },\r\n serverPaging: true,\r\n serverFiltering: true,\r\n serverSorting: true,\r\n sort: { field: \"lastName\", dir: \"asc\" },\r\n pageSize: pagesize,\r\n schema: {\r\n data: \"data\",\r\n total: \"total\"\r\n }\r\n },\r\n AddModel: {\r\n firstName: '',\r\n lastName: '',\r\n email: '',\r\n role: '',\r\n countries: [],\r\n allRoles: window.preLoadedData.AllRoles.filter(r => r.IsAllowedRole),\r\n allCountries: window.preLoadedData.AllCountries\r\n },\r\n EditModel: {\r\n id: '',\r\n firstName: '',\r\n lastName: '',\r\n email: '',\r\n role: '',\r\n countries: [],\r\n allRoles: window.preLoadedData.AllRoles,\r\n allCountries: window.preLoadedData.AllCountries\r\n },\r\n pageable: {\r\n buttonCount: 3,\r\n info: true,\r\n type: 'numeric',\r\n pageSizes: [10, 20, 30, 50],\r\n previousNext: true\r\n },\r\n columns: [\r\n { 'field': 'firstName', 'title': 'First name', 'filterable': false, 'width': '20%' },\r\n { 'field': 'lastName', 'title': 'Last name', 'filterable': false, 'width': '20%' },\r\n { 'field': 'email', 'title': 'Email', 'filterable': false, 'width': '20%' },\r\n { 'field': 'role', 'title': 'Role', 'filterable': false, 'width': '20%' },\r\n { 'field': 'countries', 'title': 'Countries', 'filterable': false, 'width': '20%' }, \r\n { 'title': ' ', 'filterable': false, 'template': '', 'width': '120px' }\r\n ],\r\n actionbar: window.preLoadedData.Actionbar,\r\n search: {\r\n visible: true\r\n },\r\n alerts: [] \r\n }\r\n },\r\n created: function () {\r\n this.actionbar.searchVisible = true;\r\n },\r\n methods: {\r\n addTooltip: function addTooltipToTableHeaders(grid) {\r\n grid.element[0].querySelectorAll(\".k-header\").forEach(element => {\r\n const title = $(element).data(\"title\");\r\n\r\n if (!/<[a-z\\][\\s\\S]*>/i.test(title)) {\r\n\r\n $(element).attr('title', title);\r\n }\r\n });\r\n },\r\n refreshGrid: function (message) {\r\n if (message) {\r\n this.addAlert({ \"message\": message, \"isSuccess\": true, \"showPopup\": true });\r\n }\r\n const grid = this.$refs.grid.kendoWidget();\r\n grid.dataSource.read();\r\n },\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n actionbarAddMember: function() {\r\n this.$refs.addmember.show();\r\n },\r\n actionbarSearch: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n let filter = {};\r\n let searchProperties = [\"FirstName\", \"LastName\", \"Email\", \"MemberRole.Name\", \"Countries\"];\r\n if (e !== null && e !== '') {\r\n filter = { logic: 'or', filters: [] };\r\n searchProperties.forEach(function (x) {\r\n if (x) {\r\n filter.filters.push({\r\n field: x,\r\n operator: 'contains',\r\n value: e\r\n });\r\n }\r\n });\r\n }\r\n grid.dataSource.filter(filter);\r\n },\r\n actionbarExport: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n grid.setOptions({\r\n excel: {\r\n allPages: true\r\n }\r\n });\r\n grid.saveAsExcel();\r\n },\r\n editMember: function(e, grid) {\r\n e.preventDefault();\r\n var _this = this;\r\n const selectedItems = grid.select().toArray().map(function (s) { return grid.dataItem(s).id; });\r\n if (selectedItems.length === 1) {\r\n fetchJson('./ManageMembers/GetMemberDetails?id=' + selectedItems[0])\r\n .then(\r\n (result) => {\r\n var editModel = Object.assign({}, result);\r\n editModel.allRoles = window.preLoadedData.AllRoles;\r\n editModel.allCountries = window.preLoadedData.AllCountries;\r\n _this.$refs.editmember.show(editModel);\r\n },\r\n (error) => {\r\n console.error(error);\r\n });\r\n }\r\n },\r\n gridOnDatabound: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n grid.element.unbind('dblclick');\r\n grid.element.unbind('click');\r\n\r\n grid.element.on('dblclick', 'tbody tr[data-uid]', (e) => this.editMember(e, grid));\r\n grid.element.on('click', '.anchor-edit', (e) => this.editMember(e, grid));\r\n\r\n this.addTooltip(grid);\r\n }\r\n }\r\n });\r\n}","import Vue from 'vue'\r\n\r\nmodule.export = Vue.component('managepreviewsmodal',\r\n {\r\n name: \"managepreviewsmodal\",\r\n props: {\r\n gridPreviews: Array,\r\n grid: Object\r\n },\r\n data: function () {\r\n return {\r\n alerts: [],\r\n previews: this.gridPreviews,\r\n previewsToAdd: [],\r\n previewToDelete: null,\r\n gridData: this.grid,\r\n gridType: \"\",\r\n previewName: \"\",\r\n columns: [\r\n { 'field': 'name', 'title': 'Preview name', 'filterable': false },\r\n {\r\n 'field': 'actions',\r\n 'title': ' ',\r\n 'filterable': false,\r\n 'template': '
' + [\r\n ''\r\n ].join('') + '
',\r\n 'width': '120px'\r\n }\r\n ]\r\n };\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n save: function (e) {\r\n e.preventDefault();\r\n this.previewToDelete ? this.removeGridPreview(this.previewToDelete) : this.addGridPreview();\r\n },\r\n addGridPreview: function () {\r\n const _this = this;\r\n const name = _this.previewName.trim();\r\n if (name !== \"\") {\r\n if (_this.previews.some(preview => preview.name === name)) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'A preview with this name already exists',\r\n \"isSuccess\": false\r\n });\r\n\r\n return;\r\n }\r\n\r\n const activeFilters = _this.gridData.getActiveFilters();\r\n activeFilters.filters = activeFilters.filters?.filter(activeFilter => !activeFilter.filters);\r\n const activeSorting = _this.gridData.getActiveSorting();\r\n \r\n const newPreview = {\r\n name: name,\r\n gridType: _this.gridType,\r\n activeFilters: activeFilters,\r\n activeSorting: activeSorting,\r\n selectedColumns: _this.gridData.config.SelectedColumns\r\n };\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: '/GridPreviews/Add',\r\n data: JSON.stringify(newPreview),\r\n success: function (data) {\r\n if (data.success) {\r\n _this.previewName = \"\";\r\n _this.$emit('grid-preview-changed', \"Added new preview successfully\", \"ADDED\");\r\n $('#manage-previews-modal').modal('hide');\r\n _this.clearAlert();\r\n }\r\n else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not add grid preview: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not add asset due to a server error',\r\n \"isSuccess\": false\r\n });\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not add grid preview due to missing preview name',\r\n \"isSuccess\": false\r\n });\r\n }\r\n },\r\n removeGridPreview: function (gridPreview) {\r\n const _this = this;\r\n $.ajax({\r\n type: 'POST',\r\n url: '/GridPreviews/Remove',\r\n data: JSON.stringify({\r\n id: gridPreview.id\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n _this.$emit('grid-preview-changed', \"Removed preview successfully\", \"DELETED\");\r\n $('#manage-previews-modal').modal('hide');\r\n _this.previews = _this.previews.filter(preview => preview.Id !== gridPreview.Id);\r\n _this.previewName = \"\";\r\n _this.previewToDelete = null;\r\n _this.clearAlert();\r\n }\r\n else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not remove grid preview: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not remove grid preview due to a server error',\r\n \"isSuccess\": false\r\n });\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n },\r\n show: function (previews, gridType) {\r\n this.previews = previews;\r\n this.gridType = gridType;\r\n $('#manage-previews-modal').modal('show');\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n $('#manage-previews-modal').modal('hide');\r\n },\r\n back: function () {\r\n this.previewToDelete = null;\r\n },\r\n gridOnDatabound: function (e) {\r\n const _this = this;\r\n const grid = this.$refs.managepreviewsgrid.kendoWidget();\r\n grid.element.on('click', '.anchor-remove',\r\n function (e) {\r\n e.preventDefault();\r\n _this.previewToDelete = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n });\r\n }\r\n }\r\n });","import Vue from 'vue'\r\n\r\nmodule.export = Vue.component('addrolemodal',\r\n {\r\n name: 'addrole',\r\n props: {\r\n data: Object\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n AddModel: {\r\n name: \"\",\r\n allRoles: Object.assign([], this.data)\r\n },\r\n dataSource: {\r\n data: window.preLoadedData.AllRights\r\n },\r\n columns: [\r\n { 'field': 'Selected', 'title': ' ', 'filterable': false, 'template': '
', 'width': '40px' },\r\n { 'field': 'Name', 'title': 'Name', 'filterable': false }\r\n ]\r\n };\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n add: function (e) {\r\n e.preventDefault();\r\n const grid = this.$refs.grid.kendoWidget();\r\n const selectedRights = grid.dataSource.data().filter(i => i.Selected).map(i => i.Id);\r\n const _this = this;\r\n _this.clearAlert();\r\n $(\"#saveButton\").prop(\"disabled\", true);\r\n $.ajax({\r\n type: 'POST',\r\n url: '/Settings/ManageRoles/Add',\r\n data: JSON.stringify({\r\n name: _this.AddModel.name,\r\n rights: selectedRights,\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n _this.close();\r\n _this.$emit('role-added');\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not add role: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not add role due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n this.AddModel = Object.assign({}, this.data);\r\n $('#roleoverview-add-role').modal('hide');\r\n\r\n // Enable save button again.\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n },\r\n gridOnDatabound: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const _this = this;\r\n grid.element.on('click', '.visual-checkbox',\r\n function (e) {\r\n e.preventDefault();\r\n const cb = this.querySelector(\"input[type='checkbox']\");\r\n cb.checked = !cb.checked;\r\n const dataItem = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n if (dataItem) {\r\n dataItem.selected = cb.checked;\r\n } else {\r\n grid.dataSource.data().forEach(item => item.selected = !item.selected );\r\n }\r\n \r\n _this.selectOnChange();\r\n grid.refresh();\r\n });\r\n }\r\n }\r\n });","import Vue from 'vue'\r\n\r\nmodule.export = Vue.component('editrolemodal',\r\n {\r\n name: 'editrole',\r\n props: {\r\n data: Object\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n EditModel: Object.assign({}, this.data), //create deep a copy of the object\r\n columns: [\r\n { 'field': 'Selected', 'title': ' ', 'filterable': false, 'template': '
', 'width': '40px' },\r\n { 'field': 'Name', 'title': 'Rights', 'filterable': false },\r\n ]\r\n };\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n save: function (e) {\r\n e.preventDefault();\r\n const _this = this;\r\n _this.clearAlert();\r\n $(\"#saveButton\").prop(\"disabled\", true);\r\n $.ajax({\r\n type: 'POST',\r\n url: '/Settings/ManageRoles/Edit',\r\n data: JSON.stringify({\r\n roleId: window.Role.Id,\r\n name: _this.EditModel.name,\r\n rightIds: _this.EditModel.rights.filter(x => x.Selected).map(x => x.Id)\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n _this.close();\r\n _this.$emit('role-changed');\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not change role: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not change role due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n for (let i = 0; i < this.data.rights.length; i++) {\r\n this.data.rights[i].Selected = false;\r\n }\r\n this.EditModel = Object.assign({}, this.data);\r\n $('#roleoverview-edit-role').modal('hide');\r\n\r\n // Enable save button again.\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n },\r\n gridOnDatabound: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const _this = this;\r\n grid.element.on('click', '.visual-checkbox',\r\n function (e) {\r\n e.preventDefault();\r\n const cb = this.querySelector(\"input[type='checkbox']\");\r\n cb.checked = !cb.checked;\r\n const right = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n right.Selected = cb.checked;\r\n const rightIndex = _this.EditModel.rights.findIndex(x => x.Id == right.Id);\r\n if (rightIndex != -1) {\r\n _this.EditModel.rights[rightIndex].Selected = cb.checked;\r\n }\r\n if (cb.checked) {\r\n $(this.parentElement).addClass(\"state-selected\");\r\n } else {\r\n $(this.parentElement).removeClass(\"state-selected\");\r\n }\r\n });\r\n }\r\n }\r\n });","import Vue from 'vue'\r\nimport VeeValidate from \"vee-validate\"\r\nimport { Grid, GridInstaller } from '@progress/kendo-grid-vue-wrapper'\r\nimport { toArray } from 'lodash';\r\nimport \"../Grid/Grid.less\"\r\n\r\nif (document.getElementById('vue-role-overview')) {\r\n const actionbar = require(\"../Actionbar/Actionbar.js\");\r\n const alerts = require(\"../Alerts/Alerts.js\");\r\n require(\"./Add.js\");\r\n require(\"./Edit.js\");\r\n \r\n Vue.use(GridInstaller);\r\n Vue.use(VeeValidate);\r\n\r\n const pagesizesession = \"pagesize\";\r\n let pagesize = sessionStorage.getItem(pagesizesession);\r\n if (!pagesize) {\r\n pagesize = 20;\r\n }\r\n\r\n new Vue({\r\n el: '#vue-role-overview',\r\n components: {},\r\n data: function () {\r\n return {\r\n dataSource: {\r\n data: window.preLoadedData.AllRights\r\n },\r\n AddModel: {\r\n name: '',\r\n allRights: window.preLoadedData.AllRights\r\n },\r\n EditModel: {\r\n name: \"\",\r\n rights: window.preLoadedData.AllRights\r\n },\r\n dataSource: {\r\n data: [],\r\n transport: {\r\n read: {\r\n url: \"/Settings/ManageRoles/List\",\r\n contentType: \"application/json\",\r\n type: \"POST\"\r\n },\r\n parameterMap: function (options) {\r\n return kendo.stringify(options);\r\n }\r\n },\r\n serverPaging: true,\r\n serverFiltering: true,\r\n serverSorting: true,\r\n pageSize: pagesize,\r\n schema: {\r\n data: \"data\",\r\n total: \"total\"\r\n }\r\n },\r\n pageable: {\r\n buttonCount: 3,\r\n info: true,\r\n type: 'numeric',\r\n pageSizes: [10, 20, 30, 50],\r\n previousNext: true\r\n },\r\n columns: {},\r\n actionbar: window.preLoadedData.Actionbar,\r\n\r\n search: {\r\n visible: true\r\n },\r\n selectedAssets: [],\r\n alerts: []\r\n };\r\n },\r\n created: function () {\r\n this.loadColumns();\r\n\r\n this.actionbar.searchVisible = true;\r\n\r\n const selectAll = this.actionbar.ItemsRight.find(f => f.event === \"ab-select-all\") ? this.actionbar.ItemsRight.find(f => f.event === \"ab-select-all\") : this.actionbar.ItemsLeft.find(f => f.event === \"ab-select-all\");\r\n if (selectAll != null) {\r\n selectAll.visible = false;\r\n\r\n const emptySpaceBeforeSelectAll = this.actionbar.ItemsLeft.find(f => f.event === null);\r\n if (emptySpaceBeforeSelectAll != null) {\r\n emptySpaceBeforeSelectAll.visible = false;\r\n }\r\n }\r\n },\r\n methods: {\r\n refreshGrid: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n grid.dataSource.read();\r\n },\r\n addAlert: function (event) {\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n loadColumns: function (e) {\r\n this.columns = [\r\n { 'field': 'name', 'title': 'Name', 'filterable': false, 'width': '20%' },\r\n { 'field': 'rights', 'title': 'Responsibilities', 'filterable': false, 'width': '70%' }\r\n ]\r\n let rowactions = '';\r\n //add conditions to add following \r\n\r\n rowactions += '';\r\n rowactions += '';\r\n if (rowactions != '') {\r\n this.columns.push({ 'title': ' ', 'filterable': false, 'template': rowactions, 'width': '90x' });\r\n }\r\n },\r\n addTooltip: function addTooltipToTableHeaders(grid) {\r\n grid.element[0].querySelectorAll(\".k-header\").forEach(element => {\r\n const title = $(element).data(\"title\");\r\n\r\n if (!/<[a-z\\][\\s\\S]*>/i.test(title)) {\r\n\r\n $(element).attr('title', title);\r\n }\r\n });\r\n },\r\n actionbarSearch: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n let filter = {};\r\n if (e !== null && e !== '') {\r\n filter = { logic: 'or', filters: [] };\r\n grid.columns.forEach(function (x) {\r\n if (x.field) {\r\n filter.filters.push({\r\n field: x.field,\r\n operator: 'contains',\r\n value: e\r\n });\r\n }\r\n });\r\n }\r\n grid.dataSource.filter(filter);\r\n },\r\n actionbarSelectAll: function () {\r\n },\r\n actionbarDownloadRRReport: function () {\r\n window.open(\"/Settings/ManageRoles/DownloadRandRReport\", \"_blank\");\r\n },\r\n confirmedDeleteRole: function (e) {\r\n const _this = this;\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: '/Settings/ManageRoles/Delete',\r\n data: JSON.stringify({\r\n roleIds: [window.Role.Id]\r\n }),\r\n contentType: \"application/json\",\r\n dataType: 'json',\r\n success: function (data) {\r\n $('#roleoverview-delete-role').modal('hide');\r\n\r\n if (!data.success) {\r\n _this.addAlert({\r\n \"message\": data.message,\r\n \"isSuccess\": false\r\n });\r\n } else {\r\n _this.refreshGrid();\r\n }\r\n }\r\n });\r\n },\r\n actionbarAddRole: function (e) {\r\n $('#roleoverview-add-role').modal('show');\r\n },\r\n actionbarDeleteRole: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const selectedItems = grid.dataSource.data().filter(i => i.selected);\r\n if (selectedItems.length >= 1) {\r\n $('#roleoverview-delete-role').modal('show');\r\n } else {\r\n alert('Please select one or more roles\\'s to delete');\r\n }\r\n },\r\n gridOnDatabound: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n grid.element.unbind('dblclick');\r\n grid.element.unbind('click');\r\n \r\n const _this = this;\r\n\r\n grid.element.on('dblclick', 'tbody tr[data-uid]',\r\n function (e) {\r\n e.preventDefault();\r\n\r\n const role = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n\r\n window.Role = {\r\n Id: role.id,\r\n Name: role.name,\r\n Rights: role.rights.split(' / ')\r\n };;\r\n _this.$refs.editrole.EditModel.name = role.name;\r\n _this.$refs.editrole.$refs.grid.kendoWidget().dataSource.data([]);\r\n const allRights = window.preLoadedData.AllRights;\r\n const rightsWithSelection = allRights;\r\n for (let i = 0; i < allRights.length; i++) {\r\n const matchedIndex = window.Role.Rights.findIndex(x => x === allRights[i].Name);\r\n if (matchedIndex !== -1) {\r\n rightsWithSelection[i].Selected = true;\r\n }\r\n }\r\n _this.$refs.editrole.EditModel.rights = rightsWithSelection;\r\n _this.$refs.editrole.$refs.grid.kendoWidget().dataSource.read();\r\n $('#roleoverview-edit-role').modal('show');\r\n });\r\n\r\n //actionview handlers:\r\n grid.element.on('click', '.anchor-remove',\r\n function (e) {\r\n e.preventDefault();\r\n const role = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n\r\n window.Role = {\r\n Id: role.id,\r\n Name: role.name,\r\n Rights: role.rights.split(' / ')\r\n };\r\n $('#roleoverview-delete-role').modal('show');\r\n });\r\n grid.element.on('click', '.anchor-edit',\r\n function (e) {\r\n e.preventDefault();\r\n const role = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n\r\n window.Role = {\r\n Id: role.id,\r\n Name: role.name,\r\n Rights: role.rights.split(' / ')\r\n };\r\n _this.$refs.editrole.EditModel.name = role.name;\r\n _this.$refs.editrole.$refs.grid.kendoWidget().dataSource.data([]);\r\n const allRights = window.preLoadedData.AllRights;\r\n const rightsWithSelection = allRights;\r\n for (let i = 0; i < allRights.length; i++) {\r\n const matchedIndex = window.Role.Rights.findIndex(x => x === allRights[i].Name);\r\n if (matchedIndex !== -1) {\r\n rightsWithSelection[i].Selected = true;\r\n }\r\n }\r\n _this.$refs.editrole.EditModel.rights = rightsWithSelection;\r\n _this.$refs.editrole.$refs.grid.kendoWidget().dataSource.read();\r\n $('#roleoverview-edit-role').modal('show');\r\n });\r\n\r\n this.addTooltip(grid);\r\n }\r\n }\r\n });\r\n $('.k-header').dblclick(function (e) {\r\n if (e.offsetY > $(this).outerHeight() - 2) {\r\n this.width = getTextWidth(this.textContent, this.font);\r\n //get column number\r\n const colNr = this.getAttribute(\"data-index\");\r\n //select column\r\n //add search in class k-grid-content\r\n const gridCols = document.getElementById(\"role-overview-grid\").getElementsByClassName(\"k-grid-content\")[0].querySelector(\"colgroup\").childNodes;\r\n gridCols[colNr].width = $(this).outerWidth();\r\n }\r\n })\r\n\r\n function getTextWidth(text, font) {\r\n // re-use canvas object for better performance\r\n const canvas = getTextWidth.canvas || (getTextWidth.canvas = document.createElement(\"canvas\"));\r\n const context = canvas.getContext(\"2d\");\r\n context.font = font;\r\n const metrics = context.measureText(text);\r\n //add space for the filter and arroww\r\n const tableIcons = 80;\r\n const total = metrics.width + tableIcons;\r\n return total;\r\n }\r\n const pageSizeDropDownList = document.getElementsByClassName('k-pager-sizes')[0].querySelector(\"[data-role=dropdownlist]\");\r\n pageSizeDropDownList.onchange = function () {\r\n sessionStorage.setItem(pagesizesession, this.value);\r\n };\r\n}","import Vue from 'vue'\r\n\r\nmodule.export = Vue.component('addusermodal',\r\n {\r\n name: 'adduser',\r\n props: {\r\n data: Object\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n AddModel: Object.assign({}, this.data),\r\n isSaving: false\r\n };\r\n },\r\n mounted: function () {\r\n const _this = this;\r\n const portfolios = _this.AddModel.allPortfolios;\r\n kendo.jQuery(\"#portfolioSelectorAddUser\").kendoMultiSelect({\r\n dataSource: portfolios,\r\n filter: \"contains\",\r\n tagTemplate: kendo.template($(\"#tagTemplateAddUser\").html()),\r\n placeholder: \"Select portfolio\",\r\n autoClose: false,\r\n tagMode: \"single\",\r\n noDataTemplate: \"No portfolios available\",\r\n dataTextField: \"Name\",\r\n dataValueField: \"Id\",\r\n itemTemplate: `
\r\n #= Name #\r\n \r\n \r\n
`,\r\n change: function () {\r\n const selected = this.value();\r\n const items = this.listView.content.find(\"li\");\r\n items.each(function () {\r\n const checkbox = $(this).find(\"input[type='checkbox']\");\r\n const value = checkbox.val();\r\n checkbox.prop(\"checked\", selected.indexOf(value) > -1);\r\n });\r\n\r\n _this.AddModel.portfolios = selected;\r\n if (selected.length == 0) {\r\n this.tagList.children().each(function () {\r\n this.remove();\r\n });\r\n }\r\n },\r\n open: function () {\r\n const selected = this.value();\r\n const items = this.listView.content.find(\"li\");\r\n items.each(function () {\r\n const checkbox = $(this).find(\"input[type='checkbox']\");\r\n const value = checkbox.val();\r\n checkbox.prop(\"checked\", selected.indexOf(value) > -1);\r\n });\r\n }\r\n });\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n save: function (e) {\r\n e.preventDefault();\r\n const _this = this;\r\n _this.clearAlert();\r\n\r\n _this.isSaving = true;\r\n\r\n this.$validator.validateAll().then((isValid) => {\r\n if (isValid) {\r\n const re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n const isValidMail = re.test(String(_this.AddModel.mail).toLowerCase());\r\n\r\n if (!isValidMail) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not add user due to invalid email address',\r\n \"isSuccess\": false\r\n });\r\n _this.isSaving = false;\r\n } else {\r\n $.ajax({\r\n type: 'POST',\r\n url: '/Settings/ManageUsers/Add',\r\n data: JSON.stringify({\r\n firstName: _this.AddModel.firstName,\r\n lastName: _this.AddModel.lastName,\r\n mail: _this.AddModel.mail,\r\n roleId: _this.AddModel.role,\r\n portfolios: _this.AddModel.portfolios\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n _this.close();\r\n _this.$emit('user-added');\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not add user: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n }\r\n _this.isSaving = false;\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not add user due to a server error',\r\n \"isSuccess\": false\r\n });\r\n _this.isSaving = false;\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n }\r\n }\r\n });\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n this.AddModel = Object.assign({}, this.data);\r\n $('#useroverview-add-user').modal('hide');\r\n\r\n // Enable save button again.\r\n this.isSaving = false;\r\n }\r\n }\r\n }\r\n);\r\n","import Vue from 'vue'\r\nimport \"./AddRequest.less\"\r\n\r\nmodule.export = Vue.component('addrequestusermodal',\r\n {\r\n name: 'addrequestuser',\r\n props: {\r\n data: Object\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n AddRequestModel: Object.assign([], this.data),\r\n isSaving: false\r\n };\r\n },\r\n mounted: function () {\r\n const _this = this;\r\n const portfolios = _this.AddRequestModel.allPortfolios;\r\n kendo.jQuery(\"#portfolioSelectorAdd\").kendoMultiSelect({\r\n dataSource: portfolios,\r\n filter: \"contains\",\r\n tagTemplate: kendo.template($(\"#tagTemplate\").html()),\r\n placeholder: \"Select portfolio\",\r\n autoClose: false,\r\n tagMode: \"single\",\r\n noDataTemplate: \"No portfolios available\",\r\n dataTextField: \"Name\",\r\n dataValueField: \"Id\",\r\n itemTemplate: `
\r\n #= Name #\r\n \r\n \r\n
`,\r\n change: function () {\r\n const selected = this.value();\r\n const items = this.listView.content.find(\"li\");\r\n items.each(function () {\r\n const checkbox = $(this).find(\"input[type='checkbox']\");\r\n const value = checkbox.val();\r\n checkbox.prop(\"checked\", selected.indexOf(value) > -1);\r\n });\r\n\r\n _this.AddRequestModel.portfolios = selected;\r\n if (selected.length == 0) {\r\n this.tagList.children().each(function() {\r\n this.remove();\r\n });\r\n }\r\n },\r\n open: function () {\r\n const selected = this.value();\r\n const items = this.listView.content.find(\"li\");\r\n items.each(function () {\r\n const checkbox = $(this).find(\"input[type='checkbox']\");\r\n const value = checkbox.val();\r\n checkbox.prop(\"checked\", selected.indexOf(value) > -1);\r\n });\r\n }\r\n });\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n save: function (e) {\r\n e.preventDefault();\r\n const _this = this;\r\n _this.clearAlert();\r\n\r\n _this.isSaving = true;\r\n\r\n this.$validator.validateAll().then((isValid) => {\r\n if (isValid) {\r\n const re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n const isValidMail = re.test(String(_this.AddRequestModel.mail).toLowerCase());\r\n\r\n if (!isValidMail) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not add user due to invalid email address',\r\n \"isSuccess\": false\r\n });\r\n _this.isSaving = false;\r\n } else {\r\n $.ajax({\r\n type: 'POST',\r\n url: '/Settings/ManageUsers/AddRequestUser',\r\n data: JSON.stringify({\r\n firstName: _this.AddRequestModel.firstName,\r\n lastName: _this.AddRequestModel.lastName,\r\n mail: _this.AddRequestModel.mail,\r\n roleId: _this.AddRequestModel.role,\r\n portfolios: _this.AddRequestModel.portfolios,\r\n remark: _this.AddRequestModel.remark\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n _this.close();\r\n _this.$emit('user-added');\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not add user: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n }\r\n _this.isSaving = false;\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not add user due to a server error',\r\n \"isSuccess\": false\r\n });\r\n _this.isSaving = false;\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n }\r\n }\r\n });\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n this.AddRequestModel = Object.assign({}, this.data);\r\n $('#useroverview-add-request-user').modal('hide');\r\n\r\n // Enable save button again.\r\n this.isSaving = false;\r\n }\r\n }\r\n }\r\n);\r\n","import Vue from 'vue'\r\nimport \"./ApprovalUsers.less\"\r\n\r\nmodule.export = Vue.component('approvalusersmodal',\r\n {\r\n name: 'approvalusers',\r\n props: {\r\n data: Object,\r\n selectedUsers: Array,\r\n userCount: Number\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n ApprovalModel: {\r\n userStatus: \"\",\r\n },\r\n ErrorMessage: \"Could not change approval users\",\r\n isSaving: false\r\n };\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n save: function (e) {\r\n e.preventDefault();\r\n const _this = this;\r\n _this.clearAlert();\r\n _this.isSaving = true;\r\n this.$validator.validateAll().then((isValid) => {\r\n if (isValid) {\r\n $.ajax({\r\n type: 'POST',\r\n url: '/Settings/ManageUsers/ChangeApprovalUsers',\r\n data: JSON.stringify({\r\n userIds: _this.selectedUsers.map(user => user.id),\r\n userStatus: _this.ApprovalModel.userStatus,\r\n remark: _this.ApprovalModel.remark\r\n }),\r\n success: function (data) {\r\n if (!data.success) {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not change approval for users: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n _this.isSaving = false;\r\n } else {\r\n const status = _this.ApprovalModel.userStatus;\r\n _this.close();\r\n _this.$emit('approval-changed', `User status successfully changed to ${status}`, status, Object.assign({}, this.newItem));\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not change approval for users due to a server error',\r\n \"isSuccess\": false\r\n });\r\n _this.isSaving = false;\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Please fill in all required fields correctly',\r\n \"isSuccess\": false\r\n });\r\n _this.isSaving = false;\r\n }\r\n });\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n this.EditModel = Object.assign(this.data);\r\n $('#useroverview-approval-users').modal('hide');\r\n this.isSaving = false;\r\n },\r\n }\r\n });","import Vue from 'vue'\r\nimport DatePicker from 'vue2-datepicker'\r\nimport 'vue2-datepicker/index.css'\r\n\r\nmodule.export = Vue.component('editusermodal',\r\n {\r\n name: 'edituser',\r\n props: {\r\n data: Object\r\n },\r\n components: {\r\n DatePicker\r\n },\r\n data: function () {\r\n return {\r\n alerts: [],\r\n EditModel: Object.assign({}, this.data), //create deep a copy of the object\r\n isSaving: false\r\n };\r\n },\r\n computed: {\r\n isRejected: function () {\r\n return this.EditModel.status == \"Rejected\"\r\n }\r\n }, \r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n show: function (data) {\r\n this.EditModel = Object.assign({}, data);\r\n $('#useroverview-edit-user').modal('show');\r\n }, \r\n save: function (e) {\r\n e.preventDefault();\r\n const _this = this;\r\n _this.clearAlert();\r\n _this.isSaving = true;\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: '/Settings/ManageUsers/Edit',\r\n data: JSON.stringify({\r\n userId: _this.EditModel.userId,\r\n roleId: _this.EditModel.roleId\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n _this.close();\r\n _this.$emit('user-changed');\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not edit user: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n }\r\n _this.isSaving = false;\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not edit user due to a server error',\r\n \"isSuccess\": false\r\n });\r\n _this.isSaving = false;\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n this.EditModel = Object.assign({}, this.data);\r\n $('#useroverview-edit-user').modal('hide');\r\n\r\n // Enable save button again.\r\n this.isSaving = false;\r\n }\r\n }\r\n });","import Vue from 'vue'\r\nimport VeeValidate from \"vee-validate\"\r\nimport { GridInstaller } from '@progress/kendo-grid-vue-wrapper'\r\nimport \"../Grid/Grid.less\"\r\n\r\nif (document.getElementById('vue-user-overview')) {\r\n const actionbar = require(\"../Actionbar/Actionbar.js\");\r\n const alerts = require(\"../Alerts/Alerts.js\");\r\n require(\"./Add.js\");\r\n require(\"./AddRequest.js\");\r\n require(\"./ApprovalUsers.js\");\r\n require(\"./Edit.js\");\r\n\r\n Vue.use(GridInstaller);\r\n Vue.use(VeeValidate);\r\n\r\n const pagesizesession = \"pagesize\";\r\n let pagesize = sessionStorage.getItem(pagesizesession);\r\n if (!pagesize) {\r\n pagesize = 20;\r\n }\r\n const apiUrl = window.preLoadedData.SourceUrl;\r\n new Vue({\r\n el: '#vue-user-overview',\r\n components: {},\r\n data: function () {\r\n return {\r\n EditAndRemoveAllowed: window.preLoadedData.EditAndRemoveAllowed,\r\n AddModel: {\r\n firstName: '',\r\n lastName: '',\r\n mail: '',\r\n allRoles: window.preLoadedData.AllRoles,\r\n allPortfolios: window.preLoadedData.AllPortfolios,\r\n portfolios: [],\r\n role: ''\r\n },\r\n AddRequestModel: {\r\n firstName: '',\r\n lastName: '',\r\n mail: '',\r\n allRoles: window.preLoadedData.AllRoles,\r\n role: '',\r\n allPortfolios: window.preLoadedData.AllPortfolios,\r\n portfolios: [],\r\n remmark: ''\r\n },\r\n EditModel: {\r\n roleId: '',\r\n allRoles: window.preLoadedData.AllRoles,\r\n userId: '',\r\n status: undefined\r\n },\r\n ApprovalModel: {\r\n userStatus: \"\"\r\n },\r\n dataSource: {\r\n data: [],\r\n transport: {\r\n read: {\r\n url: \"/Settings/ManageUsers/List\",\r\n contentType: \"application/json\",\r\n type: \"POST\"\r\n },\r\n parameterMap: function (options) {\r\n return kendo.stringify(options);\r\n }\r\n },\r\n serverPaging: true,\r\n serverFiltering: true,\r\n serverSorting: true,\r\n sort: { field: \"name\", dir: \"asc\" },\r\n pageSize: pagesize,\r\n schema: {\r\n data: \"data\",\r\n total: \"total\"\r\n }\r\n },\r\n pageable: {\r\n buttonCount: 3,\r\n info: true,\r\n type: 'numeric',\r\n pageSizes: [10, 20, 30, 50],\r\n previousNext: true\r\n },\r\n columns: {},\r\n actionbar: window.preLoadedData.Actionbar,\r\n\r\n search: {\r\n visible: true\r\n },\r\n alerts: [],\r\n selectedUsers: [],\r\n userCount: 0,\r\n };\r\n },\r\n created: function () {\r\n this.loadColumns();\r\n\r\n this.actionbar.searchVisible = true;\r\n },\r\n mounted: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const _this = this;\r\n\r\n //Disables the approval button on page load\r\n const approvalUsersButton = this.findActionBarButton(\"ab-approval-users\");\r\n if (approvalUsersButton != null) {\r\n approvalUsersButton.enabled = false;\r\n }\r\n \r\n grid.element.on('click', '.visual-checkbox',\r\n function (e) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n const cb = this.querySelector(\"input[type='checkbox']\");\r\n cb.checked = !cb.checked;\r\n if (cb.checked) {\r\n $(this.parentElement).addClass(\"state-selected\");\r\n } else {\r\n $(this.parentElement).removeClass(\"state-selected\");\r\n }\r\n const dataItem = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n if (dataItem) {\r\n dataItem.selected = cb.checked;\r\n } else {\r\n grid.dataSource.data().forEach(item => item.selected = cb.checked );\r\n }\r\n\r\n _this.selectOnChange();\r\n grid.refresh();\r\n });\r\n },\r\n methods: {\r\n refreshGrid: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n grid.dataSource.read();\r\n },\r\n approvalChanged: function (message, eventType, item) {\r\n this.addAlert({ \"message\": message, \"isSuccess\": true, \"showPopup\": true });\r\n this.refreshGrid();\r\n const approvalUsersButton = this.findActionBarButton(\"ab-approval-users\");\r\n if (approvalUsersButton != null) {\r\n approvalUsersButton.enabled = false;\r\n }\r\n },\r\n addAlert: function (event) {\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n loadColumns: function (e) {\r\n this.columns = [\r\n { 'field': 'name', 'title': 'Name', 'filterable': false, 'width': '20%' },\r\n { 'field': 'email', 'title': 'Email', 'filterable': false, 'width': '20%' },\r\n { 'field': 'role', 'title': 'Role', 'filterable': false, 'width': '20%' },\r\n { 'field': 'status', 'title': 'Status', 'filterable': false, 'width': '30%', 'template': '#: status #' },\r\n ];\r\n let rowactions = '';\r\n //add conditions to add following \r\n if (this.EditAndRemoveAllowed) {\r\n this.columns.unshift({\r\n 'field': 'selected',\r\n 'title': ' ',\r\n 'filterable': false,\r\n 'sortable': false,\r\n 'headerTemplate':\r\n `
\r\n \r\n \r\n \r\n \r\n
`,\r\n 'template':\r\n `
\r\n \r\n \r\n \r\n \r\n
`,\r\n 'width': '40px'\r\n });\r\n rowactions += '';\r\n rowactions += ''; \r\n }\r\n\r\n\r\n\r\n if (rowactions != '') {\r\n this.columns.push({ 'title': ' ', 'filterable': false, 'template': rowactions, 'width': '90x' });\r\n }\r\n },\r\n addTooltip: function addTooltipToTableHeaders(grid) {\r\n grid.element[0].querySelectorAll(\".k-header\").forEach(element => {\r\n const title = $(element).data(\"title\");\r\n\r\n if (!/<[a-z\\][\\s\\S]*>/i.test(title)) {\r\n\r\n $(element).attr('title', title);\r\n }\r\n });\r\n },\r\n actionbarSearch: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n let filter = {};\r\n let searchProperties = [\"FirstName\", \"LastName\", \"Email\", \"Status\"];\r\n if (e !== null && e !== '') {\r\n filter = { logic: 'or', filters: [] };\r\n searchProperties.forEach(function (x) {\r\n if (x) {\r\n filter.filters.push({\r\n field: x,\r\n operator: 'contains',\r\n value: e.trim()\r\n });\r\n }\r\n });\r\n }\r\n\r\n grid.dataSource.filter(filter);\r\n },\r\n actionbarSelectAll: function (checked) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n if (checked) {\r\n grid.dataSource.data().forEach(i => i.selected = true);\r\n } else {\r\n grid.dataSource.data().forEach(i => i.selected = false);\r\n }\r\n this.setHeaderSelectAll(grid, checked);\r\n this.selectOnChange();\r\n grid.refresh();\r\n },\r\n setHeaderSelectAll: function (grid, checked)\r\n {\r\n const cb = grid.element[0].querySelector(\".k-grid-header .visual-checkbox input[type='checkbox']\");\r\n cb.checked = checked;\r\n if (cb.checked) {\r\n $(cb.parentElement.parentElement).addClass(\"state-selected\");\r\n\r\n } else {\r\n $(cb.parentElement.parentElement).removeClass(\"state-selected\");\r\n }\r\n },\r\n confirmedDeleteUser: function (e) {\r\n const selectedIds = [window.User.Id];\r\n const _this = this;\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: '/Settings/ManageUsers/Delete',\r\n data: JSON.stringify({\r\n userIds: selectedIds\r\n }),\r\n contentType: \"application/json\",\r\n dataType: 'json',\r\n success: function (data) {\r\n $('#useroverview-delete-user').modal('hide');\r\n\r\n if (!data.success) {\r\n _this.addAlert({\r\n \"message\": data.data,\r\n \"isSuccess\": false\r\n });\r\n } else {\r\n _this.refreshGrid();\r\n }\r\n }\r\n });\r\n },\r\n actionbarAddUser: function (e) {\r\n $('#useroverview-add-user').modal('show');\r\n },\r\n actionbarAddRequestUser: function (e) {\r\n $('#useroverview-add-request-user').modal('show');\r\n },\r\n actionbarApprovalUsers: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const selected = grid.dataSource.data().filter(i => i.selected);\r\n if (selected) {\r\n this.selectedUsers = selected;\r\n this.userCount = selected.length;\r\n $('#useroverview-approval-users').modal('show');\r\n }\r\n },\r\n showEditModal: function (e) {\r\n $('#useroverview-edit-user').modal('show');\r\n },\r\n actionbarDeleteUser: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const selectedItems = grid.dataSource.data().filter(i => i.selected);\r\n if (selectedItems.length >= 1) {\r\n $('#useroverview-delete-user').modal('show');\r\n } else {\r\n alert('Please select one or more users\\'s to delete');\r\n }\r\n },\r\n save: function (event) {\r\n this.alert = \"\";\r\n const _this = this;\r\n },\r\n gridOnDatabound: function (e) {\r\n const data = e.sender.dataSource.data();\r\n const grid = this.$refs.grid.kendoWidget();\r\n \r\n const _this = this;\r\n\r\n if (!_this.EditAndRemoveAllowed) {\r\n return;\r\n }\r\n\r\n grid.element.on('dblclick', 'tbody tr[data-uid]',\r\n function (e) {\r\n e.preventDefault();\r\n const user = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n\r\n _this.EditModel = {\r\n ..._this.EditModel,\r\n userId: user.id,\r\n roleId: user.roleId,\r\n status: user.status,\r\n modifiedOn: user.modifiedon,\r\n approvalRemark: user.approvalRemark\r\n };\r\n\r\n _this.$refs.edituser.show(_this.EditModel); \r\n });\r\n\r\n //actionview handlers:\r\n grid.element.on('click', '.anchor-remove',\r\n function (e) {\r\n e.preventDefault();\r\n const user = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n\r\n window.User = {\r\n Id: user.id,\r\n firstName: user.name,\r\n lastName: user.lastname,\r\n Mail: user.email\r\n };\r\n $('#useroverview-delete-user').modal('show');\r\n });\r\n grid.element.on('click', '.anchor-edit',\r\n function (e) {\r\n e.preventDefault();\r\n\r\n const user = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n\r\n _this.EditModel = {\r\n ..._this.EditModel,\r\n userId: user.id,\r\n roleId: user.roleId,\r\n status: user.status,\r\n modifiedOn: user.modifiedon,\r\n approvalRemark: user.approvalRemark\r\n };\r\n\r\n _this.$refs.edituser.show(_this.EditModel); \r\n });\r\n\r\n this.addTooltip(grid);\r\n },\r\n selectOnChange: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const selected = grid.dataSource.data().filter(i => i.selected);\r\n \r\n const selectAll = document.getElementById('actionbarSelectAll');\r\n if (selectAll) {\r\n if (selectAll.checked && selected.length < grid.tbody[0].rows.length) {\r\n selectAll.checked = false;\r\n }\r\n \r\n const approvalUsersButton = this.findActionBarButton(\"ab-approval-users\");\r\n if (approvalUsersButton != null) {\r\n approvalUsersButton.enabled = selected.length >= 1 && selected.every(i => i.approveUserAllowed);\r\n }\r\n }\r\n },\r\n findActionBarButton: function (event) {\r\n return this.actionbar.ItemsRight.find(f => f.event === event) ? this.actionbar.ItemsRight.find(f => f.event === event) : this.actionbar.ItemsLeft.find(f => f.event === event);\r\n }\r\n }\r\n });\r\n $('.k-header').dblclick(function (e) {\r\n if (e.offsetY > $(this).outerHeight() - 2) {\r\n this.width = getTextWidth(this.textContent, this.font);\r\n //get column number\r\n const colNr = this.getAttribute(\"data-index\");\r\n //select column\r\n //add search in class k-grid-content\r\n const gridCols = document.getElementById(\"user-overview-grid\").getElementsByClassName(\"k-grid-content\")[0].querySelector(\"colgroup\").childNodes;\r\n gridCols[colNr].width = $(this).outerWidth();\r\n }\r\n })\r\n\r\n function getTextWidth(text, font) {\r\n // re-use canvas object for better performance\r\n const canvas = getTextWidth.canvas || (getTextWidth.canvas = document.createElement(\"canvas\"));\r\n const context = canvas.getContext(\"2d\");\r\n context.font = font;\r\n const metrics = context.measureText(text);\r\n //add space for the filter and arroww\r\n const tableIcons = 80;\r\n const total = metrics.width + tableIcons;\r\n return total;\r\n }\r\n const pageSizeDropDownList = document.getElementsByClassName('k-pager-sizes')[0].querySelector(\"[data-role=dropdownlist]\");\r\n pageSizeDropDownList.onchange = function () {\r\n sessionStorage.setItem(pagesizesession, this.value);\r\n };\r\n}","import Vue from 'vue'\r\nif (document.getElementById('dropdown-user')) {\r\n\r\n let timer = 0;\r\n\r\n new Vue({\r\n el: '#dropdown-user',\r\n components: {},\r\n data: function () {\r\n return {\r\n topViewModel: {\r\n activeAccountId: window.topViewModel.activeAccountId,\r\n accounts: window.topViewModel.accounts\r\n },\r\n accountOptions: [...topViewModel.accounts],\r\n openPanel: false\r\n }\r\n }, \r\n methods: {\r\n filterAccount: function(event){\r\n window.clearTimeout (timer);\r\n timer = window.setTimeout(() => {\r\n const matchingAccounts = this.topViewModel.accounts.filter(account => account.Name.toLowerCase().includes(event.target.value.toLowerCase()))\r\n this.accountOptions = matchingAccounts;\r\n this.openPanel = true;\r\n }, 250); \r\n }\r\n }\r\n }); \r\n}\r\n","import Vue from 'vue'\r\nimport VeeValidate from \"vee-validate\"\r\n\r\nif (document.getElementById('navbar-menu')) {\r\n require('../RedirectModal/SelectCountry.js');\r\n\r\n Vue.use(VeeValidate);\r\n\r\n new Vue({\r\n el: '#navbar-menu',\r\n components: {},\r\n data: {\r\n SelectCountryModel: {\r\n title: 'Contact us',\r\n elementId: 'navbar-menu--select-country',\r\n hrefsProp: 'contactUs',\r\n // Note: id prop equals index in allCountries array\r\n allCountries: [\r\n {\r\n id: 0,\r\n name: 'United States',\r\n hrefs: {\r\n contactUs: 'https://www.lesseedirect.com/contact-us'\r\n }\r\n },\r\n {\r\n id: 1,\r\n name: 'Other Countries',\r\n hrefs: {\r\n contactUs: 'https://www.dllgroup.com/en?uc=1'\r\n }\r\n }\r\n ],\r\n countryId: -1\r\n }\r\n },\r\n methods: {\r\n showSelectCountry: function () {\r\n $(\"#navbar-menu--select-country\").modal('show');\r\n }\r\n }\r\n }); \r\n}\r\n","import Vue from 'vue'\r\nimport DatePicker from 'vue2-datepicker'\r\nimport axios from \"axios\"\r\nimport { ReadingTypes } from './ReadingTypes.js'\r\n\r\nmodule.export = Vue.component('addMeterReadingModal',\r\n {\r\n name: 'addMeterReadingModal',\r\n props: {\r\n asset: Object,\r\n enabledTypes: Array,\r\n sourceSystem: String,\r\n active: Boolean\r\n },\r\n components: {\r\n DatePicker\r\n },\r\n data: function () {\r\n return {\r\n alerts: [],\r\n relatedAsset: this.asset,\r\n lastReadingValue: \"-\",\r\n formData: new FormData(),\r\n selectedImage: null,\r\n newItem: {\r\n Date: null,\r\n Type: null,\r\n Value: null,\r\n Image: null\r\n },\r\n types: Object.assign([], this.enabledTypes.sort(x => x.displayName)),\r\n isSaved: false,\r\n isUploading: undefined,\r\n source: this.sourceSystem\r\n };\r\n },\r\n watch: {\r\n 'asset': function (newValue) {\r\n this.relatedAsset = newValue;\r\n },\r\n 'enabledTypes': function (newValue) {\r\n if (this.types.length === 0 && newValue.length > 0) {\r\n this.types = Object.assign([], newValue.sort(x => x.displayName));\r\n }\r\n },\r\n 'sourceSystem': function (newValue) {\r\n if (newValue) {\r\n this.source = newValue;\r\n }\r\n },\r\n 'active': function (newValue) {\r\n if (newValue) {\r\n this.relatedAsset = this.asset;\r\n this.determineLastReadingValue();\r\n }\r\n }\r\n },\r\n mounted: function () {\r\n this.determineLastReadingValue();\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n determineLastReadingValue: function () {\r\n if (this.relatedAsset && this.relatedAsset.MeterReadings.Values.length > 0) {\r\n const sortedReadings = this.relatedAsset.MeterReadings.Values.sort((a, b) => {\r\n return new Date(b.Date) - new Date(a.Date);\r\n });\r\n const readingValue = sortedReadings[0];\r\n\r\n if (readingValue) {\r\n let formattedReadingValue = \"\";\r\n const readingType = ReadingTypes.get(readingValue.Type);\r\n\r\n if (readingType.prefix && readingType.prefix.length > 0)\r\n formattedReadingValue = readingType.prefix + \" \";\r\n\r\n formattedReadingValue += readingValue.Value;\r\n\r\n if (readingType.suffix && readingType.suffix.length > 0)\r\n formattedReadingValue += \" \" + readingType.suffix;\r\n\r\n this.lastReadingValue = formattedReadingValue;\r\n }\r\n }\r\n },\r\n resetForm: function () {\r\n this.formData = new FormData();\r\n this.lastReadingValue = \"-\";\r\n this.newItem = {\r\n Date: null,\r\n Type: null,\r\n Value: null,\r\n Attachment: null\r\n };\r\n this.clearAlert();\r\n this.isSaved = false;\r\n this.isUploading = undefined;\r\n const form = document.getElementById(\"addForm\");\r\n this.errors.clear();\r\n form.reset();\r\n this.$validator.reset();\r\n },\r\n validateBeforeSubmit: function (event) {\r\n this.$validator.validateAll().then((result) => {\r\n if (result) {\r\n $(\"#saveButton\").prop(\"disabled\", true);\r\n this.isUploading = true;\r\n\r\n this.formData.set(\"assetId\", this.relatedAsset.Id);\r\n this.formData.set(\"type\", this.newItem.Type);\r\n this.formData.set(\"date\", this.newItem.Date);\r\n this.formData.set(\"value\", this.newItem.Value);\r\n this.formData.set(\"sourceSystem\", this.source);\r\n\r\n axios.post('/MeterReadings/Add',\r\n this.formData,\r\n {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n }).then((response) => {\r\n this.isUploading = false;\r\n if (response.data.success) {\r\n this.isSaved = true;\r\n $(\"#saveButton\").prop(\"disabled\", false)\r\n $('#asset-details--add-meter-reading').modal('hide');\r\n this.$emit('meter-reading-added', \"Reading was registered successfully\", \"ADDED\", Object.assign({}, this.newItem));\r\n this.$emit('modal-closed');\r\n this.resetForm();\r\n } else {\r\n this.addAlert(\r\n {\r\n \"message\": `Could not add meter reading: ${response.data.data}`,\r\n \"isSuccess\": false\r\n });\r\n }\r\n }).catch(error => {\r\n this.isUploading = false;\r\n $(\"#saveButton\").prop(\"disabled\", false)\r\n console.error(error);\r\n this.isSaved = false;\r\n if (error.message === 'Network Error') {\r\n this.addAlert(\r\n {\r\n \"message\": 'Uploading and scanning file took longer than expected. Please refresh page to see if upload was successful',\r\n \"isSuccess\": false\r\n });\r\n } else {\r\n this.addAlert(\r\n {\r\n \"message\": 'Could not add document due to a server error',\r\n \"isSuccess\": false\r\n });\r\n }\r\n });\r\n return;\r\n } else {\r\n this.addAlert(\r\n {\r\n \"message\": 'Some fields in the form are invalid',\r\n \"isSuccess\": false\r\n });\r\n }\r\n });\r\n },\r\n imageChanged: function (e) {\r\n if (e.target.files.length === 1) {\r\n const selectedFile = e.target.files[0];\r\n this.newItem.Attachment = selectedFile;\r\n\r\n this.formData.set(\"file\", this.newItem.Attachment, this.newItem.Attachment.name)\r\n }\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.resetForm();\r\n $('#asset-details--add-meter-reading').modal('hide');\r\n this.$emit('modal-closed');\r\n },\r\n }\r\n });","import Vue from 'vue'\r\nimport VeeValidate from \"vee-validate\"\r\nimport DatePicker from 'vue2-datepicker'\r\nimport 'vue2-datepicker/index.css'\r\nimport { ReadingTypes } from './ReadingTypes.js'\r\nimport axios from \"axios\"\r\n\r\nif (document.getElementById('add-meter-reading-mobile')) {\r\n Vue.use(VeeValidate);\r\n\r\n new Vue({\r\n el: '#add-meter-reading-mobile',\r\n components: {\r\n DatePicker\r\n },\r\n data: function () {\r\n return {\r\n relatedAsset: window.detailModel,\r\n lastReadingValue: \"-\",\r\n formData: new FormData(),\r\n newItem: {\r\n date: new Date().toISOString().split('T')[0],\r\n type: null,\r\n value: null,\r\n image: null\r\n },\r\n types: ReadingTypes.getAll().sort(x => x.displayName),\r\n selectedImage: null,\r\n isSaved: false,\r\n error: null,\r\n sourceSystem: window.detailModel.MeterReadings.CurrentSourceSystem\r\n };\r\n },\r\n mounted: function () {\r\n ReadingTypes.load(window.detailModel.MeterReadings.Attributes);\r\n this.types = ReadingTypes.getAll().sort(x => x.displayName);\r\n\r\n if (this.relatedAsset.MeterReadings.Values.length > 0) {\r\n const sortedReadings = this.relatedAsset.MeterReadings.Values.sort((a, b) => {\r\n return new Date(b.Date) - new Date(a.Date);\r\n });\r\n const readingValue = sortedReadings[0];\r\n\r\n if (readingValue) {\r\n let formattedReadingValue = \"\";\r\n const readingType = ReadingTypes.get(readingValue.Type);\r\n\r\n if (readingType.prefix && readingType.prefix.length > 0)\r\n formattedReadingValue = readingType.prefix + \" \";\r\n\r\n formattedReadingValue += readingValue.Value;\r\n\r\n if (readingType.suffix && readingType.suffix.length > 0)\r\n formattedReadingValue += \" \" + readingType.suffix;\r\n\r\n this.lastReadingValue = formattedReadingValue;\r\n }\r\n }\r\n },\r\n methods: {\r\n validateBeforeSubmit: function (event) {\r\n this.$validator.validateAll().then((result) => {\r\n if (result) {\r\n $(\"#saveButton\").prop(\"disabled\", true);\r\n\r\n this.formData.set(\"assetId\", this.relatedAsset.Id);\r\n this.formData.set(\"type\", this.newItem.type);\r\n this.formData.set(\"date\", this.newItem.date);\r\n this.formData.set(\"value\", this.newItem.value);\r\n this.formData.set(\"sourceSystem\", this.sourceSystem);\r\n\r\n axios.post('/MeterReadings/Add',\r\n this.formData,\r\n {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n }).then(() => {\r\n this.isSaved = true;\r\n this.newItem = {\r\n date: null,\r\n type: null,\r\n value: null,\r\n image: null\r\n };\r\n this.lastReadingValue = \"-\";\r\n this.formData = new FormData();\r\n this.error = null;\r\n }).catch(error => {\r\n $(\"#saveButton\").prop(\"disabled\", false)\r\n console.error(error);\r\n this.isSaved = false;\r\n this.error = JSON.stringify(error);\r\n });\r\n return;\r\n }\r\n });\r\n },\r\n imageChanged: function (e) {\r\n if (e.target.files.length === 1) {\r\n const selectedFile = e.target.files[0];\r\n this.selectedImage = selectedFile;\r\n\r\n this.formData.set(\"file\", this.selectedImage, this.selectedImage.name)\r\n }\r\n }\r\n }\r\n });\r\n}","import Vue from 'vue'\r\nimport axios from \"axios\"\r\n\r\nmodule.export = Vue.component('deleteMeterReadingModal',\r\n {\r\n name: 'deleteMeterReadingModal',\r\n props: {\r\n item: Object\r\n },\r\n data: function () {\r\n return {\r\n alerts: [],\r\n formData: new FormData(),\r\n currentItem: {},\r\n Comments: '',\r\n isDeleted: false\r\n }\r\n },\r\n components: {},\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n resetForm: function () {\r\n this.currentItem = {};\r\n this.formData = new FormData();\r\n this.Comments = \"\";\r\n this.clearAlert();\r\n },\r\n validateBeforeSubmit: function (event) {\r\n this.$validator.validateAll().then((result) => {\r\n if (result) {\r\n $(\"#deleteButton\").prop(\"disabled\", true);\r\n\r\n this.formData.set(\"meterReadingId\", this.currentItem.Id);\r\n this.formData.set(\"comments\", this.Comments);\r\n\r\n axios.post('/MeterReadings/Delete', this.formData, {})\r\n .then((response) => {\r\n if (response.data.success) {\r\n this.isDeleted = true;\r\n\r\n $(\"#deleteButton\").prop(\"disabled\", false);\r\n $('#asset-details--delete-meter-reading').modal('hide');\r\n this.$emit('meter-reading-deleted', \"Reading was deleted successfully\", \"DELETED\", Object.assign({}, this.currentItem));\r\n this.resetForm();\r\n } else {\r\n this.addAlert(\r\n {\r\n \"message\": `Could not delete meter reading: ${response.data.data}`,\r\n \"isSuccess\": false\r\n });\r\n }\r\n }).catch(error => {\r\n $(\"#deleteButton\").prop(\"disabled\", false)\r\n console.error(error);\r\n this.isDeleted = false;\r\n this.addAlert( \r\n {\r\n \"message\": 'Could not delete meter reading due to a server error',\r\n \"isSuccess\": false\r\n });\r\n });\r\n return;\r\n }\r\n });\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.resetForm();\r\n $('#asset-details--delete-meter-reading').modal('hide');\r\n },\r\n },\r\n watch: {\r\n 'item': function (newValue) {\r\n this.currentItem = newValue;\r\n }\r\n }\r\n });","import Vue from 'vue'\r\nimport DatePicker from 'vue2-datepicker'\r\nimport axios from \"axios\"\r\n\r\nmodule.export = Vue.component('editMeterReadingModal',\r\n {\r\n name: 'editMeterReadingModal',\r\n props: {\r\n item: Object,\r\n enabledTypes: Array\r\n },\r\n components: {\r\n DatePicker\r\n },\r\n data: function () {\r\n return {\r\n alerts: [],\r\n currentItem: {},\r\n imageUrl: '',\r\n formData: new FormData(),\r\n Comments: '',\r\n types: Object.assign([], this.enabledTypes.sort(x => x.displayName)),\r\n isUploading: undefined,\r\n isSaved: false\r\n };\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n resetForm: function () {\r\n this.formData = new FormData();\r\n this.lastReadingValue = \"-\";\r\n this.currentItem = {\r\n Date: null,\r\n Type: null,\r\n Value: null,\r\n Attachment: null\r\n };\r\n this.imageUrl = '';\r\n this.clearAlert();\r\n this.Comments = '';\r\n this.isSaved = false;\r\n this.isUploading = undefined;\r\n const form = document.getElementById(\"editForm\");\r\n form.reset();\r\n },\r\n validateBeforeSubmit: function (event) {\r\n this.$validator.validateAll().then((result) => {\r\n if (result) {\r\n $(\"#saveButton\").prop(\"disabled\", true);\r\n this.isUploading = true;\r\n\r\n this.formData.set(\"meterReadingId\", this.currentItem.Id);\r\n this.formData.set(\"type\", this.currentItem.Type);\r\n this.formData.set(\"date\", this.currentItem.Date);\r\n this.formData.set(\"value\", this.currentItem.Value);\r\n this.formData.set(\"comments\", this.Comments);\r\n\r\n axios.post('/MeterReadings/Edit',\r\n this.formData,\r\n {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n }).then((response) => {\r\n this.isUploading = false;\r\n if (response.data.success) {\r\n this.isSaved = true;\r\n $(\"#saveButton\").prop(\"disabled\", false)\r\n $('#asset-details--edit-meter-reading').modal('hide');\r\n this.$emit('meter-reading-updated', \"Reading was saved successfully\", \"UPDATED\", Object.assign({}, this.currentItem));\r\n this.resetForm();\r\n } else {\r\n this.addAlert(\r\n {\r\n \"message\": `Could not edit meter reading: ${response.data.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n }).catch(error => {\r\n this.isUploading = false;\r\n $(\"#saveButton\").prop(\"disabled\", false)\r\n console.error(error);\r\n this.isSaved = false;\r\n if (error.message === 'Network Error') {\r\n this.addAlert(\r\n {\r\n \"message\": 'Uploading and scanning file took longer than expected. Please refresh page to see if upload was successful',\r\n \"isSuccess\": false\r\n });\r\n } else {\r\n this.addAlert(\r\n {\r\n \"message\": 'Could not add document due to a server error',\r\n \"isSuccess\": false\r\n });\r\n }\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n });\r\n return;\r\n } else {\r\n this.addAlert(\r\n {\r\n \"message\": 'Some fields in the form are invalid',\r\n \"isSuccess\": false\r\n });\r\n }\r\n });\r\n },\r\n chooseFile: function () {\r\n const uploadControl = document.getElementById(\"imageUploadForEdit\");\r\n\r\n if (uploadControl) {\r\n uploadControl.click();\r\n }\r\n },\r\n imageChanged: function (e) {\r\n if (e.target.files.length === 1) {\r\n const selectedFile = e.target.files[0];\r\n this.currentItem.Attachment = selectedFile;\r\n this.imageUrl = URL.createObjectURL(selectedFile);\r\n\r\n this.formData.set(\"file\", this.currentItem.Attachment, this.currentItem.Attachment.name)\r\n }\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.resetForm();\r\n $('#asset-details--edit-meter-reading').modal('hide');\r\n },\r\n },\r\n watch: {\r\n 'item': function (newValue) {\r\n this.currentItem = Object.assign({}, newValue);\r\n\r\n if (this.currentItem.Attachment) {\r\n this.imageUrl = this.currentItem.Attachment.Url;\r\n }\r\n else {\r\n this.imageUrl = '';\r\n }\r\n }\r\n }\r\n });","export const ReadingTypes = function () {\r\n let _configuredTypes = [];\r\n\r\n const _load = function (types) {\r\n _configuredTypes = types.map((x, index) => {\r\n return {\r\n id: index,\r\n displayName: x.Name,\r\n dataType: x.UnitType.DataType,\r\n prefix: x.UnitType.Prefix,\r\n suffix: x.UnitType.Suffix\r\n }\r\n })\r\n }\r\n\r\n const _get = function (name) {\r\n const index = _configuredTypes.map(x => x.displayName).indexOf(name);\r\n\r\n if (index >= 0) {\r\n return _configuredTypes[index];\r\n }\r\n\r\n return {\r\n id: -1,\r\n displayName: \"-\",\r\n dataType: undefined,\r\n prefix: undefined,\r\n suffix: undefined\r\n };\r\n }\r\n\r\n const _getAll = function () {\r\n return _configuredTypes;\r\n }\r\n\r\n return {\r\n load: _load,\r\n get: _get,\r\n getAll: _getAll\r\n }\r\n}();","import Vue from 'vue'\r\nimport { formatDateTimeToDate } from '../Shared/date-utils';\r\n\r\nmodule.export = Vue.component('viewMeterReadingModal',\r\n {\r\n name: 'viewMeterReadingModal',\r\n props: {\r\n item: Object\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n currentItem: {},\r\n };\r\n },\r\n methods: {\r\n formattedDate: function (date) {\r\n if (!date)\r\n return;\r\n\r\n let parsedDate = date;\r\n if (parsedDate.indexOf(\"/Date(\") !== -1) {\r\n parsedDate = new Date(parseInt(date.replace(/\\/Date\\((.*?)\\)\\//gi, \"$1\")));\r\n }\r\n return formatDateTimeToDate(parsedDate);\r\n\r\n },\r\n close: function () {\r\n this.currentItem = {};\r\n $('#asset-details--view-meter-reading').modal('hide');\r\n },\r\n },\r\n watch: {\r\n 'item': function (newValue) {\r\n this.currentItem = newValue;\r\n }\r\n }\r\n });","import Vue from 'vue'\r\nimport DatePicker from 'vue2-datepicker'\r\nimport 'vue2-datepicker/index.css'\r\nimport { fetchJson } from '../Shared/request-utils'\r\n\r\nmodule.export = Vue.component('nonleasedassetadd',\r\n {\r\n components: {\r\n DatePicker\r\n },\r\n name: \"nonleasedassetadd\",\r\n props: {\r\n AddModel: Object\r\n },\r\n data: function () {\r\n return {\r\n alerts: [],\r\n selectedType: null,\r\n dataSource: null,\r\n searchText: null,\r\n Model: Object.assign({}, this.AddModel), //create deep a copy of the object,\r\n formData: {\r\n InvoiceLocation: {},\r\n AssetLocation: {}\r\n }\r\n };\r\n },\r\n mounted: function() {\r\n const _this = this;\r\n const $assetTypeSelector = $(\"#assetTypeSelectorForAdd\");\r\n\r\n _this.dataSource = new kendo.data.DataSource({\r\n serverFiltering: true,\r\n transport: {\r\n read: function (options) {\r\n fetchJson('/NonLeasedAssets/GetAssetTypesForAdd')\r\n .then(\r\n (result) => {\r\n options.success(result);\r\n },\r\n (error) => {\r\n console.error(error);\r\n });\r\n }\r\n },\r\n });\r\n\r\n $assetTypeSelector.kendoDropDownList({\r\n filter: true,\r\n placeholder: \"Search for asset type\",\r\n autoBind: false,\r\n enforceMinLength: true,\r\n dataSource: _this.dataSource,\r\n dataTextField: \"Name\",\r\n dataValueField: \"Id\",\r\n index: -1,\r\n template: ({ Name, MasterAssetTypeName }) => Name + ' (' + MasterAssetTypeName + ')',\r\n valueTemplate: () => _this.selectedType.Name + ' (' + _this.selectedType.MasterAssetTypeName + ')',\r\n select: (e) => {\r\n const convertArray = (items) => {\r\n if (items.length > 0){\r\n return items.slice(0, items.length)\r\n }\r\n\r\n return [];\r\n }\r\n\r\n _this.selectedType = {\r\n Id: e.dataItem.Id,\r\n MasterAssetTypeName: e.dataItem.MasterAssetTypeName,\r\n Name: e.dataItem.Name,\r\n Fields: convertArray(e.dataItem.Fields).map((field => ({...field, Value: undefined}))),\r\n RequiredGeneralFields: convertArray(e.dataItem.RequiredGeneralFields).map((field => ({...field, Value: undefined})))\r\n }; \r\n }\r\n });\r\n\r\n $(\"#assetTypeSelectorForAdd-list .k-textbox\").attr(\"placeholder\", \"Search for asset type\"); \r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n autoFormat: function (evt) {\r\n if (evt && evt.target && evt.target.value) {\r\n\r\n if (evt.target.value.indexOf(\",\") > 0) {\r\n const matchingField = this.AddModel.AssetTypeFields.Value.find(x => x.Name === evt.target.name);\r\n\r\n if (matchingField) {\r\n matchingField.Value = evt.target.value.replaceAll(\",\", \".\");\r\n\r\n this.$validator.validate(evt.target.name, matchingField.Value).then((result) => {\r\n if (result) {\r\n const validatedField = this.$validator.fields.find({\r\n name: evt.target.name\r\n });\r\n\r\n this.$validator.reset(validatedField);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n },\r\n show: function () {\r\n this.selectedType = undefined;\r\n $('#nonleased-asset-add-modal').modal('show');\r\n },\r\n save: function() {\r\n document.getElementById('formboxes').scrollTop = 0;\r\n this.$validator.validateAll().then((result) => {\r\n this.clearAlert();\r\n if (result) {\r\n const _this = this;\r\n const mdl = _this.formData;\r\n mdl[\"AssetTypeFields\"] = _this.selectedType.Fields.reduce(function (accumulator, current) {\r\n const name = current[\"Name\"];\r\n const value = current[\"Value\"];\r\n\r\n accumulator[name] = value;\r\n return accumulator;\r\n },\r\n {} /* Empty object, as initial value */);\r\n\r\n mdl[\"assetType\"] = _this.selectedType.Id;\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: '/NonLeasedAssets/Add',\r\n data: JSON.stringify(mdl),\r\n success: function (data) {\r\n if (data.success) {\r\n _this.selectedType = null;\r\n _this.formData = {\r\n InvoiceLocation: {},\r\n AssetLocation: {}\r\n };\r\n _this.addAlert(\r\n {\r\n \"message\": 'Successfully added asset',\r\n \"isSuccess\": true\r\n });\r\n }\r\n else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not add asset: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not add asset due to a server error',\r\n \"isSuccess\": false\r\n });\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n return;\r\n } else {\r\n this.addAlert(\r\n {\r\n \"message\": 'Some fields in the form are invalid',\r\n \"isSuccess\": false\r\n });\r\n }\r\n });\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.selectedType = null;\r\n this.clearAlert();\r\n this.formData = {\r\n InvoiceLocation: {},\r\n AssetLocation: {}\r\n }\r\n $('#nonleased-asset-add-modal').modal('hide');\r\n\r\n // Enable save button again.\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n }\r\n });\r\n","import Vue from 'vue'\r\nimport DatePicker from 'vue2-datepicker'\r\nimport { splitToParts } from '../Shared/request-utils'\r\nimport 'vue2-datepicker/index.css'\r\n\r\nmodule.export = Vue.component('nonleasedassetsbulkedit',\r\n {\r\n name: \"nonleasedassetsbulkedit\",\r\n props: {\r\n selectedAssets: Array,\r\n assetsShouldBeExcluded: Boolean,\r\n assetCount: Number,\r\n assetFilter: Object\r\n },\r\n components: {\r\n DatePicker\r\n },\r\n data: function () {\r\n return {\r\n alerts: [],\r\n ShowConfirmation: false,\r\n ShowFeedback: false,\r\n bulkUpdateLocation: '',\r\n bulkUpdateNotification: '',\r\n bulkUpdateProgressPercentage: 0,\r\n visibleAssetTypeFields: [],\r\n Items: {\r\n Assets: {},\r\n AgreementNumber: { HasChanged: false },\r\n AgreementLine: { HasChanged: false },\r\n AssetStatusCustomer: { HasChanged: false },\r\n AssetModel: { HasChanged: false },\r\n CustomerReference: { HasChanged: false },\r\n OrderNumber: { HasChanged: false },\r\n InvoiceLocationStreet: { HasChanged: false },\r\n InvoiceLocationCity: { HasChanged: false },\r\n InvoiceLocationCountry: { HasChanged: false },\r\n AssetLocationStreet: { HasChanged: false },\r\n AssetLocationCity: { HasChanged: false },\r\n AssetLocationCountry: { HasChanged: false },\r\n ExtensionRent: { HasChanged: false },\r\n ExtensionDate: { HasChanged: false },\r\n AgreementTerminationDate: { HasChanged: false },\r\n CustomerGuaranteedResidualValue: { HasChanged: false },\r\n Price: { HasChanged: false },\r\n BillingAmount: { HasChanged: false },\r\n StartDate: { HasChanged: false },\r\n EndDate: { HasChanged: false },\r\n Currency: { HasChanged: false },\r\n ProductSku: { HasChanged: false },\r\n ManufactureNumber: { HasChanged: false },\r\n SerialNumber: { HasChanged: false },\r\n Brand: { HasChanged: false },\r\n ProductName: { HasChanged: false },\r\n User: { HasChanged: false },\r\n MainCostCenter: { HasChanged: false },\r\n CostCenter: { HasChanged: false },\r\n DealerContactPerson: { HasChanged: false },\r\n Insurance: { HasChanged: false },\r\n Note: { HasChanged: false },\r\n AssetTypeFields: []\r\n },\r\n InitalItems:{}\r\n };\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n validateBeforeSubmit: function () {\r\n this.$validator.validateAll().then((result) => {\r\n if (result) {\r\n const vueObject = this;\r\n this.ShowConfirmation = true;\r\n }\r\n });\r\n },\r\n hideConfirmBulkEditAsset: function () {\r\n const vueObject = this;\r\n vueObject.ShowConfirmation = false;\r\n },\r\n confirmedBulkEditAsset: function (e) {\r\n e.preventDefault();\r\n const vueObject = this;\r\n if (!this.assetsShouldBeExcluded) {\r\n this.Items.Assets = this.selectedAssets.map((a) => ({\r\n id: a.id,\r\n assetTypeId: a.assetTypeId\r\n }));\r\n \r\n $(\"#saveButton\").prop(\"disabled\", true);\r\n const bulksize = 250;\r\n const assetsInParts = splitToParts(this.Items.Assets, bulksize);\r\n\r\n for (let i = 0; i < assetsInParts.length; i++) {\r\n setTimeout(() => {\r\n const items = JSON.parse(JSON.stringify(vueObject.Items));\r\n items.Assets = items.Assets.slice(i * 250, (i + 1) * 250);\r\n items.AssetTypeFields = vueObject.visibleAssetTypeFields.map(a => ({\r\n Name: a.Name,\r\n Value: a.Value,\r\n HasChanged: a.HasChanged\r\n }));\r\n this.bulkUpdateNonLeasedAssets(vueObject, items).then((response) => {\r\n if (response.success) {\r\n vueObject.bulkUpdateLocation = response.location;\r\n vueObject.ShowFeedback = true;\r\n vueObject.ShowConfirmation = false;\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not bulk edit asset(s): ${response.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n } \r\n },\r\n (error) => {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not bulk edit asset(s) due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n });\r\n }, 200);\r\n }\r\n } else {\r\n vueObject.ShowConfirmation = false;\r\n this.fetchPagedAssetIds().then((response) => {\r\n this.builkUpdateLeasedAssetsFromResponseRecursively(vueObject, response);\r\n },\r\n (error) => {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not bulk edit asset(s) due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n });\r\n }\r\n },\r\n bulkUpdateNonLeasedAssets: function (vueObject, items) {\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n type: 'POST',\r\n url: '/BulkEdit/BulkUpdateNonLeasedAssets',\r\n data: JSON.stringify(items),\r\n success: function (response) {\r\n resolve(response);\r\n },\r\n error: function (error) {\r\n reject(error);\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n });\r\n },\r\n fetchPagedAssetIds: function (pageToken) {\r\n return new Promise((resolve, reject) => { \r\n $.ajax({\r\n type: 'POST',\r\n url: '/NonLeasedAssets/QueryIds',\r\n data: JSON.stringify(({ \r\n token: pageToken,\r\n limit: 250,\r\n filter: this.assetFilter\r\n })),\r\n success: function (response) {\r\n resolve(response);\r\n },\r\n error: function (error) {\r\n reject(error);\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n });\r\n },\r\n builkUpdateLeasedAssetsFromResponseRecursively: function (vueObject, response) {\r\n if (response) {\r\n const token = response.pageToken;\r\n const items = JSON.parse(JSON.stringify(vueObject.Items));\r\n items.Assets = response.items.filter(a => !this.selectedAssets.some(a2 => a2.id === a.id)).map((a) => ({\r\n id: a.id,\r\n assetTypeId: a.assetTypeDefinitionId\r\n }));\r\n items.AssetTypeFields = vueObject.visibleAssetTypeFields.map(a => ({\r\n Name: a.Name,\r\n Value: a.Value,\r\n HasChanged: a.HasChanged\r\n }));\r\n this.bulkUpdateNonLeasedAssets(vueObject, items).then((bulkEditResponse) => {\r\n if (bulkEditResponse.success) {\r\n vueObject.ShowConfirmation = false;\r\n vueObject.ShowFeedback = true;\r\n vueObject.bulkUpdateLocation = bulkEditResponse.location;\r\n } else {\r\n vueObject.ShowError = true;\r\n }\r\n if (token) {\r\n this.fetchPagedAssetIds(token).then((response) => {\r\n this.builkUpdateLeasedAssetsFromResponseRecursively(vueObject, response);\r\n },\r\n (error) => {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not bulk edit asset(s) due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }); \r\n } \r\n },\r\n (error) => {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not bulk edit asset(s) due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n });\r\n }\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.bulkUpdateNotification = '';\r\n this.bulkUpdateProgressPercentage = 0; \r\n this.ShowFeedback = false;\r\n this.clearAlert();\r\n this.Items = JSON.parse(JSON.stringify(this.InitalItems)); //Properties on the prototype chain and non-enumerable properties cannot be (deep)copied.\r\n\r\n $('#nonleased-assets-bulkedit-modal').modal('hide');\r\n\r\n // Enable save button again.\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n },\r\n getSpecificAssetTypeFields: function (assetTypeIds) {\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n type: 'POST',\r\n url: '/BulkEdit/GetSpecificAssetTypeFields',\r\n data: JSON.stringify(({\r\n assetTypeIds: assetTypeIds\r\n })),\r\n success: function (response) {\r\n resolve(response);\r\n },\r\n error: function (error) {\r\n reject(error);\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n });\r\n },\r\n show: function(selectedAssets) {\r\n const _this = this;\r\n this.InitalItems = JSON.parse(JSON.stringify(this.Items)); //Properties on the prototype chain and non-enumerable properties cannot be (deep)copied.\r\n let assetTypeIds = [...new Set(selectedAssets.filter(a => a.assetStatusDll !== 'Terminated').map(a => a.assetTypeId))];\r\n\r\n this.getSpecificAssetTypeFields(assetTypeIds).then((response) => {\r\n this.visibleAssetTypeFields = response.map(a => ({\r\n Name: a.name,\r\n Type: a.type,\r\n Mandatory: false,\r\n Value: null,\r\n HasChanged: false\r\n }));\r\n $('#nonleased-assets-bulkedit-modal').modal('show');\r\n this.bulkUpdateNotification = '';\r\n this.bulkUpdateProgressPercentage = 0;\r\n const notifications = window.assetNotificationsHub;\r\n notifications.on(\"NotifyBulkUpdateStarted\", function (bulkUpdateId, total) {\r\n if (_this.bulkUpdateLocation.endsWith(bulkUpdateId)) {\r\n _this.bulkUpdateNotification = `Started editing ${total} assets.`;\r\n }\r\n });\r\n notifications.on(\"NotifyBulkUpdateProgress\", function (bulkUpdateId, progress, total) {\r\n if (_this.bulkUpdateLocation.endsWith(bulkUpdateId)) {\r\n _this.bulkUpdateProgressPercentage = parseInt(progress * 100 / total);\r\n }\r\n });\r\n notifications.on(\"NotifyBulkUpdateCompleted\", function (bulkUpdateId, total) {\r\n if (_this.bulkUpdateLocation.endsWith(bulkUpdateId)) {\r\n _this.bulkUpdateNotification = `${total} assets successfully edited!`;\r\n }\r\n }); \r\n });\r\n },\r\n complete: function () {\r\n this.$emit('refresh-data');\r\n this.close();\r\n }\r\n }\r\n });\r\n","import Vue from 'vue'\r\nimport VeeValidate from \"vee-validate\"\r\nimport { formatDateTime, formatDateTimeToDate } from '../Shared/date-utils'\r\nimport { GridInstaller } from '@progress/kendo-grid-vue-wrapper'\r\nimport \"../Shared/Assets/Details.less\"\r\nimport axios from 'axios';\r\nimport { ReadingTypes } from '../MeterReadings/ReadingTypes.js'\r\n\r\nif (document.getElementById('vue-nonleased-asset-details')) {\r\n Vue.use(GridInstaller);\r\n Vue.use(VeeValidate);\r\n Vue.filter('formatDateTime', formatDateTime);\r\n\r\n require(\"../Alerts/Alerts.js\");\r\n require(\"../MeterReadings/Add.js\");\r\n require(\"../MeterReadings/Edit.js\");\r\n require(\"../MeterReadings/View.js\");\r\n require(\"../MeterReadings/Delete.js\");\r\n require(\"../Documents/Assets/Add.js\");\r\n require(\"../Documents/Assets/View.js\");\r\n require(\"../Documents/Assets/Delete.js\");\r\n require(\"../PreviewPhoto/PhotoSelector.js\");\r\n require(\"./Edit.js\");\r\n\r\n ReadingTypes.load(window.detailModel.MeterReadings.Attributes);\r\n new Vue({\r\n el: '#vue-nonleased-asset-details',\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n assetHistoryFilters: null,\r\n assetHistory: null,\r\n historyField: \"All fields\",\r\n detailsViewModel: window.detailModel,\r\n meterReadingsModalActive: false,\r\n EditModel: {\r\n Model: window.detailModel,\r\n ShowError: false\r\n },\r\n MeterReadings: {\r\n selectedItem: null,\r\n dataSource: {\r\n data: window.detailModel.MeterReadings.Values,\r\n pageSize: 10\r\n },\r\n pageable: {\r\n buttonCount: 3,\r\n info: true,\r\n type: 'numeric',\r\n pageSizes: [10, 20, 30, 50],\r\n previousNext: true\r\n },\r\n skip: 0,\r\n take: 20,\r\n columns: [\r\n { 'field': 'Date', 'type': 'date', 'title': 'Meter reading date', 'filterable': false, 'format': '{0:yyyy/MM/dd}' },\r\n { 'field': 'Value', 'type': 'numeric', 'title': 'Meter reading', 'filterable': false },\r\n {\r\n 'field': 'Type',\r\n 'type': 'text',\r\n 'title': 'Meter reading type',\r\n 'filterable': false,\r\n template: function () {\r\n const dataItem = arguments[0];\r\n\r\n return ReadingTypes.get(dataItem.Type).displayName;\r\n }\r\n },\r\n {\r\n 'field': 'Image',\r\n 'title': 'Image',\r\n 'type': 'text',\r\n 'filterable': false,\r\n template: function () {\r\n const dataItem = arguments[0];\r\n if (dataItem && dataItem.Attachment) {\r\n return \"Yes\";\r\n }\r\n\r\n return 'No image';\r\n }\r\n },\r\n {\r\n 'title': ' ',\r\n 'filterable': false,\r\n 'template': [\r\n '',\r\n '',\r\n ''\r\n ].join(''),\r\n 'width': '120px'\r\n }\r\n ],\r\n readingTypes: ReadingTypes.getAll(),\r\n CurrentSourceSystem: window.detailModel.MeterReadings.CurrentSourceSystem\r\n },\r\n Documents: {\r\n selectedItem: null,\r\n dataSource: {\r\n data: window.detailModel.Documents.Values,\r\n pageSize: 10\r\n },\r\n pageable: {\r\n buttonCount: 3,\r\n info: true,\r\n type: 'numeric',\r\n pageSizes: [10, 20, 30, 50],\r\n previousNext: true\r\n },\r\n skip: 0,\r\n take: 20,\r\n columns: [\r\n { 'field': 'Name', 'type': 'text', 'title': 'Name', 'filterable': false },\r\n { 'field': 'Assignment', 'type': 'text', 'title': 'Assignment', 'filterable': false },\r\n { 'field': 'CreationDate', 'type': 'date', 'title': 'Upload date', 'filterable': false, 'format': '{0:yyyy/MM/dd}' },\r\n { 'field': 'Author', 'type': 'text', 'title': 'Uploaded by', 'filterable': false },\r\n { 'field': 'FileType', 'type': 'text', 'title': 'Type', 'filterable': false },\r\n {\r\n 'title': ' ',\r\n 'filterable': false,\r\n 'template': [\r\n '',\r\n '',\r\n ''\r\n ].join(''),\r\n 'width': '120px'\r\n }\r\n ],\r\n CurrentSourceSystem: window.detailModel.Documents.CurrentSourceSystem\r\n },\r\n SelectPreviewPhotoModel: {\r\n selectedPhoto: null,\r\n availablePhotos: []\r\n },\r\n ModalActive: false\r\n };\r\n },\r\n computed: {\r\n filteredAssetHistoryList: function () {\r\n const filterby = this.historyField;\r\n if (filterby == \"All fields\") {\r\n return this.assetHistory;\r\n } else {\r\n const filteredHistory = JSON.parse(JSON.stringify(this.assetHistory));\r\n return filteredHistory.filter(function (historyItem) {\r\n historyItem.changedFields = historyItem.changedFields.filter(function (changedField) {\r\n return changedField.name == filterby;\r\n })\r\n return historyItem.changedFields.length > 0;\r\n });\r\n }\r\n },\r\n assetLocation: function () {\r\n const street = this.detailsViewModel.AssetLocationStreet.Viewable ? this.detailsViewModel.AssetLocationStreet.Value : '';\r\n const city = this.detailsViewModel.AssetLocationCity.Viewable ? this.detailsViewModel.AssetLocationCity.Value : '';\r\n const country = this.detailsViewModel.AssetLocationCountry.Viewable ? this.detailsViewModel.AssetLocationCountry.Value : '';\r\n const text = [street, city, country].filter(Boolean).join(\", \");\r\n return text;\r\n },\r\n invoiceLocation: function () {\r\n const street = this.detailsViewModel.InvoiceLocationStreet.Viewable ? this.detailsViewModel.InvoiceLocationStreet.Value : '';\r\n const city = this.detailsViewModel.InvoiceLocationCity.Viewable ? this.detailsViewModel.InvoiceLocationCity.Value : '';\r\n const country = this.detailsViewModel.InvoiceLocationCountry.Viewable ? this.detailsViewModel.InvoiceLocationCountry.Value : '';\r\n const text = [street, city, country].filter(Boolean).join(\", \");\r\n return text;\r\n },\r\n viewableAssetTypeFieldList() {\r\n const list = this.detailsViewModel.AssetTypeFields.Value.filter(function (e) { return e.Viewable });\r\n return list;\r\n },\r\n viewableComputedFieldList() {\r\n const list = this.detailsViewModel.ComputedFields.Value.filter(function (e) { return e.Viewable });\r\n return list;\r\n }\r\n },\r\n mounted: function () {\r\n const _this = this;\r\n this.getAssetHistory();\r\n if (getUrlParameter('action') === 'edit') {\r\n this.edit();\r\n }\r\n\r\n const updatedModel = Object.assign({}, this.SelectPreviewPhotoModel,\r\n {\r\n availablePhotos: this.detailsViewModel.Documents.Values.filter(function (e) {\r\n return e.FileType.includes(\"Image\") && e.Assignment.includes(\"Asset\");\r\n }),\r\n selectedPhoto: null\r\n });\r\n\r\n const selectedPhotoIndex = updatedModel.availablePhotos.findIndex(v => v.Tags.includes(\"Preview\"));\r\n\r\n if (selectedPhotoIndex >= 0) {\r\n updatedModel.selectedPhoto = updatedModel.availablePhotos[selectedPhotoIndex];\r\n }\r\n\r\n this.SelectPreviewPhotoModel = updatedModel;\r\n\r\n const connection = window.assetNotificationsHub;\r\n connection.on(\"NotifyEdited\", function (assetId) {\r\n if (window.detailModel.Id === assetId) {\r\n _this.addAlert({ \"message\": 'Asset successfuly edited. Page will be refreshed.', \"isSuccess\": true, \"showPopup\": true });\r\n setTimeout(() => window.location.href = window.location.href.replace(\"&action=edit\", \"\"), 2000);\r\n }\r\n }); \r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n edit: function () {\r\n if (!window.detailModel.CanBeEdited || !window.detailModel.AssetTypeExists)\r\n {\r\n return;\r\n }\r\n $('#nonleased-asset-edit-modal').modal('show');\r\n },\r\n addMeterReading: function () {\r\n this.meterReadingsModalActive = true;\r\n $('#asset-details--add-meter-reading').modal('show');\r\n },\r\n meterReadingModalClosedEvent: function () {\r\n this.meterReadingsModalActive = false;\r\n },\r\n\r\n addDocument: function () {\r\n $('#asset-details--add-document').modal('show');\r\n },\r\n synchronizeMeterReadingDataOnViewModel(meterReadings){\r\n let mostRecentEntry = meterReadings.reduce((mostRecent, current) => {\r\n const mostRecentDate = new Date(mostRecent.Date);\r\n const currentDate = new Date(current.Date);\r\n return currentDate > mostRecentDate ? current : mostRecent;\r\n });\r\n\r\n const fieldsToUpdate = {\r\n \"Meter Reading Date\": formatDate(mostRecentEntry.Date),\r\n \"Meter Reading\": mostRecentEntry.Value,\r\n \"Meter Unit Type\": mostRecentEntry.Type\r\n }; \r\n\r\n this.detailsViewModel.AssetTypeFields.Value = this.detailsViewModel.AssetTypeFields.Value.map(field => {\r\n if (fieldsToUpdate.hasOwnProperty(field.Name)) {\r\n const newValue = fieldsToUpdate[field.Name];\r\n return Object.assign({}, field, { Value: newValue });\r\n }\r\n return field;\r\n }); \r\n }, \r\n meterReadingChangedEvent: function (message, eventType, item) {\r\n const _this = this;\r\n\r\n this.addAlert({ \"message\": message, \"isSuccess\": true, \"showPopup\": true });\r\n\r\n const grid = this.$refs.metergrid.kendoWidget();\r\n const currentDatasource = grid.dataSource;\r\n\r\n axios.get(\"/MeterReadings/GetForNonLeasedAsset?assetId=\" + window.detailModel.Id).then(((result) => {\r\n result.data.MeterReadings.Values = result.data.MeterReadings.Values.map((entry) => {\r\n const date = new Date(entry.Date);\r\n return Object.assign({}, entry, { Date: date });\r\n });\r\n\r\n _this.MeterReadings.dataSource.data = result.data.MeterReadings.Values;\r\n _this.detailsViewModel.MeterReadings.Values = result.data.MeterReadings.Values;\r\n\r\n _this.synchronizeMeterReadingDataOnViewModel(result.data.MeterReadings.Values); \r\n\r\n currentDatasource.data(result.data.MeterReadings.Values);\r\n\r\n // Re-sort using the intial storting\r\n currentDatasource.sort(currentDatasource.sort());\r\n grid.setDataSource(currentDatasource);\r\n }));\r\n },\r\n documentChangedEvent: function (message, eventType, item) {\r\n const _this = this;\r\n\r\n this.addAlert({ \"message\": message, \"isSuccess\": true, \"showPopup\": true });\r\n\r\n const grid = this.$refs.documentgrid.kendoWidget();\r\n const currentDatasource = grid.dataSource;\r\n\r\n axios.get(\"/Documents/GetForNonLeasedAsset?assetId=\" + window.detailModel.Id).then(((result) => {\r\n result.data.Documents.Values = result.data.Documents.Values.map((entry) => {\r\n const date = new Date(entry.CreationDate);\r\n return Object.assign({}, entry, { CreationDate: date });\r\n });\r\n\r\n _this.Documents.dataSource.data = result.data.Documents.Values;\r\n _this.detailsViewModel.Documents.Values = result.data.Documents.Values;\r\n\r\n\r\n const updatedModel = Object.assign({}, _this.SelectPreviewPhotoModel,\r\n {\r\n availablePhotos: result.data.Documents.Values.filter(function (e) {\r\n return e.FileType.includes(\"Image\") && e.Assignment.includes(\"Asset\");\r\n }),\r\n selectedPhoto: null\r\n });\r\n\r\n const selectedPhotoIndex = updatedModel.availablePhotos.findIndex(v => v.Tags.includes(\"Preview\"));\r\n\r\n if (selectedPhotoIndex >= 0) {\r\n updatedModel.selectedPhoto = updatedModel.availablePhotos[selectedPhotoIndex];\r\n }\r\n\r\n _this.SelectPreviewPhotoModel = updatedModel;\r\n\r\n currentDatasource.data(result.data.Documents.Values);\r\n\r\n // Re-sort using the intial storting\r\n currentDatasource.sort(currentDatasource.sort());\r\n grid.setDataSource(currentDatasource);\r\n }));\r\n },\r\n previewChangedEvent: function (message, newPreviewIndex) {\r\n this.addAlert({ \"message\": message, \"isSuccess\": true, \"showPopup\": true });\r\n this.SelectPreviewPhotoModel.selectedPhoto = this.SelectPreviewPhotoModel.availablePhotos[newPreviewIndex];\r\n },\r\n getAssetHistory() {\r\n const _this = this;\r\n const id = this.detailsViewModel.Id;\r\n const assetTypeId = this.detailsViewModel.AssetTypeId;\r\n axios.get(\"/NonLeasedAssets/History?id=\" + id + \"&assetTypeId=\" + assetTypeId)\r\n .then(response => {\r\n _this.assetHistory = response.data.changeSets;\r\n _this.assetHistoryFilters = response.data.uniqueFilters;\r\n }).catch(error => {\r\n _this.ShowError = true;\r\n });\r\n },\r\n showPhotoSelector: function () {\r\n if (!window.detailModel.CanBeEdited || !window.detailModel.AssetTypeExists)\r\n {\r\n return;\r\n }\r\n this.ModalActive = true;\r\n $(\"#select-preview-photo\").modal('show');\r\n },\r\n exportHistory: function () {\r\n const id = this.detailsViewModel.Id;\r\n const assetTypeId = this.detailsViewModel.AssetTypeId;\r\n axios.get(\"/NonLeasedAssets/ExportHistory?id=\" + id + \"&assetTypeId=\" + assetTypeId, { responseType: 'blob' })\r\n .then(response => {\r\n const link = document.createElement('a');\r\n link.href = URL.createObjectURL(response.data);\r\n link.download = 'History_NonLeasedAsset_' + id + '_' + new Date().toISOString() + '.csv';\r\n link.click();\r\n URL.revokeObjectURL(link.href);\r\n }).catch(console.error);\r\n },\r\n formattedDate: function (date) {\r\n return formatDateTimeToDate(date);\r\n },\r\n meterReadingsGridOnDatabound: function (e) {\r\n const grid = this.$refs.metergrid.kendoWidget();\r\n const _this = this;\r\n grid.element.on('click', '.anchor-view',\r\n function (e) {\r\n e.preventDefault();\r\n const reading = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n _this.MeterReadings.selectedItem = Object.assign(\r\n {},\r\n reading,\r\n { Type: ReadingTypes.get(reading.Type).displayName });\r\n\r\n $('#asset-details--view-meter-reading').modal('show');\r\n });\r\n\r\n grid.element.on('click', '.anchor-edit',\r\n function (e) {\r\n e.preventDefault();\r\n const reading = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n const parsedDate = new Date(reading.Date);\r\n\r\n _this.MeterReadings.selectedItem = Object.assign(\r\n {},\r\n reading,\r\n { Date: formatDate(parsedDate) });\r\n\r\n $('#asset-details--edit-meter-reading').modal('show');\r\n });\r\n\r\n grid.element.on('click', '.anchor-remove',\r\n function (e) {\r\n e.preventDefault();\r\n const reading = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n\r\n _this.MeterReadings.selectedItem = Object.assign({}, reading);\r\n\r\n $('#asset-details--delete-meter-reading').modal('show');\r\n });\r\n },\r\n exportMeterReadings: function () {\r\n const id = this.detailsViewModel.Id;\r\n axios.get(\"/MeterReadings/ExportForNonLeasedAsset?id=\" + id, { responseType: 'blob' })\r\n .then(response => {\r\n const link = document.createElement('a');\r\n link.href = URL.createObjectURL(response.data);\r\n link.download = 'MeterReadings_NonLeasedAsset_' + new Date().toISOString() + '.xlsx';\r\n link.click();\r\n URL.revokeObjectURL(link.href);\r\n }).catch(console.error);\r\n },\r\n documentsGridOnDatabound: function (e) {\r\n const grid = this.$refs.documentgrid.kendoWidget();\r\n const _this = this;\r\n\r\n grid.element.on('click', '.anchor-view',\r\n function (e) {\r\n e.preventDefault();\r\n const document = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n _this.Documents.selectedItem = Object.assign(\r\n {},\r\n document);\r\n\r\n $('#asset-details--view-document').modal('show');\r\n });\r\n\r\n grid.element.on('click', '.anchor-download',\r\n function (e) {\r\n e.preventDefault();\r\n const document = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n window.open(document.DownloadUrl);\r\n });\r\n\r\n grid.element.on('click', '.anchor-remove',\r\n function (e) {\r\n e.preventDefault();\r\n const document = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n\r\n _this.Documents.selectedItem = Object.assign({}, document);\r\n\r\n $('#asset-details--delete-document').modal('show');\r\n });\r\n }\r\n }\r\n });\r\n}\r\n\r\nfunction formatDate(inputDate) {\r\n let date, month, year;\r\n\r\n date = inputDate.getDate();\r\n month = inputDate.getMonth() + 1;\r\n year = inputDate.getFullYear();\r\n\r\n date = date\r\n .toString()\r\n .padStart(2, '0');\r\n\r\n month = month\r\n .toString()\r\n .padStart(2, '0');\r\n\r\n // return as YYYY-MM-DD\r\n return year + \"-\" + month + \"-\" + date;\r\n}\r\n\r\nfunction getUrlParameter(name) {\r\n name = name.replace(/[\\[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\r\n const regex = new RegExp('[\\\\?&]' + name + '=([^&#]*)');\r\n const results = regex.exec(location.search);\r\n return results === null ? '' : decodeURIComponent(results[1].replace(/\\+/g, ' '));\r\n}","import Vue from 'vue'\r\nimport DatePicker from 'vue2-datepicker'\r\nimport 'vue2-datepicker/index.css'\r\nimport { formatDateTime } from '../Shared/date-utils'\r\n\r\nmodule.export = Vue.component('nonleasedassetedit',\r\n {\r\n name: \"nonleasedassetedit\",\r\n props: {\r\n data: Object\r\n },\r\n components: {\r\n DatePicker\r\n },\r\n data: function () {\r\n return {\r\n alerts: [],\r\n overviewUrl: '',\r\n EditModel: structuredClone(this.data.Model), //create deep a copy of the object\r\n ShowError: false,\r\n };\r\n },\r\n mounted: function () {\r\n let url = new URL(window.location);\r\n if (url.searchParams.has('overviewUrl')) {\r\n url = decodeURIComponent(url.searchParams.get('overviewUrl'));\r\n }\r\n this.overviewUrl = url;\r\n },\r\n computed: {\r\n visibleAssetTypeFields: function () {\r\n return this.EditModel.AssetTypeFields.Value.filter(x => x.Editable == true);\r\n }\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n autoFormat: function (evt) {\r\n if (evt && evt.target && evt.target.value) {\r\n\r\n if (evt.target.value.indexOf(\",\") > 0) {\r\n const matchingField = this.EditModel.AssetTypeFields.Value.find(x => x.Name === evt.target.name);\r\n\r\n if (matchingField) {\r\n matchingField.Value = evt.target.value.replaceAll(\",\", \".\");\r\n\r\n this.$validator.validate(evt.target.name, matchingField.Value).then((result) => {\r\n if (result) {\r\n const validatedField = this.$validator.fields.find({\r\n name: evt.target.name\r\n });\r\n\r\n this.$validator.reset(validatedField);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n },\r\n showHeader: function (id) {\r\n const headerElement = document.getElementById(id);\r\n\r\n if (!headerElement) {\r\n return true;\r\n }\r\n\r\n const element = headerElement.nextElementSibling;\r\n\r\n if (element.nodeName == \"LEGEND\") {\r\n return false;\r\n }\r\n return true;\r\n },\r\n validateBeforeSubmit: function () {\r\n this.$validator.validateAll().then((result) => {\r\n if (result) {\r\n const vueObject = this;\r\n $(\"#saveButton\").prop(\"disabled\", true);\r\n\r\n const formattedAssetTypeFields = vueObject.EditModel.AssetTypeFields.Value.reduce(function (accumulator, current) {\r\n const name = current[\"Name\"];\r\n const type = current[\"Type\"];\r\n let value = current[\"Value\"];\r\n\r\n if (type === 'DateTime' && value != null && value.indexOf('T') > -1) {\r\n value = formatDateTime(value);\r\n }\r\n\r\n accumulator[name] = value;\r\n return accumulator;\r\n },\r\n {} /* Empty object, as initial value */);\r\n $.ajax({\r\n type: 'POST',\r\n url: '/NonLeasedAssets/Edit',\r\n data: JSON.stringify({\r\n Id: vueObject.EditModel.Id,\r\n MainCostCenter: vueObject.EditModel.MainCostCenter.Value,\r\n CostCenter: vueObject.EditModel.CostCenter.Value,\r\n DealerContactPerson: vueObject.EditModel.DealerContactPerson.Value,\r\n User: vueObject.EditModel.User.Value,\r\n CustomerReference: vueObject.EditModel.CustomerReference.Value,\r\n AgreementLine: vueObject.EditModel.AgreementLine.Value,\r\n AgreementNumber: vueObject.EditModel.AgreementNumber.Value,\r\n AssetModel: vueObject.EditModel.AssetModel.Value,\r\n SerialNumber: vueObject.EditModel.SerialNumber.Value,\r\n AssetStatusCustomer: vueObject.EditModel.AssetStatusCustomer.Value,\r\n AssetLocationStreet: vueObject.EditModel.AssetLocationStreet.Value,\r\n AssetLocationCity: vueObject.EditModel.AssetLocationCity.Value,\r\n InvoiceLocationStreet: vueObject.EditModel.InvoiceLocationStreet.Value,\r\n InvoiceLocationCity: vueObject.EditModel.InvoiceLocationCity.Value,\r\n InvoiceLocationCountry: vueObject.EditModel.InvoiceLocationCountry.Value,\r\n Price: vueObject.EditModel.Price.Value,\r\n OrderNumber: vueObject.EditModel.OrderNumber.Value,\r\n CustomerGuaranteedResidualValue: vueObject.EditModel.CustomerGuaranteedResidualValue.Value,\r\n BillingAmount: vueObject.EditModel.BillingAmount.Value,\r\n StartDate: vueObject.EditModel.StartDate.Value,\r\n EndDate: vueObject.EditModel.EndDate.Value,\r\n ExtensionDate: vueObject.EditModel.ExtensionDate.Value,\r\n AgreementTerminationDate: vueObject.EditModel.AgreementTerminationDate.Value,\r\n ExtensionRent: vueObject.EditModel.ExtensionRent.Value,\r\n Currency: vueObject.EditModel.Currency.Value,\r\n ProductSKU: vueObject.EditModel.ProductSKU.Value,\r\n ManufactureNumber: vueObject.EditModel.ManufactureNumber.Value,\r\n ProductName: vueObject.EditModel.ProductName.Value,\r\n Brand: vueObject.EditModel.Brand.Value,\r\n Insurance: vueObject.EditModel.Insurance.Value,\r\n Note: vueObject.EditModel.Note.Value,\r\n AssetTypeFields: formattedAssetTypeFields\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n vueObject.close();\r\n } else {\r\n vueObject.addAlert(\r\n {\r\n \"message\": `Could not edit asset: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n },\r\n error: function (data) {\r\n vueObject.addAlert(\r\n {\r\n \"message\": 'Could not edit asset due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n } else {\r\n this.addAlert(\r\n {\r\n \"message\": 'Some fields in the form are invalid',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n });\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.ShowError = false;\r\n this.EditModel = structuredClone(this.data.Model);\r\n\r\n $('#nonleased-asset-edit-modal').modal('hide');\r\n\r\n // Enable save button again.\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n }\r\n\r\n });\r\n","import Vue from 'vue'\r\nimport VeeValidate from \"vee-validate\"\r\nimport { GridInstaller } from '@progress/kendo-grid-vue-wrapper'\r\nimport vSelect from 'vue-select'\r\nimport \"../Grid/Grid.less\"\r\nimport { fetchJson } from '../Shared/request-utils'\r\nimport { generateQrCodes } from '../Shared/qr-utils'\r\nimport { ReadingTypes } from '../MeterReadings/ReadingTypes.js'\r\nimport { getSubMemberName} from '../Shared/grid-utils'\r\n\r\nif (document.getElementById('vue-non-leased-assets-overview')) {\r\n require(\"../Grid/GridConfiguration.js\");\r\n require(\"../Actionbar/Actionbar.js\");\r\n require(\"../Alerts/Alerts.js\");\r\n require(\"./Upload.js\");\r\n require(\"./Add.js\");\r\n require(\"../ManagePreviews/ManagePreviews\")\r\n require(\"../MeterReadings/ReadingTypes.js\");\r\n require(\"../MeterReadings/Add.js\");\r\n require(\"../Documents/Assets/Add.js\");\r\n require(\"./BulkEdit.js\");\r\n require(\"../DownloadQr/DownloadQr.js\");\r\n require(\"../QueryableGrid/Grid.js\");\r\n\r\n Vue.use(GridInstaller);\r\n Vue.use(VeeValidate);\r\n\r\n Vue.component('v-select', vSelect);\r\n const pagesizesession = \"pagesize\";\r\n let pagesize = sessionStorage.getItem(pagesizesession);\r\n if (!pagesize) {\r\n pagesize = 20;\r\n }\r\n\r\n let gridConfigChangeTimer = 0; \r\n\r\n new Vue({\r\n el: '#vue-non-leased-assets-overview',\r\n components: {},\r\n data: function () {\r\n return {\r\n actionbar: window.preLoadedData.Actionbar,\r\n GridConfiguration: window.preLoadedData.GridConfiguration,\r\n Grid: {\r\n config: window.preLoadedData.GridConfiguration,\r\n endpointQuery: \"/NonLeasedAssets/Query\",\r\n endpointFilterValues: \"/NonLeasedAssets/FetchFilterValues\",\r\n enableMultiSelect: true,\r\n renderFieldValues: this.getCustomFieldValues,\r\n renderRowActions: this.getCustomActions,\r\n rowClickEvent: this.onRowClicked,\r\n rowActionClickEvent: this.onRowActionClicked,\r\n rowSelectedEvent: this.onRowSelectionChanged,\r\n gridChangedEvent: this.onGridChanged,\r\n gridColumnReorderEvent: this.onGridColumnReordered, \r\n pageSizes: {\r\n default: 20,\r\n values: [10, 20, 30, 50]\r\n },\r\n selectAll: undefined,\r\n search: undefined,\r\n globalSelection: undefined,\r\n selectedCount: undefined,\r\n totalCount: undefined,\r\n export: undefined,\r\n refreshData: undefined,\r\n refreshLayout: undefined,\r\n refreshCurrentPage: undefined,\r\n setActionbar: undefined,\r\n setActiveFilters: undefined,\r\n setPortfolioSelector: undefined\r\n },\r\n alerts: [],\r\n selectedAssets: [],\r\n assetCount: 0,\r\n assetFilter: {},\r\n assetSort: {},\r\n assetsShouldBeExcluded: false,\r\n limit: 0,\r\n activePortfolioFilterField: '',\r\n HasBranding: window.hasBranding,\r\n MeterReadings: {\r\n readingTypes: [],\r\n CurrentSourceSystem: ''\r\n },\r\n detailsViewModel: null,\r\n meterReadingsModalActive: false,\r\n allowedPortfolios: window.preLoadedData.AllowedPortfolios,\r\n gridPreviews: [],\r\n selectedPreview: undefined, \r\n AddModel: {\r\n types: [],\r\n contractIdentifiers: [],\r\n allowedMeterUnitTypes: []\r\n },\r\n UploadModel: {\r\n contractIdentifiers: []\r\n },\r\n };\r\n },\r\n mounted: function () {\r\n const _this = this;\r\n _this.Grid.setActionbar(_this.$refs.actionbar);\r\n this.fetchGridPreviews();\r\n const portfolios = _this.allowedPortfolios.map(portfolio => portfolio.Name);\r\n kendo.jQuery(\"#portfolioSelector\").kendoMultiSelect({\r\n dataSource: portfolios,\r\n filter: \"contains\",\r\n tagTemplate: \"#:values.length# portfolio(s) selected\",\r\n placeholder: \"Select portfolio(s)\",\r\n autoClose: false,\r\n tagMode: \"single\",\r\n noDataTemplate: \"No portfolios available\",\r\n itemTemplate: `
\r\n #= data #\r\n \r\n \r\n
`,\r\n change: function () {\r\n const selected = this.value();\r\n const items = this.listView.content.find(\"li\");\r\n items.each(function () {\r\n const checkbox = $(this).find(\"input[type='checkbox']\");\r\n const value = checkbox.val();\r\n checkbox.prop(\"checked\", selected.indexOf(value) > -1);\r\n });\r\n\r\n _this.actionbarFilterPortfolio(selected);\r\n if (selected.length == 0) {\r\n this.tagList.children().each(function() {\r\n this.remove();\r\n });\r\n }\r\n },\r\n open: function () {\r\n const selected = this.value();\r\n const items = this.listView.content.find(\"li\");\r\n items.each(function () {\r\n const checkbox = $(this).find(\"input[type='checkbox']\");\r\n const value = checkbox.val();\r\n checkbox.prop(\"checked\", selected.indexOf(value) > -1);\r\n });\r\n }\r\n }); \r\n const portfolioSelector = kendo.jQuery(\"#portfolioSelector\").getKendoMultiSelect();\r\n if (portfolioSelector) {\r\n _this.Grid.setPortfolioSelector(portfolioSelector);\r\n }\r\n\r\n $(\".navbar-filter .k-multiselect\").append(\"\");\r\n\r\n const connection = window.assetNotificationsHub;\r\n connection.on(\"NotifyAdded\", function () {\r\n _this.Grid.refreshCurrentPage();\r\n });\r\n connection.on(\"NotifyBulkUpdateCompleted\", function () {\r\n _this.Grid.refreshCurrentPage(true);\r\n });\r\n connection.on(\"NotifyBulkDeleteCompleted\", function () {\r\n _this.addAlert({\r\n \"message\": \"Successfully removed the selected assets\",\r\n \"isSuccess\": true\r\n });\r\n _this.Grid.refreshCurrentPage();\r\n });\r\n connection.on(\"NotifyUploadCompleted\", function () {\r\n _this.Grid.refreshCurrentPage(true);\r\n });\r\n },\r\n created: function () {\r\n this.actionbar.searchVisible = true;\r\n this.actionbar.previewSelectorVisible = true;\r\n\r\n if (this.GridConfiguration.SelectedColumns.some(column => column.PropertyName === \"portfolio\")) {\r\n this.actionbar.portfolioFilterVisible = true;\r\n }\r\n\r\n //set extra rights\r\n const uploadButton = this.actionbar.ItemsRight.find(f => f.event === \"ab-upload-assets\") ? this.actionbar.ItemsRight.find(f => f.event === \"ab-upload-assets\") : this.actionbar.ItemsLeft.find(f => f.event === \"ab-upload-assets\");\r\n if (uploadButton != null) {\r\n uploadButton.visible = window.preLoadedData.rights.uploadLesseeAssets;\r\n }\r\n\r\n const uploadStatusButton = this.actionbar.ItemsRight.find(f => f.event === \"ab-upload-status\") ? this.actionbar.ItemsRight.find(f => f.event === \"ab-upload-status\") : this.actionbar.ItemsLeft.find(f => f.event === \"ab-upload-status\");\r\n if (uploadStatusButton != null) {\r\n uploadStatusButton.visible = window.preLoadedData.rights.uploadLesseeAssets;\r\n }\r\n\r\n const addAssetButton = this.actionbar.ItemsRight.find(f => f.event === \"ab-add-asset\") ? this.actionbar.ItemsRight.find(f => f.event === \"ab-add-asset\") : this.actionbar.ItemsLeft.find(f => f.event === \"ab-add-asset\");\r\n if (addAssetButton != null) {\r\n addAssetButton.visible = window.preLoadedData.rights.addLesseeAsset;\r\n }\r\n\r\n const generateQrButton = this.actionbar.ItemsRight.find(f => f.event === \"ab-generate-qr-code\") ? this.actionbar.ItemsRight.find(f => f.event === \"ab-generate-qr-code\") : this.actionbar.ItemsLeft.find(f => f.event === \"ab-generate-qr-code\");\r\n if (generateQrButton != null) {\r\n generateQrButton.visible = window.preLoadedData.rights.generateQrCodesAllowed;\r\n }\r\n },\r\n methods: {\r\n /**\r\n * ActionBar Events\r\n */\r\n actionbarChangeColumns: function (e) {\r\n if (this.selectedPreview){\r\n this.GridConfiguration.refreshColumns(this.selectedPreview.selectedColumns);\r\n }\r\n\r\n $('#grid-configuration-modal').modal('show');\r\n },\r\n actionbarSelectAll: function (e) {\r\n if (this.Grid.selectAll) {\r\n this.Grid.selectAll();\r\n }\r\n },\r\n actionbarFilterPortfolio: function (selected) {\r\n const portfolios = this.allowedPortfolios.filter(portfolio => selected.includes(portfolio.Name));\r\n if (portfolios.length > 0) {\r\n const connectionsPerField = [];\r\n portfolios.forEach(portfolio => {\r\n const connectionSet = connectionsPerField.find(connectionSet => connectionSet.fieldName === portfolio.FilterField);\r\n if (connectionSet) {\r\n portfolio.Connections.split(\",\").forEach(connection => {\r\n if (connectionSet.connectionValues.indexOf(connection) === -1) {\r\n connectionSet.connectionValues.push(connection);\r\n }\r\n });\r\n } else {\r\n connectionsPerField.push({\r\n fieldName: portfolio.FilterField,\r\n connectionValues: portfolio.Connections.split(\",\")\r\n });\r\n }\r\n });\r\n\r\n const filters = connectionsPerField.map(connection => {\r\n let filter = {};\r\n filter[\"field\"] = connection.fieldName;\r\n filter[\"operator\"] = \"eq\";\r\n filter[\"value\"] = connection.connectionValues;\r\n\r\n return filter;\r\n });\r\n\r\n const customFilter = {};\r\n customFilter[\"logic\"] = \"or\";\r\n customFilter[\"filters\"] = filters;\r\n\r\n this.Grid.customFilter(customFilter);\r\n } else {\r\n const customFilter = {};\r\n customFilter[\"logic\"] = \"and\";\r\n customFilter[\"filters\"] = [];\r\n\r\n this.Grid.customFilter(customFilter);\r\n }\r\n },\r\n actionbarSearch: function (e) {\r\n if (this.Grid.search) {\r\n this.Grid.search(e);\r\n }\r\n },\r\n actionbarExport: function (e) {\r\n if (this.Grid.export) {\r\n this.Grid.export();\r\n }\r\n },\r\n actionbarRemoveAsset: function (e) {\r\n $(\"#confirm-remove-asset-modal\").modal('show');\r\n },\r\n actionbarGenerateQrCode: function (e) {\r\n const vueObject = this;\r\n if (this.prepareBulkData()) {\r\n if (!this.assetsShouldBeExcluded) {\r\n generateQrCodes(this.selectedAssets, \"AddForNonLeasedAsset\");\r\n $(\"#download-qr-codes-modal\").modal('show');\r\n } else {\r\n this.fetchPagedQrData().then((response) => {\r\n generateQrCodes(response.items, \"AddForNonLeasedAsset\");\r\n $(\"#download-qr-codes-modal\").modal('show');\r\n },\r\n (error) => {\r\n vueObject.ShowError = true;\r\n vueObject.addAlert({\r\n \"message\": error.message,\r\n \"isSuccess\": false\r\n });\r\n });\r\n }\r\n }\r\n },\r\n actionbarUploadStatus: function (e) {\r\n window.location.href = \"./UploadStatus\";\r\n },\r\n actionbarUploadAssets: function (e) {\r\n const _this = this;\r\n this.clearAlert();\r\n\r\n $.ajax({\r\n type: 'GET',\r\n url: '/NonLeasedAssets/Upload',\r\n success: function (response) {\r\n _this.UploadModel = Object.assign({}, response)\r\n _this.$refs.nonleasedassetsupload.show(_this.UploadModel);\r\n\r\n // Disable focusin event listeners on Bootstrap modal to enable Kendo DropDownList filter\r\n $(\"#nonleased-assets-upload-modal\").on('shown.bs.modal', function (e) {\r\n $(document).off('focusin.modal');\r\n });\r\n },\r\n error: function (error) {\r\n reject(error);\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n\r\n },\r\n actionbarAddAsset: function (e) {\r\n const _this = this;\r\n _this.clearAlert();\r\n\r\n $.ajax({\r\n type: 'GET',\r\n url: '/NonLeasedAssets/Add',\r\n success: function (response) {\r\n _this.AddModel = Object.assign({}, response)\r\n\r\n // Disable focusin event listeners on Bootstrap modal to enable Kendo DropDownList filter\r\n $(\"#nonleased-asset-add-modal\").on('shown.bs.modal', function (e) {\r\n $(document).off('focusin.modal');\r\n });\r\n\r\n _this.$refs.nonleasedassetadd.show();\r\n },\r\n error: function (error) {\r\n reject(error);\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n },\r\n actionbarBulkEdit: function (e) {\r\n if (this.prepareBulkData()) {\r\n this.$refs.nonleasedassetsbulkedit.show(this.selectedAssets);\r\n }\r\n },\r\n actionbarManagePreviews: function (e) {\r\n this.$refs.managepreviews.show(this.gridPreviews, \"NonLeasedAssets\");\r\n },\r\n prepareBulkData: function () {\r\n if (this.Grid.globalSelection) {\r\n const globalSelection = this.Grid.globalSelection();\r\n this.selectedAssets = globalSelection.items;\r\n this.assetCount = this.Grid.selectedCount();\r\n this.assetsShouldBeExcluded = globalSelection.selectAll;\r\n this.assetFilter = globalSelection.filter;\r\n this.assetSort = globalSelection.sort;\r\n this.limit = globalSelection.limit;\r\n return true;\r\n }\r\n return false;\r\n },\r\n confirmedRemoveAsset: function () {\r\n const vueObject = this;\r\n $(\"#confirm-remove-asset-modal\").modal('hide');\r\n const globalSelection = this.Grid.globalSelection();\r\n this.assetFilter = globalSelection.filter;\r\n this.assetSort = globalSelection.sort;\r\n if (this.prepareBulkData()) {\r\n if (!this.assetsShouldBeExcluded) {\r\n const selectedAssetIds = this.selectedAssets.map(i => i.id);\r\n this.removeAssets(selectedAssetIds).then((response) => {\r\n if (!response.success) {\r\n _this.addAlert({\r\n \"message\": response.message,\r\n \"isSuccess\": false\r\n });\r\n }\r\n },\r\n (error) => {\r\n vueObject.addAlert({\r\n \"message\": error.message,\r\n \"isSuccess\": false\r\n });\r\n });\r\n } else {\r\n this.fetchPagedAssetIds().then((response) => {\r\n this.removeAssetsFromResponseRecursively(vueObject, response);\r\n },\r\n (error) => {\r\n vueObject.ShowError = true;\r\n vueObject.addAlert({\r\n \"message\": error.message,\r\n \"isSuccess\": false\r\n });\r\n });\r\n }\r\n }\r\n },\r\n removeAssets: function (selectedAssetIds) {\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n url: \"/NonLeasedAssets/Remove\",\r\n data: JSON.stringify({ assetIds: selectedAssetIds }),\r\n type: \"POST\",\r\n success: function (response) {\r\n resolve(response);\r\n },\r\n error: function (error) {\r\n reject(error);\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n });\r\n },\r\n fetchPagedAssetIds: function (pageToken) {\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n type: 'POST',\r\n url: '/NonLeasedAssets/QueryIds',\r\n data: JSON.stringify(({\r\n token: pageToken,\r\n limit: 250,\r\n filter: this.assetFilter,\r\n sort: this.assetSort\r\n })),\r\n success: function (response) {\r\n resolve(response);\r\n },\r\n error: function (error) {\r\n reject(error);\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n });\r\n },\r\n fetchPagedQrData: function () {\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n type: 'POST',\r\n url: '/NonLeasedAssets/QueryQrData',\r\n data: JSON.stringify(({\r\n limit: this.limit,\r\n filter: this.assetFilter,\r\n sort: this.assetSort\r\n })),\r\n success: function (response) {\r\n resolve(response);\r\n },\r\n error: function (error) {\r\n reject(error);\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n });\r\n },\r\n removeAssetsFromResponseRecursively: function (vueObject, response) {\r\n if (response) {\r\n const token = response.pageToken;\r\n const selectedAssets = response.items.filter(a => !this.selectedAssets.some(a2 => a2.id === a.id));\r\n const selectedAssetIds = selectedAssets.map(i => i.id);\r\n this.removeAssets(selectedAssetIds).then((removeResponse) => {\r\n if (token) {\r\n this.fetchPagedAssetIds(token).then((response) => {\r\n this.removeAssetsFromResponseRecursively(vueObject, response);\r\n });\r\n }\r\n });\r\n }\r\n },\r\n /**\r\n * Grid Events\r\n */\r\n loadColumns: function () {\r\n // this is not implemented here, the new QueryableGrid component handles this\r\n // this function is only here because the GridConfiguration component references this and we want to be backwards compatible\r\n },\r\n getCustomFieldValues: function (gridColumns) {\r\n const modifiedColumns = Object.assign([], gridColumns)\r\n for (let column of modifiedColumns) {\r\n if (column.field === \"portfolio\") {\r\n column.filterable = false;\r\n column.sortable = false;\r\n }\r\n\r\n }\r\n\r\n const fieldColumnsWithEmptyMessage = modifiedColumns.filter(x => typeof x.field !== \"undefined\" && ((x.field.startsWith(\"computedFields.\")) || (x.field.startsWith(\"assetTypeFields[\"))));\r\n if (fieldColumnsWithEmptyMessage.length > 0) {\r\n fieldColumnsWithEmptyMessage.forEach((potentialEmptyField) => {\r\n const fieldIndex = modifiedColumns.findIndex(x => x.field === potentialEmptyField.field);\r\n if (fieldIndex >= 0) {\r\n modifiedColumns[fieldIndex].template = function (dataItem) {\r\n\r\n if (potentialEmptyField.field.startsWith(\"computedFields\")) {\r\n const computedFieldName = getSubMemberName(potentialEmptyField.field);\r\n const computedFields = dataItem[\"computedFields\"];\r\n\r\n if (potentialEmptyField.type === 'number') {\r\n const numericValue = computedFields[computedFieldName];\r\n if (!numericValue) {\r\n return '';\r\n }\r\n\r\n return computedFields[computedFieldName];\r\n }\r\n } else if (potentialEmptyField.field.startsWith(\"assetTypeFields[\")) {\r\n const assetTypeFieldName = getSubMemberName(potentialEmptyField.field);\r\n const assetTypeFields = dataItem[\"assetTypeFields\"]; \r\n\r\n if (assetTypeFields[assetTypeFieldName] === undefined || assetTypeFields[assetTypeFieldName] === null) {\r\n return '';\r\n }\r\n\r\n return assetTypeFields[assetTypeFieldName];\r\n }\r\n else \r\n {\r\n return dataItem[potentialEmptyField.field];\r\n }\r\n };\r\n }\r\n });\r\n }\r\n return modifiedColumns;\r\n },\r\n getCustomActions: function () {\r\n const customFields = [];\r\n\r\n const customActions = [\r\n '',\r\n ];\r\n\r\n customFields.push(\r\n {\r\n 'title': ' ',\r\n 'filterable': false,\r\n 'template': function (dataItem) {\r\n const actions = [...customActions];\r\n if (dataItem.editAssetAllowed) {\r\n actions.push('');\r\n }\r\n if (dataItem.createMeterReadingAllowed) {\r\n actions.push('');\r\n }\r\n return actions.join('');\r\n },\r\n 'width': '120px'\r\n });\r\n\r\n return customFields;\r\n },\r\n onRowClicked: function (item) {\r\n window.location.href = \"./NonLeasedAssets/Details?id=\" + item.id + \"&overviewUrl=\" + encodeURIComponent(window.location.pathname + window.location.hash);\r\n },\r\n onRowActionClicked: function (item, type) {\r\n if (!item)\r\n return;\r\n\r\n const _this = this;\r\n\r\n switch (type) {\r\n case \"view\":\r\n window.location.href = \"./NonLeasedAssets/Details?id=\" + item.id + \"&overviewUrl=\" + encodeURIComponent(window.location.pathname + window.location.hash);\r\n break;\r\n case \"edit\":\r\n window.location.href = \"./NonLeasedAssets/Details?id=\" + item.id + \"&action=edit&overviewUrl=\" + encodeURIComponent(window.location.pathname + window.location.hash);\r\n break;\r\n case \"add-meter-reading\":\r\n $.get(\"/MeterReadings/GetForNonLeasedAsset?assetId=\" + item.id, function (assetModel) {\r\n ReadingTypes.load(assetModel.MeterReadings.Attributes);\r\n\r\n _this.MeterReadings.readingTypes = ReadingTypes.getAll();\r\n _this.MeterReadings.CurrentSourceSystem = assetModel.MeterReadings.CurrentSourceSystem;\r\n _this.detailsViewModel = assetModel;\r\n\r\n _this.meterReadingsModalActive = true;\r\n $('#asset-details--add-meter-reading').modal('show');\r\n });\r\n\r\n break;\r\n }\r\n },\r\n onRowSelectionChanged: function (item, selected) {\r\n if (selected) {\r\n console.log(\"item '\" + item.id + \"' was checked\")\r\n }\r\n else {\r\n console.log(\"item '\" + item.id + \"' was unchecked\")\r\n }\r\n },\r\n onGridChanged: function (selectedItems) {\r\n const bulkEditButton = this.findActionBarButton(\"ab-bulk-edit\");\r\n if (bulkEditButton != null) {\r\n bulkEditButton.enabled = selectedItems.length > 1;\r\n }\r\n\r\n const removeButton = this.findActionBarButton(\"ab-remove-asset\");\r\n if (removeButton != null) {\r\n removeButton.enabled = selectedItems.length >= 1 && selectedItems.every(item => item.removeAssetAllowed === true);\r\n }\r\n\r\n const generateQrButton = this.findActionBarButton(\"ab-generate-qr-code\");\r\n if (generateQrButton) {\r\n generateQrButton.enabled = selectedItems.length >= 1;\r\n }\r\n\r\n if (this.Grid.totalCount && this.Grid.selectedCount) {\r\n const selectAll = document.getElementById('actionbarSelectAll');\r\n if (selectAll.checked && this.Grid.selectedCount() < this.Grid.totalCount())\r\n selectAll.checked = false;\r\n }\r\n },\r\n\r\n onGridColumnReordered: function(fieldName, newIndex, oldIndex){\r\n const _this = this;\r\n\r\n const changeOrder = (items) => {\r\n const changedItem = items.splice(--oldIndex, 1)[0];\r\n items.splice(--newIndex, 0, changedItem); \r\n }\r\n\r\n window.clearTimeout (gridConfigChangeTimer);\r\n\r\n gridConfigChangeTimer = window.setTimeout(() => {\r\n const newGridConfig = {..._this.GridConfiguration};\r\n\r\n changeOrder(newGridConfig.SelectedColumns);\r\n\r\n newGridConfig.ColumnsConfiguration[oldIndex].Index = newIndex;\r\n newGridConfig.ColumnsConfiguration[oldIndex].SortOrder = \"0_\" + newIndex;\r\n newGridConfig.ColumnsConfiguration[newIndex].Index = oldIndex;\r\n newGridConfig.ColumnsConfiguration[newIndex].SortOrder = \"0_\" + oldIndex;\r\n\r\n newGridConfig.ColumnsConfiguration = newGridConfig.ColumnsConfiguration.sort((x, y) => x.Index - y.Index) \r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: '/GridConfiguration/Save',\r\n contentType: 'application/json',\r\n dataType: 'json', \r\n data: JSON.stringify({\r\n gridName: _this.GridConfiguration.GridName,\r\n selectedColumnIds: newGridConfig.SelectedColumns.map(x => x.Id)\r\n }), \r\n success: function (response) {\r\n console.info(\"Stored new grid config\");\r\n _this.GridConfiguration = newGridConfig;\r\n },\r\n error: function (error) {\r\n console.error(error);\r\n },\r\n })\r\n }, 250); \r\n }, \r\n\r\n findActionBarButton: function (event) {\r\n return this.actionbar.ItemsRight.find(f => f.event === event) ? this.actionbar.ItemsRight.find(f => f.event === event) : this.actionbar.ItemsLeft.find(f => f.event === event);\r\n },\r\n\r\n /**\r\n * Alerts\r\n */\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n meterReadingChangedEvent: function (message) {\r\n this.addAlert({ \"message\": message, \"isSuccess\": true, \"showPopup\": true });\r\n this.Grid.refreshCurrentPage(); \r\n },\r\n meterReadingModalClosedEvent: function () {\r\n this.meterReadingsModalActive = false;\r\n },\r\n documentChangedEvent: function (message) {\r\n this.addAlert({ \"message\": message, \"isSuccess\": true, \"showPopup\": true });\r\n },\r\n gridPreviewChangedEvent: function (message) {\r\n this.addAlert({ \"message\": message, \"isSuccess\": true, \"showPopup\": true });\r\n this.fetchGridPreviews();\r\n },\r\n setGridPreview: function (preview) {\r\n const _this = this;\r\n _this.GridConfiguration.SelectedColumns = preview.selectedColumns.map(column => {\r\n let columnSettings = {};\r\n columnSettings[\"Id\"] = column.id;\r\n columnSettings[\"DisplayName\"] = column.displayName;\r\n columnSettings[\"PropertyName\"] = column.propertyName;\r\n columnSettings[\"PropertyType\"] = column.propertyType;\r\n\r\n return columnSettings;\r\n });\r\n },\r\n renderGridPreviewSelector() {\r\n const _this = this;\r\n kendo.jQuery(\"#previewSelector\").kendoDropDownList({\r\n dataTextField: \"name\",\r\n dataValueField: \"id\",\r\n dataSource: _this.gridPreviews,\r\n noDataTemplate: \"No previews available\",\r\n optionLabel: \"Select preview\",\r\n change: function () {\r\n const selected = this.value();\r\n const preview = _this.gridPreviews.find(preview => preview.id === selected);\r\n _this.setGridPreview(preview);\r\n if (preview.activeFilters) {\r\n _this.Grid.setActiveFilters(preview.activeFilters);\r\n }\r\n _this.GridConfiguration.refreshColumns(preview.selectedColumns);\r\n _this.Grid.refreshLayout(preview);\r\n },\r\n });\r\n\r\n _this.actionbar.previewSelectorRendered = true;\r\n $(\".navbar-filter .k-picker\").append(\"\");\r\n },\r\n fetchGridPreviews: function () {\r\n let _this = this;\r\n\r\n fetchJson('/GridPreviews/List?gridType=NonLeasedAssets')\r\n .then(\r\n (result) => {\r\n _this.gridPreviews = result;\r\n this.renderGridPreviewSelector();\r\n },\r\n (error) => {\r\n console.error(error);\r\n });\r\n },\r\n refreshData: function () {\r\n },\r\n }\r\n });\r\n}","import Vue from 'vue'\r\nimport axios from \"axios\"\r\nimport { fetchJson } from '../Shared/request-utils'\r\n\r\nmodule.export = Vue.component('nonleasedassetsupload',\r\n {\r\n name: \"nonleasedassetsupload\",\r\n props: {\r\n UploadModel: Object\r\n },\r\n data: function () {\r\n return {\r\n alerts: [],\r\n selectedType: null,\r\n dataSource: null,\r\n searchText: null,\r\n files: new FormData(),\r\n required: false,\r\n ShowSuccess: false,\r\n ShowProgress: false,\r\n ShowError: false,\r\n uploadProgressPercentage: 0,\r\n uploadFileName: \"\",\r\n uploadNotification: \"\",\r\n };\r\n },\r\n mounted: function() {\r\n const _this = this;\r\n const $assetTypeSelector = $(\"#assetTypeSelectorForUpload\");\r\n\r\n _this.dataSource = new kendo.data.DataSource({\r\n serverFiltering: true,\r\n transport: {\r\n read: function (options) {\r\n fetchJson('/NonLeasedAssets/GetAssetTypesForUpload')\r\n .then(\r\n (result) => {\r\n options.success(result);\r\n },\r\n (error) => {\r\n console.error(error);\r\n });\r\n }\r\n },\r\n });\r\n\r\n $assetTypeSelector.kendoDropDownList({\r\n filter: true,\r\n placeholder: \"Search for asset type\",\r\n autoBind: false,\r\n enforceMinLength: true,\r\n dataSource: _this.dataSource,\r\n dataTextField: \"assetTypeName\",\r\n dataValueField: \"id\",\r\n template: ({ assetTypeName, masterAssetTypeName }) => assetTypeName + ' (' + masterAssetTypeName + ')',\r\n valueTemplate: () => _this.selectedType.assetTypeName + ' (' + _this.selectedType.masterAssetTypeName + ')',\r\n select: (e) => {\r\n _this.selectedType = e.dataItem;\r\n }\r\n });\r\n\r\n $(\"#assetTypeSelectorForUpload-list .k-textbox\").attr(\"placeholder\", \"Search for asset type\");\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n startUpload() {\r\n const _this = this;\r\n\r\n this.files.set('selectedType', this.selectedType.id);\r\n\r\n axios.post('/UploadAssets/UploadNonLeasedAssets',\r\n this.files,\r\n {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n }).then(response => {\r\n if (response.data.success) {\r\n _this.ShowProgress = true;\r\n const notifications = window.assetNotificationsHub;\r\n notifications.on(\"NotifyUploadStarted\", function (uploadId, originalFileName, total) {\r\n if (uploadId == response.data.uploadId) {\r\n _this.uploadNotification = \"Upload started\";\r\n }\r\n });\r\n notifications.on(\"NotifyUploadValidationFailed\", function (uploadId, originalFileName, total) {\r\n if (uploadId == response.data.uploadId) {\r\n _this.uploadNotification = \"Upload validation failed\";\r\n setTimeout(function () {\r\n _this.addAlert(\r\n {\r\n \"message\": 'File contains errors, please check the upload status',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n _this.ShowError = true;\r\n _this.ShowProgress = false;\r\n _this.uploadFileName = \"\";\r\n _this.uploadNotification = \"\";\r\n }, 2000);\r\n }\r\n });\r\n notifications.on(\"NotifyUploadValidationSucceeded\", function (uploadId, originalFileName, total) {\r\n if (uploadId == response.data.uploadId) {\r\n _this.uploadNotification = \"Upload validation succeeded\";\r\n }\r\n });\r\n notifications.on(\"NotifyUploadProgress\", function (uploadId, originalFileName, progress, failed, total) {\r\n if (uploadId == response.data.uploadId) {\r\n _this.uploadNotification = `Uploading asset ${progress} of ${total} with ${failed} failed assets`;\r\n _this.uploadProgressPercentage = parseInt(progress * 100 / total);\r\n }\r\n });\r\n notifications.on(\"NotifyUploadCompleted\", function (uploadId, originalFileName, failed, total) {\r\n if (uploadId == response.data.uploadId) {\r\n if (failed >= 0 && total >= 0) {\r\n const successful = total - failed;\r\n _this.uploadNotification = `Upload has completed with ${successful} assets and ${failed} failed assets`;\r\n setTimeout(function () {\r\n _this.ShowSuccess = true;\r\n _this.ShowProgress = false;\r\n _this.uploadFileName = \"\";\r\n _this.uploadNotification = \"\";\r\n }, 2000);\r\n } else {\r\n _this.uploadNotification = \"Asset upload prematurely completed due to an error during upload validation.\"\r\n setTimeout(function () {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not upload file. Please check in properties of uploaded file, if file is not accidentally locked or anyhow damaged: ${response.data.data}`,\r\n \"isSuccess\": false\r\n });\r\n _this.ShowSuccess = false;\r\n _this.ShowProgress = false;\r\n _this.uploadFileName = \"\";\r\n _this.uploadNotification = \"\";\r\n }, 2000);\r\n }\r\n }\r\n });\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not upload file. Please check in properties of uploaded file, if file is not accidentally locked or anyhow damaged: ${response.data.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n }).catch(error => {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not upload file. Please check in properties of uploaded file, if file is not accidentally locked or anyhow damaged',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n });\r\n },\r\n fileChange(fileList) {\r\n this.required = false;\r\n this.uploadFileName = \"\";\r\n for (let i = 0; i < fileList.length; i++) {\r\n this.files.set(\"file\", fileList[i], fileList[i].name);\r\n this.uploadFileName += fileList[i].name;\r\n }\r\n },\r\n save() {\r\n $(\"#saveButton\").prop(\"disabled\", true);\r\n this.validate();\r\n if (!this.required) {\r\n this.startUpload();\r\n }\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n this.ShowSuccess = false;\r\n this.ShowError = false;\r\n this.selectedType = null;\r\n this.uploadProgressPercentage = 0;\r\n this.uploadFileName = \"\";\r\n this.uploadNotification = \"\";\r\n this.contractIdentifier = null;\r\n this.files = new FormData();\r\n this.required = false;\r\n document.getElementById(\"uploadForm\").reset();\r\n $('#nonleased-assets-upload-modal').modal('hide');\r\n\r\n // Enable save button again.\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n },\r\n show: function () {\r\n this.selectedType = null;\r\n this.files = new FormData();\r\n $('#nonleased-assets-upload-modal').modal('show');\r\n },\r\n validate: function () {\r\n this.required = !(this.selectedType != null && this.selectedType.id.length > 0 && this.files.get(\"file\"));\r\n },\r\n downloadTemplate: function () {\r\n axios.get('/UploadAssets/GetNonLeasedAssetsUploadTemplate?assetTypeId=' + this.selectedType.id, { responseType: 'blob' })\r\n .then(response => {\r\n const link = document.createElement('a');\r\n link.href = URL.createObjectURL(response.data);\r\n link.download = 'NonLeasedTemplate_' + new Date().toISOString() + '.xlsx';\r\n link.click();\r\n URL.revokeObjectURL(link.href);\r\n }).catch(console.error);\r\n }\r\n },\r\n watch: {\r\n selectedType: function (val) {\r\n this.required = false;\r\n }\r\n }\r\n });\r\n","import Vue from 'vue'\r\n\r\nmodule.export = Vue.component('editpersonalsettingsmodal',\r\n {\r\n name: 'editpersonalsettings',\r\n props: {\r\n data: Object\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n EditModel: Object.assign({}, this.data.User),\r\n ActiveLanguages: this.data.ActiveLanguages,\r\n AvailableSalutations: this.data.AvailableSalutations\r\n };\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n save: function (e) {\r\n e.preventDefault();\r\n const _this = this;\r\n _this.clearAlert();\r\n $(\"#saveButton\").prop(\"disabled\", true);\r\n $.ajax({\r\n type: 'PUT',\r\n url: '/Settings/PersonalSettings/Edit',\r\n data: JSON.stringify({\r\n FirstName: _this.EditModel.FirstName,\r\n LastName: _this.EditModel.LastName,\r\n Email: _this.EditModel.Email,\r\n PhoneNumber: _this.EditModel.PhoneNumber,\r\n Salutation: _this.EditModel.Salutation,\r\n Language: _this.EditModel.Language,\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n _this.close();\r\n location.reload();\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not edit personal settings: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not edit personal settings due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n this.EditModel = Object.assign({}, this.data.User);\r\n $('#edit-personal-settings-modal').modal('hide');\r\n\r\n // Enable save button again.\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n }\r\n });","import Vue from 'vue'\r\nimport VeeValidate from \"vee-validate\"\r\nimport { GridInstaller } from '@progress/kendo-grid-vue-wrapper'\r\nimport \"../Grid/Grid.less\"\r\nimport \"./Index.less\"\r\n\r\nif (document.getElementById('personal-settings-details')) {\r\n if (document.getElementById('personal-settings')) {\r\n require('./Edit.js');\r\n\r\n Vue.use(GridInstaller);\r\n Vue.use(VeeValidate);\r\n\r\n new Vue({\r\n el: '#personal-settings-details',\r\n components: {},\r\n data: {\r\n EditModel: window.detailModel\r\n },\r\n mounted: function () {\r\n if (getUrlParameter('action') === 'edit') {\r\n this.edit();\r\n }\r\n },\r\n methods: {\r\n edit: function () {\r\n $('#edit-personal-settings-modal').modal('show');\r\n }\r\n }\r\n });\r\n\r\n function getUrlParameter(name) {\r\n name = name.replace(/[\\[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\r\n const regex = new RegExp('[\\\\?&]' + name + '=([^&#]*)');\r\n const results = regex.exec(location.search);\r\n return results === null ? '' : decodeURIComponent(results[1].replace(/\\+/g, ' '));\r\n }\r\n }\r\n}","import Vue from 'vue'\r\n\r\nmodule.export = Vue.component('addportfoliomodal',\r\n {\r\n name: 'addportfolio',\r\n props: {\r\n data: Object\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n AddModel: {\r\n PortfolioName: '',\r\n PortfolioType: '',\r\n PortfolioAssetType: ''\r\n },\r\n ConnectableTypes: ['Contract', 'Cost Center', 'Organization Number', 'Asset Type', 'Asset Location Country', 'Asset Location City', 'Agreement Number'],\r\n ConnectableAssetTypes: ['Leased Assets', 'Non Leased Assets'],\r\n SelectConnections: false,\r\n searchText: '',\r\n dataSource: null,\r\n columns: [\r\n {\r\n 'field': 'Selected',\r\n 'title': ' ',\r\n 'filterable': false,\r\n 'template':\r\n `
\r\n \r\n \r\n
`,\r\n 'width': '40px'\r\n },\r\n { 'field': 'Name', 'title': 'Name', 'filterable': false }\r\n ]\r\n };\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n add: function (e) {\r\n e.preventDefault();\r\n this.ShowError = false;\r\n const _this = this;\r\n _this.clearAlert();\r\n let formattedType = _this.AddModel.PortfolioType.replace(/\\s/g, '');\r\n (formattedType == \"Contract\") && (formattedType = formattedType + \"Identifier\");\r\n const formattedAssetType = _this.AddModel.PortfolioAssetType.replace(/\\s/g, '');\r\n $(\"#saveButton\").prop(\"disabled\", true);\r\n const connections = _this.dataSource.filter(connection => connection.Selected).map(connection => connection.Id);\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: '/Portfolios/Add',\r\n data: JSON.stringify({\r\n name: _this.AddModel.PortfolioName,\r\n type: formattedType,\r\n assetType: formattedAssetType,\r\n connections: connections\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n _this.close();\r\n _this.$emit('portfolio-added');\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not add portfolio: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not add portfolio due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n },\r\n next: function (e) {\r\n e.preventDefault();\r\n const _this = this;\r\n this.SelectConnections = true;\r\n let formattedType = this.AddModel.PortfolioType.replace(/\\s/g, '');\r\n (formattedType == \"Contract\") && (formattedType = formattedType + \"Identifier\");\r\n const formattedAssetType = this.AddModel.PortfolioAssetType.replace(/\\s/g, '');\r\n\r\n $.ajax({\r\n type: 'GET',\r\n url: `/Portfolios/AvailablePortfolioConnections?portfolioType=${formattedType}&portfolioAssetType=${formattedAssetType}`,\r\n success: function (response) {\r\n _this.dataSource = response.map((connection) => {\r\n return {\r\n Selected: false,\r\n Id: connection.connectionValue,\r\n Name: connection.connectionDisplay ? `${connection.connectionValue} (${connection.connectionDisplay})` : connection.connectionValue\r\n };\r\n });\r\n },\r\n error: function (error) {\r\n reject(error);\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n },\r\n portfolioAssetTypeChanged: function () {\r\n if (this.AddModel.PortfolioAssetType === 'Non Leased Assets') {\r\n this.ConnectableTypes = ['Contract', 'Cost Center', 'Asset Type', 'Asset Location Country', 'Asset Location City', 'Agreement Number'];\r\n if (this.AddModel.PortfolioType === 'Organization Number') {\r\n this.AddModel.PortfolioType = 'Contract'\r\n }\r\n } else {\r\n this.ConnectableTypes = ['Contract', 'Cost Center', 'Organization Number', 'Asset Type', 'Asset Location Country', 'Asset Location City', 'Agreement Number'];\r\n }\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n this.AddModel = {\r\n PortfolioName: '',\r\n PortfolioType: '',\r\n PortfolioAssetType: ''\r\n };\r\n this.SelectConnections = false;\r\n this.dataSource = null;\r\n $('#add-portfolio--enter-name').modal('hide');\r\n\r\n // Enable save button again.\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n },\r\n search: function () {\r\n const filter = [];\r\n if (this.searchText) {\r\n filter.push({ field: 'Name', operator: 'contains', value: this.searchText });\r\n }\r\n this.$refs.grid.kendoWidget().dataSource.filter(filter);\r\n },\r\n gridOnDatabound: function (e) {\r\n const _this = this;\r\n const grid = _this.$refs.grid.kendoWidget();\r\n\r\n // Unregister previous checkbox click events\r\n grid.element.off('click', '.k-grid-content tr');\r\n grid.element.on('click', '.k-grid-content tr', function (e) {\r\n const row = grid.dataItem($(this).closest(\"tr[data-uid]\"));\r\n _this.dataSource = _this.dataSource.map(item => {\r\n if (item.Name === row.Name) {\r\n item.Selected = !item.Selected;\r\n }\r\n return item;\r\n });\r\n });\r\n }\r\n }\r\n });","import Vue from 'vue'\r\n\r\nmodule.export = Vue.component('addconnectionmodal',\r\n {\r\n name: 'addconnection',\r\n props: {\r\n data: Array\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n AddConnectionsModel: Object.assign([], this.data), //create deep a copy of the object\r\n showBackoffice: window.detailModel.PortfolioType == 'ContractIdentifier' && window.detailModel.PortfolioAssetType == 'LeasedAssets',\r\n searchText: '',\r\n backOfficeFilter: \"Select backoffice\",\r\n backOffices: [],\r\n dataSource: {\r\n data: window.detailModel.SelectConnections\r\n },\r\n columns: [\r\n { 'field': 'Selected', 'title': ' ', 'filterable': false, 'template': '
', 'width': '40px' },\r\n { 'field': 'Name', 'title': 'name', 'filterable': false }\r\n ]\r\n };\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n add: function (e) {\r\n e.preventDefault();\r\n const grid = this.$refs.grid.kendoWidget();\r\n const selectedConnections = grid.dataSource.data().filter(i => i.Selected).map(i => i.Id);\r\n const _this = this;\r\n _this.clearAlert();\r\n $(\"#addButton\").prop(\"disabled\", true);\r\n $.ajax({\r\n type: 'POST',\r\n url: '/Portfolios/UpdateConnections',\r\n data: JSON.stringify({\r\n portfolioId: window.detailModel.PortfolioId,\r\n selectedConnections: selectedConnections,\r\n portfolioType: window.detailModel.PortfolioType,\r\n portfolioAssetType: window.detailModel.PortfolioAssetType\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n let url = new URL(location.href);\r\n url.searchParams.delete('action');\r\n window.location.href = url.href;\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not update connections: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#addButton\").removeAttr(\"disabled\");\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": \"Could not update connections due to a server error\",\r\n \"isSuccess\": false\r\n });\r\n $(\"#addButton\").removeAttr(\"disabled\");\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.AddUserModel = Object.assign({}, this.data);\r\n this.clearAlert();\r\n $('#edit-portfolio--add-connection').modal('hide');\r\n\r\n // Enable save button again.\r\n $(\"#addButton\").removeAttr(\"disabled\");\r\n },\r\n search: function () {\r\n const filter = [];\r\n if (this.backOfficeFilter != \"Select backoffice\") {\r\n filter.push({ field: 'BackOfficeSource', operator: 'contains', value: this.backOfficeFilter });\r\n }\r\n if (this.searchText) {\r\n filter.push({ field: 'Id', operator: 'contains', value: this.searchText });\r\n }\r\n this.$refs.grid.kendoWidget().dataSource.filter(filter);\r\n },\r\n setBackoffices: function () {\r\n const allBackoffices = window.detailModel.SelectConnections.flatMap((element) => !element.BackOfficeSource ? [] : element.BackOfficeSource);\r\n this.backOffices = [...new Set(allBackoffices)];\r\n },\r\n gridOnDatabound: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n this.setBackoffices();\r\n grid.element.off('click', '.visual-checkbox');\r\n grid.element.on('click', '.visual-checkbox',\r\n function (e) {\r\n e.preventDefault();\r\n const cb = this.querySelector(\"input[type='checkbox']\");\r\n cb.checked = !cb.checked;\r\n const user = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n user.Selected = cb.checked;\r\n if (cb.checked) {\r\n $(this.parentElement).addClass(\"state-selected\");\r\n } else {\r\n $(this.parentElement).removeClass(\"state-selected\");\r\n }\r\n });\r\n }\r\n }\r\n });","import Vue from 'vue'\r\nlet timer = 0;\r\n\r\nmodule.export = Vue.component('addusertoportfoliomodal',\r\n {\r\n name: 'addusertoportfolio',\r\n props: {\r\n data: Array\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n AddUsersModel: Object.assign([], this.data), //create deep a copy of the object\r\n searchText: '',\r\n dataSource: {\r\n data: window.detailModel.SelectPortfolioUsers\r\n },\r\n isSearching: false,\r\n columns: [\r\n { 'field': 'Selected', 'title': ' ', 'filterable': false, 'template': '
', 'width': '40px' },\r\n { 'field': 'Name', 'title': 'User', 'filterable': false }\r\n ]\r\n };\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n add: function (e) {\r\n e.preventDefault();\r\n const grid = this.$refs.grid.kendoWidget();\r\n const selectedUsers = grid.dataSource.data().filter(i => i.Selected).map(i => i.Id);\r\n const _this = this;\r\n _this.clearAlert();\r\n $(\"#addButton\").prop(\"disabled\", true);\r\n $.ajax({\r\n type: 'POST',\r\n url: '/Portfolios/SaveUsers',\r\n data: JSON.stringify({\r\n portfolioId: window.detailModel.PortfolioId,\r\n selectedUsers: selectedUsers\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n let url = new URL(location.href);\r\n url.searchParams.delete('action');\r\n window.location.href = url.href;\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not add users: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#addButton\").removeAttr(\"disabled\");\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not add users due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#addButton\").removeAttr(\"disabled\");\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n this.searchText = \"\";\r\n this.isSearching = false;\r\n this.AddUserModel = Object.assign({}, this.data);\r\n $('#edit-portfolio--add-user').modal('hide');\r\n\r\n // Enable save button again.\r\n $(\"#addButton\").removeAttr(\"disabled\");\r\n },\r\n search: function () {\r\n const _this = this;\r\n\r\n if (_this.searchText) {\r\n window.clearTimeout(timer);\r\n timer = window.setTimeout(() => {\r\n _this.isSearching = true;\r\n _this.applyFilters({ field: 'Name', operator: 'contains', value: _this.searchText });\r\n }, 250); \r\n } else {\r\n _this.isSearching = false;\r\n _this.applyFilters([]);\r\n }\r\n },\r\n applyFilters: function (filters) {\r\n this.$refs.grid.kendoWidget().dataSource.filter(filters);\r\n },\r\n clearSearch: function () {\r\n this.searchText = '';\r\n this.search();\r\n },\r\n gridOnDatabound: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const _this = this;\r\n grid.element.off('click', '.visual-checkbox');\r\n grid.element.on('click', '.visual-checkbox',\r\n function (e) {\r\n e.preventDefault();\r\n const cb = this.querySelector(\"input[type='checkbox']\");\r\n cb.checked = !cb.checked;\r\n const user = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n user.Selected = cb.checked;\r\n if (cb.checked) {\r\n $(this.parentElement).addClass(\"state-selected\");\r\n } else {\r\n $(this.parentElement).removeClass(\"state-selected\");\r\n }\r\n });\r\n }\r\n }\r\n });","import Vue from 'vue'\r\nimport VeeValidate from \"vee-validate\"\r\nimport { GridInstaller } from '@progress/kendo-grid-vue-wrapper'\r\nimport \"./Details.less\"\r\nimport \"../Grid/Grid.less\"\r\n\r\nif (document.getElementById('portfolio-details')) {\r\n if (document.getElementById('portfolioandusers')) {\r\n require(\"../Alerts/Alerts.js\");\r\n require('./AddUser.js');\r\n require('./Edit.js');\r\n require('./UserRights.js');\r\n \r\n Vue.use(GridInstaller);\r\n Vue.use(VeeValidate);\r\n\r\n new Vue({\r\n el: '#portfolioandusers',\r\n components: {},\r\n data: {\r\n alerts: [],\r\n EditModel: window.detailModel,\r\n AddUsersModel: window.detailModel.SelectPortfolioUsers,\r\n connectionType: window.detailModel.FormattedType,\r\n assetType: window.detailModel.FormattedAssetType,\r\n User: {},\r\n UserRights: {},\r\n dataSource: {\r\n data: window.detailModel.PortfolioUsers,\r\n pageSize: 20\r\n },\r\n pageable: {\r\n buttonCount: 3,\r\n info: true,\r\n type: 'numeric',\r\n pageSizes: [10, 20, 30, 50],\r\n previousNext: true\r\n },\r\n skip: 0,\r\n take: 20,\r\n columns: [\r\n { 'field': 'Name', 'title': 'User', 'filterable': false },\r\n { 'title': ' ', 'filterable': false, 'template': '', 'width': '90px' }\r\n ]\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n edit: function () {\r\n $('#edit-portfolio--change-name').modal('show');\r\n },\r\n addUser: function () {\r\n $('#edit-portfolio--add-user').modal('show');\r\n },\r\n gridOnDatabound: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const _this = this;\r\n grid.element.on('click', '.anchor-changeuserrights',\r\n function (e) {\r\n e.preventDefault();\r\n const user = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n _this.User = {\r\n Id: user.Id,\r\n Name: user.Name\r\n };\r\n _this.UserRights = user.Rights;\r\n $('#edit-portfolio--user-rights').modal('show');\r\n });\r\n grid.element.on('click', '.anchor-removeuser',\r\n function (e) {\r\n e.preventDefault();\r\n const user = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n $.ajax({\r\n type: 'POST',\r\n url: '/Portfolios/RemoveUser',\r\n data: JSON.stringify({\r\n userId: user.Id,\r\n portfolioId: window.detailModel.PortfolioId\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n let url = new URL(location.href);\r\n url.searchParams.delete('action');\r\n window.location.href = url.href;\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not remove user: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not remove user due to a server error',\r\n \"isSuccess\": false\r\n });\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n });\r\n }\r\n }\r\n });\r\n }\r\n if (document.getElementById('connections')) {\r\n require('./AddConnection.js');\r\n\r\n new Vue({\r\n el: '#connections',\r\n components: {},\r\n data: {\r\n alerts: [],\r\n AddConnectionsModel: window.detailModel.SelectConnections,\r\n dataSource: {\r\n data: window.detailModel.Connections,\r\n pageSize: 20\r\n },\r\n pageable: {\r\n buttonCount: 3,\r\n info: true,\r\n type: 'numeric',\r\n pageSizes: [10, 20, 30, 50],\r\n previousNext: true\r\n },\r\n skip: 0,\r\n take: 20,\r\n columns: []\r\n },\r\n created: function () {\r\n this.loadColumns();\r\n },\r\n mounted: function () {\r\n if (getUrlParameter('action') === 'edit') {\r\n const connectionsTab = document.getElementById('tab2');\r\n connectionsTab.checked = true;\r\n this.addConnection();\r\n }\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n addConnection: function () {\r\n $('#edit-portfolio--add-connection').modal('show');\r\n },\r\n loadColumns: function (e) {\r\n let rowactions = '';\r\n this.columns.push({ 'field': 'Name', 'title': 'name', 'filterable': false });\r\n if (window.detailModel.FormattedType == 'Contract') {\r\n this.columns.push({ 'field': 'BackOfficeSource', 'title': 'Back office', 'filterable': false });\r\n if (window.detailModel.ContractDetailsUrl !== null) {\r\n rowactions += '';\r\n }\r\n else {\r\n rowactions += '';\r\n }\r\n }\r\n rowactions += '';\r\n this.columns.push({ 'title': ' ', 'filterable': false, 'template': rowactions, 'width': '90px' })\r\n },\r\n gridOnDatabound: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const _this = this;\r\n grid.element.on('click', '.anchor-viewcontract',\r\n function (e) {\r\n e.preventDefault();\r\n if (window.detailModel.ContractDetailsUrl !== null) {\r\n const contract = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n window.location.href = window.detailModel.ContractDetailsUrl + \"?id=\" + contract.Id;\r\n }\r\n });\r\n grid.element.on('click', '.anchor-removeconnection',\r\n function (e) {\r\n e.preventDefault();\r\n _this.clearAlert();\r\n const connection = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n const updateConnections = window.detailModel.Connections.map(x => x.Id);\r\n updateConnections.splice(updateConnections.indexOf(connection.Id), 1);\r\n $.ajax({\r\n type: 'POST',\r\n url: '/Portfolios/UpdateConnections',\r\n data: JSON.stringify({\r\n portfolioId: window.detailModel.PortfolioId,\r\n selectedConnections: updateConnections,\r\n portfolioType: window.detailModel.PortfolioType,\r\n portfolioAssetType: window.detailModel.PortfolioAssetType\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n let url = new URL(location.href);\r\n url.searchParams.delete('action');\r\n window.location.href = url.href;\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not remove connection: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not remove connection due to a server error',\r\n \"isSuccess\": false\r\n });\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n });\r\n }\r\n }\r\n });\r\n }\r\n function getUrlParameter(name) {\r\n name = name.replace(/[\\[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\r\n const regex = new RegExp('[\\\\?&]' + name + '=([^&#]*)');\r\n const results = regex.exec(location.search);\r\n return results === null ? '' : decodeURIComponent(results[1].replace(/\\+/g, ' '));\r\n }\r\n}","import Vue from 'vue'\r\n\r\nmodule.export = Vue.component('editportfoliomodal',\r\n {\r\n name: 'editportfolio',\r\n props: {\r\n data: Object\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n EditModel: Object.assign({}, this.data), //create deep a copy of the object\r\n connectableTypes: window.detailModel.FormattedAssetType == 'Non Leased Assets' ? ['Contract', 'Cost Center', 'Asset Type', 'Asset Location Country', 'Asset Location City', 'Agreement Number'] : ['Contract', 'Cost Center', 'Organization Number', 'Asset Type', 'Asset Location Country', 'Asset Location City', 'Agreement Number'],\r\n connectableAssetTypes: ['Leased Assets', 'Non Leased Assets'],\r\n connectionType: window.detailModel.FormattedType,\r\n assetType: window.detailModel.FormattedAssetType\r\n };\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n save: function (e) {\r\n e.preventDefault();\r\n const _this = this;\r\n _this.clearAlert();\r\n let formattedType = _this.connectionType.replace(/\\s/g, '');\r\n (formattedType == \"Contract\") && (formattedType = formattedType + \"Identifier\");\r\n const typeChanged = formattedType !== _this.EditModel.PortfolioType;\r\n const formattedAssetType = _this.assetType.replace(/\\s/g, '');\r\n const assetTypeChanged = formattedAssetType !== _this.EditModel.PortfolioAssetType;\r\n $(\"#saveButton\").prop(\"disabled\", true);\r\n $.ajax({\r\n type: 'POST',\r\n url: '/Portfolios/Edit',\r\n data: JSON.stringify({\r\n portfolioId: _this.EditModel.PortfolioId,\r\n portfolioName: _this.EditModel.PortfolioName,\r\n portfolioType: typeChanged ? formattedType : null,\r\n portfolioAssetType: assetTypeChanged ? formattedAssetType : null\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n _this.close();\r\n let url = new URL(location.href);\r\n url.searchParams.delete('action');\r\n window.location.href = url.href;\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not change portfolio: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not change portfolio due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n },\r\n assetTypeChanged: function() {\r\n if (this.assetType === 'Non Leased Assets') {\r\n this.connectableTypes = ['Contract', 'Cost Center', 'Asset Type', 'Asset Location Country', 'Asset Location City', 'Agreement Number'];\r\n if (this.connectionType === 'Organization Number') {\r\n this.connectionType = 'Contract'\r\n }\r\n } else {\r\n this.connectableTypes = ['Contract', 'Cost Center', 'Organization Number', 'Asset Type', 'Asset Location Country', 'Asset Location City', 'Agreement Number'];\r\n }\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n this.EditModel = Object.assign({}, this.data);\r\n $('#edit-portfolio--change-name').modal('hide');\r\n\r\n // Enable save button again.\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n }\r\n });","import Vue from 'vue'\r\nimport VeeValidate from \"vee-validate\"\r\nimport axios from 'axios';\r\nimport { GridInstaller } from '@progress/kendo-grid-vue-wrapper'\r\nimport { encodeAndCompressToHash, decodeAndDecompressFromHash } from '../Shared/grid-utils'\r\n\r\nif (document.getElementById('vue-portfolios-overview')) {\r\n const actionbar = require(\"../Actionbar/Actionbar.js\");\r\n const alerts = require(\"../Alerts/Alerts.js\");\r\n require(\"./Add.js\");\r\n require(\"./Edit.js\");\r\n\r\n Vue.use(GridInstaller);\r\n Vue.use(VeeValidate);\r\n\r\n new Vue({\r\n el: '#vue-portfolios-overview',\r\n components: {},\r\n data: function () {\r\n return {\r\n GridConfiguration: window.preLoadedData.GridConfiguration,\r\n AddModel: {\r\n PortfolioName: ''\r\n },\r\n dataSource: {\r\n data: [],\r\n transport: {\r\n saveToHash: undefined,\r\n pageRefresh: true,\r\n read: async function (options) {\r\n const _this = this;\r\n axios.post(\"/Portfolios/List\", options.data)\r\n .then(result => {\r\n _this.saveToHash();\r\n options.success(result.data);\r\n }).catch(error => {\r\n options.error(error);\r\n }); \r\n },\r\n parameterMap: function (options) {\r\n return kendo.stringify(options);\r\n }\r\n },\r\n serverPaging: true,\r\n serverFiltering: true,\r\n serverSorting: true,\r\n pageSize: 20,\r\n schema: {\r\n data: \"data\",\r\n total: \"total\"\r\n }\r\n },\r\n pageable: {\r\n buttonCount: 3,\r\n info: true,\r\n type: 'numeric',\r\n pageSizes: [10, 20, 30, 50],\r\n previousNext: true\r\n },\r\n columns: [\r\n {\r\n 'field': 'selected',\r\n 'title': ' ',\r\n 'filterable': false,\r\n 'sortable': false,\r\n 'headerTemplate':\r\n `
\r\n \r\n \r\n \r\n \r\n
`,\r\n 'template':\r\n `
\r\n \r\n \r\n \r\n \r\n
`,\r\n 'width': '40px'\r\n },\r\n { 'field': 'portFolioDisplayName', 'title': 'Portfolio', 'filterable': false },\r\n { 'field': 'connectionType', 'title': 'Connect to', 'filterable': false },\r\n { 'field': 'connections', 'title': 'Connections', 'filterable': false, 'template': '#: connections #' },\r\n { 'field': 'assetType', 'title': 'For assets of type', 'filterable': false },\r\n { 'field': 'portfolioUsers', 'title': 'Users', 'filterable': false, 'template': '#: portfolioUsers #' },\r\n { 'title': ' ', 'filterable': false, 'template': '', 'width': '90px' }\r\n ],\r\n actionbar: window.preLoadedData.Actionbar,\r\n currentHash: undefined,\r\n searchValue: undefined,\r\n popState: false,\r\n search: {\r\n visible: true\r\n },\r\n alerts: []\r\n };\r\n },\r\n created: function () {\r\n this.actionbar.searchVisible = true;\r\n this.dataSource.transport.saveToHash = this.saveToHash;\r\n },\r\n mounted: async function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const _this = this;\r\n grid.element.on('click', '.visual-checkbox',\r\n function (e) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n const cb = this.querySelector(\"input[type='checkbox']\");\r\n cb.checked = !cb.checked;\r\n if (cb.checked) {\r\n $(this.parentElement).addClass(\"state-selected\");\r\n } else {\r\n $(this.parentElement).removeClass(\"state-selected\");\r\n }\r\n const dataItem = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n if (dataItem) {\r\n dataItem.selected = cb.checked;\r\n } else {\r\n grid.dataSource.data().forEach(item => item.selected = cb.checked );\r\n }\r\n\r\n _this.selectOnChange();\r\n grid.refresh();\r\n });\r\n \r\n //Get Delete portfolios button and set visibility to false on page load. Should only be visible when an item is selected.\r\n const deletePortfolioButton = this.actionbar.ItemsRight.find(f => f.event === \"ab-delete-portfolios\") ? this.actionbar.ItemsRight.find(f => f.event === \"ab-delete-portfolios\") : this.actionbar.ItemsLeft.find(f => f.event === \"ab-delete-portfolios\");\r\n if (deletePortfolioButton != null) {\r\n deletePortfolioButton.visible = false;\r\n }\r\n \r\n await this.restoreFromHash();\r\n\r\n window.onpopstate = function (event) {\r\n if (window.location.hash !== _this.currentHash) {\r\n _this.popState = true;\r\n _this.restoreFromHash();\r\n }\r\n };\r\n },\r\n methods: {\r\n /**\r\n * Save current state to URL hash\r\n */\r\n saveToHash: async function () {\r\n if (this.popState) {\r\n this.currentHash = window.location.hash;\r\n this.popState = false;\r\n return;\r\n }\r\n const grid = this.$refs.grid.kendoWidget();\r\n const gridOptions = grid.getOptions();\r\n const objectToHash = {\r\n searchValue: this.searchValue,\r\n options: gridOptions\r\n };\r\n const encodedHash = await encodeAndCompressToHash(objectToHash);\r\n this.currentHash = `#${encodedHash}`;\r\n \r\n if (!window.location.hash) {\r\n history.replaceState(null, \"\", window.location.href + this.currentHash);\r\n }\r\n window.location.hash = encodedHash;\r\n },\r\n\r\n /**\r\n * Restore grid state from URL hash\r\n * @param {*} fetch fetch data if true, false if not\r\n */\r\n restoreFromHash: async function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n let objectFromHash = null;\r\n const encodedHash = window.location.hash.replace('#', '');\r\n if (encodedHash) {\r\n objectFromHash = await decodeAndDecompressFromHash(encodedHash);\r\n if (objectFromHash.options) {\r\n grid.setOptions(objectFromHash.options); \r\n }\r\n this.searchValue = objectFromHash.searchValue;\r\n if (this.searchValue) {\r\n this.$refs.actionbar.updateSearchText(this.searchValue);\r\n }\r\n }\r\n }, \r\n refreshGrid: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n grid.dataSource.read();\r\n },\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n addTooltip: function addTooltipToTableHeaders(grid) {\r\n grid.element[0].querySelectorAll(\".k-header\").forEach(element => {\r\n const title = $(element).data(\"title\");\r\n\r\n if (!/<[a-z\\][\\s\\S]*>/i.test(title)) {\r\n\r\n $(element).attr('title', title);\r\n }\r\n });\r\n },\r\n actionbarSelectAll: function (checked) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n if (checked) {\r\n grid.dataSource.data().forEach(i => i.selected = true);\r\n } else {\r\n grid.dataSource.data().forEach(i => i.selected = false);\r\n }\r\n this.setHeaderSelectAll(grid, checked);\r\n this.selectOnChange();\r\n grid.refresh();\r\n },\r\n setHeaderSelectAll: function (grid, checked)\r\n {\r\n const cb = grid.element[0].querySelector(\".k-grid-header .visual-checkbox input[type='checkbox']\");\r\n cb.checked = checked;\r\n if (cb.checked) {\r\n $(cb.parentElement.parentElement).addClass(\"state-selected\");\r\n\r\n } else {\r\n $(cb.parentElement.parentElement).removeClass(\"state-selected\");\r\n }\r\n },\r\n actionbarAddPortfolio: function () {\r\n $('#add-portfolio--enter-name').modal('show');\r\n },\r\n actionbarDeletePortfolios: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const selectedItems = grid.dataSource.data().filter(i => i.selected);\r\n if (selectedItems.length >= 1) {\r\n $('#delete-portfolio--confirm').modal('show');\r\n } else {\r\n alert('Please select one or more portfolio\\'s to delete');\r\n }\r\n },\r\n confirmedDeletePortfolio: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const selectedItems = grid.dataSource.data().filter(i => i.selected).map(i => i.id);\r\n const _this = this;\r\n $.ajax({\r\n type: \"POST\",\r\n url: \"/Portfolios/Delete\",\r\n data: JSON.stringify({\r\n portfolioIds: selectedItems\r\n }),\r\n success: function (data) {\r\n $(\"#delete-portfolio--confirm\").modal('hide');\r\n\r\n if (!data.success) {\r\n _this.addAlert({\r\n \"message\": data.message,\r\n \"isSuccess\": false\r\n });\r\n } else {\r\n _this.refreshGrid();\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert({\r\n \"message\": \"Could not delete portfolio(\\'s)!\",\r\n \"isSuccess\": false\r\n });\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n },\r\n actionbarSearch: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n let filter = {};\r\n if (e !== null && e !== '') {\r\n this.searchValue = e.trim();\r\n filter = { logic: 'or', filters: [] };\r\n grid.columns.forEach(function (x) {\r\n if (x.field) {\r\n filter.filters.push({\r\n field: x.field,\r\n operator: 'contains',\r\n value: e.trim()\r\n });\r\n }\r\n });\r\n } else {\r\n this.searchValue = undefined;\r\n }\r\n grid.dataSource.filter(filter);\r\n },\r\n gridOnDatabound: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n grid.element.unbind('dblclick');\r\n\r\n grid.element.on('dblclick', 'tbody tr[data-uid]',\r\n function (e) {\r\n const selectedItems = grid.select().toArray().map(function (s) { return grid.dataItem(s).id; });\r\n if (selectedItems.length === 1) {\r\n window.location.href = \"./Portfolios/Details?id=\" + selectedItems[0] + \"&overviewUrl=\" + encodeURIComponent(window.location.pathname + window.location.hash);\r\n }\r\n });\r\n\r\n grid.element.on('click', '.anchor-view',\r\n function (e) {\r\n e.preventDefault();\r\n const selectedItems = grid.select().toArray().map(function (s) { return grid.dataItem(s).id; });\r\n if (selectedItems.length === 1) {\r\n window.location.href = \"./Portfolios/Details?id=\" + selectedItems[0] + \"&overviewUrl=\" + encodeURIComponent(window.location.pathname + window.location.hash);\r\n }\r\n });\r\n\r\n grid.element.on('click', '.anchor-edit',\r\n function (e) {\r\n e.preventDefault();\r\n const selectedItems = grid.select().toArray().map(function (s) { return grid.dataItem(s).id; });\r\n if (selectedItems.length === 1) {\r\n window.location.href = \"./Portfolios/Details?id=\" + selectedItems[0] + \"&action=edit&overviewUrl=\" + encodeURIComponent(window.location.pathname + window.location.hash);\r\n }\r\n });\r\n\r\n this.addTooltip(grid);\r\n },\r\n selectOnChange: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const selected = grid.dataSource.data().filter(i => i.selected);\r\n\r\n const selectAll = document.getElementById('actionbarSelectAll');\r\n if (selectAll.checked && selected.length < grid.tbody[0].rows.length) {\r\n selectAll.checked = false;\r\n }\r\n\r\n //Delete button Should only be visible when an item is selected.\r\n const deletePortfolioButton = this.actionbar.ItemsRight.find(f => f.event === \"ab-delete-portfolios\") ? this.actionbar.ItemsRight.find(f => f.event === \"ab-delete-portfolios\") : this.actionbar.ItemsLeft.find(f => f.event === \"ab-delete-portfolios\");\r\n if (deletePortfolioButton != null) {\r\n deletePortfolioButton.visible = selected.length > 0;\r\n } \r\n }\r\n }\r\n });\r\n $('.k-header').dblclick(function (e) {\r\n if (e.offsetY > $(this).outerHeight() - 2) {\r\n this.width = getTextWidth(this.textContent, this.font);\r\n //get column number\r\n const colNr = this.getAttribute(\"data-index\");\r\n //select column\r\n //add search in class k-grid-content\r\n const gridCols = document.getElementById(\"portfolios-overview-grid\").getElementsByClassName(\"k-grid-content\")[0].querySelector(\"colgroup\").childNodes;\r\n gridCols[colNr].width = $(this).outerWidth();\r\n }\r\n })\r\n}\r\n","import Vue from 'vue'\r\n\r\nmodule.export = Vue.component('userrightsmodal',\r\n {\r\n name: 'userrights',\r\n props: {\r\n user: Object,\r\n userRights: Object\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n User: this.user,\r\n UserRights: this.userRights,\r\n columns: [\r\n { 'field': 'Selected', 'title': ' ', 'filterable': false, 'template': '
', 'width': '40px' },\r\n { 'field': 'Name', 'title': 'Rights', 'filterable': false },\r\n ]\r\n };\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n save: function (e) {\r\n e.preventDefault();\r\n const grid = this.$refs.grid.kendoWidget();\r\n const rights = grid.dataSource.data().filter(i => i.Selected).map(i => i.Id);\r\n const _this = this;\r\n _this.clearAlert();\r\n $(\"#saveButton\").prop(\"disabled\", true);\r\n $.ajax({\r\n type: 'POST',\r\n url: '/Portfolios/SavePortfolioRights?userId=' + _this.user.Id,\r\n data: JSON.stringify({\r\n portfolioId: window.detailModel.PortfolioId,\r\n rights: rights\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n location.reload();\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not save portfolio rights: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not save portfolio rights due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.clearAlert();\r\n $('#edit-portfolio--user-rights').modal('hide');\r\n\r\n // Enable save button again.\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n },\r\n setAsDefault: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const rights = grid.dataSource.data().filter(i => i.Selected).map(i => i.Id);\r\n const _this = this;\r\n _this.clearAlert();\r\n $(\"#saveButton\").prop(\"disabled\", true);\r\n $.ajax({\r\n type: 'POST',\r\n url: '/Portfolios/SaveDefaultPortfolioRights',\r\n data: JSON.stringify({\r\n portfolioId: window.detailModel.PortfolioId,\r\n rights: rights\r\n }),\r\n success: function (data) {\r\n if (data.success) {\r\n location.reload();\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not set default portfolio rights: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not set default portfolio rights due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n },\r\n gridOnDatabound: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n grid.element.on('click', '.visual-checkbox',\r\n function (e) {\r\n e.preventDefault();\r\n const cb = this.querySelector(\"input[type='checkbox']\");\r\n cb.checked = !cb.checked;\r\n const right = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n right.Selected = cb.checked;\r\n if (cb.checked) {\r\n $(this.parentElement).addClass(\"state-selected\");\r\n } else {\r\n $(this.parentElement).removeClass(\"state-selected\");\r\n }\r\n });\r\n }\r\n }\r\n });","import Vue from 'vue'\r\nimport \"./PhotoSelector.less\"\r\n\r\nmodule.export = Vue.component('selectpreviewphotomodal',\r\n {\r\n name: 'selectpreviewphotomodal',\r\n props: {\r\n data: Object,\r\n visible: Boolean\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n alerts: [],\r\n SelectPreviewPhotoModel: Object.assign({}, this.data),\r\n selectedPreviewPhotoIndex: null,\r\n RenderImages: false,\r\n previousIndex: -1\r\n };\r\n },\r\n watch: {\r\n 'data': function (newData) {\r\n this.SelectPreviewPhotoModel = Object.assign({}, newData);\r\n\r\n if (this.SelectPreviewPhotoModel.selectedPhoto) {\r\n this.selectedPreviewPhotoIndex = this.SelectPreviewPhotoModel.availablePhotos.findIndex(x => x.Id === this.SelectPreviewPhotoModel.selectedPhoto.Id);\r\n this.previousIndex = this.selectedPreviewPhotoIndex;\r\n }\r\n else {\r\n this.selectedPreviewPhotoIndex = -1;\r\n this.previousIndex = -1;\r\n }\r\n },\r\n 'visible': function (isVisible) {\r\n this.RenderImages = isVisible;\r\n }\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n resetForm: function () {\r\n this.clearAlert();\r\n },\r\n selectPhoto: function (index) {\r\n this.selectedPreviewPhotoIndex = index;\r\n },\r\n validateBeforeSubmit: function (e) {\r\n const _this = this;\r\n if (this.selectedPreviewPhotoIndex >= 0) {\r\n $(\"#saveButton\").prop(\"disabled\", true);\r\n const mdl = {\r\n OldPreviewAttachment: this.previousIndex >= 0 ? this.SelectPreviewPhotoModel.availablePhotos[this.previousIndex] : null,\r\n NewPreviewAttachment: this.SelectPreviewPhotoModel.availablePhotos[this.selectedPreviewPhotoIndex]\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url: '/Documents/UpdatePreview',\r\n data: JSON.stringify(mdl),\r\n success: function (data) {\r\n if (data.success) {\r\n _this.$emit('preview-changed', \"Preview image changed succesfully.\", _this.selectedPreviewPhotoIndex);\r\n _this.previousIndex = _this.selectedPreviewPhotoIndex;\r\n _this.resetForm();\r\n $(\"#select-preview-photo\").modal('hide');\r\n }\r\n else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not update preview image: ${data.data}`,\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n },\r\n error: function (data) {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not update preview image due to a server error',\r\n \"isSuccess\": false\r\n });\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n },\r\n contentType: \"application/json\",\r\n dataType: 'json'\r\n });\r\n }\r\n else {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Select one of the photos below',\r\n \"isSuccess\": false\r\n });\r\n }\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n $(\"#select-preview-photo\").modal('hide');\r\n this.selectedPreviewPhotoIndex = -1;\r\n this.SelectPreviewPhotoModel = Object.assign({}, this.data);\r\n // Enable open button again.\r\n $(\"#saveButton\").removeAttr(\"disabled\");\r\n }\r\n }\r\n });\r\n","import Vue from 'vue'\r\nimport axios from 'axios';\r\nimport { formatDateTimeToDate } from '../Shared/date-utils';\r\nimport { encodeAndCompressToHash, decodeAndDecompressFromHash } from '../Shared/grid-utils'\r\n\r\nmodule.export = Vue.component('queryableGridComponent',\r\n {\r\n name: 'queryableGridComponent',\r\n props: {\r\n setup: Object,\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n gridData: {\r\n data: [],\r\n serverPaging: true,\r\n serverFiltering: true,\r\n serverSorting: true,\r\n transport: {\r\n pagedData: undefined,\r\n formatFilters: undefined,\r\n fetchPagedData: undefined,\r\n restoreFromHash: undefined,\r\n saveToHash: undefined,\r\n\r\n read: async function (options) {\r\n const _this = this;\r\n this.formatFilters(options.data.filter);\r\n const objectFromHash = await this.restoreFromHash(false, options.data.filter === undefined && options.data.sort === undefined && !this.pagedData.searchClearOut, !this.pagedData.isApplyingFilter, options);\r\n\r\n this.pagedData.searchClearOut = false;\r\n\r\n let pageToken = null;\r\n if (!objectFromHash || !objectFromHash.pagedData || this.pagedData.isApplyingFilter) {\r\n this.pagedData.offset.start = 1;\r\n this.pagedData.tokens.values = [];\r\n this.pagedData.tokens.index = -1;\r\n } else {\r\n pageToken = objectFromHash.pageToken;\r\n }\r\n\r\n if (this.pagedData.isApplyingFilter) {\r\n this.pagedData.isApplyingFilter = undefined;\r\n }\r\n\r\n const sortingHasChanged = this.pagedData.previousSort && options.data.sort && this.pagedData.previousSort.length == 1 && options.data.sort.length == 1 && (this.pagedData.previousSort[0].dir !== options.data.sort[0].dir || this.pagedData.previousSort[0].field !== options.data.sort[0].field);\r\n\r\n if (((this.pagedData.previousSort == undefined || this.pagedData.previousSort.length == 0) && options.data.sort) ||\r\n ((options.data.sort == undefined || options.data.sort.length == 0) && this.pagedData.previousSort) ||\r\n sortingHasChanged) {\r\n this.pagedData.offset.start = 1;\r\n this.pagedData.tokens.values = [];\r\n this.pagedData.tokens.index = -1;\r\n pageToken = null;\r\n }\r\n this.pagedData.previousSort = options.data.sort;\r\n this.fetchPagedData(pageToken).then(\r\n (response) => {\r\n _this.saveToHash(pageToken, this.pagedData, options.data.filter, options.data.sort);\r\n options.success(response);\r\n },\r\n (error) => {\r\n options.error(error);\r\n }\r\n );\r\n }\r\n },\r\n schema: {\r\n data: \"items\",\r\n total: \"totalCount\",\r\n model: {\r\n id: \"id\",\r\n fields: {}\r\n }\r\n }\r\n },\r\n pagedData: {\r\n tokens: {\r\n index: -1,\r\n values: []\r\n },\r\n offset: {\r\n start: 1,\r\n end: undefined\r\n },\r\n limit: undefined,\r\n overrideLimit: undefined,\r\n totalCount: 0,\r\n isFetching: undefined,\r\n selectAll: false,\r\n globalSelection: [],\r\n isApplyingFilter: undefined,\r\n searchClearOut: false,\r\n previousSort: undefined\r\n },\r\n gridColumns: undefined,\r\n currentHash: undefined,\r\n searchValue: undefined,\r\n actionbar: undefined,\r\n portfolioSelector: undefined,\r\n selectedPortfolios: [],\r\n filterDropdownFields: []\r\n };\r\n },\r\n created: function () {\r\n this.gridColumns = this.buildColumns();\r\n this.pagedData.limit = this.setup.pageSizes.default;\r\n this.setup.selectAll = this.selectAll;\r\n this.setup.customFilter = this.customFilter;\r\n this.setup.refreshLayout = this.refreshLayout;\r\n this.setup.search = this.search;\r\n this.setup.globalSelection = this.globalSelection;\r\n this.setup.selectedCount = this.selectedCount;\r\n this.setup.totalCount = this.totalCount;\r\n this.setup.export = this.export;\r\n this.setup.refreshData = this.refreshData;\r\n this.setup.refreshCurrentPage = this.refreshCurrentPage\r\n this.setup.setActionbar = this.setActionbar;\r\n this.setup.getActiveFilters = this.getActiveFilters;\r\n this.setup.setActiveFilters = this.setActiveFilters;\r\n this.setup.getActiveSorting = this.getActiveSorting;\r\n this.setup.setActiveSorting = this.setActiveSorting;\r\n this.setup.getPortfolioSelectorValues = this.getPortfolioSelectorValues;\r\n this.setup.setPortfolioSelector = this.setPortfolioSelector;\r\n this.gridData.pageSize = this.setup.pageSizes.default;\r\n this.gridData.transport.pagedData = this.pagedData;\r\n this.gridData.transport.formatFilters = this.formatFilters;\r\n this.gridData.transport.fetchPagedData = this.fetchPagedData;\r\n this.gridData.transport.restoreFromHash = this.restoreFromHash;\r\n this.gridData.transport.saveToHash = this.saveToHash;\r\n kendo.ui.FilterMenu.fn.options.operators.string = {\r\n eq: \"Is equal to\",\r\n neq: \"Is not equal to\",\r\n startswith: \"Starts with\",\r\n contains: \"Contains\",\r\n doesnotcontain: \"Does not contain\",\r\n endswith: \"Ends with\",\r\n isnullorempty: \"Is empty\",\r\n isnotnullorempty: \"Is not empty\"\r\n\r\n };\r\n kendo.ui.FilterMenu.fn.options.operators.number = {\r\n eq: \"Is equal to\",\r\n neq: \"Is not equal to\",\r\n gte: \"Is greater than or equal to\",\r\n gt: \"Is greater than\",\r\n lte: \"Is less than or equal to\",\r\n lt: \"Is less than\",\r\n isnull: \"Is empty\",\r\n isnotnull: \"Is not empty\"\r\n\r\n };\r\n kendo.ui.FilterMenu.fn.options.operators.date = {\r\n eq: \"Is equal to\",\r\n neq: \"Is not equal to\",\r\n gte: \"Is after or equal to\",\r\n gt: \"Is after\",\r\n lte: \"Is before or equal to\",\r\n lt: \"Is before\",\r\n isnullorempty: \"Is empty\",\r\n isnotnullorempty: \"Is not empty\"\r\n };\r\n },\r\n mounted: function () {\r\n const _this = this;\r\n const grid = _this.$refs.grid.kendoWidget();\r\n if (!_this.pagedData.offset.end) {\r\n _this.pagedData.offset.end = _this.pagedData.limit;\r\n }\r\n\r\n const $pageSizeSelector = $(\"#pageSizeSelector\");\r\n\r\n $pageSizeSelector.kendoDropDownList({\r\n dataSource: _this.setup.pageSizes.values,\r\n change: function () {\r\n if (!_this.pagedData.isFetching) {\r\n const newPageSize = parseInt($pageSizeSelector.val());\r\n const pageToken = _this.hasPrevToken() ? _this.pagedData.tokens.values[_this.pagedData.tokens.index] : null;\r\n // Only refetch the data when the page size is actually different.\r\n if (newPageSize !== _this.pagedData.limit) {\r\n _this.pagedData.limit = newPageSize;\r\n _this.saveToHash(pageToken, _this.pagedData, grid.dataSource.filter(), grid.dataSource.sort());\r\n _this.refreshData();\r\n }\r\n }\r\n }\r\n });\r\n\r\n window.onpopstate = function (event) {\r\n if (window.location.hash !== _this.currentHash) {\r\n _this.restoreFromHash(true, true, true);\r\n }\r\n }\r\n },\r\n computed: {\r\n prevDisabled: function () {\r\n return !this.hasPrevToken() || this.pagedData.isFetching;\r\n },\r\n nextDisabled: function () {\r\n return !this.hasNextToken() || this.pagedData.isFetching;\r\n }\r\n },\r\n methods: {\r\n /**\r\n * Save current state to URL hash\r\n * @param {*} pageToken continuation token\r\n * @param {*} pagedData pagedData objec\r\n * @param {*} filter current filter\r\n * @param {*} sort current sort\r\n */\r\n saveToHash: async function (pageToken, pagedData, filter, sort) {\r\n const selectedPortfolios = this.portfolioSelector ? this.portfolioSelector.value() : undefined;\r\n const objectToHash = {\r\n pageToken: pageToken,\r\n pagedData: pagedData,\r\n filter: filter,\r\n sort: sort,\r\n searchValue: this.searchValue,\r\n selectedPortfolios: selectedPortfolios\r\n };\r\n const encodedHash = await encodeAndCompressToHash(objectToHash);\r\n this.currentHash = `#${encodedHash}`;\r\n \r\n if (!window.location.hash) {\r\n history.replaceState(null, \"\", window.location.href + this.currentHash);\r\n }\r\n window.location.hash = encodedHash;\r\n },\r\n\r\n /**\r\n * \r\n * @param {*} fetch fetch data if true, false if not\r\n * @param {*} filterAndSort whether filter and sort options should be retrieved from hash\r\n * @param {*} portfolioAndSearch whether portfolio filter and search text should be retrieved from hash\r\n * @param {*} options additional options\r\n * @returns object restored from Hash\r\n */\r\n restoreFromHash: async function (fetch, filterAndSort, portfolioAndSearch, options) {\r\n const _this = this;\r\n const grid = this.$refs.grid.kendoWidget();\r\n let objectFromHash = null;\r\n const encodedHash = window.location.hash.replace('#', '');\r\n if (encodedHash) {\r\n objectFromHash = await decodeAndDecompressFromHash(encodedHash);\r\n\r\n if (objectFromHash.pagedData) {\r\n Object.assign(this.pagedData, objectFromHash.pagedData);\r\n }\r\n if (filterAndSort) {\r\n if (objectFromHash.filter) {\r\n grid.dataSource._filter = objectFromHash.filter;\r\n if (options && options.data) {\r\n options.data.filter = objectFromHash.filter\r\n }\r\n } else {\r\n grid.dataSource._filter = undefined;\r\n }\r\n if (objectFromHash.sort) {\r\n grid.dataSource._sort = objectFromHash.sort;\r\n if (options && options.data) {\r\n options.data.sort = objectFromHash.sort\r\n }\r\n } else {\r\n grid.dataSource._sort = undefined;\r\n }\r\n }\r\n\r\n if (portfolioAndSearch) {\r\n _this.searchValue = objectFromHash.searchValue;\r\n if (_this.actionbar) {\r\n _this.seachValue = _this.seachValue ? _this.seachValue : '';\r\n _this.actionbar.updateSearchText(_this.searchValue);\r\n }\r\n _this.selectedPortfolios = objectFromHash.selectedPortfolios;\r\n if (_this.portfolioSelector && _this.selectedPortfolios) {\r\n _this.setPortfolioSelector(_this.portfolioSelector);\r\n }\r\n }\r\n if (fetch) {\r\n this.fetchPagedData(objectFromHash.pageToken).then(\r\n (response) => {\r\n grid.dataSource.data(response.items);\r\n _this.currentHash = window.location.hash;\r\n },\r\n (error) => {\r\n console.error(error);\r\n });\r\n }\r\n }\r\n return objectFromHash;\r\n },\r\n \r\n /**\r\n * Refreshes the data in the grid and resets the selected page offset to the start.\r\n */\r\n refreshData: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n\r\n this.pagedData.tokens = {\r\n index: -1,\r\n values: []\r\n };\r\n\r\n this.pagedData.offset = {\r\n start: 1,\r\n end: undefined\r\n };\r\n\r\n this.fetchPagedData().then(\r\n (response) => {\r\n grid.dataSource.data(response.items);\r\n },\r\n (error) => {\r\n console.error(error);\r\n });\r\n },\r\n\r\n refreshCurrentPage: function (clearSelection = false) {\r\n const _this = this;\r\n const grid = this.$refs.grid.kendoWidget();\r\n\r\n const pageToken = this.pagedData.tokens.values[this.pagedData.tokens.index];\r\n\r\n this.fetchPagedData(pageToken, false).then(\r\n (response) => {\r\n grid.dataSource.data(response.items);\r\n if (clearSelection) {\r\n grid.dataSource.data().forEach(item => {\r\n item.selected = false;\r\n _this.addOrRemoveFromGlobalSelection(item, item.selected);\r\n });\r\n _this.pagedData.selectAll = false;\r\n _this.pagedData.globalSelection = [];\r\n }\r\n\r\n _this.setup.renderFieldValues(_this.gridColumns);\r\n },\r\n (error) => {\r\n console.error(error);\r\n });\r\n },\r\n\r\n setActionbar: function (actionbar) {\r\n this.actionbar = actionbar;\r\n if (this.searchValue) {\r\n this.actionbar.updateSearchText(this.searchValue);\r\n }\r\n },\r\n getPortfolioSelectorValues: function (portfolioSelector) {\r\n return this.portfolioSelector.value();\r\n },\r\n setPortfolioSelector: function (portfolioSelector) {\r\n const _this = this;\r\n _this.portfolioSelector = portfolioSelector;\r\n _this.portfolioSelector.value(_this.selectedPortfolios);\r\n const items = _this.portfolioSelector.listView.content.find(\"li\");\r\n items.each(function () {\r\n const checkbox = $(this).find(\"input[type='checkbox']\");\r\n const value = checkbox.val();\r\n checkbox.prop(\"checked\", _this.selectedPortfolios.indexOf(value) > -1);\r\n });\r\n },\r\n\r\n gridFilterMenuOpen: function (e) {\r\n const grid = this.$refs.grid.kendoWidget(); \r\n var kendoMultiSelect = e.container.find(\"input:eq(0)\").data(\"kendoMultiSelect\");\r\n if (kendoMultiSelect) {\r\n const filter = grid.dataSource.filter();\r\n if (filter) {\r\n const value = filter.filters.find(x => x.field === e.field) ? filter.filters.find(x => x.field === e.field).value : kendoMultiSelect.value();\r\n kendoMultiSelect.value(value);\r\n }\r\n }\r\n },\r\n selectFilter: function (fieldName, element) {\r\n var _this = this;\r\n if (_this.filterDropdownFields.indexOf(fieldName) > -1) {\r\n return;\r\n }\r\n _this.filterDropdownFields.push(fieldName);\r\n\r\n var filterEndpoint = this.setup.endpointFilterValues.indexOf(\"?\") === -1 ? \r\n this.setup.endpointFilterValues + \"?\" : \r\n this.setup.endpointFilterValues + \"&\"; \r\n\r\n var dataSource = new kendo.data.DataSource({\r\n transport: {\r\n read: {\r\n url: filterEndpoint + \"field=\" + fieldName,\r\n dataType: \"json\"\r\n }\r\n },\r\n });\r\n\r\n element.kendoMultiSelect({\r\n dataSource: dataSource,\r\n filter: \"contains\",\r\n autoClose: false,\r\n downArrow: true,\r\n tagMode: \"single\",\r\n noDataTemplate: \"Select a value...\",\r\n itemTemplate: `
\r\n #:data#\r\n \r\n \r\n
`,\r\n change: function () {\r\n const _this = this;\r\n const selected = this.value();\r\n const items = this.listView.content.find(\"li\");\r\n items.each(function (i) {\r\n const checkbox = $(this).find(\"input[type='checkbox']\");\r\n const value = _this.dataSource.data()[i];\r\n checkbox.prop(\"checked\", selected.indexOf(value) > -1);\r\n });\r\n \r\n if (selected.length == 0) {\r\n this.tagList.children().each(function() {\r\n this.remove();\r\n });\r\n }\r\n },\r\n open: function () {\r\n const _this = this;\r\n const selected = this.value();\r\n const items = this.listView.content.find(\"li\");\r\n items.each(function (i) {\r\n const checkbox = $(this).find(\"input[type='checkbox']\");\r\n const value = _this.dataSource.data()[i];\r\n checkbox.prop(\"checked\", selected.indexOf(value) > -1);\r\n });\r\n }\r\n });\r\n },\r\n\r\n /**\r\n * Builds the list of grid columns using the supplied grid configuration setup.\r\n * This method calls the configurable renderFieldValues() and renderRowActions() for embedding custom rendering and/or actions.\r\n * @returns A list of grid columns\r\n */\r\n buildColumns: function () {\r\n const _this = this;\r\n let columns = [];\r\n\r\n if (!_this.setup.config.SelectedColumns || _this.setup.config.SelectedColumns.length < 1) {\r\n columns = _this.setup.config.AvailableColumns;\r\n } else {\r\n columns = _this.setup.config.SelectedColumns;\r\n }\r\n\r\n columns = columns.map(function (m) {\r\n let filterableDefinition = !m.PropertyName.startsWith('computedFields');\r\n\r\n if (_this.setup.config.ColumnsWithDropdownInFilter.indexOf(m.PropertyName) > -1) {\r\n filterableDefinition = { extra: false, ui: _this.selectFilter.bind(this, m.PropertyName) };\r\n }\r\n\r\n return {\r\n 'field': m.PropertyName,\r\n 'title': (hasBranding ? m.DisplayName : m.DisplayName.replace(\"DLL\", \"Leased\")),\r\n 'filterable': filterableDefinition,\r\n 'format': m.PropertyType == 'date' ? \"{0:yyyy/MM/dd}\" : '',\r\n 'type': m.PropertyType\r\n };\r\n });\r\n _this.setup.config.SelectedColumns.map(function (m) {\r\n _this.gridData.schema.model.fields[m.PropertyName] = { 'type': m.PropertyType };\r\n });\r\n\r\n if (_this.setup.enableMultiSelect) {\r\n columns.unshift({\r\n 'field': 'selected',\r\n 'title': ' ',\r\n 'filterable': false,\r\n 'sortable': false,\r\n 'headerTemplate':\r\n `
\r\n \r\n \r\n \r\n \r\n
`,\r\n 'template':\r\n `
\r\n \r\n \r\n \r\n \r\n
`,\r\n 'width': '40px'\r\n });\r\n }\r\n\r\n if (_this.setup.renderFieldValues) {\r\n columns = _this.setup.renderFieldValues(columns);\r\n }\r\n\r\n if (_this.setup.renderRowActions) {\r\n const customActions = _this.setup.renderRowActions();\r\n\r\n if (customActions) {\r\n customActions.forEach((x) => {\r\n columns.push(x);\r\n });\r\n }\r\n }\r\n\r\n return columns;\r\n },\r\n\r\n /**\r\n * Toggles between selecting all records in grid (on all pages) or deselecting all records.\r\n * Previous selections on any page is cleared out.\r\n * When selectAll is not on then globalSelection contains all items that are manually selected by uses\r\n * When selectAll is on then globalSelection contains all items that are manuallly deslected by user\r\n */\r\n selectAll: function () {\r\n const _this = this;\r\n const grid = this.$refs.grid.kendoWidget();\r\n this.pagedData.selectAll = !this.pagedData.selectAll;\r\n this.pagedData.globalSelection = [];\r\n grid.dataSource.data().forEach(item => {\r\n item.selected = _this.pagedData.selectAll;\r\n _this.addOrRemoveFromGlobalSelection(item, item.selected);\r\n });\r\n _this.setHeaderSelectAll(grid, this.pagedData.selectAll);\r\n grid.refresh();\r\n },\r\n\r\n setHeaderSelectAll: function (grid, checked)\r\n {\r\n const cb = grid.element[0].querySelector(\".k-grid-header .visual-checkbox input[type='checkbox']\");\r\n cb.checked = checked;\r\n if (cb.checked) {\r\n $(cb.parentElement.parentElement).addClass(\"state-selected\");\r\n\r\n } else {\r\n $(cb.parentElement.parentElement).removeClass(\"state-selected\");\r\n }\r\n },\r\n\r\n /**\r\n * Perfors global search by filtering on all columns\r\n */\r\n search: function (e) {\r\n const _this = this;\r\n const grid = this.$refs.grid.kendoWidget();\r\n grid.dataSource.transport.pagedData.isApplyingFilter = true;\r\n let filter = {};\r\n if (e !== null && e !== '') {\r\n this.searchValue = e.trim();\r\n filter = { logic: 'or', filters: [] };\r\n grid.columns.forEach(function (x) {\r\n if (x.field) {\r\n filter.filters.push({\r\n field: x.field,\r\n operator: 'contains',\r\n value: _this.searchValue\r\n });\r\n }\r\n });\r\n } else {\r\n this.searchValue = ''\r\n this.pagedData.searchClearOut = true;\r\n }\r\n grid.dataSource.filter(filter);\r\n },\r\n\r\n export: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n this.pagedData.overrideLimit = this.pagedData.totalCount;\r\n grid.options.excel.fileName = \"Asset Export.xlsx\";\r\n grid.saveAsExcel();\r\n },\r\n\r\n /**\r\n * Retrieves global selection list, either all selected records or unselected records (when selectAll is checked) and whether selectAll is toggled on or off.\r\n * @returns when selectAll is unchecked it will return all records that have been selected, when selectAll is checked it will return all records that have been unselected\r\n */\r\n globalSelection: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n return {\r\n selectAll: this.pagedData.selectAll,\r\n items: this.pagedData.globalSelection,\r\n limit: this.pagedData.limit,\r\n filter: grid.dataSource.filter(),\r\n sort: grid.dataSource.sort()\r\n };\r\n },\r\n\r\n /**\r\n * Determines the count of selected items. When select all is toggled on then global selection length is deducted from tatalCount because global selection contains the unselected items.\r\n * @returns Selected items count. \r\n */\r\n selectedCount: function () {\r\n return this.pagedData.selectAll ? this.pagedData.totalCount - this.pagedData.globalSelection.length : this.pagedData.globalSelection.length;\r\n },\r\n\r\n /**\r\n * Determines the count of all items.\r\n * @returns Total items count. \r\n */\r\n totalCount: function () {\r\n return this.pagedData.totalCount;\r\n },\r\n\r\n /**\r\n * Whether there is previous page available or not.\r\n * @returns True if there is a previous page, else false.\r\n */\r\n hasPrevToken: function () {\r\n return this.pagedData.tokens.index >= 0;\r\n },\r\n\r\n /**\r\n * Whether there is next page available or not.\r\n * @returns True if there is a next page, else false.\r\n */\r\n hasNextToken: function () {\r\n return this.pagedData.tokens.values.length > 0 &&\r\n (this.pagedData.tokens.index + 1) < (this.pagedData.tokens.values.length)\r\n },\r\n\r\n /**\r\n * Navigates to the previous page in the dataset.\r\n * @param {*} evt Representing the origin of the event.\r\n */\r\n goToPrevPage: function (evt) {\r\n evt.preventDefault();\r\n const _this = this;\r\n const grid = this.$refs.grid.kendoWidget();\r\n if (this.hasPrevToken()) {\r\n this.pagedData.tokens.values.splice(this.pagedData.tokens.index + 1, 1);\r\n\r\n this.pagedData.tokens.index -= 1;\r\n const pageToken = this.pagedData.tokens.values[this.pagedData.tokens.index];\r\n\r\n this.fetchPagedData(pageToken, true).then((response) => {\r\n grid.dataSource.data(response.items);\r\n _this.calculateOffset(false);\r\n\r\n _this.saveToHash(pageToken, _this.pagedData, grid.dataSource.filter(), grid.dataSource.sort());\r\n });\r\n }\r\n },\r\n\r\n /**\r\n * Navigates to the next page in the dataset.\r\n * @param {*} evt Representing the origin of the event.\r\n */\r\n goToNextPage: function (evt) {\r\n evt.preventDefault();\r\n const _this = this;\r\n const grid = this.$refs.grid.kendoWidget();\r\n if (this.hasNextToken()) {\r\n this.pagedData.tokens.index += 1;\r\n\r\n const pageToken = this.pagedData.tokens.values[this.pagedData.tokens.index];\r\n this.fetchPagedData(pageToken, false).then((response) => {\r\n grid.dataSource.data(response.items);\r\n _this.calculateOffset(true);\r\n\r\n _this.saveToHash(pageToken, _this.pagedData, grid.dataSource.filter(), grid.dataSource.sort());\r\n });\r\n }\r\n },\r\n\r\n /**\r\n * Calculates new offset values representing the position within the dataset.\r\n * @param {*} forward Whether this re-calculation is a result of a forward action or not.\r\n */\r\n calculateOffset: function (forward) {\r\n let newOffset = {};\r\n\r\n if (forward) {\r\n newOffset = {\r\n start: this.pagedData.offset.start + this.pagedData.limit,\r\n end: undefined\r\n };\r\n\r\n newOffset.end = (newOffset.start + this.pagedData.limit) - 1;\r\n\r\n if (newOffset.end > this.pagedData.totalCount) {\r\n newOffset.end = this.pagedData.totalCount;\r\n }\r\n }\r\n else {\r\n newOffset = {\r\n start: undefined,\r\n end: (this.pagedData.offset.start - 1)\r\n };\r\n\r\n newOffset.start = this.pagedData.offset.start - this.pagedData.limit;\r\n }\r\n\r\n Object.assign(this.pagedData.offset, newOffset);\r\n },\r\n\r\n /**\r\n * Performs some pre-processing before the filters are sent to the server.\r\n * @param {*} filterRoot Root filter instance of the kendo grid.\r\n * @returns Modified filter root instance\r\n */\r\n formatFilters: function (filterRoot) {\r\n if (!filterRoot)\r\n return;\r\n\r\n const internalFormatter = function (filters) {\r\n filters.forEach((x) => {\r\n // Force datetime values to use the format 'yyyy-MM-dd'\r\n if (x.field && (x.field.endsWith(\"Date\") || x.field.endsWith(\"Date\\\"]\"))) {\r\n x.value = formatDateTimeToDate(x.value);\r\n }\r\n else if (x.value && typeof x.value === 'string' && x.value.includes(\",\")) {\r\n x.value = x.value.split(\",\");\r\n }\r\n else if (x.filters) {\r\n internalFormatter(x.filters);\r\n }\r\n });\r\n }\r\n\r\n internalFormatter(filterRoot.filters);\r\n },\r\n\r\n /**\r\n * Update pageSizeSelector on navigation (browser-back, -forward and -refresh)\r\n */\r\n setPageSizeSelector: function () {\r\n const $pageSizeSelector = $(\"#pageSizeSelector\");\r\n const pageSizeSelectorValue = parseInt($pageSizeSelector.val());\r\n if (pageSizeSelectorValue !== this.pagedData.limit) {\r\n $pageSizeSelector.val(this.pagedData.limit);\r\n // Bit of a ugly hack. Kendo doesn't update DDL value on browser-back and -forward, only on browser-refresh!\r\n const inputSpan = $('#queryable-grid div.k-grid-pager span.k-input');\r\n if (inputSpan.length > 0) {\r\n inputSpan[0].innerHTML = this.pagedData.limit;\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Fetches the paged dataset from the remote endpoint.\r\n * @param {*} pageToken Represents the page token to use for this fetch\r\n * @param {*} previos Whether previous page is feteched\r\n * @returns Empty Promise\r\n */\r\n fetchPagedData: function (pageToken, previous) {\r\n const _this = this;\r\n const _previous = previous;\r\n const grid = this.$refs.grid.kendoWidget();\r\n const filter = grid.dataSource.filter();\r\n const sort = grid.dataSource.sort();\r\n return new Promise((resolve, reject) => {\r\n _this.pagedData.isFetching = true;\r\n _this.toggleGridLoader(true);\r\n _this.setPageSizeSelector();\r\n _this.formatFilters(grid.dataSource.filter())\r\n const limit = !_this.pagedData.overrideLimit ? _this.pagedData.limit : _this.pagedData.overrideLimit;\r\n if (_this.pagedData.overrideLimit) {\r\n _this.pagedData.overrideLimit = undefined;\r\n }\r\n axios.post(\r\n _this.setup.endpointQuery,\r\n {\r\n token: pageToken,\r\n limit: limit,\r\n filter: filter,\r\n sort: sort\r\n }).catch(error => {\r\n _this.toggleGridLoader(false);\r\n reject(error);\r\n }).then(response => {\r\n if (response) {\r\n if (response.data.pageToken && !_previous) {\r\n _this.pagedData.tokens.values.push(response.data.pageToken);\r\n }\r\n\r\n _this.pagedData.totalCount = response.data.totalCount;\r\n _this.pagedData.isFetching = false;\r\n\r\n if (response.data.totalCount > _this.pagedData.limit) {\r\n _this.pagedData.offset.end = (_this.pagedData.offset.start + _this.pagedData.limit) - 1;\r\n }\r\n else {\r\n _this.pagedData.offset.end = response.data.totalCount;\r\n }\r\n\r\n if (_this.setup.enableMultiSelect) {\r\n response.data.items.forEach(item => {\r\n item.selected = _this.pagedData.selectAll != (_this.pagedData.globalSelection.findIndex(selection => selection.id == item.id) > -1);\r\n });\r\n }\r\n _this.toggleGridLoader(false);\r\n resolve(response.data);\r\n }\r\n });\r\n });\r\n },\r\n\r\n /**\r\n * Toggles the visibility of the grid loading indicator.\r\n * @param {*} show True if you want to show the loading indicator, else false.\r\n */\r\n toggleGridLoader: function (show) {\r\n kendo.ui.progress($(\"#queryable-grid-table\"), show);\r\n },\r\n\r\n /**\r\n * Add or remove an item from global selection list. When select all is toggled on then global selection contains the unselected items\r\n * @param {*} item Item that is to be added or removed.\r\n * @param {*} checked True if the item is to be added, false when it is to be removed.\r\n */\r\n addOrRemoveFromGlobalSelection(item, checked) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n if (checked) {\r\n if (!this.pagedData.selectAll)\r\n this.pagedData.globalSelection.push(item);\r\n else\r\n this.pagedData.globalSelection.splice(this.pagedData.globalSelection.indexOf(item), 1);\r\n } else {\r\n if (!this.pagedData.selectAll)\r\n this.pagedData.globalSelection.splice(this.pagedData.globalSelection.indexOf(item), 1);\r\n else\r\n this.pagedData.globalSelection.push(item);\r\n }\r\n\r\n this.setup.rowSelectedEvent(item, checked);\r\n grid.refresh();\r\n },\r\n\r\n /**\r\n * Bounds custom event handlers to various grid elements.\r\n * @param {*} e Representing the origin of the event.\r\n */\r\n gridOnDatabound: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const _this = this;\r\n\r\n grid.element.unbind('dblclick');\r\n\r\n // Render title attribute containing the full title of the column.\r\n grid.element[0].querySelectorAll(\".k-header\").forEach(element => {\r\n const title = $(element).data(\"title\");\r\n\r\n if (!/<[a-z\\][\\s\\S]*>/i.test(title)) {\r\n $(element).attr('title', title);\r\n }\r\n });\r\n\r\n // Selections of rows using the checkboxes\r\n if (_this.setup.enableMultiSelect &&\r\n _this.setup.rowSelectedEvent) {\r\n grid.element.on(\r\n 'click',\r\n '.visual-checkbox',\r\n function (e) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n\r\n const currentItem = grid.dataItem(e.currentTarget.closest('tr[data-uid]'));\r\n if (currentItem) {\r\n currentItem.selected = !currentItem.selected;\r\n _this.addOrRemoveFromGlobalSelection(currentItem, currentItem.selected);\r\n }\r\n else {\r\n const cb = this.querySelector(\"input[type='checkbox']\");\r\n cb.checked = !cb.checked;\r\n if (cb.checked) {\r\n $(this.parentElement).addClass(\"state-selected\");\r\n } else {\r\n $(this.parentElement).removeClass(\"state-selected\");\r\n }\r\n grid.dataSource.data().forEach(item => {\r\n item.selected = cb.checked;\r\n _this.addOrRemoveFromGlobalSelection(item, item.selected);\r\n });\r\n }\r\n });\r\n }\r\n\r\n // Double click on full row\r\n if (_this.setup.rowClickEvent) {\r\n grid.element.on(\r\n 'dblclick',\r\n 'tbody tr[data-uid]',\r\n function (e) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n\r\n const currentItem = grid.dataItem(e.currentTarget)\r\n _this.setup.rowClickEvent(currentItem);\r\n });\r\n }\r\n\r\n // Single click on any of the optionally specified custom-actions\r\n if (_this.setup.rowActionClickEvent) {\r\n grid.element.on('click', '.custom-action',\r\n function (e) {\r\n e.preventDefault();\r\n\r\n const currentItem = grid.dataItem(e.currentTarget.closest('tr'));\r\n if (currentItem) {\r\n const type = e.currentTarget.dataset.type;\r\n _this.setup.rowActionClickEvent(currentItem, type);\r\n }\r\n });\r\n }\r\n\r\n _this.gridOnChange(e);\r\n },\r\n\r\n /**\r\n * Bounds custom event handlers to various grid elements.\r\n * @param {*} e Representing the origin of the event.\r\n */\r\n gridOnChange: function (e) {\r\n const _this = this;\r\n const grid = _this.$refs.grid.kendoWidget();\r\n if (_this.setup.gridChangedEvent) {\r\n var selectedItems = _this.pagedData.globalSelection;\r\n if (_this.pagedData.selectAll) { \r\n // When select all is toggled on, the items on globalSelection are the unselected items. These need to be filtered out.\r\n selectedItems = grid.dataSource.data().filter(item => _this.pagedData.globalSelection.findIndex(selection => selection.id == item.id) == -1);\r\n }\r\n _this.setup.gridChangedEvent(selectedItems);\r\n }\r\n },\r\n gridOnFilter: function (e) {\r\n const _this = this;\r\n const grid = _this.$refs.grid.kendoWidget();\r\n grid.dataSource.transport.pagedData.isApplyingFilter = true;\r\n _this.pagedData.selectAll = false;\r\n _this.pagedData.globalSelection = [];\r\n if (_this.setup.gridFilteredEvent) {\r\n _this.setup.gridFilteredEvent(e);\r\n }\r\n grid.refresh();\r\n },\r\n gridColumnOnReorder: function(e){\r\n if (this.setup.gridColumnReorderEvent){\r\n this.setup.gridColumnReorderEvent(e.column.field, e.newIndex, e.oldIndex);\r\n }\r\n },\r\n customFilter: function (data) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n grid.dataSource.transport.pagedData.isApplyingFilter = true;\r\n const currentFilters = grid.dataSource.filter();\r\n\r\n let newFilters = {\r\n logic: \"and\",\r\n filters: []\r\n };\r\n\r\n newFilters.filters.push(data);\r\n if (currentFilters) {\r\n const filtersToKeep = currentFilters.filters.filter(filter => filter.field);\r\n newFilters = newFilters.filters.concat(filtersToKeep);\r\n }\r\n\r\n grid.dataSource.filter(newFilters);\r\n },\r\n getActiveFilters: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const currentFilters = grid.dataSource.filter();\r\n return currentFilters ?? {};\r\n },\r\n setActiveFilters: function (data) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n grid.dataSource.filter(data);\r\n },\r\n getActiveSorting: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n return grid.dataSource.sort();\r\n },\r\n setActiveSorting: function (data) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n grid.dataSource.sort(data);\r\n },\r\n refreshLayout: function () {\r\n const grid = this.$refs.grid.kendoWidget();\r\n const gridOptions = grid.getOptions();\r\n gridOptions.columns = this.buildColumns();\r\n\r\n grid.setOptions(gridOptions);\r\n this.refreshData();\r\n }\r\n }\r\n });\r\n","import Vue from 'vue'\r\n\r\n\r\nmodule.export = Vue.component('selectcountrymodal',\r\n {\r\n name: 'selectcountrymodal',\r\n props: {\r\n SelectCountryModel: Object\r\n },\r\n components: {},\r\n data: function () {\r\n return {\r\n ShowFormError: false\r\n };\r\n },\r\n methods: {\r\n open: function (e) {\r\n e.preventDefault();\r\n const _this = this;\r\n this.$validator.validateAll().then((result) => {\r\n if (result && _this.SelectCountryModel.countryId !== -1 && _this.SelectCountryModel.hrefsProp) {\r\n $(\"#\" + _this.SelectCountryModel.elementId).modal('hide');\r\n window.location.href = _this.SelectCountryModel.allCountries[_this.SelectCountryModel.countryId].hrefs[_this.SelectCountryModel.hrefsProp]\r\n } else {\r\n _this.ShowFormError = true;\r\n }\r\n });\r\n },\r\n close: function () {\r\n $(\"#\" + this.SelectCountryModel.elementId).modal('hide');\r\n // Enable open button again.\r\n $(\"#\" + this.SelectCountryModel.elementId + \"openButton\").removeAttr(\"disabled\");\r\n }\r\n }\r\n });","import Vue from 'vue'\r\nimport VeeValidate from \"vee-validate\"\r\nimport 'vue2-datepicker/index.css'\r\nimport axios from \"axios\"\r\n\r\nVue.use(VeeValidate);\r\nmodule.export = Vue.component('contactus',\r\n {\r\n name: 'contactus',\r\n props: {\r\n data: Object\r\n },\r\n data: function () {\r\n return {\r\n alerts: [],\r\n ContactUsViewModel: structuredClone(this.data)\r\n }\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n validateBeforeSubmit: function (event) {\r\n event.preventDefault();\r\n const vueObject = this;\r\n\r\n this.$validator.validateAll().then((result) => {\r\n if (result) {\r\n const postData = JSON.stringify({\r\n Subject: vueObject.ContactUsViewModel.Subject,\r\n ContractNumber: vueObject.ContactUsViewModel.ContractNumber,\r\n Question: vueObject.ContactUsViewModel.Question,\r\n FirstName: vueObject.ContactUsViewModel.FirstName,\r\n LastName: vueObject.ContactUsViewModel.LastName,\r\n Email: vueObject.ContactUsViewModel.Email,\r\n TelephoneNumber: vueObject.ContactUsViewModel.TelephoneNumber\r\n });\r\n axios.post('/Forms/ContactUs',\r\n postData,\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n }).then((response) => {\r\n if (response.data.success) {\r\n this.$emit('contact-us', \"Successfully sent your message/request\");\r\n this.closeModal();\r\n } else {\r\n this.addAlert(\r\n {\r\n \"message\": `Could not send message/request: ${response.data.data}`,\r\n \"isSuccess\": false\r\n });\r\n }\r\n }).catch(error => {\r\n console.error(error);\r\n this.addAlert(\r\n {\r\n \"message\": 'Could not send message/request due to a server error',\r\n \"isSuccess\": false\r\n });\r\n });\r\n } else {\r\n this.addAlert({\r\n \"message\": 'Some fields in the form are invalid',\r\n \"isSuccess\": false\r\n });\r\n }\r\n });\r\n },\r\n escapeClose: function (e) {\r\n if (e.keyCode == 27) {\r\n this.close();\r\n }\r\n },\r\n close: function () {\r\n this.closeModal();\r\n },\r\n closeModal: function () {\r\n this.clearAlert();\r\n this.RequestNewLeaseModel = structuredClone(this.data);\r\n $('#contact-us-modal').modal('hide');\r\n }\r\n }\r\n });","import Vue from 'vue'\r\n\r\nif (document.getElementById('customer-support')) {\r\n require(\"./ContactUs.js\");\r\n require(\"../Alerts/Alerts.js\");\r\n\r\n new Vue({\r\n el: '#customer-support',\r\n data: function () {\r\n return {\r\n alerts: [],\r\n ContactUsViewModel: window.preLoadedData.ContactUsViewModel\r\n }\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts = [];\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n contactUs: function (message) {\r\n this.addAlert({ \"message\": message, \"isSuccess\": true, \"showPopup\": true });\r\n },\r\n openContactUsForm: function () {\r\n $('#contact-us-modal').modal('show');\r\n }\r\n }\r\n });\r\n}","/* eslint-disable no-bitwise */\n\nconst decodeCache = {}\n\nfunction getDecodeCache (exclude) {\n let cache = decodeCache[exclude]\n if (cache) { return cache }\n\n cache = decodeCache[exclude] = []\n\n for (let i = 0; i < 128; i++) {\n const ch = String.fromCharCode(i)\n cache.push(ch)\n }\n\n for (let i = 0; i < exclude.length; i++) {\n const ch = exclude.charCodeAt(i)\n cache[ch] = '%' + ('0' + ch.toString(16).toUpperCase()).slice(-2)\n }\n\n return cache\n}\n\n// Decode percent-encoded string.\n//\nfunction decode (string, exclude) {\n if (typeof exclude !== 'string') {\n exclude = decode.defaultChars\n }\n\n const cache = getDecodeCache(exclude)\n\n return string.replace(/(%[a-f0-9]{2})+/gi, function (seq) {\n let result = ''\n\n for (let i = 0, l = seq.length; i < l; i += 3) {\n const b1 = parseInt(seq.slice(i + 1, i + 3), 16)\n\n if (b1 < 0x80) {\n result += cache[b1]\n continue\n }\n\n if ((b1 & 0xE0) === 0xC0 && (i + 3 < l)) {\n // 110xxxxx 10xxxxxx\n const b2 = parseInt(seq.slice(i + 4, i + 6), 16)\n\n if ((b2 & 0xC0) === 0x80) {\n const chr = ((b1 << 6) & 0x7C0) | (b2 & 0x3F)\n\n if (chr < 0x80) {\n result += '\\ufffd\\ufffd'\n } else {\n result += String.fromCharCode(chr)\n }\n\n i += 3\n continue\n }\n }\n\n if ((b1 & 0xF0) === 0xE0 && (i + 6 < l)) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n const b2 = parseInt(seq.slice(i + 4, i + 6), 16)\n const b3 = parseInt(seq.slice(i + 7, i + 9), 16)\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n const chr = ((b1 << 12) & 0xF000) | ((b2 << 6) & 0xFC0) | (b3 & 0x3F)\n\n if (chr < 0x800 || (chr >= 0xD800 && chr <= 0xDFFF)) {\n result += '\\ufffd\\ufffd\\ufffd'\n } else {\n result += String.fromCharCode(chr)\n }\n\n i += 6\n continue\n }\n }\n\n if ((b1 & 0xF8) === 0xF0 && (i + 9 < l)) {\n // 111110xx 10xxxxxx 10xxxxxx 10xxxxxx\n const b2 = parseInt(seq.slice(i + 4, i + 6), 16)\n const b3 = parseInt(seq.slice(i + 7, i + 9), 16)\n const b4 = parseInt(seq.slice(i + 10, i + 12), 16)\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80 && (b4 & 0xC0) === 0x80) {\n let chr = ((b1 << 18) & 0x1C0000) | ((b2 << 12) & 0x3F000) | ((b3 << 6) & 0xFC0) | (b4 & 0x3F)\n\n if (chr < 0x10000 || chr > 0x10FFFF) {\n result += '\\ufffd\\ufffd\\ufffd\\ufffd'\n } else {\n chr -= 0x10000\n result += String.fromCharCode(0xD800 + (chr >> 10), 0xDC00 + (chr & 0x3FF))\n }\n\n i += 9\n continue\n }\n }\n\n result += '\\ufffd'\n }\n\n return result\n })\n}\n\ndecode.defaultChars = ';/?:@&=+$,#'\ndecode.componentChars = ''\n\nexport default decode\n","const encodeCache = {}\n\n// Create a lookup array where anything but characters in `chars` string\n// and alphanumeric chars is percent-encoded.\n//\nfunction getEncodeCache (exclude) {\n let cache = encodeCache[exclude]\n if (cache) { return cache }\n\n cache = encodeCache[exclude] = []\n\n for (let i = 0; i < 128; i++) {\n const ch = String.fromCharCode(i)\n\n if (/^[0-9a-z]$/i.test(ch)) {\n // always allow unencoded alphanumeric characters\n cache.push(ch)\n } else {\n cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2))\n }\n }\n\n for (let i = 0; i < exclude.length; i++) {\n cache[exclude.charCodeAt(i)] = exclude[i]\n }\n\n return cache\n}\n\n// Encode unsafe characters with percent-encoding, skipping already\n// encoded sequences.\n//\n// - string - string to encode\n// - exclude - list of characters to ignore (in addition to a-zA-Z0-9)\n// - keepEscaped - don't encode '%' in a correct escape sequence (default: true)\n//\nfunction encode (string, exclude, keepEscaped) {\n if (typeof exclude !== 'string') {\n // encode(string, keepEscaped)\n keepEscaped = exclude\n exclude = encode.defaultChars\n }\n\n if (typeof keepEscaped === 'undefined') {\n keepEscaped = true\n }\n\n const cache = getEncodeCache(exclude)\n let result = ''\n\n for (let i = 0, l = string.length; i < l; i++) {\n const code = string.charCodeAt(i)\n\n if (keepEscaped && code === 0x25 /* % */ && i + 2 < l) {\n if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n result += string.slice(i, i + 3)\n i += 2\n continue\n }\n }\n\n if (code < 128) {\n result += cache[code]\n continue\n }\n\n if (code >= 0xD800 && code <= 0xDFFF) {\n if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {\n const nextCode = string.charCodeAt(i + 1)\n if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n result += encodeURIComponent(string[i] + string[i + 1])\n i++\n continue\n }\n }\n result += '%EF%BF%BD'\n continue\n }\n\n result += encodeURIComponent(string[i])\n }\n\n return result\n}\n\nencode.defaultChars = \";/?:@&=+$,-_.!~*'()#\"\nencode.componentChars = \"-_.!~*'()\"\n\nexport default encode\n","export default function format (url) {\n let result = ''\n\n result += url.protocol || ''\n result += url.slashes ? '//' : ''\n result += url.auth ? url.auth + '@' : ''\n\n if (url.hostname && url.hostname.indexOf(':') !== -1) {\n // ipv6 address\n result += '[' + url.hostname + ']'\n } else {\n result += url.hostname || ''\n }\n\n result += url.port ? ':' + url.port : ''\n result += url.pathname || ''\n result += url.search || ''\n result += url.hash || ''\n\n return result\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n//\n// Changes from joyent/node:\n//\n// 1. No leading slash in paths,\n// e.g. in `url.parse('http://foo?bar')` pathname is ``, not `/`\n//\n// 2. Backslashes are not replaced with slashes,\n// so `http:\\\\example.org\\` is treated like a relative path\n//\n// 3. Trailing colon is treated like a part of the path,\n// i.e. in `http://example.org:foo` pathname is `:foo`\n//\n// 4. Nothing is URL-encoded in the resulting object,\n// (in joyent/node some chars in auth and paths are encoded)\n//\n// 5. `url.parse()` does not have `parseQueryString` argument\n//\n// 6. Removed extraneous result properties: `host`, `path`, `query`, etc.,\n// which can be constructed using other parts of the url.\n//\n\nfunction Url () {\n this.protocol = null\n this.slashes = null\n this.auth = null\n this.port = null\n this.hostname = null\n this.hash = null\n this.search = null\n this.pathname = null\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nconst protocolPattern = /^([a-z0-9.+-]+:)/i\nconst portPattern = /:[0-9]*$/\n\n// Special case for a simple path URL\n/* eslint-disable-next-line no-useless-escape */\nconst simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/\n\n// RFC 2396: characters reserved for delimiting URLs.\n// We actually just auto-escape these.\nconst delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t']\n\n// RFC 2396: characters not allowed for various reasons.\nconst unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims)\n\n// Allowed by RFCs, but cause of XSS attacks. Always escape these.\nconst autoEscape = ['\\''].concat(unwise)\n// Characters that are never ever allowed in a hostname.\n// Note that any invalid chars are also handled, but these\n// are the ones that are *expected* to be seen, so we fast-path\n// them.\nconst nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape)\nconst hostEndingChars = ['/', '?', '#']\nconst hostnameMaxLen = 255\nconst hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/\nconst hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/\n// protocols that can allow \"unsafe\" and \"unwise\" chars.\n// protocols that never have a hostname.\nconst hostlessProtocol = {\n javascript: true,\n 'javascript:': true\n}\n// protocols that always contain a // bit.\nconst slashedProtocol = {\n http: true,\n https: true,\n ftp: true,\n gopher: true,\n file: true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n}\n\nfunction urlParse (url, slashesDenoteHost) {\n if (url && url instanceof Url) return url\n\n const u = new Url()\n u.parse(url, slashesDenoteHost)\n return u\n}\n\nUrl.prototype.parse = function (url, slashesDenoteHost) {\n let lowerProto, hec, slashes\n let rest = url\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim()\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n const simplePath = simplePathPattern.exec(rest)\n if (simplePath) {\n this.pathname = simplePath[1]\n if (simplePath[2]) {\n this.search = simplePath[2]\n }\n return this\n }\n }\n\n let proto = protocolPattern.exec(rest)\n if (proto) {\n proto = proto[0]\n lowerProto = proto.toLowerCase()\n this.protocol = proto\n rest = rest.substr(proto.length)\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n /* eslint-disable-next-line no-useless-escape */\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n slashes = rest.substr(0, 2) === '//'\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2)\n this.slashes = true\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n let hostEnd = -1\n for (let i = 0; i < hostEndingChars.length; i++) {\n hec = rest.indexOf(hostEndingChars[i])\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec\n }\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n let auth, atSign\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@')\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd)\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign)\n rest = rest.slice(atSign + 1)\n this.auth = auth\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1\n for (let i = 0; i < nonHostChars.length; i++) {\n hec = rest.indexOf(nonHostChars[i])\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec\n }\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1) {\n hostEnd = rest.length\n }\n\n if (rest[hostEnd - 1] === ':') { hostEnd-- }\n const host = rest.slice(0, hostEnd)\n rest = rest.slice(hostEnd)\n\n // pull out port.\n this.parseHost(host)\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || ''\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n const ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']'\n\n // validate a little.\n if (!ipv6Hostname) {\n const hostparts = this.hostname.split(/\\./)\n for (let i = 0, l = hostparts.length; i < l; i++) {\n const part = hostparts[i]\n if (!part) { continue }\n if (!part.match(hostnamePartPattern)) {\n let newpart = ''\n for (let j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x'\n } else {\n newpart += part[j]\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n const validParts = hostparts.slice(0, i)\n const notHost = hostparts.slice(i + 1)\n const bit = part.match(hostnamePartStart)\n if (bit) {\n validParts.push(bit[1])\n notHost.unshift(bit[2])\n }\n if (notHost.length) {\n rest = notHost.join('.') + rest\n }\n this.hostname = validParts.join('.')\n break\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = ''\n }\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2)\n }\n }\n\n // chop off from the tail first.\n const hash = rest.indexOf('#')\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash)\n rest = rest.slice(0, hash)\n }\n const qm = rest.indexOf('?')\n if (qm !== -1) {\n this.search = rest.substr(qm)\n rest = rest.slice(0, qm)\n }\n if (rest) { this.pathname = rest }\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = ''\n }\n\n return this\n}\n\nUrl.prototype.parseHost = function (host) {\n let port = portPattern.exec(host)\n if (port) {\n port = port[0]\n if (port !== ':') {\n this.port = port.substr(1)\n }\n host = host.substr(0, host.length - port.length)\n }\n if (host) { this.hostname = host }\n}\n\nexport default urlParse\n","export default /[!-#%-\\*,-\\/:;\\?@\\[-\\]_\\{\\}\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061D-\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1B7D\\u1B7E\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52-\\u2E5D\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD803[\\uDEAD\\uDF55-\\uDF59\\uDF86-\\uDF89]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5A\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDEB9\\uDF3C-\\uDF3E]|\\uD806[\\uDC3B\\uDD44-\\uDD46\\uDDE2\\uDE3F-\\uDE46\\uDE9A-\\uDE9C\\uDE9E-\\uDEA2\\uDF00-\\uDF09]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71\\uDEF7\\uDEF8\\uDF43-\\uDF4F\\uDFFF]|\\uD809[\\uDC70-\\uDC74]|\\uD80B[\\uDFF1\\uDFF2]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD81B[\\uDE97-\\uDE9A\\uDFE2]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]/","export default /[\\$\\+<->\\^`\\|~\\xA2-\\xA6\\xA8\\xA9\\xAC\\xAE-\\xB1\\xB4\\xB8\\xD7\\xF7\\u02C2-\\u02C5\\u02D2-\\u02DF\\u02E5-\\u02EB\\u02ED\\u02EF-\\u02FF\\u0375\\u0384\\u0385\\u03F6\\u0482\\u058D-\\u058F\\u0606-\\u0608\\u060B\\u060E\\u060F\\u06DE\\u06E9\\u06FD\\u06FE\\u07F6\\u07FE\\u07FF\\u0888\\u09F2\\u09F3\\u09FA\\u09FB\\u0AF1\\u0B70\\u0BF3-\\u0BFA\\u0C7F\\u0D4F\\u0D79\\u0E3F\\u0F01-\\u0F03\\u0F13\\u0F15-\\u0F17\\u0F1A-\\u0F1F\\u0F34\\u0F36\\u0F38\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE\\u0FCF\\u0FD5-\\u0FD8\\u109E\\u109F\\u1390-\\u1399\\u166D\\u17DB\\u1940\\u19DE-\\u19FF\\u1B61-\\u1B6A\\u1B74-\\u1B7C\\u1FBD\\u1FBF-\\u1FC1\\u1FCD-\\u1FCF\\u1FDD-\\u1FDF\\u1FED-\\u1FEF\\u1FFD\\u1FFE\\u2044\\u2052\\u207A-\\u207C\\u208A-\\u208C\\u20A0-\\u20C0\\u2100\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u2140-\\u2144\\u214A-\\u214D\\u214F\\u218A\\u218B\\u2190-\\u2307\\u230C-\\u2328\\u232B-\\u2426\\u2440-\\u244A\\u249C-\\u24E9\\u2500-\\u2767\\u2794-\\u27C4\\u27C7-\\u27E5\\u27F0-\\u2982\\u2999-\\u29D7\\u29DC-\\u29FB\\u29FE-\\u2B73\\u2B76-\\u2B95\\u2B97-\\u2BFF\\u2CE5-\\u2CEA\\u2E50\\u2E51\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFF\\u3004\\u3012\\u3013\\u3020\\u3036\\u3037\\u303E\\u303F\\u309B\\u309C\\u3190\\u3191\\u3196-\\u319F\\u31C0-\\u31E3\\u31EF\\u3200-\\u321E\\u322A-\\u3247\\u3250\\u3260-\\u327F\\u328A-\\u32B0\\u32C0-\\u33FF\\u4DC0-\\u4DFF\\uA490-\\uA4C6\\uA700-\\uA716\\uA720\\uA721\\uA789\\uA78A\\uA828-\\uA82B\\uA836-\\uA839\\uAA77-\\uAA79\\uAB5B\\uAB6A\\uAB6B\\uFB29\\uFBB2-\\uFBC2\\uFD40-\\uFD4F\\uFDCF\\uFDFC-\\uFDFF\\uFE62\\uFE64-\\uFE66\\uFE69\\uFF04\\uFF0B\\uFF1C-\\uFF1E\\uFF3E\\uFF40\\uFF5C\\uFF5E\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\uFFFC\\uFFFD]|\\uD800[\\uDD37-\\uDD3F\\uDD79-\\uDD89\\uDD8C-\\uDD8E\\uDD90-\\uDD9C\\uDDA0\\uDDD0-\\uDDFC]|\\uD802[\\uDC77\\uDC78\\uDEC8]|\\uD805\\uDF3F|\\uD807[\\uDFD5-\\uDFF1]|\\uD81A[\\uDF3C-\\uDF3F\\uDF45]|\\uD82F\\uDC9C|\\uD833[\\uDF50-\\uDFC3]|\\uD834[\\uDC00-\\uDCF5\\uDD00-\\uDD26\\uDD29-\\uDD64\\uDD6A-\\uDD6C\\uDD83\\uDD84\\uDD8C-\\uDDA9\\uDDAE-\\uDDEA\\uDE00-\\uDE41\\uDE45\\uDF00-\\uDF56]|\\uD835[\\uDEC1\\uDEDB\\uDEFB\\uDF15\\uDF35\\uDF4F\\uDF6F\\uDF89\\uDFA9\\uDFC3]|\\uD836[\\uDC00-\\uDDFF\\uDE37-\\uDE3A\\uDE6D-\\uDE74\\uDE76-\\uDE83\\uDE85\\uDE86]|\\uD838[\\uDD4F\\uDEFF]|\\uD83B[\\uDCAC\\uDCB0\\uDD2E\\uDEF0\\uDEF1]|\\uD83C[\\uDC00-\\uDC2B\\uDC30-\\uDC93\\uDCA0-\\uDCAE\\uDCB1-\\uDCBF\\uDCC1-\\uDCCF\\uDCD1-\\uDCF5\\uDD0D-\\uDDAD\\uDDE6-\\uDE02\\uDE10-\\uDE3B\\uDE40-\\uDE48\\uDE50\\uDE51\\uDE60-\\uDE65\\uDF00-\\uDFFF]|\\uD83D[\\uDC00-\\uDED7\\uDEDC-\\uDEEC\\uDEF0-\\uDEFC\\uDF00-\\uDF76\\uDF7B-\\uDFD9\\uDFE0-\\uDFEB\\uDFF0]|\\uD83E[\\uDC00-\\uDC0B\\uDC10-\\uDC47\\uDC50-\\uDC59\\uDC60-\\uDC87\\uDC90-\\uDCAD\\uDCB0\\uDCB1\\uDD00-\\uDE53\\uDE60-\\uDE6D\\uDE70-\\uDE7C\\uDE80-\\uDE88\\uDE90-\\uDEBD\\uDEBF-\\uDEC5\\uDECE-\\uDEDB\\uDEE0-\\uDEE8\\uDEF0-\\uDEF8\\uDF00-\\uDF92\\uDF94-\\uDFCA]/","export default /[\\0-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/","export default /[\\0-\\x1F\\x7F-\\x9F]/","export default /[\\xAD\\u0600-\\u0605\\u061C\\u06DD\\u070F\\u0890\\u0891\\u08E2\\u180E\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u2066-\\u206F\\uFEFF\\uFFF9-\\uFFFB]|\\uD804[\\uDCBD\\uDCCD]|\\uD80D[\\uDC30-\\uDC3F]|\\uD82F[\\uDCA0-\\uDCA3]|\\uD834[\\uDD73-\\uDD7A]|\\uDB40[\\uDC01\\uDC20-\\uDC7F]/","export default /[ \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]/","// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-html.js.map","// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u0200aglq\\t\\x15\\x18\\x1b\\u026d\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403et;\\u403cuot;\\u4022\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-xml.js.map","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n [0, 65533],\n // C1 Unicode control character reference replacements\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n let output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint) {\n var _a;\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return 0xfffd;\n }\n return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport default function decodeCodePoint(codePoint) {\n return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode_codepoint.js.map","import htmlDecodeTree from \"./generated/decode-data-html.js\";\nimport xmlDecodeTree from \"./generated/decode-data-xml.js\";\nimport decodeCodePoint, { replaceCodePoint, fromCodePoint, } from \"./decode_codepoint.js\";\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree, xmlDecodeTree, decodeCodePoint };\nexport { replaceCodePoint, fromCodePoint } from \"./decode_codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 0b100000;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n /** Entities in text nodes that can end with any character. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */\n DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n constructor(\n /** The tree used to decode entities. */\n decodeTree, \n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n emitCodePoint, \n /** An object that is used to produce errors. */\n errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */\n this.state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n this.result = 0;\n /** The current index in the decode tree. */\n this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n this.excess = 1;\n /** The mode in which the decoder is operating. */\n this.decodeMode = DecodingMode.Strict;\n }\n /** Resets the instance to make it reusable. */\n startEntity(decodeMode) {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n }\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param string The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n write(str, offset) {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (str.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(str, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(str, offset);\n }\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(str, offset);\n }\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(str, offset);\n }\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(str, offset);\n }\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(str, offset);\n }\n }\n }\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericStart(str, offset) {\n if (offset >= str.length) {\n return -1;\n }\n if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(str, offset + 1);\n }\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(str, offset);\n }\n addToNumericResult(str, start, end, base) {\n if (start !== end) {\n const digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n parseInt(str.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n }\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericHex(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const char = str.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 16);\n return -1;\n }\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericDecimal(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const char = str.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 10);\n return -1;\n }\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n emitNumericEntity(lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n }\n else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n }\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNamedEntity(str, offset) {\n const { decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n for (; offset < str.length; offset++, this.excess++) {\n const char = str.charCodeAt(offset);\n this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n }\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n }\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n emitNotTerminatedNamedEntity() {\n var _a;\n const { result, decodeTree } = this;\n const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n }\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */\n emitNamedEntityData(result, valueLength, consumed) {\n const { decodeTree } = this;\n this.emitCodePoint(valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1], consumed);\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n return consumed;\n }\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */\n end() {\n var _a;\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n let ret = \"\";\n const decoder = new EntityDecoder(decodeTree, (str) => (ret += fromCodePoint(str)));\n return function decodeWithTrie(str, decodeMode) {\n let lastIndex = 0;\n let offset = 0;\n while ((offset = str.indexOf(\"&\", offset)) >= 0) {\n ret += str.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n const len = decoder.write(str, \n // Skip the \"&\"\n offset + 1);\n if (len < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + len;\n // If `len` is 0, skip the current `&` and continue.\n offset = len === 0 ? lastIndex + 1 : lastIndex;\n }\n const result = ret + str.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n ret = \"\";\n return result;\n };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIdx, char) {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;\n }\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n const value = char - jumpOffset;\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIdx + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n let lo = nodeIdx;\n let hi = lo + branchCount - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midVal = decodeTree[mid];\n if (midVal < char) {\n lo = mid + 1;\n }\n else if (midVal > char) {\n hi = mid - 1;\n }\n else {\n return decodeTree[mid + branchCount];\n }\n }\n return -1;\n}\nconst htmlDecoder = getDecoder(htmlDecodeTree);\nconst xmlDecoder = getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param str The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(str, mode = DecodingMode.Legacy) {\n return htmlDecoder(str, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(str) {\n return htmlDecoder(str, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(str) {\n return htmlDecoder(str, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(str) {\n return xmlDecoder(str, DecodingMode.Strict);\n}\n//# sourceMappingURL=decode.js.map","// Generated using scripts/write-encode-map.ts\nfunction restoreDiff(arr) {\n for (let i = 1; i < arr.length; i++) {\n arr[i][0] += arr[i - 1][0] + 1;\n }\n return arr;\n}\n// prettier-ignore\nexport default new Map(/* #__PURE__ */ restoreDiff([[9, \" \"], [0, \" \"], [22, \"!\"], [0, \""\"], [0, \"#\"], [0, \"$\"], [0, \"%\"], [0, \"&\"], [0, \"'\"], [0, \"(\"], [0, \")\"], [0, \"*\"], [0, \"+\"], [0, \",\"], [1, \".\"], [0, \"/\"], [10, \":\"], [0, \";\"], [0, { v: \"<\", n: 8402, o: \"<⃒\" }], [0, { v: \"=\", n: 8421, o: \"=⃥\" }], [0, { v: \">\", n: 8402, o: \">⃒\" }], [0, \"?\"], [0, \"@\"], [26, \"[\"], [0, \"\\"], [0, \"]\"], [0, \"^\"], [0, \"_\"], [0, \"`\"], [5, { n: 106, o: \"fj\" }], [20, \"{\"], [0, \"|\"], [0, \"}\"], [34, \" \"], [0, \"¡\"], [0, \"¢\"], [0, \"£\"], [0, \"¤\"], [0, \"¥\"], [0, \"¦\"], [0, \"§\"], [0, \"¨\"], [0, \"©\"], [0, \"ª\"], [0, \"«\"], [0, \"¬\"], [0, \"­\"], [0, \"®\"], [0, \"¯\"], [0, \"°\"], [0, \"±\"], [0, \"²\"], [0, \"³\"], [0, \"´\"], [0, \"µ\"], [0, \"¶\"], [0, \"·\"], [0, \"¸\"], [0, \"¹\"], [0, \"º\"], [0, \"»\"], [0, \"¼\"], [0, \"½\"], [0, \"¾\"], [0, \"¿\"], [0, \"À\"], [0, \"Á\"], [0, \"Â\"], [0, \"Ã\"], [0, \"Ä\"], [0, \"Å\"], [0, \"Æ\"], [0, \"Ç\"], [0, \"È\"], [0, \"É\"], [0, \"Ê\"], [0, \"Ë\"], [0, \"Ì\"], [0, \"Í\"], [0, \"Î\"], [0, \"Ï\"], [0, \"Ð\"], [0, \"Ñ\"], [0, \"Ò\"], [0, \"Ó\"], [0, \"Ô\"], [0, \"Õ\"], [0, \"Ö\"], [0, \"×\"], [0, \"Ø\"], [0, \"Ù\"], [0, \"Ú\"], [0, \"Û\"], [0, \"Ü\"], [0, \"Ý\"], [0, \"Þ\"], [0, \"ß\"], [0, \"à\"], [0, \"á\"], [0, \"â\"], [0, \"ã\"], [0, \"ä\"], [0, \"å\"], [0, \"æ\"], [0, \"ç\"], [0, \"è\"], [0, \"é\"], [0, \"ê\"], [0, \"ë\"], [0, \"ì\"], [0, \"í\"], [0, \"î\"], [0, \"ï\"], [0, \"ð\"], [0, \"ñ\"], [0, \"ò\"], [0, \"ó\"], [0, \"ô\"], [0, \"õ\"], [0, \"ö\"], [0, \"÷\"], [0, \"ø\"], [0, \"ù\"], [0, \"ú\"], [0, \"û\"], [0, \"ü\"], [0, \"ý\"], [0, \"þ\"], [0, \"ÿ\"], [0, \"Ā\"], [0, \"ā\"], [0, \"Ă\"], [0, \"ă\"], [0, \"Ą\"], [0, \"ą\"], [0, \"Ć\"], [0, \"ć\"], [0, \"Ĉ\"], [0, \"ĉ\"], [0, \"Ċ\"], [0, \"ċ\"], [0, \"Č\"], [0, \"č\"], [0, \"Ď\"], [0, \"ď\"], [0, \"Đ\"], [0, \"đ\"], [0, \"Ē\"], [0, \"ē\"], [2, \"Ė\"], [0, \"ė\"], [0, \"Ę\"], [0, \"ę\"], [0, \"Ě\"], [0, \"ě\"], [0, \"Ĝ\"], [0, \"ĝ\"], [0, \"Ğ\"], [0, \"ğ\"], [0, \"Ġ\"], [0, \"ġ\"], [0, \"Ģ\"], [1, \"Ĥ\"], [0, \"ĥ\"], [0, \"Ħ\"], [0, \"ħ\"], [0, \"Ĩ\"], [0, \"ĩ\"], [0, \"Ī\"], [0, \"ī\"], [2, \"Į\"], [0, \"į\"], [0, \"İ\"], [0, \"ı\"], [0, \"IJ\"], [0, \"ij\"], [0, \"Ĵ\"], [0, \"ĵ\"], [0, \"Ķ\"], [0, \"ķ\"], [0, \"ĸ\"], [0, \"Ĺ\"], [0, \"ĺ\"], [0, \"Ļ\"], [0, \"ļ\"], [0, \"Ľ\"], [0, \"ľ\"], [0, \"Ŀ\"], [0, \"ŀ\"], [0, \"Ł\"], [0, \"ł\"], [0, \"Ń\"], [0, \"ń\"], [0, \"Ņ\"], [0, \"ņ\"], [0, \"Ň\"], [0, \"ň\"], [0, \"ʼn\"], [0, \"Ŋ\"], [0, \"ŋ\"], [0, \"Ō\"], [0, \"ō\"], [2, \"Ő\"], [0, \"ő\"], [0, \"Œ\"], [0, \"œ\"], [0, \"Ŕ\"], [0, \"ŕ\"], [0, \"Ŗ\"], [0, \"ŗ\"], [0, \"Ř\"], [0, \"ř\"], [0, \"Ś\"], [0, \"ś\"], [0, \"Ŝ\"], [0, \"ŝ\"], [0, \"Ş\"], [0, \"ş\"], [0, \"Š\"], [0, \"š\"], [0, \"Ţ\"], [0, \"ţ\"], [0, \"Ť\"], [0, \"ť\"], [0, \"Ŧ\"], [0, \"ŧ\"], [0, \"Ũ\"], [0, \"ũ\"], [0, \"Ū\"], [0, \"ū\"], [0, \"Ŭ\"], [0, \"ŭ\"], [0, \"Ů\"], [0, \"ů\"], [0, \"Ű\"], [0, \"ű\"], [0, \"Ų\"], [0, \"ų\"], [0, \"Ŵ\"], [0, \"ŵ\"], [0, \"Ŷ\"], [0, \"ŷ\"], [0, \"Ÿ\"], [0, \"Ź\"], [0, \"ź\"], [0, \"Ż\"], [0, \"ż\"], [0, \"Ž\"], [0, \"ž\"], [19, \"ƒ\"], [34, \"Ƶ\"], [63, \"ǵ\"], [65, \"ȷ\"], [142, \"ˆ\"], [0, \"ˇ\"], [16, \"˘\"], [0, \"˙\"], [0, \"˚\"], [0, \"˛\"], [0, \"˜\"], [0, \"˝\"], [51, \"̑\"], [127, \"Α\"], [0, \"Β\"], [0, \"Γ\"], [0, \"Δ\"], [0, \"Ε\"], [0, \"Ζ\"], [0, \"Η\"], [0, \"Θ\"], [0, \"Ι\"], [0, \"Κ\"], [0, \"Λ\"], [0, \"Μ\"], [0, \"Ν\"], [0, \"Ξ\"], [0, \"Ο\"], [0, \"Π\"], [0, \"Ρ\"], [1, \"Σ\"], [0, \"Τ\"], [0, \"Υ\"], [0, \"Φ\"], [0, \"Χ\"], [0, \"Ψ\"], [0, \"Ω\"], [7, \"α\"], [0, \"β\"], [0, \"γ\"], [0, \"δ\"], [0, \"ε\"], [0, \"ζ\"], [0, \"η\"], [0, \"θ\"], [0, \"ι\"], [0, \"κ\"], [0, \"λ\"], [0, \"μ\"], [0, \"ν\"], [0, \"ξ\"], [0, \"ο\"], [0, \"π\"], [0, \"ρ\"], [0, \"ς\"], [0, \"σ\"], [0, \"τ\"], [0, \"υ\"], [0, \"φ\"], [0, \"χ\"], [0, \"ψ\"], [0, \"ω\"], [7, \"ϑ\"], [0, \"ϒ\"], [2, \"ϕ\"], [0, \"ϖ\"], [5, \"Ϝ\"], [0, \"ϝ\"], [18, \"ϰ\"], [0, \"ϱ\"], [3, \"ϵ\"], [0, \"϶\"], [10, \"Ё\"], [0, \"Ђ\"], [0, \"Ѓ\"], [0, \"Є\"], [0, \"Ѕ\"], [0, \"І\"], [0, \"Ї\"], [0, \"Ј\"], [0, \"Љ\"], [0, \"Њ\"], [0, \"Ћ\"], [0, \"Ќ\"], [1, \"Ў\"], [0, \"Џ\"], [0, \"А\"], [0, \"Б\"], [0, \"В\"], [0, \"Г\"], [0, \"Д\"], [0, \"Е\"], [0, \"Ж\"], [0, \"З\"], [0, \"И\"], [0, \"Й\"], [0, \"К\"], [0, \"Л\"], [0, \"М\"], [0, \"Н\"], [0, \"О\"], [0, \"П\"], [0, \"Р\"], [0, \"С\"], [0, \"Т\"], [0, \"У\"], [0, \"Ф\"], [0, \"Х\"], [0, \"Ц\"], [0, \"Ч\"], [0, \"Ш\"], [0, \"Щ\"], [0, \"Ъ\"], [0, \"Ы\"], [0, \"Ь\"], [0, \"Э\"], [0, \"Ю\"], [0, \"Я\"], [0, \"а\"], [0, \"б\"], [0, \"в\"], [0, \"г\"], [0, \"д\"], [0, \"е\"], [0, \"ж\"], [0, \"з\"], [0, \"и\"], [0, \"й\"], [0, \"к\"], [0, \"л\"], [0, \"м\"], [0, \"н\"], [0, \"о\"], [0, \"п\"], [0, \"р\"], [0, \"с\"], [0, \"т\"], [0, \"у\"], [0, \"ф\"], [0, \"х\"], [0, \"ц\"], [0, \"ч\"], [0, \"ш\"], [0, \"щ\"], [0, \"ъ\"], [0, \"ы\"], [0, \"ь\"], [0, \"э\"], [0, \"ю\"], [0, \"я\"], [1, \"ё\"], [0, \"ђ\"], [0, \"ѓ\"], [0, \"є\"], [0, \"ѕ\"], [0, \"і\"], [0, \"ї\"], [0, \"ј\"], [0, \"љ\"], [0, \"њ\"], [0, \"ћ\"], [0, \"ќ\"], [1, \"ў\"], [0, \"џ\"], [7074, \" \"], [0, \" \"], [0, \" \"], [0, \" \"], [1, \" \"], [0, \" \"], [0, \" \"], [0, \" \"], [0, \"​\"], [0, \"‌\"], [0, \"‍\"], [0, \"‎\"], [0, \"‏\"], [0, \"‐\"], [2, \"–\"], [0, \"—\"], [0, \"―\"], [0, \"‖\"], [1, \"‘\"], [0, \"’\"], [0, \"‚\"], [1, \"“\"], [0, \"”\"], [0, \"„\"], [1, \"†\"], [0, \"‡\"], [0, \"•\"], [2, \"‥\"], [0, \"…\"], [9, \"‰\"], [0, \"‱\"], [0, \"′\"], [0, \"″\"], [0, \"‴\"], [0, \"‵\"], [3, \"‹\"], [0, \"›\"], [3, \"‾\"], [2, \"⁁\"], [1, \"⁃\"], [0, \"⁄\"], [10, \"⁏\"], [7, \"⁗\"], [7, { v: \" \", n: 8202, o: \"  \" }], [0, \"⁠\"], [0, \"⁡\"], [0, \"⁢\"], [0, \"⁣\"], [72, \"€\"], [46, \"⃛\"], [0, \"⃜\"], [37, \"ℂ\"], [2, \"℅\"], [4, \"ℊ\"], [0, \"ℋ\"], [0, \"ℌ\"], [0, \"ℍ\"], [0, \"ℎ\"], [0, \"ℏ\"], [0, \"ℐ\"], [0, \"ℑ\"], [0, \"ℒ\"], [0, \"ℓ\"], [1, \"ℕ\"], [0, \"№\"], [0, \"℗\"], [0, \"℘\"], [0, \"ℙ\"], [0, \"ℚ\"], [0, \"ℛ\"], [0, \"ℜ\"], [0, \"ℝ\"], [0, \"℞\"], [3, \"™\"], [1, \"ℤ\"], [2, \"℧\"], [0, \"ℨ\"], [0, \"℩\"], [2, \"ℬ\"], [0, \"ℭ\"], [1, \"ℯ\"], [0, \"ℰ\"], [0, \"ℱ\"], [1, \"ℳ\"], [0, \"ℴ\"], [0, \"ℵ\"], [0, \"ℶ\"], [0, \"ℷ\"], [0, \"ℸ\"], [12, \"ⅅ\"], [0, \"ⅆ\"], [0, \"ⅇ\"], [0, \"ⅈ\"], [10, \"⅓\"], [0, \"⅔\"], [0, \"⅕\"], [0, \"⅖\"], [0, \"⅗\"], [0, \"⅘\"], [0, \"⅙\"], [0, \"⅚\"], [0, \"⅛\"], [0, \"⅜\"], [0, \"⅝\"], [0, \"⅞\"], [49, \"←\"], [0, \"↑\"], [0, \"→\"], [0, \"↓\"], [0, \"↔\"], [0, \"↕\"], [0, \"↖\"], [0, \"↗\"], [0, \"↘\"], [0, \"↙\"], [0, \"↚\"], [0, \"↛\"], [1, { v: \"↝\", n: 824, o: \"↝̸\" }], [0, \"↞\"], [0, \"↟\"], [0, \"↠\"], [0, \"↡\"], [0, \"↢\"], [0, \"↣\"], [0, \"↤\"], [0, \"↥\"], [0, \"↦\"], [0, \"↧\"], [1, \"↩\"], [0, \"↪\"], [0, \"↫\"], [0, \"↬\"], [0, \"↭\"], [0, \"↮\"], [1, \"↰\"], [0, \"↱\"], [0, \"↲\"], [0, \"↳\"], [1, \"↵\"], [0, \"↶\"], [0, \"↷\"], [2, \"↺\"], [0, \"↻\"], [0, \"↼\"], [0, \"↽\"], [0, \"↾\"], [0, \"↿\"], [0, \"⇀\"], [0, \"⇁\"], [0, \"⇂\"], [0, \"⇃\"], [0, \"⇄\"], [0, \"⇅\"], [0, \"⇆\"], [0, \"⇇\"], [0, \"⇈\"], [0, \"⇉\"], [0, \"⇊\"], [0, \"⇋\"], [0, \"⇌\"], [0, \"⇍\"], [0, \"⇎\"], [0, \"⇏\"], [0, \"⇐\"], [0, \"⇑\"], [0, \"⇒\"], [0, \"⇓\"], [0, \"⇔\"], [0, \"⇕\"], [0, \"⇖\"], [0, \"⇗\"], [0, \"⇘\"], [0, \"⇙\"], [0, \"⇚\"], [0, \"⇛\"], [1, \"⇝\"], [6, \"⇤\"], [0, \"⇥\"], [15, \"⇵\"], [7, \"⇽\"], [0, \"⇾\"], [0, \"⇿\"], [0, \"∀\"], [0, \"∁\"], [0, { v: \"∂\", n: 824, o: \"∂̸\" }], [0, \"∃\"], [0, \"∄\"], [0, \"∅\"], [1, \"∇\"], [0, \"∈\"], [0, \"∉\"], [1, \"∋\"], [0, \"∌\"], [2, \"∏\"], [0, \"∐\"], [0, \"∑\"], [0, \"−\"], [0, \"∓\"], [0, \"∔\"], [1, \"∖\"], [0, \"∗\"], [0, \"∘\"], [1, \"√\"], [2, \"∝\"], [0, \"∞\"], [0, \"∟\"], [0, { v: \"∠\", n: 8402, o: \"∠⃒\" }], [0, \"∡\"], [0, \"∢\"], [0, \"∣\"], [0, \"∤\"], [0, \"∥\"], [0, \"∦\"], [0, \"∧\"], [0, \"∨\"], [0, { v: \"∩\", n: 65024, o: \"∩︀\" }], [0, { v: \"∪\", n: 65024, o: \"∪︀\" }], [0, \"∫\"], [0, \"∬\"], [0, \"∭\"], [0, \"∮\"], [0, \"∯\"], [0, \"∰\"], [0, \"∱\"], [0, \"∲\"], [0, \"∳\"], [0, \"∴\"], [0, \"∵\"], [0, \"∶\"], [0, \"∷\"], [0, \"∸\"], [1, \"∺\"], [0, \"∻\"], [0, { v: \"∼\", n: 8402, o: \"∼⃒\" }], [0, { v: \"∽\", n: 817, o: \"∽̱\" }], [0, { v: \"∾\", n: 819, o: \"∾̳\" }], [0, \"∿\"], [0, \"≀\"], [0, \"≁\"], [0, { v: \"≂\", n: 824, o: \"≂̸\" }], [0, \"≃\"], [0, \"≄\"], [0, \"≅\"], [0, \"≆\"], [0, \"≇\"], [0, \"≈\"], [0, \"≉\"], [0, \"≊\"], [0, { v: \"≋\", n: 824, o: \"≋̸\" }], [0, \"≌\"], [0, { v: \"≍\", n: 8402, o: \"≍⃒\" }], [0, { v: \"≎\", n: 824, o: \"≎̸\" }], [0, { v: \"≏\", n: 824, o: \"≏̸\" }], [0, { v: \"≐\", n: 824, o: \"≐̸\" }], [0, \"≑\"], [0, \"≒\"], [0, \"≓\"], [0, \"≔\"], [0, \"≕\"], [0, \"≖\"], [0, \"≗\"], [1, \"≙\"], [0, \"≚\"], [1, \"≜\"], [2, \"≟\"], [0, \"≠\"], [0, { v: \"≡\", n: 8421, o: \"≡⃥\" }], [0, \"≢\"], [1, { v: \"≤\", n: 8402, o: \"≤⃒\" }], [0, { v: \"≥\", n: 8402, o: \"≥⃒\" }], [0, { v: \"≦\", n: 824, o: \"≦̸\" }], [0, { v: \"≧\", n: 824, o: \"≧̸\" }], [0, { v: \"≨\", n: 65024, o: \"≨︀\" }], [0, { v: \"≩\", n: 65024, o: \"≩︀\" }], [0, { v: \"≪\", n: new Map(/* #__PURE__ */ restoreDiff([[824, \"≪̸\"], [7577, \"≪⃒\"]])) }], [0, { v: \"≫\", n: new Map(/* #__PURE__ */ restoreDiff([[824, \"≫̸\"], [7577, \"≫⃒\"]])) }], [0, \"≬\"], [0, \"≭\"], [0, \"≮\"], [0, \"≯\"], [0, \"≰\"], [0, \"≱\"], [0, \"≲\"], [0, \"≳\"], [0, \"≴\"], [0, \"≵\"], [0, \"≶\"], [0, \"≷\"], [0, \"≸\"], [0, \"≹\"], [0, \"≺\"], [0, \"≻\"], [0, \"≼\"], [0, \"≽\"], [0, \"≾\"], [0, { v: \"≿\", n: 824, o: \"≿̸\" }], [0, \"⊀\"], [0, \"⊁\"], [0, { v: \"⊂\", n: 8402, o: \"⊂⃒\" }], [0, { v: \"⊃\", n: 8402, o: \"⊃⃒\" }], [0, \"⊄\"], [0, \"⊅\"], [0, \"⊆\"], [0, \"⊇\"], [0, \"⊈\"], [0, \"⊉\"], [0, { v: \"⊊\", n: 65024, o: \"⊊︀\" }], [0, { v: \"⊋\", n: 65024, o: \"⊋︀\" }], [1, \"⊍\"], [0, \"⊎\"], [0, { v: \"⊏\", n: 824, o: \"⊏̸\" }], [0, { v: \"⊐\", n: 824, o: \"⊐̸\" }], [0, \"⊑\"], [0, \"⊒\"], [0, { v: \"⊓\", n: 65024, o: \"⊓︀\" }], [0, { v: \"⊔\", n: 65024, o: \"⊔︀\" }], [0, \"⊕\"], [0, \"⊖\"], [0, \"⊗\"], [0, \"⊘\"], [0, \"⊙\"], [0, \"⊚\"], [0, \"⊛\"], [1, \"⊝\"], [0, \"⊞\"], [0, \"⊟\"], [0, \"⊠\"], [0, \"⊡\"], [0, \"⊢\"], [0, \"⊣\"], [0, \"⊤\"], [0, \"⊥\"], [1, \"⊧\"], [0, \"⊨\"], [0, \"⊩\"], [0, \"⊪\"], [0, \"⊫\"], [0, \"⊬\"], [0, \"⊭\"], [0, \"⊮\"], [0, \"⊯\"], [0, \"⊰\"], [1, \"⊲\"], [0, \"⊳\"], [0, { v: \"⊴\", n: 8402, o: \"⊴⃒\" }], [0, { v: \"⊵\", n: 8402, o: \"⊵⃒\" }], [0, \"⊶\"], [0, \"⊷\"], [0, \"⊸\"], [0, \"⊹\"], [0, \"⊺\"], [0, \"⊻\"], [1, \"⊽\"], [0, \"⊾\"], [0, \"⊿\"], [0, \"⋀\"], [0, \"⋁\"], [0, \"⋂\"], [0, \"⋃\"], [0, \"⋄\"], [0, \"⋅\"], [0, \"⋆\"], [0, \"⋇\"], [0, \"⋈\"], [0, \"⋉\"], [0, \"⋊\"], [0, \"⋋\"], [0, \"⋌\"], [0, \"⋍\"], [0, \"⋎\"], [0, \"⋏\"], [0, \"⋐\"], [0, \"⋑\"], [0, \"⋒\"], [0, \"⋓\"], [0, \"⋔\"], [0, \"⋕\"], [0, \"⋖\"], [0, \"⋗\"], [0, { v: \"⋘\", n: 824, o: \"⋘̸\" }], [0, { v: \"⋙\", n: 824, o: \"⋙̸\" }], [0, { v: \"⋚\", n: 65024, o: \"⋚︀\" }], [0, { v: \"⋛\", n: 65024, o: \"⋛︀\" }], [2, \"⋞\"], [0, \"⋟\"], [0, \"⋠\"], [0, \"⋡\"], [0, \"⋢\"], [0, \"⋣\"], [2, \"⋦\"], [0, \"⋧\"], [0, \"⋨\"], [0, \"⋩\"], [0, \"⋪\"], [0, \"⋫\"], [0, \"⋬\"], [0, \"⋭\"], [0, \"⋮\"], [0, \"⋯\"], [0, \"⋰\"], [0, \"⋱\"], [0, \"⋲\"], [0, \"⋳\"], [0, \"⋴\"], [0, { v: \"⋵\", n: 824, o: \"⋵̸\" }], [0, \"⋶\"], [0, \"⋷\"], [1, { v: \"⋹\", n: 824, o: \"⋹̸\" }], [0, \"⋺\"], [0, \"⋻\"], [0, \"⋼\"], [0, \"⋽\"], [0, \"⋾\"], [6, \"⌅\"], [0, \"⌆\"], [1, \"⌈\"], [0, \"⌉\"], [0, \"⌊\"], [0, \"⌋\"], [0, \"⌌\"], [0, \"⌍\"], [0, \"⌎\"], [0, \"⌏\"], [0, \"⌐\"], [1, \"⌒\"], [0, \"⌓\"], [1, \"⌕\"], [0, \"⌖\"], [5, \"⌜\"], [0, \"⌝\"], [0, \"⌞\"], [0, \"⌟\"], [2, \"⌢\"], [0, \"⌣\"], [9, \"⌭\"], [0, \"⌮\"], [7, \"⌶\"], [6, \"⌽\"], [1, \"⌿\"], [60, \"⍼\"], [51, \"⎰\"], [0, \"⎱\"], [2, \"⎴\"], [0, \"⎵\"], [0, \"⎶\"], [37, \"⏜\"], [0, \"⏝\"], [0, \"⏞\"], [0, \"⏟\"], [2, \"⏢\"], [4, \"⏧\"], [59, \"␣\"], [164, \"Ⓢ\"], [55, \"─\"], [1, \"│\"], [9, \"┌\"], [3, \"┐\"], [3, \"└\"], [3, \"┘\"], [3, \"├\"], [7, \"┤\"], [7, \"┬\"], [7, \"┴\"], [7, \"┼\"], [19, \"═\"], [0, \"║\"], [0, \"╒\"], [0, \"╓\"], [0, \"╔\"], [0, \"╕\"], [0, \"╖\"], [0, \"╗\"], [0, \"╘\"], [0, \"╙\"], [0, \"╚\"], [0, \"╛\"], [0, \"╜\"], [0, \"╝\"], [0, \"╞\"], [0, \"╟\"], [0, \"╠\"], [0, \"╡\"], [0, \"╢\"], [0, \"╣\"], [0, \"╤\"], [0, \"╥\"], [0, \"╦\"], [0, \"╧\"], [0, \"╨\"], [0, \"╩\"], [0, \"╪\"], [0, \"╫\"], [0, \"╬\"], [19, \"▀\"], [3, \"▄\"], [3, \"█\"], [8, \"░\"], [0, \"▒\"], [0, \"▓\"], [13, \"□\"], [8, \"▪\"], [0, \"▫\"], [1, \"▭\"], [0, \"▮\"], [2, \"▱\"], [1, \"△\"], [0, \"▴\"], [0, \"▵\"], [2, \"▸\"], [0, \"▹\"], [3, \"▽\"], [0, \"▾\"], [0, \"▿\"], [2, \"◂\"], [0, \"◃\"], [6, \"◊\"], [0, \"○\"], [32, \"◬\"], [2, \"◯\"], [8, \"◸\"], [0, \"◹\"], [0, \"◺\"], [0, \"◻\"], [0, \"◼\"], [8, \"★\"], [0, \"☆\"], [7, \"☎\"], [49, \"♀\"], [1, \"♂\"], [29, \"♠\"], [2, \"♣\"], [1, \"♥\"], [0, \"♦\"], [3, \"♪\"], [2, \"♭\"], [0, \"♮\"], [0, \"♯\"], [163, \"✓\"], [3, \"✗\"], [8, \"✠\"], [21, \"✶\"], [33, \"❘\"], [25, \"❲\"], [0, \"❳\"], [84, \"⟈\"], [0, \"⟉\"], [28, \"⟦\"], [0, \"⟧\"], [0, \"⟨\"], [0, \"⟩\"], [0, \"⟪\"], [0, \"⟫\"], [0, \"⟬\"], [0, \"⟭\"], [7, \"⟵\"], [0, \"⟶\"], [0, \"⟷\"], [0, \"⟸\"], [0, \"⟹\"], [0, \"⟺\"], [1, \"⟼\"], [2, \"⟿\"], [258, \"⤂\"], [0, \"⤃\"], [0, \"⤄\"], [0, \"⤅\"], [6, \"⤌\"], [0, \"⤍\"], [0, \"⤎\"], [0, \"⤏\"], [0, \"⤐\"], [0, \"⤑\"], [0, \"⤒\"], [0, \"⤓\"], [2, \"⤖\"], [2, \"⤙\"], [0, \"⤚\"], [0, \"⤛\"], [0, \"⤜\"], [0, \"⤝\"], [0, \"⤞\"], [0, \"⤟\"], [0, \"⤠\"], [2, \"⤣\"], [0, \"⤤\"], [0, \"⤥\"], [0, \"⤦\"], [0, \"⤧\"], [0, \"⤨\"], [0, \"⤩\"], [0, \"⤪\"], [8, { v: \"⤳\", n: 824, o: \"⤳̸\" }], [1, \"⤵\"], [0, \"⤶\"], [0, \"⤷\"], [0, \"⤸\"], [0, \"⤹\"], [2, \"⤼\"], [0, \"⤽\"], [7, \"⥅\"], [2, \"⥈\"], [0, \"⥉\"], [0, \"⥊\"], [0, \"⥋\"], [2, \"⥎\"], [0, \"⥏\"], [0, \"⥐\"], [0, \"⥑\"], [0, \"⥒\"], [0, \"⥓\"], [0, \"⥔\"], [0, \"⥕\"], [0, \"⥖\"], [0, \"⥗\"], [0, \"⥘\"], [0, \"⥙\"], [0, \"⥚\"], [0, \"⥛\"], [0, \"⥜\"], [0, \"⥝\"], [0, \"⥞\"], [0, \"⥟\"], [0, \"⥠\"], [0, \"⥡\"], [0, \"⥢\"], [0, \"⥣\"], [0, \"⥤\"], [0, \"⥥\"], [0, \"⥦\"], [0, \"⥧\"], [0, \"⥨\"], [0, \"⥩\"], [0, \"⥪\"], [0, \"⥫\"], [0, \"⥬\"], [0, \"⥭\"], [0, \"⥮\"], [0, \"⥯\"], [0, \"⥰\"], [0, \"⥱\"], [0, \"⥲\"], [0, \"⥳\"], [0, \"⥴\"], [0, \"⥵\"], [0, \"⥶\"], [1, \"⥸\"], [0, \"⥹\"], [1, \"⥻\"], [0, \"⥼\"], [0, \"⥽\"], [0, \"⥾\"], [0, \"⥿\"], [5, \"⦅\"], [0, \"⦆\"], [4, \"⦋\"], [0, \"⦌\"], [0, \"⦍\"], [0, \"⦎\"], [0, \"⦏\"], [0, \"⦐\"], [0, \"⦑\"], [0, \"⦒\"], [0, \"⦓\"], [0, \"⦔\"], [0, \"⦕\"], [0, \"⦖\"], [3, \"⦚\"], [1, \"⦜\"], [0, \"⦝\"], [6, \"⦤\"], [0, \"⦥\"], [0, \"⦦\"], [0, \"⦧\"], [0, \"⦨\"], [0, \"⦩\"], [0, \"⦪\"], [0, \"⦫\"], [0, \"⦬\"], [0, \"⦭\"], [0, \"⦮\"], [0, \"⦯\"], [0, \"⦰\"], [0, \"⦱\"], [0, \"⦲\"], [0, \"⦳\"], [0, \"⦴\"], [0, \"⦵\"], [0, \"⦶\"], [0, \"⦷\"], [1, \"⦹\"], [1, \"⦻\"], [0, \"⦼\"], [1, \"⦾\"], [0, \"⦿\"], [0, \"⧀\"], [0, \"⧁\"], [0, \"⧂\"], [0, \"⧃\"], [0, \"⧄\"], [0, \"⧅\"], [3, \"⧉\"], [3, \"⧍\"], [0, \"⧎\"], [0, { v: \"⧏\", n: 824, o: \"⧏̸\" }], [0, { v: \"⧐\", n: 824, o: \"⧐̸\" }], [11, \"⧜\"], [0, \"⧝\"], [0, \"⧞\"], [4, \"⧣\"], [0, \"⧤\"], [0, \"⧥\"], [5, \"⧫\"], [8, \"⧴\"], [1, \"⧶\"], [9, \"⨀\"], [0, \"⨁\"], [0, \"⨂\"], [1, \"⨄\"], [1, \"⨆\"], [5, \"⨌\"], [0, \"⨍\"], [2, \"⨐\"], [0, \"⨑\"], [0, \"⨒\"], [0, \"⨓\"], [0, \"⨔\"], [0, \"⨕\"], [0, \"⨖\"], [0, \"⨗\"], [10, \"⨢\"], [0, \"⨣\"], [0, \"⨤\"], [0, \"⨥\"], [0, \"⨦\"], [0, \"⨧\"], [1, \"⨩\"], [0, \"⨪\"], [2, \"⨭\"], [0, \"⨮\"], [0, \"⨯\"], [0, \"⨰\"], [0, \"⨱\"], [1, \"⨳\"], [0, \"⨴\"], [0, \"⨵\"], [0, \"⨶\"], [0, \"⨷\"], [0, \"⨸\"], [0, \"⨹\"], [0, \"⨺\"], [0, \"⨻\"], [0, \"⨼\"], [2, \"⨿\"], [0, \"⩀\"], [1, \"⩂\"], [0, \"⩃\"], [0, \"⩄\"], [0, \"⩅\"], [0, \"⩆\"], [0, \"⩇\"], [0, \"⩈\"], [0, \"⩉\"], [0, \"⩊\"], [0, \"⩋\"], [0, \"⩌\"], [0, \"⩍\"], [2, \"⩐\"], [2, \"⩓\"], [0, \"⩔\"], [0, \"⩕\"], [0, \"⩖\"], [0, \"⩗\"], [0, \"⩘\"], [1, \"⩚\"], [0, \"⩛\"], [0, \"⩜\"], [0, \"⩝\"], [1, \"⩟\"], [6, \"⩦\"], [3, \"⩪\"], [2, { v: \"⩭\", n: 824, o: \"⩭̸\" }], [0, \"⩮\"], [0, \"⩯\"], [0, { v: \"⩰\", n: 824, o: \"⩰̸\" }], [0, \"⩱\"], [0, \"⩲\"], [0, \"⩳\"], [0, \"⩴\"], [0, \"⩵\"], [1, \"⩷\"], [0, \"⩸\"], [0, \"⩹\"], [0, \"⩺\"], [0, \"⩻\"], [0, \"⩼\"], [0, { v: \"⩽\", n: 824, o: \"⩽̸\" }], [0, { v: \"⩾\", n: 824, o: \"⩾̸\" }], [0, \"⩿\"], [0, \"⪀\"], [0, \"⪁\"], [0, \"⪂\"], [0, \"⪃\"], [0, \"⪄\"], [0, \"⪅\"], [0, \"⪆\"], [0, \"⪇\"], [0, \"⪈\"], [0, \"⪉\"], [0, \"⪊\"], [0, \"⪋\"], [0, \"⪌\"], [0, \"⪍\"], [0, \"⪎\"], [0, \"⪏\"], [0, \"⪐\"], [0, \"⪑\"], [0, \"⪒\"], [0, \"⪓\"], [0, \"⪔\"], [0, \"⪕\"], [0, \"⪖\"], [0, \"⪗\"], [0, \"⪘\"], [0, \"⪙\"], [0, \"⪚\"], [2, \"⪝\"], [0, \"⪞\"], [0, \"⪟\"], [0, \"⪠\"], [0, { v: \"⪡\", n: 824, o: \"⪡̸\" }], [0, { v: \"⪢\", n: 824, o: \"⪢̸\" }], [1, \"⪤\"], [0, \"⪥\"], [0, \"⪦\"], [0, \"⪧\"], [0, \"⪨\"], [0, \"⪩\"], [0, \"⪪\"], [0, \"⪫\"], [0, { v: \"⪬\", n: 65024, o: \"⪬︀\" }], [0, { v: \"⪭\", n: 65024, o: \"⪭︀\" }], [0, \"⪮\"], [0, { v: \"⪯\", n: 824, o: \"⪯̸\" }], [0, { v: \"⪰\", n: 824, o: \"⪰̸\" }], [2, \"⪳\"], [0, \"⪴\"], [0, \"⪵\"], [0, \"⪶\"], [0, \"⪷\"], [0, \"⪸\"], [0, \"⪹\"], [0, \"⪺\"], [0, \"⪻\"], [0, \"⪼\"], [0, \"⪽\"], [0, \"⪾\"], [0, \"⪿\"], [0, \"⫀\"], [0, \"⫁\"], [0, \"⫂\"], [0, \"⫃\"], [0, \"⫄\"], [0, { v: \"⫅\", n: 824, o: \"⫅̸\" }], [0, { v: \"⫆\", n: 824, o: \"⫆̸\" }], [0, \"⫇\"], [0, \"⫈\"], [2, { v: \"⫋\", n: 65024, o: \"⫋︀\" }], [0, { v: \"⫌\", n: 65024, o: \"⫌︀\" }], [2, \"⫏\"], [0, \"⫐\"], [0, \"⫑\"], [0, \"⫒\"], [0, \"⫓\"], [0, \"⫔\"], [0, \"⫕\"], [0, \"⫖\"], [0, \"⫗\"], [0, \"⫘\"], [0, \"⫙\"], [0, \"⫚\"], [0, \"⫛\"], [8, \"⫤\"], [1, \"⫦\"], [0, \"⫧\"], [0, \"⫨\"], [0, \"⫩\"], [1, \"⫫\"], [0, \"⫬\"], [0, \"⫭\"], [0, \"⫮\"], [0, \"⫯\"], [0, \"⫰\"], [0, \"⫱\"], [0, \"⫲\"], [0, \"⫳\"], [9, { v: \"⫽\", n: 8421, o: \"⫽⃥\" }], [44343, { n: new Map(/* #__PURE__ */ restoreDiff([[56476, \"𝒜\"], [1, \"𝒞\"], [0, \"𝒟\"], [2, \"𝒢\"], [2, \"𝒥\"], [0, \"𝒦\"], [2, \"𝒩\"], [0, \"𝒪\"], [0, \"𝒫\"], [0, \"𝒬\"], [1, \"𝒮\"], [0, \"𝒯\"], [0, \"𝒰\"], [0, \"𝒱\"], [0, \"𝒲\"], [0, \"𝒳\"], [0, \"𝒴\"], [0, \"𝒵\"], [0, \"𝒶\"], [0, \"𝒷\"], [0, \"𝒸\"], [0, \"𝒹\"], [1, \"𝒻\"], [1, \"𝒽\"], [0, \"𝒾\"], [0, \"𝒿\"], [0, \"𝓀\"], [0, \"𝓁\"], [0, \"𝓂\"], [0, \"𝓃\"], [1, \"𝓅\"], [0, \"𝓆\"], [0, \"𝓇\"], [0, \"𝓈\"], [0, \"𝓉\"], [0, \"𝓊\"], [0, \"𝓋\"], [0, \"𝓌\"], [0, \"𝓍\"], [0, \"𝓎\"], [0, \"𝓏\"], [52, \"𝔄\"], [0, \"𝔅\"], [1, \"𝔇\"], [0, \"𝔈\"], [0, \"𝔉\"], [0, \"𝔊\"], [2, \"𝔍\"], [0, \"𝔎\"], [0, \"𝔏\"], [0, \"𝔐\"], [0, \"𝔑\"], [0, \"𝔒\"], [0, \"𝔓\"], [0, \"𝔔\"], [1, \"𝔖\"], [0, \"𝔗\"], [0, \"𝔘\"], [0, \"𝔙\"], [0, \"𝔚\"], [0, \"𝔛\"], [0, \"𝔜\"], [1, \"𝔞\"], [0, \"𝔟\"], [0, \"𝔠\"], [0, \"𝔡\"], [0, \"𝔢\"], [0, \"𝔣\"], [0, \"𝔤\"], [0, \"𝔥\"], [0, \"𝔦\"], [0, \"𝔧\"], [0, \"𝔨\"], [0, \"𝔩\"], [0, \"𝔪\"], [0, \"𝔫\"], [0, \"𝔬\"], [0, \"𝔭\"], [0, \"𝔮\"], [0, \"𝔯\"], [0, \"𝔰\"], [0, \"𝔱\"], [0, \"𝔲\"], [0, \"𝔳\"], [0, \"𝔴\"], [0, \"𝔵\"], [0, \"𝔶\"], [0, \"𝔷\"], [0, \"𝔸\"], [0, \"𝔹\"], [1, \"𝔻\"], [0, \"𝔼\"], [0, \"𝔽\"], [0, \"𝔾\"], [1, \"𝕀\"], [0, \"𝕁\"], [0, \"𝕂\"], [0, \"𝕃\"], [0, \"𝕄\"], [1, \"𝕆\"], [3, \"𝕊\"], [0, \"𝕋\"], [0, \"𝕌\"], [0, \"𝕍\"], [0, \"𝕎\"], [0, \"𝕏\"], [0, \"𝕐\"], [1, \"𝕒\"], [0, \"𝕓\"], [0, \"𝕔\"], [0, \"𝕕\"], [0, \"𝕖\"], [0, \"𝕗\"], [0, \"𝕘\"], [0, \"𝕙\"], [0, \"𝕚\"], [0, \"𝕛\"], [0, \"𝕜\"], [0, \"𝕝\"], [0, \"𝕞\"], [0, \"𝕟\"], [0, \"𝕠\"], [0, \"𝕡\"], [0, \"𝕢\"], [0, \"𝕣\"], [0, \"𝕤\"], [0, \"𝕥\"], [0, \"𝕦\"], [0, \"𝕧\"], [0, \"𝕨\"], [0, \"𝕩\"], [0, \"𝕪\"], [0, \"𝕫\"]])) }], [8906, \"ff\"], [0, \"fi\"], [0, \"fl\"], [0, \"ffi\"], [0, \"ffl\"]]));\n//# sourceMappingURL=encode-html.js.map","export const xmlReplacer = /[\"&'<>$\\x80-\\uFFFF]/g;\nconst xmlCodeMap = new Map([\n [34, \""\"],\n [38, \"&\"],\n [39, \"'\"],\n [60, \"<\"],\n [62, \">\"],\n]);\n// For compatibility with node < 4, we wrap `codePointAt`\nexport const getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null\n ? (str, index) => str.codePointAt(index)\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n (c, index) => (c.charCodeAt(index) & 0xfc00) === 0xd800\n ? (c.charCodeAt(index) - 0xd800) * 0x400 +\n c.charCodeAt(index + 1) -\n 0xdc00 +\n 0x10000\n : c.charCodeAt(index);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexport function encodeXML(str) {\n let ret = \"\";\n let lastIdx = 0;\n let match;\n while ((match = xmlReplacer.exec(str)) !== null) {\n const i = match.index;\n const char = str.charCodeAt(i);\n const next = xmlCodeMap.get(char);\n if (next !== undefined) {\n ret += str.substring(lastIdx, i) + next;\n lastIdx = i + 1;\n }\n else {\n ret += `${str.substring(lastIdx, i)}&#x${getCodePoint(str, i).toString(16)};`;\n // Increase by 1 if we have a surrogate pair\n lastIdx = xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800);\n }\n }\n return ret + str.substr(lastIdx);\n}\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nexport const escape = encodeXML;\n/**\n * Creates a function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n *\n * @param regex Regular expression to match characters to escape.\n * @param map Map of characters to escape to their entities.\n *\n * @returns Function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n */\nfunction getEscaper(regex, map) {\n return function escape(data) {\n let match;\n let lastIdx = 0;\n let result = \"\";\n while ((match = regex.exec(data))) {\n if (lastIdx !== match.index) {\n result += data.substring(lastIdx, match.index);\n }\n // We know that this character will be in the map.\n result += map.get(match[0].charCodeAt(0));\n // Every match will be of length 1\n lastIdx = match.index + 1;\n }\n return result + data.substring(lastIdx);\n };\n}\n/**\n * Encodes all characters not valid in XML documents using XML entities.\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nexport const escapeUTF8 = getEscaper(/[&<>'\"]/g, xmlCodeMap);\n/**\n * Encodes all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeAttribute = getEscaper(/[\"&\\u00A0]/g, new Map([\n [34, \""\"],\n [38, \"&\"],\n [160, \" \"],\n]));\n/**\n * Encodes all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeText = getEscaper(/[&<>\\u00A0]/g, new Map([\n [38, \"&\"],\n [60, \"<\"],\n [62, \">\"],\n [160, \" \"],\n]));\n//# sourceMappingURL=escape.js.map","import { decodeXML, decodeHTML, DecodingMode } from \"./decode.js\";\nimport { encodeHTML, encodeNonAsciiHTML } from \"./encode.js\";\nimport { encodeXML, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\n/** The level of entities to support. */\nexport var EntityLevel;\n(function (EntityLevel) {\n /** Support only XML entities. */\n EntityLevel[EntityLevel[\"XML\"] = 0] = \"XML\";\n /** Support HTML entities, which are a superset of XML entities. */\n EntityLevel[EntityLevel[\"HTML\"] = 1] = \"HTML\";\n})(EntityLevel || (EntityLevel = {}));\nexport var EncodingMode;\n(function (EncodingMode) {\n /**\n * The output is UTF-8 encoded. Only characters that need escaping within\n * XML will be escaped.\n */\n EncodingMode[EncodingMode[\"UTF8\"] = 0] = \"UTF8\";\n /**\n * The output consists only of ASCII characters. Characters that need\n * escaping within HTML, and characters that aren't ASCII characters will\n * be escaped.\n */\n EncodingMode[EncodingMode[\"ASCII\"] = 1] = \"ASCII\";\n /**\n * Encode all characters that have an equivalent entity, as well as all\n * characters that are not ASCII characters.\n */\n EncodingMode[EncodingMode[\"Extensive\"] = 2] = \"Extensive\";\n /**\n * Encode all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */\n EncodingMode[EncodingMode[\"Attribute\"] = 3] = \"Attribute\";\n /**\n * Encode all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */\n EncodingMode[EncodingMode[\"Text\"] = 4] = \"Text\";\n})(EncodingMode || (EncodingMode = {}));\n/**\n * Decodes a string with entities.\n *\n * @param data String to decode.\n * @param options Decoding options.\n */\nexport function decode(data, options = EntityLevel.XML) {\n const level = typeof options === \"number\" ? options : options.level;\n if (level === EntityLevel.HTML) {\n const mode = typeof options === \"object\" ? options.mode : undefined;\n return decodeHTML(data, mode);\n }\n return decodeXML(data);\n}\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param data String to decode.\n * @param options Decoding options.\n * @deprecated Use `decode` with the `mode` set to `Strict`.\n */\nexport function decodeStrict(data, options = EntityLevel.XML) {\n var _a;\n const opts = typeof options === \"number\" ? { level: options } : options;\n (_a = opts.mode) !== null && _a !== void 0 ? _a : (opts.mode = DecodingMode.Strict);\n return decode(data, opts);\n}\n/**\n * Encodes a string with entities.\n *\n * @param data String to encode.\n * @param options Encoding options.\n */\nexport function encode(data, options = EntityLevel.XML) {\n const opts = typeof options === \"number\" ? { level: options } : options;\n // Mode `UTF8` just escapes XML entities\n if (opts.mode === EncodingMode.UTF8)\n return escapeUTF8(data);\n if (opts.mode === EncodingMode.Attribute)\n return escapeAttribute(data);\n if (opts.mode === EncodingMode.Text)\n return escapeText(data);\n if (opts.level === EntityLevel.HTML) {\n if (opts.mode === EncodingMode.ASCII) {\n return encodeNonAsciiHTML(data);\n }\n return encodeHTML(data);\n }\n // ASCII and Extensive are equivalent\n return encodeXML(data);\n}\nexport { encodeXML, escape, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\nexport { encodeHTML, encodeNonAsciiHTML, \n// Legacy aliases (deprecated)\nencodeHTML as encodeHTML4, encodeHTML as encodeHTML5, } from \"./encode.js\";\nexport { EntityDecoder, DecodingMode, decodeXML, decodeHTML, decodeHTMLStrict, decodeHTMLAttribute, \n// Legacy aliases (deprecated)\ndecodeHTML as decodeHTML4, decodeHTML as decodeHTML5, decodeHTMLStrict as decodeHTML4Strict, decodeHTMLStrict as decodeHTML5Strict, decodeXML as decodeXMLStrict, } from \"./decode.js\";\n//# sourceMappingURL=index.js.map","// Utilities\n//\n\nimport * as mdurl from 'mdurl'\nimport * as ucmicro from 'uc.micro'\nimport { decodeHTML } from 'entities'\n\nfunction _class (obj) { return Object.prototype.toString.call(obj) }\n\nfunction isString (obj) { return _class(obj) === '[object String]' }\n\nconst _hasOwnProperty = Object.prototype.hasOwnProperty\n\nfunction has (object, key) {\n return _hasOwnProperty.call(object, key)\n}\n\n// Merge objects\n//\nfunction assign (obj /* from1, from2, from3, ... */) {\n const sources = Array.prototype.slice.call(arguments, 1)\n\n sources.forEach(function (source) {\n if (!source) { return }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be object')\n }\n\n Object.keys(source).forEach(function (key) {\n obj[key] = source[key]\n })\n })\n\n return obj\n}\n\n// Remove element from array and put another array at those position.\n// Useful for some operations with tokens\nfunction arrayReplaceAt (src, pos, newElements) {\n return [].concat(src.slice(0, pos), newElements, src.slice(pos + 1))\n}\n\nfunction isValidEntityCode (c) {\n /* eslint no-bitwise:0 */\n // broken sequence\n if (c >= 0xD800 && c <= 0xDFFF) { return false }\n // never used\n if (c >= 0xFDD0 && c <= 0xFDEF) { return false }\n if ((c & 0xFFFF) === 0xFFFF || (c & 0xFFFF) === 0xFFFE) { return false }\n // control codes\n if (c >= 0x00 && c <= 0x08) { return false }\n if (c === 0x0B) { return false }\n if (c >= 0x0E && c <= 0x1F) { return false }\n if (c >= 0x7F && c <= 0x9F) { return false }\n // out of range\n if (c > 0x10FFFF) { return false }\n return true\n}\n\nfunction fromCodePoint (c) {\n /* eslint no-bitwise:0 */\n if (c > 0xffff) {\n c -= 0x10000\n const surrogate1 = 0xd800 + (c >> 10)\n const surrogate2 = 0xdc00 + (c & 0x3ff)\n\n return String.fromCharCode(surrogate1, surrogate2)\n }\n return String.fromCharCode(c)\n}\n\nconst UNESCAPE_MD_RE = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^_`{|}~])/g\nconst ENTITY_RE = /&([a-z#][a-z0-9]{1,31});/gi\nconst UNESCAPE_ALL_RE = new RegExp(UNESCAPE_MD_RE.source + '|' + ENTITY_RE.source, 'gi')\n\nconst DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))$/i\n\nfunction replaceEntityPattern (match, name) {\n if (name.charCodeAt(0) === 0x23/* # */ && DIGITAL_ENTITY_TEST_RE.test(name)) {\n const code = name[1].toLowerCase() === 'x'\n ? parseInt(name.slice(2), 16)\n : parseInt(name.slice(1), 10)\n\n if (isValidEntityCode(code)) {\n return fromCodePoint(code)\n }\n\n return match\n }\n\n const decoded = decodeHTML(match)\n if (decoded !== match) {\n return decoded\n }\n\n return match\n}\n\n/* function replaceEntities(str) {\n if (str.indexOf('&') < 0) { return str; }\n\n return str.replace(ENTITY_RE, replaceEntityPattern);\n} */\n\nfunction unescapeMd (str) {\n if (str.indexOf('\\\\') < 0) { return str }\n return str.replace(UNESCAPE_MD_RE, '$1')\n}\n\nfunction unescapeAll (str) {\n if (str.indexOf('\\\\') < 0 && str.indexOf('&') < 0) { return str }\n\n return str.replace(UNESCAPE_ALL_RE, function (match, escaped, entity) {\n if (escaped) { return escaped }\n return replaceEntityPattern(match, entity)\n })\n}\n\nconst HTML_ESCAPE_TEST_RE = /[&<>\"]/\nconst HTML_ESCAPE_REPLACE_RE = /[&<>\"]/g\nconst HTML_REPLACEMENTS = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"'\n}\n\nfunction replaceUnsafeChar (ch) {\n return HTML_REPLACEMENTS[ch]\n}\n\nfunction escapeHtml (str) {\n if (HTML_ESCAPE_TEST_RE.test(str)) {\n return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar)\n }\n return str\n}\n\nconst REGEXP_ESCAPE_RE = /[.?*+^$[\\]\\\\(){}|-]/g\n\nfunction escapeRE (str) {\n return str.replace(REGEXP_ESCAPE_RE, '\\\\$&')\n}\n\nfunction isSpace (code) {\n switch (code) {\n case 0x09:\n case 0x20:\n return true\n }\n return false\n}\n\n// Zs (unicode class) || [\\t\\f\\v\\r\\n]\nfunction isWhiteSpace (code) {\n if (code >= 0x2000 && code <= 0x200A) { return true }\n switch (code) {\n case 0x09: // \\t\n case 0x0A: // \\n\n case 0x0B: // \\v\n case 0x0C: // \\f\n case 0x0D: // \\r\n case 0x20:\n case 0xA0:\n case 0x1680:\n case 0x202F:\n case 0x205F:\n case 0x3000:\n return true\n }\n return false\n}\n\n/* eslint-disable max-len */\n\n// Currently without astral characters support.\nfunction isPunctChar (ch) {\n return ucmicro.P.test(ch) || ucmicro.S.test(ch)\n}\n\n// Markdown ASCII punctuation characters.\n//\n// !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n// http://spec.commonmark.org/0.15/#ascii-punctuation-character\n//\n// Don't confuse with unicode punctuation !!! It lacks some chars in ascii range.\n//\nfunction isMdAsciiPunct (ch) {\n switch (ch) {\n case 0x21/* ! */:\n case 0x22/* \" */:\n case 0x23/* # */:\n case 0x24/* $ */:\n case 0x25/* % */:\n case 0x26/* & */:\n case 0x27/* ' */:\n case 0x28/* ( */:\n case 0x29/* ) */:\n case 0x2A/* * */:\n case 0x2B/* + */:\n case 0x2C/* , */:\n case 0x2D/* - */:\n case 0x2E/* . */:\n case 0x2F/* / */:\n case 0x3A/* : */:\n case 0x3B/* ; */:\n case 0x3C/* < */:\n case 0x3D/* = */:\n case 0x3E/* > */:\n case 0x3F/* ? */:\n case 0x40/* @ */:\n case 0x5B/* [ */:\n case 0x5C/* \\ */:\n case 0x5D/* ] */:\n case 0x5E/* ^ */:\n case 0x5F/* _ */:\n case 0x60/* ` */:\n case 0x7B/* { */:\n case 0x7C/* | */:\n case 0x7D/* } */:\n case 0x7E/* ~ */:\n return true\n default:\n return false\n }\n}\n\n// Hepler to unify [reference labels].\n//\nfunction normalizeReference (str) {\n // Trim and collapse whitespace\n //\n str = str.trim().replace(/\\s+/g, ' ')\n\n // In node v10 'ẞ'.toLowerCase() === 'Ṿ', which is presumed to be a bug\n // fixed in v12 (couldn't find any details).\n //\n // So treat this one as a special case\n // (remove this when node v10 is no longer supported).\n //\n if ('ẞ'.toLowerCase() === 'Ṿ') {\n str = str.replace(/ẞ/g, 'ß')\n }\n\n // .toLowerCase().toUpperCase() should get rid of all differences\n // between letter variants.\n //\n // Simple .toLowerCase() doesn't normalize 125 code points correctly,\n // and .toUpperCase doesn't normalize 6 of them (list of exceptions:\n // İ, ϴ, ẞ, Ω, K, Å - those are already uppercased, but have differently\n // uppercased versions).\n //\n // Here's an example showing how it happens. Lets take greek letter omega:\n // uppercase U+0398 (Θ), U+03f4 (ϴ) and lowercase U+03b8 (θ), U+03d1 (ϑ)\n //\n // Unicode entries:\n // 0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;\n // 03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398\n // 03D1;GREEK THETA SYMBOL;Ll;0;L; 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398\n // 03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L; 0398;;;;N;;;;03B8;\n //\n // Case-insensitive comparison should treat all of them as equivalent.\n //\n // But .toLowerCase() doesn't change ϑ (it's already lowercase),\n // and .toUpperCase() doesn't change ϴ (already uppercase).\n //\n // Applying first lower then upper case normalizes any character:\n // '\\u0398\\u03f4\\u03b8\\u03d1'.toLowerCase().toUpperCase() === '\\u0398\\u0398\\u0398\\u0398'\n //\n // Note: this is equivalent to unicode case folding; unicode normalization\n // is a different step that is not required here.\n //\n // Final result should be uppercased, because it's later stored in an object\n // (this avoid a conflict with Object.prototype members,\n // most notably, `__proto__`)\n //\n return str.toLowerCase().toUpperCase()\n}\n\n// Re-export libraries commonly used in both markdown-it and its plugins,\n// so plugins won't have to depend on them explicitly, which reduces their\n// bundled size (e.g. a browser build).\n//\nconst lib = { mdurl, ucmicro }\n\nexport {\n lib,\n assign,\n isString,\n has,\n unescapeMd,\n unescapeAll,\n isValidEntityCode,\n fromCodePoint,\n escapeHtml,\n arrayReplaceAt,\n isSpace,\n isWhiteSpace,\n isMdAsciiPunct,\n isPunctChar,\n escapeRE,\n normalizeReference\n}\n","// Parse link label\n//\n// this function assumes that first character (\"[\") already matches;\n// returns the end of the label\n//\n\nexport default function parseLinkLabel (state, start, disableNested) {\n let level, found, marker, prevPos\n\n const max = state.posMax\n const oldPos = state.pos\n\n state.pos = start + 1\n level = 1\n\n while (state.pos < max) {\n marker = state.src.charCodeAt(state.pos)\n if (marker === 0x5D /* ] */) {\n level--\n if (level === 0) {\n found = true\n break\n }\n }\n\n prevPos = state.pos\n state.md.inline.skipToken(state)\n if (marker === 0x5B /* [ */) {\n if (prevPos === state.pos - 1) {\n // increase level if we find text `[`, which is not a part of any token\n level++\n } else if (disableNested) {\n state.pos = oldPos\n return -1\n }\n }\n }\n\n let labelEnd = -1\n\n if (found) {\n labelEnd = state.pos\n }\n\n // restore old state\n state.pos = oldPos\n\n return labelEnd\n}\n","// Parse link destination\n//\n\nimport { unescapeAll } from '../common/utils.mjs'\n\nexport default function parseLinkDestination (str, start, max) {\n let code\n let pos = start\n\n const result = {\n ok: false,\n pos: 0,\n str: ''\n }\n\n if (str.charCodeAt(pos) === 0x3C /* < */) {\n pos++\n while (pos < max) {\n code = str.charCodeAt(pos)\n if (code === 0x0A /* \\n */) { return result }\n if (code === 0x3C /* < */) { return result }\n if (code === 0x3E /* > */) {\n result.pos = pos + 1\n result.str = unescapeAll(str.slice(start + 1, pos))\n result.ok = true\n return result\n }\n if (code === 0x5C /* \\ */ && pos + 1 < max) {\n pos += 2\n continue\n }\n\n pos++\n }\n\n // no closing '>'\n return result\n }\n\n // this should be ... } else { ... branch\n\n let level = 0\n while (pos < max) {\n code = str.charCodeAt(pos)\n\n if (code === 0x20) { break }\n\n // ascii control characters\n if (code < 0x20 || code === 0x7F) { break }\n\n if (code === 0x5C /* \\ */ && pos + 1 < max) {\n if (str.charCodeAt(pos + 1) === 0x20) { break }\n pos += 2\n continue\n }\n\n if (code === 0x28 /* ( */) {\n level++\n if (level > 32) { return result }\n }\n\n if (code === 0x29 /* ) */) {\n if (level === 0) { break }\n level--\n }\n\n pos++\n }\n\n if (start === pos) { return result }\n if (level !== 0) { return result }\n\n result.str = unescapeAll(str.slice(start, pos))\n result.pos = pos\n result.ok = true\n return result\n}\n","// Parse link title\n//\n\nimport { unescapeAll } from '../common/utils.mjs'\n\n// Parse link title within `str` in [start, max] range,\n// or continue previous parsing if `prev_state` is defined (equal to result of last execution).\n//\nexport default function parseLinkTitle (str, start, max, prev_state) {\n let code\n let pos = start\n\n const state = {\n // if `true`, this is a valid link title\n ok: false,\n // if `true`, this link can be continued on the next line\n can_continue: false,\n // if `ok`, it's the position of the first character after the closing marker\n pos: 0,\n // if `ok`, it's the unescaped title\n str: '',\n // expected closing marker character code\n marker: 0\n }\n\n if (prev_state) {\n // this is a continuation of a previous parseLinkTitle call on the next line,\n // used in reference links only\n state.str = prev_state.str\n state.marker = prev_state.marker\n } else {\n if (pos >= max) { return state }\n\n let marker = str.charCodeAt(pos)\n if (marker !== 0x22 /* \" */ && marker !== 0x27 /* ' */ && marker !== 0x28 /* ( */) { return state }\n\n start++\n pos++\n\n // if opening marker is \"(\", switch it to closing marker \")\"\n if (marker === 0x28) { marker = 0x29 }\n\n state.marker = marker\n }\n\n while (pos < max) {\n code = str.charCodeAt(pos)\n if (code === state.marker) {\n state.pos = pos + 1\n state.str += unescapeAll(str.slice(start, pos))\n state.ok = true\n return state\n } else if (code === 0x28 /* ( */ && state.marker === 0x29 /* ) */) {\n return state\n } else if (code === 0x5C /* \\ */ && pos + 1 < max) {\n pos++\n }\n\n pos++\n }\n\n // no closing marker found, but this link title may continue on the next line (for references)\n state.can_continue = true\n state.str += unescapeAll(str.slice(start, pos))\n return state\n}\n","/**\n * class Renderer\n *\n * Generates HTML from parsed token stream. Each instance has independent\n * copy of rules. Those can be rewritten with ease. Also, you can add new\n * rules if you create plugin and adds new token types.\n **/\n\nimport { assign, unescapeAll, escapeHtml } from './common/utils.mjs'\n\nconst default_rules = {}\n\ndefault_rules.code_inline = function (tokens, idx, options, env, slf) {\n const token = tokens[idx]\n\n return '' +\n escapeHtml(token.content) +\n ''\n}\n\ndefault_rules.code_block = function (tokens, idx, options, env, slf) {\n const token = tokens[idx]\n\n return '' +\n escapeHtml(tokens[idx].content) +\n '\\n'\n}\n\ndefault_rules.fence = function (tokens, idx, options, env, slf) {\n const token = tokens[idx]\n const info = token.info ? unescapeAll(token.info).trim() : ''\n let langName = ''\n let langAttrs = ''\n\n if (info) {\n const arr = info.split(/(\\s+)/g)\n langName = arr[0]\n langAttrs = arr.slice(2).join('')\n }\n\n let highlighted\n if (options.highlight) {\n highlighted = options.highlight(token.content, langName, langAttrs) || escapeHtml(token.content)\n } else {\n highlighted = escapeHtml(token.content)\n }\n\n if (highlighted.indexOf('${highlighted}\\n`\n }\n\n return `
${highlighted}
\\n`\n}\n\ndefault_rules.image = function (tokens, idx, options, env, slf) {\n const token = tokens[idx]\n\n // \"alt\" attr MUST be set, even if empty. Because it's mandatory and\n // should be placed on proper position for tests.\n //\n // Replace content with actual value\n\n token.attrs[token.attrIndex('alt')][1] =\n slf.renderInlineAsText(token.children, options, env)\n\n return slf.renderToken(tokens, idx, options)\n}\n\ndefault_rules.hardbreak = function (tokens, idx, options /*, env */) {\n return options.xhtmlOut ? '
\\n' : '
\\n'\n}\ndefault_rules.softbreak = function (tokens, idx, options /*, env */) {\n return options.breaks ? (options.xhtmlOut ? '
\\n' : '
\\n') : '\\n'\n}\n\ndefault_rules.text = function (tokens, idx /*, options, env */) {\n return escapeHtml(tokens[idx].content)\n}\n\ndefault_rules.html_block = function (tokens, idx /*, options, env */) {\n return tokens[idx].content\n}\ndefault_rules.html_inline = function (tokens, idx /*, options, env */) {\n return tokens[idx].content\n}\n\n/**\n * new Renderer()\n *\n * Creates new [[Renderer]] instance and fill [[Renderer#rules]] with defaults.\n **/\nfunction Renderer () {\n /**\n * Renderer#rules -> Object\n *\n * Contains render rules for tokens. Can be updated and extended.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.renderer.rules.strong_open = function () { return ''; };\n * md.renderer.rules.strong_close = function () { return ''; };\n *\n * var result = md.renderInline(...);\n * ```\n *\n * Each rule is called as independent static function with fixed signature:\n *\n * ```javascript\n * function my_token_render(tokens, idx, options, env, renderer) {\n * // ...\n * return renderedHTML;\n * }\n * ```\n *\n * See [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.mjs)\n * for more details and examples.\n **/\n this.rules = assign({}, default_rules)\n}\n\n/**\n * Renderer.renderAttrs(token) -> String\n *\n * Render token attributes to string.\n **/\nRenderer.prototype.renderAttrs = function renderAttrs (token) {\n let i, l, result\n\n if (!token.attrs) { return '' }\n\n result = ''\n\n for (i = 0, l = token.attrs.length; i < l; i++) {\n result += ' ' + escapeHtml(token.attrs[i][0]) + '=\"' + escapeHtml(token.attrs[i][1]) + '\"'\n }\n\n return result\n}\n\n/**\n * Renderer.renderToken(tokens, idx, options) -> String\n * - tokens (Array): list of tokens\n * - idx (Numbed): token index to render\n * - options (Object): params of parser instance\n *\n * Default token renderer. Can be overriden by custom function\n * in [[Renderer#rules]].\n **/\nRenderer.prototype.renderToken = function renderToken (tokens, idx, options) {\n const token = tokens[idx]\n let result = ''\n\n // Tight list paragraphs\n if (token.hidden) {\n return ''\n }\n\n // Insert a newline between hidden paragraph and subsequent opening\n // block-level tag.\n //\n // For example, here we should insert a newline before blockquote:\n // - a\n // >\n //\n if (token.block && token.nesting !== -1 && idx && tokens[idx - 1].hidden) {\n result += '\\n'\n }\n\n // Add token name, e.g. ``.\n //\n needLf = false\n }\n }\n }\n }\n\n result += needLf ? '>\\n' : '>'\n\n return result\n}\n\n/**\n * Renderer.renderInline(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to render\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * The same as [[Renderer.render]], but for single token of `inline` type.\n **/\nRenderer.prototype.renderInline = function (tokens, options, env) {\n let result = ''\n const rules = this.rules\n\n for (let i = 0, len = tokens.length; i < len; i++) {\n const type = tokens[i].type\n\n if (typeof rules[type] !== 'undefined') {\n result += rules[type](tokens, i, options, env, this)\n } else {\n result += this.renderToken(tokens, i, options)\n }\n }\n\n return result\n}\n\n/** internal\n * Renderer.renderInlineAsText(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to render\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * Special kludge for image `alt` attributes to conform CommonMark spec.\n * Don't try to use it! Spec requires to show `alt` content with stripped markup,\n * instead of simple escaping.\n **/\nRenderer.prototype.renderInlineAsText = function (tokens, options, env) {\n let result = ''\n\n for (let i = 0, len = tokens.length; i < len; i++) {\n switch (tokens[i].type) {\n case 'text':\n result += tokens[i].content\n break\n case 'image':\n result += this.renderInlineAsText(tokens[i].children, options, env)\n break\n case 'html_inline':\n case 'html_block':\n result += tokens[i].content\n break\n case 'softbreak':\n case 'hardbreak':\n result += '\\n'\n break\n default:\n // all other tokens are skipped\n }\n }\n\n return result\n}\n\n/**\n * Renderer.render(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to render\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * Takes token stream and generates HTML. Probably, you will never need to call\n * this method directly.\n **/\nRenderer.prototype.render = function (tokens, options, env) {\n let result = ''\n const rules = this.rules\n\n for (let i = 0, len = tokens.length; i < len; i++) {\n const type = tokens[i].type\n\n if (type === 'inline') {\n result += this.renderInline(tokens[i].children, options, env)\n } else if (typeof rules[type] !== 'undefined') {\n result += rules[type](tokens, i, options, env, this)\n } else {\n result += this.renderToken(tokens, i, options, env)\n }\n }\n\n return result\n}\n\nexport default Renderer\n","/**\n * class Ruler\n *\n * Helper class, used by [[MarkdownIt#core]], [[MarkdownIt#block]] and\n * [[MarkdownIt#inline]] to manage sequences of functions (rules):\n *\n * - keep rules in defined order\n * - assign the name to each rule\n * - enable/disable rules\n * - add/replace rules\n * - allow assign rules to additional named chains (in the same)\n * - cacheing lists of active rules\n *\n * You will not need use this class directly until write plugins. For simple\n * rules control use [[MarkdownIt.disable]], [[MarkdownIt.enable]] and\n * [[MarkdownIt.use]].\n **/\n\n/**\n * new Ruler()\n **/\nfunction Ruler () {\n // List of added rules. Each element is:\n //\n // {\n // name: XXX,\n // enabled: Boolean,\n // fn: Function(),\n // alt: [ name2, name3 ]\n // }\n //\n this.__rules__ = []\n\n // Cached rule chains.\n //\n // First level - chain name, '' for default.\n // Second level - diginal anchor for fast filtering by charcodes.\n //\n this.__cache__ = null\n}\n\n// Helper methods, should not be used directly\n\n// Find rule index by name\n//\nRuler.prototype.__find__ = function (name) {\n for (let i = 0; i < this.__rules__.length; i++) {\n if (this.__rules__[i].name === name) {\n return i\n }\n }\n return -1\n}\n\n// Build rules lookup cache\n//\nRuler.prototype.__compile__ = function () {\n const self = this\n const chains = ['']\n\n // collect unique names\n self.__rules__.forEach(function (rule) {\n if (!rule.enabled) { return }\n\n rule.alt.forEach(function (altName) {\n if (chains.indexOf(altName) < 0) {\n chains.push(altName)\n }\n })\n })\n\n self.__cache__ = {}\n\n chains.forEach(function (chain) {\n self.__cache__[chain] = []\n self.__rules__.forEach(function (rule) {\n if (!rule.enabled) { return }\n\n if (chain && rule.alt.indexOf(chain) < 0) { return }\n\n self.__cache__[chain].push(rule.fn)\n })\n })\n}\n\n/**\n * Ruler.at(name, fn [, options])\n * - name (String): rule name to replace.\n * - fn (Function): new rule function.\n * - options (Object): new rule options (not mandatory).\n *\n * Replace rule by name with new function & options. Throws error if name not\n * found.\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * Replace existing typographer replacement rule with new one:\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.core.ruler.at('replacements', function replace(state) {\n * //...\n * });\n * ```\n **/\nRuler.prototype.at = function (name, fn, options) {\n const index = this.__find__(name)\n const opt = options || {}\n\n if (index === -1) { throw new Error('Parser rule not found: ' + name) }\n\n this.__rules__[index].fn = fn\n this.__rules__[index].alt = opt.alt || []\n this.__cache__ = null\n}\n\n/**\n * Ruler.before(beforeName, ruleName, fn [, options])\n * - beforeName (String): new rule will be added before this one.\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Add new rule to chain before one with given name. See also\n * [[Ruler.after]], [[Ruler.push]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.block.ruler.before('paragraph', 'my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\nRuler.prototype.before = function (beforeName, ruleName, fn, options) {\n const index = this.__find__(beforeName)\n const opt = options || {}\n\n if (index === -1) { throw new Error('Parser rule not found: ' + beforeName) }\n\n this.__rules__.splice(index, 0, {\n name: ruleName,\n enabled: true,\n fn,\n alt: opt.alt || []\n })\n\n this.__cache__ = null\n}\n\n/**\n * Ruler.after(afterName, ruleName, fn [, options])\n * - afterName (String): new rule will be added after this one.\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Add new rule to chain after one with given name. See also\n * [[Ruler.before]], [[Ruler.push]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.inline.ruler.after('text', 'my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\nRuler.prototype.after = function (afterName, ruleName, fn, options) {\n const index = this.__find__(afterName)\n const opt = options || {}\n\n if (index === -1) { throw new Error('Parser rule not found: ' + afterName) }\n\n this.__rules__.splice(index + 1, 0, {\n name: ruleName,\n enabled: true,\n fn,\n alt: opt.alt || []\n })\n\n this.__cache__ = null\n}\n\n/**\n * Ruler.push(ruleName, fn [, options])\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Push new rule to the end of chain. See also\n * [[Ruler.before]], [[Ruler.after]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.core.ruler.push('my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\nRuler.prototype.push = function (ruleName, fn, options) {\n const opt = options || {}\n\n this.__rules__.push({\n name: ruleName,\n enabled: true,\n fn,\n alt: opt.alt || []\n })\n\n this.__cache__ = null\n}\n\n/**\n * Ruler.enable(list [, ignoreInvalid]) -> Array\n * - list (String|Array): list of rule names to enable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable rules with given names. If any rule name not found - throw Error.\n * Errors can be disabled by second param.\n *\n * Returns list of found rule names (if no exception happened).\n *\n * See also [[Ruler.disable]], [[Ruler.enableOnly]].\n **/\nRuler.prototype.enable = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) { list = [list] }\n\n const result = []\n\n // Search by name and enable\n list.forEach(function (name) {\n const idx = this.__find__(name)\n\n if (idx < 0) {\n if (ignoreInvalid) { return }\n throw new Error('Rules manager: invalid rule name ' + name)\n }\n this.__rules__[idx].enabled = true\n result.push(name)\n }, this)\n\n this.__cache__ = null\n return result\n}\n\n/**\n * Ruler.enableOnly(list [, ignoreInvalid])\n * - list (String|Array): list of rule names to enable (whitelist).\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable rules with given names, and disable everything else. If any rule name\n * not found - throw Error. Errors can be disabled by second param.\n *\n * See also [[Ruler.disable]], [[Ruler.enable]].\n **/\nRuler.prototype.enableOnly = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) { list = [list] }\n\n this.__rules__.forEach(function (rule) { rule.enabled = false })\n\n this.enable(list, ignoreInvalid)\n}\n\n/**\n * Ruler.disable(list [, ignoreInvalid]) -> Array\n * - list (String|Array): list of rule names to disable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Disable rules with given names. If any rule name not found - throw Error.\n * Errors can be disabled by second param.\n *\n * Returns list of found rule names (if no exception happened).\n *\n * See also [[Ruler.enable]], [[Ruler.enableOnly]].\n **/\nRuler.prototype.disable = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) { list = [list] }\n\n const result = []\n\n // Search by name and disable\n list.forEach(function (name) {\n const idx = this.__find__(name)\n\n if (idx < 0) {\n if (ignoreInvalid) { return }\n throw new Error('Rules manager: invalid rule name ' + name)\n }\n this.__rules__[idx].enabled = false\n result.push(name)\n }, this)\n\n this.__cache__ = null\n return result\n}\n\n/**\n * Ruler.getRules(chainName) -> Array\n *\n * Return array of active functions (rules) for given chain name. It analyzes\n * rules configuration, compiles caches if not exists and returns result.\n *\n * Default chain name is `''` (empty string). It can't be skipped. That's\n * done intentionally, to keep signature monomorphic for high speed.\n **/\nRuler.prototype.getRules = function (chainName) {\n if (this.__cache__ === null) {\n this.__compile__()\n }\n\n // Chain can be empty, if rules disabled. But we still have to return Array.\n return this.__cache__[chainName] || []\n}\n\nexport default Ruler\n","// Token class\n\n/**\n * class Token\n **/\n\n/**\n * new Token(type, tag, nesting)\n *\n * Create new token and fill passed properties.\n **/\nfunction Token (type, tag, nesting) {\n /**\n * Token#type -> String\n *\n * Type of the token (string, e.g. \"paragraph_open\")\n **/\n this.type = type\n\n /**\n * Token#tag -> String\n *\n * html tag name, e.g. \"p\"\n **/\n this.tag = tag\n\n /**\n * Token#attrs -> Array\n *\n * Html attributes. Format: `[ [ name1, value1 ], [ name2, value2 ] ]`\n **/\n this.attrs = null\n\n /**\n * Token#map -> Array\n *\n * Source map info. Format: `[ line_begin, line_end ]`\n **/\n this.map = null\n\n /**\n * Token#nesting -> Number\n *\n * Level change (number in {-1, 0, 1} set), where:\n *\n * - `1` means the tag is opening\n * - `0` means the tag is self-closing\n * - `-1` means the tag is closing\n **/\n this.nesting = nesting\n\n /**\n * Token#level -> Number\n *\n * nesting level, the same as `state.level`\n **/\n this.level = 0\n\n /**\n * Token#children -> Array\n *\n * An array of child nodes (inline and img tokens)\n **/\n this.children = null\n\n /**\n * Token#content -> String\n *\n * In a case of self-closing tag (code, html, fence, etc.),\n * it has contents of this tag.\n **/\n this.content = ''\n\n /**\n * Token#markup -> String\n *\n * '*' or '_' for emphasis, fence string for fence, etc.\n **/\n this.markup = ''\n\n /**\n * Token#info -> String\n *\n * Additional information:\n *\n * - Info string for \"fence\" tokens\n * - The value \"auto\" for autolink \"link_open\" and \"link_close\" tokens\n * - The string value of the item marker for ordered-list \"list_item_open\" tokens\n **/\n this.info = ''\n\n /**\n * Token#meta -> Object\n *\n * A place for plugins to store an arbitrary data\n **/\n this.meta = null\n\n /**\n * Token#block -> Boolean\n *\n * True for block-level tokens, false for inline tokens.\n * Used in renderer to calculate line breaks\n **/\n this.block = false\n\n /**\n * Token#hidden -> Boolean\n *\n * If it's true, ignore this element when rendering. Used for tight lists\n * to hide paragraphs.\n **/\n this.hidden = false\n}\n\n/**\n * Token.attrIndex(name) -> Number\n *\n * Search attribute index by name.\n **/\nToken.prototype.attrIndex = function attrIndex (name) {\n if (!this.attrs) { return -1 }\n\n const attrs = this.attrs\n\n for (let i = 0, len = attrs.length; i < len; i++) {\n if (attrs[i][0] === name) { return i }\n }\n return -1\n}\n\n/**\n * Token.attrPush(attrData)\n *\n * Add `[ name, value ]` attribute to list. Init attrs if necessary\n **/\nToken.prototype.attrPush = function attrPush (attrData) {\n if (this.attrs) {\n this.attrs.push(attrData)\n } else {\n this.attrs = [attrData]\n }\n}\n\n/**\n * Token.attrSet(name, value)\n *\n * Set `name` attribute to `value`. Override old value if exists.\n **/\nToken.prototype.attrSet = function attrSet (name, value) {\n const idx = this.attrIndex(name)\n const attrData = [name, value]\n\n if (idx < 0) {\n this.attrPush(attrData)\n } else {\n this.attrs[idx] = attrData\n }\n}\n\n/**\n * Token.attrGet(name)\n *\n * Get the value of attribute `name`, or null if it does not exist.\n **/\nToken.prototype.attrGet = function attrGet (name) {\n const idx = this.attrIndex(name)\n let value = null\n if (idx >= 0) {\n value = this.attrs[idx][1]\n }\n return value\n}\n\n/**\n * Token.attrJoin(name, value)\n *\n * Join value to existing attribute via space. Or create new attribute if not\n * exists. Useful to operate with token classes.\n **/\nToken.prototype.attrJoin = function attrJoin (name, value) {\n const idx = this.attrIndex(name)\n\n if (idx < 0) {\n this.attrPush([name, value])\n } else {\n this.attrs[idx][1] = this.attrs[idx][1] + ' ' + value\n }\n}\n\nexport default Token\n","// Core state object\n//\n\nimport Token from '../token.mjs'\n\nfunction StateCore (src, md, env) {\n this.src = src\n this.env = env\n this.tokens = []\n this.inlineMode = false\n this.md = md // link to parser instance\n}\n\n// re-export Token class to use in core rules\nStateCore.prototype.Token = Token\n\nexport default StateCore\n","// Normalize input string\n\n// https://spec.commonmark.org/0.29/#line-ending\nconst NEWLINES_RE = /\\r\\n?|\\n/g\nconst NULL_RE = /\\0/g\n\nexport default function normalize (state) {\n let str\n\n // Normalize newlines\n str = state.src.replace(NEWLINES_RE, '\\n')\n\n // Replace NULL characters\n str = str.replace(NULL_RE, '\\uFFFD')\n\n state.src = str\n}\n","// Replace link-like texts with link nodes.\n//\n// Currently restricted by `md.validateLink()` to http/https/ftp\n//\n\nimport { arrayReplaceAt } from '../common/utils.mjs'\n\nfunction isLinkOpen (str) {\n return /^\\s]/i.test(str)\n}\nfunction isLinkClose (str) {\n return /^<\\/a\\s*>/i.test(str)\n}\n\nexport default function linkify (state) {\n const blockTokens = state.tokens\n\n if (!state.md.options.linkify) { return }\n\n for (let j = 0, l = blockTokens.length; j < l; j++) {\n if (blockTokens[j].type !== 'inline' ||\n !state.md.linkify.pretest(blockTokens[j].content)) {\n continue\n }\n\n let tokens = blockTokens[j].children\n\n let htmlLinkLevel = 0\n\n // We scan from the end, to keep position when new tags added.\n // Use reversed logic in links start/end match\n for (let i = tokens.length - 1; i >= 0; i--) {\n const currentToken = tokens[i]\n\n // Skip content of markdown links\n if (currentToken.type === 'link_close') {\n i--\n while (tokens[i].level !== currentToken.level && tokens[i].type !== 'link_open') {\n i--\n }\n continue\n }\n\n // Skip content of html tag links\n if (currentToken.type === 'html_inline') {\n if (isLinkOpen(currentToken.content) && htmlLinkLevel > 0) {\n htmlLinkLevel--\n }\n if (isLinkClose(currentToken.content)) {\n htmlLinkLevel++\n }\n }\n if (htmlLinkLevel > 0) { continue }\n\n if (currentToken.type === 'text' && state.md.linkify.test(currentToken.content)) {\n const text = currentToken.content\n let links = state.md.linkify.match(text)\n\n // Now split string to nodes\n const nodes = []\n let level = currentToken.level\n let lastPos = 0\n\n // forbid escape sequence at the start of the string,\n // this avoids http\\://example.com/ from being linkified as\n // http://example.com/\n if (links.length > 0 &&\n links[0].index === 0 &&\n i > 0 &&\n tokens[i - 1].type === 'text_special') {\n links = links.slice(1)\n }\n\n for (let ln = 0; ln < links.length; ln++) {\n const url = links[ln].url\n const fullUrl = state.md.normalizeLink(url)\n if (!state.md.validateLink(fullUrl)) { continue }\n\n let urlText = links[ln].text\n\n // Linkifier might send raw hostnames like \"example.com\", where url\n // starts with domain name. So we prepend http:// in those cases,\n // and remove it afterwards.\n //\n if (!links[ln].schema) {\n urlText = state.md.normalizeLinkText('http://' + urlText).replace(/^http:\\/\\//, '')\n } else if (links[ln].schema === 'mailto:' && !/^mailto:/i.test(urlText)) {\n urlText = state.md.normalizeLinkText('mailto:' + urlText).replace(/^mailto:/, '')\n } else {\n urlText = state.md.normalizeLinkText(urlText)\n }\n\n const pos = links[ln].index\n\n if (pos > lastPos) {\n const token = new state.Token('text', '', 0)\n token.content = text.slice(lastPos, pos)\n token.level = level\n nodes.push(token)\n }\n\n const token_o = new state.Token('link_open', 'a', 1)\n token_o.attrs = [['href', fullUrl]]\n token_o.level = level++\n token_o.markup = 'linkify'\n token_o.info = 'auto'\n nodes.push(token_o)\n\n const token_t = new state.Token('text', '', 0)\n token_t.content = urlText\n token_t.level = level\n nodes.push(token_t)\n\n const token_c = new state.Token('link_close', 'a', -1)\n token_c.level = --level\n token_c.markup = 'linkify'\n token_c.info = 'auto'\n nodes.push(token_c)\n\n lastPos = links[ln].lastIndex\n }\n if (lastPos < text.length) {\n const token = new state.Token('text', '', 0)\n token.content = text.slice(lastPos)\n token.level = level\n nodes.push(token)\n }\n\n // replace current node\n blockTokens[j].children = tokens = arrayReplaceAt(tokens, i, nodes)\n }\n }\n }\n}\n","// Simple typographic replacements\n//\n// (c) (C) → ©\n// (tm) (TM) → ™\n// (r) (R) → ®\n// +- → ±\n// ... → … (also ?.... → ?.., !.... → !..)\n// ???????? → ???, !!!!! → !!!, `,,` → `,`\n// -- → –, --- → —\n//\n\n// TODO:\n// - fractionals 1/2, 1/4, 3/4 -> ½, ¼, ¾\n// - multiplications 2 x 4 -> 2 × 4\n\nconst RARE_RE = /\\+-|\\.\\.|\\?\\?\\?\\?|!!!!|,,|--/\n\n// Workaround for phantomjs - need regex without /g flag,\n// or root check will fail every second time\nconst SCOPED_ABBR_TEST_RE = /\\((c|tm|r)\\)/i\n\nconst SCOPED_ABBR_RE = /\\((c|tm|r)\\)/ig\nconst SCOPED_ABBR = {\n c: '©',\n r: '®',\n tm: '™'\n}\n\nfunction replaceFn (match, name) {\n return SCOPED_ABBR[name.toLowerCase()]\n}\n\nfunction replace_scoped (inlineTokens) {\n let inside_autolink = 0\n\n for (let i = inlineTokens.length - 1; i >= 0; i--) {\n const token = inlineTokens[i]\n\n if (token.type === 'text' && !inside_autolink) {\n token.content = token.content.replace(SCOPED_ABBR_RE, replaceFn)\n }\n\n if (token.type === 'link_open' && token.info === 'auto') {\n inside_autolink--\n }\n\n if (token.type === 'link_close' && token.info === 'auto') {\n inside_autolink++\n }\n }\n}\n\nfunction replace_rare (inlineTokens) {\n let inside_autolink = 0\n\n for (let i = inlineTokens.length - 1; i >= 0; i--) {\n const token = inlineTokens[i]\n\n if (token.type === 'text' && !inside_autolink) {\n if (RARE_RE.test(token.content)) {\n token.content = token.content\n .replace(/\\+-/g, '±')\n // .., ..., ....... -> …\n // but ?..... & !..... -> ?.. & !..\n .replace(/\\.{2,}/g, '…').replace(/([?!])…/g, '$1..')\n .replace(/([?!]){4,}/g, '$1$1$1').replace(/,{2,}/g, ',')\n // em-dash\n .replace(/(^|[^-])---(?=[^-]|$)/mg, '$1\\u2014')\n // en-dash\n .replace(/(^|\\s)--(?=\\s|$)/mg, '$1\\u2013')\n .replace(/(^|[^-\\s])--(?=[^-\\s]|$)/mg, '$1\\u2013')\n }\n }\n\n if (token.type === 'link_open' && token.info === 'auto') {\n inside_autolink--\n }\n\n if (token.type === 'link_close' && token.info === 'auto') {\n inside_autolink++\n }\n }\n}\n\nexport default function replace (state) {\n let blkIdx\n\n if (!state.md.options.typographer) { return }\n\n for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n if (state.tokens[blkIdx].type !== 'inline') { continue }\n\n if (SCOPED_ABBR_TEST_RE.test(state.tokens[blkIdx].content)) {\n replace_scoped(state.tokens[blkIdx].children)\n }\n\n if (RARE_RE.test(state.tokens[blkIdx].content)) {\n replace_rare(state.tokens[blkIdx].children)\n }\n }\n}\n","// Convert straight quotation marks to typographic ones\n//\n\nimport { isWhiteSpace, isPunctChar, isMdAsciiPunct } from '../common/utils.mjs'\n\nconst QUOTE_TEST_RE = /['\"]/\nconst QUOTE_RE = /['\"]/g\nconst APOSTROPHE = '\\u2019' /* ’ */\n\nfunction replaceAt (str, index, ch) {\n return str.slice(0, index) + ch + str.slice(index + 1)\n}\n\nfunction process_inlines (tokens, state) {\n let j\n\n const stack = []\n\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i]\n\n const thisLevel = tokens[i].level\n\n for (j = stack.length - 1; j >= 0; j--) {\n if (stack[j].level <= thisLevel) { break }\n }\n stack.length = j + 1\n\n if (token.type !== 'text') { continue }\n\n let text = token.content\n let pos = 0\n let max = text.length\n\n /* eslint no-labels:0,block-scoped-var:0 */\n OUTER:\n while (pos < max) {\n QUOTE_RE.lastIndex = pos\n const t = QUOTE_RE.exec(text)\n if (!t) { break }\n\n let canOpen = true\n let canClose = true\n pos = t.index + 1\n const isSingle = (t[0] === \"'\")\n\n // Find previous character,\n // default to space if it's the beginning of the line\n //\n let lastChar = 0x20\n\n if (t.index - 1 >= 0) {\n lastChar = text.charCodeAt(t.index - 1)\n } else {\n for (j = i - 1; j >= 0; j--) {\n if (tokens[j].type === 'softbreak' || tokens[j].type === 'hardbreak') break // lastChar defaults to 0x20\n if (!tokens[j].content) continue // should skip all tokens except 'text', 'html_inline' or 'code_inline'\n\n lastChar = tokens[j].content.charCodeAt(tokens[j].content.length - 1)\n break\n }\n }\n\n // Find next character,\n // default to space if it's the end of the line\n //\n let nextChar = 0x20\n\n if (pos < max) {\n nextChar = text.charCodeAt(pos)\n } else {\n for (j = i + 1; j < tokens.length; j++) {\n if (tokens[j].type === 'softbreak' || tokens[j].type === 'hardbreak') break // nextChar defaults to 0x20\n if (!tokens[j].content) continue // should skip all tokens except 'text', 'html_inline' or 'code_inline'\n\n nextChar = tokens[j].content.charCodeAt(0)\n break\n }\n }\n\n const isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar))\n const isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar))\n\n const isLastWhiteSpace = isWhiteSpace(lastChar)\n const isNextWhiteSpace = isWhiteSpace(nextChar)\n\n if (isNextWhiteSpace) {\n canOpen = false\n } else if (isNextPunctChar) {\n if (!(isLastWhiteSpace || isLastPunctChar)) {\n canOpen = false\n }\n }\n\n if (isLastWhiteSpace) {\n canClose = false\n } else if (isLastPunctChar) {\n if (!(isNextWhiteSpace || isNextPunctChar)) {\n canClose = false\n }\n }\n\n if (nextChar === 0x22 /* \" */ && t[0] === '\"') {\n if (lastChar >= 0x30 /* 0 */ && lastChar <= 0x39 /* 9 */) {\n // special case: 1\"\" - count first quote as an inch\n canClose = canOpen = false\n }\n }\n\n if (canOpen && canClose) {\n // Replace quotes in the middle of punctuation sequence, but not\n // in the middle of the words, i.e.:\n //\n // 1. foo \" bar \" baz - not replaced\n // 2. foo-\"-bar-\"-baz - replaced\n // 3. foo\"bar\"baz - not replaced\n //\n canOpen = isLastPunctChar\n canClose = isNextPunctChar\n }\n\n if (!canOpen && !canClose) {\n // middle of word\n if (isSingle) {\n token.content = replaceAt(token.content, t.index, APOSTROPHE)\n }\n continue\n }\n\n if (canClose) {\n // this could be a closing quote, rewind the stack to get a match\n for (j = stack.length - 1; j >= 0; j--) {\n let item = stack[j]\n if (stack[j].level < thisLevel) { break }\n if (item.single === isSingle && stack[j].level === thisLevel) {\n item = stack[j]\n\n let openQuote\n let closeQuote\n if (isSingle) {\n openQuote = state.md.options.quotes[2]\n closeQuote = state.md.options.quotes[3]\n } else {\n openQuote = state.md.options.quotes[0]\n closeQuote = state.md.options.quotes[1]\n }\n\n // replace token.content *before* tokens[item.token].content,\n // because, if they are pointing at the same token, replaceAt\n // could mess up indices when quote length != 1\n token.content = replaceAt(token.content, t.index, closeQuote)\n tokens[item.token].content = replaceAt(\n tokens[item.token].content, item.pos, openQuote)\n\n pos += closeQuote.length - 1\n if (item.token === i) { pos += openQuote.length - 1 }\n\n text = token.content\n max = text.length\n\n stack.length = j\n continue OUTER\n }\n }\n }\n\n if (canOpen) {\n stack.push({\n token: i,\n pos: t.index,\n single: isSingle,\n level: thisLevel\n })\n } else if (canClose && isSingle) {\n token.content = replaceAt(token.content, t.index, APOSTROPHE)\n }\n }\n }\n}\n\nexport default function smartquotes (state) {\n /* eslint max-depth:0 */\n if (!state.md.options.typographer) { return }\n\n for (let blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n if (state.tokens[blkIdx].type !== 'inline' ||\n !QUOTE_TEST_RE.test(state.tokens[blkIdx].content)) {\n continue\n }\n\n process_inlines(state.tokens[blkIdx].children, state)\n }\n}\n","/** internal\n * class Core\n *\n * Top-level rules executor. Glues block/inline parsers and does intermediate\n * transformations.\n **/\n\nimport Ruler from './ruler.mjs'\nimport StateCore from './rules_core/state_core.mjs'\n\nimport r_normalize from './rules_core/normalize.mjs'\nimport r_block from './rules_core/block.mjs'\nimport r_inline from './rules_core/inline.mjs'\nimport r_linkify from './rules_core/linkify.mjs'\nimport r_replacements from './rules_core/replacements.mjs'\nimport r_smartquotes from './rules_core/smartquotes.mjs'\nimport r_text_join from './rules_core/text_join.mjs'\n\nconst _rules = [\n ['normalize', r_normalize],\n ['block', r_block],\n ['inline', r_inline],\n ['linkify', r_linkify],\n ['replacements', r_replacements],\n ['smartquotes', r_smartquotes],\n // `text_join` finds `text_special` tokens (for escape sequences)\n // and joins them with the rest of the text\n ['text_join', r_text_join]\n]\n\n/**\n * new Core()\n **/\nfunction Core () {\n /**\n * Core#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of core rules.\n **/\n this.ruler = new Ruler()\n\n for (let i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1])\n }\n}\n\n/**\n * Core.process(state)\n *\n * Executes core chain rules.\n **/\nCore.prototype.process = function (state) {\n const rules = this.ruler.getRules('')\n\n for (let i = 0, l = rules.length; i < l; i++) {\n rules[i](state)\n }\n}\n\nCore.prototype.State = StateCore\n\nexport default Core\n","export default function block (state) {\n let token\n\n if (state.inlineMode) {\n token = new state.Token('inline', '', 0)\n token.content = state.src\n token.map = [0, 1]\n token.children = []\n state.tokens.push(token)\n } else {\n state.md.block.parse(state.src, state.md, state.env, state.tokens)\n }\n}\n","export default function inline (state) {\n const tokens = state.tokens\n\n // Parse inlines\n for (let i = 0, l = tokens.length; i < l; i++) {\n const tok = tokens[i]\n if (tok.type === 'inline') {\n state.md.inline.parse(tok.content, state.md, state.env, tok.children)\n }\n }\n}\n","// Join raw text tokens with the rest of the text\n//\n// This is set as a separate rule to provide an opportunity for plugins\n// to run text replacements after text join, but before escape join.\n//\n// For example, `\\:)` shouldn't be replaced with an emoji.\n//\n\nexport default function text_join (state) {\n let curr, last\n const blockTokens = state.tokens\n const l = blockTokens.length\n\n for (let j = 0; j < l; j++) {\n if (blockTokens[j].type !== 'inline') continue\n\n const tokens = blockTokens[j].children\n const max = tokens.length\n\n for (curr = 0; curr < max; curr++) {\n if (tokens[curr].type === 'text_special') {\n tokens[curr].type = 'text'\n }\n }\n\n for (curr = last = 0; curr < max; curr++) {\n if (tokens[curr].type === 'text' &&\n curr + 1 < max &&\n tokens[curr + 1].type === 'text') {\n // collapse two adjacent text nodes\n tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content\n } else {\n if (curr !== last) { tokens[last] = tokens[curr] }\n\n last++\n }\n }\n\n if (curr !== last) {\n tokens.length = last\n }\n }\n}\n","// Parser state class\n\nimport Token from '../token.mjs'\nimport { isSpace } from '../common/utils.mjs'\n\nfunction StateBlock (src, md, env, tokens) {\n this.src = src\n\n // link to parser instance\n this.md = md\n\n this.env = env\n\n //\n // Internal state vartiables\n //\n\n this.tokens = tokens\n\n this.bMarks = [] // line begin offsets for fast jumps\n this.eMarks = [] // line end offsets for fast jumps\n this.tShift = [] // offsets of the first non-space characters (tabs not expanded)\n this.sCount = [] // indents for each line (tabs expanded)\n\n // An amount of virtual spaces (tabs expanded) between beginning\n // of each line (bMarks) and real beginning of that line.\n //\n // It exists only as a hack because blockquotes override bMarks\n // losing information in the process.\n //\n // It's used only when expanding tabs, you can think about it as\n // an initial tab length, e.g. bsCount=21 applied to string `\\t123`\n // means first tab should be expanded to 4-21%4 === 3 spaces.\n //\n this.bsCount = []\n\n // block parser variables\n\n // required block content indent (for example, if we are\n // inside a list, it would be positioned after list marker)\n this.blkIndent = 0\n this.line = 0 // line index in src\n this.lineMax = 0 // lines count\n this.tight = false // loose/tight mode for lists\n this.ddIndent = -1 // indent of the current dd block (-1 if there isn't any)\n this.listIndent = -1 // indent of the current list block (-1 if there isn't any)\n\n // can be 'blockquote', 'list', 'root', 'paragraph' or 'reference'\n // used in lists to determine if they interrupt a paragraph\n this.parentType = 'root'\n\n this.level = 0\n\n // Create caches\n // Generate markers.\n const s = this.src\n\n for (let start = 0, pos = 0, indent = 0, offset = 0, len = s.length, indent_found = false; pos < len; pos++) {\n const ch = s.charCodeAt(pos)\n\n if (!indent_found) {\n if (isSpace(ch)) {\n indent++\n\n if (ch === 0x09) {\n offset += 4 - offset % 4\n } else {\n offset++\n }\n continue\n } else {\n indent_found = true\n }\n }\n\n if (ch === 0x0A || pos === len - 1) {\n if (ch !== 0x0A) { pos++ }\n this.bMarks.push(start)\n this.eMarks.push(pos)\n this.tShift.push(indent)\n this.sCount.push(offset)\n this.bsCount.push(0)\n\n indent_found = false\n indent = 0\n offset = 0\n start = pos + 1\n }\n }\n\n // Push fake entry to simplify cache bounds checks\n this.bMarks.push(s.length)\n this.eMarks.push(s.length)\n this.tShift.push(0)\n this.sCount.push(0)\n this.bsCount.push(0)\n\n this.lineMax = this.bMarks.length - 1 // don't count last fake line\n}\n\n// Push new token to \"stream\".\n//\nStateBlock.prototype.push = function (type, tag, nesting) {\n const token = new Token(type, tag, nesting)\n token.block = true\n\n if (nesting < 0) this.level-- // closing tag\n token.level = this.level\n if (nesting > 0) this.level++ // opening tag\n\n this.tokens.push(token)\n return token\n}\n\nStateBlock.prototype.isEmpty = function isEmpty (line) {\n return this.bMarks[line] + this.tShift[line] >= this.eMarks[line]\n}\n\nStateBlock.prototype.skipEmptyLines = function skipEmptyLines (from) {\n for (let max = this.lineMax; from < max; from++) {\n if (this.bMarks[from] + this.tShift[from] < this.eMarks[from]) {\n break\n }\n }\n return from\n}\n\n// Skip spaces from given position.\nStateBlock.prototype.skipSpaces = function skipSpaces (pos) {\n for (let max = this.src.length; pos < max; pos++) {\n const ch = this.src.charCodeAt(pos)\n if (!isSpace(ch)) { break }\n }\n return pos\n}\n\n// Skip spaces from given position in reverse.\nStateBlock.prototype.skipSpacesBack = function skipSpacesBack (pos, min) {\n if (pos <= min) { return pos }\n\n while (pos > min) {\n if (!isSpace(this.src.charCodeAt(--pos))) { return pos + 1 }\n }\n return pos\n}\n\n// Skip char codes from given position\nStateBlock.prototype.skipChars = function skipChars (pos, code) {\n for (let max = this.src.length; pos < max; pos++) {\n if (this.src.charCodeAt(pos) !== code) { break }\n }\n return pos\n}\n\n// Skip char codes reverse from given position - 1\nStateBlock.prototype.skipCharsBack = function skipCharsBack (pos, code, min) {\n if (pos <= min) { return pos }\n\n while (pos > min) {\n if (code !== this.src.charCodeAt(--pos)) { return pos + 1 }\n }\n return pos\n}\n\n// cut lines range from source.\nStateBlock.prototype.getLines = function getLines (begin, end, indent, keepLastLF) {\n if (begin >= end) {\n return ''\n }\n\n const queue = new Array(end - begin)\n\n for (let i = 0, line = begin; line < end; line++, i++) {\n let lineIndent = 0\n const lineStart = this.bMarks[line]\n let first = lineStart\n let last\n\n if (line + 1 < end || keepLastLF) {\n // No need for bounds check because we have fake entry on tail.\n last = this.eMarks[line] + 1\n } else {\n last = this.eMarks[line]\n }\n\n while (first < last && lineIndent < indent) {\n const ch = this.src.charCodeAt(first)\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n lineIndent += 4 - (lineIndent + this.bsCount[line]) % 4\n } else {\n lineIndent++\n }\n } else if (first - lineStart < this.tShift[line]) {\n // patched tShift masked characters to look like spaces (blockquotes, list markers)\n lineIndent++\n } else {\n break\n }\n\n first++\n }\n\n if (lineIndent > indent) {\n // partially expanding tabs in code blocks, e.g '\\t\\tfoobar'\n // with indent=2 becomes ' \\tfoobar'\n queue[i] = new Array(lineIndent - indent + 1).join(' ') + this.src.slice(first, last)\n } else {\n queue[i] = this.src.slice(first, last)\n }\n }\n\n return queue.join('')\n}\n\n// re-export Token class to use in block rules\nStateBlock.prototype.Token = Token\n\nexport default StateBlock\n","// GFM table, https://github.github.com/gfm/#tables-extension-\n\nimport { isSpace } from '../common/utils.mjs'\n\n// Limit the amount of empty autocompleted cells in a table,\n// see https://github.com/markdown-it/markdown-it/issues/1000,\n//\n// Both pulldown-cmark and commonmark-hs limit the number of cells this way to ~200k.\n// We set it to 65k, which can expand user input by a factor of x370\n// (256x256 square is 1.8kB expanded into 650kB).\nconst MAX_AUTOCOMPLETED_CELLS = 0x10000\n\nfunction getLine (state, line) {\n const pos = state.bMarks[line] + state.tShift[line]\n const max = state.eMarks[line]\n\n return state.src.slice(pos, max)\n}\n\nfunction escapedSplit (str) {\n const result = []\n const max = str.length\n\n let pos = 0\n let ch = str.charCodeAt(pos)\n let isEscaped = false\n let lastPos = 0\n let current = ''\n\n while (pos < max) {\n if (ch === 0x7c/* | */) {\n if (!isEscaped) {\n // pipe separating cells, '|'\n result.push(current + str.substring(lastPos, pos))\n current = ''\n lastPos = pos + 1\n } else {\n // escaped pipe, '\\|'\n current += str.substring(lastPos, pos - 1)\n lastPos = pos\n }\n }\n\n isEscaped = (ch === 0x5c/* \\ */)\n pos++\n\n ch = str.charCodeAt(pos)\n }\n\n result.push(current + str.substring(lastPos))\n\n return result\n}\n\nexport default function table (state, startLine, endLine, silent) {\n // should have at least two lines\n if (startLine + 2 > endLine) { return false }\n\n let nextLine = startLine + 1\n\n if (state.sCount[nextLine] < state.blkIndent) { return false }\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[nextLine] - state.blkIndent >= 4) { return false }\n\n // first character of the second line should be '|', '-', ':',\n // and no other characters are allowed but spaces;\n // basically, this is the equivalent of /^[-:|][-:|\\s]*$/ regexp\n\n let pos = state.bMarks[nextLine] + state.tShift[nextLine]\n if (pos >= state.eMarks[nextLine]) { return false }\n\n const firstCh = state.src.charCodeAt(pos++)\n if (firstCh !== 0x7C/* | */ && firstCh !== 0x2D/* - */ && firstCh !== 0x3A/* : */) { return false }\n\n if (pos >= state.eMarks[nextLine]) { return false }\n\n const secondCh = state.src.charCodeAt(pos++)\n if (secondCh !== 0x7C/* | */ && secondCh !== 0x2D/* - */ && secondCh !== 0x3A/* : */ && !isSpace(secondCh)) {\n return false\n }\n\n // if first character is '-', then second character must not be a space\n // (due to parsing ambiguity with list)\n if (firstCh === 0x2D/* - */ && isSpace(secondCh)) { return false }\n\n while (pos < state.eMarks[nextLine]) {\n const ch = state.src.charCodeAt(pos)\n\n if (ch !== 0x7C/* | */ && ch !== 0x2D/* - */ && ch !== 0x3A/* : */ && !isSpace(ch)) { return false }\n\n pos++\n }\n\n let lineText = getLine(state, startLine + 1)\n let columns = lineText.split('|')\n const aligns = []\n for (let i = 0; i < columns.length; i++) {\n const t = columns[i].trim()\n if (!t) {\n // allow empty columns before and after table, but not in between columns;\n // e.g. allow ` |---| `, disallow ` ---||--- `\n if (i === 0 || i === columns.length - 1) {\n continue\n } else {\n return false\n }\n }\n\n if (!/^:?-+:?$/.test(t)) { return false }\n if (t.charCodeAt(t.length - 1) === 0x3A/* : */) {\n aligns.push(t.charCodeAt(0) === 0x3A/* : */ ? 'center' : 'right')\n } else if (t.charCodeAt(0) === 0x3A/* : */) {\n aligns.push('left')\n } else {\n aligns.push('')\n }\n }\n\n lineText = getLine(state, startLine).trim()\n if (lineText.indexOf('|') === -1) { return false }\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n columns = escapedSplit(lineText)\n if (columns.length && columns[0] === '') columns.shift()\n if (columns.length && columns[columns.length - 1] === '') columns.pop()\n\n // header row will define an amount of columns in the entire table,\n // and align row should be exactly the same (the rest of the rows can differ)\n const columnCount = columns.length\n if (columnCount === 0 || columnCount !== aligns.length) { return false }\n\n if (silent) { return true }\n\n const oldParentType = state.parentType\n state.parentType = 'table'\n\n // use 'blockquote' lists for termination because it's\n // the most similar to tables\n const terminatorRules = state.md.block.ruler.getRules('blockquote')\n\n const token_to = state.push('table_open', 'table', 1)\n const tableLines = [startLine, 0]\n token_to.map = tableLines\n\n const token_tho = state.push('thead_open', 'thead', 1)\n token_tho.map = [startLine, startLine + 1]\n\n const token_htro = state.push('tr_open', 'tr', 1)\n token_htro.map = [startLine, startLine + 1]\n\n for (let i = 0; i < columns.length; i++) {\n const token_ho = state.push('th_open', 'th', 1)\n if (aligns[i]) {\n token_ho.attrs = [['style', 'text-align:' + aligns[i]]]\n }\n\n const token_il = state.push('inline', '', 0)\n token_il.content = columns[i].trim()\n token_il.children = []\n\n state.push('th_close', 'th', -1)\n }\n\n state.push('tr_close', 'tr', -1)\n state.push('thead_close', 'thead', -1)\n\n let tbodyLines\n let autocompletedCells = 0\n\n for (nextLine = startLine + 2; nextLine < endLine; nextLine++) {\n if (state.sCount[nextLine] < state.blkIndent) { break }\n\n let terminate = false\n for (let i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true\n break\n }\n }\n\n if (terminate) { break }\n lineText = getLine(state, nextLine).trim()\n if (!lineText) { break }\n if (state.sCount[nextLine] - state.blkIndent >= 4) { break }\n columns = escapedSplit(lineText)\n if (columns.length && columns[0] === '') columns.shift()\n if (columns.length && columns[columns.length - 1] === '') columns.pop()\n\n // note: autocomplete count can be negative if user specifies more columns than header,\n // but that does not affect intended use (which is limiting expansion)\n autocompletedCells += columnCount - columns.length\n if (autocompletedCells > MAX_AUTOCOMPLETED_CELLS) { break }\n\n if (nextLine === startLine + 2) {\n const token_tbo = state.push('tbody_open', 'tbody', 1)\n token_tbo.map = tbodyLines = [startLine + 2, 0]\n }\n\n const token_tro = state.push('tr_open', 'tr', 1)\n token_tro.map = [nextLine, nextLine + 1]\n\n for (let i = 0; i < columnCount; i++) {\n const token_tdo = state.push('td_open', 'td', 1)\n if (aligns[i]) {\n token_tdo.attrs = [['style', 'text-align:' + aligns[i]]]\n }\n\n const token_il = state.push('inline', '', 0)\n token_il.content = columns[i] ? columns[i].trim() : ''\n token_il.children = []\n\n state.push('td_close', 'td', -1)\n }\n state.push('tr_close', 'tr', -1)\n }\n\n if (tbodyLines) {\n state.push('tbody_close', 'tbody', -1)\n tbodyLines[1] = nextLine\n }\n\n state.push('table_close', 'table', -1)\n tableLines[1] = nextLine\n\n state.parentType = oldParentType\n state.line = nextLine\n return true\n}\n","// Lists\n\nimport { isSpace } from '../common/utils.mjs'\n\n// Search `[-+*][\\n ]`, returns next pos after marker on success\n// or -1 on fail.\nfunction skipBulletListMarker (state, startLine) {\n const max = state.eMarks[startLine]\n let pos = state.bMarks[startLine] + state.tShift[startLine]\n\n const marker = state.src.charCodeAt(pos++)\n // Check bullet\n if (marker !== 0x2A/* * */ &&\n marker !== 0x2D/* - */ &&\n marker !== 0x2B/* + */) {\n return -1\n }\n\n if (pos < max) {\n const ch = state.src.charCodeAt(pos)\n\n if (!isSpace(ch)) {\n // \" -test \" - is not a list item\n return -1\n }\n }\n\n return pos\n}\n\n// Search `\\d+[.)][\\n ]`, returns next pos after marker on success\n// or -1 on fail.\nfunction skipOrderedListMarker (state, startLine) {\n const start = state.bMarks[startLine] + state.tShift[startLine]\n const max = state.eMarks[startLine]\n let pos = start\n\n // List marker should have at least 2 chars (digit + dot)\n if (pos + 1 >= max) { return -1 }\n\n let ch = state.src.charCodeAt(pos++)\n\n if (ch < 0x30/* 0 */ || ch > 0x39/* 9 */) { return -1 }\n\n for (;;) {\n // EOL -> fail\n if (pos >= max) { return -1 }\n\n ch = state.src.charCodeAt(pos++)\n\n if (ch >= 0x30/* 0 */ && ch <= 0x39/* 9 */) {\n // List marker should have no more than 9 digits\n // (prevents integer overflow in browsers)\n if (pos - start >= 10) { return -1 }\n\n continue\n }\n\n // found valid marker\n if (ch === 0x29/* ) */ || ch === 0x2e/* . */) {\n break\n }\n\n return -1\n }\n\n if (pos < max) {\n ch = state.src.charCodeAt(pos)\n\n if (!isSpace(ch)) {\n // \" 1.test \" - is not a list item\n return -1\n }\n }\n return pos\n}\n\nfunction markTightParagraphs (state, idx) {\n const level = state.level + 2\n\n for (let i = idx + 2, l = state.tokens.length - 2; i < l; i++) {\n if (state.tokens[i].level === level && state.tokens[i].type === 'paragraph_open') {\n state.tokens[i + 2].hidden = true\n state.tokens[i].hidden = true\n i += 2\n }\n }\n}\n\nexport default function list (state, startLine, endLine, silent) {\n let max, pos, start, token\n let nextLine = startLine\n let tight = true\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[nextLine] - state.blkIndent >= 4) { return false }\n\n // Special case:\n // - item 1\n // - item 2\n // - item 3\n // - item 4\n // - this one is a paragraph continuation\n if (state.listIndent >= 0 &&\n state.sCount[nextLine] - state.listIndent >= 4 &&\n state.sCount[nextLine] < state.blkIndent) {\n return false\n }\n\n let isTerminatingParagraph = false\n\n // limit conditions when list can interrupt\n // a paragraph (validation mode only)\n if (silent && state.parentType === 'paragraph') {\n // Next list item should still terminate previous list item;\n //\n // This code can fail if plugins use blkIndent as well as lists,\n // but I hope the spec gets fixed long before that happens.\n //\n if (state.sCount[nextLine] >= state.blkIndent) {\n isTerminatingParagraph = true\n }\n }\n\n // Detect list type and position after marker\n let isOrdered\n let markerValue\n let posAfterMarker\n if ((posAfterMarker = skipOrderedListMarker(state, nextLine)) >= 0) {\n isOrdered = true\n start = state.bMarks[nextLine] + state.tShift[nextLine]\n markerValue = Number(state.src.slice(start, posAfterMarker - 1))\n\n // If we're starting a new ordered list right after\n // a paragraph, it should start with 1.\n if (isTerminatingParagraph && markerValue !== 1) return false\n } else if ((posAfterMarker = skipBulletListMarker(state, nextLine)) >= 0) {\n isOrdered = false\n } else {\n return false\n }\n\n // If we're starting a new unordered list right after\n // a paragraph, first line should not be empty.\n if (isTerminatingParagraph) {\n if (state.skipSpaces(posAfterMarker) >= state.eMarks[nextLine]) return false\n }\n\n // For validation mode we can terminate immediately\n if (silent) { return true }\n\n // We should terminate list on style change. Remember first one to compare.\n const markerCharCode = state.src.charCodeAt(posAfterMarker - 1)\n\n // Start list\n const listTokIdx = state.tokens.length\n\n if (isOrdered) {\n token = state.push('ordered_list_open', 'ol', 1)\n if (markerValue !== 1) {\n token.attrs = [['start', markerValue]]\n }\n } else {\n token = state.push('bullet_list_open', 'ul', 1)\n }\n\n const listLines = [nextLine, 0]\n token.map = listLines\n token.markup = String.fromCharCode(markerCharCode)\n\n //\n // Iterate list items\n //\n\n let prevEmptyEnd = false\n const terminatorRules = state.md.block.ruler.getRules('list')\n\n const oldParentType = state.parentType\n state.parentType = 'list'\n\n while (nextLine < endLine) {\n pos = posAfterMarker\n max = state.eMarks[nextLine]\n\n const initial = state.sCount[nextLine] + posAfterMarker - (state.bMarks[nextLine] + state.tShift[nextLine])\n let offset = initial\n\n while (pos < max) {\n const ch = state.src.charCodeAt(pos)\n\n if (ch === 0x09) {\n offset += 4 - (offset + state.bsCount[nextLine]) % 4\n } else if (ch === 0x20) {\n offset++\n } else {\n break\n }\n\n pos++\n }\n\n const contentStart = pos\n let indentAfterMarker\n\n if (contentStart >= max) {\n // trimming space in \"- \\n 3\" case, indent is 1 here\n indentAfterMarker = 1\n } else {\n indentAfterMarker = offset - initial\n }\n\n // If we have more than 4 spaces, the indent is 1\n // (the rest is just indented code block)\n if (indentAfterMarker > 4) { indentAfterMarker = 1 }\n\n // \" - test\"\n // ^^^^^ - calculating total length of this thing\n const indent = initial + indentAfterMarker\n\n // Run subparser & write tokens\n token = state.push('list_item_open', 'li', 1)\n token.markup = String.fromCharCode(markerCharCode)\n const itemLines = [nextLine, 0]\n token.map = itemLines\n if (isOrdered) {\n token.info = state.src.slice(start, posAfterMarker - 1)\n }\n\n // change current state, then restore it after parser subcall\n const oldTight = state.tight\n const oldTShift = state.tShift[nextLine]\n const oldSCount = state.sCount[nextLine]\n\n // - example list\n // ^ listIndent position will be here\n // ^ blkIndent position will be here\n //\n const oldListIndent = state.listIndent\n state.listIndent = state.blkIndent\n state.blkIndent = indent\n\n state.tight = true\n state.tShift[nextLine] = contentStart - state.bMarks[nextLine]\n state.sCount[nextLine] = offset\n\n if (contentStart >= max && state.isEmpty(nextLine + 1)) {\n // workaround for this case\n // (list item is empty, list terminates before \"foo\"):\n // ~~~~~~~~\n // -\n //\n // foo\n // ~~~~~~~~\n state.line = Math.min(state.line + 2, endLine)\n } else {\n state.md.block.tokenize(state, nextLine, endLine, true)\n }\n\n // If any of list item is tight, mark list as tight\n if (!state.tight || prevEmptyEnd) {\n tight = false\n }\n // Item become loose if finish with empty line,\n // but we should filter last element, because it means list finish\n prevEmptyEnd = (state.line - nextLine) > 1 && state.isEmpty(state.line - 1)\n\n state.blkIndent = state.listIndent\n state.listIndent = oldListIndent\n state.tShift[nextLine] = oldTShift\n state.sCount[nextLine] = oldSCount\n state.tight = oldTight\n\n token = state.push('list_item_close', 'li', -1)\n token.markup = String.fromCharCode(markerCharCode)\n\n nextLine = state.line\n itemLines[1] = nextLine\n\n if (nextLine >= endLine) { break }\n\n //\n // Try to check if list is terminated or continued.\n //\n if (state.sCount[nextLine] < state.blkIndent) { break }\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[nextLine] - state.blkIndent >= 4) { break }\n\n // fail if terminating block found\n let terminate = false\n for (let i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true\n break\n }\n }\n if (terminate) { break }\n\n // fail if list has another type\n if (isOrdered) {\n posAfterMarker = skipOrderedListMarker(state, nextLine)\n if (posAfterMarker < 0) { break }\n start = state.bMarks[nextLine] + state.tShift[nextLine]\n } else {\n posAfterMarker = skipBulletListMarker(state, nextLine)\n if (posAfterMarker < 0) { break }\n }\n\n if (markerCharCode !== state.src.charCodeAt(posAfterMarker - 1)) { break }\n }\n\n // Finalize list\n if (isOrdered) {\n token = state.push('ordered_list_close', 'ol', -1)\n } else {\n token = state.push('bullet_list_close', 'ul', -1)\n }\n token.markup = String.fromCharCode(markerCharCode)\n\n listLines[1] = nextLine\n state.line = nextLine\n\n state.parentType = oldParentType\n\n // mark paragraphs tight if needed\n if (tight) {\n markTightParagraphs(state, listTokIdx)\n }\n\n return true\n}\n","// List of valid html blocks names, according to commonmark spec\n// https://spec.commonmark.org/0.30/#html-blocks\n\nexport default [\n 'address',\n 'article',\n 'aside',\n 'base',\n 'basefont',\n 'blockquote',\n 'body',\n 'caption',\n 'center',\n 'col',\n 'colgroup',\n 'dd',\n 'details',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'frame',\n 'frameset',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hr',\n 'html',\n 'iframe',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'menu',\n 'menuitem',\n 'nav',\n 'noframes',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'param',\n 'search',\n 'section',\n 'summary',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'title',\n 'tr',\n 'track',\n 'ul'\n]\n","// Regexps to match html elements\n\nconst attr_name = '[a-zA-Z_:][a-zA-Z0-9:._-]*'\n\nconst unquoted = '[^\"\\'=<>`\\\\x00-\\\\x20]+'\nconst single_quoted = \"'[^']*'\"\nconst double_quoted = '\"[^\"]*\"'\n\nconst attr_value = '(?:' + unquoted + '|' + single_quoted + '|' + double_quoted + ')'\n\nconst attribute = '(?:\\\\s+' + attr_name + '(?:\\\\s*=\\\\s*' + attr_value + ')?)'\n\nconst open_tag = '<[A-Za-z][A-Za-z0-9\\\\-]*' + attribute + '*\\\\s*\\\\/?>'\n\nconst close_tag = '<\\\\/[A-Za-z][A-Za-z0-9\\\\-]*\\\\s*>'\nconst comment = ''\nconst processing = '<[?][\\\\s\\\\S]*?[?]>'\nconst declaration = ']*>'\nconst cdata = ''\n\nconst HTML_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + '|' + comment +\n '|' + processing + '|' + declaration + '|' + cdata + ')')\nconst HTML_OPEN_CLOSE_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + ')')\n\nexport { HTML_TAG_RE, HTML_OPEN_CLOSE_TAG_RE }\n","// HTML block\n\nimport block_names from '../common/html_blocks.mjs'\nimport { HTML_OPEN_CLOSE_TAG_RE } from '../common/html_re.mjs'\n\n// An array of opening and corresponding closing sequences for html tags,\n// last argument defines whether it can terminate a paragraph or not\n//\nconst HTML_SEQUENCES = [\n [/^<(script|pre|style|textarea)(?=(\\s|>|$))/i, /<\\/(script|pre|style|textarea)>/i, true],\n [/^/, true],\n [/^<\\?/, /\\?>/, true],\n [/^/, true],\n [/^/, true],\n [new RegExp('^|$))', 'i'), /^$/, true],\n [new RegExp(HTML_OPEN_CLOSE_TAG_RE.source + '\\\\s*$'), /^$/, false]\n]\n\nexport default function html_block (state, startLine, endLine, silent) {\n let pos = state.bMarks[startLine] + state.tShift[startLine]\n let max = state.eMarks[startLine]\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n\n if (!state.md.options.html) { return false }\n\n if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false }\n\n let lineText = state.src.slice(pos, max)\n\n let i = 0\n for (; i < HTML_SEQUENCES.length; i++) {\n if (HTML_SEQUENCES[i][0].test(lineText)) { break }\n }\n if (i === HTML_SEQUENCES.length) { return false }\n\n if (silent) {\n // true if this sequence can be a terminator, false otherwise\n return HTML_SEQUENCES[i][2]\n }\n\n let nextLine = startLine + 1\n\n // If we are here - we detected HTML block.\n // Let's roll down till block end.\n if (!HTML_SEQUENCES[i][1].test(lineText)) {\n for (; nextLine < endLine; nextLine++) {\n if (state.sCount[nextLine] < state.blkIndent) { break }\n\n pos = state.bMarks[nextLine] + state.tShift[nextLine]\n max = state.eMarks[nextLine]\n lineText = state.src.slice(pos, max)\n\n if (HTML_SEQUENCES[i][1].test(lineText)) {\n if (lineText.length !== 0) { nextLine++ }\n break\n }\n }\n }\n\n state.line = nextLine\n\n const token = state.push('html_block', '', 0)\n token.map = [startLine, nextLine]\n token.content = state.getLines(startLine, nextLine, state.blkIndent, true)\n\n return true\n}\n","/** internal\n * class ParserBlock\n *\n * Block-level tokenizer.\n **/\n\nimport Ruler from './ruler.mjs'\nimport StateBlock from './rules_block/state_block.mjs'\n\nimport r_table from './rules_block/table.mjs'\nimport r_code from './rules_block/code.mjs'\nimport r_fence from './rules_block/fence.mjs'\nimport r_blockquote from './rules_block/blockquote.mjs'\nimport r_hr from './rules_block/hr.mjs'\nimport r_list from './rules_block/list.mjs'\nimport r_reference from './rules_block/reference.mjs'\nimport r_html_block from './rules_block/html_block.mjs'\nimport r_heading from './rules_block/heading.mjs'\nimport r_lheading from './rules_block/lheading.mjs'\nimport r_paragraph from './rules_block/paragraph.mjs'\n\nconst _rules = [\n // First 2 params - rule name & source. Secondary array - list of rules,\n // which can be terminated by this one.\n ['table', r_table, ['paragraph', 'reference']],\n ['code', r_code],\n ['fence', r_fence, ['paragraph', 'reference', 'blockquote', 'list']],\n ['blockquote', r_blockquote, ['paragraph', 'reference', 'blockquote', 'list']],\n ['hr', r_hr, ['paragraph', 'reference', 'blockquote', 'list']],\n ['list', r_list, ['paragraph', 'reference', 'blockquote']],\n ['reference', r_reference],\n ['html_block', r_html_block, ['paragraph', 'reference', 'blockquote']],\n ['heading', r_heading, ['paragraph', 'reference', 'blockquote']],\n ['lheading', r_lheading],\n ['paragraph', r_paragraph]\n]\n\n/**\n * new ParserBlock()\n **/\nfunction ParserBlock () {\n /**\n * ParserBlock#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of block rules.\n **/\n this.ruler = new Ruler()\n\n for (let i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1], { alt: (_rules[i][2] || []).slice() })\n }\n}\n\n// Generate tokens for input range\n//\nParserBlock.prototype.tokenize = function (state, startLine, endLine) {\n const rules = this.ruler.getRules('')\n const len = rules.length\n const maxNesting = state.md.options.maxNesting\n let line = startLine\n let hasEmptyLines = false\n\n while (line < endLine) {\n state.line = line = state.skipEmptyLines(line)\n if (line >= endLine) { break }\n\n // Termination condition for nested calls.\n // Nested calls currently used for blockquotes & lists\n if (state.sCount[line] < state.blkIndent) { break }\n\n // If nesting level exceeded - skip tail to the end. That's not ordinary\n // situation and we should not care about content.\n if (state.level >= maxNesting) {\n state.line = endLine\n break\n }\n\n // Try all possible rules.\n // On success, rule should:\n //\n // - update `state.line`\n // - update `state.tokens`\n // - return true\n const prevLine = state.line\n let ok = false\n\n for (let i = 0; i < len; i++) {\n ok = rules[i](state, line, endLine, false)\n if (ok) {\n if (prevLine >= state.line) {\n throw new Error(\"block rule didn't increment state.line\")\n }\n break\n }\n }\n\n // this can only happen if user disables paragraph rule\n if (!ok) throw new Error('none of the block rules matched')\n\n // set state.tight if we had an empty line before current tag\n // i.e. latest empty line should not count\n state.tight = !hasEmptyLines\n\n // paragraph might \"eat\" one newline after it in nested lists\n if (state.isEmpty(state.line - 1)) {\n hasEmptyLines = true\n }\n\n line = state.line\n\n if (line < endLine && state.isEmpty(line)) {\n hasEmptyLines = true\n line++\n state.line = line\n }\n }\n}\n\n/**\n * ParserBlock.parse(str, md, env, outTokens)\n *\n * Process input string and push block tokens into `outTokens`\n **/\nParserBlock.prototype.parse = function (src, md, env, outTokens) {\n if (!src) { return }\n\n const state = new this.State(src, md, env, outTokens)\n\n this.tokenize(state, state.line, state.lineMax)\n}\n\nParserBlock.prototype.State = StateBlock\n\nexport default ParserBlock\n","// Code block (4 spaces padded)\n\nexport default function code (state, startLine, endLine/*, silent */) {\n if (state.sCount[startLine] - state.blkIndent < 4) { return false }\n\n let nextLine = startLine + 1\n let last = nextLine\n\n while (nextLine < endLine) {\n if (state.isEmpty(nextLine)) {\n nextLine++\n continue\n }\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n nextLine++\n last = nextLine\n continue\n }\n break\n }\n\n state.line = last\n\n const token = state.push('code_block', 'code', 0)\n token.content = state.getLines(startLine, last, 4 + state.blkIndent, false) + '\\n'\n token.map = [startLine, state.line]\n\n return true\n}\n","// fences (``` lang, ~~~ lang)\n\nexport default function fence (state, startLine, endLine, silent) {\n let pos = state.bMarks[startLine] + state.tShift[startLine]\n let max = state.eMarks[startLine]\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n\n if (pos + 3 > max) { return false }\n\n const marker = state.src.charCodeAt(pos)\n\n if (marker !== 0x7E/* ~ */ && marker !== 0x60 /* ` */) {\n return false\n }\n\n // scan marker length\n let mem = pos\n pos = state.skipChars(pos, marker)\n\n let len = pos - mem\n\n if (len < 3) { return false }\n\n const markup = state.src.slice(mem, pos)\n const params = state.src.slice(pos, max)\n\n if (marker === 0x60 /* ` */) {\n if (params.indexOf(String.fromCharCode(marker)) >= 0) {\n return false\n }\n }\n\n // Since start is found, we can report success here in validation mode\n if (silent) { return true }\n\n // search end of block\n let nextLine = startLine\n let haveEndMarker = false\n\n for (;;) {\n nextLine++\n if (nextLine >= endLine) {\n // unclosed block should be autoclosed by end of document.\n // also block seems to be autoclosed by end of parent\n break\n }\n\n pos = mem = state.bMarks[nextLine] + state.tShift[nextLine]\n max = state.eMarks[nextLine]\n\n if (pos < max && state.sCount[nextLine] < state.blkIndent) {\n // non-empty line with negative indent should stop the list:\n // - ```\n // test\n break\n }\n\n if (state.src.charCodeAt(pos) !== marker) { continue }\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n // closing fence should be indented less than 4 spaces\n continue\n }\n\n pos = state.skipChars(pos, marker)\n\n // closing code fence must be at least as long as the opening one\n if (pos - mem < len) { continue }\n\n // make sure tail has spaces only\n pos = state.skipSpaces(pos)\n\n if (pos < max) { continue }\n\n haveEndMarker = true\n // found!\n break\n }\n\n // If a fence has heading spaces, they should be removed from its inner block\n len = state.sCount[startLine]\n\n state.line = nextLine + (haveEndMarker ? 1 : 0)\n\n const token = state.push('fence', 'code', 0)\n token.info = params\n token.content = state.getLines(startLine + 1, nextLine, len, true)\n token.markup = markup\n token.map = [startLine, state.line]\n\n return true\n}\n","// Block quotes\n\nimport { isSpace } from '../common/utils.mjs'\n\nexport default function blockquote (state, startLine, endLine, silent) {\n let pos = state.bMarks[startLine] + state.tShift[startLine]\n let max = state.eMarks[startLine]\n\n const oldLineMax = state.lineMax\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n\n // check the block quote marker\n if (state.src.charCodeAt(pos) !== 0x3E/* > */) { return false }\n\n // we know that it's going to be a valid blockquote,\n // so no point trying to find the end of it in silent mode\n if (silent) { return true }\n\n const oldBMarks = []\n const oldBSCount = []\n const oldSCount = []\n const oldTShift = []\n\n const terminatorRules = state.md.block.ruler.getRules('blockquote')\n\n const oldParentType = state.parentType\n state.parentType = 'blockquote'\n let lastLineEmpty = false\n let nextLine\n\n // Search the end of the block\n //\n // Block ends with either:\n // 1. an empty line outside:\n // ```\n // > test\n //\n // ```\n // 2. an empty line inside:\n // ```\n // >\n // test\n // ```\n // 3. another tag:\n // ```\n // > test\n // - - -\n // ```\n for (nextLine = startLine; nextLine < endLine; nextLine++) {\n // check if it's outdented, i.e. it's inside list item and indented\n // less than said list item:\n //\n // ```\n // 1. anything\n // > current blockquote\n // 2. checking this line\n // ```\n const isOutdented = state.sCount[nextLine] < state.blkIndent\n\n pos = state.bMarks[nextLine] + state.tShift[nextLine]\n max = state.eMarks[nextLine]\n\n if (pos >= max) {\n // Case 1: line is not inside the blockquote, and this line is empty.\n break\n }\n\n if (state.src.charCodeAt(pos++) === 0x3E/* > */ && !isOutdented) {\n // This line is inside the blockquote.\n\n // set offset past spaces and \">\"\n let initial = state.sCount[nextLine] + 1\n let spaceAfterMarker\n let adjustTab\n\n // skip one optional space after '>'\n if (state.src.charCodeAt(pos) === 0x20 /* space */) {\n // ' > test '\n // ^ -- position start of line here:\n pos++\n initial++\n adjustTab = false\n spaceAfterMarker = true\n } else if (state.src.charCodeAt(pos) === 0x09 /* tab */) {\n spaceAfterMarker = true\n\n if ((state.bsCount[nextLine] + initial) % 4 === 3) {\n // ' >\\t test '\n // ^ -- position start of line here (tab has width===1)\n pos++\n initial++\n adjustTab = false\n } else {\n // ' >\\t test '\n // ^ -- position start of line here + shift bsCount slightly\n // to make extra space appear\n adjustTab = true\n }\n } else {\n spaceAfterMarker = false\n }\n\n let offset = initial\n oldBMarks.push(state.bMarks[nextLine])\n state.bMarks[nextLine] = pos\n\n while (pos < max) {\n const ch = state.src.charCodeAt(pos)\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n offset += 4 - (offset + state.bsCount[nextLine] + (adjustTab ? 1 : 0)) % 4\n } else {\n offset++\n }\n } else {\n break\n }\n\n pos++\n }\n\n lastLineEmpty = pos >= max\n\n oldBSCount.push(state.bsCount[nextLine])\n state.bsCount[nextLine] = state.sCount[nextLine] + 1 + (spaceAfterMarker ? 1 : 0)\n\n oldSCount.push(state.sCount[nextLine])\n state.sCount[nextLine] = offset - initial\n\n oldTShift.push(state.tShift[nextLine])\n state.tShift[nextLine] = pos - state.bMarks[nextLine]\n continue\n }\n\n // Case 2: line is not inside the blockquote, and the last line was empty.\n if (lastLineEmpty) { break }\n\n // Case 3: another tag found.\n let terminate = false\n for (let i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true\n break\n }\n }\n\n if (terminate) {\n // Quirk to enforce \"hard termination mode\" for paragraphs;\n // normally if you call `tokenize(state, startLine, nextLine)`,\n // paragraphs will look below nextLine for paragraph continuation,\n // but if blockquote is terminated by another tag, they shouldn't\n state.lineMax = nextLine\n\n if (state.blkIndent !== 0) {\n // state.blkIndent was non-zero, we now set it to zero,\n // so we need to re-calculate all offsets to appear as\n // if indent wasn't changed\n oldBMarks.push(state.bMarks[nextLine])\n oldBSCount.push(state.bsCount[nextLine])\n oldTShift.push(state.tShift[nextLine])\n oldSCount.push(state.sCount[nextLine])\n state.sCount[nextLine] -= state.blkIndent\n }\n\n break\n }\n\n oldBMarks.push(state.bMarks[nextLine])\n oldBSCount.push(state.bsCount[nextLine])\n oldTShift.push(state.tShift[nextLine])\n oldSCount.push(state.sCount[nextLine])\n\n // A negative indentation means that this is a paragraph continuation\n //\n state.sCount[nextLine] = -1\n }\n\n const oldIndent = state.blkIndent\n state.blkIndent = 0\n\n const token_o = state.push('blockquote_open', 'blockquote', 1)\n token_o.markup = '>'\n const lines = [startLine, 0]\n token_o.map = lines\n\n state.md.block.tokenize(state, startLine, nextLine)\n\n const token_c = state.push('blockquote_close', 'blockquote', -1)\n token_c.markup = '>'\n\n state.lineMax = oldLineMax\n state.parentType = oldParentType\n lines[1] = state.line\n\n // Restore original tShift; this might not be necessary since the parser\n // has already been here, but just to make sure we can do that.\n for (let i = 0; i < oldTShift.length; i++) {\n state.bMarks[i + startLine] = oldBMarks[i]\n state.tShift[i + startLine] = oldTShift[i]\n state.sCount[i + startLine] = oldSCount[i]\n state.bsCount[i + startLine] = oldBSCount[i]\n }\n state.blkIndent = oldIndent\n\n return true\n}\n","// Horizontal rule\n\nimport { isSpace } from '../common/utils.mjs'\n\nexport default function hr (state, startLine, endLine, silent) {\n const max = state.eMarks[startLine]\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n\n let pos = state.bMarks[startLine] + state.tShift[startLine]\n const marker = state.src.charCodeAt(pos++)\n\n // Check hr marker\n if (marker !== 0x2A/* * */ &&\n marker !== 0x2D/* - */ &&\n marker !== 0x5F/* _ */) {\n return false\n }\n\n // markers can be mixed with spaces, but there should be at least 3 of them\n\n let cnt = 1\n while (pos < max) {\n const ch = state.src.charCodeAt(pos++)\n if (ch !== marker && !isSpace(ch)) { return false }\n if (ch === marker) { cnt++ }\n }\n\n if (cnt < 3) { return false }\n\n if (silent) { return true }\n\n state.line = startLine + 1\n\n const token = state.push('hr', 'hr', 0)\n token.map = [startLine, state.line]\n token.markup = Array(cnt + 1).join(String.fromCharCode(marker))\n\n return true\n}\n","import { isSpace, normalizeReference } from '../common/utils.mjs'\n\nexport default function reference (state, startLine, _endLine, silent) {\n let pos = state.bMarks[startLine] + state.tShift[startLine]\n let max = state.eMarks[startLine]\n let nextLine = startLine + 1\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n\n if (state.src.charCodeAt(pos) !== 0x5B/* [ */) { return false }\n\n function getNextLine (nextLine) {\n const endLine = state.lineMax\n\n if (nextLine >= endLine || state.isEmpty(nextLine)) {\n // empty line or end of input\n return null\n }\n\n let isContinuation = false\n\n // this would be a code block normally, but after paragraph\n // it's considered a lazy continuation regardless of what's there\n if (state.sCount[nextLine] - state.blkIndent > 3) { isContinuation = true }\n\n // quirk for blockquotes, this line should already be checked by that rule\n if (state.sCount[nextLine] < 0) { isContinuation = true }\n\n if (!isContinuation) {\n const terminatorRules = state.md.block.ruler.getRules('reference')\n const oldParentType = state.parentType\n state.parentType = 'reference'\n\n // Some tags can terminate paragraph without empty line.\n let terminate = false\n for (let i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true\n break\n }\n }\n\n state.parentType = oldParentType\n if (terminate) {\n // terminated by another block\n return null\n }\n }\n\n const pos = state.bMarks[nextLine] + state.tShift[nextLine]\n const max = state.eMarks[nextLine]\n\n // max + 1 explicitly includes the newline\n return state.src.slice(pos, max + 1)\n }\n\n let str = state.src.slice(pos, max + 1)\n\n max = str.length\n let labelEnd = -1\n\n for (pos = 1; pos < max; pos++) {\n const ch = str.charCodeAt(pos)\n if (ch === 0x5B /* [ */) {\n return false\n } else if (ch === 0x5D /* ] */) {\n labelEnd = pos\n break\n } else if (ch === 0x0A /* \\n */) {\n const lineContent = getNextLine(nextLine)\n if (lineContent !== null) {\n str += lineContent\n max = str.length\n nextLine++\n }\n } else if (ch === 0x5C /* \\ */) {\n pos++\n if (pos < max && str.charCodeAt(pos) === 0x0A) {\n const lineContent = getNextLine(nextLine)\n if (lineContent !== null) {\n str += lineContent\n max = str.length\n nextLine++\n }\n }\n }\n }\n\n if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 0x3A/* : */) { return false }\n\n // [label]: destination 'title'\n // ^^^ skip optional whitespace here\n for (pos = labelEnd + 2; pos < max; pos++) {\n const ch = str.charCodeAt(pos)\n if (ch === 0x0A) {\n const lineContent = getNextLine(nextLine)\n if (lineContent !== null) {\n str += lineContent\n max = str.length\n nextLine++\n }\n } else if (isSpace(ch)) {\n /* eslint no-empty:0 */\n } else {\n break\n }\n }\n\n // [label]: destination 'title'\n // ^^^^^^^^^^^ parse this\n const destRes = state.md.helpers.parseLinkDestination(str, pos, max)\n if (!destRes.ok) { return false }\n\n const href = state.md.normalizeLink(destRes.str)\n if (!state.md.validateLink(href)) { return false }\n\n pos = destRes.pos\n\n // save cursor state, we could require to rollback later\n const destEndPos = pos\n const destEndLineNo = nextLine\n\n // [label]: destination 'title'\n // ^^^ skipping those spaces\n const start = pos\n for (; pos < max; pos++) {\n const ch = str.charCodeAt(pos)\n if (ch === 0x0A) {\n const lineContent = getNextLine(nextLine)\n if (lineContent !== null) {\n str += lineContent\n max = str.length\n nextLine++\n }\n } else if (isSpace(ch)) {\n /* eslint no-empty:0 */\n } else {\n break\n }\n }\n\n // [label]: destination 'title'\n // ^^^^^^^ parse this\n let titleRes = state.md.helpers.parseLinkTitle(str, pos, max)\n while (titleRes.can_continue) {\n const lineContent = getNextLine(nextLine)\n if (lineContent === null) break\n str += lineContent\n pos = max\n max = str.length\n nextLine++\n titleRes = state.md.helpers.parseLinkTitle(str, pos, max, titleRes)\n }\n let title\n\n if (pos < max && start !== pos && titleRes.ok) {\n title = titleRes.str\n pos = titleRes.pos\n } else {\n title = ''\n pos = destEndPos\n nextLine = destEndLineNo\n }\n\n // skip trailing spaces until the rest of the line\n while (pos < max) {\n const ch = str.charCodeAt(pos)\n if (!isSpace(ch)) { break }\n pos++\n }\n\n if (pos < max && str.charCodeAt(pos) !== 0x0A) {\n if (title) {\n // garbage at the end of the line after title,\n // but it could still be a valid reference if we roll back\n title = ''\n pos = destEndPos\n nextLine = destEndLineNo\n while (pos < max) {\n const ch = str.charCodeAt(pos)\n if (!isSpace(ch)) { break }\n pos++\n }\n }\n }\n\n if (pos < max && str.charCodeAt(pos) !== 0x0A) {\n // garbage at the end of the line\n return false\n }\n\n const label = normalizeReference(str.slice(1, labelEnd))\n if (!label) {\n // CommonMark 0.20 disallows empty labels\n return false\n }\n\n // Reference can not terminate anything. This check is for safety only.\n /* istanbul ignore if */\n if (silent) { return true }\n\n if (typeof state.env.references === 'undefined') {\n state.env.references = {}\n }\n if (typeof state.env.references[label] === 'undefined') {\n state.env.references[label] = { title, href }\n }\n\n state.line = nextLine\n return true\n}\n","// heading (#, ##, ...)\n\nimport { isSpace } from '../common/utils.mjs'\n\nexport default function heading (state, startLine, endLine, silent) {\n let pos = state.bMarks[startLine] + state.tShift[startLine]\n let max = state.eMarks[startLine]\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n\n let ch = state.src.charCodeAt(pos)\n\n if (ch !== 0x23/* # */ || pos >= max) { return false }\n\n // count heading level\n let level = 1\n ch = state.src.charCodeAt(++pos)\n while (ch === 0x23/* # */ && pos < max && level <= 6) {\n level++\n ch = state.src.charCodeAt(++pos)\n }\n\n if (level > 6 || (pos < max && !isSpace(ch))) { return false }\n\n if (silent) { return true }\n\n // Let's cut tails like ' ### ' from the end of string\n\n max = state.skipSpacesBack(max, pos)\n const tmp = state.skipCharsBack(max, 0x23, pos) // #\n if (tmp > pos && isSpace(state.src.charCodeAt(tmp - 1))) {\n max = tmp\n }\n\n state.line = startLine + 1\n\n const token_o = state.push('heading_open', 'h' + String(level), 1)\n token_o.markup = '########'.slice(0, level)\n token_o.map = [startLine, state.line]\n\n const token_i = state.push('inline', '', 0)\n token_i.content = state.src.slice(pos, max).trim()\n token_i.map = [startLine, state.line]\n token_i.children = []\n\n const token_c = state.push('heading_close', 'h' + String(level), -1)\n token_c.markup = '########'.slice(0, level)\n\n return true\n}\n","// lheading (---, ===)\n\nexport default function lheading (state, startLine, endLine/*, silent */) {\n const terminatorRules = state.md.block.ruler.getRules('paragraph')\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n\n const oldParentType = state.parentType\n state.parentType = 'paragraph' // use paragraph to match terminatorRules\n\n // jump line-by-line until empty one or EOF\n let level = 0\n let marker\n let nextLine = startLine + 1\n\n for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n // this would be a code block normally, but after paragraph\n // it's considered a lazy continuation regardless of what's there\n if (state.sCount[nextLine] - state.blkIndent > 3) { continue }\n\n //\n // Check for underline in setext header\n //\n if (state.sCount[nextLine] >= state.blkIndent) {\n let pos = state.bMarks[nextLine] + state.tShift[nextLine]\n const max = state.eMarks[nextLine]\n\n if (pos < max) {\n marker = state.src.charCodeAt(pos)\n\n if (marker === 0x2D/* - */ || marker === 0x3D/* = */) {\n pos = state.skipChars(pos, marker)\n pos = state.skipSpaces(pos)\n\n if (pos >= max) {\n level = (marker === 0x3D/* = */ ? 1 : 2)\n break\n }\n }\n }\n }\n\n // quirk for blockquotes, this line should already be checked by that rule\n if (state.sCount[nextLine] < 0) { continue }\n\n // Some tags can terminate paragraph without empty line.\n let terminate = false\n for (let i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true\n break\n }\n }\n if (terminate) { break }\n }\n\n if (!level) {\n // Didn't find valid underline\n return false\n }\n\n const content = state.getLines(startLine, nextLine, state.blkIndent, false).trim()\n\n state.line = nextLine + 1\n\n const token_o = state.push('heading_open', 'h' + String(level), 1)\n token_o.markup = String.fromCharCode(marker)\n token_o.map = [startLine, state.line]\n\n const token_i = state.push('inline', '', 0)\n token_i.content = content\n token_i.map = [startLine, state.line - 1]\n token_i.children = []\n\n const token_c = state.push('heading_close', 'h' + String(level), -1)\n token_c.markup = String.fromCharCode(marker)\n\n state.parentType = oldParentType\n\n return true\n}\n","// Paragraph\n\nexport default function paragraph (state, startLine, endLine) {\n const terminatorRules = state.md.block.ruler.getRules('paragraph')\n const oldParentType = state.parentType\n let nextLine = startLine + 1\n state.parentType = 'paragraph'\n\n // jump line-by-line until empty one or EOF\n for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n // this would be a code block normally, but after paragraph\n // it's considered a lazy continuation regardless of what's there\n if (state.sCount[nextLine] - state.blkIndent > 3) { continue }\n\n // quirk for blockquotes, this line should already be checked by that rule\n if (state.sCount[nextLine] < 0) { continue }\n\n // Some tags can terminate paragraph without empty line.\n let terminate = false\n for (let i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true\n break\n }\n }\n if (terminate) { break }\n }\n\n const content = state.getLines(startLine, nextLine, state.blkIndent, false).trim()\n\n state.line = nextLine\n\n const token_o = state.push('paragraph_open', 'p', 1)\n token_o.map = [startLine, state.line]\n\n const token_i = state.push('inline', '', 0)\n token_i.content = content\n token_i.map = [startLine, state.line]\n token_i.children = []\n\n state.push('paragraph_close', 'p', -1)\n\n state.parentType = oldParentType\n\n return true\n}\n","// Inline parser state\n\nimport Token from '../token.mjs'\nimport { isWhiteSpace, isPunctChar, isMdAsciiPunct } from '../common/utils.mjs'\n\nfunction StateInline (src, md, env, outTokens) {\n this.src = src\n this.env = env\n this.md = md\n this.tokens = outTokens\n this.tokens_meta = Array(outTokens.length)\n\n this.pos = 0\n this.posMax = this.src.length\n this.level = 0\n this.pending = ''\n this.pendingLevel = 0\n\n // Stores { start: end } pairs. Useful for backtrack\n // optimization of pairs parse (emphasis, strikes).\n this.cache = {}\n\n // List of emphasis-like delimiters for current tag\n this.delimiters = []\n\n // Stack of delimiter lists for upper level tags\n this._prev_delimiters = []\n\n // backtick length => last seen position\n this.backticks = {}\n this.backticksScanned = false\n\n // Counter used to disable inline linkify-it execution\n // inside and markdown links\n this.linkLevel = 0\n}\n\n// Flush pending text\n//\nStateInline.prototype.pushPending = function () {\n const token = new Token('text', '', 0)\n token.content = this.pending\n token.level = this.pendingLevel\n this.tokens.push(token)\n this.pending = ''\n return token\n}\n\n// Push new token to \"stream\".\n// If pending text exists - flush it as text token\n//\nStateInline.prototype.push = function (type, tag, nesting) {\n if (this.pending) {\n this.pushPending()\n }\n\n const token = new Token(type, tag, nesting)\n let token_meta = null\n\n if (nesting < 0) {\n // closing tag\n this.level--\n this.delimiters = this._prev_delimiters.pop()\n }\n\n token.level = this.level\n\n if (nesting > 0) {\n // opening tag\n this.level++\n this._prev_delimiters.push(this.delimiters)\n this.delimiters = []\n token_meta = { delimiters: this.delimiters }\n }\n\n this.pendingLevel = this.level\n this.tokens.push(token)\n this.tokens_meta.push(token_meta)\n return token\n}\n\n// Scan a sequence of emphasis-like markers, and determine whether\n// it can start an emphasis sequence or end an emphasis sequence.\n//\n// - start - position to scan from (it should point at a valid marker);\n// - canSplitWord - determine if these markers can be found inside a word\n//\nStateInline.prototype.scanDelims = function (start, canSplitWord) {\n const max = this.posMax\n const marker = this.src.charCodeAt(start)\n\n // treat beginning of the line as a whitespace\n const lastChar = start > 0 ? this.src.charCodeAt(start - 1) : 0x20\n\n let pos = start\n while (pos < max && this.src.charCodeAt(pos) === marker) { pos++ }\n\n const count = pos - start\n\n // treat end of the line as a whitespace\n const nextChar = pos < max ? this.src.charCodeAt(pos) : 0x20\n\n const isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar))\n const isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar))\n\n const isLastWhiteSpace = isWhiteSpace(lastChar)\n const isNextWhiteSpace = isWhiteSpace(nextChar)\n\n const left_flanking =\n !isNextWhiteSpace && (!isNextPunctChar || isLastWhiteSpace || isLastPunctChar)\n const right_flanking =\n !isLastWhiteSpace && (!isLastPunctChar || isNextWhiteSpace || isNextPunctChar)\n\n const can_open = left_flanking && (canSplitWord || !right_flanking || isLastPunctChar)\n const can_close = right_flanking && (canSplitWord || !left_flanking || isNextPunctChar)\n\n return { can_open, can_close, length: count }\n}\n\n// re-export Token class to use in block rules\nStateInline.prototype.Token = Token\n\nexport default StateInline\n","// Skip text characters for text token, place those to pending buffer\n// and increment current pos\n\n// Rule to skip pure text\n// '{}$%@~+=:' reserved for extentions\n\n// !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n\n// !!!! Don't confuse with \"Markdown ASCII Punctuation\" chars\n// http://spec.commonmark.org/0.15/#ascii-punctuation-character\nfunction isTerminatorChar (ch) {\n switch (ch) {\n case 0x0A/* \\n */:\n case 0x21/* ! */:\n case 0x23/* # */:\n case 0x24/* $ */:\n case 0x25/* % */:\n case 0x26/* & */:\n case 0x2A/* * */:\n case 0x2B/* + */:\n case 0x2D/* - */:\n case 0x3A/* : */:\n case 0x3C/* < */:\n case 0x3D/* = */:\n case 0x3E/* > */:\n case 0x40/* @ */:\n case 0x5B/* [ */:\n case 0x5C/* \\ */:\n case 0x5D/* ] */:\n case 0x5E/* ^ */:\n case 0x5F/* _ */:\n case 0x60/* ` */:\n case 0x7B/* { */:\n case 0x7D/* } */:\n case 0x7E/* ~ */:\n return true\n default:\n return false\n }\n}\n\nexport default function text (state, silent) {\n let pos = state.pos\n\n while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) {\n pos++\n }\n\n if (pos === state.pos) { return false }\n\n if (!silent) { state.pending += state.src.slice(state.pos, pos) }\n\n state.pos = pos\n\n return true\n}\n\n// Alternative implementation, for memory.\n//\n// It costs 10% of performance, but allows extend terminators list, if place it\n// to `ParserInline` property. Probably, will switch to it sometime, such\n// flexibility required.\n\n/*\nvar TERMINATOR_RE = /[\\n!#$%&*+\\-:<=>@[\\\\\\]^_`{}~]/;\n\nmodule.exports = function text(state, silent) {\n var pos = state.pos,\n idx = state.src.slice(pos).search(TERMINATOR_RE);\n\n // first char is terminator -> empty text\n if (idx === 0) { return false; }\n\n // no terminator -> text till end of string\n if (idx < 0) {\n if (!silent) { state.pending += state.src.slice(pos); }\n state.pos = state.src.length;\n return true;\n }\n\n if (!silent) { state.pending += state.src.slice(pos, pos + idx); }\n\n state.pos += idx;\n\n return true;\n}; */\n","// Process links like https://example.org/\n\n// RFC3986: scheme = ALPHA *( ALPHA / DIGIT / \"+\" / \"-\" / \".\" )\nconst SCHEME_RE = /(?:^|[^a-z0-9.+-])([a-z][a-z0-9.+-]*)$/i\n\nexport default function linkify (state, silent) {\n if (!state.md.options.linkify) return false\n if (state.linkLevel > 0) return false\n\n const pos = state.pos\n const max = state.posMax\n\n if (pos + 3 > max) return false\n if (state.src.charCodeAt(pos) !== 0x3A/* : */) return false\n if (state.src.charCodeAt(pos + 1) !== 0x2F/* / */) return false\n if (state.src.charCodeAt(pos + 2) !== 0x2F/* / */) return false\n\n const match = state.pending.match(SCHEME_RE)\n if (!match) return false\n\n const proto = match[1]\n\n const link = state.md.linkify.matchAtStart(state.src.slice(pos - proto.length))\n if (!link) return false\n\n let url = link.url\n\n // invalid link, but still detected by linkify somehow;\n // need to check to prevent infinite loop below\n if (url.length <= proto.length) return false\n\n // disallow '*' at the end of the link (conflicts with emphasis)\n url = url.replace(/\\*+$/, '')\n\n const fullUrl = state.md.normalizeLink(url)\n if (!state.md.validateLink(fullUrl)) return false\n\n if (!silent) {\n state.pending = state.pending.slice(0, -proto.length)\n\n const token_o = state.push('link_open', 'a', 1)\n token_o.attrs = [['href', fullUrl]]\n token_o.markup = 'linkify'\n token_o.info = 'auto'\n\n const token_t = state.push('text', '', 0)\n token_t.content = state.md.normalizeLinkText(url)\n\n const token_c = state.push('link_close', 'a', -1)\n token_c.markup = 'linkify'\n token_c.info = 'auto'\n }\n\n state.pos += url.length - proto.length\n return true\n}\n","// Process escaped chars and hardbreaks\n\nimport { isSpace } from '../common/utils.mjs'\n\nconst ESCAPED = []\n\nfor (let i = 0; i < 256; i++) { ESCAPED.push(0) }\n\n'\\\\!\"#$%&\\'()*+,./:;<=>?@[]^_`{|}~-'\n .split('').forEach(function (ch) { ESCAPED[ch.charCodeAt(0)] = 1 })\n\nexport default function escape (state, silent) {\n let pos = state.pos\n const max = state.posMax\n\n if (state.src.charCodeAt(pos) !== 0x5C/* \\ */) return false\n pos++\n\n // '\\' at the end of the inline block\n if (pos >= max) return false\n\n let ch1 = state.src.charCodeAt(pos)\n\n if (ch1 === 0x0A) {\n if (!silent) {\n state.push('hardbreak', 'br', 0)\n }\n\n pos++\n // skip leading whitespaces from next line\n while (pos < max) {\n ch1 = state.src.charCodeAt(pos)\n if (!isSpace(ch1)) break\n pos++\n }\n\n state.pos = pos\n return true\n }\n\n let escapedStr = state.src[pos]\n\n if (ch1 >= 0xD800 && ch1 <= 0xDBFF && pos + 1 < max) {\n const ch2 = state.src.charCodeAt(pos + 1)\n\n if (ch2 >= 0xDC00 && ch2 <= 0xDFFF) {\n escapedStr += state.src[pos + 1]\n pos++\n }\n }\n\n const origStr = '\\\\' + escapedStr\n\n if (!silent) {\n const token = state.push('text_special', '', 0)\n\n if (ch1 < 256 && ESCAPED[ch1] !== 0) {\n token.content = escapedStr\n } else {\n token.content = origStr\n }\n\n token.markup = origStr\n token.info = 'escape'\n }\n\n state.pos = pos + 1\n return true\n}\n","// ~~strike through~~\n//\n\n// Insert each marker as a separate text token, and add it to delimiter list\n//\nfunction strikethrough_tokenize (state, silent) {\n const start = state.pos\n const marker = state.src.charCodeAt(start)\n\n if (silent) { return false }\n\n if (marker !== 0x7E/* ~ */) { return false }\n\n const scanned = state.scanDelims(state.pos, true)\n let len = scanned.length\n const ch = String.fromCharCode(marker)\n\n if (len < 2) { return false }\n\n let token\n\n if (len % 2) {\n token = state.push('text', '', 0)\n token.content = ch\n len--\n }\n\n for (let i = 0; i < len; i += 2) {\n token = state.push('text', '', 0)\n token.content = ch + ch\n\n state.delimiters.push({\n marker,\n length: 0, // disable \"rule of 3\" length checks meant for emphasis\n token: state.tokens.length - 1,\n end: -1,\n open: scanned.can_open,\n close: scanned.can_close\n })\n }\n\n state.pos += scanned.length\n\n return true\n}\n\nfunction postProcess (state, delimiters) {\n let token\n const loneMarkers = []\n const max = delimiters.length\n\n for (let i = 0; i < max; i++) {\n const startDelim = delimiters[i]\n\n if (startDelim.marker !== 0x7E/* ~ */) {\n continue\n }\n\n if (startDelim.end === -1) {\n continue\n }\n\n const endDelim = delimiters[startDelim.end]\n\n token = state.tokens[startDelim.token]\n token.type = 's_open'\n token.tag = 's'\n token.nesting = 1\n token.markup = '~~'\n token.content = ''\n\n token = state.tokens[endDelim.token]\n token.type = 's_close'\n token.tag = 's'\n token.nesting = -1\n token.markup = '~~'\n token.content = ''\n\n if (state.tokens[endDelim.token - 1].type === 'text' &&\n state.tokens[endDelim.token - 1].content === '~') {\n loneMarkers.push(endDelim.token - 1)\n }\n }\n\n // If a marker sequence has an odd number of characters, it's splitted\n // like this: `~~~~~` -> `~` + `~~` + `~~`, leaving one marker at the\n // start of the sequence.\n //\n // So, we have to move all those markers after subsequent s_close tags.\n //\n while (loneMarkers.length) {\n const i = loneMarkers.pop()\n let j = i + 1\n\n while (j < state.tokens.length && state.tokens[j].type === 's_close') {\n j++\n }\n\n j--\n\n if (i !== j) {\n token = state.tokens[j]\n state.tokens[j] = state.tokens[i]\n state.tokens[i] = token\n }\n }\n}\n\n// Walk through delimiter list and replace text tokens with tags\n//\nfunction strikethrough_postProcess (state) {\n const tokens_meta = state.tokens_meta\n const max = state.tokens_meta.length\n\n postProcess(state, state.delimiters)\n\n for (let curr = 0; curr < max; curr++) {\n if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n postProcess(state, tokens_meta[curr].delimiters)\n }\n }\n}\n\nexport default {\n tokenize: strikethrough_tokenize,\n postProcess: strikethrough_postProcess\n}\n","// Process *this* and _that_\n//\n\n// Insert each marker as a separate text token, and add it to delimiter list\n//\nfunction emphasis_tokenize (state, silent) {\n const start = state.pos\n const marker = state.src.charCodeAt(start)\n\n if (silent) { return false }\n\n if (marker !== 0x5F /* _ */ && marker !== 0x2A /* * */) { return false }\n\n const scanned = state.scanDelims(state.pos, marker === 0x2A)\n\n for (let i = 0; i < scanned.length; i++) {\n const token = state.push('text', '', 0)\n token.content = String.fromCharCode(marker)\n\n state.delimiters.push({\n // Char code of the starting marker (number).\n //\n marker,\n\n // Total length of these series of delimiters.\n //\n length: scanned.length,\n\n // A position of the token this delimiter corresponds to.\n //\n token: state.tokens.length - 1,\n\n // If this delimiter is matched as a valid opener, `end` will be\n // equal to its position, otherwise it's `-1`.\n //\n end: -1,\n\n // Boolean flags that determine if this delimiter could open or close\n // an emphasis.\n //\n open: scanned.can_open,\n close: scanned.can_close\n })\n }\n\n state.pos += scanned.length\n\n return true\n}\n\nfunction postProcess (state, delimiters) {\n const max = delimiters.length\n\n for (let i = max - 1; i >= 0; i--) {\n const startDelim = delimiters[i]\n\n if (startDelim.marker !== 0x5F/* _ */ && startDelim.marker !== 0x2A/* * */) {\n continue\n }\n\n // Process only opening markers\n if (startDelim.end === -1) {\n continue\n }\n\n const endDelim = delimiters[startDelim.end]\n\n // If the previous delimiter has the same marker and is adjacent to this one,\n // merge those into one strong delimiter.\n //\n // `whatever` -> `whatever`\n //\n const isStrong = i > 0 &&\n delimiters[i - 1].end === startDelim.end + 1 &&\n // check that first two markers match and adjacent\n delimiters[i - 1].marker === startDelim.marker &&\n delimiters[i - 1].token === startDelim.token - 1 &&\n // check that last two markers are adjacent (we can safely assume they match)\n delimiters[startDelim.end + 1].token === endDelim.token + 1\n\n const ch = String.fromCharCode(startDelim.marker)\n\n const token_o = state.tokens[startDelim.token]\n token_o.type = isStrong ? 'strong_open' : 'em_open'\n token_o.tag = isStrong ? 'strong' : 'em'\n token_o.nesting = 1\n token_o.markup = isStrong ? ch + ch : ch\n token_o.content = ''\n\n const token_c = state.tokens[endDelim.token]\n token_c.type = isStrong ? 'strong_close' : 'em_close'\n token_c.tag = isStrong ? 'strong' : 'em'\n token_c.nesting = -1\n token_c.markup = isStrong ? ch + ch : ch\n token_c.content = ''\n\n if (isStrong) {\n state.tokens[delimiters[i - 1].token].content = ''\n state.tokens[delimiters[startDelim.end + 1].token].content = ''\n i--\n }\n }\n}\n\n// Walk through delimiter list and replace text tokens with tags\n//\nfunction emphasis_post_process (state) {\n const tokens_meta = state.tokens_meta\n const max = state.tokens_meta.length\n\n postProcess(state, state.delimiters)\n\n for (let curr = 0; curr < max; curr++) {\n if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n postProcess(state, tokens_meta[curr].delimiters)\n }\n }\n}\n\nexport default {\n tokenize: emphasis_tokenize,\n postProcess: emphasis_post_process\n}\n","// Process autolinks ''\n\n/* eslint max-len:0 */\nconst EMAIL_RE = /^([a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$/\n/* eslint-disable-next-line no-control-regex */\nconst AUTOLINK_RE = /^([a-zA-Z][a-zA-Z0-9+.-]{1,31}):([^<>\\x00-\\x20]*)$/\n\nexport default function autolink (state, silent) {\n let pos = state.pos\n\n if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false }\n\n const start = state.pos\n const max = state.posMax\n\n for (;;) {\n if (++pos >= max) return false\n\n const ch = state.src.charCodeAt(pos)\n\n if (ch === 0x3C /* < */) return false\n if (ch === 0x3E /* > */) break\n }\n\n const url = state.src.slice(start + 1, pos)\n\n if (AUTOLINK_RE.test(url)) {\n const fullUrl = state.md.normalizeLink(url)\n if (!state.md.validateLink(fullUrl)) { return false }\n\n if (!silent) {\n const token_o = state.push('link_open', 'a', 1)\n token_o.attrs = [['href', fullUrl]]\n token_o.markup = 'autolink'\n token_o.info = 'auto'\n\n const token_t = state.push('text', '', 0)\n token_t.content = state.md.normalizeLinkText(url)\n\n const token_c = state.push('link_close', 'a', -1)\n token_c.markup = 'autolink'\n token_c.info = 'auto'\n }\n\n state.pos += url.length + 2\n return true\n }\n\n if (EMAIL_RE.test(url)) {\n const fullUrl = state.md.normalizeLink('mailto:' + url)\n if (!state.md.validateLink(fullUrl)) { return false }\n\n if (!silent) {\n const token_o = state.push('link_open', 'a', 1)\n token_o.attrs = [['href', fullUrl]]\n token_o.markup = 'autolink'\n token_o.info = 'auto'\n\n const token_t = state.push('text', '', 0)\n token_t.content = state.md.normalizeLinkText(url)\n\n const token_c = state.push('link_close', 'a', -1)\n token_c.markup = 'autolink'\n token_c.info = 'auto'\n }\n\n state.pos += url.length + 2\n return true\n }\n\n return false\n}\n","// Process html entity - {, ¯, ", ...\n\nimport { decodeHTML } from 'entities'\nimport { isValidEntityCode, fromCodePoint } from '../common/utils.mjs'\n\nconst DIGITAL_RE = /^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i\nconst NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i\n\nexport default function entity (state, silent) {\n const pos = state.pos\n const max = state.posMax\n\n if (state.src.charCodeAt(pos) !== 0x26/* & */) return false\n\n if (pos + 1 >= max) return false\n\n const ch = state.src.charCodeAt(pos + 1)\n\n if (ch === 0x23 /* # */) {\n const match = state.src.slice(pos).match(DIGITAL_RE)\n if (match) {\n if (!silent) {\n const code = match[1][0].toLowerCase() === 'x' ? parseInt(match[1].slice(1), 16) : parseInt(match[1], 10)\n\n const token = state.push('text_special', '', 0)\n token.content = isValidEntityCode(code) ? fromCodePoint(code) : fromCodePoint(0xFFFD)\n token.markup = match[0]\n token.info = 'entity'\n }\n state.pos += match[0].length\n return true\n }\n } else {\n const match = state.src.slice(pos).match(NAMED_RE)\n if (match) {\n const decoded = decodeHTML(match[0])\n if (decoded !== match[0]) {\n if (!silent) {\n const token = state.push('text_special', '', 0)\n token.content = decoded\n token.markup = match[0]\n token.info = 'entity'\n }\n state.pos += match[0].length\n return true\n }\n }\n }\n\n return false\n}\n","// For each opening emphasis-like marker find a matching closing one\n//\n\nfunction processDelimiters (delimiters) {\n const openersBottom = {}\n const max = delimiters.length\n\n if (!max) return\n\n // headerIdx is the first delimiter of the current (where closer is) delimiter run\n let headerIdx = 0\n let lastTokenIdx = -2 // needs any value lower than -1\n const jumps = []\n\n for (let closerIdx = 0; closerIdx < max; closerIdx++) {\n const closer = delimiters[closerIdx]\n\n jumps.push(0)\n\n // markers belong to same delimiter run if:\n // - they have adjacent tokens\n // - AND markers are the same\n //\n if (delimiters[headerIdx].marker !== closer.marker || lastTokenIdx !== closer.token - 1) {\n headerIdx = closerIdx\n }\n\n lastTokenIdx = closer.token\n\n // Length is only used for emphasis-specific \"rule of 3\",\n // if it's not defined (in strikethrough or 3rd party plugins),\n // we can default it to 0 to disable those checks.\n //\n closer.length = closer.length || 0\n\n if (!closer.close) continue\n\n // Previously calculated lower bounds (previous fails)\n // for each marker, each delimiter length modulo 3,\n // and for whether this closer can be an opener;\n // https://github.com/commonmark/cmark/commit/34250e12ccebdc6372b8b49c44fab57c72443460\n /* eslint-disable-next-line no-prototype-builtins */\n if (!openersBottom.hasOwnProperty(closer.marker)) {\n openersBottom[closer.marker] = [-1, -1, -1, -1, -1, -1]\n }\n\n const minOpenerIdx = openersBottom[closer.marker][(closer.open ? 3 : 0) + (closer.length % 3)]\n\n let openerIdx = headerIdx - jumps[headerIdx] - 1\n\n let newMinOpenerIdx = openerIdx\n\n for (; openerIdx > minOpenerIdx; openerIdx -= jumps[openerIdx] + 1) {\n const opener = delimiters[openerIdx]\n\n if (opener.marker !== closer.marker) continue\n\n if (opener.open && opener.end < 0) {\n let isOddMatch = false\n\n // from spec:\n //\n // If one of the delimiters can both open and close emphasis, then the\n // sum of the lengths of the delimiter runs containing the opening and\n // closing delimiters must not be a multiple of 3 unless both lengths\n // are multiples of 3.\n //\n if (opener.close || closer.open) {\n if ((opener.length + closer.length) % 3 === 0) {\n if (opener.length % 3 !== 0 || closer.length % 3 !== 0) {\n isOddMatch = true\n }\n }\n }\n\n if (!isOddMatch) {\n // If previous delimiter cannot be an opener, we can safely skip\n // the entire sequence in future checks. This is required to make\n // sure algorithm has linear complexity (see *_*_*_*_*_... case).\n //\n const lastJump = openerIdx > 0 && !delimiters[openerIdx - 1].open\n ? jumps[openerIdx - 1] + 1\n : 0\n\n jumps[closerIdx] = closerIdx - openerIdx + lastJump\n jumps[openerIdx] = lastJump\n\n closer.open = false\n opener.end = closerIdx\n opener.close = false\n newMinOpenerIdx = -1\n // treat next token as start of run,\n // it optimizes skips in **<...>**a**<...>** pathological case\n lastTokenIdx = -2\n break\n }\n }\n }\n\n if (newMinOpenerIdx !== -1) {\n // If match for this delimiter run failed, we want to set lower bound for\n // future lookups. This is required to make sure algorithm has linear\n // complexity.\n //\n // See details here:\n // https://github.com/commonmark/cmark/issues/178#issuecomment-270417442\n //\n openersBottom[closer.marker][(closer.open ? 3 : 0) + ((closer.length || 0) % 3)] = newMinOpenerIdx\n }\n }\n}\n\nexport default function link_pairs (state) {\n const tokens_meta = state.tokens_meta\n const max = state.tokens_meta.length\n\n processDelimiters(state.delimiters)\n\n for (let curr = 0; curr < max; curr++) {\n if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n processDelimiters(tokens_meta[curr].delimiters)\n }\n }\n}\n","/** internal\n * class ParserInline\n *\n * Tokenizes paragraph content.\n **/\n\nimport Ruler from './ruler.mjs'\nimport StateInline from './rules_inline/state_inline.mjs'\n\nimport r_text from './rules_inline/text.mjs'\nimport r_linkify from './rules_inline/linkify.mjs'\nimport r_newline from './rules_inline/newline.mjs'\nimport r_escape from './rules_inline/escape.mjs'\nimport r_backticks from './rules_inline/backticks.mjs'\nimport r_strikethrough from './rules_inline/strikethrough.mjs'\nimport r_emphasis from './rules_inline/emphasis.mjs'\nimport r_link from './rules_inline/link.mjs'\nimport r_image from './rules_inline/image.mjs'\nimport r_autolink from './rules_inline/autolink.mjs'\nimport r_html_inline from './rules_inline/html_inline.mjs'\nimport r_entity from './rules_inline/entity.mjs'\n\nimport r_balance_pairs from './rules_inline/balance_pairs.mjs'\nimport r_fragments_join from './rules_inline/fragments_join.mjs'\n\n// Parser rules\n\nconst _rules = [\n ['text', r_text],\n ['linkify', r_linkify],\n ['newline', r_newline],\n ['escape', r_escape],\n ['backticks', r_backticks],\n ['strikethrough', r_strikethrough.tokenize],\n ['emphasis', r_emphasis.tokenize],\n ['link', r_link],\n ['image', r_image],\n ['autolink', r_autolink],\n ['html_inline', r_html_inline],\n ['entity', r_entity]\n]\n\n// `rule2` ruleset was created specifically for emphasis/strikethrough\n// post-processing and may be changed in the future.\n//\n// Don't use this for anything except pairs (plugins working with `balance_pairs`).\n//\nconst _rules2 = [\n ['balance_pairs', r_balance_pairs],\n ['strikethrough', r_strikethrough.postProcess],\n ['emphasis', r_emphasis.postProcess],\n // rules for pairs separate '**' into its own text tokens, which may be left unused,\n // rule below merges unused segments back with the rest of the text\n ['fragments_join', r_fragments_join]\n]\n\n/**\n * new ParserInline()\n **/\nfunction ParserInline () {\n /**\n * ParserInline#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of inline rules.\n **/\n this.ruler = new Ruler()\n\n for (let i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1])\n }\n\n /**\n * ParserInline#ruler2 -> Ruler\n *\n * [[Ruler]] instance. Second ruler used for post-processing\n * (e.g. in emphasis-like rules).\n **/\n this.ruler2 = new Ruler()\n\n for (let i = 0; i < _rules2.length; i++) {\n this.ruler2.push(_rules2[i][0], _rules2[i][1])\n }\n}\n\n// Skip single token by running all rules in validation mode;\n// returns `true` if any rule reported success\n//\nParserInline.prototype.skipToken = function (state) {\n const pos = state.pos\n const rules = this.ruler.getRules('')\n const len = rules.length\n const maxNesting = state.md.options.maxNesting\n const cache = state.cache\n\n if (typeof cache[pos] !== 'undefined') {\n state.pos = cache[pos]\n return\n }\n\n let ok = false\n\n if (state.level < maxNesting) {\n for (let i = 0; i < len; i++) {\n // Increment state.level and decrement it later to limit recursion.\n // It's harmless to do here, because no tokens are created. But ideally,\n // we'd need a separate private state variable for this purpose.\n //\n state.level++\n ok = rules[i](state, true)\n state.level--\n\n if (ok) {\n if (pos >= state.pos) { throw new Error(\"inline rule didn't increment state.pos\") }\n break\n }\n }\n } else {\n // Too much nesting, just skip until the end of the paragraph.\n //\n // NOTE: this will cause links to behave incorrectly in the following case,\n // when an amount of `[` is exactly equal to `maxNesting + 1`:\n //\n // [[[[[[[[[[[[[[[[[[[[[foo]()\n //\n // TODO: remove this workaround when CM standard will allow nested links\n // (we can replace it by preventing links from being parsed in\n // validation mode)\n //\n state.pos = state.posMax\n }\n\n if (!ok) { state.pos++ }\n cache[pos] = state.pos\n}\n\n// Generate tokens for input range\n//\nParserInline.prototype.tokenize = function (state) {\n const rules = this.ruler.getRules('')\n const len = rules.length\n const end = state.posMax\n const maxNesting = state.md.options.maxNesting\n\n while (state.pos < end) {\n // Try all possible rules.\n // On success, rule should:\n //\n // - update `state.pos`\n // - update `state.tokens`\n // - return true\n const prevPos = state.pos\n let ok = false\n\n if (state.level < maxNesting) {\n for (let i = 0; i < len; i++) {\n ok = rules[i](state, false)\n if (ok) {\n if (prevPos >= state.pos) { throw new Error(\"inline rule didn't increment state.pos\") }\n break\n }\n }\n }\n\n if (ok) {\n if (state.pos >= end) { break }\n continue\n }\n\n state.pending += state.src[state.pos++]\n }\n\n if (state.pending) {\n state.pushPending()\n }\n}\n\n/**\n * ParserInline.parse(str, md, env, outTokens)\n *\n * Process input string and push inline tokens into `outTokens`\n **/\nParserInline.prototype.parse = function (str, md, env, outTokens) {\n const state = new this.State(str, md, env, outTokens)\n\n this.tokenize(state)\n\n const rules = this.ruler2.getRules('')\n const len = rules.length\n\n for (let i = 0; i < len; i++) {\n rules[i](state)\n }\n}\n\nParserInline.prototype.State = StateInline\n\nexport default ParserInline\n","// Proceess '\\n'\n\nimport { isSpace } from '../common/utils.mjs'\n\nexport default function newline (state, silent) {\n let pos = state.pos\n\n if (state.src.charCodeAt(pos) !== 0x0A/* \\n */) { return false }\n\n const pmax = state.pending.length - 1\n const max = state.posMax\n\n // ' \\n' -> hardbreak\n // Lookup in pending chars is bad practice! Don't copy to other rules!\n // Pending string is stored in concat mode, indexed lookups will cause\n // convertion to flat mode.\n if (!silent) {\n if (pmax >= 0 && state.pending.charCodeAt(pmax) === 0x20) {\n if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 0x20) {\n // Find whitespaces tail of pending chars.\n let ws = pmax - 1\n while (ws >= 1 && state.pending.charCodeAt(ws - 1) === 0x20) ws--\n\n state.pending = state.pending.slice(0, ws)\n state.push('hardbreak', 'br', 0)\n } else {\n state.pending = state.pending.slice(0, -1)\n state.push('softbreak', 'br', 0)\n }\n } else {\n state.push('softbreak', 'br', 0)\n }\n }\n\n pos++\n\n // skip heading spaces for next line\n while (pos < max && isSpace(state.src.charCodeAt(pos))) { pos++ }\n\n state.pos = pos\n return true\n}\n","// Parse backticks\n\nexport default function backtick (state, silent) {\n let pos = state.pos\n const ch = state.src.charCodeAt(pos)\n\n if (ch !== 0x60/* ` */) { return false }\n\n const start = pos\n pos++\n const max = state.posMax\n\n // scan marker length\n while (pos < max && state.src.charCodeAt(pos) === 0x60/* ` */) { pos++ }\n\n const marker = state.src.slice(start, pos)\n const openerLength = marker.length\n\n if (state.backticksScanned && (state.backticks[openerLength] || 0) <= start) {\n if (!silent) state.pending += marker\n state.pos += openerLength\n return true\n }\n\n let matchEnd = pos\n let matchStart\n\n // Nothing found in the cache, scan until the end of the line (or until marker is found)\n while ((matchStart = state.src.indexOf('`', matchEnd)) !== -1) {\n matchEnd = matchStart + 1\n\n // scan marker length\n while (matchEnd < max && state.src.charCodeAt(matchEnd) === 0x60/* ` */) { matchEnd++ }\n\n const closerLength = matchEnd - matchStart\n\n if (closerLength === openerLength) {\n // Found matching closer length.\n if (!silent) {\n const token = state.push('code_inline', 'code', 0)\n token.markup = marker\n token.content = state.src.slice(pos, matchStart)\n .replace(/\\n/g, ' ')\n .replace(/^ (.+) $/, '$1')\n }\n state.pos = matchEnd\n return true\n }\n\n // Some different length found, put it in cache as upper limit of where closer can be found\n state.backticks[closerLength] = matchStart\n }\n\n // Scanned through the end, didn't find anything\n state.backticksScanned = true\n\n if (!silent) state.pending += marker\n state.pos += openerLength\n return true\n}\n","// Process [link]( \"stuff\")\n\nimport { normalizeReference, isSpace } from '../common/utils.mjs'\n\nexport default function link (state, silent) {\n let code, label, res, ref\n let href = ''\n let title = ''\n let start = state.pos\n let parseReference = true\n\n if (state.src.charCodeAt(state.pos) !== 0x5B/* [ */) { return false }\n\n const oldPos = state.pos\n const max = state.posMax\n const labelStart = state.pos + 1\n const labelEnd = state.md.helpers.parseLinkLabel(state, state.pos, true)\n\n // parser failed to find ']', so it's not a valid link\n if (labelEnd < 0) { return false }\n\n let pos = labelEnd + 1\n if (pos < max && state.src.charCodeAt(pos) === 0x28/* ( */) {\n //\n // Inline link\n //\n\n // might have found a valid shortcut link, disable reference parsing\n parseReference = false\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n pos++\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos)\n if (!isSpace(code) && code !== 0x0A) { break }\n }\n if (pos >= max) { return false }\n\n // [link]( \"title\" )\n // ^^^^^^ parsing link destination\n start = pos\n res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax)\n if (res.ok) {\n href = state.md.normalizeLink(res.str)\n if (state.md.validateLink(href)) {\n pos = res.pos\n } else {\n href = ''\n }\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n start = pos\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos)\n if (!isSpace(code) && code !== 0x0A) { break }\n }\n\n // [link]( \"title\" )\n // ^^^^^^^ parsing link title\n res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax)\n if (pos < max && start !== pos && res.ok) {\n title = res.str\n pos = res.pos\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos)\n if (!isSpace(code) && code !== 0x0A) { break }\n }\n }\n }\n\n if (pos >= max || state.src.charCodeAt(pos) !== 0x29/* ) */) {\n // parsing a valid shortcut link failed, fallback to reference\n parseReference = true\n }\n pos++\n }\n\n if (parseReference) {\n //\n // Link reference\n //\n if (typeof state.env.references === 'undefined') { return false }\n\n if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) {\n start = pos + 1\n pos = state.md.helpers.parseLinkLabel(state, pos)\n if (pos >= 0) {\n label = state.src.slice(start, pos++)\n } else {\n pos = labelEnd + 1\n }\n } else {\n pos = labelEnd + 1\n }\n\n // covers label === '' and label === undefined\n // (collapsed reference link and shortcut reference link respectively)\n if (!label) { label = state.src.slice(labelStart, labelEnd) }\n\n ref = state.env.references[normalizeReference(label)]\n if (!ref) {\n state.pos = oldPos\n return false\n }\n href = ref.href\n title = ref.title\n }\n\n //\n // We found the end of the link, and know for a fact it's a valid link;\n // so all that's left to do is to call tokenizer.\n //\n if (!silent) {\n state.pos = labelStart\n state.posMax = labelEnd\n\n const token_o = state.push('link_open', 'a', 1)\n const attrs = [['href', href]]\n token_o.attrs = attrs\n if (title) {\n attrs.push(['title', title])\n }\n\n state.linkLevel++\n state.md.inline.tokenize(state)\n state.linkLevel--\n\n state.push('link_close', 'a', -1)\n }\n\n state.pos = pos\n state.posMax = max\n return true\n}\n","// Process ![image]( \"title\")\n\nimport { normalizeReference, isSpace } from '../common/utils.mjs'\n\nexport default function image (state, silent) {\n let code, content, label, pos, ref, res, title, start\n let href = ''\n const oldPos = state.pos\n const max = state.posMax\n\n if (state.src.charCodeAt(state.pos) !== 0x21/* ! */) { return false }\n if (state.src.charCodeAt(state.pos + 1) !== 0x5B/* [ */) { return false }\n\n const labelStart = state.pos + 2\n const labelEnd = state.md.helpers.parseLinkLabel(state, state.pos + 1, false)\n\n // parser failed to find ']', so it's not a valid link\n if (labelEnd < 0) { return false }\n\n pos = labelEnd + 1\n if (pos < max && state.src.charCodeAt(pos) === 0x28/* ( */) {\n //\n // Inline link\n //\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n pos++\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos)\n if (!isSpace(code) && code !== 0x0A) { break }\n }\n if (pos >= max) { return false }\n\n // [link]( \"title\" )\n // ^^^^^^ parsing link destination\n start = pos\n res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax)\n if (res.ok) {\n href = state.md.normalizeLink(res.str)\n if (state.md.validateLink(href)) {\n pos = res.pos\n } else {\n href = ''\n }\n }\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n start = pos\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos)\n if (!isSpace(code) && code !== 0x0A) { break }\n }\n\n // [link]( \"title\" )\n // ^^^^^^^ parsing link title\n res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax)\n if (pos < max && start !== pos && res.ok) {\n title = res.str\n pos = res.pos\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos)\n if (!isSpace(code) && code !== 0x0A) { break }\n }\n } else {\n title = ''\n }\n\n if (pos >= max || state.src.charCodeAt(pos) !== 0x29/* ) */) {\n state.pos = oldPos\n return false\n }\n pos++\n } else {\n //\n // Link reference\n //\n if (typeof state.env.references === 'undefined') { return false }\n\n if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) {\n start = pos + 1\n pos = state.md.helpers.parseLinkLabel(state, pos)\n if (pos >= 0) {\n label = state.src.slice(start, pos++)\n } else {\n pos = labelEnd + 1\n }\n } else {\n pos = labelEnd + 1\n }\n\n // covers label === '' and label === undefined\n // (collapsed reference link and shortcut reference link respectively)\n if (!label) { label = state.src.slice(labelStart, labelEnd) }\n\n ref = state.env.references[normalizeReference(label)]\n if (!ref) {\n state.pos = oldPos\n return false\n }\n href = ref.href\n title = ref.title\n }\n\n //\n // We found the end of the link, and know for a fact it's a valid link;\n // so all that's left to do is to call tokenizer.\n //\n if (!silent) {\n content = state.src.slice(labelStart, labelEnd)\n\n const tokens = []\n state.md.inline.parse(\n content,\n state.md,\n state.env,\n tokens\n )\n\n const token = state.push('image', 'img', 0)\n const attrs = [['src', href], ['alt', '']]\n token.attrs = attrs\n token.children = tokens\n token.content = content\n\n if (title) {\n attrs.push(['title', title])\n }\n }\n\n state.pos = pos\n state.posMax = max\n return true\n}\n","// Process html tags\n\nimport { HTML_TAG_RE } from '../common/html_re.mjs'\n\nfunction isLinkOpen (str) {\n return /^\\s]/i.test(str)\n}\nfunction isLinkClose (str) {\n return /^<\\/a\\s*>/i.test(str)\n}\n\nfunction isLetter (ch) {\n /* eslint no-bitwise:0 */\n const lc = ch | 0x20 // to lower case\n return (lc >= 0x61/* a */) && (lc <= 0x7a/* z */)\n}\n\nexport default function html_inline (state, silent) {\n if (!state.md.options.html) { return false }\n\n // Check start\n const max = state.posMax\n const pos = state.pos\n if (state.src.charCodeAt(pos) !== 0x3C/* < */ ||\n pos + 2 >= max) {\n return false\n }\n\n // Quick fail on second char\n const ch = state.src.charCodeAt(pos + 1)\n if (ch !== 0x21/* ! */ &&\n ch !== 0x3F/* ? */ &&\n ch !== 0x2F/* / */ &&\n !isLetter(ch)) {\n return false\n }\n\n const match = state.src.slice(pos).match(HTML_TAG_RE)\n if (!match) { return false }\n\n if (!silent) {\n const token = state.push('html_inline', '', 0)\n token.content = match[0]\n\n if (isLinkOpen(token.content)) state.linkLevel++\n if (isLinkClose(token.content)) state.linkLevel--\n }\n state.pos += match[0].length\n return true\n}\n","// Clean up tokens after emphasis and strikethrough postprocessing:\n// merge adjacent text nodes into one and re-calculate all token levels\n//\n// This is necessary because initially emphasis delimiter markers (*, _, ~)\n// are treated as their own separate text tokens. Then emphasis rule either\n// leaves them as text (needed to merge with adjacent text) or turns them\n// into opening/closing tags (which messes up levels inside).\n//\n\nexport default function fragments_join (state) {\n let curr, last\n let level = 0\n const tokens = state.tokens\n const max = state.tokens.length\n\n for (curr = last = 0; curr < max; curr++) {\n // re-calculate levels after emphasis/strikethrough turns some text nodes\n // into opening/closing tags\n if (tokens[curr].nesting < 0) level-- // closing tag\n tokens[curr].level = level\n if (tokens[curr].nesting > 0) level++ // opening tag\n\n if (tokens[curr].type === 'text' &&\n curr + 1 < max &&\n tokens[curr + 1].type === 'text') {\n // collapse two adjacent text nodes\n tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content\n } else {\n if (curr !== last) { tokens[last] = tokens[curr] }\n\n last++\n }\n }\n\n if (curr !== last) {\n tokens.length = last\n }\n}\n","import reFactory from './lib/re.mjs'\n\n//\n// Helpers\n//\n\n// Merge objects\n//\nfunction assign (obj /* from1, from2, from3, ... */) {\n const sources = Array.prototype.slice.call(arguments, 1)\n\n sources.forEach(function (source) {\n if (!source) { return }\n\n Object.keys(source).forEach(function (key) {\n obj[key] = source[key]\n })\n })\n\n return obj\n}\n\nfunction _class (obj) { return Object.prototype.toString.call(obj) }\nfunction isString (obj) { return _class(obj) === '[object String]' }\nfunction isObject (obj) { return _class(obj) === '[object Object]' }\nfunction isRegExp (obj) { return _class(obj) === '[object RegExp]' }\nfunction isFunction (obj) { return _class(obj) === '[object Function]' }\n\nfunction escapeRE (str) { return str.replace(/[.?*+^$[\\]\\\\(){}|-]/g, '\\\\$&') }\n\n//\n\nconst defaultOptions = {\n fuzzyLink: true,\n fuzzyEmail: true,\n fuzzyIP: false\n}\n\nfunction isOptionsObj (obj) {\n return Object.keys(obj || {}).reduce(function (acc, k) {\n /* eslint-disable-next-line no-prototype-builtins */\n return acc || defaultOptions.hasOwnProperty(k)\n }, false)\n}\n\nconst defaultSchemas = {\n 'http:': {\n validate: function (text, pos, self) {\n const tail = text.slice(pos)\n\n if (!self.re.http) {\n // compile lazily, because \"host\"-containing variables can change on tlds update.\n self.re.http = new RegExp(\n '^\\\\/\\\\/' + self.re.src_auth + self.re.src_host_port_strict + self.re.src_path, 'i'\n )\n }\n if (self.re.http.test(tail)) {\n return tail.match(self.re.http)[0].length\n }\n return 0\n }\n },\n 'https:': 'http:',\n 'ftp:': 'http:',\n '//': {\n validate: function (text, pos, self) {\n const tail = text.slice(pos)\n\n if (!self.re.no_http) {\n // compile lazily, because \"host\"-containing variables can change on tlds update.\n self.re.no_http = new RegExp(\n '^' +\n self.re.src_auth +\n // Don't allow single-level domains, because of false positives like '//test'\n // with code comments\n '(?:localhost|(?:(?:' + self.re.src_domain + ')\\\\.)+' + self.re.src_domain_root + ')' +\n self.re.src_port +\n self.re.src_host_terminator +\n self.re.src_path,\n\n 'i'\n )\n }\n\n if (self.re.no_http.test(tail)) {\n // should not be `://` & `///`, that protects from errors in protocol name\n if (pos >= 3 && text[pos - 3] === ':') { return 0 }\n if (pos >= 3 && text[pos - 3] === '/') { return 0 }\n return tail.match(self.re.no_http)[0].length\n }\n return 0\n }\n },\n 'mailto:': {\n validate: function (text, pos, self) {\n const tail = text.slice(pos)\n\n if (!self.re.mailto) {\n self.re.mailto = new RegExp(\n '^' + self.re.src_email_name + '@' + self.re.src_host_strict, 'i'\n )\n }\n if (self.re.mailto.test(tail)) {\n return tail.match(self.re.mailto)[0].length\n }\n return 0\n }\n }\n}\n\n// RE pattern for 2-character tlds (autogenerated by ./support/tlds_2char_gen.js)\n/* eslint-disable-next-line max-len */\nconst tlds_2ch_src_re = 'a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]'\n\n// DON'T try to make PRs with changes. Extend TLDs with LinkifyIt.tlds() instead\nconst tlds_default = 'biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф'.split('|')\n\nfunction resetScanCache (self) {\n self.__index__ = -1\n self.__text_cache__ = ''\n}\n\nfunction createValidator (re) {\n return function (text, pos) {\n const tail = text.slice(pos)\n\n if (re.test(tail)) {\n return tail.match(re)[0].length\n }\n return 0\n }\n}\n\nfunction createNormalizer () {\n return function (match, self) {\n self.normalize(match)\n }\n}\n\n// Schemas compiler. Build regexps.\n//\nfunction compile (self) {\n // Load & clone RE patterns.\n const re = self.re = reFactory(self.__opts__)\n\n // Define dynamic patterns\n const tlds = self.__tlds__.slice()\n\n self.onCompile()\n\n if (!self.__tlds_replaced__) {\n tlds.push(tlds_2ch_src_re)\n }\n tlds.push(re.src_xn)\n\n re.src_tlds = tlds.join('|')\n\n function untpl (tpl) { return tpl.replace('%TLDS%', re.src_tlds) }\n\n re.email_fuzzy = RegExp(untpl(re.tpl_email_fuzzy), 'i')\n re.link_fuzzy = RegExp(untpl(re.tpl_link_fuzzy), 'i')\n re.link_no_ip_fuzzy = RegExp(untpl(re.tpl_link_no_ip_fuzzy), 'i')\n re.host_fuzzy_test = RegExp(untpl(re.tpl_host_fuzzy_test), 'i')\n\n //\n // Compile each schema\n //\n\n const aliases = []\n\n self.__compiled__ = {} // Reset compiled data\n\n function schemaError (name, val) {\n throw new Error('(LinkifyIt) Invalid schema \"' + name + '\": ' + val)\n }\n\n Object.keys(self.__schemas__).forEach(function (name) {\n const val = self.__schemas__[name]\n\n // skip disabled methods\n if (val === null) { return }\n\n const compiled = { validate: null, link: null }\n\n self.__compiled__[name] = compiled\n\n if (isObject(val)) {\n if (isRegExp(val.validate)) {\n compiled.validate = createValidator(val.validate)\n } else if (isFunction(val.validate)) {\n compiled.validate = val.validate\n } else {\n schemaError(name, val)\n }\n\n if (isFunction(val.normalize)) {\n compiled.normalize = val.normalize\n } else if (!val.normalize) {\n compiled.normalize = createNormalizer()\n } else {\n schemaError(name, val)\n }\n\n return\n }\n\n if (isString(val)) {\n aliases.push(name)\n return\n }\n\n schemaError(name, val)\n })\n\n //\n // Compile postponed aliases\n //\n\n aliases.forEach(function (alias) {\n if (!self.__compiled__[self.__schemas__[alias]]) {\n // Silently fail on missed schemas to avoid errons on disable.\n // schemaError(alias, self.__schemas__[alias]);\n return\n }\n\n self.__compiled__[alias].validate =\n self.__compiled__[self.__schemas__[alias]].validate\n self.__compiled__[alias].normalize =\n self.__compiled__[self.__schemas__[alias]].normalize\n })\n\n //\n // Fake record for guessed links\n //\n self.__compiled__[''] = { validate: null, normalize: createNormalizer() }\n\n //\n // Build schema condition\n //\n const slist = Object.keys(self.__compiled__)\n .filter(function (name) {\n // Filter disabled & fake schemas\n return name.length > 0 && self.__compiled__[name]\n })\n .map(escapeRE)\n .join('|')\n // (?!_) cause 1.5x slowdown\n self.re.schema_test = RegExp('(^|(?!_)(?:[><\\uff5c]|' + re.src_ZPCc + '))(' + slist + ')', 'i')\n self.re.schema_search = RegExp('(^|(?!_)(?:[><\\uff5c]|' + re.src_ZPCc + '))(' + slist + ')', 'ig')\n self.re.schema_at_start = RegExp('^' + self.re.schema_search.source, 'i')\n\n self.re.pretest = RegExp(\n '(' + self.re.schema_test.source + ')|(' + self.re.host_fuzzy_test.source + ')|@',\n 'i'\n )\n\n //\n // Cleanup\n //\n\n resetScanCache(self)\n}\n\n/**\n * class Match\n *\n * Match result. Single element of array, returned by [[LinkifyIt#match]]\n **/\nfunction Match (self, shift) {\n const start = self.__index__\n const end = self.__last_index__\n const text = self.__text_cache__.slice(start, end)\n\n /**\n * Match#schema -> String\n *\n * Prefix (protocol) for matched string.\n **/\n this.schema = self.__schema__.toLowerCase()\n /**\n * Match#index -> Number\n *\n * First position of matched string.\n **/\n this.index = start + shift\n /**\n * Match#lastIndex -> Number\n *\n * Next position after matched string.\n **/\n this.lastIndex = end + shift\n /**\n * Match#raw -> String\n *\n * Matched string.\n **/\n this.raw = text\n /**\n * Match#text -> String\n *\n * Notmalized text of matched string.\n **/\n this.text = text\n /**\n * Match#url -> String\n *\n * Normalized url of matched string.\n **/\n this.url = text\n}\n\nfunction createMatch (self, shift) {\n const match = new Match(self, shift)\n\n self.__compiled__[match.schema].normalize(match, self)\n\n return match\n}\n\n/**\n * class LinkifyIt\n **/\n\n/**\n * new LinkifyIt(schemas, options)\n * - schemas (Object): Optional. Additional schemas to validate (prefix/validator)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Creates new linkifier instance with optional additional schemas.\n * Can be called without `new` keyword for convenience.\n *\n * By default understands:\n *\n * - `http(s)://...` , `ftp://...`, `mailto:...` & `//...` links\n * - \"fuzzy\" links and emails (example.com, foo@bar.com).\n *\n * `schemas` is an object, where each key/value describes protocol/rule:\n *\n * - __key__ - link prefix (usually, protocol name with `:` at the end, `skype:`\n * for example). `linkify-it` makes shure that prefix is not preceeded with\n * alphanumeric char and symbols. Only whitespaces and punctuation allowed.\n * - __value__ - rule to check tail after link prefix\n * - _String_ - just alias to existing rule\n * - _Object_\n * - _validate_ - validator function (should return matched length on success),\n * or `RegExp`.\n * - _normalize_ - optional function to normalize text & url of matched result\n * (for example, for @twitter mentions).\n *\n * `options`:\n *\n * - __fuzzyLink__ - recognige URL-s without `http(s):` prefix. Default `true`.\n * - __fuzzyIP__ - allow IPs in fuzzy links above. Can conflict with some texts\n * like version numbers. Default `false`.\n * - __fuzzyEmail__ - recognize emails without `mailto:` prefix.\n *\n **/\nfunction LinkifyIt (schemas, options) {\n if (!(this instanceof LinkifyIt)) {\n return new LinkifyIt(schemas, options)\n }\n\n if (!options) {\n if (isOptionsObj(schemas)) {\n options = schemas\n schemas = {}\n }\n }\n\n this.__opts__ = assign({}, defaultOptions, options)\n\n // Cache last tested result. Used to skip repeating steps on next `match` call.\n this.__index__ = -1\n this.__last_index__ = -1 // Next scan position\n this.__schema__ = ''\n this.__text_cache__ = ''\n\n this.__schemas__ = assign({}, defaultSchemas, schemas)\n this.__compiled__ = {}\n\n this.__tlds__ = tlds_default\n this.__tlds_replaced__ = false\n\n this.re = {}\n\n compile(this)\n}\n\n/** chainable\n * LinkifyIt#add(schema, definition)\n * - schema (String): rule name (fixed pattern prefix)\n * - definition (String|RegExp|Object): schema definition\n *\n * Add new rule definition. See constructor description for details.\n **/\nLinkifyIt.prototype.add = function add (schema, definition) {\n this.__schemas__[schema] = definition\n compile(this)\n return this\n}\n\n/** chainable\n * LinkifyIt#set(options)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Set recognition options for links without schema.\n **/\nLinkifyIt.prototype.set = function set (options) {\n this.__opts__ = assign(this.__opts__, options)\n return this\n}\n\n/**\n * LinkifyIt#test(text) -> Boolean\n *\n * Searches linkifiable pattern and returns `true` on success or `false` on fail.\n **/\nLinkifyIt.prototype.test = function test (text) {\n // Reset scan cache\n this.__text_cache__ = text\n this.__index__ = -1\n\n if (!text.length) { return false }\n\n let m, ml, me, len, shift, next, re, tld_pos, at_pos\n\n // try to scan for link with schema - that's the most simple rule\n if (this.re.schema_test.test(text)) {\n re = this.re.schema_search\n re.lastIndex = 0\n while ((m = re.exec(text)) !== null) {\n len = this.testSchemaAt(text, m[2], re.lastIndex)\n if (len) {\n this.__schema__ = m[2]\n this.__index__ = m.index + m[1].length\n this.__last_index__ = m.index + m[0].length + len\n break\n }\n }\n }\n\n if (this.__opts__.fuzzyLink && this.__compiled__['http:']) {\n // guess schemaless links\n tld_pos = text.search(this.re.host_fuzzy_test)\n if (tld_pos >= 0) {\n // if tld is located after found link - no need to check fuzzy pattern\n if (this.__index__ < 0 || tld_pos < this.__index__) {\n if ((ml = text.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy)) !== null) {\n shift = ml.index + ml[1].length\n\n if (this.__index__ < 0 || shift < this.__index__) {\n this.__schema__ = ''\n this.__index__ = shift\n this.__last_index__ = ml.index + ml[0].length\n }\n }\n }\n }\n }\n\n if (this.__opts__.fuzzyEmail && this.__compiled__['mailto:']) {\n // guess schemaless emails\n at_pos = text.indexOf('@')\n if (at_pos >= 0) {\n // We can't skip this check, because this cases are possible:\n // 192.168.1.1@gmail.com, my.in@example.com\n if ((me = text.match(this.re.email_fuzzy)) !== null) {\n shift = me.index + me[1].length\n next = me.index + me[0].length\n\n if (this.__index__ < 0 || shift < this.__index__ ||\n (shift === this.__index__ && next > this.__last_index__)) {\n this.__schema__ = 'mailto:'\n this.__index__ = shift\n this.__last_index__ = next\n }\n }\n }\n }\n\n return this.__index__ >= 0\n}\n\n/**\n * LinkifyIt#pretest(text) -> Boolean\n *\n * Very quick check, that can give false positives. Returns true if link MAY BE\n * can exists. Can be used for speed optimization, when you need to check that\n * link NOT exists.\n **/\nLinkifyIt.prototype.pretest = function pretest (text) {\n return this.re.pretest.test(text)\n}\n\n/**\n * LinkifyIt#testSchemaAt(text, name, position) -> Number\n * - text (String): text to scan\n * - name (String): rule (schema) name\n * - position (Number): text offset to check from\n *\n * Similar to [[LinkifyIt#test]] but checks only specific protocol tail exactly\n * at given position. Returns length of found pattern (0 on fail).\n **/\nLinkifyIt.prototype.testSchemaAt = function testSchemaAt (text, schema, pos) {\n // If not supported schema check requested - terminate\n if (!this.__compiled__[schema.toLowerCase()]) {\n return 0\n }\n return this.__compiled__[schema.toLowerCase()].validate(text, pos, this)\n}\n\n/**\n * LinkifyIt#match(text) -> Array|null\n *\n * Returns array of found link descriptions or `null` on fail. We strongly\n * recommend to use [[LinkifyIt#test]] first, for best speed.\n *\n * ##### Result match description\n *\n * - __schema__ - link schema, can be empty for fuzzy links, or `//` for\n * protocol-neutral links.\n * - __index__ - offset of matched text\n * - __lastIndex__ - index of next char after mathch end\n * - __raw__ - matched text\n * - __text__ - normalized text\n * - __url__ - link, generated from matched text\n **/\nLinkifyIt.prototype.match = function match (text) {\n const result = []\n let shift = 0\n\n // Try to take previous element from cache, if .test() called before\n if (this.__index__ >= 0 && this.__text_cache__ === text) {\n result.push(createMatch(this, shift))\n shift = this.__last_index__\n }\n\n // Cut head if cache was used\n let tail = shift ? text.slice(shift) : text\n\n // Scan string until end reached\n while (this.test(tail)) {\n result.push(createMatch(this, shift))\n\n tail = tail.slice(this.__last_index__)\n shift += this.__last_index__\n }\n\n if (result.length) {\n return result\n }\n\n return null\n}\n\n/**\n * LinkifyIt#matchAtStart(text) -> Match|null\n *\n * Returns fully-formed (not fuzzy) link if it starts at the beginning\n * of the string, and null otherwise.\n **/\nLinkifyIt.prototype.matchAtStart = function matchAtStart (text) {\n // Reset scan cache\n this.__text_cache__ = text\n this.__index__ = -1\n\n if (!text.length) return null\n\n const m = this.re.schema_at_start.exec(text)\n if (!m) return null\n\n const len = this.testSchemaAt(text, m[2], m[0].length)\n if (!len) return null\n\n this.__schema__ = m[2]\n this.__index__ = m.index + m[1].length\n this.__last_index__ = m.index + m[0].length + len\n\n return createMatch(this, 0)\n}\n\n/** chainable\n * LinkifyIt#tlds(list [, keepOld]) -> this\n * - list (Array): list of tlds\n * - keepOld (Boolean): merge with current list if `true` (`false` by default)\n *\n * Load (or merge) new tlds list. Those are user for fuzzy links (without prefix)\n * to avoid false positives. By default this algorythm used:\n *\n * - hostname with any 2-letter root zones are ok.\n * - biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф\n * are ok.\n * - encoded (`xn--...`) root zones are ok.\n *\n * If list is replaced, then exact match for 2-chars root zones will be checked.\n **/\nLinkifyIt.prototype.tlds = function tlds (list, keepOld) {\n list = Array.isArray(list) ? list : [list]\n\n if (!keepOld) {\n this.__tlds__ = list.slice()\n this.__tlds_replaced__ = true\n compile(this)\n return this\n }\n\n this.__tlds__ = this.__tlds__.concat(list)\n .sort()\n .filter(function (el, idx, arr) {\n return el !== arr[idx - 1]\n })\n .reverse()\n\n compile(this)\n return this\n}\n\n/**\n * LinkifyIt#normalize(match)\n *\n * Default normalizer (if schema does not define it's own).\n **/\nLinkifyIt.prototype.normalize = function normalize (match) {\n // Do minimal possible changes by default. Need to collect feedback prior\n // to move forward https://github.com/markdown-it/linkify-it/issues/1\n\n if (!match.schema) { match.url = 'http://' + match.url }\n\n if (match.schema === 'mailto:' && !/^mailto:/i.test(match.url)) {\n match.url = 'mailto:' + match.url\n }\n}\n\n/**\n * LinkifyIt#onCompile()\n *\n * Override to modify basic RegExp-s.\n **/\nLinkifyIt.prototype.onCompile = function onCompile () {\n}\n\nexport default LinkifyIt\n","import { Any, Cc, Z, P } from 'uc.micro'\n\nexport default function (opts) {\n const re = {}\n opts = opts || {}\n\n re.src_Any = Any.source\n re.src_Cc = Cc.source\n re.src_Z = Z.source\n re.src_P = P.source\n\n // \\p{\\Z\\P\\Cc\\CF} (white spaces + control + format + punctuation)\n re.src_ZPCc = [re.src_Z, re.src_P, re.src_Cc].join('|')\n\n // \\p{\\Z\\Cc} (white spaces + control)\n re.src_ZCc = [re.src_Z, re.src_Cc].join('|')\n\n // Experimental. List of chars, completely prohibited in links\n // because can separate it from other part of text\n const text_separators = '[><\\uff5c]'\n\n // All possible word characters (everything without punctuation, spaces & controls)\n // Defined via punctuation & spaces to save space\n // Should be something like \\p{\\L\\N\\S\\M} (\\w but without `_`)\n re.src_pseudo_letter = '(?:(?!' + text_separators + '|' + re.src_ZPCc + ')' + re.src_Any + ')'\n // The same as abothe but without [0-9]\n // var src_pseudo_letter_non_d = '(?:(?![0-9]|' + src_ZPCc + ')' + src_Any + ')';\n\n re.src_ip4 =\n\n '(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'\n\n // Prohibit any of \"@/[]()\" in user/pass to avoid wrong domain fetch.\n re.src_auth = '(?:(?:(?!' + re.src_ZCc + '|[@/\\\\[\\\\]()]).)+@)?'\n\n re.src_port =\n\n '(?::(?:6(?:[0-4]\\\\d{3}|5(?:[0-4]\\\\d{2}|5(?:[0-2]\\\\d|3[0-5])))|[1-5]?\\\\d{1,4}))?'\n\n re.src_host_terminator =\n\n '(?=$|' + text_separators + '|' + re.src_ZPCc + ')' +\n '(?!' + (opts['---'] ? '-(?!--)|' : '-|') + '_|:\\\\d|\\\\.-|\\\\.(?!$|' + re.src_ZPCc + '))'\n\n re.src_path =\n\n '(?:' +\n '[/?#]' +\n '(?:' +\n '(?!' + re.src_ZCc + '|' + text_separators + '|[()[\\\\]{}.,\"\\'?!\\\\-;]).|' +\n '\\\\[(?:(?!' + re.src_ZCc + '|\\\\]).)*\\\\]|' +\n '\\\\((?:(?!' + re.src_ZCc + '|[)]).)*\\\\)|' +\n '\\\\{(?:(?!' + re.src_ZCc + '|[}]).)*\\\\}|' +\n '\\\\\"(?:(?!' + re.src_ZCc + '|[\"]).)+\\\\\"|' +\n \"\\\\'(?:(?!\" + re.src_ZCc + \"|[']).)+\\\\'|\" +\n\n // allow `I'm_king` if no pair found\n \"\\\\'(?=\" + re.src_pseudo_letter + '|[-])|' +\n\n // google has many dots in \"google search\" links (#66, #81).\n // github has ... in commit range links,\n // Restrict to\n // - english\n // - percent-encoded\n // - parts of file path\n // - params separator\n // until more examples found.\n '\\\\.{2,}[a-zA-Z0-9%/&]|' +\n\n '\\\\.(?!' + re.src_ZCc + '|[.]|$)|' +\n (opts['---']\n ? '\\\\-(?!--(?:[^-]|$))(?:-*)|' // `---` => long dash, terminate\n : '\\\\-+|'\n ) +\n // allow `,,,` in paths\n ',(?!' + re.src_ZCc + '|$)|' +\n\n // allow `;` if not followed by space-like char\n ';(?!' + re.src_ZCc + '|$)|' +\n\n // allow `!!!` in paths, but not at the end\n '\\\\!+(?!' + re.src_ZCc + '|[!]|$)|' +\n\n '\\\\?(?!' + re.src_ZCc + '|[?]|$)' +\n ')+' +\n '|\\\\/' +\n ')?'\n\n // Allow anything in markdown spec, forbid quote (\") at the first position\n // because emails enclosed in quotes are far more common\n re.src_email_name =\n\n '[\\\\-;:&=\\\\+\\\\$,\\\\.a-zA-Z0-9_][\\\\-;:&=\\\\+\\\\$,\\\\\"\\\\.a-zA-Z0-9_]*'\n\n re.src_xn =\n\n 'xn--[a-z0-9\\\\-]{1,59}'\n\n // More to read about domain names\n // http://serverfault.com/questions/638260/\n\n re.src_domain_root =\n\n // Allow letters & digits (http://test1)\n '(?:' +\n re.src_xn +\n '|' +\n re.src_pseudo_letter + '{1,63}' +\n ')'\n\n re.src_domain =\n\n '(?:' +\n re.src_xn +\n '|' +\n '(?:' + re.src_pseudo_letter + ')' +\n '|' +\n '(?:' + re.src_pseudo_letter + '(?:-|' + re.src_pseudo_letter + '){0,61}' + re.src_pseudo_letter + ')' +\n ')'\n\n re.src_host =\n\n '(?:' +\n // Don't need IP check, because digits are already allowed in normal domain names\n // src_ip4 +\n // '|' +\n '(?:(?:(?:' + re.src_domain + ')\\\\.)*' + re.src_domain/* _root */ + ')' +\n ')'\n\n re.tpl_host_fuzzy =\n\n '(?:' +\n re.src_ip4 +\n '|' +\n '(?:(?:(?:' + re.src_domain + ')\\\\.)+(?:%TLDS%))' +\n ')'\n\n re.tpl_host_no_ip_fuzzy =\n\n '(?:(?:(?:' + re.src_domain + ')\\\\.)+(?:%TLDS%))'\n\n re.src_host_strict =\n\n re.src_host + re.src_host_terminator\n\n re.tpl_host_fuzzy_strict =\n\n re.tpl_host_fuzzy + re.src_host_terminator\n\n re.src_host_port_strict =\n\n re.src_host + re.src_port + re.src_host_terminator\n\n re.tpl_host_port_fuzzy_strict =\n\n re.tpl_host_fuzzy + re.src_port + re.src_host_terminator\n\n re.tpl_host_port_no_ip_fuzzy_strict =\n\n re.tpl_host_no_ip_fuzzy + re.src_port + re.src_host_terminator\n\n //\n // Main rules\n //\n\n // Rude test fuzzy links by host, for quick deny\n re.tpl_host_fuzzy_test =\n\n 'localhost|www\\\\.|\\\\.\\\\d{1,3}\\\\.|(?:\\\\.(?:%TLDS%)(?:' + re.src_ZPCc + '|>|$))'\n\n re.tpl_email_fuzzy =\n\n '(^|' + text_separators + '|\"|\\\\(|' + re.src_ZCc + ')' +\n '(' + re.src_email_name + '@' + re.tpl_host_fuzzy_strict + ')'\n\n re.tpl_link_fuzzy =\n // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n // but can start with > (markdown blockquote)\n '(^|(?![.:/\\\\-_@])(?:[$+<=>^`|\\uff5c]|' + re.src_ZPCc + '))' +\n '((?![$+<=>^`|\\uff5c])' + re.tpl_host_port_fuzzy_strict + re.src_path + ')'\n\n re.tpl_link_no_ip_fuzzy =\n // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n // but can start with > (markdown blockquote)\n '(^|(?![.:/\\\\-_@])(?:[$+<=>^`|\\uff5c]|' + re.src_ZPCc + '))' +\n '((?![$+<=>^`|\\uff5c])' + re.tpl_host_port_no_ip_fuzzy_strict + re.src_path + ')'\n\n return re\n}\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7F]/; // Note: U+007F DEL is excluded too.\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, callback) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = callback(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {String} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(domain, callback) {\n\tconst parts = domain.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tdomain = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tdomain = domain.replace(regexSeparators, '\\x2E');\n\tconst labels = domain.split('.');\n\tconst encoded = map(labels, callback).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see \n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = codePoints => String.fromCodePoint(...codePoints);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint >= 0x30 && codePoint < 0x3A) {\n\t\treturn 26 + (codePoint - 0x30);\n\t}\n\tif (codePoint >= 0x41 && codePoint < 0x5B) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint >= 0x61 && codePoint < 0x7B) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tconst oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\t\t\tif (digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tconst inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tconst basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue === n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.3.1',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see \n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport { ucs2decode, ucs2encode, decode, encode, toASCII, toUnicode };\nexport default punycode;\n","// Main parser class\n\nimport * as utils from './common/utils.mjs'\nimport * as helpers from './helpers/index.mjs'\nimport Renderer from './renderer.mjs'\nimport ParserCore from './parser_core.mjs'\nimport ParserBlock from './parser_block.mjs'\nimport ParserInline from './parser_inline.mjs'\nimport LinkifyIt from 'linkify-it'\nimport * as mdurl from 'mdurl'\nimport punycode from 'punycode.js'\n\nimport cfg_default from './presets/default.mjs'\nimport cfg_zero from './presets/zero.mjs'\nimport cfg_commonmark from './presets/commonmark.mjs'\n\nconst config = {\n default: cfg_default,\n zero: cfg_zero,\n commonmark: cfg_commonmark\n}\n\n//\n// This validator can prohibit more than really needed to prevent XSS. It's a\n// tradeoff to keep code simple and to be secure by default.\n//\n// If you need different setup - override validator method as you wish. Or\n// replace it with dummy function and use external sanitizer.\n//\n\nconst BAD_PROTO_RE = /^(vbscript|javascript|file|data):/\nconst GOOD_DATA_RE = /^data:image\\/(gif|png|jpeg|webp);/\n\nfunction validateLink (url) {\n // url should be normalized at this point, and existing entities are decoded\n const str = url.trim().toLowerCase()\n\n return BAD_PROTO_RE.test(str) ? GOOD_DATA_RE.test(str) : true\n}\n\nconst RECODE_HOSTNAME_FOR = ['http:', 'https:', 'mailto:']\n\nfunction normalizeLink (url) {\n const parsed = mdurl.parse(url, true)\n\n if (parsed.hostname) {\n // Encode hostnames in urls like:\n // `http://host/`, `https://host/`, `mailto:user@host`, `//host/`\n //\n // We don't encode unknown schemas, because it's likely that we encode\n // something we shouldn't (e.g. `skype:name` treated as `skype:host`)\n //\n if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {\n try {\n parsed.hostname = punycode.toASCII(parsed.hostname)\n } catch (er) { /**/ }\n }\n }\n\n return mdurl.encode(mdurl.format(parsed))\n}\n\nfunction normalizeLinkText (url) {\n const parsed = mdurl.parse(url, true)\n\n if (parsed.hostname) {\n // Encode hostnames in urls like:\n // `http://host/`, `https://host/`, `mailto:user@host`, `//host/`\n //\n // We don't encode unknown schemas, because it's likely that we encode\n // something we shouldn't (e.g. `skype:name` treated as `skype:host`)\n //\n if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {\n try {\n parsed.hostname = punycode.toUnicode(parsed.hostname)\n } catch (er) { /**/ }\n }\n }\n\n // add '%' to exclude list because of https://github.com/markdown-it/markdown-it/issues/720\n return mdurl.decode(mdurl.format(parsed), mdurl.decode.defaultChars + '%')\n}\n\n/**\n * class MarkdownIt\n *\n * Main parser/renderer class.\n *\n * ##### Usage\n *\n * ```javascript\n * // node.js, \"classic\" way:\n * var MarkdownIt = require('markdown-it'),\n * md = new MarkdownIt();\n * var result = md.render('# markdown-it rulezz!');\n *\n * // node.js, the same, but with sugar:\n * var md = require('markdown-it')();\n * var result = md.render('# markdown-it rulezz!');\n *\n * // browser without AMD, added to \"window\" on script load\n * // Note, there are no dash.\n * var md = window.markdownit();\n * var result = md.render('# markdown-it rulezz!');\n * ```\n *\n * Single line rendering, without paragraph wrap:\n *\n * ```javascript\n * var md = require('markdown-it')();\n * var result = md.renderInline('__markdown-it__ rulezz!');\n * ```\n **/\n\n/**\n * new MarkdownIt([presetName, options])\n * - presetName (String): optional, `commonmark` / `zero`\n * - options (Object)\n *\n * Creates parser instanse with given config. Can be called without `new`.\n *\n * ##### presetName\n *\n * MarkdownIt provides named presets as a convenience to quickly\n * enable/disable active syntax rules and options for common use cases.\n *\n * - [\"commonmark\"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/commonmark.mjs) -\n * configures parser to strict [CommonMark](http://commonmark.org/) mode.\n * - [default](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/default.mjs) -\n * similar to GFM, used when no preset name given. Enables all available rules,\n * but still without html, typographer & autolinker.\n * - [\"zero\"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/zero.mjs) -\n * all rules disabled. Useful to quickly setup your config via `.enable()`.\n * For example, when you need only `bold` and `italic` markup and nothing else.\n *\n * ##### options:\n *\n * - __html__ - `false`. Set `true` to enable HTML tags in source. Be careful!\n * That's not safe! You may need external sanitizer to protect output from XSS.\n * It's better to extend features via plugins, instead of enabling HTML.\n * - __xhtmlOut__ - `false`. Set `true` to add '/' when closing single tags\n * (`
`). This is needed only for full CommonMark compatibility. In real\n * world you will need HTML output.\n * - __breaks__ - `false`. Set `true` to convert `\\n` in paragraphs into `
`.\n * - __langPrefix__ - `language-`. CSS language class prefix for fenced blocks.\n * Can be useful for external highlighters.\n * - __linkify__ - `false`. Set `true` to autoconvert URL-like text to links.\n * - __typographer__ - `false`. Set `true` to enable [some language-neutral\n * replacement](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/replacements.mjs) +\n * quotes beautification (smartquotes).\n * - __quotes__ - `“”‘’`, String or Array. Double + single quotes replacement\n * pairs, when typographer enabled and smartquotes on. For example, you can\n * use `'«»„“'` for Russian, `'„“‚‘'` for German, and\n * `['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›']` for French (including nbsp).\n * - __highlight__ - `null`. Highlighter function for fenced code blocks.\n * Highlighter `function (str, lang)` should return escaped HTML. It can also\n * return empty string if the source was not changed and should be escaped\n * externaly. If result starts with ` or ``):\n *\n * ```javascript\n * var hljs = require('highlight.js') // https://highlightjs.org/\n *\n * // Actual default values\n * var md = require('markdown-it')({\n * highlight: function (str, lang) {\n * if (lang && hljs.getLanguage(lang)) {\n * try {\n * return '
' +\n *                hljs.highlight(str, { language: lang, ignoreIllegals: true }).value +\n *                '
';\n * } catch (__) {}\n * }\n *\n * return '
' + md.utils.escapeHtml(str) + '
';\n * }\n * });\n * ```\n *\n **/\nfunction MarkdownIt (presetName, options) {\n if (!(this instanceof MarkdownIt)) {\n return new MarkdownIt(presetName, options)\n }\n\n if (!options) {\n if (!utils.isString(presetName)) {\n options = presetName || {}\n presetName = 'default'\n }\n }\n\n /**\n * MarkdownIt#inline -> ParserInline\n *\n * Instance of [[ParserInline]]. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n this.inline = new ParserInline()\n\n /**\n * MarkdownIt#block -> ParserBlock\n *\n * Instance of [[ParserBlock]]. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n this.block = new ParserBlock()\n\n /**\n * MarkdownIt#core -> Core\n *\n * Instance of [[Core]] chain executor. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n this.core = new ParserCore()\n\n /**\n * MarkdownIt#renderer -> Renderer\n *\n * Instance of [[Renderer]]. Use it to modify output look. Or to add rendering\n * rules for new token types, generated by plugins.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * function myToken(tokens, idx, options, env, self) {\n * //...\n * return result;\n * };\n *\n * md.renderer.rules['my_token'] = myToken\n * ```\n *\n * See [[Renderer]] docs and [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.mjs).\n **/\n this.renderer = new Renderer()\n\n /**\n * MarkdownIt#linkify -> LinkifyIt\n *\n * [linkify-it](https://github.com/markdown-it/linkify-it) instance.\n * Used by [linkify](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/linkify.mjs)\n * rule.\n **/\n this.linkify = new LinkifyIt()\n\n /**\n * MarkdownIt#validateLink(url) -> Boolean\n *\n * Link validation function. CommonMark allows too much in links. By default\n * we disable `javascript:`, `vbscript:`, `file:` schemas, and almost all `data:...` schemas\n * except some embedded image types.\n *\n * You can change this behaviour:\n *\n * ```javascript\n * var md = require('markdown-it')();\n * // enable everything\n * md.validateLink = function () { return true; }\n * ```\n **/\n this.validateLink = validateLink\n\n /**\n * MarkdownIt#normalizeLink(url) -> String\n *\n * Function used to encode link url to a machine-readable format,\n * which includes url-encoding, punycode, etc.\n **/\n this.normalizeLink = normalizeLink\n\n /**\n * MarkdownIt#normalizeLinkText(url) -> String\n *\n * Function used to decode link url to a human-readable format`\n **/\n this.normalizeLinkText = normalizeLinkText\n\n // Expose utils & helpers for easy acces from plugins\n\n /**\n * MarkdownIt#utils -> utils\n *\n * Assorted utility functions, useful to write plugins. See details\n * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/common/utils.mjs).\n **/\n this.utils = utils\n\n /**\n * MarkdownIt#helpers -> helpers\n *\n * Link components parser functions, useful to write plugins. See details\n * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/helpers).\n **/\n this.helpers = utils.assign({}, helpers)\n\n this.options = {}\n this.configure(presetName)\n\n if (options) { this.set(options) }\n}\n\n/** chainable\n * MarkdownIt.set(options)\n *\n * Set parser options (in the same format as in constructor). Probably, you\n * will never need it, but you can change options after constructor call.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')()\n * .set({ html: true, breaks: true })\n * .set({ typographer, true });\n * ```\n *\n * __Note:__ To achieve the best possible performance, don't modify a\n * `markdown-it` instance options on the fly. If you need multiple configurations\n * it's best to create multiple instances and initialize each with separate\n * config.\n **/\nMarkdownIt.prototype.set = function (options) {\n utils.assign(this.options, options)\n return this\n}\n\n/** chainable, internal\n * MarkdownIt.configure(presets)\n *\n * Batch load of all options and compenent settings. This is internal method,\n * and you probably will not need it. But if you will - see available presets\n * and data structure [here](https://github.com/markdown-it/markdown-it/tree/master/lib/presets)\n *\n * We strongly recommend to use presets instead of direct config loads. That\n * will give better compatibility with next versions.\n **/\nMarkdownIt.prototype.configure = function (presets) {\n const self = this\n\n if (utils.isString(presets)) {\n const presetName = presets\n presets = config[presetName]\n if (!presets) { throw new Error('Wrong `markdown-it` preset \"' + presetName + '\", check name') }\n }\n\n if (!presets) { throw new Error('Wrong `markdown-it` preset, can\\'t be empty') }\n\n if (presets.options) { self.set(presets.options) }\n\n if (presets.components) {\n Object.keys(presets.components).forEach(function (name) {\n if (presets.components[name].rules) {\n self[name].ruler.enableOnly(presets.components[name].rules)\n }\n if (presets.components[name].rules2) {\n self[name].ruler2.enableOnly(presets.components[name].rules2)\n }\n })\n }\n return this\n}\n\n/** chainable\n * MarkdownIt.enable(list, ignoreInvalid)\n * - list (String|Array): rule name or list of rule names to enable\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable list or rules. It will automatically find appropriate components,\n * containing rules with given names. If rule not found, and `ignoreInvalid`\n * not set - throws exception.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')()\n * .enable(['sub', 'sup'])\n * .disable('smartquotes');\n * ```\n **/\nMarkdownIt.prototype.enable = function (list, ignoreInvalid) {\n let result = []\n\n if (!Array.isArray(list)) { list = [list] }\n\n ['core', 'block', 'inline'].forEach(function (chain) {\n result = result.concat(this[chain].ruler.enable(list, true))\n }, this)\n\n result = result.concat(this.inline.ruler2.enable(list, true))\n\n const missed = list.filter(function (name) { return result.indexOf(name) < 0 })\n\n if (missed.length && !ignoreInvalid) {\n throw new Error('MarkdownIt. Failed to enable unknown rule(s): ' + missed)\n }\n\n return this\n}\n\n/** chainable\n * MarkdownIt.disable(list, ignoreInvalid)\n * - list (String|Array): rule name or list of rule names to disable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * The same as [[MarkdownIt.enable]], but turn specified rules off.\n **/\nMarkdownIt.prototype.disable = function (list, ignoreInvalid) {\n let result = []\n\n if (!Array.isArray(list)) { list = [list] }\n\n ['core', 'block', 'inline'].forEach(function (chain) {\n result = result.concat(this[chain].ruler.disable(list, true))\n }, this)\n\n result = result.concat(this.inline.ruler2.disable(list, true))\n\n const missed = list.filter(function (name) { return result.indexOf(name) < 0 })\n\n if (missed.length && !ignoreInvalid) {\n throw new Error('MarkdownIt. Failed to disable unknown rule(s): ' + missed)\n }\n return this\n}\n\n/** chainable\n * MarkdownIt.use(plugin, params)\n *\n * Load specified plugin with given params into current parser instance.\n * It's just a sugar to call `plugin(md, params)` with curring.\n *\n * ##### Example\n *\n * ```javascript\n * var iterator = require('markdown-it-for-inline');\n * var md = require('markdown-it')()\n * .use(iterator, 'foo_replace', 'text', function (tokens, idx) {\n * tokens[idx].content = tokens[idx].content.replace(/foo/g, 'bar');\n * });\n * ```\n **/\nMarkdownIt.prototype.use = function (plugin /*, params, ... */) {\n const args = [this].concat(Array.prototype.slice.call(arguments, 1))\n plugin.apply(plugin, args)\n return this\n}\n\n/** internal\n * MarkdownIt.parse(src, env) -> Array\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Parse input string and return list of block tokens (special token type\n * \"inline\" will contain list of inline tokens). You should not call this\n * method directly, until you write custom renderer (for example, to produce\n * AST).\n *\n * `env` is used to pass data between \"distributed\" rules and return additional\n * metadata like reference info, needed for the renderer. It also can be used to\n * inject data in specific cases. Usually, you will be ok to pass `{}`,\n * and then pass updated object to renderer.\n **/\nMarkdownIt.prototype.parse = function (src, env) {\n if (typeof src !== 'string') {\n throw new Error('Input data should be a String')\n }\n\n const state = new this.core.State(src, this, env)\n\n this.core.process(state)\n\n return state.tokens\n}\n\n/**\n * MarkdownIt.render(src [, env]) -> String\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Render markdown string into html. It does all magic for you :).\n *\n * `env` can be used to inject additional metadata (`{}` by default).\n * But you will not need it with high probability. See also comment\n * in [[MarkdownIt.parse]].\n **/\nMarkdownIt.prototype.render = function (src, env) {\n env = env || {}\n\n return this.renderer.render(this.parse(src, env), this.options, env)\n}\n\n/** internal\n * MarkdownIt.parseInline(src, env) -> Array\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * The same as [[MarkdownIt.parse]] but skip all block rules. It returns the\n * block tokens list with the single `inline` element, containing parsed inline\n * tokens in `children` property. Also updates `env` object.\n **/\nMarkdownIt.prototype.parseInline = function (src, env) {\n const state = new this.core.State(src, this, env)\n\n state.inlineMode = true\n this.core.process(state)\n\n return state.tokens\n}\n\n/**\n * MarkdownIt.renderInline(src [, env]) -> String\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Similar to [[MarkdownIt.render]] but for single paragraph content. Result\n * will NOT be wrapped into `

` tags.\n **/\nMarkdownIt.prototype.renderInline = function (src, env) {\n env = env || {}\n\n return this.renderer.render(this.parseInline(src, env), this.options, env)\n}\n\nexport default MarkdownIt\n","// markdown-it default options\n\nexport default {\n options: {\n // Enable HTML tags in source\n html: false,\n\n // Use '/' to close single tags (
)\n xhtmlOut: false,\n\n // Convert '\\n' in paragraphs into
\n breaks: false,\n\n // CSS language prefix for fenced blocks\n langPrefix: 'language-',\n\n // autoconvert URL-like texts to links\n linkify: false,\n\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: '\\u201c\\u201d\\u2018\\u2019', /* “”‘’ */\n\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with )\n xhtmlOut: false,\n\n // Convert '\\n' in paragraphs into
\n breaks: false,\n\n // CSS language prefix for fenced blocks\n langPrefix: 'language-',\n\n // autoconvert URL-like texts to links\n linkify: false,\n\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: '\\u201c\\u201d\\u2018\\u2019', /* “”‘’ */\n\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with )\n xhtmlOut: true,\n\n // Convert '\\n' in paragraphs into
\n breaks: false,\n\n // CSS language prefix for fenced blocks\n langPrefix: 'language-',\n\n // autoconvert URL-like texts to links\n linkify: false,\n\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: '\\u201c\\u201d\\u2018\\u2019', /* “”‘’ */\n\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with {\r\n return (intToPad < 10 ? \"0\" : \"\") + intToPad;\r\n};\r\n\r\nconst formatDateTime = value => {\r\n if (/^([0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2})$/.test(value)) {\r\n return value;\r\n }\r\n else if (value) {\r\n const date = new Date(value);\r\n\r\n const year = date.getFullYear(),\r\n month = padZero(date.getMonth() + 1), // months are zero indexed\r\n day = padZero(date.getDate()),\r\n hour = padZero(date.getHours()),\r\n minute = padZero(date.getMinutes()),\r\n seconds = padZero(date.getSeconds());\r\n\r\n return year + \"-\" + month + \"-\" + day + \" \" + hour + \":\" + minute + \":\" + seconds;\r\n }\r\n\r\n return \"\";\r\n}\r\n\r\nconst formatDateTimeToDate = (value) => {\r\n if (/^([0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2})$/.test(value)) {\r\n return value;\r\n }\r\n else if (value) {\r\n const date = new Date(value);\r\n\r\n const year = date.getFullYear(),\r\n month = padZero(date.getMonth() + 1), // months are zero indexed\r\n day = padZero(date.getDate())\r\n\r\n return year + \"-\" + month + \"-\" + day;\r\n }\r\n\r\n return \"\";\r\n}\r\n\r\nexport { formatDateTime, formatDateTimeToDate }\r\n","function cloneKendoDataSource(grid) {\r\n return new kendo.data.DataSource({\r\n transport: {\r\n read: {\r\n url: grid.dataSource.options.transport.read.url,\r\n contentType: \"application/json\",\r\n type: \"POST\",\r\n data: {\r\n page: 1,\r\n pageSize: grid.dataSource.total(),\r\n selected: grid.selectedKeyNames(),\r\n filter: grid.dataSource.filter(),\r\n skip: 0,\r\n take: grid.dataSource.total()\r\n }\r\n },\r\n parameterMap: function (options) {\r\n return kendo.stringify(options);\r\n }\r\n },\r\n schema: {\r\n data: \"data\",\r\n total: \"total\",\r\n model: {\r\n id: \"id\"\r\n }\r\n }\r\n });\r\n}\r\n\r\nfunction readFromClonedKendoDataSource(grid, callback) {\r\n window.GeneralUtilities.loading(true);\r\n const dataSource = cloneKendoDataSource(grid);\r\n dataSource.read().then(() => {\r\n window.GeneralUtilities.loading(false);\r\n if (callback) {\r\n const allItems = dataSource.view();\r\n const selectedIds = dataSource.options.transport.read.data.selected;\r\n const selectedItems = [];\r\n selectedIds.forEach(function (number) {\r\n allItems.forEach(item => {\r\n if (number === item.id) {\r\n selectedItems.push(item)\r\n }\r\n })\r\n });\r\n callback(selectedItems, selectedIds);\r\n };\r\n });\r\n}\r\n\r\nfunction setColumnTemplate(column, template) {\r\n const modifiedColumn = structuredClone(column)\r\n modifiedColumn.template = template;\r\n\r\n return modifiedColumn;\r\n}\r\n\r\n//TODO: Should be moved outside of grid-utils, since is used in Actionbar.js which doesn't use kendogrid and doesn't include \r\nfunction debounce(fn, wait) {\r\n let timer;\r\n return function (...args) {\r\n if (timer) {\r\n clearTimeout(timer); // clear any pre-existing timer\r\n }\r\n const context = this; // get the current context\r\n timer = setTimeout(() => {\r\n fn.apply(context, args); // call the function if time expires\r\n }, wait);\r\n }\r\n}\r\n\r\nfunction getSubMemberName(memberPath){\r\n\r\n // If the member path is using the pattern object.member (seperated by a dot), simply return the the member \r\n if (memberPath.indexOf(\".\") > -1){\r\n return memberPath.split(\".\")[1];\r\n }\r\n\r\n // Extract a sub property name based on a input string => object[\"member\"] where \"member\" is returned\r\n const matches = memberPath.match(/\\[\"([^\"]+)\"\\]/);\r\n\r\n if (matches.length > 0)\r\n return matches[1];\r\n\r\n return undefined;\r\n}\r\n\r\nasync function encodeAndCompressToHash(objectToHash) {\r\n const stringToHash = JSON.stringify(objectToHash);\r\n const stream = new Blob([stringToHash], { type: \"application/json\" }).stream();\r\n const compressedReadableStream = stream.pipeThrough(new CompressionStream(\"gzip\"));\r\n const compressedResponse = new Response(compressedReadableStream);\r\n const blob = await compressedResponse.blob();\r\n const buffer = await blob.arrayBuffer();\r\n const compressedData = btoa(String.fromCharCode(...new Uint8Array(buffer)));\r\n\r\n return encodeURIComponent(compressedData);\r\n}\r\n\r\nasync function decodeAndDecompressFromHash(encodedHash) {\r\n const stream = new Blob([b64decode(decodeURIComponent(encodedHash))], { type: \"application/json\" }).stream();\r\n const compressedReadableStream = stream.pipeThrough(new DecompressionStream(\"gzip\"));\r\n const resp = new Response(compressedReadableStream);\r\n const blob = await resp.blob();\r\n return JSON.parse(await blob.text());\r\n}\r\n\r\nfunction b64decode(str) {\r\n const binary_string = atob(str);\r\n const len = binary_string.length;\r\n const bytes = new Uint8Array(new ArrayBuffer(len));\r\n for (let i = 0; i < len; i++) {\r\n bytes[i] = binary_string.charCodeAt(i);\r\n }\r\n return bytes;\r\n}\r\n\r\nexport { cloneKendoDataSource, readFromClonedKendoDataSource, setColumnTemplate, debounce, getSubMemberName, encodeAndCompressToHash, decodeAndDecompressFromHash };\r\n","function generateQrCodes(selectedItems, endpoint) {\r\n const container = $(\".qr-codes-container\");\r\n container.empty();\r\n selectedItems.sort(sortCustomerNames);\r\n\r\n selectedItems.forEach((item, index) => {\r\n const qrCodeContainer =\r\n \"

\" +\r\n \"
\" +\r\n (item.customerName !== undefined ? \"
Customer: \" + addNewLines(item.customerName) + \"
\" : \"\") +\r\n \"
S/N: \" + addNewLines(item.serialNumber) + \"
\" +\r\n \"
Model: \" + addNewLines(item.assetName) + \"
\";\r\n \"
\"\r\n\r\n container.append(qrCodeContainer);\r\n\r\n $(\"#qr-\" + index).kendoQRCode({\r\n value: window.location.origin + \"/\" + window.preLoadedData.AccountId + \"/MeterReadings/\" + endpoint + \"?id=\" + item.id,\r\n errorCorrection: \"Q\",\r\n encoding: \"UTF_8\",\r\n size: 140\r\n }); \r\n\r\n const maxCodesPerPage = 6;\r\n const reachedMaxOnPage = (index + 1) % maxCodesPerPage == 0;\r\n if (reachedMaxOnPage && selectedItems.length > maxCodesPerPage) {\r\n container.append(\"
\");\r\n }\r\n });\r\n}\r\n\r\nfunction sortCustomerNames(first, second) {\r\n if (first.customerName < second.customerName)\r\n return -1;\r\n if (first.customerName > second.customerName)\r\n return 1;\r\n return 0;\r\n}\r\n\r\nfunction addNewLines(text) {\r\n if (text.length > 25) {\r\n text = text.replace(/(.{20})/g, placeBreakpoint);\r\n }\r\n\r\n return text;\r\n}\r\n\r\nfunction placeBreakpoint(str, group1, group2) {\r\n return group1 + '
';\r\n}\r\n\r\nexport { generateQrCodes }","// ASP.NET JSON request default limit 1000\r\nfunction splitToParts(arr, bulkSize = 500) {\r\n const parts = [];\r\n for (let i = 0; i < Math.ceil(arr.length / bulkSize); i++) {\r\n parts.push(arr.slice(i * bulkSize, (i + 1) * bulkSize));\r\n }\r\n return parts;\r\n}\r\n\r\nfunction fetchJson(uri) {\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n url: uri,\r\n contentType: 'application/json',\r\n dataType: 'json',\r\n type: 'GET',\r\n success: function (response) {\r\n resolve(response);\r\n },\r\n error: function (error) {\r\n reject(error);\r\n },\r\n })\r\n });\r\n}\r\n\r\nexport { splitToParts, fetchJson }","const dllEmail = {\r\n getMessage(field) {\r\n return `The ${field} must be a valid DLL email`;\r\n },\r\n validate(value) {\r\n const dllDomains = [\r\n \"dllgroup.com\",\r\n \"delagelanden.com\",\r\n \"leasedirect.com\"\r\n ];\r\n\r\n const dllDomainRegExp = '^[A-Za-z0-9._%+-]+@(' + dllDomains.join('|') + ')$';\r\n return RegExp(dllDomainRegExp).test(value);\r\n }\r\n};\r\n\r\nexport { dllEmail }","import Vue from 'vue'\r\nimport VeeValidate from \"vee-validate\"\r\nimport { GridInstaller } from '@progress/kendo-grid-vue-wrapper'\r\nimport \"../Grid/Grid.less\"\r\nimport axios from \"axios\"\r\n\r\nif (document.getElementById('vue-upload-status-overview')) {\r\n const actionbar = require(\"../Actionbar/Actionbar.js\");\r\n const alerts = require(\"../Alerts/Alerts.js\");\r\n \r\n Vue.use(GridInstaller);\r\n Vue.use(VeeValidate);\r\n\r\n const pagesizesession = \"pagesize\";\r\n let pagesize = sessionStorage.getItem(pagesizesession);\r\n if (!pagesize) {\r\n pagesize = 20;\r\n }\r\n new Vue({\r\n el: '#vue-upload-status-overview',\r\n components: {},\r\n data: function () {\r\n return {\r\n GridConfiguration: window.preLoadedData.GridConfiguration,\r\n dataSource: {\r\n data: [],\r\n transport: {\r\n read: {\r\n url: \"/UploadStatus/List\", \r\n contentType: \"application/json\",\r\n type: \"POST\"\r\n },\r\n parameterMap: function (options) {\r\n return kendo.stringify(options);\r\n }\r\n },\r\n serverPaging: true,\r\n serverFiltering: true,\r\n serverSorting: true,\r\n pageSize: pagesize,\r\n schema: {\r\n data: \"data\",\r\n total: \"total\"\r\n }\r\n },\r\n pageable: {\r\n buttonCount: 3,\r\n info: true,\r\n type: 'numeric',\r\n pageSizes: [10, 20, 30, 50],\r\n previousNext: true\r\n },\r\n columns: {},\r\n actionbar: window.preLoadedData.Actionbar,\r\n\r\n search: {\r\n visible: true\r\n },\r\n selectedAssets: [],\r\n alerts: []\r\n };\r\n },\r\n created: function () {\r\n this.loadColumns();\r\n\r\n this.actionbar.searchVisible = true;\r\n },\r\n mounted: function () {\r\n },\r\n methods: {\r\n addAlert: function (event) {\r\n this.alerts.push(event);\r\n },\r\n clearAlert: function (index) {\r\n this.alerts.splice(index, 1);\r\n },\r\n loadColumns: function (e) {\r\n this.columns = [\r\n { 'field': 'uploadedon', 'title': 'Uploaded on', 'filterable': false, 'width': '10%' },\r\n { 'field': 'filename', 'title': 'File name', 'filterable': false, 'width': '20%' },\r\n { 'field': 'assetsprocessed', 'title': 'Assets processed', 'filterable': false, 'width': '15%' },\r\n { 'field': 'assetsfailed', 'title': 'Assets Failed', 'filterable': false, 'width': '15%' },\r\n { 'field': 'status', 'title': 'Status', 'filterable': false, 'template': \"# if (status=='success') { # # } else { # # } #\" , 'width': '15%' }\r\n ]\r\n\r\n let rowactions = '';\r\n\r\n rowactions += \"# if (status=='failed') { #
# } #\";\r\n rowactions += \"# if (status=='failed') { # # } #\";\r\n if (rowactions != '') {\r\n this.columns.push({ 'title': ' ', 'filterable': false, 'template': rowactions, 'width': '5%' });\r\n }\r\n },\r\n addTooltip: function addTooltipToTableHeaders(grid) {\r\n grid.element[0].querySelectorAll(\".k-header\").forEach(element => {\r\n const title = $(element).data(\"title\");\r\n\r\n if (!/<[a-z\\][\\s\\S]*>/i.test(title)) {\r\n\r\n $(element).attr('title', title);\r\n }\r\n });\r\n },\r\n actionbarSearch: function (e) {\r\n const grid = this.$refs.grid.kendoWidget();\r\n let filter = {};\r\n if (e !== null && e !== '') {\r\n filter = { logic: 'or', filters: [] };\r\n grid.columns.forEach(function (x) {\r\n if (x.field) {\r\n filter.filters.push({\r\n field: x.field,\r\n operator: 'contains',\r\n value: e.trim()\r\n });\r\n }\r\n });\r\n } \r\n grid.dataSource.filter(filter);\r\n },\r\n save: function (event) {\r\n this.alert = \"\";\r\n },\r\n gridOnDatabound: function (e) {\r\n const _this = this;\r\n const grid = this.$refs.grid.kendoWidget();\r\n grid.element.unbind('dblclick');\r\n\r\n grid.element.on('dblclick', 'tbody tr[data-uid]',\r\n function (e) {\r\n e.preventDefault();\r\n const upload = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n if (upload.uploadid !== null) {\r\n window.open(\"/UploadStatus/DownloadCorrectedFile?uploadId=\" + upload.uploadid, \"_blank\");\r\n }\r\n });\r\n grid.element.on('click', '.anchor-download',\r\n function (e) {\r\n e.preventDefault();\r\n const upload = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n window.open(\"/UploadStatus/DownloadCorrectedFile?uploadId=\" + upload.uploadid, \"_blank\");\r\n });\r\n grid.element.on('click', '.anchor-resolve',\r\n function (e) {\r\n e.preventDefault();\r\n const upload = grid.dataItem($(this).closest(\"tr[data-uid\"));\r\n axios.post(\"/UploadStatus/Resolve?notificationId=\" + upload.notificationId)\r\n .then((response) => {\r\n if (response.data.success) {\r\n location.reload();\r\n } else {\r\n _this.addAlert(\r\n {\r\n \"message\": `Could not resolve upload: ${response.data.data}`,\r\n \"isSuccess\": false\r\n });\r\n }\r\n }).catch(error => {\r\n _this.addAlert(\r\n {\r\n \"message\": 'Could not resolve upload due to a server error',\r\n \"isSuccess\": false\r\n });\r\n });\r\n });\r\n\r\n this.addTooltip(grid);\r\n }\r\n }\r\n });\r\n $('.k-header').dblclick(function (e) {\r\n if (e.offsetY > $(this).outerHeight() - 2) {\r\n this.width = getTextWidth(this.textContent, this.font);\r\n //get column number\r\n const colNr = this.getAttribute(\"data-index\");\r\n //select column\r\n //add search in class k-grid-content\r\n const gridCols = document.getElementById(\"upload-status-overview-grid\").getElementsByClassName(\"k-grid-content\")[0].querySelector(\"colgroup\").childNodes;\r\n gridCols[colNr].width = $(this).outerWidth();\r\n }\r\n })\r\n\r\n function getTextWidth(text, font) {\r\n // re-use canvas object for better performance\r\n const canvas = getTextWidth.canvas || (getTextWidth.canvas = document.createElement(\"canvas\"));\r\n const context = canvas.getContext(\"2d\");\r\n context.font = font;\r\n const metrics = context.measureText(text);\r\n //add space for the filter and arroww\r\n const tableIcons = 80;\r\n const total = metrics.width + tableIcons;\r\n return total;\r\n }\r\n const pageSizeDropDownList = document.getElementsByClassName('k-pager-sizes')[0].querySelector(\"[data-role=dropdownlist]\");\r\n pageSizeDropDownList.onchange = function () {\r\n sessionStorage.setItem(pagesizesession, this.value);\r\n };\r\n}","/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

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

fred, barney, & pebbles

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