!Ɨ?      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw x y z { | } ~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None%&'=>?@ASX_lm| minilight3Custom rules of the lens. All lens are prefixed by '_'.None%&'=>?@ASX_lmB    None%&'=>?@ASX_lm&  minilight IRegistry: typeclass presents a registry interface. The complexity O(1)1 in the operations can be "amortized" complexity. minilightO(1)% Checking if the specified key exists  minilightO(1) Indexing! minilightO(1) Safe indexing" minilightO(1)6 Update, raise an exception if the key does not exist.# minilightO(1)5 Write, raise an exception if the key does not exist.$ minilightO(1)( Adding a new value to the last position% minilightO(n)K Inserting a new value to the specified position (in the underlying vector)& minilightO(n)9 Deleting the specified value (this is a slow operation).' minilightO(1)S Get the underlying vector. Be careful: modifying the vector might cause a problem.( minilight3For-loop over the registry, ignoring the key order.) minilightBFor-loop over the registry with the index, ignoring the key order.* minilight6Modifying the item one by one, ignoring the key order. '$"!#%& ()* '$"!#%& ()* 9 !9 None%&'=>?@ASX_lm2+ minilightIOVectorD consists of (1) pointer to the underlying vector (2) length While  has the underlying array itself, this type only has the pointer. This means read/write should be slower than the original vector./ minilight)Get the position of the last cell in the IOVector,. This operation is not safe because of the .2 minilightGet the capacity of the IOVector,. This operation is not safe because of the .4 minilightO(n)9 Insert a value into any place. This is a slow operation.5 minilightO(n)_ This is a slow operation. This also throws an exception if the specified index does not exist.4 minilight1The vector should have positive (non-zero) length+,-./0123456789+,-./0123456789None%&'=>?@ASX_lm3:;<:;<None%&'=>?@ASX_lm8$> minilightThe Registry type can represents any  instance.@ minilightO(n)c Create a registry from a list. The current implementation uses a hashtable, defined in the module .A minilightCreate a new empty registry. &%#!"$'()*>?@A>?@ANone%&'-8=>?@AEHSX_lm?@AIMSX_lmBM minilight!The environment for LightT monad.O minilightRenderer for SDL2P minilightSystem font informationQ minilightLogger connected stdoutU minilightLCurrent state of keys, represents how many frames the key down has been downV minilight Event queueW minilightSSignals emitted from components are stored in the queue and poll in the next frame.( MNOPQSTUVWX[YZ\^_`abcdefghijkl(X[YZ\_`aMNOPQ^ghibcdefSTUVWjkl  None%&'=>?@ACESX_lmWw minilight:Rendering typeclass provides basic operations for figures.x minilight Change the place to be rendered.y minilight6Specify some area and clip the figure into the region.z minilightRotate a figure.{ minilightCreate a text texture.  Be careful9: this is a slow operation, use cache as long as you can.| minilight"Create a texture from a png file.  Be careful9: this is a slow operation, use cache as long as you can.} minilight(Create a texture from a raw SDL texture.~ minilightCreate an outlined rectangle.  Be careful9: this is a slow operation, use cache as long as you can. minilightCreate a filled texture.  Be careful9: this is a slow operation, use cache as long as you can. minilightCreate an outlined triangle.  Be careful9: this is a slow operation, use cache as long as you can. minilightKFigure type carries a texture, sizing information and rotation information. minilight#Lens for the center of a rectangle. minilight!Lens for the size of a rectangle. minilightRender a figure. minilightRender figures.~ minilight Stroke color minilightSize minilight Filling color minilightSize minilight Stroke color minilightSizew~}|yxz{w~}|yxz{ None%&'=>?@ASX_lmj minilight>Environmental information, which are passed for each component minilight The unique id minilight The hooks minilightA wrapper for  instances. minilightHCompoonentUnit typeclass provides a way to define a new component. Any  instance can be embedded into  type. minilightUpdating a model. minilight=Descirbes a view. The figures here would be cached. See also  for the cache configuration. minilightDrawing a figures. minilightEvent handlers minilightReturn True8 if a cache stored in the previous frame should be used. minilight~To be called just before clearing caches. If you want to destroy cached textures for memory efficiency, override this method.NBR: Freeing SDL textures and figures are not performed automatically. You must call  at your own risk. minilight7Emit a signal, which will be catched at the next frame. minilightCreate a new component. minilightGet the size of a component. minilightGet its unique id. minilight Get the hooks minilight Get the hooks minilight=Clear the previous model cache and reflect the current model. minilight#A model value in the previous frame minilight"A model value in the current frame None%&'7=>?@ASX_lmp[ minilightThe type for component resolver minilight*A configuration for the application itself minilightA configuration for a component minilightGenerate an unique id. minilightComponent Type minilightUID minilightComponent Property None%&'7=>?@ASX_glmv minilightreference syntax: ${ref:...} minilightvariable syntax: ${var:...} minilightexpr operator: +, -, *, / minilight$constants (string or number or null) minilight token symbol minilight#function application ($func(a,b,c)) minilight4Interpret a JSON value, and unsafely apply fromRight minilightCreate  value from JSON value None%&'=>?@ASX_lm7 minilight!The environment for config loader minilight'Create a component with given resolver. minilight,Load an config file and return the resolved  AppConfig. minilightLoad an config file and set in the environment. Calling this function at once, this overrides all values in the environment. This will generate an error log and skip the component if the configuration is invalid. This function also assign unique IDs for each component, using  assignUID. minilightzLoad the config file again and place the newly loaded components. This is used for HCR (hot component replacement). Call  first. minilightFilepath to the yaml file. minilightSpecify any resolver. minilightFilepath to the yaml file. minilightSpecify any resolver.None%&'=>?@ACSX_lm  minilightThe state in the mainloop. minilightUse  for a default setting. minilightSet Nothing) if all keys should be watched. See also . minilight<Specify a yaml file which describes component settings. See  for the yaml syntax. minilightnThe directory path to be watched. If set, the config file modification will replace the component dynamically. minilight;Your custom mappings between a component name and its type. minilight=The components here would be added during the initialization. minilightRun a Light monad. minilight9Default configurations for the mainloop. You need to set componentResolver if you use a component. minilight0Type synonym to the minimal type of the mainloop minilightSame as  but fixing the type. minilightBRun a mainloop. In a mainloop, components and events are managed.RComponents in a mainloop: draw ~ update ~ (user-defined function) ~ event handling minilightEnvironment conversion minilight Loop config minilight Initial state minilightA function called in every loop CDEFGHIJKLMNOPQSTUVWX[YZ\^_`abcdefghijklw{zxy|}~None%&'=>?@ASX_lm minilightLoad a system font from  type.            None%&'=>?@ASX_lm minilight configuration. If static/ enabled, only the first page will be rendered. minilightpaged messages !"#%&'()*+,-./#"! -,+*)('%&./None%&'=>?@ASX_lmS23875469:;<>=?;<>=9:2387546?None%&'=>?@ASX_lm#C minilightBasic signal type.G minilightBasic config typeK minilightLThis wrapper function is useful when you write your component config parser.L minilight&The rectangle region of the component.M minilightAThis automatically applies basic configuration such as: position.N minilight8This wrapper function is useful when you write your own  component.O minilightBasic signaling function.D minilight*The relative position of the mouse pointerE minilight*The relative position of the mouse pointerF minilight*The relative position of the mouse pointerN minilightG getter minilightCustom onSignal functionCFEDGHJIKLMNOPGHJIKLCFEDMNOPNone%&'=>?@ASX_lmQ STVUWXYZ[\ WXYZSTVU[\None%&'=>?@ASX_lm__`abefcdghkiljmnghkiljmabefcd_`nNone%&'=>?@ASX_lm rstvuwx{y|z} wx{y|zrstvu}None%&'=>?@ASX_lmNone%&'=>?@ASX_lm+ minilight=Pre-defined resolver supports all components in this library.  !"!#!$!$%&'%&()*+)*,)*-)*.)*/)*0)*1)*2)*3)*4)*5)*6789:;<=>?@ABCDEFGHIJKLLMNOPQRDFGSTUVWWXYZZTM[\]^_`abcdeffghijkklmnopqrstuuvwxyz{|}~         C                             !"#$%&'()*+,-./012M3456789:;;M<=]>?@ABCD3EFGHIJJKMLMNOHPQIRRKSTUMVWXYZ[[K"\M]^^_K`abc,defghMijk%lmnominilight-0.4.0-inplaceMiniLight.LightControl.Monad.CasterControl.Lens.TH.RulesData.Registry.ClassData.Vector.Mutable.PushBackData.Registry.HashTable Data.RegistryMiniLight.EventMiniLight.FigureMiniLight.ComponentMiniLight.Loader.Internal.Types"MiniLight.Loader.Internal.ResolverMiniLight.Loader MiniLightData.Config.FontData.Component.MessageEngineData.Component.ButtonData.Component.BasicData.Component.LayerData.Component.SelectionData.Component.AnimationLayerData.Component.MessageLayerData.Component.ResolverDataVector HashTableLoaderTFontyFruity-0.5.3.4-d0c1fd0e1980bdc97d95f14c301545ca54680af2785e26dd02f82e6c45f36abc"Graphics.Text.TrueType.FontFolders_descriptorStyle_descriptorFamilyNameFontDescriptorGraphics.Text.TrueType.Header_fontStyleItalic_fontStyleBold FontStylebaseControl.Monad.IO.ClassliftIOMonadIOOcaster-0.0.3.0-47d95803afd9b1c4c11ee93f5cdeec9d6a82a9cc445d10d13ab13f9de1ae996aSystem.Log.Caster.Core toBuilder ToBuilder LogEmergencyLogAlert LogCriticalLogErrorLogWarn LogNoticeLogInfoLogDebugLogLevelLogQueue lensRules_ MonadLogger getLoggerdebuginfowarnerr stdoutLogger IRegistryhas!!?updatewriteregisterinsertdeleteasVecforV_iforV_modifyV_IOVectornewread safeLengthlength safeCapacitycapacitypushfromList asIOVectorasUnsafeIOVector HashTableImpl fromListImpl$fIRegistryHashTableImplRegistry$fIRegistryRegistryEventSignal GlobalSignalRawEvent NotifyEvent EventType getEventTypegetEventPropertiessignalasSignalLightEnvrenderer fontCachelogger$fHashableFontDescriptorLoopEnv keyStatesevents signalQueue HasLightEnvlightEnv _fontCache_logger _renderer$fHasLightEnvLightEnvLightT runLightT' HasLoopEnvloopEnv_events _keyStates _signalQueue liftMiniLight envLightT mapLightT loadFontCacheloadFontwithFont$fHasLoopEnvLoopEnv$fMonadLoggerLightT$fMonadReaderenvLightT$fFunctorLightT$fApplicativeLightT $fMonadLightT$fMonadIOLightT$fMonadThrowLightT$fMonadMaskLightT$fMonadCatchLightT Rendering translatecliprotatetextpicture fromTexturerectangleOutlinerectangleFilledtriangleOutlineFiguretexture sourceArea targetArearotationcenterLsizeL getFigureSize freeFigureunionrenderrenderswithBlendedText$fRenderingFigureLightT ComponentEnvuid callbacksHookMap Component ComponentUnitfiguresdrawonSignaluseCachebeforeClearCacheHasComponentEnv componentEnv _callbacks_uidemit newComponentgetComponentSizegetUIDgetHookssetHooks propagate$fHasComponentEnvComponentEnv$fComponentUnitComponentResolver AppConfigappuuidComponentConfigname propertieshooksHook signalName parametertoHooknewUID$fFromJSONHook $fToJSONHook$fFromJSONComponentConfig$fToJSONComponentConfig$fFromJSONAppConfig $fShowHook $fGenericHookContextpath variablesvaluesExprNoneRefVarOpConstantSymbolAppparser emptyContextgetAt normalizeeval convertPathconvert parseText resolveWithresolveparseAppConfig$fFromJSONExpr $fToJSONExpr$fEqExpr $fShowExpr $fGenericExpr LoaderEnvregistry appConfigcreateComponentBy HasLoaderEnv loaderEnv _appConfig _registry resolveConfig loadAppConfigpatchAppConfig$fHasLoaderEnvLoaderEnv LoopStatelightlooploader LoopConfig watchKeys appConfigFilehotConfigReplacementcomponentResolveradditionalComponents runLightT defConfig$fHashableScancodeMiniLoop$fHasLoaderEnvLoopState$fHasLoopEnvLoopState$fHasLightEnvLoopState$fHasLoopStateLoopState runMiniloop runMainloop$fHasComponentEnvComponentState$fHasLoaderEnvComponentState$fHasLoopEnvComponentState$fHasLightEnvComponentState"$fHasComponentStateComponentStateaConfig descriptorsizecolor HasConfigconfig_color _descriptor_size loadFontFrom$fFromJSONConfig$fHasConfigConfigmessagesstaticfont MessageEnginefontDatacounterpage textCounter textTexturefinished_font _messages_static EngineEventNextPage_config_counter _finished _fontData_page _textCounter _textTexture wrapSignal$fComponentUnitMessageEngine$fEventTypeEngineEventlabelfontConffontSize ButtonEventClickButton$fEventTypeButtonEvent$fComponentUnitButton MousePressed MouseReleased MouseOverposition wrapConfig areaRectangle wrapFiguresemitBasicSignalcontains$fEventTypeSignalbasicimageLayerlayer newNineTile$fComponentUnitLayerSelectionEventSelectlabels fontConfig SelectionhoverconfhoverL$fEventTypeSelectionEvent$fComponentUnitSelection layerConfdivisionintervalAnimationLayertileSize$fComponentUnitAnimationLayer MessageLayer messageEnginecursorenginewindownext_cursor_layer_messageEngineengineLcursorL$fComponentUnitMessageLayer foldResultresolver GHC.IO.UnsafeunsafePerformIODynamic