@kraki/head 0.1.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AASnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;GAEG;AACH,SAAS,eAAe,CAAC,UAAkB;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IACjD,OAAO,+BAA+B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC;AACvF,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,KAAa,EAAE,SAAiB,EAAE,YAAoB;IAC7E,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC1D,CAAC;AAqCD,MAAM,mBAAmB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAC7C,MAAM,qBAAqB,GAAG,MAAM,CAAC;AACrC,MAAM,oBAAoB,GAAG,MAAM,CAAC,CAAC,OAAO;AAE5C;;;GAGG;AACH,SAAS,cAAc,CAAC,GAAY;IAClC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC1D,MAAM,GAAG,GAAG,GAA8B,CAAC;IAC3C,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxE,IAAI,SAAS,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAChG,OAAO,IAAI,CAAC;AACd,CAAC;AAED,kCAAkC;AAClC,SAAS,WAAW,CAAC,GAA4B;IAC/C,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAChE,MAAM,GAAG,GAAG,GAAG,CAAC,MAAiC,CAAC;IAClD,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC/E,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAChE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,sCAAsC;AACtC,SAAS,oBAAoB,CAAC,GAA4B;IACxD,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClE,MAAM,CAAC,GAAG,GAAG,CAAC,OAAkC,CAAC;IACjD,IAAI,OAAO,CAAC,CAAC,cAAc,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACvD,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9C,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,kCAAkC;AAClC,SAAS,gBAAgB,CAAC,GAA4B;IACpD,OAAO,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ;WAClE,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC;AACxF,CAAC;AAED,MAAM,OAAO,UAAU;IACb,GAAG,CAAkB;IACrB,EAAE,CAAiB;IACnB,MAAM,CAAS;IACf,OAAO,CAAoB;IAC3B,OAAO,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC5C,SAAS,GAA0C,IAAI,CAAC;IAChE,0EAA0E;IAClE,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,iBAAiB,GAA0C,IAAI,CAAC;IAExE,YAAY,EAAkB,EAAE,MAAc,EAAE,OAA0B;QACxE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,GAAG,GAAG,IAAI,eAAe,CAAC;YAC7B,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,mBAAmB;SACtD,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAED,mEAAmE;IAC3D,eAAe;QACrB,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC;YACrC,0EAA0E;YAC1E,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAM,CAAC;QAC3D,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,YAAa,CAAC;IACpC,CAAC;IAED,qCAAqC;IAC7B,YAAY;QAClB,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QAClE,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI;YAAE,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;QACpF,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,IAAI,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,+DAA+D;IACvD,sBAAsB,CAAC,IAAa;QAC1C,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAClD,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;QAC/C,CAAC;QACD,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;IAChC,CAAC;IAED,6EAA6E;IACrE,iBAAiB;QACvB,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC7C,IAAI,UAAU,EAAE,eAAe,EAAE,CAAC;YAChC,OAAO,EAAE,cAAc,EAAE,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC;QACtD,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,+EAA+E;IACvE,kBAAkB;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;QACxF,IAAI,CAAC,QAAQ;YAAE,OAAO,SAAS,CAAC;QAChC,IAAI,QAAQ,YAAY,kBAAkB;YAAE,OAAO,QAAQ,CAAC;QAC5D,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;YACxB,MAAM,KAAK,GAAI,QAAgB,CAAC,KAAK,CAAC;YACtC,IAAI,KAAK,YAAY,kBAAkB;gBAAE,OAAO,KAAK,CAAC;QACxD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,yDAAyD;IACjD,mBAAmB,CAAC,SAAiB;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAC5B,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IAC/F,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAc;QACnB,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;YACzC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;gBAC/C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,EAAa;QAC5B,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IAEO,YAAY,CAAC,EAAa,EAAE,GAAyB;QAC3D,MAAM,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,aAAa,IAAI,GAAG,EAAE,OAAO,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,IAAI,SAAS,CAAC;QAClG,MAAM,KAAK,GAAgB,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACrE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAE3B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC5B,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAE5C,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YACjB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACxC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;oBACzB,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC;oBAC7C,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oBAC3C,SAAS,EAAE,CAAC,KAAK,CAAC,oCAAoC,EAAE,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC3F,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,uBAAuB,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;YACrC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAClB,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBACtC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACxD,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;oBACpF,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE;wBAC3C,IAAI,EAAE,aAAa;wBACnB,KAAK,EAAE,gBAAgB;wBACvB,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE;qBACnC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAClB,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,EAAa,EAAE,KAAkB,EAAE,GAA4B;QACrF,mBAAmB;QACnB,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,gEAAgE;QAChE,IAAI,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;YACxC,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC3C,SAAS,EAAE,CAAC,KAAK,CAAC,2BAA2B,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;gBACjF,OAAO;YACT,CAAC;QACH,CAAC;QAED,+EAA+E;QAC/E,IAAI,GAAG,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;YACzC,MAAM,IAAI,CAAC,yBAAyB,CAAC,EAAE,EAAE,KAAK,EAAE,GAAyB,CAAC,CAAC;YAC3E,OAAO;QACT,CAAC;QAED,kBAAkB;QAClB,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YACzB,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC7B,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;oBACrB,IAAI,EAAE,oBAAoB;oBAC1B,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE;oBAC9B,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG;oBACrB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,KAAK,KAAK;oBAC9C,GAAG,IAAI,CAAC,iBAAiB,EAAE;iBAC5B,CAAC,CAAC,CAAC;gBACJ,OAAO;YACT,CAAC;YACD,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACxB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtB,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,4DAA4D,CAAC,CAAC;oBACjF,OAAO;gBACT,CAAC;gBACD,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,GAA6B,CAAC,CAAC;YAClE,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;gBAC9D,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,KAAK,EAAE,GAAU,CAAC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,yBAAyB,CAAC,CAAC;YAChD,CAAC;YACD,OAAO;QACT,CAAC;QAED,kCAAkC;QAClC,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,+DAA+D,CAAC,CAAC;YACpF,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;YAChE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,mEAAmE,CAAC,CAAC;YACxF,OAAO;QACT,CAAC;QAED,0BAA0B;QAC1B,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,GAA+B,CAAC;YAC/C,IAAI,CAAC,KAAK,CAAC,QAAQ;gBAAE,OAAO;YAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YACtE,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,SAAS;gBAAE,OAAO;YAC7B,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,GAAyC,CAAC;YACrE,IAAI,SAAS,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACzC,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;gBAC/D,qDAAqD;gBACrD,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE;oBAC3C,IAAI,EAAE,aAAa;oBACnB,KAAK,EAAE,oBAAoB;oBAC3B,IAAI,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE;iBAClC,CAAC,CAAC;YACL,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;YACxC,IAAI,CAAC,wBAAwB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;YAClC,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,KAAK,EAAE,GAA6B,CAAC,CAAC;YACnE,OAAO;QACT,CAAC;QAED,oDAAoD;QACpD,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAmD,CAAC,CAAC;QACjG,CAAC;IACH,CAAC;IAEO,wBAAwB,CAAC,EAAa,EAAE,KAAkB;QAChE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,mCAAmC,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAAC;YACxC,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,GAAG,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAClE,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAE3E,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QAC1E,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YACrB,IAAI,EAAE,uBAAuB;YAC7B,KAAK;YACL,SAAS,EAAE,GAAG;SACf,CAAC,CAAC,CAAC;IACN,CAAC;IAEO,mBAAmB,CAAC,EAAa,EAAE,KAAkB,EAAE,GAA2B;QACxF,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAAC;YACxC,OAAO;QACT,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YACxD,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,uCAAuC,CAAC,CAAC;YAC5D,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACnE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;YACtD,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAAC;YACxC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACtD,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QAEzF,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE;YAC3C,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,iBAAiB;YACxB,IAAI,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE;SACnC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,yBAAyB,CAAC,EAAa,EAAE,KAAkB,EAAE,GAAuB;QAChG,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,mCAAmC,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,oCAAoC,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,YAAY,CAAC;YAC3D,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,EAAE,EAAE,KAAK,CAAC,EAAE;SACb,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;YACnB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC7E,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,GAAG,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAClE,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAErE,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QACpE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YACrB,IAAI,EAAE,uBAAuB;YAC7B,KAAK;YACL,SAAS,EAAE,GAAG;SACf,CAAC,CAAC,CAAC;IACN,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,EAAa,EAAE,KAAkB,EAAE,GAAgB;QAC1E,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAE3B,+BAA+B;QAC/B,IAAK,GAAW,CAAC,YAAY,EAAE,CAAC;YAC9B,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;QAED,iFAAiF;QACjF,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,CAAE,GAAW,CAAC,UAAU,EAAE,CAAC;YACrF,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACnE,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBAC/B,iDAAiD;gBACjD,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC9C,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;gBAC3B,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAC5C,KAAK,CAAC,iBAAiB,GAAG;oBACxB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa;oBACvC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,YAAmD;iBAC7E,CAAC;gBACF,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC1E,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC3D,OAAO;YACT,CAAC;QACH,CAAC;QAED,0DAA0D;QAC1D,MAAM,UAAU,GAAI,GAAW,CAAC,UAAgC,CAAC;QACjE,MAAM,YAAY,GAAG,UAAU;YAC7B,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC;YACvC,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QAE3B,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC;YACjD,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,UAAU;YACV,EAAE,EAAE,KAAK,CAAC,EAAE;SACb,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3E,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC7E,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,QAAgB,CAAC;QACrB,IAAI,CAAC;YACH,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC;gBAChC,SAAS;gBACT,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI;gBACrB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI;gBACrB,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;oBACb,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI;wBAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtD,CAAC;gBACD,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI;gBACrB,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS;gBAC/B,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa;gBACvC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,YAAY;gBACrC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ;aACpC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3F,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACjF,OAAO;QACT,CAAC;QAED,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;QAC3B,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC1B,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;QAE5B,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAClC,QAAQ;YACR,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI;YACrB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI;YACrB,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK;YAC3B,EAAE,EAAE,KAAK,CAAC,EAAE;SACb,CAAC,CAAC;QAEH,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YACrB,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,SAAS;YAClB,QAAQ;YACR,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG;YACrB,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,SAAS,CAAC;YAC9C,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC;YAChD,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC;YACvD,IAAI,EAAE,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC;YACzC,GAAG,IAAI,CAAC,iBAAiB,EAAE;SAC5B,CAAC,CAAC,CAAC;QAEJ,uBAAuB;QACvB,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE;YACrC,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,eAAe;YACtB,IAAI,EAAE;gBACJ,MAAM,EAAE;oBACN,EAAE,EAAE,QAAQ;oBACZ,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI;oBACrB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI;oBACrB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI;oBACrB,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS;oBAC/B,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa;oBACvC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,YAAY;oBACrC,MAAM,EAAE,IAAI;iBACb;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAEO,iBAAiB,CAAC,EAAa,EAAE,KAAkB,EAAE,GAAgB;QAC3E,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,EAAE,CAAC;YAC3C,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,iDAAiD,EAAE,CAAC,CAAC,CAAC;YAC5G,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAI,GAAW,CAAC,YAAsB,CAAC;QACzD,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAEzE,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,+CAA+C,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/E,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,kCAAkC,EAAE,CAAC,CAAC,CAAC;YAC7F,OAAO;QACT,CAAC;QAED,IAAI,QAAgB,CAAC;QACrB,IAAI,CAAC;YACH,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC;gBAChC,SAAS;gBACT,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI;gBACrB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI;gBACrB,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;oBACb,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI;wBAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtD,CAAC;gBACD,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI;gBACrB,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS;gBAC/B,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa;gBACvC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,YAAY;gBACrC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ;aACpC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,sCAAsC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YACrG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACjF,OAAO;QACT,CAAC;QAED,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;QAC3B,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC1B,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;QAE5B,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAE1F,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YACrB,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,SAAS;YAClB,QAAQ;YACR,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG;YACrB,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,SAAS,CAAC;YAC9C,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC;YAChD,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC;YACvD,IAAI,EAAE,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC;YACzC,GAAG,IAAI,CAAC,iBAAiB,EAAE;SAC5B,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE;YACrC,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,eAAe;YACtB,IAAI,EAAE;gBACJ,MAAM,EAAE;oBACN,EAAE,EAAE,QAAQ;oBACZ,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI;oBACrB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI;oBACrB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI;oBACrB,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS;oBAC/B,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa;oBACvC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,YAAY;oBACrC,MAAM,EAAE,IAAI;iBACb;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAEO,uBAAuB,CAAC,EAAa,EAAE,KAAkB,EAAE,GAA4C;QAC7G,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;QACvC,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC;QACjC,MAAM,WAAW,GAAG,KAAK,CAAC,iBAAiB,CAAC;QAE5C,KAAK,CAAC,YAAY,GAAG,SAAS,CAAC;QAC/B,KAAK,CAAC,eAAe,GAAG,SAAS,CAAC;QAClC,KAAK,CAAC,iBAAiB,GAAG,SAAS,CAAC;QAEpC,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;YACxB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC;YACjF,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACjC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC;YAC7E,OAAO;QACT,CAAC;QAED,mBAAmB;QACnB,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAElE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1E,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC;YAC9E,OAAO;QACT,CAAC;QAED,+DAA+D;QAC/D,MAAM,aAAa,GAAG,WAAW,EAAE,aAAa,IAAI,MAAM,CAAC,aAAa,IAAI,SAAS,CAAC;QAEtF,IAAI,YAAoB,CAAC;QACzB,IAAI,CAAC;YACH,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC;gBACpC,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,IAAI,EAAE,MAAM,CAAC,IAAW;gBACxB,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;oBACb,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI;wBAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtD,CAAC;gBACD,IAAI,EAAG,MAAM,CAAC,IAAY,IAAI,SAAS;gBACvC,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,SAAS;gBACxC,aAAa;gBACb,cAAc,EAAE,QAAQ;aACzB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YACnG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACjF,OAAO;QACT,CAAC;QAED,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;QAC3B,KAAK,CAAC,QAAQ,GAAG,YAAY,CAAC;QAC9B,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAEnC,MAAM,CAAC,IAAI,CAAC,6CAA6C,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAEvF,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YACrB,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,MAAM,CAAC,SAAS;YACzB,QAAQ,EAAE,YAAY;YACtB,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG;YACrB,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC;YACrD,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC;YACvD,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC;YAC9D,IAAI,EAAE,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC;YAChD,GAAG,IAAI,CAAC,iBAAiB,EAAE;SAC5B,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE;YAC5C,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,eAAe;YACtB,IAAI,EAAE;gBACJ,MAAM,EAAE;oBACN,EAAE,EAAE,YAAY;oBAChB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,IAAI,EAAE,MAAM,CAAC,IAAW;oBACxB,IAAI,EAAG,MAAM,CAAC,IAAY,IAAI,SAAS;oBACvC,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,SAAS;oBACxC,aAAa;oBACb,MAAM,EAAE,IAAI;iBACb;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAEO,SAAS,CAAC,EAAa,EAAE,OAAe;QAC9C,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YACrC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAEO,iBAAiB;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,qBAAqB,CAAC;QACpE,IAAI,QAAQ,IAAI,CAAC;YAAE,OAAO;QAE1B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,oBAAoB,CAAC;QACjE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAE3B,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;YAChC,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACvC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;oBACjB,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC5F,EAAE,CAAC,SAAS,EAAE,CAAC;oBACf,SAAS;gBACX,CAAC;gBACD,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;gBACpB,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;oBACrC,EAAE,CAAC,IAAI,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC;QACH,CAAC,EAAE,QAAQ,CAAC,CAAC;IACf,CAAC;IAEO,iBAAiB;QACvB,kDAAkD;QAClD,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE;YACxC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAClC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;IACjB,CAAC;IAED,+CAA+C;IACvC,gBAAgB,CAAC,EAAU;QACjC,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC,CAAC,YAAY;QAC9D,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,GAAG,MAAM,EAAE,CAAC;YAC1C,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,CAAC,eAAe;QAClD,CAAC;QACD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAAC,CAAC;QAC7E,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAAC,CAAC;QACrG,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACrC,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;CACF"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACnD,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AASlC,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,SAAS,eAAe,CAAC,UAAkB;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IACjD,OAAO,+BAA+B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC;AACvF,CAAC;AAED,SAAS,eAAe,CAAC,KAAa,EAAE,SAAiB,EAAE,YAAoB;IAC7E,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC1D,CAAC;AA2BD,MAAM,mBAAmB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7C,SAAS,cAAc,CAAC,GAAY;IAClC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC1D,MAAM,GAAG,GAAG,GAA8B,CAAC;IAC3C,OAAO,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,WAAW,CAAC,GAA4B;IAC/C,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAChE,MAAM,GAAG,GAAG,GAAG,CAAC,MAAiC,CAAC;IAClD,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC/E,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAChE,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5D,MAAM,IAAI,GAAG,GAAG,CAAC,IAA+B,CAAC;IACjD,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,GAA4B;IAClD,OAAO,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ;WACtD,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC;AACzF,CAAC;AAED,SAAS,gBAAgB,CAAC,GAA4B;IACpD,OAAO,GAAG,CAAC,IAAI,KAAK,WAAW;WAC1B,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC;AACzF,CAAC;AAED,MAAM,OAAO,UAAU;IACb,GAAG,CAAkB;IACrB,OAAO,CAAU;IACjB,OAAO,CAAoB;IAE3B,MAAM,CAAU,aAAa,GAAG,MAAM,CAAC;IAE/C,kBAAkB;IACV,WAAW,GAAG,IAAI,GAAG,EAAqB,CAAC;IAC3C,aAAa,GAAG,IAAI,GAAG,EAAwB,CAAC;IAChD,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,OAAO,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC5C,SAAS,GAA0C,IAAI,CAAC;IAEhE,YAAY,OAAgB,EAAE,OAA0B;QACtD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,GAAG,GAAG,IAAI,eAAe,CAAC;YAC7B,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,mBAAmB;SACtD,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;YAChC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YAC7C,KAAK,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC9C,IAAI,CAAC;oBACH,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI;wBAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACrD,CAAC;gBAAC,MAAM,CAAC;oBACP,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;QACH,CAAC,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;IAC/B,CAAC;IAED,gCAAgC;IAExB,eAAe;QACrB,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAM,CAAC;QAC3D,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,YAAa,CAAC;IACpC,CAAC;IAEO,sBAAsB,CAAC,IAAa;QAC1C,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAClD,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;QAC/C,CAAC;QACD,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;IAChC,CAAC;IAEO,iBAAiB;QACvB,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC7C,OAAO,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,CAAC;IAEO,kBAAkB;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;QACxF,IAAI,CAAC,QAAQ;YAAE,OAAO,SAAS,CAAC;QAChC,IAAI,QAAQ,YAAY,kBAAkB;YAAE,OAAO,QAAQ,CAAC;QAC5D,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;YACxB,MAAM,KAAK,GAAI,QAAgB,CAAC,KAAK,CAAC;YACtC,IAAI,KAAK,YAAY,kBAAkB;gBAAE,OAAO,KAAK,CAAC;QACxD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,gCAAgC;IAEhC,MAAM,CAAC,MAAc;QACnB,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;YACzC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;gBAC/C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB,CAAC,EAAa;QAC5B,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IAEO,YAAY,CAAC,EAAa,EAAE,GAAyB;QAC3D,MAAM,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,aAAa,IAAI,GAAG,EAAE,OAAO,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,IAAI,SAAS,CAAC;QAClG,MAAM,KAAK,GAAgB,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QACxD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAE3B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC5B,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAE5C,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACxC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;oBACzB,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC;oBAC7C,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oBAC3C,SAAS,EAAE,CAAC,KAAK,CAAC,oCAAoC,EAAE,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC3F,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,uBAAuB,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;YACrC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAClB,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnB,MAAM,oBAAoB,GAAG,KAAK,CAAC,QAAQ,CAAC;gBAC5C,MAAM,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAC;gBACxC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;gBAC9C,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;gBAC/C,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAC,CAAC;gBAEvE,uDAAuD;gBACvD,IAAI,kBAAkB,EAAE,CAAC;oBACvB,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;gBACrE,CAAC;YACH,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAClB,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,EAAa,EAAE,KAAkB,EAAE,GAA4B;QACrF,+CAA+C;QAC/C,IAAI,GAAG,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;YACzC,MAAM,IAAI,CAAC,yBAAyB,CAAC,EAAE,EAAE,KAAK,EAAE,GAAyB,CAAC,CAAC;YAC3E,OAAO;QACT,CAAC;QAED,2CAA2C;QAC3C,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YACzB,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;gBAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC9C,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;oBAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBAC7C,IAAI,UAAU,EAAE,eAAe;wBAAE,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAChE,CAAC;gBACD,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,QAAQ,CAAC;oBAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACtE,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC;oBAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAClE,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,KAAK,KAAK;oBAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACnE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC1B,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;oBACrB,IAAI,EAAE,oBAAoB;oBAC1B,OAAO;oBACP,cAAc,EAAE,IAAI,CAAC,iBAAiB,EAAE;iBACzC,CAAC,CAAC,CAAC;gBACJ,OAAO;YACT,CAAC;YACD,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACxB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtB,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,4DAA4D,CAAC,CAAC;oBACjF,OAAO;gBACT,CAAC;gBACD,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,GAA6B,CAAC,CAAC;YAClE,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;gBAC9D,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,KAAK,EAAE,GAAU,CAAC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,yBAAyB,CAAC,CAAC;YAChD,CAAC;YACD,OAAO;QACT,CAAC;QAED,yBAAyB;QACzB,IAAI,GAAG,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;YACxC,IAAI,CAAC,wBAAwB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,0CAA0C,CAAC,CAAC;gBAC/D,OAAO;YACT,CAAC;YACD,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE,GAAiC,CAAC,CAAC;YACjE,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC7B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,wCAAwC,CAAC,CAAC;gBAC7D,OAAO;YACT,CAAC;YACD,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,GAAmC,CAAC,CAAC;YACjE,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;YACtC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,KAAK,GAAG,GAAG,CAAC,WAAkD,CAAC;gBACrE,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACvC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBACpD,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC/E,CAAC;YACH,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxB,OAAO,CAAC,iCAAiC;QAC3C,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,yBAAyB,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,kBAAkB;IAEV,aAAa,CAAC,EAAa,EAAE,KAAkB,EAAE,GAAoB;QAC3E,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC;QAClC,IAAI,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,OAAO;QAE7C,qCAAqC;QACrC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YAC1D,MAAM,CAAC,IAAI,CAAC,kDAAkD,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;YACtG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,oCAAoC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC/G,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;YACvD,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,oCAAoC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC/G,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;gBAC3C,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,IAAI,CAAC,0CAA0C,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;YACxE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,KAAkB,EAAE,GAAsB;QAChE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC;QAClC,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC;QACtC,IAAI,CAAC,YAAY,IAAI,CAAC,cAAc;YAAE,OAAO;QAE7C,iDAAiD;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAChE,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;YACjC,IAAI,MAAM,CAAC,EAAE,KAAK,cAAc;gBAAE,SAAS;YAE3C,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACjD,IAAI,CAAC,QAAQ;gBAAE,SAAS;YAExB,IAAI,CAAC;gBACH,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;oBAC3C,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,CAAC,IAAI,CAAC,4CAA4C,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC7E,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,QAAgB;QACvC,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,EAAE,EAAE,CAAC;YACP,IAAI,CAAC;gBAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,EAAa,EAAE,IAAmB,EAAE,OAAe;QACvE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,eAAe;IAEP,KAAK,CAAC,UAAU,CAAC,EAAa,EAAE,KAAkB,EAAE,GAAgB;QAC1E,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;QAErB,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;YACpB,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBACnD,OAAO;YACT,CAAC;YAED,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACrD,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;oBAC/B,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAC9C,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;oBAC3B,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACtC,KAAK,CAAC,iBAAiB,GAAG,EAAE,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;oBACtE,KAAK,CAAC,iBAAiB,GAAG,WAAW,CAAC;oBACtC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;oBACpE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;oBAC3D,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,OAAO;YACT,CAAC;YAED,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;gBACvD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;gBAChF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC/F,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;oBACxD,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC;gBAC/D,OAAO;YACT,CAAC;YAED,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;gBACvD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;gBACpF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC/F,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;oBACxD,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC;gBAC/D,OAAO;YACT,CAAC;YAED,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;gBACvD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC9E,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;oBACzF,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;oBACxD,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;gBACzD,OAAO;YACT,CAAC;YAED,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;gBACrD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;gBACpF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;oBACvF,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;oBACxD,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;gBACvD,OAAO;YACT,CAAC;YAED,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,MAAM,GAAI,IAA2B,CAAC,MAAM,CAAC;gBACnD,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,qBAAqB,EAAE,wBAAwB,MAAM,EAAE,CAAC,CAAC;YAClF,CAAC;QACH,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,EAAa,EAAE,KAAkB,EAAE,YAAoB,EAAE,GAAgB;QACjG,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,kBAAkB,EAAE,sBAAsB,CAAC,CAAC;YACnE,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAEvD,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YACnD,IAAI,SAAS;gBAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACvD,MAAM,CAAC,IAAI,CAAC,+CAA+C,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/E,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,uBAAuB,EAAE,kCAAkC,CAAC,CAAC;YACpF,OAAO;QACT,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAExC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;YAC3D,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAa,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QACjH,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;IACzD,CAAC;IAEO,uBAAuB,CAAC,EAAa,EAAE,KAAkB,EAAE,GAA4C;QAC7G,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;QACvC,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC;QACjC,MAAM,WAAW,GAAG,KAAK,CAAC,iBAAiB,CAAC;QAE5C,KAAK,CAAC,YAAY,GAAG,SAAS,CAAC;QAC/B,KAAK,CAAC,eAAe,GAAG,SAAS,CAAC;QAClC,KAAK,CAAC,iBAAiB,GAAG,SAAS,CAAC;QAEpC,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;YACxB,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,sBAAsB,EAAE,sBAAsB,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAElE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1E,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;YACjE,OAAO;QACT,CAAC;QAED,oCAAoC;QACpC,MAAM,aAAa,GAAG,WAAW,EAAE,aAAa,IAAI,MAAM,CAAC,aAAa,IAAI,SAAS,CAAC;QACtF,IAAI,CAAC,OAAO,CAAC,YAAY,CACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EACjD,MAAM,CAAC,IAAI,IAAI,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,SAAS,EAAE,aAAa,CACvE,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;YAC3D,OAAO;QACT,CAAC;QAED,sBAAsB;QACtB,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;QAC3B,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC1B,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAE7C,MAAM,CAAC,IAAI,CAAC,6CAA6C,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAEvF,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnD,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YACrB,IAAI,EAAE,SAAS;YACf,QAAQ;YACR,UAAU,EAAE,WAAW;YACvB,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE;YAC5G,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;YAC7C,cAAc,EAAE,IAAI,CAAC,iBAAiB,EAAE;YACxC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;SACnC,CAAC,CAAC,CAAC;QAEJ,8DAA8D;QAC9D,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;IAEO,YAAY,CAClB,EAAa,EACb,KAAkB,EAClB,IAAc,EACd,GAAgB,EAChB,UAAgC;QAEhC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAE3B,eAAe;QACf,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAExE,kBAAkB;QAClB,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,OAAO,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACrE,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,YAAY,CACvB,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,EACnD,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa,CAChE,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3F,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,4BAA4B,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;YAC7E,OAAO;QACT,CAAC;QAED,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;QAC3B,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC1B,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAEzC,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAClC,QAAQ;YACR,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI;YACrB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI;YACrB,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,EAAE,EAAE,KAAK,CAAC,EAAE;SACb,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/C,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YACrB,IAAI,EAAE,SAAS;YACf,QAAQ;YACR,UAAU;YACV,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE;YACrG,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,cAAc,EAAE,IAAI,CAAC,iBAAiB,EAAE;YACxC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;SACnC,CAAC,CAAC,CAAC;QAEJ,sDAAsD;QACtD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,qCAAqC;IAE7B,wBAAwB,CAAC,EAAa,EAAE,KAAkB;QAChE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,mCAAmC,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClB,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAAC;YACxC,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,GAAG,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE;YAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI;SACnC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACpE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YACrB,IAAI,EAAE,uBAAuB;YAC7B,KAAK;YACL,SAAS,EAAE,GAAG;SACf,CAAC,CAAC,CAAC;IACN,CAAC;IAEO,KAAK,CAAC,yBAAyB,CAAC,EAAa,EAAE,KAAkB,EAAE,GAAuB;QAChG,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,mCAAmC,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,oCAAoC,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QAED,uDAAuD;QACvD,IAAI,UAAU,GAAgB,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,qCAAqC,EAAE,CAAC;QAC5F,KAAK,MAAM,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YACpE,UAAU,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7E,IAAI,UAAU,CAAC,EAAE;gBAAE,MAAM;QAC3B,CAAC;QACD,8DAA8D;QAC9D,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC;YACrF,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAChG,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;YACnB,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,eAAe,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;YAC5D,OAAO;QACT,CAAC;QAED,qBAAqB;QACrB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEpH,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,GAAG,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE;YAC5B,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE;YAC1B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI;SACnC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACrF,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YACrB,IAAI,EAAE,uBAAuB;YAC7B,KAAK;YACL,SAAS,EAAE,GAAG;SACf,CAAC,CAAC,CAAC;IACN,CAAC;IAED,wCAAwC;IAEhC,qBAAqB,CAAC,MAAc,EAAE,WAAmB;QAC/D,IAAI,MAAM,CAAC;QACX,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO;QAAC,CAAC,CAAC,wCAAwC;QAC5D,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,MAAM,OAAO,GAAkB;YAC7B,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAkB;YAC/B,IAAI,EAAG,MAAM,CAAC,IAAmB,IAAI,SAAS;YAC9C,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,SAAS;YACxC,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,SAAS;YAChD,MAAM,EAAE,IAAI;SACb,CAAC;QAEF,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QACvE,IAAI,WAAW,CAAC;QAChB,IAAI,CAAC;YACH,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACtD,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO;QAAC,CAAC;QACnB,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;YAC5B,IAAI,CAAC,CAAC,EAAE,KAAK,WAAW;gBAAE,SAAS;YACnC,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACtC,IAAI,EAAE,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;gBAC3C,IAAI,CAAC;oBAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;IACH,CAAC;IAEO,mBAAmB,CAAC,MAAc,EAAE,YAAoB;QAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;QAC5E,IAAI,WAAW,CAAC;QAChB,IAAI,CAAC;YACH,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACtD,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO;QAAC,CAAC,CAAC,wCAAwC;QAC5D,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;YAC5B,IAAI,CAAC,CAAC,EAAE,KAAK,YAAY;gBAAE,SAAS;YACpC,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACtC,IAAI,EAAE,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;gBAC3C,IAAI,CAAC;oBAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;IACH,CAAC;IAED,kBAAkB;IAEV,kBAAkB,CAAC,MAAc;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACrD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACtB,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAkB;YAC1B,IAAI,EAAG,CAAC,CAAC,IAAmB,IAAI,SAAS;YACzC,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,SAAS;YACnC,aAAa,EAAE,CAAC,CAAC,aAAa,IAAI,SAAS;YAC3C,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;SACnC,CAAC,CAAC,CAAC;IACN,CAAC;IAEO,SAAS,CAAC,EAAa,EAAE,OAAe;QAC9C,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YACrC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;QACD,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACrC,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC"}
package/dist/storage.d.ts CHANGED
@@ -1,16 +1,6 @@
1
- export interface StoredMessage {
2
- id: number;
3
- channelId: string;
4
- deviceId: string;
5
- sessionId: string | null;
6
- seq: number;
7
- type: string;
8
- payload: string;
9
- createdAt: string;
10
- }
11
1
  export interface StoredDevice {
12
2
  id: string;
13
- channelId: string;
3
+ userId: string;
14
4
  name: string;
15
5
  role: string;
16
6
  kind: string | null;
@@ -24,89 +14,19 @@ export interface StoredUser {
24
14
  username: string;
25
15
  provider: string;
26
16
  email?: string;
17
+ preferences?: Record<string, unknown>;
27
18
  createdAt: string;
28
19
  }
29
- export interface StoredChannel {
30
- id: string;
31
- ownerId: string;
32
- name: string | null;
33
- createdAt: string;
34
- }
35
- export interface StoreMessageInput {
36
- channelId: string;
37
- deviceId: string;
38
- sessionId: string | null;
39
- seq: number;
40
- type: string;
41
- payload: string;
42
- }
43
- export declare function shouldStore(type: string): boolean;
44
20
  export declare class Storage {
45
21
  private db;
46
22
  constructor(dbPath?: string);
47
23
  private migrate;
48
24
  upsertUser(userId: string, username: string, provider?: string, email?: string): StoredUser;
49
25
  getUser(userId: string): StoredUser | undefined;
50
- createChannel(id: string, ownerId: string, name?: string): StoredChannel;
51
- getChannel(id: string): StoredChannel | undefined;
52
- getChannelByOwner(ownerId: string): StoredChannel | undefined;
53
- upsertDevice(id: string, channelId: string, name: string, role: string, kind?: string, publicKey?: string, encryptionKey?: string): StoredDevice;
54
- private mapDeviceRow;
26
+ updatePreferences(userId: string, preferences: Record<string, unknown>): void;
27
+ upsertDevice(id: string, userId: string, name: string, role: string, kind?: string, publicKey?: string, encryptionKey?: string): StoredDevice;
55
28
  getDevice(id: string): StoredDevice | undefined;
56
- getDevicesByChannel(channelId: string): StoredDevice[];
57
- removeDevice(id: string): void;
58
- touchDevice(id: string): void;
59
- upsertSession(id: string, channelId: string, deviceId: string, agent: string, model?: string): void;
60
- getSessionsByChannel(channelId: string): Array<{
61
- id: string;
62
- deviceId: string;
63
- agent: string;
64
- model: string | null;
65
- }>;
66
- getSessionById(id: string): {
67
- id: string;
68
- channelId: string;
69
- deviceId: string;
70
- agent: string;
71
- model: string | null;
72
- } | undefined;
73
- deleteSession(sessionId: string): void;
74
- deleteSessionMessages(channelId: string, sessionId: string): void;
75
- deleteSessionReadState(channelId: string, sessionId: string): void;
76
- storeMessage(input: StoreMessageInput): StoredMessage;
77
- private mapMessageRow;
78
- getMessagesAfterSeq(channelId: string, afterSeq: number, sessionId?: string, limit?: number): StoredMessage[];
79
- /**
80
- * Get messages deliverable to a specific device.
81
- * Filters out encrypted messages where the device has no wrapped key.
82
- */
83
- getMessagesForDevice(channelId: string, afterSeq: number, deviceId: string, sessionId?: string, limit?: number): StoredMessage[];
84
- /** Get the highest seq number for a channel. */
85
- getMaxSeq(channelId: string): number;
86
- /** Delete messages with seq ≤ threshold for a channel (retention pruning). */
87
- pruneMessages(channelId: string, beforeSeq: number): number;
88
- /** Prune messages older than a given age (in days). Returns total rows deleted. */
89
- pruneOldMessages(maxAgeDays?: number): number;
90
- /** Update the last-read seq for a channel+session pair (per-user, shared across devices) */
91
- markRead(channelId: string, sessionId: string, seq: number): void;
92
- /** Get read state for all sessions in a channel: { sessionId: lastSeq } */
93
- getReadState(channelId: string): Record<string, number>;
94
- /** Get the max seq per session in a channel (for computing unread counts) */
95
- getSessionMaxSeqs(channelId: string): Record<string, number>;
96
- /**
97
- * Store a pairing token. The token is hashed before storage —
98
- * if the DB is compromised, the attacker only gets a hash.
99
- */
100
- createPairingToken(token: string, channelId: string, expiresAt: string): void;
101
- /**
102
- * Validate and consume a pairing token. Returns channelId if valid.
103
- * Token is single-use and time-limited.
104
- */
105
- consumePairingToken(token: string): string | null;
106
- /**
107
- * Clean up expired pairing tokens.
108
- */
109
- cleanExpiredPairingTokens(): number;
110
- private hashToken;
29
+ getDevicesByUser(userId: string): StoredDevice[];
30
+ private mapDeviceRow;
111
31
  close(): void;
112
32
  }
package/dist/storage.js CHANGED
@@ -1,19 +1,5 @@
1
1
  import Database from 'better-sqlite3';
2
- import { createHash } from 'crypto';
3
- const STORED_TYPES = new Set([
4
- 'session_created', 'session_ended',
5
- 'user_message', 'agent_message',
6
- 'permission', 'question',
7
- 'tool_start', 'tool_complete',
8
- 'error',
9
- 'send_input', 'approve', 'deny', 'always_allow', 'answer', 'kill_session',
10
- 'session_mode_set',
11
- 'encrypted',
12
- ]);
13
- export function shouldStore(type) {
14
- return STORED_TYPES.has(type);
15
- }
16
- const SCHEMA_VERSION = 9;
2
+ const SCHEMA_VERSION = 2;
17
3
  export class Storage {
18
4
  db;
19
5
  constructor(dbPath = ':memory:') {
@@ -29,115 +15,33 @@ export class Storage {
29
15
  CREATE TABLE IF NOT EXISTS users (
30
16
  user_id TEXT PRIMARY KEY,
31
17
  username TEXT NOT NULL,
32
- created_at TEXT NOT NULL DEFAULT (datetime('now'))
33
- );
34
-
35
- CREATE TABLE IF NOT EXISTS channels (
36
- id TEXT PRIMARY KEY,
37
- owner_id TEXT NOT NULL REFERENCES users(user_id),
38
- name TEXT,
18
+ provider TEXT NOT NULL DEFAULT 'open',
19
+ email TEXT,
20
+ preferences TEXT,
39
21
  created_at TEXT NOT NULL DEFAULT (datetime('now'))
40
22
  );
41
23
 
42
24
  CREATE TABLE IF NOT EXISTS devices (
43
- id TEXT PRIMARY KEY,
44
- channel_id TEXT NOT NULL REFERENCES channels(id),
45
- name TEXT NOT NULL,
46
- role TEXT NOT NULL CHECK(role IN ('tentacle', 'app')),
47
- kind TEXT,
48
- public_key TEXT,
49
- last_seen TEXT NOT NULL DEFAULT (datetime('now')),
50
- created_at TEXT NOT NULL DEFAULT (datetime('now'))
25
+ id TEXT PRIMARY KEY,
26
+ user_id TEXT NOT NULL REFERENCES users(user_id),
27
+ name TEXT NOT NULL,
28
+ role TEXT NOT NULL CHECK(role IN ('tentacle', 'app')),
29
+ kind TEXT,
30
+ public_key TEXT,
31
+ encryption_key TEXT,
32
+ last_seen TEXT NOT NULL DEFAULT (datetime('now')),
33
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
51
34
  );
52
-
53
- -- device_id intentionally has no FK to devices —
54
- -- messages are kept even after the device is removed
55
- CREATE TABLE IF NOT EXISTS messages (
56
- id INTEGER PRIMARY KEY AUTOINCREMENT,
57
- channel_id TEXT NOT NULL REFERENCES channels(id),
58
- device_id TEXT NOT NULL,
59
- session_id TEXT,
60
- seq INTEGER NOT NULL,
61
- type TEXT NOT NULL,
62
- payload TEXT NOT NULL,
63
- created_at TEXT NOT NULL DEFAULT (datetime('now'))
64
- );
65
-
66
- CREATE INDEX IF NOT EXISTS idx_messages_channel_seq
67
- ON messages(channel_id, seq);
68
- CREATE INDEX IF NOT EXISTS idx_messages_session
69
- ON messages(channel_id, session_id, seq);
70
35
  `);
71
36
  }
72
37
  if (currentVersion < 2) {
73
- this.db.exec(`
74
- CREATE TABLE IF NOT EXISTS pairing_tokens (
75
- token TEXT PRIMARY KEY,
76
- channel_id TEXT NOT NULL,
77
- expires_at TEXT NOT NULL,
78
- used INTEGER NOT NULL DEFAULT 0
79
- );
80
- `);
81
- }
82
- if (currentVersion < 3) {
83
- this.db.exec(`
84
- ALTER TABLE devices ADD COLUMN encryption_key TEXT;
85
- `);
86
- }
87
- if (currentVersion < 4) {
88
- this.db.exec(`
89
- CREATE TABLE IF NOT EXISTS sessions (
90
- id TEXT PRIMARY KEY,
91
- channel_id TEXT NOT NULL REFERENCES channels(id),
92
- device_id TEXT NOT NULL,
93
- agent TEXT NOT NULL DEFAULT 'unknown',
94
- model TEXT,
95
- state TEXT NOT NULL DEFAULT 'active' CHECK(state IN ('active', 'idle', 'ended')),
96
- created_at TEXT NOT NULL DEFAULT (datetime('now'))
97
- );
98
- `);
99
- }
100
- if (currentVersion < 5) {
101
- this.db.exec(`
102
- CREATE TABLE IF NOT EXISTS read_state (
103
- device_id TEXT NOT NULL,
104
- session_id TEXT NOT NULL,
105
- last_seq INTEGER NOT NULL DEFAULT 0,
106
- PRIMARY KEY (device_id, session_id)
107
- );
108
- `);
109
- }
110
- if (currentVersion < 6) {
111
- this.db.exec(`
112
- CREATE TABLE IF NOT EXISTS allowed_tools (
113
- channel_id TEXT NOT NULL REFERENCES channels(id),
114
- tool_kind TEXT NOT NULL,
115
- created_at TEXT NOT NULL DEFAULT (datetime('now')),
116
- PRIMARY KEY (channel_id, tool_kind)
117
- );
118
- `);
119
- }
120
- if (currentVersion < 7) {
121
- this.db.exec(`
122
- ALTER TABLE users ADD COLUMN provider TEXT NOT NULL DEFAULT 'open';
123
- `);
124
- }
125
- if (currentVersion < 8) {
126
- this.db.exec(`
127
- ALTER TABLE users ADD COLUMN email TEXT;
128
- `);
129
- }
130
- if (currentVersion < 9) {
131
- // Migrate read_state from per-device to per-channel (per-user)
132
- this.db.exec(`
133
- DROP TABLE IF EXISTS read_state;
134
- CREATE TABLE read_state (
135
- channel_id TEXT NOT NULL,
136
- session_id TEXT NOT NULL,
137
- last_seq INTEGER NOT NULL DEFAULT 0,
138
- PRIMARY KEY (channel_id, session_id)
139
- );
140
- `);
38
+ // Add preferences column if upgrading from v1
39
+ try {
40
+ this.db.exec(`ALTER TABLE users ADD COLUMN preferences TEXT`);
41
+ }
42
+ catch {
43
+ // Column may already exist from v1 schema above
44
+ }
141
45
  }
142
46
  this.db.pragma(`user_version = ${SCHEMA_VERSION}`);
143
47
  }
@@ -151,37 +55,34 @@ export class Storage {
151
55
  return this.getUser(userId);
152
56
  }
153
57
  getUser(userId) {
154
- const row = this.db.prepare('SELECT user_id, username, provider, email, created_at FROM users WHERE user_id = ?').get(userId);
58
+ const row = this.db.prepare('SELECT user_id, username, provider, email, preferences, created_at FROM users WHERE user_id = ?').get(userId);
155
59
  if (!row)
156
60
  return undefined;
157
- return { userId: row.user_id, username: row.username, provider: row.provider ?? 'open', email: row.email ?? undefined, createdAt: row.created_at };
158
- }
159
- // --- Channels ---
160
- createChannel(id, ownerId, name) {
161
- this.db.prepare('INSERT INTO channels (id, owner_id, name) VALUES (?, ?, ?)').run(id, ownerId, name ?? null);
162
- return this.getChannel(id);
163
- }
164
- getChannel(id) {
165
- const row = this.db.prepare('SELECT id, owner_id, name, created_at FROM channels WHERE id = ?').get(id);
166
- if (!row)
167
- return undefined;
168
- return { id: row.id, ownerId: row.owner_id, name: row.name, createdAt: row.created_at };
61
+ let prefs;
62
+ if (row.preferences) {
63
+ try {
64
+ prefs = JSON.parse(row.preferences);
65
+ }
66
+ catch { /* ignore */ }
67
+ }
68
+ return { userId: row.user_id, username: row.username, provider: row.provider, email: row.email ?? undefined, preferences: prefs, createdAt: row.created_at };
169
69
  }
170
- getChannelByOwner(ownerId) {
171
- const row = this.db.prepare('SELECT id, owner_id, name, created_at FROM channels WHERE owner_id = ?').get(ownerId);
172
- if (!row)
173
- return undefined;
174
- return { id: row.id, ownerId: row.owner_id, name: row.name, createdAt: row.created_at };
70
+ updatePreferences(userId, preferences) {
71
+ const existing = this.getUser(userId);
72
+ if (!existing)
73
+ return;
74
+ const merged = { ...(existing.preferences ?? {}), ...preferences };
75
+ this.db.prepare('UPDATE users SET preferences = ? WHERE user_id = ?')
76
+ .run(JSON.stringify(merged), userId);
175
77
  }
176
78
  // --- Devices ---
177
- upsertDevice(id, channelId, name, role, kind, publicKey, encryptionKey) {
178
- // Check for cross-channel collision: if device exists in a different channel, reject
79
+ upsertDevice(id, userId, name, role, kind, publicKey, encryptionKey) {
179
80
  const existing = this.getDevice(id);
180
- if (existing && existing.channelId !== channelId) {
181
- throw new Error(`Device "${id}" belongs to channel "${existing.channelId}", not "${channelId}"`);
81
+ if (existing && existing.userId !== userId) {
82
+ throw new Error(`Device "${id}" belongs to user "${existing.userId}", not "${userId}"`);
182
83
  }
183
84
  this.db.prepare(`
184
- INSERT INTO devices (id, channel_id, name, role, kind, public_key, encryption_key)
85
+ INSERT INTO devices (id, user_id, name, role, kind, public_key, encryption_key)
185
86
  VALUES (?, ?, ?, ?, ?, ?, ?)
186
87
  ON CONFLICT(id) DO UPDATE SET
187
88
  name = excluded.name,
@@ -190,181 +91,28 @@ export class Storage {
190
91
  public_key = excluded.public_key,
191
92
  encryption_key = excluded.encryption_key,
192
93
  last_seen = datetime('now')
193
- `).run(id, channelId, name, role, kind ?? null, publicKey ?? null, encryptionKey ?? null);
94
+ `).run(id, userId, name, role, kind ?? null, publicKey ?? null, encryptionKey ?? null);
194
95
  return this.getDevice(id);
195
96
  }
196
- mapDeviceRow(row) {
197
- return {
198
- id: row.id, channelId: row.channel_id, name: row.name,
199
- role: row.role, kind: row.kind, publicKey: row.public_key,
200
- encryptionKey: row.encryption_key,
201
- lastSeen: row.last_seen, createdAt: row.created_at,
202
- };
203
- }
204
97
  getDevice(id) {
205
- const row = this.db.prepare('SELECT id, channel_id, name, role, kind, public_key, encryption_key, last_seen, created_at FROM devices WHERE id = ?').get(id);
98
+ const row = this.db.prepare('SELECT id, user_id, name, role, kind, public_key, encryption_key, last_seen, created_at FROM devices WHERE id = ?').get(id);
206
99
  if (!row)
207
100
  return undefined;
208
101
  return this.mapDeviceRow(row);
209
102
  }
210
- getDevicesByChannel(channelId) {
211
- const rows = this.db.prepare('SELECT id, channel_id, name, role, kind, public_key, encryption_key, last_seen, created_at FROM devices WHERE channel_id = ?').all(channelId);
103
+ getDevicesByUser(userId) {
104
+ const rows = this.db.prepare('SELECT id, user_id, name, role, kind, public_key, encryption_key, last_seen, created_at FROM devices WHERE user_id = ?').all(userId);
212
105
  return rows.map(row => this.mapDeviceRow(row));
213
106
  }
214
- removeDevice(id) {
215
- this.db.prepare('DELETE FROM devices WHERE id = ?').run(id);
216
- }
217
- touchDevice(id) {
218
- this.db.prepare("UPDATE devices SET last_seen = datetime('now') WHERE id = ?").run(id);
219
- }
220
- // --- Sessions (persistent) ---
221
- upsertSession(id, channelId, deviceId, agent, model) {
222
- this.db.prepare(`
223
- INSERT INTO sessions (id, channel_id, device_id, agent, model)
224
- VALUES (?, ?, ?, ?, ?)
225
- ON CONFLICT(id) DO UPDATE SET
226
- device_id = excluded.device_id,
227
- agent = excluded.agent,
228
- model = excluded.model
229
- `).run(id, channelId, deviceId, agent, model ?? null);
230
- }
231
- getSessionsByChannel(channelId) {
232
- return this.db.prepare('SELECT id, device_id, agent, model FROM sessions WHERE channel_id = ?').all(channelId)
233
- .map(r => ({ id: r.id, deviceId: r.device_id, agent: r.agent, model: r.model }));
234
- }
235
- getSessionById(id) {
236
- const row = this.db.prepare('SELECT id, channel_id, device_id, agent, model FROM sessions WHERE id = ?').get(id);
237
- if (!row)
238
- return undefined;
239
- return { id: row.id, channelId: row.channel_id, deviceId: row.device_id, agent: row.agent, model: row.model };
240
- }
241
- deleteSession(sessionId) {
242
- this.db.prepare('DELETE FROM sessions WHERE id = ?').run(sessionId);
243
- }
244
- deleteSessionMessages(channelId, sessionId) {
245
- this.db.prepare('DELETE FROM messages WHERE channel_id = ? AND session_id = ?').run(channelId, sessionId);
246
- }
247
- deleteSessionReadState(channelId, sessionId) {
248
- this.db.prepare('DELETE FROM read_state WHERE channel_id = ? AND session_id = ?').run(channelId, sessionId);
249
- }
250
- // --- Messages ---
251
- storeMessage(input) {
252
- const info = this.db.prepare(`
253
- INSERT INTO messages (channel_id, device_id, session_id, seq, type, payload)
254
- VALUES (?, ?, ?, ?, ?, ?)
255
- `).run(input.channelId, input.deviceId, input.sessionId, input.seq, input.type, input.payload);
256
- return {
257
- id: Number(info.lastInsertRowid),
258
- ...input,
259
- createdAt: new Date().toISOString(),
260
- };
261
- }
262
- mapMessageRow(row) {
107
+ mapDeviceRow(row) {
263
108
  return {
264
- id: row.id,
265
- channelId: row.channel_id,
266
- deviceId: row.device_id,
267
- sessionId: row.session_id ?? null,
268
- seq: row.seq,
269
- type: row.type,
270
- payload: row.payload,
271
- createdAt: row.created_at,
109
+ id: row.id, userId: row.user_id, name: row.name,
110
+ role: row.role, kind: row.kind, publicKey: row.public_key,
111
+ encryptionKey: row.encryption_key,
112
+ lastSeen: row.last_seen, createdAt: row.created_at,
272
113
  };
273
114
  }
274
- getMessagesAfterSeq(channelId, afterSeq, sessionId, limit = 1000) {
275
- if (sessionId) {
276
- return this.db.prepare('SELECT * FROM messages WHERE channel_id = ? AND session_id = ? AND seq > ? ORDER BY seq ASC LIMIT ?').all(channelId, sessionId, afterSeq, limit).map(row => this.mapMessageRow(row));
277
- }
278
- return this.db.prepare('SELECT * FROM messages WHERE channel_id = ? AND seq > ? ORDER BY seq ASC LIMIT ?').all(channelId, afterSeq, limit).map(row => this.mapMessageRow(row));
279
- }
280
- /**
281
- * Get messages deliverable to a specific device.
282
- * Filters out encrypted messages where the device has no wrapped key.
283
- */
284
- getMessagesForDevice(channelId, afterSeq, deviceId, sessionId, limit = 1000) {
285
- const filter = `(type != 'encrypted' OR json_extract(payload, '$.keys.' || ?) IS NOT NULL)`;
286
- if (sessionId) {
287
- return this.db.prepare(`SELECT * FROM messages WHERE channel_id = ? AND session_id = ? AND seq > ? AND ${filter} ORDER BY seq ASC LIMIT ?`).all(channelId, sessionId, afterSeq, deviceId, limit).map(row => this.mapMessageRow(row));
288
- }
289
- return this.db.prepare(`SELECT * FROM messages WHERE channel_id = ? AND seq > ? AND ${filter} ORDER BY seq ASC LIMIT ?`).all(channelId, afterSeq, deviceId, limit).map(row => this.mapMessageRow(row));
290
- }
291
- /** Get the highest seq number for a channel. */
292
- getMaxSeq(channelId) {
293
- const row = this.db.prepare('SELECT COALESCE(MAX(seq), 0) as max_seq FROM messages WHERE channel_id = ?').get(channelId);
294
- return row.max_seq;
295
- }
296
- /** Delete messages with seq ≤ threshold for a channel (retention pruning). */
297
- pruneMessages(channelId, beforeSeq) {
298
- const result = this.db.prepare('DELETE FROM messages WHERE channel_id = ? AND seq <= ?').run(channelId, beforeSeq);
299
- return result.changes;
300
- }
301
- /** Prune messages older than a given age (in days). Returns total rows deleted. */
302
- pruneOldMessages(maxAgeDays = 30) {
303
- const result = this.db.prepare("DELETE FROM messages WHERE created_at < datetime('now', ?)").run(`-${maxAgeDays} days`);
304
- return result.changes;
305
- }
306
- // --- Read state ---
307
- /** Update the last-read seq for a channel+session pair (per-user, shared across devices) */
308
- markRead(channelId, sessionId, seq) {
309
- this.db.prepare('INSERT INTO read_state (channel_id, session_id, last_seq) VALUES (?, ?, ?) ON CONFLICT(channel_id, session_id) DO UPDATE SET last_seq = MAX(last_seq, ?)').run(channelId, sessionId, seq, seq);
310
- }
311
- /** Get read state for all sessions in a channel: { sessionId: lastSeq } */
312
- getReadState(channelId) {
313
- const rows = this.db.prepare('SELECT session_id, last_seq FROM read_state WHERE channel_id = ?').all(channelId);
314
- const result = {};
315
- for (const row of rows) {
316
- result[row.session_id] = row.last_seq;
317
- }
318
- return result;
319
- }
320
- /** Get the max seq per session in a channel (for computing unread counts) */
321
- getSessionMaxSeqs(channelId) {
322
- const rows = this.db.prepare('SELECT session_id, MAX(seq) as max_seq FROM messages WHERE channel_id = ? AND session_id IS NOT NULL GROUP BY session_id').all(channelId);
323
- const result = {};
324
- for (const row of rows) {
325
- result[row.session_id] = row.max_seq;
326
- }
327
- return result;
328
- }
329
- // --- Pairing tokens ---
330
- /**
331
- * Store a pairing token. The token is hashed before storage —
332
- * if the DB is compromised, the attacker only gets a hash.
333
- */
334
- createPairingToken(token, channelId, expiresAt) {
335
- const hashed = this.hashToken(token);
336
- this.db.prepare('INSERT INTO pairing_tokens (token, channel_id, expires_at) VALUES (?, ?, ?)').run(hashed, channelId, expiresAt);
337
- }
338
- /**
339
- * Validate and consume a pairing token. Returns channelId if valid.
340
- * Token is single-use and time-limited.
341
- */
342
- consumePairingToken(token) {
343
- const hashed = this.hashToken(token);
344
- const row = this.db.prepare('SELECT channel_id, expires_at, used FROM pairing_tokens WHERE token = ?').get(hashed);
345
- if (!row)
346
- return null;
347
- if (row.used)
348
- return null;
349
- if (new Date(row.expires_at) < new Date())
350
- return null;
351
- this.db.prepare('UPDATE pairing_tokens SET used = 1 WHERE token = ?').run(hashed);
352
- return row.channel_id;
353
- }
354
- /**
355
- * Clean up expired pairing tokens.
356
- */
357
- cleanExpiredPairingTokens() {
358
- const now = new Date().toISOString();
359
- const info = this.db.prepare('DELETE FROM pairing_tokens WHERE expires_at < ? OR used = 1').run(now);
360
- return info.changes;
361
- }
362
- hashToken(token) {
363
- return createHash('sha256').update(token).digest('hex');
364
- }
365
115
  // --- Cleanup ---
366
- // TODO: Add deleteMessagesBeforeSeq(channelId, seq) for message retention
367
- // TODO: Add configurable max messages per channel with auto-pruning
368
116
  close() {
369
117
  this.db.close();
370
118
  }