!      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                       Safe3Logic regarding the  header and limit, offset querystring arguments.NoneDPostgREST common types and functions used by the rest of the modulesNone"dNz postgrest8Current database connection status data ConnectionStatus  postgrestCjspath expression, e.g. .property, .property[0] or ."property-dash" postgrest*full jspath, e.g. .property[0].attr.detail) postgrest+A table alias is used in case of self joins* postgrestLOnly used for Many to Many joins. Parent and Child joins use explicit joins.5 postgrest`Path of the embedded levels, e.g "clients.projects.name=eq.." gives Path ["clients", "projects"]7 postgrest7This type will hold information about which particular i between two tables to choose when there are multiple ones. Specifically, it will contain the name of the foreign key or the join table in many to many relations.8 postgrestuCustom guc header, it's obtained by parsing the json in a: `SET LOCAL "response.headers" = '[{"Set-Cookie": ".."}]'? postgrestRepresents the key( `->'key'` ) or index(`->'1`a::int`), the index is Text because we reuse our escaping functons and let pg do the casting with '1'::intC postgrestRepresents the single arrow `->` or double arrow ->> operatorsG postgrest%Json path operations as specified in >https://www.postgresql.org/docs/9.4/static/functions-json.htmlI postgrestKBoolean logic expression tree e.g. "and(name.eq.N,or(id.eq.1,id.eq.2))" is:TAnd / name.eq.N Or / id.eq.1 id.eq.2O postgrest@Represents a list value in a filter, e.g. id=in.(val1,val2,val3)P postgrest;Represents a single value in a filter, e.g. id=eq.singlevald postgrest#Cached attributes of a JSON payloadf postgrestThis is the raw ByteString that comes from the request body. We cache this instead of an Aeson Value because it was detected that for large payloads the encoding had high memory usage, see #1005 for more detailsh postgrestfKeys of the object or if it's an array these keys are guaranteed to be the same across all its objectsi postgrest The name i\ here is used with the meaning "What is the relation between the current node and the parent node". It has nothing to do with PostgreSQL referring to tables/views as relations. The order of the relColumns and relFColumns should be maintained to get the join conditions right. TODO merge relColumns and relFColumns to a tuple or Data.Bimapx postgrestRepresents a pg identifier with a prepended schema name "schema.table" When qiSchema is "", the schema is defined by the pg search_path postgrest+A view column that refers to a table column postgrest9Enumeration of currently supported response content types postgrest.Convert from ContentType to a full HTTP Header postgrestCConvert from ContentType to a ByteString representing the mime type postgrestIConvert from ByteString to ContentType. Warning: discards MIME parameters postgrestSearch a pg procedure by its parameters. Since a function can be overloaded, the name is not enough to find it. An overloaded function can have a different volatility or even a different return type. postgrestSearch the procedure parameters by matching them with the specified keys. If the key doesn't match a parameter, a parameter with a default type "text" is assumed. postgrestJTells the minimum PostgreSQL version required by this version of PostgREST  $! "#%&.-,+*)'(/0124356789:;<=>?A@BCEDFGHIKJLNMOPQRUTSVWXYZ^]\[_a`bcedhgfijrqponmlksutwvxyz{|}~|}~xyz{sutwvijrqponmlkcedhgf_a`bYZ^]\[XVWRUTSQPOLNMIKJHGCEDF?A@B>=<;:897651243/0%&.-,+*)'($! "#   ,Helper functions for PostgREST.QueryBuilder.None_a6 postgrestThe generic query result format used by API responses. The location header is represented as a list of strings containing variable bindings like  "k1=eq.42"3, or the empty list if there is no location header. postgrestRead and Write api requests use a similar response format which includes various record counts and possible location header. This is the decoder for that common type of query. postgrest'These CTEs convert a json object into a json array, this way we can use json_populate_recordset for all json payloads Otherwise we'd have to use json_populate_record for json objects and json_populate_recordset for json arrays We do this in SQL to avoid processing the JSON in application code#6     78Noneb9Noneb:PostgREST error HTTP responsesNone=?c;DC<=>?@ABEFGHIMJKLNOPQRSTUSIMJKLNOPQGH;DC<=>?@ABEFRTUPostgREST parser combinatorsNonee^"cdefghijklmnopqrstuvwxyz{|}~"cdefghijklmnopqrstuvwxyz{|}~PostgREST schema cacheNone $=>@AXgF(Manages PostgREST configuration options.NoneX_ll postgrest#Config file settings for the server postgrest0CORS policy to be used in by Wai Cors middleware postgrestUser friendly version number postgrestVersion number used in docs postgrest8Function to read and parse options from the command line"PostgREST authorization functions.None>_yp postgrest0Possible situations encountered with client JWTs postgrest_Receives the JWT secret and audience (from config) and a JWT and returns a map of JWT claims. postgresttTurn JWT ClaimSet into something easier to work with, also here the jspath is applied to put the "role" in the map postgrest7Whether a response from jwtClaims contains a role claim postgrestParse  `jwt-secret`- configuration option and turn into a JWKSet. There are three ways to specify  `jwt-secret`: text secret, JSON Web Key (JWK), or JSON Web Key Set (JWKS). The first two are converted into a JWKSet with one key and the last is converted as is. postgrestKInternal helper to generate a symmetric HMAC-SHA256 JWK from a text secret. QPostgREST functions to translate HTTP request to a domain type called ApiRequest.None_ postgrest&Describes what the user wants to do. This data type is a translation of the raw elements of an HTTP request into domain specific language. There is no guarantee that the intent is sensible, it is up to a later stage of processing to determine if it is an action we are able to perform. postgrestDSimilar but not identical to HTTP verb, e.g. Create/Invoke both POST postgrest'Requested range of rows within response postgrest5The target, be it calling a proc or accessing a table postgrestAContent types the client will accept, [CTAny] if no Accept header postgrest1Data sent by client and used for mutation actions postgrest)If client wants created items echoed back postgrestAPass all parameters as a single json object to a stored procedure postgrest0Whether the client wants a result count (slower) postgrestCWhether the client wants to UPSERT or ignore records on PK conflict postgrest%Filters on the result ("id", "eq.10") postgrest6&and and &or parameters used for complex boolean logic postgrest,&select parameter used to shape the response postgrest,&columns parameter used to shape the payload postgrest &order parameters for each level postgrest?Alphabetized (canonical) request query string for response URLs postgrestJSON Web Token postgrestHTTP request headers postgrestRequest Cookies postgrestHow to return the inserted data postgrest%The target db object of a user action postgrest,Types of things a user wants to do to tablesviewsprocs postgrest9Examines HTTP request and translates it into user intent. postgrestFind the best match from a list of content types accepted by the client in order of decreasing preference and a list of types producible by the server. If there is no match but the client accepts */* then return the top server pick. postgrest&Converts CSV like a,b 1,hi 2,byeHinto a JSON array like [ {"a": "1", "b": "hi"}, {"a": 2, "b": "bye"} ][The reason for its odd signature is so that it can compose directly with CSV.decodeByName44None#PostgREST SQL generating functions.None"=>?d 6789: :9678 Generates the OpenAPI outputNoneA postgrestTest whether a proxy uri is malformed or not. A valid proxy uri should be an absolute uri without query and user info, only http(s) schemes are valid, port number range is 1-65535.For example  !http://postgrest.com/openapi.json 'https://postgrest.com:8080/openapi.json TSets the PostgreSQL GUCs, role, search_path and pre-request function. Validates JWT.None>X  "PostgREST database request builderNone"$>_d None$>X !"##$%&'()*+,-./0123456789:;<=>?@AABBCDEFGHHIJKLMNOPQRSTUVWXYZ[\]^_`abcdeefgghijklmnopqrstuvvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                             &postgrest-6.0.2-EHazLySUgTCKJNCzkqVqOWPostgREST.RangeQueryPostgREST.TypesPostgREST.QueryBuilderPostgREST.ErrorPostgREST.ParsersPostgREST.DbStructurePostgREST.ConfigPostgREST.AuthPostgREST.ApiRequestPostgREST.OpenAPIPostgREST.MiddlewarePostgREST.DbRequestBuilder PostgREST.AppPaths_postgrestPostgREST.QueryBuilder.Private$PostgREST.QueryBuilder.ReadStatement PostgREST.QueryBuilder.Procedure%PostgREST.QueryBuilder.WriteStatement NonnegRange rangeParserangeRequested restrictRange rangeLimit rangeOffsetrangeGeqallRangeConnectionStatus NotConnected ConnectedFatalConnectionError JSPathExpJSPKeyJSPIdxJSPath PgVersion$sel:pgvNum:PgVersion$sel:pgvName:PgVersion MutateRequestDepthReadNode ReadRequest DbRequestDbReadDbMutate MutateQueryInsertUpdateDelete$sel:in_:Insert$sel:insCols:Insert$sel:onConflict:Insert$sel:where_:Insert$sel:returning:Insert$sel:updCols:Insert ReadQuerySelect$sel:select:Select$sel:from:Select$sel:fromAlias:Select$sel:implicitJoins:Select$sel:where_:Select$sel:joinConditions:Select$sel:order:Select$sel:range_:Select JoinConditionFilter$sel:field:Filter$sel:opExpr:Filter EmbedPath SelectItemRelationDetail GucHeader RpcQParamNodeNameCastAliasField JsonOperandJKeyJIdx$sel:jVal:JKey JsonOperationJArrowJ2Arrow$sel:jOp:JArrowJsonPath FieldName LogicTreeExprStmnt LogicOperatorAndOrListVal SingleValLanguage OperationOpInFtsOpExprOperatorProxy$sel:proxyScheme:Proxy$sel:proxyHost:Proxy$sel:proxyPort:Proxy$sel:proxyPath:ProxyPJTypePJArrayPJObject$sel:pjaLength:PJArray PayloadJSON ProcessedJSONRawJSON$sel:pjRaw:ProcessedJSON$sel:pjType:ProcessedJSON$sel:pjKeys:ProcessedJSONRelation$sel:relTable:Relation$sel:relColumns:Relation$sel:relFTable:Relation$sel:relFColumns:Relation$sel:relType:Relation$sel:relLinkTable:Relation$sel:relLinkCols1:Relation$sel:relLinkCols2:Relation RelationTypeChildParentManyRootQualifiedIdentifier!$sel:qiSchema:QualifiedIdentifier$sel:qiName:QualifiedIdentifier OrderTerm$sel:otTerm:OrderTerm$sel:otDirection:OrderTerm$sel:otNullOrder:OrderTerm OrderNullsOrderNullsFirstOrderNullsLastOrderDirectionOrderAsc OrderDesc PrimaryKey$sel:pkTable:PrimaryKey$sel:pkName:PrimaryKey ViewColumnSynonymColumn$sel:colTable:Column$sel:colName:Column$sel:colDescription:Column$sel:colPosition:Column$sel:colNullable:Column$sel:colType:Column$sel:colUpdatable:Column$sel:colMaxLen:Column$sel:colPrecision:Column$sel:colDefault:Column$sel:colEnum:Column$sel:colFK:Column ForeignKey$sel:fkCol:ForeignKeyTable$sel:tableSchema:Table$sel:tableName:Table$sel:tableDescription:Table$sel:tableInsertable:Table SqlFragmentSqlQuery TableNameSchemaProcDescription$sel:pdName:ProcDescription"$sel:pdDescription:ProcDescription$sel:pdArgs:ProcDescription!$sel:pdReturnType:ProcDescription!$sel:pdVolatility:ProcDescriptionProcVolatilityVolatileStable ImmutableRetTypeSingleSetOfPgTypeScalar CompositePgArg$sel:pgaName:PgArg$sel:pgaType:PgArg$sel:pgaReq:PgArg DbStructure$sel:dbTables:DbStructure$sel:dbColumns:DbStructure$sel:dbRelations:DbStructure$sel:dbPrimaryKeys:DbStructure$sel:dbProcs:DbStructure$sel:pgVersion:DbStructurePreferResolutionMergeDuplicatesIgnoreDuplicates ContentTypeCTApplicationJSONCTSingularJSON CTTextCSV CTTextPlain CTOpenAPI CTOctetStreamCTAnyCTOthertoHeadertoMimedecodeContentType tableCols tablePKColsfindProcspecifiedProcArgs isSelfJoin operators ftsOperators toHeadersminimumPgVersion pgVersion94 pgVersion95 pgVersion96 pgVersion100 pgVersion109 pgVersion110 pgVersion112 pgVersion114 sourceCTEName$fShowPreferResolution $fEqTable$fShowOrderDirection$fShowOrderNulls$fOrdProcDescription$fShowLogicOperator $fEqColumn$fFromJSONGucHeader$fOrdPgVersion$fShowContentType$fEqContentType$fEqPreferResolution $fShowPgArg $fEqPgArg $fOrdPgArg$fEqProcVolatility$fShowProcVolatility$fOrdProcVolatility $fShowTable $fOrdTable$fShowPrimaryKey$fEqPrimaryKey$fEqOrderDirection$fEqOrderNulls$fShowQualifiedIdentifier$fEqQualifiedIdentifier$fOrdQualifiedIdentifier $fEqPgType $fShowPgType $fOrdPgType $fEqRetType $fShowRetType $fOrdRetType$fShowProcDescription$fEqProcDescription$fShowRelationType$fEqRelationType $fShowPJType $fEqPJType$fShowPayloadJSON$fEqPayloadJSON $fShowProxy $fEqProxy $fEqOperation$fShowOperation $fEqOpExpr $fShowOpExpr$fEqLogicOperator $fShowColumn $fOrdColumn$fShowForeignKey$fEqForeignKey$fOrdForeignKey$fShowRelation $fEqRelation$fShowJsonOperand$fEqJsonOperand$fShowJsonOperation$fEqJsonOperation$fShowOrderTerm $fEqOrderTerm $fShowFilter $fEqFilter$fShowLogicTree $fEqLogicTree$fShowJoinCondition$fEqJoinCondition$fShowReadQuery $fEqReadQuery$fShowMutateQuery$fEqMutateQuery $fEqPgVersion$fShowPgVersion$fShowDbStructure$fEqDbStructure $fEqJSPathExp$fShowJSPathExp$fEqConnectionStatus$fShowConnectionStatusResultsWithCount pgFmtSetLocalpgFmtSetLocalSearchPathcreateReadStatementcallProc SimpleErrorGucHeadersErrorBinaryFieldErrorConnectionLostErrorPutSingletonErrorPutMatchingPkErrorPutRangeNotAllowedErrorPutPayloadIncompleteErrorJwtTokenMissingJwtTokenInvalidSingularityErrorContentTypeErrorPgErrorApiRequestErrorActionInappropriate InvalidRange InvalidBodyParseRequestErrorNoRelationBetweenInvalidFiltersUnknownRelationUnsupportedVerb errorPayloaderrorResponseFor checkIsFatalsingularityError$fToJSONCommandError$fToJSONQueryError$fToJSONUsageError$fToJSONApiRequestError$fPgrstErrorApiRequestError$fToJSONPgError$fPgrstErrorPgError$fToJSONSimpleError$fPgrstErrorSimpleError$fShowApiRequestError$fEqApiRequestError$fShowSimpleError$fEqSimpleErrorpRequestSelectpRequestFilter pRequestOrder pRequestRangepRequestLogicTreepRequestColumnswslexeme pTreePath pFieldForestpStar pFieldName pJsonPathpFieldaliasSeparatorpRelationSelect pFieldSelectpOpExpr pSingleValpListVal pListElement pQuotedValue pDelimiterpOrder pOrderTerm pLogicTreepLogicSingleVal pLogicPathpColumnsmapError pRoleClaimKeypJSPathpJSPKeypJSPIdxgetDbStructureaccessibleProcsschemaDescriptionaccessibleTables getPgVersion AppConfigconfigDatabaseconfigAnonRoleconfigProxyUri configSchema configHost configPort configSocketconfigJwtSecretconfigJwtSecretIsBase64configJwtAudience configPoolconfigPoolTimeout configMaxRowsconfigReqCheck configQuietconfigSettingsconfigRoleClaimKeyconfigExtraSearchPathconfigRootSpecconfigRawMediaTypesconfigPoolTimeout' corsPolicy prettyVersion docsVersion readOptions JWTAttempt JWTInvalidJWTMissingSecret JWTClaims jwtClaims containsRole parseSecret$fEqJWTAttempt$fShowJWTAttempt ApiRequestiActioniRangeiTargetiAcceptsiPayloadiPreferRepresentationiPreferSingleObjectParameter iPreferCountiPreferResolutioniFiltersiLogiciSelectiColumnsiOrder iCanonicalQSiJWTiHeadersiCookiesPreferRepresentationFull HeadersOnlyNoneTarget TargetIdent TargetProcTargetDefaultSpec TargetUnknowntpQi tpIsRootSpecAction ActionCreate ActionRead ActionUpdate ActionDelete ActionInfo ActionInvoke ActionInspectActionSingleUpsert isReadOnlyuserApiRequestmutuallyAgreeable $fEqAction $fEqTarget$fEqPreferRepresentationcreateWriteStatementrequestToCountQueryrequestToQueryunquoted encodeOpenAPIisMalformedProxyUri pickProxy runWithClaims defaultMiddle readRequest mutateRequest fieldNames postgrestversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName(Ranged-sets-0.4.0-JBJseZFPAB37Lg1l1PJyHBData.Ranged.RangesRangedecodeStandardnormalizedBodycolumnnullableColumnelementparam standardRow noLocationFdecodeStandardMayremoveSourceCTESchema ignoredBody selectBodypgFmtLit pgFmtIdentasCsvFasJsonF asJsonSingleF asBinaryF locationFfromQiunicodeStatement emptyOnFalse pgFmtColumn pgFmtFieldpgFmtSelectItempgFmtOrderTerm pgFmtFilterpgFmtJoinConditionpgFmtLogicTree pgFmtJsonPathpgFmtAs trimNullChars ProcResults claims2map jwkFromSecret csvToJson