Gx      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                    ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I JKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                            !! !!!"!#!$!%!&!'!(!)!*!+!,!-!.!/!0!1!2!3!4!5!6!7!8!9!:!;!<!=!>!?!@!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#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#w#x#y#z${$|$}$~$$$%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()** * * + + +++++++++ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw2SafeEFGHIEFGHIEHFGIEFGHI,SafeNone0IJIf a synchronous thread tries to do something that can only be done asynchronously, and the thread is set up to not continue asynchronously, it receives this exception.JKLMNOPQRSTUVW JKLMNOPQR NOPLMJKQR JKLMNOPQRSTUVWNone0^JavaScript exception >>>[\]^[\[\[\]^None0BI_$A wrapper around a JavaScript stringaO(1) The empty _.bA non-inlined version of a.d:Apply a function to the first element of an optional pair._`abcde_`abcd_`abcd_`abcdeNone*+,56:DIRoJLike HasCallStack, but only when jsaddle cabal flag check-unchecked is setu Result of a % returned from the JavaScript contextEBatch of commands that can be sent together to the JavaScript context@Command sent to a JavaScript context for execution synchronouslyACommand sent to a JavaScript context for execution asynchronouslyWrapper used when sending a JString to the JavaScript contextWrapper used when receiving a _ from the JavaScript contextWrapper used when sending a  to the JavaScript contextWrapper used when sending a N to the JavaScript contextWrapper used when receiving a N from the JavaScript contextSee -.See /See 0See 1See 27Type used for Haskell functions called from JavaScript.The  is to  what x is to y. When using GHCJS it is x.dType we can give to functions that are pure when using ghcjs, but live in JSM when using jsaddle.Some functions that can be pure in GHCJS cannot be implemented in a pure way in JSaddle (because we need to know the JSContextRef). Instead we implement versions of these functions in that return `GHCJSPure a` instead of aI. To call them in a way that will work when compiling with GHCJS use .The 7 monad keeps track of the JavaScript execution context.When using GHCJS it is y.Given a  function and a ) you can run the function like this... $runJSM jsmFunction javaScriptContextIdentifies a JavaScript execution context. When using GHCJS this is just '()' since their is only one context. When using GHC it includes the functions JSaddle needs to communicate with the JavaScript context.aUsed when you want to call a functions that is pure in GHCJS, but lives in the JSM in jsaddle.The  is to  what z is to y. When using GHCJS it is z.opqrstuvwxyz{|}~Function objectthisFunction arguments Only () (aka  JSUndefined) can be returned because the function may need to be executed in a different thread. If you need to get a value out pass in a continuation function as an argument and invoke it from haskell.lNO_`opqrtsuvwxyz{|}~mNO_`ouvwxyz{|}~pqrst8opqrstu vwxyz{|}~  None9;hAnything that can be used to make a list of JavaScript value references for use as function arguments?Anything that can be used to make a JavaScript object reference'If we already have a Object we are fine None[#Enable (or disable) JSaddle logging,Forces execution of pending asyncronous code>Forces execution of pending asyncronous code after performing fOn GHCJS this is 34. On GHC it will delay the execution of the current batch of asynchronous command when they are sent to JavaScript. It will not delay the Haskell code execution. The time returned will be based on the Haskell clock (not the JavaScript clock).wTries to executes the given code in the next animation frame callback. Avoid synchronous opperations where possible.  !5uvwxyz{|}~ !5 uvwxyz{|}~!  ! Noneb"*Gets the JavaScript context from the monad#Runs a 3 JavaScript function in a given JavaScript context.$Alternative version of #%Wrapped version of {8 that runs in a MonadIO that works a bit better with &Wrapped version of |8 that runs in a MonadIO that works a bit better with "#$%&"#$%&"#$%&"#$%& None'()*+,-./0123456789:;<=>?@ABC!'()*+,-./0123456789:;<=>?@ABC!'()*+,-./0123456789:;<=>?@ABC'()*+,-./0123456789:;<=>?@ABC NoneH&returns the empty Text if not a stringI&returns the empty Text if not a stringDEFGHI}DEFGHIDEFGHIDEFGHI}NoneJ JNone0BIKQLow-level conversion utilities for packages that cannot depend on ghcjs-baseKLMN JKLMNOPQRKLMNKLMNKLMNNoneWimplementation dependentOPQRSTUVWXYZ[\]MNOUQTSWVPRXYZ[\]XYZ[\]MNOPQRSTUVWOPQRSTUVWXYZ[\]NoneBbBThis is a deprecated copmatibility wrapper for the old JSRef type.See )https://github.com/ghcjs/ghcjs/issues/421bcdeJKLMN_MNbcdeNJKLMMNe_dcbbcdeNone+,Dfghifghihigffghi5NoneNonejklmnopq jklmnopq jklmnopqjklmnopqNonercreate an empty objecttget a property from an object. If accessing the property results in an exception, the exception is converted to a JSException. Since exception handling code prevents some optimizations in some JS engines, you may want to use unsafeGetProp insteadrstuvwrstuvwrstuvwrstuvw6NonerstuvwrtuvwsNone9;z)Convert a JavaScript string to a Haskell ~{Convert a Haskell ~ to a JavaScript stringxyz{_xyz{_xyz{xyz{None 069:;LQRT[7conversion is pure even if the original value is shared.conversion is pure if the we only convert once>|}~|~}|}~}.|}~}NoneNone +,09;BDNone +,0BDNoneTHelper function needed because there is no FromJSVal instance for MutableArrayBufferRHelper function needed because there is no ToJSVal instance for MutableArrayBufferNone9;9Anything that can be constructed from a JavaScript string5Anything that can be used to make a JavaScript string7None9;|~}|}~}None9;None9;-Evaluates a script (like eval in java script)testJSaddle $ eval "1+1"2JavaScript to evaluateNone!'()*+,-./0123456789:;<=>?@ABCNone9;CGet a property value given the object and the name of the property.DGet a property value given the object and the index of the property.CSet a property value given the object and the name of the property.DSet a property value given the object and the index of the property.object to find the property on.name of the property.returns the property value.object to find the property on.index of the property.returns the property value.object to set the property on.name of the property.!new value to set the property to.object to find property on.index of the property.!new value to set the property to.tuvwtuvw None9;T[2UAn algebraic data type that can represent a JavaScript value. Any JavaScriptCore N! can be converted into this type.null undefined true or falsea numbera string an objectpType that represents a value that can only be null. Haskell of course has no null so we are adding this type.IShow a JSValue but just say "object" if the value is a JavaScript object.\Given a JavaScript value get its boolean value. All values in JavaScript convert to bool.testJSaddle $ valToBool JSNullfalsetestJSaddle $ valToBool ()falsetestJSaddle $ valToBool TruetruetestJSaddle $ valToBool Falsefalse'testJSaddle $ valToBool (1.0 :: Double)true'testJSaddle $ valToBool (0.0 :: Double)falsetestJSaddle $ valToBool ""falsetestJSaddle $ valToBool "1"trueIGiven a JavaScript value get its numeric value. May throw JSException.)testJSaddle $ show <$> valToNumber JSNull0.0%testJSaddle $ show <$> valToNumber ()NaN'testJSaddle $ show <$> valToNumber True1.0(testJSaddle $ show <$> valToNumber False0.02testJSaddle $ show <$> valToNumber (1.0 :: Double)1.02testJSaddle $ show <$> valToNumber (0.0 :: Double)0.0%testJSaddle $ show <$> valToNumber ""0.0&testJSaddle $ show <$> valToNumber "1"1.0aGiven a JavaScript value get its string value (as a JavaScript string). May throw JSException.+testJSaddle $ strToText <$> valToStr JSNullnull'testJSaddle $ strToText <$> valToStr () undefined)testJSaddle $ strToText <$> valToStr Truetrue*testJSaddle $ strToText <$> valToStr Falsefalse4testJSaddle $ strToText <$> valToStr (1.0 :: Double)14testJSaddle $ strToText <$> valToStr (0.0 :: Double)0'testJSaddle $ strToText <$> valToStr ""(testJSaddle $ strToText <$> valToStr "1"1<Given a JavaScript value get its string value (as a Haskell ~). May throw JSException.'testJSaddle $ show <$> valToText JSNull"null"#testJSaddle $ show <$> valToText () "undefined"%testJSaddle $ show <$> valToText True"true"&testJSaddle $ show <$> valToText False"false"0testJSaddle $ show <$> valToText (1.0 :: Double)"1"0testJSaddle $ show <$> valToText (0.0 :: Double)"0"#testJSaddle $ show <$> valToText """"$testJSaddle $ show <$> valToText "1""1"KGiven a JavaScript value get a JSON string value. May throw JSException. ,testJSaddle $ strToText <$> valToJSON JSNullnull(testJSaddle $ strToText <$> valToJSON ()*testJSaddle $ strToText <$> valToJSON Truetrue+testJSaddle $ strToText <$> valToJSON Falsefalse5testJSaddle $ strToText <$> valToJSON (1.0 :: Double)15testJSaddle $ strToText <$> valToJSON (0.0 :: Double)0(testJSaddle $ strToText <$> valToJSON """")testJSaddle $ strToText <$> valToJSON "1""1"/testJSaddle $ strToText <$> (obj >>= valToJSON){}HGiven a JavaScript value get its object value. May throw JSException.YtestJSaddle $ (valToObject JSNull >>= valToText) `catch` \ (JSException e) -> valToText enullUtestJSaddle $ (valToObject () >>= valToText) `catch` \ (JSException e) -> valToText e undefinedtestJSaddle $ valToObject TruetruetestJSaddle $ valToObject Falsefalse)testJSaddle $ valToObject (1.0 :: Double)1)testJSaddle $ valToObject (0.0 :: Double)0testJSaddle $ valToObject ""testJSaddle $ valToObject "1"11Convert to a JavaScript value (just an alias for )A null JavaScript value(Test a JavaScript value to see if it is nullAn  undefined JavaScript value(Test a JavaScript value to see if it is  undefinedKConvert a JSVal to a Maybe JSVal (converting null and undefined to Nothing)A JavaScript boolean valueMake a JavaScript numberMake a JavaScript string from ~Make a JavaScript string from _$Make a JavaScript string from AESON Derefernce a value reference. -testJSaddle $ showJSValue <$> deRefVal JSNullnull)testJSaddle $ showJSValue <$> deRefVal () undefined+testJSaddle $ showJSValue <$> deRefVal Truetrue,testJSaddle $ showJSValue <$> deRefVal Falsefalse6testJSaddle $ showJSValue <$> deRefVal (1.0 :: Double)1.06testJSaddle $ showJSValue <$> deRefVal (0.0 :: Double)0.0)testJSaddle $ showJSValue <$> deRefVal """"*testJSaddle $ showJSValue <$> deRefVal "1""1"=testJSaddle $ showJSValue <$> (valToObject True >>= deRefVal)true0testJSaddle $ showJSValue <$> (obj >>= deRefVal)object!Make a JavaScript value out of a  ADT. testJSaddle $ valMakeRef ValNullnull%testJSaddle $ valMakeRef ValUndefined undefined'testJSaddle $ valMakeRef (ValBool True)true&testJSaddle $ valMakeRef (ValNumber 1)15testJSaddle $ valMakeRef (ValString $ T.pack "Hello")HelloDetermine if two values are equal (JavaScripts ===) >>> testJSaddle $ strictEqual True False false >>> testJSaddle $ strictEqual True True true >>> testJSaddle $ strictEqual Hello* () false >>> testJSaddle $ strictEqual Hello Hello true^Determine if two values are equal (JavaScripts ===) >>> testJSaddle $ instanceOf obj (Object  $ jsg Object) trueBMakes an argument list with just a single JavaScript value from a  ADT. Makes a JavaScript value from a  ADT.4Makes an argument list with just a single JSON valueMakes a JSON value)If we already have a JSString we are fineMakes a JavaScript string;Makes an argument list with just a single JavaScript stringMakes a JavaScript string;Makes an argument list with just a single JavaScript numberMakes a JavaScript numberBMakes an argument list with just a single JavaScript boolean valueMake a JavaScript boolean valueGThis allows us to pass no arguments easily (altenative would be to use  []::[JSVal]). Makes an  undefined JavaScript valueMakes a JSVal or null JavaScript value*Makes an argument list with just a single null JavaScript valueMakes a null JavaScript value.JSVal can be made by evaluating a function in = as long as it returns something we can make into a JSVal./A single JSVal can be used as the argument list&If we already have a JSVal we are fineLA type that can only be undefined in JavaScript. Using () because functions in JavaScript that have no return, impicitly return undefined. type JSBool = Bool -- ^ JavaScript boolean values map the U haskell type. type JSNumber = Double -- ^ A number in JavaScript maps nicely to Y. type JSString = Text -- ^ JavaScript strings can be represented with the Haskell ~ type.&value to convert to a JavaScript value     .N_MNXYZ[\]/N_]ZM\N[XYE     !None9;OT%@Make a JavaScript function object that wraps a Haskell function.!0Java script function applications have this type"$Lookup a property based on its name.)testJSaddle $ eval "'Hello World'.length"11*testJSaddle $ val "Hello World" ! "length"11#%Lookup a property based on its index.%testJSaddle $ eval "'Hello World'[6]"W$testJSaddle $ val "Hello World" !! 6W$.Makes a getter for a particular property name. js name = to (!name))testJSaddle $ eval "'Hello World'.length"11.testJSaddle $ val "Hello World" ^. js "length"11%.Makes a setter for a particular property name. jss name = to (<#name).testJSaddle $ eval "'Hello World'.length = 12"122testJSaddle $ val "Hello World" ^. jss "length" 12 undefined&Handy way to call a function %jsf name = to (\o -> o # name $ args):testJSaddle $ val "Hello World" ^. jsf "indexOf" ["World"]6'6Handy way to call a function that expects no arguments js0 name = jsf name ()4testJSaddle $ val "Hello World" ^. js0 "toLowerCase" hello world(6Handy way to call a function that expects one argument js1 name a0 = jsf name [a0]8testJSaddle $ val "Hello World" ^. js1 "indexOf" "World"6)7Handy way to call a function that expects two arguments*9Handy way to call a function that expects three arguments+8Handy way to call a function that expects four arguments,8Handy way to call a function that expects five arguments-?Handy way to get and hold onto a reference top level javascript6testJSaddle $ eval "w = console; w.log('Hello World')" undefinedAtestJSaddle $ do w <- jsg "console"; w ^. js1 "log" "Hello World" undefined.Handy way to call a function "jsgf name = jsg name . to (# args)AtestJSaddle $ eval "globalFunc = function (x) {return x.length;}"function (x) {return x.length;})testJSaddle $ jsgf "globalFunc" ["World"]5/6Handy way to call a function that expects no arguments jsg0 name = jsgf name ()-testJSaddle $ jsg0 "globalFunc" >>= valToText?A JavaScript exception was thrown! (may not reach Haskell code)TypeError:...undefine...06Handy way to call a function that expects one argument jsg1 name a0 = jsgf name [a0]'testJSaddle $ jsg1 "globalFunc" "World"517Handy way to call a function that expects two arguments29Handy way to call a function that expects three arguments38Handy way to call a function that expects four arguments48Handy way to call a function that expects five arguments5Call a JavaScript function3testJSaddle $ eval "'Hello World'.indexOf('World')"67testJSaddle $ val "Hello World" # "indexOf" $ ["World"]66Call a JavaScript functionhtestJSaddle $ eval "something = {}; something[6]=function (x) {return x.length;}; something[6]('World')"5.testJSaddle $ jsg "something" ## 6 $ ["World"]57Set a JavaScript property-testJSaddle $ eval "var j = {}; j.x = 1; j.x"10testJSaddle $ do {j <- obj; (j <# "x") 1; j!"x"}18Set a JavaScript property/testJSaddle $ eval "var j = {}; j[6] = 1; j[6]"1.testJSaddle $ do {j <- obj; (j <## 6) 1; j!!6}19*Use this to create a new JavaScript object|If you pass more than 7 arguments to a constructor for a built in JavaScript type (like Date) then this function will fail.+testJSaddle $ new (jsg "Date") (2013, 1, 1)&Fri Feb 01 2013 00:00:00 GMT+... (...):Call function with a given this . In most cases you should use 5.BtestJSaddle $ eval "(function(){return this;}).apply('Hello', [])"HelloZtestJSaddle $ do { test <- eval "(function(){return this;})"; call test (val "Hello") () }Hello;1Make an empty object using the default constuctor3testJSaddle $ eval "var a = {}; a.x = 'Hello'; a.x"Hello>testJSaddle $ do { a <- obj; (a <# "x") "Hello"; a ^. js "x" }Hello< Short hand ::JSCallAsFunction@ so a haskell function can be passed to a to a JavaScipt one.OtestJSaddle $ eval "(function(f) {f('Hello');})(function (a) {console.log(a)})" undefined:{ testJSaddle $ do result <- liftIO newEmptyMVarX deRefVal $ call (eval "(function(f) {f('Hello');})") global [fun $ \ _ _ [arg1] -> do4 valToText arg1 >>= (liftIO . putMVar result) ] liftIO $ takeMVar result:}Hello?.Make an JavaScript array from a list of values*testJSaddle $ eval "['Hello', 'World'][1]"World+testJSaddle $ array ["Hello", "World"] !! 1World8testJSaddle $ eval "['Hello', null, undefined, true, 1]"Hello,,,true,1<testJSaddle $ array ("Hello", JSNull, (), True, 1.0::Double)Hello,,,true,1@JavaScript's global objectAkGet a list containing the property names present on a given object >>> testJSaddle $ show . map strToText  $? propertyNames obj [] >>> testJSaddle $ show . map strToText  $/ propertyNames (eval "({x:1, y:2})") ["x","y"]BQGet a list containing references to all the properties present on a given objectC6Call a JavaScript object as function. Consider using 5.D:Call a JavaScript object as a constructor. Consider using 9.|If you pass more than 7 arguments to a constructor for a built in JavaScript type (like Date) then this function will fail.G|A callback to Haskell can be used as a JavaScript value. This will create an anonymous JavaScript function object. Use = to create one with a name.I.Object can be made by evaluating a fnction in > as long as it returns something we can make into a Object., !"Object to look onName of the property to findProperty reference#Object to look onIndex of the property to lookupProperty reference$Name of the property to find%Name of the property to find&'()*+,-./01234567Object to set the property onName of the property to setValue to set it to8Object to set the property onIndex of the property to setValue to set it to9:;<=Haskell function to callXReturns a JavaScript function object that will call the Haskell one when it is called>?@ABCDEFGHI4lrstuvw !"#$%&'()*+,-./0123456789:;<=>?@ABCDE4"#$%!&'()*+,-./0123478569:;rtuvw =><l?@sABCDE* !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI52627181"NoneJKLMNOPQRSTUVWXYZ[\] jklmnopqJKLMNOPQRSTUVWXYZ[\] jJKLklmno]pNMqOPQRSTUVWXYZ[\JKLMNOPQRSTUVWXYZ[\]#None9:;LT[#^_`abcdefghijklmnopqrstuvwxy |~}^ |}~}^#^_`abcdefghijklmnopqrstuvwxy$Nonez{|}~MNOUQTSWVPRXYZ[\]z{|}~XYZ[\]MNz{|}~OPQRSTUVWz{|}~%NoneCreate an immutable  by copying a  Create an immutable  from a h without copying. The result shares the buffer with the argument, not modify the data in the  after freezing Create a  by copying an immutable  8NoneNO[\_`opqrtsuvwxyz{|}~"#$%&MNXYZ[\]lrstuvwxyz{|~} !"#$%&'()*+,-./0123456789:;<=>?@ABCDE^&None+,0DR323) 'NoneWrap a g into a $ using the given offset and length.fggf(None+,9;DR&length of the typed array in elements length of the array in bytes "offset of the array in the buffer #the underlying buffer of the array $create a view of the existing array 0copy the elements of one typed array to another >5>5 9None)None(c) Tom Harper 2008-2009, (c) Bryan O'Sullivan 2009, (c) Duncan Coutts 2009, (c) Jasper Van der Jeugt 2011 BSD-stylebos@serpentine.com experimentalGHCNoneAT576<;:98>=BA@?DC76>=<;:98BA@?DC5NoneBOT5  !"#$%&'()*+,-./01234543210/.-,+*)('&%$#" ! *NoneOT        +NoneB  O(n) Convert a _ into a 'Stream Char'. O(n) Convert a _. into a 'Stream Char', but iterate backwards. O(n) Convert a 'Stream Char' into a _.O(n)$ Reverse the characters of a string.O(n) Perform the equivalent of 7 over a list, only with the input and result reversed.O(n) Like unfoldr, l builds a stream from a seed value. However, the length of the result is limited by the first argument to (. This function is more efficient than unfoldr( when the length of the result is known.O(n)4 stream index (subscript) operator, starting from 0.The } function takes a predicate and a stream and returns the index of the first element in the stream satisfying the predicate.O(n) The countU function returns the number of times the query element appears in the given stream.O(n) Like a combination of  and foldl'+. Applies a function to each element of a TextM, passing an accumulating parameter from left to right, and returns a final _.    BA@?DC   DCBA@?       :SafeNoneBDR]O(n) Convert a  into a _. Subject to fusion.O(n) Convert a _ into a . Subject to fusion.O(n)> Convert a literal string into a JSString. Subject to fusion.O(1) Convert a character into a _E. Subject to fusion. Performs replacement on invalid scalar values.O(n)$ Adds a character to the front of a _*. This function is more costly than its List{ counterpart because it requires copying a new array. Subject to fusion. Performs replacement on invalid scalar values.O(n)" Adds a character to the end of a _. This copies the entire array in the process, unless fused. Subject to fusion. Performs replacement on invalid scalar values.O(n) Appends one _2 to the other by copying both of them into a new _. Subject to fusion.O(1)" Returns the first character of a _/, which must be non-empty. Subject to fusion.O(1)+ Returns the first character and rest of a _, or  if empty. Subject to fusion.*Lifted from Control.Arrow and specialized.O(1)! Returns the last character of a _/, which must be non-empty. Subject to fusion. O(1), Returns all characters after the head of a _/, which must be non-empty. Subject to fusion.!O(1)) Returns all but the last character of a _/, which must be non-empty. Subject to fusion."O(1) Tests whether a _& is empty or not. Subject to fusion.#O(n)' Returns the number of characters in a _. Subject to fusion.$O(n)& Compare the count of characters in a _! to a number. Subject to fusion.HThis function gives the same answer as comparing against the result of #l, but can short circuit if the count of characters is greater than the number, and hence be more efficient.%O(n) % f t is the _ obtained by applying f to each element of tF. Subject to fusion. Performs replacement on invalid scalar values.&O(n) The & function takes a _ and a list of _es and concatenates the list after interspersing the first argument between each element of the list.'O(n) The 'G function takes a character and places it between the characters of a _F. Subject to fusion. Performs replacement on invalid scalar values.(O(n)7 Reverse the characters of a string. Subject to fusion.)O(m+n)- Replace every non-overlapping occurrence of needle in haystack with  replacement.:This function behaves as though it was defined as follows: (replace needle replacement haystack = & replacement (Z needle haystack) DAs this suggests, each occurrence is replaced exactly once. So if needle occurs in  replacement, that occurrence will not! itself be replaced recursively:  replace "oo" "foo" "oo" == "foo"$In cases where several instances of needle/ overlap, only the first one will be replaced: &replace "ofo" "bar" "ofofo" == "barfo"KIn (unlikely) bad cases, this function's time complexity degrades towards O(n*m).*O(n)5 Convert a string to folded case. Subject to fusion.lThis function is mainly useful for performing caseless (also known as case insensitive) string comparisons. A string x" is a caseless match for a string y if and only if: toCaseFold x == toCaseFold yUThe result string may be longer than the input string, and may differ from applying + to the input string. For instance, the Armenian small ligature "" (men now, U+FB13) is case folded to the sequence "t" (men, U+0574) followed by "v" (now, U+0576), while the Greek "" (micro sign, U+00B5) is case folded to "" (small letter mu, U+03BC) instead of itself.+O(n)S Convert a string to lower case, using simple case conversion. Subject to fusion.The result string may be longer than the input string. For instance, "0" (Latin capital letter I with dot above, U+0130) maps to the sequence "i" (Latin small letter i, U+0069) followed by " " (combining dot above, U+0307).,O(n)S Convert a string to upper case, using simple case conversion. Subject to fusion.The result string may be longer than the input string. For instance, the German "" (eszett, U+00DF) maps to the two-letter sequence "SS".-O(n)R Convert a string to title case, using simple case conversion. Subject to fusion.The first letter of the input is converted to title case, as is every subsequent letter that immediately follows a non-letter. Every letter that immediately follows another letter is converted to lower case.The result string may be longer than the input string. For example, the Latin small ligature  (U+FB02) is converted to the sequence Latin capital letter F (U+0046) followed by Latin small letter l (U+006C).Note: this function does not take language or culture specific rules into account. For instance, in English, different style guides disagree on whether the book name "The Hill of the Red Fox" is correctly title cased but this function will capitalize every word..O(n) Left-justify a string to the given length, using the specified fill character on the right. Subject to fusion. Performs replacement on invalid scalar values. Examples: NjustifyLeft 7 'x' "foo" == "fooxxxx" justifyLeft 3 'x' "foobar" == "foobar"/O(n) Right-justify a string to the given length, using the specified fill character on the left. Performs replacement on invalid scalar values. Examples: PjustifyRight 7 'x' "bar" == "xxxxbar" justifyRight 3 'x' "foobar" == "foobar"0O(n) Center a string to the given length, using the specified fill character on either side. Performs replacement on invalid scalar values. Examples: center 8 'x' "HS" = "xxxHSxxx"1O(n) The 12 function transposes the rows and columns of its _) argument. Note that this function uses , E, and the list version of transpose, and is thus not very efficient.2O(n) 2g, applied to a binary operator, a starting value (typically the left-identity of the operator), and a _, reduces the _C using the binary operator, from left to right. Subject to fusion.3O(n) A strict version of 2. Subject to fusion.4O(n) A variant of 2O that has no starting value argument, and thus must be applied to a non-empty _. Subject to fusion.5O(n) A strict version of 4. Subject to fusion.6O(n) 6h, applied to a binary operator, a starting value (typically the right-identity of the operator), and a _, reduces the _C using the binary operator, from right to left. Subject to fusion.7O(n) A variant of 6O that has no starting value argument, and thus must be applied to a non-empty _. Subject to fusion.8O(n) Concatenate a list of _s.9O(n) Map a function over a _ that results in a _, and concatenate the results.:O(n) : p t* determines whether any character in the _ t satisifes the predicate p. Subject to fusion.;O(n) ; p t+ determines whether all characters in the _ t satisify the predicate p. Subject to fusion.<O(n) <" returns the maximum value from a _., which must be non-empty. Subject to fusion.=O(n) =" returns the minimum value from a _., which must be non-empty. Subject to fusion.>O(n) > is similar to 2, but returns a list of successive reduced values from the left. Subject to fusion. Performs replacement on invalid scalar values. @scanl f z [x1, x2, ...] == [z, z `f` x1, (z `f` x1) `f` x2, ...] Note that $last (scanl f z xs) == foldl f z xs.?O(n) ? is a variant of >k that has no starting value argument. Subject to fusion. Performs replacement on invalid scalar values. .scanl1 f [x1, x2, ...] == [x1, x1 `f` x2, ...]@O(n) @ is the right-to-left dual of >2. Performs replacement on invalid scalar values. 1scanr f v == reverse . scanl (flip f) v . reverseAO(n) A is a variant of @k that has no starting value argument. Subject to fusion. Performs replacement on invalid scalar values.BO(n) Like a combination of % and 3+. Applies a function to each element of a _M, passing an accumulating parameter from left to right, and returns a final _2. Performs replacement on invalid scalar values.CThe C( function behaves like a combination of % and a strict 6.; it applies a function to each element of a _, passing an accumulating parameter from right to left, and returning a final value of this accumulator together with the new _1. Performs replacement on invalid scalar values.DO(n*m) D n t is a _ consisting of the input t repeated n times.EO(n), where n" is the length of the result. The E$ function is analogous to the List . E builds a _@ from a seed value. The function takes the element and returns  if it is done producing the _ , otherwise  (a,b). In this case, a is the next  in the string, and bn is the seed value for further production. Subject to fusion. Performs replacement on invalid scalar values.FO(n) Like E, F builds a _c from a seed value. However, the length of the result should be limited by the first argument to F(. This function is more efficient than Ef when the maximum length of the result is known and correct, otherwise its performance is similar to EE. Subject to fusion. Performs replacement on invalid scalar values.GO(n) G n, applied to a _, returns the prefix of the _ of length n , or the _ itself if n@ is greater than the length of the JSString. Subject to fusion.HO(n) H n t, returns the suffix remaining after taking n characters from the end of t. Examples: takeEnd 3 "foobar" == "bar"IO(n) I n, applied to a _, returns the suffix of the _ after the first n characters, or the empty _ if n$ is greater than the length of the _. Subject to fusion.JO(n) J n t. returns the prefix remaining after dropping n characters from the end of t. Examples: dropEnd 3 "foobar" == "foo"KO(n) K, applied to a predicate p and a _I, returns the longest prefix (possibly empty) of elements that satisfy p. Subject to fusion.LO(n) L p t% returns the suffix remaining after K p t. Subject to fusion.MO(n) M p tQ returns the prefix remaining after dropping characters that fail the predicate p from the end of t . Subject to fusion. Examples: &dropWhileEnd (=='.') "foo..." == "foo"NO(n) N p tT returns the substring remaining after dropping characters that fail the predicate p% from both the beginning and end of t. Subject to fusion.OO(n): Remove leading white space from a string. Equivalent to: dropWhile isSpacePO(n); Remove trailing white space from a string. Equivalent to: dropWhileEnd isSpaceQO(n)G Remove leading and trailing white space from a string. Equivalent to: dropAround isSpaceRO(n) R n t4 returns a pair whose first element is a prefix of t of length nH, and whose second is the remainder of the string. It is equivalent to (G n t, I n t).SO(n) S, applied to a predicate p and text tQ, returns a pair whose first element is the longest prefix (possibly empty) of t of elements that satisfy p1, and whose second is the remainder of the list.TO(n) T is like SD, but the prefix returned is over elements that fail the predicate p.UO(n)7 Group characters in a string according to a predicate.VO(n)* Group characters in a string by equality.XO(n^2)* Return all initial segments of the given _, shortest first.YO(n^2)( Return all final segments of the given _, longest first.ZO(m+n) Break a _$ into pieces separated by the first _ argument (which cannot be empty), consuming the delimiter. An empty delimiter is invalid, and will cause an error to be raised. Examples: splitOn "\r\n" "a\r\nb\r\nd\r\ne" == ["a","b","d","e"] splitOn "aaa" "aaaXaaaXaaaXaaa" == ["","X","X","X",""] splitOn "x" "x" == ["",""]and Xintercalate s . splitOn s == id splitOn (singleton c) == split (==c)(Note: the string s$ to split on above cannot be empty.)KIn (unlikely) bad cases, this function's time complexity degrades towards O(n*m).\O(n) Splits a _ into components delimited by separators, where the predicate returns True for a separator element. The resulting components do not contain the separators. Two adjacent separators result in an empty component in the output. eg. Nsplit (=='a') "aabbaca" == ["","","bb","c",""] split (=='a') "" == [""]]O(n) Splits a _ into components of length kk. The last element may be shorter than the other chunks, depending on the length of the input. Examples: achunksOf 3 "foobarbaz" == ["foo","bar","baz"] chunksOf 4 "haskell.org" == ["hask","ell.","org"]^O(n) Splits a _ into components of length kk. The last element may be shorter than the other chunks, depending on the length of the input. Examples: achunksOf 3 "foobarbaz" == ["foo","bar","baz"] chunksOf 4 "haskell.org" == ["hask","ell.","org"]_O(n) The _" function takes a predicate and a _<, and returns the first element matching the predicate, or  if there is no such element.`O(n) The `" function takes a predicate and a _, and returns the pair of _Ns with elements which do and do not satisfy the predicate, respectively; i.e. 1partition p t == (filter p t, filter (not . p) t)aO(n) a, applied to a predicate and a _ , returns a _9 containing those characters that satisfy the predicate.bO(n+m) Find the first instance of needle (which must be non-") in haystack=. The first element of the returned tuple is the prefix of haystack before needle. is matched. The second is the remainder of haystack, starting with the match. Examples: TbreakOn "::" "a::b::c" ==> ("a", "::b::c") breakOn "/" "foobar" ==> ("foobar", "")Laws: Qappend prefix match == haystack where (prefix, match) = breakOn needle haystackxIf you need to break a string by a substring repeatedly (e.g. you want to break on every instance of a substring), use d, instead, as it has lower startup overhead.KIn (unlikely) bad cases, this function's time complexity degrades towards O(n*m).cO(n+m) Similar to b+, but searches from the end of the string.9The first element of the returned tuple is the prefix of haystack( up to and including the last match of needle#. The second is the remainder of haystack, following the match. -breakOnEnd "::" "a::b::c" ==> ("a::b::", "c")dO(n+m)' Find all non-overlapping instances of needle in haystack8. Each element of the returned list consists of a pair:The entire string prior to the kth match (i.e. the prefix)The k1th match, followed by the remainder of the string Examples: fbreakOnAll "::" "" ==> [] breakOnAll "/" "a/b/c/" ==> [("a", "/b/c/"), ("a/b", "/c/"), ("a/b/c", "/")]KIn (unlikely) bad cases, this function's time complexity degrades towards O(n*m).The needle parameter may not be empty.fO(n) _- index (subscript) operator, starting from 0.gO(n) The g" function takes a predicate and a _4 and returns the index of the first element in the _. satisfying the predicate. Subject to fusion.hO(n+m) The hM function returns the number of times the query string appears in the given _J. An empty query string is invalid, and will cause an error to be raised.KIn (unlikely) bad cases, this function's time complexity degrades towards O(n*m).iO(n) i takes two _Ds and returns a list of corresponding pairs of bytes. If one input _* is short, excess elements of the longer _1 are discarded. This is equivalent to a pair of  operations.jO(n) j generalises i by zipping with the function given as the first argument, instead of a tupling function. Performs replacement on invalid scalar values.kO(n) Breaks a _' up into a list of words, delimited by s representing white space.mO(n) Breaks a _ up into a list of _s at newline 1s. The resulting strings do not contain newlines.oO(n)= Joins lines, after appending a terminating newline to each.pO(n)+ Joins words using single space characters.qO(n) The q function takes two _s and returns = iff the first is a prefix of the second. Subject to fusion.rO(n) The r function takes two _s and returns ) iff the first is a suffix of the second.sThe s function takes two _s and returns L iff the first is contained, wholly and intact, anywhere within the second.RComplexity depends on how the JavaScript engine implements String.prototype.find.tO(n)W Return the suffix of the second string if its prefix matches the entire first string. Examples: wstripPrefix "foo" "foobar" == Just "bar" stripPrefix "" "baz" == Just "baz" stripPrefix "foo" "quux" == Nothing%This is particularly useful with the  ViewPatterns extension to GHC, as follows: {-# LANGUAGE ViewPatterns #-} import Data.Text as T fnordLength :: JSString -> Int fnordLength (stripPrefix "fnord" -> Just suf) = T.length suf fnordLength _ = -1uO(n) Find the longest non-empty common prefix of two strings and return it, along with the suffixes of each string at which they no longer match.ZIf the strings do not have a common prefix or either one is empty, this function returns . Examples: commonPrefixes "foobar" "fooquux" == Just ("foo","bar","quux") commonPrefixes "veeble" "fetzer" == Nothing commonPrefixes "" "baz" == NothingvO(n)W Return the prefix of the second string if its suffix matches the entire first string. Examples: wstripSuffix "bar" "foobar" == Just "foo" stripSuffix "" "baz" == Just "baz" stripSuffix "foo" "quux" == Nothing%This is particularly useful with the  ViewPatterns extension to GHC, as follows: {-# LANGUAGE ViewPatterns #-} import Data.Text as T quuxLength :: Text -> Int quuxLength (stripSuffix "quux" -> Just pre) = T.length pre quuxLength _ = -1d !"#$%&'()needle? to search for. If this string is empty, an error will occur. replacement to replace needle with.haystack in which to search.*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZBString to split on. If this string is empty, an error will occur. Input text.[BString to split on. If this string is empty, an error will occur. Input text.\]^_`abcdneedle to search forhaystack in which to searcheneedle to search forhaystack in which to searchfghijklmnopqrstuvwc_a !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvc_a !"#$%&'1()*+,-./023456789:;<=>?@ABCDEFGHIJKLMNQOPRbcTSVWUXYZ[\]^mnklopqrstvuade_`fghijd !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw5;<=;<>;<?;<@;<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;<h;<i;<j;<k;<l;<m;<n;<o;<p;<q;rs;rt;rt;ru;rv;rw;rx;ry;rz;r{;r|;r};r~;r;r;rs..//012      !"#$%&'()*+,-./0123 4 5 6 7 8 9 : ; < 4 = > ? @ 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 h i jklm`ano/pqrstuvwxyz{|}~felm                              Z  b c                              ! " # $ % & ' ( ) * + , - .!t!t!/!0!1!2!3!4!5!6!7!8!9!:!;!<!=!>!?!@!A!B!C!D!E!F!G!H!I!J!K!L!M!N!O!d!P!Q!R!S!T!U!V!W"X"Y"e"k"Z"["\"]"^"H"_"G"`"a"b"c"d"e"f"1#g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#w#x#y#z#{#|#}#~####$$$$$$$%c%d%e%f%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''c'e''''((((((((((((A(((((((((((((((((((((((((((((((((((X((((((((((((((()****+++ +X+^+ + ++ + +qmlkjihgfeXaT`^_]^\ZYXWVUSRQPONMJ HGFE !"#$%&'()*+,-./012@3456 78>9:;<=>D?@ABCDEFGHIJEFKELFELG M;NOPQRSTUVWXYZ[\]^_`HIaHIb#c#d#e#f#g#h#i%%bjkl'm'nEoEpaEprqEprsEtJEpuHIvHIwx&jsaddle-0.8.3.0-21QlIuZNbgFEyyYRC5v3k2$Data.JSString.Internal.Fusion.Common#Data.JSString.Internal.Fusion.Types%Language.Javascript.JSaddle.Run.FilesGHCJS.Prim.Internal%Language.Javascript.JSaddle.Exception!Language.Javascript.JSaddle.Types Data.JSStringData.JSString.Internal.Type,Language.Javascript.JSaddle.Classes.InternalLanguage.Javascript.JSaddle.Run!Language.Javascript.JSaddle.Monad+Language.Javascript.JSaddle.Native.InternalData.JSString.TextGHCJS.Internal.Types GHCJS.PrimGHCJS.Foreign.Internal GHCJS.TypesGHCJS.Buffer.TypesJavaScript.Array.InternalJavaScript.Object.Internal"Language.Javascript.JSaddle.StringGHCJS.Marshal.InternalGHCJS.Marshal.Pure*JavaScript.TypedArray.ArrayBuffer.Internal'JavaScript.TypedArray.DataView.Internal"Language.Javascript.JSaddle.Helper*Language.Javascript.JSaddle.Marshal.String%Language.Javascript.JSaddle.Arguments$Language.Javascript.JSaddle.Evaluate"Language.Javascript.JSaddle.Native&Language.Javascript.JSaddle.Properties!Language.Javascript.JSaddle.Value"Language.Javascript.JSaddle.ObjectJavaScript.Array GHCJS.Marshal GHCJS.Foreign!JavaScript.TypedArray.ArrayBuffer$JavaScript.TypedArray.Internal.Types GHCJS.BufferJavaScript.TypedArray.InternalData.JSString.Internal.Search)Data.JSString.Internal.Fusion.CaseMappingData.JSString.Internal.FusionJavaScript.TypedArray.ImmutableGHCJS.NullableNullableObject STJSArrayMutableJSArrayJSArrayJavaScript.Web.AnimationFramewaitForAnimationFrame&JavaScript.TypedArray.ArrayBuffer.TypeJavaScript.Object#Language.Javascript.JSaddle.ClassesLanguage.Javascript.JSaddleJavaScript.TypedArrayData.JSString.Internal#text-1.2.2.1-9Yh8rJoh8fO2JMLWffT3Qs Data.Text.Internal.Fusion.Common countCharIzipWith findIndexIfilterindexIfindByelem isPrefixOf dropWhile takeWhiledroptake unfoldrNIunfoldr replicateIreplicateCharIscanlminimummaximumallany concatMapconcat intercalatefoldr1foldrfoldl1'foldl1foldl'foldl justifyLeftItoTitletoLowertoUpper toCaseFold interspersemap isSingletoncompareLengthIlengthInullinittaillastunconsheadappendsnocconsstreamCString# unstreamList streamList singletonData.Text.Internal.Fusion.TypesemptyCCRS3RS2RS1RS0RS:*:PairSYieldSkipDoneStepStream indexHtml initStaterunBatch jsaddleJs ghcjsHelpersWouldBlockException JSExceptionJSVal JSValueRef mkJSExceptionjsNull$fExceptionWouldBlockException$fShowWouldBlockException$fShowJSException$fExceptionJSException $fNFDataJSVal $fShowJSVal $fToJSONJSVal$fFromJSONJSValJSStringempty_safefirstf$fNFDataJSString$fShowJSString$fReadJSString$fIsStringJSString$fMonoidJSString $fOrdJSString $fEqJSString$fDataJSString$fToJSONJSString$fFromJSONJSStringJSadddleHasCallStackResultsSuccessFailureCallback ProtocolErrorResultDeRefValResultValueToBoolResultValueToNumberResultValueToStringResultValueToJSONResultValueToJSONValueResult IsNullResultIsUndefinedResultStrictEqualResultInstanceOfResultPropertyNamesResult ThrowJSValue SyncResultBatchCommandDeRefVal ValueToBool ValueToNumber ValueToString ValueToJSONValueToJSONValueIsNull IsUndefined StrictEqual InstanceOf PropertyNamesSync AsyncCommandFreeRefSetPropertyByNameSetPropertyAtIndex StringToValue NumberToValueJSONValueToValueGetPropertyByNameGetPropertyAtIndexCallAsFunctionCallAsConstructorNewEmptyObject NewCallbackNewArrayEvaluateScriptSyncWithAnimationFrameJSStringForSendJSStringReceivedJSObjectForSendJSValueForSendJSValueReceived SomeJSArray Mutability IsItMutable IsImmutable IsMutable ImmutableMutableMutabilityTypeMutable_ Immutable_ STMutableIsJSValjsval_JSCallAsFunctionMonadJSMliftJSM' GHCJSPureJSMunJSM JSContextRef startTime doSendCommanddoSendAsyncCommand addCallback freeCallbacknextRefdoEnableLogging ghcjsPure ghcjsPureMap ghcjsPureIdliftJSMjsval$fFromJSONResults$fToJSONResults$fFromJSONResult$fToJSONResult $fNFDataBatch$fFromJSONBatch $fToJSONBatch$fNFDataCommand$fFromJSONCommand$fToJSONCommand$fNFDataAsyncCommand$fFromJSONAsyncCommand$fToJSONAsyncCommand$fNFDataJSStringForSend$fNFDataJSObjectForSend$fNFDataJSValueForSend$fIsJSValSomeJSArray$fMonadAtomicRefJSM $fMonadRefJSM$fMonadJSMStateT$fMonadJSMStateT0$fMonadJSMReaderT $fMonadJSMJSM $fShowObject$fToJSONObject$fFromJSONObject$fShowJSValueReceived$fToJSONJSValueReceived$fFromJSONJSValueReceived$fShowJSValueForSend$fToJSONJSValueForSend$fFromJSONJSValueForSend$fGenericJSValueForSend$fShowJSObjectForSend$fToJSONJSObjectForSend$fFromJSONJSObjectForSend$fGenericJSObjectForSend$fShowJSStringReceived$fToJSONJSStringReceived$fFromJSONJSStringReceived$fShowJSStringForSend$fToJSONJSStringForSend$fFromJSONJSStringForSend$fGenericJSStringForSend$fShowAsyncCommand$fGenericAsyncCommand $fShowCommand$fGenericCommand $fShowBatch$fGenericBatch $fShowResult$fGenericResult $fFunctorJSM$fApplicativeJSM $fMonadJSM $fMonadIOJSM $fMonadFixJSM $fShowResults$fGenericResultsMakeArgsmakeArgs MakeObject makeObject $fMakeArgsJSM$fMakeObjectObject enableLogging syncPoint syncAfternextAnimationFrame sendCommandsendLazyCommandsendAsyncCommand runJavaScript wrapJSValaskJSMrunJSM runJSaddlecatchbracket wrapJSString withJSVal withJSVals withObject withJSStringsetPropertyByNamesetPropertyAtIndex stringToValue numberToValuejsonValueToValuegetPropertyByNamegetPropertyAtIndexcallAsFunctioncallAsConstructornewEmptyObject newCallbacknewArrayevaluateScriptdeRefVal valueToBool valueToNumber valueToString valueToJSONvalueToJSONValueisNull isUndefined strictEqual instanceOf propertyNamestextToJSStringtextFromJSStringlazyTextToJSStringlazyTextFromJSString textFromJSVallazyTextFromJSVal$fIsJSValJSString fromJSString toJSStringJSType UndefinedBooleanNumberStringSymbolFunctionOtherjsTruejsFalsetoJSBool jsUndefinedisTruthy $fShowJSType $fEqJSType $fOrdJSType $fEnumJSTypeJSRefRef#mkRefnullRef MutableBufferBuffer SomeBuffercreatefromList fromListIOtoListtoListIOindexreadpush listPropsgetProp unsafeGetPropsetProp unsafeSetProp strToText textToStr FromJSVal fromJSValfromJSValUncheckedfromJSValListOffromJSValUncheckedListOfToJSValtoJSVal toJSValListOf PFromJSVal pFromJSValPToJSValpToJSValPurity PureShared PureExclusivetoJSVal_genericfromJSVal_genericfromJSVal_purefromJSValUnchecked_pure toJSVal_pure$fGFromJSValU1$fGFromJSValV1$fGFromJSArrM1$fGFromJSArr:*:$fGFromJSPropM1$fGFromJSProp:*:$fGFromJSValM1$fGFromJSVal:*:$fGFromJSValM10$fGFromJSValM11$fGFromJSVal:+:$fGFromJSValRec1$fGFromJSValPar1$fGFromJSValK1 $fGToJSValU1 $fGToJSValV1 $fGToJSArrM1 $fGToJSArr:*: $fGToJSPropM1$fGToJSProp:*: $fGToJSValM1 $fGToJSVal:*: $fGToJSValM10 $fGToJSValM11 $fGToJSVal:+:$fGToJSValRec1$fGToJSValPar1 $fGToJSValK1 $fEqPurity $fOrdPurity $fDataPurity$fPToJSValBool$fPToJSValJSVal$fPFromJSVal()$fPFromJSValJSVal STArrayBufferMutableArrayBuffer ArrayBufferSomeArrayBuffer$fPFromJSValSomeArrayBuffer$fPToJSValSomeArrayBuffer$fIsJSValSomeArrayBuffer STDataViewMutableDataViewDataView SomeDataViewmutableArrayBufferFromJSValmutableArrayBufferToJSVal FromJSString ToJSString$fMakeArgs(,,,,,)$fMakeArgs(,,,,)$fMakeArgs(,,,)$fMakeArgs(,,) $fMakeArgs(,) $fMakeArgs[]eval withToJSValobjGetPropertyByNameobjGetPropertyAtIndexobjSetPropertyByNameobjSetPropertyAtIndexJSValueValNull ValUndefinedValBool ValNumber ValString ValObject JSUndefinedJSNull showJSValue valToBool valToNumbervalToStr valToText valToJSON valToObjectvalvalNull valIsNull valUndefinedvalIsUndefinedmaybeNullOrUndefinedmaybeNullOrUndefined'valBool valMakeNumber valMakeText valMakeString valMakeJSON valMakeRef$fMakeArgsJSValue$fToJSValJSValue$fMakeArgsValue$fToJSValValue$fFromJSValChar $fToJSValChar$fFromJSStringJSString$fFromJSString[]$fFromJSStringText$fToJSString[]$fToJSStringText$fToJSStringJSString$fFromJSValJSString$fToJSValJSString$fMakeArgsText$fFromJSValText $fToJSValText$fMakeArgsDouble$fToJSValInt32$fToJSValInt16 $fToJSValInt8 $fToJSValInt$fToJSValWord32$fToJSValWord16$fToJSValWord8 $fToJSValWord$fToJSValFloat$fToJSValDouble$fMakeArgsBool $fToJSValBool $fMakeArgs() $fToJSVal() $fFromJSVal[] $fToJSVal[]$fFromJSValMaybe$fToJSValMaybe$fMakeArgsJSNull$fToJSValJSNull $fToJSValJSM$fMakeArgsJSVal$fToJSValJSVal$fToJSValObject$fMakeObjectJSValfunctionObjectJSF!!!jsjssjsfjs0js1js2js3js4js5jsgjsgfjsg0jsg1jsg2jsg3jsg4jsg5###<#<##newcallobjfunfunction freeFunctionarrayglobal propertiesobjCallAsFunctionobjCallAsConstructor nullObject$fMakeArgs(->) $fToJSVal(->)$fToJSValFunction$fMakeObjectJSMlengthlengthIOwritepopunshiftshiftreversetakeIOdropIOslicesliceIOfreeze unsafeFreezethaw unsafeThaw toJSVal_aeson$fToJSVal(,,,,,,)$fToJSVal(,,,,,)$fToJSVal(,,,,)$fToJSVal(,,,) $fToJSVal(,,) $fToJSVal(,)$fFromJSVal(,,,,,,,)$fFromJSVal(,,,,,,)$fFromJSVal(,,,,,)$fFromJSVal(,,,,)$fFromJSVal(,,,)$fFromJSVal(,,)$fFromJSVal(,)$fFromJSValValue$fFromJSValDouble$fFromJSValFloat$fFromJSValWord32$fFromJSValWord16$fFromJSValWord8$fFromJSValWord$fFromJSValInt32$fFromJSValInt16$fFromJSValInt8$fFromJSValInt$fFromJSValBool $fFromJSVal()$fFromJSValJSValisObject isFunctionisString isBooleanisSymbolisNumberjsTypeOf byteLengthIOElemSTUint8ClampedArraySTFloat64ArraySTFloat32Array STUint32Array STUint16Array STUint8Array STInt32Array STInt16Array STInt8ArrayIOFloat64ArrayIOFloat32ArrayIOUint8ClampedArray IOUint32Array IOUint16Array IOUint8Array IOInt32Array IOInt16Array IOInt8Array Float64Array Float32ArrayUint8ClampedArray Uint32Array Uint16Array Uint8Array Int32Array Int16Array Int8ArraySomeUint8ClampedArraySomeFloat64ArraySomeFloat32ArraySomeUint32ArraySomeUint16ArraySomeUint8ArraySomeInt32ArraySomeInt16Array SomeInt8ArrayTypedArrayElemInt8Elem Int16Elem Int32Elem Uint8Elem Uint16Elem Uint32ElemUint8ClampedElem Float32Elem Float64ElemSomeSTTypedArraySomeTypedArray$fIsJSValSomeTypedArraycreateFromArrayBuffergetArrayBuffer getInt32Array getUint8ArraygetUint16ArraygetFloat32ArraygetFloat64Array getDataViewclonefromByteString toByteString byteLength TypedArray unsafeIndexunsafeSetIndexsetIndex fromArrayfromArrayBufferindexOf lastIndexOfelemSizeindexI16indexI8indexWindexW16indexW8indexD unsafeIndexIunsafeIndexI16 unsafeIndexI8 unsafeIndexWunsafeIndexW16 unsafeIndexW8 unsafeIndexD int8ArrayFromint16ArrayFromint32ArrayFromuint8ArrayFromuint8ClampedArrayFromuint16ArrayFromuint32ArrayFromfloat32ArrayFromfloat64ArrayFrom setIndexIunsafeSetIndexI setIndexWunsafeSetIndexW setIndexDunsafeSetIndexDindexOfIindexOfWindexOfD lastIndexOfI lastIndexOfW lastIndexOfD byteOffsetbuffersubarrayset unsafeSet$fTypedArraySomeTypedArray$fTypedArraySomeTypedArray0$fTypedArraySomeTypedArray1$fTypedArraySomeTypedArray2$fTypedArraySomeTypedArray3$fTypedArraySomeTypedArray4$fTypedArraySomeTypedArray5$fTypedArraySomeTypedArray6$fTypedArraySomeTypedArray7indices upperMapping lowerMapping titleMapping foldMappingstream reverseStreamunstream reverseScanrunfoldrN findIndex countChar mapAccumLpackunpackunpack' compareLengthreplace justifyLeft justifyRightcenter transposescanl1scanrscanr1 mapAccumR replicatetakeEnddropEnd dropWhileEnd dropAround stripStartstripEndstripsplitAtspanbreakgroupBygroupgroup'initstailssplitOnsplitOn'splitchunksOf chunksOf'find partitionbreakOn breakOnEnd breakOnAll breakOnAll'countzipwordswords'lineslines'unlinesunwords isSuffixOf isInfixOf stripPrefixcommonPrefixes stripSuffix$fIsListJSStringbaseControl.Monad.IO.ClassMonadIOghc-prim GHC.TypesIOliftIOControl.Exception.Base valToJSStringData.Text.InternalText GFromJSArr gFromJSArr GFromJSProp gFromJSProp GFromJSVal gFromJSValGToJSArrgToJSArr GToJSProp gToJSPropGToJSValgToJSValfromJustWithStackpackJSS$aeson-1.1.1.0-7F6AidOlQ42D4Am7UaEtm6Data.Aeson.Types.InternalValueBoolDoublejfarr2arr3arr4arr5arr6arr7bytestring-0.10.8.1Data.ByteString.Internal ByteStringunsafeToByteStringjs_cloneGHC.ListGHC.BaseunpackCString#Nothingsecond Data.OldListJustCharTrue