@j      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ None'Indicates whether a given label in the AA data structure for storing a hierarchical set of domain labels & from TLD down, supporting wildcards. *Data structure is mutually recursive with , and each level B of the tree supports a static assignment for a hostname such as:   example.com 1Or a wildcard assignment for a hostname such as:   *.example.com >Or a wildcard assignment with a set of teptions, for example:   *.example.com  admin.example.com IAnd lastly, empty labels are supported so that, of course, an assignment S for example.com does not necessarily have any subdomains available. As an example 1 suppose we have the following assigned domains:   example.com  foo.example.com  *.bar.example.com  *.qux.example.com  baz.qux.example.com OThis will resolve to the following value, with some loose pseudocode notation.   Static (map) % 'com' -> Unassigned Static (map) $ 'example' -> Assigned a (map) , 'foo' -> Assigned a EmptyLabelMap C 'bar' -> Unassigned (Wildcard (Assigned a EmptyLabelMap) B 'qux' -> Unassigned (WildcardExcept (Assigned a (map))) - 'baz' -> Assigned a EmptyLabelMap Note that the hostname bar.example.com+ is unassigned, only the wildcard was set.     NoneFCreate a directory tree, setting the uid and gid of all newly created  folders. prefix for folder name bundle prefix for folder name    NoneA replacement for the standard FromJSON0 typeclass which can handle relative filepaths. The directory from which we're reading the config file. Parse a config file, using the  typeclass. A replacement for the .:0 operator which will both parse a file path and  apply the relative file logic. A replacement for the .:?0 operator which will both parse a file path and  apply the relative file logic.    None! !"#$%&'()    * !"#$%&'()* !"#$%&'()* !"#$%&'()    *NoneN.A virtual host we want to serve content from. O+A port for an individual app to listen on. P Used for versioning data types. WHName of the application. Should just be the basename of the application  file. 3+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY6+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY6WTUVSPQRONMX7LKJIHGFEDCBA@?>=<;:98.6543210/Y+-,+-,.6543210/7LKJIHGFEDCBA@?>=<;:98MNOPQRSTUVWXYNoneZKControls execution of the nginx thread. Follows the settings type pattern.  See:  +http://www.yesodweb.com/book/settings-types. \GWhich ports to assign to apps. Defaults to unassigned ranges from IANA -Z[\]^_`abcdefghijklmnopqrstuvwxyz{|} !"#$$Z[\]^_`abcdefghijklmnopqrstuvwxyz{|}$vwxyz{|}qrstumnopijkl_`abcdefgh]^Z[\Z[\]^_ `abcdefghijklmnopqrstuvwxyz{|} !"#$Noneprimary host, used for approot *all hosts, not including the approot host 4An action to be performed for a requested hostname. LThis datatype is very similar to Stanza, but is necessarily separate since: ! Webapps will be assigned ports. 2 Not all stanzas have an associated proxy action. settings used for plugins ]~%&'()*+,-./0123456789:;<=D~D~)~%&'()*+,-./0123456789:;<=None !"#$%+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^~NoneHReserve the given hosts so that no other application may use them. Does / not yet enable any action. The semantics are: U If a requested host is currently actively used or by an app of the same name, it is  considered reserved. J If a requested host is currently reserved by an app of the same name, it M is considered an error in calling this API. Only one app reservation can  happen at a time. F If any requested host is currently used or reserved by an app with a 6 different name, then those values are returned as Left. : Otherwise, the hosts which were reserved are returned as Right. This  does not" include previously active hosts. %Forget previously made reservations. "Activate a new app. Note that you must first reserve the hostnames you' ll be using. >?@ABCD >?A@BCD None Gets an unassigned port number. KReturn a port to the recycled collection of the pool. Note that recycling N puts the new ports at the end of the queue (FIFO), so that if an application F holds onto the port longer than expected, there should be no issues. EFGHIEFGHI NoneIGet the modification time of the bundle file this app was launched from,  if relevant. /JKLMNOPQRSTUVWXYZ[\]^_`abcdefghi JKLMNOP QRSTUVWXYZ[\]^_`abcdefghi Nonejthe next one to try Reset which apps are running. G Any app not listed here that is currently running will be terminated. A Any app listed here that is currently running will be reloaded. D Any app listed here that is not currently running will be started. kljmnopqrstu kmjlnopqrstu None.Mapping from virtual hostname to port number. v+use incoming request header for IP address wxy]^]^vwxy NonezLoad up Keter config. root directory or config file z{|}~ z{|}~None2Information on an individual PostgreSQL database. How to create the given user/database. Default: uses the psql  command line tool and sudo -u postgres. HLoad a set of existing connections from a config file. If the file does A not exist, it will be created. Any newly created databases will & automatically be saved to this file.   !"#$%&'()*++,-./012234566789:;<=>>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkklmnoppqrrsstuvwxyz{||}~ssty{          (.      !"#$%&'()*+,-./01234567!89:;<=>  ? ? @ A B B C D D E F  G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b  c d e f g h i j k l m P n o p q r s t uvwxvyz{|}~ keter-1.0.1.1Keter.Types.CommonKeter.LabelMapCodec.Archive.TempTarballData.Yaml.FilePath!Network.HTTP.ReverseProxy.RewriteKeter.Types.V04Keter.Types.V10Keter.HostManagerKeter.PortPool Keter.AppKeter.AppManager Keter.Proxy Keter.MainKeter.Plugin.Postgres Keter.Typesbytestring-0.10.0.2Data.ByteString.Internal ByteString text-0.11.3.1Data.Text.InternalTextcontainers-0.5.0.0 Data.Map.BaseMapbase GHC.Exception SomeException Exceptionsystem-filepath-0.4.7Filesystem.Path.InternalFilePath Data.Set.BaseSetLabelMapinsertdeletelookup labelAssignedempty TempFoldersetup unpackTempTarNonEmptyVector ParseYamlFile parseYamlFileBaseDirdecodeFileRelative lookupBaselookupBaseMaybe RewriteRule ruleHeader ruleRegexruleReplacementReverseProxyConfig reversedHost reversedPort reversingHost reverseUseSSLreverseTimeoutrewriteResponseRulesrewriteRequestRulesRPEntryconfig httpManagersimpleReverseProxyAppIdAINamed AIBuiltinKeterExceptionExecutableNotFoundFileNotExecutableCannotReserveHostsInvalidKeterConfigFileInvalidConfigFileNoPortsAvailableExitCodeFailureCannotParsePostgres LogMessage WatchedFileReactivatingAppDeactivatingApp ActivatingAppForgetingReservationsReservingHostsSanityChecksPassedErrorStartingBundle OtherMessageProcessWaitingReceivedInotifyEventRemovingOldFolderTerminatingOldProcessFinishedReloadingTerminatingAppUnpackingBundle RemovingPortExceptionThrownProcessDidNotStart InvalidBundleProcessCreatedHostBSHostPort ToCurrentPrevious toCurrentPluginsPlugin pluginGetEnvAppname getAppnamelogEx PortSettings portRange TLSConfig KeterConfig kconfigDirkconfigPortMan kconfigHost kconfigPort kconfigSsl kconfigSetuidkconfigReverseProxykconfigIpFromHeaderRedirectredFromredTo StaticHostshHostshRoot BundleConfig bconfigAppbconfigStaticHostsbconfigRedirects AppConfig configExec configArgs configHost configSslconfigExtraHosts configRaw RestartCountLimitedRestartsUnlimitedRestartsBackgroundConfig bgconfigExec bgconfigArgsbgconfigEnvironmentbgconfigRestartCountbgconfigRestartDelaySecondsAppInputAIDataAIBundle WebAppConfig waconfigExec waconfigArgswaconfigEnvironmentwaconfigApprootHost waconfigHosts waconfigSsl waconfigPortIsSecure RedirectDestRDPrefixRDUrl SourcePath SPSpecificSPAnyRedirectActionRedirectConfigredirconfigHostsredirconfigStatusredirconfigActionsStaticFilesConfig sfconfigRoot sfconfigHostssfconfigListings ProxyActionPAReverseProxy PARedirectPAStaticPAPortStanzaStanzaBackgroundStanzaReverseProxy StanzaWebAppStanzaRedirectStanzaStaticFileskconfigPortPoolkconfigListenerskconfigBuiltinStanzas ListeningPort LPInsecureLPSecurebconfigStanzasbconfigPlugins addStanzaType Reservations HostManagerstart reserveHostsforgetReservations activateApp deactivateApp reactivateApp lookupActionPortPoolgetPort releasePortAppStartConfig ascTempFolder ascSetuidascProcessTrackerascHostManager ascPortPool ascPluginsascLogascKeterConfigAppreload terminate getTimestampAction TerminateReload AppManager initialize reloadAppListperformaddApp terminateApp HostLookup reverseProxyketerSettings setupDBInfoload LabelEntry UnassignedAssignedWildcardExceptWildcardStatic EmptyLabelMap LabelTree hostToLabelslemap labelEntryMap getPortEntry insertTreecleanup deleteTree lookupTree memberTree$fShowLabelEntry createTreeUIDtfRoot tfCounter getFolder unpackTar$fParseYamlFileNonEmptyVector$fParseYamlFileVector$fParseYamlFileSet$fParseYamlFileFilePathgetGrouprewrite rewriteHeaderrewriteHeaders regexRewrite filterHeaders mkRuleMap mkRequest$fToJSONRewriteRule$fFromJSONRewriteRule$fDefaultReverseProxyConfig$fToJSONReverseProxyConfig$fFromJSONReverseProxyConfig $fShowRPEntry $fShowAppId$fExceptionKeterException$fShowLogMessage$fToCurrentMaybe$fFromJSONPortSettings$fDefaultPortSettings$fParseYamlFileTLSConfig$fParseYamlFileKeterConfig$fDefaultKeterConfig$fFromJSONRedirect$fParseYamlFileStaticHost$fParseYamlFileBundleConfig$fParseYamlFileAppConfig$fToJSONBackgroundConfig$fParseYamlFileBackgroundConfig$fFromJSONRestartCount$fToJSONWebAppConfig$fParseYamlFileWebAppConfig$fToCurrentWebAppConfig$fToJSONRedirectDest$fFromJSONRedirectDest$fToJSONRedirectAction$fFromJSONRedirectAction$fToJSONRedirectConfig$fParseYamlFileRedirectConfig$fToCurrentRedirectConfig$fToJSONStaticFilesConfig $fParseYamlFileStaticFilesConfig$fToCurrentStaticFilesConfig$fToJSONStanza$fParseYamlFileStanza$fToCurrentKeterConfig$fParseYamlFileListeningPort$fToJSONBundleConfig$fToCurrentBundleConfig HostValue HVReservedHVActiveHMStateactivateHelperdeactivateHelperPPStateppAvail ppRecycledRunningBackgroundApp rbaProcess RunningWebApp rwaProcessrwaPort appModTimeappRunningWebAppsappBackgroundAppsappIdappHostsappDirappAscappRlog unpackBundle withConfigwithReservations withActionswithRotatingLogwithSanityChecks bracketedMap withWebApps launchWebApp killWebApp ensureAlivewithBackgroundAppslaunchBackgroundAppkillBackgroundAppterminateHelper pluginsGetEnv ASStartingAppState ASTerminated ASRunningappsappStartConfigmutexlog performNoLock launchWorkergetInputForBundle withClient redirectAppmissingHostResponseunknownHostResponse withLogger withManagers launchInitial getIncomingisKeter startWatchingstartListening runAndBlockDBInfoCommand GetConfigdbiNamedbiUserdbiPass randomDBI edbiToEnv$fFromJSONDBInfo$fToJSONDBInfo$fDefaultSettings