#gq      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Safei      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None ,.HUVX'LDAPv3.Constraint encoding type-level invariants for LDAPv3.Constraint encoding type-level invariants for LDAPv3Signed integer sub-typeNOTEy: Due to lack of negative type-level integer literals the lower bound is negated, i.e. it expresses a negative magnitudeLDAPv3Unsigned integer sub-typeLDAPv3*Coerce integer sub-type into its base-typeLDAPv3*Coerce integer sub-type into its base-typeLDAPv3#Try to coerce a base-type into its  sub-typeIf out of range,  ^ or  _ will be returned respectively.LDAPv3#Try to coerce a base-type into its  sub-typeIf out of range,  ^ or  _ will be returned.None"#,.>HMUVX_)LDAPv3Type-level promoted LDAPv3 ASN.1 Tag     None"#,.478=>?@AHMUVX_?LDAPv3Helper representing a BOOLEAN DEFAULT (TRUE|FALSE) ASN.1 type annotation LDAPv3ASN.1 NULL type LDAPv3ASN.1 SET OF type LDAPv3ASN.1 SET SIZE (1..MAX) OF typeLDAPv3ASN.1  OCTET STRING typeLDAPv3ASN.1 CHOICE AnnotationLDAPv3ASN.1  COMPONENTS OF AnnotationLDAPv3ASN.1  ENUMERATED AnnotationLDAPv3ASN.1 EXPLICIT AnnotationLDAPv3ASN.1 IMPLICIT AnnotationLDAPv3 Alternative  typeclass for ASN.1  typesIn contrast to the standard = class, this class is better suited for non-contiguous ASN.1 q mappings and doesn't concern itself with operations to generate preceding/succeding elements of the enumeration.Its primary use of this class is to provide the numeric value mapping for the purpose of (de)serializing to and from ASN.1 encodings.LDAPv3(Decode Haskell value from numeric ASN.1  encoding valueReturns / for undefined or out-of-bounds numeric values.LDAPv3*Encode Haskell value to its numeric ASN.1  encoding valueLDAPv3Test whether it's a  /  decoderLDAPv3Test whether decoder ist  monomorphicC. In case of a monomorphic decoder, returns the single tag matched.LDAPv3Only for non-sparse sLDAPv3Trivial identity instance LDAPv3Trivial identity instance!LDAPv3CHOICE join"LDAPv3denotes NULL#LDAPv3 SEQUENCE SIZE (1..MAX) OF<$%&'( )*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO Herbert Valerio Riedel 2020GPL-2.0-or-later Trustworthy.78UV_)LDAPv3ASN.1 UniversalString 8UniversalString ::= [UNIVERSAL 28] IMPLICIT OCTET STRINGNB: The surrogate-pair range U+D800 through U+DFFF is tolerated and thus becomes the responsibility of code converting to and from LDAPv3ASN.1 BMPString 2BMPString ::= [UNIVERSAL 30] IMPLICIT OCTET STRING|NB: The surrogate-pair range U+D800 through U+DFFF is tolerated and thus the responsibility of code converting to and from LDAPv3ASN.1 IA5String 2IA5String ::= [UNIVERSAL 22] IMPLICIT OCTET STRINGLDAPv3ASN.1 VisibleString 6VisibleString ::= [UNIVERSAL 26] IMPLICIT OCTET STRINGLDAPv3ASN.1 NumericString 6NumericString ::= [UNIVERSAL 18] IMPLICIT OCTET STRINGLDAPv3ASN.1 PrintableString 8PrintableString ::= [UNIVERSAL 19] IMPLICIT OCTET STRINGLDAPv3ASN.1 UTF8String 3UTF8String ::= [UNIVERSAL 12] IMPLICIT OCTET STRINGLDAPv3NConvenient Sum-type combining a subset of the standard ASN.1 string-like typesSee specific string types in LDAPv3.ASN1String for details.$LDAPv39Typeclass abstracting over common ASN.1 string operations%LDAPv34Decode ASN.1 string type from its ASN.1 BER encoding&LDAPv32Encode ASN.1 string type to its ASN.1 BER encoding'LDAPv3aPredicate for determining whether given code-point is allowed by the respective ASN.1 string type(LDAPv30Convert ASN.1 string type to list of code-points)LDAPv34Construct ASN.1 string type from list of code-points This returns I if a code-point cannot be expressed in the respective ASN.1 string type.*LDAPv34Encode ASN.1 string choice to its ASN.1 BER encoding+LDAPv36Decode ASN.1 string choice from its ASN.1 BER encoding6LDAPv3Encodes as ASN.1 BER:LDAPv3Encodes as ASN.1 BER>LDAPv3Encodes as ASN.1 BERBLDAPv3Encodes as ASN.1 BERFLDAPv3Encodes as ASN.1 BERJLDAPv3Encodes as ASN.1 BERNLDAPv3Encodes as ASN.1 BERRLDAPv3Encodes as ASN.1 BER$ !"#$%&'()*+,-./012345$$%&'() !"#*+453210-,/. None.7=?@AMecLDAPv3 Message ID ( 3https://tools.ietf.org/html/rfc4511#section-4.1.1.1RFC4511 Section 4.1.1.1) $MessageID ::= INTEGER (0 .. maxInt)eLDAPv3&LDAPv3 protocol ASN.1 constant as per 1https://tools.ietf.org/html/rfc4511#section-4.1.1RFC4511 Section 4.1.1 ,maxInt INTEGER ::= 2147483647 -- (2^^31 - 1)PLDAPv3cde None7jyfLDAPv3   Result Code ( 1https://tools.ietf.org/html/rfc4511#section-4.1.9RFC4511 Section 4.1.9)VNB: If you need access to the LDAPv3 protocol specific numeric result code values use  rather than !&fromEnum ResultCode'unwillingToPerform29,fromEnumerated ResultCode'unwillingToPerform53(fghijklmnopqrstuvwxyz{|}~ Safe>m,LDAPv39Convert to and from string representations as defined by  #https://tools.ietf.org/html/rfc4515RFC4515. Herbert Valerio Riedel 2023GPL-2.0-or-later Trustworthy=>?@AM_ LDAPv3ASN.1 OBJECT IDENTIFIERThe  type uses the textual LDAP encoding when converted to/from ASN.1 whereas this type provides the proper ASN.1 encoding as defined per X.690 section 8.19 (accessible via its Binary instance).LDAPv3Numeric Object Identifier (OID) numericoid = number 1*( DOT number ) number = DIGIT / ( LDIGIT 1*DIGIT ) DIGIT = %x30 / LDIGIT ; "0"-"9" LDIGIT = %x31-39 ; "1"-"9"(NB: The current type definition and its  instance currently allows to represent and parse more than the ABNF described above; moreover, the ABNF is also more liberal as it doesn't express the constraints imposed upon the first two arcs by X.660 and ASN.1 . See also .LDAPv3Object identifier ( 1https://tools.ietf.org/html/rfc4511#section-4.1.2RFC4511 Section 4.1.2) ]LDAPOID ::= OCTET STRING -- Constrained to <numericoid> -- [RFC4512]LDAPv3Typeclass for  operationLDAPv3:Determine whether OID representation is deemed well-formed!An OID is considered well-formed iff it hasat least two arcs,the first arc is one of 0, 1, or 2, andif the first arc is not 2+, the second arc value is within the range  [0 .. 39].Additionally, for string types the IETF-style ASCII dot notation with normalized (i.e. without redundant leading zeros) decimal numbers is expected (e.g. 1.23.456.7.890) as expressed by the  numericoid ABNF production shown below: numericoid = number 1*( DOT number ) number = DIGIT / ( LDIGIT 1*DIGIT ) DIGIT = %x30 / LDIGIT ; "0"-"9" LDIGIT = %x31-39 ; "1"-"9"LDAPv3=Encode as raw ASN.1 BER/DER value (i.e. without tag & length)]NB: As this function simply returns the internal representation this operation has zero cost.LDAPv3?Decode from raw ASN.1 BER/DER value (i.e. without tag & length)All byte sequences are deemed well-formed raw ASN.1 OID encodings that satisfy the simple rules below (which ought to result in the same syntax as the rules specified in X.690 section 8.19.):7The sequence must end with an octet with a value below 0x80 (i.e. unset MSB), andany 0x80[ octet must be directly preceded by an octet which must have a value equal or greater than 0x80 (i.e. set MSB).<In case these rules are not satisfied this function returns .GNB: As this encoding matches the internal representation the resulting  merely newtype%-wraps the input argument on success.LDAPv3Convert  into  representationLDAPv3Try to  representation into  representationNB: This will return  iff  returns Q on the input argument.LDAPv3Trivial instance as . values are always well-formed by constructionLDAPv3Encodes as ASN.1 BER/DER with  UNIVERSAL 6 tag as per X.690 section 8.19LDAPv3Lexicographic ordering None "#7=>?@AM_LDAPv3Matching Rule Identifier ( 1https://tools.ietf.org/html/rfc4511#section-4.1.8RFC4511 Section 4.1.8) MatchingRuleId ::= LDAPStringLDAPv36Case-insensitive string used to denote OID short names keystring = leadkeychar *keychar leadkeychar = ALPHA keychar = ALPHA / DIGIT / HYPHEN ALPHA = %x41-5A / %x61-7A ; "A"-"Z" / "a"-"z" DIGIT = %x30 / LDIGIT ; "0"-"9" HYPHEN = %x2D ; hyphen ("-")LDAPv3-Case-insensitive attribute description option option = 1*keychar keychar = ALPHA / DIGIT / HYPHEN ALPHA = %x41-5A / %x61-7A ; "A"-"Z" / "a"-"z" DIGIT = %x30 / LDIGIT ; "0"-"9" HYPHEN = %x2D ; hyphen ("-")LDAPv3Attribute Descriptions ( 1https://tools.ietf.org/html/rfc4511#section-4.1.4RFC4511 Section 4.1.4) AttributeDescription ::= LDAPString -- Constrained to <attributedescription> -- [RFC4512]attributedescription's syntax is defined in ABNF ( %https://tools.ietf.org/search/rfc4234RFC4234 ) notation as attributedescription = attributetype options attributetype = oid options = *( SEMI option ) option = 1*keychar oid = descr / numericoid descr = keystring numericoid = number 1*( DOT number ) keystring = leadkeychar *keychar leadkeychar = ALPHA keychar = ALPHA / DIGIT / HYPHEN ALPHA = %x41-5A / %x61-7A ; "A"-"Z" / "a"-"z" number = DIGIT / ( LDIGIT 1*DIGIT ) DIGIT = %x30 / LDIGIT ; "0"-"9" LDIGIT = %x31-39 ; "1"-"9" HYPHEN = %x2D ; hyphen ("-") See also  1https://tools.ietf.org/search/rfc4512#section-2.5RFC4512 Section 2.5 for the definition of attributedescription.RSTUVWXYZ[\ Herbert Valerio Riedel 2019GPL-2.0-or-later Trustworthy"#.17=?@AHMUV_P4]LDAPv3Intermediate Response ( 0https://tools.ietf.org/html/rfc4511#section-4.13RFC4511 Section 4.13) IntermediateResponse ::= [APPLICATION 25] SEQUENCE { responseName [0] LDAPOID OPTIONAL, responseValue [1] OCTET STRING OPTIONAL }^LDAPv3Extended Response ( 0https://tools.ietf.org/html/rfc4511#section-4.12RFC4511 Section 4.12) ExtendedResponse ::= [APPLICATION 24] SEQUENCE { COMPONENTS OF LDAPResult, responseName [10] LDAPOID OPTIONAL, responseValue [11] OCTET STRING OPTIONAL }_LDAPv3Extended Request ( 0https://tools.ietf.org/html/rfc4511#section-4.12RFC4511 Section 4.12) ExtendedRequest ::= [APPLICATION 23] SEQUENCE { requestName [0] LDAPOID, requestValue [1] OCTET STRING OPTIONAL }`LDAPv3Abandon Operation ( 0https://tools.ietf.org/html/rfc4511#section-4.11RFC4511 Section 4.11) -AbandonRequest ::= [APPLICATION 16] MessageIDaLDAPv3Compare Response ( 0https://tools.ietf.org/html/rfc4511#section-4.10RFC4511 Section 4.10) /CompareResponse ::= [APPLICATION 15] LDAPResultbLDAPv3Compare Operation ( 0https://tools.ietf.org/html/rfc4511#section-4.10RFC4511 Section 4.10) zCompareRequest ::= [APPLICATION 14] SEQUENCE { entry LDAPDN, ava AttributeValueAssertion }cLDAPv3Modify DN Response ( /https://tools.ietf.org/html/rfc4511#section-4.9RFC4511 Section 4.9) 0ModifyDNResponse ::= [APPLICATION 13] LDAPResultdLDAPv3Modify DN Operation ( /https://tools.ietf.org/html/rfc4511#section-4.9RFC4511 Section 4.9)ModifyDNRequest ::= [APPLICATION 12] SEQUENCE { entry LDAPDN, newrdn RelativeLDAPDN, deleteoldrdn BOOLEAN, newSuperior [0] LDAPDN OPTIONAL }eLDAPv3Delete Response ( /https://tools.ietf.org/html/rfc4511#section-4.8RFC4511 Section 4.8) +DelResponse ::= [APPLICATION 11] LDAPResultfLDAPv3Delete Operation ( /https://tools.ietf.org/html/rfc4511#section-4.8RFC4511 Section 4.8) &DelRequest ::= [APPLICATION 10] LDAPDNgLDAPv3Add Response ( /https://tools.ietf.org/html/rfc4511#section-4.7RFC4511 Section 4.7) *AddResponse ::= [APPLICATION 9] LDAPResulthLDAPv3Attribute List 1AttributeList ::= SEQUENCE OF attribute AttributeiLDAPv3Add Operation ( /https://tools.ietf.org/html/rfc4511#section-4.7RFC4511 Section 4.7) kAddRequest ::= [APPLICATION 8] SEQUENCE { entry LDAPDN, attributes AttributeList }jLDAPv3Modify Response ( /https://tools.ietf.org/html/rfc4511#section-4.6RFC4511 Section 4.6) -ModifyResponse ::= [APPLICATION 7] LDAPResultkLDAPv3See l and mmLDAPv3See llLDAPv3Modify Operation ( /https://tools.ietf.org/html/rfc4511#section-4.6RFC4511 Section 4.6) =ModifyRequest ::= [APPLICATION 6] SEQUENCE { object LDAPDN, changes SEQUENCE OF change SEQUENCE { operation ENUMERATED { add (0), delete (1), replace (2), ... }, modification PartialAttribute } }nLDAPv3Relative Distinguished Name ( 1https://tools.ietf.org/html/rfc4511#section-4.1.3RFC4511 Section 4.1.3) kRelativeLDAPDN ::= LDAPString -- Constrained to <name-component> -- [RFC4514]oLDAPv3Distinguished Name ( 1https://tools.ietf.org/html/rfc4511#section-4.1.3RFC4511 Section 4.1.3) ^LDAPDN ::= LDAPString -- Constrained to <distinguishedName> -- [RFC4514]pLDAPv3String Type ( 1https://tools.ietf.org/html/rfc4511#section-4.1.2RFC4511 Section 4.1.2) bLDAPString ::= OCTET STRING -- UTF-8 encoded, -- [ISO10646] charactersqLDAPv3 [URI ::= LDAPString -- limited to characters permitted in -- URIsrLDAPv3Referral result code ( 2https://tools.ietf.org/html/rfc4511#section-4.1.10RFC4511 Section 4.1.10) .Referral ::= SEQUENCE SIZE (1..MAX) OF uri URIsLDAPv3Result Message ( 1https://tools.ietf.org/html/rfc4511#section-4.1.9RFC4511 Section 4.1.9) LDAPResult ::= SEQUENCE { resultCode ENUMERATED { success (0), operationsError (1), protocolError (2), timeLimitExceeded (3), sizeLimitExceeded (4), compareFalse (5), compareTrue (6), authMethodNotSupported (7), strongerAuthRequired (8), -- 9 reserved -- referral (10), adminLimitExceeded (11), unavailableCriticalExtension (12), confidentialityRequired (13), saslBindInProgress (14), noSuchAttribute (16), undefinedAttributeType (17), inappropriateMatching (18), constraintViolation (19), attributeOrValueExists (20), invalidAttributeSyntax (21), -- 22-31 unused -- noSuchObject (32), aliasProblem (33), invalidDNSyntax (34), -- 35 reserved for undefined isLeaf -- aliasDereferencingProblem (36), -- 37-47 unused -- inappropriateAuthentication (48), invalidCredentials (49), insufficientAccessRights (50), busy (51), unavailable (52), unwillingToPerform (53), loopDetect (54), -- 55-63 unused -- namingViolation (64), objectClassViolation (65), notAllowedOnNonLeaf (66), notAllowedOnRDN (67), entryAlreadyExists (68), objectClassModsProhibited (69), -- 70 reserved for CLDAP -- affectsMultipleDSAs (71), -- 72-79 unused -- other (80), ... }, matchedDN LDAPDN, diagnosticMessage LDAPString, referral [3] Referral OPTIONAL }tLDAPv3Search Result Done ( 1https://tools.ietf.org/html/rfc4511#section-4.5.2RFC4511 Section 4.5.2) /SearchResultDone ::= [APPLICATION 5] LDAPResultuLDAPv3 Attribute ( 1https://tools.ietf.org/html/rfc4511#section-4.1.7RFC4511 Section 4.1.7) UAttribute ::= PartialAttribute(WITH COMPONENTS { ..., vals (SIZE(1..MAX))})vLDAPv3Partial Attribute ( 1https://tools.ietf.org/html/rfc4511#section-4.1.7RFC4511 Section 4.1.7) sPartialAttribute ::= SEQUENCE { type AttributeDescription, vals SET OF value AttributeValue }wLDAPv3See x [PartialAttributeList ::= SEQUENCE OF partialAttribute PartialAttributexLDAPv3Search Result Entry ( 1https://tools.ietf.org/html/rfc4511#section-4.5.2RFC4511 Section 4.5.2) ySearchResultEntry ::= [APPLICATION 4] SEQUENCE { objectName LDAPDN, attributes PartialAttributeList }yLDAPv3'Search Result Continuation Reference ( 1https://tools.ietf.org/html/rfc4511#section-4.5.3RFC4511 Section 4.5.3) fSearchResultReference ::= [APPLICATION 19] SEQUENCE SIZE (1..MAX) OF uri URIzLDAPv3Extensible Match { | ( 5https://tools.ietf.org/html/rfc4511#section-4.5.1.7.7RFC4511 Section 4.5.1.7.7) MatchingRuleAssertion ::= SEQUENCE { matchingRule [1] MatchingRuleId OPTIONAL, type [2] AttributeDescription OPTIONAL, matchValue [3] AssertionValue, dnAttributes [4] BOOLEAN DEFAULT FALSE }NOTE<: The LDAPv3 specification imposes the additional invariant:If the  matchingRule field is absent, the type field MUST be present}LDAPv3See ~LDAPv38may occur at most once; must be first element if presentLDAPv37may occur at most once; must be last element if present~LDAPv3 Substring | ( 5https://tools.ietf.org/html/rfc4511#section-4.5.1.7.2RFC4511 Section 4.5.1.7.2) 8SubstringFilter ::= SEQUENCE { type AttributeDescription, substrings SEQUENCE SIZE (1..MAX) OF substring CHOICE { initial [0] AssertionValue, -- can occur at most once any [1] AssertionValue, final [2] AssertionValue } -- can occur at most once }NOTEP: The additional invariants imposed on the ordering and occurence counts of the initial and final entries MUST currently be enforced by the consumer of this library. Future versions of this library might change to enforce these invariants at the type-level.;Specifically, the invariant stated by the specification is:There SHALL be at most one initial and at most one final in the  substrings of a SubstringFilter. If initial. is present, it SHALL be the first element of  substrings. If final- is present, it SHALL be the last element of  substrings.LDAPv3 AssertionValue ::= OCTET STRINGLDAPv3Attribute Value Assertion ( 1https://tools.ietf.org/html/rfc4511#section-4.1.6RFC4511 Section 4.1.6) wAttributeValueAssertion ::= SEQUENCE { attributeDesc AttributeDescription, assertionValue AssertionValue }LDAPv3Attribute Value ( 1https://tools.ietf.org/html/rfc4511#section-4.1.5RFC4511 Section 4.1.5) AttributeValue ::= OCTET STRING|LDAPv3Search Filter ( 3https://tools.ietf.org/html/rfc4511#section-4.5.1.7RFC4511 Section 4.5.1.7)  Filter ::= CHOICE { and [0] SET SIZE (1..MAX) OF filter Filter, or [1] SET SIZE (1..MAX) OF filter Filter, not [2] Filter, equalityMatch [3] AttributeValueAssertion, substrings [4] SubstringFilter, greaterOrEqual [5] AttributeValueAssertion, lessOrEqual [6] AttributeValueAssertion, present [7] AttributeDescription, approxMatch [8] AttributeValueAssertion, extensibleMatch [9] MatchingRuleAssertion, ... } See also LDAPv3.StringRepr for converting | to and from the 'String Representation of Search Filters ( #https://tools.ietf.org/html/rfc4515RFC4515).LDAPv3See { ( 3https://tools.ietf.org/html/rfc4511#section-4.5.1.3RFC4511 Section 4.5.1.3)LDAPv3See { ( 3https://tools.ietf.org/html/rfc4511#section-4.5.1.2RFC4511 Section 4.5.1.2)LDAPv3See { AttributeSelection ::= SEQUENCE OF selector LDAPString -- The LDAPString is constrained to -- <attributeSelector> in Section 4.5.1.8{LDAPv3Search Request ( 1https://tools.ietf.org/html/rfc4511#section-4.5.1RFC4511 Section 4.5.1) qSearchRequest ::= [APPLICATION 3] SEQUENCE { baseObject LDAPDN, scope ENUMERATED { baseObject (0), singleLevel (1), wholeSubtree (2), ... }, derefAliases ENUMERATED { neverDerefAliases (0), derefInSearching (1), derefFindingBaseObj (2), derefAlways (3) }, sizeLimit INTEGER (0 .. maxInt), timeLimit INTEGER (0 .. maxInt), typesOnly BOOLEAN, filter Filter, attributes AttributeSelection }LDAPv3Unbind Operation ( /https://tools.ietf.org/html/rfc4511#section-4.3RFC4511 Section 4.3) &UnbindRequest ::= [APPLICATION 2] NULLLDAPv3Bind Response ( /https://tools.ietf.org/html/rfc4511#section-4.2RFC4511 Section 4.2) ~BindResponse ::= [APPLICATION 1] SEQUENCE { COMPONENTS OF LDAPResult, serverSaslCreds [7] OCTET STRING OPTIONAL }LDAPv3See  |SaslCredentials ::= SEQUENCE { mechanism LDAPString, credentials OCTET STRING OPTIONAL }LDAPv3See  AuthenticationChoice ::= CHOICE { simple [0] OCTET STRING, -- 1 and 2 reserved sasl [3] SaslCredentials, ... }LDAPv3Bind Request ( /https://tools.ietf.org/html/rfc4511#section-4.2RFC4511 Section 4.2) BindRequest ::= [APPLICATION 0] SEQUENCE { version INTEGER (1 .. 127), name LDAPDN, authentication AuthenticationChoice }LDAPv3Control Entry ( 2https://tools.ietf.org/html/rfc4511#section-4.1.11RFC4511 Section 4.1.11) Control ::= SEQUENCE { controlType LDAPOID, criticality BOOLEAN DEFAULT FALSE, controlValue OCTET STRING OPTIONAL }LDAPv3 Controls ( 2https://tools.ietf.org/html/rfc4511#section-4.1.11RFC4511 Section 4.1.11) (Controls ::= SEQUENCE OF control ControlLDAPv3CHOICE type inlined in LDAPMessage.protocolOp ( 1https://tools.ietf.org/html/rfc4511#section-4.1.1RFC4511 Section 4.1.1)LDAPv3Message Envelope ( 1https://tools.ietf.org/html/rfc4511#section-4.1.1RFC4511 Section 4.1.1) LDAPMessage ::= SEQUENCE { messageID MessageID, protocolOp CHOICE { bindRequest BindRequest, bindResponse BindResponse, unbindRequest UnbindRequest, searchRequest SearchRequest, searchResEntry SearchResultEntry, searchResDone SearchResultDone, searchResRef SearchResultReference, modifyRequest ModifyRequest, modifyResponse ModifyResponse, addRequest AddRequest, addResponse AddResponse, delRequest DelRequest, delResponse DelResponse, modDNRequest ModifyDNRequest, modDNResponse ModifyDNResponse, compareRequest CompareRequest, compareResponse CompareResponse, abandonRequest AbandonRequest, extendedReq ExtendedRequest, extendedResp ExtendedResponse, ..., intermediateResponse IntermediateResponse }, controls [0] Controls OPTIONAL }LDAPv3Encodes to/from ASN.1 as per /https://tools.ietf.org/html/rfc4511#section-5.1RFC4511 Section 5.1( 23456cdefghijklmnopqrstuvwxyz{|}~]^_`abcdefghijkmlnopqrstuvwxyz}~|{     Herbert Valerio Riedel 2019GPL-2.0-or-later Trustworthy"#.17=?@AHMUV_w:LDAPv3Intermediate Response ( 0https://tools.ietf.org/html/rfc4511#section-4.13RFC4511 Section 4.13) IntermediateResponse ::= [APPLICATION 25] SEQUENCE { responseName [0] LDAPOID OPTIONAL, responseValue [1] OCTET STRING OPTIONAL }LDAPv3Extended Response ( 0https://tools.ietf.org/html/rfc4511#section-4.12RFC4511 Section 4.12) ExtendedResponse ::= [APPLICATION 24] SEQUENCE { COMPONENTS OF LDAPResult, responseName [10] LDAPOID OPTIONAL, responseValue [11] OCTET STRING OPTIONAL }LDAPv3Extended Request ( 0https://tools.ietf.org/html/rfc4511#section-4.12RFC4511 Section 4.12) ExtendedRequest ::= [APPLICATION 23] SEQUENCE { requestName [0] LDAPOID, requestValue [1] OCTET STRING OPTIONAL }LDAPv3Abandon Operation ( 0https://tools.ietf.org/html/rfc4511#section-4.11RFC4511 Section 4.11) -AbandonRequest ::= [APPLICATION 16] MessageIDLDAPv3Compare Response ( 0https://tools.ietf.org/html/rfc4511#section-4.10RFC4511 Section 4.10) /CompareResponse ::= [APPLICATION 15] LDAPResultLDAPv3Compare Operation ( 0https://tools.ietf.org/html/rfc4511#section-4.10RFC4511 Section 4.10) zCompareRequest ::= [APPLICATION 14] SEQUENCE { entry LDAPDN, ava AttributeValueAssertion }LDAPv3Modify DN Response ( /https://tools.ietf.org/html/rfc4511#section-4.9RFC4511 Section 4.9) 0ModifyDNResponse ::= [APPLICATION 13] LDAPResultLDAPv3Modify DN Operation ( /https://tools.ietf.org/html/rfc4511#section-4.9RFC4511 Section 4.9)ModifyDNRequest ::= [APPLICATION 12] SEQUENCE { entry LDAPDN, newrdn RelativeLDAPDN, deleteoldrdn BOOLEAN, newSuperior [0] LDAPDN OPTIONAL }LDAPv3Delete Response ( /https://tools.ietf.org/html/rfc4511#section-4.8RFC4511 Section 4.8) +DelResponse ::= [APPLICATION 11] LDAPResultLDAPv3Delete Operation ( /https://tools.ietf.org/html/rfc4511#section-4.8RFC4511 Section 4.8) &DelRequest ::= [APPLICATION 10] LDAPDNLDAPv3Add Response ( /https://tools.ietf.org/html/rfc4511#section-4.7RFC4511 Section 4.7) *AddResponse ::= [APPLICATION 9] LDAPResultLDAPv3Attribute List 1AttributeList ::= SEQUENCE OF attribute AttributeLDAPv3Add Operation ( /https://tools.ietf.org/html/rfc4511#section-4.7RFC4511 Section 4.7) kAddRequest ::= [APPLICATION 8] SEQUENCE { entry LDAPDN, attributes AttributeList }LDAPv3Modify Response ( /https://tools.ietf.org/html/rfc4511#section-4.6RFC4511 Section 4.6) -ModifyResponse ::= [APPLICATION 7] LDAPResultLDAPv3See  and LDAPv3See LDAPv3Modify Operation ( /https://tools.ietf.org/html/rfc4511#section-4.6RFC4511 Section 4.6) =ModifyRequest ::= [APPLICATION 6] SEQUENCE { object LDAPDN, changes SEQUENCE OF change SEQUENCE { operation ENUMERATED { add (0), delete (1), replace (2), ... }, modification PartialAttribute } }LDAPv3Relative Distinguished Name ( 1https://tools.ietf.org/html/rfc4511#section-4.1.3RFC4511 Section 4.1.3) kRelativeLDAPDN ::= LDAPString -- Constrained to <name-component> -- [RFC4514]LDAPv3Distinguished Name ( 1https://tools.ietf.org/html/rfc4511#section-4.1.3RFC4511 Section 4.1.3) ^LDAPDN ::= LDAPString -- Constrained to <distinguishedName> -- [RFC4514]LDAPv3String Type ( 1https://tools.ietf.org/html/rfc4511#section-4.1.2RFC4511 Section 4.1.2) bLDAPString ::= OCTET STRING -- UTF-8 encoded, -- [ISO10646] charactersLDAPv3 [URI ::= LDAPString -- limited to characters permitted in -- URIsLDAPv3Referral result code ( 2https://tools.ietf.org/html/rfc4511#section-4.1.10RFC4511 Section 4.1.10) .Referral ::= SEQUENCE SIZE (1..MAX) OF uri URILDAPv3Result Message ( 1https://tools.ietf.org/html/rfc4511#section-4.1.9RFC4511 Section 4.1.9) LDAPResult ::= SEQUENCE { resultCode ENUMERATED { success (0), operationsError (1), protocolError (2), timeLimitExceeded (3), sizeLimitExceeded (4), compareFalse (5), compareTrue (6), authMethodNotSupported (7), strongerAuthRequired (8), -- 9 reserved -- referral (10), adminLimitExceeded (11), unavailableCriticalExtension (12), confidentialityRequired (13), saslBindInProgress (14), noSuchAttribute (16), undefinedAttributeType (17), inappropriateMatching (18), constraintViolation (19), attributeOrValueExists (20), invalidAttributeSyntax (21), -- 22-31 unused -- noSuchObject (32), aliasProblem (33), invalidDNSyntax (34), -- 35 reserved for undefined isLeaf -- aliasDereferencingProblem (36), -- 37-47 unused -- inappropriateAuthentication (48), invalidCredentials (49), insufficientAccessRights (50), busy (51), unavailable (52), unwillingToPerform (53), loopDetect (54), -- 55-63 unused -- namingViolation (64), objectClassViolation (65), notAllowedOnNonLeaf (66), notAllowedOnRDN (67), entryAlreadyExists (68), objectClassModsProhibited (69), -- 70 reserved for CLDAP -- affectsMultipleDSAs (71), -- 72-79 unused -- other (80), ... }, matchedDN LDAPDN, diagnosticMessage LDAPString, referral [3] Referral OPTIONAL }LDAPv3Search Result Done ( 1https://tools.ietf.org/html/rfc4511#section-4.5.2RFC4511 Section 4.5.2) /SearchResultDone ::= [APPLICATION 5] LDAPResultLDAPv3 Attribute ( 1https://tools.ietf.org/html/rfc4511#section-4.1.7RFC4511 Section 4.1.7) UAttribute ::= PartialAttribute(WITH COMPONENTS { ..., vals (SIZE(1..MAX))})LDAPv3Partial Attribute ( 1https://tools.ietf.org/html/rfc4511#section-4.1.7RFC4511 Section 4.1.7) sPartialAttribute ::= SEQUENCE { type AttributeDescription, vals SET OF value AttributeValue }LDAPv3See  [PartialAttributeList ::= SEQUENCE OF partialAttribute PartialAttributeLDAPv3Search Result Entry ( 1https://tools.ietf.org/html/rfc4511#section-4.5.2RFC4511 Section 4.5.2) ySearchResultEntry ::= [APPLICATION 4] SEQUENCE { objectName LDAPDN, attributes PartialAttributeList }LDAPv3'Search Result Continuation Reference ( 1https://tools.ietf.org/html/rfc4511#section-4.5.3RFC4511 Section 4.5.3) fSearchResultReference ::= [APPLICATION 19] SEQUENCE SIZE (1..MAX) OF uri URILDAPv3Extensible Match (  ( 5https://tools.ietf.org/html/rfc4511#section-4.5.1.7.7RFC4511 Section 4.5.1.7.7) MatchingRuleAssertion ::= SEQUENCE { matchingRule [1] MatchingRuleId OPTIONAL, type [2] AttributeDescription OPTIONAL, matchValue [3] AssertionValue, dnAttributes [4] BOOLEAN DEFAULT FALSE }NOTE<: The LDAPv3 specification imposes the additional invariant:If the  matchingRule field is absent, the type field MUST be presentLDAPv3See  LDAPv38may occur at most once; must be first element if presentLDAPv37may occur at most once; must be last element if present LDAPv3 Substring  ( 5https://tools.ietf.org/html/rfc4511#section-4.5.1.7.2RFC4511 Section 4.5.1.7.2) 8SubstringFilter ::= SEQUENCE { type AttributeDescription, substrings SEQUENCE SIZE (1..MAX) OF substring CHOICE { initial [0] AssertionValue, -- can occur at most once any [1] AssertionValue, final [2] AssertionValue } -- can occur at most once }NOTEP: The additional invariants imposed on the ordering and occurence counts of the initial and final entries MUST currently be enforced by the consumer of this library. Future versions of this library might change to enforce these invariants at the type-level.;Specifically, the invariant stated by the specification is:There SHALL be at most one initial and at most one final in the  substrings of a SubstringFilter. If initial. is present, it SHALL be the first element of  substrings. If final- is present, it SHALL be the last element of  substrings. LDAPv3 AssertionValue ::= OCTET STRINGLDAPv3Attribute Value Assertion ( 1https://tools.ietf.org/html/rfc4511#section-4.1.6RFC4511 Section 4.1.6) wAttributeValueAssertion ::= SEQUENCE { attributeDesc AttributeDescription, assertionValue AssertionValue }LDAPv3Attribute Value ( 1https://tools.ietf.org/html/rfc4511#section-4.1.5RFC4511 Section 4.1.5) AttributeValue ::= OCTET STRINGLDAPv3Search Filter ( 3https://tools.ietf.org/html/rfc4511#section-4.5.1.7RFC4511 Section 4.5.1.7)  Filter ::= CHOICE { and [0] SET SIZE (1..MAX) OF filter Filter, or [1] SET SIZE (1..MAX) OF filter Filter, not [2] Filter, equalityMatch [3] AttributeValueAssertion, substrings [4] SubstringFilter, greaterOrEqual [5] AttributeValueAssertion, lessOrEqual [6] AttributeValueAssertion, present [7] AttributeDescription, approxMatch [8] AttributeValueAssertion, extensibleMatch [9] MatchingRuleAssertion, ... } See also LDAPv3.StringRepr for converting  to and from the 'String Representation of Search Filters ( #https://tools.ietf.org/html/rfc4515RFC4515).LDAPv3See ( ( 3https://tools.ietf.org/html/rfc4511#section-4.5.1.3RFC4511 Section 4.5.1.3)#LDAPv3See ( ( 3https://tools.ietf.org/html/rfc4511#section-4.5.1.2RFC4511 Section 4.5.1.2)'LDAPv3See ( AttributeSelection ::= SEQUENCE OF selector LDAPString -- The LDAPString is constrained to -- <attributeSelector> in Section 4.5.1.8(LDAPv3Search Request ( 1https://tools.ietf.org/html/rfc4511#section-4.5.1RFC4511 Section 4.5.1) qSearchRequest ::= [APPLICATION 3] SEQUENCE { baseObject LDAPDN, scope ENUMERATED { baseObject (0), singleLevel (1), wholeSubtree (2), ... }, derefAliases ENUMERATED { neverDerefAliases (0), derefInSearching (1), derefFindingBaseObj (2), derefAlways (3) }, sizeLimit INTEGER (0 .. maxInt), timeLimit INTEGER (0 .. maxInt), typesOnly BOOLEAN, filter Filter, attributes AttributeSelection }2LDAPv3Unbind Operation ( /https://tools.ietf.org/html/rfc4511#section-4.3RFC4511 Section 4.3) &UnbindRequest ::= [APPLICATION 2] NULL3LDAPv3Bind Response ( /https://tools.ietf.org/html/rfc4511#section-4.2RFC4511 Section 4.2) ~BindResponse ::= [APPLICATION 1] SEQUENCE { COMPONENTS OF LDAPResult, serverSaslCreds [7] OCTET STRING OPTIONAL }7LDAPv3See ; |SaslCredentials ::= SEQUENCE { mechanism LDAPString, credentials OCTET STRING OPTIONAL };LDAPv3See > AuthenticationChoice ::= CHOICE { simple [0] OCTET STRING, -- 1 and 2 reserved sasl [3] SaslCredentials, ... }>LDAPv3Bind Request ( /https://tools.ietf.org/html/rfc4511#section-4.2RFC4511 Section 4.2) BindRequest ::= [APPLICATION 0] SEQUENCE { version INTEGER (1 .. 127), name LDAPDN, authentication AuthenticationChoice }CLDAPv3Control Entry ( 2https://tools.ietf.org/html/rfc4511#section-4.1.11RFC4511 Section 4.1.11) Control ::= SEQUENCE { controlType LDAPOID, criticality BOOLEAN DEFAULT FALSE, controlValue OCTET STRING OPTIONAL }HLDAPv3 Controls ( 2https://tools.ietf.org/html/rfc4511#section-4.1.11RFC4511 Section 4.1.11) (Controls ::= SEQUENCE OF control ControlILDAPv3CHOICE type inlined in LDAPMessage.protocolOp ( 1https://tools.ietf.org/html/rfc4511#section-4.1.1RFC4511 Section 4.1.1)_LDAPv3Message Envelope ( 1https://tools.ietf.org/html/rfc4511#section-4.1.1RFC4511 Section 4.1.1) LDAPMessage ::= SEQUENCE { messageID MessageID, protocolOp CHOICE { bindRequest BindRequest, bindResponse BindResponse, unbindRequest UnbindRequest, searchRequest SearchRequest, searchResEntry SearchResultEntry, searchResDone SearchResultDone, searchResRef SearchResultReference, modifyRequest ModifyRequest, modifyResponse ModifyResponse, addRequest AddRequest, addResponse AddResponse, delRequest DelRequest, delResponse DelResponse, modDNRequest ModifyDNRequest, modDNResponse ModifyDNResponse, compareRequest CompareRequest, compareResponse CompareResponse, abandonRequest AbandonRequest, extendedReq ExtendedRequest, extendedResp ExtendedResponse, ..., intermediateResponse IntermediateResponse }, controls [0] Controls OPTIONAL }dLDAPv3ASN.1 CHOICE AnnotationeLDAPv3ASN.1  COMPONENTS OF AnnotationfLDAPv3Helper representing a BOOLEAN DEFAULT (TRUE|FALSE) ASN.1 type annotationgLDAPv3ASN.1  ENUMERATED Annotation See also  class.hLDAPv3ASN.1 EXPLICIT AnnotationiLDAPv3ASN.1 IMPLICIT AnnotationLDAPv3Encodes to/from ASN.1 as per /https://tools.ietf.org/html/rfc4511#section-5.1RFC4511 Section 5.1 cdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi_`abccdeIJKLMNOPQRSTUVWXYZ[\]^ fghijklmnopqrstuvwxyz{|}~HCDEFG>?@AB;<=789:34562()*+,-./01#$%& !"'     f ehigdNone"#>_ LDAPv3 parser for parsing  #https://tools.ietf.org/html/rfc4515RFC4515+ string representations of a LDAPv3 search s None "#7=>?@AM LDAPv31Decoded non-normalizing string representation of DistinguishedName DistinguishedName ::= RDNSequence RDNSequence ::= SEQUENCE OF RelativeDistinguishedName RelativeDistinguishedName ::= SET SIZE (1..MAX) OF AttributeTypeAndValue AttributeTypeAndValue ::= SEQUENCE { type AttributeType, value AttributeValue }Raw ASN.1 Hex-encoded AttributeValues are represented as * (which implies they MUST not be a size-0  ) whereas O is used for textually encoded (possibly containing escaped characters) values.FAs defined in RFC4514, the RDNSequence is serialized in reverse order.LDAPv38Haskell representation of the table below as defined in  /https://tools.ietf.org/search/rfc4514#section-3RFC4514 Section 3. String / X.500 AttributeType  CN / commonName (2.5.4.3)  L / localityName (2.5.4.7)  ST / stateOrProvinceName (2.5.4.8)  O / organizationName (2.5.4.10)  OU / organizationalUnitName (2.5.4.11)  C / countryName (2.5.4.6)  STREET / streetAddress (2.5.4.9)  DC / domainComponent (0.9.2342.19200300.100.1.25)  UID / userId (0.9.2342.19200300.100.1.1)  Herbert Valerio Riedel 2019GPL-2.0-or-later Trustworthy LDAPv3 Convenience  operation for rendering as LDAPv3 Convenience & operation for rendering as plain-old LDAPv3 Convenience  operation for parsing from LDAPv3 Convenience  operation for parsing from LDAPv3 Convenience & operation for parsing from plain-old    !"#$%&'(()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq r r s t u v w x y z { | } ~                                        !""#$%&'()*+,,-.//012345567899:;<=>?@ABCDEFGHIJKLMNOPQRSTTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'&(&)&*&+&+&,&-&-&.&/&/&0&1&2&2&3&4&4&5&6&7&8&&&9:;<=>?@ABCDEFGHIJKLKMKNKOKPKQKRKSKSKTUVUVUWXYZ[Z\Z]^_^_^`abacadaeafghgigjgjgkglglgmgngngogpgpgqgrgrgsgtgtguvwxyz{|}}~g     ZXY[\] !"#$%&'()*+*,-./012XY[\]3456789:;<=>?@ABCDEFGHIJK LMNOPQRSTUVWX "   !+,/259=>T|     "#$%&'()*,-./013456789:;<?@ABCDEFGHIJKLMNOPQRSTUVWYZ[\]^_LDAPv3-0.1.2.0-inplaceLDAPv3.MessageLDAPv3.ASN1StringLDAPv3.StringRepr LDAPv3.OIDCommonData.Int.SubtypesData.ASN1.Prim Data.ASN1LDAPv3.Message.TypesLDAPv3.ResultCodeLDAPv3 LDAPResultLDAPv3.StringRepr.ClassLDAPv3.AttributeDescriptionLDAPv3.Message.AnnotatedLDAPv3.SearchFilterLDAPv3.DistinguishedName UIntBoundsUIntfromUInttoUIntTagK UNIVERSAL APPLICATION CONTEXTUALPRIVATENULLSETSET1 OCTET_STRING Enumerated toEnumeratedfromEnumeratedUniversalString BMPString IA5String VisibleString NumericStringPrintableString UTF8Stringutf8String'toShortTextASN1StringChoiceASN1String'OCTET_STRINGASN1String'UniversalStringASN1String'UTF8StringASN1String'BMPStringASN1String'IA5StringASN1String'VisibleStringASN1String'PrintableStringASN1String'NumericString ASN1Stringasn1string'decodeasn1string'encodeasn1string'supportsCodePointasn1string'toCodePointsasn1string'fromCodePointsasn1StringChoice'encodeasn1StringChoice'decodeprintableString'fromShortTextprintableString'toShortTextnumericString'fromShortTextnumericString'toShortTextvisibleString'fromShortTextvisibleString'toShortTextia5String'fromShortTextia5String'toShortTextbmpString'toUcs2CodePointsbmpString'fromUcs2CodePoints$fBinaryUTF8String$fASN1UTF8String$fShowUTF8String$fASN1StringUTF8String$fBinaryPrintableString$fASN1PrintableString$fShowPrintableString$fASN1StringPrintableString$fBinaryNumericString$fASN1NumericString$fASN1StringNumericString$fShowNumericString$fBinaryVisibleString$fASN1VisibleString$fShowVisibleString$fASN1StringVisibleString$fBinaryIA5String$fASN1IA5String$fShowIA5String$fASN1StringIA5String$fBinaryBMPString$fASN1BMPString$fShowBMPString$fASN1StringBMPString$fBinaryUniversalString$fASN1UniversalString$fShowUniversalString$fASN1StringUniversalString$fBinaryASN1StringChoice$fEqUTF8String$fOrdUTF8String$fEqPrintableString$fOrdPrintableString$fEqNumericString$fOrdNumericString$fEqVisibleString$fOrdVisibleString $fEqIA5String$fOrdIA5String $fEqBMPString$fOrdBMPString$fEqUniversalString$fOrdUniversalString$fShowASN1StringChoice$fEqASN1StringChoice MessageIDMaxInt ResultCodeResultCode'successResultCode'operationsErrorResultCode'protocolErrorResultCode'timeLimitExceededResultCode'sizeLimitExceededResultCode'compareFalseResultCode'compareTrue!ResultCode'authMethodNotSupportedResultCode'strongerAuthRequiredResultCode'referralResultCode'adminLimitExceeded'ResultCode'unavailableCriticalExtension"ResultCode'confidentialityRequiredResultCode'saslBindInProgressResultCode'noSuchAttribute!ResultCode'undefinedAttributeType ResultCode'inappropriateMatchingResultCode'constraintViolation!ResultCode'attributeOrValueExists!ResultCode'invalidAttributeSyntaxResultCode'noSuchObjectResultCode'aliasProblemResultCode'invalidDNSyntax$ResultCode'aliasDereferencingProblem&ResultCode'inappropriateAuthenticationResultCode'invalidCredentials#ResultCode'insufficientAccessRightsResultCode'busyResultCode'unavailableResultCode'unwillingToPerformResultCode'loopDetectResultCode'namingViolationResultCode'objectClassViolationResultCode'notAllowedOnNonLeafResultCode'notAllowedOnRDNResultCode'entryAlreadyExists$ResultCode'objectClassModsProhibitedResultCode'affectsMultipleDSAsResultCode'other StringReprasParsec asBuilderrenderShortTextOBJECT_IDENTIFIEROIDLDAPOIDIsWellFormedOidisWellFormedOidobject_identifier'toBinobject_identifier'fromBinobject_identifier'toOIDobject_identifier'fromOID$fIsWellFormedOidText$fIsWellFormedOidText0$fIsWellFormedOidShortText$fIsWellFormedOidOID$fStringReprOID $fASN1OID$fNewtypeOIDNonEmpty"$fIsWellFormedOidOBJECT_IDENTIFIER$fBinaryOBJECT_IDENTIFIER$fStringReprOBJECT_IDENTIFIER$fASN1OBJECT_IDENTIFIER$fOrdOBJECT_IDENTIFIER$fShowOBJECT_IDENTIFIER$fEqOID$fOrdOID $fShowOID $fNFDataOID$fEqOBJECT_IDENTIFIER$fNFDataOBJECT_IDENTIFIERMatchingRuleId KeyStringOptionAttributeDescriptionIntermediateResponse"_IntermediateResponse'responseName#_IntermediateResponse'responseValueExtendedResponse_ExtendedResponse'LDAPResult_ExtendedResponse'responseName_ExtendedResponse'responseValueExtendedRequest_ExtendedRequest'responseName_ExtendedRequest'responseValueAbandonRequestCompareResponseCompareRequest_CompareRequest'entry_CompareRequest'avaModifyDNResponseModifyDNRequest_ModifyDNRequest'entry_ModifyDNRequest'newrdn_ModifyDNRequest'deleteoldrdn_ModifyDNRequest'newSuperior DelResponse DelRequest AddResponse AttributeList AddRequest_AddRequest'entry_AddRequest'attributesModifyResponse Operation Operation'addOperation'deleteOperation'replaceChange_Change'operation_Change'modification ModifyRequest_ModifyRequest'object_ModifyRequest'changesRelativeLDAPDNLDAPDN LDAPStringURIReferral_LDAPResult'resultCode_LDAPResult'matchedDN_LDAPResult'diagnosticMessage_LDAPResult'referralSearchResultDone Attribute_Attribute'type_Attribute'valsPartialAttribute_PartialAttribute'type_PartialAttribute'valsPartialAttributeListSearchResultEntry_SearchResultEntry'objectName_SearchResultEntry'attributesSearchResultReferenceMatchingRuleAssertion#_MatchingRuleAssertion'matchingRule_MatchingRuleAssertion'type!_MatchingRuleAssertion'matchValue#_MatchingRuleAssertion'dnAttributes SubstringSubstring'initial Substring'anySubstring'finalSubstringFilter_SubstringFilter'type_SubstringFilter'substringsAssertionValueAttributeValueAssertion&_AttributeValueAssertion'attributeDesc'_AttributeValueAssertion'assertionValueAttributeValueFilter Filter'and Filter'or Filter'notFilter'equalityMatchFilter'substringsFilter'greaterOrEqualFilter'lessOrEqualFilter'presentFilter'approxMatchFilter'extensibleMatch DerefAliasesDerefAliases'neverDerefAliasesDerefAliases'derefInSearching DerefAliases'derefFindingBaseObjDerefAliases'derefAlwaysScopeScope'baseObjectScope'singleLevelScope'wholeSubtreeAttributeSelection SearchRequest_SearchRequest'baseObject_SearchRequest'scope_SearchRequest'derefAliases_SearchRequest'sizeLimit_SearchRequest'timeLimit_SearchRequest'typesOnly_SearchRequest'filter_SearchRequest'attributes UnbindRequest BindResponse_BindResponse'LDAPResult_BindResponse'serverSaslCredsSaslCredentials_SaslCredentials'mechanism_SaslCredentials'credentialsAuthenticationChoiceAuthenticationChoice'simpleAuthenticationChoice'sasl BindRequestbindRequest'versionbindRequest'namebindRequest'authenticationControl_Control'controlType_Control'criticality_Control'controlValueControls ProtocolOpProtocolOp'bindRequestProtocolOp'bindResponseProtocolOp'unbindRequestProtocolOp'searchRequestProtocolOp'searchResEntryProtocolOp'searchResDoneProtocolOp'searchResRefProtocolOp'modifyRequestProtocolOp'modifyResponseProtocolOp'addRequestProtocolOp'addResponseProtocolOp'delRequestProtocolOp'delResponseProtocolOp'modDNRequestProtocolOp'modDNResponseProtocolOp'compareRequestProtocolOp'compareResponseProtocolOp'abandonRequestProtocolOp'extendedReqProtocolOp'extendedRespProtocolOp'intermediateResponse LDAPMessage_LDAPMessage'messageID_LDAPMessage'protocolOp_LDAPMessage'controlsCHOICE COMPONENTS_OFBOOLEAN_DEFAULT ENUMERATEDEXPLICITIMPLICIT$fNFDataControl$fEnumeratedScope $fNFDataScope$fEnumeratedDerefAliases$fNFDataDerefAliases$fNFDataAttributeValueAssertion$fNFDataSubstring$fNFDataSubstringFilter$fNFDataMatchingRuleAssertion$fNFDataFilter$fNFDataPartialAttribute$fNFDataAttribute$fNFDataSaslCredentials$fNFDataAuthenticationChoice$fNFDataLDAPResult$fNFDataBindResponse$fNFDataSearchResultEntry$fNFDataSearchRequest$fNFDataBindRequest$fEnumeratedOperation$fNFDataOperation$fNFDataChange$fNFDataModifyRequest$fNFDataAddRequest$fNFDataModifyDNRequest$fNFDataCompareRequest$fNFDataExtendedRequest$fNFDataExtendedResponse$fNFDataIntermediateResponse$fNFDataProtocolOp$fBinaryLDAPMessage$fGenericControl $fShowControl $fEqControl$fGenericScope$fBoundedScope $fEnumScope $fShowScope $fEqScope$fGenericDerefAliases$fBoundedDerefAliases$fEnumDerefAliases$fShowDerefAliases$fEqDerefAliases $fGenericAttributeValueAssertion$fShowAttributeValueAssertion$fEqAttributeValueAssertion$fGenericSubstring$fShowSubstring $fEqSubstring$fGenericSubstringFilter$fShowSubstringFilter$fEqSubstringFilter$fGenericMatchingRuleAssertion$fShowMatchingRuleAssertion$fEqMatchingRuleAssertion$fGenericFilter $fShowFilter $fEqFilter$fGenericPartialAttribute$fShowPartialAttribute$fEqPartialAttribute$fGenericAttribute$fShowAttribute $fEqAttribute$fGenericSearchResultReference$fNFDataSearchResultReference$fShowSearchResultReference$fEqSearchResultReference$fGenericSaslCredentials$fShowSaslCredentials$fEqSaslCredentials$fGenericAuthenticationChoice$fShowAuthenticationChoice$fEqAuthenticationChoice$fGenericLDAPResult$fShowLDAPResult$fEqLDAPResult$fGenericBindResponse$fShowBindResponse$fEqBindResponse$fGenericSearchResultEntry$fShowSearchResultEntry$fEqSearchResultEntry$fGenericSearchRequest$fShowSearchRequest$fEqSearchRequest$fGenericBindRequest$fShowBindRequest$fEqBindRequest$fGenericOperation$fBoundedOperation$fEnumOperation$fShowOperation $fEqOperation$fGenericChange $fShowChange $fEqChange$fGenericModifyRequest$fShowModifyRequest$fEqModifyRequest$fGenericAddRequest$fShowAddRequest$fEqAddRequest$fGenericModifyDNRequest$fShowModifyDNRequest$fEqModifyDNRequest$fGenericCompareRequest$fShowCompareRequest$fEqCompareRequest$fGenericExtendedRequest$fShowExtendedRequest$fEqExtendedRequest$fGenericExtendedResponse$fShowExtendedResponse$fEqExtendedResponse$fGenericIntermediateResponse$fShowIntermediateResponse$fEqIntermediateResponse$fGenericProtocolOp$fShowProtocolOp$fEqProtocolOp$fGenericLDAPMessage$fShowLDAPMessage$fEqLDAPMessageDistinguishedNamerfc4514coreAttributes renderText renderString parseTextparseShortText parseStringbase Control.MonadguardGHC.BasejoinMonad>>=>>returnFunctorfmap<$Control.Monad.Fail MonadFailfail Applicativepure<*>*>liftA2<*Data.TraversablemapMsequence GHC.GenericsGeneric GHC.TypeNatsKnownNat GHC.TypeLits KnownSymbol Semigroup<>sconcatstimesghc-prim GHC.TypesIntGHC.IntInt8Int16Int32Int64 GHC.NaturalNatural GHC.MaybeMaybeNothingJustWordGHC.WordWord8Word16Word32Word64NatSymbol+*^<=?- CmpSymbolCmpNatDivModLog2 TypeError AppendSymbolData.Semigroupoption mtimesDefaultdiffcycle1MingetMinMaxgetMaxArgArgMinArgMaxFirstgetFirstLastgetLast WrappedMonoid WrapMonoid unwrapMonoid getOptionData.List.NonEmpty<|mfilter<$!>unless replicateM_ replicateMfoldM_foldM zipWithM_zipWithM mapAndUnzipMforever<=<>=>filterMforMControl.Applicativeoptional WrappedMonad WrapMonad unwrapMonad WrappedArrow WrapArrow unwrapArrowZipList getZipListData.Functor.IdentityIdentity runIdentity GHC.ExceptionthrowGHC.Exception.TypeArithException UnderflowOverflowData.Functor.ConstConstgetConst Data.Foldablemsumasum sequence_forM_mapM_Data.Semigroup.Internal stimesMonoidstimesIdempotentDualgetDualEndoappEndoAllgetAllAnygetAnySumgetSumProduct getProduct sameSymbol someSymbolVal someNatVal symbolVal'natVal' symbolValnatVal SomeSymbol ErrorMessage:<>::$$:ShowTypesameNatSomeNat<= Data.ProxyProxy byteSwap64 byteSwap32 byteSwap16 Data.BitstoIntegralSizedpopCountDefaulttestBitDefault bitDefaultBitsxor.&..|. complementshiftrotatezeroBitsbitsetBitclearBit complementBittestBit bitSizeMaybebitSizeisSignedshiftL unsafeShiftLshiftR unsafeShiftRrotateLrotateRpopCount FiniteBits finiteBitSizecountLeadingZeroscountTrailingZeros Data.MaybemapMaybe catMaybes listToMaybe maybeToList fromMaybefromJust isNothingisJustmaybe Data.Functorvoid<$>apliftM5liftM4liftM3liftM2liftMwhen=<<liftA3liftA<**> Alternativeempty<|>somemany MonadPlusmzeromplusNonEmpty:|stimesIdempotentMonoidbytestring-0.10.10.1Data.ByteString.Short.InternalShortByteStringData.ByteString.Internal ByteStringdeepseq-1.4.4.0Control.DeepSeqNFDatarnf text-1.2.4.0Data.Text.InternalTextPnewtype-0.2.2.0-07dc755f6372d1635c64b0c46610ce173e9cfcd4ef63a508d5a4ae8cc73c351bControl.NewtypeNewtypepackunpackQint-cast-0.2.0.0-5c92ebd2b15f814c3fe4147ddbc3d467e4fd3fb36b0bdb290dff9fae169ed883 Data.IntCastintCast intCastEq intCastIso intCastMaybe IntBaseType IntBaseTypeK BigIntTag BigWordTag FixedIntTag FixedWordTagIsIntBaseSubTypeIsIntBaseTypeEqIsIntBaseTypeIso IsIntSubType IsIntTypeEq IsIntTypeIsoQtext-short-0.1.5-e4bfa9c3b0ea2cb6ab8c4f5fe7d841bdbc2e1cf25a3b268f201fa4ec058c4a9aData.Text.Short.Internal ShortTextrwhnfinside impossiblesepBy1' SIntBoundsSIntfromSInt Data.EitherLefttoSIntRightIsAboveMinBoundNegIsBelowMaxBounduintFromIntegertoUInt'sintFromIntegerTagKnownTagtagVal Universal Application ContextualPrivatetagNumTL EncodingRuleBERCERDERTagPC Primitive Constructed isolate64 getTagLength putTagLength asPrimitive getVarInt64 getVarInteger putVarInt64 putVarIntegerGHC.EnumEnumasn1decodeIsEmptymemptyasn1decodeIsMonodec'BoundedEnum$fEnumeratedInt$fEnumeratedInt64$fAlternativeASN1Decode$fASN1()$fASN1NonEmptyGASN1DecodeChoiceGASN1EncodeChoiceGASN1DecodeCompOfGASN1EncodeCompOfBOOLEANOPTIONALASN1Constructedasn1decodeCompOfasn1encodeCompOfASN1 asn1decode asn1defTag asn1encode ASN1Decode ASN1Encode toBinaryPutenc'SEQUENCE_COMPS enc'SEQUENCE dec'OPTIONALasn1fail toBinaryGet transformViaasn1decodeParsecexplicitimplicit dec'CHOICE dec'SEQUENCEdec'SEQUENCE_OF dec'SET_OFenc'BoundedEnumdec'NULLenc'NULLretagwraptaggasn1encodeCompOfgasn1decodeCompOfgasn1encodeChoicegasn1decodeChoice$fEnumMessageIDFalsep'AttributeDescriptionr'AttributeDescriptionts'AttributeDescriptionp'Option ts'Option p'DescrOrOID ts'KeyString p'KeyStringts'MatchingRuleIdr'MatchingRuleIdp'MatchingRuleIdp'Filterparsec-3.1.14.0Text.Parsec.PrimParsecr'FilterString