{"version":3,"file":"main.js","mappings":";;;;;;;;;;;;;;;;;AACsD;AAEqB;;;;AAKpE,MAAM,SAAS;IACrB,YAAoB,MAAc,EAAU,SAA2B;QAAnD,WAAM,GAAN,MAAM,CAAQ;QAAU,cAAS,GAAT,SAAS,CAAkB;IAAG,CAAC;IAE3E,WAAW;QACV,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;YAC3B,OAAO,IAAI,CAAC;SACZ;QAED,0CAA0C;QAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjC,OAAO,KAAK,CAAC;IACd,CAAC;IAED,eAAe;QACd,OAAO,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,oGAAsC,CAAC,CAAC;IACzE,CAAC;;kEAfW,SAAS;0GAAT,SAAS,WAAT,SAAS,mBAFT,MAAM;;;;;;;;;;;;;;;;;;;ACNU;AACE;;;;;;;;;;;;;;;;;;;;ACE4C;;;;;AAMpE,MAAM,WAAW;IAEvB,YAAoB,SAA2B,EACtC,MAAqB,EACrB,qBAA4C;QAFjC,cAAS,GAAT,SAAS,CAAkB;QACtC,WAAM,GAAN,MAAM,CAAe;QACrB,0BAAqB,GAArB,qBAAqB,CAAuB;IACjD,CAAC;IAEL,WAAW;QACV,2DAA2D;QAC3D,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;YAC3B,OAAO,IAAI,CAAC;SACZ;QAED,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;YAC3B,OAAO,KAAK,CAAC;SACb;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAED,eAAe;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CAAC;QAEpD,IAAI,KAAK,EAAE;YACV,IAAI;gBACH,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;oBACzC,OAAO,KAAK,CAAC;iBACb;aACD;YAAC,OAAO,CAAC,EAAE;gBACX,OAAO,KAAK,CAAC;aACb;SACD;QAED,OAAO,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,oGAAsC,CAAC,CAAC;IACzE,CAAC;;sEAlCW,WAAW;4GAAX,WAAW,WAAX,WAAW,mBAFX,MAAM;;;;;;;;;;;;;;;;;;;;;IEPnB,sEAAmE;IAClE,6DAAyB;IAC1B,4DAAM;;;IAFc,8EAAkB;;;ADO/B,MAAM,cAAc;IAL3B;QAMU,WAAM,GAAY,KAAK,CAAC;QACxB,SAAI,GAAW,OAAO,CAAC;QACZ,aAAQ,GAAmC,QAAQ,CAAC;KACxE;;4EAJY,cAAc;4GAAd,cAAc;;QCP3B,0GAEM;;QAFA,4EAAY;;;;;;;;;;;;;;;;;;;;;ACIe;;;AAK1B,MAAM,iBAAiB;IAC7B,YAAoB,SAAwB;QAAxB,cAAS,GAAT,SAAS,CAAe;QAE5C,aAAQ,GAMF,EAAE,CAAC;IARuC,CAAC;IAUjD,QAAQ,CAAC,OAAe,EAAE,WAAmB,GAAG;QAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,cAAc,CAChC;YACC,OAAO;YACP,UAAU,EAAE,QAAQ;YACpB,QAAQ;YACR,OAAO,EAAE,mCAAM,EAAE;SACjB,EACD,SAAS,EACT;YACC,GAAG,EAAE;gBACJ,MACC,OAAO,GAAG,mCAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EACvD,WAAW,GAAG,mCAAM,EAAE,EACtB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;gBACxC,OAAO,IAAI,GAAG,CAAC,CAAC;YACjB,CAAC;SACD,CAAC,CAAC;QACJ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;;kFA/BW,iBAAiB;kHAAjB,iBAAiB,WAAjB,iBAAiB,mBAFjB,MAAM;;;;;;;;;;;;;;;;;;;;;;;IEPnB,oEAAwE;IACvE,uDACD;IAAA,4DAAI;;;IAF+B,4FAAoC;IACtE,0DACD;IADC,8FACD;;ADUO,MAAM,mBAAmB;IAI/B,YAAoB,SAA4B;QAA5B,cAAS,GAAT,SAAS,CAAmB;IAAI,CAAC;IAFrD,IAAI,QAAQ,KAAK,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;;sFAFtC,mBAAmB;iHAAnB,mBAAmB;;;QCZhC,2GAEI;;QAFkB,iFAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACCqG;AAG9F;AACE;AAEY;AACe;AAC+B;AACS;AACpD;AAEkD;AACuB;;;;AAI3H,MAAM,wBAAyB,SAAQ,0DAAa;IAC1D,YAA6B,KAAY;QACxC,KAAK,EAAE,CAAC;QADoB,UAAK,GAAL,KAAK,CAAO;IAEzC,CAAC;IAEQ,WAAW,CAAC,WAAgC;QACpD,MAAM,KAAK,GAAW,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnF,IAAI,KAAK,KAAK,SAAS,EAAE;YACxB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;SAChC;IACF,CAAC;IAEO,cAAc,CAAC,WAAmC,EAAE,SAAmB,EAAE;QAChF,MAAM,KAAK,GAAQ,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC;QAC9D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAClD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACnB;QAED,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;YACrC,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,QAAQ,EAAE;gBACrC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;aACvC;SACD;QACD,OAAO,MAAM,CAAC;IACf,CAAC;;gGAxBW,wBAAwB;yHAAxB,wBAAwB,WAAxB,wBAAwB;AA4BrC,MAAM,MAAM,GAAW;IACtB;QACC,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,qBAAqB;QAC5B,QAAQ,EAAE;YACT;gBACC,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,OAAO;gBACd,SAAS,EAAE,kEAAc;gBACzB,WAAW,EAAE,CAAC,mDAAW,CAAC;aAC1B;YACD;gBACC,IAAI,EAAE,EAAE;gBACR,SAAS,EAAE,+DAAa;gBACxB,WAAW,EAAE,CAAC,iDAAS,CAAC;gBACxB,KAAK,EAAE,EAAE;gBACT,QAAQ,EAAE;oBACT;wBACC,IAAI,EAAE,WAAW;wBACjB,SAAS,EAAE,8EAAkB;wBAC7B,KAAK,EAAE,WAAW;qBAClB;oBACD;wBACC,IAAI,EAAE,EAAE;wBACR,UAAU,EAAE,WAAW;wBACvB,SAAS,EAAE,MAAM;qBACjB;oBACD,yCAAyC;oBACzC;wBACC,IAAI,EAAE,OAAO;wBACb,YAAY,EAAE,GAAG,EAAE,CAAC,6JAA8B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;qBAC3E;oBACD;wBACC,IAAI,EAAE,UAAU;wBAChB,YAAY,EAAE,GAAG,EAAE,CAAC,yKAAoC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC;qBACpF;oBACD;wBACC,IAAI,EAAE,cAAc;wBACpB,YAAY,EAAE,GAAG,EAAE,CAAC,sUAA4C,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC;qBAChG;oBACD;wBACC,IAAI,EAAE,cAAc;wBACpB,YAAY,EAAE,GAAG,EAAE,CAAC,sUAA4C,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC;qBAChG;oBACD;wBACC,IAAI,EAAE,gBAAgB;wBACtB,YAAY,EAAE,GAAG,EAAE,CAAC,iMAAgD,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC;qBACvG;oBACD;wBACC,IAAI,EAAE,cAAc;wBACpB,YAAY,EAAE,GAAG,EAAE,CAAC,yLAA4C,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC;qBAC/F;oBACD;wBACC,IAAI,EAAE,qBAAqB;wBAC3B,YAAY,EAAE,GAAG,EAAE,CAAC,qMAAkD,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC;qBACrG;oBACD;wBACC,IAAI,EAAE,eAAe;wBACrB,YAAY,EAAE,GAAG,EAAE,CAAC,6KAAsC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;qBACnF;oBACD;wBACC,IAAI,EAAE,gBAAgB;wBACtB,YAAY,EAAE,GAAG,EAAE,CAAC,iLAAwC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;qBACtF;oBACD;wBACC,IAAI,EAAE,uBAAuB;wBAC7B,YAAY,EAAE,GAAG,EAAE,CAAC,6MAAsD,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC;qBAC3G;oBACD;wBACC,IAAI,EAAE,qBAAqB;wBAC3B,YAAY,EAAE,GAAG,EAAE,CAAC,6MAAsD,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC;qBACpH;oBACD;wBACC,IAAI,EAAE,mBAAmB;wBACzB,YAAY,EAAE,GAAG,EAAE,CAAC,6LAA8C,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;qBAC/F;oBACD;wBACC,IAAI,EAAE,0BAA0B;wBAChC,YAAY,EAAE,GAAG,EAAE,CAAC,yNAA4D,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC;qBACpH;oBACD;wBACC,IAAI,EAAE,iBAAiB;wBACvB,YAAY,EAAE,GAAG,EAAE,CAAC,qLAA0C,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;qBACzF;oBACD;wBACC,IAAI,EAAE,iBAAiB;wBACvB,YAAY,EAAE,GAAG,EAAE,CAAC,qLAA0C,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;qBACzF;oBACD;wBACC,IAAI,EAAE,eAAe;wBACrB,YAAY,EAAE,GAAG,EAAE,CAAC,6LAA8C,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC;qBACnG;oBACD;wBACC,IAAI,EAAE,cAAc;wBACpB,YAAY,EAAE,GAAG,EAAE,CAAC,qNAA0D,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC;qBAC5G;iBACD;aACD;YACD;gBACC,IAAI,EAAE,GAAG;gBACT,UAAU,EAAE,EAAE;aACd;SACD;KACD;CACD,CAAC;AAcK,MAAM,gBAAgB;;gFAAhB,gBAAgB;6GAAhB,gBAAgB;;QAV3B,qDAAqD;QACrD,WAAW;QACX,iEAAoB,CAAC,MAAM,EAAE;YAC5B,qDAAqD;YACrD,kBAAkB,EAAE,8DAAiB;YACrC,sBAAsB,EAAE,QAAQ;SAChC,CAAC,EAEO,yDAAY;mIAEV,gBAAgB,oFAFlB,yDAAY;AAGhB,MAAM,gBAAgB,GAAU;IACtC,+DAAa;IACb,kEAAc;IACd,8EAAkB;IAClB,oHAA8B;IAC9B,6GAAoB;IACpB,sHAAuB;IACvB,2IAA8B;CAC9B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;ACzKwD;;;;;;;;AAUnD,MAAM,YAAY;IACxB,YACS,aAA8B,EAC9B,aAA2B,EAC3B,cAAqC,EAC7C,oBAA0C,EAC1C,KAAkB;QAJV,kBAAa,GAAb,aAAa,CAAiB;QAC9B,kBAAa,GAAb,aAAa,CAAc;QAC3B,mBAAc,GAAd,cAAc,CAAuB;QAK7C,KAAK,CAAC,IAAI,EAAE,CAAC;QAEb,IAAI,6EAAsB,EAAE;YAC3B,iEAAiE;YACjE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;SAC7B;QAED,MAAM,qBAAqB,GAAG,CAAC,gBAAwB,EAAE,EAAE;YAC1D,IAAI,CAAC,gBAAgB,EAAE;gBACtB,OAAO;aACP;YAED,OAAO,6BAA6B,gBAAgB,EAAE,CAAC;QACxD,CAAC,CAAC;QAEF,MAAM,aAAa,GAAG,oBAAoB,CAAC,aAAa,CAAC;QAEzD,MAAM,eAAe,GAAG,qBAAqB,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,oCAAoC,CAAC;QAC7G,MAAM,eAAe,GAAG,qBAAqB,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,gCAAgC,CAAC;QAEzG,IAAI,CAAC,aAAa,CAAC,qBAAqB,CACvC,QAAQ,EACR,SAAS,EACT,IAAI,CAAC,aAAa,CAAC,8BAA8B,CAAC,eAAe,CAAC,CAClE,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,qBAAqB,CACvC,QAAQ,EACR,cAAc,EACd,IAAI,CAAC,aAAa,CAAC,8BAA8B,CAAC,eAAe,CAAC,CAClE,CAAC;IACH,CAAC;;wEAxCW,YAAY;0GAAZ,YAAY;QCbzB,8EAA+C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDqB;AACO;AACH;AAES;AACQ;AAEjB;AACxB;AAC4B;AACX;AACc;AAI3B;AACW;AAEhB;AAEA;AACwC;AAC3C;AACkB;AAEsC;AAE9C;AACuB;AAE1B;AAEW;AACiB;AA0B3D;AAE6D;AACS;AAC9B;AACmC;AACd;AACS;AACf;AACA;AACoB;AACvB;AACW;AACA;AACgB;AACrC;AACS;AACC;AACgB;AACjB;AACN;;;;;;;;;;;;AAEjE,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AAE9G,SAAS,QAAQ;IACvB,OAAO,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AAC/C,CAAC;AAEM,SAAS,OAAO,CAAC,GAAyB;IAChD,OAAO,GAAG,EAAE;QACX,OAAO,GAAG,CAAC,qBAAqB,EAAE,CAAC;IACpC,CAAC,CAAC;AACH,CAAC;AAEM,SAAS,qBAAqB,CAAC,IAAgB;IACrD,OAAO,IAAI,4EAAmB,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;AACjE,CAAC;AAEM,SAAS,QAAQ,CAAC,aAAuC;IAC/D,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;QACjE,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,oEAAkB,CAAC,sEAAO,EAAE,OAAO,EAAE,4EAAY,CAAC,CAAC;AAwJ5C,MAAM,SAAS;;kEAAT,SAAS;uGAAT,SAAS,cAXT,wDAAY,EAAE,kGAAmB;4GA5ElC;QACV,qDAAa;QACb,+CAAS;QACT,6DAAqB;QACrB,oDAAY;QACZ,4FAAkB;QAClB,+DAAuB;QACvB,qDAAa;QACb,qDAAa;QACb,mDAAW;QACX,wDAAgB;QAChB,sDAAQ;QACR,yDAAW;QACX,oDAAY;QACZ,qGAAqB;QACrB,mDAAW;QACX,2DAAmB;QACnB,qDAAa;QACb,iDAAW;QACX,qDAAa;QACb,oDAAY;QACZ,0DAAkB;QAClB,uEAA+B;QAC/B,sDAAc;QACd,4DAAoB;QACpB,6DAAK;QACL,oDAAY;QACZ,uDAAe;QACf,yDAAiB;QACjB,kFAAiB;QACjB,sDAAQ;QACR,yDAAW;QACX;YACC,OAAO,EAAE,2DAAe;YACxB,UAAU,EAAE,QAAQ;YACpB,IAAI,EAAE,CAAC,0FAAwB,CAAC;YAChC,KAAK,EAAE,IAAI;SACX;QACD;YACC,OAAO,EAAE,oEAAiB;YAC1B,QAAQ,EAAE,wEAAoB;YAC9B,KAAK,EAAE,IAAI;SACX;QACD;YACC,OAAO,EAAE,oEAAiB;YAC1B,QAAQ,EAAE,qDAAW;YACrB,KAAK,EAAE,IAAI;SACX;QACD;YACC,OAAO,EAAE,oEAAiB;YAC1B,QAAQ,EAAE,6EAAsB;YAChC,KAAK,EAAE,IAAI;SACX;QACD;YACC,OAAO,EAAE,oEAAiB;YAC1B,QAAQ,EAAE,mEAAkB;YAC5B,KAAK,EAAE,IAAI;SACX;QACD,EAAE,OAAO,EAAE,gEAAe,EAAE,QAAQ,EAAE,KAAK,EAAE;QAC7C;YACC,OAAO,EAAE,wDAAY;YACrB,QAAQ,EAAE,uEAAkB;SAC5B;QACD;YACC,OAAO,EAAE,2DAAe;YACxB,UAAU,EAAE,OAAO;YACnB,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,CAAC,iFAAoB,CAAC;SAC5B;QACD;YACC,OAAO,EAAE,2DAAa;YACtB,QAAQ,EAAE,yEAAwB;SAClC;QACD,kGAAwB;QACxB,6DAAW;KACX,YArHA,qEAAa;QACb,0FAAuB;QACvB,+DAAY;QAEZ,mEAAgB;QAChB,kEAAiB,CAAC;YACjB,MAAM,EAAE;gBACP,WAAW,EAAE,GAAG,EAAE,CAAC,sEAA8B,EAAE;aACnD;SACD,CAAC;QAEF,yEAAuB,CAAC;YACvB,MAAM,EAAE;gBACP,OAAO,EAAE,iEAAe;gBACxB,UAAU,EAAE,qBAAqB;gBACjC,IAAI,EAAE,CAAC,6DAAU,CAAC;aAClB;YACD,eAAe,EAAE,IAAI;SACrB,CAAC;QAEF,uFAAmB;QACnB,iEAAgB;QAChB,oEAAkB,CAAC,IAAI,yEAAuB,CAAC;YAC9C,wDAAwD;YACxD,IAAI,EAAE;gBACJ,QAAQ,EAAE,EAAE;gBACZ,WAAW,EAAE,EAAE;gBACf,gBAAgB,EAAE,EAAE;gBACpB,SAAS,EAAE,EAAE,EAAE,wBAAwB;aACxC;SACC,CAAC,EAAE;YACL,eAAe,EAAE,0EAAwB;YACzC,WAAW,EAAE;gBACX,MAAM,EAAE,CAAC,WAAW,CAAC;aACtB;SACC,EAAE;YACJ,eAAe,EAAE,0EAAwB;YACzC,oBAAoB,EAAE,IAAI,GAAG,CAAC;gBAC5B,CAAC,qCAAqC,EAAE,CAAC,WAAW,CAAC,CAAC;aACvD,CAAC;SACA,CAAC;oIAyFO,SAAS,mBApJpB,wDAAY,wsBAEZ,qFAAiB;QACjB,qFAAiB;QACjB,2FAAmB;QACnB,uEAA+B;QAC/B,6FAAsB;QACtB,6FAAsB;QACtB,6GAA0B;QAC1B,oGAAsB;QACtB,yGAA0B;QAC1B,kFAAyB;QACzB,mEAA2B;QAC3B,sEAAe;QACf,yGAAuB;QACvB,iFAAc;QACd,kGAAmB,aAGnB,qEAAa;QACb,0FAAuB;QACvB,+DAAY;QAEZ,mEAAgB,iIAgBhB,uFAAmB;QACnB,iEAAgB;;;;;;;;;;;;;;;;;;;;;;ACnJ0C;AAE3B;AAG4D;;;;AAE7F,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;AAKjC,MAAM,0BAA0B;IACtC,YAAoB,YAA0B,EACrC,MAAqB;QADV,iBAAY,GAAZ,YAAY,CAAc;QACrC,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAElC,0BAA0B,CAAC,WAA2B,EAAE,QAAiB,EAAE,YAAsB,IAAI;QACpG,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,eAAe,GAAG,EAAE,EAAE,EAAE;YACrD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,+DAAoB,EAAE,KAAK,CAAC,CAAC;YAC1E,MAAM,IAAI,GAAG,gBAAgB,IAAI,IAAI,eAAe,KAAK,SAAS,SAAS,CAAC;YAC5E,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC,CAAC;QACF,MAAM,QAAQ,GAAG,GAAG,EAAE;YACrB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpB,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,EAAE;YAE7B,IAAI,KAAK,IAAI,IAAI;gBAAE,KAAK,GAAG,CAAC,CAAC;YAC7B,IAAI,aAAa,GAAG,2IAAyD,CAAC,KAAK,CAAC,CAAC;YACrF,IAAI,KAAK,GAAG,4CAA4C,GAAG,aAAa,GAAG,qDAAqD;YAChI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,IAAI,KAAK,GAAG,oGAAoG;YAChH,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC,CAAC;QAEF,IAAI,WAAW,CAAC,UAAU,EAAE;YAC3B,OAAO,CAAC,sBAAsB,EAAE,wDAAwD,CAAC,CAAC;YAC1F,QAAQ,EAAE,CAAC;SACX;QAED,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACvD,OAAO,CAAC,eAAe,EAAE,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAC3D,OAAO,CAAC,cAAc,EAAE,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAEzD,IAAI,WAAW,CAAC,aAAa,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE;YAC/D,MAAM,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;YACjE,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;SAC3C;QAED,IAAI,WAAW,CAAC,SAAS;eACrB,WAAW,CAAC,yBAAyB;eACrC,CAAC,WAAW,CAAC,WAAW,EAAE;YAC7B,kGAAkG;YAClG,WAAW,CAAC,WAAW,CAAC,4BAA4B,CAAC,CAAC;SACtD;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,qBAAqB;eACnD,WAAW,CAAC,WAAW,GAAG,CAAC;YAC9B,OAAO,CAAC,cAAc,EAAE,WAAW,GAAG,WAAW,CAAC,WAAW,GAAG,GAAG,EAAE,OAAO,CAAC,CAAC;QAE/E,QAAQ,EAAE,CAAC;QAEX,IAAI,WAAW,CAAC,kBAAkB,EAAE;YACnC,OAAO,CAAC,oBAAoB,EAAE,aAAa,CAAC,CAAC;YAC7C,OAAO,CAAC,aAAa,EAAE,mCAAM,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC7E,OAAO,CAAC,iBAAiB,EAAE,IAAI,WAAW,CAAC,kBAAkB,GAAG,CAAC,CAAC;YAClE,QAAQ,EAAE,CAAC;SACX;QAED,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,uBAAuB,CAAC,CAAC;QAE5D,IAAI,WAAW,CAAC,eAAe,EAC/B;YACC,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;SAC5D;QAED,QAAQ,EAAE,CAAC;QACX,IAAI,WAAW,CAAC,YAAY,EAAE;YAC7B,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;YAC9C,QAAQ,EAAE,CAAC;SACX;QACD,IAAI,WAAW,CAAC,YAAY,EAAE;YAC7B,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;YAC9C,QAAQ,EAAE,CAAC;SACX;QAED,IAAI,WAAW,CAAC,YAAY,IAAI,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE;YAChE,MAAM,UAAU,GAAG,EAAE,CAAC;YACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACzD,IAAI,GAAG,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACtC,IAAI,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;gBAEtC,oEAAoE;gBACpE,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;oBACnC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACrB,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;oBAC7B,QAAQ,EAAE,CAAC;iBACX;aACD;SACD;QAED,IAAI,WAAW,CAAC,6BAA6B,EAAE;YAC9C,OAAO,CAAC,gBAAgB,EAAE,WAAW,CAAC,6BAA6B,CAAC,CAAC;YACrE,QAAQ,EAAE,CAAC;SACX;QAED,IAAI,WAAW,CAAC,WAAW,EAAE;YAC5B,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC5B;QAED,IAAI,WAAW,CAAC,oBAAoB,EAAE;YACrC,SAAS,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;SACvC;QAED,IAAI,WAAW,CAAC,QAAQ,EAAE;YACzB,OAAO,CAAC,UAAU,EAAE,QAAQ,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;SACpD;QAED,IAAI,IAAI,GAAG;;MAEP,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;UACd,CAAC;QACT,OAAO,IAAI,CAAC;IACb,CAAC;IAED,mCAAmC,CAClC,WAA2B,EAC3B,QAAiB,EACjB,YAAsB,IAAI;QAE1B,OAAO,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAC/C,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,CACjE,CAAC;IACH,CAAC;IAED,uBAAuB,CAAC,WAA2B;QAClD,IAAI,WAAW,CAAC,gBAAgB,EAAE;YACjC,OAAO,EAAE,CAAC;SACV;QAED,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,WAAW,CAAC,WAAW,GAAG,WAAW,EAAE;YAC1C,MAAM,GAAG,IAAI,WAAW,CAAC,WAAW,GAAG,CAAC;SACxC;QAED,OAAO,WAAW,CAAC,aAAa,GAAG,MAAM,CAAC;IAC3C,CAAC;IAED,iBAAiB,CAAC,CAAwB;QACzC,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,cAAc,CAAC;QACnB,IAAI,CAAC,CAAC,WAAW,EAAE;YAClB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YACrC,cAAc,GAAG,IAAI,CAAC;SACtB;QAED,IAAI,CAAC,CAAC,QAAQ,EAAE;YACf,IAAI,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;YAC1B,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,cAAc,EAAE;gBAC1C,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aAC9B;YACD,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC1B;QAED,IAAI,CAAC,CAAC,MAAM,EAAE;YACb,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;YACnB,IAAI,cAAc,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBACrC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aACpB;YACD,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACrB;QAED,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAAA,CAAC;;oGAvKU,0BAA0B;2HAA1B,0BAA0B,WAA1B,0BAA0B,mBAF1B,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACTwD;AACf;AACvB;AAGJ;AACL;AAE4B;AAuBlC;;;;;;AAKf,MAAM,YAAa,SAAQ,kEAAW;IAc5C,YACC,MAAqB,EACb,IAAiB,EACjB,WAA0B,EAC1B,MAAuB,EACvB,mBAAwC,EACxC,qBAA4C;QAEpD,KAAK,CAAC,MAAM,CAAC,CAAC;QANN,SAAI,GAAJ,IAAI,CAAa;QACjB,gBAAW,GAAX,WAAW,CAAe;QAC1B,WAAM,GAAN,MAAM,CAAiB;QACvB,wBAAmB,GAAnB,mBAAmB,CAAqB;QACxC,0BAAqB,GAArB,qBAAqB,CAAuB;QAhBrD,6BAAwB,GAAG,IAAI,uDAAY,EAA8C,CAAC;QAC1F,6BAAwB,GAAG,IAAI,uDAAY,EAA8C,CAAC;QAC1F,yBAAoB,GAAG,IAAI,uDAAY,EAA2C,CAAC;QACnF,4BAAuB,GAAG,IAAI,uDAAY,EAA6C,CAAC;QAExF,uBAAkB,GAAG,IAAI,uDAAY,EAAU,CAAC;QAChD,eAAU,GAAG,IAAI,uDAAY,EAAuB,CAAC;QAErD,oBAAe,GAAG,IAAI,iDAAe,CAAS,CAAC,CAAC,CAAC;QAYhD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;YACvC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,cAAc;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;IACnC,CAAC;IAED,QAAQ;QACP,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAyB,yBAAyB,CAAC,CAAC;IACjF,CAAC;IAED,OAAO,CAAC,gBAAwB;QAC/B,OAAO,IAAI,CAAC,IAAI;aACd,WAAW,CAA4B,4BAA4B,gBAAgB,EAAE,CAAC;aACtF,IAAI,CAAC,mDAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,kBAAkB,CAAC,gBAAwB;QAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAyB,uCAAuC,gBAAgB,EAAE,CAAC,CAAC;IACjH,CAAC;IAED,gBAAgB,CAAC,gBAAwB,EAAE,eAAuB;QACjE,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAC3B,qCAAqC,gBAAgB,IAAI,eAAe,EAAE,CAC1E,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,OAA8B;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IAED,EAAE;IACF,kBAAkB;IAClB,EAAE;IAEF,kBAAkB,CAAC,gBAAwB,EAAE,iBAAyB;QACrE,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAC3B,uCAAuC,gBAAgB,IAAI,iBAAiB,EAAE,CAC9E,CAAC;IACH,CAAC;IAED,mBAAmB,CAAC,gBAAwB,EAAE,eAAuC;QACpF,MAAM,GAAG,GAAG,4CAA4C,gBAAgB,EAAE,CAAC;QAC3E,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACvE,CAAC;IAED,qBAAqB,CAAC,gBAAwB,EAAE,eAAuC;QACtF,MAAM,GAAG,GAAG,uCAAuC,gBAAgB,IAAI,eAAe,CAAC,EAAE,EAAE,CAAC;QAC5F,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;IAC/E,CAAC;IAED,EAAE;IACF,kBAAkB;IAClB,EAAE;IAEF,kBAAkB,CAAC,gBAAwB,EAAE,iBAAyB;QACrE,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAC3B,uCAAuC,gBAAgB,IAAI,iBAAiB,EAAE,CAC9E,CAAC;IACH,CAAC;IAED,mBAAmB,CAAC,gBAAwB,EAAE,eAAuC;QACpF,MAAM,GAAG,GAAG,4CAA4C,gBAAgB,EAAE,CAAC;QAC3E,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACvE,CAAC;IAED,GAAG;IACH,iBAAiB;IACjB,GAAG;IAEH,eAAe;QACd,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC;IAED,eAAe,CAAC,GAAwB;QACvC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,eAAe,CAAC,gBAAwB,EAAE,MAAc;QACvD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAC3B,oCAAoC,gBAAgB,IAAI,MAAM,EAAE,CAChE,CAAC;IACH,CAAC;IAED,gBAAgB,CAAC,gBAAwB,EAAE,OAA4B;QACtE,MAAM,MAAM,GAAG,6CAAW,CAAC,OAAO,CAAC,CAAC;QACpC,MAAM,CAAC,YAAY,GAAG,2DAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC1D,MAAM,GAAG,GAAG,yCAAyC,gBAAgB,EAAE,CAAC;QACxE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC9D,CAAC;IAED,kBAAkB,CAAC,gBAAwB,EAAE,GAAwB;QACpE,MAAM,GAAG,GAAG,oCAAoC,gBAAgB,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;QAC7E,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAED,GAAG;IACH,mBAAmB;IACnB,GAAG;IAEH,iBAAiB,CAChB,gBAAwB,EACxB,MAAc,EACd,YAAoB;QAEpB,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAC3B,kDAAkD,gBAAgB,IAAI,MAAM,IAAI,YAAY,EAAE,CAC9F,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,CAAO,EACf,gBAAwB,EACxB,MAAc,EACd,YAAoB,EACpB,QAAgB;QAEhB,MAAM,GAAG,GAAG,IAAI,yCAAO,EAAwC,CAAC;QAEhE,MAAM,QAAQ,GAAG,uCAAuC,CAAC;QACzD,MAAM,EAAE,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC1B,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACrB,EAAE,CAAC,MAAM,CAAC,kBAAkB,EAAE,EAAE,GAAG,gBAAgB,CAAC,CAAC;QACrD,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC;QACjC,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,GAAG,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CAAC;QAEpD,kDAAkD;QAClD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE;YAC3B,OAAO,EAAE;gBACV,aAAa,EAAE,SAAS,GAAG,KAAK;gBAChC,MAAM,EAAE,kBAAkB;aACxB;SACF,CAAC;aACD,IAAI,CAAC,mDAAG,CAAC,YAAY,CAAC,EAAE,GAAG,OAAO,YAAoD,EAAC,CAAC,CAAC,CAAC;aAC1F,SAAS,CACT,MAAM,CAAC,EAAE;YACR,QAAQ,MAAM,CAAC,UAAU,EAAE;gBAC1B,KAAK,uDAAa;oBACjB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,mEAAyB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;oBAC/E,MAAM;gBACP,KAAK,0DAAgB;oBACpB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;wBACrB,OAAO,EAAE,MAAM,CAAC,YAAY;wBAC5B,KAAK,EAAE,aAAa;qBACpB,CAAC,CAAC;oBACH,MAAM;gBACP,KAAK,6DAAmB;oBACvB,MAAM;gBACP;oBACC,MAAM;aACP;YAED,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,EACD,GAAG,CAAC,EAAE;YACL,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC,CACD,CAAC;QAEF,OAAO,GAAG,CAAC;IACZ,CAAC;IAED,mBAAmB;IACnB,UAAU,CACT,CAAO,EACP,gBAAwB,EACxB,MAAc,EACd,YAAoB,EACpB,QAAgB;QAEhB,MAAM,GAAG,GAAG,IAAI,yCAAO,EAAwC,CAAC;QAEhE,MAAM,EAAE,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC1B,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACrB,EAAE,CAAC,MAAM,CAAC,kBAAkB,EAAE,EAAE,GAAG,gBAAgB,CAAC,CAAC;QACrD,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC;QACjC,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,GAAG,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEhC,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CAAC;QAEpD,oBAAoB;QACpB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAE7B,IAAI,CAAC,WAAW;aACd,IAAI,CACJ,uCAAuC,EACvC,MAAM,EACN,EAAE,EACF;YACC,OAAO,EAAE;gBACR,aAAa,EAAE,SAAS,GAAG,KAAK;gBAChC,MAAM,EAAE,kBAAkB;aAC1B;SACD,CACD;YACD,iBAAiB;aAChB,IAAI,CAAC,mDAAG,CAAC,YAAY,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,mBAAkB,CAAyC,EAAC,CAAC,CAAC,CAAC;aACvJ,SAAS,CACT,MAAM,CAAC,EAAE;YACR,QAAQ,MAAM,CAAC,UAAU,EAAE;gBAC1B,KAAK,uDAAa;oBACjB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,mEAAyB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;oBAC/E,MAAM;gBACP,KAAK,0DAAgB;oBACpB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;wBACrB,OAAO,EAAE,MAAM,CAAC,YAAY;wBAC5B,KAAK,EAAE,aAAa;qBACpB,CAAC,CAAC;oBACH,MAAM;gBACP,KAAK,6DAAmB;oBACvB,MAAM;gBACP;oBACC,MAAM;aACP;YAED,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,EACD,GAAG,CAAC,EAAE;YACL,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC,CACD,CAAC;QAEH,OAAO,GAAG,CAAC;IACZ,CAAC;IAED,oBAAoB,CAAC,gBAAwB,EAAE,MAAc,EAAE,GAA0B;QACxF,MAAM,GAAG,GAAG,mCAAmC,gBAAgB,IAAI,MAAM,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;QACtF,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,uBAAuB,EAAE,YAAY,CAAC,CAAC;IACtE,CAAC;IAED,kBAAkB,CAAC,gBAAwB,EAAE,MAAc,EAAE,UAAiC;QAC7F,MAAM,GAAG,GAAG,uDAAuD,gBAAgB,IAAI,MAAM,EAAE,CAAC;QAChG,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACrE,CAAC;IAED,QAAQ,CAAC,OAAkC;QAC1C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAC9B,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;QAEtC,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAEjF,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,uBAAuB,CACtB,OAAkC,EAClC,OAA8B,EAC9B,QAAgB,EAChB,qBAA6B,EAC7B,eAAsB;QAEtB,MAAM,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,EACnE,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,qBAAqB,CAAC,CAAC;QAEhF,OAAO,CAAC,oBAAoB,GAAG,MAAM,CAAC,YAAY,CAAC;QACnD,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;YAC3C,+DAA+D;YAC/D,MAAM,UAAU,GACf,eAAe;gBACf,mCAAM,EAAE;qBACN,OAAO,CAAC,KAAK,CAAC;qBACd,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;SAChC;aAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;YAC5B,iDAAiD;YACjD,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;SAC/B;IACF,CAAC;;wEAvSW,YAAY;6GAAZ,YAAY,WAAZ,YAAY,mBAFZ,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BI;AAC2D;AAUvB;;;;;;;;;;;;;;;;;;;ICnB1D,yEAA2C;IAS/B,kEAAO;IAAA,4DAAW;IAC5B,sEAAK;IAAA,6GAAkD;IAAA,4DAAM;;;IAI/D,yEAA2C;IAC+B,mEAAQ;IAAA,4DAAW;IAC5F,qEAAI;IAAA,kFAAuB;IAAA,4DAAK;;;IAEjC,0EAOC;IAEC,4EAAkF;IACnF,4DAAM;IAEN,0EAA6D;IAC1B,uDAA6B;;IAAA,4DAAa;IAC5E,iFAAgC;IAAA,uDAAoB;IAAA,4DAAa;IACjE,iFAA0B;IACzB,sEAAiF;IAClF,4DAAa;;;IARkB,0DAAqC;IAArC,qGAAqC;IAIlC,0DAA6B;IAA7B,yJAA6B;IAC/B,0DAAoB;IAApB,sFAAoB;IAER,0DAA+B;IAA/B,6JAA+B;;;IAK7E,yEAA0C;IACgC,qEAAU;IAAA,4DAAW;IAC9F,qEAAI;IAAA,2EAAgB;IAAA,4DAAK;;;IAE1B,0EAAuF;IAEnD,uDAA6B;;IAAA,4DAAa;IAC5E,iFAAgC;IAAA,uDAAoB;IAAA,4DAAa;IACjE,iFAA0B;IACzB,qEAAgF;IACjF,4DAAa;;;IAJqB,0DAA6B;IAA7B,yJAA6B;IAC/B,0DAAoB;IAApB,sFAAoB;IAER,0DAA8B;IAA9B,4JAA8B;;;IAM3E,+EAIE;IAAA,mEAAQ;IAAA,4DACT;;;;IAoBC,gFAKC;IADA,4TAAW,iFAAe,KAAC;IAC3B,4DAAY;;;IAGd,2EAQY;;;IANX,yFAAyB;;;IAO1B,4EAIc;;;IADb,wGAAwC;;;IAGzC,2EAMY;;;IAHX,oFAAmB;;;IAKpB,6EAIe;;;IAkBf,gFAMkB;;;IADjB,4FAA2B;;;IAE5B,gFAMkB;;;IADjB,4FAA2B;;;IAE5B,gFAMkB;;;IADjB,4FAA2B;;;IA1B7B,yEAAmF;IAClF,gFAKkB;IAClB,wJAMkB;IAClB,wJAMkB;IAClB,wJAMkB;IAClB,gFAKkB;IAclB,0EAAqE;IACpE,yEAA2F;IAE5F,4DAAM;;;IA7CL,0DAA2B;IAA3B,4FAA2B;IAG1B,0DAAoB;IAApB,wFAAoB;IAOpB,0DAAmB;IAAnB,uFAAmB;IAOnB,0DAAoB;IAApB,wFAAoB;IAUrB,0DAA2B;IAA3B,4FAA2B;IAM3B,0DAA2B;IAA3B,4FAA2B;IAM3B,0DAA2B;IAA3B,4FAA2B;;;IAS7B,yEAAkF;IACjF,gFAKkB;IAyBnB,4DAAM;;;IA1BJ,0DAA2B;IAA3B,4FAA2B;IAM3B,0DAA2B;IAA3B,4FAA2B;IAM3B,0DAA2B;IAA3B,4FAA2B;IAM3B,0DAA2B;IAA3B,4FAA2B;IAM3B,0DAA2B;IAA3B,4FAA2B;;AD3KxB,MAAM,8BAA8B;IAiC1C,YACS,EAAsB,EACtB,YAA0B,EAC1B,QAAsB,EACtB,aAA4B,EAC5B,KAAwB,EACxB,OAAqC;QALrC,OAAE,GAAF,EAAE,CAAoB;QACtB,iBAAY,GAAZ,YAAY,CAAc;QAC1B,aAAQ,GAAR,QAAQ,CAAc;QACtB,kBAAa,GAAb,aAAa,CAAe;QAC5B,UAAK,GAAL,KAAK,CAAmB;QACxB,YAAO,GAAP,OAAO,CAA8B;QAlC9C,oBAAe,GAAmB;YACjC,EAAE,KAAK,EAAE,sDAAY,EAAE,IAAI,EAAE,KAAK,EAAE;YACpC,EAAE,KAAK,EAAE,qDAAW,EAAE,IAAI,EAAE,IAAI,EAAE;YAClC,EAAE,KAAK,EAAE,0DAAgB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;SACxD,CAAC;QAOF,kBAAa,GAAY,KAAK,CAAC;QAC/B,mBAAc,GAAY,IAAI,CAAC;QAE/B,mBAAc,GAAG,KAAK,CAAC;QACvB,kBAAa,GAAG,KAAK,CAAC;QACtB,iBAAY,GAAG,KAAK,CAAC;QACrB,kBAAa,GAAG,KAAK,CAAC;QAQZ,YAAO,GAAG,IAAI,uDAAY,EAAW,CAAC;QACtC,WAAM,GAAG,IAAI,uDAAY,EAAwB,CAAC;QAyD5D,oBAAe,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAClF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC5B,CAAC;QAnDA,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC;QACjD,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,iBAAiB,CAAC,kBAAkB,CAAC;QAEzE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY;YAC1D,aAAa,CAAC,iBAAiB,CAAC,kBAAkB,CAAC;QAEpD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,kCAAkC,EAAC;YAC3E,IAAI,CAAC,OAAO,CAAC,kCAAkC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAqC,EAAE,EAAE;gBACrG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;gBACzB,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,uBAAuB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;gBAClF,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;YAC3C,CAAC,CAAC,CAAC;SACH;IACF,CAAC;IAED,WAAW,CAAC,OAAO;QAClB,IAAI,OAAO,CAAC,OAAO,EAAE;YACpB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC3B;QAED,IAAI,IAAI,CAAC,GAAG,EAAE;YACb,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YACvB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;SAChB;QACD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;YAC/C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACrB,OAAO;aACP;YACD,IAAI,CAAC,SAAS,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,QAAQ,EAAE;YACrB,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAClB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;aACpB;iBAAM;gBACN,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;aACnB;SACD;IACF,CAAC;IAED,eAAe;QACd,IAAI,CAAC,mDAAmD,EAAE,CAAC;QAC3D,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;IAC5B,CAAC;IAQD,QAAQ;QACP,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,EAAE;YAC7B,UAAU,CAAC,GAAG,EAAE;gBACf,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YAC3B,CAAC,EAAE,CAAC,CAAC,CAAC;SACN;IACF,CAAC;IAED,aAAa;QACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IAEO,SAAS;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACzB,SAAS,EAAE,CAAC,EAAE,CAAC;YACf,yBAAyB,EAAE,CAAC,EAAE,EAAE,CAAC,gEAAmB,CAAC,CAAC;YACtD,uBAAuB,EAAE,CAAC,EAAE,CAAC;YAC7B,sBAAsB,EAAE,CAAC,EAAE,CAAC;YAC5B,KAAK,EAAE,CAAC,EAAE,CAAC;YACX,wBAAwB,EAAE,CAAC,EAAE,CAAC;YAC9B,uBAAuB,EAAE,CAAC,EAAE,CAAC;YAC7B,YAAY,EAAE,CAAC,EAAE,CAAC;YAClB,YAAY,EAAE,CAAC,EAAE,CAAC;YAClB,UAAU,EAAE,CAAC,EAAE,CAAC;YAChB,UAAU,EAAE,CAAC,EAAE,CAAC;YAChB,aAAa,EAAE,CAAC,EAAE,CAAC;YACnB,YAAY,EAAE,CAAC,EAAE,CAAC;YAClB,qBAAqB,EAAE,CAAC,EAAE,CAAC;YAC3B,UAAU,EAAE,CAAC,EAAE,CAAC;YAChB,eAAe,EAAE,SAAS;YAC1B,oBAAoB,EAAE,SAAS;YAC/B,UAAU,EAAE,SAAS;YACrB,kBAAkB,EAAE,SAAS;YAC7B,8BAA8B,EAAE,SAAS;YACzC,4BAA4B,EAAE,SAAS;YACvC,WAAW,EAAE,SAAS;YACtB,sCAAsC,EAAE,SAAS;YACjD,yCAAyC,EAAE,SAAS;YACpD,wBAAwB,EAAE,SAAS;YACnC,YAAY,EAAE,SAAS;YACvB,eAAe,EAAE,SAAS;YAC1B,eAAe,EAAE,SAAS;SAC1B,CAAC,CAAC;IACJ,CAAC;IAEO,SAAS;QAChB,IAAI,CAAC,mDAAmD,EAAE,CAAC;QAE3D,gEAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAEO,mDAAmD;QAC1D,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE;YACxC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;SACxD;aAAM;YACN,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;SACvD;IACF,CAAC;IAEO,OAAO,CAAC,GAAyB;QACxC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QAEf,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,uBAAuB,CACjE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CACnD,CAAC;QACF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAChE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAClD,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,mDAAmD,EAAE,CAAC;QAE3D,uCAAuC;QACvC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;YACtC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACxB;aAAM;YACN,IAAI,CAAC,yBAAyB,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,yBAAyB,CAAC,CAAC;YACxG,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE;gBACpC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC,yBAAyB,EAAE;oBACnE,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC;iBACrE;qBAAM;oBACN,IAAI,CAAC,8BAA8B,GAAG,kBAAkB,CAAC;iBACzD;aACD;SACD;IACF,CAAC;;4GAzLW,8BAA8B;4HAA9B,8BAA8B;;;;;;QCrC3C,0EAAuD;QACtD,0HAYM;QAEN,0HAGM;QACN,2HAmBM;QAEN,0HAGM;QACN,0HAQM;QAEN,yEAAoB;QACnB,oIAKC;QACD,qEAAI;QAAA,kEAAO;QAAA,4DAAK;QAEjB,0EAAiG;QAG9F,4EAKc;;QACd,8EAOW;QACX,yIAKa;QACd,4DAAM;QAEN,yIAQY;QACZ,2IAIc;QAEd,yIAMY;QAEZ,6IAIe;QACf,8EAGe;QAKhB,4DAAM;QAEN,8HAmDM;QAEN,6HA+BM;QACP,4DAAM;;QAnN6B,+EAAkB;QAChC,0DAAoB;QAApB,oFAAoB;QAcnC,0DAAoB;QAApB,oFAAoB;QAKxB,0DAAoB;QAApB,oFAAoB;QAoBhB,0DAAmB;QAAnB,mFAAmB;QAInB,0DAAmB;QAAnB,mFAAmB;QAatB,0DAAuC;QAAvC,2GAAuC;QAWtC,0DAAkC;QAAlC,2JAAkC;QAcjC,0DAAoB;QAApB,oFAAoB;QAOrB,0DAA+B;QAA/B,+FAA+B;QAS/B,0DAAgC;QAAhC,gGAAgC;QAMhC,0DAAmB;QAAnB,mFAAmB;QAQnB,0DAAoB;QAApB,oFAAoB;QAcjB,0DAAqB;QAArB,qFAAqB;QAqDrB,0DAAoB;QAApB,oFAAoB;;;;;;;;;;;;;;;;;;;;ACjL4B;;;AAIjD,MAAM,4BAA6B,SAAQ,kEAAW;IAE5D,YAAY,MAAqB;QAChC,KAAK,CAAC,MAAM,CAAC,CAAC;IACf,CAAC;IAED,kCAAkC;QACjC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAqC,qCAAqC,CAAC,CAAC;IACzG,CAAC;;wGARW,4BAA4B;6HAA5B,4BAA4B,WAA5B,4BAA4B;;;;;;;;;;;;;;;;;;ACAlC,MAAM,uBAAuB;IACnC,oBAAoB,CAAC,iBAAuC;QAC3D,IAAI,iBAAiB,CAAC,UAAU,EAAE;YACjC,OAAO,UAAU,CAAC;SAClB;aAAM,IAAI,iBAAiB,CAAC,SAAS,EAAE;YACvC,OAAO,YAAY,CAAC;SACpB;QAED,OAAO,UAAU,CAAC;IACnB,CAAC;IAED,qBAAqB,CAAC,iBAAuC;QAC5D,IAAI,iBAAiB,CAAC,UAAU,EAAE;YACjC,OAAO,UAAU,CAAC;SAClB;aAAM,IAAI,iBAAiB,CAAC,SAAS,EAAE;YACvC,OAAO,UAAU,CAAC;SAClB;QAED,OAAO,SAAS,CAAC;IAClB,CAAC;;8FAnBW,uBAAuB;wHAAvB,uBAAuB,WAAvB,uBAAuB,mBAFvB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDc;AACL;AAQN;;AAyBf,MAAM,SAAS;IACrB,YAAmB,SAAe,EAAS,gBAAsB;QAA9C,cAAS,GAAT,SAAS,CAAM;QAAS,qBAAgB,GAAhB,gBAAgB,CAAM;IAAI,CAAC;IAEtE,MAAM,CAAC,UAAU;QAChB,IAAI,CAAC,UAAU,EAAE;YAChB,OAAO,KAAK,CAAC;SACb;QAED,OAAO,CACN,mCAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC;YAC1D,mCAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CACxE,CAAC;IACH,CAAC;CACD;AAEM,MAAM,mBAAmB;IAC/B,YAAmB,OAAe,EAAS,eAAuB;QAA/C,YAAO,GAAP,OAAO,CAAQ;QAAS,oBAAe,GAAf,eAAe,CAAQ;IAAI,CAAC;IAEvE,QAAQ;QACP,OAAO,MAAM,IAAI,CAAC,OAAO,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;IACvD,CAAC;CACD;AAEM,MAAM,WAAW;IACvB,YAAmB,OAAe,EAAS,IAAU;QAAlC,YAAO,GAAP,OAAO,CAAQ;QAAS,SAAI,GAAJ,IAAI,CAAM;IAAI,CAAC;CAC1D;AAED,IAAY,SAGX;AAHD,WAAY,SAAS;IACpB,6CAAM;IACN,yDAAY;AACb,CAAC,EAHW,SAAS,KAAT,SAAS,QAGpB;AACM,MAAM,KAAK;CAIjB;AAEM,MAAM,QAAQ;CAKpB;AAEM,MAAM,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACrC,MAAM,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC;AAC9B,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB,MAAM,UAAU,GAAG,WAAW,CAAC;AAC/B,MAAM,WAAW,GAAG,YAAY,CAAC;AAEjC,MAAM,QAAQ,GAAG,KAAK,CAAC;AACvB,MAAM,SAAS,GAAG,MAAM,CAAC;AAEzB,MAAM,YAAY,GAAG,EAAE,CAAC;AAE/B,+DAA+D;AACxD,MAAM,mBAAmB,GAAG,4CAA4C,CAAC;AAEhF,MAAM,KAAK,GAAG,KAAK,CAAC;AAKb,MAAM,qBAAqB;IAHlC;QAIS,YAAO,GAAG,CAAC,CAAC,CAAC;KAgdrB;IA9cA,qBAAqB,CAAC,YAA6B,EAAE,IAAyB;QAC7E,MAAM,SAAS,GAAG,mCAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,mCAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAErC,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAEtD,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC;QAC7D,MAAM,aAAa,GAAG,WAAW,GAAG,WAAW,CAAC;QAEhD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,WAAW,GAAG,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC,CAAE,2BAA2B;QAC1F,+CAA+C;QAE/C,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QAC7D,IAAI,SAAS,GAAG,iBAAiB,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QAC7D,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI,WAAW,CAAC,GAAG,IAAI,CAAC;QAE3D,IAAI,IAAI,CAAC,WAAW,EAAE;YACrB,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC;SAC7B;aAAM;YACN,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;YACpB,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC;SAC7B;QAED,IAAI,QAAQ,GAAG,iBAAiB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAC3D,IAAI,GAAG,CAAC,MAAM,IAAI,YAAY,CAAC,GAAG,IAAI,CAAC;QACvC,IAAI,IAAI,CAAC,WAAW,EAAE;YACrB,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC;SAC3B;aAAM;YACN,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;YACpB,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC;SAC3B;QAED,IAAI,MAAM,CAAC;QACX,IAAI,WAAW,GAAG,cAAc,GAAG,CAAC,CAAC;QACrC,IAAI,SAAS,GAAG,aAAa,GAAG,CAAC,CAAC;QAElC,IAAI,KAAK,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,IAAI,EAAE,CAAC;QACjE,IAAI,GAAG,GAAG,iBAAiB,CAAC,SAAS,CAAC,aAAa,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/D,IAAI,IAAI,CAAC,WAAW,EAAE;YACrB,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,GAAG,0CAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC;SACrD;aAAM;YACN,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,GAAG,0CAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC;SACrD;QAED,MAAM,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;QAEvG,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,YAAY,CAAC,eAAe,GAAG,MAAM,CAAC;IACvC,CAAC;IAED,6BAA6B,CAAC,YAA6B,EAAE,IAAyB;QAErF,MAAM,SAAS,GAAG,mCAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,mCAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAErC,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAEtD,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC;QAC7D,MAAM,aAAa,GAAG,WAAW,GAAG,WAAW,CAAC;QAEhD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,WAAW,GAAG,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC,CAAE,2BAA2B;QAE1F,MAAM,qBAAqB,GAAG,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAC;QAExE,IAAI,SAAS,GAAG,qBAAqB,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QACjE,6DAA6D;QAC7D,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,aAAa,CAAC,GAAG,IAAI,CAAC;QAC1C,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClB,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC;SAC7B;aACI;YACJ,mBAAmB;YACnB,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;YACpB,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC;SAC7B;QAED,IAAI,QAAQ,GAAG,qBAAqB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAC/D,IAAI,GAAG,CAAC,IAAI,IAAI,YAAY,CAAC,GAAG,IAAI,CAAC;QACrC,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClB,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC;SAC3B;aACI;YACJ,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;YACpB,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC;SAC3B;QAED,IAAI,MAAM,CAAC;QACX,IAAI,WAAW,GAAG,cAAc,GAAG,CAAC,CAAC;QACrC,IAAI,SAAS,GAAG,aAAa,GAAG,CAAC,CAAC;QAElC,IAAI,KAAK,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,IAAI,EAAE,CAAC;QACrE,IAAI,GAAG,GAAG,qBAAqB,CAAC,SAAS,CAAC,aAAa,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAEnE,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClB,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,GAAG,0CAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC;SACrD;aACI;YACJ,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,GAAG,0CAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC;SACrD;QAED,MAAM,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;QAEvG,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE9B,YAAY,CAAC,sBAAsB,GAAG,MAAM,CAAC;IAC9C,CAAC;IAED,8BAA8B,CAAC,YAA6B,EAAE,IAAkC;QAC/F,MAAM,SAAS,GAAG,mCAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,mCAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAE1D,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAEtD,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC;QAC7D,MAAM,aAAa,GAAG,WAAW,GAAG,WAAW,CAAC;QAEhD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,WAAW,GAAG,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC;QAE7D,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;QAC5D,IAAI,SAAS,GAAG,eAAe,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QAC3D,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI,WAAW,CAAC,GAAG,IAAI,CAAC;QAC3D,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACtB,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC;SAC7B;aAAM;YACN,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;YACpB,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC;SAC7B;QAED,IAAI,QAAQ,GAAG,eAAe,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QACzD,IAAI,GAAG,CAAC,MAAM,IAAI,YAAY,CAAC,GAAG,IAAI,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACtB,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC;SAC3B;aAAM;YACN,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;YACpB,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC;SAC3B;QAED,IAAI,MAAM,CAAC;QACX,IAAI,WAAW,GAAG,cAAc,GAAG,CAAC,CAAC;QACrC,IAAI,SAAS,GAAG,aAAa,GAAG,CAAC,CAAC;QAElC,IAAI,KAAK,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,IAAI,EAAE,CAAC;QAC/D,IAAI,GAAG,GAAG,eAAe,CAAC,SAAS,CAAC,aAAa,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7D,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACtB,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,GAAG,0CAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC;SACrD;aAAM;YACN,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,GAAG,0CAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC;SACrD;QAED,eAAe;QACf,mFAAmF;QACnF,IAAI;QAEJ,MAAM,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;QAEvG,eAAe;QACf,8CAA8C;QAC9C,+CAA+C;QAC/C,uCAAuC;QACvC,iCAAiC;QACjC,KAAK;QACL,IAAI;QAEJ,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,YAAY,CAAC,gBAAgB,GAAG,MAAM,CAAC;IACxC,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,MAAc;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAE3B,IAAI,OAAO,GAAG,mCAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,UAAU,GAAG,mCAAM,CAAC,OAAO,CAAC,CAAC;QAEjC,qDAAqD;QACrD,IAAI,QAAQ,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAElD,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,MAAM,QAAQ,GAAG,CAAC,SAAwB,EAAE,IAAa,EAAE,EAAE;YAC5D,IAAI,KAAK,GAAG;gBACX,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE;gBACxB,GAAG,EAAE,SAAS,CAAC,KAAK,EAAE;gBACtB,IAAI;aACJ,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO,KAAK,CAAC;QACd,CAAC,CAAC;QAEF,6CAA6C;QAC7C,IAAI,YAAY,GAAG,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAE/C,iFAAiF;QACjF,wEAAwE;QACxE,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE;YAC9D,IAAI,IAAI,GAAW,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAE/C,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,WAAW,EAAE,QAAQ,EAAE,EAAE;gBAC1D,+CAA+C;gBAE/C,IAAI,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;gBAE/B,kFAAkF;gBAClF,IAAI,IAAI,KAAK,QAAQ,EAAE;oBACtB,YAAY,CAAC,GAAG,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC;oBAEtC,oBAAoB;oBACpB,YAAY,GAAG,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;oBAC1C,QAAQ,GAAG,IAAI,CAAC;iBAChB;gBAED,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC;gBAEjB,8BAA8B;gBAC9B,UAAU,GAAG,mCAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;aACjD;SACD;QAED,iFAAiF;QACjF,YAAY,CAAC,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAEjD,iCAAiC;QACjC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAClB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC7F,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,uBAAuB,CACtB,SAAoB,EACpB,QAAkB,EAClB,cAAiC,EACjC,cAAmC,EAAE;QAErC,qEAAqE;QACrE,MAAM,YAAY,GAAG,yCAAO,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC,GAAG,CAC9G,EAAE,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAClB,CAAC;QAEF,6GAA6G;QAC7G,MAAM,uBAAuB,GAAG,EAAE,CAAC;QACnC,MAAM,0BAA0B,GAAG,EAAE,CAAC;QAEtC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC1B,IAAI,CAAC,CAAC,WAAW,EAAE;gBAClB,MAAM,SAAS,GAAG,mCAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;gBAC1C,MAAM,GAAG,GAAG,IAAI,mBAAmB,CAAC,CAAC,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC5E,uBAAuB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aACjC;iBAAM;gBACN,MAAM,GAAG,GAAG,IAAI,mBAAmB,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACtF,0BAA0B,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aACpC;QACF,CAAC,CAAC,CAAC;QAEH,mGAAmG;QACnG,MAAM,YAAY,GAAkB,YAAY,CAAC,MAAM,CAAC,CAAC,KAAoB,EAAE,IAAI,EAAE,EAAE;YACtF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACzC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;aACtC;YAED,OAAO,KAAK,CAAC;QACd,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,2GAA2G;QAC3G,MAAM,2BAA2B,GAAG,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;YAClE,MAAM,SAAS,GAAG,mCAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;YACjD,MAAM,MAAM,GAAG,mCAAM,CAAC,WAAW,CAAC,IAAI,CAAC;iBACrC,OAAO,CAAC,KAAK,CAAC;iBACd,MAAM,EAAE;iBACR,OAAO,EAAE,CAAC;YAEZ,+DAA+D;YAC/D,MAAM,YAAY,GAAG,IAAI,mBAAmB,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;YACxF,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;YAEhF,qDAAqD;YACrD,MAAM,QAAQ,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;YACrD,MAAM,SAAS,GAAG,uBAAuB,CAAC,YAAY,CAAC,CAAC;YAExD,+GAA+G;YAC/G,OAAO;gBACN,WAAW;gBACX,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;aAC7C,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,yHAAyH;QACzH,oCAAoC;QACpC,IAAI,MAAM,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,uBAAuB,EAAE,EAAE;YACjF,MAAM,WAAW,GAAG,uBAAuB,CAAC,WAAW,CAAC;YACxD,MAAM,YAAY,GAAG,uBAAuB,CAAC,YAAY,CAAC;YAE1D,yGAAyG;YACzG,IAAI,gBAAgB,GAAG,IAAI,CAAC,iCAAiC,CAC5D,WAAW,CAAC,OAAO,EACnB,WAAW,CAAC,IAAI,EAChB,YAAY,CACZ,CAAC;YAEF,sDAAsD;YACtD,OAAO,0CAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QACzC,CAAC,EAAE,WAAW,CAAC,CAAC;QAEhB,OAAO,MAAM,CAAC;IACf,CAAC;IAEO,WAAW;QAClB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;IAEO,iCAAiC,CACxC,OAAe,EACf,IAAU,EACV,YAA6B;QAE7B,IAAI,kBAAkB,GAAwB,EAAE,CAAC;QAEjD,MAAM,OAAO,GAAG,mEAAqB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAE3D,gFAAgF;QAChF,MAAM,QAAQ,GAAG,CAAC,SAAwB,EAAE,SAAkB,EAAE,WAAqB,EAAE,UAAoB,EAAE,EAAE;YAC9G,IAAI,KAAK,GAAsB;gBAC9B,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE;gBACtB,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE;gBACxB,GAAG,EAAE,SAAS,CAAC,KAAK,EAAE;gBACtB,KAAK,EAAE,EAAE;gBACT,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,EAAE,GAAG,OAAO;gBACxB,aAAa,EAAE,KAAK;gBACpB,gBAAgB,EAAE,KAAK;gBACvB,SAAS,EAAE,YAAY;gBACvB,WAAW,EAAE,SAAS;gBACtB,SAAS,EAAE,SAAS;gBACpB,WAAW,EAAE,WAAW;gBACxB,UAAU,EAAE,UAAU;gBACtB,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,kBAAkB;aACrF,CAAC;YACF,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/B,OAAO,KAAK,CAAC;QACd,CAAC,CAAC;QAEF,IAAI,CAAC,YAAY,EAAE;YAClB,OAAO,kBAAkB,CAAC;SAC1B;QAED,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QAEtC,4DAA4D;QAC5D,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QACnD,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC;QAC1B,WAAW,CAAC,WAAW,GAAG,YAAY,CAAC,WAAW,CAAC;QACnD,WAAW,CAAC,SAAS,GAAG,EAAE,CAAC;QAC3B,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAE1D;;;WAGG;QACH,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QAE7D;;WAEG;QACH,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;QAE5D;;WAEG;QACH,MAAM,qBAAqB,GAAG,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAC;QAExE,iEAAiE;QAEjE,sCAAsC;QACtC,IAAI,eAAe,GAAG,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAErE,0EAA0E;QAC1E,IAAI,eAAe,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAEnE,0EAA0E;QAC1E,IAAI,cAAc,GAAG,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAExE,6CAA6C;QAC7C,IAAI,YAAY,GAAG,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QACtD,gEAAgE;QAChE,IAAI,oBAAuC,CAAC;QAE5C,IAAI,UAAU,GAAG,mCAAM,CAAC,OAAO,CAAC,CAAC;QAEjC,uGAAuG;QACvG,oFAAoF;QACpF,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE;YAC1E,IAAI,IAAI,GAAW,iBAAiB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC3D,IAAI,cAAc,GAAW,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YACnE,IAAI,oBAAoB,GAAW,qBAAqB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAE/E,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,WAAW,EAAE,QAAQ,EAAE,EAAE;gBAC1D,+CAA+C;gBAE/C,IAAI,WAAW,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,WAAW,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;gBAChD,IAAI,UAAU,GAAG,CAAC,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;gBAErD,kFAAkF;gBAClF,IAAI,WAAW,KAAK,eAAe,IAAI,WAAW,KAAK,eAAe,EAAE;oBACvE,YAAY,CAAC,GAAG,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC;oBAEtC,oBAAoB;oBACpB,YAAY,GAAG,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,IAAI,WAAW,CAAC,CAAC;oBAC7E,eAAe,GAAG,WAAW,CAAC;oBAC9B,eAAe,GAAG,WAAW,CAAC;iBAC9B;gBAED,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,EAAE;oBAEpC,IAAI,UAAU,EAAE;wBACf,oBAAoB;wBACpB,oBAAoB,GAAG,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;qBAC/D;yBACI;wBACJ,oBAAoB,CAAC,GAAG,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC;qBAC9C;iBACD;gBAED,cAAc,GAAG,UAAU,CAAC;gBAE5B,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC;gBACjB,cAAc,GAAG,cAAc,IAAI,CAAC,CAAC;gBACrC,oBAAoB,GAAG,oBAAoB,IAAI,CAAC,CAAC;gBAEjD,8BAA8B;gBAC9B,UAAU,GAAG,mCAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;aACjD;SACD;QAED,iFAAiF;QACjF,YAAY,CAAC,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAEjD,6GAA6G;QAC7G,0CAA0C;QAC1C,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC;QAEnG,OAAO,kBAAkB,CAAC;IAC3B,CAAC;;0FAhdW,qBAAqB;sHAArB,qBAAqB,WAArB,qBAAqB,mBAFrB,MAAM;;;;;;;;;;;;;;;;;;;;;;;AClG+D;AAM5D;;;;;;;;ICLpB,yEAAyG;IACxG,wEAAoG;IAErG,4DAAM;;;IACN,yEAA6D;IAC5D,yEAAkG;IACnG,4DAAM;;;IAGP,yEAA4D;IACjC,kFAAuB;IAAA,4DAAM;;ADGlD,MAAM,0BAA0B;IAStC,YACS,EAAsB;QAAtB,OAAE,GAAF,EAAE,CAAoB;QATvB,oBAAe,GAAG,KAAK,CAAC;QAW/B,IAAI,CAAC,SAAS,EAAE,CAAC;IAClB,CAAC;IAED,WAAW,CAAC,IAAI;QACf,IAAI,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAE3B,IAAI,CAAC,SAAS,EAAE,CAAC;SACjB;IACF,CAAC;IAED,gBAAgB;QACf,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC7B,CAAC;IAED,OAAO;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IAED,OAAO;QACN,OAAO,+DAAqB,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,UAAU;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC;IAChD,CAAC;IAED,SAAS;QACR,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED,YAAY,CAAC,GAAG;QACf,gEAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;IAEO,SAAS;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACzB,SAAS,EAAE,CAAC,EAAE,EAAE,+DAAmB,CAAC;YACpC,QAAQ,EAAE,CAAC,EAAE,EAAE,+DAAmB,CAAC;YACnC,WAAW,EAAE,CAAC,EAAE,EAAE,+DAAmB,CAAC;SACtC,CAAC,CAAC;IACJ,CAAC;IAEO,mBAAmB;QAC1B,8DAA8D;QAC9D,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;SACtC;aAAM;YACN,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;SACzC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;SACpB;IACF,CAAC;;oGArEW,0BAA0B;wHAA1B,0BAA0B;QCfvC,0EAAyE;QAEvE,sHAGM;QACN,sHAEM;QACP,4DAAM;QAEN,sHAEM;QAEN,yFAKC;QADA,mKAAW,sBAAkB,IAAC;QAE/B,4DAAsB;;QArBa,+EAAkB;QAE9C,0DAAgC;QAAhC,gGAAgC;QAIhC,0DAA+B;QAA/B,+FAA+B;QAKjB,0DAAqC;QAArC,qGAAqC;QAKzD,0DAAgD;QAAhD,6GAAgD;;;;;;;;;;;;;;;;;;;;;;;;ACfkC;AAM9D;;;;;;;;ICNrB,sEAAuE;IAGpE,2EAAgI;IAEjI,4DAAM;IAGP,oFAIuB;IACxB,4DAAM;;;IAV2C,0DAAwC;IAAxC,wGAAwC;IACzC,0DAAuC;IAAvC,uGAAuC;IAKrF,0DAA6D;IAA7D,6HAA6D;;ADKzD,MAAM,0BAA0B;IAMtC,YACS,EAAsB;QAAtB,OAAE,GAAF,EAAE,CAAoB;QAE9B,IAAI,CAAC,SAAS,EAAE,CAAC;IAClB,CAAC;IAED,OAAO;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IAEO,SAAS;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACzB,sBAAsB,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC;YAClC,qBAAqB,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC;SACjC,CAAC,CAAC;IACJ,CAAC;;oGArBW,0BAA0B;wHAA1B,0BAA0B;QCfvC,0EAAyE;QACxE,sHAaM;QACP,4DAAO;;QAf6B,+EAAkB;QAC/C,0DAA+D;QAA/D,mIAA+D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACS/C;AAEK;AAGwE;;;;;;;;;;;;ICGjG,sEAA8B;IACe,uDAAc;IAAA,4DAAO;;;IAA/C,0DAAyB;IAAzB,qFAAyB;IAAC,0DAAc;IAAd,4EAAc;;ADF9D,MAAM,GAAG;CAGR;AAaM,MAAM,4BAA4B;IAWxC,YAAoB,EAAqB,EAAU,MAAiB,EAAU,KAAoB;QAA9E,OAAE,GAAF,EAAE,CAAmB;QAAU,WAAM,GAAN,MAAM,CAAW;QAAU,UAAK,GAAL,KAAK,CAAe;QAJxF,YAAO,GAAG,IAAI,uDAAY,EAA2B,CAAC;IAIsC,CAAC;IAEvG,WAAW;QACV,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;IAED,GAAG;QACF,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC;QAEvB,IAAI,CAAC,YAAY,EAAE,CAAC;IACrB,CAAC;IAED,IAAI;QACH,IAAI,CAAC,YAAY,EAAE,CAAC;IACrB,CAAC;IAED,MAAM;QACL,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QACf,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAE/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAEO,YAAY;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAE1C,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACpE,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4GAA0B,EAAE;YAC5D,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK;YACvC,QAAQ,EAAE;gBACT,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM;gBACtC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM;aACpC;YACD,IAAI,EAAE;gBACL,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,SAAS,EAAE,IAAI,CAAC,SAAS;aACzB;SACD,CAAC,CAAC;QACH,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YAC1C,IAAI,MAAM,KAAK,IAAI,EAAE;gBACpB,IAAI,CAAC,UAAU,EAAE,CAAC;aAClB;YACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,UAAU;QACjB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;QAE1B,IAAI,IAAI,CAAC,cAAc,EAAE;YACxB,IAAI,IAAI,CAAC,SAAS,EAAE;gBACnB,IAAI,OAAO,GAAG,wCAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC;gBACnE,IAAI,OAAO,EAAE;oBACZ,MAAM,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;iBACpC;aACD;SACD;QAED,IAAI,IAAI,CAAC,eAAe,EAAE;YACzB,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;SAC9B;QAED,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QAEf,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,SAAS,EAAE;YAChD,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;SAClC;QAED,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,WAAW,EAAE;YAClD,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;SACtC;QAED,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACtD,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;SAC9B;QAED,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,cAAc,EAAE;YAClD,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;SAC5B;QAED,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE;YAC7C,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;SAChC;QAED,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAClD,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;SAC7B;QAED,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAE1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACvB,CAAC;IAEO,MAAM,CAAC,IAAY,EAAE,MAAc,SAAS;QACnD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACd,IAAI;YACJ,SAAS,EAAE,GAAG;SACd,CAAC,CAAC;IACJ,CAAC;;wGAvHW,4BAA4B;0HAA5B,4BAA4B;;;;;;QCjCzC,4EAAgF;QAErD,uDAAsB;QAAA,4DAAM;QAErD,yEAAkD;QACjD,qEAAoB;QACpB,4EAA8L;QAAjB,oJAAS,UAAM,IAAC;QAC5L,2EAAU;QAAA,oEAAS;QAAA,4DAAW;QAE/B,6EAAoM;QAAnB,qJAAS,YAAQ,IAAC;QAClM,4EAAU;QAAA,kEAAM;QAAA,4DAAW;QAK9B,0EAAkI;QAC9F,wDAAa;QAAA,4DAAO;QACvD,0EAAiC;QAChC,2HAEM;QACP,4DAAM;QAEN,2EAAkD;QACkI,qJAAS,UAAM,IAAC;QAClM,4EAAU;QAAA,qEAAS;QAAA,4DAAW;QAE/B,8EAA0M;QAAnB,qJAAS,YAAQ,IAAC;QACxM,4EAAU;QAAA,kEAAM;QAAA,4DAAW;;QA1BJ,0DAAsB;QAAtB,qFAAsB;QAItC,0DAAwD;QAAxD,4JAAwD;QAAC,6JAA6D;QAGtH,0DAA0D;QAA1D,8JAA0D;QAAC,+JAA+D;QAOhG,0DAAa;QAAb,4EAAa;QAE1B,0DAAO;QAAP,6EAAO;QAMpB,0DAAwD;QAAxD,4JAAwD;QAAC,6JAA6D;QAGtH,0DAA0D;QAA1D,8JAA0D;QAAC,+JAA+D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzBnD;AAIhD;AAMZ;;;;;;;;;;;;;;;ICEnB,2EASY;;;IAJX,qFAAqB;;;IAMtB,yEAMU;;;IAEV,yEAMU;;;IAEV,yEAMU;;;IAGT,6EAAqH;;;IACrH,6EAAiH;;;IAFlH,0EAAsE;IACrE,8IAAqH;IACrH,8IAAiH;IAClH,4DAAM;;;IAFS,0DAAiC;IAAjC,oGAAiC;IACjC,0DAA+B;IAA/B,kGAA+B;;;IAM9C,6EAAqH;;;IACrH,6EAAiH;;;IACjH,6EAAgH;;;IAChH,6EAAwH;;;IACxH,6EAA+G;;;IAC/G,6EAAmH;;;IANpH,0EAA0F;IACzF,8IAAqH;IACrH,8IAAiH;IACjH,8IAAgH;IAChH,8IAAwH;IACxH,8IAA+G;IAC/G,8IAAmH;IACpH,4DAAM;;;IANS,0DAAiC;IAAjC,oGAAiC;IACjC,0DAA+B;IAA/B,kGAA+B;IAC/B,0DAA0B;IAA1B,6FAA0B;IAC1B,0DAA4B;IAA5B,+FAA4B;IAC5B,0DAAkC;IAAlC,qGAAkC;IAClC,0DAAkC;IAAlC,qGAAkC;;AD3C5C,MAAM,0BAA0B;IAKtC,YACQ,SAAmD,EAC1B,IAAS,EACjC,EAAsB,EACtB,MAAqB,EACrB,SAAwB;QAJzB,cAAS,GAAT,SAAS,CAA0C;QAC1B,SAAI,GAAJ,IAAI,CAAK;QACjC,OAAE,GAAF,EAAE,CAAoB;QACtB,WAAM,GAAN,MAAM,CAAe;QACrB,cAAS,GAAT,SAAS,CAAe;IAC7B,CAAC;IAEL,QAAQ;QACP,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;QAErC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEnC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;YAC3D,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;gBACpB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,gBAAgB;aACzD,CAAC;SACF;IACF,CAAC;IAED,UAAU;QACT,0DAA0D;QAC1D,oEAAoE;QACpE,qEAAqE;QACrE,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,EACtC,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAErC,OAAO,GAAG,WAAW,KAAK,MAAM,GAAG,CAAC;IACrC,CAAC;IAED,MAAM;QACL,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,0CAA0C,CAAC,CAAC;QACjG,gEAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;IAEO,SAAS;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACzB,QAAQ,EAAE,CAAC,EAAE,CAAC;YACd,IAAI,EAAE,CAAC,EAAE,CAAC;YACV,SAAS,EAAE,CAAC,EAAE,EAAE,+DAAmB,CAAC;YACpC,gBAAgB,EAAE,CAAC,EAAE,CAAC;YACtB,cAAc,EAAE,CAAC,EAAE,CAAC;YACpB,cAAc,EAAE,CAAC,EAAE,CAAC;YACpB,iBAAiB,EAAE,CAAC,EAAE,CAAC;YACvB,SAAS,EAAE,CAAC,EAAE,CAAC;YACf,WAAW,EAAE,CAAC,EAAE,CAAC;SACjB,CAAC,CAAC;IACJ,CAAC;;oGAvDW,0BAA0B,uMAO7B,qEAAe;wHAPZ,0BAA0B;QCnBvC,sEAAK;QAEuE,uDAA2B;QAAA,4DAAM;QAC3G,qEAAoB;QACpB,4EAAiG;QAAnB,kJAAS,YAAQ,IAAC;QAC/F,2EAAU;QAAA,+DAAI;QAAA,4DAAW;QAE1B,4EAAwF;QAC7E,iEAAK;QAAA,4DAAW;QAI5B,2EAA4E;QAApB,mJAAU,YAAQ,IAAC;QAC1E,0EAAqG;QACpG,oIASY;QAEZ,gIAMU;QAEV,gIAMU;QAEV,iIAMU;QAEV,yHAGM;QACP,4DAAM;QAEN,2EAAwD;QAAA,kFAAsB;QAAA,4DAAM;QACpF,yHAOM;QACP,4DAAO;;QA9DoE,0DAA2B;QAA3B,0FAA2B;QAUjE,0DAAkB;QAAlB,+EAAkB;QAMnD,0DAA4B;QAA5B,4FAA4B;QAS5B,0DAA6B;QAA7B,6FAA6B;QAQ7B,0DAA6B;QAA7B,6FAA6B;QAQ7B,0DAA0B;QAA1B,0FAA0B;QAMP,0DAA4B;QAA5B,4FAA4B;QAO5C,0DAA8B;QAA9B,8FAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3Cf;AACK;AAK8E;AAClD;;;;;;;;;;;ICnBvD,sEAAkD;IAKhD,kUAAW,2FAA0B,KAAC;IACvC,4DAA4B;;;;IAJ3B,0DAAgB;IAAhB,4EAAgB;;;;IAahB,4EAAqJ;IAA/B,+WAAS,wFAAoB,KAAC;IACnJ,+EAA6D;IAAA,8DAAG;IAAA,4DAAW;IAC3E,uEAAM;IAAA,uDAAc;IAAA,4DAAO;;;IAFN,8IAAwD;IACnE,0DAAkD;IAAlD,8GAAkD;IACtD,0DAAc;IAAd,4EAAc;;;IARvB,yEAAwD;IACvD,qEAAoB;IACpB,+EAAkK;IACvJ,8DAAG;IAAA,4DAAW;IAEzB,oFAA0B;IACzB,+HAGS;IACV,4DAAW;;;;IARsG,0DAA0B;IAA1B,kFAA0B;IAIpC,0DAAe;IAAf,wFAAe;;ADYjH,MAAM,uBAAuB;IAcnC,YACS,EAAqB,EACrB,GAAe;QADf,OAAE,GAAF,EAAE,CAAmB;QACrB,QAAG,GAAH,GAAG,CAAY;QAbxB,eAAU,GAAY,IAAI,CAAC;QAMjB,YAAO,GAAG,IAAI,uDAAY,EAAW,CAAC;IAQ5C,CAAC;IAEL,WAAW,CAAC,OAAO;QAClB,IAAI,OAAO,CAAC,aAAa,EAAE;YAC1B,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC3B;IACF,CAAC;IAED,eAAe;QAEd,mDAAmD;QACnD,oGAAoG;QACpG,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7E,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,kBAAkB,CAAC,KAAc;QAChC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAc,EAAE,EAAE;YAC/F,CAAC,CAAC,YAAY,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,kBAAkB,CAAC,OAAO;QACzB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,UAAU,CAAC,QAAgB;QAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;QAC1E,WAAW,CAAC,QAAQ,GAAG,EAAE,CAAC;QAC1B,WAAW,CAAC,IAAI,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE/C,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC;IAEO,mBAAmB;QAC1B,IAAI,CAAC,uBAAuB,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YACpE,OAAO,CAAC,CAAC,IAAI,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAC1F,MAAM,UAAU,GAAG,8CAAY,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAClF,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC;;8FAjEW,uBAAuB;qHAAvB,uBAAuB;kEAYxB,kEAAc;kEADX,kHAA4B;;;;;;QCvC3C,0EAAS;QACR,mHAOM;QAEN,mHAWM;QACP,4DAAU;;QArBa,0DAA0B;QAA1B,gGAA0B;QAS1C,0DAAgB;QAAhB,gFAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACTwB;AAES;AAEqE;AAChB;AAC/B;AAC2B;AACqB;AAC5C;AACuC;AACxB;AACL;AACmC;AAC9B;AACiC;AACM;AACY;AACnE;AACyD;AACf;AACN;AACX;AACe;AACP;AACoB;AACY;AAC6C;AAC7D;AACpB;AAC+D;AACpD;AACqC;AAC3E;AACJ;AACqF;AACuB;AACpE;AACiB;AACA;AAC/B;AACH;AACiB;AAClB;AACmB;AAC0B;AACT;AAClC;AACX;AAC4C;AACT;AAC9C;AACwC;AACD;AACM;AACH;AACzB;AACN;AACpB;;AAuGjE,MAAM,mBAAmB;;sFAAnB,mBAAmB;iHAAnB,mBAAmB;sHAFpB,CAAC,yFAAoB,EAAE,2FAAqB,EAAE,uFAAuB,EAAE,kHAA4B,CAAC,YAlGrG,0DAAY,EAAE,kEAAY;oIAoGxB,mBAAmB,mBAlG9B,sIAAuB;QACvB,sHAA8B;QAC9B,uIAA2B;QAC3B,kIAAoB;QACpB,0GAA0B;QAC1B,qGAAmB;QACnB,yIAA0B;QAC1B,2GAA0B;QAC1B,4IAA2B;QAC3B,kJAA6B;QAC7B,8JAA0B;QAC1B,2FAAgB;QAChB,oJAA+B;QAC/B,qIAA4B;QAC5B,+HAA0B;QAC1B,oHAAuB;QACvB,mIAA0B;QAC1B,4HAA0B;QAC1B,gJAAgC;QAChC,4JAAkC;QAClC,wMAAsC;QACtC,4IAA8B;QAC9B,wHAAwB;QACxB,uLAAqC;QACrC,mIAA6B;QAC7B,wKAAwC;QACxC,6FAAsB;QACtB,8KAAuC;QACvC,qMAA8C;QAC9C,iIAA2B;QAC3B,kJAAgC;QAChC,kJAAgC;QAChC,mHAAuB;QACvB,gHAAsB;QACtB,iIAA2B;QAC3B,+GAAqB;QACrB,kIAA4B;QAC5B,4JAAoC;QACpC,mJAAiC;QACjC,iHAA4B;QAC5B,sGAAmB;QACnB,kJAA6B;QAC7B,yIAA0B;QAC1B,2FAAgB;QAChB,mIAAkC;QAClC,kIAAyB;QACzB,wIAA2B;QAC3B,qIAA0B;QAC1B,4GAA2B;QAC3B,sGAAyB;QACzB,kFAAmB,aApDV,0DAAY,EAAE,kEAAY,aAuDnC,sIAAuB;QACvB,sHAA8B;QAC9B,kIAAoB;QACpB,0GAA0B;QAC1B,qGAAmB;QACnB,yIAA0B;QAC1B,2GAA0B;QAC1B,4IAA2B;QAC3B,kJAA6B;QAC7B,8JAA0B;QAC1B,2FAAgB;QAChB,qIAA4B;QAC5B,+HAA0B;QAC1B,oHAAuB;QACvB,4HAA0B;QAC1B,gJAAgC;QAChC,4JAAkC;QAClC,wMAAsC;QACtC,4IAA8B;QAC9B,wHAAwB;QACxB,uLAAqC;QACrC,6FAAsB;QACtB,8KAAuC;QACvC,iIAA2B;QAC3B,kJAAgC;QAChC,kJAAgC;QAChC,mHAAuB;QACvB,gHAAsB;QACtB,iIAA2B;QAC3B,+GAAqB;QACrB,kIAA4B;QAC5B,4JAAoC;QACpC,mJAAiC;QACjC,iHAA4B;QAC5B,sGAAmB;QACnB,kJAA6B;QAC7B,yIAA0B;QAC1B,2FAAgB;QAChB,mIAAkC;QAClC,4GAA2B;QAC3B,sGAAyB;QACzB,kFAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;IE5JnB,uEAAyE;IAA/C,sSAAS,iFAAe,oBAAoB,CAAC,KAAC;IAAC,6EAAkB;IAAA,4DAAI;;;;IAC/F,uEAAkE;IAA3C,sSAAS,iFAAe,gBAAgB,CAAC,KAAC;IAAC,yEAAc;IAAA,4DAAI;;;;IACpF,uEAAkE;IAA3C,sSAAS,iFAAe,gBAAgB,CAAC,KAAC;IAAC,yEAAc;IAAA,4DAAI;;;IAIpF,qEAA8D;;;IAC9D,0EAAyE;IAAA,6EAAkB;IAAA,4DAAM;;;IACjG,qEAAqE;;;IAAzC,gKAAkC;;;IAE9D,qEAA2D;;;IAC3D,0EAAkE;IAAA,yEAAc;IAAA,4DAAM;;;IACtF,qEAA+D;;;IAAtC,6JAA+B;;;IAExD,qEAA2D;;;IAC3D,0EAAkE;IAAA,yEAAc;IAAA,4DAAM;;;IACtF,qEAA+D;;;IAAtC,8JAA+B;;ADLnD,MAAM,6BAA6B;IAYzC,YACS,YAA0B;QAA1B,iBAAY,GAAZ,YAAY,CAAc;IAChC,CAAC;IAEJ,QAAQ;QACP,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;QAC1G,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QACpG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QAEpG,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;QAC5E,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QACtE,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;IACvE,CAAC;IAED,cAAc,CAAC,QAAQ;QACtB,UAAU,CAAC,GAAG,EAAE;YACf,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACjD,IAAI,MAAM,EAAE;gBACX,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,cAAc,EAAE,CAAC;aACxB;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,WAAW,CAAC,IAAY;QAC/B,IAAI,CAAC,IAAI,EAAE;YACV,OAAO,IAAI,CAAC;SACZ;QACD,OAAO,IAAI,CAAC,iBAAiB,EAAE,KAAK,SAAS,CAAC;IAC/C,CAAC;;0GAzCW,6BAA6B;2HAA7B,6BAA6B;QCb1C,yEAAuB;QAErB,qHAA+F;QAC/F,qHAAoF;QACpF,qHAAoF;QACrF,4DAAM;QAEN,yEAAiC;QAChC,yHAA8D;QAC9D,yHAAiG;QACjG,yHAAqE;QAErE,yHAA2D;QAC3D,2HAAsF;QACtF,2HAA+D;QAE/D,2HAA2D;QAC3D,2HAAsF;QACtF,2HAA+D;QAChE,4DAAM;;QAjBD,0DAAoB;QAApB,oFAAoB;QACpB,0DAAiB;QAAjB,iFAAiB;QACjB,0DAAiB;QAAjB,iFAAiB;QAIf,0DAAoB;QAApB,oFAAoB;QACI,0DAAoB;QAApB,oFAAoB;QAC5C,0DAAoB;QAApB,oFAAoB;QAEpB,0DAAiB;QAAjB,iFAAiB;QACG,0DAAiB;QAAjB,iFAAiB;QACrC,0DAAiB;QAAjB,iFAAiB;QAEjB,0DAAiB;QAAjB,iFAAiB;QACG,0DAAiB;QAAjB,iFAAiB;QACrC,0DAAiB;QAAjB,iFAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;IEjBxB,yEAAyF;IAE7D,uDAAe;IAAA,4DAAO;IAChD,0EAAuE;IAAA,8DAAG;IAAA,4DAAO;IACjF,0EAAuE;IAAA,6DAAE;IAAA,4DAAO;;;IAFtD,0DAAe;IAAf,6EAAe;IACJ,0DAAiC;IAAjC,yJAAiC;IAClC,0DAAkC;IAAlC,0JAAkC;;ADOlE,MAAM,wCAAwC;;gIAAxC,wCAAwC;sIAAxC,wCAAwC;QCZrD,yEAAuB;QACtB,oIAMM;QACP,4DAAM;;QAPiB,0DAAkD;QAAlD,wHAAkD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDkC;AAC/E;AAQN;AAKwF;;;;;;;;;;;;;;;;;;;ICT1G,2EAAoF;IACnF,6EAA+E;IAC/E,iFAGyC;IAAxC,oUAAW,6FAA2B,KAAC;IACxC,6DAAY;;;IAL0B,2DAA2B;IAA3B,4FAA2B;IAEhE,2DAA+C;IAA/C,uHAA+C;;;IA8B/C,wGAEc;;;IAKf,yGAGyC;;;IAFxC,8FAA6B;;;IAM9B,4FAC4B;;;IADD,8FAA6B;;;IAhD1D,0EAA6C;IAC5C,iIAOM;IAEN,0EAA6D;IAQ1D,yGACyC;IAC1C,6DAAM;IAEN,2EAA0C;IACzC,4FAC4B;IAC7B,6DAAM;IAIR,2EAAkD;IACjD,yGACyC;IAEzC,4EAAqC;IACpC,kJAEc;IACf,6DAAM;IAGP,iOAKc;IAEd,iOAGc;IACf,6DAAM;;;;IAlD4D,2DAAiB;IAAjB,qFAAiB;IAiBvC,2DAA6B;IAA7B,8FAA6B;IAK1C,2DAA6B;IAA7B,8FAA6B;IAOlB,2DAA6B;IAA7B,8FAA6B;IAKlE,2DAA8B;IAA9B,kFAA8B;;;;;;IAwBjC,qFAIC;IAGC,wYAAS,6FAAsB,KAAC;IAEhC,4EAKC;IACA,wDACD;;IAAA,6DAAO;IACP,gFAGC;IACA,wDACD;IAAA,6DAAW;;;;IApBZ,qLAAmD;IASjD,2DAEE;IAFF,oKAEE;IAEF,2DACD;IADC,wKACD;IAGC,2DAA8C;IAA9C,2HAA8C;IAE9C,2DACD;IADC,sHACD;;;;IAMF,2EAGC;IAMC,0VAAW,mFAAgB,KAAC,qSAClB,wFAAqB,KADH;IAG7B,6DAA6B;;;;IAP5B,2DAA4C;IAA5C,kHAA4C;;;IAnChD,2EAAuC;IAErC,iKAwBgB;IACjB,6DAAe;IAEf,2EAA2C;IAC1C,4IAaM;IACP,6DAAM;;;IAvCgB,2DAA6B;IAA7B,wGAA6B;IA0B7B,2DAA6B;IAA7B,wGAA6B;;;IAjCtD,+EAA+E;IAC9E,6IA+Cc;IACf,6DAAU;;;IAIR,2EAA0D;IACzD,6EAKa;IAKd,6DAAM;;;IAXiC,oFAAkB;IAIvD,2DAAmC;IAAnC,qGAAmC;;;IANvC,+EAAwF;IACvF,6IAac;IACf,6DAAU;;;ADtGJ,MAAM,sBAAsB;IAqBlC,YACS,OAA6B,EAC7B,uBAAgD,EAChD,EAAsB;QAFtB,YAAO,GAAP,OAAO,CAAsB;QAC7B,4BAAuB,GAAvB,uBAAuB,CAAyB;QAChD,OAAE,GAAF,EAAE,CAAoB;QAvBvB,sBAAiB,GAAG,KAAK,CAAC;QAMxB,YAAO,GAAG,IAAI,wDAAY,EAAQ,CAAC;QAmB5C,IAAI,CAAC,SAAS,EAAE,CAAC;IAClB,CAAC;IAED,WAAW,CAAC,OAAO;QAClB,IAAI,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC;QAClE,IAAI,IAAI,CAAC,YAAY,CAAC,+BAA+B,EAAE;YACtD,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,+BAA+B,CAAC;SACtE;QAED,IAAI,iBAAiB,GAAG,MAAM,EAAE;YAC/B,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC;SACrC;aAAM;YACN,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,GAAG,EAAE,CAAC;SAChD;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;QACjD,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QAEjC,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,EAAE;YAC3C,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;SACtB;QAED,IAAI,OAAO,CAAC,OAAO,EAAE;YACpB,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC;YAC3E,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;gBACpB,2BAA2B,EAAE,IAAI,CAAC,OAAO,CAAC,2BAA2B;aACrE,CAAC,CAAC;SACH;IACF,CAAC;IAED,OAAO;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IAED,mBAAmB,CAAC,QAAQ;QAC3B,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;QAC7B,IAAI,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YAC5C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;SACvD;IACF,CAAC;IAED,mBAAmB,CAAC,KAAK;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC;QACvD,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEjD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;QAC/D,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC;QAElC,mEAAmE;QACnE,UAAU,CAAC,GAAG,EAAE;YACf,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;YAEtB,IAAI,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,eAAe,CAAC,CAAC;YACjF,IAAI,CAAC,IAAI,EAAE;gBACV,OAAO;aACP;YACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACjB,CAAC,EAAE,GAAG,CAAC,CAAC;IACT,CAAC;IAED,IAAI,sBAAsB;QACzB,iFAAiF;QACjF,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAChF,CAAC;IAED,aAAa,CAAC,CAAuB;QACpC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,cAAc;QACb,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;IAED,aAAa,CAAC,iBAAuC;QACpD,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE;YACjC,oBAAoB;YACpB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YACzE,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAEjD,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,EAAE;gBAC3C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;gBAC1D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;aAC/D;iBAAM;gBACN,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;gBACjC,IAAI,CAAC,YAAY,GAAG,CAAE,CAAC,CAAC;aACxB;SACD;IACF,CAAC;IAED,qBAAqB,CAAC,iBAAuC;QAC5D,OAAO,IAAI,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IAC9E,CAAC;IAED,oBAAoB,CAAC,iBAAuC;QAC3D,OAAO,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;IAC7E,CAAC;IAED,yBAAyB;IACzB,UAAU;QACT,OAAO,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IAClD,CAAC;IAED,SAAS;QACR,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;IAChC,CAAC;IAED,OAAO;QACN,IAAI,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,CAAC;QACvD,IAAI,QAAQ,GAAG,yCAAO,CAAC,UAAU,EAAG,CAAC,CAAC,EAAE,CAAC,+DAAqB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC7E,OAAO,QAAQ,CAAC;IACjB,CAAC;IAEO,SAAS;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACzB,2BAA2B,EAAE,IAAI;SACjC,CAAC,CAAC;IACJ,CAAC;;4FAjJW,sBAAsB;qHAAtB,sBAAsB;mEASpB,sHAA8B;;;;;;QChC7C,oFACqD;QAApD,wLAAuB,+BAA2B,IAAC;QACnD,8EAAqC;QACpC,oIAqDc;QACf,6DAAU;QAEV,2HAiDU;QAEV,2HAeU;QACX,6DAAgB;;QA9HoB,4FAA8B;QA2D3B,2DAAuC;QAAvC,wGAAuC;QAmDnC,2DAA4C;QAA5C,6GAA4C;;;;;;;;;;;;;;;;;;;;;AC7GtD;AACkB;AAK7B;;;AAKf,MAAM,oBAAoB;IAChC,YACS,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAC3B,CAAC;IAEJ,oBAAoB;QACnB,IAAI,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;QAC9C,IAAI,cAAc,GAAG,SAAS,CAAC;QAC/B,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;YAC/B,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACrC;QAED,MAAM,UAAU,GAAG;YAClB,QAAQ,EAAE,sDAAY,EAAE;YACxB,SAAS,EAAE,CAAC;YACZ,yBAAyB,EAAE,cAAc;YACzC,aAAa,EAAE,mCAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;YAC/C,uBAAuB,EAAE,EAAE;YAC3B,sBAAsB,EAAE,EAAE;YAC1B,KAAK,EAAE,EAAE;YACT,wBAAwB,EAAE,CAAC;YAC3B,eAAe,EAAE,0DAAgB;YACjC,oBAAoB,EAAE,0DAAgB;YACtC,UAAU,EAAE,0DAAgB;YAC5B,kBAAkB,EAAE,0DAAgB;YACpC,8BAA8B,EAAE,0DAAgB;YAChD,4BAA4B,EAAE,0DAAgB;YAC9C,WAAW,EAAE,0DAAgB;YAC7B,sCAAsC,EAAE,0DAAgB;YACxD,yCAAyC,EAAE,0DAAgB;YAC3D,wBAAwB,EAAE,0DAAgB;YAC1C,YAAY,EAAE,0DAAgB;YAC9B,eAAe,EAAE,EAAE;YACnB,eAAe,EAAE,EAAE;SACnB,CAAC;QAEF,OAAO,UAAkC,CAAC;IAC3C,CAAC;;wFArCW,oBAAoB;qHAApB,oBAAoB,WAApB,oBAAoB,mBAFpB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;ACV4D;AAC9C;AACqB;;;;;;;;;;;ICsClD,0EAAsE;IAC3D,qEAAU;IAAA,4DAAQ;IACzB,gEAAK;IACL,qFAAoD;IAChD,uEAA4G;IAG5G,yFAAyG;IAAtD,wZAAiB,6FAAmC,KAAC;IAAC,4DAAiB;IAE9H,iEAAI;IACV,+EAAoG;IAAtE,wUAAa,sGAAmC,IAAP,4PAAW,iFAAgB,KAA3B;IAA8B,4DAAU;IAC5G,+EAA8G;IAA3E,wUAAa,2GAAwC,IAAP,4PAAW,iFAAgB,KAA3B;IAA8B,4DAAU;;;;IAPzF,0DAAmD;IAAnD,mHAAmD;IACrE,0DAA4B;IAA5B,8EAA4B;IACF,0DAAkB;IAAlB,oEAAkB;IAI/B,0DAAyC;IAAzC,uGAAyC;IACjC,0DAA8C;IAA9C,4GAA8C;;AD1C/E,MAAM,iCAAiC;IAM7C;QALS,oBAAe,GAAoB,IAAI,8DAAe,EAAE,CAAC;QACxD,YAAO,GAAG,IAAI,uDAAY,EAAmB,CAAC;QAEhD,UAAK,GAAG,IAAI,IAAI,EAAE,CAAC;IAG3B,CAAC;IAED,QAAQ;IACR,CAAC;IAED,YAAY,CAAC,MAAc;QAC1B,IAAI,CAAC,eAAe,CAAC,aAAa,GAAG,MAAM,CAAC;QAC5C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAEzC,CAAC;IAEM,0BAA0B,CAAC,oBAA6B;QAC9D,IAAI,CAAC,eAAe,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;IAClE,CAAC;IAED,cAAc,CAAC,UAAU;QACxB,UAAU,CAAC,IAAI,EAAE,CAAC;IACnB,CAAC;IAED,eAAe,CAAC,SAAe,EAAE,UAAgB;QAChD,gGAAgG;QAEhG,IAAI,CAAC,eAAe,CAAC,yBAAyB,GAAG,mCAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACvF,IAAI,CAAC,eAAe,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAExC,UAAU,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAED,cAAc;QACb,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACzC,CAAC;;kHAtCW,iCAAiC;+HAAjC,iCAAiC;QCT9C,yEAAqC;QAEf,qFAA0B;QAAA,4DAAI;QAC5C,yEAAkD;QAClB,sJAAS,iBAAa,MAAM,CAAC,IAAC;QACtD,kEAAgD;QAEpD,4DAAM;QACN,yEAA4D;QAAhC,sJAAS,iBAAa,OAAO,CAAC,IAAC;QACvD,mEAAgD;QAEpD,4DAAM;QACN,0EAA6D;QAAjC,uJAAS,iBAAa,QAAQ,CAAC,IAAC;QACxD,mEAAkD;QAEtD,4DAAM;QACN,0EAA6D;QAAjC,uJAAS,iBAAa,QAAQ,CAAC,IAAC;QACxD,mEAAkD;QAEtD,4DAAM;QACN,0EAA6D;QAAjC,uJAAS,iBAAa,QAAQ,CAAC,IAAC;QACxD,mEAAiD;QAErD,4DAAM;QAEV,iEAAK;QACL,2EAA6B;QACjB,0JAAS,iBAAa,KAAK,CAAC,IAAC;QACjC,uEAAK;QACD,oEAAgE;QAChE,wEAAM;QAAA,iEAAK;QAAA,4DAAO;QAK9B,yEAAQ;QAAA,6EAAiB;QAAA,4DAAQ;QACjC,2EAAwB;QACpB,wDACJ;;QAAA,4DAAM;QAEV,iIAYM;QACN,sFAAwE;QAC5D,6EAAiB;QAAA,4DAAY;QACvC,gFAA8H;QAA3E,mOAA8C,sGAAW,oBAAgB,IAA3B;QAA6B,4DAAW;QAE3I,sFAAwE;QACzD,oFAAwB;QAAA,4DAAY;QAC/C,gFAAiI;QAAvE,+NAA0C,sGAAW,oBAAgB,IAA3B;QAA6B,4DAAW;;QAtBxI,2DACJ;QADI,0LACJ;QAEE,0DAA0C;QAA1C,0GAA0C;QAeK,0DAA8C;QAA9C,yGAA8C;QAIrC,0DAA0C;QAA1C,qGAA0C;;;;;;;;;;;;;;;;;;;;;;;;;ACzDtE;AACoE;AACe;AACS;;;;;;AAO3H,MAAM,4BAA4B;IAexC;QAFA,oBAAe,GAAoB,IAAI,8DAAe,EAAE,CAAC;IAGzD,CAAC;IAGD,QAAQ;IACR,CAAC;IAED,WAAW,CAAC,OAAO;QAClB,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE;YACpC,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAC;SAClF;QAED,IAAI,IAAI,CAAC,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE;YAE/D,sGAAsG;YACtG,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAC;SAElF;IACF,CAAC;IAEO,uBAAuB,CAAC,sBAAiD;QAChF,IAAI,CAAC,eAAe,CAAC,oBAAoB,GAAG,EAAE,CAAC;QAC/C,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACvF,IAAI,CAAC,sBAAsB,CAAC,0BAA0B,EAAE,sBAAsB,CAAC,wBAAwB,CAAC,CAAC;QACzG,IAAI,CAAC,sBAAsB,CAAC,yBAAyB,EAAE,sBAAsB,CAAC,uBAAuB,CAAC,CAAC;QACvG,IAAI,CAAC,sBAAsB,CAAC,yBAAyB,EAAE,sBAAsB,CAAC,oBAAoB,CAAC,CAAC;QACpG,IAAI,CAAC,sBAAsB,CAAC,qBAAqB,EAAE,sBAAsB,CAAC,sBAAsB,CAAC,CAAC;QAClG,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,EAAE,sBAAsB,CAAC,uBAAuB,CAAC,CAAC;QAEpG,IAAI,CAAC,eAAe,CAAC,gBAAgB,GAAG,sBAAsB,CAAC,eAAe,CAAC;QAC/E,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,sBAAsB,CAAC,sBAAsB,CAAC;QAClF,IAAI,CAAC,eAAe,CAAC,cAAc,GAAG,sBAAsB,CAAC,iBAAiB,CAAC;QAC/E,IAAI,CAAC,eAAe,CAAC,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC;QAChF,IAAI,CAAC,eAAe,CAAC,WAAW,GAAG,sBAAsB,CAAC,WAAW,CAAC;QACtE,IAAI,CAAC,eAAe,CAAC,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC;QAChF,IAAI,CAAC,eAAe,CAAC,yBAAyB,GAAG,oDAAM,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAEnH,IAAI,KAAK,GAAW,sBAAsB,CAAC,4BAA4B,CAAC;QACxE,KAAK,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACrC,IAAI,CAAC,eAAe,CAAC,aAAa,GAAG,wGAAyD,CAAC,KAAK,CAAC,CAAC;QACtG,IAAI,CAAC,eAAe,CAAC,oBAAoB,GAAG,sBAAsB,CAAC,oBAAoB,CAAC;QAExF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;IAEO,sBAAsB,CAAC,IAAY,EAAE,KAAc,EAAE,eAAwB,KAAK;QACzF,IAAI,8BAA8B,GAAgC,IAAI,0EAA2B,EAAE,CAAC;QACpG,8BAA8B,CAAC,IAAI,GAAG,IAAI,CAAC;QAC3C,8BAA8B,CAAC,KAAK,GAAG,KAAK,CAAC;QAC7C,8BAA8B,CAAC,YAAY,GAAG,YAAY,CAAC;QAC3D,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAEhF,CAAC;IAED,uBAAuB,CAAC,OAAwB;QAC/C,IAAI,CAAC,oCAAoC,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC9E,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,YAAY,CAAC,OAAwB;QACpC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;QAC/B,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,oBAAoB,EAAG,yBAAyB;SACrG;YACC,OAAO,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACrE,IAAI,CAAC,qCAAqC,CAAC,0BAA0B,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;SACpG;QACD,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC;IACzC,CAAC;IAEO,aAAa,CAAC,OAAwB,EAAE,WAAoB,EAAE,WAAoB;QACzF,IAAI,WAAW,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,SAAS,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACtF,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,wBAAwB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACrG,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,uBAAuB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACpG,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACjG,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,sBAAsB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACnG,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,uBAAuB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;SAEpG;QACD,IAAI,WAAW,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;YAC/E,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,sBAAsB,GAAG,OAAO,CAAC,YAAY,CAAC;YAClF,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;YAChF,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;YAEtE,IAAI,OAAO,CAAC,gBAAgB,IAAI,IAAI,EAAE;gBAErC,IAAI,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC;gBAC1D,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,gBAAgB,GAAG,oDAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;aAC5H;YAED,IAAI,KAAK,GAAG,kHAAmE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;YAClH,IAAI,KAAK,IAAI,CAAC;gBAAE,KAAK,GAAG,IAAI,CAAC,CAAC,KAAK;YACnC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,4BAA4B,GAAG,KAAK,CAAC;SACzE;QAED,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAEnC,CAAC;;wGAjHW,4BAA4B;0HAA5B,4BAA4B;kEAO7B,iIAAiC;kEAGjC,0IAAoC;;;;;;QCtBhD,yEAAwD;QAQpD,yLAAW,wBAAoB,IAAC;QAEhC,4DAAoC;QAGrC,yEAA0C;QAGzC,sLAAW,mCAA+B,IAAC;QAC3C,4DAAiC;QAKpC,yEAAkD;QACjD,+FACoC;QACpC,yEAAqC;QACpC,6FACiC;QAClC,4DAAM;;QAtBJ,0DAAqC;QAArC,gGAAqC;QASrC,0DAAmC;QAAnC,gGAAmC;;;;;;;;;;;;;;;;;;;;;;ACfwC;AACzB;;;;;;;ICEnD,yEAAsD;IACrD,kEAA8D;IAE/D,4DAAM;;;IAFiB,0DAAmC;IAAnC,gKAAmC;;;;;IAH5D,yEAAmF;IAEjF,sIAGM;IACN,0EAA0B;IAAC,uDAAe;IAAA,4DAAO;IACjD,4EAAyG;IAAhC,6WAAS,yFAAqB,KAAC;IAAC,8DAAG;IAAA,4DAAS;IACrH,4EAAyG;IAAhC,6WAAS,yFAAqB,KAAC;IAAC,6DAAE;IAAA,4DAAS;;;IAN9G,0DAAuB;IAAvB,sFAAuB;IAIF,0DAAe;IAAf,uFAAe;IACH,0DAAiC;IAAjC,yJAAiC;IAClC,0DAAkC;IAAlC,0JAAkC;;ADDpE,MAAM,oCAAoC;IAM9C;QAJS,YAAO,GAAG,IAAI,uDAAY,EAAmB,CAAC;QAC/C,oBAAe,GAAoB,IAAI,8DAAe,EAAG,CAAC;IAIlE,CAAC;IAEM,YAAY,CAAC,MAAa;QAE9B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;IAC/B,CAAC;IAEO,eAAe,CAAC,IAAI;QAEzB,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,QAAQ;QAC9C,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,SAAS;QAE/C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAE3C,CAAC;IAEO,qBAAqB,CAAC,IAAI,EAAC,KAAK,EAAC,aAAa;QAEnD,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAC7E;YACE,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;SAC1H;IACJ,CAAC;IAEF,QAAQ;IACR,CAAC;;wHAlCU,oCAAoC;kIAApC,oCAAoC;QCRjD,yEAAuB;QACtB,gIAUM;QACP,4DAAM;;QAXiB,0DAA4C;QAA5C,6GAA4C;;;;;;;;;;;;;;;;;;;ACD5D,MAAM,eAAe;CAY3B;AAEM,MAAM,2BAA2B;CAMvC;AAEM,MAAM,qBAAqB;;AAElB,yDAAmC,GAAG,CAAC,KAAK,EAAC,MAAM,EAAC,OAAO,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;ACxBd;AACK;AAYzE;;;;;AASf,MAAM,kCAAkC;IAkB9C,YAAoB,EAAsB;QAAtB,OAAE,GAAF,EAAE,CAAoB;QAVhC,YAAO,GAAG,IAAI,uDAAY,EAA4B,CAAC;QAWhE,IAAI,CAAC,SAAS,EAAE,CAAC;IAClB,CAAC;IAED,WAAW,CAAC,OAAO;QAClB,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE;YACpC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;SAC9C;QAED,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE;YAEtC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEnC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;YAE/D,iDAAiD;YACjD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAa,EAAE,EAAE;gBAC/E,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;YAEH,sDAAsD;YACtD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAa,EAAE,EAAE;gBAClF,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;YAEjD,IAAI,IAAI,CAAC,qBAAqB,EAAE;gBAC/B,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,CAAC;aACzC;YACD,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;SACpF;QAED,IAAI,OAAO,CAAC,QAAQ,EAAE;YACrB,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAClB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;aACpB;iBAAM;gBACN,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;aACnB;SACD;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;IACtB,CAAC;IAED,SAAS,CAAC,OAAgB;QACzB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACvB,OAAO,EAAE,CAAC;SACV;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;QACnG,OAAO,MAAM,CAAC;IACf,CAAC;IAED,YAAY,CAAC,UAAmB;QAC/B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAChB,OAAO,EAAE,CAAC;SACV;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;QACrG,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,cAAc,CAAC,YAAqB;QACnC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACnB,OAAO,EAAE,CAAC;SACV;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,EAAE,KAAK,YAAY,CAAC,CAAC;QAC9G,OAAO,WAAW,CAAC;IACpB,CAAC;IAED,OAAO,CAAC,KAA+B;QACtC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YAC1B,OAAO;SACP;QAED,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,OAAO;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IAED,YAAY,CAAC,GAAG;QACf,gEAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,wEAA8B,CAAC,CAAC;IACxE,CAAC;IAEO,SAAS,CAAC,EAAU;QAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9F,IACC,CAAC,IAAI,CAAC,KAAK;YACX,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,MAAM;YACxC,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,EACxF;YACD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;gBACpB,sBAAsB,EAAE,SAAS;aACjC,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC;SAChD;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QACxE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACxD,CAAC;IAEO,YAAY,CAAC,EAAU;QAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACtF,IACC,CAAC,IAAI,CAAC,QAAQ;YACd,CAAC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,MAAM;YAC7C,CAAC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,EAC/F;YACD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;gBACpB,wBAAwB,EAAE,SAAS;aACnC,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,wBAAwB,GAAG,SAAS,CAAC;SAClD;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QAC9E,IAAI,CAAC,aAAa,EAAE,CAAC;IACtB,CAAC;IAEO,aAAa;QACpB,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClB,OAAO;SACP;QAED,sCAAsC;QACtC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAC1D,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAC3D,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC;QAEjE,+DAA+D;QAC/D,IAAI,CAAC,YAAY;YACjB,IAAI,CAAC,YAAY,CAAC,kBAAkB;YACpC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,MAAM;YAC3C,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM;YACrE,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YAC3D,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QAE9D,IAAI,CAAC,KAAK;YACV,IAAI,CAAC,KAAK,CAAC,qBAAqB;YAChC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,MAAM;YACvC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM;YACjE,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YAC9D,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QAEjE,IAAI,CAAC,QAAQ;YACb,IAAI,CAAC,QAAQ,CAAC,uBAAuB;YACrC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,MAAM;YAC5C,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM;YACtE,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YAChE,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IACpE,CAAC;IAEO,SAAS;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACzB,mBAAmB,EAAE,CAAC,EAAE,EAAE,+DAAmB,CAAC;YAC9C,sBAAsB,EAAE,CAAC,EAAE,EAAE,+DAAmB,CAAC;YACjD,wBAAwB,EAAE,CAAC,EAAE,EAAE,+DAAmB,CAAC;SACnD,CAAC,CAAC;IACJ,CAAC;;oHA9KW,kCAAkC;gIAAlC,kCAAkC;QCtB/C,0EAAuD;QAGpD,0EAOY;QACb,4DAAM;QAEN,yEAAoB;QACnB,0EAOY;QACb,4DAAM;QAEN,yEAAoB;QACnB,0EAOY;QACb,4DAAM;;QAjC4B,+EAAkB;QAOlD,0DAAkB;QAAlB,+EAAkB;QAWlB,0DAAqB;QAArB,kFAAqB;QAWrB,0DAAuB;QAAvB,oFAAuB;;;;;;;;;;;;;;;;;;;;;;AC5B0C;AAC8B;;;;;AAEnG;;GAEG;AAOI,MAAM,4BAA4B;IAQxC,YAAoB,EAAe;QAAf,OAAE,GAAF,EAAE,CAAa;IACnC,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;gBACpB,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;aACnC,CAAC,CAAC;SACH;QAED,0DAA0D;QAC1D,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE;YACrC,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAErC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;gBACxB,OAAO;aACP;YACD,IAAI,GAAG,GAAG,mEAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACpD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,SAAS,CAAC,GAAQ;QAEzB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAC;YAClB,IAAI,CAAC,OAAO,CAAC,SAAS,GAAI,mEAAqB,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YAC9D,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;SACrC;IACF,CAAC;IAED,SAAS;QACR,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACzB,WAAW,EAAE,IAAI,uDAAW,CAAC,EAAC,KAAK,EAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAC,CAAC;SACjF,CAAC,CAAC;IACJ,CAAC;;wGA3CW,4BAA4B;0HAA5B,4BAA4B;QCbzC,0EAAuD;QAErD,wEAMU;QACX,4DAAM;;QAT6B,+EAAkB;;;;;;;;;;;;;;;;;;ACAG;;AAKlD,MAAM,mBAAmB;IAHhC;QAKC,yBAAoB,GAAG,IAAI,uDAAY,EAAE,CAAC;KAM1C;IAJA,qBAAqB,CAAC,KAAa;QAClC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;IAClC,CAAC;;sFAPW,mBAAmB;oHAAnB,mBAAmB,WAAnB,mBAAmB,mBAFnB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;ACF6E;;;;;;;;;;;ICDhG,2FAIC;IADA,oVAAW,qFAAoB,KAAC;IAEjC,4DAAwB;;;IAHvB,uFAAuB;;;;IAKxB,iGAIC;IADA,gWAAW,qFAAoB,KAAC;IAEjC,4DAA8B;;;IAH7B,uFAAuB;;;;IAKxB,0FAIC;IADA,oVAAW,sFAAoB,KAAC;IAEjC,4DAAuB;;;IAHtB,uFAAuB;;;;IAKxB,kGAIC;IADA,oWAAW,sFAAoB,KAAC;IAEjC,4DAA+B;;;IAH9B,uFAAuB;;;IAKxB,qGAIuC;;;IAFtC,oFAAoB;;;;IAIrB,uGAKC;IADA,8WAAW,sFAAoB,KAAC;IAEjC,4DAAoC;;;IAJnC,uFAAuB;;AD1BjB,MAAM,2BAA2B;IANxC;QAUW,YAAO,GAAG,IAAI,uDAAY,EAAyB,CAAC;KAK9D;IAHA,YAAY,CAAC,SAAgC;QAC5C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;;sGARW,2BAA2B;yHAA3B,2BAA2B;QCVxC,2JAKwB;QAExB,uKAK8B;QAE9B,yJAKuB;QAEvB,yKAK+B;QAE/B,yLAIuC;QAEvC,mLAMoC;;QAvClC,kIAAkE;QAOlE,0DAA8D;QAA9D,8HAA8D;QAO9D,0DAAwD;QAAxD,wHAAwD;QAOxD,0DAA4E;QAA5E,4IAA4E;QAO5E,0DAAgF;QAAhF,gJAAgF;QAMhF,0DAAkE;QAAlE,kIAAkE;;;;;;;;;;;;;;;;;;;AC7B7D,MAAe,uBAAuB;;8FAAvB,uBAAuB;qHAAvB,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;ACN6D;AACxB;AAKV;;;;;;;;;AAWjE,MAAM,0BAA2B,SAAQ,gFAAuB;IAQtE,YACS,EAAsB,EACtB,OAAqB,EACrB,KAAwB;QAEhC,KAAK,EAAE,CAAC;QAJA,OAAE,GAAF,EAAE,CAAoB;QACtB,YAAO,GAAP,OAAO,CAAc;QACrB,UAAK,GAAL,KAAK,CAAmB;QAGhC,IAAI,CAAC,SAAS,EAAE,CAAC;IAClB,CAAC;IAED,OAAO;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IAED,UAAU;QACT,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAED,SAAS;QACR,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC;IAC9D,CAAC;IAED,WAAW,CAAC,OAAO;QAClB,IAAI,IAAI,CAAC,MAAM,EAAE;YAChB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;gBACpB,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB;aAClD,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;gBAChE,IAAI,CAAC,MAAM,CAAC,kBAAkB,GAAG,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;SACxB;IACF,CAAC;IAED,eAAe;QACd,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;IAC5B,CAAC;IAED,mBAAmB,CAAC,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACrB,CAAC;IAEO,SAAS;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACzB,kBAAkB,EAAE,CAAC,EAAE,EAAE,+DAAmB,CAAC;SAC7C,CAAC,CAAC;IACJ,CAAC;;oGA5DW,0BAA0B;wHAA1B,0BAA0B;;;;;;QCjBvC,0EAAuD;QAGpD,2EAGU;QACX,4DAAM;QAEN,yEAAmC;QAClC,2EAGa;QAEb,oGAIyC;QAAxC,oLAAW,+BAA2B,IAAC;QACxC,4DAAiC;;QApBA,+EAAkB;QAYlD,0DAAkC;QAAlC,0HAAkC;QAIlC,0DAA6B;QAA7B,0FAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACfA;AACL;AAQ4C;;;;;;;;;;;;ICEvE,+FAKoC;IAAnC,sVAAW,uFAAsB,KAAC;IACnC,4DAAyB;;;IAHxB,mFAAmB;;ADKd,MAAM,2BAA4B,SAAQ,gFAAuB;IASvE,YACS,MAAqB,EACrB,OAAqB;QAE7B,KAAK,EAAE,CAAC;QAHA,WAAM,GAAN,MAAM,CAAe;QACrB,YAAO,GAAP,OAAO,CAAc;IAG9B,CAAC;IAED,UAAU;QACT,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAED,SAAS;QACR,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,WAAW,EAAE,CAAC;IACpB,CAAC;IAED,GAAG,CAAC,KAAK;QACR,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,OAAO,GAA+B;YAC1C,eAAe,EAAE,mCAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;YACjD,oBAAoB,EAAE,CAAC;YACvB,sBAAsB,EAAE,CAAC;SACzB,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;IAED,IAAI,CAAC,OAAkC;QACtC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,CAAC;IAED,MAAM,CAAC,OAAkC;QACxC,wCAAM,CAAC,IAAI,CAAC,MAAM,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;IAED,aAAa,CAAC,OAAkC;QAC/C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,CAAC;IAED,cAAc,CAAC,OAAkC;QAChD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;IAEO,WAAW;QAClB,IAAI,CAAC,UAAU,GAAG;YACjB,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,cAAc,EAAE,iBAAiB,CAAC;SAC7D,CAAC;IACH,CAAC;;sGAlEW,2BAA2B;yHAA3B,2BAA2B;;;;;;;;QCpBxC,yEAAuC;QAOrC,kKAAQ,gBAAY,IAAC,8GACX,kBAAc,IADH,wGAEd,eAAW,IAFG;QAGtB,4DAAoB;QAEpB,6JAMyB;QAC1B,4DAAM;;QAfJ,0DAAyB;QAAzB,sFAAyB;QAUxB,0DAAa;QAAb,6EAAa;;;;;;;;;;;;;;;;;;;;;;;ACdqF;AACnB;AAK5D;;;;;;;AAQf,MAAM,0BAA0B;IAQtC,YACS,EAAsB;QAAtB,OAAE,GAAF,EAAE,CAAoB;QAHrB,YAAO,GAAG,IAAI,uDAAY,EAA6B,CAAC;QAKjE,IAAI,CAAC,SAAS,EAAE,CAAC;IAClB,CAAC;IAED,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,OAAO;YAClB,CAAC,CAAC,oBAAoB;YACtB,CAAC,CAAC,qBAAqB,CAAC;IAC1B,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,WAAW;QACV,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YACpB,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe;YAC7C,oBAAoB,EAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB;YACvD,sBAAsB,EAAE,IAAI,CAAC,OAAO,CAAC,sBAAsB;SAC3D,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;SACrB;IACF,CAAC;IAED,cAAc,CAAC,CAAC;QACf,MAAM,OAAO,GAAgC,IAAI,CAAC,IAAI,CAAC,KAAM,CAAC;QAC9D,IAAI,OAAO,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC;QAC9C,IAAI,KAAK,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC;QAE1C,IAAI,CAAC,OAAO,EAAE;YACb,OAAO;SACP;QAED,IAAI,OAAO,GAAG,EAAE,EAAE;YACjB,KAAK,IAAI,OAAO,GAAG,EAAE,CAAC;YACtB,OAAO,GAAG,OAAO,GAAG,EAAE,CAAC;YAEvB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;gBACpB,oBAAoB,EAAE,KAAK;gBAC3B,sBAAsB,EAAE,OAAO;aAC/B,CAAC,CAAC;SACH;IACF,CAAC;IAEO,gBAAgB,CAAC,CAA4B;QACpD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACrB,OAAO;SACP;QAED,gEAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAEO,SAAS;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACzB,eAAe,EAAE,CAAC,SAAS,EAAE,+DAAmB,CAAC;YACjD,oBAAoB,EAAE,CAAC,SAAS,EAAE,+DAAmB,CAAC;YACtD,sBAAsB,EAAE,CAAC,SAAS,EAAE,+DAAmB,CAAC;SACxD,CAAC,CAAC;IACJ,CAAC;;oGAvEW,0BAA0B;wHAA1B,0BAA0B;;;;;;QCdvC,0EAAyE;QACpD,uDAAY;QAAA,4DAAM;QAEtC,yEAAoB;QACnB,2EAG6C;QAC9C,4DAAM;QAEN,yEAAuC;QACtC,wEAMU;QAEV,6EAM0C;QADzC,uJAAQ,0BAAsB,IAAC;QAEhC,4DAAU;;QA1BwB,+EAAkB;QACjC,0DAAY;QAAZ,2EAAY;QAa9B,0DAAoB;QAApB,6EAAoB;QAQpB,0DAAoB;QAApB,6EAAoB;;;;;;;;;;;;;;;;;;;;;;;ACtByC;AAOQ;;;;;;;;ICLtE,6EACuD;IAIpD,yUAAW,0FAAyB,KAAC;IACtC,4DAAyB;;;IAL1B,iHAAqD;IAGnD,0DAA4B;IAA5B,wFAA4B;;ADQ1B,MAAM,6BAA8B,SAAQ,gFAAuB;IAKzE;QACC,KAAK,EAAE,CAAC;QAHC,YAAO,GAAG,IAAI,uDAAY,EAAW,CAAC;IAIhD,CAAC;IAED,SAAS;QACR,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,iBAAiB,CAAC,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,UAAU;QACT,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;;0GApBW,6BAA6B;2HAA7B,6BAA6B;QCd1C,yEAAuB;QAErB,iIAQU;QACX,4DAAgB;;QATqB,0DAA8B;QAA9B,+HAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAxC;AAEiD;AASvD;;;;;;;;;;;;;;;;ICPrB,mFAAuC;IAGpC,0FAGyB;IAC1B,4DAAM;IAGP,6EAA4B;IAE1B,6FAG4B;IAC7B,4DAAM;IAGP,8EAA0B;IAExB,6FAG0B;IAC3B,4DAAM;;;IApBJ,0DAAkB;IAAlB,kFAAkB;IASlB,0DAAkB;IAAlB,kFAAkB;IASlB,0DAAkB;IAAlB,kFAAkB;;ADPhB,MAAM,mBACZ,SAAQ,uFAAyC;IAQjD,YACC,MAAqB,EACb,MAAc,EACd,KAAqB,EACrB,OAAqB;QAE7B,KAAK,CAAC,MAAM,CAAC,CAAC;QAJN,WAAM,GAAN,MAAM,CAAQ;QACd,UAAK,GAAL,KAAK,CAAgB;QACrB,YAAO,GAAP,OAAO,CAAc;QAI7B,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;QAC3B,IAAI,CAAC,gBAAgB,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC;IAED,QAAQ;QACP,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,aAAa;QACZ,OAAO;YACN,IAAI;YACJ,IAAI,CAAC,OAAO;YACZ,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,QAAQ;SACb,CAAC;IACH,CAAC;IAED,WAAW;QACV,MAAM,MAAM,GAAG,6CAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC1C,CAAC,CAAC,eAAe,GAAG,2DAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IACxE,CAAC;IAED,QAAQ,CAAC,MAAe;QACvB,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;;sFA7CW,mBAAmB;iHAAnB,mBAAmB;;;;;;;;;;QCtBhC,yEAAoC;QAGlC,kKAAU,oBAAgB,IAAC;QAC5B,4DAAwB;QAExB,oIA2BgB;QACjB,4DAAM;;QA5BkB,0DAAc;QAAd,8EAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACU/B,MAAM,gBAAgB;IAQ5B,YACS,MAAc,EACd,KAAqB,EACrB,MAAqB,EACrB,OAAqB,EACrB,MAAuB;QAJvB,WAAM,GAAN,MAAM,CAAQ;QACd,UAAK,GAAL,KAAK,CAAgB;QACrB,WAAM,GAAN,MAAM,CAAe;QACrB,YAAO,GAAP,OAAO,CAAc;QACrB,WAAM,GAAN,MAAM,CAAiB;QAE/B,IAAI,CAAC,gBAAgB,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,WAAW,EAAE,CAAC;IACpB,CAAC;IAED,GAAG,CAAC,CAAC;QACJ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,CAAC,MAA8B;QAClC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,CAAC,MAA8B;QACpC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;YACrF,IAAI,OAAO,CAAC,uBAAuB,CAAC,MAAM,EAAE;gBAC3C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;oBACrB,OAAO,EAAE,iGAAiG;oBAC1G,KAAK,EAAE,eAAe;iBACtB,CAAC;gBACF,OAAO;aACP;YAED,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,WAAW;QAClB,IAAI,CAAC,UAAU,GAAG;YACjB,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;YACjE,EAAE,UAAU,EAAE,kBAAkB,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE;YAC1F,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;YACjE,EAAE,UAAU,EAAE,kBAAkB,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE;YAC1F,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE;SACpF,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAC5D,CAAC;;gFAtDW,gBAAgB;8GAAhB,gBAAgB;;;;;;QChB7B,yEAAuB;QAMrB,uJAAQ,gBAAY,IAAC,mGACX,kBAAc,IADH,6FAEd,eAAW,IAFG;QAKtB,4DAAoB;;QAPnB,0DAAyB;QAAzB,sFAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IEFzB,6EAGC;IAKE,yUAAW,0FAAyB,KAAC;IAEtC,4DAAyB;;;;IAR1B,iHAAqD;IAInD,0DAA4B;IAA5B,wFAA4B;;ADK1B,MAAM,6BAA6B;IAKzC,UAAU;QACT,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAED,SAAS;QACR,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,iBAAiB;QAChB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACrB,CAAC;;0GAfW,6BAA6B;2HAA7B,6BAA6B;QCb1C,yEAAuB;QAErB,iIAYU;QACX,4DAAgB;;QAZa,0DAA8B;QAA9B,+HAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACWrD,MAAM,0BAA0B;IAMtC,YACS,OAAqB;QAArB,YAAO,GAAP,OAAO,CAAc;IAC1B,CAAC;IAEL,UAAU;QACT,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAED,SAAS;QACR,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC;IAC9D,CAAC;IAED,mBAAmB,CAAC,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACrB,CAAC;;oGAxBW,0BAA0B;wHAA1B,0BAA0B;QCdvC,yEAAoB;QAIhB,uDACD;;QAAA,4DAAa;QACb,gFAA+B;QAC9B,uDACD;;QAAA,4DAAa;QACb,2EAAiF;QAClF,4DAAM;QAGP,0EAAmC;QAKjC,qLAAW,+BAA2B,IAAC;QAExC,4DAAiC;;QAhB/B,0DACD;QADC,iMACD;QAEC,0DACD;QADC,+LACD;QACiC,0DAAkC;QAAlC,0HAAkC;QAMnE,0DAA6B;QAA7B,0FAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACZ6C;;;;;;;;;;;;;;ICA5E,mFAAuC;IAGpC,0FAA8E;IAC/E,4DAAM;IAGP,6EAA4B;IAE1B,6FAAuF;IACxF,4DAAM;;;IAP4B,0DAAkB;IAAlB,kFAAkB;IAMZ,0DAAkB;IAAlB,kFAAkB;;ADOtD,MAAM,mBACZ,SAAQ,uFAAyC;IAOjD,YACC,MAAqB,EACb,MAAc,EACd,KAAqB,EACrB,OAAqB;QAE7B,KAAK,CAAC,MAAM,CAAC,CAAC;QAJN,WAAM,GAAN,MAAM,CAAQ;QACd,UAAK,GAAL,KAAK,CAAgB;QACrB,YAAO,GAAP,OAAO,CAAc;QAI7B,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;QAC3B,IAAI,CAAC,gBAAgB,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC;IAED,QAAQ;QACP,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,aAAa;QACZ,OAAO;YACN,IAAI;YACJ,IAAI,CAAC,OAAO;YACZ,IAAI,CAAC,UAAU;SACf,CAAC;IACH,CAAC;IAED,WAAW;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9E,CAAC;IAED,QAAQ,CAAC,MAAe;QACvB,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAC/C,gCAAgC;QAChC,iFAAiF;IAClF,CAAC;;sFAzCW,mBAAmB;iHAAnB,mBAAmB;;;;;;;;QCnBhC,yEAAoC;QACkB,kKAAU,oBAAgB,IAAC;QAAE,4DAAwB;QAE1G,mIAYgB;QACjB,4DAAM;;QAbkB,0DAAc;QAAd,8EAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACc/B,MAAM,gBAAgB;IAM5B,YACS,MAAc,EACd,KAAqB,EACrB,MAAqB,EACrB,OAAqB;QAHrB,WAAM,GAAN,MAAM,CAAQ;QACd,UAAK,GAAL,KAAK,CAAgB;QACrB,WAAM,GAAN,MAAM,CAAe;QACrB,YAAO,GAAP,OAAO,CAAc;IAC1B,CAAC;IAEL,QAAQ;QACP,IAAI,CAAC,WAAW,EAAE,CAAC;IACpB,CAAC;IAED,IAAI,CAAC,CAAyB;QAC7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,EAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3E,CAAC;IAEO,WAAW;QAClB,IAAI,CAAC,UAAU,GAAG;YACjB,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,cAAc,EAAE,eAAe,CAAC;YAC3D,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,aAAa,CAAC;YACvD,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE;SACpF,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAC5D,CAAC;;gFA7BW,gBAAgB;8GAAhB,gBAAgB;;;;;;QCjB7B,yEAAuB;QAMrB,uJAAQ,gBAAY,IAAC;QAGtB,4DAAoB;;QALnB,0DAAyB;QAAzB,sFAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IEH1B,6EAA4C;IAE1C,2EAA8C;IAC/C,4DAAM;;;IADO,0DAAmB;IAAnB,mFAAmB;;;IAIjC,6EAA4C;IAE1C,2EAA6C;IAC9C,4DAAM;;;IADO,0DAAmB;IAAnB,mFAAmB;;ADI3B,MAAM,yBAAyB;IAMrC,YAAoB,OAAqB;QAArB,YAAO,GAAP,OAAO,CAAc;IAAG,CAAC;IAE7C,UAAU;QACT,OAAO,KAAK,CAAC;IACd,CAAC;;kGAVW,yBAAyB;uHAAzB,yBAAyB;QCbtC,gFAAe;QACd,6HAIU;QAEV,6HAIU;QACX,4DAAgB;;QAXW,0DAAgB;QAAhB,gFAAgB;QAMhB,0DAAgB;QAAhB,gFAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;ACPoC;;;;;;;;;;;;ICI3E,0EAAyD;IAAA,4DAAC;IAAA,4DAAO;;;;IAKjE,wFAOC;IADA,qVAAW,qFAAoB,KAAC;IAEjC,4DAAqB;;;IAJpB,mFAAuB;;;;IAMxB,uFAOC;IADA,oVAAW,sFAAoB,KAAC;IAEjC,4DAAoB;;;IAJnB,mFAAuB;;;;IAMxB,8FAMC;IADA,gWAAW,sFAAoB,KAAC;IAEjC,4DAA0B;;;IAJzB,mFAAuB;;;;IAMxB,mGAOC;IADA,4WAAW,sFAAoB,KAAC;IAEjC,4DAAgC;;;IAJ/B,mFAAuB;;;;IAMxB,mGAOC;IADA,6WAAW,sFAAoB,KAAC;IAEjC,4DAAgC;;;IAJ/B,mFAAuB;;;;IAMxB,6FAOC;IADA,iWAAW,sFAAoB,KAAC;IAEjC,4DAA0B;;;IAJzB,mFAAuB;;;IA7D3B,sEAA0C;IAGvC,8HAAiE;IACjE,uDACD;IAAA,4DAAO;IAEP,yEAAwE;IACvE,0JAQqB;IAErB,wJAQoB;IAEpB,oKAO0B;IAE1B,gLAQgC;IAEhC,kLAQgC;IAEhC,sKAQ0B;IAC3B,4DAAM;;;IA/DE,0DAA+B;IAA/B,8FAA+B;IACtC,0DACD;IADC,yGACD;IAEiC,0DAAsC;IAAtC,kGAAsC;IAIpE,0DAAwB;IAAxB,oFAAwB;IAUxB,0DAAuB;IAAvB,mFAAuB;IASvB,0DAA4B;IAA5B,wFAA4B;IAU5B,0DAAiC;IAAjC,6FAAiC;IAUjC,0DAAiC;IAAjC,6FAAiC;IAUjC,0DAAiC;IAAjC,6FAAiC;;ADtDvC,MAAM,iBAAiB;CAGtB;AAOM,MAAM,0BAA0B;IALvC;QASW,YAAO,GAAG,IAAI,uDAAY,EAAyB,CAAC;KAqB9D;IAnBA,QAAQ;QACP,IAAI,CAAC,eAAe,EAAE,CAAC;IACxB,CAAC;IAED,YAAY,CAAC,SAAuB;QACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAEO,eAAe;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC;QAC9C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAC9C,CAAC,CAAC,EAAE;YACH,OAAO;gBACN,SAAS,EAAE,CAAC;gBACZ,IAAI,EAAE,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,iBAAiB,CAAC;aACpE,CAAC;QACH,CAAC,CACD,CAAC;IACH,CAAC;;oGAxBW,0BAA0B;wHAA1B,0BAA0B;QCjBvC,yEAA2B;QAC1B,uHAoEM;QACP,4DAAM;;QArEsB,0DAAa;QAAb,mFAAa;;;;;;;;;;;;;;;;;;;;;ACDsC;;;;;;ICG5E,0EAA+C;IAAA,4DAAC;IAAA,4DAAO;;;;IAGxD,yEAAsE;IACzB,wdAAU,mGAA4B,KAAC;IAAC,uDAElF;IAAA,4DAAe;;;;IAFH,0DAA6B;IAA7B,gGAA6B;IAAyC,0DAElF;IAFkF,sFAElF;;;IARJ,yEAAkD;IAEhD,oIAAuD;IACvD,uDACD;IAAA,4DAAM;IACN,kIAIM;IACP,4DAAM;;;IARG,0DAAqB;IAArB,oFAAqB;IAC5B,0DACD;IADC,+FACD;IAC0C,0DAA0B;IAA1B,+FAA0B;;ADG/D,MAAM,gCAAgC;IAL7C;QASW,YAAO,GAAG,IAAI,uDAAY,EAAgB,CAAC;KAsDrD;IApDA,QAAQ;QACP,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,gBAAgB,CAAC;IAC/D,CAAC;IAED,SAAS,CAAC,MAA4B;QACrC,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QACtC,IAAI,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;QACrE,OAAO,CAAC,CAAC,SAAS,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,IAAwB,EAAE,MAA4B,EAAE,CAAoB;QAClF,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QACtC,IAAI,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;QACrE,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,CAAC,OAAO,EAAE;YACd,IAAI,SAAS,EAAE;gBACd,OAAO;aACP;YAED,mDAAmD;YACnD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,aAAa,EAAE;gBACnD,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;gBACzE,IAAI,eAAe,EAAE;oBACpB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;oBAC7C,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;iBACvB;aACD;YAED,IAAI,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAChD,IAAI,cAAc,EAAE;gBACnB,IAAI,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC;gBACvD,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aACvB;YAED,SAAS,GAAiB;gBACzB,mBAAmB,EAAE,MAAM,CAAC,EAAE;gBAC9B,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;aAC3C,CAAC;YACF,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtB,MAAM,GAAG,SAAS,CAAC;SACnB;aAAM;YACN,IAAI,CAAC,SAAS,EAAE;gBACf,OAAO;aACP;YAED,IAAI,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;YACtE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACvB,MAAM,GAAG,IAAI,CAAC;SACd;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;;gHAzDW,gCAAgC;8HAAhC,gCAAgC;QCT7C,yEAAuB;QACtB,4HAUM;QACP,4DAAM;;QAXmC,0DAAQ;QAAR,8EAAQ;;;;;;;;;;;;;;;;;;;;;;;;;ACDiC;AAEH;AAE1C;;;;;;;;AAY9B,MAAM,sCAAsC;IAUlD,YAAoB,EAAsB;QAAtB,OAAE,GAAF,EAAE,CAAoB;QAPhC,YAAO,GAAG,IAAI,uDAAY,EAAgB,CAAC;QAC3C,YAAO,GAAG,IAAI,uDAAY,EAAgB,CAAC;QAOpD,IAAI,CAAC,SAAS,EAAE,CAAC;IAClB,CAAC;IAED,YAAY;QACX,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAEpG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YACpB,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS;SACnC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,YAAY;aACpB,IAAI,CACJ,mDAAG,CAAC,CAAC,GAAe,EAAE,EAAE;YACvB,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;YAC/C,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;YAE3D,IAAI,CAAC,YAAY,EAAE,CAAC;QACrB,CAAC,CAAC,CACF;aACA,SAAS,EAAE,CAAC;IACf,CAAC;IAED,YAAY;QACX,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAEO,SAAS;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACzB,GAAG,EAAE,CAAC,EAAE,EAAE,+DAAmB,CAAC;YAC9B,SAAS,EAAE,CAAC,EAAE,EAAE,+DAAmB,CAAC;SACpC,CAAC,CAAC;IACJ,CAAC;;4HA/CW,sCAAsC;oIAAtC,sCAAsC;QChBnD,0EAAsH;QAEpH,uDACD;QAAA,4DAAa;QAEb,wEAQU;QAYV,4EAA+D;QAAzB,8JAAS,kBAAc,IAAC;QAAC,2EAAU;QAAA,gEAAK;QAAA,4DAAW;;QAzBtD,+EAAkB;QAEpD,0DACD;QADC,kGACD;QAIC,0DAAqC;QAArC,kGAAqC;QAUrC,0DAAqC;QAArC,kGAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;ACXvC;AACA;AAEA;AACA;;;;;;;;;;;;ICTCI,4DAAAA,cAA2D,CAA3D,EAA2D,wCAA3D,EAA2D,CAA3D;IAIEA,wDAAAA;MAAAA,2DAAAA;MAAA;MAAA,OAAWA,yDAAAA,iCAAX;IAAmC,CAAnC,EAAoC,SAApC,EAAoC;MAAAA,2DAAAA;MAAA;MAAA,OACzBA,yDAAAA,iCADyB;IACD,CADnC;IAEAA,0DAAAA;;;;;;IAJAA,uDAAAA;IAAAA,wDAAAA,uBAAkB,MAAlB,EAAkBC,WAAlB;;;;ADSH,IAAIC,KAAK,GAAG,CAAC,CAAb;AAOM,MAAOC,kCAAP,CAAyC;EAL/CC;IAWW,eAAU,IAAIP,uDAAJ,EAAV;IAEV,mBAAc,IAAID,iDAAJ,CAAoC,IAApC,CAAd;EAoDA;;EA/CAS,YAAY;IACX,KAAKC,OAAL,CAAaC,IAAb,CAAkB,IAAlB;EACA;;EAEDC,gBAAgB,CAACC,IAAD,EAAmB;IAClC,KAAKJ,YAAL;EACA;;EAEDK,gBAAgB,CAACD,IAAD,EAAmB;IAClC,MAAME,KAAK,GAAG,KAAKC,SAAL,CAAeC,UAAf,CAA0BC,OAA1B,CAAkCL,IAAlC,CAAd;IACA,KAAKG,SAAL,CAAeC,UAAf,CAA0BE,MAA1B,CAAiCJ,KAAjC,EAAwC,CAAxC;IACA,KAAKK,WAAL,CAAiBC,IAAjB,CAAsB,KAAKL,SAAL,CAAeC,UAArC;IAEA,KAAKR,YAAL;EACA;;EAEDa,QAAQ;IACP,KAAKC,IAAL,GAAY,KAAKP,SAAL,CAAeQ,gBAAf,CAAgCC,gBAAhC,CAAiD,CAAjD,CAAZ;IACA,KAAKL,WAAL,CAAiBC,IAAjB,CAAsB,KAAKL,SAAL,CAAeC,UAArC;IAEA,KAAKS,UAAL,GAAkB,KAAKH,IAAL,CAAUI,kBAA5B;IAEA,KAAKC,iBAAL,GAAyB,KAAKR,WAAL,CAAiBS,IAAjB,CACxB3B,mDAAG,CAAE4B,KAAD,IAAU;MACb,OAAOA,KAAK,CAAC5B,GAAN,CAAW6B,CAAD,IAAOA,CAAC,CAACC,mBAAnB,CAAP;IACA,CAFE,CADqB,EAIxB9B,mDAAG,CAAE+B,SAAD,IAAc;MACjB,OAAO,KAAKP,UAAL,CAAgBQ,MAAhB,CAAwBC,CAAD,IAAO,CAACA,CAAC,CAACC,SAAH,IAAgB,CAACH,SAAS,CAACI,QAAV,CAAmBF,CAAC,CAACG,EAArB,CAA/C,CAAP;IACA,CAFE,CAJqB,EAOxBpC,mDAAG,CAAEqC,OAAD,IAAY;MACf,OAAOpC,0CAAA,CAASoC,OAAT,EAAmBJ,CAAD,IAAOA,CAAC,CAACM,WAA3B,CAAP;IACA,CAFE,CAPqB,CAAzB;EAWA;;EAEDC,SAAS,CAACC,QAAD,EAAS;IACjB,MAAMC,OAAO,GAAG;MACf;MACAZ,mBAAmB,EAAEW,QAFN;MAGfE,iBAAiB,EAAE,KAAKC,MAAL,CAAYR,EAHhB;MAIfS,iBAAiB,EAAE,KAAKxB,IAAL,CAAUe,EAJd;MAKfU,GAAG,EAAE,CALU;MAMfC,SAAS,EAAE;IANI,CAAhB;IAQA,KAAKjC,SAAL,CAAeC,UAAf,CAA0BiC,IAA1B,CAA+BN,OAA/B;IACA,KAAKxB,WAAL,CAAiBC,IAAjB,CAAsB,KAAKL,SAAL,CAAeC,UAArC;EACA;;AA3D6C;;;mBAAlCV;AAAkC;;;QAAlCA;EAAkC4C;EAAAC;IAAApC;IAAA8B;EAAA;EAAAO;IAAA3C;EAAA;EAAA4C;EAAAC;EAAAC;EAAAC;IAAA;;;MCnB/CrD,4DAAAA;MACCA,wDAAAA;;MAQDA,0DAAAA;MAEAA,4DAAAA;MACCA,uDAAAA;;MAQAA,4DAAAA;MAAmCA,wDAAAA;QAAAA,2DAAAA;;QAAA;;QAAA,OAASA,yDAAAA,0BAAT;MAAgC,CAAhC;MAAoDA,oDAAAA;MAAUA,0DAAAA;;;;;;MAnB3EA,uDAAAA;MAAAA,wDAAAA,YAAAA,yDAAAA;MAiBrBA,uDAAAA;MAAAA,wDAAAA,YAAAA,yDAAAA;MAEOA,uDAAAA;MAAAA,wDAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpBwG;AAC7D;;;;;;;;;;;;;;;;ICShD,+EAA8D;IAAA,iEAAM;IAAA,4DAAW;;;;IALhF,8EAGoC;IAAnC,wWAAW,iGAAsB,KAAC;IAClC,uDACA;IAAA,sIAA+E;IAChF,4DAAW;;;;;IALV,4EAAmB;IAGnB,0DACA;IADA,sJACA;IAA6C,0DAAe;IAAf,kFAAe;;;IAiB7D,iFAAoE;IACnE,uDACD;IAAA,4DAAa;;;IAFsC,4EAAgB;IAClE,0DACD;IADC,iGACD;;ADVI,MAAM,oBAAoB;IALjC;QAaW,YAAO,GAAG,IAAI,uDAAY,EAAgB,CAAC;QAKrD,cAAS,GAAY,IAAI,CAAC;KAoG1B;IAhGA,QAAQ;QACP,IAAI,CAAC,oBAAoB,GAAG,IAAI,8DAAkB,EAAE,CAAC;QACrD,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YACtD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU;aACzC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAClE,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC9B,CAAC;IAED,WAAW,CAAC,OAAO;QAClB,IAAI,OAAO,CAAC,MAAM,EAAE;YACnB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBACjB,IAAI,CAAC,qBAAqB,EAAE,CAAC;aAC7B;YAED,IAAI,IAAI,CAAC,oBAAoB,EAAE;gBAC9B,IAAI,IAAI,CAAC,MAAM,EAAE;oBAChB,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC;iBACnC;qBAAM;oBACN,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;iBACpC;aACD;SACD;IACF,CAAC;IAED,OAAO;QACN,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC;IACpC,CAAC;IAED,SAAS,CAAC,SAAuB;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAC9F,OAAO,MAAM,CAAC;IACf,CAAC;IAED,OAAO,CAAC,IAAwB,EAAE,KAAmC,EAAE,KAAU;QAChF,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACjB,OAAO;SACP;QAED,IAAI,MAAM,GAAyB,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;QAEtD,MAAM,SAAS,GAAiB;YAC/B,mBAAmB,EAAE,MAAM,CAAC,EAAE;YAC9B,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;SAC3C,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QACjD,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE7B,IAAI,KAAK,EAAE;YACV,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;SACjB;QAED,IAAI,CAAC,cAAc,EAAE,CAAC;IACvB,CAAC;IAED,UAAU,CAAC,IAAwB,EAAE,SAAuB;QAC3D,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QACjD,IAAI,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC9C,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAEhC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAEjC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7B,IAAI,CAAC,cAAc,EAAE,CAAC;IACvB,CAAC;IAEO,cAAc;QACrB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IACpC,CAAC;IAEO,qBAAqB;QAC5B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACrB,OAAO;SACP;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;QAClE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;QAC7C,IAAI,QAAQ,GAAG,OAAO,CAAC;QAEvB,oCAAoC;QACpC,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IAEO,aAAa,CAAC,IAAI;QACzB,IAAI,UAAU,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC;QACvD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe;aACzC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;;wFAhHW,oBAAoB;kHAApB,oBAAoB;;;;;;;;;QCnBjC,0EAAsD;QAC1B,uDAAgC;QAAA,4DAAM;QAEjE,iFAAiB;QAEf,0HAMW;QAEX,8EAQc;QADb,2IAAS,aAAS,IAAC;QAPpB,4DAQc;QAEf,yFAGqD;QAApD,2TAAkB,4FAAgC,KAAC;QACnD,gIAEa;QACd,4DAAmB;;;;QA7BO,0DAAgC;QAAhC,wGAAgC;QAI9B,0DAAa;QAAb,mFAAa;QAUvC,0DAA4B;QAA5B,gFAA4B;QAU7B,0DAA8B;QAA9B,uFAA8B;QAEC,0DAAkB;QAAlB,wFAAkB;;;;;;;;;;;;;;;;;;;;;;AC3BoD;;;;;;;ICCvG,yEAA8G;IACnG,uEAAY;IAAA,4DAAW;IACjC,uEAAM;IAAA,uDAAiC;IAAA,4DAAO;;;IAAxC,0DAAiC;IAAjC,8FAAiC;;;;IAGxC,yEAAkD;IAKhD,+TAAW,sFAAqB,KAAC;IAClC,4DAAkB;;;;IAJjB,0DAAuB;IAAvB,uFAAuB;;ADMnB,MAAM,8BAA8B;IAN3C;QAaW,YAAO,GAAG,IAAI,uDAAY,EAAgB,CAAC;KA8BrD;IA5BA,QAAQ;QACP,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,gBAAgB,CAAC;QAC9D,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACvH,IAAI,IAAI,CAAC,cAAc,EAAE;YACxB,IAAI,CAAC,sBAAsB,GAAG,0CAA0C;gBACvE,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,WAAW,WAAW,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAEtF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC3C,IAAI,CAAC,sBAAsB,IAAI,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;aACnE;SACD;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;IAED,aAAa,CAAC,SAAuB;QACpC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IAEO,UAAU;QACjB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACzB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,OAAO;SACP;QACD,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;QAChF,IAAI,CAAC,MAAM,GAAG,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,WAAW,CAAC;IAC5E,CAAC;;4GApCW,8BAA8B;4HAA9B,8BAA8B;QCd3C,yEAAuB;QACtB,0HAGM;QAEN,0HAOM;QACP,4DAAM;;QAbgB,0DAAoB;QAApB,oFAAoB;QAKD,0DAAQ;QAAR,8EAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLjD;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;ICSGA,4DAAAA;IACCA,oDAAAA;IACDA,0DAAAA;;;;;IAF2DA,wDAAAA;IAC1DA,uDAAAA;IAAAA,gEAAAA;;;;ADKE,MAAOyD,uBAAP,CAA8B;EAKnCrD,YACQsD,SADR,EAEiCC,IAFjC,EAGSC,EAHT,EAISC,KAJT,EAI4B;IAHpB;IACyB;IACxB;IACA;EACJ;;EAEL3C,QAAQ;IACP,KAAK4C,SAAL;IACA,KAAK3B,OAAL,GAAuCpC,0CAAA,CAAS,KAAK4D,IAAL,CAAUxB,OAAnB,EAA4BJ,CAAC,IAAIA,CAAC,CAACM,WAAnC,CAAvC;IACA,KAAK0B,eAAL,GAAuB,KAAKC,IAAL,CAAUC,QAAV,CAAmBC,MAAnB,CAA0BC,YAA1B,CAAuC1C,IAAvC,CACtB8B,yDAAS,CAACa,SAAD,CADa,EAEtBtE,mDAAG,CAACuE,CAAC,IAAIA,CAAC,GAAG,KAAKvC,MAAL,CAAYuC,CAAZ,CAAH,GAAoB,KAAKlC,OAAL,CAAamC,KAAb,EAA3B,CAFmB,CAAvB;IAIA,KAAKT,KAAL,CAAWU,MAAX,GAAoB,IAApB;IACA,KAAKb,SAAL,CAAec,WAAf,GAA6BC,SAA7B,CAAuC,MAAM,KAAKZ,KAAL,CAAWU,MAAX,GAAoB,KAAjE;EACA;;EAEDzC,MAAM,CAAC4C,GAAD,EAAY;IACjB,MAAMC,KAAK,GAAG,IAAIC,MAAJ,CAAW,GAAGF,GAAG,EAAjB,EAAqB,IAArB,CAAd;IACA,MAAMG,MAAM,GAAG,KAAK1C,OAAL,CAAaL,MAAb,CAAoBC,CAAC,IAAI4C,KAAK,CAACG,IAAN,CAAW/C,CAAC,CAACM,WAAb,CAAzB,CAAf;IACA,OAAOwC,MAAP;EACA;;EAEDE,YAAY;IACX,IAAI,CAAC,KAAKf,IAAL,CAAUgB,KAAf,EAAsB;MACrB;IACA;;IAED,KAAKC,MAAL;IACA,KAAKvB,SAAL,CAAewB,KAAf,CAAqB,IAArB;EACA;;EAEDD,MAAM;IACL,MAAMjB,IAAI,GAAG,KAAKA,IAAlB;IACA,KAAKL,IAAL,CAAUO,MAAV,GAAmBF,IAAI,CAACmB,KAAL,CAAWjB,MAA9B;EACA;;EAEDkB,SAAS,CAAClB,MAAD,EAA6B;IACrC,OAAOA,MAAM,GAAGA,MAAM,CAAC7B,WAAV,GAAwB,EAArC;EACA;;EAEOyB,SAAS;IAChB,KAAKE,IAAL,GAAY,KAAKJ,EAAL,CAAQyB,KAAR,CAAc;MACzBnB,MAAM,EAAE,CAAC,EAAD,EAAKZ,+DAAL;IADiB,CAAd,CAAZ;EAGA;;AAnDkC;;;mBAAvBG,yBAAuBzD,+DAAAA,CAAAA,kEAAAA,GAAAA,+DAAAA,CAO1BwD,qEAP0B,GAOXxD,+DAAAA,CAAAA,8DAAAA,GAAAA,+DAAAA,CAAAA,sDAAAA;AAAA;;;QAPZyD;EAAuBV;EAAAG;EAAAC;EAAAC;EAAAC;IAAA;MCpBpCrD,4DAAAA,WAAK,CAAL,EAAK,KAAL,EAAK,CAAL,EAAK,CAAL,EAAK,IAAL;MAEMA,oDAAAA;MAASA,0DAAAA;MACbA,uDAAAA;MACAA,4DAAAA;MAAmGA,wDAAAA;QAAA,OAASuF,YAAT;MAAiB,CAAjB;MAAmBvF,4DAAAA;MAAUA,oDAAAA;MAAIA,0DAAAA;MACpIA,4DAAAA,iBAAkF,CAAlF,EAAkF,UAAlF;MAA4FA,oDAAAA;MAAKA,0DAAAA;MAGlGA,4DAAAA,gBAAsE,EAAtE,EAAsE,gBAAtE,EAAsE,CAAtE,EAAsE,EAAtE,EAAsE,OAAtE,EAAsE,CAAtE;MAE8BA,wDAAAA;QAAA,OAAeuF,kBAAf;MAA6B,CAA7B;MAA5BvF,0DAAAA;MAGDA,4DAAAA;MACCA,wDAAAA;;MAGDA,0DAAAA;;;;;;MAb4DA,uDAAAA;MAAAA,wDAAAA;MAIzBA,uDAAAA;MAAAA,wDAAAA;MAEkDA,uDAAAA;MAAAA,wDAAAA;MAG3CA,uDAAAA;MAAAA,wDAAAA;MACVA,uDAAAA;MAAAA,wDAAAA,YAAAA,yDAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACFX;AACK;AAY6D;AAC6B;;;;;;;;;;;;ICjBpH,0EAAmD;IAKjD,yUAAW,qFAAoB,KAAC;IACjC,4DAAoB;IACpB,oEAAyB;IAC1B,4DAAM;;;;IANJ,0DAAa;IAAb,6EAAa;;ADuBV,MAAM,qCAAqC;IAYjD,YACS,KAAwB,EACxB,MAAiB;QADjB,UAAK,GAAL,KAAK,CAAmB;QACxB,WAAM,GAAN,MAAM,CAAW;QAPhB,YAAO,GAAG,IAAI,uDAAY,EAAW,CAAC;IAQ5C,CAAC;IAEL,WAAW;QACV,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;YACjC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACtF,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;YACpE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACtF;IACF,CAAC;IAED,YAAY,CAAC,MAA4B;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;QACnF,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,QAAQ,CAAC,MAA4B;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;QAC9E,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED,QAAQ,CAAC,MAA4B;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;QAC9E,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,YAAY;QACX,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,QAAQ,CAAC,IAAwB;QAChC,MAAM,IAAI,GAAG;YACZ,OAAO,EAAE,gDAAc,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAAC;YACnE,MAAM,EAAE,SAAS;SACjB,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACpE,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iGAAuB,EAAE;YACzD,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI;YACxB,QAAQ,EAAE;gBACT,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI;gBACtB,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI;aACpB;YACD,IAAI;SACJ,CAAC,CAAC;QACH,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE;YAC5C,IAAI,MAAM,KAAK,IAAI,EAAE;gBACpB,MAAM,MAAM,GAAyB,IAAI,CAAC,MAAM,CAAC;gBACjD,MAAM,IAAI,GAAiB;oBAC1B,mBAAmB,EAAE,MAAM,CAAC,EAAE;oBAC9B,iBAAiB,EAAE,IAAI,CAAC,EAAE;oBAC1B,GAAG,EAAE,CAAC;oBACN,SAAS,EAAE,CAAC;iBACZ,CAAC;gBACF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAE1B,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;gBAE3B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBACpC,SAAS,CAAC,QAAQ,EAAE,CAAC;aACrB;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;;0HA9EW,qCAAqC;mIAArC,qCAAqC;;kEAUnC,gIAAqB;;;;;;QC5CpC,yEAAsC;QAEH,uDAAuB;QAAA,4DAAO;QAC/D,0EAAuD;QAAA,qEAAU;QAAA,4DAAO;QACxE,0EAAuD;QAAA,qEAAU;QAAA,4DAAO;QACxE,qEAA2B;QAC5B,4DAAM;QAEN,0EAAyB;QACxB,mIAQM;QACP,4DAAM;QAEN,0EAA2B;QACY,8JAAS,sBAAc,IAAC;QAAC,4EAAU;QAAA,+DAAG;QAAA,4DAAW;;QAnBtD,0DAAuB;QAAvB,+GAAuB;QAOhC,0DAAU;QAAV,gFAAU;;;;;;;;;;;;;;;;;;;;;ACTmC;;;;;;;ICCtE,yEAAmF;IAKjF,8UAAW,qFAAoB,KAAC;IACjC,4DAAuC;;;;IAJtC,0DAAa;IAAb,yEAAa;;ADOT,MAAM,wBAAwB;IALrC;QAOW,YAAO,GAAG,IAAI,uDAAY,EAAW,CAAC;KAKhD;IAHA,YAAY;QACX,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;;gGANW,wBAAwB;sHAAxB,wBAAwB;QCVrC,yEAAiC;QAChC,oHAOM;QACP,4DAAM;;QAR6B,0DAA+C;QAA/C,mJAA+C;;;;;;;;;;;;;;;;;;;;;;;;IEEhF,yEAA+B;IAAA,kEAA2B;IAAA,4DAAM;;;IAChE,yEAA+B;IAAA,kEAA2B;IAAA,4DAAM;;;ADI3D,MAAM,2BAA2B;IAKvC,QAAQ;QACP,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC;IACzC,CAAC;;sGAPW,2BAA2B;yHAA3B,2BAA2B;QCRxC,yEAA6E;QACxD,uDAAiB;QAAA,4DAAM;QAC3C,yEAAmB;QAClB,uHAAgE;QAChE,uHAAgE;QACjE,4DAAM;;QALc,iKAAuD;QACvD,0DAAiB;QAAjB,gFAAiB;QAE9B,0DAAW;QAAX,2EAAW;QACX,0DAAY;QAAZ,4EAAY;;;;;;;;;;;;;;;;;;;;;;;;;;IEMjB,0EAAsD;IACrD,uDACD;IAAA,4DAAM;;;IADL,0DACD;IADC,4FACD;;;IASA,0EAAyD;IACxD,yFAAiE;IAClE,4DAAM;;;IADoB,0DAAa;IAAb,yEAAa;;;IAUvC,0EAAwD;IACvD,uFAA6D;IAC9D,4DAAM;;;IADkB,0DAAa;IAAb,yEAAa;;;IAjCxC,yEAA6C;IAEvC,2EAAgB;IAAA,4DAAK;IAG1B,yEAAqC;IAE/B,mEAAQ;IAAA,4DAAK;IAElB,yEAA8B;IAC7B,iIAEM;IACP,4DAAM;IAGP,0EAAkC;IAE5B,iEAAK;IAAA,4DAAK;IAEf,0EAAwB;IACvB,mIAEM;IACP,4DAAM;IAGP,2EAAkE;IAE5D,uEAAW;IAAA,4DAAK;IAErB,2EAA8B;IAC7B,oIAEM;IACP,4DAAM;;;IAzBoC,0DAAW;IAAX,oFAAW;IAWZ,0DAAe;IAAf,wFAAe;IAMpD,0DAAyB;IAAzB,yFAAyB;IAKa,0DAAa;IAAb,sFAAa;;ADxBlD,MAAM,+BAA+B;IAS3C,QAAQ;QACP,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,IAAI,EAAE,CAAC;QACpD,IAAI,CAAC,YAAY,GAAsB,CACtC,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAC/F,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;YAClB,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,KAAK,MAAM,EAC9B,KAAK,GAAG,EAAE,CAAC,KAAK,KAAK,MAAM,CAAC;YAE7B,OAAO,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,GAAqB,CACnC,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAChG,CAAC;QAEF,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IAC/C,CAAC;;8GAzBW,+BAA+B;6HAA/B,+BAA+B;QCR5C,4HAqCM;;QArCA,qFAAqB;;;;;;;;;;;;;;;;;;;ACOpB,MAAM,0BAA0B;IAMtC,QAAQ;QACP,IAAI,IAAI,CAAC,KAAK,EAAE;YACf,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;YAC3D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACtB;aAAM;YACN,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;SACnB;IACF,CAAC;;oGAbW,0BAA0B;wHAA1B,0BAA0B;QCPvC,yEAAqB;QACC,uDAAa;QAAA,4DAAM;QACxC,yEAA0C;QAAA,4DAAC;QAAA,4DAAM;QACjD,yEAAoB;QAAA,uDAA2B;QAAA,4DAAM;;QAFhC,0DAAa;QAAb,4EAAa;QAC7B,0DAAqB;QAArB,kFAAqB;QACN,0DAA2B;QAA3B,uGAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;IEHhD,yEAA4F;IAEjE,uDAA8B;IAAA,4DAAM;IAE7D,yEAA4B;IAC3B,sFAGyB;IAEzB,yEAAoB;IAAA,uDAA0B;IAAA,4DAAM;IAItD,yEAA2B;IAC1B,6FAA6G;IAG9G,4DAAM;;;IAhBoB,0DAA8B;IAA9B,gGAA8B;IAIrD,0DAAyC;IAAzC,yGAAyC;IAItB,0DAA0B;IAA1B,4FAA0B;IAKlB,0DAAiD;IAAjD,iHAAiD;IAErD,0DAAyC;IAAzC,yGAAyC;;;IAIpE,0EAAmE;IAC9D,sGAA2C;IAAA,4DAAK;;;IAGrD,0EAAgE;IAC3D,uDAA0G;IAAA,4DAAK;;;IAA/G,0DAA0G;IAA1G,qLAA0G;;ADlBxG,MAAM,8CAA8C;;4IAA9C,8CAA8C;4IAA9C,8CAA8C;QCR3D,2IAmBM;QAEN,0IAEM;QAEN,0IAEM;;QA3Be,6IAAqE;QAqBpE,0DAA2C;QAA3C,+GAA2C;QAI7C,0DAA0C;QAA1C,8GAA0C;;;;;;;;;;;;;;;;;;;;;;;;;;ACxBN;AACjB;AAGN;AAEc;;;;AAKxC,MAAM,qCAAsC,SAAQ,kEAAW;IAQrE,YAAY,MAAqB,EAAU,mBAAwC;QAClF,KAAK,CAAC,MAAM,CAAC,CAAC;QAD4B,wBAAmB,GAAnB,mBAAmB,CAAqB;QAHnF,gBAAW,GAAG,IAAI,iDAAe,CAAU,KAAK,CAAC,CAAC;QAClD,mBAAc,GAAG,IAAI,iDAAe,CAA6B,IAAI,CAAC,CAAC;QAKtE,2EAA2E;QAC3E,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,SAAS,CAAC,GAAG,EAAE;YAC5D,IAAI,CAAC,KAAK,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,WAAW;QACV,qDAAqD;QACrD,IAAI,IAAI,CAAC,OAAO,EAAE;YACjB,OAAO;SACP;QAED,IAAI,kBAAkB,CAAC;QACvB,IAAI,IAAI,CAAC,aAAa,EAAE;YACvB,kBAAkB,GAAG,mCAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;SAClE;QAED,IACC,CAAC,kBAAkB;YACnB,kBAAkB,GAAG,qCAAqC,CAAC,2BAA2B,EACrF;YACD,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,aAAa,GAAG,mCAAM,EAAE,CAAC,MAAM,EAAE,CAAC;SACvC;IACF,CAAC;IAED,YAAY;QACX,IAAI,CAAC,OAAO,EAAE,CAAC;IAChB,CAAC;IAEO,OAAO;QACd,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;YAC3B,OAAO;SACP;QAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE5B,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;QACnE,IAAI,CAAC,IAAI;aACP,WAAW,CAA6B,yCAAyC,gBAAgB,EAAE,CAAC;aACpG,IAAI,CACJ,mDAAG,CAAC,CAAC,aAAyC,EAAE,EAAE;YACjD,IAAI,CAAC,OAAO,GAAG,aAAa,IAAI,aAAa,CAAC,OAAO,CAAC;YACtD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACzC,CAAC,CAAC,EACF,wDAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAC5C;aACA,SAAS,EAAE,CAAC;IACf,CAAC;;AAhEc,iEAA2B,GAAG,CAAE;0HADnC,qCAAqC;sIAArC,qCAAqC,WAArC,qCAAqC,mBAFrC,MAAM;;;;;;;;;;;;;;;;;;;;;ACTnB;;;;;;;;;ICCEA,uDAAAA;;;;;;IAA8CA,wDAAAA,kBAAAA,yDAAAA;;;;ADQ1C,MAAOyF,uCAAP,CAA8C;EAKnDrF,YAAoBsF,OAApB,EAAkE;IAA9C;IACnB,KAAKC,QAAL,GAAgBD,OAAO,CAACE,WAAxB;IACA,KAAKC,cAAL,GAAsBH,OAAO,CAACG,cAA9B;EACA;;EAEDC,WAAW,CAACC,OAAD,EAAuB;IACjC;IACA,IAAIA,OAAO,CAACC,MAAR,IAAkB,KAAKA,MAA3B,EAAmC;MAClC,KAAKN,OAAL,CAAaO,WAAb;IACA;EACD;;AAfkD;;;mBAAvCR,yCAAuCzF,+DAAAA,CAAAA,6GAAAA;AAAA;;;QAAvCyF;EAAuC1C;EAAAC;IAAAgD;EAAA;EAAAE,WAAAA,kEAAAA;EAAAhD;EAAAC;EAAAC;EAAAC;IAAA;MCVpDrD,4DAAAA;MACCA,wDAAAA;;MAIDA,0DAAAA;;;;MAJwBA,uDAAAA;MAAAA,wDAAAA,oBAAAA,yDAAAA;;;;;;;;;;;;;;;;;;;;;;ACOjB,MAAM,yBAAyB;;kGAAzB,yBAAyB;uHAAzB,yBAAyB;QCRtC,yEAAqB;QAEnB,uDACD;QAAA,4DAAM;;QADL,0DACD;QADC,0FACD;;;;;;;;;;;;;;;;;;;;;;;ACD2B;;;;;;ICkB1B,0EAAkE;IACjE,wFAAuF;IACxF,4DAAM;;;IADgC,0DAAwB;IAAxB,wFAAwB;;;ADZzD,MAAM,2BAA2B;IASvC,QAAQ;QACP,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;QAEjD,MAAM,IAAI,GAAG,CAAC,OAA6B,EAAE,EAAE;YAC9C,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;gBAC9B,IAAI,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE;oBAC9B,OAAO,CAAC,CAAC,CAAC;iBACV;qBAAM,IAAI,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE;oBACrC,OAAO,CAAC,CAAC;iBACT;qBAAM,IAAI,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,EAAE;oBACjC,OAAO,CAAC,CAAC,CAAC;iBACV;qBAAM,IAAI,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,EAAE;oBACjC,OAAO,CAAC,CAAC;iBACT;gBAED,OAAO,CAAC,CAAC;YACV,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC/G,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAE7G,IAAI,CAAC,YAAY,GAAG,IAAI,CACvB,WAAW,CAAC,MAAM,CACjB,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,4CAAU,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;YAClC,CAAC,4CAAU,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;YAClC,CAAC,4CAAU,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;YACtC,CAAC,4CAAU,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CACvC,CACD,CAAC;IACH,CAAC;;sGA1CW,2BAA2B;yHAA3B,2BAA2B;QCTxC,yEAAqB;QAGd,uEAAY;QAAA,4DAAK;QACrB,yEAAmB;QAEjB,0EACD;QAAA,4DAAM;QACN,yEAA2B;QAC1B,uDACD;QAAA,4DAAM;QAKT,0EAAmF;QAClF,wFAAqG;QAIrG,0HAEM;QACP,4DAAM;;QAdF,0DACD;QADC,iGACD;QAKuB,0DAAwD;QAAxD,mKAAwD;QAC/B,0DAAyB;QAAzB,sFAAyB;QACzB,0DAAyB;QAAzB,sFAAyB;QAC7B,0DAA6B;QAA7B,0FAA6B;QAC7B,0DAA6B;QAA7B,0FAA6B;QACpC,0DAAyB;QAAzB,yFAAyB;;;;;;;;;;;;;;;;;;;;;;AClBtC;;;;;;ICG1B,yEAAmD;IAC9B,uDAAmB;IAAA,4DAAM;IAC7C,yEAA+F;IAC9F,uDACD;IAAA,4DAAM;;;IAHc,0DAAmB;IAAnB,iFAAmB;IACpB,0DAA2E;IAA3E,mLAA2E;IAC7F,0DACD;IADC,0HACD;;ADAI,MAAM,0BAA0B;IAMtC,QAAQ;QACP,IAAI,CAAC,MAAM,GAAG,wCAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;;oGARW,0BAA0B;wHAA1B,0BAA0B;QCTvC,yEAAqB;QAEf,uDAAU;QAAA,4DAAK;QAEpB,yEAAqB;QACpB,sHAKM;QACP,4DAAM;;QAVsB,0DAAyD;QAAzD,mKAAyD;QAChF,0DAAU;QAAV,yEAAU;QAGyB,0DAAU;QAAV,gFAAU;;;;;;;;;;;;;;;;;;;;;;;;ACJY;;;;;;;AAOxD,MAAM,2BAA4B,SAAQ,uEAAmB;IAmCnE;QACC,KAAK,EAAE,CAAC;QAER,MAAM,cAAc,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG;YACf,IAAI,EAAE,QAAQ,CAAC,EAAE;gBAChB,IAAI,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChC,IAAI,MAAM,GAAG,CAAC,CAAC;gBACf,IAAI,KAAK,CAAC,MAAM,EAAE;oBACjB,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBACrB,IAAI,KAAK,CAAC,MAAM,EAAE;wBACjB,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;qBACtB;iBACD;gBAED,IAAI,MAAM,GAAG,cAAc,EAAE;oBAC5B,MAAM,GAAG,cAAc,CAAC;iBACxB;gBAED,IAAI,SAAS,GAAG,EAAE,CAAC;gBACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;oBAChC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACrB;gBAED,IAAI,MAAM,KAAK,cAAc,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC5E,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACpB,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACxB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACrB;gBAED,OAAO,SAAS,CAAC;YAClB,CAAC;YACD,KAAK,EAAE,KAAK;YACZ,eAAe,EAAE,GAAG;YACpB,QAAQ,EAAE,KAAK;SACf,CAAC;IACH,CAAC;IAlED,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED,IAAI,KAAK,CAAC,KAAK;QACd,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAEpB,IAAI,CAAC,GAAG,IAAI,EACX,CAAC,GAAG,IAAI,CAAC;QAEV,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,KAAK,CAAC,MAAM,EAAE;YACjB,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACxB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;aAC3B;SACD;QAED,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAExB,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,KAAK,CAAC,EAAE;YAC/D,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;YACzB,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC;YAE3B,IAAI,CAAC,UAAU,EAAE,CAAC;SAClB;IACF,CAAC;IAwCD,QAAQ;QACP,IAAI,GAAG,GACN,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,SAAS;YACjC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YACvE,CAAC,CAAC,EAAE,CAAC;QACP,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;IAClB,CAAC;;sGA/EW,2BAA2B;yHAA3B,2BAA2B;QCRxC,0EAAoC;QAQjC,8LAAmB;QANpB,4DAQE;;QALD,0DAAgC;QAAhC,6FAAgC;;;;;;;;;;;;;;;;;;;;;ACJ+C;AAKnB;;;;AAOxD,MAAM,gCAAiC,SAAQ,uEAAmB;IAGxE,YACS,EAAsB;QAE9B,KAAK,EAAE,CAAC;QAFA,OAAE,GAAF,EAAE,CAAoB;IAG/B,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YACpB,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG;SACvB,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YACnD,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;YAC1B,IAAI,CAAC,UAAU,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,SAAS;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACzB,GAAG,EAAE,SAAS;SACd,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,+DAAmB,CAAC,CAAC;SAC1D;IACF,CAAC;;gHA7BW,gCAAgC;8HAAhC,gCAAgC;QCb7C,0EAAuD;QACtD,wEASU;QACX,4DAAO;;QAX6B,+EAAkB;QAEpD,0DAA0B;QAA1B,uFAA0B;;;;;;;;;;;;;;;;;;;;;ACDsD;AAKnB;;;;AAOxD,MAAM,gCAAiC,SAAQ,uEAAmB;IAGxE,YACS,EAAsB;QAE9B,KAAK,EAAE,CAAC;QAFA,OAAE,GAAF,EAAE,CAAoB;IAG/B,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YACpB,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG;SACvB,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YACnD,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;YAC1B,IAAI,CAAC,UAAU,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,SAAS;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACzB,GAAG,EAAE,SAAS;SACd,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,+DAAmB,CAAC,CAAC;SAC1D;IACF,CAAC;;gHA7BW,gCAAgC;8HAAhC,gCAAgC;QCb7C,0EAAuD;QACtD,wEAOU;QACX,4DAAO;;QAT6B,+EAAkB;QAEpD,0DAA0B;QAA1B,uFAA0B;;;;;;;;;;;;;;;;;;;;;;ACDsD;AAKnB;;;;;AAOxD,MAAM,uBAAwB,SAAQ,uEAAmB;IAG/D,YACS,EAAsB;QAE9B,KAAK,EAAE,CAAC;QAFA,OAAE,GAAF,EAAE,CAAoB;IAG/B,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YACpB,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAmB;SACvD,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;YAClE,IAAI,CAAC,SAAS,CAAC,mBAAmB,GAAG,EAAE,CAAC;YACxC,IAAI,CAAC,UAAU,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,SAAS;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACzB,mBAAmB,EAAE,SAAS;SAC9B,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,aAAa,CAAC,+DAAmB,CAAC,CAAC;SAC1E;IACF,CAAC;;8FA9BW,uBAAuB;qHAAvB,uBAAuB;QCbpC,0EAAsE;QACrE,0EAUY;QACb,4DAAO;;QAZ6B,+EAAkB;QAIpD,0DAAmC;QAAnC,gGAAmC;;;;;;;;;;;;;;;;;;;;;ACH6C;AAKnB;;;;AAOxD,MAAM,2BAA4B,SAAQ,uEAAmB;IAGnE,YACS,EAAsB;QAE9B,KAAK,EAAE,CAAC;QAFA,OAAE,GAAF,EAAE,CAAoB;IAG/B,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YACpB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;SACzB,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YACpD,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,GAAG,CAAC;YAC1B,IAAI,CAAC,UAAU,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,SAAS;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACzB,IAAI,EAAE,SAAS;SACf,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,+DAAmB,CAAC,CAAC;SAC3D;IACF,CAAC;;sGA7BW,2BAA2B;yHAA3B,2BAA2B;QCbxC,0EAAuD;QACtD,4EAMc;QACf,4DAAO;;QAR6B,+EAAkB;QAEpD,0DAA0B;QAA1B,uFAA0B;;;;;;;;;;;;;;;;;;;;;;ACDsD;AAKnB;;;;;AAOxD,MAAM,sBAAuB,SAAQ,uEAAmB;IAG9D,YACS,EAAsB;QAE9B,KAAK,EAAE,CAAC;QAFA,OAAE,GAAF,EAAE,CAAoB;IAG/B,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YACpB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;SACzB,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YACpD,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,GAAG,CAAC;YAC1B,IAAI,CAAC,UAAU,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,SAAS;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACzB,IAAI,EAAE,SAAS;SACf,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,+DAAmB,CAAC,CAAC;SAC3D;IACF,CAAC;;4FA7BW,sBAAsB;oHAAtB,sBAAsB;QCbnC,0EAAsE;QACrE,wEAMU;QACX,4DAAO;;QAR6B,+EAAkB;QAGpD,0DAA0B;QAA1B,uFAA0B;;;;;;;;;;;;;;;;;;;;;;ACHsD;AAMnB;AACC;;;;;AAOzD,MAAM,qBAAsB,SAAQ,uEAAmB;IAO7D,YACS,EAAsB;QAE9B,KAAK,EAAE,CAAC;QAFA,OAAE,GAAF,EAAE,CAAoB;IAG/B,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,IAAI,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;gBACpB,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG;gBACvB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS;aACnC,CAAC,CAAC;SACH;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YACnD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACtC,SAAS,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;YACrB,IAAI,CAAC,UAAU,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YACzD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACtC,SAAS,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC;YAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAEO,YAAY;QACnB,IAAI,IAAI,CAAC,SAAS,EAAE;YACnB,OAAO,IAAI,CAAC,SAAS,CAAC;SACtB;QAED,IAAI,CAAC,SAAS,GAAkB;YAC/B,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;YACnC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;SAC/B,CAAC;IACH,CAAC;IAEO,SAAS;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACzB,GAAG,EAAE,SAAS;YACd,SAAS,EAAE,SAAS;SACpB,CAAC,CAAC;IACJ,CAAC;;0FAxDW,qBAAqB;mHAArB,qBAAqB;kEAKnB,0EAAa;;;;;QCnB5B,0EAAuD;QAEzC,uDAAwB;QAAA,4DAAM;QAC1C,wEAOU;QASX,4DAAM;;QAnB6B,+EAAkB;QAExC,0DAAwB;QAAxB,uFAAwB;QAGnC,0DAAoB;QAApB,6EAAoB;QAQpB,0DAAoB;QAApB,6EAAoB;;;;;;;;;;;;;;;;;;ACbgD;;AAOhE,MAAe,mBAAmB;IADzC;QAKW,YAAO,GAAG,IAAI,uDAAY,EAAgB,CAAC;KAKrD;IAHU,UAAU;QACnB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;;sFARoB,mBAAmB;iHAAnB,mBAAmB;;;;;;;;;;;;;;;;;;;;;ACP8B;;;;;;;;ICOnE,4FAIC;IADA,8UAAW,oFAAmB,KAAC;IAEhC,4DAAyB;;;;;;IAJxB,wFAA4B;;;IAN/B,6EAGC;IACA,yIAOc;IACf,4DAAU;;;IAVT,iHAAqD;;ADMjD,MAAM,mBAAmB;IALhC;QAOC,gBAAW,GAAG,IAAI,CAAC;QACnB,iBAAY,GAAG,CAAC,CAAC;QAGP,YAAO,GAAG,IAAI,uDAAY,EAAQ,CAAC;KAkB7C;IAhBA,UAAU;QACT,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAC/B,CAAC;IAED,SAAS;QACR,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;IAChC,CAAC;IAED,WAAW,CAAC,SAAgC;QAC3C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;IAED,kBAAkB,CAAC,GAAsB;QACxC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC;IAC/B,CAAC;;sFAvBW,mBAAmB;iHAAnB,mBAAmB;QCVhC,yEAAuB;QACP,mNAAiD;QAC/D,uHAYU;QACX,4DAAgB;;QAZa,0DAAe;QAAf,mFAAe;;;;;;;;;;;;;;;;;;;;;ACF4B;;;;;AAQlE,MAAM,sBAAsB;IAIlC,YACQ,SAA+C,EACtB,IAAwB;QADjD,cAAS,GAAT,SAAS,CAAsC;QACtB,SAAI,GAAJ,IAAI,CAAoB;QAExD,gCAAgC;QAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC7B,CAAC;IAED,SAAS;QACR,gCAAgC;QAChC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,SAAS;QACR,iCAAiC;QACjC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;;4FArBW,sBAAsB,uMAMzB,qEAAe;oHANZ,sBAAsB;QCTnC,wEAAqB;QACpB,uDACD;QAAA,4DAAK;QAEL,yEAAwB;QACpB,uDAAa;QAAA,4DAAI;QAGrB,yEAAoC;QACO,8IAAS,eAAW,IAAC;QAAC,8DAAG;QAAA,4DAAS;QAC5E,4EAAsD;QAAtB,8IAAS,eAAW,IAAC;QAAC,6DAAE;QAAA,4DAAS;;QATjE,0DACD;QADC,sFACD;QAGI,0DAAa;QAAb,4EAAa;;;;;;;;;;;;;;;;;;ACJ2E;;AAIrF,MAAM,sBAAsB;IAClC,SAAS,CAAC,OAAyB,EAAE,IAAiB;QACrD,2FAA2F;QAC3F,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC1D,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;gBACvB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC;aAChE,CAAC,CAAC;SACH;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;;4FAVW,sBAAsB;uHAAtB,sBAAsB,WAAtB,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;ACG5B,MAAM,kBAAkB;IAC9B,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAI,CAAC;;oFAD3B,kBAAkB;gHAAlB,kBAAkB;QCR/B,yEAAkB;QAEhB,uFAAuD;QACxD,4DAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;ACH+C;AACyD;AAC1D;AACmB;;;AAIjE,MAAM,oBAAoB;IAChC,YAAoB,QAAqB;QAArB,aAAQ,GAAR,QAAQ,CAAa;IAAG,CAAC;IAE7C,SAAS,CAAC,OAAyB,EAAE,IAAiB;QACrD,0CAA0C;QAC1C,MAAM,WAAW,GAAG,CAAC,CAAC;QAEtB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAC/B,0DAAU,CAAC,CAAC,GAAG,EAAE,EAAE;YAClB,IAAI,CAAC,wDAAS,EAAE,EAAE;gBACjB,OAAO,gDAAU,CAAC,GAAG,CAAC,CAAC;aACvB;YAED,kEAAkE;YAClE,IAAI,GAAG,YAAY,mEAAiB,EAAE;gBACrC,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE;oBAC1C,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;oBACxE,OAAO,uCAAK,CAAC;iBACb;aACD;YACD,OAAO,gDAAU,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC,CAAC,EACF,yDAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACjB,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,OAAO,GAAG,CAAC,IAAI;YACd,kDAAkD;YAElD,oBAAoB;YACpB,mDAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,2CAA2C;gBAC3C,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,EAAE;oBAC/C,MAAM,KAAK,CAAC;iBACZ;gBAED,uDAAuD;gBACvD,IAAI,OAAO,EAAE,KAAK,WAAW,EAAE;oBAC9B,MAAM,KAAK,CAAC;iBACZ;gBAED,OAAO,KAAK,CAAC;YACd,CAAC,CAAC;YACF,yCAAyC;YACzC,qDAAK,CAAC,IAAI,CAAC;YACX,0CAA0C;YAC1C,mDAAG,CAAC,GAAG,EAAE;gBACR,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAC3C,CAAC,CAAC,CACF,CAAC;QACH,CAAC,CAAC,EACF,0DAAU,CAAC,CAAC,GAAG,EAAE,EAAE;YAClB,8BAA8B;YAC9B,OAAO,gDAAU,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC,CAAC,CACF,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,QAAgB,EAAE,UAAkB;QAC1D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,oCAAoC,QAAQ,IAAI,UAAU,GAAG,EAAE,EAAE,EAAE;YACrF,QAAQ,EAAE,IAAI;SACd,CAAC,CAAC;IACJ,CAAC;IAEO,yBAAyB,CAAC,MAAc,EAAE,MAAc,EAAE,GAAW;QAC5E,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,MAAM,gBAAgB,MAAM,OAAO,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;IAChF,CAAC;;wFAhEW,oBAAoB;qHAApB,oBAAoB,WAApB,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;ACPiE;AACvC;;;;;;;;;;AAUpD,MAAM,0BAA0B;IAMtC,YAA4C,IAAc;QAAd,SAAI,GAAJ,IAAI,CAAU;QACzD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,eAAe;QACd,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;QACpC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,SAAS,CAAC,KAAoB;QAC7B,+EAA+E;QAC/E,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE;YAChE,KAAK,CAAC,cAAc,EAAE,CAAC;SACvB;QAED,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;YACxD,KAAK,CAAC,cAAc,EAAE,CAAC;SACvB;QAED,gCAAgC;QAChC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE;YACjF,KAAK,CAAC,cAAc,EAAE,CAAC;SACvB;IACF,CAAC;;oGA9BW,0BAA0B,kEAMlB,qEAAe;wHANvB,0BAA0B;;;;;;;;QCXvC,wEAAqB;QACpB,8EACD;QAAA,4DAAK;QAEL,yEAAwB;QAEtB,iGACA;QAAA,uEAA8C;QAAA,qEAAU;QAAA,4DAAI;QAG7D,yEAAsB;QAET,6EAAiB;QAAA,4DAAY;QACxC,+EAK0C;QAHzC,4JAAW,qBAAiB,IAAC;QAF9B,4DAK0C;QAI5C,gFAAkE;QAA9C,mJAAS,qBAAiB,IAAC;QAAmB,6EAAiB;QAAA,4DAAS;QAG7F,0EAAoC;QACD,iEAAK;QAAA,4DAAS;;QAnB5B,0DAA0B;QAA1B,oJAA0B;QAW3C,0DAAsC;QAAtC,iGAAsC;;;;;;;;;;;;;;;;;;;;AClBoC;;;AAQvE,MAAM,iBAAiB;IAC7B,YAAoB,MAAiB;QAAjB,WAAM,GAAN,MAAM,CAAW;IAAI,CAAC;IAE1C,WAAW,CAAC,OAAiB;QAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uFAA0B,EAAE;YAC5C,IAAI,EAAE,OAAO;SACb,CAAC,CAAC;IACJ,CAAC;;kFAPW,iBAAiB;kHAAjB,iBAAiB,WAAjB,iBAAiB,mBAFjB,MAAM;;;;;;;;;;;;;;;;ACNZ,MAAM,QAAQ;CAGpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACF6D;AACqB;AASrD;;;;;;;AAM9B,MAAM,WAAW,GAAG,KAAK,CAAC;AAGnB,MAAM,WAAW;IAGvB,YACS,IAAiB,EACjB,MAAqB,EACrB,QAAqB,EACrB,MAAqB,EACrB,IAA2B;QAJ3B,SAAI,GAAJ,IAAI,CAAa;QACjB,WAAM,GAAN,MAAM,CAAe;QACrB,aAAQ,GAAR,QAAQ,CAAa;QACrB,WAAM,GAAN,MAAM,CAAe;QACrB,SAAI,GAAJ,IAAI,CAAuB;QAP5B,oBAAe,GAAiB,IAAI,yCAAO,EAAO,CAAC;IAQvD,CAAC;IAEL,SAAS,CAAC,GAAqB,EAAE,IAAiB;QACjD,MAAM,4BAA4B,GAAG,CAAC,KAAK,EAAE,EAAE;YAC9C,IAAI,KAAK,YAAY,8DAAY,EAAE;gBAClC,MAAM,IAAI,GAAsB,KAAK,CAAC;gBAEtC,yEAAyE;gBACzE,IAAI,IAAI,GAAO,IAAI,CAAC,IAAI,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;gBAEpC,IAAI,WAAW,EAAE;oBAChB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBAC/B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAC1B;aACD;QACF,CAAC,CAAC;QAEF,IAAI,WAAW,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;SACjD;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;YAC3D,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACxB;aAAM;YACN,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAC3B,mDAAG,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAC5C,0DAAU,CAAC,CAAC,KAAK,EAAE,EAAE;gBACpB,IAAI,KAAK,YAAY,mEAAiB,EAAE;oBACvC,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE;wBACrC,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CACjC,yDAAS,CAAC,CAAC,GAAG,EAAE,EAAE;4BACjB,uCAAuC;4BACvC,IAAI,cAAc,GAAG,CAAC,CAAC;4BACvB,OAAO,GAAG,CAAC,IAAI,CACd,qDAAK,CAAC,GAAG,CAAC,EACV,oDAAG,CAAC,CAAC,eAAe,EAAE,EAAE;gCACvB,IAAI,cAAc,EAAE,KAAK,CAAC,EAAE;oCAC3B,MAAM,eAAe,CAAC;iCACtB;gCAED,OAAO,eAAe,CAAC;4BACxB,CAAC,CAAC,CACF,CAAC;wBACH,CAAC,CAAC,EACF,0DAAU,CAAC,GAAG,EAAE;4BACf,8BAA8B;4BAC9B,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;4BACzB,OAAO,wCAAK,CAAC;wBACd,CAAC,CAAC,EACF,0DAAS,CAAC,GAAG,EAAE;4BACd,kDAAkD;4BAClD,sCAAsC;4BACtC,OAAO,IAAI;iCACT,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;iCAC9B,IAAI,CAAC,mDAAG,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBACtD,CAAC,CAAC,CACF,CAAC;qBACF;yBAAM;wBACN,+CAA+C;wBAC/C,QAAQ,KAAK,CAAC,MAAM,EAAE;4BACrB,KAAK,GAAG,CAAC;4BACT,KAAK,GAAG;gCACP,sCAAsC;gCACtC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;gCACxE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;gCAEzB,OAAO,wCAAK,CAAC;4BACd;gCACC,OAAO,iDAAU,CAAC,KAAK,CAAC,CAAC;yBAC1B;qBACD;iBACD;gBAED,OAAO,iDAAU,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC,CAAC,CACF,CAAC;SACF;IACF,CAAC;IAEO,oBAAoB,CAAC,KAAwB;QACpD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,CAAC;QACtD,OAAO,QAAQ,CAAC;IACjB,CAAC;IAEO,eAAe;QACtB,gGAAgG;QAChG,sEAAsE;QACtE,EAAE;QACF,gGAAgG;QAChG,iCAAiC;QACjC,EAAE;QACF,6GAA6G;QAC7G,+FAA+F;QAC/F,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;YAC9B,QAAQ,EAAE,GAAG,EAAE;gBACd,IAAI,CAAC,eAAe,GAAG,IAAI,yCAAO,EAAO,CAAC;YAC3C,CAAC;SACD,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YAChD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SACzD;QACD,OAAO,IAAI,CAAC,eAAe,CAAC;IAC7B,CAAC;IAEO,YAAY,CAAC,GAAG;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACvC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC;YACf,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,SAAS,EAAE,CAAC;SAChE,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACZ,CAAC;;sEA1HW,WAAW;6GAAX,WAAW,WAAX,WAAW;;;;;;;;;;;;;;;;AChBjB,SAAS,UAAU,CAAC,GAAW,EAAE,MAAM;IAC7C,OAAO,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC;AAC1C,CAAC;;;;;;;;;;;;;;;;;ACNuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACOxB;AAEA;AAEA;AAGA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ICXEA,wDAAAA;;;;;;IAoBOA,6DAAAA;IAA2EA,qDAAAA;IAAYA,2DAAAA;;;;;;IACvFA,6DAAAA;IAAqEA,qDAAAA;IAAqBA,2DAAAA;;;;;;IAC1FA,6DAAAA;IAA+EA,qDAAAA;IAAsBA,2DAAAA;;;;;;;;IATvGA,6DAAAA,eAA0D,CAA1D,EAA0D,yBAA1D,EAA0D,EAA1D;IAGEA,yDAAAA;MAAAA,4DAAAA;MAAA;MAAA,OAAUA,0DAAAA,oCAAV;IAAoC,CAApC;IAIAA,yDAAAA;IACAA,yDAAAA;IACAA,yDAAAA;IACDA,2DAAAA;;;;;IARCA,wDAAAA;IAAAA,yDAAAA,8BAAqB,UAArB,EAAqBwG,0BAArB;IAKoBxG,wDAAAA;IAAAA,yDAAAA;IACAA,wDAAAA;IAAAA,yDAAAA;IACAA,wDAAAA;IAAAA,yDAAAA;;;;;;IAItBA,6DAAAA;IACCA,qDAAAA;IACDA,2DAAAA;;;;;;IAEAA,6DAAAA;IACCA,qDAAAA;IACDA,2DAAAA;;;;;;IAEAA,6DAAAA;IACCA,qDAAAA;IACDA,2DAAAA;;;;;;IAuBCA,wDAAAA;;;;;;IAPDA,6DAAAA,eAEiE,CAFjE,EAEiE,KAFjE;IAIEA,qDAAAA;;IACDA,2DAAAA;IAEAA,yDAAAA;;IAQDA,2DAAAA;;;;;IAXEA,wDAAAA;IAAAA,iEAAAA,MAAAA,0DAAAA;IAICA,wDAAAA;IAAAA,yDAAAA,qDAAAA,0DAAAA;;;;;;IAYFA,wDAAAA;;;;;;IAqCCA,6DAAAA;IAMCA,qDAAAA;IACDA,2DAAAA;;;;;;IA9CDA,wDAAAA;IAEAA,yDAAAA;IASAA,6DAAAA,eAAiC,CAAjC,EAAiC,IAAjC;IACKA,qDAAAA;IAA+CA,2DAAAA;IAEnDA,wDAAAA,uBAMuC,CANvC,EAMuC,SANvC,EAMuC,EANvC,EAMuC,EANvC,EAMuC,EANvC,EAMuC,SANvC,EAMuC,EANvC,EAMuC,EANvC;IAyBAA,yDAAAA;IAQDA,2DAAAA;IAEAA,wDAAAA;;;;;IA9CEA,wDAAAA;IAAAA,yDAAAA;IAQGA,wDAAAA;IAAAA,yDAAAA;IA6BFA,wDAAAA;IAAAA,yDAAAA;;;;;;IAzCJA,yDAAAA;;;;;;IA0DCA,6DAAAA;IAKCA,qDAAAA;IACDA,2DAAAA;;;;;IAFCA,yDAAAA;;;;;;IAIDA,6DAAAA;IAMCA,qDAAAA;IACDA,2DAAAA;;;;;IAHCA,yDAAAA;;;;;;;;IAKDA,6DAAAA;IAAgEA,yDAAAA;MAAAA,4DAAAA;MAAA;MAAA,OAASA,0DAAAA,kBAAT;IAAiB,CAAjB;IAC/DA,qDAAAA;IACDA,2DAAAA;;;;;;;;;;;;;;IA7IJA,6DAAAA;IAAoCA,yDAAAA;MAAAA,4DAAAA;MAAA;MAAA,OAAYA,0DAAAA,iBAAZ;IAAmB,CAAnB;IACnCA,6DAAAA,mBAAgD,CAAhD,EAAgD,gBAAhD,EAAgD,CAAhD;IAEEA,wDAAAA;IACAA,6DAAAA;IAAIA,qDAAAA;IAAKA,2DAAAA;IAGVA,6DAAAA;IACCA,yDAAAA;IAaAA,yDAAAA;IAIAA,yDAAAA;IAIAA,yDAAAA;IAGDA,2DAAAA;IAEAA,wDAAAA;IAGAA,6DAAAA;IACCA,wDAAAA;IACDA,2DAAAA;IAGAA,6DAAAA;IACCA,wDAAAA;IACDA,2DAAAA;IAEAA,6DAAAA;IACCA,yDAAAA;IAiBAA,yDAAAA;IAoDDA,2DAAAA;IAEAA,wDAAAA;IAEAA,6DAAAA,6BAA2D,EAA3D,EAA2D,KAA3D,EAA2D,EAA3D;IAEEA,yDAAAA;IAQAA,yDAAAA;IASAA,yDAAAA;IAGDA,2DAAAA;;;;;IA9IsDA,yDAAAA;IAC9CA,wDAAAA;IAAAA,yDAAAA,kBAAAA,8DAAAA;IAOmBA,wDAAAA;IAAAA,yDAAAA;IAaMA,wDAAAA;IAAAA,yDAAAA;IAIAA,wDAAAA;IAAAA,yDAAAA;IAIAA,wDAAAA;IAAAA,yDAAAA;IAQxBA,wDAAAA;IAAAA,yDAAAA;IACGA,wDAAAA;IAAAA,oEAAAA;IAAoBA,yDAAAA;IAIvBA,wDAAAA;IAAAA,yDAAAA;IAOPA,wDAAAA;IAAAA,yDAAAA;IAegCA,wDAAAA;IAAAA,yDAAAA;IA4D/BA,wDAAAA;IAAAA,yDAAAA;IASAA,wDAAAA;IAAAA,yDAAAA;IAMuCA,wDAAAA;IAAAA,yDAAAA;;;;ADlIjD,MAAMyG,IAAN,CAAU;;AAaV,IAAKC,IAAL;;AAAA,WAAKA,IAAL,EAAS;EACRA;EACAA;EACAA;AACA,CAJD,EAAKA,IAAI,KAAJA,IAAI,MAAT;;AAWM,MAAOC,cAAP,CAAqB;EA+D1BvG,YACSwG,MADT,EAEShD,EAFT,EAGQiD,qBAHR,EAISC,KAJT,EAKSC,WALT,EAMSC,gBANT,EAOSC,aAPT,EAQCC,oBARD,EASSC,WATT,EAUCC,wBAVD,EAWCC,yBAXD,CAWsD;EAXtD;IACS;IACA;IACD;IACC;IACA;IACA;IACA;IAEA;IAvCD,YAAO,IAAId,4CAAJ,EAAP;IAGR,eAAmB,KAAnB;IACA,uBAA2B,KAA3B;IACA,aAAgB,EAAhB;IACA,kBAAa,KAAb;IAIA,2BAAsB,KAAtB;IACA,0BAA8B,KAA9B;IACA,uBAAkB,KAAlB;IAEA,aAAQ,qBAAR;IACA,oBAA8B,EAA9B;IAGA,oBAAe;MACd,CAACH,+EAAD,GAA4C,IAD9B;MAEd,CAACA,4EAAD,GAAyC,KAF3B;MAGd,CAACA,iFAAD,GAA8C;IAHhC,CAAf;IAyBC,MAAMqB,aAAa,GAAGP,oBAAoB,CAACO,aAA3C;;IACA,IAAIA,aAAa,CAACC,sBAAlB,EAA0C;MACzC,KAAKC,YAAL,CAAkB,kBAAlB,IAAwCF,aAAa,CAACC,sBAAtD;IACA;;IAED,IAAID,aAAa,CAACG,YAAlB,EAAgC;MAC/B,KAAKD,YAAL,CAAkBE,KAAlB,GAA0BJ,aAAa,CAACG,YAAxC;IACA;;IAED,KAAKE,eAAL,GAAuBZ,oBAAoB,CAACa,OAArB,CAA6BD,eAApD;IACA,IAAI,CAAC,KAAKA,eAAV,EACCX,WAAW,CAACa,UAAZ,CAAuB,IAAvB;IAED,IAAIP,aAAa,IAAIA,aAAa,CAACQ,aAAnC,EACC,KAAKC,gBAAL;IAED,KAAKC,KAAL,GAAaV,aAAa,CAACW,QAAd,IAA0B,KAAKD,KAA5C;IACA,KAAKE,qBAAL,CAA2BnB,oBAAoB,CAACa,OAAhD;IACA,KAAKO,WAAL,GAAmBlB,wBAAwB,CAACmB,SAAzB,EAAnB;EACA;;EA9FqB,IAAlBjB,kBAAkB;IACrB,OAAOlB,+EAAP;EACA;;EAEkB,IAAfmB,eAAe;IAClB,OAAOnB,4EAAP;EACA;;EAEuB,IAApBoB,oBAAoB;IACvB,OAAOpB,iFAAP;EACA;;EAEsB,IAAnBoC,mBAAmB;IACtB,OAAO,KAAKC,WAAL,KAAqB,KAAKnB,kBAAjC;EACA;;EAEwB,IAArBoB,qBAAqB;IACxB,OAAO,KAAKD,WAAL,KAAqB,KAAKlB,eAAjC;EACA;;EAEiC,IAA9BoB,8BAA8B;IACjC,OAAO,KAAKF,WAAL,KAAqB,KAAKjB,oBAAjC;EACA;;EAEe,IAAZoB,YAAY;IACf,IAAI,KAAKH,WAAL,KAAqB,KAAKnB,kBAA9B,EAAkD;MACjD,OAAO,KAAKtD,IAAL,CAAU6E,OAAjB;IACA;;IAED,OAAO,KAAKhC,qBAAL,CAA2BiC,wBAA3B,CAAoD3D,KAA3D;EACA;;EAkEDjE,QAAQ;IACP;IACA,KAAK2F,qBAAL,CAA2BkC,MAA3B;IACA,KAAK9B,aAAL,CAAmB+B,UAAnB,GAAgC,KAAhC;IACA,KAAKlF,SAAL;IAEA,MAAMmF,eAAe,GAAG,KAAKpC,qBAAL,CAA2BqC,eAAnD;;IACA,IAAID,eAAJ,EAAqB;MACpB,KAAKjF,IAAL,CAAUmF,UAAV,CAAqB;QACpBC,QAAQ,EAAEH,eADU;QAEpBI,UAAU,EAAE;MAFQ,CAArB;IAIA;;IAED,KAAKC,IAAL,CAAUC,IAAV,GAAiB,KAAK1C,qBAAL,CAA2BiC,wBAA3B,CAAoDrE,SAApD,CAA+DJ,CAAD,IAAM;MACpF,IAAI,CAACA,CAAL,EAAQ;QACP,KAAKmF,mBAAL,GAA2B,KAA3B;MACA;IACD,CAJgB,CAAjB;EAKA;;EAEDC,eAAe;IACd,KAAKC,eAAL;EACA;;EAEDC,WAAW;IACV,KAAKL,IAAL,CAAUM,WAAV;EACA;;EAEDC,kBAAkB,CAACC,KAAD,EAA6B;IAC9C,KAAKrB,WAAL,GAAmBqB,KAAK,CAAC3E,KAAzB;IACA,KAAK4E,KAAL,GAAa,EAAb;;IAEA,IAAI,KAAKtB,WAAL,KAAqBrC,4EAAzB,EAAgE;MAC/D,KAAKS,qBAAL,CAA2BmD,wBAA3B,CAAoD,KAApD;MACA,KAAKnD,qBAAL,CAA2BoD,iBAA3B,CAA6C,EAA7C;IACA;;IAED,IAAI,KAAKxB,WAAL,KAAqBrC,iFAAzB,EAAqE;MACpE,KAAKS,qBAAL,CAA2BmD,wBAA3B,CAAoD,KAApD;MACA,KAAKnD,qBAAL,CAA2BoD,iBAA3B,CAA6C,EAA7C;IACA;EACD;;EAEDC,KAAK;IACJ,QAAQ,KAAKzB,WAAb;MACC,KAAKrC,+EAAL;QACC,KAAK+D,WAAL;QACA;;MACD,KAAK/D,4EAAL;QACC,MAAMgE,YAAY,GAAG;UACpBC,SAAS,EAAE,KAAK/B,WAAL,CAAiBgC;QADR,CAArB;QAIA,KAAKC,wBAAL,CAA8BH,YAA9B;QACA;;MACD,KAAKhE,iFAAL;QACC,MAAMoE,gBAAgB,GAAG;UACxBH,SAAS,EAAE,KAAK/B,WAAL,CAAiBmC;QADJ,CAAzB;QAIA,KAAKF,wBAAL,CAA8BC,gBAA9B;QACA;;MACD;QACC;IAnBF;EAqBA;;EAEDL,WAAW;IACV,KAAKO,OAAL,GAAe,IAAf;IACA,KAAKX,KAAL,GAAa,EAAb;IAEA,MAAMY,IAAI,GAAG,KAAK3G,IAAL,CAAU4G,WAAV,EAAb;IAAA,MACCC,QAAQ,GAAGF,IAAI,CAACE,QAAL,IAAiBF,IAAI,CAACG,WADlC;IAGA,KAAKtB,mBAAL,GAA2B,IAA3B;IAEA,KAAK3C,qBAAL,CACEqD,KADF,CACQS,IAAI,CAACvB,QADb,EACuByB,QADvB,EACiC,KAAKE,eADtC,EACuDJ,IAAI,CAACK,WAD5D,EAEEvJ,IAFF,CAGE6E,oDAAG,CAAEzB,MAAD,IAAW;MACd,IAAIA,MAAJ,EAAY;QACX,IAAIA,MAAM,CAACoG,EAAX,EAAe;UACd,KAAKC,OAAL,CAAaP,IAAb;QACA,CAFD,MAEO,IAAI9F,MAAM,CAACkG,eAAX,EAA4B;UAClC,KAAKhB,KAAL,GAAa,4BAAb;UACA,KAAKoB,OAAL,CAAazE,IAAI,CAAC0E,cAAlB;UACAC,UAAU,CAAC,MAAK;YACf,KAAKC,kBAAL,CAAwBC,QAAxB;UACA,CAFS,CAAV;QAGA,CANM,MAMA;UACN,KAAKxB,KAAL,GAAalF,MAAM,CAAC2G,YAApB;;UAEA,IAAI3G,MAAM,CAAC4G,WAAX,EAAwB;YACvB,KAAKC,UAAL,GAAkB,IAAlB;YACA,KAAKP,OAAL,CAAazE,IAAI,CAACiF,WAAlB;YACAN,UAAU,CAAC,MAAK;cACfO,MAAM,CAACC,QAAP,CAAgBC,MAAhB;YACA,CAFS,EAEP,IAFO,CAAV;UAGA;;UAED,IAAI,KAAKf,eAAT,EAA0B;YACzB,KAAKO,kBAAL,CAAwBC,QAAxB;UACA,CAFD,MAEO;YACN,KAAKQ,eAAL,CAAqBR,QAArB;UACA;QACD;MACD,CA1BD,MA0BO;QACN,KAAKxB,KAAL,GAAa,uDAAb;QACA,KAAKgC,eAAL,CAAqBR,QAArB;MACA;IACD,CA/BE,CAHL,EAmCElF,yDAAQ,CAAC,MAAK;MACb,KAAKmD,mBAAL,GAA2B,KAA3B;MACA,KAAKkB,OAAL,GAAe,KAAf;IACA,CAHO,CAnCV,EAwCEjG,SAxCF;EAyCA;;EAED8F,wBAAwB,CAACH,YAAD,EAAmB;IAC1C,MAAM4B,IAAI,GAAGJ,MAAM,CAACK,SAAP,CAAiBC,SAAjB,CAA2BpL,OAA3B,CAAmC,OAAnC,IAA8C,CAAC,CAA/C,IAAoD8K,MAAM,CAACK,SAAP,CAAiBC,SAAjB,CAA2BpL,OAA3B,CAAmC,UAAnC,IAAiD,CAAC,CAAnH;IAEA,KAAK+F,qBAAL,CAA2BmD,wBAA3B,CAAoD,IAApD;IACA,KAAKnD,qBAAL,CAA2BoD,iBAA3B,CAA6C,eAA7C;IACA,KAAKT,mBAAL,GAA2B,IAA3B;;IAEA,IAAIwC,IAAJ,EAAU;MACT,KAAKjF,WAAL,CAAiBoF,aAAjB;IACA,CAFD,MAEO;MACN,KAAKpF,WAAL,CAAiBqF,UAAjB,CAA4BhC,YAA5B,EACE3F,SADF,CACY;QACVxD,IAAI,EAAGoL,QAAD,IAAmC;UACxC,KAAKxF,qBAAL,CAA2ByF,WAA3B,CAAuCD,QAAQ,CAACE,OAAhD;UACA,KAAK/C,mBAAL,GAA2B,KAA3B;QACA,CAJS;QAKVO,KAAK,EAAGA,KAAD,IAAU;UACf,IAAIA,KAAK,CAACyB,YAAN,CAAmBvJ,QAAnB,CAA4B,aAA5B,CAAJ,EAAgD;YACjD,MAAMuK,aAAa,GAAS;cAC3BnC,SAAS,EAAE,KAAK/B,WAAL,CAAiBmE;YADD,CAA5B,CADiD,CAIjD;;YACA,KAAK1F,WAAL,CAAiBqF,UAAjB,CAA4BI,aAA5B;UACE,CAND,MAMO;YACR;YACAE,OAAO,CAAC3C,KAAR,CAAcA,KAAd;UACE;QACF;MAhBS,CADZ;IAqBA;EACD;;EAED4C,MAAM;IACL,KAAKxB,OAAL,CAAazE,IAAI,CAACkG,KAAlB;IAEA,KAAK7C,KAAL,GAAa,EAAb;IACAsB,UAAU,CAAC,MAAK;MACf,KAAKU,eAAL,CAAqBR,QAArB;IACA,CAFS,EAEP,CAFO,CAAV;EAGA;;EAEOL,OAAO,CAACP,IAAD,EAAW;IACzB,KAAK9D,qBAAL,CAA2BqC,eAA3B,GAA6CyB,IAAI,CAACtB,UAAL,GAAkBsB,IAAI,CAACvB,QAAvB,GAAkC,EAA/E;IACA,KAAKvC,qBAAL,CAA2BgG,kBAA3B,GAAgDzG,+EAAhD;IAGA,KAAK0G,kBAAL,GAA0B,IAA1B,CALyB,CAMzB;;IACAzB,UAAU,CAAC,MAAM,KAAKzE,MAAL,CAAYmG,QAAZ,CAAqB,CAAC,GAAD,CAArB,CAAP,EAAoC,GAApC,CAAV;EACA;;EAEOrD,eAAe;IACtB,IAAI,KAAKjB,WAAL,KAAqBrC,+EAAzB,EAAmE;MAClE;IACA;;IAED,MAAM4G,SAAS,GAAG,KAAKhJ,IAAL,CAAUmB,KAA5B;;IACA,IAAI,CAAC6H,SAAS,CAAC5D,QAAf,EAAyB;MACxB,KAAK6D,eAAL,CAAqB1B,QAArB;IACA,CAFD,MAEO;MACN,KAAKQ,eAAL,CAAqBR,QAArB;IACA;;IAED,KAAKzE,KAAL,CAAWoG,aAAX;EACA;;EAEOpJ,SAAS;IAChB,KAAKE,IAAL,GAAY,KAAKJ,EAAL,CAAQyB,KAAR,CAAc;MACzB+D,QAAQ,EAAE,CAAC,EAAD,EAAK9F,gEAAL,CADe;MAEzBuH,QAAQ,EAAE,CAAC,EAAD,EAAKvH,gEAAL,CAFe;MAGzBwH,WAAW,EAAE,CAAC,EAAD,EAAKxH,gEAAL,CAHY;MAIzB0H,WAAW,EAAE,CAAC,EAAD,EAAK1H,gEAAL,CAJY;MAKzB6J,kBAAkB,EAAE,CAAC,EAAD,EAAK7J,gEAAL,CALK;MAMzB+F,UAAU,EAAE,CAAC,EAAD;IANa,CAAd,CAAZ;IASA,KAAK8B,OAAL,CAAazE,IAAI,CAACkG,KAAlB;EACA;;EAEOzB,OAAO,CAACiC,IAAD,EAAW;IACzB,QAAQA,IAAR;MACC,KAAK1G,IAAI,CAACkG,KAAV;QACC,KAAK5I,IAAL,CAAUC,QAAV,CAAmBmF,QAAnB,CAA4BiE,MAA5B;QACA,KAAKrJ,IAAL,CAAUC,QAAV,CAAmB4G,QAAnB,CAA4BwC,MAA5B;QACA,KAAKrJ,IAAL,CAAUC,QAAV,CAAmB4G,QAAnB,CAA4ByC,KAA5B;QAEA,KAAKtJ,IAAL,CAAUC,QAAV,CAAmB6G,WAAnB,CAA+ByC,OAA/B;QACA,KAAKvJ,IAAL,CAAUC,QAAV,CAAmB+G,WAAnB,CAA+BuC,OAA/B;QACA,KAAKvJ,IAAL,CAAUC,QAAV,CAAmBkJ,kBAAnB,CAAsCI,OAAtC;QAEA,KAAKxC,eAAL,GAAuB,KAAvB;QACA;;MACD,KAAKrE,IAAI,CAAC0E,cAAV;QACC,KAAKpH,IAAL,CAAUC,QAAV,CAAmBmF,QAAnB,CAA4BmE,OAA5B;QACA,KAAKvJ,IAAL,CAAUC,QAAV,CAAmB4G,QAAnB,CAA4B0C,OAA5B;QACA,KAAKvJ,IAAL,CAAUC,QAAV,CAAmB4G,QAAnB,CAA4ByC,KAA5B;QAEA,KAAKtJ,IAAL,CAAUC,QAAV,CAAmB6G,WAAnB,CAA+BuC,MAA/B;QACA,KAAKrJ,IAAL,CAAUC,QAAV,CAAmB+G,WAAnB,CAA+BqC,MAA/B;QACA,KAAKrJ,IAAL,CAAUC,QAAV,CAAmBkJ,kBAAnB,CAAsCE,MAAtC;QAEA,KAAKtC,eAAL,GAAuB,IAAvB;QACA;;MACD,KAAKrE,IAAI,CAACiF,WAAV;QACC,KAAK3H,IAAL,CAAUC,QAAV,CAAmBmF,QAAnB,CAA4BmE,OAA5B;QACA,KAAKvJ,IAAL,CAAUC,QAAV,CAAmB4G,QAAnB,CAA4B0C,OAA5B;QACA;;MACD;QACC;IA5BF;;IA+BA,KAAKvJ,IAAL,CAAUC,QAAV,CAAmB4G,QAAnB,CAA4ByC,KAA5B;IACA,KAAKtJ,IAAL,CAAUC,QAAV,CAAmB6G,WAAnB,CAA+BwC,KAA/B;IACA,KAAKtJ,IAAL,CAAUC,QAAV,CAAmB+G,WAAnB,CAA+BsC,KAA/B;IACA,KAAKtJ,IAAL,CAAUC,QAAV,CAAmBkJ,kBAAnB,CAAsCG,KAAtC;EACA;;EAEOjF,qBAAqB,CAACN,OAAD,EAAkB;IAC9C;IACA,IAAIA,OAAJ,EAAa;MACZ,KAAKyF,YAAL,CAAkBpH,+EAAlB,IAA8D,CAAC2B,OAAO,CAAC0F,kBAAvE;MACA,KAAKD,YAAL,CAAkBpH,4EAAlB,IAA2D2B,OAAO,CAAC2F,cAAnE;MACA,KAAKF,YAAL,CAAkBpH,iFAAlB,IAAgE2B,OAAO,CAAC4F,uBAAxE;IACA,CAN6C,CAQ9C;;;IACA,IAAIC,WAAW,GAAG,CAAlB;;IACA,KAAK,IAAIC,MAAT,IAAmB,KAAKL,YAAxB,EAAsC;MACrC,IAAI,KAAKA,YAAL,CAAkBK,MAAlB,CAAJ,EAA+B;QAC9BD,WAAW;MACX;IACD;;IACD,KAAKE,uBAAL,GAA+BF,WAAW,GAAG,CAA7C,CAf8C,CAiB9C;;IACA,IAAIf,kBAAkB,GAAG,KAAKhG,qBAAL,CAA2BgG,kBAApD;;IACA,IAAIA,kBAAkB,IAAI,CAAC,KAAKW,YAAL,CAAkBX,kBAAlB,CAA3B,EAAkE;MACjEA,kBAAkB,GAAG,EAArB;IACA,CArB6C,CAuB9C;;;IACA,IAAI,CAACA,kBAAL,EAAyB;MACxB,KAAK,IAAIgB,MAAT,IAAmB,KAAKL,YAAxB,EAAsC;QACrC,IAAI,KAAKA,YAAL,CAAkBK,MAAlB,CAAJ,EAA+B;UAC9BhB,kBAAkB,GAAGgB,MAArB;UACA;QACA;MACD;IACD;;IACD,KAAKpF,WAAL,GAAmBoE,kBAAkB,IAAIzG,+EAAzC;EACA,CAjXyB,CAmX1B;;;EACQ8B,gBAAgB;IACzBwE,OAAO,CAACqB,GAAR,CAAa,uBAAb,EADyB,CACa;;IACpCC,QAAQ,CAACC,eAAT,CAAyBC,KAAzB,CAA+BC,WAA/B,CAA2C,iCAA3C,EAA8E,MAA9E;IACAH,QAAQ,CAACC,eAAT,CAAyBC,KAAzB,CAA+BC,WAA/B,CAA2C,gCAA3C,EAA6E,WAA7E,EAHuB,CAGoE;;IAC3FH,QAAQ,CAACC,eAAT,CAAyBC,KAAzB,CAA+BC,WAA/B,CAA2C,mCAA3C,EAAgF,WAAhF,EAJuB,CAIuE;;IAC9FH,QAAQ,CAACC,eAAT,CAAyBC,KAAzB,CAA+BC,WAA/B,CAA2C,6BAA3C,EAA0E,WAA1E,EALuB,CAKiE;;IACxFH,QAAQ,CAACC,eAAT,CAAyBC,KAAzB,CAA+BC,WAA/B,CAA2C,gCAA3C,EAA6E,SAA7E;IACAH,QAAQ,CAACC,eAAT,CAAyBC,KAAzB,CAA+BC,WAA/B,CAA2C,4BAA3C,EAAyE,OAAzE;IACAH,QAAQ,CAACC,eAAT,CAAyBC,KAAzB,CAA+BC,WAA/B,CAA2C,2BAA3C,EAAwE,OAAxE;IACAH,QAAQ,CAACC,eAAT,CAAyBC,KAAzB,CAA+BC,WAA/B,CAA2C,8BAA3C,EAA2E,OAA3E;IACAH,QAAQ,CAACC,eAAT,CAAyBC,KAAzB,CAA+BC,WAA/B,CAA2C,wBAA3C,EAAqE,OAArE;EACA;;AA/XyB;;;mBAAdxH,gBAAc3G,gEAAAA,CAAAA,oDAAAA,GAAAA,gEAAAA,CAAAA,+DAAAA,GAAAA,gEAAAA,CAAAA,4DAAAA,GAAAA,gEAAAA,CAAAA,6DAAAA,GAAAA,gEAAAA,CAAAA,6DAAAA,GAAAA,gEAAAA,CAAAA,sEAAAA,GAAAA,gEAAAA,CAAAA,mEAAAA,GAAAA,gEAAAA,CAAAA,iFAAAA,GAAAA,gEAAAA,CAAAA,+DAAAA,GAAAA,gEAAAA,CAAAA,0FAAAA,GAAAA,gEAAAA,CAAAA,kGAAAA;AAAA;;;QAAd2G;EAAc5D;EAAAqL;IAAA;;;;;;;;;;;;;;;;;;;MC1C3BpO,6DAAAA,cAAmC,CAAnC,EAAmC,aAAnC,EAAmC,CAAnC,EAAmC,CAAnC,EAAmC,IAAnC;MAEMA,qDAAAA;MAAiBA,2DAAAA;MACrBA,wDAAAA;MACAA,yDAAAA;MACDA,2DAAAA;MACAA,6DAAAA,cAA4C,CAA5C,EAA4C,KAA5C,EAA4C,CAA5C;MAEEA,yDAAAA;MAoJDA,2DAAAA;;;;MA3JmEA,wDAAAA;MAAAA,yDAAAA;MAC/DA,wDAAAA;MAAAA,iEAAAA;MAEeA,wDAAAA;MAAAA,yDAAAA;MAIKA,wDAAAA;MAAAA,yDAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACL1B;AAGA;AAMA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;ICLKA,6DAAAA;IAA6BA,qDAAAA;;IAAgCA,2DAAAA;;;;;IAAhCA,wDAAAA;IAAAA,gEAAAA,CAAAA,0DAAAA;;;;;;;;;;;;;;;;IAU5BA,6DAAAA;IAMCA,yDAAAA;MAAAA,4DAAAA;MAAA;;MAAA;;MAAA,OAASA,0DAAAA,EAACyO,uBAAe,OAAf,CAAD,IAA4BC,WAA5B,CAAT;IAAoD,CAApD;IACA1O,6DAAAA;IAAUA,qDAAAA;IAAeA,2DAAAA;IACzBA,6DAAAA;IACCA,qDAAAA;IACDA,2DAAAA;;;;;IAPAA,yDAAAA,eAAAA,8DAAAA,0BAA2B,kBAA3B,EAA2BA,8DAAAA,QAA3B;IAIUA,wDAAAA;IAAAA,gEAAAA;IAETA,wDAAAA;IAAAA,iEAAAA;;;;;;IASHA,wDAAAA;;;;;;IAEAA,wDAAAA;;;;;;IAEAA,wDAAAA;;;;;;IAUAA,6DAAAA;IAA0DA,qDAAAA;IAAwCA,2DAAAA;;;;;;;;;;;;IA4BlGA,6DAAAA;IAAwGA,qDAAAA;IAA2BA,2DAAAA;;;;;IAA/EA,yDAAAA,YAAAA,8DAAAA;IAAoDA,wDAAAA;IAAAA,gEAAAA;;;;;;;;IAJzGA,6DAAAA;IAA+BA,yDAAAA;MAAAA,4DAAAA;MAAA;MAAA,OAASA,0DAAAA,mCAAT;IAAkC,CAAlC;IAC9BA,6DAAAA,kBAA4F,CAA5F,EAA4F,UAA5F;IACWA,qDAAAA;IAAaA,2DAAAA;IAExBA,yDAAAA;IACDA,2DAAAA;;;;;IAJ0DA,wDAAAA;IAAAA,yDAAAA;IAGnDA,wDAAAA;IAAAA,yDAAAA;;;;;;IAWPA,wDAAAA;;;;;;;;;;;;;;AD1EJ,MAAM2O,SAAN,CAAe;;AAoBT,MAAOC,aAAP,CAAoB;EA6EzBxO,YACSwG,MADT,EAESiI,MAFT,EAGSC,cAHT,EAISC,YAJT,EAKSC,MALT,EAMS/H,aANT,EAOQgI,IAPR,EAQQC,KARR,EASQC,YATR,EAUCC,SAVD,EAWClI,oBAXD,EAYSmI,aAZT,EAaSC,aAbT,EAa4C;IAZnC;IACA;IACA;IACA;IACA;IACA;IACD;IACA;IACA;IAGC;IACA;IAvFT,qBAAgB,KAAhB;IAKA,oBAAe,KAAf;IACA,kBAAa,KAAb;IACA,qBAAgB,KAAhB;IACA,kBAAa,KAAb;IACA,uBAAkB,KAAlB;IAEA,aAAQ;MAAEnK,KAAK,EAAE;IAAT,CAAR;IAIA,yBAAoB,KAApB;IACA,cAAS,CAAC,CAAV,CAuE4C,CApE5C;;IACA,iBAAyB,CACxB;MACCgD,KAAK,EAAE,WADR;MAECoH,KAAK,EAAE,YAFR;MAGCC,IAAI,EAAE;IAHP,CADwB,EAMxB;MACCrH,KAAK,EAAE,OADR;MAECoH,KAAK,EAAE,QAFR;MAGCC,IAAI,EAAE;IAHP,CANwB,EAWxB;MACCrH,KAAK,EAAE,cADR;MAECoH,KAAK,EAAE,eAFR;MAGCC,IAAI,EAAE,MAHP;MAICC,eAAe,EAAE;IAJlB,CAXwB,EAiBxB;MACCtH,KAAK,EAAE,UADR;MAECoH,KAAK,EAAE,WAFR;MAGCC,IAAI,EAAE,SAHP;MAICE,eAAe,EAAE;IAJlB,CAjBwB,EAuBxB;MACCvH,KAAK,EAAE,cADR;MAECoH,KAAK,EAAE,eAFR;MAGCC,IAAI,EAAE,QAHP;MAICC,eAAe,EAAE;IAJlB,CAvBwB,EA6BxB;MACCtH,KAAK,EAAE,gBADR;MAECoH,KAAK,EAAE,iBAFR;MAGCC,IAAI,EAAE;IAHP,CA7BwB,EAkCxB;MACCrH,KAAK,EAAE,cADR;MAECoH,KAAK,EAAE,eAFR;MAGCC,IAAI,EAAE,eAHP;MAICG,cAAc,EAAE;IAJjB,CAlCwB,CAAzB;IA4CA,mBAAc,MAAd;IACA,qBAAgB,IAAhB;IAGA,wBAAmB,EAAnB;IACA,kBAAa,EAAb;IAEA,aAAQ,qBAAR;IACA,oBAA8B,EAA9B;IAiBC,KAAKC,OAAL,GAAepB,iFAAf;IACA,KAAKsB,aAAL,GAAqB,KAAKC,gBAAL,EAArB;IACA,KAAK3G,QAAL,GAAgB,KAAK4G,WAAL,EAAhB;IAEAb,YAAY,CAACc,UAAb,CACC,cADD,EAECb,SAAS,CAACc,8BAAV,CAAyC,gCAAzC,CAFD;IAKA,KAAKC,YAAL,GAAoBtB,MAAM,CAACA,MAAP,CAAcuB,UAAlC;IACA,KAAKC,UAAL,GAAkBxB,MAAM,CAACA,MAAP,CAAcwB,UAAhC;IACA,KAAKC,aAAL,GAAqBzB,MAAM,CAAC0B,iBAAP,CAAyBD,aAA9C;IACA,KAAKE,UAAL,GAAkB3B,MAAM,CAAC0B,iBAAP,CAAyBC,UAA3C;IACA,KAAKC,iBAAL,GAAyB5B,MAAM,CAAC0B,iBAAP,CAAyBG,gBAAlD;IACA,KAAKC,eAAL,GAAuB7B,cAAvB;IACA,KAAK8B,oBAAL,GAA4B7B,YAA5B;IACA,KAAKjH,eAAL,GAAuBZ,oBAAoB,CAACa,OAArB,CAA6BD,eAApD;IAEA,KAAK+I,uBAAL;IAEA,MAAMpJ,aAAa,GAAGP,oBAAoB,CAACO,aAA3C;;IACA,IAAIA,aAAa,CAACC,sBAAlB,EAA0C;MACzC,KAAKC,YAAL,CAAkB,kBAAlB,IAAwCF,aAAa,CAACC,sBAAtD;IACA;;IAED,IAAID,aAAa,CAACG,YAAlB,EAAgC;MAC/B,KAAKD,YAAL,CAAkBE,KAAlB,GAA0BJ,aAAa,CAACG,YAAxC;IACA;;IAED,KAAKO,KAAL,GAAaV,aAAa,CAACW,QAAd,IAA0B,KAAKD,KAA5C;IACA,KAAK2I,aAAL,GAAqB,CAAC,CAACrJ,aAAa,CAACqJ,aAArC;EACA;;EAED5P,QAAQ;IACP,KAAK+N,IAAL,CAAU8B,gBAAV,CAA2BtM,SAA3B,CAAqCuM,eAAe,IAAG;MACtD,IAAIA,eAAJ,EAAqB;QACpB,KAAKX,UAAL,GAAkB,KAAKxB,MAAL,CAAYA,MAAZ,CAAmBwB,UAArC;QACA,KAAKQ,uBAAL;MACA;IACD,CALD;IAOA,KAAK5B,IAAL,CAAUgC,eAAV,CAA0BxM,SAA1B,CAAoC0L,YAAY,IAAG;MAClD,KAAKA,YAAL,GAAoBA,YAApB;MACA,KAAKU,uBAAL;IACA,CAHD;IAKA,KAAKK,YAAL,GAAoB,KAAKhC,KAAL,CAAWiC,YAAX,GAA0B1M,SAA1B,CAAoCsB,OAAO,IAAG;MACjE,IAAIqL,MAAM,GAAGrL,OAAO,CAAC,CAAD,CAApB;MAEA,KAAKsL,gBAAL,GAAwBD,MAAM,GAAG,IAAIA,MAAM,CAACE,OAAO,QAAQF,MAAM,CAACG,UAAU,GAA9C,GAAoD,EAAlF;MACA,KAAKC,UAAL,GAAkBJ,MAAM,CAACE,OAAzB;MACA,KAAKG,uBAAL;IACA,CANmB,CAApB;IAQA,KAAKC,aAAL,GAAqB,KAAKxC,KAAL,CAAWyC,QAAX,CAAoB,OAApB,CAArB;;IAEA,IAAI,KAAKlB,iBAAT,EAA2B;MAC1B;MACA,KAAKmB,4BAAL,CAAkC,IAAlC,EAF0B,CAI1B;;MACA,KAAKjB,eAAL,CAAqBkB,eAArB,CAAqC,KAAKhD,MAAL,CAAY0B,iBAAZ,CAA8BuB,UAAnE;;MACA,KAAKnB,eAAL,CAAqBoB,yBAArB,GAN0B,CAQ1B;;;MACA,KAAKnB,oBAAL,CAA0BoB,gBAA1B,CAA2CvN,SAA3C,CACCwN,MAAM,IAAG;QAAE,KAAKA,MAAL,GAAcA,MAAd;MAAsB,CADlC;IAGD;EACA;;EAEDtI,WAAW;IACV,KAAKuH,YAAL,CAAkBtH,WAAlB;EACA;;EAEDsI,aAAa;IACZ,KAAKR,aAAL,GAAqB,CAAC,KAAKA,aAA3B;EACA;;EAEDS,oBAAoB,CAAC5N,MAAD,EAAO;IAC1B,KAAKmN,aAAL,GAAqBnN,MAArB;EACA;;EAEDkN,uBAAuB;IACtB,KAAKW,WAAL,GAAmB,KAAKlD,KAAL,CAAWyC,QAAX,CAAoB,OAApB,IAA+B,MAA/B,GAAwC,MAA3D;EACA;;EAEDd,uBAAuB;IACtB,KAAKwB,MAAL,GAAc,KAAKC,SAAL,CAAexQ,MAAf,CAAsByQ,CAAC,IAAG;MACvC,IAAIA,CAAC,CAAC7C,eAAF,IAAqB,KAAKW,UAA9B,EAA0C;QACzC,OAAO,KAAP;MACA;;MAED,IAAIkC,CAAC,CAAC9C,eAAF,IAAqB,KAAKU,YAA9B,EAA4C;QAC3C,OAAO,KAAP;MACA;;MAED,IAAIoC,CAAC,CAACC,mBAAF,IAAyB,CAAC,KAAKrC,YAAnC,EAAiD;QAChD,OAAO,KAAP;MACA;;MAED,IAAIoC,CAAC,CAAC5C,cAAF,IAAoB,CAAC,KAAKW,aAA9B,EAA6C;QAC5C,OAAO,KAAP;MACA;;MAED,OAAO,IAAP;IACA,CAlBa,CAAd;EAmBA;;EAEKvH,MAAM,CAAC0J,cAAD,EAAyB;IAAA;;IAAA;MACpC,MAAMC,QAAQ,GAAG,MAAK;QACrB,IAAI,KAAI,CAACjC,iBAAT,EACC,KAAI,CAACE,eAAL,CAAqBgC,cAArB;;QACD,KAAI,CAAC1L,aAAL,CAAmB2L,UAAnB;MACA,CAJD;;MAMA,IAAI,CAACH,cAAL,EAAqB;QACpBC,QAAQ;QACR;MACA;;MAED,MAAMG,aAAa,SAAS,KAAI,CAACxD,aAAL,CAAmByD,OAAnB,CAA2B,mCAA3B,EAAgE,gBAAhE,CAA5B;;MACA,IAAID,aAAJ,EAAmB;QAClBH,QAAQ;MACR;IAfmC;EAgBpC;;EAEDK,SAAS;IACR,MAAM,IAAIC,KAAJ,CAAU,YAAV,CAAN;EACA;;EAEDC,UAAU;IACT,MAAMC,IAAI,GAAG,KAAKhE,KAAL,CAAWyC,QAAX,CAAoB,OAApB,CAAb;IACA,MAAMwB,IAAI,GAAG,KAAKC,QAAL,CAAcC,aAAd,CAA4BC,qBAA5B,EAAb;IAEA,IAAIC,KAAJ;IACA,IAAIC,MAAJ;IACA,IAAIC,IAAJ;;IACA,IAAIP,IAAJ,EAAU;MACTK,KAAK,GAAG,GAAR;MACAC,MAAM,GAAG,KAAT;MACAC,IAAI,GAAGN,IAAI,CAACO,KAAL,GAAaH,KAAb,GAAqB,IAA5B;IACA,CAJD,MAIO;MACNA,KAAK,GAAG,GAAR;MACAC,MAAM,GAAG,KAAT;MACAC,IAAI,GAAG,MAAP;IACA;;IACD,IAAI/P,SAAS,GAAG,KAAKsL,MAAL,CAAY2E,IAAZ,CAAiBpF,qEAAjB,EAAkC;MACjDgF,KAAK,EAAEA,KAAK,GAAG,IADkC;MAEjDC,MAAM,EAAEA,MAFyC;MAGjDI,UAAU,EAAE,eAHqC;MAIjDC,QAAQ,EAAE;QACTJ,IADS;QAETK,GAAG,EAAE;MAFI;IAJuC,CAAlC,CAAhB;EASA;;EAEDC,qBAAqB;IACpB,OAAO,KAAK9B,MAAZ;EACA;;EAED+B,iBAAiB,CAACC,CAAD,EAAS;IACzBA,CAAC,CAACC,eAAF;IACA,KAAKjC,MAAL,GAAc,CAAC,CAAf;IACA,KAAKL,4BAAL,CAAkC,KAAlC;IACA,KAAKhL,MAAL,CAAYmG,QAAZ,CAAqB,CAAC,eAAD,CAArB;EACA;;EAED6E,4BAA4B,CAACuC,gBAAD,EAA2B;IACtD,IAAI,KAAKlC,MAAL,IAAe,CAAC,CAApB,EACC,OAAO,KAAKA,MAAZ;IACD,KAAKA,MAAL,GAAc,CAAC,CAAf;;IAEA,IAAIkC,gBAAJ,EAAsB;MACrB,KAAKvD,oBAAL,CAA0BwD,sBAA1B,CAAiD,IAAjD,EACC3P,SADD,CACWI,MAAM,IAAG;QACnB,IAAI;UACH,IAAIoN,MAAM,GAAGoC,QAAQ,CAACxP,MAAD,CAArB;UACA,IAAIsP,gBAAgB,IAAIlC,MAAM,GAAG,CAAjC,EACC,KAAK3C,aAAL,CAAmBgF,OAAnB,CAA2B,wCAA3B,EACC,mCADD;QAGD,CAND,CAME,OAAOvK,KAAP,EAAc,CACf;MACD,CAVD;IAWA,CAjBqD,CAmBtD;;;IACA,KAAK6G,oBAAL,CAA0BwD,sBAA1B,CAAiD,KAAjD,EACC3P,SADD,CACWI,MAAM,IAAG;MACnB,IAAI;QACH,KAAKoN,MAAL,GAAcoC,QAAQ,CAACxP,MAAD,CAAtB;MACA,CAFD,CAEE,OAAOkF,KAAP,EAAc;QACf,KAAKkI,MAAL,GAAc,CAAC,CAAf;MACA;IACD,CAPD;EAQA;;EAEDsC,oBAAoB;IACnB,IAAI,KAAKtC,MAAL,GAAc,CAAlB,EAAqB,OAAO;MAAC,SAAQ;IAAT,CAAP;IACrB,OAAO;MAAC,SAAQ;IAAT,CAAP;EACA;;EAEOjC,WAAW;IAClB,MAAMwE,UAAU,GAAG,KAAK3F,MAAL,CAAYA,MAA/B;;IACA,IAAI,CAAC2F,UAAL,EAAiB;MAChB,OAAO,EAAP;IACA;;IACD,OAAOA,UAAU,CAACC,IAAlB;EACA;;EAEO1E,gBAAgB;IACvB,MAAM2E,WAAW,GAAG,KAAK7F,MAAL,CAAY0B,iBAAhC;;IACA,IAAI,CAACmE,WAAL,EAAkB;MACjB,OAAO,EAAP;IACA;;IACD,OAAOA,WAAW,CAAC5E,aAAnB;EACA;;AAtTwB;;;mBAAblB,eAAa5O,gEAAAA,CAAAA,oDAAAA,GAAAA,gEAAAA,CAAAA,uDAAAA,GAAAA,gEAAAA,CAAAA,wDAAAA,GAAAA,gEAAAA,CAAAA,8DAAAA,GAAAA,gEAAAA,CAAAA,gEAAAA,GAAAA,gEAAAA,CAAAA,uDAAAA,GAAAA,gEAAAA,CAAAA,+DAAAA,GAAAA,gEAAAA,CAAAA,gEAAAA,GAAAA,gEAAAA,CAAAA,oEAAAA,GAAAA,gEAAAA,CAAAA,oEAAAA,GAAAA,gEAAAA,CAAAA,iFAAAA,GAAAA,gEAAAA,CAAAA,kFAAAA,GAAAA,gEAAAA,CAAAA,kFAAAA;AAAA;;;QAAb4O;EAAa7L;EAAAqL;IAAA;;;;;;;;;;;;;;;MCnC1BpO,6DAAAA,gCAA2D,CAA3D,EAA2D,aAA3D,EAA2D,CAA3D,EAA2D,CAA3D;MACcA,yDAAAA;QAAA,OAAgBuF,gCAAhB;MAA4C,CAA5C;MACZvF,6DAAAA,cAA8B,CAA9B,EAA8B,KAA9B,EAA8B,CAA9B;MAEEA,wDAAAA;MACAA,6DAAAA;MACCA,qDAAAA;MAEAA,yDAAAA;MACDA,2DAAAA;MAGDA,6DAAAA,cAAkD,EAAlD,EAAkD,KAAlD,EAAkD,CAAlD;MACuBA,qDAAAA;MAAcA,2DAAAA;MACpCA,wDAAAA;MAEAA,6DAAAA,qBAAwD,EAAxD,EAAwD,KAAxD;MAEEA,yDAAAA;MAYDA,2DAAAA;MAMAA,yDAAAA;MAEAA,yDAAAA;;MAEAA,yDAAAA;;MAEAA,6DAAAA;MAAsBA,yDAAAA;QAAA,OAASuF,YAAT;MAAiB,CAAjB;MACrBvF,6DAAAA;MAAUA,qDAAAA;MAAWA,2DAAAA;MAAWA,qDAAAA;MACjCA,2DAAAA;MAEAA,wDAAAA;MAEAA,6DAAAA;MAAsBA,qDAAAA;MAAgDA,2DAAAA;MACtEA,wDAAAA;MACAA,yDAAAA;MACDA,2DAAAA;MAKHA,6DAAAA,gBAA0C,EAA1C,EAA0C,KAA1C,EAA0C,EAA1C,EAA0C,EAA1C,EAA0C,aAA1C,EAA0C,EAA1C,EAA0C,EAA1C,EAA0C,QAA1C,EAA0C,EAA1C;MASgJA,yDAAAA;QAAA,OAASuF,mBAAT;MAAwB,CAAxB;MAC5IvF,6DAAAA;MAAUA,qDAAAA;MAAIA,2DAAAA;MAGfA,6DAAAA;MACCA,qDAAAA;MACDA,2DAAAA;MACAA,wDAAAA;MAEAA,yDAAAA;MAOAA,6DAAAA,oBAA4B,EAA5B,EAA4B,QAA5B,EAA4B,EAA5B;MAC8DA,yDAAAA;QAAA,OAASuF,gBAAT;MAAqB,CAArB;MAC5DvF,6DAAAA;MAAUA,qDAAAA;MAAMA,2DAAAA;MAIlBA,6DAAAA;MAA6CA,yDAAAA;QAAA,OAASuF,YAAT;MAAiB,CAAjB;MAAsDvF,qDAAAA;MAAMA,2DAAAA;MAEzGA,yDAAAA;MACDA,2DAAAA;MAEAA,6DAAAA,gBAA6B,EAA7B,EAA6B,MAA7B,EAA6B,EAA7B;MAEEA,wDAAAA;MACDA,2DAAAA;;;;MA/FmBA,yDAAAA,kBAAAA,8DAAAA;MACqCA,wDAAAA;MAAAA,yDAAAA,8BAAwB,MAAxB,EAAwBuF,eAAxB;MAKvDvF,wDAAAA;MAAAA,iEAAAA;MAEMA,wDAAAA;MAAAA,yDAAAA;MAKeA,wDAAAA;MAAAA,gEAAAA;MAMFA,wDAAAA;MAAAA,yDAAAA;MAiBIA,wDAAAA;MAAAA,yDAAAA;MAEjBA,wDAAAA;MAAAA,yDAAAA,UAAAA,0DAAAA;MAEkBA,wDAAAA;MAAAA,yDAAAA,SAAAA,0DAAAA;MAQFA,wDAAAA;MAAAA,iEAAAA;MAEfA,wDAAAA;MAAAA,yDAAAA;MAcRA,wDAAAA;MAAAA,yDAAAA;MACwBA,wDAAAA;MAAAA,0DAAAA;MAIcA,wDAAAA;MAAAA,yDAAAA,eAAAA,8DAAAA;MACrCA,wDAAAA;MAAAA,iEAAAA;MAIKA,wDAAAA;MAAAA,yDAAAA;MAaEA,wDAAAA;MAAAA,yDAAAA;MAEWA,wDAAAA;MAAAA,yDAAAA;;;;;;;;;;;;;;;;;;;;;;;;ACxFkD;;;;;AAQlE,MAAM,sBAAsB;IAKlC,YACQ,SAA+C,EACtB,IAAwB;QADjD,cAAS,GAAT,SAAS,CAAsC;QACtB,SAAI,GAAJ,IAAI,CAAoB;QAExD,gCAAgC;QAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACnC,CAAC;IAED,OAAO;QACN,gCAAgC;QAChC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;;4FAlBW,sBAAsB,uMAOzB,qEAAe;oHAPZ,sBAAsB;QCTnC,wEAAmC;QAClC,uDACD;QAAA,4DAAK;QAEL,mFAA+E;QAE/E,yEAA4C;QACxC,uDAAgB;QAAA,4DAAI;QAGxB,yEAAoC;QACO,8IAAS,aAAS,IAAC;QAAC,gEAAK;QAAA,4DAAS;;QAV5E,0DACD;QADC,sFACD;QAEoB,0DAAqB;QAArB,gJAAqB;QAGrC,0DAAgB;QAAhB,+EAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IEOhB,gFAA8C;IAC1C,iXAAS,8FAA0B,KAAC;IAA0B,uDAAiB;IAAA,4DAAI;;;IAArB,0DAAiB;IAAjB,+EAAiB;;;;IAkBnF,oFAAgH;IAAjG,qYAAS,gHAA2C,KAAC;IACnE,wEAA4B;IAAA,uDAAuB;IAAA,4DAAI;;;IAA3B,0DAAuB;IAAvB,qFAAuB;;;;IAkBpD,oFAAuH;IAAxG,sYAAS,wHAAkD,KAAC;IAC1E,wEAA4B;IAAA,uDAAuB;IAAA,4DAAI;;;IAA3B,0DAAuB;IAAvB,sFAAuB;;ADtCjD,MAAM,0BAA0B;IAgBtC,YACS,MAAqB,EACrB,MAAc;QADd,WAAM,GAAN,MAAM,CAAe;QACrB,WAAM,GAAN,MAAM,CAAQ;QATvB,6EAA6E;QAC7E,mBAAc,GAAG,oBAAoB,CAAC;IASlC,CAAC;IAEL,QAAQ;QACP,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QACtC,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;QAElD,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,qBAAqB,CAAC;QACtD,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,wBAAwB,CAAC;IACxD,CAAC;IAED,eAAe;QACd,IAAI,CAAC,MAAM,GAAG;YACb,IAAI,CAAC,oBAAoB;YACzB,IAAI,CAAC,wBAAwB;YAC7B,IAAI,CAAC,+BAA+B;SACpC,CAAC;IACH,CAAC;IAED,UAAU,CAAC,CAAQ,EAAE,MAAuB;QAC3C,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,qBAAqB,CAAC,CAAQ,EAAE,YAA6B;QAC5D,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,4BAA4B,CAAC,CAAQ,EAAE,YAA6B;QACnE,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,SAAS,CAAC,KAAwB;QACjC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,EAAE;YACzC,OAAO;SACP;QAED,0CAA0C;QAC1C,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;QAEvD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED,UAAU,CAAC,KAAwB;QAClC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,EAAE;YACzC,OAAO;SACP;QAED,0DAA0D;QAC1D,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,cAAc,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3D,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAE5C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,SAAS,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IAC9B,CAAC;;oGA9EW,0BAA0B;wHAA1B,0BAA0B;;;;;;;;;;;QCfvC,yEAAsC;QAGpC,8SAAU,6EAAgC,KAAC,sPACjC,4EAA+B,KADE;QAG3C,6FAA4B;QAEhB,wEAAa;QAAA,4DAAW;QAClC,oFACD;QAAA,4DAAkB;QAEnB,yEAAiC;QAE/B,4IAEgB;QACjB,4DAAe;QAIjB,6FAGwE;QAFvE,gTAAU,6EAAoC,KAAC,wPACrC,4EAAmC,KADE;QAG/C,8FAA4B;QAEhB,gEAAI;QAAA,4DAAW;QACzB,kFACD;QAAA,4DAAkB;QAEnB,0EAAoD;QAElD,4IAEgB;QACjB,4DAAe;QAIjB,8FAG+E;QAF9E,gTAAU,6EAA2C,KAAC,wPAC5C,4EAA0C,KADE;QAGtD,8FAA4B;QAEhB,kEAAM;QAAA,4DAAW;QAC3B,0EACD;QAAA,4DAAkB;QAEnB,0EAAoD;QAElD,4IAEgB;QACjB,4DAAe;;;;;QArDhB,0DAAiB;QAAjB,0EAAiB;QAYmB,0DAAU;QAAV,gFAAU;QAU9C,0DAAsE;QAAtE,8GAAsE;QAS0B,0DAAgB;QAAhB,sFAAgB;QAUhH,0DAA6E;QAA7E,8GAA6E;QAS0B,0DAAgB;QAAhB,sFAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3C5C;;;;;;;;;;;;;;ICQ1E,yEAAiE;IAAA,uDAAqD;IAAA,4DAAM;;;IAA3D,0DAAqD;IAArD,uKAAqD;;;IAFvH,yEAAoB;IACd,uDAA6G;;IAAA,4DAAM;IACxH,+HAA4H;IAC7H,4DAAM;;;IAFA,0DAA6G;IAA7G,oUAA6G;IAC5G,0DAAsC;IAAtC,gJAAsC;;ADFxC,MAAM,oBAAqB,SAAQ,uFAAiB;IAG1D,YACC,MAAqB,EACb,MAAc,EACd,gBAAkC;QAE1C,KAAK,CAAC,MAAM,CAAC,CAAC;QAHN,WAAM,GAAN,MAAM,CAAQ;QACd,qBAAgB,GAAhB,gBAAgB,CAAkB;IAG3C,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,OAAO,EAAE,CAAC;IAChB,CAAC;IAED,OAAO;QACN,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,gBAAgB,CAAC,oCAAoC,EAAE;aAC1D,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC;IACxG,CAAC;IAEO,mBAAmB,CAAC,IAAiC;QAC5D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACtB,CAAC;;wFAxBW,oBAAoB;kHAApB,oBAAoB;QCfjC,8EAAqB;QAIb,uEAAY;QAAA,4DAAK;QAEtB,qEAAoB;QACpB,4EAAgH;QAApB,4IAAS,aAAS,IAAC;QAC9G,2EAAU;QAAA,kEAAO;QAAA,4DAAW;QAK/B,0EAA2B;QAC3B,kIAKc;QACf,4DAAW;;QANa,2DAA2B;QAA3B,wFAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACL0B;;;;;;;;;;;;;;ICS1E,yEAA0D;IAAA,uDAA8C;IAAA,4DAAM;;;IAApD,0DAA8C;IAA9C,yJAA8C;;;IAFzG,yEAAoB;IACd,uDAAoG;;IAAA,4DAAM;IAC/G,kIAA8G;IAC/G,4DAAM;;;IAFA,0DAAoG;IAApG,6SAAoG;IAChF,0DAA+B;IAA/B,kIAA+B;;ADHpD,MAAM,uBAAwB,SAAQ,uFAAiB;IAG7D,YACC,MAAqB,EACb,MAAc,EACd,gBAAkC;QAE1C,KAAK,CAAC,MAAM,CAAC,CAAC;QAHN,WAAM,GAAN,MAAM,CAAQ;QACd,qBAAgB,GAAhB,gBAAgB,CAAkB;IAG3C,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,OAAO,EAAE,CAAC;IAChB,CAAC;IAED,OAAO;QACN,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,gBAAgB,CAAC,6BAA6B,EAAE;aACnD,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAC3G,CAAC;IAEO,mBAAmB,CAAC,IAA0B;QACrD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACtB,CAAC;;8FAxBW,uBAAuB;qHAAvB,uBAAuB;QCfpC,8EAAqB;QAIb,0EAAe;QAAA,4DAAK;QAEzB,qEAAoB;QACpB,4EAAmH;QAApB,+IAAS,aAAS,IAAC;QACjH,2EAAU;QAAA,kEAAO;QAAA,4DAAW;QAK/B,0EAA2B;QAE3B,qIAKc;QACf,4DAAW;;QANa,2DAA2B;QAA3B,wFAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACdd;AAGT;AACK;AAUX;AAEuD;;;;;;;;;;;;;;;ICX1E,4EAA4G;IAAjE,qTAAS,wFAAuB,KAAC;IAC3E,2EAAU;IAAA,gFAAqB;IAAA,4DAAW;;;IAqBzC,2EAAmE;IAAA,uDAAsC;IAAA,4DAAO;;;;IAA7C,0DAAsC;IAAtC,oHAAsC;;;IAWtG,0EAAwF;IACvF,uEACD;IAAA,4DAAM;;;IAKN,0EAEmE;IAClE,uDACD;;IAAA,4DAAM;;;IADL,0DACD;IADC,+MACD;;;IACA,0EAAsF;IACrF,uDACD;;IAAA,4DAAM;;;IADL,0DACD;IADC,0MACD;;;IAGC,0EAAwE;IACtC,iEAAM;IAAA,4DAAO;IAC9C,2EAAgC;IAAA,uDAE7B;;IAAA,4DAAO;IACV,2EAA+B;IAAA,uDAAsC;IAAA,4DAAO;;;IAH5C,0DAE7B;IAF6B,8KAE7B;IAC4B,0DAAsC;IAAtC,8GAAsC;;;IAGtE,0EAAgF;IACpD,uDAA8B;IAAA,4DAAM;IAC/D,0EAA0B;IAAA,uDAA6B;IAAA,4DAAM;;;IADlC,0DAA8B;IAA9B,6FAA8B;IAC/B,0DAA6B;IAA7B,4FAA6B;;;IAExD,0EAAsD;IAAA,6EAAkB;IAAA,4DAAM;;;IAC9E,0EAAoD;IAAA,mEAAQ;IAAA,4DAAM;;;IAGpE,0EAAyC;IACJ,iEAAM;IAAA,4DAAW;IACrD,0EAA+B;IAAA,uDAAiD;IAAA,4DAAM;;;;IAAvD,0DAAiD;IAAjD,wHAAiD;;;IAU7E,0EAAiE;IAChE,kEAAM;IAAA,mEAA6C;IACpD,4DAAM;;;IAGP,0EAA8D;IAC7D,4EACD;IAAA,4DAAM;;;IAIN,0EAA0E;IAExE,0MAAS,wBAAwB,IAAC;IAER,uDAAY;IAAA,4DAAI;;;IAA1C,0DAAyB;IAAzB,mKAAyB;IAAC,0DAAY;IAAZ,2EAAY;;;IANzC,0EAAyD;IACxD,mEAA8C;IAC9C,wKAKM;IACP,4DAAM;;;;IANc,0DAA+B;IAA/B,6GAA+B;;;IAUlD,0EAAmE;IAClE,uDACD;IAAA,4DAAM;;;IADL,0DACD;IADC,wGACD;;;IAED,0EAA4D;IAC3D,uDACD;IAAA,4DAAM;;;IADL,0DACD;IADC,wGACD;;;IAnCF,0EAAmD;IAGT,uDAA4B;IAAA,4DAAM;IACzE,0EAA4B;IACE,uDAAmC;IAAA,4DAAM;IACtE,0EAAyB;IAAA,uDAAyC;IAAA,4DAAM;IAExE,mKAEM;IAEP,4DAAM;IACN,mKAEM;IACP,4DAAM;IACN,mKAQM;IACP,4DAAM;IACN,2EAA8B;IAE5B,mKAEM;IACP,4DAAM;IACN,mKAEM;IACP,4DAAM;;;;IAjCmC,0DAA4B;IAA5B,2FAA4B;IAErC,0DAAmC;IAAnC,0GAAmC;IACvC,0DAAyC;IAAzC,wGAAyC;IAE5D,0DAAiC;IAAjC,iGAAiC;IAKlC,0DAAkC;IAAlC,kGAAkC;IAIpB,0DAAkC;IAAlC,0GAAkC;IAYzC,0DAA8B;IAA9B,8FAA8B;IAItC,0DAA8B;IAA9B,8FAA8B;;;IAMtC,sEAAoC;IACd,uDAAwC;IAAA,4DAAM;IACnE,0EAAyB;IAAA,uDAA0B;IAAA,4DAAM;;;IADpC,0DAAwC;IAAxC,uGAAwC;IACpC,0DAA0B;IAA1B,yFAA0B;;;IAGpD,sEAAkC;IACR,uDAA0B;IAAA,4DAAM;;;IAAhC,0DAA0B;IAA1B,yFAA0B;;;IAGpD,0EAAuD;IAC/B,oEAAS;IAAA,4DAAO;IACvC,sEAAK;IAEH,6LAAS,wBAAwB,IAAC;IAElB,uDAA6B;IAAA,4DAAI;;;IADjD,0DAAoC;IAApC,qKAAoC;IACpB,0DAA6B;IAA7B,4FAA6B;;;;IAlGlD,wEAIgB;IAGb,0JAEM;IACN,0EAAkC;IACjC,uDAED;;;IAAA,4DAAM;IACN,0JAIM;IACN,0JAEM;IACN,2EAAuD;IACxB,wDAAuC;IAAA,4DAAM;IAC3E,4JAMM;IACN,sEAAoB;IACpB,4JAGM;IACN,4JAA8E;IAC9E,4JAAkE;IACnE,4DAAM;IAEP,4JAGM;IACN,6JAqCM;IAEN,4JAGM;IAEN,4JAEM;IAEN,4JAQM;IACP,4DAAM;;;;IApGN,6KAA2D;IAM1B,0DAAuD;IAAvD,mIAAuD;IAIrF,0DAED;IAFC,2SAED;IAGE,0DAA+D;IAA/D,2IAA+D;IAGvC,0DAA0D;IAA1D,sIAA0D;IAIrD,0DAAuC;IAAvC,+GAAuC;IAC/D,0DAAoC;IAApC,oGAAoC;IAQpC,0DAA6B;IAA7B,qGAA6B;IAI7B,0DAA4B;IAA5B,oGAA4B;IAC5B,0DAA0B;IAA1B,kGAA0B;IAG5B,0DAAkB;IAAlB,sFAAkB;IAIlB,0DAA6B;IAA7B,qGAA6B;IAuC7B,0DAA4B;IAA5B,oGAA4B;IAK5B,0DAA0B;IAA1B,kGAA0B;IAI1B,0DAA6B;IAA7B,6FAA6B;;;IA7FtC,sEAAqC;IACpC,oJAsGI;IACL,4DAAM;;;IApGoB,0DAAmB;IAAnB,wFAAmB;;;IAqG7C,sEAAsC;IACnB,0EAAe;IAAA,4DAAI;;;IAhHvC,sEAA8B;IAExB,uDAAc;IAAA,4DAAK;IACvB,kJAAgH;IAChH,2EAA0B;IAAA,uDAAmC;;IAAA,4DAAO;IAErE,gJAwGM;IACN,gJAEM;IACP,4DAAM;;;;IAhHA,0DAAc;IAAd,4EAAc;IACX,0DAAwC;IAAxC,8GAAwC;IACrB,0DAAmC;IAAnC,2JAAmC;IAExD,0DAA6B;IAA7B,4FAA6B;IAyG7B,0DAA8B;IAA9B,6FAA8B;;;IAhHtC,yEAAkB;IACjB,0IAkHM;IACP,4DAAM;;;IAnHgB,0DAAO;IAAP,gFAAO;;ADL/B,MAAM,GAAG;CAIR;AAED,MAAM,WAAW;CAGhB;AAED,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;AAMjC,MAAM,8BAA+B,SAAQ,uFAAiB;IAapE,YACC,MAAqB,EACb,MAAc,EACd,gBAAkC,EAClC,UAA6B;QAErC,KAAK,CAAC,MAAM,CAAC,CAAC;QAJN,WAAM,GAAN,MAAM,CAAQ;QACd,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,eAAU,GAAV,UAAU,CAAmB;QAbtC,uBAAkB,GAAG,CAAC,CAAC;QAiBtB,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QAExC,MAAM,KAAK,GAAG,yCAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,UAAU,CAAC;QAE1C,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC;QAC3C,IAAI,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,QAAQ,GAAG;gBACf,QAAQ,EAAE,UAAU,CAAC,YAAY;gBACjC,eAAe,EAAE,UAAU,CAAC,WAAW;aACvC,CAAC;SACF;IACF,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,OAAO,EAAE,CAAC;IAChB,CAAC;IAED,eAAe,CAAC,CAAC;QAChB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO;QACN,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,gBAAgB;aACnB,wBAAwB,CAAC,IAAI,CAAC,kBAAkB,CAAC;aACjD,IAAI,CAAC,mDAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;aAChF,SAAS,CACT,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAC5C,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,sBAAsB,CAAC,CACtD,CAAC;IACJ,CAAC;IAED,eAAe,CAAC,WAA2B;QAC1C,MAAM,iBAAiB,GAAG,CAAC,CAAwB,EAAE,EAAE;YACtD,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,cAAc,CAAC;YACnB,IAAI,CAAC,CAAC,WAAW,EAAE;gBAClB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;gBAChC,cAAc,GAAG,IAAI,CAAC;aACtB;YAED,IAAI,CAAC,CAAC,QAAQ,EAAE;gBACf,IAAI,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;gBAC1B,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,cAAc,EAAE;oBAC1C,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;iBAC9B;gBACD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACrB;YAED,IAAI,CAAC,CAAC,MAAM,EAAE;gBACb,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;gBACnB,IAAI,cAAc,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;oBACrC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;iBACpB;gBACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAChB;YAED,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,KAAK,GAAG,MAAM,CAAC;YACnB,IAAI,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAE1C,OAAO;gBACN,MAAM,EAAE,SAAS;gBACjB,IAAI,EAAE,MAAM;aACZ,CAAC;QACH,CAAC,CAAC;QACF,OAAO,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,eAAe,CAAC,EAAU;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,EAAE;YACV,OAAO,EAAE,CAAC;SACV;QACD,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IAED,QAAQ,CAAC,WAA2B;QACnC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,gBAAgB,CAAC,WAA2B;QAC3C,IAAI,WAAW,CAAC,gBAAgB,EAAE;YACjC,OAAO,EAAE,CAAC;SACV;QAED,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,WAAW,CAAC,WAAW,GAAG,WAAW,EAAE;YAC1C,MAAM,GAAG,IAAI,WAAW,CAAC,WAAW,GAAG,CAAC;SACxC;QAED,OAAO,WAAW,CAAC,aAAa,GAAG,MAAM,CAAC;IAC3C,CAAC;IAED,SAAS,CAAC,WAA2B;QACpC,OAAO,WAAW,CAAC,eAAe,KAAK,iEAAuB,CAAC;IAChE,CAAC;IAED,UAAU,CAAC,WAA2B;QACrC,OAAO,WAAW,CAAC,eAAe,KAAK,kEAAwB,CAAC;IACjE,CAAC;IAED,OAAO,CAAC,WAA2B;QAClC,OAAO,WAAW,CAAC,eAAe,KAAK,+DAAqB,CAAC;IAC9D,CAAC;IAED,yBAAyB,CAAC,GAAQ;QACjC,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,+DAAqB,CAAC,CAAC,MAAM,CAAC;QACjG,OAAO,KAAK,CAAC;IACd,CAAC;IAEO,mBAAmB,CAAC,IAAqB;QAChD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QAErB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAEO,oBAAoB,CAAC,YAA6B;QACzD,MAAM,sBAAsB,GAAG,6CAAW,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QAEtE,oDAAoD;QACpD,MAAM,cAAc,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YAC1D,IAAI,CAAC,CAAC,eAAe,KAAK,+DAAqB,EAAE;gBAChD,OAAO,KAAK,CAAC;aACb;YACD,IAAI,KAAK,GAAG,mCAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACnD,IAAI,GAAG,GAAG,mCAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAE/C,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,iCAAiC,EAAE,CAAC;QAC5E,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,+BAA+B,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAE/F,oEAAoE;QACpE,cAAc,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,EAAE;YAC3C,mDAAmD;YACnD,sBAAsB,CAAC,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;YAEnF,IAAI,cAAc,GAAG,mCAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;YAC5D,IAAI,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;gBACvC,cAAc,GAAG,SAAS,CAAC;aAC3B;YACD,IAAI,YAAY,GAAG,mCAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;YACxD,IAAI,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAClC,YAAY,GAAG,OAAO,CAAC;aACvB;YAED,IAAI,IAAI,GAAG,mCAAM,CAAC,cAAc,CAAC,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;gBACnC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;gBACxD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;gBAErD,MAAM,MAAM,GAAG,6CAAW,CAAC,gBAAgB,CAAC,CAAC;gBAC7C,IAAI,mCAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;oBACxD,6CAA6C;oBAC7C,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;oBAC5B,IAAI,WAAW,EAAE;wBAChB,6CAA6C;wBAC7C,MAAM,CAAC,oBAAoB,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC;qBACpD;iBACD;gBACD,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBAErC,IAAI,mCAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBAC5D,IAAI,UAAU,EAAE;wBACf,6CAA6C;wBAC7C,MAAM,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC;qBAC7C;oBACD,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;iBAChD;gBACD,8BAA8B;gBAC9B,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAEpC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aAClC;QACF,CAAC,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,UAAU,CAAC;QAC7B,MAAM,MAAM,GAAG,0CAAQ,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QACxE,MAAM,KAAK,GAAG,2CAAS,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,mCAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QAElG,MAAM,KAAK,GAAG,mCAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAC7C,OAAO,GAAG,wCAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAC9B,QAAQ,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,EAChC,MAAM,GAAG,EAAW,CAAC;QAEtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE;YACjE,MAAM,IAAI,GAAG,mCAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EACtD,GAAG,GAAG;gBACL,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;aACZ,CAAC;YAEV,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEnE,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;SACvD;QAED,OAAO,MAAM,CAAC;IACf,CAAC;;4GAjOW,8BAA8B;4HAA9B,8BAA8B;QCrC3C,8EAAqB;QAIb,uEAAY;QAAA,4DAAK;QAEtB,gIAES;QACT,qEAAoB;QACpB,4EAKqB;QAApB,sJAAS,aAAS,IAAC;QACnB,2EAAU;QAAA,mEAAO;QAAA,4DAAW;QAI/B,qFAAmB;QAAA,wDAAsD;QAAA,4DAAoB;QAC7F,0EAA2B;QAE3B,4IAsHc;QACf,4DAAW;;QAxIC,0DAAgB;QAAhB,gFAAgB;QAcR,0DAAsD;QAAtD,8HAAsD;QAGlD,0DAA2B;QAA3B,wFAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IEJ/C,mFAAyF;;ADXtF,MAAM,8BAA8B;IAG1C,YACS,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;QAE7B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;IAC5C,CAAC;;4GAPW,8BAA8B;4HAA9B,8BAA8B;QCR3C,2EAAU;QAEgB,oEAAS;QAAA,4DAAK;QAGvC,yEAA+G;QAC9G,0FAAgI;QAEhI,yEAMmB;QAEjB,gFAA+D;QAChE,4DAAM;QACN,yEAA8E;QAC7E,0JAAyF;QAC1F,4DAAM;;QADgB,2DAAiB;QAAjB,iFAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IENtC,oFAAiH;IAAxE,6XAAS,gGAA4B,KAAC;IAC9E,wEAAoD;IAAA,uDAAa;IAAA,4DAAI;;;IAAjB,0DAAa;IAAb,2EAAa;;ADJ/D,MAAM,yBAAyB;IAarC,YACS,MAAqB,EACrB,MAAc;QADd,WAAM,GAAN,MAAM,CAAe;QACrB,WAAM,GAAN,MAAM,CAAQ;QAZvB,mBAAc,GAAG,KAAK,CAAC;QACvB,aAAQ,GAAG,KAAK,CAAC;QACjB,cAAS,GAAG,KAAK,CAAC;QAClB,mBAAc,GAAG,KAAK,CAAC;QACvB,qBAAgB,GAAG,KAAK,CAAC;QACzB,eAAU,GAAG,KAAK,CAAC;QACnB,eAAU,GAAG,KAAK,CAAC;QACnB,cAAS,GAAG,KAAK,CAAC;QAClB,iBAAY,GAAG,KAAK,CAAC;QAMpB,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,CAAC;QACrE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC,eAAe,CAAC;QACzD,IAAI,CAAC,SAAS,GAAI,MAAM,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;QAC5D,IAAI,CAAC,cAAc,GAAI,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,CAAC;QACtE,IAAI,CAAC,gBAAgB,GAAI,MAAM,CAAC,iBAAiB,CAAC,uBAAuB,CAAC;QAC1E,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;QAC3D,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,iBAAiB,CAAC,mBAAmB,CAAC;QACjE,IAAI,CAAC,UAAU,GAAI,MAAM,CAAC,iBAAiB,CAAC,iBAAiB,CAAC;QAC9D,IAAI,CAAC,UAAU,GAAI,MAAM,CAAC,iBAAiB,CAAC,iBAAiB,CAAC;IAC/D,CAAC;IAED,QAAQ;QACP,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,IAAI,CAAC,cAAc;YAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3D,IAAI,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,cAAc;YAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3D,IAAI,IAAI,CAAC,gBAAgB;YAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC/D,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC/D,IAAI,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;IAED,WAAW,CAAC,CAAQ,EAAE,OAAe;QACpC,CAAC,CAAC,eAAe,EAAE,CAAC;QAEpB,QAAQ,OAAO,EAAC;YACf,KAAK,aAAa;gBACjB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC;gBAC9C,MAAM;YAEP,KAAK,OAAO;gBACX,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;gBACxC,MAAM;YAEP,KAAK,QAAQ;gBACZ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBACzC,MAAM;YAEP,KAAK,eAAe;gBACnB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC;gBAChD,MAAM;YAEP,KAAK,aAAa;gBACjB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC;gBAC9C,MAAM;YAEP,KAAK,sBAAsB;gBAC1B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC;gBACnD,MAAM;YAEP,KAAK,WAAW;gBACf,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBAC5C,MAAM;YAEP,KAAK,SAAS;gBACb,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBAC1C,MAAM;YAEP,KAAK,SAAS;gBACb,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBAC1C,MAAM;YAEP,QAAQ;SACR;IACF,CAAC;;kGApFW,yBAAyB;uHAAzB,yBAAyB;QCVtC,yEAAsC;QAKD,wEAAa;QAAA,4DAAW;QACzD,yEAA2B;QAAA,kEAAO;QAAA,4DAAM;QAI1C,yEAAmD;QAEjD,qEAAgC;QAChC,2IAEgB;QACjB,4DAAe;;QAfkB,0DAAkB;QAAlB,2EAAkB;QAYkD,2DAAW;QAAX,iFAAW;;;;;;;;;;;;;;;;;;;;;;;;;;ACVrD;AAGwB;;;;;;;;;ICAnF,sEAA8B;IAC7B,yEAAiF;IAClF,4DAAM;;;IAEN,sEAA6B;IAC5B,yEAAiF;IAClF,4DAAM;;ADCF,MAAM,oBAAoB;IAShC,YACS,EAAe,EACf,eAAgC;QADhC,OAAE,GAAF,EAAE,CAAa;QACf,oBAAe,GAAf,eAAe,CAAiB;QA2BzC,eAAU,GAAG,GAAG,EAAE;YACjB,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,EACrD,IAAI,CAAC,OAAO,CAAC,OAAO,EACpB,+FAAuB,CAAC,CAAC;QAC3B,CAAC;QAED,oBAAe,GAAG,CAAC,SAAkB,EAAE,EAAE;YACxC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACxD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACpD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC5D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACtD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC1D,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;YAC3C,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;QAC1C,CAAC;IAzCE,CAAC;IAEJ,QAAQ;QACP,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YACpB,YAAY,EAAE,CAAC,CAAC,YAAY;YAC5B,YAAY,EAAE,CAAC,CAAC,YAAY;YAC5B,YAAY,EAAE,CAAC,CAAC,YAAY;YAC5B,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,OAAO,EAAE,CAAC,CAAC,OAAO;SAClB,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;YACzB,gEAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,CAAC,CAAC;IACH,CAAC;IAED,OAAO;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IAmBO,SAAS;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACzB,YAAY,EAAE,EAAE;YAChB,YAAY,EAAE,EAAE;YAChB,YAAY,EAAE,EAAE;YAChB,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,EAAE;YACR,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;SACX,CAAC,CAAC;IACJ,CAAC;IAED,OAAO;QACN,OAAO,IAAI,CAAC;IACb,CAAC;;wFAtEW,oBAAoB;kHAApB,oBAAoB;QCbjC,yEAAiC;QAG9B,wEAA8G;QAG9G,gHAEM;QACN,wEAAgG;QAChG,gHAEM;QACN,yEAAoB;QACyD,8IAAS,gBAAY,IAAC;QAAC,4DAAU;QAC7G,sFAGe;QADd,qJAAS,gBAAY,IAAC;QAEvB,4DAAiB;QAElB,0EAAsG;QACvG,4DAAM;;QArB6B,0DAAkB;QAAlB,+EAAkB;QAK9C,0DAAsB;QAAtB,sFAAsB;QAItB,0DAAqB;QAArB,qFAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACTsC;AACvC;AAC4C;AACnB;AAUhC;;;;;;;;;;;;;;;;;;;ICoBjB,yEAAuE;IAAtB,2VAAS,+EAAW,KAAC;IACrE,yEAAqB;IAAA,uDAAkB;IAAA,4DAAK;IAC5C,yEAA+C;IAAA,uDAAgB;IAAA,4DAAK;IACpE,yEAAiB;IAAA,uDAAc;IAAA,4DAAK;IACpC,yEAA6C;IAAA,uDAAwB;IAAA,4DAAK;;;;IAHrD,0DAAkB;IAAlB,gFAAkB;IACpB,0DAA2B;IAA3B,kFAA2B;IAAC,0DAAgB;IAAhB,8EAAgB;IAC9C,0DAAc;IAAd,4EAAc;IACb,0DAA0B;IAA1B,iFAA0B;IAAC,0DAAwB;IAAxB,sFAAwB;;;IAO1E,sFAAkF;;ADvB5E,MAAM,uBAAuB;IAYnC,YACS,EAAe,EAChB,SAAgD,EAChD,OAAwB,EACxB,MAAqB,EACpB,YAAyB,EAE1B,IAGN;QATO,OAAE,GAAF,EAAE,CAAa;QAChB,cAAS,GAAT,SAAS,CAAuC;QAChD,YAAO,GAAP,OAAO,CAAiB;QACxB,WAAM,GAAN,MAAM,CAAe;QACpB,iBAAY,GAAZ,YAAY,CAAa;QAE1B,SAAI,GAAJ,IAAI,CAGV;QAbF,aAAQ,GAAY,KAAK,CAAC;QAC1B,YAAO,GAAY,IAAI,CAAC;QA8ExB,WAAM,GAAG,GAAG,EAAE;YACb,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;YACvD,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;YAC/D,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC;YAEjE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;mBAChE,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE;gBAC7E,IAAI,CAAC,OAAO,GAAG,KAAK;gBACpB,KAAK,CAAC,2CAA2C,CAAC,CAAC;gBACnD,OAAO;aACP;YAED,IAAI,CAAC,OAAO;iBACV,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;iBAC5B,IAAI,CACJ,0DAAU,CAAC,CAAC,GAAG,EAAE,EAAE;gBAClB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;gBACnC,OAAO,uCAAK,CAAC;YACd,CAAC,CAAC,EACF,wDAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CACtC;iBACA,SAAS,CACT,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAC3C,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAClD,CAAC;QACH,CAAC;QA1FA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,yDAAe,EAAE,CAAC;IACxC,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YACpB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS;SACnC,CAAC;QACF,IAAI,CAAC,OAAO,EAAE,CAAC;IAChB,CAAC;IAED,eAAe;QACd,OAAO,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IACxF,CAAC;IAED,cAAc;QACb,OAAO,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IACvF,CAAC;IAED,OAAO;QACN,IAAI,CAAC,OAAO;aACV,YAAY,EAAE;aACd,IAAI,CACJ,0DAAU,CAAC,CAAC,GAAG,EAAE,EAAE;YAClB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;YACtC,OAAO,uCAAK,CAAC;QACd,CAAC,CAAC,EACF,wDAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CACtC;aACA,SAAS,CACT,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAC9C,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,yBAAyB,CAAC,CACrD,CAAC;IACH,CAAC;IAEO,qBAAqB,CAAC,MAAoB;QACjD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAElC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAC,CAAC;YAChD,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAEjF,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,IAAI;YACnC,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;QAE3E,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YACpB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS;SACnC,CAAC,CAAC;IACJ,CAAC;IAED,MAAM;QACL,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAEO,SAAS;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACzB,SAAS,EAAE,CAAC,EAAE,EAAE,gEAAmB,CAAC;YACpC,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,EAAE;SACR,CAAC,CAAC;IACJ,CAAC;IA8BO,kBAAkB,CAAC,MAAiB;QAC3C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAE5B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAC,CAAC,EAAC;YACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YACxC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;SACtC;IACF,CAAC;IAED,MAAM,CAAC,SAAkB;QACxB,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,EAAE,CAAC;IACf,CAAC;;8FAhIW,uBAAuB,4sBAkB1B,sEAAe;qHAlBZ,uBAAuB;QCtBpC,yEAAuB;QACtB,uFAAyE;QAEzE,yEAAiD;QAI9C,wEAA2E;QAc3E,6EAA+D;QAAnB,gJAAS,YAAQ,IAAC;QAAC,4EAAU;QAAA,kEAAM;QAAA,4DAAW;QAAA,kEAAM;QAAA,4DAAS;QAI3G,uEAAK;QAGmB,oEAAQ;QAAA,4DAAK;QAClC,0EAA+C;QAAA,kEAAM;QAAA,4DAAK;QAC1D,0EAAiB;QAAA,gEAAI;QAAA,4DAAK;QAC1B,0EAA6C;QAAA,iEAAK;QAAA,4DAAK;QAExD,yEAAO;QACN,oHAKK;QACN,4DAAQ;QAKX,wJAAkF;QAElF,8FAEwB;QAAvB,wKAAa,YAAQ,IAAC;QACvB,4DAAyB;;QA7CY,0DAAkB;QAAlB,+EAAkB;QAWnD,0DAAqB;QAArB,kFAAqB;QAaF,2DAA2B;QAA3B,+EAA2B;QAE5B,0DAA0B;QAA1B,8EAA0B;QAGN,0DAAS;QAAT,+EAAS;QAW5B,0DAAa;QAAb,6EAAa;;;;;;;;;;;;;;;;;;;;;;;ACxCmB;;;;;AASjD,MAAM,iBAAiB;CAE7B;AAGM,MAAM,eAAgB,SAAQ,kEAAW;IAE/C,YAAY,MAAqB,EACxB,SAAoB,EACpB,KAAoB;QAE5B,KAAK,CAAC,MAAM,CAAC,CAAC;QAHN,cAAS,GAAT,SAAS,CAAW;QACpB,UAAK,GAAL,KAAK,CAAe;IAG7B,CAAC;IAED,YAAY;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;IACtD,CAAC;IAED,YAAY,CAAC,MAAuB;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAC5D,CAAC;IAED,YAAY,CAAE,eAAyB,EAAE,OAAe,EAAE,IAAS;QAClE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAE1C,OAAO,IAAI,CAAC,SAAS;aACnB,IAAI,CAAC,IAAI,EAAE;YACX,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;YAC7B,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;YAC5B,IAAI,EAAE;gBACL,eAAe,EAAE,eAAe;gBAChC,OAAO,EAAE,OAAO;aAChB;SACD,CAAC;aACD,WAAW,EAAE,CAAC;IACjB,CAAC;;8EA9BW,eAAe;gHAAf,eAAe,WAAf,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClB5B;AACA;AAKA;;;;;;;;;;;;;;;;;;;;ICgCGA,4DAAAA,WAAiD,CAAjD,EAAiD,qBAAjD,EAAiD,EAAjD;IAGCA,wDAAAA;MAAA;MAAA;MAAA;MAAA,OAAUA,yDAAAA,4BAAV;IAA0B,CAA1B;IACDA,0DAAAA;;;;;IAFCA,uDAAAA;IAAAA,wDAAAA;;;;ADnBE,MAAO+U,mBAAP,CAA0B;EAY/B3U,YACSwD,EADT,EAESgD,MAFT,EAGQoO,aAHR,EAGyC;IAFhC;IACA;IACD;IALE,sBAAiB,IAAInV,uDAAJ,EAAjB;IAOT,KAAKiE,SAAL;EACA;;EAED5C,QAAQ;IACP,MAAM+T,GAAG,GAAG,KAAKD,aAAjB;IACA,KAAKhR,IAAL,CAAUmF,UAAV,CAAqB;MACpB+L,UAAU,EAAED,GAAG,CAACC,UADI;MAEpBC,QAAQ,EAAEF,GAAG,CAACE,QAFM;MAGpBC,MAAM,EAAEH,GAAG,CAACG,MAHQ;MAIpBC,QAAQ,EAAEJ,GAAG,CAACI,QAJM;MAKpBC,OAAO,EAAEL,GAAG,CAACK;IALO,CAArB;IAQA,KAAKC,SAAL,GAAiB,KAAKvR,IAAL,CAAUG,YAAV,CAAuB1C,IAAvB,CACboT,4DAAY,CAAC,GAAD,CADC,EAEbD,oEAAoB,EAFP,EAGbD,yDAAS,CAACtQ,CAAC,IAAG;MACb,OAAO4Q,GAAG,CAACO,MAAJ,CAAWnR,CAAC,CAAC6Q,UAAb,EAAyB7Q,CAAC,CAACiR,OAA3B,EAAoCjR,CAAC,CAAC8Q,QAAtC,EAAgD9Q,CAAC,CAAC+Q,MAAlD,EAA0D/Q,CAAC,CAACgR,QAA5D,EAAsE,IAAtE,CAAP;IACA,CAFQ,CAHI,EAKR5Q,SALQ,EAAjB;EAMA;;EAEDkF,WAAW;IACV,IAAI,KAAK4L,SAAT,EAAoB;MACnB,KAAKA,SAAL,CAAe3L,WAAf;IACA;EACD;;EAED2B,QAAQ;IACP,KAAKiK,MAAL,CAAYjK,QAAZ;EACA;;EAEDkK,QAAQ,CAACC,IAAD,EAAgC;IACvC,QAAQA,IAAI,CAACC,QAAb;MACC,KAAKb,iEAAL;QACC,MAAMe,MAAM,GAAG,kBAAkB/Q,IAAlB,CAAuB,KAAK8B,MAAL,CAAYkP,GAAnC,CAAf;QACA,IAAIC,UAAJ;;QACA,IAAIF,MAAJ,EAAY;UACXE,UAAU,GAAG;YAAEC,UAAU,EAAE;UAAd,CAAb;QACA;;QAED,KAAKhB,aAAL,CAAmBiB,YAAnB,CAAgC,IAAhC;QACA,KAAKrP,MAAL,CAAYmG,QAAZ,CAAqB,CAAC,QAAD,EAAW2I,IAAI,CAACxT,EAAhB,CAArB,EAA0C6T,UAA1C,EACEG,IADF,CACO,MAAK;UACV,KAAKC,cAAL,CAAoB5V,IAApB;UACA,KAAKyU,aAAL,CAAmBiB,YAAnB,CAAgC,KAAhC;QACA,CAJF,EAKEG,KALF,CAKQ,MAAM,KAAKpB,aAAL,CAAmBiB,YAAnB,CAAgC,KAAhC,CALd;QAMA;;MACD;QACC;IAjBF;EAmBA;;EAEOnS,SAAS;IAChB,KAAKE,IAAL,GAAY,KAAKJ,EAAL,CAAQyB,KAAR,CAAc;MACzB6P,UAAU,EAAE9Q,SADa;MAEzB+Q,QAAQ,EAAE/Q,SAFe;MAGzBgR,MAAM,EAAEhR,SAHiB;MAIzBiR,QAAQ,EAAEjR,SAJe;MAKzBkR,OAAO,EAAElR;IALgB,CAAd,CAAZ;EAOA;;AA9E8B;;;mBAAnB2Q,qBAAmB/U,+DAAAA,CAAAA,+DAAAA,GAAAA,+DAAAA,CAAAA,oDAAAA,GAAAA,+DAAAA,CAAAA,qEAAAA;AAAA;;;QAAnB+U;EAAmBhS;EAAAqL;IAAA;;;;;;;;;;;;;;;;;;;;;;MCtBhCpO,4DAAAA,cAAuB,CAAvB,EAAuB,MAAvB,EAAuB,CAAvB,EAAuB,CAAvB,EAAuB,KAAvB,EAAuB,CAAvB,EAAuB,CAAvB,EAAuB,SAAvB,EAAuB,CAAvB,EAAuB,CAAvB;MAMiCA,wDAAAA;QAAAA,2DAAAA;;QAAA;;QAAA,OAASA,yDAAAA,mBAAT;MAA6B,CAA7B;MAE9BA,0DAAAA;MACAA,uDAAAA;MACDA,0DAAAA;MAGDA,4DAAAA;;MAKCA,uDAAAA;MACDA,0DAAAA;MAEAA,4DAAAA;;MAiBCA,4DAAAA;MACCA,wDAAAA;MAMDA,0DAAAA;;;;;;MA5CmCA,uDAAAA;MAAAA,wDAAAA;MAQoBA,uDAAAA;MAAAA,wDAAAA;MAMvDA,uDAAAA;MAAAA,wDAAAA,YAAAA,yDAAAA;MAQAA,uDAAAA;MAAAA,wDAAAA,WAAAA,yDAAAA;MAewBA,uDAAAA;MAAAA,wDAAAA;MACCA,uDAAAA;MAAAA,wDAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtC6B;AACJ;AAajB;;;AAK5B,MAAM,kBAAmB,SAAQ,kEAAW;IAYlD,YACC,MAAqB,EACb,qBAA4C;QACpD,KAAK,CAAC,MAAM,CAAC,CAAC;QADN,0BAAqB,GAArB,qBAAqB,CAAuB;QAb9C,eAAU,GAAW,IAAI,CAAC;QAC1B,aAAQ,GAAU,IAAI,CAAC;QACvB,WAAM,GAAU,IAAI,CAAC;QACrB,aAAQ,GAAG,KAAK,CAAC;QACjB,YAAO,GAAG,KAAK,CAAC;QAEhB,cAAS,GAAG,IAAI,iDAAe,CAAC,KAAK,CAAC,CAAC;QACvC,gBAAW,GAAG,IAAI,iDAAe,CAAC,KAAK,CAAC,CAAC;QAS/C,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YAC9D,IAAI,CAAC,MAAM,EAAE;gBACZ,IAAI,CAAC,WAAW,EAAE,CAAC;aACnB;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,CACL,UAAkB,EAClB,GAAa,EACb,QAAe,EACf,MAAa,EACb,QAAkB,EAClB,cAAuB,KAAK;QAC5B,MAAM,MAAM,GAA2B;YACtC,UAAU;YACV,OAAO,EAAE,CAAC,CAAC,GAAG;YACd,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;YACpC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;YAC9B,QAAQ,EAAE,CAAC,CAAC,QAAQ;SACpB,CAAC;QAEF,kCAAkC;QAClC,IAAI,GAAG,GAAG,CAAC,UAAU,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;QACpD,IAAI,GAAG,GAAG,CAAC;YAAE,GAAG,GAAG,CAAC,CAAC;QAErB,mCAAmC;QACnC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE;YAC1D,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAC5B,OAAO,wCAAE,CAAC,EAAE,CAAC,CAAC;SACd;QAED,oDAAoD;QACpD,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAE9B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAExB,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAwB,wBAAwB,EAAE,MAAM,CAAC,CAAC,IAAI,CAC1F,mDAAG,CAAC,CAAC,CAAC,EAAE;YACP,IAAI,WAAW,EAAE;gBAChB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;aACpB;QACF,CAAC,CAAC,EACF,mDAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EACjB,wDAAQ,CAAC,GAAG,EAAE;YACb,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC,CAAC,CACF,CAAC;IACH,CAAC;IAED,YAAY,CAAC,KAAc;QAC1B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAEO,WAAW;QAClB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QAErB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC7B,CAAC;;oFAnFW,kBAAkB;mHAAlB,kBAAkB,WAAlB,kBAAkB,mBAFlB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjBnB;AACA;;;;;;;;;;;;;;;;;ICwJKA,4DAAAA;IACCA,uDAAAA;IACAA,4DAAAA;IAAuBA,oDAAAA;IAAsBA,0DAAAA;;;;;IAAtBA,uDAAAA;IAAAA,+DAAAA;;;;;;;;IAb1BA,4DAAAA,WAAiD,CAAjD,EAAiD,KAAjD,EAAiD,EAAjD;IAC0BA,wDAAAA;MAAA;MAAA;MAAA;MAAA,OAASA,yDAAAA,4BAAT;IAAyB,CAAzB;IACxBA,4DAAAA,eAAgD,CAAhD,EAAgD,KAAhD,EAAgD,EAAhD;IACmCA,oDAAAA;IAAmBA,0DAAAA;IACrDA,4DAAAA;IAA2CA,oDAAAA;IAAyBA,0DAAAA;IACpEA,4DAAAA,eAAoD,CAApD,EAAoD,MAApD,EAAoD,EAApD;IAC2BA,oDAAAA;IAAcA,0DAAAA;IAAOA,4DAAAA;IAAmBA,oDAAAA;;IAA8BA,0DAAAA;IAEjGA,4DAAAA;IAAkCA,oDAAAA;IAAoCA,0DAAAA;IAGvEA,wDAAAA;IAKAA,4DAAAA;IACCA,uDAAAA;IACAA,4DAAAA,gBAAuE,EAAvE,EAAuE,MAAvE,EAAuE,EAAvE;IAC2BA,oDAAAA;IAAUA,0DAAAA;IAAOA,4DAAAA;IAAmBA,oDAAAA;;IAAgCA,0DAAAA;IAE/FA,4DAAAA,gBAAuE,EAAvE,EAAuE,MAAvE,EAAuE,EAAvE;IAC2BA,oDAAAA;IAAUA,0DAAAA;IAAOA,4DAAAA;IAAmBA,oDAAAA;;IAAgCA,0DAAAA;IAE/FA,4DAAAA,gBAAmE,EAAnE,EAAmE,MAAnE,EAAmE,EAAnE;IAC2BA,oDAAAA;IAAUA,0DAAAA;IAAOA,4DAAAA;IAAmBA,oDAAAA;;IAA4BA,0DAAAA;IAI5FA,4DAAAA,gBAA2C,EAA3C,EAA2C,KAA3C,EAA2C,EAA3C,EAA2C,EAA3C,EAA2C,MAA3C,EAA2C,EAA3C;IAE0CA,oDAAAA;IAAcA,0DAAAA;IAAOA,4DAAAA;IAAmBA,oDAAAA;;IAA8BA,0DAAAA;IAE/GA,4DAAAA,gBAA0E,EAA1E,EAA0E,MAA1E,EAA0E,EAA1E;IACyCA,oDAAAA;IAAUA,0DAAAA;IAAOA,4DAAAA;IAAmBA,oDAAAA;;IAAgCA,0DAAAA;IAE7GA,4DAAAA,gBAA0E,EAA1E,EAA0E,MAA1E,EAA0E,EAA1E;IACyCA,oDAAAA;IAAUA,0DAAAA;IAAOA,4DAAAA;IAAmBA,oDAAAA;;IAAgCA,0DAAAA;IAE7GA,4DAAAA,gBAAsE,EAAtE,EAAsE,MAAtE,EAAsE,EAAtE;IACyCA,oDAAAA;IAAUA,0DAAAA;IAAOA,4DAAAA;IAAmBA,oDAAAA;;IAA4BA,0DAAAA;;;;;;IArCvEA,uDAAAA;IAAAA,+DAAAA;IACSA,uDAAAA;IAAAA,+DAAAA;IAEwBA,uDAAAA;IAAAA,+DAAAA,CAAAA,yDAAAA;IAEjCA,uDAAAA;IAAAA,+DAAAA;IAG7BA,uDAAAA;IAAAA,wDAAAA;IAOAA,uDAAAA;IAAAA,wDAAAA;IAC0DA,uDAAAA;IAAAA,+DAAAA,CAAAA,yDAAAA;IAE1DA,uDAAAA;IAAAA,wDAAAA;IAC0DA,uDAAAA;IAAAA,+DAAAA,CAAAA,yDAAAA;IAE1DA,uDAAAA;IAAAA,wDAAAA;IAC0DA,uDAAAA;IAAAA,+DAAAA,CAAAA,yDAAAA;IAMkBA,uDAAAA;IAAAA,+DAAAA,CAAAA,yDAAAA;IAE5EA,uDAAAA;IAAAA,wDAAAA;IACwEA,uDAAAA;IAAAA,+DAAAA,CAAAA,yDAAAA;IAExEA,uDAAAA;IAAAA,wDAAAA;IACwEA,uDAAAA;IAAAA,+DAAAA,CAAAA,yDAAAA;IAExEA,uDAAAA;IAAAA,wDAAAA;IACwEA,uDAAAA;IAAAA,+DAAAA,CAAAA,yDAAAA;;;;ADlK7E,MAAOqW,sBAAP,CAA6B;EAYlCjW,YACSwD,EADT,EAESgD,MAFT,EAGS0P,WAHT,EAIQtB,aAJR,EAI4C;IAHnC;IACA;IACA;IACD;IANE,sBAAiB,IAAInV,uDAAJ,EAAjB;IAQT,KAAKiE,SAAL;EACA;;EAED5C,QAAQ;IACP,MAAM+T,GAAG,GAAG,KAAKD,aAAjB;IACA,KAAKhR,IAAL,CAAUmF,UAAV,CAAqB;MACpB+L,UAAU,EAAED,GAAG,CAACC,UADI;MAEpBC,QAAQ,EAAEF,GAAG,CAACE,QAFM;MAGpBC,MAAM,EAAEH,GAAG,CAACG,MAHQ;MAIpBC,QAAQ,EAAEJ,GAAG,CAACsB,UAJM;MAKpBjB,OAAO,EAAEL,GAAG,CAACK;IALO,CAArB;IAQA,KAAKC,SAAL,GAAiB,KAAKvR,IAAL,CAAUG,YAAV,CAAuB1C,IAAvB,CACboT,4DAAY,CAAC,GAAD,CADC,EAEbD,oEAAoB,EAFP,EAGbD,yDAAS,CAACtQ,CAAC,IAAG;MACb,OAAO4Q,GAAG,CAACO,MAAJ,CAAWnR,CAAC,CAAC6Q,UAAb,EAAyB7Q,CAAC,CAACiR,OAA3B,EAAoCjR,CAAC,CAAC8Q,QAAtC,EAAgD9Q,CAAC,CAAC+Q,MAAlD,EAA0D/Q,CAAC,CAACgR,QAA5D,EAAsE,IAAtE,CAAP;IACA,CAFQ,CAHI,EAKR5Q,SALQ,EAAjB;EAMA;;EAEDkF,WAAW;IACV,IAAI,KAAK4L,SAAT,EAAoB;MACnB,KAAKA,SAAL,CAAe3L,WAAf;IACA;EACD;;EAED6L,QAAQ,CAACC,IAAD,EAAgC;IACvC,MAAMc,SAAS,GAAG,qBAAqB1R,IAArB,CAA0B,KAAK8B,MAAL,CAAYkP,GAAtC,CAAlB;IACA,IAAIC,UAAJ;;IACA,IAAIS,SAAJ,EAAe;MACdT,UAAU,GAAG;QAAEC,UAAU,EAAE;MAAd,CAAb;IACA;;IAED,KAAKhB,aAAL,CAAmBiB,YAAnB,CAAgC,IAAhC;IACA,KAAKrP,MAAL,CAAYmG,QAAZ,CAAqB,CAAC,WAAD,EAAc2I,IAAI,CAACxT,EAAnB,CAArB,EAA6C6T,UAA7C,EACEG,IADF,CACO,MAAK;MACV,KAAKC,cAAL,CAAoB5V,IAApB;MACA,KAAKyU,aAAL,CAAmBiB,YAAnB,CAAgC,KAAhC;IACA,CAJF,EAKEG,KALF,CAKQ,MAAM,KAAKpB,aAAL,CAAmBiB,YAAnB,CAAgC,KAAhC,CALd;EAMA;;EAED1K,QAAQ;IACP,KAAKiK,MAAL,CAAYjK,QAAZ;EACA;;EAEDkL,YAAY,CAACC,MAAD,EAAe;IAC1B,OAAO,KAAKJ,WAAL,CAAiBK,SAAjB,CAA2BD,MAA3B,EAAmC,KAAnC,CAAP;EACA;;EAEO5S,SAAS;IAChB,KAAKE,IAAL,GAAY,KAAKJ,EAAL,CAAQyB,KAAR,CAAc;MACzB6P,UAAU,EAAE9Q,SADa;MAEzB+Q,QAAQ,EAAE/Q,SAFe;MAGzBgR,MAAM,EAAEhR,SAHiB;MAIzBiR,QAAQ,EAAEjR,SAJe;MAKzBkR,OAAO,EAAElR;IALgB,CAAd,CAAZ;EAOA;;AA7EiC;;;mBAAtBiS,wBAAsBrW,+DAAAA,CAAAA,8DAAAA,GAAAA,+DAAAA,CAAAA,mDAAAA,GAAAA,+DAAAA,CAAAA,yDAAAA,GAAAA,+DAAAA,CAAAA,2EAAAA;AAAA;;;QAAtBqW;EAAsBtT;EAAAqL;IAAA;;;;;;;;;;;;;;;;;;;;;;MCrBnCpO,4DAAAA,cAAuB,CAAvB,EAAuB,MAAvB,EAAuB,CAAvB,EAAuB,CAAvB,EAAuB,KAAvB,EAAuB,CAAvB,EAAuB,CAAvB,EAAuB,SAAvB,EAAuB,CAAvB,EAAuB,CAAvB;MAUIA,wDAAAA;QAAAA,2DAAAA;;QAAA;;QAAA,OAASA,yDAAAA,mBAAT;MAA6B,CAA7B;MAMDA,0DAAAA;MACAA,uDAAAA;MAMDA,0DAAAA;MAGDA,4DAAAA;;MAOCA,uDAAAA;MACDA,0DAAAA;MAEAA,4DAAAA;;MA0GCA,4DAAAA;MACCA,wDAAAA;MA6CDA,0DAAAA;;;;;;MA3LmCA,uDAAAA;MAAAA,wDAAAA;MAkBjCA,uDAAAA;MAAAA,wDAAAA;MASFA,uDAAAA;MAAAA,wDAAAA,YAAAA,yDAAAA;MAUAA,uDAAAA;MAAAA,wDAAAA,WAAAA,yDAAAA;MAwGwBA,uDAAAA;MAAAA,wDAAAA;MACCA,uDAAAA;MAAAA,wDAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9I4B;AAEH;AAEnB;AAYE;;;AAK5B,MAAM,qBAAsB,SAAQ,kEAAW;IAYrD,YACC,MAAqB,EACb,qBAA4C;QAEpD,KAAK,CAAC,MAAM,CAAC,CAAC;QAFN,0BAAqB,GAArB,qBAAqB,CAAuB;QAb9C,eAAU,GAAW,IAAI,CAAC;QAC1B,aAAQ,GAAU,IAAI,CAAC;QACvB,WAAM,GAAU,IAAI,CAAC;QACrB,eAAU,GAAG,KAAK,CAAC;QACnB,YAAO,GAAG,KAAK,CAAC;QAEhB,cAAS,GAAG,IAAI,iDAAe,CAAC,KAAK,CAAC,CAAC;QACvC,gBAAW,GAAG,IAAI,iDAAe,CAAC,KAAK,CAAC,CAAC;QAU/C,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YAC9D,IAAI,CAAC,MAAM,EAAE;gBACZ,IAAI,CAAC,WAAW,EAAE,CAAC;aACnB;QACF,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,EAAE,CAAC;IACrB,CAAC;IAED,MAAM,CACL,UAAkB,EAClB,GAAa,EACb,QAAe,EACf,MAAa,EACb,UAAoB,EACpB,cAAuB,KAAK;QAC5B,MAAM,MAAM,GAA8B;YACzC,UAAU;YACV,OAAO,EAAE,CAAC,CAAC,GAAG;YACd,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;YACpC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;YAC9B,UAAU,EAAE,CAAC,CAAC,UAAU;SACxB,CAAC;QAEF,mCAAmC;QACnC,IAAI,CAAC,UAAU,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE;YAC/D,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAC5B,OAAO,wCAAE,CAAC,EAAE,CAAC,CAAC;SACd;QAED,oDAAoD;QACpD,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAE9B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAExB,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAwB,2BAA2B,EAAE,MAAM,CAAC,CAAC,IAAI,CAC7F,mDAAG,CAAC,CAAC,CAAC,EAAE;YACP,IAAI,WAAW,EAAE;gBAChB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;aACpB;QACF,CAAC,CAAC,EACF,mDAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EACjB,wDAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,YAAY,CAAC,KAAc;QAC1B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAEO,WAAW;QAClB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QAErB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAE5B,IAAI,CAAC,YAAY,EAAE,CAAC;IACrB,CAAC;IAEO,YAAY;QACnB,mBAAmB;QACnB,IAAI,YAAY,GAAG,mCAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC/D,IAAI,UAAU,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAErE,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;IACnC,CAAC;;0FA1FW,qBAAqB;sHAArB,qBAAqB,WAArB,qBAAqB,mBAFrB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IEuBjB,uEAAqF;IAA9D,uRAAS,iFAAgB,KAAC;IAAoC,mEAAQ;IAAA,4DAAI;;;IAAlC,qFAAqB;;ADjCtF,MAAM,SAAS,GAAG,OAAO,CAAC;AAC1B,MAAM,YAAY,GAAG,UAAU,CAAC;AAMzB,MAAM,eAAe;IAQ3B,YACQ,SAAwC,EACvC,WAA+B,EAC/B,MAAqB;QAFtB,cAAS,GAAT,SAAS,CAA+B;QACvC,gBAAW,GAAX,WAAW,CAAoB;QAC/B,WAAM,GAAN,MAAM,CAAe;QAR9B,qBAAgB,GAAG,CAAC,CAAC;QAUpB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;QAE3C,IAAI,WAAW,CAAC,SAAS,EAAE;YAC1B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC;YAEzC,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,KAAK,YAAY,EAAE;gBACzD,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;aAC7B;SACD;aAAM;YACN,IAAI,CAAC,WAAW,EAAE,CAAC;SACnB;IACF,CAAC;IAED,IAAI,WAAW;QACd,QAAQ,IAAI,CAAC,gBAAgB,EAAE;YAC9B,KAAK,CAAC;gBACL,OAAO,SAAS,CAAC;YAClB,KAAK,CAAC;gBACL,OAAO,YAAY,CAAC;SACrB;IACF,CAAC;IAED,IAAI,WAAW,CAAC,KAAa;QAC5B,QAAQ,KAAK,EAAE;YACd,KAAK,SAAS;gBACb,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;gBAC1B,MAAM;YACP,KAAK,YAAY;gBAChB,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;gBAC1B,MAAM;SACP;IACF,CAAC;IAED,eAAe;QACd,IAAI,CAAC,QAAQ,EAAE,CAAC;IACjB,CAAC;IAED,cAAc;QACb,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED,WAAW;QACV,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC7B,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;QAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;IACjB,CAAC;IAED,cAAc;QACb,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC;QAChC,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;IAC/C,CAAC;IAED,mBAAmB,CAAC,KAAwB;QAC3C,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC;QAEpC,QAAQ,IAAI,CAAC,gBAAgB,EAAE;YAC9B,KAAK,CAAC;gBACL,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,MAAM;YACP,KAAK,CAAC;gBACL,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,MAAM;SACP;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;IACjB,CAAC;IAED,QAAQ;QACP,UAAU,CAAC,GAAG,EAAE;YACf,QAAQ,IAAI,CAAC,WAAW,EAAE;gBACzB,KAAK,SAAS;oBACb,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACtB,MAAM;gBACP,KAAK,YAAY;oBAChB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;aAC1B;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,mBAAmB;IACnB,IAAI,UAAU;QACb,OAAO,IAAI,CAAC,WAAW,KAAK,YAAY,CAAC;IAC1C,CAAC;IAED,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC;IACvC,CAAC;;8EAnGW,eAAe;6GAAf,eAAe;;;;;;;;QCjB5B,yEAAuB;QAEjB,iEAAM;QAAA,4DAAK;QACf,qEAAoB;QACpB,4EAKC;QACU,gEAAK;QAAA,4DAAW;QA+B5B,yEAAqB;QACjB,kIAAS,iBAAa,IAAC;QAAiC,iEAAK;QAAA,4DAAI;QACpE,yGAAiG;QAClG,4DAAM;QAEN,0EAAY;QACgC,kKAAkB,oBAAgB,IAAC;QAAC,4DAAiB;QAChG,2FAAwF;QAApC,qKAAkB,oBAAgB,IAAC;QAAC,4DAAoB;;QANpE,0DAAkB;QAAlB,+EAAkB;QACtD,0DAAiB;QAAjB,iFAAiB;QAIE,0DAAmB;QAAnB,gFAAmB;QACb,0DAAsB;QAAtB,mFAAsB;;;;;;;;;;;;;;;;;;;;;;AChDK;AAGzB;;;;AAM1B,MAAM,aAAa;IACzB,YAAoB,WAAwB,EAAU,IAA2B;QAA7D,gBAAW,GAAX,WAAW,CAAa;QAAU,SAAI,GAAJ,IAAI,CAAuB;IAAI,CAAC;IAE/E,UAAU,CAAC,KAAa,EAAE,GAAQ;QACxC,MAAM,CAAC,GAAG,mCAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE;YACjB,OAAO,EAAE,CAAC;SACV;QACD,OAAO,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAChC,CAAC;IAEM,aAAa,CAAC,KAAa,EAAE,GAAQ;QAC3C,MAAM,CAAC,GAAG,mCAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE;YACjB,OAAO,EAAE,CAAC;SACV;QACD,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACpC,CAAC;IAEM,cAAc,CAAC,KAAa,EAAE,GAAQ;QAC5C,MAAM,CAAC,GAAG,mCAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE;YACjB,OAAO,EAAE,CAAC;SACV;QACD,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACvC,CAAC;IAEM,UAAU,CAAC,KAAa,EAAE,GAAQ;QACxC,MAAM,CAAC,GAAG,mCAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE;YACjB,OAAO,EAAE,CAAC;SACV;QACD,OAAO,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;IAEM,iBAAiB,CAAC,KAAa,EAAE,GAAQ;QAC/C,MAAM,CAAC,GAAG,mCAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE;YACjB,OAAO,EAAE,CAAC;SACV;QACD,OAAO,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;IAC3C,CAAC;IAEM,UAAU,CAAC,KAAa,EAAE,GAAQ;QACxC,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACvC,CAAC;IAEM,iBAAiB,CAAC,KAAa,EAAE,GAAQ;QAC/C,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACrC,CAAC;IAEM,gBAAgB,CAAC,KAAa,EAAE,GAAQ;QAC9C,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACpC,CAAC;IAEM,cAAc,CAAC,KAAa,EAAE,IAAmB,EAAE,GAAQ,EAAE,GAAG,QAAQ;QAC9E,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAEM,YAAY,CAAC,KAAa,EAAE,eAAuB,EAAE,GAAQ;QACnE,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,EAAE,eAAe,IAAI,KAAK,CAAC,CAAC;IACvE,CAAC;IAEM,WAAW;QACjB,OAAO,EAAE,CAAC;IACX,CAAC;IAEM,cAAc,CAAC,MAAc,EAAE,KAAa,EAAE,OAAW,IAAI;QACnE,MAAM,MAAM,GAAG;YACd,UAAU,EAAE,MAAM;YAClB,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;YAC/C,KAAK;YACL,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,GAAG;YACb,QAAQ,EAAE,GAAG;SACb,CAAC;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAEM,kBAAkB,CAAC,MAAc,EAAE,KAAa,EAAE,OAAW,IAAI;QACvE,MAAM,MAAM,GAAG;YACd,UAAU,EAAE,MAAM;YAClB,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;YACnD,KAAK;YACL,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,GAAG;YACb,QAAQ,EAAE,GAAG;SACb,CAAC;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAEM,cAAc,CAAC,MAAc,EAAE,KAAa,EAAE,OAAW,IAAI;QACnE,MAAM,MAAM,GAAG;YACd,UAAU,EAAE,MAAM;YAClB,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;YAC/C,KAAK;YACL,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,GAAG;YACb,QAAQ,EAAE,GAAG;SACb,CAAC;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAEM,qBAAqB,CAAC,MAAc,EAAE,KAAa,EAAE,OAAW,IAAI;QAC1E,MAAM,MAAM,GAAG;YACd,UAAU,EAAE,MAAM;YAClB,YAAY,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;YACtD,KAAK;YACL,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,GAAG;YACb,QAAQ,EAAE,GAAG;SACb,CAAC;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAEM,gBAAgB,CAAC,MAAc,EAAE,KAAa,EAAE,kBAA0B,EAAE,EAAE,OAAW,IAAI;QACnG,MAAM,MAAM,GAAG;YACd,UAAU,EAAE,MAAM;YAClB,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,eAAe,CAAC;YAClE,KAAK;YACL,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,aAAa;SACxB,CAAC;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAEM,cAAc,CAAC,MAAc,EAAE,KAAa,EAAE,OAAW,IAAI;QACnE,MAAM,MAAM,GAAG;YACd,UAAU,EAAE,MAAM;YAClB,KAAK;SACL,CAAC;QAEF,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAEM,kBAAkB,CAAC,MAAc,EAAE,QAAiC,EAAE,KAAa,EAAE,OAAW,IAAI;QAC1G,MAAM,MAAM,GAAG;YACd,UAAU,EAAE,MAAM;YAClB,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;SAClC,CAAC;QAEF,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAEM,cAAc,CAAC,MAAc,EAAE,KAAa,EAAE,IAAmB,EAAE,KAAa,EAAE,OAAW,IAAI;QACvG,MAAM,MAAM,GAAG;YACd,UAAU,EAAE,MAAM;YAClB,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;SAC1D,CAAC;QAEF,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAEM,cAAc,CAAC,IAAY,EAAE,KAAa,EAAE,YAAoB,EAAE;QACxE,MAAM,QAAQ,GAAG,GAAG,EAAE;YACrB,OAAO,+CAA+C,SAAS,CAAC,CAAC,CAAC,UAAU,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,MAAM,CAAC;QAC7G,CAAC,CAAC;QACF,MAAM,MAAM,GAAG;YACd,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,EAAE;YACd,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,KAAK;YACf,iBAAiB,EAAE,IAAI;YACvB,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;SAClC,CAAC;QACF,OAAO,MAAM,CAAC;IACf,CAAC;IAEM,gBAAgB,CAAC,MAAc,EAAE,SAAiB,EAAE,MAAc,EAAE,GAAW,EAAE,KAAa;QACpG,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE;YACzB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACrC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;YACtB,OAAO,YAAY,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,MAAM;OACjD,CAAC,CAAC,GAAG,CAAC;QACL,CAAC;QACP,CAAC,CAAC;QACF,MAAM,MAAM,GAAG;YACd,UAAU,EAAE,MAAM;YAClB,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;SAClC,CAAC;QACF,OAAO,MAAM,CAAC;IACf,CAAC;IAEM,gBAAgB,CAAC,YAAgB,IAAI;QAC3C,MAAM,IAAI,GAAgB;YACzB,SAAS,EAAE,EAAE;YACb,YAAY,EAAE,QAAQ;YACtB,KAAK,EAAE;gBACN,aAAa,EAAE,qCAAqC;gBACpD,cAAc,EAAE,mCAAmC;aACnD;YACD,eAAe,EAAE,CAAC;YAClB,qBAAqB,EAAE,IAAI;YAC3B,qBAAqB,EAAE,IAAI;YAC3B,sBAAsB,EAAE,IAAI;YAC5B,gBAAgB,EAAE,IAAI;YACtB,aAAa,EAAE;gBACd,SAAS,EAAE,IAAI;gBACf,QAAQ,EAAE,IAAI;aACd;SACD,CAAC;QAEF,IAAI,SAAS,EAAE;YACd,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;SAC/B;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAEO,SAAS,CAAC,MAAW,EAAE,OAAY,IAAI;QAC9C,IAAI,CAAC,IAAI,EAAE;YACV,OAAO,MAAM,CAAC;SACd;QAED,IAAI,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;YAC7B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAE9B,OAAO,IAAI,CAAC,UAAU,CAAC;SACvB;QAED,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC5B,OAAO,MAAM,CAAC;IACf,CAAC;;0EAvOW,aAAa;8GAAb,aAAa,WAAb,aAAa,mBAFb,MAAM;;;;;;;;;;;;;;;;;;;;;;;;ACNgC;AACF;AACpB;AAC2B;;;;AAKjD,MAAM,oBAAqB,SAAQ,kEAAW;IAYpD,YAAY,MAAqB,EACxB,aAAmC;QAC3C,KAAK,CAAC,MAAM,CAAC,CAAC;QADN,kBAAa,GAAb,aAAa,CAAsB;QAZpC,qBAAgB,GAAG,mBAAmB,CAAC;QACvC,oBAAe,GAAG,kBAAkB,CAAC;QAE7C,uDAAuD;QAC/C,WAAM,GAA4B,IAAI,iDAAe,CAAS,CAAC,CAAC,CAAC,CAAC;QACnE,qBAAgB,GAAuB,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QAClE,mBAAc,GAAY,IAAI,CAAC;QAQrC,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;IACrC,CAAC;IAED,2BAA2B;IAC3B,sBAAsB,CAAC,QAAkB;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAS,IAAI,CAAC,gBAAgB,GAAG,WAAW,QAAQ,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,iDAAiD;IACjD,yBAAyB;QACxB,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;aAChC,SAAS,CAAC,MAAM,CAAC,EAAE;YACnB,IAAI;gBACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;aACnC;YAAC,OAAO,KAAK,EAAE;gBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;aACrB;QACF,CAAC,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACrD,CAAC;IAED,eAAe,CAAC,EAAU;QACzB,OAAO,IAAI,CAAC,IAAI;aACd,WAAW,CAAkB,IAAI,CAAC,eAAe,GAAG,IAAI,EAAE,EAAE,CAAC;aAC7D,IAAI,CAAC,mDAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,QAAQ,CAAC,OAAwB;QAChC,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,KAAK,CAAE,GAAqB,EAAE,WAAwB;QACrD,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;aAC7B,IAAI,CACJ,0DAAU,CAAC,CAAC,GAAG,EAAE,EAAE;YAClB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;YACvC,WAAW,EAAE,CAAC;YACd,OAAO,uCAAK,CAAC;QACd,CAAC,CAAC,CACF;aACA,SAAS,CACT,CAAC,MAAY,EAAE,EAAE;YAChB,IAAI,MAAM,CAAC,IAAI,EAAE;gBAChB,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;gBACrB,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC;gBACxB,IAAI,OAAO,EAAE;oBACZ,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;oBAClB,IAAI,CAAC,yBAAyB,EAAE,CAAC;iBACjC;aACD;YACD,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,EAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;YAClE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAE,IAAI,EAAC,MAAM,CAAC,CAAC;YACxC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACpC,WAAW,EAAE,CAAC;QACf,CAAC,CACD,CAAC;IACH,CAAC;IAED,iBAAiB,CAAC,EAAU;QAC3B,OAAO,IAAI,CAAC,IAAI;aACd,YAAY,CAAkB,IAAI,CAAC,eAAe,GAAG,UAAU,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO,CAAE,GAAqB,EAAE,WAAwB;QACvD,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;aAC/B,IAAI,CACJ,0DAAU,CAAC,CAAC,GAAG,EAAE,EAAE;YAClB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC;YACzC,WAAW,EAAE,CAAC;YACd,OAAO,uCAAK,CAAC;QACd,CAAC,CAAC,CACF;aACA,SAAS,CACT,CAAC,MAAY,EAAE,EAAE;YAChB,IAAI,MAAM,CAAC,IAAI,EAAE;gBAChB,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;gBACtB,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC;gBACxB,IAAI,OAAO,EAAE;oBACZ,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;oBAClB,IAAI,CAAC,yBAAyB,EAAE,CAAC;iBACjC;aACD;YACD,WAAW,EAAE,CAAC;YACd,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACjF,CAAC,CACD,CAAC;IACH,CAAC;IAED,mBAAmB,CAAC,EAAU;QAC7B,OAAO,IAAI,CAAC,IAAI;aACd,YAAY,CAAkB,IAAI,CAAC,eAAe,GAAG,YAAY,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAChF,CAAC;IAED,gBAAgB,CAAC,EAAU;QAC1B,OAAO,IAAI,CAAC,IAAI;aACd,YAAY,CAAkB,IAAI,CAAC,eAAe,GAAG,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAC7E,CAAC;IAED,qBAAqB;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;IAED,qBAAqB,CAAC,YAA6B;QAClD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IAClC,CAAC;;wFA7HW,oBAAoB;qHAApB,oBAAoB,WAApB,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACPkC;AAEH;AAEkB;AAanD;AAI8B;;;;;;;;;;;;;AAE7D,MAAM,WAAW;CAShB;AAED,MAAM,QAAQ;IACb,YAAmB,QAAgB,EAAS,KAAa;QAAtC,aAAQ,GAAR,QAAQ,CAAQ;QAAS,UAAK,GAAL,KAAK,CAAQ;IAAI,CAAC;CAC9D;AAEM,MAAM,WAAW;IAMvB,MAAM,CAAC,EAAE;QACR,OAAoB;YACnB,EAAE,EAAE,IAAI;SACR,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAe;QAC3B,OAAoB;YACnB,YAAY,EAAE,OAAO;YACrB,EAAE,EAAE,KAAK;SACT,CAAC;IACH,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,OAAe;QACrC,OAAoB;YACnB,YAAY,EAAE,OAAO;YACrB,EAAE,EAAE,KAAK;YACT,eAAe,EAAE,IAAI;SACrB,CAAC;IACH,CAAC;CACD;AAKM,MAAM,qBAAqB;IA+DjC,YACS,IAAgB,EAChB,aAA4B,EAC5B,aAA4B,EAC5B,aAAqC,EACrC,+BAAgE,EAChE,aAA4B,EAC5B,gBAAyC,EACzC,SAA2B,EAC3B,WAAwB,EACxB,gBAAsC,EACtC,MAAc,EACd,QAAqB;QAXrB,SAAI,GAAJ,IAAI,CAAY;QAChB,kBAAa,GAAb,aAAa,CAAe;QAC5B,kBAAa,GAAb,aAAa,CAAe;QAC5B,kBAAa,GAAb,aAAa,CAAwB;QACrC,oCAA+B,GAA/B,+BAA+B,CAAiC;QAChE,kBAAa,GAAb,aAAa,CAAe;QAC5B,qBAAgB,GAAhB,gBAAgB,CAAyB;QACzC,cAAS,GAAT,SAAS,CAAkB;QAC3B,gBAAW,GAAX,WAAW,CAAa;QACxB,qBAAgB,GAAhB,gBAAgB,CAAsB;QACtC,WAAM,GAAN,MAAM,CAAQ;QACd,aAAQ,GAAR,QAAQ,CAAa;QApBb,iBAAY,GAAG,IAAI,yCAAO,EAAQ,CAAC;QAE7C,qBAAgB,GAAG,IAAI,iDAAe,CAAC,KAAK,CAAC,CAAC;QAC9C,oBAAe,GAAG,IAAI,iDAAe,CAAC,KAAK,CAAC,CAAC;QAC7C,yBAAoB,GAAG,IAAI,iDAAe,CAAC,EAAE,CAAC,CAAC;QAC/C,6BAAwB,GAAG,IAAI,iDAAe,CAAC,KAAK,CAAC,CAAC;QAiB5D,sCAAsC;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,WAAW,IAAI,WAAW,CAAC,KAAK,CAAC;QAE9C,IAAI,CAAC,aAAa,GAAG,+BAA+B,CAAC,OAAO,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;QAEtG,IAAI,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QAEzC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;QAEvD,UAAU;QACV,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,gBAAgB,EAAE,EAAE;YACjD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SACxB;aAAM;YACN,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;SACzB;QAED,qBAAqB,CAAC,cAAc,GAAG,aAAa,CAAC;IACtD,CAAC;IAlGD,IAAW,QAAQ;QAClB,MAAM,QAAQ,GAAa,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACtG,IAAI,QAAQ,EAAE;YACb,OAAO,QAAQ,CAAC,QAAQ,CAAC;SACzB;QAED,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,IAAI,eAAe;QAClB,OAAO,YAAY,CAAC,OAAO,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,CAAC;IAC1E,CAAC;IAED,IAAI,eAAe,CAAC,KAAa;QAChC,IAAI,KAAK,EAAE;YACV,YAAY,CAAC,OAAO,CAAC,qBAAqB,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;SACzE;aAAM;YACN,YAAY,CAAC,UAAU,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,CAAC;SACrE;IACF,CAAC;IAED,IAAI,kBAAkB;QACrB,OAAO,YAAY,CAAC,OAAO,CAAC,qBAAqB,CAAC,wBAAwB,CAAC,CAAC;IAC7E,CAAC;IAED,IAAI,kBAAkB,CAAC,KAAa;QACnC,YAAY,CAAC,OAAO,CAAC,qBAAqB,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;IAC7E,CAAC;IAyED,iBAAiB,CAAC,GAAW;QAC5B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,wBAAwB,CAAC,UAAmB;QAC3C,IAAI,CAAC,UAAU,EAAE;YAChB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;SACzB;QACD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC;IAED,WAAW,CAAC,KAAU;QAErB,IAAI,CAAC,iBAAiB,CAAC,wCAAwC,CAAC,CAAC;QACjE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,cAAc,CAAE,KAAK,CAAC,CAAC;QAE5B,IAAI,CAAC,IAAI;aACP,GAAG,CAAC,SAAS,CAAC;aACd,IAAI,CACJ,0DAAU,CAAC,CAAC,CAAC,EAAE,EAAE;YAChB,IAAI,GAAG,GAAG,qBAAqB,CAAC,gBAAgB,CAAC;YACjD,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,iBAAiB,EAAE;gBACzC,GAAG,IAAI,MAAM,CAAC,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;aACzC;YACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAExB,OAAO,iDAAU,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC,CACF;aACA,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YAClB,IAAI,QAAQ,GAAG,GAAkB,CAAC;YAElC,MAAM,WAAW,GAAW,QAAQ,CAAC,YAAY,CAAC;YAClD,IAAI,CAAC,cAAc,CAAE,WAAW,CAAC,CAAC;YAClC,IAAI,CAAC,iBAAiB,CAAC,mDAAmD,CAAC,CAAC;YAE5E,IAAI,CAAC,aAAa;iBAChB,SAAS,EAAE;iBACX,SAAS,EAAE;iBACX,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBAChB,mCAAmC;gBACnC,IAAI,MAAM,CAAC,iBAAiB,EAAE;oBAC7B,IAAI,iBAAiB,GAAG,WAAW,CAAC,KAAK,CACxC,gDAAgD,CAChD,CAAC;oBACF,iBAAiB,CAAC,WAAW,GAAG,IAAI,CAAC;oBACrC,OAAO,iBAAiB,CAAC;iBACzB;gBAED,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;gBAEzD,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;gBACzC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;gBAErC,IAAI,CAAC,kBAAkB,GAAG,qBAAqB,CAAC,eAAe,CAAC;gBAEhE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7B,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBACZ,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IAEL,CAAC;IAED,WAAW;QACV,MAAM,WAAW,GAAa,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACzG,OAAO,WAAW,CAAC;IACpB,CAAC;IAED;;;;;;;OAOG;IACH,cAAc,CAAC,QAAgB,EAAE,WAAmB,EAAE,WAAmB;QACxE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CACJ,QAAgB,EAChB,QAAgB,EAChB,mBAA4B,KAAK,EACjC,cAAsB,SAAS;QAE/B,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,KAAK,CAAC;QAEtC,IAAI,IAAI,GAAG,gCAAgC,QAAQ,aAAa,QAAQ,EAAE,CAAC;QAC3E,IAAI,gBAAgB,EAAE;YACrB;;;;;;;cAOE;YACF,MAAM,gBAAgB,GAAG,GAAG,QAAQ,KAAK,WAAW,EAAE,CAAC;YACvD,IAAI,GAAG,gCAAgC,QAAQ,aAAa,gBAAgB,yBAAyB,CAAC;SACtG;QAED,MAAM,OAAO,GAAG,IAAI,8DAAW,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,mCAAmC,CAAC,CAAC;QAE3F,IAAI,QAAQ,GAAgB,SAAS,CAAC;QAEtC,MAAM,gBAAgB,GAAG,CAAC,GAAsB,EAA2B,EAAE;YAC5E,IAAI,GAAW,CAAC;YAEhB,2DAA2D;YAC3D,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAE3B,IAAI,WAAW,CAAC;YAEhB,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;gBACtB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACjC,GAAG,GAAG,kCAAkC,CAAC;aACzC;iBAAM,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE;gBAC9B,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC;gBAC9B,MAAM,IAAI,GAAG,WAAW,IAAI,WAAW,CAAC,KAAK,CAAC;gBAC9C,IAAI,IAAI,KAAK,qBAAqB,CAAC,cAAc,EAAE;oBAClD,GAAG,GAAG,WAAW,CAAC,iBAAiB,CAAC;iBACpC;qBAAM,IAAI,IAAI,KAAK,qBAAqB,CAAC,uBAAuB,EAAE;oBAClE,WAAW,GAAG,WAAW,CAAC,eAAe,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;oBACzE,OAAO,yCAAE,CAAC,WAAW,CAAC,CAAC;iBACvB;qBAAM,IAAI,IAAI,KAAK,qBAAqB,CAAC,0BAA0B,EAAE;oBACrE,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;oBAC/D,OAAO,yCAAE,CAAC,WAAW,CAAC,CAAC;iBACvB;qBAAM,IAAI,IAAI,KAAK,qBAAqB,CAAC,mBAAmB,EAAE;oBAC9D,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;oBAC/D,OAAO,yCAAE,CAAC,WAAW,CAAC,CAAC;iBACvB;qBAAM,IAAI,IAAI,KAAK,qBAAqB,CAAC,2BAA2B,EAAE;oBACtE,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;oBAC/D,OAAO,yCAAE,CAAC,WAAW,CAAC,CAAC;iBACvB;aACD;YAED,IAAI,CAAC,GAAG,EAAE;gBACT,GAAG,GAAG,uDAAuD,CAAC;aAC9D;YAED,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrC,OAAO,yCAAE,CAAC,WAAW,CAAC,CAAC;QACxB,CAAC,CAAC;QAEF;;;;;;;;;;;UAWE;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,IAAI,CACrD,oDAAG,CAAC,CAAC,aAAa,EAAE,EAAE;YACrB,MAAM,eAAe,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAE1F,MAAM,WAAW,GAAG,kFAA2B,CAAC;YAChD,IAAI,gBAAgB,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;YACpD,IAAI,oBAAoB,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;YAE1D,IAAI,gBAAgB,CAAC,MAAM,KAAK,oBAAoB,CAAC,MAAM,EAAE;gBAC5D,OAAO,KAAK,CAAC;aACb;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACjD,IAAI,gBAAgB,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC,EAAE;oBAClD,OAAO,KAAK,CAAC;iBACb;aACD;YAED,OAAO,IAAI,CAAC;QACb,CAAC,CAAC,EACF,yDAAQ,CAAC,CAAC,CAAU,EAAE,EAAE;YACvB,IAAI,CAAC,CAAC,EAAE;gBACP,MAAM,iBAAiB,GAAG,WAAW,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;gBAC3F,iBAAiB,CAAC,WAAW,GAAG,IAAI,CAAC;gBACrC,OAAO,yCAAE,CAAC,iBAAiB,CAAC,CAAC;aAC7B;YACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CACpF,yDAAQ,CAAC,CAAC,GAAG,EAAE,EAAE;gBAChB,QAAQ,GAAG,GAAkB,CAAC;gBAE/B,8FAA8F;gBAC9F,gDAAgD;gBAChD,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;gBAC3C,IAAI,CAAC,cAAc,CAAE,YAAY,CAAC,CAAC;gBAEnC,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;YACvC,CAAC,CAAC,EACF,oDAAG,CAAC,CAAC,MAAqB,EAAE,EAAE;gBAC7B,mCAAmC;gBACnC,IAAI,MAAM,CAAC,iBAAiB,EAAE;oBAC7B,IAAI,iBAAiB,GAAG,WAAW,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;oBAC5F,iBAAiB,CAAC,WAAW,GAAG,IAAI,CAAC;oBACrC,OAAO,iBAAiB,CAAC;iBACzB;gBAED,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBAEtD,0CAA0C;gBAC1C,MAAM,WAAW,GAAG,WAAW,CAAC,EAAE,EAAE,CAAC;gBACrC,OAAO,WAAW,CAAC;YACpB,CAAC,CAAC,EACF,0DAAU,CAAC,gBAAgB,CAAC,CAC5B,CAAC;QACH,CAAC,CAAC,CACF,CAAC;QAEF,OAAO,MAAM,CAAC;IACf,CAAC;IAED,MAAM;QACL,6DAA6D;QAC7D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAE1B,uDAAuD;QACvD,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAExB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAElC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAErC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;IAED,SAAS;QACR,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAClC,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAExD,8FAA8F;QAC9F,wCAAwC;QACxC,IAAI,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,EAAE;YACd,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;YAClC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SACzE;QAED,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACtC,OAAO,MAAM,CAAC;IACf,CAAC;IAED,YAAY;QACX,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,0CAA0C,IAAI,CAAC,aAAa,EAAE,CAAC;QAE5E,MAAM,OAAO,GAAG,IAAI,8DAAW,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,mCAAmC,CAAC,CAAC;QAE3F,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAC5E,oDAAG,CAAC,CAAC,KAAkB,EAAE,EAAE;YAC1B,IAAI,CAAC,QAAQ,EAAE;gBACd,OAAO;aACP;YAED,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACpD,cAAc,CAAC,OAAO,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;YACzF,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;YAC3B,IAAI,CAAC,cAAc,CAAE,KAAK,CAAC,YAAY,CAAC,CAAC;YAEzC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;YACzC,cAAc,CAAC,OAAO,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;QACtF,CAAC,CAAC,CACF,CAAC;IACH,CAAC;IAEM,QAAQ;QACd,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;IACjE,CAAC;IAEM,MAAM,CAAC,QAAQ;QACrB,OAAO,qBAAqB,CAAC,cAAc,CAAC,GAAG,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;IACnF,CAAC;IAED,IAAI,eAAe;QAClB,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IACpC,CAAC;IAEO,mBAAmB;QAC1B,cAAc,CAAC,UAAU,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;QAClE,cAAc,CAAC,UAAU,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;QACnE,IAAI,CAAC,+BAA+B,CAAC,iBAAiB,EAAE,CAAC;QACzD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;QAC5D,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAEO,gBAAgB;QACvB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACvC,OAAO,CAAC,CAAC,WAAW,CAAC;IACtB,CAAC;IAEO,aAAa,CAAC,GAAW;QAChC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAEO,oBAAoB,CAAC,MAAqB,EAAE,QAAqB,EAAE,QAAgB;QAC1F,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,EAC3C,QAAQ,GAAG,IAAI,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QAE7D,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QAEnC,oCAAoC;QACpC,cAAc,CAAC,OAAO,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QACzF,cAAc,CAAC,OAAO,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;QAE/E,+BAA+B;QAC/B,oCAAoC;QACpC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,mDAAmD;QACnD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEhF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAEO,cAAc,CAAE,WAAoB;QAC3C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,qBAAqB,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxG,CAAC;;AAjZe,oCAAc,GAAG,eAAgB;AACjC,6CAAuB,GAAG,iBAAkB;AAC5C,gDAA0B,GAAG,oBAAqB;AAClD,iDAA2B,GAAG,oBAAqB;AACnD,yCAAmB,GAAG,aAAc;AAEpC,8BAAQ,GAAG,gBAAiB;AAE5B,sCAAgB,GAAG,cAAe;AAEnC,2CAAqB,GAAG,iBAAkB;AAC1C,sCAAgB,GAAG,aAAc;AACjC,uCAAiB,GAAG,cAAe;AACnC,8CAAwB,GAAG,oBAAqB;AAChD,gDAA0B,GAAG,+BAAgC;AAC7D,gCAAU,GAAG,cAAe;AAE5B,wCAAkB,GAAG,QAAS;AAC9B,qCAAe,GAAG,KAAM;AACxB,0CAAoB,GAAG,UAAW;0FAhDpC,qBAAqB;uHAArB,qBAAqB,WAArB,qBAAqB,mBAFrB,MAAM;;;;;;;;;;;;;;;;;;;;AC9DZ,MAAM,YAAY;IAGxB,YAAoB,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;QAFjC,mBAAc,GAAuB,EAAE,CAAC;IAGhD,CAAC;IAED,IAAI,QAAQ;QACX,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QACpC,IAAI,UAAU,EAAE;YACf,OAAO,UAAU,CAAC,cAAc,CAAC;SACjC;QACD,OAAO,IAAI,CAAC,cAAc,CAAC;IAC5B,CAAC;;wEAZW,YAAY;6GAAZ,YAAY,WAAZ,YAAY,mBAFZ,MAAM;;;;;;;;;;;;;;;;;;;;;ACFS;AAES;AASqB;AAEC;AAG3D,MAAM,yBAAyB,GAAG,IAAI,CAAC;AAEhC,MAAe,WAAW;IAQhC,YAAY,MAAqB;QAChC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACjC,CAAC;IAES,WAAW,CAAC,GAAG;QACxB,yCAAyC;QAEzC,IAAI,OAAO,GAAG,mBAAmB,CAAC;QAClC,IAAI,SAAS,GAAG,GAAwB,CAAC;QACzC,IAAI,SAAS,EAAE;YACd,IAAI,SAAS,CAAC,MAAM,KAAK,GAAG,EAAE;gBAC7B,OAAO,GAAG,uBAAuB,CAAC;aAClC;SACD;QAED,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAES,QAAQ,CAAa,GAAW,EAAE,GAAM,EAAE,YAAuD;QAE1G,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAa,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CACvD,mDAAG,CAAC,MAAM,CAAC,EAAE;YACZ,QAAQ,MAAM,CAAC,UAAU,EAAE;gBAC1B,KAAK,uDAAa;oBACjB,IAAI,YAAY,EAAE;wBACjB,YAAY,CAAC,IAAI,CAAC,2EAAyB,CAAU,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;qBACxE;oBACD,MAAM;gBACP,KAAK,0DAAgB;oBACpB,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,aAAa,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;oBAClE,MAAM;gBACP,KAAK,6DAAmB;oBACvB,MAAM;gBACP;oBACC,MAAM;aACP;QACF,CAAC,EAAE,GAAG,CAAC,EAAE;YACR,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC,CAAC;IACN,CAAC;IAES,IAAI,CAAI,GAAW,EAAE,GAAM,EAAE,YAAkD;QAExF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CACnC,mDAAG,CAAC,MAAM,CAAC,EAAE;YACZ,QAAQ,MAAM,CAAC,UAAU,EAAE;gBAC1B,KAAK,uDAAa;oBACjB,IAAI,YAAY,EAAE;wBACjB,YAAY,CAAC,IAAI,CAAC,2EAAyB,CAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;qBAClE;oBACD,MAAM;gBACP,KAAK,0DAAgB;oBACpB,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,aAAa,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;oBAClE,MAAM;gBACP,KAAK,6DAAmB;oBACvB,MAAM;gBACP;oBACC,MAAM;aACP;QACF,CAAC,EAAE,GAAG,CAAC,EAAE;YACR,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC,CAAC;IACN,CAAC;IAES,MAAM,CAAI,GAAW,EAAE,EAAU,EAAE,YAAkD,EAAE,iBAAyB,EAAE;QAC3H,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;aACnB,SAAS,CAAC,MAAM,CAAC,EAAE;YACnB,QAAQ,MAAM,CAAC,UAAU,EAAE;gBAC1B,KAAK,uDAAa;oBACjB,cAAc,GAAG,cAAc,IAAI,QAAQ,CAAC;oBAC5C,MAAM,YAAY,GAAG,6CAAW,CAAC,GAAG,cAAc,UAAU,CAAC,CAAC;oBAC9D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE;wBACpC,QAAQ,EAAE,yBAAyB;qBACnC,CAAC,CAAC;oBAEH,IAAI,YAAY,EAAE;wBACjB,YAAY,CAAC,IAAI,CAAC,8EAAyB,CAAI,EAAE,CAAC,CAAC,CAAC;qBACpD;oBACD,MAAM;gBACP,KAAK,0DAAgB;oBACpB,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,eAAe,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;oBACpE,MAAM;gBACP,KAAK,6DAAmB;oBACvB,MAAM;gBACP;oBACC,MAAM;aACP;QACF,CAAC,EAAE,GAAG,CAAC,EAAE;YACR,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;CACD;;;;;;;;;;;;;;;;;;AC7HD,IAAY,UAGX;AAHD,WAAY,UAAU;IACrB,+CAAM;IACN,+CAAM;AACP,CAAC,EAHW,UAAU,KAAV,UAAU,QAGrB;AAEM,MAAe,sBAAsB;IAK3C,MAAM,CAAC,MAAM,CAAI,IAAO;QACvB,OAA+B;YAC9B,UAAU,EAAE,UAAU,CAAC,MAAM;YAC7B,QAAQ,EAAE,IAAI;SACd,CAAC;IACH,CAAC;IAED,MAAM,CAAC,MAAM,CAAI,EAAU;QAC1B,OAA+B;YAC9B,UAAU,EAAE,UAAU,CAAC,MAAM;YAC7B,EAAE,EAAE,EAAE;SACN,CAAC;IACH,CAAC;CACD;AAEM,MAAM,kBAAsB,SAAQ,sBAAsB;CAEhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvBD;AAEA;AAGA;AAIA;AACA;AACA;;;;;;;;;;;;;;;;;IA4aGA,4DAAAA;IACCA,uDAAAA;;IACDA,0DAAAA;;;;;IADsCA,uDAAAA;IAAAA,mEAAAA,UAAAA,yDAAAA;;;;AA1azC,MAAMiX,uBAAuB,GAAG,IAAhC;AACA,MAAMC,6BAA6B,GAAG,IAAtC;AAKM,MAAOC,uBAAP,CAA8B;EAInC/W,YACSgX,MADT,EAESpI,MAFT,EAGSqI,aAHT,EAISxL,QAJT,EAKSyL,QALT,EAMSzT,KANT,EAOS0T,eAPT,EAQkB3Q,MARlB,EAQgC;IAPvB;IACA;IACA;IACA;IACA;IACA;IACA;IACS;IAVX,mBAAc,IAAIhH,iDAAJ,CAAoB,KAApB,CAAd;EAWF;;EAEL4X,aAAa,CACZC,SADY,EAEZlI,KAFY,EAGZmI,KAHY,EAIZC,SAJY,EAIkB;IAE9B,IAAI,KAAK9T,KAAL,CAAWU,MAAf,EAAuB;MACtB,OAAO,KAAP;IACA,CAJ6B,CAM9B;IACA;IACA;IACA;;;IACA,MAAMqT,aAAa,GAAG,UAAtB;IACA,MAAMC,eAAe,GAAGD,aAAa,CAACE,IAAd,CAAmBJ,KAAK,CAAC5B,GAAzB,CAAxB;IACA,MAAMiC,YAAY,GAAGH,aAAa,CAACE,IAAd,CAAmBH,SAAS,CAAC7B,GAA7B,CAArB;;IAEA,IAAI+B,eAAe,IAAIE,YAAnB,IAAmCF,eAAe,CAAC,CAAD,CAAf,KAAuBE,YAAY,CAAC,CAAD,CAA1E,EAA+E;MAC9E,OAAO,IAAP;IACA;;IAED,IAAI,CAAC,KAAKC,mBAAL,CAAyBP,SAAzB,CAAL,EAA0C;MACzC,OAAO,IAAP;IACA;;IAED,MAAMQ,mBAAmB,GAAG,IAAIrB,yCAAJ,EAA5B;IACA,MAAMsB,cAAc,GAAG,KAAKC,aAAL,CAAmBV,SAAnB,CAAvB,CAvB8B,CAyB9B;;IACA,IAAI/T,SAAS,GAAG,KAAKsL,MAAL,CAAY2E,IAAZ,CAAiByE,+BAAjB,EAAkD;MACjEzU,IAAI,EAAE;QACL0U,UAAU,EAAEH;MADP;IAD2D,CAAlD,CAAhB;IAKAxU,SAAS,CAACc,WAAV,GAAwBC,SAAxB,CAAmCI,MAAD,IAAmB;MACpD,QAAQA,MAAR;QACC,KAAK,MAAL;UACC,MAAMyT,GAAG,GAAG,KAAKC,WAAL,CAAiBd,SAAjB,CAAZ;;UACA,IAAI,OAAOa,GAAP,KAAe,SAAnB,EAA8B;YAC7BL,mBAAmB,CAAChX,IAApB,CAAyB,KAAzB;YACA;UACA;;UACDqX,GAAG,CAAC7T,SAAJ,CAAe+T,UAAD,IAAe;YAC5B,MAAMC,OAAO,GAAGD,UAAU,CAACA,UAAX,KAA0BzB,mEAA1C;YACAkB,mBAAmB,CAAChX,IAApB,CAAyBwX,OAAzB;UACA,CAHD;UAIA;;QACD,KAAK,SAAL;UACC,IAAIzB,0DAAU,CAACS,SAAD,EAAY,gBAAZ,CAAd,EAA6C;YAC5CA,SAAS,CAACkB,cAAV;UACA;;UACDV,mBAAmB,CAAChX,IAApB,CAAyB,IAAzB;UACA;;QACD,KAAK,QAAL;UACC;UACA,MAAM2X,cAAc,GAAG,KAAKhS,MAAL,CAAYiS,aAAZ,CAA0B,EAA1B,EAA8BtJ,KAA9B,CAAvB;UACA,MAAMuJ,UAAU,GAAGF,cAAc,CAACG,QAAf,EAAnB,CAHD,CAIC;;UACA,KAAKlN,QAAL,CAAcmN,YAAd,CAA2BF,UAA3B;UAEAb,mBAAmB,CAAChX,IAApB,CAAyB,KAAzB;UACA;;QACD;UACC;MA5BF;IA8BA,CA/BD;IAiCA,OAAOgX,mBAAP;EACA;;EAED/S,KAAK;IACJ,KAAK2G,QAAL,CAAcoN,IAAd;EACA;EAED;;;;;;;;EAMAV,WAAW,CACVd,SADU,EAEVyB,cAFU,EAEc;IAExB,MAAMhB,cAAc,GAAG,KAAKC,aAAL,CAAmBV,SAAnB,CAAvB;;IACA,MAAM0B,aAAa,GAAG,MAAK;MAC1B,MAAMC,YAAY,GAAG,WAAWlB,cAAc,UAA9C;MACA,KAAKZ,QAAL,CAAc3D,IAAd,CAAmByF,YAAnB,EAAiC,EAAjC,EAAqC;QACpCC,QAAQ,EAAEnC;MAD0B,CAArC;IAGA,CALD;;IAOA,MAAMoB,GAAG,GAAG,KAAKgB,oBAAL,CAA0B7B,SAA1B,EAAqCyB,cAArC,CAAZ;;IACA,IAAI,OAAOZ,GAAP,KAAe,SAAnB,EAA8B;MAC7B;MACA;MACA,OAAO,KAAP;IACA,CAfuB,CAiBxB;;;IACA,KAAKiB,gBAAL,CAAsB,IAAtB;IAEA,MAAMC,aAAa,GAAGxC,0DAAU,CAACS,SAAD,EAAY,eAAZ,CAAV,GAAyCA,SAAS,CAAC+B,aAAV,EAAzC,GAAqE,KAA3F,CApBwB,CAsBxB;;IACA,IAAI9V,SAAS,GAAG,KAAKsL,MAAL,CAAY2E,IAAZ,CAAiB8F,2BAAjB,EAA8C;MAC7D9V,IAAI,EAAE;QACL0U,UAAU,EAAEH,cADP;QAELwB,WAAW,EAAEF,aAFR;QAGLG,QAAQ,EAAEH,aAAa,GAAG/B,SAAS,CAACkC,QAAV,EAAH,GAA0B;MAH5C,CADuD;MAM7DC,YAAY,EAAE;IAN+C,CAA9C,CAAhB,CAvBwB,CAgCxB;;IACA,MAAMC,iBAAiB,GAAG,IAAIjD,yCAAJ,EAA1B,CAjCwB,CAmCxB;;IACA0B,GAAG,CAAC7T,SAAJ,CACEI,MAAD,IAAW;MACV;MACAnB,SAAS,CAACwB,KAAV;MAEA,KAAKqU,gBAAL,CAAsB,KAAtB;;MAEA,QAAQ1U,MAAM,CAAC2T,UAAf;QACC,KAAKzB,sEAAL;UACCoC,aAAa;UACb;;QACD,KAAKpC,yEAAL;UACC,KAAKQ,eAAL,CACEwC,uBADF,CAC0B,SAD1B,EACqClV,MAAM,CAACmV,QAD5C,EACsDnV,MAAM,CAACoV,QAD7D,EAEExV,SAFF,CAEaqO,OAAD,IAA8B;YACxC,IAAIA,OAAO,KAAK,IAAhB,EAAsB;cACrB;cACA,OAAO,KAAKyF,WAAL,CAAiBd,SAAjB,EAA4B,IAA5B,CAAP;YACA;UACD,CAPF;UAQA;;QACD,KAAKV,mEAAL;UACC,MAAMqC,YAAY,GAAGrZ,6CAAA,CAAY,GAAGmY,cAAc,QAA7B,CAArB;;UACA,KAAKZ,QAAL,CAAc3D,IAAd,CAAmByF,YAAnB,EAAiC,EAAjC,EAAqC;YACpCC,QAAQ,EAAEpC;UAD0B,CAArC,EAFD,CAMC;;UACA,MAAMkD,KAAK,GAAG,KAAKC,QAAL,CAAc3C,SAAd,CAAd;;UACA1X,2CAAA,CAAUoa,KAAV,EAAkBG,CAAD,IAAOA,CAAC,CAACC,cAAF,EAAxB;;UAEA,KAAKC,mBAAL,CAAyB/C,SAAzB;;UAEA,MAAMgD,gBAAgB,GAAG1a,0CAAA,CAASoa,KAAT,EAAiBG,CAAD,IAAOzD,6DAAA,CAAqByD,CAArB,CAAvB,CAAzB;;UACA,IAAIG,gBAAgB,CAACE,MAArB,EAA6B;YAC5B,KAAKvD,MAAL,CAAYwD,UAAZ,CAAuB,iCAAvB,EAA0DH,gBAA1D;YACA,MAAM,IAAIzH,KAAJ,CAAU,qDAAV,CAAN;UACA;;UACD;;QACD;UACC,MAAM,IAAIA,KAAJ,CAAU,6BAAV,CAAN;MAjCF,CANU,CA0CV;;;MACA6G,iBAAiB,CAAC5Y,IAAlB,CAAuB4D,MAAvB;IACA,CA7CF,EA8CEgW,GAAD,IAAQ;MACP;MACAnX,SAAS,CAACwB,KAAV;MACAiU,aAAa;MACb,KAAKI,gBAAL,CAAsB,KAAtB;IACA,CAnDF,EAoDC,MAAK;MACJ,KAAKA,gBAAL,CAAsB,KAAtB;IACA,CAtDF;IAyDA,OAAOM,iBAAP;EACA;;EAEDvM,KAAK;IACJ,KAAKiM,gBAAL,CAAsB,KAAtB;EACA;;EAEOA,gBAAgB,CAACpU,KAAD,EAAM;IAC7B,KAAK2V,WAAL,CAAiB7Z,IAAjB,CAAsBkE,KAAtB;EACA;;EAEOgT,aAAa,CAACV,SAAD,EAA8C;IAClE,IAAIsD,UAAU,GAAG,QAAjB;;IACA,IAAI/D,0DAAU,CAACS,SAAD,EAAY,eAAZ,CAAd,EAA4C;MAC3CsD,UAAU,GAAItD,SAA+B,CAACU,aAAhC,EAAd;IACA;;IAED,OAAO4C,UAAP;EACA;;EAEOX,QAAQ,CACf3C,SADe,EAEfuD,aAAyC5W,SAF1B,EAEmC;IAElD,IAAI,CAAC4W,UAAL,EAAiB;MAChBA,UAAU,GAAG,EAAb;MACA,KAAKC,aAAL,CAAmBxD,SAAnB,EAA8BuD,UAA9B;IACA;;IAED,MAAMb,KAAK,GAAuB,EAAlC;;IACA,IAAInD,0DAAU,CAACS,SAAD,EAAY,SAAZ,CAAd,EAAsC;MACrC0C,KAAK,CAACrX,IAAN,CAAY2U,SAAmB,CAACyD,OAApB,EAAZ;IACA;;IACD,IAAIF,UAAJ,EAAgB;MACfjb,2CAAA,CAAUib,UAAV,EAAuBjZ,CAAD,IAAM;QAC3B,IAAIiV,0DAAU,CAACjV,CAAD,EAAI,SAAJ,CAAd,EAA8B;UAC7B,IAAIiC,IAAI,GAAIjC,CAAW,CAACmZ,OAAZ,EAAZ;;UACA,IAAI,CAAClX,IAAL,EAAW;YACV;UACA;;UACDmW,KAAK,CAACrX,IAAN,CAAWkB,IAAX;QACA;MACD,CARD;IASA;;IAED,OAAOmW,KAAP;EACA;;EAEOK,mBAAmB,CAAC/C,SAAD,EAA4B0D,UAA4B/W,SAAxD,EAAiE;IAC3F,IAAI,CAAC+W,OAAL,EAAc;MACbA,OAAO,GAAG,EAAV;IACA;;IAED,IAAInE,0DAAU,CAACS,SAAD,EAAY,WAAZ,CAAd,EAAwC;MACvCA,SAAS,CAAC2D,SAAV;IACA;;IAED,IAAIJ,UAAU,GAAG,EAAjB;IACA,KAAKC,aAAL,CAAmBxD,SAAnB,EAA8BuD,UAA9B;;IAEA,IAAIA,UAAU,IAAIA,UAAU,CAACL,MAA7B,EAAqC;MACpCK,UAAU,CAACX,OAAX,CAAoBtY,CAAD,IAAM;QACxB,IAAIoZ,OAAO,CAACra,OAAR,CAAgBiB,CAAhB,MAAuB,CAAC,CAA5B,EAA+B;UAC9BoZ,OAAO,CAACrY,IAAR,CAAaf,CAAb;UACA,KAAKyY,mBAAL,CAAyBzY,CAAzB,EAA4BoZ,OAA5B;QACA;MACD,CALD;IAMA;EACD;EAED;;;;;;;;EAMQ7B,oBAAoB,CAC3B7B,SAD2B,EAE3ByB,cAF2B,EAEH;IAExB,IAAI8B,UAAU,GAAG,EAAjB;IACA,KAAKC,aAAL,CAAmBxD,SAAnB,EAA8BuD,UAA9B;;IAEA,IAAIA,UAAU,IAAIA,UAAU,CAACL,MAAX,KAAsB,CAAxC,EAA2C;MAC1ClD,SAAS,GAAGuD,UAAU,CAAC,CAAD,CAAtB;IACA,CAPuB,CASxB;;;IACA,IAAIK,GAAJ;;IACA,IAAIrE,0DAAU,CAACS,SAAD,EAAY,WAAZ,CAAd,EAAwC;MACvC4D,GAAG,GAAG5D,SAAS,CAAC6D,SAAV,EAAN;IACA,CAbuB,CAexB;;;IACA,MAAMnB,KAAK,GAAG,KAAKC,QAAL,CAAc3C,SAAd,EAAyBuD,UAAzB,CAAd,CAhBwB,CAkBxB;;IACA,MAAMO,WAAW,GAAIxZ,CAAD,IAAsB;MACzC,IAAIiV,0DAAU,CAACjV,CAAD,EAAI,SAAJ,CAAd,EAA8B;QAC7B,OAAOA,CAAC,CAACyZ,OAAF,EAAP;MACA;;MACD,OAAO,IAAP;IACA,CALD,CAnBwB,CA0BxB;;;IACA,MAAMC,UAAU,GAAG1b,yCAAA,CAAQib,UAAR,EAAqBjZ,CAAD,IAAOwZ,WAAW,CAACxZ,CAAD,CAAtC,CAAnB,CA3BwB,CA6BxB;;;IACA,MAAM4Z,QAAQ,GAAG5b,yCAAA,CAAQoa,KAAR,EAAgBG,CAAD,IAAOzD,8DAAA,CAAsByD,CAAtB,CAAtB,CAAjB;;IACA,IAAI,CAACqB,QAAD,IAAa,CAACF,UAAlB,EAA8B;MAC7B;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MAEA;MAEA,KAAKpE,aAAL,CAAmBwE,SAAnB,CAA6B;QAC5BvH,OAAO,EAAE,uDADmB;QAE5BnM,KAAK,EAAE;MAFqB,CAA7B;MAIA,OAAO,KAAP;IACA,CAlDuB,CAoDxB;;;IACApI,2CAAA,CAAUoa,KAAV,EAAkBG,CAAD,IAAOzD,+DAAA,CAAuByD,CAAvB,EAA0Be,GAA1B,EAA+BvE,8DAA/B,CAAxB,EArDwB,CAuDxB;IACA;;;IACA,IAAIkF,WAAJ;;IACA,IAAIhF,0DAAU,CAACS,SAAD,EAAY,aAAZ,CAAd,EAA0C;MACzCuE,WAAW,GAAGvE,SAAd;IACA,CAFD,MAEO,IAAIuD,UAAU,CAACL,MAAX,GAAoB,CAApB,IAAyB3D,0DAAU,CAACgE,UAAU,CAAC,CAAD,CAAX,EAAgB,aAAhB,CAAvC,EAAuE;MAC7EgB,WAAW,GAAGhB,UAAU,CAAC,CAAD,CAAxB;IACA;;IAED,IAAI,CAACgB,WAAL,EAAkB;MACjB,MAAM,IAAIhJ,KAAJ,CAAU,+CAAV,CAAN;IACA,CAlEuB,CAoExB;;;IACA,OAAOgJ,WAAW,CAACzD,WAAZ,CAAwB8C,GAAxB,EAA6BnC,cAA7B,CAAP;EACA;;EAEOlB,mBAAmB,CAACP,SAAD,EAA8C;IACxE;IACA,IAAIT,0DAAU,CAACS,SAAD,EAAY,eAAZ,CAAd,EAA4C;MAC3C,IAAIuD,UAAU,GAAGjb,0CAAA,CAAU0X,SAA+B,CAACwD,aAAhC,EAAV,EAA4DlZ,CAAD,IAAOA,CAAC,IAAIA,CAAC,KAAK0V,SAA7E,CAAjB,CAD2C,CAG3C;;;MACA,IACC1X,wCAAA,CAAOib,UAAP,EAAoBjZ,CAAD,IAAM;QACxB,IAAI8C,MAAM,GAAG,KAAKmT,mBAAL,CAAyBjW,CAAzB,CAAb;QACA,OAAO8C,MAAP;MACA,CAHD,CADD,EAKE;QACD,OAAO,IAAP;MACA;IACD;;IAED,IAAImS,0DAAU,CAACS,SAAD,EAAY,YAAZ,CAAd,EAAyC;MACxC,IAAIA,SAAS,CAACiD,UAAV,EAAJ,EAA4B;QAC3B,OAAO,IAAP;MACA;IACD;;IAED,IAAI1D,0DAAU,CAACS,SAAD,EAAY,SAAZ,CAAd,EAAsC;MACrC,IAAIZ,6DAAA,CAAqBY,SAArB,CAAJ,EAA8C;QAC7C,OAAO,IAAP;MACA;IACD;;IAED,OAAO,KAAP;EACA;;EAEOwD,aAAa,CAACxD,SAAD,EAAgDyE,UAAhD,EAAsF;IAC1G,IAAIlF,0DAAU,CAACS,SAAD,EAAY,eAAZ,CAAd,EAA4C;MAC3C;MACA,MAAM0E,KAAK,GAAI1E,SAA+B,CAACwD,aAAhC,GAAgDnZ,MAAhD,CAAwDC,CAAD,IAAO,CAAC,CAACA,CAAhE,CAAf;;MACAhC,2CAAA,CAAUoc,KAAV,EAAkBpa,CAAD,IAAM;QACtB,IAAIma,UAAU,CAACja,QAAX,CAAoBF,CAApB,CAAJ,EAA4B;UAC3B;QACA;;QACDma,UAAU,CAACpZ,IAAX,CAAgBf,CAAhB,EAJsB,CAMtB;;QACA,KAAKkZ,aAAL,CAAmBlZ,CAAnB,EAAsBma,UAAtB;MACA,CARD;IASA;EACD;;AAlYkC;;;mBAAvB/E,yBAAuBnX,sDAAAA,CAAAA,0DAAAA,GAAAA,sDAAAA,CAAAA,gEAAAA,GAAAA,sDAAAA,CAAAA,oEAAAA,GAAAA,sDAAAA,CAAAA,sDAAAA,GAAAA,sDAAAA,CAAAA,qEAAAA,GAAAA,sDAAAA,CAAAA,wDAAAA,GAAAA,sDAAAA,CAAAA,8DAAAA,GAAAA,sDAAAA,CAAAA,oDAAAA;AAAA;;;SAAvBmX;EAAuBiF,SAAvBjF,uBAAuB;EAAAkF,YAFvB;;AA0ZP,MAAOjE,+BAAP,CAAsC;EAC3ChY,YACQsD,SADR,EAEiCC,IAFjC,EAE0C;IADlC;IACyB;EAC5B;;AAJsC;;;mBAA/ByU,iCAA+BpY,+DAAAA,CAAAA,mEAAAA,GAAAA,+DAAAA,CAGlCwD,sEAHkC;AAGnB;;;QAHZ4U;EAA+BrV;EAAAG;EAAAC;EAAAC;EAAAC;IAAA;MAjB1CrD,4DAAAA;MAAmBA,oDAAAA;MAAaA,0DAAAA;MAChCA,4DAAAA;MAAwBA,oDAAAA;MAA+CA,0DAAAA;MACvEA,4DAAAA;MAOCA,uDAAAA;MACAA,4DAAAA;MAA2CA,oDAAAA;MAAMA,0DAAAA;MACjDA,4DAAAA;MAAyDA,oDAAAA;MAAOA,0DAAAA;MAChEA,4DAAAA;MAAyDA,oDAAAA;MAAIA,0DAAAA;MAC7DA,uDAAAA;MACDA,0DAAAA;;;;MAbwBA,uDAAAA;MAAAA,gEAAAA;;;;;;AAkCpB,MAAOyZ,2BAAP,CAAkC;EACvCrZ,YACQsD,SADR,EAEiCC,IAFjC,EAE0C;IADlC;IACyB;EAC5B;;AAJkC;;;mBAA3B8V,6BAA2BzZ,+DAAAA,CAAAA,mEAAAA,GAAAA,+DAAAA,CAG9BwD,sEAH8B;AAGf;;;QAHZiW;EAA2B1W;EAAAG;EAAAC;EAAAC;EAAAC;IAAA;MATtCrD,4DAAAA;MAAmBA,oDAAAA;MAASA,0DAAAA;MAC5BA,4DAAAA;MACCA,wDAAAA;MAGAA,4DAAAA;MAAKA,oDAAAA;MAA0CA,0DAAAA;;;;MAHzCA,uDAAAA;MAAAA,wDAAAA;MAGDA,uDAAAA;MAAAA,gEAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjbiD;;;;;;;;;;;;;AAIzD,MAAM,yBAAyB,GAAG,IAAI,CAAC;AAKhC,MAAM,aAAa;IACzB,YACQ,IAAiB,EACjB,IAAgB,EAChB,MAAqB,EACrB,MAAqB,EACrB,QAAkB,EAClB,YAAiC,EACjC,QAAqB,EACrB,gBAAyC,EACzC,MAAc,EACd,QAAyB,EACzB,MAAuB;QAVvB,SAAI,GAAJ,IAAI,CAAa;QACjB,SAAI,GAAJ,IAAI,CAAY;QAChB,WAAM,GAAN,MAAM,CAAe;QACrB,WAAM,GAAN,MAAM,CAAe;QACrB,aAAQ,GAAR,QAAQ,CAAU;QAClB,iBAAY,GAAZ,YAAY,CAAqB;QACjC,aAAQ,GAAR,QAAQ,CAAa;QACrB,qBAAgB,GAAhB,gBAAgB,CAAyB;QACzC,WAAM,GAAN,MAAM,CAAQ;QACd,aAAQ,GAAR,QAAQ,CAAiB;QACzB,WAAM,GAAN,MAAM,CAAiB;IAC3B,CAAC;IAEL,mBAAmB,CAAC,YAAoB,EAAE,WAAmB,yBAAyB;QACrF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE;YACpC,QAAQ;SACR,CAAC,CAAC;IACJ,CAAC;IAED,qBAAqB,CAAC,GAAQ;QAC7B,IAAI,GAAG,YAAY,mEAAiB,EAAE;YACrC,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE;gBACnE,OAAO,IAAI,CAAC;aACZ;SACD;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAED,IAAI,iBAAiB;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;IACtC,CAAC;;0EAhCW,aAAa;8GAAb,aAAa,WAAb,aAAa,mBAFb,MAAM;;;;;;;;;;;;;;;;;;;;;;;;ACjBuB;AACd;;;AAQrB,MAAM,eAAe;CAG3B;AAEM,MAAM,cAAc;CAE1B;AAED;;;;GAIG;AAII,MAAM,aAAa;IAOzB,YAAoB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;QAN5B,kBAAa,GAAG,gBAAgB,CAAC;QACjC,+BAA0B,GAAG,YAAY,CAAC;QAC1C,8BAAyB,GAAG,UAAU,CAAC;QACvC,mCAA8B,GAAG,gBAAgB,CAAC;QAClD,kCAA6B,GAAG,eAAe,CAAC;IAEjB,CAAC;IAExC;;;;;OAKG;IACH,SAAS;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAgB,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAC3D,mDAAG,CAAC,UAAU,CAAC,EAAE;YAChB,MAAM,cAAc,GAAG,UAAU,CAAC,iBAAiB,CAAC;YACpD,UAAU,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAEpC,IAAI,UAAU,CAAC,UAAU,EAAE;gBAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;gBAC5D,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC;aAC5F;iBAAM;gBACN,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;aAC/D;YAED,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;YAC1D,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,6BAA6B,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;YAE1F,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;YACpF,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,yBAAyB,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,aAAa;QACZ,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAChE,mDAAG,CAAC,CAAC,CAAwB,EAAE,EAAE;YAChC,OAAO,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC;QAC3B,CAAC,CAAC,CACF,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK;QACJ,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC3D,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAC1D,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAC/D,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC/D,CAAC;IAED;;;;;OAKG;IACH,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,IAAI,EAAE,CAAC;IAClF,CAAC;IAED;;;;;OAKG;IACH,IAAI,cAAc;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,IAAI,EAAE,CAAC;IACtF,CAAC;IAED;;;;;OAKG;IACH,IAAI,aAAa;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,IAAI,EAAE,CAAC;IACrF,CAAC;IAED;;;;;OAKG;IACH,IAAI,iBAAiB;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,IAAI,EAAE,CAAC;IACjF,CAAC;IAED,IAAI,cAAc;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IAEO,mBAAmB,CAAC,UAAyB;QACpD,MAAM,SAAS,GAAG,0CAAQ,CAAC,UAAU,CAAC,4BAA4B,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAEpG,MAAM,MAAM,GAAmB;YAC9B,wBAAwB,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAkB;gBAC9D,EAAE,EAAE,CAAC,CAAC,iBAAiB;gBACvB,IAAI,EAAE,CAAC,CAAC,mBAAmB;aAC3B,EAAC;SACF,CAAC;QACF,OAAO,MAAM,CAAC;IACf,CAAC;IAEO,kBAAkB,CAAC,UAAyB;QACnD,IAAI,UAAU,CAAC,UAAU,EAAE;YAC1B,OAAO,UAAU,CAAC,qBAAqB,CAAC;SACxC;aAAM;YACN,OAAO,CAAmB;oBACzB,EAAE,EAAE,UAAU,CAAC,yBAAyB;oBACxC,IAAI,EAAE,UAAU,CAAC,IAAI;iBACrB,CAAC,CAAC;SACH;IACF,CAAC;;0EA1HW,aAAa;8GAAb,aAAa,WAAb,aAAa,mBAFb,MAAM;;;;;;;;;;;;;;;;AC3BZ,MAAM,kBAAkB;IAC9B,YAAmB,KAAa,EAAS,OAAe;QAArC,UAAK,GAAL,KAAK,CAAQ;QAAS,YAAO,GAAP,OAAO,CAAQ;IAAG,CAAC;CAC5D;;;;;;;;;;;;;;;;;;;;ACAmF;AACxB;;;AAKrD,MAAM,oBAAoB;IAChC,YAAoB,MAAiB;QAAjB,WAAM,GAAN,MAAM,CAAW;IAAI,CAAC;IAE1C,OAAO,CAAC,GAAW,EAAE,KAAc;QAClC,MAAM,UAAU,GAAG,IAAI,qEAAkB,CAAC,KAAK,IAAI,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAE1E,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4FAAsB,EAAE;YAC1D,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,UAAU;SAChB,CAAC,CAAC;QAEH,OAAO,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,CAAC;IAC5C,CAAC;;wFAZW,oBAAoB;qHAApB,oBAAoB,WAApB,oBAAoB,mBAFpB,MAAM;;;;;;;;;;;;;;;;;;;;;;ACL2C;AAEzB;AAGJ;;;;AAK1B,MAAM,WAAW;IACvB,YAAoB,IAAgB,EAAU,IAAiB;QAA3C,SAAI,GAAJ,IAAI,CAAY;QAAU,SAAI,GAAJ,IAAI,CAAa;IAAG,CAAC;IAEnE,IAAI,CAAI,OAAe,EAAE,GAAM;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAmB,OAAO,EAAE,IAAI,CAAC;aACpD,IAAI,CAAC,mDAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,YAAY,CAAa,OAAe,EAAE,GAAM;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAyB,OAAO,EAAE,IAAI,CAAC;aACxD,IAAI,CAAC,mDAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,CAAC,GAAW;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAkB,GAAG,CAAC;aAC3C,IAAI,CAAC,mDAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,YAAY,CAAI,OAAe,EAAE,MAAU;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAI,OAAO,EAAE,IAAI,CAAC;aACpC,IAAI,CAAC,mDAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,0FAA0F;IAC1F,uDAAuD;IACvD,cAAc,CAAC,GAAQ;QAEtB,IAAG,OAAO,GAAG,KAAK,WAAW;YAAE,OAAO;QAEtC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC9B,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YACrB,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO;YAEpD,IAAI,KAAK,CAAC,WAAW,KAAK,KAAK,EAAE;gBAChC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3C,OAAO;aACP;YAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACvD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBAC3B,OAAO;aACP;YAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM,EAAE;gBACzD,IAAI,mCAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,qBAAqB,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE;oBAClE,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;aACxC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAGD,WAAW,CAAI,OAAe,EAAE,MAAW;QAC1C,IAAI,UAAsB,CAAC;QAE3B,IAAI,MAAM,EAAE;YACX,UAAU,GAAG,IAAI,4DAAU,EAAE,CAAC;YAC9B,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE;gBACvB,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;oBAC/B,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC5B,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;iBAC7C;aACD;SACD;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAI,OAAO,EAAE;YAChC,MAAM,EAAE,UAAU;SAClB,CAAC,CAAC,IAAI,CAAC,mDAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;;sEArEW,WAAW;4GAAX,WAAW,WAAX,WAAW,mBAFX,MAAM;;;;;;;;;;;;;;;;;;;;;;ACP8B;AAEvB;;;;AA2BnB,MAAM,oBAAoB;IAIhC,YAAoB,IAAgB,EAAU,KAAY;QAAtC,SAAI,GAAJ,IAAI,CAAY;QAAU,UAAK,GAAL,KAAK,CAAO;QAH1D,kBAAa,GAAG,EAAoB,CAAC;QACrC,YAAO,GAAG,EAAc,CAAC;IAEqC,CAAC;IAE/D,qBAAqB;QACpB,OAAO,IAAI,CAAC,IAAI;aACd,GAAG,CAAU,0BAA0B,CAAC;aACxC,IAAI,CACJ,mDAAG,CAAC,CAAC,CAAC,EAAE;YACP,MAAM,cAAc,GAAG,CAAC,CAAC,cAAc,CAAC;YACxC,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;YAE1B,IAAI,cAAc,EAAE;gBACnB,IAAI,CAAC,aAAa,GAAG,cAAc,CAAC;gBAEpC,IAAI,cAAc,IAAI,cAAc,CAAC,QAAQ,EAAE;oBAC9C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;iBAC7C;aACD;YACD,IAAI,OAAO,EAAE;gBACZ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;aACvB;QACF,CAAC,CAAC,EACF,0DAAU,CAAC,GAAG,EAAE;YACf,+CAA+C;YAC/C,sBAAsB;YACtB,OAAO,wCAAE,CAAC,EAAa,CAAC,CAAC;QAC1B,CAAC,CAAC,CACF;aACA,SAAS,EAAE,CAAC;IACf,CAAC;;wFAhCW,oBAAoB;qHAApB,oBAAoB,WAApB,oBAAoB,mBAFpB,MAAM;;;;;;;;;;;;;;;;;;;;AC5Bc;;;AAQ1B,MAAM,gBAAgB;IAC5B,YAAoB,IAAiB;QAAjB,SAAI,GAAJ,IAAI,CAAa;IAAG,CAAC;IAEzC,wBAAwB,CAAC,kBAA0B;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,iCAAiC,EAAE,CAAC;QAC3D,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAkB,4BAA4B,EAAE;YAC3E,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE;YAClC,OAAO,EAAE,kBAAkB,CAAC,QAAQ,EAAE;SACtC,CAAC,CAAC;IACJ,CAAC;IAED,iCAAiC;QAChC,MAAM,SAAS,GAAG,mCAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1C,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,+BAA+B,CAAC,kBAA0B;QACzD,MAAM,SAAS,GAAG,IAAI,CAAC,iCAAiC,EAAE,CAAC;QAC3D,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1D,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,oCAAoC;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAA8B,+BAA+B,CAAC,CAAC;IAC5F,CAAC;IAED,6BAA6B;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAuB,wBAAwB,CAAC,CAAC;IAC9E,CAAC;;gFA7BW,gBAAgB;iHAAhB,gBAAgB,WAAhB,gBAAgB,mBAFhB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACPc;AAEjC;;;;;;;GAOG;AACI,SAAS,0BAA0B,CAAC,GAAW;IACrD,OAAO,qBAAqB,CAAC,mCAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;;;;;GAUG;AACI,SAAS,qBAAqB,CAAC,IAAU;IAC/C,OAAO,mCAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;AAC9C,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACI,SAAS,aAAa,CAAC,IAAU;IACvC,IAAG;QACF,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE,EACxC,CAAC,GAAG,mCAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAChD,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;KAClB;IACD,OAAO,GAAG,EAAC;QACV,OAAO,IAAI,CAAC;KACZ;AACF,CAAC;AAED;;;;;;GAMG;AACI,SAAS,qBAAqB,CAAC,IAAU;IAC/C,IAAI,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IAC3C,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;IACzE,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;GAYG;AACI,SAAS,gBAAgB,CAAC,IAAU;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE,EACxC,CAAC,GAAG,mCAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC3C,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACI,SAAS,iBAAiB,CAAC,IAAU;IAC3C,OAAO,mCAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;AAC3D,CAAC;AAED;;;GAGG;AACI,SAAS,SAAS,CAAC,IAAU;IACnC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACI,SAAS,UAAU,CAAC,IAAU,EAAE,OAAe;IACrD,OAAO,mCAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;AACtD,CAAC;AAED;;;;GAIG;AACI,MAAM,OAAO,GAAG,CAAC,IAAU,EAAE,IAAY,EAAQ,EAAE;IACzD,OAAO,mCAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;AAChD,CAAC,CAAC;AAEF;;;;GAIG;AACI,SAAS,SAAS,CAAC,IAAU,EAAE,SAAe;IACpD,OAAO,mCAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAC9C,CAAC;AAED;;;;GAIG;AACI,SAAS,MAAM,CAAC,IAAU,EAAE,SAAe;IACjD,OAAO,mCAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACI,SAAS,WAAW,CAAC,KAAW,EAAE,GAAS;IACjD,OAAO,mCAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACI,SAAS,sBAAsB,CAAC,IAAU;IAChD,OAAO,mCAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;AACvD,CAAC;AAED;;GAEG;AACI,SAAS,iBAAiB;IAChC,OAAO,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;AACrD,CAAC;AAED;;;GAGG;AACI,MAAM,kBAAkB,GAAG,CAAC,QAAc,EAAQ,EAAE;IAC1D,OAAO,mCAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;AAClD,CAAC,CAAC;AAEF;;;GAGG;AACI,MAAM,iBAAiB,GAAG,CAAC,QAAc,EAAQ,EAAE;IACzD,OAAO,mCAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;AACjD,CAAC,CAAC;AAEF;;;GAGG;AACI,MAAM,kBAAkB,GAAG,CAAC,QAAc,EAAQ,EAAE;IAC1D,OAAO,mCAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;AAClD,CAAC,CAAC;AAEF;;;;GAIG;AACI,MAAM,eAAe,GAAG,CAAC,IAAU,EAAE,IAAU,EAAQ,EAAE;IAC/D,MAAM,cAAc,GAAG,mCAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;IACtE,MAAM,QAAQ,GAAG,mCAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,mCAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;IACpE,OAAO,QAAQ,CAAC;AACjB,CAAC,CAAC;AAEK,MAAM,UAAU,GAAG,CAAC,IAAU,EAAU,EAAE;IAChD,OAAO,mCAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACtC,CAAC,CAAC;AAEK,MAAM,kBAAkB,GAAG,CAAC,IAAU,EAAU,EAAE;IACxD,OAAO,mCAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACzC,CAAC,CAAC;AAEK,MAAM,eAAe,GAAG,CAAC,SAAe,EAAE,OAAa,EAAU,EAAE;IACzE,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;AAC5D,CAAC,CAAC;AAEK,MAAM,wBAAwB,GAAG,CAAC,SAAe,EAAE,OAAa,EAAU,EAAE;IAClF,OAAO,GAAG,kBAAkB,CAAC,SAAS,CAAC,MAAM,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;AAC5E,CAAC,CAAC;AAEK,MAAM,eAAe,GAAG,CAAC,IAAU,EAAU,EAAE;IACrD,OAAO,mCAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC,CAAC;AAEK,MAAM,eAAe,GAAG,CAAC,IAAU,EAAU,EAAE;IACrD,OAAO,mCAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACtC,CAAC,CAAC;;;;;;;;;;;;;;;;ACjOK,MAAM,YAAY;IAIxB,MAAM,CAAC,EAAE,CAAI,MAAS;QACrB,OAAyB;YACxB,EAAE,EAAE,IAAI;YACR,MAAM;SACN,CAAC;IACH,CAAC;IAED,MAAM,CAAC,MAAM;QACZ,OAAyB;YACxB,EAAE,EAAE,KAAK;SACT,CAAC;IACH,CAAC;CACD;;;;;;;;;;;;;;;;;;;;;AChBuD;AACN;AACN;AAEiB;;AAQ7D,MAAM,cAAc,GAAW,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;AAGrD,MAAM,kBAAmB,SAAQ,uDAAY;IAEnD,YAAY,QAAkB;QAC7B,gFAAgF;QAChF,8EAA8E;QAC9E,KAAK,EAAE,CAAC;QACR,UAAU,CAAC,GAAG,EAAE;YACf,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,4DAAU,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,wFAAwF;QACxF,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,CAAC;IAC1D,CAAC;IAED,WAAW;QACV,IAAI;YACH,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACvC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;YAChE,IAAI,CAAC,UAAU,EAAE;gBAChB,OAAO;aACP;YAED,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAE9C,MAAM,SAAS,GAAG,WAAW,UAAU,EAAE,CAAC;YAC1C,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACtC,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAEpC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE;gBAClC,YAAY,EAAE,MAAM;aACpB,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;gBACxB,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YACpC,CAAC,EAAE,GAAG,CAAC,EAAE;gBACR,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBACnC,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;SACH;QAAC,OAAO,GAAG,EAAE;YACb,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,GAAG,CAAC,CAAC;SAC/D;IACF,CAAC;IAED,WAAW,CAAC,KAAK;QAChB,IAAI,CAAC,6EAAsB,EAAE;YAC5B,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACzB,OAAO;SACP;QAED,KAAK,CAAC,6FAA6F,CAAC,CAAC;QAErG,MAAM,UAAU,GAA0B;YACzC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,SAAS;YACrC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;YAClC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK;YAChC,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU;SACpC,CAAC;QAEF,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC3D,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,aAAa,EAAE;YAClB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAkB,CAAC;YAC9D,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC;SAC3B;QAED,MAAM,GAAG,GAAmB;YAC3B,QAAQ,EAAE,IAAI,IAAI,EAAE;YACpB,QAAQ;YACR,aAAa,EAAE,kFAA2B;YAC1C,WAAW,EAAE,UAAU;YACvB,eAAe,EAAE,KAAK;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,KAAK;YAC/B,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE;YAC/B,UAAU,EAAE,EAAE;SACd,CAAC;QAEF,yBAAyB;QACzB,oDAAoB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YACpC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAEjC,0EAA0E;YAC1E,MAAM,SAAS,GAAG,gBAAgB,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;YAC/D,MAAM,SAAS,GAAG,WAAW,SAAS,EAAE,CAAC;YACzC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAEtC,kCAAkC;YAClC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE;gBAClC,YAAY,EAAE,MAAM;aACpB,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;gBACxB,0CAA0C;gBAC1C,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YACpC,CAAC,EAAE,GAAG,CAAC,EAAE;gBACR,+DAA+D;gBAC/D,uCAAuC;gBACvC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBACnC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YACjB,uFAAuF;YACvF,kCAAkC;YAClC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,SAAS,GAAG,gBAAgB,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;YACtD,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC;YAC3B,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;;oFA5GW,kBAAkB;mHAAlB,kBAAkB,WAAlB,kBAAkB;;;;;;;;;;;;;;;;;;ACfyC;AAGxE,MAAM,QAAQ,GAAG,UAAU,CAAC;AAErB,MAAM,cAAc;;AACnB,8BAAe,GAAmB;IACxC,aAAa,EAAE,IAAI;CACnB,CAAC;AACK,qBAAM,GAAmB;IAC/B,KAAK,EAAE,IAAI;CACX;AAMK,MAAM,SAAS;IACrB,MAAM,CAAC,YAAY,CAAC,IAAsB,EAAE,GAAW,EAAE,UAA0B,SAAS;QAC3F,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;QAE7B,IAAI,CAAC,GAAG,EAAE;YACT,OAAO;SACP;QAED,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,QAAQ,EAAE;YACxC,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE;gBAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAuB,CAAC;gBACjE,IAAI,GAAG,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;oBAClE,IAAI,OAAO,IAAI,OAAO,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE;wBAC/E,GAAG,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;wBAC7B,SAAS;qBACT;oBACD,GAAG,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;iBACjC;aACD;SACD;IACF,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,UAAoC;QACrD,IAAI,IAAI,CAAC;QACT,IAAI,UAAU,YAAY,4DAAgB,EAAE;YAC3C,IAAI,GAAG,UAA8B,CAAC;SACtC;aAAM;YACN,IAAI,GAAI,UAAoB,CAAC,OAAO,EAAE,CAAC;YACvC,IAAI,OAAO,UAAU,CAAC,UAAU,KAAK,UAAU,EAAE;gBAChD,OAAO,UAAU,CAAC,UAAU,EAAE,CAAC;aAC/B;SACD;QAED,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,UAAiB,EAAE,GAAG;QACzC,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;QAClC,IAAI,OAAO,UAAU,CAAC,YAAY,KAAK,UAAU,EAAE;YAClD,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;SAC7B;aAAM;YACN,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;SAClC;IACF,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,WAAW,CAAC,UAAoC;QACtD,IAAI,IAAI,CAAC;QACT,IAAI,UAAU,YAAY,4DAAgB,EAAE;YAC3C,IAAI,GAAG,UAA8B,CAAC;SACtC;aAAM;YACN,IAAI,GAAI,UAAoB,CAAC,OAAO,EAAE,CAAC;SACvC;QAED,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC;QACvD,IAAI,CAAC,OAAO,EAAE;YACb,qCAAqC;SACrC;QACD,OAAO,OAAO,CAAC;IAChB,CAAC;IAED;;;;;;OAMG;IACK,MAAM,CAAC,oBAAoB,CAAC,SAA2B;QACxD,MAAO,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC1D,OAAO,CAAC,aAAa,EAAE,CAAC;YAExB,IAAI,OAAO,CAAC,QAAQ,EAAE;gBACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;aAC5D;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;CACD;;;;;;;;;;;;;;;;;;;;;;;;ACtGwD;AAI7B;;;;;;AAQrB,MAAM,YAAY;IACxB,YACS,QAAkB,EAClB,MAAqB,EACrB,MAAuB,EACvB,MAAqB;QAHrB,aAAQ,GAAR,QAAQ,CAAU;QAClB,WAAM,GAAN,MAAM,CAAe;QACrB,WAAM,GAAN,MAAM,CAAiB;QACvB,WAAM,GAAN,MAAM,CAAe;IAC1B,CAAC;IAEL;;;;;;OAMG;IACH,eAAe,CAAC,GAAQ,EAAE,QAAgB;QACzC,IAAI,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE;YAC3C,OAAO;SACP;QAED,QAAQ,GAAG,QAAQ,IAAI,QAAQ,CAAC;QAChC,IAAI,KAAK,GAAG,YAAY,CAAC;QAEzB,IAAI,OAAO,CAAC;QACZ,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,EAAE;YACxC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;SACtB;QAED,IAAI,GAAG,CAAC,KAAK,EAAE;YACd,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;SAClB;QAED,IAAI,GAAG,YAAY,mEAAiB,EAAE;YACrC,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE;gBACvB,OAAO,GAAG,EAAE,CAAC;aACb;iBAAM;gBACN,IAAI,GAAG,CAAC,KAAK,EAAE;oBACd,IAAI;wBACH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBAC1C,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE;4BACnE,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;yBAChC;qBACD;oBAAC,OAAO,EAAE,EAAE;wBACZ,SAAS;qBACT;iBACD;aACD;SACD;QAED,IAAI,CAAC,OAAO,EAAE;YACb,OAAO,GAAG,uCAAuC,8CAAY,CAAC,QAAQ,CAAC,GAAG,CAAC;YAC3E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;SACnC;QAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YACrB,OAAO;YACP,KAAK,EAAE,KAAK;SACZ,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE;YAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;IACJ,CAAC;;wEA5DW,YAAY;6GAAZ,YAAY,WAAZ,YAAY,mBAFZ,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVsB;AACT;AACC;AACC;AACM;AACP;AACF;AACQ;AACM;AACb;AACA;AACG;AACkB;AACb;AACP;AACF;AACE;AAEH;AACD;AACA;AAEO;AACF;AACF;AACM;AACN;AAEA;AAEO;AACE;AAEJ;;;;;;;;;;;;;;;;;;AC/BrC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAE/B,SAAS,WAAW,CAAC,IAAQ,EAAE,GAAW,EAAE,OAAe;IAC1D,sDAAsD;IACtD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,OAAO,EAAE;QACZ,MAAM,SAAS,GAAG,uBAAuB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACxD,gBAAgB;QAChB,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;KACtB;AACF,CAAC;AAED,SAAS,SAAS,CAAC,OAAe;IACjC,MAAM,OAAO,GAAG,uDAAuD,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtF,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,SAAS,uBAAuB,CAAC,GAAW,EAAE,OAAwB;IACrE,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,EAAE,EAAE;QACP,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvD,MAAM,YAAY,GAAG,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QACvC,UAAU,GAAG,YAAY,GAAG,EAAE,GAAG,IAAI,CAAC;KACtC;IAED,4BAA4B;IAC5B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;IAChD,6EAA6E;IAC7E,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAEtD,0CAA0C;IAC1C,IAAI,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAC;IAEpD,iGAAiG;IACjG,qDAAqD;IACrD,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,iBAAiB,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAC;IACnE,IAAI,GAAG,EAAE;QACR,SAAS,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,CAAC;KAChD;IAED,IAAI,gBAAgB,EAAE;QACrB,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,GAAG,GAAG,GAAG,WAAW,GAAG,SAAS,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,SAAS,GAAG,QAAQ,GAAG,GAAG,CAAC,CAAC;KAC3G;IAED,OAAO,SAAS,CAAC;AAClB,CAAC;AAKM,MAAM,WAAW;IACvB,cAAc,CAAC,IAAY;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAC9C,CAAC;IAED,SAAS,CAAC,IAAS;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,mBAAmB,CAAC,IAAQ;QAC3B,IAAI,CAAC,IAAI,EAAE;YACV,OAAO;SACP;QAED,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YACrB,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;gBAC7B,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;gBACxB,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;oBAChC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;iBAClC;qBAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;oBACvC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;iBAChC;aACD;SACD;IACF,CAAC;IAED,cAAc,CAAC,GAAW,EAAE,KAAU;QACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC9B,sDAAsD;YACtD,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,OAAO,EAAE;gBACZ,OAAO,uBAAuB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;aAC7C;SACD;QAED,OAAO,KAAK,CAAC;IACd,CAAC;;sEApCW,WAAW;4GAAX,WAAW,WAAX,WAAW,mBAFX,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnDnB;AACA;AAIA;;;;;;AAMM,MAAOyc,WAAP,CAAkB;EAavBrc,YACSsc,UADT,EAE2BC,SAF3B,EAGSC,OAHT,EAISC,QAJT,EAKkCC,OALlC,EAMC5V,oBAND,EAM2C;IALlC;IACkB;IAClB;IACA;IACyB;IAhBlC,mBAAsB,IAAtB;IACA,uBAAkB,KAAlB;IAkBC,KAAKY,eAAL,GAAuBZ,oBAAoB,CAACa,OAArB,CAA6BD,eAApD;IACA,KAAKiV,IAAL;EACA;;EAlBc,IAAXC,WAAW;IACd,OAAO,KAAKN,UAAL,CAAgBM,WAAvB;EACA;;EAEe,IAAZC,YAAY;IACf,OAAO,GAAG,KAAKD,WAAW,KAA1B;EACA;;EAcKD,IAAI;IAAA;;IAAA;MACT,IAAIG,IAAJ;;MACA,IAAI,KAAI,CAACN,OAAL,CAAaO,KAAb,CAAmB,MAAnB,CAAJ,EAAgC;QAC/BD,IAAI,GAAG,KAAI,CAACN,OAAL,CAAaQ,GAAb,CAAiB,MAAjB,CAAP;MACA,CAFD,MAEO;QACN,CAACF,IAAD,IAAUjR,SAAS,CAACoR,QAAV,CAAmBC,KAAnB,CAAyB,GAAzB,CAAV;;QAEA,IAAI,CAAC,CAAC,IAAD,EAAO,IAAP,EAAarb,QAAb,CAAsBib,IAAtB,CAAL,EAAkC;UACjCA,IAAI,GAAG,IAAP;QACA;MACD;;MAED,KAAI,CAAClV,UAAL,CAAgBkV,IAAhB;IAZS;EAaT;;EAGDlV,UAAU,CAACkV,IAAD,EAAa;IACtB,IAAIA,IAAI,KAAK,IAAT,IAAiB,CAAC,KAAKpV,eAA3B,EACCoV,IAAI,GAAG,KAAKK,WAAZ;IACH7Q,OAAO,CAACqB,GAAR,CAAY,uBAAuBmP,IAAnC;;IACE,KAAKN,OAAL,CAAaY,GAAb,CAAiB,MAAjB,EAAyBN,IAAzB;;IACA,KAAKR,UAAL,CAAgBe,GAAhB,CAAoBP,IAApB;;IACA,KAAKP,SAAL,CAAe1O,eAAf,CAA+BiP,IAA/B,GAAsC,KAAKF,WAA3C;IACA,KAAKF,OAAL,GAAe,KAAKG,YAApB;;IACA,KAAKJ,QAAL,CAAca,SAAd,CAAwB,KAAKT,YAA7B;;IACAT,0CAAA,CAAc,KAAKS,YAAnB;EACA;;AAnDsB;;;mBAAXR,aAAWzc,sDAAAA,CAAAA,iEAAAA,GAAAA,sDAAAA,CAeduc,qDAfc,GAeNvc,sDAAAA,CAAAA,+DAAAA,GAAAA,sDAAAA,CAAAA,+DAAAA,GAAAA,sDAAAA,CAGRsc,mEAHQ,GAGOtc,sDAAAA,CAAAA,iFAAAA;AAAA;;;SAlBZyc;EAAWL,SAAXK,WAAW;EAAAJ,YAFX;;;;;;;;;;;;;;;;;;ACT0B;;AAKhC,MAAM,mBAAmB;IAHhC;QAIQ,aAAQ,GAAG,IAAI,iDAAe,CAAU,KAAK,CAAC,CAAC;KAKtD;IAHA,UAAU,CAAC,KAAc;QACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;;sFALW,mBAAmB;oHAAnB,mBAAmB,WAAnB,mBAAmB,mBAFnB,MAAM;;;;;;;;;;;;;;;;;;ACFnB;;;;GAIG;AAII,MAAM,aAAa;IACzB,QAAQ,CAAC,KAAK,EAAE,GAAG,IAAI;QACtB,IAAI,IAAI,CAAC,MAAM,EAAE;YAChB,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;SAC3B;aAAM;YACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACrB;IACF,CAAC;IAED,UAAU,CAAC,OAAO,EAAE,GAAG,IAAI;QAC1B,IAAI,IAAI,CAAC,MAAM,EAAE;YAChB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;SAC5B;aAAM;YACN,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACtB;IACF,CAAC;IAED,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI;QACpB,IAAI,IAAI,CAAC,MAAM,EAAE;YAChB,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SACzB;aAAM;YACN,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACnB;IACF,CAAC;;0EAvBW,aAAa;8GAAb,aAAa,WAAb,aAAa,mBAFb,MAAM;;;;;;;;;;;;;;;;;;;;ACFZ,MAAM,aAAa;IAGzB,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAEtC,UAAU;QACT,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClC,CAAC;;0EARW,aAAa;8GAAb,aAAa,WAAb,aAAa,mBAFb,MAAM;;;;;;;;;;;;;;;;ACJZ,MAAM,kBAAkB;IAC9B,YAAmB,KAAa,EACxB,OAAe,EACf,UAAkB;QAFP,UAAK,GAAL,KAAK,CAAQ;QACxB,YAAO,GAAP,OAAO,CAAQ;QACf,eAAU,GAAV,UAAU,CAAQ;IACtB,CAAC;CACL;;;;;;;;;;;;;;;;;;;;ACHmF;AACxB;;;AAKrD,MAAM,oBAAoB;IAChC,YAAoB,MAAiB;QAAjB,WAAM,GAAN,MAAM,CAAW;IAAG,CAAC;IAEzC,OAAO,CAAC,OAAe,EAAE,UAAmB,EAAE,KAAc;QAE3D,MAAM,UAAU,GAAG,IAAI,qEAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAEtE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4FAAsB,EAAE;YAC1D,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,UAAU;SAChB,CAAC,CAAC;QAEH,OAAO,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,CAAC;IAC5C,CAAC;;wFAbW,oBAAoB;qHAApB,oBAAoB,WAApB,oBAAoB,mBAFpB,MAAM;;;;;;;;;;;;;;;;;;ACDZ,MAAM,YAAY;;wEAAZ,YAAY;6GAAZ,YAAY,WAAZ,YAAY,mBAFZ,MAAM;;;;;;;;;;;;;;;;;;;;ACcZ,MAAM,wBAAwB;IAIlC,YAAoB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;QAH9B,cAAS,GAAG,2BAA2B,CAAC;IAIhD,CAAC;IAED,UAAU;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,SAAS;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED,SAAS,CAAC,MAAW;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;;gGAjBW,wBAAwB;yHAAxB,wBAAwB,WAAxB,wBAAwB,mBAFxB,MAAM;;;;;;;;;;;;;;;;;;;ACd8C;;;;AAIjE;;GAEG;AAKI,MAAM,wBAAwB;IACnC,YACiC,YAAqC,EAC5D,aAAuC;QADhB,iBAAY,GAAZ,YAAY,CAAyB;QAC5D,kBAAa,GAAb,aAAa,CAA0B;QAE/C,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;QAC/C,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC;QAE1D,aAAa,CAAC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC9C,aAAa,CAAC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACpD,aAAa,CAAC,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAC9D,6GAA6G;IAC/G,CAAC;;gGAZU,wBAAwB,yDAEzB,8DAAa;yHAFZ,wBAAwB,WAAxB,wBAAwB,mBAFvB,MAAM;;;;;;;;;;;;;;;;;;ACLb,MAAM,kBAAkB;;oFAAlB,kBAAkB;mHAAlB,kBAAkB,WAAlB,kBAAkB,mBAFlB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDnB,2BAA2B;AAC3B,IAAY,MAeX;AAfD,WAAY,MAAM;IACjB,+CAAU;IACV,mDAAY;IACZ,uDAAc;IACd,2DAAgB;IAChB,2CAAQ;IACR,yCAAO;IACP,mDAAY;IACZ,6DAAiB;IACjB,6DAAiB;IACjB,6DAAiB;IACjB,4DAAgB;IAChB,wCAAM;IACN,kDAAW;IACX,gFAA0B;AAC3B,CAAC,EAfW,MAAM,KAAN,MAAM,QAejB;AAED,2BAA2B;AACpB,MAAM,yCAAyC;CAGrD;AAED,2BAA2B;AACpB,MAAM,mBAAmB;CAI/B;AAED,6CAA6C;AACtC,MAAM,iBAAiB;CAE7B;AAED,2BAA2B;AACpB,MAAM,cAAc;CAE1B;AAED,2BAA2B;AACpB,MAAM,oBAAoB;IAAjC;QAIC,aAAQ,GAAY,KAAK,CAAC;IAC3B,CAAC;CAAA;AAED,2BAA2B;AACpB,MAAM,kBAAkB;CAK9B;AAEM,MAAM,cAAc;CAK1B;AAEM,MAAM,aAAa;CAUzB;AAEM,MAAM,oBAAoB;CAGhC;AAEM,MAAM,OAAO;CAMnB;AAEM,MAAM,qBAAqB;CAEjC;AAEM,MAAM,oBAAoB;CAQhC;AAEM,MAAM,yBAAyB;CAErC;AAEM,MAAM,mBAAmB;CAK/B;AAEM,MAAM,6BAA6B;CAKzC;AAEM,MAAM,4BAA4B;CAExC;AAEM,MAAM,2BAA2B;CAKvC;AAEM,MAAM,yBAAyB;CAErC;AAEM,MAAM,wBAAwB;CAQpC;AAEM,MAAM,sBAAsB;CAElC;AAEM,MAAM,qBAAqB;CAKjC;AAEM,MAAM,qBAAqB;CAEjC;AAEM,MAAM,YAAY;CAExB;AAEM,MAAM,UAAU;CActB;AAEM,MAAM,OAAO;CAKnB;AAEM,MAAM,SAAS;CAErB;AAEM,MAAM,OAAO;CAUnB;AAEM,MAAM,eAAe;CAM3B;AAEM,MAAM,sBAAsB;CAUlC;AAED,2BAA2B;AACpB,MAAM,kCAAkC;CAG9C;AAED,2BAA2B;AACpB,MAAM,0BAA0B;CAItC;AAED,2BAA2B;AACpB,MAAM,uBAAuB;CAInC;AAED,2BAA2B;AACpB,MAAM,qBAAqB;CAEjC;AAED,2BAA2B;AACpB,MAAM,2BAA2B;CAGvC;AAED,2BAA2B;AACpB,MAAM,sBAAsB;CAQlC;AAED,2BAA2B;AACpB,MAAM,oBAAoB;CAEhC;AAED,2BAA2B;AACpB,MAAM,sBAAsB;CAOlC;AAED,2BAA2B;AACpB,MAAM,yBAAyB;CAMrC;AAED,2BAA2B;AACpB,MAAM,oBAAoB;CAMhC;AAED,2BAA2B;AACpB,MAAM,kBAAkB;CAO9B;AAED,2BAA2B;AACpB,MAAM,qBAAqB;CAKjC;AAED,2BAA2B;AACpB,MAAe,WAAW;CAKhC;AAED,2BAA2B;AACpB,MAAM,kBAAkB;CAI9B;AAED,2BAA2B;AACpB,MAAM,yBAA0B,SAAQ,WAAW;CAczD;AAED,2BAA2B;AACpB,MAAe,yBAAyB;CAE9C;AAED,2BAA2B;AACpB,MAAM,cAAc;CAY1B;AAED,2BAA2B;AACpB,MAAM,wBAAwB;CAIpC;AAED,4BAA4B;AACrB,MAAM,qBAAsB,SAAQ,yBAAyB;CAyCnE;AAED,2BAA2B;AACpB,MAAM,gCAAgC;CAsB5C;AAED,2BAA2B;AACpB,MAAM,6BAA6B;CAgBzC;AAED,2BAA2B;AACpB,MAAM,kBAAkB;CAa9B;AAED,2BAA2B;AACpB,MAAM,iBAAiB;CAM7B;AAEM,MAAM,gBAAgB;CAG5B;AAED,2BAA2B;AACpB,MAAe,wBAAwB;CAY7C;AAED,2BAA2B;AACpB,MAAM,wBAAyB,SAAQ,wBAAwB;CACrE;AAED,2BAA2B;AACpB,MAAM,oBAAqB,SAAQ,wBAAwB;CAUjE;AAED,2BAA2B;AACpB,MAAe,mBAAmB;CAIxC;AAED,2BAA2B;AACpB,MAAM,mBAAoB,SAAQ,mBAAmB;CAG3D;AAED,2BAA2B;AACpB,MAAM,mBAAoB,SAAQ,mBAAmB;CAI3D;AAED,2BAA2B;AACpB,MAAe,qBAAqB;CAG1C;AAED,2BAA2B;AACpB,MAAM,qBAAsB,SAAQ,qBAAqB;CAO/D;AAED,2BAA2B;AACpB,MAAM,qBAAsB,SAAQ,qBAAqB;CAC/D;AAED,2BAA2B;AACpB,MAAM,yBAAyB;CAerC;AAED,2BAA2B;AACpB,MAAM,6BAA6B;CAOzC;AAED,2BAA2B;AACpB,MAAM,gBAAgB;CAuB5B;AAED,2BAA2B;AACpB,MAAM,sBAAsB;CAIlC;AAGD,2BAA2B;AACpB,MAAM,sBAAuB,SAAQ,WAAW;CAYtD;AAED,2BAA2B;AACpB,MAAM,8BAA8B;CAO1C;AAED,2BAA2B;AACpB,MAAe,kBAAmB,SAAQ,yBAAyB;CASzE;AAED,2BAA2B;AACpB,MAAM,yBAA0B,SAAQ,kBAAkB;CAMhE;AAED,2BAA2B;AACpB,MAAM,uBAAwB,SAAQ,kBAAkB;CAK9D;AAED,2BAA2B;AACpB,MAAM,0BAA2B,SAAQ,kBAAkB;CA2DjE;AAED,2BAA2B;AACpB,MAAM,oBAAoB;CAiChC;AAED,2BAA2B;AACpB,MAAM,uBAAuB;CAEnC;AAED,2BAA2B;AACpB,MAAM,qBAAqB;CAGjC;AAED,2BAA2B;AACpB,MAAM,uBAAuB;CAuBnC;AAED,2BAA2B;AACpB,MAAM,eAAe;CAY3B;AAED,2BAA2B;AACpB,MAAM,oCAAoC;CAGhD;AAED,2BAA2B;AACpB,MAAM,eAAe;CAO3B;AAED,2BAA2B;AACpB,MAAM,yBAAyB;CAYrC;AAED,2BAA2B;AAC3B,IAAY,eAIX;AAJD,WAAY,eAAe;IAC1B,6DAAQ;IACR,2DAAO;IACP,uDAAK;AACN,CAAC,EAJW,eAAe,KAAf,eAAe,QAI1B;AAED,2BAA2B;AAC3B,IAAY,QAIX;AAJD,WAAY,QAAQ;IACnB,6CAAO;IACP,qCAAG;IACH,mCAAE;AACH,CAAC,EAJW,QAAQ,KAAR,QAAQ,QAInB;AAED,2BAA2B;AACpB,MAAM,eAAe;CAM3B;AAED,2BAA2B;AACpB,MAAM,oBAAoB;CAGhC;AAED,2BAA2B;AACpB,MAAM,cAAc;CA0C1B;AAED,2BAA2B;AACpB,MAAM,qBAAqB;CAKjC;AAGD,2BAA2B;AACpB,MAAM,+BAA+B;CAK3C;AAED,2BAA2B;AACpB,MAAM,wCAAwC;CAIpD;AAED,2BAA2B;AACpB,MAAM,qCAAqC;CAIjD;AAED,2BAA2B;AACpB,MAAM,eAAe;CAQ3B;AAED,2BAA2B;AACpB,MAAM,mBAAmB;CAM/B;AAED,2BAA2B;AACpB,MAAM,mBAAmB;CAK/B;AAED,2BAA2B;AACpB,MAAM,4BAA4B;CAIxC;AAGD,2BAA2B;AACpB,MAAM,cAAc;CAS1B;AAED,2BAA2B;AACpB,MAAM,qBAAqB;CAOjC;AAED,2BAA2B;AACpB,MAAe,sBAAsB;CAC3C;AAED,2BAA2B;AACpB,MAAM,gCAAiC,SAAQ,WAAW;CAGhE;AAED,2BAA2B;AACpB,MAAM,mCAAmC;CAe/C;AAED,2BAA2B;AAC3B,IAAY,mBAKX;AALD,WAAY,mBAAmB;IAC9B,2GAA2B;IAC3B,yFAAkB;IAClB,uFAAiB;IACjB,+EAAa;AACd,CAAC,EALW,mBAAmB,KAAnB,mBAAmB,QAK9B;AAED,2BAA2B;AACpB,MAAM,eAAe;CAI3B;AAED,2BAA2B;AACpB,MAAM,qBAAqB;CAIjC;AAED,2BAA2B;AACpB,MAAM,yBAAyB;CAGrC;AAED,2BAA2B;AACpB,MAAM,qBAAsB,SAAQ,yBAAyB;CAenE;AAED,2BAA2B;AACpB,MAAM,cAAe,SAAQ,yBAAyB;CAS5D;AAED,2BAA2B;AACpB,MAAM,eAAgB,SAAQ,yBAAyB;CAK7D;AAED,2BAA2B;AAC3B,IAAY,QAIX;AAJD,WAAY,QAAQ;IACnB,2DAAc;IACd,6CAAO;IACP,+CAAQ;AACT,CAAC,EAJW,QAAQ,KAAR,QAAQ,QAInB;AAED,2BAA2B;AACpB,MAAM,SAAS;CAGrB;AAED,2BAA2B;AACpB,MAAM,uBAAwB,SAAQ,SAAS;CAIrD;AAED,2BAA2B;AACpB,MAAM,qBAAsB,SAAQ,SAAS;CAMnD;AAED,2BAA2B;AACpB,MAAM,qBAAsB,SAAQ,SAAS;CAInD;AAED,2BAA2B;AACpB,MAAM,gBAAiB,SAAQ,SAAS;CAK9C;AAED,2BAA2B;AACpB,MAAM,0BAA2B,SAAQ,gBAAgB;CAE/D;AAED,2BAA2B;AACpB,MAAM,6BAA8B,SAAQ,SAAS;CAC3D;AAED,2BAA2B;AACpB,MAAM,qBAAsB,SAAQ,SAAS;CAEnD;AAED,2BAA2B;AACpB,MAAM,kBAAmB,SAAQ,SAAS;CAChD;AAED,2BAA2B;AACpB,MAAM,iBAAkB,SAAQ,SAAS;CAC/C;AAED,2BAA2B;AACpB,MAAM,cAAe,SAAQ,SAAS;CAG5C;AAED,2BAA2B;AACpB,MAAM,mBAAoB,SAAQ,SAAS;CACjD;AAED,2BAA2B;AACpB,MAAM,gBAAiB,SAAQ,SAAS;CAI9C;AAED,2BAA2B;AACpB,MAAM,oBAAqB,SAAQ,SAAS;CAElD;AAED,2BAA2B;AACpB,MAAM,gBAAiB,SAAQ,SAAS;CAG9C;AAED,2BAA2B;AACpB,MAAM,iBAAkB,SAAQ,SAAS;CAM/C;AAED,2BAA2B;AACpB,MAAM,iBAAkB,SAAQ,SAAS;CAC/C;AAED,2BAA2B;AACpB,MAAM,qBAAsB,SAAQ,SAAS;CACnD;AAEM,MAAM,yBAAyB;CAErC;AAEM,MAAM,wBAAyB,SAAQ,SAAS;CACtD;AAEM,MAAM,kCAAkC;CAE9C;AAEM,MAAM,iCAAkC,SAAQ,SAAS;CAC/D;AAED,2BAA2B;AACpB,MAAM,sBAAsB;CAElC;AAED,2BAA2B;AACpB,MAAM,yBAAyB;CAUrC;AAED,2BAA2B;AACpB,MAAM,2BAA2B;CAGvC;AAED,2BAA2B;AACpB,MAAM,eAAe;CAE3B;AAED,2BAA2B;AACpB,MAAM,kBAAkB;CAM9B;AAED,2BAA2B;AACpB,MAAM,oBAAoB;CAGhC;AAED,2BAA2B;AACpB,MAAM,eAAgB,SAAQ,SAAS;CAG7C;AAED,2BAA2B;AACpB,MAAM,oBAAqB,SAAQ,SAAS;CAGlD;AAED,2BAA2B;AACpB,MAAM,uBAAwB,SAAQ,SAAS;CAGrD;AAED,2BAA2B;AACpB,MAAM,yBAA0B,SAAQ,SAAS;CAEvD;AAED,2BAA2B;AACpB,MAAM,8BAA+B,SAAQ,WAAW;CAG9D;AAED,2BAA2B;AACpB,MAAM,0BAA2B,SAAQ,yBAAyB;CA2BxE;AAED,2BAA2B;AACpB,MAAM,8BAA8B;CAiB1C;AAED,2BAA2B;AACpB,MAAe,iBAAiB;CAKtC;AAED,2BAA2B;AACpB,MAAM,aAAiB,SAAQ,iBAAiB;CAEtD;AAED,2BAA2B;AAC3B,IAAY,UAIX;AAJD,WAAY,UAAU;IACrB,uCAAE;IACF,6CAAK;IACL,mDAAQ;AACT,CAAC,EAJW,UAAU,KAAV,UAAU,QAIrB;AAED,2BAA2B;AACpB,MAAe,sBAAsB;CAK3C;AAED,2BAA2B;AACpB,MAAM,sBAAuB,SAAQ,sBAAsB;CACjE;AAED,2BAA2B;AACpB,MAAM,sBAAuB,SAAQ,sBAAsB;CAOjE;AAED,2BAA2B;AACpB,MAAM,yBAAyB;CAMrC;AAED,2BAA2B;AACpB,MAAM,qBAAqB;CAGjC;AAED,2BAA2B;AACpB,MAAM,mBAAmB;CAS/B;AAED,2BAA2B;AACpB,MAAM,kBAAkB;CAS9B;AAED,2BAA2B;AACpB,MAAM,oBAAoB;CAKhC;AAED,2BAA2B;AACpB,MAAM,YAAY;CAaxB;AAED,2BAA2B;AACpB,MAAe,sBAAsB;CAa3C;AAED,2BAA2B;AACpB,MAAM,sBAAuB,SAAQ,sBAAsB;CACjE;AAED,2BAA2B;AACpB,MAAM,sBAAuB,SAAQ,sBAAsB;CAKjE;AAED,2BAA2B;AACpB,MAAM,oBAAoB;CAgDhC;AAED,2BAA2B;AACpB,MAAM,aAAa;CAkBzB;AAEM,MAAM,gBAAgB;CAG5B;AAEM,MAAM,eAAe;CAgB3B;AAEM,MAAM,mBAAmB;CAI/B;AAED,2BAA2B;AACpB,MAAM,iBAAiB;CAG7B;AAED,2BAA2B;AACpB,MAAM,eAAe;CAG3B;AAED,2BAA2B;AACpB,MAAM,8BAA8B;CAS1C;AAED,2BAA2B;AACpB,MAAM,kBAAkB;CAM9B;AAED,2BAA2B;AAC3B,IAAY,eAMX;AAND,WAAY,eAAe;IAC1B,iDAAE;IACF,iFAAkB;IAClB,2EAAe;IACf,iFAAkB;IAClB,mEAAW;AACZ,CAAC,EANW,eAAe,KAAf,eAAe,QAM1B;AAED,2BAA2B;AACpB,MAAM,0BAA2B,SAAQ,sBAAsB;CAcrE;AAED,2BAA2B;AACpB,MAAM,kBAAkB;CAG9B;AAED,2BAA2B;AACpB,MAAM,cAAc;CAG1B;AAED,2BAA2B;AACpB,MAAM,cAAc;CAG1B;AAED,2BAA2B;AACpB,MAAM,kBAAkB;CAG9B;;;;;;;;;;;;;;;;;;ACnpDD;;;GAGG;AAII,MAAM,+BAA+B;IAK3C,iBAAiB;QAChB,cAAc,CAAC,UAAU,CAAC,+BAA+B,CAAC,yBAAyB,CAAC,CAAC;QACrF,cAAc,CAAC,UAAU,CAAC,+BAA+B,CAAC,yBAAyB,CAAC,CAAC;QACrF,cAAc,CAAC,UAAU,CAAC,+BAA+B,CAAC,+BAA+B,CAAC,CAAC;IAC5F,CAAC;IAED,OAAO,CAAC,GAAW;QAClB,OAAO,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,CAAC,GAAW,EAAE,KAAU;QAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,IAAI,EAAE;YACvD,KAAK,GAAW,KAAM,CAAC,MAAM,EAAE,CAAC;SAChC;QACD,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;;AAnBa,yDAAyB,GAAG,eAAgB;AAC5C,yDAAyB,GAAG,oBAAqB;AACjD,+DAA+B,GAAG,6BAA8B;8GAHlE,+BAA+B;gIAA/B,+BAA+B,WAA/B,+BAA+B,mBAF/B,MAAM;;;;;;;;;;;;;;;;;;;;;;ACN0B;;;;;AAM7C;;;;GAIG;AAEI,MAAM,cAAc;IAE1B,YACS,IAAiB,EACjB,MAAqB,EACrB,YAAkC;QAFlC,SAAI,GAAJ,IAAI,CAAa;QACjB,WAAM,GAAN,MAAM,CAAe;QACrB,iBAAY,GAAZ,YAAY,CAAsB;QAIjC,oBAAe,GAAG,CAAC,UAAU,EAAE,EAAE;YAC1C,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACpC,IAAI,CAAC,aAAa,GAAG,IAAI,oEAA4B,EAAE;iBAChD,OAAO,CAAC,UAAU;kBAChB,oBAAoB,GAAG,UAAU,CAAC,gBAAgB;kBAClD,YAAY,GAAG,UAAU,CAAC,QAAQ,EAAE;gBACtC,eAAe,EAAE,IAAI;gBACrB,SAAS,EAAE,4EAAoC;gBAC/C,eAAe,EAAE,KAAK;aACpB,CAAC;iBACH,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,aAAa;iBAChB,KAAK,EAAE;iBACP,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;iBAC7C,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,mCAAmC,GAAG,GAAG,CAAC,CAAC;QACpE,CAAC;QAEJ,oBAAoB;QACb,mBAAc,GAAG,GAAG,EAAE;YAC5B,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC3B,CAAC;QAED,mCAAmC;QAC5B,8BAAyB,GAAG,GAAG,EAAE;YACvC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,IAAI,EAAE,EAAE;gBAChD,IAAI,IAAI,KAAK,cAAc,EAAC;oBAC3B,IAAI,CAAC,YAAY,CAAC,yBAAyB,EAAE,CAAC;iBAC9C;YACF,CAAC,CAAC,CAAC;QACF,CAAC;IAjC0C,CAAC;;4EALlC,cAAc;+GAAd,cAAc,WAAd,cAAc;;;;;;;;;;;;;;;;;;;;;ACb4B;AACtB;AAGgE;AAM7B;;AAG7D,MAAM,iBAAiB;IAD9B;QAGkB,mBAAc,GAAG,cAAc,CAAC;QAChC,kBAAa,GAAG,cAAc,CAAC;QAC/B,sBAAiB,GAAG,kBAAkB,CAAC;QAEvC,uBAAkB,GAAG,yBAAyB,CAAC;QAC/C,oBAAe,GAAG,sBAAsB,CAAC;QACzC,sBAAiB,GAAG,wBAAwB,CAAC;QAE7C,sBAAiB,GAAG,uBAAuB,CAAC;QAC5C,oBAAe,GAAG,qBAAqB,CAAC;QAExC,iCAA4B,GAAG,IAAI,GAAG,EAAE,GAAG,oGAAY,CAAC;KA6lBzE;IA3lBA,gBAAgB,CACf,GAAe,EACf,IAA0B,EAC1B,SAA4B,EAC5B,SAAqB,EACrB,YAAiC,EACjC,aAAsB,KAAK,EAC3B,oBAAyB,GAAG,EAAE,CAAC,KAAK;QAEpC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAE3B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EACpC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;QAEjE,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QACzD,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAChD,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC9C,IAAI,UAAU,EAAE;YACf,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;SACnE;QACD,wCAAwC;QACxC,6CAA6C;QAC7C,sDAAsD;QACtD,mDAAmD;QAEnD,MAAM,UAAU,GAAkB,GAAG,CAAC,aAAa,CAAC,gBAAgB,CACnE;;;mDAGgD,CAChD,CAAC;QACF,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,gEAAU,CAAC,CAAC,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,WAAW,CACV,GAAe,EACf,UAAkB,EAClB,KAA2B,EAC3B,GAAyB;QAEzB,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACjE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC7B,8DAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACxC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,gBAAgB,CACf,GAAe,EACf,UAAkB,EAClB,KAA2B,EAC3B,GAAyB;QAEzB,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACjE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC7B,8DAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACpC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,kBAAkB,CACjB,GAAe,EACf,UAAkB,EAClB,KAA2B,EAC3B,GAAyB;QAEzB,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAC9H,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,YAAY,CACX,GAAe,EACf,UAAkB,EAClB,QAA8B;QAE9B,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACzE,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACnC,8DAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACrC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,cAAc,CACb,GAAe,EACf,UAAkB,EAClB,QAA8B;QAE9B,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAC/G,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACnC,8DAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACpC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,kBAAkB,CAAC,GAAe;QACjC,uCAAuC;QACvC,2DAA2D;QAC3D,sCAAsC;QAGtC,oBAAoB;QACpB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAc,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,EACzG,MAAM,GAAG,KAAK,CAAC,IAAI,CAAc,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,EAChG,OAAO,GAAkB,EAAE,CAAC;QAE7B,IAAI,QAAQ,EAAE;YACb,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;SAC1B;QAED,IAAI,MAAM,EAAE;YACX,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;SACxB;QAED,UAAU,CACT,GAAG,EAAE;YACJ,MACC,YAAY,GAAG,KAAK,CAAC,IAAI,CAAc,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,+BAA+B,CAAC,CAAC,EAC3G,kBAAkB,GAAG,YAAY,CAAC,MAAM,CACvC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;gBACb,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC1D,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;gBACjB,OAAO,GAAG,CAAC;YACZ,CAAC,EACD,EAAoC,CACpC,EACD,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,CAAC;YAExD,IAAI,aAAa,CAAC,MAAM,EAAE;gBACzB,MACC,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EACtC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAC3D,KAAK,GAAG,kBAAkB,CAAC,SAAS,CAAC,EACrC,GAAG,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;gBAEnC,iEAAW,CACV,OAAO,EACP,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,eAAe,CAAC,CAC9C,CAAC;gBAEF,8DAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAC1C,8DAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;aACtC;QACF,CAAC,EACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,YAAkC;QAChD,MACC,EAAE,GAAG,mCAAM,CAAC,YAAY,CAAC,EACzB,QAAQ,GAAG,EAAE,CAAC,SAAS,EAAE,EACzB,OAAO,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAEtE,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,UAAU,CAAC,IAAyB;QACnC,IAAI,IAAI,CAAC,WAAW,IAAI,WAAW,EAAE;YACpC,IAAI,CAAC,OAAO,CAAC,WAAW,CACvB,mEAAa,CAAC,KAAK,EAAE;gBACpB,SAAS,EAAE;;;;;;;;;;;;;;;;;OAiBT;gBACF,SAAS,EAAE,cAAc;aACzB,CAAC,CACF,CAAC;SACF;IACF,CAAC;IAEO,IAAI,CAAC,eAAoC,EAAE;QAKlD,OAAO,YAAY,CAAC,MAAM,CACzB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YAEV,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE;gBACtD,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACxB;iBAAM,IAAI,CAAC,CAAC,UAAU,EAAE;gBACxB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACjB;iBAAM,IAAI,CAAC,CAAC,WAAW,EAAE;gBACzB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAClB;YAED,OAAO,GAAG,CAAC;QACZ,CAAC,EACD;YACC,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,EAAE;SACT,CACD;IACF,CAAC;IAEO,eAAe,CAAC,GAAe,EAAE,SAA4B,EAAE,QAAmB,EAAE,SAAqB;QAChH,wEAAwE;QACxE,+CAA+C;QAC/C,MAAM,uBAAuB,GAAG,SAAS,CAAC,MAAM,CAC/C,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE;YACjB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;YAClB,OAAO,GAAG,CAAC;QACZ,CAAC,EACD,EAAE,CACF,CAAC;QAEF,KAAK,IAAI,UAAU,IAAI,QAAQ,EAAE;YAChC,IACC,IAAI,GAAG,mCAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EACjD,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;YAE5B,KAAK,MAAM,QAAQ,IAAI,GAAG,EAAE;gBAC3B,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC,EAAE;oBACjC,IAAI,QAAQ,IAAI,uBAAuB,EAAE;wBACxC,SAAS,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC;qBACxF;iBACD;aACD;SACD;QAED,MAAM,iBAAiB,GAAkB,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,4BAA4B,CAAC,CAAC,CAAC,YAAY;QACvH,MAAM,mBAAmB,GAAkB,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,kCAAkC,CAAC,CAAC,CAAC,cAAc;QAEjI,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,iBAAiB,EAAE,GAAG,mBAAmB,CAAC,CAAC,CAAC;IACnE,CAAC;IAEO,YAAY,CAAC,GAAe,EAAE,KAA0B,EAAE,SAAqB;QACtF,MACC,wBAAwB,GAAG,KAAK,CAAC,IAAI,CAAc,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;aACrG,MAAM,CACN,CAAC,GAAG,EAAE,CAAc,EAAE,EAAE;YACvB,MACC,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,KAAK,EACxC,aAAa,GAAG,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,KAAK,EACtD,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC;YAE3C,IAAI,aAAa,IAAI,SAAS,EAAE;gBAC/B,IAAI,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC,EAAE;oBACzB,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE;iBACpB;gBACD,GAAG,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aAC5B;YAED,OAAO,GAAG,CAAC;QACZ,CAAC,EACD,EAAkE,CAClE,EACF,aAAa,GAAG,KAAK;aACnB,MAAM,CACN,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YAEV,MACC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAC9D,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAC1D,UAAU,GAAG,CAAC,CAAC,UAAU;YAE1B;;;;;eAKG;YACH,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,4BAA4B,EAAE;gBACxF,IAAI,UAAU,IAAI,wBAAwB,IAAI,CAAC,IAAI,wBAAwB,CAAC,UAAU,CAAC,EAAE;oBACxF,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAClD;aACD;YAED,OAAO,GAAG,CAAC;QACZ,CAAC,EACD,EAAmB,CACnB,CAAC;QAEJ,8DAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAChD,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;IAClC,CAAC;IAEO,aAAa,CAAC,GAAe,EAAE,KAA0B,EAAE,SAAqB;QACvF,MACC,iBAAiB,GAAG,SAAS,CAAC,MAAM,CACnC,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE;YACjB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;YAClB,OAAO,GAAG,CAAC;QACZ,CAAC,EACD,EAA8B,CAC9B,EACD,iBAAiB,GAAG,KAAK,CAAC,MAAM,CAC/B,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACV,MACC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAC9D,aAAa,GAAG,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAC,EAC/C,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,4BAA4B,KAAK,CAAC,OAAO,EAAE,wBAAwB,aAAa,IAAI,CAAC,CAAC,CAAC;YAEhJ,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;YACrB,OAAO,GAAG,CAAC;QACZ,CAAC,EACD,EAAE,CACF,CAAC;QAEH,8DAAQ,CAAC,iBAAiB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACjD,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;IACtC,CAAC;IAEO,KAAK,CAAC,GAAe,EAAE,SAA4B;QAC1D,SAAS,CAAC,cAAc,EAAE,CAAC;QAE3B,MAAM,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,cAAc,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAChH,iEAAW,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC3E,CAAC;IAEO,YAAY,CAAC,IAA0B,EAAE,SAAqB,EAAE,WAAgC;QACvG,yFAAyF;QACzF,2CAA2C;QAC3C,MACC,QAAQ,GAAc,EAAE,EAAE,0BAA0B;QACpD,eAAe,GAA6B,EAAE,EAAE,qBAAqB;QAErE,SAAS,GAAG,mCAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EACxC,OAAO,GAAG,mCAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,EACpD,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,EACvC,aAAa,GAAG,SAAS,CAAC,MAAM,CAC/B,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YACd,OAAO,GAAG,CAAC;QACZ,CAAC,EACD,EAAE,CACF;QAEF,wBAAwB;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,EAAE,EAAE;YACjC,IAAI,KAAK,GAAG,mCAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC5E,IAAI,CAAC,CAAC,KAAK,IAAI,eAAe,CAAC,EAAE;gBAChC,eAAe,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;aAC9B;SACD;QAGD,IAAI,WAAW,EAAE;YAChB,IAAI,KAAK,GAAsD,WAAW,CAAC,MAAM,CAChF,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;gBACV,MACC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,EACnC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAC/B,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAC3B,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;gBAErC,IAAI,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE;oBACnB,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;iBACf;gBAED,IAAI,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE;oBAC/B,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;iBAC3B;gBAGD,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;gBAEvD,OAAO,GAAG,CAAC;YACZ,CAAC,EACD,EAAE,CACF,CAAC;YACF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACzB,IAAI,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;gBAE/B,IAAI,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC,EAAE;oBACxB,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;iBACpB;gBAED,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE;oBACpC,IAAI,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;oBAElC,IAAI,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE;wBAClC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;qBAC9B;oBAED,MAAM,GAAG,GAAG,EAAE,CAAC;oBACf,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;wBACrB,IAAI,GAAG,CAAC,KAAK,IAAI,OAAO,EAAE;4BACzB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;yBACnB;wBACD,IAAI,GAAG,CAAC,GAAG,IAAI,OAAO,EAAE;4BACvB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;yBACjB;qBACD;oBAED,sCAAsC;oBACtC,+CAA+C;oBAC/C,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC3C,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;qBACrB;oBAED,uDAAuD;oBACvD,+DAA+D;oBAE/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,GAAG,EAAE;wBAClD,MACC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EACzB,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,EAEhB,YAAY,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;wBAE/B,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;qBAC5C;iBACD;aAED;YAED,4EAA4E;YAC5E,KAAK,IAAI,eAAe,IAAI,eAAe,EAAE;gBAC5C,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE;oBACrC,IAAI,CAAC,CAAC,eAAe,IAAI,QAAQ,CAAC,EAAE;wBACnC,QAAQ,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC;qBAC/B;oBACD,IAAI,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,eAAe,CAAC,CAAC,EAAE;wBAC7C,QAAQ,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;qBACzE;iBACD;aACD;SACD;QACD,OAAO,QAAQ,CAAC;IACjB,CAAC;IAEO,YAAY,CAAC,GAAe,EAAE,WAAgC,EAAE,QAAoB,EAAE,oBAAyB,GAAG,EAAE,CAAC,KAAK;QACjI,MACC,kBAAkB,GAAG,QAAQ,CAAC,MAAM,CACnC,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE;YACjB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;YAClB,OAAO,GAAG,CAAC;QACZ,CAAC,EACD,EAAE,CACF,EACD,uBAAuB,GAAG,WAAW,CAAC,MAAM,CAC3C,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACV,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,UAAU,IAAI,kBAAkB,EAAE;gBACnD,2EAA2E;gBAC3E,OAAO;gBACP,0CAA0C;gBAC1C,+BAA+B;gBAC/B,MACC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,EAChF,aAAa,GAAG,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,EAChD,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAChF,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;gBAErD,IAAI,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,EAAE;oBACpB,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;iBAChB;gBAED,IAAI,CAAC,CAAC,aAAa,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;oBACnC,GAAG,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC;iBAC1C;qBAAM;oBACN,GAAG,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC;iBACtE;gBAED,GAAG,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,GAAG,cAAc,CAAC;aACvE;YACD,OAAO,GAAG,CAAC;QACZ,CAAC,EACD,EAAE,CACF,EACD,WAAW,GAAG;YACb,MAAM,EAAE,EAAE;YACV,SAAS,EAAE,EAAE;YACb,QAAQ,EAAE,EAAE;SACZ;QACF;;UAEE;QACF,KAAK,MAAM,IAAI,IAAI,uBAAuB,EAAE;YAC3C,KAAK,MAAM,aAAa,IAAI,uBAAuB,CAAC,IAAI,CAAC,EAAE;gBAC1D,MAAM,QAAQ,GAAG,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,8BAA8B,IAAI,wBAAwB,aAAa,IAAI,CAAC,CAAC;gBAEjI,wCAAwC;gBACxC,kBAAkB;gBAClB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE;oBACnE,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;iBACvC;qBAAM;oBACN,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;iBACpC;gBAED,qDAAqD;gBACrD,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE;oBACnE,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;iBACvC;aACD;SACD;QAED,8DAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACvD,8DAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACnD,8DAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC1D,CAAC;IAEO,YAAY,CAAC,QAAuB;QAC3C,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACpB,MAAM,IAAI,GAAG,mCAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;iBACnC,MAAM,CACN,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;gBACV,QAAQ,CAAC,EAAE;oBACV,KAAK,IAAI,CAAC,aAAa;wBACtB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;wBACtB,MAAM;oBACP,KAAK,IAAI,CAAC,iBAAiB;wBAC1B,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;wBAC5B,MAAM;oBACP,KAAK,IAAI,CAAC,cAAc;wBACvB,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;wBACvB,MAAM;iBACP;gBACD,OAAO,GAAG,CAAC;YACZ,CAAC,EACD,EAAc,CACd,CAAC;YACH,gEAAU,CAAC,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,+BAA+B,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC;QACvI,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,gBAAgB,CACvB,GAAe,EACf,UAAkB,EAClB,KAA2B,EAC3B,GAAyB,EACzB,UAGI,EAAE,EACN,4BAAqC,KAAK;QAE1C,MACC,EACC,YAAY,GAAG,EAAE,EACjB,SAAS,GAAG,EAAE,EACd,GAAG,OAAO,EACX,SAAS,GAAG,eAAe,EAC3B,aAAa,GAAG,sBAAsB,UAAU,IAAI,EACpD,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC;QAElD,IAAI,QAAQ,GAAG,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,EAAE,CAAC;QAC3D,IAAI,SAAS,CAAC,MAAM,EAAE;YACrB,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,IAAI,CAAC,GAAG,aAAa,GAAG,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;SAC1F;QAED,MACC,sBAAsB,GAAG,KAAK,CAAC,IAAI,CAAc,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;aAC5F,MAAM,CACN,CAAC,GAAG,EAAE,CAAc,EAAE,EAAE;YACvB,MAAM,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC;YAC/C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChB,OAAO,GAAG,CAAC;QACZ,CAAC,EACD,EAAqC,CACrC,EACF,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,mCAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,mCAAM,CAAC,GAAG,CAAC,EAAE,CAAC;aAClD,MAAM,CACN,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YAEV,MACC,KAAK,GAAG,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EACtH,GAAG,GAAG,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAElH;;;;;eAKG;YACH,IAAI,KAAK,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,OAAO,EAAE,EAAE;gBACtC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,4BAA4B,EAAE;oBACxF,IAAI,CAAC,IAAI,sBAAsB,EAAE;wBAChC,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;qBACpC;iBACD;aACD;iBAAM;gBACN,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;aAClD;YAED,OAAO,GAAG,CAAC;QACZ,CAAC,EACD,EAAmB,CACnB,CAAC;QAEJ,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC;QAC5B,OAAO,KAAK,CAAC;IACd,CAAC;IAEO,gBAAgB,CAAC,KAAoB,EAAE,iBAA0B,KAAK;QAC7E,IAAI,cAAc,EAAE;YACnB,iEAAW,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;SAC1C;aAAM;YACN,iEAAW,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;SACjE;IACF,CAAC;;kFAzmBW,iBAAiB;kHAAjB,iBAAiB,WAAjB,iBAAiB;;;;;;;;;;;;;;;;;;;;;;ACZF;AACK;;AAK1B,MAAM,YAAY;IACxB,IAAI,CAAC,EAAU,EAAE,EAAU,EAAE,UAAmB,KAAK;QACpD,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE;YACpB,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;gBAC7B,SAAS;aACT;YAED,IAAI,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE;gBACjC,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;oBAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;iBAClB;qBAAM;oBACN,IAAI,EAAE,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE;wBACzD,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;4BAC9C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;yBACxB;qBACD;yBAAM;wBACN,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE;4BAC1B,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;yBAClB;6BAAM;4BACN,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;4BAChD,IAAI,SAAS,EAAE;gCACd,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;6BACzB;yBACD;qBACD;iBACD;aACD;iBAAM,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE;gBACjC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;aACxB;SACD;QAED,IAAI,2CAAS,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;YAC1B,IAAI,CAAC,OAAO,EAAE;gBACb,uEAAuE;gBACvE,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;aAC/B;YACD,OAAO,SAAS,CAAC;SACjB;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAED,UAAU,CAAC,IAAU;QACpB,IAAI,CAAC,IAAI,EAAE;YACV,OAAO,EAAE,CAAC;SACV;QAED,OAAO,mCAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC3C,CAAC;IAED,UAAU,CAAC,IAAU;QACpB,IAAI,CAAC,IAAI,EAAE;YACV,OAAO,EAAE,CAAC;SACV;QAED,OAAO,mCAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;OAMG;IACH,iBAAiB,CAAC,MAAW,EAAE,MAAW;QACzC,IAAI,CAAC,GAAG,MAAM,CAAC;QACf,OAAO,CAAC,EAAE;YACT,IAAI,CAAC,KAAK,MAAM,EAAE;gBACjB,MAAM;aACN;YAED,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC;SACpB;QACD,OAAO,CAAC,CAAC,CAAC,CAAC;IACZ,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,KAAa,EAAE,IAA0C;QACjE,IAAI,CAAC,KAAK,EAAE;YACX,OAAO,KAAK,CAAC;SACb;QACD,IAAI,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC/C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC1C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAE1C,IAAI,IAAI,IAAI,IAAI,CAAC,sBAAsB,EAAE;YACxC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;SACnD;QAED,OAAO,MAAM,CAAC;IACf,CAAC;IAED,mBAAmB,CAAC,MAAc;QACjC,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;QAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC7B,KAAK,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SACvC;QACD,OAAO,KAAK,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,gBAAgB,CAAC,IAAY;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACb,CAAC;;wEAhHW,YAAY;6GAAZ,YAAY,WAAZ,YAAY,mBAFZ,MAAM;AAqHZ,MAAM,IAAI;IAChB,MAAM,CAAC,OAAO;QACb,OAAO,sCAAsC,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC;YACzE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAC/B,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;YACrC,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACJ,CAAC;CACD;;;;;;;;;;;;;;;;;;;;;;;;ACjIwE;;;;;;;;;;;ICEvE,qEAAiC;IAAA,uDAAS;IAAA,4DAAK;;;IAAd,0DAAS;IAAT,uEAAS;;;;IAG5C,4FAAiF;IAAnB,0UAAU,wEAAO,KAAC;IAAE,4DAAyB;;IAA9D,yEAAgB;;;;IAC7D,yEAA8E;IAC7E,qEAAoB;IACpB,4EAAuD;IAApB,qSAAS,0EAAS,KAAC;IAAC,uDAAoB;IAAA,4DAAS;IACpF,iFAAiE;IAAnB,qSAAS,yEAAQ,KAAC;IAAC,uDAAmB;IAAA,4DAAS;;;IADtC,0DAAoB;IAApB,sFAAoB;IACV,0DAAmB;IAAnB,qFAAmB;;;ADD9E,MAAM,uBAAuB;IAUnC,YACQ,SAAgD,EAEhD,IAAqF;QAFrF,cAAS,GAAT,SAAS,CAAuC;QAEhD,SAAI,GAAJ,IAAI,CAAiF;QAL7F,kBAAa,GAAG,QAAQ,CAAC;IAMrB,CAAC;IAEL,QAAQ;QACP,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;QAEzC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACtB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;SAC1B;aAAM;YACN,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,QAAQ,CAAC,MAAM,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;SACxG;IACF,CAAC;IAED,eAAe;QACd,IAAI,IAAI,CAAC,YAAY,EAAE;YACtB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;SAC1B;IACF,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED,OAAO;QACN,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM;QACL,IAAI,CAAC,KAAK,EAAE,CAAC;IACd,CAAC;;8FA7CW,uBAAuB,uMAY1B,qEAAe;qHAZZ,uBAAuB;;;;;;QCTpC,uFAAiE;QACjE,yEAAwB;QAEtB,iHAA+C;QAChD,4DAAK;QAEN,yJAA2G;QAC3G,mHAIM;;QAXkB,4EAAe;QAElC,0DAA6C;QAA7C,qKAA6C;QAC5B,0DAAW;QAAX,iFAAW;QAGR,0DAAkB;QAAlB,kFAAkB;QACrC,0DAAiB;QAAjB,iFAAiB;;;;;;;;;;;;;;;;;;;;;;;ACNe;AAE2D;AAEtD;;;;AAKpC,MAAM,eAAe;IAC3B,YAAoB,SAAoB,EAAU,KAAoB;QAAlD,cAAS,GAAT,SAAS,CAAW;QAAU,UAAK,GAAL,KAAK,CAAe;IAAI,CAAC;IAE3E,WAAW;QACV,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YACjC,OAAO,OAAO,CAAC;SACf;QAED,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,YAAY,CAAC,KAAa,EAAE,QAAkB;QAC7C,OAAO,IAAI,CAAC,SAAS;aACnB,IAAI,CAAC,2GAAuB,EAAE;YAC9B,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE;YACzB,IAAI,EAAE;gBACL,KAAK;gBACL,QAAQ;aACR;SACD,CAAC;aACD,WAAW,EAAE,CAAC;IACjB,CAAC;IAED,uBAAuB,CAAC,KAAa,EAAE,QAAkB,EAAE,QAAmB;QAC7E,wFAAwF;QACxF,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE;YAChC,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,IAAI,CAC5C,yDAAS,CAAC,CAAC,MAAM,EAAE,EAAE;gBACpB,IAAI,MAAM,KAAK,IAAI,EAAE;oBACpB,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;wBACrB,OAAO,wCAAE,CAAC,IAAI,CAAC,CAAC;qBAChB;oBAED,OAAO,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;iBACrD;gBAED,OAAO,wCAAE,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CACF,CAAC;SACF;QAED,OAAO,IAAI,CAAC,SAAS;aACnB,IAAI,CAAC,2GAAuB,EAAE;YAC9B,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE;YACzB,SAAS,EAAE,KAAK;YAChB,IAAI,EAAE;gBACL,KAAK;gBACL,QAAQ;gBACR,WAAW,EAAE,IAAI;aACjB;SACD,CAAC;aACD,WAAW,EAAE,CAAC;IACjB,CAAC;IAED,WAAW,CAAC,KAAa,EAAE,QAAkB;QAC5C,OAAO,IAAI,CAAC,SAAS;aACnB,IAAI,CAAC,2GAAuB,EAAE;YAC9B,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE;YACzB,SAAS,EAAE,KAAK;YAChB,IAAI,EAAE;gBACL,KAAK;gBACL,QAAQ,EAAE,QAAQ;gBAClB,WAAW,EAAE,IAAI;gBACjB,OAAO,EAAE,IAAI;aACb;SACD,CAAC;aACD,WAAW,EAAE,CAAC;IACjB,CAAC;IAED,cAAc,CAAC,KAAa,EAAE,QAAkB;QAC/C,OAAO,IAAI,CAAC,SAAS;aACnB,IAAI,CAAC,2GAAuB,EAAE;YAC9B,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE;YACzB,SAAS,EAAE,KAAK;YAChB,IAAI,EAAE;gBACL,KAAK;gBACL,QAAQ,EAAE,QAAQ;gBAClB,WAAW,EAAE,KAAK;gBAClB,OAAO,EAAE,KAAK;aACd;SACD,CAAC;aACD,WAAW,EAAE,CAAC;IACjB,CAAC;IAED,eAAe,CAAC,KAAa,EAAE,cAAsB;QACpD,IAAI,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,SAAS;aACnB,IAAI,CAAC,2GAAuB,EAAE;YAC9B,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE;YACzB,IAAI,EAAE;gBACL,KAAK;gBACL,QAAQ;aACR;SACD,CAAC;aACD,WAAW,EAAE,CAAC;IACjB,CAAC;;8EA/FW,eAAe;gHAAf,eAAe,WAAf,eAAe,mBAFf,MAAM;;;;;;;;;;;;;;;;;;;;ACGZ,MAAM,kBAAkB;IAM9B,YACyB,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;IACzC,CAAC;IANL,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,SAAS,EAAE,QAAQ,IAAI,KAAK,CAAC;IAC1C,CAAC;;oFAJW,kBAAkB;gHAAlB,kBAAkB;;;;;;;;;;;;;;;;;;;;;;ACExB,MAAM,sBAAsB;IAMlC,YACqC,OAAsB,EAChB,WAAW;QADjB,YAAO,GAAP,OAAO,CAAe;QAChB,gBAAW,GAAX,WAAW;QAErD,kCAAkC;QAClC,mBAAmB;IACpB,CAAC;IAVD,IAAI,EAAE;QACL,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IACxB,CAAC;;4FAJW,sBAAsB,0MAQtB,sBAAsB;oHARtB,sBAAsB;;;;;;;;;;;;;;;;;;;;ACJZ;AAC+C;AAID;;;;AAK9D,MAAM,gBAAgB;IAa5B,YACoC,IAAa,EACxC,SAA4B;QADD,SAAI,GAAJ,IAAI,CAAS;QACxC,cAAS,GAAT,SAAS,CAAmB;QAb7B,kBAAa,GAAmB,EAAE,CAAC;QAEnC,aAAQ,GAAkC,EAAE,CAAC;QAapD,IAAI,CAAC,aAAa,CAAC,IAAI,CACtB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAU,EAAE,EAAE;YAC7C,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC1C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;oBACtD,QAAQ,IAAI,CAAC,SAAS,EAAE;wBACvB,KAAK,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,6BAA6B,CAAC,CAAC;wBAC3F,KAAK,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,8BAA8B,CAAC,CAAC;wBAC7F,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;qBAC3E;iBACD;aAED;QACF,CAAC,CAAC,CACF;IACF,CAAC;IA3BD,IAA6C,OAAO,CAAC,KAAwC;QAC5F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC;QACrC,CAAC,CAAC,CAAC;IACJ,CAAC;IAAA,CAAC;IAuBF,eAAe,KAAK,CAAC;IAErB,WAAW;QACV,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAClD,CAAC;;gFAtCW,gBAAgB;8GAAhB,gBAAgB;+EAKX,8EAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;ACxBkD;;;;;;;AAUnF,MAAM,oBAAoB;IAahC,YACS,WAAoC;QAApC,gBAAW,GAAX,WAAW,CAAyB;QAXpC,wBAAmB,GAAY,IAAI,CAAC;QACpC,WAAM,GAAY,IAAI,CAAC;QAItB,WAAM,GAAG,IAAI,uDAAY,EAAW,CAAC;QAE/C,cAAS,GAAY,IAAI,CAAC;IAKtB,CAAC;IAEL,QAAQ;QACP,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE;gBACrE,IAAI,CAAC,YAAY,GAAG,CAAC,UAAU,CAAC;gBAChC,IAAI,UAAU,EAAE;oBACf,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;iBACvB;qBAAM;oBACN,UAAU,CAAC,GAAG,EAAE;wBACf,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC;oBACpC,CAAC,EAAE,GAAG,CAAC,CAAC;iBACR;YACF,CAAC,CAAC,CAAC;SACH;IACF,CAAC;IAED,WAAW;QACV,IAAI,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;SAC9B;IACF,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,MAAM;QACL,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,IAAI,UAAU;QACb,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC5F,CAAC;;wFAjDW,oBAAoB;kHAApB,oBAAoB;QCVjC,yEAAoB;QAKlB,4IAAS,WAAO,IAAC;QACjB,8EAAsD;QAAA,uDAA8B;QAAA,4DAAW;QAGhG,4EAIoB;QAAnB,4IAAS,YAAQ,IAAC;QAClB,8EAA6B;QAAA,gEAAK;QAAA,4DAAW;;QAV7C,0DAAuB;QAAvB,oFAAuB;QAFvB,qGAA4C;QAIlC,0DAA2C;QAA3C,+GAA2C;QAAC,0DAA8B;QAA9B,6FAA8B;QAMpF,0DAAoB;QAApB,iFAAoB;;;;;;;;;;;;;;;;;;;;;ACLf,MAAM,oBAAoB;IAEhC,YAAoB,QAAoC;QAApC,aAAQ,GAAR,QAAQ,CAA4B;IAAI,CAAC;IAE7D,SAAS,CAAC,KAA4B;QACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;;wFANW,oBAAoB;wIAApB,oBAAoB;;;;;;;;;;;;;;;;;;ACGX;;;AAOf,MAAM,iBAAiB;IAQ7B,YACQ,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;QAE5B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IACjD,CAAC;IAED,SAAS;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAED,aAAa;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;IAES,KAAK,CAAC,OAA4B;QAC3C,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CACvB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAClB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAC7B,CAAC;IACH,CAAC;IAES,gBAAgB,CACzB,MAAe,EACf,QAAwD,SAAS,EACjE,YAA4B,SAAS;QAErC,IAAI,CAAC,MAAM,EAAE;YACZ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACrB,OAAO;SACP;QAED,IAAI,WAAqD,CAAC;QAC1D,IAAI,CAAC,KAAK,EAAE;YACX,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;SAC3D;aAAM;YACN,WAAW,GAAG,KAAK,EAAE,CAAC;SACtB;QAED,IAAI,OAAO,WAAW,KAAK,SAAS,EAAE;YACrC,OAAO;SACP;QAED,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;YACzB,IAAI,CAAC,CAAC,UAAU,KAAK,uDAAa,EAAE;gBACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;aACrB;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAES,YAAY;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACrB,CAAC;IAES,UAAU,CAAC,OAAU;QAC9B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,CAAC;IAES,WAAW,CAAC,GAAG;QACxB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACtB,CAAC;IAES,aAAa;QACtB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,IAAc,iBAAiB;QAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;IACtC,CAAC;;kFAhFW,iBAAiB;+GAAjB,iBAAiB;;;;;;;;;;;;;;;;;;AChBqB;;;AAa5C,MAAM,iBAAiB;IAsB7B,YACQ,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;QAtB7B,kBAAa,GAAmB,EAAE,CAAC;QAwBlC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;IACzC,CAAC;IAnBD,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IAED,IAAI,OAAO,CAAC,KAAc;QACzB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;IACnC,CAAC;IAUD,mBAAmB,CAAC,MAAa;QAChC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;aACjC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;aAChC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,WAAW,CAAC,GAAQ,EAAE,OAAe;QACpC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE;YAC3C,OAAO;SACP;QACD,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,OAAO,EAAE,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED,WAAW;QACV,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,IAAc,iBAAiB;QAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;IACtC,CAAC;;kFApDW,iBAAiB;+GAAjB,iBAAiB;;;;;;;;;;;;;;;;;;ACTvB,MAAM,uBAAuB;IAIA,OAAO,CAAC,KAAqB;QAC/D,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAClB,OAAO;SACP;QACD,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QAC/B,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;YACf,KAAK,CAAC,cAAc,EAAE,CAAC;SACvB;IACF,CAAC;IAEoC,SAAS,CAAC,KAAoB;QAClE,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE;YACnD,OAAO;SACP;QAED,MAAM,OAAO,GAAG;YACf,CAAC,EAAE,CAAC;YACJ,EAAE;YACF,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;YACtC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;YAC5C,GAAG,CAAE,gBAAgB;SACrB,CAAC;QACF,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;YACxC,KAAK,CAAC,cAAc,EAAE,CAAC;SACvB;IACF,CAAC;IAED,QAAQ;QACP,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;YAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;SACpB;IACF,CAAC;;8FAvCW,uBAAuB;qHAAvB,uBAAuB;qJAAvB,mBAAe,6FAAf,qBAAiB;;;;;;;;;;;;;;;;;;;ACAvB,MAAM,YAAY;IACxB,SAAS,CAAC,KAAa,EAAE,IAAU;QAClC,IAAI,CAAC,KAAK,EAAE;YACX,OAAO,EAAE,CAAC;SACV;QACD,IAAI,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7C,OAAO,MAAM,CAAC;IACf,CAAC;;wEAPW,YAAY;wHAAZ,YAAY;;;;;;;;;;;;;;;;;;;;;ACL8C;;;;;;;ICIrE,0EAA4D;IAC3D,kEAAM;IAAA,mEAA+D;IACtE,4DAAM;;;IAWL,0EAAiD;IACf,mEAAQ;IAAA,4DAAO;IAAA,2EAAmB;IAAA,uDAAgD;;IAAA,4DAAO;;;IAAvD,0DAAgD;IAAhD,6KAAgD;;;IAKrH,2EAA0C;IAAA,uDAAwB;IAAA,4DAAO;;;IAA/B,0DAAwB;IAAxB,iGAAwB;;;ADf7D,MAAM,uBAAuB;IAOnC,YAAoB,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;QALxB,WAAM,GAAG,IAAI,uDAAY,EAAyB,CAAC;QACnD,mBAAc,GAAG,IAAI,uDAAY,EAAyB,CAAC;QAE5E,eAAU,GAAG,KAAK,CAAC;QAIlB,IAAI,CAAC,UAAU,GAAI,MAAM,CAAC,iBAAiB,CAAC,kBAAkB;IAC/D,CAAC;IAED,qBAAqB,CAAC,IAA2B;QAChD,MAAM,kBAAkB,GAAG,IAA6B,CAAC;QACzD,IAAI,kBAAkB,CAAC,YAAY;YAClC,OAAO,kBAAkB,CAAC,YAAY,CAAC;;YAEvC,OAAO,kBAAkB,CAAC,YAAY,CAAC;IACzC,CAAC;IAED,SAAS;QACR,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;IAED,UAAU,CAAC,IAA2B;QACrC,MAAM,kBAAkB,GAAG,IAA6B,CAAC;QACzD,IAAI,kBAAkB,CAAC,OAAO;YAC7B,OAAO,UAAU,GAAG,kBAAkB,CAAC,OAAO,CAAC;QAChD,OAAO,EAAE,CAAC;IACX,CAAC;IAED,QAAQ,CAAC,MAA6B;QACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,gBAAgB,CAAC,MAA6B;QAC7C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;;8FArCW,uBAAuB;qHAAvB,uBAAuB;QCRpC,yEAA0F;QAAjE,4IAAS,wBAAgB,IAAC,0FAAa,gCAAwB,IAArC;QAClD,yEAAgD;QACR,uDAAuB;QAAA,4DAAM;QACpE,yEAAyB;QAAA,uDAAiB;QAAA,4DAAM;QAChD,mHAEM;QACN,qEAAoB;QACpB,yEAAyC;QAAA,uDAAwB;QAAA,4DAAM;QAGxE,0EAAgD;QAC6F,wDAA2B;QAAA,4DAAM;QAC7K,0EAAoB;QAEQ,oEAAQ;QAAA,4DAAO;QAAA,4EAAmB;QAAA,wDAAgD;;QAAA,4DAAO;QAEpH,sHAEM;QACP,4DAAM;QACP,0EAAoB;QACiC,wDAAmC;QAAA,4DAAO;QAC9F,wHAAyE;QAC1E,4DAAM;;QAtBkC,0DAAuB;QAAvB,sFAAuB;QACrC,0DAAiB;QAAjB,gFAAiB;QACpC,0DAA4B;QAA5B,4FAA4B;QAIO,0DAAwB;QAAxB,uFAAwB;QAItB,0DAAgG;QAAhG,4MAAgG;QAAC,0DAA2B;QAA3B,0FAA2B;QAGzG,0DAAgD;QAAhD,4KAAgD;QAEvG,0DAAqB;QAArB,qFAAqB;QAKwB,0DAAmC;QAAnC,sGAAmC;QAChF,0DAAiB;QAAjB,iFAAiB;;;;;;;;;;;;;;;;;;;AClBnB,MAAM,YAAY;IACxB,SAAS,CAAC,KAAa,EAAE,IAAU;QAClC,IAAI,iBAAyB,CAAC;QAC9B,IAAI,KAAK,GAAG,CAAC,EAAE;YACd,iBAAiB,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,GAAG,UAAU,CAAC;SACzD;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE;YACvC,iBAAiB,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;SACtE;aAAM;YACN,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;SAChD;QAED,OAAO,iBAAiB,CAAC;IAC1B,CAAC;;wEAZW,YAAY;wHAAZ,YAAY;;;;;;;;;;;;;;;;;;ACLwC;AACU;;AAQpE,MAAM,uBAAuB;IACnC,YACsC,aAAqB,EAC7B,OAAgB;QADR,kBAAa,GAAb,aAAa,CAAQ;QAC7B,YAAO,GAAP,OAAO,CAAS;IAC9C,CAAC;IAED,QAAQ,CAAC,CAAkB;QAC1B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;YAClB,OAAO,IAAI,CAAC;SACZ;QAED,aAAa;QACb,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QAElB,wBAAwB;QACxB,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAEzC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACxC,OAAO;gBACN,aAAa,EAAE,IAAI;aACnB,CAAC;SACF;QAED,0BAA0B;QAC1B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE;YACvC,IAAI,CAAC,CAAC,MAAM,EAAE;gBACb,OAAO,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;aACjC;YACD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;gBAC9C,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aAClB;SACD;QAED,gCAAgC;QAChC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE;YACvC,CAAC,CAAC,SAAS,CAAC;gBACX,aAAa,EAAE,IAAI;aACnB,CAAC,CAAC;SACH;QAED,OAAO,IAAI,CAAC;IACb,CAAC;;8FAzCW,uBAAuB,kEAEvB,iBAAiB,mEACjB,SAAS;qHAHT,uBAAuB,2OAJxB;YACV,EAAE,OAAO,EAAE,yDAAa,EAAE,WAAW,EAAE,yDAAU,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;SAC/F;;;;;;;;;;;;;;;;;;ACFK,MAAM,YAAY;IACxB,SAAS,CAAC,KAAU,EAAE,IAAU;QAC/B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAElC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAE3B,IAAI,KAAK,IAAI,EAAE,EAAE;YAChB,IAAI,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;YACtB,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;SAC/B;QACD,IAAI,KAAK,IAAI,EAAE,EAAE;YAChB,IAAI,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;YACtB,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;SAC/B;QACD,IAAI,KAAK,IAAI,EAAE,EAAE;YAChB,IAAI,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;YACtB,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;SAC/B;QACD,IAAI,KAAK,IAAI,CAAC,EAAE;YACf,OAAO,GAAG,KAAK,IAAI,CAAC;SACpB;QAED,OAAO,KAAK,CAAC;IACd,CAAC;;wEAzBW,YAAY;wHAAZ,YAAY;;;;;;;;;;;;;;;;;ACLkE;;AAKpF,MAAM,cAAc;IAI1B,YAC6B,OAAmB;QAAnB,YAAO,GAAP,OAAO,CAAY;IAChD,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAChB,OAAO;SACP;QAED,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAC5B,UAAU,CAAC,GAAG,EAAE;gBACf,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;gBACnC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;YACrC,CAAC,EAAE,GAAG,CAAC,CAAC;QACT,CAAC,CAAC,CAAC;IACJ,CAAC;;4EAnBW,cAAc,kEAKjB,qDAAU;4GALP,cAAc;;;;;;;;;;;;;;;;;ACJgE;;AAGpF,MAAe,aAAa;IADnC;QAIS,YAAO,GAAG,IAAI,KAAK,EAAsB,CAAC;QAC1C,YAAO,GAAG,IAAI,KAAK,EAAc,CAAC;QAClC,cAAS,GAAoC,SAAS,CAAC;QAG/D,eAAU,GAAY,KAAK,CAAC;QAEnB,aAAQ,GAAG,KAAK,CAAC;QAgFlB,qBAAgB,GAAG,CAAC,eAAgC,EAAW,EAAE;YACxE,IAAI,eAAe,CAAC,SAAS,EAAE;gBAC9B,MAAM,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC,EAAqB,CAAC,CAAC;gBACnE,IAAI,SAAS,IAAI,SAAS,CAAC,QAAQ,EAAE;oBACpC,OAAO,IAAI,CAAC;iBACZ;aACD;YAED,2DAA2D;YAC3D,IAAI,QAAQ,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;YAC3C,IAAI,QAAQ,EAAE;gBACb,KAAK,MAAM,WAAW,IAAI,QAAQ,EAAE;oBACnC,IAAI,QAAQ,CAAC,WAAW,CAAC,EAAE;wBAC1B,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE;4BACjD,OAAO,IAAI,CAAC;yBACZ;qBACD;iBACD;aACD;YACD,OAAO,KAAK,CAAC;QACd,CAAC,CAAC;KACF;IAhGA,oCAAoC;IACpC,QAAQ,KAAK,CAAC;IAEd,oCAAoC;IACpC,UAAU,KAAK,CAAC;IAEhB,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;IAED,IACI,KAAK,CAAC,KAAQ;QACjB,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE;YAC9B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAEtC,IAAI,CAAC,UAAU,EAAE,CAAC;SAClB;IACF,CAAC;IAED,IAAI,OAAO;QACV,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAClB,OAAO,IAAI,CAAC;SACZ;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAC3B,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,aAAa,EAAE,CAAC;IACtB,CAAC;IAED,UAAU,CAAC,KAAQ;QAClB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,gBAAgB,CAAC,EAAsB;QACtC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvB,CAAC;IAED,iBAAiB,CAAC,EAAc;QAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvB,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,gBAAgB,CAAC,UAAmB;QACnC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC9B,CAAC;IAED,QAAQ,CAAC,CAAqB;QAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAClB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;YACjB,IAAI,CAAC,aAAa,EAAE,CAAC;SACrB;QAED,IAAI,IAAI,CAAC,SAAS,EAAE;YACnB,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SACzB;IACF,CAAC;IAED,iBAAiB,CAAC,CAAkC;QACnD,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACpB,CAAC;IAEO,aAAa;QACpB,IAAI,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACpD;SACD;IACF,CAAC;;0EAxFoB,aAAa;2GAAb,aAAa;;;;;;;;;;;;;;;;;;;;;;;ACJ0B;AACV;AAEF;;;;;;;AAEjD,IAAI,UAAU,GAAG,CAAC,CAAC;AAqBZ,MAAM,qBAAsB,SAAQ,0DAAsB;IAnBjE;;QAsBQ,eAAU,GAAG,iBAAiB,UAAU,EAAE,EAAE,CAAC;KAKpD;IAHA,YAAY,CAAC,EAAS;QACrB,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;IAC1B,CAAC;;4SAPW,qBAAqB,SAArB,qBAAqB;mHAArB,qBAAqB,6IAJtB;YACV,EAAE,OAAO,EAAE,6DAAiB,EAAE,WAAW,EAAE,yDAAU,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;SACjG;QAdD,uFAOiC;QAAhC,gKAAU,wBAAoB,IAAC;QAC/B,uDACD;QAAA,4DAAoB;;QANnB,8EAAiB;QAKjB,0DACD;QADC,qFACD;;;;;;;;;;;;;;;;;;;ACnB8E;;;AAE/E,IAAI,UAAU,GAAG,CAAC,CAAC;AAkBZ,MAAM,eAAe;IAhB5B;QAqBW,YAAO,GAAG,IAAI,uDAAY,EAAS,CAAC;QAEvC,eAAU,GAAG,UAAU,UAAU,EAAE,EAAE,CAAC;KAe7C;IAbA,QAAQ;QACP,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACf,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;SACrB;IACF,CAAC;IAED,WAAW,CAAC,EAAS;QACpB,EAAE,CAAC,eAAe,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClB,OAAO;SACP;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvB,CAAC;;8EArBW,eAAe;6GAAf,eAAe;QAb1B,4EAOC;QADA,6IAAS,uBAAmB,IAAC;QAE7B,uDACD;QAAA,4DAAS;;QAPR,8EAAiB;QAMjB,0DACD;QADC,qFACD;;;;;;;;;;;;;;;;;;;;;AChBwG;AACvD;AAEF;;;;;AAEjD,IAAI,UAAU,GAAG,CAAC,CAAC;AAqBZ,MAAM,iBAAkB,SAAQ,0DAAsB;IAnB7D;;QAqBW,aAAQ,GAAG,IAAI,uDAAY,EAAW,CAAC;QAE1C,eAAU,GAAG,YAAY,UAAU,EAAE,EAAE,CAAC;KAgB/C;IAZA,MAAM;QACL,IAAI,CAAC,KAAK,EAAE,CAAC;IACd,CAAC;IAED,YAAY,CAAC,KAAc;QAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;IACrC,CAAC;;wRAnBW,iBAAiB,SAAjB,iBAAiB;+GAAjB,iBAAiB;;;;;oJAJlB;YACV,EAAE,OAAO,EAAE,6DAAiB,EAAE,WAAW,EAAE,yDAAU,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;SAC7F;QAdF,yEAA4B;QAI1B,2LAAmB,qFAEX,YAAQ,IAFG,+FAGT,wBAAoB,IAHX;QAInB,uDACD;QAAA,4DAAe;;QANd,0DAAiB;QAAjB,8EAAiB;QAKjB,0DACD;QADC,qFACD;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBuI;AACtE;AAEjC;AAEgB;;;;;;;;;;;;IAoC9C,0EAA4I;IAAA,uDAAuB;IAAA,4DAAM;;;IAA7B,0DAAuB;IAAvB,kGAAuB;;AAlCtK,IAAI,UAAU,GAAG,CAAC,CAAC;AA2CZ,MAAM,aAAc,SAAQ,0DAAmB;IAoBrD,YACS,KAAwB;QAEhC,KAAK,EAAE,CAAC;QAFA,UAAK,GAAL,KAAK,CAAmB;QAVxB,gBAAW,GAAG,EAAE,CAAC;QAGnB,eAAU,GAAG,QAAQ,UAAU,EAAE,EAAE,CAAC;IAU3C,CAAC;IAlBD,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAChC,CAAC;IAkBD,MAAM;QACL,IAAI,CAAC,KAAK,EAAE,CAAC;IACd,CAAC;IAED,WAAW,CAAC,MAAM;QACjB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;SACpC;IACF,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;IACxC,CAAC;IAED,YAAY,CAAC,CAAgB;QAC5B,QAAQ,CAAC,CAAC,OAAO,EAAE;YAClB,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,CAAC;YACR,KAAK,CAAC;gBACL,OAAO;YACR;gBACC,MAAM;SACP;QAED,QAAQ,CAAC,CAAC,GAAG,EAAE;YACd,KAAK,WAAW,CAAC;YACjB,KAAK,QAAQ,CAAC;YACd,KAAK,OAAO;gBACX,OAAO;YACR,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,CAAC;YACT,KAAK,GAAG;gBACP,OAAO;YACR;gBACC,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,CAAC,CAAC,eAAe,EAAE,CAAC;gBACpB,MAAM;SACP;IACF,CAAC;IAED,UAAU;QACT,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC5B,UAAU,CAAC,GAAG,EAAE;YACf,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;IAC5B,CAAC;IAED,SAAS;QACR,IAAI,CAAC,MAAM,EAAE,CAAC;QAEd,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,OAAO;SACP;QAED,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;QAC1B,8CAA8C;QAC9C,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAElC,qEAAqE;QACrE,qDAAqD;QACrD,IAAI,CAAC,GAAG,mCAAM,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YAChB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;YACxB,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACxB;IACF,CAAC;IAED,gBAAgB,CAAC,QAAiB,KAAK;QACtC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAChB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;SACrB;aAAM;YACN,IAAI,CAAC,UAAU,GAAG,mCAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SACpD;IACF,CAAC;IAGD,QAAQ,CAAC,KAAK;QACb,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;IACxC,CAAC;IAED,UAAU;QACT,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACzB,CAAC;IAED,UAAU,CAAC,KAAW;QACrB,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,KAAK,EAAE;YACV,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACxB;aAAM;YACN,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;SACrB;IACF,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QACvC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;IACzC,CAAC;IAED,YAAY;QACX,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;;0EAnJW,aAAa;2GAAb,aAAa;;;;;;;;;;6IAAb,oBAAgB;uKALjB;YACV,EAAE,OAAO,EAAE,6DAAiB,EAAE,WAAW,EAAE,yDAAU,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;YACzF,EAAE,OAAO,EAAE,yDAAa,EAAE,WAAW,EAAE,yDAAU,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;SACrF;QApCA,yEAA4B;QASxB,qLAAwB,4FACP,kBAAc,IADP,4EAEf,kBAAc,IAFC,0EAGhB,eAAW,IAHK,4EAIf,gBAAY,IAJG,sFAKb,wBAAoB,IALP;QANzB,4DAWkC;QAClC,8EAS0B;QAFzB,gLAAmB,0EACX,YAAQ,IADG;QAPpB,4DAS0B;QAC1B,yFAA6G;QAC9G,4DAAiB;QACjB,mFAA8D;QAC/D,4DAAM;QACN,4GAAyK;QAC1K,4DAAM;;;QAxBF,0DAAqB;QAArB,kFAAqB;QAarB,0DAAiB;QAAjB,8EAAiB;QAMK,0DAAoB;QAApB,iFAAoB;QAE5B,0DAAoB;QAApB,iFAAoB;QAE+C,0DAAsD;QAAtD,wJAAsD;;;;;;;;;;;;;;;;;;;;;;;;ACvCrE;AACrB;AAEF;;;;;;;IAS9C,0EAAkE;IACjE,uDACA;IAAA,6DAAyB;IAC1B,4DAAO;;;IAFN,0DACA;IADA,wFACA;;;IAED,qEAAiG;;;IAAhC,qJAAuB;;;AAX3F,IAAI,UAAU,GAAG,CAAC,CAAC;AAiBZ,MAAM,gBAAiB,SAAQ,0DAAqB;IAQ1D,YAAoB,YAA0B,EAAU,KAAmB;QAC1E,KAAK,EAAE,CAAC;QADW,iBAAY,GAAZ,YAAY,CAAc;QAAU,UAAK,GAAL,KAAK,CAAc;QAFpE,eAAU,GAAG,WAAW,UAAU,EAAE,EAAE,CAAC;IAI9C,CAAC;IAED,WAAW,CAAC,OAAO;QAClB,IAAI,OAAO,CAAC,KAAK,EAAE;YAClB,IAAI,IAAI,CAAC,4BAA4B,EAAE;gBACtC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;aACtE;SACD;IACF,CAAC;;gFAnBW,gBAAgB;8GAAhB,gBAAgB,qMAFjB,CAAC,EAAE,OAAO,EAAE,6DAAiB,EAAE,WAAW,EAAE,yDAAU,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;;QAVxG,yEAA8C;QACzB,uDAAW;QAAA,4DAAO;QACtC,8GAGO;QACP,8GAAiG;QAClG,4DAAM;;QANe,0DAAW;QAAX,0EAAW;QACF,0DAAmC;QAAnC,mGAAmC;QAInC,0DAAkC;QAAlC,kGAAkC;;;;;;;;;;;;;;;;;;;;;;;AClB4B;AAC5B;AACjB;AAC2C;;;;;;IAgB3F,yEAAyF;IAAA,uDAAuB;IAAA,4DAAM;;;IAA7B,0DAAuB;IAAvB,kGAAuB;;;IAEhH,yEAA0F;IACnF,uDACJ;IAAA,4DAAM;;;IADF,0DACJ;IADI,uTACJ;;AAlBJ,IAAI,UAAU,GAAG,CAAC,CAAC;AA2BZ,MAAM,mBAAoB,SAAQ,0DAAqB;IAzB9D;;QA0BS,eAAU,GAAG,CAAC,CAAC;QAEf,gBAAW,GAAG;YACrB,OAAO,EAAE;gBACR,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC;gBAC/B,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;gBAC9E,CAAC,EAAE,MAAM,EAAE,SAAS,EAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;gBAC5C,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;gBAEvC,CAAC,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;gBAC/C,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;gBAEzC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;gBACvC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;gBAEhB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,iBAAiB;aACnC;YACD,OAAO,EAAE;gBACR,KAAK,EAAE,IAAI;gBACX,QAAQ,EAAE,GAAG;gBACb,QAAQ,EAAE,IAAI;aACd;SACD,CAAC;QACO,gBAAW,GAAG,EAAE,CAAC;QACjB,eAAU,GAAa,KAAK,CAAC;QAC7B,cAAS,GAAG,CAAC,CAAC,CAAC;QAExB,YAAO,GAAG,IAAI,uDAAW,EAAE,CAAC;QAElB,gBAAW,GAAG,IAAI,uDAAY,EAAW,CAAC;QAC1C,aAAQ,GAAG,IAAI,uDAAY,EAAU,CAAC;QAEhD,eAAU,GAAG,eAAe,UAAU,EAAE,EAAE,CAAC;KAyD3C;IAvDA,IAAI,OAAO;QACV,IAAI,IAAI,CAAC,UAAU,EAAE;YACpB,OAAO;gBACN,OAAO,EAAE,KAAK;aACd,CAAC;SACF;QAED,OAAO,IAAI,CAAC,WAAW,CAAC;IACzB,CAAC;IAED,oBAAoB,CAAC,OAAY;QAChC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,QAAQ,IAAI,CAAC,UAAU,EAAE;YACxB,KAAK,CAAC;gBACL,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC5B,MAAM;YACP,KAAK,CAAC;gBACL,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC5B,MAAM;YACP;gBACC,MAAM;SACP;IACF,CAAC;IAED,WAAW;QACV;;;;;;;;;;;;;;;;;UAiBE;QACF,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QACrB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE7B,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE;YACzC,IAAI,CAAC,OAAO,GAAG,IAAI,uDAAW,CAAC,EAAE,EAAE,CAAC,+DAAmB,EAAE,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SAC9F;IACF,CAAC;IAED,QAAQ,CAAC,OAAwB;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC5B,CAAC;;kSAzFW,mBAAmB,SAAnB,mBAAmB;iHAAnB,mBAAmB,wQALpB;YACV,EAAE,OAAO,EAAE,6DAAiB,EAAE,WAAW,EAAE,yDAAU,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;YAC/F,EAAE,OAAO,EAAE,yDAAa,EAAE,WAAW,EAAE,yDAAU,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;SAC3F;QApBF,yEAA4B;QAG1B,6KAAoB,gCAA4B,IAAC;QAKlD,4DAAe;QACf,+GAAsH;QAEtH,+GAES;QAEV,4DAAM;;QAbJ,0DAAuB;QAAvB,oFAAuB;QAOS,0DAAsD;QAAtD,wJAAsD;QAEtD,0DAAuD;QAAvD,yJAAuD;;AAuGlF,SAAS,kBAAkB,CAAC,SAAkB;IACpD,OAAO,CAAC,OAAwB,EAA2B,EAAE;QAC5D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,yCAAyC;QAC9F,OAAO,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,CAAC;IACxG,CAAC,CAAC;AACH,CAAC;;;;;;;;;;;;;;;;;;;;AClIsE;;;;;AAEvE,IAAI,UAAU,GAAG,CAAC,CAAC;AAkBZ,MAAM,mBAAmB;IAhBhC;QAoBW,UAAK,GAAG,IAAI,uDAAY,EAAS,CAAC;QAErC,eAAU,GAAG,eAAe,UAAU,EAAE,EAAE,CAAC;KAMlD;IAJA,WAAW,CAAC,EAAS;QACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpB,EAAE,CAAC,eAAe,EAAE,CAAC;IACtB,CAAC;;sFAXW,mBAAmB;iHAAnB,mBAAmB;QAb/B,4EAO+B;QAA9B,iJAAS,uBAAmB,IAAC;QAC7B,8EAAwB;QAAA,uDAAU;QAAA,4DAAW;;QAJ7C,8EAAiB;QAHjB,kFAAyB;QAOD,0DAAU;QAAV,yEAAU;;;;;;;;;;;;;;;;;;;;;;;ACfoC;AACN;AAEjB;;;;;;;IAShD,0EAA6C;IAAA,uDAAW;IAAA,4DAAO;;;IAAlB,0DAAW;IAAX,6EAAW;;;IAEvD,0EAA8D;IAAA,uDAAW;IAAA,4DAAO;;;IAAlB,0DAAW;IAAX,6EAAW;;;IAExE,sFAGwB;IACvB,uDACD;IAAA,4DAAmB;;;;IAJlB,uFAAuB;IAGvB,0DACD;IADC,0FACD;;;IAGF,0EAAyF;IAAA,uDAAuB;IAAA,4DAAM;;;IAA7B,0DAAuB;IAAvB,kGAAuB;;AAlBjH,IAAI,UAAU,GAAG,CAAC,CAAC;AA0BZ,MAAM,mBAAoB,SAAQ,0DAAqB;IAxB9D;;QA4BU,oBAAe,GAAG,KAAK,CAAC;QACxB,WAAM,GAAG,KAAK,CAAC;QAGxB,eAAU,GAAG,eAAe,UAAU,EAAE,EAAE,CAAC;KAO3C;IALA,WAAW,CAAC,MAAM;QACjB,IAAI,MAAM,CAAC,OAAO,EAAE;YACnB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SACtD;IACF,CAAC;;kSAdW,mBAAmB,SAAnB,mBAAmB;iHAAnB,mBAAmB,qNALpB;YACV,EAAE,OAAO,EAAE,6DAAiB,EAAE,WAAW,EAAE,yDAAU,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;YAC/F,EAAE,OAAO,EAAE,yDAAa,EAAE,WAAW,EAAE,yDAAU,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;SAC3F;QAnBF,yEAA8C;QAC7C,iHAA+D;QAC/D,yEAAyB;QACxB,iHAAgF;QAChF,qFAAqC;QAApB,gMAAmB;QACnC,yIAKmB;QACpB,4DAAkB;QAEnB,+GAAsH;QACvH,4DAAM;;QAbE,0DAAsB;QAAtB,sFAAsB;QACxB,0DAAmB;QAAnB,gFAAmB;QACT,0DAAqB;QAArB,qFAAqB;QAClB,0DAAmB;QAAnB,8EAAmB;QAGf,0DAAe;QAAf,qFAAe;QAMJ,0DAAsD;QAAtD,wJAAsD;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxBU;AAChC;AACb;AAGJ;;;;;;;;;;;IA4B3C,gFAAqF;IACpF,uDACD;IAAA,4DAAa;;;IAFoD,+EAAmB;IACnF,0DACD;IADC,wFACD;;;IAIH,yEAAyF;IACxF,uDACD;IAAA,4DAAM;;;IADL,0DACD;IADC,oGACD;;;AAlCH,IAAI,UAAU,GAAG,CAAC,CAAC;AAEnB,MAAM,UAAU;CAGf;AAsCM,MAAM,eAAgB,SAAQ,0DAAkB;IApCvD;;QAqCS,iBAAY,GAAG,CAAC,CAAC;QAKhB,aAAQ,GAAG,MAAM,CAAC;QAClB,gBAAW,GAAG,WAAW,CAAC;QAC1B,YAAO,GAAG,IAAI,CAAC;QAEf,aAAQ,GAAG,IAAI,CAAC;QAIlB,eAAU,GAAG,UAAU,UAAU,EAAE,EAAE,CAAC;KAwE7C;IApEA,IAAI,aAAa;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,eAAe;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;SAC5B;IACF,CAAC;IAED,MAAM;QACL,IAAI,CAAC,KAAK,EAAE,CAAC;IACd,CAAC;IAED,WAAW,CAAC,CAAC;QACZ,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;SACvB;IACF,CAAC;IAED,iBAAiB,CAAC,MAAM;QACvB,IAAI,IAAI,CAAC,eAAe,EAAE;YACzB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;SAC7B;IACF,CAAC;IAED,WAAW,CAAC,MAAM;QACjB,IAAI,MAAM,CAAC,WAAW,EAAE;YACvB,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE;gBACnC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;aACpC;SACD;QAED,IAAI,MAAM,CAAC,OAAO,EAAE;YACnB,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE;gBACrC,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;aACpE;YAED,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAClB,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;oBAC5C,OAAmB;wBAClB,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;wBAC7B,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;qBACtB,CAAC;gBACH,CAAC,CAAC,CAAC;aACH;iBAAM;gBACN,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;oBAC5C,OAAmB;wBAClB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;wBACvB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;qBACtB,CAAC;gBACH,CAAC,CAAC,CAAC;aACH;SACD;QAED,IAAI,MAAM,CAAC,KAAK,EAAE;YACjB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBAChB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;gBACjB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;aACtB;SACD;IACF,CAAC;IAED,QAAQ;QACP,UAAU,CAAC,GAAG,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;IACJ,CAAC;;8QArFW,eAAe,SAAf,eAAe;6GAAf,eAAe;kEAgBhB,+DAAS;;;;2SArBT;YACV,EAAE,OAAO,EAAE,6DAAiB,EAAE,WAAW,EAAE,yDAAU,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;YAC3F,EAAE,OAAO,EAAE,yDAAa,EAAE,WAAW,EAAE,yDAAU,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;SACvF;QA/BA,yEAA4B;QAWxB,uLAAmB,2GACD,uBAAmB,IADlB,6GAEA,6BAAyB,IAFzB,iFAGX,YAAQ,IAHG;QAKnB,yHAEa;QACd,4DAAa;QAGf,2GAEM;QACP,4DAAM;;QAnBF,0DAAqB;QAArB,kFAAqB;QAU0B,0DAAgB;QAAhB,sFAAgB;QAMjC,0DAAsD;QAAtD,wJAAsD;;;;;;;;;;;;;;;;;;;;;ACvCgB;AACvD;AAEF;;;;;AAEjD,IAAI,UAAU,GAAG,CAAC,CAAC;AAoBZ,MAAM,eAAgB,SAAQ,0DAAsB;IAlB3D;;QAoBW,aAAQ,GAAG,IAAI,uDAAY,EAAW,CAAC;QAE1C,eAAU,GAAG,UAAU,UAAU,EAAE,EAAE,CAAC;KAgB7C;IAZA,MAAM;QACL,IAAI,CAAC,KAAK,EAAE,CAAC;IACd,CAAC;IAED,YAAY,CAAC,KAAc;QAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;IACrC,CAAC;;8QAnBW,eAAe,SAAf,eAAe;6GAAf,eAAe;;;;;oJAJhB;YACV,EAAE,OAAO,EAAE,6DAAiB,EAAE,WAAW,EAAE,yDAAU,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;SAC3F;QAbF,yEAA4B;QAG1B,6LAAmB,uFAEX,YAAQ,IAFG,iGAGT,wBAAoB,IAHX;QAInB,uDACD;QAAA,4DAAmB;;QANlB,0DAAiB;QAAjB,8EAAiB;QAKjB,0DACD;QADC,qFACD;;;;;;;;;;;;;;;;;;;;;;;;;AClBsG;AACrC;AAEjB;;;;;;;;;;IAwBhD,yEAAyF;IAAA,uDAAuB;IAAA,4DAAM;;;IAA7B,0DAAuB;IAAvB,kGAAuB;;;AAtBjH,IAAI,UAAU,GAAG,CAAC,CAAC;AA8BZ,MAAM,iBAAkB,SAAQ,0DAAqB;IA5B5D;;QA8BU,cAAS,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,OAAO;QAC/B,SAAI,GAAG,CAAC,CAAC;QACT,gBAAW,GAAG,EAAE,CAAC;QAEnB,eAAU,GAAG,aAAa,UAAU,EAAE,EAAE,CAAC;KAwBhD;IApBA,MAAM;QACL,IAAI,CAAC,KAAK,EAAE,CAAC;IACd,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;SAC9B;IACF,CAAC;IAED,WAAW,CAAC,MAAM;QACjB,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;YACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;SACpC;IACF,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;IACrC,CAAC;;wRA7BW,iBAAiB,SAAjB,iBAAiB;+GAAjB,iBAAiB;;;;;mLALlB;YACV,EAAE,OAAO,EAAE,6DAAiB,EAAE,WAAW,EAAE,yDAAU,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;YAC7F,EAAE,OAAO,EAAE,yDAAa,EAAE,WAAW,EAAE,yDAAU,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;SACzF;QAvBF,yEAA4B;QAYxB,uLAAmB,iFAEX,YAAQ,IAFG;QAED,4DAAW;QAGhC,6GAAsH;QACvH,4DAAM;;QAbF,0DAAa;QAAb,0EAAa;QAYiB,0DAAsD;QAAtD,wJAAsD;;;;;;;;;;;;;;;;;;;;;;;;;AC3BlC;AACY;AAEjB;;;;;;;;;;AA4B1C,MAAM,kBAAmB,SAAQ,0DAAa;;6RAAxC,kBAAkB,SAAlB,kBAAkB;gHAAlB,kBAAkB,8GALnB;YACV,EAAE,OAAO,EAAE,6DAAiB,EAAE,WAAW,EAAE,yDAAU,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;YAC9F,EAAE,OAAO,EAAE,yDAAa,EAAE,WAAW,EAAE,yDAAU,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;SAC1F;QArBF,yEAA4B;QAUzB,qLAAmB,+EAGX,YAAQ,IAHG,iFAIV,aAAS,IAJC;QARpB,4DAYqB;;QATnB,0DAAiB;QAAjB,8EAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACFE;AAC2C;AACI;AAErB;;;;;;;;;;;IA+B/C,yEAAyH;IACxH,uDACD;IAAA,4DAAM;;;IADL,0DACD;IADC,oGACD;;;;AA/BF,IAAI,UAAU,GAAG,CAAC,CAAC;AAuCZ,MAAM,aAAc,SAAQ,0DAAqB;IA0BvD,YAAoB,QAAmB;QACtC,KAAK,EAAE,CAAC;QADW,aAAQ,GAAR,QAAQ,CAAW;QAzBvC,aAAQ,GAAQ,KAAK,CAAC;QAGb,SAAI,GAAG,MAAM,CAAC;QACd,cAAS,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,OAAO;QAC/B,gBAAW,GAAG,EAAE,CAAC;QACjB,gBAAW,GAAG,KAAK,CAAC;QACpB,kBAAa,GAAG,CAAC,CAAC;QAClB,iBAAY,GAAG,EAAE,CAAC;QAClB,kBAAa,GAAY,KAAK,CAAC;QAC/B,aAAQ,GAAW,SAAS,CAAC;QACtC,oDAAoD;QAC3C,iBAAY,GAAW,SAAS,CAAC;QAEjC,aAAQ,GAAG,KAAK,CAAC;QAEhB,SAAI,GAAG,IAAI,uDAAY,EAAiB,CAAC;QACzC,UAAK,GAAG,IAAI,uDAAY,EAAiB,CAAC;QAEpD,eAAU,GAAG,QAAQ,UAAU,EAAE,EAAE,CAAC;QAEpC,aAAQ,GAAG,EAAE,CAAC;IAMd,CAAC;IAED,MAAM;QACL,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,OAAO;QACN,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED,SAAS,CAAC,KAAoB;QAC7B,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAC5C,8BAA8B;YAC9B,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;gBACtB,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,OAAO;aACP;SACD;IACF,CAAC;IAED,OAAO,CAAC,CAAC;QACR,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAC5C,kCAAkC;YAClC,MAAM,aAAa,GAAG,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC;YACxE,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAEjD,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE;gBACtB,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,OAAO;aACP;YAED,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;YACzC,IAAI,GAAG,GAAG,CAAC,EAAE;gBACZ,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,OAAO;aACP;SACD;IACF,CAAC;IAED,QAAQ;QACP,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;SACvF;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;SAC9B;QAED,IAAI,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,MAAM,GAAQ;gBACjB,yBAAyB,EAAE,KAAK;gBAChC,MAAM,EAAE,EAAE;gBACV,YAAY,EAAE,IAAI,CAAC,YAAY;aAC/B,CAAC;YAEF,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE;gBAC3B,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC;gBAC3B,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;aACzC;YAED,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YAE1C,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;gBACxB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;aACpB;YAED,IAAI,CAAC,QAAQ,GAAG,6EAAgB,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;SACrB;IACF,CAAC;IAED,WAAW,CAAC,MAAM;QACjB,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;YACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;SACpC;IACF,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;QACpC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;YACvC,UAAU,CAAC,GAAG,EAAE;gBACf,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC/E,CAAC,CAAC,CAAC;SACH;IACF,CAAC;;0EAlHW,aAAa;2GAAb,aAAa;;;;;4bALd;YACV,EAAE,OAAO,EAAE,6DAAiB,EAAE,WAAW,EAAE,yDAAU,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;YACzF,EAAE,OAAO,EAAE,yDAAa,EAAE,WAAW,EAAE,yDAAU,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;SACrF;QAjCW,yEAA4B;QAYpC,gLAAmB,0EAMX,YAAQ,IANG,4EAOV,aAAS,IAPC,sFAQR,qBAAiB,IART,kFASV,mBAAe,IATL;QATpB,4DAmBE;QAGJ,yGAEM;QACP,4DAAM;;QAtBF,0DAAiB;QAAjB,8EAAiB;QAWjB,2FAAkC;QAQ4B,0DAAsD;QAAtD,wJAAsD;;;;;;;;;;;;;;;;;;;;;;;;;;ACrClG;AACK;AACN;AACU;;AAEzB,MAAM,iBAAiB;CAG7B;AAEM,MAAM,eAAe;CAK3B;AAOM,MAAM,8BAA8B;IAS1C,YAAoB,OAAmB;QAAnB,YAAO,GAAP,OAAO,CAAY;QAN7B,gBAAW,GAA0B,IAAI,uDAAY,EAAW,CAAC;QACjE,YAAO,GAAgC,IAAI,uDAAY,EAAiB,CAAC;QACzE,UAAK,GAAgC,IAAI,uDAAY,EAAiB,CAAC;QACvE,iBAAY,GAAoC,IAAI,uDAAY,EAAqB,CAAC;QACtF,eAAU,GAAkC,IAAI,uDAAY,EAAmB,CAAC;IAE/C,CAAC;IAE5C,eAAe;QACd,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,UAAU,CAAC,GAAG,EAAE;YACf,mCAAC,CAAC,4BAA4B,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE5B,mCAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;gBAC/B,IAAI,EAAE,GAAkB,CAAC,CAAC,aAAa,CAAC;gBACxC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;YACH,mCAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;gBAC7B,IAAI,EAAE,GAAkB,CAAC,CAAC,aAAa,CAAC;gBACxC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;YAEH,mCAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE;gBACrC,IAAI,CAAC,GAAe,GAAG,CAAC,aAAa,CAAC;gBACtC,IAAI,OAAO,GAAG,KAAK,CAAC;gBACpB,IAAI,MAAM,GAAG,KAAK,CAAC;gBACnB,IAAI,IAAI,CAAC;gBACT,IAAI,aAAa,CAAC;gBAClB,IAAI,cAAc,CAAC;gBACnB,IAAI,QAAQ,CAAC;gBACb,IAAI,CAAC,GAAG,mCAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBACzC,IAAI,CAAC,CAAC,MAAM,EAAE;oBACb,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;oBACxC,OAAO,GAAG,IAAI,CAAC;iBACf;qBAAM;oBACN,IAAI,mCAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE;wBAC3C,OAAO;qBACP;oBAED,MAAM,SAAS,GAAG,mCAAC,CAAC,cAAc,CAAC,CAAC,SAAS,EAAE,CAAC;oBAChD,MAAM,WAAW,GAAG,mCAAC,CAAC,cAAc,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC;oBAEnD,MAAM,SAAS,GAAG,mCAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;oBACrF,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,GAAG,SAAS,GAAG,WAAW,CAAC;oBACtD,MAAM,QAAQ,GAAG,SAAS;yBACxB,OAAO,EAAE;yBACT,OAAO,EAAE;yBACT,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAe,CAAE,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;oBAEtD,CAAC,GAAG,mCAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAC9B,IAAI,CAAC,CAAC,MAAM,EAAE;wBACb,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACtB,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC;wBAEhB,IAAI,CAAC,MAAM,EAAE;4BACZ,OAAO;yBACP;wBAED,IAAI,CAAC,GAAG,mCAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;wBAClD,IAAI,YAAY,GAAG,IAAI,CAAC;wBACxB,IAAI,CAAC,CAAC,MAAM,EAAE;4BACb,QAAQ,GAAG,CAAC,CAAC;4BACb,YAAY,GAAG,KAAK,CAAC;yBACrB;6BAAM;4BACN,CAAC,GAAG,mCAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;yBAC/C;wBACD,IAAI,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;wBAClD,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;wBAChC,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;wBAC9C,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;wBACtB,MAAM,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;wBACnC,MAAM,SAAS,GAAiB,aAAa,CAAC,CAAC,CAAE,CAAC,WAAW,CAAC;wBAC9D,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;wBAEvD,IAAI,YAAY,EAAE;4BACjB,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;yBACtD;wBAED,IAAI,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;wBAClD,cAAc,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;qBAC1C;iBACD;gBACD,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE;oBACxB,OAAO;iBACP;gBAED,CAAC,CAAC,cAAc,EAAE,CAAC;gBAEnB,IAAI,OAAO,EAAE;oBACZ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;wBACtB,UAAU,EAAE,CAAC;wBACb,aAAa;qBACb,CAAC,CAAC;iBACH;qBAAM,IAAI,MAAM,EAAE;oBAClB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;wBACpB,UAAU,EAAE,CAAC;wBACb,QAAQ;wBACR,IAAI;wBACJ,QAAQ,EAAE,cAAc;qBACxB,CAAC,CAAC;iBACH;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,EAAE,GAAG,CAAC,CAAC;IACT,CAAC;IAED,WAAW;QACV,mCAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3B,mCAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzB,mCAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAChC,CAAC;IAED,YAAY,CAAC,GAAG,IAAW;QAC1B,IAAI,CAAC,IAAI,EAAE;YACV,OAAO;SACP;QAED,IAAI,GAAG,GAAG,mCAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAExC,IAAI,KAAK,GAAG,KAAK,CAAC;QAElB,QAAQ,IAAI,CAAC,MAAM,EAAE;YACpB,KAAK,CAAC;gBACL,OAAO;YACR,KAAK,CAAC;gBACL,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9C,OAAO,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,KAAK,CAAC;gBACL,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvD,OAAO,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,KAAK,CAAC;gBACL,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChE,OAAO,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,KAAK,CAAC;gBACL,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzE,OAAO,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7D;gBACC,MAAM;SACP;IACF,CAAC;;4GA9IW,8BAA8B;4HAA9B,8BAA8B;;;;;;;;;;;;;;;;;;AC1BpC,MAAM,MAAM;IAElB,SAAS,CAAC,KAAsB,EAAE,IAAS;QAC1C,2CAA2C;QAC3C,OAAO,KAAK,IAAI,IAAI,CAAC;IACtB,CAAC;;4DALW,MAAM;4GAAN,MAAM;;;;;;;;;;;;;;;;;;;;;;ACMZ,MAAM,qBAAqB;IAWjC,YACS,KAAkB;QAAlB,UAAK,GAAL,KAAK,CAAa;QAX3B,aAAQ,GAAG;YACV,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,UAAU;SAChB;QACD,sBAAiB,GAAG;YACnB,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,IAAI;SACV;IAKE,CAAC;IAJJ,IAAI,eAAe,KAAa,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IAMhE,UAAU,CAAC,IAAY;QACtB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC1B,CAAC;;0FAlBW,qBAAqB;mHAArB,qBAAqB;QCXlC,4EAMC;QAFA,6IAAS,0DAA8C,IAAC;QAGxD,uDACD;QAAA,4DAAS;;QALR,2HAAsD;QAItD,0DACD;QADC,uHACD;;;;;;;;;;;;;;;;;;;;;;ACR+E;;;;;;;;ICE9E,4EAA2G;IAAlB,2SAAS,wEAAO,KAAC;IAAC,uDAAe;IAAA,4DAAS;;;IAAhE,qFAAqB;IAAmB,0DAAe;IAAf,iFAAe;;ADKpH,MAAM,0BAA0B;IALvC;QAMU,cAAS,GAAW,IAAI,CAAC;QACzB,kBAAa,GAAW,QAAQ,CAAC;QACjC,aAAQ,GAAY,KAAK,CAAC;QAC1B,YAAO,GAAY,KAAK,CAAC;QACzB,eAAU,GAAY,KAAK,CAAC;QAC3B,WAAM,GAAG,IAAI,uDAAY,EAAQ,CAAC;QAClC,cAAS,GAAG,IAAI,uDAAY,EAAQ,CAAC;KAmB/C;IAjBA,QAAQ;QACP,IAAI,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;SAC7B;IACF,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAED,MAAM;QACL,IAAI,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,OAAO;SACP;QACD,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;;oGAzBW,0BAA0B;wHAA1B,0BAA0B;QCPvC,yEAA0D;QACzD,qEAAoB;QACpB,4HAAmI;QACnI,4EAAsC;QAAnB,kJAAS,YAAQ,IAAC;QAAC,uDAAmB;QAAA,4DAAS;;QADzD,0DAA6B;QAA7B,iGAA6B;QACA,0DAAmB;QAAnB,kFAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACKnD,MAAM,0BAA0B;;oGAA1B,0BAA0B;wHAA1B,0BAA0B;QCRvC,yEAAiE;QAC1D,uDAAW;QAAA,4DAAM;QACtB,qEAAoB;QACpB,4EAAkF;QAAU,gEAAK;QAAA,4DAAW;;QAFvG,0DAAW;QAAX,0EAAW;;;;;;;;;;;;;;;;;;;;;;;ACA2B;AAC0B;AACC;;;;;AAUjE,MAAM,yBAAyB;IAQrC,YACS,KAAqB,EACrB,MAAc;QADd,UAAK,GAAL,KAAK,CAAgB;QACrB,WAAM,GAAN,MAAM,CAAQ;QAJb,WAAM,GAAG,IAAI,uDAAY,EAAW,CAAC;QAM9C,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CACjC,sDAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,YAAY,0DAAa,CAAC,EACjD,mDAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EACrB,mDAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,OAAO,CAAC,CAAC,UAAU,EAAE;gBACpB,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;aACjB;YACD,OAAO,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;aACF,SAAS,CAAC,CAAC,YAAY,EAAE,EAAE;YAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,KAAK,YAAY,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,WAAW,CAAC,MAAe;QAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;;kGA5BW,yBAAyB;uHAAzB,yBAAyB;QCbtC,yEAAoB;QACf,uDAAW;QAAA,4DAAK;QACpB,qEAAoB;QACpB,qFAIgC;QAA/B,kKAAU,uBAAmB,IAAC;QAC/B,4DAAkB;;QAPd,0DAAW;QAAX,0EAAW;QAGd,0DAAiB;QAAjB,8EAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IEOf,gFAKC;IAHA,wTAAY,uFAAsB,KAAC;IAGnC,4DACD;;;IAaD,2EAA4F;;;IAA3D,mFAAmB;;ADnBhD,MAAM,qBAAqB;IAejC,YAAoB,KAAmB;QAAnB,UAAK,GAAL,KAAK,CAAc;QAN9B,iBAAY,GAAG,KAAK,CAAC;QACrB,gBAAW,GAAG,KAAK,CAAC;QACpB,cAAS,GAAG,WAAW,CAAC;QACxB,yBAAoB,GAAG,EAAE,CAAC;QAInC,gDAAgD;QAChD,qBAAgB,GAAG,IAAI,CAAC;IAFmB,CAAC;IAG5C,eAAe;QACd,sFAAsF;QACtF,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAC/B,CAAC;IAED,WAAW;QACV,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YACpB,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,KAAK;SACd,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,EAAE,CAAC;IACpB,CAAC;IAED,cAAc,CAAC,EAAE;QAChB,wEAAwE;QACxE,IAAI,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,UAAU,EAAE,CAAC;SAClB;aAAM;YACN,IAAI,CAAC,WAAW,EAAE,CAAC;SACnB;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;QACtD,IAAI,YAAY,EAAE;YACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YAEtC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;gBACpB,QAAQ,EAAE,KAAK;aACf,CAAC,CAAC;SACH;aAAM;YACN,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;SACrC;QAED,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC;QAC/B,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAC/B,CAAC;IAED,WAAW;QACV,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,WAAW;QACV,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAC/B,CAAC;IAED,WAAW;QACV,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED,UAAU;QACT,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAC5B,CAAC;IAEO,sBAAsB;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAChC,IAAI,IAAI,GAAG,EAAE,CAAC;QAEd,MAAM,SAAS,GAAG,EAAE,CAAC;QAErB,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC,QAAQ,EAAE;YAC3C,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC/B;QAED,IAAI,iBAAiB,GAAG,EAAE,CAAC;QAC3B,IAAI,eAAe,GAAG,EAAE,CAAC;QACzB,IAAI,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAC3C,IAAI,UAAU,EAAE;YACf,UAAU,IAAI,GAAG,CAAC;SAClB;QACD,IAAI,OAAO,CAAC,QAAQ,EAAE;YACrB,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;SAC5D;QAED,IAAI,OAAO,CAAC,MAAM,EAAE;YACnB,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;SACxD;QAED,IAAI,iBAAiB,IAAI,eAAe,EAAE;YACzC,SAAS,CAAC,IAAI,CAAC,GAAG,UAAU,iBAAiB,iBAAiB,QAAQ,eAAe,EAAE,CAAC,CAAC;SACzF;aAAM,IAAI,iBAAiB,EAAE;YAC7B,SAAS,CAAC,IAAI,CAAC,GAAG,UAAU,cAAc,iBAAiB,EAAE,CAAC,CAAC;SAC/D;aAAM,IAAI,eAAe,EAAE;YAC3B,SAAS,CAAC,IAAI,CAAC,GAAG,UAAU,YAAY,eAAe,EAAE,CAAC,CAAC;SAC3D;QAED,IAAI,SAAS,CAAC,MAAM,EAAE;YACrB,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC7B;QAED,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAC/B,CAAC;;0FAxHW,qBAAqB;mHAArB,qBAAqB;;;;;;QCXlC,0EAAuD;QAGrD,4JAAU,iBAAa,IAAC,oGACd,iBAAa,IADC;QAKxB,6FAA4B;QAEzB,kEACD;QAAA,6HAMA;QAAA,4DAAkB;QACnB,wFAAuB;QAAA,uDAAuB;QAAA,4DAAwB;QAGvE,yEAMC;QACA,yEAAqF;QAErF,+HAA4F;QAC5F,sEAAwC;QACxC,gFAAkF;QAA1B,qJAAW,iBAAa,IAAC;QAAC,4DAAY;;QAhC7D,+EAAkB;QAEpD,0DAA+B;QAA/B,4FAA+B;QAU3B,0DAAkB;QAAlB,kFAAkB;QAME,0DAAuB;QAAvB,sFAAuB;QAYlC,0DAAmB;QAAnB,mFAAmB;QAEC,0DAAuB;QAAvB,oFAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChCsD;AAEpF;AAGqD;;;;;;;;;;;;ICKjF,4EAMC;IADA,6SAAS,kFAAiB,KAAC;IAE3B,2EAAU;IAAA,8DAAG;IAAA,4DAAW;;;ADVlB,MAAM,gBAAgB;CAG5B;AAOM,MAAM,sBAAsB;IAkClC,YACS,MAAqB,EACrB,MAAuB;QADvB,WAAM,GAAN,MAAM,CAAe;QACrB,WAAM,GAAN,MAAM,CAAiB;QA3BvB,WAAM,GAAY,IAAI,CAAC;QACvB,YAAO,GAAY,IAAI,CAAC;QACxB,oBAAe,GAAY,KAAK,CAAC;QACjC,cAAS,GAAY,IAAI,CAAC;QAE1B,kBAAa,GAAY,KAAK,CAAC;QAC/B,mBAAc,GAAY,KAAK,CAAC;QAChC,aAAQ,GAAY,KAAK,CAAC;QAC1B,eAAU,GAAY,KAAK,CAAC;QAC5B,cAAS,GAAY,IAAI,CAAC;QAC1B,qBAAgB,GAAY,KAAK,CAAC;QAClC,cAAS,GAAY,KAAK,CAAC;QAE1B,QAAG,GAAG,IAAI,uDAAY,EAAO,CAAC;QAC9B,SAAI,GAAG,IAAI,uDAAY,EAAO,CAAC;QAC/B,SAAI,GAAG,IAAI,uDAAY,EAAO,CAAC;QAC/B,WAAM,GAAG,IAAI,uDAAY,EAAO,CAAC;QACjC,gBAAW,GAAG,IAAI,uDAAY,EAAO,CAAC;QACtC,gBAAW,GAAG,IAAI,uDAAY,EAAoB,CAAC;QACnD,kBAAa,GAAG,IAAI,uDAAY,EAAO,CAAC;QACxC,cAAS,GAAG,IAAI,uDAAY,EAAkB,CAAC;IAQrD,CAAC;IAEL,WAAW,CAAC,OAAO;QAClB,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAC1C,IAAI,SAAS,GAAQ,EAAE,CAAC;YACxB,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAClB,SAAS,CAAC,YAAY,GAAG,MAAM,CAAC;aAChC;YAED,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;SACjC;QAED,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,mBAAmB,EAAE;YACnD,IAAI,CAAC,OAAO,EAAE,CAAC;SACf;QAED,IAAI,OAAO,CAAC,UAAU,EAAE;YACvB,IAAI,CAAC,eAAe,EAAE,CAAC;SACvB;IACF,CAAC;IAED,WAAW;QACV,IAAI,CAAC,WAAW,EAAE,CAAC;IACpB,CAAC;IAED,SAAS,CAAC,OAA6C;QACtD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,WAAW;QACV,IAAI,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;YAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;SAC3B;IACF,CAAC;IAED,OAAO,CAAC,IAA4B;QACnC,QAAQ,IAAI,CAAC,UAAU,EAAE;YACxB,KAAK,2DAAiB;gBACrB,MAAM,KAAK,GAAG,6CAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAC9E,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;oBACjB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAC7C;qBAAM;oBACN,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;wBAClB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;wBAClB,IAAI,CAAC,OAAO,EAAE,CAAC;qBACf;oBACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBACjC;gBACD,MAAM;YACP,KAAK,2DAAiB;gBACrB,0CAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpD,MAAM;YACP;gBACC,MAAM;SACP;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;IAChB,CAAC;IAED,SAAS,CAAC,CAAC;QACV,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC;IAED,OAAO;QACN,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IACrC,CAAC;IAED,eAAe,CAAC,MAAM,GAAG,EAAE;QAC1B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAEO,OAAO;QACd,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE;YAC1B,OAAO;SACP;QAED,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACvE,CAAC;IAEO,iBAAiB,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE;YAC7C,OAAO;SACP;QAED,+FAA+F;QAC/F,MAAM,CAAC,GAAW,CAAC,CAAC,WAAW,EAC9B,CAAC,GAAW,CAAC,CAAC,YAAY,CAAC;QAE5B,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE;YAClD,OAAO;SACP;QAED,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QAEpB,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC5D,CAAC;IAEO,WAAW,CAAC,CAAiB;QACpC,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IAEO,QAAQ,CAAC,IAAI;QACpB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,OAAO;SACP;QAED,IAAI,CAAC,MAAM;aACT,WAAW,CAAC;YACZ,OAAO,EAAE,wCAAwC,IAAI,CAAC,QAAQ,GAAG;YACjE,KAAK,EAAE,gBAAgB;YACvB,YAAY,EAAE,QAAQ;SACtB,CAAC;aACD,WAAW,EAAE;aACb,SAAS,CAAC,CAAC,MAAe,EAAE,EAAE;YAC9B,IAAI,CAAC,MAAM,EAAE;gBACZ,OAAO;aACP;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,aAAa,CAAC,CAAC;QACtB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;QAEpB,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;YACvB,KAAK,MAAM;gBACV,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrB,MAAM;YACP,KAAK,QAAQ;gBACZ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACpB,MAAM;YACP,KAAK,aAAa;gBACjB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACzB,MAAM;YACP,KAAK,UAAU;gBACd,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrB,MAAM;YACP;gBACC,IAAI,IAAI,CAAC,cAAc,EAAE;oBACxB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACrB,OAAO;iBACP;gBAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAmB;oBACvC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK;oBACrB,OAAO,EAAE,IAAI;iBACb,CAAC,CAAC;gBACH,MAAM;SACP;IACF,CAAC;IAEO,kBAAkB,CAAC,CAAC;QAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAEO,gBAAgB,CAAC,SAAc;QACtC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAE3D,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvE,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,WAAW,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAEO,eAAe;QACtB,MAAM,OAAO,GAAG,6CAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE7C,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;YACvD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YACvE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;SAC3B;QACD,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YACjE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;SACzB;QACD,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,EAAE;YACpF,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YACrE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;SACzB;QAED,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,CAAC;;4FA/NW,sBAAsB;oHAAtB,sBAAsB;QCjBnC,gFAQkB;QAElB,wHAQS;;QAhBR,yJAAuC;QAStC,0DAA+C;QAA/C,uHAA+C;;;;;;;;;;;;;;;;;;;;ACT4C;;;AAKtF,MAAM,oBAAoB;IAEhC,YAAoB,SAAuB;QAAvB,cAAS,GAAT,SAAS,CAAc;IAAI,CAAC;IAEhD,SAAS,CAAC,KAAc;QACvB,IAAI,KAAK,KAAK,IAAI;YAAE,KAAK,GAAG,CAAC,CAAC;QAC9B,IAAI,aAAa,GAAG,2IAAyD,CAAC,KAAK,CAAC,EACnF,IAAI,GAAG;YACN,+CAA+C,aAAa,uDAAuD;YACnH,oGAAoG;SACpG,CAAC;QAEH,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,CAAC;;wFAbW,oBAAoB;wIAApB,oBAAoB;;;;;;;;;;;;;;;;;;;;ACA1B,MAAM,iBAAiB;IAE7B,YAAoB,QAAoC;QAApC,aAAQ,GAAR,QAAQ,CAA4B;IAAI,CAAC;IAE7D,SAAS,CAAC,KAAqB;QAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC;;kFANW,iBAAiB;kIAAjB,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACPsB;AACL;AACmB;AACV;AACH;AACS;AAE9D,mBAAmB;AAC0C;AACE;AACN;AACI;AACE;AACA;AAE/D,2BAA2B;AACmG;AACjB;AACtC;AACZ;AACc;AAClB;AACQ;AACN;AACU;AACR;AACM;AACV;AACE;AACF;AACA;AACuB;AACR;AACb;AACE;AACE;AACS;AACN;AACT;AACM;AACA;AACJ;AACF;AAEvD,yBAAyB;AACsB;AACK;AACZ;AAExC,mBAAmB;AACoD;AACe;AAC7B;AACiB;AACJ;AACa;AAEnF,4BAA4B;AACiD;AAClB;AACa;AACT;AACyB;AACjC;AACM;AACO;AACA;AACA;AACT;AACwB;AACxB;AACK;AACT;AACW;AAE2C;AAC7B;AACM;AACsB;AAE5G,cAAc;AACiC;AACe;AACd;AACD;AACiB;AACN;AACO;AAC9B;AAEnC,mBAAmB;AAC2E;AACG;AACA;AACxC;AACD;AACwB;;AAIhF,6DAA6D;AAC7D,MAAM,mBAAmB,GAAU,CAAC,mEAAgB,CAAC,CAAC;AAEtD,MAAM,eAAe,GAAU,CAAC,wDAAW,EAAE,gEAAmB,CAAC,CAAC;AAElE,MAAM,gBAAgB,GAAU;IAC/B,kFAAqB;IACrB,sEAAe;IACf,mFAAqB;IACrB,kEAAa;IACb,0EAAiB;IACjB,oEAAc;IACd,8EAAmB;IACnB,sEAAe;IACf,4EAAkB;IAClB,kEAAa;IACb,oEAAc;IACd,kEAAa;IACb,kEAAa;IACb,wEAAmB;IACnB,yFAAwB;IACxB,iFAAoB;IACpB,oEAAc;IACd,sEAAe;IACf,wEAAgB;IAChB,iFAAoB;IACpB,2EAAiB;IACjB,oEAAc;IACd,kEAAa;IACb,wEAAgB;IAChB,wEAAgB;IAChB,kEAAa;CACb,CAAC;AAEF,MAAM,gBAAgB,GAAU;IAC/B,wEAAoB;IACpB,0EAAqB;IACrB,oEAAkB;IAClB,wEAAoB;IACpB,0EAAqB;IACrB,0EAAqB;CACrB,CAAC;AAEF,MAAM,UAAU,GAAU,CAAC,gFAAuB,EAAE,+FAAuB,EAAE,kEAAc,EAAE,mFAAkB,EAAE,+EAAgB,EAAE,4FAAsB,CAAC,CAAC;AAE3J,MAAM,KAAK,GAAU;IACpB,yDAAY;IACZ,wEAAkB;IAClB,0DAAY;IACZ,yDAAY;IACZ,0EAAoB;IACpB,oEAAiB;IACjB,2EAAoB;IACpB,6CAAM;CACN,CAAC;AAEF,MAAM,QAAQ,GAAU;IACvB,sFAAoB;IACpB,qEAAe;IACf,yEAAiB;IACjB,iEAAa;IACb,uEAAgB;IAChB,8EAAmB;IACnB,8EAAmB;IACnB,8EAAmB;IACnB,qEAAe;IACf,6FAAsB;IACtB,qEAAe;IACf,iEAAa;IACb,0EAAiB;IACjB,4EAAkB;IAClB,kFAAqB;IAErB,uHAA8B;IAC9B,wGAAyB;IACzB,0FAAqB;IACrB,2GAA0B;IAC1B,2GAA0B;IAC1B,+FAAoB;IACpB,qHAAuB;IAEvB,kGAAuB;IACvB,mEAAc;IACd,0FAAqB;CACrB,CAAC;AAwDK,MAAM,YAAY;;wEAAZ,YAAY;0GAAZ,YAAY;+GAzBb;QACV,KAAK;QACL,+DAAsB;QACtB,mEAAW;QACX;YACC,OAAO,EAAE,gEAAW;YACpB,QAAQ,EAAE,gFAAiB;YAC3B,IAAI,EAAE,CAAC,oEAAe,EAAE,8FAA+B,CAAC;SACxD;QACD;YACC,OAAO,EAAE,qDAAS;YAClB,IAAI,EAAE,CAAC,+DAAsB,CAAC;YAC9B,UAAU,EAAE,CAAC,OAA+B,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO;SAC9G;QACD;YACC,OAAO,EAAE,qEAAgB;YACzB,QAAQ,EAAE,sFAAuB;SACjC;QACD;YACC,OAAO,EAAE,oEAAe;YACxB,IAAI,EAAE,CAAC,+DAAsB,CAAC;YAC9B,UAAU,EAAE,CAAC,OAA+B,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO;SAC9G;KACD,YAlDA,0DAAY;QACZ,eAAe;QACf,gBAAgB;QAChB,gBAAgB;QAChB,mBAAmB;QAEnB,0DAAY;QACZ,8DAAc;QACd,mDAAW;QACX,wEAAmB,EA9FW,wDAAW,EAAE,gEAAmB,EAG/D,kFAAqB;QACrB,sEAAe;QACf,mFAAqB;QACrB,kEAAa;QACb,0EAAiB;QACjB,oEAAc;QACd,8EAAmB;QACnB,sEAAe;QACf,4EAAkB;QAClB,kEAAa;QACb,oEAAc;QACd,kEAAa;QACb,kEAAa;QACb,wEAAmB;QACnB,yFAAwB;QACxB,iFAAoB;QACpB,oEAAc;QACd,sEAAe;QACf,wEAAgB;QAChB,iFAAoB;QACpB,2EAAiB;QACjB,oEAAc;QACd,kEAAa;QACb,wEAAgB;QAChB,wEAAgB;QAChB,kEAAa,EAIb,wEAAoB;QACpB,0EAAqB;QACrB,oEAAkB;QAClB,wEAAoB;QACpB,0EAAqB;QACrB,0EAAqB,EAvCc,mEAAgB,EAyGlD,0DAAY;QACZ,8DAAc;QACd,mDAAW;QACX,wEAAmB;oIA+BR,YAAY,mBAjGE,gFAAuB,EAAE,+FAAuB,EAAE,kEAAc,EAAE,mFAAkB,EAAE,+EAAgB,EAAE,4FAAsB,EAcxJ,sFAAoB;QACpB,qEAAe;QACf,yEAAiB;QACjB,iEAAa;QACb,uEAAgB;QAChB,8EAAmB;QACnB,8EAAmB;QACnB,8EAAmB;QACnB,qEAAe;QACf,6FAAsB;QACtB,qEAAe;QACf,iEAAa;QACb,0EAAiB;QACjB,4EAAkB;QAClB,kFAAqB;QAErB,uHAA8B;QAC9B,wGAAyB;QACzB,0FAAqB;QACrB,2GAA0B;QAC1B,2GAA0B;QAC1B,+FAAoB;QACpB,qHAAuB;QAEvB,kGAAuB;QACvB,mEAAc;QACd,0FAAqB,EArCrB,yDAAY;QACZ,wEAAkB;QAClB,0DAAY;QACZ,yDAAY;QACZ,0EAAoB;QACpB,oEAAiB;QACjB,2EAAoB;QACpB,6CAAM,aAmCL,0DAAY,EArFkB,wDAAW,EAAE,gEAAmB,EAG/D,kFAAqB;QACrB,sEAAe;QACf,mFAAqB;QACrB,kEAAa;QACb,0EAAiB;QACjB,oEAAc;QACd,8EAAmB;QACnB,sEAAe;QACf,4EAAkB;QAClB,kEAAa;QACb,oEAAc;QACd,kEAAa;QACb,kEAAa;QACb,wEAAmB;QACnB,yFAAwB;QACxB,iFAAoB;QACpB,oEAAc;QACd,sEAAe;QACf,wEAAgB;QAChB,iFAAoB;QACpB,2EAAiB;QACjB,oEAAc;QACd,kEAAa;QACb,wEAAgB;QAChB,wEAAgB;QAChB,kEAAa,EAIb,wEAAoB;QACpB,0EAAqB;QACrB,oEAAkB;QAClB,wEAAoB;QACpB,0EAAqB;QACrB,0EAAqB,EAvCc,mEAAgB,EA6FlD,0DAAY;QACZ,8DAAc;QACd,mDAAW;QACX,wEAAmB,aA9FW,wDAAW,EAAE,gEAAmB,EAG/D,kFAAqB;QACrB,sEAAe;QACf,mFAAqB;QACrB,kEAAa;QACb,0EAAiB;QACjB,oEAAc;QACd,8EAAmB;QACnB,sEAAe;QACf,4EAAkB;QAClB,kEAAa;QACb,oEAAc;QACd,kEAAa;QACb,kEAAa;QACb,wEAAmB;QACnB,yFAAwB;QACxB,iFAAoB;QACpB,oEAAc;QACd,sEAAe;QACf,wEAAgB;QAChB,iFAAoB;QACpB,2EAAiB;QACjB,oEAAc;QACd,kEAAa;QACb,wEAAgB;QAChB,wEAAgB;QAChB,kEAAa,EAIb,wEAAoB;QACpB,0EAAqB;QACrB,oEAAkB;QAClB,wEAAoB;QACpB,0EAAqB;QACrB,0EAAqB,EAvCc,mEAAgB,EAyGlD,0DAAY;QACZ,8DAAc;QACd,mDAAW;QACX,wEAAmB,EAlEM,gFAAuB,EAAE,+FAAuB,EAAE,kEAAc,EAAE,mFAAkB,EAAE,+EAAgB,EAAE,4FAAsB,EAGxJ,yDAAY;QACZ,wEAAkB;QAClB,0DAAY;QACZ,yDAAY;QACZ,0EAAoB;QACpB,oEAAiB;QACjB,2EAAoB;QACpB,6CAAM,EAIN,sFAAoB;QACpB,qEAAe;QACf,yEAAiB;QACjB,iEAAa;QACb,uEAAgB;QAChB,8EAAmB;QACnB,8EAAmB;QACnB,8EAAmB;QACnB,qEAAe;QACf,6FAAsB;QACtB,qEAAe;QACf,iEAAa;QACb,0EAAiB;QACjB,4EAAkB;QAClB,kFAAqB;QAErB,uHAA8B;QAC9B,wGAAyB;QACzB,0FAAqB;QACrB,2GAA0B;QAC1B,2GAA0B;QAC1B,+FAAoB;QACpB,qHAAuB;QAEvB,kGAAuB;QACvB,mEAAc;QACd,0FAAqB;;;;;;;;;;;;;;;;;;AC9KC;AASU;;;;AAU1B,MAAM,cAAc;IAa1B,kBAAkB;QACjB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC;QACpF,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;;4EAnBW,cAAc;4GAAd,cAAc;+EAKZ,iEAAY;+EAJT,oEAAe;+EACf,oEAAe;+EACf,8DAAS;+EACT,iEAAY;;;;;;;;;kEAGlB,6DAAQ;;;;;;QCnCpB,2EAA2C;QAC1C,6DAAyB;QAC1B,4DAAQ;;QAFS,sFAAyB;;;;;;;;;;;;;;;;;;;ACKnC,MAAM,kBAAkB;IAC9B,SAAS,CAAC,KAAa,EAAE,IAAU;QAClC,MAAM,QAAQ,GAAY,IAAe,IAAI,IAAI,CAAC;QAClD,IAAI,CAAC,KAAK,EAAE;YACX,OAAO,QAAQ,CAAC;SAChB;QAED,OAAO,EAAE,GAAG,KAAK,CAAC;IACnB,CAAC;;oFARW,kBAAkB;gIAAlB,kBAAkB;;;;;;;;;;;;;;;;;;;;;ACL+C;AACc;AAC9C;AACO;;AAE9C,MAAM,eAAe,GAAG,IAAI,yDAAc,CAAS,gBAAgB,CAAC,CAAC;AAGrE,MAAM,kBAAkB;IAC9B,YAA+C,cAAsB;QAAtB,mBAAc,GAAd,cAAc,CAAQ;IAAG,CAAC;IAEzE,SAAS,CAAC,GAAqB,EAAE,IAAiB;QACjD,IAAI,wDAAS,EAAE,EAAE;YAChB,4DAA4D;YAC5D,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;SACpC;QAED,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC;QACvE,MAAM,mBAAmB,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;QAEjD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAC3B,uDAAO,CAAC,mBAAmB,CAAC,EAC5B,0DAAU,CAAC,CAAC,GAAG,EAAE,EAAE;YAClB,OAAO,gDAAU,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC,CAAC,CACF,CAAC;IACH,CAAC;;oFAlBW,kBAAkB,yDACV,eAAe;mHADvB,kBAAkB,WAAlB,kBAAkB;;;;;;;;;;;;;;;;;;ACRmB;AAClD,mFAAmF;AACnF,8FAA8F;AAC9F,yEAAyE;AACzE,gFAAgF;AAEhF,OAAO,CAAC,GAAG,CAAC,iNAAW,CAAC,CAAC;AAClB,MAAM,WAAW,GAAG;IAC1B,UAAU,EAAE,KAAK;IACjB,GAAG,EAAE,IAAI;IACT,OAAO,EAAE,KAAwB,CAAC,CAAC,CAAO,0CAAoB,CAAC,CAAC,CAAC,iNAAW;CAC5E,CAAC;;;;;;;;;;;;;;;;;;;ACV6C;AACU;AACd;AACY;AAEvD,qEAAe,CAAC,sFAAsF,CAAC,CAAC;AAExG,IAAI,6EAAsB,EAAE;IAC3B,6DAAc,EAAE,CAAC;CACjB;AAED,wEAAwB,CAAC,eAAe,CAAC,qDAAS,CAAC,CAAC;;;;;;;;;;;ACZpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["./src/app/_guards/auth.guard.ts","./src/app/_guards/index.ts","./src/app/_guards/logout.guard.ts","./src/app/accessibility/alert/alert.component.ts","./src/app/accessibility/alert/alert.component.html","./src/app/accessibility/live-reader.service.ts","./src/app/accessibility/live-reader/live-reader.component.ts","./src/app/accessibility/live-reader/live-reader.component.html","./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/appointments/appointment-renderer.service.ts","./src/app/cases/cases.service.ts","./src/app/common-editing/additional-session-edit/additional-session-edit.component.ts","./src/app/common-editing/additional-session-edit/additional-session-edit.component.html","./src/app/common-editing/additional-session-edit/additional-session-edit.service.ts","./src/app/common-editing/additional-session-status.service.ts","./src/app/common-editing/calendar-common/calendar-common.service.ts","./src/app/common-editing/client-details-edit/client-details-edit.component.ts","./src/app/common-editing/client-details-edit/client-details-edit.component.html","./src/app/common-editing/client-partner-edit/client-partner-edit.component.ts","./src/app/common-editing/client-partner-edit/client-partner-edit.component.html","./src/app/common-editing/comm-address-edit/comm-addr-display-edit/comm-addr-display-edit.component.ts","./src/app/common-editing/comm-address-edit/comm-addr-display-edit/comm-addr-display-edit.component.html","./src/app/common-editing/comm-address-edit/comm-addr-edit-modal/comm-addr-edit-modal.component.ts","./src/app/common-editing/comm-address-edit/comm-addr-edit-modal/comm-addr-edit-modal.component.html","./src/app/common-editing/comm-address-edit/comm-addr-editor/comm-addr-editor.component.ts","./src/app/common-editing/comm-address-edit/comm-addr-editor/comm-addr-editor.component.html","./src/app/common-editing/common-editing.module.ts","./src/app/common-editing/contract-terms/contract-notes-display/contract-notes-display.component.ts","./src/app/common-editing/contract-terms/contract-notes-display/contract-notes-display.component.html","./src/app/common-editing/contract-terms/contract-service-type-items-display/contract-service-type-items-display.component.ts","./src/app/common-editing/contract-terms/contract-service-type-items-display/contract-service-type-items-display.component.html","./src/app/common-editing/contract-terms/contract-terms.component.ts","./src/app/common-editing/contract-terms/contract-terms.component.html","./src/app/common-editing/contract-terms/contract-terms.service.ts","./src/app/common-editing/extended-details/extended-details-edit-other/extended-details-edit-other.component.ts","./src/app/common-editing/extended-details/extended-details-edit-other/extended-details-edit-other.component.html","./src/app/common-editing/extended-details/extended-details-edit/extended-details-edit.component.ts","./src/app/common-editing/extended-details/extended-details-edit/extended-details-edit.component.html","./src/app/common-editing/extended-details/extended-details-items-display/extended-details-items-display.component.ts","./src/app/common-editing/extended-details/extended-details-items-display/extended-details-items-display.component.html","./src/app/common-editing/extended-details/extended-details.ts","./src/app/common-editing/organisation-hierarchy-edit/organisation-hierarchy-edit.component.ts","./src/app/common-editing/organisation-hierarchy-edit/organisation-hierarchy-edit.component.html","./src/app/common-editing/personal-details-edit/personal-details-edit.component.ts","./src/app/common-editing/personal-details-edit/personal-details-edit.component.html","./src/app/common-editing/selected-case.service.ts","./src/app/common-editing/statistic-container/statistic-container.component.ts","./src/app/common-editing/statistic-container/statistic-container.component.html","./src/app/common-editing/statistic-headers/client-edit/client-edit-base.component.ts","./src/app/common-editing/statistic-headers/client-edit/client-edit-details/client-edit-details.component.ts","./src/app/common-editing/statistic-headers/client-edit/client-edit-details/client-edit-details.component.html","./src/app/common-editing/statistic-headers/client-edit/client-edit-sessions/client-edit-sessions.component.ts","./src/app/common-editing/statistic-headers/client-edit/client-edit-sessions/client-edit-sessions.component.html","./src/app/common-editing/statistic-headers/client-edit/client-edit-sessions/client-session-edit/client-session-edit.component.ts","./src/app/common-editing/statistic-headers/client-edit/client-edit-sessions/client-session-edit/client-session-edit.component.html","./src/app/common-editing/statistic-headers/client-edit/client-edit-statistics/client-edit-statistics.component.ts","./src/app/common-editing/statistic-headers/client-edit/client-edit-statistics/client-edit-statistics.component.html","./src/app/common-editing/statistic-headers/client-edit/client-edit.component.ts","./src/app/common-editing/statistic-headers/client-edit/client-edit.component.html","./src/app/common-editing/statistic-headers/clients/clients.component.ts","./src/app/common-editing/statistic-headers/clients/clients.component.html","./src/app/common-editing/statistic-headers/header-edit/header-edit-statistics/header-edit-statistics.component.ts","./src/app/common-editing/statistic-headers/header-edit/header-edit-statistics/header-edit-statistics.component.html","./src/app/common-editing/statistic-headers/header-edit/header-edit-summary/header-edit-summary.component.ts","./src/app/common-editing/statistic-headers/header-edit/header-edit-summary/header-edit-summary.component.html","./src/app/common-editing/statistic-headers/header-edit/header-edit.component.ts","./src/app/common-editing/statistic-headers/header-edit/header-edit.component.html","./src/app/common-editing/statistic-headers/headers/headers.component.ts","./src/app/common-editing/statistic-headers/headers/headers.component.html","./src/app/common-editing/statistic-headers/statistic-headers.component.ts","./src/app/common-editing/statistic-headers/statistic-headers.component.html","./src/app/common-editing/statistics-editors/container-controls/container-controls.component.ts","./src/app/common-editing/statistics-editors/container-controls/container-controls.component.html","./src/app/common-editing/statistics-editors/container-individual-grid/container-individual-grid.component.ts","./src/app/common-editing/statistics-editors/container-individual-grid/container-individual-grid.component.html","./src/app/common-editing/statistics-editors/container-pick-and-add-two-num/container-pick-and-add-two-num-item/container-pick-and-add-two-num.-itemcomponent.ts","./src/app/common-editing/statistics-editors/container-pick-and-add-two-num/container-pick-and-add-two-num-item/container-pick-and-add-two-num-item.component.html","./src/app/common-editing/statistics-editors/container-pick-and-add-two-num/container-pick-and-add-two-num.component.ts","./src/app/common-editing/statistics-editors/container-pick-and-add-two-num/container-pick-and-add-two-num.component.html","./src/app/common-editing/statistics-editors/container-pick-list-grid/chips-picker/chips-picker.component.ts","./src/app/common-editing/statistics-editors/container-pick-list-grid/chips-picker/chips-picker.component.html","./src/app/common-editing/statistics-editors/container-pick-list-grid/container-pick-list-grid.component.ts","./src/app/common-editing/statistics-editors/container-pick-list-grid/container-pick-list-grid.component.html","./src/app/common-editing/statistics-editors/container-two-num/add-choice-modal/add-choice-modal.component.ts","./src/app/common-editing/statistics-editors/container-two-num/add-choice-modal/add-choice-modal.component.html","./src/app/common-editing/statistics-editors/container-two-num/container-two-num-plus-minus-edit/container-two-num-plus-minus-edit.component.ts","./src/app/common-editing/statistics-editors/container-two-num/container-two-num-plus-minus-edit/container-two-num-plus-minus-edit.component.html","./src/app/common-editing/statistics-editors/container-two-num/container-two-num.component.ts","./src/app/common-editing/statistics-editors/container-two-num/container-two-num.component.html","./src/app/common-editing/statistics-editors/custom/boolean-goal-display/boolean-goal-display.component.ts","./src/app/common-editing/statistics-editors/custom/boolean-goal-display/boolean-goal-display.component.html","./src/app/common-editing/statistics-editors/custom/clinical-profile-display/clinical-profile-display.component.ts","./src/app/common-editing/statistics-editors/custom/clinical-profile-display/clinical-profile-display.component.html","./src/app/common-editing/statistics-editors/custom/completion-percent/completion-percent.component.ts","./src/app/common-editing/statistics-editors/custom/completion-percent/completion-percent.component.html","./src/app/common-editing/statistics-editors/custom/eap-services-client-questionnaire-display/eap-services-client-questionnaire-display.component.ts","./src/app/common-editing/statistics-editors/custom/eap-services-client-questionnaire-display/eap-services-client-questionnaire-display.component.html","./src/app/common-editing/statistics-editors/custom/eap-services-client-questionnaire.service.ts","./src/app/common-editing/statistics-editors/custom/eap-services-client-questionnaire/eap-services-client-questionnaire.component.ts","./src/app/common-editing/statistics-editors/custom/eap-services-client-questionnaire/eap-services-client-questionnaire.component.html","./src/app/common-editing/statistics-editors/custom/other-goal-display/other-goal-display.component.ts","./src/app/common-editing/statistics-editors/custom/other-goal-display/other-goal-display.component.html","./src/app/common-editing/statistics-editors/custom/risk-profile-display/risk-profile-display.component.ts","./src/app/common-editing/statistics-editors/custom/risk-profile-display/risk-profile-display.component.html","./src/app/common-editing/statistics-editors/custom/risk-profile-factor/risk-profile-factor.component.ts","./src/app/common-editing/statistics-editors/custom/risk-profile-factor/risk-profile-factor.component.html","./src/app/common-editing/statistics-editors/editor-hours-minutes/editor-hours-minutes.component.ts","./src/app/common-editing/statistics-editors/editor-hours-minutes/editor-hours-minutes.component.html","./src/app/common-editing/statistics-editors/editor-numeric-textbox-dec/editor-numeric-textbox-dec.component.ts","./src/app/common-editing/statistics-editors/editor-numeric-textbox-dec/editor-numeric-textbox-dec.component.html","./src/app/common-editing/statistics-editors/editor-numeric-textbox-int/editor-numeric-textbox-int.component.ts","./src/app/common-editing/statistics-editors/editor-numeric-textbox-int/editor-numeric-textbox-int.component.html","./src/app/common-editing/statistics-editors/editor-picklist/editor-picklist.component.ts","./src/app/common-editing/statistics-editors/editor-picklist/editor-picklist.component.html","./src/app/common-editing/statistics-editors/editor-textbox-multi/editor-textbox-multi.component.ts","./src/app/common-editing/statistics-editors/editor-textbox-multi/editor-textbox-multi.component.html","./src/app/common-editing/statistics-editors/editor-textbox/editor-textbox.component.ts","./src/app/common-editing/statistics-editors/editor-textbox/editor-textbox.component.html","./src/app/common-editing/statistics-editors/editor-two-num/editor-two-num.component.ts","./src/app/common-editing/statistics-editors/editor-two-num/editor-two-num.component.html","./src/app/common-editing/statistics-editors/statistic-editor-base.ts","./src/app/common-editing/statistics/statistics.component.ts","./src/app/common-editing/statistics/statistics.component.html","./src/app/confirm-dialog/confirm-dialog.component.ts","./src/app/confirm-dialog/confirm-dialog.component.html","./src/app/content-type.interceptor.ts","./src/app/dashboard/dashboard.component.ts","./src/app/dashboard/dashboard.component.html","./src/app/httpRetryInterceptor.ts","./src/app/i-cal-details-dialog/i-cal-details-dialog.component.ts","./src/app/i-cal-details-dialog/i-cal-details-dialog.component.html","./src/app/i-cal-details-dialog/i-cal-dialog.service.ts","./src/app/i-cal-details-dialog/iCalUrls.model.ts","./src/app/interceptor.ts","./src/app/interfaces/IForm.ts","./src/app/interfaces/index.ts","./src/app/login/login.component.ts","./src/app/login/login.component.html","./src/app/main/main.component.ts","./src/app/main/main.component.html","./src/app/message-dialog/message-dialog.component.ts","./src/app/message-dialog/message-dialog.component.html","./src/app/practice-navigator/practice-navigator.component.ts","./src/app/practice-navigator/practice-navigator.component.html","./src/app/professional-dashboard/active-cases/active-cases.component.ts","./src/app/professional-dashboard/active-cases/active-cases.component.html","./src/app/professional-dashboard/active-invoices/active-invoices.component.ts","./src/app/professional-dashboard/active-invoices/active-invoices.component.html","./src/app/professional-dashboard/dashboard-appointments/dashboard-appointments.component.ts","./src/app/professional-dashboard/dashboard-appointments/dashboard-appointments.component.html","./src/app/professional-dashboard/professional-dashboard.component.ts","./src/app/professional-dashboard/professional-dashboard.component.html","./src/app/profile/profile.component.ts","./src/app/profile/profile.component.html","./src/app/profile/shared-forms/address-edit.component.ts","./src/app/profile/shared-forms/address-edit.component.html","./src/app/profile/shared-forms/search-postcode/search-postcode.component.ts","./src/app/profile/shared-forms/search-postcode/search-postcode.component.html","./src/app/profile/shared-forms/search-postcode/search-postcode.service.ts","./src/app/search/case-search/case-search.component.ts","./src/app/search/case-search/case-search.component.html","./src/app/search/case-search/cases-search.service.ts","./src/app/search/invoice-search/invoice-search.component.ts","./src/app/search/invoice-search/invoice-search.component.html","./src/app/search/invoice-search/invoices-search.service.ts","./src/app/search/search.component.ts","./src/app/search/search.component.html","./src/app/services/ag-grid.service.ts","./src/app/services/announcements.service.ts","./src/app/services/authentication.service.ts","./src/app/services/auths.service.ts","./src/app/services/base-service.ts","./src/app/services/change-notification.ts","./src/app/services/check-save-changes.service.ts","./src/app/services/common.service.ts","./src/app/services/config.service.ts","./src/app/services/confirm-dialog.model.ts","./src/app/services/confirm-dialog.service.ts","./src/app/services/crud.service.ts","./src/app/services/customisation.service.ts","./src/app/services/dashboard.service.ts","./src/app/services/date-utils.ts","./src/app/services/dialog-result.ts","./src/app/services/error-handler.ts","./src/app/services/form-utils.ts","./src/app/services/forms.service.ts","./src/app/services/index.ts","./src/app/services/json.service.ts","./src/app/services/lang.service.ts","./src/app/services/loading-state.service.ts","./src/app/services/logger.service.ts","./src/app/services/logout.service.ts","./src/app/services/message-dialog.model.ts","./src/app/services/message-dialog.service.ts","./src/app/services/modal.service.ts","./src/app/services/msal-configuration.service.ts","./src/app/services/msal-dynamic-configuration.service.ts","./src/app/services/search-state.service.ts","./src/app/services/server-data.ts","./src/app/services/session-storage-management.service.ts","./src/app/services/signalr.service.ts","./src/app/services/syncfusion.service.ts","./src/app/services/utils.service.ts","./src/app/services/warnings-dialog/warnings-dialog.component.ts","./src/app/services/warnings-dialog/warnings-dialog.component.html","./src/app/services/warnings.service.ts","./src/app/shared/accessibility/mat-option.directive.ts","./src/app/shared/accessibility/mat-sort-header.directive.ts","./src/app/shared/accessibility/mat-sort.directive.ts","./src/app/shared/apply-cancel/apply-cancel.component.ts","./src/app/shared/apply-cancel/apply-cancel.component.html","./src/app/shared/appointment-phone.pipe.ts","./src/app/shared/base-edit/base-edit.component.ts","./src/app/shared/base-view/base-view-component.ts","./src/app/shared/block-non-number.directive.ts","./src/app/shared/breakify.pipe.ts","./src/app/shared/case-search-item/case-search-item.component.ts","./src/app/shared/case-search-item/case-search-item.component.html","./src/app/shared/duration.pipe.ts","./src/app/shared/equal-validator/equal-validator.directive.ts","./src/app/shared/file-size.pipe.ts","./src/app/shared/focus/focus.directive.ts","./src/app/shared/forms/base-component.ts","./src/app/shared/forms/button-toggle.component.ts","./src/app/shared/forms/button.component.ts","./src/app/shared/forms/checkbox.component.ts","./src/app/shared/forms/date-component.ts","./src/app/shared/forms/display.component.ts","./src/app/shared/forms/html-editor.component.ts","./src/app/shared/forms/icon-button.component.ts","./src/app/shared/forms/radio-group.component.ts","./src/app/shared/forms/select.component.ts","./src/app/shared/forms/switch.component.ts","./src/app/shared/forms/text-area.component.ts","./src/app/shared/forms/text-plain.component.ts","./src/app/shared/forms/text.component.ts","./src/app/shared/full-calendar-scheduler/full-calendar-scheduler.component.ts","./src/app/shared/in.pipe.ts","./src/app/shared/lang-selector/lang-selector.component.ts","./src/app/shared/lang-selector/lang-selector.component.html","./src/app/shared/modal-dialog-footer/modal-dialog-footer.component.ts","./src/app/shared/modal-dialog-footer/modal-dialog-footer.component.html","./src/app/shared/modal-dialog-header/modal-dialog-header.component.ts","./src/app/shared/modal-dialog-header/modal-dialog-header.component.html","./src/app/shared/modal-route-header/modal-route-header.component.ts","./src/app/shared/modal-route-header/modal-route-header.component.html","./src/app/shared/search-filter/search-filter.component.ts","./src/app/shared/search-filter/search-filter.component.html","./src/app/shared/selection-grid/selection-grid.component.ts","./src/app/shared/selection-grid/selection-grid.component.html","./src/app/shared/session-alert-flag.pipe.ts","./src/app/shared/session-number.pipe.ts","./src/app/shared/shared.module.ts","./src/app/shared/table/table.component.ts","./src/app/shared/table/table.component.html","./src/app/shared/zero-to-text-pipe.pipe.ts","./src/app/timeoutInterceptor.ts","./src/environments/environment.ts","./src/main.ts","./node_modules/moment/locale/ sync ^\\.\\/.*$"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { Router, CanActivate } from '@angular/router';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\nimport { AuthenticationService } from '../services/authentication.service';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class AuthGuard implements CanActivate {\r\n\tconstructor(private router: Router, private jwtHelper: JwtHelperService) {}\r\n\r\n\tcanActivate() {\r\n\t\tif (this.isAuthenticated()) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// not logged in so redirect to login page\r\n\t\tthis.router.navigate(['/login']);\r\n\t\treturn false;\r\n\t}\r\n\r\n\tisAuthenticated() {\r\n\t\treturn !!sessionStorage.getItem(AuthenticationService.KEY_CURRENT_USER);\r\n\t}\r\n}\r\n","export * from './auth.guard';\r\nexport * from './logout.guard';","import { Injectable } from '@angular/core';\r\nimport { CanActivate } from '@angular/router';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\nimport { AuthenticationService } from '../services/authentication.service';\r\nimport { LogoutService } from '../services/logout.service';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class LogoutGuard implements CanActivate {\r\n\t\r\n\tconstructor(private jwtHelper: JwtHelperService, \r\n\t\tprivate logout: LogoutService,\r\n\t\tprivate authenticationService: AuthenticationService\r\n\t\t) {}\r\n\r\n\tcanActivate() {\r\n\t\t// Only allow logout if the user clicked the logout button.\r\n\t\tif (this.logout.loggingOut) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (this.isAuthenticated()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tisAuthenticated() {\r\n\t\tconst token = this.authenticationService.getToken();\r\n\r\n\t\tif (token) {\r\n\t\t\ttry {\r\n\t\t\t\tif (this.jwtHelper.isTokenExpired(token)) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t} catch (e) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn !!sessionStorage.getItem(AuthenticationService.KEY_CURRENT_USER);\r\n\t}\r\n}\r\n","import { Component, OnInit, Input, ViewChild, ElementRef, AfterViewInit } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'pp-alert',\r\n\ttemplateUrl: './alert.component.html',\r\n\tstyleUrls: ['./alert.component.scss']\r\n})\r\nexport class AlertComponent {\r\n\t@Input() opened: boolean = false;\r\n\t@Input() role: string = 'alert';\r\n\t@Input('aria-live') ariaLive: 'polite' | 'assertive' | 'off' = 'polite';\r\n}\r\n","
\r\n\t\r\n
\r\n","import { Injectable } from '@angular/core';\r\nimport { LiveAnnouncer } from '@angular/cdk/a11y';\r\n\r\nimport { interval, Observable } from 'rxjs';\r\nimport * as moment from 'moment';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class LiveReaderService {\r\n\tconstructor(private announcer: LiveAnnouncer) { }\r\n\r\n\tmessages: {\r\n\t\tmessage: string;\r\n\t\tpoliteness: string;\r\n\t\tduration: number;\r\n\t\taddedAt: Date | moment.Moment\r\n\t\tisValid?: boolean\r\n\t}[] = [];\r\n\r\n\tannounce(message: string, duration: number = 600) {\r\n\t\tconst msg = Object.defineProperty(\r\n\t\t\t{\r\n\t\t\t\tmessage,\r\n\t\t\t\tpoliteness: 'polite',\r\n\t\t\t\tduration,\r\n\t\t\t\taddedAt: moment(),\r\n\t\t\t},\r\n\t\t\t'isValid',\r\n\t\t\t{\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\tconst\r\n\t\t\t\t\t\tendDate = moment(this.addedAt).add(this.duration, 'ms'),\r\n\t\t\t\t\t\tcurrentDate = moment(),\r\n\t\t\t\t\t\tdiff = endDate.diff(currentDate, 'ms');\r\n\t\t\t\t\treturn diff > 0;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\tthis.messages = this.messages.filter(x => x.isValid);\r\n\t\tthis.messages.push(msg);\r\n\t}\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { LiveReaderService } from '../live-reader.service';\r\n\r\n@Component({\r\n\tselector: 'pp-live-reader',\r\n\ttemplateUrl: './live-reader.component.html',\r\n\tstyleUrls: ['./live-reader.component.scss'],\r\n\thost: {\r\n\t\t\"class\": \"cdk-visually-hidden\",\r\n\t\t\"[attr.aria-live]\": \"'polite'\",\r\n\t}\r\n})\r\nexport class LiveReaderComponent {\r\n\r\n\tget messages() { return this.announcer.messages; }\r\n\r\n\tconstructor(private announcer: LiveReaderService) { }\r\n\r\n}\r\n","

\r\n\t{{ toRead.message }}\r\n

\r\n","import { NgModule, Injectable } from '@angular/core';\r\nimport { Routes, RouterModule, PreloadAllModules, RouterStateSnapshot, TitleStrategy, ActivatedRouteSnapshot } from '@angular/router';\r\nimport { Title } from '@angular/platform-browser';\r\n\r\nimport { AuthGuard } from 'app/_guards';\r\nimport { LogoutGuard } from 'app/_guards';\r\n\r\nimport { MainComponent } from './main/main.component';\r\nimport { DashboardComponent } from './dashboard/dashboard.component';\r\nimport { ActiveCasesComponent } from './professional-dashboard/active-cases/active-cases.component';\r\nimport { ActiveInvoicesComponent } from './professional-dashboard/active-invoices/active-invoices.component';\r\nimport { LoginComponent } from './login/login.component';\r\n\r\nimport { ProfessionalDashboardComponent } from './professional-dashboard/professional-dashboard.component';\r\nimport { DashboardAppointmentsComponent } from './professional-dashboard/dashboard-appointments/dashboard-appointments.component';\r\n\r\n\r\n@Injectable()\r\nexport class BreadcrumbsTitleStrategy extends TitleStrategy {\r\n\tconstructor(private readonly title: Title) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\toverride updateTitle(routerState: RouterStateSnapshot): void {\r\n\t\tconst title: string = this.getRouteTitles(routerState.root)?.reverse().join(' - ');\r\n\t\tif (title !== undefined) {\r\n\t\t\tthis.title.setTitle(`${title}`);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getRouteTitles(routerState: ActivatedRouteSnapshot, titles: string[] = []): string[] {\r\n\t\tconst title: any = this.getResolvedTitleForRoute(routerState);\r\n\t\tif (typeof title === 'string' && title.length > 0) {\r\n\t\t\ttitles.push(title);\r\n\t\t}\r\n\r\n\t\tif (routerState.children.length != 0) {\r\n\t\t\tfor (const r of routerState.children) {\r\n\t\t\t\ttitles.push(...this.getRouteTitles(r));\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn titles;\r\n\t}\r\n}\r\n\r\n\r\nconst routes: Routes = [\r\n\t{\r\n\t\tpath: '',\r\n\t\ttitle: 'Professional Portal',\r\n\t\tchildren: [\r\n\t\t\t{\r\n\t\t\t\tpath: 'login',\r\n\t\t\t\ttitle: 'Login',\r\n\t\t\t\tcomponent: LoginComponent,\r\n\t\t\t\tcanActivate: [LogoutGuard],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: '',\r\n\t\t\t\tcomponent: MainComponent,\r\n\t\t\t\tcanActivate: [AuthGuard],\r\n\t\t\t\ttitle: '',\r\n\t\t\t\tchildren: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'dashboard',\r\n\t\t\t\t\t\tcomponent: DashboardComponent,\r\n\t\t\t\t\t\ttitle: 'Dashboard',\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: '',\r\n\t\t\t\t\t\tredirectTo: 'dashboard',\r\n\t\t\t\t\t\tpathMatch: 'full'\r\n\t\t\t\t\t},\r\n\t\t\t\t\t// All the modules below are lazy-loaded.\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'cases',\r\n\t\t\t\t\t\tloadChildren: () => import('./cases/cases.module').then(m => m.CasesModule),\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'invoices',\r\n\t\t\t\t\t\tloadChildren: () => import('./invoices/invoices.module').then(m => m.InvoicesModule),\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'appointments',\r\n\t\t\t\t\t\tloadChildren: () => import('./appointments/appointments.module').then(m => m.AppointmentsModule),\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'availability',\r\n\t\t\t\t\t\tloadChildren: () => import('./availability/availability.module').then(m => m.AvailabilityModule),\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'activity-query',\r\n\t\t\t\t\t\tloadChildren: () => import('./activity-query/activity-query.module').then(m => m.ActivityQueryModule),\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'resource-hub',\r\n\t\t\t\tloadChildren: () => import('./resource-hub/resource-hub.module').then(m => m.ResourceHubModule)\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'profile/credentials',\r\n\t\t\t\tloadChildren: () => import('./profile/credentials/credentials.module').then(m => m.CredentialsModule)\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'profile/rates',\r\n\t\t\t\tloadChildren: () => import('./profile/rates/rates.module').then(m => m.RatesModule)\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'profile/checks',\r\n\t\t\t\tloadChildren: () => import('./profile/checks/checks.module').then(m => m.ChecksModule)\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'profile/notifications',\r\n\t\t\t\tloadChildren: () => import('./profile/notifications/notifications.module').then(m => m.NotificationsModule)\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'profile/attachments',\r\n\t\t\t\tloadChildren: () => import('./profile/attachments/prof-attachment.module').then(m => m.ProfessionalAttachmentModule)\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'profile/insurance',\r\n\t\t\t\tloadChildren: () => import('./profile/insurance/insurance.module').then(m => m.InsuranceModule)\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'profile/workhealthsafety',\r\n\t\t\t\tloadChildren: () => import('./profile/workhealthsafety/workhealthsafety.module').then(m => m.WorkHealthSafetyModule)\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'profile/offices',\r\n\t\t\t\tloadChildren: () => import('./profile/offices/offices.module').then(m => m.OfficesModule)\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'profile/contact',\r\n\t\t\t\tloadChildren: () => import('./profile/contact/contact.module').then(m => m.ContactModule)\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'announcements',\r\n\t\t\t\tloadChildren: () => import('./announcements/announcements.module').then(m => m.AnnouncementsModule)\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'announcement',\r\n\t\t\t\tloadChildren: () => import('./announcements/announcement/announcement.module').then(m => m.AnnouncementModule)\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: '*',\r\n\t\t\t\tredirectTo: ''\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n];\r\n\r\n@NgModule({\r\n\timports: [\r\n\t\t// Configure the router to pre-load all lazily-loaded\r\n\t\t// modules.\r\n\t\tRouterModule.forRoot(routes, {\r\n\t\t\t//enableTracing: true, // <-- debugging purposes only\r\n\t\t\tpreloadingStrategy: PreloadAllModules,\r\n\t\t\trelativeLinkResolution: 'legacy'\r\n\t\t})\r\n\t],\r\n\texports: [RouterModule]\r\n})\r\nexport class AppRoutingModule { }\r\nexport const routedComponents: any[] = [\r\n\tMainComponent,\r\n\tLoginComponent,\r\n\tDashboardComponent,\r\n\tProfessionalDashboardComponent,\r\n\tActiveCasesComponent,\r\n\tActiveInvoicesComponent,\r\n\tDashboardAppointmentsComponent\r\n];\r\n","import { CustomisationService } from './services/customisation.service';\r\nimport { Component } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { MatIconRegistry } from '@angular/material/icon';\r\nimport { environment } from '../environments/environment';\r\n\r\nimport { AuthenticationService } from 'app/services';\r\nimport { LangService } from './services/lang.service';\r\n\r\n@Component({\r\n\tselector: 'pp-app',\r\n\ttemplateUrl: './app.component.html',\r\n\tstyleUrls: ['./app.component.scss'],\r\n})\r\nexport class AppComponent {\r\n\tconstructor(\r\n\t\tprivate _iconRegistry: MatIconRegistry,\r\n\t\tprivate _domSanitizer: DomSanitizer,\r\n\t\tprivate authentication: AuthenticationService,\r\n\t\tcustomisationService: CustomisationService,\r\n\t\t_lang: LangService,\r\n\t) {\r\n\r\n\t\t_lang.init();\r\n\r\n\t\tif (environment.production) {\r\n\t\t\t// Ensure logged out on application startup - only in production.\r\n\t\t\tthis.authentication.logout();\r\n\t\t}\r\n\r\n\t\tconst buildSvgDataUrlBase64 = (svgBase64Encoded: string) => {\r\n\t\t\tif (!svgBase64Encoded) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\treturn `data:image/svg+xml;base64,${svgBase64Encoded}`;\r\n\t\t};\r\n\r\n\t\tconst customisation = customisationService.customisation;\r\n\r\n\t\tconst logoResourceUrl = buildSvgDataUrlBase64(customisation.logoSvg) || 'assets/icons/eap-executive-rgb.svg';\r\n\t\tconst iconResourceUrl = buildSvgDataUrlBase64(customisation.iconSvg) || 'assets/icons/eap-exec-icon.svg';\r\n\r\n\t\tthis._iconRegistry.addSvgIconInNamespace(\r\n\t\t\t'assets',\r\n\t\t\t'eapexec',\r\n\t\t\tthis._domSanitizer.bypassSecurityTrustResourceUrl(logoResourceUrl),\r\n\t\t);\r\n\r\n\t\tthis._iconRegistry.addSvgIconInNamespace(\r\n\t\t\t'assets',\r\n\t\t\t'eapexec-icon',\r\n\t\t\tthis._domSanitizer.bypassSecurityTrustResourceUrl(iconResourceUrl),\r\n\t\t);\r\n\t}\r\n}\r\n","\r\n\r\n","import { ContentTypeInterceptor } from './content-type.interceptor';\r\nimport { TimeoutInterceptor, DEFAULT_TIMEOUT } from './timeoutInterceptor';\r\nimport { CustomisationService } from './services/customisation.service';\r\n\r\nimport { MsalConfigurationService } from './services/msal-configuration.service';\r\nimport { MsalDynamicConfigService } from './services/msal-dynamic-configuration.service';\r\n\r\nimport { NgModule, APP_INITIALIZER, ErrorHandler } from '@angular/core';\r\nimport { TitleStrategy } from '@angular/router';\r\nimport { DatePipe, DecimalPipe, registerLocaleData } from '@angular/common';\r\nimport { BrowserModule, Title } from '@angular/platform-browser';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\n\r\nimport { MAT_MOMENT_DATE_FORMATS, MAT_MOMENT_DATE_ADAPTER_OPTIONS, MomentDateAdapter } from '@angular/material-moment-adapter'\r\nimport { MAT_DATE_LOCALE, MAT_DATE_FORMATS, DateAdapter } from '@angular/material/core';\r\nimport localFr from '@angular/common/locales/fr-CA';\r\nimport localFrExtra from '@angular/common/locales/extra/fr-CA';\r\n\r\nimport { AppComponent } from './app.component';\r\n\r\nimport { JwtModule } from '@auth0/angular-jwt';\r\nimport { HttpClient, HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { Interceptor } from './interceptor';\r\nimport { CustomErrorHandler } from './services/error-handler';\r\n\r\nimport { routedComponents, AppRoutingModule, BreadcrumbsTitleStrategy } from './app-routing.module';\r\n\r\nimport { SharedModule } from './shared/shared.module';\r\nimport { CommonEditingModule } from './common-editing/common-editing.module';\r\n\r\nimport { AuthGuard, LogoutGuard } from './_guards';\r\n\r\nimport { MsalModule, MsalService } from '@azure/msal-angular';\r\nimport { InteractionType, PublicClientApplication } from '@azure/msal-browser';\r\n\r\nimport {\r\n\tAgGridService,\r\n\tAuthenticationService,\r\n\tAuthsService,\r\n\tCheckSaveChangesService,\r\n\tCommonService,\r\n\tConfigService,\r\n\tSignalrService,\r\n\tAnnouncementsService,\r\n\tCrudService,\r\n\tDashboardService,\r\n\tFormsService,\r\n\tJsonService,\r\n\tLoadingStateService,\r\n\tLoggerService,\r\n\tLogoutService,\r\n\tModalService,\r\n\tSearchStateService,\r\n\tSessionStorageManagementService,\r\n\tUtilsService,\r\n\tCheckSaveChangesDialogComponent,\r\n\tSaveProgressDialogComponent,\r\n\tWarningsService,\r\n\tSyncfusionService,\r\n} from './services';\r\n\r\nimport { CasesSearchService } from 'app/search/case-search/cases-search.service';\r\nimport { InvoicesSearchService } from 'app/search/invoice-search/invoices-search.service';\r\nimport { SearchComponent } from './search/search.component';\r\nimport { WarningsDialogComponent } from './services/warnings-dialog/warnings-dialog.component';\r\nimport { CaseSearchComponent } from './search/case-search/case-search.component';\r\nimport { InvoiceSearchComponent } from './search/invoice-search/invoice-search.component';\r\nimport { BaseViewComponent } from './shared/base-view/base-view-component';\r\nimport { BaseEditComponent } from './shared/base-edit/base-edit.component';\r\nimport { PracticeNavigatorComponent } from './practice-navigator/practice-navigator.component';\r\nimport { ProfileNavigatorComponent } from './profile/profile.component';\r\nimport { ConfirmDialogComponent } from './confirm-dialog/confirm-dialog.component';\r\nimport { MessageDialogComponent } from './message-dialog/message-dialog.component';\r\nimport { ICalDetailsDialogComponent } from './i-cal-details-dialog/i-cal-details-dialog.component';\r\nimport { HttpRetryInterceptor } from './httpRetryInterceptor';\r\nimport { AlertComponent } from './accessibility/alert/alert.component';\r\nimport { LiveReaderService } from './accessibility/live-reader.service';\r\nimport { LiveReaderComponent } from './accessibility/live-reader/live-reader.component';\r\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\r\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\r\n\r\nconst isIE = window.navigator.userAgent.indexOf(\"MSIE \") > -1 || window.navigator.userAgent.indexOf(\"Trident/\") > -1;\r\n\r\nexport function getToken() {\r\n\treturn sessionStorage.getItem('access_token');\r\n}\r\n\r\nexport function initApp(svc: CustomisationService) {\r\n\treturn () => {\r\n\t\treturn svc.loadConfigurationData();\r\n\t};\r\n}\r\n\r\nexport function createTranslateLoader(http: HttpClient) {\r\n\treturn new TranslateHttpLoader(http, './assets/i18n/', '.json');\r\n}\r\n\r\nexport function initMsal(configService: MsalConfigurationService) {\r\n\treturn () => configService.loadConfig().toPromise().then(config => {\r\n\t\tconfigService.setConfig(config);\r\n\t});\r\n}\r\n\r\nregisterLocaleData(localFr, 'fr-CA', localFrExtra);\r\n\r\n@NgModule({\r\n\tdeclarations: [\r\n\t\tAppComponent,\r\n\t\troutedComponents,\r\n\t\tBaseEditComponent,\r\n\t\tBaseViewComponent,\r\n\t\tCaseSearchComponent,\r\n\t\tCheckSaveChangesDialogComponent,\r\n\t\tConfirmDialogComponent,\r\n\t\tMessageDialogComponent,\r\n\t\tICalDetailsDialogComponent,\r\n\t\tInvoiceSearchComponent,\r\n\t\tPracticeNavigatorComponent,\r\n\t\tProfileNavigatorComponent,\r\n\t\tSaveProgressDialogComponent,\r\n\t\tSearchComponent,\r\n\t\tWarningsDialogComponent,\r\n\t\tAlertComponent,\r\n\t\tLiveReaderComponent,\r\n\t],\r\n\timports: [\r\n\t\tBrowserModule,\r\n\t\tBrowserAnimationsModule,\r\n\t\tSharedModule,\r\n\r\n\t\tHttpClientModule,\r\n\t\tJwtModule.forRoot({\r\n\t\t\tconfig: {\r\n\t\t\t\ttokenGetter: () => AuthenticationService.getToken()\r\n\t\t\t},\r\n\t\t}),\r\n\r\n\t\tTranslateModule.forRoot({\r\n\t\t\tloader: {\r\n\t\t\t\tprovide: TranslateLoader,\r\n\t\t\t\tuseFactory: createTranslateLoader,\r\n\t\t\t\tdeps: [HttpClient],\r\n\t\t\t},\r\n\t\t\tdefaultLanguage: 'en',\r\n\t\t}),\r\n\r\n\t\tCommonEditingModule,\r\n\t\tAppRoutingModule,\r\n\t\tMsalModule.forRoot(new PublicClientApplication({\r\n\t\t\t// These are set dynamically in MsalDynamicConfigService\r\n\t\t\tauth: {\r\n\t\t\t clientId: '', \r\n\t\t\t redirectUri: '',\r\n\t\t\t knownAuthorities: [], \r\n\t\t\t authority: '', //set in login.component\r\n\t\t\t}\r\n\t\t }), {\r\n\t\t\tinteractionType: InteractionType.Redirect,\r\n\t\t\tauthRequest: {\r\n\t\t\t scopes: ['user.read']\r\n\t\t\t}\r\n\t\t }, {\r\n\t\t\tinteractionType: InteractionType.Redirect,\r\n\t\t\tprotectedResourceMap: new Map([\r\n\t\t\t ['https://graph.microsoft.com/v1.0/me', ['user.read']]\r\n\t\t\t])\r\n\t\t })\r\n\t],\r\n\tproviders: [\r\n\t\tAgGridService,\r\n\t\tAuthGuard,\r\n\t\tAuthenticationService,\r\n\t\tAuthsService,\r\n\t\tCasesSearchService,\r\n\t\tCheckSaveChangesService,\r\n\t\tCommonService,\r\n\t\tConfigService,\r\n\t\tCrudService,\r\n\t\tDashboardService,\r\n\t\tDatePipe,\r\n\t\tDecimalPipe,\r\n\t\tFormsService,\r\n\t\tInvoicesSearchService,\r\n\t\tJsonService,\r\n\t\tLoadingStateService,\r\n\t\tLoggerService,\r\n\t\tLogoutGuard,\r\n\t\tLogoutService,\r\n\t\tModalService,\r\n\t\tSearchStateService,\r\n\t\tSessionStorageManagementService,\r\n\t\tSignalrService,\r\n\t\tAnnouncementsService,\r\n\t\tTitle,\r\n\t\tUtilsService,\r\n\t\tWarningsService,\r\n\t\tSyncfusionService,\r\n\t\tLiveReaderService,\r\n\t\tDatePipe,\r\n\t\tDecimalPipe,\r\n\t\t{\r\n\t\t\tprovide: APP_INITIALIZER,\r\n\t\t\tuseFactory: initMsal,\r\n\t\t\tdeps: [MsalConfigurationService],\r\n\t\t\tmulti: true\r\n\t\t},\r\n\t\t{\r\n\t\t\tprovide: HTTP_INTERCEPTORS,\r\n\t\t\tuseClass: HttpRetryInterceptor,\r\n\t\t\tmulti: true,\r\n\t\t},\r\n\t\t{\r\n\t\t\tprovide: HTTP_INTERCEPTORS,\r\n\t\t\tuseClass: Interceptor,\r\n\t\t\tmulti: true,\r\n\t\t},\r\n\t\t{\r\n\t\t\tprovide: HTTP_INTERCEPTORS,\r\n\t\t\tuseClass: ContentTypeInterceptor,\r\n\t\t\tmulti: true,\r\n\t\t},\r\n\t\t{\r\n\t\t\tprovide: HTTP_INTERCEPTORS,\r\n\t\t\tuseClass: TimeoutInterceptor,\r\n\t\t\tmulti: true,\r\n\t\t},\r\n\t\t{ provide: DEFAULT_TIMEOUT, useValue: 30000 },\r\n\t\t{\r\n\t\t\tprovide: ErrorHandler,\r\n\t\t\tuseClass: CustomErrorHandler,\r\n\t\t},\r\n\t\t{\r\n\t\t\tprovide: APP_INITIALIZER,\r\n\t\t\tuseFactory: initApp,\r\n\t\t\tmulti: true,\r\n\t\t\tdeps: [CustomisationService],\r\n\t\t},\r\n\t\t{\r\n\t\t\tprovide: TitleStrategy,\r\n\t\t\tuseClass: BreadcrumbsTitleStrategy,\r\n\t\t},\r\n\t\tMsalDynamicConfigService,\r\n\t\tMsalService,\r\n\t],\r\n\tbootstrap: [AppComponent, LiveReaderComponent],\r\n\tentryComponents: [\r\n\t\tCheckSaveChangesDialogComponent,\r\n\t\tConfirmDialogComponent,\r\n\t\tMessageDialogComponent,\r\n\t\tICalDetailsDialogComponent,\r\n\t\tSaveProgressDialogComponent,\r\n\t\tSearchComponent,\r\n\t\tWarningsDialogComponent,\r\n\t]\r\n})\r\nexport class AppModule { }\r\n","import { Injectable, SecurityContext } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport * as moment from 'moment';\r\n\r\nimport { AppointmentDto, CommAddressDisplayDto, ConfigService } from 'app/services';\r\nimport { ExtendedDetailsHelper } from 'app/common-editing/extended-details/extended-details';\r\n\r\nconst intMaxValue = Math.pow(2, 31) - 1;\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class AppointmentRendererService {\r\n\tconstructor(private domSanitizer: DomSanitizer, \r\n\t\tprivate config: ConfigService) {}\r\n\r\n\tgetActivityAppointmentHtml(appointment: AppointmentDto, updating: boolean, partsText: string[] = null): string {\r\n\t\tconst parts = [];\r\n\t\tpartsText = partsText || [];\r\n\t\tconst addPart = (type, value, additionalClass = '') => {\r\n\t\t\tconst sanitized = this.domSanitizer.sanitize(SecurityContext.HTML, value);\r\n\t\t\tconst part = `${sanitized}`;\r\n\t\t\tparts.push(part);\r\n\t\t\tpartsText.push(value);\r\n\t\t};\r\n\t\tconst addBreak = () => {\r\n\t\t\tparts.push('
');\r\n\t\t\tpartsText.push('\\r\\n');\r\n\t\t};\r\n\r\n\t\tconst addFlagIcon = (index) => {\r\n\r\n\t\t\tif (index == null) index = 0;\r\n\t\t\tlet redFlagColour = ExtendedDetailsHelper.redFlagAlternativeAppearenceColours[index];\r\n\t\t\tlet part1 = ``\r\n\t\t\tparts.push(part1);\r\n\t\t\tlet part2 = ``\r\n\t\t\tparts.push(part2);\r\n\t\t\tpartsText.push('\\r\\n');\r\n\t\t};\r\n\r\n\t\tif (appointment.isReserved) {\r\n\t\t\taddPart('reserved-appointment', 'Reserved and locked - pending appointment confirmation');\r\n\t\t\taddBreak();\r\n\t\t}\r\n\r\n\t\taddPart('file-number', appointment.fileNumber, 'part');\r\n\t\taddPart('activity-type', appointment.activityType, 'part');\r\n\t\taddPart('service-type', appointment.serviceType, 'part');\r\n\r\n\t\tif (appointment.sessionNumber && !appointment.excludeAsSession) {\r\n\t\t\tconst sessionNumbers = this.getSessionNumberDisplay(appointment);\r\n\t\t\taddPart('session-numbers', sessionNumbers);\r\n\t\t}\r\n\r\n\t\tif (appointment.isRedFlag\r\n\t\t\t&& appointment.hasExtendedActivityHeader\r\n\t\t\t&& !appointment.hideRedFlag) {\r\n\t\t\t//console.log('appointment.redFlagAlternativeAppearance',appointment.redFlagAlternativeAppearance)\r\n\t\t\taddFlagIcon(appointment.redFlagAlternativeAppearance);\r\n\t\t}\r\n\r\n\t\tif (this.config.systemPreferences.useAppointmentMoveLog\r\n\t\t\t&& appointment.numberMoves > 0)\r\n\t\t\taddPart('number-moves', ' (Moved: ' + appointment.numberMoves + \")\", 'moved');\r\n\r\n\t\taddBreak();\r\n\r\n\t\tif (appointment.clientTimeZoneName) {\r\n\t\t\taddPart('client-time-header', 'Client time');\r\n\t\t\taddPart('client-time', moment(appointment.clientTimeStart).format('h:mm a'));\r\n\t\t\taddPart('client-timezone', `(${appointment.clientTimeZoneName})`);\r\n\t\t\taddBreak();\r\n\t\t}\r\n\r\n\t\taddPart('client-name', appointment.clientNameOrDescription);\r\n\t\t\r\n\t\tif (appointment.isClientRedFlag)\r\n\t\t{\r\n\t\t\tparts.push(``);\r\n\t\t}\r\n\r\n\t\taddBreak();\r\n\t\tif (appointment.customerName) {\r\n\t\t\taddPart('customer', appointment.customerName);\r\n\t\t\taddBreak();\r\n\t\t}\r\n\t\tif (appointment.employerName) {\r\n\t\t\taddPart('employer', appointment.employerName);\r\n\t\t\taddBreak();\r\n\t\t}\r\n\r\n\t\tif (appointment.phoneNumbers && appointment.phoneNumbers.length) {\r\n\t\t\tconst numStrings = [];\r\n\t\t\tfor (let i = 0; i < appointment.phoneNumbers.length; i++) {\r\n\t\t\t\tlet num = appointment.phoneNumbers[i];\r\n\t\t\t\tlet str = this.formatPhoneNumber(num);\r\n\r\n\t\t\t\t// Only add unique strings to prevent numbers being displayed twice.\r\n\t\t\t\tif (numStrings.indexOf(str) === -1) {\r\n\t\t\t\t\tnumStrings.push(str);\r\n\t\t\t\t\taddPart('phone-number', str);\r\n\t\t\t\t\taddBreak();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (appointment.staticalChoiceForDiaryDisplay) {\r\n\t\t\taddPart('choice-display', appointment.staticalChoiceForDiaryDisplay);\r\n\t\t\taddBreak();\r\n\t\t}\r\n\r\n\t\tif (appointment.isRecurring) {\r\n\t\t\tpartsText.push('Recurring');\r\n\t\t}\r\n\r\n\t\tif (appointment.isCanelledChargeable) {\r\n\t\t\tpartsText.push('Cancelled chargeable');\r\n\t\t}\r\n\r\n\t\tif (appointment.location) {\r\n\t\t\taddPart('location', `Loc: ${appointment.location}`);\r\n\t\t}\r\n\r\n\t\tlet html = `\r\n\t\t\t
\r\n\t\t\t\t${parts.join('\\r\\n')}\r\n\t\t\t
`;\r\n\t\treturn html;\r\n\t}\r\n\r\n\tgetActivityAppointmentHtmlSanitized(\r\n\t\tappointment: AppointmentDto,\r\n\t\tupdating: boolean,\r\n\t\tpartsText: string[] = null\r\n\t): SafeHtml {\r\n\t\treturn this.domSanitizer.bypassSecurityTrustHtml(\r\n\t\t\tthis.getActivityAppointmentHtml(appointment, updating, partsText)\r\n\t\t);\r\n\t}\r\n\r\n\tgetSessionNumberDisplay(appointment: AppointmentDto) {\r\n\t\tif (appointment.excludeAsSession) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\r\n\t\tlet maxStr = '';\r\n\t\tif (appointment.maxSessions < intMaxValue) {\r\n\t\t\tmaxStr = `(${appointment.maxSessions})`;\r\n\t\t}\r\n\r\n\t\treturn appointment.sessionNumber + maxStr;\r\n\t}\r\n\r\n\tformatPhoneNumber(p: CommAddressDisplayDto) {\r\n\t\tlet phoneParts = [];\r\n\t\tlet hasCallingCode;\r\n\t\tif (p.callingCode) {\r\n\t\t\tphoneParts.push(`+${p.callingCode}`);\r\n\t\t\thasCallingCode = true;\r\n\t\t}\r\n\r\n\t\tif (p.areaCode) {\r\n\t\t\tlet areaCode = p.areaCode;\r\n\t\t\tif (areaCode[0] === '0' && hasCallingCode) {\r\n\t\t\t\tareaCode = areaCode.substr(1);\r\n\t\t\t}\r\n\t\t\tphoneParts.push(areaCode);\r\n\t\t}\r\n\r\n\t\tif (p.number) {\r\n\t\t\tlet num = p.number;\r\n\t\t\tif (hasCallingCode && num[0] === '0') {\r\n\t\t\t\tnum = num.substr(1);\r\n\t\t\t}\r\n\t\t\tphoneParts.push(num);\r\n\t\t}\r\n\r\n\t\treturn phoneParts.join(' ');\r\n\t};\r\n}\r\n","import { SelectedCaseService } from './../common-editing/selected-case.service';\r\nimport { Injectable, EventEmitter, ViewContainerRef } from '@angular/core';\r\nimport { Observable, Subject, BehaviorSubject } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { TdFileService } from '@covalent/core/file';\r\nimport { TdDialogService } from '@covalent/core/dialogs';\r\nimport * as moment from 'moment';\r\nimport * as _ from 'lodash';\r\n\r\nimport { BaseService } from 'app/services/base-service';\r\n\r\nimport {\r\n\tOpenActivityHeadersDto,\r\n\tActivityHeaderEditLoadDto,\r\n\tActivityHeaderEditDto,\r\n\tActivityEntryListInfoDto,\r\n\tActivityEntryInfoDto,\r\n\tStatisticHeaderEditDto,\r\n\tStatisticHeaderListDto,\r\n\tStatisticClientEditDto,\r\n\tStatisticClientListDto,\r\n\tActivityNoteInfoDto,\r\n\tActivityNoteEditDto,\r\n\tNoteAttachmentInfoDto,\r\n\tNoteAttachmentEditDto,\r\n\tChangeNotification,\r\n\tSaveResult,\r\n\tSaveResultDto,\r\n\tCommonService,\r\n\tAuthenticationService,\r\n\tJsonService,\r\n\ttoUnspecified\r\n} from 'app/services';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class CasesService extends BaseService {\r\n\tcurrentLoadDto: ActivityHeaderEditLoadDto;\r\n\tcurrentEditDto: ActivityHeaderEditDto;\r\n\r\n\tstatisticClientsChanged$ = new EventEmitter>();\r\n\tstatisticHeadersChanged$ = new EventEmitter>();\r\n\tactivityNoteChanged$ = new EventEmitter>();\r\n\tnoteAttachmentsChanged$ = new EventEmitter>();\r\n\r\n\tsaveNoteRequested$ = new EventEmitter();\r\n\tnoteSaved$ = new EventEmitter();\r\n\r\n\tuploadProgress$ = new BehaviorSubject(0);\r\n\r\n\tconstructor(\r\n\t\tcommon: CommonService,\r\n\t\tprivate json: JsonService,\r\n\t\tprivate fileService: TdFileService,\r\n\t\tprivate dialog: TdDialogService,\r\n\t\tprivate selectedCaseService: SelectedCaseService,\r\n\t\tprivate authenticationService: AuthenticationService\r\n\t) {\r\n\t\tsuper(common);\r\n\r\n\t\tthis.fileService.progress.subscribe(v => {\r\n\t\t\tthis.uploadProgress$.next(v);\r\n\t\t});\r\n\t}\r\n\r\n\tget professionalId(): number {\r\n\t\treturn this.config.professionalId;\r\n\t}\r\n\r\n\tgetCases(): Observable {\r\n\t\treturn this.crud.loadWithGet('api/openActivityHeaders');\r\n\t}\r\n\r\n\tgetCase(activityHeaderId: number): Observable {\r\n\t\treturn this.crud\r\n\t\t\t.loadWithGet(`api/activityHeaders/edit/${activityHeaderId}`)\r\n\t\t\t.pipe(map(dto => this.onLoaded(dto)));\r\n\t}\r\n\r\n\tgetActivityEntries(activityHeaderId: number): Observable {\r\n\t\treturn this.crud.loadWithGet(`api/activityHeaders/activityEntries/${activityHeaderId}`);\r\n\t}\r\n\r\n\tgetActivityEntry(activityHeaderId: number, activityEntryId: number): Observable {\r\n\t\treturn this.crud.loadWithGet(\r\n\t\t\t`api/activityHeaders/activityEntry/${activityHeaderId}/${activityEntryId}`\r\n\t\t);\r\n\t}\r\n\r\n\tsaveCase(editDto: ActivityHeaderEditDto) {\r\n\t\treturn this.save('api/activityHeaders/save', editDto);\r\n\t}\r\n\r\n\t//\r\n\t// StatisticClient\r\n\t//\r\n\r\n\tgetStatisticClient(activityHeaderId: number, statisticClientId: number): Observable {\r\n\t\treturn this.crud.loadWithGet(\r\n\t\t\t`api/activityHeaders/statisticClient/${activityHeaderId}/${statisticClientId}`\r\n\t\t);\r\n\t}\r\n\r\n\tstatisticClientSave(activityHeaderId: number, statisticClient: StatisticClientEditDto) {\r\n\t\tconst url = `api/activityHeaders/statisticClient/save/${activityHeaderId}`;\r\n\t\treturn this.save(url, statisticClient, this.statisticClientsChanged$);\r\n\t}\r\n\r\n\tstatisticClientDelete(activityHeaderId: number, statisticClient: StatisticClientEditDto) {\r\n\t\tconst url = `api/activityHeaders/statisticClient/${activityHeaderId}/${statisticClient.id}`;\r\n\t\tthis.delete(url, statisticClient.id, this.statisticClientsChanged$, 'client');\r\n\t}\r\n\r\n\t//\r\n\t// StatisticHeader\r\n\t//\r\n\r\n\tgetStatisticHeader(activityHeaderId: number, statisticHeaderId: number): Observable {\r\n\t\treturn this.crud.loadWithGet(\r\n\t\t\t`api/activityHeaders/statisticHeader/${activityHeaderId}/${statisticHeaderId}`\r\n\t\t);\r\n\t}\r\n\r\n\tstatisticHeaderSave(activityHeaderId: number, statisticHeader: StatisticHeaderEditDto) {\r\n\t\tconst url = `api/activityHeaders/statisticHeader/save/${activityHeaderId}`;\r\n\t\treturn this.save(url, statisticHeader, this.statisticHeadersChanged$);\r\n\t}\r\n\r\n\t///\r\n\t/// Activity Note\r\n\t///\r\n\r\n\trequestSaveNote() {\r\n\t\tthis.saveNoteRequested$.emit();\r\n\t}\r\n\r\n\tnotifyNoteSaved(dto: ActivityNoteEditDto) {\r\n\t\tthis.noteSaved$.emit(dto);\r\n\t}\r\n\r\n\tgetActivityNote(activityHeaderId: number, noteId: number): Observable {\r\n\t\treturn this.crud.loadWithGet(\r\n\t\t\t`api/activityHeaders/activityNote/${activityHeaderId}/${noteId}`\r\n\t\t);\r\n\t}\r\n\r\n\tactivityNoteSave(activityHeaderId: number, editDto: ActivityNoteEditDto) {\r\n\t\tconst cloned = _.cloneDeep(editDto);\r\n\t\tcloned.noteDateTime = toUnspecified(editDto.noteDateTime);\r\n\t\tconst url = `api/activityHeaders/activityNote/save/${activityHeaderId}`;\r\n\t\treturn this.saveInfo(url, cloned, this.activityNoteChanged$);\r\n\t}\r\n\r\n\tactivityNoteDelete(activityHeaderId: number, dto: ActivityNoteInfoDto) {\r\n\t\tconst url = `api/activityHeaders/activityNote/${activityHeaderId}/${dto.id}`;\r\n\t\tthis.delete(url, dto.id, this.activityNoteChanged$, 'note');\r\n\t}\r\n\r\n\t///\r\n\t/// Note Attachment\r\n\t///\r\n\r\n\tgetNoteAttachment(\r\n\t\tactivityHeaderId: number,\r\n\t\tnoteId: number,\r\n\t\tattachmentId: number\r\n\t): Observable {\r\n\t\treturn this.crud.loadWithGet(\r\n\t\t\t`api/activityHeaders/activityNoteFileAttachment/${activityHeaderId}/${noteId}/${attachmentId}`\r\n\t\t);\r\n\t}\r\n\r\n\tpostFile(f: File,\r\n\t\tactivityHeaderId: number,\r\n\t\tnoteId: number,\r\n\t\tattachmentId: number,\r\n\t\tfileName: string\r\n\t): Observable> {\r\n\t\tconst sub = new Subject>();\r\n\r\n\t\tconst endpoint = 'api/activityHeaders/attachment/upload';\r\n\t\tconst fd = new FormData();\r\n\t\tfd.append('file', f);\r\n\t\tfd.append('activityHeaderId', '' + activityHeaderId);\r\n\t\tfd.append('noteId', '' + noteId);\r\n\t\tfd.append('attachmentId', '' + (attachmentId || -1));\r\n\t\tfd.append('fileName', fileName);\r\n\t\tconst token = this.authenticationService.getToken();\r\n\r\n\t\t// Use the pipe() method to apply the map operator\r\n\t\tthis.http.post(endpoint, fd, {\r\n\t\t headers: {\r\n\t\t\tAuthorization: 'Bearer ' + token,\r\n\t\t\tAccept: 'application/json',\r\n\t\t },\r\n\t\t})\r\n\t\t.pipe(map(responseText => { return responseText as SaveResultDto }))\r\n\t\t.subscribe(\r\n\t\t\tresult => {\r\n\t\t\t\tswitch (result.saveResult) {\r\n\t\t\t\t\tcase SaveResult.OK:\r\n\t\t\t\t\t\tthis.noteAttachmentsChanged$.emit(ChangeNotification.update(result.resultDto));\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase SaveResult.Error:\r\n\t\t\t\t\t\tthis.dialog.openAlert({\r\n\t\t\t\t\t\t\tmessage: result.errorMessage,\r\n\t\t\t\t\t\t\ttitle: 'Save failed',\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase SaveResult.Warnings:\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsub.next(result);\r\n\t\t\t},\r\n\t\t\terr => {\r\n\t\t\t\tsub.error(err);\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\treturn sub;\r\n\t}\r\n\r\n\t//TEST123 DELETE ME\r\n\tuploadFile(\r\n\t\tf: File,\r\n\t\tactivityHeaderId: number,\r\n\t\tnoteId: number,\r\n\t\tattachmentId: number,\r\n\t\tfileName: string\r\n\t): Observable> {\r\n\t\tconst sub = new Subject>();\r\n\r\n\t\tconst fd = new FormData();\r\n\t\tfd.append('file', f);\r\n\t\tfd.append('activityHeaderId', '' + activityHeaderId);\r\n\t\tfd.append('noteId', '' + noteId);\r\n\t\tfd.append('attachmentId', '' + (attachmentId || -1));\r\n\t\tfd.append('fileName', fileName);\r\n\r\n\t\tconst token = this.authenticationService.getToken();\r\n\r\n\t\t// Reset the progres\r\n\t\tthis.uploadProgress$.next(0);\r\n\r\n\t\tthis.fileService\r\n\t\t\t.send(\r\n\t\t\t\t'api/activityHeaders/attachment/upload',\r\n\t\t\t\t'post',\r\n\t\t\t\tfd,\r\n\t\t\t\t{\r\n\t\t\t\t\theaders: {\r\n\t\t\t\t\t\tAuthorization: 'Bearer ' + token,\r\n\t\t\t\t\t\tAccept: 'application/json'\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t)\r\n\t\t\t// @TODO: To fix.\r\n\t\t\t.pipe(map(responseText => { console.log(responseText); return this.json.jsonFromString(''/* responseText */) as SaveResultDto }))\r\n\t\t\t.subscribe(\r\n\t\t\t\tresult => {\r\n\t\t\t\t\tswitch (result.saveResult) {\r\n\t\t\t\t\t\tcase SaveResult.OK:\r\n\t\t\t\t\t\t\tthis.noteAttachmentsChanged$.emit(ChangeNotification.update(result.resultDto));\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase SaveResult.Error:\r\n\t\t\t\t\t\t\tthis.dialog.openAlert({\r\n\t\t\t\t\t\t\t\tmessage: result.errorMessage,\r\n\t\t\t\t\t\t\t\ttitle: 'Save failed',\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase SaveResult.Warnings:\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tsub.next(result);\r\n\t\t\t\t},\r\n\t\t\t\terr => {\r\n\t\t\t\t\tsub.error(err);\r\n\t\t\t\t}\r\n\t\t\t);\r\n\r\n\t\treturn sub;\r\n\t}\r\n\r\n\tnoteAttachmentDelete(activityHeaderId: number, noteId: number, dto: NoteAttachmentInfoDto) {\r\n\t\tconst url = `api/activityHeaders/attachment//${activityHeaderId}/${noteId}/${dto.id}`;\r\n\t\tthis.delete(url, dto.id, this.noteAttachmentsChanged$, 'attachment');\r\n\t}\r\n\r\n\tnoteAttachmentSave(activityHeaderId: number, noteId: number, attachment: NoteAttachmentEditDto) {\r\n\t\tconst url = `api/activityHeaders/activityNoteFileAttachment/save/${activityHeaderId}/${noteId}`;\r\n\t\treturn this.saveInfo(url, attachment, this.noteAttachmentsChanged$);\r\n\t}\r\n\r\n\tonLoaded(loadDto: ActivityHeaderEditLoadDto): ActivityHeaderEditLoadDto {\r\n\t\tthis.currentLoadDto = loadDto;\r\n\t\tthis.currentEditDto = loadDto.editDto;\r\n\r\n\t\tthis.selectedCaseService.onSelectedCaseChanged(loadDto.editDto.activityHeaderId);\r\n\r\n\t\treturn loadDto;\r\n\t}\r\n\r\n\tonActivityStatusChanged(\r\n\t\tloadDto: ActivityHeaderEditLoadDto,\r\n\t\teditDto: ActivityHeaderEditDto,\r\n\t\tstatusId: number,\r\n\t\tpriorActivityStatusId: number,\r\n\t\tpriorDateClosed?: Date\r\n\t) {\r\n\t\tconst status = loadDto.activityStatuses.find(s => s.id === statusId),\r\n\t\t\toldStatus = loadDto.activityStatuses.find(s => s.id === priorActivityStatusId);\r\n\r\n\t\tloadDto.isReferredToEditable = status.isReferredOn;\r\n\t\tif (status.isClosed && !oldStatus.isClosed) {\r\n\t\t\t// Set the closed date to today if it wasn't previously closed.\r\n\t\t\tconst dateClosed =\r\n\t\t\t\tpriorDateClosed ||\r\n\t\t\t\tmoment()\r\n\t\t\t\t\t.startOf('day')\r\n\t\t\t\t\t.toDate();\r\n\t\t\teditDto.dateClosed = dateClosed;\r\n\t\t} else if (!status.isClosed) {\r\n\t\t\t// Clear the closed date if setting to not closed\r\n\t\t\teditDto.dateClosed = undefined;\r\n\t\t}\r\n\t}\r\n}\r\n","import {\r\n\tComponent,\r\n\tOnChanges,\r\n\tAfterViewInit,\r\n\tViewChild,\r\n\tInput,\r\n\tOutput,\r\n\tEventEmitter,\r\n\tChangeDetectorRef\r\n} from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\nimport { AdditionalSessionDto, \r\n\t\tTriState, \r\n\t\tFormUtils, \r\n\t\tConfigService, \r\n\t\tProfessionalDto,\r\n\t\tAdditionalSessionRequestReasonsDto,\r\n\t\tAdditionalSessionRequestReasonDto, } from 'app/services';\r\n\r\nimport { IRadioOption } from 'app/shared';\r\n\r\nimport { IForm } from 'app/interfaces';\r\n\r\nimport { TextComponent } from 'app/shared/forms/text.component';\r\n\r\nimport { BreakifyPipe } from 'app/shared/breakify.pipe';\r\nimport { AdditionalSessionStatus } from '../additional-session-status.service';\r\nimport { AdditionalSessionEditService } from '../additional-session-edit/additional-session-edit.service';\r\n\r\n@Component({\r\n\tselector: 'pp-additional-session-edit',\r\n\ttemplateUrl: './additional-session-edit.component.html',\r\n\tstyleUrls: ['./additional-session-edit.component.scss']\r\n})\r\nexport class AdditionalSessionEditComponent implements OnChanges, AfterViewInit, IForm {\r\n\tprivate sub: Subscription;\r\n\r\n\tform: UntypedFormGroup;\r\n\tdto: AdditionalSessionDto;\r\n\ttriStateOptions: IRadioOption[] = [\r\n\t\t{ value: TriState.Yes, name: 'Yes' },\r\n\t\t{ value: TriState.No, name: 'No' },\r\n\t\t{ value: TriState.Unknown, name: 'Unknown', hide: true }\r\n\t];\r\n\r\n\tapprovalNotesHtml: SafeHtml;\r\n\tdeclineNotesHtml: SafeHtml;\r\n\r\n\tprofessionals: ProfessionalDto[];\r\n\treasons: AdditionalSessionRequestReasonDto[];\r\n\tisReasonCombo: boolean = false;\r\n\tisReasonManual: boolean = true;\r\n\r\n\tuseCustomPart2 = false;\r\n\thideRehabCase = false;\r\n\thideNewIssue = false;\r\n\thideWorkIssue = false;\r\n\r\n\trequestedByIsProfessional: Boolean;\r\n\trequestedByNonProfessionalName: String;\r\n\r\n\t@ViewChild('requested', { static: true }) requested: TextComponent;\r\n\t@Input() request: AdditionalSessionDto;\r\n\t@Input() readOnly: boolean;\r\n\t@Output() isDirty = new EventEmitter();\r\n\t@Output() delete = new EventEmitter();\r\n\r\n\tconstructor(\r\n\t\tprivate fb: UntypedFormBuilder,\r\n\t\tprivate domSanitizer: DomSanitizer,\r\n\t\tprivate breakify: BreakifyPipe,\r\n\t\tprivate configService: ConfigService,\r\n\t\tprivate cdRef: ChangeDetectorRef,\r\n\t\tprivate service: AdditionalSessionEditService,\r\n\t) {\r\n\t\tthis.buildForm();\r\n\t\tthis.professionals = configService.professionals;\r\n\t\tthis.useCustomPart2 = configService.systemPreferences.isAepCustomInstall;\r\n\r\n\t\tthis.hideRehabCase = this.hideWorkIssue = this.hideNewIssue =\r\n\t\t\tconfigService.systemPreferences.isEpsCustomInstall;\r\n\r\n\t\tthis.isReasonCombo = false;\r\n\t\tif (this.configService.systemPreferences.useAdditionalSessionRequestReasons){\r\n\t\t\tthis.service.getAdditionalSessionRequestReasons().subscribe((r: AdditionalSessionRequestReasonsDto) => {\r\n\t\t\t\tthis.reasons = r.reasons;\r\n\t\t\t\tthis.isReasonCombo = !this.dto.primaryConcernAndReason && this.reasons.length > 0;\r\n\t\t\t\tthis.isReasonManual = !this.isReasonCombo;\r\n\t\t\t});\r\n\t\t}\t\t\r\n\t}\r\n\r\n\tngOnChanges(changes) {\r\n\t\tif (changes.request) {\r\n\t\t\tthis.setData(this.request);\r\n\t\t}\r\n\r\n\t\tif (this.sub) {\r\n\t\t\tthis.sub.unsubscribe();\r\n\t\t\tthis.sub = null;\r\n\t\t}\r\n\t\tthis.sub = this.form.valueChanges.subscribe(v => {\r\n\t\t\tif (!this.form.dirty) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.updateDto();\r\n\t\t});\r\n\r\n\t\tif (changes.readOnly) {\r\n\t\t\tif (this.readOnly) {\r\n\t\t\t\tthis.form.disable();\r\n\t\t\t} else {\r\n\t\t\t\tthis.form.enable();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tngAfterViewInit() {\r\n\t\tthis.setEnabledDisabledAccordingToReversedOrAlreadySaved();\r\n\t\tthis.cdRef.detectChanges();\r\n\t}\r\n\r\n\treasonSelection = (event, dto) => {\r\n\t\tthis.form.controls['primaryConcernAndReason'].setValue(event.source.triggerValue);\r\n\t\tthis.isReasonManual = true;\r\n\t\tthis.isReasonCombo = false;\r\n\t}\r\n\r\n\tsetFocus() {\r\n\t\tif (this.dto.requestId === 0) {\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.requested.setFocus();\r\n\t\t\t}, 0);\r\n\t\t}\r\n\t}\r\n\r\n\tdeleteRequest() {\r\n\t\tthis.delete.emit(this.dto);\r\n\t}\r\n\r\n\tgetForm(): UntypedFormGroup {\r\n\t\treturn this.form;\r\n\t}\r\n\r\n\tprivate buildForm() {\r\n\t\tthis.form = this.fb.group({\r\n\t\t\trequestId: [''],\r\n\t\t\trequestedByBusinessRoleId: ['', [Validators.required]],\r\n\t\t\tprimaryConcernAndReason: [''],\r\n\t\t\tissueResolutionAndGoal: [''],\r\n\t\t\tnotes: [''],\r\n\t\t\trequestedNumberPerClient: [''],\r\n\t\t\tapprovedNumberPerClient: [''],\r\n\t\t\tdateApproved: [''],\r\n\t\t\tdateDeclined: [''],\r\n\t\t\tapprovedBy: [''],\r\n\t\t\tdeclinedBy: [''],\r\n\t\t\tapprovalNotes: [''],\r\n\t\t\tdeclineNotes: [''],\r\n\t\t\tcontractServiceTypeId: [''],\r\n\t\t\tisReversed: [''],\r\n\t\t\tisClientWorking: undefined,\r\n\t\t\tisRehabilitationCase: undefined,\r\n\t\t\tisNewIssue: undefined,\r\n\t\t\tisWorkRelatedIssue: undefined,\r\n\t\t\tisClientConsentToOrgDiscussion: undefined,\r\n\t\t\tisClientConsentToReleaseName: undefined,\r\n\t\t\tisSupported: undefined,\r\n\t\t\tisClientUsingOtherExternalProfessional: undefined,\r\n\t\t\tisHelpRequiredDevelopingClientSupportPlan: undefined,\r\n\t\t\tisHROrManagerRecommended: undefined,\r\n\t\t\tisLegalIssue: undefined,\r\n\t\t\tsupportedByRole: undefined,\r\n\t\t\tsupportedByName: undefined\r\n\t\t});\r\n\t}\r\n\r\n\tprivate updateDto() {\r\n\t\tthis.setEnabledDisabledAccordingToReversedOrAlreadySaved();\r\n\r\n\t\tFormUtils.applyChanges(this.form, this.dto);\r\n\t\tthis.isDirty.emit(true);\r\n\t}\r\n\r\n\tprivate setEnabledDisabledAccordingToReversedOrAlreadySaved() {\r\n\t\tif (this.readOnly || this.dto.requestId) {\r\n\t\t\tthis.form.disable({ onlySelf: true, emitEvent: false });\r\n\t\t} else {\r\n\t\t\tthis.form.enable({ onlySelf: true, emitEvent: false });\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setData(dto: AdditionalSessionDto) {\r\n\t\tthis.dto = dto;\r\n\r\n\t\tthis.approvalNotesHtml = this.domSanitizer.bypassSecurityTrustHtml(\r\n\t\t\tthis.breakify.transform(this.request.approvalNotes)\r\n\t\t);\r\n\t\tthis.declineNotesHtml = this.domSanitizer.bypassSecurityTrustHtml(\r\n\t\t\tthis.breakify.transform(this.request.declineNotes)\r\n\t\t);\r\n\r\n\t\tthis.form.patchValue(this.dto);\r\n\t\tthis.setEnabledDisabledAccordingToReversedOrAlreadySaved();\r\n\r\n\t\t// Force new request to require saving.\r\n\t\tif (!dto.requestId) {\r\n\t\t\tthis.requestedByIsProfessional = true;\r\n\t\t\tthis.isDirty.emit(true);\r\n\t\t} else {\r\n\t\t\tthis.requestedByIsProfessional = !!this.professionals.find(p => p.id === dto.requestedByBusinessRoleId);\r\n\t\t\tif (!this.requestedByIsProfessional) {\r\n\t\t\t\tif (this.configService.config.id === dto.requestedByBusinessRoleId) {\r\n\t\t\t\t\tthis.requestedByNonProfessionalName = this.configService.config.name;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.requestedByNonProfessionalName = 'Non-professional';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","
\r\n\t
\r\n\t\t\r\n\t\t\twarning\r\n\t\t\t
Your request will not be submitted until you save.
\r\n\t\t
\r\n\t\r\n\r\n\t
\r\n\t\tthumb_up\r\n\t\t

Extra approved sessions

\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\r\n\t\t
\r\n\t\t\t{{ dto.dateApproved | date }}\r\n\t\t\t{{ dto.approvedBy }}\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t\r\n\r\n\t
\r\n\t\tthumb_down\r\n\t\t

Request declined

\r\n\t
\r\n\t
\r\n\t\t
\r\n\t\t\t{{ dto.dateDeclined | date }}\r\n\t\t\t{{ dto.declinedBy }}\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n\r\n\t
\r\n\t\tschedule\r\n\t\t

Request

\r\n\t
\r\n\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BaseService } from 'app/services/base-service';\r\nimport { CommonService, AdditionalSessionRequestReasonsDto } from 'app/services';\r\n\r\n@Injectable()\r\nexport class AdditionalSessionEditService extends BaseService {\r\n\t\r\n\tconstructor(common: CommonService) {\r\n\t\tsuper(common);\r\n\t}\r\n\r\n\tgetAdditionalSessionRequestReasons(): Observable {\r\n\t\treturn this.crud.loadWithGet('api/additionalSessionRequestReasons');\r\n\t}\r\n\t\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AdditionalSessionDto } from 'app/services';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class AdditionalSessionStatus {\r\n\tgetSessionStatusIcon(additionalSession: AdditionalSessionDto) {\r\n\t\tif (additionalSession.approvalId) {\r\n\t\t\treturn 'thumb_up';\r\n\t\t} else if (additionalSession.declineId) {\r\n\t\t\treturn 'thumb_down';\r\n\t\t}\r\n\r\n\t\treturn 'schedule';\r\n\t}\r\n\r\n\tgetSessionStatusClass(additionalSession: AdditionalSessionDto) {\r\n\t\tif (additionalSession.approvalId) {\r\n\t\t\treturn 'approved';\r\n\t\t} else if (additionalSession.declineId) {\r\n\t\t\treturn 'declined';\r\n\t\t}\r\n\r\n\t\treturn 'unknown';\r\n\t}\r\n}\r\n","// tslint:disable:no-bitwise\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport * as _ from 'lodash';\r\n\r\nimport {\r\n\tAppointmentDto,\r\n\tAvailabilityDto,\r\n\tAvailabilityEditDto,\r\n\tdateToAmbiguousMoment,\r\n\tAvailabilityStartTimeEditDto\r\n} from 'app/services';\r\n\r\nexport interface IAppointmentEvent {\r\n\tid: number;\r\n\ttitle: string;\r\n\tstart: moment.Moment;\r\n\tend: moment.Moment;\r\n\toverlap: boolean;\r\n\tappointment: AppointmentDto;\r\n\tresourceId: string;\r\n\tstartEditable: boolean;\r\n\tdroppable: boolean;\r\n\tdurationEditable: boolean;\r\n\teditable: boolean;\r\n\tupdating: boolean;\r\n\trendering: string;\r\n\tavailable?: boolean;\r\n\tisStartTime?: boolean;\r\n\tallDay?: boolean;\r\n\tisRecurring?: boolean;\r\n\tisReadOnly?: boolean;\r\n\tclassName?: string;\r\n\tisTechOnly: boolean;\r\n}\r\n\r\nexport class DateRange {\r\n\tconstructor(public dateStart: Date, public dateEndExclusive: Date) { }\r\n\r\n\tequals(otherRange): boolean {\r\n\t\tif (!otherRange) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn (\r\n\t\t\tmoment(otherRange.dateStart).isSame(this.dateStart, 'day') &&\r\n\t\t\tmoment(otherRange.dateEndExclusive).isSame(this.dateEndExclusive, 'day')\r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport class DiaryIdDayOrDateKey {\r\n\tconstructor(public diaryId: number, public dayOfWeekOrDate: number) { }\r\n\r\n\ttoString(): string {\r\n\t\treturn `id:${this.diaryId} d:${this.dayOfWeekOrDate}`;\r\n\t}\r\n}\r\n\r\nexport class DiaryIdDate {\r\n\tconstructor(public diaryId: number, public date: Date) { }\r\n}\r\n\r\nexport enum DiaryType {\r\n\tOffice,\r\n\tProfessional\r\n}\r\nexport class Diary {\r\n\tid: number;\r\n\tname: string;\r\n\tdiaryType: DiaryType;\r\n}\r\n\r\nexport class Resource {\r\n\tid: number;\r\n\ttitle: string;\r\n\tmsTimeZoneId: string;\r\n\tprofessionalId: number;\r\n}\r\n\r\nexport const msPerDay = 24 * 60 * 60 * 1000;\r\nexport const msPerMinute = 60 * 1000;\r\nexport const bitsPerByte = 8;\r\n\r\nexport const AGENDA_DAY = 'agendaDay';\r\nexport const AGENDA_WEEK = 'agendaWeek';\r\n\r\nexport const VIEW_DAY = 'day';\r\nexport const VIEW_WEEK = 'week';\r\n\r\nexport const SLOT_MINUTES = 15;\r\n\r\n// TODO: For evaluation only - replace with commercial license.\r\nexport const schedulerLicenseKey = 'CC-Attribution-NonCommercial-NoDerivatives';\r\n\r\nconst debug = false;\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class CalendarCommonService {\r\n\tprivate eventId = -1;\r\n\r\n\tapplyAvailabilityEdit(availability: AvailabilityDto, edit: AvailabilityEditDto) {\r\n\t\tconst editStart = moment(edit.startTime);\r\n\t\tconst editEnd = moment(edit.endTime);\r\n\r\n\t\tconst startOfday = editStart.clone().startOf('day');\r\n\t\tconst startMinute = editStart.diff(startOfday, 'minutes');\r\n\t\tconst endMinute = editEnd.diff(startOfday, 'minutes');\r\n\r\n\t\tconst firstByteIndex = Math.floor(startMinute / bitsPerByte);\r\n\t\tconst firstByteBits = startMinute % bitsPerByte;\r\n\r\n\t\tconst lastByteIndex = Math.floor(endMinute / bitsPerByte);\r\n\t\tconst lastByteBits = bitsPerByte - (endMinute % bitsPerByte); //doesn't seem right but is\r\n\t\t//const lastByteBits = endMinute % bitsPerByte;\r\n\r\n\t\tconst availabilityBytes = atob(availability.timeSlotsBase64);\r\n\t\tlet firstByte = availabilityBytes.charCodeAt(firstByteIndex);\r\n\t\tlet mask = ((0xff << firstByteBits) >> bitsPerByte) & 0xff;\r\n\r\n\t\tif (edit.isAvailable) {\r\n\t\t\tfirstByte = firstByte & mask;\r\n\t\t} else {\r\n\t\t\tmask = ~mask & 0xff;\r\n\t\t\tfirstByte = firstByte | mask;\r\n\t\t}\r\n\r\n\t\tlet lastByte = availabilityBytes.charCodeAt(lastByteIndex);\r\n\t\tmask = (0xff00 >> lastByteBits) & 0xff;\r\n\t\tif (edit.isAvailable) {\r\n\t\t\tlastByte = lastByte & mask;\r\n\t\t} else {\r\n\t\t\tmask = ~mask & 0xff;\r\n\t\t\tlastByte = lastByte | mask;\r\n\t\t}\r\n\r\n\t\tlet middle;\r\n\t\tlet middleStart = firstByteIndex + 1;\r\n\t\tlet middleEnd = lastByteIndex - 1;\r\n\r\n\t\tlet start = availabilityBytes.substring(0, firstByteIndex) || '';\r\n\t\tlet end = availabilityBytes.substring(lastByteIndex + 1) || '';\r\n\t\tif (edit.isAvailable) {\r\n\t\t\tconst char = String.fromCharCode(0);\r\n\t\t\tmiddle = _.repeat(char, middleEnd - middleStart + 1);\r\n\t\t} else {\r\n\t\t\tconst char = String.fromCharCode(0xff);\r\n\t\t\tmiddle = _.repeat(char, middleEnd - middleStart + 1);\r\n\t\t}\r\n\r\n\t\tconst newBytes = start + String.fromCharCode(firstByte) + middle + String.fromCharCode(lastByte) + end;\r\n\r\n\t\tconst base64 = btoa(newBytes);\r\n\t\tavailability.timeSlotsBase64 = base64;\r\n\t}\r\n\r\n\tapplyAvailabilityTechOnlyEdit(availability: AvailabilityDto, edit: AvailabilityEditDto) {\r\n\r\n\t\tconst editStart = moment(edit.startTime);\r\n\t\tconst editEnd = moment(edit.endTime);\r\n\r\n\t\tconst startOfday = editStart.clone().startOf('day');\r\n\t\tconst startMinute = editStart.diff(startOfday, 'minutes');\r\n\t\tconst endMinute = editEnd.diff(startOfday, 'minutes');\r\n\r\n\t\tconst firstByteIndex = Math.floor(startMinute / bitsPerByte);\r\n\t\tconst firstByteBits = startMinute % bitsPerByte;\r\n\r\n\t\tconst lastByteIndex = Math.floor(endMinute / bitsPerByte);\r\n\t\tconst lastByteBits = bitsPerByte - (endMinute % bitsPerByte); //doesn't seem right but is\r\n\r\n\t\tconst disallowInPersonBytes = atob(availability.disallowInPersonBase64);\r\n\r\n\t\tlet firstByte = disallowInPersonBytes.charCodeAt(firstByteIndex);\r\n\t\t//let mask = ((0xff << firstByteBits) >> bitsPerByte) & 0xff;\r\n\t\tlet mask = (0xff << firstByteBits) & 0xff;\r\n\t\tif (edit.techOnly) {\r\n\t\t\tfirstByte = firstByte | mask;\r\n\t\t}\r\n\t\telse {\r\n\t\t\t//firstByte = 0x00;\r\n\t\t\tmask = ~mask & 0xff;\r\n\t\t\tfirstByte = firstByte & mask;\r\n\t\t}\r\n\r\n\t\tlet lastByte = disallowInPersonBytes.charCodeAt(lastByteIndex);\r\n\t\tmask = (0xff >> lastByteBits) & 0xff;\r\n\t\tif (edit.techOnly) {\r\n\t\t\tlastByte = lastByte | mask;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tmask = ~mask & 0xff;\r\n\t\t\tlastByte = lastByte & mask;\r\n\t\t}\r\n\r\n\t\tlet middle;\r\n\t\tlet middleStart = firstByteIndex + 1;\r\n\t\tlet middleEnd = lastByteIndex - 1;\r\n\r\n\t\tlet start = disallowInPersonBytes.substring(0, firstByteIndex) || '';\r\n\t\tlet end = disallowInPersonBytes.substring(lastByteIndex + 1) || '';\r\n\r\n\t\tif (edit.techOnly) {\r\n\t\t\tconst char = String.fromCharCode(0xff);\r\n\t\t\tmiddle = _.repeat(char, middleEnd - middleStart + 1);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tconst char = String.fromCharCode(0x00);\r\n\t\t\tmiddle = _.repeat(char, middleEnd - middleStart + 1);\r\n\t\t}\r\n\r\n\t\tconst newBytes = start + String.fromCharCode(firstByte) + middle + String.fromCharCode(lastByte) + end;\r\n\r\n\t\tconst base64 = btoa(newBytes);\r\n\r\n\t\tavailability.disallowInPersonBase64 = base64;\r\n\t}\r\n\r\n\tapplyAvailabilityStartTimeEdit(availability: AvailabilityDto, edit: AvailabilityStartTimeEditDto) {\r\n\t\tconst editStart = moment(edit.startTime);\r\n\t\tconst editEnd = moment(edit.startTime).add(15, 'minutes');\r\n\r\n\t\tconst startOfday = editStart.clone().startOf('day');\r\n\t\tconst startMinute = editStart.diff(startOfday, 'minutes');\r\n\t\tconst endMinute = editEnd.diff(startOfday, 'minutes');\r\n\r\n\t\tconst firstByteIndex = Math.floor(startMinute / bitsPerByte);\r\n\t\tconst firstByteBits = startMinute % bitsPerByte;\r\n\r\n\t\tconst lastByteIndex = Math.floor(endMinute / bitsPerByte);\r\n\t\tconst lastByteBits = bitsPerByte - (endMinute % bitsPerByte);\r\n\r\n\t\tconst startTimesBytes = atob(availability.startTimesBase64);\r\n\t\tlet firstByte = startTimesBytes.charCodeAt(firstByteIndex);\r\n\t\tlet mask = ((0xff << firstByteBits) >> bitsPerByte) & 0xff;\r\n\t\tif (!edit.isStartTime) {\r\n\t\t\tfirstByte = firstByte & mask;\r\n\t\t} else {\r\n\t\t\tmask = ~mask & 0xff;\r\n\t\t\tfirstByte = firstByte | mask;\r\n\t\t}\r\n\r\n\t\tlet lastByte = startTimesBytes.charCodeAt(lastByteIndex);\r\n\t\tmask = (0xff00 >> lastByteBits) & 0xff;\r\n\t\tif (!edit.isStartTime) {\r\n\t\t\tlastByte = lastByte & mask;\r\n\t\t} else {\r\n\t\t\tmask = ~mask & 0xff;\r\n\t\t\tlastByte = lastByte | mask;\r\n\t\t}\r\n\r\n\t\tlet middle;\r\n\t\tlet middleStart = firstByteIndex + 1;\r\n\t\tlet middleEnd = lastByteIndex - 1;\r\n\r\n\t\tlet start = startTimesBytes.substring(0, firstByteIndex) || '';\r\n\t\tlet end = startTimesBytes.substring(lastByteIndex + 1) || '';\r\n\t\tif (!edit.isStartTime) {\r\n\t\t\tconst char = String.fromCharCode(0);\r\n\t\t\tmiddle = _.repeat(char, middleEnd - middleStart + 1);\r\n\t\t} else {\r\n\t\t\tconst char = String.fromCharCode(0xff);\r\n\t\t\tmiddle = _.repeat(char, middleEnd - middleStart + 1);\r\n\t\t}\r\n\r\n\t\t// if (debug) {\r\n\t\t// \tconsole.log(`Start ${start.length} middle ${middle.length} end ${end.length}`);\r\n\t\t// }\r\n\r\n\t\tconst newBytes = start + String.fromCharCode(firstByte) + middle + String.fromCharCode(lastByte) + end;\r\n\r\n\t\t// if (debug) {\r\n\t\t// \tconsole.log('Length: ' + newBytes.length);\r\n\t\t// \tfor (let i = 0; i < newBytes.length; i++) {\r\n\t\t// \t\tlet byte = newBytes.charCodeAt(i);\r\n\t\t// \t\tconsole.log(`${i} ${byte}`);\r\n\t\t// \t}\r\n\t\t// }\r\n\r\n\t\tconst base64 = btoa(newBytes);\r\n\t\tavailability.startTimesBase64 = base64;\r\n\t}\r\n\r\n\t/**\r\n\t * Debugging method to dump out (to the console) a display of time ranges\r\n\t * and whether the bit it set for the range.\r\n\t * @param base64 The bit-minute map of times of the day.\r\n\t */\r\n\tdumpBase64TimesMap(base64: string) {\r\n\t\tconst bytes = atob(base64);\r\n\r\n\t\tlet forDate = moment().startOf('day');\r\n\t\tlet thisMinute = moment(forDate);\r\n\r\n\t\t// Determine the flag status at the start of the day.\r\n\t\tlet lastFlag = (bytes.charCodeAt(0) & 0xff) === 1;\r\n\r\n\t\tlet events = [];\r\n\r\n\t\tconst newEvent = (startDate: moment.Moment, flag: boolean) => {\r\n\t\t\tlet event = {\r\n\t\t\t\tstart: startDate.clone(),\r\n\t\t\t\tend: startDate.clone(),\r\n\t\t\t\tflag\r\n\t\t\t};\r\n\t\t\tevents.push(event);\r\n\t\t\treturn event;\r\n\t\t};\r\n\r\n\t\t// Build the event for the start of the date.\r\n\t\tlet currentEvent = newEvent(forDate, lastFlag);\r\n\r\n\t\t// Loop through every minute of the day determining whether its bit is set or not\r\n\t\t// and when it changes state, end the last event and begin a new event.\r\n\t\tfor (let byteIndex = 0; byteIndex < bytes.length; byteIndex++) {\r\n\t\t\tlet byte: number = bytes.charCodeAt(byteIndex);\r\n\r\n\t\t\tfor (let bitIndex = 0; bitIndex < bitsPerByte; bitIndex++) {\r\n\t\t\t\t// Next minute is in the least significant bit.\r\n\r\n\t\t\t\tlet flag = (byte & 0x01) === 1;\r\n\r\n\t\t\t\t// Check if it's changed state - if so, end the current event and begin a new one.\r\n\t\t\t\tif (flag !== lastFlag) {\r\n\t\t\t\t\tcurrentEvent.end = thisMinute.clone();\r\n\r\n\t\t\t\t\t// Build a new event\r\n\t\t\t\t\tcurrentEvent = newEvent(thisMinute, flag);\r\n\t\t\t\t\tlastFlag = flag;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbyte = byte >> 1;\r\n\r\n\t\t\t\t// Move on to the next minute.\r\n\t\t\t\tthisMinute = moment(thisMinute).add(1, 'minute');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Close off the current event with the end time being the start of the next day.\r\n\t\tcurrentEvent.end = forDate.clone().add(1, 'day');\r\n\r\n\t\t// Dump out the generated events.\r\n\t\tevents.forEach(e => {\r\n\t\t\tconsole.log(`${e.start.format('HH:mm')} - ${e.end.format('HH:mm')}: ${e.flag ? '1' : '0'}`);\r\n\t\t});\r\n\t}\r\n\r\n\tbuildAvailabilityEvents(\r\n\t\tdateRange: DateRange,\r\n\t\tdiaryIDs: number[],\r\n\t\tavailabilities: AvailabilityDto[],\r\n\t\totherEvents: IAppointmentEvent[] = []\r\n\t): IAppointmentEvent[] {\r\n\t\t// Build an array of dates in the date range, start to end exclusive.\r\n\t\tconst datesInRange = _.range(dateRange.dateStart.getTime(), dateRange.dateEndExclusive.getTime(), msPerDay).map(\r\n\t\t\tms => new Date(ms)\r\n\t\t);\r\n\r\n\t\t// Build hashes for the availabilities keyed by the diary ID and date, categoriesed as recurring or specific.\r\n\t\tconst recurringAvailabilities = {};\r\n\t\tconst specificDateAvailibilities = {};\r\n\r\n\t\tavailabilities.forEach(a => {\r\n\t\t\tif (a.isRecurring) {\r\n\t\t\t\tconst dayOfWeek = moment(a.forDate).day();\r\n\t\t\t\tconst key = new DiaryIdDayOrDateKey(a.bookingDiaryId, dayOfWeek).toString();\r\n\t\t\t\trecurringAvailabilities[key] = a;\r\n\t\t\t} else {\r\n\t\t\t\tconst key = new DiaryIdDayOrDateKey(a.bookingDiaryId, a.forDate.getTime()).toString();\r\n\t\t\t\tspecificDateAvailibilities[key] = a;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Build an array of DiaryIdDate objects - one object for each diary ID for each date in the range.\r\n\t\tconst diaryIdDates = datesInRange.reduce((dates: DiaryIdDate[], date) => {\r\n\t\t\tfor (let i = 0; i < diaryIDs.length; i++) {\r\n\t\t\t\tconst id = diaryIDs[i];\r\n\t\t\t\tdates.push(new DiaryIdDate(id, date));\r\n\t\t\t}\r\n\r\n\t\t\treturn dates;\r\n\t\t}, []);\r\n\r\n\t\t// Produce an array of objects for each DiaryIdDate combination and the availability object for that combo.\r\n\t\tconst availabilitiesByDiaryIdDate = diaryIdDates.map(diaryIdDate => {\r\n\t\t\tconst dayOfWeek = moment(diaryIdDate.date).day();\r\n\t\t\tconst dateMs = moment(diaryIdDate.date)\r\n\t\t\t\t.startOf('day')\r\n\t\t\t\t.toDate()\r\n\t\t\t\t.getTime();\r\n\r\n\t\t\t// Build keys to look up specific and recurring availabilities.\r\n\t\t\tconst dayOfWeekKey = new DiaryIdDayOrDateKey(diaryIdDate.diaryId, dayOfWeek).toString();\r\n\t\t\tconst dateKey = new DiaryIdDayOrDateKey(diaryIdDate.diaryId, dateMs).toString();\r\n\r\n\t\t\t// Try to find a specific and recurring availability.\r\n\t\t\tconst specific = specificDateAvailibilities[dateKey];\r\n\t\t\tconst recurring = recurringAvailabilities[dayOfWeekKey];\r\n\r\n\t\t\t// Return an object with the DiaryIdDate object and the found availability (specific overriding the recurring).\r\n\t\t\treturn {\r\n\t\t\t\tdiaryIdDate,\r\n\t\t\t\tavailability: specific ? specific : recurring\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\t// Produce a combined list of appointment events and background events (for availabilities) by building background events\r\n\t\t// for each diary ID and date combo.\r\n\t\tlet events = availabilitiesByDiaryIdDate.reduce((list, diaryIdDateAvailability) => {\r\n\t\t\tconst diaryIdDate = diaryIdDateAvailability.diaryIdDate;\r\n\t\t\tconst availability = diaryIdDateAvailability.availability;\r\n\r\n\t\t\t// Build background events for the available portions of the availability spec for the diary ID and date.\r\n\t\t\tlet backgroundEvents = this.buildAvailabilityBackgroundEvents(\r\n\t\t\t\tdiaryIdDate.diaryId,\r\n\t\t\t\tdiaryIdDate.date,\r\n\t\t\t\tavailability\r\n\t\t\t);\r\n\r\n\t\t\t// Concatenate to the existing list (the reduce part).\r\n\t\t\treturn _.concat(list, backgroundEvents);\r\n\t\t}, otherEvents);\r\n\r\n\t\treturn events;\r\n\t}\r\n\r\n\tprivate nextEventId(): number {\r\n\t\treturn this.eventId--;\r\n\t}\r\n\r\n\tprivate buildAvailabilityBackgroundEvents(\r\n\t\tdiaryId: number,\r\n\t\tdate: Date,\r\n\t\tavailability: AvailabilityDto\r\n\t): IAppointmentEvent[] {\r\n\t\tlet availabilityEvents: IAppointmentEvent[] = [];\r\n\r\n\t\tconst forDate = dateToAmbiguousMoment(date).startOf('day');\r\n\r\n\t\t// Define a function for creating new events and adding them to the result list.\r\n\t\tconst newEvent = (startDate: moment.Moment, available: boolean, isStartTime?: boolean, isTechOnly?: boolean) => {\r\n\t\t\tlet event = {\r\n\t\t\t\tid: this.nextEventId(),\r\n\t\t\t\tstart: startDate.clone(),\r\n\t\t\t\tend: startDate.clone(),\r\n\t\t\t\ttitle: '',\r\n\t\t\t\toverlap: true,\r\n\t\t\t\tresourceId: '' + diaryId,\r\n\t\t\t\tstartEditable: false,\r\n\t\t\t\tdurationEditable: false,\r\n\t\t\t\trendering: 'background',\r\n\t\t\t\tappointment: undefined,\r\n\t\t\t\tavailable: available,\r\n\t\t\t\tisStartTime: isStartTime,\r\n\t\t\t\tisTechOnly: isTechOnly,\r\n\t\t\t\tclassName: isStartTime ? 'start-time' : isTechOnly ? 'tech-only' : 'background-event'\r\n\t\t\t};\r\n\t\t\tavailabilityEvents.push(event);\r\n\t\t\treturn event;\r\n\t\t};\r\n\r\n\t\tif (!availability) {\r\n\t\t\treturn availabilityEvents;\r\n\t\t}\r\n\r\n\t\tconst recurringDate = forDate.clone();\r\n\r\n\t\t// Build an all-day event to represent the recurring status.\r\n\t\tconst allDayEvent = newEvent(recurringDate, false);\r\n\t\tallDayEvent.allDay = true;\r\n\t\tallDayEvent.isRecurring = availability.isRecurring;\r\n\t\tallDayEvent.rendering = '';\r\n\t\tallDayEvent.end = allDayEvent.start.clone().add(1, 'day');\r\n\r\n\t\t/*\r\n\t\t * The availability info is base-64 encoded 180 byte array with 1 bit per minute of the day,\r\n\t\t * with a 1 signifying available, and a 0 signifying unavailable.\r\n\t\t */\r\n\t\tconst availabilityBytes = atob(availability.timeSlotsBase64);\r\n\r\n\t\t/*\r\n\t\t * Same for start times - signified by a 1 bit at the start time.\r\n\t\t */\r\n\t\tconst startTimesBytes = atob(availability.startTimesBase64);\r\n\r\n\t\t/*\r\n\t\t * Same for disallow in person times - signified by a 1 bit at the start time.\r\n\t\t */\r\n\t\tconst disallowInPersonBytes = atob(availability.disallowInPersonBase64);\r\n\r\n\t\t// Get the first minute status - is it availabile or unavailable?\r\n\r\n\t\t// tslint:disable-next-line:no-bitwise\r\n\t\tlet lastIsAvailable = (availabilityBytes.charCodeAt(0) & 0xff) === 0;\r\n\r\n\t\t// Get the first minute start time status - is it flagged as a start time?\r\n\t\tlet lastIsStartTime = (startTimesBytes.charCodeAt(0) & 0xff) === 1;\r\n\r\n\t\t// Get the first minute start time status - is it flagged as a start time?\r\n\t\tlet lastIsTechOnly = (disallowInPersonBytes.charCodeAt(0) & 0xff) === 1;\r\n\r\n\t\t// Build the event for the start of the date.\r\n\t\tlet currentEvent = newEvent(forDate, lastIsAvailable);\r\n\t\t//let techOnlyCurrentEvent = newEvent(forDate, lastIsAvailable);\r\n\t\tlet techOnlyCurrentEvent: IAppointmentEvent;\r\n\r\n\t\tlet thisMinute = moment(forDate);\r\n\r\n\t\t// Loop through every minute of the day determining whether it's available or unavailable, or when it's\r\n\t\t// a start time and when it changes state, end the last event and begin a new event.\r\n\t\tfor (let byteIndex = 0; byteIndex < availabilityBytes.length; byteIndex++) {\r\n\t\t\tlet byte: number = availabilityBytes.charCodeAt(byteIndex);\r\n\t\t\tlet startTimesByte: number = startTimesBytes.charCodeAt(byteIndex);\r\n\t\t\tlet disallowInPersonByte: number = disallowInPersonBytes.charCodeAt(byteIndex);\r\n\r\n\t\t\tfor (let bitIndex = 0; bitIndex < bitsPerByte; bitIndex++) {\r\n\t\t\t\t// Next minute is in the least significant bit.\r\n\r\n\t\t\t\tlet isAvailable = (byte & 0x01) === 0;\r\n\t\t\t\tlet isStartTime = (startTimesByte & 0x01) === 1;\r\n\t\t\t\tlet isTechOnly = (disallowInPersonByte & 0x01) !== 0;\r\n\r\n\t\t\t\t// Check if it's changed state - if so, end the current event and begin a new one.\r\n\t\t\t\tif (isAvailable !== lastIsAvailable || isStartTime !== lastIsStartTime) {\r\n\t\t\t\t\tcurrentEvent.end = thisMinute.clone();\r\n\r\n\t\t\t\t\t// Build a new event\r\n\t\t\t\t\tcurrentEvent = newEvent(thisMinute, isAvailable, isStartTime && isAvailable);\r\n\t\t\t\t\tlastIsAvailable = isAvailable;\r\n\t\t\t\t\tlastIsStartTime = isStartTime;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ((isTechOnly !== lastIsTechOnly)) {\r\n\r\n\t\t\t\t\tif (isTechOnly) {\r\n\t\t\t\t\t\t// Build a new event\r\n\t\t\t\t\t\ttechOnlyCurrentEvent = newEvent(thisMinute, true, false, true);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\ttechOnlyCurrentEvent.end = thisMinute.clone();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlastIsTechOnly = isTechOnly;\r\n\r\n\t\t\t\tbyte = byte >> 1;\r\n\t\t\t\tstartTimesByte = startTimesByte >> 1;\r\n\t\t\t\tdisallowInPersonByte = disallowInPersonByte >> 1;\r\n\r\n\t\t\t\t// Move on to the next minute.\r\n\t\t\t\tthisMinute = moment(thisMinute).add(1, 'minute');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Close off the current event with the end time being the start of the next day.\r\n\t\tcurrentEvent.end = forDate.clone().add(1, 'day');\r\n\r\n\t\t// Finally, we only want background events where the professional is available, or is marked as a start time.\r\n\t\t// The unavailabilities should leave gaps.\r\n\t\tavailabilityEvents = availabilityEvents.filter(e => !e.available || e.isStartTime || e.isTechOnly);\r\n\r\n\t\treturn availabilityEvents;\r\n\t}\r\n}\r\n","import { Component, Input, OnChanges } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\r\n\r\nimport {\r\n\tIClientEditLoadDto,\r\n\tIClientEditDto,\r\n\tFormUtils\r\n} from 'app/services';\r\nimport { IForm } from 'app/interfaces';\r\n\r\n@Component({\r\n\tselector: 'pp-client-details-edit',\r\n\ttemplateUrl: './client-details-edit.component.html',\r\n\tstyleUrls: ['./client-details-edit.component.scss']\r\n})\r\nexport class ClientDetailsEditComponent implements OnChanges, IForm {\r\n\tprivate forceHasChanges = false;\r\n\r\n\tform: UntypedFormGroup;\r\n\r\n\t@Input() loadDto: IClientEditLoadDto;\r\n\t@Input() editDto: IClientEditDto;\r\n\t@Input() readOnly: boolean;\r\n\r\n\tconstructor(\r\n\t\tprivate fb: UntypedFormBuilder\r\n\t) {\r\n\t\tthis.buildForm();\r\n\t}\r\n\r\n\tngOnChanges(hash) {\r\n\t\tif (hash.editDto) {\r\n\t\t\tthis.form.reset();\r\n\t\t\tthis.form.patchValue(this.editDto);\r\n\t\t\tthis.configureValidation();\r\n\r\n\t\t\tthis.markClean();\r\n\t\t}\r\n\t}\r\n\r\n\taddressesUpdated() {\r\n\t\tthis.forceHasChanges = true;\r\n\t}\r\n\r\n\tgetForm(): UntypedFormGroup {\r\n\t\treturn this.form;\r\n\t}\r\n\r\n\tisValid(): boolean {\r\n\t\treturn FormUtils.isFormValid(this);\r\n\t}\r\n\r\n\thasChanges(): boolean {\r\n\t\treturn this.form.dirty || this.forceHasChanges;\r\n\t}\r\n\r\n\tmarkClean() {\r\n\t\tthis.forceHasChanges = false;\r\n\t}\r\n\r\n\tapplyChanges(obj) {\r\n\t\tFormUtils.applyChanges(this.form, obj);\r\n\t}\r\n\r\n\tprivate buildForm() {\r\n\t\tthis.form = this.fb.group({\r\n\t\t\tfirstName: ['', Validators.required],\r\n\t\t\tlastName: ['', Validators.required],\r\n\t\t\tdescription: ['', Validators.required]\r\n\t\t});\r\n\t}\r\n\r\n\tprivate configureValidation() {\r\n\t\t// Disable fields not being used to turn off their validation.\r\n\t\tif (this.editDto.isDescriptionOnly) {\r\n\t\t\tthis.form.controls.firstName.disable();\r\n\t\t\tthis.form.controls.lastName.disable();\r\n\t\t} else {\r\n\t\t\tthis.form.controls.description.disable();\r\n\t\t}\r\n\r\n\t\tif (this.readOnly) {\r\n\t\t\tthis.form.disable();\r\n\t\t}\r\n\t}\r\n}\r\n","
\r\n\t
\r\n\t\t
\r\n\t\t\t \r\n\t\t\t \r\n\t\t
\r\n\t\t
\r\n\t\t\t \r\n\t\t
\r\n\t
\r\n\r\n\t
\r\n\t\t
Self-service registered
\r\n\t
\r\n\r\n\t\r\n\t\r\n\r\n","import { Component, Input } from '@angular/core';\r\nimport { UntypedFormBuilder, FormControl, UntypedFormGroup, } from '@angular/forms';\r\n\r\nimport {\r\n\tActivityHeaderEditLoadDto,\r\n\tActivityHeaderEditDto,\r\n\tFormUtils\r\n} from 'app/services';\r\nimport { IForm } from 'app/interfaces';\r\n\r\n@Component({\r\n\tselector: 'pp-client-partner-edit',\r\n\ttemplateUrl: './client-partner-edit.component.html',\r\n\tstyleUrls: ['./client-partner-edit.component.scss']\r\n})\r\nexport class ClientPartnerEditComponent implements IForm {\r\n\t@Input() loadDto: ActivityHeaderEditLoadDto;\r\n\t@Input() editDto: ActivityHeaderEditDto;\r\n\r\n\tform: UntypedFormGroup;\r\n\r\n\tconstructor(\r\n\t\tprivate fb: UntypedFormBuilder\r\n\t) {\r\n\t\tthis.buildForm();\r\n\t}\r\n\t\r\n\tgetForm(): UntypedFormGroup {\r\n\t\treturn this.form;\r\n\t}\r\n\r\n\tprivate buildForm() {\r\n\t\tthis.form = this.fb.group({\r\n\t\t\tclientPartnerFirstName: ['', null],\r\n\t\t\tclientPartnerLastName: ['', null]\r\n\t\t});\r\n\t}\r\n}\r\n","
\r\n\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t \r\n\t\t\t\t \r\n\t\t\t
\r\n\t\t
\r\n\r\n\t\t\r\n\t
\r\n
\r\n","import {\r\n\tComponent,\r\n\tOnInit,\r\n\tOnChanges,\r\n\tInput,\r\n\tOutput,\r\n\tEventEmitter,\r\n\tChangeDetectorRef,\r\n\tViewChild,\r\n\tElementRef\r\n} from '@angular/core';\r\nimport { MediaObserver } from '@angular/flex-layout';\r\nimport * as _ from 'lodash';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { CommunicationAddressDto, CountryLookupDto } from 'app/services';\r\nimport { CommAddrEditModalComponent } from '../comm-addr-edit-modal/comm-addr-edit-modal.component';\r\n\r\nclass Tag {\r\n\tname: string;\r\n\tclassName?: string;\r\n}\r\n\r\n@Component({\r\n\tselector: 'pp-comm-addr-display-edit',\r\n\ttemplateUrl: './comm-addr-display-edit.component.html',\r\n\tstyleUrls: ['./comm-addr-display-edit.component.scss'],\r\n\thost: {\r\n\t\t'cdkAriaLive': 'polite',\r\n\t\t'aria-live': 'polite',\r\n\t\t'aria-atomic': \"false\",\r\n\t\t'aria-relevant': \"all\",\r\n\t},\r\n})\r\nexport class CommAddrDisplayEditComponent implements OnChanges {\r\n\ttags: Tag[];\r\n\tdetails: string;\r\n\r\n\t@Input() address: CommunicationAddressDto;\r\n\t@Input() countries: CountryLookupDto[];\r\n\t@Input() readOnly: boolean;\r\n\t@Output() updated = new EventEmitter();\r\n\r\n\t@ViewChild('modalArea', { static: true }) modalAreaEl: ElementRef;\r\n\r\n\tconstructor(private cd: ChangeDetectorRef, private dialog: MatDialog, private media: MediaObserver) { }\r\n\r\n\tngOnChanges() {\r\n\t\tthis.setDetails();\r\n\t}\r\n\r\n\tadd() {\r\n\t\tthis.address.areaCode = '';\r\n\t\tthis.address.text = '';\r\n\r\n\t\tthis.addEditModal();\r\n\t}\r\n\r\n\tedit() {\r\n\t\tthis.addEditModal();\r\n\t}\r\n\r\n\tdelete() {\r\n\t\tconst addr = this.address;\r\n\t\taddr.text = '';\r\n\t\taddr.areaCode = '';\r\n\t\taddr.countryId = undefined;\r\n\t\taddr.isPrimary = false;\r\n\t\taddr.isSecondary = false;\r\n\t\taddr.isForNotifyEmail = false;\r\n\t\taddr.isForNotifySms = false;\r\n\t\taddr.isCanSendEmail = false;\r\n\t\taddr.isCanLeaveMessage = false;\r\n\r\n\t\tthis.updated.emit(addr);\r\n\t}\r\n\r\n\tprivate addEditModal() {\r\n\t\tconst gtSm = this.media.isActive('gt-sm');\r\n\r\n\t\tconst rect = this.modalAreaEl.nativeElement.getBoundingClientRect();\r\n\t\tlet dialogRef = this.dialog.open(CommAddrEditModalComponent, {\r\n\t\t\twidth: gtSm ? rect.width + 'px' : '95%',\r\n\t\t\tposition: {\r\n\t\t\t\tleft: gtSm ? rect.left + 'px' : '10px',\r\n\t\t\t\ttop: gtSm ? rect.top + 'px' : '70px'\r\n\t\t\t},\r\n\t\t\tdata: {\r\n\t\t\t\taddress: this.address,\r\n\t\t\t\tcountries: this.countries\r\n\t\t\t}\r\n\t\t});\r\n\t\tdialogRef.afterClosed().subscribe(result => {\r\n\t\t\tif (result === 'ok') {\r\n\t\t\t\tthis.setDetails();\r\n\t\t\t}\r\n\t\t\tthis.updated.emit(this.address);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate setDetails() {\r\n\t\tlet result = '';\r\n\t\tconst addr = this.address;\r\n\r\n\t\tif (addr.countryVisible) {\r\n\t\t\tif (addr.countryId) {\r\n\t\t\t\tlet country = _.find(this.countries, c => c.id === addr.countryId);\r\n\t\t\t\tif (country) {\r\n\t\t\t\t\tresult += `+${country.callingCode}`;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (addr.areaCodeVisible) {\r\n\t\t\tresult += ` ${addr.areaCode}`;\r\n\t\t}\r\n\r\n\t\tthis.tags = [];\r\n\r\n\t\tif (addr.showPrimarySecondary && addr.isPrimary) {\r\n\t\t\tthis.addTag('Primary', 'primary');\r\n\t\t}\r\n\r\n\t\tif (addr.showPrimarySecondary && addr.isSecondary) {\r\n\t\t\tthis.addTag('Secondary', 'secondary');\r\n\t\t}\r\n\r\n\t\tif (addr.canBeForNotifyEmail && addr.isForNotifyEmail) {\r\n\t\t\tthis.addTag('Email (notify)');\r\n\t\t}\r\n\r\n\t\tif (addr.canBeForNotifySms && addr.isForNotifySms) {\r\n\t\t\tthis.addTag('SMS (notify)');\r\n\t\t}\r\n\r\n\t\tif (addr.emailVisible && addr.isCanSendEmail) {\r\n\t\t\tthis.addTag('Email (can send)');\r\n\t\t}\r\n\r\n\t\tif (addr.showCanSendMsg && addr.isCanLeaveMessage) {\r\n\t\t\tthis.addTag('Leave message');\r\n\t\t}\r\n\r\n\t\tresult += ` ${addr.text}`;\r\n\r\n\t\tthis.details = result;\r\n\t}\r\n\r\n\tprivate addTag(name: string, cls: string = undefined) {\r\n\t\tthis.tags.push({\r\n\t\t\tname,\r\n\t\t\tclassName: cls\r\n\t\t});\r\n\t}\r\n}\r\n","
\r\n\t
\r\n\t\t
{{ address.typeName }}
\r\n\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n\r\n\t
\r\n\t\t{{ details }}\r\n\t\t
\t\t\t\r\n\t\t\t
\r\n\t\t\t\t{{ tag.name }}\r\n\t\t\t
\r\n\t\t
\r\n\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n
\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { LiveAnnouncer } from '@angular/cdk/a11y';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport {\r\n\tMatDialogRef,\r\n\tMAT_DIALOG_DATA\r\n} from '@angular/material/dialog';\r\nimport {\r\n\tCommunicationAddressDto,\r\n\tConfigService,\r\n\tCountryLookupDto,\r\n\tFormUtils,\r\n} from 'app/services';\r\n\r\n@Component({\r\n\tselector: 'pp-comm-addr-edit-modal',\r\n\ttemplateUrl: './comm-addr-edit-modal.component.html',\r\n\tstyleUrls: ['./comm-addr-edit-modal.component.scss']\r\n})\r\nexport class CommAddrEditModalComponent implements OnInit {\r\n\tform: UntypedFormGroup;\r\n\taddress: CommunicationAddressDto;\r\n\tcountries: CountryLookupDto[];\r\n\r\n\tconstructor(\r\n\t\tpublic dialogRef: MatDialogRef,\r\n\t\t@Inject(MAT_DIALOG_DATA) public data: any,\r\n\t\tprivate fb: UntypedFormBuilder,\r\n\t\tprivate config: ConfigService,\r\n\t\tprivate announcer: LiveAnnouncer\r\n\t) { }\r\n\r\n\tngOnInit() {\r\n\t\tthis.buildForm();\r\n\r\n\t\tthis.address = this.data.address;\r\n\t\tthis.countries = this.data.countries;\r\n\r\n\t\tthis.form.patchValue(this.address);\r\n\r\n\t\tif (!this.address.countryId && this.address.countryVisible) {\r\n\t\t\tthis.form.patchValue({\r\n\t\t\t\tcountryId: this.config.systemPreferences.defaultCountryId\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\tgetCountry() {\r\n\t\t// Note: 'this' isn't the CommAddressEditComponent object.\r\n\t\t// This function is being passed directly to the pp-select component\r\n\t\t// for it to call. The 'this' object will be the Country data object.\r\n\t\tconst callingCode = this['callingCode'],\r\n\t\t\tabbrev = this['iso31661Alpha2Code'];\r\n\r\n\t\treturn `${callingCode} (${abbrev})`;\r\n\t}\r\n\r\n\tsubmit() {\r\n\t\tthis.announcer.announce(`${this.data.address.typeName} edited. Save case to keep modification.`);\r\n\t\tFormUtils.applyChanges(this.form, this.address);\r\n\t}\r\n\r\n\tprivate buildForm() {\r\n\t\tthis.form = this.fb.group({\r\n\t\t\tareaCode: [''],\r\n\t\t\ttext: [''],\r\n\t\t\tcountryId: ['', Validators.required],\r\n\t\t\tisForNotifyEmail: [''],\r\n\t\t\tisForNotifySms: [''],\r\n\t\t\tisCanSendEmail: [''],\r\n\t\t\tisCanLeaveMessage: [''],\r\n\t\t\tisPrimary: [''],\r\n\t\t\tisSecondary: ['']\r\n\t\t});\r\n\t}\r\n}\r\n","
\r\n\t
\r\n\t\t
{{ data.address.typeName }}
\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t
\r\n\r\n\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\r\n\t\t
Additional Information
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n
\r\n","import {\r\n\tComponent,\r\n\tOnChanges,\r\n\tAfterViewInit,\r\n\tOnDestroy,\r\n\tInput,\r\n\tOutput,\r\n\tChangeDetectorRef,\r\n\tViewChildren,\r\n\tViewChild,\r\n\tQueryList,\r\n\tEventEmitter,\r\n\tElementRef,\r\n} from '@angular/core';\r\nimport * as _ from 'lodash';\r\nimport {\r\n\tCommunicationAddressDto,\r\n\tCountryLookupDto,\r\n} from 'app/services';\r\nimport { CommAddrDisplayEditComponent } from '../comm-addr-display-edit/comm-addr-display-edit.component';\r\nimport { MatMenuTrigger } from '@angular/material/menu';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n\tselector: 'pp-comm-addr-editor',\r\n\ttemplateUrl: './comm-addr-editor.component.html',\r\n\tstyleUrls: ['./comm-addr-editor.component.scss'],\r\n})\r\nexport class CommAddrEditorComponent implements OnChanges, AfterViewInit {\r\n\r\n\tcommAddressesWithValues: CommunicationAddressDto[];\r\n\tcanAddMore: boolean = true;\r\n\taddableTypes: string[];\r\n\r\n\t@Input() commAddresses: CommunicationAddressDto[];\r\n\t@Input() countries: CountryLookupDto[];\r\n\t@Input() readOnly: boolean;\r\n\t@Output() updated = new EventEmitter();\r\n\r\n\t@ViewChildren(CommAddrDisplayEditComponent) editorQuery: QueryList;\r\n\t@ViewChild(MatMenuTrigger) menuTrigger: MatMenuTrigger;\r\n\r\n\tconstructor(\r\n\t\tprivate cd: ChangeDetectorRef,\r\n\t\tprivate ref: ElementRef,\r\n\t) { }\r\n\r\n\tngOnChanges(changes) {\r\n\t\tif (changes.commAddresses) {\r\n\t\t\tthis.filterCommAddresses();\r\n\t\t}\r\n\t}\r\n\r\n\tngAfterViewInit() {\r\n\r\n\t\t// To Fix the aria-expended not set when not opened\r\n\t\t// This is fixed with angular material v15, which was yet to be release when updating angular to v14\r\n\t\tthis.menuTrigger?.menuOpened.subscribe(() => this.changeAriaExpended(true));\r\n\t\tthis.menuTrigger?.menuClosed.subscribe(() => this.changeAriaExpended(false));\r\n\t\tthis.changeAriaExpended(false);\r\n\t}\r\n\r\n\tchangeAriaExpended(state: boolean) {\r\n\t\tArray.from(this.ref.nativeElement.querySelectorAll('.menu-trigger')).forEach((x: HTMLElement) => {\r\n\t\t\tx.setAttribute('aria-expended', state ? 'true' : 'false');\r\n\t\t});\r\n\t}\r\n\r\n\tcommAddressUpdated(address) {\r\n\t\tthis.filterCommAddresses();\r\n\t\tthis.updated.emit(true);\r\n\t}\r\n\r\n\taddAddress(typeName: string) {\r\n\t\tconst addressType = this.commAddresses.find(a => a.typeName === typeName);\r\n\t\taddressType.areaCode = '';\r\n\t\taddressType.text = '';\r\n\t\tthis.commAddressesWithValues.push(addressType);\r\n\r\n\t\tthis.cd.detectChanges();\r\n\r\n\t\tconst comp = this.editorQuery.last;\r\n\t\tcomp.add();\r\n\t}\r\n\r\n\tprivate filterCommAddresses(): void {\r\n\t\tthis.commAddressesWithValues = (this.commAddresses || []).filter(a => {\r\n\t\t\treturn a.text;\r\n\t\t});\r\n\r\n\t\tthis.canAddMore = this.commAddressesWithValues.length < (this.commAddresses || []).length;\r\n\t\tconst emptyTypes = _.difference(this.commAddresses, this.commAddressesWithValues);\r\n\t\tthis.addableTypes = emptyTypes.map(t => t.typeName);\r\n\t}\r\n}\r\n","
\r\n\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n\r\n\t
\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t
\r\n
\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { SharedModule } from 'app/shared/shared.module';\r\n\r\nimport { AddChoiceModalComponent } from './statistics-editors/container-two-num/add-choice-modal/add-choice-modal.component';\r\nimport { AdditionalSessionEditComponent } from './additional-session-edit/additional-session-edit.component';\r\nimport { AdditionalSessionStatus } from './additional-session-status.service';\r\nimport { AdditionalSessionEditService } from './additional-session-edit/additional-session-edit.service';\r\nimport { BooleanGoalDisplayComponent } from './statistics-editors/custom/boolean-goal-display/boolean-goal-display.component';\r\nimport { CalendarCommonService } from './calendar-common/calendar-common.service';\r\nimport { ChipsPickerComponent } from './statistics-editors/container-pick-list-grid/chips-picker/chips-picker.component';\r\nimport { ClientDetailsEditComponent } from './client-details-edit/client-details-edit.component';\r\nimport { ClientEditComponent } from './statistic-headers/client-edit/client-edit.component';\r\nimport { ClientEditDetailsComponent } from './statistic-headers/client-edit/client-edit-details/client-edit-details.component';\r\nimport { ClientPartnerEditComponent } from './client-partner-edit/client-partner-edit.component';\r\nimport { ClientEditSessionsComponent } from './statistic-headers/client-edit/client-edit-sessions/client-edit-sessions.component';\r\nimport { ClientEditStatisticsComponent } from './statistic-headers/client-edit/client-edit-statistics/client-edit-statistics.component';\r\nimport { ClientSessionEditComponent } from './statistic-headers/client-edit/client-edit-sessions/client-session-edit/client-session-edit.component';\r\nimport { ClientsComponent } from './statistic-headers/clients/clients.component';\r\nimport { ClinicalProfileDisplayComponent } from './statistics-editors/custom/clinical-profile-display/clinical-profile-display.component';\r\nimport { CommAddrDisplayEditComponent } from './comm-address-edit/comm-addr-display-edit/comm-addr-display-edit.component';\r\nimport { CommAddrEditModalComponent } from './comm-address-edit/comm-addr-edit-modal/comm-addr-edit-modal.component';\r\nimport { CommAddrEditorComponent } from './comm-address-edit/comm-addr-editor/comm-addr-editor.component';\r\nimport { CompletionPercentComponent } from './statistics-editors/custom/completion-percent/completion-percent.component';\r\nimport { ContainerControlsComponent } from './statistics-editors/container-controls/container-controls.component';\r\nimport { ContainerIndividualGridComponent } from './statistics-editors/container-individual-grid/container-individual-grid.component';\r\nimport { ContainerPickAndAddTwoNumComponent } from './statistics-editors/container-pick-and-add-two-num/container-pick-and-add-two-num.component';\r\nimport { ContainerPickAndAddTwoNumItemComponent } from './statistics-editors/container-pick-and-add-two-num/container-pick-and-add-two-num-item/container-pick-and-add-two-num.-itemcomponent';\r\nimport { ContainerPickListGridComponent } from './statistics-editors/container-pick-list-grid/container-pick-list-grid.component';\r\nimport { ContainerTwoNumComponent } from './statistics-editors/container-two-num/container-two-num.component';\r\nimport { ContainerTwoNumPlusMinusEditComponent } from './statistics-editors/container-two-num/container-two-num-plus-minus-edit/container-two-num-plus-minus-edit.component';\r\nimport { ContractNotesDisplayComponent } from './contract-terms/contract-notes-display/contract-notes-display.component';\r\nimport { ContractServiceTypeItemsDisplayComponent } from './contract-terms/contract-service-type-items-display/contract-service-type-items-display.component';\r\nimport { ContractTermsComponent } from './contract-terms/contract-terms.component';\r\nimport { ContractTermsService } from './contract-terms/contract-terms.service';\r\nimport { EapServicesClientQuestionnaireComponent } from './statistics-editors/custom/eap-services-client-questionnaire/eap-services-client-questionnaire.component';\r\nimport { EapServicesClientQuestionnaireDisplayComponent } from './statistics-editors/custom/eap-services-client-questionnaire-display/eap-services-client-questionnaire-display.component';\r\nimport { EditorHoursMinutesComponent } from './statistics-editors/editor-hours-minutes/editor-hours-minutes.component';\r\nimport { EditorNumericTextboxDecComponent } from './statistics-editors/editor-numeric-textbox-dec/editor-numeric-textbox-dec.component';\r\nimport { EditorNumericTextboxIntComponent } from './statistics-editors/editor-numeric-textbox-int/editor-numeric-textbox-int.component';\r\nimport { EditorPicklistComponent } from './statistics-editors/editor-picklist/editor-picklist.component';\r\nimport { EditorTextboxComponent } from './statistics-editors/editor-textbox/editor-textbox.component';\r\nimport { EditorTextboxMultiComponent } from './statistics-editors/editor-textbox-multi/editor-textbox-multi.component';\r\nimport { EditorTwoNumComponent } from './statistics-editors/editor-two-num/editor-two-num.component';\r\nimport { ExtendedDetailsEditComponent } from './extended-details/extended-details-edit/extended-details-edit.component';\r\nimport { ExtendedDetailsItemsDisplayComponent } from './extended-details/extended-details-items-display/extended-details-items-display.component';\r\nimport { ExtendedDetailsEditOtherComponent } from './extended-details/extended-details-edit-other/extended-details-edit-other.component';\r\nimport { PersonalDetailsEditComponent } from './personal-details-edit/personal-details-edit.component';\r\nimport { HeaderEditComponent } from './statistic-headers/header-edit/header-edit.component';\r\nimport { HeaderEditStatisticsComponent } from './statistic-headers/header-edit/header-edit-statistics/header-edit-statistics.component';\r\nimport { HeaderEditSummaryComponent } from './statistic-headers/header-edit/header-edit-summary/header-edit-summary.component';\r\nimport { HeadersComponent } from './statistic-headers/headers/headers.component';\r\nimport { OrganisationHierarchyEditComponent } from './organisation-hierarchy-edit/organisation-hierarchy-edit.component';\r\nimport { OtherGoalDisplayComponent } from './statistics-editors/custom/other-goal-display/other-goal-display.component';\r\nimport { RiskProfileDisplayComponent } from './statistics-editors/custom/risk-profile-display/risk-profile-display.component';\r\nimport { RiskProfileFactorComponent } from './statistics-editors/custom/risk-profile-factor/risk-profile-factor.component';\r\nimport { StatisticContainerComponent } from './statistic-container/statistic-container.component';\r\nimport { StatisticHeadersComponent } from './statistic-headers/statistic-headers.component';\r\nimport { StatisticsComponent } from './statistics/statistics.component';\r\n\r\n@NgModule({\r\n\timports: [CommonModule, SharedModule],\r\n\tdeclarations: [\r\n\t\tAddChoiceModalComponent,\r\n\t\tAdditionalSessionEditComponent,\r\n\t\tBooleanGoalDisplayComponent,\r\n\t\tChipsPickerComponent,\r\n\t\tClientDetailsEditComponent,\r\n\t\tClientEditComponent,\r\n\t\tClientEditDetailsComponent,\r\n\t\tClientPartnerEditComponent,\r\n\t\tClientEditSessionsComponent,\r\n\t\tClientEditStatisticsComponent,\r\n\t\tClientSessionEditComponent,\r\n\t\tClientsComponent,\r\n\t\tClinicalProfileDisplayComponent,\r\n\t\tCommAddrDisplayEditComponent,\r\n\t\tCommAddrEditModalComponent,\r\n\t\tCommAddrEditorComponent,\r\n\t\tCompletionPercentComponent,\r\n\t\tContainerControlsComponent,\r\n\t\tContainerIndividualGridComponent,\r\n\t\tContainerPickAndAddTwoNumComponent,\r\n\t\tContainerPickAndAddTwoNumItemComponent,\r\n\t\tContainerPickListGridComponent,\r\n\t\tContainerTwoNumComponent,\r\n\t\tContainerTwoNumPlusMinusEditComponent,\r\n\t\tContractNotesDisplayComponent,\r\n\t\tContractServiceTypeItemsDisplayComponent,\r\n\t\tContractTermsComponent,\r\n\t\tEapServicesClientQuestionnaireComponent,\r\n\t\tEapServicesClientQuestionnaireDisplayComponent,\r\n\t\tEditorHoursMinutesComponent,\r\n\t\tEditorNumericTextboxDecComponent,\r\n\t\tEditorNumericTextboxIntComponent,\r\n\t\tEditorPicklistComponent,\r\n\t\tEditorTextboxComponent,\r\n\t\tEditorTextboxMultiComponent,\r\n\t\tEditorTwoNumComponent,\r\n\t\tExtendedDetailsEditComponent,\r\n\t\tExtendedDetailsItemsDisplayComponent,\r\n\t\tExtendedDetailsEditOtherComponent,\r\n\t\tPersonalDetailsEditComponent,\r\n\t\tHeaderEditComponent,\r\n\t\tHeaderEditStatisticsComponent,\r\n\t\tHeaderEditSummaryComponent,\r\n\t\tHeadersComponent,\r\n\t\tOrganisationHierarchyEditComponent,\r\n\t\tOtherGoalDisplayComponent,\r\n\t\tRiskProfileDisplayComponent,\r\n\t\tRiskProfileFactorComponent,\r\n\t\tStatisticContainerComponent,\r\n\t\tStatisticHeadersComponent,\r\n\t\tStatisticsComponent,\r\n\t],\r\n\texports: [\r\n\t\tAddChoiceModalComponent,\r\n\t\tAdditionalSessionEditComponent,\r\n\t\tChipsPickerComponent,\r\n\t\tClientDetailsEditComponent,\r\n\t\tClientEditComponent,\r\n\t\tClientEditDetailsComponent,\r\n\t\tClientPartnerEditComponent,\r\n\t\tClientEditSessionsComponent,\r\n\t\tClientEditStatisticsComponent,\r\n\t\tClientSessionEditComponent,\r\n\t\tClientsComponent,\r\n\t\tCommAddrDisplayEditComponent,\r\n\t\tCommAddrEditModalComponent,\r\n\t\tCommAddrEditorComponent,\r\n\t\tContainerControlsComponent,\r\n\t\tContainerIndividualGridComponent,\r\n\t\tContainerPickAndAddTwoNumComponent,\r\n\t\tContainerPickAndAddTwoNumItemComponent,\r\n\t\tContainerPickListGridComponent,\r\n\t\tContainerTwoNumComponent,\r\n\t\tContainerTwoNumPlusMinusEditComponent,\r\n\t\tContractTermsComponent,\r\n\t\tEapServicesClientQuestionnaireComponent,\r\n\t\tEditorHoursMinutesComponent,\r\n\t\tEditorNumericTextboxDecComponent,\r\n\t\tEditorNumericTextboxIntComponent,\r\n\t\tEditorPicklistComponent,\r\n\t\tEditorTextboxComponent,\r\n\t\tEditorTextboxMultiComponent,\r\n\t\tEditorTwoNumComponent,\r\n\t\tExtendedDetailsEditComponent,\r\n\t\tExtendedDetailsItemsDisplayComponent,\r\n\t\tExtendedDetailsEditOtherComponent,\r\n\t\tPersonalDetailsEditComponent,\r\n\t\tHeaderEditComponent,\r\n\t\tHeaderEditStatisticsComponent,\r\n\t\tHeaderEditSummaryComponent,\r\n\t\tHeadersComponent,\r\n\t\tOrganisationHierarchyEditComponent,\r\n\t\tStatisticContainerComponent,\r\n\t\tStatisticHeadersComponent,\r\n\t\tStatisticsComponent,\r\n\t],\r\n\tproviders: [ContractTermsService, CalendarCommonService, AdditionalSessionStatus, AdditionalSessionEditService],\r\n})\r\nexport class CommonEditingModule { }\r\n","import { Component, OnInit, Input, ChangeDetectionStrategy } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\nimport {\r\n\tContractInfoDto\r\n} from 'app/services';\r\n\r\n@Component({\r\n\tselector: 'pp-contract-notes-display',\r\n\ttemplateUrl: './contract-notes-display.component.html',\r\n\tstyleUrls: ['./contract-notes-display.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ContractNotesDisplayComponent implements OnInit {\r\n\thasServiceType: boolean;\r\n\thasContract: boolean;\r\n\thasCustomer: boolean;\r\n\r\n\t// Template properties\r\n\tserviceTypeAlertHtml: SafeHtml;\r\n\tcontractAlertHtml: SafeHtml;\r\n\tcustomerAlertHtml: SafeHtml;\r\n\r\n\t@Input() contractInfo: ContractInfoDto;\r\n\r\n\tconstructor(\r\n\t\tprivate domSanitizer: DomSanitizer,\r\n\t) {}\r\n\r\n\tngOnInit() {\r\n\t\tthis.serviceTypeAlertHtml = this.domSanitizer.bypassSecurityTrustHtml(this.contractInfo.alertServiceType);\r\n\t\tthis.contractAlertHtml = this.domSanitizer.bypassSecurityTrustHtml(this.contractInfo.alertContract);\r\n\t\tthis.customerAlertHtml = this.domSanitizer.bypassSecurityTrustHtml(this.contractInfo.alertCustomer);\r\n\r\n\t\tthis.hasServiceType = !this.isEmptyHtml(this.contractInfo.alertServiceType);\r\n\t\tthis.hasContract = !this.isEmptyHtml(this.contractInfo.alertContract);\r\n\t\tthis.hasCustomer = !this.isEmptyHtml(this.contractInfo.alertCustomer);\r\n\t}\r\n\r\n\tscrollIntoView(anchorId) {\r\n\t\tsetTimeout(() => {\r\n\t\t\tconst anchor = document.getElementById(anchorId);\r\n\t\t\tif (anchor) {\r\n\t\t\t\tanchor.focus();\r\n\t\t\t\tanchor.scrollIntoView();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate isEmptyHtml(html: string): boolean {\r\n\t\tif (!html) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn html.toLocaleLowerCase() === '

';\r\n\t}\r\n}\r\n","
\r\n\t\r\n\r\n\t
\r\n\t\t
\r\n\t\t
Service type alert
\r\n\t\t
\t\t\t\r\n\r\n\t\t
\r\n\t\t
Contract alert
\r\n\t\t
\r\n\r\n\t\t
\r\n\t\t
Customer alert
\r\n\t\t
\r\n\t
\r\n
","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\r\n\r\nimport {\r\n\tContractInfoDto\r\n} from 'app/services';\r\n\r\n@Component({\r\n\tselector: 'pp-contract-service-type-items-display',\r\n\ttemplateUrl: './contract-service-type-items-display.component.html',\r\n\tstyleUrls: ['./contract-service-type-items-display.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ContractServiceTypeItemsDisplayComponent {\r\n\t@Input() contractInfo: ContractInfoDto;\r\n}\r\n","
\r\n\t
\r\n\t\t
\r\n\t\t\t{{ item.text }}\r\n\t\t\tYes\r\n\t\t\tNo\r\n\t\t
\r\n\t
\r\n
","import { Component, OnChanges, Input, Output, EventEmitter, ViewChildren, QueryList } from '@angular/core';\r\nimport * as _ from 'lodash';\r\n\r\nimport {\r\n\tIClientEditLoadDto,\r\n\tIClientEditDto,\r\n\tContractInfoDto,\r\n\tAdditionalSessionDto,\r\n\tFormUtils\r\n} from 'app/services';\r\n\r\nimport { ContractTermsService } from './contract-terms.service';\r\nimport { IEditComponent, IForm } from 'app/interfaces';\r\n\r\nimport { AdditionalSessionEditComponent } from '../additional-session-edit/additional-session-edit.component';\r\nimport { AdditionalSessionStatus } from '../additional-session-status.service';\r\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\r\n\r\n@Component({\r\n\tselector: 'pp-contract-terms',\r\n\ttemplateUrl: './contract-terms.component.html',\r\n\tstyleUrls: ['./contract-terms.component.scss']\r\n})\r\nexport class ContractTermsComponent implements OnChanges, IForm, IEditComponent {\r\n\tprivate hasUnsavedChanges = false;\r\n\r\n\t@Input() contractInfo: ContractInfoDto;\r\n\t@Input() editDto: IClientEditDto;\r\n\t@Input() readOnly: boolean;\r\n\r\n\t@Output() changed = new EventEmitter();\r\n\r\n\t@ViewChildren(AdditionalSessionEditComponent) additionalSessionEdits: QueryList;\r\n\r\n\tselectedRequest: AdditionalSessionDto;\r\n\tmainTabIndex: number;\r\n\tsessionIndex: number;\r\n\tsessionsPerClient: string;\r\n\tcolumnDefs: any[];\r\n\thasSessions: boolean;\r\n\tsocialServicesContactInfo: string;\r\n\r\n\tform: UntypedFormGroup;\r\n\r\n\tconstructor(\r\n\t\tprivate service: ContractTermsService,\r\n\t\tprivate additionalSessionStatus: AdditionalSessionStatus,\r\n\t\tprivate fb: UntypedFormBuilder\r\n\t) {\r\n\t\tthis.buildForm();\r\n\t}\r\n\r\n\tngOnChanges(changes) {\r\n\t\tlet sessionsPerClient = this.contractInfo.numberSessionsPerClient;\r\n\t\tif (this.contractInfo.numberSessionsPerClientOverride) {\r\n\t\t\tsessionsPerClient = this.contractInfo.numberSessionsPerClientOverride;\r\n\t\t}\r\n\r\n\t\tif (sessionsPerClient > 100000) {\r\n\t\t\tthis.sessionsPerClient = 'Unlimited';\r\n\t\t} else {\r\n\t\t\tthis.sessionsPerClient = sessionsPerClient + '';\r\n\t\t}\r\n\r\n\t\tthis.hasSessions = this.contractInfo.hasSessions;\r\n\t\tthis.mainTabIndex = 0;\r\n\t\tthis.hasUnsavedChanges = false;\r\n\t\tthis.selectedRequest = undefined;\r\n\r\n\t\tif (this.editDto.additionalSessions.length) {\r\n\t\t\tthis.sessionIndex = 0;\r\n\t\t}\r\n\r\n\t\tif (changes.editDto) {\r\n\t\t\tthis.socialServicesContactInfo = this.editDto.socialServicesContactDetails;\r\n\t\t\tthis.form.patchValue({\r\n\t\t\t\tsocialServicesContactedDate: this.editDto.socialServicesContactedDate\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tgetForm(): UntypedFormGroup {\r\n\t\treturn this.form;\r\n\t}\r\n\r\n\tmainTabIndexChanged(newIndex) {\r\n\t\tthis.mainTabIndex = newIndex;\r\n\t\tif (newIndex === 1 && !this.selectedRequest) {\r\n\t\t\tthis.selectRequest(this.editDto.additionalSessions[0]);\r\n\t\t}\r\n\t}\r\n\r\n\taddExtensionRequest(event) {\r\n\t\tconst newRequest = this.service.newAdditionalSession();\r\n\t\tthis.editDto.additionalSessions.push(newRequest);\r\n\r\n\t\tthis.sessionIndex = this.editDto.additionalSessions.length - 1;\r\n\t\tthis.selectedRequest = newRequest;\r\n\r\n\t\t// Set the mainTabIndex after the additionalSessions have rendered.\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.mainTabIndex = 1;\r\n\r\n\t\t\tlet edit = this.additionalSessionEdits.find(e => e.dto === this.selectedRequest);\r\n\t\t\tif (!edit) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tedit.setFocus();\r\n\t\t}, 100);\r\n\t}\r\n\r\n\tget addingExtensionRequest () {\r\n\t\t// Return true is there's an unsaved (requestId is 0) addiitonal session request.\r\n\t\treturn !!this.editDto.additionalSessions.filter(r => r.requestId === 0).length;\r\n\t}\r\n\r\n\tselectRequest(e: AdditionalSessionDto) {\r\n\t\tthis.selectedRequest = e;\r\n\t}\r\n\r\n\trequestUpdated() {\r\n\t\tthis.hasUnsavedChanges = true;\r\n\t\tthis.changed.emit();\r\n\t}\r\n\r\n\tdeleteRequest(additionalSession: AdditionalSessionDto) {\r\n\t\tif (!additionalSession.requestId) {\r\n\t\t\t// Hasn't been saved\r\n\t\t\tconst index = this.editDto.additionalSessions.indexOf(additionalSession);\r\n\t\t\tthis.editDto.additionalSessions.splice(index, 1);\r\n\r\n\t\t\tif (this.editDto.additionalSessions.length) {\r\n\t\t\t\tthis.selectedRequest = this.editDto.additionalSessions[0];\r\n\t\t\t\tthis.sessionIndex = this.editDto.additionalSessions.length - 1;\r\n\t\t\t} else {\r\n\t\t\t\tthis.selectedRequest = undefined;\r\n\t\t\t\tthis.sessionIndex = - 1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetSessionStatusClass(additionalSession: AdditionalSessionDto) {\r\n\t\treturn this.additionalSessionStatus.getSessionStatusClass(additionalSession);\r\n\t}\r\n\r\n\tgetSessionStatusIcon(additionalSession: AdditionalSessionDto) {\r\n\t\treturn this.additionalSessionStatus.getSessionStatusIcon(additionalSession);\r\n\t}\r\n\r\n\t// IEditComponent methods\r\n\thasChanges(): boolean {\r\n\t\treturn this.hasUnsavedChanges || this.form.dirty;\r\n\t}\r\n\r\n\tmarkClean() {\r\n\t\tthis.hasUnsavedChanges = false;\r\n\t}\r\n\r\n\tisValid(): boolean {\r\n\t\tlet childEdits = this.additionalSessionEdits.toArray();\r\n\t\tlet allValid = _.every(childEdits, i => FormUtils.isFormValid(i.getForm()));\r\n\t\treturn allValid;\r\n\t}\r\n\r\n\tprivate buildForm() {\r\n\t\tthis.form = this.fb.group({\r\n\t\t\tsocialServicesContactedDate: null\r\n\t\t});\r\n\t}\r\n}\r\n","\r\n\t\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n\r\n\t\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{ request.dateOfRequest | date }}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{ getSessionStatusIcon(request) }}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n\r\n\t\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
\r\n","import { Injectable } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { ConfigService, Guid } from 'app/services';\r\n\r\nimport {\r\n\tAdditionalSessionDto,\r\n\tTriState\r\n} from 'app/services';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class ContractTermsService {\r\n\tconstructor(\r\n\t\tprivate config: ConfigService\r\n\t) {}\r\n\r\n\tnewAdditionalSession(): AdditionalSessionDto {\r\n\t\tlet professionals = this.config.professionals;\r\n\t\tlet professionalId = undefined;\r\n\t\tif (professionals.length === 1) {\r\n\t\t\tprofessionalId = professionals[0].id;\r\n\t\t}\r\n\r\n\t\tconst newRequest = {\r\n\t\t\tuniqueId: Guid.newGuid(),\r\n\t\t\trequestId: 0,\r\n\t\t\trequestedByBusinessRoleId: professionalId,\r\n\t\t\tdateOfRequest: moment().startOf('day').toDate(),\r\n\t\t\tprimaryConcernAndReason: '',\r\n\t\t\tissueResolutionAndGoal: '',\r\n\t\t\tnotes: '',\r\n\t\t\trequestedNumberPerClient: 1,\r\n\t\t\tisClientWorking: TriState.Unknown,\r\n\t\t\tisRehabilitationCase: TriState.Unknown,\r\n\t\t\tisNewIssue: TriState.Unknown,\r\n\t\t\tisWorkRelatedIssue: TriState.Unknown,\r\n\t\t\tisClientConsentToOrgDiscussion: TriState.Unknown,\r\n\t\t\tisClientConsentToReleaseName: TriState.Unknown,\r\n\t\t\tisSupported: TriState.Unknown,\r\n\t\t\tisClientUsingOtherExternalProfessional: TriState.Unknown,\r\n\t\t\tisHelpRequiredDevelopingClientSupportPlan: TriState.Unknown,\r\n\t\t\tisHROrManagerRecommended: TriState.Unknown,\r\n\t\t\tisLegalIssue: TriState.Unknown,\r\n\t\t\tsupportedByRole: '',\r\n\t\t\tsupportedByName: '',\r\n\t\t};\r\n\r\n\t\treturn newRequest as AdditionalSessionDto;\r\n\t}\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { ExtendedDetails } from '../extended-details';\r\n\r\n@Component({\r\n\tselector: 'pp-extended-details-edit-other',\r\n\ttemplateUrl: './extended-details-edit-other.component.html',\r\n\tstyleUrls: ['./extended-details-edit-other.component.scss']\r\n})\r\nexport class ExtendedDetailsEditOtherComponent implements OnInit {\r\n\t@Input() extendedDetails: ExtendedDetails = new ExtendedDetails();\r\n\t@Output() changed = new EventEmitter();\r\n\r\n\tprivate today = new Date();\r\n\r\n\tconstructor() {\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t}\r\n\r\n\tchangeColour(colour: string) {\r\n\t\tthis.extendedDetails.redFlagColour = colour;\r\n\t\tthis.changed.emit(this.extendedDetails);\r\n\r\n\t}\r\n\r\n\tpublic changeHasUsedServiceBefore(hasUsedServiceBefore: boolean) {\r\n\t\tthis.extendedDetails.hasUsedServiceBefore = hasUsedServiceBefore;\r\n\t}\r\n\r\n\topenDatePicker(datePicker) {\r\n\t\tdatePicker.open();\r\n\t}\r\n\r\n\tcloseDatePicker(eventDate: Date, datePicker?: any) {\r\n\t\t// get month and year from eventDate and close datepicker, thus not allowing user to select date\r\n\r\n\t\tthis.extendedDetails.usedServiceMonthFormatted = moment(eventDate).format('MMMM YYYY');\r\n\t\tthis.extendedDetails.usedServiceMonth = eventDate;\r\n\t\tthis.changed.emit(this.extendedDetails);\r\n\r\n\t\tdatePicker.close();\r\n\t}\r\n\r\n\tdetailsChanged() {\r\n\t\tthis.changed.emit(this.extendedDetails);\r\n\t}\r\n\r\n}\r\n","
\r\n
\r\n Change Red Flag Appearance\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n {{extendedDetails.createDateTime | date:'medium'}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\t\t \r\n\t \r\n
\r\n \r\n Medications Taken\r\n \r\n \r\n \r\n Disabilities to Consider\r\n \r\n \r\n\r\n
\r\n","import { Component, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { ActivityHeaderExtendedDto, IClientEditDto, IClientEditLoadDto } from 'app/services';\r\nimport { moment } from 'fullcalendar';\r\nimport { ExtendedDetails, ExtendedDetailsHelper, ExtendedDetailsItemsDisplay } from '../extended-details';\r\nimport { ExtendedDetailsEditOtherComponent } from '../extended-details-edit-other/extended-details-edit-other.component';\r\nimport { ExtendedDetailsItemsDisplayComponent } from '../extended-details-items-display/extended-details-items-display.component';\r\n\r\n@Component({\r\n\tselector: 'pp-extended-details-edit',\r\n\ttemplateUrl: './extended-details-edit.component.html',\r\n\tstyleUrls: ['./extended-details-edit.component.scss']\r\n})\r\nexport class ExtendedDetailsEditComponent implements OnInit {\r\n\r\n\textendedDetailsLoaded: boolean;\r\n\t@Input() loadDto: IClientEditLoadDto;\r\n\t@Input() editDto: IClientEditDto; //change\r\n\t@Input() readOnly: boolean;\r\n\r\n\t@ViewChild(ExtendedDetailsEditOtherComponent)\r\n\textendedDetailsEditSecondaryComponent: ExtendedDetailsEditOtherComponent;\r\n\r\n\t@ViewChild(ExtendedDetailsItemsDisplayComponent)\r\n\textendedDetailsItemsDisplayComponent: ExtendedDetailsItemsDisplayComponent;\r\n\r\n\textendedDetails: ExtendedDetails = new ExtendedDetails();\r\n\r\n\tconstructor() {\r\n\t}\r\n\r\n\r\n\tngOnInit() {\r\n\t}\r\n\r\n\tngOnChanges(changes) {\r\n\t\tif (changes.loadDto && this.loadDto) {\r\n\t\t\tthis.populateExtendedDetails(changes.loadDto.currentValue.activityHeaderExtended);\r\n\t\t}\r\n\r\n\t\tif (this.extendedDetailsLoaded && changes.editDto.currentValue) {\r\n\r\n\t\t\t//rename to activityHeaderExtended from activityHeaderExtendedDto to make consistent -- also on update\r\n\t\t\tthis.populateExtendedDetails(changes.editDto.currentValue.activityHeaderExtended);\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tprivate populateExtendedDetails(activityHeaderExtended: ActivityHeaderExtendedDto) {\r\n\t\tthis.extendedDetails.extendedDetailsItems = [];\r\n\t\tthis.addExtendedDetailsItem(\"Red Flag Status\", activityHeaderExtended.isRedFlag, true);\r\n\t\tthis.addExtendedDetailsItem(\"Prefer Private Transport\", activityHeaderExtended.isPreferPrivateTransport);\r\n\t\tthis.addExtendedDetailsItem(\"Prefer Public Transport\", activityHeaderExtended.isPreferPublicTransport);\r\n\t\tthis.addExtendedDetailsItem(\"Has Used Service Before\", activityHeaderExtended.hasUsedServiceBefore);\r\n\t\tthis.addExtendedDetailsItem(\"Review Each Session\", activityHeaderExtended.isReviewForEachSession);\r\n\t\tthis.addExtendedDetailsItem(\"Review Final Session\", activityHeaderExtended.isReviewForFinalSession);\r\n\r\n\t\tthis.extendedDetails.medicationsTaken = activityHeaderExtended.medicationTaken;\r\n\t\tthis.extendedDetails.disabilities = activityHeaderExtended.disabilitiesToConsider;\r\n\t\tthis.extendedDetails.createDateTime = activityHeaderExtended.redFlagStatusDate;\r\n\t\tthis.extendedDetails.usedProfessional = activityHeaderExtended.usedProfessional;\r\n\t\tthis.extendedDetails.usedService = activityHeaderExtended.usedService;\r\n\t\tthis.extendedDetails.usedServiceMonth = activityHeaderExtended.usedServiceMonth;\r\n\t\tthis.extendedDetails.usedServiceMonthFormatted = moment(this.extendedDetails.usedServiceMonth).format('MMMM YYYY');\r\n\r\n\t\tlet index: number = activityHeaderExtended.redFlagAlternativeAppearance;\r\n\t\tindex = (index === null) ? 0 : index;\r\n\t\tthis.extendedDetails.redFlagColour = ExtendedDetailsHelper.redFlagAlternativeAppearenceColours[index];\r\n\t\tthis.extendedDetails.hasUsedServiceBefore = activityHeaderExtended.hasUsedServiceBefore;\r\n\r\n\t\tthis.updateChanges(this.extendedDetails, true, true);\r\n\t}\r\n\r\n\tprivate addExtendedDetailsItem(text: string, state: boolean, displayImage: boolean = false) {\r\n\t\tlet extendedDetailsItemsDisplayDto: ExtendedDetailsItemsDisplay = new ExtendedDetailsItemsDisplay();\r\n\t\textendedDetailsItemsDisplayDto.text = text;\r\n\t\textendedDetailsItemsDisplayDto.value = state;\r\n\t\textendedDetailsItemsDisplayDto.displayImage = displayImage;\r\n\t\tthis.extendedDetails.extendedDetailsItems.push(extendedDetailsItemsDisplayDto);\r\n\r\n\t}\r\n\r\n\tsecondaryDetailsChanged(editDto: ExtendedDetails) {\r\n\t\tthis.extendedDetailsItemsDisplayComponent.updateColour(editDto.redFlagColour);\r\n\t\tthis.updateChanges(editDto, false, true);\r\n\t}\r\n\r\n\titemsChanged(editDto: ExtendedDetails) {\r\n\t\tthis.extendedDetails = editDto;\r\n\t\tif (editDto.extendedDetailsItems[3].value != editDto.hasUsedServiceBefore) //has used service before\r\n\t\t{\r\n\t\t\teditDto.hasUsedServiceBefore = editDto.extendedDetailsItems[3].value;\r\n\t\t\tthis.extendedDetailsEditSecondaryComponent.changeHasUsedServiceBefore(editDto.hasUsedServiceBefore);\r\n\t\t}\r\n\t\tthis.updateChanges(editDto, true, false)\r\n\t}\r\n\r\n\tprivate updateChanges(editDto: ExtendedDetails, updateItems: boolean, updateOther: boolean) {\r\n\t\tif (updateItems) {\r\n\t\t\tthis.editDto.activityHeaderExtended.isRedFlag = editDto.extendedDetailsItems[0].value;\r\n\t\t\tthis.editDto.activityHeaderExtended.isPreferPrivateTransport = editDto.extendedDetailsItems[1].value;\r\n\t\t\tthis.editDto.activityHeaderExtended.isPreferPublicTransport = editDto.extendedDetailsItems[2].value;\r\n\t\t\tthis.editDto.activityHeaderExtended.hasUsedServiceBefore = editDto.extendedDetailsItems[3].value;\r\n\t\t\tthis.editDto.activityHeaderExtended.isReviewForEachSession = editDto.extendedDetailsItems[4].value;\r\n\t\t\tthis.editDto.activityHeaderExtended.isReviewForFinalSession = editDto.extendedDetailsItems[5].value;\r\n\r\n\t\t}\r\n\t\tif (updateOther) {\r\n\t\t\tthis.editDto.activityHeaderExtended.medicationTaken = editDto.medicationsTaken;\r\n\t\t\tthis.editDto.activityHeaderExtended.disabilitiesToConsider = editDto.disabilities;\r\n\t\t\tthis.editDto.activityHeaderExtended.usedProfessional = editDto.usedProfessional;\r\n\t\t\tthis.editDto.activityHeaderExtended.usedService = editDto.usedService;\r\n\r\n\t\t\tif (editDto.usedServiceMonth != null) {\r\n\r\n\t\t\t\tlet offset = editDto.usedServiceMonth.getTimezoneOffset();\r\n\t\t\t\tthis.editDto.activityHeaderExtended.usedServiceMonth = moment(editDto.usedServiceMonth).add(0 - offset, 'minutes').toDate();\r\n\t\t\t}\r\n\r\n\t\t\tlet index = ExtendedDetailsHelper.redFlagAlternativeAppearenceColours.findIndex(c => c === editDto.redFlagColour);\r\n\t\t\tif (index == 0) index = null; //red\r\n\t\t\tthis.editDto.activityHeaderExtended.redFlagAlternativeAppearance = index;\r\n\t\t}\r\n\r\n\t\tthis.extendedDetailsLoaded = true;\r\n\r\n\t}\r\n}\r\n\r\n\r\n","
\r\n\t
\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n\r\n\t
\r\n\t\t\r\n\t\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n
","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { ExtendedDetails } from '../extended-details';\r\n\r\n@Component({\r\n selector: 'pp-extended-details-items-display',\r\n templateUrl: './extended-details-items-display.component.html',\r\n styleUrls: ['./extended-details-items-display.component.scss']\r\n})\r\nexport class ExtendedDetailsItemsDisplayComponent implements OnInit {\r\n\r\n @Output() changed = new EventEmitter();\r\n @Input() extendedDetails: ExtendedDetails = new ExtendedDetails (); \r\n @Input() redFlagColour:string;\r\n\r\n constructor( ) { \r\n }\r\n\r\n public updateColour(colour:string)\r\n {\r\n this.redFlagColour = colour;\r\n }\r\n\r\n private toggleItemState(item)\r\n {\r\n item.value = !item.value;\r\n\r\n this.reverseOppositeIfTrue(item,1,2); //public\r\n this.reverseOppositeIfTrue(item,2,1); //private\r\n\r\n this.changed.emit(this.extendedDetails);\r\n\r\n }\r\n\r\n private reverseOppositeIfTrue(item,index,oppositeIndex)\r\n {\r\n if (item.value && (item === this.extendedDetails.extendedDetailsItems[index])) \r\n {\r\n this.extendedDetails.extendedDetailsItems[oppositeIndex].value = !this.extendedDetails.extendedDetailsItems[index].value;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n\r\n","
\r\n\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t {{ item.text }}\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n
","export class ExtendedDetails {\r\n\r\n redFlagColour:string;\r\n createDateTime:Date;\r\n medicationsTaken:string;\r\n disabilities:string;\r\n\textendedDetailsItems: ExtendedDetailsItemsDisplay[]; \r\n hasUsedServiceBefore:boolean;\r\n usedProfessional:string;\r\n usedService:string;\r\n usedServiceMonth:Date;\r\n usedServiceMonthFormatted:string;\r\n}\r\n\r\nexport class ExtendedDetailsItemsDisplay\r\n{\r\n text: string;\r\n\tvalue: boolean;\r\n displayImage:boolean;\r\n colour:string;\r\n}\r\n\r\nexport class ExtendedDetailsHelper\r\n{\r\n public static redFlagAlternativeAppearenceColours = ['red','blue','green','orange','purple','yellow'];\r\n}\r\n\r\n","import { Component, OnInit, OnChanges, Input, Output, EventEmitter } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport {\r\n\tIClientEditLoadDto,\r\n\tIOrganisationPartEditDto,\r\n\tOrganisationDto,\r\n\tOrganisationGroupDto,\r\n\tOrganisationDivisionDto,\r\n\tFormUtils,\r\n\tUpdaterOptions,\r\n\tOrganisationDepartmentDto\r\n} from 'app/services';\r\n\r\nimport { IForm } from 'app/interfaces';\r\n\r\n@Component({\r\n\tselector: 'pp-organisation-hierarchy-edit',\r\n\ttemplateUrl: './organisation-hierarchy-edit.component.html',\r\n\tstyleUrls: ['./organisation-hierarchy-edit.component.scss']\r\n})\r\nexport class OrganisationHierarchyEditComponent implements OnChanges, IForm {\r\n\tprivate valueChangeSubscriber: Subscription;\r\n\r\n\t@Input() organisation: OrganisationDto;\r\n\t@Input() loadDto: IClientEditLoadDto;\r\n\t@Input() editDto: IOrganisationPartEditDto;\r\n\t@Input() immediateUpdate: boolean;\r\n\t@Input() readOnly: boolean;\r\n\t@Output() changed = new EventEmitter();\r\n\r\n\tform: UntypedFormGroup;\r\n\tgroup: OrganisationGroupDto;\r\n\tdivision: OrganisationDivisionDto;\r\n\r\n\tgroups: OrganisationGroupDto[];\r\n\tdivisions: OrganisationDivisionDto[];\r\n\tdepartments: OrganisationDepartmentDto[];\r\n\r\n\tconstructor(private fb: UntypedFormBuilder) {\r\n\t\tthis.buildForm();\r\n\t}\r\n\r\n\tngOnChanges(changes) {\r\n\t\tif (changes.loadDto && this.loadDto) {\r\n\t\t\tthis.organisation = this.loadDto.organisation;\r\n\t\t}\r\n\r\n\t\tif (this.organisation && this.editDto) {\r\n\r\n\t\t\tthis.form.patchValue(this.editDto);\r\n\r\n\t\t\tthis.groups = this.getGroups(this.editDto.organisationGroupId);\r\n\r\n\t\t\t// Watch for changes to group to update divisions\r\n\t\t\tthis.form.controls.organisationGroupId.valueChanges.subscribe((value: number) => {\r\n\t\t\t\tthis.findGroup(value);\r\n\t\t\t});\r\n\r\n\t\t\t// Watch for changes to division to update departments\r\n\t\t\tthis.form.controls.organisationDivisionId.valueChanges.subscribe((value: number) => {\r\n\t\t\t\tthis.findDivision(value);\r\n\t\t\t});\r\n\r\n\t\t\tthis.findGroup(this.editDto.organisationGroupId);\r\n\r\n\t\t\tif (this.valueChangeSubscriber) {\r\n\t\t\t\tthis.valueChangeSubscriber.unsubscribe();\r\n\t\t\t}\r\n\t\t\tthis.valueChangeSubscriber = this.form.valueChanges.subscribe(v => this.updated(v));\r\n\t\t}\r\n\r\n\t\tif (changes.readOnly) {\r\n\t\t\tif (this.readOnly) {\r\n\t\t\t\tthis.form.disable();\r\n\t\t\t} else {\r\n\t\t\t\tthis.form.enable();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.enableDisable();\r\n\t}\r\n\r\n\tgetGroups(groupId?: number): OrganisationGroupDto[] {\r\n\t\tif (!this.organisation) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t\tconst groups = this.organisation.organisationGroups.filter(g => !g.isInactive || g.id === groupId);\r\n\t\treturn groups;\r\n\t}\r\n\r\n\tgetDivisions(divisionId?: number): OrganisationDivisionDto[] {\r\n\t\tif (!this.group) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t\tconst divisions = this.group.organisationDivisions.filter(d => !d.isInactive || d.id === divisionId);\r\n\t\treturn divisions;\r\n\t}\r\n\r\n\tgetDepartments(departmentId?: number): OrganisationDepartmentDto[] {\r\n\t\tif (!this.division) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t\tconst departments = this.division.organisationDepartments.filter(d => !d.isInactive || d.id === departmentId);\r\n\t\treturn departments;\r\n\t}\r\n\r\n\tupdated(value: IOrganisationPartEditDto) {\r\n\t\tif (!this.immediateUpdate) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.applyChanges(this.editDto);\r\n\t\tthis.changed.emit(this.editDto);\r\n\t}\r\n\r\n\tgetForm(): UntypedFormGroup {\r\n\t\treturn this.form;\r\n\t}\r\n\r\n\tapplyChanges(obj) {\r\n\t\tFormUtils.applyChanges(this.form, obj, UpdaterOptions.NULL_IF_MISSING);\r\n\t}\r\n\r\n\tprivate findGroup(id: number) {\r\n\t\tthis.group = this.organisation && this.organisation.organisationGroups.find(g => g.id === id);\r\n\t\tif (\r\n\t\t\t!this.group ||\r\n\t\t\t!this.group.organisationDivisions.length ||\r\n\t\t\t!this.group.organisationDivisions.find(d => d.id === this.editDto.organisationDivisionId)\r\n\t\t) {\r\n\t\t\tthis.form.patchValue({\r\n\t\t\t\torganisationDivisionId: undefined\r\n\t\t\t});\r\n\t\t\tthis.editDto.organisationDivisionId = undefined;\r\n\t\t}\r\n\t\tthis.divisions = this.getDivisions(this.editDto.organisationDivisionId);\r\n\t\tthis.findDivision(this.editDto.organisationDivisionId);\r\n\t}\r\n\r\n\tprivate findDivision(id: number) {\r\n\t\tthis.division = this.group && this.group.organisationDivisions.find(d => d.id === id);\r\n\t\tif (\r\n\t\t\t!this.division ||\r\n\t\t\t!this.division.organisationDepartments.length ||\r\n\t\t\t!this.division.organisationDepartments.find(d => d.id === this.editDto.organisationDepartmentId)\r\n\t\t) {\r\n\t\t\tthis.form.patchValue({\r\n\t\t\t\torganisationDepartmentId: undefined\r\n\t\t\t});\r\n\t\t\tthis.editDto.organisationDepartmentId = undefined;\r\n\t\t}\r\n\t\tthis.departments = this.getDepartments(this.editDto.organisationDepartmentId);\r\n\t\tthis.enableDisable();\r\n\t}\r\n\r\n\tprivate enableDisable() {\r\n\t\tif (this.readOnly) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Get the controls for the hierarchy.\r\n\t\tconst groupControl = this.form.controls.organisationGroupId,\r\n\t\t\tdivisionControl = this.form.controls.organisationDivisionId,\r\n\t\t\tdepartmentControl = this.form.controls.organisationDepartmentId;\r\n\r\n\t\t// Disable any controls that don't have any selectable entries.\r\n\t\tthis.organisation &&\r\n\t\tthis.organisation.organisationGroups &&\r\n\t\tthis.organisation.organisationGroups.length &&\r\n\t\tthis.organisation.organisationGroups.filter(g => !g.isInactive).length\r\n\t\t\t? groupControl.enable({ onlySelf: true, emitEvent: false })\r\n\t\t\t: groupControl.disable({ onlySelf: true, emitEvent: false });\r\n\r\n\t\tthis.group &&\r\n\t\tthis.group.organisationDivisions &&\r\n\t\tthis.group.organisationDivisions.length &&\r\n\t\tthis.group.organisationDivisions.filter(d => !d.isInactive).length\r\n\t\t\t? divisionControl.enable({ onlySelf: true, emitEvent: false })\r\n\t\t\t: divisionControl.disable({ onlySelf: true, emitEvent: false });\r\n\r\n\t\tthis.division &&\r\n\t\tthis.division.organisationDepartments &&\r\n\t\tthis.division.organisationDepartments.length &&\r\n\t\tthis.division.organisationDepartments.filter(d => !d.isInactive).length\r\n\t\t\t? departmentControl.enable({ onlySelf: true, emitEvent: false })\r\n\t\t\t: departmentControl.disable({ onlySelf: true, emitEvent: false });\r\n\t}\r\n\r\n\tprivate buildForm() {\r\n\t\tthis.form = this.fb.group({\r\n\t\t\torganisationGroupId: ['', Validators.required],\r\n\t\t\torganisationDivisionId: ['', Validators.required],\r\n\t\t\torganisationDepartmentId: ['', Validators.required]\r\n\t\t});\r\n\t}\r\n}\r\n","
\r\n\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { FormBuilder, FormGroup, FormControl } from '@angular/forms';\r\nimport { ActivityHeaderEditDto, dateToAmbiguousMoment, addDateTimezoneOffset } from 'app/services';\r\n\r\n/**\r\n * Form to hold client date of birth\r\n */\r\n\r\n@Component({\r\n\tselector: 'pp-personal-details-edit',\r\n\ttemplateUrl: './personal-details-edit.component.html',\r\n\tstyleUrls: ['./personal-details-edit.component.scss']\r\n})\r\nexport class PersonalDetailsEditComponent implements OnInit {\r\n\t\r\n\t@Input() editDto: ActivityHeaderEditDto;\r\n\t@Input() readOnly: boolean;\r\n\t\r\n\tform: FormGroup;\r\n\tdateOfBirth: Date;\r\n\t\r\n\tconstructor(private fb: FormBuilder) {\r\n\t}\r\n\t\r\n\tngOnInit() {\r\n\t\tthis.buildForm();\r\n\t\tif (this.editDto) {\r\n\t\t\tthis.form.patchValue({\r\n\t\t\t\tdateOfBirth: this.editDto.clientDoB\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Emit a selectionChanged when one of the values changes.\r\n\t\tthis.form.valueChanges.subscribe(() => {\r\n\t\t\tlet values = this.form.getRawValue();\r\n\t\t\t\r\n\t\t\tif (!values.dateOfBirth) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tlet dob = dateToAmbiguousMoment(values.dateOfBirth);\r\n\t\t\tthis.updateDob(dob);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate updateDob(dob: any)\r\n\t{\r\n\t\tif (!this.readOnly){\r\n\t\t\tthis.editDto.clientDoB = addDateTimezoneOffset(dob.toDate());\r\n\t\t\tthis.editDto.clientDoBChanged = true;\r\n\t\t}\r\n\t}\r\n\r\n\tbuildForm() {\r\n\t\tthis.form = this.fb.group({\r\n\t\t\tdateOfBirth: new FormControl({value : this.dateOfBirth, disabled: this.readOnly})\r\n\t\t});\r\n\t}\r\n\r\n}\r\n","
\r\n\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n
\r\n","import { Injectable, EventEmitter } from '@angular/core';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class SelectedCaseService {\r\n\tactivityHeaderId: number;\r\n\tselectedCaseChanged$ = new EventEmitter();\r\n\r\n\tonSelectedCaseChanged(newId: number) {\r\n\t\tthis.activityHeaderId = newId;\r\n\t\tthis.selectedCaseChanged$.emit();\r\n\t}\r\n}\r\n","import { StatisticHeaderEditDto } from './../../services/server-data';\r\nimport { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\r\nimport { StatisticContainerDto } from 'app/services';\r\n\r\n@Component({\r\n\tselector: 'pp-statistic-container',\r\n\ttemplateUrl: './statistic-container.component.html',\r\n\tstyleUrls: ['./statistic-container.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class StatisticContainerComponent {\r\n\t@Input() container: StatisticContainerDto;\r\n\t@Input() header: StatisticHeaderEditDto;\r\n\t@Input() isCurrent: boolean;\r\n\t@Output() changed = new EventEmitter();\r\n\r\n\tvalueUpdated(container: StatisticContainerDto) {\r\n\t\tthis.changed.emit(container);\r\n\t}\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import { Input, Directive } from '@angular/core';\r\nimport {\r\n\tStatisticClientEditDto\r\n} from 'app/services';\r\n\r\n@Directive()\r\nexport abstract class ClientEditBaseComponent {\r\n\t@Input() client: StatisticClientEditDto;\r\n}","import { Component, OnInit, OnChanges, ViewChild, AfterViewInit, ChangeDetectorRef } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\r\n\r\nimport {\r\n\tOrganisationDto,\r\n} from 'app/services';\r\nimport { ClientEditBaseComponent } from '../client-edit-base.component';\r\n\r\nimport { IForm, IEditComponent } from 'app/interfaces';\r\nimport { CasesService } from 'app/cases/cases.service';\r\nimport { TextComponent } from 'app/shared/forms/text.component';\r\n\r\n@Component({\r\n\tselector: 'pp-client-edit-details',\r\n\ttemplateUrl: './client-edit-details.component.html',\r\n\tstyleUrls: ['./client-edit-details.component.scss']\r\n})\r\nexport class ClientEditDetailsComponent extends ClientEditBaseComponent \r\n\timplements OnInit, OnChanges, AfterViewInit, IForm, IEditComponent {\r\n\tprivate changed: boolean;\r\n\tform: UntypedFormGroup;\r\n\torganisation: OrganisationDto;\r\n\r\n\t@ViewChild('anonRef', { static: true }) anonRef: TextComponent;\r\n\r\n\tconstructor(\r\n\t\tprivate fb: UntypedFormBuilder,\r\n\t\tprivate service: CasesService,\r\n\t\tprivate cdRef: ChangeDetectorRef,\r\n\t) {\r\n\t\tsuper();\r\n\t\tthis.buildForm();\r\n\t}\r\n\r\n\tgetForm() {\r\n\t\treturn this.form;\r\n\t}\r\n\r\n\thasChanges() {\r\n\t\treturn this.changed;\r\n\t}\r\n\r\n\tmarkClean() {\r\n\t\tthis.changed = false;\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.organisation = this.service.currentLoadDto.organisation;\r\n\t}\r\n\r\n\tngOnChanges(changes) {\r\n\t\tif (this.client) {\r\n\t\t\tthis.form.patchValue({\r\n\t\t\t\tanonymousReference: this.client.anonymousReference\r\n\t\t\t});\r\n\r\n\t\t\tthis.form.controls.anonymousReference.valueChanges.subscribe(v => {\r\n\t\t\t\tthis.client.anonymousReference = v;\r\n\t\t\t});\r\n\r\n\t\t\tthis.anonRef.setFocus();\r\n\t\t}\r\n\t}\r\n\r\n\tngAfterViewInit() {\r\n\t\tthis.anonRef.setFocus();\r\n\t\tthis.cdRef.detectChanges();\r\n\t}\r\n\r\n\torganisationChanged(e) {\r\n\t\tthis.changed = true;\r\n\t}\r\n\r\n\tprivate buildForm() {\r\n\t\tthis.form = this.fb.group({\r\n\t\t\tanonymousReference: ['', Validators.required]\r\n\t\t});\r\n\t}\r\n}\r\n","
\r\n\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n
","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport * as _ from 'lodash';\r\n\r\nimport {\r\n\tStatisticClientSessionDto,\r\n\tAgGridService,\r\n} from 'app/services';\r\nimport { IEditComponent } from 'app/interfaces';\r\n\r\nimport { ClientEditBaseComponent } from '../client-edit-base.component';\r\nimport { CasesService } from 'app/cases/cases.service';\r\nimport { SelectionGridComponent } from 'app/shared/selection-grid/selection-grid.component';\r\nimport { ClientSessionEditComponent } from './client-session-edit/client-session-edit.component';\r\n\r\n@Component({\r\n\tselector: 'pp-client-edit-sessions',\r\n\ttemplateUrl: './client-edit-sessions.component.html',\r\n\tstyleUrls: ['./client-edit-sessions.component.scss']\r\n})\r\nexport class ClientEditSessionsComponent extends ClientEditBaseComponent implements OnInit, IEditComponent {\r\n\tprivate changes: boolean;\r\n\tsession: StatisticClientSessionDto;\r\n\tcolumnDefs: any[];\r\n\tisAdding: boolean;\r\n\r\n\t@ViewChild('grid', { static: true }) grid: SelectionGridComponent;\r\n\t@ViewChild('editor') editor: ClientSessionEditComponent;\r\n\r\n\tconstructor(\r\n\t\tprivate agGrid: AgGridService,\r\n\t\tprivate service: CasesService,\r\n\t) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\thasChanges() {\r\n\t\treturn this.changes;\r\n\t}\r\n\r\n\tmarkClean() {\r\n\t\tthis.changes = false;\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.setUpAgGrid();\r\n\t}\r\n\r\n\tadd(event) {\r\n\t\tthis.changes = true;\r\n\t\tthis.isAdding = true;\r\n\t\tthis.session = {\r\n\t\t\tsessionDateTime: moment().startOf('day').toDate(),\r\n\t\t\tsessionDurationHours: 1,\r\n\t\t\tsessionDurationMinutes: 0\r\n\t\t};\r\n\r\n\t\tthis.client.statisticClientSessions.push(this.session);\r\n\t\tthis.grid.refresh();\r\n\t}\r\n\r\n\tedit(session: StatisticClientSessionDto) {\r\n\t\tthis.isAdding = false;\r\n\t\tthis.session = session;\r\n\t}\r\n\r\n\tdelete(session: StatisticClientSessionDto) {\r\n\t\t_.pull(this.client.statisticClientSessions, session);\r\n\t\tthis.changes = true;\r\n\t\tthis.session = undefined;\r\n\t\tthis.grid.refresh();\r\n\t}\r\n\r\n\tselectSession(session: StatisticClientSessionDto) {\r\n\t\tthis.session = session;\r\n\t}\r\n\r\n\tsessionUpdated(session: StatisticClientSessionDto) {\r\n\t\tthis.changes = true;\r\n\t\tthis.grid.refresh();\r\n\t}\r\n\r\n\tprivate setUpAgGrid() {\r\n\t\tthis.columnDefs = [\r\n\t\t\tthis.agGrid.makeDateColumn('Session date', 'sessionDateTime')\r\n\t\t];\r\n\t}\r\n}\r\n","
\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n
","import { Component, OnInit, OnChanges, ViewChild, Input, Output, EventEmitter } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\r\n\r\nimport {\r\n\tStatisticClientSessionDto,\r\n\tFormUtils,\r\n} from 'app/services';\r\nimport { DateComponent } from 'app/shared/forms/date-component';\r\n\r\n@Component({\r\n\tselector: 'pp-client-session-edit',\r\n\ttemplateUrl: './client-session-edit.component.html',\r\n\tstyleUrls: ['./client-session-edit.component.scss']\r\n})\r\nexport class ClientSessionEditComponent implements OnInit, OnChanges {\r\n\tform: UntypedFormGroup;\r\n\r\n\t@ViewChild('date', { static: true }) date: DateComponent;\r\n\t@Input() session: StatisticClientSessionDto;\r\n\t@Input() addMode: boolean;\r\n\t@Output() updated = new EventEmitter();\r\n\r\n\tconstructor(\r\n\t\tprivate fb: UntypedFormBuilder,\r\n\t) {\r\n\t\tthis.buildForm();\r\n\t}\r\n\r\n\tget header() {\r\n\t\treturn this.addMode\r\n\t\t\t? 'Add client session'\r\n\t\t\t: 'Edit client session';\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.form.valueChanges.subscribe(this.formValueChanged.bind(this));\r\n\t}\r\n\r\n\tngOnChanges() {\r\n\t\tthis.form.patchValue({\r\n\t\t\tsessionDateTime: this.session.sessionDateTime,\r\n\t\t\tsessionDurationHours: this.session.sessionDurationHours,\r\n\t\t\tsessionDurationMinutes: this.session.sessionDurationMinutes\r\n\t\t});\r\n\r\n\t\tif (this.addMode) {\r\n\t\t\tthis.date.setFocus();\r\n\t\t}\r\n\t}\r\n\r\n\tminutesBlurred(e) {\r\n\t\tconst formVal = ( this.form.value);\r\n\t\tlet minutes = +formVal.sessionDurationMinutes;\r\n\t\tlet hours = +formVal.sessionDurationHours;\r\n\r\n\t\tif (!minutes) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (minutes > 60) {\r\n\t\t\thours += minutes / 60;\r\n\t\t\tminutes = minutes % 60;\r\n\r\n\t\t\tthis.form.patchValue({\r\n\t\t\t\tsessionDurationHours: hours,\r\n\t\t\t\tsessionDurationMinutes: minutes\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate formValueChanged(v: StatisticClientSessionDto) {\r\n\t\tif (!this.form.valid) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tFormUtils.applyChanges(this.form, this.session);\r\n\t\tthis.updated.emit(this.session);\r\n\t}\r\n\r\n\tprivate buildForm() {\r\n\t\tthis.form = this.fb.group({\r\n\t\t\tsessionDateTime: [undefined, Validators.required],\r\n\t\t\tsessionDurationHours: [undefined, Validators.required],\r\n\t\t\tsessionDurationMinutes: [undefined, Validators.required],\r\n\t\t});\r\n\t}\r\n}\r\n","
\r\n\t
{{ header }}
\r\n\r\n\t
\r\n\t\t\r\n\t
\r\n\t\r\n\t
\r\n\t\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t\t\t\r\n\t
\r\n
","import { Component, Output, EventEmitter } from '@angular/core';\r\nimport {\r\n\tStatisticContainerDto,\r\n\tStatisticHeaderEditDto,\r\n} from 'app/services';\r\nimport { IEditComponent } from 'app/interfaces';\r\n\r\nimport { ClientEditBaseComponent } from '../client-edit-base.component';\r\n\r\n@Component({\r\n\tselector: 'pp-client-edit-statistics',\r\n\ttemplateUrl: './client-edit-statistics.component.html',\r\n\tstyleUrls: ['./client-edit-statistics.component.scss']\r\n})\r\nexport class ClientEditStatisticsComponent extends ClientEditBaseComponent implements IEditComponent {\r\n\tprivate changes: boolean;\r\n\r\n\t@Output() changed = new EventEmitter();\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tmarkClean() {\r\n\t\tthis.changes = false;\r\n\t}\r\n\r\n\tstatisticsChanged(e) {\r\n\t\tthis.changes = true;\r\n\t\tthis.changed.emit(true);\r\n\t}\r\n\r\n\thasChanges() {\r\n\t\treturn this.changes;\r\n\t}\r\n}\r\n","
\r\n\t\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t \r\n\t\t\t
\t\r\n\t\t
\r\n\t
\r\n
\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport * as _ from 'lodash';\r\n\r\nimport { BaseEditComponent } from 'app/shared/base-edit/base-edit.component';\r\nimport { ClientEditDetailsComponent } from './client-edit-details/client-edit-details.component';\r\nimport { ClientEditStatisticsComponent } from './client-edit-statistics/client-edit-statistics.component';\r\nimport { ClientEditSessionsComponent } from './client-edit-sessions/client-edit-sessions.component';\r\n\r\nimport {\r\n\tCommonService,\r\n\tStatisticClientEditDto,\r\n\ttoUnspecified,\r\n} from 'app/services';\r\nimport { ICheckSaveChanges } from 'app/interfaces';\r\nimport { CasesService } from 'app/cases/cases.service';\r\n\r\n@Component({\r\n\tselector: 'pp-client-edit',\r\n\ttemplateUrl: './client-edit.component.html',\r\n\tstyleUrls: ['./client-edit.component.scss'],\r\n})\r\nexport class ClientEditComponent\r\n\textends BaseEditComponent\r\n\timplements OnInit, ICheckSaveChanges {\r\n\tprivate activityHeaderId: number;\r\n\r\n\t@ViewChild('details') details: ClientEditDetailsComponent;\r\n\t@ViewChild('statistics') statistics: ClientEditStatisticsComponent;\r\n\t@ViewChild('sessions') sessions: ClientEditSessionsComponent;\r\n\r\n\tconstructor(\r\n\t\tcommon: CommonService,\r\n\t\tprivate router: Router,\r\n\t\tprivate route: ActivatedRoute,\r\n\t\tprivate service: CasesService,\r\n\t) {\r\n\t\tsuper(common);\r\n\r\n\t\tthis.objectName = 'client';\r\n\t\tthis.activityHeaderId = +route.parent.snapshot.paramMap.get('id');\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tlet id = this.route.snapshot.paramMap.get('id');\r\n\t\tthis.fetch(() => this.service.getStatisticClient(this.activityHeaderId, +id));\r\n\t}\r\n\r\n\tgetComponents() {\r\n\t\treturn [\r\n\t\t\tthis,\t// Needed to get the object to save against.\r\n\t\t\tthis.details,\r\n\t\t\tthis.statistics,\r\n\t\t\tthis.sessions\r\n\t\t];\r\n\t}\r\n\r\n\tsaveChanges() {\r\n\t\tconst cloned = _.cloneDeep(this.editDto);\r\n\t\tcloned.statisticClientSessions.forEach(s => {\r\n\t\t\ts.sessionDateTime = toUnspecified(s.sessionDateTime);\r\n\t\t});\r\n\t\treturn this.service.statisticClientSave(this.activityHeaderId, cloned);\r\n\t}\r\n\r\n\tcomplete(result: boolean) {\r\n\t\tthis.completeWithBack(result, undefined, this);\r\n\t}\r\n}\r\n","
\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\t\r\n\t\t
\r\n\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\t\r\n\t\t
\r\n\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\t\r\n\t\t
\r\n\t
\r\n
","import { Component, OnInit, Input, ViewChild, ChangeDetectionStrategy, ViewContainerRef } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { TdDialogService } from '@covalent/core/dialogs';\r\n\r\n\r\nimport { StatisticClientListDto, AgGridService } from 'app/services';\r\nimport { SelectionGridComponent } from 'app/shared/selection-grid/selection-grid.component';\r\n\r\nimport { CasesService } from 'app/cases/cases.service';\r\n\r\n@Component({\r\n\tselector: 'pp-clients',\r\n\ttemplateUrl: './clients.component.html',\r\n\tstyleUrls: ['./clients.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ClientsComponent implements OnInit {\r\n\tcolumnDefs: any[];\r\n\teditClient: StatisticClientListDto;\r\n\tactivityHeaderId: number;\r\n\r\n\t@Input() clients: StatisticClientListDto[];\r\n\t@ViewChild('grid', { static: true }) grid: SelectionGridComponent;\r\n\r\n\tconstructor(\r\n\t\tprivate router: Router,\r\n\t\tprivate route: ActivatedRoute,\r\n\t\tprivate agGrid: AgGridService,\r\n\t\tprivate service: CasesService,\r\n\t\tprivate dialog: TdDialogService,\r\n\t) {\r\n\t\tthis.activityHeaderId = +route.snapshot.paramMap.get('id');\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.setUpAgGrid();\r\n\t}\r\n\r\n\tadd(e) {\r\n\t\tthis.router.navigate(['client'], { relativeTo: this.route });\r\n\t}\r\n\r\n\tedit(client: StatisticClientListDto) {\r\n\t\tthis.router.navigate(['client', { id: client.id }], { relativeTo: this.route });\r\n\t}\r\n\r\n\tdelete(client: StatisticClientListDto) {\r\n\t\tthis.service.getStatisticClient(this.activityHeaderId, client.id).subscribe(editDto => {\r\n\t\t\tif (editDto.statisticClientSessions.length) {\r\n\t\t\t\tthis.dialog.openAlert({\r\n\t\t\t\t\tmessage: 'This client can\\'t be removed until all sessions are removed. Please remove the sessions first.',\r\n\t\t\t\t\ttitle: 'Remove client',\r\n\t\t\t\t})\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.service.statisticClientDelete(this.activityHeaderId, editDto);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate setUpAgGrid() {\r\n\t\tthis.columnDefs = [\r\n\t\t\t{ headerName: 'Unique ID', field: 'id', width: 80, maxWidth: 80 },\r\n\t\t\t{ headerName: 'Client reference', field: 'anonymousReference', width: 200, maxWidth: 250 },\r\n\t\t\t{ headerName: 'Unique ID', field: 'id', width: 80, maxWidth: 80 },\r\n\t\t\t{ headerName: 'Client reference', field: 'anonymousReference', width: 200, maxWidth: 250 },\r\n\t\t\t{ headerName: 'Professional', field: 'professionalName', width: 175, maxWidth: 250 },\r\n\t\t];\r\n\r\n\t\tthis.grid.subscribe(this.service.statisticClientsChanged$);\r\n\t}\r\n}\r\n","
\r\n\t\r\n\t\r\n
","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\r\nimport {\r\n\tStatisticHeaderEditDto,\r\n} from 'app/services';\r\n\r\nimport { IEditComponent } from 'app/interfaces';\r\n\r\n@Component({\r\n\tselector: 'pp-header-edit-statistics',\r\n\ttemplateUrl: './header-edit-statistics.component.html',\r\n\tstyleUrls: ['./header-edit-statistics.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class HeaderEditStatisticsComponent implements IEditComponent {\r\n\tprivate changes: boolean;\r\n\r\n\t@Input() header: StatisticHeaderEditDto;\r\n\r\n\thasChanges() {\r\n\t\treturn this.changes;\r\n\t}\r\n\r\n\tmarkClean() {\r\n\t\tthis.changes = false;\r\n\t}\r\n\r\n\tstatisticsChanged() {\r\n\t\tthis.changes = true;\r\n\t}\r\n}\r\n","
\r\n\t\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\r\n\t
\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport {\r\n\tStatisticHeaderEditDto,\r\n\tOrganisationDto,\r\n} from 'app/services';\r\n\r\nimport { CasesService } from 'app/cases/cases.service';\r\nimport { IEditComponent } from 'app/interfaces';\r\n\r\n@Component({\r\n\tselector: 'pp-header-edit-summary',\r\n\ttemplateUrl: './header-edit-summary.component.html',\r\n\tstyleUrls: ['./header-edit-summary.component.scss']\r\n})\r\nexport class HeaderEditSummaryComponent implements OnInit, IEditComponent {\r\n\tprivate changes: boolean;\r\n\torganisation: OrganisationDto;\r\n\r\n\t@Input() header: StatisticHeaderEditDto;\r\n\r\n\tconstructor(\r\n\t\tprivate service: CasesService,\r\n\t) { }\r\n\r\n\thasChanges() {\r\n\t\treturn this.changes;\r\n\t}\r\n\r\n\tmarkClean() {\r\n\t\tthis.changes = false;\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.organisation = this.service.currentLoadDto.organisation;\r\n\t}\r\n\r\n\torganisationChanged(e) {\r\n\t\tthis.changes = true;\r\n\t}\r\n}\r\n","
\r\n\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t{{ header?.startDateTime | date }}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t{{ header?.endDateTime | date }}\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n\r\n\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n
\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\n\r\nimport { BaseEditComponent } from 'app/shared/base-edit/base-edit.component';\r\nimport {\r\n\tCommonService,\r\n\tStatisticHeaderEditDto\r\n} from 'app/services';\r\nimport { ICheckSaveChanges } from 'app/interfaces';\r\nimport { CasesService } from 'app/cases/cases.service';\r\n\r\nimport { HeaderEditSummaryComponent } from './header-edit-summary/header-edit-summary.component';\r\nimport { HeaderEditStatisticsComponent } from './header-edit-statistics/header-edit-statistics.component';\r\n\r\n@Component({\r\n\tselector: 'pp-header-edit',\r\n\ttemplateUrl: './header-edit.component.html',\r\n\tstyleUrls: ['./header-edit.component.scss'],\r\n})\r\nexport class HeaderEditComponent\r\n\textends BaseEditComponent\r\n\timplements OnInit, ICheckSaveChanges {\r\n\tprivate activityHeaderId: number;\r\n\r\n\t@ViewChild('summary') summary: HeaderEditSummaryComponent;\r\n\t@ViewChild('statistics') statistics: HeaderEditStatisticsComponent;\r\n\r\n\tconstructor(\r\n\t\tcommon: CommonService,\r\n\t\tprivate router: Router,\r\n\t\tprivate route: ActivatedRoute,\r\n\t\tprivate service: CasesService,\r\n\t) {\r\n\t\tsuper(common);\r\n\r\n\t\tthis.objectName = 'header';\r\n\t\tthis.activityHeaderId = +route.parent.snapshot.paramMap.get('id');\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tlet id = this.route.snapshot.paramMap.get('id');\r\n\t\tthis.fetch(() => this.service.getStatisticHeader(this.activityHeaderId, +id));\r\n\t}\r\n\r\n\tgetComponents() {\r\n\t\treturn [\r\n\t\t\tthis,\t// Needed to get the object to save against.\r\n\t\t\tthis.summary,\r\n\t\t\tthis.statistics\r\n\t\t];\r\n\t}\r\n\r\n\tsaveChanges() {\r\n\t\treturn this.service.statisticHeaderSave(this.activityHeaderId, this.editDto);\r\n\t}\r\n\r\n\tcomplete(result: boolean) {\r\n\t\tthis.completeWithBack(result, undefined, this);\r\n\t\t// this.completeWithBack(result,\r\n\t\t// \t() => this.service.statisticHeaderSave(this.activityHeaderId, this.editDto));\r\n\t}\r\n}\r\n","
\r\n\t \r\n\r\n\t\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t \r\n\t\t\t
\r\n\t\t
\r\n\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t \r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
\r\n","import { Component, OnInit, Input, ViewChild, ChangeDetectionStrategy } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\n\r\nimport {\r\n\tStatisticHeaderListDto,\r\n\tAgGridService,\r\n} from 'app/services';\r\nimport { SelectionGridComponent } from 'app/shared/selection-grid/selection-grid.component';\r\n\r\nimport { CasesService } from 'app/cases/cases.service';\r\n\r\n@Component({\r\n\tselector: 'pp-headers',\r\n\ttemplateUrl: './headers.component.html',\r\n\tstyleUrls: ['./headers.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class HeadersComponent implements OnInit {\r\n\tcolumnDefs: any[];\r\n\r\n\t@Input() headers: StatisticHeaderListDto[];\r\n\t@ViewChild('grid', { static: true }) grid: SelectionGridComponent;\r\n\r\n\tconstructor(\r\n\t\tprivate router: Router,\r\n\t\tprivate route: ActivatedRoute,\r\n\t\tprivate agGrid: AgGridService,\r\n\t\tprivate service: CasesService,\r\n\t) { }\r\n\r\n\tngOnInit() {\r\n\t\tthis.setUpAgGrid();\r\n\t}\r\n\r\n\tedit(e: StatisticHeaderListDto) {\r\n\t\tthis.router.navigate(['header', {id: e.id }], { relativeTo: this.route });\r\n\t}\r\n\r\n\tprivate setUpAgGrid() {\r\n\t\tthis.columnDefs = [\r\n\t\t\tthis.agGrid.makeDateColumn('Period start', 'startDateTime'),\r\n\t\t\tthis.agGrid.makeDateColumn('Period end', 'endDateTime'),\r\n\t\t\t{ headerName: 'Professional', field: 'professionalName', width: 175, maxWidth: 250 },\r\n\t\t];\r\n\r\n\t\tthis.grid.subscribe(this.service.statisticHeadersChanged$);\r\n\t}\r\n}\r\n","
\r\n\t\r\n\t\r\n
","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\r\n\r\nimport { StatisticHeaderListDto, StatisticClientListDto } from 'app/services';\r\n\r\nimport { CasesService } from 'app/cases/cases.service';\r\nimport { IEditComponent } from 'app/interfaces';\r\n\r\n@Component({\r\n\tselector: 'pp-statistic-headers',\r\n\ttemplateUrl: './statistic-headers.component.html',\r\n\tstyleUrls: ['./statistic-headers.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class StatisticHeadersComponent implements IEditComponent {\r\n\t@Input() headers: StatisticHeaderListDto[];\r\n\t@Input() clients: StatisticClientListDto[];\r\n\t@Input() hasHeaders: boolean;\r\n\t@Input() hasClients: boolean;\r\n\r\n\tconstructor(private service: CasesService) {}\r\n\r\n\thasChanges(): boolean {\r\n\t\treturn false;\r\n\t}\r\n}\r\n","\r\n\t\r\n\t\t
\r\n\t\t\t \r\n\t\t
\r\n\t
\r\n\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n
\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport {\r\n\tStatisticContainerDto,\r\n\tStatisticalTypeDto,\r\n\tStatisticDto,\r\n} from 'app/services';\r\n\r\nclass StatisticWithType {\r\n\tstatistic: StatisticDto;\r\n\ttype: StatisticalTypeDto;\r\n}\r\n\r\n@Component({\r\n\tselector: 'pp-container-controls',\r\n\ttemplateUrl: './container-controls.component.html',\r\n\tstyleUrls: ['./container-controls.component.scss']\r\n})\r\nexport class ContainerControlsComponent implements OnInit {\r\n\tstatistics: StatisticWithType[];\r\n\r\n\t@Input() container: StatisticContainerDto;\r\n\t@Output() changed = new EventEmitter();\r\n\r\n\tngOnInit() {\r\n\t\tthis.buildStatistics();\r\n\t}\r\n\r\n\tvalueUpdated(statistic: StatisticDto) {\r\n\t\tthis.changed.emit(this.container);\r\n\t}\r\n\r\n\tprivate buildStatistics() {\r\n\t\tconst group = this.container.statisticalGroup;\r\n\t\tthis.statistics = this.container.statistics.map(\r\n\t\t\ts => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tstatistic: s,\r\n\t\t\t\t\ttype: group.statisticalTypes.find(t => t.id === s.statisticalTypeId)\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n}\r\n","
\r\n\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t*\r\n\t\t\t\t{{ statistic.type.description }}\r\n\t\t\t\r\n\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
\r\n","import { Component, OnInit, EventEmitter, Input, Output } from '@angular/core';\r\nimport { StatisticContainerDto, StatisticDto, StatisticalTypeDto, StatisticalChoiceDto } from 'app/services';\r\nimport { MatCheckboxChange } from '@angular/material/checkbox';\r\n\r\n@Component({\r\n\tselector: 'pp-container-individual-grid',\r\n\ttemplateUrl: './container-individual-grid.component.html',\r\n\tstyleUrls: ['./container-individual-grid.component.scss']\r\n})\r\nexport class ContainerIndividualGridComponent implements OnInit {\r\n\ttypes: StatisticalTypeDto[];\r\n\r\n\t@Input() container: StatisticContainerDto;\r\n\t@Output() changed = new EventEmitter();\r\n\r\n\tngOnInit() {\r\n\t\tthis.types = this.container.statisticalGroup.statisticalTypes;\r\n\t}\r\n\r\n\tisChecked(choice: StatisticalChoiceDto): boolean {\r\n\t\tlet stats = this.container.statistics;\r\n\t\tlet statistic = stats.find(s => s.statisticalChoiceId === choice.id);\r\n\t\treturn !!statistic;\r\n\t}\r\n\r\n\tupdate(type: StatisticalTypeDto, choice: StatisticalChoiceDto, e: MatCheckboxChange) {\r\n\t\tlet stats = this.container.statistics;\r\n\t\tlet statistic = stats.find(s => s.statisticalChoiceId === choice.id);\r\n\t\tlet toEmit = null;\r\n\t\tif (e.checked) {\r\n\t\t\tif (statistic) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// If not multi-choice, remove other options first.\r\n\t\t\tif (!this.container.statisticalGroup.isMultiChoice) {\r\n\t\t\t\tconst existingForType = stats.find(s => s.statisticalTypeId === type.id);\r\n\t\t\t\tif (existingForType) {\r\n\t\t\t\t\tconst index = stats.indexOf(existingForType);\r\n\t\t\t\t\tstats.splice(index, 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet emptyStatistic = stats.find(s => s.isEmpty);\r\n\t\t\tif (emptyStatistic) {\r\n\t\t\t\tlet index = stats.findIndex(s => s === emptyStatistic);\r\n\t\t\t\tstats.splice(index, 1);\r\n\t\t\t}\r\n\r\n\t\t\tstatistic = {\r\n\t\t\t\tstatisticalChoiceId: choice.id,\r\n\t\t\t\tstatisticalTypeId: choice.statisticalTypeId\r\n\t\t\t};\r\n\t\t\tstats.push(statistic);\r\n\t\t\ttoEmit = statistic;\r\n\t\t} else {\r\n\t\t\tif (!statistic) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet index = stats.findIndex(s => s.statisticalChoiceId === choice.id);\r\n\t\t\tstats.splice(index, 1);\r\n\t\t\ttoEmit = null;\r\n\t\t}\r\n\r\n\t\tthis.changed.emit(toEmit);\r\n\t}\r\n}\r\n","
\r\n\t
\r\n\t\t
\r\n\t\t\t*\r\n\t\t\t{{ type.description }}\r\n\t\t
\r\n\t\t
\r\n\t\t\t{{\r\n\t\t\t\tchoice.description\r\n\t\t\t}}\r\n\t\t
\r\n\t
\r\n
\r\n","import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { StatisticalTypeDto, StatisticalChoiceDto } from './../../../../services/server-data';\r\nimport { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';\r\nimport { StatisticDto } from '../../../../services';\r\nimport { tap } from 'rxjs/operators';\r\n\r\ninterface IFormValue {\r\n\tint: number;\r\n\tintExtra1: number;\r\n}\r\n\r\n@Component({\r\n\tselector: 'pp-container-pick-and-add-two-num-item',\r\n\ttemplateUrl: './container-pick-and-add-two-num-item.component.html',\r\n\tstyleUrls: ['./container-pick-and-add-two-num-item.component.scss'],\r\n})\r\nexport class ContainerPickAndAddTwoNumItemComponent implements OnInit {\r\n\t@Input() statistic: StatisticDto;\r\n\t@Input() type: StatisticalTypeDto;\r\n\t@Output() changed = new EventEmitter();\r\n\t@Output() deleted = new EventEmitter();\r\n\r\n\tform: UntypedFormGroup;\r\n\r\n\tchoice: StatisticalChoiceDto;\r\n\r\n\tconstructor(private fb: UntypedFormBuilder) {\r\n\t\tthis.buildForm();\r\n\t}\r\n\r\n\tvalueUpdated() {\r\n\t\tthis.changed.emit(this.statistic);\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.choice = this.type.statisticalChoices.find((c) => c.id === this.statistic.statisticalChoiceId);\r\n\r\n\t\tthis.form.patchValue({\r\n\t\t\tint: this.statistic.int,\r\n\t\t\tintExtra1: this.statistic.intExtra1,\r\n\t\t});\r\n\r\n\t\tthis.form.valueChanges\r\n\t\t\t.pipe(\r\n\t\t\t\ttap((val: IFormValue) => {\r\n\t\t\t\t\tthis.statistic.int = Number(val.int).valueOf();\r\n\t\t\t\t\tthis.statistic.intExtra1 = Number(val.intExtra1).valueOf();\r\n\r\n\t\t\t\t\tthis.valueUpdated();\r\n\t\t\t\t})\r\n\t\t\t)\r\n\t\t\t.subscribe();\r\n\t}\r\n\r\n\tdeleteChoice() {\r\n\t\tthis.deleted.emit(this.statistic);\r\n\t}\r\n\r\n\tprivate buildForm() {\r\n\t\tthis.form = this.fb.group({\r\n\t\t\tint: ['', Validators.required],\r\n\t\t\tintExtra1: ['', Validators.required],\r\n\t\t});\r\n\t}\r\n}\r\n","
\r\n\t\r\n\t\t{{ choice.description }}\r\n\t\r\n\r\n\t\r\n\t\r\n\r\n\t\r\n\t\r\n\r\n\t\r\n\r\n","import {\r\n\tStatisticalTypeDto,\r\n\tStatisticalChoiceDto,\r\n\tStatisticDto,\r\n\tStatisticHeaderEditDto,\r\n} from './../../../services/server-data';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';\r\nimport { StatisticContainerDto } from '../../../services';\r\nimport { map } from 'rxjs/operators';\r\nimport * as _ from 'lodash';\r\n\r\nlet newId = -1;\r\n\r\n@Component({\r\n\tselector: 'pp-container-pick-and-add-two-num',\r\n\ttemplateUrl: './container-pick-and-add-two-num.component.html',\r\n\tstyleUrls: ['./container-pick-and-add-two-num.component.scss'],\r\n})\r\nexport class ContainerPickAndAddTwoNumComponent implements OnInit {\r\n\tprivate allChoices: StatisticalChoiceDto[];\r\n\r\n\t@Input() container: StatisticContainerDto;\r\n\t@Input() header: StatisticHeaderEditDto;\r\n\r\n\t@Output() changed = new EventEmitter();\r\n\r\n\tstatistics$ = new BehaviorSubject(null);\r\n\ttype: StatisticalTypeDto;\r\n\r\n\tavailableChoices$: Observable;\r\n\r\n\tvalueUpdated() {\r\n\t\tthis.changed.emit(true);\r\n\t}\r\n\r\n\tstatisticChanged(stat: StatisticDto) {\r\n\t\tthis.valueUpdated();\r\n\t}\r\n\r\n\tstatisticDeleted(stat: StatisticDto) {\r\n\t\tconst index = this.container.statistics.indexOf(stat);\r\n\t\tthis.container.statistics.splice(index, 1);\r\n\t\tthis.statistics$.next(this.container.statistics);\r\n\r\n\t\tthis.valueUpdated();\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.type = this.container.statisticalGroup.statisticalTypes[0];\r\n\t\tthis.statistics$.next(this.container.statistics);\r\n\r\n\t\tthis.allChoices = this.type.statisticalChoices;\r\n\r\n\t\tthis.availableChoices$ = this.statistics$.pipe(\r\n\t\t\tmap((stats) => {\r\n\t\t\t\treturn stats.map((s) => s.statisticalChoiceId);\r\n\t\t\t}),\r\n\t\t\tmap((choiceIDs) => {\r\n\t\t\t\treturn this.allChoices.filter((c) => !c.isEditBox && !choiceIDs.includes(c.id));\r\n\t\t\t}),\r\n\t\t\tmap((choices) => {\r\n\t\t\t\treturn _.sortBy(choices, (c) => c.description);\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\taddChoice(choiceId) {\r\n\t\tconst newStat = {\r\n\t\t\t//\t\t\tid: newId--,\r\n\t\t\tstatisticalChoiceId: choiceId,\r\n\t\t\tstatisticHeaderId: this.header.id,\r\n\t\t\tstatisticalTypeId: this.type.id,\r\n\t\t\tint: 0,\r\n\t\t\tintExtra1: 0,\r\n\t\t} as StatisticDto;\r\n\t\tthis.container.statistics.push(newStat);\r\n\t\tthis.statistics$.next(this.container.statistics);\r\n\t}\r\n}\r\n","
\r\n\t
\r\n\t\t\r\n\t
\r\n
\r\n\r\n
\r\n\t\r\n\t\r\n
\r\n","import { Component, OnInit, OnChanges, Input, Output, EventEmitter, ViewChild, ElementRef } from '@angular/core';\r\nimport { UntypedFormControl } from '@angular/forms';\r\nimport {\r\n\tMatAutocompleteSelectedEvent,\r\n\tMatAutocomplete\r\n} from '@angular/material/autocomplete';\r\nimport * as _ from 'lodash';\r\nimport {\r\n\tStatisticContainerDto,\r\n\tStatisticalTypeDto,\r\n\tStatisticalChoiceDto,\r\n\tStatisticDto,\r\n} from 'app/services';\r\n\r\n@Component({\r\n\tselector: 'pp-chips-picker',\r\n\ttemplateUrl: './chips-picker.component.html',\r\n\tstyleUrls: ['./chips-picker.component.scss']\r\n})\r\nexport class ChipsPickerComponent implements OnInit, OnChanges {\r\n\tstatistics: StatisticDto[];\r\n\tfilteredChoices: StatisticalChoiceDto[];\r\n\tfilteredOptions: StatisticalChoiceDto[];\r\n\r\n\t@Input() container: StatisticContainerDto;\r\n\t@Input() type: StatisticalTypeDto;\r\n\t@Input() canAdd: boolean;\r\n\t@Output() changed = new EventEmitter();\r\n\r\n\t@ViewChild('chipInput', { static: true }) inputEl: ElementRef;\r\n\t@ViewChild('auto', { static: true }) autoComplete: MatAutocomplete;\r\n\r\n\tremovable: boolean = true;\r\n\r\n\tautoCompleteChipList: UntypedFormControl;\r\n\r\n\tngOnInit() {\r\n\t\tthis.autoCompleteChipList = new UntypedFormControl();\r\n\t\tthis.autoCompleteChipList.valueChanges.subscribe(val => {\r\n\t\t\tthis.filterOptions(val);\r\n\t\t});\r\n\r\n\t\tthis.statistics = this.container.statistics\r\n\t\t\t.filter(s => s.statisticalTypeId === this.type.id && !s.isEmpty);\r\n\t\tthis.updateFilteredChoices();\r\n\t}\r\n\r\n\tngOnChanges(changes) {\r\n\t\tif (changes.canAdd) {\r\n\t\t\tif (!this.canAdd) {\r\n\t\t\t\tthis.updateFilteredChoices();\r\n\t\t\t}\r\n\r\n\t\t\tif (this.autoCompleteChipList) {\r\n\t\t\t\tif (this.canAdd) {\r\n\t\t\t\t\tthis.autoCompleteChipList.enable();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.autoCompleteChipList.disable();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfocused() {\r\n\t\tthis.autoComplete.showPanel = true;\r\n\t}\r\n\r\n\tgetChoice(statistic: StatisticDto): StatisticalChoiceDto {\r\n\t\tconst result = this.type.statisticalChoices.find(c => c.id === statistic.statisticalChoiceId);\r\n\t\treturn result;\r\n\t}\r\n\r\n\titemAdd(type: StatisticalTypeDto, event: MatAutocompleteSelectedEvent, input: any) {\r\n\t\tif (!this.canAdd) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet choice: StatisticalChoiceDto = event.option.value;\r\n\r\n\t\tconst statistic = {\r\n\t\t\tstatisticalChoiceId: choice.id,\r\n\t\t\tstatisticalTypeId: choice.statisticalTypeId,\r\n\t\t};\r\n\r\n\t\tthis.statistics.push(statistic);\r\n\t\tconst containerStats = this.container.statistics;\r\n\t\tcontainerStats.push(statistic);\r\n\r\n\t\tthis.changed.emit(statistic);\r\n\r\n\t\tif (input) {\r\n\t\t\tinput.value = '';\r\n\t\t}\r\n\r\n\t\tthis.afterAddRemove();\r\n\t}\r\n\r\n\titemRemove(type: StatisticalTypeDto, statistic: StatisticDto) {\r\n\t\tconst containerStats = this.container.statistics;\r\n\t\tlet index = containerStats.indexOf(statistic);\r\n\t\tcontainerStats.splice(index, 1);\r\n\r\n\t\tindex = this.statistics.indexOf(statistic);\r\n\t\tthis.statistics.splice(index, 1);\r\n\r\n\t\tthis.changed.emit(statistic);\r\n\t\tthis.afterAddRemove();\r\n\t}\r\n\r\n\tprivate afterAddRemove() {\r\n\t\tthis.updateFilteredChoices();\r\n\t\tthis.inputEl.nativeElement.focus();\r\n\t}\r\n\r\n\tprivate updateFilteredChoices() {\r\n\t\tif (!this.statistics) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst choiceIDs = this.statistics.map(s => s.statisticalChoiceId);\r\n\t\tconst choices = this.type.statisticalChoices;\r\n\t\tlet filtered = choices;\r\n\r\n\t\t// Exclude choices already selected.\r\n\t\tthis.filteredChoices = filtered.filter(c => choiceIDs.indexOf(c.id) === -1);\r\n\t\tthis.filterOptions('');\r\n\t}\r\n\r\n\tprivate filterOptions(text) {\r\n\t\tlet searchText = (text || '').toString().toLowerCase();\r\n\t\tthis.filteredOptions = this.filteredChoices\r\n\t\t\t.filter(obj => obj.description.toLowerCase().indexOf(searchText) !== -1);\r\n\t}\r\n}\r\n","
\r\n\t
{{ type.description }} selection
\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{{ getChoice(chip)?.description }}\r\n\t\t\t\tcancel\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{{ option.description }}\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n
","import { Component, OnInit, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\r\nimport * as _ from 'lodash';\r\nimport {\r\n\tStatisticContainerDto,\r\n\tStatisticalTypeDto,\r\n\tStatisticDto,\r\n} from 'app/services';\r\n\r\n@Component({\r\n\tselector: 'pp-container-pick-list-grid',\r\n\ttemplateUrl: './container-pick-list-grid.component.html',\r\n\tstyleUrls: ['./container-pick-list-grid.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ContainerPickListGridComponent implements OnInit {\r\n\thasChoiceLimit: boolean;\r\n\tcanAdd: boolean;\r\n\tchoiceLimitWarningText: string;\r\n\ttypes: StatisticalTypeDto[];\r\n\r\n\t@Input() container: StatisticContainerDto;\r\n\t@Output() changed = new EventEmitter();\r\n\r\n\tngOnInit() {\r\n\t\tthis.types = this.container.statisticalGroup.statisticalTypes;\r\n\t\tthis.hasChoiceLimit = !!(this.container.statisticalGroup.isMultiChoice && this.container.statisticalGroup.choiceLimit);\r\n\t\tif (this.hasChoiceLimit) {\r\n\t\t\tthis.choiceLimitWarningText = 'You can select up to a maximum total of ' +\r\n\t\t\t\t`${this.container.statisticalGroup.choiceLimit} across ${this.types[0].description}`;\r\n\r\n\t\t\tfor (let i = 1; i < this.types.length; i++) {\r\n\t\t\t\tthis.choiceLimitWarningText += ` and ${this.types[i].description}`;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.checkLimit();\r\n\t}\r\n\r\n\tpickerChanged(statistic: StatisticDto) {\r\n\t\tthis.checkLimit();\r\n\t\tthis.changed.emit(statistic);\r\n\t}\r\n\r\n\tprivate checkLimit() {\r\n\t\tif (!this.hasChoiceLimit) {\r\n\t\t\tthis.canAdd = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst statisticCount = this.container.statistics.filter(s => !s.isEmpty).length;\r\n\t\tthis.canAdd = statisticCount < this.container.statisticalGroup.choiceLimit;\r\n\t}\r\n}\r\n","
\r\n\t
\r\n\t\tinfo_outline\r\n\t\t{{ this.choiceLimitWarningText }}\r\n\t
\r\n\r\n\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n
","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { startWith, map } from 'rxjs/operators';\r\nimport * as _ from 'lodash';\r\nimport {\r\n\tMatDialogRef,\r\n\tMAT_DIALOG_DATA\r\n} from '@angular/material/dialog';\r\n\r\nimport {\r\n\tStatisticalChoiceDto,\r\n\tModalService,\r\n} from 'app/services';\r\n\r\n@Component({\r\n\tselector: 'pp-add-choice-modal',\r\n\ttemplateUrl: './add-choice-modal.component.html',\r\n\tstyleUrls: ['./add-choice-modal.component.scss']\r\n})\r\nexport class AddChoiceModalComponent implements OnInit {\r\n\tform: UntypedFormGroup;\r\n\tchoices: StatisticalChoiceDto[];\r\n\tfilteredChoices: Observable;\r\n\r\n\tconstructor(\r\n\t\tpublic dialogRef: MatDialogRef,\r\n\t\t@Inject(MAT_DIALOG_DATA) public data: { choices: StatisticalChoiceDto[], choice: StatisticalChoiceDto },\r\n\t\tprivate fb: UntypedFormBuilder,\r\n\t\tprivate modal: ModalService,\r\n\t) { }\r\n\r\n\tngOnInit() {\r\n\t\tthis.buildForm();\r\n\t\tthis.choices = _.sortBy(this.data.choices, c => c.description);\r\n\t\tthis.filteredChoices = this.form.controls.choice.valueChanges.pipe(\r\n\t\t\tstartWith(undefined),\r\n\t\t\tmap(v => v ? this.filter(v) : this.choices.slice())\r\n\t\t);\r\n\t\tthis.modal.isOpen = true;\r\n\t\tthis.dialogRef.afterClosed().subscribe(() => this.modal.isOpen = false);\r\n\t}\r\n\r\n\tfilter(val: string): StatisticalChoiceDto[] {\r\n\t\tconst regex = new RegExp(`${val}`, 'gi');\r\n\t\tconst result = this.choices.filter(c => regex.test(c.description));\r\n\t\treturn result;\r\n\t}\r\n\r\n\tcloseIfValid() {\r\n\t\tif (!this.form.valid) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.submit();\r\n\t\tthis.dialogRef.close('ok');\r\n\t}\r\n\r\n\tsubmit() {\r\n\t\tconst form = this.form;\r\n\t\tthis.data.choice = form.value.choice;\r\n\t}\r\n\r\n\tdisplayFn(choice: StatisticalChoiceDto): string {\r\n\t\treturn choice ? choice.description : '';\r\n\t}\r\n\r\n\tprivate buildForm() {\r\n\t\tthis.form = this.fb.group({\r\n\t\t\tchoice: ['', Validators.required]\r\n\t\t});\r\n\t}\r\n}\r\n","
\r\n\t
\r\n\t\t

Add issue

\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t
\r\n\r\n\t
\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{{ choice.description }}\r\n\t\t\t\r\n\t\t\t\t\r\n\t
\r\n
","import {\r\n\tComponent,\r\n\tOnChanges,\r\n\tInput,\r\n\tOutput,\r\n\tEventEmitter,\r\n\tChangeDetectionStrategy,\r\n\tChangeDetectorRef,\r\n\tViewChild,\r\n\tViewChildren,\r\n\tQueryList,\r\n\tElementRef,\r\n} from '@angular/core';\r\nimport * as _ from 'lodash';\r\nimport {\r\n\tMatDialog\r\n} from '@angular/material/dialog';\r\n\r\nimport {\r\n\tStatisticalTypeDto,\r\n\tStatisticalChoiceDto,\r\n\tStatisticContainerDto,\r\n\tStatisticDto,\r\n} from 'app/services';\r\n\r\nimport { AddChoiceModalComponent } from '../add-choice-modal/add-choice-modal.component';\r\nimport { EditorTwoNumComponent } from 'app/common-editing/statistics-editors/editor-two-num/editor-two-num.component';\r\n\r\n@Component({\r\n\tselector: 'pp-container-two-num-plus-minus-edit',\r\n\ttemplateUrl: './container-two-num-plus-minus-edit.component.html',\r\n\tstyleUrls: ['./container-two-num-plus-minus-edit.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ContainerTwoNumPlusMinusEditComponent implements OnChanges {\r\n\tstatsForType: StatisticDto[];\r\n\tchoices: StatisticalChoiceDto[];\r\n\r\n\t@Input() type: StatisticalTypeDto;\r\n\t@Input() statistics: StatisticDto[];\r\n\t@Input() container: StatisticContainerDto;\r\n\t@Output() changed = new EventEmitter();\r\n\r\n\t@ViewChild('modalArea', { static: true }) modalAreaEl: ElementRef;\r\n\t@ViewChildren(EditorTwoNumComponent) editors: QueryList;\r\n\r\n\tconstructor(\r\n\t\tprivate cdRef: ChangeDetectorRef,\r\n\t\tprivate dialog: MatDialog,\r\n\t) { }\r\n\r\n\tngOnChanges() {\r\n\t\tif (this.type && this.statistics) {\r\n\t\t\tthis.statsForType = this.statistics.filter(s => s.statisticalTypeId === this.type.id);\r\n\t\t\tconst choiceIDs = this.statsForType.map(s => s.statisticalChoiceId);\r\n\t\t\tthis.choices = this.type.statisticalChoices.filter(c => choiceIDs.indexOf(c.id) > -1);\r\n\t\t}\r\n\t}\r\n\r\n\tgetStatistic(choice: StatisticalChoiceDto): StatisticDto {\r\n\t\tconst statistic = this.statsForType.find(s => s.statisticalChoiceId === choice.id);\r\n\t\treturn statistic;\r\n\t}\r\n\r\n\tpositive(choice: StatisticalChoiceDto): number {\r\n\t\tconst stat = this.statsForType.find(s => s.statisticalChoiceId === choice.id);\r\n\t\treturn stat ? stat.int : 0;\r\n\t}\r\n\r\n\tnegative(choice: StatisticalChoiceDto): number {\r\n\t\tconst stat = this.statsForType.find(s => s.statisticalChoiceId === choice.id);\r\n\t\treturn stat ? stat.intExtra1 : 0;\r\n\t}\r\n\r\n\tvalueChanged() {\r\n\t\tthis.changed.emit(true);\r\n\t}\r\n\r\n\taddEntry(type: StatisticalTypeDto) {\r\n\t\tconst data = {\r\n\t\t\tchoices: _.differenceBy(this.type.statisticalChoices, this.choices),\r\n\t\t\tchoice: undefined\r\n\t\t};\r\n\r\n\t\tconst rect = this.modalAreaEl.nativeElement.getBoundingClientRect();\r\n\t\tlet dialogRef = this.dialog.open(AddChoiceModalComponent, {\r\n\t\t\twidth: rect.width + 'px',\r\n\t\t\tposition: {\r\n\t\t\t\tleft: rect.left + 'px',\r\n\t\t\t\ttop: rect.top + 'px',\r\n\t\t\t},\r\n\t\t\tdata\r\n\t\t});\r\n\t\tdialogRef.afterClosed().subscribe((result) => {\r\n\t\t\tif (result === 'ok') {\r\n\t\t\t\tconst choice = data.choice;\r\n\t\t\t\tconst stat = {\r\n\t\t\t\t\tstatisticalChoiceId: choice.id,\r\n\t\t\t\t\tstatisticalTypeId: type.id,\r\n\t\t\t\t\tint: 0,\r\n\t\t\t\t\tintExtra1: 0\r\n\t\t\t\t};\r\n\t\t\t\tthis.statistics.push(stat);\r\n\t\t\t\tthis.statsForType.push(stat);\r\n\t\t\t\tthis.choices.push(choice);\r\n\r\n\t\t\t\tthis.cdRef.detectChanges();\r\n\r\n\t\t\t\tconst newEditor = this.editors.last;\r\n\t\t\t\tnewEditor.setFocus();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n","
\r\n\t
\r\n\t\t{{ type?.description }}\r\n\t\t+ve impact\r\n\t\t-ve impact\r\n\t\t\r\n\t
\r\n\r\n\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n\r\n\t
\r\n\t\t\t\t\r\n\t
\r\n
\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport {\r\n\tStatisticContainerDto\r\n} from 'app/services';\r\n\r\n@Component({\r\n\tselector: 'pp-container-two-num',\r\n\ttemplateUrl: './container-two-num.component.html',\r\n\tstyleUrls: ['./container-two-num.component.scss']\r\n})\r\nexport class ContainerTwoNumComponent {\r\n\t@Input() container: StatisticContainerDto;\r\n\t@Output() changed = new EventEmitter();\r\n\r\n\tvalueUpdated() {\r\n\t\tthis.changed.emit(true);\r\n\t}\r\n}\r\n","
\r\n\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n
","import { Component, OnInit, Input } from '@angular/core';\r\nimport { OptionValueDto } from 'app/services';\r\n\r\n@Component({\r\n\tselector: 'pp-boolean-goal-display',\r\n\ttemplateUrl: './boolean-goal-display.component.html',\r\n\tstyleUrls: ['./boolean-goal-display.component.scss']\r\n})\r\nexport class BooleanGoalDisplayComponent implements OnInit {\r\n\t@Input() goal: OptionValueDto;\r\n\r\n\tvalue: boolean;\r\n\r\n\tngOnInit() {\r\n\t\tthis.value = this.goal.value === 'True';\r\n\t}\r\n}\r\n","
\r\n\t
{{ goal.option }}
\r\n\t
\r\n\t\t
\r\n\t\t
\r\n\t
\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { ClinicalProfileDto, OptionValueDto } from 'app/services/server-data';\r\n\r\n@Component({\r\n\tselector: 'pp-clinical-profile-display',\r\n\ttemplateUrl: './clinical-profile-display.component.html',\r\n\tstyleUrls: ['./clinical-profile-display.component.scss']\r\n})\r\nexport class ClinicalProfileDisplayComponent implements OnInit {\r\n\t@Input() clinicalProfile: ClinicalProfileDto;\r\n\r\n\tconcerns: OptionValueDto[];\r\n\tbooleanGoals: OptionValueDto[];\r\n\totherGoals: OptionValueDto[];\r\n\r\n\thasOtherGoals: boolean;\r\n\r\n\tngOnInit() {\r\n\t\tthis.concerns = this.clinicalProfile.concerns || [];\r\n\t\tthis.booleanGoals = ((\r\n\t\t\t(this.clinicalProfile.goals || []).filter((g: any) => g.value === 'True' || g.value === 'False')\r\n\t\t)).sort((g1, g2) => {\r\n\t\t\tlet g1Val = g1.value === 'True',\r\n\t\t\t\tg2Val = g2.value === 'True';\r\n\r\n\t\t\treturn g1Val === g2Val ? 0 : !!g2Val && !g1Val ? 1 : -1;\r\n\t\t});\r\n\r\n\t\tthis.otherGoals = (\r\n\t\t\t(this.clinicalProfile.goals || []).filter((g: any) => g.value !== 'True' && g.value !== 'False')\r\n\t\t);\r\n\r\n\t\tthis.hasOtherGoals = !!this.otherGoals.length;\r\n\t}\r\n}\r\n","
\r\n\t
\r\n\t\t

Clinical Profile

\r\n\t
\r\n\r\n\t
\r\n\t\t
\r\n\t\t\t

Concerns

\r\n\t\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t{{ concern.value }}\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n\r\n\t
\r\n\t\t
\r\n\t\t\t

Goals

\r\n\t\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n\r\n\t
\r\n\t\t
\r\n\t\t\t

Other Goals

\r\n\t\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'pp-completion-percent',\r\n\ttemplateUrl: './completion-percent.component.html',\r\n\tstyleUrls: ['./completion-percent.component.scss']\r\n})\r\nexport class CompletionPercentComponent implements OnInit {\r\n\t@Input() count: number;\r\n\t@Input() total: number;\r\n\tpercent: number | string;\r\n\tisPercent: boolean;\r\n\r\n\tngOnInit() {\r\n\t\tif (this.total) {\r\n\t\t\tthis.percent = ((this.count * 100) / this.total).toFixed();\r\n\t\t\tthis.isPercent = true;\r\n\t\t} else {\r\n\t\t\tthis.percent = '-';\r\n\t\t}\r\n\t}\r\n}\r\n","
\r\n\t
{{ percent }}
\r\n\t
%
\r\n\t
({{ count }} / {{ total }})
\r\n
\r\n","import { EapServicesClientSurveyDto } from 'app/services';\r\nimport { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'pp-eap-services-client-questionnaire-display',\r\n\ttemplateUrl: './eap-services-client-questionnaire-display.component.html',\r\n\tstyleUrls: ['./eap-services-client-questionnaire-display.component.scss']\r\n})\r\nexport class EapServicesClientQuestionnaireDisplayComponent {\r\n\t@Input() questionnaire: EapServicesClientSurveyDto;\r\n}\r\n","
\r\n\t
\r\n\t\t
{{ questionnaire.surveyName }}
\r\n\r\n\t\t
\r\n\t\t\t\r\n\r\n\t\t\t
{{ questionnaire.status }}
\r\n\t\t
\r\n\t
\r\n\r\n\t
\r\n\t\t\r\n\r\n\t\t\r\n\t
\r\n
\r\n\r\n
\r\n\t

There is no client questionnaire available.

\r\n
\r\n\r\n
\r\n\t

An error occurred retrieving the client questionnaire ({{ questionnaire.error }}). Please try again later.

\r\n
\r\n","import { EapServicesClientSurveyDto } from './../../../services/server-data';\r\nimport { BaseService } from 'app/services/base-service';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { SelectedCaseService } from './../../selected-case.service';\r\nimport { Injectable } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { CommonService } from 'app/services';\r\nimport { finalize, tap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class EapServicesClientQuestionnaireService extends BaseService {\r\n\tprivate static FORCE_REFRESH_AFTER_SECONDS = 1;\r\n\tprivate lastRefreshed: Date;\r\n\tprivate isFinal: boolean;\r\n\r\n\trefreshing$ = new BehaviorSubject(false);\r\n\tquestionnaire$ = new BehaviorSubject(null);\r\n\r\n\tconstructor(common: CommonService, private selectedCaseService: SelectedCaseService) {\r\n\t\tsuper(common);\r\n\r\n\t\t// Subscribe to the selected case changing - reset our last refreshed time.\r\n\t\tthis.selectedCaseService.selectedCaseChanged$.subscribe(() => {\r\n\t\t\tthis.reset();\r\n\t\t});\r\n\t}\r\n\r\n\treset() {\r\n\t\tthis.lastRefreshed = null;\r\n\t\tthis.isFinal = false;\r\n\t\tthis.questionnaire$.next(null);\r\n\t}\r\n\r\n\tonActivated() {\r\n\t\t// If already loaded and marked as final, do nothing.\r\n\t\tif (this.isFinal) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet sinceLastRefreshed;\r\n\t\tif (this.lastRefreshed) {\r\n\t\t\tsinceLastRefreshed = moment().diff(this.lastRefreshed, 'seconds');\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\t!sinceLastRefreshed ||\r\n\t\t\tsinceLastRefreshed > EapServicesClientQuestionnaireService.FORCE_REFRESH_AFTER_SECONDS\r\n\t\t) {\r\n\t\t\tthis.refresh();\r\n\t\t\tthis.lastRefreshed = moment().toDate();\r\n\t\t}\r\n\t}\r\n\r\n\tforceRefresh() {\r\n\t\tthis.refresh();\r\n\t}\r\n\r\n\tprivate refresh() {\r\n\t\tif (this.refreshing$.value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.refreshing$.next(true);\r\n\r\n\t\tconst activityHeaderId = this.selectedCaseService.activityHeaderId;\r\n\t\tthis.crud\r\n\t\t\t.loadWithGet(`api/activityHeaders/statistics/custom/${activityHeaderId}`)\r\n\t\t\t.pipe(\r\n\t\t\t\ttap((questionnaire: EapServicesClientSurveyDto) => {\r\n\t\t\t\t\tthis.isFinal = questionnaire && questionnaire.isFinal;\r\n\t\t\t\t\tthis.questionnaire$.next(questionnaire);\r\n\t\t\t\t}),\r\n\t\t\t\tfinalize(() => this.refreshing$.next(false))\r\n\t\t\t)\r\n\t\t\t.subscribe();\r\n\t}\r\n}\r\n","import { BehaviorSubject } from 'rxjs';\r\nimport { Component, OnChanges, SimpleChanges, Input } from '@angular/core';\r\nimport { EapServicesClientQuestionnaireService } from '../eap-services-client-questionnaire.service';\r\nimport { EapServicesClientSurveyDto } from 'app/services';\r\n\r\n@Component({\r\n\tselector: 'pp-eap-services-client-questionnaire',\r\n\ttemplateUrl: './eap-services-client-questionnaire.component.html',\r\n\tstyleUrls: ['./eap-services-client-questionnaire.component.scss']\r\n})\r\nexport class EapServicesClientQuestionnaireComponent implements OnChanges {\r\n\t@Input() active: boolean;\r\n\tloading$: BehaviorSubject;\r\n\tquestionnaire$: BehaviorSubject;\r\n\r\n\tconstructor(private service: EapServicesClientQuestionnaireService) {\r\n\t\tthis.loading$ = service.refreshing$;\r\n\t\tthis.questionnaire$ = service.questionnaire$;\r\n\t}\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\t// Every time we're activated, let the service know to potentially refresh the survey.\r\n\t\tif (changes.active && this.active) {\r\n\t\t\tthis.service.onActivated();\r\n\t\t}\r\n\t}\r\n}\r\n","
\r\n\t\r\n\t\t\r\n\t\t\r\n\t\r\n
\r\n","import { Component, Input } from '@angular/core';\r\nimport { OptionValueDto } from 'app/services/server-data';\r\n\r\n@Component({\r\n\tselector: 'pp-other-goal-display',\r\n\ttemplateUrl: './other-goal-display.component.html',\r\n\tstyleUrls: ['./other-goal-display.component.scss']\r\n})\r\nexport class OtherGoalDisplayComponent {\r\n\t@Input() goal: OptionValueDto;\r\n}\r\n","
\r\n\t
\r\n\t\t{{ goal.value }}\r\n\t
\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { RiskProfileDto, RiskOptionValueDto } from 'app/services';\r\nimport * as _ from 'lodash';\r\n\r\n@Component({\r\n\tselector: 'pp-risk-profile-display',\r\n\ttemplateUrl: './risk-profile-display.component.html',\r\n\tstyleUrls: ['./risk-profile-display.component.scss'],\r\n})\r\nexport class RiskProfileDisplayComponent implements OnInit {\r\n\t@Input() riskProfile: RiskProfileDto;\r\n\r\n\thealthFactors: RiskOptionValueDto[];\r\n\tmentalFactors: RiskOptionValueDto[];\r\n\tworkStatusFactors: RiskOptionValueDto[];\r\n\tlifeStatusFactors: RiskOptionValueDto[];\r\n\totherFactors: RiskOptionValueDto[];\r\n\r\n\tngOnInit() {\r\n\t\tconst riskFactors = this.riskProfile.riskFactors;\r\n\r\n\t\tconst sort = (factors: RiskOptionValueDto[]) => {\r\n\t\t\treturn factors.sort((f1, f2) => {\r\n\t\t\t\tif (f1.isAtRisk > f2.isAtRisk) {\r\n\t\t\t\t\treturn -1;\r\n\t\t\t\t} else if (f1.isAtRisk < f2.isAtRisk) {\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t} else if (f1.option < f2.option) {\r\n\t\t\t\t\treturn -1;\r\n\t\t\t\t} else if (f1.option > f2.option) {\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn 0;\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tthis.healthFactors = sort(riskFactors.filter((f) => /health/gi.test(f.option)));\r\n\t\tthis.mentalFactors = sort(riskFactors.filter((f) => /mental/gi.test(f.option)));\r\n\t\tthis.workStatusFactors = sort(riskFactors.filter((f) => /^work/gi.test(f.option) && !/life/gi.test(f.option)));\r\n\t\tthis.lifeStatusFactors = sort(riskFactors.filter((f) => /life/gi.test(f.option) || /quit/gi.test(f.option)));\r\n\r\n\t\tthis.otherFactors = sort(\r\n\t\t\triskFactors.filter(\r\n\t\t\t\t(f) =>\r\n\t\t\t\t\t!_.includes(this.healthFactors, f) &&\r\n\t\t\t\t\t!_.includes(this.mentalFactors, f) &&\r\n\t\t\t\t\t!_.includes(this.workStatusFactors, f) &&\r\n\t\t\t\t\t!_.includes(this.lifeStatusFactors, f)\r\n\t\t\t)\r\n\t\t);\r\n\t}\r\n}\r\n","
\r\n\t
\r\n\t\t
\r\n\t\t\t

Risk Profile

\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\tOverall score\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t{{ riskProfile.total }}\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n\r\n\t
\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n
\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { RiskOptionValueDto } from 'app/services';\r\nimport * as _ from 'lodash';\r\n\r\n@Component({\r\n\tselector: 'pp-risk-profile-factor',\r\n\ttemplateUrl: './risk-profile-factor.component.html',\r\n\tstyleUrls: ['./risk-profile-factor.component.scss'],\r\n})\r\nexport class RiskProfileFactorComponent implements OnInit {\r\n\t@Input() type: string;\r\n\t@Input() factors: RiskOptionValueDto[];\r\n\r\n\tatRisk: boolean;\r\n\r\n\tngOnInit() {\r\n\t\tthis.atRisk = _.some(this.factors, (f) => f.isAtRisk);\r\n\t}\r\n}\r\n","
\r\n\t
\r\n\t\t

{{ type }}

\r\n\t
\r\n\t
\r\n\t\t
\r\n\t\t\t
{{ factor.option }}
\r\n\t\t\t
\r\n\t\t\t\t{{ factor.isAtRisk ? 'At risk' : 'Not at risk' }}\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { StatisticEditorBase } from '../statistic-editor-base';\r\n\r\n@Component({\r\n\tselector: 'pp-editor-hours-minutes',\r\n\ttemplateUrl: './editor-hours-minutes.component.html',\r\n\tstyleUrls: ['./editor-hours-minutes.component.scss']\r\n})\r\nexport class EditorHoursMinutesComponent extends StatisticEditorBase implements OnInit {\r\n\tprivate _value: string;\r\n\r\n\ttextMask: any;\r\n\r\n\tget value() {\r\n\t\treturn this._value;\r\n\t}\r\n\r\n\tset value(value) {\r\n\t\tthis._value = value;\r\n\r\n\t\tlet h = null,\r\n\t\t\tm = null;\r\n\r\n\t\tlet parts = value.split(':');\r\n\t\tif (parts.length) {\r\n\t\t\tlet hours = parts[0];\r\n\t\t\th = parseInt(hours, 10);\r\n\t\t\tif (parts.length > 1) {\r\n\t\t\t\tm = parseInt(parts[1], 10);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\th = isNaN(h) ? null : h;\r\n\t\tm = isNaN(m) ? null : m;\r\n\r\n\t\tif (this.statistic.hours !== h || this.statistic.minutes !== m) {\r\n\t\t\tthis.statistic.hours = h;\r\n\t\t\tthis.statistic.minutes = m;\r\n\r\n\t\t\tthis.emitChange();\r\n\t\t}\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tconst maxHoursDigits = 4;\r\n\t\tthis.textMask = {\r\n\t\t\tmask: rawValue => {\r\n\t\t\t\tlet parts = rawValue.split(':');\r\n\t\t\t\tlet intLen = 1;\r\n\t\t\t\tif (parts.length) {\r\n\t\t\t\t\tlet hours = parts[0];\r\n\t\t\t\t\tif (hours.length) {\r\n\t\t\t\t\t\tintLen = hours.length;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (intLen > maxHoursDigits) {\r\n\t\t\t\t\tintLen = maxHoursDigits;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet maskArray = [];\r\n\t\t\t\tfor (let i = 0; i < intLen; i++) {\r\n\t\t\t\t\tmaskArray.push(/\\d/);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (intLen === maxHoursDigits || rawValue.endsWith(':') || parts.length > 1) {\r\n\t\t\t\t\tmaskArray.push(':');\r\n\t\t\t\t\tmaskArray.push(/[0-5]/);\r\n\t\t\t\t\tmaskArray.push(/\\d/);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn maskArray;\r\n\t\t\t},\r\n\t\t\tguide: false,\r\n\t\t\tplaceholderChar: '_',\r\n\t\t\tshowMask: false\r\n\t\t};\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tlet val =\r\n\t\t\tthis.statistic.hours !== undefined\r\n\t\t\t\t? this.statistic.hours + ':' + (this.statistic.minutes || 0).toFixed(2)\r\n\t\t\t\t: '';\r\n\t\tthis.value = val;\r\n\t}\r\n}\r\n","
\r\n\t\r\n\t\t\r\n\t\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport {\r\n\tStatisticalTypeDto,\r\n\tStatisticDto,\r\n} from 'app/services';\r\nimport { StatisticEditorBase } from '../statistic-editor-base';\r\n\r\n@Component({\r\n\tselector: 'pp-editor-numeric-textbox-dec',\r\n\ttemplateUrl: './editor-numeric-textbox-dec.component.html',\r\n\tstyleUrls: ['./editor-numeric-textbox-dec.component.scss']\r\n})\r\nexport class EditorNumericTextboxDecComponent extends StatisticEditorBase implements OnInit {\r\n\tform: UntypedFormGroup;\r\n\r\n\tconstructor(\r\n\t\tprivate fb: UntypedFormBuilder,\r\n\t) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.buildForm();\r\n\t\tthis.form.patchValue({\r\n\t\t\tdec: this.statistic.dec\r\n\t\t});\r\n\r\n\t\tthis.form.controls.dec.valueChanges.subscribe(val => {\r\n\t\t\tthis.statistic.dec = +val;\r\n\t\t\tthis.emitChange();\r\n\t\t});\r\n\t}\r\n\r\n\tprivate buildForm() {\r\n\t\tthis.form = this.fb.group({\r\n\t\t\tdec: undefined\r\n\t\t});\r\n\r\n\t\tif (this.type.isRequired) {\r\n\t\t\tthis.form.controls.dec.setValidators(Validators.required);\r\n\t\t}\r\n\t}\r\n}\r\n","
\r\n\t\r\n\t\r\n
","import { Component, OnInit } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport {\r\n\tStatisticalTypeDto,\r\n\tStatisticDto,\r\n} from 'app/services';\r\nimport { StatisticEditorBase } from '../statistic-editor-base';\r\n\r\n@Component({\r\n\tselector: 'pp-editor-numeric-textbox-int',\r\n\ttemplateUrl: './editor-numeric-textbox-int.component.html',\r\n\tstyleUrls: ['./editor-numeric-textbox-int.component.scss']\r\n})\r\nexport class EditorNumericTextboxIntComponent extends StatisticEditorBase implements OnInit {\r\n\tform: UntypedFormGroup;\r\n\r\n\tconstructor(\r\n\t\tprivate fb: UntypedFormBuilder,\r\n\t) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.buildForm();\r\n\t\tthis.form.patchValue({\r\n\t\t\tint: this.statistic.int\r\n\t\t});\r\n\r\n\t\tthis.form.controls.int.valueChanges.subscribe(val => {\r\n\t\t\tthis.statistic.int = +val;\r\n\t\t\tthis.emitChange();\r\n\t\t});\r\n\t}\r\n\r\n\tprivate buildForm() {\r\n\t\tthis.form = this.fb.group({\r\n\t\t\tint: undefined\r\n\t\t});\r\n\r\n\t\tif (this.type.isRequired) {\r\n\t\t\tthis.form.controls.int.setValidators(Validators.required);\r\n\t\t}\r\n\t}\r\n}\r\n","
\r\n\t\r\n\t\r\n
","import { Component, OnInit } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport {\r\n\tStatisticalTypeDto,\r\n\tStatisticDto,\r\n} from 'app/services';\r\nimport { StatisticEditorBase } from '../statistic-editor-base';\r\n\r\n@Component({\r\n\tselector: 'pp-editor-picklist',\r\n\ttemplateUrl: './editor-picklist.component.html',\r\n\tstyleUrls: ['./editor-picklist.component.scss']\r\n})\r\nexport class EditorPicklistComponent extends StatisticEditorBase implements OnInit {\r\n\tform: UntypedFormGroup;\r\n\r\n\tconstructor(\r\n\t\tprivate fb: UntypedFormBuilder,\r\n\t) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.buildForm();\r\n\r\n\t\tthis.form.patchValue({\r\n\t\t\tstatisticalChoiceId: this.statistic.statisticalChoiceId\r\n\t\t});\r\n\r\n\t\tthis.form.controls.statisticalChoiceId.valueChanges.subscribe(id => {\r\n\t\t\tthis.statistic.statisticalChoiceId = id;\r\n\t\t\tthis.emitChange();\r\n\t\t});\r\n\t}\r\n\r\n\tprivate buildForm() {\r\n\t\tthis.form = this.fb.group({\r\n\t\t\tstatisticalChoiceId: undefined\r\n\t\t});\r\n\r\n\t\tif (this.type.isRequired) {\r\n\t\t\tthis.form.controls.statisticalChoiceId.setValidators(Validators.required);\r\n\t\t}\r\n\t}\r\n}\r\n","
\r\n\t\r\n\t\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport {\r\n\tStatisticalTypeDto,\r\n\tStatisticDto,\r\n} from 'app/services';\r\nimport { StatisticEditorBase } from '../statistic-editor-base';\r\n\r\n@Component({\r\n\tselector: 'pp-editor-textbox-multi',\r\n\ttemplateUrl: './editor-textbox-multi.component.html',\r\n\tstyleUrls: ['./editor-textbox-multi.component.scss']\r\n})\r\nexport class EditorTextboxMultiComponent extends StatisticEditorBase implements OnInit {\r\n\tform: UntypedFormGroup;\r\n\r\n\tconstructor(\r\n\t\tprivate fb: UntypedFormBuilder,\r\n\t) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.buildForm();\r\n\t\tthis.form.patchValue({\r\n\t\t\ttext: this.statistic.text\r\n\t\t});\r\n\r\n\t\tthis.form.controls.text.valueChanges.subscribe(val => {\r\n\t\t\tthis.statistic.text = val;\r\n\t\t\tthis.emitChange();\r\n\t\t});\r\n\t}\r\n\r\n\tprivate buildForm() {\r\n\t\tthis.form = this.fb.group({\r\n\t\t\ttext: undefined\r\n\t\t});\r\n\r\n\t\tif (this.type.isRequired) {\r\n\t\t\tthis.form.controls.text.setValidators(Validators.required);\r\n\t\t}\r\n\t}\r\n}\r\n","
\r\n\t\r\n\t\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport {\r\n\tStatisticalTypeDto,\r\n\tStatisticDto,\r\n} from 'app/services';\r\nimport { StatisticEditorBase } from '../statistic-editor-base';\r\n\r\n@Component({\r\n\tselector: 'pp-editor-textbox',\r\n\ttemplateUrl: './editor-textbox.component.html',\r\n\tstyleUrls: ['./editor-textbox.component.scss']\r\n})\r\nexport class EditorTextboxComponent extends StatisticEditorBase implements OnInit {\r\n\tform: UntypedFormGroup;\r\n\r\n\tconstructor(\r\n\t\tprivate fb: UntypedFormBuilder,\r\n\t) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.buildForm();\r\n\t\tthis.form.patchValue({\r\n\t\t\ttext: this.statistic.text\r\n\t\t});\r\n\r\n\t\tthis.form.controls.text.valueChanges.subscribe(val => {\r\n\t\t\tthis.statistic.text = val;\r\n\t\t\tthis.emitChange();\r\n\t\t});\r\n\t}\r\n\r\n\tprivate buildForm() {\r\n\t\tthis.form = this.fb.group({\r\n\t\t\ttext: undefined\r\n\t\t});\r\n\r\n\t\tif (this.type.isRequired) {\r\n\t\t\tthis.form.controls.text.setValidators(Validators.required);\r\n\t\t}\r\n\t}\r\n}\r\n","
\r\n\t\r\n\t\r\n
","import { Component, Input, OnInit, ViewChildren, QueryList } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\r\nimport {\r\n\tStatisticalChoiceDto,\r\n\tStatisticDto,\r\n} from 'app/services';\r\nimport { StatisticEditorBase } from '../statistic-editor-base';\r\nimport { TextComponent } from 'app/shared/forms/text.component';\r\n\r\n@Component({\r\n\tselector: 'pp-editor-two-num',\r\n\ttemplateUrl: './editor-two-num.component.html',\r\n\tstyleUrls: ['./editor-two-num.component.scss']\r\n})\r\nexport class EditorTwoNumComponent extends StatisticEditorBase implements OnInit {\r\n\tform: UntypedFormGroup;\r\n\r\n\t@Input() choice: StatisticalChoiceDto;\r\n\r\n\t@ViewChildren(TextComponent) inputs: QueryList;\r\n\r\n\tconstructor(\r\n\t\tprivate fb: UntypedFormBuilder,\r\n\t) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.buildForm();\r\n\r\n\t\tif (this.statistic) {\r\n\t\t\tthis.form.patchValue({\r\n\t\t\t\tint: this.statistic.int,\r\n\t\t\t\tintExtra1: this.statistic.intExtra1\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.form.controls.int.valueChanges.subscribe(val => {\r\n\t\t\tconst statistic = this.getStatistic();\r\n\t\t\tstatistic.int = +val;\r\n\t\t\tthis.emitChange();\r\n\t\t});\r\n\r\n\t\tthis.form.controls.intExtra1.valueChanges.subscribe(val => {\r\n\t\t\tconst statistic = this.getStatistic();\r\n\t\t\tstatistic.intExtra1 = +val;\r\n\t\t\tthis.emitChange();\r\n\t\t});\r\n\t}\r\n\r\n\tsetFocus() {\r\n\t\tthis.inputs.first.setFocus();\r\n\t}\r\n\r\n\tprivate getStatistic(): StatisticDto {\r\n\t\tif (this.statistic) {\r\n\t\t\treturn this.statistic;\r\n\t\t}\r\n\r\n\t\tthis.statistic = {\r\n\t\t\tstatisticalChoiceId: this.choice.id,\r\n\t\t\tstatisticalTypeId: this.type.id\r\n\t\t};\r\n\t}\r\n\r\n\tprivate buildForm() {\r\n\t\tthis.form = this.fb.group({\r\n\t\t\tint: undefined,\r\n\t\t\tintExtra1: undefined,\r\n\t\t});\r\n\t}\r\n}\r\n","
\r\n\t
\r\n\t\t
{{ choice.description }}
\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t
\r\n
","import { Input, Output, EventEmitter, Directive } from '@angular/core';\r\nimport {\r\n\tStatisticalTypeDto,\r\n\tStatisticDto,\r\n} from 'app/services';\r\n\r\n@Directive()\r\nexport abstract class StatisticEditorBase {\r\n\t@Input() type: StatisticalTypeDto;\r\n\t@Input() statistic: StatisticDto;\r\n\r\n\t@Output() changed = new EventEmitter();\r\n\r\n\tprotected emitChange() {\r\n\t\tthis.changed.emit(this.statistic);\r\n\t}\r\n}\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { StatisticContainerDto } from 'app/services';\r\nimport { IEditComponent } from 'app/interfaces';\r\nimport { MatTabChangeEvent } from '@angular/material/tabs';\r\n\r\n@Component({\r\n\tselector: 'pp-statistics',\r\n\ttemplateUrl: './statistics.component.html',\r\n\tstyleUrls: ['./statistics.component.scss']\r\n})\r\nexport class StatisticsComponent implements IEditComponent {\r\n\tprivate hasUnsavedChanges: boolean;\r\n\ttabsVisible = true;\r\n\tcurrentIndex = 0;\r\n\r\n\t@Input() containers: StatisticContainerDto[];\r\n\t@Output() changed = new EventEmitter();\r\n\r\n\thasChanges(): boolean {\r\n\t\treturn this.hasUnsavedChanges;\r\n\t}\r\n\r\n\tmarkClean() {\r\n\t\tthis.hasUnsavedChanges = false;\r\n\t}\r\n\r\n\tmarkChanged(container: StatisticContainerDto) {\r\n\t\tthis.hasUnsavedChanges = true;\r\n\t\tthis.changed.emit();\r\n\t}\r\n\r\n\tselectedTabChanged(evt: MatTabChangeEvent) {\r\n\t\tthis.currentIndex = evt.index;\r\n\t}\r\n}\r\n","
\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n
\r\n","import { Component, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { ConfirmDialogModel } from '../services/confirm-dialog.model';\r\n\r\n@Component({\r\n\tselector: 'pp-confirm-dialog',\r\n\ttemplateUrl: './confirm-dialog.component.html',\r\n\tstyleUrls: ['./confirm-dialog.component.scss']\r\n})\r\nexport class ConfirmDialogComponent {\r\n\ttitle: string;\r\n\tmessage: string;\r\n\r\n\tconstructor(\r\n\t\tpublic dialogRef: MatDialogRef,\r\n\t\t@Inject(MAT_DIALOG_DATA) public data: ConfirmDialogModel\r\n\t) {\r\n\t\t// Update view with given values\r\n\t\tthis.title = data.title;\r\n\t\tthis.message = data.message;\r\n\t}\r\n\r\n\tonConfirm(): void {\r\n\t\t// Close the dialog, return true\r\n\t\tthis.dialogRef.close(true);\r\n\t}\r\n\r\n\tonDismiss(): void {\r\n\t\t// Close the dialog, return false\r\n\t\tthis.dialogRef.close(false);\r\n\t}\r\n}\r\n","

\r\n\t{{ title }}\r\n

\r\n\r\n
\r\n\t

{{ message }}

\r\n
\r\n\r\n
\r\n\t\r\n\t\r\n
\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class ContentTypeInterceptor implements HttpInterceptor {\r\n\tintercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n\t\t// If the request is a POST and has a body wiht a JSON object, add the Content-Type header.\r\n\t\tif (request.method === 'POST' && /^\\{/.test(request.body)) {\r\n\t\t\trequest = request.clone({\r\n\t\t\t\theaders: request.headers.set('Content-Type', 'application/json'),\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn next.handle(request);\r\n\t}\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n\tselector: 'pp-dashboard',\r\n\ttemplateUrl: './dashboard.component.html',\r\n\tstyleUrls: ['./dashboard.component.scss'],\r\n})\r\nexport class DashboardComponent {\r\n\tconstructor(private router: Router) { }\r\n}\r\n","
\r\n\t
\r\n\t\t\r\n\t
\r\n
\r\n","import { Injectable, isDevMode } from '@angular/core';\r\nimport { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable, throwError, EMPTY } from 'rxjs';\r\nimport { retryWhen, delay, tap, map, catchError } from 'rxjs/operators';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\n\r\n@Injectable()\r\nexport class HttpRetryInterceptor implements HttpInterceptor {\r\n\tconstructor(private snackBar: MatSnackBar) {}\r\n\r\n\tintercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n\t\t// tslint:disable-next-line: variable-name\r\n\t\tconst Max_Retries = 5;\r\n\r\n\t\treturn next.handle(request).pipe(\r\n\t\t\tcatchError((err) => {\r\n\t\t\t\tif (!isDevMode()) {\r\n\t\t\t\t\treturn throwError(err);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// In development mode, handle a 4xx error with a snackbar message\r\n\t\t\t\tif (err instanceof HttpErrorResponse) {\r\n\t\t\t\t\tif (err.status >= 404 && err.status < 500) {\r\n\t\t\t\t\t\tthis.show400SeriesNotification(err.status, request.method, request.url);\r\n\t\t\t\t\t\treturn EMPTY;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn throwError(err);\r\n\t\t\t}),\r\n\t\t\tretryWhen((err) => {\r\n\t\t\t\tlet retries = 1;\r\n\t\t\t\treturn err.pipe(\r\n\t\t\t\t\t// Build the notification observable for retrying.\r\n\r\n\t\t\t\t\t// Wait for a second\r\n\t\t\t\t\tmap((error) => {\r\n\t\t\t\t\t\t// 4xx error or 500 - just throw - no retry\r\n\t\t\t\t\t\tif (error.status >= 400 && error.status <= 500) {\r\n\t\t\t\t\t\t\tthrow error;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// Keep retrying until we reach the max (or we succeed)\r\n\t\t\t\t\t\tif (retries++ === Max_Retries) {\r\n\t\t\t\t\t\t\tthrow error;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn error;\r\n\t\t\t\t\t}),\r\n\t\t\t\t\t// Retrying - so delay for a brief period\r\n\t\t\t\t\tdelay(1000),\r\n\t\t\t\t\t// Show a notification that we're retrying\r\n\t\t\t\t\ttap(() => {\r\n\t\t\t\t\t\tthis.showRetryToast(retries, Max_Retries);\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\t\t\t}),\r\n\t\t\tcatchError((err) => {\r\n\t\t\t\t// Give up - rethrow the error\r\n\t\t\t\treturn throwError(err);\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tprivate showRetryToast(numTries: number, maxRetries: number) {\r\n\t\tthis.snackBar.open(`Something went wrong - retrying (${numTries}/${maxRetries})`, '', {\r\n\t\t\tduration: 3000,\r\n\t\t});\r\n\t}\r\n\r\n\tprivate show400SeriesNotification(status: number, method: string, url: string) {\r\n\t\tthis.snackBar.open(`Got a ${status} error for a ${method} to ${url}`, 'Close');\r\n\t}\r\n}\r\n","import { Component, ChangeDetectionStrategy, Inject, ViewChild, ElementRef } from '@angular/core';\r\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { MatButton } from '@angular/material/button';\r\nimport { ICalUrls } from './iCalUrls.model';\r\n\r\n@Component({\r\n\tselector: 'pp-i-cal-details-dialog',\r\n\ttemplateUrl: './i-cal-details-dialog.component.html',\r\n\tstyleUrls: ['./i-cal-details-dialog.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ICalDetailsDialogComponent {\r\n\t@ViewChild('input', { static: true }) inputEl: ElementRef;\r\n\t@ViewChild('copyButton', { static: true }) copyButton: MatButton;\r\n\r\n\tiCalUrls: ICalUrls;\r\n\r\n\tconstructor(@Inject(MAT_DIALOG_DATA) public data: ICalUrls) {\r\n\t\tthis.iCalUrls = data;\r\n\t}\r\n\r\n\tcopyToClipboard() {\r\n\t\tthis.inputEl.nativeElement.select();\r\n\t\tdocument.execCommand('copy');\r\n\t\tthis.copyButton.focus();\r\n\t}\r\n\r\n\tonKeydown(event: KeyboardEvent) {\r\n\t\t// Fake up a read-only input by rejecting any keys that would mutate the value.\r\n\t\tif (event.key.length === 1 && (!event.ctrlKey || event.metaKey)) {\r\n\t\t\tevent.preventDefault();\r\n\t\t}\r\n\r\n\t\tif (event.key === 'Delete' || event.key === 'Backspace') {\r\n\t\t\tevent.preventDefault();\r\n\t\t}\r\n\r\n\t\t// Prevent Paste and Cut actions\r\n\t\tif ((event.key === 'v' || event.key === 'x') && (event.ctrlKey || event.metaKey)) {\r\n\t\t\tevent.preventDefault();\r\n\t\t}\r\n\t}\r\n}\r\n","

\r\n\tiCal Integration\r\n

\r\n\r\n
\r\n\t
\r\n\t\tHow to set up your iCal integration:\r\n\t\tUser guide\r\n\t
\r\n\r\n\t
\r\n\t\t\r\n\t\t\tYour personal URL\r\n\t\t\t\r\n\t\t\r\n\t
\r\n\r\n\t\r\n
\r\n\r\n
\r\n\t\r\n
\r\n","import { ICalDetailsDialogComponent } from './i-cal-details-dialog.component';\r\nimport { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ICalUrls } from './iCalUrls.model';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class ICalDialogService {\r\n\tconstructor(private dialog: MatDialog) { }\r\n\r\n\tshowDetails(details: ICalUrls) {\r\n\t\tthis.dialog.open(ICalDetailsDialogComponent, {\r\n\t\t\tdata: details,\r\n\t\t});\r\n\t}\r\n}\r\n","export class ICalUrls {\r\n\tguideUrl: string;\r\n\tprofessionalUrl: string;\r\n}\r\n","import { AuthenticationService } from './services/authentication.service';\r\nimport { Observable, Subject, throwError, EMPTY } from 'rxjs';\r\nimport { catchError, tap, switchMap, retryWhen, delay, map } from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport {\r\n\tHttpInterceptor,\r\n\tHttpRequest,\r\n\tHttpResponse,\r\n\tHttpErrorResponse,\r\n\tHttpHandler,\r\n\tHttpEvent,\r\n} from '@angular/common/http';\r\nimport { JsonService } from './services/json.service';\r\nimport { LoggerService } from './services/logger.service';\r\nimport { LogoutService } from './services/logout.service';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\n\r\nconst logRequests = false;\r\n\r\n@Injectable()\r\nexport class Interceptor implements HttpInterceptor {\r\n\tprivate _refreshSubject: Subject = new Subject();\r\n\r\n\tconstructor(\r\n\t\tprivate json: JsonService,\r\n\t\tprivate logger: LoggerService,\r\n\t\tprivate snackBar: MatSnackBar,\r\n\t\tprivate logout: LogoutService,\r\n\t\tprivate auth: AuthenticationService\r\n\t) { }\r\n\r\n\tintercept(req: HttpRequest, next: HttpHandler): Observable> {\r\n\t\tconst tapResponseHandleAspNetDates = (event) => {\r\n\t\t\tif (event instanceof HttpResponse) {\r\n\t\t\t\tconst resp: HttpResponse = event;\r\n\r\n\t\t\t\t// Mutate the body, replace ASP.NET Dates with actual local Date objects.\r\n\t\t\t\tlet body: {} = resp.body;\r\n\t\t\t\tthis.json.recurseResponseBody(body);\r\n\r\n\t\t\t\tif (logRequests) {\r\n\t\t\t\t\tthis.logger.logInfo('Result:');\r\n\t\t\t\t\tthis.logger.logInfo(body);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tif (logRequests) {\r\n\t\t\tthis.logger.logInfo('Requests:');\r\n\t\t\tthis.logger.logInfo(req.urlWithParams, req.body);\r\n\t\t}\r\n\r\n\t\tif (this.logout.loggingOut || req.url.endsWith('/refresh')) {\r\n\t\t\treturn next.handle(req);\r\n\t\t} else {\r\n\t\t\treturn next.handle(req).pipe(\r\n\t\t\t\ttap(tapResponseHandleAspNetDates.bind(this)),\r\n\t\t\t\tcatchError((error) => {\r\n\t\t\t\t\tif (error instanceof HttpErrorResponse) {\r\n\t\t\t\t\t\tif (this._checkTokenExpiryErr(error)) {\r\n\t\t\t\t\t\t\treturn this._ifTokenExpired().pipe(\r\n\t\t\t\t\t\t\t\tretryWhen((err) => {\r\n\t\t\t\t\t\t\t\t\t// Up to 3 retries to refresh the token\r\n\t\t\t\t\t\t\t\t\tlet refreshRetries = 1;\r\n\t\t\t\t\t\t\t\t\treturn err.pipe(\r\n\t\t\t\t\t\t\t\t\t\tdelay(500),\r\n\t\t\t\t\t\t\t\t\t\tmap((tokenRefreshErr) => {\r\n\t\t\t\t\t\t\t\t\t\t\tif (refreshRetries++ === 3) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tthrow tokenRefreshErr;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\treturn tokenRefreshErr;\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t\t\tcatchError(() => {\r\n\t\t\t\t\t\t\t\t\t// Couldn't refresh the token.\r\n\t\t\t\t\t\t\t\t\tthis.logout.forceLogin();\r\n\t\t\t\t\t\t\t\t\treturn EMPTY;\r\n\t\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t\t\tswitchMap(() => {\r\n\t\t\t\t\t\t\t\t\t// Successfully refreshed the token, so update the\r\n\t\t\t\t\t\t\t\t\t// token on the request and try again.\r\n\t\t\t\t\t\t\t\t\treturn next\r\n\t\t\t\t\t\t\t\t\t\t.handle(this.updateHeader(req))\r\n\t\t\t\t\t\t\t\t\t\t.pipe(tap(tapResponseHandleAspNetDates.bind(this)));\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// Token not expired - just a normal HTTP error\r\n\t\t\t\t\t\t\tswitch (error.status) {\r\n\t\t\t\t\t\t\t\tcase 503:\r\n\t\t\t\t\t\t\t\tcase 504:\r\n\t\t\t\t\t\t\t\t\t// Service unavailable/Gateway timeout\r\n\t\t\t\t\t\t\t\t\tthis.snackBar.open('The server is unavailable', '', { duration: 2000 });\r\n\t\t\t\t\t\t\t\t\tthis.logout.forceLogin();\r\n\r\n\t\t\t\t\t\t\t\t\treturn EMPTY;\r\n\t\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\t\treturn throwError(error);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn throwError(error);\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _checkTokenExpiryErr(error: HttpErrorResponse): boolean {\r\n\t\tconst isExpiry = error.status && error.status === 401;\r\n\t\treturn isExpiry;\r\n\t}\r\n\r\n\tprivate _ifTokenExpired() {\r\n\t\t// If the token is expired, pauses requests and uses the refresh_token to get a new access_token\r\n\t\t// whereafter it then replays the requests using the new access_token.\r\n\t\t//\r\n\t\t// The access_token is short-lived, but the refresh_token is long-lived and allows getting a new\r\n\t\t// access_token after it expires.\r\n\t\t//\r\n\t\t// See: https://stackoverflow.com/questions/45202208/angular-4-interceptor-retry-requests-after-token-refresh\r\n\t\t// and: https://medium.com/@this.is.samy/angular-auto-session-recovery-interceptor-42e8233cfa23\r\n\t\tthis._refreshSubject.subscribe({\r\n\t\t\tcomplete: () => {\r\n\t\t\t\tthis._refreshSubject = new Subject();\r\n\t\t\t},\r\n\t\t});\r\n\t\tif (this._refreshSubject.observers.length === 1) {\r\n\t\t\tthis.auth.refreshToken().subscribe(this._refreshSubject);\r\n\t\t}\r\n\t\treturn this._refreshSubject;\r\n\t}\r\n\r\n\tprivate updateHeader(req) {\r\n\t\tconst authToken = this.auth.getToken();\r\n\t\treq = req.clone({\r\n\t\t\theaders: req.headers.set('Authorization', `Bearer ${authToken}`),\r\n\t\t});\r\n\r\n\t\treturn req;\r\n\t}\r\n}\r\n","import { UntypedFormGroup } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { SaveResultDto } from 'app/services';\r\n\r\nexport function respondsTo(obj: object, fnName): boolean {\r\n\treturn typeof obj[fnName] === 'function';\r\n}\r\n\r\nexport interface ICheckSaveChanges {\r\n\tgetObjectName?: () => string;\r\n\tgetComponents?: () => (IForm | IEditComponent)[];\r\n\thasChanges?: () => boolean;\r\n\tsaveChanges?: (obj: object, confirmWarning?: boolean) => Observable;\r\n\tdiscardChanges?: () => void;\r\n\r\n\t/**\r\n\t * Optionally returns whether the form should show progress.\r\n\t * @returns {boolean} True if the component shows save progress.\r\n\t * @memberof IEditComponent\r\n\t */\r\n\tshowsProgress?: () => boolean;\r\n\r\n\t/**\r\n\t * Optionally returns an Observable of number which shows progress.\r\n\t */\r\n\tprogress?: () => Observable;\r\n\r\n\t/**\r\n\t * Must return the object to update and save.\r\n\t * @memberof ICheckSaveChanges\r\n\t */\r\n\tgetObject: () => object;\r\n}\r\n\r\n/**\r\n * Interface for edit components for checking for validity,\r\n * whether there are changes and applying changes to the DTO.\r\n * @export\r\n * @interface IEditComponent\r\n */\r\nexport interface IEditComponent {\r\n\t/**\r\n\t * Optionally returns whether the form is valid (or DISABLED)\r\n\t * @returns {boolean} True if the form could be saved.\r\n\t * @memberof IEditComponent\r\n\t */\r\n\tisValid?(): boolean;\r\n\r\n\t/**\r\n\t * Optionally returns whether the form should show progress.\r\n\t * @returns {boolean} True if the component shows save progress.\r\n\t * @memberof IEditComponent\r\n\t */\r\n\tshowsProgress?(): boolean;\r\n\r\n\t/**\r\n\t * Optionally returns an Observable of number which shows progress.\r\n\t */\r\n\tprogress?(): Observable;\r\n\r\n\t/**\r\n\t * Optionally returns whether the form has changes.\r\n\t * @returns {boolean} True if the form is dirty.\r\n\t * @memberof IEditComponent\r\n\t */\r\n\thasChanges?(): boolean;\r\n\r\n\t/**\r\n\t * Applies changes from the form to the object.\r\n\t * @param {*} obj The object to update.\r\n\t * @memberof IEditComponent\r\n\t */\r\n\tapplyChanges?(obj: any);\r\n\r\n\t/**\r\n\t * Saves changes - save the supplied object.\r\n\t * @param {object} obj The object to save.\r\n\t * @returns {Observable} An obsersable returning the result of the save.\r\n\t * @memberof IEditComponent\r\n\t */\r\n\tsaveChanges?(obj: object, confirmWarning?: boolean): Observable>;\r\n\r\n\t/**\r\n\t * Optionally provide the object to be updated and saved.\r\n\t * @memberof ICheckSaveChanges\r\n\t */\r\n\tgetObject?(): object;\r\n\r\n\t/**\r\n\t * Optionally provide a means of marking the component clean.\r\n\t */\r\n\tmarkClean?();\r\n}\r\n\r\n/**\r\n * Extension interface for IEditComponent for components that\r\n * contain a FormGroup.\r\n * @export\r\n * @interface IForm\r\n * @extends {IEditComponent}\r\n */\r\nexport interface IForm extends IEditComponent {\r\n\t/**\r\n\t * Returns the FormGroup.\r\n\t * @returns {FormGroup} The FormGroup object.\r\n\t * @memberof IForm\r\n\t */\r\n\tgetForm(): UntypedFormGroup;\r\n}\r\n","export * from './IForm';\r\n","import { LogoutService } from './../services/logout.service';\r\nimport { MatButtonToggleChange } from '@angular/material/button-toggle';\r\nimport { CustomisationService, IOptions } from './../services/customisation.service';\r\nimport { MsalConfigurationService, IActiveDirectoryB2CConfig } from '../services/msal-configuration.service';\r\nimport { MsalDynamicConfigService } from '../services/msal-dynamic-configuration.service';\r\nimport { LangService } from './../services/lang.service'\r\n\r\nimport { Component, OnInit, AfterViewInit, ViewChild, ChangeDetectorRef, OnDestroy } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\r\n\r\nimport { AuthenticationService } from '../services';\r\nimport { TextComponent } from 'app/shared/forms/text.component';\r\nimport { MsalService, MsalBroadcastService } from '@azure/msal-angular';\r\nimport { finalize, tap } from 'rxjs/operators';\r\nimport { SubSink } from 'subsink';\r\nimport { AuthenticationResult } from '@azure/msal-browser';\r\n\r\nclass User {\r\n\tusername: string;\r\n\toldPassword: string;\r\n\tpassword: string;\r\n\tnewPassword: string;\r\n\trememberMe: boolean;\r\n}\r\n\r\ninterface IToolbarStyle {\r\n\t'background-color'?: string;\r\n\tcolor?: string;\r\n}\r\n\r\nenum Mode {\r\n\tLogin,\r\n\tChangePassword,\r\n\tStaleClient,\r\n}\r\n\r\n@Component({\r\n\tselector: 'pp-login',\r\n\ttemplateUrl: './login.component.html',\r\n\tstyleUrls: ['./login.component.scss'],\r\n})\r\nexport class LoginComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\tget LOGIN_STYLE_LEGACY() {\r\n\t\treturn AuthenticationService.LOGIN_STYLE_LEGACY;\r\n\t}\r\n\r\n\tget LOGIN_STYLE_B2C() {\r\n\t\treturn AuthenticationService.LOGIN_STYLE_B2C;\r\n\t}\r\n\r\n\tget LOGIN_STYLE_B2C_CORP() {\r\n\t\treturn AuthenticationService.LOGIN_STYLE_B2C_CORP;\r\n\t}\r\n\r\n\tget isLegacyLoginScheme() {\r\n\t\treturn this.loginScheme === this.LOGIN_STYLE_LEGACY;\r\n\t}\r\n\r\n\tget isExternalLoginScheme() {\r\n\t\treturn this.loginScheme === this.LOGIN_STYLE_B2C;\r\n\t}\r\n\r\n\tget isExternalLoginSchemeCorporate() {\r\n\t\treturn this.loginScheme === this.LOGIN_STYLE_B2C_CORP;\r\n\t}\r\n\r\n\tget preventLogin() {\r\n\t\tif (this.loginScheme === this.LOGIN_STYLE_LEGACY) {\r\n\t\t\treturn this.form.invalid;\r\n\t\t}\r\n\r\n\t\treturn this.authenticationService.isAadB2CLoginInProgress$.value;\r\n\t}\r\n\r\n\tprivate subs = new SubSink();\r\n\tform: UntypedFormGroup;\r\n\r\n\tloading: boolean = false;\r\n\tpasswordExpired: boolean = false;\r\n\terror: string = '';\r\n\tmustReload = false;\r\n\tminVersion: string;\r\n\r\n\tloginScheme: string;\r\n\tpreventSwitchScheme = false;\r\n\tloggedSuccessfully: boolean = false;\r\n\tisLangSelection = false;\r\n\r\n\ttitle = 'Professional Portal';\r\n\ttoolbarStyle: IToolbarStyle = {};\r\n\r\n\thasMultipleLoginSchemes: boolean;\r\n\tloginSchemes = {\r\n\t\t[AuthenticationService.LOGIN_STYLE_LEGACY]: true,\r\n\t\t[AuthenticationService.LOGIN_STYLE_B2C]: false,\r\n\t\t[AuthenticationService.LOGIN_STYLE_B2C_CORP]: false,\r\n\t};\r\n\tadB2cConfig: IActiveDirectoryB2CConfig;\r\n\r\n\r\n\t@ViewChild('username') usernameControl: TextComponent;\r\n\t@ViewChild('password') passwordControl: TextComponent;\r\n\t@ViewChild('oldPassword') oldPasswordControl: TextComponent;\r\n\r\n\tconstructor(\r\n\t\tprivate router: Router,\r\n\t\tprivate fb: UntypedFormBuilder,\r\n\t\tpublic authenticationService: AuthenticationService,\r\n\t\tprivate cdRef: ChangeDetectorRef,\r\n\t\tprivate msalService: MsalService,\r\n\t\tprivate broadcastService: MsalBroadcastService,\r\n\t\tprivate logoutService: LogoutService,\r\n\t\tcustomisationService: CustomisationService,\r\n\t\tprivate langService: LangService,\r\n\t\tmsalConfigurationService: MsalConfigurationService,\r\n\t\tmsalConfigurationServiceD: MsalDynamicConfigService //here to force the setting of parameters\r\n\t) {\r\n\t\tconst customisation = customisationService.customisation;\r\n\t\tif (customisation.toolbarBackgroundColor) {\r\n\t\t\tthis.toolbarStyle['background-color'] = customisation.toolbarBackgroundColor;\r\n\t\t}\r\n\r\n\t\tif (customisation.toolbarColor) {\r\n\t\t\tthis.toolbarStyle.color = customisation.toolbarColor;\r\n\t\t}\r\n\t\t\r\n\t\tthis.isLangSelection = customisationService.options.isLangSelection;\r\n\t\tif (!this.isLangSelection)\r\n\t\t\tlangService.changeLang(null);\r\n\r\n\t\tif (customisation && customisation.accessibility)\r\n\t\t\tthis.setAccessibility();\r\n\r\n\t\tthis.title = customisation.appTitle || this.title;\r\n\t\tthis.determineLoginSchemes(customisationService.options);\r\n\t\tthis.adB2cConfig = msalConfigurationService.getConfig();\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\t// Reset login status\r\n\t\tthis.authenticationService.logout();\r\n\t\tthis.logoutService.loggingOut = false;\r\n\t\tthis.buildForm();\r\n\r\n\t\tconst defaultUsername = this.authenticationService.defaultUserName;\r\n\t\tif (defaultUsername) {\r\n\t\t\tthis.form.patchValue({\r\n\t\t\t\tusername: defaultUsername,\r\n\t\t\t\trememberMe: true,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.subs.sink = this.authenticationService.isAadB2CLoginInProgress$.subscribe((v) => {\r\n\t\t\tif (!v) {\r\n\t\t\t\tthis.preventSwitchScheme = false;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tngAfterViewInit() {\r\n\t\tthis.setInitialFocus();\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.subs.unsubscribe();\r\n\t}\r\n\r\n\tloginSchemeChanged(event: MatButtonToggleChange) {\r\n\t\tthis.loginScheme = event.value;\r\n\t\tthis.error = '';\r\n\r\n\t\tif (this.loginScheme === AuthenticationService.LOGIN_STYLE_B2C) {\r\n\t\t\tthis.authenticationService.setAadB2CLoginInProgress(false);\r\n\t\t\tthis.authenticationService.setAadB2CProgress('');\r\n\t\t}\r\n\r\n\t\tif (this.loginScheme === AuthenticationService.LOGIN_STYLE_B2C_CORP) {\r\n\t\t\tthis.authenticationService.setAadB2CLoginInProgress(false);\r\n\t\t\tthis.authenticationService.setAadB2CProgress('');\r\n\t\t}\r\n\t}\r\n\r\n\tlogin() {\r\n\t\tswitch (this.loginScheme) {\r\n\t\t\tcase AuthenticationService.LOGIN_STYLE_LEGACY:\r\n\t\t\t\tthis.loginLegacy();\r\n\t\t\t\tbreak;\r\n\t\t\tcase AuthenticationService.LOGIN_STYLE_B2C:\r\n\t\t\t\tconst loginRequest = {\r\n\t\t\t\t\tauthority: this.adB2cConfig.signInAuthority,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.loginAadB2cWithAuthority(loginRequest);\r\n\t\t\t\tbreak;\r\n\t\t\tcase AuthenticationService.LOGIN_STYLE_B2C_CORP:\r\n\t\t\t\tconst loginRequestCorp = {\r\n\t\t\t\t\tauthority: this.adB2cConfig.signInAuthorityCorp,\r\n\t\t\t \t};\r\n\r\n\t\t\t\tthis.loginAadB2cWithAuthority(loginRequestCorp);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tloginLegacy() {\r\n\t\tthis.loading = true;\r\n\t\tthis.error = '';\r\n\r\n\t\tconst user = this.form.getRawValue() as User,\r\n\t\t\tpassword = user.password || user.oldPassword;\r\n\r\n\t\tthis.preventSwitchScheme = true;\r\n\r\n\t\tthis.authenticationService\r\n\t\t\t.login(user.username, password, this.passwordExpired, user.newPassword)\r\n\t\t\t.pipe(\r\n\t\t\t\ttap((result) => {\r\n\t\t\t\t\tif (result) {\r\n\t\t\t\t\t\tif (result.ok) {\r\n\t\t\t\t\t\t\tthis.loginOK(user);\r\n\t\t\t\t\t\t} else if (result.passwordExpired) {\r\n\t\t\t\t\t\t\tthis.error = 'Your password has expired.';\r\n\t\t\t\t\t\t\tthis.setMode(Mode.ChangePassword);\r\n\t\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\t\tthis.oldPasswordControl.setFocus();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.error = result.errorMessage;\r\n\r\n\t\t\t\t\t\t\tif (result.forceReload) {\r\n\t\t\t\t\t\t\t\tthis.mustReload = true;\r\n\t\t\t\t\t\t\t\tthis.setMode(Mode.StaleClient);\r\n\t\t\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\t\t\twindow.location.reload();\r\n\t\t\t\t\t\t\t\t}, 5000);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (this.passwordExpired) {\r\n\t\t\t\t\t\t\t\tthis.oldPasswordControl.setFocus();\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tthis.passwordControl.setFocus();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.error = 'An error occurred while logging in. Please try again.';\r\n\t\t\t\t\t\tthis.passwordControl.setFocus();\r\n\t\t\t\t\t}\r\n\t\t\t\t}),\r\n\t\t\t\tfinalize(() => {\r\n\t\t\t\t\tthis.preventSwitchScheme = false;\r\n\t\t\t\t\tthis.loading = false;\r\n\t\t\t\t})\r\n\t\t\t)\r\n\t\t\t.subscribe();\r\n\t}\r\n\r\n\tloginAadB2cWithAuthority(loginRequest : any) {\r\n\t\tconst isIE = window.navigator.userAgent.indexOf('MSIE ') > -1 || window.navigator.userAgent.indexOf('Trident/') > -1;\r\n\r\n\t\tthis.authenticationService.setAadB2CLoginInProgress(true);\r\n\t\tthis.authenticationService.setAadB2CProgress('Logging in...');\r\n\t\tthis.preventSwitchScheme = true;\r\n\r\n\t\tif (isIE) {\r\n\t\t\tthis.msalService.loginRedirect();\r\n\t\t} else {\r\n\t\t\tthis.msalService.loginPopup(loginRequest)\r\n\t\t\t\t.subscribe({\r\n\t\t\t\t\tnext: (response: AuthenticationResult) => {\r\n\t\t\t\t\t\tthis.authenticationService.assignToken(response.idToken)\r\n\t\t\t\t\t\tthis.preventSwitchScheme = false;\r\n\t\t\t\t\t},\r\n\t\t\t\t\terror: (error) => {\r\n\t\t\t\t\t if (error.errorMessage.includes('AADB2C90118')) {\r\n\t\t\t\t\t\tconst loginRequestX : any = {\r\n\t\t\t\t\t\t\tauthority: this.adB2cConfig.passwordResetAuthority\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\t// Redirect to password reset policy\r\n\t\t\t\t\t\tthis.msalService.loginPopup(loginRequestX);\r\n\t\t\t\t\t } else {\r\n\t\t\t\t\t\t// Handle other errors\r\n\t\t\t\t\t\tconsole.error(error);\r\n\t\t\t\t\t }\r\n\t\t\t\t\t}\r\n\t\t\t\t });\t\r\n\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tcancel() {\r\n\t\tthis.setMode(Mode.Login);\r\n\r\n\t\tthis.error = '';\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.passwordControl.setFocus();\r\n\t\t}, 1);\r\n\t}\r\n\r\n\tprivate loginOK(user: User) {\r\n\t\tthis.authenticationService.defaultUserName = user.rememberMe ? user.username : '';\r\n\t\tthis.authenticationService.defaultLoginScheme = AuthenticationService.LOGIN_STYLE_LEGACY;\r\n\r\n\r\n\t\tthis.loggedSuccessfully = true;\r\n\t\t/// Wait before the redirect to let the narrator read the alert\r\n\t\tsetTimeout(() => this.router.navigate(['/']), 100);\r\n\t}\r\n\r\n\tprivate setInitialFocus() {\r\n\t\tif (this.loginScheme !== AuthenticationService.LOGIN_STYLE_LEGACY) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst formValue = this.form.value;\r\n\t\tif (!formValue.username) {\r\n\t\t\tthis.usernameControl.setFocus();\r\n\t\t} else {\r\n\t\t\tthis.passwordControl.setFocus();\r\n\t\t}\r\n\r\n\t\tthis.cdRef.detectChanges();\r\n\t}\r\n\r\n\tprivate buildForm() {\r\n\t\tthis.form = this.fb.group({\r\n\t\t\tusername: ['', Validators.required],\r\n\t\t\tpassword: ['', Validators.required],\r\n\t\t\toldPassword: ['', Validators.required],\r\n\t\t\tnewPassword: ['', Validators.required],\r\n\t\t\tnewPasswordConfirm: ['', Validators.required],\r\n\t\t\trememberMe: [''],\r\n\t\t});\r\n\r\n\t\tthis.setMode(Mode.Login);\r\n\t}\r\n\r\n\tprivate setMode(mode: Mode) {\r\n\t\tswitch (mode) {\r\n\t\t\tcase Mode.Login:\r\n\t\t\t\tthis.form.controls.username.enable();\r\n\t\t\t\tthis.form.controls.password.enable();\r\n\t\t\t\tthis.form.controls.password.reset();\r\n\r\n\t\t\t\tthis.form.controls.oldPassword.disable();\r\n\t\t\t\tthis.form.controls.newPassword.disable();\r\n\t\t\t\tthis.form.controls.newPasswordConfirm.disable();\r\n\r\n\t\t\t\tthis.passwordExpired = false;\r\n\t\t\t\tbreak;\r\n\t\t\tcase Mode.ChangePassword:\r\n\t\t\t\tthis.form.controls.username.disable();\r\n\t\t\t\tthis.form.controls.password.disable();\r\n\t\t\t\tthis.form.controls.password.reset();\r\n\r\n\t\t\t\tthis.form.controls.oldPassword.enable();\r\n\t\t\t\tthis.form.controls.newPassword.enable();\r\n\t\t\t\tthis.form.controls.newPasswordConfirm.enable();\r\n\r\n\t\t\t\tthis.passwordExpired = true;\r\n\t\t\t\tbreak;\r\n\t\t\tcase Mode.StaleClient:\r\n\t\t\t\tthis.form.controls.username.disable();\r\n\t\t\t\tthis.form.controls.password.disable();\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis.form.controls.password.reset();\r\n\t\tthis.form.controls.oldPassword.reset();\r\n\t\tthis.form.controls.newPassword.reset();\r\n\t\tthis.form.controls.newPasswordConfirm.reset();\r\n\t}\r\n\r\n\tprivate determineLoginSchemes(options: IOptions) {\r\n\t\t// If an options object was provided, configure the available login schemes from its settings.\r\n\t\tif (options) {\r\n\t\t\tthis.loginSchemes[AuthenticationService.LOGIN_STYLE_LEGACY] = !options.disableLegacyLogin;\r\n\t\t\tthis.loginSchemes[AuthenticationService.LOGIN_STYLE_B2C] = options.enableB2cLogin;\r\n\t\t\tthis.loginSchemes[AuthenticationService.LOGIN_STYLE_B2C_CORP] = options.enableB2cCorporateLogin;\r\n\t\t}\r\n\r\n\t\t// Count the number of login schemes so we can hide the selector if there's only one.\r\n\t\tlet schemeCount = 0;\r\n\t\tfor (let scheme in this.loginSchemes) {\r\n\t\t\tif (this.loginSchemes[scheme]) {\r\n\t\t\t\tschemeCount++;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.hasMultipleLoginSchemes = schemeCount > 1;\r\n\r\n\t\t// Check the default login scheme is available.\r\n\t\tlet defaultLoginScheme = this.authenticationService.defaultLoginScheme;\r\n\t\tif (defaultLoginScheme && !this.loginSchemes[defaultLoginScheme]) {\r\n\t\t\tdefaultLoginScheme = '';\r\n\t\t}\r\n\r\n\t\t// If there's no default login scheme, choose the first configured one.\r\n\t\tif (!defaultLoginScheme) {\r\n\t\t\tfor (let scheme in this.loginSchemes) {\r\n\t\t\t\tif (this.loginSchemes[scheme]) {\r\n\t\t\t\t\tdefaultLoginScheme = scheme;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.loginScheme = defaultLoginScheme || AuthenticationService.LOGIN_STYLE_LEGACY;\r\n\t}\r\n\r\n\t//Calendar configuration for Health Canada\r\n\tprivate setAccessibility (){\r\nconsole.log ('Setting Accessibility') //TEST123\r\n\t\tdocument.documentElement.style.setProperty('--calendar-available-background', '#fff');\r\n\t\tdocument.documentElement.style.setProperty('--calendar-techonly-background', '#c4d6f750'); //rgba('#c4d6f7', 0.3)\r\n\t\tdocument.documentElement.style.setProperty('--calendar-unavailable-background', '#ff00001a'); //rgba(255, 0, 0, 0.1)\r\n\t\tdocument.documentElement.style.setProperty('--calendar-start-background', '#ff00001a'); //rgba(255, 0, 0, 0.1)\r\n\t\tdocument.documentElement.style.setProperty('--calendar-selected-background', '#e0e0e0');\r\n\t\tdocument.documentElement.style.setProperty('--calendar-available-color', 'black');\r\n\t\tdocument.documentElement.style.setProperty('--calendar-techonly-color', 'black');\r\n\t\tdocument.documentElement.style.setProperty('--calendar-unavailable-color', 'black');\r\n\t\tdocument.documentElement.style.setProperty('--calendar-start-color', 'black');\r\n\t}\r\n\r\n}\r\n","
\r\n\t\r\n\t\t

{{ title }} Login

\r\n\t\t\r\n\t\t\r\n\t
\r\n\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t

Login

\r\n\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tLegacy login\r\n\t\t\t\t\t\t\t\t\tModern external login\r\n\t\t\t\t\t\t\t\t\tModern corporate login\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\tPlease login with your username and password.\r\n\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\tTap the Login button to start.\r\n\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\tTap the Login button to start.\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t{{ authenticationService.aadB2CLoginProgress$ | async }}\r\n\t\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t

Password expired - please enter a new password.

\r\n\r\n\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\tPasswords are not the same\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tChange password\r\n\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tLogin\r\n\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n","import { ConfirmDialogService } from './../services/confirm-dialog.service';\r\nimport { MessageDialogService } from './../services/message-dialog.service';\r\nimport { CustomisationService } from './../services/customisation.service';\r\nimport { Component, ElementRef, ViewChild, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';\r\nimport { LogoutService, AuthenticationService, SignalrService, ConfigService, AnnouncementsService } from 'app/services';\r\nimport { Subscription } from 'rxjs';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { MediaObserver } from '@angular/flex-layout';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { MatIconRegistry } from '@angular/material/icon';\r\nimport { AnnouncementsDto } from 'app/services';\r\nimport { SearchComponent } from '../search/search.component';\r\nimport { environment } from 'environments/environment';\r\n\r\nclass RouteSpec {\r\n\ttitle: string;\r\n\troute: string;\r\n\ticon: string;\r\n\thideForPractice?: boolean;\r\n\thideForProfessional?: boolean;\r\n\thideForEmployee?: boolean;\r\n\thideResouceHub?: boolean;\r\n}\r\n\r\ninterface IToolbarStyle {\r\n\t'background-color'?: string;\r\n\tcolor?: string;\r\n}\r\n\r\n@Component({\r\n\tselector: 'pp-main',\r\n\ttemplateUrl: './main.component.html',\r\n\tstyleUrls: ['./main.component.scss']\r\n})\r\nexport class MainComponent implements OnInit, OnDestroy {\r\n\t@ViewChild('search', { static: true }) searchEl: ElementRef;\r\n\r\n\tshowCopyright = false;\r\n\tusername: string;\r\n\tversion: string;\r\n\tserverVersion: string;\r\n\r\n\tpracticeMode = false;\r\n\tisEmployee = false;\r\n\tuseResouceHub = false;\r\n\tuseProfile = false;\r\n\tisLangSelection = false;\r\n\r\n\tparam = { value: ', world!' };\r\n\r\n\t_signalrService;\r\n\t_announcementService: AnnouncementsService;\r\n\tshowAnnouncements = false;\r\n\tunread = -2;\r\n\t_messageDialog: MessageDialogService\r\n\t\r\n\t// Routes for the sidebar menu.\r\n\tallRoutes: RouteSpec[] = [\r\n\t\t{\r\n\t\t\ttitle: 'Dashboard',\r\n\t\t\troute: '/dashboard',\r\n\t\t\ticon: 'dashboard'\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: 'Cases',\r\n\t\t\troute: '/cases',\r\n\t\t\ticon: 'view_quilt'\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: 'Appointments',\r\n\t\t\troute: '/appointments',\r\n\t\t\ticon: 'face',\r\n\t\t\thideForPractice: true\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: 'Invoices',\r\n\t\t\troute: '/invoices',\r\n\t\t\ticon: 'receipt',\r\n\t\t\thideForEmployee: true\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: 'Availability',\r\n\t\t\troute: '/availability',\r\n\t\t\ticon: 'people',\r\n\t\t\thideForPractice: true\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: 'Activity query',\r\n\t\t\troute: '/activity-query',\r\n\t\t\ticon: 'reorder'\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: 'Resource Hub',\r\n\t\t\troute: '/resource-hub',\r\n\t\t\ticon: 'library_books',\r\n\t\t\thideResouceHub: true\r\n\t\t}\r\n\t];\r\n\r\n\troutes: RouteSpec[];\r\n\r\n\tsidenavMode = 'side';\r\n\tsidenavOpened = true;\r\n\r\n\tmediaWatcher: Subscription;\r\n\tactiveMediaQuery = '';\r\n\tmediaAlias = '';\r\n\r\n\ttitle = 'Professional Portal';\r\n\ttoolbarStyle: IToolbarStyle = {};\r\n\r\n\tconstructor(\r\n\t\tprivate router: Router,\r\n\t\tprivate config: ConfigService,\r\n\t\tprivate signalrService: SignalrService,\r\n\t\tprivate announcement: AnnouncementsService,\r\n\t\tprivate dialog: MatDialog,\r\n\t\tprivate logoutService: LogoutService,\r\n\t\tpublic auth: AuthenticationService,\r\n\t\tpublic media: MediaObserver,\r\n\t\tpublic iconRegistry: MatIconRegistry,\r\n\t\tsanitizer: DomSanitizer,\r\n\t\tcustomisationService: CustomisationService,\r\n\t\tprivate confirmDialog: ConfirmDialogService,\r\n\t\tprivate messageDialog: MessageDialogService\r\n\t) {\r\n\t\tthis.version = environment.PACKAGE.version;\r\n\t\tthis.serverVersion = this.getServerVersion();\r\n\t\tthis.username = this.getUsername();\r\n\r\n\t\ticonRegistry.addSvgIcon(\r\n\t\t\t'eapexec-icon',\r\n\t\t\tsanitizer.bypassSecurityTrustResourceUrl('assets/icons/eap-exec-icon.svg')\r\n\t\t);\r\n\r\n\t\tthis.practiceMode = config.config.isPractice;\r\n\t\tthis.isEmployee = config.config.isEmployee;\r\n\t\tthis.useResouceHub = config.systemPreferences.useResouceHub;\r\n\t\tthis.useProfile = config.systemPreferences.useProfile;\r\n\t\tthis.showAnnouncements = config.systemPreferences.useAnnouncements;\r\n\t\tthis._signalrService = signalrService;\r\n\t\tthis._announcementService = announcement;\r\n\t\tthis.isLangSelection = customisationService.options.isLangSelection;\r\n\r\n\t\tthis.configureRoutesForModes();\r\n\r\n\t\tconst customisation = customisationService.customisation;\r\n\t\tif (customisation.toolbarBackgroundColor) {\r\n\t\t\tthis.toolbarStyle['background-color'] = customisation.toolbarBackgroundColor;\r\n\t\t}\r\n\r\n\t\tif (customisation.toolbarColor) {\r\n\t\t\tthis.toolbarStyle.color = customisation.toolbarColor;\r\n\t\t}\r\n\r\n\t\tthis.title = customisation.appTitle || this.title;\r\n\t\tthis.showCopyright = !!customisation.showCopyright;\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.auth.isAuthenticated$.subscribe(isAuthenticated => {\r\n\t\t\tif (isAuthenticated) {\r\n\t\t\t\tthis.isEmployee = this.config.config.isEmployee;\r\n\t\t\t\tthis.configureRoutesForModes();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.auth.isPracticeMode$.subscribe(practiceMode => {\r\n\t\t\tthis.practiceMode = practiceMode;\r\n\t\t\tthis.configureRoutesForModes();\r\n\t\t});\r\n\r\n\t\tthis.mediaWatcher = this.media.asObservable().subscribe(changes => {\r\n\t\t\tlet change = changes[0];\r\n\r\n\t\t\tthis.activeMediaQuery = change ? `'${change.mqAlias}' = (${change.mediaQuery})` : '';\r\n\t\t\tthis.mediaAlias = change.mqAlias;\r\n\t\t\tthis.configureFromMediaAlias();\r\n\t\t});\r\n\r\n\t\tthis.sidenavOpened = this.media.isActive('gt-sm');\r\n\r\n\t\tif (this.showAnnouncements){\r\n\t\t\t//Initialise announcements\r\n\t\t\tthis.initialiseAnnouncementUnread(true);\r\n\t\t\t\r\n\t\t\t//Setup Signalr socket\r\n\t\t\tthis._signalrService.startConnection(this.config.systemPreferences.signalrUrl);\r\n\t\t\tthis._signalrService.addReceiveMessageListener();\r\n\t\t\t\r\n\t\t\t//Setup a watch on changes via announcements\r\n\t\t\tthis._announcementService.unreadObservable.subscribe(\r\n\t\t\t\tunread => {this.unread = unread;}\r\n\t\t\t);\r\n\t}\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.mediaWatcher.unsubscribe();\r\n\t}\r\n\r\n\ttoggleSidenav() {\r\n\t\tthis.sidenavOpened = !this.sidenavOpened;\r\n\t}\r\n\r\n\tsidenavOpenedChanged(isOpen) {\r\n\t\tthis.sidenavOpened = isOpen;\r\n\t}\r\n\r\n\tconfigureFromMediaAlias() {\r\n\t\tthis.sidenavMode = this.media.isActive('lt-md') ? 'over' : 'side';\r\n\t}\r\n\r\n\tconfigureRoutesForModes() {\r\n\t\tthis.routes = this.allRoutes.filter(r => {\r\n\t\t\tif (r.hideForEmployee && this.isEmployee) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (r.hideForPractice && this.practiceMode) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (r.hideForProfessional && !this.practiceMode) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (r.hideResouceHub && !this.useResouceHub) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\treturn true;\r\n\t\t});\r\n\t}\r\n\r\n\tasync logout(requireConfirm?: boolean) {\r\n\t\tconst doLogout = () => {\r\n\t\t\tif (this.showAnnouncements)\r\n\t\t\t\tthis._signalrService.stopConnection();\r\n\t\t\tthis.logoutService.forceLogin();\r\n\t\t};\r\n\r\n\t\tif (!requireConfirm) {\r\n\t\t\tdoLogout();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst confirmResult = await this.confirmDialog.confirm('Are you sure you want to log out?', 'Confirm Logout');\r\n\t\tif (confirmResult) {\r\n\t\t\tdoLogout();\r\n\t\t}\r\n\t}\r\n\r\n\ttestError() {\r\n\t\tthrow new Error('Test error');\r\n\t}\r\n\r\n\tshowSearch() {\r\n\t\tconst gtSm = this.media.isActive('gt-sm');\r\n\t\tconst rect = this.searchEl.nativeElement.getBoundingClientRect();\r\n\r\n\t\tlet width;\r\n\t\tlet height;\r\n\t\tlet left;\r\n\t\tif (gtSm) {\r\n\t\t\twidth = 870;\r\n\t\t\theight = '80%';\r\n\t\t\tleft = rect.right - width + 'px';\r\n\t\t} else {\r\n\t\t\twidth = 400;\r\n\t\t\theight = '90%';\r\n\t\t\tleft = '10px';\r\n\t\t}\r\n\t\tlet dialogRef = this.dialog.open(SearchComponent, {\r\n\t\t\twidth: width + 'px',\r\n\t\t\theight: height,\r\n\t\t\tpanelClass: 'search-dialog',\r\n\t\t\tposition: {\r\n\t\t\t\tleft,\r\n\t\t\t\ttop: '60px'\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tgetAnnouncementUnread() {\r\n\t\treturn this.unread;\r\n\t}\r\n\r\n\topenAnnouncements(e: Event) {\r\n\t\te.stopPropagation();\r\n\t\tthis.unread = -2;\r\n\t\tthis.initialiseAnnouncementUnread(false);\r\n\t\tthis.router.navigate(['announcements']);\r\n\t}\r\n\r\n\tinitialiseAnnouncementUnread(showUnreadDialog : boolean) {\r\n\t\tif (this.unread >= -1) \r\n\t\t\treturn this.unread;\r\n\t\tthis.unread = -1;\r\n\t\r\n\t\tif (showUnreadDialog) {\r\n\t\t\tthis._announcementService.getAnnouncementsUnread(true)\r\n\t\t\t.subscribe(result => {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tvar unread = parseInt(result);\r\n\t\t\t\t\tif (showUnreadDialog && unread > 0)\r\n\t\t\t\t\t\tthis.messageDialog.message('You have unread priority notifications', \r\n\t\t\t\t\t\t\t'Please open announcements to view');\r\n\r\n\t\t\t\t} catch (error) {\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t//Get all unread\r\n\t\tthis._announcementService.getAnnouncementsUnread(false)\r\n\t\t.subscribe(result => {\r\n\t\t\ttry {\r\n\t\t\t\tthis.unread = parseInt(result);\r\n\t\t\t} catch (error) {\r\n\t\t\t\tthis.unread = -2;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tgetAnnouncementStyle() {\r\n\t\tif (this.unread > 0) return {'color':'red'}\r\n\t\treturn {'color':'#ef6c00'}\r\n\t}\r\n\r\n\tprivate getUsername() {\r\n\t\tconst userConfig = this.config.config;\r\n\t\tif (!userConfig) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\t\treturn userConfig.name;\r\n\t}\r\n\r\n\tprivate getServerVersion() {\r\n\t\tconst systemPrefs = this.config.systemPreferences;\r\n\t\tif (!systemPrefs) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\t\treturn systemPrefs.serverVersion;\r\n\t}\r\n}\r\n","\r\n\t\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\"EAP\r\n\t\t\t\t\r\n\t\t\t\t\t{{ title }}\r\n\t\t\t\t\t\r\n\t\t\t\t\t
{{ 'HELLO' | translate: param }}
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t
{{ username }}
\r\n\t\t\t\t
\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\tVersion {{ version }} (API: {{ serverVersion }})\r\n\t\t\t\t\t\"Executive\r\n\t\t\t\t\tCopyright © 2018 Executive Software\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n\r\n\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t{{ title }}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t
0\" class=\"announcement-unread\" [ngClass]=\"{'announcement-unreadx': unread >= 10 }\">{{getAnnouncementUnread()}}
\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
\r\n","import { Component, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { MessageDialogModel } from '../services/message-dialog.model';\r\n\r\n@Component({\r\n\tselector: 'pp-message-dialog',\r\n\ttemplateUrl: './message-dialog.component.html',\r\n\tstyleUrls: ['./message-dialog.component.scss']\r\n})\r\nexport class MessageDialogComponent {\r\n\ttitle: string;\r\n\tmessage: string;\r\n\tsubMessage: string;\r\n\r\n\tconstructor(\r\n\t\tpublic dialogRef: MatDialogRef,\r\n\t\t@Inject(MAT_DIALOG_DATA) public data: MessageDialogModel\r\n\t) {\r\n\t\t// Update view with given values\r\n\t\tthis.title = data.title;\r\n\t\tthis.message = data.message;\r\n\t\tthis.subMessage = data.subMessage;\r\n\t}\r\n\r\n\tonClose(): void {\r\n\t\t// Close the dialog, return true\r\n\t\tthis.dialogRef.close(true);\r\n\t}\r\n}\r\n","

\r\n\t{{ title }}\r\n

\r\n\r\n\r\n\r\n
\r\n\t

{{ subMessage }}

\r\n
\r\n\r\n
\r\n\t\r\n
\r\n","import { Component, OnInit, ViewChild, AfterViewInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { MatExpansionPanel } from '@angular/material/expansion';\r\n\r\nimport {\r\n\tConfigService,\r\n\tProfessionalDto,\r\n\tBookingResource,\r\n} from 'app/services';\r\n\r\n@Component({\r\n\tselector: 'pp-practice-navigator',\r\n\ttemplateUrl: './practice-navigator.component.html',\r\n\tstyleUrls: ['./practice-navigator.component.scss']\r\n})\r\nexport class PracticeNavigatorComponent implements OnInit, AfterViewInit {\r\n\tprivate panels: MatExpansionPanel[];\r\n\r\n\t// Flag to ensure that the openPanel and closePanel functions only operate when triggered by the user.\r\n\tprivate ignoreOpenClose: boolean;\r\n\r\n\tprofessionals: ProfessionalDto[];\r\n\toffices: BookingResource[];\r\n\r\n\t// CSS height calculation for each panel - 100% less 2 x 64px header heights.\r\n\tcalcFlexHeight = 'calc(100% - 128px)';\r\n\r\n\t@ViewChild('panelPracticeDiaries', { static: true }) panelPracticeDiaries: MatExpansionPanel;\r\n\t@ViewChild('panelProfessionalDiaries', { static: true }) panelProfessionalDiaries: MatExpansionPanel;\r\n\t@ViewChild('panelProfessionalAvailabilities', { static: true }) panelProfessionalAvailabilities: MatExpansionPanel;\r\n\r\n\tconstructor(\r\n\t\tprivate config: ConfigService,\r\n\t\tprivate router: Router,\r\n\t) { }\r\n\r\n\tngOnInit() {\r\n\t\tconst userConfig = this.config.config;\r\n\t\tconst practiceConfig = this.config.practiceConfig;\r\n\r\n\t\tthis.professionals = userConfig.practiceProfessionals;\r\n\t\tthis.offices = practiceConfig.practiceBookingResources;\r\n\t}\r\n\r\n\tngAfterViewInit() {\r\n\t\tthis.panels = [\r\n\t\t\tthis.panelPracticeDiaries,\r\n\t\t\tthis.panelProfessionalDiaries,\r\n\t\t\tthis.panelProfessionalAvailabilities\r\n\t\t];\r\n\t}\r\n\r\n\tgotoOffice(e: Event, office: BookingResource) {\r\n\t\te.stopPropagation();\r\n\t\tthis.router.navigate(['/appointments', { type: 'office', id: office.id }]);\r\n\t}\r\n\r\n\tgotoProfessionalDiary(e: Event, professional: ProfessionalDto) {\r\n\t\te.stopPropagation();\r\n\t\tthis.router.navigate(['/appointments', { type: 'professional', id: professional.id }]);\r\n\t}\r\n\r\n\tgotoProfessionalAvailability(e: Event, professional: ProfessionalDto) {\r\n\t\te.stopPropagation();\r\n\t\tthis.router.navigate(['/availability', { 'id': professional.id }]);\r\n\t}\r\n\r\n\topenPanel(panel: MatExpansionPanel) {\r\n\t\tif (!this.panels || this.ignoreOpenClose) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// When one panel opens, close all others.\r\n\t\tlet otherPanels = this.panels.filter(p => p !== panel);\r\n\r\n\t\tthis.ignoreOpenClose = true;\r\n\t\totherPanels.forEach(p => p.close());\r\n\t\tthis.ignoreOpenClose = false;\r\n\t}\r\n\r\n\tclosePanel(panel: MatExpansionPanel) {\r\n\t\tif (!this.panels || this.ignoreOpenClose) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// When a panel closes, open the next one, cycling around.\r\n\t\tlet panelIndex = this.panels.indexOf(panel);\r\n\t\tlet nextPanelIndex = (panelIndex + 1) % this.panels.length;\r\n\t\tlet nextPanel = this.panels[nextPanelIndex];\r\n\r\n\t\tthis.ignoreOpenClose = true;\r\n\t\tnextPanel.open();\r\n\t\tthis.ignoreOpenClose = false;\r\n\t}\r\n}\r\n","
\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\tlocation_city\r\n\t\t\t\tPractice office diaries\r\n\t\t\t\r\n\t\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{{ office.name }}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\tface\r\n\t\t\t\tProfessional diaries\r\n\t\t\t\r\n\t\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{{ professional.name }}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\tpeople\r\n\t\t\t\tAvailability\r\n\t\t\t\r\n\t\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{{ professional.name }}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport {\r\n\tDashboardService,\r\n\tOpenActivityHeadersCountDto,\r\n\tCommonService,\r\n} from 'app/services';\r\n\r\nimport { BaseViewComponent } from 'app/shared/base-view/base-view-component';\r\n@Component({\r\n\tselector: 'pp-active-cases',\r\n\ttemplateUrl: './active-cases.component.html',\r\n\tstyleUrls: ['./active-cases.component.scss']\r\n})\r\nexport class ActiveCasesComponent extends BaseViewComponent implements OnInit {\r\n\tactivityHeaders: OpenActivityHeadersCountDto;\r\n\r\n\tconstructor(\r\n\t\tcommon: CommonService,\r\n\t\tprivate router: Router,\r\n\t\tprivate dashboardService: DashboardService\r\n\t) {\r\n\t\tsuper(common);\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.refresh();\r\n\t}\r\n\r\n\trefresh() {\r\n\t\tthis.loading = true;\r\n\t\tthis.dashboardService.getDashboardOpenActivityHeadersCount()\r\n\t\t\t.subscribe(result => this.handleDashboardData(result), err => this.handleError(err, 'loading cases'));\r\n\t}\r\n\r\n\tprivate handleDashboardData(data: OpenActivityHeadersCountDto) {\r\n\t\tthis.activityHeaders = data;\r\n\t\tthis.loading = false;\r\n\t}\r\n}\r\n","\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t

Active cases

\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n\r\n\t\r\n\t\r\n\t\t
\r\n\t\t\t
{{ activityHeaders?.openCount | zeroToText:'No' }} open case{{ activityHeaders?.openCount !== 1 ? 's' : '' }}
\r\n\t\t\t
{{ activityHeaders?.incompleteCount }} need attention
\r\n\t\t
\r\n\t
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport {\r\n\tDashboardService,\r\n\tOpenInvoicesCountDto,\r\n\tCommonService,\r\n} from 'app/services';\r\n\r\nimport { BaseViewComponent } from 'app/shared/base-view/base-view-component';\r\n@Component({\r\n\tselector: 'pp-active-invoices',\r\n\ttemplateUrl: './active-invoices.component.html',\r\n\tstyleUrls: ['./active-invoices.component.scss']\r\n})\r\nexport class ActiveInvoicesComponent extends BaseViewComponent implements OnInit {\r\n\tinvoices: OpenInvoicesCountDto;\r\n\r\n\tconstructor(\r\n\t\tcommon: CommonService,\r\n\t\tprivate router: Router,\r\n\t\tprivate dashboardService: DashboardService\r\n\t) {\r\n\t\tsuper(common);\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.refresh();\r\n\t}\r\n\r\n\trefresh() {\r\n\t\tthis.loading = true;\r\n\t\tthis.dashboardService.getDashboardOpenInvoicesCount()\r\n\t\t\t.subscribe(result => this.handleDashboardData(result), err => this.handleError(err, 'loading invoices'));\r\n\t}\r\n\r\n\tprivate handleDashboardData(data: OpenInvoicesCountDto) {\r\n\t\tthis.invoices = data;\r\n\t\tthis.loading = false;\r\n\t}\r\n}\r\n","\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t

Active invoices

\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n\r\n\t\r\n\r\n\t\r\n\t\t
\r\n\t\t\t
{{ invoices?.openCount | zeroToText:'No' }} active invoice{{ invoices?.openCount !== 1 ? 's' : '' }}
\r\n\t\t\t
{{ invoices?.incompleteCount }} need attention
\r\n\t\t
\r\n\t
\r\n
\r\n","import { ICalDialogService } from './../../i-cal-details-dialog/i-cal-dialog.service';\r\nimport { tap } from 'rxjs/operators';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport * as _ from 'lodash';\r\nimport * as moment from 'moment';\r\n\r\nimport {\r\n\tDashboardService,\r\n\tAppointmentsDto,\r\n\tAppointmentDto,\r\n\tAppointmentType,\r\n\tCommonService,\r\n\tProfessionalDto,\r\n\tCommAddressDisplayDto,\r\n} from 'app/services';\r\n\r\nimport { BaseViewComponent } from 'app/shared/base-view/base-view-component';\r\nimport { ICalUrls } from '../../i-cal-details-dialog/iCalUrls.model';\r\n\r\nclass Day {\r\n\tname: string;\r\n\tdate: Date;\r\n\tappointments: AppointmentDto[];\r\n}\r\n\r\nclass PhoneNumber {\r\n\tnumber: string;\r\n\ttext: string;\r\n}\r\n\r\nconst intMaxValue = Math.pow(2, 31) - 1;\r\n@Component({\r\n\tselector: 'pp-dashboard-appointments',\r\n\ttemplateUrl: './dashboard-appointments.component.html',\r\n\tstyleUrls: ['./dashboard-appointments.component.scss'],\r\n})\r\nexport class DashboardAppointmentsComponent extends BaseViewComponent implements OnInit {\r\n\tprivate professionalsById: _.Dictionary;\r\n\r\n\tappointments: AppointmentsDto;\r\n\tnumAppointmentDays = 4;\r\n\r\n\tpracticeMode: boolean;\r\n\thasICalUrl: boolean;\r\n\r\n\tiCalUrls: ICalUrls;\r\n\r\n\tview: Day[];\r\n\r\n\tconstructor(\r\n\t\tcommon: CommonService,\r\n\t\tprivate router: Router,\r\n\t\tprivate dashboardService: DashboardService,\r\n\t\tprivate iCalDialog: ICalDialogService\r\n\t) {\r\n\t\tsuper(common);\r\n\r\n\t\tconst userConfig = common.config.config;\r\n\r\n\t\tconst profs = _.keyBy(userConfig.practiceProfessionals, (p) => p.id);\r\n\t\tthis.professionalsById = profs;\r\n\t\tthis.practiceMode = userConfig.isPractice;\r\n\r\n\t\tthis.hasICalUrl = !!userConfig.iCalUserUrl;\r\n\t\tif (this.hasICalUrl) {\r\n\t\t\tthis.iCalUrls = {\r\n\t\t\t\tguideUrl: userConfig.iCalGuideUrl,\r\n\t\t\t\tprofessionalUrl: userConfig.iCalUserUrl,\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.refresh();\r\n\t}\r\n\r\n\tshowICalDetails(_) {\r\n\t\tthis.iCalDialog.showDetails(this.iCalUrls);\r\n\t}\r\n\r\n\trefresh() {\r\n\t\tthis.loading = true;\r\n\t\tthis.dashboardService\r\n\t\t\t.getDashboardAppointments(this.numAppointmentDays)\r\n\t\t\t.pipe(tap((a) => (a.appointments = a.appointments.filter((a) => !a.isReserved))))\r\n\t\t\t.subscribe(\r\n\t\t\t\t(result) => this.handleDashboardData(result),\r\n\t\t\t\t(err) => this.handleError(err, 'loading appointments')\r\n\t\t\t);\r\n\t}\r\n\r\n\tgetPhoneNumbers(appointment: AppointmentDto): PhoneNumber[] {\r\n\t\tconst formatPhoneNumber = (p: CommAddressDisplayDto) => {\r\n\t\t\tlet parts = [];\r\n\t\t\tlet hasCallingCode;\r\n\t\t\tif (p.callingCode) {\r\n\t\t\t\tparts.push(`+${p.callingCode}`);\r\n\t\t\t\thasCallingCode = true;\r\n\t\t\t}\r\n\r\n\t\t\tif (p.areaCode) {\r\n\t\t\t\tlet areaCode = p.areaCode;\r\n\t\t\t\tif (areaCode[0] === '0' && hasCallingCode) {\r\n\t\t\t\t\tareaCode = areaCode.substr(1);\r\n\t\t\t\t}\r\n\t\t\t\tparts.push(areaCode);\r\n\t\t\t}\r\n\r\n\t\t\tif (p.number) {\r\n\t\t\t\tlet num = p.number;\r\n\t\t\t\tif (hasCallingCode && num[0] === '0') {\r\n\t\t\t\t\tnum = num.substr(1);\r\n\t\t\t\t}\r\n\t\t\t\tparts.push(num);\r\n\t\t\t}\r\n\r\n\t\t\tlet result = parts.join(' ');\r\n\t\t\tlet regex = /\\s/gi;\r\n\t\t\tlet numResult = result.replace(regex, '');\r\n\r\n\t\t\treturn {\r\n\t\t\t\tnumber: numResult,\r\n\t\t\t\ttext: result,\r\n\t\t\t};\r\n\t\t};\r\n\t\treturn (appointment.phoneNumbers || []).map((p) => formatPhoneNumber(p));\r\n\t}\r\n\r\n\tgetProfessional(id: number): string {\r\n\t\tconst prof = this.professionalsById[id];\r\n\t\tif (!prof) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\t\treturn prof.name;\r\n\t}\r\n\r\n\tonSelect(appointment: AppointmentDto) {\r\n\t\tthis.loading = true;\r\n\t\tthis.router.navigate(['/appointments', appointment.appointmentId]);\r\n\t}\r\n\r\n\tgetSessionNumber(appointment: AppointmentDto) {\r\n\t\tif (appointment.excludeAsSession) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\r\n\t\tlet maxStr = '';\r\n\t\tif (appointment.maxSessions < intMaxValue) {\r\n\t\t\tmaxStr = `(${appointment.maxSessions})`;\r\n\t\t}\r\n\r\n\t\treturn appointment.sessionNumber + maxStr;\r\n\t}\r\n\r\n\tisPrivate(appointment: AppointmentDto) {\r\n\t\treturn appointment.appointmentType === AppointmentType.Private;\r\n\t}\r\n\r\n\tisActivity(appointment: AppointmentDto) {\r\n\t\treturn appointment.appointmentType === AppointmentType.Activity;\r\n\t}\r\n\r\n\tisLeave(appointment: AppointmentDto) {\r\n\t\treturn appointment.appointmentType === AppointmentType.Leave;\r\n\t}\r\n\r\n\tcountNonLeaveAppointments(day: Day): number {\r\n\t\tconst count = day.appointments.filter((a) => a.appointmentType !== AppointmentType.Leave).length;\r\n\t\treturn count;\r\n\t}\r\n\r\n\tprivate handleDashboardData(data: AppointmentsDto) {\r\n\t\tthis.appointments = data;\r\n\t\tthis.loading = false;\r\n\r\n\t\tthis.view = this.buildApointmentsView(data);\r\n\t}\r\n\r\n\tprivate buildApointmentsView(appointments: AppointmentsDto): Day[] {\r\n\t\tconst appointmentsCollection = _.cloneDeep(appointments.appointments);\r\n\r\n\t\t// Find leave appointments that cross multiple days.\r\n\t\tconst multiDayLeaves = appointmentsCollection.filter((a) => {\r\n\t\t\tif (a.appointmentType !== AppointmentType.Leave) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tlet start = moment(a.dateTimeStart).startOf('day');\r\n\t\t\tlet end = moment(a.dateTimeEnd).startOf('day');\r\n\r\n\t\t\treturn !start.isSame(end, 'day');\r\n\t\t});\r\n\r\n\t\tconst startDate = this.dashboardService.getDashboardAppointmentsStartDate();\r\n\t\tconst endDate = this.dashboardService.getDashboardAppointmentsEndDate(this.numAppointmentDays);\r\n\r\n\t\t// Generate an appointment entry for each day across the date range.\r\n\t\tmultiDayLeaves.forEach((leaveAppointment) => {\r\n\t\t\t// Remvoe the original multi-day leave appointment.\r\n\t\t\tappointmentsCollection.splice(appointmentsCollection.indexOf(leaveAppointment), 1);\r\n\r\n\t\t\tlet rangeStartDate = moment(leaveAppointment.dateTimeStart);\r\n\t\t\tif (rangeStartDate.isBefore(startDate)) {\r\n\t\t\t\trangeStartDate = startDate;\r\n\t\t\t}\r\n\t\t\tlet rangeEndDate = moment(leaveAppointment.dateTimeEnd);\r\n\t\t\tif (rangeEndDate.isAfter(endDate)) {\r\n\t\t\t\trangeEndDate = endDate;\r\n\t\t\t}\r\n\r\n\t\t\tlet date = moment(rangeStartDate);\r\n\t\t\twhile (!date.isAfter(rangeEndDate)) {\r\n\t\t\t\tconst isFirstDate = date.isSame(rangeStartDate, 'date');\r\n\t\t\t\tconst isLastDate = date.isSame(rangeEndDate, 'date');\r\n\r\n\t\t\t\tconst cloned = _.cloneDeep(leaveAppointment);\r\n\t\t\t\tif (moment(cloned.dateTimeStart).isBefore(date, 'date')) {\r\n\t\t\t\t\t// tslint:disable-next-line:no-string-literal\r\n\t\t\t\t\tcloned['continuing'] = true;\r\n\t\t\t\t\tif (isFirstDate) {\r\n\t\t\t\t\t\t// tslint:disable-next-line:no-string-literal\r\n\t\t\t\t\t\tcloned['sinceDateTimeStart'] = cloned.dateTimeStart;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tcloned.dateTimeStart = date.toDate();\r\n\r\n\t\t\t\tif (moment(cloned.dateTimeEnd).startOf('day').isAfter(date)) {\r\n\t\t\t\t\tif (isLastDate) {\r\n\t\t\t\t\t\t// tslint:disable-next-line:no-string-literal\r\n\t\t\t\t\t\tcloned['toDateTimeEnd'] = cloned.dateTimeEnd;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcloned.dateTimeEnd = date.endOf('day').toDate();\r\n\t\t\t\t}\r\n\t\t\t\t// Add the cloned appointment.\r\n\t\t\t\tappointmentsCollection.push(cloned);\r\n\r\n\t\t\t\tdate.add(1, 'day').startOf('day');\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tconst keyFormat = 'YYYYMMDD';\r\n\t\tconst sorted = _.sortBy(appointmentsCollection, (a) => a.dateTimeStart);\r\n\t\tconst byDay = _.groupBy(sorted, (a) => moment(a.dateTimeStart).startOf('date').format(keyFormat));\r\n\r\n\t\tconst today = moment().startOf('date').clone(),\r\n\t\t\tnumDays = _.keys(byDay).length,\r\n\t\t\tdayNames = ['Today', 'Tomorrow'],\r\n\t\t\tresult = [] as Day[];\r\n\r\n\t\tfor (let i = 0; i < Math.max(appointments.numDays, numDays); i++) {\r\n\t\t\tconst date = moment(today).add(i, 'day').startOf('day'),\r\n\t\t\t\tday = {\r\n\t\t\t\t\tdate: date.toDate(),\r\n\t\t\t\t} as Day;\r\n\r\n\t\t\tresult.push(day);\r\n\t\t\tday.name = i < dayNames.length ? dayNames[i] : date.format('dddd');\r\n\r\n\t\t\tday.appointments = byDay[date.format(keyFormat)] || [];\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n","\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t

Appointments

\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\trefresh\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n\tAppointments in the next {{ numAppointmentDays }} days\r\n\t\r\n\r\n\t\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t

{{ day.name }}

\r\n\t\t\t\t\t 0\" class=\"day-count\">({{ countNonLeaveAppointments(day) }})\r\n\t\t\t\t\t{{ day.date | date: 'EEEE d MMM' }}\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\tContinuing\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t{{ appointment.dateTimeStart | date: 'shortTime' }} -\r\n\t\t\t\t\t\t\t\t\t{{ appointment.dateTimeEnd | date: 'shortTime' }}\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tsince {{ appointment['sinceDateTimeStart'] | date: 'dd-MMM-yyyy h:mm a ' }}\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\tuntil {{ appointment['toDateTimeEnd'] | date: 'dd-MMM-yyyy h:mm a ' }}\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
({{ appointment.bookingResourceName }})
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\tClient\r\n\t\t\t\t\t\t\t\t\t\t{{\r\n\t\t\t\t\t\t\t\t\t\t\tappointment.clientTimeStart | date: 'shortTime'\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t({{ appointment.clientTimeZoneName }})\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
{{ appointment.activityType }}
\r\n\t\t\t\t\t\t\t\t\t\t
{{ appointment.serviceType }}
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
Private apointment
\r\n\t\t\t\t\t\t\t\t\t
On leave
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\tperson\r\n\t\t\t\t\t\t\t\t
{{ getProfessional(appointment.professionalId) }}
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
{{ appointment.fileNumber }}
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t
{{ getSessionNumber(appointment) }}
\r\n\t\t\t\t\t\t\t\t\t\t\t
{{ appointment.clientNameOrDescription }}
\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t(Not a session)\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t{{ p.text }}\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t{{ appointment.customerName }}\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t{{ appointment.customerName }}\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
{{ appointment.privateAppointmentName }}
\r\n\t\t\t\t\t\t\t\t
{{ appointment.location }}
\r\n\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
{{ appointment.location }}
\r\n\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\tVideo URL\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t{{ appointment.zoomInfoUrl }}\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t

No appointments

\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\r\n\t
\r\n
\r\n","import { Component } from '@angular/core';\r\nimport { ConfigService } from '../services';\r\n\r\n@Component({\r\n\tselector: 'pp-professional-dashboard',\r\n\ttemplateUrl: './professional-dashboard.component.html',\r\n\tstyleUrls: ['./professional-dashboard.component.scss']\r\n})\r\nexport class ProfessionalDashboardComponent {\r\n\tisEmployee: boolean;\r\n\r\n\tconstructor(\r\n\t\tprivate config: ConfigService,\r\n\t) {\r\n\t\tthis.isEmployee = config.config.isEmployee;\r\n\t}\r\n}\r\n","\r\n\t\r\n\t\t

Dashboard

\r\n\t
\r\n\r\n\t
\r\n\t\t\r\n\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { ConfigService } from 'app/services';\r\n\r\n@Component({\r\n\tselector: 'pp-profile-navigator',\r\n\ttemplateUrl: './profile.component.html',\r\n\tstyleUrls: ['./profile.component.scss']\r\n})\r\n\r\nexport class ProfileNavigatorComponent implements OnInit {\r\n\t\r\n\tprofiles: string[];\r\n\tuseCredentials = false;\r\n\tuseRates = false;\r\n\tuseChecks = false;\r\n\tuseAttachments = false;\r\n\tuseNotifications = false;\r\n\tuseOffices = false;\r\n\tuseContact = false;\r\n\tuseWorkHS = false;\r\n\tuseInsurance = false;\r\n\r\n\tconstructor(\r\n\t\tprivate config: ConfigService,\r\n\t\tprivate router: Router,\r\n\t) {\t\r\n\t\tthis.useCredentials = config.systemPreferences.useProfileCredentials;\r\n\t\tthis.useRates = config.systemPreferences.useProfileRates;\r\n\t\tthis.useChecks = config.systemPreferences.useProfileChecks;\r\n\t\tthis.useAttachments = config.systemPreferences.useProfileAttachments;\r\n\t\tthis.useNotifications = config.systemPreferences.useProfileNotifications;\r\n\t\tthis.useWorkHS = config.systemPreferences.useProfileWorkHS;\r\n\t\tthis.useInsurance = config.systemPreferences.useProfileInsurance;\r\n\t\tthis.useOffices = config.systemPreferences.useProfileOffices;\r\n\t\tthis.useContact = config.systemPreferences.useProfileContact;\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tconst userConfig = this.config.config;\r\n\t\tthis.profiles = [];\r\n\t\tif (this.useCredentials) this.profiles.push('Credentials');\r\n\t\tif (this.useRates) this.profiles.push('Rates');\r\n\t\tif (this.useChecks) this.profiles.push('Checks');\r\n\t\tif (this.useAttachments) this.profiles.push('Attachments');\r\n\t\tif (this.useNotifications) this.profiles.push('Notifications');\r\n\t\tif (this.useWorkHS) this.profiles.push('Work Health & Safety');\r\n\t\tif (this.useInsurance) this.profiles.push('Insurance');\r\n\t\tif (this.useOffices) this.profiles.push('Offices');\r\n\t\tif (this.useContact) this.profiles.push('Contact');\r\n\t}\r\n\r\n\tgotoProfile(e: Event, profile: string) {\r\n\t\te.stopPropagation();\r\n\t\t\r\n\t\tswitch (profile){\r\n\t\t\tcase 'Credentials':\r\n\t\t\t\tthis.router.navigate(['profile/credentials']);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'Rates':\r\n\t\t\t\tthis.router.navigate(['profile/rates']);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'Checks':\r\n\t\t\t\tthis.router.navigate(['profile/checks']);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'Notifications':\r\n\t\t\t\tthis.router.navigate(['profile/notifications']);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'Attachments':\r\n\t\t\t\tthis.router.navigate(['profile/attachments']);\r\n\t\t\t\tbreak;\r\n\t\t\t\t\r\n\t\t\tcase 'Work Health & Safety':\r\n\t\t\t\tthis.router.navigate(['profile/workhealthsafety']);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'Insurance':\r\n\t\t\t\tthis.router.navigate(['profile/insurance']);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'Offices':\r\n\t\t\t\tthis.router.navigate(['profile/offices']);\r\n\t\t\t\tbreak;\r\n\t\r\n\t\t\tcase 'Contact':\r\n\t\t\t\tthis.router.navigate(['profile/contact']);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t}\r\n\t}\r\n}\r\n","
\r\n\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\tperm_identity\r\n\t\t\t\t
Profile
\r\n\t\t\t
\r\n\t\t
\r\n\t\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t{{ profile }}\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t\t\r\n\t
\r\n
\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { AddressDto, CityDto, FormUtils } from 'app/services';\r\nimport { IForm } from 'app/interfaces';\r\nimport { PostcodeService } from './search-postcode/search-postcode.service';\r\nimport { SearchPostcodeComponent } from './search-postcode/search-postcode.component';\r\n\r\n@Component({\r\n\tselector: 'pp-address-edit',\r\n\ttemplateUrl: './address-edit.component.html',\r\n\tstyleUrls: ['./address-edit.component.scss']\r\n})\r\nexport class AddressEditComponent implements OnInit, IForm {\r\n\r\n\t@Input() loaded: boolean;\r\n\t@Input() editDto: AddressDto;\r\n\t@Input() markChanged: any;\r\n\t@Input() saving: Subject;\r\n\t\r\n\tform: FormGroup;\r\n\t\r\n\tconstructor(\r\n\t\tprivate fb: FormBuilder,\r\n\t\tprivate servicePostcode: PostcodeService,\r\n\t) {}\r\n\t\r\n\tngOnInit() {\r\n\t\tthis.buildForm();\r\n\r\n\t\tvar a = this.editDto;\r\n\t\tthis.form.patchValue({\r\n\t\t\taddressLine1: a.addressLine1,\r\n\t\t\taddressLine2: a.addressLine2,\r\n\t\t\taddressLine3: a.addressLine3,\r\n\t\t\tsuburb: a.suburb,\r\n\t\t\tcity: a.city,\r\n\t\t\tpostcode: a.postcode,\r\n\t\t\tstate: a.state,\r\n\t\t\tcountry: a.country\r\n\t\t});\r\n\t\t\r\n\t\tthis.saving.subscribe(v => { \r\n\t\t\tFormUtils.applyChanges(this.form, this.editDto);\r\n\t\t})\r\n\t}\r\n\r\n\tgetForm(): FormGroup {\r\n\t\treturn this.form;\r\n\t}\r\n\r\n\topenLookup = () => {\r\n\t\tthis.servicePostcode.findPostcode(this.handleSelection, \r\n\t\t\tthis.editDto.country,\r\n\t\t\tSearchPostcodeComponent);\r\n\t}\r\n\r\n\thandleSelection = (selection: CityDto) => {\r\n\t\tthis.form.controls['suburb'].setValue(selection.suburb);\r\n\t\tthis.form.controls['city'].setValue(selection.city);\r\n\t\tthis.form.controls['postcode'].setValue(selection.postcode);\r\n\t\tthis.form.controls['state'].setValue(selection.state);\r\n\t\tthis.form.controls['country'].setValue(selection.country);\r\n\t\tthis.editDto.cityId = selection.id;\r\n\t\tthis.editDto.isSuburb = selection.isSuburb;\r\n\t\tthis.editDto.isState = selection.isState;\r\n\t}\r\n\r\n\tprivate buildForm() {\r\n\t\tthis.form = this.fb.group({\r\n\t\t\taddressLine1: [],\r\n\t\t\taddressLine2: [],\r\n\t\t\taddressLine3: [],\r\n\t\t\tsuburb: [],\r\n\t\t\tcity: [],\r\n\t\t\tpostcode: [],\r\n\t\t\tstate: [],\r\n\t\t\tcountry: [],\r\n\t\t});\r\n\t}\r\n\r\n\tisValid(): boolean {\r\n\t\treturn true;\r\n\t}\r\n}\r\n","
\r\n\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\t \r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n
\r\n\r\n","import { Component, OnInit, Inject, Input } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { EMPTY } from 'rxjs';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { finalize, catchError } from 'rxjs/operators';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { PostcodeService } from './search-postcode.service';\r\nimport {\r\n\tCountriesDto,\r\n\tCountryLookupDto,\r\n\tCitiesDto,\r\n\tCityDto,\r\n\tCitiesLookupDto,\r\n\tConfigService,\r\n} from 'app/services';\r\n\r\n\r\n@Component({\r\n\tselector: 'pp-search-postcode',\r\n\ttemplateUrl: './search-postcode.component.html',\r\n\tstyleUrls: ['./search-postcode.component.scss']\r\n})\r\nexport class SearchPostcodeComponent implements OnInit {\r\n\t\r\n\thandleSelection: Function\r\n\tloading: boolean;\r\n\tform: FormGroup;\r\n\tcountry: string\r\n\tcountries: CountryLookupDto[];\r\n\tcities: CityDto[];\r\n\tsearchDto: CitiesLookupDto;\r\n\tisSuburb: boolean = false;\r\n\tisState: boolean = true;\r\n\t\r\n\tconstructor(\r\n\t\tprivate fb: FormBuilder,\r\n\t\tpublic dialogRef: MatDialogRef,\r\n\t\tpublic service: PostcodeService,\r\n\t\tpublic config: ConfigService,\r\n\t\tprivate sanitization:DomSanitizer,\r\n\t\t@Inject(MAT_DIALOG_DATA)\r\n\t\tpublic data: {\r\n\t\t\thandleSelection: any,\r\n\t\t\tcountry: string\r\n\t\t}\r\n\t) {\r\n\t\tthis.handleSelection = data.handleSelection;\r\n\t\tthis.country = data.country;\r\n\t\tthis.searchDto = new CitiesLookupDto();\r\n\t}\r\n\t\r\n\tngOnInit() {\r\n\t\tthis.loading = true;\r\n\t\tthis.buildForm();\r\n\t\tthis.form.patchValue({\r\n\t\t\tcountryId: this.searchDto.countryId\r\n\t\t})\r\n\t\tthis.display();\r\n\t}\r\n\r\n\tisSuburbVisible() {\r\n\t\treturn this.sanitization.bypassSecurityTrustStyle(this.isSuburb ? '' : 'display:none');\r\n\t}\r\n\r\n\tisStateVisible() {\r\n\t\treturn this.sanitization.bypassSecurityTrustStyle(this.isState ? '' : 'display:none');\r\n\t}\r\n\r\n\tdisplay() {\r\n\t\tthis.service\r\n\t\t\t.getCountries()\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError((err) => {\r\n\t\t\t\t\tconsole.log(err, 'loading countries');\r\n\t\t\t\t\treturn EMPTY;\r\n\t\t\t\t}),\r\n\t\t\t\tfinalize(() => (this.loading = false))\r\n\t\t\t)\r\n\t\t\t.subscribe(\r\n\t\t\t\t(result) => this.handleCountriesResult(result),\r\n\t\t\t\t(err) => console.log(err, 'running countries query')\r\n\t\t);\r\n\t}\r\n\r\n\tprivate handleCountriesResult(result: CountriesDto): void {\r\n\t\tthis.countries = result.countries;\r\n\r\n\t\tif (this.country != null && this.country.length>0)\r\n\t\t\tthis.searchDto.countryId = this.countries.find(c => c.name === this.country).id;\r\n\r\n\t\tif (this.searchDto.countryId == null)\r\n\t\t\tthis.searchDto.countryId = this.config.systemPreferences.defaultCountryId;\r\n\r\n\t\tthis.form.patchValue({\r\n\t\t\tcountryId: this.searchDto.countryId\r\n\t\t});\r\n\t}\r\n\r\n\tcancel() {\r\n\t\tthis.dialogRef.close();\r\n\t}\r\n\r\n\tprivate buildForm() {\r\n\t\tthis.form = this.fb.group({\r\n\t\t\tcountryId: ['', Validators.required],\r\n\t\t\tpostcode: [],\r\n\t\t\tcity: []\r\n\t\t});\r\n\t}\r\n\r\n\tsearch = () => {\r\n\t\tthis.loading = true;\r\n\t\tthis.searchDto.city = this.form.controls['city'].value;\r\n\t\tthis.searchDto.postcode = this.form.controls['postcode'].value;\r\n\t\tthis.searchDto.countryId = this.form.controls['countryId'].value;\r\n\r\n\t\tif ((this.searchDto.city == null || this.searchDto.city.length == 0)\r\n\t\t\t&& (this.searchDto.postcode == null || this.searchDto.postcode.length == 0)) {\r\n\t\t\tthis.loading = false\r\n\t\t\talert(\"Either City or Postcode must have a value\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.service\r\n\t\t\t.lookupCities(this.searchDto)\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError((err) => {\r\n\t\t\t\t\tconsole.log(err, 'loading cities');\r\n\t\t\t\t\treturn EMPTY;\r\n\t\t\t\t}),\r\n\t\t\t\tfinalize(() => (this.loading = false))\r\n\t\t\t)\r\n\t\t\t.subscribe(\r\n\t\t\t\t(result) => this.handleCitiesResult(result),\r\n\t\t\t\t(err) => console.log(err, 'running cities query')\r\n\t\t);\r\n\t}\r\n\r\n\tprivate handleCitiesResult(result: CitiesDto): void {\r\n\t\tthis.cities = result.cities;\r\n\r\n\t\tif (this.cities.length>0){\r\n\t\t\tthis.isSuburb = this.cities[0].isSuburb;\r\n\t\t\tthis.isState = this.cities[0].isState;\r\n\t\t}\r\n\t}\r\n\r\n\tselect(selection: CityDto) {\r\n\t\tthis.handleSelection(selection);\r\n\t\tthis.cancel();\r\n\t}\r\n}\r\n","
\r\n\t\r\n\t\r\n\t
\r\n\t\t\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
PostcodeSuburbCityState
{{ ent.postcode }}{{ ent.suburb }}{{ ent.city }}{{ ent.stateShortName }}
\r\n\t\t
\r\n\r\n\t
\r\n\t\r\n\r\n\t\r\n\t\r\n
","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { MediaObserver } from '@angular/flex-layout';\r\nimport * as _ from 'lodash';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { BaseService } from 'app/services/base-service';\r\nimport {\r\n\tCountriesDto,\r\n\tCitiesLookupDto,\r\n\tCitiesDto,\r\n\tDialogResult,\r\n\tCommonService,\r\n} from 'app/services';\r\n\r\nexport class PostcodeSelection {\r\n\tcityId: number\r\n}\r\n\r\n@Injectable()\r\nexport class PostcodeService extends BaseService {\r\n\r\n\tconstructor(common: CommonService, \r\n\t\tprivate matDialog: MatDialog, \r\n\t\tprivate media: MediaObserver,\r\n\t\t) {\r\n\t\tsuper(common);\r\n\t}\r\n\r\n\tgetCountries(): Observable {\r\n\t\treturn this.crud.loadWithGet('api/addressCountries');\r\n\t}\r\n\t\r\n\tlookupCities(search: CitiesLookupDto): Observable {\r\n\t\treturn this.crud.loadWithPost('api/addressCities', search);\r\n\t}\r\n\r\n\tfindPostcode (handleSelection: Function, country: string, comp: any): Observable> {\r\n\t\tconst gtSm = this.media.isActive('gt-sm');\r\n\r\n\t\treturn this.matDialog\r\n\t\t\t.open(comp, {\r\n\t\t\t\twidth: gtSm ? '850px' : '95%',\r\n\t\t\t\theight: gtSm ? '80%' : '95%',\r\n\t\t\t\tdata: {\r\n\t\t\t\t\thandleSelection: handleSelection,\r\n\t\t\t\t\tcountry: country\r\n\t\t\t\t},\r\n\t\t\t})\r\n\t\t\t.afterClosed();\r\n\t}\r\n}\r\n","\r\nimport {switchMap, distinctUntilChanged, debounceTime, filter} from 'rxjs/operators';\r\nimport { Component, OnInit, OnDestroy, Output, EventEmitter, ViewChild } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\r\nimport { Observable , Subscription } from 'rxjs';\r\n\r\nimport {\r\n\tGlobalSearchResultItemDto,\r\n\tItemType\r\n} from 'app/services';\r\n\r\nimport { CasesSearchService } from './cases-search.service';\r\n\r\nimport { SearchFilterComponent } from 'app/shared/search-filter/search-filter.component';\r\nimport { TextComponent } from 'app/shared/forms/text.component';\r\n\r\n@Component({\r\n\tselector: 'pp-case-search',\r\n\ttemplateUrl: './case-search.component.html',\r\n\tstyleUrls: ['./case-search.component.scss']\r\n})\r\nexport class CaseSearchComponent implements OnInit, OnDestroy {\r\n\tprivate subSearch: Subscription;\r\n\r\n\t// Template properties\r\n\tform: UntypedFormGroup;\r\n\titems: Observable;\r\n\r\n\t@ViewChild('filter', { static: true }) filter: SearchFilterComponent;\r\n\t@ViewChild('search', { static: true }) search: TextComponent;\r\n\r\n\t@Output() resultSelected = new EventEmitter();\r\n\r\n\tconstructor(\r\n\t\tprivate fb: UntypedFormBuilder,\r\n\t\tprivate router: Router,\r\n\t\tpublic searchService: CasesSearchService,\r\n\t) {\r\n\t\tthis.buildForm();\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tconst svc = this.searchService;\r\n\t\tthis.form.patchValue({\r\n\t\t\tsearchText: svc.searchText,\r\n\t\t\tdateFrom: svc.dateFrom,\r\n\t\t\tdateTo: svc.dateTo,\r\n\t\t\topenOnly: svc.openOnly,\r\n\t\t\tshowAll: svc.showAll,\r\n\t\t});\r\n\r\n\t\tthis.subSearch = this.form.valueChanges.pipe(\r\n\t\t\t\t\t\tdebounceTime(300),\r\n\t\t\t\t\t\tdistinctUntilChanged(),\r\n\t\t\t\t\t\tswitchMap(v => {\r\n\t\t\t\t\t\t\treturn svc.search(v.searchText, v.showAll, v.dateFrom, v.dateTo, v.openOnly, true);\r\n\t\t\t\t\t\t}),).subscribe();\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tif (this.subSearch) {\r\n\t\t\tthis.subSearch.unsubscribe();\r\n\t\t}\r\n\t}\r\n\r\n\tsetFocus() {\r\n\t\tthis.search.setFocus(); \r\n\t}\r\n\r\n\tonSelect(item: GlobalSearchResultItemDto) {\r\n\t\tswitch (item.itemType) {\r\n\t\t\tcase ItemType.ActivityHeader:\r\n\t\t\t\tconst inCase = /\\/cases\\/[0-9]+/.test(this.router.url);\r\n\t\t\t\tlet additional;\r\n\t\t\t\tif (inCase) {\r\n\t\t\t\t\tadditional = { replaceUrl: true };\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.searchService.setSearching(true);\r\n\t\t\t\tthis.router.navigate(['/cases', item.id], additional)\r\n\t\t\t\t\t.then(() => {\r\n\t\t\t\t\t\tthis.resultSelected.emit();\r\n\t\t\t\t\t\tthis.searchService.setSearching(false);\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch(() => this.searchService.setSearching(false));\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate buildForm() {\r\n\t\tthis.form = this.fb.group({\r\n\t\t\tsearchText: undefined,\r\n\t\t\tdateFrom: undefined,\r\n\t\t\tdateTo: undefined,\r\n\t\t\topenOnly: undefined,\r\n\t\t\tshowAll: undefined,\r\n\t\t});\r\n\t}\r\n}\r\n","
\r\n\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n\r\n\t\r\n\t\t\r\n\t
\r\n\r\n\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\r\n\t\r\n","\r\nimport { of, Observable, BehaviorSubject } from 'rxjs';\r\nimport { finalize, map, tap } from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\n\r\nimport {\r\n\tGlobalSearchResultDto,\r\n\tGlobalSearchResultItemDto,\r\n\tGlobalCaseSearchParams,\r\n\tCommonService,\r\n\tAuthenticationService,\r\n} from 'app/services';\r\n\r\nimport {\r\n\tBaseService\r\n} from 'app/services/base-service';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class CasesSearchService extends BaseService {\r\n\tpublic searchText: string = null;\r\n\tpublic dateFrom?: Date = null;\r\n\tpublic dateTo?: Date = null;\r\n\tpublic openOnly = false;\r\n\tpublic showAll = false;\r\n\r\n\tpublic searching = new BehaviorSubject(false);\r\n\tpublic canShowMore = new BehaviorSubject(false);\r\n\r\n\tpublic lastResult: GlobalSearchResultDto;\r\n\r\n\tconstructor(\r\n\t\tcommon: CommonService,\r\n\t\tprivate authenticationService: AuthenticationService) {\r\n\t\tsuper(common);\r\n\r\n\t\tthis.authenticationService.isAuthenticated$.subscribe(isAuth => {\r\n\t\t\tif (!isAuth) {\r\n\t\t\t\tthis.clearSearch();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tsearch(\r\n\t\tsearchText: string,\r\n\t\tall?: boolean,\r\n\t\tdateFrom?: Date,\r\n\t\tdateTo?: Date,\r\n\t\topenOnly?: boolean,\r\n\t\tsaveResults: boolean = false): Observable {\r\n\t\tconst params = {\r\n\t\t\tsearchText,\r\n\t\t\tshowAll: !!all,\r\n\t\t\tdateFrom: dateFrom ? dateFrom : null,\r\n\t\t\tdateTo: dateTo ? dateTo : null,\r\n\t\t\topenOnly: !!openOnly\r\n\t\t};\r\n\r\n\t\t//Set a minimum text search length\r\n\t\tvar len = !searchText? 0 : searchText.trim().length;\r\n\t\tif (len < 3) len = 0;\r\n\r\n\t\t// Don't search with no parameters.\r\n\t\tif (len == 0 && !all && !dateFrom && !dateTo && !openOnly) {\r\n\t\t\tthis.lastResult = undefined;\r\n\t\t\treturn of([]);\r\n\t\t}\r\n\r\n\t\t// Save the settings for the filter on this service.\r\n\t\tthis.searchText = params.searchText;\r\n\t\tthis.dateFrom = params.dateFrom;\r\n\t\tthis.dateTo = params.dateTo;\r\n\t\tthis.openOnly = params.openOnly;\r\n\t\tthis.showAll = params.showAll;\r\n\r\n\t\tthis.setSearching(true);\r\n\r\n\t\treturn this.crud.loadWithPost('api/globalSearch/cases', params).pipe(\r\n\t\t\ttap(r => {\r\n\t\t\t\tif (saveResults) {\r\n\t\t\t\t\tthis.lastResult = r;\r\n\t\t\t\t}\r\n\t\t\t}),\r\n\t\t\tmap(r => r.items),\r\n\t\t\tfinalize(() => {\r\n\t\t\t\tthis.setSearching(false);\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tsetSearching(state: boolean) {\r\n\t\tthis.searching.next(state);\r\n\t}\r\n\r\n\tprivate clearSearch() {\r\n\t\tthis.searchText = undefined;\r\n\t\tthis.dateFrom = undefined;\r\n\t\tthis.dateTo = undefined;\r\n\t\tthis.openOnly = false;\r\n\t\tthis.showAll = false;\r\n\r\n\t\tthis.lastResult = undefined;\r\n\t}\r\n}\r\n","\r\nimport {switchMap, distinctUntilChanged, debounceTime} from 'rxjs/operators';\r\nimport { Component, OnInit, OnDestroy, Output, EventEmitter, ViewChild } from '@angular/core';\r\nimport { DecimalPipe } from '@angular/common';\r\nimport { Router } from '@angular/router';\r\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\r\nimport { Observable , Subscription } from 'rxjs';\r\n\r\nimport {\r\n\tGlobalSearchResultItemDto\r\n} from 'app/services';\r\n\r\nimport { SearchFilterComponent } from 'app/shared/search-filter/search-filter.component';\r\nimport { TextComponent } from 'app/shared/forms/text.component';\r\nimport { InvoicesSearchService } from './invoices-search.service';\r\n\r\n@Component({\r\n\tselector: 'pp-invoice-search',\r\n\ttemplateUrl: './invoice-search.component.html',\r\n\tstyleUrls: ['./invoice-search.component.scss']\r\n})\r\nexport class InvoiceSearchComponent implements OnInit, OnDestroy {\r\n\tprivate subSearch: Subscription;\r\n\r\n\t// Template properties\r\n\tform: UntypedFormGroup;\r\n\titems: Observable;\r\n\r\n\t@ViewChild('filter', { static: true }) filter: SearchFilterComponent;\r\n\t@ViewChild('search', { static: true }) search: TextComponent;\r\n\r\n\t@Output() resultSelected = new EventEmitter();\r\n\r\n\tconstructor(\r\n\t\tprivate fb: UntypedFormBuilder,\r\n\t\tprivate router: Router,\r\n\t\tprivate decimalPipe: DecimalPipe,\r\n\t\tpublic searchService: InvoicesSearchService,\r\n\t) {\r\n\t\tthis.buildForm();\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tconst svc = this.searchService;\r\n\t\tthis.form.patchValue({\r\n\t\t\tsearchText: svc.searchText,\r\n\t\t\tdateFrom: svc.dateFrom,\r\n\t\t\tdateTo: svc.dateTo,\r\n\t\t\topenOnly: svc.activeOnly,\r\n\t\t\tshowAll: svc.showAll\r\n\t\t});\r\n\r\n\t\tthis.subSearch = this.form.valueChanges.pipe(\r\n\t\t\t\t\t\tdebounceTime(300),\r\n\t\t\t\t\t\tdistinctUntilChanged(),\r\n\t\t\t\t\t\tswitchMap(v => {\r\n\t\t\t\t\t\t\treturn svc.search(v.searchText, v.showAll, v.dateFrom, v.dateTo, v.openOnly, true);\r\n\t\t\t\t\t\t}),).subscribe();\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tif (this.subSearch) {\r\n\t\t\tthis.subSearch.unsubscribe();\r\n\t\t}\r\n\t}\r\n\r\n\tonSelect(item: GlobalSearchResultItemDto) {\r\n\t\tconst inInvoice = /\\/invoices\\/[0-9]+/.test(this.router.url);\r\n\t\tlet additional;\r\n\t\tif (inInvoice) {\r\n\t\t\tadditional = { replaceUrl: true };\r\n\t\t}\r\n\r\n\t\tthis.searchService.setSearching(true);\r\n\t\tthis.router.navigate(['/invoices', item.id], additional)\r\n\t\t\t.then(() => {\r\n\t\t\t\tthis.resultSelected.emit();\r\n\t\t\t\tthis.searchService.setSearching(false);\r\n\t\t\t})\r\n\t\t\t.catch(() => this.searchService.setSearching(false));\r\n\t}\r\n\r\n\tsetFocus() {\r\n\t\tthis.search.setFocus();\r\n\t}\r\n\r\n\tformatAmount(amount: number) {\r\n\t\treturn this.decimalPipe.transform(amount, '1.2');\r\n\t}\r\n\r\n\tprivate buildForm() {\r\n\t\tthis.form = this.fb.group({\r\n\t\t\tsearchText: undefined,\r\n\t\t\tdateFrom: undefined,\r\n\t\t\tdateTo: undefined,\r\n\t\t\topenOnly: undefined,\r\n\t\t\tshowAll: undefined\r\n\t\t});\r\n\t}\r\n}\r\n","
\r\n\t
\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\r\n\r\n\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
{{ result.number }}
\r\n\t\t\t\t\t\t
{{ result.professional }}
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\tInvoice date: {{ result.openedDate | date }}\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
{{ formatAmount(result.netAmount) }}
\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
{{ result.reference }}
\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\tReleased: {{ result.releasedDate | date }}\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\tAccepted: {{ result.approvedDate | date }}\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\tApproved: {{ result.paidDate | date }}\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\tInvoice date: {{ result.openedDate | date }}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\tReleased: {{ result.releasedDate | date }}\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\tAccepted: {{ result.approvedDate | date }}\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\tApproved: {{ result.paidDate | date }}\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\r\n\r\n\t\r\n\r\n","\r\nimport { of, Observable, BehaviorSubject } from 'rxjs';\r\n\r\nimport { finalize, map, tap } from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport * as moment from 'moment';\r\n\r\nimport {\r\n\tGlobalSearchResultDto,\r\n\tGlobalSearchResultItemDto,\r\n\tGlobalInvoiceSearchParams,\r\n\tCommonService,\r\n\tAuthenticationService,\r\n} from 'app/services';\r\n\r\nimport {\r\n\tBaseService\r\n} from 'app/services/base-service';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class InvoicesSearchService extends BaseService {\r\n\tpublic searchText: string = null;\r\n\tpublic dateFrom?: Date = null;\r\n\tpublic dateTo?: Date = null;\r\n\tpublic activeOnly = false;\r\n\tpublic showAll = false;\r\n\r\n\tpublic searching = new BehaviorSubject(false);\r\n\tpublic canShowMore = new BehaviorSubject(false);\r\n\r\n\tpublic lastResult: GlobalSearchResultDto;\r\n\r\n\tconstructor(\r\n\t\tcommon: CommonService,\r\n\t\tprivate authenticationService: AuthenticationService,\r\n\t) {\r\n\t\tsuper(common);\r\n\r\n\t\tthis.authenticationService.isAuthenticated$.subscribe(isAuth => {\r\n\t\t\tif (!isAuth) {\r\n\t\t\t\tthis.clearSearch();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.defaultDates();\r\n\t}\r\n\r\n\tsearch(\r\n\t\tsearchText: string,\r\n\t\tall?: boolean,\r\n\t\tdateFrom?: Date,\r\n\t\tdateTo?: Date,\r\n\t\tactiveOnly?: boolean,\r\n\t\tsaveResults: boolean = false): Observable {\r\n\t\tconst params = {\r\n\t\t\tsearchText,\r\n\t\t\tshowAll: !!all,\r\n\t\t\tdateFrom: dateFrom ? dateFrom : null,\r\n\t\t\tdateTo: dateTo ? dateTo : null,\r\n\t\t\tactiveOnly: !!activeOnly\r\n\t\t};\r\n\r\n\t\t// Don't search with no parameters.\r\n\t\tif (!searchText && !all && !dateFrom && !dateTo && !activeOnly) {\r\n\t\t\tthis.lastResult = undefined;\r\n\t\t\treturn of([]);\r\n\t\t}\r\n\r\n\t\t// Save the settings for the filter on this service.\r\n\t\tthis.searchText = params.searchText;\r\n\t\tthis.dateFrom = params.dateFrom;\r\n\t\tthis.dateTo = params.dateTo;\r\n\t\tthis.activeOnly = params.activeOnly;\r\n\t\tthis.showAll = params.showAll;\r\n\r\n\t\tthis.setSearching(true);\r\n\r\n\t\treturn this.crud.loadWithPost('api/globalSearch/invoices', params).pipe(\r\n\t\t\ttap(r => {\r\n\t\t\t\tif (saveResults) {\r\n\t\t\t\t\tthis.lastResult = r;\r\n\t\t\t\t}\r\n\t\t\t}),\r\n\t\t\tmap(r => r.items),\r\n\t\t\tfinalize(() => this.setSearching(false)));\r\n\t}\r\n\r\n\tsetSearching(state: boolean) {\r\n\t\tthis.searching.next(state);\r\n\t}\r\n\r\n\tprivate clearSearch() {\r\n\t\tthis.searchText = undefined;\r\n\t\tthis.dateFrom = undefined;\r\n\t\tthis.dateTo = undefined;\r\n\t\tthis.activeOnly = false;\r\n\t\tthis.showAll = false;\r\n\r\n\t\tthis.lastResult = undefined;\r\n\r\n\t\tthis.defaultDates();\r\n\t}\r\n\r\n\tprivate defaultDates() {\r\n\t\t// Default in dates\r\n\t\tlet defaultStart = moment().startOf('month').add(-1, 'months');\r\n\t\tlet defaultEnd = defaultStart.clone().add(1, 'month').endOf('month');\r\n\r\n\t\tthis.dateFrom = defaultStart.toDate();\r\n\t\tthis.dateTo = defaultEnd.toDate();\r\n\t}\r\n}\r\n","import { Component, AfterViewInit, ViewChild } from '@angular/core';\r\nimport {\r\n\tMatDialogRef,\r\n} from '@angular/material/dialog';\r\n\r\nimport { CaseSearchComponent } from './case-search/case-search.component';\r\nimport { InvoiceSearchComponent } from './invoice-search/invoice-search.component';\r\nimport { SearchStateService, ConfigService } from 'app/services';\r\nimport { MatTabChangeEvent } from '@angular/material/tabs';\r\n\r\nconst TAB_CASES = 'Cases';\r\nconst TAB_INVOICES = 'Invoices';\r\n\r\n@Component({\r\n\ttemplateUrl: './search.component.html',\r\n\tstyleUrls: ['./search.component.scss']\r\n})\r\nexport class SearchComponent implements AfterViewInit {\r\n\tisEmployee: boolean;\r\n\r\n\tselectedTabIndex = 0;\r\n\r\n\t@ViewChild('cases') cases: CaseSearchComponent;\r\n\t@ViewChild('invoices') invoices: InvoiceSearchComponent;\r\n\r\n\tconstructor(\r\n\t\tpublic dialogRef: MatDialogRef,\r\n\t\tprivate searchState: SearchStateService,\r\n\t\tprivate config: ConfigService,\r\n\t) {\r\n\t\tthis.isEmployee = config.config.isEmployee;\r\n\r\n\t\tif (searchState.lastState) {\r\n\t\t\tthis.selectedTab = searchState.lastState;\r\n\r\n\t\t\tif (this.isEmployee && this.selectedTab === TAB_INVOICES) {\r\n\t\t\t\tthis.selectedTab = TAB_CASES;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.selectCases();\r\n\t\t}\r\n\t}\r\n\r\n\tget selectedTab() {\r\n\t\tswitch (this.selectedTabIndex) {\r\n\t\t\tcase 0:\r\n\t\t\t\treturn TAB_CASES;\r\n\t\t\tcase 1:\r\n\t\t\t\treturn TAB_INVOICES;\r\n\t\t}\r\n\t}\r\n\r\n\tset selectedTab(value: string) {\r\n\t\tswitch (value) {\r\n\t\t\tcase TAB_CASES:\r\n\t\t\t\tthis.selectedTabIndex = 0;\r\n\t\t\t\tbreak;\r\n\t\t\tcase TAB_INVOICES:\r\n\t\t\t\tthis.selectedTabIndex = 1;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tngAfterViewInit() {\r\n\t\tthis.setFocus();\r\n\t}\r\n\r\n\tresultSelected() {\r\n\t\tthis.dialogRef.close();\r\n\t}\r\n\r\n\tselectCases() {\r\n\t\tthis.selectedTab = TAB_CASES;\r\n\t\tthis.searchState.lastState = this.selectedTab;\r\n\t\tthis.setFocus();\r\n\t}\r\n\r\n\tselectInvoices() {\r\n\t\tthis.selectedTab = TAB_INVOICES;\r\n\t\tthis.searchState.lastState = this.selectedTab;\r\n\t}\r\n\r\n\tonSelectedTabChange(event: MatTabChangeEvent) {\r\n\t\tthis.selectedTabIndex = event.index;\r\n\r\n\t\tswitch (this.selectedTabIndex) {\r\n\t\t\tcase 0:\r\n\t\t\t\tthis.selectCases();\r\n\t\t\t\tbreak;\r\n\t\t\tcase 1:\r\n\t\t\t\tthis.selectInvoices();\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis.setFocus();\r\n\t}\r\n\r\n\tsetFocus() {\r\n\t\tsetTimeout(() => {\r\n\t\t\tswitch (this.selectedTab) {\r\n\t\t\t\tcase TAB_CASES:\r\n\t\t\t\t\tthis.cases.setFocus();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase TAB_INVOICES:\r\n\t\t\t\t\tthis.invoices.setFocus();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//Readded this code\r\n\tget isInvoices() {\r\n\t\treturn this.selectedTab === TAB_INVOICES;\r\n\t}\r\n\r\n\tget isCases() {\r\n\t\treturn this.selectedTab === TAB_CASES;\r\n\t}\r\n}\r\n","
\r\n\t
\r\n\t\t

Search

\r\n\t\t\r\n\t\t\r\n\t\t\tclose\r\n\t\t\r\n\t
\r\n\t\r\n\t\r\n\r\n\t\r\n\r\n\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n
\r\n","import { Injectable, PipeTransform } from '@angular/core';\r\nimport { DecimalPipe } from '@angular/common';\r\nimport { GridOptions, ColDef } from 'ag-grid-community/main';\r\nimport * as moment from 'moment';\r\nimport { AuthenticationService } from './authentication.service';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class AgGridService {\r\n\tconstructor(private decimalPipe: DecimalPipe, private auth: AuthenticationService) { }\r\n\r\n\tpublic renderDate(field: string, row: any) {\r\n\t\tconst m = moment(row.data[field]);\r\n\t\tif (!m.isValid()) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\t\treturn m.format('DD-MMM-YYYY');\r\n\t}\r\n\r\n\tpublic renderDayDate(field: string, row: any) {\r\n\t\tconst m = moment(row.data[field]);\r\n\t\tif (!m.isValid()) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\t\treturn m.format('ddd DD-MMM-YYYY');\r\n\t}\r\n\r\n\tpublic renderDateTime(field: string, row: any) {\r\n\t\tconst m = moment(row.data[field]);\r\n\t\tif (!m.isValid()) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\t\treturn m.format('DD-MMM-YYYY h:mm a');\r\n\t}\r\n\r\n\tpublic renderTime(field: string, row: any) {\r\n\t\tconst m = moment(row.data[field]);\r\n\t\tif (!m.isValid()) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\t\treturn m.format('h:mm a');\r\n\t}\r\n\r\n\tpublic renderDayDateTime(field: string, row: any) {\r\n\t\tconst m = moment(row.data[field]);\r\n\t\tif (!m.isValid()) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\t\treturn m.format('ddd DD-MMM-YYYY h:mm a');\r\n\t}\r\n\r\n\tpublic renderBool(field: string, row: any) {\r\n\t\treturn row.data[field] ? 'Yes' : 'No';\r\n\t}\r\n\r\n\tpublic renderBoolYesOnly(field: string, row: any) {\r\n\t\treturn row.data[field] ? 'Yes' : '';\r\n\t}\r\n\r\n\tpublic renderBoolNoOnly(field: string, row: any) {\r\n\t\treturn row.data[field] ? '' : 'No';\r\n\t}\r\n\r\n\tpublic renderWithPipe(field: string, pipe: PipeTransform, row: any, ...pipeArgs) {\r\n\t\tconst fieldVal = row.data[field];\r\n\t\treturn pipe.transform(fieldVal, pipeArgs);\r\n\t}\r\n\r\n\tpublic renderNumber(field: string, decimalPipeSpec: string, row: any): string {\r\n\t\tconst fieldVal = row.data[field];\r\n\t\treturn this.decimalPipe.transform(fieldVal, decimalPipeSpec || '1.0');\r\n\t}\r\n\r\n\tpublic renderBlank(): string {\r\n\t\treturn '';\r\n\t}\r\n\r\n\tpublic makeDateColumn(header: string, field: string, opts: {} = null) {\r\n\t\tconst colDef = {\r\n\t\t\theaderName: header,\r\n\t\t\tcellRenderer: this.renderDate.bind(this, field),\r\n\t\t\tfield,\r\n\t\t\twidth: 110,\r\n\t\t\tminWidth: 110,\r\n\t\t\tmaxWidth: 110\r\n\t\t};\r\n\t\treturn this.applyOpts(colDef, opts);\r\n\t}\r\n\r\n\tpublic makeDateTimeColumn(header: string, field: string, opts: {} = null) {\r\n\t\tconst colDef = {\r\n\t\t\theaderName: header,\r\n\t\t\tcellRenderer: this.renderDateTime.bind(this, field),\r\n\t\t\tfield,\r\n\t\t\twidth: 150,\r\n\t\t\tminWidth: 150,\r\n\t\t\tmaxWidth: 150\r\n\t\t};\r\n\t\treturn this.applyOpts(colDef, opts);\r\n\t}\r\n\r\n\tpublic makeTimeColumn(header: string, field: string, opts: {} = null) {\r\n\t\tconst colDef = {\r\n\t\t\theaderName: header,\r\n\t\t\tcellRenderer: this.renderTime.bind(this, field),\r\n\t\t\tfield,\r\n\t\t\twidth: 100,\r\n\t\t\tminWidth: 100,\r\n\t\t\tmaxWidth: 100\r\n\t\t};\r\n\t\treturn this.applyOpts(colDef, opts);\r\n\t}\r\n\r\n\tpublic makeDayDateTimeColumn(header: string, field: string, opts: {} = null) {\r\n\t\tconst colDef = {\r\n\t\t\theaderName: header,\r\n\t\t\tcellRenderer: this.renderDayDateTime.bind(this, field),\r\n\t\t\tfield,\r\n\t\t\twidth: 180,\r\n\t\t\tminWidth: 180,\r\n\t\t\tmaxWidth: 180\r\n\t\t};\r\n\t\treturn this.applyOpts(colDef, opts);\r\n\t}\r\n\r\n\tpublic makeNumberColumn(header: string, field: string, decimalPipeSpec: string = '', opts: {} = null) {\r\n\t\tconst colDef = {\r\n\t\t\theaderName: header,\r\n\t\t\tcellRenderer: this.renderNumber.bind(this, field, decimalPipeSpec),\r\n\t\t\tfield,\r\n\t\t\twidth: 80,\r\n\t\t\tminWidth: 80,\r\n\t\t\tmaxWidth: 80,\r\n\t\t\tcellClass: 'align-right'\r\n\t\t};\r\n\t\treturn this.applyOpts(colDef, opts);\r\n\t}\r\n\r\n\tpublic makeTextColumn(header: string, field: string, opts: {} = null) {\r\n\t\tconst colDef = {\r\n\t\t\theaderName: header,\r\n\t\t\tfield\r\n\t\t};\r\n\r\n\t\treturn this.applyOpts(colDef, opts);\r\n\t}\r\n\r\n\tpublic makeRendererColumn(header: string, renderer: (params: any) => string, owner: object, opts: {} = null) {\r\n\t\tconst colDef = {\r\n\t\t\theaderName: header,\r\n\t\t\tcellRenderer: renderer.bind(owner)\r\n\t\t};\r\n\r\n\t\treturn this.applyOpts(colDef, opts);\r\n\t}\r\n\r\n\tpublic makePipeColumn(header: string, field: string, pipe: PipeTransform, owner: object, opts: {} = null) {\r\n\t\tconst colDef = {\r\n\t\t\theaderName: header,\r\n\t\t\tcellRenderer: this.renderWithPipe.bind(owner, field, pipe)\r\n\t\t};\r\n\r\n\t\treturn this.applyOpts(colDef, opts);\r\n\t}\r\n\r\n\tpublic makeIconColumn(icon: string, owner: object, iconTitle: string = '') {\r\n\t\tconst renderer = () => {\r\n\t\t\treturn `${icon}`;\r\n\t\t};\r\n\t\tconst colDef = {\r\n\t\t\tcolId: icon,\r\n\t\t\theaderName: '',\r\n\t\t\twidth: 30,\r\n\t\t\tminWidth: 30,\r\n\t\t\tmaxWidth: 30,\r\n\t\t\tresizable: false,\r\n\t\t\tsortable: false,\r\n\t\t\tsuppressSizeToFit: true,\r\n\t\t\tcellRenderer: renderer.bind(owner)\r\n\t\t};\r\n\t\treturn colDef;\r\n\t}\r\n\r\n\tpublic makeAnchorColumn(header: string, urlPrefix: string, urlKey: string, key: string, owner: object): ColDef {\r\n\t\tconst renderer = params => {\r\n\t\t\tconst userId = this.auth.getUserId();\r\n\t\t\tconst d = params.data;\r\n\t\t\treturn `\r\n\t\t\t\t\t${d[key]}\r\n\t\t\t`;\r\n\t\t};\r\n\t\tconst colDef = {\r\n\t\t\theaderName: header,\r\n\t\t\tcellRenderer: renderer.bind(owner)\r\n\t\t};\r\n\t\treturn colDef;\r\n\t}\r\n\r\n\tpublic buildGridOptions(overrides: {} = null): GridOptions {\r\n\t\tconst opts = {\r\n\t\t\trowHeight: 48,\r\n\t\t\trowSelection: 'single',\r\n\t\t\ticons: {\r\n\t\t\t\tsortAscending: '',\r\n\t\t\t\tsortDescending: ''\r\n\t\t\t},\r\n\t\t\tautoSizePadding: 5,\r\n\t\t\tsuppressNoRowsOverlay: true,\r\n\t\t\tsuppressCellSelection: true,\r\n\t\t\tsuppressMovableColumns: true,\r\n\t\t\tsuppressAutoSize: true,\r\n\t\t\tdefaultColDef: {\r\n\t\t\t\tresizable: true,\r\n\t\t\t\tsortable: true,\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\tif (overrides) {\r\n\t\t\tObject.assign(opts, overrides);\r\n\t\t}\r\n\r\n\t\treturn opts;\r\n\t}\r\n\r\n\tprivate applyOpts(colDef: any, opts: any = null) {\r\n\t\tif (!opts) {\r\n\t\t\treturn colDef;\r\n\t\t}\r\n\r\n\t\tif (opts.fixedWidth) {\r\n\t\t\topts.width = opts.fixedWidth;\r\n\t\t\topts.resizable = false;\r\n\t\t\topts.suppressSizeToFit = true;\r\n\r\n\t\t\tdelete opts.fixedWidth;\r\n\t\t}\r\n\r\n\t\tObject.assign(colDef, opts);\r\n\t\treturn colDef;\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { map, catchError } from 'rxjs/operators';\r\nimport { EMPTY } from 'rxjs';\r\nimport { BaseService } from 'app/services/base-service';\r\nimport { CommonService, AnnouncementsDto, AnnouncementDto } from 'app/services';\r\nimport { MessageDialogService } from './../services/message-dialog.service';\r\n\r\n@Injectable()\r\nexport class AnnouncementsService extends BaseService {\r\n\tprivate announcementsUrl = 'api/announcements';\r\n\tprivate announcementUrl = 'api/announcement';\r\n\r\n\t//unread announcements will be broadcast to subscribers\r\n\tprivate unread: BehaviorSubject = new BehaviorSubject(-2);\r\n\tpublic unreadObservable: Observable = this.unread.asObservable();\r\n\tpublic showUnreadOnly: boolean = true;\r\n\r\n\t_messageDialog: MessageDialogService;\r\n\tannouncement: AnnouncementDto;\r\n\r\n\tconstructor(common: CommonService,\r\n\t\tprivate messageDialog: MessageDialogService) {\r\n\t\tsuper(common);\r\n\t\tthis._messageDialog = messageDialog;\r\n\t}\r\n\r\n\t//Get unread announcements \r\n\tgetAnnouncementsUnread(priority : boolean) {\r\n\t\treturn this.crud.loadWithGet(this.announcementsUrl + `/unread/${priority}`);\r\n\t}\r\n\r\n\t//Get unread announcements and notify subscribers\r\n\tupdateAnnouncementsUnread() {\r\n\t\tthis.getAnnouncementsUnread(false)\r\n\t\t\t.subscribe(result => {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tthis.unread.next(parseInt(result));\r\n\t\t\t\t} catch (error) {\r\n\t\t\t\t\tthis.unread.next(-2);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tgetAnnouncements(): Observable {\r\n\t\treturn this.crud.loadWithGet(this.announcementsUrl);\r\n\t}\r\n\t\r\n\tgetAnnouncement(id: string): Observable {\r\n\t\treturn this.crud\r\n\t\t\t.loadWithGet(this.announcementUrl + `/${id}`)\r\n\t\t\t.pipe(map(dto => this.onLoaded(dto)));\r\n\t}\r\n\r\n\tonLoaded(loadDto: AnnouncementDto) {\r\n\t\tthis.updateAnnouncementsUnread();\r\n\t\treturn loadDto;\r\n\t}\r\n\r\n\tclaim (ent : AnnouncementDto, hideSpinner : () => void) {\r\n\t\tvar decRead = !ent.isRead;\r\n\t\tthis.claimAnnouncement(ent.id)\r\n\t\t.pipe(\r\n\t\t\tcatchError((err) => {\r\n\t\t\t\tconsole.log(err, 'claim announcement');\r\n\t\t\t\thideSpinner();\r\n\t\t\t\treturn EMPTY;\r\n\t\t\t})\r\n\t\t)\r\n\t\t.subscribe(\r\n\t\t\t(result : any) => {\r\n\t\t\t\tif (result.isOk) {\r\n\t\t\t\t\tent.isClaimed = true;\t\r\n\t\t\t\t\tent.isClaimable = false;\r\n\t\t\t\t\tif (decRead) {\r\n\t\t\t\t\t\tent.isRead = true;\t\r\n\t\t\t\t\t\tthis.updateAnnouncementsUnread();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tvar message = result.isOk? result.resultDto : result.errorMessage;\r\n\t\t\t\tmessage = message.replace ('\\n','
');\r\n\t\t\t\tthis.messageDialog.message(message);\r\n\t\t\t\thideSpinner();\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\tclaimAnnouncement(id: string): Observable {\r\n\t\treturn this.crud\r\n\t\t\t.loadWithPost(this.announcementUrl + `/claim/${id}`, null);\r\n\t}\r\n\r\n\tdecline (ent : AnnouncementDto, hideSpinner : () => void) {\r\n\t\tvar decRead = !ent.isRead;\r\n\t\tthis.declineAnnouncement(ent.id)\r\n\t\t.pipe(\r\n\t\t\tcatchError((err) => {\r\n\t\t\t\tconsole.log(err, 'decline announcement');\r\n\t\t\t\thideSpinner();\r\n\t\t\t\treturn EMPTY;\r\n\t\t\t})\r\n\t\t)\r\n\t\t.subscribe(\r\n\t\t\t(result : any) => {\r\n\t\t\t\tif (result.isOk) {\r\n\t\t\t\t\tent.isDeclined = true;\t\r\n\t\t\t\t\tent.isClaimable = false;\r\n\t\t\t\t\tif (decRead) {\r\n\t\t\t\t\t\tent.isRead = true;\t\r\n\t\t\t\t\t\tthis.updateAnnouncementsUnread();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\thideSpinner();\r\n\t\t\t\tthis.messageDialog.message(result.isOk? result.resultDto : result.errorMessage);\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\tdeclineAnnouncement(id: string): Observable {\r\n\t\treturn this.crud\r\n\t\t\t.loadWithPost(this.announcementUrl + `/decline/${id}`, null);\r\n\t}\r\n\r\n\treadAnnouncement(id: string): Observable {\r\n\t\treturn this.crud\r\n\t\t\t.loadWithPost(this.announcementUrl + `/read/${id}`, null);\r\n\t}\r\n\r\n\tgetLoadedAnnouncement() {\r\n\t\treturn this.announcement;\r\n\t}\r\n\r\n\tsetLoadedAnnouncement(announcement: AnnouncementDto) {\r\n\t\tthis.announcement = announcement;\r\n\t}\r\n}\r\n","import { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\nimport { of, throwError, Observable, BehaviorSubject } from 'rxjs';\r\n\r\nimport { catchError, map, mergeMap, tap } from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';\r\n\r\nimport { SessionStorageManagementService } from './session-storage-management.service';\r\nimport { ConfigService } from './config.service';\r\nimport { LoggerService } from './logger.service';\r\nimport { LogoutService } from './logout.service';\r\nimport { CheckSaveChangesService } from './check-save-changes.service';\r\n\r\nimport { UnmanagedCookieService } from 'ng2-cookies';\r\n\r\nimport { MsalBroadcastService, MsalService } from '@azure/msal-angular';\r\nimport { AuthenticationResult, InteractionStatus } from '@azure/msal-browser';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { Router } from '@angular/router';\r\nimport { UserConfigDto } from './server-data';\r\nimport { environment } from '../../environments/environment';\r\n\r\nclass TokenResult {\r\n\t// tslint:disable-next-line:variable-name\r\n\ttoken_type: string;\r\n\t// tslint:disable-next-line:variable-name\r\n\taccess_token: string;\r\n\t// tslint:disable-next-line:variable-name\r\n\texpires_in: number;\r\n\t// tslint:disable-next-line:variable-name\r\n\trefresh_token: string;\r\n}\r\n\r\nclass UserInfo {\r\n\tconstructor(public username: string, public token: string) { }\r\n}\r\n\r\nexport class LoginResult {\r\n\terrorMessage: string;\r\n\tok: boolean;\r\n\tforceReload: boolean;\r\n\tpasswordExpired: boolean;\r\n\r\n\tstatic OK(): LoginResult {\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tstatic Error(message: string): LoginResult {\r\n\t\treturn {\r\n\t\t\terrorMessage: message,\r\n\t\t\tok: false,\r\n\t\t};\r\n\t}\r\n\r\n\tstatic PasswordExpired(message: string): LoginResult {\r\n\t\treturn {\r\n\t\t\terrorMessage: message,\r\n\t\t\tok: false,\r\n\t\t\tpasswordExpired: true,\r\n\t\t};\r\n\t}\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class AuthenticationService {\r\n\tpublic get username(): string {\r\n\t\tconst userInfo: UserInfo = JSON.parse(sessionStorage.getItem(AuthenticationService.KEY_CURRENT_USER));\r\n\t\tif (userInfo) {\r\n\t\t\treturn userInfo.username;\r\n\t\t}\r\n\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\tget defaultUserName(): string {\r\n\t\treturn localStorage.getItem(AuthenticationService.KEY_DEFAULT_USER_NAME);\r\n\t}\r\n\r\n\tset defaultUserName(value: string) {\r\n\t\tif (value) {\r\n\t\t\tlocalStorage.setItem(AuthenticationService.KEY_DEFAULT_USER_NAME, value);\r\n\t\t} else {\r\n\t\t\tlocalStorage.removeItem(AuthenticationService.KEY_DEFAULT_USER_NAME);\r\n\t\t}\r\n\t}\r\n\r\n\tget defaultLoginScheme(): string {\r\n\t\treturn localStorage.getItem(AuthenticationService.KEY_DEFAULT_LOGIN_SCHEME);\r\n\t}\r\n\r\n\tset defaultLoginScheme(value: string) {\r\n\t\tlocalStorage.setItem(AuthenticationService.KEY_DEFAULT_LOGIN_SCHEME, value);\r\n\t}\r\n\tprivate static RESULT_INVALID = 'invalid_grant';\r\n\tprivate static RESULT_PASSWORD_EXPIRED = 'PasswordExpired';\r\n\tprivate static RESULT_INVALID_APPLICATION = 'InvalidApplication';\r\n\tprivate static RESULT_PASSWORD_NOT_CHANGED = 'PasswordNotChanged';\r\n\tprivate static RESULT_INVALID_MODE = 'InvalidMode';\r\n\r\n\tprivate static loginUrl = '/connect/token';\r\n\r\n\tprivate static LOGIN_FAILED_MSG = 'Login failed';\r\n\r\n\tpublic static KEY_DEFAULT_USER_NAME = 'defaultUsername';\r\n\tpublic static KEY_CURRENT_USER = 'currentUser';\r\n\tpublic static KEY_REFRESH_TOKEN = 'refreshToken';\r\n\tpublic static KEY_DEFAULT_LOGIN_SCHEME = 'defaultLoginScheme';\r\n\tpublic static KEY_IN_PASSWORD_RESET_FLOW = 'custom.recovery.password.flow';\r\n\tpublic static TOKEN_NAME = 'access_token';\r\n\r\n\tpublic static LOGIN_STYLE_LEGACY = 'legacy';\r\n\tpublic static LOGIN_STYLE_B2C = 'b2c';\r\n\tpublic static LOGIN_STYLE_B2C_CORP = 'b2c-corp';\r\n\r\n\tprivate isSecure: boolean;\r\n\tprivate _refreshToken: string;\r\n\r\n\tpublic loggedInB2C: boolean;\r\n\tpublic token: string;\r\n\tprivate readonly _destroying$ = new Subject();\r\n\r\n\tpublic isAuthenticated$ = new BehaviorSubject(false);\r\n\tpublic isPracticeMode$ = new BehaviorSubject(false);\r\n\tpublic aadB2CLoginProgress$ = new BehaviorSubject('');\r\n\tpublic isAadB2CLoginInProgress$ = new BehaviorSubject(false);\r\n\tpublic static cookieServiceX: UnmanagedCookieService\r\n\r\n\tconstructor(\r\n\t\tprivate http: HttpClient,\r\n\t\tprivate configService: ConfigService,\r\n\t\tprivate loggerService: LoggerService,\r\n\t\tprivate cookieService: UnmanagedCookieService,\r\n\t\tprivate sessionStorageManagementService: SessionStorageManagementService,\r\n\t\tprivate logoutService: LogoutService,\r\n\t\tprivate checkSaveChanges: CheckSaveChangesService,\r\n\t\tprivate jwtHelper: JwtHelperService,\r\n\t\tprivate msalService: MsalService,\r\n\t\tprivate broadcastService: MsalBroadcastService,\r\n\t\tprivate router: Router,\r\n\t\tprivate snackBar: MatSnackBar\r\n\t) {\r\n\t\t// set token if saved in local storage\r\n\t\tconst currentUser = this.getUserInfo();\r\n\t\tthis.token = currentUser && currentUser.token;\r\n\r\n\t\tthis._refreshToken = sessionStorageManagementService.getItem(AuthenticationService.KEY_REFRESH_TOKEN);\r\n\r\n\t\tlet baseUri = document.baseURI;\r\n\t\tthis.isSecure = baseUri.startsWith('https');\r\n\r\n\t\tconst config = this.configService.config;\r\n\r\n\t\tthis.isAuthenticated$.next(this.getAuthenticated());\r\n\t\tthis.isPracticeMode$.next(config && config.isPractice);\r\n\r\n\t\t// AAD B2C\r\n\t\tif (this.msalService.instance.getActiveAccount()) {\r\n\t\t\tthis.loggedInB2C = true;\r\n\t\t} else {\r\n\t\t\tthis.loggedInB2C = false;\r\n\t\t}\r\n\r\n\t\tAuthenticationService.cookieServiceX = cookieService;\r\n\t}\r\n\r\n\tsetAadB2CProgress(msg: string) {\r\n\t\tthis.aadB2CLoginProgress$.next(msg);\r\n\t}\r\n\r\n\tsetAadB2CLoginInProgress(inProgress: boolean) {\r\n\t\tif (!inProgress) {\r\n\t\t\tthis.loggedInB2C = false;\r\n\t\t}\r\n\t\tthis.isAadB2CLoginInProgress$.next(inProgress);\r\n\t}\r\n\r\n\tassignToken(token: any) {\r\n\r\n\t\tthis.setAadB2CProgress('Login successful... looking up user...');\r\n\t\tthis.loggedInB2C = true;\r\n\t\tthis.setAccessToken (token);\r\n\r\n\t\tthis.http\r\n\t\t\t.get('api/b2c')\r\n\t\t\t.pipe(\r\n\t\t\t\tcatchError((e) => {\r\n\t\t\t\t\tlet msg = AuthenticationService.LOGIN_FAILED_MSG;\r\n\t\t\t\t\tif (e.error && e.error.error_description) {\r\n\t\t\t\t\t\tmsg += ` - ${e.error.error_description}`;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.resetB2CLogin(msg);\r\n\r\n\t\t\t\t\treturn throwError(e);\r\n\t\t\t\t})\r\n\t\t\t)\r\n\t\t\t.subscribe((obj) => {\r\n\t\t\t\tlet tokenObj = obj as TokenResult;\r\n\r\n\t\t\t\tconst accessToken: string = tokenObj.access_token;\r\n\t\t\t\tthis.setAccessToken (accessToken);\r\n\t\t\t\tthis.setAadB2CProgress('Login successful... getting your configuration...');\r\n\r\n\t\t\t\tthis.configService\r\n\t\t\t\t\t.getConfig()\r\n\t\t\t\t\t.toPromise()\r\n\t\t\t\t\t.then((config) => {\r\n\t\t\t\t\t\t// Successfully got the user config\r\n\t\t\t\t\t\tif (config.forceReloadClient) {\r\n\t\t\t\t\t\t\tlet staleClientResult = LoginResult.Error(\r\n\t\t\t\t\t\t\t\t'A new version is required - page will refresh.'\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\tstaleClientResult.forceReload = true;\r\n\t\t\t\t\t\t\treturn staleClientResult;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.afterSuccessfulLogin(config, tokenObj, 'b2c-login');\r\n\r\n\t\t\t\t\t\tthis.setAadB2CProgress('Login complete');\r\n\t\t\t\t\t\tthis.setAadB2CLoginInProgress(false);\r\n\r\n\t\t\t\t\t\tthis.defaultLoginScheme = AuthenticationService.LOGIN_STYLE_B2C;\r\n\r\n\t\t\t\t\t\tthis.router.navigate(['/']);\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((e) => {\r\n\t\t\t\t\t\tthis.resetB2CLogin(AuthenticationService.LOGIN_FAILED_MSG);\r\n\t\t\t\t\t});\r\n\t\t\t});\r\n\t\r\n\t}\r\n\r\n\tgetUserInfo(): UserInfo {\r\n\t\tconst currentUser: UserInfo = JSON.parse(sessionStorage.getItem(AuthenticationService.KEY_CURRENT_USER));\r\n\t\treturn currentUser;\r\n\t}\r\n\r\n\t/**\r\n\t * Submits a request to change the user's password.\r\n\t * @param {string} username The username.\r\n\t * @param {string} oldPassword The old password.\r\n\t * @param {string} newPassword The new password.\r\n\t * @returns {Observable} The result.\r\n\t * @memberOf AuthenticationService\r\n\t */\r\n\tchangePassword(username: string, oldPassword: string, newPassword: string): Observable {\r\n\t\treturn this.login(username, oldPassword, true, newPassword);\r\n\t}\r\n\r\n\tlogin(\r\n\t\tusername: string,\r\n\t\tpassword: string,\r\n\t\tchangingPassword: boolean = false,\r\n\t\tnewPassword: string = undefined\r\n\t): Observable {\r\n\t\tthis.logoutService.loggingOut = false;\r\n\r\n\t\tlet body = `grant_type=password&username=${username}&password=${password}`;\r\n\t\tif (changingPassword) {\r\n\t\t\t/*\r\n\t\t\t\tWhen changing password combine the old and new passwords separated by a null character, to\r\n\t\t\t\tbe separated at the server. This ensures that suppressed logging for the password on the server\r\n\t\t\t\talso applies to the new password.\r\n\r\n\t\t\t\tNote that this flow isn't part of the OAuth2 spec - so it's non-standard, but the spec doesn't\r\n\t\t\t\tcover changing passwords anyway.\r\n\t\t\t*/\r\n\t\t\tconst combinedPassword = `${password}\\0${newPassword}`;\r\n\t\t\tbody = `grant_type=password&username=${username}&password=${combinedPassword}&changing_password=true`;\r\n\t\t}\r\n\r\n\t\tconst headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\r\n\r\n\t\tlet tokenObj: TokenResult = undefined;\r\n\r\n\t\tconst handleLoginError = (err: HttpErrorResponse): Observable => {\r\n\t\t\tlet msg: string;\r\n\r\n\t\t\t// Login failed so ensure nothing is left in local storage.\r\n\t\t\tthis.cleanUpLocalStorage();\r\n\r\n\t\t\tlet loginResult;\r\n\r\n\t\t\tif (err.status >= 500) {\r\n\t\t\t\tthis.loggerService.logError(err);\r\n\t\t\t\tmsg = 'Server is currently unavailable.';\r\n\t\t\t} else if (err.status === 400) {\r\n\t\t\t\tconst errorResult = err.error;\r\n\t\t\t\tconst code = errorResult && errorResult.error;\r\n\t\t\t\tif (code === AuthenticationService.RESULT_INVALID) {\r\n\t\t\t\t\tmsg = errorResult.error_description;\r\n\t\t\t\t} else if (code === AuthenticationService.RESULT_PASSWORD_EXPIRED) {\r\n\t\t\t\t\tloginResult = LoginResult.PasswordExpired(errorResult.error_description);\r\n\t\t\t\t\treturn of(loginResult);\r\n\t\t\t\t} else if (code === AuthenticationService.RESULT_INVALID_APPLICATION) {\r\n\t\t\t\t\tloginResult = LoginResult.Error(errorResult.error_description);\r\n\t\t\t\t\treturn of(loginResult);\r\n\t\t\t\t} else if (code === AuthenticationService.RESULT_INVALID_MODE) {\r\n\t\t\t\t\tloginResult = LoginResult.Error(errorResult.error_description);\r\n\t\t\t\t\treturn of(loginResult);\r\n\t\t\t\t} else if (code === AuthenticationService.RESULT_PASSWORD_NOT_CHANGED) {\r\n\t\t\t\t\tloginResult = LoginResult.Error(errorResult.error_description);\r\n\t\t\t\t\treturn of(loginResult);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (!msg) {\r\n\t\t\t\tmsg = 'An error occurred while logging in. Please try again.';\r\n\t\t\t}\r\n\r\n\t\t\tloginResult = LoginResult.Error(msg);\r\n\t\t\treturn of(loginResult);\r\n\t\t};\r\n\r\n\t\t/*\r\n\t\t\tChained requests...\r\n\r\n\t\t\t1. Get the client version from the server and check. If invalid, return a force reload result.\r\n\t\t\t2. Login and expect back a token. Any error is a login failure, but the specific error needs to be interpreted.\r\n\t\t\t3. On successful login, get the user config and system preferences.\r\n\r\n\t\t\tAt the end, return the LoginResult object.\r\n\r\n\t\t\tOn success, the JWT will have been stored, and the user config will have been stored,\r\n\t\t\tand the JWT set up to refresh.\r\n\t\t*/\r\n\t\tconst result = this.configService.getMinVersion().pipe(\r\n\t\t\tmap((serverVersion) => {\r\n\t\t\t\tconst getVersionParts = (vs: string) => vs.split('.').map((p: string) => parseInt(p, 10));\r\n\r\n\t\t\t\tconst thisVersion = environment.PACKAGE.version;\r\n\t\t\t\tlet thisVersionParts = getVersionParts(thisVersion);\r\n\t\t\t\tlet expectedVersionParts = getVersionParts(serverVersion);\r\n\r\n\t\t\t\tif (thisVersionParts.length !== expectedVersionParts.length) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (let i = 0; i < thisVersionParts.length; i++) {\r\n\t\t\t\t\tif (thisVersionParts[i] < expectedVersionParts[i]) {\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t}),\r\n\t\t\tmergeMap((r: boolean) => {\r\n\t\t\t\tif (!r) {\r\n\t\t\t\t\tconst forceReloadResult = LoginResult.Error('Old version - browser needs to be refreshed');\r\n\t\t\t\t\tforceReloadResult.forceReload = true;\r\n\t\t\t\t\treturn of(forceReloadResult);\r\n\t\t\t\t}\r\n\t\t\t\treturn this.http.post(AuthenticationService.loginUrl, body, { headers: headers }).pipe(\r\n\t\t\t\t\t\tmergeMap((obj) => {\r\n\t\t\t\t\t\t\ttokenObj = obj as TokenResult;\r\n\r\n\t\t\t\t\t\t// Store the access token into local storage so AuthHttp can use it for the getConfig request,\r\n\t\t\t\t\t\t// and so it's available between page refreshes.\r\n\t\t\t\t\t\tconst access_token = tokenObj.access_token;\r\n\t\t\t\t\t\tthis.setAccessToken (access_token);\r\n\r\n\t\t\t\t\t\treturn this.configService.getConfig();\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tmap((config: UserConfigDto) => {\r\n\t\t\t\t\t\t// Successfully got the user config\r\n\t\t\t\t\t\tif (config.forceReloadClient) {\r\n\t\t\t\t\t\t\tlet staleClientResult = LoginResult.Error('A new version is required - page will refresh.');\r\n\t\t\t\t\t\t\tstaleClientResult.forceReload = true;\r\n\t\t\t\t\t\t\treturn staleClientResult;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.afterSuccessfulLogin(config, tokenObj, username);\r\n\r\n\t\t\t\t\t\t// Return a successful LoginResult object.\r\n\t\t\t\t\t\tconst loginResult = LoginResult.OK();\r\n\t\t\t\t\t\treturn loginResult;\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tcatchError(handleLoginError)\r\n\t\t\t\t);\r\n\t\t\t})\r\n\t\t);\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tlogout(): void {\r\n\t\t// clear token remove user from local storage to log user out\r\n\t\tthis.token = null;\r\n\t\tthis._refreshToken = null;\r\n\r\n\t\t// Ensure the snackbar isn't left open when logged out.\r\n\t\tthis.snackBar.dismiss();\r\n\r\n\t\tthis.cleanUpLocalStorage();\r\n\t\tthis.cookieService.delete('user');\r\n\r\n\t\tthis.isAuthenticated$.next(false);\r\n\t\tthis.setAadB2CProgress('');\r\n\t\tthis.setAadB2CLoginInProgress(false);\r\n\r\n\t\tthis.checkSaveChanges.reset();\r\n\t}\r\n\r\n\tgetUserId(): number {\r\n\t\tlet userInfo = this.getUserInfo();\r\n\t\tlet result = this.jwtHelper.decodeToken(userInfo.token);\r\n\r\n\t\t// This is a big hack, to try to work around the cookie being missing when downloading a file.\r\n\t\t// If there's no cookie, write it again.\r\n\t\tlet userGuid = this.cookieService.get('user');\r\n\t\tif (!userGuid) {\r\n\t\t\tuserGuid = result['urn:userGuid'];\r\n\t\t\tthis.cookieService.set('user', userGuid, null, '/', null, this.isSecure);\r\n\t\t}\r\n\r\n\t\tlet userId = parseInt(result.sub, 10);\r\n\t\treturn userId;\r\n\t}\r\n\r\n\trefreshToken() {\r\n\t\tconst userInfo = this.getUserInfo();\r\n\t\tconst body = `grant_type=refresh_token&refresh_token=${this._refreshToken}`;\r\n\r\n\t\tconst headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\r\n\r\n\t\treturn this.http.post(AuthenticationService.loginUrl, body, { headers }).pipe(\r\n\t\t\ttap((token: TokenResult) => {\r\n\t\t\t\tif (!userInfo) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tuserInfo.token = this.token = JSON.stringify(token);\r\n\t\t\t\tsessionStorage.setItem(AuthenticationService.KEY_CURRENT_USER, JSON.stringify(userInfo));\r\n\t\t\t\tconsole.log('refreshToken')\t\r\n\t\t\t\tthis.setAccessToken (token.access_token);\r\n\r\n\t\t\t\tthis._refreshToken = token.refresh_token;\r\n\t\t\t\tsessionStorage.setItem(AuthenticationService.KEY_REFRESH_TOKEN, token.refresh_token);\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tpublic getToken() {\r\n\t\treturn this.cookieService.get(AuthenticationService.TOKEN_NAME);\r\n\t}\r\n\r\n\tpublic static getToken() {\r\n\t\treturn AuthenticationService.cookieServiceX.get(AuthenticationService.TOKEN_NAME);\r\n\t}\r\n\r\n\tget isAuthenticated() {\r\n\t\treturn this.isAuthenticated$.value;\r\n\t}\r\n\r\n\tprivate cleanUpLocalStorage() {\r\n\t\tsessionStorage.removeItem(AuthenticationService.KEY_CURRENT_USER);\r\n\t\tsessionStorage.removeItem(AuthenticationService.KEY_REFRESH_TOKEN);\r\n\t\tthis.sessionStorageManagementService.clearVolatileData();\r\n\t\tthis.cookieService.delete(AuthenticationService.TOKEN_NAME);\r\n\t\tthis.configService.clear();\r\n\t}\r\n\r\n\tprivate getAuthenticated(): boolean {\r\n\t\tconst currentUser = this.getUserInfo();\r\n\t\treturn !!currentUser;\r\n\t}\r\n\r\n\tprivate resetB2CLogin(msg: string) {\r\n\t\tthis.loggedInB2C = false;\r\n\t\tthis.setAadB2CProgress(msg);\r\n\t\tthis.setAadB2CLoginInProgress(false);\r\n\t}\r\n\r\n\tprivate afterSuccessfulLogin(config: UserConfigDto, tokenObj: TokenResult, username: string) {\r\n\t\tconst refresh_token = tokenObj.refresh_token,\r\n\t\t\tuserInfo = new UserInfo(username, JSON.stringify(tokenObj));\r\n\r\n\t\tthis._refreshToken = refresh_token;\r\n\r\n\t\t// Store user info in local storage.\r\n\t\tsessionStorage.setItem(AuthenticationService.KEY_CURRENT_USER, JSON.stringify(userInfo));\r\n\t\tsessionStorage.setItem(AuthenticationService.KEY_REFRESH_TOKEN, refresh_token);\r\n\r\n\t\t// // Set up to refresh the JWT\r\n\t\t// Store a cookie with the user GUID\r\n\t\tthis.cookieService.delete('user');\r\n\t\t// Store a secure cookie if our base URL is secure.\r\n\t\tthis.cookieService.set('user', config.userGuid, null, '/', null, this.isSecure);\r\n\r\n\t\tthis.isPracticeMode$.next(config.isPractice);\r\n\t\tthis.isAuthenticated$.next(true);\r\n\t}\r\n\r\n\tprivate setAccessToken (accessToken : string){\r\n\t\tthis.cookieService.set(AuthenticationService.TOKEN_NAME, accessToken, null, '/', null, this.isSecure);\r\n}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AuthorisationsDto } from 'app/services/server-data';\r\nimport { ConfigService } from './config.service';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class AuthsService {\r\n\tprivate _emptySettings = {};\r\n\r\n\tconstructor(private config: ConfigService) {\r\n\t}\r\n\r\n\tget settings(): AuthorisationsDto {\r\n\t\tlet userConfig = this.config.config;\r\n\t\tif (userConfig) {\r\n\t\t\treturn userConfig.authorisations;\r\n\t\t}\r\n\t\treturn this._emptySettings;\r\n\t}\r\n}\r\n","\r\nimport { EventEmitter } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport * as _ from 'lodash';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\n\r\nimport {\r\n\tMatSnackBar,\r\n} from '@angular/material/snack-bar';\r\n\r\nimport { CommonService } from './common.service';\r\nimport { CrudService } from './crud.service';\r\nimport { ConfigService } from './config.service';\r\nimport { SaveResult, SaveResultDto } from './server-data';\r\nimport { LoggerService } from './logger.service';\r\nimport { ChangeNotification } from './change-notification';\r\nimport { WarningsService } from '.';\r\n\r\nconst DELETED_SNACKBAR_DURATION = 2000;\r\n\r\nexport abstract class BaseService {\r\n\tprotected crud: CrudService;\r\n\tprotected http: HttpClient;\r\n\tprotected logger: LoggerService;\r\n\tprotected config: ConfigService;\r\n\tprotected snackBar: MatSnackBar;\r\n\tprotected warnings: WarningsService;\r\n\r\n\tconstructor(common: CommonService) {\r\n\t\tthis.crud = common.crud;\r\n\t\tthis.http = common.http;\r\n\t\tthis.logger = common.logger;\r\n\t\tthis.config = common.config;\r\n\t\tthis.snackBar = common.snackBar;\r\n\t\tthis.warnings = common.warnings;\r\n\t}\r\n\r\n\tprotected handleError(err) {\r\n\t\t// TODO: Implement better error handling.\r\n\r\n\t\tlet message = 'An error occurred';\r\n\t\tlet httpError = err as HttpErrorResponse;\r\n\t\tif (httpError) {\r\n\t\t\tif (httpError.status === 500) {\r\n\t\t\t\tmessage = 'Internal server error';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.warnings.showMultiErrors('Error', message);\r\n\t}\r\n\r\n\tprotected saveInfo(url: string, dto: T, eventEmitter: EventEmitter>\r\n\t): Observable> {\r\n\t\treturn this.crud.saveWithInfo(url, dto).pipe(\r\n\t\t\ttap(result => {\r\n\t\t\t\tswitch (result.saveResult) {\r\n\t\t\t\t\tcase SaveResult.OK:\r\n\t\t\t\t\t\tif (eventEmitter) {\r\n\t\t\t\t\t\t\teventEmitter.emit(ChangeNotification.update(result.resultDto));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase SaveResult.Error:\r\n\t\t\t\t\t\tthis.warnings.showMultiErrors('Save failed', result.errorMessage);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase SaveResult.Warnings:\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}, err => {\r\n\t\t\t\tthis.handleError(err);\r\n\t\t\t}));\r\n\t}\r\n\r\n\tprotected save(url: string, dto: T, eventEmitter?: EventEmitter>): Observable> {\r\n\r\n\t\treturn this.crud.save(url, dto).pipe(\r\n\t\t\ttap(result => {\r\n\t\t\t\tswitch (result.saveResult) {\r\n\t\t\t\t\tcase SaveResult.OK:\r\n\t\t\t\t\t\tif (eventEmitter) {\r\n\t\t\t\t\t\t\teventEmitter.emit(ChangeNotification.update(result.resultDto));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase SaveResult.Error:\r\n\t\t\t\t\t\tthis.warnings.showMultiErrors('Save failed', result.errorMessage);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase SaveResult.Warnings:\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}, err => {\r\n\t\t\t\tthis.handleError(err);\r\n\t\t\t}));\r\n\t}\r\n\r\n\tprotected delete(url: string, id: number, eventEmitter?: EventEmitter>, objectTypeName: string = '') {\r\n\t\tthis.crud.delete(url)\r\n\t\t\t.subscribe(result => {\r\n\t\t\t\tswitch (result.saveResult) {\r\n\t\t\t\t\tcase SaveResult.OK:\r\n\t\t\t\t\t\tobjectTypeName = objectTypeName || 'object';\r\n\t\t\t\t\t\tconst snackMessage = _.startCase(`${objectTypeName} deleted`);\r\n\t\t\t\t\t\tthis.snackBar.open(snackMessage, '', {\r\n\t\t\t\t\t\t\tduration: DELETED_SNACKBAR_DURATION\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif (eventEmitter) {\r\n\t\t\t\t\t\t\teventEmitter.emit(ChangeNotification.delete(id));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase SaveResult.Error:\r\n\t\t\t\t\t\tthis.warnings.showMultiErrors('Delete failed', result.errorMessage);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase SaveResult.Warnings:\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}, err => {\r\n\t\t\t\tthis.handleError(err);\r\n\t\t\t});\r\n\t}\r\n}\r\n","export enum ChangeType {\r\n\tUpdate,\r\n\tDelete\r\n}\r\n\r\nexport abstract class ChangeNotificationBase {\r\n\tinstance: any;\r\n\tid: number;\r\n\tchangeType: ChangeType;\r\n\r\n\tstatic update(inst: T): ChangeNotification {\r\n\t\treturn > {\r\n\t\t\tchangeType: ChangeType.Update,\r\n\t\t\tinstance: inst\r\n\t\t};\r\n\t}\r\n\r\n\tstatic delete(id: number): ChangeNotification {\r\n\t\treturn > {\r\n\t\t\tchangeType: ChangeType.Delete,\r\n\t\t\tid: id\r\n\t\t};\r\n\t}\r\n}\r\n\r\nexport class ChangeNotification extends ChangeNotificationBase {\r\n\tinstance: T;\r\n}\r\n","import { Injectable, Component, Inject, ViewContainerRef } from '@angular/core';\r\nimport { Location } from '@angular/common';\r\nimport { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport { UntypedFormGroup } from '@angular/forms';\r\nimport { Observable, Subject, BehaviorSubject } from 'rxjs';\r\nimport { CanDeactivate } from '@angular/router';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { TdDialogService } from '@covalent/core/dialogs';\r\nimport * as _ from 'lodash';\r\n\r\nimport { LoggerService } from './logger.service';\r\nimport { ModalService } from './modal.service';\r\nimport { FormUtils, UpdaterOptions } from './form-utils';\r\nimport { SaveResult, SaveResultDto } from 'app/services/server-data';\r\nimport { ICheckSaveChanges, IForm, IEditComponent, respondsTo } from 'app/interfaces';\r\nimport { WarningsService } from './warnings.service';\r\n\r\nconst SAVED_SNACKBAR_DURATION = 3000;\r\nconst SAVE_FAILED_SNACKBAR_DURATION = 6000;\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class CheckSaveChangesService\r\n\timplements CanDeactivate {\r\n\tpublic inProgress$ = new BehaviorSubject(false);\r\n\r\n\tconstructor(\r\n\t\tprivate logger: LoggerService,\r\n\t\tprivate dialog: MatDialog,\r\n\t\tprivate dialogService: TdDialogService,\r\n\t\tprivate location: Location,\r\n\t\tprivate snackBar: MatSnackBar,\r\n\t\tprivate modal: ModalService,\r\n\t\tprivate warningsService: WarningsService,\r\n\t\tprivate readonly router: Router,\r\n\t) { }\r\n\r\n\tcanDeactivate(\r\n\t\tcomponent: ICheckSaveChanges,\r\n\t\troute: ActivatedRouteSnapshot,\r\n\t\tstate: RouterStateSnapshot,\r\n\t\tnextState: RouterStateSnapshot\r\n\t): Observable | boolean {\r\n\t\tif (this.modal.isOpen) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Ignore if state and nextState are the same URL minus optional parameters.\r\n\t\t// This is used for appointments and availability in practice mode where each\r\n\t\t// professional/office has the same route but with optional parameters used to\r\n\t\t// control the tabs.\r\n\t\tconst routeUrlRegex = /(^\\/.*);/;\r\n\t\tconst currentStateUrl = routeUrlRegex.exec(state.url);\r\n\t\tconst nextStateUrl = routeUrlRegex.exec(nextState.url);\r\n\r\n\t\tif (currentStateUrl && nextStateUrl && currentStateUrl[1] === nextStateUrl[1]) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (!this.componentHasChanges(component)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tconst canDeactivateResult = new Subject();\r\n\t\tconst objectTypeName = this.getObjectName(component);\r\n\r\n\t\t// Ask the user to save, discard or cancel.\r\n\t\tlet dialogRef = this.dialog.open(CheckSaveChangesDialogComponent, {\r\n\t\t\tdata: {\r\n\t\t\t\tobjectType: objectTypeName,\r\n\t\t\t},\r\n\t\t});\r\n\t\tdialogRef.afterClosed().subscribe((result: string) => {\r\n\t\t\tswitch (result) {\r\n\t\t\t\tcase 'Save':\r\n\t\t\t\t\tconst obs = this.saveChanges(component);\r\n\t\t\t\t\tif (typeof obs === 'boolean') {\r\n\t\t\t\t\t\tcanDeactivateResult.next(false);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tobs.subscribe((saveResult) => {\r\n\t\t\t\t\t\tconst savedOK = saveResult.saveResult === SaveResult.OK;\r\n\t\t\t\t\t\tcanDeactivateResult.next(savedOK);\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'Discard':\r\n\t\t\t\t\tif (respondsTo(component, 'discardChanges')) {\r\n\t\t\t\t\t\tcomponent.discardChanges();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcanDeactivateResult.next(true);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'Cancel':\r\n\t\t\t\t\t// Workaround for Angular bug - see: https://github.com/angular/angular/issues/13586#issuecomment-402250031\r\n\t\t\t\t\tconst currentUrlTree = this.router.createUrlTree([], route);\r\n\t\t\t\t\tconst currentUrl = currentUrlTree.toString();\r\n\t\t\t\t\t// Use replaceState so as to not push onto the browser history.\r\n\t\t\t\t\tthis.location.replaceState(currentUrl);\r\n\r\n\t\t\t\t\tcanDeactivateResult.next(false);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn canDeactivateResult;\r\n\t}\r\n\r\n\tclose() {\r\n\t\tthis.location.back();\r\n\t}\r\n\r\n\t/**\r\n\t * Hierarchically saves changes to a component.\r\n\t * @param {((IEditComponent | ICheckSaveChanges))} component The root component.\r\n\t * @returns {Observable} An Observable that produces the save result.\r\n\t * @memberof CheckSaveChangesService\r\n\t */\r\n\tsaveChanges(\r\n\t\tcomponent: IEditComponent | ICheckSaveChanges,\r\n\t\tconfirmWarning?: boolean\r\n\t): Observable> | boolean {\r\n\t\tconst objectTypeName = this.getObjectName(component);\r\n\t\tconst showSaveError = () => {\r\n\t\t\tconst snackMessage = `Save of ${objectTypeName} failed.`;\r\n\t\t\tthis.snackBar.open(snackMessage, '', {\r\n\t\t\t\tduration: SAVE_FAILED_SNACKBAR_DURATION,\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tconst obs = this.componentSaveChanges(component, confirmWarning);\r\n\t\tif (typeof obs === 'boolean') {\r\n\t\t\t// componentSaveChanges returned a boolean so we've aborted the save.\r\n\t\t\t// e.g. there are validation errors.\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Signal save in progress.\r\n\t\tthis.signalInProgress(true);\r\n\r\n\t\tconst showsProgress = respondsTo(component, 'showsProgress') ? component.showsProgress() : false;\r\n\r\n\t\t// We're going to save so show a dialog while the save is in progress.\r\n\t\tlet dialogRef = this.dialog.open(SaveProgressDialogComponent, {\r\n\t\t\tdata: {\r\n\t\t\t\tobjectType: objectTypeName,\r\n\t\t\t\thasProgress: showsProgress,\r\n\t\t\t\tprogress: showsProgress ? component.progress() : null,\r\n\t\t\t},\r\n\t\t\tdisableClose: true,\r\n\t\t});\r\n\r\n\t\t// Create the observable to return that the caller can subscribe to for the save result.\r\n\t\tconst saveChangesResult = new Subject>();\r\n\r\n\t\t// Subscribe to the save observable - this will result in the save HTTP operation actually happening.\r\n\t\tobs.subscribe(\r\n\t\t\t(result) => {\r\n\t\t\t\t// Got back a result from the server - check the status.\r\n\t\t\t\tdialogRef.close();\r\n\r\n\t\t\t\tthis.signalInProgress(false);\r\n\r\n\t\t\t\tswitch (result.saveResult) {\r\n\t\t\t\t\tcase SaveResult.Error:\r\n\t\t\t\t\t\tshowSaveError();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase SaveResult.Warnings:\r\n\t\t\t\t\t\tthis.warningsService\r\n\t\t\t\t\t\t\t.showWarningsWithConfirm('Warning', result.warnings, result.confirms)\r\n\t\t\t\t\t\t\t.subscribe((confirm: boolean | string) => {\r\n\t\t\t\t\t\t\t\tif (confirm === true) {\r\n\t\t\t\t\t\t\t\t\t// User confirmed warning - re-initiate the save, this time with the warning confirmed.\r\n\t\t\t\t\t\t\t\t\treturn this.saveChanges(component, true);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase SaveResult.OK:\r\n\t\t\t\t\t\tconst snackMessage = _.startCase(`${objectTypeName} saved`);\r\n\t\t\t\t\t\tthis.snackBar.open(snackMessage, '', {\r\n\t\t\t\t\t\t\tduration: SAVED_SNACKBAR_DURATION,\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t// Saved successfully. Mark forms as clean.\r\n\t\t\t\t\t\tconst forms = this.getForms(component);\r\n\t\t\t\t\t\t_.forEach(forms, (f) => f.markAsPristine());\r\n\r\n\t\t\t\t\t\tthis.componentsMarkClean(component);\r\n\r\n\t\t\t\t\t\tconst formsWithChanges = _.filter(forms, (f) => FormUtils.hasChanges(f));\r\n\t\t\t\t\t\tif (formsWithChanges.length) {\r\n\t\t\t\t\t\t\tthis.logger.logWarning('These forms still have changes!', formsWithChanges);\r\n\t\t\t\t\t\t\tthrow new Error('There are forms with changes after successful save.');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tthrow new Error('Unexpected SaveResult value');\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Emit the save result (whatever it was) onto the result observable.\r\n\t\t\t\tsaveChangesResult.next(result);\r\n\t\t\t},\r\n\t\t\t(err) => {\r\n\t\t\t\t// Something bad happened (e.g. exception on server, etc.)\r\n\t\t\t\tdialogRef.close();\r\n\t\t\t\tshowSaveError();\r\n\t\t\t\tthis.signalInProgress(false);\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\tthis.signalInProgress(false);\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\treturn saveChangesResult;\r\n\t}\r\n\r\n\treset() {\r\n\t\tthis.signalInProgress(false);\r\n\t}\r\n\r\n\tprivate signalInProgress(value) {\r\n\t\tthis.inProgress$.next(value);\r\n\t}\r\n\r\n\tprivate getObjectName(component: IEditComponent | ICheckSaveChanges): string {\r\n\t\tlet objectName = 'object';\r\n\t\tif (respondsTo(component, 'getObjectName')) {\r\n\t\t\tobjectName = (component as ICheckSaveChanges).getObjectName();\r\n\t\t}\r\n\r\n\t\treturn objectName;\r\n\t}\r\n\r\n\tprivate getForms(\r\n\t\tcomponent: IEditComponent | ICheckSaveChanges,\r\n\t\tcomponents: (IEditComponent | IForm)[] = undefined\r\n\t): UntypedFormGroup[] {\r\n\t\tif (!components) {\r\n\t\t\tcomponents = [];\r\n\t\t\tthis.getComponents(component, components);\r\n\t\t}\r\n\r\n\t\tconst forms: UntypedFormGroup[] = [];\r\n\t\tif (respondsTo(component, 'getForm')) {\r\n\t\t\tforms.push((component as IForm).getForm());\r\n\t\t}\r\n\t\tif (components) {\r\n\t\t\t_.forEach(components, (c) => {\r\n\t\t\t\tif (respondsTo(c, 'getForm')) {\r\n\t\t\t\t\tlet form = (c as IForm).getForm();\r\n\t\t\t\t\tif (!form) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tforms.push(form);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn forms;\r\n\t}\r\n\r\n\tprivate componentsMarkClean(component: IEditComponent, cleaned: IEditComponent[] = undefined) {\r\n\t\tif (!cleaned) {\r\n\t\t\tcleaned = [];\r\n\t\t}\r\n\r\n\t\tif (respondsTo(component, 'markClean')) {\r\n\t\t\tcomponent.markClean();\r\n\t\t}\r\n\r\n\t\tlet components = [];\r\n\t\tthis.getComponents(component, components);\r\n\r\n\t\tif (components && components.length) {\r\n\t\t\tcomponents.forEach((c) => {\r\n\t\t\t\tif (cleaned.indexOf(c) === -1) {\r\n\t\t\t\t\tcleaned.push(c);\r\n\t\t\t\t\tthis.componentsMarkClean(c, cleaned);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Performs a hierarchical save using a root component.\r\n\t * @param {((IEditComponent | ICheckSaveChanges))} component The root component.\r\n\t * @returns {Observable} An Observable that produces the result of the save.\r\n\t * @memberof CheckSaveChangesService\r\n\t */\r\n\tprivate componentSaveChanges(\r\n\t\tcomponent: IEditComponent | ICheckSaveChanges,\r\n\t\tconfirmWarning?: boolean\r\n\t): Observable> | boolean {\r\n\t\tlet components = [];\r\n\t\tthis.getComponents(component, components);\r\n\r\n\t\tif (components && components.length === 1) {\r\n\t\t\tcomponent = components[0];\r\n\t\t}\r\n\r\n\t\t// Get the object to update\r\n\t\tlet obj: object;\r\n\t\tif (respondsTo(component, 'getObject')) {\r\n\t\t\tobj = component.getObject();\r\n\t\t}\r\n\r\n\t\t// Get the forms to update the object, if all valid.\r\n\t\tconst forms = this.getForms(component, components);\r\n\r\n\t\t// Function for calling the isValid function on IEditComponent instances, if it's implemented.\r\n\t\tconst callIsValid = (c: IEditComponent) => {\r\n\t\t\tif (respondsTo(c, 'isValid')) {\r\n\t\t\t\treturn c.isValid();\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t};\r\n\r\n\t\t// Call the isValid method on each component that implements it.\r\n\t\tconst allIsValid = _.every(components, (c) => callIsValid(c));\r\n\r\n\t\t// Check that all forms are valid.\r\n\t\tconst allValid = _.every(forms, (f) => FormUtils.isFormValid(f));\r\n\t\tif (!allValid || !allIsValid) {\r\n\t\t\t// let formsInError = forms.filter(f => f.invalid);\r\n\t\t\t// let controlsInError = [];\r\n\t\t\t// forms.forEach(f => {\r\n\t\t\t// \tfor (let c in f.controls) {\r\n\t\t\t// \t\tlet control = f.controls[c];\r\n\t\t\t// \t\tif (control.invalid) {\r\n\t\t\t// \t\t\tcontrolsInError.push(control);\r\n\t\t\t// \t\t}\r\n\t\t\t// \t}\r\n\t\t\t// });\r\n\r\n\t\t\t// console.log(controlsInError);\r\n\r\n\t\t\tthis.dialogService.openAlert({\r\n\t\t\t\tmessage: \"Can't save - there are errors that must be corrected.\",\r\n\t\t\t\ttitle: 'Save changes',\r\n\t\t\t});\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Get each form to apply its update.\r\n\t\t_.forEach(forms, (f) => FormUtils.applyChanges(f, obj, UpdaterOptions.AS_NEW));\r\n\r\n\t\t// Find the component that will save changes - either the primary component that was supplied or\r\n\t\t// the first child.\r\n\t\tlet changeSaver: ICheckSaveChanges | IEditComponent;\r\n\t\tif (respondsTo(component, 'saveChanges')) {\r\n\t\t\tchangeSaver = component;\r\n\t\t} else if (components.length > 0 && respondsTo(components[0], 'saveChanges')) {\r\n\t\t\tchangeSaver = components[0];\r\n\t\t}\r\n\r\n\t\tif (!changeSaver) {\r\n\t\t\tthrow new Error(\"Can't save - nothing implements saveChanges()\");\r\n\t\t}\r\n\r\n\t\t// Finally, call saveChanges with the updated object.\r\n\t\treturn changeSaver.saveChanges(obj, confirmWarning);\r\n\t}\r\n\r\n\tprivate componentHasChanges(component: IEditComponent | ICheckSaveChanges) {\r\n\t\t// If the component implements getComponents, check whether any of the components have changes.\r\n\t\tif (respondsTo(component, 'getComponents')) {\r\n\t\t\tlet components = _.filter((component as ICheckSaveChanges).getComponents(), (c) => c && c !== component);\r\n\r\n\t\t\t// Check whether any of the components has changes (recursing down).\r\n\t\t\tif (\r\n\t\t\t\t_.some(components, (c) => {\r\n\t\t\t\t\tlet result = this.componentHasChanges(c);\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t})\r\n\t\t\t) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (respondsTo(component, 'hasChanges')) {\r\n\t\t\tif (component.hasChanges()) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (respondsTo(component, 'getForm')) {\r\n\t\t\tif (FormUtils.hasChanges(component as IForm)) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate getComponents(component: IEditComponent | ICheckSaveChanges, foundComps: (IEditComponent | IForm)[]) {\r\n\t\tif (respondsTo(component, 'getComponents')) {\r\n\t\t\t// getComponents can return nulls, so filter those out.\r\n\t\t\tconst comps = (component as ICheckSaveChanges).getComponents().filter((c) => !!c);\r\n\t\t\t_.forEach(comps, (c) => {\r\n\t\t\t\tif (foundComps.includes(c)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tfoundComps.push(c);\r\n\r\n\t\t\t\t// Recurse down\r\n\t\t\t\tthis.getComponents(c, foundComps);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n\r\n@Component({\r\n\ttemplate: `\r\n\t\t

Save changes?

\r\n\t\t
This {{ data.objectType }} has unsaved changes.
\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t`,\r\n})\r\nexport class CheckSaveChangesDialogComponent {\r\n\tconstructor(\r\n\t\tpublic dialogRef: MatDialogRef,\r\n\t\t@Inject(MAT_DIALOG_DATA) public data: any\r\n\t) { }\r\n}\r\n\r\n@Component({\r\n\ttemplate: `\r\n\t\t

Saving...

\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t \r\n\t\t\t
\r\n\t\t\t
This {{ data.objectType }} is being saved.
\r\n\t\t
\r\n\t`,\r\n})\r\nexport class SaveProgressDialogComponent {\r\n\tconstructor(\r\n\t\tpublic dialogRef: MatDialogRef,\r\n\t\t@Inject(MAT_DIALOG_DATA) public data: any\r\n\t) { }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Location } from '@angular/common';\r\nimport {\r\n\tMatSnackBar,\r\n} from '@angular/material/snack-bar';\r\n\r\nimport { LoggerService } from './logger.service';\r\nimport { ConfigService } from './config.service';\r\nimport { CheckSaveChangesService } from './check-save-changes.service';\r\nimport { LoadingStateService } from './loading-state.service';\r\nimport { CrudService } from './crud.service';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { WarningsService } from './warnings.service';\r\nimport { TdDialogService } from '@covalent/core/dialogs';\r\n\r\nconst DEFAULT_SNACKBAR_DURATION = 2000;\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class CommonService {\r\n\tconstructor(\r\n\t\tpublic crud: CrudService,\r\n\t\tpublic http: HttpClient,\r\n\t\tpublic logger: LoggerService,\r\n\t\tpublic config: ConfigService,\r\n\t\tpublic location: Location,\r\n\t\tpublic loadingState: LoadingStateService,\r\n\t\tpublic snackBar: MatSnackBar,\r\n\t\tpublic checkSaveChanges: CheckSaveChangesService,\r\n\t\tpublic router: Router,\r\n\t\tpublic warnings: WarningsService,\r\n\t\tpublic dialog: TdDialogService,\r\n\t) { }\r\n\r\n\tshowSnackBarMessage(snackMessage: string, duration: number = DEFAULT_SNACKBAR_DURATION) {\r\n\t\tthis.snackBar.open(snackMessage, '', {\r\n\t\t\tduration\r\n\t\t});\r\n\t}\r\n\r\n\tisAlreadyHandledError(err: any): boolean {\r\n\t\tif (err instanceof HttpErrorResponse) {\r\n\t\t\tif (err.status === 401 || err.status === 503 || err.status === 504) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tget systemPreferences() {\r\n\t\treturn this.config.systemPreferences;\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { tap, map } from 'rxjs/operators';\r\nimport * as _ from 'lodash';\r\n\r\nimport {\r\n\tUserConfigDto,\r\n\tSystemPreferencesDto,\r\n\tProfessionalDto,\r\n} from 'app/services';\r\n\r\nexport class BookingResource {\r\n\tid: number;\r\n\tname: string;\r\n}\r\n\r\nexport class PracticeConfig {\r\n\tpracticeBookingResources: BookingResource[];\r\n}\r\n\r\n/**\r\n * Service for fetching and managing configuration for the currently authenticated user.\r\n * @export\r\n * @class ConfigService\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class ConfigService {\r\n\tprivate userConfigUrl = 'api/userConfig';\r\n\tprivate LOCALSTORAGEKEY_USERCONFIG = 'userConfig';\r\n\tprivate LOCALSTORAGEKEY_SYS_PREFS = 'sysPrefs';\r\n\tprivate LOCALSTORAGEKEY_PRACTICECONFIG = 'practiceConfig';\r\n\tprivate LOCALSTORAGEKEY_PROFESSIONALS = 'professionals';\r\n\r\n\tconstructor(private http: HttpClient) {}\r\n\r\n\t/**\r\n\t * Fetches the user config from the server for the currently authenticated user\r\n\t * and stores into local storage.\r\n\t * @returns {Observable}\r\n\t * @memberOf ConfigService\r\n\t */\r\n\tgetConfig(): Observable {\r\n\t\treturn this.http.get(this.userConfigUrl).pipe(\r\n\t\t\ttap(userConfig => {\r\n\t\t\t\tconst sysPreferences = userConfig.systemPreferences;\r\n\t\t\t\tuserConfig.systemPreferences = null;\r\n\r\n\t\t\t\tif (userConfig.isPractice) {\r\n\t\t\t\t\tconst practiceConfig = this.buildPracticeConfig(userConfig);\r\n\t\t\t\t\tsessionStorage.setItem(this.LOCALSTORAGEKEY_PRACTICECONFIG, JSON.stringify(practiceConfig));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tsessionStorage.removeItem(this.LOCALSTORAGEKEY_PRACTICECONFIG);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst professionals = this.buildProfessionals(userConfig);\r\n\t\t\t\tsessionStorage.setItem(this.LOCALSTORAGEKEY_PROFESSIONALS, JSON.stringify(professionals));\r\n\r\n\t\t\t\tsessionStorage.setItem(this.LOCALSTORAGEKEY_USERCONFIG, JSON.stringify(userConfig));\r\n\t\t\t\tsessionStorage.setItem(this.LOCALSTORAGEKEY_SYS_PREFS, JSON.stringify(sysPreferences));\r\n\t\t\t}));\r\n\t}\r\n\r\n\tgetMinVersion(): Observable {\r\n\t\tconst now = new Date();\r\n\t\treturn this.http.get('version.json?ts=' + now.toISOString()).pipe(\r\n\t\t\tmap((v: { minVersion: string}) => {\r\n\t\t\t\treturn v.minVersion || '';\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Clears the userConfig from local storage.\r\n\t * @memberOf ConfigService\r\n\t */\r\n\tclear() {\r\n\t\tsessionStorage.removeItem(this.LOCALSTORAGEKEY_USERCONFIG);\r\n\t\tsessionStorage.removeItem(this.LOCALSTORAGEKEY_SYS_PREFS);\r\n\t\tsessionStorage.removeItem(this.LOCALSTORAGEKEY_PRACTICECONFIG);\r\n\t\tsessionStorage.removeItem(this.LOCALSTORAGEKEY_PROFESSIONALS);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the current UserConfig object.\r\n\t * @readonly\r\n\t * @type {UserConfigDto}\r\n\t * @memberOf ConfigService\r\n\t */\r\n\tget config(): UserConfigDto {\r\n\t\treturn JSON.parse(sessionStorage.getItem(this.LOCALSTORAGEKEY_USERCONFIG)) || {};\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the current PracticeConfig object.\r\n\t * @readonly\r\n\t * @type {PracticeConfig}\r\n\t * @memberOf ConfigService\r\n\t */\r\n\tget practiceConfig(): PracticeConfig {\r\n\t\treturn JSON.parse(sessionStorage.getItem(this.LOCALSTORAGEKEY_PRACTICECONFIG)) || {};\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the list of available professionals\r\n\t * @readonly\r\n\t * @type {ProfessionalDto[]}\r\n\t * @memberOf ConfigService\r\n\t */\r\n\tget professionals(): ProfessionalDto[] {\r\n\t\treturn JSON.parse(sessionStorage.getItem(this.LOCALSTORAGEKEY_PROFESSIONALS)) || [];\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the SystemPreferences object.\r\n\t * @readonly\r\n\t * @type {SystemPreferncesDto}\r\n\t * @memberOf ConfigService\r\n\t */\r\n\tget systemPreferences(): SystemPreferencesDto {\r\n\t\treturn JSON.parse(sessionStorage.getItem(this.LOCALSTORAGEKEY_SYS_PREFS)) || {};\r\n\t}\r\n\r\n\tget professionalId(): number {\r\n\t\tconst config = this.config;\r\n\t\treturn config ? config.nonPracticeProfessionalId : -1;\r\n\t}\r\n\r\n\tprivate buildPracticeConfig(userConfig: UserConfigDto): PracticeConfig {\r\n\t\tconst resources = _.uniqBy(userConfig.bookingDiaryBookingResources, bdbr => bdbr.bookingResourceId);\r\n\r\n\t\tconst config: PracticeConfig = {\r\n\t\t\tpracticeBookingResources: resources.map(r => {\r\n\t\t\t\tid: r.bookingResourceId,\r\n\t\t\t\tname: r.bookingResourceName\r\n\t\t\t})\r\n\t\t};\r\n\t\treturn config;\r\n\t}\r\n\r\n\tprivate buildProfessionals(userConfig: UserConfigDto): ProfessionalDto[] {\r\n\t\tif (userConfig.isPractice) {\r\n\t\t\treturn userConfig.practiceProfessionals;\r\n\t\t} else {\r\n\t\t\treturn [ {\r\n\t\t\t\tid: userConfig.nonPracticeProfessionalId,\r\n\t\t\t\tname: userConfig.name\r\n\t\t\t}];\r\n\t\t}\r\n\t}\r\n}\r\n","export class ConfirmDialogModel {\r\n\tconstructor(public title: string, public message: string) {}\r\n}\r\n","import { MatDialog } from '@angular/material/dialog';\r\nimport { Injectable } from '@angular/core';\r\nimport { ConfirmDialogComponent } from '../confirm-dialog/confirm-dialog.component';\r\nimport { ConfirmDialogModel } from './confirm-dialog.model';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class ConfirmDialogService {\r\n\tconstructor(private dialog: MatDialog) { }\r\n\r\n\tconfirm(msg: string, title?: string) {\r\n\t\tconst dialogData = new ConfirmDialogModel(title || 'Confirm Action', msg);\r\n\r\n\t\tconst dialogRef = this.dialog.open(ConfirmDialogComponent, {\r\n\t\t\tmaxWidth: '400px',\r\n\t\t\tdata: dialogData\r\n\t\t});\r\n\r\n\t\treturn dialogRef.afterClosed().toPromise();\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { SaveResultDto, DeleteResultDto } from 'app/services/server-data';\r\nimport { JsonService } from './json.service';\r\nimport * as moment from 'moment';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class CrudService {\r\n\tconstructor(private http: HttpClient, private json: JsonService) {}\r\n\r\n\tsave(saveUrl: string, dto: T): Observable>\t{\r\n\t\tconst body = this.json.stringify(dto);\r\n\t\treturn this.http.post>(saveUrl, body)\r\n\t\t\t.pipe(tap(dto => this.convertISODate(dto))); \r\n\t}\r\n\r\n\tsaveWithInfo(saveUrl: string, dto: T): Observable>\t{\r\n\t\tconst body = this.json.stringify(dto);\r\n\t\treturn this.http.post>(saveUrl, body)\r\n\t\t\t\t\t.pipe(tap(dto => this.convertISODate(dto))); \r\n\t}\r\n\r\n\tdelete(url: string): Observable\t{\r\n\t\treturn this.http.delete(url)\r\n\t\t\t.pipe(tap(dto => this.convertISODate(dto))); \r\n\t}\r\n\r\n\tloadWithPost(loadUrl: string, params: {}): Observable {\r\n\t\tconst body = this.json.stringify(params);\r\n\t\treturn this.http.post(loadUrl, body)\r\n\t\t\t\t.pipe(tap(dto => this.convertISODate(dto))); \r\n\t}\r\n\r\n\t//This is a work around. The update of the API to .NET8 has caused dates to be transferred\r\n\t//in ISO 8601 format, instead of Microsoft Date Format.\r\n\tconvertISODate(dto: any) {\r\n\r\n\t\tif(typeof dto === 'undefined') return;\r\n\r\n\t\tObject.keys(dto).forEach(key => {\r\n\t\t\tvar field = dto[key];\r\n\t\t\tif (field === 'undefined' || field === null) return;\r\n\r\n\t\t\tif (field.constructor === Array) {\r\n\t\t\t\tfield.forEach(i => this.convertISODate(i));\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (typeof field === 'object' && !Array.isArray(field)) {\r\n\t\t\t\tthis.convertISODate(field);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (typeof field === 'string' || field instanceof String) {\r\n\t\t\t\tif (moment(field.toString(), \"YYYY-MM-DDTHH:mm:ss\", true).isValid())\r\n\t\t\t\t\tdto[key] = new Date (field.toString());\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tloadWithGet(loadUrl: string, params?: {}): Observable {\r\n\t\tlet httpParams: HttpParams;\r\n\r\n\t\tif (params) {\r\n\t\t\thttpParams = new HttpParams();\r\n\t\t\tfor (let key in params) {\r\n\t\t\t\tif (params.hasOwnProperty(key)) {\r\n\t\t\t\t\tconst element = params[key];\r\n\t\t\t\t\thttpParams = httpParams.append(key, element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.http.get(loadUrl, {\r\n\t\t\tparams: httpParams\r\n\t\t}).pipe(tap(dto => this.convertISODate(dto))); \r\n\t}\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { tap, catchError } from 'rxjs/operators';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { of } from 'rxjs';\r\n\r\nexport interface IConfig {\r\n\tcustomisations?: ICustomisation;\r\n\toptions?: IOptions;\r\n}\r\n\r\nexport interface ICustomisation {\r\n\ttoolbarBackgroundColor?: string;\r\n\ttoolbarColor: string;\r\n\tappTitle?: string;\r\n\ticonSvg?: string;\r\n\tlogoSvg?: string;\r\n\tshowCopyright?: boolean;\r\n\taccessibility?: boolean;\r\n}\r\n\r\nexport interface IOptions {\r\n\tenableB2cLogin?: boolean;\r\n\tenableB2cCorporateLogin?: boolean;\r\n\tdisableLegacyLogin?: boolean;\r\n\tisLangSelection?: boolean;\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class CustomisationService {\r\n\tcustomisation = {} as ICustomisation;\r\n\toptions = {} as IOptions;\r\n\t\r\n\tconstructor(private http: HttpClient, private title: Title) { }\r\n\r\n\tloadConfigurationData(): Promise {\r\n\t\treturn this.http\r\n\t\t\t.get('./assets/app-config.json')\r\n\t\t\t.pipe(\r\n\t\t\t\ttap(r => {\r\n\t\t\t\t\tconst customisations = r.customisations;\r\n\t\t\t\t\tconst options = r.options;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (customisations) {\r\n\t\t\t\t\t\tthis.customisation = customisations;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif (customisations && customisations.appTitle) {\r\n\t\t\t\t\t\t\tthis.title.setTitle(customisations.appTitle);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (options) {\r\n\t\t\t\t\t\tthis.options = options;\r\n\t\t\t\t\t}\r\n\t\t\t\t}),\r\n\t\t\t\tcatchError(() => {\r\n\t\t\t\t\t// Handle any error as having no customisation.\r\n\t\t\t\t\t// Likely to be a 404.\r\n\t\t\t\t\treturn of({} as IConfig);\r\n\t\t\t\t})\r\n\t\t\t)\r\n\t\t\t.toPromise();\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as moment from 'moment';\r\n\r\nimport { CrudService } from './crud.service';\r\nimport { AppointmentsDto, OpenActivityHeadersCountDto, OpenInvoicesCountDto } from 'app/services/server-data';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class DashboardService {\r\n\tconstructor(private crud: CrudService) {}\r\n\r\n\tgetDashboardAppointments(numAppointmentDays: number) {\r\n\t\tconst startDate = this.getDashboardAppointmentsStartDate();\r\n\t\treturn this.crud.loadWithGet('api/appointments/dashboard', {\r\n\t\t\tstartDate: startDate.toISOString(),\r\n\t\t\tnumDays: numAppointmentDays.toString()\r\n\t\t});\r\n\t}\r\n\r\n\tgetDashboardAppointmentsStartDate(): moment.Moment {\r\n\t\tconst startDate = moment().startOf('day');\r\n\t\treturn startDate;\r\n\t}\r\n\r\n\tgetDashboardAppointmentsEndDate(numAppointmentDays: number): moment.Moment {\r\n\t\tconst startDate = this.getDashboardAppointmentsStartDate();\r\n\t\tconst endDate = startDate.clone();\r\n\t\tendDate.add(numAppointmentDays - 1, 'day').startOf('day');\r\n\t\treturn endDate;\r\n\t}\r\n\r\n\tgetDashboardOpenActivityHeadersCount() {\r\n\t\treturn this.crud.loadWithGet('api/openActivityHeaders/count');\r\n\t}\r\n\r\n\tgetDashboardOpenInvoicesCount() {\r\n\t\treturn this.crud.loadWithGet('api/openInvoices/count');\r\n\t}\r\n}\r\n","import * as moment from 'moment';\r\n\r\n/**\r\n * Converts an ISO8601 format date (and time) to a GMT moment with the\r\n * same date and time.\r\n *\r\n * @export\r\n * @param {string} iso The ISO8601-format date/time.\r\n * @returns {moment.Moment} The moment.Moment\r\n */\r\nexport function isoStringToAmbiguousMoment(iso: string): moment.Moment {\r\n\treturn dateToAmbiguousMoment(moment(iso).toDate());\r\n}\r\n\r\n/**\r\n * Converts a (local) date (and time) to a GMT moment for use with the\r\n * FullCalendar component. E.g. 12 September 15:00 NZ time will be\r\n * converted to 12 Septenber 15:00 GMT.\r\n *\r\n * Calling toString() will return \"Tue Sep 12 2017 15:00:00 GMT+0000\"\r\n *\r\n * @export\r\n * @param {Date} date The date to convert.\r\n * @returns {moment.Moment} The resulting moment.Moment.\r\n */\r\nexport function dateToAmbiguousMoment(date: Date): moment.Moment {\r\n\treturn moment(date).utcOffset(0, true).utc();\r\n}\r\n\r\n/**\r\n * Applies the UTC offset to the provided date to create a UTC equivalent\r\n * Date and time. When serialized (by the toJSON function) it will\r\n * arrive at the server appearing to be a UTC DateTime with the same\r\n * apparent (wall-clock) date and time as the provided date.\r\n *\r\n * The server will then call toUnspecified() on it to convert it to an\r\n * Unspecified Kind thus appearing to be the correct date and time as was selected\r\n * on the client.\r\n *\r\n * E.g. 12 September 08:00 NZ time will be converted to 11 Septenber 20:00 GMT.\r\n * Calling toJSON() would give '2017-09-12T08:00:00.000Z'\r\n *\r\n * @export\r\n * @param {Date} date The date to convert.\r\n * @returns {Date} The resulting UTC Date.\r\n */\r\nexport function toUnspecified(date: Date): Date {\r\n\ttry{\r\n\t\tconst tzOffset = date.getTimezoneOffset(),\r\n\t\t\tm = moment(date).subtract(tzOffset, 'minutes');\r\n\t\treturn m.toDate();\t\r\n\t}\r\n\tcatch (err){\r\n\t\treturn date;\r\n\t}\r\n}\r\n\r\n/**\r\n * Adds the date's (local) timezone offset to GMT.\r\n * \r\n * @export\r\n * @param {Date} date The date to convert.\r\n * @returns {Date} The resulting Date with added timezoe offset.\r\n */\r\nexport function addDateTimezoneOffset(date: Date): Date {\r\n\tvar offset = new Date(date.toDateString());\r\n\toffset = new Date(offset.getTime() - (date.getTimezoneOffset() * 60000)); \r\n\treturn offset;\r\n}\r\n\r\n/**\r\n * Applies the UTC offset to the provided local date/time to create a local wall-clock time\r\n * for the apparent UTC date/time.\r\n *\r\n * e.g. Nov 29th 13:00 NZDT (GMT+13:00) is midnight UTC.\r\n * This function will return Nov 29th 00:00 NZDT (GMT+13:00)\r\n *\r\n * Suitable for converting the wall-clock time from the server to equivalent wall-clock time\r\n * in whatever timezone the browser is in.\r\n * @export\r\n * @param date A date/time\r\n * @returns {Date} The UTC wall-clock Date.\r\n */\r\nexport function toLocalWallClock(date: Date): Date {\r\n\tconst tzOffset = date.getTimezoneOffset(),\r\n\t\tm = moment(date).add(tzOffset, 'minutes');\r\n\treturn m.toDate();\r\n}\r\n\r\n/**\r\n * Returns a date which is midnight of the following date for a Date.\r\n * @export\r\n * @param date\r\n * @Returns {Date} The date/time which is midnight of the following day.\r\n */\r\nexport function toMidnightNextDay(date: Date): Date {\r\n\treturn moment(date).add(1, 'day').startOf('day').toDate();\r\n}\r\n\r\n/**\r\n * Returns a clone of a Date\r\n * @param date\r\n */\r\nexport function cloneDate(date: Date): Date {\r\n\treturn new Date(date.getTime());\r\n}\r\n\r\n/**\r\n * Adds a number of minutes to a date, returning a new Date.\r\n * @param date The date\r\n * @param minutes The number of minutes to add.\r\n */\r\nexport function addMinutes(date: Date, minutes: number): Date {\r\n\treturn moment(date).add(minutes, 'minutes').toDate();\r\n}\r\n\r\n/**\r\n * Adds a number of days to a date, returning a new Date.\r\n * @param date The date\r\n * @param days The number of days to add\r\n */\r\nexport const addDays = (date: Date, days: number): Date => {\r\n\treturn moment(date).add(days, 'days').toDate();\r\n};\r\n\r\n/**\r\n * Returns whether both dates are the same day, regardless of time.\r\n * @param date\r\n * @param otherDate\r\n */\r\nexport function isSameDay(date: Date, otherDate: Date): boolean {\r\n\treturn moment(date).isSame(otherDate, 'day');\r\n}\r\n\r\n/**\r\n * Returns whether both dates are the same.\r\n * @param date\r\n * @param otherDate\r\n */\r\nexport function isSame(date: Date, otherDate: Date): boolean {\r\n\treturn moment(date).isSame(otherDate);\r\n}\r\n\r\n/**\r\n * Returns the number of minutes between the start and end.\r\n * @param start\r\n * @param end\r\n */\r\nexport function minutesDiff(start: Date, end: Date): number {\r\n\treturn moment(end).diff(start, 'minutes');\r\n}\r\n\r\n/**\r\n * Gets a start of date timestamp (ms) for a Date.\r\n * @param date\r\n */\r\nexport function getStartOfDayTimestamp(date: Date): number {\r\n\treturn moment(date).startOf('day').toDate().getTime();\r\n}\r\n\r\n/**\r\n * Returns a new Date for the start of the day.\r\n */\r\nexport function getStartOfDayDate() {\r\n\treturn new Date(getStartOfDayTimestamp(new Date()));\r\n}\r\n\r\n/**\r\n * Gets a Date that is set to the start of the hour.\r\n * @param dateTime The date/time\r\n */\r\nexport const getStartOfHourTime = (dateTime: Date): Date => {\r\n\treturn moment(dateTime).startOf('hour').toDate();\r\n};\r\n\r\n/**\r\n * Gets a Date that is set to the start of the day.\r\n * @param dateTime The date/time\r\n */\r\nexport const getStartOfDayTime = (dateTime: Date): Date => {\r\n\treturn moment(dateTime).startOf('day').toDate();\r\n};\r\n\r\n/**\r\n * Gets a Date that is set to the start of the week.\r\n * @param dateTime The date/time\r\n */\r\nexport const getStartOfWeekTime = (dateTime: Date): Date => {\r\n\treturn moment(dateTime).startOf('week').toDate();\r\n};\r\n\r\n/**\r\n * Combines a date and a time to produce a Date that combines both.\r\n * @param date The date\r\n * @param time The time (with the date part ignored)\r\n */\r\nexport const combineDateTime = (date: Date, time: Date): Date => {\r\n\tconst startOfDayTime = moment(time).startOf('day').toDate().getTime();\r\n\tconst msOffset = moment(time).diff(startOfDayTime);\r\n\tconst combined = moment(date).startOf('day').add(msOffset).toDate();\r\n\treturn combined;\r\n};\r\n\r\nexport const formatTime = (time: Date): string => {\r\n\treturn moment(time).format('h:mm a');\r\n};\r\n\r\nexport const formatTimeWithDate = (time: Date): string => {\r\n\treturn moment(time).format('ll h:mm a');\r\n};\r\n\r\nexport const formatTimeRange = (startTime: Date, endTime: Date): string => {\r\n\treturn `${formatTime(startTime)} - ${formatTime(endTime)}`;\r\n};\r\n\r\nexport const formatTimeRangeWithDates = (startTime: Date, endTime: Date): string => {\r\n\treturn `${formatTimeWithDate(startTime)} - ${formatTimeWithDate(endTime)}`;\r\n};\r\n\r\nexport const formatDayOfWeek = (date: Date): string => {\r\n\treturn moment(date).format('ddd');\r\n};\r\n\r\nexport const formatDateShort = (date: Date): string => {\r\n\treturn moment(date).format('Do MMM');\r\n};\r\n","export class DialogResult {\r\n\tok: boolean;\r\n\tresult?: T;\r\n\r\n\tstatic ok(result: T): DialogResult {\r\n\t\treturn > {\r\n\t\t\tok: true,\r\n\t\t\tresult\r\n\t\t};\r\n\t}\r\n\r\n\tstatic cancel(): DialogResult {\r\n\t\treturn > {\r\n\t\t\tok: false\r\n\t\t};\r\n\t}\r\n}\r\n","import { ErrorHandler, Injectable } from '@angular/core'\r\nimport { HttpClient } from '@angular/common/http';\r\nimport * as StackTrace from 'stacktrace-js';\r\nimport { Injector } from '@angular/core';\r\nimport { environment } from '../../environments/environment';\r\n\r\nimport {\r\n\tClientErrorDto,\r\n\tUserConfigDto,\r\n\tBrowserEnvironmentDto,\r\n} from 'app/services';\r\n\r\nconst CHECK_INTERVAL: number = 10 * 60 * 1000; // 10 minutes\r\n\r\n@Injectable()\r\nexport class CustomErrorHandler extends ErrorHandler {\r\n\thttp: HttpClient;\r\n\tconstructor(injector: Injector) {\r\n\t\t// We rethrow exceptions, so operations like 'bootstrap' will result in an error\r\n\t\t// when an error happens. If we do not rethrow, bootstrap will always succeed.\r\n\t\tsuper();\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.http = injector.get(HttpClient);\r\n\t\t});\r\n\r\n\t\t// Periodically check for errors recorded in localStorage that didn't successfully send.\r\n\t\tsetInterval(this.checkErrors.bind(this), CHECK_INTERVAL);\r\n\t}\r\n\r\n\tcheckErrors() {\r\n\t\ttry {\r\n\t\t\tconst keys = Object.keys(localStorage);\r\n\t\t\tconst storageKey = keys.find(k => k.startsWith('client-error'));\r\n\t\t\tif (!storageKey) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst body = localStorage.getItem(storageKey);\r\n\r\n\t\t\tconst pendingId = `pending-${storageKey}`;\r\n\t\t\tlocalStorage.setItem(pendingId, body);\r\n\t\t\tlocalStorage.removeItem(storageKey);\r\n\r\n\t\t\tthis.http.post('api/errors', body, {\r\n\t\t\t\tresponseType: 'text'\r\n\t\t\t}).subscribe(logResult => {\r\n\t\t\t\tlocalStorage.removeItem(pendingId);\r\n\t\t\t}, err => {\r\n\t\t\t\tlocalStorage.removeItem(pendingId);\r\n\t\t\t\tlocalStorage.setItem(storageKey, body);\r\n\t\t\t});\r\n\t\t} catch (err) {\r\n\t\t\tconsole.error('Ignoring error while checking for errors', err);\r\n\t\t}\r\n\t}\r\n\r\n\thandleError(error) {\r\n\t\tif (!environment.production) {\r\n\t\t\tsuper.handleError(error);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\talert('Oops... an unexpected error has occurred.\\r\\nThis has been logged and will be investigated.');\r\n\r\n\t\tconst browserEnv: BrowserEnvironmentDto = {\r\n\t\t\tuserAgent: window.navigator.userAgent,\r\n\t\t\tscreenHeight: window.screen.height,\r\n\t\t\tscreenWidth: window.screen.width,\r\n\t\t\tinnerHeight: window.innerHeight,\r\n\t\t\tinnerWidth: window.innerWidth,\r\n\t\t\tcolorDepth: window.screen.colorDepth\r\n\t\t};\r\n\r\n\t\tconst userConfigStr = sessionStorage.getItem('userConfig');\r\n\t\tlet username = '';\r\n\t\tif (userConfigStr) {\r\n\t\t\tconst userConfig = JSON.parse(userConfigStr) as UserConfigDto;\r\n\t\t\tusername = userConfig.name;\r\n\t\t}\r\n\r\n\t\tconst dto: ClientErrorDto = {\r\n\t\t\tdateTime: new Date(),\r\n\t\t\tusername,\r\n\t\t\tclientVersion: environment.PACKAGE.version,\r\n\t\t\tenvironment: browserEnv,\r\n\t\t\tstackTraceError: false,\r\n\t\t\tmessage: error.message || error,\r\n\t\t\turl: window.location.toString(),\r\n\t\t\tstackTrace: ''\r\n\t\t};\r\n\r\n\t\t// Decode the stacktrace.\r\n\t\tStackTrace.fromError(error).then(r => {\r\n\t\t\tdto.stackTrace = JSON.stringify(r);\r\n\t\t\tconst body = JSON.stringify(dto);\r\n\r\n\t\t\t// Record in localStorage as pending in case it doesn't successfully send.\r\n\t\t\tconst storageId = `client-error-${dto.dateTime.toISOString()}`;\r\n\t\t\tconst pendingId = `pending-${storageId}`;\r\n\t\t\tlocalStorage.setItem(pendingId, body);\r\n\r\n\t\t\t// Try sending back to the server.\r\n\t\t\tthis.http.post('api/errors', body, {\r\n\t\t\t\tresponseType: 'text'\r\n\t\t\t}).subscribe(logResult => {\r\n\t\t\t\t// Successfully sent, remove pending item.\r\n\t\t\t\tlocalStorage.removeItem(pendingId);\r\n\t\t\t}, err => {\r\n\t\t\t\t// Failed to send - remove pending and replace with actual item\r\n\t\t\t\t// to be retried on the interval above.\r\n\t\t\t\tlocalStorage.removeItem(pendingId);\r\n\t\t\t\tlocalStorage.setItem(storageId, body);\r\n\t\t\t});\r\n\t\t}).catch(reason => {\r\n\t\t\t// Something went wrong decoding the stacktrace. Put it in localStorage to be picked up\r\n\t\t\t// and sent by the interval above.\r\n\t\t\tconst now = new Date();\r\n\t\t\tconst storageId = `client-error-${now.toISOString()}`;\r\n\t\t\tdto.stackTraceError = true;\r\n\t\t\tlocalStorage.setItem(storageId, JSON.stringify(dto));\r\n\t\t});\r\n\r\n\t\tsuper.handleError(error);\r\n\t}\r\n}","import { UntypedFormGroup, UntypedFormControl, } from '@angular/forms';\r\nimport { IForm } from 'app/interfaces';\r\n\r\nconst DISABLED = 'DISABLED';\r\n\r\nexport class UpdaterOptions {\r\n\tstatic NULL_IF_MISSING: UpdaterOptions = {\r\n\t\tnullIfMissing: true\r\n\t};\r\n\tstatic AS_NEW: UpdaterOptions = {\r\n\t\tasNew: true\r\n\t}\r\n\r\n\tnullIfMissing?: boolean;\r\n\tasNew?: boolean;\r\n}\r\n\r\nexport class FormUtils {\r\n\tstatic applyChanges(form: UntypedFormGroup, obj: Object, options: UpdaterOptions = undefined) {\r\n\t\tconst formValue = form.value;\r\n\r\n\t\tif (!obj) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tfor (const controlProp in form.controls) {\r\n\t\t\tif (form.controls.hasOwnProperty(controlProp)) {\r\n\t\t\t\tconst control = form.controls[controlProp] as UntypedFormControl;\r\n\t\t\t\tif (obj.hasOwnProperty(controlProp) || (options && options.asNew)) {\r\n\t\t\t\t\tif (options && options.nullIfMissing && !formValue.hasOwnProperty(controlProp)) {\r\n\t\t\t\t\t\tobj[controlProp] = undefined;\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tobj[controlProp] = control.value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tstatic hasChanges(formHolder: IForm | UntypedFormGroup) {\r\n\t\tlet form;\r\n\t\tif (formHolder instanceof UntypedFormGroup) {\r\n\t\t\tform = formHolder as UntypedFormGroup;\r\n\t\t} else {\r\n\t\t\tform = (formHolder as IForm).getForm();\r\n\t\t\tif (typeof formHolder.hasChanges === 'function') {\r\n\t\t\t\treturn formHolder.hasChanges();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn form.dirty;\r\n\t}\r\n\r\n\tstatic updateObject(formHolder: IForm, obj) {\r\n\t\tconst form = formHolder.getForm();\r\n\t\tif (typeof formHolder.applyChanges === 'function') {\r\n\t\t\tformHolder.applyChanges(obj);\r\n\t\t} else {\r\n\t\t\tFormUtils.applyChanges(form, obj);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Touches all controls on a form (recursively) and returns whether the form is valid.\r\n\t * Touching the controls will cause their validation message to be shown if they're invalid.\r\n\t * @static\r\n\t * @param {IForm | FormGroup} formHolder The FormGroup or IForm formHolder\r\n\t * @returns {boolean} True if the form is valid.\r\n\t * @memberof Updater\r\n\t */\r\n\tstatic isFormValid(formHolder: IForm | UntypedFormGroup): boolean {\r\n\t\tlet form;\r\n\t\tif (formHolder instanceof UntypedFormGroup) {\r\n\t\t\tform = formHolder as UntypedFormGroup;\r\n\t\t} else {\r\n\t\t\tform = (formHolder as IForm).getForm();\r\n\t\t}\r\n\r\n\t\tFormUtils.markFormGroupTouched(form);\r\n\t\tconst isValid = form.valid || form.status === DISABLED;\r\n\t\tif (!isValid) {\r\n\t\t\t// console.log('Invalid form', form);\r\n\t\t}\r\n\t\treturn isValid;\r\n\t}\r\n\r\n\t/**\r\n\t * Recursively touch all controls on a form.\r\n\t * @private\r\n\t * @static\r\n\t * @param {FormGroup} formGroup The form.\r\n\t * @memberof Updater\r\n\t */\r\n\tprivate static markFormGroupTouched(formGroup: UntypedFormGroup) {\r\n\t\t(Object).values(formGroup.controls).forEach(control => {\r\n\t\t\tcontrol.markAsTouched();\r\n\r\n\t\t\tif (control.controls) {\r\n\t\t\t\tcontrol.controls.forEach(c => this.markFormGroupTouched(c));\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { Injectable, ViewContainerRef, } from '@angular/core';\r\nimport { Location } from '@angular/common';\r\nimport { TdDialogService } from '@covalent/core/dialogs';\r\nimport * as _ from 'lodash';\r\n\r\nimport { LoggerService } from './logger.service';\r\nimport { CommonService } from './common.service';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class FormsService {\r\n\tconstructor(\r\n\t\tprivate location: Location,\r\n\t\tprivate logger: LoggerService,\r\n\t\tprivate dialog: TdDialogService,\r\n\t\tprivate common: CommonService,\r\n\t) { }\r\n\r\n\t/**\r\n\t * Generically handles an error loading something, displaying a message to the user and then\r\n\t * sending the browser location back.\r\n\t * @param {*} err The error\r\n\t * @param {string} typeName The name of the type being loaded.\r\n\t * @memberof FormsService\r\n\t */\r\n\thandleLoadError(err: any, typeName: string) {\r\n\t\tif (this.common.isAlreadyHandledError(err)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttypeName = typeName || 'object';\r\n\t\tlet title = 'Load error';\r\n\r\n\t\tlet message;\r\n\t\tif (err instanceof Error || err.message) {\r\n\t\t\tmessage = err.message;\r\n\t\t}\r\n\r\n\t\tif (err.title) {\r\n\t\t\ttitle = err.title;\r\n\t\t}\r\n\r\n\t\tif (err instanceof HttpErrorResponse) {\r\n\t\t\tif (err.status === 500) {\r\n\t\t\t\tmessage = '';\r\n\t\t\t} else {\r\n\t\t\t\tif (err.error) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tconst errorResult = JSON.parse(err.error);\r\n\t\t\t\t\t\tif (errorResult && errorResult.errors && errorResult.errors.length) {\r\n\t\t\t\t\t\t\tmessage = errorResult.errors[0];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} catch (ex) {\r\n\t\t\t\t\t\t// Ignore\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!message) {\r\n\t\t\tmessage = `A server error occurred loading the ${_.lowerFirst(typeName)}.`;\r\n\t\t\tthis.logger.logError(message, err);\r\n\t\t}\r\n\r\n\t\tthis.dialog.openAlert({\r\n\t\t\tmessage,\r\n\t\t\ttitle: title,\r\n\t\t}).afterClosed().subscribe(() => {\r\n\t\t\tthis.location.back();\r\n\t\t});\r\n\t}\r\n}\r\n","export * from './authentication.service';\r\nexport * from './auths.service';\r\nexport * from './config.service';\r\nexport * from './signalr.service';\r\nexport * from './announcements.service';\r\nexport * from './logger.service';\r\nexport * from './crud.service';\r\nexport * from './search-state.service';\r\nexport * from './check-save-changes.service';\r\nexport * from './utils.service';\r\nexport * from './forms.service';\r\nexport * from './warnings.service';\r\nexport * from './session-storage-management.service';\r\nexport * from './loading-state.service';\r\nexport * from './common.service';\r\nexport * from './json.service';\r\nexport * from './logout.service';\r\n\r\nexport * from './server-data';\r\nexport * from './form-utils';\r\nexport * from './date-utils';\r\n\r\nexport * from './dashboard.service';\r\nexport * from './ag-grid.service';\r\nexport * from './modal.service';\r\nexport * from './change-notification';\r\nexport * from './dialog-result';\r\n\r\nexport * from './error-handler';\r\n\r\nexport * from './confirm-dialog.model';\r\nexport * from './confirm-dialog.service';\r\n\r\nexport * from './syncfusion.service';\r\n","import { Injectable } from '@angular/core';\r\n\r\nconst debugDateConvert = false;\r\n\r\nfunction convertDate(body: {}, key: string, element: string) {\r\n\t// Check for a MS-format Date with optional TZ offset.\r\n\tconst matched = matchDate(element);\r\n\tif (matched) {\r\n\t\tconst localDate = convertMatchToLocalDate(key, matched);\r\n\t\t// Set the date.\r\n\t\tbody[key] = localDate;\r\n\t}\r\n}\r\n\r\nfunction matchDate(element: string): RegExpExecArray {\r\n\tconst matched = /\\/Date\\(([-]?\\d{1,15})([\\+-][01][0-3][0-5][0-9])?\\)\\//.exec(element);\r\n\treturn matched;\r\n}\r\n\r\nfunction convertMatchToLocalDate(key: string, matched: RegExpExecArray): Date {\r\n\tlet tzOffsetMs = 0;\r\n\tconst tz = matched[2] || '';\r\n\tif (tz) {\r\n\t\tconst hours = parseInt(tz.substr(0, tz.length - 2), 10);\r\n\t\tconst mins = parseInt(tz.substr(tz.length - 2, 2), 10);\r\n\t\tconst tzOffsetMins = mins + hours * 60;\r\n\t\ttzOffsetMs = tzOffsetMins * 60 * 1000;\r\n\t}\r\n\r\n\t// Create a UTC Date object.\r\n\tconst date = new Date(+matched[1] + tzOffsetMs);\r\n\t// Get the timezone offset for the local time (in minutes) and convert to ms.\r\n\tconst tzOffset = date.getTimezoneOffset() * 60 * 1000;\r\n\r\n\t// Create a local date by using the offset\r\n\tlet localDate = new Date(date.getTime() + tzOffset);\r\n\r\n\t// Check for a changeover of DST. If the timezone offsets are different then DST has changed over\r\n\t// so adjust the final date by the DST change amount.\r\n\tconst dst = (localDate.getTimezoneOffset() * 60 * 1000) - tzOffset;\r\n\tif (dst) {\r\n\t\tlocalDate = new Date(localDate.getTime() + dst);\r\n\t}\r\n\r\n\tif (debugDateConvert) {\r\n\t\tconsole.log(date + ' - ' + key + ': local: ' + localDate.toISOString() + ' ' + localDate + ' dst: ' + dst);\r\n\t}\r\n\r\n\treturn localDate;\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class JsonService {\r\n\tjsonFromString(data: string): any {\r\n\t\treturn JSON.parse(data, this.reviveDateTime);\r\n\t}\r\n\r\n\tstringify(data: any): string {\r\n\t\treturn JSON.stringify(data);\r\n\t}\r\n\r\n\trecurseResponseBody(body: {}) {\r\n\t\tif (!body) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tfor (let key in body) {\r\n\t\t\tif (body.hasOwnProperty(key)) {\r\n\t\t\t\tlet element = body[key];\r\n\t\t\t\tif (typeof element === 'object') {\r\n\t\t\t\t\tthis.recurseResponseBody(element);\r\n\t\t\t\t} else if (typeof element === 'string') {\r\n\t\t\t\t\tconvertDate(body, key, element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treviveDateTime(key: string, value: any): any {\r\n\t\tif (typeof value === 'string') {\r\n\t\t\t// Check for a MS-format Date with optional TZ offset.\r\n\t\t\tconst matched = matchDate(value);\r\n\t\t\tif (matched) {\r\n\t\t\t\treturn convertMatchToLocalDate(key, matched);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { UnmanagedCookieService } from 'ng2-cookies';\r\nimport { firstValueFrom } from 'rxjs'\r\nimport * as moment from 'moment';\r\nimport { CustomisationService } from './../services/customisation.service';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class LangService {\r\n\r\n\tdefaultLang: string = 'en';\r\n\tisLangSelection = false;\r\n\r\n\tget currentLang(): string {\r\n\t\treturn this._translate.currentLang;\r\n\t}\r\n\r\n\tget currentLocal() {\r\n\t\treturn `${this.currentLang}-CA`;\r\n\t}\r\n\r\n\tconstructor(\r\n\t\tprivate _translate: TranslateService,\r\n\t\t@Inject(DOCUMENT) private _document: any,\r\n\t\tprivate _cookie: UnmanagedCookieService,\r\n\t\tprivate _adapter: DateAdapter,\r\n\t\t@Inject(MAT_DATE_LOCALE) private _locale: string,\r\n\t\tcustomisationService: CustomisationService,\r\n\t) {\r\n\t\tthis.isLangSelection = customisationService.options.isLangSelection;\r\n\t\tthis.init();\r\n\t}\r\n\r\n\tasync init() {\r\n\t\tlet lang;\r\n\t\tif (this._cookie.check('lang')) {\r\n\t\t\tlang = this._cookie.get('lang');\r\n\t\t} else {\r\n\t\t\t[lang,] = navigator.language.split('-');\r\n\r\n\t\t\tif (!['fr', 'en'].includes(lang)) {\r\n\t\t\t\tlang = 'en';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.changeLang(lang);\r\n\t}\r\n\r\n\r\n\tchangeLang(lang: string) {\r\n\t\tif (lang === null || !this.isLangSelection)\r\n\t\t\tlang = this.defaultLang;\r\nconsole.log('Set lang cookie = ' + lang);\r\n\t\tthis._cookie.set('lang', lang);\r\n\t\tthis._translate.use(lang);\r\n\t\tthis._document.documentElement.lang = this.currentLang;\r\n\t\tthis._locale = this.currentLocal;\r\n\t\tthis._adapter.setLocale(this.currentLocal);\r\n\t\tmoment.locale(this.currentLocal);\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class LoadingStateService {\r\n\tpublic loading$ = new BehaviorSubject(false);\r\n\r\n\tsetLoading(state: boolean) {\r\n\t\tthis.loading$.next(state);\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n/**\r\n * A very simple logging service - to be enhanced.\r\n * @export\r\n * @class LoggerService\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class LoggerService {\r\n\tlogError(error, ...args) {\r\n\t\tif (args.length) {\r\n\t\t\tconsole.error(error, args);\r\n\t\t} else {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t}\r\n\r\n\tlogWarning(warning, ...args) {\r\n\t\tif (args.length) {\r\n\t\t\tconsole.warn(warning, args);\r\n\t\t} else {\r\n\t\t\tconsole.warn(warning);\r\n\t\t}\r\n\t}\r\n\r\n\tlogInfo(info, ...args) {\r\n\t\tif (args.length) {\r\n\t\t\tconsole.info(info, args);\r\n\t\t} else {\r\n\t\t\tconsole.info(info);\r\n\t\t}\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class LogoutService {\r\n\tloggingOut: boolean;\r\n\r\n\tconstructor(private router: Router) {}\r\n\r\n\tforceLogin() {\r\n\t\tthis.loggingOut = true;\r\n\t\tthis.router.navigate(['/login']);\r\n\t}\r\n}\r\n","export class MessageDialogModel {\r\n\tconstructor(public title: string, \r\n\t\tpublic message: string,\r\n\t\tpublic subMessage: string\r\n\t\t) {}\r\n}\r\n","import { MatDialog } from '@angular/material/dialog';\r\nimport { Injectable } from '@angular/core';\r\nimport { MessageDialogComponent } from '../message-dialog/message-dialog.component';\r\nimport { MessageDialogModel } from './message-dialog.model';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class MessageDialogService {\r\n\tconstructor(private dialog: MatDialog) {}\r\n\r\n\tmessage(message: string, subMessage?: string, title?: string) {\r\n\r\n\t\tconst dialogData = new MessageDialogModel(title, message, subMessage);\r\n\r\n\t\tconst dialogRef = this.dialog.open(MessageDialogComponent, {\r\n\t\t\tmaxWidth: '600px',\r\n\t\t\tdata: dialogData\r\n\t\t});\r\n\t\t\r\n\t\treturn dialogRef.afterClosed().toPromise();\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class ModalService {\r\n\tpublic isOpen: boolean;\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport interface IActiveDirectoryB2CConfig {\r\n\tclientId: string;\r\n\tscopes?: string;\r\n\tsignInAuthority: string;\r\n\tsignInAuthorityCorp: string;\r\n\tpasswordResetAuthority: string;\r\n\tredirectUri: string;\r\n\tknownAuthorities: string[];\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class MsalConfigurationService {\r\n\tprivate configUrl = './assets/msal-config.json';\r\n \tprivate config: any;\r\n\r\n \tconstructor(private http: HttpClient) {\r\n\t}\r\n\r\n\tloadConfig(): Observable {\r\n\t\treturn this.http.get(this.configUrl);\r\n\t}\r\n\r\n\tgetConfig(): IActiveDirectoryB2CConfig {\r\n\t\treturn this.config;\r\n\t}\r\n\r\n\tsetConfig(config: any): void {\r\n\t\tthis.config = config;\r\n\t}\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { MsalService, MSAL_INSTANCE } from '@azure/msal-angular';\r\nimport { PublicClientApplication } from '@azure/msal-browser';\r\nimport { MsalConfigurationService } from './msal-configuration.service';\r\n\r\n/*\r\n * Needed to force an update to the MS Authentication parameters\r\n */\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MsalDynamicConfigService {\r\n constructor(\r\n @Inject(MSAL_INSTANCE) private msalInstance: PublicClientApplication,\r\n private configService: MsalConfigurationService\r\n ) {\r\n const config = this.configService.getConfig();\r\n \tconst currentConfig = this.msalInstance.getConfiguration();\r\n\r\n currentConfig.auth.clientId = config.clientId;\r\n currentConfig.auth.redirectUri = config.redirectUri;\r\n currentConfig.auth.knownAuthorities = config.knownAuthorities;\r\n //Note that config.authority is set in login.components (as it changes depending on external / interna; user)\r\n }\r\n}","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class SearchStateService {\r\n\tlastState: string;\r\n}\r\n","import { Guid } from \"./utils.service\";\r\n\r\n// Warning: Generated code!\r\nexport enum UIType {\r\n\tTabControl,\r\n\tPickListGrid,\r\n\tIndividualGrid,\r\n\tControlContainer,\r\n\tPickList,\r\n\tTextBox,\r\n\tTextBoxMulti,\r\n\tNumericTextBoxInt,\r\n\tNumericTextBoxDec,\r\n\tHourMinuteTextBox,\r\n\tPickAndAddTwoNum,\r\n\tTwoNum,\r\n\tRichTextBox,\r\n\tTabContainerIndividualGrid\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class ActivityAppointmentEditCustomerLoadParams {\r\n\teditDto: ActivityAppointmentEditDto;\r\n\tbusinessRoleId: number;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class ActivityQueryParams {\r\n\tstartDate: Date;\r\n\tendDate: Date;\r\n\tprofessionalId: number;\r\n}\r\n\r\n// Warning: Generated code! - TO BE DEVELOPED\r\nexport class ResourceHubParams {\r\n\t\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class ResourceHubDto {\r\n\tfolders: ResourceHubFolderDto[];\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class ResourceHubFolderDto {\r\n\tfolderName: string;\r\n\tfiles: ResourceHubFileDto[];\r\n\tfileCount: number;\r\n\texpanded: boolean = false;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class ResourceHubFileDto {\r\n\tfileName: string;\r\n\tloadedDate: Date;\r\n\tid: number;\r\n\tmimeType: string;\r\n}\r\n\r\nexport class CredentialsDto {\r\n\tregistrations: CredentialDto[];\r\n qualifications: CredentialDto[];\r\n specialisations: CredentialDto[];\r\n languages: CredentialDto[];\r\n}\r\n\r\nexport class CredentialDto {\r\n\tid: number;\r\n\tname: string;\r\n\tenabled: boolean;\r\n\tnumber?: string;\r\n\tdate1?: Date;\r\n\tdate1Changed: boolean;\r\n\tdate2?: Date;\r\n\tdate2Changed: boolean;\r\n\tselected: boolean;\r\n}\r\n\r\nexport class ProfessionalRatesDto {\r\n\tcurrency: string;\r\n\trates: RateDto[];\r\n}\r\n\r\nexport class RateDto {\r\n\tdiscriminator: string;\r\n\ttype: string;\r\n\tlocation: string;\r\n\tactivityType: string;\r\n\trate: string;\r\n}\r\n\r\nexport class ProfessionalChecksDto {\r\n\tchecks: ProfessionalCheckDto[];\r\n}\r\n\r\nexport class ProfessionalCheckDto {\r\n\tid: number;\r\n\tname: string;\r\n\tenabled: boolean;\r\n\tisRenewal: boolean;\r\n\trenewalDate: Date;\r\n\trenewalDateChanged: boolean;\r\n\tselected: boolean;\r\n}\r\n\r\nexport class ProfessionalAttachmentDto {\r\n\tfiles: ProfessionalFileDto[];\r\n}\r\n\r\nexport class ProfessionalFileDto {\r\n\tfileName: string;\r\n\tloadedDate: Date;\r\n\tid: number;\r\n\tmimeType: string;\r\n}\r\n\r\nexport class ProfessionalAttachmentInfoDto {\r\n\tfileSize: number;\r\n fileExtension: string;\r\n updatedDateTime: Date;\r\n urlKey: string;\r\n}\r\n\r\nexport class ProfessionalNotificationsDto {\r\n\tnotifications: ProfessionalNotificationDto[];\r\n}\r\n\r\nexport class ProfessionalNotificationDto {\r\n\tid: number;\r\n\tname: string;\r\n\tenabled: boolean;\r\n\tselected: boolean;\r\n}\r\n\r\nexport class ProfessionalInsurancesDto {\r\n\tinsurances: ProfessionalInsuranceDto[];\r\n}\r\n\r\nexport class ProfessionalInsuranceDto {\r\n\tid: number;\r\n\tname: string;\r\n\tselected: boolean;\r\n\texpiryDate?: Date;\r\n\texpiryDateChanged: boolean;\r\n\tprovider: string;\r\n\tenabled: boolean;\r\n}\r\n\r\nexport class ProfessionalWorkHSsDto {\r\n\tworkHealthSafeties: ProfessionalWorkHSDto[];\r\n}\r\n\r\nexport class ProfessionalWorkHSDto {\r\n\tid: number;\r\n\tname: string;\r\n\tenabled: boolean;\r\n\tselected: boolean;\r\n}\r\n\r\nexport class ProfessionalOfficeDto {\r\n\toffices: AddressDto[];\r\n}\r\n\r\nexport class CountriesDto {\r\n\tcountries: CountryLookupDto[];\r\n}\r\n\r\nexport class AddressDto {\r\n\tid: number;\r\n\tname: string\r\n\taddressLine1: string \r\n\taddressLine2: string\r\n\taddressLine3: string\r\n\tsuburb: string\r\n\tisSuburb: boolean\r\n\tcityId: number \r\n\tcity: string \r\n\tpostcode: string \r\n\tstate: string \r\n\tisState: boolean\r\n\tcountry: string \r\n}\r\n\r\nexport class CommDto {\r\n\tid: number;\r\n\tareaCode: string;\r\n\ttext: string;\r\n\tcountryId: number;\r\n}\r\n\r\nexport class CitiesDto {\r\n\tcities: CityDto[];\r\n}\r\n\r\nexport class CityDto {\r\n\tid: number;\r\n\tcity: string\r\n\tpostcode: string \r\n\tsuburb: string\r\n\tisSuburb: boolean\r\n\tstate: string \r\n\tstateShortName: string \r\n\tisState: boolean\r\n\tcountry: string \r\n}\r\n\r\nexport class CitiesLookupDto {\r\n\tcity: string\r\n\tpostcode: string \r\n\tsuburb: string\r\n\tstateShortName: string \r\n\tcountryId: number \r\n}\r\n\r\nexport class ProfessionalContactDto {\r\n\tcountries: CountryLookupDto[];\r\n\tisMobile: boolean; \r\n\tisPhone: boolean;\r\n\tisEmail: boolean; \r\n\tmobile: CommDto; \r\n\tphone: CommDto;\r\n\temail: CommDto; \r\n\tmailAddress: AddressDto;\r\n\tphyiscalAddress: AddressDto;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class ActivityTypeAvailabilityEditParams {\r\n\tbookingDiaryId: number;\r\n\tforDate: Date;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class AppointmentDateRangeParams {\r\n\tstartDate: Date;\r\n\tendDateExclusive: Date;\r\n\twithAvailabilities: boolean;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class AppointmentDeleteParams {\r\n\tappointmentId: number;\r\n\tappointmentType: AppointmentType;\r\n\tactivityAppointmentConfirm: DeleteActivityAppointmentConfirmDto;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class AppointmentEditParams {\r\n\tappointmentId: number;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class AvailabilityDateRangeParams {\r\n\tstartDate: Date;\r\n\tendDateExclusive: Date;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class AvailabilitySaveParams {\r\n\tstartDate: Date;\r\n\tendDateExclusive: Date;\r\n\tedits: AvailabilityEditDto[];\r\n\tstartTimeEdits: AvailabilityStartTimeEditDto[];\r\n\trecurringStatuses: AvailabilityDayRecurringStatusEditDto[];\r\n\tavailabilityActivityTypes: AvailabilityActivityTypeEditDto[];\r\n\tapplyToAllWeekdayAvailabilityBookingDiaryIDs: number[];\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class CustomerSearchParams {\r\n\tsearchText: string;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class GlobalCaseSearchParams {\r\n\tsearchText: string;\r\n\tdateFrom?: Date;\r\n\tdateTo?: Date;\r\n\topenOnly: boolean;\r\n\tserviceTypeId?: number;\r\n\tshowAll: boolean;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class GlobalInvoiceSearchParams {\r\n\tsearchText: string;\r\n\tdateFrom?: Date;\r\n\tdateTo?: Date;\r\n\tactiveOnly: boolean;\r\n\tshowAll: boolean;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class NewAppointmentParams {\r\n\tappointmentType: AppointmentType;\r\n\tbookingDiaryId: number;\r\n\tactivityHeaderId?: number;\r\n\tstartDateTime: Date;\r\n\tserviceTypeId?: number;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class TimeZoneInfoParams {\r\n\tianaTimeZone: string;\r\n\tdiaryMsTimeZoneId: string;\r\n\tclientMsTimeZoneId: string;\r\n\tdiaryStartDateTime: Date;\r\n\tclientStartDateTime: Date;\r\n\tcalculateClientTime: boolean;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class AttachmentSaveInfoDto {\r\n\tactivityHeaderId: number;\r\n\tnoteId: number;\r\n\tattachmentId: number;\r\n\tfileName: string;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport abstract class BaseLoadDto {\r\n\tloadFailed: boolean;\r\n\twarnings: string[];\r\n\terror: string;\r\n\terrorTitle: string;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class IClientEditLoadDto {\r\n\tcountries: CountryWithStatesLookupDto[];\r\n\torganisation: OrganisationDto;\r\n\tcontractInfo: ContractInfoDto;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class ActivityHeaderEditLoadDto extends BaseLoadDto implements IClientEditLoadDto {\r\n\teditDto: ActivityHeaderEditDto;\r\n\tactivityStatuses: ActivityStatusLookupDto[];\r\n\tcountries: CountryWithStatesLookupDto[];\r\n\tnoteTypes: NoteTypeLookupDto[];\r\n\treferredTos: ReferredToLookupDto[];\r\n\torganisation: OrganisationDto;\r\n\tisReferredToLookup: boolean;\r\n\tisReferredToEditable: boolean;\r\n\tisReadOnly: boolean;\r\n\tactivityEntries: ActivityEntryInfoDto[];\r\n\tcontractInfo: ContractInfoDto;\r\n\tcontractInfoEap: ContractInfoDto;\r\n\tactivityHeaderExtended: ActivityHeaderExtendedDto;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport abstract class ConfirmableWarningEditDto {\r\n\tconfirmWarnings: boolean;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class IClientEditDto {\r\n\tfileNumber: number;\r\n\tfirstName: string;\r\n\tlastName: string;\r\n\tisDescriptionOnly: boolean;\r\n\tdescription: string;\r\n\tcommunicationAddresses: CommunicationAddressDto[];\r\n\tadditionalSessions: AdditionalSessionDto[];\r\n\tsocialServicesContactDetails: string;\r\n\tsocialServicesContactedDate?: Date;\r\n\tisSelfServiceRegistered: boolean;\r\n\tactivityHeaderExtended: ActivityHeaderExtendedDto;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class IOrganisationPartEditDto {\r\n\torganisationGroupId?: number;\r\n\torganisationDivisionId?: number;\r\n\torganisationDepartmentId?: number;\r\n}\r\n\r\n// Warning: Generated code! \r\nexport class ActivityHeaderEditDto extends ConfirmableWarningEditDto implements IOrganisationPartEditDto {\r\n\tactivityHeaderId: number;\r\n\tfileNumber: number;\r\n\thasExtendedActivityHeader: boolean;\r\n\tfirstName: string;\r\n\tclientPartnerFirstName: string;\r\n\tlastName: string;\r\n\tclientPartnerLastName: string;\r\n\tclientDoB: Date;\r\n\tclientDoBChanged: boolean;\r\n\tisDescriptionOnly: boolean;\r\n\tdescription: string;\r\n\tactivityStatusId: number;\r\n\tdateOpened: Date;\r\n\tdateClosed?: Date;\r\n\treferredToText: string;\r\n\treferredToId?: number;\r\n\tsocialServicesContactDetails: string;\r\n\tsocialServicesContactedDate?: Date;\r\n\tisSelfServiceRegistered: boolean;\r\n\torganisationGroupId?: number;\r\n\torganisationDivisionId?: number;\r\n\torganisationDepartmentId?: number;\r\n\tcustomerName: string;\r\n\temployerName: string;\r\n\tserviceType: string;\r\n\thasStatistics: boolean;\r\n\thasStatisticHeaders: boolean;\r\n\thasStatisticClients: boolean;\r\n\tisClosed: boolean;\r\n\tisShowClientPartner: boolean;\r\n\tadditionalSessions: AdditionalSessionDto[];\r\n\tcommunicationAddresses: CommunicationAddressDto[];\r\n\tclientPartnerCommunicationAddresses: CommunicationAddressDto[];\r\n\tactivityNotes: ActivityNoteInfoDto[];\r\n\tstatisticContainers: StatisticContainerDto[];\r\n\tstatisticClients: StatisticClientListDto[];\r\n\tstatisticHeaders: StatisticHeaderListDto[];\r\n\tcriticalIncidentDetails: CriticalIncidentDetailEditDto;\r\n\tactivityServiceTypeDetails: ActivityServiceTypeDetailEditDto;\r\n\tactivityHeaderExtended: ActivityHeaderExtendedDto;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class ActivityServiceTypeDetailEditDto {\r\n\ttypeLabel: string;\r\n\tserviceTypeLabel: string;\r\n\ttype: string;\r\n\tdescription: string;\r\n\tnumberOfPeopleInvolved: number;\r\n\tdateRequestReceived?: Date;\r\n\tdateApproved?: Date;\r\n\tdateAccountManagerInformed?: Date;\r\n\tdateReportSent?: Date;\r\n\tdateServiceRequired?: Date;\r\n\tisReportRequired: boolean;\r\n\tdateServiceRequiredTo?: Date;\r\n\tinterventions? : string;\r\n\trecommendations?: string;\r\n\tisFollowUpRequired: boolean;\r\n\tfollowUpRequirements?: string;\r\n\tfollowUpDate?: Date;\r\n\tisOnsiteSupportRequired: boolean;\r\n\tisBookingLinkRequired: boolean;\r\n\tsupportLocations: SupportLocationDto[];\r\n\tinvolvedPersons: InvolvedPersonDto[];\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class CriticalIncidentDetailEditDto {\r\n\tincidentType: string;\r\n\tisReportRequired: boolean;\r\n\tisOnsiteSupportRequired: boolean;\r\n\tdescription: string;\r\n\tnumberOfPeopleInvolved: number;\r\n\tdateOfIncident?: Date;\r\n\tdateOfResponse?: Date;\r\n\tdateAccountManagerInformed?: Date;\r\n\tdateReportSent?: Date;\r\n\tinterventions? : string;\r\n\trecommendations?: string;\r\n\tfollowUpRequirements?: string;\r\n\tprofessionalNotes: string;\r\n\tsupportLocations: SupportLocationDto[];\r\n\tinvolvedPersons: InvolvedPersonDto[];\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class SupportLocationDto {\r\n\tname: string;\r\n\tonsiteContact: string;\r\n isParkingAvailable: boolean;\r\n\taddressLine1: string;\r\n\taddressLine2: string;\r\n\taddressLine3: string;\r\n\tsuburb: string;\r\n\tcity: string;\r\n\tpostcode: string;\r\n\tstate: string;\r\n\tcountry: string;\r\n\tservicePeriods: ServicePeriodDto[];\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class InvolvedPersonDto {\r\n\tname: string;\r\n\trole: string;\r\n\tnotes: string;\r\n\tauthorisedDate?: Date;\r\n\tonsiteLocation?: string;\r\n}\r\n\r\nexport class ServicePeriodDto {\r\n\tfrom: Date;\r\n\tTo?: Date;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport abstract class ActivityEntryInfoBaseDto {\r\n\tid: number;\r\n\tactivityDateTime: Date;\r\n\tunitsRaw: number;\r\n\tappointmentSessionNumber: number;\r\n\tactivityServiceDescription: string;\r\n\tactivityTypeDescription: string;\r\n\tisDidNotAttend: boolean;\r\n\twasNoShow: boolean;\r\n\tisAppointment: boolean;\r\n\tisTime: boolean;\r\n\tprofessionalName: string;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class ActivityEntryListInfoDto extends ActivityEntryInfoBaseDto {\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class ActivityEntryInfoDto extends ActivityEntryInfoBaseDto {\r\n\tisCancelledChargeable: boolean;\r\n\tappointmentId: number;\r\n\tappointmentType: AppointmentType;\r\n\tbookingDiaryId: number;\r\n\tprofessionalId: number;\r\n\tmsOfficeTimeZoneId: string;\r\n\tresourceOfficeName: string;\r\n\tnoteTextRtf: string;\r\n\tshowNewAppointmentDeleteStyle: boolean;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport abstract class ActivityNoteBaseDto {\r\n\tid: number;\r\n\tsubject: string;\r\n\tnoteDateTime: Date;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class ActivityNoteInfoDto extends ActivityNoteBaseDto {\r\n\tupdatedByUser: string;\r\n\tupdatedDateTime: Date;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class ActivityNoteEditDto extends ActivityNoteBaseDto {\r\n\tnoteTypeId?: number;\r\n\tnoteContent: string;\r\n\tnoteAttachments: NoteAttachmentInfoDto[];\r\n}\r\n\r\n// Warning: Generated code!\r\nexport abstract class NoteAttachmentBaseDto {\r\n\tid: number;\r\n\tfileName: string;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class NoteAttachmentInfoDto extends NoteAttachmentBaseDto {\r\n\tnoteId: number;\r\n\tfileSize: number;\r\n\tfileExtension: string;\r\n\tupdatedDateTime: Date;\r\n\tupdatedByUser: string;\r\n\turlKey: string;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class NoteAttachmentEditDto extends NoteAttachmentBaseDto {\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class ActivityHeaderExtendedDto {\r\n\tid: number;\r\n\tmedicationTaken: string;\r\n\tdisabilitiesToConsider: string;\r\n\tisPreferPrivateTransport: boolean;\r\n\tisPreferPublicTransport: boolean;\r\n\tisReviewForEachSession: boolean;\r\n\tisReviewForFinalSession: boolean;\r\n\thasUsedServiceBefore: boolean;\r\n\tisRedFlag: boolean;\r\n\tredFlagAlternativeAppearance?: number;\r\n\tredFlagStatusDate?: Date;\r\n\tusedService: string;\r\n\tusedProfessional: string;\r\n\tusedServiceMonth?: Date;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class ActivityHeaderSearchResultDto {\r\n\tid: number;\r\n\tfileNumber: number;\r\n\tname: string;\r\n\tactivityRole: string;\r\n\tactivityStatus: string;\r\n\tserviceType: string;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class ActivityQueryDto {\r\n\tprofessionalBusinessOrganisation: string;\r\n\tcustomerBusinessOrganisation: string;\r\n\tprofessionalName: string;\r\n\tpractice: string;\r\n\tisDna: boolean;\r\n\tfileNumber?: number;\r\n\tactivityStatus: string;\r\n\tclientName: string;\r\n\temployerName: string;\r\n\tcustomerName: string;\r\n\tactivityType: string;\r\n\tactivityStartDateTime: Date;\r\n\tsessionNumber?: number;\r\n\tcostRate: number;\r\n\tunits: number;\r\n\tcostAmount: number;\r\n\tserviceTypeDescription: string;\r\n\tserviceDescription: string;\r\n\tchargeRateTypeDescription: string;\r\n\tbookingResourceName: string;\r\n\tprofessionalInvoiceNumber?: number;\r\n\tprofessionalInvoiceReferenceNumber: string;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class ActivityQueryResultDto {\r\n\tentries: ActivityQueryDto[];\r\n\texcelExportBase64: string;\r\n\texcelExportFilename: string;\r\n}\r\n\r\n\r\n// Warning: Generated code!\r\nexport class AppointmentEditLoadDto extends BaseLoadDto implements IClientEditLoadDto {\r\n\teditDto: AppointmentEditDto;\r\n\tactivityTypes: ActivityTypeLookupDto[];\r\n\tleaveTypes: LeaveTypeLookupDto[];\r\n\tcountries: CountryWithStatesLookupDto[];\r\n\ttimeZones: TimeZoneLookupDto[];\r\n\tappointmentHistories: AppointmentHistoryInfoDto[];\r\n\torganisation: OrganisationDto;\r\n\tavailableServices: ServiceLookupDto[];\r\n\tcontractInfo: ContractInfoDto;\r\n\temployers: EmployerLookupDto[];\r\n\tactivityHeaderExtended: ActivityHeaderExtendedDto;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class AppointmentEditResizeOrMoveDto {\r\n\tappointmentId: number;\r\n\tdiaryStartTime: Date;\r\n\tdiaryEndTime: Date;\r\n\tbookingDiaryId: number;\r\n\tconfirmWarnings: boolean;\r\n\tmoveReasonId?: number;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport abstract class AppointmentEditDto extends ConfirmableWarningEditDto {\r\n\tappointmentId: number;\r\n\tdiaryStartTime: Date;\r\n\tdiaryEndTime: Date;\r\n\tbookingDiaryId: number;\r\n\tappointmentType: AppointmentType;\r\n\tdisplayInPersonOnlyMessage: boolean;\r\n\textendedDetails: boolean;\r\n\tmoveReasonId?: number;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class PrivateAppointmentEditDto extends AppointmentEditDto {\r\n\tappointmentType: AppointmentType;\r\n\tname: string;\r\n\tlocation: string;\r\n\tnotes: string;\r\n\thasRecurrence: boolean;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class LeaveAppointmentEditDto extends AppointmentEditDto {\r\n\tappointmentType: AppointmentType;\r\n\tlocation: string;\r\n\tcomment: string;\r\n\tleaveTypeId: number;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class ActivityAppointmentEditDto extends AppointmentEditDto implements IOrganisationPartEditDto {\r\n\tappointmentType: AppointmentType;\r\n\tisReadOnly: boolean;\r\n\twasNewActivityHeader: boolean;\r\n\thasExtendedActivityHeader: boolean;\r\n\tactivityHeaderId: number;\r\n\tfileNumber: number;\r\n\tcreateNewActivityHeader: boolean;\r\n\tserviceTypeId: number;\r\n\tactivityTypeId?: number;\r\n\tserviceId?: number;\r\n\tfirstName: string;\r\n\tclientPartnerFirstName: string;\r\n\tlastName: string;\r\n\tclientPartnerLastName: string;\r\n\tisDescriptionOnly: boolean;\r\n\tdescription: string;\r\n\tisShowClientPartner: boolean;\r\n\tcontactedSocialServiceDate?: Date;\r\n\tshowNewAppointmentDeleteStyle: boolean;\r\n\tdidNotAttend: boolean;\r\n\twasNoShow: boolean;\r\n\tisInvoiced: boolean;\r\n\tisExcludeAsSession: boolean;\r\n\tcustomerName: string;\r\n\tcustomerNameFromSearch: string;\r\n\temployerName: string;\r\n\tisCustomerSearchable: boolean;\r\n\tcustomerId?: number;\r\n\temployerId?: number;\r\n\torganisationGroupId?: number;\r\n\torganisationDivisionId?: number;\r\n\torganisationDepartmentId?: number;\r\n\tnotes: string;\r\n\tusesTimeZone: boolean;\r\n\tclientTimeZoneMinutesOffset: number;\r\n\tdiaryTimeZoneName: string;\r\n\tclientTimeZoneName: string;\r\n\tclientSystemTimeZoneName: string;\r\n\tclientMsOfficeTimeZoneId: string;\r\n\tdiaryMsOfficeTimeZoneId: string;\r\n\tcountryId?: number;\r\n\tstateId?: number;\r\n\tclientStartTime?: Date;\r\n\tclientEndTime?: Date;\r\n\tforcedDuration?: number;\r\n\tmaxDuration?: number;\r\n\tadditionalSessions: AdditionalSessionDto[];\r\n\tcommunicationAddresses: CommunicationAddressDto[];\r\n\tclientPartnerCommunicationAddresses: CommunicationAddressDto[];\r\n\tsocialServicesContactDetails: string;\r\n\tsocialServicesContactedDate?: Date;\r\n\tisSelfServiceRegistered: boolean;\r\n\thasStatistics: boolean;\r\n\thasStatisticHeaders: boolean;\r\n\tstatisticContainers: StatisticContainerDto[];\r\n\tstatisticClients: StatisticClientListDto[];\r\n\tstatisticHeaders: StatisticHeaderListDto[];\r\n\tactivityHeaderExtended: ActivityHeaderExtendedDto;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class AdditionalSessionDto {\r\n\tuniqueId: string;\r\n\trequestId: number;\r\n\tapprovalId: number;\r\n\tdeclineId: number;\r\n\trequestedBy: string;\r\n\trequestedByBusinessRoleId?: number;\r\n\tdateOfRequest: Date;\r\n\tprimaryConcernAndReason: string;\r\n\tissueResolutionAndGoal: string;\r\n\tnotes: string;\r\n\trequestedNumberPerClient: number;\r\n\tapprovedNumberPerClient: number;\r\n\tdateApproved?: Date;\r\n\tdateDeclined?: Date;\r\n\tapprovedBy: string;\r\n\tdeclinedBy: string;\r\n\tapprovalNotes: string;\r\n\tdeclineNotes: string;\r\n\tcontractServiceTypeId: number;\r\n\tisClientWorking: TriState;\r\n\tisRehabilitationCase: TriState;\r\n\tisNewIssue: TriState;\r\n\tisWorkRelatedIssue: TriState;\r\n\tisClientConsentToOrgDiscussion: TriState;\r\n\tisClientConsentToReleaseName: TriState;\r\n\tisSupported: TriState;\r\n\tisClientUsingOtherExternalProfessional: TriState;\r\n\tisHelpRequiredDevelopingClientSupportPlan: TriState;\r\n\tisHROrManagerRecommended: TriState;\r\n\tisLegalIssue: TriState;\r\n\tsupportedByRole: string;\r\n\tsupportedByName: string;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class AppointmentStartTimeDto {\r\n\tdateTime: Date;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class AppointmentEndTimeDto {\r\n\tdateTime: Date;\r\n\tduration: number;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class CommunicationAddressDto {\r\n\ttypeId: number;\r\n\ttypeName: string;\r\n\tcanBeForNotifyEmail: boolean;\r\n\tshowContactButton: boolean;\r\n\tshowPrimarySecondary: boolean;\r\n\tshowCanSendMsg: boolean;\r\n\tgridViewExtended: boolean;\r\n\tgridViewNormal: boolean;\r\n\tcommAddressId?: number;\r\n\ttext: string;\r\n\tisForNotifyEmail: boolean;\r\n\tisForNotifySms: boolean;\r\n\tisCanLeaveMessage: boolean;\r\n\tisCanSendEmail: boolean;\r\n\tisPrimary: boolean;\r\n\tisSecondary: boolean;\r\n\tcanBeForNotifySms: boolean;\r\n\tcountryId?: number;\r\n\tareaCode: string;\r\n\tcountryVisible: boolean;\r\n\tareaCodeVisible: boolean;\r\n\temailVisible: boolean;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class ContractInfoDto {\r\n\thasSessions: boolean;\r\n\tnumberSessionsPerClient: number;\r\n\tnumberSessionsPerClientOverride?: number;\r\n\tcontractServiceTypeId: number;\r\n\talertServiceType: string;\r\n\talertContract: string;\r\n\talertCustomer: string;\r\n\tsocialServicesContactId?: number;\r\n\tsocialServicesContactInfo: string;\r\n\tserviceTypeDescription: string;\r\n\tcontractServiceTypeCheckItemValues: ContractServiceTypeCheckItemValueDto[];\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class ContractServiceTypeCheckItemValueDto {\r\n\ttext: string;\r\n\tvalue: boolean;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class TimeZoneInfoDto {\r\n\tisClientInDaylightSavingTime: boolean;\r\n\tisDiaryInDaylightSavingTime: boolean;\r\n\tclientTimeZoneName: string;\r\n\tdiaryTimeZoneName: string;\r\n\tdiaryStartTime: Date;\r\n\tclientStartTime: Date;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class AppointmentHistoryInfoDto {\r\n\tserviceId: number;\r\n\tstartDateTime?: Date;\r\n\tendDateTime?: Date;\r\n\tduration?: number;\r\n\tprofessionalId: number;\r\n\tprofessionalName: string;\r\n\tbookingResourceName: string;\r\n\tbookingResourceId?: number;\r\n\tactivityType: string;\r\n\tisCancelledChargeable: boolean;\r\n\twasNoShow: boolean;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport enum AppointmentType {\r\n\tActivity,\r\n\tPrivate,\r\n\tLeave\r\n}\r\n\r\n// Warning: Generated code!\r\nexport enum TriState {\r\n\tUnknown,\r\n\tYes,\r\n\tNo\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class AppointmentsDto {\r\n\tlangTest: string;\r\n\tappointments: AppointmentDto[];\r\n\tavailabilities: AvailabilityDto[];\r\n\tdiaryTimeZoneNames: DiaryTimeZoneNameDto[];\r\n\tnumDays: number;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class DiaryTimeZoneNameDto {\r\n\tbookingDiaryId: number;\r\n\ttimeZoneName: string;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class AppointmentDto {\r\n\tprofessionalId: number;\r\n\tbookingDiaryId: number;\r\n\tappointmentId: number;\r\n\tactivityHeaderId?: number;\r\n\thasExtendedActivityHeader: boolean;\r\n\tappointmentType: AppointmentType;\r\n\tdateTimeStart: Date;\r\n\tdateTimeEnd: Date;\r\n\tclientTimeStart?: Date;\r\n\tclientTimeZoneName: string;\r\n\tbookingResourceName: string;\r\n\tfileNumber?: number;\r\n\tserviceType: string;\r\n\tactivityType: string;\r\n\tclientNameOrDescription: string;\r\n\tcustomerName: string;\r\n\temployerName: string;\r\n\tprivateAppointmentName: string;\r\n\tlocation: string;\r\n\tphoneNumbers: CommAddressDisplayDto[];\r\n\tsessionNumber?: number;\r\n\tmaxSessions?: number;\r\n\tisRecurring: boolean;\r\n\tisCanelledChargeable: boolean;\r\n\tisCouples: boolean; \r\n\tisLocked: boolean;\r\n\tisReadOnly: boolean;\r\n\tisFixedDuration: boolean;\r\n\texcludeAsSession: boolean;\r\n\tisReserved: boolean;\r\n\tmaxDuration?: number;\r\n\tzoomInfoUrl: string;\r\n\tactivityHeaderClosed: boolean;\r\n\tisInPerson: boolean;\r\n\tisRedFlag: boolean;\r\n\tisClientRedFlag: boolean;\r\n\tredFlagAlternativeAppearance?: number;\r\n\thideRedFlag: boolean;\r\n\tstaticalChoiceForDiaryDisplay: string;\r\n\tnumberMoves?: number;\r\n\tmoveReasonId?: number;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class CommAddressDisplayDto {\r\n\tcountry: string;\r\n\tcallingCode: number;\r\n\tareaCode: string;\r\n\tnumber: string;\r\n}\r\n\r\n\r\n// Warning: Generated code!\r\nexport class AvailabilityActivityTypeEditDto {\r\n\tforDate: Date;\r\n\tbookingDiaryId: number;\r\n\tisRecurring: boolean;\r\n\ttimeRanges: AvailabilityActivityTypeTimeRangeEditDto[];\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class AvailabilityActivityTypeTimeRangeEditDto {\r\n\tstartTime: Date;\r\n\tendTime: Date;\r\n\tselectedActivityTypeIDs: number[];\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class AvailabilityDayRecurringStatusEditDto {\r\n\tbookingDiaryId: number;\r\n\tdate: Date;\r\n\tisRecurring: boolean;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class AvailabilityDto {\r\n\tbookingDiaryId: number;\r\n\tforDate: Date;\r\n\tisRecurring: boolean;\r\n\ttimeSlotsBase64: string;\r\n\tstartTimesBase64: string;\r\n\tdisallowInPersonBase64: string;\r\n\ttimeRanges: AvailabilityActivityTypeTimeRangeEditDto[];\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class AvailabilityEditDto {\r\n\tbookingDiaryId: number;\r\n\tstartTime: Date;\r\n\tendTime: Date;\r\n\tisAvailable: boolean;\r\n\ttechOnly: boolean;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class AvailabilityLoadDto {\r\n\tactivityTypes: ActivityTypeLookupDto[];\r\n\tavailabilities: AvailabilityDto[];\r\n\tavailabilityActivityTypes: AvailabilityActivityTypeEditDto[];\r\n\tdisplayTechOnly: boolean;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class AvailabilityStartTimeEditDto {\r\n\tbookingDiaryId: number;\r\n\tstartTime: Date;\r\n\tisStartTime: boolean;\r\n}\r\n\r\n\r\n// Warning: Generated code!\r\nexport class ClientErrorDto {\r\n\turl: string;\r\n\tusername: string;\r\n\tdateTime: Date;\r\n\tmessage: string;\r\n\tstackTrace: string;\r\n\tstackTraceError: boolean;\r\n\tclientVersion: string;\r\n\tenvironment: BrowserEnvironmentDto;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class BrowserEnvironmentDto {\r\n\tuserAgent: string;\r\n\tscreenWidth: number;\r\n\tscreenHeight: number;\r\n\tcolorDepth: number;\r\n\tinnerWidth: number;\r\n\tinnerHeight: number;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport abstract class CustomStatisticBaseDto {\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class DeleteActivityAppointmentLoadDto extends BaseLoadDto {\r\n\tconfirmDto: DeleteActivityAppointmentConfirmDto;\r\n\tdeleteResult: DeleteResultDto;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class DeleteActivityAppointmentConfirmDto {\r\n\twarningMessage: DeleteWarningMesage;\r\n\tdeleteAllowed: boolean;\r\n\tcanApplyCharge: boolean;\r\n\tisCancelledChargeable: boolean;\r\n\tallowDelete: boolean;\r\n\tapplyCharge: boolean;\r\n\twasNoShow: boolean;\r\n\tphysicalDelete: boolean;\r\n\tcancelHoursNotice: number;\r\n\tshowNewAppointmentDeleteStyle: boolean;\r\n\trequiresDeleteReason: boolean;\r\n\tactivityAppointmentDeleteReasonId?: number;\r\n\tactivityAppointmentDeleteReasons: DeleteReasonLookupDto[];\r\n\tsaveResult: AppointmentDto[];\r\n}\r\n\r\n// Warning: Generated code!\r\nexport enum DeleteWarningMesage {\r\n\tMarkedAsCancelledChargeable,\r\n\tInvoicedCantDelete,\r\n\tShouldIncurCharge,\r\n\tConfirmDelete\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class DeleteResultDto {\r\n\tsaveResult: SaveResult;\r\n\terrorMessage: string;\r\n\twarnings: string[];\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class GlobalSearchResultDto {\r\n\tmax: number;\r\n\texceededMax: boolean;\r\n\titems: GlobalSearchResultItemDto[];\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class GlobalSearchResultItemDto {\r\n\titemType: ItemType;\r\n\tid: number;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class ActivityHeaderItemDto extends GlobalSearchResultItemDto {\r\n\tfileNumber: number;\r\n\tname: string;\r\n\tcustomerName: string;\r\n\temployerName: string;\r\n\tactivityRole: string;\r\n\tactivityStatus: string;\r\n\tserviceType: string;\r\n\topenedDateTime: Date;\r\n\tclosedDateTime?: Date;\r\n\tisOpen: boolean;\r\n\tisClosed: boolean;\r\n\tisReferredOn: boolean;\r\n\tisClientRedFlag: boolean;\r\n\tmanager: string;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class InvoiceItemDto extends GlobalSearchResultItemDto {\r\n\tnumber: number;\r\n\tprofessional: string;\r\n\topenedDate: Date;\r\n\treleasedDate?: Date;\r\n\tapprovedDate?: Date;\r\n\tpaidDate?: Date;\r\n\tnetAmount: number;\r\n\treference: string;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class CustomerItemDto extends GlobalSearchResultItemDto {\r\n\tname: string;\r\n\ttype: string;\r\n\tcustomerNumber: number;\r\n\temployerCustomerName: string;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport enum ItemType {\r\n\tActivityHeader,\r\n\tInvoice,\r\n\tCustomer\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class LookupDto {\r\n\tid: number;\r\n\tname: string;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class ActivityStatusLookupDto extends LookupDto {\r\n\tisOpen: boolean;\r\n\tisClosed: boolean;\r\n\tisReferredOn: boolean;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class ActivityTypeLookupDto extends LookupDto {\r\n\tisAppointment: boolean;\r\n\tisTimeEntry: boolean;\r\n\tisTimeZoneSensitive: boolean;\r\n\tisAvailableClientSelfService: boolean;\r\n\tisInPerson: boolean;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class CommAddrTypeLookupDto extends LookupDto {\r\n\tisEmail: boolean;\r\n\tisMobile: boolean;\r\n\tisPhone: boolean;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class CountryLookupDto extends LookupDto {\r\n\thasStates: boolean;\r\n\ttimeZoneId?: number;\r\n\tcallingCode?: number;\r\n\tiso31661Alpha2Code: string;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class CountryWithStatesLookupDto extends CountryLookupDto {\r\n\tstates: StateLookupDto[];\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class CriticalIncidentTypeLookupDto extends LookupDto {\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class CurrencyCodeLookupDto extends LookupDto {\r\n\tsymbol: string;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class LeaveTypeLookupDto extends LookupDto {\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class NoteTypeLookupDto extends LookupDto {\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class StateLookupDto extends LookupDto {\r\n\tshortName: string;\r\n\ttimeZoneId?: number;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class ReferredToLookupDto extends LookupDto {\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class ServiceLookupDto extends LookupDto {\r\n\tisExcludeAsSession: boolean;\r\n\tisInactive: boolean;\r\n\tallowedActivityTypeIds: number[];\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class ServiceTypeLookupDto extends LookupDto {\r\n\tisInactive: boolean;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class TaxCodeLookupDto extends LookupDto {\r\n\tcode: string;\r\n\ttaxRate: number;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class TimeZoneLookupDto extends LookupDto {\r\n\tmsTimeZoneId: string;\r\n\tdaylightName: string;\r\n\tstandardName: string;\r\n\tutcOffset: number;\r\n\tsupportsDaylightSavingTime: boolean;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class EmployerLookupDto extends LookupDto {\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class DeleteReasonLookupDto extends LookupDto {\r\n}\r\n\r\nexport class MoveAppointmentReasonsDto {\r\n\treasons: MoveAppointmentReasonDto[];\r\n}\r\n\r\nexport class MoveAppointmentReasonDto extends LookupDto {\r\n}\r\n\r\nexport class AdditionalSessionRequestReasonsDto {\r\n\treasons: AdditionalSessionRequestReasonDto[];\r\n}\r\n\r\nexport class AdditionalSessionRequestReasonDto extends LookupDto {\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class OpenActivityHeadersDto {\r\n\topenActivityHeaders: OpenActivityHeaderInfoDto[];\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class OpenActivityHeaderInfoDto {\r\n\tid: number;\r\n\tfileNumber?: number;\r\n\tclientName: string;\r\n\tlastActivityDateTime?: Date;\r\n\tlinkedCases: number[];\r\n\tlinkedCasesIds: number[];\r\n\tlinkedCasesHtml: string;\r\n\tisIncomplete: boolean;\r\n\tisClientRedFlag: boolean;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class OpenActivityHeadersCountDto {\r\n\topenCount: number;\r\n\tincompleteCount: number;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class OpenInvoicesDto {\r\n\topenInvoices: OpenInvoiceInfoDto[];\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class OpenInvoiceInfoDto {\r\n\tid: number;\r\n\tinvoiceNumber: number;\r\n\tinvoiceDate: Date;\r\n\tisIncomplete: boolean;\r\n\tnote: string;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class OpenInvoicesCountDto {\r\n\topenCount: number;\r\n\tincompleteCount: number;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class OrganisationDto extends LookupDto {\r\n\torganisationGroups: OrganisationGroupDto[];\r\n\tisInactive: boolean;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class OrganisationGroupDto extends LookupDto {\r\n\torganisationDivisions: OrganisationDivisionDto[];\r\n\tisInactive: boolean;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class OrganisationDivisionDto extends LookupDto {\r\n\torganisationDepartments: OrganisationDepartmentDto[];\r\n\tisInactive: boolean;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class OrganisationDepartmentDto extends LookupDto {\r\n\tisInactive: boolean;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class ProfessionalInvoiceEditLoadDto extends BaseLoadDto {\r\n\teditDto: ProfessionalInvoiceEditDto;\r\n\ttaxCodes: TaxCodeLookupDto[];\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class ProfessionalInvoiceEditDto extends ConfirmableWarningEditDto {\r\n\tinvoiceId: number;\r\n\tprofessionalName: string;\r\n\tcompanyName: string;\r\n\tabnNumber: string;\r\n\ttaxNumber: string;\r\n\tnumber: number;\r\n\treferenceNumber: string;\r\n\tdate: Date;\r\n\tamountNet: number;\r\n\tamountTax: number;\r\n\tamountTotal: number;\r\n\tdateReleased?: Date;\r\n\tdateApproved?: Date;\r\n\tdatePaid?: Date;\r\n\treleasedBy: string;\r\n\tapprovedBy: string;\r\n\tpaidBy: string;\r\n\tnote: string;\r\n\tcurrencySymbol: string;\r\n\tpreventAccept: boolean;\r\n\tisAccepting: boolean;\r\n\tisEditable: boolean;\r\n\tcanEditRates: boolean;\r\n\tdownloadInvoicePdfUri: string;\r\n\tinvoiceLines: ProfessionalInvoiceLineEditDto[];\r\n\tshowTaxNumbers: boolean;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class ProfessionalInvoiceLineEditDto {\r\n\tinvoiceLineId: number;\r\n\tactivityHeaderIncomplete: boolean;\r\n\ttaxCodeId: number;\r\n\tdate: Date;\r\n\tofficeShort: string;\r\n\tfileNumber?: number;\r\n\tcustomerName: string;\r\n\temployerName: string;\r\n\tdurationText: string;\r\n\tunitText: string;\r\n\tunits: number;\r\n\tcostRate: number;\r\n\ttaxRate: number;\r\n\tcost: number;\r\n\ttax: number;\r\n\ttotal: number;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport abstract class SaveResultDtoBase {\r\n\tsaveResult: SaveResult;\r\n\terrorMessage: string;\r\n\twarnings: string[];\r\n\tconfirms: string[];\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class SaveResultDto extends SaveResultDtoBase {\r\n\tresultDto: T;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport enum SaveResult {\r\n\tOK,\r\n\tError,\r\n\tWarnings\r\n}\r\n\r\n// Warning: Generated code!\r\nexport abstract class StatisticClientBaseDto {\r\n\tid: number;\r\n\tanonymousReference: string;\r\n\tprofessionalName: string;\r\n\tisIncompleteStatistics: boolean;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class StatisticClientListDto extends StatisticClientBaseDto {\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class StatisticClientEditDto extends StatisticClientBaseDto implements IOrganisationPartEditDto {\r\n\tprofessionalId: number;\r\n\torganisationGroupId?: number;\r\n\torganisationDivisionId?: number;\r\n\torganisationDepartmentId?: number;\r\n\tstatisticContainers: StatisticContainerDto[];\r\n\tstatisticClientSessions: StatisticClientSessionDto[];\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class StatisticClientSessionDto {\r\n\tstatisticClientSessionId: number;\r\n\towningClientId: number;\r\n\tsessionDateTime: Date;\r\n\tsessionDurationHours: number;\r\n\tsessionDurationMinutes: number;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class StatisticContainerDto {\r\n\tstatisticalGroup: StatisticalGroupDto;\r\n\tstatistics: StatisticDto[];\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class StatisticalGroupDto {\r\n\tid: number;\r\n\tdescription: string;\r\n\tuiTypeName: string;\r\n\tisIntTwoValue: boolean;\r\n\tisMultiChoice: boolean;\r\n\tchoiceLimit?: number;\r\n\tisOnSiteIndividualSession: boolean;\r\n\tstatisticalTypes: StatisticalTypeDto[];\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class StatisticalTypeDto {\r\n\tid: number;\r\n\tdescription: string;\r\n\tisRequired: boolean;\r\n\tdescriptionExtraField1: string;\r\n\tdescriptionExtraField2: string;\r\n\tuiTypeName: string;\r\n\tisIntTwoValue: boolean;\r\n\tstatisticalChoices: StatisticalChoiceDto[];\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class StatisticalChoiceDto {\r\n\tid: number;\r\n\tdescription: string;\r\n\tisEditBox: boolean;\r\n\tstatisticalTypeId: number;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class StatisticDto {\r\n\tid: number;\r\n\tisEmpty: boolean;\r\n\tstatisticalChoiceId: number;\r\n\tstatisticHeaderId: number;\r\n\tstatisticalTypeId: number;\r\n\ttype: string;\r\n\ttext: string;\r\n\tint?: number;\r\n\tdec?: number;\r\n\thours?: number;\r\n\tminutes?: number;\r\n\tintExtra1?: number;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport abstract class StatisticHeaderBaseDto {\r\n\tid: number;\r\n\tstartDateTime: Date;\r\n\tendDateTime: Date;\r\n\tprofessionalId: number;\r\n\tprofessionalName: string;\r\n\tcreatedDateTime?: Date;\r\n\tcreatedByUserId?: number;\r\n\tcreatedByUserName: string;\r\n\tupdatedDateTime?: Date;\r\n\tupdatedByUserId?: number;\r\n\tupdatedByUserName: string;\r\n\tisIncompleteStatistics: boolean;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class StatisticHeaderListDto extends StatisticHeaderBaseDto {\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class StatisticHeaderEditDto extends StatisticHeaderBaseDto implements IOrganisationPartEditDto {\r\n\tstatisticContainers: StatisticContainerDto[];\r\n\torganisationGroupId?: number;\r\n\torganisationDivisionId?: number;\r\n\torganisationDepartmentId?: number;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class SystemPreferencesDto {\r\n\tuseProfessionalInvoiceReferenceNo: boolean;\r\n\tuseProfessionalInvoiceTaxCodeOverride: boolean;\r\n\tuseLegacyAppointmentDelete: boolean;\r\n\tuseTimeZones: boolean;\r\n\tmandatoryTimeZoneInAppointment: boolean;\r\n\tuseSocialServicesControl: boolean;\r\n\tisInstallationAustralia: boolean;\r\n\tisInstallationNewZealand: boolean;\r\n\tisAepCustomInstall: boolean;\r\n\tisApmCustomInstall: boolean;\r\n\tisEpsCustomInstall: boolean;\r\n\tuseResouceHub: boolean;\r\n\tuseOSExtendedFeatures: boolean;\r\n\tuseLocationActivityInRates: boolean;\r\n\tuseProfile: boolean;\r\n\tuseProfileCredentials: boolean;\r\n\tuseProfileRates: boolean;\r\n\tuseProfileChecks: boolean;\r\n\tuseProfileAttachments: boolean;\r\n\tuseProfileNotifications: boolean;\r\n\tuseProfileOffices: boolean;\r\n\tuseProfileContact: boolean;\r\n\tuseProfileWorkHS: boolean;\r\n\tuseProfileInsurance: boolean;\r\n\tuseManagerInSearch: boolean;\r\n\tuseActivityHeaderLinkCases: boolean;\r\n\tuseAnnouncements: boolean;\r\n\tserverVersion: string;\r\n\tallowProfessionalsCreateActivityHeaders: boolean;\r\n\tdefaultServiceTypeId?: number;\r\n\tuseReservedAppointments: boolean;\r\n\tdefaultNumberOfHoursNewActivityTypeAvailability: number;\r\n\tcustomStatisticType: string;\r\n\tepsCustomStatisticTabIndex: number;\r\n\tcaseReadOnlyWhenClosed: boolean;\r\n\tdefaultCountryId: number;\r\n\tdefaultCountryName: string;\r\n\tdefaultCountryCallingCode?: number;\r\n\tdefaultCurrencyCodeId: number;\r\n\tdefaultCurrencyCode: string;\r\n\tattachmentFileExtensions: string;\r\n\tuseAppointmentMoveLog: boolean;\r\n\tuseAdditionalSessionRequestReasons: boolean;\r\n\tsignalrUrl: string;\r\n\tisAppointmentNotesReadOnly: boolean;\r\n\tminCaseNoteCharacters: number;\r\n\tcaseNotePlaceHolder: string;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class UserConfigDto {\r\n\tforceReloadClient: boolean;\r\n\tid: number;\r\n\tname: string;\r\n\tisPractice: boolean;\r\n\tisEmployee: boolean;\r\n\tpracticeProfessionals: ProfessionalDto[];\r\n\tbookingDiaryBookingResources: BookingDiaryBookingResourceDto[];\r\n\tserviceTypes: ServiceTypeLookupDto[];\r\n\tnonPracticeProfessionalId?: number;\r\n\tuserGuid: string;\r\n\tbusinessRoleGuid: string;\r\n\tsystemPreferences: SystemPreferencesDto;\r\n\tauthorisations: AuthorisationsDto;\r\n\tmaxUploadFileSizeMb: number;\r\n\tisProfessionalAvailableClientSelfService: boolean;\r\n\tiCalUserUrl: string;\r\n\tiCalGuideUrl: string;\r\n}\r\n\r\nexport class AnnouncementsDto {\r\n\tunread: number;\r\n\tannouncements: AnnouncementDto[];\r\n}\r\n\r\nexport class AnnouncementDto {\r\n\tid: string;\r\n\ttype: string;\r\n\tisClaimable: boolean;\r\n\tisPriorityPopup: boolean;\r\n\tpriority: string;\r\n\tsubject: string;\r\n\tmessage: string;\r\n\tfileNumber: number;\r\n\tlocation: string; \r\n\taction: Date;\r\n\tcreated: Date;\r\n\tisRead: boolean;\r\n\tisClaimed: boolean;\r\n\tisDeclined: boolean;\r\n\tattachments: AnnouncementFileDto[];\r\n}\r\n\r\nexport class AnnouncementFileDto {\r\n\tfileName: string;\r\n\tid: number;\r\n\tmimeType: string;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class AuthorisationsDto {\r\n\tallowEditNotes: boolean;\r\n\tallowCreateCase: boolean;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class ProfessionalDto {\r\n\tid: number;\r\n\tname: string;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class BookingDiaryBookingResourceDto {\r\n\tbookingDiaryId: number;\r\n\tbookingResourceId: number;\r\n\tprofessionalId: number;\r\n\tbookingResourceName: string;\r\n\tmsTimeZoneId: string;\r\n\tprofessionalName: string;\r\n\tbookingResourceIsAvailableClientSelfService: boolean;\r\n\tprofessionalIsAvailableClientSelfService: boolean;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class UserLoginResultDto {\r\n\tid: number;\r\n\tresult: UserLoginResult;\r\n\tresultMessage: string;\r\n\tbusinessOrganisationId: number;\r\n\tisPractice: boolean;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport enum UserLoginResult {\r\n\tOK,\r\n\tInvalidApplication,\r\n\tPasswordExpired,\r\n\tPasswordNotChanged,\r\n\tInvalidMode\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class EapServicesClientSurveyDto extends CustomStatisticBaseDto {\r\n\tisFinal: boolean;\r\n\tnoData: boolean;\r\n\terror: number;\r\n\tsurveyName: string;\r\n\tcaseNumber: string;\r\n\tid: string;\r\n\tstatus: string;\r\n\tcreated: Date;\r\n\texpires: Date;\r\n\tquestionsAsked: number;\r\n\tquestionsAnswered: number;\r\n\tclinicalProfile: ClinicalProfileDto;\r\n\triskProfile: RiskProfileDto;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class ClinicalProfileDto {\r\n\tconcerns: OptionValueDto[];\r\n\tgoals: OptionValueDto[];\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class OptionValueDto {\r\n\toption: string;\r\n\tvalue: string;\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class RiskProfileDto {\r\n\ttotal: number;\r\n\triskFactors: RiskOptionValueDto[];\r\n}\r\n\r\n// Warning: Generated code!\r\nexport class RiskOptionValueDto {\r\n\toption: string;\r\n\tisAtRisk: boolean;\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n/**\r\n * @export\r\n * @class SessionStorageManagementService\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class SessionStorageManagementService {\r\n\tpublic static KEY_CALENDAR_CURRENT_VIEW = 'calendar-view';\r\n\tpublic static KEY_CALENDAR_CURRENT_DATE = 'calendar-view-date';\r\n\tpublic static KEY_APPOINTMENTS_PRACTICE_STATE = 'appointments-practice-state';\r\n\r\n\tclearVolatileData() {\r\n\t\tsessionStorage.removeItem(SessionStorageManagementService.KEY_CALENDAR_CURRENT_DATE);\r\n\t\tsessionStorage.removeItem(SessionStorageManagementService.KEY_CALENDAR_CURRENT_VIEW);\r\n\t\tsessionStorage.removeItem(SessionStorageManagementService.KEY_APPOINTMENTS_PRACTICE_STATE);\r\n\t}\r\n\r\n\tgetItem(key: string) {\r\n\t\treturn sessionStorage.getItem(key);\r\n\t}\r\n\r\n\tsetItem(key: string, value: any) {\r\n\t\tif (typeof value === 'object' && value instanceof Date) {\r\n\t\t\tvalue = ( value).toJSON();\r\n\t\t}\r\n\t\tsessionStorage.setItem(key, value);\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as signalR from \"@microsoft/signalr\"\r\nimport { CrudService } from './crud.service';\r\nimport { ConfigService } from './config.service';\r\nimport * as _ from 'lodash';\r\nimport { AnnouncementsService } from 'app/services';\r\n\r\n/**\r\n * Service for fetching and managing announcements for the currently authenticated user.\r\n * The service uses Signalr to establish a websocket to the server.\r\n * The server will push notifications, and these are recieved within this service.\r\n */\r\n@Injectable()\r\nexport class SignalrService {\r\n\t\r\n\tconstructor(\r\n\t\tprivate crud: CrudService,\r\n\t\tprivate config: ConfigService,\r\n\t\tprivate announcement: AnnouncementsService){}\r\n\r\n\t//Connect to server running Signalr\r\n\tprivate hubConnection: signalR.HubConnection\r\n public startConnection = (signalrUrl) => {\r\n\t\tlet userConfig = this.config.config;\r\n\t\tthis.hubConnection = new signalR.HubConnectionBuilder()\r\n\t\t\t\t\t\t\t\t.withUrl(signalrUrl \r\n\t\t\t\t\t\t\t\t\t+ '?businessRoleGuid=' + userConfig.businessRoleGuid\r\n\t\t\t\t\t\t\t\t\t+ '&userGuid=' + userConfig.userGuid, {\r\n\t\t\t\t\t\t\t\t\tskipNegotiation: true,\r\n\t\t\t\t\t\t\t\t\ttransport: signalR.HttpTransportType.WebSockets,\r\n\t\t\t\t\t\t\t\t\twithCredentials: false\r\n\t\t\t\t\t\t\t\t })\r\n\t\t\t\t\t\t\t\t.build();\r\n\t\tthis.hubConnection\r\n\t\t\t.start()\r\n\t\t\t.then(() => console.log('Connection started'))\r\n\t\t\t.catch(err => console.log('Error while starting connection: ' + err))\r\n }\r\n\r\n\t//Disconnect Signalr\r\n\tpublic stopConnection = () => {\r\n\t\tthis.hubConnection.stop();\r\n\t}\r\n\r\n\t//Handle Signalr SendAsync messages\r\n\tpublic addReceiveMessageListener = () => {\r\n\t\tthis.hubConnection.on('ReceiveMessage', (data) => {\r\n\t\t\tif (data === 'Announcement'){\r\n\t\t\t\tthis.announcement.updateAnnouncementsUnread();\r\n\t\t\t}\r\n\t\t});\r\n\t }\r\n\r\n}\r\n","import { Injectable, ElementRef } from '@angular/core';\r\nimport * as moment from 'moment';\r\n\r\nimport { ScheduleComponent, RenderCellEventArgs } from '@syncfusion/ej2-angular-schedule';\r\nimport { closest, attributes, addClass, removeClass, createElement } from '@syncfusion/ej2-base';\r\n\r\nimport {\r\n\tIAppointmentEvent,\r\n\tResource,\r\n\tSLOT_MINUTES,\r\n} from 'app/common-editing/calendar-common/calendar-common.service';\r\n\r\n@Injectable()\r\nexport class SyncfusionService {\r\n\r\n\tprivate readonly startTimeClass = 'e-start-time';\r\n\tprivate readonly workTimeClass = 'e-work-hours';\r\n\tprivate readonly techOnlyTimeClass = 'e-tech-only-time';\r\n\r\n\tprivate readonly dayStatusRecurring = 'e-header-show-recurring';\r\n\tprivate readonly dayStatusEdited = 'e-header-show-edited';\r\n\tprivate readonly dayStatusActivity = 'e-header-show-activity';\r\n\r\n\tprivate readonly startSelectedCell = 'e-selected-start-cell';\r\n\tprivate readonly endSelectedCell = 'e-selected-end-cell';\r\n\r\n\tprivate readonly fifteenMinutesInMilliseconds = 1000 * 60 * SLOT_MINUTES;\r\n\r\n\tshowAvailability(\r\n\t\tref: ElementRef,\r\n\t\tdate: Date | moment.Moment,\r\n\t\tscheduler: ScheduleComponent,\r\n\t\tresources: Resource[],\r\n\t\tappointments: IAppointmentEvent[],\r\n\t\tshowStatus: boolean = false,\r\n\t\tfnHasActivityType: any = () => false,\r\n\t) {\r\n\t\tthis.reset(ref, scheduler);\r\n\r\n\t\tconst times = this.init(appointments),\r\n\t\t\tworking = this.getWorkTimes(date, resources, times.unavailable);\r\n\r\n\t\tthis.setWorkingTimes(ref, scheduler, working, resources);\r\n\t\tthis.setStartTimes(ref, times.start, resources);\r\n\t\tthis.setTechTimes(ref, times.tech, resources);\r\n\t\tif (showStatus) {\r\n\t\t\tthis.setDayStatus(ref, appointments, resources, fnHasActivityType);\r\n\t\t}\r\n\t\t/// ejs-schedule td.e-left-indent table,\r\n\t\t/// ejs-schedule div.e-time-cells-wrap table,\r\n\t\t/// table.e-recurrence-table.e-repeat-content-wrapper,\r\n\t\t/// table.e-recurrence-table.e-month-expand-wrapper\r\n\r\n\t\tconst hoursTable: HTMLElement[] = ref.nativeElement.querySelectorAll(\r\n\t\t\t`ejs-schedule td.e-left-indent table,\r\n\t\t\tejs-schedule div.e-time-cells-wrap table,\r\n\t\t\ttable.e-recurrence-table.e-repeat-content-wrapper,\r\n\t\t\ttable.e-recurrence-table.e-month-expand-wrapper`\r\n\t\t);\r\n\t\thoursTable.forEach(x => attributes(x, { 'aria-hidden': 'true' }))\r\n\t}\r\n\r\n\taddTechTime(\r\n\t\tref: ElementRef,\r\n\t\tgroupIndex: number,\r\n\t\tstart: Date | moment.Moment,\r\n\t\tend: Date | moment.Moment,\r\n\t) {\r\n\t\tconst cells = this.getCellsForDates(ref, groupIndex, start, end);\r\n\t\tthis.resetStateOfCell(cells);\r\n\t\taddClass(cells, this.techOnlyTimeClass);\r\n\t\tthis.setAriaLabel(cells);\r\n\t}\r\n\r\n\taddAvailableTime(\r\n\t\tref: ElementRef,\r\n\t\tgroupIndex: number,\r\n\t\tstart: Date | moment.Moment,\r\n\t\tend: Date | moment.Moment,\r\n\t) {\r\n\t\tconst cells = this.getCellsForDates(ref, groupIndex, start, end);\r\n\t\tthis.resetStateOfCell(cells);\r\n\t\taddClass(cells, this.workTimeClass);\r\n\t\tthis.setAriaLabel(cells);\r\n\t}\r\n\r\n\taddUnavailableTime(\r\n\t\tref: ElementRef,\r\n\t\tgroupIndex: number,\r\n\t\tstart: Date | moment.Moment,\r\n\t\tend: Date | moment.Moment,\r\n\t) {\r\n\t\tconst cells = this.getCellsForDates(ref, groupIndex, start, end, { withClass: [this.techOnlyTimeClass, this.workTimeClass] });\r\n\t\tthis.resetStateOfCell(cells);\r\n\t\tthis.setAriaLabel(cells);\r\n\t}\r\n\r\n\taddStartTime(\r\n\t\tref: ElementRef,\r\n\t\tgroupIndex: number,\r\n\t\tdateTime: Date | moment.Moment,\r\n\t) {\r\n\t\tconst cells = this.getCellsForDates(ref, groupIndex, dateTime, dateTime);\r\n\t\tthis.resetStateOfCell(cells, true);\r\n\t\taddClass(cells, this.startTimeClass);\r\n\t\tthis.setAriaLabel(cells);\r\n\t}\r\n\r\n\tclearStartTime(\r\n\t\tref: ElementRef,\r\n\t\tgroupIndex: number,\r\n\t\tdateTime: Date | moment.Moment,\r\n\t) {\r\n\t\tconst cells = this.getCellsForDates(ref, groupIndex, dateTime, dateTime, { withClass: [this.startTimeClass] });\r\n\t\tthis.resetStateOfCell(cells, true);\r\n\t\taddClass(cells, this.workTimeClass);\r\n\t\tthis.setAriaLabel(cells);\r\n\t}\r\n\r\n\tsetSelectedClasses(ref: ElementRef) {\r\n\t\t/// Set class for the first select cell\r\n\t\t/// Set class for all the cell # Already done by Syncfusion\r\n\t\t/// Set class for the last select cell\r\n\r\n\r\n\t\t// Unset classes set\r\n\t\tconst oldStart = Array.from(ref.nativeElement.querySelectorAll(`.${this.startSelectedCell}`)),\r\n\t\t\toldEnd = Array.from(ref.nativeElement.querySelectorAll(`.${this.endSelectedCell}`)),\r\n\t\t\toldCell: HTMLElement[] = [];\r\n\r\n\t\tif (oldStart) {\r\n\t\t\toldCell.push(...oldStart);\r\n\t\t}\r\n\r\n\t\tif (oldEnd) {\r\n\t\t\toldCell.push(...oldEnd);\r\n\t\t}\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() => {\r\n\t\t\t\tconst\r\n\t\t\t\t\tselectedCell = Array.from(ref.nativeElement.querySelectorAll('.e-work-cells.e-selected-cell')),\r\n\t\t\t\t\tselectedCellbyDate = selectedCell.reduce(\r\n\t\t\t\t\t\t(acc, elem) => {\r\n\t\t\t\t\t\t\tconst unix = parseInt(elem.attributes['data-date'].value);\r\n\t\t\t\t\t\t\tacc[unix] = elem;\r\n\t\t\t\t\t\t\treturn acc;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{} as { [key: number]: HTMLElement }\r\n\t\t\t\t\t),\r\n\t\t\t\t\tselectedDates = Object.keys(selectedCellbyDate).sort();\r\n\r\n\t\t\t\tif (selectedDates.length) {\r\n\t\t\t\t\tconst\r\n\t\t\t\t\t\tstartUnix = parseInt(selectedDates[0]),\r\n\t\t\t\t\t\tendUnix = parseInt(selectedDates[selectedDates.length - 1]),\r\n\t\t\t\t\t\tstart = selectedCellbyDate[startUnix],\r\n\t\t\t\t\t\tend = selectedCellbyDate[endUnix];\r\n\r\n\t\t\t\t\tremoveClass(\r\n\t\t\t\t\t\toldCell,\r\n\t\t\t\t\t\t[this.startSelectedCell, this.endSelectedCell]\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\taddClass([start], this.startSelectedCell);\r\n\t\t\t\t\taddClass([end], this.endSelectedCell);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t0);\r\n\t}\r\n\r\n\tutcInLocalTime(originalDate: Date | moment.Moment): moment.Moment {\r\n\t\tconst\r\n\t\t\tog = moment(originalDate),\r\n\t\t\togOffset = og.utcOffset(),\r\n\t\t\tnewDate = og.clone().utcOffset('Z', false).utcOffset(ogOffset, true);\r\n\r\n\t\treturn newDate;\r\n\t}\r\n\r\n\trenderCell(args: RenderCellEventArgs) {\r\n\t\tif (args.elementType == 'workCells') {\r\n\t\t\targs.element.appendChild(\r\n\t\t\t\tcreateElement('div', {\r\n\t\t\t\t\tinnerHTML: `\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\tAvailable\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\tUnavailable\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\tStart Time\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\tTechnology only\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t`,\r\n\t\t\t\t\tclassName: 'templatewrap'\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate init(appointments: IAppointmentEvent[] = []): {\r\n\t\tunavailable: IAppointmentEvent[],\r\n\t\ttech: IAppointmentEvent[],\r\n\t\tstart: IAppointmentEvent[],\r\n\t} {\r\n\t\treturn appointments.reduce(\r\n\t\t\t(acc, x) => {\r\n\r\n\t\t\t\tif (!x.isStartTime && !x.appointment && !x.isTechOnly) {\r\n\t\t\t\t\tacc.unavailable.push(x);\r\n\t\t\t\t} else if (x.isTechOnly) {\r\n\t\t\t\t\tacc.tech.push(x);\r\n\t\t\t\t} else if (x.isStartTime) {\r\n\t\t\t\t\tacc.start.push(x);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn acc;\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tunavailable: [],\r\n\t\t\t\ttech: [],\r\n\t\t\t\tstart: [],\r\n\t\t\t}\r\n\t\t)\r\n\t}\r\n\r\n\tprivate setWorkingTimes(ref: ElementRef, scheduler: ScheduleComponent, workings: IWorkTime, resources: Resource[]) {\r\n\t\t// to set availability of each resource we need there index not there id\r\n\t\t// so here a dictionary to get the index easily\r\n\t\tconst resourceIndexDictionary = resources.reduce(\r\n\t\t\t(acc, x, index) => {\r\n\t\t\t\tacc[x.id] = index;\r\n\t\t\t\treturn acc;\r\n\t\t\t},\r\n\t\t\t{}\r\n\t\t);\r\n\r\n\t\tfor (let dateString in workings) {\r\n\t\t\tlet\r\n\t\t\t\tdate = moment(dateString).startOf('day').toDate(),\r\n\t\t\t\tday = workings[dateString];\r\n\r\n\t\t\tfor (const resource in day) {\r\n\t\t\t\tfor (const time of day[resource]) {\r\n\t\t\t\t\tif (resource in resourceIndexDictionary) {\r\n\t\t\t\t\t\tscheduler.setWorkHours([date], time.start, time.end, resourceIndexDictionary[resource]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst availableElements: HTMLElement[] = ref.nativeElement.querySelectorAll('.e-work-cells.e-work-hours'); // available\r\n\t\tconst unavailableElements: HTMLElement[] = ref.nativeElement.querySelectorAll('.e-work-cells:not(.e-work-hours)'); // unavailable\r\n\r\n\t\tthis.setAriaLabel([...availableElements, ...unavailableElements]);\r\n\t}\r\n\r\n\tprivate setTechTimes(ref: ElementRef, techs: IAppointmentEvent[], resources: Resource[]) {\r\n\t\tconst\r\n\t\t\tcellByRessourceAndByDate = Array.from(ref.nativeElement.querySelectorAll('.e-work-cells'))\r\n\t\t\t\t.reduce(\r\n\t\t\t\t\t(acc, x: HTMLElement) => {\r\n\t\t\t\t\t\tconst\r\n\t\t\t\t\t\t\tunixms = x.attributes['data-date'].value,\r\n\t\t\t\t\t\t\tresourceIndex = x.attributes['data-group-index'].value,\r\n\t\t\t\t\t\t\tresourceId = resources[resourceIndex]?.id;\r\n\r\n\t\t\t\t\t\tif (resourceIndex in resources) {\r\n\t\t\t\t\t\t\tif (!(resourceId in acc)) {\r\n\t\t\t\t\t\t\t\tacc[resourceId] = {}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tacc[resourceId][unixms] = x;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn acc;\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{} as { [resourceIndex: number]: { [date: number]: HTMLElement } }\r\n\t\t\t\t),\r\n\t\t\ttechTimesCell = techs\r\n\t\t\t\t.reduce(\r\n\t\t\t\t\t(acc, x) => {\r\n\r\n\t\t\t\t\t\tconst\r\n\t\t\t\t\t\t\tstart = this.utcInLocalTime(x.start.local()).startOf('minute'),\r\n\t\t\t\t\t\t\tend = this.utcInLocalTime(x.end.local()).startOf('minute'),\r\n\t\t\t\t\t\t\tresourceId = x.resourceId\r\n\r\n\t\t\t\t\t\t/**\r\n\t\t\t\t\t\t * Loop all 15 minutes between the start and the end,\r\n\t\t\t\t\t\t * and get the cell found in the object with the unix in milliseconds\r\n\t\t\t\t\t\t *\r\n\t\t\t\t\t\t * instead of looping 600+ cell and looking if the date is between start and end\r\n\t\t\t\t\t\t */\r\n\t\t\t\t\t\tfor (var i = start.valueOf(); i < end.valueOf(); i += this.fifteenMinutesInMilliseconds) {\r\n\t\t\t\t\t\t\tif (resourceId in cellByRessourceAndByDate && i in cellByRessourceAndByDate[resourceId]) {\r\n\t\t\t\t\t\t\t\tacc.push(cellByRessourceAndByDate[resourceId][i]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn acc;\r\n\t\t\t\t\t},\r\n\t\t\t\t\t[] as HTMLElement[]\r\n\t\t\t\t);\r\n\r\n\t\taddClass(techTimesCell, this.techOnlyTimeClass);\r\n\t\tthis.setAriaLabel(techTimesCell);\r\n\t}\r\n\r\n\tprivate setStartTimes(ref: ElementRef, start: IAppointmentEvent[], resources: Resource[]) {\r\n\t\tconst\r\n\t\t\tresourceIndexById = resources.reduce(\r\n\t\t\t\t(acc, x, index) => {\r\n\t\t\t\t\tacc[x.id] = index;\r\n\t\t\t\t\treturn acc;\r\n\t\t\t\t},\r\n\t\t\t\t{} as { [id: number]: number }\r\n\t\t\t),\r\n\t\t\tstartTimeElements = start.reduce(\r\n\t\t\t\t(acc, x) => {\r\n\t\t\t\t\tconst\r\n\t\t\t\t\t\tstart = this.utcInLocalTime(x.start.local()).startOf('minute'),\r\n\t\t\t\t\t\tresourceIndex = resourceIndexById[x.resourceId],\r\n\t\t\t\t\t\telement = Array.from(ref.nativeElement.querySelectorAll(`.e-work-cells[data-date=\"${start.valueOf()}\"][data-group-index=\"${resourceIndex}\"]`));\r\n\r\n\t\t\t\t\tacc.push(...element);\r\n\t\t\t\t\treturn acc;\r\n\t\t\t\t},\r\n\t\t\t\t[]\r\n\t\t\t);\r\n\r\n\t\taddClass(startTimeElements, this.startTimeClass);\r\n\t\tthis.setAriaLabel(startTimeElements);\r\n\t}\r\n\r\n\tprivate reset(ref: ElementRef, scheduler: ScheduleComponent) {\r\n\t\tscheduler.resetWorkHours();\r\n\r\n\t\tconst toRemoveClass = ref.nativeElement.querySelectorAll(`.${this.startTimeClass}, .${this.techOnlyTimeClass}`);\r\n\t\tremoveClass(toRemoveClass, [this.startTimeClass, this.techOnlyTimeClass]);\r\n\t}\r\n\r\n\tprivate getWorkTimes(date: Date | moment.Moment, resources: Resource[], unavailable: IAppointmentEvent[]): IWorkTime {\r\n\t\t// We need to invert the availability because we currently track the time the user is off\r\n\t\t// but we need the time the user is working\r\n\t\tconst\r\n\t\t\tnewTimes: IWorkTime = {}, // the return working time\r\n\t\t\tcurrentWeekTime: { [date: string]: true } = {}, // current week dates\r\n\r\n\t\t\tStartDate = moment(date).startOf('week'),\r\n\t\t\tEndDate = moment(date).startOf('week').add(6, 'day'),\r\n\t\t\tdayNbr = EndDate.diff(StartDate, 'day'),\r\n\t\t\tresourcesById = resources.reduce(\r\n\t\t\t\t(acc, x) => {\r\n\t\t\t\t\tacc[x.id] = x;\r\n\t\t\t\t\treturn acc;\r\n\t\t\t\t},\r\n\t\t\t\t{}\r\n\t\t\t)\r\n\r\n\t\t// Get current view date\r\n\t\tfor (let d = 0; d <= dayNbr; d++) {\r\n\t\t\tlet _date = moment(date).startOf('week').add(d, 'day').format('YYYY-MM-DD');\r\n\t\t\tif (!(_date in currentWeekTime)) {\r\n\t\t\t\tcurrentWeekTime[_date] = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tif (unavailable) {\r\n\t\t\tlet times: { [date: string]: { [resource: number]: any[] } } = unavailable.reduce(\r\n\t\t\t\t(acc, x) => {\r\n\t\t\t\t\tconst\r\n\t\t\t\t\t\tdate = x.start.format('YYYY-MM-DD'),\r\n\t\t\t\t\t\tstart = x.start.format('HH:mm'),\r\n\t\t\t\t\t\tend = x.end.format('HH:mm'),\r\n\t\t\t\t\t\tresourceId = parseInt(x.resourceId);\r\n\r\n\t\t\t\t\tif (!(date in acc)) {\r\n\t\t\t\t\t\tacc[date] = {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (!(resourceId in acc[date])) {\r\n\t\t\t\t\t\tacc[date][resourceId] = [];\r\n\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t\tacc[date][resourceId].push({ start, end, resourceId });\r\n\r\n\t\t\t\t\treturn acc;\r\n\t\t\t\t},\r\n\t\t\t\t{}\r\n\t\t\t);\r\n\t\t\tfor (const date in times) {\r\n\t\t\t\tlet resourceTime = times[date];\r\n\r\n\t\t\t\tif (!(date in newTimes)) {\r\n\t\t\t\t\tnewTimes[date] = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (const resource in resourceTime) {\r\n\t\t\t\t\tlet time = resourceTime[resource];\r\n\r\n\t\t\t\t\tif (!(resource in newTimes[date])) {\r\n\t\t\t\t\t\tnewTimes[date][resource] = [];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst tmp = [];\r\n\t\t\t\t\tfor (let ava of time) {\r\n\t\t\t\t\t\tif (ava.start != '00:00') {\r\n\t\t\t\t\t\t\ttmp.push(ava.start)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (ava.end != '00:00') {\r\n\t\t\t\t\t\t\ttmp.push(ava.end)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// if a time start from 00:00 to xx:xx\r\n\t\t\t\t\t// add back 00:00 at the start of the tmp array\r\n\t\t\t\t\tif (tmp.length % 2 === 1 && tmp.length > 0) {\r\n\t\t\t\t\t\ttmp.unshift('00:00');\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// @TODO: we need to support this case `xx:xx to 24:00`\r\n\t\t\t\t\t// but it look like this range is not savable so I didn't do it\r\n\r\n\t\t\t\t\tfor (var i = 0, len = 2; i < tmp.length; i += len) {\r\n\t\t\t\t\t\tconst\r\n\t\t\t\t\t\t\tt = tmp.slice(i, i + len),\r\n\t\t\t\t\t\t\t[start, end] = t,\r\n\r\n\t\t\t\t\t\t\tworkingHours = { start, end };\r\n\r\n\t\t\t\t\t\tnewTimes[date][resource].push(workingHours);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// Look for day where no availability was fetch and assume they work all day\r\n\t\t\tfor (let currentWeekDate in currentWeekTime) {\r\n\t\t\t\tfor (const resource in resourcesById) {\r\n\t\t\t\t\tif (!(currentWeekDate in newTimes)) {\r\n\t\t\t\t\t\tnewTimes[currentWeekDate] = {};\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (!(resource in newTimes[currentWeekDate])) {\r\n\t\t\t\t\t\tnewTimes[currentWeekDate][resource] = [{ start: '00:00', end: '24:00' }];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn newTimes;\r\n\t}\r\n\r\n\tprivate setDayStatus(ref: ElementRef, appointment: IAppointmentEvent[], resource: Resource[], fnHasActivityType: any = () => false) {\r\n\t\tconst\r\n\t\t\tresourceIndexPerId = resource.reduce(\r\n\t\t\t\t(acc, x, index) => {\r\n\t\t\t\t\tacc[x.id] = index;\r\n\t\t\t\t\treturn acc;\r\n\t\t\t\t},\r\n\t\t\t\t{}\r\n\t\t\t),\r\n\t\t\tstatusPerDayPerResource = appointment.reduce(\r\n\t\t\t\t(acc, x) => {\r\n\t\t\t\t\tif (x.allDay && x.resourceId in resourceIndexPerId) {\r\n\t\t\t\t\t\t// use byte to store if its recurring or edited, and if its has an activity\r\n\t\t\t\t\t\t// 0b00\r\n\t\t\t\t\t\t// first byte => is recurring or is edited\r\n\t\t\t\t\t\t// seconde byte => has activity\r\n\t\t\t\t\t\tconst\r\n\t\t\t\t\t\t\tstart = this.utcInLocalTime(x.start.clone().local()).startOf('minute').valueOf(),\r\n\t\t\t\t\t\t\tresourceIndex = resourceIndexPerId[x.resourceId],\r\n\t\t\t\t\t\t\tisActivityType = parseInt(`${+!!fnHasActivityType(+x.resourceId, x.start)}0`, 2),\r\n\t\t\t\t\t\t\trecurringByte = parseInt(`0${+!!x.isRecurring}`, 2);\r\n\r\n\t\t\t\t\t\tif (!(start in acc)) {\r\n\t\t\t\t\t\t\tacc[start] = {};\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!(resourceIndex in acc[start])) {\r\n\t\t\t\t\t\t\tacc[start][resourceIndex] = recurringByte;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tacc[start][resourceIndex] = acc[start][resourceIndex] & recurringByte;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tacc[start][resourceIndex] = acc[start][resourceIndex] | isActivityType;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn acc;\r\n\t\t\t\t},\r\n\t\t\t\t{}\r\n\t\t\t),\r\n\t\t\thtmlElement = {\r\n\t\t\t\tedited: [],\r\n\t\t\t\trecurring: [],\r\n\t\t\t\tactivity: [],\r\n\t\t\t}\r\n\t\t/*\r\n\t\t\tRecurring or edited\r\n\t\t*/\r\n\t\tfor (const date in statusPerDayPerResource) {\r\n\t\t\tfor (const resourceIndex in statusPerDayPerResource[date]) {\r\n\t\t\t\tconst elements = ref.nativeElement.querySelectorAll(`.e-header-cells[data-date=\"${date}\"][data-group-index=\"${resourceIndex}\"]`);\r\n\r\n\t\t\t\t// if first byte is 1 then its recurring\r\n\t\t\t\t// else its edited\r\n\t\t\t\tif ((statusPerDayPerResource[date][resourceIndex] & 0b01) === 0b01) {\r\n\t\t\t\t\thtmlElement.recurring.push(...elements)\r\n\t\t\t\t} else {\r\n\t\t\t\t\thtmlElement.edited.push(...elements)\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// if seconde byte is 1 then its also has an activity\r\n\t\t\t\tif ((statusPerDayPerResource[date][resourceIndex] & 0b10) === 0b10) {\r\n\t\t\t\t\thtmlElement.activity.push(...elements);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\taddClass(htmlElement.activity, this.dayStatusActivity);\r\n\t\taddClass(htmlElement.edited, this.dayStatusEdited);\r\n\t\taddClass(htmlElement.recurring, this.dayStatusRecurring);\r\n\t}\r\n\r\n\tprivate setAriaLabel(elements: HTMLElement[]) {\r\n\t\telements.forEach(x => {\r\n\t\t\tconst date = moment(parseInt(x.attributes['data-date'].value));\r\n\t\t\tconst label = Array.from(x.classList)\r\n\t\t\t\t.reduce(\r\n\t\t\t\t\t(acc, x) => {\r\n\t\t\t\t\t\tswitch (x) {\r\n\t\t\t\t\t\t\tcase this.workTimeClass:\r\n\t\t\t\t\t\t\t\tacc.push('available');\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase this.techOnlyTimeClass:\r\n\t\t\t\t\t\t\t\tacc.push('technology only');\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase this.startTimeClass:\r\n\t\t\t\t\t\t\t\tacc.push('start time');\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn acc;\r\n\t\t\t\t\t},\r\n\t\t\t\t\t[] as string[]\r\n\t\t\t\t);\r\n\t\t\tattributes(x, { 'aria-label': `${date.format('dddd, MMMM Do YYYY, h:mm:ss a')}: ${label.length ? label.join(', ') : 'unavailable'}` })\r\n\t\t});\r\n\t}\r\n\r\n\tprivate getCellsForDates(\r\n\t\tref: ElementRef,\r\n\t\tgroupIndex: number,\r\n\t\tstart: Date | moment.Moment,\r\n\t\tend: Date | moment.Moment,\r\n\t\toptions: {\r\n\t\t\tnotWithClass?: string[];\r\n\t\t\twithClass?: string[];\r\n\t\t} = {},\r\n\t\tconvertDateTimeLocalToUTC: boolean = false\r\n\t) {\r\n\t\tconst\r\n\t\t\t{\r\n\t\t\t\tnotWithClass = [],\r\n\t\t\t\twithClass = []\r\n\t\t\t} = options,\r\n\t\t\tbaseClass = '.e-work-cells',\r\n\t\t\tbaseAttribute = `[data-group-index=\"${groupIndex}\"]`,\r\n\t\t\tnotClasses = notWithClass.map(x => `:not(.${x})`)\r\n\r\n\t\tlet selector = `${baseClass}${baseAttribute}${notClasses}`;\r\n\t\tif (withClass.length) {\r\n\t\t\tselector = withClass.map(x => `${baseClass}.${x}${baseAttribute}${notClasses}`).join(', ')\r\n\t\t}\r\n\r\n\t\tconst\r\n\t\t\tcellsForResourceByDate = Array.from(ref.nativeElement.querySelectorAll(selector))\r\n\t\t\t\t.reduce(\r\n\t\t\t\t\t(acc, x: HTMLElement) => {\r\n\t\t\t\t\t\tconst unixms = x.attributes['data-date'].value;\r\n\t\t\t\t\t\tacc[unixms] = x;\r\n\t\t\t\t\t\treturn acc;\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{} as { [date: number]: HTMLElement }\r\n\t\t\t\t),\r\n\t\t\tcells = [{ start: moment(start), end: moment(end) }]\r\n\t\t\t\t.reduce(\r\n\t\t\t\t\t(acc, x) => {\r\n\r\n\t\t\t\t\t\tconst\r\n\t\t\t\t\t\t\tstart = convertDateTimeLocalToUTC ? this.utcInLocalTime(x.start.local()).startOf('minute') : x.start.startOf('minute'),\r\n\t\t\t\t\t\t\tend = convertDateTimeLocalToUTC ? this.utcInLocalTime(x.end.local()).startOf('minute') : x.end.startOf('minute');\r\n\r\n\t\t\t\t\t\t/**\r\n\t\t\t\t\t\t * Loop all 15 minutes between the start and the end,\r\n\t\t\t\t\t\t * and get the cell found in the object with the unix in milliseconds\r\n\t\t\t\t\t\t *\r\n\t\t\t\t\t\t * instead of looping 600+ cell and looking if the date is between start and end\r\n\t\t\t\t\t\t */\r\n\t\t\t\t\t\tif (start.valueOf() !== end.valueOf()) {\r\n\t\t\t\t\t\t\tfor (var i = start.valueOf(); i < end.valueOf(); i += this.fifteenMinutesInMilliseconds) {\r\n\t\t\t\t\t\t\t\tif (i in cellsForResourceByDate) {\r\n\t\t\t\t\t\t\t\t\tacc.push(cellsForResourceByDate[i]);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tacc.push(cellsForResourceByDate[start.valueOf()]);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn acc;\r\n\t\t\t\t\t},\r\n\t\t\t\t\t[] as HTMLElement[]\r\n\t\t\t\t);\r\n\r\n\t\tconsole.log(selector, cells)\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tprivate resetStateOfCell(cells: HTMLElement[], clearStartTime: boolean = false) {\r\n\t\tif (clearStartTime) {\r\n\t\t\tremoveClass(cells, [this.startTimeClass]);\r\n\t\t} else {\r\n\t\t\tremoveClass(cells, [this.techOnlyTimeClass, this.workTimeClass]);\r\n\t\t}\r\n\t}\r\n}\r\n\r\n\r\nexport interface IWorkTime {\r\n\t[date: string]: {\r\n\t\t[resource: number]: {\r\n\t\t\tstart: string;\r\n\t\t\tend: string;\r\n\t\t}[]\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as _ from 'lodash';\r\nimport * as moment from 'moment';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class UtilsService {\r\n\tdiff(o1: object, o2: object, inverse: boolean = false): object {\r\n\t\tconst result = {};\r\n\t\tfor (let prop in o1) {\r\n\t\t\tif (!o1.hasOwnProperty(prop)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (typeof o1[prop] === 'object') {\r\n\t\t\t\tif (!o2.hasOwnProperty(prop)) {\r\n\t\t\t\t\tresult[prop] = {};\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (o1[prop] instanceof Date && o2[prop] instanceof Date) {\r\n\t\t\t\t\t\tif (o1[prop].getTime() !== o2[prop].getTime()) {\r\n\t\t\t\t\t\t\tresult[prop] = o1[prop];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (!o1[prop] && o2[prop]) {\r\n\t\t\t\t\t\t\tresult[prop] = {};\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tconst childDiff = this.diff(o1[prop], o2[prop]);\r\n\t\t\t\t\t\t\tif (childDiff) {\r\n\t\t\t\t\t\t\t\tresult[prop] = childDiff;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (o2[prop] !== o1[prop]) {\r\n\t\t\t\tresult[prop] = o1[prop];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (_.isEqual(result, {})) {\r\n\t\t\tif (!inverse) {\r\n\t\t\t\t// Check the inverse difference - i.e. compare o2's properties to o1's.\r\n\t\t\t\treturn this.diff(o2, o1, true);\r\n\t\t\t}\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\tformatDate(date: Date): string {\r\n\t\tif (!date) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\r\n\t\treturn moment(date).format('DD-MMM-YYYY');\r\n\t}\r\n\r\n\tformatTime(date: Date): string {\r\n\t\tif (!date) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\r\n\t\treturn moment(date).format('HH:MM');\r\n\t}\r\n\r\n\t/**\r\n\t * Walks up DOM elements checking to see whether the target is or has an eventual parent of parent.\r\n\t * @param {*} target The target element.\r\n\t * @param {*} parent The parent to test for.\r\n\t * @returns {boolean} True if the target is the parent or has it as an eventual parent.\r\n\t * @memberof UtilsService\r\n\t */\r\n\thasEventualParent(target: any, parent: any): boolean {\r\n\t\tlet t = target;\r\n\t\twhile (t) {\r\n\t\t\tif (t === parent) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tt = t.parentElement;\r\n\t\t}\r\n\t\treturn !!t;\r\n\t}\r\n\r\n\t/**\r\n\t * Converts text containing new lines into an HTML string with the new lines replaced by
\r\n\t * tags.\r\n\t * @param {string} input The input text.\r\n\t * @param { removeMultipleNewLines: boolean } opts Options\r\n\t */\r\n\tbreakify(input: string, opts?: { removeMultipleNewLines: boolean }) {\r\n\t\tif (!input) {\r\n\t\t\treturn input;\r\n\t\t}\r\n\t\tlet result = input.replace(/\\r\\n/gm, '
');\r\n\t\tresult = result.replace(/\\n/gm, '
');\r\n\t\tresult = result.replace(/\\r/gm, '
');\r\n\r\n\t\tif (opts && opts.removeMultipleNewLines) {\r\n\t\t\tresult = result.replace(/(
+)+/gm, '
');\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tbase64ToArrayBuffer(base64: string) {\r\n\t\tconst binary_string = window.atob(base64);\r\n\t\tconst len = binary_string.length;\r\n\t\tconst bytes = new Uint8Array(len);\r\n\t\tfor (let i = 0; i < len; i++) {\r\n\t\t\tbytes[i] = binary_string.charCodeAt(i);\r\n\t\t}\r\n\t\treturn bytes.buffer;\r\n\t}\r\n\r\n\tbase64FileToBlob(file: string) {\r\n\t\tconst buff = this.base64ToArrayBuffer(file);\r\n\t\tconst blob = new Blob([buff]);\r\n\t\treturn blob;\r\n\t}\r\n}\r\n\r\nexport class Guid {\r\n\tstatic newGuid() {\r\n\t\treturn 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n\t\t\tlet r = (Math.random() * 16) | 0,\r\n\t\t\t\tv = c === 'x' ? r : (r & 0x3) | 0x8;\r\n\t\t\treturn v.toString(16);\r\n\t\t});\r\n\t}\r\n}\r\n","import { Component, OnInit, Inject, ViewChild, AfterViewInit } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { MatButton } from '@angular/material/button';\r\n\r\n@Component({\r\n\tselector: 'pp-warnings-dialog',\r\n\ttemplateUrl: './warnings-dialog.component.html',\r\n\tstyleUrls: ['./warnings-dialog.component.scss'],\r\n})\r\nexport class WarningsDialogComponent implements OnInit, AfterViewInit {\r\n\t@ViewChild('cancelButton') cancelButton: MatButton;\r\n\r\n\t// Template properties\r\n\ttitle: string;\r\n\tmessages: string[];\r\n\twithConfirm: boolean;\r\n\tconfirmCaption: string;\r\n\tcancelCaption = 'Cancel';\r\n\r\n\tconstructor(\r\n\t\tpublic dialogRef: MatDialogRef,\r\n\t\t@Inject(MAT_DIALOG_DATA)\r\n\t\tpublic data: { title: string; messages: string[]; withConfirm?: boolean; asYesNo?: boolean }\r\n\t) { }\r\n\r\n\tngOnInit() {\r\n\t\tthis.title = this.data.title;\r\n\t\tthis.messages = this.data.messages;\r\n\t\tthis.withConfirm = this.data.withConfirm;\r\n\r\n\t\tif (this.data.asYesNo) {\r\n\t\t\tthis.confirmCaption = 'Yes';\r\n\t\t\tthis.cancelCaption = 'No';\r\n\t\t} else {\r\n\t\t\tthis.confirmCaption = this.messages.length > 1 ? `Confirm ${this.messages.length} warnings` : 'Confirm';\r\n\t\t}\r\n\t}\r\n\r\n\tngAfterViewInit() {\r\n\t\tif (this.cancelButton) {\r\n\t\t\tthis.cancelButton.focus();\r\n\t\t}\r\n\t}\r\n\r\n\tclose() {\r\n\t\tthis.dialogRef.close();\r\n\t}\r\n\r\n\tconfirm() {\r\n\t\tthis.dialogRef.close(true);\r\n\t}\r\n\r\n\tcancel() {\r\n\t\tthis.close();\r\n\t}\r\n}\r\n","\r\n
\r\n\t
    \r\n\t\t
  • {{ msg }}
  • \r\n\t
\r\n
\r\n \r\n
\r\n\t\r\n\t\r\n\t\r\n
\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { WarningsDialogComponent } from 'app/services/warnings-dialog/warnings-dialog.component';\r\nimport { MediaObserver } from '@angular/flex-layout';\r\nimport { switchMap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class WarningsService {\r\n\tconstructor(private matDialog: MatDialog, private media: MediaObserver) { }\r\n\r\n\tgetMaxWidth() {\r\n\t\tif (this.media.isActive('lt-sm')) {\r\n\t\t\treturn '375px';\r\n\t\t}\r\n\r\n\t\treturn '500px';\r\n\t}\r\n\r\n\tshowWarnings(title: string, messages: string[]): Observable {\r\n\t\treturn this.matDialog\r\n\t\t\t.open(WarningsDialogComponent, {\r\n\t\t\t\twidth: this.getMaxWidth(),\r\n\t\t\t\tdata: {\r\n\t\t\t\t\ttitle,\r\n\t\t\t\t\tmessages,\r\n\t\t\t\t},\r\n\t\t\t})\r\n\t\t\t.afterClosed();\r\n\t}\r\n\r\n\tshowWarningsWithConfirm(title: string, messages: string[], confirms?: string[]): Observable {\r\n\t\t// If there are confirms, show those first, then if \"Yes\" carry on to show the warnings.\r\n\t\tif (confirms && confirms.length) {\r\n\t\t\treturn this.showConfirm(title, confirms).pipe(\r\n\t\t\t\tswitchMap((result) => {\r\n\t\t\t\t\tif (result === true) {\r\n\t\t\t\t\t\tif (!messages.length) {\r\n\t\t\t\t\t\t\treturn of(true);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn this.showWarningsWithConfirm(title, messages);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn of(false);\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\treturn this.matDialog\r\n\t\t\t.open(WarningsDialogComponent, {\r\n\t\t\t\twidth: this.getMaxWidth(),\r\n\t\t\t\tautoFocus: false,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\ttitle,\r\n\t\t\t\t\tmessages,\r\n\t\t\t\t\twithConfirm: true,\r\n\t\t\t\t},\r\n\t\t\t})\r\n\t\t\t.afterClosed();\r\n\t}\r\n\r\n\tshowConfirm(title: string, confirms: string[]): Observable {\r\n\t\treturn this.matDialog\r\n\t\t\t.open(WarningsDialogComponent, {\r\n\t\t\t\twidth: this.getMaxWidth(),\r\n\t\t\t\tautoFocus: false,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\ttitle,\r\n\t\t\t\t\tmessages: confirms,\r\n\t\t\t\t\twithConfirm: true,\r\n\t\t\t\t\tasYesNo: true,\r\n\t\t\t\t},\r\n\t\t\t})\r\n\t\t\t.afterClosed();\r\n\t}\r\n\r\n\tshowRestricted(title: string, confirms: string[]): Observable {\r\n\t\treturn this.matDialog\r\n\t\t\t.open(WarningsDialogComponent, {\r\n\t\t\t\twidth: this.getMaxWidth(),\r\n\t\t\t\tautoFocus: false,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\ttitle,\r\n\t\t\t\t\tmessages: confirms,\r\n\t\t\t\t\twithConfirm: false,\r\n\t\t\t\t\tasYesNo: false,\r\n\t\t\t\t},\r\n\t\t\t})\r\n\t\t\t.afterClosed();\r\n\t}\r\n\r\n\tshowMultiErrors(title: string, messagesString: string): Observable {\r\n\t\tlet messages = messagesString.split('\\r\\n').filter((s) => s);\r\n\t\treturn this.matDialog\r\n\t\t\t.open(WarningsDialogComponent, {\r\n\t\t\t\twidth: this.getMaxWidth(),\r\n\t\t\t\tdata: {\r\n\t\t\t\t\ttitle,\r\n\t\t\t\t\tmessages,\r\n\t\t\t\t},\r\n\t\t\t})\r\n\t\t\t.afterClosed();\r\n\t}\r\n}\r\n","import { Directive, Host, Self, Optional } from '@angular/core';\r\nimport { MatOption } from '@angular/material/core';\r\n@Directive({\r\n\tselector: 'mat-option',\r\n\thost: {\r\n\t\t/// Add a directive to mat-option\r\n\t\t/// to have `aria-selected` default to false\r\n\t\t/// for the screen reader\r\n\t\t'[attr.aria-selected]': 'selected',\r\n\t},\r\n})\r\nexport class MatOptionDirective {\r\n\r\n\tget selected(): boolean {\r\n\t\treturn this.matOption?.selected ?? false;\r\n\t}\r\n\r\n\tconstructor(\r\n\t\t@Host() @Self() private matOption: MatOption,\r\n\t) { }\r\n\r\n}\r\n","import {\r\n\tDirective,\r\n\tAttribute,\r\n\tHost,\r\n\tSelf,\r\n\tOptional,\r\n} from '@angular/core';\r\nimport { MatSortHeader } from '@angular/material/sort';\r\n\r\n@Directive({\r\n\tselector: '[mat-sort-header]',\r\n\texportAs: 'matSortHeader',\r\n})\r\nexport class MatSortHeaderDirective {\r\n\r\n\tget id(): string {\r\n\t\treturn this._header.id;\r\n\t}\r\n\r\n\tconstructor(\r\n\t\t@Host() @Self() @Optional() private _header: MatSortHeader,\r\n\t\t@Attribute('mat-sort-description') public description\r\n\t) {\r\n\t\t// console.log(this.matSortLabel);\r\n\t\t// console.trace();\r\n\t}\r\n\r\n}\r\n","import {\r\n\tDirective,\r\n\tViewChildren,\r\n\tHost,\r\n\tSelf,\r\n\tOptional,\r\n\tQueryList,\r\n\tOnDestroy,\r\n\tContentChildren\r\n} from '@angular/core';\r\nimport { MatSort, MatSortHeader, Sort } from '@angular/material/sort';\r\nimport { LiveReaderService } from 'app/accessibility/live-reader.service';\r\n\r\nimport { Subscription } from 'rxjs';\r\nimport { MatSortHeaderDirective } from './mat-sort-header.directive';\r\n\r\n@Directive({\r\n\tselector: '[matSort]'\r\n})\r\nexport class MatSortDirective implements OnDestroy {\r\n\r\n\tprivate subscriptions: Subscription[] = [];\r\n\r\n\tprivate _headers: { [sortKey: string]: string } = {};\r\n\t@ContentChildren(MatSortHeaderDirective) set headers(value: QueryList) {\r\n\t\tconsole.log(value);\r\n\t\tthis._headers = {};\r\n\t\tvalue.forEach(x => {\r\n\t\t\tthis._headers[x.id] = x.description;\r\n\t\t});\r\n\t};\r\n\r\n\tconstructor(\r\n\t\t@Host() @Self() @Optional() public sort: MatSort,\r\n\t\tprivate announcer: LiveReaderService\r\n\t) {\r\n\t\tthis.subscriptions.push(\r\n\t\t\tthis.sort.sortChange.subscribe((sort: Sort) => {\r\n\t\t\t\tif (sort.active in this._headers) {\r\n\t\t\t\t\tconst header = this._headers[sort.active];\r\n\t\t\t\t\tif (typeof header === 'string' && header.trim() != '') {\r\n\t\t\t\t\t\tswitch (sort.direction) {\r\n\t\t\t\t\t\t\tcase 'asc': return this.announcer.announce(`\"${header.trim()}\" sorted in ascending order`);\r\n\t\t\t\t\t\t\tcase 'desc': return this.announcer.announce(`\"${header.trim()}\" sorted in descending order`);\r\n\t\t\t\t\t\t\tdefault: return this.announcer.announce(`\"${header.trim()}\" sort removed`);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}),\r\n\t\t)\r\n\t}\r\n\r\n\tngAfterViewInit() { }\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.subscriptions.forEach(x => x.unsubscribe());\r\n\t}\r\n\r\n}\r\n","import { Component, Input, Output, EventEmitter, OnInit, OnDestroy } from '@angular/core';\r\nimport { UntypedFormGroup } from '@angular/forms';\r\nimport { CheckSaveChangesService } from 'app/services';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n\tselector: 'pp-apply-cancel',\r\n\ttemplateUrl: './apply-cancel.component.html',\r\n\tstyleUrls: ['./apply-cancel.component.scss']\r\n})\r\nexport class ApplyCancelComponent implements OnInit, OnDestroy {\r\n\tprivate newIsEnabled: boolean;\r\n\r\n\t@Input() disabledWhileSaving: boolean = true;\r\n\t@Input() active: boolean = true;\r\n\t@Input() asSave: boolean;\r\n\t@Input() form?: UntypedFormGroup;\r\n\t@Input() readOnly: boolean;\r\n\t@Output() result = new EventEmitter();\r\n\r\n\tisEnabled: boolean = true;\r\n\tsubscriber: Subscription;\r\n\r\n\tconstructor(\r\n\t\tprivate saveChanges: CheckSaveChangesService\r\n\t) {\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.isEnabled = true;\r\n\t\tif (this.disabledWhileSaving) {\r\n\t\t\tthis.subscriber = this.saveChanges.inProgress$.subscribe(inProgress => {\r\n\t\t\t\tthis.newIsEnabled = !inProgress;\r\n\t\t\t\tif (inProgress) {\r\n\t\t\t\t\tthis.isEnabled = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\tthis.isEnabled = this.newIsEnabled;\r\n\t\t\t\t\t}, 250);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tif (this.subscriber) {\r\n\t\t\tthis.subscriber.unsubscribe();\r\n\t\t}\r\n\t}\r\n\r\n\tapply() {\r\n\t\tthis.result.emit(true);\r\n\t}\r\n\r\n\tcancel() {\r\n\t\tthis.result.emit(false);\r\n\t}\r\n\r\n\tget isDisabled() {\r\n\t\treturn (this.form && !this.form.valid) || !this.active || this.readOnly || !this.isEnabled;\r\n\t}\r\n}\r\n","
\r\n\t\r\n\r\n\t\r\n
\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { AppointmentRendererService } from 'app/appointments/appointment-renderer.service';\r\nimport { CommAddressDisplayDto } from 'app/services';\r\n\r\n@Pipe({\r\n\tname: 'appointmentPhone'\r\n})\r\nexport class AppointmentPhonePipe implements PipeTransform {\r\n\r\n\tconstructor(private renderer: AppointmentRendererService) { }\r\n\r\n\ttransform(value: CommAddressDisplayDto): string {\r\n\t\treturn this.renderer.formatPhoneNumber(value);\r\n\t}\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { Location } from '@angular/common';\r\n\r\nimport { ICheckSaveChanges } from 'app/interfaces';\r\nimport {\r\n\tCommonService,\r\n\tSaveResultDto,\r\n\tSaveResult,\r\n\tCheckSaveChangesService,\r\n} from 'app/services';\r\n\r\nimport { IEditComponent } from 'app/interfaces';\r\n\r\n@Component({\r\n\ttemplate: ''\r\n})\r\nexport class BaseEditComponent implements ICheckSaveChanges {\r\n\tprotected location: Location;\r\n\tprotected checkSaveChanges: CheckSaveChangesService;\r\n\r\n\tprotected objectName: string;\r\n\teditDto: T;\r\n\tloading: boolean;\r\n\r\n\tconstructor(\r\n\t\tpublic common: CommonService\r\n\t) {\r\n\t\tthis.location = common.location;\r\n\t\tthis.checkSaveChanges = common.checkSaveChanges;\r\n\t}\r\n\r\n\tgetObject() {\r\n\t\treturn this.editDto;\r\n\t}\r\n\r\n\tgetObjectName() {\r\n\t\treturn this.objectName;\r\n\t}\r\n\r\n\tprotected fetch(fetcher: () => Observable) {\r\n\t\tthis.startLoading();\r\n\r\n\t\tfetcher().subscribe(r =>\r\n\t\t\tthis.setEditDto(r),\r\n\t\t\tthis.handleError.bind(this),\r\n\t\t\tthis.fetchComplete.bind(this)\r\n\t\t);\r\n\t}\r\n\r\n\tprotected completeWithBack(\r\n\t\tresult: boolean,\r\n\t\tsaver: () => Observable> | boolean = undefined,\r\n\t\tcomponent: IEditComponent = undefined) {\r\n\t\t\t\r\n\t\tif (!result) {\r\n\t\t\tthis.location.back();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet saverResult: Observable> | boolean;\r\n\t\tif (!saver) {\r\n\t\t\tsaverResult = this.checkSaveChanges.saveChanges(component);\r\n\t\t} else {\r\n\t\t\tsaverResult = saver();\r\n\t\t}\r\n\r\n\t\tif (typeof saverResult === 'boolean') {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tsaverResult.subscribe(r => {\r\n\t\t\tif (r.saveResult === SaveResult.OK) {\r\n\t\t\t\tthis.location.back();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprotected startLoading() {\r\n\t\tthis.loading = true;\r\n\t}\r\n\r\n\tprotected setEditDto(editDto: T) {\r\n\t\tthis.loading = false;\r\n\t\tthis.editDto = editDto;\r\n\t}\r\n\r\n\tprotected handleError(err) {\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\tprotected fetchComplete() {\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\tprotected get systemPreferences() {\r\n\t\treturn this.common.systemPreferences;\r\n\t}\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { Observable, BehaviorSubject } from 'rxjs';\r\n\r\nimport { Subscription } from 'rxjs'\r\nimport {\r\n\tConfigService,\r\n\tLoggerService,\r\n\tLoadingStateService,\r\n\tCommonService,\r\n} from 'app/services';\r\n\r\n@Component({\r\n\ttemplate: ''\r\n})\r\nexport class BaseViewComponent {\r\n\tsubscriptions: Subscription[] = [];\r\n\r\n\r\n\tprivate isLoading: boolean;\r\n\tprotected config: ConfigService;\r\n\tprotected logger: LoggerService;\r\n\tprotected loadingState: LoadingStateService;\r\n\r\n\tget loading(): boolean {\r\n\t\treturn this.isLoading;\r\n\t}\r\n\r\n\tset loading(value: boolean) {\r\n\t\tthis.isLoading = value;\r\n\t\tthis.loadingState.setLoading(value);\r\n\t}\r\n\r\n\tget loading$(): Observable {\r\n\t\treturn this.loadingState.loading$;\r\n\t}\r\n\r\n\tconstructor(\r\n\t\tpublic common: CommonService\r\n\t) {\r\n\t\tthis.config = common.config;\r\n\t\tthis.logger = common.logger;\r\n\t\tthis.loadingState = common.loadingState;\r\n\t}\r\n\r\n\tnavigateWithLoading(params: any[]) {\r\n\t\tthis.loading = true;\r\n\t\tthis.common.router.navigate(params)\r\n\t\t\t.then(() => this.loading = false)\r\n\t\t\t.catch(() => this.loading = false);\r\n\t}\r\n\r\n\thandleError(err: any, context: string) {\r\n\t\tthis.loading = false;\r\n\t\tif (this.common.isAlreadyHandledError(err)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.common.showSnackBarMessage('Error ' + context);\r\n\t\tthis.logger.logError('Error ' + context, err);\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.subscriptions.forEach(x => x.unsubscribe());\r\n\t}\r\n\r\n\tprotected get systemPreferences() {\r\n\t\treturn this.common.systemPreferences;\r\n\t}\r\n}\r\n","import { Directive, HostListener, Input, OnInit } from '@angular/core';\r\n\r\n@Directive({\r\n\tselector: '[ppBlockNonNumber]'\r\n})\r\nexport class BlockNonNumberDirective implements OnInit {\r\n\t/* tslint:disable-next-line:no-input-rename */\r\n\t@Input('ppBlockNonNumber') enabled: boolean;\r\n\r\n\t@HostListener('paste', ['$event']) onPaste(event: ClipboardEvent) {\r\n\t\tif (!this.enabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst pastedData = event.clipboardData.getData('text');\r\n\t\tconst num = Number(pastedData);\r\n\t\tif (isNaN(num)) {\r\n\t\t\tevent.preventDefault();\r\n\t\t}\r\n\t}\r\n\r\n\t@HostListener('keydown', ['$event']) onKeyDown(event: KeyboardEvent) {\r\n\t\tif (!this.enabled || event.ctrlKey || event.altKey) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst keyCode = [\r\n\t\t\t8, 9,\t// Backspace, Tab\r\n\t\t\t13,\t\t// Enter\r\n\t\t\t35, 36,\t// End, Home\r\n\t\t\t37, 39,\t// Left, Right\r\n\t\t\t45, 46,\t// Insert, Delete\r\n\t\t\t48, 49, 50, 51, 52, 53, 54, 55, 56, 57, // 0 - 9\r\n\t\t\t96, 97, 98, 99, 100, 101, 102, 103, 104, 105, // Numeric 0 - 9\r\n\t\t\t110\t\t// Decimal point\r\n\t\t];\r\n\t\tif (keyCode.indexOf(event.which) === -1) {\r\n\t\t\tevent.preventDefault();\r\n\t\t}\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tif (this.enabled === undefined) {\r\n\t\t\tthis.enabled = true;\r\n\t\t}\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n\tname: 'breakify'\r\n})\r\nexport class BreakifyPipe implements PipeTransform {\r\n\ttransform(value: string, args?: any): any {\r\n\t\tif (!value) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\t\tlet result = value.replace(/\\r\\n/g, '
');\r\n\t\treturn result;\r\n\t}\r\n}\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { ConfigService,\tActivityHeaderItemDto } from 'app/services';\r\n\r\n@Component({\r\n\tselector: 'pp-case-search-item',\r\n\ttemplateUrl: './case-search-item.component.html',\r\n\tstyleUrls: ['./case-search-item.component.scss']\r\n})\r\nexport class CaseSearchItemComponent {\r\n\t@Input() public result: ActivityHeaderItemDto;\r\n\t@Output() public select = new EventEmitter();\r\n\t@Output() public selectComplete = new EventEmitter();\r\n\r\n\tuseManager = false;\r\n\r\n\tconstructor(private config: ConfigService)\r\n\t{\t\r\n\t\tthis.useManager = config.systemPreferences.useManagerInSearch\r\n\t}\r\n\r\n\tgetCustomerOrEmployer(item: ActivityHeaderItemDto): string {\r\n\t\tconst activityHeaderItem = item as ActivityHeaderItemDto;\r\n\t\tif (activityHeaderItem.customerName) \r\n\t\t\treturn activityHeaderItem.customerName;\r\n\t\telse\r\n\t\t\treturn activityHeaderItem.employerName;\r\n\t}\r\n\r\n\tisManager() {\r\n\t\treturn this.useManager;\r\n\t}\r\n\r\n\tgetManager(item: ActivityHeaderItemDto): string {\r\n\t\tconst activityHeaderItem = item as ActivityHeaderItemDto;\r\n\t\tif (activityHeaderItem.manager) \r\n\t\t\treturn 'Manager:' + activityHeaderItem.manager;\r\n\t\treturn '';\r\n\t}\r\n\r\n\tonSelect(result: ActivityHeaderItemDto) {\r\n\t\tthis.select.emit(result);\r\n\t}\r\n\r\n\tonSelectComplete(result: ActivityHeaderItemDto) {\r\n\t\tthis.selectComplete.emit(result);\r\n\t}\r\n}\r\n","
\t\r\n\t
\r\n\t\t
{{ result.fileNumber }}
\r\n\t\t
{{ result.name }}
\r\n\t\t
\r\n\t\t\t \r\n\t\t
\r\n\t\t\r\n\t\t
{{ result.serviceType }}
\r\n\t
\r\n\r\n\t
\r\n\t\t
{{ result.activityStatus }}
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\tOpened: {{ result.openedDateTime | date:'EEE d MMM y' }}\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\tClosed: {{ result.closedDateTime | date:'EEE d MMM y' }}\t\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n\t\t{{ getCustomerOrEmployer(result) }}\r\n\t\t{{ getManager(result) }}\r\n\t
\r\n
\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n\tname: 'duration'\r\n})\r\nexport class DurationPipe implements PipeTransform {\r\n\ttransform(value: number, args?: any): any {\r\n\t\tlet formattedDuration: string;\r\n\t\tif (value < 1) {\r\n\t\t\tformattedDuration = (value * 60).toString() + ' minutes';\r\n\t\t} else if (Math.floor(value) === value) {\r\n\t\t\tformattedDuration = value.toString() + ` hour${value > 1 ? 's' : ''}`;\r\n\t\t} else {\r\n\t\t\tformattedDuration = value.toFixed(2) + ' hours';\r\n\t\t}\r\n\r\n\t\treturn formattedDuration;\r\n\t}\r\n}\r\n","import { Directive, forwardRef, Attribute } from '@angular/core';\r\nimport { Validator, AbstractControl, NG_VALIDATORS } from '@angular/forms';\r\n\r\n@Directive({\r\n\tselector: '[ppValidateEqual][formControlName],[ppValidateEqual][formControl],[ppValidateEqual][ngModel]',\r\n\tproviders: [\r\n\t\t{ provide: NG_VALIDATORS, useExisting: forwardRef(() => EqualValidatorDirective), multi: true }\r\n\t]\r\n})\r\nexport class EqualValidatorDirective implements Validator {\r\n\tconstructor(\r\n\t\t@Attribute('ppValidateEqual') public validateEqual: string,\r\n\t\t@Attribute('reverse') public reverse: boolean) {\r\n\t}\r\n\r\n\tvalidate(c: AbstractControl): { [key: string]: any } {\r\n\t\tif (!c || !c.root) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\t// self value\r\n\t\tconst v = c.value;\r\n\r\n\t\t// Get the other control\r\n\t\tconst e = c.root.get(this.validateEqual);\r\n\r\n\t\tif (e && v !== e.value && !this.reverse) {\r\n\t\t\treturn {\r\n\t\t\t\tvalidateEqual: true\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\t// Value equal and reverse\r\n\t\tif (e && v === e.value && this.reverse) {\r\n\t\t\tif (e.errors) {\r\n\t\t\t\tdelete e.errors['validateEqual'];\r\n\t\t\t}\r\n\t\t\tif (e.errors && !Object.keys(e.errors).length) {\r\n\t\t\t\te.setErrors(null);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Values not equal and reverse.\r\n\t\tif (e && v !== e.value && this.reverse) {\r\n\t\t\te.setErrors({\r\n\t\t\t\tvalidateEqual: true\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n\tname: 'fileSize'\r\n})\r\nexport class FileSizePipe implements PipeTransform {\r\n\ttransform(value: any, args?: any): any {\r\n\t\tconst bytes = parseInt(value, 10);\r\n\r\n\t\tconst gb = Math.pow(2, 30);\r\n\t\tconst mb = Math.pow(2, 20);\r\n\t\tconst kb = Math.pow(2, 10);\r\n\r\n\t\tif (bytes >= gb) {\r\n\t\t\tlet size = bytes / gb;\r\n\t\t\treturn `${size.toFixed(2)} GB`;\r\n\t\t}\r\n\t\tif (bytes >= mb) {\r\n\t\t\tlet size = bytes / mb;\r\n\t\t\treturn `${size.toFixed(2)} MB`;\r\n\t\t}\r\n\t\tif (bytes >= kb) {\r\n\t\t\tlet size = bytes / kb;\r\n\t\t\treturn `${size.toFixed(2)} KB`;\r\n\t\t}\r\n\t\tif (bytes >= 0) {\r\n\t\t\treturn `${bytes} B`;\r\n\t\t}\r\n\r\n\t\treturn '0 B';\r\n\t}\r\n}\r\n","import { Inject, Directive, Input, EventEmitter, ElementRef, OnInit } from '@angular/core';\r\n\r\n@Directive({\r\n\tselector: '[ppFocus]'\r\n})\r\nexport class FocusDirective implements OnInit {\r\n\t/* tslint:disable-next-line:no-input-rename */\r\n\t@Input('ppFocus') focus: EventEmitter;\r\n\r\n\tconstructor(\r\n\t\t@Inject(ElementRef) private element: ElementRef) {\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tif (!this.focus) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.focus.subscribe(event => {\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.element.nativeElement.focus();\r\n\t\t\t\tthis.element.nativeElement.select();\r\n\t\t\t}, 100);\r\n\t\t});\r\n\t}\r\n}\r\n","import { Input, OnInit, Directive } from '@angular/core';\r\nimport { ControlValueAccessor, UntypedFormControl, AbstractControl } from '@angular/forms';\r\n\r\n@Directive()\r\nexport abstract class BaseComponent implements ControlValueAccessor, OnInit {\r\n\tprivate innerValue: T;\r\n\r\n\tprivate changed = new Array<(value: T) => void>();\r\n\tprivate touched = new Array<() => void>();\r\n\tprivate validator: (c: UntypedFormControl) => void = undefined;\r\n\r\n\tcontrol: UntypedFormControl;\r\n\tisDisabled: Boolean = false;\r\n\r\n\t@Input() required = false;\r\n\t@Input() size: string;\r\n\t@Input() formControlName: string;\r\n\r\n\r\n\t// tslint:disable-next-line:no-empty\r\n\tsetFocus() { }\r\n\r\n\t// tslint:disable-next-line:no-empty\r\n\tonSetValue() { }\r\n\r\n\tget value(): T {\r\n\t\treturn this.innerValue;\r\n\t}\r\n\r\n\t@Input()\r\n\tset value(value: T) {\r\n\t\tif (this.innerValue !== value) {\r\n\t\t\tthis.innerValue = value;\r\n\t\t\tthis.changed.forEach((f) => f(value));\r\n\r\n\t\t\tthis.onSetValue();\r\n\t\t}\r\n\t}\r\n\r\n\tget isValid(): Boolean {\r\n\t\tif (!this.control) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn this.control.valid;\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.checkRequired();\r\n\t}\r\n\r\n\twriteValue(value: T) {\r\n\t\tthis.innerValue = value;\r\n\t}\r\n\r\n\tregisterOnChange(fn: (value: T) => void) {\r\n\t\tthis.changed.push(fn);\r\n\t}\r\n\r\n\tregisterOnTouched(fn: () => void) {\r\n\t\tthis.touched.push(fn);\r\n\t}\r\n\r\n\ttouch() {\r\n\t\tthis.touched.forEach((f) => f());\r\n\t}\r\n\r\n\tsetDisabledState(isDisabled: boolean): void {\r\n\t\tthis.isDisabled = isDisabled;\r\n\t}\r\n\r\n\tvalidate(c: UntypedFormControl) {\r\n\t\tif (!this.control) {\r\n\t\t\tthis.control = c;\r\n\t\t\tthis.checkRequired();\r\n\t\t}\r\n\r\n\t\tif (this.validator) {\r\n\t\t\treturn this.validator(c);\r\n\t\t}\r\n\t}\r\n\r\n\tregisterValidator(v: (c: UntypedFormControl) => void) {\r\n\t\tthis.validator = v;\r\n\t}\r\n\r\n\tprivate checkRequired() {\r\n\t\tif (this.control) {\r\n\t\t\tif (!this.required) {\r\n\t\t\t\tthis.required = this.hasRequiredField(this.control);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate hasRequiredField = (abstractControl: AbstractControl): boolean => {\r\n\t\tif (abstractControl.validator) {\r\n\t\t\tconst validator = abstractControl.validator({} as AbstractControl);\r\n\t\t\tif (validator && validator.required) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// eslint-disable-next-line @typescript-eslint/dot-notation\r\n\t\tlet controls = abstractControl['controls'];\r\n\t\tif (controls) {\r\n\t\t\tfor (const controlName in controls) {\r\n\t\t\t\tif (controls[controlName]) {\r\n\t\t\t\t\tif (this.hasRequiredField(controls[controlName])) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n}\r\n","import { Component, Input, forwardRef } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nimport { BaseComponent } from './base-component';\r\n\r\nlet identifier = 0;\r\n\r\n@Component({\r\n\tselector: 'pp-button-toggle',\r\n\ttemplate: `\r\n\t\r\n\t\t{{ label }}\r\n\t\r\n`,\r\n\tstyleUrls: ['./button-toggle.component.scss'],\r\n\tproviders: [\r\n\t\t{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ButtonToggleComponent), multi: true }\r\n\t]\r\n})\r\nexport class ButtonToggleComponent extends BaseComponent {\r\n\t@Input() label: string;\r\n\r\n\tpublic identifier = `button-toggle-${identifier++}`;\r\n\r\n\tvalueChanged(ev: Event) {\r\n\t\tthis.value = !this.value;\r\n\t}\r\n}\r\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\r\n\r\nlet identifier = 0;\r\n\r\n@Component({\r\n\tselector: 'pp-button',\r\n\ttemplate: `\r\n\t\t\r\n\t\t\t{{ label }}\r\n\t\t\r\n\t`,\r\n\tstyleUrls: ['./button.component.scss']\r\n})\r\nexport class ButtonComponent implements OnInit {\r\n\t@Input() label: string;\r\n\t@Input() type: string;\r\n\t@Input() disabled: boolean;\r\n\t@Input() color: string;\r\n\t@Output() clicked = new EventEmitter();\r\n\r\n\tpublic identifier = `button-${identifier++}`;\r\n\r\n\tngOnInit() {\r\n\t\tif (!this.type) {\r\n\t\t\tthis.type = 'button';\r\n\t\t}\r\n\t}\r\n\r\n\thandleClick(ev: Event) {\r\n\t\tev.stopPropagation();\r\n\t\tif (this.disabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.clicked.emit(ev);\r\n\t}\r\n}\r\n","import { Component, Input, Output, EventEmitter, forwardRef, ViewChild, ElementRef } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nimport { BaseComponent } from './base-component';\r\n\r\nlet identifier = 0;\r\n\r\n@Component({\r\n\tselector: 'pp-checkbox',\r\n\ttemplate: `\r\n
\r\n\t\r\n\t\t{{ label }}\r\n\t\r\n
`,\r\n\tstyleUrls: ['./checkbox.component.scss'],\r\n\tproviders: [\r\n\t\t{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => CheckboxComponent), multi: true }\r\n\t]\r\n})\r\nexport class CheckboxComponent extends BaseComponent {\r\n\t@Input() label: string;\r\n\t@Output() onChange = new EventEmitter();\r\n\r\n\tpublic identifier = `checkbox-${identifier++}`;\r\n\r\n\t@ViewChild('inputElement', { static: true }) inputEl: ElementRef;\r\n\r\n\tonBlur() {\r\n\t\tthis.touch();\r\n\t}\r\n\r\n\thandleChange(state: boolean) {\r\n\t\tthis.onChange.emit(state);\r\n\t}\r\n\r\n\tsetFocus() {\r\n\t\tthis.inputEl.nativeElement.focus();\r\n\t\tthis.inputEl.nativeElement.select();\r\n\t}\r\n}\r\n","import { Component, OnChanges, Input, forwardRef, ViewChild, ElementRef, ChangeDetectorRef, HostListener, OnInit } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';\r\nimport { MatDatepicker } from '@angular/material/datepicker';\r\nimport * as moment from 'moment';\r\n\r\nimport { BaseComponent } from './base-component';\r\n\r\nlet identifier = 0;\r\n\r\n@Component({\r\n\tselector: 'pp-date',\r\n\ttemplate: `\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
{{ label }} is required
\r\n\t\t
\r\n\t`,\r\n\tstyleUrls: ['./date.component.scss'],\r\n\tproviders: [\r\n\t\t{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateComponent), multi: true },\r\n\t\t{ provide: NG_VALIDATORS, useExisting: forwardRef(() => DateComponent), multi: true }\r\n\t]\r\n})\r\nexport class DateComponent extends BaseComponent implements OnInit, OnChanges {\r\n\tinputValue: string;\r\n\r\n\tprivate screenWidth: number;\r\n\tprivate screenHeight: number;\r\n\r\n\tget isMobile(): boolean {\r\n\t\treturn this.screenWidth < 1024;\r\n\t}\r\n\r\n\t@Input() label: string;\r\n\t@Input() placeholder = '';\r\n\t@Input() isDisabled: boolean;\r\n\r\n\tpublic identifier = `date-${identifier++}`;\r\n\r\n\t@ViewChild('input', { static: true }) inputEl: ElementRef;\r\n\t@ViewChild('dateInput', { static: true }) dateInputEl: ElementRef;\r\n\t@ViewChild('picker', { static: true }) picker: MatDatepicker;\r\n\r\n\tconstructor(\r\n\t\tprivate cdRef: ChangeDetectorRef,\r\n\t) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tonBlur() {\r\n\t\tthis.touch();\r\n\t}\r\n\r\n\tngOnChanges(inputs) {\r\n\t\tif (!this.placeholder) {\r\n\t\t\tthis.placeholder = this.label || '';\r\n\t\t}\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.screenWidth = window.innerWidth;\r\n\t\tthis.screenHeight = window.innerHeight;\r\n\t}\r\n\r\n\tinputKeydown(e: KeyboardEvent) {\r\n\t\tswitch (e.keyCode) {\r\n\t\t\tcase 36:\r\n\t\t\tcase 35:\r\n\t\t\tcase 36:\r\n\t\t\tcase 39:\r\n\t\t\tcase 16:\r\n\t\t\tcase 9:\r\n\t\t\t\treturn;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tswitch (e.key) {\r\n\t\t\tcase 'Backspace':\r\n\t\t\tcase 'Delete':\r\n\t\t\tcase 'Enter':\r\n\t\t\t\treturn;\r\n\t\t\tcase '.':\r\n\t\t\tcase '-':\r\n\t\t\tcase '/':\r\n\t\t\tcase ' ':\r\n\t\t\tcase '0':\r\n\t\t\tcase '1':\r\n\t\t\tcase '2':\r\n\t\t\tcase '3':\r\n\t\t\tcase '4':\r\n\t\t\tcase '5':\r\n\t\t\tcase '6':\r\n\t\t\tcase '7':\r\n\t\t\tcase '8':\r\n\t\t\tcase '9':\r\n\t\t\t\treturn;\r\n\t\t\tdefault:\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tinputFocus() {\r\n\t\tthis.picker.close();\r\n\t\tthis.formatInputValue(true);\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.dateInputEl.nativeElement.select();\r\n\t\t});\r\n\r\n\t\tthis.cdRef.detectChanges();\r\n\t}\r\n\r\n\tinputBlur() {\r\n\t\tthis.onBlur();\r\n\r\n\t\tif (!this.inputValue) {\r\n\t\t\tthis.value = null;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet val = this.inputValue;\r\n\t\t// Normalise to replace . or - or space with /\r\n\t\tval = val.replace(/[.-\\s]/g, '/');\r\n\r\n\t\t// Liberal interpretation to allow just the day of the current month,\r\n\t\t// or day/month of current year, or full date format.\r\n\t\tlet m = moment(val, ['D/M/YYYY', 'D/M', 'D'], false);\r\n\t\tif (m.isValid()) {\r\n\t\t\tthis.value = m.toDate();\r\n\t\t\tthis.formatInputValue();\r\n\t\t}\r\n\t}\r\n\r\n\tformatInputValue(focus: boolean = false) {\r\n\t\tconst format = focus ? 'D/M/YYYY' : 'ddd D MMM, YYYY';\r\n\t\tif (!this.value) {\r\n\t\t\tthis.inputValue = '';\r\n\t\t} else {\r\n\t\t\tthis.inputValue = moment(this.value).format(format);\r\n\t\t}\r\n\t}\r\n\r\n\t@HostListener('window:resize', ['$event'])\r\n\tonResize(event) {\r\n\t\tthis.screenWidth = window.innerWidth;\r\n\t\tthis.screenHeight = window.innerHeight;\r\n\t}\r\n\r\n\tonSetValue() {\r\n\t\tthis.formatInputValue();\r\n\t}\r\n\r\n\twriteValue(value: Date) {\r\n\t\tsuper.writeValue(value);\r\n\t\tif (value) {\r\n\t\t\tthis.formatInputValue();\r\n\t\t} else {\r\n\t\t\tthis.inputValue = '';\r\n\t\t}\r\n\t}\r\n\r\n\tsetFocus() {\r\n\t\tthis.dateInputEl.nativeElement.focus();\r\n\t\tthis.dateInputEl.nativeElement.select();\r\n\t}\r\n\r\n\ttogglePicker() {\r\n\t\tthis.picker.open();\r\n\t}\r\n}\r\n","import { UtilsService } from './../../services/utils.service';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { Component, Input, forwardRef, OnChanges } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nimport { BaseComponent } from './base-component';\r\n\r\nlet identifier = 0;\r\n\r\n@Component({\r\n\tselector: 'pp-display',\r\n\ttemplate: `\r\n\t\t
\r\n\t\t\t{{ label }}\r\n\t\t\t\r\n\t\t\t\t{{ value }}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t \r\n\t\t
\r\n\t`,\r\n\tstyleUrls: ['./display.component.scss'],\r\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DisplayComponent), multi: true }]\r\n})\r\nexport class DisplayComponent extends BaseComponent implements OnChanges {\r\n\t@Input() label: string;\r\n\t@Input() multiLineStringConvertToHtml: boolean;\r\n\r\n\tinnerHtml: SafeHtml;\r\n\r\n\tpublic identifier = `display-${identifier++}`;\r\n\r\n\tconstructor(private domSanitizer: DomSanitizer, private utils: UtilsService) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tngOnChanges(changes) {\r\n\t\tif (changes.value) {\r\n\t\t\tif (this.multiLineStringConvertToHtml) {\r\n\t\t\t\tconst converted = this.utils.breakify(this.value);\r\n\t\t\t\tthis.innerHtml = this.domSanitizer.bypassSecurityTrustHtml(converted);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","import { Component, Input, Output, forwardRef, OnChanges, EventEmitter } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';\r\nimport { BaseComponent } from './base-component';\r\nimport { Validators, FormControl, AbstractControl, ValidationErrors } from '@angular/forms';\r\n\r\nlet identifier = 0;\r\n\r\n@Component({\r\n\tselector: 'pp-html-editor',\r\n\ttemplate: `\r\n
\r\n\t\r\n\t\r\n\t
{{ label }} is required
\r\n\r\n\t
\r\n Minimum length is {{ control.errors?.minLength.requiredLength }} characters. Current length is {{ control.errors?.minLength.actualLength }} characters.\r\n
\r\n\r\n
`,\r\n\tstyleUrls: ['./html-editor.component.scss'],\r\n\tproviders: [\r\n\t\t{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HtmlEditorComponent), multi: true },\r\n\t\t{ provide: NG_VALIDATORS, useExisting: forwardRef(() => HtmlEditorComponent), multi: true }\r\n\t]\r\n})\r\nexport class HtmlEditorComponent extends BaseComponent implements OnChanges {\r\n\tprivate numChanges = 0;\r\n\r\n\tprivate editModules = {\r\n\t\ttoolbar: [\r\n\t\t\t['bold', 'italic', 'underline'], // toggled buttons\r\n\t\t\t[{ align: '' }, { align: 'center' }, { align: 'right' }, { align: 'justify' }],\r\n\t\t\t[{ 'list': 'ordered'}, { 'list': 'bullet' }],\r\n\t\t\t[{ 'indent': '-1'}, { 'indent': '+1' }], // outdent/indent\r\n\r\n\t\t\t[{ 'size': ['small', false, 'large', 'huge'] }], // custom dropdown\r\n\t\t\t[{ 'header': [1, 2, 3, 4, 5, 6, false] }],\r\n\r\n\t\t\t[{ 'color': [] }, { 'background': [] }], // dropdown with defaults from theme\r\n\t\t\t[{ 'font': [] }],\r\n\r\n\t\t\t['link', 'image'] // link and image\r\n\t\t],\r\n\t\thistory: {\r\n\t\t\tdelay: 1000,\r\n\t\t\tmaxStack: 500,\r\n\t\t\tuserOnly: true\r\n\t\t}\r\n\t};\r\n\t@Input() placeholder = '';\r\n\t@Input() isReadOnly : boolean = false;\r\n\t@Input() minLength = -1;\r\n\r\n\tcontrol = new FormControl();\r\n\t\r\n\t@Output() firstChange = new EventEmitter();\r\n\t@Output() valueSet = new EventEmitter();\r\n\r\n\tidentifier = `html-editor-${identifier++}`;\r\n\r\n\tget modules() {\r\n\t\tif (this.isReadOnly) {\r\n\t\t\treturn {\r\n\t\t\t\ttoolbar: false\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn this.editModules;\r\n\t}\r\n\r\n\thandleContentChanged(content: any) {\r\n\t\tthis.control.setValue(content.html);\r\n\t\tthis.numChanges++;\r\n\t\tswitch (this.numChanges) {\r\n\t\t\tcase 0:\r\n\t\t\t\tthis.valueSet.emit(content);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 1:\r\n\t\t\t\tthis.firstChange.emit(true);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tngOnChanges() {\r\n\t\t/*\r\n\r\n\t\tWe need to handle the conversion of the supplied HTML to the formatted value used by the quill editor.\r\n\t\tSetting the HTML can be slightly reformatted. E.g. setting plain text will then reformat it to be surrounded\r\n\t\tby HTML paragraph tags.\r\n\r\n\t\tThe issue with this is that the content of the control will appear to have changed and mae the form dirty\r\n\t\teven when the user hasn't actually made a change. So to handle this, we record the number of changes and\r\n\t\tlisten for the contentChanged event on the Quill editor, which will emit for the first time after the set\r\n\t\tcontent has been reformatted to its liking. This is then marked as \"change 0\" which emits a valueSet event.\r\n\r\n\t\tThe first change (i.e. the user has actually changed the content for the first time) is emitted as a firstChange\r\n\t\tevent.\r\n\r\n\t\tThe valueSet event is most useful as the consuming form than mark its corresponding control as pristine\r\n\t\tthus solving the problem of the form appearing dirty when it's not.\r\n\r\n\t\t*/\r\n\t\tthis.numChanges = -1;\r\n\t\tthis.firstChange.emit(false);\r\n\r\n\t\tif (this.minLength && this.minLength > 0) {\r\n\t\t\tthis.control = new FormControl('', [Validators.required, minLengthValidator(this.minLength)]);\r\n\t\t}\r\n\t}\r\n\r\n\tvalidate(control: AbstractControl): ValidationErrors | null {\r\n\t\treturn this.control.errors;\r\n\t}\r\n}\r\n\r\nexport function minLengthValidator(minLength : number) {\r\n\treturn (control: AbstractControl): ValidationErrors | null => {\r\n\t\tconst value = control.value || '';\r\n\t\tconst length = value.replace(/<[^>]*>/g, '').length; // Remove HTML tags and count text length\r\n\t\treturn length >= minLength ? null : { minLength: { requiredLength: minLength, actualLength: length } };\r\n\t};\r\n}","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\n\r\nlet identifier = 0;\r\n\r\n@Component({\r\n\tselector: 'pp-icon-button',\r\n\ttemplate: `\r\n\t\r\n\t\t{{ icon }}\r\n\t\r\n`,\r\n\tstyleUrls: ['./icon-button.component.scss']\r\n})\r\nexport class IconButtonComponent {\r\n\t@Input() icon: string;\r\n\t@Input() label: string;\r\n\t@Input() disabled: boolean;\r\n\t@Output() click = new EventEmitter();\r\n\r\n\tpublic identifier = `icon-button-${identifier++}`;\r\n\r\n\thandleClick(ev: Event) {\r\n\t\tthis.click.emit(ev);\r\n\t\tev.stopPropagation();\r\n\t}\r\n}\r\n","import { Component, OnChanges, Input, forwardRef } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';\r\n\r\nimport { BaseComponent } from './base-component';\r\nimport { IRadioOption } from '../interfaces';\r\n\r\nlet identifier = 0;\r\n\r\n@Component({\r\n\tselector: 'pp-radio-group',\r\n\ttemplate: `\r\n
\r\n\t{{ label }}\r\n\t
\r\n\t\t{{ label }}\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{{ option.name }}\r\n\t\t\t\r\n\t\t\r\n\t
\r\n\t
{{ label }} is required
\r\n
`,\r\n\tstyleUrls: ['./radio-group.component.scss'],\r\n\tproviders: [\r\n\t\t{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => RadioGroupComponent), multi: true },\r\n\t\t{ provide: NG_VALIDATORS, useExisting: forwardRef(() => RadioGroupComponent), multi: true }\r\n\t]\r\n})\r\nexport class RadioGroupComponent extends BaseComponent implements OnChanges {\r\n\tradioOptions: IRadioOption[];\r\n\r\n\t@Input() label: string;\r\n\t@Input() labelHorizontal = false;\r\n\t@Input() layout = 'row';\r\n\t@Input() options: IRadioOption[];\r\n\r\n\tidentifier = `radio-group-${identifier++}`;\r\n\r\n\tngOnChanges(inputs) {\r\n\t\tif (inputs.options) {\r\n\t\t\tthis.radioOptions = this.options.filter(o => !o.hide);\r\n\t\t}\r\n\t}\r\n}\r\n","import { Component, OnChanges, AfterViewInit, Input, forwardRef, ViewChild } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';\r\nimport { MatSelect } from '@angular/material/select';\r\nimport * as _ from 'lodash';\r\n\r\nimport { BaseComponent } from './base-component';\r\n\r\nlet identifier = 0;\r\n\r\nclass SelectItem {\r\n\tlabel: string;\r\n\tvalue: any;\r\n}\r\n\r\n@Component({\r\n\tselector: 'pp-select',\r\n\ttemplate: `\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{{ opt.label }}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t{{ label }} is required\r\n\t\t\t
\r\n\t\t
\r\n\t`,\r\n\tstyleUrls: ['./select.component.scss'],\r\n\tproviders: [\r\n\t\t{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SelectComponent), multi: true },\r\n\t\t{ provide: NG_VALIDATORS, useExisting: forwardRef(() => SelectComponent), multi: true }\r\n\t]\r\n})\r\nexport class SelectComponent extends BaseComponent implements OnChanges, AfterViewInit {\r\n\tprivate labelOpacity = 1;\r\n\tprivate _options: SelectItem[];\r\n\r\n\t@Input() label: string;\r\n\t@Input() options: any[];\r\n\t@Input() labelKey = 'name';\r\n\t@Input() placeholder = 'Select...';\r\n\t@Input() dataKey = 'id';\r\n\t@Input() width: number;\r\n\t@Input() nullable = true;\r\n\t@Input() getLabel: Function;\r\n\t@Input() selectionChange: Function;\r\n\r\n\tpublic identifier = `select-${identifier++}`;\r\n\r\n\t@ViewChild(MatSelect, { static: true }) select: MatSelect;\r\n\r\n\tget selectOptions() {\r\n\t\treturn this._options;\r\n\t}\r\n\r\n\tngAfterViewInit() {\r\n\t\tif (this.required) {\r\n\t\t\tthis.select.required = true;\r\n\t\t}\r\n\t}\r\n\r\n\tonBlur() {\r\n\t\tthis.touch();\r\n\t}\r\n\r\n\tonKeyDelete(e) {\r\n\t\tif (this.nullable) {\r\n\t\t\tthis.value = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\tonSelectionChange($event){\r\n\t\tif (this.selectionChange) {\r\n\t\t\tthis.selectionChange($event);\r\n\t\t}\r\n\t}\r\n\r\n\tngOnChanges(inputs) {\r\n\t\tif (inputs.placeholder) {\r\n\t\t\tif (this.placeholder === undefined) {\r\n\t\t\t\tthis.placeholder = this.label || '';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (inputs.options) {\r\n\t\t\tif (typeof this.options === 'string') {\r\n\t\t\t\tthrow new Error(`Invalid options - should be [] \"${this.options}\"`);\r\n\t\t\t}\r\n\r\n\t\t\tif (this.getLabel) {\r\n\t\t\t\tthis._options = (this.options || []).map(o => {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tlabel: this.getLabel.apply(o),\r\n\t\t\t\t\t\tvalue: o[this.dataKey]\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tthis._options = (this.options || []).map(o => {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tlabel: o[this.labelKey],\r\n\t\t\t\t\t\tvalue: o[this.dataKey]\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (inputs.label) {\r\n\t\t\tif (!this.label) {\r\n\t\t\t\tthis.label = 'X';\r\n\t\t\t\tthis.labelOpacity = 0;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetFocus() {\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.select.focus();\r\n\t\t});\r\n\t}\r\n}\r\n","import { Component, Input, Output, EventEmitter, forwardRef, ViewChild, ElementRef } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nimport { BaseComponent } from './base-component';\r\n\r\nlet identifier = 0;\r\n\r\n@Component({\r\n\tselector: 'pp-switch',\r\n\ttemplate: `\r\n
\r\n\t\r\n\t\t{{ label }}\r\n\t\r\n
`,\r\n\tstyleUrls: ['./switch.component.scss'],\r\n\tproviders: [\r\n\t\t{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SwitchComponent), multi: true }\r\n\t]\r\n})\r\nexport class SwitchComponent extends BaseComponent {\r\n\t@Input() label: string;\r\n\t@Output() onChange = new EventEmitter();\r\n\r\n\tpublic identifier = `switch-${identifier++}`;\r\n\r\n\t@ViewChild('inputElement') inputEl: ElementRef;\r\n\r\n\tonBlur() {\r\n\t\tthis.touch();\r\n\t}\r\n\r\n\thandleChange(state: boolean) {\r\n\t\tthis.onChange.emit(state);\r\n\t}\r\n\r\n\tsetFocus() {\r\n\t\tthis.inputEl.nativeElement.focus();\r\n\t\tthis.inputEl.nativeElement.select();\r\n\t}\r\n}\r\n","import { Component, OnChanges, Input, forwardRef, ViewChild, ElementRef, OnInit } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';\r\n\r\nimport { BaseComponent } from './base-component';\r\n\r\nlet identifier = 0;\r\n\r\n@Component({\r\n\tselector: 'pp-textarea',\r\n\ttemplate: `\r\n
\r\n\t
\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t
\r\n\t
{{ label }} is required
\r\n
`,\r\n\tstyleUrls: ['./text-area.component.scss'],\r\n\tproviders: [\r\n\t\t{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TextAreaComponent), multi: true },\r\n\t\t{ provide: NG_VALIDATORS, useExisting: forwardRef(() => TextAreaComponent), multi: true }\r\n\t]\r\n})\r\nexport class TextAreaComponent extends BaseComponent implements OnChanges, OnInit {\r\n\t@Input() label: string;\r\n\t@Input() maxLength = 512 * 1024; // 512K\r\n\t@Input() rows = 3;\r\n\t@Input() placeholder = '';\r\n\r\n\tpublic identifier = `text-area-${identifier++}`;\r\n\r\n\t@ViewChild('inputElement', { static: true }) inputEl: ElementRef;\r\n\r\n\tonBlur() {\r\n\t\tthis.touch();\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tif (!this.placeholder) {\r\n\t\t\tthis.placeholder = this.label;\r\n\t\t}\r\n\t}\r\n\r\n\tngOnChanges(inputs) {\r\n\t\tif (!inputs.placeholder) {\r\n\t\t\tthis.placeholder = this.label || '';\r\n\t\t}\r\n\t}\r\n\r\n\tsetFocus() {\r\n\t\tthis.inputEl.nativeElement.focus();\r\n\t\tthis.inputEl.nativeElement.select();\r\n\t}\r\n}\r\n","import { Component, forwardRef } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';\r\n\r\nimport { TextComponent } from './text.component';\r\n\r\n@Component({\r\n\tselector: 'pp-text-plain',\r\n\ttemplate: `\r\n
\r\n\t
\r\n\t\t\r\n\t\t
\r\n
`,\r\n\tstyleUrls: ['./text-plain.component.scss'],\r\n\tproviders: [\r\n\t\t{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TextPlainComponent), multi: true },\r\n\t\t{ provide: NG_VALIDATORS, useExisting: forwardRef(() => TextPlainComponent), multi: true }\r\n\t]\r\n})\r\nexport class TextPlainComponent extends TextComponent {\r\n}\r\n","import {\r\n\tComponent,\r\n\tOnInit,\r\n\tOnChanges,\r\n\tInput,\r\n\tOutput,\r\n\tforwardRef,\r\n\tViewChild,\r\n\tElementRef,\r\n\tRenderer2,\r\n\tEventEmitter,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';\r\nimport createNumberMask from 'text-mask-addons/dist/createNumberMask';\r\n\r\nimport { BaseComponent } from './base-component';\r\n\r\nlet identifier = 0;\r\n\r\n@Component({\r\n\tselector: 'pp-text',\r\n\ttemplate: `
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t{{ label }} is required\r\n\t\t
\r\n\t
`,\r\n\tstyleUrls: ['./text.component.scss'],\r\n\tproviders: [\r\n\t\t{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TextComponent), multi: true },\r\n\t\t{ provide: NG_VALIDATORS, useExisting: forwardRef(() => TextComponent), multi: true },\r\n\t],\r\n})\r\nexport class TextComponent extends BaseComponent implements OnInit, OnChanges {\r\n\ttextMask: any = false;\r\n\r\n\t@Input() label: string;\r\n\t@Input() type = 'text';\r\n\t@Input() maxLength = 512 * 1024; // 512K\r\n\t@Input() placeholder = '';\r\n\t@Input() numericOnly = false;\r\n\t@Input() decimalPlaces = 0;\r\n\t@Input() maxIntDigits = 10;\r\n\t@Input() allowNegative: boolean = false;\r\n\t@Input() tabIndex: number = undefined;\r\n\t/// for https://www.w3.org/TR/WCAG21/#input-purposes\r\n\t@Input() autocomplete: string = undefined;\r\n\t@Input() isDisabled: boolean;\r\n\t@Input() readOnly = false;\r\n\r\n\t@Output() blur = new EventEmitter();\r\n\t@Output() focus = new EventEmitter();\r\n\r\n\tidentifier = `text-${identifier++}`;\r\n\r\n\tminValue = '';\r\n\r\n\t@ViewChild('inputElement', { static: true }) inputEl: ElementRef;\r\n\r\n\tconstructor(private renderer: Renderer2) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tonBlur() {\r\n\t\tthis.touch();\r\n\t\tthis.blur.emit(this);\r\n\t}\r\n\r\n\tonFocus() {\r\n\t\tthis.focus.emit(this);\r\n\t}\r\n\r\n\tonKeyDown(event: KeyboardEvent) {\r\n\t\tif (this.numericOnly && !this.allowNegative) {\r\n\t\t\t// Prevent typing a -ve number\r\n\t\t\tif (event.key === '-') {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tonPaste(e) {\r\n\t\tif (this.numericOnly && !this.allowNegative) {\r\n\t\t\t// Prevent pasting a -ve value in.\r\n\t\t\tconst clipboardData = e.clipboardData || e.originalEvent.clipboardDataa;\r\n\t\t\tconst pastedData = clipboardData.getData('text');\r\n\r\n\t\t\tif (isNaN(pastedData)) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst num = Number(pastedData).valueOf();\r\n\t\t\tif (num < 0) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tif (this.tabIndex) {\r\n\t\t\tthis.renderer.setAttribute(this.inputEl.nativeElement, 'tabIndex', this.tabIndex + '');\r\n\t\t}\r\n\r\n\t\tif (!this.placeholder) {\r\n\t\t\tthis.placeholder = this.label;\r\n\t\t}\r\n\r\n\t\tif (this.numericOnly) {\r\n\t\t\tlet params: any = {\r\n\t\t\t\tincludeThousandsSeparator: false,\r\n\t\t\t\tprefix: '',\r\n\t\t\t\tintegerLimit: this.maxIntDigits,\r\n\t\t\t};\r\n\r\n\t\t\tif (this.decimalPlaces > 0) {\r\n\t\t\t\tparams.allowDecimal = true;\r\n\t\t\t\tparams.decimalLimit = this.decimalPlaces;\r\n\t\t\t}\r\n\r\n\t\t\tparams.allowNegative = this.allowNegative;\r\n\r\n\t\t\tif (!this.allowNegative) {\r\n\t\t\t\tthis.minValue = '0';\r\n\t\t\t}\r\n\r\n\t\t\tthis.textMask = createNumberMask(params);\r\n\t\t\tthis.type = 'number';\r\n\t\t}\r\n\t}\r\n\r\n\tngOnChanges(inputs) {\r\n\t\tif (!inputs.placeholder) {\r\n\t\t\tthis.placeholder = this.label || '';\r\n\t\t}\r\n\t}\r\n\r\n\tsetFocus() {\r\n\t\tthis.inputEl.nativeElement.focus();\r\n\t\tthis.inputEl.nativeElement.select();\r\n\t\tif (this.value && this.type === 'text') {\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.inputEl.nativeElement.setSelectionRange(0, (this.value + '').length + 1);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n","import {\r\n\tComponent,\r\n\tInput,\r\n\tOutput,\r\n\tElementRef,\r\n\tEventEmitter,\r\n\tAfterViewInit,\r\n\tOnDestroy,\r\n\tViewEncapsulation,\r\n} from '@angular/core';\r\nimport * as $ from 'jquery';\r\nimport 'fullcalendar';\r\nimport 'fullcalendar-scheduler';\r\n\r\nexport class EventContextEvent {\r\n\tmouseEvent: MouseEvent;\r\n\tappointmentId: number;\r\n}\r\n\r\nexport class DayContextEvent {\r\n\tmouseEvent: MouseEvent;\r\n\tdayIndex: number;\r\n\ttime: string;\r\n\tresource: object;\r\n}\r\n\r\n@Component({\r\n\tselector: 'pp-full-calendar-scheduler',\r\n\ttemplate: '',\r\n\tencapsulation: ViewEncapsulation.None,\r\n})\r\nexport class FullCalendarSchedulerComponent implements AfterViewInit, OnDestroy {\r\n\t@Input() options: any;\r\n\r\n\t@Output() initialized: EventEmitter = new EventEmitter();\r\n\t@Output() keydown: EventEmitter = new EventEmitter();\r\n\t@Output() keyup: EventEmitter = new EventEmitter();\r\n\t@Output() eventContext: EventEmitter = new EventEmitter();\r\n\t@Output() dayContext: EventEmitter = new EventEmitter();\r\n\r\n\tconstructor(private element: ElementRef) { }\r\n\r\n\tngAfterViewInit() {\r\n\t\tlet that = this;\r\n\t\tsetTimeout(() => {\r\n\t\t\t$('pp-full-calendar-scheduler').fullCalendar(this.options);\r\n\t\t\tthis.initialized.emit(true);\r\n\r\n\t\t\t$(document).on('keydown', (e) => {\r\n\t\t\t\tlet ke = e.originalEvent;\r\n\t\t\t\tthis.keydown.emit(ke);\r\n\t\t\t});\r\n\t\t\t$(document).on('keyup', (e) => {\r\n\t\t\t\tlet ke = e.originalEvent;\r\n\t\t\t\tthis.keyup.emit(ke);\r\n\t\t\t});\r\n\r\n\t\t\t$(document).on('contextmenu', (jqe) => {\r\n\t\t\t\tlet e = jqe.originalEvent;\r\n\t\t\t\tlet isEvent = false;\r\n\t\t\t\tlet isSlot = false;\r\n\t\t\t\tlet time;\r\n\t\t\t\tlet appointmentId;\r\n\t\t\t\tlet resourceObject;\r\n\t\t\t\tlet dayIndex;\r\n\t\t\t\tlet j = $(e.target).closest('.fc-event');\r\n\t\t\t\tif (j.length) {\r\n\t\t\t\t\tappointmentId = j.data('appointmentId');\r\n\t\t\t\t\tisEvent = true;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif ($(e.target).closest('.fc-axis').length) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst scrollTop = $('.fc-scroller').scrollTop();\r\n\t\t\t\t\tconst scrollerTop = $('.fc-scroller').offset().top;\r\n\r\n\t\t\t\t\tconst timeCells = $(e.target).closest('.fc-view-container').find('.fc-axis.fc-time');\r\n\t\t\t\t\tconst targetTop = e.clientY + scrollTop - scrollerTop;\r\n\t\t\t\t\tconst timeCell = timeCells\r\n\t\t\t\t\t\t.toArray()\r\n\t\t\t\t\t\t.reverse()\r\n\t\t\t\t\t\t.find((c) => (c).offsetTop < targetTop);\r\n\r\n\t\t\t\t\tj = $(timeCell).closest('tr');\r\n\t\t\t\t\tif (j.length) {\r\n\t\t\t\t\t\ttime = j.data('time');\r\n\t\t\t\t\t\tisSlot = !!time;\r\n\r\n\t\t\t\t\t\tif (!isSlot) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tlet t = $(e.target).closest('.fc-agendaDay-view');\r\n\t\t\t\t\t\tlet calculateDay = true;\r\n\t\t\t\t\t\tif (t.length) {\r\n\t\t\t\t\t\t\tdayIndex = 0;\r\n\t\t\t\t\t\t\tcalculateDay = false;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tt = $(e.target).closest('.fc-agendaWeek-view');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tlet resourceCells = t.find('th.fc-resource-cell');\r\n\t\t\t\t\t\tconst calLeft = t.offset().left;\r\n\t\t\t\t\t\tconst cellsLeft = resourceCells.offset().left;\r\n\t\t\t\t\t\tconst pageX = e.pageX;\r\n\t\t\t\t\t\tconst cellLeft = pageX - cellsLeft;\r\n\t\t\t\t\t\tconst cellWidth = (resourceCells[0]).clientWidth;\r\n\t\t\t\t\t\tconst resourceIndex = Math.floor(cellLeft / cellWidth);\r\n\r\n\t\t\t\t\t\tif (calculateDay) {\r\n\t\t\t\t\t\t\tdayIndex = Math.floor(cellLeft / (cellWidth / 7)) % 7;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tlet resources = this.fullCalendar('getResources');\r\n\t\t\t\t\t\tresourceObject = resources[resourceIndex];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (!isEvent && !isSlot) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif (isEvent) {\r\n\t\t\t\t\tthis.eventContext.emit({\r\n\t\t\t\t\t\tmouseEvent: e,\r\n\t\t\t\t\t\tappointmentId,\r\n\t\t\t\t\t});\r\n\t\t\t\t} else if (isSlot) {\r\n\t\t\t\t\tthis.dayContext.emit({\r\n\t\t\t\t\t\tmouseEvent: e,\r\n\t\t\t\t\t\tdayIndex,\r\n\t\t\t\t\t\ttime,\r\n\t\t\t\t\t\tresource: resourceObject,\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}, 100);\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\t$(document).off('keydown');\r\n\t\t$(document).off('keyup');\r\n\t\t$(document).off('contextmenu');\r\n\t}\r\n\r\n\tfullCalendar(...args: any[]) {\r\n\t\tif (!args) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet cal = $(this.element.nativeElement);\r\n\r\n\t\tlet debug = false;\r\n\r\n\t\tswitch (args.length) {\r\n\t\t\tcase 0:\r\n\t\t\t\treturn;\r\n\t\t\tcase 1:\r\n\t\t\t\tdebug && console.log('fullCalendar', args[0]);\r\n\t\t\t\treturn cal.fullCalendar(args[0]);\r\n\t\t\tcase 2:\r\n\t\t\t\tdebug && console.log('fullCalendar', args[0], args[1]);\r\n\t\t\t\treturn cal.fullCalendar(args[0], args[1]);\r\n\t\t\tcase 3:\r\n\t\t\t\tdebug && console.log('fullCalendar', args[0], args[1], args[2]);\r\n\t\t\t\treturn cal.fullCalendar(args[0], args[1], args[2]);\r\n\t\t\tcase 4:\r\n\t\t\t\tdebug && console.log('fullCalendar', args[0], args[1], args[2], args[3]);\r\n\t\t\t\treturn cal.fullCalendar(args[0], args[1], args[2], args[3]);\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n\tname: 'in'\r\n})\r\nexport class InPipe implements PipeTransform {\r\n\r\n\ttransform(value: string | number, args: any): boolean {\r\n\t\t// console.log(value in args, value, args);\r\n\t\treturn value in args;\r\n\t}\r\n\r\n}\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { UnmanagedCookieService } from 'ng2-cookies';\r\nimport { LangService } from '../../services/lang.service'\r\n\r\n@Component({\r\n selector: 'pp-lang-selector',\r\n templateUrl: './lang-selector.component.html',\r\n styleUrls: ['./lang-selector.component.scss']\r\n})\r\nexport class LangSelectorComponent {\r\n\tlanguage = {\r\n\t\t'en': 'English',\r\n\t\t'fr': 'Français',\r\n\t}\r\n\tlanguageSelection = {\r\n\t\t'en': 'fr',\r\n\t\t'fr': 'en',\r\n\t}\r\n\tget currentLanguage(): string { return this._lang.currentLang; }\r\n\r\n\tconstructor(\r\n\t\tprivate _lang: LangService\r\n\t){ }\r\n\r\n\tchangeLang(lang: string) {\r\n\t\tthis._lang.changeLang(lang);\r\n\t\twindow.location.reload();\r\n\t}\r\n}\r\n","\r\n\t{{ languageSelection[currentLanguage] }}\r\n\r\n","import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'pp-modal-dialog-footer',\r\n\ttemplateUrl: './modal-dialog-footer.component.html',\r\n\tstyleUrls: ['./modal-dialog-footer.component.scss']\r\n})\r\nexport class ModalDialogFooterComponent implements OnInit {\r\n\t@Input() okCaption: string = 'OK';\r\n\t@Input() cancelCaption: string = 'Cancel';\r\n\t@Input() disabled: boolean = false;\r\n\t@Input() asClose: boolean = false;\r\n\t@Input() cancelOnly: boolean = false;\r\n\t@Output() closed = new EventEmitter();\r\n\t@Output() cancelled = new EventEmitter();\r\n\r\n\tngOnInit() {\r\n\t\tif (this.asClose) {\r\n\t\t\tthis.cancelCaption = 'Close';\r\n\t\t}\r\n\t}\r\n\r\n\tclose() {\r\n\t\tthis.closed.emit();\r\n\t}\r\n\r\n\tcancel() {\r\n\t\tif (this.asClose) {\r\n\t\t\tthis.close();\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.cancelled.emit();\r\n\t}\r\n}\r\n","
\r\n\t\r\n\t\r\n\t\r\n
\r\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'pp-modal-dialog-header',\r\n\ttemplateUrl: './modal-dialog-header.component.html',\r\n\tstyleUrls: ['./modal-dialog-header.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ModalDialogHeaderComponent {\r\n\t@Input() title: string;\r\n}\r\n","
\r\n\t\t
{{ title }}
\r\n\t\t\r\n\t\t\r\n
\r\n","\r\nimport { map, filter } from 'rxjs/operators';\r\nimport { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { Router, ActivatedRoute, NavigationEnd } from '@angular/router';\r\n\r\nimport { UntypedFormGroup } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n\tselector: 'pp-modal-route-header',\r\n\ttemplateUrl: './modal-route-header.component.html',\r\n\tstyleUrls: ['./modal-route-header.component.scss']\r\n})\r\nexport class ModalRouteHeaderComponent {\r\n\tprivate sub: Subscription;\r\n\tactive: boolean;\r\n\r\n\t@Input() title: string;\r\n\t@Input() form: UntypedFormGroup;\r\n\t@Output() result = new EventEmitter();\r\n\r\n\tconstructor(\r\n\t\tprivate route: ActivatedRoute,\r\n\t\tprivate router: Router,\r\n\t) {\r\n\t\tthis.sub = this.router.events.pipe(\r\n\t\t\tfilter((event) => event instanceof NavigationEnd),\r\n\t\t\tmap(() => this.route),\r\n\t\t\tmap((r) => {\r\n\t\t\t\twhile (r.firstChild) {\r\n\t\t\t\t\tr = r.firstChild;\r\n\t\t\t\t}\r\n\t\t\t\treturn r;\r\n\t\t\t}))\r\n\t\t\t.subscribe((currentRoute) => {\r\n\t\t\t\tthis.active = this.route === currentRoute;\r\n\t\t\t});\r\n\t}\r\n\r\n\tapplyResult(result: boolean) {\r\n\t\tthis.result.emit(result);\r\n\t}\r\n}\r\n","
\r\n\t

{{ title }}

\r\n\t\r\n\t\r\n\t\r\n
\r\n","import { Component, OnInit, Input, ViewChild, AfterViewInit } from '@angular/core';\r\nimport { MatExpansionPanel } from '@angular/material/expansion';\r\nimport { UntypedFormGroup } from '@angular/forms';\r\n\r\nimport { UtilsService } from 'app/services';\r\n\r\n@Component({\r\n\tselector: 'pp-search-filter',\r\n\ttemplateUrl: './search-filter.component.html',\r\n\tstyleUrls: ['./search-filter.component.scss'],\r\n})\r\nexport class SearchFilterComponent implements OnInit, AfterViewInit {\r\n\tprivate wasExpanded: boolean;\r\n\tprivate expanded: boolean;\r\n\r\n\t// Template properties\r\n\tfilterDescription: string;\r\n\tshowingAll: boolean;\r\n\r\n\t@Input() form: UntypedFormGroup;\r\n\t@Input() hideOpenOnly = false;\r\n\t@Input() hideShowAll = false;\r\n\t@Input() openLabel = 'Open only';\r\n\t@Input() filterTextDatePrefix = '';\r\n\t@ViewChild('panel', { static: true }) expansionPanel: MatExpansionPanel;\r\n\r\n\tconstructor(private utils: UtilsService) { }\r\n\t// Workaround for angular component issue #13870\r\n\tdisableAnimation = true;\r\n\tngAfterViewInit(): void {\r\n\t\t// timeout required to avoid the dreaded 'ExpressionChangedAfterItHasBeenCheckedError'\r\n\t\tsetTimeout(() => (this.disableAnimation = false));\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.buildFilterDescription();\r\n\t}\r\n\r\n\tclearFilter() {\r\n\t\tthis.form.patchValue({\r\n\t\t\tdateFrom: null,\r\n\t\t\tdateTo: null,\r\n\t\t\topenOnly: false,\r\n\t\t\tshowAll: false,\r\n\t\t});\r\n\t\tthis.closeFilter();\r\n\t}\r\n\r\n\tshowAllChanged(ev) {\r\n\t\t// Retain the previous status of the panel when the Show all is changed.\r\n\t\tif (this.wasExpanded) {\r\n\t\t\tthis.openFilter();\r\n\t\t} else {\r\n\t\t\tthis.closeFilter();\r\n\t\t}\r\n\r\n\t\tconst showAllState = this.form.controls.showAll.value;\r\n\t\tif (showAllState) {\r\n\t\t\tthis.form.controls.dateFrom.disable();\r\n\t\t\tthis.form.controls.dateTo.disable();\r\n\t\t\tthis.form.controls.openOnly.disable();\r\n\r\n\t\t\tthis.form.patchValue({\r\n\t\t\t\topenOnly: false,\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.form.controls.dateFrom.enable();\r\n\t\t\tthis.form.controls.dateTo.enable();\r\n\t\t\tthis.form.controls.openOnly.enable();\r\n\t\t}\r\n\r\n\t\tthis.showingAll = showAllState;\r\n\t\tthis.buildFilterDescription();\r\n\t}\r\n\r\n\tpanelOpened() {\r\n\t\tthis.wasExpanded = this.expanded;\r\n\t\tthis.expanded = true;\r\n\t}\r\n\r\n\tpanelClosed() {\r\n\t\tthis.wasExpanded = this.expanded;\r\n\t\tthis.expanded = false;\r\n\t\tthis.buildFilterDescription();\r\n\t}\r\n\r\n\tcloseFilter() {\r\n\t\tthis.expansionPanel.close();\r\n\t}\r\n\r\n\topenFilter() {\r\n\t\tthis.expansionPanel.open();\r\n\t}\r\n\r\n\tprivate buildFilterDescription() {\r\n\t\tconst formVal = this.form.value;\r\n\t\tlet desc = '';\r\n\r\n\t\tconst descParts = [];\r\n\r\n\t\tif (!this.hideOpenOnly && formVal.openOnly) {\r\n\t\t\tdescParts.push(this.openLabel);\r\n\t\t}\r\n\r\n\t\tlet formattedDateFrom = '';\r\n\t\tlet formattedDateTo = '';\r\n\t\tlet datePrefix = this.filterTextDatePrefix;\r\n\t\tif (datePrefix) {\r\n\t\t\tdatePrefix += ' ';\r\n\t\t}\r\n\t\tif (formVal.dateFrom) {\r\n\t\t\tformattedDateFrom = this.utils.formatDate(formVal.dateFrom);\r\n\t\t}\r\n\r\n\t\tif (formVal.dateTo) {\r\n\t\t\tformattedDateTo = this.utils.formatDate(formVal.dateTo);\r\n\t\t}\r\n\r\n\t\tif (formattedDateFrom && formattedDateTo) {\r\n\t\t\tdescParts.push(`${datePrefix} Date between ${formattedDateFrom} and ${formattedDateTo}`);\r\n\t\t} else if (formattedDateFrom) {\r\n\t\t\tdescParts.push(`${datePrefix} Date from ${formattedDateFrom}`);\r\n\t\t} else if (formattedDateTo) {\r\n\t\t\tdescParts.push(`${datePrefix} Date to ${formattedDateTo}`);\r\n\t\t}\r\n\r\n\t\tif (descParts.length) {\r\n\t\t\tdesc += descParts.join(', ');\r\n\t\t}\r\n\r\n\t\tthis.filterDescription = desc;\r\n\t}\r\n}\r\n","
\r\n\t\r\n\t\t\r\n\t\t\tFilter\r\n\t\t\t\t\r\n\t\t\t{{ filterDescription }}\r\n\t\t\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n","import { Component, OnChanges, OnDestroy, Input, Output, EventEmitter, ViewContainerRef, } from '@angular/core';\r\nimport { GridOptions, ColDef, GridReadyEvent } from 'ag-grid-community/main';\r\nimport * as _ from 'lodash';\r\nimport { Subscription } from 'rxjs';\r\nimport { TdDialogService } from '@covalent/core/dialogs';\r\nimport { AgGridService, ChangeNotificationBase, ChangeType } from 'app/services';\r\n\r\nexport class IconClickedEvent {\r\n\tcolId: string;\r\n\trowData: any;\r\n}\r\n\r\n@Component({\r\n\tselector: 'pp-selection-grid',\r\n\ttemplateUrl: './selection-grid.component.html',\r\n\tstyleUrls: ['./selection-grid.component.scss']\r\n})\r\nexport class SelectionGridComponent implements OnChanges, OnDestroy {\r\n\tprivate changeSub: Subscription;\r\n\r\n\tprivate lastWidth: number;\r\n\tprivate lastHeight: number;\r\n\r\n\t@Input() columnDefs: ColDef[];\r\n\t@Input() rowData: any[];\r\n\t@Input() pinnedBottomRowData: any[];\r\n\t@Input() hasAdd: boolean = true;\r\n\t@Input() hasEdit: boolean = true;\r\n\t@Input() hasViewWithEdit: boolean = false;\r\n\t@Input() hasDelete: boolean = true;\r\n\t@Input() typeName: string;\r\n\t@Input() confirmDelete: boolean = false;\r\n\t@Input() rowClickIsEdit: boolean = false;\r\n\t@Input() readOnly: boolean = false;\r\n\t@Input() noAutoSize: boolean = false;\r\n\t@Input() canDelete: boolean = true;\r\n\t@Input() readOnlyAllowAdd: boolean = false;\r\n\t@Input() noHScroll: boolean = false;\r\n\r\n\t@Output() add = new EventEmitter();\r\n\t@Output() edit = new EventEmitter();\r\n\t@Output() view = new EventEmitter();\r\n\t@Output() delete = new EventEmitter();\r\n\t@Output() cellClicked = new EventEmitter();\r\n\t@Output() iconClicked = new EventEmitter();\r\n\t@Output() doubleClicked = new EventEmitter();\r\n\t@Output() gridReady = new EventEmitter();\r\n\r\n\tcolumns: ColDef[];\r\n\tgridOptions: GridOptions;\r\n\r\n\tconstructor(\r\n\t\tprivate agGrid: AgGridService,\r\n\t\tprivate dialog: TdDialogService,\r\n\t) { }\r\n\r\n\tngOnChanges(changes) {\r\n\t\tif (changes.readOnly || !this.gridOptions) {\r\n\t\t\tlet overrides: any = {};\r\n\t\t\tif (this.readOnly) {\r\n\t\t\t\toverrides.rowSelection = 'none';\r\n\t\t\t}\r\n\r\n\t\t\tthis.buildGridOptions(overrides);\r\n\t\t}\r\n\r\n\t\tif (changes.rowData || changes.pinnedBottomRowData) {\r\n\t\t\tthis.setData();\r\n\t\t}\r\n\r\n\t\tif (changes.columnDefs) {\r\n\t\t\tthis.buildColumnDefs();\r\n\t\t}\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.unsubscribe();\r\n\t}\r\n\r\n\tsubscribe(emitter: EventEmitter) {\r\n\t\tthis.changeSub = emitter.subscribe(this.changed.bind(this));\r\n\t}\r\n\r\n\tunsubscribe() {\r\n\t\tif (this.changeSub) {\r\n\t\t\tthis.changeSub.unsubscribe();\r\n\t\t\tthis.changeSub = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\tchanged(note: ChangeNotificationBase) {\r\n\t\tswitch (note.changeType) {\r\n\t\t\tcase ChangeType.Update:\r\n\t\t\t\tconst index = _.findIndex(this.rowData, data => data.id === note.instance.id);\r\n\t\t\t\tif (index !== -1) {\r\n\t\t\t\t\tthis.rowData.splice(index, 1, note.instance);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!this.rowData) {\r\n\t\t\t\t\t\tthis.rowData = [];\r\n\t\t\t\t\t\tthis.setData();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.rowData.push(note.instance);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase ChangeType.Delete:\r\n\t\t\t\t_.remove(this.rowData, data => data.id === note.id);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\tthis.refresh();\r\n\t}\r\n\r\n\thandleAdd(e) {\r\n\t\tthis.add.emit();\r\n\t}\r\n\r\n\trefresh() {\r\n\t\tthis.gridOptions.api.setRowData(this.rowData);\r\n\t\tthis.gridOptions.api.refreshCells();\r\n\t}\r\n\r\n\texportDataAsCsv(params = {}) {\r\n\t\tthis.gridOptions.api.exportDataAsCsv(params);\r\n\t}\r\n\r\n\tprivate setData() {\r\n\t\tif (!this.gridOptions.api) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.gridOptions.api.setRowData(this.rowData);\r\n\t\tthis.gridOptions.api.setPinnedBottomRowData(this.pinnedBottomRowData);\r\n\t}\r\n\r\n\tprivate onGridSizeChanged(e) {\r\n\t\tif (!this.gridOptions.api || this.noAutoSize) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Check whether the size has actually changed - don't size columns if the size hasn't changed.\r\n\t\tconst w: number = e.clientWidth,\r\n\t\t\th: number = e.clientHeight;\r\n\r\n\t\tif (w === this.lastWidth && h === this.lastHeight) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.lastWidth = w;\r\n\t\tthis.lastHeight = h;\r\n\r\n\t\tthis.gridOptions.columnApi.sizeColumnsToFit(e.clientWidth);\r\n\t}\r\n\r\n\tprivate onGridReady(e: GridReadyEvent) {\r\n\t\tthis.setData();\r\n\t\tthis.gridReady.emit(e);\r\n\t}\r\n\r\n\tprivate onDelete(data) {\r\n\t\tif (!this.confirmDelete) {\r\n\t\t\tthis.delete.emit(data);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.dialog\r\n\t\t\t.openConfirm({\r\n\t\t\t\tmessage: `Are you sure you want to delete this ${this.typeName}?`,\r\n\t\t\t\ttitle: 'Confirm delete',\r\n\t\t\t\tacceptButton: 'Delete',\r\n\t\t\t})\r\n\t\t\t.afterClosed()\r\n\t\t\t.subscribe((accept: boolean) => {\r\n\t\t\t\tif (!accept) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tthis.delete.emit(data);\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate onCellClicked(e) {\r\n\t\tconst data = e.data;\r\n\r\n\t\tswitch (e.colDef.colId) {\r\n\t\t\tcase 'edit':\r\n\t\t\t\tthis.edit.emit(data);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'delete':\r\n\t\t\t\tthis.onDelete(data);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'cellClicked':\r\n\t\t\t\tthis.cellClicked.emit(e);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'pageview':\r\n\t\t\t\tthis.view.emit(data);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tif (this.rowClickIsEdit) {\r\n\t\t\t\t\tthis.edit.emit(data);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.iconClicked.emit({\r\n\t\t\t\t\tcolId: e.colDef.colId,\r\n\t\t\t\t\trowData: data\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate onRowDoubleClicked(e) {\r\n\t\tthis.doubleClicked.emit(e.data);\r\n\t}\r\n\r\n\tprivate buildGridOptions(overrides: any) {\r\n\t\tthis.gridOptions = this.agGrid.buildGridOptions(overrides);\r\n\r\n\t\tthis.gridOptions.onGridReady = this.onGridReady.bind(this);\r\n\t\tthis.gridOptions.onGridSizeChanged = this.onGridSizeChanged.bind(this);\r\n\t\tthis.gridOptions.onCellClicked = this.onCellClicked.bind(this);\r\n\t\tthis.gridOptions.onRowDoubleClicked = this.onRowDoubleClicked.bind(this);\r\n\t}\r\n\r\n\tprivate buildColumnDefs() {\r\n\t\tconst colDefs = _.cloneDeep(this.columnDefs);\r\n\r\n\t\tif (this.hasDelete && !this.readOnly && this.canDelete) {\r\n\t\t\tconst deleteCol = this.agGrid.makeIconColumn('delete', this, 'Delete');\r\n\t\t\tcolDefs.unshift(deleteCol);\r\n\t\t}\r\n\t\tif (this.hasEdit && !this.rowClickIsEdit && !this.readOnly) {\r\n\t\t\tconst editCol = this.agGrid.makeIconColumn('edit', this, 'Edit');\r\n\t\t\tcolDefs.unshift(editCol);\r\n\t\t}\r\n\t\tif (this.hasEdit && !this.rowClickIsEdit && (this.readOnly || this.hasViewWithEdit)) {\r\n\t\t\tconst viewCol = this.agGrid.makeIconColumn('pageview', this, 'View');\r\n\t\t\tcolDefs.unshift(viewCol);\r\n\t\t}\r\n\r\n\t\tthis.columns = colDefs;\r\n\t}\r\n}\r\n","\r\n\r\n\r\n\r\n\tadd\r\n\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { ExtendedDetailsHelper } from 'app/common-editing/extended-details/extended-details';\r\n\r\n@Pipe({\r\n\tname: 'sessionAlertFlag'\r\n})\r\nexport class SessionAlertFlagPipe implements PipeTransform {\r\n\r\n\tconstructor(private sanitized: DomSanitizer) { }\r\n\r\n\ttransform(value?: number): SafeHtml {\r\n\t\tif (value === null) value = 0;\r\n\t\tlet redFlagColour = ExtendedDetailsHelper.redFlagAlternativeAppearenceColours[value],\r\n\t\t\thtml = [\r\n\t\t\t\t` `,\r\n\t\t\t\t``\r\n\t\t\t];\r\n\r\n\t\treturn this.sanitized.bypassSecurityTrustHtml(html.join(' '));\r\n\t}\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { AppointmentRendererService } from 'app/appointments/appointment-renderer.service';\r\nimport { AppointmentDto } from 'app/services';\r\n\r\n@Pipe({\r\n\tname: 'sessionNumber'\r\n})\r\nexport class SessionNumberPipe implements PipeTransform {\r\n\r\n\tconstructor(private renderer: AppointmentRendererService) { }\r\n\r\n\ttransform(value: AppointmentDto): string {\r\n\t\treturn this.renderer.getSessionNumberDisplay(value);\r\n\t}\r\n\r\n}\r\n","import { NgModule, LOCALE_ID } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { UnmanagedCookieService } from 'ng2-cookies';\r\nimport { VirtualScrollModule } from 'angular2-virtual-scroll';\r\n\r\n// Covalent modules\r\nimport { CovalentCommonModule } from '@covalent/core/common';\r\nimport { CovalentDialogsModule } from '@covalent/core/dialogs';\r\nimport { CovalentFileModule } from '@covalent/core/file';\r\nimport { CovalentLayoutModule } from '@covalent/core/layout';\r\nimport { CovalentLoadingModule } from '@covalent/core/loading';\r\nimport { CovalentMessageModule } from '@covalent/core/message';\r\n\r\n// Angular material modules\r\nimport { MAT_MOMENT_DATE_FORMATS, MAT_MOMENT_DATE_ADAPTER_OPTIONS, MomentDateAdapter } from '@angular/material-moment-adapter'\r\nimport { MatNativeDateModule, MAT_DATE_LOCALE, MAT_DATE_FORMATS, DateAdapter } from '@angular/material/core';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatButtonToggleModule, } from '@angular/material/button-toggle';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatSortModule } from '@angular/material/sort';\r\n\r\n// Misc 3rd party modules\r\nimport { AgGridModule } from 'ag-grid-angular';\r\nimport { TextMaskModule } from 'angular2-text-mask';\r\nimport { QuillModule } from 'ngx-quill';\r\n\r\n// Local directives\r\nimport { BlockNonNumberDirective } from './block-non-number.directive';\r\nimport { EqualValidatorDirective } from './equal-validator/equal-validator.directive';\r\nimport { FocusDirective } from './focus/focus.directive';\r\nimport { MatOptionDirective } from './accessibility/mat-option.directive';\r\nimport { MatSortDirective } from './accessibility/mat-sort.directive';\r\nimport { MatSortHeaderDirective } from './accessibility/mat-sort-header.directive';\r\n\r\n// Local reusable components\r\nimport { ApplyCancelComponent } from './apply-cancel/apply-cancel.component';\r\nimport { ButtonComponent } from './forms/button.component';\r\nimport { ButtonToggleComponent } from './forms/button-toggle.component';\r\nimport { CheckboxComponent } from './forms/checkbox.component';\r\nimport { CaseSearchItemComponent } from './case-search-item/case-search-item.component';\r\nimport { DateComponent } from './forms/date-component';\r\nimport { DisplayComponent } from './forms/display.component';\r\nimport { HtmlEditorComponent } from './forms/html-editor.component';\r\nimport { IconButtonComponent } from './forms/icon-button.component';\r\nimport { RadioGroupComponent } from './forms/radio-group.component';\r\nimport { SelectComponent } from './forms/select.component';\r\nimport { SelectionGridComponent } from './selection-grid/selection-grid.component';\r\nimport { SwitchComponent } from './forms/switch.component';\r\nimport { TextAreaComponent } from './forms/text-area.component';\r\nimport { TextComponent } from './forms/text.component';\r\nimport { TextPlainComponent } from './forms/text-plain.component';\r\n\r\nimport { FullCalendarSchedulerComponent } from './full-calendar-scheduler/full-calendar-scheduler.component';\r\nimport { SearchFilterComponent } from './search-filter/search-filter.component';\r\nimport { AddressEditComponent } from '../profile/shared-forms/address-edit.component';\r\nimport { SearchPostcodeComponent } from '../profile/shared-forms/search-postcode/search-postcode.component';\r\n\r\n// Local pipes\r\nimport { DurationPipe } from './duration.pipe';\r\nimport { ZeroToTextPipePipe } from './zero-to-text-pipe.pipe';\r\nimport { FileSizePipe } from './file-size.pipe';\r\nimport { BreakifyPipe } from './breakify.pipe';\r\nimport { AppointmentPhonePipe } from './appointment-phone.pipe';\r\nimport { SessionNumberPipe } from './session-number.pipe';\r\nimport { SessionAlertFlagPipe } from './session-alert-flag.pipe';\r\nimport { InPipe } from './in.pipe';\r\n\r\n// Local misc stuff\r\nimport { ModalRouteHeaderComponent } from './modal-route-header/modal-route-header.component';\r\nimport { ModalDialogHeaderComponent } from './modal-dialog-header/modal-dialog-header.component';\r\nimport { ModalDialogFooterComponent } from './modal-dialog-footer/modal-dialog-footer.component';\r\nimport { TableComponent } from './table/table.component';\r\nimport { LangService } from 'app/services/lang.service';\r\nimport { LangSelectorComponent } from './lang-selector/lang-selector.component';\r\n\r\n\r\n\r\n// Define constants to bundle up ecah of the types of import.\r\nconst FLEX_LAYOUT_MODULES: any[] = [FlexLayoutModule];\r\n\r\nconst ANGULAR_MODULES: any[] = [FormsModule, ReactiveFormsModule];\r\n\r\nconst MATERIAL_MODULES: any[] = [\r\n\tMatAutocompleteModule,\r\n\tMatButtonModule,\r\n\tMatButtonToggleModule,\r\n\tMatCardModule,\r\n\tMatCheckboxModule,\r\n\tMatChipsModule,\r\n\tMatDatepickerModule,\r\n\tMatDialogModule,\r\n\tMatExpansionModule,\r\n\tMatIconModule,\r\n\tMatInputModule,\r\n\tMatListModule,\r\n\tMatMenuModule,\r\n\tMatNativeDateModule,\r\n\tMatProgressSpinnerModule,\r\n\tMatProgressBarModule,\r\n\tMatRadioModule,\r\n\tMatSelectModule,\r\n\tMatSidenavModule,\r\n\tMatSlideToggleModule,\r\n\tMatSnackBarModule,\r\n\tMatTableModule,\r\n\tMatTabsModule,\r\n\tMatToolbarModule,\r\n\tMatTooltipModule,\r\n\tMatSortModule,\r\n];\r\n\r\nconst COVALENT_MODULES: any[] = [\r\n\tCovalentCommonModule,\r\n\tCovalentDialogsModule,\r\n\tCovalentFileModule,\r\n\tCovalentLayoutModule,\r\n\tCovalentLoadingModule,\r\n\tCovalentMessageModule,\r\n];\r\n\r\nconst DIRECTIVES: any[] = [BlockNonNumberDirective, EqualValidatorDirective, FocusDirective, MatOptionDirective, MatSortDirective, MatSortHeaderDirective];\r\n\r\nconst PIPES: any[] = [\r\n\tDurationPipe,\r\n\tZeroToTextPipePipe,\r\n\tFileSizePipe,\r\n\tBreakifyPipe,\r\n\tAppointmentPhonePipe,\r\n\tSessionNumberPipe,\r\n\tSessionAlertFlagPipe,\r\n\tInPipe,\r\n];\r\n\r\nconst CONTROLS: any[] = [\r\n\tApplyCancelComponent,\r\n\tButtonComponent,\r\n\tCheckboxComponent,\r\n\tDateComponent,\r\n\tDisplayComponent,\r\n\tHtmlEditorComponent,\r\n\tIconButtonComponent,\r\n\tRadioGroupComponent,\r\n\tSelectComponent,\r\n\tSelectionGridComponent,\r\n\tSwitchComponent,\r\n\tTextComponent,\r\n\tTextAreaComponent,\r\n\tTextPlainComponent,\r\n\tButtonToggleComponent,\r\n\r\n\tFullCalendarSchedulerComponent,\r\n\tModalRouteHeaderComponent,\r\n\tSearchFilterComponent,\r\n\tModalDialogHeaderComponent,\r\n\tModalDialogFooterComponent,\r\n\tAddressEditComponent,\r\n\tSearchPostcodeComponent,\r\n\r\n\tCaseSearchItemComponent,\r\n\tTableComponent,\r\n\tLangSelectorComponent,\r\n];\r\n\r\n@NgModule({\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tANGULAR_MODULES,\r\n\t\tMATERIAL_MODULES,\r\n\t\tCOVALENT_MODULES,\r\n\t\tFLEX_LAYOUT_MODULES,\r\n\r\n\t\tAgGridModule,\r\n\t\tTextMaskModule,\r\n\t\tQuillModule,\r\n\t\tVirtualScrollModule,\r\n\t],\r\n\tdeclarations: [DIRECTIVES, CONTROLS, PIPES],\r\n\texports: [\r\n\t\tANGULAR_MODULES,\r\n\t\tMATERIAL_MODULES,\r\n\t\tCOVALENT_MODULES,\r\n\t\tFLEX_LAYOUT_MODULES,\r\n\r\n\t\tAgGridModule,\r\n\t\tTextMaskModule,\r\n\t\tQuillModule,\r\n\t\tVirtualScrollModule,\r\n\r\n\t\tDIRECTIVES,\r\n\t\tPIPES,\r\n\t\tCONTROLS,\r\n\t],\r\n\tproviders: [\r\n\t\tPIPES,\r\n\t\tUnmanagedCookieService,\r\n\t\tLangService,\r\n\t\t{\r\n\t\t\tprovide: DateAdapter,\r\n\t\t\tuseClass: MomentDateAdapter,\r\n\t\t\tdeps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS]\r\n\t\t},\r\n\t\t{\r\n\t\t\tprovide: LOCALE_ID,\r\n\t\t\tdeps: [UnmanagedCookieService],\r\n\t\t\tuseFactory: (_cookie: UnmanagedCookieService) => _cookie.check('lang') ? `${_cookie.get('lang')}-CA` : 'en-CA',\r\n\t\t},\r\n\t\t{\r\n\t\t\tprovide: MAT_DATE_FORMATS,\r\n\t\t\tuseValue: MAT_MOMENT_DATE_FORMATS,\r\n\t\t},\r\n\t\t{\r\n\t\t\tprovide: MAT_DATE_LOCALE,\r\n\t\t\tdeps: [UnmanagedCookieService],\r\n\t\t\tuseFactory: (_cookie: UnmanagedCookieService) => _cookie.check('lang') ? `${_cookie.get('lang')}-CA` : 'en-CA',\r\n\t\t}\r\n\t],\r\n})\r\nexport class SharedModule { }\r\n","import { DataSource } from '@angular/cdk/collections';\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tAfterContentInit,\r\n\tContentChildren,\r\n\tContentChild,\r\n\tQueryList,\r\n\tViewChild,\r\n} from '@angular/core';\r\nimport {\r\n\tMatColumnDef,\r\n\tMatFooterRowDef,\r\n\tMatHeaderRowDef,\r\n\tMatNoDataRow,\r\n\tMatRowDef,\r\n\tMatTable,\r\n\tMatTableDataSource,\r\n} from '@angular/material/table';\r\n\r\n@Component({\r\n\tselector: 'pp-table',\r\n\ttemplateUrl: './table.component.html',\r\n\tstyleUrls: ['./table.component.scss'],\r\n\thost: {\r\n\t\tclass: 'mat-elevation-z6',\r\n\t}\r\n})\r\nexport class TableComponent implements AfterContentInit {\r\n\t@ContentChildren(MatHeaderRowDef) headerRowDefs: QueryList;\r\n\t@ContentChildren(MatFooterRowDef) footerRowDef: QueryList;\r\n\t@ContentChildren(MatRowDef) rowDefs: QueryList>;\r\n\t@ContentChildren(MatColumnDef) columnDefs: QueryList;\r\n\t@ContentChild(MatNoDataRow) noDataRow: MatNoDataRow;\r\n\r\n\t@ViewChild(MatTable, { static: true }) table!: MatTable;\r\n\r\n\t@Input() columns: string[];\r\n\r\n\t@Input() dataSource: MatTableDataSource | DataSource | any[];\r\n\r\n\tngAfterContentInit() {\r\n\t\tthis.columnDefs.forEach(columnDef => this.table.addColumnDef(columnDef));\r\n\t\tthis.rowDefs.forEach(rowDef => this.table.addRowDef(rowDef));\r\n\t\tthis.headerRowDefs.forEach(headerRowDef => this.table.addHeaderRowDef(headerRowDef));\r\n\t\tthis.footerRowDef.forEach(footerRowDef => this.table.addFooterRowDef(footerRowDef));\r\n\t\tthis.table.setNoDataRow(this.noDataRow);\r\n\t}\r\n}\r\n","\r\n\t\r\n
\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n\tname: 'zeroToText'\r\n})\r\nexport class ZeroToTextPipePipe implements PipeTransform {\r\n\ttransform(value: number, args?: any): string {\r\n\t\tconst zeroText: string = (args as string) || 'No';\r\n\t\tif (!value) {\r\n\t\t\treturn zeroText;\r\n\t\t}\r\n\r\n\t\treturn '' + value;\r\n\t}\r\n}\r\n","import { Inject, Injectable, InjectionToken, isDevMode } from '@angular/core';\r\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { timeout, catchError } from 'rxjs/operators';\r\n\r\nexport const DEFAULT_TIMEOUT = new InjectionToken('defaultTimeout');\r\n\r\n@Injectable()\r\nexport class TimeoutInterceptor implements HttpInterceptor {\r\n\tconstructor(@Inject(DEFAULT_TIMEOUT) protected defaultTimeout: number) {}\r\n\r\n\tintercept(req: HttpRequest, next: HttpHandler): Observable> {\r\n\t\tif (isDevMode()) {\r\n\t\t\t// 5 minute timeout in development - to allow for debugging.\r\n\t\t\tthis.defaultTimeout = 5 * 60 * 1000;\r\n\t\t}\r\n\r\n\t\tconst timeoutValue = req.headers.get('timeout') || this.defaultTimeout;\r\n\t\tconst timeoutValueNumeric = Number(timeoutValue);\r\n\r\n\t\treturn next.handle(req).pipe(\r\n\t\t\ttimeout(timeoutValueNumeric),\r\n\t\t\tcatchError((err) => {\r\n\t\t\t\treturn throwError(err);\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n}\r\n","import * as JsonPackage from '../../package.json';\r\n// The file contents for the current environment will overwrite these during build.\r\n// The build system defaults to the dev environment which uses `environment.ts`, but if you do\r\n// `ng build --env=prod` then `environment.prod.ts` will be used instead.\r\n// The list of which env maps to which file can be found in `.angular-cli.json`.\r\n\r\nconsole.log(JsonPackage);\r\nexport const environment = {\r\n\tproduction: false,\r\n\thmr: true,\r\n\tPACKAGE: 'default' in JsonPackage ? (JsonPackage).default : JsonPackage,\r\n};\r\n","import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\nimport { enableProdMode } from '@angular/core';\r\nimport { environment } from './environments/environment';\r\nimport { AppModule } from 'app/app.module';\r\nimport { registerLicense } from '@syncfusion/ej2-base';\r\n\r\nregisterLicense('ORg4AjUWIQA/Gnt2VVhkQlFac15JXGFWfVJpTGpQdk5xdV9DaVZUTWY/P1ZhSXxQdkZjW35ecHBUQmRUWEQ=');\r\n\r\nif (environment.production) {\r\n\tenableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule);","var map = {\n\t\"./af\": 58685,\n\t\"./af.js\": 58685,\n\t\"./ar\": 254,\n\t\"./ar-dz\": 4312,\n\t\"./ar-dz.js\": 4312,\n\t\"./ar-kw\": 32614,\n\t\"./ar-kw.js\": 32614,\n\t\"./ar-ly\": 18630,\n\t\"./ar-ly.js\": 18630,\n\t\"./ar-ma\": 28674,\n\t\"./ar-ma.js\": 28674,\n\t\"./ar-sa\": 96963,\n\t\"./ar-sa.js\": 96963,\n\t\"./ar-tn\": 24730,\n\t\"./ar-tn.js\": 24730,\n\t\"./ar.js\": 254,\n\t\"./az\": 53052,\n\t\"./az.js\": 53052,\n\t\"./be\": 60150,\n\t\"./be.js\": 60150,\n\t\"./bg\": 63069,\n\t\"./bg.js\": 63069,\n\t\"./bm\": 13466,\n\t\"./bm.js\": 13466,\n\t\"./bn\": 18516,\n\t\"./bn.js\": 18516,\n\t\"./bo\": 26273,\n\t\"./bo.js\": 26273,\n\t\"./br\": 9588,\n\t\"./br.js\": 9588,\n\t\"./bs\": 19815,\n\t\"./bs.js\": 19815,\n\t\"./ca\": 83331,\n\t\"./ca.js\": 83331,\n\t\"./cs\": 21320,\n\t\"./cs.js\": 21320,\n\t\"./cv\": 72219,\n\t\"./cv.js\": 72219,\n\t\"./cy\": 68266,\n\t\"./cy.js\": 68266,\n\t\"./da\": 66427,\n\t\"./da.js\": 66427,\n\t\"./de\": 67435,\n\t\"./de-at\": 52871,\n\t\"./de-at.js\": 52871,\n\t\"./de-ch\": 12994,\n\t\"./de-ch.js\": 12994,\n\t\"./de.js\": 67435,\n\t\"./dv\": 82357,\n\t\"./dv.js\": 82357,\n\t\"./el\": 95649,\n\t\"./el.js\": 95649,\n\t\"./en-au\": 59961,\n\t\"./en-au.js\": 59961,\n\t\"./en-ca\": 19878,\n\t\"./en-ca.js\": 19878,\n\t\"./en-gb\": 3924,\n\t\"./en-gb.js\": 3924,\n\t\"./en-ie\": 70864,\n\t\"./en-ie.js\": 70864,\n\t\"./en-il\": 91579,\n\t\"./en-il.js\": 91579,\n\t\"./en-nz\": 16181,\n\t\"./en-nz.js\": 16181,\n\t\"./eo\": 85291,\n\t\"./eo.js\": 85291,\n\t\"./es\": 54529,\n\t\"./es-do\": 53764,\n\t\"./es-do.js\": 53764,\n\t\"./es-us\": 63425,\n\t\"./es-us.js\": 63425,\n\t\"./es.js\": 54529,\n\t\"./et\": 35203,\n\t\"./et.js\": 35203,\n\t\"./eu\": 70678,\n\t\"./eu.js\": 70678,\n\t\"./fa\": 83483,\n\t\"./fa.js\": 83483,\n\t\"./fi\": 96262,\n\t\"./fi.js\": 96262,\n\t\"./fo\": 34555,\n\t\"./fo.js\": 34555,\n\t\"./fr\": 63131,\n\t\"./fr-ca\": 88239,\n\t\"./fr-ca.js\": 88239,\n\t\"./fr-ch\": 21702,\n\t\"./fr-ch.js\": 21702,\n\t\"./fr.js\": 63131,\n\t\"./fy\": 267,\n\t\"./fy.js\": 267,\n\t\"./gd\": 71753,\n\t\"./gd.js\": 71753,\n\t\"./gl\": 4074,\n\t\"./gl.js\": 4074,\n\t\"./gom-latn\": 5969,\n\t\"./gom-latn.js\": 5969,\n\t\"./gu\": 82809,\n\t\"./gu.js\": 82809,\n\t\"./he\": 45402,\n\t\"./he.js\": 45402,\n\t\"./hi\": 315,\n\t\"./hi.js\": 315,\n\t\"./hr\": 10410,\n\t\"./hr.js\": 10410,\n\t\"./hu\": 38288,\n\t\"./hu.js\": 38288,\n\t\"./hy-am\": 67928,\n\t\"./hy-am.js\": 67928,\n\t\"./id\": 71334,\n\t\"./id.js\": 71334,\n\t\"./is\": 86959,\n\t\"./is.js\": 86959,\n\t\"./it\": 34864,\n\t\"./it.js\": 34864,\n\t\"./ja\": 36141,\n\t\"./ja.js\": 36141,\n\t\"./jv\": 29187,\n\t\"./jv.js\": 29187,\n\t\"./ka\": 42136,\n\t\"./ka.js\": 42136,\n\t\"./kk\": 94332,\n\t\"./kk.js\": 94332,\n\t\"./km\": 18607,\n\t\"./km.js\": 18607,\n\t\"./kn\": 84305,\n\t\"./kn.js\": 84305,\n\t\"./ko\": 70234,\n\t\"./ko.js\": 70234,\n\t\"./ky\": 75061,\n\t\"./ky.js\": 75061,\n\t\"./lb\": 32786,\n\t\"./lb.js\": 32786,\n\t\"./lo\": 66183,\n\t\"./lo.js\": 66183,\n\t\"./lt\": 50029,\n\t\"./lt.js\": 50029,\n\t\"./lv\": 24169,\n\t\"./lv.js\": 24169,\n\t\"./me\": 68577,\n\t\"./me.js\": 68577,\n\t\"./mi\": 68177,\n\t\"./mi.js\": 68177,\n\t\"./mk\": 50337,\n\t\"./mk.js\": 50337,\n\t\"./ml\": 65260,\n\t\"./ml.js\": 65260,\n\t\"./mn\": 52325,\n\t\"./mn.js\": 52325,\n\t\"./mr\": 14695,\n\t\"./mr.js\": 14695,\n\t\"./ms\": 75334,\n\t\"./ms-my\": 37151,\n\t\"./ms-my.js\": 37151,\n\t\"./ms.js\": 75334,\n\t\"./mt\": 63570,\n\t\"./mt.js\": 63570,\n\t\"./my\": 97963,\n\t\"./my.js\": 97963,\n\t\"./nb\": 88028,\n\t\"./nb.js\": 88028,\n\t\"./ne\": 86638,\n\t\"./ne.js\": 86638,\n\t\"./nl\": 50302,\n\t\"./nl-be\": 66782,\n\t\"./nl-be.js\": 66782,\n\t\"./nl.js\": 50302,\n\t\"./nn\": 33501,\n\t\"./nn.js\": 33501,\n\t\"./pa-in\": 50869,\n\t\"./pa-in.js\": 50869,\n\t\"./pl\": 65302,\n\t\"./pl.js\": 65302,\n\t\"./pt\": 49687,\n\t\"./pt-br\": 74884,\n\t\"./pt-br.js\": 74884,\n\t\"./pt.js\": 49687,\n\t\"./ro\": 79107,\n\t\"./ro.js\": 79107,\n\t\"./ru\": 33627,\n\t\"./ru.js\": 33627,\n\t\"./sd\": 30355,\n\t\"./sd.js\": 30355,\n\t\"./se\": 83427,\n\t\"./se.js\": 83427,\n\t\"./si\": 11848,\n\t\"./si.js\": 11848,\n\t\"./sk\": 54590,\n\t\"./sk.js\": 54590,\n\t\"./sl\": 20184,\n\t\"./sl.js\": 20184,\n\t\"./sq\": 56361,\n\t\"./sq.js\": 56361,\n\t\"./sr\": 78965,\n\t\"./sr-cyrl\": 81287,\n\t\"./sr-cyrl.js\": 81287,\n\t\"./sr.js\": 78965,\n\t\"./ss\": 25456,\n\t\"./ss.js\": 25456,\n\t\"./sv\": 70451,\n\t\"./sv.js\": 70451,\n\t\"./sw\": 77558,\n\t\"./sw.js\": 77558,\n\t\"./ta\": 51356,\n\t\"./ta.js\": 51356,\n\t\"./te\": 73693,\n\t\"./te.js\": 73693,\n\t\"./tet\": 21243,\n\t\"./tet.js\": 21243,\n\t\"./tg\": 42500,\n\t\"./tg.js\": 42500,\n\t\"./th\": 55768,\n\t\"./th.js\": 55768,\n\t\"./tl-ph\": 35780,\n\t\"./tl-ph.js\": 35780,\n\t\"./tlh\": 29590,\n\t\"./tlh.js\": 29590,\n\t\"./tr\": 33807,\n\t\"./tr.js\": 33807,\n\t\"./tzl\": 93857,\n\t\"./tzl.js\": 93857,\n\t\"./tzm\": 60654,\n\t\"./tzm-latn\": 8806,\n\t\"./tzm-latn.js\": 8806,\n\t\"./tzm.js\": 60654,\n\t\"./ug-cn\": 30845,\n\t\"./ug-cn.js\": 30845,\n\t\"./uk\": 19232,\n\t\"./uk.js\": 19232,\n\t\"./ur\": 47052,\n\t\"./ur.js\": 47052,\n\t\"./uz\": 77967,\n\t\"./uz-latn\": 32233,\n\t\"./uz-latn.js\": 32233,\n\t\"./uz.js\": 77967,\n\t\"./vi\": 98615,\n\t\"./vi.js\": 98615,\n\t\"./x-pseudo\": 12320,\n\t\"./x-pseudo.js\": 12320,\n\t\"./yo\": 31313,\n\t\"./yo.js\": 31313,\n\t\"./zh-cn\": 64490,\n\t\"./zh-cn.js\": 64490,\n\t\"./zh-hk\": 55910,\n\t\"./zh-hk.js\": 55910,\n\t\"./zh-tw\": 44223,\n\t\"./zh-tw.js\": 44223\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;"],"names":["BehaviorSubject","EventEmitter","map","_","i0","ctx_r0","newId","ContainerPickAndAddTwoNumComponent","constructor","valueUpdated","changed","emit","statisticChanged","stat","statisticDeleted","index","container","statistics","indexOf","splice","statistics$","next","ngOnInit","type","statisticalGroup","statisticalTypes","allChoices","statisticalChoices","availableChoices$","pipe","stats","s","statisticalChoiceId","choiceIDs","filter","c","isEditBox","includes","id","choices","sortBy","description","addChoice","choiceId","newStat","statisticHeaderId","header","statisticalTypeId","int","intExtra1","push","selectors","inputs","outputs","decls","vars","consts","template","Validators","startWith","MAT_DIALOG_DATA","AddChoiceModalComponent","dialogRef","data","fb","modal","buildForm","filteredChoices","form","controls","choice","valueChanges","undefined","v","slice","isOpen","afterClosed","subscribe","val","regex","RegExp","result","test","closeIfValid","valid","submit","close","value","displayFn","group","required","ctx","SimpleChanges","EapServicesClientQuestionnaireComponent","service","loading$","refreshing$","questionnaire$","ngOnChanges","changes","active","onActivated","features","ChangeDetectorRef","AuthenticationService","finalize","tap","SubSink","ctx_r2","User","Mode","LoginComponent","router","authenticationService","cdRef","msalService","broadcastService","logoutService","customisationService","langService","msalConfigurationService","msalConfigurationServiceD","LOGIN_STYLE_LEGACY","LOGIN_STYLE_B2C","LOGIN_STYLE_B2C_CORP","customisation","toolbarBackgroundColor","toolbarStyle","toolbarColor","color","isLangSelection","options","changeLang","accessibility","setAccessibility","title","appTitle","determineLoginSchemes","adB2cConfig","getConfig","isLegacyLoginScheme","loginScheme","isExternalLoginScheme","isExternalLoginSchemeCorporate","preventLogin","invalid","isAadB2CLoginInProgress$","logout","loggingOut","defaultUsername","defaultUserName","patchValue","username","rememberMe","subs","sink","preventSwitchScheme","ngAfterViewInit","setInitialFocus","ngOnDestroy","unsubscribe","loginSchemeChanged","event","error","setAadB2CLoginInProgress","setAadB2CProgress","login","loginLegacy","loginRequest","authority","signInAuthority","loginAadB2cWithAuthority","loginRequestCorp","signInAuthorityCorp","loading","user","getRawValue","password","oldPassword","passwordExpired","newPassword","ok","loginOK","setMode","ChangePassword","setTimeout","oldPasswordControl","setFocus","errorMessage","forceReload","mustReload","StaleClient","window","location","reload","passwordControl","isIE","navigator","userAgent","loginRedirect","loginPopup","response","assignToken","idToken","loginRequestX","passwordResetAuthority","console","cancel","Login","defaultLoginScheme","loggedSuccessfully","navigate","formValue","usernameControl","detectChanges","newPasswordConfirm","mode","enable","reset","disable","loginSchemes","disableLegacyLogin","enableB2cLogin","enableB2cCorporateLogin","schemeCount","scheme","hasMultipleLoginSchemes","log","document","documentElement","style","setProperty","viewQuery","ElementRef","Router","SearchComponent","environment","ctx_r11","_r0","RouteSpec","MainComponent","config","signalrService","announcement","dialog","auth","media","iconRegistry","sanitizer","confirmDialog","messageDialog","route","icon","hideForPractice","hideForEmployee","hideResouceHub","version","PACKAGE","serverVersion","getServerVersion","getUsername","addSvgIcon","bypassSecurityTrustResourceUrl","practiceMode","isPractice","isEmployee","useResouceHub","systemPreferences","useProfile","showAnnouncements","useAnnouncements","_signalrService","_announcementService","configureRoutesForModes","showCopyright","isAuthenticated$","isAuthenticated","isPracticeMode$","mediaWatcher","asObservable","change","activeMediaQuery","mqAlias","mediaQuery","mediaAlias","configureFromMediaAlias","sidenavOpened","isActive","initialiseAnnouncementUnread","startConnection","signalrUrl","addReceiveMessageListener","unreadObservable","unread","toggleSidenav","sidenavOpenedChanged","sidenavMode","routes","allRoutes","r","hideForProfessional","requireConfirm","doLogout","stopConnection","forceLogin","confirmResult","confirm","testError","Error","showSearch","gtSm","rect","searchEl","nativeElement","getBoundingClientRect","width","height","left","right","open","panelClass","position","top","getAnnouncementUnread","openAnnouncements","e","stopPropagation","showUnreadDialog","getAnnouncementsUnread","parseInt","message","getAnnouncementStyle","userConfig","name","systemPrefs","switchMap","distinctUntilChanged","debounceTime","ItemType","CaseSearchComponent","searchService","svc","searchText","dateFrom","dateTo","openOnly","showAll","subSearch","search","onSelect","item","itemType","ActivityHeader","inCase","url","additional","replaceUrl","setSearching","then","resultSelected","catch","InvoiceSearchComponent","decimalPipe","activeOnly","inInvoice","formatAmount","amount","transform","Subject","FormUtils","UpdaterOptions","SaveResult","respondsTo","SAVED_SNACKBAR_DURATION","SAVE_FAILED_SNACKBAR_DURATION","CheckSaveChangesService","logger","dialogService","snackBar","warningsService","canDeactivate","component","state","nextState","routeUrlRegex","currentStateUrl","exec","nextStateUrl","componentHasChanges","canDeactivateResult","objectTypeName","getObjectName","CheckSaveChangesDialogComponent","objectType","obs","saveChanges","saveResult","savedOK","OK","discardChanges","currentUrlTree","createUrlTree","currentUrl","toString","replaceState","back","confirmWarning","showSaveError","snackMessage","duration","componentSaveChanges","signalInProgress","showsProgress","SaveProgressDialogComponent","hasProgress","progress","disableClose","saveChangesResult","Warnings","showWarningsWithConfirm","warnings","confirms","startCase","forms","getForms","forEach","f","markAsPristine","componentsMarkClean","formsWithChanges","hasChanges","length","logWarning","err","inProgress$","objectName","components","getComponents","getForm","cleaned","markClean","obj","getObject","callIsValid","isValid","allIsValid","every","allValid","isFormValid","openAlert","applyChanges","AS_NEW","changeSaver","some","foundComps","comps","factory","providedIn","MAT_DATE_LOCALE","DOCUMENT","moment","LangService","_translate","_document","_cookie","_adapter","_locale","init","currentLang","currentLocal","lang","check","get","language","split","defaultLang","set","use","setLocale","locale"],"sourceRoot":"webpack:///","x_google_ignoreList":[262]}