{"version":3,"sources":["jsdelivr-header.js","/npm/eventric@0.26.0/dist/release/eventric.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,CCNA,SAA2C,EAAM,GAC1B,iBAAZ,SAA0C,iBAAX,OACxC,OAAO,QAAU,IACQ,mBAAX,QAAyB,OAAO,IAC9C,OAAO,GAAI,GACe,iBAAZ,QACd,QAAkB,SAAI,IAEtB,EAAe,SAAI,GACpB,CATD,CASG,MAAM,WACT,OAAgB,SAAU,GAEhB,IAAI,EAAmB,CAAC,EAGxB,SAAS,EAAoB,GAG5B,GAAG,EAAiB,GACnB,OAAO,EAAiB,GAAU,QAGnC,IAAI,EAAS,EAAiB,GAAY,CACzC,QAAS,CAAC,EACV,GAAI,EACJ,QAAQ,GAUT,OANA,EAAQ,GAAU,KAAK,EAAO,QAAS,EAAQ,EAAO,QAAS,GAG/D,EAAO,QAAS,EAGT,EAAO,OACf,CAaA,OATA,EAAoB,EAAI,EAGxB,EAAoB,EAAI,EAGxB,EAAoB,EAAI,GAGjB,EAAoB,EAC3B,CAxCM,CA0CN,CAEJ,SAAS,EAAQ,EAAS,GAE/B,EAAO,QAAU,EAAoB,EAGhC,EAEA,SAAS,EAAQ,EAAS,GAE/B,IAAI,EAAS,EAAU,EAAY,EAAQ,EAAmB,EAG9D,EAAU,EAAoB,GAE9B,EAAS,EAAoB,IAE7B,EAAa,EAAoB,IAEjC,EAAgB,EAAoB,IAEpC,EAAoB,CAAC,EAErB,EAAW,WACT,SAAS,IAbF,IAAS,EAAI,EAed,EAAe,EAAe,EADlC,KAAK,yBAdS,EAcsB,KAAK,wBAdvB,EAcgD,KAdpC,WAAY,OAAO,EAAG,MAAM,EAAI,UAAY,GAgB1E,KAAK,QAAU,EAAoB,IACnC,EAAgB,EAAoB,IACpC,EAAiB,EAAoB,IACrC,EAAgB,EAAoB,IACpC,KAAK,UAAY,CAAC,EAClB,KAAK,QAAU,CAAC,EAChB,KAAK,qBAAuB,CAAC,EAC7B,KAAK,wBAA0B,GAC/B,KAAK,iBAAmB,KACxB,KAAK,iBAAmB,GACxB,KAAK,mBAAqB,GAC1B,KAAK,eAAiB,IAAI,EAC1B,KAAK,kBAAkB,EAAe,UACtC,KAAK,SAAS,EAAe,CAAC,EAChC,CAoJA,OAlJA,EAAS,UAAU,UAAY,SAAS,GACtC,OAAO,KAAK,QAAU,CACxB,EAEA,EAAS,UAAU,UAAY,WAC7B,OAAO,KAAK,OACd,EAEA,EAAS,UAAU,YAAc,SAAS,GACxC,OAAO,KAAK,QAAQ,YAAY,EAClC,EAEA,EAAS,UAAU,SAAW,SAAS,EAAY,GAIjD,OAHoB,MAAhB,IACF,EAAe,CAAC,GAEX,KAAK,iBAAmB,CAC7B,MAAO,EACP,QAAS,EAEb,EAEA,EAAS,UAAU,mBAAqB,WACtC,OAAO,KAAK,gBACd,EAEA,EAAS,UAAU,QAAU,SAAS,GACpC,IAAI,EAKyC,EAJ7C,IAAK,EACH,MAAM,IAAI,MAAM,6BASlB,OAPA,EAAU,IAAI,EAAQ,IACd,4BAAqC,EAI1C,KAHM,SAAS,GACd,OAAO,EAAM,sCAAsC,EACrD,IAEF,KAAK,UAAU,GAAQ,EAChB,CACT,EAEA,EAAS,UAAU,4BAA8B,WAC/C,IAAI,EAAoC,EAOE,EAe1C,OArBK,KAAK,qBACR,KAAK,mBAAqB,IAAI,EAAW,KAAK,iBAEhD,EAAwB,IAAI,KAC5B,KAAK,QAAQ,MAAM,4CACnB,EAAqC,QAAQ,UAC7C,KAAK,mBAAmB,SAAkB,EAMvC,KALM,SAAS,GACd,OAAO,EAAqC,EAAmC,MAAK,WAClF,OAAO,EAAM,mBAAmB,mBAAmB,EAAkB,CAAC,EACxE,GACF,IAEF,EAAmC,KAAK,SAAU,GAChD,OAAO,WACL,IAAI,EAGJ,OADA,EADsB,IAAI,KACuB,EAC1C,EAAM,QAAQ,MAAM,iDAAmD,EAA2B,KAC3G,CACD,CAPuC,CAOrC,OACI,CACT,EAEA,EAAS,UAAU,oBAAsB,SAAS,GAChD,OAAO,KAAK,mBAAmB,KAAK,EACtC,EAEA,EAAS,UAAU,0BAA4B,WAC7C,OAAO,OAAO,KAAK,KAAK,UAC1B,EAEA,EAAS,UAAU,uBAAyB,SAAS,GACnD,OAAO,KAAK,qBAAuB,CACrC,EAEA,EAAS,UAAU,cAAgB,SAAS,GAC1C,IAAI,EACJ,IAAK,EACH,MAAM,IAAI,MAAM,wBAElB,OAAI,EAAkB,GACb,EAAkB,IAE3B,EAAS,EAAkB,GAAe,IAAI,EAAO,GACjD,KAAK,sBACP,EAAO,UAAU,KAAK,sBAEjB,EACT,EAEA,EAAS,UAAU,kBAAoB,SAAS,GAE9C,OADA,KAAK,iBAAiB,KAAK,GACpB,EAAe,cAAc,KAAK,wBAC3C,EAEA,EAAS,UAAU,aAAe,WAChC,OAAO,EAAc,cACvB,EAEA,EAAS,UAAU,wBAA0B,SAAS,EAAS,GAC7D,IAAI,EAAS,EAEb,OADA,EAAU,KAAK,UAAU,EAAQ,eAOoC,IAAjE,EAAO,uBAAuB,QAAQ,EAAQ,eAChD,EAAQ,IAAI,MAAM,kBAAoB,EAAQ,aAAe,iBAC7D,KAAK,QAAQ,MAAM,EAAO,KAAM,EAAM,YACtC,EAAS,EAAO,OAGZ,EAAQ,gBAAgB,EAMvB,EAAQ,EAAQ,cAAc,MAAM,EAAS,EAAQ,MAAM,MAAK,SAAS,GAC9E,OAAO,EAAS,KAAM,EACxB,IAAU,OAAE,SAAS,GACnB,OAAO,EAAS,EAClB,KATE,EAAQ,IAAI,MAAM,uBAAyB,EAAQ,aAAe,yBAA2B,EAAQ,aACrG,KAAK,QAAQ,MAAM,EAAO,KAAM,EAAM,YACtC,EAAS,EAAO,QAdhB,EAAQ,IAAI,MAAM,0DAA4D,EAAQ,aACtF,KAAK,QAAQ,MAAM,EAAO,KAAM,EAAM,YACtC,EAAS,EAAO,MAoBpB,EAEA,EAAS,UAAU,sCAAwC,SAAS,GAClE,OAAO,QAAQ,IAAI,KAAK,iBAAiB,KAAI,SAAS,GACpD,IAAI,EASJ,OARA,EAAiB,QAAQ,UAAU,MAAK,WACtC,OAAO,EAAe,QAAQ,EAAY,QAAS,EAAY,KAAM,EACvE,IACI,EAAY,YACd,EAAiB,EAAe,MAAK,WACnC,OAAO,EAAe,QAAQ,EAAY,QAAS,EAAY,KAAM,EAAY,UAAU,GAAI,EACjG,KAEK,CACT,IACF,EAEO,CAER,CAxKU,GA0KX,EAAO,QAAU,IAAI,CAGhB,EAEA,SAAS,EAAQ,EAAS,GAE/B,EAAO,QAAU,EAAoB,EAGhC,EAEA,SAAS,EAAQ,EAAS,GAE/B,IAAI,EAAqB,EAAS,EAEhC,EAAQ,GAAG,MAEb,EAAsB,EAAoB,GAE1C,EAAqB,EAAoB,IAEzC,EAAU,WACR,SAAS,EAAQ,GACf,IAAI,EAAU,EATA,EAAI,EAkBE,EARpB,KAAK,KAAO,EACZ,KAAK,yBAXS,EAWsB,KAAK,wBAXvB,EAWgD,KAXpC,WAAY,OAAO,EAAG,MAAM,EAAI,UAAY,GAY1E,EAAW,EAAoB,IAC/B,EAAa,EAAoB,IACjC,KAAK,QAAU,EAAoB,IAAI,YACvC,KAAK,gBAAiB,EACtB,KAAK,cAAe,EACpB,KAAK,IAAM,CACT,QAAkB,EAIf,KAHM,WACL,OAAO,EAAM,MAAM,MAAM,EAAO,UAClC,IAGJ,KAAK,kBAAoB,CAAC,EAC1B,KAAK,iBAAmB,CAAC,EACzB,KAAK,eAAiB,CAAC,EACvB,KAAK,gCAAkC,CAAC,EACxC,KAAK,qBAAuB,CAAC,EAC7B,KAAK,mBAAqB,GAC1B,KAAK,qBAAuB,CAAC,EAC7B,KAAK,eAAiB,KACtB,KAAK,iBAAmB,GACxB,KAAK,UAAY,IAAI,EACrB,KAAK,mBAAqB,IAAI,EAAW,KAC3C,CAkUA,OAhUA,EAAQ,UAAU,WAAa,WAC7B,IAAI,EAG0C,EAA9C,OAFA,EAAwB,IAAI,KAC5B,KAAK,QAAQ,MAAM,qBAAwB,KAAK,KAAO,kBAChD,KAAK,mBAAmB,MAAe,EAI3C,KAHM,WACL,OAAO,EAAM,wBACf,IACQ,KAAK,SAAU,GACvB,OAAO,WACL,IAAI,EAIJ,OAFA,EADsB,IAAI,KACuB,EACjD,EAAM,QAAQ,MAAM,qBAAwB,EAAM,KAAO,uBAA0B,EAA2B,MACvG,EAAM,gBAAiB,CAChC,CACD,CARc,CAQZ,MACL,EAEA,EAAQ,UAAU,iBAAmB,WACnC,IAAsC,EAKtC,OAHA,EADW,EAAoB,GACJ,qBAC3B,KAAK,eAAiB,IAAI,EAAgB,MACjB,KAAK,eAAe,WAAW,KAAM,EAAgB,QAEhF,EAEA,EAAQ,UAAU,uBAAyB,WACzC,IAAI,EAEsC,EAO1C,OARA,EAA+B,QAAQ,UACvC,KAAK,mBAAmB,SAAkB,EAMvC,KALM,SAAS,GACd,OAAO,EAA+B,EAA6B,MAAK,WACtE,OAAO,EAAM,mBAAmB,mBAAmB,EAAkB,CAAC,EACxE,GACF,IAEK,CACT,EAEA,EAAQ,UAAU,kBAAoB,SAAS,EAAiB,GAE9D,OADA,KAAK,gCAAgC,GAAmB,EACjD,IACT,EAEA,EAAQ,UAAU,mBAAqB,SAAS,GAC9C,IAAI,EAA+B,EACnC,IAAK,KAAmB,EACtB,EAAgC,EAAsB,GACtD,KAAK,kBAAkB,EAAiB,GAE1C,OAAO,IACT,EAEA,EAAQ,UAAU,mBAAqB,SAAS,GAC9C,IAAI,EAAiB,EACrB,IAAK,KAAsB,EACzB,EAAkB,EAAgB,GAClC,KAAK,iBAAiB,GAAsB,EAE9C,OAAO,IACT,EAEA,EAAQ,UAAU,iBAAmB,SAAS,GAC5C,IAAI,EAAe,EACnB,IAAK,KAAoB,EACvB,EAAgB,EAAc,GAC9B,KAAK,eAAe,GAAoB,EAE1C,OAAO,IACT,EAEA,EAAQ,UAAU,aAAe,SAAS,EAAe,GAEvD,OADA,KAAK,kBAAkB,GAAiB,EACjC,IACT,EAEA,EAAQ,UAAU,2BAA6B,SAAS,GACtD,IAAI,EAC2B,EAK/B,OAL+B,EAI5B,KAJH,EACS,WACL,OAAO,EAAU,MAAM,EAAM,IAAK,UACpC,EAEK,KAAK,UAAU,2BAA2B,EACnD,EAEA,EAAQ,UAAU,uBAAyB,SAAS,EAAiB,GACnE,IAAI,EAC2B,EAK/B,OAL+B,EAI5B,KAJH,EACS,WACL,OAAO,EAAU,MAAM,EAAM,IAAK,UACpC,EAEK,KAAK,UAAU,uBAAuB,EAAiB,EAChE,EAEA,EAAQ,UAAU,wBAA0B,SAAS,GACnD,IAAI,EAAiB,EAAW,EAEhC,IAAK,KADL,EAAU,GACc,EACtB,EAAY,EAAuB,GACnC,EAAQ,KAAK,KAAK,uBAAuB,EAAiB,IAE5D,OAAO,CACT,EAEA,EAAQ,UAAU,sCAAwC,SAAS,EAAiB,EAAa,GAC/F,IAAI,EAC2B,EAK/B,OAL+B,EAI5B,KAJH,EACS,WACL,OAAO,EAAU,MAAM,EAAM,IAAK,UACpC,EAEK,KAAK,UAAU,sCAAsC,EAAiB,EAAa,EAC5F,EAEA,EAAQ,UAAU,2BAA6B,SAAS,GACtD,OAAO,KAAK,UAAU,YAAY,EACpC,EAEA,EAAQ,UAAU,cAAgB,SAAS,GAEzC,OADA,KAAK,mBAAmB,KAAK,GACtB,IACT,EAEA,EAAQ,UAAU,0BAA4B,SAAS,GACrD,OAAO,KAAK,mBAAmB,gBAAgB,EAAc,KAC/D,EAEA,EAAQ,UAAU,iCAAmC,SAAS,GAC5D,OAAO,KAAK,gCAAgC,EAC9C,EAEA,EAAQ,UAAU,qBAAuB,WACvC,OAAO,KAAK,cACd,EAEA,EAAQ,UAAU,YAAc,WAC9B,OAAO,KAAK,SACd,EAEA,EAAQ,UAAU,uBAAyB,WACzC,IAAI,EAEyB,EAA7B,OADA,EAAgB,GAAK,UAAU,OAAS,EAAM,KAAK,UAAW,GAAK,GAC5D,IAAI,SAAkB,EAW1B,KAVM,SAAS,EAAS,GACvB,IAAI,EACJ,OAAQ,EAAM,EAAM,wBAAwB,uBAAuB,MAAM,EAAK,EAAM,KAAK,GAAe,OAAO,CAAC,SAAS,EAAK,GAC5H,OAAI,EACK,EAAO,IAEhB,EAAe,EAAmB,qBAAqB,GAChD,EAAQ,GACjB,IACF,GAEJ,EAEA,EAAQ,UAAU,qCAAuC,WACvD,IAAI,EAEyB,EAA7B,OADA,EAAgB,GAAK,UAAU,OAAS,EAAM,KAAK,UAAW,GAAK,GAC5D,IAAI,SAAkB,EAW1B,KAVM,SAAS,EAAS,GACvB,IAAI,EACJ,OAAQ,EAAM,EAAM,wBAAwB,qCAAqC,MAAM,EAAK,EAAM,KAAK,GAAe,OAAO,CAAC,SAAS,EAAK,GAC1I,OAAI,EACK,EAAO,IAEhB,EAAe,EAAmB,qBAAqB,GAChD,EAAQ,GACjB,IACF,GAEJ,EAEA,EAAQ,UAAU,QAAU,SAAS,EAAa,GAChD,IAAI,EAAkB,EAKmB,EAJzC,OAAI,KAAK,cACP,EAAgC,KAAK,mBAAmB,GACjD,QAAQ,OAAO,IAAI,MAAM,WAAa,KAAK,KAAO,0CAA4C,EAAc,oBAAuB,KAAK,UAAU,OAE3J,EAAmB,IAAI,SAAkB,EAyBtC,KAxBM,SAAS,EAAS,GACvB,IAAI,EAEJ,GADA,EAAM,4BAA4B,IAC7B,EAAM,iBAAiB,GAC1B,MAAM,IAAI,MAAM,iBAAmB,EAAc,8BAGnD,OADA,EAA0B,EAAM,8BACzB,QAAQ,UAAU,MAAK,WAC5B,OAAO,EAAM,iBAAiB,GAAa,MAAM,EAAyB,CAAC,GAC7E,IAAG,MAAK,SAAS,GAEf,OADA,EAAM,QAAQ,MAAM,oBAAqB,GAClC,EAAQ,EACjB,IAAU,OAAE,SAAS,GACnB,IAAI,EAGJ,GAFA,EAAgC,EAAM,mBAAmB,GACzD,EAAsB,YAAe,EAAc,oBAAwB,KAAK,UAAU,GAAkC,gBAAmB,EAAM,KAAO,2BACvJ,EAKL,OADA,EAAQ,EAAM,aAAa,EAAO,GAC3B,EAAO,GAJZ,EAAO,IAAI,MAAM,GAKrB,GACF,IAEF,KAAK,mBAAmB,GACjB,EACT,EAEA,EAAQ,UAAU,mBAAqB,SAAS,GAI9C,OAHI,EAAO,WACT,EAAO,SAAW,UAEb,CACT,EAEA,EAAQ,UAAU,4BAA8B,WAC9C,IAAI,EAAM,EAAU,EAAK,EAQL,EALpB,IAAK,KAFL,EAAmB,CAAC,EACpB,EAAM,KAAK,IAET,EAAO,EAAI,GACX,EAAiB,GAAY,EAmB/B,OAjBA,EAAiB,WAAa,CAC5B,QAAkB,EAOf,KANM,WACL,IAAI,EAAe,EAAiB,EAGpC,OAFA,EAAgB,UAAU,GAAI,EAAkB,GAAK,UAAU,OAAS,EAAM,KAAK,UAAW,GAAK,IACnG,EAAsB,EAAM,wBAAwB,IACzB,OAAO,MAAM,EAAqB,EAC/D,GAEF,KAAM,SAAU,GACd,OAAO,SAAS,EAAe,GAG7B,OADsB,EAAM,wBAAwB,GACzB,KAAK,EAClC,CACD,CANK,CAMH,OAEE,CACT,EAEA,EAAQ,UAAU,aAAe,SAAS,EAAO,GAG/C,OAFA,EAAM,qBAAuB,EAAM,QACnC,EAAM,QAAU,EAAoB,8BAAgC,EAAM,qBACnE,CACT,EAEA,EAAQ,UAAU,wBAA0B,SAAS,GACnD,OAAO,IAAI,EAAoB,CAC7B,cAAe,EACf,eAAgB,KAAK,kBAAkB,GACvC,QAAS,MAEb,EAEA,EAAQ,UAAU,mBAAqB,SAAS,GAC9C,IAAI,EAGyC,EAA7C,OAFA,EAAyB,EAAsB,OAAE,WAAY,IAC7D,KAAK,iBAAiB,KAAK,GACpB,EAAuB,MAAe,EAI1C,KAHM,WACL,OAAO,EAAM,iBAAiB,OAAO,EAAM,iBAAiB,QAAQ,GAAyB,EAC/F,GAEJ,EAEA,EAAQ,UAAU,MAAQ,SAAS,EAAW,GAC5C,OAAO,IAAI,SAAkB,EAyB1B,KAxBM,SAAS,EAAS,GAGvB,GAFA,EAAM,QAAQ,MAAM,YAAa,GACjC,EAAM,4BAA4B,GAC7B,EAAM,eAAe,GAI1B,OAAO,QAAQ,UAAU,MAAK,WAC5B,OAAO,EAAM,eAAe,GAAW,MAAM,EAAM,IAAK,CAAC,GAC3D,IAAG,MAAK,SAAS,GAEf,OADA,EAAM,QAAQ,MAAM,mBAAqB,EAAY,gBAAkB,GAChE,EAAQ,EACjB,IAAU,OAAE,SAAS,GACnB,IAAI,EAA+B,EAGnC,GAFA,EAAgC,EAAM,mBAAmB,GACzD,EAAoB,UAAa,EAAY,oBAAwB,KAAK,UAAU,GAAkC,gBAAmB,EAAM,KAAO,2BACjJ,EAKL,OADA,EAAQ,EAAM,aAAa,EAAO,GAC3B,EAAO,GAJZ,EAAO,IAAI,MAAM,GAKrB,IAlBE,EAAO,IAAI,MAAM,eAAiB,EAAY,8BAmBlD,IAxBiB,IAAU,CA0B/B,EAEA,EAAQ,UAAU,4BAA8B,SAAS,GACvD,IAAK,KAAK,eACR,MAAM,IAAI,MAAM,WAAa,KAAK,KAAO,wCAA0C,EAEvF,EAEA,EAAQ,UAAU,QAAU,WAC1B,OAAO,QAAQ,IAAI,KAAK,kBAAkB,MAAe,EAItD,KAHM,WACL,OAAO,EAAM,UAAU,SACzB,IACQ,KAAK,SAAU,GACvB,OAAO,WACL,OAAO,EAAM,cAAe,CAC9B,CACD,CAJc,CAIZ,OAR4C,IAAU,CAS3D,EAEO,CAER,CAhWS,GAkWV,EAAO,QAAU,CAGZ,EAEA,SAAS,EAAQ,EAAS,GAE/B,EAAO,QAAU,EAAoB,EAGhC,EAEA,SAAS,EAAQ,EAAS,GAE/B,IAAI,EAAW,EAAqB,EAAoB,EACtD,EAAO,SAAS,EAAI,GAAK,OAAO,WAAY,OAAO,EAAG,MAAM,EAAI,UAAY,CAAG,EAEjF,EAAY,EAAoB,GAEhC,EAAgB,EAAoB,IAEpC,EAAqB,EAAoB,IAEzC,EAAsB,WACpB,SAAS,EAAoB,GAC3B,KAAK,KAAO,EAAK,KAAK,KAAM,MAC5B,KAAK,OAAS,EAAK,KAAK,OAAQ,MAChC,KAAK,KAAO,EAAK,KAAK,KAAM,MAC5B,KAAK,QAAU,EAAoB,IAAI,YACvC,KAAK,eAAiB,EAAO,cAC7B,KAAK,gBAAkB,EAAO,eAC9B,KAAK,SAAW,EAAO,QACvB,KAAK,OAAS,KAAK,SAAS,sBAC9B,CAuGA,OArGA,EAAoB,UAAU,KAAO,SAAS,GAC5C,OAAO,IAAI,SAAkB,EAgC1B,KA/BM,SAAS,EAAS,GACvB,OAAO,EAAM,OAAO,8BAA8B,GAAa,SAAS,EAAO,GAC7E,IAAI,EAAW,EAAuB,EAAa,EACnD,GAAI,EACF,EAAO,QAGT,GAAsB,MAAhB,EAAuB,EAAa,YAAS,EAAnD,CAMA,IADA,EAAwB,KACnB,GAFL,EAAe,EAAmB,qBAAqB,IAEjC,OAAS,EAAG,GAAK,EAAG,IAAM,EAE9C,IADA,EAAc,EAAa,IACX,KAAK,QAAQ,EAAM,eAAiB,YAAc,EAAG,CACnE,EAAwB,EACxB,KACF,CAEF,GAA6B,MAAzB,EAQJ,OAJA,EAAY,IAAI,EAAU,EAAM,SAAU,EAAM,eAAgB,EAAM,kBAC5D,MAAM,GAChB,EAAU,kBAAkB,GAC5B,EAAM,wCAAwC,GACvC,EAAQ,EAAU,UAPvB,EAAO,IAAI,MAAM,qBAAuB,EAAM,eAAiB,YAAc,EAAc,iDAAmD,EAAsB,KAAO,yBAA2B,EAAsB,IAX9N,MAFE,EAAO,IAAI,MAAM,yCAA2C,EAAM,eAAiB,SAAW,EAAc,cAqBhH,GACF,IA/BiB,IAAU,CAiC/B,EAEA,EAAoB,UAAU,OAAS,SAAS,EAAQ,GAItD,OAHU,MAAN,IACF,EAAK,MAEA,QAAQ,UAAU,MAAe,EAiBrC,KAhBM,WACL,IAAI,EAEJ,GAAyC,mBADzC,EAAY,IAAI,EAAU,EAAM,SAAU,EAAM,eAAgB,EAAM,kBACjD,SAAS,OAC5B,MAAM,IAAI,MAAM,mCAQlB,OANU,MAAN,EACF,EAAU,MAAM,GAEhB,EAAU,MAAM,EAAc,gBAEhC,EAAM,wCAAwC,GACvC,QAAQ,QAAQ,EAAU,SAAS,OAAO,IAAS,MAAK,WAC7D,OAAO,EAAU,QACnB,GACF,IAhB4B,IAAU,CAkB1C,EAEA,EAAoB,UAAU,wCAA0C,SAAS,GAC/E,OAAO,EAAU,SAAS,OAAkB,EAIzC,KAHM,WACL,OAAO,EAAM,KAAK,EACpB,GAHgC,IAAU,CAK9C,EAEA,EAAoB,UAAU,KAAO,SAAS,GAC5C,OAAO,QAAQ,UAAU,MAAe,EA6BrC,KA5BM,WACL,IAAI,EAAc,EAAsB,EACxC,IAAK,EACH,MAAM,IAAI,MAAM,mCAAqC,EAAM,gBAG7D,KAAsB,OADtB,EAAe,EAAU,sBACI,EAAa,YAAS,GACjD,MAAM,IAAI,MAAM,sDAAwD,EAAM,eAAiB,YAAc,EAAU,IAYzH,OAVA,EAAM,QAAQ,MAAM,6BAA+B,EAAa,OAAS,gCAAkC,EAAM,gBACjH,EAAuB,QAAQ,UAC/B,EAAoB,GACpB,EAAa,SAAQ,SAAS,GAC5B,OAAO,EAAuB,EAAqB,MAAK,WACtD,OAAO,EAAM,OAAO,gBAAgB,GAAa,MAAK,SAAS,GAC7D,OAAO,EAAkB,KAAK,EAChC,GACF,GACF,IACO,EAAqB,MAAK,WAM/B,OALA,EAAkB,SAAQ,SAAS,GACjC,OAAO,EAAM,SAAS,cAAc,mBAAmB,GAAoB,OAAE,SAAS,GACpF,OAAO,EAAM,QAAQ,MAAM,EAAO,KAAM,EAAM,MAChD,GACF,IACO,EAAU,EACnB,GACF,IA5B4B,IAAU,CA8B1C,EAEO,CAER,CAnHqB,GAqHtB,EAAO,QAAU,CAGZ,EAEA,SAAS,EAAQ,EAAS,GAE/B,EAAO,QAAU,EAAoB,EAGhC,EAEA,SAAS,EAAQ,EAAS,GAE/B,IAAI,EAAW,EAGf,EAAc,EAAoB,GAElC,EAAY,WACV,SAAS,EAAU,EAAU,EAAO,GAL7B,IAAS,EAAI,EAMlB,KAAK,SAAW,EAChB,KAAK,MAAQ,EACb,KAAK,iBARS,EAQc,KAAK,gBARf,EAQgC,KARpB,WAAY,OAAO,EAAG,MAAM,EAAI,UAAY,GAS1E,KAAK,iBAAmB,GACxB,KAAK,SAAW,IAAI,EACpB,KAAK,SAAS,iBAAmB,KAAK,eACxC,CA0DA,OAxDA,EAAU,UAAU,MAAQ,SAAS,GAEnC,OADA,KAAK,GAAK,EACH,KAAK,SAAS,IAAM,KAAK,EAClC,EAEA,EAAU,UAAU,gBAAkB,SAAS,EAAiB,GAC9D,IAAI,EAAW,EAOf,OANA,EAAY,CACV,GAAI,KAAK,GACT,KAAM,KAAK,OAEb,EAAc,KAAK,mBAAmB,EAAiB,EAAoB,GAC3E,KAAK,iBAAiB,KAAK,GACpB,KAAK,mBAAmB,EAAiB,EAClD,EAEA,EAAU,UAAU,mBAAqB,SAAS,EAAiB,EAA8B,GAC/F,IAAI,EAA+B,EAEnC,KADA,EAAgC,KAAK,SAAS,iCAAiC,IAE7E,MAAM,IAAI,MAAM,iCAAmC,EAAkB,0BAIvE,OAFA,EAAU,CAAC,EACX,EAA8B,MAAM,EAAS,CAAC,IACvC,IAAI,EAAY,CACrB,KAAM,EACN,UAAW,EACX,QAAS,KAAK,SAAS,KACvB,QAAS,GAEb,EAEA,EAAU,UAAU,mBAAqB,SAAS,EAAiB,GACjE,GAAI,KAAK,SAAS,SAAW,GAC3B,OAAO,KAAK,SAAS,SAAW,GAAiB,EAErD,EAEA,EAAU,UAAU,mBAAqB,WACvC,OAAO,KAAK,gBACd,EAEA,EAAU,UAAU,kBAAoB,SAAS,GAC/C,IAAI,EAAa,EAAG,EAAK,EAEzB,IADA,EAAU,GACL,EAAI,EAAG,EAAM,EAAa,OAAQ,EAAI,EAAK,IAC9C,EAAc,EAAa,GAC3B,EAAQ,KAAK,KAAK,kBAAkB,IAEtC,OAAO,CACT,EAEA,EAAU,UAAU,kBAAoB,SAAS,GAC/C,OAAO,KAAK,mBAAmB,EAAY,KAAM,EACnD,EAEO,CAER,CApEW,GAsEZ,EAAO,QAAU,CAGZ,EAEA,SAAS,EAAQ,EAAS,GAE/B,EAAO,QAAU,EAAoB,EAGhC,EAEA,SAAS,EAAQ,GAEtB,IAAI,EAEJ,EACE,SAAqB,GACnB,KAAK,GAAK,EAAO,GACjB,KAAK,KAAO,EAAO,KACnB,KAAK,QAAU,EAAO,QACtB,KAAK,UAAY,EAAO,UACxB,KAAK,QAAU,EAAO,QACtB,KAAK,WAAY,IAAI,MAAO,SAC9B,EAMF,EAAO,QAAU,CAGZ,EAEA,SAAS,EAAQ,EAAS,GAE/B,EAAO,QAAU,EAAoB,GAGhC,EAEA,SAAS,EAAQ,GAEtB,IAAI,EAEJ,EAAgB,WACd,SAAS,IAAiB,CAmB1B,OAjBA,EAAc,UAAU,cAAgB,uCAExC,EAAc,UAAU,aAAe,WAYrC,OAVO,KAAK,cAAc,QAAQ,SAAS,SAAS,GAClD,IAAI,EAEJ,OADA,EAAe,KAAK,MAAsB,GAAhB,KAAK,UACJ,MAAvB,EACK,EAAa,SAAS,KAEJ,EAAf,EAAqB,GAChB,SAAS,GAE5B,GAEF,EAEO,CAER,CAtBe,GAwBhB,EAAO,QAAU,IAAI,CAGhB,EAEA,SAAS,EAAQ,GAEtB,IAAI,EAEJ,EAAqB,WACnB,SAAS,IAAsB,CAQ/B,OANA,EAAmB,UAAU,qBAAuB,SAAS,GAC3D,OAAO,EAAa,MAAK,SAAS,EAAkB,GAClD,OAAO,EAAiB,GAAK,EAAkB,EACjD,GACF,EAEO,CAER,CAXoB,GAarB,EAAO,QAAU,IAAI,CAGhB,EAEA,SAAS,EAAQ,EAAS,GAE/B,EAAO,QAAU,EAAoB,EAGhC,EAEA,SAAS,EAAQ,EAAS,GAE/B,EAAO,QAAU,EAAoB,GAGhC,EAEA,SAAS,EAAQ,EAAS,GAE/B,IAAI,EAAU,EAEd,EAAa,EAAoB,IAEjC,EAAW,WACT,SAAS,IACP,KAAK,aAAe,GACpB,KAAK,cAAgB,EACrB,KAAK,mBAAqB,QAAQ,UAClC,KAAK,cAAe,CACtB,CAuHA,OArHA,EAAS,UAAU,2BAA6B,SAAS,GACvD,OAAO,KAAK,WAAW,IAAK,EAC9B,EAEA,EAAS,UAAU,uBAAyB,SAAS,EAAW,GAC9D,OAAO,KAAK,WAAW,EAAW,EACpC,EAEA,EAAS,UAAU,sCAAwC,SAAS,EAAW,EAAa,GAC1F,OAAO,KAAK,WAAW,EAAY,IAAM,EAAa,EACxD,EAEA,EAAS,UAAU,WAAa,SAAS,EAAW,GAClD,OAAO,IAAI,SAAkB,EAW1B,KAVM,SAAS,GACd,IAAI,EAOJ,OANA,EAAa,IAAI,EAAW,CAC1B,UAAW,EACX,mBAAoB,EACpB,aAAc,EAAM,yBAEtB,EAAM,aAAa,KAAK,GACjB,EAAQ,EAAW,aAC5B,IAViB,IAAU,CAY/B,EAEA,EAAS,UAAU,qBAAuB,WACxC,OAAO,KAAK,eACd,EAEA,EAAS,UAAU,mBAAqB,SAAS,GAC/C,OAAO,IAAI,SAAkB,EAS1B,KARM,SAAS,EAAS,GACvB,IAAI,EAKJ,OAJA,EAAM,yBAAyB,GAC/B,EAAmB,WACjB,OAAO,EAAM,mBAAmB,GAAa,KAAK,GAAgB,MAAE,EACtE,EACO,EAAM,wBAAwB,EACvC,IARiB,IAAU,CAU/B,EAEA,EAAS,UAAU,yBAA2B,SAAS,GACrD,IAAI,EAAc,EAClB,GAAI,KAAK,aAKP,MAJA,EAAe,2CAA6C,EAAY,KAAO,kBAAqB,KAAK,UAAU,EAAY,UAC1F,OAAhC,EAAM,EAAY,WAAqB,EAAI,QAAK,KACnD,GAAgB,qBAAuB,EAAY,UAAU,IAEzD,IAAI,MAAM,EAEpB,EAEA,EAAS,UAAU,mBAAqB,SAAS,GAC/C,OAAO,QAAQ,UAAU,MAAe,EAQrC,KAPM,WACL,IAAI,EAEJ,OADA,EAAc,EAAM,8BAA8B,GAC3C,QAAQ,IAAI,EAAY,KAAI,SAAS,GAC1C,OAAO,EAAW,mBAAmB,EACvC,IACF,IAP4B,IAAU,CAS1C,EAEA,EAAS,UAAU,8BAAgC,SAAS,GAC1D,IAAI,EAAK,EAYT,OARA,GAHA,EAAc,KAAK,aAAa,QAAO,SAAS,GAC9C,MAAgC,MAAzB,EAAW,SACpB,KAC0B,OAAO,KAAK,aAAa,QAAO,SAAS,GACjE,OAAO,EAAW,YAAc,EAAY,IAC9C,MACqC,OAAhC,EAAM,EAAY,WAAqB,EAAI,QAAK,KACnD,EAAc,EAAY,OAAO,KAAK,aAAa,QAAO,SAAS,GACjE,OAAO,EAAW,YAAe,EAAY,KAAO,IAAM,EAAY,UAAU,EAClF,MAEK,CACT,EAEA,EAAS,UAAU,wBAA0B,SAAS,GACpD,OAAO,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,EAChE,EAEA,EAAS,UAAU,YAAc,SAAS,GACxC,OAAO,QAAQ,UAAU,MAAe,EAMrC,KALM,WACL,OAAO,EAAM,aAAe,EAAM,aAAa,QAAO,SAAS,GAC7D,OAAO,EAAW,eAAiB,CACrC,GACF,IAL4B,IAAU,CAO1C,EAEA,EAAS,UAAU,QAAU,WAC3B,OAAO,KAAK,4BAA4B,MAAe,EAIpD,KAHM,WACL,OAAO,EAAM,cAAe,CAC9B,IAH2C,IAAU,CAKzD,EAEA,EAAS,UAAU,0BAA4B,WAC7C,IAAI,EAE2C,EAA/C,OADA,EAA2B,KAAK,oBACA,MAAe,EAM5C,KALM,WACL,GAAI,EAAM,qBAAuB,EAC/B,OAAO,EAAM,2BAEjB,GAEJ,EAEO,CAER,CA/HU,GAiIX,EAAO,QAAU,CAGZ,EAEA,SAAS,EAAQ,GAEtB,IAAI,EAEJ,EACE,SAAoB,GAClB,KAAK,UAAY,EAAI,UAAW,KAAK,mBAAqB,EAAI,mBAAoB,KAAK,aAAe,EAAI,YAC5G,EAMF,EAAO,QAAU,CAGZ,EAEA,SAAS,EAAQ,EAAS,GAE/B,EAAO,QAAU,EAAoB,GAGhC,EAEA,SAAS,EAAQ,EAAS,GAE/B,IAAI,EAAmB,EAEvB,EAAgB,EAAoB,IAEpC,EAAoB,WAClB,SAAS,EAAkB,GACzB,KAAK,SAAW,EAChB,KAAK,QAAU,EAAoB,IAAI,YACvC,KAAK,kBAAoB,CAAC,EAC1B,KAAK,qBAAuB,CAAC,CAC/B,CAyJA,OAvJA,EAAkB,UAAU,mBAAqB,SAAS,EAAoB,GAC5E,IAAI,EAAa,EAAM,EAAQ,EAAY,EAAc,EAiB0B,EAhBnF,GAAI,KAAK,SAAS,IAEhB,IAAK,KADL,EAAM,KAAK,SAAS,IAElB,EAAO,EAAI,GACX,EAAmB,GAAU,EAYjC,OATA,EAAe,EAAc,eAC7B,EAAc,KACd,EAAmB,kCAAoC,SAAS,GAC9D,IAAK,EACH,MAAM,IAAI,MAAM,wBAElB,OAAO,EAAc,CACvB,EACA,EAAa,KACN,KAAK,4BAA4B,EAAoB,GAAQ,MAAe,EAIhF,KAHM,WACL,OAAO,EAAM,+BAA+B,EAC9C,IACQ,KAAK,SAAU,GACvB,OAAO,SAAS,GAEd,OADA,EAAa,EACN,EAAM,wCAAwC,EAAoB,EAAY,EACvF,CACD,CALc,CAKZ,OAAO,KAAK,SAAU,GACvB,OAAO,WACL,OAAO,EAAM,mCAAmC,EAAc,EAAoB,EAAY,EAChG,CACD,CAJc,CAIZ,OAAO,KAAK,SAAU,GACvB,OAAO,WACL,OAAO,EAAM,qBAAqB,GAAgB,CACpD,CACD,CAJc,CAIZ,OAAO,MAAK,WACb,OAAO,EAAmB,eAAgB,CAC5C,IAAG,MAAK,WACN,OAAO,CACT,GACF,EAEA,EAAkB,UAAU,4BAA8B,SAAS,EAAY,GAC7E,OAAO,IAAI,SAAQ,SAAS,GAC1B,OAAK,EAAW,WAGT,EAAW,WAAW,GAAQ,WACnC,OAAO,EAAQ,EACjB,IAJS,EAAQ,EAKnB,GACF,EAEA,EAAkB,UAAU,+BAAiC,SAAS,GACpE,OAAO,IAAI,SAAQ,SAAS,GAC1B,IAAI,EAAW,EAAY,EAAK,EAEhC,IAAK,KADL,EAAa,GACD,EACV,EAAQ,EAAW,GACa,IAA3B,EAAI,QAAQ,WAAsC,mBAAV,IAC3C,EAAY,EAAI,QAAQ,UAAW,IACnC,EAAW,KAAK,IAGpB,OAAO,EAAQ,EACjB,GACF,EAEA,EAAkB,UAAU,wCAA0C,SAAS,EAAY,EAAY,GACrG,IAMiC,EAAjC,OALI,EACW,KAAK,SAAS,qCAAqC,EAAY,GAE/D,KAAK,SAAS,uBAAuB,IAElC,MAAe,EAc9B,KAbM,SAAS,GACd,IAAI,EACJ,GAAK,GAAwC,IAAxB,EAAa,OASlC,OANA,EAAuC,QAAQ,UAC/C,EAAa,SAAQ,SAAS,GAC5B,OAAO,EAAuC,EAAqC,MAAK,WACtF,OAAO,EAAM,8BAA8B,EAAa,EAC1D,GACF,IACO,CACT,GAEJ,EAEA,EAAkB,UAAU,mCAAqC,SAAS,EAAc,EAAY,EAAY,GAC9G,IAAI,EAAoB,EACO,EAoB/B,OApB+B,EAI5B,KAJH,EACS,SAAS,GACd,OAAO,EAAM,8BAA8B,EAAa,EAC1D,EAEF,KAAK,kBAAkB,GAAgB,GACvC,EAA2C,QAAQ,UACnD,EAAW,QAAQ,SAAU,GAC3B,OAAO,SAAS,GACd,OAAO,EAA2C,EAAyC,MAAK,WAC9F,OAAI,EACK,EAAM,SAAS,sCAAsC,EAAW,EAAa,GAE7E,EAAM,SAAS,uBAAuB,EAAW,EAE5D,IAAG,MAAK,SAAS,GACf,OAAO,EAAM,kBAAkB,GAAc,KAAK,EACpD,GACF,CACD,CAZkB,CAYhB,OACI,CACT,EAEA,EAAkB,UAAU,8BAAgC,SAAS,EAAa,GAChF,OAAO,QAAQ,UAAU,MAAe,EAOrC,KANM,WAIL,OAHK,EAAW,SAAW,EAAY,OACrC,EAAM,QAAQ,KAAK,4BAA8B,EAAY,KAAO,gBAE/D,EAAW,SAAW,EAAY,MAAM,EACjD,IAN4B,IAAU,CAQ1C,EAEA,EAAkB,UAAU,YAAc,SAAS,GACjD,OAAO,KAAK,qBAAqB,EACnC,EAEA,EAAkB,UAAU,gBAAkB,SAAS,GACrD,IAAI,EAAG,EAAK,EAAK,EAAc,EAC/B,IAAK,EACH,OAAO,QAAQ,OAAO,IAAI,MAAM,0BAElC,IAAK,KAAK,kBAAkB,GAC1B,OAAO,QAAQ,OAAO,IAAI,MAAM,uBAA0B,EAAe,yBAI3E,IAFA,EAAsB,GAEjB,EAAI,EAAG,GADZ,EAAM,KAAK,kBAAkB,IACP,OAAQ,EAAI,EAAK,IACrC,EAAe,EAAI,GACnB,EAAoB,KAAK,KAAK,SAAS,2BAA2B,IAIpE,cAFO,KAAK,kBAAkB,UACvB,KAAK,qBAAqB,GAC1B,QAAQ,IAAI,EACrB,EAEO,CAER,CAjKmB,GAmKpB,EAAO,QAAU,CAGZ,EAEA,SAAS,EAAQ,EAAS,GAE/B,EAAO,QAAU,EAAoB,GAGhC,EAEA,SAAS,EAAQ,EAAS,GAE/B,IAAI,EAEJ,EAAS,WAGP,SAAS,EAAO,GACd,IAAI,EAAY,EAChB,KAAK,aAAe,EACpB,EAAa,EAAoB,IACjC,EAAiB,EAAoB,IACrC,KAAK,QAAU,CAAC,EAChB,KAAK,kBAAoB,CAAC,EAC1B,KAAK,mBAAqB,IAAI,EAAW,MACzC,KAAK,UAAU,EAAe,QAC9B,KAAK,uCACP,CAiDA,OA7DA,EAAO,uBAAyB,CAAC,UAAW,QAAS,yBAA0B,wCAc/E,EAAO,UAAU,sCAAwC,WACvD,OAAO,EAAO,uBAAuB,SAAkB,EAMpD,KALM,SAAS,GACd,OAAO,EAAM,GAAgB,WAC3B,OAAO,EAAM,KAAK,EAAc,UAClC,CACF,IAL2C,IAAU,CAOzD,EAEA,EAAO,UAAU,2BAA6B,SAAS,GACrD,OAAO,KAAK,QAAQ,UAAU,KAAK,aAAc,EACnD,EAEA,EAAO,UAAU,uBAAyB,SAAS,EAAiB,GAClE,OAAO,KAAK,QAAQ,UAAU,KAAK,aAAc,EAAiB,EACpE,EAEA,EAAO,UAAU,sCAAwC,SAAS,EAAiB,EAAa,GAC9F,OAAO,KAAK,QAAQ,UAAU,KAAK,aAAc,EAAiB,EAAa,EACjF,EAEA,EAAO,UAAU,2BAA6B,SAAS,GACrD,OAAO,KAAK,QAAQ,YAAY,EAClC,EAEA,EAAO,UAAU,KAAO,SAAS,EAAc,GAC7C,OAAO,KAAK,QAAQ,IAAI,CACtB,YAAa,KAAK,aAClB,aAAc,EACd,KAAM,MAAM,UAAU,MAAM,KAAK,IAErC,EAEA,EAAO,UAAU,UAAY,SAAS,GAEpC,OADA,KAAK,QAAU,EACR,IACT,EAEA,EAAO,UAAU,qBAAuB,SAAS,EAAkB,GACjE,OAAO,KAAK,mBAAmB,mBAAmB,EAAkB,EACtE,EAEA,EAAO,UAAU,0BAA4B,SAAS,GACpD,OAAO,KAAK,mBAAmB,gBAAgB,EAAc,KAC/D,EAEO,CAER,CAhEQ,GAkET,EAAO,QAAU,CAGZ,EAEA,SAAS,EAAQ,EAAS,GAE/B,IAAiD,IASxC,WACT,OAAgB,SAAU,GAEhB,IAAI,EAAmB,CAAC,EAGxB,SAAS,EAAoB,GAG5B,GAAG,EAAiB,GACnB,OAAO,EAAiB,GAAU,QAGnC,IAAI,EAAS,EAAiB,GAAY,CACzC,QAAS,CAAC,EACV,GAAI,EACJ,QAAQ,GAUT,OANA,EAAQ,GAAU,KAAK,EAAO,QAAS,EAAQ,EAAO,QAAS,GAG/D,EAAO,QAAS,EAGT,EAAO,OACf,CAaA,OATA,EAAoB,EAAI,EAGxB,EAAoB,EAAI,EAGxB,EAAoB,EAAI,GAGjB,EAAoB,EAC3B,CAxCM,CA0CN,CAEJ,SAAS,EAAQ,EAAS,GAE/B,EAAO,QAAU,CACf,SAAU,EAAoB,GAC9B,OAAQ,EAAoB,GAIzB,EAEA,SAAS,EAAQ,EAAS,GAE/B,IAAI,EAAwB,EAC1B,EAAQ,GAAG,MAEb,EAAS,EAAoB,GAE7B,EAAyB,WACvB,SAAS,IAA0B,CAcnC,OAZA,EAAuB,UAAU,cAAgB,SAAS,GACxD,KAAK,iBAAmB,CAC1B,EAEA,EAAuB,UAAU,QAAU,WACzC,IAAI,EAAa,EAAK,EAAa,EAAiB,EAAe,EAAG,EAItE,OAHA,EAAc,UAAU,GAAI,EAAM,GAAK,UAAU,OAAS,EAAM,KAAK,UAAW,EAAG,EAAI,UAAU,OAAS,IAAM,EAAI,EAAG,IAAK,EAAU,UAAU,KAChJ,EAAkB,EAAI,GAAI,EAAc,EAAI,GAC5C,EAAgB,EAAO,iBAAiB,EAAa,EAAiB,GAC/D,EAAO,QAAQ,EAAe,EACvC,EAEO,CAER,CAjBwB,GAmBzB,EAAO,QAAU,IAAI,CAGhB,EAEA,SAAS,EAAQ,GAEtB,IAAI,EACF,EAAQ,GAAG,MAEb,EAAS,WACP,SAAS,IACP,KAAK,aAAe,GACpB,KAAK,cAAgB,CACvB,CA2DA,OAzDA,EAAO,UAAU,UAAY,SAAS,EAAW,GAC/C,OAAO,IAAI,SAAkB,EAW1B,KAVM,SAAS,GACd,IAAI,EAOJ,OANA,EAAa,CACX,UAAW,EACX,mBAAoB,EACpB,aAAc,EAAM,wBAEtB,EAAM,aAAa,KAAK,GACjB,EAAQ,EAAW,aAC5B,IAViB,IAAU,CAY/B,EAEA,EAAO,UAAU,QAAU,SAAS,EAAW,GAC7C,IAAI,EAEJ,OADA,EAAc,KAAK,wBAAwB,GACpC,QAAQ,IAAI,EAAY,KAAI,SAAS,GAC1C,OAAO,EAAW,mBAAmB,EACvC,IACF,EAEA,EAAO,UAAU,wBAA0B,SAAS,GAClD,OAAI,EACK,KAAK,aAAa,QAAO,SAAS,GACvC,OAAO,EAAW,YAAc,CAClC,IAEO,KAAK,YAEhB,EAEA,EAAO,UAAU,YAAc,SAAS,GACtC,OAAO,IAAI,SAAkB,EAO1B,KANM,SAAS,GAId,OAHA,EAAM,aAAe,EAAM,aAAa,QAAO,SAAS,GACtD,OAAO,EAAW,eAAiB,CACrC,IACO,GACT,IANiB,IAAU,CAQ/B,EAEA,EAAO,UAAU,qBAAuB,WACtC,OAAO,KAAK,eACd,EAEA,EAAO,UAAU,iBAAmB,WAMlC,OAJa,GAAK,UAAU,OAAS,EAAM,KAAK,UAAW,GAAK,IACxC,QAAO,SAAS,GACtC,OAAoB,MAAb,CACT,IACkB,KAAK,IACzB,EAEO,CAER,CAjEQ,GAmET,EAAO,QAAU,IAAI,CAGhB,EAEA,SAAS,EAAQ,EAAS,GAE/B,IAAI,EAAsB,EAAU,EAClC,EAAQ,GAAG,MAEb,EAAW,EAAoB,GAE/B,EAAS,EAAoB,GAE7B,EAAuB,WACrB,SAAS,IAAwB,CA4BjC,OA1BA,EAAqB,UAAU,IAAM,SAAS,GAC5C,OAAO,IAAI,SACF,SAAS,EAAS,GACvB,OAAO,EAAS,iBAAiB,GAAY,SAAS,EAAO,GAC3D,OAAI,EACK,EAAO,GAEP,EAAQ,EAEnB,GACF,GAEJ,EAEA,EAAqB,UAAU,UAAY,WACzC,IAAI,EAAa,EAAK,EAAa,EAAiB,EAAe,EAAiB,EAIpF,OAHA,EAAc,UAAU,GAAI,EAAM,GAAK,UAAU,OAAS,EAAM,KAAK,UAAW,EAAG,EAAI,UAAU,OAAS,IAAM,EAAI,EAAG,IAAK,EAAkB,UAAU,KACxJ,EAAkB,EAAI,GAAI,EAAc,EAAI,GAC5C,EAAgB,EAAO,iBAAiB,EAAa,EAAiB,GAC/D,EAAO,UAAU,EAAe,EACzC,EAEA,EAAqB,UAAU,YAAc,SAAS,GACpD,OAAO,EAAO,YAAY,EAC5B,EAEO,CAER,CA/BsB,GAiCvB,EAAO,QAAU,IAAI,CAGhB,GAEN,EAzNE,EAAO,QAAU,GA4Nd,EAEA,SAAS,EAAQ,EAAS,GAE/B,EAAO,QAAU,EAAoB,GAGhC,EAEA,SAAS,EAAQ,GAEtB,IAAI,EAEJ,EAAS,WAQP,SAAS,IACP,KAAK,YAAY,OACnB,CAkCA,OA3CA,EAAO,UAAU,WAAa,CAC5B,MAAO,EACP,KAAM,EACN,KAAM,EACN,MAAO,GAOT,EAAO,UAAU,YAAc,SAAS,GACtC,QAAkC,IAA9B,KAAK,WAAW,GAClB,MAAM,IAAI,MAAM,8BAElB,OAAO,KAAK,UAAY,KAAK,WAAW,EAC1C,EAEA,EAAO,UAAU,MAAQ,WACvB,OAAO,QAAe,MAAE,MAAM,QAAS,UACzC,EAEA,EAAO,UAAU,KAAO,WACtB,KAAI,KAAK,UAAY,GAGrB,OAAO,QAAc,KAAE,MAAM,QAAS,UACxC,EAEA,EAAO,UAAU,KAAO,WACtB,KAAI,KAAK,UAAY,GAGrB,OAAO,QAAc,KAAE,MAAM,QAAS,UACxC,EAEA,EAAO,UAAU,MAAQ,WACvB,KAAI,KAAK,UAAY,GAGrB,OAAO,QAAa,IAAE,MAAM,QAAS,UACvC,EAEO,CAER,CA9CQ,GAgDT,EAAO,QAAU,IAAI,CAGhB,EAEA,SAAS,EAAQ,EAAS,GAE/B,EAAO,QAAU,EAAoB,GAGhC,EAEA,SAAS,EAAQ,EAAS,GAE/B,IAAI,EAAe,EACjB,EAAQ,GAAG,MAEb,EAAqB,EAAoB,IAEzC,EAAgB,WACd,SAAS,IACP,KAAK,KAAO,QACd,CA+CA,OA7CA,EAAc,UAAU,uBAAyB,WAC/C,IAAI,EAAuB,EAAe,EAWU,EAApD,OAVA,EAAgB,GAAK,UAAU,OAAS,EAAM,KAAK,UAAW,GAAK,GACnE,EAAgC,QAAQ,UACxC,EAAwB,GACxB,KAAK,kBAAkB,SAAQ,SAAS,GACtC,OAAO,EAAgC,EAA8B,MAAK,WACxE,OAAO,EAAQ,uBAAuB,MAAM,EAAS,GAAe,MAAK,SAAS,GAChF,OAAO,EAAsB,KAAK,EACpC,GACF,GACF,IACO,EAA8B,MAAe,EAOjD,KANM,WACL,IAAI,EAGJ,OAFA,EAAe,EAAM,8BAA8B,GACnD,EAAe,EAAmB,qBAAqB,EAEzD,GAEJ,EAEA,EAAc,UAAU,uBAAyB,SAAS,EAAW,GACnE,IAAI,EAIJ,OAHA,EAA0B,KAAK,kBAAkB,KAAI,SAAS,GAC5D,OAAO,EAAQ,uBAAuB,EAAW,EACnD,IACO,QAAQ,IAAI,EACrB,EAEA,EAAc,UAAU,gBAAkB,WACxC,IAAkB,EAGlB,OAFA,EAAW,EAAoB,IACP,4BACJ,KAAI,SAAS,GAC/B,OAAO,EAAS,cAAc,EAChC,GACF,EAEA,EAAc,UAAU,8BAAgC,SAAS,GAC/D,OAAO,EAAsB,QAAO,SAAS,EAAiB,GAC5D,OAAO,EAAgB,OAAO,EAChC,GAAG,GACL,EAEO,CAER,CApDe,GAsDhB,EAAO,QAAU,CAGZ,EAEA,SAAS,EAAQ,GAEtB,IAAI,EAEJ,EAAgB,WAKd,SAAS,IACP,KAAK,cAAgB,EACvB,CA8DA,OApEA,EAAc,UAAU,oBAAsB,CAC5C,qBAAsB,GAOxB,EAAc,UAAU,WAAa,SAAS,GAE5C,OADA,KAAK,SAAW,EACT,IAAI,SAAkB,EAK1B,KAJM,SAAS,GAEd,OADA,EAAM,4BAA8B,EAAM,SAAS,KAAO,gBACnD,GACT,IAJiB,IAAU,CAM/B,EAEA,EAAc,UAAU,gBAAkB,SAAS,GACjD,OAAO,IAAI,SAAkB,EAM1B,KALM,SAAS,GAGd,OAFA,EAAY,GAAK,EAAM,oBAAoB,uBAC3C,EAAM,cAAc,KAAK,GAClB,EAAQ,EACjB,IALiB,IAAU,CAO/B,EAEA,EAAc,UAAU,uBAAyB,SAAS,EAAkB,GAQ1E,OANM,aAA4B,QAChC,EAAmB,CAAC,IAKf,EAAS,KAHP,KAAK,cAAc,QAAO,SAAS,GAC1C,OAAO,EAAiB,QAAQ,EAAY,OAAS,CACvD,IAEF,EAEA,EAAc,UAAU,8BAAgC,SAAS,EAAc,GAQ7E,OANM,aAAwB,QAC5B,EAAe,CAAC,IAKX,EAAS,KAHD,KAAK,cAAc,QAAO,SAAS,GAChD,OAAO,EAAa,QAAQ,EAAY,UAAU,KAAO,CAC3D,IAEF,EAEA,EAAc,UAAU,qCAAuC,SAAS,EAAkB,EAAc,GAWtG,OATM,aAA4B,QAChC,EAAmB,CAAC,IAEhB,aAAwB,QAC5B,EAAe,CAAC,IAKX,EAAS,KAHD,KAAK,cAAc,QAAO,SAAS,GAChD,OAAO,EAAiB,QAAQ,EAAY,OAAS,GAAK,EAAa,QAAQ,EAAY,UAAU,KAAO,CAC9G,IAEF,EAEA,EAAc,UAAU,QAAU,WAChC,OAAO,QAAQ,SACjB,EAEO,CAER,CAvEe,GAyEhB,EAAO,QAAU,CAGZ,GAEN","file":"/npm/eventric@0.26.0/dist/release/eventric.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/eventric@0.26.0/dist/release/eventric.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"eventric\"] = factory();\n\telse\n\t\troot[\"eventric\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1);\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar Context, Eventric, Projection, Remote, remoteContextHash, uuidGenerator,\n\t  bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n\n\tContext = __webpack_require__(2);\n\n\tRemote = __webpack_require__(19);\n\n\tProjection = __webpack_require__(17);\n\n\tuuidGenerator = __webpack_require__(10);\n\n\tremoteContextHash = {};\n\n\tEventric = (function() {\n\t  function Eventric() {\n\t    this._handleRemoteRPCRequest = bind(this._handleRemoteRPCRequest, this);\n\t    var GlobalContext, InmemoryStore, inmemoryRemote;\n\t    this._logger = __webpack_require__(22);\n\t    GlobalContext = __webpack_require__(24);\n\t    inmemoryRemote = __webpack_require__(21);\n\t    InmemoryStore = __webpack_require__(26);\n\t    this._contexts = {};\n\t    this._params = {};\n\t    this._domainEventHandlers = {};\n\t    this._domainEventHandlersAll = [];\n\t    this._storeDefinition = null;\n\t    this._remoteEndpoints = [];\n\t    this._globalProjections = [];\n\t    this._globalContext = new GlobalContext;\n\t    this.addRemoteEndpoint(inmemoryRemote.endpoint);\n\t    this.setStore(InmemoryStore, {});\n\t  }\n\n\t  Eventric.prototype.setLogger = function(logger) {\n\t    return this._logger = logger;\n\t  };\n\n\t  Eventric.prototype.getLogger = function() {\n\t    return this._logger;\n\t  };\n\n\t  Eventric.prototype.setLogLevel = function(logLevel) {\n\t    return this._logger.setLogLevel(logLevel);\n\t  };\n\n\t  Eventric.prototype.setStore = function(StoreClass, storeOptions) {\n\t    if (storeOptions == null) {\n\t      storeOptions = {};\n\t    }\n\t    return this._storeDefinition = {\n\t      Class: StoreClass,\n\t      options: storeOptions\n\t    };\n\t  };\n\n\t  Eventric.prototype.getStoreDefinition = function() {\n\t    return this._storeDefinition;\n\t  };\n\n\t  Eventric.prototype.context = function(name) {\n\t    var context;\n\t    if (!name) {\n\t      throw new Error('Contexts must have a name');\n\t    }\n\t    context = new Context(name);\n\t    context.subscribeToAllDomainEvents((function(_this) {\n\t      return function(domainEvent) {\n\t        return _this._delegateDomainEventToRemoteEndpoints(domainEvent);\n\t      };\n\t    })(this));\n\t    this._contexts[name] = context;\n\t    return context;\n\t  };\n\n\t  Eventric.prototype.initializeGlobalProjections = function() {\n\t    var initializeGlobalProjectionsPromise, startOfInitialization;\n\t    if (!this._projectionService) {\n\t      this._projectionService = new Projection(this._globalContext);\n\t    }\n\t    startOfInitialization = new Date;\n\t    this._logger.debug('eventric global projections initializing');\n\t    initializeGlobalProjectionsPromise = Promise.resolve();\n\t    this._globalProjections.forEach((function(_this) {\n\t      return function(globalProjection) {\n\t        return initializeGlobalProjectionsPromise = initializeGlobalProjectionsPromise.then(function() {\n\t          return _this._projectionService.initializeInstance(globalProjection, {});\n\t        });\n\t      };\n\t    })(this));\n\t    initializeGlobalProjectionsPromise.then((function(_this) {\n\t      return function() {\n\t        var durationOfInitialization, endOfInitialization;\n\t        endOfInitialization = new Date;\n\t        durationOfInitialization = endOfInitialization - startOfInitialization;\n\t        return _this._logger.debug(\"eventric global projections initialized after \" + durationOfInitialization + \"ms\");\n\t      };\n\t    })(this));\n\t    return initializeGlobalProjectionsPromise;\n\t  };\n\n\t  Eventric.prototype.addGlobalProjection = function(projectionObject) {\n\t    return this._globalProjections.push(projectionObject);\n\t  };\n\n\t  Eventric.prototype.getRegisteredContextNames = function() {\n\t    return Object.keys(this._contexts);\n\t  };\n\n\t  Eventric.prototype.setDefaultRemoteClient = function(remoteClient) {\n\t    return this._defaultRemoteClient = remoteClient;\n\t  };\n\n\t  Eventric.prototype.remoteContext = function(contextName) {\n\t    var remote;\n\t    if (!contextName) {\n\t      throw new Error('Missing context name');\n\t    }\n\t    if (remoteContextHash[contextName]) {\n\t      return remoteContextHash[contextName];\n\t    }\n\t    remote = remoteContextHash[contextName] = new Remote(contextName);\n\t    if (this._defaultRemoteClient) {\n\t      remote.setClient(this._defaultRemoteClient);\n\t    }\n\t    return remote;\n\t  };\n\n\t  Eventric.prototype.addRemoteEndpoint = function(remoteEndpoint) {\n\t    this._remoteEndpoints.push(remoteEndpoint);\n\t    return remoteEndpoint.setRPCHandler(this._handleRemoteRPCRequest);\n\t  };\n\n\t  Eventric.prototype.generateUuid = function() {\n\t    return uuidGenerator.generateUuid();\n\t  };\n\n\t  Eventric.prototype._handleRemoteRPCRequest = function(request, callback) {\n\t    var context, error;\n\t    context = this._contexts[request.contextName];\n\t    if (!context) {\n\t      error = new Error(\"Tried to handle Remote RPC with not registered context \" + request.contextName);\n\t      this._logger.error(error, '\\n', error.stack);\n\t      callback(error, null);\n\t      return;\n\t    }\n\t    if (Remote.ALLOWED_RPC_OPERATIONS.indexOf(request.functionName) === -1) {\n\t      error = new Error(\"RPC operation '\" + request.functionName + \"' not allowed\");\n\t      this._logger.error(error, '\\n', error.stack);\n\t      callback(error, null);\n\t      return;\n\t    }\n\t    if (!(request.functionName in context)) {\n\t      error = new Error(\"Remote RPC function \" + request.functionName + \" not found on Context \" + request.contextName);\n\t      this._logger.error(error, '\\n', error.stack);\n\t      callback(error, null);\n\t      return;\n\t    }\n\t    return context[request.functionName].apply(context, request.args).then(function(result) {\n\t      return callback(null, result);\n\t    })[\"catch\"](function(error) {\n\t      return callback(error);\n\t    });\n\t  };\n\n\t  Eventric.prototype._delegateDomainEventToRemoteEndpoints = function(domainEvent) {\n\t    return Promise.all(this._remoteEndpoints.map(function(remoteEndpoint) {\n\t      var publishPromise;\n\t      publishPromise = Promise.resolve().then(function() {\n\t        return remoteEndpoint.publish(domainEvent.context, domainEvent.name, domainEvent);\n\t      });\n\t      if (domainEvent.aggregate) {\n\t        publishPromise = publishPromise.then(function() {\n\t          return remoteEndpoint.publish(domainEvent.context, domainEvent.name, domainEvent.aggregate.id, domainEvent);\n\t        });\n\t      }\n\t      return publishPromise;\n\t    }));\n\t  };\n\n\t  return Eventric;\n\n\t})();\n\n\tmodule.exports = new Eventric;\n\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(3);\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar AggregateRepository, Context, domainEventService,\n\t  bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n\t  slice = [].slice;\n\n\tAggregateRepository = __webpack_require__(4);\n\n\tdomainEventService = __webpack_require__(12);\n\n\tContext = (function() {\n\t  function Context(name) {\n\t    var EventBus, Projection;\n\t    this.name = name;\n\t    this._getAggregateRepository = bind(this._getAggregateRepository, this);\n\t    EventBus = __webpack_require__(14);\n\t    Projection = __webpack_require__(17);\n\t    this._logger = __webpack_require__(13).getLogger();\n\t    this._isInitialized = false;\n\t    this._isDestroyed = false;\n\t    this._di = {\n\t      $query: (function(_this) {\n\t        return function() {\n\t          return _this.query.apply(_this, arguments);\n\t        };\n\t      })(this)\n\t    };\n\t    this._aggregateClasses = {};\n\t    this._commandHandlers = {};\n\t    this._queryHandlers = {};\n\t    this._domainEventPayloadConstructors = {};\n\t    this._domainEventHandlers = {};\n\t    this._projectionObjects = [];\n\t    this._repositoryInstances = {};\n\t    this._storeInstance = null;\n\t    this._pendingPromises = [];\n\t    this._eventBus = new EventBus;\n\t    this._projectionService = new Projection(this);\n\t  }\n\n\t  Context.prototype.initialize = function() {\n\t    var startOfInitialization;\n\t    startOfInitialization = new Date;\n\t    this._logger.debug(\"eventric context \\\"\" + this.name + \"\\\" initializing\");\n\t    return this._initializeStore().then((function(_this) {\n\t      return function() {\n\t        return _this._initializeProjections();\n\t      };\n\t    })(this)).then((function(_this) {\n\t      return function() {\n\t        var durationOfInitialization, endOfInitialization;\n\t        endOfInitialization = new Date;\n\t        durationOfInitialization = endOfInitialization - startOfInitialization;\n\t        _this._logger.debug(\"eventric context \\\"\" + _this.name + \"\\\" initialized after \" + durationOfInitialization + \"ms\");\n\t        return _this._isInitialized = true;\n\t      };\n\t    })(this));\n\t  };\n\n\t  Context.prototype._initializeStore = function() {\n\t    var eventric, initializeStorePromise, storeDefinition;\n\t    eventric = __webpack_require__(1);\n\t    storeDefinition = eventric.getStoreDefinition();\n\t    this._storeInstance = new storeDefinition.Class;\n\t    initializeStorePromise = this._storeInstance.initialize(this, storeDefinition.options);\n\t    return initializeStorePromise;\n\t  };\n\n\t  Context.prototype._initializeProjections = function() {\n\t    var initializeProjectionsPromise;\n\t    initializeProjectionsPromise = Promise.resolve();\n\t    this._projectionObjects.forEach((function(_this) {\n\t      return function(projectionObject) {\n\t        return initializeProjectionsPromise = initializeProjectionsPromise.then(function() {\n\t          return _this._projectionService.initializeInstance(projectionObject, {});\n\t        });\n\t      };\n\t    })(this));\n\t    return initializeProjectionsPromise;\n\t  };\n\n\t  Context.prototype.defineDomainEvent = function(domainEventName, DomainEventPayloadConstructor) {\n\t    this._domainEventPayloadConstructors[domainEventName] = DomainEventPayloadConstructor;\n\t    return this;\n\t  };\n\n\t  Context.prototype.defineDomainEvents = function(domainEventClassesObj) {\n\t    var DomainEventPayloadConstructor, domainEventName;\n\t    for (domainEventName in domainEventClassesObj) {\n\t      DomainEventPayloadConstructor = domainEventClassesObj[domainEventName];\n\t      this.defineDomainEvent(domainEventName, DomainEventPayloadConstructor);\n\t    }\n\t    return this;\n\t  };\n\n\t  Context.prototype.addCommandHandlers = function(commandHandlers) {\n\t    var commandFunction, commandHandlerName;\n\t    for (commandHandlerName in commandHandlers) {\n\t      commandFunction = commandHandlers[commandHandlerName];\n\t      this._commandHandlers[commandHandlerName] = commandFunction;\n\t    }\n\t    return this;\n\t  };\n\n\t  Context.prototype.addQueryHandlers = function(queryHandlers) {\n\t    var queryFunction, queryHandlerName;\n\t    for (queryHandlerName in queryHandlers) {\n\t      queryFunction = queryHandlers[queryHandlerName];\n\t      this._queryHandlers[queryHandlerName] = queryFunction;\n\t    }\n\t    return this;\n\t  };\n\n\t  Context.prototype.addAggregate = function(aggregateName, AggregateClass) {\n\t    this._aggregateClasses[aggregateName] = AggregateClass;\n\t    return this;\n\t  };\n\n\t  Context.prototype.subscribeToAllDomainEvents = function(handlerFn) {\n\t    var domainEventHandler;\n\t    domainEventHandler = (function(_this) {\n\t      return function() {\n\t        return handlerFn.apply(_this._di, arguments);\n\t      };\n\t    })(this);\n\t    return this._eventBus.subscribeToAllDomainEvents(domainEventHandler);\n\t  };\n\n\t  Context.prototype.subscribeToDomainEvent = function(domainEventName, handlerFn) {\n\t    var domainEventHandler;\n\t    domainEventHandler = (function(_this) {\n\t      return function() {\n\t        return handlerFn.apply(_this._di, arguments);\n\t      };\n\t    })(this);\n\t    return this._eventBus.subscribeToDomainEvent(domainEventName, domainEventHandler);\n\t  };\n\n\t  Context.prototype.subscribeToDomainEvents = function(domainEventHandlersObj) {\n\t    var domainEventName, handlerFn, results;\n\t    results = [];\n\t    for (domainEventName in domainEventHandlersObj) {\n\t      handlerFn = domainEventHandlersObj[domainEventName];\n\t      results.push(this.subscribeToDomainEvent(domainEventName, handlerFn));\n\t    }\n\t    return results;\n\t  };\n\n\t  Context.prototype.subscribeToDomainEventWithAggregateId = function(domainEventName, aggregateId, handlerFn) {\n\t    var domainEventHandler;\n\t    domainEventHandler = (function(_this) {\n\t      return function() {\n\t        return handlerFn.apply(_this._di, arguments);\n\t      };\n\t    })(this);\n\t    return this._eventBus.subscribeToDomainEventWithAggregateId(domainEventName, aggregateId, domainEventHandler);\n\t  };\n\n\t  Context.prototype.unsubscribeFromDomainEvent = function(subscriberId) {\n\t    return this._eventBus.unsubscribe(subscriberId);\n\t  };\n\n\t  Context.prototype.addProjection = function(projectionObject) {\n\t    this._projectionObjects.push(projectionObject);\n\t    return this;\n\t  };\n\n\t  Context.prototype.destroyProjectionInstance = function(projectionId) {\n\t    return this._projectionService.destroyInstance(projectionId, this);\n\t  };\n\n\t  Context.prototype.getDomainEventPayloadConstructor = function(domainEventName) {\n\t    return this._domainEventPayloadConstructors[domainEventName];\n\t  };\n\n\t  Context.prototype.getDomainEventsStore = function() {\n\t    return this._storeInstance;\n\t  };\n\n\t  Context.prototype.getEventBus = function() {\n\t    return this._eventBus;\n\t  };\n\n\t  Context.prototype.findDomainEventsByName = function() {\n\t    var findArguments;\n\t    findArguments = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n\t    return new Promise((function(_this) {\n\t      return function(resolve, reject) {\n\t        var ref;\n\t        return (ref = _this.getDomainEventsStore()).findDomainEventsByName.apply(ref, slice.call(findArguments).concat([function(err, domainEvents) {\n\t          if (err) {\n\t            return reject(err);\n\t          }\n\t          domainEvents = domainEventService.sortDomainEventsById(domainEvents);\n\t          return resolve(domainEvents);\n\t        }]));\n\t      };\n\t    })(this));\n\t  };\n\n\t  Context.prototype.findDomainEventsByNameAndAggregateId = function() {\n\t    var findArguments;\n\t    findArguments = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n\t    return new Promise((function(_this) {\n\t      return function(resolve, reject) {\n\t        var ref;\n\t        return (ref = _this.getDomainEventsStore()).findDomainEventsByNameAndAggregateId.apply(ref, slice.call(findArguments).concat([function(err, domainEvents) {\n\t          if (err) {\n\t            return reject(err);\n\t          }\n\t          domainEvents = domainEventService.sortDomainEventsById(domainEvents);\n\t          return resolve(domainEvents);\n\t        }]));\n\t      };\n\t    })(this));\n\t  };\n\n\t  Context.prototype.command = function(commandName, params) {\n\t    var executingCommand, paramsWithHiddenPasswordValue;\n\t    if (this._isDestroyed) {\n\t      paramsWithHiddenPasswordValue = this._hidePasswordValue(params);\n\t      return Promise.reject(new Error(\"Context \" + this.name + \" was destroyed, cannot execute command \" + commandName + \" with arguments\\n\" + (JSON.stringify(paramsWithHiddenPasswordValue))));\n\t    }\n\t    executingCommand = new Promise((function(_this) {\n\t      return function(resolve, reject) {\n\t        var commandServicesToInject;\n\t        _this._verifyContextIsInitialized(commandName);\n\t        if (!_this._commandHandlers[commandName]) {\n\t          throw new Error(\"Given command \" + commandName + \" not registered on context\");\n\t        }\n\t        commandServicesToInject = _this._getCommandServicesToInject();\n\t        return Promise.resolve().then(function() {\n\t          return _this._commandHandlers[commandName].apply(commandServicesToInject, [params]);\n\t        }).then(function(result) {\n\t          _this._logger.debug('Completed Command', commandName);\n\t          return resolve(result);\n\t        })[\"catch\"](function(error) {\n\t          var commandErrorMessage;\n\t          paramsWithHiddenPasswordValue = _this._hidePasswordValue(params);\n\t          commandErrorMessage = \"Command \\\"\" + commandName + \"\\\" with arguments \" + (JSON.stringify(paramsWithHiddenPasswordValue)) + \" of context \\\"\" + _this.name + \"\\\"\\nrejects with an error\";\n\t          if (!error) {\n\t            reject(new Error(commandErrorMessage));\n\t            return;\n\t          }\n\t          error = _this._extendError(error, commandErrorMessage);\n\t          return reject(error);\n\t        });\n\t      };\n\t    })(this));\n\t    this._addPendingPromise(executingCommand);\n\t    return executingCommand;\n\t  };\n\n\t  Context.prototype._hidePasswordValue = function(params) {\n\t    if (params.password) {\n\t      params.password = '******';\n\t    }\n\t    return params;\n\t  };\n\n\t  Context.prototype._getCommandServicesToInject = function() {\n\t    var diFn, diFnName, ref, servicesToInject;\n\t    servicesToInject = {};\n\t    ref = this._di;\n\t    for (diFnName in ref) {\n\t      diFn = ref[diFnName];\n\t      servicesToInject[diFnName] = diFn;\n\t    }\n\t    servicesToInject.$aggregate = {\n\t      create: (function(_this) {\n\t        return function() {\n\t          var aggregateName, aggregateParams, aggregateRepository;\n\t          aggregateName = arguments[0], aggregateParams = 2 <= arguments.length ? slice.call(arguments, 1) : [];\n\t          aggregateRepository = _this._getAggregateRepository(aggregateName);\n\t          return aggregateRepository.create.apply(aggregateRepository, aggregateParams);\n\t        };\n\t      })(this),\n\t      load: (function(_this) {\n\t        return function(aggregateName, aggregateId) {\n\t          var aggregateRepository;\n\t          aggregateRepository = _this._getAggregateRepository(aggregateName);\n\t          return aggregateRepository.load(aggregateId);\n\t        };\n\t      })(this)\n\t    };\n\t    return servicesToInject;\n\t  };\n\n\t  Context.prototype._extendError = function(error, additionalMessage) {\n\t    error.originalErrorMessage = error.message;\n\t    error.message = additionalMessage + \" - original error message: \" + error.originalErrorMessage;\n\t    return error;\n\t  };\n\n\t  Context.prototype._getAggregateRepository = function(aggregateName) {\n\t    return new AggregateRepository({\n\t      aggregateName: aggregateName,\n\t      AggregateClass: this._aggregateClasses[aggregateName],\n\t      context: this\n\t    });\n\t  };\n\n\t  Context.prototype._addPendingPromise = function(pendingPromise) {\n\t    var alwaysResolvingPromise;\n\t    alwaysResolvingPromise = pendingPromise[\"catch\"](function() {});\n\t    this._pendingPromises.push(alwaysResolvingPromise);\n\t    return alwaysResolvingPromise.then((function(_this) {\n\t      return function() {\n\t        return _this._pendingPromises.splice(_this._pendingPromises.indexOf(alwaysResolvingPromise), 1);\n\t      };\n\t    })(this));\n\t  };\n\n\t  Context.prototype.query = function(queryName, params) {\n\t    return new Promise((function(_this) {\n\t      return function(resolve, reject) {\n\t        _this._logger.debug('Got Query', queryName);\n\t        _this._verifyContextIsInitialized(queryName);\n\t        if (!_this._queryHandlers[queryName]) {\n\t          reject(new Error(\"Given query \" + queryName + \" not registered on context\"));\n\t          return;\n\t        }\n\t        return Promise.resolve().then(function() {\n\t          return _this._queryHandlers[queryName].apply(_this._di, [params]);\n\t        }).then(function(result) {\n\t          _this._logger.debug(\"Completed Query \" + queryName + \" with Result \" + result);\n\t          return resolve(result);\n\t        })[\"catch\"](function(error) {\n\t          var paramsWithHiddenPasswordValue, queryErrorMessage;\n\t          paramsWithHiddenPasswordValue = _this._hidePasswordValue(params);\n\t          queryErrorMessage = \"Query \\\"\" + queryName + \"\\\" with arguments \" + (JSON.stringify(paramsWithHiddenPasswordValue)) + \" of context \\\"\" + _this.name + \"\\\"\\nrejects with an error\";\n\t          if (!error) {\n\t            reject(new Error(queryErrorMessage));\n\t            return;\n\t          }\n\t          error = _this._extendError(error, queryErrorMessage);\n\t          return reject(error);\n\t        });\n\t      };\n\t    })(this));\n\t  };\n\n\t  Context.prototype._verifyContextIsInitialized = function(methodName) {\n\t    if (!this._isInitialized) {\n\t      throw new Error(\"Context \" + this.name + \" not initialized yet, cannot execute \" + methodName);\n\t    }\n\t  };\n\n\t  Context.prototype.destroy = function() {\n\t    return Promise.all(this._pendingPromises).then((function(_this) {\n\t      return function() {\n\t        return _this._eventBus.destroy();\n\t      };\n\t    })(this)).then((function(_this) {\n\t      return function() {\n\t        return _this._isDestroyed = true;\n\t      };\n\t    })(this));\n\t  };\n\n\t  return Context;\n\n\t})();\n\n\tmodule.exports = Context;\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(5);\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar Aggregate, AggregateRepository, domainEventService, uuidGenerator,\n\t  bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n\n\tAggregate = __webpack_require__(6);\n\n\tuuidGenerator = __webpack_require__(10);\n\n\tdomainEventService = __webpack_require__(12);\n\n\tAggregateRepository = (function() {\n\t  function AggregateRepository(params) {\n\t    this.save = bind(this.save, this);\n\t    this.create = bind(this.create, this);\n\t    this.load = bind(this.load, this);\n\t    this._logger = __webpack_require__(13).getLogger();\n\t    this._aggregateName = params.aggregateName;\n\t    this._AggregateClass = params.AggregateClass;\n\t    this._context = params.context;\n\t    this._store = this._context.getDomainEventsStore();\n\t  }\n\n\t  AggregateRepository.prototype.load = function(aggregateId) {\n\t    return new Promise((function(_this) {\n\t      return function(resolve, reject) {\n\t        return _this._store.findDomainEventsByAggregateId(aggregateId, function(error, domainEvents) {\n\t          var aggregate, aggregateDeletedEvent, domainEvent, i;\n\t          if (error) {\n\t            reject(error);\n\t            return;\n\t          }\n\t          if (!(domainEvents != null ? domainEvents.length : void 0)) {\n\t            reject(new Error(\"No domainEvents for aggregate of type \" + _this._aggregateName + \" with \" + aggregateId + \" available\"));\n\t            return;\n\t          }\n\t          domainEvents = domainEventService.sortDomainEventsById(domainEvents);\n\t          aggregateDeletedEvent = null;\n\t          for (i = domainEvents.length - 1; i >= 0; i += -1) {\n\t            domainEvent = domainEvents[i];\n\t            if (domainEvent.name.indexOf(_this._aggregateName + \"Deleted\") > -1) {\n\t              aggregateDeletedEvent = domainEvent;\n\t              break;\n\t            }\n\t          }\n\t          if (aggregateDeletedEvent != null) {\n\t            reject(new Error(\"Aggregate of type \" + _this._aggregateName + \" with id \" + aggregateId + \" is marked as deleted because of domain event \" + aggregateDeletedEvent.name + \" with domain event id \" + aggregateDeletedEvent.id));\n\t            return;\n\t          }\n\t          aggregate = new Aggregate(_this._context, _this._aggregateName, _this._AggregateClass);\n\t          aggregate.setId(aggregateId);\n\t          aggregate.applyDomainEvents(domainEvents);\n\t          _this._installSaveFunctionOnAggregateInstance(aggregate);\n\t          return resolve(aggregate.instance);\n\t        });\n\t      };\n\t    })(this));\n\t  };\n\n\t  AggregateRepository.prototype.create = function(params, id) {\n\t    if (id == null) {\n\t      id = null;\n\t    }\n\t    return Promise.resolve().then((function(_this) {\n\t      return function() {\n\t        var aggregate;\n\t        aggregate = new Aggregate(_this._context, _this._aggregateName, _this._AggregateClass);\n\t        if (typeof aggregate.instance.create !== 'function') {\n\t          throw new Error('No create function on aggregate');\n\t        }\n\t        if (id != null) {\n\t          aggregate.setId(id);\n\t        } else {\n\t          aggregate.setId(uuidGenerator.generateUuid());\n\t        }\n\t        _this._installSaveFunctionOnAggregateInstance(aggregate);\n\t        return Promise.resolve(aggregate.instance.create(params)).then(function() {\n\t          return aggregate.instance;\n\t        });\n\t      };\n\t    })(this));\n\t  };\n\n\t  AggregateRepository.prototype._installSaveFunctionOnAggregateInstance = function(aggregate) {\n\t    return aggregate.instance.$save = (function(_this) {\n\t      return function() {\n\t        return _this.save(aggregate);\n\t      };\n\t    })(this);\n\t  };\n\n\t  AggregateRepository.prototype.save = function(aggregate) {\n\t    return Promise.resolve().then((function(_this) {\n\t      return function() {\n\t        var domainEvents, saveDomainEventQueue, savedDomainEvents;\n\t        if (!aggregate) {\n\t          throw new Error(\"Tried to save unknown aggregate \" + _this._aggregateName);\n\t        }\n\t        domainEvents = aggregate.getNewDomainEvents();\n\t        if (!(domainEvents != null ? domainEvents.length : void 0)) {\n\t          throw new Error(\"No new domain events to save for aggregate of type \" + _this._aggregateName + \" with id \" + aggregate.id);\n\t        }\n\t        _this._logger.debug(\"Going to Save and Publish \" + domainEvents.length + \" DomainEvents from Aggregate \" + _this._aggregateName);\n\t        saveDomainEventQueue = Promise.resolve();\n\t        savedDomainEvents = [];\n\t        domainEvents.forEach(function(domainEvent) {\n\t          return saveDomainEventQueue = saveDomainEventQueue.then(function() {\n\t            return _this._store.saveDomainEvent(domainEvent).then(function(domainEvent) {\n\t              return savedDomainEvents.push(domainEvent);\n\t            });\n\t          });\n\t        });\n\t        return saveDomainEventQueue.then(function() {\n\t          savedDomainEvents.forEach(function(domainEvent) {\n\t            return _this._context.getEventBus().publishDomainEvent(domainEvent)[\"catch\"](function(error) {\n\t              return _this._logger.error(error, '\\n', error.stack);\n\t            });\n\t          });\n\t          return aggregate.id;\n\t        });\n\t      };\n\t    })(this));\n\t  };\n\n\t  return AggregateRepository;\n\n\t})();\n\n\tmodule.exports = AggregateRepository;\n\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(7);\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar Aggregate, DomainEvent,\n\t  bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n\n\tDomainEvent = __webpack_require__(8);\n\n\tAggregate = (function() {\n\t  function Aggregate(_context, _name, AggregateClass) {\n\t    this._context = _context;\n\t    this._name = _name;\n\t    this.emitDomainEvent = bind(this.emitDomainEvent, this);\n\t    this._newDomainEvents = [];\n\t    this.instance = new AggregateClass;\n\t    this.instance.$emitDomainEvent = this.emitDomainEvent;\n\t  }\n\n\t  Aggregate.prototype.setId = function(id) {\n\t    this.id = id;\n\t    return this.instance.$id = this.id;\n\t  };\n\n\t  Aggregate.prototype.emitDomainEvent = function(domainEventName, domainEventPayload) {\n\t    var aggregate, domainEvent;\n\t    aggregate = {\n\t      id: this.id,\n\t      name: this._name\n\t    };\n\t    domainEvent = this._createDomainEvent(domainEventName, domainEventPayload, aggregate);\n\t    this._newDomainEvents.push(domainEvent);\n\t    return this._handleDomainEvent(domainEventName, domainEvent);\n\t  };\n\n\t  Aggregate.prototype._createDomainEvent = function(domainEventName, domainEventConstructorParams, aggregate) {\n\t    var DomainEventPayloadConstructor, payload;\n\t    DomainEventPayloadConstructor = this._context.getDomainEventPayloadConstructor(domainEventName);\n\t    if (!DomainEventPayloadConstructor) {\n\t      throw new Error(\"Tried to create domain event '\" + domainEventName + \"' which is not defined\");\n\t    }\n\t    payload = {};\n\t    DomainEventPayloadConstructor.apply(payload, [domainEventConstructorParams]);\n\t    return new DomainEvent({\n\t      name: domainEventName,\n\t      aggregate: aggregate,\n\t      context: this._context.name,\n\t      payload: payload\n\t    });\n\t  };\n\n\t  Aggregate.prototype._handleDomainEvent = function(domainEventName, domainEvent) {\n\t    if (this.instance[\"handle\" + domainEventName]) {\n\t      return this.instance[\"handle\" + domainEventName](domainEvent);\n\t    }\n\t  };\n\n\t  Aggregate.prototype.getNewDomainEvents = function() {\n\t    return this._newDomainEvents;\n\t  };\n\n\t  Aggregate.prototype.applyDomainEvents = function(domainEvents) {\n\t    var domainEvent, i, len, results;\n\t    results = [];\n\t    for (i = 0, len = domainEvents.length; i < len; i++) {\n\t      domainEvent = domainEvents[i];\n\t      results.push(this._applyDomainEvent(domainEvent));\n\t    }\n\t    return results;\n\t  };\n\n\t  Aggregate.prototype._applyDomainEvent = function(domainEvent) {\n\t    return this._handleDomainEvent(domainEvent.name, domainEvent);\n\t  };\n\n\t  return Aggregate;\n\n\t})();\n\n\tmodule.exports = Aggregate;\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(9);\n\n\n/***/ },\n/* 9 */\n/***/ function(module, exports) {\n\n\tvar DomainEvent;\n\n\tDomainEvent = (function() {\n\t  function DomainEvent(params) {\n\t    this.id = params.id;\n\t    this.name = params.name;\n\t    this.payload = params.payload;\n\t    this.aggregate = params.aggregate;\n\t    this.context = params.context;\n\t    this.timestamp = new Date().getTime();\n\t  }\n\n\t  return DomainEvent;\n\n\t})();\n\n\tmodule.exports = DomainEvent;\n\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(11);\n\n\n/***/ },\n/* 11 */\n/***/ function(module, exports) {\n\n\tvar UuidGenerator;\n\n\tUuidGenerator = (function() {\n\t  function UuidGenerator() {}\n\n\t  UuidGenerator.prototype._uuidTemplate = 'xxxxxxxx-xxxx-4xxx-vxxx-xxxxxxxxxxxx';\n\n\t  UuidGenerator.prototype.generateUuid = function() {\n\t    var uuid;\n\t    uuid = this._uuidTemplate.replace(/[xv]/g, function(characterToReplace) {\n\t      var randomNumber, variant;\n\t      randomNumber = Math.floor(Math.random() * 16);\n\t      if (characterToReplace === 'x') {\n\t        return randomNumber.toString(16);\n\t      } else {\n\t        variant = randomNumber & 0x3 | 0x8;\n\t        return variant.toString(16);\n\t      }\n\t    });\n\t    return uuid;\n\t  };\n\n\t  return UuidGenerator;\n\n\t})();\n\n\tmodule.exports = new UuidGenerator;\n\n\n/***/ },\n/* 12 */\n/***/ function(module, exports) {\n\n\tvar DomainEventService;\n\n\tDomainEventService = (function() {\n\t  function DomainEventService() {}\n\n\t  DomainEventService.prototype.sortDomainEventsById = function(domainEvents) {\n\t    return domainEvents.sort(function(firstDomainEvent, secondDomainEvent) {\n\t      return firstDomainEvent.id - secondDomainEvent.id;\n\t    });\n\t  };\n\n\t  return DomainEventService;\n\n\t})();\n\n\tmodule.exports = new DomainEventService;\n\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1);\n\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(15);\n\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar EventBus, Subscriber;\n\n\tSubscriber = __webpack_require__(16);\n\n\tEventBus = (function() {\n\t  function EventBus() {\n\t    this._subscribers = [];\n\t    this._subscriberId = 0;\n\t    this._eventPublishQueue = Promise.resolve();\n\t    this._isDestroyed = false;\n\t  }\n\n\t  EventBus.prototype.subscribeToAllDomainEvents = function(subscriberFunction) {\n\t    return this._subscribe('*', subscriberFunction);\n\t  };\n\n\t  EventBus.prototype.subscribeToDomainEvent = function(eventName, subscriberFunction) {\n\t    return this._subscribe(eventName, subscriberFunction);\n\t  };\n\n\t  EventBus.prototype.subscribeToDomainEventWithAggregateId = function(eventName, aggregateId, subscriberFunction) {\n\t    return this._subscribe(eventName + \"/\" + aggregateId, subscriberFunction);\n\t  };\n\n\t  EventBus.prototype._subscribe = function(eventName, subscriberFunction) {\n\t    return new Promise((function(_this) {\n\t      return function(resolve) {\n\t        var subscriber;\n\t        subscriber = new Subscriber({\n\t          eventName: eventName,\n\t          subscriberFunction: subscriberFunction,\n\t          subscriberId: _this._getNextSubscriberId()\n\t        });\n\t        _this._subscribers.push(subscriber);\n\t        return resolve(subscriber.subscriberId);\n\t      };\n\t    })(this));\n\t  };\n\n\t  EventBus.prototype._getNextSubscriberId = function() {\n\t    return this._subscriberId++;\n\t  };\n\n\t  EventBus.prototype.publishDomainEvent = function(domainEvent) {\n\t    return new Promise((function(_this) {\n\t      return function(resolve, reject) {\n\t        var publishOperation;\n\t        _this._verifyPublishIsPossible(domainEvent);\n\t        publishOperation = function() {\n\t          return _this._notifySubscribers(domainEvent).then(resolve)[\"catch\"](reject);\n\t        };\n\t        return _this._enqueueEventPublishing(publishOperation);\n\t      };\n\t    })(this));\n\t  };\n\n\t  EventBus.prototype._verifyPublishIsPossible = function(domainEvent) {\n\t    var errorMessage, ref;\n\t    if (this._isDestroyed) {\n\t      errorMessage = \"Event Bus was destroyed, cannot publish \" + domainEvent.name + \"\\nwith payload \" + (JSON.stringify(domainEvent.payload));\n\t      if ((ref = domainEvent.aggregate) != null ? ref.id : void 0) {\n\t        errorMessage += \" and aggregate id \" + domainEvent.aggregate.id;\n\t      }\n\t      throw new Error(errorMessage);\n\t    }\n\t  };\n\n\t  EventBus.prototype._notifySubscribers = function(domainEvent) {\n\t    return Promise.resolve().then((function(_this) {\n\t      return function() {\n\t        var subscribers;\n\t        subscribers = _this._getSubscribersForDomainEvent(domainEvent);\n\t        return Promise.all(subscribers.map(function(subscriber) {\n\t          return subscriber.subscriberFunction(domainEvent);\n\t        }));\n\t      };\n\t    })(this));\n\t  };\n\n\t  EventBus.prototype._getSubscribersForDomainEvent = function(domainEvent) {\n\t    var ref, subscribers;\n\t    subscribers = this._subscribers.filter(function(subscriber) {\n\t      return subscriber.eventName === '*';\n\t    });\n\t    subscribers = subscribers.concat(this._subscribers.filter(function(subscriber) {\n\t      return subscriber.eventName === domainEvent.name;\n\t    }));\n\t    if ((ref = domainEvent.aggregate) != null ? ref.id : void 0) {\n\t      subscribers = subscribers.concat(this._subscribers.filter(function(subscriber) {\n\t        return subscriber.eventName === (domainEvent.name + \"/\" + domainEvent.aggregate.id);\n\t      }));\n\t    }\n\t    return subscribers;\n\t  };\n\n\t  EventBus.prototype._enqueueEventPublishing = function(publishOperation) {\n\t    return this._eventPublishQueue = this._eventPublishQueue.then(publishOperation);\n\t  };\n\n\t  EventBus.prototype.unsubscribe = function(subscriberId) {\n\t    return Promise.resolve().then((function(_this) {\n\t      return function() {\n\t        return _this._subscribers = _this._subscribers.filter(function(subscriber) {\n\t          return subscriber.subscriberId !== subscriberId;\n\t        });\n\t      };\n\t    })(this));\n\t  };\n\n\t  EventBus.prototype.destroy = function() {\n\t    return this._waitForEventPublishQueue().then((function(_this) {\n\t      return function() {\n\t        return _this._isDestroyed = true;\n\t      };\n\t    })(this));\n\t  };\n\n\t  EventBus.prototype._waitForEventPublishQueue = function() {\n\t    var currentEventPublishQueue;\n\t    currentEventPublishQueue = this._eventPublishQueue;\n\t    return currentEventPublishQueue.then((function(_this) {\n\t      return function() {\n\t        if (_this._eventPublishQueue !== currentEventPublishQueue) {\n\t          return _this._waitForEventPublishQueue();\n\t        }\n\t      };\n\t    })(this));\n\t  };\n\n\t  return EventBus;\n\n\t})();\n\n\tmodule.exports = EventBus;\n\n\n/***/ },\n/* 16 */\n/***/ function(module, exports) {\n\n\tvar Subscriber;\n\n\tSubscriber = (function() {\n\t  function Subscriber(arg) {\n\t    this.eventName = arg.eventName, this.subscriberFunction = arg.subscriberFunction, this.subscriberId = arg.subscriberId;\n\t  }\n\n\t  return Subscriber;\n\n\t})();\n\n\tmodule.exports = Subscriber;\n\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(18);\n\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar ProjectionService, uuidGenerator;\n\n\tuuidGenerator = __webpack_require__(10);\n\n\tProjectionService = (function() {\n\t  function ProjectionService(_context) {\n\t    this._context = _context;\n\t    this._logger = __webpack_require__(13).getLogger();\n\t    this._handlerFunctions = {};\n\t    this._projectionInstances = {};\n\t  }\n\n\t  ProjectionService.prototype.initializeInstance = function(projectionInstance, params) {\n\t    var aggregateId, diFn, diName, eventNames, projectionId, ref;\n\t    if (this._context._di) {\n\t      ref = this._context._di;\n\t      for (diName in ref) {\n\t        diFn = ref[diName];\n\t        projectionInstance[diName] = diFn;\n\t      }\n\t    }\n\t    projectionId = uuidGenerator.generateUuid();\n\t    aggregateId = null;\n\t    projectionInstance.$subscribeHandlersWithAggregateId = function(_aggregateId) {\n\t      if (!_aggregateId) {\n\t        throw new Error('Missing aggregate id');\n\t      }\n\t      return aggregateId = _aggregateId;\n\t    };\n\t    eventNames = null;\n\t    return this._callInitializeOnProjection(projectionInstance, params).then((function(_this) {\n\t      return function() {\n\t        return _this._parseEventNamesFromProjection(projectionInstance);\n\t      };\n\t    })(this)).then((function(_this) {\n\t      return function(_eventNames) {\n\t        eventNames = _eventNames;\n\t        return _this._applyDomainEventsFromStoreToProjection(projectionInstance, eventNames, aggregateId);\n\t      };\n\t    })(this)).then((function(_this) {\n\t      return function() {\n\t        return _this._subscribeProjectionToDomainEvents(projectionId, projectionInstance, eventNames, aggregateId);\n\t      };\n\t    })(this)).then((function(_this) {\n\t      return function() {\n\t        return _this._projectionInstances[projectionId] = projectionInstance;\n\t      };\n\t    })(this)).then(function() {\n\t      return projectionInstance.isInitialized = true;\n\t    }).then(function() {\n\t      return projectionId;\n\t    });\n\t  };\n\n\t  ProjectionService.prototype._callInitializeOnProjection = function(projection, params) {\n\t    return new Promise(function(resolve) {\n\t      if (!projection.initialize) {\n\t        return resolve(projection);\n\t      }\n\t      return projection.initialize(params, function() {\n\t        return resolve(projection);\n\t      });\n\t    });\n\t  };\n\n\t  ProjectionService.prototype._parseEventNamesFromProjection = function(projection) {\n\t    return new Promise(function(resolve) {\n\t      var eventName, eventNames, key, value;\n\t      eventNames = [];\n\t      for (key in projection) {\n\t        value = projection[key];\n\t        if ((key.indexOf('handle')) === 0 && (typeof value === 'function')) {\n\t          eventName = key.replace(/^handle/, '');\n\t          eventNames.push(eventName);\n\t        }\n\t      }\n\t      return resolve(eventNames);\n\t    });\n\t  };\n\n\t  ProjectionService.prototype._applyDomainEventsFromStoreToProjection = function(projection, eventNames, aggregateId) {\n\t    var findEvents;\n\t    if (aggregateId) {\n\t      findEvents = this._context.findDomainEventsByNameAndAggregateId(eventNames, aggregateId);\n\t    } else {\n\t      findEvents = this._context.findDomainEventsByName(eventNames);\n\t    }\n\t    return findEvents.then((function(_this) {\n\t      return function(domainEvents) {\n\t        var applyDomainEventsToProjectionPromise;\n\t        if (!domainEvents || domainEvents.length === 0) {\n\t          return;\n\t        }\n\t        applyDomainEventsToProjectionPromise = Promise.resolve();\n\t        domainEvents.forEach(function(domainEvent) {\n\t          return applyDomainEventsToProjectionPromise = applyDomainEventsToProjectionPromise.then(function() {\n\t            return _this._applyDomainEventToProjection(domainEvent, projection);\n\t          });\n\t        });\n\t        return applyDomainEventsToProjectionPromise;\n\t      };\n\t    })(this));\n\t  };\n\n\t  ProjectionService.prototype._subscribeProjectionToDomainEvents = function(projectionId, projection, eventNames, aggregateId) {\n\t    var domainEventHandler, subscribeProjectionToDomainEventsPromise;\n\t    domainEventHandler = (function(_this) {\n\t      return function(domainEvent) {\n\t        return _this._applyDomainEventToProjection(domainEvent, projection);\n\t      };\n\t    })(this);\n\t    this._handlerFunctions[projectionId] = [];\n\t    subscribeProjectionToDomainEventsPromise = Promise.resolve();\n\t    eventNames.forEach((function(_this) {\n\t      return function(eventName) {\n\t        return subscribeProjectionToDomainEventsPromise = subscribeProjectionToDomainEventsPromise.then(function() {\n\t          if (aggregateId) {\n\t            return _this._context.subscribeToDomainEventWithAggregateId(eventName, aggregateId, domainEventHandler);\n\t          } else {\n\t            return _this._context.subscribeToDomainEvent(eventName, domainEventHandler);\n\t          }\n\t        }).then(function(subscriberId) {\n\t          return _this._handlerFunctions[projectionId].push(subscriberId);\n\t        });\n\t      };\n\t    })(this));\n\t    return subscribeProjectionToDomainEventsPromise;\n\t  };\n\n\t  ProjectionService.prototype._applyDomainEventToProjection = function(domainEvent, projection) {\n\t    return Promise.resolve().then((function(_this) {\n\t      return function() {\n\t        if (!projection[\"handle\" + domainEvent.name]) {\n\t          _this._logger.warn(\"ProjectionService: handle\" + domainEvent.name + \" not defined\");\n\t        }\n\t        return projection[\"handle\" + domainEvent.name](domainEvent);\n\t      };\n\t    })(this));\n\t  };\n\n\t  ProjectionService.prototype.getInstance = function(projectionId) {\n\t    return this._projectionInstances[projectionId];\n\t  };\n\n\t  ProjectionService.prototype.destroyInstance = function(projectionId) {\n\t    var i, len, ref, subscriberId, unsubscribePromises;\n\t    if (!projectionId) {\n\t      return Promise.reject(new Error('Missing projection id'));\n\t    }\n\t    if (!this._handlerFunctions[projectionId]) {\n\t      return Promise.reject(new Error(\"Projection with id \\\"\" + projectionId + \"\\\" is not initialized\"));\n\t    }\n\t    unsubscribePromises = [];\n\t    ref = this._handlerFunctions[projectionId];\n\t    for (i = 0, len = ref.length; i < len; i++) {\n\t      subscriberId = ref[i];\n\t      unsubscribePromises.push(this._context.unsubscribeFromDomainEvent(subscriberId));\n\t    }\n\t    delete this._handlerFunctions[projectionId];\n\t    delete this._projectionInstances[projectionId];\n\t    return Promise.all(unsubscribePromises);\n\t  };\n\n\t  return ProjectionService;\n\n\t})();\n\n\tmodule.exports = ProjectionService;\n\n\n/***/ },\n/* 19 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(20);\n\n\n/***/ },\n/* 20 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar Remote;\n\n\tRemote = (function() {\n\t  Remote.ALLOWED_RPC_OPERATIONS = ['command', 'query', 'findDomainEventsByName', 'findDomainEventsByNameAndAggregateId'];\n\n\t  function Remote(_contextName) {\n\t    var Projection, inmemoryRemote;\n\t    this._contextName = _contextName;\n\t    Projection = __webpack_require__(17);\n\t    inmemoryRemote = __webpack_require__(21);\n\t    this._params = {};\n\t    this._handlerFunctions = {};\n\t    this._projectionService = new Projection(this);\n\t    this.setClient(inmemoryRemote.client);\n\t    this._exposeRpcOperationsAsMemberFunctions();\n\t  }\n\n\t  Remote.prototype._exposeRpcOperationsAsMemberFunctions = function() {\n\t    return Remote.ALLOWED_RPC_OPERATIONS.forEach((function(_this) {\n\t      return function(rpcOperation) {\n\t        return _this[rpcOperation] = function() {\n\t          return _this._rpc(rpcOperation, arguments);\n\t        };\n\t      };\n\t    })(this));\n\t  };\n\n\t  Remote.prototype.subscribeToAllDomainEvents = function(handlerFn) {\n\t    return this._client.subscribe(this._contextName, handlerFn);\n\t  };\n\n\t  Remote.prototype.subscribeToDomainEvent = function(domainEventName, handlerFn) {\n\t    return this._client.subscribe(this._contextName, domainEventName, handlerFn);\n\t  };\n\n\t  Remote.prototype.subscribeToDomainEventWithAggregateId = function(domainEventName, aggregateId, handlerFn) {\n\t    return this._client.subscribe(this._contextName, domainEventName, aggregateId, handlerFn);\n\t  };\n\n\t  Remote.prototype.unsubscribeFromDomainEvent = function(subscriberId) {\n\t    return this._client.unsubscribe(subscriberId);\n\t  };\n\n\t  Remote.prototype._rpc = function(functionName, args) {\n\t    return this._client.rpc({\n\t      contextName: this._contextName,\n\t      functionName: functionName,\n\t      args: Array.prototype.slice.call(args)\n\t    });\n\t  };\n\n\t  Remote.prototype.setClient = function(client) {\n\t    this._client = client;\n\t    return this;\n\t  };\n\n\t  Remote.prototype.initializeProjection = function(projectionObject, params) {\n\t    return this._projectionService.initializeInstance(projectionObject, params);\n\t  };\n\n\t  Remote.prototype.destroyProjectionInstance = function(projectionId) {\n\t    return this._projectionService.destroyInstance(projectionId, this);\n\t  };\n\n\t  return Remote;\n\n\t})();\n\n\tmodule.exports = Remote;\n\n\n/***/ },\n/* 21 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t(function webpackUniversalModuleDefinition(root, factory) {\n\t\tif(true)\n\t\t\tmodule.exports = factory();\n\t\telse if(typeof define === 'function' && define.amd)\n\t\t\tdefine(factory);\n\t\telse if(typeof exports === 'object')\n\t\t\texports[\"eventric-remote-inmemory\"] = factory();\n\t\telse\n\t\t\troot[\"eventric-remote-inmemory\"] = factory();\n\t})(this, function() {\n\treturn /******/ (function(modules) { // webpackBootstrap\n\t/******/ \t// The module cache\n\t/******/ \tvar installedModules = {};\n\n\t/******/ \t// The require function\n\t/******/ \tfunction __webpack_require__(moduleId) {\n\n\t/******/ \t\t// Check if module is in cache\n\t/******/ \t\tif(installedModules[moduleId])\n\t/******/ \t\t\treturn installedModules[moduleId].exports;\n\n\t/******/ \t\t// Create a new module (and put it into the cache)\n\t/******/ \t\tvar module = installedModules[moduleId] = {\n\t/******/ \t\t\texports: {},\n\t/******/ \t\t\tid: moduleId,\n\t/******/ \t\t\tloaded: false\n\t/******/ \t\t};\n\n\t/******/ \t\t// Execute the module function\n\t/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t/******/ \t\t// Flag the module as loaded\n\t/******/ \t\tmodule.loaded = true;\n\n\t/******/ \t\t// Return the exports of the module\n\t/******/ \t\treturn module.exports;\n\t/******/ \t}\n\n\n\t/******/ \t// expose the modules object (__webpack_modules__)\n\t/******/ \t__webpack_require__.m = modules;\n\n\t/******/ \t// expose the module cache\n\t/******/ \t__webpack_require__.c = installedModules;\n\n\t/******/ \t// __webpack_public_path__\n\t/******/ \t__webpack_require__.p = \"\";\n\n\t/******/ \t// Load entry module and return exports\n\t/******/ \treturn __webpack_require__(0);\n\t/******/ })\n\t/************************************************************************/\n\t/******/ ([\n\t/* 0 */\n\t/***/ function(module, exports, __webpack_require__) {\n\n\t\tmodule.exports = {\n\t\t  endpoint: __webpack_require__(1),\n\t\t  client: __webpack_require__(3)\n\t\t};\n\n\n\t/***/ },\n\t/* 1 */\n\t/***/ function(module, exports, __webpack_require__) {\n\n\t\tvar InMemoryRemoteEndpoint, pubSub,\n\t\t  slice = [].slice;\n\n\t\tpubSub = __webpack_require__(2);\n\n\t\tInMemoryRemoteEndpoint = (function() {\n\t\t  function InMemoryRemoteEndpoint() {}\n\n\t\t  InMemoryRemoteEndpoint.prototype.setRPCHandler = function(handleRPCRequest) {\n\t\t    this.handleRPCRequest = handleRPCRequest;\n\t\t  };\n\n\t\t  InMemoryRemoteEndpoint.prototype.publish = function() {\n\t\t    var aggregateId, arg, contextName, domainEventName, fullEventName, i, payload;\n\t\t    contextName = arguments[0], arg = 3 <= arguments.length ? slice.call(arguments, 1, i = arguments.length - 1) : (i = 1, []), payload = arguments[i++];\n\t\t    domainEventName = arg[0], aggregateId = arg[1];\n\t\t    fullEventName = pubSub.getFullEventName(contextName, domainEventName, aggregateId);\n\t\t    return pubSub.publish(fullEventName, payload);\n\t\t  };\n\n\t\t  return InMemoryRemoteEndpoint;\n\n\t\t})();\n\n\t\tmodule.exports = new InMemoryRemoteEndpoint;\n\n\n\t/***/ },\n\t/* 2 */\n\t/***/ function(module, exports) {\n\n\t\tvar PubSub,\n\t\t  slice = [].slice;\n\n\t\tPubSub = (function() {\n\t\t  function PubSub() {\n\t\t    this._subscribers = [];\n\t\t    this._subscriberId = 0;\n\t\t  }\n\n\t\t  PubSub.prototype.subscribe = function(eventName, subscriberFunction) {\n\t\t    return new Promise((function(_this) {\n\t\t      return function(resolve) {\n\t\t        var subscriber;\n\t\t        subscriber = {\n\t\t          eventName: eventName,\n\t\t          subscriberFunction: subscriberFunction,\n\t\t          subscriberId: _this._getNextSubscriberId()\n\t\t        };\n\t\t        _this._subscribers.push(subscriber);\n\t\t        return resolve(subscriber.subscriberId);\n\t\t      };\n\t\t    })(this));\n\t\t  };\n\n\t\t  PubSub.prototype.publish = function(eventName, payload) {\n\t\t    var subscribers;\n\t\t    subscribers = this._getRelevantSubscribers(eventName);\n\t\t    return Promise.all(subscribers.map(function(subscriber) {\n\t\t      return subscriber.subscriberFunction(payload);\n\t\t    }));\n\t\t  };\n\n\t\t  PubSub.prototype._getRelevantSubscribers = function(eventName) {\n\t\t    if (eventName) {\n\t\t      return this._subscribers.filter(function(subscriber) {\n\t\t        return subscriber.eventName === eventName;\n\t\t      });\n\t\t    } else {\n\t\t      return this._subscribers;\n\t\t    }\n\t\t  };\n\n\t\t  PubSub.prototype.unsubscribe = function(subscriberId) {\n\t\t    return new Promise((function(_this) {\n\t\t      return function(resolve) {\n\t\t        _this._subscribers = _this._subscribers.filter(function(subscriber) {\n\t\t          return subscriber.subscriberId !== subscriberId;\n\t\t        });\n\t\t        return resolve();\n\t\t      };\n\t\t    })(this));\n\t\t  };\n\n\t\t  PubSub.prototype._getNextSubscriberId = function() {\n\t\t    return this._subscriberId++;\n\t\t  };\n\n\t\t  PubSub.prototype.getFullEventName = function() {\n\t\t    var eventParts;\n\t\t    eventParts = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n\t\t    eventParts = eventParts.filter(function(eventPart) {\n\t\t      return eventPart != null;\n\t\t    });\n\t\t    return eventParts.join('/');\n\t\t  };\n\n\t\t  return PubSub;\n\n\t\t})();\n\n\t\tmodule.exports = new PubSub;\n\n\n\t/***/ },\n\t/* 3 */\n\t/***/ function(module, exports, __webpack_require__) {\n\n\t\tvar InMemoryRemoteClient, endpoint, pubSub,\n\t\t  slice = [].slice;\n\n\t\tendpoint = __webpack_require__(1);\n\n\t\tpubSub = __webpack_require__(2);\n\n\t\tInMemoryRemoteClient = (function() {\n\t\t  function InMemoryRemoteClient() {}\n\n\t\t  InMemoryRemoteClient.prototype.rpc = function(rpcRequest) {\n\t\t    return new Promise((function(_this) {\n\t\t      return function(resolve, reject) {\n\t\t        return endpoint.handleRPCRequest(rpcRequest, function(error, result) {\n\t\t          if (error) {\n\t\t            return reject(error);\n\t\t          } else {\n\t\t            return resolve(result);\n\t\t          }\n\t\t        });\n\t\t      };\n\t\t    })(this));\n\t\t  };\n\n\t\t  InMemoryRemoteClient.prototype.subscribe = function() {\n\t\t    var aggregateId, arg, contextName, domainEventName, fullEventName, handlerFunction, i;\n\t\t    contextName = arguments[0], arg = 3 <= arguments.length ? slice.call(arguments, 1, i = arguments.length - 1) : (i = 1, []), handlerFunction = arguments[i++];\n\t\t    domainEventName = arg[0], aggregateId = arg[1];\n\t\t    fullEventName = pubSub.getFullEventName(contextName, domainEventName, aggregateId);\n\t\t    return pubSub.subscribe(fullEventName, handlerFunction);\n\t\t  };\n\n\t\t  InMemoryRemoteClient.prototype.unsubscribe = function(subscriberId) {\n\t\t    return pubSub.unsubscribe(subscriberId);\n\t\t  };\n\n\t\t  return InMemoryRemoteClient;\n\n\t\t})();\n\n\t\tmodule.exports = new InMemoryRemoteClient;\n\n\n\t/***/ }\n\t/******/ ])\n\t});\n\t;\n\n/***/ },\n/* 22 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(23);\n\n\n/***/ },\n/* 23 */\n/***/ function(module, exports) {\n\n\tvar Logger;\n\n\tLogger = (function() {\n\t  Logger.prototype.LOG_LEVELS = {\n\t    error: 0,\n\t    warn: 1,\n\t    info: 2,\n\t    debug: 3\n\t  };\n\n\t  function Logger() {\n\t    this.setLogLevel('warn');\n\t  }\n\n\t  Logger.prototype.setLogLevel = function(logLevel) {\n\t    if (this.LOG_LEVELS[logLevel] === void 0) {\n\t      throw new Error('Logger: No valid log level');\n\t    }\n\t    return this._logLevel = this.LOG_LEVELS[logLevel];\n\t  };\n\n\t  Logger.prototype.error = function() {\n\t    return console['error'].apply(console, arguments);\n\t  };\n\n\t  Logger.prototype.warn = function() {\n\t    if (this._logLevel < 1) {\n\t      return;\n\t    }\n\t    return console['warn'].apply(console, arguments);\n\t  };\n\n\t  Logger.prototype.info = function() {\n\t    if (this._logLevel < 2) {\n\t      return;\n\t    }\n\t    return console['info'].apply(console, arguments);\n\t  };\n\n\t  Logger.prototype.debug = function() {\n\t    if (this._logLevel < 3) {\n\t      return;\n\t    }\n\t    return console['log'].apply(console, arguments);\n\t  };\n\n\t  return Logger;\n\n\t})();\n\n\tmodule.exports = new Logger;\n\n\n/***/ },\n/* 24 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(25);\n\n\n/***/ },\n/* 25 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar GlobalContext, domainEventService,\n\t  slice = [].slice;\n\n\tdomainEventService = __webpack_require__(12);\n\n\tGlobalContext = (function() {\n\t  function GlobalContext() {\n\t    this.name = 'Global';\n\t  }\n\n\t  GlobalContext.prototype.findDomainEventsByName = function() {\n\t    var domainEventsByContext, findArguments, findDomainEventsByNamePromise;\n\t    findArguments = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n\t    findDomainEventsByNamePromise = Promise.resolve();\n\t    domainEventsByContext = [];\n\t    this._getAllContexts().forEach(function(context) {\n\t      return findDomainEventsByNamePromise = findDomainEventsByNamePromise.then(function() {\n\t        return context.findDomainEventsByName.apply(context, findArguments).then(function(domainEvents) {\n\t          return domainEventsByContext.push(domainEvents);\n\t        });\n\t      });\n\t    });\n\t    return findDomainEventsByNamePromise.then((function(_this) {\n\t      return function() {\n\t        var domainEvents;\n\t        domainEvents = _this._combineDomainEventsByContext(domainEventsByContext);\n\t        domainEvents = domainEventService.sortDomainEventsById(domainEvents);\n\t        return domainEvents;\n\t      };\n\t    })(this));\n\t  };\n\n\t  GlobalContext.prototype.subscribeToDomainEvent = function(eventName, domainEventHandler) {\n\t    var subscribeToDomainEvents;\n\t    subscribeToDomainEvents = this._getAllContexts().map(function(context) {\n\t      return context.subscribeToDomainEvent(eventName, domainEventHandler);\n\t    });\n\t    return Promise.all(subscribeToDomainEvents);\n\t  };\n\n\t  GlobalContext.prototype._getAllContexts = function() {\n\t    var contextNames, eventric;\n\t    eventric = __webpack_require__(1);\n\t    contextNames = eventric.getRegisteredContextNames();\n\t    return contextNames.map(function(contextName) {\n\t      return eventric.remoteContext(contextName);\n\t    });\n\t  };\n\n\t  GlobalContext.prototype._combineDomainEventsByContext = function(domainEventsByContext) {\n\t    return domainEventsByContext.reduce(function(allDomainEvents, contextDomainEvents) {\n\t      return allDomainEvents.concat(contextDomainEvents);\n\t    }, []);\n\t  };\n\n\t  return GlobalContext;\n\n\t})();\n\n\tmodule.exports = GlobalContext;\n\n\n/***/ },\n/* 26 */\n/***/ function(module, exports) {\n\n\tvar InMemoryStore;\n\n\tInMemoryStore = (function() {\n\t  InMemoryStore.prototype.domainEventSequence = {\n\t    currentDomainEventId: 1\n\t  };\n\n\t  function InMemoryStore() {\n\t    this._domainEvents = [];\n\t  }\n\n\t  InMemoryStore.prototype.initialize = function(_context) {\n\t    this._context = _context;\n\t    return new Promise((function(_this) {\n\t      return function(resolve) {\n\t        _this._domainEventsCollectionName = _this._context.name + \".DomainEvents\";\n\t        return resolve();\n\t      };\n\t    })(this));\n\t  };\n\n\t  InMemoryStore.prototype.saveDomainEvent = function(domainEvent) {\n\t    return new Promise((function(_this) {\n\t      return function(resolve) {\n\t        domainEvent.id = _this.domainEventSequence.currentDomainEventId++;\n\t        _this._domainEvents.push(domainEvent);\n\t        return resolve(domainEvent);\n\t      };\n\t    })(this));\n\t  };\n\n\t  InMemoryStore.prototype.findDomainEventsByName = function(domainEventNames, callback) {\n\t    var events;\n\t    if (!(domainEventNames instanceof Array)) {\n\t      domainEventNames = [domainEventNames];\n\t    }\n\t    events = this._domainEvents.filter(function(domainEvent) {\n\t      return domainEventNames.indexOf(domainEvent.name) > -1;\n\t    });\n\t    return callback(null, events);\n\t  };\n\n\t  InMemoryStore.prototype.findDomainEventsByAggregateId = function(aggregateIds, callback) {\n\t    var domainEvents;\n\t    if (!(aggregateIds instanceof Array)) {\n\t      aggregateIds = [aggregateIds];\n\t    }\n\t    domainEvents = this._domainEvents.filter(function(domainEvent) {\n\t      return aggregateIds.indexOf(domainEvent.aggregate.id) > -1;\n\t    });\n\t    return callback(null, domainEvents);\n\t  };\n\n\t  InMemoryStore.prototype.findDomainEventsByNameAndAggregateId = function(domainEventNames, aggregateIds, callback) {\n\t    var domainEvents;\n\t    if (!(domainEventNames instanceof Array)) {\n\t      domainEventNames = [domainEventNames];\n\t    }\n\t    if (!(aggregateIds instanceof Array)) {\n\t      aggregateIds = [aggregateIds];\n\t    }\n\t    domainEvents = this._domainEvents.filter(function(domainEvent) {\n\t      return domainEventNames.indexOf(domainEvent.name) > -1 && aggregateIds.indexOf(domainEvent.aggregate.id) > -1;\n\t    });\n\t    return callback(null, domainEvents);\n\t  };\n\n\t  InMemoryStore.prototype.destroy = function() {\n\t    return Promise.resolve();\n\t  };\n\n\t  return InMemoryStore;\n\n\t})();\n\n\tmodule.exports = InMemoryStore;\n\n\n/***/ }\n/******/ ])\n});\n;"]}