JSB      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None,-345;=>?FKTVu,A type family to be used in your ECS recrod.Describes how we can change an a.Keep the current value.&Delete the current value if it exists.Set the current value.<Data kind used to parameterize the fields of the ECS record.*This component can be owned by any entity.>This component can be owned by only a single entity at a time. *This component is owned by another system. .Data kind used to parameterize the ECS record. #Used to describe the actual entity. &Used to construct the world's storage. /Used to construct a setter to update an entity.EA collection of methods necessary to dispatch reads and writes to a   component.'Get the value of an entity's component.*Update the value of an entity's component..A computation to run over a particular entity."A monad over an ECS given a world w..A monad transformer over an ECS given a world w.The internal state of the  monad.The key for an entity.  !!     None-;<=>?FSTVh&95Utility class for implementing various defaults. The keeph parameter is used to statically describe whether or not to keep the previous value when dealing with  fields.;Utility class for implementing .=Utility class for implementing .?Utility class for implementing .AUtility class for implementing .CUtility class for implementing  . 9:;<=>?@ABCDE,CDIHGFABMLKJ?@RQPON=>WVUTS;<\[ZYXE9:dcba`_^]9:;<=>?@ABCDNone%-7;<=>?ANQVh? #eAn e is a set of s to iterate over.fUtilities for defining r.g*Hoist storage through a monad transformer.h\Grafts two worlds together, using data from the second argument and vtables from the first.j`Transforms an entity into a setter to transform the default entity into the given one. Used by t.k)The default entity, owning no components.lIThe default setter, which keeps all components with their previous value.m-A setter which will delete the entity if its  matches.nNThis class provides all of the functionality necessary to manipulate the ECS.o+Fetches an entity from the world given its .p Updates an  in the world given its setter.q8The default world, which contains only empty containers.rRun a monad transformer  underneath a .*Due to the recursive interactions between  and h, we're often unable to put a temporary monad transformer on the top of the stack. As a result, often r5 is our ony means of introducting ephemeral effects. draw :: ' World IO [Graphics] draw = fmap fst . rC runWriterT $ for_ thingsToRender $ \thingy -> tell [thingy] sRetrieve a unique .tCreate a new entity.uDelete an entity.v Evaluate a .wMap a / transformation over all entites that match it.xKCollect the results of a monadic computation over every entity matching a .yDo an w and an x at the same time.zRun a  over a particular .{Provides a resumable X. This is a pretty big hack until I come up with a better formalization for everything.| Evaluate a .} Evaluate a .~Only evaluate this - for entities which have the given component.Only evaluate this 5 for entities which do not have the given component.*Get the value of a component, failing the  if it isn't present.(Attempt to get the value of a component.Get the  for whom this query is running.Query a flag as a .Perform a query with a default.Iterate over all entities.Iterate over some entities.Iterate over an entity.Turn a  into an .$efhgijmlknpoqrstuvwxyz{|}~0nooppqqijjkkllmmfgghhrstuvwxyz{|}~efgghhijjkkllmmnooppqqNone@3 emlkpoqrtuwxyz{|}~3 q |{}tkopuwxylmez~r     !"##$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn opqrstuvwxyz{|}~ &ecstasy-0.2.1.0-27yynKWLRp9Dz66BgWNPwi Data.EcstasyData.Ecstasy.TypesData.Ecstasy.Internal.DerivingData.Ecstasy.Internal setEntity getEntity convertSetter graftStorage hoistStoragebase GHC.GenericsGeneric ComponentUpdateKeepUnsetSet ComponentTypeFieldUniqueVirtual StorageTypeFieldOfWorldOfSetterOfVTablevgetvsetQueryT runQueryT'SystemSystemT runSystemT' SystemStateEntunEnt $fShowEnt$fMonadReaderrQueryT$fMonadTransQueryT$fMonadStatesSystemT$fMonadTransSystemT$fEqEnt$fOrdEnt$fFunctorQueryT$fApplicativeQueryT $fMonadQueryT$fMonadStateQueryT$fMonadWriterQueryT$fMonadIOQueryT$fAlternativeQueryT$fMonadPlusQueryT$fFunctorSystemT$fApplicativeSystemT$fMonadSystemT$fMonadReaderSystemT$fMonadWriterSystemT$fMonadIOSystemT $fEqUpdate $fOrdUpdate $fShowUpdate $fReadUpdate$fFunctorUpdate$fFoldableUpdate$fTraversableUpdateGDefaultgdef GSetEntity gSetEntity GGetEntity gGetEntityGConvertSettergConvertSetterGGraftgGraft GHoistWorld gHoistWorlddef$fGHoistWorldtm:*::*:$fGHoistWorldtmM1M1$fGHoistWorldtmK1K1$fGHoistWorldtmK1K10$fGGraft:*::*: $fGGraftM1M1 $fGGraftK1K1 $fGGraftK1K10$fGConvertSetter:*::*:$fGConvertSetterM1M1$fGConvertSetterK1K1$fGConvertSetterK1K10$fGConvertSetterK1K11$fGGetEntitym:*::*:$fGGetEntitymM1M1$fGGetEntitymK1K1$fGGetEntitymK1K10$fGGetEntitymK1K11$fGSetEntitym:*::*:$fGSetEntitymM1M1$fGSetEntitymK1K1$fGSetEntitymK1K10$fGSetEntitymK1K11$fGDefaultkeep:*:$fGDefaultkeepM1$fGDefaultkeepM10$fGDefaultkeepK1$fGDefaultTrueK1$fGDefaultFalseK1$fGDefaultkeepK10$fGDefaultkeepU1 EntTargetStorageSurgeon HasWorld' newEntity unchanged delEntityHasWorld defStoragesurgery nextEntity createEntity deleteEntityunQueryTemapeforeover runQueryT yieldSystemT runSystemT runSystemwithwithoutquery queryMaybequeryEnt queryFlagqueryDefallEntssomeEntsanEnt maybeToUpdate$fHasWorld'world$fHasWorldworldm$fStorageSurgeontmworldghc-prim GHC.TypesBoolGHC.BaseMaybe