{"version":3,"sources":["jsdelivr-header.js","/libs/ngrx-entity-relationship/src/lib/rootEntityFlags.ts","/node_modules/tslib/tslib.es6.js","/libs/ngrx-entity-relationship/src/lib/types.ts","/libs/ngrx-entity-relationship/src/lib/utils.ts","/libs/ngrx-entity-relationship/src/lib/store/actions.ts","/libs/ngrx-entity-relationship/src/lib/childEntity.ts","/libs/ngrx-entity-relationship/src/lib/childrenEntities.ts","/libs/ngrx-entity-relationship/src/lib/relatedEntity.ts","/libs/ngrx-entity-relationship/src/lib/rootEntity.ts","/libs/ngrx-entity-relationship/src/lib/store/patchState.ts","/libs/ngrx-entity-relationship/src/lib/store/injectEntity.ts","/libs/ngrx-entity-relationship/src/lib/store/fromFlat.ts","/libs/ngrx-entity-relationship/src/lib/store/fromGraph.ts","/libs/ngrx-entity-relationship/src/lib/toFactorySelector.ts","/libs/ngrx-entity-relationship/src/lib/childEntitySelector.ts","/libs/ngrx-entity-relationship/src/lib/childrenEntitiesSelector.ts","/libs/ngrx-entity-relationship/src/lib/store/ngrxEntityRelationshipReducer.ts","/libs/ngrx-entity-relationship/src/lib/relatedEntitySelector.ts","/libs/ngrx-entity-relationship/src/lib/rootEntities.ts","/libs/ngrx-entity-relationship/src/lib/rootEntitySelector.ts","/libs/ngrx-entity-relationship/src/lib/selectByIds.ts","/libs/ngrx-entity-relationship/src/lib/stateKeys.ts","/libs/ngrx-entity-relationship/src/lib/toStaticSelector.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,8RCFI,SACA,OAAO,OAAS,QAIf,OAAO,8CACR,OAAO,4CAA8C,CACjD,UAAU,I,IAIL,EAAuC,OAAO;;;;;;;;;;;;;;oFC4F9B,OAAO,O,SAYpB,EAAS,GACrB,IAAI,EAAsB,mBAAX,QAAyB,OAAO,SAAU,EAAI,GAAK,EAAE,GAAI,EAAI,EAC5E,GAAI,EAAG,OAAO,EAAE,KAAK,GACrB,GAAI,GAAyB,iBAAb,EAAE,OAAqB,MAAO,CAC1C,KAAM,WAEF,OADI,GAAK,GAAK,EAAE,SAAQ,OAAI,GACrB,CAAE,MAAO,GAAK,EAAE,KAAM,MAAO,E,GAG5C,MAAM,IAAI,UAAU,EAAI,0BAA4B,kCACxD,C,SAEgB,EAAO,EAAG,GACtB,IAAI,EAAsB,mBAAX,QAAyB,EAAE,OAAO,UACjD,IAAK,EAAG,OAAO,EACf,IAAmB,EAAY,EAA3B,EAAI,EAAE,KAAK,GAAO,EAAK,GAC3B,IACI,WAAc,IAAN,GAAgB,KAAM,MAAQ,EAAI,EAAE,QAAQ,MAAM,EAAG,KAAK,EAAE,M,CAExE,MAAO,GAAS,EAAI,CAAE,MAAO,E,SAEzB,IACQ,IAAM,EAAE,OAAS,EAAI,EAAU,SAAI,EAAE,KAAK,E,SAExC,GAAI,EAAG,MAAM,EAAE,K,EAE7B,OAAO,CACX,C,SAkBgB,EAAc,EAAI,EAAM,GACpC,GAAI,GAA6B,IAArB,UAAU,OAAc,IAAK,IAA4B,EAAxB,EAAI,EAAG,EAAI,EAAK,OAAY,EAAI,EAAG,KACxE,GAAQ,KAAK,IACR,IAAI,EAAK,MAAM,UAAU,MAAM,KAAK,EAAM,EAAG,IAClD,EAAG,GAAK,EAAK,IAGrB,OAAO,EAAG,OAAO,GAAM,MAAM,UAAU,MAAM,KAAK,GACtD,CAqCyB,OAAO,O,SCnGhB,EAAwB,GACpC,OAAO,GAAS,EAAM,sBAC1B,C,SAEgB,EAAe,GAC3B,MAAwB,iBAAV,GAAgC,OAAV,CACxC,C,SCzGgB,EACZ,GAKA,IAAM,EAAa,EACnB,QAAc,IAAV,EACA,MAAM,IAAI,MACN,yOA4BR,MAAO,CACH,WAtBiB,mBAAV,EACM,EACN,EAAM,UACA,EAAM,UAAU,iBAEhB,EAAM,WAkBnB,GAdiB,mBAAV,EACF,SAAC,GAAW,OAAC,EAAI,EAAE,QAAK,CAAS,EAC/B,EAAM,SACR,EAAM,SACgB,iBAAb,EAAM,IAEO,iBAAb,EAAM,GADf,SAAC,GAAW,OAAC,EAAI,EAAE,EAAM,SAAM,CAAS,EAIxC,EAAM,GAOnB,C,SAEgB,EAAe,EAAU,G,QACrC,IAAK,EAAO,KACR,OAAO,EAEX,IAAM,EAA8E,GACpF,EAAO,SAAQ,SAAC,EAAG,GAAM,OAAA,EAAW,KAAK,CAAC,EAAG,GAAG,I,eACpC,EAAe,G,QACvB,GAAI,EAAc,IAAI,OAAS,EAAc,GAAO,WAAa,EAAc,IAAI,M,iBAGnF,GACI,EAAc,IAAI,OAClB,EAAc,GAAO,WAAa,EAAc,IAAI,OAC7B,IAAvB,EAAc,K,cAEP,GAEX,IAAM,EAAa,EAAc,GAE3B,EAAuD,GAC7D,EAAc,SAAQ,SAAC,EAAG,GAAM,OAAA,EAAkB,KAAK,CAAC,EAAG,GAAG,I,IAC9D,IAAoC,IAAA,GAAA,OAAA,EAAA,EAAA,IAAiB,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EAAA,OAAE,CAA5C,IAAA,EAAA,EAAA,EAAA,MAAA,GAAC,EAAO,EAAA,GAAE,EAAU,EAAA,GAC3B,GAAgB,OAAZ,GAGA,EAAW,SAAS,KAAa,E,cAC1B,E,yGApBnB,IAA6C,IAAA,EAAA,EAAA,GAAU,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EAAA,OAAA,CAA5C,IAAA,EAAA,EAAA,EAAA,MAAA,G,IAAc,EAAA,GAAe,EAAA,I,uIAwBxC,OAAO,CACX,C,SAEgB,EAAc,EAAuC,G,QACjE,GAAK,EAAL,CAGA,IAAM,EAA4E,GAClF,EAAK,SAAQ,SAAC,EAAG,GAAM,OAAA,EAAS,KAAK,CAAC,EAAG,GAAG,I,eAChC,EAAc,G,QAChB,EAAQ,EAAG,IAAI,IAAiB,IAAI,IAEpC,EAAsD,GAC5D,EAAa,SAAQ,SAAC,EAAG,GAAM,OAAA,EAAiB,KAAK,CAAC,EAAG,GAAG,I,IAC5D,IAAmC,IAAA,GAAA,OAAA,EAAA,EAAA,IAAgB,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EAAA,OAAE,CAA1C,IAAA,EAAA,EAAA,EAAA,MAAA,GAAC,EAAM,EAAA,GAAE,EAAU,EAAA,GACtB,EAAM,IAAI,IAGd,EAAM,IAAI,EAAQ,E,mGAEjB,EAAG,IAAI,IACR,EAAG,IAAI,EAAc,E,MAZ7B,IAA2C,IAAA,EAAA,EAAA,GAAQ,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EAAA,OAAA,CAAxC,IAAA,EAAA,EAAA,EAAA,MAAA,G,EAAa,EAAA,GAAc,EAAA,G,oGAe1C,C,SAEgB,EAAe,GAG3B,IAFA,IAAM,EAAS,GAEN,EAAI,EAAG,EAAI,EAAK,OAAQ,GAAK,EAClC,EAAO,KAAK,EAAK,IAErB,OAAO,CACX,C,SAEgB,EAAS,GACrB,QAAS,GAA0B,iBAAV,CAC7B,C,SAEgB,EAAgD,GAC5D,OAAO,OAAO,KAAK,EACvB,C,SAEgB,EAAqD,GAEjE,OADa,EAAW,GACZ,KAAI,SAAA,GAAO,OAAA,EAAM,EAAI,GACrC,CASO,ICzIK,EDyIC,EAAY,SAAI,GACzB,IAAM,EAAmB,GAGzB,OAFA,EAAI,SAAQ,SAAC,GAAa,OAAA,EAAO,KAAK,EAAM,IAErC,CACX,E,SEjHgB,EAOZ,EACA,EACA,GAEA,IAAI,EAAsE,EAAY,WAGlF,EAAsB,GACtB,GAHJ,EAAgB,EAAc,MAAM,IAGH,MAC7B,EAAO,EAAc,GACrB,EAAgB,EAAc,MAAM,IAGlC,IAAA,EAAmD,EAAkB,GAAxD,EAAkB,EAAA,WAAM,EAAU,EAAA,GAE/C,EAAW,SACb,EACA,EACA,EACA,EACA,G,gBAEM,EAAe,EAAmB,GAClC,EAAW,EAAiB,GAE9B,EAAiB,EAAM,IAAI,GAC1B,IACD,EAAiB,IAAI,IACrB,EAAM,IAAI,EAAY,IAItB,IAAA,EAAA,EAAkE,EAAe,IAAI,IAAI,IAAe,CACxG,IAAI,SACJ,GACH,GAHI,EAAQ,EAAA,GAAE,EAAE,EAAA,GAIjB,IAAK,EAAY,EAAO,GAAW,CAC/B,OAAK,E,IACL,IAAqB,IAAA,EAAA,EAAA,EAAa,EAAa,WAAS,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EAAA,OAAE,CAArD,IAAM,EAAM,EAAA,MACb,GACK,GACD,EAAO,KAAY,EAFvB,CAMA,EAAK,EAAW,GAChB,K,oGAEJ,EAAW,IAAI,IACf,IAAM,EAAmB,IAAI,IAC7B,EAAS,IAAI,EAAoB,GACjC,EAAiB,IAAI,KAAM,EAAa,UACxC,EAAe,IAAI,IAAI,EAAY,CAAC,EAAU,G,CAElD,IAAK,EACD,MAAO,IAAI,EAGf,IAAM,EAAY,IAAI,EAClB,EAAA,EAAsD,EAAe,IAAI,IAAc,CACvF,IAAI,SACJ,GACH,GAHI,EAAM,EAAA,GAAE,EAAK,EAAA,GAIlB,GAAI,EAAY,EAAO,GAEnB,OADA,EAAO,GAAY,EACZ,EAIX,OAAQ,EACR,EAAS,IAAI,IACb,IAAM,EAAiB,IAAI,IAC3B,EAAO,IAAI,EAAoB,GAC/B,EAAe,IAAI,KAAM,EAAa,UACtC,EAAe,IAAI,EAAI,EAAa,SAAS,IAG7C,EAAQ,OAAA,OAAA,GAAI,EAAa,SAAS,IAElC,IAAI,EAAqB,E,IACzB,IAA2B,IAAA,EAAA,EAAA,GAAa,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EAAA,OAAE,CAArC,IAAM,EAAY,EAAA,MACb,EAAmB,EAAU,IAAI,EACjC,EAAe,EAAa,EAAe,EAAO,EAAO,EAAO,GACtE,GAAsB,EAClB,GACA,EAAsD,QAA3C,EAAwB,QAAxB,EAAA,EAAM,IAAI,UAAc,IAAA,OAAA,EAAA,EAAE,IAAI,UAAa,IAAA,OAAA,EAAA,EAAG,GAAI,E,mGAKrE,OAFA,EAAe,IAAI,EAAW,CAAC,EAAQ,IACvC,EAAO,GAAY,EACZ,C,EAeX,OAbA,EAAS,uBAAyB,cAClC,EAAS,mBAAqB,EAC9B,EAAS,KAAO,EAChB,EAAS,WAAa,EACtB,EAAS,cAAgB,EACzB,EAAS,MAAQ,EACjB,EAAS,SAAW,EACpB,EAAS,QAAU,W,YACf,IAA2B,IAAA,EAAA,EAAA,GAAa,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EAAA,OAAE,CAAnB,EAAA,MACN,S,qGAId,CACX,C,SCjHgB,EAOZ,EACA,EACA,GAEA,IAAI,EAAsE,EAAY,WAGlF,EAAsB,GACtB,GAHJ,EAAgB,EAAc,MAAM,IAGH,MAC7B,EAAO,EAAc,GACrB,EAAgB,EAAc,MAAM,IAGlC,IAAA,EAAmD,EAAkB,GAAxD,EAAkB,EAAA,WAAM,EAAU,EAAA,GAC/C,EAAqC,IAAI,IAEzC,EAAW,SACb,EACA,EACA,EACA,EACA,G,4BAEM,EAAe,EAAmB,GAClC,EAAW,EAAiB,GAE9B,EAAiB,EAAM,IAAI,GAC1B,IACD,EAAiB,IAAI,IACrB,EAAM,IAAI,EAAY,IAItB,IAAA,EAAA,EAA+D,EAAe,IAAI,IAAI,IAAe,CACrG,IAAI,IACJ,IACH,GAHI,EAAS,EAAA,GAAE,EAAG,EAAA,GAInB,IAAK,EAAY,EAAO,GAAY,CAChC,EAAM,G,IACN,IAAqB,IAAA,EAAA,EAAA,EAAa,EAAa,WAAS,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EAAA,OAAE,CAArD,IAAM,EAAM,EAAA,MACb,GACK,GACD,EAAO,KAAY,GAIjB,EAAK,EAAW,KAGlB,EAAI,KAAK,E,mGAGjB,EAAY,IAAI,IAChB,IAAM,EAAoB,IAAI,IAC9B,EAAU,IAAI,EAAoB,GAClC,EAAkB,IAAI,KAAM,EAAa,UACzC,EAAe,IAAI,IAAI,EAAY,CAAC,EAAW,G,CAEnD,IAAK,EAAI,OAOL,OANA,EAAO,GAAY,EAAY,IAAI,GAE9B,EAAO,KACR,EAAO,GAAY,GACnB,EAAY,IAAI,EAAU,EAAO,KAE9B,IAAI,EAGf,IAAM,EAAY,IAAI,EAAI,KAAK,KAC3B,EAAA,EAAsD,EAAe,IAAI,IAAc,CACvF,IAAI,SACJ,GACH,GAHI,EAAM,EAAA,GAAE,EAAK,EAAA,GAIlB,GAAI,EAAY,EAAO,GAEnB,OADA,EAAO,GAAY,EACZ,EAIX,EAAQ,GACR,EAAS,IAAI,IACb,IAAM,EAAiB,IAAI,IAC3B,EAAO,IAAI,EAAoB,GAC/B,EAAe,IAAI,KAAM,EAAa,U,IACtC,IAAiB,IAAA,EAAA,EAAA,GAAG,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EAAA,OAAE,CAAjB,IAAM,EAAE,EAAA,MACT,EAAe,IAAI,EAAI,EAAa,SAAS,G,uGAGjD,IAAiB,IAAA,EAAA,EAAA,GAAG,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EAAA,OAAE,CAAX,EAAE,EAAA,MAAR,IACG,EAAA,EAAkE,EAAe,IAC9E,EAAS,IAAI,IACf,CAAC,IAAI,SAAO,GAAU,GAFtB,EAAY,EAAA,GAAE,EAAW,EAAA,GAG9B,GAAI,EAAY,EAAO,GAEf,GACA,EAAM,KAAK,OAHnB,CAQA,EAAc,OAAA,OAAA,GAAI,EAAa,SAAS,IACxC,EAAe,IAAI,IACnB,IAAM,EAAuB,IAAI,IACjC,EAAa,IAAI,EAAoB,GACrC,EAAqB,IAAI,KAAM,EAAa,UAC5C,EAAqB,IAAI,EAAI,EAAa,SAAS,IAEnD,IAAI,EAAqB,E,IACzB,IAA2B,IAAA,GAAA,OAAA,EAAA,EAAA,IAAa,GAAA,EAAA,QAAA,GAAA,KAAA,GAAA,EAAA,OAAE,CAArC,IAAM,GAAY,GAAA,MACb,GAAmB,EAAU,IAAI,EACjC,GAAe,GAAa,GAAe,EAAO,EAAO,EAAa,GAC5E,GAAsB,EAClB,KACA,EAAsD,QAA3C,EAAwB,QAAxB,EAAA,EAAM,IAAI,WAAc,IAAA,OAAA,EAAA,EAAE,IAAI,WAAa,IAAA,OAAA,EAAA,EAAG,GAAI,GAC7D,EAAsD,QAA3C,EAAwB,QAAxB,EAAA,EAAM,IAAI,WAAc,IAAA,OAAA,EAAA,EAAE,IAAI,WAAa,IAAA,OAAA,EAAA,EAAG,GAAI,G,qGAGrE,EAAe,IAAO,EAAS,IAAI,EAAM,CAAC,EAAc,IACxD,EAAM,KAAK,E,oGAIf,OAFA,EAAe,IAAI,EAAW,CAAC,EAAQ,IACvC,EAAO,GAAY,EACZ,C,EAgBX,OAdA,EAAS,uBAAyB,mBAClC,EAAS,mBAAqB,EAC9B,EAAS,KAAO,EAChB,EAAS,WAAa,EACtB,EAAS,cAAgB,EACzB,EAAS,MAAQ,EACjB,EAAS,SAAW,EACpB,EAAS,QAAU,W,QACf,EAAY,Q,IACZ,IAA2B,IAAA,EAAA,EAAA,GAAa,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EAAA,OAAE,CAAnB,EAAA,MACN,S,qGAId,CACX,C,SC3IgB,EASZ,EACA,EACA,GAEA,IAAI,EAAsE,EAAY,WAGlF,EAAsB,GACtB,GAHJ,EAAgB,EAAc,MAAM,IAGH,MAC7B,EAAO,EAAc,GACrB,EAAgB,EAAc,MAAM,IAGlC,IAAA,EAAmD,EAAkB,GAAxD,EAAkB,EAAA,WAAM,EAAU,EAAA,GAC/C,EAAqC,IAAI,IAEzC,EAAW,SAAC,EAAoB,EAAc,EAAqB,G,4BAE/D,EAAmB,EAAO,GAChC,GAAK,EAAL,CAIA,IAAM,EAAe,EAAmB,GAEpC,EAAiB,EAAM,IAAI,GAC1B,IACD,EAAiB,IAAI,IACrB,EAAM,IAAI,EAAY,IAG1B,IAAM,EAAuB,GACvB,EAAqC,EAC3C,GAAI,MAAM,QAAQ,GAAS,C,IACvB,IAAiB,IAAA,EAAA,EAAA,GAAM,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EAAA,OAAE,EAAd,EAAE,EAAA,QAEL,EAAI,KAAK,E,mGAGjB,IAAK,EAAI,OAQL,OAPA,EAAO,GAAY,EAAY,IAAI,QAE9B,EAAO,KACR,EAAO,GAAY,GAEnB,EAAY,IAAI,EAAQ,EAAO,K,MAKvC,EAAI,KAAK,GAGb,IAAM,EAAY,IAAI,EAAI,KAAK,KAC3B,EAAA,EAAsD,EAAe,IAAI,IAAc,CACvF,IAAI,SACJ,GACH,GAHI,EAAM,EAAA,GAAE,EAAK,EAAA,GAIlB,GAAI,EAAY,EAAO,GAEnB,OADA,EAAO,GAAY,EACZ,EAIX,OAAQ,EACR,EAAS,IAAI,IACb,IAAM,EAAW,IAAI,IACrB,EAAO,IAAI,EAAoB,GAC/B,EAAS,IAAI,KAAM,EAAa,U,IAChC,IAAiB,IAAA,EAAA,EAAA,GAAG,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EAAA,OAAE,CAAjB,IAAM,EAAE,EAAA,MACT,EAAS,IAAI,EAAI,EAAa,SAAS,G,mGAG3C,IAAM,EAAgB,G,IACtB,IAAiB,IAAA,EAAA,EAAA,GAAG,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EAAA,OAAE,CAAX,EAAE,EAAA,MACT,GAAK,EAAa,SAAS,GAA3B,CAGI,IAAA,EAAA,EAAkE,EAAe,IAC9E,EAAS,IAAI,IACf,CAAC,IAAI,SAAO,GAAU,GAFtB,EAAY,EAAA,GAAE,EAAW,EAAA,GAG9B,GAAI,EAAY,EAAO,GAEf,GACA,EAAc,KAAK,OAH3B,CAQA,EAAc,OAAA,OAAA,GAAI,EAAa,SAAS,IACxC,EAAe,IAAI,IACnB,IAAM,EAAiB,IAAI,IAC3B,EAAa,IAAI,EAAoB,GACrC,EAAe,IAAI,KAAM,EAAa,UACtC,EAAe,IAAI,EAAI,EAAa,SAAS,IAE7C,IAAI,EAAqB,E,IACzB,IAA2B,IAAA,GAAA,OAAA,EAAA,EAAA,IAAa,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EAAA,OAAE,CAArC,IAAM,EAAY,EAAA,MACb,EAAmB,EAAU,IAAI,EACjC,EAAe,EAAa,EAAe,EAAO,EAAO,EAAa,GAC5E,GAAsB,EAClB,IACA,EAAsD,QAA3C,EAAwB,QAAxB,EAAA,EAAM,IAAI,UAAc,IAAA,OAAA,EAAA,EAAE,IAAI,UAAa,IAAA,OAAA,EAAA,EAAG,GAAI,GAC7D,EAAsD,QAA3C,EAAwB,QAAxB,EAAA,EAAM,IAAI,UAAc,IAAA,OAAA,EAAA,EAAE,IAAI,UAAa,IAAA,OAAA,EAAA,EAAG,GAAI,G,mGAGrE,EAAe,IAAO,EAAS,IAAI,EAAM,CAAC,EAAc,IACxD,EAAc,KAAK,E,qGAKvB,OAHA,EAAQ,MAAM,QAAQ,EAAO,IAAU,EAAgB,EAAc,GACrE,EAAe,IAAI,EAAW,CAAC,EAAQ,IACvC,EAAO,GAAY,EACZ,C,GAgBX,OAdA,EAAS,uBAAyB,gBAClC,EAAS,mBAAqB,EAC9B,EAAS,KAAO,EAChB,EAAS,WAAa,EACtB,EAAS,cAAgB,EACzB,EAAS,MAAQ,EACjB,EAAS,SAAW,EACpB,EAAS,QAAU,W,QACf,EAAY,Q,IACZ,IAA2B,IAAA,EAAA,EAAA,GAAa,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EAAA,OAAE,CAAnB,EAAA,MACN,S,qGAId,CACX,C,SCxIgB,EACZ,EACA,EACA,GAEA,IAGI,EAHA,EAA8D,EAAY,WAC9E,EAAgB,EAAc,MAAM,GAGpC,IAAI,EAAsB,GACrB,EAAiC,IAAY,EAAe,KAC7D,EAAc,EACd,EAAgB,EAAc,MAAM,KAEnC,EAAiC,IAAW,EAAe,KAC5D,EAAO,EACP,EAAgB,EAAc,MAAM,KAEnC,EAAiC,IAAW,EAAe,KAC5D,EAAO,EACP,EAAgB,EAAc,MAAM,IAGlC,IAAA,EAAmD,EAAkB,GAAxD,EAAkB,EAAA,WAAM,EAAU,EAAA,GAG/C,EAAsB,IAAI,IAE1B,EAAW,SACb,EACA,G,YAEM,EAA6B,mBAAjB,EAA8B,EAAa,GAAS,EACtE,GAAK,EAAL,CAIA,IAAM,EAAe,EAAmB,GACpC,EAAiB,EAAM,IAbZ,KAcV,IACD,EAAiB,IAAI,IACrB,EAAM,IAhBK,IAgBW,IAG1B,IAAM,EAAY,IAAI,EAClB,EAAA,EAAsD,EAAe,IAAI,IAAc,CACvF,IAAI,SACJ,GACH,GAHI,EAAM,EAAA,GAAE,EAAK,EAAA,GAIlB,GAAI,EAAgB,SAChB,OAAO,EAEX,GAAI,EAAY,EAAO,GACnB,OAAO,EAIX,OAAQ,EACR,EAAS,IAAI,IACb,IAAM,EAAW,IAAI,IAMrB,GALA,EAAO,IAAI,EAAoB,GAC/B,EAAS,IAAI,KAAM,EAAa,UAChC,EAAS,IAAI,EAAI,EAAa,SAAS,KAGlC,EAAa,SAAS,GAEvB,OADA,EAAe,IAAI,EAAW,CAAC,EAAQ,IAChC,EAIX,EAAQ,OAAA,OAAA,GAAI,EAAa,SAAS,IAElC,IAAI,EAAqB,E,IACzB,IAA2B,IAAA,EAAA,EAAA,GAAa,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EAAA,OAAE,CAArC,IAAM,EAAY,EAAA,MACb,EAAmB,KAAc,EACjC,EAAe,EAAa,EAAe,EAAO,EAAO,EAAO,GACtE,GAAsB,EAClB,GACA,EAAsD,QAA3C,EAAwB,QAAxB,EAAA,EAAM,IAAI,UAAc,IAAA,OAAA,EAAA,EAAE,IAAI,UAAa,IAAA,OAAA,EAAA,EAAG,GAAI,E,mGAMrE,OAFA,EAAQ,EAAc,EAAY,GAAS,EAC3C,EAAe,IAAI,EAAW,CAAC,EAAQ,IAChC,C,GAcX,OAZA,EAAS,uBAAyB,aAClC,EAAS,mBAAqB,EAC9B,EAAS,KAAO,EAChB,EAAS,WAAa,EACtB,EAAS,cAAgB,EACzB,EAAS,QAAU,W,QACf,EAAM,Q,IACN,IAA2B,IAAA,EAAA,EAAA,GAAa,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EAAA,OAAE,CAAnB,EAAA,MACN,S,qGAId,CACX,CJ1IY,4GAA6B,KACrC,6CACA,EAAA,+C,MAMA,SAA4B,EAA2B,GAA3B,KAAA,OAA2B,KAAA,WAFvC,KAAA,KAAiD,gCAA8B,U,EAMtF,EAAa,SAAC,GAAoD,OAC3E,KAAM,EAAQ,KACd,SAAU,EAAQ,SAClB,KAAM,gCAA8B,WACvC,EACD,EAAW,KAAO,gCAA8B,W,MAK5C,SAA4B,EAA2B,GAA3B,KAAA,OAA2B,KAAA,WAFvC,KAAA,KAAkD,gCAA8B,W,EAMvF,EAAc,SAAC,GAAoD,OAC5E,KAAM,EAAQ,KACd,SAAU,EAAQ,SAClB,KAAM,gCAA8B,YACvC,EACD,EAAY,KAAO,gCAA8B,YK9BjD,IAAM,EAAO,SAAI,EAAU,EAAiB,G,YACxC,GAAI,IAAW,EACX,OAAO,EAEX,IAAK,EAAS,GACV,OAAO,E,IAGX,IAAkB,IAAA,EAAA,EAAA,EAAW,IAAM,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EAAA,OAAE,CAAhC,IAAM,EAAG,EAAA,MACV,GAAK,EAAS,EAAM,IAApB,CAIA,GAAI,EAAM,KAAS,EACf,OAAA,OAAA,OAAA,OAAA,OAAA,GACO,KAAK,EAAA,IACP,GAAM,EAAW,IAI1B,IAAM,EAAe,EAAK,EAAM,GAAM,EAAQ,GAC9C,GAAI,IAAiB,EAAM,GACvB,OAAA,OAAA,OAAA,OAAA,OAAA,GACO,KAAK,EAAA,IACP,GAAM,EAAY,G,oGAK/B,OAAO,CACX,EAEa,EAAa,CACtB,KAAI,GCgCK,EA/DO,SAAC,EAAY,EAA2B,EAAa,G,sBACrE,GAAsB,iBAAX,EACP,MAAM,IAAI,MAAM,2BAEpB,IAAM,EAAK,EAAS,WAAW,GAC/B,IAAK,EACD,MAAM,IAAI,MAAM,iCAGpB,IAAM,EAAmB,EAAS,mBAAmB,kBAAoB,EAAS,mBAC5E,EAAc,EAAS,mBAAmB,aAAe,WACzD,EAAS,EAAS,mBAAmB,QAAU,MAG/C,EAAqB,EAAiB,GACtC,EAAiB,EAAc,GAAa,GAC9C,EAAe,EAGb,EAAa,G,IACnB,IAAkB,IAAA,EAAA,EAAA,EAAW,IAAO,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EAAA,OAAE,CAAjC,IAAM,EAAG,EAAA,MACN,GAAQ,EAAK,aAAgD,IAAlC,EAAK,WAAW,QAAQ,KAGvD,EAAM,GAAO,EAAO,G,mGAExB,OAAO,eAAe,EAAO,OAAO,eAAe,IAEnD,IAAM,EAAe,EAAW,G,IAChC,IAAkB,IAAA,EAAA,EAAA,EAAiB,EAAW,GAAkB,IAAE,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EAAA,OAAE,CAAzD,EAAG,EAAA,OACyB,IAA/B,EAAa,QAAQ,KAGzB,EAAM,GAAO,EAAe,G,mGAG5B,EAAa,KAAiD,IAAtC,EAAa,GAAQ,QAAQ,KACrD,EAAY,OAAA,OAAA,OAAA,OAAA,GACL,KAAY,EAAA,IACd,GAAM,IAAA,GAAA,EAAO,EAAa,KAAO,CAAE,IAAG,KAI/C,IAAI,GAAmB,E,IACvB,IAAkB,IAAA,EAAA,EAAA,EAAW,IAAM,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EAAA,OAAE,CAA1B,EAAG,EAAA,MACV,GAAI,IAAoB,GAAkB,EAAM,KAAS,EAAe,GAAM,CAC1E,GAAkB,EAClB,K,oGAaR,OAVI,IACA,EAAY,OAAA,OAAA,OAAA,OAAA,GACL,KAAY,EAAA,IACd,GAAW,OAAA,OAAA,OAAA,OAAA,GACL,EAAa,MAAY,EAAA,IAC3B,GAAK,EAAK,IAAA,KAKhB,EAAW,KAAK,EAAO,EAAe,EACjD,EC7DM,EAAa,SACf,EACA,G,QAEA,IAAK,EAAS,OAAS,EAAS,KAAK,QACjC,MAAM,IAAI,MAAM,oCAEd,IAAA,EACF,EAAI,IAAI,EAAS,KAAK,UAAY,GAD/B,EAAA,EAAA,iBAAS,IAAA,EAAG,IAAI,IAAsB,EAAE,EAAA,EAAA,kBAAU,IAAA,EAAG,IAAI,IAAgB,EAE3E,EAAI,IAAI,EAAS,KAAK,UACvB,EAAI,IAAI,EAAS,KAAK,QAAS,CAC3B,UAAS,EACT,WAAU,IAGlB,EAAU,IAAI,G,IACd,IAA2B,IAAA,EAAA,EAAA,EAAS,eAAa,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EAAA,OAAE,CAA9C,IAAM,EAAY,EAAA,MACnB,EAAW,IAAI,EAAa,UAC5B,EAAW,EAAc,E,mGAE7B,OAAO,CACX,EAEM,EAAO,SAAC,EAAY,EAA2B,G,gBAC3C,EAAM,EAAW,EAAU,IAAI,K,IACrC,IAA6C,IAAA,EAAA,E,SRsGhB,GAC7B,IAAM,EAAwB,GAG9B,OAFA,EAAI,SAAQ,SAAC,EAAU,GAAW,OAAA,EAAO,KAAK,CAAC,EAAK,GAAO,IAEpD,CACX,CQ3GiD,CAAW,IAAI,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EAAA,OAAE,CAAnD,IAAA,EAAA,EAAA,EAAA,MAAA,GAAC,EAAG,EAAA,GAAE,EAAA,EAAA,GAAC,EAAS,EAAA,UAAE,EAAU,EAAA,WAE7B,EADQ,MAAM,QAAQ,EAAK,IACR,EAAK,GAAO,CAAC,EAAK,I,IAE3C,IAAqB,IAAA,GAAA,OAAA,EAAA,EAAA,IAAQ,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EAAA,OAAE,CAA1B,IAAM,EAAM,EAAA,MACb,GAAK,E,IAIL,IAA6B,IAAA,GAAA,OAAA,EAAA,EAAA,EAAU,KAAU,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EAAA,OAAE,CAA9C,IAAM,EAAc,EAAA,MACrB,EAAQ,EAAkB,EAAO,EAAgB,EAAQ,CAAC,WAAU,EAAA,GAAA,EAAM,EAAU,M,ySAKhG,OAAO,CACX,EAEa,EACL,EC7CK,EAAO,SAAC,EAAY,EAA2B,G,gBAElD,EADQ,MAAM,QAAQ,GACH,EAAO,CAAC,GAG3B,EAA+B,G,IACrC,IAA2B,IAAA,EAAA,EAAA,EAAS,eAAa,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EAAA,OAAE,CAA9C,IAAM,EAAY,EAAA,MACnB,EAAW,KAAK,EAAa,S,uGAGjC,IAAqB,IAAA,EAAA,EAAA,GAAQ,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EAAA,OAAE,CAA1B,IAAM,EAAM,EAAA,MACb,GAAK,EAAL,CAIA,EAAQ,EAAkB,EAAO,EAAU,EAAQ,CAAC,WAAU,I,IAC9D,IAA2B,IAAA,GAAA,OAAA,EAAA,EAAA,EAAS,gBAAa,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EAAA,OAAE,CAAxC,EAAY,EAAA,MACnB,EAAQ,EAAK,EAAO,EAAc,EAAO,EAAa,U,uMAI9D,OAAO,CACX,EAEa,EAAY,CACrB,KAAI,G,SC7BQ,EAAqC,GAUjD,IAAM,EAAU,WACoB,mBAArB,EAAS,SAChB,EAAS,S,EAIX,EAAW,SAAC,GACd,IAAM,EAAgB,SAAC,GAAa,OAAA,EAAS,EAAO,EAAI,EAGxD,OAFA,EAAc,QAAU,EAEjB,C,EAIX,OAFA,EAAS,QAAU,EAEZ,CACX,C,8ECMI,EACA,EACA,EACA,GAKA,SAAS,IACL,IAAI,EAAsE,EAAY,WAClF,EAAc,EAAe,GAAQ,OAAO,EAKhD,OAJI,EAAe,EAAc,MAC7B,EAAc,EAAc,GAC5B,EAAgB,EAAc,MAAM,IAEjC,EACD,EAAW,WAAA,EAAA,EAAA,CACP,EACA,EACA,EACA,GAAW,EACR,KAEP,EAAW,WAAA,EAAA,EAAA,CACP,EACA,EACA,GAAQ,EACL,I,CAKjB,OAFA,EAAS,uBAAyB,sBAE3B,CACX,E,yDCjCI,EACA,EACA,EACA,GAKA,SAAS,IACL,IAAI,EAAsE,EAAY,WAClF,EAAc,EAAe,GAAQ,OAAO,EAKhD,OAJI,EAAe,EAAc,MAC7B,EAAc,EAAc,GAC5B,EAAgB,EAAc,MAAM,IAEjC,EACD,EAAgB,WAAA,EAAA,EAAA,CACZ,EACA,EACA,EACA,GAAW,EACR,KAEP,EAAgB,WAAA,EAAA,EAAA,CACZ,EACA,EACA,GAAQ,EACL,I,CAKjB,OAFA,EAAS,uBAAyB,2BAE3B,CACX,E,kFCzDI,GAEA,OAAO,SAAC,EAAsB,GAC1B,OAAI,EAAO,OAAS,gCAA8B,YACvC,EAAQ,EAAU,KAAK,EAAO,EAAO,SAAU,EAAO,MAAO,GAEpE,EAAO,OAAS,gCAA8B,WACvC,EAAQ,EAAc,EAAO,EAAO,SAAU,EAAO,MAAO,GAEhE,EAAQ,EAAO,E,CAE9B,E,kFCqCI,EACA,EACA,EACA,GAKA,SAAS,IACL,IAAI,EAAsE,EAAY,WAClF,EAAc,EAKlB,OAJI,EAAe,EAAc,MAC7B,EAAc,EAAc,GAC5B,EAAgB,EAAc,MAAM,IAEjC,EACD,EAAa,WAAA,EAAA,EAAA,CACT,EACA,EACA,EACA,GAAW,EACR,KAEP,EAAa,WAAA,EAAA,EAAA,CACT,EACA,EACA,GAAQ,EACL,I,CAKjB,OAFA,EAAS,uBAAyB,wBAE3B,CACX,E,wBC5EI,GAEA,IAAM,EAAW,IAAI,IACf,EAA2C,GAE3C,EAAW,SACb,EACA,G,YAEM,EAA+B,mBAAlB,EAA+B,EAAc,GAAS,EACzE,IAAK,EACD,OAAO,EAGX,IAAM,EAAW,EAAI,KAAK,KACpB,EAAa,EAAS,IAAI,IAAa,EAE7C,GAAI,EAAgB,SAChB,OAAO,EAGX,IAAM,EAAqC,G,IAC3C,IAAiB,IAAA,EAAA,EAAA,GAAG,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EAAA,OAAE,CAAjB,IAAM,EAAE,EAAA,OACH,EAAS,EAAa,EAAO,KAInC,EAAM,KAAK,E,mGAGf,IAAI,EAAQ,EACR,EAAQ,EAAM,SAAW,EAAW,O,IACxC,IAAqB,IAAA,EAAA,EAAA,GAAK,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EAAA,OAAE,CAAvB,IAAM,EAAM,EAAA,MACb,IAAK,IAAU,IAAe,EAAW,IAAU,EAAW,KAAW,EAAQ,CAC7E,GAAQ,EACR,K,CAEJ,GAAS,C,mGAEb,OAAI,EACO,GAGX,EAAS,IAAI,EAAU,GAChB,E,EAYX,OAVA,EAAS,uBAAyB,eAClC,EAAS,KAAO,EAAa,KAC7B,EAAS,mBAAqB,EAAa,mBAC3C,EAAS,WAAa,EAAa,WACnC,EAAS,cAAgB,EAAa,cACtC,EAAS,QAAU,WACf,EAAS,QACT,EAAa,S,EAGV,CACX,E,iECzBI,EACA,EACA,GAKA,SAAS,EACL,GAEA,IAAI,EAA8D,EAAY,WACxE,EAAc,EAAe,QAAU,EAAY,EACrD,EAAc,EAAe,GAAU,EAAS,EAKpD,OAJI,EAAe,KACf,EAAc,EACd,EAAgB,EAAc,MAAM,IAEjC,GAAe,EAChB,EAAU,WAAA,EAAA,EAAA,CAAC,EAAiB,EAAa,GAAW,EAAK,KACzD,EACA,EAAU,WAAA,EAAA,EAAA,CAAC,EAAiB,GAAW,EAAK,KAC5C,EACA,EAAU,WAAA,EAAA,EAAA,CAAC,EAAiB,GAAW,EAAK,KAC5C,EAAU,WAAA,EAAA,EAAA,CAAC,GAAe,EAAK,I,CAIzC,OAFA,EAAS,uBAAyB,qBAE3B,CACX,E,uBCxE+C,EAAuC,GAClF,OAAO,SAAA,GAAS,OAAA,EAAS,EAAO,EAAI,CACxC,E,qBCwBE,EAAoB,EAAoB,GACtC,IAAM,EAAwD,SAAC,GAC3D,IAAM,EAAQ,EAAS,GACvB,MAAO,CACH,IAAK,EAAS,EAAM,GAAU,EAAM,IACpC,SAAU,EAAM,G,EAOxB,OAJA,EAAS,OAAS,EAClB,EAAS,YAAc,EACvB,EAAS,iBAAmB,EAErB,CACX,E,kDCpCI,EAIA,GAKA,OAAO,EAAkB,EAAlB,CAA4B,EACvC,E","file":"/npm/ngrx-entity-relationship@1.7.1/bundles/ngrx-entity-relationship.umd.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/ngrx-entity-relationship@1.7.1/bundles/ngrx-entity-relationship.umd.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","declare const window: any;\ndeclare const global: any;\n\n// istanbul ignore else\nif (window) {\n    window.global = window;\n}\n\n// istanbul ignore else\nif (!global['ngrx-entity-relationship-rootEntityFlags']) {\n    global['ngrx-entity-relationship-rootEntityFlags'] = {\n        disabled: false,\n    };\n}\n\nexport const rootEntityFlags: {disabled: boolean} = global['ngrx-entity-relationship-rootEntityFlags'];\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","declare global {\n    // tslint:disable-next-line:class-name\n    export interface SELECTOR_META {\n        flatKey?: string;\n        gqlFields?: Array<string | number> | Record<string, string>;\n    }\n}\n\nexport type UNKNOWN = any;\n\nexport interface STORE_SELECTOR<T, V> {\n    (state: T): V;\n    idsKey?: keyof any;\n    entitiesKey?: keyof any;\n    originalSelector?: (state: T) => V;\n}\n\nexport type ID_SELECTOR<E> = (entity: E) => ID_TYPES;\n\nexport interface ACTION {\n    type: string;\n}\n\nexport type FILTER_PROPS<Base, Condition> = {\n    [Key in keyof Base]: Base[Key] extends Condition ? Key : never;\n}[keyof Base];\n\nexport type ENTITY_STATE_CUSTOM<EK extends keyof any, IK extends keyof any, ENTITY> = {\n    [key in EK]: {\n        [id in ID_TYPES]?: ENTITY | undefined;\n    };\n} & {\n    [key in IK]?: Array<ID_TYPES>;\n};\n\nexport interface ENTITY_STATE<E> {\n    ids?: Array<ID_TYPES>;\n    entities: {\n        [id in ID_TYPES]?: E;\n    };\n}\n\nexport type FEATURE_SELECTOR<S, E> =\n    | STORE_SELECTOR<S, ENTITY_STATE<E>>\n    | {\n          collection: STORE_SELECTOR<S, ENTITY_STATE<E>>;\n          id: string | number;\n      }\n    | {\n          collection: STORE_SELECTOR<S, ENTITY_STATE<E>>;\n          id: ID_SELECTOR<E>;\n      }\n    | {\n          selectors: {\n              selectCollection: STORE_SELECTOR<S, ENTITY_STATE<E>>;\n          };\n          selectId?: ID_SELECTOR<E>; // EntityCollectionService doesn't have it but EntityCollectionServiceBase does.\n      };\n\nexport type CACHE_CHECKS = Map<ID_TYPES | null, UNKNOWN>;\nexport type CACHE_CHECKS_SET<S> = Map<STORE_SELECTOR<S, ENTITY_STATE<UNKNOWN>>, CACHE_CHECKS>;\nexport type CACHE<S> = Map<string, Map<string | null, [CACHE_CHECKS_SET<S>, UNKNOWN]>>;\n\nexport interface ENTITY_SELECTOR<S = any, E = any> {\n    ngrxEntityRelationship: string;\n    meta: SELECTOR_META;\n    collectionSelector: STORE_SELECTOR<S, ENTITY_STATE<E>>;\n    idSelector: ID_SELECTOR<E>;\n    relationships: Array<HANDLER_RELATED_ENTITY<S, E>>;\n}\n\nexport type HANDLER_ENTITY<E, S = any, I extends ID_TYPES = ID_TYPES> = HANDLER_ROOT_ENTITY<S, E, E, I>;\n\nexport type HANDLER_ENTITIES<E, S = any, I extends ID_TYPES = ID_TYPES> = HANDLER_ROOT_ENTITIES<S, E, E, I>;\n\nexport type HANDLER_ROOT_ENTITY<S, E, T, I> = ENTITY_SELECTOR<S, E> & {\n    (state: S, id: undefined | null | I | STORE_SELECTOR<S, undefined | null | I>): undefined | T;\n    release(): void;\n};\n\nexport type HANDLER_ROOT_ENTITIES<S, E, T, I> = ENTITY_SELECTOR<S, E> & {\n    (state: S, id: undefined | null | Array<I> | STORE_SELECTOR<S, undefined | null | Array<I>>): Array<T>;\n    release(): void;\n};\n\nexport type HANDLER_RELATED_ENTITY<S, E> = ENTITY_SELECTOR<S /* TODO has to be a related entity */> & {\n    (\n        cachePrefix: string,\n        state: S,\n        cacheRefs: CACHE<S>,\n        source: E,\n        sourceIdSelector: ID_SELECTOR<any /* TODO has to be a related entity */>,\n    ): string | undefined;\n    keyId: keyof any;\n    keyValue: keyof any;\n    release(): void;\n};\n\nexport type EMPTY_TYPES = undefined | null;\n\nexport type ID_TYPES = string | number;\n\nexport type ID_FILTER_PROPS<RELATED_ENTITY, TYPES> = NonNullable<FILTER_PROPS<RELATED_ENTITY, TYPES | EMPTY_TYPES>>;\n\nexport type VALUES_FILTER_PROPS<PARENT_ENTITY, RELATED_ENTITY> = NonNullable<\n    FILTER_PROPS<PARENT_ENTITY, RELATED_ENTITY | EMPTY_TYPES>\n>;\n\nexport type TRANSFORMER<F, T> = (entity: F) => T;\n\nexport function isBuiltInSelector<S, E>(value: UNKNOWN): value is HANDLER_RELATED_ENTITY<S, E> {\n    return value && value.ngrxEntityRelationship;\n}\n\nexport function isSelectorMeta(value: UNKNOWN): value is SELECTOR_META {\n    return typeof value === 'object' && value !== null;\n}\n","import {\n    CACHE_CHECKS,\n    CACHE_CHECKS_SET,\n    ENTITY_STATE,\n    FEATURE_SELECTOR,\n    ID_SELECTOR,\n    ID_TYPES,\n    STORE_SELECTOR,\n    UNKNOWN,\n} from './types';\n\nexport function normalizeSelector<S, E>(\n    selector: FEATURE_SELECTOR<S, E>,\n): {\n    collection: STORE_SELECTOR<S, ENTITY_STATE<E>>;\n    id: ID_SELECTOR<E>;\n} {\n    const local: any = selector;\n    if (local === undefined) {\n        throw new Error(\n            `selector is undefined. Circular dependencies have been detected. You need to put selectors that use ` +\n                `nrx-entity-relationship functions into a separate file: ` +\n                `https://github.com/satanTime/ngrx-entity-relationship#circular-dependency`,\n        );\n    }\n\n    let collection: STORE_SELECTOR<S, ENTITY_STATE<E>>;\n    if (typeof local === 'function') {\n        collection = local;\n    } else if (local.selectors) {\n        collection = local.selectors.selectCollection;\n    } else {\n        collection = local.collection;\n    }\n\n    let id: ID_SELECTOR<E>;\n    if (typeof local === 'function') {\n        id = (v: any) => (v ? v.id : undefined);\n    } else if (local.selectId) {\n        id = local.selectId;\n    } else if (typeof local.id === 'string') {\n        id = (v: any) => (v ? v[local.id] : undefined);\n    } else if (typeof local.id === 'number') {\n        id = (v: any) => (v ? v[local.id] : undefined);\n    } else {\n        id = local.id;\n    }\n\n    return {\n        collection,\n        id,\n    };\n}\n\nexport function verifyCache<S>(state: S, checks: CACHE_CHECKS_SET<S>): boolean {\n    if (!checks.size) {\n        return false;\n    }\n    const checksData: Array<[STORE_SELECTOR<S, ENTITY_STATE<UNKNOWN>>, CACHE_CHECKS]> = [];\n    checks.forEach((v, k) => checksData.push([k, v]));\n    for (const [checkSelector, checkEntities] of checksData) {\n        if (checkEntities.has(null) && checkSelector(state).entities === checkEntities.get(null)) {\n            continue;\n        }\n        if (\n            checkEntities.has(null) &&\n            checkSelector(state).entities !== checkEntities.get(null) &&\n            checkEntities.size === 1\n        ) {\n            return false;\n        }\n        const checkState = checkSelector(state);\n\n        const checkEntitiesData: Array<[ID_TYPES | null, UNKNOWN]> = [];\n        checkEntities.forEach((v, k) => checkEntitiesData.push([k, v]));\n        for (const [checkId, checkValue] of checkEntitiesData) {\n            if (checkId === null) {\n                continue;\n            }\n            if (checkState.entities[checkId] !== checkValue) {\n                return false;\n            }\n        }\n    }\n    return true;\n}\n\nexport function mergeCache<S>(from: CACHE_CHECKS_SET<S> | undefined, to: CACHE_CHECKS_SET<S>): void {\n    if (!from) {\n        return;\n    }\n    const fromData: Array<[STORE_SELECTOR<S, ENTITY_STATE<UNKNOWN>>, CACHE_CHECKS]> = [];\n    from.forEach((v, k) => fromData.push([k, v]));\n    for (const [fromSelector, fromEntities] of fromData) {\n        const toMap = to.get(fromSelector) || new Map();\n\n        const fromEntitiesData: Array<[ID_TYPES | null, UNKNOWN]> = [];\n        fromEntities.forEach((v, k) => fromEntitiesData.push([k, v]));\n        for (const [fromId, fromEntity] of fromEntitiesData) {\n            if (toMap.has(fromId)) {\n                continue;\n            }\n            toMap.set(fromId, fromEntity);\n        }\n        if (!to.has(fromSelector)) {\n            to.set(fromSelector, toMap);\n        }\n    }\n}\n\nexport function argsToArray<T>(args: {length: number} & {[key: number]: T}): Array<T> {\n    const result = [];\n    // tslint:disable-next-line:prefer-for-of\n    for (let i = 0; i < args.length; i += 1) {\n        result.push(args[i]);\n    }\n    return result;\n}\n\nexport function isObject(value: UNKNOWN): value is object {\n    return !!value && typeof value === 'object';\n}\n\nexport function objectKeys<T extends object, K extends keyof T>(value: T): Array<K> {\n    return Object.keys(value) as Array<K>;\n}\n\nexport function objectValues<T extends object, K extends T[keyof T]>(value: T): Array<K> {\n    const keys = objectKeys(value);\n    return keys.map(key => value[key]) as Array<K>;\n}\n\nexport function mapEntries<K, T>(set: Map<K, T>): Array<[K, T]> {\n    const result: Array<[K, T]> = [];\n    set.forEach((value: T, key: K) => result.push([key, value]));\n\n    return result;\n}\n\nexport const mapValues = <T>(set: {forEach(a1: (value: T) => void): void}): Array<T> => {\n    const result: Array<T> = [];\n    set.forEach((value: T) => result.push(value));\n\n    return result;\n};\n","import {ENTITY_SELECTOR} from '../types';\n\nexport enum ngrxEntityRelationshipActions {\n    reduceFlat = '[NGRX-Entity-Relationship] Flat',\n    reduceGraph = '[NGRX-Entity-Relationship] Graph',\n}\n\nexport class ReduceFlat {\n    public readonly type: ngrxEntityRelationshipActions.reduceFlat = ngrxEntityRelationshipActions.reduceFlat;\n\n    constructor(public readonly data: any, public readonly selector: ENTITY_SELECTOR) {}\n}\n\n// Because of redux it can't be a ReduceGraph instance.\nexport const reduceFlat = (payload: {data: any; selector: ENTITY_SELECTOR}) => ({\n    data: payload.data,\n    selector: payload.selector,\n    type: ngrxEntityRelationshipActions.reduceFlat,\n});\nreduceFlat.type = ngrxEntityRelationshipActions.reduceFlat;\n\nexport class ReduceGraph {\n    public readonly type: ngrxEntityRelationshipActions.reduceGraph = ngrxEntityRelationshipActions.reduceGraph;\n\n    constructor(public readonly data: any, public readonly selector: ENTITY_SELECTOR) {}\n}\n\n// Because of redux it can't be a ReduceGraph instance.\nexport const reduceGraph = (payload: {data: any; selector: ENTITY_SELECTOR}) => ({\n    data: payload.data,\n    selector: payload.selector,\n    type: ngrxEntityRelationshipActions.reduceGraph,\n});\nreduceGraph.type = ngrxEntityRelationshipActions.reduceGraph;\n","import {\n    CACHE,\n    CACHE_CHECKS_SET,\n    FEATURE_SELECTOR,\n    HANDLER_RELATED_ENTITY,\n    ID_FILTER_PROPS,\n    ID_SELECTOR,\n    ID_TYPES,\n    isSelectorMeta,\n    UNKNOWN,\n    VALUES_FILTER_PROPS,\n} from './types';\nimport {argsToArray, mergeCache, normalizeSelector, objectValues, verifyCache} from './utils';\n\nexport function childEntity<\n    STORE,\n    PARENT_ENTITY,\n    RELATED_ENTITY,\n    RELATED_KEY_IDS extends ID_FILTER_PROPS<RELATED_ENTITY, ID_TYPES> = ID_FILTER_PROPS<RELATED_ENTITY, ID_TYPES>,\n    RELATED_KEY_VALUES extends VALUES_FILTER_PROPS<PARENT_ENTITY, RELATED_ENTITY> = VALUES_FILTER_PROPS<\n        PARENT_ENTITY,\n        RELATED_ENTITY\n    >,\n>(\n    featureSelector: FEATURE_SELECTOR<STORE, RELATED_ENTITY>,\n    keyId: RELATED_KEY_IDS,\n    keyValue: RELATED_KEY_VALUES,\n    metaOrRelationship?: SELECTOR_META | HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>,\n    ...relationships: Array<HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>>\n): HANDLER_RELATED_ENTITY<STORE, PARENT_ENTITY>;\n\nexport function childEntity<\n    STORE,\n    PARENT_ENTITY,\n    RELATED_ENTITY,\n    RELATED_KEY_IDS extends ID_FILTER_PROPS<RELATED_ENTITY, ID_TYPES>,\n    RELATED_KEY_VALUES extends VALUES_FILTER_PROPS<PARENT_ENTITY, RELATED_ENTITY>,\n>(\n    featureSelector: FEATURE_SELECTOR<STORE, RELATED_ENTITY>,\n    keyId: RELATED_KEY_IDS,\n    keyValue: RELATED_KEY_VALUES,\n): HANDLER_RELATED_ENTITY<STORE, PARENT_ENTITY> {\n    let relationships: Array<HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>> = argsToArray(arguments);\n    relationships = relationships.slice(3);\n\n    let meta: SELECTOR_META = {};\n    if (isSelectorMeta(relationships[0])) {\n        meta = relationships[0];\n        relationships = relationships.slice(1);\n    }\n\n    const {collection: collectionSelector, id: idSelector} = normalizeSelector(featureSelector);\n\n    const callback = (\n        cacheLevel: string,\n        state: STORE,\n        cache: CACHE<STORE>,\n        source: PARENT_ENTITY,\n        idParentSelector: ID_SELECTOR<PARENT_ENTITY>,\n    ) => {\n        const featureState = collectionSelector(state);\n        const parentId = idParentSelector(source);\n\n        let cacheDataLevel = cache.get(cacheLevel);\n        if (!cacheDataLevel) {\n            cacheDataLevel = new Map();\n            cache.set(cacheLevel, cacheDataLevel);\n        }\n\n        // maybe we don't need to scan the entities.\n        let [idChecks, id]: [CACHE_CHECKS_SET<STORE>, ID_TYPES | undefined] = cacheDataLevel.get(`!${parentId}`) || [\n            new Map(),\n            undefined,\n        ];\n        if (!verifyCache(state, idChecks)) {\n            id = undefined;\n            for (const entity of objectValues(featureState.entities)) {\n                if (\n                    !entity ||\n                    entity[keyId] !== (parentId as any as RELATED_ENTITY[RELATED_KEY_IDS]) // todo fix any A8\n                ) {\n                    continue;\n                }\n                id = idSelector(entity);\n                break;\n            }\n            idChecks = new Map();\n            const idChecksEntities = new Map();\n            idChecks.set(collectionSelector, idChecksEntities);\n            idChecksEntities.set(null, featureState.entities);\n            cacheDataLevel.set(`!${parentId}`, [idChecks, id]);\n        }\n        if (!id) {\n            return `!${parentId}`;\n        }\n\n        const cacheHash = `#${id}`;\n        let [checks, value]: [CACHE_CHECKS_SET<STORE>, UNKNOWN] = cacheDataLevel.get(cacheHash) || [\n            new Map(),\n            undefined,\n        ];\n        if (verifyCache(state, checks)) {\n            source[keyValue] = value;\n            return cacheHash;\n        }\n\n        // building a new value.\n        value = undefined;\n        checks = new Map();\n        const checksEntities = new Map();\n        checks.set(collectionSelector, checksEntities);\n        checksEntities.set(null, featureState.entities);\n        checksEntities.set(id, featureState.entities[id]);\n\n        // we have to clone it because we are going to update it with relationships.\n        value = {...featureState.entities[id]} as RELATED_ENTITY;\n\n        let cacheRelLevelIndex = 0;\n        for (const relationship of relationships) {\n            const cacheRelLevel = `${cacheLevel}:${cacheRelLevelIndex}`;\n            const cacheRelHash = relationship(cacheRelLevel, state, cache, value, idSelector);\n            cacheRelLevelIndex += 1;\n            if (cacheRelHash) {\n                mergeCache(cache.get(cacheRelLevel)?.get(cacheRelHash)?.[0], checks);\n            }\n        }\n        cacheDataLevel.set(cacheHash, [checks, value]);\n        source[keyValue] = value as PARENT_ENTITY[RELATED_KEY_VALUES];\n        return cacheHash;\n    };\n    callback.ngrxEntityRelationship = 'childEntity';\n    callback.collectionSelector = collectionSelector;\n    callback.meta = meta;\n    callback.idSelector = idSelector;\n    callback.relationships = relationships;\n    callback.keyId = keyId;\n    callback.keyValue = keyValue;\n    callback.release = () => {\n        for (const relationship of relationships) {\n            relationship.release();\n        }\n    };\n\n    return callback;\n}\n","import {\n    CACHE,\n    CACHE_CHECKS_SET,\n    FEATURE_SELECTOR,\n    HANDLER_RELATED_ENTITY,\n    ID_FILTER_PROPS,\n    ID_SELECTOR,\n    ID_TYPES,\n    isSelectorMeta,\n    UNKNOWN,\n    VALUES_FILTER_PROPS,\n} from './types';\nimport {argsToArray, mergeCache, normalizeSelector, objectValues, verifyCache} from './utils';\n\nexport function childrenEntities<\n    STORE,\n    PARENT_ENTITY,\n    RELATED_ENTITY,\n    RELATED_KEY_IDS extends ID_FILTER_PROPS<RELATED_ENTITY, ID_TYPES> = ID_FILTER_PROPS<RELATED_ENTITY, ID_TYPES>,\n    RELATED_KEY_VALUES_ARRAYS extends VALUES_FILTER_PROPS<PARENT_ENTITY, Array<RELATED_ENTITY>> = VALUES_FILTER_PROPS<\n        PARENT_ENTITY,\n        Array<RELATED_ENTITY>\n    >,\n>(\n    featureSelector: FEATURE_SELECTOR<STORE, RELATED_ENTITY>,\n    keyId: RELATED_KEY_IDS,\n    keyValue: RELATED_KEY_VALUES_ARRAYS,\n    metaOrRelationship?: SELECTOR_META | HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>,\n    ...relationships: Array<HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>>\n): HANDLER_RELATED_ENTITY<STORE, PARENT_ENTITY>;\n\nexport function childrenEntities<\n    STORE,\n    PARENT_ENTITY,\n    RELATED_ENTITY,\n    RELATED_KEY_IDS extends ID_FILTER_PROPS<RELATED_ENTITY, ID_TYPES>,\n    RELATED_KEY_VALUES_ARRAYS extends VALUES_FILTER_PROPS<PARENT_ENTITY, Array<RELATED_ENTITY>>,\n>(\n    featureSelector: FEATURE_SELECTOR<STORE, RELATED_ENTITY>,\n    keyId: RELATED_KEY_IDS,\n    keyValue: RELATED_KEY_VALUES_ARRAYS,\n): HANDLER_RELATED_ENTITY<STORE, PARENT_ENTITY> {\n    let relationships: Array<HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>> = argsToArray(arguments);\n    relationships = relationships.slice(3);\n\n    let meta: SELECTOR_META = {};\n    if (isSelectorMeta(relationships[0])) {\n        meta = relationships[0];\n        relationships = relationships.slice(1);\n    }\n\n    const {collection: collectionSelector, id: idSelector} = normalizeSelector(featureSelector);\n    const emptyResult: Map<UNKNOWN, UNKNOWN> = new Map();\n\n    const callback = (\n        cacheLevel: string,\n        state: STORE,\n        cache: CACHE<STORE>,\n        source: PARENT_ENTITY,\n        idParentSelector: ID_SELECTOR<PARENT_ENTITY>,\n    ) => {\n        const featureState = collectionSelector(state);\n        const parentId = idParentSelector(source);\n\n        let cacheDataLevel = cache.get(cacheLevel);\n        if (!cacheDataLevel) {\n            cacheDataLevel = new Map();\n            cache.set(cacheLevel, cacheDataLevel);\n        }\n\n        // maybe we don't need to scan the entities.\n        let [idsChecks, ids]: [CACHE_CHECKS_SET<STORE>, Array<ID_TYPES>] = cacheDataLevel.get(`!${parentId}`) || [\n            new Map(),\n            [],\n        ];\n        if (!verifyCache(state, idsChecks)) {\n            ids = [];\n            for (const entity of objectValues(featureState.entities)) {\n                if (\n                    !entity ||\n                    entity[keyId] !== (parentId as any as RELATED_ENTITY[RELATED_KEY_IDS]) // todo fix any A8\n                ) {\n                    continue;\n                }\n                const id = idSelector(entity);\n                // istanbul ignore else\n                if (id) {\n                    ids.push(id);\n                }\n            }\n            idsChecks = new Map();\n            const idsChecksEntities = new Map();\n            idsChecks.set(collectionSelector, idsChecksEntities);\n            idsChecksEntities.set(null, featureState.entities);\n            cacheDataLevel.set(`!${parentId}`, [idsChecks, ids]);\n        }\n        if (!ids.length) {\n            source[keyValue] = emptyResult.get(parentId);\n            // istanbul ignore else\n            if (!source[keyValue]) {\n                source[keyValue] = [] as PARENT_ENTITY[RELATED_KEY_VALUES_ARRAYS];\n                emptyResult.set(parentId, source[keyValue]);\n            }\n            return `!${parentId}`;\n        }\n\n        const cacheHash = `#${ids.join(',')}`;\n        let [checks, value]: [CACHE_CHECKS_SET<STORE>, UNKNOWN] = cacheDataLevel.get(cacheHash) || [\n            new Map(),\n            undefined,\n        ];\n        if (verifyCache(state, checks)) {\n            source[keyValue] = value;\n            return cacheHash;\n        }\n\n        // building a new value.\n        value = [];\n        checks = new Map();\n        const checksEntities = new Map();\n        checks.set(collectionSelector, checksEntities);\n        checksEntities.set(null, featureState.entities);\n        for (const id of ids) {\n            checksEntities.set(id, featureState.entities[id]);\n        }\n\n        for (const id of ids) {\n            let [entityChecks, entityValue]: [CACHE_CHECKS_SET<STORE>, UNKNOWN] = cacheDataLevel.get(\n                `${cacheHash}:${id}`,\n            ) || [new Map(), undefined];\n            if (verifyCache(state, entityChecks)) {\n                // istanbul ignore else\n                if (entityValue) {\n                    value.push(entityValue);\n                }\n                continue;\n            }\n            // we have to clone it because we are going to update it with relationships.\n            entityValue = {...featureState.entities[id]} as RELATED_ENTITY;\n            entityChecks = new Map();\n            const entityChecksEntities = new Map();\n            entityChecks.set(collectionSelector, entityChecksEntities);\n            entityChecksEntities.set(null, featureState.entities);\n            entityChecksEntities.set(id, featureState.entities[id]);\n\n            let cacheRelLevelIndex = 0;\n            for (const relationship of relationships) {\n                const cacheRelLevel = `${cacheLevel}:${cacheRelLevelIndex}`;\n                const cacheRelHash = relationship(cacheRelLevel, state, cache, entityValue, idSelector);\n                cacheRelLevelIndex += 1;\n                if (cacheRelHash) {\n                    mergeCache(cache.get(cacheRelLevel)?.get(cacheRelHash)?.[0], checks);\n                    mergeCache(cache.get(cacheRelLevel)?.get(cacheRelHash)?.[0], entityChecks);\n                }\n            }\n            cacheDataLevel.set(`${cacheHash}:${id}`, [entityChecks, entityValue]);\n            value.push(entityValue);\n        }\n        cacheDataLevel.set(cacheHash, [checks, value]);\n        source[keyValue] = value as PARENT_ENTITY[RELATED_KEY_VALUES_ARRAYS];\n        return cacheHash;\n    };\n    callback.ngrxEntityRelationship = 'childrenEntities';\n    callback.collectionSelector = collectionSelector;\n    callback.meta = meta;\n    callback.idSelector = idSelector;\n    callback.relationships = relationships;\n    callback.keyId = keyId;\n    callback.keyValue = keyValue;\n    callback.release = () => {\n        emptyResult.clear();\n        for (const relationship of relationships) {\n            relationship.release();\n        }\n    };\n\n    return callback;\n}\n","import {\n    CACHE,\n    CACHE_CHECKS_SET,\n    FEATURE_SELECTOR,\n    HANDLER_RELATED_ENTITY,\n    ID_FILTER_PROPS,\n    ID_TYPES,\n    isSelectorMeta,\n    UNKNOWN,\n    VALUES_FILTER_PROPS,\n} from './types';\nimport {argsToArray, mergeCache, normalizeSelector, verifyCache} from './utils';\n\nexport function relatedEntity<\n    STORE,\n    PARENT_ENTITY,\n    RELATED_ENTITY,\n    RELATED_KEY_IDS extends ID_FILTER_PROPS<PARENT_ENTITY, ID_TYPES> = ID_FILTER_PROPS<PARENT_ENTITY, ID_TYPES>,\n    RELATED_KEY_IDS_ARRAYS extends ID_FILTER_PROPS<PARENT_ENTITY, Array<ID_TYPES>> = ID_FILTER_PROPS<\n        PARENT_ENTITY,\n        Array<ID_TYPES>\n    >,\n    RELATED_KEY_VALUES extends VALUES_FILTER_PROPS<PARENT_ENTITY, RELATED_ENTITY> = VALUES_FILTER_PROPS<\n        PARENT_ENTITY,\n        RELATED_ENTITY\n    >,\n    RELATED_KEY_VALUES_ARRAYS extends VALUES_FILTER_PROPS<PARENT_ENTITY, Array<RELATED_ENTITY>> = VALUES_FILTER_PROPS<\n        PARENT_ENTITY,\n        Array<RELATED_ENTITY>\n    >,\n>(\n    featureSelector: FEATURE_SELECTOR<STORE, RELATED_ENTITY>,\n    keyId: RELATED_KEY_IDS | RELATED_KEY_IDS_ARRAYS,\n    keyValue: RELATED_KEY_VALUES | RELATED_KEY_VALUES_ARRAYS,\n    metaOrRelationship?: SELECTOR_META | HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>,\n    ...relationships: Array<HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>>\n): HANDLER_RELATED_ENTITY<STORE, PARENT_ENTITY>;\n\nexport function relatedEntity<\n    STORE,\n    PARENT_ENTITY,\n    RELATED_ENTITY,\n    RELATED_KEY_IDS extends ID_FILTER_PROPS<PARENT_ENTITY, ID_TYPES>,\n    RELATED_KEY_IDS_ARRAYS extends ID_FILTER_PROPS<PARENT_ENTITY, Array<ID_TYPES>>,\n    RELATED_KEY_VALUES extends VALUES_FILTER_PROPS<PARENT_ENTITY, RELATED_ENTITY>,\n    RELATED_KEY_VALUES_ARRAYS extends VALUES_FILTER_PROPS<PARENT_ENTITY, Array<RELATED_ENTITY>>,\n>(\n    featureSelector: FEATURE_SELECTOR<STORE, RELATED_ENTITY>,\n    keyId: RELATED_KEY_IDS | RELATED_KEY_IDS_ARRAYS,\n    keyValue: RELATED_KEY_VALUES | RELATED_KEY_VALUES_ARRAYS,\n): HANDLER_RELATED_ENTITY<STORE, PARENT_ENTITY> {\n    let relationships: Array<HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>> = argsToArray(arguments);\n    relationships = relationships.slice(3);\n\n    let meta: SELECTOR_META = {};\n    if (isSelectorMeta(relationships[0])) {\n        meta = relationships[0];\n        relationships = relationships.slice(1);\n    }\n\n    const {collection: collectionSelector, id: idSelector} = normalizeSelector(featureSelector);\n    const emptyResult: Map<UNKNOWN, UNKNOWN> = new Map();\n\n    const callback = (cacheLevel: string, state: STORE, cache: CACHE<STORE>, source: PARENT_ENTITY) => {\n        // a bit magic to relax generic types.\n        const sourceKeyIdValue = source[keyId];\n        if (!sourceKeyIdValue) {\n            return;\n        }\n\n        const featureState = collectionSelector(state);\n\n        let cacheDataLevel = cache.get(cacheLevel);\n        if (!cacheDataLevel) {\n            cacheDataLevel = new Map();\n            cache.set(cacheLevel, cacheDataLevel);\n        }\n\n        const ids: Array<ID_TYPES> = [];\n        const values: ID_TYPES | Array<ID_TYPES> = sourceKeyIdValue as any; // Thanks a8.\n        if (Array.isArray(values)) {\n            for (const id of values) {\n                if (id) {\n                    ids.push(id);\n                }\n            }\n            if (!ids.length) {\n                source[keyValue] = emptyResult.get(values) as PARENT_ENTITY[RELATED_KEY_VALUES] &\n                    PARENT_ENTITY[RELATED_KEY_VALUES_ARRAYS];\n                if (!source[keyValue]) {\n                    source[keyValue] = [] as PARENT_ENTITY[RELATED_KEY_VALUES] &\n                        PARENT_ENTITY[RELATED_KEY_VALUES_ARRAYS];\n                    emptyResult.set(values, source[keyValue]);\n                }\n                return;\n            }\n        } else {\n            ids.push(values);\n        }\n\n        const cacheHash = `#${ids.join(',')}`;\n        let [checks, value]: [CACHE_CHECKS_SET<STORE>, UNKNOWN] = cacheDataLevel.get(cacheHash) || [\n            new Map(),\n            undefined,\n        ];\n        if (verifyCache(state, checks)) {\n            source[keyValue] = value;\n            return cacheHash;\n        }\n\n        // building a new value.\n        value = undefined;\n        checks = new Map();\n        const checkIds = new Map();\n        checks.set(collectionSelector, checkIds);\n        checkIds.set(null, featureState.entities);\n        for (const id of ids) {\n            checkIds.set(id, featureState.entities[id]);\n        }\n\n        const valueEntities = [];\n        for (const id of ids) {\n            if (!featureState.entities[id]) {\n                continue;\n            }\n            let [entityChecks, entityValue]: [CACHE_CHECKS_SET<STORE>, UNKNOWN] = cacheDataLevel.get(\n                `${cacheHash}:${id}`,\n            ) || [new Map(), undefined];\n            if (verifyCache(state, entityChecks)) {\n                // istanbul ignore else\n                if (entityValue) {\n                    valueEntities.push(entityValue);\n                }\n                continue;\n            }\n            // we have to clone it because we are going to update it with relationships.\n            entityValue = {...featureState.entities[id]} as RELATED_ENTITY;\n            entityChecks = new Map();\n            const entityCheckIds = new Map();\n            entityChecks.set(collectionSelector, entityCheckIds);\n            entityCheckIds.set(null, featureState.entities);\n            entityCheckIds.set(id, featureState.entities[id]);\n\n            let cacheRelLevelIndex = 0;\n            for (const relationship of relationships) {\n                const cacheRelLevel = `${cacheLevel}:${cacheRelLevelIndex}`;\n                const cacheRelHash = relationship(cacheRelLevel, state, cache, entityValue, idSelector);\n                cacheRelLevelIndex += 1;\n                if (cacheRelHash) {\n                    mergeCache(cache.get(cacheRelLevel)?.get(cacheRelHash)?.[0], checks);\n                    mergeCache(cache.get(cacheRelLevel)?.get(cacheRelHash)?.[0], entityChecks);\n                }\n            }\n            cacheDataLevel.set(`${cacheHash}:${id}`, [entityChecks, entityValue]);\n            valueEntities.push(entityValue);\n        }\n        value = Array.isArray(source[keyId]) ? valueEntities : valueEntities[0];\n        cacheDataLevel.set(cacheHash, [checks, value]);\n        source[keyValue] = value as PARENT_ENTITY[RELATED_KEY_VALUES] & PARENT_ENTITY[RELATED_KEY_VALUES_ARRAYS];\n        return cacheHash;\n    };\n    callback.ngrxEntityRelationship = 'relatedEntity';\n    callback.collectionSelector = collectionSelector;\n    callback.meta = meta;\n    callback.idSelector = idSelector;\n    callback.relationships = relationships;\n    callback.keyId = keyId;\n    callback.keyValue = keyValue;\n    callback.release = () => {\n        emptyResult.clear();\n        for (const relationship of relationships) {\n            relationship.release();\n        }\n    };\n\n    return callback;\n}\n","import {rootEntityFlags} from './rootEntityFlags';\nimport {\n    CACHE,\n    CACHE_CHECKS_SET,\n    FEATURE_SELECTOR,\n    HANDLER_RELATED_ENTITY,\n    HANDLER_ROOT_ENTITY,\n    ID_TYPES,\n    isBuiltInSelector,\n    isSelectorMeta,\n    STORE_SELECTOR,\n    TRANSFORMER,\n    UNKNOWN,\n} from './types';\nimport {argsToArray, mergeCache, normalizeSelector, verifyCache} from './utils';\n\nexport function rootEntity<STORE, ENTITY>(\n    featureSelector: FEATURE_SELECTOR<STORE, ENTITY>,\n    ...relationships: Array<HANDLER_RELATED_ENTITY<STORE, ENTITY>>\n): HANDLER_ROOT_ENTITY<STORE, ENTITY, ENTITY, ID_TYPES>;\n\nexport function rootEntity<STORE, ENTITY>(\n    featureSelector: FEATURE_SELECTOR<STORE, ENTITY>,\n    meta: SELECTOR_META,\n    ...relationships: Array<HANDLER_RELATED_ENTITY<STORE, ENTITY>>\n): HANDLER_ROOT_ENTITY<STORE, ENTITY, ENTITY, ID_TYPES>;\n\nexport function rootEntity<STORE, ENTITY, TRANSFORMED>(\n    featureSelector: FEATURE_SELECTOR<STORE, ENTITY>,\n    transformer: TRANSFORMER<ENTITY, TRANSFORMED>,\n    ...relationships: Array<HANDLER_RELATED_ENTITY<STORE, ENTITY>>\n): HANDLER_ROOT_ENTITY<STORE, ENTITY, TRANSFORMED, ID_TYPES>;\n\nexport function rootEntity<STORE, ENTITY, TRANSFORMED>(\n    featureSelector: FEATURE_SELECTOR<STORE, ENTITY>,\n    transformer: TRANSFORMER<ENTITY, TRANSFORMED>,\n    meta: SELECTOR_META,\n    ...relationships: Array<HANDLER_RELATED_ENTITY<STORE, ENTITY>>\n): HANDLER_ROOT_ENTITY<STORE, ENTITY, TRANSFORMED, ID_TYPES>;\n\nexport function rootEntity<STORE, ENTITY, TRANSFORMED>(\n    featureSelector: FEATURE_SELECTOR<STORE, ENTITY>,\n    guess1?: TRANSFORMER<ENTITY, TRANSFORMED> | SELECTOR_META | HANDLER_RELATED_ENTITY<STORE, ENTITY>,\n    guess2?: SELECTOR_META | HANDLER_RELATED_ENTITY<STORE, ENTITY>,\n): HANDLER_ROOT_ENTITY<STORE, ENTITY, ENTITY | TRANSFORMED, ID_TYPES> {\n    let relationships: Array<HANDLER_RELATED_ENTITY<STORE, ENTITY>> = argsToArray(arguments);\n    relationships = relationships.slice(1);\n\n    let transformer: undefined | TRANSFORMER<ENTITY, TRANSFORMED>;\n    let meta: SELECTOR_META = {};\n    if (!isBuiltInSelector<STORE, ENTITY>(guess1) && !isSelectorMeta(guess1)) {\n        transformer = guess1;\n        relationships = relationships.slice(1);\n    }\n    if (!isBuiltInSelector<STORE, ENTITY>(guess1) && isSelectorMeta(guess1)) {\n        meta = guess1;\n        relationships = relationships.slice(1);\n    }\n    if (!isBuiltInSelector<STORE, ENTITY>(guess2) && isSelectorMeta(guess2)) {\n        meta = guess2;\n        relationships = relationships.slice(1);\n    }\n\n    const {collection: collectionSelector, id: idSelector} = normalizeSelector(featureSelector);\n\n    const cacheLevel = '0';\n    const cache: CACHE<STORE> = new Map();\n\n    const callback = (\n        state: STORE,\n        idOrSelector: undefined | null | ID_TYPES | STORE_SELECTOR<STORE, undefined | null | ID_TYPES>,\n    ) => {\n        const id = typeof idOrSelector === 'function' ? idOrSelector(state) : idOrSelector;\n        if (!id) {\n            return;\n        }\n\n        const featureState = collectionSelector(state);\n        let cacheDataLevel = cache.get(cacheLevel);\n        if (!cacheDataLevel) {\n            cacheDataLevel = new Map();\n            cache.set(cacheLevel, cacheDataLevel);\n        }\n\n        const cacheHash = `#${id}`;\n        let [checks, value]: [CACHE_CHECKS_SET<STORE>, UNKNOWN] = cacheDataLevel.get(cacheHash) || [\n            new Map(),\n            undefined,\n        ];\n        if (rootEntityFlags.disabled) {\n            return value;\n        }\n        if (verifyCache(state, checks)) {\n            return value;\n        }\n\n        // building a new value.\n        value = undefined;\n        checks = new Map();\n        const checkIds = new Map();\n        checks.set(collectionSelector, checkIds);\n        checkIds.set(null, featureState.entities);\n        checkIds.set(id, featureState.entities[id]);\n\n        // the entity does not exist.\n        if (!featureState.entities[id]) {\n            cacheDataLevel.set(cacheHash, [checks, value]);\n            return value;\n        }\n\n        // we have to clone it because we are going to update it with relationships.\n        value = {...featureState.entities[id]} as ENTITY;\n\n        let cacheRelLevelIndex = 0;\n        for (const relationship of relationships) {\n            const cacheRelLevel = `${cacheLevel}:${cacheRelLevelIndex}`;\n            const cacheRelHash = relationship(cacheRelLevel, state, cache, value, idSelector);\n            cacheRelLevelIndex += 1;\n            if (cacheRelHash) {\n                mergeCache(cache.get(cacheRelLevel)?.get(cacheRelHash)?.[0], checks);\n            }\n        }\n\n        value = transformer ? transformer(value) : value;\n        cacheDataLevel.set(cacheHash, [checks, value]);\n        return value;\n    };\n    callback.ngrxEntityRelationship = 'rootEntity';\n    callback.collectionSelector = collectionSelector;\n    callback.meta = meta;\n    callback.idSelector = idSelector;\n    callback.relationships = relationships;\n    callback.release = () => {\n        cache.clear();\n        for (const relationship of relationships) {\n            relationship.release();\n        }\n    };\n\n    return callback;\n}\n","import {UNKNOWN} from '../types';\nimport {isObject, objectKeys} from '../utils';\n\nconst func = <T>(state: T, source: UNKNOWN, destination: UNKNOWN): T => {\n    if (source === destination) {\n        return state;\n    }\n    if (!isObject(state)) {\n        return state;\n    }\n\n    for (const key of objectKeys(state)) {\n        if (!isObject(state[key])) {\n            continue;\n        }\n\n        if (state[key] === source) {\n            return {\n                ...state,\n                [key]: destination,\n            };\n        }\n\n        const patchedState = func(state[key], source, destination);\n        if (patchedState !== state[key]) {\n            return {\n                ...state,\n                [key]: patchedState,\n            };\n        }\n    }\n\n    return state;\n};\n\nexport const patchState = {\n    func,\n};\n","import {ENTITY_SELECTOR} from '../types';\nimport {objectKeys} from '../utils';\n\nimport {patchState} from './patchState';\n\nexport const func = (state: any, selector: ENTITY_SELECTOR, entity: any, meta?: {skipFields?: Array<keyof any>}) => {\n    if (typeof entity !== 'object') {\n        throw new Error('Entity is not an object');\n    }\n    const id = selector.idSelector(entity);\n    if (!id) {\n        throw new Error('Cannot detect id of an entity');\n    }\n\n    const originalSelector = selector.collectionSelector.originalSelector || selector.collectionSelector;\n    const entitiesKey = selector.collectionSelector.entitiesKey || 'entities';\n    const idsKey = selector.collectionSelector.idsKey || 'ids';\n\n    // Any because keys may be different because of entitiesKey.\n    const originalState: any = originalSelector(state);\n    const originalEntity = originalState[entitiesKey][id];\n    let featureState = originalState;\n\n    // creating a clone\n    const clone: any = {};\n    for (const key of objectKeys(entity)) {\n        if (meta && meta.skipFields && meta.skipFields.indexOf(key) !== -1) {\n            continue;\n        }\n        clone[key] = entity[key];\n    }\n    Object.setPrototypeOf(clone, Object.getPrototypeOf(entity));\n\n    const existingKeys = objectKeys(clone);\n    for (const key of originalEntity ? objectKeys(originalEntity) : []) {\n        if (existingKeys.indexOf(key) !== -1) {\n            continue;\n        }\n        clone[key] = originalEntity[key];\n    }\n\n    if (featureState[idsKey] && featureState[idsKey].indexOf(id) === -1) {\n        featureState = {\n            ...featureState,\n            [idsKey]: [...featureState[idsKey], id],\n        };\n    }\n\n    let isEntityChanged = !originalEntity;\n    for (const key of objectKeys(clone)) {\n        if (isEntityChanged || !originalEntity || clone[key] !== originalEntity[key]) {\n            isEntityChanged = true;\n            break;\n        }\n    }\n    if (isEntityChanged) {\n        featureState = {\n            ...featureState,\n            [entitiesKey]: {\n                ...featureState[entitiesKey],\n                [id]: clone,\n            },\n        };\n    }\n\n    return patchState.func(state, originalState, featureState);\n};\n\nexport const injectEntity = {\n    func,\n};\n","import {ENTITY_SELECTOR} from '../types';\nimport {mapEntries, mapValues} from '../utils';\n\nimport {injectEntity} from './injectEntity';\n\nconst extractMap = (\n    selector: ENTITY_SELECTOR,\n    map: Map<string, {selectors: Set<ENTITY_SELECTOR>; skipFields: Set<keyof any>}>,\n) => {\n    if (!selector.meta || !selector.meta.flatKey) {\n        throw new Error('Flat key is not provided in meta');\n    }\n    const {selectors = new Set<ENTITY_SELECTOR>(), skipFields = new Set<keyof any>()} =\n        map.get(selector.meta.flatKey) || {};\n    if (!map.has(selector.meta.flatKey)) {\n        map.set(selector.meta.flatKey, {\n            selectors,\n            skipFields,\n        });\n    }\n    selectors.add(selector);\n    for (const relationship of selector.relationships) {\n        skipFields.add(relationship.keyValue);\n        extractMap(relationship, map);\n    }\n    return map;\n};\n\nconst func = (state: any, selector: ENTITY_SELECTOR, data: any) => {\n    const map = extractMap(selector, new Map());\n    for (const [key, {selectors, skipFields}] of mapEntries(map)) {\n        const isSet = Array.isArray(data[key]);\n        const entities = isSet ? data[key] : [data[key]];\n\n        for (const entity of entities) {\n            if (!entity) {\n                continue;\n            }\n\n            for (const entitySelector of mapValues(selectors)) {\n                state = injectEntity.func(state, entitySelector, entity, {skipFields: [...mapValues(skipFields)]});\n            }\n        }\n    }\n\n    return state;\n};\n\nexport const fromFlat = {\n    func,\n};\n","import {ENTITY_SELECTOR} from '../types';\n\nimport {injectEntity} from './injectEntity';\n\nexport const func = (state: any, selector: ENTITY_SELECTOR, data: any) => {\n    const isSet = Array.isArray(data);\n    const entities = isSet ? data : [data];\n\n    // detecting keys we should skip\n    const skipFields: Array<keyof any> = [];\n    for (const relationship of selector.relationships) {\n        skipFields.push(relationship.keyValue);\n    }\n\n    for (const entity of entities) {\n        if (!entity) {\n            continue;\n        }\n\n        state = injectEntity.func(state, selector, entity, {skipFields});\n        for (const relationship of selector.relationships) {\n            state = func(state, relationship, entity[relationship.keyValue]);\n        }\n    }\n\n    return state;\n};\n\nexport const fromGraph = {\n    func,\n};\n","export function toFactorySelector<S, K, Props = any>(selector: {\n    (state: S, ids: Props): K;\n    release?: () => void;\n}): {\n    (ids: Props): {\n        (state: S): K;\n        release(): void;\n    };\n    release(): void;\n} {\n    const release = () => {\n        if (typeof selector.release === 'function') {\n            selector.release();\n        }\n    };\n\n    const callback = (ids: Props) => {\n        const storeSelector = (state: S) => selector(state, ids);\n        storeSelector.release = release;\n\n        return storeSelector;\n    };\n    callback.release = release;\n\n    return callback;\n}\n","import {childEntity} from './childEntity';\nimport {FEATURE_SELECTOR, HANDLER_RELATED_ENTITY, ID_FILTER_PROPS, ID_TYPES, isSelectorMeta} from './types';\nimport {argsToArray} from './utils';\n\nexport function childEntitySelector<\n    STORE,\n    PARENT_ENTITY extends {\n        [KEY in RELATED_KEY_VALUES]?: RELATED_ENTITY;\n    },\n    RELATED_ENTITY,\n    RELATED_KEY_IDS extends ID_FILTER_PROPS<RELATED_ENTITY, ID_TYPES> = ID_FILTER_PROPS<RELATED_ENTITY, ID_TYPES>,\n    RELATED_KEY_VALUES extends keyof any = keyof any,\n>(\n    featureSelector: FEATURE_SELECTOR<STORE, RELATED_ENTITY>,\n    keyId: RELATED_KEY_IDS,\n    keyValue: RELATED_KEY_VALUES,\n    meta?: SELECTOR_META,\n): (\n    metaOrRelationship?: SELECTOR_META | HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>,\n    ...relationships: Array<HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>>\n) => HANDLER_RELATED_ENTITY<STORE, PARENT_ENTITY>;\n\nexport function childEntitySelector<\n    STORE,\n    PARENT_ENTITY extends {\n        [KEY in RELATED_KEY_VALUES]?: RELATED_ENTITY;\n    },\n    RELATED_ENTITY,\n    RELATED_KEY_IDS extends ID_FILTER_PROPS<RELATED_ENTITY, ID_TYPES>,\n    RELATED_KEY_VALUES extends keyof any,\n>(\n    featureSelector: FEATURE_SELECTOR<STORE, RELATED_ENTITY>,\n    keyId: RELATED_KEY_IDS,\n    keyValue: RELATED_KEY_VALUES,\n    meta?: SELECTOR_META,\n): (\n    metaOrRelationship?: SELECTOR_META | HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>,\n    ...relationships: Array<HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>>\n) => HANDLER_RELATED_ENTITY<STORE, PARENT_ENTITY> {\n    function callback(): HANDLER_RELATED_ENTITY<STORE, PARENT_ENTITY> {\n        let relationships: Array<HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>> = argsToArray(arguments);\n        let currentMeta = isSelectorMeta(meta) ? meta : undefined;\n        if (isSelectorMeta(relationships[0])) {\n            currentMeta = relationships[0];\n            relationships = relationships.slice(1);\n        }\n        return currentMeta\n            ? childEntity<STORE, PARENT_ENTITY, RELATED_ENTITY, RELATED_KEY_IDS, any>(\n                  featureSelector,\n                  keyId,\n                  keyValue,\n                  currentMeta,\n                  ...relationships,\n              )\n            : childEntity<STORE, PARENT_ENTITY, RELATED_ENTITY, RELATED_KEY_IDS, any>(\n                  featureSelector,\n                  keyId,\n                  keyValue,\n                  ...relationships,\n              );\n    }\n    callback.ngrxEntityRelationship = 'childEntitySelector';\n\n    return callback;\n}\n","import {childrenEntities} from './childrenEntities';\nimport {FEATURE_SELECTOR, HANDLER_RELATED_ENTITY, ID_FILTER_PROPS, ID_TYPES, isSelectorMeta} from './types';\nimport {argsToArray} from './utils';\n\nexport function childrenEntitiesSelector<\n    STORE,\n    PARENT_ENTITY extends {\n        [KEY in RELATED_KEY_VALUES_ARRAYS]?: Array<RELATED_ENTITY>;\n    },\n    RELATED_ENTITY,\n    RELATED_KEY_IDS extends ID_FILTER_PROPS<RELATED_ENTITY, ID_TYPES> = ID_FILTER_PROPS<RELATED_ENTITY, ID_TYPES>,\n    RELATED_KEY_VALUES_ARRAYS extends keyof any = keyof any,\n>(\n    featureSelector: FEATURE_SELECTOR<STORE, RELATED_ENTITY>,\n    keyId: RELATED_KEY_IDS,\n    keyValue: RELATED_KEY_VALUES_ARRAYS,\n    meta?: SELECTOR_META,\n): (\n    metaOrRelationship?: SELECTOR_META | HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>,\n    ...relationships: Array<HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>>\n) => HANDLER_RELATED_ENTITY<STORE, PARENT_ENTITY>;\n\nexport function childrenEntitiesSelector<\n    STORE,\n    PARENT_ENTITY extends {\n        [KEY in RELATED_KEY_VALUES_ARRAYS]?: Array<RELATED_ENTITY>;\n    },\n    RELATED_ENTITY,\n    RELATED_KEY_IDS extends ID_FILTER_PROPS<RELATED_ENTITY, ID_TYPES>,\n    RELATED_KEY_VALUES_ARRAYS extends keyof any,\n>(\n    featureSelector: FEATURE_SELECTOR<STORE, RELATED_ENTITY>,\n    keyId: RELATED_KEY_IDS,\n    keyValue: RELATED_KEY_VALUES_ARRAYS,\n    meta?: SELECTOR_META,\n): (\n    metaOrRelationship?: SELECTOR_META | HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>,\n    ...relationships: Array<HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>>\n) => HANDLER_RELATED_ENTITY<STORE, PARENT_ENTITY> {\n    function callback(): HANDLER_RELATED_ENTITY<STORE, PARENT_ENTITY> {\n        let relationships: Array<HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>> = argsToArray(arguments);\n        let currentMeta = isSelectorMeta(meta) ? meta : undefined;\n        if (isSelectorMeta(relationships[0])) {\n            currentMeta = relationships[0];\n            relationships = relationships.slice(1);\n        }\n        return currentMeta\n            ? childrenEntities<STORE, PARENT_ENTITY, RELATED_ENTITY, RELATED_KEY_IDS, any>(\n                  featureSelector,\n                  keyId,\n                  keyValue,\n                  currentMeta,\n                  ...relationships,\n              )\n            : childrenEntities<STORE, PARENT_ENTITY, RELATED_ENTITY, RELATED_KEY_IDS, any>(\n                  featureSelector,\n                  keyId,\n                  keyValue,\n                  ...relationships,\n              );\n    }\n    callback.ngrxEntityRelationship = 'childrenEntitiesSelector';\n\n    return callback;\n}\n","import {ACTION} from '../types';\n\nimport {ngrxEntityRelationshipActions} from './actions';\nimport {fromFlat} from './fromFlat';\nimport {fromGraph} from './fromGraph';\n\nexport function ngrxEntityRelationshipReducer<T>(\n    reducer: (state: T | undefined, action: ACTION) => T,\n): (state: T | undefined, action: ACTION) => T {\n    return (state: T | undefined, action: any) => {\n        if (action.type === ngrxEntityRelationshipActions.reduceGraph) {\n            return reducer(fromGraph.func(state, action.selector, action.data), action);\n        }\n        if (action.type === ngrxEntityRelationshipActions.reduceFlat) {\n            return reducer(fromFlat.func(state, action.selector, action.data), action);\n        }\n        return reducer(state, action);\n    };\n}\n","import {relatedEntity} from './relatedEntity';\nimport {FEATURE_SELECTOR, HANDLER_RELATED_ENTITY, ID_TYPES, isSelectorMeta} from './types';\nimport {argsToArray} from './utils';\n\nexport function relatedEntitySelector<\n    STORE,\n    PARENT_ENTITY extends\n        | {\n              [KEY in RELATED_KEY_IDS | RELATED_KEY_VALUES]?: KEY extends RELATED_KEY_IDS\n                  ? ID_TYPES\n                  : KEY extends RELATED_KEY_VALUES\n                  ? RELATED_ENTITY | null\n                  : never;\n          }\n        | {\n              [KEY in RELATED_KEY_IDS | RELATED_KEY_VALUES]?: KEY extends RELATED_KEY_IDS\n                  ? Array<ID_TYPES>\n                  : KEY extends RELATED_KEY_VALUES\n                  ? Array<RELATED_ENTITY> | null\n                  : never;\n          },\n    RELATED_ENTITY,\n    RELATED_KEY_IDS extends keyof any = keyof any,\n    RELATED_KEY_VALUES extends keyof any = keyof any,\n>(\n    featureSelector: FEATURE_SELECTOR<STORE, RELATED_ENTITY>,\n    keyId: RELATED_KEY_IDS,\n    keyValue: RELATED_KEY_VALUES,\n    meta?: SELECTOR_META,\n): (\n    metaOrRelationship?: SELECTOR_META | HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>,\n    ...relationships: Array<HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>>\n) => HANDLER_RELATED_ENTITY<STORE, PARENT_ENTITY>;\n\nexport function relatedEntitySelector<\n    STORE,\n    PARENT_ENTITY extends\n        | {\n              [KEY in RELATED_KEY_IDS | RELATED_KEY_VALUES]?: KEY extends RELATED_KEY_IDS\n                  ? ID_TYPES\n                  : KEY extends RELATED_KEY_VALUES\n                  ? RELATED_ENTITY | null\n                  : never;\n          }\n        | {\n              [KEY in RELATED_KEY_IDS | RELATED_KEY_VALUES]?: KEY extends RELATED_KEY_IDS\n                  ? Array<ID_TYPES>\n                  : KEY extends RELATED_KEY_VALUES\n                  ? Array<RELATED_ENTITY> | null\n                  : never;\n          },\n    RELATED_ENTITY,\n    RELATED_KEY_IDS extends keyof any,\n    RELATED_KEY_VALUES extends keyof any,\n>(\n    featureSelector: FEATURE_SELECTOR<STORE, RELATED_ENTITY>,\n    keyId: RELATED_KEY_IDS,\n    keyValue: RELATED_KEY_VALUES,\n    meta?: SELECTOR_META,\n): (\n    metaOrRelationship?: SELECTOR_META | HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>,\n    ...relationships: Array<HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>>\n) => HANDLER_RELATED_ENTITY<STORE, PARENT_ENTITY> {\n    function callback(): HANDLER_RELATED_ENTITY<STORE, PARENT_ENTITY> {\n        let relationships: Array<HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>> = argsToArray(arguments);\n        let currentMeta = meta;\n        if (isSelectorMeta(relationships[0])) {\n            currentMeta = relationships[0];\n            relationships = relationships.slice(1);\n        }\n        return currentMeta\n            ? relatedEntity<STORE, PARENT_ENTITY, RELATED_ENTITY, any, any, any, any>(\n                  featureSelector,\n                  keyId,\n                  keyValue,\n                  currentMeta,\n                  ...relationships,\n              )\n            : relatedEntity<STORE, PARENT_ENTITY, RELATED_ENTITY, any, any, any, any>(\n                  featureSelector,\n                  keyId,\n                  keyValue,\n                  ...relationships,\n              );\n    }\n    callback.ngrxEntityRelationship = 'relatedEntitySelector';\n\n    return callback;\n}\n","import {rootEntityFlags} from './rootEntityFlags';\nimport {HANDLER_ROOT_ENTITIES, HANDLER_ROOT_ENTITY, ID_TYPES, STORE_SELECTOR} from './types';\n\nexport function rootEntities<STORE, ENTITY>(\n    rootSelector: HANDLER_ROOT_ENTITY<STORE, ENTITY, ENTITY, ID_TYPES>,\n): HANDLER_ROOT_ENTITIES<STORE, ENTITY, ENTITY, ID_TYPES>;\n\nexport function rootEntities<STORE, ENTITY, TRANSFORMED>(\n    rootSelector: HANDLER_ROOT_ENTITY<STORE, ENTITY, TRANSFORMED, ID_TYPES>,\n): HANDLER_ROOT_ENTITIES<STORE, ENTITY, TRANSFORMED, ID_TYPES>;\n\nexport function rootEntities<STORE, ENTITY, TRANSFORMED>(\n    rootSelector: HANDLER_ROOT_ENTITY<STORE, ENTITY, TRANSFORMED, ID_TYPES>,\n): HANDLER_ROOT_ENTITIES<STORE, ENTITY, ENTITY | TRANSFORMED, ID_TYPES> {\n    const cacheMap = new Map<string, Array<ENTITY | TRANSFORMED>>();\n    const emptyResult: Array<ENTITY | TRANSFORMED> = [];\n\n    const callback = (\n        state: STORE,\n        idsOrSelector: undefined | null | Array<ID_TYPES> | STORE_SELECTOR<STORE, undefined | null | Array<ID_TYPES>>,\n    ) => {\n        const ids = typeof idsOrSelector === 'function' ? idsOrSelector(state) : idsOrSelector;\n        if (!ids) {\n            return emptyResult;\n        }\n\n        const cacheKey = ids.join(',');\n        const cacheValue = cacheMap.get(cacheKey) || emptyResult;\n\n        if (rootEntityFlags.disabled) {\n            return cacheValue;\n        }\n\n        const value: Array<ENTITY | TRANSFORMED> = [];\n        for (const id of ids) {\n            const entity = rootSelector(state, id);\n            if (!entity) {\n                continue;\n            }\n            value.push(entity);\n        }\n\n        let index = 0;\n        let equal = value.length === cacheValue.length;\n        for (const entity of value) {\n            if (!equal || !cacheValue || !cacheValue[index] || cacheValue[index] !== entity) {\n                equal = false;\n                break;\n            }\n            index += 1;\n        }\n        if (equal) {\n            return cacheValue;\n        }\n\n        cacheMap.set(cacheKey, value);\n        return value;\n    };\n    callback.ngrxEntityRelationship = 'rootEntities';\n    callback.meta = rootSelector.meta;\n    callback.collectionSelector = rootSelector.collectionSelector;\n    callback.idSelector = rootSelector.idSelector;\n    callback.relationships = rootSelector.relationships;\n    callback.release = () => {\n        cacheMap.clear();\n        rootSelector.release();\n    };\n\n    return callback;\n}\n","import {rootEntity} from './rootEntity';\nimport {\n    FEATURE_SELECTOR,\n    HANDLER_RELATED_ENTITY,\n    HANDLER_ROOT_ENTITY,\n    ID_TYPES,\n    isSelectorMeta,\n    TRANSFORMER,\n} from './types';\nimport {argsToArray} from './utils';\n\nexport function rootEntitySelector<STORE, ENTITY, TRANSFORMED>(\n    featureSelector: FEATURE_SELECTOR<STORE, ENTITY>,\n    transformer: TRANSFORMER<ENTITY, TRANSFORMED>,\n    meta: SELECTOR_META,\n): (\n    metaOrRelationship?: SELECTOR_META | HANDLER_RELATED_ENTITY<STORE, ENTITY>,\n    ...relationships: Array<HANDLER_RELATED_ENTITY<STORE, ENTITY>>\n) => HANDLER_ROOT_ENTITY<STORE, ENTITY, TRANSFORMED, ID_TYPES>;\n\nexport function rootEntitySelector<STORE, ENTITY, TRANSFORMED>(\n    featureSelector: FEATURE_SELECTOR<STORE, ENTITY>,\n    transformer: TRANSFORMER<ENTITY, TRANSFORMED>,\n): (\n    metaOrRelationship?: SELECTOR_META | HANDLER_RELATED_ENTITY<STORE, ENTITY>,\n    ...relationships: Array<HANDLER_RELATED_ENTITY<STORE, ENTITY>>\n) => HANDLER_ROOT_ENTITY<STORE, ENTITY, TRANSFORMED, ID_TYPES>;\n\nexport function rootEntitySelector<STORE, ENTITY>(\n    featureSelector: FEATURE_SELECTOR<STORE, ENTITY>,\n    meta: SELECTOR_META,\n): (\n    metaOrRelationship?: SELECTOR_META | HANDLER_RELATED_ENTITY<STORE, ENTITY>,\n    ...relationships: Array<HANDLER_RELATED_ENTITY<STORE, ENTITY>>\n) => HANDLER_ROOT_ENTITY<STORE, ENTITY, ENTITY, ID_TYPES>;\n\nexport function rootEntitySelector<STORE, ENTITY>(\n    featureSelector: FEATURE_SELECTOR<STORE, ENTITY>,\n): (\n    metaOrRelationship?: SELECTOR_META | HANDLER_RELATED_ENTITY<STORE, ENTITY>,\n    ...relationships: Array<HANDLER_RELATED_ENTITY<STORE, ENTITY>>\n) => HANDLER_ROOT_ENTITY<STORE, ENTITY, ENTITY, ID_TYPES>;\n\nexport function rootEntitySelector<STORE, ENTITY, TRANSFORMED>(\n    featureSelector: FEATURE_SELECTOR<STORE, ENTITY>,\n    guess1?: SELECTOR_META | TRANSFORMER<ENTITY, TRANSFORMED>,\n    guess2?: SELECTOR_META,\n): (\n    meta?: SELECTOR_META,\n    ...relationships: Array<HANDLER_RELATED_ENTITY<STORE, ENTITY>>\n) => HANDLER_ROOT_ENTITY<STORE, ENTITY, ENTITY | TRANSFORMED, ID_TYPES> {\n    function callback(\n        metaOverride?: SELECTOR_META,\n    ): HANDLER_ROOT_ENTITY<STORE, ENTITY, ENTITY | TRANSFORMED, ID_TYPES> {\n        let relationships: Array<HANDLER_RELATED_ENTITY<STORE, ENTITY>> = argsToArray(arguments);\n        const transformer = isSelectorMeta(guess1) ? undefined : guess1;\n        let currentMeta = isSelectorMeta(guess1) ? guess1 : guess2;\n        if (isSelectorMeta(metaOverride)) {\n            currentMeta = metaOverride;\n            relationships = relationships.slice(1);\n        }\n        return transformer && currentMeta\n            ? rootEntity(featureSelector, transformer, currentMeta, ...relationships)\n            : transformer\n            ? rootEntity(featureSelector, transformer, ...relationships)\n            : currentMeta\n            ? rootEntity(featureSelector, currentMeta, ...relationships)\n            : rootEntity(featureSelector, ...relationships);\n    }\n    callback.ngrxEntityRelationship = 'rootEntitySelector';\n\n    return callback;\n}\n","export function selectByIds<S, K, Props = any>(selector: (state: S, ids: Props) => K, ids: Props): (state: S) => K {\n    return state => selector(state, ids);\n}\n","import {ENTITY_STATE, ENTITY_STATE_CUSTOM, STORE_SELECTOR} from './types';\n\nexport function stateKeys<\n    SELECTOR extends STORE_SELECTOR<any, any>,\n    STORE extends SELECTOR extends STORE_SELECTOR<infer U, any> ? U : never,\n    SLICE extends SELECTOR extends STORE_SELECTOR<any, infer U> ? U : never,\n    E_KEY extends keyof SLICE,\n    ENTITY extends SLICE extends ENTITY_STATE_CUSTOM<E_KEY, 'ids', infer U> ? U : never,\n>(selector: SELECTOR, entitiesKey: E_KEY): STORE_SELECTOR<STORE, ENTITY_STATE<ENTITY>>;\n\nexport function stateKeys<\n    SELECTOR extends STORE_SELECTOR<any, any>,\n    STORE extends SELECTOR extends STORE_SELECTOR<infer U, any> ? U : never,\n    SLICE extends SELECTOR extends STORE_SELECTOR<any, infer U> ? U : never,\n    E_KEY extends keyof SLICE,\n    I_KEY extends keyof SLICE,\n    ENTITY extends SLICE extends ENTITY_STATE_CUSTOM<E_KEY, I_KEY, infer U> ? U : never,\n>(selector: SELECTOR, entitiesKey: E_KEY, idsKey: I_KEY): STORE_SELECTOR<STORE, ENTITY_STATE<ENTITY>>;\n\nexport function stateKeys<\n    SELECTOR extends STORE_SELECTOR<any, any>,\n    STORE extends SELECTOR extends STORE_SELECTOR<infer U, any> ? U : never,\n    SLICE extends SELECTOR extends STORE_SELECTOR<any, infer U> ? U : never,\n    E_KEY extends keyof SLICE,\n    I_KEY extends keyof SLICE,\n    ENTITY extends SLICE extends ENTITY_STATE_CUSTOM<E_KEY, I_KEY, infer U> ? U : never,\n>(selector: SELECTOR, entitiesKey: E_KEY, idsKey?: I_KEY): STORE_SELECTOR<STORE, ENTITY_STATE<ENTITY>> {\n    const callback: STORE_SELECTOR<STORE, ENTITY_STATE<ENTITY>> = (s: STORE): ENTITY_STATE<ENTITY> => {\n        const slice = selector(s);\n        return {\n            ids: idsKey ? slice[idsKey] : slice.ids,\n            entities: slice[entitiesKey],\n        };\n    };\n    callback.idsKey = idsKey;\n    callback.entitiesKey = entitiesKey;\n    callback.originalSelector = selector;\n\n    return callback;\n}\n","import {toFactorySelector} from './toFactorySelector';\n\nexport function toStaticSelector<S, K, Props = any>(\n    selector: {\n        (state: S, ids: Props): K;\n        release?: () => void;\n    },\n    ids: Props,\n): {\n    (state: S): K;\n    release(): void;\n} {\n    return toFactorySelector(selector)(ids);\n}\n"]}