úÎ! %Ûh      !"#$%&'()*+,-./0123456789:; < = > ? @ A B C 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 (c) 2019-2020 Emily Pillmore BSD-style$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalportableNoneF`kšhbase64EGiven a bytestring, check to see that it conforms to a given alphabetibase64;This function checks that the last char of a bytestring is '='A and, if true, fails with a message or completes some io action.This is necessary to check when decoding permissively (i.e. filling in padding chars). Consider the following 4 cases of a string of length l:ÿMl = 0 mod 4: No pad chars are added, since the input is assumed to be good. l = 1 mod 4: Never an admissible length in base64 l = 2 mod 4: 2 padding chars are added. If padding chars are present in the string, they will fail as to decode as final quanta l = 3 mod 4: 1 padding char is added. In this case a string is of the form  body +  padchar´. If adding the pad char "completes"" the string so that it is `l = 0 mod 4`, then this may possibly be forming corrupting data. This case is degenerate and should be disallowed.ÝHence, permissive decodes should only fill in padding chars when it makes sense to add them. That is, if an input is degenerate, it should never succeed when we add padding chars. We need the following invariant to hold:  B64U.decodeUnpadded  |' B64U.decodePadded ~ B64U.decodePadded hi(c) 2019-2020 Emily Pillmore BSD-style$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalportableNoneF">jbase64qOnly the lookup table need be a foreignptr, and then, only so that we can automate some touches to keep it alivekbase64Read l index off alphabet addrmbase64Convert Word8's into Word32'snbase64Convert Word8's into Word32'sobase64Convert Word8's into Word32'spbase64Allocate and fill n bytes with some dataqbase64Pack an r into an encoding table of sstbase64/Rechunk a list of bytestrings in multiples of 4 jukmnovpqtwx(c) 2019-2020 Emily Pillmore BSD-style$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalportableNone`k)Óybase64QFinalize an encoded bytestring by filling in the remaining bytes and any paddingzbase64IFinalize a bytestring by filling out the remaining bits without padding.{base64dst bytestring foreign ptrbase64 decode tablebase64original decode static pointerbase640original source pointer (for offset calculation)base64dst ptrbase64src ptryz{(c) 2019-2020 Emily Pillmore BSD-style$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalportableNoneFk.|base64Base64url encoding table}base64Base64 std encoding table~base64&Non-URLsafe b64 decoding table (naive)base64"URLsafe b64 decoding table (naive)|}~(c) 2019-2020 Emily Pillmore BSD-style$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalportableNone`k6O€base64QEncoding inner loop. Packs 3 bytes from src pointer into the first 6 bytes of 4 Word8'#s (using the encoding table, as 2 Word12'&s ), writing these to the dst pointer.base64decode lookup tablebase64 src pointerbase64 dst pointerbase64end of src ptr‚base64decode lookup tablebase64 src pointerbase64 dst pointerbase64end of src ptrbase64 dst foreign ptr (for consing bs)€‚(c) 2019-2020 Emily Pillmore BSD-style$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalportableNone`k>ƒbase64QEncoding inner loop. Packs 3 bytes from src pointer into the first 6 bytes of 4 Word8'#s (using the encoding table, as 2 Word12'&s ), writing these to the dst pointer.„base64 src pointerbase64 dst pointerbase64end of src ptr…base64decode lookup tablebase64 src pointerbase64 dst pointerbase64end of src ptrbase64 dst foreign ptr (for consing bs)ƒ„…(c) 2019-2020 Emily Pillmore BSD-style$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalportableNone`kFó†base64PEncoding inner loop. Packs 6 bytes from src pointer into the first 6 bits of 4 Word12'#s (using the encoding table, as 2 Word12'&s ), writing these to the dst pointer.‡base64decode lookup tablebase64 src pointerbase64 dst pointerbase64end of src ptrbase64 dst foreign ptr (for consing bs)ˆbase64decode lookup tablebase64 src pointerbase64 dst pointerbase64end of src ptrbase64 dst foreign ptr (for consing bs)†‡ˆ(c) 2019-2020 Emily Pillmore BSD-style$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalportableNonekPB‰base64šThe main decode function. Takes a padding flag, a decoding table, and the input value, producing either an error string on the left, or a decoded value. Note: If Padding ~  'Don\'tCare'4, then we pad out the input to a multiple of 4. If Padding ~ PaddedN, then we do not, and fail if the input is not a multiple of 4 in length. If Padding ~ Unpaddedl, then we validate correctness of length and the absence of padding and then treat as a std padded string.Š‹‰Œ(c) 2019-2020 Emily Pillmore BSD-style$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalportableNone`‡base64 Encode a  value as Base64 Ž with padding.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4base64 Encode a  value as a Base64  value with padding.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4base64Decode a padded Base64-encoded  value.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4base64,Leniently decode an unpadded Base64-encoded  value. This function will not generate parse errors. If input data contains padding chars, then the input will be parsed up until the first pad character.Note: This is not RFC 4648-compliant.base64Tell whether a  value is base64 encoded.base64Tell whether a  value is a valid Base64 format.­This will not tell you whether or not this is a correct Base64url representation, only that it conforms to the correct shape. To check whether it is a true Base64 encoded  value, use .(c) 2019-2020 Emily Pillmore BSD-style$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalportableNonek‡ß base64 Encode a  value as a Base64url Ž value with padding.See: -https://tools.ietf.org/html/rfc4648#section-5RFC-4648 section 5base64 Encode a  as a Base64url  value with padding.See: -https://tools.ietf.org/html/rfc4648#section-5RFC-4648 section 5base64"Decode a padded Base64url encoded ¾ value. If its length is not a multiple of 4, then padding chars will be added to fill out the input to a multiple of 4 for safe decoding as Base64url-encoded values are optionally padded.BFor a decoder that fails on unpadded input of incorrect size, use  .See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4 base64 Encode a  value as Base64url ޲ without padding. Note that for Base64url, padding is optional. If you call this function, you will simply be encoding as Base64url and stripping padding chars from the output.See: /https://tools.ietf.org/html/rfc4648#section-3.2RFC-4648 section 3.2 base64 Encode a Å value as Base64url without padding. Note that for Base64url, padding is optional. If you call this function, you will simply be encoding as Base64url and stripping padding chars from the output.See: /https://tools.ietf.org/html/rfc4648#section-3.2RFC-4648 section 3.2 base64%Decode an unpadded Base64url-encoded n value. Input strings are required to be unpadded, and will undergo validation prior to decoding to confirm.SIn general, unless unpadded Base64url is explicitly required, it is safer to call .See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4 base64"Decode a padded Base64url-encoded p value. Input strings are required to be correctly padded, and will be validated prior to decoding to confirm.QIn general, unless padded Base64url is explicitly required, it is safer to call .See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4 base64/Leniently decode an unpadded Base64url-encoded —. This function will not generate parse errors. If input data contains padding chars, then the input will be parsed up until the first pad character.Note: This is not RFC 4648-compliant.base64Tell whether a  is Base64url-encoded.base64Tell whether a  is a valid Base64url format.­This will not tell you whether or not this is a correct Base64url representation, only that it conforms to the correct shape. To check whether it is a true Base64 encoded  value, use .    (c) 2019-2020 Emily Pillmore BSD-style$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalportableNone˜qbase64 Encode a  value as Base64 Text with padding.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4base64 Encode a  value as a Base64  value with padding.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4base64Decode a padded Base64-encoded  value.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4base64,Leniently decode an unpadded Base64-encoded  value. This function will not generate parse errors. If input data contains padding chars, then the input will be parsed up until the first pad character.Note: This is not RFC 4648-compliant.base64Tell whether a  value is base64 encoded.base64Tell whether a  value is a valid Base64 format.­This will not tell you whether or not this is a correct Base64url representation, only that it conforms to the correct shape. To check whether it is a true Base64 encoded  value, use .(c) 2019-2020 Emily Pillmore BSD-style$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalportableNone¿Ý base64 Encode a  value as a Base64url Text value with padding.See: -https://tools.ietf.org/html/rfc4648#section-5RFC-4648 section 5base64 Encode a  as a Base64url  value with padding.See: -https://tools.ietf.org/html/rfc4648#section-5RFC-4648 section 5base64"Decode a padded Base64url encoded ¾ value. If its length is not a multiple of 4, then padding chars will be added to fill out the input to a multiple of 4 for safe decoding as Base64url-encoded values are optionally padded.BFor a decoder that fails on unpadded input of incorrect size, use .See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4base64 Encode a  value as Base64url Text² without padding. Note that for Base64url, padding is optional. If you call this function, you will simply be encoding as Base64url and stripping padding chars from the output.See: /https://tools.ietf.org/html/rfc4648#section-3.2RFC-4648 section 3.2base64 Encode a Å value as Base64url without padding. Note that for Base64url, padding is optional. If you call this function, you will simply be encoding as Base64url and stripping padding chars from the output.See: /https://tools.ietf.org/html/rfc4648#section-3.2RFC-4648 section 3.2base64%Decode an unpadded Base64url-encoded n value. Input strings are required to be unpadded, and will undergo validation prior to decoding to confirm.SIn general, unless unpadded Base64url is explicitly required, it is safer to call .See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4base64"Decode a padded Base64url-encoded p value. Input strings are required to be correctly padded, and will be validated prior to decoding to confirm.QIn general, unless padded Base64url is explicitly required, it is safer to call .See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4base64/Leniently decode an unpadded Base64url-encoded —. This function will not generate parse errors. If input data contains padding chars, then the input will be parsed up until the first pad character.Note: This is not RFC 4648-compliant.base64Tell whether a  is Base64url-encoded.base64Tell whether a  is a valid Base64url format.­This will not tell you whether or not this is a correct Base64url representation, only that it conforms to the correct shape. To check whether it is a true Base64 encoded  value, use .  (c) 2019-2020 Emily Pillmore BSD-style$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalportableNoneÐQ base64 Encode a  value as Base64 Ž with padding.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4!base64 Encode a  value as a Base64  value with padding.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4"base64Decode a padded Base64-encoded  value.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4#base64,Leniently decode an unpadded Base64-encoded  value. This function will not generate parse errors. If input data contains padding chars, then the input will be parsed up until the first pad character.Note: This is not RFC 4648-compliant.$base64Tell whether a  value is base64 encoded.%base64Tell whether a  value is a valid Base64 format.­This will not tell you whether or not this is a correct Base64url representation, only that it conforms to the correct shape. To check whether it is a true Base64 encoded  value, use $. !"#$% !"#$%(c) 2019-2020 Emily Pillmore BSD-style$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalportableNone÷‘ &base64 Encode a  value as a Base64url Ž value with padding.See: -https://tools.ietf.org/html/rfc4648#section-5RFC-4648 section 5'base64 Encode a  as a Base64url  value with padding.See: -https://tools.ietf.org/html/rfc4648#section-5RFC-4648 section 5(base64"Decode a padded Base64url encoded ¾ value. If its length is not a multiple of 4, then padding chars will be added to fill out the input to a multiple of 4 for safe decoding as Base64url-encoded values are optionally padded.BFor a decoder that fails on unpadded input of incorrect size, use +.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4)base64 Encode a  value as Base64url ޲ without padding. Note that for Base64url, padding is optional. If you call this function, you will simply be encoding as Base64url and stripping padding chars from the output.See: /https://tools.ietf.org/html/rfc4648#section-3.2RFC-4648 section 3.2*base64 Encode a Å value as Base64url without padding. Note that for Base64url, padding is optional. If you call this function, you will simply be encoding as Base64url and stripping padding chars from the output.See: /https://tools.ietf.org/html/rfc4648#section-3.2RFC-4648 section 3.2+base64%Decode an unpadded Base64url-encoded n value. Input strings are required to be unpadded, and will undergo validation prior to decoding to confirm.SIn general, unless unpadded Base64url is explicitly required, it is safer to call (.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4,base64"Decode a padded Base64url-encoded p value. Input strings are required to be correctly padded, and will be validated prior to decoding to confirm.QIn general, unless padded Base64url is explicitly required, it is safer to call (.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4-base64/Leniently decode an unpadded Base64url-encoded —. This function will not generate parse errors. If input data contains padding chars, then the input will be parsed up until the first pad character.Note: This is not RFC 4648-compliant..base64Tell whether a  is Base64url-encoded./base64Tell whether a  is a valid Base64url format.­This will not tell you whether or not this is a correct Base64url representation, only that it conforms to the correct shape. To check whether it is a true Base64 encoded  value, use .. &'()*+,-./ &)'*(,+-./(c) 2019-2020 Emily Pillmore BSD-style$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalportableSafe;0base64dThis data type represents the type of decoding errors of various kinds as they pertain to decoding Ž€ values. Namely, to distinguish between decoding errors from opaque unicode exceptions caught in the unicode decoding process.1base64VThe error associated with decoding failure as a result of the Base64 decoding process2base64UThe error associated with the decoding failure as a result of the conversion process012012(c) 2019-2020 Emily Pillmore BSD-style$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalportableNone45base64 Encode a Ž value in Base64 with padding.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 46base64Decode a padded Base64-encoded Ž value.Note:B This function makes sure that decoding is total by deferring to ‘À. This will always round trip for any valid Base64-encoded text value, but it may not round trip for bad inputs. The onus is on the caller to make sure inputs are valid. If unsure, defer to 7' and pass in a custom decode function.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 47base64Attempt to decode a Ž# value as Base64, converting from  to ŽK according to some encoding function. In practice, This is something like  decodeUtf8', which may produce an error.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4Example: 7 ’ ::  -> “ (0 UnicodeException) Ž 8base64"Leniently decode a Base64-encoded Ž value. This function will not generate parse errors. If input data contains padding chars, then the input will be parsed up until the first pad character.Note: This is not RFC 4648-compliant.9base64Tell whether a Ž value is Base64-encoded.:base64Tell whether a Ž value is a valid Base64 format.ªThis will not tell you whether or not this is a correct Base64 representation, only that it conforms to the correct shape. To check whether it is a true Base64 encoded Ž value, use 9.7base64#convert a bytestring to text (e.g. ’)base64Input text to decode56789:56789: (c) 2019-2020 Emily Pillmore BSD-style$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalportableNoneU ;base64 Encode a Ž! value in Base64url with padding.See: -https://tools.ietf.org/html/rfc4648#section-5RFC-4648 section 5<base64"Decode a padded Base64url-encoded ޹ value. If its length is not a multiple of 4, then padding chars will be added to fill out the input to a multiple of 4 for safe decoding as base64url encodings are optionally padded.0For a decoder that fails on unpadded input, use ?Note:B This function makes sure that decoding is total by deferring to ‘À. This will always round trip for any valid Base64-encoded text value, but it may not round trip for bad inputs. The onus is on the caller to make sure inputs are valid. If unsure, defer to =' and pass in a custom decode function.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4=base64Attempt to decode a & value as Base64url, converting from  to ŽK according to some encoding function. In practice, This is something like  decodeUtf8', which may produce an error.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4Example: = ’ :: Ž -> “ (0 UnicodeException) Ž >base64 Encode a ŽÅ value in Base64url without padding. Note that for Base64url, padding is optional. If you call this function, you will simply be encoding as Base64url and stripping padding chars from the output.See: /https://tools.ietf.org/html/rfc4648#section-3.2RFC-4648 section 3.2?base64%Decode an unpadded Base64url encoded Ž value.Note:B This function makes sure that decoding is total by deferring to ‘Á. This will always round trip for any valid Base64-encoded text value, but it may not round trip for bad inputs. The onus is on the caller to make sure inputs are valid. If unsure, defer to @& and pass in a custom decode function.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4@base64Attempt to decode an unpadded & value as Base64url, converting from  to ŽK according to some encoding function. In practice, This is something like  decodeUtf8', which may produce an error.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4Example: = ’ ::  -> “ (0 UnicodeException) Ž Abase64#Decode an padded Base64url encoded Ž valueNote:B This function makes sure that decoding is total by deferring to ‘À. This will always round trip for any valid Base64-encoded text value, but it may not round trip for bad inputs. The onus is on the caller to make sure inputs are valid. If unsure, defer to B' and pass in a custom decode function.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4Bbase64Attempt to decode a padded & value as Base64url, converting from  to ŽK according to some encoding function. In practice, This is something like  decodeUtf8', which may produce an error.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4Example: = ’ ::  -> “ (0 UnicodeException) Ž Cbase64/Leniently decode an unpadded Base64url-encoded Ž—. This function will not generate parse errors. If input data contains padding chars, then the input will be parsed up until the first pad character.Note: This is not RFC 4648-compliant.Dbase64Tell whether a Ž value is Base64url-encoded.Ebase64Tell whether a Ž# value is a valid Base64url format.­This will not tell you whether or not this is a correct Base64url representation, only that it conforms to the correct shape. To check whether it is a true Base64 encoded Ž value, use D.=base64#convert a bytestring to text (e.g. ’)base64Input text to decode@base64#convert a bytestring to text (e.g. ’)base64Input text to decodeBbase64#convert a bytestring to text (e.g. ’)base64Input text to decode ;<=>?@ABCDE ;<=>?@ABCDE (c) 2019-2020 Emily Pillmore BSD-style$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalportableNonen?Fbase64 Encode a ” value in Base64 with padding.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4Gbase64Decode a padded Base64-encoded ” valueSee: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4Note:B This function makes sure that decoding is total by deferring to À. This will always round trip for any valid Base64-encoded text value, but it may not round trip for bad inputs. The onus is on the caller to make sure inputs are valid. If unsure, defer to H' and pass in a custom decode function.Hbase64Attempt to decode a # value as Base64, converting from  to ”K according to some encoding function. In practice, This is something like  decodeUtf8', which may produce an error.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4Example: H • ::  -> “ (0 UnicodeException) ” Ibase64"Leniently decode a Base64-encoded ” value. This function will not generate parse errors. If input data contains padding chars, then the input will be parsed up until the first pad character.Note: This is not RFC 4648-compliant.Jbase64Tell whether a ” value is Base64-encoded.Kbase64Tell whether a ” value is a valid Base64 format.ªThis will not tell you whether or not this is a correct Base64 representation, only that it conforms to the correct shape. To check whether it is a true Base64 encoded ” value, use J.Hbase64#convert a bytestring to text (e.g. •)base64Input text to decodeFGHIJKFGHIJK (c) 2019-2020 Emily Pillmore BSD-style$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalportableNoneªÄ Lbase64 Encode a ”! value in Base64url with padding.See: -https://tools.ietf.org/html/rfc4648#section-5RFC-4648 section 5Mbase64"Decode a padded Base64url-encoded ”¹ value. If its length is not a multiple of 4, then padding chars will be added to fill out the input to a multiple of 4 for safe decoding as base64url encodings are optionally padded.0For a decoder that fails on unpadded input, use P.Note:B This function makes sure that decoding is total by deferring to À. This will always round trip for any valid Base64-encoded text value, but it may not round trip for bad inputs. The onus is on the caller to make sure inputs are valid. If unsure, defer to N' and pass in a custom decode function.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4Nbase64Attempt to decode a lazy & value as Base64url, converting from  to ”K according to some encoding function. In practice, This is something like  decodeUtf8', which may produce an error.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4Example: N • ::  -> “ (0 UnicodeException) ” Obase64 Encode a ”Å value in Base64url without padding. Note that for Base64url, padding is optional. If you call this function, you will simply be encoding as Base64url and stripping padding chars from the output.See: /https://tools.ietf.org/html/rfc4648#section-3.2RFC-4648 section 3.2Pbase64%Decode an unpadded Base64url encoded ” value.Note:B This function makes sure that decoding is total by deferring to À. This will always round trip for any valid Base64-encoded text value, but it may not round trip for bad inputs. The onus is on the caller to make sure inputs are valid. If unsure, defer to decodeBase64WUnpaddedWith' and pass in a custom decode function.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4Qbase64#Attempt to decode an unpadded lazy & value as Base64url, converting from  to ”K according to some encoding function. In practice, This is something like  decodeUtf8', which may produce an error.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4Example: N • ::  -> “ (0 UnicodeException) ” Rbase64#Decode an padded Base64url encoded ” valueNote:B This function makes sure that decoding is total by deferring to À. This will always round trip for any valid Base64-encoded text value, but it may not round trip for bad inputs. The onus is on the caller to make sure inputs are valid. If unsure, defer to S' and pass in a custom decode function.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4Sbase64 Attempt to decode a padded lazy & value as Base64url, converting from  to ”K according to some encoding function. In practice, This is something like  decodeUtf8', which may produce an error.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4Example: N • ::  -> “ (0 UnicodeException) ” Tbase64/Leniently decode an unpadded Base64url-encoded ”—. This function will not generate parse errors. If input data contains padding chars, then the input will be parsed up until the first pad character.Note: This is not RFC 4648-compliant.Ubase64Tell whether a ” value is Base64url-encoded.Vbase64Tell whether a ”# value is a valid Base64url format.­This will not tell you whether or not this is a correct Base64url representation, only that it conforms to the correct shape. To check whether it is a true Base64 encoded ” value, use U.Nbase64#convert a bytestring to text (e.g. •)base64Input text to decodeQbase64#convert a bytestring to text (e.g. •)base64Input text to decodeSbase64#convert a bytestring to text (e.g. •)base64Input text to decode LMNOPQRSTUV LMNOPQRSTUV (c) 2019-2020 Emily Pillmore BSD-style$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalportableNoneÄ.Wbase64 Encode a – value in Base64 with padding.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4Xbase64Decode a padded Base64-encoded – valueNote:B This function makes sure that decoding is total by deferring to À. This will always round trip for any valid Base64-encoded text value, but it may not round trip for bad inputs. The onus is on the caller to make sure inputs are valid. If unsure, defer to Y' and pass in a custom decode function.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4Ybase64Attempt to decode a # value as Base64, converting from  ByteString to –K according to some encoding function. In practice, This is something like  decodeUtf8', which may produce an error.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4Example: Y  ::  -> “ (0 UnicodeException) – Zbase64"Leniently decode a Base64-encoded – value. This function will not generate parse errors. If input data contains padding chars, then the input will be parsed up until the first pad character.Note: This is not RFC 4648-compliant.[base64Tell whether a – value is Base64-encoded.\base64Tell whether a – value is a valid Base64 format.ªThis will not tell you whether or not this is a correct Base64 representation, only that it conforms to the correct shape. To check whether it is a true Base64 encoded – value, use [.Ybase64#convert a bytestring to text (e.g. )base64Input text to decodeWXYZ[\WXYZ[\ (c) 2019-2020 Emily Pillmore BSD-style$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalportableNone ]base64 Encode a –! value in Base64url with padding.See: -https://tools.ietf.org/html/rfc4648#section-5RFC-4648 section 5^base64"Decode a padded Base64url-encoded –¹ value. If its length is not a multiple of 4, then padding chars will be added to fill out the input to a multiple of 4 for safe decoding as base64url encodings are optionally padded.0For a decoder that fails on unpadded input, use a.Note:B This function makes sure that decoding is total by deferring to À. This will always round trip for any valid Base64-encoded text value, but it may not round trip for bad inputs. The onus is on the caller to make sure inputs are valid. If unsure, defer to _' and pass in a custom decode function.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4_base64Attempt to decode a & value as Base64url, converting from  ByteString to –K according to some encoding function. In practice, This is something like  decodeUtf8', which may produce an error.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4Example: _  ::  -> “ (0 UnicodeException) – `base64 Encode a –Å value in Base64url without padding. Note that for Base64url, padding is optional. If you call this function, you will simply be encoding as Base64url and stripping padding chars from the output.See: /https://tools.ietf.org/html/rfc4648#section-3.2RFC-4648 section 3.2abase64%Decode an unpadded Base64url encoded – value.Note:B This function makes sure that decoding is total by deferring to À. This will always round trip for any valid Base64-encoded text value, but it may not round trip for bad inputs. The onus is on the caller to make sure inputs are valid. If unsure, defer to b' and pass in a custom decode function.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4bbase64Attempt to decode an unpadded & value as Base64url, converting from  to –K according to some encoding function. In practice, This is something like  decodeUtf8', which may produce an error.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4Example: _  ::  -> “ (0 UnicodeException) – cbase64#Decode an padded Base64url encoded – valueNote:B This function makes sure that decoding is total by deferring to À. This will always round trip for any valid Base64-encoded text value, but it may not round trip for bad inputs. The onus is on the caller to make sure inputs are valid. If unsure, defer to d' and pass in a custom decode function.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4dbase64Attempt to decode a padded & value as Base64url, converting from  ByteString to –K according to some encoding function. In practice, This is something like  decodeUtf8', which may produce an error.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4Example: _  ::  -> “ (0 UnicodeException) – ebase64/Leniently decode an unpadded Base64url-encoded –—. This function will not generate parse errors. If input data contains padding chars, then the input will be parsed up until the first pad character.Note: This is not RFC 4648-compliant.fbase64Tell whether a – value is Base64url-encoded.gbase64Tell whether a –# value is a valid Base64url format.­This will not tell you whether or not this is a correct Base64url representation, only that it conforms to the correct shape. To check whether it is a true Base64 encoded – value, use f._base64#convert a bytestring to text (e.g. )base64Input text to decodebbase64#convert a bytestring to text (e.g. )base64Input text to decodedbase64#convert a bytestring to text (e.g. )base64Input text to decode ]^_`abcdefg ]^_`abcdefg— !"#$ !"#$ !"#$%&'()*   *  ! + " ,  # $   *      *  ! + " ,  # $   *      *  ! + " ,  # $-./0123456789:;12<=/>?@ABCDEFGHIJHIJHIJKLMNOPQRSTOUQOVWRXRX1YZR[TR\]^_`"base64-0.4.2-rHiCRFm0TMHYAfUNuPEDjData.ByteString.Base64Data.ByteString.Base64.URLData.ByteString.Lazy.Base64Data.ByteString.Lazy.Base64.URLData.ByteString.Short.Base64 Data.ByteString.Short.Base64.URLData.Text.Encoding.Base64.ErrorData.Text.Encoding.Base64Data.Text.Encoding.Base64.URLData.Text.Lazy.Encoding.Base64"Data.Text.Lazy.Encoding.Base64.URLData.Text.Short.Encoding.Base64#Data.Text.Short.Encoding.Base64.URLData.ByteString.Base64.Internal%Data.ByteString.Base64.Internal.Utils$Data.ByteString.Base64.Internal.Tail&Data.ByteString.Base64.Internal.Tables(Data.ByteString.Base64.Internal.W16.Loop(Data.ByteString.Base64.Internal.W32.Loop(Data.ByteString.Base64.Internal.W64.Loop$Data.ByteString.Base64.Internal.HeadT decodeLatin1 decodeUtf8' encodeBase64 encodeBase64' decodeBase64decodeBase64LenientisBase64 isValidBase64encodeBase64UnpaddedencodeBase64Unpadded'decodeBase64UnpaddeddecodeBase64Padded isBase64UrlisValidBase64Url Base64Error DecodeErrorConversionError$fEqBase64Error$fShowBase64ErrordecodeBase64WithdecodeBase64UnpaddedWithdecodeBase64PaddedWithvalidateBase64validateLastPad EncodingTableaixbaseGHC.WordWord8w32w64w64_16writeNPlainForeignPtrBytes packTableghc-primGHC.PrimAddr#Word16reChunkNw32_16 peekWord32BE peekWord64BEloopTail loopTailNoPad decodeTailbase64UrlTable base64TabledecodeB64TabledecodeB64UrlTable innerLoop decodeLoop lenientLoop decodeBase64_ encodeBase64_encodeBase64Nopad_decodeBase64Lenient_bytestring-0.10.8.2Data.ByteString.Internal ByteString text-1.2.3.1Data.Text.InternalTextData.ByteString.Lazy.InternalData.ByteString.Short.InternalShortByteStringData.Text.Encoding Data.EitherEitherData.Text.Internal.LazyData.Text.Lazy.Encoding'text-short-0.1.3-6s9Vn5x19Vb5f1556qmx0oData.Text.Short.Internal ShortText